通过用户层制定策略与内核提供管理功能交互,实时调整电源参数而同时满足系统实时应用的需求,允许电源管理参数在短时间的空闲或任务运行在低电源需求时,可以被频繁地、低延迟地调整,从而实现更精细、更智能的电源管理。
1 动态电源管理原理
CMOS电路的总功耗是活动功耗与静态功耗之和。当电路工作或逻辑状态转换时会产生活动功耗,未发生转换时晶体管漏电流会造成静态功耗:
式中C为电容,fc为开关频率,Vdd为电源电压,IQ为漏电流。C·Vdd·fc为活动功耗;VddIQ为静态功耗。在操作系统级的电源管理设计实现中,重点是活动功耗。从中可以得出几种管理活动功耗的方法:
①电压/时钟调节。通过降低电压和时钟来减少活动功耗和静态功耗。
②时钟选通。停止电路时钟,即设fc为O,让Pactive为0。将时钟从不用的电路模块断开,减少活动功耗。许多CPU都有“闲置”或“停止”指令,一些处理器还可通过门控关闭非CPU时钟模块,如高速缓存、DMA外设等。
③电源供应选通。断开电路中不使用的模块电源供应。这种方法需要考虑重新恢复该模块的代价。
断开不使用的模块的时钟和电源供应可以减少电源消耗,但要能够正确预测硬件模块的空闲时期。因为重新使能硬件模块时钟和电源会造成一定延迟,不正确的预测将导致性能下降。
从式(1)可以看出:降低电压对功耗的贡献是2次方的;降低时钟也可降低功耗,但它同时也降低性能,延长同一任务的执行时间。设2.0 V高压下的能量消耗为E高=P高·T,则1.0 V低压下能量消耗为E低=P低·2T(实践中频率近似线性依赖电压),再根据式(1)容易得到P高=8P低。综合上式可以得出:E高=4E低,所以,选择满足性能所需的最低时钟频率,在时钟频率和各种系统部件运行电压要求范围内,设定最低的电源电压,将会大量减少系统功耗。上例中完成任务所需的能量可以节约75%。
2 硬件平台对动态电源管理的支持
通过调节电压、频率来减少系统活动功耗需要硬件支持。SoC系统一般有多个执行单元,如PM(电源管理)模块、OSC(片上晶振)模块、PLL(锁相环)模块、CPU核以及CPU核中的数据缓存和指令缓存,其他模块统称为外围模块(例如1,CD控制器、UART、SDRAM控制器等)。CPU高频时钟主要由PLL提供,同时PLL也为外围模块和SoC总线提供其他频率时钟。一般SoC系统都有一些分频器和乘法器可以控制这些时钟。PM模块主要是管理系统的电源供应状态。一般有自己的低频、高准确度晶,振,用以维持一个RTC时钟、RTC定时器和中断控制单元。其中中断控制单元使RTC定时器和外部设备能够唤醒挂起的SoC系统。下面以一个广泛用于手持设备的TI0MAPl610处理器为例。
①时钟模块。OMAPl610提供一个数字相控锁环(DPLL),将外频或晶振输入转化为高频,供给OMAP 3.2核以及其他片上设备。操作DPLL控制寄存器DPLLl_CTL_REG就可以设置DPLL输出时钟,辅以设置时钟复用寄存器(MUX)和时钟控制寄存器ARM_CKCTL,就能控制MPU和DSP的运行频率,MPU、DSP外设时钟,以及LCD刷新时钟,TC_CK时钟(Trafflc Control Clock)等。
②电源管理模块。OMAPl610集成一个超低功耗控制模块(ULPD),用以控制OMAP3.2时钟和控制OMAPl610进出多种电源管理模式。操作ULPD控制寄存器ULPD_POWER_CTRL,可以设置处理器电压、管理运行模式。
3 嵌入式Linux动态电源管理软件实现
嵌入式Linux已被广泛应用在电源功耗敏感的嵌入式设备上,特别是移动手持设备;因此,设计高效、精细的电源管理技术是嵌入式Linux开发成功的关键技术之一。
3.1动态电源管理实现原理
系统运行在常见的几种不同状态,有不同电源级别要求,其中蕴涵着丰富的节能机会。状态转化如图1所示。
①系统运行在任务、任务一、任务+中的任务状态之一,可以响应中断进入中断处理,可以进入空闲或睡眠状态。不同的任务要求不同的电源级别,例如播放MP3可以降低处理器的频率,而运行在线互动游戏时则要求处理器全速运行,所以DPM需要在不同任务中提供电源管理服务。
②系统进入空闲,这时可以被中断唤醒,处理中断:DPM提供受管理的空闲模式,可以更智能地节省电源。
③系统在中断处理完可以进入空闲状态,或者从中断中回到任务态。
④系统在任务状态下可进入睡眠模式。系统可挂起到RAM或者其他存储器中,关闭外设,实现最大限度地省电。通过特定事件(例如定义UART中断)要求系统退出睡眠模式。