DMA全稱Direct Memory Access,是直接存儲器訪問,DMA是所有現(xiàn)代電腦的重要特色,它允許不同速度的硬件裝置來溝通,而不需要依賴于 CPU 的大量中斷負載。
一、DMA原理
DMA 傳輸將數(shù)據(jù)從一個地址空間復制到另外一個地址空間。當CPU 初始化這個傳輸動作,傳輸動作本身是由 DMA 控制器來實行和完成。典型的例子就是移動一個外部內(nèi)存的區(qū)塊到芯片內(nèi)部更快的內(nèi)存區(qū)。像是這樣的操作并沒有讓處理器工作拖延,反而可以被重新排程去處理其他的工作。DMA 傳輸對于高效能 嵌入式系統(tǒng)算法和網(wǎng)絡是很重要的。
在實現(xiàn)DMA傳輸時,是由DMA控制器直接掌管總線,因此,存在著一個總線控制權(quán)轉(zhuǎn)移問題。即DMA傳輸前,CPU要把總線控制權(quán)交給DMA控制器,而在結(jié)束DMA傳輸后,DMA控制器應立即把總線控制權(quán)再交回給CPU。一個完整的DMA傳輸過程必須經(jīng)過DMA請求、DMA響應、DMA傳輸、DMA結(jié)束4個步驟。
二、傳送方式
DMA技術(shù)的出現(xiàn),使得外圍設(shè)備可以通過DMA控制器直接訪問內(nèi)存,與此同時,CPU可以繼續(xù)執(zhí)行程序。那么DMA控制器與CPU怎樣分時使用內(nèi)存呢?通常采用以下三種方法:
1.停止CPU訪問內(nèi)存;
2.周期挪用;
3.DMA與CPU交替訪問內(nèi)存。