什么是直接內存訪問?
DMA(DirectMemoryAccess),即直接存儲器存取,是一種快速傳送數據的機制。數據傳遞可以從適配卡到內存,從內存到適配卡或從一段內存到另一段內存。-------------------------------------------------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方式。 采用數據塊傳送方式的外圍設備還有行式打印機,激光打印機,卡片閱讀機,部分繪圖儀等。