嵌入式Linux中文站

嵌入式Linux系统的动态电源管理技术


引 言

如 何有效地管理嵌入式系统,尤其是移动终端的电源功耗,是一个很有价值的课题。动态电源管理DPM(Dynamic Power, Management)技术提供一种操作系统级别的电源管理能力,包含CPU工作频率和电压,外部总线时钟频率,外部设备时钟/电源等方面的动态调节、管 理功能。通过用户层制定策略与内核提供管理功能交互,实时调整电源参数而同时满足系统实时应用的需求,允许电源管理参数在短时间的空闲或任务运行在低电源 需求时,可以被频繁地、低延迟地调整,从而实现更精细、更智能的电源管理。

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所示。

本文永久更新链接:http://embeddedlinux.org.cn/emb-linux/kernel-driver/200810/15-170.html



分享:

评论