5.1 通用數據處理能力
在通用微控制器市場,benchmark數據經常用來衡量微控制器的性能,表7是Cortex-M處理器常用benchmark測試的性能數據:
表 7: Cortex-M處理器常用benchmakr的性能分數
(來源:CoreMark.org 網站 and ARM 網站)
關于Dhrystone需要注意的是用來測試的Dhrystone是由官方源程序在沒有啟用inline and 和multi-file compilation編譯選項的情況編譯出來的(官方分數)。但是,很多微控制器廠商引用的是完全優(yōu)化編譯的Dhrystone測試出來的數據。
但是,benchmark工具的性能測試數據可能無法準確反應你的應用能達到的性能。例如,單周期I/O接口和DSP應用中使用SIMD,或者Cortex-M4/M7中使用FPU的加速效果并沒有在這些測試數據中體現(xiàn)出來。
通常,Cortex-M3 和 Cortex-M4由于以下原因提供了更高的數據處理性能:
· 更豐富的指令集
· 哈佛總線架構
· 寫緩存(單周期寫操作)
· 跳轉目標的預測取指
Cortex-M33也是基于哈佛總線的架構,有豐富的指令集。但是不像Cortex-M3 和 Cortex-M4,Cortex-M33處理器流水線是重新設計的高效流水線,支持有限的指令雙發(fā)射(可以在一個時鐘周期中執(zhí)行最多兩條指令)。
Cortex-M7支持更高的性能,這是因為M7擁有雙發(fā)射六級流水線并支持分支預測。而且,通過支持指令和數據Cache,和即便使用慢速內存(例如,嵌入式Flash)也能避免性能損失的緊耦合內存,來實現(xiàn)更高的系統(tǒng)級性能。
但是,某些I/O操作密集的任務在Cortex-M0+上運行更快,這是因為:
· 更短的流水線(跳轉只需要兩個周期)
· 單周期I/O端口
當然也有設備相關的因素。例如,系統(tǒng)級設計,內存的速度也會影響到系統(tǒng)的性能。
你自己的應用程序經常是你需要的最好的benchmark。CoreMark分數是另外一個處理器兩倍的處理器并不意味著執(zhí)行你的應用也快一倍。對I/O密集操作的應用來說,設備相關的系統(tǒng)級架構對性能有巨大的影響。
5.2 中斷延遲
性能相關的另外一個指標是中斷延遲。這通常用從中斷請求到中斷服務程序第一條指令執(zhí)行的時鐘周期數來衡量。表8列出了Cortex-M處理器在零等待內存系統(tǒng)條件下的中斷延遲比較。
表 8: 零等待內存系統(tǒng)條件下的中斷延遲比較
事實上,真正的中斷延遲受到內存系統(tǒng)等待狀態(tài)的影響。例如,許多運行頻率超過100Mhz的微控制器搭配的是非常慢的Flash存儲器(例如30到50MHz)。雖然使用了Flash訪問加速硬件來提高性能,中斷延遲仍然受到Flash存儲系統(tǒng)等待狀態(tài)的影響。所以完全有可能運行在零等待內存系統(tǒng)Cortex-M0/M0+系統(tǒng)比Cortex-M3/M4/M7有更短的中斷延遲。
當評估性能的時候,不要忘記把中斷處理程序的執(zhí)行時間考慮在內。某些8位或者16位處理器架構可能中斷延遲很短,但是會花費數倍的時鐘周期完成中斷處理。非常短的中斷響應時間和很短的中斷處理時間才是實際有效的。