定義
計算機與外設之間進行數據傳送有三種基本控制方式:查詢方式、中斷方式和DMA方式。其中前兩種方式都是以字(節)為傳送單位。而DMA屬於批量數據傳送方式。批量數據傳送是指記憶體與外存之間成批的傳送數據,而不需要CPU的干預,這也是批量數據傳送方式出現主要動力。在計算機中,CPU資源是十分寶貴的,而CPU與外設運行速度不在一個數量級,因此,在 I/O 控制方式的整個發展過程中,始終貫穿著這樣一條宗旨,即儘量減少主機對 I/O 控制的干預,把主機從繁雜的 I/O 控制事務中解脫出來,以便更多地去完成數據處理任務,提高系統效率。
數據傳送方式
傳送方式
DMA傳送方式是在存儲器和外設之間、存儲器和存儲器之間直接進行數據傳送(如磁碟與記憶體間交換數據、高速數據採集、記憶體和記憶體間的高速數據塊傳送等),傳送過程無需CPU介入,這樣,在傳送時就不必進行保護現場等一系列額外操作,傳輸速度基本取決於存儲器和外設的速度。DMA傳送方式需要一個專用接口晶片DMA控制器(DMAC)對傳送過程加以控制和管理。進行DMA傳送期間,CPU放棄匯流排控制權,將系統匯流排交由DMAC控制,由DMAC發出地址及讀/寫信號來實現高速數據傳輸。傳送結束後DMAC再將匯流排控制權交還給CPU。一般微處理器都設有用於DMA傳送的聯絡線。
DMAC中主要包括一個控制狀態暫存器、一個地址暫存器和一個位元組計數器,在傳送開始前先要對這些暫存器進行初始化,一旦傳送開始,整個過程便全部由硬體實現,所以數據傳送速率非常高。
DMA數據傳送(以數據輸入為例)按以下步驟進行:
(1)外圍設備發選通脈衝,把輸入數據送入緩衝暫存器,並使DMA請求觸發器置1;
(2)DMA請求觸發器向控制/狀態連線埠發準備就緒信號,同時向DMA控制器發DMA請求信號;
(3)DMA控制器向CPU發出匯流排請求信號(HOLD);
(4)CPU在完成了現行機器周期後,即回響DMA請求,發出匯流排允許(HLDA),並由DMA控制器發出DMA回響信號,使DMA請求觸發器復位。此時,由DMA控制器接管系統匯流排;
(5)DMA控制器發出存儲器地址,並在數據匯流排上給出數據,隨後在讀/寫控制信號線上發出寫的命令;
(6)來自外設的數據被寫入相應存儲單元;
(7)每傳送一個位元組,DMA控制器的地址暫存器加1,從而得到下一個地址,位元組計數器減1。回到(5),傳送下一個數據。如此循環,直到計數器的值為0,數據傳送完畢。
DMA傳送完畢,由DMAC撤消匯流排請求信號,從而結束DMA操作。CPU撤消匯流排允許信號,恢復對匯流排的控制。
通道控制方式
雖然 DMA 方式比起中斷方式來已經顯著地減少了 CPU 的干預,即已由以字(節)為單位的干預減少到以數據塊為單位的干預,但 CPU 每發出一條 I/O 指令,也只能去讀(或寫)一個連續的數據塊。而當我們需要一次去讀多個數據塊且將它們分別傳送到不同的記憶體區域,或者相反時,則須由 CPU 分別發出多條 I/O 指令及進行多次中斷處理才能完成。I/O 通道方式是 DMA 方式的發展, 它可進一步減少 CPU 的干預, 即把對一個數據塊的讀(或寫)為單位的干預減少為對一組數據塊的讀(或寫)及有關的控制和管理為單位的干預。同時,又可實現 CPU、通道和 I/O 設備三者的並行操作,從而更有效地提高整個系統的資源利用率。例如,當 CPU 要完成一組相關的讀(或寫)操作及有關控制時,只需向 I/O 通道傳送一條 I/O 指令,以給出其所要執行的通道程式的首址和要訪問的 I/O 設備,通道接到該指令後,通過執行通道程式便可完成 CPU 指定的 I/O 任務。
查詢傳送
查詢方式
查詢方式是通過執行輸入/輸出查詢程式來完成數據傳送的,工作原理是:當CPU啟動外設工作後,不斷地讀取外設的狀態信息進行測試,查詢外設是否準備就緒,如外設準備好,則可以進行數據傳送;否則,CPU繼續讀取外設的狀態信息進行查詢等待,直到外設準備好。
採用程式查詢方式進行數據傳送時,實際上在外設準備就緒之前,CPU一直處於等待狀態,致使CPU的利用率較低。倘若CPU按這種方式與多個外設傳送數據時,就需要周期性的依次查詢每個外設的狀態,浪費的時間就更多,CPU的利用率就更低。因此,這種方式適合於工作不太繁忙的系統。
中斷傳送方式
中斷傳送方式是指當外設需要與CPU進行信息交換時,由外設向CPU發出請求信號,使CPU暫停正在執行的程式,轉去執行數據的輸入/輸出操作,數據傳送結束後,CPU再繼續執行被暫停的程式。查詢傳送方式是由CPU來查詢外設的狀態,CPU處於主動地位,而外設處於被動地位。中斷傳送方式則是由外設主動向CPU發出請求,等候CPU處理,在沒有發出請求時,CPU和外設都可以獨立進行各自的工作。目前的微處理器都具有中斷功能,而且已經不僅僅局限於數據的輸入/輸出,而是在更多的方面有重要的套用。例如實時控制、故障處理以及BIOS和DOS功能調用等。有關中斷技術的具體內容將在下一節做介紹。
中斷傳送方式的優點是:CPU不必查詢等待,工作效率高,CPU與外設可以並行工作;由於外設具有申請中斷的主動權,故系統實時性比查詢方式要好得多。但採用中斷傳送方式的接口電路相對複雜,而且,每進行一次數據傳送就要中斷一次CPU。CPU每次回響中斷後,都要轉去執行中斷處理程式,都要進行斷點和現場的保護和恢復,浪費了很多CPU的時間。故這種傳送方式一般適合於少量的數據傳送。對於大批量數據的輸入/輸出,可採用高速的直接存儲器存取方式,即DMA方式。