IRQ ( 中斷請求 ) 是 PC 非常重要的一個功能. 在一般的電腦系統裡. 當裝備需要系統來服務時.有二種方法 :一是 polling. 由 CPU 一直去問裝備是否需要服務. 如果需要時就去服務它. 這很浪費 CPU 的時間. 另一種方法就是 IRQ 法. 當裝備需耍服務時就發出 IRQ. 當系統收到這個 IRQ 時才去服務它. 就樣可大大減小系統的負擔.
IRQ 由中斷控制器 (8259A) 所處理. 每一中斷控制器可處理八個中斷輸入. 現在的系統多由二個中斷控制器來處理. 所以共可以處理十六個中斷. 由 IRQ 0 到 IRQ 15. 但是第二個中斷控制器的輸出需要接到第一個中斷控制器的其中一個輸入. 所以最多只可處理到十五個中斷請求. 而這個被用掉的輸入就是 IRQ 2. 在 ISA bus 增加到 16 bits 時. 因 IRQ 2 不能用了. 所以在 ISA 插槽上就把 IRQ 2 的腳位讓給 IRQ 9 了. 所以可以說 IRQ 9 就是 IRQ 2 了.
中斷控制器有優先順序. 0 最大. 7 最小. 當有二個裝備同時發出 IRQ 時. 就由這個順序來決定誰先被服務. 因 IRQ 2 被當成第二個中斷控制器的輸入. 所以整個中斷請求的順序為 :
EDGE TRIGGER 方式 - 當裝備要發出中斷請求時. 就把 IRQ 的訊號由低拉往高. 8259A 接收到這個訊號表示只有一個中斷請求. 若有二個以上的裝備使用同一個中斷就不能正常工作. 但 PC 系統只有十五個中斷不夠使用. 所以有下面一種方式產生.
LEVEL TRIGGER 方式 - 當裝備要發出中斷請求時.
就把 IRQ 的訊號由低拉往高. 8259A 接收到這個訊號表示有一個中斷請求. 當中斷完成時
IRQ 訊號會被還原成低電位. 若 IRQ 訊號還是在高電位表示有另外一個裝備發出同一個中斷請求.
此方式可由多個裝備共用一個中斷. PCI 的裝備即是使用這種方式.
相關資料 |
連接到相關網站 |
|