Local APIC(1)

仕方ないから自分で書くよ。
まず第一回はAPIC。いまどき8259Aなんか使ってると恥ずかしいのは定説。


APICはAdvanced Programmable Interrupt Controller の略で、今どきのx86に付いてる割り込みコントローラ。

PC/AT標準のPIC、8259Aとの大きな違いは、マルチプロセッサ対応しているという点ではないかと思われる。

  • それぞれのプロセッサに割り込みをかけられる
  • プロセッサ間メッセージが定義されている


名前がACPIと似てるが、ACPIはまた全然違うものなので混同しないように!ごっちゃになるときは、「ACPI、ややこしすぎるよ、全然わからん」と覚えよう!


詳細はIA32マニュアル(http://www.intel.com/products/processor/manuals/ ) の 3Aに載ってると思う。日本語にも書いてあるのでそっちでもよい。


さて、APICは CPUに載ってる Local APIC と IOチップに付いてる I/O APIC に分けられるのだが、ここではまずLocal APICについて書いていく。


Local APICの実体は、メモリマップされたレジスタで、これを通じて操作する。
(ちなみにi7 からはx2 APICというのが付いててこれはMSRで操作する)

マップしてあるアドレスの開始位置は、0xfee00000 で、そっからいくらかのレジスタがマップされている。

アドレス開始位置は変更できるらしいが、メモリと被らないように、とか書いてあるのでPCのメモリマップマニア以外はあまり変更はしないほうがよいと思う。

(もうちょっと調べないと書けないので続く(かも))