DMA基本原理、結(jié)構(gòu)與應(yīng)用(下)_第1頁
DMA基本原理、結(jié)構(gòu)與應(yīng)用(下)_第2頁
DMA基本原理、結(jié)構(gòu)與應(yīng)用(下)_第3頁
DMA基本原理、結(jié)構(gòu)與應(yīng)用(下)_第4頁
DMA基本原理、結(jié)構(gòu)與應(yīng)用(下)_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

直接存儲器存取—基本原理、結(jié)構(gòu)與應(yīng)用(下)在上一期中,我們討論了分別基于寄存器和描述符的DMA模式。在本文中,我們將在系統(tǒng)層面上探討應(yīng)用中關(guān)于數(shù)據(jù)移動的各種選項所應(yīng)做出的某些重要的決策問題,以及某些先進的DMA功能特性如何協(xié)助數(shù)據(jù)在多媒體系統(tǒng)中有效地移動。首先讓我們重新回顧一下DMA模式,以便以之說明另外一兩條關(guān)于何時選擇其中一種模式而非另一種模式的指導(dǎo)原則。對于規(guī)模相同、連續(xù)、單向的數(shù)據(jù)傳輸來說,自動緩沖方案是最合理的。DMA配置寄存器只要設(shè)置一次,就可以自動地在傳輸結(jié)束的時候重新載入。如果采用多維尋址,則可以設(shè)置多重緩沖,在每次緩沖結(jié)束時可以單獨設(shè)置各次中斷的觸發(fā)。到一個音頻編碼解碼器的傳輸就是這種類型事務(wù)。你所選取的子緩沖區(qū)的數(shù)量應(yīng)該與你需要執(zhí)行的處理的類型相一致。對于連續(xù)傳輸來說,只要確保能讓每個緩沖器的最大處理間隔小于取空一個緩沖器所花費的時間即可。如果在給定通道上的傳輸在方向和尺寸上都將是可變的,描述符模式就是最佳的選擇。試考慮在內(nèi)部和外部的存儲間發(fā)生的一系列小規(guī)模的傳輸,如果數(shù)據(jù)塊的尺寸發(fā)生改變,或者如果你希望以一種非連續(xù)的方式來在緩沖器中處理數(shù)據(jù),則可以為此建立描述符。高速緩存vsDMA我們接下來將考察系統(tǒng)數(shù)據(jù)轉(zhuǎn)移的某些情形,在這些情形中,我們需要在高速緩存和DMA之間做出選擇。為此,我們首先需要考察一項在應(yīng)用內(nèi)部存在的各種數(shù)據(jù)移動類型。通過片上外設(shè)來將數(shù)據(jù)轉(zhuǎn)移到系統(tǒng)內(nèi)或者將其移到系統(tǒng)外是一種最容易說明問題的情況,因此我們以這些數(shù)據(jù)的轉(zhuǎn)移為起點開始討論。許多外設(shè)可以在使用內(nèi)核存取還是用DMA通道來轉(zhuǎn)移數(shù)據(jù)之間做出選擇。一般來說,如果可以做出選擇的話,你應(yīng)該使用DMA通道。DMA控制器之所以成為最佳選擇,是因為數(shù)據(jù)往往要么來得太慢,要么來得太快,處理器無法高效地對其進行實時處理。當(dāng)我們采用慢速的串行器件(如SPI端口或者UART)時,數(shù)據(jù)的傳輸速率遠低于處理器內(nèi)核運行的速度。內(nèi)核對這些類型的外設(shè)的訪問必然涉及對一個映射存儲器的寄存器的某些位的輪詢(polling)。即使當(dāng)外設(shè)的工作速度與處理器時鐘相比較很低的話(這意味著訪問的頻率將會降低),輪詢也是一種浪費。在某些情況下,外設(shè)有能力發(fā)出中斷,指示內(nèi)核傳輸已經(jīng)發(fā)生。不過,在這里,每次增量數(shù)據(jù)傳輸完成后都會遇到為中斷提供服務(wù)的開銷問題,包括前后條件(context)切換的時間。另一方面,使用DMA控制器來執(zhí)行傳輸,使得系統(tǒng)可以精密地控制在發(fā)出中斷前所完成的傳輸?shù)拇螖?shù)。而且,這種中斷可以在每個數(shù)據(jù)“塊”的末尾發(fā)生,而不僅僅是在每個字節(jié)或者字之后。在吞吐率分布的另一端,更為高速(例如以10?100MHz)的并行外設(shè)可能無法選擇內(nèi)核傳輸?shù)姆绞?。原因為:首先,以這種方式進行設(shè)定時,處理器會頻繁地訪問外設(shè);其次,與高速外設(shè)相關(guān)的處理幾乎總是對數(shù)據(jù)塊進行的。無論是在一個信號處理應(yīng)用中通過FFT完成,還是在圖像處理系統(tǒng)中進行二維卷積(convolution),處理器在送往緩沖器的最后一個數(shù)據(jù)采樣一到達時就開始其操作。這里,用于指示一個數(shù)據(jù)塊傳輸結(jié)束的中斷可以出現(xiàn)在數(shù)百次甚至上千次傳輸中。無論外設(shè)進行何種類型的傳輸,DMA通道都應(yīng)該帶有多個緩沖器,以便讓處理器能在數(shù)據(jù)填充入下一個緩沖器時訪問當(dāng)前的緩沖器。如果系統(tǒng)更為復(fù)雜,則有可能需要實現(xiàn)多個同步進行的數(shù)據(jù)塊傳輸。例如,除了可以訪問當(dāng)前的數(shù)據(jù)塊并采集下一個數(shù)據(jù)塊,還可能有必要將最后一個處理過的數(shù)據(jù)塊發(fā)出,以備未來之需。類似的,要處理當(dāng)前的幀的話,也有可能需要參考數(shù)據(jù)塊。各種各樣不同類型的應(yīng)用都確實存在這一情形,包括大多數(shù)類型的視頻壓縮應(yīng)用。(關(guān)于高速緩存與DMA之間的選擇指南內(nèi)容,祥見《電子工程專輯》網(wǎng)站)DMA控制器特性為了在多媒體系統(tǒng)中有效地運用DMA,就必須有足夠多的DMA通道,有一對以上的存儲器DMA(MemDMA)流充分地支持處理器的外設(shè)集。這是一個重要的問題,因為必然存在如下的情況:在未經(jīng)處理的媒體流進入外部存儲器(通過高速外設(shè))的同時,數(shù)據(jù)塊在外部存儲器和L1存儲器之間來回傳輸,以供內(nèi)核處理。而且,DMA引擎允許在外設(shè)和外部存儲器間進行直接數(shù)據(jù)傳輸,而不要求數(shù)據(jù)在L1存儲器中“暫駐”,這可以在那些數(shù)值計算密集的算法執(zhí)行中避免額外的數(shù)據(jù)傳遞。程序開發(fā)者常犯的一個錯誤會使得開發(fā)過程中的調(diào)試問題變得復(fù)雜化。外設(shè)及其相應(yīng)的DMA通道往往會提供一個可選的錯誤中斷,在開發(fā)中該中斷應(yīng)該始終處于使能狀態(tài),這樣可以節(jié)省數(shù)小時的調(diào)試時間。錯誤中斷一般是用于指示編制的程序中出現(xiàn)了某些錯誤(容易解決),或者外設(shè)下溢/溢出(情況更為復(fù)雜)。很多情況下,當(dāng)編程者在項目開始的時候用數(shù)據(jù)流來建立框架(framework)時,這些類型的問題只會在后來運行中,當(dāng)應(yīng)用處理器件被加上的時候才出現(xiàn)。其他重要的DMA特性包括對DMA通道設(shè)定優(yōu)先級,以滿足當(dāng)前外設(shè)任務(wù)要求,以及對相應(yīng)的DMA中斷進行配置以便與這些優(yōu)先級水平相匹配的能力。這些功能有助于確保數(shù)據(jù)的緩沖區(qū)不會由于DMA活躍在其他的外設(shè)上而出現(xiàn)溢出,它們?yōu)槌绦蜷_發(fā)者提供了額外的自由度,能根據(jù)每個DMA通道的數(shù)據(jù)往來情況對整個系統(tǒng)進行優(yōu)化。系統(tǒng)性能的修調(diào)隨著數(shù)據(jù)率和性能要求的提高,設(shè)計者能否具有對“系統(tǒng)性能修調(diào)”等控制選項進行操作的權(quán)限,也將變得十分關(guān)鍵。例如,DMA控制可以針對在每個時鐘周期上傳送一個數(shù)據(jù)字這一需求進行優(yōu)化。當(dāng)同一方向上有多個傳輸在進行時(例如,都從存儲器出發(fā),發(fā)往外部存儲),這往往就是對控制器進行操控的最有效率的方法,因為它可以防止DMA總線出現(xiàn)閑置。但是,在需要進行多路雙向視頻和音頻流傳輸?shù)那闆r下,“方向控制”就成為必不可少的措施,其目的是防止一條數(shù)據(jù)流完全占用整條總線。例如,如果DMA控制器始終將DMA總線的使用權(quán)交給任何一個準備好傳輸一個數(shù)據(jù)字的外設(shè),則使用外部DRAM時總的吞吐率將出現(xiàn)下降。在數(shù)據(jù)傳輸幾乎每個周期都變換方向的情況下,與外部存儲總線花費的轉(zhuǎn)向時間相應(yīng)的延遲將會顯著地降低吞吐率。于是,可以讓通道來編程設(shè)定突發(fā)量大小(burstsize)的DMA控制器將具有超出那些傳輸大小固定的控制器的性能。因為每個DMA通道可以將外設(shè)與內(nèi)部或者外部存儲相連接,所以為可能會發(fā)出緊急占用總線請求的外設(shè)自動服務(wù)的能力也是非常重要的。對于多媒體應(yīng)用來說,片上的存儲器幾乎總是不足以存下整個視頻幀數(shù)據(jù)。因此系統(tǒng)往往必須依靠L3DRAM來支持相對較快的、對大緩沖區(qū)的訪問。處理器與片外存儲器的接口在涉及高效的媒體框架方面是一個主要的因素,因為對外部存儲的存取模式必須經(jīng)過深思熟慮,以便能保證最佳的數(shù)據(jù)吞吐能力。使用DMA和/或高速緩存總是有助于提高存儲的性能,因為它們實現(xiàn)了大數(shù)據(jù)塊在同一方向上的傳輸。DMA傳輸一般是將大的數(shù)據(jù)緩沖區(qū)從一個位置轉(zhuǎn)移到另一個位置,而高速緩存線填充(cache-linefill)則是將一組在位置上連續(xù)的存儲器中的數(shù)據(jù)移入或者移出設(shè)備,利用同方向的塊傳輸來實現(xiàn)。除了使用DMA或高速緩存,還有若干高層次上執(zhí)行的步驟,它們可以確保數(shù)據(jù)流能流暢通過任何系統(tǒng)中的存儲器。兩個關(guān)鍵步驟分別是類似的傳輸編組以及優(yōu)先級分配和裁決方案的使用(詳見《電子工程專輯》網(wǎng)站)。在多媒體系統(tǒng)應(yīng)用的考慮使用DMA控制器來剔除數(shù)據(jù)DMA控制器可以用于“過濾”從攝像機流入一個系統(tǒng)的數(shù)據(jù)量。讓我們考慮一個視頻流正被送入存儲器進行某種形式的處理的情形,當(dāng)數(shù)據(jù)并不需要被再次送出來進行顯示的話,就不必將逆程消隱(blanking)數(shù)據(jù)送入存儲器緩沖區(qū)。處理器的視頻端口常常直接連接到一個視頻解碼器或者一個CMOS傳感器上,并連續(xù)地接收采樣。也就是說,外部的器件不斷送入數(shù)據(jù)和空白顯示信息。DMA控制器可以被設(shè)定為僅僅把有效的視頻送入存儲器中,使用這樣的功能就可以同時節(jié)約存儲器空間和總線帶寬。對于NTSC視頻流而言,這種消隱顯示信息占到了總輸入視頻帶寬的20%以上。存儲器節(jié)省帶來的好處并不大,因為額外的存儲空間可以以外部SDRAM的形式來提供,而所帶來的系統(tǒng)成本變化很小。更重要的是,在總的處理周期中所節(jié)約下來的帶寬,通常用來輸入消隱顯示信息的時間,都可以重新分配給系統(tǒng)中的某些其他的任務(wù)。例如,這些帶寬或時間可以用來發(fā)送壓縮的數(shù)據(jù)或者輸入來自于過去的幀的基準數(shù)據(jù)。雙重緩沖通常,在源視頻和最終顯示的內(nèi)容之間存在數(shù)據(jù)率差異的系統(tǒng)中,有必要在原有的內(nèi)容和新的視頻幀之間實現(xiàn)平滑的切換,這可以通過使用雙重緩沖設(shè)置來實現(xiàn)。一重緩沖指向目前的視頻幀,該幀以一定的刷新速率發(fā)送到顯示器;第二重緩沖則填入最新輸出的幀。當(dāng)后一重緩沖區(qū)被填滿時,DMA則發(fā)出中斷信號,表明該將新的幀輸出到顯示器了。此時,第一重緩沖開始用處理過的、待顯示的視頻幀進行填充,而第二重緩沖則輸出目前顯示的幀。雙重緩沖以類似于“打乒乓球”的方式來回切換。應(yīng)該注意的是,除了雙重緩沖外,也可以使用多重緩沖,以便為同步化提供更多的余量,以及降低中斷的頻率和相應(yīng)的延遲。2DDMA的考慮數(shù)據(jù)通過數(shù)字鏈路(如1鳥)傳輸時,它可能包含幾個通道。例如,這些通道必須復(fù)用在一個數(shù)據(jù)線內(nèi),通過同一個串行端口傳輸。此時,2DDMA可以用對復(fù)用的數(shù)據(jù)進行去交織(interleaving)處理,以便讓每個通道在存儲器上直線排列。圖1給出了圖形化的描述,在圖中,來自于左右通道的采樣被解復(fù)用,變?yōu)閮蓚€單獨的數(shù)據(jù)塊。這種自動化的數(shù)據(jù)分配結(jié)構(gòu)對于那些采用了數(shù)據(jù)塊處理的系統(tǒng)來說具有極高的價值。

Deinlerleavingsamplesvia2DDMA(a)PSOrderBlockofNlsamplesinseparateL(left)andRfright)chafinekPSOrder11i 1111111i 11111圖1:N個采樣的數(shù)據(jù)塊分離為L(左)和R(右)通道廣告插播信息維庫最新熱賣芯片:HEF4011BPLT1413L4972ADAS7C3256-15TCEPF10K10AQC208-2OP05EZSN74LS244DBRAD712JNAM27S33PCSI433對于視頻傳輸來說,2DDMA提供了若干系統(tǒng)層面的好處。對于剛開始著手的開發(fā)者來說,二維DMA可以方便宏模塊與外部存儲間的往來傳輸,讓數(shù)據(jù)的處理成為實際的傳輸操作的一部分,這消除了傳送非連續(xù)數(shù)據(jù)傳統(tǒng)上所需的額外開銷。它還可以讓系統(tǒng)通過有選擇的傳輸(例如,僅傳輸一幅輸入圖像中所需區(qū)域,而不是整幅圖像)來最大限度地減小數(shù)據(jù)的帶寬。另外一個例子是,2DDMA可以讓數(shù)據(jù)以一種對處理來說更為自然的順序放置在存儲器中。比如,正如圖2所示的那樣,RGB數(shù)據(jù)可以從一個CCD傳感器出發(fā),以交織的RGB888格式進入處理器的L2存儲器,如果采用2DDMA,它可以按照紅、綠、藍平面分別送入L3存儲器。視頻和圖像數(shù)據(jù)色彩空間分量的交織/去交織可以省下在處理前進一步移動數(shù)據(jù)的麻煩。

來自彳專恩器的RGB數(shù)字輸入存髓器中存儲的、經(jīng)過重新映射的

來自彳專恩器的RGB數(shù)字輸入存髓器中存儲的、經(jīng)過重新映射的

孃沖數(shù)軍存儲器中存儲的、

來自于觀拡端口的輸入數(shù)據(jù)圖2通過2DDMA來分離間插在一起的數(shù)據(jù)。同步的音頻和視頻流在一個多媒體系統(tǒng)中,流內(nèi)容往往同時包含音頻和視頻分量。因為這些流運行的數(shù)據(jù)率的緣故,必須用DMA通道來與音頻編碼/解碼器和視頻編碼器進行接口。重要的是,需要確保流是同步的,因為這種協(xié)同性是觀看質(zhì)量的一個主要影響因素。維持同步有多種方法,最常用的技術(shù)是為每組音頻和視頻緩沖區(qū)建立起一組DMA描述符表,并讓處理器管理這些表。因為音頻流中的數(shù)據(jù)丟失比視頻幀的丟失更容易引起人們的注意,音頻緩沖往往被設(shè)定為“主”流。即,需要讓音頻緩沖區(qū)以連續(xù)的模式進行循環(huán)運轉(zhuǎn)更為重要。通過保證音頻流的連續(xù)性,處理器可以對視頻幀顯示進行任何必需的調(diào)整。從DMA緩沖區(qū)的角度來看,針對每個音頻和視頻緩沖器分別生成一組描述符。每個描述符表設(shè)置為可以用一對指針來控制,一個指針用于填充緩沖區(qū),而另一個則用于清空緩沖區(qū)。每個描述符表都需要更新維護,以便確保讀和寫指針不會相互“交叉”,即處理器不應(yīng)該對正在發(fā)送數(shù)據(jù)的緩沖器進行刷新。類似的,DMA的控制器不應(yīng)該對處理器正在對其填充數(shù)據(jù)的緩沖區(qū)進行數(shù)據(jù)填充操作。為了實現(xiàn)音頻和視頻的同步,必須保持一個總的時間基準。每一個解碼后的數(shù)據(jù)緩沖區(qū)都可以在存儲器中利用對應(yīng)的時間標(biāo)簽(timetag)來設(shè)立。如果音頻流是“主”流,寫入緩沖就是完全循環(huán)性的。如果視頻幀不得不丟棄,負責(zé)緩沖器清空的DMA指針可以被重新編程設(shè)定為與最接近當(dāng)前的音頻緩沖數(shù)據(jù)的時戳(timestamp)的時間相一致。利用DMA控制器降低功率在一個具有電源管理功能設(shè)計的處理器上,DMA控制器可以為系統(tǒng)的總體功耗降低提供一種有價值的工具。讓我們考察一下這是如何實現(xiàn)的。當(dāng)處理器并不對緩沖區(qū)進行積極的操控時,它可以設(shè)定為處于空閑狀態(tài)。處于這種無活動的狀態(tài)中時,時鐘可以被關(guān)閉,有時甚至電壓也會被降低—這兩種措施都

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論