DMA(Direct Memory Access)直接存儲器存取
高速大容量存儲器和主存之間交換時,若采用程序直接傳送或程序中斷傳送的方式,則會有如下問題發生。
1)采用程序直接傳送,主機工作效率受到限制。
2)采用中斷控制數據傳送可以提高主機效率,但用於高速外設和主機交換信息,會使主機處於頻繁的中斷與返回過程中,從而加重了與中斷有關的額外負擔(即保護舊現場,恢復新現場),這樣降低了CPU的性能,還有丟失數據的可能。
DMA是l/O設備與主存之間由硬件組成的直接數據通路,主要用於高速I/O設備與主存之間的成組數據傳送。
數據傳送時是在DMA控制器控制下進行的,由DMA控制器給出當前正在傳送的數據字的主存地址,並統計傳送數據的個數以確定一組數據的傳送是否已結束。在主存中要開辟連續地址的專用緩沖器,用來提供或接收傳送的數據。在數據傳送之前和結束后要通過程序或中斷方式對緩沖器和DMA控制器進行預處理和后處理。
對磁盤的讀寫是以數據塊為單位進行的,一旦找到數據塊的起始位置就將連續地讀寫。
一、DMA控制器
主要功能:

組成:
DMA控制器包括多個設備寄存器、中斷控制和DMA控制邏輯等。主要的寄存器有:
(1)主存地址寄存器(MAR):存放要交換數據的主存地址
(2)外圍設備地址寄存器(ADR):存放I/O設備的設備碼,或者表示設備信息存儲區的尋址信息。
(3)字數計數器(WC):對傳送數據的總字數進行統計。
(4)控制與狀態寄存器(CSR):用來存放控制字和狀態字。
(5)數據緩沖寄存器(DBR):暫存每次傳送的數據。
二、DMA傳送過程
DMA的數據傳送過程可分為三個階段:
DMA預處理
DMA數據傳送
DMA傳送后處理

在上面數據傳送的過程中,CPU和DMA控制器訪問主存時可能會產生沖突 ,爭奪總線的訪問權。那么應該如何安排CPU和DMA的訪存?
三、DMA傳送方式

四、DMA方式特點

五、DMA方式與中斷方式比較

用一道例題來分析這兩種方式對CPU的占用情況。


使用DMA方式雖然預處理和后處理所占用的時鍾周期開銷比較大,但是由於傳送的數據塊比較大,一秒內需要CPU管理的次數就比較少,綜合起來就是占用CPU時間的百分比比較小。
而中斷方式,雖然一次中斷所占用的時間比DMA預處理和后處理所占用時間小,但一次中斷傳送的數據量小,一秒內需要CPU管理的次數就比較多,所以占用CPU時間的百分比就比較大了。
對於該題,需要知道的是中斷方式下,CPU用於訪問外設的時間響應中斷服務的時間開銷;而DMA方式下,CPU用於訪問外設的時間是DMA預處理和后處理的時間開銷,數據傳輸的工作交給了CPU去執行。
六、總結

