在过去的三十年中,处理器性能提高了五个数量级,这归功于遵循摩尔定律——即,持续的技术微缩、改进晶体管性能以提高频率、增加(避免重复)集成容量以实现复杂的架构,以及降低每次逻辑运算的能耗以将功耗控制在限制范围内。软件技术的进步,如丰富的多媒体应用和运行时系统,利用了这种性能的爆发式增长,为终端用户提供了更高的生产力、无缝的互联网连接,甚至多媒体和娱乐。
“技术跑步机”将继续运转,提供数十亿晶体管的集成容量;然而,一些基本的物理问题将构成障碍。在本文中,我们将审视这些障碍,描述它们如何改变格局,讨论绕过它们的方法,并预测未来软件技术的进步如何帮助技术跑步机继续运转。
图1显示了过去三十年中计算性能(以每秒百万条指令,或MIPS为单位) लगभग 五个数量级的增长;请注意,性能每两年翻一番。我们已经如此习惯于这种增长,以至于我们理所当然地认为性能将继续每两年翻一番,并且我们据此规划和预测未来的应用。摩尔定律至少在未来十年,甚至更长时间内仍然适用。这是因为工艺技术的进步,例如光刻技术,有望使我们每两年将晶体管数量翻一番。
预计到本十年末将实现万亿次指令/秒(TIPS)的性能。然而,将会出现一些重大的范式转变,“一切照旧”将不再是一种选择。为了实现 TIPS 性能,人们可能会得出结论,操作频率应继续以相同的速率增长,并且晶体管集成必须继续实现更复杂的系统。为了继续提高操作频率,晶体管性能必须提高,并且为了降低功耗,电源电压必须继续降低。因此,阈值电压(开启晶体管所需的电压)必须降低。
晶体管不是一个完美的开关;当它关闭时会泄漏,并且随着阈值电压的降低,这种亚阈值泄漏呈指数级增长。在一个完美的开关中,例如一个灯开关,当它关闭时没有电流流过,灯泡不会发光。如果开关坏了,那么即使它被关闭并且灯泡似乎没有发光,也可能有一些残余电流在流过。
现代晶体管类似于这些坏的灯开关:当它们关闭时会泄漏。更糟糕的是,摩尔定律允许你每两年将这些“坏开关”的数量翻一番,使泄漏每两年呈指数级增长,最终变得明显。
图2显示了当你遵循摩尔定律,每代芯片上的逻辑数量翻一番时,预计的亚阈值泄漏功率的增加。显然,超过 90 纳米后,泄漏功率将达到数百瓦的数量级,并且是不可接受的。即使你只集成 50% 更多的晶体管,泄漏功率仍然会达到数百瓦的数量级,因此也不是一个可接受的解决方案。
图 3 显示了亚阈值泄漏功率占总功率的百分比;它已经接近 50% 的实际极限。当泄漏功率约为总功率的 50% 时,进一步降低电源电压就没有意义了。
芯片的有功功耗(即总功耗减去泄漏)与电源电压 (V) 呈二次关系
有功功率 = CV2f
因此,降低电源电压有利于降低有功功率。然而,随着电源电压的降低,阈值电压也必须降低,这反过来又呈指数级地增加了泄漏功率。这就是为什么当泄漏功率约为总功率的 50% 时,电源电压的降低将不得不放缓,甚至停止,如图 4 所示。请注意,在 0.7 微米制程之前,电源电压一直保持在 5V,并且自那时以来,每代大约降低 30%。但未来会这样吗?
即使你假设电源电压将以每代约 15% 的速度积极降低,并且操作频率将继续以每代约 40% 的速度提高,图 5 显示了如果我们盲目地遵循摩尔定律,每代芯片上的逻辑数量翻一番,预测的有功功率。显然,即使是有功功率也将非常大,令人望而却步。为了说明这一点,如今的高性能奔腾 4 处理器的时钟频率为 3.2 GHz,在 1.4V 电压下功耗约为 75 瓦。安腾 2 处理器的功耗远高于 100 瓦,并且这些处理器的供电电流达到 50 至 100 安培,与汽车电池为启动器提供的电流相当。
因此,尽管晶体管性能将继续提高,尽管速度比过去慢,但每次逻辑运算消耗的能量(和功率)不会像过去那样大幅下降,如图 6 所示。
芯片上的金属互连线一直被认为是未来进一步提高性能的限制因素。随着几何尺寸的缩小,金属互连线(即导线)的尺寸也会缩小,从而增加电阻 (R)。由于空间也随着缩小而缩小,它们也彼此靠得更近,从而增加了电容 (C)。因此,RC 延迟的乘积并没有很好地缩小。通常,会添加更多金属层来弥补这一点。
如果功率和能量真的变成了限制因素,那么芯片上逻辑电路的尺寸将继续缩小,从而减小互连线的长度、R 和 C 以及 RC 延迟。随后,互连线将不再是限制因素。因此,我们的工作是消除功率和能量作为限制因素,以便我们可以开始思考互连线的限制。
在不久的将来,将可以使用数十亿晶体管的集成容量,但由于功耗和能量消耗以及有限的晶体管性能,它将无法使用。那么,如何实现 TIPS 性能?
未来,像过去一样不惜一切代价追求性能将不再是一种选择;系统架构必须强调在给定的功率包络内交付的性能,并且复杂性受到能源效率的限制。存在多种选择,大多数选择都需要架构、系统和应用软件方面的重大范式转变。其基本主题是利用集成容量并交付有价值的性能,即使是集成度更高的速度较慢的晶体管也是如此。
第一步是认识到我们当今微架构和支持软件的低效率。从标量到超标量、乱序和推测执行,以及深流水线,每一代微架构都利用了固有的指令级并行性,但每一代都造成了大约 20% 到 30% 的能源效率损失。由于我们对越来越高的峰值性能的追求,设计人员采用了架构和设计方法来提高峰值性能,但牺牲了能源和功率效率。我们还推动更高的频率作为获得更高性能的一种手段。尽管能源效率低下,但这些架构提供了一个宝贵的优势,即向程序员隐藏了指令级并行性——软件不必显式地了解它。因此,它在向后软件兼容性的前提下提供了更高的性能。现在我们需要重新获得这种能源效率。
英特尔的迅驰处理器是这一策略的一个很好的例子。这款处理器的时钟频率为 1.6 到 1.7 GHz,不再仅仅依靠频率来提供性能,而是利用架构的最新进展来提高每时钟周期执行的指令数,并提供与时钟频率为 2.4 GHz 的奔腾 4 大致相同的整数性能。然而,它的功耗仅为 22 瓦,而奔腾 4 的功耗为 60 到 70 瓦。
下一步是超越指令级并行性,走向线程级和处理器级并行性。在典型的系统中,散热管理和电源输送系统是为最坏情况的应用线程设计的,这种线程主要是缓存受限的,并且使所有硬件单元保持繁忙。然而,在现实中,大多数应用程序线程都有频繁的缓存未命中,并等待来自内存的数据。内存子系统要慢得多,如图 7 所示,处理器必须空闲几个时钟周期才能恢复执行。这在实际应用需求和最坏情况应用需求之间留下了巨大的散热和功率能力差距。
如果软件是以多线程方式编写的,那么可以缩小这种差距,从而更好地利用硬件。在发生缓存未命中的情况下,当处理器等待内存提供数据时,可以生成另一个线程以保持硬件单元繁忙,从而在相同的散热和功率包络内提高整体性能,如图 8 所示。
另一种节能的微架构解决方案是在单个芯片上使用多个处理器,并具有大型共享缓存。这种概念背后的原理是波拉克法则,该法则指出,性能的提高大致与复杂性提高的平方根成正比。换句话说,如果你将处理器中的逻辑电路数量翻一番,那么它只能提供 40% 的性能提升——今天的领先处理器就证明了这一点。另一方面,多处理有可能提供接近线性的性能提升。两个较小的处理器,而不是一个大型单片处理器,有可能提供 70% 到 80% 的性能提升。相比之下,大型单片处理器只能提供 40% 的性能提升。多处理器还有其他好处
多线程和多处理器方案在硬件中实现并不困难,但最大的挑战是软件。编程模型与传统的单线程模型不同。它们需要不同的编程范式和仔细的软件工程实践,但有可能提供超越当今单线程模型的性能。因此,为了交付 TIPS 性能,需要软件方面进行重大范式转变,从当今的指令级并行性时代转向线程级和处理器级并行性。
片上内存,例如更大的缓存,也可以在更低的功耗和能量下提供更高的性能。在过去,我们总是将可用的晶体管预算分配给复杂的逻辑电路,而为片上缓存分配的预算最少,导致处理器缓存不足。缓存内存的功率密度比逻辑电路低一个数量级(参见图 9)。它的泄漏功率可以得到控制,并且片上缓存通常可以提供更高的性能。
内存具有较低的功率密度,因为你通常在每个时钟周期只访问大型内存的一小部分,从而减少了内存中的整体活动。由于内存是一种规则的结构,因此可以预测访问模式,并且易于实施泄漏控制技术。大容量缓存在功率受限的情况下非常有意义,这就是为什么你现在看到越来越多的芯片面积被分配给缓存内存,如图 10 所示。
在吉咖级集成时代,我们必须超越传统的通用计算性能,专注于系统级终端用户性能。应用程序往往有几个专用任务,例如 MPEG 编码和解码、TCP/IP 网络协议处理等等,这些任务今天在通用处理器上处理,但能源效率不高。针对特定任务定制的专用硬件单元在面积、功率和能源效率方面都高出一个数量级或更多。这是因为硬件经过优化以执行预定的一组任务,因此结构紧凑且效率更高。例如,你的汽车和割草机都有内燃机,原则上你可以将你的汽车发动机安装在割草机上,它也能完成同样的工作。但它会高效吗?几乎不可能!
即使在今天,你也看到几种指令集架构实现了单指令流多数据流 (SIMD) 整数和浮点运算,用于多媒体应用,但我们需要更进一步——使用通用处理器以及针对特定任务进行优化和集成的多个专用硬件单元,如图 11 所示。凭借无限的晶体管集成容量(否则由于功率和能量因素而无法使用),利用这种容量在硬件中实现这些功能并以更低的功耗和能量提供有价值的性能将非常有意义。这些专用硬件单元将提供相当于通用性能的几个数量级。
未来将可以使用吉咖级晶体管集成容量,但其使用可能会受到晶体管性能、能量和功耗的限制。不惜一切代价追求性能将不再是一种选择,但我们必须留在技术跑步机上,以交付 TIPS 终端用户性能。有几个新兴的范式,例如从指令级并行性到线程级和处理器级并行性的转变、大型片上缓存以及专用硬件的集成。总之,所有这些范式都有可能交付预期的 TIPS 级性能,前提是应用程序和系统软件采取适当的步骤来利用它们。
谢卡尔·博卡尔 于 1977 年和 1979 年获得物理学学士和硕士学位,并于 1981 年获得圣母大学电气工程硕士学位。他加入英特尔,在那里他从事 8051 系列微控制器、iWarp 多计算机的高速通信链路和英特尔超级计算机的设计工作。博卡尔是英特尔院士和英特尔实验室电路研究主管,研究低功耗、高性能电路和高速信号传输。他还是俄勒冈研究生院的兼职教师,教授数字 CMOS VLSI 设计。
最初发表于 Queue 第1卷,第7期——
在 数字图书馆 中评论本文
迈克尔·马蒂奥利 - 客户端计算硬件中的 FPGA
FPGA(现场可编程门阵列)非常通用。它们被广泛应用于各种应用和行业,在这些应用和行业中使用 ASIC(专用集成电路)在经济上不太可行。尽管在将 FPGA 集成到设备中时,设计人员面临面积、成本和功耗方面的挑战,但它们提供了显著的安全性和性能优势。其中许多优势可以在客户端计算硬件(如笔记本电脑、平板电脑和智能手机)中实现。
克里斯托夫·拉梅特 - NUMA(非一致性内存访问):概述
NUMA(非一致性内存访问)是一种现象,即处理器地址空间中各个点的内存具有不同的性能特征。在当前的处理器速度下,从处理器到内存的信号路径长度起着重要作用。信号路径长度的增加不仅增加了内存的延迟,而且如果信号路径由多个处理器共享,则很快就会成为吞吐量瓶颈。内存的性能差异首先在大型系统上变得明显,在这些系统中,数据路径跨越主板或机箱。这些系统需要修改后的具有 NUMA 支持的操作系统内核,该内核明确了解系统的内存拓扑属性(例如,内存区域所在的机箱),以避免过长的信号路径长度。
比尔·许,马克·索斯尼克-佩雷斯 - 实时 GPU 音频
今天的 CPU 能够为许多流行的应用程序支持实时音频,但一些计算密集型音频应用程序需要硬件加速。本文着眼于一些实时声音合成应用程序,并分享了作者在 GPU(图形处理单元)上实现它们的经验。
大卫·培根,罗德里克·拉巴,苏尼尔·舒克拉 - 面向大众的 FPGA 编程
当审视硬件如何影响计算性能时,我们在一端有 GPP(通用处理器),另一端有 ASIC(专用集成电路)。处理器具有高度的可编程性,但在功率和性能方面通常效率低下。ASIC 实现专用且固定的功能,并提供最佳的功率和性能特性,但任何功能更改都需要完全(且极其昂贵)地重新设计电路。