跳转到内容

Case for RISC 1980 — 一篇没有芯片的论文,掀起 CPU 半世纪革命

是什么

Case for RISC(中文常译”为精简指令集计算机辩护”)是 Patterson 和 Ditzel 1980 年发的一篇 8 页论文。它没有芯片、没有实验数据、没有 benchmark——纯粹是一份论证书,为一种当时还不存在的 CPU 设计哲学辩护。

日常类比:像一封”为什么我们应该开小馆子而不是开大餐厅”的公开信。当时所有人都在比”谁的菜单更长”——300 道菜的 VAX-11、500 多条指令的 IBM 370。这两位作者站出来说:“菜单越长,平均每道菜做得越慢。不如砍到 30 道,每道都做到极致。”

这篇论文留下两件大事:

  1. RISC 这个词第一次出现在公开文献里
  2. 给一年后的 RISC I 芯片(1981)和此后 40 年的 ARM、MIPS、RISC-V 提供了哲学根基

为什么重要

不理解这篇论文,下面这些事都解释不了:

  • 为什么 1980 年没人造出来的东西能在 1990 年代横扫嵌入式、2010 年代横扫移动端、2020 年代攻入桌面(Apple Silicon)
  • 为什么”指令集设计”会变成一个经济学问题而不是纯技术问题
  • 为什么 IBM 801(1975 年内部项目)和 Berkeley RISC(1981)会独立得到几乎相同结论——这暗示背后有更深的规律
  • 为什么 Patterson 和 Hennessy 在 2017 年因 RISC 思想拿图灵奖

一句话:这是一篇用论证而不是产品打赢的论文——当时没人能反驳,等大家想明白时,整个产业已经转向。

核心要点

论文给出 5 条理由,每条都击中 CISC 的痛点:

1. VLSI 时代芯片面积是稀缺资源

1980 年代芯片刚进 VLSI(超大规模集成)时代,晶体管贵且少。每条复杂指令都要占面积——译码器、微码 ROM、专用通路。论文算了一笔账:与其用面积装”几乎没人用”的复杂指令,不如装更多寄存器和 cache。

类比:开餐厅时,每多一道菜都要占后厨设备和食材库存。砍菜单 = 腾出空间装更大冰箱(寄存器)和更快炉子(cache)。

2. 80/20 论据:编译器只用 20% 的指令

论文引用 Tanenbaum 1978 的统计:真实程序里编译器生成的指令,80% 集中在 20% 的指令集——加减乘除、load/store、跳转。剩下那 80% 复杂指令(如 VAX 的 POLY 多项式求值)几乎从不出现。

那为什么还要造它们?因为汇编程序员喜欢,因为传统。但 1980 年代汇编已经是少数派——程序绝大多数由编译器生成。

3. 微码让简单指令也变慢

CISC 用微码 ROM 实现复杂指令。一条 ADD 指令进 CPU,先去查微码 ROM,再执行——ADD 也得等 ROM 查询

时钟周期被最慢的指令锁死。论文核心洞察:复杂指令的存在让所有指令都慢——这是关键不公平。

4. 设计周期短 = 上市快 = 编译器能跟上

CISC 设计周期 5-10 年(VAX-11 用了好几年)。RISC 因为简单,1-2 年就能流片。设计周期短的副产品:编译器团队能跟得上、bug 少、迭代快。

5. 系统复杂度的隐性成本

复杂指令的副作用难以预测——异常处理、中断响应、虚拟内存配合都变难。论文用 VAX 的 page fault 处理为例:复杂指令半执行时被中断,恢复逻辑能写一本书。

把这 5 条放在一起看:论文不是在说”RISC 一定比 CISC 快”,而是在说”CISC 自以为能省的,其实没省到,还连累了简单指令”。这是论文最锋利的一刀。

实践案例

案例 1:论文写完一年后的”反驳与回应”

论文发出后,DEC 的 Clark 和 Strecker 1980 写了 Comments on “The Case for the RISC” 反驳,说”VAX 的复杂指令是为了节省内存”。

Patterson 和 Ditzel 回应:“那是 1970 年的考虑。1980 年内存便宜了 1000 倍,这个理由不成立了。” 这场笔战是体系结构史上最经典的辩论之一。学到的事:好论文的价值有时不在结论本身,而在于它逼对手把假设说清楚

案例 2:从论文到芯片的”赌注兑现”

论文 1980 年发,RISC I 芯片 1981 年就流片——只用了一年。这本身就在演示”设计周期短”那条论据。RISC I 在 C 程序上比 VAX-11/780 快 2-4 倍,用的晶体管还少很多(44k vs 几十万)——5 条理由全部得到验证。

详细芯片实现在 risc-i-1981 那篇笔记里讲,本篇专注哲学。

案例 3:你今天就在受这篇论文的影响

打开 iPhone 设置——A 系列芯片是 ARM 架构,ARM = Advanced RISC Machine。Mac 上的 M 系列同理。

打开 PC 看 Intel x86——表面 CISC,但 Pentium Pro(1995)之后每条 x86 指令进 CPU 都被译码成 1-4 条类 RISC 微指令。论文论点 3(“复杂指令拖慢简单指令”)的解决方案:把 CISC 当壳,里面跑 RISC

案例 4:数据中心也在转 RISC

AWS Graviton(ARM)2018 年发布,到 2024 年承担 AWS 半数以上新计算负载。论文里”VLSI 面积稀缺”在云时代变形为”功耗预算稀缺”——同样钱买的电力,RISC 服务器跑得更多负载。这是论文经济学论证在 40 年后的新形式。

踩过的坑

  1. “RISC = 指令少”是误读:论文真正主张是”每条都简单、定长、单周期、寄存器到寄存器”。现代 ARM 有几百条指令,仍是 RISC——关键不是数量。

  2. 论文不等于实现:1980 年这篇是纯论证。把它和 1981 年的 RISC I 芯片混为一谈是常见错误。论文先于芯片,用论证说服业界,再用芯片兑现承诺——这种”先发声明,再交付”的科研模式值得学。

  3. 80/20 数据被简化传播:Tanenbaum 1978 的统计是在特定语言(SAL)和特定平台上做的。不同语言、不同 workload 比例不同。但核心趋势——复杂指令大量未被使用——在多个独立研究里都成立。

  4. 论文没提 IBM 801:John Cocke 1975 年在 IBM 内部就做出同样观察,但被 IBM 当机密。Patterson 写论文时不知道 801 的存在,是独立得到的结论。两条线索独立汇聚,反而说明洞察是对的。

适用 vs 不适用场景

适用(这套论证今天仍然有效):

  • 设计自定义芯片(DSA / NPU / TPU)——绝大多数选 RISC 风格 ISA
  • 嵌入式 / 移动端——功耗敏感、流水线友好
  • 学院派编译器教学——RISC 是讲流水、寄存器分配的最干净模型

不适用(这套论证有边界):

  • 兼容遗留二进制是硬约束的场景(Windows 桌面)——CISC 包袱卸不掉
  • 极端代码体积敏感(部分 IoT)——CISC 或 ARM Thumb 这种压缩 ISA 更省 ROM
  • 论文 5 条理由里”VLSI 面积稀缺”在 2020 年代意义减弱(晶体管太多了),但其余 4 条仍硬

历史小故事(可跳过)

  • 1975 年:IBM John Cocke 在 801 项目里独立得出”砍指令集”结论,但 IBM 没公开
  • 1978 年:Tanenbaum 统计揭示编译器只用 20% 指令
  • 1979 年:Patterson 在 Berkeley 开 graduate seminar,和学生讨论这个问题
  • 1980 年 10 月:Patterson + Ditzel 在 ACM SIGARCH CAN 发表 8 页论证文章
  • 1980 年底:Clark + Strecker 反驳论文发表
  • 1981 年 5 月:RISC I 芯片在 ISCA 发表,论证变现实
  • 1985 年:Acorn ARM1 发布,受 RISC I 直接启发
  • 2017 年:Patterson + Hennessy 因 RISC 工作获图灵奖

整条线索压缩成一句话:先吵架,再造芯片,再过 35 年得奖

学到什么

  1. 论证可以走在实现前面——这篇论文证明你不需要先造出来才能改变行业,清晰的逻辑本身就是力量
  2. 第一性原理打败路径依赖——1980 年共识是”指令越多越好”,论文直接质问”那 80% 没人用的为什么还存在”
  3. 架构选择 = 经济学问题——硬件资源(面积、时钟)和软件资源(编译器、内存)之间分账,每个时代分账方式不同
  4. 科学论文的胜利方式:不是直接说服反对者,而是逼他们把隐含假设暴露出来,让大家自己判断那些假设还成不成立
  5. 同时代独立得到同一结论 = 强信号:IBM 801(1975 内部)、Berkeley RISC(1980)、Stanford MIPS(1981)三条线索独立汇聚到”砍指令集”,反向证明这不是巧合
  6. manifesto 文章的价值:8 页论证文章在体系结构史上常常比 80 页技术报告影响更深远——好的问题陈述能定义整整一代人的研究方向

延伸阅读

  • 论文 PDF:Case for RISC 1980(8 页,论证密度极高)
  • 反驳论文:Clark & Strecker, Comments on “The Case for the RISC”(同年同期刊)
  • Patterson & Hennessy 教科书:《Computer Organization and Design》(作者亲自把这套思想写进教材)
  • risc-i-1981 —— 论证落地的第一颗芯片
  • tomasulo-1967 —— 同样改变体系结构的”硬件自动化”思路,但走相反方向

关联

  • risc-i-1981 —— 1980 论证 → 1981 芯片,前后脚的 manifesto-implementation 配对
  • tomasulo-1967 —— Tomasulo 让 CISC 硬件自己重排;Case for RISC 让硬件简单、把复杂度推给编译器
  • amdahl-law-1967 —— 串行段决定加速上限;论文论点 3”微码拖慢一切”正是 Amdahl 律的体系结构应用
  • ssa —— SSA 是 RISC “推给编译器”赌注成立的关键工具
  • llvm —— 现代 LLVM 后端把 IR 翻成各种 RISC 风格 ISA,是这篇论文 40 年后的兑现

反向链接

  • amdahl-law-1967 —— Amdahl 定律 — 串行比例决定并行加速比的上界
  • fpga-hls-2011 —— FPGA HLS 2011 — 把 C 代码自动翻译成芯片电路的范式
  • llvm —— LLVM — 模块化编译器框架
  • mips-1981 —— MIPS 1981 — 让编译器自己安排流水线,CPU 就不用管
  • risc-i-1981 —— RISC I — 砍掉 90% 指令反而让 CPU 跑得更快
  • ssa —— SSA — 静态单赋值形式
  • unix-1974 —— UNIX 1974 — 用极小内核做出能用的分时系统