組成
I/O APIC的組成為: 一組24條IRQ線,一張24項的中斷重定向表(Interrupt Redirection Table),可程式
暫存器,通過APIC匯流排傳送和接收APIC信息的一個信息單元。與8259A的IRQ引腳不同,
中斷優先權與引腳號沒有關係: 中斷重定向表中的每一項都有可以被單獨編程以指明
中斷向量和優先權、目標處理器以及選擇處理器的方式。重定向表中的信息用於把每個外部IRQ信號轉換為一條訊息,然後,通過APIC匯流排把訊息傳送給一個或者多個本地APIC單元。
系統中另一個重要的部份為 I/O APIC。系統中最多可擁有 8 個 I/O APIC。它們會收集來自 I/O 裝置的 Interrupt 訊號且在當那些裝置需要 interrupt 時傳送訊息至本機 APIC。每個 I/O APIC 有一個專有的 interrupt 輸入 (或 IRQ) 號碼。Intel 的 I/O APIC 通常有 24 個輸入 -- 其它的可能有多逹 64 個。而且有些機器擁有數個 I/O APIC,每一個分別有自己的輸入號碼,加起來一台機器上會有上百個 IRQ 可供裝置 Interrupt 使用。
然而,系統中若沒有 I/O APIC,那本機 APIC 就只能傳送核間中斷處理核心間的中斷信號。像這樣的狀況下,Windows 2000 會還原使用 8259 PIC 。
作用
CPU內部必須內置APIC單元。Intel多處理規範的核心就是高級
可程式中斷控制器(
Advanced Programmable Interrupt Controllers--APICs)的使用。CPU通過彼此傳送中斷來完成它們之間的通信。通過給中斷附加動作(actions),不同的CPU可以在某種程度上彼此進行控制。每個CPU有自己的APIC(成為那個CPU的本地APIC),並且還有一個I/O APIC來處理由I/O設備引起的中斷,這個I/O APIC是安裝在主機板上的,但每個CPU上的APIC則不可或缺,否則將無法處理多CPU之間的中斷協調。
一條APIC匯流排把"前端"I/O APIC連線到本地APIC。來自
外部設備的IRQ線連線到I/O APIC,因此,相對於本地APIC,I/O APIC起到
路由器的作用。