杏彩体育官方平台图灵奖得主长文报告:是什么开启了计算机架构的新黄金

 单片机     |      2024-04-20 08:09:08| 来源:杏彩体育app 作者:杏彩体育官网入口

  雷锋网按:近几年来,不论是普通消费者还是科研人员们都可以感受到两种浪潮,一种是CPU速度的提升越来越不显著了,我们说CPU制造商又在“挤牙膏”;另一方面,在深度学习的刺激下,各个半导体巨头和一群 AI 初创企业都开始宣传自己的 AI 芯片。我们仿佛看到一类芯片逐渐走向慢车道,另一类芯片则准备搭台唱戏、跃跃欲试。

  这种柳暗花明的背后,显示的正是计算机计算架构的时代变革;新的方法、新的思维、新的目标引领了新的浪潮。2017 年图灵奖的两位得主 John L. Hennessy 和 David A. Patterson 就是这个新浪潮的见证者和引领者。近们在ACM 通讯(Communications of the ACM)发表了一篇长报告《A New Golden Age for Computer Architecture》,详细描述了引发计算机架构新时代到来的种种变化,他们也展望未来的十年将是计算机体系架构领域的“新的黄金十年”。

  2018年6月4日,我们回顾了自20世纪60年代以来计算机架构的发展,并以此开始了我们的图灵讲座。除了那个回顾,我们还在讲座中介绍了当前的难题和未来机遇。计算机体系结构领域将迎来又一个黄金十年,就像20世纪80年代我们做研究那时一样,新的架构设计将会带来更低的成本,更优的能耗、安全和性能。

  软件与硬件的对话,是通过一种称为指令集的体系结构进行来的。在20世纪60年代初,IBM拥有四条互不兼容的计算机系列,分别针对小型企业,大型企业,科研单位和即时运算,每个系列都有自己的指令集、软件栈和I/O系统。

  IBM的工程师们,也包括ACM图灵奖获奖者Fred Brooks在内,希望能够创建一套新的ISA,将这四套指令集有效统一起来,为此他们需要一种可以让低端的8位计算机和高端的64位计算机共享一套指令集的解决方案。

  实际上,数据通路的加宽和缩小相对是比较容易的,当时的工程师们面临的最大挑战是处理器中的控制器部分。受软件编程的启发,计算机先驱人物、图灵奖获得者Maurice Wilkes提出了简化控制流程的思路,即将控制器部分定义为一个被称为“控制存储器”的二维数组,可通过内存实现,比使用逻辑门的成本要低得多。数组的每一列对应一条控制线,每一行对应一条微指令,写微指令的操作称为微编程,控制存储器包含使用微指令编写的指令集解释器,因此执行一条传统指令需要多个微指令完成。

  下图列出了IBM在1964年4月7日发布的新System/360系列计算机的指令集,四种型号之间的数据通路宽度相差8倍,内存容量相差16倍,频率相差近4倍,最终性能相差50倍。其中M65机型的控制存储器容量最大,成本和售价也最昂贵,而最低端M30机型的控制存储器容量最小,因此也需要有更多的微指令来执行System/360的指令。

  IBM将公司的未来押在了这套新指令集上,寄希望其能革新计算行业,赢得未来。而最终IBM也如愿以偿,成功主宰了这一市场,并将其影响力延续至今,这些55年前机型的后代产品现在仍能为IBM带来每年100亿美元的收入。

  现在看来,尽管市场对技术问题做出的评判还不够完善,但由于硬件系统架构与商用计算机之间的密切联系,市场最终成为计算机架构创新的是否成功的关键性因素,这些创新往往需要工程人员方面的大量投入。

  当计算机进入集成电路时代,摩尔定律的力量可以使控制存储器被设计的更大,而这反过来又催生了更复杂的指令集,如Digital Equipment公司于1977年发布的VAX-11/780机型,其控制存储器容量就达到了5120指令字*96bit,而其前代型号仅为256指令字*56bit。

  于此同时,一些制造商开始设计可记录控制存储器(WCS),放开微编程功能以使客户可以自行定制功能,其中最有名的机型是图灵奖得主Chuck Thacker和Butler Lampson 和他的同事在1973年为施乐公司Palo Alto研究中心开发的Alto计算机。这是第一台个人计算机,配备有首款点阵显示器和首个以太网局域网,其控制器存储在一个容量为4096指令字*32bit的WCS中。

  另一边,20世纪70年代的微处理器仍处于8位时代(如Intel的8080处理器),主要采用汇编语言编程,各家公司的设计师会不断加入新的指令来超越竞争对手,并通过汇编语言展示他们的优势。

  戈登·摩尔认为,Intel的下一代指令集将会伴随Intel的一生,他聘请了大批聪明的计算机科学博士,并将他们送到波特兰的一个新工厂,以打造下一个伟大的指令集架构。这个被Intel最初命名为8800的计算机架构项目雄心勃勃,它具有32位寻址能力、面向对象的体系结构,可变位长的指令以及用当时最新编程语言Ada编写的操作系统,是20世纪80年代最具挑战性的一个项目。

  可惜天不遂愿,这个项目在几年间再三延期,迫使Intel在圣克拉拉启动了一项紧急更换计划,要在1979年推出一款16位处理器,也就是后来的8086。Intel给了新团队52周时间来开发新的指令集以及设计和构建芯片。由于时间紧迫,这个团队实际上是把 8080 的 8 位寄存器和指令集扩展成了 16 位,设计ISA部分仅仅花了10个人3周时间。最终8086如期完成,但在发布时却没引起什么关注。

  这一次Intel很走运,当时IBM正在开发一款对位Apple II的个人计算机,正需要16位处理器。IBM一度对Motorola 68000处理器很感兴趣,它拥有类似于IBM 360的指令集,但性能表现却无法满足IBM激进的需求,故转而使用Intel 8086的8位总线日宣布推出该机型,全球销量高达1亿台,为Intel这套指令集铺垫了一个非常光明的未来。

  Intel原本的8800项目更名了为iAPX-432,并最终在1981年推出,但它需要多块芯片并且存在严重的性能问题,最终于1986年终止。同样在这一年,Intel推出了80386处理器,将8086指令集的寄存器从16位扩展到了32位。戈登•摩尔的预言成为了现实,Intel的下一代指令集确实一直存续下来,但市场做出的选择是临危上马的8086,而不是被寄予厚望的iAPX-432,这对摩托罗拉68000和iAPX-432的架构师来讲,都是个现实的教训,市场永远是没有耐心的。

  20世纪80年代初,人们开始研究CISC(复杂指令集计算机)控制存储器中的大型微程序,而Unix系统的诞生则证明了可以使用高级语言来编写操作系统,因此随后问题的关键从“编程者会使用什么汇编语言”变成了“编译器会生成什么指令”,软硬件接口的显著改进为架构创新带来了机会。

  图灵奖得主John Cocke和他的同事为小型计算机开发了更简单的指令集和编译器,并将编译器的目标设定为“仅使用 IBM 360指令集中简单的寄存器到寄存器操作,只以简单的Load和Store操作访问内存”。他们发现,这样简化的流程可以让程序运行速度快上3倍。Emer和Clark发现,VAX指令中有20%的常用指令需要60%的微代码(microcode),但仅占据0.2%的执行时间。

  David Patterson把在DEC一次学术休假投入到了研究减少VAX指令中的漏洞上。他认为,如果处理器制造商想要设计更庞大的复杂指令集,就免不了需要一种修复微代码漏洞的方法。Patterson就此问题写了一篇论文,但《Computer》期刊却拒绝刊登,审稿人认为,使用如此复杂以至于需要修补的指令集来设计处理器是很糟糕的。

  虽然现在来看,现代的CISC处理器确实包含微代码修复机制,但当时的这次拒稿却让人们怀疑复杂指令集在处理器方面的价值,这也启发了他去开发更简单的精简指令集,以及RISC(精简指令集计算机)。

  这些观点的产生,以及由汇编语言向高级语言的转变,为CISC向RISC的过渡创造了条件。首先,精简指令集是经过简化的,其指令通常和微指令一样简单,硬件可以直接执行,因此无需微代码解释器;第二,之前用于微代码解释器的快速存储器被用作了RISC的指令缓存;第三,基于Gregory Chaitin图染色法的寄存器分配器,使编译器能够更简易、高效地使用寄存器,这指令集中那些寄存器到寄存器的操作有很大好处;最后,集成电路规模的发展,使20世纪80年代的单块芯片足以包含完整的32位数据路径以及相应的指令和数据缓存。

  下图是加州大学伯克利分校1982年研发的RISC-I处理器和斯坦福大学1983年研发的MIPS处理器,两颗芯片充分展示了RISC的优势,并最终发表在1984年IEEE国际固态电路会议上。加州大学和斯坦福大小的研究生研发出了比行业内现有产品更优秀处理器,这是非常了不起的时刻。

  这些由学术机构开发的芯片,激励了许多企业开始发力RISC处理器,并成为此后15年中发展最快的领域。其原因是处理器的性能公式:

  DEC公司的工程师后来表明,CISC处理器执行每个程序的操作数大约为RISC处理器的75%(上式第一项),在使用类似的技术时,CISC处理器执行每个指令要多消耗5到6个时钟周期(上式第二项),使得RISC处理器的速度大约快了3倍。

  这样的公式在20世纪80年代还没有进入计算机体系结构的书中,所以我们在1989年编写了《Computer Architecture: A Quantitative Approach》一书,使用测量和基准测试来对计算机架构进行量化评估,而不是更多地依赖于架构师的直觉和经验,使用的量化方法也受到了图灵奖得主Donald Knuth关于算法的书的启发。

  指令集架构的下一次创新试图同时惠及RISC和CISC,即超长指令字(VLIW)和显式并行指令计算机(EPIC)的诞生。这两项发明由Intel和惠普共同命名,在每条指令中使用在一起的多个独立操作的宽指令。与RISC一样,VLIW和EPIC的目的是将工作负载从硬件转移到编译器上,它们的拥护者认为,如果用一条指令可以指定六个独立的操作(两次数据传输,两次整数操作和两次浮点操作),并且编译器技术可以有效地将操作分配到六个指令槽,则硬件可以变得更简单。

  Intel和惠普合作设计了一款基于EPIC理念的64位处理器Itanium(安腾),想用其取代32位x86处理器。Intel和惠普对Itanium抱有很高的期望,但实际情况却与他们的预期并不相符,EPIC虽然适用于高度结构化的浮点程序,但却很难在可预测性较低的缓存丢失或难以预测分支的整型程序上实现高性能。

  Donald Knuth后来指出,Itanium的设想非常棒,但事实证明满足这种设想的编译器基本上不可能写出来。开发人员注意到Itanium的延迟和性能表现不佳,并借鉴泰坦尼克号事件重新将其命名为“Itanic”。不过正如前面所提到的,市场永远是没有耐心。


杏彩体育官方平台 上一篇:内存故障有什么处理方法 下一篇:【简讯】AMD发布锐龙嵌入式8000处理器;华为P