引言
智能手机中包含了很多耗能设备, 诸如MP3、MPEG- 4、Wi-Fi、数码相机、3D 游戏等等。在手机电池容量还没有实现质的飞跃的前提下, 我们不得不考虑手机电源节能的问题。我主要通过了以下四个方面来阐述在基于Linux 平台上的智能手机的解决方案。
CPU 的选择
尽管现在有了各种在不过多加重功耗负担的前提下提高性能的技术, 但用一个芯片来处理这么多各种各样的任务, 恐怕已经不是一个很好的选择了。一是因为这些功能对芯片处理功能的要求可能各不相同, 二是因为一个负担着如此众多任务的芯片势必需要很高的速度, 降低功耗变得很困难。
在这种情况下, 多CPU 系统(MPCore)成为一个必然的趋势。多CPU 系统的一个明显的优势是: 针对不同的任务处理需要, 不同的CPU 可以各尽其职, 将自身的优势充分发挥, 由此带给手机最优化的性能表现。另一个优势显然还是体现在对功耗的控制上: 假如用单CPU 来完成所有的功能, 不可避免地需要一个很高的CPU 速度, 从而造成很高的功耗。用一颗高速CPU 来完成这样的任务, 无疑是大牛拉小车, 同时浪费很多能源。多CPU 系统可以根据不同的任务需要合理地启动、停止相应的CPU 来完成任务,不需要的时候处于停歇状态, 实现最大限度地控制功耗。
既然我们选择了多CPU 的架构, 那么接下来CPU 的性能就是我们要考虑的第二大问题。一般的情况下, 我们是在CPU 的性能( Performance) 和功耗( Power ConsumpTIon) 方面进行比较和选择。通常可以采用每执行1M次指令所消耗的能量来进行衡量, 即Watt/MIPS。
我们把CPU 的功率消耗分为两大部分: 内核消耗功率PCORE和外部接口控制器消耗功率PI/O, 总的功率等于两者之和, 即PPCORE+PI/O。对于PCORE, 关键在于其供电电压和时钟频率的高低; 对于PI/O 来讲, 除了留意各个专门I/O 控制器的功耗外, 还必须关注地址和数据总线宽度。
在数字集成电路设计中, CMOS 电路的静态功耗很低, 与其动态功耗相比基本可以忽略不计。CMOS 电路动态功耗的计算公式如下:
Pd=CT*V2*f, 其中Pd 是CMOS 芯片的动态功耗, C是CMOS芯片的负载电容, V 是CMOS 芯片的工作电压, f 是CMOS 芯片的工作频率。
由上可见, 当CPU 确定后, 我可以通过降低频率和电压来减少系统的功耗。
在CPU 的选择方面, 我们推荐采用Intel 的Xscale 芯片, 以及IBM的PowerPC405G 芯片。
动态电源管理(DPM)
系统不可能始终处于满负荷状态, 因为系统的工作量随时都在改变。动态电源管理(DPM) 通过选择性的将空闲的系统组件置于低能耗状态实现了系统整体能耗的最优化。
我们更为关注的是DPM在Linux 框架结构下的实现。图1 展示了电源管理和嵌入式Linux 堆栈之间的关系。
以下是一些于电源管理相关的接口以及API:
内核接口。在针对Linux 的DPM 架构中, 内核中的DPM 子系统负责维持系统的电源状态, 并把DPM 系统的各个电源得到管理的元件联系在一起。DPM 子系统通过多个API 直接与设备驱动程序通信, 这些API 把驱动程序从完全运行状态转为各种电源得到管理的状态。策略管理器( 或应用软件自身) 通过多个API向DPM 子系统提供指导, 这些API 定义各种策略, 并在定义好的运行点之间转移整个系统。
驱动程序接口。启用了DPM 的设备驱动程序比默认驱动程序具有更多“状态”: 由外部事件通过各种状态来驱动它们, 或通过来自内核DPM 子系统的回调来驱动它们, 从而反映并遵循运行策略。驱动程序API 还允许驱动程序登记它们连接和管理的各个设备的基本运行特征, 从而实现更精细的策略决策。
技术专区
- Alexa语音服务软件扩展STM32Cube
- 结合DNN API驱动未来神经网络应用的解决方案
- 针对于高端移动通信和汽车市场的四集群设计
- 一款基于帧捕捉的开源图形调试器应用设计
- 即将成为标准配置的最新安全技术:后视摄像系统