DMA檢視原始碼討論檢視歷史
DMA |
DMA(Direct Memory Access,直接存儲器訪問) 是所有現代電腦的重要特色,它允許不同速度的硬件裝置來溝通,而不需要依賴於 CPU 的大量中斷負載。否則,CPU 需要從來源把每一片段的資料複製到暫存器,然後把它們再次寫回到新的地方。在這個時間中,CPU 對於其他的工作來說就無法使用。
簡介
DMA 傳輸將數據從一個地址空間複製到另外一個地址空間。當CPU 初始化這個傳輸動作,傳輸動作本身是由 DMA 控制器來實行和完成。典型的例子就是移動一個外部內存的區塊到芯片內部更快的內存區。像是這樣的操作並沒有讓處理器工作拖延,反而可以被重新排程去處理其他的工作。DMA 傳輸對於高效能 嵌入式系統算法和網絡是很重要的。在實現DMA傳輸時,是由DMA控制器直接掌管總線,因此,存在着一個總線控制權轉移問題。即DMA傳輸前,CPU要把總線控制權交給DMA控制器,而在結束DMA傳輸後,DMA控制器應立即把總線控制權再交回給CPU。一個完整的DMA傳輸過程必須經過DMA請求、DMA響應、DMA傳輸、DMA結束4個步驟。
評價
DMA技術的出現,使得外圍設備可以通過DMA控制器直接訪問內存,與此同時,CPU可以繼續執行程序。那麼DMA控制器與CPU怎樣分時使用內存呢?通常採用以下三種方法:(1)停止CPU訪問內存;(2)周期挪用;(3)DMA與CPU交替訪問內存。當外圍設備要求傳送一批數據時,由DMA控制器發一個停止信號給CPU,要求CPU放棄對地址總線、數據總線和有關控制總線的使用權。DMA控制器獲得總線控制權以後,開始進行數據傳送。在一批數據傳送完畢後,DMA控制器通知CPU可以使用內存,並把總線控制權交還給CPU。圖(a)是這種傳送方式的時間圖。很顯然,在這種DMA傳送過程中,CPU基本處於不工作狀態或者說保持狀態。[1]