|
對于Cortex-M系列處理器而言,低功耗是其關(guān)鍵優(yōu)點之一,可是您知道Cortex-M系列處理器的全部系統(tǒng)特性及性能相關(guān)指標(biāo)嗎?
系統(tǒng)特性
>>>>
低功耗
低功耗是Cortex-M處理器的一個關(guān)鍵優(yōu)點。低功耗是其架構(gòu)的組成部分:
WFI和WFE指令
架構(gòu)級的休眠模式定義
此外,Cortex-M支持許多其他的低功耗特性:
休眠和深度休眠模式:架構(gòu)級支持的特性,通過設(shè)備特定的功耗管理寄存器可以進一步擴展。
Sleep-on-exit模式:中斷驅(qū)動的應(yīng)用的低功耗技術(shù)。開啟設(shè)置后,當(dāng)異常處理程序結(jié)束并且沒有其他等待處理的異常中斷時,處理器自動進入到休眠模式。這樣避免了額外的線程模式中指令的執(zhí)行從而省電,并且減少了不必要的堆棧讀寫操作。
喚醒中斷控制器(WIC):一個可選的特性,在特定的低功耗狀態(tài),由一個獨立于處理器的小模塊偵測中斷情況。例如,在狀態(tài)保留功耗管理(SRPG)設(shè)計中,當(dāng)處理器被關(guān)電的設(shè)計。
時鐘關(guān)閉和架構(gòu)級時鐘關(guān)閉:通過關(guān)閉處理器的寄存器或者子模塊的時鐘輸入來省電。
所有這些特性都被Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23 和 Cortex-M33支持。此外,各種低功耗設(shè)計技術(shù)被用來降低處理器功耗。
因為更少的電路,Cortex-M0 and Cortex-M0+處理器比Cortex-M3, Cortex-M4 和 Cortex-M7功耗低。此外,Cortex-M0+額外優(yōu)化減少了程序存取(例如跳轉(zhuǎn)備份)來保持系統(tǒng)層級的低功耗。
Cortex-M23沒有Cortex-M0 和 Cortex-M0+那么小,但是在相同的配置下,仍然和Cortex-M0+能效一樣。由于更好性能和低功耗優(yōu)化,在相同配置下,Cortex-M33比Cortex-M4能效比更好。
>>>>
Bit-band feature位段
Cortex-M3 和Cortex-M4處理器支持一個叫做位段的可選功能,允許有兩段通過位段別名地址實現(xiàn)可以位尋址的1MB的地址空間(一段在從地址0x20000000起始的SRAM空間。另一段是從地址0x40000000起始的外圍設(shè)備空間)。Cortex-M0, M0+ 和 Cortex-M1不支持位段(bit-band)功能,但是可以利用ARM Cortex-M系統(tǒng)設(shè)計套件(CMSDK)中的總線級組件在系統(tǒng)層面實現(xiàn)位段(bit-band)功能。Cortex-M7不支持位段(bit-band),因為M7的Cache功能不能與位段一塊使用(Cache控制器不知道內(nèi)存空間的別名地址)。
ARMv8-M的TrustZone 不支持位段, 這是由于位段別名需要的兩個不同的地址可能會在不同的安全域中。對于這些系統(tǒng),外圍設(shè)備數(shù)據(jù)的位操作反而可以在外圍設(shè)備層面處理(例如,通過添加位設(shè)置和清除寄存器)。
>>>>
存儲器保護單元(MPU)
除了Cortex-M0, 其他的Cortex-M處理器都有可選的MPU來實現(xiàn)存儲空間訪問權(quán)限和存儲空間屬性或者存儲區(qū)間的定義。運行實時操作系統(tǒng)的嵌入式系統(tǒng), 操作系統(tǒng)會每個任務(wù)定義存儲空間訪問權(quán)限和內(nèi)存空間配置來保證每個任務(wù)都不會破壞其他的任務(wù)或者操作系統(tǒng)內(nèi)核的地址空間。Cortex-M0+, Cortex-M3 和 Cortex-M4都有8個可編程區(qū)域空間和非常相似的編程模型。主要的區(qū)別是Cortex-M3/M4的MPU允許兩級的存儲空間屬性(例如,系統(tǒng)級cache類型),Cortex-M0+僅支持一級。Cortex-M7的MPU可以配置成支持8個或者16個區(qū)域,兩級的存儲空間屬性。Cortex-M0 和 Cortex-M1不支持MPU.
Cortex-M23 和 Cortex-M33也支持MPU選項,如果實現(xiàn)了TrustZone安全擴展(一個用于安全軟件程序,另一個用于非安全軟件程序)可以有最多兩個MPU。
>>>>
單周期I/O接口
單周期I/O接口是Cortex-M0+處理器獨特的功能,這使Cortex-M0+可以很快的運行I/O控制任務(wù)。Cortex-M大多數(shù)的處理器的總線接口是基于AHB Lite或者AHB 5協(xié)議的,這些接口都是流水實現(xiàn)總線協(xié)議,運行在高時鐘頻率。但是,這意味著每個傳輸需要兩個時鐘周期。單時鐘周期I/O接口添加了額外的簡單的非流水線總線接口,連接到像GPIO(通用輸入輸出)這樣的一部分設(shè)備特定的外設(shè)上。結(jié)合單周期I/O和Cortex-M0+天然比較低的跳轉(zhuǎn)代價(只有兩級流水線),許多I/O控制操作都會比大多數(shù)其他微控制器架構(gòu)的產(chǎn)品運行的更快。
性能考慮
>>>>
通用數(shù)據(jù)處理能力
在通用微控制器市場,benchmark數(shù)據(jù)經(jīng)常用來衡量微控制器的性能,下表是Cortex-M處理器常用benchmark測試的性能數(shù)據(jù):
Cortex-M處理器常用benchmakr的性能分?jǐn)?shù)(來源:CoreMark.org 網(wǎng)站和 ARM 網(wǎng)站)
關(guān)于Dhrystone需要注意的是用來測試的Dhrystone是由官方源程序在沒有啟用inline and 和multi-file compilation編譯選項的情況編譯出來的(官方分?jǐn)?shù))。但是,很多微控制器廠商引用的是完全優(yōu)化編譯的Dhrystone測試出來的數(shù)據(jù)。
但是,benchmark工具的性能測試數(shù)據(jù)可能無法準(zhǔn)確反應(yīng)你的應(yīng)用能達到的性能。例如,單周期I/O接口和DSP應(yīng)用中使用SIMD,或者Cortex-M4/M7中使用FPU的加速效果并沒有在這些測試數(shù)據(jù)中體現(xiàn)出來。
通常,Cortex-M3 和 Cortex-M4由于以下原因提供了更高的數(shù)據(jù)處理性能:
更豐富的指令集
哈佛總線架構(gòu)
寫緩存(單周期寫操作)
跳轉(zhuǎn)目標(biāo)的預(yù)測取指
Cortex-M33也是基于哈佛總線的架構(gòu),有豐富的指令集。但是不像Cortex-M3 和 Cortex-M4,Cortex-M33處理器流水線是重新設(shè)計的高效流水線,支持有限的指令雙發(fā)射(可以在一個時鐘周期中執(zhí)行最多兩條指令)。
Cortex-M7支持更高的性能,這是因為M7擁有雙發(fā)射六級流水線并支持分支預(yù)測。而且,通過支持指令和數(shù)據(jù)Cache,和即便使用慢速內(nèi)存(例如,嵌入式Flash)也能避免性能損失的緊耦合內(nèi)存,來實現(xiàn)更高的系統(tǒng)級性能。
但是,某些I/O操作密集的任務(wù)在Cortex-M0+上運行更快,這是因為:
更短的流水線(跳轉(zhuǎn)只需要兩個周期)
單周期I/O端口
當(dāng)然也有設(shè)備相關(guān)的因素。例如,系統(tǒng)級設(shè)計,內(nèi)存的速度也會影響到系統(tǒng)的性能。
你自己的應(yīng)用程序經(jīng)常是你需要的最好的benchmark。CoreMark分?jǐn)?shù)是另外一個處理器兩倍的處理器并不意味著執(zhí)行你的應(yīng)用也快一倍。對I/O密集操作的應(yīng)用來說,設(shè)備相關(guān)的系統(tǒng)級架構(gòu)對性能有巨大的影響。
>>>>
中斷延遲
性能相關(guān)的另外一個指標(biāo)是中斷延遲。這通常用從中斷請求到中斷服務(wù)程序第一條指令執(zhí)行的時鐘周期數(shù)來衡量。下表列出了Cortex-M處理器在零等待內(nèi)存系統(tǒng)條件下的中斷延遲比較。
零等待內(nèi)存系統(tǒng)條件下的中斷延遲比較
事實上,真正的中斷延遲受到內(nèi)存系統(tǒng)等待狀態(tài)的影響。例如,許多運行頻率超過100MHz的微控制器搭配的是非常慢的Flash存儲器(例如30到50MHz)。雖然使用了Flash訪問加速硬件來提高性能,中斷延遲仍然受到Flash存儲系統(tǒng)等待狀態(tài)的影響。所以完全有可能運行在零等待內(nèi)存系統(tǒng)Cortex-M0/M0+系統(tǒng)比Cortex-M3/M4/M7有更短的中斷延遲。
當(dāng)評估性能的時候,不要忘記把中斷處理程序的執(zhí)行時間考慮在內(nèi)。某些8位或者16位處理器架構(gòu)可能中斷延遲很短,但是會花費數(shù)倍的時鐘周期完成中斷處理。非常短的中斷響應(yīng)時間和很短的中斷處理時間才是實際有效的。(轉(zhuǎn)自ARM)
宋工企鵝號:35--24-65--90-88 Tel/WX:173--17--95--19--08
以下課程可免費試聽C語言、電子、PCB、STM32、Linux、FPGA、JAVA、安卓等。
想學(xué)習(xí)的你和我聯(lián)系預(yù)約就可以免費聽課了。
|
|