輸入輸出的控制方式
I/O(輸入/輸出)設備的控制方式是電腦系統中處理週邊設備與主記憶體間資料傳輸的重要機制。其目標是盡量減少CPU對I/O操作的干預,進而提高CPU利用率和系統整體效率。常見的I/O控制方式主要有以下四種:
- 直接程式控制方式
- 中斷驅動控制方式
- 直接記憶體存取(DMA)控制方式
- 頻道控制方式
直接程式控制方式
原理
- 直接程式控制是最基本的 I/O 方式,CPU 透過執行輸入/輸出指令直接控制週邊設備。
- CPU 會通過輪詢(Polling)的方式,不斷檢查設備的狀態(忙/閒標誌位),決定是否進行資料傳輸。
流程
- CPU 傳送指令,檢查 I/O 設備的狀態(如是否忙碌)。
- 如果設備準備就緒(不忙),則進行資料傳輸(一個位元組或一個資料塊)。
- 重複以上步驟,直到所有資料傳輸完成。
優缺點
- 優點:
- 實作簡單,不需要複雜的硬體支援。
- 缺點:
- 效率低:CPU 必須等待週邊設備完成操作,造成浪費。
- 適用範圍有限:適合簡單、小型系統(CPU 和 I/O 速度差異較小的場景)。
應用情境:適用於早期電腦系統或微控制器(MCU)等簡單設備。
中斷驅動控制方式
原理
- 中斷驅動控制方式引入了中斷機制,外圍設備在需要 CPU 處理時,會向 CPU 發出中斷請求(Interrupt Request,IRQ)。
- CPU 可以並行處理其他任務,只有在接收到中斷訊號時,才暫停目前任務,轉而處理 I/O 作業。
流程
- CPU 發出 I/O 請求後繼續執行其他任務,而不是等待。
- 週邊設備在準備好或完成操作時向 CPU 發出中斷訊號。
- CPU 回應中斷,保存目前上下文,並執行中斷處理程序完成資料傳輸。
- 完成 I/O 作業後,CPU 恢復原有任務。
優缺點
- 優點:
- 提高了 CPU 使用率,因為 CPU 不再需要輪詢設備狀態。
- 適合中等速度的 I/O 設備。
- 缺點:
- 中斷頻繁:每次傳輸一個資料位元組或字元都會觸發一次中斷,增加了 CPU 的中斷處理開銷。
- 為減少中斷次數,可透過增加緩衝區來緩解。
應用場景:常見於鍵盤輸入、滑鼠操作、低速串口通訊等。
直接記憶體存取(DMA)控制方式
原理
- DMA(Direct Memory Access)方式透過DMA控制器,在 CPU 與主記憶體之間建立直接的資料傳輸通道。
- DMA 控制器接管 CPU 的部分功能,負責在裝置與主記憶體之間直接傳輸數據,CPU 只需在傳輸開始和結束時進行幹預。
流程
- CPU 向 DMA 控制器發送命令,指定資料來源位址、目標位址和傳輸長度。
- DMA 控制器接手匯流排控制權,執行資料傳輸,CPU 可以繼續處理其他任務。
- 傳輸完成後,DMA 控制器透過中斷通知 CPU 結束操作。
組成
- 指令/狀態暫存器(CR):存放指令或裝置狀態資訊。
- 記憶體位址暫存器(MAR):存放傳輸資料的目標/來源位址。
- 資料暫存器(DR):用於暫存資料。
- 資料計數器(DC):記錄剩餘傳輸的位元組數。
優缺點
- 優點:
- 高效率:適合高速設備的大量資料傳輸,減少 CPU 負擔。
- 缺點:
- 功能較單一,無法處理複雜的 I/O 任務。
應用場景:高速硬碟資料傳輸、顯示卡視訊資料傳輸、網路裝置等。
頻道控制方式
原理
- 通道控制方式透過引入I/O 通道(Channel),實現 I/O 操作的進一步並行化。
- I/O 通道可以管理多個設備,並自主執行資料傳輸任務,減少了 CPU 的直接參與。
流程
- CPU 透過作業系統向通道發送啟動指令,並將 I/O 請求訊息和通道程式的位址傳遞給通道。
- 通道讀取通道程式(包含一系列 I/O 操作指令),控制設備進行資料傳輸。
- 傳輸完成後,通道向 CPU 發出中斷訊號,通知任務結束。
通道指令格式
- 指令碼:指定操作類型(讀取、寫入等)。
- 資料主存位址:資料傳輸的目標/來源位址。
- 傳輸位元組數:要傳輸的位元組數量。
優缺點
- 優點:
- 高度並行化:實現 CPU、通道和設備的平行工作,減少 CPU 介入。
- 適合多設備和複雜任務的管理。
- 缺點:
- 設計複雜,硬體成本較高。
應用場景:大型電腦、伺服器等需要高效率資料傳輸的場景。
總結與對比
控制方式 | 優點 | 缺點 | 適用場景 |
---|---|---|---|
直接程式控制 | 實現簡單、硬體需求低 | CPU 效率低、設備使用率低 | 簡單系統、低速設備 |
中斷驅動控制 | 提高 CPU 使用率 | 頻繁中斷會影響系統效能 | 鍵盤、滑鼠、串列通訊等 |
直接記憶體存取 | 高效率、適合大量高速資料傳輸 | 無法處理複雜任務 | 硬碟、顯示卡、網路設備等 |
通道控制 | 高度並行化、適合複雜任務 | 硬體複雜、設計成本高 | 大型電腦、多任務系統 |