Skip to content
字数
4596 字
阅读时间
18 分钟

高阶学习讲义:数字集成电路设计 - 第五章 功耗

讲师:王志君学习向导:你的专属学术导师


引言:为什么“功耗”是芯片设计中永恒的战场?

你好,未来的芯片设计大师!

在我们正式开始之前,请看一张图 (引自讲义 P3)。这是一台名为“Frontier”的超级计算机,是目前地球上最快的计算机器。它快得惊人,但它也像一头“电老虎”,峰值功耗高达 27 兆瓦,足以点亮 10,000 个家庭。

[图 3.1:此处应为原文 P3 中关于 Frontier 超级计算机功耗的报道截图]

【背景故事/了解】 这不仅仅是一个有趣的数字,它揭示了一个残酷的现实:几十年来,我们通过把晶体管越做越小来提升性能,但这条路正在撞上一堵无形的墙——“功耗墙” (Power Wall)。芯片产生的热量已经大到难以散去,功耗成本也高到难以承受。AI、大数据中心的蓬勃发展,更是将这个问题推向了风口浪尖 (引自讲义 P4)

我们为什么要学习功耗? 因为功耗不再仅仅是“电费”问题,它已经成为限制芯片性能继续提升的头号瓶颈。一个优秀的设计师,不仅要让芯片“跑得快”,更要让它“跑得省”。理解功耗,就是掌握了开启未来高性能计算之门的钥匙。

这节课,我们的任务不是简单地罗列公式,而是要像侦探一样,去追寻电能在芯片内部的“踪迹”,找出那些消耗能量的“元凶”,并学会用各种巧妙的“战术”去管理和优化它。


第一章:解构功耗 —— 敌人究竟是谁?

在开战之前,我们必须先了解我们的敌人。在电路中,“功耗”到底是什么?

【核心概念/重点】

  1. 瞬时功率 :在任何一个瞬间,流过一个元件的电流 与其两端电压 的乘积。它描述了能量消耗的“瞬时速率”。

  2. 能量 :在一段时间 内,总共消耗了多少能量。它是瞬时功率对时间的累积(积分)。

  3. 平均功耗 :这是我们最关心的指标,代表了芯片在一段时间内的平均能量消耗速率。

(参考讲义 P5)

1.1 一个最简单的例子:给电容充电

让我们通过一个反相器给负载电容 充电的例子 (引自讲义 P7),来建立一个关于功耗的直观“心智模型”。

[图 7.1:此处应为原文 P7 中反相器驱动负载电容的电路图]

  • 场景: 输入从 '1' 变为 '0',PMOS 导通,电源 开始给电容 充电,直到电容电压也达到

你可能会想:电源输出了能量,电容储存了能量,这不就是能量守恒吗?功耗在哪里?

💡 这里有一个极其重要的、反直觉的结论:

  • 电源为了给电容充电,总共送出的能量是
  • 而最终储存在电容里的能量只有

那另外一半能量去哪了?

答案是:在充电路径上的 PMOS 管(可以看作一个可变电阻)中以热量的形式耗散掉了!

一句话总结:在 CMOS 电路中,每次对电容的充电过程,都必然伴随着能量的损耗。电源付出的能量,一半储存在电容里,另一半在路径上变成了热。

同样,当输入从 '0' 变为 '1',NMOS 导通,电容 中储存的 能量会通过 NMOS 接地放电,这部分能量也完全转化为热量耗散掉了。

所以,一次完整的 0 -> 1 -> 0 翻转,总功耗就来自于充电和放电过程中的热量损失。

1.2 功耗的两个“真面目”

通过上面的例子,我们发现功耗主要在电路“动”的时候产生。但实际上,即使电路“静止”,也存在能量消耗。这就引出了功耗的两个主要来源 (引自讲义 P10)

  1. 动态功耗 (Dynamic Power):电路在进行逻辑翻转(开关)时产生的功耗。这是我们刚才分析的主力,就像汽车行驶时烧的油。
  2. 静态功耗 (Static Power):电路处于稳定状态(没有翻转)时,由于晶体管的“泄漏”而产生的功耗。它就像汽车停着时,油箱里慢慢蒸发的汽油。

在早期的工艺中,静态功耗微不足道,可以忽略。但随着工艺节点不断缩小 (如图 10.1 所示),晶体管越来越小,“漏电”现象愈发严重,静态功耗已经成为了一个不可忽视的“隐形杀手”。 ![[Pic/Pasted image 20251025235200.png]] [图 10.1:此处应为原文 P10 中显示随着工艺节点缩小,静态功耗(Subthreshold leakage)占比急剧上升的图表]

接下来,我们将逐一深入这两个战场。 ![[Pic/Pasted image 20251026001900.png]]


第二章:动态功耗 —— 看得见的能量消耗

动态功耗是数字电路最主要的功耗来源,它又分为两部分:

  • 开关功耗 (Switching Power):我们上面分析的对负载电容充放电所产生的功耗。
  • 短路功耗 (Short-circuit Power):在输入信号翻转的极短时间内,PMOS 和 NMOS 可能会同时导通,形成从 到地的短暂“短路”,产生功耗。通常这部分占比较小。

我们主要关注开关功耗

【关键技能/核心考点】

从前面的分析我们知道,一次 0 -> 1 的翻转消耗能量 (来自电源),一次 1 -> 0 的翻转消耗能量 (来自电容)。如果一个节点以频率 进行翻转,那么它的平均功耗就是:

  • 一句话总结:这就是动态功耗的黄金公式!我们所有降低动态功耗的努力,都是围绕着这个公式里的四个变量展开的。
    • 活动因子 (Activity Factor)。代表在一个时钟周期内,节点发生 0->1 翻转的概率。它反映了电路的“繁忙”程度。
    • 负载电容 (Capacitance)。包括下游门的栅电容、自身扩散电容和连线电容。
    • 电源电压 (Supply Voltage)
    • 时钟频率 (Clock Frequency)

现在,我们的任务非常明确了:想尽办法降低这四个参数中的任何一个!

2.1 降低活动因子 () —— 让电路“懒”一点

核心思想:不工作的时候就别动。

【关键技能/核心考点】 最有效的技术是门控时钟 (Clock Gating) (引自讲义 P15)

  • 为什么需要它? 在一个大的模块中,可能只有一小部分在某个时刻是活跃的。但时钟信号会一直“不知疲倦”地送到每一个触发器,即使数据没有变化,时钟本身的翻转也会在时钟网络上产生巨大的功耗。

  • 它做了什么? 用一个使能信号(enable)去“控制”时钟的通断。当模块空闲时,enable 为低,时钟信号被“关掉”,从而让整个模块的电路活动因子 降为 0。 ![[Pic/Pasted image 20251026001921.png]] [图 15.1:此处应为原文 P15 中理想的门控时钟波形图]

  • 常见问题:简单的用一个与门来实现门控时钟 (如图 16.1) 会产生毛刺 (Glitches),这是非常危险的。

  • 解决方案:采用“基于锁存器的无毛刺门控时钟”电路 (如图 17.1)。这是业界标准的做法,可以保证时钟信号的干净、完整。 ![[Pic/Pasted image 20251026002252.png]] [图 17.1:此处应为原文 P17 中改进后的门控时钟电路结构图]

2.2 降低电容 () —— 精简设计,短小精悍

核心思想:用更小的晶体管,走更短的路。

  • 怎么做?
    1. 合理选择器件尺寸:在不影响时序的前提下(非关键路径),使用最小尺寸的逻辑门。
    2. 优化物理布局:在布局布线阶段,将相互关联的模块放得更近,缩短连线长度,从而减小连线电容。

2.3 降低电源电压 () —— 最有效的“核武器”

核心思想:电压对功耗的影响是平方关系!稍微降低一点电压,功耗就能显著下降。

【关键技能/核心考点】

  1. 多电压域设计 (Multi-Voltage Domain)

    • 为什么需要它? 芯片上的不同模块对性能要求不同。核心CPU可能需要高电压跑得飞快,而慢速的外设(如UART)则完全不需要那么高的电压。
    • 它做了什么? 将芯片划分为不同的“电压孤岛”,给高性能模块提供高电压 (),给低性能模块提供低电压 (),从而在满足性能的同时大幅节省功耗。
    • 挑战:当信号需要从低电压域传到高电压域时,会出现驱动能力不足的问题。此时需要一个专门的电路——电平转换器 (Level Shifter) 来解决 (引自讲义 P24)
  2. 动态电压调整 (DVS - Dynamic Voltage Scaling)

    • 核心思想:更进一步!根据芯片当前的负载,动态地调整其供电电压和工作频率。
    • 应用场景:你的手机在玩大型游戏时,处理器会全速运行(高电压、高频率);当你看电子书时,处理器则会进入“节能模式”(低电压、低频率)。这就是 DVS 在起作用 (引自讲义 P25)

2.4 降低频率 () —— 工作得更“聪明”

核心思想:能慢则慢。

  • 多时钟域设计 (Multi-Clock Domain):和多电压域类似,为芯片上不同速率的模块提供不同频率的时钟 (参考讲义 P26 的 STM32 时钟系统图)
  • 架构优化(这是一个更高级的思想,我们将在第四章详述) 通过并行处理或流水线等架构级技术,可以在不降低系统吞吐率的前提下,降低单个模块的工作主频。

第三章:静态功耗 —— 看不见的“内部损耗”

现在我们来对付那个“隐形杀手”——静态功耗,也叫泄漏功耗 (Leakage Power)。

【核心概念/重点】 静态功耗主要来自几个方面 (引自讲义 P29)

  1. 亚阈值泄漏 (Subthreshold Leakage):这是最主要的泄漏来源。理想情况下,当栅极电压 低于阈值电压 时,晶体管应该完全截止。但实际上,仍然会有一股微弱的电流从漏极流向源极。这就像一个没有完全关紧的水龙头。
  2. 栅泄漏 (Gate Leakage):随着工艺发展,栅极的绝缘层(二氧化硅)做得越来越薄,薄到电子可以直接“隧穿”过去,形成从栅极到沟道的泄漏电流。
  3. 结泄漏 (Junction Leakage):源/漏极与衬底之间形成的PN结的反向偏置泄漏。 ![[Pic/Pasted image 20251026010442.png]] [图 29.1:此处应为原文 P29 中各种泄漏电流随阈值电压 Vt 变化的图表]

3.1 如何“关紧水龙头”?

【关键技能/核心考点】

  1. 电源门控 (Power Gating)
    • 核心思想:如果一个模块长时间不用,那就干脆把它的电源给断了!
    • 它做了什么? (引自讲义 P32) 在模块的供电路径上串联一个“电源开关管”(通常是一个头开关 Header Switch 或脚开关 Footer Switch)。当模块进入休眠 (sleep) 模式时,这个开关管断开,彻底切断泄漏路径。
    • 挑战:模块被“断电”后,其内部状态会丢失,并且重新“上电”需要一定的唤醒时间。

[图 32.1:此处应为原文 P32 中电源门控的结构示意图]

  1. 可变阈值CMOS (Variable Threshold CMOS)
    • 核心思想:通过改变晶体管的体偏压 (Body Bias) 来动态调整其阈值电压
    • 它做了什么? (引自讲义 P33)
      • 工作模式:施加正向体偏压,降低 ,让晶体管导通能力更强,性能更高。
      • 休眠模式:施加反向体偏压,升高 ,让晶体管截止得更彻底,从而极大地减小亚阈值泄漏

第四章:战略层面 —— 架构级的降功耗艺术

前面我们讨论的都是“战术”层面的技术。而在设计的最高层——体系结构层面,我们可以做出影响更深远的决策。

【核心概念/重点】

  1. 并行性 (Parallelism) 与流水线 (Pipelining) (引自讲义 P36)

    • 知识回顾与连接:还记得我们在第二章提到的降低频率 吗?但降低频率会影响性能,怎么办?
    • 解决方案:用面积换功耗。
      • 并行:用两个相同的处理单元,每个都工作在原来一半的频率下,来完成同样的工作量。总性能不变,但由于频率减半,功耗大幅降低。
      • 流水线:将一个长的计算路径切成多段,虽然总延迟可能略增,但允许我们提高时钟频率或者在相同频率下降低电压。

    一句话总结:架构师可以通过并行和流水线设计,为后续在电压和频率上进行功耗优化创造巨大的空间。

  2. 异构架构 (Heterogeneous Architecture)

    • 核心思想:用最合适的工具做最合适的事。与其用一个通用的、高功耗的CPU去处理所有任务,不如集成一些专用的、低功耗的硬件加速器(如图像处理单元、AI计算单元)来分担计算密集型任务。
  3. 电源管理 (Power Management)

    • 在系统层面,定义多种电源管理模式,如 Active, Sleep, Deep Sleep 等 (参考讲义 P37 的 Intel Atom 电源模式图)。根据应用场景的需求,让系统在不同的功耗状态之间灵活切换,实现极致的能效比。

第五章:总结 —— 一场贯穿设计全流程的战争

恭喜你,我们已经完整地梳理了功耗这个庞大而重要的话题。

【本章小结】

  • 电路功耗的敌人有两个:动态功耗(开关时产生)和静态功耗(静止时泄漏)。
  • 动态功耗的核心是黄金公式 。我们的一切努力都是为了降低公式中的某个参数。
    • :门控时钟
    • :小尺寸器件、优良布局
    • :多电压域、DVS
    • :多时钟域、架构优化
  • 静态功耗的元凶是各种泄漏电流。我们的主要武器是:
    • 电源门控:彻底断电
    • 可变阈值CMOS:动态调整
  • 低功耗设计是一个系统工程,它贯穿于从系统架构物理实现的每一个环节 (引自讲义 P38 的层次化设计表格)。越是在设计的上层(系统级、架构级)进行优化,其带来的节能效果越显著。

希望通过这次学习,你不仅掌握了功耗的计算和优化方法,更能建立起一种“功耗导向”的设计思维。在未来的设计生涯中,时刻将能效比作为衡量你作品优劣的核心标准之一。

【课后作业与思考】 请完成讲义 P39 上的作业:5.1, 5.2, 5.4。 思考题:为什么说降低电源电压 () 是一把“双刃剑”?它在降低功耗的同时,会带来什么负面影响?(提示:可以从电路的延迟角度思考)

贡献者

页面历史