图灵奖系列 · DoggyDad 原创
John Hennessy & David Patterson:RISC革命与"用数据说话"的计算机架构
John Hennessy & David Patterson:RISC革命与"用数据说话"的计算机架构
ANSWER-FIRST SUMMARY
本文回答什么问题
John Hennessy & David Patterson:RISC革命与"用数据说话"的计算机架构
- 主题分类:图灵奖系列
- 关键词:图灵奖、计算机历史、编程语言、算法、人工智能、操作系统
- 人物实体:John Hennessy & David Patterson
图灵奖第五十二届(2017)| John Hennessy & David Patterson:RISC革命与”用数据说话”的计算机架构
一句话概括:当Intel等公司用复杂指令集(CISC)统治处理器市场时,他们用简单的RISC理念证明”少即是多”——精简指令+流水线+编译器协同,创造了更快更高效的处理器;更重要的是,他们建立了”定量评估”方法论,让计算机架构从”工程艺术”变成”科学学科”,影响了从智能手机到超级计算机的所有处理器设计。
🏆 获奖简介
John LeRoy Hennessy(约翰·勒罗伊·轩尼诗,1952-)和David Andrew Patterson(大卫·安德鲁·帕特森,1947-)是RISC(精简指令集计算)架构的先驱,定量计算机架构方法论的创建者。
John L. Hennessy:
- 出生时间:1952年9月22日
- 出生地点:美国纽约州纽约市
- 主要成就:创建MIPS架构、斯坦福大学第十任校长、Google母公司Alphabet董事长
David A. Patterson:
-
出生时间:1947年11月16日
-
出生地点:美国伊利诺伊州埃弗格林公园
-
主要成就:创建RISC I/II架构、RAID存储技术、推动RISC-V开源指令集
-
获奖年份:2017年(共同获奖)
-
获奖原因:开创并系统化了现代RISC处理器设计的方法论
为什么他们是第五十二位? 1970年代,处理器设计陷入”指令越多越好”的误区——Intel x86、IBM 360等复杂指令集(CISC)处理器有数百条指令,设计者认为硬件实现复杂操作会比软件快。但Hennessy和Patterson通过量化研究发现真相:程序只用少数几条指令(80/20法则),复杂指令反而拖慢流水线。1980年代初,他们分别在斯坦福(MIPS)和伯克利(RISC)开发了精简指令集处理器:只保留最常用的指令、固定指令长度、简化硬件、靠编译器优化。结果证明RISC比CISC快数倍且功耗更低。今天,99%的处理器基于RISC:ARM(手机、平板)、MIPS(路由器)、SPARC(服务器)、PowerPC(游戏机)、RISC-V(开源芯片)。更深远的是,他们合著的教材《Computer Architecture: A Quantitative Approach》(定量方法)革新了整个领域——不再凭直觉设计,而是用基准测试、性能模型、数据驱动决策,培养了三代计算机架构师。
🚀 重大贡献
1. RISC理念的诞生(1980-1984)
传统CISC的问题:
复杂指令集的困境
CISC哲学(1960s-1970s):
- 指令越多越好:一条指令完成复杂任务
- 硬件实现复杂操作:减少程序员负担
例子(VAX-11指令集):
POLY ; 多项式求值指令
INDEX ; 数组索引计算指令
CALLS ; 复杂子程序调用(自动保存寄存器、传参、建立栈帧)
看似美好,实际问题:
- 指令长度不一:1字节到17字节(VAX),解码复杂
- 执行时间差异大:简单指令1周期,复杂指令数十周期
- 流水线困难:无法并行执行不同阶段
- 硬件复杂:芯片面积大、功耗高、难以提升频率
- 80/20规律被忽视:研究发现程序只用20%的指令完成80%的工作
关键洞察
Patterson的研究(1980年): 分析编译器生成的代码,发现:
- LOAD/STORE(加载/存储):~30%
- ADD/SUB(加减法):~20%
- BRANCH(分支跳转):~15%
- 其他简单指令:~20%
- 复杂指令:只占~5%,但消耗大量硬件资源
结论:
“与其花巨大代价实现很少用的复杂指令,不如把硬件简化,提升常用指令的执行效率。”
Hennessy的研究(1981年): 优化编译器时发现:
- 编译器可以将复杂操作分解为简单指令序列
- 如果硬件执行简单指令足够快,分解后的代码反而更快
- 瓶颈是内存访问,不是指令复杂度
结论:
“硬件应该专注于加速简单操作,让编译器处理复杂性。“
2. RISC架构的核心原则
五大设计原则:
1. 精简指令集
RISC哲学: 只保留最常用的指令(通常<100条)
MIPS R2000指令集:
- 算术:ADD, SUB, MULT, DIV(只有4条)
- 逻辑:AND, OR, XOR, NOR(4条)
- 数据传输:LOAD, STORE(2条)
- 分支:BEQ, BNE, J, JAL(4条)
- 总计:~60条指令
对比:
- x86(CISC):数百条指令
- ARM(RISC):~100条指令
- MIPS(RISC):~60条指令
2. LOAD/STORE架构
原则:
- 只有LOAD和STORE指令访问内存
- 所有运算在寄存器中完成
例子:
# 计算 C = A + B(内存变量)
# CISC风格(一条指令)
ADD [C], [A], [B] ; 直接操作内存
# RISC风格(三条指令)
LOAD R1, [A] ; 加载A到寄存器
LOAD R2, [B] ; 加载B到寄存器
ADD R3, R1, R2 ; 寄存器运算
STORE R3, [C] ; 存回内存
优势:
- 简化硬件:内存访问逻辑独立
- 加速运算:寄存器比内存快100倍
- 利于优化:编译器可以重排指令
3. 固定指令长度
RISC: 所有指令32位(MIPS、ARM)或64位(Alpha)
CISC: 指令长度可变(x86:1-15字节)
优势:
- 快速解码:一个周期确定指令边界
- 流水线友好:可以预取下一条指令
- 简化硬件:解码器电路简单
4. 简化寻址模式
CISC寻址模式(x86有十几种):
MOV EAX, [EBX + ECX*4 + 0x1000] ; 复杂计算地址
RISC寻址模式(通常只有2-3种):
LOAD R1, 100(R2) ; 寄存器 + 偏移
优势:
- 地址计算简单
- 一个周期完成
- 硬件电路小
5. 流水线优化
RISC设计为流水线而生:
经典5级流水线:
IF (Instruction Fetch) 取指令
ID (Instruction Decode) 解码
EX (Execute) 执行
MEM (Memory Access) 访存
WB (Write Back) 写回
指令重叠执行:
时钟: 1 2 3 4 5 6 7 8
指令1: IF ID EX MEM WB
指令2: IF ID EX MEM WB
指令3: IF ID EX MEM WB
指令4: IF ID EX MEM WB
理想情况: 每个时钟周期完成一条指令(虽然单条指令要5个周期)
RISC的优势:
- 固定长度:IF阶段简单
- 固定格式:ID阶段快速
- 简单操作:EX阶段单周期
- LOAD/STORE:MEM阶段可选
3. MIPS与RISC I/II的开发(1981-1984)
Patterson的RISC I(伯克利,1981)
项目背景:
- 研究生课程项目
- 目标:验证RISC理念
设计:
- 31条指令
- 32个寄存器
- 寄存器窗口(Register Windows):函数调用时不需要保存/恢复寄存器
寄存器窗口的创新:
物理寄存器:138个
程序可见:32个(窗口)
函数调用:窗口滑动,重叠8个寄存器传参
结果:函数调用零开销(大部分情况)
芯片实现(1982)**:
- VLSI技术:手工布线
- 晶体管数:~44,000个(Intel 8086有29,000个)
- 频率:1 MHz
- 性能:比VAX-11/780快(但VAX有数十万晶体管)
证明: RISC可以用更少晶体管实现更高性能!
Hennessy的MIPS(斯坦福,1981)
项目名称: MIPS = Microprocessor without Interlocked Pipeline Stages (无互锁流水线级的微处理器)
核心思想: 硬件不检测流水线冒险(hazard),靠编译器插入NOP或重排指令
例子:
# 流水线冒险
LOAD R1, 0(R2) ; 加载数据到R1
ADD R3, R1, R4 ; 使用R1(但LOAD还没完成!)
# MIPS解决方案:编译器插入NOP
LOAD R1, 0(R2)
NOP ; 延迟槽(Delay Slot)
ADD R3, R1, R4
# 或者编译器重排指令(更优)
LOAD R1, 0(R2)
SUB R5, R6, R7 ; 无关指令填充延迟槽
ADD R3, R1, R4
优势:
- 硬件极简:无互锁逻辑,频率更高
- 编译器优化:静态调度,利用延迟槽
芯片实现(1983)**:
- 频率:5 MHz
- 性能:比VAX快2-3倍
- 功耗:比VAX低10倍
商业化
MIPS Technologies(1984):
- Hennessy与同事创立
- 产品:R2000、R3000、R4000
- 应用:
- SGI工作站:3D图形处理
- PlayStation/PS2:游戏机
- 路由器:Cisco使用MIPS
- 授权模式:IP授权,类似ARM
SPARC(1985): Sun Microsystems基于RISC I设计
- 保留了寄存器窗口
- 服务器市场
ARM(1985): 英国Acorn计算机公司独立开发的RISC
- 超低功耗设计
- 后来统治移动设备市场
4. 定量方法论的建立
革命性教材:
《Computer Architecture: A Quantitative Approach》(1990初版)
副标题的演变:
- 第1版(1990):A Quantitative Approach
- 强调:用数据驱动设计决策
核心理念:
1. 性能定义与测量
Hennessy-Patterson性能公式:
CPU Time = Instructions × CPI × Clock Cycle Time
其中:
- Instructions: 程序执行的指令数
- CPI: Cycles Per Instruction(每指令周期数)
- Clock Cycle Time: 时钟周期(频率的倒数)
启示:
- 减少指令数:编译器优化、更强大的指令
- 降低CPI:流水线、超标量、乱序执行
- 提高频率:更快的晶体管、更短的关键路径
三者相互制约:
- 复杂指令减少指令数,但增加CPI和周期时间
- RISC增加指令数,但大幅降低CPI和周期时间
- 定量比较才能做出正确决策
2. Amdahl定律
Gene Amdahl(1967)提出:
加速比 = 1 / [(1 - P) + P/S]
其中:
- P: 可并行化部分的比例
- S: 并行化后的加速倍数
例子: 程序的90%可以完全并行(P=0.9),并行化后快100倍(S=100):
加速比 = 1 / [(1 - 0.9) + 0.9/100]
= 1 / [0.1 + 0.009]
= 1 / 0.109
≈ 9.2倍
结论: 即使90%完美并行,整体只快9.2倍(不是100倍)! 瓶颈是那10%串行部分。
启示:
- 不要只优化容易优化的部分
- 识别真正的瓶颈
- 平衡优化
3. 基准测试(Benchmark)
问题: 如何客观比较不同处理器?
早期混乱: 厂商用不同程序测试,cherry-picking数据
SPEC(Standard Performance Evaluation Corporation):
- Hennessy和Patterson推动建立(1988)
- SPEC CPU:标准测试套件(编译器、科学计算、图形处理等真实应用)
- 规则:所有厂商用相同程序、相同编译选项
- 结果:几何平均值,不能只报最好的
影响:
- 终结了性能虚假宣传
- 推动了公平竞争
- 成为行业标准
4. 内存墙(Memory Wall)
问题识别(1990s)**:
- 处理器速度每年提升60%
- 内存速度每年提升7%
- 差距扩大:内存成为瓶颈
AMAT(Average Memory Access Time)模型:
AMAT = Hit Time + Miss Rate × Miss Penalty
Hit Time: 缓存命中时间
Miss Rate: 缓存未命中率
Miss Penalty: 访问主存的惩罚
启示:
- 增大缓存:降低Miss Rate(但有成本)
- 多级缓存:L1(小而快)+ L2(大而慢)+ L3
- 预取:提前加载数据
- 带宽优化:更宽的内存总线
Patterson的RAID(1988): 针对存储瓶颈,提出RAID(Redundant Array of Independent Disks):
- RAID 0:条带化(速度)
- RAID 1:镜像(可靠性)
- RAID 5:分布式奇偶校验(平衡)
影响: 今天所有数据中心都用RAID。
5. RISC-V开源指令集(2010-至今)
Patterson的新使命:
为什么需要RISC-V?
问题(2010年):
- ARM:需要授权费,受制于公司策略
- x86:Intel垄断,无法授权
- MIPS:专利限制
- 学术研究受限:无法自由实验新架构
Patterson的愿景:
“需要一个像Linux一样的开源指令集,任何人都能用、都能改进。“
RISC-V设计(2010-2014)
项目:
- 伯克利起源
- Patterson领导
- Krste Asanović等合作
设计原则:
- 简洁:基础指令集只有47条
- 模块化:可选扩展(浮点、向量、压缩指令)
- 可扩展:预留自定义指令空间
- 开放:BSD许可,商业友好
指令集层次:
RV32I: 32位基础整数指令集(47条)
RV64I: 64位扩展
扩展:
M: 乘除法
A: 原子操作
F: 单精度浮点
D: 双精度浮点
C: 压缩指令(16位)
V: 向量扩展
例子: RV32IMC = 32位 + 乘除法 + 压缩指令(适合嵌入式) RV64GC = 64位 + 通用扩展 + 压缩(适合服务器)
RISC-V的爆发式增长
生态系统(2024):
- 成员:3000+公司/大学
- 芯片出货:累计100亿+颗
- 应用:
- 嵌入式:物联网、MCU
- AI加速器:Google TPU、阿里平头哥
- 航天:NASA使用RISC-V
- 中国:避开ARM/x86依赖的战略选择
开源生态:
- 编译器:GCC、LLVM支持
- 操作系统:Linux、FreeBSD移植
- 模拟器:QEMU、Spike
- 开发板:SiFive、StarFive
Patterson的评论:
“RISC-V是我最自豪的工作。它将像Linux一样,成为全球创新的平台。”
🌍 对世界的深远影响
对处理器产业
RISC的统治地位:
- ARM:全球99%智能手机、平板(基于RISC)
- MIPS:路由器、嵌入式设备(数十亿颗)
- PowerPC:游戏机、嵌入式(RISC衍生)
- RISC-V:新兴开源生态
CISC的转型:
- x86:表面CISC,内部RISC
- Intel/AMD从Pentium Pro(1995)开始,内部将x86指令翻译为RISC风格的微操作(μops)
- 外部兼容性 + 内部效率
对教育
《Computer Architecture: A Quantitative Approach》:
- 6版(1990-2019)
- 影响:培养了三代架构师
- 方法论:定量评估成为行业标准
中文版: 《计算机体系结构:量化研究方法》,国内高校必读教材
配套教材: 《Computer Organization and Design》(组成与设计,本科教材)
- RISC-V版(2017):取代MIPS版,拥抱开源
对编译器技术
RISC推动编译器革命:
- 寄存器分配:Graph Coloring算法
- 指令调度:填充延迟槽
- 循环优化:软件流水线
- VLIW:Very Long Instruction Word(超长指令字,编译器控制并行)
今天: LLVM、GCC的优化技术很多源自RISC时代。
对功耗与移动设备
RISC的低功耗优势:
- ARM统治移动:简洁的架构 → 更低功耗
- x86在移动失败:Intel Atom、Medfield项目失败
数字:
- ARM芯片:年出货300亿+颗
- 智能手机、平板、物联网、智能手表
没有RISC,就没有移动计算革命。
对数据中心
节能需求:
- 数据中心功耗占全球2%
- ARM服务器崛起:AWS Graviton(基于ARM)
- RISC-V潜力:开源定制优化
🏆 获奖理由(通俗版)
ACM官方:“开创并系统化了RISC处理器设计方法论,以及建立了计算机架构的定量评估体系。”
更通俗的理解:
他们证明了:
- 少即是多:精简指令集比复杂指令集更快
- 数据胜过直觉:量化测试比拍脑袋设计更可靠
- 编译器+硬件:协同优化胜过硬件包揽一切
影响:
- 你的手机:ARM处理器(RISC)
- 你的路由器:MIPS处理器(RISC)
- 你的游戏机:PowerPC/ARM(RISC)
- 未来的芯片:RISC-V开源(RISC)
他们不仅发明了技术,更建立了整个领域的方法论——如何科学地设计处理器。
👤 个人生平与传奇
John L. Hennessy(1952-)
早年:
- 1952年:纽约出生,爱尔兰移民家庭
- 1975年:维拉诺瓦大学电气工程学士
- 1977年:纽约州立大学石溪分校计算机科学硕士、博士
学术生涯:
- 1977年:加入斯坦福大学
- 1981-1984年:开发MIPS处理器
- 1984年:创立MIPS Technologies(离开学术界2年)
- 1986年:回斯坦福继续教学和研究
斯坦福校长(2000-2016):
- 任期16年,斯坦福史上最长之一
- 推动创业文化、跨学科合作
- 在任期间:Google、Facebook等公司诞生
Google董事会(2004-2018):
- Alphabet董事长(2018-)
性格:
- 温和、谦逊
- 管理能力强(从技术到行政)
- “建设者”型人格
David A. Patterson(1947-)
早年:
- 1947年:伊利诺伊州出生
- 1969年:UCLA数学学士
- 1970年:UCLA计算机科学硕士
- 1976年:UCLA计算机科学博士
学术生涯:
- 1977年:加入伯克利
- 1980-1984年:RISC I/II项目
- 至今:伯克利教授(已退休但仍活跃)
RAID发明(1988): 除了RISC,还发明了RAID存储技术
Google:
- 2016-2017年:担任Google Distinguished Engineer
- 推动TPU(Tensor Processing Unit)设计
RISC-V(2010-至今): 70岁仍在推动开源芯片革命
性格:
- 直言不讳、批判精神
- 对商业公司(Intel、ARM)的垄断不满
- 理想主义:相信开源的力量
两人的互补
Hennessy:
- 斯坦福(硅谷核心)
- MIPS商业化成功
- 管理与商业头脑
Patterson:
- 伯克利(学术自由)
- RISC保持开放研究
- 技术理想主义
共同点:
- 同时期开发RISC
- 合著经典教材
- 推动定量方法论
- 图灵奖共同获奖
良性竞争: 斯坦福vs伯克利的竞争推动了RISC的快速发展。
💭 为什么他们值得纪念?
1. 他们改变了整个处理器产业
RISC的全面胜利:
- 1980年:CISC统治,RISC是学术实验
- 2024年:ARM年出货300亿,x86年出货3亿
- 比例:RISC占99%+
2. 他们建立了科学的方法论
之前: 处理器设计是”工程艺术”,凭直觉和经验
之后:
- 量化基准测试
- 性能公式指导设计
- Amdahl定律识别瓶颈
- 公开、可重复的评估
这种方法论超越了计算机架构,影响了整个工程领域。
3. 他们培养了几代工程师
教材的影响: 全球数百所大学使用,数十万学生受益
学生成就:
- Hennessy的学生:多人成为芯片公司CTO、大学教授
- Patterson的学生:推动云计算、AI芯片
4. Patterson推动了开源硬件
RISC-V的意义:
- 打破ARM/Intel垄断
- 让创新者不受制于授权费
- 全球协作的开源生态
类比: RISC-V之于芯片 = Linux之于操作系统
🔍 技术深度:流水线与冒险
流水线原理
类比:洗衣服
- 洗:30分钟
- 烘:40分钟
- 叠:20分钟
顺序执行: 一件衣服:30+40+20=90分钟 三件衣服:90×3=270分钟
流水线:
衣服1: 洗 烘 叠
衣服2: 洗 烘 叠
衣服3: 洗 烘 叠
总时间:30+40+20+30+30=150分钟(节省120分钟)
处理器流水线:
指令1: IF ID EX MEM WB
指令2: IF ID EX MEM WB
指令3: IF ID EX MEM WB
流水线冒险(Hazards)
1. 结构冒险(Structural Hazard): 硬件资源冲突
例子: 如果IF和MEM都需要访问内存,但只有一个内存端口:
指令1: IF ID EX MEM WB
指令4: IF 冲突!
解决: 分离指令内存和数据内存(哈佛架构)
2. 数据冒险(Data Hazard): 后续指令需要前面指令的结果
例子:
ADD R1, R2, R3 ; R1 = R2 + R3
SUB R4, R1, R5 ; R4 = R1 - R5(R1还没准备好!)
流水线视图:
ADD: IF ID EX MEM WB
SUB: IF ID (停) 等R1
解决方案:
- 前递(Forwarding):EX阶段直接把结果传给下一条指令
- 编译器插入NOP(MIPS做法)
- 乱序执行(现代处理器)
3. 控制冒险(Control Hazard): 分支跳转导致流水线中断
例子:
BEQ R1, R2, Label ; 如果相等,跳转
ADD R3, R4, R5 ; 下一条(可能不执行)
Label: ...
问题: BEQ在EX阶段才知道是否跳转,但下一条指令已经进入流水线
解决方案:
- 分支预测:猜测跳转/不跳转
- 延迟槽(MIPS):分支后的指令总是执行
- 推测执行:执行两个分支,确定后丢弃错的
RISC vs CISC性能对比
测试(1990年代): 同样程序,MIPS R3000 vs Intel 486
结果:
- 指令数:MIPS多30%(RISC指令简单)
- CPI:MIPS 1.2,486平均4.0(CISC复杂)
- 频率:MIPS 40MHz,486 25MHz(RISC简洁)
综合性能:
MIPS: 1.3N × 1.2 × 25ns = 39N ns
486: N × 4.0 × 40ns = 160N ns
MIPS快4倍!
📚 延伸阅读
经典教材
-
Hennessy & Patterson: “Computer Architecture: A Quantitative Approach”(第6版,2019)
- 研究生教材,必读
- 中文版:《计算机体系结构:量化研究方法》
-
Patterson & Hennessy: “Computer Organization and Design: The Hardware/Software Interface”(RISC-V版,2017)
- 本科教材
- 中文版:《计算机组成与设计:硬件/软件接口》
论文
-
Patterson & Séquin (1981): “A VLSI RISC”
- RISC I的开创性论文
-
Hennessy et al. (1982): “MIPS: A Microprocessor Architecture”
- MIPS架构首次发表
-
Patterson et al. (1988): “A Case for Redundant Arrays of Inexpensive Disks (RAID)”
- RAID技术论文
在线资源
-
RISC-V官网:https://riscv.org/
- 开源指令集文档、工具
-
伯克利RISC项目历史:https://www2.eecs.berkeley.edu/Pubs/TechRpts/1982/CSD-82-106.pdf
🌟 精神遗产
”简单是终极的复杂”(达芬奇名言,适用于RISC)
Hennessy和Patterson证明:
“优秀的设计不是无法再添加东西,而是无法再去掉东西。”
RISC哲学:
- 去掉不常用的指令
- 去掉硬件互锁
- 去掉复杂寻址
结果:更快、更省电、更易设计。
“用数据说话,不要拍脑袋”
定量方法论的核心:
- 测量,不要猜测
- 基准测试,不要cherry-picking
- 公开方法,接受审查
Patterson的名言:
“In God we trust. All others must bring data.”(除了上帝,其他人都得拿数据来)
“开放胜过封闭”
Patterson的RISC-V使命:
“ARM是商业成功,但它不属于社区。RISC-V将像Linux一样,属于全人类。”
开源硬件的未来: 从软件到硬件,开源正在改变世界。
总结语:John Hennessy和David Patterson是计算机架构的革命者。1980年代,他们用RISC理念挑战了CISC的统治,证明”少即是多”——精简的指令集配合流水线、编译器协同,能实现更高性能和更低功耗。今天,从你口袋里的智能手机(ARM)到家里的路由器(MIPS),99%的处理器基于RISC架构,是他们理念的胜利。
更深远的是,他们建立了计算机架构的科学方法论——《Computer Architecture: A Quantitative Approach》成为三代工程师的圣经,教会我们用数据而非直觉设计系统,用基准测试而非营销话术评估性能,用Amdahl定律而非盲目并行化提升速度。这种定量思维超越了计算机领域,影响了整个工程学科。
Patterson 70岁仍在推动RISC-V开源革命,延续着伯克利自由、开放的学术传统。Hennessy从技术到管理到商业,展现了斯坦福创新、务实的硅谷精神。两人的理念、合作、竞争,共同塑造了现代计算的基石。从MIPS到ARM到RISC-V,从教材到方法论到开源生态,他们的遗产将持续影响未来的芯片设计。
最后更新: 2024年12月 本文为图灵奖系列文章,旨在以通俗方式介绍计算机科学先驱的贡献
DISCUSSION
评论与补充