0

我在熊金属(无操作系统)上运行 c 代码。代码接收一些传感器数据,执行计算,形成数据包并传输。该板由电池供电。

我有兴趣了解 Jules 中每个操作消耗的能量。这可能吗?一个人会怎么做呢?

4

1 回答 1

0

每条指令使用的焦耳数取决于您使用的处理器以及您正在查看的指令。我相信 ARM 和 Atmel AVR 处理器没有真正的硬件电源管理,这使事情变得更简单。

一条指令使用多少能量与它使用的硅上电路的数量和类型有关。这意味着试图从理论上计算焦耳的数量会很复杂,因为它不仅仅与指令使用的周期数有关。

所以你必须通过实验来做。这就是我要做的。

  1. 删除所有编译器优化
  2. 进行频率分析以找到您的热门操作并挑选出最常用的操作。(我假设我们不是在谈论 ASM 指令,而是在谈论“C”指令。)
  3. 编写一个循环,将指令重复 20 次,并让循环至少运行几秒钟
  4. 用电源更换电池。
  5. 如评论中所述,使用串联电阻测量功率,但(当然)适当地调整电压。
  6. 运行循环程序并获得功率的统计采样。
  7. 对所有热操作执行此操作。
  8. 计算程序的功耗
  9. 根据程序执行的实际功率测量验证功率使用情况
  10. 适当调整(即标准化)您的计算

您还必须考虑内存层次结构。访问片外存储器需要能量。当操作或数据被缓存时,它会改变你的能量方程。

我认为这应该有效,但不知道。祝你好运。

于 2015-08-25T18:33:54.607 回答