新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 如何在ARM平台上开发低功耗的软件系统

如何在ARM平台上开发低功耗的软件系统

作者:时间:2012-06-21来源:网络收藏

对于个别计算单元,选择一种关机方案是很容易的。对于可以预测需要与否的单元,在不需要时通过应用程序或操作系统就可以停止运行这些单元。对于不可预测需要与否的单元,可以通过按需通电启动系统,也可以在空闲超过某段时间之后再自动断电。子系统断电的时标可以通过以下两方面来得出:通电但处于空闲状态时的以及睡眠唤醒循环的能耗。从根本上讲,这取决于应用场合。但是,动力循环代码的简单循环计数将是最明显的起点。

测量数据表明,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个周期(大部分周期用于清除一级缓存),这意味着此操作将在几百毫秒内完成,而不是更短的时间内完成,否则其能耗成本将超过其具有的优势。

是主动研究型架构,其包含两个内核,一个高性能的内核用于全功能操作,一个较小的配套内核则以较低的性能完成低功率操作。需要较高的处理功率时,系统运行较大的内核。任务完成时,系统可以把所有信息传递给小内核并关闭大内核。需要逆向信息移动时,再切换回大内核。如果这两个内核相连成为相关系统,则切换的能耗成本可降到最低。

关于操作系统

不巧的是,在操作系统上运行时,应用程序员无法这样灵活处理。缓存配置、S PM使用与否、组件的电源周期等很大程度上都是操作系统架构和设备驱动程序来专门决定的。但是,应用程序员仍然有很多东西需要考虑。

研究已经表明,设计不良的进程间通信(I P C)会大大增加系统的能耗。一个简单的技术称为“矢量化”进程间通信,这种技术批量处理小的消息并把大量小的消息作为一个大的消息来发送,这样通常可以减少上下文的切换开销。另外,减少进程数量可明显降低进程间通信的需求。需要频繁通信的进程可以合并成一个进程。

在嵌入式Linux中运行的最近研究(Tan, 2003)表明,分析和合理设计进程间通信2 可以潜在改进能耗多达60%。

结论

尽管我已经强调了许多领域仍然属于学术研究范围,但我们现在还是可以做许多工作。结果相对比较简单:减少外部内存存取,减少指令执行,并在不使用某些单元时关掉它们。

在做出这个结论的同时,我想起了2 0 0 9年中期在一次培训课上与客户的一次谈话。这些客户关心在包含了N e o n的C or tex-A8上实现信号处理算法且想要知道个别指令的确切能耗。我解释说,实际上很多这种信息是未知的,而且不管在什么情况下,很难使用当前的工具得出这些信息。回顾上文,我们已经认识到在捕猎大象的这个长期任务中,这些信息都是无关紧要的。实际上,客户要捕猎的大象与房间中的其他大象相比,非常的小。不管是经过分析还是持续跟踪数据,都可以得出更好的建议,那就是估算每次实现中涉及的数据存取次数和类型。这样,再结合指令计数,可以做出更加明智的选择。与内存存取布置不良相比,个别指令的功耗几乎无关紧要。

我们这些软件人员要继续对学术和工具供应商施加压力,让他们在下一代工具中构建出这些功能。这不容易但将会实现。

最后,我必须提醒大家所有这些取决于您所用的系统、、应用程序、操作系统、电池和用户。就像俗话说的“优势各有不同”。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭