首頁>Club>
17
回覆列表
  • 1 # 使用者9175688961649

    基本資訊  DMA方式,Direct Memory Access,也稱為成組資料傳送方式,有時也稱為直接記憶體操作。編輯本段工作原理  一個裝置介面試圖透過匯流排直接向另一個裝置傳送資料(一般是大批次的資料),它會先向CPU傳送DMA請求訊號。外設透過DMA的一種專門介面電路――DMA控制器(DMAC),向CPU提出接管匯流排控制權的匯流排請求,CPU收到該訊號後,在當前的匯流排週期結束後,會按DMA訊號的優先順序和提出DMA請求的先後順序響應DMA訊號。CPU對某個裝置介面響應DMA請求時,會讓出匯流排控制權。於是在DMA控制器的管理下,外設和儲存器直接進行資料交換,而不需CPU干預。資料傳送完畢後,裝置介面會向CPU傳送DMA結束訊號,交還匯流排控制權。   實現DMA傳送的基本操作如下:   (1)外設可透過DMA控制器向CPU發出DMA請求:   (2)CPU響應DMA請求,系統轉變為DMA工作方式,並把匯流排控制權交給DMA控制器;   (3)由DMA控制器傳送儲存器地址,並決定傳送資料塊的長度;   (4)執行DMA傳送;   (5)DMA操作結束,並把匯流排控制權交還CPU。   用途:   DMA方式主要適用於一些高速的I/O裝置。這些裝置傳輸位元組或字的速度非常快。對於這類高速I/O裝置,如果用輸入輸出指令或採用中斷的方法來傳輸位元組資訊,會大量佔用CPU的時間,同時也容易造成資料的丟失。而DMA方式能使I/O裝置直接和儲存器進行成批資料的快速傳送。   DMA控制器或介面一般包括四個暫存器:   狀態控制暫存器、資料暫存器、地址暫存器和位元組計數器。   這些暫存器在資訊傳送之前需要進行初始化設定。即在輸入輸出程式中用匯編語言指令對各個暫存器寫入初始化控制字。編輯本段DMA方式特點  DMA 是所有現代電腦的重要特色,他允許不同速度的硬體裝置來溝通,而不需要依於 CPU 的大量 中斷 負載。否則,CPU 需要從 來源 把每一片段的資料複製到 暫存器,然後把他們再次寫回到新的地方。在這個時間中,CPU 對於其他的工作來說就無法使用。   DMA 傳輸重要地將一個記憶體區從一個裝置複製到另外一個。當 CPU 初始化這個傳輸動作,傳輸動作本身是由 DMA 控制器 來實行和完成。典型的例子就是移動一個外部記憶體的區塊到晶片內部更快的記憶體去。像是這樣的操作並沒有讓處理器工作拖延,反而可以被重新排程去處理其他的工作。DMA 傳輸對於高效能 嵌入式系統 演算法和網路是很重要的。   舉個例子,PC ISA DMA 控制器擁有 8 個 DMA 通道,其中的 7 個通道是可以讓 PC 的 CPU 所利用。每一個 DMA 通道有一個 16位元 位址暫存器和一個 16 位元 計數暫存器。要初始化資料傳輸時,裝置驅動程式一起設定 DMA 通道的位址和計數暫存器,以及資料傳輸的方向,讀取或寫入。然後指示 DMA 硬體開始這個傳輸動作。當傳輸結束的時候,裝置就會以中斷的方式通知 CPU。編輯本段傳送方式停止CPU訪問記憶體  當外圍裝置要求傳送一批資料時,由DMA控制器發一個停止訊號給CPU,要求CPU放棄對地址匯流排、資料匯流排和有關控制匯流排的使用權。DMA控制器獲得 匯流排控制權以後,開始進行資料傳送。在一批資料傳送完畢後,DMA控制器通知CPU可以使用記憶體,並把匯流排控制權交還給CPU。在這種DMA傳送過程 中,CPU基本處於不工作狀態或者說保持狀態。   優點:控制簡單,它適用於資料傳輸率很高的裝置進行成組傳送。   缺點:在DMA控制器訪內階段,記憶體的效能沒有充分發揮,相當一部分記憶體工作週期是空閒的。這是因為,外圍裝置傳送兩個資料之間的間隔一般總是大於記憶體儲存週期,即使高速I/O裝置也是如此。週期挪用  當I/O裝置沒有DMA請求時,CPU按程式要求訪問記憶體;一旦I/O裝置有DMA請求,則由I/O裝置挪用一個或幾個記憶體週期。   I/O裝置要求DMA傳送時可能遇到兩種情況:   (1)此時CPU不需要訪內,如CPU正在執行乘法指令。由於乘法指令執行時間較長,此時I/O訪內與CPU訪內沒有衝突,即I/O裝置挪用一二個記憶體週期對CPU執行程式沒有任何影響。   (2)I/O裝置要求訪內時CPU也要求訪內,這就產生了訪內衝突,在這種情況下I/O裝置訪內優先,因為I/O訪內有時間要求,前一個I/O資料必須在下一個訪內請求到來之前存取完畢。顯然,在這種情況下I/O 裝置挪用一二個記憶體週期,意味著CPU延緩了對指令的執行,或者更明確地說,在CPU執行訪內指令的過程中插入DMA請求,挪用了一二個記憶體週期。   與停止CPU訪內的DMA方法比較,週期挪用的方法既實現了I/O傳送,又較好地發揮了記憶體和CPU的效率,是一種廣泛採用的方法。但是I/O裝置每一次週期挪用都有申請匯流排控制權、建立匯流排控制權和歸還匯流排控制權的過程,所以傳送一個字對記憶體來說要佔用一個週期,但對DMA控制器來說一般要2—5個 記憶體週期(視邏輯線路的延遲而定)。因此,週期挪用的方法適用於I/O裝置讀寫週期大於記憶體儲存週期的情況。DMA與CPU交替訪內  如果CPU的工作週期比記憶體存取週期長很多,此時採用交替訪內的方法可以使DMA傳送和CPU同時發揮最高的效率。假設CPU工作週期為 1.2μs,記憶體存取週期小於0.6μs,那麼一個CPU週期可分為C1和C2兩個分週期,其中C1供DMA控制器訪內,C2專供CPU訪內。   這種方式不需要匯流排使用權的申請、建立和歸還過程,匯流排使用權是透過C1和C2分時進行的。CPU和DMA控制器各自有自己的訪內地址暫存器、資料寄存 器和讀/寫訊號等控制暫存器。在C1週期中,如果DMA控制器有訪內請求,可將地址、資料等訊號送到總線上。在C2週期中,如CPU有訪內請求,同樣傳送 地址、資料等訊號。事實上,對於匯流排,這是用C1,C2控制的一個多路轉換器,這種匯流排控制權的轉移幾乎不需要什麼時間,所以對DMA傳送來講效率是很高的。   這種傳送方式又稱為“透明的DMA”方式,其來由是這種DMA傳送對CPU來說,如同透明的玻璃一般,沒有任何感覺或影響。在透明的DMA方式下工作,CPU既不停止主程式的執行,也不進入等待狀態,是一種高效率的工作方式。當然,相應的硬體邏輯也就更加複雜。

  • 中秋節和大豐收的關聯?
  • RNG戰隊“虎狗鍋明態”五排下棋,FPX洲際賽後直播大戰RNG,聲音嚇到觀眾,怎麼評價?