概念:DMA(直接內(nèi)存訪問)是一種避開CPU,可以直接訪問外設(shè)和內(nèi)存的技術(shù)。它可以在外設(shè)和存儲(chǔ)器之間、存儲(chǔ)器之間以及外設(shè)之間訪問和移動(dòng)數(shù)據(jù)。
目的:不需要CPU干預(yù),直接為外設(shè)服務(wù),使CPU可以處理其他事務(wù),提高系統(tǒng)效率。(附錄有例子補(bǔ)充)
成分:
一般來說,直接存儲(chǔ)器存取控制器將包括地址總線、數(shù)據(jù)總線和控制寄存器。
DMA屬于外設(shè),因?yàn)樗窃谔幚砥鞯木幊炭刂葡逻M(jìn)行傳輸?shù)摹?/p>
一個(gè)處理器可以包含多個(gè)直接存儲(chǔ)器存取控制器。每個(gè)控制器都有多個(gè)直接存儲(chǔ)器存取通道。
處理器DMA有兩種,系統(tǒng)DMA(可以訪問任何資源)和內(nèi)存DMA(專門用于內(nèi)部存儲(chǔ)器之間的數(shù)據(jù)訪問,速度更快)。
每個(gè)直接存儲(chǔ)器存取控制器都有一組先進(jìn)先出,作為直接存儲(chǔ)器存取子系統(tǒng)和外圍設(shè)備或存儲(chǔ)器之間的緩沖區(qū)
設(shè)置:
目前主要有兩種DMA傳輸結(jié)構(gòu):寄存器模式和描述符模式。
注冊(cè)模式
在基于寄存器的直接存儲(chǔ)器存取中,處理器直接對(duì)直接存儲(chǔ)器存取控制寄存器進(jìn)行編程,以開始傳輸。
基于寄存器的DMA由兩個(gè)子模式組成:自動(dòng)緩沖模式和停止模式。在自動(dòng)緩沖區(qū)DMA中,當(dāng)一個(gè)傳輸塊完成時(shí),控制寄存器自動(dòng)重新加載其原始設(shè)置值,相同的DMA進(jìn)程以零開銷重新啟動(dòng)。自動(dòng)緩沖區(qū)DMA特別適合具有持久數(shù)據(jù)流的性能敏感型應(yīng)用。直接存儲(chǔ)器存取控制器可以獨(dú)立于其他處理器活動(dòng)讀取數(shù)據(jù)流,然后在每次傳輸結(jié)束時(shí)向內(nèi)核發(fā)出中斷。
停止模式的工作原理類似于自動(dòng)緩沖區(qū)DMA,只是DMA完成后不會(huì)重新加載每個(gè)寄存器,所以整個(gè)DMA傳輸只發(fā)生一次。停止模式對(duì)于基于某些事件的一次性傳輸非常有用。例如,數(shù)據(jù)塊不定期地從一個(gè)位置傳輸?shù)搅硪粋€(gè)位置。
描述符模式
基于描述符的直接存儲(chǔ)器存取(deor)需要一組參數(shù)存儲(chǔ)在內(nèi)存中,以啟動(dòng)一系列直接存儲(chǔ)器存取操作。該描述符中包含的參數(shù)與通常編程到直接存儲(chǔ)器存取控制寄存器集中的所有參數(shù)相同。然而,描述符也可以允許多個(gè)直接存儲(chǔ)器存取操作序列串在一起。在基于描述符的直接存儲(chǔ)器存取操作中,我們可以對(duì)一個(gè)直接存儲(chǔ)器存取通道進(jìn)行編程,并在當(dāng)前操作序列完成后自動(dòng)設(shè)置和啟動(dòng)另一個(gè)直接存儲(chǔ)器存取傳輸。
描述符管理
一個(gè)是軟件鏈管理,需要設(shè)置多種描述符,串聯(lián)在一起。一個(gè)描述符指向下一個(gè)描述符,描述符的加載是自動(dòng)的。
一種是硬件隊(duì)列管理DMA,只在一些高級(jí)處理器中使用。
最后,使用DMA時(shí)需要注意的問題:
DMA使用物理地址,而程序使用虛擬地址,因此配置DMA時(shí)必須將虛擬地址轉(zhuǎn)換為物理地址。
由于程序使用虛擬地址,一般使用cache地址,cache的內(nèi)容不一定和其物理地址(內(nèi)存)的內(nèi)容一致,所以在開始DMA傳輸之前,必須刷新這個(gè)地址的Cache,也就是寫入內(nèi)存。
Os不能保證每個(gè)分配的內(nèi)存空在物理上是連續(xù)的。尤其是當(dāng)系統(tǒng)已經(jīng)使用了一段時(shí)間并且分配了大量?jī)?nèi)存時(shí)。所以每次都要判斷地址是否連續(xù)。如果不是連續(xù)的,就要把這個(gè)內(nèi)存分成幾個(gè)段,讓DMA完成傳輸
1.《dma 關(guān)于DMA的基礎(chǔ)知識(shí),你需要知道這些...》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。
2.《dma 關(guān)于DMA的基礎(chǔ)知識(shí),你需要知道這些...》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來源地址,http://f99ss.com/junshi/1639319.html