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