杨炼,牟伦荣,夏军
(1.重庆邮电大学 通信与信息工程学院,重庆400065;2.重庆重邮信科通信技术有限公司)
对于移动通信终端而言,终端的能耗问题既是系统性能的关键因素,也是用户认可度的关键指标,已经成为评估终端性能的重要指标之一,移动终端省电机制的研究与实现变得更加迫切。同时,伴随着通信产业的不断发展,融合了拍照、摄像、音乐、游戏等多功能的智能手机应需而生并得以快速发展。同传统手机相比,智能手机的优势非常明显,同样,功耗问题也是成倍增长。工信部电信研究院公布的手机行业运行情况显示,智能手机市场占有率在50%以上,也就是说智能机已经成为主流产品。但对于手机终端低功耗技术的研究仍局限于功能单一的通话机,所以必须加快智能手机终端低功耗技术的研究,以解决随之而来的功耗问题。同时,支持多功能应用的基础上在智能手机终端为保证良好的用户体验通常采用双操作系统架构,而其他普通移动终端多以单个OS为控制硬件设备和高层软件架构的搭建提供支持服务,因此不乏有基于简单的单OS终端的省电研究和实现,却缺少多OS低功耗技术的研究。本文基于单芯片双操作系统智能手机终端,提出一种双操作系统间的省电方案。
智能手机作为一种便携式和移动性的终端设备,需要强大的处理器和硬件来支撑复杂的操作系统和应用。智能手机硬件架构主要有基带(Base Band)加应用处理器(Application Processor)的双CPU架构和基于虚拟化技术的单CPU架构。基带处理器实现手机的呼叫/接听等基本电话功能,应用处理器专用于处理高负荷的多媒体应用。这消除了由新应用的软件缺陷引起基带处理器失效的风险。以模块化架构的形式,应用处理器构成一个子系统,并与基带处理器隔离开来。
本文涉及的智能手机采用基于虚拟化技术的单CPU架构,手机虚拟化技术方案需采用VM(Virtual Machine)。VM对上层软件架构可以看成一个虚拟的硬件系统,将真实的CPU模拟成两个虚拟的CPU并行运行,允许一个平台同时运行两个操作系统,两个虚拟CPU上分别运行一个分时操作系统(Android)和一个实时操作系统(RTOS),如图1所示。
图1
基带处理器和应用处理器之间的通信靠虚拟管道传递实现。本方案硬件平台芯片中集成了一颗ARM1176JS内核,两颗ZSP800内核、一颗CEVA公司的DSP内核以及GSM&TD专用加速器,用于实现TD与GSM基带功能;同时集成LCD控制器、Camera控制器、2D加速器、Codec音频解码器,用于实现多媒体功能。
在评估手机功耗特性方面,主要包括手机待机状态最低电流值和手机工作状态电流值。由于篇幅有限,本文仅针对如何降低最低待机状态电流值来进行设计与实现。
在智能终端省电软件控制过程中,最有效的方式是对系统的电压和时钟频率进行有效的低功耗控制管理。本方案采用目前已经成为系统设计主流的低功耗设计策略DPM(动态功耗管理)。DPM设计思想简单来说,就是系统一旦空闲则立即通过关闭时钟和关闭电源两种方式将该设备切换到低功耗状态。主要通过在操作系统上搭建一个用于功耗管理的软件模块来实现。由于本方案中两个OS同时并发运行于单芯片的ARM1176EJS子系统内,硬件资源分配遵循原则是“基带子系统专属使用的由RTOS控制,应用子系统专属使用的由Android控制,共用资源由RTOS控制”。考虑运行于RTOS的基带子系统对任务实时性的苛刻要求,设计以基带子系统DPM软件模块为主控制模块,应用子系统PM软件模块为从控制模块。同时,DPM软件模块主要负责基带各模块和与应用子系统公用模块的状态管理、约束判断、省电模式设置等任务。PM软件模块主要负责向DPM请求睡眠,醒锁机制,外设(例如键盘、背光灯、Camera等)状态管理等。其总体软件架构如图2所示。
在应用子系统中,PM模块动态地收集应用系统的运行情况,配置基带的DPM,使其满足应用系统的省电要求和针对Android专属模块采取使用开启、未使用关闭的原则控制。
在基带系统中,DPM模块为省电工作的主要承担者,其核心通过收集系统的信息作出必要的判决,包括PM收集的Android系统的信息,决策睡眠类型、睡眠时间并通过调用硬件驱动对相应模式下的电源域状态和时钟域状态控制。
图2
(1)应用子系统状态
应用子系统共有三种状态,跃迁关系如图3所示。
work状态:有任务在执行的工作状态,可向suspend和idle状态跃迁。
suspend状态:当处于 work状态时,向/sys/power/state里写“mem”时系统跃迁到suspend状态,冻结进程让外设进入休眠状态。当唤醒事件产生则返回work状态。
idle状态:当所有任务运行完毕系统会从work进入idle状态;当有唤醒事件产生时则返回work状态。
(2)基带子系统状态
基带子系统共有三种状态,跃迁关系如图4所示。
sleep状态:省电睡眠模式,根据具体机制分为多种睡眠模式类型。
idle状态:指一个抽象的概念,仅仅是基带从work状态到sleep状态的过渡。
work状态:指基带侧有任务或中断在执行。
图3
图4
本方案中,系统省电入口设置在基带OS中,当基带进入idle后,先查询应用子系统状态,用以控制是否可以进入省电流程。如果状态为work,则将虚拟机切换到应用子系统之后,Linux进行任务调度。若此时Linux任务完成则进入应用idle流程,若此时有suspend事件产生,就会进入应用suspend流程。冻结进程及让外设进入休眠状态这一系列低功耗设置工作后,应用子系统通过虚拟管道(VPIPE)向基带发送事先约定好的睡眠命令,基带收到此VPIPE命令后设置应用子系统状态为空闲。当基带再次进入idle后,查询应用子系统状态,如果为空闲,基带子系统中低功耗模块启动睡眠流程,基带睡眠流程采用ARM主控的方式来控制芯片内部模块以及外设模块在相应的时隙进入省电模式。被作为modem使用的基带子系统省电控制主要分为4部分:物理层、协议栈、操作系统和硬件驱动。其中物理层主要负责由协议栈规划时间点的数据测量任务,协议栈主要负责计算出下一个DRX(非连续接收)测量时间点。此时,OS没有任务调度或者中断处理,就判断约束条件并根据协议栈计算的时间点和系统定时器时间点进行比较,共同决定进入何种模式睡眠,再进行数据保护、唤醒设置等一系列系统保护和数据保护动作,然后调用硬件驱动,对各个模块省电控制予以实现。
睡眠唤醒后,置应用子系统状态为工作,并进行定时器补偿。当基带再一次进入idle,则切换到Linux。若检测没有中断产生等待处理,则再一次发送带有sleep指令的VPIPE命令,通知基带进入睡眠,如此反复。当需要唤醒应用时,清除睡眠标志,发送VPIPE命令给应用。当基带进入idle后,切换到Linux,Linux检测到中断pending,则进行相应处理。其省电状态跃迁的主要流程如图5所示。
在智能手机设计中,省电设计是必须面对的问题。其原因在于,嵌入式系统被广泛应用于便携式和移动性较强的手持产品中,而这些产品不是一定都有充足的电源供应,往往靠电池来供电,电池容量是现在技术的一个瓶颈,所以只能从降低功率消耗来达到省电效果,尽可能地延长电池的使用时间。
本文基于单芯片双操作系统智能手机终端,提出一种双操作系统终端间的省电方案架构设计,通过降低功耗来达到省电目的,并在Agilent 66319B电源为智能手机终端提供稳定5V电压的情况下通过电流值的降低验证本方案的有效性。图6为没有省电方案的智能手机终端在5V稳定电压下24s内4 095次电流的采样值,平均电流为204.488mA。需要说明的一点是,这里的没有省电方案仅指本文所提出的方案,对于部分省电由硬件驱动控制的外设仍保留;图7为有省电方案的智能手机终端在5V稳定电压下24s内4 095次电流的采样值,平均电流为89.327mA。省电亦即降低功耗,在电压值保证不变的情况下降低电流值即降低功耗,说明通过省电方案能有效地降低终端的功耗,方案是可行的。
图5
本文从操作系统层级提出一种省电设计方案,有效地降低了智能手机功耗,延长了待机时间。该方案的实现可大部分用于相似硬件平台的嵌入式设备中,对省电技术的发展具有一定的理论意义和现实意义。
图6
图7
[1]智能手机的硬件体系结构[DB/OL].(2008-06-13)[2012-12].http://tech.c114.net/174/a322489.html.
[2]苏健.Android智能手机平台电源管理技术[J].微处理机,2011(5).
[3]T Simunic,L Benini,P W Glynn,et al.Dynamic power management for portable systems[C]//Proceedings of the International Conference on Mobile Computing Networking,Boston,August,2000:11-19.
[4]G Goossens,P Paulin,J Van Praet,et al.Embedded software in real-time signal processing systems:design technologies[J].Proceedings of the IEEE,1997,85(3):36-454.
[5]陈向群,郭耀.操作系统电源管理研究进展[J].计算机研究与发展,2008(5):817-824.
[6]李晗.TD-SCDMA系统中终端省电技术的研究[J].电信工程技术与标准化,2010(4):69-71.