dma(直接內(nèi)存訪問)是一種硬件實現(xiàn)的數(shù)據(jù)傳輸技術(shù),允許外圍設(shè)備與主存直接交換數(shù)據(jù),無需cpu的直接干預。dma傳輸?shù)幕締挝皇菙?shù)據(jù)塊,數(shù)據(jù)在i/o設(shè)備和內(nèi)存之間直接傳輸。
DMA傳輸過程
-
預處理:CPU完成一些必要的工作,如測試狀態(tài)、啟動設(shè)備等,然后繼續(xù)執(zhí)行其他任務(wù)。
-
數(shù)據(jù)傳送:DMA設(shè)備準備好后,會主動向DMA控制器(DMAC)發(fā)出DMA請求,DMAC向CPU發(fā)出總線請求。
-
后處理:數(shù)據(jù)傳送滿一個塊后,DMAC向CPU發(fā)出中斷請求,CPU執(zhí)行中斷程序,進行數(shù)據(jù)校驗、測試傳送過程等。
易錯點
實際上,題目詢問CPU用于DMA處理的時間占比,主要指的是DMA預處理和后處理的時間占比,因為其他部分不占用CPU時間。

DMA控制器操作流程
-
CPU響應(yīng)DMA請求(傳送前):當DMA控制器發(fā)出總線請求后,CPU響應(yīng)此請求,并發(fā)出總線響應(yīng)信號。
-
接管總線控制權(quán)(傳送前):CPU接管系統(tǒng)總線控制權(quán),準備進入DMA操作周期。
-
DMA操作周期:CPU進入DMA操作周期,此時DMA控制器可以獨立進行數(shù)據(jù)傳輸。
-
數(shù)據(jù)傳送方向與控制信號:DMA控制器規(guī)定數(shù)據(jù)在主存和外設(shè)之間的傳送方向,發(fā)出讀寫等控制信號,以執(zhí)行數(shù)據(jù)傳送操作。
-
數(shù)據(jù)傳送完成:數(shù)據(jù)傳送完成后,DMA控制器將向CPU報告操作的結(jié)束。
-
操作結(jié)束報告(傳送后):DMA操作結(jié)束后,DMA控制器會通知CPU,以便CPU可以繼續(xù)執(zhí)行其他任務(wù)。
DMA傳送方式
這是單總線的結(jié)果(CPU說了算,所以不會產(chǎn)生與CPU的沖突):

這是三總線的結(jié)構(gòu)(也就是主存下面另外接了一條線到DMA,所以有可能與CPU發(fā)生沖突):

-
停止CPU訪問主存:
-
目的:在DMA傳輸期間,完全控制主存,避免與CPU的訪問沖突。
-
操作:在DMA傳輸期間,暫停CPU對主存的訪問。
-
優(yōu)點:控制簡單,易于實現(xiàn)。DMA可以完全控制主存,提高數(shù)據(jù)傳輸效率。
-
缺點:CPU在傳輸期間不執(zhí)行程序,導致CPU資源未被充分利用。
-
DMA與CPU交替訪存:
-
目的:允許CPU和DMA控制器交替訪問主存,提高資源利用率。
-
操作:將CPU周期分為兩個部分,C1周期專供CPU訪存,C2周期專供DMA訪存。DMA控制器和CPU交替進行訪存操作,無需申請總線使用權(quán)。
-
優(yōu)點:有效利用CPU和DMA資源,提高系統(tǒng)效率。
-
缺點:硬件邏輯更為復雜,需要精確控制訪問時間。
-
周期挪用(周期竊?。?/strong>:
-
目的:在CPU未使用總線時,允許DMA控制器訪問主存。
-
操作:DMA控制器檢測CPU的訪存周期,當CPU不訪存時,DMA控制器利用這個周期進行數(shù)據(jù)傳輸。如果CPU和DMA同時請求訪存,根據(jù)優(yōu)先級決定誰先訪問主存。
-
優(yōu)點:最大限度減少對CPU性能的影響,提高主存的利用率。
-
缺點:實現(xiàn)較為復雜,需要高級的硬件支持來檢測和響應(yīng)訪問請求。
DMA請求:表示要向主存?zhèn)魉鸵粋€字的數(shù)據(jù)。
DMA中斷請求:表示一整塊的數(shù)據(jù)已經(jīng)傳送完成。
DMA的組成
-
主存地址計數(shù)器:存放要交換的主存地址。
-
傳送長度計數(shù)器:記錄傳送數(shù)據(jù)的長度。
-
數(shù)據(jù)緩存寄存器:暫存每次傳送的數(shù)據(jù)。
-
DMA請求觸發(fā)器:I/O設(shè)備準備好數(shù)據(jù)后使觸發(fā)器置位。
-
控制/狀態(tài)邏輯:完成中斷機構(gòu),數(shù)據(jù)塊傳送完畢后觸發(fā)中斷。
DMA與其他方式的比較
-
中斷驅(qū)動方式:I/O設(shè)備主動打斷CPU運行請求服務(wù),但每個數(shù)據(jù)傳輸需經(jīng)過CPU。
-
通道控制方式:專門負責輸入/輸出的處理機,進一步減少CPU干預,實現(xiàn)并行操作。
DMA的優(yōu)缺點
-
優(yōu)點:減少了CPU的干預,提高了數(shù)據(jù)傳輸效率。
-
缺點:在數(shù)據(jù)塊傳送的開始和結(jié)束時需要CPU干預。
DMA的應(yīng)用場景
DMA適用于大量數(shù)據(jù)的快速傳輸,如磁盤讀寫操作。
DMA的中斷處理
在中斷服務(wù)程序中,CPU需要處理數(shù)據(jù)校驗、傳送過程測試等任務(wù),并決定是否繼續(xù)使用DMA傳送。
DMA的實現(xiàn)方式
DMA的實現(xiàn)依賴于硬件電路,不需要程序干預,是一種純硬件實現(xiàn)的數(shù)據(jù)傳輸方式。
以上就是DMA方式的知識點筆記的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!