DMA方式具備以下特色:
一、 外部設備的輸入輸出請求直接發給主儲存器。
主存儲器既能夠被CPU訪問,也能夠被外圍設備訪問。所以,在主存儲器中一般要有一個存儲管理部件來爲各類訪問主存儲器的申請排隊,通常計算機系統把外圍設備的訪問申請安排在最高優先級。
二、 不須要作保存現場和恢復現場等工做,從而使DMA方式的工做速度大大加快。
因爲在外圍設備與主存儲器之間傳送數據不須要執行程序,所以,也不動用CPU中的數據寄存器和指令計數器等。
三、在DMA控制器中,除了須要設置數據緩衝寄存器、設備狀態寄存器或控制寄存器以外,還要設置主存儲器地址寄存器,設備地址寄存器和數據交換個數計數器。
外圍設備與主存儲器之間的整個數據交換過程所有要在硬件控制下完成。另外,因爲外圍設備通常是以字節爲單位傳送的,而主存儲器是以字爲單位訪問的,所以,在DMA控制器中還要有從字節裝配成字和從字拆卸成字節的硬件。
四、在DMA方式開始以前要對DMA控制器進行初始化,包括向DMA控制器傳送主存緩衝區首地址、設備地址、交換的數據塊的長度等,並啓動設備開始工 做。在DMA方式結束以後,要向CPU申請中斷,在中斷服務程序中對主存儲器中數據緩衝區進行後處理。若是須要繼續傳送數據的話,要再次對DMA控制器進 行初始化。
五、在DMA方式中,CPU不只可以與外圍設備並行工做,並且整個數據的傳送過程不須要CPU的干預。若是主存儲器的頻帶寬度足夠的話,外圍設備的工做能夠絲絕不影響CPU運行它自身的程序。
DMA方式的工做流程以下:
對於輸入設備:
從輸入介質上讀一個字節或字到DMA控制器中的數據緩衝寄存器BD中,若是輸入設備是面向字符的,則要把讀入的字符裝配成字。
若一個字尚未裝配滿,則返回到上面;若校驗出錯,則發中斷申請;若一個字已經裝配滿,則將BD中的數據送入主存數據寄存器。
把主存地址寄存器BA(在DMA控制器中)中的地址送入主存地址寄存器,而且將BA中的地址增值至下一個字地址。
把DMA控制器內的數據交換個數計數器BC中的內容減"1"。
若BC中的內容爲"0",則整個DMA數據傳送過程所有結束,不然返回到最上面繼續進行。
對於輸出設備:
把主存地址寄存器BA(在DMA控制器中)中的地址送入主存地址寄存器,並啓動主存儲器,同時將BA中的地址增值至下一個字地址。
將主存儲器數據寄存器中的數據送入DMA控制器的數據緩衝寄存器BD中。若是輸出設備是面向字符的,則要把BD中的數據拆卸字符。
把BD中數據逐個字符(對於面向字符的設備)或整個字寫到輸出介質上。
把DMA控制器內的數據交換個數計數器BC中的內容減"1"。
若BC中的內容爲"0",則整個DMA數據傳送過程所有結束,不然返回到最上面繼續進行。
目前使用的DMA方式實際上有以下三種:測試
一、週期竊取方式
在每一條指令執行結束時,CPU測試有沒有DMA服務申請,若是有,則CPU進入一個DMA週期。在DMA週期中借用CPU完成上面所列出的DMA工做流程。包括數據和主存地址的傳送,交換個數計數器中的內容減"1",主存地址的增值及一些測試判斷等。
採用週期竊取方式時,主存儲器能夠不與外圍設備直接相鏈接,而只與CPU鏈接,即仍然能夠採用如圖4.4那樣的鏈接方式,由於外圍設備與主存儲器的數據交換與程序控制輸入輸出方式和中斷輸入輸出方式同樣都是要通過CPU的。
週期竊取方式與程序控制輸入輸出方式和中斷輸入輸出方式的不一樣處主要在:它不須要使用程序來完成數據的輸入或輸出,只是借用了一個CPU的週期來完成DMA流程。所以,其工做速度是很快的。
週期竊取方式的優勢是硬件結構很簡單,比較容易實現。缺點是在數據輸入或輸出過程種實際上佔用了CPU的時間。spa
二、直接存取方式
這是一種真正的DMA方式。DMA控制器的數據傳送申請不是發向CPU,而是直接發往主存儲器。在獲得主存儲器的響應以後,整個DMA工做流程所有在DMA控制器中用硬件完成。
直接存取方式的優勢與缺點正好與週期竊取方式相反。
目前的多數計算機系統均採用直接存取方式工做。工作流
三、數據塊傳送方式
在設備控制器中設置一個比較大的數據緩衝存儲器,通常要可以存放下一個數據塊,如在軟磁盤存儲器中一般設置512個字節的數據緩衝存儲器。與設備介質之間的數據交換在數據緩衝存儲器中進行。設備控制器與主存儲器之間的數據交換以數據塊爲單位,並採用程序中斷方式進行。
數據塊傳送方式實際上並非DMA方式,只是它在每次中斷輸入輸出過程當中是以數據塊爲單位得到或發送數據的,這一點與上面兩種DMA方式相同,所以,一般也把這種輸入輸出方式納入DMA方式。
採用數據塊傳送方式的外圍設備還有行式打印機,激光打印機,卡片閱讀機,部分繪圖儀等。class