工作原理
一個設備接口試圖通過匯流排直接向另一個設備傳送數據(一般是大批量的數據),它會先向CPU傳送DMA請求信號。外設通過DMA的一種專門接口電路――DMA控制器(DMAC),向CPU提出接管匯流排控制權的匯流排請求,CPU收到該信號後,在當前的匯流排周期結束後,會按DMA信號的優先權和提出DMA請求的先後順序回響DMA信號。CPU對某個設備接口回響DMA請求時,會讓出匯流排控制權。於是在DMA控制器的管理下,外設和存儲器直接進行數據交換,而不需CPU干預。數據傳送完畢後,設備接口會向CPU傳送DMA結束信號,交還匯流排控制權。
實現DMA傳送的基本操作如下:
(1)外設可通過DMA控制器向CPU發出DMA請求:
(2)CPU回響DMA請求,系統轉變為DMA工作方式,並把匯流排控制權交給DMA控制器;
(3)由DMA控制器傳送存儲器地址,並決定傳送數據塊的長度;
(4)執行DMA傳送;
(5)DMA操作結束,並把匯流排控制權交還CPU。
工作過程
DMA的工作過程大致如下:
①當外設準備好,可以進行DMA傳送時,外設向DMA控制器發出DMA傳送請求信號DREQ;
②DMA控制器收到請求後,向CPU發出“匯流排請求”信號HOLD,表示希望占用匯流排;
③CPU在完成當前匯流排周期後會立即對HOLD信號進行回響。回響包括兩個方面:一是CPU將數據匯流排、地址匯流排和相應的控制信號線均置為高阻態,由此放棄對匯流排的控制權。另一方面,CPU向DMA控制器發出“匯流排回響”信號HLDA;
④DMA控制器收到HLDA信號後,就開始控制匯流排,並向外設發出DMA回響信號 ;
⑤DMA控制器送出地址信號和相應的控制信號,實現外設與記憶體或記憶體與記憶體之間的直接數據傳送。例如,在地址匯流排上發出存儲器的地址,向存儲器發出寫信號 ,同時向外設發出I/o地址、 和AEN信號,即可從外設向記憶體傳送一個位元組;
⑥DMA控制器自動修改地址和位元組計數器,並據此判斷是否需要重複傳送操作。規定的數據傳送完後,DMA控制器就撤銷發往CPU的HOLD信號。CPU檢測到HOLD失效後,緊接著撤銷HLDA信號,並在下一時鐘周期重新開始控制匯流排,繼續執行原來的程式。
特點
DMA方式具有下列特點:
①改變了主存與CPU的固定聯繫,主存既可被CPU訪問,又可被外設訪問;
②在數據塊傳送時,主存地址的確定、傳送數據的計數等都由硬體電路直接實現;
③主存中要開闢專用緩衝區,及時供給和接收外設的數據;
④CPU和外設並行工作,提高了系統的效率;
⑤DMA在傳送開始前要通過程式進行預處理,結束後要通過中斷方式進行後處理。
使用場所
DMA的適用場合有下述幾種:
①硬碟和軟碟I/O。可以使用DMAC作磁碟存儲介質與半導體主存儲器之間傳送數據的接口。這種場合需要將磁碟中的大量數據如作業系統等快速地裝入內部存儲器。
②快速通信通道I/O。例如,光導纖維通信鏈路,DMAC可以用來作為計算機系統和快速通信通道之間的接口,例如,作為同步通信數據的傳送和接收,以便提高回響時間,支持較高的數據傳輸速率,並使CPU脫離出來做其他工作。
③多處理機和多程式數據塊傳送。對於多處理機結構,通過DMAC控制數據傳送,可以較容易地實現專用存儲器和公用存儲器之間的數據傳送,對多任務套用、頁式調度和任務調度都需要傳送大量的數據。因此,採用DMA方式可以提高數據傳輸速度。
④掃描操作。在圖像處理中,對CRT螢幕送數據,也可以採用DMA方式。
⑤快速數據採集。當要採集的數據量很大,而且數據是以密集突發的形式出現時,例如對波形的採集,此時採用DMA方式可能是最好的方法,它能滿足回響時間和數據傳輸率的要求。
⑥在PC/XT機中還採用DMA方式進行DRAM的刷新操作。