事件系統/DMA控制功能妙用無窮
MCU性能/功耗比再創新高

2009-08-14
微控制器不斷演進為更複雜的系統,用戶不但期望成本與功耗要較前代產品更低,且能執行更多工作。但傳統通過提高時脈頻率來提升效率的做法,將對元件的性能/功耗比造成不利影響,唯有創新的架構才能真正提高效率。
微控制器(MCU)肩負執行多種工作的任務,包括管理即時控制演算法、解碼高速通訊協定,以及處理高頻感應器發出的訊號等。但檢查連接埠以確定新資料是否已送達的輪詢方法(Polling Method),往往會消耗過多中央處理器(CPU)週期,而且對周邊的最大回應時間往往過長。  

對於大多數嵌入式應用而言,開發人員依賴中斷來滿足對周邊管理的即時要求。但中斷只能夠確定即時事件何時發生,開發人員仍必須在資料遺失之前,讓CPU直接參與對輸入/輸出(I/O)和周邊的讀取工作。處理一個中斷可能須要同時中斷其他對延遲敏感的工作任務,造成環境切換(Context Switching)成本,並帶來一系列棘手問題,諸如如何管理多個中斷同時發生時的延遲,這些因素都會降低系統可預測性和處理器的效率。  

微控制器要追上即時I/O和周邊的高資料率和高頻率,便必須擁有更高的處理效率。但元件供應商不能靠提高時脈頻率來達成此一目標,因為這將對元件的功耗造成不利影響。因此,MCU設計人員必須要對微控制器架構設計進行改良。事實上,近來市場上已有不少新款MCU整合用來卸載特殊工作模組的輔助運算器、可加快記憶體存取速度的多通道直接記憶體存取(DMA)控制器,以及能在內部子系統之間發送訊號以分攤I/O和周邊管理工作的整合式事件系統。  

善用輔助功能為當代MCU提供更多資源  

整合式輔助處理器(Co-processor)在嵌入式微控制器中已獲得相當普遍的應用,其中比較常見的輔助處理器是加密和TCP/IP卸載引擎。輔助處理器可以很高的效率分攤CPU的工作,或幫助執行複雜演算法中的密集計算部分。例如,一個加密引擎可以把CPU上的先進加密標準(AES)計算工作從每次運算須消耗數千個週期,大幅縮減為數百個周期,而一個TCP/IP卸載引擎可讓CPU幾乎不必耗費運算資源,即可終止一個乙太網路連接。此外,卸載引擎還能簡化處理這些工作的過程,使開發人員無須編寫擴充代碼,便可以通過使用簡單的應用程式中介層(API)來加入先進功能。

由於開發人員較不熟悉DMA和事件系統(Event System)技術,因此在MCU的實際應用中較少被利用。DMA控制器通過執行資料存取,如在後台執行周邊寄存器(Register)到內部或外部靜態隨機存取記憶體(SRAM)的資料存取,從CPU分攤資料移動管理工作。例如,開發人員可以配置DMA控制器,把一個資料區塊預先載入到晶片內建的記憶體中,這樣一來,在CPU要利用這些資料時,就可以快速存取,從而消除等待狀態和相關延遲。另外,DMA控制器還能夠承擔通訊周邊管理的大部分工作(表1)。

表1 DMA控制器對CPU使用率的影響

利用DMA控制器所節省的週期數十分可觀:許多嵌入式開發人員原本都以為無法以有限的微控制器資源來滿足應用的需求,直到MCU供應商向他們介紹DMA控制器這項功能,才恍然大悟到原來MCU還有這麼多額外週期可用,數目有時甚至高達整個系統的30~50%左右。  

至於熟知事件系統功能的開發人員就更少了。事件系統與DMA控制器配合工作,可進一步節省應用對CPU週期的需求量,並降低整體功耗。事件系統是一條匯流排,扮演微控制器中從一個周邊到另一個周邊的內部訊號高速公路角色。當有事件在周邊上發生時,系統事件功能可以在兩個CPU週期的延遲內,觸發其他周邊採取行動,整個過程毋需CPU參與,就像人體的反射動作一樣,在手碰到火時,不待大腦命令就自動把手抽出來。  

更深入來看,事件系統利用一個連接了CPU、資料匯流排和DMA控制器的專用網路,在整個微控制器上進行訊號路由(圖1)。在正常情況下,周邊必須中斷CPU來啟動某個行動,包括讀取周邊本身。而事件系統的做法則是直接在周邊之間發送相關事件,便可有效地從CPU分攤這些中斷事件的處理工作。開發人員可以靈活配置周邊去使用不同的事件通道,從而能定義特定的事件路由,以滿足應用的某些需求。

圖1 事件系統是一條連接CPU、周邊和DMA控制器的專用網路,可肩負起訊號路由的工作,並降低CPU負載。

靈活分攤CPU工作為提升效能關鍵

DMA和事件系統配合工作,可讓開發人員將整個工作任務的負擔從CPU中分散出來,這與輔助處理器的作用很類似。但兩者間有一個關鍵差別,就是輔助處理器不是可編程的,頂多在某些MCU設計中,為了增加應用彈性而導入可配置式的架構。但整體來說,輔助處理器仍採用硬體來執行一個已詳細定義的工作。而DMA控制器配合事件系統的方式,則是高度可編程的,使其適用於從最簡單的到極其複雜的各類工作。

在採用DMA和事件系統的情況下,DMA負責管理整個微處理器架構上的資料傳輸,而事件系統則控制這些低延遲、高精確度傳輸發生的時間。換言之,事件系統負責確保由DMA管理的數值在正確的時間/頻率下被取樣或輸出。  

圖2所示為一個事件系統與DMA共同工作的原理模組示意圖。類比數位轉換器(ADC)連接一個感應器,並會採集訊號樣本。一個內部計數器被設置為與取樣頻率相配對,用以提供有規律且精確的時間間隔。事件系統可以直接啟動ADC的取樣,而無須中斷中央處理器,使取樣頻率比利用微控制器的時脈更精確。當ADC停止並完成轉換時,ADC便會觸發DMA通過事件系統儲存這些轉換值。

圖2 事件系統與DMA共同工作之原理模組示意圖

在實際應用中,除了MCU主動啟動ADC進行取樣外,也有可能是由一個外部輸入訊號(事件1)觸發ADC進行取樣(事件2),並把數值儲存到DMA中(事件3),直到DMA緩衝器滿溢(事件4)為止。在這個配置中,CPU只有在緩衝器資料溢滿須要處理時才會被中斷。  

DMA控制器和事件系統還支援多通道,讓開發人員可配置一個與主CPU平行工作的互聯結構,因此,可以一種固定性方式來進行協調多個平行實時工作。  

固定性和延時為MCU效能兩大殺手  

固定性在限制延遲和管理即時嵌入式系統的回應性方面扮演著關鍵的角色。系統的固定性越高,它的回應性也就越穩定。影響固定性的主要因素在於系統必須同時處理的中斷數目。一般而言,系統裡中斷的數目越大,越容易破壞系統固定性。 假設一個系統只有一個中斷,並在五十個週期內完成。這樣一個中斷的延遲相應地在五十個週期左右。值得注意的是,這表示即使是最簡單的中斷,微控制器也必須耗費約五十個週期的時間來保存有限寄存器數目的環境資訊,而且還必須處理存取周邊、保存資料、儲存環境資訊及清除管線等工作。  

然而,在實際應用時,開發人員遇到的情況可非處理單一中斷如此簡單,而是當眾多中斷同時發生時,應如何在即時時限內滿足所有要求。例如,如果有一個在七十五個週期內完成、優先權更高的中斷進入系統,前一個中斷的延遲就會受到影響,因為它將被優先權更高的工作中斷。這時,對於優先權較低的工作的延遲便會變成五十至一百二十五個週期。  

當更多中斷出現時,優先權較低的中斷,其延遲時間將隨固定性的下降而增加。一個五十週期的工作可能多次被中斷,最終可能要花上數百乃至數千個週期才能完成。這一點十分重要,因為並非所有中斷都具有高優先權,一切都是相對性的。  

固定性直接影響到回應性、可靠性和精確度。當開發人員確切知道確切延遲時間,例如是五十或五百個週期,在應用設計時即可將之考慮在內。不過,如果延遲介乎五十至五百個週期之間的話,即便是最好的開發人員,所能做的也不過是假設一個典型延遲數值,例如兩百個週期,然後把所有的偏離視為誤差。此外,最壞的延遲情況有可能出現在瀕臨即時要求的極限,威脅到系統的可靠性。  

藉由DMA控制器和事件系統,將有助紓解上述挑戰,因為這兩項功能可減少同時發生的中斷數目(即便是低頻中斷),大大提高系統的固定性並縮短延遲,而更高的固定性還有助於精確度等其他重要因素的提升。  

避免中斷有助提升系統精準度  

以一個電源管理工作在驅動電機等大負載時,實現交流電源效率最佳化的應用為例,即可看出固定性如何影響準確度。在這類應用中,因為大部分可用能量都在電壓處於峰值並與電流同相時供應,這時系統的電流消耗量應該最大。反之,電壓越接近零(即過零點),可用電能越少,因而效率也越小。利用功率因數校正(PFC)技術,透過接入和斷開大電容,調節負載保持交流電流和電壓同相,便可以提高功率效益。  

比較器一般用於過零檢測,當電壓下降至設定閾值以下或上升至閾值以上時,比較器便會接通。相對於使用比較器觸發中斷並驅使CPU開關電容的情況,事件系統可以把比較器事件直接發送到計時器/計數器輸出,毋需CPU介入即可控制開關。  

低優先權任務(如PFC)的中斷延遲可能長達數千個週期,而實際的延遲情況往往取決於有多少個優先權更高的中斷同時發生。延遲較大意味著電容會晚於最佳時刻開關,這會顯著降低總體效率。相較之下,採用事件路由後,由於延遲不超過兩個週期,因此精準度更高,能源轉換效率也隨之提升。  

當把上述的數位跟微控制器的時脈頻率一同考慮時,便會發現如果微控制器的時脈頻率為32MHz,兩個週期的延遲所引入的誤差其實微不足道(2/32M);而數千個週期的延遲則可能大大影響高頻任務(它們本身也得每隔數千週期才會被處理)的精準度。  

設計人員應注意的是,若中斷是由優先權較高的任務發出的,該延遲可能降至五十個週期左右。不過,這樣一來會導致根據精準度要求,而不是根據系統功能的重要性來分配優先權,而且這只是把缺乏固定性所引起的誤差轉移給其他任務而已。  

更高的精準度在產生訊號時也產生關鍵的作用,這裡所指的並非單純的訊號採樣。以產生一個100kHz的波形為例,利用中斷,波形的精準度將受相對於訊號速率的可變延遲的影響,並視環境切換和已堆積的其他中斷數量而變得稍慢或稍快。注意,當波形平均準確時,在許多情況下,往往只來自是兩個連續樣本之間的相對差異較小而已,並不意味著整個波形訊號都是準確的。  

妥善利用輔助功能為高頻訊號處理關鍵  

在廣泛的嵌入式應用中,訊號產生成為一個越來越普遍的任務。訊號用於產生聲音、管理電壓轉換調節器、控制工業應用中的驅動器,以及執行無數其他功能。訊號的頻率越高,採用中斷時CPU的負荷就越大,其他工作延遲增加的可能性也越高。  

對於發生頻率較高的事件而言,CPU負荷成為一大考慮因素。例如,高速感應器必須在下一個樣本準備好之前進行取樣,以防止資料遺失。以一個流量計多軸定位系統,或者是一個每秒採集兩百萬個樣本的高效能儀表系統為例,單是採集樣本,每秒便消耗了數十到數億個週期。而若採用一個事件系統和DMA控制器,所有這些週期都可從CPU分散出來,而且這些樣本會得到實際處理,並非簡單地儲存在緩衝區。即便只是一個僅需要五十個週期來完成、具有環境切換成本的簡單工作,也能夠從CPU分散出一億個週期的運算量。鑑於這個原因,許多系統都使用獨立的微控制器來管理各個高頻感應器或電機。  

對於頻率較高的工作,事件系統和DMA控制器還能夠實現以下事項,如準確的時間戳記(Time-stamping),以方便開發人員讓訊號與外部事件的同步更為精準。在兩個週期的延遲情況下,時間戳記遠比標註中斷更準確,並可省去後者達數千個週期的延遲。  

利用這兩項功能,也有助於提高感應器解析度。過度取樣(Over Sampling)是一種常被用來提升感應器解析度的方法,例如把計數器除以16,就可使取樣樣本數目增加十六倍,從而提高感應器的整體準確度。在事件系統與DMA的協助下,由於CPU沒有直接參與樣本的採集和儲存,因此設計人員即使採用過度取樣技巧,對CPU的運算負荷也不至於暴增,導致系統效能上的懲罰。  

還有些應用系統只須要在某些特定時間或特定工作條件下,才需要較高的感應準確度。例如水表在水流速度快速變化時,取樣頻率會較高,而在流量被切斷或流速穩定時,又回復正常頻率。這類可變式的取樣方式稱為動態取樣功能,事件系統與DMA功能不僅可讓設計人員輕易地調整取樣頻率,而且不會影響系統的即時回應能力。  

事件系統結合DMA可降低系統成本  

事件系統和DMA功能也可協助設計人員降低系統成本。首先,由於這兩項功能有助於降低CPU的平行中斷數量,因此其資料堆疊的大小可顯著減低,這將讓應用能夠使用更少的記憶體。  

此外,鑑於不同微控制器支援的周邊數目不同,同一應用的中斷數目可能隨產品價格而各有不同。即便使用同一個微控制器系列,支援更多功能的較高階系統會有更多的中斷,降低了整體固定性。因此,設計人員若想把原先針對某一個市場定位所進行的產品設計移植到整合度更高的微控制器時,可能會影響訊號延遲,乃至取樣和輸出的準確度,這意味著設計人員必須額外進行設計微調,並帶來成本。  

最後,由於事件處理減少CPU的涉入程度,所以系統可在不影響即時回應能力的前提下,透過軟體更新的方式添加新的功能。即便需要更多的中央處理器時間來處理額外的功能,事件處理和回應時間也完全相同。否則,產品開發商很難在產品使用壽命期間為各種即時應用添加或改變其軟體功能。這項特性不僅降低系統升級或變更的成本,更為應用產品製造商帶來創造新價值的空間。  

讓CPU效能花在刀口上  

一個嵌入式微控制器可能要執行無數個工作來降低功耗、提高精確度以及改善使用者經驗,而許多這類工作只不過是監控或是檢測單一數值。例如電池監控器監測電壓是否降至某個數值以下,若是,系統就觸發關斷操作,在仍有足夠電量時保儲存應用資料。  

提升使用者經驗常常是許多消費類產品的主要賣點。例如,事件系統能夠加快系統對喚醒按鍵或周邊輸入的回應速度,讓系統能在兩個週期內就可以做出反應。如果與採用中斷的回應性比較,由於中斷需要系統返回到工作模式,因此就降低了能源效益。基於這個原因,開發人員常常延長計時器的時間間隔,因而降低了回應性。  

若利用中斷來處理這類簡單的應用需求,從CPU處理能力的消耗而言,未免是殺雞用牛刀,而且最終結果還不見得是最理想的。而採用事件系統和DMA控制器,開發人員就能夠避免CPU執行這些功能。這不僅可減少系統必須管理的中斷數目,而且還能簡化工作的實現和管理。  

例如在一個在特殊工作條件下,向使用者發出警示資訊的應用中,預先設置的音效檔案可以儲存在緩衝區中,再利用DMA通過適當的周邊輸入到揚聲器,而利用計時器,事件系統就可以確保44,056kHz的準確資料率。此外還有一個額外的好處,因為頻率準確且穩定,聲音失真度也得以降低。從性能角度來看,只要配置了DMA和事件系統,中央處理器就完全不用干預播放工作了。  

若說這些工作變得更「自由」,可能顯得有點誇張。不過,以這種方式執行這些工作,的確使其能夠適用於更大範圍的應用。輔助處理器、DMA控制器和事件系統的結合,能夠釋放控制器,讓它只進行訊號處理,而不必把大部分資源消耗在訊號的週期密集型採集工作上。因此,CPU得以保留大部分處理能力給真正需要高運算效能的任務,例如訊號處理。這樣一來,就有可能利用單一控制器有可能管理好幾個高頻工作。這也簡化了系統設計,容許以更低的成本,在單一微控制器上執行更多的工作,更容易實現多個訊號之間的相關性,並提高能源效益。  

對許多應用來說,能否支援多個工作可成為一項重要的產品差異化指標。例如,採用了DMA控制器和事件系統的電機控制應用,就能夠使微控制器釋放出足夠的資源,讓開發人員得以在不增加系統材料清單成本的條件下,加入PFC等先進功能。  

除了透過降低中斷數量來提高微控制器的性能和能力之外,事件系統還能夠把功耗大幅降低,具體數字視應用情況而定。  

表2為一個需要每秒120萬週期的應用的功耗相關資料。若MCU的運作時脈為12MHz,則該MCU只有10%的時間在工作模式下,其餘時間都處於待機模式。 執行DMA控制器和事件系統可以分攤大量CPU每秒必須執行的週期數,使微控制器進入閒置或睡眠模式。由於MCU在工作模式下的耗電量遠大於閒置或睡眠模式下,即便是工作模式出現少許百分比變化,所能節省的功耗也是相當可觀的。

表2 事件系統和DMA控制器配置狀況對MCU系統功耗所造成的影響
MCU功能組合 周期數 工作模式時間 電流(mA) @1.8V 閒置模式時間 流(mA)時間 省電模式@1.8V 電流(mA) @1.8V 平均電流(μA)
無DMA與事件系統 1,200,000 10% 3.80 0% 1.90 90% 0.55 80.495
有DMA 960,000 6% 3.80 4% 1.90 90% 0.55 304.495
有DMA,事件系統 840,000 5% 3.80 5% 1.90 90% 0.55 285.495

多管齊下助力MCU突破功耗//效能瓶頸

處理器核心架構方面的改進,固然提高了CPU的整體能力,使得嵌入式MCU系統性能不斷提高。但輔助運算器、事件系統與DMA控制器等額外功能也讓MCU有效提升效能與降低功耗。  

輔助運算器能夠從中央處理器分散至已詳細定義的計算密集型工作,DMA控制器可把整個系統的資料移動工作從CPU中解放出來,而事件系統可解決有關多個由頻率觸發中斷的瓶頸問題。通過減少系統必須處理的平行中斷的數目,開發人員能夠提高系統固定性,從而降低延遲,提高訊號的解析度和精確度,改善穩定性和可預測性,並增加系統可靠性。  

(本文作者為愛特梅爾AVR產品市場經理)

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!