2、功耗基础:动态功耗与静态功耗的物理本质,以及它们与电压、频率、工艺的关系
好,咱们正式开始聊功耗。说实话,功耗这个话题,我做了十几年芯片设计,越做越觉得它有意思。很多人一上来就背公式,什么P=CV²f,背得滚瓜烂熟。但真要问他——这公式到底怎么来的?为什么电压是平方项?为什么漏电现在这么头疼?能讲清楚的人不多。
今天我就带你把这些底层逻辑捋一遍。搞懂了这些,后面讲时钟门控、电源门控,你才能知道它们到底在解决什么问题。
2.1 动态功耗:芯片干活时烧的电
动态功耗,说白了就是芯片在“动”的时候消耗的能量。你想想看,一个CMOS门电路,从0变1,或者从1变0,总得给电容充放电吧?这个充放电的过程,就是动态功耗的来源。
公式很简单:P_dynamic = α × C × V² × f
我来拆开给你看:
- α(翻转因子):一个时钟周期内,这个节点平均翻转多少次。不是每个时钟都在翻,所以α一般小于1。我见过新手直接设α=1,结果功耗估出来翻了一倍——嗯,流片回来散热压不住,那是真头疼。
- C(负载电容):包括栅电容、连线电容、扩散电容。工艺越先进,线电容占比越大。
- V(电压):核心供电电压。注意,这里是平方项!电压降10%,功耗降19%。所以为什么大家都拼命降电压?原因就在这儿。
- f(频率):时钟频率。频率翻倍,功耗翻倍,线性关系。
核心结论:动态功耗中,电压是最大的杠杆。降电压比降频率划算得多。但电压不能无限降——阈值电压摆在那儿,再低管子就关不死了。
我在一个28nm的项目里遇到过这么个事:为了省电,我们把核心电压从1.1V降到了0.95V,动态功耗直接降了25%。但代价是什么?时序收敛变得极其困难,关键路径的setup slack几乎为0。最后不得不降了100MHz频率才稳住。你看,这就是trade-off。
2.2 静态功耗:芯片闲着也在烧的电
静态功耗,也叫漏电功耗。芯片啥也不干,就通着电,它也在耗电。为什么?因为晶体管不是理想开关。
理想情况下,管子关断时电流为0。但实际呢?沟道里总有点漏电流跑过去。这个漏电流,就是静态功耗的来源。
公式:P_static = I_leakage × V
漏电流主要有这么几种:
| 漏电类型 | 物理本质 | 与工艺的关系 |
|---|---|---|
| 亚阈值漏电 (Isub) | Vgs < Vth时,沟道并未完全关断,载流子扩散 | Vth越低,Isub指数级增大 |
| 栅极漏电 (Igate) | 栅氧化层太薄,电子隧穿通过 | 氧化层厚度<2nm时急剧增加 |
| 栅感应漏电 (GIDL) | 漏端高电场导致耗尽区载流子产生 | 短沟道效应加剧 |
| PN结漏电 | 源/漏与衬底反偏PN结的少子漂移 | 温度升高,漏电翻倍 |
注意:我曾经在40nm节点做过一个IoT芯片,待机功耗要求10μA以下。结果第一次流片回来,常温下测出来15μA。查了半天,发现是某个模块的电源没完全关断,亚阈值漏电叠加了。从那以后,我养成了一个习惯——每个模块的电源域隔离,必须亲自过一遍。
静态功耗有个很讨厌的特性:随温度指数增长。温度每升高10°C,漏电大约翻一倍。你想想看,芯片跑起来发热,发热导致漏电增大,漏电增大又导致更热——这就是正反馈。搞不好就热失控了。
2.3 电压、频率、工艺三者的博弈
好,现在我们把动态和静态放在一起看。你会发现,电压、频率、工艺这三个参数,其实是在互相拉扯。
2.3.1 电压 vs 频率
电压越高,管子开关越快,频率就能跑得更高。但代价是动态功耗按平方增长。反过来,降电压省电,但频率必须跟着降。
这就是DVFS(动态电压频率调节)的基本逻辑:活重的时候,升压提频;活轻的时候,降压降频。我做过一个手机芯片,视频播放时频率跑1.2GHz,电压0.9V;待机时频率降到200MHz,电压压到0.6V。功耗从500mW直接掉到30mW——效果非常明显。
2.3.2 工艺缩放的影响
工艺越先进,栅长越短,阈值电压越低。好处是开关速度快,动态功耗密度降低。但坏处呢?
- 漏电爆炸式增长:Vth降低,亚阈值漏电指数上升。到了7nm以下,静态功耗占比可能超过40%。
- 电压缩放空间变小:以前1.2V降到0.8V很轻松,现在0.7V降到0.6V都费劲——再低管子就关不断了。
- 工艺偏差更严重:同一片wafer上,不同芯片的漏电可能差3倍。你按最差情况设计,功耗就超标;按典型情况设计,良率又出问题。
我的经验:在先进工艺下做低功耗设计,一定要做corner分析。我习惯至少跑5个corner:TT、FF、SS、SF、FS。特别是漏电,FF corner下可能比TT高2-3倍。如果你只按TT设计,量产时等着哭吧。
2.4 动态 vs 静态:谁才是大头?
这个问题没有标准答案,完全看场景。
| 场景 | 动态功耗占比 | 静态功耗占比 | 设计重点 |
|---|---|---|---|
| 高性能CPU(满载) | 80-90% | 10-20% | 降电压、时钟门控 |
| IoT传感器(待机) | 5-10% | 90-95% | 电源门控、低漏电库 |
| 移动SoC(中等负载) | 60-70% | 30-40% | DVFS + 电源门控 |
你看,高性能场景下,动态功耗是主角。但到了IoT这种动不动就睡99%时间的场景,静态功耗就成了老大难。我做过一个BLE芯片,发射时电流8mA,但待机时要求0.5μA。为了这0.5μA,我们花了三个月做电源域划分和retention register设计——静态功耗的优化,有时候比动态功耗更磨人。
2.5 小结:功耗设计的底层逻辑
讲到这里,你应该明白了:
- 动态功耗来自电容充放电,跟电压的平方成正比。降电压是第一优先级。
- 静态功耗来自晶体管漏电,跟阈值电压和温度强相关。先进工艺下越来越头疼。
- 电压、频率、工艺三者互相制约。没有免费的午餐,每个选择都有代价。
我个人习惯,拿到一个新项目,第一件事就是算功耗预算。动态多少,静态多少,哪个是瓶颈。然后针对性地选方案——动态功耗大,上时钟门控;静态功耗大,上电源门控。后面几章,我会把这些技术一个个拆开来讲。
嗯,今天就到这儿。下一章我们聊时钟门控——这玩意儿看起来简单,但用不好反而会翻车。到时候我给你讲讲我踩过的坑。