DMA copy和CPU copy

DMA(Direct Memory Access)
直接內存訪問,是一種無需CPU的參與就可以讓外設與系統內存之間進行雙向數據傳輸的硬件機制。使用DMA可以使系統CPU從實際的I/O數據傳輸過程中擺脫出來,從而大大提高系統的吞吐率。DMA方式的數據傳輸由DMA控制器(DMAC)控制,在傳輸期間,CPU可以併發的執行其他任務。當DMA結束後,DMAC通過中斷通知CPU數據傳輸已經結束,由CPU執行相應的中斷服務程序進行後續處理。
 

 

與CPU copy的區別
當程序或者操作者對CPU發出指令,這些指令和數據暫存在內存裏,在CPU空閒時傳送給CPU,CPU處理後把結果輸出到輸出設備上,輸出設備就是顯示器,打印機等。在沒有顯示完之前,這些數據也保存在內存裏,如果內存不足,那麼系統自動從硬盤上劃分一部分空間作爲虛擬內存來用。但寫入和讀取的速度 跟物理內存差的很遠很遠,所以,在內存不足的時候,會感到機器反應很慢,硬盤一直在響。CPU對數據進行判斷以及邏輯處理,本身不能存儲數據,這時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恢復正常工作狀態。
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章