是否有任何技术可以优化代码以确保更低的功耗。架构是ARM.language是C
答案 0 :(得分:6)
来自ARM技术参考站点:
ARM11 MPCore的功能 处理器,提高能源 效率包括:
- 准确的分支和子程序返回预测,减少数量 不正确的指令获取和 解码操作
- 使用物理寻址的缓存,这减少了缓存的数量 冲洗和补充,节省能源 系统
- MicroTLB的使用减少了翻译和消耗的功率 保护查找每个周期
- 缓存使用顺序访问信息来减少数量 访问标签RAM和 不需要的数据RAM。
在ARM11 MPCore处理器中 门控也广泛使用 时钟和门禁用输入 未使用的功能块。只有 积极使用的逻辑来执行 计算消耗任何动态 功率。
根据这些信息,我会说处理器为您节省电力做了很多工作。任何电力浪费都来自编写得不好的代码,这些代码执行的处理超出了必要的处理,无论如何你都不会想要。如果您希望节省电力,应用程序的整体设计将产生更大的效果。网络访问,屏幕渲染和其他耗电量大的操作将更加关注功耗。
答案 1 :(得分:5)
优化代码以降低功耗实际上只是优化代码。无论您的动机是货币,社交还是政治等,CPU周期越少=使用的能源越少。我想说的是我认为你可以用“执行时间”代替“功耗”,因为它们基本上会成正比例 - 因此你可能会在没有“吓跑”人们的情况下取得更大的成功。与权力有关的问题。但是,我可能会更正:)
答案 2 :(得分:5)
是。使用profiler并查看哪些例程正在使用大部分CPU。在ARM上,您可以使用一些JTAG连接器(如果可用)(我使用Lauterbach进行调试和分析)。主要问题通常是让您的处理器在空闲时处于低功耗状态(深度睡眠)。如果你不能减少使用的CPU百分比(例如从80%到50%),它将不会产生很大的不同。根据您运行的操作系统,选项可能会有所不同。
答案 3 :(得分:3)
2010年7月版 ACM通讯有一篇关于节能算法的文章,您可能会对此感兴趣。我还没读过,所以不能传授它的任何智慧。
答案 4 :(得分:3)
尝试留在片上存储器(缓存)中进行空闲循环,将I / O保持在最低限度,使总线上的位翻转保持最小。像prom和闪存这样的NV存储器消耗更多的功率来存储零而不是(这就是为什么它们擦除为1,它实际上是零,但是转换器在你看到它之前反转了这个位,零存储为1,存储为1零,这也是为什么它们在失败时会降级的原因),我不知道易失性存储器,dram使用的晶体管数量是sram的一半,但必须刷新。
尽管你需要从较低功率系统开始,但所有这一切都很重要,因为上述情况可能并不明显。例如,不要使用英特尔的任何东西。
答案 5 :(得分:1)
如果您没有运行Windows XP +或更新版本的Linux,您可以运行后台线程,它只能执行HLT。
这就是像CPUIdle这样的程序减少功耗/热量的方法。
答案 6 :(得分:0)
如果处理器在需要较少的周期时调整为使用较少的功率,那么只需简单地使代码运行就是解决方案。否则,除非操作系统暴露某种电源管理功能,否则你无能为力。
答案 7 :(得分:0)
将IO保持在最低限度。
答案 8 :(得分:0)
在某些ARM处理器上,可以通过将稳压器置于待机模式来降低功耗。