IPA(Intelligent PowerAllocation)是由ARM开发的符合linux内核thermalframework的governor,代码中的名字为power_allocator,旨在满足温控效果的条件下最大化性能。
IPA背景
熟悉ARM终端芯片系统的开发人员,应该对EAS(Energy Aware Scheduler)、Energy/Power Model不陌生,IPA正是这种能效思想在温控领域的体现。基于如下理论:
- SoC的温度与功耗成正相关,功耗越高则温度越高
- Soc的功耗主要由其上的IP Core(CPU、GPU等)消耗
因此,可以通过控制功耗达到控制温度的目的,通过在各个IP Core间合理分配功耗可以最大化温控下的性能表现。基于上述理论,IPA实现包含了两大核心功能:基于PID的温度闭环控制器、Power Allocator(PA)。
为什么需要IPA governor
为了更好的说明IPA的开发目的,这里以CPU上常使用的step-wise governor作对比,看看传统governor的优点及不足。
Step-wise governor
作为CPU温控常用的governor,step-wise在温控管理上有着良好的表现。Step-wise将温度趋势分为三种:上升、下降、稳定,根据配置的温度触发点(TripPoint)及温度趋势以步进的方式调节CPU的状态,具体来讲就是调节频率。比如温度已经超过触发点同时温度处于上升状态,则step-wise就会将CPU的coolingstate上调一级(对应操作是频率降低),然后继续轮询CPU的温度,通过判断温度趋势再执行相应动作。
上述过程至少存在两个缺点:
1)该控制属于开环控制,step-wise只是根据配置及温度趋势机械地进行步进调节,它并不关心此次的调节动作是否能够达到温控的目的。
2)Step-wise直接控制CPU的频率,在温度及其趋势确定的情况下,则相应的CPU频率也就确定,这对于性能会产生不利影响,特别是移动终端系统上极短时间的性能提升对温升影响较小,但能更好的改善性能体验。
IPA的优点
IPA实现了闭环控制,通过闭环调节使得升温时温度可以稳定在目标温度处,提高控制精度。
IPA实现了多个IP core之间Power的动态分配,实现资源的优化配置。以小核、大核、GPU为控制对象来讲,即使温度已经达到目标温度,但是根据各个小核、大核、GPU的负载情况,最需要性能的处理器仍然有可能跑到最高频率,这种基于负载的power动态分配策略对性能比较友好。
IPA温控效果模拟
当温度超过Tswitch_on时,IPA governor开始工作,通过PID controller闭环控制,使温度能够稳定在Ttarget,并尽可能减少波动,实现预期的温度控制目标。当整体温度下降到Tswitch_on时,IPA governor停止工作。
IPA简化框架
对于IPA来讲,主要的输入为温度和各个Core的性能需求。温度可以来自SOC,也可以来自板温,IPA把采集温度与目标控制温度的温差作为控制输入。各个IP Core的性能需求是通过当前的负载来计算的,然后利用OPP(Operating Performance Point)及EM(Energy Model)转换为Power Request作为IPA的输入。而IPA的输出是PowerGranted,然后再通过OPP及EM转换为性能指标(比如最大运行频率)。如此的循环往复最终实现对硬件的温度控制。
IPA功能
IPA governor包含两个核心功能PID温度控制器和PA(Power Allocator)。PIDController实现PID闭环控制,用于温度的跟踪控制。PowerAllocator实现基于核心负载的Power Budget分配。
PID温度控制器
PID( Proportional Integral Derivative)控制即比例积分微分控制,是最早发展起来的控制策略之一,由于其算法简单、鲁棒性好和可靠性高,被广泛应用于工业过程控制,尤其适用于可建立精确数学模型的确定性控制系统。PID控制属于闭环控制。IPA的PID Controller其控制输入为目标温度与当前温度的差值e,通过比例、积分、微分计算累加求和后再与sustainable_power相加即为当前温度下允许的最大功耗值。Sustainable_power是指在保证满足目标温度target_temerature的条件下所允许的最大功耗值。PIDcontroller的控制函数可以表示为如下公式:
其中,