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 的 ,显然更好。
有人可能认为,在大型服务器或云环境中,工作负载通常可以假定为无穷无尽,所以只考虑平均功率就足够了;这种看法会产生误导。如果云中的处理器全是 B 而不是 A,那么在消耗相同能量的情况下,它完成的工作会更少。用能耗比较不同方案,就能避免这一陷阱。只要工作负载固定,无论是仓库规模的云,还是一部智能手机,比较能耗都是比较计算机方案的正确方法。
这是因为,云的电费和智能手机的续航时间,都由消耗的能量决定。
那么,功耗何时是有用的度量?它最主要的合理用途是作为约束:例如,一颗采用风冷的芯片可能被限制在 300 W 以内。在工作负载固定时,功耗也可以作为指标,但这不过是“每项任务的能耗”这一真正指标的另一种表现形式。
微处理器内部的能耗与功耗
对于 CMOS 芯片,传统上最主要的能量消耗来自晶体管开关,也称为动态能耗(dynamic energy)。每个晶体管所需的能量,与它所驱动的电容负载以及电压平方的乘积成正比:
这里,Energy 为能量,Capacitive load 为电容负载,Voltage 为电压。上式表示一次 或 逻辑转换脉冲的能量。一次单独转换,即 或 ,其能量为:
每个晶体管所需的功率,就是单次转换能量与转换频率的乘积。原书此处列出的公式为:
译注: 原页确实将上式印成了能量关系,并未出现前一句所说的“功率”与“转换频率”。由功率=单次转换能量×每秒转换次数,可直接得到相应关系 。上式不是完整的动态功率公式。前两式使用的是比例符号,未写出完整脉冲与单次转换之间的常数因子。
对于固定任务,降低时钟频率可以降低功率,但不能降低能耗。
显然,降低电压能够大幅降低动态功耗和能耗,因此,二十年间电压从 5 V 降到了略低于 1 V。电容负载取决于输出端连接的晶体管数量,以及所用工艺;工艺决定了连线和晶体管的电容。
例:降低电压与频率
问题。 当今一些微处理器采用可调电压设计,电压降低 15% 时,频率也可能降低 15%。这对动态能耗和动态功耗会有什么影响?
解答。 电容保持不变,因此,能耗的变化由电压平方之比决定:
也就是动态能耗降至原来的约 72%。计算功率时,还要乘上转换频率之比:
因此,动态功耗降至原来的约 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 中性能提升较慢的阶段。
配电、散热和防止局部热点,已经成为日益艰巨的挑战。如今,限制晶体管使用的主要因素是能耗;过去则是硅片面积。因此,尽管时钟频率停滞、供电电压不再下降,现代微处理器仍采用多种技术来努力提高能效:
把“无事可做”这件事做好。 现在,大多数微处理器都会关闭非活动模块的时钟,以节省能量、降低动态功耗。例如,没有浮点指令执行时,就关闭浮点单元的时钟;某些核心空闲时,就停止这些核心的时钟。
动态电压频率调节(DVFS)。 第二种技术直接来自前面的公式。PMD、笔记本电脑,甚至服务器,都有活动较少的时段,不必始终运行在最高时钟频率和电压下。现代微处理器通常提供几个可选的时钟频率和电压工作点,以降低功率和能耗。图 1.12 绘出了工作负载下降时,服务器在 2.4、1.8 和 1 GHz 三种时钟频率下通过 DVFS 所能获得的功耗节省。每降低一级,整个服务器的功耗约可节省 10%–15%。
面向常见情况设计。 PMD 和笔记本电脑经常处于空闲状态,因此,内存和存储设备提供低功耗模式来节省能量。例如,DRAM 提供一系列功耗逐级降低的模式,以延长 PMD 和笔记本电脑的电池续航;磁盘方面也曾有人提出,让磁盘在不使用时进入降低转速的模式,以节省功耗。
然而,处于这些模式时,DRAM 和磁盘都无法被访问;不论访问频率多低,要读写都必须先恢复到完全活动状态。如前所述,PC 微处理器则是按高工作温度下的重负载使用来设计的,并依赖片上温度传感器判断何时应自动减少活动,以防过热。这种“紧急降速”机制,使制造商能够按更常见的情况进行设计;如果用户确实运行了远比通常情况耗电的程序,再由这一安全机制提供保护。
超频。 Intel 从 2008 年开始提供 Turbo 模式:芯片判断短时间内以更高时钟频率运行是安全的,就提高频率,可能只加速少数几个核心,直到温度开始上升。例如,2.8 GHz 的 Xeon E-2378G 可以短时间运行在 5.1 GHz,见图 1.11。
事实上,图 1.1 中自 2008 年起每年性能最高的微处理器,都提供临时超频功能。到 2016 年为止,超频频率通常比标称值高约 10%;此后,Turbo 频率则高出 30%–80%。对于单线程代码,这些微处理器可以只保留一个核心工作、关闭其他核心,并让该核心运行得更快。注意,虽然操作系统能够关闭 Turbo 模式,但开启后,并不会在实际进入加速状态时通知程序员;因此,他们可能惊讶地发现,程序性能竟会随室温而变化!
异构核心。 手机早已同时采用速度快、功耗高的核心,以及速度较慢、能效更高的核心。例如,Apple iPhone 14 Pro 智能手机的芯片有两个高性能核心和四个高能效核心。目标是在维持用户所期望响应能力的前提下,用能效最高的处理器运行应用,以节省能量。智能手机甚至还配备了面向狭窄领域的专用处理器,以进一步提高这些任务的能效。

图 1.11(续)。 1978–1986 年,时钟频率每年提高不到 15%,性能则每年提高 22%。在 1986–2003 年这个性能年增 52% 的“复兴时期”,时钟频率以每年近 40% 的速度猛增。此后,时钟频率几乎停滞。自 2008 年起,Intel 提供 Turbo 模式,使芯片能够暂时以更高频率运行,直到温度过高。即便是 Turbo 频率,2011–2022 年的年增幅也只有约 2%。
图内术语:Clock rate=时钟频率;year=年;turbo=Turbo 模式。图中的产品名称保留英文,年份与 MHz 数值均为原书数据。

图 1.12(续)。 在 1.8 GHz 下,服务器最多只能处理约三分之二的工作负载,才能不违反服务水平要求;在 1 GHz 下,则只能安全地处理三分之一。引自 Barroso、Hölzle 和 Ranganathan(2019)的图 5.11。
图内术语:Power (% of peak)=功耗占峰值的百分比;Compute load (%)=计算负载百分比;Idle=空闲;DVS savings (%)=动态电压调节带来的节省百分比。
虽然传统上认为动态功耗是 CMOS 功耗的主要来源,静态功耗如今也成为一个重要问题,因为即使晶体管处于关闭状态,仍会有漏电流流过。原书此处列出的公式为:
译注: 原页在静态功耗段落中再次印出了动态能量公式。根据电功率定义,这里应讨论 ,其中 为漏电流。上面的原式仅为忠实呈现源文,不能用来计算静态功耗。
也就是说,静态功耗与器件数量成正比。
因此,即使晶体管闲置,增加晶体管数量也会增加功耗;晶体管尺寸更小的处理器,漏电流还会增大。于是,超低功耗系统甚至会切断非活动模块的供电,即采用电源门控(power gating),以控制漏电造成的损耗。
2011 年,设计目标是将漏电功耗控制在总功耗的 25%;高性能设计的漏电功耗有时远高于这一目标,可达到总功耗的 50%。部分原因是它们拥有大型 SRAM 缓存,而 SRAM 必须持续供电,才能保持所存储的值——SRAM 中的 S 就是 static。要阻止漏电,唯一的办法是关闭芯片部分区域的电源。
最后,处理器仅占整个系统能耗的一部分。因此,采用速度更快、处理器自身能效较低的方案,使系统其余部分更早进入休眠状态,有时反而是合理的。这一策略称为 race-to-halt。
功率和能耗的重要性,促使人们更严格地审视创新方案的效率。如今,主要评价指标是每焦耳完成的任务数,或每瓦性能;过去则关注每平方毫米硅片所提供的性能。这种新指标会影响利用并行性的方式,第 4 章和第 5 章将进一步说明。
能耗限制带来的计算机体系结构转变
随着晶体管技术的进步放缓,体系结构设计者必须从其他方面寻找提高能效的办法。事实上,在给定的能耗预算下,如今很容易设计出这样一种微处理器:它包含的晶体管太多,无法全部同时开启。这种现象称为 dark silicon(暗硅),因为在热约束下,芯片中很大一部分在任何时刻都不能被使用,只能保持“黑暗”。这一认识促使设计者重新审视处理器设计的基本原则,以寻求更高的单位能耗性能。
图 1.13 列出了现代计算机基本构件的能耗,其中一些比值大得令人惊讶。例如,一次 32 位浮点加法消耗的能量,是一次 8 位整数加法的 50 倍。

图内术语:Operation=操作;Energy (pJ)=能量(pJ);Relative Energy=相对能耗。右图编号与下表第一列一一对应,以 8 位整数加法为基准。
| 编号 | 操作 | 能量(pJ) | 相对能耗 |
|---|---|---|---|
| 1 | 8 位整数加法 | 0.007 | 1 |
| 2 | 32 位整数加法 | 0.030 | 4 |
| 3 | BFloat16 加法 | 0.110 | 16 |
| 4 | IEEE FP16 加法 | 0.160 | 23 |
| 5 | IEEE FP32 加法 | 0.380 | 54 |
| 6 | 8 位整数乘法 | 0.070 | 10 |
| 7 | 32 位整数乘法 | 1.480 | 211 |
| 8 | BFloat16 乘法 | 0.210 | 30 |
| 9 | IEEE FP16 乘法 | 0.340 | 49 |
| 10 | IEEE FP32 乘法 | 1.310 | 187 |
| 11 | 从 8 KB SRAM 读取 32 bit | 7.500 | 1071 |
| 12 | 从 1 MB SRAM 读取 32 bit | 14.000 | 2000 |
| 13 | 从 DDR4 DRAM 读取 32 bit | 1300.000 | 185,714 |
不过,最大的差异来自内存:一次 32 位 DRAM 访问的能耗,几乎是一次 8 位加法的 200,000 倍。小型 SRAM 的能效是 DRAM 的 175 倍,这表明,谨慎使用缓存和内存缓冲区至关重要。
“尽量降低每项任务的能耗”这一新设计原则,结合图 1.13 所示的相对能耗,启发了计算机体系结构的一条新方向,第 7 章将加以介绍。领域专用处理器通过减少宽位浮点运算,并配置专用存储器以减少 DRAM 访问,来节省能量;再把节省下来的能量用于支持比传统处理器多 10–1000 个、位宽较窄的算术单元。尽管这种处理器只能完成有限的一组任务,但在这些任务上,它们的速度和能效都远高于通用处理器。
正如医院既有全科医生,也有专科医生一样,在这个重视能耗的世界里,计算机已经成为两类核心的组合:一类是可以承担任何任务的通用核心,另一类是能把少数几件事做得极好、而且效率更高的专用核心。
计算机能耗对全球气候变化的影响
全球气候变化是当今社会面临的一项巨大挑战。计算的快速增长,也理所当然地引发了人们对其碳足迹的担忧。
排放可以分为:
- 运行排放(operational):来自硬件运行所消耗的能量;对服务器而言,也包括数据中心的额外开销。
- 隐含排放(embodied):还计入相关各个组成部分在制造过程中产生的碳排放,从芯片制造一直到数据中心建筑施工。
隐含排放成本更难计算,因为必须逐层追溯至最初的制造来源,核算各阶段排放,再把中间各环节直至最终产品的排放累加起来。
运行能耗为:
对数据中心而言,还有一个反映能量送达内部计算机时效率的因素,称为电能使用效率(Power Usage Effectiveness,PUE),第 6 章将加以介绍。
能耗以千瓦时(kWh)计量,排放以千克二氧化碳当量(CO₂e)计量;CO₂e 也把甲烷等温室气体计算在内。排放量的计算公式为:
能耗相对容易计算,但最后一项很难确定:根据主要能源来源的不同,各地之间可能相差 5–10 倍(Patterson et al., 2022)。煤炭是最不清洁的能源,天然气较清洁,但仍含碳;太阳能、风能、核能和水电则是无碳能源的例子。以 Google 的能源来源为例,2020 年,其新加坡数据中心所用能源中只有 4% 是无碳能源,而芬兰数据中心的比例达到 94%。即使在同一国家,差异也可能很大:在美国,内华达州数据中心的这一比例为 19%,爱荷华州则达到 93%。Google 之所以能够达到如此高的比例,是通过签约采购可再生能源,降低本地电网供电所对应的碳排放。以爱荷华州为例,那里昼夜都有充足的风能。
计算机体系结构设计者可以通过提高所设计计算机的运行能效,并学习如何降低其制造过程中的隐含碳足迹,帮助减少信息技术的碳足迹。