In the beginning there was 8080
Here is the history of the x86 and links to documentation of specific version. Not sure about most of it really.
1st - 1978 - 8086
2nd - 1982 - 286
MMU and Protected mode.
3rd - 1985 - 386
32-bit instruction set and virtual mode.
4th - 1989 - 486
Integrated x87 FPU, pipelined processor and on-chip cache.
5th - 1993 - Pentium
Faster FPU and MMX.
6th - 1995 - Pentium Pro
SSE
6th Generation CPU Comparisons
7th - 2000 - Pentium 4 - 1.3 Ghz
SSE2, SSE3 and hyper-threading.
7th Generation CPU Comparisons
8th - 2003 -
x86-64, multi-core and SSE4.
9th - 2008 -
SSE5/AVX
10th - 2015 -
Reference
Generations of the computer processors - 2008
=== CPU Evolution
Fetch -> Decode -> Execute
Multi-cycle operation
Phase 1: Load instruction
Phase 2: Decode instruction / read register
Phase 3: Execute operation
Phase 4: Write back results
Pipelining (Fetch - Decode - Execute)
Allow mutiple instruction in flight at once
Instruction 1: Writes back
Instruction 2: Execute
Instruction 3: decode
Instruction 4: fetch
Problems: Branch delay and memory latency
Caches
Add large cache to lower memory latency
Slower then register
A cache miss takes time.
Branch Prediction
System that guess what memory is needed next.
Reads it into cache memory before needed
If guess wrong then useless work is performed.
Out-of-order Execution
Guess what code will run next and run it.