DVFS介绍
DVFS 即动态电压频率调整,动态技术则是根据
芯片所运行的应用程序对计算能力的不同需要,动态调节芯片的运行频率和电压(对于同一芯片,频率越高,需要的电压也越高),从而达到节能的目的。
CMOS电路主要由动态功耗和静态功耗组成。
动态功耗:Pdyn = Coeff * Voltage^2 * Frequency
静态功耗:V_scale = Voltage^3
T_scale = 2 * T^3- 80 * T^2 + 4700 * T+ 32000
Pstatic = Coeff * T_scale * V_scale
CPUFreq是内核开发者定义的一套支持根据指定的governor动态调整CPU频率和电压的框架模型,它能有效地降低CPU的功耗,同时兼顾CPU的性能。
CPUFreq
1.governor
用于CPU升降频检测,根据系统负载,决定CPU频率,当前包含interactive、userspace等。
2.core
对cpufreq governors和cpufreq driver进行了封装和抽象,并定义了清晰的接口。
3.driver
用于初始化CPU的频率电压表,设置具体CPU的频率。
4.stats
提供cpufreq有关的统计信息。
Devfreq是内核开发者定义的一套支持根据指定的governor动态调整频率和电压的框架模型,它能有效地降低的功耗,同时兼顾性能。
DMC DVFS变频策略
场景变频:
如果DDR固定频率,频率高了,功耗大,频率低了,性能差,很难满足产品需求。针对某些对DDR的需求比较明确的场景,比如跑分,视频,待机等,动态提高或者降低DDR频率,可以满足他们对性能或者功耗的不同需求
负载变频:
场景变频只能覆盖很少一部分场景,除此之外的场景需要根据DDR的利用率动态调整DDR频率,以优化性能和功耗。
根据vop带宽变频:
开启负载变频后,需要增加“auto-min-freq”属性限制最低频率,防止某些场景下提频不及导致闪屏,所以这些场景的功耗仍然有优化的空间,因此引入根据VOP带宽调整DDR频率。
BUS DVFS
除了CPU、GPU、DMC外,还有一些模块也需要动态调频调压,比如PLL、CCI等,我们将他们统一归类到BUS DVFS。在某些平台发现PLL的频率超过一定值后,PLL所在的电压域需要提高电压,否则系统会异常,因此需要根据PLL的频率调整电压。
通过注册clock notifier,监控PLL频率的变化,如果PLL是升频,先抬压再提频,如果PLL是降频,先降频再降压。
更多详细内容请下载附件查看