图灵奖得主、计算机体系结构宗师David Patterson与John Hennessy认为,未来将是计算机体系结构的黄金十年。新近一期的ACM通讯上刊登了两人合著的论文《计算机体系结构的新黄金时代》,阐述计算性能如何实现再一次飞升。
计算机体系结构将迎来一个新的黄金时代!
2017年3月,计算机架构领域两位大腕级人物David Patterson与John Hennessy在斯坦福大学发表演讲时如是说。
当时,Hennessy最知名的title是斯坦福大学前任校长,而Patterson则是伯克利的退休教授。他们1990年合著出版的《计算机体系架构:量化研究方法》被誉为领域“体系结构圣经”,培养和指导了无数处理器设计人才。
John Hennessy(左) 和David Patterson 拿着他们合著的《计算机体系架构:量化研究方法》,照片的拍摄时间大约是1991年。来源:ACM
当时,由GPU推动的深度学习浪潮已然兴起,谷歌推出了TPU,AI芯片创业公司林立,芯片市场群雄并起,连做软件的人都能感到从硬件行业迸发出的热气。
很快,一年后,已经出任谷歌母公司Alphabet董事长的Hennessy和已经加入谷歌TPU团队的Patterson又站在了一起,这次是为了纪念他们共同荣获2017年的图灵奖。
他们的图灵奖演讲题目叫做《计算机体系结构的新黄金时代》(A New Golden Age for computer Architecture),两人回顾了自20世纪60年代以来计算机体系结构发展历史,并展望人工智能为计算机架构设计所带来的新的挑战和机遇。
在那次的图灵演讲中,David Patterson与John Hennessy还提到了软件设计也能为计算机硬件架构带来灵感,改善软硬件接口能为架构创新带来机遇。“在摩尔定律走向终点的同时,体系结构正在闪耀新的活力——以TPU为代表的领域特定架构 (Domain Specific Architectures, DSA) 兴起,但CPU、GPU、FPGA仍然有用武之地,最终,市场会决定胜者。
2019年2月出版的Communications of the ACM,刊登了两人的署名文章“A New Golden Age for computer Architecture”,在图灵演讲的基础之上进一步完善思想,并用文字将他们的洞见更加清晰地呈现。
“计算机体系结构领域将迎来又一个黄金十年,就像20世纪80年代我们做研究那时一样,新的架构设计将会带来更低的成本,更优的能耗、安全和性能。”
下面是新智元对文章的编译。
不能牢记过去的人,必定重蹈覆辙。——George Santayana,1905年
软件通过称为指令集架构(ISA)的词汇表与硬件实现交互。在20世纪60年代初,IBM共推出了四个彼此不兼容的计算机系列,每个计算机系列都有自己的ISA、软件堆栈和输入/输出系统,分别针对小型企业、大型企业,科研单位和实时运算。 IBM的工程师们,包括ACM图灵奖获奖者Fred Brooks在内,都认为能够创建一套新的ISA,将这四套ISA有效统一起来。
这需要一套技术解决方案,让计算8位数据路径的廉价计算机和计算64位数据路径的昂贵计算机可以共享一个ISA。数据路径(data path)是处理器的“肌肉”,因为这部分负责执行算法,但相对容易“加宽”或“缩小”。当时和现在计算机设计人员共同面临的较大挑战是处理器的“大脑”,即控制硬件。受软件编程的启发,计算机先驱人物、图灵奖获得者莫里斯·威尔克斯提出了简化控制流程的思路。控制部分被指定为一个二维数组,他称之为“控制存储”。数组的每一列对应一条控制线,每一行都是微指令,写微指令的操作称为微编程。控制存储包含使用微指令编写的ISA解释器,因此执行一个传统指令需要多个微指令完成。控制存储通过内存实现,这比使用逻辑门的成本要低得多。
此表列出了IBM于1964年4月7日发布的新360系统的四种型号的指令集。四种型号之间。数据路径相差8倍,内存容量相差16倍,时钟速率相差近4倍,而性能相差50倍,其中最昂贵的机型M65具有较大空间的控制存储,因为更复杂的数据路径需要使用更多的控制线。由于硬件更简单,成本较低的机型M30的控制存储空间最小,但由于它们需要更多的时钟周期来执行360系统指令,因此需要有更多的微指令。
通过微程序设计,IBM认为新的ISA将能够彻底改变计算行业,赢得未来。 IBM统治了当时的计算机市场,55年前诞生的IBM大型机,其后代产品现在每年仍能为IBM带来100亿美元的收入。
现在看来,尽管市场对技术问题做出的评判还不够完善,但由于硬件系统架构与商用计算机之间的密切联系,市场最终成为计算机架构创新的是否成功的关键性因素,这些创新往往需要工程人员方面的大量投入。
集成电路,CISC,432,8086,IBM PC。当计算机开始使用集成电路时,摩尔定律意味着控制存储可能变得更大。更大的内存可以运行更复杂的ISA。1977年,数字设备公司(Digital Equipment)发布的VAX-11/780机型的控制存储大小达到5120 word×96 bit,而其之前的型号仅为256 word×56 bit。
一些制造商选择让选定的客户添加名为“可写控制存储”(WCS)的自定义功能来进行微程序设计。最盛名WCS计算机是Alto,这是图灵奖获得者Chuck Thacker和Butler Lampson以及他们的同事们于1973年为Xerox Palo Alto研究中心设计制造的。它是首要台个人计算机,使用首要台位映射显示器和首要个以太局域网。用于支持新显示器和网络的设备控制器是存储在4096 word×32 bit WCS中的微程序。
微处理器在20世纪70年代仍处于8位时代(如英特尔的8080处理器),主要采用汇编语言编程。各家企业的设计师会不断加入新的指令来超越竞争对手,通过汇编语言展示他们的优势。
戈登·摩尔认为英特尔的下一代指令集架构将能够延续英特尔的生命,他聘请了大批聪明的计算机科学博士,并将他们送到波特兰的一个新工厂,以打造下一个伟大的指令集架构。英特尔最初推出8800处理器是一个雄心勃勃的计算机架构项目,适用于任何时代,它具有32位寻址能力、面向对象的体系结构,可变位的长指令,以及用当时新的编程语言Ada编写的自己的操作系统。
这个雄心勃勃的项目迟迟不能退出,这迫使英特尔紧急改变计划,于1979年推出一款16位微处理器。英特尔为新团队提供了52周的时间来开发新的“8086”指令集,并设计和构建芯片。由于时间紧迫,设计ISA部分仅仅花了3周时间,主要是将8位寄存器和8080的指令集扩展到了16位。团队最终按计划完成了8086的设计,但产品发布后几乎没有大张旗鼓的宣传。
英特尔很走运,当时IBM正在开发一款旨在与Apple II竞争的个人计算机,正需要16位微处理器。 IBM一度对摩托罗拉的68000型感兴趣,它拥有类似于IBM 360的指令集架构,但与IBM激进的方案相比显得落后。IBM转而使用英特尔8086的8位总线版本处理器。IBM于1981年8月12日宣布推出该机型,预计到1986年能够卖出25万台,结果最终在全球卖出了1亿台,未来前景一片光明。
英特尔的8800项目更名为iAPX-432,最终于1981年发布,但它需要多个芯片,并且存在严重的性能问题。该项目在1986年终止,此前一年,英特尔将寄存器从16位扩展到32位,在80386芯片中扩展了8086指令集架构。摩尔的预测是正确的,这个指令集确实和英特尔一直存续下来,但市场却选择了紧急赶工的产品8086,而不是英特尔寄予厚望的iAPX-432,这对摩托罗拉68000和iAPX-432的架构师来讲,都是个现实的教训,市场永远是没有耐心的。
从复杂指令集计算机到精简指令集计算机。 20世纪80年代初期,对使用大型控制存储中的大型微程序的复杂指令集计算机(CISC)的相关问题进行过几项调查。Unix的广泛应用,证明连操作系统都可以使用高级语言,所以关键问题就是:“编译器会产生什么指令?”而不是“程序员使用什么汇编语言?”软硬件交互手段的显著进步,为架构创新创造了机会。
图灵奖获得者John Cocke和他的同事为小型计算机开发了更简单的指令集架构和编译器。作为一项实验,他们重新定位了研究编译器,只使用简单的寄存器-寄存器操作和IBM 360指令集加载存储数据传输,避免了使用更复杂的指令。他们发现,使用简单子集的程序运行速度提高了三倍。 Emer和Clark发现,20%的VAX指令需要60%的微代码,仅占执行时间的0.2%。Patterson发现,如果微处理器制造商要遵循大型计算机的CISC指令集设计,就需要一种方法来修复微代码错误。
Patterson就此问题写了一篇论文,但被《计算机》期刊拒稿。审稿人认为,构建具有ISA的微处理器是一个糟糕的想法,因为这需要在现场进行修复。这让人怀疑,CISC 指令集对微处理器的价值总归有多大。具有讽刺意味的是,现代CISC微处理器确实包含微代码修复机制,但这篇论文被拒的主要结果是,激励了他开始研究面向微处理器的精简指令集,即复杂度较低的指令集架构,以及使用精简指令集的计算机(RISC)。
这些观点的产生,以及由汇编语言向高级语言的转变,为CISC向RISC的过渡创造了条件。首先,RISC指令经过简化,因此不再需要微代码解释器。 RISC指令通常与微指令一样简单,硬件能够直接执行。其次,以前用于CISC 指令集的微代码解释器的快速存储器被重新用作RISC指令的高速缓存。(缓存是一个小而快速的内存,用于缓冲最近执行的指令,因为这类指令很快就会被再次调用。)第三,基于Gregory Chaitin的图着色方案的寄存器分配器,使编译器能够更简易、高效地使用寄存器,收关,摩尔定律意味着在20世纪80年代能够诞生有足够数量的晶体管的芯片,可以容纳一个完整的32位数据路径、指令集和数据高速缓存。
在今天的“后PC时代”,x86芯片的出货量自2011年达到峰值以来,每年下降近10%,而采用RISC处理器的芯片出货量则飙升至200亿。
下图分别为1982年和1983年在加州大学伯克利分校和斯坦福大学开发的RISC-I8和MIPS12微处理器,体现出了RISC的优点。这些芯片最终于1984年在IEEE国际固态电路会议上发表。这是一个了不起的时刻,伯克利和斯坦福的一些研究生也可以构建微处理器了,可以说比行业内的产品更优秀。
这些由学术机构开发的芯片,激励了许多企业开始发力RISC微处理器,并成为此后15年中发展最快的领域。其原因是处理器的性能公式:
时间/程序=操作数/程序x(时钟周期)/指令x时间/(时钟周期)
DEC公司的工程师后来表明,更复杂的CISC指令集每个程序执行的操作数大约为RISC的75%执行大约75%,不过在类似的技术下,CISC每个指令执行时间约为五到六个时钟周期,使RISC微处理器的运算速度是CISC的大约4倍。
20世纪80年代时,这些内容还没有进入计算机体系结构的书中,所以我们在1989年编写《计算机架构:定量方法》( Computer Architecture: AQuantitative Approach)一书。本书的主题是使用测量和基准测试来对计算机架构进行量化评估,而不是更多地依赖于架构师的直觉和经验,就像过去一样。我们使用的定量方法也得益于图灵奖得主高德纳(Donald Knuth)关于算法的著作内容的启发。
VLIW,EPIC,Itanium。指令集架构的下一次创新试图同时惠及RISC和CISC,即超长指令字(VLIW)和显式并行指令计算机(EPIC)的诞生。这两项发明由英特尔和惠普共同命名的,在每条指令中使用捆绑在一起的多个独立操作的宽指令。VLIW和EPIC的拥护者认为,如果用一条指令可以指定六个独立的操作——两次数据传输,两次整数操作和两次浮点操作,编译器技术可以有效地将这些操作分配到六个指令槽中,硬件架构就可以变得更简单。与RISC方法一样,VLIW和EPIC的目的是将工作负载从硬件转移到编译器上。
英特尔和惠普合作设计了一款基于EPIC理念的64位处理器Itanium,想用其取代32位x86处理器并对其抱了很高的期望,但实际情况与他们的早期预期并不相符。虽然EPIC方法适用于高度结构化的浮点程序,但在可预测性较低的缓存或的分支整数程序上很难实现高性能。正如高德纳后来所指出的那样:“Itanium的设想非常棒,但事实证明满足这种设想的编译器基本上不可能写出来。” 开发人员注意到Itanium的迟钝和性能不佳,将用命途多舛的游轮“Titanic”其重命名为“Itanic”。不过,市场再次失去了耐心,最终64位版本的x86成为32位x86的继承者,没有轮到Itanium。
不过一个好消息是,VLIW在较窄的应用程序与小程序上,包括数字信号处理任务中留有一席之地。
PC和后PC时代的RISC vs. CISC
AMD和英特尔利用500人的设计团队和先进的半导体技术,缩小了x86和RISC之间的性能差距。同样,受到流水线化简单指令vs.复杂指令的性能优势的启发,指令解码器在运行中将复杂的x86指令转换成类似RISC的内部微指令。AMD和英特尔随后将RISC微指令的执行流程化。RISC的设计人员为了性能所提出的任何想法,例如隔离指令和数据缓存、片上二级缓存、deep pipelines以及同时获取和执行多条指令等,都可以集成到x86中。在2011年PC时代的极峰时期,AMD和英特尔每年大约出货3.5亿台x86微处理器。PC行业的高产量和低利润率也意味着价格低于RISC计算机。
考虑到全球每年售出数亿台个人电脑,PC软件成为了一个巨大的市场。尽管Unix市场的软件供应商会为不同的商业RISC ISA (Alpha、HP-PA、MIPS、Power和SPARC)提供不同的软件版本,但PC市场只有一个ISA,因此软件开发人员发布的“压缩打包”软件只能与x86 ISA兼容。更大的软件基础、相似的性能和更低的价格使得x86在2000年之前同时统治了台式机和小型服务器市场。
Apple公司在2007年推出了iPhone,开创了后PC时代。智能手机公司不再购买微处理器,而是使用其他公司的设计(包括ARM的RISC处理器),在芯片上构建自己的系统(SoC)。移动设备的设计者不仅重视性能,而且重视晶格面积和能源效率,这对CISC ISA不利。此外,物联网的到来大大增加了处理器的数量,以及在晶格大小、功率、成本和性能方面所需的权衡。这种趋势增加了设计时间和成本的重要性,进一步不利于CISC处理器。在今天的后PC时代,x86的出货量自2011年达到峰值以来每年下降近10%,而采用RISC处理器的芯片的出货量则飙升至200亿。今天,99%的32位和64位处理器都是RISC。
总结上面的历史回顾,我们可以说市场已经解决了RISC-CISC的争论;CISC赢得了PC时代的后期阶段,但RISC正在赢得整个后PC时代。几十年来,没有出现新的CISC ISA。令我们吃惊的是,今天在通用处理器的理想ISA原则方面的共识仍然是RISC,尽管距离它们的推出已经过去35年了。
(未完待续)