第 104 期·中文精读

大卫·帕特森:计算机体系结构与数据存储

David Patterson: Computer Architecture and Data Storage

回顾 RISC 与存储技术的演进,讨论硬件设计取舍、数据中心能耗与计算架构的未来。

官方音频00:00 / --:--
中文精读由 AI 基于原始访谈改写,非官方翻译,可能存在偏差或错误;表述以原音频与官方文稿为准。说明

今天全世界 99% 的新芯片,都建立在一个 40 年前被骂成"技术倒退"的想法上。提出这个想法的人,当年在学术会议上被同行围攻。

他叫大卫·帕特森(David Patterson),伯克利计算机科学教授,图灵奖得主。2020 年,他在 Lex Fridman 的播客里聊了两个多小时,从晶体管聊到摔跤,从指令集聊到婚姻,信息密度大得惊人。

这场对话里藏着两条线。一条是技术史:计算机怎么从占满几个房间变成塞进你口袋,为什么会走到摩尔定律的尽头,接下来的性能红利从哪儿来。另一条是人的线:一个工程师怎么在争议里坚持判断,怎么从摔跤垫上学到带团队的本事,以及他用来衡量一生的到底是什么。

计算机到底是什么东西

帕特森给了一个特别朴素的拆解。一台计算机从诞生到现在,内部一直是五个部件。

输入和输出,顾名思义,输入是说话或打字,输出是屏幕显示。存储器,就是集成电路,你把信息放进去,需要的时候它会还给你。处理器,这里面又分两块:控制单元是大脑,算术单元是肌肉。

他打了个比方,把计算机当成人体,算术单元负责数字运算,是身体;控制单元负责调度,是大脑。这个类比第一次听会觉得太随意,仔细想想确实贴切。处理器干的活,绝大部分是最基础的四则运算,加、减、乘、除,跟一个计算器没本质区别。

计算机的巧妙之处在于,它执行的运算极其简单,但每秒能执行几十亿次。我们能做的事情,是写出软件,把这些极其简单的指令组合成比人类做得更好的任务。(大卫·帕特森)

处理器和计算器的差别只有一个:计算机能做判断。这种能力拆到最底层,简单得让人意外,无非是"这个值是不是小于零""这个值是不是比那个大"。这些叫条件分支指令。

就是这几十条简单到不能再简单的指令,加上每秒几十亿次的执行速度,撑起了今天所有的软件、所有的 AI 系统。帕特森说,如果把 1950 年代的计算机先驱请回来,让他们看今天的指令集架构,他们会说:这不就是当年那套东西吗,没什么变化。

一个能训练出超越人类棋手的系统的机器,底层跑的还是加法和比较大小。

摩尔定律:一个人把未来几十年都预测对了

推动这一切的底层力量是摩尔定律。戈登·摩尔是伯克利的校友,1965 年他观察到一个规律:芯片上的晶体管数量每年翻一倍。到 1975 年他把周期修正成每两年翻一倍。

摩尔在那篇论文里做的事不止于此。他推演了后果:计算机将来会进汽车,会出现在你超市买的东西里。等于说,他不但猜中了球会落在哪儿,还把落点之后的世界描述了一遍。

当年的从业者因此对未来有一部分是笃定的。你相信摩尔定律,你大概就知道十年后会发生什么。

真正让帕特森震动的,是技术溢出到日常生活的那一刻。他记得开车经过旧金山湾区一座市民中心,看见公告栏上印着 URL,那串 www 开头的字符。普通人看了会想,这什么玩意儿,像外星文字。懂行的人看了想的是另一回事:这东西已经从极客的小圈子渗出来了,渗到真实世界了。

个人电脑刚普及时也一样。当杂志上开始出现 PC 广告,当报纸开始报道,那种感觉是:你早就知道它会来,但真来了还是被震了一下。

剥洋葱:计算机的抽象层级

计算机科学最核心的方法论之一,是抽象层。说白了就是假装。你在某一层工作,就只认这一层的接口,对下面发生什么一概不管,也假装不知道。

帕特森说,一台现代计算机里可能有十几二十层抽象。每一层都在履行一份合约:你只能用这些命令,你按规矩来,我保证忠实执行。

这像剥洋葱。你剥掉一层,里面是另一层;再剥,还有。学编程先学 Python,往下走学 C,再往下进到硬件层,一路能摸到摩尔说的那个晶体管,然后从晶体管一路往上,又能摸到最顶层的应用软件。

这个结构对学习者有特别的吸引力:你可以往任何一个方向钻,钻多深都行。

过去二十年,这条路上出现了一个重要变化。软件层面,开源成了主流,你用的很多软件,代码就摆在互联网上,程序员怎么写的你都能看。以前这条探索之路到硬件就断了,硬件是黑箱,芯片里怎么设计的你看不到。

最近十年,硬件也开始开源了。你可以一层一层往下看,看到底层的设计。帕特森说,这是了不起的时代,一个有兴趣的人真的能看清楚计算机内部到底在发生什么。

一场被骂成"技术倒退"的争论

要理解硬件怎么开源的,得先回到 1980 年代那场架。

软件跟硬件对话用的词汇表,术语叫指令集。里面的词叫指令,加、减、乘、除,把数据存进内存叫 store,取出来叫 load。这套东西从 1950 年代的商用计算机就有了,几十年没大变。

当时的常识是:指令集应该设计得功能强大。不要只有加减乘除,要有"解多项式""排序一个列表"这种一次能干很多活的复杂指令。逻辑是,指令越强,软件写起来越省事。

帕特森和斯坦福的约翰·轩尼诗(John Hennessy)当时都是助理教授,他们带着伯克利和斯坦福的人提出了相反的方案:指令集应该简单,叫精简指令集计算机,缩写 RISC。计算机圈的人喜欢把缩写读成词,所以就叫"risk"。

他们的理由跟摩尔定律直接相关。既然晶体管数量每两年翻一倍,硬件变化这么快,那就该把处理器设计得简单,缩短设计周期,让编译器去把复杂程序翻译成多条简单指令。

这个观点在当年被视为异端。帕特森回忆,那是在好几个学术会议上被激烈辩论的话题,有人说这是"退化",把指令变简单会让软件变差。

信不信由你,这事听起来像"谁在乎啊",但当年在好几个会议上被吵得不可开交。(大卫·帕特森)

反方的技术质疑其实很扎实:指令变简单了,同样一个程序要执行的指令条数就变多了。你要多执行 30% 到 50% 的指令,凭什么更快?

帕特森他们的回答是:简单指令执行得快,多执行一些,总体还是赚。最终结果是,指令多了大概三分之一到一半,但运行速度快了四倍。

把时间拆开看,争论的落点就清楚了。程序运行时间可以拆成三个因子相乘:程序执行了多少条指令,乘以每条指令平均花多少个时钟周期,再乘以每个时钟周期多长。当年的争论都落在第一个因子上,RISC 要执行更多指令,这没错。真正的差距出在第二个因子。

复杂指令集的实现方式,本质上是在硬件里塞了一个解释器,把复杂指令翻译成一串简单操作。用上这个解释器,一条指令可能要花十个时钟周期。而 RISC 的简单指令只要两个。五倍的差距就出在这儿。

这个公式一摆出来,争论就结束了。1982 年还是轩然大波,到 1984 年前后,大家开始说:行吧,技术上他们确实有道理。

这里藏着更深的教训。帕特森说,他们一开始说服不了人,部分原因就是拿不出一个公式。有了公式,争论从立场之争变成了算术题。他和轩尼诗后来在 1980 年代末写了一本教材《计算机体系结构:量化方法》,把这套思路系统化,整本教材从"这台机器有什么优缺点"的罗列,变成了可以测量、可以计算的框架。

这门学科由此从靠品味和直觉,变成了靠数字。

编译器为什么是那块拼图

RISC 能成立,有个前提条件经常被忽略:程序员得愿意放手,让编译器去处理指令层面的细节。

在 1980 年代之前,有些关键软件是没法用高级语言写的。操作系统这种最底层的软件,当年被认为必须用汇编语言写,因为高级语言效率太低,程序太大或者太慢。如果程序员还得手写汇编,那指令集设计得简单就是灾难,等于让人手动拼出一堆琐碎操作。

改变这一切的是 Unix。它证明了操作系统这种复杂度的东西,可以用 C 语言写出来。

一旦这件事成立,指令集就可以对程序员隐藏了。程序员写 C,编译器负责翻译成简单指令,一次翻译,之后每次运行都享受这个结果。这条链路一通,RISC 的逻辑就闭环了。

帕特森有个类比很妙。单音节词读起来比长词快,说也说得快,硬件同理。只要你别让读者多读太多词,你就能赢。

Intel 的反击:在硬件里做翻译

技术争论归技术争论,商业世界是另一套规则。帕特森说得很直白:当年有人反驳他们,说就算你的技术是对的,也没用,因为全世界的铁轨都是别人铺的。你的想法技术正确,商业上无量级。

当年的局面确实如此。一批系统公司放弃了自研的复杂指令集,但 Intel 没有。Intel 的 x86 指令集装在个人电脑里,而软件分发的方式,是把程序编译成那个指令集的机器码发出去。你拿不到源代码,拿到的是编译后的二进制。指令集本身就是巨大的资产,每年上亿台 PC 的软件生态都锁在上面。

Intel 的做法很聪明:在芯片硬件里加一道翻译工序,把这些复杂指令在运行时翻译成类似 RISC 的操作,在吉赫兹的时钟频率上跑。这样 RISC 阵营想出来的任何好点子,Intel 都能用,同时还保持着对那个价值巨大的 PC 软件库的兼容。

结果就是,复杂指令集在商业上赢了 PC 时代,RISC 的思想在技术上演化成了 Intel 芯片的内核。

这段历史里有个现象:一个技术方案能不能赢,考验的往往是它跟已有生态的博弈能力,技术正确性只是入场券。好的想法输给先来的想法,这在人类文明史里比比皆是。计算机领域还算幸运,至少有一部分好想法活下来了。

RISC-V:一个意外长出来的开源指令集

2010 年,帕特森在伯克利决定做一套新指令集,吸取 1980 年代那批 RISC 架构的教训。团队里有克里斯托斯·阿萨诺维奇(Krste Asanović)、安德鲁·沃特曼(Andrew Waterman)等人,帕特森自己更多是导师角色。他们把它命名为 RISC-V,第五代,致敬 1980 年代伯克利做过的四代 RISC 项目。

RISC-V 的核心指令集跟 1980 年代那批最简单的架构非常像。最大的不同在于它是开放的。

这里要区分两个概念,很容易搞混。RISC-V 的规范像一本教科书,定义的是一个接口。硬件的实现方式,是用类似 C 的语言(比如 Verilog)写出来,再翻译成硬件电路。这些实现是开源的,就像 Linux 的 C++ 代码摆在网上一样,任何人都能看、能用。

这个开源的决定其实是个意外。团队最初只是给自己的研究用,按伯克利的惯例用了 BSD 许可证。别的学校用起来没有顾虑。到了 2014 年,开始有工业界的人抱怨:你们怎么秋季学期和春季学期用的指令集不一样?

帕特森他们的第一反应是:我们用自己的指令集,关你什么事?

聊下去才发现,工业界一直在找一个开放的指令集架构,找很久了,偶然发现伯克利这套,觉得正合适。团队意识到这个需求真实存在,才开始认真推动这件事。

数字很

数字很能说明问题。2015 年 1 月第一届 RISC-V 年会,50 人参加。2019 年 12 月那届,1700 人。他们还成立了 RISC-V 基金会,因为大学擅长开创,不擅长维护,Linux 有 Linux 基金会,这个模式可以照搬。

帕特森对未来的判断是:25 年后,RISC-V 有可能成为最流行的指令集架构。它本身设计得不错,开放、免费,没有理由大家不用。Linux 在过去二十年怎么超过竞争对手的,同样的逻辑会在硬件上重演。

三个市场,三种打法

RISC-V 要替代现有的格局,得看具体市场。帕特森把计算市场分成三块。

云。就是阿里巴巴、亚马逊、谷歌、微软那些巨型数据中心,动辄几万台服务器,全球可能有上百个这样的中心。这块今天几乎百分之百是 x86。

手机和笔记本。手机每年大概 15 亿部,PC 每年大概 2 亿台,而且 PC 销量在萎缩。手机这块由 ARM 主导。

物联网。各种嵌入式设备,你车里的、微波炉里的,到处都是。

这三块的差别,落点在软件栈由谁控制。

云这块,软件栈由那几家大公司自己决定。他们完全可以选择 RISC-V,只是目前还没这么做。

手机这块最麻烦。安卓和苹果都提供软件商店,全世界任何开发者写的应用,编译成二进制之后发到用户手机上。这叫二进制兼容,指令集的惯性因此极强,换架构的成本极高。

物联网这块机会最大。嵌入式设备不通过商店分发软件,软件栈由设备厂商控制,没有云或手机那样的强势玩家,授权成本低,指令还能按需定制。所以大家普遍认为 RISC-V 的突破口在这里。

有个容易混的点值得说清楚:ARM 本身就是 RISC 架构,全称 Advanced RISC Machine,是专有的 RISC。1980 年代伯克利做 RISC 研究的时候,ARM 的创始人读了他们的论文,受了很大影响。ARM 是 RISC 思想的商业赢家,现在全世界每年几十亿颗芯片用它的设计。

苹果为什么跑得更快

同样用 ARM 架构,苹果、高通、三星的手机性能不一样,苹果明显领先。帕特森解释了原因。

ARM 开创了一种新的商业模式。它把指令集授权出去,给两条路:要么直接用 ARM 写好的实现,付一笔钱;要么花几千万美元买"自己设计"的授权,指令集还是 ARM 的,但芯片设计你自己做。

苹果买的是后一种。它组建了一支很强的芯片设计团队,收购了有经验的公司和人,自己做硬件设计。指令集规范跟大家一样,硬件实现比竞争对手高效得多。这就是 iPhone 通常比其他手机快的原因。

这里能看出一个规律:指令集是公共的,性能差距出在实现上。同样的乐谱,不同的乐团,演奏水平天差地别。

小即是美

问帕特森 RISC 最漂亮的地方是什么,他的回答是"小即是美"。

他说工程里有个诱惑,把事情搞复杂很容易,搞简单反而难。一个简单优雅的方案,往往比复杂方案更难想出来。

RISC-V 有个具体的设计他特别欣赏。团队想出了一个"核心子集"的思路:大概 40 条指令,所有 RISC-V 软件都能在这 40 条上跑。然后提供若干可选的扩展指令集,需要的时候加上去加速,不需要就不加。

这个思路在教育上价值巨大。讲计算机,你只需要讲 40 条指令,不用讲几千条。如果有人发明了某种疯狂的新技术,比如生物计算,你想要一套简单的指令集,直接实现这 40 条核心指令,上面就能跑很有意思的程序。

对比一下专有指令集的做法:一旦加了新指令,它就变成必选项,之后所有处理器都得支持。帕特森打了个比方,像人年纪大了会发福,指令集也是越老越臃肿。

RISC-V 允许你一直保持青少年的体型,只有真要用某个功能才加进去,而不是没得选、只能跟着一起长胖。

帕特森还说过一个对比:如果把 1950 年代的先驱请回来,给他们看今天的指令集架构,他们能看懂,会说跟当年差别不大。造芯片的工艺已经精密到线宽比光的波长还窄,而软件执行的命令,几十年基本没变。

底层就是那四五十条指令,加上每秒几十亿次的执行速度,居然足以撑起人工智能。这件事帕特森自己都觉得惊讶。

摩尔定律真的慢了,而且这次是真的

摩尔定律还活不活,帕特森跟芯片设计界的传奇人物吉姆·凯勒(Jim Keller)在公开场合有过分歧。

帕特森的说法很直接。戈登·摩尔当年给的是一个量化预测,晶体管数量每两年翻倍,这是可以查证的。那就查:六年前的 DRAM 芯片,今天应该有八倍的晶体管。六年前的 Intel 处理器,今天应该有八倍。两个答案都是没有。

他说这个问题有个传播上的麻烦。半导体行业几十年来真金白银地投入设备,就是为了让摩尔定律成真,所以在很多人心里,摩尔定律就等于半导体技术在进步。当他说"摩尔定律不再成立",听的人会理解成"技术停止进步了",这对 Intel 这样的公司是伤害。

所以他改口说"摩尔定律在放缓"。这话听着温和,意思是一样的:如果原本是每两年翻倍,现在放缓了,那就是不成立了。

他提到 Intel 曾经重新定义过摩尔定律,把重点放在单个晶体管的成本每两年减半上,晶体管数量翻倍这回事被淡化了。帕特森说这不是摩尔当年说的,这是改写。而且业内很多人告诉他,最近几代工艺越来越复杂,晶体管的实际成本反而在上升,连这个推论都不一定成立。

他把这种重新定义称为"修正主义历史"。摩尔定律的美感在于它像 E=mc² 一样简洁,一句话,含义惊人,所以才有那么大的影响力。改定义就毁掉了这个美感。

凯勒的判断是摩尔定律还没死。帕特森的评价是:这是营销。

他也理解对方的处境。凯勒要对抗的是"半导体技术冻结在 2019 年"这种印象,因为如果 Intel 的员工真信了这个,那对公司是灾难。帕特森说他从没说过技术停止进步,他说的只是晶体管翻倍这件事不再成立。

这场争论之所以拧巴,是因为摩尔定律被赋予了太多超出它本身的含义。它变成了一个行业的精神图腾,一个营销资产。帕特森坚持要把它还原成一个可以查证的数字。

作为教育者,这有点像政治里的"各人有各人的事实"。摩尔定律曾经是清晰的,卡弗·米德把摩尔的图放在对数坐标上,是一条直线。那就是摩尔定律的定义。(大卫·帕特森)

他还有一层担忧。他说现在很多计算机科学圈的人并不知道这件事正在发生,不知道我们进入了一个需要在底层大改、会波及整个软件栈的时代。如果你的服务器明年拿到的只比今年快一点点,你得知道这事。如果你的软件路线图还假设计算机每年会变快,那这个假设已经不成立了。

在他看来,把"摩尔定律在放缓"这句话反复说出去,是一种提醒,让整行业重新安排自己的优先级。

性能红利从哪儿来:加速器

摩尔定律慢下来,后果是什么?

帕特森描述了一个很多人还没意识到的事实。1980 到 1990 年代,计算机性能每 18 个月翻一倍。那时候你会把一台完好的电脑扔掉买新的,因为一两年后的机器快太多。

现在不是了。帕特森说自己只有笔记本坏了才换,硬盘坏了或者屏幕坏了。这在三十年前是不可想象的。

通用处理器的性能提升,从每 18 个月翻倍,掉到了大概每 20 年翻倍。这个落差的量级,很多人还没建立起概念。

那性能从哪儿来?帕特森他们的判断是:加加速器。针对特定领域做专门的硬件,只在那个领域里快,但快很多。

巧合的是,同一时间机器学习爆发了。帕特森说 AI 有两条路线之争:一条是从上往下写规则,一条是从数据里推断规则。过去十年,后一条赢了。

机器学习的核心运算是什么?矩阵乘法。这对计算机设计者是天大的好消息,因为矩阵乘法他们知道怎么做得非常快。

于是就出现了这样的局面:通用处理器慢下来了,但我们在加机器学习的加速器,本质上就是把矩阵乘法做得比通用处理器高效得多。而这恰好赶上了软件世界的转向,所谓 Software 2.0,用数据来"编程",而不是程序员一行行写逻辑。

帕特森特别强调了一个风险。做领域专用硬件,最大的担心是:你押的那个领域重要吗?万一你只让世界上 5% 的人受益呢?

机器学习不是这样。它被用在图像识别、语言翻译、游戏、数据库,一路渗透进软件栈的各个角落。领域专用,但因为吃的是数据,适用范围反而极广。

这个时机好得像是天赐。帕特森和轩尼诗在图灵奖演讲里用了一个标题:新的黄金时代。他们说这十年会像他们当年做 RISC 时一样激动人心,因为软件怎么构建、怎么运行,正在被根本性地改变。

他还描绘了未来软件的形态。大块的软件栈,比如用户界面,还是跑在那套 RISC 指令上;真正吃算力的那一小块代码,行数不多,但跑起来极耗时钟周期,会被卸载到加速器上。这就是所谓领域专用加速器发挥作用的地方。

做硬件不带软件,会死

帕特森讲了一个硬件行业最致命的错误:做出了很棒的硬件,但没把编译器带上来。

他说这话是有数据的。机器学习领域两年前根本没有一套公认的基准测试。他们搞了一个叫 MLPerf 的评测套件,结果很残酷:没在软件栈上投入的公司,跑 MLPerf 跑不动;投了的,跑得好。

然后市场开始清洗。英特尔几年前收购了一家叫 Nervana 的公司,一直不公布 MLPerf 成绩,这本身就可疑。2020 年英特尔宣布砍掉 Nervana 产品线,同时花 20 亿美元收购了以色列的 Habana,那家公司的加速器 MLPerf 成绩很好。英特尔未来的产品线会用 Habana 的芯片,硬件软件一起。

这就是计算机体系结构领域的老规矩:大家砸几十亿美元在市场里厮杀,看谁赢。不完美,但能把事情筛出来。

MLPerf 这件事还引出一个更宏观的观察。帕特森说,基准测试的意义在于让比较变得公平。工程师不怕输,怕的是不公平。如果对手靠营销话术吹牛影响了销量,那才让人愤怒。有个公平的比较,就算你没拿第一,你也能接受,还会对同行点个头:他们做得比我们好。

RISC 年代也是这样。当年各家的 RISC 架构互相攻击,你说你的性能好,对方说你是骗子,市场一团乱,谁都不敢买。后来大家坐下来,对手也好、竞争者也好,共同定了一套叫 SPEC 的基准测试,能公平比较谁快谁慢。结果市场被瓜分了这件事没发生,整个市场反而变大了。

他还提到一个变化:现在社交媒体让吹牛的成本变高了。你发一个误导性的营销材料,很快就有人在网上指出你的问题。二十年前可以糊弄过去,现在不行。这个压力反而让工程师文化占了上风。

不过他也很清醒,这种开放只发生在某些领域。他自己工作的自动驾驶领域,营销机器仍然很强,开源和基准测试的氛围差得多。

有意思的是他提到计算机视觉的历史。早年间做视觉的研究者根本没有基准测试,每个人用自己的图,展示自己的算法多好,没法比较。他的学生戴维·马丁(David Martin)在博士论文阶段做了一套图像基准,让一群研究生标注图片,然后跑不同算法看谁好。据他所知这是计算机视觉领域最早的基准测试,早于后来催生 ImageNet 的那条线。

后来视觉圈"信了教",有了 ImageNet,多伦多的团队靠它赢下比赛,然后整个世界变了。帕特森说这其实是个吓人的门槛:进入基准测试的世界,你必须真的强才能参与,不能只是自己觉得自己世界第一。

他说了句挺重的话:我不知道没有基准测试的领域,怎么判断自己在进步。

MLPerf 今天已经有十所大学、五十家公司参与,是衡量机器学习性能的事实标准,而它两年前根本不存在。这个从无到有的速度,本身就说明了行业对公平标尺的饥渴。

量子计算:别指望它救急

聊到量子计算,帕特森的态度很务实。

他说自己一直有个想法:希望退休之前不用教这门课。每次讲摩尔定律放缓、要转向领域专用加速器,总有人问量子计算怎么样。之所以被反复问,是因为新闻里天天有。

他提醒两件事。第一,量子计算不是马上就到。美国国家工程院和计算研究协会出过两份报告,做了坦率评估,结论都是:可纠错的量子计算,还有十年。他把它类比成核聚变,一直有人兴奋,真搞成了对世界是巨大利好,他很高兴有人在研究,但那不是眼前的事。

第二,就算成了,它也是大科学装置。要在微开尔文、接近绝对零度的环境里运行,有辆卡车开过产生振动就不工作了。所以它会待在数据中心里,不会有量子手机。

他的判断是二三十年内的事。而且它是一组特定应用,不是通用计算,很多事上传统计算机还会长期做得更好。

他说了句很清醒的话:他钦佩那些做 30 年远期项目的人,但这行变化太快,他自己不够聪明,看不清楚 30 年后问题会是什么样。十年已经够难了。

他还补充了一个关于预测的趣事。1995 年有人请他预测微处理器的未来,他看过太多为了娱乐效果而故意夸张的预测,于是给了一个反常的答案:到 2020 年,一切看起来会和现在非常熟悉。事后看,那篇文章里说的基本都应验了。指令集还是那套老的,本身没太大变化。放在计算机速度狂飙的背景下,这个"不变"才是最大胆的预测。

这个预测后来还有个小注脚。他和轩尼诗 2017 年拿图灵奖,距他们做 RISC 的工作过去三十多年,而业界公认的最佳指令集设计方式,依然是当年那套看起来没什么变化的东西。晶体管多了一百万倍,想法没怎么变。

教书的回报

帕特森在伯克利教了 40 年。退休派对上他回看了一些事。

有个流行的印象:教授课讲得烂,学生会想,这人一定是研究做得特别好,不然怎么会在这儿。帕特森说他的经验完全相反。

他提到一张照片,上面是系里拿过校级杰出教学奖的五个人,那是很高的荣誉。五个人全进了美国国家工程院,其中三位拿了图灵奖,计算机领域的最高奖。教学和研究在这里高度相关。真正成功的人,往往做什么都成功。

他引了费曼的例子。普林斯顿附近有个高等研究院,爱因斯坦那批人都在那儿,没有教学任务,像大学的天堂。费曼被邀请时觉得这是个糟糕的主意。他认为,站上讲台,把东西讲给学生听,被学生追问"为什么这是对的",会逼着你自己停下来重新想。研究和教学是互相激发的。

被问到最喜欢教什么,帕特森没给具体知识点。他说的是那种时刻:你把一件别人不懂的事讲明白了,对方突然懂了,你看着他眼里的灯亮起来。他说很多人以为自己不喜欢教书,来客座讲一次课,就被这个瞬间钩住了。

看着灯亮起来,是一种实实在在的满足。(大卫·帕特森)

他还讲了教和研互补的另一层。在美国这套研究型大学的制度里,好学校能吸引到顶尖的教师,正因为他们既能做研究又能教书。尤其在变化快的领域,这意味着讲课的人手里握着前沿的东西。做研究的人如果不讲课,很容易跟教学的现实脱节;讲课的人如果不做研究,很快就讲不出新东西。

摔跤垫上学到的东西

帕特森在大学练摔跤,在 UCLA,也在 El Camino 社区学院。有意思的是,他同时被 UCLA 录取了,却先去了社区学院。他妈妈问为什么,他以为是女朋友的原因,他妈妈说是女朋友,也因为你觉得那支摔跤队很强。他说他们确实很强,拿过加州州冠军,还在一次比赛里赢了 UCLA,一支只有大一和大二学生的社区学院队赢了 UCLA。

他说摔跤对他影响巨大。他是 12 月 1 日的生日,几乎永远是班上最小的,发育也晚,所以他一直是最小的那个。高中时他选的是书呆子课程,但同时在练摔跤,摔跤给了他身体上的自信。到了社区学院和大学,他长高了,这份自信留了下来。

他说这种自信会迁移。到了七十多岁,街上要是有人欺负女性,他不会袖手旁观,会站出来管。研究工作里也一样,有人说了不实的话,他觉得有责任站出来,就像在街上一样。

他还从教练那儿学到另一样东西。摔跤是个人项目,一对一,理论上每个人可以只管自己。但他的教练相信,如果队伍凝聚起来互相支持,整体会更成功。帕特森把这套本事带进了学术生涯。很多人评价他最强的能力之一,是能把一大批教授、研究生组织起来,围绕一个共同目标往前推,而且常常成功。

他觉得这种"敢正面交锋"的性格也来自摔跤。他不回避争论,反而享受辩驳的过程。RISC 那几年,他站在台上被同行围攻,台下也没退缩。这种劲头跟垫子上那套是同一回事。

他还讲了一个带点浪漫色彩的说法:摔跤是身体接触的运动,练过的人一般更敢上前一步。他把这一点也归功于摔跤,说自己从来不怕跟人正面辩论。

怎么衡量一生

访谈快结束时,Lex 问了个大问题:如果给"过得好的一生"设计指标,会是什么?

帕特森先引了朋友兰迪·卡茨的话:人生谢幕时,衡量的不是银行账户里有几个零,是《纽约时报》讣告有几英寸长。

然后他说了句老话:没人临死前后悔在办公室待的时间太少。

他回看自己的职业生涯,能数出半打到一打让他骄傲的事,很多并不是论文或科研成果。家人,跟妻子结婚超过五十年,孩子,孙辈,这些最珍贵。教育上做过的事,写的书、开的课,他骄傲。他还帮过一些弱势群体,做出过实际效果。

他说自己发过几百篇论文,其中像 RISC、RAID 那样的他骄傲,但很多论文,现在回头看,未必那么重要。那些一辈子追经费、追论文数量的人,到最后大概不会因为这些被记住。

他提到刚拿到伯克利 offer、还没去报到时读的一本书,作者采访了各行各业的人。他从书里得到的结论是:那些对自己所做的事感觉良好的人,是影响了别人的人,而不是追逐转瞬即逝之物的人。所以他入职时就认定,将来珍视的不会是论文,而是跟人长期的关系。他说这个判断是对的。

你共事的人,你能影响的人,你能帮到的人,这些才是职业生涯结束时让你感觉良好的东西,而不是那些转瞬即逝的。(大卫·帕特森)

最后他主动分享了一个东西,说经常有人问他结婚五十年有什么秘诀。他给了九个字的口诀:我错了,你对,我爱你。

他强调九个字必须全说。不能说完"我错了你对"就加一句"你个混蛋"。坦诚承认自己犯了错、对方是对的,并且你爱对方,这三件事能跨过关系里的大部分坎。

一个设计了影响全世界芯片的指令集的人,最后留给听众的方法论,是这九个字。

RAID 那篇论文

访谈里还有一段常被忽略的内容,关于 RAID。

1988 年,帕特森和同事兰迪·卡茨(Randy Katz)、博士生加思·吉布森(Garth Gibson)合写了一篇论文,标题是《廉价磁盘冗余阵列的案例》,这就是 RAID 的起点。那篇论文后来改写了整个存储行业。

它的起点很偶然。卡茨当时有一台早期的苹果 Macintosh,那个年代一切都靠软盘,容量小得要命,你干一点活就得不停地把软盘插进拔出。后来苹果开始给机器配硬盘,磁介质存储,能记住信息。卡茨看着 Mac 旁边那块硬盘,问了一句:这些是全新出来的小东西,以前给大型机配的硬盘大得像洗衣机,现在这个是书本大小,我们能用它做什么?

那时候伯克利刚做完第四代 RISC 项目,处理器快了很多,存储成了瓶颈。他们想到的办法是把很多块为个人电脑做的小硬盘拼在一起,替换掉那种洗衣机大小的大硬盘。40 块小盘,比一块大盘便宜,因为它们是按 PC 的量产规模做的;速度也可能更快,因为 40 块可以并行。

论文初稿寄给一位在 IBM 工作的伯克利校友。对方回了一句:这些都很好,可靠性怎么办?你有 40 块 PC 品质的盘,每一块都不如 IBM 那种大型机硬盘。IBM 当年统治着存储市场。他们算了算,如果照这样搭,原本一年坏一次,现在会变成两周坏一次。

于是他们在"性能"这个出发点之外,加进了"冗余"。名字里的 R 就是 redundant:一堆廉价小盘组成的阵列,外加额外的副本,坏掉几块也不会丢全部信息。算下来,只要多放几块盘,这个阵列不但更快、更便宜,可靠性还比一台大型机硬盘高,因为可以容忍好几块同时坏,而大型机那块坏一块就全完。

被问到当年有没有预见 RAID 会统治存储,帕特森说自己天性乐观,但更重要的依据是趋势。回看硬盘的历史,体积从洗衣机大小一路缩小,出货量流向体积小的那一端,因为 PC 在那儿。8 英寸、5 英寸、3 英寸,直径越做越小。技术力量站在他们那边,商业上会不会兑现当时不确定,但学术界相信技术该赢,这次它赢了。

三十年后存储领域发生了什么?最大的变化是从磁盘转到了闪存。以前的电脑开机嗡嗡响,那是磁盘在转,每秒 60 圈,像黑胶唱片,有个针在上面读。最近十年,越来越多的存储改用半导体的闪存,手机全用闪存,多数笔记本用闪存,嵌入式设备全用闪存。云里还在用磁盘,因为大规模下磁盘更经济,但云是两者混用。

帕特森补了一句心理层面的观察。人从最早就在担心计算的可靠性。计算出错的代价相对轻,机器出错了,程序重跑一遍就行。存储出错的代价很重,重要信息丢了你会发疯。所以冗余的思路,哪怕介质换成了更可靠的闪存,依然流行。你不做备份、不做冗余,就是在冒大险。

这场对话给技术人的几条实用建议

  • 当你跟主流意见相左时,先想办法把你的论证变成一个可以量化的公式。帕特森他们说服不了人,直到把程序运行时间拆成三个因子相乘。立场之争很难赢,算术题可以。
  • 做硬件或者任何底层系统,一定要把软件栈一起带上来。MLPerf 的成绩单已经把这条规律验证过了:只做硬件的创业公司正在成批倒闭。
  • 选技术方向时,看技术趋势是不是站在你这边。帕特森判断 RAID 会赢,依据是硬盘在变小、出货量在往 PC 那边走,这是可以观察的趋势,不是信念。
  • 如果一个领域还没有公认的基准测试,那这个领域的"我很强"基本都是自说自话。要么参与建立基准,要么至少用别人的基准检验自己。
  • 不要用"摩尔定律还活着"来安慰自己。去查实际数字:六年前的芯片,今天有没有八倍晶体管。如果没有,就该重新审视你的软件栈是不是假设了免费的性能增长。
  • 评估一个新技术的时间表时,看权威机构的坦率评估,不看新闻热度。量子计算的两份国家级报告都说可纠错版本还有十年,这个判断比任何发布会的口径都可靠。
  • 如果你在带团队,想想摔跤教练那套逻辑:个人项目也能靠凝聚团队赢。帕特森把大规模组织教授和研究生的能力,直接归功于这件事。
  • 衡量自己的职业时,隔几年做一次帕特森式的盘点:哪些事你真心骄傲,哪些只是数量。答案往往会指向人,而不是产出。

本集资源与出处