|
路线栈欢迎您!
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 一路上 于 2023-10-30 23:02 编辑
前言
芯片的CMOS电路的功耗有个计算公式,比较复杂;简单来说功耗跟电压平方成正比,跟频率成正比。因此DVFS(dynamic voltage frequency scaling)负责芯片运行时,对其频率及电压进行调整,以求性能满足的前提下,芯片的功耗尽可能低。 但是仅调频的话,收益是比较小的,因为频率对应着算力,当频率减少,对应的算力也减弱,这样执行时间也会变长。
我们用到软硬结合,软件dvfs framework主要解决两个问题:什么时候调频调压,怎么调频调压。 cpufreq driver提供调频调压的机制,cpufreq governor提供不同的策略,cpufreq core对通用的调频逻辑做抽象,为上层提供功能、接口封装,对下层调用抽象封装的硬件控制接口。 还可以借助频率电压对opp(operating performance points)功能,clk driver、regulator driver对频率及电压做硬件时钟及电压的调整。
注:上图中kernel中箭头方向并非一定正确,只是为了表示cpufreq各子模块错综复杂的关系罢了。
动态电压频率调节(DVFS,DVS,AVS,AVFS)
芯片在设计之初都需要规划好芯片的参数和应用场景,统称为芯片的spec。在spec中通常会定义一个或几个典型的应用场景以及它对应的工作条件如电压、频率和功耗上限等。因此绝大多数芯片的工作条件尤其是电压和频率在一开始就是比较固定的。然而在实际流片后会出现不同芯片的最高频率不同的情况,最主要的原因相信很多人能想到:process variation。一般来说这种variation会导致不同芯片达到相同性能所需要的电压也呈现正态分布,如下图所示:
这就导致有的芯片比目标频率低,可称为Weak Device;有的刚好达到目标频率,可称为Nominal Device;还有的可以达到比既定目标更高的频率,称为Strong Device。由于芯片功耗由以下公式可以算出:
其中C晶体管的电容值,f是信号的频率,V为工作电压,Pstatic则是静态功耗的总和。那么我们就可以看出来因为电压的平方与整体功耗成正比,因此降低工作电压对总体功耗的效果应该最为显著。当芯片的最高频率超出既定指标,那么想通过降低电压来保证性能不变的前提下获得更小的功耗就成了自然而然的想法。
要调整电压就需要引入两个概念:DVS(Dynamic Voltage Scaling)和AVS(Adaptive Voltage Scaling),它们的核心目的都是通过调节芯片整体或者部分power domain的电源电压来实现降低功耗的目的。不同的是DVS会选取一个或者几个电压频率的对应点来固定调节电压,AVS可以更精确地在一定范围内自由调节电压数值。在降低功耗的效果上,根据德州仪器的公开实验数据,AVS最高可以减少60%以上的功耗:
到这里大家应该能明白DVFS代表什么了;DVFS的全称是Dynamic Voltage Frequency Scaling,是IC设计中降低动态功耗的比较常见的概念。它可以根据芯片的性能和功耗需求调整电压和频率,从而在各个不同的工作需求中都已最小的功耗实现需求。
在实现DVFS的过程中,需要一个输出电压控制器,一般来说叫做EMU(Energy Management Unit)。它在芯片中的基本逻辑结构如下:
EMU芯片工作过程中,会根据不同的功耗需求输出不同的电压供给部分或者全部芯片的逻辑部分,从而在满足频率的前提下有效降低整体功耗。
在芯片设计过程中,为了在不同电压和频率条件下满足时序需求,需要在多个coner和多个mode下做时序收敛,也就是通常所说的multi-mode multi-corner。这里的mode不仅仅是功能上区分的function,test等mode,还需要同一功能模式下不同电压的时序,因此采用这种设计的芯片会带来额外的timing signoff复杂度和工作量。
说明:DVFS调整电压和频率仍然是采用固定的几个数值来调节,而对应的还有AVFS(Adaptive Voltage Frequency Scaling)尽管可以更精细地调节,但是在实际中应用却不多,原因在于AVFS会极大地增加timing signoff的难度,一方面很难用少数PVT条件去覆盖所有电压和频率的组合,另一方面想要增加PVT条件可能面临signoff corner过多或者时序库不全需要自己K库的问题。
总结
一个合理优化的系统是将电源管理的观念贯穿于设计的每一个环节,并且平衡考虑多方面因素设计完成的。智能地对微处理器供电电压和运行频率进行调节,非常有利于在保证用户工作效率不降低的条件下节省不必须能耗。
|
|