高速大容量存儲器和主存之間交換時,若採用程序直接傳送或程序中斷傳送的方式,則會有以下問題發生。
1)採用程序直接傳送,主機工做效率受到限制。
2)採用中斷控制數據傳送能夠提升主機效率,但用於高速外設和主機交換信息,會使主機處於頻繁的中斷與返回過程當中,從而加劇了與中斷有關的額外負擔(即保護舊現場,恢復新現場),這樣下降了CPU的性能,還有丟失數據的可能。性能
DMA是l/O設備與主存之間由硬件組成的直接數據通路,主要用於高速I/O設備與主存之間的成組數據傳送。
數據傳送時是在DMA控制器控制下進行的,由DMA控制器給出當前正在傳送的數據字的主存地址,並統計傳送數據的個數以肯定一組數據的傳送是否已結束。在主存中要開闢連續地址的專用緩衝器,用來提供或接收傳送的數據。在數據傳送以前和結束後要經過程序或中斷方式對緩衝器和DMA控制器進行預處理和後處理。
對磁盤的讀寫是以數據塊爲單位進行的,一旦找到數據塊的起始位置就將連續地讀寫。
3d
DMA控制器包括多個設備寄存器、中斷控制和DMA控制邏輯等。主要的寄存器有:
(1)主存地址寄存器(MAR):存放要交換數據的主存地址
(2)外圍設備地址寄存器(ADR):存放I/O設備的設備碼,或者表示設備信息存儲區的尋址信息。
(3)字數計數器(WC):對傳送數據的總字數進行統計。
(4)控制與狀態寄存器(CSR):用來存放控制字和狀態字。
(5)數據緩衝寄存器(DBR):暫存每次傳送的數據。
blog
DMA的數據傳送過程可分爲三個階段:效率
DMA預處理
DMA數據傳送
DMA傳送後處理硬件
在上面數據傳送的過程當中,CPU和DMA控制器訪問主存時可能會產生衝突 ,爭奪總線的訪問權。那麼應該如何安排CPU和DMA的訪存?程序
用一道例題來分析這兩種方式對CPU的佔用狀況。im
使用DMA方式雖然預處理和後處理所佔用的時鐘週期開銷比較大,可是因爲傳送的數據塊比較大,一秒內須要CPU管理的次數就比較少,綜合起來就是佔用CPU時間的百分比比較小。d3
而中斷方式,雖然一次中斷所佔用的時間比DMA預處理和後處理所佔用時間小,但一次中斷傳送的數據量小,一秒內須要CPU管理的次數就比較多,因此佔用CPU時間的百分比就比較大了。統計