1、簡介
DMA(Direct Memory Access,直接存儲器訪問)。在DMA出現以前,CPU與外設之間的數據傳送方式有程序傳送方式、中斷傳送方式。CPU是經過系統總線與其餘部件鏈接並進行數據傳輸。DMA的出現就是爲了解決批量數據的輸入/輸出問題。DMA是指外部設備不經過CPU而直接與系統內存交換數據的接口技術。這樣數據的傳送速度就取決於存儲器和外設的工做速度。測試
一、能向CPU發出系統保持(HOLD)信號,提出總線接管請求;
二、當CPU發出容許接管信號後,負責對總線的控制,進入DMA方式;
三、能對存儲器尋址及能修改地址指針,實現對內存的讀寫;
四、能決定本次DMA傳送的字節數,判斷DMA傳送是否借宿。
五、發出DMA結束信號,使CPU恢復正常工做狀態。
DMA的數據傳送分爲預處理、數據傳送和後處理3個階段。
(1)預處理
由CPU完成一些必要的準備工做。首先,CPU執行幾條I/O指令,用以測試I/O設備狀態,向DMA控制器的有關寄存器置初值,設置傳送方向、啓動該設備等。而後,CPU繼續執行原來的程序,直到I/O設備準備好發送的數據(輸入狀況)或接受的數據(輸出狀況)時,I/O設備向DMA控制器發送DMA請求,再由DMA控制器向CPU發送總線請求(統稱爲DMA請求),用以傳輸數據。
(2)數據傳送
DMA的數據傳輸能夠以單字節(或字)爲基本單位,對於以數據塊爲單位的傳送(如硬盤),DMA佔用總線後的數據輸入和輸出操做都是經過循環來實現。須要特別之處的是,這一循 環也是由DMA控制器(而不是經過CPU執行程序)實現的,即數據傳送階段是徹底由DMA(硬件)來控制的。
(3)後處理
DMA控制器向CPU發送中斷請求,CPU執行中斷服務程序作DMA結束處理,包括檢驗送入主存的數據是否正確,測試傳送過程當中是否出錯(錯誤則轉入診斷程序)和決定是否繼續使用DMA傳送其餘數據塊等指針