IPA(Intelligent Power Allocator)模型的核心是利用PID控制器,Thermal Zone的温度作为输入,可分配功耗值作为输出,调节Allocator的频率和电压值。
由Power Management一般开发模型可知,包括模型建立,模型实现,验证。
1 IPA模型
PID控制器在Sustainable Power基础上,根据当前温度和Control Temp之间的差值,来调节可分配功耗值的大小,进而调节Cooling设备的状态,也即调整OPP(Voltage和Frequency组合)。
所谓Sustainable Power是在不同OPP情境下,某一个最大OPP的温度保持基本稳定。比其大者,温度上升明显;比其小者温度保持不变或者下降。这可以通过监测不同OPP对应的温度值,得到一个Sustainable Power。
另一个就是根据当前环境预估下一个场景功耗值。一般认为包括两部分Dynamic Power和Static Leakage,这是由实测过程中得出的经验。Dynamic Power可以认为跟Voltage和Frequency相关;Static Leakage跟Voltage和Temperature有关。根据实测得到的数据,进行分析得到最吻合数据的一组算式。由于的HiKey实测中,Static Leakage比较小,就被忽略了。所以最终Power值就只跟Voltage和Frequency相关,据此就可以算出OPP对应的功耗值。OPP和功耗之间就建立了联系。
在一个重要参数就是PID控制器的参数P、I、D的确定,这部分也存在一定的经验值。需要测试几组不同参数,然后看温度控制效果。
2 IPA测试环境
1. 在最靠近CPU的地方引出测试点。
2. 接出Ground、V+、V-到ARM Energy Probe。
3. 通过软件设置特殊状态:
1. 对于sustainable power需要将8核跑在100%workload。
2. 对于测试Cluster Power和CPU Power就比较复杂,下面单列。
4. 使用Ipython脚本读取Thermal Zone温度和测试点功耗。
HiKey对应的Cluster和CPU功耗状态如下:
Power State |
PD_CPUx/CLKIN |
PDCORTEXA53 |
PD_L2 |
LinuxKernel |
|
CPU |
CPU P-State |
On |
On |
On |
P-State |
WFI |
On, internal clock gating |
On |
On |
C-State |
|
CPU Off |
Off |
On |
On |
C-State |
|
Cluster |
Cluster P-State |
On or Off |
On |
On |
P-State |
Cluster L2 Retention |
Off |
Off |
Retention |
C-State |
|
Cluster Off |
Off |
Off |
Off |
C-State |
3 IPA重要参数
sustainable-power
OPP(MHz) |
Sustainable power |
729 |
2155 |
960 |
3326 |
1200 |
5285 |
sustainable-power在thermal-zone里面,是因为测量的温度是基于thermal-sensors的,然后每个thermal-zone包含若干trips和cooling-maps。
通过观察温度,在729MHz的时候温度不会增加,在960MHz的时候温度缓慢增加,在1200MHz的时候温度增加很快。所以确定sustainable-power在960MHz。
在Thermal框架中有一个work queue会去轮询thermal_zone_device_check,根据Trip类型不同会执行不同的delay&