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 最重要的”性格基因”——指令集架构。