如何在ARM平台上开发低功耗的软件系统
的效率可以提升。组合的结果是减少了每条指令的净能耗。
因此尽管执行时间基本上低于展开因子4,但是因为功耗持续降低,所以所有重要的功耗时间积也随之降低。因此有能耗意识的编译器或开发人员与只考虑执行时间的编译器或开发人员相比,会更倾向于展开循环。
精度满足需求即可
还必须考虑输出要求的精度。即使有浮点硬件可用,定点实现的计算通常比浮点实现的计算更有效率。如果您正在渲染一个供屏幕查看的图像,可能并不需要完全符合标准,您只需要渲染出可以接受的图像。
对标准M P E G- 4解码函数进行递进优化的一项研究(S h i n,2002)已经表明,把软浮点切换为定点二进制可以把能耗降低72%。精度损失意味着该结果不再符合标准,但是在所研究的系统上仍然足以满足渲染用途。
关于Thumb
T humb指令集专门设计用于改进代码密度,还可以提升窄内存系统的性能。但是,在代码密度确实改进的同时,指令数也同时增加了。这是因为,与A R M指令相比,减少了个别Thumb指令的功能。因此Thumb重新编译会造成能耗增加,这看起来是合理的,而我们看到的事实也的确是这样。
上述研究表明,如果代码大小减少4%,指令执行数增加38%,而能耗增加28%。为了找到第三头大象,我们需要走出处理器及其内存的领域,着眼于范围更大的系统。我们这些天使用的系统已经被我们的硬件设计同事组合到了一起,这个系统提供了大量节能选项。
更广系统中的节能
显而易见,没有使用的组件应尽可能置于低功耗状态。这也是所有敏锐的设计系统不可分割的组成部分,这些组件应包括内存和缓存系统、甚至是处理器本身。在多核系统中,我们必须考虑在处理要求相对低时中止一个或多个内核运行的可能性。
首先,一个很小但值得考虑的问题是:处理外设时,要始终尝试使用中断机制,而不是轮询机制。轮询循环只会耗用能量而无任何目的。几乎所有架构均包括了某种等待中断的指令,可以把这种情况下的系统置于待机状态。对于A R M系统,内核通常带有时钟门控,只保留静态漏电。
通过设计中断架构来增加拖尾连锁,一般可以避免不必要的睡眠唤醒循环。ARM Cortex-M3架构可以自动实现这一点。
对于个别计算单元,选择一种关机方案是很容易的。对于可以预测需要与否的单元,在不需要时通过应用程序或操作系统就可以停止运行这些单元。对于不可预测需要与否的单元,可以通过按需通电启动系统,也可以在空闲超过某段时间之后再自动断电。子系统断电的时标可以通过以下两方面来得出:通电但处于空闲状态时的功耗以及睡眠唤醒循环的能耗。从根本上讲,这取决于应用场合。但是,动力循环代码的简单循环计数将是最明显的起点。
测量数据表明,N e o n引擎相比C o r tex-A9等内核的运行功率要高大约10%。但是,对于传统的信号处理算法,其性能提升了40% - 150%。在任务期间启用NeON而在不需要时切断Neon的好处很明显。很常见的是,不但N e o n引擎可以在任务完成时切断,而且整个处理器系统可以节省更多功耗。
通常一个比较难的选择是启用计算组件提前完成计算(且因此切断时间更长)还是完成计算时及时降低处理器速度以减少功耗。图6显示了每次迭代的能耗数据,这是简单的基准(Domeika, 2009)。采用不同的指令缓存和浮点协处理器组合,对于两个时钟速度,每个时钟速度均要运行此基准四次。有两个清晰的重点。首先,尽管指令缓存和浮点单元均减少了能耗,但是浮点单元比指令缓存的表现更优异。
图6:系统组件电源利用
其次,对于所有配置而言,每次迭代的能耗从本质上讲是相同的,与时钟速度无关。因此,为了更快地完成任务而启用所有功能并全速运行要比调慢时钟速度更加高效。
多重处理
众所周知,与调高单核的功率相比,采用多核可以获得更高的性能和更好的能效。使用多核系统时,我们必须考虑在不需要时选择中止一个或多个内核。A R M的研究表明,S M PLinux系统中单核循环的成本是50000个周期(大部分周期用于清除一级缓存),这意味着此操作将在几百毫秒内完成,而不是更短的时间内完成,否则其能耗成本将超过其具有的优势。
ARM是主动研究型架构,其包含两个内核,一个高性能的内核用于全功能操作,一个较小的配套内核则以较低的性能完成低功率操作。需要较高的处理功率时,系统运行较大的内核。任务完成时,系统可以把所有信息传递给小内核并关闭大内核。需要逆向信息移动时,再切换回大内核。如果这两个内核相连成为相关系统,则切换的能耗成本可降到最低。
关于操作系统
不巧的是,在操作系统上运行时,应用程序员无法这样灵活处理。缓存配置、S
- 基于μC/OS-II嵌入式系统的低功耗开发(07-08)
- 数字信号处理(DSP)应用系统中的低功耗设计(05-02)
- 量身订制的DSP元件设计策略 (04-12)
- AVR单片机介绍(07-09)
- 基于WinCE5.0的嵌入式设备休眠唤醒技术研究(09-27)
- DSP电源系统的低功耗设计(11-13)