嵌入式系统的动态电源管理架构
(1)操作点
在给定时间点上,系统运行在某个特定操作点上。操作点封装了最小的、相互关联的、物理的离散参数集合。一般来说,参数主要是CPU的频率、电压、电源管理模式、总线频率和不同外设状态等。一
旦确定了操作点,也就确定了整个系统的性能等级和与之关联的能耗等级。操作点由系统的设计者定义,在定义的时候必须注意到参数间的相关性和合理性。比如,在某种特定电源管理模式下,CPU的最高核心电压被限制,而在核心电压的限制下,可变频CPU的工作频率不能超过一个最大值。对于支持多操作点的嵌入式系统,当某个事件发生时,系统会从有一个操作点切换到另一个操作点。这样就需要定义一种机制,来管理不同操作点的切换。对于这一点,会在后面的操作点类型和设备管理中详细描述。在策略框架结构中,操作点是最底层的抽象对象。
在OMAP1612中包含两个内核:ARM926EJS和C5510(DSP)。ARM内核负责整个系统的管理、无线通信协议栈和应用程序的运行;DSP内核负责与无线通信相关的数字信号处理。其中,ULPD(Ultralow-Power-Device)模块提供了芯片级的电源管理机制,包括时钟、电压、省电模式的管理。UPLD分为三个不同的工作模式—Deep Sleep、Big Sleep和Awake,分别对应不同的能耗等级。TC(Traffic Controller)负责管理相关存储器接口。
(2)操作状态
如果把操作点比喻为点的话,操作状态就是一个面。在多操作点的系统下,操作状态与操作点的关系是一对多的关系。引入操作状态的动机主要有两个考虑。
①为了利用DVS和DFS,需要实时监控系统的工作负荷,但是工作负荷是一个连续值,而操作点却是离散的。极端的情况下,可以为不同的工作负荷定主不同的操作点:但是,由于硬件上改变频率和电压都存在延迟和多余的能量消耗,如果频繁地改变操作点,效果却适得其反,因此需要对工作负荷的范围进行划分。在实际情况下,系统的工作负荷和操作系统的状态紧密相磁。一般可以把操作系统看作一个状态机,操作系统通过事件的触发,在没的状态音间切换。简单地,可以把操作系统的状态与操作状态一一对应。由于处于“空闲”和“调度”,对应不同的工作量范围,映射不同的操作点。当然可以对“调度”状态再进行划分。
②作为功率监控的任务,它可以配置特定一个或者多个操作点,但是为了维持底层硬件细节对任务的透明性,通过设置操作状态来间接指定操作点,体现了DPM构架的灵活性。为了满足这样的需求,DPM构架中引入了“任务状态(task state)”的概念。对于功率监控的任务来说,可以在自己的代码空间中,根据任务本身的运行状况设置该任务自己的任务状态,而任务状态作为特定的操作状态在系统初始化的时候登记到DPM中。当在操作系统任务上下文调度切换的时候,根据任务状态,直接调用DPM的相关例程,应用新的操作状态;对于普通的任务,在“任务状态”操作中配置参数“NO STATE”。“NO STATE”表示没有特定的任务状态,即不改变系统当前的操作点.那么,该任务的运行在上下文切换时,能保持原有的操作状态。
由于要同时管理普通任务和功率监控任务,在上下文切换设置操作状态的最低点必然会出现DVS算法和应用频率监控任务状态的矛盾。为了解决这个问题,需要引入操作状态优先级机制。在实现中,功率监控的任务状态对应的操作状态优先级高于DVS算法配置的操作状态。这样,在上述矛质出现的时候,优先应用功率监控任务配置的操作状态。
根据操作系统运行的状态,简单地定义了五种操作状态——空闲、任务-、任务+、任务、睡眠,并且给出了操作状态之间的状态迁移,如图1所示。特别地,当操作系统处于中断状态时,并不为其定义特定的操作状态,而是通过把中断处理例程的任务状态定义为“NO STATE”来实现。
(3)策略和策略管理者
DPM最高级的抽象对象是策略。定义一个策略就是定义每个操作状态所映射的操作点。在系统中,对某个电源管理方案必须至少定义一个策略,也可以根据不同情况不定期义多策略。在多策略电源方案中,需要策略管理器来协调不同的策略。策略管理器可以从操作系统、用户调用、运行程
《嵌入式系统的动态电源管理架构(第2页)》