小结
我们考虑了两种不同的方法,通过提高硬件技术的使用效率来提高程序运行性能:首先,通过提高现代高级语言的编译性能;其次,通过构建领域特定体系结构,可以大大提高性能和效率。DSL是另一个如何改进支持DSA等架构创新的硬件/软件接口的例子。通过这些方法获得显著性能提升。在行业横向结构化之前,需要在跨抽象层次上垂直集成并做出设计决策,这是计算机早期工作的主要特征。在这个新时代,垂直整合变得更加重要,能够核查和进行复杂权衡及优化的团队将会受益。
这个机会已经引发了架构创新的激增,吸引了许多竞争性的架构理念:
Nvidia GPU使用许多内核,每个内核都有大型寄存器文件,许多硬件线程和缓存;
Google TPU依赖于大型二维收缩倍增器和软件控制的片上存储器;
FPGA,微软在其数据中心部署了现场可编程门阵列(FPGA),它可以根据神经网络应用进行定制;
CPU,英特尔提供的CPU具有许多内核,这些内核通过大型多级缓存和一维SIMD指令(微软使用的FPGA)以及更接近TPU而不是CPU的新型神经网络处理器得到增强。
除了这些大型企业外,还有数十家创业公司正在寻求自己的路径。为了满足不断增长的需求,体系结构设计师正在将数百到数千个此类芯片互连,形成神经网络超级计算机。
DNN架构的这种雪崩使计算机架构变得有趣。在2019年很难预测这些方向中哪些(或者即使有)会赢,但市场肯定会最终解决技术以及架构争议。
开放式架构
受开源软件成功的启发,计算机体系结构中的第二个机遇是开源的ISA。要创建一个“面向处理器的Linux”,该领域需要行业标准的开源ISA,这样社区就可以创建开源内核(除了拥有专有内核的个别公司之外)。如果许多组织使用相同的ISA设计处理器,那么更大的竞争可能会推动更快的创新。目标是为芯片提供处理器,成本从几美分到100美元不等。
首要个例子是RISC-V(称为“RISC Five”),这是加州大学伯克利分校开发的第五个RISC架构。RISC-V的社区在RISC-V基金会(http://riscv.org/)的管理下维护体系结构。开源允许ISA在公开的场景下发生演变,在决策最终确定之前,由硬件和软件专家进行协作。
RISC-V是一个模块化的指令集。一小部分指令运行完整的开源软件栈,然后是可选的标准扩展设计器,设计人员可以根据需求包含或省略这些扩展。这个基础包括32位和64位版本。RISC-V只能通过可选扩展来发展;即使架构师不接受新的扩展,软件堆栈仍可以很好的运行。
专有架构通常需要向上的二进制兼容性,这意味着当处理器公司添加新特性时,所有在此之后的处理器也必须包含这些新特性。而RISC-V则不是如此,所有增强功能都是可选的,如果应用程序不需要,可以删除。以下是迄今为止的标准扩展名,使用的是代表其全名的缩写:
M. Integer multiply/divide;
A. Atomic memory operations;
F/D. Single/double-precision floating-point;
C. Compressed instructions。
RISC-V的第三个显著特征是ISA的简单性。虽然难以量化,但这里有两个与ARM公司同期开发的ARMv8架构的比较:
更少的指令。RISC-V的指令要少得多。在基础版本中只有50个,在数量和性质上与最初的RIS-i惊人地相似。剩下的标准扩展(M,A,F和D)添加了53条指令,再加上C又增加了34条,共计137条。而ARMv8有500多条。
更少的指令格式。 RISC-V的指令格式少了六个,而ARMv8至少有14个。
简单性减少了设计处理器和验证硬件正确性的工作量。 由于RISC-V的目标范围从数据中心芯片到物联网设备,因此设计验证可能是开发成本的重要组成部分。
第四,RISC-V是一个全新的设计。与首要代RISC架构不同,它避免了微架构或依赖技术的特性(如延迟分支和延迟加载),也避免了被编译器技术的进步所取代的创新(如注册窗口)。
收关,RISC-V通过为自定义加速器保留大量的操作码空间来支持DSA。
除了RISC-V之外,英伟达还(在2017年)宣布了一种名为NVDLA的免费开放架构,这是一种可伸缩、可配置的机器学习推断DSA。配置选项包括数据类型(int8、int16或fp16)和二维乘法矩阵的大小。模具尺寸从0.5 mm2到3 mm2不等,功率从20毫瓦到300毫瓦不等。ISA、软件堆栈和实现都是开放的。
开放的简单体系结构与安全性是协同的。
首先,安全专家不相信通过“隐藏”实现的安全性,因此实现开源很有吸引力,而开源的实现需要开放的体系提供FPGA,因此架构师可以使用FPGA,而不需要先购买硬件并建立实验室。
为了记录芯片面积和功率的数字,下一个外层结构。
同样重要的是,增加能够围绕安全架构进行创新的人员和组织的数量。专有架构限制了员工的参与,但是开放架构允许学术界和业界所有较好的的“头脑”来帮助共同实现安全性。
收关,RISC-V的简单性使得它的实现更容易检查。
此外,开放的架构、实现和软件栈,加上FPGA的可塑性,意味着架构师可以在线部署和评估新的解决方案,并每周迭代它们,而不是每年迭代一次。虽然FPGA比定制芯片慢10倍,但这种性能仍然足以支持在线用户。
我们希望开放式架构成为架构师和安全专家进行硬件/软件协同设计的典范。
轻量级硬件开发
由Beck等人撰写的《轻量级软件开发》(The Manifesto for Agile Software Development,2011)彻底改变了软件开发方式,克服了瀑布式开发中传统的详细计划和文档的频繁失败。小型编程团队在开始下一次迭代之前快速开发工作原型(但不完整)并获得了客户反馈。轻量级开发的scrum版本汇集了5到10个程序员的团队,每次迭代执行需两到四周的冲刺。
再次受到软件成功的启发,第三个机遇是轻量级硬件开发。对于架构师来说,好消息是现代电子计算机辅助设计(ECAD)工具提高了抽象级别,从而支持轻量级开发,而这种更高的抽象级别增加了设计之间的重用。
但从设计芯片到得到用户反馈的几个月之间,像轻量级软件开发那样申请“硬件四周的冲刺”似乎是不合理的。
下图概述了轻量级开发方法如何通过在适当的级别上更改原型来工作。
最内层是一个软件模拟器,如果模拟器能够满足迭代,那么这一环节是进行更改最容易和最快的地方。
下一级是FPGA,它的运行速度比一个详细的软件模拟器快数百倍。FPGA可以运行像SPEC那样的操作系统和完整的基准测试,从而可以对原型进行更准确的评估。Amazon Web Services在云中使用ECAD工具生成芯片的布局。即使在工具运行之后,在准备生产新的处理器之前,仍然需要一些手动步骤来细化结果。处理器设计人员将此级别称为“Tape-In”。
前四个级别都支持为期四周的冲刺。
出于研究目的,当面积、能量和性能评估是非常准确的时候,我们可以停在Tape-In这个级别上。然而,这就像跑一场长跑,在终点前100码停了下来,尽管在比赛前做了大量的准备工作,运动员还是会错过真正跨越终点线的兴奋和满足。硬件工程师与软件工程师相比,其中一个优势是他们可以构建物理的东西。让芯片重新测量、运行真实的程序并显示给朋友和家人,这是硬件设计的一大乐趣。
许多研究人员认为他们必须在此环节停下来,因为制造一个芯片的成本着实太高了。当设计规模较小的时候,它们出奇的便宜:只需14,000美元即可订购100个1-mm2芯片。在28nm的规格下,1 mm2的面积包含数百万个晶体管,足够容纳一个RISC-V处理器和一个NVLDA加速器。如果设计者的目标是构建一个大型芯片,那么最外层的成本是极其昂贵的,但是架构师可以用小型芯片演示许多新颖的想法。
总结
“黎明前最黑暗。”——托马斯·富勒,1650
为了从历史的教训中获益,架构师必须意识到软件创新也可以激发架构师的兴趣,提高硬件/软件界面的抽象层次可以带来创新机会,并且市场最终会解决计算机架构的争论。 iAPX-432和Itanium说明了架构投资如何超过回报,而S/360,8086和ARM提供了长达数十年的高年度回报,并且看不到尽头。
登纳德缩放比例定律和摩尔定律的终结,以及标准微处理器性能增长的减速,这些都不是必须解决的问题,而是公认的事实,并且提供了让人惊叹的机遇。
高级、特定于领域的语言和体系结构,将架构师从专有指令集的链中解放出来,以及公众对改进安全性的需求,将为计算机架构师带来一个新的黄金时代。
在开源生态系统的帮助下,轻量级开发的芯片将会令人信服,从而加速商业应用。这些芯片中通用处理器的ISA理念很可能是RISC,它经受住了时间的考验。可以期待与上一个黄金时代相同的快速改善,但这一次是在成本、能源、安全以及性能方面。
下一个十年将会是一个全新计算机架构的“寒武纪”大爆发,这意味着计算机架构师在学术界和工业界将迎来一个激动人心的时代。
(信息来源:新智元)














