>
首页 » 技术文章 » 一种适用于TD-SCDMA无线终端的动态电源管理架构

一种适用于TD-SCDMA无线终端的动态电源管理架构

作者:夏 军,郑建宏  时间:2006-10-18 23:52  来源:
摘 要:针对以往单纯以DVS算法为中心的动态电源管理架构的不足,提出了一种改进的动态电源管理架构,此架构根据TD-SCDMA无线终端支持3G多媒体业务的特点,站在系统的角度上以策略框架为中心对嵌入式系统的不同组件(如CPU,存储器,外设等)进行行之有效的动态电源管理。通过TD-SCDMA无线终端上的实验表明,采用该架构后,系统平均能耗比没有采用电源管理时下降了50% ,大大提升了无线终端的实际应用价值。

关键词:动态电源管理;3G无线终端;功率监控;片上系统;动态可变电压;动态可变频率

引 言

随着系统集成技术和无线通信技术的快速发展,嵌入式系统的应用日趋网络化。尤其是无线通信系统中,人们对嵌入式设备提出了更高的要求,除了提供基本的语音、数据通信等基本功能外,还需要整合复杂的多媒体应用。这就要求嵌入式系统在满足必要的实时性的前提下,提供更高的计算性能和大容量的存储空间。这些系统一般都带有电池部件并通过它向整个系统供电,而满足高性能要求的代价却是更大的能量消耗,这就必然缩短了电池供电时间。大量研究证明,系统处于空闲的时间占整个运行时间的大部分。电源管理就是为了减少系统在空闲时间的能量消耗,使得嵌入式系统的有效能量供给率最大化,从而延长电池的供电时间。

在硬件领域中,为了延长电池的使用时间,使得低功耗硬件电路的设计方法得到了广泛应用,但是仅仅利用低功耗硬件电路仍然不够。近年来,在硬件设计技术中,提出了“动态电源管理(DPM:dynamic power management)”的概念。在DPM中,普通的方法是把系统中不再使用的组件关闭或者进入低功耗模式(待机模式) ,另外一种更加有效的技术就是动态可变电压(DVS:dynamic voltages scaling)和动态可变频率(DFS:dynamic frequencies scaling) ,它们在运行时动态地调节CPU频率或者CPU电压,可以在满足瞬时性能的前提下使得有效能量供给率最大化。

硬件上提供的低功耗机制需要软件实现上来发挥它的效能。理想的条件下,是希望在系统中以“功率监控(power-aware)”的方法管理不同的系统资源(硬件和软件上的资源) ,这样才能满足嵌入式系统高性能和低功耗的要求。

在无线嵌入式系统中,应用程序和协议栈以并发任务的形式运行在实时嵌入式操作系统中,研究显示系统范围内能量的骤降完全因为系统任务的工作负荷急剧增加和外设的频繁使用而引起的。所以实时嵌入式操作系统就成了实现软件惟一理想的位置。这是因为实时嵌入式操作系统可以决策不同应用任务(应用程序和协议栈)的运行,可以收集任务相关的实时限制信息、性能需求信息,可以直接控制底层的硬件,利用硬件提供的DPM技术或者机制。

我们根据特定的一类嵌入式系统—TD-SCDMA无线终端,根据它支持3G业务的特点,从嵌入式系统的角度提出了一个系统级的DPM构架。

TD-SCDMA无线终端特点

(1) TD-SCDMA无线终端支持3G业务,不仅要求实现协议栈的无线通信和连接Internet,而且要求在上层实现复杂的人机交互界面和多媒体应用。研究显示,复杂的多媒体应用和人机交互界面是能耗的主要部分。对于终端来说,应用并不是在电池生命期一直处于运行状态,其大部分时间系统处于空闲(IDLE)状态,而且根据不同的应用,系统的工作负荷(workload)是动态变化的,因此需要在TD-SCDMA无线终端中对应用的变化实现DPM技术。

(2)由于TD-SCDMA无线终端实现了协议栈、视频/音频编解码,因此负责这些功能的任务对实时性提出了要求,所以在实现动态电源管理的时候必然对某些任务的实时性进行考虑。

(3)由于TD-SCDMA无线终端要求实现多媒体和数据通信,因此在系统上集成了不同的外部设备,而这些外设(彩色LCD、MPEG解码器、USB通信端口,照相/摄像镜头等)也是能量的消耗者,这些设备根据应用的运行处于活动(active)状态的时刻和时间也有所不同,所以,对无线终端实现的DPM还包含对外设的管理。

(4)应用程序和协议栈复杂度的增加必然要求TD-SCDMA无线终端集成大容量的存储器,存储器的容量和吞吐率对系统的能耗有着很大的影响,因此,在DPM中最好实现对存储器的管理。

DPM构架需求

DPM构架是一个结构化的规则和机制,它负责来整合对系统不同组件的DPM技术或者相关算法。与PASA及DEETMT架构相比,它不是仅仅以DVS算法或者简单的DVS算法加入温度监控为中心的构架,而且还是从整个系统的角度来着眼系统的电源管理问题,并不局限于系统的某一个组件或者某一物理参数。

(1)DPM构架应具有灵活性。在开发TD-SCDMA无线终端的时候,由于不同的应用方向会采用不同的硬件平台,因此DPM系统构架具有灵活性,使之能在不同平台中得到应用。要求DPM系统尽管作为操作系统的一个独立模块,也是应该和操作系统保持透明。上层的应用通过DPM间接对硬件提供的电源管理机制进行控制,无须考虑底层的硬件细节。

(2)DPM构架需要收集系统的资源利用信息。DPM系统通过收集上层应用的信息和设备的信息,再利用这些信息作出决策,以便进行整个系统范围内的电源管理。

(3)DPM应支持普通任务和power-aware任务并发管理机制。理想的情况下,每一个应用都希望是功率监控的,这样可以大大降低系统的能耗。然而,实际中,应用开发来自不同的厂商,大多数是对硬件透明,因此实现每一个任务的功率监控是非常困难的,只有少数关键程序由嵌入式系统的设计者开发,因为他们熟悉硬件的特性,可以实现功率监控,所以在DPM系统中,应该采取某种机制实现2种混合任务的电源管理。

(4)DPM对外设管理应具有透明性。外设状态的变化应该做到和上层应用的DPM策略无关,不会因为外设状态的变化而影响上层所采用的DPM策略的变化。

(5)DPM构架应支持硬件提供的电源管理机制和技术。比如DVS,DFS,系统的不同电源模式(活动、睡眠、冬眠) ,外设的时钟管理,外设的自动睡眠技术等。

DPM构架描述

首先,需要明确的是DPM不是DVS算法,也不是功率监控的操作系统 ,更不是类似ACPI的电源管理控制机制 。它其实是一个操作系统模块,负责管理运行时态的电源管理。DPM策略管理者和应用程序可以通过简单的API和DPM交互。尽管没有ACP I应用广泛,但DPM构架却可以对设备和设备驱动进行管理,这样就适合对高整合的SoC处理器进行有效的电源管理。图1是DPM的系统构架图。无线终端的DPM 是以策略框架( policyframework)为中心的软件结构。其中包含几个重要的概念:操作点(operating point) 、操作状态 operating state) 、策略(policy) 、约束(constraint) 。

图1 DPM系统构架图

操作点
在给定时间点上,系统运行在某个特定操作点上。操作点封装了最小的、相互关联的、物理的、离散参数集合。一般来说,参数主要是CPU的频率、电压、电源管理模式、总线频率、不同外设状态等。一旦确定了操作点,也就确定了整个系统的性能等级和与之关联的能耗等级。操作点由系统的设计者定义,在定义的时候必须注意到参数间的相关性和合理性。比如,在某种特定电源管理模式下CPU的最高核心电压被限制,而在核心电压的限制下可变频CPU的工作频率不能超过一个最大值。当前大多数无线终端系统支持多操作点。当某个事件发生,系统会从一个操作点切换到另外一个操作点,这样就需要定义一种机制,来管理不同操作点的切换。对于这一点,会在后面的操作点类型和设备管理中详细描述。在策略框架结构中,操作点是最底层的抽象对象。为了举例说明,下面给出了基于德州仪器(TI)OMAP1612平台的一个简化的操作点列表,见表1。

表1 基于OMAP1612的简单操作点

在OMAP1612中,包含2个内核:ARM926EJS和C5510 (DSP) 。ARM内核负责整个系统的管理、无线通信协议栈和应用程序的运行;DSP内核负责无线通信相关的数字信号处理。其中,ULPD (ultra low-power device)模块提供了芯片级的电源管理机制,包括时钟、电压、省电模式的管理。ULPD分为3个不同的工作模式: deep sleep,big sleep 和awake,分别对应不同的能耗等级。TC(traffic controller)负责管理相关存储器接口。

操作状态
如果把操作点比喻为点的话,操作状态则就是一个面。在多操作点的系统下,操作状态与操作点的关系是一对多的关系。引入操作状态的动机主要有以下2个方面考虑。

(1)为了利用DVS和DFS的技术,需要实时监控系统的工作负荷,但是工作负荷是一个连续值,而操作点却是离散的。极端的情况下,可以为不同的工作负荷定义不同的操作点。但是,由于硬件上改变频率和电压都存在延迟和多余的能量消耗,如果频繁的改变操作点效果适得其反,就需要对工作负荷的范围进行划分。在实际情况下,系统的工作负荷和操作系统的状态紧密相关。一般的可以把操作系统看作一个状态机,操作系统通过事件的触发在不同的状态间切换。简单的可以把操作系统的状态与操作状态一一对应,由于处于“空闲”和“调度”对应不同的工作量范围,映射不同的操作点。当然可以对“调度”状态再进行划分。

(2) 作为power-aware的任务,它可以配置特定1个或者多个操作点,但是为了维持底层硬件细节对任务的透明性,通过设置操作状态来间接指定操作点,从而体现了DPM构架的灵活性。为了满足这样的需求,DPM构架中引入了“任务状态(taskstate) ”的概念。对于power-aware的任务来说,可以在自己的代码空间中,根据任务本身的运行状况设置该任务自己的任务状态,而任务状态作为特定的操作状态在系统初始化的时候登记到DPM中。当在操作系统任务上下文调度切换的时候,根据任务状态直接调用DPM的相关例程,应用新的操作状态。对于普通的任务,在“任务状态”中配置参数“NO STATE”,“NO STATE”表示没有特定的任务状态,即不改变系统当前的操作点。那么该任务运行在上下文切换时,就保持原有的操作状态。

由于要同时管理普通任务和power-aware任务,在上下文切换设置操作状态的时候必然会出现DVS算法和应用power-aware任务状态的矛盾。为了解决这个问题,需要引入操作状态优先级机制。在实现中,power-aware的任务状态对应的操作状态优先级高于DVS算法配置的操作状态。这样,在上述矛盾出现的时候,优先应用power-aware任务配置操作状态。

根据操作系统运行的状态,简单地定义5种操作状态:空闲、任务- 、任务+、任务、睡眠,并且给出了操作状态之间的状态迁移。如图2所示,当操作系统处于中断状态时,并不为其定义特定的操作状态,而是通过把中断处理例程的任务状态定义为“NO STATE”来实现。

图2 操作状态及其状态转移

策略和策略管理者
DPM最高级的抽象对象是策略。定义一个策略就是定义每个操作状态所映射的操作点。在系统中,对某个电源管理方案必须至少定义一个策略,也可以根据不同情况定义多策略。在多策略电源方案中,需要策略管理器来协调不同的策略。策略管理器可以从操作系统、用户调用、运行程序、物理设备中收集信息,从而作出策略决策。策略管理器的位置(用户空间和内核空间) 、所收集信息的内容和形式以及相应的操作需要系统的DPM设计者来定义和实现。表2是一个简单的单一策略的例子;表3是一个侧重DVS和DFS的多策略管理方案。

表2 单一策略的电源管理方案

表3 侧重DVS和DFS的多策略电源管理方案

*26/0@1.1V表示ARM工作频率是26MHz,DSP工作频率是0MHz,两个的内核电压都是1.1V,在操作点0/0@1.1V下,OMAP1612还会维持一个32kHz的时钟,提供基本的计时功能。

设备管理和同等操作点类
在DPM构架中,策略管理者不会直接对设备的状态进行管理,而是通过底层的设备驱动来管理设备的能耗。在某个操作状态下,映射一类可以在该状态下能被系统接受的操作点。当系统处于该状态并且某个睡眠的设备需要被唤醒的时候,该设备驱动对DPM声明约束( constraints) ,接着DPM在这一类的操作点中选择另外一个操作点,使得该操作点下的设备能够正常工作。选择的机制可以在策略中定义,简单的方法是选择该类中合法的(满足约束条件)最低能耗的操作点,或者是特别指定某个操作点。下面通过一个简单的应用实例来说明。在策略中定义了操作状态“任务”和一组操作点之间的映射关系,而在该状态下这组是同等的并且可被系统接受的,在该状态下没有使用LCD和camera,选择最小能耗操作点1,见图3。当用户激活无线终端的照相功能的时候,必须激活LCD和摄像头,流程图见图4。

由于使用了LCD和摄像头,在“任务”操作状态下,根据声明的约束,操作点1和操作2为非法操作点,从同等操作点类中选择合法的新操作点只有操作点3,所以系统在激活LCD和摄像头设备的状态下,只能运行在操作点3下。

图3 操作状态“任务”下的同等操作点类

DPM模块实现

在实时嵌入式操作系统NUCLEUS微内核中实现了DPM模块,采用的平台是基于TIOMAP1612的TD2SCDMA无线终端参考设计(32MB DDRAM,176×22016bpp TFT液晶显示屏,USB和其他外设)。图5是整合DPM的操作系统结构。

在DPM模块中有整合了策略管理、功率监控调度器( power-aware scheduler) ,工作负荷监控器、操作状态管理器、操作点管理、约束管理6个子模块。其中,功率监控调度器和工作负荷监控器嵌入到内核的上下文切换中,工作负荷监控器通过计算操作系统处于空闲调度的时间和采样周期的比值来表征CPU的工作负荷,然后把这个值传递给功率监控调度器,通过内部整合“动态减慢因子”DVS算法,预测下一任务的工作负荷,并设置与之相对应的操作状态。其他4个模块分别对构架中的抽象对象操作点、约束、操作状态、策略进行管理。策略管理的核心是策略管理者,它以一个独立线程的形式运行在内核空间。DPM API的主要接口函数如下。

(1)DPM_Set_Task_State。这个函数在特定的“功率监控(power-aware)任务”中被调用,满足该任务所要求的性能-能耗等级。

(2)DPM_Set_Policy。任务调用这个函数后,在“策略管理者”的消息队列中将会收到一个策略配置消息,“策略管理者”将会取出该消息,重新应用新的策略。

图4 激活LCD和摄像头设备的流程图

图5 整合DPM的NVCLEVS内核结构

(3)DPM_Apply_Constraint。在外设的中断处理程序中调用。当某个外设激活时应用其对应的约束。

(4)DPM_Remove_Constraint。当外设从激活状态跳转到休眠状态时,可以去除应用的约束。

(5)DPM_Configure_Sample_Period。配置工作负荷监控器的采样周期。

(6)DPM_Configure_Windows。配置记录工作负荷的窗口数目。

(7)DPM_Configure_Policy。配置策略和状态的映射关系。

(8)DPM_Configure_State。配置状态和操作点的映射关系。当然还有其他函数,比如:DPM_Create_State,DPM_Create_Policy,DPM_Create_Point,它们和前面(5),(6),(7),(8)中的函数都是在系统初始化的时候被调用。

在DPM内部有几个关键的函数。

(1)DPM_Monitor_Record_Workload。周期性调用来记录工作负荷的量化参数。其中工作量是由采样周期的CPU的利用率来表征。

(2)DPM _Forecast_Operating_State。被嵌入到上下文切换中,通过“动态减慢因子”算法的计算,预测下一个任务的运行的操作状态,并立即配置。

(3)DPM_App ly_New_Operating_Point。这是操作点硬件抽象层和操作点管理的接口函数之一,配置系统处于新的操作点上。在具体的实现中会有1 个操作点配置冲突问题。一种是隐式冲突,由于设置了约束条件,操作点管理可能会根据约束自动地在不同操作点隐式(相对于用户)跳转。当在隐式跳转中,上层的DPM_Set_Task_State、DPM_Set_Policy,DPM_Forecast_Operating_State任意一个操作都会触发新的操作点应用,这样产生的隐式冲突显式冲突是DPM_Set_Task_State,DPM_Set_Policy,DPM_Forecast_Operating_State如果同时调用产生的冲突。配置冲突的解决方法是引入操作点锁( lock) 机制。当调用DPM_Apply_New_Operating_Point的时候,必须首先锁住操作点管理,在新的操作点应用成功之前,所有触发操作点改变的调用都必须阻塞(block)或者返回失败(fail),在此过程中不会对所有的操作点改变请求排队。如果所有请求中有调用DPM_Apply_New_Operating_Point,它只会阻塞最近一次的DPM_Apply_New_Operating_Point调用请求,而不考虑DPM_Set_Task_State,DPM_Set_Policy产生的请求,其他调用返回失败;如果只有DPM_Set_Task_State,DPM_Set_Policy产生的请求,操作点管理只会阻塞最近一次的,其他请求返回失败。因此,在用户代码编写的时候必须考虑到阻塞和失败的异常处理。

结 论

经过测试,整合DPM的TD-SCDMA 无线终端平均能耗下降了50% ,其中在操作点High Active时,电流为400mA左右,而在操作点Sleep 时降到了200mA左右,如果应用操作点Deep Sleep(关闭ARM,DSP和所有设备,维持一个32kHz的时钟)电流甚至可以降到10mA~20mA,完全满足长时间待机。实验表明利用DPM 构架,可以对TD-SCDMA无线终端实现行之有效的动态电源管理。随着半导体技术,应用程序优化技术以及高粒度时钟门控和电压门控技术的发展,为提升无线终端这类特殊的嵌入式系统的有效能量供给率提供了可能。利用这些新技术继续开发和改进DPM构架和实现,这正是今后研究的方向和重点。

相关推荐

ST FLI7510 iDTV片上系统(SoC)方案

赛普拉斯 PSoC® 可编程片上系统器件的出货量已突破 5 亿片

赛普拉斯  PSoC  片上系统  2009-03-11

博通 BCM7325单片 STB解决方案

博通BCM7405多格式HD视频方案

Freescale MPC8349E数字家庭方案

博通BCM4342单片802.11n方案

在线研讨会
焦点