通過架構(gòu)改進(jìn)提高微控制器處理效率
微控制器要想處理實(shí)時(shí)I/O和外設(shè)的高數(shù)據(jù)速率和頻率,便必須擁有更高的處理效率。但這個(gè)效率不能通過提高時(shí)鐘頻率來獲得,而是要通過微控制器架構(gòu)的內(nèi)部改進(jìn)來實(shí)現(xiàn)。
卸載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)連。
DMA控制器通過執(zhí)行數(shù)據(jù)訪問(如在后臺執(zhí)行外設(shè)寄存器到內(nèi)部或外部SRAM的數(shù)據(jù)訪問),從CPU卸載數(shù)據(jù)移動管理任務(wù)。DMA(Direct Memory Access,直接內(nèi)存存取) 是所有現(xiàn)代電腦的重要特色,他允許不同速度的硬件裝置來溝通,而不需要依于 CPU 的大量 中斷 負(fù)載。否則,CPU 需要從 來源 把每一片段的資料復(fù)制到 暫存器,然后把他們再次寫回到新的地方。在這個(gè)時(shí)間中,CPU 對于其他的工作來說就無法使用。 DMA 傳輸將數(shù)據(jù)從一個(gè)地址空間復(fù)制到另外一個(gè)地址空間。當(dāng) CPU 初始化這個(gè)傳輸動作,傳輸動作本身是由 DMA 控制器 來實(shí)行和完成。典型的例子就是移動一個(gè)外部內(nèi)存的區(qū)塊到芯片內(nèi)部更快的內(nèi)存區(qū)。像是這樣的操作并沒有讓處理器工作拖延,反而可以被重新排程去處理其他的工作。DMA 傳輸對于高效能 嵌入式系統(tǒng) 算法和網(wǎng)絡(luò)是很重要的。在實(shí)現(xiàn)DMA傳輸時(shí),是由DMA控制器直接掌管總線,因此,存在著一個(gè)總線控制權(quán)轉(zhuǎn)移問題。即DMA傳輸前,CPU要把總線控制權(quán)交給DMA控制器,而在結(jié)束DMA傳輸后,DMA控制器應(yīng)立即把總線控制權(quán)再交回給CPU。另外,DMA控制器還能夠承擔(dān)通信外設(shè)管理的大部分工作(見表1)。
表1 DMA控制器能夠承擔(dān)通信外設(shè)管理的大部分工作
利用DMA控制器所節(jié)省的周期數(shù)可以十分可觀:許多嵌入式開發(fā)人員都已發(fā)現(xiàn)自己無法以有限的微控制器資源來滿足應(yīng)用的需求,直到認(rèn)識了DMA,才突然明白原來還有大量額外的周期可用,數(shù)目有時(shí)甚至多達(dá)整個(gè)系統(tǒng)的30%到50%左右。
熟知事件系統(tǒng)(event system)的開發(fā)人員就更少了。事件系統(tǒng)與DMA制器協(xié)同工作,可進(jìn)一步減少CPU周期的負(fù)擔(dān),并降低總體功耗。事件系統(tǒng)是一條總線,能夠?qū)奈⒖刂破魃系囊粋€(gè)外設(shè)發(fā)出的內(nèi)部信號連接到另一個(gè)外設(shè)。當(dāng)有事件在外設(shè)上發(fā)生時(shí),它就可以在一個(gè)雙周期的延時(shí)內(nèi)觸發(fā)其它外設(shè)采取行動。
更確切地說,事件系統(tǒng)利用一個(gè)連接了CPU、數(shù)據(jù)總線和DMA控制器的專用網(wǎng)絡(luò)在整個(gè)微控制器上進(jìn)行信號路由(見圖1)。在正常情況下,外設(shè)必須中斷CPU來激活某個(gè)行動,包括讀取外設(shè)本身。而事件系統(tǒng)通過直接在外設(shè)之間發(fā)送相關(guān)事件,便可有效地使CPU擺脫這些中斷所帶來的負(fù)擔(dān)。CPU是一臺計(jì)算機(jī)的運(yùn)算核心和控制核心。CPU、內(nèi)部存儲器和輸入/輸出設(shè)備是電子計(jì)算機(jī)三大核心部件。電腦中所有操作都由CPU負(fù)責(zé)讀取指令,對指令譯碼并執(zhí)行指令的核心部件。其功能主要是解釋計(jì)算機(jī)指令以及處理計(jì)算機(jī)軟件中的數(shù)據(jù)。所謂的計(jì)算機(jī)的可編程性主要是指對CPU的編程。 CPU由運(yùn)算器、控制器和寄存器及實(shí)現(xiàn)它們之間聯(lián)系的數(shù)據(jù)、控制及狀態(tài)的總線構(gòu)成。差不多所有的CPU的運(yùn)作原理可分為四個(gè)階段:提取(Fetch)、解碼(Decode)、執(zhí)行(Execute)和寫回(Writeback)。
圖1 一個(gè)事件系統(tǒng)
靈活的卸載
DMA和事件系統(tǒng)配合工作,就可讓開發(fā)人員卸載整個(gè)任務(wù),這與協(xié)處理器的作用很類似,但兩者間的關(guān)鍵區(qū)別是協(xié)處理器不是可編程的。協(xié)處理器采用硬件來執(zhí)行一個(gè)已詳細(xì)定義的任務(wù),有時(shí)甚至是可配置的;而DMA控制器配合事件系統(tǒng)的可編程性使其適用于從最簡單的到極復(fù)雜的各類任務(wù)。在采用DMA和事件系統(tǒng)的情況下,DMA負(fù)責(zé)管理整個(gè)微處理器架構(gòu)上的數(shù)據(jù)傳輸;至于事件系統(tǒng)則控制這些低延時(shí)、高精度傳輸發(fā)生的時(shí)間。
圖2所示為事件系統(tǒng)與DMA共同工作的原理模塊示意圖。ADC連接一個(gè)傳感器,并會采集信號樣本。內(nèi)部計(jì)數(shù)器被設(shè)置為與采樣頻率相匹配,用以提供規(guī)律且精確的時(shí)間間隔。事件系統(tǒng)可以直接激活A(yù)DC的采樣,而無需中斷CPU,使采樣頻率比利用微控制器的時(shí)鐘更為精確。
圖2 DMA控制器配合事件系統(tǒng)
事件管理可擴(kuò)展為包含多個(gè)事件、連接多個(gè)外設(shè)的更復(fù)雜的配置。例如一個(gè)輸入信號(事件1)可觸發(fā)ADC采樣(事件2),并把數(shù)值存儲到DMA中(事件3),直到DMA緩沖器溢滿(事件4)。
DMA控制器和事件系統(tǒng)還支持多通道,使開發(fā)人員能夠配置一個(gè)與主CPU并行工作的互連結(jié)構(gòu),因此,可采用一種固定性方式來對多個(gè)并行實(shí)時(shí)任務(wù)進(jìn)行協(xié)調(diào)。
評論