概述
輸入輸出(I/O)系統作為計算機重要組成部分,其重要性也不言而喻。在面試中我們也常常遇到關於該部分的的面試題,下邊讓我一起從系統結構角度來學習一下 I/O系統。
I/O 的組成與功能
要學習 I/O 系統,我們首先要知道什么是 I/O 系統,首先我們給出 I/O 系統的學術定義,
概念 I/O 系統,英文全稱為“Input output system”,中文全稱為“輸入輸出系統”,包括 I/O 設備,設備控制器及 I/O 有關軟硬件,是計算機系統的重要組成部分。在計算機系統中,通常把處理器和主存儲器之外的部分稱為輸入輸出系統。
學術定義比較枯燥,我們舉一個簡單例子來幫助大家理解。以打印機為例,打印機設備、連接線、驅動程序等整體便可以算作一個 I/O系統。
I/O系統 的主要功能是:對指定外設進行 I/O 操作,同時完成許多其他的控制。包括:外設編址,數據通路的建立,向主機提供外設的狀態信息等。
I/O 系統的控制方式
為了有效地實現物理 I/O 操作,必須通過硬件和軟件技術,對 CPU 和 I/O 設備的職能進行合理的分工,以調節系統性能和硬件成本之間的矛盾。按照 I/O 控制器功能的強弱以及和 CPU 之間聯系方式的不同,可以把 I/O 設備的控制方式分為五類:
- 程序控制
- 中斷方式
- DMA 方式
- CH(通道)方式
- PPU 方式
下邊我們分五個小專題來對這五種方式來進行講解。
程序控制方式
首先,我們能想到的,當然也是最容易的控制方式毫無疑問肯定是程序控制方式。程序控制方式由用戶進程直接控制主存或 CPU 和外圍設備之間的信息傳送。直接程序控制方式又稱為詢問方式,或忙/等待方式。通過 I/O 指令或詢問指令測試 I/O 設備的忙/閑標志位,決定主存與外圍設備之間是否交換一個字符或一個字。其整個過程的時序圖如下所示:

程序在執行到 IO 操作時,會以一定周期查詢 IO 設備的狀態標志位,如果處於”忙狀態“程序會等待一個周期后,再次進行查詢,直到 IO 設備變為“閑狀態”。整個過程的流程圖如下所示:

直接程序控制方式雖然簡單,不需要多少硬件的支持,但由於高速的 CPU 和低速的 I/O 設備之間的速度上不匹配,因此,CPU 與外圍設備只能串行工作,使 CPU 的絕大部分時間都處於等待是否完成 I/O 操作的循環測試中,造成 CPU 的極大浪費,外圍設備也不能得到合理的使用,整個系統的效率很低。因此,這種 I/O 控制方式只適合於 CPU 執行速度較慢,且外圍設備較少的系統。
中斷方式
為了減少程序直接控制方式下 CPU 的等待時間以及提高系統的並行程度,系統引入了中斷機制。中斷機制引入后,在需要 I/O 服務時才中斷 CPU 的現行工作,轉去執行 I/O 服務。在 I/O 設備輸入每個數據的過程中,由於無需 CPU 的干預,一定程度上實現了 CPU 與 I/O 設備的並行工作。僅當輸入或輸出完一個數據時,才需 CPU 花費極短的時間做中斷處理。

雖然說中斷方式在一定程度上,提高了 CPU 的利用率,由於 I/O 操作直接由 CPU 控制,每傳送一個字符或一個字,都要發生一次中斷,仍然占用了大量的 CPU 處理時間。
我們可以看到,上邊兩種方式本質上還是以 CPU 為中心,所有數據的 IO 操作都需要 CPU 來控制,CPU 的利用率仍然不是很高,為了進一步提高 CPU 利用率,盡量多的讓 CPU 專注於運算工作,減少 IO 任務對 CPU 的干擾,人們又提出了下邊三種方式。
DMA 方式
DMA(Direct Memory Access)方式,或者說直接存儲器訪問控制方式,該種方式下,在 DMA 控制器的控制下,采用竊取或挪用總線控制權,在設備和主存之間開辟直接數據交換通道,成批地交換數據,而不必讓 CPU 干預。

DMA方式 直接依靠硬件在主存與 I/O 設備間進行直接的數據傳遞,在傳遞期不需 CPU 干預。但是注意,雖然好多 IO 操作由 DMA 控制器完成,但是由於 DMA 方式沒有自己的指令集,IO 指令的編碼譯碼工作仍然需要由 CPU 參與。
它具有如下特點:
- 對於高速外設可在很大程度上解放了 CPU(數據傳送時,無須 CPU 干預)
- 接口電路復雜
- 僅屬於初步解放 CPU
- 交換數據時靈活性差。
通道(CH)方式
通道,獨立於 CPU 的專門負責輸入輸出控制的處理機,它控制設備與內存直接進行數據交換。有自己的通道指令,這些指令由 CPU 啟動,並在操作結束時向 CPU 發出中斷信號。
通道控制方式,實現了 CPU、通道和 I/O 設備三者的並行操作,從而更加有效地提高整個系統的資源利用率。例如,當 CPU 要完成一組相關的讀(或寫)操作時,只需要向 I/O 通道發出一條 I/O 指令,指出其所要執行的通道程序的首址和要訪問的 I/O 設備,通道接收到該指令后,通過執行通道程序便可完成 CPU 指定的 I/O 任務。可見,通道只是在 I/O 操作的起始和結束時向 CPU 發出 I/O 中斷申請,相對於之前的控制方式進一步減少了 CPU 的干預程度。
但是通道方式也有自己的不足,它雖然有自己的指令系統,但是通道指令功能簡單,使用面窄,與 CPU 共用一個主存,還不是獨立的 I/O 處理機。
外圍處理機方式(PPU)
用一個功能較弱的計算機管理 I/O,徹底解放 CPU,硬件結構最復雜。這個方式下,IO 操作幾乎全部由外圍處理機來完成,此時外圍處理機類似一個小型 PC。
總結
最后我們用一個表格來總結一下這五種 IO 控制方式的特點:
| 控制方式 | 特點 |
|---|---|
| 直接程序控制方式 | ①接口電路簡單,控制方便 ②對 CPU 的利用率不充分 |
| 中斷方式 | ①對於中低速外設,可極大地提高對CPU的利用率. ②接口電路較復雜 ③ 對高速外設有可能降低對 CPU 的利用率。 |
| DMA 方式 | ①對於高速外設可在很大程度上解放了 CPU(數據傳送時,無須 CPU 干預) ②接口電路復雜 ③僅屬於初步解放 CPU ④交換數據時靈活性差。 |
| 通道方式 | ①有自己的指令系統(CH 指令)和程序(CH 程序)。 ②執行通道程序時可與 CPU 的運行同時進行——並行性。 ③通道指令功能簡單,使用面窄,與 CPU 共用一個主存,還不是獨立的 I/O 處理機。 |
| 外圍處理機方式 | ①獨立於主機工作,結構接近 CPU,承擔控制、通信、維護診斷等任務。 ②結構復雜成本高 |
