deep idle
Deep idle
基本概念
首先顾名思义,这是一种CPU进入空闲后的状态,也就是在idle进程中执行的
简单地说,Mediatek会在CPU进入空闲的情况下,再去关闭一些不必要的power domain,以达到最省电的目的,因为CPU空闲的时候,其实系统中有不少的domain也是不需要运行的,不这样做的话,就仅仅是CPU这块的电省下来 ,达不到省电的目的。
Mediatek的做法是在CPU在进入idle进程后,会去判断当前系统的状态是否满足进入更省电状态的条件,首先就会检查是否能进入deep idle,因为dpidle最省电
系统进入dpidle需要满足的条件是
单核(BY_CPU)
预设的能block deep idle的所有clock都已经关闭(BY_CLOCK)
CPU在2ms内没有从idle task调度出去的需求(BY_TMR)
BY_VTG / BY_OTH的case很少(BY_OTH在个别平台跟TEE(SPI指纹模块)有关)
我们可以从波形上检查系统是否进入deep idle
下图中电流的底部就是deep idle的状态,在MP3播放的状态大约20mA;
如果没有进deep idle,这个底部会被抬高
deep idle也是由SPM来控制它的执行逻辑,跟suspend一样, CPU在进去WFI之前会把SPM的firmware写入PCM,这个firmware跟suspend是完全不一样的。