<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 最小化ARM Cortex-M CPU功耗的方法與技巧

          最小化ARM Cortex-M CPU功耗的方法與技巧

          作者: 時(shí)間:2015-05-11 來源:網(wǎng)絡(luò) 收藏

            1理解Thumb-2

          本文引用地址:http://www.ex-cimer.com/article/273936.htm

            首先,讓我們從一個(gè)看起來并不明顯的起點(diǎn)開始討論節(jié)能技術(shù)—指令集。所有 CPU都使用Thumb-2指令集,它融合了32位指令集和16位Thumb指令集,并且為原始性能和整體代碼大小提供了靈活的解決方案。在內(nèi)核上一個(gè)典型的Thumb-2應(yīng)用程序與完全采用指令完成的相同功能應(yīng)用程序相比,代碼大小減小到25%之內(nèi),而執(zhí)行效率達(dá)到90%(當(dāng)針對運(yùn)行時(shí)間進(jìn)行優(yōu)化后)。

            Thumb-2中包含了許多功能強(qiáng)大的指令,能夠有效減少基礎(chǔ)運(yùn)算所需的時(shí)鐘周期數(shù)。減少時(shí)鐘周期數(shù)意味著現(xiàn)在你能夠以更少的CPU功耗完成手頭的工作。例如,假設(shè)要完成一個(gè)16位乘法運(yùn)算(如圖1所示)。在一個(gè)8位8051內(nèi)核的MCU上執(zhí)行這個(gè)運(yùn)算將需要48個(gè)時(shí)鐘周期,并占用48字節(jié)的Flash存儲(chǔ)空間。使用一個(gè)16位內(nèi)核的MCU(例如C166)執(zhí)行相同的運(yùn)算需要8個(gè)時(shí)鐘周期,并占用8字節(jié)的Flash存儲(chǔ)空間。相比之下,在使用Thumb-2指令集的3內(nèi)核中完成相同運(yùn)算僅僅需要1個(gè)時(shí)鐘周期,并占用2字節(jié)的Flash存儲(chǔ)空間。Cortex-M3內(nèi)核能夠通過使用更少時(shí)鐘周期完成相同任務(wù),節(jié)省了能耗;同時(shí)也能夠通過占用極少的Flash存儲(chǔ)空間,減少Flash存儲(chǔ)器訪問次數(shù),實(shí)現(xiàn)最終能耗節(jié)省的目標(biāo)(除此之外,更小的應(yīng)用代碼也使得系統(tǒng)可以選擇更小的Flash存儲(chǔ)器,進(jìn)一步降低整體系統(tǒng)功耗)。

            

           

            圖1 時(shí)鐘周期數(shù)對比

            

           

            圖2 7和Cortex-M3的中斷響應(yīng)

            2中斷控制器節(jié)能技術(shù)

            Cortex-M架構(gòu)中的中斷控制器(Nested Vectored Interrupt Controller or NVIC)在降低CPU功耗方面也起著關(guān)鍵作用。以前的ARM7-TDMI需要“多達(dá)”42個(gè)時(shí)鐘周期,Cortex-M3 NVIC從中斷請求發(fā)生到執(zhí)行中斷處理代碼僅需要12個(gè)時(shí)鐘周期的轉(zhuǎn)換時(shí)間,這顯然提高了CPU執(zhí)行效率,降低了CPU時(shí)間浪費(fèi)。除了更快進(jìn)入中斷處理程序之外,NVIC也使得中斷之間切換更加高效。

            在ARM7-TDMI內(nèi)核實(shí)現(xiàn)中,需要先花費(fèi)數(shù)個(gè)時(shí)鐘周期從中斷處理程序返回主程序,然后再進(jìn)入到下一個(gè)中斷處理程序中,中斷服務(wù)程序之間的“入棧和出棧(push-and-pop)”操作就要消耗多達(dá)42個(gè)時(shí)鐘周期。而Cortex-M NVIC采用更有效的方法實(shí)現(xiàn)相同任務(wù),被稱為“末尾連鎖(tail-chaining)”。這種方法使用僅需6個(gè)時(shí)鐘周期處理就能得到允許,進(jìn)入下一個(gè)中斷服務(wù)程序的所需信息。采用末尾連鎖,不需要進(jìn)行完整的入棧和出棧循環(huán),這使得管理中斷過程所需的時(shí)鐘周期數(shù)減少65%(如圖2所示)。

            3存儲(chǔ)器節(jié)能注意事項(xiàng)

            存儲(chǔ)器接口和存儲(chǔ)器加速器能夠明顯影響CPU功耗。代碼中的分支和跳轉(zhuǎn)可能會(huì)對為CPU提供指令的流水線產(chǎn)生刷新影響,在這種情況下CPU需要延遲幾個(gè)時(shí)鐘周期以等待流水線重新完成填充。在Cortex-M3或Cortex-M4內(nèi)核中,CPU配備了一條3級(jí)流水線。刷新整條流水線將導(dǎo)致CPU延遲3個(gè)時(shí)鐘周期,如果有Flash存儲(chǔ)器等待狀態(tài)發(fā)生,時(shí)間會(huì)更長,以便完成重新填充過程。這些延遲完全浪費(fèi)功耗,沒有任何功用。為了幫助減少延遲,Cortex-M3和M4內(nèi)核包括一個(gè)被稱為推測取指(Speculative Fetch)的功能,即它在流水線中對分支進(jìn)行取指的同時(shí)也取指可能的分支目標(biāo)。如果可能的分支目標(biāo)命中,那么推測取指能夠把延遲降低到1個(gè)時(shí)鐘周期。雖然這個(gè)特性是有用的,但顯然不夠,許多Cortex-M產(chǎn)品供應(yīng)商都增加了自己的IP以增強(qiáng)這個(gè)能力。


          上一頁 1 2 下一頁

          關(guān)鍵詞: ARM Cortex-M

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();