新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 讓微控制器性能發(fā)揮極限的方法

讓微控制器性能發(fā)揮極限的方法

作者: 時(shí)間:2012-01-17 來源:網(wǎng)絡(luò) 收藏

如今微需要執(zhí)行廣大范圍的任務(wù),包括管理實(shí)時(shí)控制算法、解碼高速通信協(xié)定,以及處理高頻傳感器發(fā)出的信號(hào)。輪詢(如檢查端口以確定新數(shù)據(jù)是否經(jīng)已到達(dá))會(huì)消耗過多的CPU周期,而且對(duì)可靠服務(wù)I/O與外設(shè)的最大響應(yīng)時(shí)間也往往太長。對(duì)于大多數(shù)嵌入式應(yīng)用而言,開發(fā)人員以中斷來滿足對(duì)外設(shè)管理的實(shí)時(shí)要求。但中斷只能夠確定實(shí)時(shí)事件何時(shí)發(fā)生,開發(fā)人員仍然必須在數(shù)據(jù)丟失之前讓CPU直接參與讀取I/O和外設(shè)。處理一個(gè)中斷可能需要同時(shí)中斷其它對(duì)延時(shí)敏感的任務(wù),帶來任務(wù)轉(zhuǎn)換支出,并引發(fā)一系列棘手問題,諸如如何管理多個(gè)中斷同時(shí)發(fā)生時(shí)的延時(shí),所有這些都會(huì)降低系統(tǒng)可預(yù)測(cè)性和處理器的效率。

要想處理實(shí)時(shí)I/O和外設(shè)的高數(shù)據(jù)速率和頻率,便必須擁有更高的處理效率。但這個(gè)效率不能通過提高時(shí)鐘頻率來獲得(因?yàn)樾枰蠊?,而是要通過微架構(gòu)的內(nèi)部改進(jìn)來實(shí)現(xiàn)。實(shí)際上,微控制器已經(jīng)開始集成用來卸載特殊任務(wù)模塊的協(xié)處理器、可加快無懲罰型(penalty-free)內(nèi)存訪問速度的多信道DMA控制器,以及能在內(nèi)部子系統(tǒng)之間發(fā)送信號(hào)以卸載I/O和外設(shè)管理任務(wù)的集成式事件系統(tǒng)。

卸載CPU任務(wù)還有很多

集成式協(xié)處理器在嵌入式微控制器中已獲得相當(dāng)廣泛的應(yīng)用,其中比較常見的協(xié)處理器是加密和TCP/IP卸載引擎。協(xié)處理器可高效卸載整個(gè)任務(wù),或幫助執(zhí)行復(fù)雜算法中的密集計(jì)算部分。例如,一個(gè)加密引擎可以把CPU上的AES計(jì)算任務(wù)從每次運(yùn)算數(shù)千個(gè)周期縮減為數(shù)百個(gè)周期,而一個(gè)TCP/IP卸載引擎可以極小的CPU運(yùn)行支出來終止一個(gè)以太網(wǎng)連接。此外,卸載引擎還能簡(jiǎn)化這些任務(wù)的實(shí)現(xiàn)過程,使開發(fā)人員無需編寫擴(kuò)充代碼,便可以通過使用簡(jiǎn)單的API來加入先進(jìn)的功能。

DMA和事件系統(tǒng)技術(shù)對(duì)開發(fā)人員來說是比較陌生的,因此并不常使用。DMA控制器通過執(zhí)行數(shù)據(jù)訪問(如在后臺(tái)執(zhí)行外設(shè)寄存器到內(nèi)部或外部SRAM的數(shù)據(jù)訪問),從CPU卸載數(shù)據(jù)移動(dòng)管理任務(wù)。例如,開發(fā)人員可以配置DMA控制器,把一個(gè)數(shù)據(jù)塊預(yù)載入片上RAM中,這樣在CPU需要它之前就可以快速訪問,從而消除了等待狀態(tài)和相關(guān)延時(shí)。另外,DMA控制器還能夠承擔(dān)通信外設(shè)管理的大部分工作(見表1)。

表1 DMA控制器能夠承擔(dān)通信外設(shè)管理的大部分工作



利用DMA控制器所節(jié)省的周期數(shù)可以十分可觀:許多嵌入式開發(fā)人員都已發(fā)現(xiàn)自己無法以有限的微控制器資源來滿足應(yīng)用的需求,直到認(rèn)識(shí)了DMA,才突然明白原來還有大量額外的周期可用,數(shù)目有時(shí)甚至多達(dá)整個(gè)系統(tǒng)的30%到50%左右。許多開發(fā)人員都是在遇到處理方面的困難時(shí),才首次發(fā)現(xiàn)這種未開發(fā)的潛力,盡管實(shí)際上這種潛力從一開始就可以使用。

熟知事件系統(tǒng)(event system)的開發(fā)人員就更少了。事件系統(tǒng)與DMA制器協(xié)同工作,可進(jìn)一步減少CPU周期的負(fù)擔(dān),并降低總體功耗。事件系統(tǒng)是一條總線,能夠?qū)奈⒖刂破魃系囊粋€(gè)外設(shè)發(fā)出的內(nèi)部信號(hào)連接到另一個(gè)外設(shè)。當(dāng)有事件在外設(shè)上發(fā)生時(shí),它就可以在一個(gè)雙周期的延時(shí)內(nèi)觸發(fā)其它外設(shè)采取行動(dòng),整個(gè)過程無需CPU參與,就和人體在手碰到火時(shí)無需大腦命令就自然做出反射動(dòng)作的把手抽出來一樣。

更確切地說,事件系統(tǒng)利用一個(gè)連接了CPU、數(shù)據(jù)總線和DMA控制器的專用網(wǎng)絡(luò)在整個(gè)微控制器上進(jìn)行信號(hào)路由(見圖1)。在正常情況下,外設(shè)必須中斷CPU來激活某個(gè)行動(dòng),包括讀取外設(shè)本身。而事件系統(tǒng)通過直接在外設(shè)之間發(fā)送相關(guān)事件,便可有效地使CPU擺脫這些中斷所帶來的負(fù)擔(dān)。開發(fā)人員可以靈活配置外設(shè)來使用不同的事件通道,從而定義特定的事件路由,以滿足應(yīng)用的某些需求。


圖1 一個(gè)事件系統(tǒng)

靈活的卸載

DMA和事件系統(tǒng)配合工作,就可讓開發(fā)人員卸載整個(gè)任務(wù),這與協(xié)處理器的作用很類似,但兩者間的關(guān)鍵區(qū)別是協(xié)處理器不是可編程的。協(xié)處理器采用硬件來執(zhí)行一個(gè)已詳細(xì)定義的任務(wù),有時(shí)甚至是可配置的;而DMA控制器配合事件系統(tǒng)的可編程性使其適用于從最簡(jiǎn)單的到極復(fù)雜的各類任務(wù)。在采用DMA和事件系統(tǒng)的情況下,DMA負(fù)責(zé)管理整個(gè)微處理器架構(gòu)上的數(shù)據(jù)傳輸;至于事件系統(tǒng)則控制這些低延時(shí)、高精度傳輸發(fā)生的時(shí)間。換言之,事件系統(tǒng)負(fù)責(zé)確保由DMA管理的數(shù)值在正確的時(shí)間/頻率下被采樣或輸出。

圖2所示為事件系統(tǒng)與DMA共同工作的原理模塊示意圖。ADC連接一個(gè)傳感器,并會(huì)采集信號(hào)樣本。內(nèi)部計(jì)數(shù)器被設(shè)置為與采樣頻率相匹配,用以提供規(guī)律且精確的時(shí)間間隔。事件系統(tǒng)可以直接激活A(yù)DC的采樣,而無需中斷CPU,使采樣頻率比利用微控制器的時(shí)鐘更為精確。當(dāng)ADC停止并完成轉(zhuǎn)換時(shí),ADC便會(huì)觸發(fā)DMA通過事件系統(tǒng)存儲(chǔ)這些轉(zhuǎn)換值。



圖2 DMA控制器配合事件系統(tǒng)

事件管理可擴(kuò)展為包含多個(gè)事件、連接多個(gè)外設(shè)的更復(fù)雜的配置。例如一個(gè)輸入信號(hào)(事件1)可觸發(fā)ADC采樣(事件2),并把數(shù)值存儲(chǔ)到DMA中(事件3),直到DMA緩沖器溢滿(事件4)。在這種配置中,CPU只有在緩沖器數(shù)據(jù)溢滿需要處理時(shí)才會(huì)被中斷。

DMA控制器和事件系統(tǒng)還支持多通道,使開發(fā)人員能夠配置一個(gè)與主CPU并行工作的互連結(jié)構(gòu),因此,可采用一種固定性方式來對(duì)多個(gè)并行實(shí)時(shí)任務(wù)進(jìn)行協(xié)調(diào)。

固定性和延時(shí)

固定性在限制延時(shí)和管理實(shí)時(shí)嵌入式系統(tǒng)的響應(yīng)性方面扮演著關(guān)鍵的角色。系統(tǒng)的固定性越高,它的響應(yīng)性也就越穩(wěn)定。影響固定性的主要因素在于系統(tǒng)必須同時(shí)處理的中斷的數(shù)目。一般而言,系統(tǒng)里中斷的數(shù)量愈大,愈容易破壞系統(tǒng)的固定性。

假設(shè)一個(gè)系統(tǒng)只有一個(gè)中斷,并在50個(gè)周期內(nèi)完成。這樣一個(gè)中斷的延時(shí)相應(yīng)地在50個(gè)周期左右。要注意的是,即使最簡(jiǎn)單的中斷,微控制器也需要約50個(gè)周期的時(shí)間來保存有限寄存器數(shù)目的環(huán)境信息,而且還需訪問外設(shè)、保存數(shù)據(jù)、存儲(chǔ)環(huán)境信息及清除管線。

然而,在固定性和延時(shí)方面,開發(fā)人員遇到的大多數(shù)問題并非處理單個(gè)中斷這么簡(jiǎn)單,而是當(dāng)眾多中斷同時(shí)發(fā)生時(shí),應(yīng)如何在即時(shí)滿足所有要求。例如,如果有一個(gè)在75個(gè)周期內(nèi)完成而優(yōu)先權(quán)更高的中斷進(jìn)入系統(tǒng),前一個(gè)中斷的延時(shí)就會(huì)受到影響,因?yàn)樗鼘⒈粌?yōu)先權(quán)更高的任務(wù)中斷。這時(shí),優(yōu)先權(quán)較低之任務(wù)的延時(shí)便會(huì)變?yōu)?0到125個(gè)周期。

當(dāng)更多的中斷出現(xiàn)時(shí),優(yōu)先權(quán)較低之中斷的延時(shí)隨固定性的下降而增加。一個(gè)50周期的任務(wù)可能多次被中斷,并最終需要數(shù)百乃至數(shù)千個(gè)周期來完成。這一點(diǎn)十分重要,因?yàn)椴⒎撬械闹袛喽季哂懈邇?yōu)先權(quán),一切都是相對(duì)性的。

固定性直接影響到響應(yīng)性、可靠性和精度。當(dāng)開發(fā)人員確切知道延時(shí)是50或500個(gè)周期,便可以在處理時(shí)可將之考慮在內(nèi)。不過,如果延時(shí)介于50到500個(gè)周期之間,即便是最優(yōu)秀的開發(fā)人員,所能做的也不過是假設(shè)一個(gè)典型延時(shí)(如200個(gè)周期)數(shù)值,然后把所有的偏離視為誤差。此外,最壞的延時(shí)情況有可能出現(xiàn)在瀕臨實(shí)時(shí)期限的極值,威脅到系統(tǒng)的可靠性。

通過DMA控制器和事件系統(tǒng)來減少同時(shí)發(fā)生的中斷(即便是低頻中斷),可以大大提高系統(tǒng)的固定性并減小延時(shí),而更高的固定性還有助于精度等其它重要因素的提升。


上一頁 1 2 下一頁

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉