dma是什么意思 什么是dma
DMA的英文拼寫(xiě)是“Direct Memory Access”,漢語(yǔ)的意思就是直接內存訪(fǎng)問(wèn),是一種不經(jīng)過(guò)CPU而直接從內存了存取數據的數據交換模式。PIO模式下硬盤(pán)和內存之間的數據傳輸是由CPU來(lái)控制的;而在DMA模式下,CPU只須向DMA控制器下達指令,讓DMA控制器來(lái)處理數的傳送,數據傳送完畢再把信息反饋給CPU,這樣就很大程度上減輕了CPU資源占有率。DMA模式與PIO模式的區別就在于,DMA模式不過(guò)分依賴(lài)CPU,可以大大節省系統資源,二者在傳輸速度上的差異并不十分明顯。DMA模式又可以分為Single-Word DMA(單字節DMA)和Multi-Word DMA(多字節DMA)兩種,其中所能達到的最大傳輸速率也只有16.6MB/s
直接存儲器存取(DMA)控制器是一種在系統內部轉移數據的獨特外設,可以將其視為一種能夠通過(guò)一組專(zhuān)用總線(xiàn)將內部和外部存儲器與每個(gè)具有DMA能力的外設連接起來(lái)的控制器。它之所以屬于外設,是因為它是在處理器的編程控制下來(lái)執行傳輸的。值得注意的是,通常只有數據流量較大(kBps或者更高)的外設才需要支持DMA能力,這些應用方面典型的例子包括視頻、音頻和網(wǎng)絡(luò )接口。
一般而言,DMA控制器將包括一條地址總線(xiàn)、一條數據總線(xiàn)和控制寄存器。高效率的DMA控制器將具有訪(fǎng)問(wèn)其所需要的任意資源的能力,而無(wú)須處理器本身的介入,它必須能產(chǎn)生中斷。最后,它必須能在控制器內部計算出地址。
一個(gè)處理器可以包含多個(gè)DMA控制器。每個(gè)控制器有多個(gè)DMA通道,以及多條直接與存儲器站(memory bank)和外設連接的總線(xiàn),如圖1所示。在很多高性能處理器中集成了兩種類(lèi)型的DMA控制器。第一類(lèi)通常稱(chēng)為“系統DMA控制器”,可以實(shí)現對任何資源(外設和存儲器)的訪(fǎng)問(wèn),對于這種類(lèi)型的控制器來(lái)說(shuō),信號周期數是以系統時(shí)鐘(SCLK)來(lái)計數的,以ADI的Blackfin處理器為例,頻率最高可達133MHz。第二類(lèi)稱(chēng)為內部存儲器DMA控制器(IMDMA),專(zhuān)門(mén)用于內部存儲器所處位置之間的相互存取操作。因為存取都發(fā)生在內部(L1-L1、L1-L2,或者L2-L2),周期數的計數則以?xún)群藭r(shí)鐘(CCLK)為基準來(lái)進(jìn)行,該時(shí)鐘的速度可以超過(guò)600MHz。
每個(gè)DMA控制器有一組FIFO,起到DMA子系統和外設或存儲器之間的緩沖器的作用。對于MemDMA(Memory DMA)來(lái)說(shuō),傳輸的源端和目標端都有一組FIFO存在。當資源緊張而不能完成數據傳輸的話(huà),則FIFO可以提供數據的暫存區,從而提高性能。
因為你通常會(huì )在代碼初始化過(guò)程中對DMA控制器進(jìn)行配置,內核就只需要在數據傳輸完成后對中斷做出響應即可。你可以對DMA控制進(jìn)行編程,讓其與內核并行地移動(dòng)數據,而同時(shí)讓內核執行其基本的處理任務(wù)—那些應該讓它專(zhuān)注完成的工作。
評論