現(xiàn)實(shí)標(biāo)準(zhǔn)和32位MCU
當(dāng)為下一代控制應(yīng)用選擇32位MCU時,必須考慮一點(diǎn),就是面對某一實(shí)際的應(yīng)用,不同供應(yīng)商的處理器雖然在數(shù)據(jù)手冊上看起來或多或少有些相似,但實(shí)際上是非常不同的。雖然數(shù)據(jù)手冊中的規(guī)范和Dhrystone(處理器整型數(shù)計(jì)算能力)MIPS處理能力給出了一個粗略的評估標(biāo)準(zhǔn),但必須考慮得更深入以保證MCU有足夠的吞吐量和過載余量來滿足當(dāng)前和未來的應(yīng)用需求。
運(yùn)行編譯EEMBC汽車標(biāo)準(zhǔn)代碼的測試結(jié)果顯示:看起來類似的三款MCU實(shí)際性能差別很大
例如,價格低廉、基于ARM的MCU一般具有很多資源,雖然它們中的許多是基于相同的CPU核,通常是沒有高速緩存的ARM7TDMI處理器,但不同供應(yīng)商的產(chǎn)品整體性能差別非常大。這主要是由于實(shí)現(xiàn)片上存儲子系統(tǒng)、片上總線結(jié)構(gòu)和I/O功能所采用的方法不同。因此,為了確定哪一款處理器最有價值,就必須考察整個處理器子系統(tǒng)。
實(shí)時嵌入式應(yīng)用
當(dāng)在實(shí)時嵌入式應(yīng)用中使用MCU時,MCU必須對所有操作做出確定性的響應(yīng),以保證任務(wù)在被分配的時間內(nèi)完成,響應(yīng)延遲對于實(shí)時系統(tǒng)來說也必須很短。為了達(dá)到這個目標(biāo),MCU必須具有有效的硬件中斷管理子系統(tǒng),用于處理優(yōu)先
處理器也應(yīng)該有一個有效的上下文切換機(jī)制,來保證當(dāng)中斷改變指令流時損失的時間最短。內(nèi)部系統(tǒng)總線應(yīng)該有確定的響應(yīng)時間,用于支持對時間要求嚴(yán)格的操作。
基于ARM的眾多MCU提供了針對不同系統(tǒng)解決方案的廣泛選擇,這些方案的區(qū)別在于時鐘速率、集成外設(shè)、高容量閃存和靜態(tài)RAM等。由于內(nèi)部存儲子系統(tǒng)和系統(tǒng)總線效率,以及CPU對片上設(shè)備操作處理程度的差別,即使在相同時鐘頻率下,MCU的性能也存在著極大的差別。影響性能的一個關(guān)鍵問題就是片上閃存的訪問時間過長。
為了更好地評估處理器的性能,一些現(xiàn)實(shí)標(biāo)準(zhǔn)已經(jīng)開發(fā)出來了,例如由EEMBC(嵌入式微處理器基準(zhǔn)聯(lián)盟),一個獨(dú)立的非營利組織正在開發(fā)的標(biāo)準(zhǔn),可以對各種外部看起來相似的MCU之間的差別進(jìn)行更深入的分析。
EEMBC在開發(fā)其評估標(biāo)準(zhǔn)套件時也面臨了巨大的挑戰(zhàn)。首先面對的就是開發(fā)測試軟件,它用于產(chǎn)生在一個應(yīng)用中能夠代表實(shí)際性能的結(jié)果。這就表示要拋棄Dhrystone MIPS這一普遍采用的方法,該方法支持創(chuàng)建針對應(yīng)用的測試,用于測試在汽車、網(wǎng)絡(luò)、電信、娛樂,以及其他嵌入式系統(tǒng)中處理器的工作。第二個挑戰(zhàn)就是起草標(biāo)準(zhǔn),它需能夠非常容易地移植到使用不同處理器的各種開發(fā)板中,并且在這些開發(fā)板中都能夠正常地運(yùn)行,以評估每個MCU或MPU的性能。
逐個比較的理想基礎(chǔ)是每個MCU周圍的硬件環(huán)境都盡可能地一致,并使用同樣的編譯器。最近,采用EEMBC系列汽車/工業(yè)標(biāo)準(zhǔn),在同樣的條件下測試ARM MCU的比例正在上升。
三款MCU進(jìn)行測試的結(jié)果數(shù)據(jù)顯示其吞吐率存在極大的差別,如圖所示。在比較過程中,結(jié)果數(shù)據(jù)根據(jù)它們的工作頻率進(jìn)行了歸一化處理,并且所有的軟件都是在片外閃存中運(yùn)行的。比較的結(jié)果表明:基于ARM的MCU普遍具有很好的性能,部分的性能差別在于MCU中實(shí)現(xiàn)片上閃存接口的優(yōu)化方法不同。
改善CPU指令執(zhí)行的吞吐量
由于閃存的訪問時間通常是CPU時鐘周期的3~4倍,找到一種從存儲器中快速傳輸數(shù)據(jù),而不需要在昂貴的片內(nèi)RAM中映射數(shù)據(jù)的方法,會極大地改善執(zhí)行的吞吐量。對于測試結(jié)果中最快的那顆MCU,設(shè)計(jì)者通過展寬存儲器數(shù)據(jù)總線到128位,以允許4個32位字在一個周期中被傳輸?shù)綌?shù)據(jù)鎖存器,然后再傳輸?shù)筋A(yù)取緩沖,從而解決了速度不匹配的問題。
由于CPU使用緩沖中的數(shù)據(jù),當(dāng)它執(zhí)行第4個字時,另一個128位的字就被傳輸?shù)搅随i存器中,而同時該第4個字被移出了緩沖,鎖存器中的新字也被傳輸?shù)搅司彌_。只要發(fā)起一個對閃存的數(shù)據(jù)讀訪問(裝入操作),輔助的支持電路就建立一個數(shù)據(jù)通路將128位數(shù)據(jù)存儲在緩沖中。這允許代碼獲取的歷史被保留,從而避免了需要重新獲取4個指令字的情況。
如果一個存儲器陣列(bank)可以在存儲器訪問中極大地提高速率,那么設(shè)置兩個存儲器陣列會怎樣呢?通過采用鎖存器將存儲器分成兩個陣列的結(jié)構(gòu),對于每個陣列所有的支持邏輯都相同,并可以具有兩倍的指令歷史,短循環(huán)就可以在所有的鎖存器中被完整捕獲,循環(huán)的執(zhí)行得以加速。另外一點(diǎn),雙陣列也可以對嵌套循環(huán)和尋找分支目標(biāo)地址提供更好的支持。
內(nèi)部總線支持
正如EEMBC的標(biāo)準(zhǔn)測試所揭示的那樣,CPU吞吐量只是衡量高性能的指標(biāo)之一。對集成外設(shè)功能提供支持的MCU內(nèi)部總線也可能有很大的不同。內(nèi)部總線通常被連接到總線上的慢速設(shè)備所拖累,因此,更高速設(shè)備的數(shù)據(jù)傳輸就受到了限制。然而,通過采用總線分離的方法,將高速設(shè)備(例如10/100Mb/s以太網(wǎng)控制器或高速DMA控制器)連接到一段總線,而將低速設(shè)備(串行端口、定時器、脈寬調(diào)制器等)連接到另一段總線,就可以使每組設(shè)備發(fā)揮最好的性能。
通過在芯片內(nèi)建立分層的總線,CPU可以具有對片上RAM和閃存進(jìn)行無約束訪問的局部總線。這就避免了CPU發(fā)出不必要的總線仲裁、總線批準(zhǔn)延遲,以及總線等待狀態(tài)等,從而改善了整體性能。
對于要求高性能的功能,如向量式中斷控制器、以太網(wǎng)控制器、DMA控制器等,ARM高速總線(AHB)提供了對CPU的快速接口。慢速設(shè)備可以連接到ARM設(shè)備總線(APB)上,而且可以橋接到AHB,以使數(shù)據(jù)和指令從CPU和存儲器不被影響地傳輸?shù)降退倏偩€。
當(dāng)CPU增加更多的片上資源時,對這種分層總線結(jié)構(gòu)的需求就更高。在許多實(shí)時控制應(yīng)用中,采用單一總線拓?fù)浣Y(jié)構(gòu)的處理器無法獲得有效的高性能I/O支持。
大量的集成外設(shè)也增加了CPU的工作量,CPU必須持續(xù)處理中斷和響應(yīng)所有的外設(shè)操作。通過使用高性能、向量式中斷控制器,許多過量的操作會得到卸載,從而縮短了CPU的響應(yīng)時間。EEMBC正在探索一種通用 的方法,測試MCU的集成外設(shè)并開發(fā)檢測處理器運(yùn)行情況的標(biāo)準(zhǔn)。
評論