新聞中心

EEPW首頁(yè) > 網(wǎng)絡(luò)與存儲(chǔ) > 設(shè)計(jì)應(yīng)用 > 最小化ARM Cortex-M CPU功耗的方法與技巧

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

作者:MattSaunders 時(shí)間:2015-04-27 來(lái)源:電子產(chǎn)品世界 收藏

  1 理解Thumb-2

本文引用地址:http://2s4d.com/article/273202.htm

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

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

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

  Cortex-M架構(gòu)中的中斷控制器(Nested Vectored Interrupt Controller or NVIC)在降低功耗方面也起著關(guān)鍵作用。以前的7-TDMI需要“多達(dá)”42個(gè)時(shí)鐘周期,Cortex-M3 NVIC從中斷請(qǐng)求發(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ù),被稱(chēng)為“末尾連鎖(tail-chaining)”。這種方法使用僅需6個(gè)時(shí)鐘周期處理就能得到允許,進(jìn)入下一個(gè)中斷服務(wù)程序的所需信息。采用末尾連鎖,不需要進(jìn)行完整的入棧和出棧循環(huán),這使得管理中斷過(guò)程所需的時(shí)鐘周期數(shù)減少65%(如圖2所示)。

  3 節(jié)能注意事項(xiàng)

  存儲(chǔ)器接口和存儲(chǔ)器加速器能夠明顯影響CPU功耗。代碼中的分支和跳轉(zhuǎn)可能會(huì)對(duì)為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ì)更長(zhǎng),以便完成重新填充過(guò)程。這些延遲完全浪費(fèi)功耗,沒(méi)有任何功用。為了幫助減少延遲,Cortex-M3和M4內(nèi)核包括一個(gè)被稱(chēng)為推測(cè)取指(Speculative Fetch)的功能,即它在流水線中對(duì)分支進(jìn)行取指的同時(shí)也取指可能的分支目標(biāo)。如果可能的分支目標(biāo)命中,那么推測(cè)取指能夠把延遲降低到1個(gè)時(shí)鐘周期。雖然這個(gè)特性是有用的,但顯然不夠,許多Cortex-M產(chǎn)品供應(yīng)商都增加了自己的IP以增強(qiáng)這個(gè)能力。

存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理



上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: ARM Cortex-M CPU 存儲(chǔ)器 MCU

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉