PIC(Programmable Interrupt Controller)介紹
IRQ是由中斷控制器所處理的,中斷控制器用以連接Device和CPU的重要橋梁,一個Device產生中斷後,需經過中斷控制器的轉發,訊號才能到達CPU。中斷控制器經歷了PIC(Programmable Interrupt Controller可編程中斷控制器)和APIC(Advanced Programmable Interrupt Controller高級可編程中斷控制器)兩個階段。PIC在UP(Uni-processor單處理器)上使用,隨著SMP(Symmetric Multiple Processor對稱式多重處理器)開始使用,APIC已漸漸取代PIC了。
每一個PIC可處理八個中斷輸入,但是現在的系統多半由兩個PIC來處理,所以全部可以處理十六個中斷,由IRQ0~IRQ15,但是第二個PIC的輸出需要接到第一個PIC的其中一個輸入,所以最多只能處理到十五個中斷請求,而這個被用掉的輸入就是IRQ2。
與APIC不同的是,PIC每個IRQ都具有優先權,以IRQ0最高,也就是IRQ編號愈小的擁有愈高的中斷優先權。用於當有兩個Device同時發出IRQ時,就以這個順序來決定誰先被服務。由於IRQ2被當成第二個中斷控制器的輸入,所以整個中斷請求的順序為:
0 , 1 , 2 ( 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 ) , 3 , 4 , 5 , 6 , 7.
一般來說十五個 IRQ 被設定為下列裝備 :
- IRQ 0 : System timer. 系統時間.
- IRQ 1 : Keyboard. 鍵盤.
- IRQ 3 : Com2. 串列埠.
- IRQ 4 : Com1. 串列埠.
- IRQ 5 : Parallel port 2. 並列埠
- IRQ 6 : Floppy Disk. 軟碟機.
- IRQ 7 : Parallel port 1. 並列埠.
- IRQ 8 : Real Time Clock. 時鐘.
- IRQ 9 : INT 0AH
- IRQ 10 : 保留
- IRQ 11 : 保留
- IRQ 12 : PS/2 mouse. 滑鼠.
- IRQ 13 : Coprocessor. 輔助(協)處理器.
- IRQ 14 : Primary IDE. 主 IDE. 如硬碟機.
- IRQ 15 : Secondary IDE. 副 IDE.
還有三個重要暫存器:
- IRR(Interrupt Request Register):中斷請求暫存器,它管八個IRQ訊號,當IRR的某個bit被設為1又沒被遮罩時,則準備將中斷訊號發送給CPU。
ISR(In Service Register):服務中暫存器,在IRR中斷請求發送給CPU後,ISR中對應的bit將被設為1,表示已發送給CPU,但CPU尚未處理完畢。
IMR(Interrupt Mask Register):中斷遮罩暫存器,用於遮罩中斷,當被遮罩後,硬體所發出的中斷將被忽略不管。
ICWs(Initialization Command Word)
ICW1設定中斷觸發方式及主僕模式(20h/A0h)
BIT7-5 | Used by MCS-80/85,此設為0 |
BIT4 | 1 |
BIT3 | 1:Level Trigger 當裝備要發出中斷請求時.就把 IRQ的訊號由低拉往高.8259A 接收到這個訊號表示有一個中斷請求.當中斷完成時 IRQ訊號會被還原成低電位.若 IRQ訊號還是在高電位表示有另外一個裝備發出同一個中斷請求.此方式可由多個裝備共用一個中斷.PCI的裝備即是使用這種方式. 0:Edge Trigger 當裝備要發出中斷請求時.就把 IRQ的訊號由低拉往高.8259A 接收到這個訊號表示只有一個中斷請求.若有二個以上的裝備使用同一個中斷就不能正常工作.但 PC系統只有十五個中斷不夠使用.所以有下面一種方式產生. |
BIT2 | Used by MCS-80/85,此設為0 |
BIT1 | 1:單一模式 0:串接模式 |
BIT0 | 1:8086/8088工作模式 0:8080/8085工作模式 |
ICW2設定對應的中斷向號碼(21h/A1h)
BIT 7-3 | 中斷向量號碼的T7~T3,T2~T0為產生要求之IR端 |
BIT 2-0 | Used by 8080/8085,此設為0 |
ICW3若為PIC Master則設定已連接PIC Slave的IR腳位(21h/A1h)
BIT 7-0 | 1:該IR端接有PIC Slave 0:該IR端未接PIC Slave |
ICW3若為PIC Slave則設定連接至PIC Master的那個IR腳位(21h/A1h)
BIT 7-3 | 0 |
BIT 2-0 | 指示PIC Slave接到PIC Master那個IR上 |
ICW4設定工作模式(21h/A1h)
BIT 7-5 | 0 |
BIT 4 | 1:特殊全巢狀模式 0:非特殊全巢狀模式 |
BIT 3-2 | 0x:非緩衝模式 10:PIC Slave緩衝模式 11:PIC Master緩衝模式 |
BIT 1 | 1:自動EOI(End Of Interrupt) 0:正常EOI |
BIT 0 | 1:8086/8088工作模式 0:8080/8085工作模式 |
OCW1遮罩暫存器(21h)
BIT 7-0 | 1:設定遮罩以禁止中斷 0:清除遮罩以允許中斷 |
OCW2送出EOI命令(20h)
BIT 7-5 | 001:非特定之EOI命令 011:特定之EOI命令 101:非特定的EOI與旋轉命令,用於優先權自動旋轉模式。 100:啟動自動EOI與旋轉命令,用於優先權自動旋轉模式。 000:清除自動EOI與旋轉命令,用於優先權自動旋轉模式。 111:特定的EOI與旋轉命令,用於優先權自動旋轉模式。 110:設定優先權之命令,用於優先權自動旋轉模式。 010:保留 |
BIT 4-3 | 0 |
BIT 2-0 | 指定作用的IR層次 |
OCW3雜項暫存器(20h)
BIT 7 | 保留 |
BIT 6-5 | 0x:保留 10:清除特定遮罩模式 11:設定特定遮罩模式 |
BIT 4 | 0 |
BIT 3 | 1 |
BIT 2 | 1:使用Polling模式 0:取消Polling模式 |
BIT 1-0 | 0x:保留 10:在下一個讀取時脈時讀取IRR 11:在下一個讀取時脈時讀取ISR |
80X86有NMI與INTR兩個硬體中斷輸入接腳,當NMI(Non - Maskable Interrupt)Enable時CPU會執行第二型中斷動作。NMI通常用於parity以及諸如電源斷路之系統錯誤。線路圖如下80x86 CPU共有四種中斷方式;Reset、DMA、NMI、INT,其中以RESET具有較高的優先權,其次才是NMI(不可遮罩中斷),接著是DMA及INT。
NMI(Non Maskable Interrupt不可遮罩中斷)及INT兩者皆屬於硬體中斷。
INT xx及除零中斷(Divid Zero)屬軟體中斷。
輔助資料:http://tw.ic-on-line.cn/IOL/viewpdf/8259A_362922.htm
參考資料:
http://www.csie.ntu.edu.tw/~d4526011/my_book_copy/CHAP1.4.htm
http://www.geocities.com/Tokyo/Towers/6851/irq.htm
http://wwwme.nchu.edu.tw/~neural/3C/sensoring%20data/Chap5.ppt
http://yuat1.cpshs.hcc.edu.tw/~yuat/loxa/ch21.htm
沒有留言:
張貼留言