#42003/1/8 22:44:53
从网上找来的:
------------------------------------------------------------------------------------------------------------------------
DMA 通道
DMA 代表 'Direct Memory Access'(直接內存訪問). 就是允許設備從 CPU 手中接管系統總線, 并直接把數據傳送到主內存. 通常 CPU 分兩步來傳送數據: 1. 從設備的 I/O 存儲空間讀數據, 把數據放在 CPU 內部. 2. CPU 把數據從其內部送到主內存. DMA 方式通常用一步就可把數據從設備直接送到主內存. 設備硬件必須內置有這種能力并不是所有的設備都可以使用 DMA 的. 從 DMA 傳輸占用系統總線開始的傳輸過程中 CPU 就不做什麼了.
當一個設備試圖進行 DMA 時, 它會發出一個請求(用改變總線的 DMA 請求連線的電平的方式). DMA 請求也可以用中斷的方式來實現, 但會有一定的延時, 所以為了快速, 就用一種特殊類型的中斷 'DMA-請求' 來實現. 象中斷一樣, 把 'DMA-請求線' 編號來識別是哪個設備發出的請求. 這些編號就叫 DMA-通道. 因為 DMA 傳輸使用系統總線(同一時間只能有一個使用), 所以它們實際上用同一個通道, 編號主要用來識別誰在使用通道. 主板上的硬件寄存器紀錄各通道的當前狀態. 要發出一個 DMA 請求, 設備必須知道自己的 DMA 通道號, 通道號由物理設備存儲在自己內部.