APIC概要

IA 32 アーキテクチャでは APIC(アドバンスド・プログラマブル割り込みコントローラ)で割り込みを制御する。APIC にはローカル APIC とIO APIC という 2 種類ある。

ローカル APIC

    • プロセッサの割り込みピン、内部ソース、IO APIC からの割り込みを受信し、プロセッサ・コアに送信する。
    • IPI(プロセッサ間割り込み)メッセージの送受信を行う。

IO APICチップセット内にある)

    • IO デバイスからの外部割込みを受信し、割り込みメッセージとしてローカル APIC に中継する。

なお、IPI は自分のローカル APIC の ICR(割り込みコマンドレジスタ)を設定することで、システムバス上に IPI メッセージを作成して発行されるとのこと。

ローカル APIC と IO APIC の関係は、Intel® 64 and IA-32 Architectures Software Developer's Manual によれば、下記のようになるらしい。
http://www.intel.com/products/processor/manuals/index.htm


+------------------+ +------------------+
| | | |
| プロセッサ・コア | | プロセッサ・コア |
| | | |
+------------------+ +------------------+
| ローカル APIC | | ローカル APIC |
+------------------+ +------------------+
^ ^ ^ ^
| | | |
IPI | | 割り込み IPI | | 割り込み
| | メッセージ | | メッセージ
v v v v
---------------------------------------------------------
システムバス
---------------------------------------------------------
^
+------------------------ | ----------------------------+
| v |
| +--------------------------------+ |
| | PCI ブリッジ | |
| +--------------------------------+ |
| ^ |
| | |
| v |
| ----------------------------------------------- |
| PCI バス |
| ----------------------------------------------- |
| ^ |
| | |
| v |
| +--------------------------------+ |
| | | |
| | IO APIC | |
| | | |
| +--------------------------------+ |
| ^ ^ ^ |
| | | | |
+-------------------------------------------------------+
| | |
外部割込み 外部割込み 外部割込み