如何估计 ARM 平台上的程序消耗的能量? [关闭]
Posted
技术标签:
【中文标题】如何估计 ARM 平台上的程序消耗的能量? [关闭]【英文标题】:How to give an estimation of the energy consumed by a program on an ARM platform? [closed] 【发布时间】:2016-02-14 12:19:21 【问题描述】:有没有办法估计 ARM CPU 上的程序消耗的能量?在嵌入式系统中,能耗是最重要的参数之一,我想知道程序员是否有可能知道运行程序大约需要多少能量?
例如,由于在多个周期执行的 ARM CPU 除法上,我想使用除法的代码会比不使用除法的代码消耗更多的能量。但是这个reeasing还是很直观的,有没有更好的办法来量化CPU在执行代码时所消耗的能量?
【问题讨论】:
哪个平台?我的手臂芯片甚至没有电池。它使用太阳能电池板,如果太阳能不可用,它会求助于手动。 arm 制造的是内核而不是芯片,尽管您知道的唯一方法是使用特定的芯片、电路板和软件并测量功率,没有其他方法。 有一篇关于旧 ARM 内核的论文计算了能量/指令,并认为编译器可以针对它进行优化。对于大多数现代 ARM CPU 和系统来说,这不是一个因素。 DDR 和其他外围设备通常使 CPU 相形见绌。div
和 mul
可能由一张大桌子实现,需要大量的硅,但不是很多能量。对于多周期mul
,它的计算时间很长,会消耗更多的能量。很大程度上取决于实现中使用的晶体管以获得精确的能量。
人们不喜欢您的问题,因为您需要更具体地了解系统。对于低能量 cortex-m 设计(可能使用被动能量),这是一个有趣的问题。对于大多数“手机”或 PDA/平板电脑来说,它没有意义。 USB 加密狗、智能卡和个人健身设备是解决这个问题的好应用。通常除了 CPU 之外的其他东西会占主导地位(电源、时钟等)。与总能量相比,峰值能量通常非常重要。
ISA power、ARM ins power、ARM+compiler+algo power 等。大多数都是书本,尚不清楚哪一个会回答您的问题;也许他们所有人。
【参考方案1】:
我认为这里没有任何特定于 ARM 的技巧(无论如何,“ARM”涵盖了许多不同的东西)。您通常会查看您使用的各种不同电源状态(运行、睡眠等)下的电流消耗,然后估计在每种状态下花费的时间比例。这让您可以计算平均电流/功率。
说“这条指令消耗大量能量”通常没有多大意义——您可能关心的是“这条指令序列需要很长时间才能运行,因此我无法返回快速入睡”。
【讨论】:
【参考方案2】:与现成工具最接近的是类似于http://ds.arm.com/ds-5/optimize/arm-energy-probe/
通常电池运行系统具有通过 sysfs 条目暴露的电量计,可以提供通过的电流量。把它想象成智能手机电池/充电指示灯。这些通常不是那么可靠并且难以与应用程序运行的确切时间相关联,但可能会给您一个粗略的估计。
【讨论】:
以上是关于如何估计 ARM 平台上的程序消耗的能量? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
m基于matlab的AODV,leach自组网网络平台仿真,对比吞吐量,端到端时延,丢包率,剩余节点个数,节点消耗能量