輸入輸出系統與裝置管理
裝置控制器(a device controller)
想像一間忙碌的餐廳廚房。主廚(CPU)不會親自煎每一顆蛋;每個工作站都有自己的廚師,對那一項工作瞭若指掌。主廚只要喊出一張單,等菜做好時接過盤子就行。裝置控制器就是那個工作站的廚師。它是一塊小而專門的電子電路——往往有自己的小處理器和記憶體——它的全部工作就是操控某一類裝置,並把那些骯髒的實體細節擋在 CPU 之外。
具體來說,控制器位於系統匯流排與真正的裝置之間。它向 CPU 暴露一小組暫存器:CPU 讀取狀態暫存器以得知裝置是閒置、忙碌、完成還是出錯;CPU 寫入控制(命令)暫存器以下令開始讀取、開始寫入或重置;還有一個或多個資料暫存器供位元組通過。一次典型的交換是這樣:CPU 把命令與參數寫進暫存器,控制器自行完成緩慢的實體操作(移動磁碟臂、把位元送上線路),然後回報訊號——可能是設定一個 CPU 可以輪詢的狀態位元,或是發出一個中斷。許多控制器還有內建緩衝區,能先吸收一整個磁區或封包,再來打擾 CPU。
為什麼重要:控制器是某一個特定、古怪的硬體與電腦其餘部分相接的邊界。由於每一類裝置都有自己的控制器、自己的暫存器與怪癖,每一類都需要作業系統裡專屬的軟體助手——裝置驅動程式——它確切知道如何驅動那個控制器。關鍵在於:控制器不等於裝置本身:一個 SATA 控制器可能管理好幾顆磁碟,而且就算磁碟完好,控制器仍可能是故障的一方。
一個 USB 鍵盤控制器監看按鍵矩陣,偵測到你按下了字母 g,把它的掃描碼放進資料暫存器,然後發出中斷。CPU 在這整段時間都在忙別的工作,只在抓取那一個位元組所需的幾微秒裡被打擾。
由控制器負責監看與等待,CPU 就不必親自去做。
不要把控制器和裝置混為一談。作業系統讀寫的暫存器屬於控制器;它背後的碟片、線路或螢幕,只有控制器才真正碰得到。
又称
另见