Case for RISC 1980 — 一篇没有芯片的论文,掀起 CPU 半世纪革命
是什么
Case for RISC(中文常译”为精简指令集计算机辩护”)是 Patterson 和 Ditzel 1980 年发的一篇 8 页论文。它没有芯片、没有实验数据、没有 benchmark——纯粹是一份论证书,为一种当时还不存在的 CPU 设计哲学辩护。
日常类比:像一封”为什么我们应该开小馆子而不是开大餐厅”的公开信。当时所有人都在比”谁的菜单更长”——300 道菜的 VAX-11、500 多条指令的 IBM 370。这两位作者站出来说:“菜单越长,平均每道菜做得越慢。不如砍到 30 道,每道都做到极致。”
这篇论文留下两件大事:
- 让 RISC 这个词第一次出现在公开文献里
- 给一年后的 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 年后的新形式。
踩过的坑
-
“RISC = 指令少”是误读:论文真正主张是”每条都简单、定长、单周期、寄存器到寄存器”。现代 ARM 有几百条指令,仍是 RISC——关键不是数量。
-
论文不等于实现:1980 年这篇是纯论证。把它和 1981 年的 RISC I 芯片混为一谈是常见错误。论文先于芯片,用论证说服业界,再用芯片兑现承诺——这种”先发声明,再交付”的科研模式值得学。
-
80/20 数据被简化传播:Tanenbaum 1978 的统计是在特定语言(SAL)和特定平台上做的。不同语言、不同 workload 比例不同。但核心趋势——复杂指令大量未被使用——在多个独立研究里都成立。
-
论文没提 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 年得奖。
学到什么
- 论证可以走在实现前面——这篇论文证明你不需要先造出来才能改变行业,清晰的逻辑本身就是力量
- 第一性原理打败路径依赖——1980 年共识是”指令越多越好”,论文直接质问”那 80% 没人用的为什么还存在”
- 架构选择 = 经济学问题——硬件资源(面积、时钟)和软件资源(编译器、内存)之间分账,每个时代分账方式不同
- 科学论文的胜利方式:不是直接说服反对者,而是逼他们把隐含假设暴露出来,让大家自己判断那些假设还成不成立
- 同时代独立得到同一结论 = 强信号:IBM 801(1975 内部)、Berkeley RISC(1980)、Stanford MIPS(1981)三条线索独立汇聚到”砍指令集”,反向证明这不是巧合
- 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 — 用极小内核做出能用的分时系统