首页 » 科学 » 计算机架构的新黄金时代两位图灵奖得主最新力作_指令_处置器

计算机架构的新黄金时代两位图灵奖得主最新力作_指令_处置器

雨夜梧桐 2024-12-03 05:40:45 0

扫一扫用手机浏览

文章目录 [+]

本文《打算机架构的新黄金时期》是两人在 2019 年新揭橥的文章,完全先容了打算机芯片的发展进程,以及所有架构的未来趋势,值得所有希望理解硬件架构的人阅读。

图注:2019 年 2 月刊发

计算机架构的新黄金时代两位图灵奖得主最新力作_指令_处置器 科学

2018 年 6 月 4 日,我们回顾了自 20 世纪 60 年代以来打算机架构的发展,并以此开始了我们的图灵讲座(Turing Lecture)。
除了那个回顾,我们还在讲座中先容了当前的难题和未来机遇。
我们还预测未来十年打算机架构领域将迎来下一个黄金时期,就像 20 世纪 80 年代那样——我们做的研究能为我们带来回报,能改进本钱、能源、安全以及性能。

「不能铭记过去的人注定要重蹈覆辙。
」——George Santayana,1905

软件与硬件的通信是通过指令集架构(ISA)进行的。
在 1960 年代早期,IBM 有四个互不兼容的打算机产品线,每个都有自己的 ISA、软件堆栈、I/O 系统和利基市场(分别针对的是小型企业、大型企业、科研和实时运用)。
包括 ACM 图灵奖得到者 Fred Brooks, Jr. 在内的 IBM 工程师都认为他们可以创造一种能有效统一所有这四种 ISA 根本的单个 ISA。

他们须要一种技能办理方案,让便宜的 8 位数据路径打算机与高速的 64 位数据路径打算机都能共用一个 ISA。
这些数据路径是处理器的「身体」,它们在个中实行算术运算但相对而言较随意马虎「变宽」或「变窄」。
对付那时以及现在的打算机设计者来说,最大的难题是处理器的「大脑」——掌握硬件。
受软件编程的启示,打算先驱和图灵奖得到者 Maurice Wilkes 提出了简化掌握的方法。
掌握可被描述为一个二维数组,他称之为「掌握存储器(control store)」。
这个数组的每一列都对应于一条掌握线,每一行都是一个微指令(microinstruction),而编写微指令则被称为微编程(microprogramming)。
一个掌握存储器包含一个用微指令编写的 ISA 阐明器,以是实行一个常规指令须要多个微指令。
这种掌握存储器是通过内存实现的,本钱比逻辑门要低得多。

表 1 列出了 IBM 在 1964 年 4 月 7 日宣告的新 System/360 ISA 的 4 种型号。
数据路径的变革范围有 8 倍,内存容量的变革范围有 16 倍,时钟频率是 4 倍,性能是 50 倍,本钱靠近 6 倍。
本钱最高的打算机的掌握存储器最宽,由于更繁芜的数据路径利用更多掌握线。
本钱最低的打算机由于硬件更大略而有更窄的掌握存储器,但由于它们须要更多时钟周期来实行一个 System/360 指令,以是须要更多微指令。

表 1:IBM System/360 系列四个型号的特性;IPS 表示每秒实行指令数。

在微编程的推动下,IBM 将公司的未来押在了这款新 ISA 上,寄希望其能改造打算行业,为 IBM 赢得回报。
IBM 成功主宰了这一市场,IBM 打算机家族的大型机后裔在推出 55 年后仍旧每年创造着 100 亿美元的收入。

正如我们反复看到的那样,只管市场并不能完美地剖断各种技能问题,但鉴于架构和商业打算机之间联系紧密,市场才能终极决定架构创新是否成功,而这每每须要大量的工程开拓投入。

集成电路,CISC,432,8086,IBM PC

当打算机开始利用集成电路时,摩尔定律意味着掌握存储器可以变大很多。
更大的内存反过来又意味着许可利用更繁芜的 ISA。
要知道,数字设备公司(Digital Equipment Corp.)在 1977 年推出的 VAX-11/780 的掌握存储器为 5120 字×96 位,而其前一代仅有 256 字× 56 位。

某些制造商选择开放微编程功能,让选定的客户能添加定制功能,他们称之为「可写掌握存储器(WCS)」。
最有名的 WCS 打算机是 Alto,这是图灵奖得主 Chuck Thacker 和 Butler Lampson 及其同事于 1973 年一起为施乐(Xerox)帕洛阿托研究中央开拓的。
这实际上是第一款个人打算机(PC),配备有首款位映像显示器(bit-mapped display)和首个以太网局域网。
用于这种全新显示器和网络的设备掌握器是存储在一个 4096 字×32 位 WCS 中的微程序。

1970 年代的微处理器(比如英特尔的 8080)仍处于 8 位时期,紧张依赖汇编措辞编写程序。
相互竞争的设计者会通过添加新的指令来赶超彼此,他们会通过汇编措辞示例来展示自己的上风。

戈登·摩尔(Gordon Moore)相信英特尔的下一代 ISA 将会伴随英特尔的生平,因此他聘任了很多聪明的打算机科学博士,并将他们送到波特兰去发明出色的下一代 ISA。
英特尔最早命名为 8800 的打算机架构项目年夜志勃勃——对任何时期而言都是如此,显然也是 1980 年代最有野心的。
它有基于 32 位的寻址能力、面向工具的架构、位长可变的指令以及用时新的编程措辞 Ada 编写的自己的操作传统。

可惜这个年夜志勃勃的项目晚了几年,迫使英特尔在圣克拉拉开始了一项紧急更换事情,在 1979 年推出了一款 16 位微处理器。
英特尔给了新团队 52 周韶光来开拓新的「8086」ISA 以及设计和构建芯片。
鉴于日程紧迫,这个团队实际上是把 8080 的 8 位寄存器和指令集扩展成了 16 位,末了只用 10 人次的 3 个常规事情周完成了这款 ISA 的设计。
这个团队按时完成了 8086 的开拓,但在发布时却没引起什么关注。

英特尔非常幸运,IBM 当时正在开拓一款个人打算机来与 Apple II 竞争,并须要一款 16 位微处理器。
IBM 之前感兴趣的是 Motorola 68000,其 ISA 与 IBM 360 类似,但却掉队于 IBM 激进的操持。
IBM 转而利用 8086 的 8 位总线版本。
IBM 在 1981 年 8 月 12 日推出了这款 PC,希望到 1986 年时能售出 25 万台。
而实际上该公司在环球售出了 1 亿台,为这款紧急代换的英特尔 ISA 铺垫了一个非常光明的未来。

英特尔原来的 8800 项目更名了为 iAPX-432,并终极在 1981 年推出,但它须要多块芯片并且存在严重的性能问题。
该项目在 1986 年终止,这一年,英特尔在 80386 中对 16 位 8086 ISA 进行了扩展,将其寄存器从 16 位扩展到了 32 位。
因此,摩尔的预测便是精确的了——下一代 ISA 确实会和英特尔一样龟龄,但市场选择了紧急代换的 8086,而不是专门精心开拓的 432。
正如 Motorola 68000 和 iAPX-432 两者的设计师都学到的那样:市场每每缺少耐心。

从繁芜指令集到精简指令集打算机

1980 年代早期,人们对更大型掌握存储器中大型微程序利用的繁芜指令集打算机(CISC)进行了一些研究。
Unix 表明纵然操作系统也可以利用高等措辞编写,关键问题随之变成了「编译器会天生什么指令?」,而不是「编程者会利用什么汇编措辞?」。
硬件/软件接口的显著改进为架构创新带来了机会。

图灵奖得主 John Cocke 与其同事为小型打算机开拓了更大略的 ISA 和编译器。
作为实验,他们将自己研究的编译器的目标重新设定为:仅利用 IBM 360 ISA 中大略的 register-register 操作和 load-store 数据传输,避免更繁芜的指令。
他们创造利用这个大略的子集时,程序运行速率可快达三倍。
Emer 和 Clark 创造 VAX 指令中 20% 的指令须要 60% 的微代码(microcode),但仅霸占 0.2% 的实行韶光。

David Patterson 把在 DEC 的一次学术休假投入到了研究减少 VAX 指令中的漏洞上。
他认为,如果微处理器制造商遵照更大型打算机的 CISC ISA 设计,则它们须要一种修复微代码漏洞的方法。
他为此写了一篇论文,但期刊《Computer》却谢绝吸收。
审稿人认为,利用如此繁芜以至于须要修补的 ISA 开拓微处理器是很糟糕的。
这次拒稿让人们质疑 CISC ISA 在微处理器方面的代价。
讽刺的是,当代 CISC 微处理器确实须要包含微代码修复机制,但他被拒稿的紧张结果是启示他为微处理器开拓更大略的 ISA——精简指令集打算机(RISC)。

这些不雅观察和向高等措辞的转移为 CISC 向 RISC 的过渡带来了机会。
首先,RISC 指令是经由简化的,因此无需微代码阐明器。
RISC 指令常日和微指令一样大略,硬件可以直接实行。
第二,之前用于 CISC ISA 的微代码阐明器的快速内存被用作了 RISC 指令的缓存。
(缓存是小而快的内存,临时缓冲近期实行过的指令,由于这样的指令很可能很快就要重新利用。
)第三,基于 Gregory Chaitin 图着色方案的寄存器分配器使编译器可以更加随意马虎地有效利用寄存器,这对这些 register-register ISA 是有利的。
末了,摩尔定律意味着 1980 年代单块芯片中已有足以包含完全 32 位数据路径的晶体管以及相应的指令和数据缓存。

在本日的后 PC 时期,x86 的出货量从 2011 年的顶峰每年都会低落约 10%,而 RISC 处理器芯片出货量已经激增到了 200 亿。

例如图 1 展示了 RISC-I 和 MIPS 微处理器,它们分别由 UC 伯克利和斯坦福在 1982 与 1983 年开拓,它们展示了 RISC 的上风。
这些芯片终极都展示在了顶尖电路会议上,即 1984 年的 IEEE 国际固态电路会议。
当时是非常瞩目的成果,由于伯克利和斯坦福的一些研究生能构建超越工业上能构建的微处理器。

图 1:加州大学伯克利分校 RISC-1 和斯坦福大学 MIPS 微处理器。

这些学术界做出的芯片勉励了许多公司构建 RISC 微处理器,也是那之后 15 年内最快的芯片。
下面的公式阐明了处理器的性能:

Time/Program = Instructions / Program x (Clock cycles) / Instruction x Time / (Clock cycle)

DEC 工程师后来表明,更繁芜的 CISC ISA 每个程序实行的指令数是 RISC 每个程序的 75%(上式第一项),在利用类似的技能时,CISC 实行每个指令要多花费 5 到 6 个时钟周期(第二项),使得 RISC 微处理器的速率大约快了 3 倍。

这样的公式在上世纪 80 年代的打算机架构书中还没有,后来我们在 1989 年揭橥了《打算机体系架构:量化研究方法》一书。
子标题表明了该书的主题:利用丈量方法和基准进行量化评估,而不是像从前那样依赖架构师的直觉与履历。
我们利用的量化方法也受到了图灵奖得主 Donald Knuth 关于算法的书的启示。

VLIW、EPIC、Itanium

下一个 ISA 创新该当是对 RISC 和 CISC 的继续。
超长指令字(VLIW)及其「表亲」显式并行指令打算机(EPIC)利用了宽指令,个中在每条指令中捆绑了多个独立操作。
VLIW 和 EPIC 的推戴者当时认为,单个指令如果可以指定六个独立的操作(两个数据传输、两个整型操作和两个浮点操作),并且编译器技能可以有效地将操作分配到六个指令槽,则硬件可以变得更大略。
与 RISC 方法一样,VLIW 和 EPIC 将事情从硬件转移到编译器。

通过互助,英特尔和惠普公司设计了一款基于 EPIC 理念的 64 位处理器来取代 32 位 x86。
英特尔和惠普公司对第一款 EPIC 处理器(Itanium)的期望很高,但实际情形与开拓商的早期声明并不符合。
虽然 EPIC 方法适用于高度构造化的浮点程序,但它很难实现具有较少可预测的缓存丢失或较不可预测分支的整型程序的高性能。
正如 Donald Knuth 后来指出:「Itanium 方法...... 原被认为非常赞,直到事实证明所希望的编译器基本上不可能写出来。
」专家们把稳到 Itanium 的延迟和表现不佳,并借鉴泰坦尼克号事宜重新将其命名为「Itanic」。
市场再次失落去了耐心,导致 64 位版本的 x86 成为 32 位 x86 的继续者,而不是 Itanium。

好是 VLIW 仍旧适用于较窄范围的运用程序、小程序、更大略的分支和省略缓存,包括数字旗子暗记处理。

PC 和后 PC 时期的 RISC vs. CISC

AMD 和英特尔利用了 500 人的设计团队和顶尖半导体技能来减少 x86 和 RISC 的性能差距。
再次受到大略流水线 vs 繁芜指令性能上风的启示,指令解码器在运行中将繁芜的 x86 指令转换为类似 RSIC 的内部微指令。
然后 AMD 和英特尔将 RISC 微指令的实行流水线化。
RISC 设计师关于性能分离指令、数据缓存、芯片二级缓存、深度流水线,以及同时获取和实行多个指令的任何想法,都可以用在 x86 的设计上。
AMD 和英特尔在 2011 年 PC 时期的顶峰期出了大约 3 亿 5 千万个微处理器。
PC 行业的高产量和低利润同样意味着比 RISC 打算机更低的价格。

鉴于每年环球发卖的数亿台 PC,PC 软件成为一个巨大的市场。
虽然 Unix 市场的软件供应商会为不同的商业 RISC ISA-Alpha、HP-PA、MIPS、Power 和 SPARC 供应不同的软件版本,但 PC 市场却享有单一的 ISA,因此软件开拓商供应了「紧缩包装」软件,只与 x86 ISA 二进制兼容。
2000 年,更大的软件根本、类似的性能和更低的价格使 x86 在台式机和小型做事器市场中霸占主导地位。

苹果公司在 2007 年帮助推动了后 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。
令我们惊异的是,在推出 35 年后,本日对付通用途理器来说,最佳的 ISA 仍旧是 RISC。

处理器架构确当前寻衅「如果一个问题无解,那它可能都不成问题,而是一个事实;我们不须要办理,而是随着韶光的推移来处理。
」—Shimon Peres

虽然前面的部分聚焦在指令集架构(ISA)设计上,大部分打算机架构师并不设计新的 ISA,而是在现有的实现技能中实现现有的 ISA。
自 20 世纪 70 年代后期以来,选择的技能一贯是基于金属氧化物半导体(MOS)的集成电路,首先是 n 型金属氧化物半导体(nMOS),然后是互补金属氧化物半导体(CMOS)。
摩尔的预测中捕捉到的 MOS 技能惊人的进步率一贯匆匆使架构师设计更积极的方法来为给定的 ISP 实现更好的性能。
在 1965 年的最初预测中,摩尔称晶体管密度会每年翻一番;1975 年,他又估量每两年翻一番。
该预测终极被称为摩尔定律。
由于晶体管密度呈二次增长,而增长率呈线性增长,架构师利用更多晶体管来提高性能。

摩尔定律和登纳德缩放定律的闭幕

只管摩尔定律已经持续了几十年(见图 2),但在 2000 年旁边开始放缓。
到了 2018 年,根据摩尔定律得出的预测与当下实际能力差了 15 倍。
根据当前预测,这一差距将持续拉大,由于 CMOS 技能方法已经靠近极限。

图 2. 每个英特尔微处理器上的晶体管数量 vs. 摩尔定律

伴随摩尔定律是由罗伯特·登纳德(Robert Dennard)预测的登纳德缩放定律(Dennard scaling)。
他指出,随着晶体管密度的增加,每个晶体管的能耗将降落,因此硅芯片上每平方毫米上的能耗险些保持恒定。
由于每平方毫米硅芯片的打算能力随着技能的迭代而不断增强,打算机将变得更加节能。
登纳德缩放定律从 2007 年开始大幅放缓,2012 年旁边靠近失落效(见图 3)。

图 3. 每个芯片上的晶体管及每平方毫米的能耗。

1986 年至 2002 年间,指令级并行(ILP)是提高性能的紧张架构方法。
而且随着晶体管速率的提高,其性能每年能提高 50% 旁边。
登纳德缩放定律的闭幕意味着工程师必须找到更加高效的并行化利用方法。

要理解为什么 ILP 的增加会导致芯片能效大大降落,可以看一看 ARM、英特尔、AMD 当前推出的处理器核。
假设该芯片有一个 15 步的事情流程,每个时钟周期可以发送 4 条指令。
那么在任意一个时候,全体事情流程中至多有 60 条指令,包括大约 15 个分支,由于它们代表了大约 25% 的实行指令。
为了保持事情流程完全,须要预测分支,并根据推测将代码放入事情流程中以便实行。
推测的利用是 ILP 高性能和芯片低能效的源头所在。
如果分支预测完美,推测就能提高 ILP 性能,但能耗会增加一些——乃至可能节约能耗——但如果分支预测涌现失落误,处理器就必须抛弃缺点的推测指令,其打算事情及所耗能量就会付之东流。
处理器的内部状态也必须规复到缺点预测分支之前的状态,这将花费额外的韶光和能量。

要理解这种设计的寻衅性有多高,可以考虑一下精确预测 15 个分支结果的难度。
如果处理器要将做无用功的韶光限定在 10%,那么它必须在 99.3% 的韶光里精确预测每个分支。
很少有通用程序能够如此准确地预测分支。

要理解这些无用功叠加起来是什么结果,可以拜会图 4 中的数据。
图 4 显示了有效实行的部分指令,这部分指令由于处理器推测缺点而变得无用。
在英特尔酷睿 i7 基准测试上,19% 的指令都被摧残浪费蹂躏了,但能耗的摧残浪费蹂躏情形更加严重,由于处理器必须利用额外的能量才能在推测失落误时恢复原来的状态。
这样的度量导致许多人得出结论,架构师须要一种不同的方法来实现性能改进。
于是多核时期就这样出身了。

图 4. 在各种 SPEC 整型数基准上,英特尔酷睿 i7 摧残浪费蹂躏的指令占完成指令总数的百分比。

多核将识别并行性和决定如何利用并行性的任务转移给程序员和措辞系统。
多核并不能办理由登纳德缩放定律闭幕带来的能效打算寻衅。
每个生动的核都会花费能量,无论其对打算是否具有有效贡献。
一个紧张的障碍可以用阿姆达尔定律(Amdahl's Law)表述,该定理认为,并行打算机的加速受限于序列打算的部分。
这一定律的主要性拜会图 5。
图中显示,假设串行实行的不同部分只有一个处理器处于生动状态,那么与单个内核比较,最多 64 个内核的运用程序运行速率要快得多。
例如,如果只有 1% 的韶光是串行的,那么 64 核配置可加速大约 35 倍,所需能量与 64 个处理器成正比,因此大约有 45% 的能量被摧残浪费蹂躏了。

图 5. 部分时钟周期韶光为串行模式时,阿姆达尔定律对加速的影响。

真实的程序构造当然会更加繁芜,部分组件许可在给定时刻利用不同数量的处理器。
然而,周期性通信和同步的需求意味着大部分运器具备仅可高效利用一部分处理器的组件。
只管阿姆达尔定律已经涌现 50 多年了,它仍旧是一个很大的障碍。

随着登纳德缩放定律的闭幕,芯片内核数量的增加意味着能耗也随之增加。
然而,进入处理器的电能肯定有一部分会转化为热能。
因此多核处理器受限于热耗散功率(TDP),即封装和冷却系统可以移除的均匀功率。
只管一些高端数据中央可能利用更前辈的封装和冷却技能,但没有一个打算机用户想要在自己桌子上放置小型热交流器,或者背着散热器来冷却手机。
TDP 的局限性直接导致了「暗硅」(dark silicon)时期,处理器降落时钟速率、关闭空闲内核来防止过热。
这种方法的另一种阐明是:一些芯片可以重新分配其宝贵功耗,将其从空闲内核转移到生动内核。

登纳德缩放定律结束、摩尔定律衰退,而阿姆达尔定律正当其时,这意味着低效性将每年的性能改进限定在几个百分点(见图 6)。
得到更高的性能改进(像 20 世纪八九十年代那样)须要新的架构方法,新方法应能更加高效地利用集成电路。
接下来我们将谈论当代打算机的另一个紧张毛病——打算机安全问题,之后我们会回来磋商有效的新方法。

图 6:利用整型程序得到的打算机性能提升(SPECintCPU)。

被忽略的打算机安全

20 世纪 70 年代,处理器架构师紧张专注于打算机安全,涉及保护环、容量等观点。
这些架构师深刻理解到,大部分 bug 存在于软件中,但他们认为架构支持会有所帮助。
操作系统大部分未利用这些功能,操作系统专注于良性环境(如个人电脑),因此具备较大开销的功能未被利用。
在软件社区中,很多人认为微内核(microkernel)等正式验证技能会为构建高度安全的软件供应有效保障。
但不幸的是,我们的软件系统规模和性能驱动器意味着此类技能无法跟上处理器性能。
结果便是大型软件系统仍旧有很多安全漏洞,且由于海量在线个人信息和云打算的利用,其影响被放大。

登纳德缩放定律的闭幕意味着架构师必须找到利用并行化的更高效办法。

只管打算机架构师等很晚才意识到安全的主要性,但他们已经开始对虚拟机和加密供应硬件支持。
不幸的是,推测给许多处理器带来了一个未知但主要的安全毛病。
详细来看,Meltdown 和 Spectre 安全漏洞给微架构带来了新的毛病,使受保护信息遭到透露。
这两种漏洞都利用了旁路攻击。
2018 年,研究者展示了在攻击者不将代码加载到目标处理器的情形下,如何利用 Spectre 变体导致网络信息透露。
只管这次名为 NetSpectre 的攻击透露信息速率较慢,但它使同一局域网中的所有机器都受到攻击,这造成了很多新的难题。
虚拟机架构还有两个漏洞。
一个是 Foreshadow,会影响专门保护高风险数据(如加密密钥)的英特尔 SGX 安全机制。
每个月都会创造新的漏洞。

旁路攻击并非新鲜事,但是在最早期的案例中,匆匆使旁路攻击成功的是软件毛病。
而在 Meltdown、Spectre 等攻击中,硬件实现中的毛病导致受保护信息透露。
这是处理器架构师定义什么是 ISA 精确实现的一个基本难题,由于标准定义中并未提及实行指令序列的性能影响,而仅仅涉及 ISA-visible 实行架构状态。
架构师须要重新思考对 ISA 精确实现的定义,以避免此类安全漏洞。
同时,他们还该当重新思考对打算机安全的侧重点,以及架构师如何与软件设计师一道实现更加安全的系统。
架构师(以及每个人)都过于依赖信息系统,以至于对安全的重视程度不如对一流设计的关注。

打算机架构的未来机遇「我们的机遇就在那些『无解问题』之中。
」——John Gardner, 1965

通用途理器固有的低效性,以及登纳德缩放定律和摩尔定律的闭幕,使得处理器架构师和设计师很可能无法坚持通用途理器中的显著性能改进。
鉴于改进性能对新的软件能力的主要性,我们必须问:有没有其他的有效方法?

现在有两个很明确的机会,把二者结合起来则是第三个机会。
首先,现有的软件构建技能广泛利用具备动态类型和存储管理的高等措辞。
但是,此类措辞的阐明和实行常日非常低效。
Leiserson 等人利用一个小例子(实行矩阵相乘)解释了这种低效性。
如图 7 所示,大略地将 Python 措辞代码重写为 C 代码就可以将性能提升 46 倍(Python 是范例的高等、动态类型措辞)。

在多核上运行并行循环(parallel loops)又将性能提升靠近 7 倍。
优化内存配置又将性能提升了近 19 倍,而通过单指令多数据(SIMD)并行化操作(一个指令实行 16 个 32-bit 运算)的硬件扩展,性能又提升了 8 倍多。
也便是说,终极的高度优化版本在多核英特尔处理器上的运行速率是初始 Python 版本的 62,000 多倍。
这当然只是一个很小的例子,但我们会期望程序员利用优化库。
只管这浮夸了常见的性能差距,但很多程序的性能差距可能达到 100 到 1000 倍。

图 7. Python 四次优化中矩阵乘法的潜在加速能力。

一个有趣的研究方向有关是否可以利用新的编译器技能来缩短性能差距(可以辅以体系架构增强)。
只管高效编译和实现 Python 这样的高等脚本措辞比较困难,但潜在的收益是巨大的。
纵然实现 25% 的提升潜力,也能让 Python 程序的运行速率提升百倍。
这个大略的例子展示了当代措辞中,程序员强调生产力和传统方法强调性能之间的巨大差距。

特定领域的体系构造。
一种更加以硬件为中央的设计思路是设计针对特定问题和领域的架构,并给与它们强大(且高效)的性能,因此它们是「特定领域的体系构造(DSA)」,这是一种特定领域的可编程处理器,常日是图灵完备的,但针对特定类别的运用进行了定制。
从这个意义上来说,它们与专用集成电路(ASIC)不同,后者仅适用于单一功能,代码很少有变革。
DSA 常日被称为加速器,由于与在通用 CPU 上实行全体运用程序比较,它们可以加速某些运用程序。
此外,DSA 可以实现更好的性能,由于它们更贴近运用的实际需求;DSA 的例子包括图形加速单元(即 GPU),用于深度学习的神经网络处理器,以及软件定义处理器(SDN)。
DSA 效率更高,能耗更低是由于以下四个缘故原由:

首先最主要的是,DSA 为特定领域的打算利用了更加有效的并行形式。
例如单指令多数据并行(SIMD)比多指令多数据(MIMD)更有效,由于它在一个时钟步长内只需处理一个指令流和处理单元。
只管 SIMD 比较 MIMD 没那么灵巧,但前者适用于很多 DSA。
DSA 也可以利用 VLIW 方法来实现 ILP,而不是推测性的无序机制。
如前文所述,VLIW 处理器与通用性代码不匹配,但对付有限领域更加有效,由于它的掌握机制更加大略。
特殊是大多数高端通用途理器都是超标量的,须要繁芜的掌握逻辑来启动和完成指令。
与之相对的是,VLIW 在编译时实行必要的剖析和调度,这对付显式并行程序来说可以很好地事情。

第二,DSA 可以更有效地利用内存层次构造。
如 Horowitz 所述,内存访问要比算数打算的本钱赶过很多。
例如,访问 32 千字节缓存须要的能量相称于做 32 位加法的大约 200 倍。
这种巨大的差异使得优化存储器访问对付实现高能效来说至关主要。
通用途理器的运行代码,个中的存储器访问常日表现出空间和韶光局部性,但在编译时不是非常可预测的。
因此,CPU 利用多级高速缓存来增加带宽,并隐蔽相对较慢的芯片外 DRAM 延迟。
这些多级高速缓存常日花费大约一半的处理器能量,但险些忽略了所有片外 DRAM 访问,这些访问须要大约 10 倍于末了一级高速缓存访问的能量。

缓存有两大缺陷:

当数据集非常大的时候,韶光空间位置较低时缓存的事情效率很低;当缓存事情效率高的时候,位置非常高,这意味着同时根据定义,大多数缓存在大多数韶光都处于空闲状态。

在那些编译时可以很好地定义和创造内存访问模式的运用程序中——这对付范例的 DSL 来说是常见的——程序员和编译器可以比动态分配的缓存更好地优化内存的利用。
因此,DSA 常日利用由软件明确掌握运动的存储器层次,类似于矢量处理器的操作。
对付得当的运用,用户掌握的存储器可以比高速缓存利用更少的能量。

第三,DSA 在可接管时可以利用较低的精度。
适用于通用任务的 CPU 常日支持 32 和 64 位整型数和浮点数数据。
对付很多机器学习和图像运用来说,这种准确率有点摧残浪费蹂躏了。
例如在深度神经网络中(DNN),推理常日利用 4、8 或 16 位整型数,从而提高数据和打算吞吐量。
同样,对付 DNN 演习程序,浮点数很故意义,但 32 位就够了,16 为常常也能用。

末了,DSA 受益于以特定领域措辞(DSL)编写的目标程序,这些程序可以实现更高的并行性,更好的内存构造访问和表示,并使运用程序更有效地映射到特定域的处理器。

特定领域的措辞

DSA 哀求将高等运算定位到体系架构中,但一样平常考试测验从 Python、Java、C 或 Fortran 等通用措辞抽取构造和信息实在太难了。
因此特定领域的措辞(DSL)特殊支持这一过程,并尽可能高效地编程 DSA。
例如 DSL 可以令向量、密集型矩阵和稀疏性矩阵运算变得显式化,并许可 DSL 编译器高效地将运算映射到处理器中。
DSL 有很多常见的例子,例如专注矩阵运算的措辞 Matlab、专注 DNN 编程的数据流措辞 TensorFlow,以及专注编程 SDN 的措辞 P4 和专注图像处理中高等转换的 Halide 等。

利用 DSL 的寻衅是如何担保足够的架构独立性,使得 DSL 中编写的的软件可以移植到不同的架构,同时软件映射到底层 DSA 的效率还要非常高。
例如 XLA 系统将 TensorFLow 代码转化为能利用 GPU 或 TPU 等异构处理器的打算图。
DSA 之间的平衡可移植性以及效率是编程措辞设计者、编译器设计者和 DSA 架构师都感兴趣的研究领域。

以 TPU 为例

作为 DSA 的示例,我们可以考虑谷歌 TPU 1 的设计,它旨在加速神经网络的推断过程。
TPU 自 2015 年投入生产,它从搜索引擎到措辞翻译和图像识别支持着谷歌各种各样的业务,同时也支持着 AlphaGo 和 AlphaZero 等 DeepMind 前沿研究。
TPU 的目标是提升深度神经网络推断过程的性能与能源效率 10 倍。

如下图 8 所示,TPU 的组织架构与通用途理器完备不同。
它的主打算单元是矩阵单元,即每个时钟周期供应供应 256×256 乘加运算的脉动阵列(systolic array)。
TPU 还结合了 8-bit 精度、高效脉动架构(systolic structure)和 SIMD 掌握特性,这意味着每个时钟周期所能实行的乘加(multiply-accumulates)数是一样平常通用单核 CPU 的 100 倍。

TPU 利用 24MB 确当地内存以代替高速缓存,大约是 2015 年相同功耗 CPU 的两倍。
末了,激活值内存和权重内存(包括储存权重的 FIFO 构造)可以通过用户掌握的高带宽内存通道连接。
利用谷歌数据中央常见的 6 个推断问题的加权算术均值作为度量,TPU 比一样平常 CPU 要快 29 倍。
由于 TPU 哀求的能源少了一半,它的能源效率在这样的事情负载中是一样平常 CPU 的 80 倍。

图 8:谷歌张量处理单元(TPU v1)的功能性组织架构图。

小结

我们考虑了两种不同的通过提升硬件技能效率来提升编程性能的方法:首先,通过提升当代高等措辞的性能;其次,通过构建领域特定的比较通用 CPU 能显著提升性能和效率的架构。
DSL 是另一个如何改进支持 DSA 等架构创新的硬件/软件接口的例子。
要通过这些方法得到显著收益将须要一个垂直集成的设计团队,该团队理解运用程序、领域特定的措辞和干系的编译器技能、打算机体系构造、组织以及底层实现技能。
在行业横向构造化之前,须要在跨抽象层次上垂直集成并做出设计决策,这是打算机技能研发早期的紧张特色。
在这个新时期,垂直整合变得更加主要,能够检讨和进行繁芜权衡以及优化的团队将会受益。

这个机会已经带来了大量的架构创新,吸引了很多有竞争力的架构设计思想:

GPU:英伟达 GPU 利用了很多核心,每个核心都有大型寄存器文件、很多硬件线程和缓存;TPU:谷歌 TPU 依赖于大型二维紧缩乘法器和板载内存的硬件掌握;FPGA:微软在其数据中央里支配了现场可编程门阵列器件(FPGA),专用于神经网络运用;CPU:英特尔供应通过大型高等缓存和一维 SIMD 指令增强的带有很多核心的 CPU,微软利用的 FPGA,以及一种新型的神经网络处理器,这种处理器比较 CPU 更加靠近 TPU。

除了这些大企业外,还有数十家创业公司正在实行自己的方案。
为了知足不断增长的需求,架构工程师正在将数百到数千个此类芯片互连以形成神经网络超级打算机。

DNN 架构的雪崩式呈现使打算机架构领域进入了一个有趣的时期。
在 2019 年很难预测这些方向中哪些(或者纵然有)会赢,但市场肯定会像在办理过去的架构辩论一样办理竞争问题。

开放式架构

受开源软件成功的启示,打算机架构的第二个机会是开放的 ISA。
要创建处理器中的「Linux」,该领域须要行业标准的开放式 ISA,除了拥有专利技能的个别公司以外,社区可以创建开源核心。
如果许多组织利用相同的 ISA 设计处理器,那么更大的竞争可能会推动更快的创新。
目标是为芯片供应处理器,本钱从几美分到 100 美元不等。

第一个例子是 RISC-V(称为「RISC Five」),这是加州大学伯克利分校开拓的第五个 RISC 架构。
RISC-V 有一个社区,在 RISC-V 基金会的管理下掩护架构。
开放性许可 ISA 在公开环境中演化,硬件和软件专家在决策终极确定之提高行协作。
开放式基金的另一个好处是 ISA 不太可能紧张出于营销缘故原由而扩展,这有时是专有指令集扩展的唯一缘故原由。

RISC-V 是一个模块化指令集。
一小部分指令运行完全的开源软件堆栈,然后是可选的标准扩展,设计职员可以根据须要包含或省略。
该根本包括 32 位地址和 64 位地址版本。
RISC-V 只能通过可选扩展来增长;纵然架构师不接管新的扩展,软件堆栈仍旧运行良好。
专有架构常日须要向上的二进制兼容性,这意味着当处理器公司添加新功能时,所有未来的处理器也必须包含它。
对付 RISC-V,情形并非如此,所有增强功能都是可选的,如果运用程序不须要,可以删除。
以下是目前为止的标准扩展,利用代表其全名的缩写:

M. 整型数乘法/除法;A. 原子内存操作;F/D. 单/双精度浮点数;C. 压缩指令。

更少指令。
RISC-V 的指令少得多。
base 中有 50 个指令,与原始 RISC-I 附近。
剩余的标准扩展(M、A、F 和 D)增加了 53 条指令,再加上 C 又增加了 34 条,共计 137 条。
ARMv8 有超过 500 条指令。

更少的指令格式。
RISC-V 的指令格式非常少,只有六种,而 ARMv8 至少有 14 种。

大略性减少了设计处理器和验证硬件精确性的事情量。
由于 RISC-V 的目标范围覆盖了数据中央芯片到物联网设备,因此设计验证可能是开拓本钱的主要组成部分。

RISC-V 是一种简洁的设计,出身 25 年后,它的设计师从其前辈的缺点中吸取了教训。
与第一代 RISC 架构不同,它避免了微架构或技能依赖的功能(例如延迟分支和延迟加载)或创新(例如寄存器窗口),这些功能被编译器技能的进步所取代。

末了,RISC-V 通过为自定义加速器保留大量操作码空间来支持 DSA。

安全专家不相信不可见的安全性,因此开放式实现很有吸引力,开放式实现须要开放式架构。

除 RISC-V 外,英伟达 2017 年还宣告一个免费开放的架构,称之为英伟达深度学习加速器(NVDLA),这是一种可扩展的可配置 DSA,用于机器学习推理。
配置选项包括数据类型(int8、int16 或 fp16)和二维乘法矩阵的大小。
模具尺寸从 0.5 mm^2 到 3 mm^2,功率从 20 毫瓦到 300 毫瓦。
ISA、软件堆栈和实现都是开放的。

开放的大略架构与安全性具有协同浸染。
首先,安全专家不相信安全性,因此开放式实现很有吸引力,而开放式实现须要开放式架构。
同样主要的是增加可以环绕安全架构进行创新的职员和组织的数量。
专有架构限定了员工的参与,但开放式架构许可学术界和工业界的所有最佳人才帮助提高安全性。
末了,RISC-V 的大略性使实在现更随意马虎检讨。
此外,开放式架构、实现、软件堆栈以及 FPGA 的可塑性意味着架构师可以在线支配和评估新颖的办理方案,并每周而不是每年迭代它们。
虽然 FPGA 比定制芯片慢 10 倍,但这种性能仍旧足以支持在线用户,同时带来安全创新,办理真正的攻击。
我们希望开放式架构成为架构师和安全专家进行硬件/软件协同设计的典范。

敏捷硬件开拓

Beck 等人 2001 年提出的《敏捷软件开拓宣言》(The Manifesto for Agile Software Development)彻底改变了软件开拓办法,战胜了瀑布式开拓中传统风雅方案和文档的频繁失落败。
小型编程团队很快开拓了有用但不完全的原型,并在进行下一次迭代之前得到了顾客的反馈。
敏捷开拓的 scrum 版本凑集了 5 到 10 名程序员组成的团队,每次迭代进行 2 到 4 周的冲刺。

再次受到软件开拓成功的启示,第三次机会是敏捷硬件开拓。
对架构师来说的一个好是,当代电子打算机赞助设计(ECAD)工具提高了抽象水平,使得敏捷开拓成为可能,而且这种更高水平的抽象增加了设计的重用性。

考虑到从设计交付到返回芯片所需的几个月韶光,称硬件只需四周的冲刺韶光彷佛有些不太可信。
图 9 概述了敏捷开拓方法是如何通过在适当的层上改变原型起浸染的。
最内层是软件仿照器,如果仿照器能够知足迭代需求,这是进行变动的最方便快捷的地方。
第二层是 FPGA,其运行速率是详细软件仿照器的数百倍。
FPGA 可以运行操作系统和完全的基准测试(像那些来自标准性能评估公司的测试),许可对原型进行更精确的评估。
亚马逊在云端供应了 FPGA,以是架构师们可以利用 FPGA,而无需购买硬件和建立实验室。
为了记录芯片面积和功率的数字,第三层利用 ECAD 工具天生芯片布局。
纵然在工具运行之后,在准备制造新的处理器之前,也须要进行一些手动步骤来完善结果。
处理器设计者将第四层称为「tape in」。
前四个层都支持四周冲刺。

图 9:敏捷硬件开拓方法。

出于研究目的,我们可以在 tape in 上停下来,由于面积、能量和性能估计非常准确。
但这就像是在长跑比赛中在离终点约 100 米的地方停下来一样,由于跑步者可以准确预测末了韶光。
虽然在准备比赛方面下足了功夫,跑步者仍会错过穿过终点线的愉快和知足感。
硬件工程师相较于软件工程师的一个上风是,他们搭建的是实物。
丈量芯片,运行真正的程序,然后向朋友家人展示,这是硬件设计的一大乐趣。

很多研究者以为必须停下来,由于制造芯片的本钱太过高昂。
当设计作品很小时,它们出奇地便宜。
架构师只要花 14,000 美元就可以订购 100 个大小为 1 平方毫米的芯片。
在 28 纳米制程上,1 平方毫米的芯片可以容纳数百万晶体管,这对 RISC-V 处理器和 NVLDA 处理器来说足够大了。
如果设计者的目标是设计一个较大的芯片,那最外层的本钱将非常高,体系架构设计者可以用很多小芯片来阐述很多新想法。

总结「最阴郁的时候,是黎明来临之前。
」——Thomas Fuller, 1650

要从历史教训中获益,架构设计者们必须意识到软件创新也能勉励架组成长,而提高硬件/软件界面的抽象水平会带来创新的机会,市场终极会办理打算机架构的辩论。
iAPX-432 和 Itanium 解释了架构投入如何超过回报,而 S/360、8086 和 ARM 则连续数十年带来很高的回报,而且将连续下去。

登纳德缩放定律和摩尔定律的闭幕,以及标准微处理器性能提升的减速并非必须办理的问题,而是公认的事实。
这一事实也供应了惊人的机会。
高等、特定领域的措辞和架构将架构师从专有指令集的链条中开释出来,"大众也提高了对安全性的需求,所有这些将为打算机架构师带来一个新的黄金时期。
借助开源生态系统,敏捷开拓的芯片将展示其进步,从而加速商业运用。
这些芯片中通用途理器的 ISA 理念很可能是 RISC,后者经受住了韶光的磨练。
我们期待着这次能与上一个黄金时期一样快速改进,不过这次是在本钱、能源、安全以及性能方面的改进。

未来十年,将会有一场新打算机架构的寒武纪爆炸,这对业界和学界的架构师们来说将是激动民气的时候。

标签:

相关文章