您的位置 首页 技术

最小化ARM Cortex-M CPU功耗的办法与技巧

1 理解Thumb-2首先,让我们从一个看起来并不明显的起点开始讨论节能技术—指令集。所有Cortex-M CPU都使用Thumb-2指令集,它融合了32位ARM指令集和16位

  1 了解Thumb-2

  首要,让我们从一个看起来并不显着的起点开端评论节能技能—指令集。一切Cortex-M CPU都运用Thumb-2指令集,它交融了32位ARM指令集和16位Thumb指令集,并且为原始功用和全体代码巨细供给了灵敏的解决方案。在Cortex-M内核上一个典型的Thumb-2运用程序与彻底选用ARM指令完结的相同功用运用程序比较,代码巨细减小到25%之内,而履行功率到达90%(当针对运转时刻进行优化后)。

  Thumb-2中包含了许多功用强大的指令,可以有用削减根底运算所需的时钟周期数。削减时钟周期数意味着现在你可以以更少的CPU功耗完结手头的作业。例如,假定要完结一个16位乘法运算(如图1所示)。在一个8位8051内核的MCU上履行这个运算将需求48个时钟周期,并占用48字节的Flash存储空间。运用一个16位内核的MCU(例如C166)履行相同的运算需求8个时钟周期,并占用8字节的Flash存储空间。比较之下,在运用Thumb-2指令集的Cortex-M3内核中完结相同运算只是需求1个时钟周期,并占用2字节的Flash存储空间。Cortex-M3内核可以经过运用更少时钟周期完结相同使命,节约了能耗;一起也可以经过占用很少的Flash存储空间,削减Flash存储器拜访次数,完结终究能耗节约的方针(除此之外,更小的运用代码也使得体系可以挑选更小的Flash存储器,进一步下降全体体系功耗)。

  2 中止控制器节能技能

  Cortex-M架构中的中止控制器(Nested Vectored Interrupt Controller or NVIC)在下降CPU功耗方面也起着关键作用。曾经的ARM7-TDMI需求“多达”42个时钟周期,Cortex-M3 NVIC从中止请求产生到履行中止处理代码仅需求12个时钟周期的转化时刻,这显着提高了CPU履行功率,下降了CPU时刻糟蹋。除了更快进入中止处理程序之外,NVIC也使得中止之间切换愈加高效。

  在ARM7-TDMI内核完结中,需求先花费数个时钟周期从中止处理程序回来主程序,然后再进入到下一个中止处理程序中,中止服务程序之间的“入栈和出栈(push-and-pop)”操作就要耗费多达42个时钟周期。而Cortex-M NVIC选用更有用的办法完结相同使命,被称为“结尾连锁(tail-chaining)”。这种办法运用仅需6个时钟周期处理就能得到答应,进入下一个中止服务程序的所需信息。选用结尾连锁,不需求进行完好的入栈和出栈循环,这使得办理中止进程所需的时钟周期数削减65%(如图2所示)。

  3 存储器节能注意事项

  存储器接口和存储器加速器可以显着影响CPU功耗。代码中的分支和跳转或许会对为CPU供给指令的流水线产生改写影响,在这种情况下CPU需求推迟几个时钟周期以等候流水线从头完结填充。在Cortex-M3或Cortex-M4内核中,CPU装备了一条3级流水线。改写整条流水线将导致CPU推迟3个时钟周期,假如有Flash存储器等候状况产生,时刻会更长,以便完结从头填充进程。这些推迟彻底糟蹋功耗,没有任何功用。为了协助削减推迟,Cortex-M3和M4内核包含一个被称为估测取指(Speculative Fetch)的功用,即它在流水线中对分支进行取指的一起也取指或许的分支方针。假如或许的分支方针射中,那么估测取指可以把推迟下降到1个时钟周期。尽管这个特性是有用的,但显着不行,许多Cortex-M产品供给商都增加了自己的IP以增强这个才能。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/326207.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部