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

欢迎进入IT技术社区论坛,与200万技术人员互动交流 >>进入引 言

  如何有效地管理嵌入式系统,尤其是移动终端的电源功耗,是一个很有价值的课题。动态电源管理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所示。

  ①系统运行在任务、任务一、任务+中的任务状态之一,可以响应中断进入中断处理,可以进入空闲或睡眠状态。不同的任务要求不同的电源级别,例如播放MP3可以降低处理器的频率,而运行在线互动游戏时则要求处理器全速运行,所以DPM需要在不同任务中提供电源管理服务。

  ②系统进入空闲,这时可以被中断唤醒,处理中断:DPM提供受管理的空闲模式,可以更智能地节省电源。

  ③系统在中断处理完可以进入空闲状态,或者从中断中回到任务态。

  ④系统在任务状态下可进入睡眠模式。系统可挂起到RAM或者其他存储器中,关闭外设,实现最大限度地省电。通过特定事件(例如定义UART中断)要求系统退出睡眠模式。

[1][2][3][4][5]

当你感到悲哀痛苦时,最好是去学些什么东西。

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

相关文章:

你感兴趣的文章:

标签云: