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