体系结构概览

从冯诺依曼体系到现代计算机系统的设计权衡与工程演进

Posted by CloudingYu on March 2, 2026

一、计算机体系结构的学习视角

1.1 核心精神:多问一个”为什么”

本课程不同于数字逻辑课程中照章执行的模式,核心是理解设计决策背后的原因。计算机是人设计出来的,每一个设计决策背后都有工程上的权衡(trade-off)。所谓”设计的无奈”——设计者心中有一个完美的方案,但由于物理限制、成本、时间等原因无法实现,只能妥协。这门课最重要的目的是培养两个习惯:

  1. 面对一个新东西时,习惯性地问”为什么这样设计”
  2. 做决策时知道有多种路径,而每个选择都有代价

1.3 为什么软件工程师也要学硬件

了解硬件至关重要:

  • 不被误导:当硬件团队以”这太难做不了”为由推脱时,能判断是真实的技术困难还是推诿。
  • 准确定位瓶颈:程序慢不一定是算法问题,可能是硬件瓶颈(内存带宽、CPU架构等)。
  • 资源分配决策:当你负责一个团队、掌握预算时,需要判断投钱在哪里回报最大——买更快的硬件、优化操作系统、还是改进算法。

DeepSeek案例:DeepSeek 最值得关注之处不是发明了新算法架构(用的还是 Transformer),而是在有限的硬件资源上把大模型跑起来了、跑得快了。他们使用了 FP8 而不是 FP16 甚至 FP32——精度当然更差,但性能大幅提升。这就是工程优化的本质:所有的优化一定都包含痛苦的舍弃。

1.4 系统思维与职业发展

当你有资源(人力、物力)的时候,需要知道投给谁。有人忙得不可开交,再投给他也没用——解决其他环节的瓶颈,他的压力自然下来。现在所谓的”35岁被淘汰”,本质上是因为只停留在最上层调库。对系统有深入理解的人,不会被轻易替代。


二、计算机系统的基本定义与组成

2.1 什么是计算机

计算机就是能够自动完成取指(Fetch)和执行(Execute)任务的机器。

从硬件角度看,核心就是三样东西:

  • 计算单元(处理器/CPU)
  • 存储单元(Memory)
  • 输入输出单元(I/O)

现代计算机也是这三者,本质上没有变化。

2.2 计算机系统的层次结构

从顶层到底层可以划分为:

层次 内容 说明
应用层 Application 面向用户的各类软件
系统软件层 OS、编译器、数据库 操作系统直接管理硬件资源
指令集架构(ISA) 汇编/机器码 软件和硬件的接口
硬件层 CPU、Memory、I/O、总线 物理硬件

所有的”加号”(图中层级之间的连线)都是接口。软件和硬件的接口就是指令系统(Instruction Set Architecture, ISA)。硬件只能听得懂汇编语言或者机器码,你必须用它能接受的语言来描述你的需求。

2.3 “汇编是给硬件看的”到底是什么意思

一个常见误解需要澄清:汇编语言(如 move)本质上还是给人看的,机器(CPU)真正读的是机器码(Machine Code)——即二进制码。汇编语言只是机器码的一种可读表示。一条 move 指令最终会被汇编器翻译为一段二进制机器码,CPU 按照指令集规范来解读和执行这段二进制。


三、冯诺依曼体系结构与”存储程序”概念

3.1 为什么”存储程序”是一个伟大发明

在冯诺依曼之前,计算机大多是为特定任务定制的。每一台都是独一无二的,造价极为昂贵且不通用。冯诺依曼架构的核心思想在于:程序(指令)和数据存储在同一个存储器中,计算机自动逐条取指令并执行。通过”存储程序”这个机制,一台计算机可以运行不同的程序来实现不同的功能——这是通用计算机的基础。

冯诺依曼架构的核心思想

  • 程序(指令)和数据存储在同一个存储器中
  • 计算机自动逐条取指令、执行指令
  • 通过跳转指令(branch/jump)和循环改变控制流
  • 只需要加法跳转两条基本操作,理论上就能实现所有计算

3.2 冯诺依曼架构的基本组成

1
2
3
4
5
程序/数据 → 存储器 → 控制器(取指→译码→执行)
                      ↕
                    运算器(ALU:加减乘除)
                      ↕
                    输入/输出设备
  • 存储器:同时存放指令和数据
  • 控制器:负责取指、译码、控制执行流程
  • 运算器(ALU):执行算术和逻辑运算
  • I/O:与外部世界交互

3.3 变址寻址等早期优化

随着计算机发展,涌现出许多现在看来”理所当然”的设计:

  • 变址寻址(Indexed Addressing):因为需要访问的地址太多,需要动态计算地址,不能全部硬编码。
  • 浮点运算:用于支持科学计算。
  • 多路存储器IO 处理机:提升并行度。

四、计算机的发展历史

4.1 代际划分

计算机发展的几个关键节点:

时代 时间 技术特征 代表性事件
第一代 1940s-1950s 真空管/继电器 冯诺依曼架构确立,debug 一词源于真的清除虫子
第二代 1950s-1960s 晶体管 定制化大型机
第三代 1960s-1970s 集成电路(IC) IBM 兼容机概念提出
第四代 1970s 至今 大规模/超大规模集成电路(VLSI) 微处理器、PC 革命
当代 2000s 至今 多核、GPU、移动端 ARM 崛起、AI 加速器

老式计算机用继电器,有机械动作,虫子会钻进去导致接触不良——literally “debug”,即今天调试一词的起源。

4.2 定制化时代的终结:IBM 兼容机的诞生

在 1960 年代,买计算机是一件”去厂家定制”的事——每家都不通用,价格极贵。IBM 提出了一个革命性的想法:只要接口一致,不同厂商分别生产 CPU、Memory、键盘、鼠标,大家就能装到一起。

这就是兼容机(IBM PC Compatible)的起源。英特尔和 AMD 生产 CPU,不同厂商生产内存、主板、外设——只要符合相同的接口标准,就能互相配合使用。

4.3 兼容机的影响

优点

  • 分工合作:每家专注于自己最擅长的领域,生产效率大幅提升
  • 降低成本:规模化竞争导致价格下降
  • 性能提升快:每家在自己领域持续创新

深远影响——模块化思维: 写代码讲究”紧耦合”和”松耦合”。紧耦合性能可以拉到极致但难以扩展;松耦合中间增加了调用但有利于维护。兼容机的模块化设计就是一种松耦合——获得了灵活性和可扩展性,但付出了性能上的代价。


五、总线架构

5.1 从点对点到总线

早期的连接方式是 CPU 与每个外设一对一连线。问题是:出厂时设计了三个 IO 口,用户后来想加扫描仪、打印机——没地方插。

总线(Bus)的解决方案:设计一个公开的标准,就像大马路一样。只要满足协议,任何设备都能连接。高速设备(磁盘)和低速设备(鼠标、键盘)都可以在总线上工作。USB(Universal Serial Bus,通用串行总线)就是总线的典型例子——同一个 USB 口可以插高速 U 盘(几百 MB/s)也可以插蓝牙耳机(几十 KB/s)。

5.2 总线带来的问题

系统变得越来越复杂。越来越多的设备连接到总线上,控制协调变得困难。总线架构是一种典型的”模块化带来灵活性,但也带来复杂度增加”的工程权衡。


六、指令集系统(ISA)

6.1 为什么指令集如此重要

一个高效的语言对一个文明的发展是至关重要的。中文就是一个信息密度很高的语言——”葡萄酒”“葡萄干”在英文里是三个完全不同的词(grape, wine, raisin),中文用”葡萄”加一个修饰词就搞定了。指令系统也是一样的道理:一个好的指令系统对一个 CPU 的发展是至关重要的。

指令集实质上就是一本”手册”——规定哪些操作可以用、指令的编码格式是什么。但就这么一本”手册”,决定了整个软件生态。你不可能随便复印一本 Intel 的手册就拿去造 CPU——背后是专利、授权、生态兼容性等一系列问题。

6.2 主流指令集简史

  • x86(Intel/AMD):CISC 架构,统治 PC 和服务器市场数十年。
  • ARM:RISC 架构,英国 ARM 公司只设计指令集、不生产芯片,通过 IP 授权模式运营。一个坐在办公室里”画图纸”的公司,凭智力输出撬动了整个移动时代。ARM 不造工厂、不制造芯片,只做知识产权授权。
  • MIPS:曾经很流行,已逐渐被淘汰。
  • RISC-V:开源指令集,近年发展迅速(本课程的核心 ISA)。

6.3 x86-64 命名之争:兼容性的经典案例

32 位时代,Intel 和 AMD 的 CPU 都使用 x86 指令集。

到了 64 位时代:

  • AMD 选择兼容 32 位(甚至兼容 8 位的古早指令),推出了 AMD64 指令集。
  • Intel 选择另起炉灶,设计了全新的 IA-64(Itanium)架构,不兼容旧的 x86。

Intel 选择不背历史包袱,打造全新架构。结果市场不买账——谁也不愿意自己积攒了几十年的代码全部作废。Intel 几乎因此倒下,最后只能回过头来,在 AMD64 基础上推出自己的 x86-64。

AMD64 兼容的不仅仅是 32 位——它连 8 位的古早指令都兼容了。这是背了一个沉重的历史包袱,每个工程师对此都头痛不已。但市场选择说明了一切:Intel 想甩掉包袱,差点死掉;AMD 老老实实背下来,占领了市场。


七、兼容性的工程权衡

7.1 兼容性的代价

生命中所有的馈赠,早就暗中标好了价格。兼容机带来了成本下降、生态繁荣,但也付出了巨大的代价:

  1. 性能损失:器件之间通过标准化接口通信,无法做到定制化那种极致优化。CPU 升级了但内存没升级——CPU 的性能展现不出来。CPU 翻了一番,系统整体可能只提升 20%-30%。

  2. 缺乏整体优化:没有一个人从系统全局出发做升级设计——CPU 厂商只做 CPU,内存厂商只做内存。最终变成了一个”分布式系统”,整体效率不是最优。

  3. 向后兼容的历史包袱:为了兼容旧设备,新架构必须在硬件中保留旧接口的逻辑支持。这不仅增加了芯片复杂度,还限制了架构创新的空间。

7.2 兼容性不是简单的”对”或”错”

没有最佳答案。当你守着一堆遗留代码的时候,你再怎么地也得把兼容性维持住。所以没有最好的,只有”当你要做什么决策的时候,你要知道它的优点和代价”。

如果你买了一个新主板,你以前咬牙买的 CPU 还能不能用?

  • 能用(兼容)→ 用户开心,但厂家必须维护复杂的兼容逻辑
  • 不能用(不兼容)→ 用户换全套,但系统可以获得极致性能

这世界上哪有这么多好处?有得必有失。这就是计算机科学中反复出现的主题——the art of computer science。别人来跟你推荐一个方案的时候,他说的优点都对。但你要会问:代价是什么?


八、计算机产业的竞争与变革

8.1 从 Intel vs AMD 到群雄并起

产业变迁的三个阶段:

  • 第一阶段(PC 时代):Intel 和 AMD 激烈竞争,都在争”谁的芯片最快”。
  • 第二阶段(移动时代):ARM 突然出现——不生产芯片,只做设计卖 IP。手机市场起来了,x86 芯片功耗太高、体积太大不适合手机。ARM 的低功耗 RISC 架构完美契合。Intel 也曾尝试做移动端 CPU(Intel Mobile Phone),但由于路径依赖——所有资源都在沿着 x86 的路走——没能成功转型。
  • 第三阶段(AI 时代):NVIDIA 的 GPU 逆袭。谁能想到 GPU 成了计算的核心?大规模 AI 训练需要的正是 GPU 擅长的并行矩阵运算。

打败一个时代的巨头,从来不是两个巨头的互相厮杀——而是突然冒出一个新的,直接把前面全部推翻。

8.2 路径依赖

所有的人、所有的资源都在沿着一条路走的时候,没想过还可以这样走。等别人做成了,你觉得”这不是很简单吗?你为什么不这么做?”但在他没做成的时候——世界就是这么有意思的。


九、摩尔定律与后摩尔时代

9.1 摩尔定律的观察与现状

摩尔定律(Moore’s Law)是一个经验观察规律(不是逻辑推导),即集成电路上可容纳的晶体管数量大约每两年翻一番。

以前做计算机的人可以”躺平”——CPU 升级、内存升级,程序性能自然提升。但摩尔定律正在逐渐失效。半导体工艺已接近物理极限(3nm、2nm——原子级别的线宽)。当制程红利消失后,如何继续提升性能?答案是:架构创新

9.2 后摩尔时代的出路

集成电路的发展停滞以后,还想在应用上取得突破,原来那套方法就不行了。GPU 就是对 CPU 的”降维打击”——GPU 结构比 CPU 简单(就是大量并行计算单元堆砌),但在 AI 计算任务上碾压了 CPU。

研究 GPU 不代表 CPU 或传统的计算机组成方法过时了。当系统不够快时,需要在架构层面寻找突破——而理解基本的计算机组成是这一能力的基础。


十、现代大规模系统的挑战

10.1 功耗与散热

当你的代码在 1 万台机器上运行时,每个进程的功耗都是关键问题:

  • 手机上的程序如果让手机半天就没电——用户一定删掉
  • 服务器机房的散热能力有限——低功耗意味着高密度

10.2 容错与可靠性

1 万台设备上,有一个设备硬件坏了怎么办?你不能说”你们必须都给我好好的”。当系统规模足够大时:

  • 设备出故障是概率事件——一定会发生
  • 系统不能因为一台机器出问题就整体崩溃
  • 需要故障隔离(Fault Isolation)、数据回滚(Rollback)、容错设计(Fault Tolerance)

一定有人负重前行——需要有人把整个平台做虚拟化、做错误设备的管理、做失效进程的守护。当你做到一定级别(系统架构师),这些就是必须考虑的问题。


十一、Project 总览与考核方式

11.1 Project 总览

  • 核心任务:使用 Verilog/SystemVerilog 实现一个支持裁剪版操作系统的流水线 CPU
  • 使用 RISC-V(读作 risk-five)指令集架构。
  • 最终 Lab 为开放性设计,可以在基础 CPU 上添加更多功能模块。
  • 可利用大模型辅助学习和代码理解,但不能直接提交 AI 生成的代码。

11.2 参考书目

  • 袁春风《计算机组成与体系结构》
  • Patterson & Hennessy《Computer Organization and Design》
  • 三本结合起来看效果最好。