直接記憶體存取
维基百科,自由的百科全书
直接記憶體存取 (Direct Memory Access, DMA) 是计算机科学中的一种内存访问技术。它允許某些 電腦 內部的硬體子系統(电脑外设),可以獨立地直接读写系統記憶體,而不需绕道 CPU。在同等程度的CPU负担下,DMA是一种快速的数据传送方式。很多硬體的系統會使用 DMA,包含 硬碟 控制器,繪圖顯示卡,網路卡,和 音效卡。
[编辑] 直接内存存取
DMA 是所有現代電腦的重要特色,他允許不同速度的硬體裝置來溝通,而不需要依於 CPU 的大量 中斷 負載。否則,CPU 需要從 來源 把每一片段的資料複製到 暫存器,然後把他們再次寫回到新的地方。在這個時間中,CPU 對於其他的工作來說就無法使用。
DMA 傳輸重要地將一個記憶體區從一個裝置複製到另外一個。當 CPU 初始化這個傳輸動作,傳輸動作本身是由 DMA 控制器 來實行和完成。典型的例子就是移動一個外部記憶體的區塊到晶片內部更快的記憶體去。像是這樣的操作並沒有讓處理器工作拖延,反而可以被重新排程去處理其他的工作。DMA 傳輸對於高效能 嵌入式系統 演算法和網路是很重要的。
舉個例子,PC ISA DMA 控制器擁有 8 個 DMA 通道,其中的 7 個通道是可以讓 PC 的 CPU 所利用。每一個 DMA 通道有一個 16位元 位址暫存器和一個 16 位元 計數暫存器。要初始化資料傳輸時,裝置驅動程式一起設定 DMA 通道的位址和計數暫存器,以及資料傳輸的方向,讀取或寫入。然後指示 DMA 硬體開始這個傳輸動作。當傳輸結束的時候,裝置就會以中斷的方式通知 CPU。
"分散-收集" (Scatter-gather) DMA 允許在一次單一的 DMA 處理中傳輸資料到多個記憶體區域。相當於把多個簡單的 DMA 要求串在一起。再一次,這個動機是要減輕 CPU 的多次輸出輸入中斷和資料複製任務。
DRQ 意為 DMA 要求;DACK 意為 DMA 確認。這些符號一般在有 DMA 功能的電腦系統硬體概要上可以看到。他們表示了介於 CPU 和 DMA 控制器之間的電子訊號傳輸線路。
[编辑] 參考
- 遠端直接記憶體存取
[编辑] 外部連結
- mmap() 和 DMA, 出自 Linux Device Drivers, 第二版, Alessandro Rubini & Jonathan Corbet
- DMA 和中斷的處理