今さら聞けないマルチプロセッサの基礎教えます ――キャッシュの共有,割り込みの共有,OSによる制御
● プロセッサ間で通信しながら起動
マルチプロセッサ・システムが起動するようすを見てみましょう.ここでは,Xeonマルチプロセッサのブート(起動)処理を取り上げます(2).米国Intel社のIA-32アーキテクチャのCPUは,プロセッサ間で割り込み要求(Interpro-cessor Interrupt;プロセッサ間割り込み)を送受信する ことにより,簡単な通信を行っています.割り込みは「Advanced Programmable Interrupt Controller (APIC)」というマルチプロセッシング対応の割り込みコントローラで処理します注3.
Xeonのデュアルプロセッサ・システムがブートするようすを図4に示します.まず,電源を投入すると(あるいはシステムのリセット直後),各CPUはそれぞれが持つテスト・コードを実行し,「ブート」を示すプロセッサ間割り込みをブロードキャストします.いちばん早く「ブート」を発行したCPUがマスタ・プロセッサとなります.
すべてのCPUが「ブート」を発行したら,マスタ・プロセッサはBIOSを初期化し,「スタートアップ」を示すプロセッサ間割り込みをブロードキャストします.マスタ・プロセッサ以外のCPUは「スタートアップ」を受信してから自分自身のBIOSを初期化します.初期化が終了したらマスタ・プロセッサに通知し,休止(HALT)状態に移行します.すべてのCPUが初期化を終了したら,マスタ・プロセッサはOSのブート処理に入ります.
注3;Pentium IIIコアのころまでは,プロセッサ間のバスとは別に,APIC専用のバスで割り込み要求を処理していた.XeonやPentium 4(Net Burstコア)からは,割り込み要求をバス・トランザクションの一環として処理している.