嵌入式系统的动态电源管理架构
作者:重庆邮电学院 夏 军 郑建宏
来源:RFID世界网
日期:2007-03-30 10:18:05
摘要:本文主要根据嵌入式系统的特点,提出一个系统级的DPM构架。 DPM构架是结构化的规则和机制来整合系统不同组件的DPM技术或者相关算法,使之能从整个系统的角度来着眼系统的电源管理问题,而不是仅仅局限于系统的某一组件。
1 简介
随着系统集成技术和无线通信技术的快速发展,嵌入式系统的应用日趋网络化。尤其是无线通信系统中,人们对嵌入式设备提出了更高的要求:除了提供基本的语音、数据通信等基本功能外,还需要事例复杂的多媒体应用。这就要求嵌入式系统在满足必要的实时性前提下,提供更高的计算性能和大容量的存储空间;在这些系统一般都带有电池部件并通过它向整个系统供电。满足高性能要求的代价是更大的能量消耗,这就必须缩短电池的供电时间。大量研究证明,系统处于空闲的时间占整个运行时间的相当大一部分。电源管理就是为了减少系统在空闲时间的能量消耗,使嵌入式系统的有效能量供给率最大化,从而延长电池的供电时间。
为了延长电池的使用时间,在硬件领域,低功耗硬件电路的设计方法得到了广泛应用。然而仅仅利用低功耗硬件电路仍旧不够,进一步的,在系统设计技术中,提出了“动态电源管理DPM(Dynamic Power Management)”的概念。在DPM中,普通的方法是把系统中不在使用的组件关闭或者进入低功耗模式(待机模式),另外一种更加有效的方法就是动态可变电压DVS和动态可变频率DFS。通过在运行时态动态地调节CPU频率或者电压。可以在满足瞬时性能的前提下,使得有效能量供给率最大化。
硬件上提供的低功耗机制,需要软件实现上来发挥它的效能。理想的条件下,是希望在系统中,以“功率监控(power-aware)”的方法,管理不同的系统资源(硬件和软件上的资源),这样才能满足嵌入式系统高性能和低功耗的要求。据研究显示,系统范围内能量的骤降,完全因为系统任务的工作负荷急剧增加和外设的频繁利用。必然地,实时嵌入式操作系统就成了唯一理想的来实现软件上的DPM。这是因为:①实时嵌入式操作系统可以决策不同应用任务的运行,可以收集任务相关的实时限制信息和性能需求信息;②实时嵌入式操作系统可以直接控制底层的硬件,利用硬件提供的DPM技术或者机制。
本文主要根据嵌入式系统的特点,提出一个系统级的DPM构架。
2 DPM构架需求
DPM构架是结构化的规则和机制来整合系统不同组件的DPM技术或者相关算法,使之能从整个系统的角度来着眼系统的电源管理问题,而不是仅仅局限于系统的某一组件。
①DPM构架应具有灵活性。由于嵌入式系统没有一个开放式的统一标准,因此DPM系统构架应具有灵活性,使之能在不同平台中得到应用。DPM系统尽管作为操作系统的一个独立模块,但是应该和操作系统透明,上层的应用通过DPM间接对硬件提供的电源管理机制进行控制,无须考虑底层的硬件细节。
②DPM构架需要收集系统的资源利用信息。DPM系统通过收集上层应用的信息和设备的信息,利用这些信息作出决策,进行整个系统范围内的电源管理。
③DPM应支持普通任务和功能监控任务并发管理机制。理想的情况下,对于每一个应用都希望功率监控,这样可以大大降低系统的能耗。然而,实际中,应用开发来自不同的厂商,大多数是对硬件透明的,因此实现每一个任务的功率监控是非常困难的;只有少数关键程序,由嵌入式系统的设计者开发。因为他们熟悉硬件的特性,可以实现功率监控,所以,在DPM系统中,应用采取某种机制实现两种混合任务的电源管理。
④DPM对外设管理应具有透明性。外设状态的变化应该做到和上层应用的DPM策略无关,不会因为外设状态的变化,而影响上层所采用的DPM策略的变化。
⑤DPM构架应支持硬件提供的电源管理机制和技术。比如DVS、DFS,系统的不同电源模式(活动、睡眠、冬眼),外设的时钟管理,外设的自动睡眠技术等等。
3 DPM构架描述
首先需要明确的是,DPM不是DVS算法,也不是功率监控的操作系统,更不是类似ACPI的电源管理控制机制。它其实是一个操作系统模块,负责管理运行时态的电源管理。DPM策略管理者和应用程序通过简单的API和该模块交互。尽管没有ACPI应用广泛,DPM架构却可以对设备和设备驱动进行管理,这样就适合对高整合的SoC处理器进行有效的电源管理。
本文提出的DPM是以策略框架(policy framework)为中心的软件结构。其中包含几个重要的概念:操作点(operationg point)、操作状态(operationg state)、策略(policy)、约束(constraint)。
(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最高级的抽象对象是策略。定义一个策略就是定义每个操作状态所映射的操作点。在系统中,对某个电源管理方案必须至少定义一个策略,也可以根据不同情况不定期义多策略。在多策略电源方案中,需要策略管理器来协调不同的策略。策略管理器可以从操作系统、用户调用、运行程序、物理设备收集信息从而作出策略决策。策略管理器的位置(用户空间和内核空间)、所收集信息的内容和形式以及相应的操作,需要系统的DPM设计者来定义和实现。
(4)设备管理和同等操作点类
在DPM架构中,策略管理者不会直接对设备的状态进行管理,而是通过底层的设备驱动来管理设备的能耗。在某个操作状态下,映射一类可以在该状态下能被系统接受的操作点。在该状态下,当某个睡眠的设备需要被唤醒的时候,通过驱动对DPM声明约束(constraints),接着DPM在这一类的操作点中选择另外一个操作点,使得该操作点下,该设备能够正常工作,选择的机制可以在策略中定义。简单的方法是选择该类中合法的(满足约束条件)能耗最低的操作点,或者是特别指不定期某个操作点。
4 DPM模块实现
在实时嵌入式操作系统Nucleus微内核中实现了DPM模块,采用的平台是基于TI OMAP1612的TDSCDMA无线终端参考设计(32MB DDRAM,176×220 16bpp TFT液晶显示屏,USB和其它外设)。图2是整合DPM的操作系统结构。
在DPM模块中,整合了策略管理、功率监控调度器(power-aware scheduler)、工作负荷监控器、操作状态管理器、操作点管理、约束管理六个子模块。其中,功率监控调度器和工作负荷监控器嵌入到内核的上下文切换中,工作负荷监控器通过计算操作系统处于空闲调度的时间和采样周期的比值来表征CPU的工作负荷,然后把这个值传递给功率监控调度器,通过内部整合“动态减慢因子”DVS算法,预测下一任务的工作负荷,并设置与之相对应的操作状态。其它四个模块分别对构架中的抽象对象操作点、约束、操作状态、策略进行管理。特别地,策略管理的核心是策略管理者,它以一个独立线程的形式运行在内核空间。
5 结论
经过测试,整合DPM的TD-SCDMA无线终端平均能耗下降了50%。其中在操作点High Active时,电流为400mA左右,而在操作点Sleep时降到了200mA左右;如果应用操作点Deep Sleep(关闭ARM、DSP和所有设备,维持一个32kHz的时钟)电流甚至可以降到10~20mA,完全满足长时间待机。实验表明,利用DPM构架,可以对3G无线终端实行之有效的动态电源管理。随着半导体技术、应用程序优化技术以及高粒度时钟门控和电压门控技术的发展,为提升嵌入式系统的有效能量供给率提供了可能。利用这些新技术继续开发和改进DPM架构和实现,正是今后研究的方向和重点。
随着系统集成技术和无线通信技术的快速发展,嵌入式系统的应用日趋网络化。尤其是无线通信系统中,人们对嵌入式设备提出了更高的要求:除了提供基本的语音、数据通信等基本功能外,还需要事例复杂的多媒体应用。这就要求嵌入式系统在满足必要的实时性前提下,提供更高的计算性能和大容量的存储空间;在这些系统一般都带有电池部件并通过它向整个系统供电。满足高性能要求的代价是更大的能量消耗,这就必须缩短电池的供电时间。大量研究证明,系统处于空闲的时间占整个运行时间的相当大一部分。电源管理就是为了减少系统在空闲时间的能量消耗,使嵌入式系统的有效能量供给率最大化,从而延长电池的供电时间。
为了延长电池的使用时间,在硬件领域,低功耗硬件电路的设计方法得到了广泛应用。然而仅仅利用低功耗硬件电路仍旧不够,进一步的,在系统设计技术中,提出了“动态电源管理DPM(Dynamic Power Management)”的概念。在DPM中,普通的方法是把系统中不在使用的组件关闭或者进入低功耗模式(待机模式),另外一种更加有效的方法就是动态可变电压DVS和动态可变频率DFS。通过在运行时态动态地调节CPU频率或者电压。可以在满足瞬时性能的前提下,使得有效能量供给率最大化。
硬件上提供的低功耗机制,需要软件实现上来发挥它的效能。理想的条件下,是希望在系统中,以“功率监控(power-aware)”的方法,管理不同的系统资源(硬件和软件上的资源),这样才能满足嵌入式系统高性能和低功耗的要求。据研究显示,系统范围内能量的骤降,完全因为系统任务的工作负荷急剧增加和外设的频繁利用。必然地,实时嵌入式操作系统就成了唯一理想的来实现软件上的DPM。这是因为:①实时嵌入式操作系统可以决策不同应用任务的运行,可以收集任务相关的实时限制信息和性能需求信息;②实时嵌入式操作系统可以直接控制底层的硬件,利用硬件提供的DPM技术或者机制。
本文主要根据嵌入式系统的特点,提出一个系统级的DPM构架。
2 DPM构架需求
DPM构架是结构化的规则和机制来整合系统不同组件的DPM技术或者相关算法,使之能从整个系统的角度来着眼系统的电源管理问题,而不是仅仅局限于系统的某一组件。
①DPM构架应具有灵活性。由于嵌入式系统没有一个开放式的统一标准,因此DPM系统构架应具有灵活性,使之能在不同平台中得到应用。DPM系统尽管作为操作系统的一个独立模块,但是应该和操作系统透明,上层的应用通过DPM间接对硬件提供的电源管理机制进行控制,无须考虑底层的硬件细节。
②DPM构架需要收集系统的资源利用信息。DPM系统通过收集上层应用的信息和设备的信息,利用这些信息作出决策,进行整个系统范围内的电源管理。
③DPM应支持普通任务和功能监控任务并发管理机制。理想的情况下,对于每一个应用都希望功率监控,这样可以大大降低系统的能耗。然而,实际中,应用开发来自不同的厂商,大多数是对硬件透明的,因此实现每一个任务的功率监控是非常困难的;只有少数关键程序,由嵌入式系统的设计者开发。因为他们熟悉硬件的特性,可以实现功率监控,所以,在DPM系统中,应用采取某种机制实现两种混合任务的电源管理。
④DPM对外设管理应具有透明性。外设状态的变化应该做到和上层应用的DPM策略无关,不会因为外设状态的变化,而影响上层所采用的DPM策略的变化。
⑤DPM构架应支持硬件提供的电源管理机制和技术。比如DVS、DFS,系统的不同电源模式(活动、睡眠、冬眼),外设的时钟管理,外设的自动睡眠技术等等。
3 DPM构架描述
首先需要明确的是,DPM不是DVS算法,也不是功率监控的操作系统,更不是类似ACPI的电源管理控制机制。它其实是一个操作系统模块,负责管理运行时态的电源管理。DPM策略管理者和应用程序通过简单的API和该模块交互。尽管没有ACPI应用广泛,DPM架构却可以对设备和设备驱动进行管理,这样就适合对高整合的SoC处理器进行有效的电源管理。
本文提出的DPM是以策略框架(policy framework)为中心的软件结构。其中包含几个重要的概念:操作点(operationg point)、操作状态(operationg state)、策略(policy)、约束(constraint)。
(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最高级的抽象对象是策略。定义一个策略就是定义每个操作状态所映射的操作点。在系统中,对某个电源管理方案必须至少定义一个策略,也可以根据不同情况不定期义多策略。在多策略电源方案中,需要策略管理器来协调不同的策略。策略管理器可以从操作系统、用户调用、运行程序、物理设备收集信息从而作出策略决策。策略管理器的位置(用户空间和内核空间)、所收集信息的内容和形式以及相应的操作,需要系统的DPM设计者来定义和实现。
(4)设备管理和同等操作点类
在DPM架构中,策略管理者不会直接对设备的状态进行管理,而是通过底层的设备驱动来管理设备的能耗。在某个操作状态下,映射一类可以在该状态下能被系统接受的操作点。在该状态下,当某个睡眠的设备需要被唤醒的时候,通过驱动对DPM声明约束(constraints),接着DPM在这一类的操作点中选择另外一个操作点,使得该操作点下,该设备能够正常工作,选择的机制可以在策略中定义。简单的方法是选择该类中合法的(满足约束条件)能耗最低的操作点,或者是特别指不定期某个操作点。
4 DPM模块实现
在实时嵌入式操作系统Nucleus微内核中实现了DPM模块,采用的平台是基于TI OMAP1612的TDSCDMA无线终端参考设计(32MB DDRAM,176×220 16bpp TFT液晶显示屏,USB和其它外设)。图2是整合DPM的操作系统结构。
在DPM模块中,整合了策略管理、功率监控调度器(power-aware scheduler)、工作负荷监控器、操作状态管理器、操作点管理、约束管理六个子模块。其中,功率监控调度器和工作负荷监控器嵌入到内核的上下文切换中,工作负荷监控器通过计算操作系统处于空闲调度的时间和采样周期的比值来表征CPU的工作负荷,然后把这个值传递给功率监控调度器,通过内部整合“动态减慢因子”DVS算法,预测下一任务的工作负荷,并设置与之相对应的操作状态。其它四个模块分别对构架中的抽象对象操作点、约束、操作状态、策略进行管理。特别地,策略管理的核心是策略管理者,它以一个独立线程的形式运行在内核空间。
5 结论
经过测试,整合DPM的TD-SCDMA无线终端平均能耗下降了50%。其中在操作点High Active时,电流为400mA左右,而在操作点Sleep时降到了200mA左右;如果应用操作点Deep Sleep(关闭ARM、DSP和所有设备,维持一个32kHz的时钟)电流甚至可以降到10~20mA,完全满足长时间待机。实验表明,利用DPM构架,可以对3G无线终端实行之有效的动态电源管理。随着半导体技术、应用程序优化技术以及高粒度时钟门控和电压门控技术的发展,为提升嵌入式系统的有效能量供给率提供了可能。利用这些新技术继续开发和改进DPM架构和实现,正是今后研究的方向和重点。