在我们为其开发软件时,必须考虑嵌入式/移动环境电池电池电量的电池电源,因此嵌入式/移动世界中的节能软件编程很重要。
问题是(涉及汇编/c/c/c (
认为我们在任意平台上运行时具有稳定的软件版本 X 它消耗 y 功率量(以瓦特为单位(,现在我们将执行一些代码变革,我们想衡量它将如何对能源消耗及其在建筑时间的效率产生影响。
INT16U x = OXFFFF;
/... some code in stable release .../
for(;x<4096;++x)
{
/... some code in stable release .../
INT64U foo = x >> 256 ? x : 4096 ; // point 1 sample code change;
if(~foo & foo) foo %= 64 ; // point 1 sample code change;
/... some code in stable release .../
}
简单地说,如果我们要衡量该代码如何更改@point1
对能源效率的影响(相对于稳定的发布统计(,而不是分析空间和时间(性能加上内存(,如果我们想构建C/C 中的简单能量/功率分析和分析工具,
- 是否有建议的C/C 库或来源来构建电源分析工具?
- 如果我们必须通过CPU/GPU指令级别来分析并确定每个代码更改的功耗水平的变化,例如在
point1
中,我们如何确定各自CPU或GPU的每个指令的功耗平台? - 开发人员如何意识到由于应用程序构建时间而不是运行时的代码更改而导致的供电量减少了多少或增加?
tl; dr您不能使用软件,只用物理仪表。
完善已经暗示的" @some programmer dude":
一个问题是,在硬件上的某个操作的实际实现未知。您可能会获得带有周期/opcode的列表,但您不知道这些周期会做什么。可以走很长的路线,有些需要更多的零件才能通过少一些,依此类推,因此,个人周期需要多少功率。
另一个问题是复杂代码中几乎不确定的路径,具有大域(例如16位ADC(和多个输入(例如:一次读取几个传感器。(,尤其是当您使用浮点算术时。<<<<<<<<<</p>
有可能在功耗中获得相对差异,但只有粗大的差异。像"相同代码100个循环"中的粗略需要比10英寸粗糙的功率更多。或者:如果运行速度更快,则可能需要更少的功率。
不,您必须吞下苦药,然后转到下一个Rhode&amp; schwarz(不隶属的,只是在写这封信时在侧边栏上看到一个广告(商店,然后得到一个电源供应,一米(两个米(,实际上(,频率发生器和必要的连接材料。将使您在中高五位数范围(US $(中缩短您。一旦拥有它,您需要测量您获得的每批处理器的几批MCUS/CPU(约30岁以上的大约30岁以上(的功耗。
如果您还没有工具,那将是很多工作和投资。测量本身也是一种艺术形式,您需要知道自己在做什么,很多事情可能会出错。
如果您想与军方一百万美元合同,并且需要保证您的东西能够在一次电池上运行五年(而第一件事说军事要做的就是拍打,这可能是个好主意。上面有一个贴纸,上面写着"每6个月更换电池!"(否则:甚至不值得头痛。