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