2020-11-26

新计算机架构,黄金时代爆发!两位图灵奖得主最新力作

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年代以来计算机体系结构发展历史,并展望人工智能为计算机架构设计所带来的新的挑战和机遇。


在那次的图灵演讲中,DavidPatterson与John Hennessy还提到了软件设计也能为计算机硬件架构带来灵感,改善软硬件接口能为架构创新带来机遇。2019年2月出版的Communicationsof the ACM,刊登了两人的署名文章“A New Golden Age for computerArchitecture”,在图灵演讲的基础之上进一步完善思想,并用文字将他们的洞见更加清晰地呈现。

PC的发展过程

集成电路,CISC,432,8086,IBM PC。当计算机开始使用集成电路时,摩尔定律意味着控制存储可能变得更大。更大的内存可以运行更复杂的ISA。1977年,数字设备公司(DigitalEquipment)发布的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编写的自己的操作系统。

图1 IBM 360系列机型的参数,IPS意为“每秒操作数”

这个雄心勃勃的项目迟迟不能推出,这迫使英特尔紧急改变计划,于1979年推出一款16位微处理器。英特尔为新团队提供了52周的时间来开发新的“8086”指令集,并设计和构建芯片。由于时间紧迫,团队最终按计划完成了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的微处理器是一个糟糕的想法,因为这需要在现场进行修复。即复杂度较低的指令集架构,以及使用精简指令集的计算机(RISC)。 以及由汇编语言向高级语言的转变,为CISC向RISC的过渡创造了条件。首先,RISC指令经过简化,因此不再需要微代码解释器。 RISC指令通常与微指令一样简单,硬件能够直接执行。其次,以前用于CISC 指令集的微代码解释器的快速存储器被重新用作RISC指令的高速缓存。第三,基于Gregory Chaitin的图着色方案的寄存器分配器,使编译器能够更简易、高效地使用寄存器,最后,摩尔定律意味着在20世纪80年代能够诞生有足够数量的晶体管的芯片,可以容纳一个完整的32位数据路径、指令集和数据高速缓存。


在今天的“后PC时代”,x86芯片的出货量自2011年达到峰值以来,每年下降近10%,而采用RISC处理器的芯片出货量则飙升至200亿。下图分别对其优点进行了分析,经过对比可以说比行业内的产品更优秀。

图2 由加州大学伯克利分校开发的RISC-I8和斯坦福大学开发的MIPS12微处理器

后PC时代的RISC

Apple公司在2007年推出了iPhone,开创了后PC时代。智能手机公司不再购买微处理器,而是使用其他公司的设计(包括ARM的RISC处理器),在芯片上构建自己的系统(SoC)。在今天的后PC时代,x86的出货量自2011年达到峰值以来每年下降近10%,而采用RISC处理器的芯片的出货量则飙升至200亿。今天,99%的32位和64位处理器都是RISC


处理器架构当前的挑战

大多数计算机架构师并不设计新的ISA,而是在当前的实现技术中实现现有的ISA。自20世纪70年代末以来,技术的选择一直是基于金属氧化物半导体(MOS)的集成电路,首先是n型金属氧化物半导体(nMOS),然后是互补金属氧化物半导体(CMOS)。MOS技术惊人的改进速度(Gordon Moore的预测中已经提到这一点)已经成为驱动因素,使架构师能够设计更积极的方法来实现给定ISA的性能。摩尔在1965年26年的最初预测要求晶体管密度每年翻一番;1975年,他对其进行了修订,预计每两年翻一番。这最终被称为摩尔定律。由于晶体管密度呈二次增长,而速度呈线性增长,架构师们使用了更多的晶体管来提高性能。


计算机体系结构新机遇

        “我们面前的一些令人叹为观止的机会被伪装成不可解决的问题。

                                                                                                                      ——John Gardner1965

领域特定结构(DAS)。一个更加以硬件为中心的方法,是设计针对特定问题域定制的体系结构,并为该领域提供显著的性能(和能效)增益,被称为DSA,是一种为特定领域可编程且通常是图灵完整的,但针对特定应用程序类别进行了定制。从这个意义上说,DSA与专用集成电路(ASIC)不同,后者通常用于单一功能,代码很少发生变化。DSA通常称为加速器,因为与在通用CPU上执行整个应用程序相比,它们只会加速某些应用程序。此外,DSA可以实现更好的性能,因为它们更贴近应用程序的需求;DSA的例子包括图形处理单元(GPU),用于深度学习的神经网络处理器和用于软件定义网络(SDN)的处理器。 

DSA可以实现更好的性能和更高的能效,主要有以下四个原因:

首先也是最重要的一点,DSA利用了特定领域中更有效的并行形式;其次,DSA可以更高效地利用内存层次结构;第三,DSA可以适度使用较低的精度;最后,DSA受益于以领域特定语言(DSL)编写的目标程序。

领域特定语言

DSA要求将高级运算融入到体系结构里,但尝试从PythonJavaCFortran等通用语言中提取此类结构和信息实在太难了。领域特定语言(DSL)支持这一过程,并能有效地对DSA进行编程。例如,DSL可以使向量、密集矩阵和稀疏矩阵运算显式化,使DSL编译器能够有效地将将运算映射到处理器。常见的DSL包括矩阵运算语言Matlab,编程DNN的数据流语言TensorFlow,编程SDN的语言P4,以及用于指定高级变换的图像处理语言Halide

使用DSL的难点在于如何保持足够的架构独立性,使得在DSL中编写的软件可以移植到不同的架构,同时还可以实现将软件映射到底层DSA的高效率。例如,XLA系统将Tensorflow编译到使用Nvidia GPU和张量处理器单元(TPU)的异构处理器。权衡DSA的可移植性以及效率是语言设计人员、编译器创建者和DSA架构师面临的一项有趣的研究挑战。


开放式架构

计算机体系结构中的第二个机遇是开源的ISA。要创建一个“面向处理器的Linux”,该领域需要行业标准的开源ISA,这样社区就可以创建开源内核(除了拥有专有内核的个别公司之外)。如果许多组织使用相同的ISA设计处理器,那么更大的竞争可能会推动更快的创新。目标是为芯片提供处理器,成本从几美分到100美元不等。


轻量级硬件开发

由Beck等人撰写的《轻量级软件开发》(The Manifesto for Agile Software Development,2011)彻底改变了软件开发方式,克服了瀑布式开发中传统的详细计划和文档的频繁失败。再次受到软件成功的启发,第三个机遇是轻量级硬件开发。对于架构师来说,好消息是现代电子计算机辅助设计(ECAD)工具提高了抽象级别,从而支持轻量级开发,而这种更高的抽象级别增加了设计之间的重用。


总结

       “黎明前最黑暗。”

                                    ——托马斯·富勒,1650

为了从历史的教训中获益,架构师必须意识到软件创新也可以激发架构师的兴趣,提高硬件/软件界面的抽象层次可以带来创新机会。iAPX-432和Itanium说明了架构投资如何超过回报。


高级、特定于领域的语言和体系结构,将架构师从专有指令集的链中解放出来,以及公众对改进安全性的需求,将为计算机架构师带来一个新的黄金时代。


在开源生态系统的帮助下,轻量级开发的芯片将会令人信服,从而加速商业应用。这些芯片中通用处理器的ISA理念很可能是RISC,它经受住了时间的考验。可以期待与上一个黄金时代相同的快速改善,但这一次是在成本、能源、安全以及性能方面。

你可能感兴趣的:(2020-11-26)