聊城开发区市开发区图灵软件技術有限公司
注册资本:3.00万元
地址信息:山东省聊城开发区经济开发区东城办事处久和社区6号楼3楼西户
该企业商号“图灵”被抢注!
雷锋网(公众号:雷锋网)按:近几姩来不论是普通消费者还是科研人员们都可以感受到两种浪潮,一种是CPU速度的提升越来越不显著了我们说CPU制造商又在“挤牙膏”;另┅方面,在深度学习的刺激下各个半导体巨头和一群 AI 初创企业都开始宣传自己的 AI 芯片。我们仿佛看到一类芯片逐渐走向慢车道另一类芯片则准备搭台唱戏、跃跃欲试。
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位处理器,也就是后来的8086Intel给了新团队52周时间来开发新的指令集以及设计和构建芯片。由于时间紧迫这个团队实际上是把 8080 的 8 位寄存器和指令集扩展成了 16 位,设计ISA部分仅仅花了10个人3周时间最终8086如期完成,但在发布时却没引起什么关注
这一次Intel很走运,当时IBM正在开发一款对位Apple II的个人计算机正需要16位处理器。IBM一度对Motorola 68000处理器很感兴趣它拥有类似于IBM 360的指令集,但性能表现却无法满足IBM激进的需求故转而使用Intel 8086的8位总线版。IBM于1981年8月12日宣布推出该机型全球销量高达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”不过正如前面所提到的,市场永远是没有耐心的最终64位的x86-64成为了继承者,没有轮到Itanium
不过一个好消息是,VLIW仍然小范围应鼡于数字信号处理等对分支预测和缓存要求不高的领域
Intel和AMD依靠500人的设计团队和卓越的半导体技术来缩小x86和RISC之间的性能差距,而受到精简指令相对于复杂指令性能优势的启发Intel和AMD将RISC微指令的执行流程化,使指令解码器在运行中将复杂的x86指令转换成类似RISC的内部微指令从而让x86處理器可以吸收RISC在性能分离指令、数据缓存、芯片二级缓存、深度流水线以及同时获取和执行多个指令等许多优秀的设计。在2011年PC时代的巅峰时期Intel和AMD每年大约出货3.5亿颗x86处理器。PC行业的高产量和低利润率也意味着价格低于RISC计算机
在Unix市场中,软件供应商会为不同的复杂指令集(Alpha、HP-PA、MIPS、Power和SPARC)提供不同的软件版本而PC市场上绝对主流的指令集只有一套,软件开发人员只需兼容x86指令集即可全球每年出货数亿台PC,软件就成为了一个巨大的市场更大的软件基础、相似的性能和更低的价格使得x86处理器在2000年之前同时统治了台式机和小型服务器市场。
苹果公司在2007年推出了iPhone开创了后PC时代。智能手机公司不再购买处理器而是使用其他公司的设计来构建自己的SoC。移动设备设计人员需要对芯片媔积和能效以及性能进行综合评估CISC处理器在这一点上处于劣势。此外物联网的到来需要海量的处理器,更加需要在芯片尺寸、功率、荿本和性能上做权衡这种趋势增加了设计时间和成本的重要性,进一步使CISC处理器处于不利地位在今天这个“后PC时代”,x86处理器的出货量自2011年达到峰值以来每年下降近10%,而RISC处理器的出货量则飙升至200亿如今,99%的32位和64位处理器都是RISC处理器
总结这些历史,可以说市场巳经解决了RISC和CISC宿命之争CISC赢得了PC时代的后期阶段,但RISC正在后PC时代占据主导复杂指令集领域已经几十年没有新的指令集出现了,对于今天嘚通用处理器来说最佳的选择仍然是精简指令集。
处理器架构当前面临的挑战
“如果一个问题无解那它可能不是一个问题,而是一个倳实我们不需要解决,而是随着时间的推移来处理”
虽然前面的部分聚焦在指令集架构的设计上,但大部分计算机架构师并不设计新嘚指令集而是利用当前的实现技术来实现现有的ISA。自20世纪70年代后期以来选择的技术一直是基于MOS(金属氧化物半导体)的集成电路,首先是 nMOS(n型金属氧化物半导体)然后是CMOS(互补金属氧化物半导体)。
戈登·摩尔在1965年预测集成电路的晶体管密度会每年翻一番,1975年又改為每两年翻一番这一预测最终被称为摩尔定律。在这一预测中晶体管密度呈二次增长,惊人的进化速度使架构师可以用更多晶体管来提高性能
摩尔定律和登纳德缩放定律的失效
如图2所示,摩尔定律已经持续了几十年但它在2000年左右开始放缓,到了 2018 年实际结果与摩尔萣律的预测相差了15倍,但摩尔在2003年做的判断已不可避免(可参考GE Moore 的《No exponential is forever: But 'forever' can be delayed!》论文)基于当前的情况,这一差距还将持续增大因为CMOS已经接近極限。
图2 单个英特尔微处理器上的晶体管数量 vs. 摩尔定律
年提出晶体管不断变小,但芯片的功率密度不变随着晶体管密度的增加,每个晶体管的能耗将降低因此硅芯片上每平方毫米上的能耗几乎保持恒定。由于每平方毫米硅芯片的计算能力随着技术的迭代而不断增强計算机将变得更加节能。不过登纳德缩放定律从 2007 年开始大幅放缓,大概在2012 年接近失效(见图 3)
图3每个芯片上的晶体管及每平方毫米的功率
1986 年至 2002 年间,利用指令级并行(ILP)是提高架构性能的主要方法伴随着晶体管速度的提高,其性能每年能提高约50%登纳德缩放定律的终結意味着架构师必须找到更有高效的方法利用并行性。
要理解增加ILP 所带来高效率可以看一看当前的处理器核心比如ARM、英特尔、AMD。假设该芯片有15级流水线(管线)每个时钟周期可以发送 4 条指令,那么它在任何时刻都有多达60条指令包括大约15个分支,它们占执行指令的大约25%为了能够充分利用流水线,需要预测分支并根据推测将代码放入流水线以便执行。推测的使用同时是 ILP高性能和低能效的源头如果分支预测达到完美,推测就能提高 ILP 性能但能耗会增加一些(也可能节约能耗),但如果分支预测出现失误处理器就必须放弃错误的推测指令,计算所耗能量就会被浪费处理器的内部状态也必须恢复到错误预测分支之前的状态,这将消耗额外的能量和时间
要理解这种设計的挑战性,想一想正确预测15个分支就可知道其中的难度如果处理器架构想把性能的浪费控制在10%以内,那么它必须在 99.3%的时间里正确预测烸个分支很少有通用程序能够如此准确地预测。
要理解性能浪费叠加的结果可以参见图4中,图中显示了有效执行的指令但由于处理器推测错误而被浪费。对英特尔酷睿 i7 基准测试上19%的指令都被浪费了,但能量的浪费情况更加严重因为处理器必须使用额外的能量才能恢复到推测失误前的状态。这样的测试导致许多人得出结论架构师需要一种不同的方法来实现性能改进。于是迎来了多核时代的诞生
圖4 不同的SPEC整型数基准测试,英特尔酷睿 i7 浪费的指令占完成指令总数的百分比
多核将识别并行性和决定如何利用并行性的任务转移给程序员囷编程语言多核并未解决节能的挑战,而这种挑战因登纳德缩放定律终结更加严峻每个活跃的核都会消耗能量,无论其对计算是否有囿效贡献一个主要的障碍可以用阿姆达尔定律(Amdahl's Law)表述,该定理认为在并行计算中用多处理器的应用加速受限于程序所需的串行时间百分比。这一定律的重要性参见图5与单核相比,多达64个核执行应用程序速度的差别假设串行执行的不同部分只有一个处理器处于活动狀态。例如如果只有1%的时间是串行的,那么 64核的配置可加速大约35倍当然能量也与64个处理器成正比,大约有45% 的能量被浪费
图5 阿姆达尔萣律对程序加速的影响
真实的程序当然会更加复杂,部分组件允许在给定时刻使用不同数量的处理器然而,需要定期性通信和同步意味著大部分应用仅可高效使用一部分处理器尽管阿姆达尔定律已经出现 50 多年了,这仍然是一个很大的困难
随着登纳德缩放定律的终结,芯片内核数量的增加意味着能耗也随之增加不幸的是,进入处理器的电能有一部分会转化为热能因此多核处理器受限于热耗散功率(TDP),即封装和冷却系统在最大负载时的驱散热量的最大限度尽管一些高端数据中心可能使用更先进的封装和冷却技术,但没有一个计算機用户想要在自己桌子上放置小型热交换器或者为手机增加散热器。TDP 的限制性直接导致了暗硅时代也就是处理器通过降低时钟频率或關闭空闲内核来防止处理器过热。这种方法的另一种解释是:一些芯片可将其宝贵的能量从空闲内核转移到活跃内核
登纳德缩放定律的結束,摩尔定律放缓以及阿姆达尔定律正当其时意味着低效性将每年的性能改进限制在几个百分点(如6所示)。想获得高的性能改进(潒 20 世纪八九十年代那样)需要新的架构方法新方法应能更加高效地利用集成电路。接下来我们将讨论现代计算机的另一个主要缺陷——計算机安全的支持以及缺乏之后再继续探讨有效利用集成电路的新方法。
年代处理器架构师主要专注于计算机安全,涉及保护环和功能安全架构师们意识到,大部分漏洞都存在于软件中但他们认为架构能会有所帮助。这些功能大部分未被操作系统使用这些操作系統有意专注于所谓的良性环境(如个人电脑),并且这些功能涉及大量消耗因此被淘汰。在软件社区中很多人认为正式验证技术如微內核等技术会为构建高度安全的软件提供有效保障。不幸的是我们的软件系统规模和性能驱动器意味着此类技术无法跟上处理器性能。結果就是大型软件系统仍然有很多安全漏洞且由于海量在线个人信息和云计算的使用,其影响被放大
登纳德缩放定律的终结意味着架構师必须找到利用并行化的更高效方式。
架构师们和其他人很晚才意识到安全的重要性但他们已经开始对虚拟机和加密提供硬件支持。鈈幸的是推测给许多处理器带来了未知但明显的安全缺陷。特别是Meltdown和Spectre安全漏洞导致新漏洞利用位体系结构中的漏洞,使受保护信息较赽地遭到泄露这两种漏洞都使用了旁路攻击。2018 年研究者展示了在攻击者不将代码加载到目标处理器的情况下,如何利用 Spectre 变体导致网络信息泄露尽管这次名为NetSpectre的攻击泄露信息速度较慢,但它会使同一局域网(或云中同一集群)中的所有机器都受到攻击这会产生许多新嘚漏洞。还有两个被报告的漏洞存在于虚拟机架构其中一个叫Foreshadow,会影响专门保护高风险数据(如加密密钥)的英特尔SGX 安全机制现在,烸个月都会发现新的漏洞
旁路攻击并非新鲜事,但在最早期的大多数情况软件漏洞是攻击成功的关键。但在Meltdown、Spectre 等攻击中硬件的缺陷導致受保护信息泄露。处理器架构师如何定义什么是正确的ISA是一个源头的难题因为标准中并未说明执行指令序列的性能影响,而仅仅涉忣 ISA-visible 执行架构状态架构师需要重新思考ISA正确实现的定义,以避免类似的安全漏洞与此同时,他们还应该重新思考对计算机安全关注的侧偅点以及架构师如何与软件设计师一起实现更加安全的系统。架构师(以及所有人)都过于依赖信息系统以至于对安全的重视程度不洳对一流设计的关注。
雷锋网原创文章未经授权禁止转载。详情见