组成原理

History · Ideas Over Dates

组成与体系结构
发展史

下面按阶段写公开可核对的主线。精确到年的只写有共识的节点;其余写年代。思想线索比年表更重要:程序如何进存储器,ISA 如何变成契约,频率走到墙之后设计往哪摆。

存储程序

指令和数据以同样的二进制放进主存,按地址取指。这是冯·诺依曼叙事的核心,不是「五个箱子」本身。

ISA 是契约

指令集把软件看见的状态与硬件实现分开。同一套体系结构可以有多代实现,System/360 把这件事做成了产品策略。

量化与回摆

用 IC、CPI、时钟比较设计。频率墙之后,通用核变多,专用加速器回来——不是「摩尔定律失效」一句话能概括的。

19c–1940s

机械、电子管、存储程序

查尔斯·巴贝奇在 19 世纪设计差分机与分析机,提出可编程计算的机械方案,当时没有按设计完整造出来。20 世纪 40 年代出现大型电子数字计算机。

ENIAC 在宾夕法尼亚大学研制,1945 年底完成、1946 年公开演示:电子管、十进制、最初靠插线与开关改程序,不是后来教材里的存储程序机。

1945 年的 EDVAC 报告草稿把「指令与数据同存」写成可讨论的设计。1948 年曼彻斯特 Baby 跑通存储程序;1949 年剑桥 EDSAC 投入使用。这些是「程序进主存」进入工程的共识节点。

「冯·诺依曼结构」常被用来称呼存储程序机,报告署名与 Eckert、Mauchly、Turing 等人的贡献在史学上有争论。本课要掌握的是机制:按地址取指,而不是争冠名权。
1950s–60s

晶体管、集成电路与 System/360

晶体管在 1940 年代末于贝尔实验室出现,1950 年代进入计算机;集成电路在 1950 年代末由基尔比、诺伊斯等人分别实现。晶体管与集成电路推动部件小型化,使部分计算机由房间级设备向机柜级缩小。

IBM 在 1964 年宣布 System/360:把「体系结构」(程序员看见的指令与状态)和具体实现分开,使同一软件能在不同档次的机器上跑。Amdahl、Blaauw、Brooks 等人的论述被后来教材当作 ISA 契约的经典来源。

戈登·摩尔 1965 年撰文描述芯片上晶体管数量的指数增长。后来业界常按大约两年翻一番来规划,这是经验观察与产业节奏,不是物理定律。

1971–1980s

微处理器与 RISC

Intel 4004 于 1971 年作为商用微处理器出现。8086 于 1978 年发布;IBM PC 在 1981 年采用其 8 位外部总线版本 8088,把 x86 带进个人电脑。

1970 年代 IBM 内部的 801 研究、1980 年代加州大学伯克利的 RISC 项目、斯坦福的 MIPS,把「少而规则的指令、Load/Store、硬布线更常见」做成可发表的设计路线。Acorn 在 1980 年代中期做出 ARM 的前身。这些是特征聚类,不是「RISC 一定更快」的证明。

CISC 与 RISC 的商业胜负不能从课堂定义直接推出来。x86 用兼容性保住软件;ARM 用授权模式铺进移动。机制课写特征,产业课写格局,两边不要互相发明因果。
1990s–2000s

频率竞赛与功耗墙

1990 年代到 21 世纪初,桌面处理器主频快速上升,流水线更深、推测执行更激进。Pentium 于 1993 年发布,是这条路上的一个公开产品节点。

大约 2004–2006 年,主频路线明显减速:功耗、漏电和设计复杂度让「再拉高 GHz」不再划算。此后通用处理器转向多核、更大 Cache、更重视每瓦性能。这是设计约束的转移,不是「流水线被淘汰」。

流水线、超标量、多核解决的是不同瓶颈。五级教学流水线仍然解释冒险;多核共享缓存时要分清三层:按地址的 coherence、跨地址的 consistency、程序层同步——三层不能互相替代,也不能把同步只归给操作系统课。
2000s–

异构、移动与开放指令集

NVIDIA 于 2006 年公布 CUDA,为已具备可编程执行能力的 GPU 提供通用并行编程模型,推动 GPGPU 应用发展。移动端则由 ARM 授权的 SoC 成为智能手机的常规骨架。苹果在 2020 年发布 M1,把自研 ARM 核放进个人电脑产品线——这是公开产品节点,不是份额判决。

RISC-V 在 2010 年代于伯克利起步,后来成立基金会,把指令集写成可免费实施的开放规范。它提供又一条 ISA 契约,并不自动消灭 x86 或 ARM。

2010 年代中期以后,云厂商与芯片公司公开了多种训练/推理加速器(如 Google 2016 年公布的 TPU)。GPU 面向高吞吐并行计算;专用加速器针对特定工作负载定制计算单元、数据通路与存储层次,通常以降低通用性换取能效。不要把它读成新的处理机调度算法。