Interrupt Request (IRQ)

當周邊設備將訊號送進電腦的時候, 只能將資料放在暫存佇列中。 但是,計算機內的總管,是如何知道某個佇列裡面有東西待取呢? 計算機並非生物,它沒有知覺。所以,不能夠以敲門、按門鈴等擬人化想像, 來理解計算機取得外部資料的模式。

一個比較接近事實的擬人化想像,是周邊設備 (例如鍵盤) 一旦將資料放進暫存佇列, 就立刻在電腦內部豎起一根旗桿。 而內務總管 (或者說是 CPU) 每隔一定的時間, 就暫時放下她手上正在執行的工作,主動去檢查每個旗桿是否昇起。 如果是昇起的,就表示那旗桿所對應的暫存佇列中有新資料。 那麼她就會去取來,做適當的處理,然後再繼續執行她剛才正在做的事。 因為電腦必需「中斷」她的工作,才能取得周邊設備的資料, 所以這個工作就稱為 中斷 (interrupt)。 周邊設備都要向電腦發出 中斷要求 (interrupt request), 才能讓自己的訊號被電腦讀取。 中斷要求 簡記為 IRQ。

但是電腦的硬體設備是早就設計好的,既不能容許任意多個旗桿, 也不能隨意增減旗桿。 以 Intel 的微處理機 (microprocessor) 為例, 它只提供 16 根旗桿。每根旗桿對應一個暫存佇列。 很明顯地,不同的周邊設備應該使用不同的暫存佇列和 IRQ 旗桿, 否則訊號就會混在一起,後果不堪設想。 換句話說,一台 Intel Inside 的 PC, 最多只能有 16 個周邊裝置。 在 1980 年代,這個數字遠超過當時硬體工程師的想像, 他們認為一部個人電腦不可能需要高達 16 個周邊設備。 以下是這 16 個 IRQ 旗桿,或者說 IRQ 線路 (IRQ Lines) 的編號和通常對應的周邊設備。

IRQ 線路 通 常 用 途
0 系統計時器 (像是打更的,控制電腦內所有動作的同步化)
1 鍵盤
2 系統保留用,將 IRQ 線路導向到 8--15 號線路
3 COM2 (二號序列埠,通常接數據機)
4 COM1 (一號序列埠,通常接滑鼠)
5 LPT2 (二號平行埠,音效卡通常選用此線路)
6 軟碟機
7 LPT1 (一號平行埠,通常接印表機)
8 時鐘
9 無定義
A 無定義
B 無定義 (USB 通常選用此線路)
C PS2 滑鼠
D 保留給輔助微處理機,例如浮點運算輔助晶片
E HDD IDE0 (主要硬碟機)
F HDD IDE1 (次要硬碟機)

當兩種不同的周邊設備不幸選擇了同一條 IRQ 線路來通知電腦它有資料等待讀取, 那麼內務總管想必會糊塗了。通常的後果是,兩種周邊設備之一會和電腦失去聯絡, 就好像沒有安裝一樣。 早年,幾乎每一張介面卡或是周邊設備,都附帶著軟體或是跳接腳 (jumpers) 讓使用者自行調整其對應的 IRQ 線路。 在 1995 年左右公布的「隨插即用」設計規格,或稱 PnP: Plug and Play,大大降低了為 PC 安裝周邊設備的複雜度。 所謂 PnP,簡化來說, 就是讓周邊設備自己發出訊號去和所有其他支援 PnP 設計的周邊設備協商, 找到尚未被佔據的 IRQ 線路。

事實上,要安裝 PC 的周邊設備,除了 IRQ 之外,在硬體層面還牽涉到 DMA 和 Base Memory (IO Ports);在軟體層面上,則牽涉到驅動程式 (driver)。 不過這些課題遠超過我們想要陳述的範圍。

PnP 技術可以協助解決 IRQ 線路衝突的問題,但是如果 IRQ 線路根本不夠用, 那 PnP 也是沒輒的。 如果微處理機的 IRQ 線路不再增加,那麼要解決 IRQ 線路不足這個問題, 目前看起來應該是藉由 USB (Universal Serial Bus) 介面。 USB 使得許多種不需要太快傳輸速度的周邊設備, 例如鍵盤、滑鼠、印表機、數據機、軟碟機、掃瞄機等等 (注意硬碟機不在此列,因為硬碟機需要越快越好的傳輸速度), 可以串聯在一起,而且共用一個 IRQ 線路。 因此,許多 IRQ 線路就可以被省下來了。

課外讀物:
[1] Linux Gazette 提供由 Blancard 所寫的 Introduction to IRQs, DMAs and Base Addresses http://www.linuxgazette.com/issue38/blanchard.html
[2] 由 Lawyer 所寫的 The Linux Plug-and-Play-HOWTO, 雖然是為 Linux 之驅動程式設計師所寫,但不失為瞭解 PnP 技術的門徑 http://http://www.linuxdoc.org/HOWTO/Plug-and-Play-HOWTO.html
[3] USB 協會整理的 USB 答客問 http://www.usb.org/faq.html


[ 發表感想或意見 ] ‧ [ 讀者推薦課外讀物 ]

BCC16 Home Up Chap 0 Chap 1 Chap 2 Chap 3 Chap 4 Chap 5 Chap 6 Chap 7 Chap 8 Chap 9 Chap A Chap B Chap C Chap D Chap E Chap F Copyright Pool User
製作人、
修改記錄
單維彰 (00/09/30) ---