dma(direct memory access)即直接儲存器訪問,是一種快速傳送資料的機制。
dma是指外部裝置不通過cpu而直接與系統記憶體交換資料的接**術。
要把外設的資料讀入記憶體或把記憶體的資料傳送到外設,一般都要通過cpu控制完成,如cpu程式查詢或中斷方式。利用中斷進行資料傳送,可以大大提高cpu的利用率。
但是採用中斷傳送有它的缺點,對於乙個高速i/o裝置,以及批量交換資料的情況,只能採用dma方式,才能解決效率和速度問題。dma在外設與記憶體間直接進行資料交換,而不通過cpu,這樣資料傳送的速度就取決於儲存器和外設的工作速度。
通常系統的匯流排是由cpu管理的。在dma方式時,就希望cpu把這些匯流排讓出來,即cpu連到這些匯流排上的線處於第三態–高阻狀態,而由dma控制器接管,控制傳送的位元組數,判斷dma是否結束,以及發出dma結束訊號。dma控制器必須有以下功能:
1. 能向cpu發出系統保持(hold)訊號,提出匯流排接管請求;
2. 當cpu發出允許接管訊號後,負責對匯流排的控制,進入dma方式;
3. 能對儲存器定址及能修改位址指標,實現對記憶體的讀寫操作;
4. 能決定本次dma傳送的位元組數,判斷dma傳送是否結束
5. 發出dma結束訊號,使cpu恢復正常工作狀態。
計算機發展到今天,dma已不再用於記憶體到記憶體的資料傳送,因為cpu速度非常快,做這件事,比用dma控制還要快,但要在適配卡和記憶體之間傳送資料,仍然是非dma莫屬。要從適配卡到記憶體傳送資料,dma同時觸發從適配卡讀資料匯流排(即i/o讀操作)和向記憶體寫資料的匯流排。啟用i/o讀操作就是讓適配卡把乙個資料單位(通常是乙個位元組或乙個字)放到pc資料匯流排上,因為此時記憶體寫匯流排也被啟用,資料就被同時從pc匯流排上拷貝到記憶體中。
隨著大規模積體電路技術的發展,dma傳送已不侷限於儲存器與外設間的資訊交換,而可以擴充套件為在儲存器的兩個區域之間,或兩種高速的外設之間進行dma傳送,如圖所示。
dmac是控制儲存器和外部裝置之間直接高速地傳送資料的硬體電路,它應能取代cpu,用硬體完成資料傳送的各項功能。
各種dmac一般都有兩種基本的dma傳送方式:
1. 單位元組方式:每次dma請求只傳送乙個位元組資料,每傳送完乙個位元組,都撤除dma請求訊號,釋放匯流排。
2. 多位元組方式:每次dma請求連續傳送乙個資料塊,待規定長度的資料塊傳送完以後,才撤除dma請求,釋放匯流排。
在dma傳送中,為了使源和目的間的資料傳送取得同步,不同的dmac在操作時都受到外設的請求訊號或準備就緒訊號–ready訊號的限制。
dma控制器可採用哪幾種方式與cpu分時使用記憶體?
直接記憶體訪問(dma)方式是一種完全由硬體執行i/o交換的工作方式。dma控制器從cpu完全接管對匯流排的控制。資料交換不經過cpu,而直接在記憶體和i/o裝置之間進行。dma控制器採用以下三種方式:
①停止cpu訪問記憶體:當外設要求傳送一批資料時,由dma控制器發乙個訊號給cpu。dma控制器獲得匯流排控制權後,開始進行資料傳送。一批資料傳送完畢後,dma控制器通知cpu可以使用記憶體,並把匯流排控制權交還給cpu。
②週期挪用:當i/o裝置沒有 dma請求時,cpu按程式要求訪問記憶體:一旦 i/o裝置有dma請求,則i/o裝置挪用乙個或幾個週期。
③dma與cpu交替訪內:乙個cpu週期可分為2個週期,乙個專供dma控制器訪內,另乙個專供cpu訪內。不需要匯流排使用權的申請、建立和歸還過程。
了解DMA技術
direct memory access 直接儲存器訪問 dma是指外部裝置不通過cpu而直接與系統記憶體交換資料的接 術。要把外設的資料讀入記憶體或把記憶體的資料傳送到外設,一般都要通過cpu控制完成,如cpu程式查詢或中斷方式。利用中斷進行資料傳送,可以大大提高cpu的利用率。但是採用中斷傳送有...
DMA技術介紹
dma方式是一種完全由硬體進行成組資訊傳送的控制方式。具有程式中斷方式的優點,即在資料準備階段,cpu與外設並行工作。dma方式在外設與記憶體之間開闢一條 直接資料通路 資訊傳送不再經過cpu,也就不需要保護 恢復cpu現場等繁瑣操作。這種方式適用於磁碟機 磁帶機等高速裝置大批量資料的傳送,它的硬體...
linux記憶體管理 之 DMA
1 dma 直接記憶體訪問 用於在主存貯器和裝置記憶體之間的大量資料的交換,無須cpu參與,可以提高系統效率。2 核心中的dma層 3 dma的位址 dma addr t 4 dma set mask 查詢dma定址範圍 5 dma對映 a 一致性dma對映 static inline void d...