跳转到主要内容

1.5 集成电路的功耗与能耗趋势

今天,对几乎所有类别的计算机而言,能耗都是设计者面临的最大挑战。首先,电力必须送入芯片并分配到各处;现代微处理器仅电源和接地就要占用数百个引脚和多层互连。其次,消耗的电能会转化为热量,必须将这些热量导出。

从系统角度看功率与能耗

系统体系结构设计者或用户,应如何看待性能、功率和能耗?从系统设计者的角度来看,主要有三个问题需要考虑。

第一,处理器可能需要的最大功率是多少?满足这一需求,可能是确保处理器正确运行的重要条件。例如,如果处理器试图从供电系统汲取超过其供给能力的功率,即所需电流超过系统能够提供的电流,通常就会引起电压下降,进而导致器件工作异常。现代处理器的功耗变化范围很大,峰值电流也很高;因此,它们提供了 voltage indexing 方法,使处理器能够降低运行速度,并在更大的余量内调节电压。显然,这会降低性能。

第二,处理器的持续功耗是多少?这一指标通常称为热设计功耗(thermal design power,TDP),因为它决定了散热要求。TDP 既不是峰值功耗——峰值往往可达到它的 1.5 倍——也不是某次计算实际消耗的平均功率;后者很可能更低。系统的电源通常按超过 TDP 的容量配置,散热系统的设计能力一般应达到或超过 TDP。如果散热不足,处理器的结温可能超过上限,导致器件失效,甚至造成永久性损坏。由于最高功耗以及由此产生的热量和温升,可能超过 TDP 所规定的长期平均水平,现代处理器提供了两种辅助热管理机制。首先,当温度接近结温上限时,电路会降低时钟频率,以降低功耗;如果这一措施无效,第二级热过载保护就会触发,关闭芯片电源。

设计者和用户应考虑的第三个因素是能耗与能效。回想一下,功率就是单位时间内的能量:1 W=每秒 1 J。比较处理器时,应当采用能耗还是功率?一般来说,能耗始终是更合适的指标,因为它与某项具体任务以及完成任务所需的时间相关。具体而言,完成一项工作负载的能耗,等于平均功率乘以该工作负载的执行时间。

因此,要判断两个处理器中哪一个完成某项任务的效率更高,就需要比较执行该任务的能耗,而不是功率。例如,处理器 A 的平均功耗可能比处理器 B 高 20%,但如果 A 只需 B 所用时间的 70% 就能完成任务,它的能耗便是 B 的 1.2×0.7=0.841.2\times0.7=0.84,显然更好。

有人可能认为,在大型服务器或云环境中,工作负载通常可以假定为无穷无尽,所以只考虑平均功率就足够了;这种看法会产生误导。如果云中的处理器全是 B 而不是 A,那么在消耗相同能量的情况下,它完成的工作会更少。用能耗比较不同方案,就能避免这一陷阱。只要工作负载固定,无论是仓库规模的云,还是一部智能手机,比较能耗都是比较计算机方案的正确方法。

这是因为,云的电费和智能手机的续航时间,都由消耗的能量决定。

那么,功耗何时是有用的度量?它最主要的合理用途是作为约束:例如,一颗采用风冷的芯片可能被限制在 300 W 以内。在工作负载固定时,功耗也可以作为指标,但这不过是“每项任务的能耗”这一真正指标的另一种表现形式。

微处理器内部的能耗与功耗

对于 CMOS 芯片,传统上最主要的能量消耗来自晶体管开关,也称为动态能耗(dynamic energy)。每个晶体管所需的能量,与它所驱动的电容负载以及电压平方的乘积成正比:

Energydynamic∝Capacitive load×Voltage2 \mathrm{Energy}_{\mathrm{dynamic}} \propto \mathrm{Capacitive\ load}\times\mathrm{Voltage}^{2}

这里,Energy 为能量,Capacitive load 为电容负载,Voltage 为电压。上式表示一次 0→1→00\to1\to0 或 1→0→11\to0\to1 逻辑转换脉冲的能量。一次单独转换,即 0→10\to1 或 1→01\to0,其能量为:

Energydynamic∝Capacitive load×Voltage2 \mathrm{Energy}_{\mathrm{dynamic}} \propto \mathrm{Capacitive\ load}\times\mathrm{Voltage}^{2}

每个晶体管所需的功率,就是单次转换能量与转换频率的乘积。原书此处列出的公式为:

Energydynamic∝Capacitive load×Voltage2 \mathrm{Energy}_{\mathrm{dynamic}} \propto \mathrm{Capacitive\ load}\times\mathrm{Voltage}^{2}

译注: 原页确实将上式印成了能量关系,并未出现前一句所说的“功率”与“转换频率”。由功率=单次转换能量×每秒转换次数,可直接得到相应关系 Pdynamic∝CV2fswitchP_{\mathrm{dynamic}}\propto CV^2f_{\mathrm{switch}}。上式不是完整的动态功率公式。前两式使用的是比例符号,未写出完整脉冲与单次转换之间的常数因子。

对于固定任务,降低时钟频率可以降低功率,但不能降低能耗。

显然,降低电压能够大幅降低动态功耗和能耗,因此,二十年间电压从 5 V 降到了略低于 1 V。电容负载取决于输出端连接的晶体管数量,以及所用工艺;工艺决定了连线和晶体管的电容。

例:降低电压与频率

问题。 当今一些微处理器采用可调电压设计,电压降低 15% 时,频率也可能降低 15%。这对动态能耗和动态功耗会有什么影响?

解答。 电容保持不变,因此,能耗的变化由电压平方之比决定:

EnergynewEnergyold=(Voltage×0.85)2Voltage2=0.852=0.72 \frac{\mathrm{Energy}_{\mathrm{new}}}{\mathrm{Energy}_{\mathrm{old}}} =\frac{(\mathrm{Voltage}\times0.85)^2}{\mathrm{Voltage}^2} =0.85^2=0.72

也就是动态能耗降至原来的约 72%。计算功率时,还要乘上转换频率之比:

PowernewPowerold=0.72×Frequencyswitched×0.85Frequencyswitched=0.61 \frac{\mathrm{Power}_{\mathrm{new}}}{\mathrm{Power}_{\mathrm{old}}} =0.72\times \frac{\mathrm{Frequency}_{\mathrm{switched}}\times0.85} {\mathrm{Frequency}_{\mathrm{switched}}} =0.61

因此,动态功耗降至原来的约 61%。

工艺从一代演进到下一代时,参与开关的晶体管数量和开关频率的增加,超过了负载电容与电压降低所带来的收益,导致总体功耗和能耗上升。最早的微处理器功耗不到 1 W,最早的 32 位微处理器,例如 Intel 80386,功耗约为 2 W,而一颗 2.4 GHz 的 Intel Xeon Platinum 8380 消耗 270 W。这些热量必须从边长约 2.5 cm 的芯片上散出,因此我们已经接近风冷所能达到的极限,并且在这个位置停留了将近十年。Intel 和 NVIDIA 最近公布的芯片中,有些 TDP 接近 1000 W,需要液冷。

根据前面的公式,如果不能降低电压,也不能增加每颗芯片的功率,那么时钟频率的增长理应放缓。图 1.11 表明,自 2003 年以来,事实正是如此;即使是图 1.1 中每年性能最高的微处理器,也不例外。注意,时钟频率趋平的这一时期,正好对应图 1.1 中性能提升较慢的阶段。

配电、散热和防止局部热点,已经成为日益艰巨的挑战。如今,限制晶体管使用的主要因素是能耗;过去则是硅片面积。因此,尽管时钟频率停滞、供电电压不再下降,现代微处理器仍采用多种技术来努力提高能效:

  1. 把“无事可做”这件事做好。 现在,大多数微处理器都会关闭非活动模块的时钟,以节省能量、降低动态功耗。例如,没有浮点指令执行时,就关闭浮点单元的时钟;某些核心空闲时,就停止这些核心的时钟。

  2. 动态电压频率调节(DVFS)。 第二种技术直接来自前面的公式。PMD、笔记本电脑,甚至服务器,都有活动较少的时段,不必始终运行在最高时钟频率和电压下。现代微处理器通常提供几个可选的时钟频率和电压工作点,以降低功率和能耗。图 1.12 绘出了工作负载下降时,服务器在 2.4、1.8 和 1 GHz 三种时钟频率下通过 DVFS 所能获得的功耗节省。每降低一级,整个服务器的功耗约可节省 10%–15%。

  3. 面向常见情况设计。 PMD 和笔记本电脑经常处于空闲状态,因此,内存和存储设备提供低功耗模式来节省能量。例如,DRAM 提供一系列功耗逐级降低的模式,以延长 PMD 和笔记本电脑的电池续航;磁盘方面也曾有人提出,让磁盘在不使用时进入降低转速的模式,以节省功耗。

    然而,处于这些模式时,DRAM 和磁盘都无法被访问;不论访问频率多低,要读写都必须先恢复到完全活动状态。如前所述,PC 微处理器则是按高工作温度下的重负载使用来设计的,并依赖片上温度传感器判断何时应自动减少活动,以防过热。这种“紧急降速”机制,使制造商能够按更常见的情况进行设计;如果用户确实运行了远比通常情况耗电的程序,再由这一安全机制提供保护。

  4. 超频。 Intel 从 2008 年开始提供 Turbo 模式:芯片判断短时间内以更高时钟频率运行是安全的,就提高频率,可能只加速少数几个核心,直到温度开始上升。例如,2.8 GHz 的 Xeon E-2378G 可以短时间运行在 5.1 GHz,见图 1.11。

    事实上,图 1.1 中自 2008 年起每年性能最高的微处理器,都提供临时超频功能。到 2016 年为止,超频频率通常比标称值高约 10%;此后,Turbo 频率则高出 30%–80%。对于单线程代码,这些微处理器可以只保留一个核心工作、关闭其他核心,并让该核心运行得更快。注意,虽然操作系统能够关闭 Turbo 模式,但开启后,并不会在实际进入加速状态时通知程序员;因此,他们可能惊讶地发现,程序性能竟会随室温而变化!

  5. 异构核心。 手机早已同时采用速度快、功耗高的核心,以及速度较慢、能效更高的核心。例如,Apple iPhone 14 Pro 智能手机的芯片有两个高性能核心和四个高能效核心。目标是在维持用户所期望响应能力的前提下,用能效最高的处理器运行应用,以节省能量。智能手机甚至还配备了面向狭窄领域的专用处理器,以进一步提高这些任务的能效。

从 1978 年到 2022 年的微处理器时钟频率曲线,2003 年后标准频率基本趋平
图 1.11 图 1.1 所列微处理器的时钟频率增长。

图 1.11(续)。 1978–1986 年,时钟频率每年提高不到 15%,性能则每年提高 22%。在 1986–2003 年这个性能年增 52% 的“复兴时期”,时钟频率以每年近 40% 的速度猛增。此后,时钟频率几乎停滞。自 2008 年起,Intel 提供 Turbo 模式,使芯片能够暂时以更高频率运行,直到温度过高。即便是 Turbo 频率,2011–2022 年的年增幅也只有约 2%。

图内术语:Clock rate=时钟频率;year=年;turbo=Turbo 模式。图中的产品名称保留英文,年份与 MHz 数值均为原书数据。

服务器在 2.4、1.8 和 1 GHz 下的功耗与计算负载关系,以及 DVS 节省比例
图 1.12 服务器在三种电压与频率级别下的功耗、计算负载,以及相应的能量节省。

图 1.12(续)。 在 1.8 GHz 下,服务器最多只能处理约三分之二的工作负载,才能不违反服务水平要求;在 1 GHz 下,则只能安全地处理三分之一。引自 Barroso、Hölzle 和 Ranganathan(2019)的图 5.11。

图内术语:Power (% of peak)=功耗占峰值的百分比;Compute load (%)=计算负载百分比;Idle=空闲;DVS savings (%)=动态电压调节带来的节省百分比。

虽然传统上认为动态功耗是 CMOS 功耗的主要来源,静态功耗如今也成为一个重要问题,因为即使晶体管处于关闭状态,仍会有漏电流流过。原书此处列出的公式为:

Energydynamic∝Capacitive load×Voltage2 \mathrm{Energy}_{\mathrm{dynamic}} \propto \mathrm{Capacitive\ load}\times\mathrm{Voltage}^{2}

译注: 原页在静态功耗段落中再次印出了动态能量公式。根据电功率定义,这里应讨论 Pstatic=IleakageVP_{\mathrm{static}}=I_{\mathrm{leakage}}V,其中 IleakageI_{\mathrm{leakage}} 为漏电流。上面的原式仅为忠实呈现源文,不能用来计算静态功耗。

也就是说,静态功耗与器件数量成正比。

因此,即使晶体管闲置,增加晶体管数量也会增加功耗;晶体管尺寸更小的处理器,漏电流还会增大。于是,超低功耗系统甚至会切断非活动模块的供电,即采用电源门控(power gating),以控制漏电造成的损耗。

2011 年,设计目标是将漏电功耗控制在总功耗的 25%;高性能设计的漏电功耗有时远高于这一目标,可达到总功耗的 50%。部分原因是它们拥有大型 SRAM 缓存,而 SRAM 必须持续供电,才能保持所存储的值——SRAM 中的 S 就是 static。要阻止漏电,唯一的办法是关闭芯片部分区域的电源。

最后,处理器仅占整个系统能耗的一部分。因此,采用速度更快、处理器自身能效较低的方案,使系统其余部分更早进入休眠状态,有时反而是合理的。这一策略称为 race-to-halt。

功率和能耗的重要性,促使人们更严格地审视创新方案的效率。如今,主要评价指标是每焦耳完成的任务数,或每瓦性能;过去则关注每平方毫米硅片所提供的性能。这种新指标会影响利用并行性的方式,第 4 章和第 5 章将进一步说明。

能耗限制带来的计算机体系结构转变

随着晶体管技术的进步放缓,体系结构设计者必须从其他方面寻找提高能效的办法。事实上,在给定的能耗预算下,如今很容易设计出这样一种微处理器:它包含的晶体管太多,无法全部同时开启。这种现象称为 dark silicon(暗硅),因为在热约束下,芯片中很大一部分在任何时刻都不能被使用,只能保持“黑暗”。这一认识促使设计者重新审视处理器设计的基本原则,以寻求更高的单位能耗性能。

图 1.13 列出了现代计算机基本构件的能耗,其中一些比值大得令人惊讶。例如,一次 32 位浮点加法消耗的能量,是一次 8 位整数加法的 50 倍。

TSMC 7 nm 工艺下算术运算、SRAM 访问和 DRAM 访问的能耗表及相对能耗柱形图
图 1.13 TSMC 7 nm 工艺节点下,算术运算以及 SRAM、DRAM 访问的能耗比较(Jouppi et al., 2021)。

图内术语:Operation=操作;Energy (pJ)=能量(pJ);Relative Energy=相对能耗。右图编号与下表第一列一一对应,以 8 位整数加法为基准。

编号操作能量(pJ)相对能耗
18 位整数加法0.0071
232 位整数加法0.0304
3BFloat16 加法0.11016
4IEEE FP16 加法0.16023
5IEEE FP32 加法0.38054
68 位整数乘法0.07010
732 位整数乘法1.480211
8BFloat16 乘法0.21030
9IEEE FP16 乘法0.34049
10IEEE FP32 乘法1.310187
11从 8 KB SRAM 读取 32 bit7.5001071
12从 1 MB SRAM 读取 32 bit14.0002000
13从 DDR4 DRAM 读取 32 bit1300.000185,714

不过,最大的差异来自内存:一次 32 位 DRAM 访问的能耗,几乎是一次 8 位加法的 200,000 倍。小型 SRAM 的能效是 DRAM 的 175 倍,这表明,谨慎使用缓存和内存缓冲区至关重要。

“尽量降低每项任务的能耗”这一新设计原则,结合图 1.13 所示的相对能耗,启发了计算机体系结构的一条新方向,第 7 章将加以介绍。领域专用处理器通过减少宽位浮点运算,并配置专用存储器以减少 DRAM 访问,来节省能量;再把节省下来的能量用于支持比传统处理器多 10–1000 个、位宽较窄的算术单元。尽管这种处理器只能完成有限的一组任务,但在这些任务上,它们的速度和能效都远高于通用处理器。

正如医院既有全科医生,也有专科医生一样,在这个重视能耗的世界里,计算机已经成为两类核心的组合:一类是可以承担任何任务的通用核心,另一类是能把少数几件事做得极好、而且效率更高的专用核心。

计算机能耗对全球气候变化的影响

全球气候变化是当今社会面临的一项巨大挑战。计算的快速增长,也理所当然地引发了人们对其碳足迹的担忧。

排放可以分为:

  • 运行排放(operational):来自硬件运行所消耗的能量;对服务器而言,也包括数据中心的额外开销。
  • 隐含排放(embodied):还计入相关各个组成部分在制造过程中产生的碳排放,从芯片制造一直到数据中心建筑施工。

隐含排放成本更难计算,因为必须逐层追溯至最初的制造来源,核算各阶段排放,再把中间各环节直至最终产品的排放累加起来。

运行能耗为:

能耗=执行时间×计算机数量×每台计算机的平均功率 \text{能耗} =\text{执行时间}\times\text{计算机数量} \times\text{每台计算机的平均功率}

对数据中心而言,还有一个反映能量送达内部计算机时效率的因素,称为电能使用效率(Power Usage Effectiveness,PUE),第 6 章将加以介绍。

能耗以千瓦时(kWh)计量,排放以千克二氧化碳当量(CO₂e)计量;CO₂e 也把甲烷等温室气体计算在内。排放量的计算公式为:

CO2e=能耗(kWh)×每 kWh 对应的 CO2e 排放 \mathrm{CO_2e} =\text{能耗(kWh)}\times\text{每 kWh 对应的 }\mathrm{CO_2e}\text{ 排放}

能耗相对容易计算,但最后一项很难确定:根据主要能源来源的不同,各地之间可能相差 5–10 倍(Patterson et al., 2022)。煤炭是最不清洁的能源,天然气较清洁,但仍含碳;太阳能、风能、核能和水电则是无碳能源的例子。以 Google 的能源来源为例,2020 年,其新加坡数据中心所用能源中只有 4% 是无碳能源,而芬兰数据中心的比例达到 94%。即使在同一国家,差异也可能很大:在美国,内华达州数据中心的这一比例为 19%,爱荷华州则达到 93%。Google 之所以能够达到如此高的比例,是通过签约采购可再生能源,降低本地电网供电所对应的碳排放。以爱荷华州为例,那里昼夜都有充足的风能。

计算机体系结构设计者可以通过提高所设计计算机的运行能效,并学习如何降低其制造过程中的隐含碳足迹,帮助减少信息技术的碳足迹。

表格阅读