基于构件的面向CPU的电源管理技术
无
论是PM_QoS、控制电压和电流的校准器方法,还是许许多多半导体公司支持自己CPU和电源管理芯片的Linux
BSP电源管理部分,都还没有一个构建在更高层面的构件级嵌入式系统电源解决方案和商业产品。虽然包括CELF(消费和嵌入式Linux
论坛)和Intel主导的Mobile &Internet Linux项目都设立了专门的电源管理计划(power manager
project),但是显然距离人们的要求和实际的应用还太远了。
Montavista在过去和IBM合作开发DPM(动态电源管理)技术的基础上,最近在专门针对手机、
互联网
移
动终端、PMP/PDN等便携消费电子设备的mobilinux5.0上提出嵌入式电源管理技术的构件方法。Montavista的构件方式主要是针对以
先进的多媒体应用处理器为核心的新一代嵌入式系统,比如Freescale的MX31、TI
OMAP2430/3430为核心的系统级电源管理,它包含下面几个主要的部分。
1 动态的电压和频率调节
正如前面提到的,电压和频率的提升将会让功耗线性增加,按照设计需要和应用的指令将电压和频率调节到合适的操作点可以大大降低功耗的有效方法。要想实现动态的电压和频率调节(DVFS),在内核里CPUrefs子系统是关键的部件,如图3所示。
图3 CPUrefs结构
那么管理者(Governor)是按照什么情况改变操作点呢?性能要求、省电的要求、用户的应用以及CPU的使用效率等条件都可以让管理者改变操作模式。Mobilinux5.0提供了userspace机制充当管理者的工作,即应用可以改变操作点。
在TI
OMAP3中有一个称为SmartReflex的技术,动态调整VDD1和VDD2操作点电压以适应芯片特性、温度和电压。SmartReflex技术有
四个级别:0级——在工厂生产时优化校准后设置的操作点;1级——引导时优化后校准确定的操作点;2级——通过软件循环实时优化电压点然后由CPU的中断
程序设置;3级——完全的硬件循环优化电压点,无须CPU干预,是一种硬件控制“傻瓜”操作点改变方式。无论是mobilinux5.0还是TI
3430 Linux distribution都已经支持DVFS和SmartReflex驱动。
2 挂起和恢复
在内核里,mobilinux5.0已经提供支持挂起和恢复的驱动程序的功能,新的驱动必须要增加回调函数以响应系统休眠中关机和再次唤醒的动作。
3 支持电源管理的驱动程序
每一个驱动程序必须经过重新的书写支持DVFS,即当操作点改变的时候,驱动程序通过CPUrefs的告知作出响应。驱动程序还必须正确处理系统的挂起和恢复事件。
4 CPU空闲调节
由一个定义的处理器特定的空闲状态点的CPUidle驱动管理、内核的一个CPUidle 框架和管理者组成,如OMAP3430定义7个空闲状态点。
5 应用设计策略
包括手机在内的便携式消费电子产品主要的能耗分布如图4所示。
图4 便携电子产品能耗分布
除了CPU外,其他主要的能耗大户是LCD背光、NOR/NAND Flash/RAM
存储
器、DC/DC转换和音视频放大器等,例如,MPEG4的播放就是一个能耗集中的应用。
如何使用mobilinux5.0等已经具备电源管理功能的商业嵌入式操作系统以使便携电子产品能耗降低到最少?下面的方法是设计人员应该考虑的。
● 实际测量的结果证明使用DVFS的方法是降低CPU运行时的能耗的关键。当然,如何让管理者设置操作点和状态转移是要设计人员全盘考虑的。
●
不要忽视CPU空闲状态的能耗管理。mobilinux5.0的CPUrefs 和所有的驱动都已经支持空闲的调节(idle
scaling),加上内核使用了动态滴嗒时钟(dynamic tick),改变了过去CPU无论是否运行都按照固定的时间唤醒的方法,大大节省能源。
● 可延迟的定时器(deferrable timer)——它可以告诉内核某个定时器不需要在时限到的时候唤醒,这将可以降低能耗。
● PowerTop工具——前面已经提到的这个工具已经集成到mobilinux5.0 中,而且证明对于分析系统空闲状态是一个非常有用的工具。
结语
上面讲了大量基于Linux的电源管理技术的实现方法,应该承认包括WinCE/Mobile、Symbian
等嵌入式操作系统的电源管理技术和操作系统结合的相对更加完整和容易使用,但是灵活性和开放性比较起开源的Linux要逊 {MOD}的多。更加重要的是,电
源管理是一个系统级的设计,而不仅仅是软件设计,不断追踪技术发展的Linux电源管理将得到越来越多的设计人员的喜爱,使用Linux操作系统优化电源
管理后电子产品将会更加省电和长效。
参考资料:
[1] TI
公司,
2008TI
亚洲技术研讨会资料
[2] Montavista Mobilinux 5.0 DynamicPower Management user Guide
[3] Liam Girdwood ,Every Microamp is sacred - A dynamic voltage and current control interface for the Linux Kernel,
[4] Mark Gross, Power management quality of service and how you could use it in your embedded