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