4、电压与频率调节:动态电压频率调整(DVFS)、自适应电压调节(AVS)、体偏置技术
各位工程师朋友,咱们今天聊点实在的。功耗优化这件事,说白了就是跟电压和频率较劲。你想想看,芯片的功耗公式 P = C·V²·f 摆在那里,V 和 f 是我们可以主动调节的两个旋钮。怎么拧好这两个旋钮,就是本章要讲的核心。
我个人习惯把电压频率调节技术分成三类:DVFS、AVS 和体偏置。它们各有各的脾气,也各有各的适用场景。咱们一个一个来拆解。
4.1 动态电压频率调整(DVFS)
DVFS 是最经典、最常用的技术。它的思路很简单:根据负载动态调整电压和频率。负载重的时候,跑高频高电压;负载轻的时候,降频降压。
我在项目中遇到过这样一个场景:一个视频解码芯片,播放 4K 视频时功耗飙到 3W,但播放 720p 时其实只需要 0.8W。如果不做 DVFS,芯片全程跑在最高性能状态,那 720p 场景下就白白浪费了 2.2W 的功耗。这就是 DVFS 要解决的问题。
DVFS 的实现通常包含以下几个关键环节:
- 负载监测:通过硬件计数器监测 CPU 利用率、总线带宽、任务队列深度等指标
- 策略决策:根据负载信息,决定下一时刻的目标频率和电压
- 频率切换:通过 PLL 或 FLL 调整时钟频率
- 电压切换:通过 PMIC 或片上 LDO 调整供电电压
这里有个容易踩的坑——频率和电压的切换顺序。我刚开始做 DVFS 时,曾经先降电压再降频率,结果芯片直接挂了。为什么呢?因为频率还没降下来,电压已经不够支撑当前频率了,时序就崩了。
下面是一个简单的 DVFS 状态机伪代码,大家可以参考一下:
// DVFS 状态机示例
enum dvfs_state {
LOW_PERF, // 低频低压
MID_PERF, // 中频中压
HIGH_PERF // 高频高压
};
void dvfs_update(uint32_t load) {
if (load > HIGH_THRESHOLD) {
// 升频:先升压,再升频
set_voltage(HIGH_VOLT);
delay_us(10); // 等待电压稳定
set_frequency(HIGH_FREQ);
} else if (load < LOW_THRESHOLD) {
// 降频:先降频,再降压
set_frequency(LOW_FREQ);
delay_us(5);
set_voltage(LOW_VOLT);
}
}
4.2 自适应电压调节(AVS)
AVS 和 DVFS 有什么区别?嗯,这里要注意区分。DVFS 是根据负载来调,而 AVS 是根据芯片本身的工艺偏差和温度来调。说白了,AVS 解决的是「同一款芯片,不同个体之间性能有差异」的问题。
你想想看,同一批晶圆上切下来的芯片,有的体质好,1.0V 就能跑 1GHz;有的体质差,1.1V 才能跑同样的频率。如果所有芯片都用同一个电压,那体质好的芯片就白白多耗了功耗。AVS 就是给每颗芯片「量身定制」电压。
AVS 的典型实现方式有两种:
- 闭环 AVS:通过片上的时序监测电路(比如复制路径、延迟链)实时检测时序裕量,然后反馈调节电压
- 开环 AVS:通过工艺角检测电路(比如环形振荡器)测量芯片的工艺偏差,查表得到对应的电压
我个人更倾向于闭环 AVS,因为它能同时补偿工艺偏差和温度变化。开环 AVS 虽然简单,但温度变化时就不太准了。
4.3 体偏置技术
体偏置(Body Biasing)是个相对小众但效果显著的技术。它通过改变晶体管的衬底偏压来调节阈值电压 Vth,从而影响漏电流和性能。
体偏置分为两种:
- 正向体偏置(FBB):降低 Vth,提高性能,但漏电流增加
- 反向体偏置(RBB):提高 Vth,降低漏电流,但性能下降
我在一个 IoT 芯片项目中用过体偏置。那个芯片大部分时间处于待机状态,漏电流占了总功耗的 60% 以上。我们给待机模块加了 RBB,把漏电流压下去了 40%,待机功耗从 50μW 降到了 30μW。效果非常明显。
但体偏置也有它的局限性:
- 需要额外的负压或正压电源,增加了电源设计的复杂度
- 体偏置的效果在先进工艺节点(比如 7nm 以下)会减弱
- 大电流场景下,体偏置的调节范围有限
4.4 三种技术的对比与协同
这三种技术不是互斥的,而是可以协同工作的。我习惯把它们放在一个统一的框架里:
| 技术 | 调节对象 | 调节粒度 | 响应速度 | 适用场景 |
|---|---|---|---|---|
| DVFS | 频率 + 电压 | 粗粒度(3-10档) | 慢(ms级) | 负载变化大的场景 |
| AVS | 电压 | 细粒度(10-100档) | 中(μs级) | 工艺/温度补偿 |
| 体偏置 | 阈值电压 | 中粒度(3-5档) | 慢(ms级) | 漏电流优化 |
在实际项目中,我通常这样组合使用:
- 宏观层面:用 DVFS 响应负载变化,决定工作点
- 微观层面:用 AVS 微调电压,补偿工艺和温度偏差
- 待机层面:用体偏置压漏电流,降低静态功耗
举个例子,一个手机 SoC 的 CPU 核心:跑游戏时 DVFS 切到高频档,AVS 根据芯片温度微调电压,同时体偏置切到 FBB 提性能;待机时 DVFS 切到最低频,AVS 保持最低安全电压,体偏置切到 RBB 压漏电流。三个技术各司其职,配合默契。
好了,关于电压频率调节的三种核心技术就讲到这里。下一章咱们聊聊时钟门控和电源门控,这两个技术在数字芯片里也是功耗优化的重头戏。到时候见。