DMA技術介紹

2021-10-06 18:01:51 字數 2728 閱讀 1509

dma方式是一種完全由硬體進行成組資訊傳送的控制方式。具有程式中斷方式的優點,即在資料準備階段,cpu與外設並行工作。dma方式在外設與記憶體之間開闢一條「直接資料通路」,資訊傳送不再經過cpu,也就不需要保護、恢復cpu現場等繁瑣操作。

這種方式適用於磁碟機、磁帶機等高速裝置大批量資料的傳送,它的硬體開銷比較大。在dma方式中,中斷的作用僅限於故障和正常傳送結束時的處理。

主存和dma介面之間有一條直接資料通路。由於dma方式傳送資料不需要經過cpu,因此不必中斷現行程式,i/o與主機並行工作,程式和傳送並行工作。

dma方式具有下列特點:

它使主存與cpu的固定聯絡脫鉤,主存即可被cpu訪問,又可被外設訪問。

在資料塊傳送時,主存位址的確定、傳送資料的計數等都由硬體電路直接實現。

主存中要開闢專用緩衝區,及時供給和接收外設的資料。

dma傳送速度快,cpu和外設並行工作,提高了系統效率。

dma在傳送開始前要通過程式進行預處理,結束後要通過中斷方式進行後處理。

在dma方式中,對資料傳送過程進行控制的硬體稱為dma控制器(dma介面)。當i/o裝置需要進行資料傳送時,通過dma控制器向cpu提出dma傳送請求,cpu響應之後將讓出系統匯流排,由dma控制器接管匯流排進行資料傳送。其主要功能有:

接受外設發生的dma請求,並向cpu發出匯流排請求。

cpu響應此匯流排請求,發出匯流排響應訊號,接管匯流排控制權,進入dma操作週期。

確定傳送資料的主存單元位址及長度,並能自動修改主存位址計數和傳送長度計數。

規定資料在主存和外設間的傳送方向,發生讀寫等控制訊號,執行資料傳送操作。

向cpu報告dma操作的結束。

下圖為乙個簡單的dma控制器。

傳送長度計數器:用來記錄傳送資料的長度,計數溢位時,資料即傳送完畢,自動發中斷請求訊號。

資料緩衝暫存器:用於暫存每次傳送的資料。

dma請求觸發器:每當i/o裝置準備好資料後給出乙個控制訊號,使dma請求觸發器置位。

「控制/狀態」邏輯:由控制和時序電路及狀態標誌組成,用於指定傳送方向,修改傳送引數,並對dma請求訊號和cpu響應訊號進行協調和同步。

中斷機構:當乙個資料塊傳送完成後觸發中斷機構,向cpu提出中斷請求。

在dma傳送過程中,dma控制器將接管cpu的位址匯流排、資料匯流排和控制匯流排,cpu的主存控制訊號被禁止使用。而當dma傳送結束後,將恢復cpu的一切權利並開始執行其操作。由此可見,dma控制器必須具有控制系統匯流排的能力。

主存和dma控制器之間有一條資料通路,因此主存和i/o裝置之間交換資訊時,不通過cpu。但當i/o裝置和cpu同時訪問主存時,可能發生衝突,為了有效地使用主存,dma控制器與cpu通常採用以下3種方法使用主存。

這種方式是當外設需要傳送成組資料時,由dma介面向cpu介面傳送乙個訊號,要求cpu放棄位址線、資料線和有關控制線的使用權,dma介面獲得匯流排控制權後,開始進行資料傳送。在資料傳送結束後,dma接收通知cpu可以使用主存,並把匯流排控制權交還給cpu。在這種傳送過程中,cpu基本處於不工作狀態或保持原始狀態。

這種方式適用於cpu的工作週期比主存訪問周期長的情況。例如,cpu的工作週期是1.2us,主存的訪問週期小於0.6us,那麼可將乙個cpu週期分為c1和c2兩個週期,其中c1專供dma訪存,c2專供cpu訪存。這種方式不需要匯流排使用權的申請、建立和歸還過程,匯流排使用權是通過c1和c2分時控制的。

這種方式是前兩種方式的折中,當i/o裝置沒有dma請求時,cpu按程式的要求訪問主存,一旦i/o裝置有的dma請求,會遇到3種情況。第1種是此時cpu不在訪存(如cpu正在執行乘法指令),故i/o的訪存請求與cpu未發生衝突;第2種是cpu正在訪存,則必須待訪問週期結束後,cpu再將匯流排佔有權讓出;第3種是i/o和cpu同時請求記憶體,出現了訪存衝突,此刻cpu要暫時放棄匯流排佔有權,由i/o裝置挪用乙個或幾個訪問週期。

dma的資料處理過程分為預處理、資料傳送和後處理3個階段。

由cpu完成一些必要的準備工作。首先,cpu執行幾條i/o指令,用以測試i/o裝置狀態,向dma控制器的有關暫存器置初值、設定傳送方向、啟動該裝置等。然後,cpu繼續執行原來的程式,直到i/o裝置準備好傳送的資料(輸入情況)或接收的資料(輸出情況)時,i/o裝置向dma控制器傳送dma請求,再由dma控制器向cpu傳送匯流排請求(有時將這兩個過程統稱為dma請求),用以傳輸資料。

dma的資料傳送可以以單位元組(或字)為基本單位,也可以以資料塊為基本單位。對於以資料塊為單位的傳送(如硬碟),dma占用匯流排後的資料輸入和輸出操作都是通過迴圈來實現的。需要指出的是,這一迴圈也是由dma控制器(而不是通過cpu執行程式)實現的,也就是說,資料傳送階段是完全由dma(硬體)來控制的。

dma控制器向cpu傳送中斷請求,cpu執行中斷服務程式做dma結束處理,包括校驗送入主存的資料是否正確、測試傳送過程中是否出錯(錯誤則轉入診斷程式)和決定是否繼續使用dma傳送其他資料塊等。dma的傳送流程如圖:

dma方式和中斷方式的重要區別如下:

中斷方式是程式的切換,需要保護和恢復現場;而dma方式除了預處理和後處理,其他時候不占用cpu的任何資源。

對中斷請求的響應只能發生在每條指令執行完畢時(即指令的執行週期之後);而對dma請求的響應可以發生在每個機器週期結束時(在取指週期、間址週期、執行週期之後均可),只要cpu不占用匯流排就可以被響應。

中斷傳送過程需要cpu的干預;而dma傳送過程中不需要cpu的干預,故資料傳輸速率非常高,適合於高速外設的成組資料傳送。

dma請求的優先順序高於中斷請求。

中斷方式具有對異常事件的處理能力,而dma方式僅限於傳送資料塊的i/o操作。

從資料傳送來看,中斷方式靠程式傳送,dma方式靠硬體傳送。

了解DMA技術

direct memory access 直接儲存器訪問 dma是指外部裝置不通過cpu而直接與系統記憶體交換資料的接 術。要把外設的資料讀入記憶體或把記憶體的資料傳送到外設,一般都要通過cpu控制完成,如cpu程式查詢或中斷方式。利用中斷進行資料傳送,可以大大提高cpu的利用率。但是採用中斷傳送有...

記憶體直讀技術DMA

dma direct memory access 即直接儲存器訪問,是一種快速傳送資料的機制。dma是指外部裝置不通過cpu而直接與系統記憶體交換資料的接 術。要把外設的資料讀入記憶體或把記憶體的資料傳送到外設,一般都要通過cpu控制完成,如cpu程式查詢或中斷方式。利用中斷進行資料傳送,可以大大提...

PCIE的DMA和PIO介紹

轉至 在pcie中有兩種資料傳輸方式 dma direct memory access 直接記憶體訪問,在該模式下,資料傳送不是由cpu負責處理,而是由乙個特殊的處理器dma控制器來完成,因此占用極少的cpu資源。所以,總的來說,使用dma模式時,計算機的執行速度會比使用pio模式快很多。在xili...