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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

來自彳專恩器的RGB數字輸入存髓器中存儲的、經過重新映射的

來自彳專恩器的RGB數字輸入存髓器中存儲的、經過重新映射的

孃沖數軍存儲器中存儲的、

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

溫馨提示

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

評論

0/150

提交評論