x86 History

Intel 4004

1971年发布

4-bit处理器

首个利用MOS silicon gate technology (金属氧化物半导体硅栅技术)的处理器. 集成电路.

8008

1972年发布. 是Intel的首个8-bit处理器

寄存器: A, B, C, D, E, H, L, PC, AS*7 (7-level, 14-bit call stack), Flags

指令集: Intel 8080 Instruction Set. 指令可变长度(1-3字节长)

数据总线: 8bit

地址总线: 14bit,需要配合H和L寄存器间接访问14-bit内存空间

不完全支持interrupts

8080

1974年发布. Intel的第二代8-bit处理器

由8008的18-pin package升级为40-pin package

数据总线: 8bit

地址总线升级为16-bit,支持64kb内存寻址,可以直接访问(不需要通过H和L寄存器)

虽然每条8008指令均有8080对应的指令,但8080并不向前兼容8008的二进制代码

寄存器: A, B, C, D, E, H, L, SP, PC, Flags

  • A, B, C, D, E, H, L均为8-bit寄存器,其中BC, DE, HL也可作为三个16-bit寄存器使用
  • M寄存器是伪寄存器,值为HL所指向的内存的16-bit数据
  • SP (Stack Pointer, 16-bit)取代了8008的internal stack
  • PC (Program counter) 为16-bit

8085

1976年发布. Intel的最后一代8-bit处理器

与前代8080二进制文件完全兼容

数据总线: 8-bit, 地址总线: 16-bit

8086 (iAPX 86)

1978年发布. 16位处理器, 首次创立x86架构

指令集:x86-16

数据宽度: 16-bit. 地址宽度: 20-bit (1MB物理空间)

如果程序大于64kb(16位),需要调整segment registers。直到80386引入32位寄存器后,此困难得以解决

寄存器:AX, BX, CX, DX, SP, BP, SI, DI, IP, ES, CS, SS, DS, Flags.

  • AX, BX, CX, DX可以使用高8位低8位(例如AH AL)访问
  • SP (stack pointer), BP (base pointer), SI (source index), DI (destination index)
  • IP (Instruction pointer)
  • CS (code segment), DS (data segment), ES (extra segment), SS (stack segment). 这四个segment registers可帮助cpu访问1MB内存

浮点运算:8086/8088可以连接外置的Intel 8087协处理器进行硬件浮点运算. 使用80-bit浮点数

Intel 8087

1980年发布. 首个Intel设计的浮点运算协处理器(coprocessor)

可以搭配Intel 8086/8088使用

之后Intel又发布了80287 (1982年发布), 80387 (1987年发布, 支持IEEE754-1985标准), 80487等.

80186 (iAPX 186, 186)

1982年发布

支持clock generator, interrupt controller, timers, wait state generator, DMA channels等,降低集成电路的数量

80286 (iAPX 286, Intel 286)

1982年发布

数据宽度: 16-bit.

地址宽度升级为24bit(最大支持16MB物理内存寻址)

指令集: x86-16.

i386 (80386, Intel 386)

1985年发布。由AMD、IBM、Intel联合打造。

首个32位处理器

指令集: x86-16, IA-32

data width, address width都升级为32-bit

添加了memory management unit做page translation,让操作系统虚拟内存更加简单

添加三级流水线

可直接执行大多数8086/80286的指令

寄存器:EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI, EIP, CS, DS, ES, FS, GS, SS, Flags

  • 相比于8086除了扩展成32位以外,新增FS (F segment), GS (G segment)寄存器
  • 使用segmented addressing system,最大支持64TB的虚拟内存

i486 (80486, Intel 486)

1989年发布

指令集:x86-16, IA-32 (包括x87)

指令集与i386很相似,此外新增CMPXCHG (compare-and-swap), XADD (fetch-and-add), BSWAP原子指令等指令

新增芯片内部的L1缓存。相比之下i386只有off-chip cache(相当于只有L2缓存)

芯片集成FPU(浮点运算单元)。相比于i387(i386的可选外置FPU处理器)显著更快

Pentium (奔腾, i586, P5 Pentium)

1993年发布

兼容i386指令集

首个superscalar x86处理器(能够同时执行两条指令). 有两条datapaths (pipelines), 各自有自己的ALU、address gen单元。需要编译器优化才能最好地利用instruction level parallelism.

后来的Pentium with MMX 支持MMX指令集

  • MMX: 64位的SIMD指令。有8个寄存器,MM0到MM7,每个寄存器为64位,可以存64位整数、2个32位整数、4个16位整数、8个8位整数
  • MM0到MM7这八个寄存器与x87的FPU寄存器重合,相当于80-bit的x87寄存器的低64位. 导致cpu无法同时处理浮点数据和SIMD数据
  • 仅支持整数

Pentium II (二代奔腾)

1997年发布

支持MMX指令集

Pentium III

1999年发布

支持SSE指令集

  • SSE (Streaming SIMD Extensions): 128位的SIMD指令。
  • 有8个寄存器,仍然称为XMM0到XMM7。AMD提出的AMD64扩展又新增了8个寄存器XMM8到XMM15
  • SSE仅支持4个32位单精度浮点数
  • SSE2支持4个32位单精度浮点、2个64位双精度浮点、2个64位整数、4个32位整数、8个16位整数、16个8位整数

硬件支持读取Processor Serial Number (PSN), 可通过CPUID指令读取

支持硬件随机数生成器

Pentium 4

2000年发布

支持SSE2指令集,后续部分型号支持SSE3和64位指令集

  • SSE2支持4个32位单精度浮点、2个64位双精度浮点、2个64位整数、4个32位整数、8个16位整数、16个8位整数
  • SSE3支持加/减同一个XMM寄存器的数值,新增将浮点数转换为整数的指令

Pentium D

Pentium D是一个64位处理器品牌(系列),第一款处理器2005年发布,90nm制程

双核处理器

指令集: x86-64, MMX, SSE, SSE2, SSE3

x86-64 (x64, AMD64, Intel 64)

首次发布与1999年,首次出现在AMD Opteron系列处理器上

有64-bit mode和compatibility mode两种模式,兼容模式可以硬件无损运行原有的16位和32位程序

IA64

IA64不是AMD64/x86-64!

Intel发布的指令集,全称Intel Itanium architecture。Itanium架构显式要求编译器指定哪些指令可同时运行,以支持instruction-level parallelism. 注: superscalar同为instruction-level parallelism但仅仅需要处理器硬件管理哪些指令同时运行即可

首个Itanium处理器2001年发布

不向前兼容IA-32

从Windows Server 2008 R2起,windows不再支持IA-64架构;从2023年起,Linux内核不再支持IA-64架构

Intel Core 2 (Duo, Quad, Extreme)

处理器系列,包括单核、双核、四核,其中四核处理器分为两个die

支持SSSE3、SSE4.1(更多指令)

Intel Core i3/i5/i7

Intel于2008年出的处理器系列


x86 History
https://www.billhu.us/2025/064_x86/
Author
Bill Hu
Posted on
December 10, 2025
Licensed under