龙芯开源社区

 找回密码
 注册新用户(newuser)
查看: 384|回复: 7

计算机架构的新黄金时代

[复制链接]
发表于 2019-9-1 08:46:13 | 显示全部楼层 |阅读模式
对未来计算机架构可能的发展路径,没有人比这两个图灵奖获得者说的更清楚了
2019-01-31 09:46:14 来源:机器之心



标签:
计算机架构   指令集架构   控制存储器   集成电路





John Hennessy 和 David Patterson 是 2017 年图灵奖获得者,目前这两位学者都供职于谷歌,前者是谷歌母公司 Alphabet 的董事会主席,后者任谷歌杰出工程师,致力于研究机器学习和人工智能。他们更为人所知的就是共同完成的计算机系统结构学科「圣经」《计算机体系结构:量化研究方法》了。

本文《计算机架构的新黄金时代》是两人在 2019 年新发表的文章,完整介绍了计算机芯片的发展历程,以及所有架构的未来趋势,值得所有希望了解硬件架构的人阅读。




 楼主| 发表于 2019-9-1 08:48:27 | 显示全部楼层
计算机架构的未来机遇

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

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

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

在多核上运行并行循环(parallel loops)又将性能提升接近 7 倍。优化内存配置又将性能提升了近 19 倍,而通过单指令多数据(SIMD)并行化操作(一个指令执行 16 个 32-bit 运算)的硬件扩展,性能又提升了 8 倍多。也就是说,最终的高度优化版本在多核英特尔处理器上的运行速度是初始 Python 版本的 62,000 多倍。这当然只是一个很小的例子,但我们会期望程序员使用优化库。尽管这夸大了常见的性能差距,但很多程序的性能差距可能达到 100 到 1000 倍。
 楼主| 发表于 2019-9-1 08:49:44 | 显示全部楼层
特定领域的体系结构。一种更加以硬件为中心的设计思路是设计针对特定问题和领域的架构,并给与它们强大(且高效)的性能,因此它们是「特定领域的体系结构(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)编写的目标程序,这些程序可以实现更高的并行性,更好的内存结构访问和表示,并使应用程序更有效地映射到特定域的处理器。
 楼主| 发表于 2019-9-1 08:50:25 | 显示全部楼层
以 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 倍。
 楼主| 发表于 2019-9-1 08:51:11 | 显示全部楼层
这个机会已经带来了大量的架构创新,吸引了很多有竞争力的架构设计思想:

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

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

DNN 架构的雪崩式涌现使计算机架构领域进入了一个有趣的时代。在 2019 年很难预测这些方向中哪些(或者即使有)会赢,但市场肯定会像在解决过去的架构争论一样解决竞争问题。
 楼主| 发表于 2019-9-1 08:52:29 | 显示全部楼层
再次受到软件开发成功的启发,第三次机会是敏捷硬件开发。对架构师来说的一个好消息是,当代电子计算机辅助设计(ECAD)工具提高了抽象水平,使得敏捷开发成为可能,而且这种更高水平的抽象增加了设计的重用性。

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


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

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

很多研究者觉得必须停下来,因为制造芯片的成本太过高昂。当设计作品很小时,它们出奇地便宜。架构师只要花 14,000 美元就可以订购 100 个大小为 1 平方毫米的芯片。在 28 纳米制程上,1 平方毫米的芯片可以容纳数百万晶体管,这对 RISC-V 处理器和 NVLDA 处理器来说足够大了。如果设计者的目标是设计一个较大的芯片,那最外层的成本将非常高,体系架构设计者可以用很多小芯片来阐述很多新想法。
 楼主| 发表于 2019-9-1 08:53:19 | 显示全部楼层
架构师只要花 14,000 美元就可以订购 100 个大小为 1 平方毫米的芯片。 28 纳米制程
 楼主| 发表于 2019-9-1 08:54:00 | 显示全部楼层
原文地址:https://cacm.acm.org/magazines/2 ... chitecture/fulltext
本文为机器之心编译,转载请联系机器之心公众号获得授权。

本版积分规则

Archiver|手机版|小黑屋|Lemote Inc.

GMT+8, 2020-8-9 15:45 , Processed in 0.147856 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表