DMA(direct memory access)直接內存訪問

  • DMA 實際上是盜用了總線時間來傳輸數據,而且由於是硬件處理,所以大大加速了數據複製速度!

1. 基本概念

  • 輔存狹義上是平時講的硬盤,準確地說,是外部存儲器(需要通過 I/O 系統與之交換數據,全稱爲輔助存儲設備)。
  • RAM 與 ROM:計算機內存儲器的兩種型號 
    • RAM-RamdomAccessMemory易揮發性隨機存取存儲器,高速存取,讀寫時間相等,且與地址無關,如計算機內存等。
    • ROM-Read Only Memory只讀存儲器。斷電後信息不丟失,如計算機啓動用的 BIOS 芯片。存取速度很低,(較RAM而言)且不能改寫。由於不能改寫信息,不能升級,現已很少使用。
    • ROM 和 RAM 是計算機內存儲器的兩種型號,ROM表示的是隻讀存儲器,即:它只能讀出信息,不能寫入信息,計算機關閉電源後其內的信息仍舊保存,一般用它存儲固定的系統軟件和字庫等。RAM表示的是讀寫存儲器,可其中的任一存儲單元進行讀或寫操作,計算機關閉電源後其內的信息將不在保存,再次開機需要重新裝入,通常用來存放操作系統,各種正在運行的軟件、輸入和輸出數據、中間結果及與外存交換信息等,我們常說的內存主要是指RAM

2. CPU 操作外設:傳統方式與 DMA 方式

一直不明白DMA(直接內存存儲)

  • 傳統方式:CPU 操作外設時,將外設的數據讀到內部寄存器中,再將數據傳送至內存中,之所以還要講數據送到內存,在於 CPU 內部寄存器數量很少,一般都是靠 RAM 來臨時存儲大量的代碼和數據的。 
    • CPU 工作的核心就是一個 PC 指針,PC 指針指向什麼地址,CPU 就會把相應地址處的二進制數據送至內部譯碼器進行譯碼後運行,
    • RAM 是一個臨時存放代碼和數據的地方,CPU 要執行代碼時,就要到內存(RAM)中去取指令。
  • DMA:在現代操作系統中,外設有數據到來時,基本上都採用中斷方式通知CPU,操作系統響應中斷,然後再從外設讀取數據,這時,如果外設的數據比較頻繁,那麼是否每到一個數據都中斷一次呢??這樣 CPU 就非常頻繁地被外調中斷打斷,操作系統在處理中斷時要浪費一定時間,而且 CPU 讀外部 IO 速度也很慢,這樣的話,大量時間被用在了響應中斷上,而去調度其它任務的時間減少,讓人感覺系統響應速度不夠,也會影響外設的數據傳輸速度(如果外設傳輸速度太快,操作系統就有可能丟失部分數據),由此引出 DMA 的機制:

    外設直接將一塊數據放在了 RAM 中,然後再產生一次中斷,這樣操作系統直接將內存中的那塊數據傳給想要獲取這塊數據的一個任務(或者放在內存的另一空閒部分),此時,系統就少了頻繁響應外設中斷的開銷,也少了讀取外設 IO 的時間開銷(讀取 RAM 比讀取外設 IO 要快很多),這就是 DMA 的作用所在!

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