以高速緩存和片上閃存實現(xiàn)微控制器近似的確定性
為了控制執(zhí)行機構(gòu),實時控制系統(tǒng)要從傳感器接收輸入信號,經(jīng)控制運算后向執(zhí)行機構(gòu)輸出指令信號。這些輸出必須在接收到輸入后的規(guī)定時間內(nèi)被觸發(fā)——即系統(tǒng)需具有實時性;同時,對相同控制狀態(tài)下的相同輸入,輸出也應(yīng)當(dāng)始終相同——即系統(tǒng)需具有確定性。
電子行業(yè)中眾多領(lǐng)域的發(fā)展正在使這些基本的實時控制系統(tǒng)變得越來越復(fù)雜。一方面,控制算法越來越精細,達到了人工智能的決策水平。另一方面,這些控制系統(tǒng)越來越多地連網(wǎng),即與以太網(wǎng)或無線局域網(wǎng) (LAN) 進行局域連接,以及與互連網(wǎng)連接實現(xiàn)遠距離通信。此外,用戶界面也變得越來越復(fù)雜,對安全性的要求也越來越高,使得數(shù)據(jù)加密和外部控制源的合法性驗證成為系統(tǒng)不可缺少的功能。
這些發(fā)展趨勢使得處理器必須具備更強大的處理能力和更高的通信帶寬。處理器必須能夠按照某種確定的方式對實時輸入信號做出響應(yīng),同時還必須有足夠的存儲能力來處理各種網(wǎng)絡(luò)通信 (作為低優(yōu)先級的任務(wù))。然而,在很多情況下,為提高性能而進行的系統(tǒng)升級需要保留原先的設(shè)備驅(qū)動程序、網(wǎng)絡(luò)協(xié)議堆棧以及作為控制算法基礎(chǔ)的一些基本運算操作。采用工業(yè)標(biāo)準(zhǔn)的處理器構(gòu)架尤其如此,如32位ARM RISC。圖1給出了一個遵從這兩個原則的MCU升級的實例,即將以ARM7為基礎(chǔ)的AT91SAM7X系列升級為以ARM9為基礎(chǔ)的 AT91SAM9XE 系列。這兩個系列的器件均有用于存儲程序代碼和參考數(shù)據(jù)的片上閃存。
這兩個系列的一個重要差別在于:ARM9處理器具有指令和數(shù)據(jù)高速緩存,而ARM7處理器沒有。高速緩存有助于緩解由于處理器和內(nèi)存之間的能力差異(前者能以約200MIPS的速度運行代碼,而后者只能以約25MHz的速度傳輸數(shù)據(jù))而造成的性能下降。眾所周知,在采用緩存的系統(tǒng)中不可能實現(xiàn)完全的確定性。不過,ARM926EJ-S處理器和AT91SAM9XE微控制器系列的很多架構(gòu)特性可讓應(yīng)用開發(fā)人員實現(xiàn)近似確定的實時性能。
很多架構(gòu)上的特性可最大限度地提高內(nèi)部數(shù)據(jù)傳輸帶寬。如圖2所示,以AT91SAM9XE系列為例,除具有單獨的、且能以處理器速度工作的16Kb 指令和數(shù)據(jù)高速緩存外,還通過一個7層AHB總線矩陣在處理器、外設(shè)和內(nèi)存之間建立并行數(shù)據(jù)通道。USB主機和以太網(wǎng)MAC外設(shè)都有專門的DMA端口來實現(xiàn)自主數(shù)據(jù)傳輸,而其APB外設(shè)則配有外設(shè)DMA控制器(PDC),使內(nèi)存和網(wǎng)絡(luò)接口間的批量數(shù)據(jù)傳送幾乎不占用處理器資源。高級中斷控制器(AIC)可在規(guī)定的處理器周期數(shù)以內(nèi)處理一系列優(yōu)先的中斷向量。
圖1 AT91SAM7X系列升級為AT91SAM9XE系列
圖2 AT91SAM9XE架構(gòu)
高速緩存使處理器能按其所要求的速度及時獲得指令和數(shù)據(jù),除非緩存當(dāng)中未緩沖所需的數(shù)據(jù)或指令。遇到這種情況,處理器就得閑置一會兒,直到高速緩存被重新填充。高度并行的DMA數(shù)據(jù)傳輸機制能減少處理器對數(shù)據(jù)傳輸?shù)慕槿?,但并非完全不介入。因為任何時候都有可能出現(xiàn)中斷請求,即使只需很少的周期來處理該中斷。那么如何才能保證系統(tǒng)在規(guī)定的時間內(nèi),根據(jù)給定的輸入觸發(fā)確定的輸出呢?
如何獲得確定性
要獲得確定性,可將存儲在閃存中各個關(guān)鍵性操作的代碼分解成小于16Kb的模塊。將所需的模塊加載到指令緩存中,并鎖定,以確保執(zhí)行該模塊期間它始終在高速緩存中。如有必要,相關(guān)的數(shù)據(jù)結(jié)構(gòu)也可加載和鎖存在數(shù)據(jù)緩存中。這里,鎖存功能是通過高速緩存的鎖存寄存器來實現(xiàn)的。這樣就可保證關(guān)鍵代碼按處理器的速度執(zhí)行。
如果某一高速緩存正好沒有所需的指令代碼,則該緩存將通過它與片上閃存間的128位數(shù)據(jù)總線重新加載所需的指令代碼。該總線能以4倍于處理器時鐘的速度加載32位數(shù)據(jù),大大縮短了刷新高速緩存的時間。此外,緩存的回繞功能 (wrapping) 可確保遺漏的關(guān)鍵數(shù)據(jù)被優(yōu)先加載。
考慮到所有這些因素,計算出執(zhí)行時間,并對同時出現(xiàn)多個中斷和DMA傳輸作最壞打算,就能確定是否能滿足實時性約束,以及還有多大的余量。必要時,也可針對每種可能情況編寫一些后退程序,允許系統(tǒng)在無法達到實時要求時,以故障弱化方式 (fail-soft,即工作可靠但性能下降的方式) 運行。
結(jié)論
仔細設(shè)計應(yīng)用代碼,充分利用處理器內(nèi)核的關(guān)鍵架構(gòu)功能,將能在基于復(fù)雜控制算法的嵌入式連網(wǎng)實時控制系統(tǒng)中實現(xiàn)近似的確定性。這些關(guān)鍵架構(gòu)功能包括:數(shù)據(jù)和指令高速緩存的鎖存、回繞功能、連接高速緩存和片上閃存的128位寬度的數(shù)據(jù)總線、低遲滯高級中斷控制器,以及用于在外設(shè)、網(wǎng)絡(luò)接口及片上/片外閃存間直接傳輸數(shù)據(jù)的DMA控制器。
評論