如何讓微控制器性能發(fā)揮極限
微控制器要想處理實(shí)時(shí)I/O和外設的高數據速率和頻率,便必須擁有更高的處理效率。但這個(gè)效率不能通過(guò)提高時(shí)鐘頻率來(lái)獲得(因為需要更大功耗),而是要通過(guò)微控制器架構的內部改進(jìn)來(lái)實(shí)現。實(shí)際上,微控制器已經(jīng)開(kāi)始集成用來(lái)卸載特殊任務(wù)模塊的協(xié)處理器、可加快無(wú)懲罰型(penalty-free)內存訪(fǎng)問(wèn)速度的多信道DMA控制器,以及能在內部子系統之間發(fā)送信號以卸載I/O和外設管理任務(wù)的集成式事件系統。
卸載CPU任務(wù)還有很多方法
集成式協(xié)處理器在嵌入式微控制器中已獲得相當廣泛的應用,其中比較常見(jiàn)的協(xié)處理器是加密和TCP/IP卸載引擎。協(xié)處理器可高效卸載整個(gè)任務(wù),或幫助執行復雜算法中的密集計算部分。例如,一個(gè)加密引擎可以把CPU上的AES計算任務(wù)從每次運算數千個(gè)周期縮減為數百個(gè)周期,而一個(gè)TCP/IP卸載引擎可以極小的CPU運行支出來(lái)終止一個(gè)以太網(wǎng)連接。此外,卸載引擎還能簡(jiǎn)化這些任務(wù)的實(shí)現過(guò)程,使開(kāi)發(fā)人員無(wú)需編寫(xiě)擴充代碼,便可以通過(guò)使用簡(jiǎn)單的API來(lái)加入先進(jìn)的功能。
DMA和事件系統技術(shù)對開(kāi)發(fā)人員來(lái)說(shuō)是比較陌生的,因此并不常使用。DMA控制器通過(guò)執行數據訪(fǎng)問(wèn)(如在后臺執行外設寄存器到內部或外部SRAM的數據訪(fǎng)問(wèn)),從CPU卸載數據移動(dòng)管理任務(wù)。例如,開(kāi)發(fā)人員可以配置DMA控制器,把一個(gè)數據塊預載入片上RAM中,這樣在CPU需要它之前就可以快速訪(fǎng)問(wèn),從而消除了等待狀態(tài)和相關(guān)延時(shí)。另外,DMA控制器還能夠承擔通信外設管理的大部分工作(見(jiàn)表1)。
表1 DMA控制器能夠承擔通信外設管理的大部分工作

利用DMA控制器所節省的周期數可以十分可觀(guān):許多嵌入式開(kāi)發(fā)人員都已發(fā)現自己無(wú)法以有限的微控制器資源來(lái)滿(mǎn)足應用的需求,直到認識了DMA,才突然明白原來(lái)還有大量額外的周期可用,數目有時(shí)甚至多達整個(gè)系統的30%到50%左右。許多開(kāi)發(fā)人員都是在遇到處理方面的困難時(shí),才首次發(fā)現這種未開(kāi)發(fā)的潛力,盡管實(shí)際上這種潛力從一開(kāi)始就可以使用。
熟知事件系統(event system)的開(kāi)發(fā)人員就更少了。事件系統與DMA制器協(xié)同工作,可進(jìn)一步減少CPU周期的負擔,并降低總體功耗。事件系統是一條總線(xiàn),能夠將從微控制器上的一個(gè)外設發(fā)出的內部信號連接到另一個(gè)外設。當有事件在外設上發(fā)生時(shí),它就可以在一個(gè)雙周期的延時(shí)內觸發(fā)其它外設采取行動(dòng),整個(gè)過(guò)程無(wú)需CPU參與,就和人體在手碰到火時(shí)無(wú)需大腦命令就自然做出反射動(dòng)作的把手抽出來(lái)一樣。
更確切地說(shuō),事件系統利用一個(gè)連接了CPU、數據總線(xiàn)和DMA控制器的專(zhuān)用網(wǎng)絡(luò )在整個(gè)微控制器上進(jìn)行信號路由(見(jiàn)圖1)。在正常情況下,外設必須中斷CPU來(lái)激活某個(gè)行動(dòng),包括讀取外設本身。而事件系統通過(guò)直接在外設之間發(fā)送相關(guān)事件,便可有效地使CPU擺脫這些中斷所帶來(lái)的負擔。開(kāi)發(fā)人員可以靈活配置外設來(lái)使用不同的事件通道,從而定義特定的事件路由,以滿(mǎn)足應用的某些需求。

圖1 一個(gè)事件系統
靈活的卸載
DMA和事件系統配合工作,就可讓開(kāi)發(fā)人員卸載整個(gè)任務(wù),這與協(xié)處理器的作用很類(lèi)似,但兩者間的關(guān)鍵區別是協(xié)處理器不是可編程的。協(xié)處理器采用硬件來(lái)執行一個(gè)已詳細定義的任務(wù),有時(shí)甚至是可配置的;而DMA控制器配合事件系統的可編程性使其適用于從最簡(jiǎn)單的到極復雜的各類(lèi)任務(wù)。在采用DMA和事件系統的情況下,DMA負責管理整個(gè)微處理器架構上的數據傳輸;至于事件系統則控制這些低延時(shí)、高精度傳輸發(fā)生的時(shí)間。換言之,事件系統負責確保由DMA管理的數值在正確的時(shí)間/頻率下被采樣或輸出。
圖2所示為事件系統與DMA共同工作的原理模塊示意圖。ADC連接一個(gè)傳感器,并會(huì )采集信號樣本。內部計數器被設置為與采樣頻率相匹配,用以提供規律且精確的時(shí)間間隔。事件系統可以直接激活ADC的采樣,而無(wú)需中斷CPU,使采樣頻率比利用微控制器的時(shí)鐘更為精確。當ADC停止并完成轉換時(shí),ADC便會(huì )觸發(fā)DMA通過(guò)事件系統存儲這些轉換值。

圖2 DMA控制器配合事件系統
事件管理可擴展為包含多個(gè)事件、連接多個(gè)外設的更復雜的配置。例如一個(gè)輸入信號(事件1)可觸發(fā)ADC采樣(事件2),并把數值存儲到DMA中(事件3),直到DMA緩沖器溢滿(mǎn)(事件4)。在這種配置中,CPU只有在緩沖器數據溢滿(mǎn)需要處理時(shí)才會(huì )被中斷。
DMA控制器和事件系統還支持多通道,使開(kāi)發(fā)人員能夠配置一個(gè)與主CPU并行工作的互連結構,因此,可采用一種固定性方式來(lái)對多個(gè)并行實(shí)時(shí)任務(wù)進(jìn)行協(xié)調。
固定性和延時(shí)
固定性在限制延時(shí)和管理實(shí)時(shí)嵌入式系統的響應性方面扮演著(zhù)關(guān)鍵的角色。系統的固定性越高,它的響應性也就越穩定。影響固定性的主要因素在于系統必須同時(shí)處理的中斷的數目。一般而言,系統里中斷的數量愈大,愈容易破壞系統的固定性。
假設一個(gè)系統只有一個(gè)中斷,并在50個(gè)周期內完成。這樣一個(gè)中斷的延時(shí)相應地在50個(gè)周期左右。要注意的是,即使最簡(jiǎn)單的中斷,微控制器也需要約50個(gè)周期的時(shí)間來(lái)保存有限寄存器數目的環(huán)境信息,而且還需訪(fǎng)問(wèn)外設、保存數據、存儲環(huán)境信息及清除管線(xiàn)。
然而,在固定性和延時(shí)方面,開(kāi)發(fā)人員遇到的大多數問(wèn)題并非處理單個(gè)中斷這么簡(jiǎn)單,而是當眾多中斷同時(shí)發(fā)生時(shí),應如何在即時(shí)滿(mǎn)足所有要求。例如,如果有一個(gè)在75個(gè)周期內完成而優(yōu)先權更高的中斷進(jìn)入系統,前一個(gè)中斷的延時(shí)就會(huì )受到影響,因為它將被優(yōu)先權更高的任務(wù)中斷。這時(shí),優(yōu)先權較低之任務(wù)的延時(shí)便會(huì )變?yōu)?0到125個(gè)周期。
當更多的中斷出現時(shí),優(yōu)先權較低之中斷的延時(shí)隨固定性的下降而增加。一個(gè)50周期的任務(wù)可能多次被中斷,并最終需要數百乃至數千個(gè)周期來(lái)完成。這一點(diǎn)十分重要,因為并非所有的中斷都具有高優(yōu)先權,一切都是相對性的。
固定性直接影響到響應性、可靠性和精度。當開(kāi)發(fā)人員確切知道延時(shí)是50或500個(gè)周期,便可以在處理時(shí)可將之考慮在內。不過(guò),如果延時(shí)介于50到500個(gè)周期之間,即便是最優(yōu)秀的開(kāi)發(fā)人員,所能做的也不過(guò)是假設一個(gè)典型延時(shí)(如200個(gè)周期)數值,然后把所有的偏離視為誤差。此外,最壞的延時(shí)情況有可能出現在瀕臨實(shí)時(shí)期限的極值,威脅到系統的可靠性。
通過(guò)DMA控制器和事件系統來(lái)減少同時(shí)發(fā)生的中斷(即便是低頻中斷),可以大大提高系統的固定性并減小延時(shí),而更高的固定性還有助于精度等其它重要因素的提升。
評論