改進微控制器架構(gòu)最大化提升其性能
微控制器要想處理實時I/O和外設(shè)的高數(shù)據(jù)速率和頻率,便必須擁有更高的處理效率。但這個效率不能通過提高時鐘頻率來獲得(因為需要更大功耗),而是要通過微控制器架構(gòu)的內(nèi)部改進來實現(xiàn)。實際上,微控制器已經(jīng)開始集成用來卸載特殊任務(wù)模塊的協(xié)處理器、可加快無懲罰型(penalty-free)內(nèi)存訪問速度的多信道DMA控制器,以及能在內(nèi)部子系統(tǒng)之間發(fā)送信號以卸載I/O和外設(shè)管理任務(wù)的集成式事件系統(tǒng)。
卸載CPU任務(wù)還有很多方法
集成式協(xié)處理器在嵌入式微控制器中已獲得相當廣泛的應(yīng)用,其中比較常見的協(xié)處理器是加密和TCP/IP卸載引擎。協(xié)處理器可高效卸載整個任務(wù),或幫助執(zhí)行復(fù)雜算法中的密集計算部分。例如,一個加密引擎可以把CPU上的AES計算任務(wù)從每次運算數(shù)千個周期縮減為數(shù)百個周期,而一個TCP/IP卸載引擎可以極小的CPU運行支出來終止一個以太網(wǎng)連接。此外,卸載引擎還能簡化這些任務(wù)的實現(xiàn)過程,使開發(fā)人員無需編寫擴充代碼,便可以通過使用簡單的API來加入先進的功能。
DMA和事件系統(tǒng)技術(shù)對開發(fā)人員來說是比較陌生的,因此并不常使用。DMA控制器通過執(zhí)行數(shù)據(jù)訪問(如在后臺執(zhí)行外設(shè)寄存器到內(nèi)部或外部SRAM的數(shù)據(jù)訪問),從CPU卸載數(shù)據(jù)移動管理任務(wù)。例如,開發(fā)人員可以配置DMA控制器,把一個數(shù)據(jù)塊預(yù)載入片上RAM中,這樣在CPU需要它之前就可以快速訪問,從而消除了等待狀態(tài)和相關(guān)延時。另外,DMA控制器還能夠承擔通信外設(shè)管理的大部分工作(見表1)。
表1 DMA控制器能夠承擔通信外設(shè)管理的大部分工作
利用DMA控制器所節(jié)省的周期數(shù)可以十分可觀:許多嵌入式開發(fā)人員都已發(fā)現(xiàn)自己無法以有限的微控制器資源來滿足應(yīng)用的需求,直到認識了DMA,才突然明白原來還有大量額外的周期可用,數(shù)目有時甚至多達整個系統(tǒng)的30%到50%左右。許多開發(fā)人員都是在遇到處理方面的困難時,才首次發(fā)現(xiàn)這種未開發(fā)的潛力,盡管實際上這種潛力從一開始就可以使用。
熟知事件系統(tǒng)(event system)的開發(fā)人員就更少了。事件系統(tǒng)與DMA制器協(xié)同工作,可進一步減少CPU周期的負擔,并降低總體功耗。事件系統(tǒng)是一條總線,能夠?qū)奈⒖刂破魃系囊粋€外設(shè)發(fā)出的內(nèi)部信號連接到另一個外設(shè)。當有事件在外設(shè)上發(fā)生時,它就可以在一個雙周期的延時內(nèi)觸發(fā)其它外設(shè)采取行動,整個過程無需CPU參與,就和人體在手碰到火時無需大腦命令就自然做出反射動作的把手抽出來一樣。
更確切地說,事件系統(tǒng)利用一個連接了CPU、數(shù)據(jù)總線和DMA控制器的專用網(wǎng)絡(luò)在整個微控制器上進行信號路由(見圖1)。在正常情況下,外設(shè)必須中斷CPU來激活某個行動,包括讀取外設(shè)本身。而事件系統(tǒng)通過直接在外設(shè)之間發(fā)送相關(guān)事件,便可有效地使CPU擺脫這些中斷所帶來的負擔。開發(fā)人員可以靈活配置外設(shè)來使用不同的事件通道,從而定義特定的事件路由,以滿足應(yīng)用的某些需求。
圖1 一個事件系統(tǒng)
靈活的卸載
DMA和事件系統(tǒng)配合工作,就可讓開發(fā)人員卸載整個任務(wù),這與協(xié)處理器的作用很類似,但兩者間的關(guān)鍵區(qū)別是協(xié)處理器不是可編程的。協(xié)處理器采用硬件來執(zhí)行一個已詳細定義的任務(wù),有時甚至是可配置的;而DMA控制器配合事件系統(tǒng)的可編程性使其適用于從最簡單的到極復(fù)雜的各類任務(wù)。在采用DMA和事件系統(tǒng)的情況下,DMA負責管理整個微處理器架構(gòu)上的數(shù)據(jù)傳輸;至于事件系統(tǒng)則控制這些低延時、高精度傳輸發(fā)生的時間。換言之,事件系統(tǒng)負責確保由DMA管理的數(shù)值在正確的時間/頻率下被采樣或輸出。
圖2所示為事件系統(tǒng)與DMA共同工作的原理模塊示意圖。ADC連接一個傳感器,并會采集信號樣本。內(nèi)部計數(shù)器被設(shè)置為與采樣頻率相匹配,用以提供規(guī)律且精確的時間間隔。事件系統(tǒng)可以直接激活A(yù)DC的采樣,而無需中斷CPU,使采樣頻率比利用微控制器的時鐘更為精確。當ADC停止并完成轉(zhuǎn)換時,ADC便會觸發(fā)DMA通過事件系統(tǒng)存儲這些轉(zhuǎn)換值。
圖2 DMA控制器配合事件系統(tǒng)
事件管理可擴展為包含多個事件、連接多個外設(shè)的更復(fù)雜的配置。例如一個輸入信號(事件1)可觸發(fā)ADC采樣(事件2),并把數(shù)值存儲到DMA中(事件3),直到DMA緩沖器溢滿(事件 4)。在這種配置中,CPU只有在緩沖器數(shù)據(jù)溢滿需要處理時才會被中斷。
DMA控制器和事件系統(tǒng)還支持多通道,使開發(fā)人員能夠配置一個與主CPU并行工作的互連結(jié)構(gòu),因此,可采用一種固定性方式來對多個并行實時任務(wù)進行協(xié)調(diào)。
固定性和延時
固定性在限制延時和管理實時嵌入式系統(tǒng)的響應(yīng)性方面扮演著關(guān)鍵的角色。系統(tǒng)的固定性越高,它的響應(yīng)性也就越穩(wěn)定。影響固定性的主要因素在于系統(tǒng)必須同時處理的中斷的數(shù)目。一般而言,系統(tǒng)里中斷的數(shù)量愈大,愈容易破壞系統(tǒng)的固定性。
假設(shè)一個系統(tǒng)只有一個中斷,并在50個周期內(nèi)完成。這樣一個中斷的延時相應(yīng)地在50個周期左右。要注意的是,即使最簡單的中斷,微控制器也需要約50個周期的時間來保存有限寄存器數(shù)目的環(huán)境信息,而且還需訪問外設(shè)、保存數(shù)據(jù)、存儲環(huán)境信息及清除管線。
然而,在固定性和延時方面,開發(fā)人員遇到的大多數(shù)問題并非處理單個中斷這么簡單,而是當眾多中斷同時發(fā)生時,應(yīng)如何在即時滿足所有要求。例如,如果有一個在75個周期內(nèi)完成而優(yōu)先權(quán)更高的中斷進入系統(tǒng),前一個中斷的延時就會受到影響,因為它將被優(yōu)先權(quán)更高的任務(wù)中斷。這時,優(yōu)先權(quán)較低之任務(wù)的延時便會變?yōu)?0到125個周期。
評論