計算機 DMA原理2

2021-07-10 06:58:42 字數 3394 閱讀 7045

dma(direct memory access,直接記憶體訪問) 是所有現代電腦的重要特色,它允許不同速度的硬體裝置來溝通,而不需要依賴於 cpu 的大量中斷負載。否則,cpu 需要從**把每一片段的資料複製到

暫存器,然後把它們再次寫回到新的地方。在這個時間中,cpu 對於其他的工作來說就無法使用。

中文名

直接儲存器訪問

外文名direct memory access

縮    寫

dma功    能

不同速度的硬體裝置來溝通

1dma原理

▪dma請求

▪dma響應

▪dma傳輸

▪dma結束

2dma傳送方式

▪停止cpu訪問記憶體

▪週期挪用

▪dma與cpu交替訪內

編輯 dma 傳輸將資料從乙個位址空間複製到另外乙個位址空間。當cpu 初始化這個傳輸動作,傳輸動作本身是由 dma 控制器來實行和完成。典型的例子就是移動乙個外部記憶體的區塊到晶元內部更快的記憶體區。像是這樣的操作並沒有讓

處理器工作拖延,反而可以被重新排程去處理其他的工作。dma 傳輸對於高效能 嵌入式系統演算法和網路是很重要的。

dma 在實現dma傳輸時,是由dma控制器直接掌管匯流排,因此,存在著乙個匯流排控制權轉移問題。即dma傳輸前,cpu要把匯流排控制權交給dma控制器,而在結束dma傳輸後,dma控制器應立即把匯流排控制權再交回給cpu。乙個完整的dma傳輸過程必須經過dma請求、dma響應、dma傳輸、dma結束4個步驟。

cpu對dma控制器初始化,並向

i/o介面發出操作命令,i/o介面提出dma請求。

dma控制器對dma請求判別優先順序及遮蔽,向匯流排裁決邏輯提出匯流排請求。當cpu執行完當前匯流排週期即可釋放匯流排控制權。此時,匯流排裁決邏輯輸出匯流排應答,表示dma已經響應,通過dma控制器通知i/o介面開始dma傳輸。

dma控制器獲得匯流排控制權後,cpu即刻掛起或只執行內部操作,由dma控制器輸出讀寫命令,直接控制ram與i/o介面進行dma傳輸。

在dma控制器的控制下,在儲存器和外部裝置之間直接進行資料傳送,在傳送過程中不需要**處理器的參與。開始時需提供要傳送的資料的起始位置和資料長度。

當完成規定的成批資料傳送後,dma控制器即釋放匯流排控制權,並向i/o介面發出結束訊號。當i/o介面收到結束訊號後,一方面停 止i/o裝置的工作,另一方面向cpu提出中斷請求,使cpu從不介入的狀態解脫,並執行一段檢查本次dma傳輸操作正確性的**。最後,帶著本次操作結果及狀態繼續執行原來的程式。

由此可見,dma傳輸方式無需cpu直接控制傳輸,也沒有中斷處理方式那樣保留現場和恢復現場的過程,通過硬體為ram與i/o裝置開闢一條直接傳送資料的通路,使cpu的效率大為提高。 編輯

dma技術的出現,使得外圍裝置可以通過dma控制器直接訪問記憶體,與此同時,cpu可以繼續執行程式.那麼dma控制器與cpu怎樣分時使用記憶體呢?通常採用以下三種方法:(1)停止cpu訪記憶體;(2)週期挪用;(3)dma與cpu交替訪問記憶體.

當外圍裝置要求傳送一批資料時,由dma控制器發乙個停止訊號給cpu,要求cpu放棄對位址匯流排、資料匯流排和有關控制匯流排的使用權.dma控制器獲得匯流排控制權以後,開始進行資料傳送.在一批資料傳送完畢後,dma控制器通知cpu可以使用記憶體,並把匯流排控制權交還給cpu.圖(a)是這種傳送方式的時間圖.很顯然,在這種dma傳送過程中,cpu基本處於不工作狀態或者說保持狀態.

優點: 控制簡單,它適用於資料傳輸率很高的裝置進行成組傳送。

缺點: 在dma控制器訪內階段,記憶體的效能沒有充分發揮,相當一部分記憶體工作週期是空閒的。這是因為,外圍裝置傳送兩個資料之間的間隔一般總是大於記憶體儲存週期,即使高速i/o裝置也是如此。例如,軟盤讀出乙個8位二進位制數大約需要32us,而半導體記憶體的儲存週期小於0.5us,因此許多空閒的儲存週期不能被cpu利用.

當i/o裝置沒有dma請求時,cpu按程式要求訪問記憶體;一旦i/o裝置有dma請求,則由i/o裝置挪用乙個或幾個記憶體週期。

這種傳送方式的時間圖如下圖(b):

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裝置讀寫週期大於記憶體儲存週期的情況。

如果cpu的工作週期比記憶體訪問周期長很多,此時採用交替訪內的方法可以使dma傳送和cpu同時發揮最高的效率。

這種傳送方式的時間圖如下:

此圖是dma與cpu交替訪內的詳細時間圖.假設cpu工作週期為1.2us,記憶體訪問週期小於0.6us,那麼乙個cpu週期可分為c1和c2兩個分週期,其中c1專供dma控制器訪內,c2專供cpu訪內。

這種方式不需要匯流排使用權的申請、建立和歸還過程,匯流排使用權是通過c1和c2分時制的。cpu和dma控制器各自有自己的訪內位址暫存器、資料暫存器和讀/寫訊號等控制暫存器。在c1週期中,如果dma控制器有訪內請求,可將位址、資料等訊號送到匯流排上。在c2週期中,如cpu有訪內請求,同樣傳送位址、資料等訊號。事實上,對於匯流排,這是用c1,c2控制的乙個多路

轉換器,這種匯流排控制權的轉移幾乎不需要什麼時間,所以對dma傳送來講效率是很高的。

這種傳送方式又稱為「透明的dma」方式,其來由是這種dma傳送對cpu來說,如同透明的玻璃一般,沒有任何感覺或影響。在透明的dma方式下工作,cpu既不停止主程式的執行,也不進入等待狀態,是一種高效率的工作方式。當然,相應的硬體邏輯也就更加複雜。

詞條圖冊

計算機 DMA原理1

工作拖延,反而可以被重新排程去處理其他的工作。dma 演算法和網路是很重要的。在實現dma傳輸時,是由dma控制器直接掌管匯流排,因此,存在著乙個匯流排控制權轉移問題。即dma傳輸前,cpu要把匯流排控制權交給dma控制器,而在結束dma傳輸後,dma控制器應立即把匯流排控制權再交回給cpu。1 乙...

計算機組成原理 DMA訪問方式

高速大容量儲存器和主存之間交換時,若採用程式直接傳送或程式中斷傳送的方式,則會有如下問題發生。1 採用程式直接傳送,主機工作效率受到限制。2 採用中斷控制資料傳送可以提高主機效率,但用於高速外設和主機交換資訊,會使主機處於頻繁的中斷與返回過程中,從而加重了與中斷有關的額外負擔 即保護舊現場,恢復新現...

計算機原理

關於 深入理解計算機系統 老趙的這一番話,深深的觸動了我,確實,這本書用怎麼說呢,並不是深入,而是涉及的知識比較廣,但又都是廣大程式猿不得不知道的知識,下面我們就來慢慢品嚐這本書吧。工作之餘,學習學習,總是好的。言歸正傳,接下來,享讀 computer systems a programmer s ...