<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 關(guān)于嵌入式系統(tǒng)程式設(shè)計(jì)重要抉擇

          關(guān)于嵌入式系統(tǒng)程式設(shè)計(jì)重要抉擇

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

          使用DMA管理資料

          為了在多媒體中有效地利用DMA,應(yīng)該有足夠多的DMA通道以充分支援處理器的L邊電路,即可以同時(shí)傳送一對(duì)以上的記憶體與DMA之間的資料流程。這一點(diǎn)很,因考慮到在外部記憶體和L1記憶體之間傳送用于內(nèi)核處理的資料塊的同時(shí),必然有一個(gè)原始的多媒體資料也會(huì)進(jìn)入外部記憶體(通過高速L邊設(shè)備)。進(jìn)一步地,DMA引擎允許L邊電路與外部記憶體之間的直接資料傳送,而無需在L1記憶體內(nèi)有一個(gè)“中間停留”,因此在大量資料演算法中可以節(jié)省外部資料傳送。

          隨著資料傳輸速率和性能要求的提高,工程師能隨意對(duì)“性能調(diào)節(jié)”控制就變得非常關(guān)鍵。例如,優(yōu)化DMA控制器以使每個(gè)時(shí)鐘周期都可傳送一個(gè)資料字。當(dāng)向同一方向同時(shí)傳送多個(gè)資料流程時(shí)(例如,從內(nèi)部記憶體向外部記憶體傳送全部資料),這通常是最有效的操縱控制器的方式,因這種方法可以防止DMAR流排有空閑時(shí)間。

          但是當(dāng)傳送多個(gè)雙向視頻和音頻資料流程時(shí),必須使用“業(yè)務(wù)量控制”,以防止一個(gè)資料流程獨(dú)R流排。例如,如果DMA控制器總是把DMAR流排連接到任何一個(gè)準(zhǔn)備每次傳送一個(gè)資料字的L邊電路(例如,連接到一個(gè)SDRAM),一個(gè),那麼總的資料吞吐率會(huì)降低。在這種情況中,幾乎每一個(gè)時(shí)鐘周期資料傳送都改變一次方向,因此在SDRAMR流排上與來回切換時(shí)間相關(guān)的等待時(shí)間將顯著降低吞吐率。這樣,具有一個(gè)通道可編程傳送資料字長度的DMA控制器比那種具有固定傳送長度的控制器有明顯的優(yōu)點(diǎn)。因每個(gè)DMA通道都可以將一個(gè)L邊設(shè)備與外部或內(nèi)部記憶體相連,所以它還具有的一個(gè)優(yōu)點(diǎn)是它能自動(dòng)地連接到一個(gè)能發(fā)出緊急R流排請(qǐng)求的L邊設(shè)備。

          另一個(gè)特性即二維DMA性能,具有幾種級(jí)優(yōu)點(diǎn)。第一,它允許以一種比較直觀的處理順序?qū)①Y料放入記憶體。例如,亮度和色度資料從一個(gè)圖像感測(cè)器相繼傳來,但可將它們自動(dòng)存入各自的記憶體緩沖塊。二維DMA的交錯(cuò)和去交錯(cuò)功能在處理視頻和圖像資料之前節(jié)省了多余的記憶體R流排傳送。另外,通過有選擇性地進(jìn)行傳送,即只選擇需要的輸入圖像資料塊而不是全部圖像資料,二維DMA也能夠使系統(tǒng)的資料帶寬最小。

          其他的DMA特性包括滿足當(dāng)前的L邊設(shè)備任務(wù)請(qǐng)求區(qū)分DMA通道優(yōu)先等級(jí)的能力,以及匹配這些優(yōu)先順序設(shè)置相應(yīng)的DMA中斷的能力。這些功能有助于確保資料緩沖器不會(huì)因DMA忙于其他L邊設(shè)備而溢出,并且它們還使工程師在每個(gè)DMA通道的資料流程通基礎(chǔ)上優(yōu)化整個(gè)系統(tǒng)性能時(shí)具有更大的自由度。

          因內(nèi)部記憶體通常分幾個(gè)子存儲(chǔ)塊,所以DMA控制器和內(nèi)核同時(shí)存取向不同子存儲(chǔ)塊存放資料的操作均可在一個(gè)單時(shí)鐘周期內(nèi)完成。例如,當(dāng)內(nèi)核對(duì)一個(gè)子存儲(chǔ)塊的資料進(jìn)行操作時(shí),DMA可以向另一個(gè)子存儲(chǔ)塊存放新資料。在某些條件下,甚至可以同時(shí)訪問同一個(gè)子存儲(chǔ)塊。當(dāng)訪問外部記憶體時(shí),通常只有一個(gè)物理R流排可用,該物理R流排經(jīng)常被同步和非同步記憶體所復(fù)用。

          資料快取記憶體

          當(dāng)前的DMA控制器的靈活性是一把雙刃劍。當(dāng)在兩個(gè)處理器之間讀取一個(gè)大的C/C++應(yīng)用時(shí),師有時(shí)不愿意將DMA功能整合到已經(jīng)存在的工作代碼中。這時(shí),資料快取記憶體就很有用了。通常,資料通過快取記憶體送入L1記憶體以便最快處理。這種資料快取記憶體非常吸引人,因它象一個(gè)小DMA一樣工作,但涉及到程式師的工作量最小。

          因典型的快取記憶體線填充特性,所以當(dāng)處理器對(duì)外部記憶體內(nèi)的連續(xù)資料存放塊進(jìn)行操作時(shí),資料快取記憶體就非常有用。這是因該快取記憶體不只存儲(chǔ)當(dāng)前正在被處理的立即資料,此外它還向與當(dāng)前相鄰的資料塊內(nèi)予取資料。換句話說,該快取記憶體機(jī)構(gòu)假設(shè)當(dāng)前處理的資料字是即將被處理的一個(gè)相鄰資料塊的一部分的可能性極大。對(duì)于多媒體圖像、音頻和視頻流,這是一個(gè)合理的假設(shè)。

          由于資料緩沖器通常來自L邊電路,所以對(duì)資料快取記憶體的操作并不總象對(duì)指令快取記憶體的操作那樣容易。這是由于必須在非“*”的快取記憶體中人工控制一致性。在使用這些快取記憶體準(zhǔn)備對(duì)新資料進(jìn)行任何讀取之前都必須使該資料緩沖器無效。

          總之,在一個(gè)具體的多媒體系統(tǒng)中對(duì)指令和資料傳送的最佳機(jī)構(gòu)的選擇應(yīng)該是快取記憶體還是DMA沒有一種簡單的答案。不過,一旦開發(fā)工程師t解到這其中的權(quán)衡考慮,就能進(jìn)入到一種“不偏不倚”的狀態(tài),從而將使系統(tǒng)性能達(dá)到最優(yōu)化。(本文作者任職于ADI公司公司 Blackfin Blackfin應(yīng)用組應(yīng)用組)。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();