DMA數據傳輸過程

一.DMA方式特點:
  1、 外部設備的輸入輸出請求直接發給主儲存器。
  主存儲器既可以被CPU訪問,也可以被外圍設備訪問。因此,在主存儲器中通常要有一個存儲管理部件來爲各種訪問主存儲器的申請排隊,一般計算機系統把外圍設備的訪問申請安排在最高優先級。
  2、 不需要做保存現場和恢復現場等工作,從而使DMA方式的工作速度大大加快。
  
由於在外圍設備與主存儲器之間傳送數據不需要執行程序,因此,也不動用CPU中的數據寄存器和指令計數器等。
  3、在DMA控制器中,除了需要設置數據緩衝寄存器、設備狀態寄存器或控制寄存器之外,還要設置主存儲器地址寄存器,設備地址寄存器和數據交換個數計數器。
  
外圍設備與主存儲器之間的整個數據交換過程全部要在硬件控制下完成。另外,由於外圍設備一般是以字節爲單位傳送的,而主存儲器是以字爲單位訪問的,因此,在DMA控制器中還要有從字節裝配成字和從字拆卸成字節的硬件。
  4、在DMA方式開始之前要對DMA控制器進行初始化,包括向DMA控制器傳送主存緩衝區首地址、設備地址、交換的數據塊的長度等,並啓動設備開始工作。在DMA方式結束之後,要向CPU申請中斷,在中斷服務程序中對主存儲器中數據緩衝區進行後處理。如果需要繼續傳送數據的話,要再次對DMA控制器進行初始化。
  5、在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方式實際上有如下三種:

  1、週期存取方式
  在每一條指令執行結束時,CPU測試有沒有DMA服務申請,如果有,則CPU進入一個DMA週期。在DMA週期中借用CPU完成上面所列出的DMA工作流程。包括數據和主存地址的傳送,交換個數計數器中的內容減"1",主存地址的增值及一些測試判斷等。
  
採用週期存取方式時,主存儲器可以不與外圍設備直接相連接,而只與CPU連接,即仍然可以採用如圖4.4那樣的連接方式,因爲外圍設備與主存儲器的數據交換與程序控制輸入輸出方式和中斷輸入輸出方式一樣都是要經過CPU的。
  週期竊取方式與程序控制輸入輸出方式和中斷輸入輸出方式的不同處主要在:它不需要使用程序來完成數據的輸入或輸出,只是借用了一個CPU的週期來完成DMA流程。因此,其工作速度是很快的。
  週期存取方式的優點是硬件結構很簡單,比較容易實現。缺點是在數據輸入或輸出過程種實際上佔用了CPU的時間。

  2、直接存取方式
  這是一種真正的DMA方式。DMA控制器的數據傳送申請不是發向CPU,而是直接發往主存儲器。在得到主存儲器的響應之後,整個DMA工作流程全部在DMA控制器中用硬件完成。
  直接存取方式的優點與缺點正好與週期竊取方式相反。
  目前的多數計算機系統均採用直接存取方式工作。

  3、數據塊傳送方式
  在設備控制器中設置一個比較大的數據緩衝存儲器,一般要能夠存放下一個數據塊,如在軟磁盤存儲器中通常設置512個字節的數據緩衝存儲器。與設備介質之間的數據交換在數據緩衝存儲器中進行。設備控制器與主存儲器之間的數據交換以數據塊爲單位,並採用程序中斷方式進行。
  數據塊傳送方式實際上並不是DMA方式,只是它在每次中斷輸入輸出過程中是以數據塊爲單位獲得或發送數據的,這一點與上面兩種DMA方式相同,因此,通常也把這種輸入輸出方式歸入DMA方式。

  採用數據塊傳送方式的外圍設備還有行式打印機,激光打印機,卡片閱讀機,部分繪圖儀等;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章