CPU 历史与经典结构 —— 从 ENIAC 到现代

第二章从 CPU 起步。这一篇先把”一颗 CPU 究竟是什么”的底层概念讲清——所有后面的 Intel/AMD/ARM 路线图、缓存、流水线、NUMA,都建立在这套不变的骨架之上。

从 ENIAC 到 EDVAC:现代计算机的两个原点

ENIAC(1946)

世界上第一台真正意义上的电子计算机:

  • 1946 年宾夕法尼亚大学投入运行
  • 18000 多个真空管,重 30 吨
  • 十进制运算(不是二进制)
  • 编程靠手动接线和拨开关
  • 主要用途:弹道计算

ENIAC 的意义在于证明了”用电子电路代替机械实现自动计算”是可行的——不在于它的具体设计有多先进。

EDVAC(1945 提出,1951 完成)

EDVAC 才是现代计算机的真正原型:

  • 冯·诺依曼 1945 年 6 月提交 101 页《关于 EDVAC 的报告草案》
  • 首次采用二进制
  • 五大组件:运算器、控制器、存储器、输入设备、输出设备
  • 核心思想:“存储程序”(stored-program)——程序和数据都放在内存里,由 CPU 自动读取执行

存储程序的思想之所以划时代,是因为它意味着计算机的功能不取决于硬件,而取决于内存里装了什么程序——这才是软件产业出现的前提。

CPU 的三大组件(八十年没变)

无论晶体管数量从几千翻到几百亿,CPU 始终由三个东西构成:

graph LR
  CTRL[控制器
Control Unit] ALU[运算器
ALU] REG[寄存器
Registers] CTRL -- 译码/调度 --> ALU CTRL -- 读写 --> REG ALU <-- 操作数/结果 --> REG CTRL <-- 取指 --> MEM[(内存)] ALU <-- 数据 --> MEM
组件 角色
运算器(ALU) 算术运算(加减乘除)和逻辑运算(与或非、比较)
寄存器 暂存指令、操作数、运算结果——CPU 内部最快的存储
控制器 取指、译码、调度——决定下一步做什么

加上 缓存(Cache)总线(Bus),就是一颗 CPU 在芯片层面的全部。

两种经典架构:冯·诺依曼 vs 哈佛

冯·诺依曼架构

graph LR
  CPU --- BUS[共享总线]
  BUS --- MEM[(存储器
指令+数据)]
  • 指令和数据存在同一块内存
  • 共享一条总线传输
  • 结构简单、内存利用灵活
  • 缺点:取指和取数据不能并行(”冯·诺依曼瓶颈”)

绝大多数通用 CPU(x86、ARM 应用核)采用冯·诺依曼——但都通过缓存、流水线、预测来缓解瓶颈。

哈佛架构

graph LR
  CPU --- IBUS[指令总线] --- IMEM[(指令存储)]
  CPU --- DBUS[数据总线] --- DMEM[(数据存储)]
  • 指令和数据分开存储、分开总线
  • 取指和取数据可以并行,吞吐量高
  • 结构复杂、内存利用不灵活

DSP、单片机、AI NPU 内核常用哈佛——它们的程序固化在 ROM、运行时不变,分离反而方便。

现代实践:混合架构

现代 CPU 在主存层面是冯·诺依曼(指令和数据共享 DRAM),但在一级缓存层面是哈佛(L1I 和 L1D 分离)。这种设计被称为**”修正的哈佛架构”**,鱼和熊掌兼得。

一颗 CPU 在系统里的位置

不论哪种架构,CPU 都和存储器输入/输出(I/O)设备一起,构成现代计算机的三大核心。

graph TB
  CPU[CPU
运算 + 控制] MEM[(主存)] IO[I/O 设备] CPU <-- 内存总线 --> MEM CPU <-- I/O 总线 --> IO

第一章的”主板与总线”那篇画过一张更详细的版本,把 PCIe、UPI、DMI、SATA 等都填了进去——回头对照看更清楚。

X86 系统的典型架构演进

X86 服务器主板的”芯片组拓扑”在 2010 年前后发生了一次大变化:

经典三芯片架构(FSB 时代,2008 年前)

graph LR
  CPU -- FSB --> NORTH[北桥
内存控制器+显卡] NORTH -- DIMM --> MEM[(DRAM)] NORTH -- PCIe --> GFX[显卡] NORTH --- SOUTH[南桥] SOUTH --- USB SOUTH --- SATA SOUTH --- LPC SOUTH --- PCI
  • FSB(Front Side Bus) 是 CPU 和北桥的”主动脉”
  • 北桥集成内存控制器和图形接口
  • 南桥接所有低速 I/O

FSB 的最大问题是带宽不够:CPU 频率越来越高,FSB 成了瓶颈。

现代两芯片架构(QPI/UPI/DMI 时代,2008 年至今)

graph LR
  CPU -- 内存控制器集成在 CPU --> MEM[(DRAM)]
  CPU -- PCIe 控制器集成在 CPU --> GPU/NIC/NVMe
  CPU -- DMI/ESI --> PCH[南桥
PCH] PCH --- USB PCH --- SATA PCH --- LPC PCH --- BMC
  • 内存控制器和 PCIe 控制器搬进了 CPU 内部——延迟显著降低
  • 北桥消失,剩下的”南桥”被 Intel 改名为 PCH(Platform Controller Hub)
  • DMI/ESI 成为 CPU 和 PCH 之间的内部链路

这次架构变迁的发起者是 Intel Nehalem(2008)和 AMD K8(更早),它直接奠定了现在所有服务器 CPU 的拓扑形态。

一句话定义

CPU(Central Processing Unit,中央处理器) 是一块超大规模集成电路,是计算机的运算核心和控制核心。它包含运算器、控制器、寄存器、缓存,与存储器、I/O 设备一起构成计算机的三大核心部件。

小结

  • ENIAC 是起点,EDVAC 才是现代计算机的真正原型
  • “存储程序”思想是软件产业的前提
  • CPU = 运算器 + 控制器 + 寄存器(+ 缓存 + 总线)
  • 主流 CPU 是冯·诺依曼架构,但 L1 cache 借鉴哈佛
  • 现代 X86 把内存控制器和 PCIe 控制器集成进 CPU,”北桥”已被合并

下一篇我们看 CPU 最重要的”性格基因”——指令集架构。