(57)【要約】【課題】プロセッサのアドレス指定モードを阻害することなくクラスタ化マルチプロセッサシステム内で選択されたアプリケーションプロセッサの実行を開始する方法と装置を提供する。【解決手段】プロセッサを初期設定し、アドレス指定モードを設定し、次いでアクティブモードのプロセッサの各々を指定された開始アドレスロケーションでスピンさせたままにする。アプリケーションプロセッサ１１０，１１２を起動する場合、ＯＳは目的のプロセッサＩＤと所望の開始アドレスを開始アドレスロケーションに書き込むだけでよい。一致するプロセッサＩＤを備えたアプリケーションプロセッサはその開始アドレスロケーションを読み出し、開始アドレスコードセクションに指定されたアドレスにジャンプし、そのロケーションで実行を開始する。【選択図】図７
2007149116.tif 000002
【特許請求の範囲】
【請求項１】
２つ以上のプロセッサであって、該プロセッサのうち１つがオペレーティングシステムを実行するためのブートストラッププロセッサ（ＢＳＰ）として選択され、残りのプロセッサのうち選択されたものがアプリケーションプロセッサ（ＡＰ）として選択され、該アプリケーションプロセッサの各々がそれに関連して事前割当てされた処理モジュールＩＤを有するものと、
処理モジュールＩＤセクションと開始アドレスコードセクションとを含む記憶手段であって、該処理モジュールＩＤセクションの内容が、前記アプリケーションプロセッサの各々が備える比較手段によって前記事前割当てされた処理モジュールＩＤと比較されるものとを備え、
前記オペレーティングシステムは、一致する処理モジュールＩＤを前記記憶手段の前記処理モジュールＩＤセクションに書き込み且つ所望の開始アドレスを前記記憶手段の前記開始アドレスコードセクションに書き込むことで選択された開始アドレスにおいて前記アプリケーションプロセッサのうち１つの実行を開始する手段を含み、前記比較手段による比較結果に従って、前記一致する処理モジュールＩＤを備えた前記アプリケーションプロセッサが前記開始アドレスにジャンプすることを特徴とするマルチプロセッサデータ処理システム。
【請求項２】
前記記憶手段は有効フラグセクションをさらに含み、
前記オペレーティングシステムは、前記アプリケーション処理モジュールの１つの実行を開始するときに前記有効フラグセクションに有効フラグを書き込んで開始アドレスロケーションを有効にする手段を含むことを特徴とする請求項１に記載のマルチプロセッサデータ処理システム。
【請求項３】
前記一致する処理モジュールＩＤを備えた前記アプリケーションプロセッサは、前記開始アドレスにジャンプした後に前記有効フラグセクションをリセットして前記開始アドレスロケーションを無効にする手段を含むことを特徴とする請求項２に記載のマルチプロセッサデータ処理システム。
【請求項４】
マルチプロセッサデータ処理システムであって、
各々がそれに関連した対応する割込みコントローラを有する少なくとも１つの第１の処理モジュールと、第１の階層クラスタ管理装置と、前記少なくとも１つの第１の処理モジュールの前記割込みコントローラと前記第１の階層クラスタ管理装置の間でメッセージを通信するための第１の割込みコントローラバスとを含む第１のクラスタと、
各々が関連したそれに対応する割込みコントローラを有する少なくとも１つの第２の処理モジュールと、第２の階層クラスタ管理装置と、前記少なくとも１つの第２の処理モジュールの前記割込みコントローラと前記第２の階層クラスタ管理装置の間でメッセージを通信するための第２の割込みコントローラバスとを含む第２のクラスタと、
前記第１の階層クラスタ管理装置と前記第２の階層クラスタ管理装置の間でメッセージを提供する手段とを備え、
前記第１および第２の処理モジュールから選択されたものが一区画（partition）に含まれ、
該区画の選択された前記第１および第２の処理モジュールの各々がそれに関連する事前割当てされた処理モジュールＩＤを有し、
該区画の選択された前記第１および第２の処理モジュールのうち一つがオペレーティングシステムを実行するためのブートストラップ処理モジュールであり、該区画の選択された前記第１および第２の処理モジュールのうち残りがアプリケーション処理モジュールであり、
処理モジュールＩＤセクションと有効フラグセクションと開始アドレスコードセクションとを有する記憶空間を備えた記憶手段であって、該処理モジュールＩＤセクションにストアされた前記処理モジュールＩＤが、前記アプリケーションプロセッサの各々が備える比較手段によって前記事前割当てされた処理モジュールＩＤと比較されるものをさらに備え、
前記ブートストラップ処理モジュールは、前記処理モジュールＩＤと一致する処理モジュールＩＤを前記記憶空間の前記処理モジュールＩＤセクションに書き込み且つ所望の開始アドレスを前記記憶空間の前記開始アドレスコードセクションに書き込み且つ開始アドレスロケーションを有効にするための有効フラグを前記記憶空間の前記有効フラグセクションに書き込むことで選択された開始アドレスにおいて前記区画内の前記アプリケーション処理モジュールのうち１つの実行を開始する手段を含み、それによって、前記一致する処理モジュールＩＤを備えた前記アプリケーション処理モジュールが前記記憶空間を読み出し、前記比較手段による比較結果に従って前記開始アドレスにジャンプし、そして前記有効フラグセクションをリセットして前記開始アドレスロケーションを無効にする
ことを特徴とするマルチプロセッサデータ処理システム。
【請求項５】
前記処理モジュールの各々の前記割込みコントローラはＡＰＩＣコントローラであることを特徴とする請求項４に記載のマルチプロセッサデータ処理システム。
【請求項６】
前記第１および第２の割込みコントローラバスはＩＣＣバスであることを特徴とする請求項５に記載のマルチプロセッサデータ処理システム。
【請求項７】
前記メッセージを提供する前記手段はメモリを含むことを特徴とする請求項５に記載のマルチプロセッサデータ処理システム。
【請求項８】
前記メッセージを提供する前記手段はバスを含むことを特徴とする請求項５に記載のマルチプロセッサデータ処理システム。
【請求項９】
前記メッセージを提供する前記手段は中間フォーマットを使用することを特徴とする請求項５に記載のマルチプロセッサデータ処理システム。
【請求項１０】
オペレーティングシステムを実行するブートストラップ処理モジュールと、
各々が一意的なモジュールＩＤをストアするためのＩＤレジスタを含んだ１以上のアプリケーション処理モジュールと、
処理モジュールＩＤセクションと開始アドレスセクションを有しており、該処理モジュールＩＤセクションと該開始アドレスセクションにそれぞれ、前記ブートストラップ処理モジュールから処理モジュールＩＤと開始アドレスが選択的に提供される安全なメモリ領域と
を含むマルチプロセッサデータ処理システムであって、
前記アプリケーション処理モジュールの各々は、前記ＩＤレジスタにストアされた前記一意的なモジュールＩＤを前記安全なメモリ領域の前記処理モジュールＩＤセクションにストアされた前記処理モジュールＩＤと比較する比較手段を有し、
前記アプリケーション処理モジュールの各々はさらに、少なくとも、前記ＩＤレジスタにストアされた前記一意的なモジュールＩＤが前記安全なメモリ領域の前記処理モジュールＩＤセクションにストアされた前記処理モジュールＩＤと一致するときに、前記安全なメモリ領域の前記開始アドレスセクションから前記開始アドレスを読み出す読出し手段を有し、かつ、
前記アプリケーション処理モジュールの各々は、前記読出し手段によって読み出された前記開始アドレスにおいて前記アプリケーション処理モジュールのうち一つの実行を開始するジャンプ手段を有する
ことを特徴とするマルチプロセッサデータ処理システム。
【請求項１１】
前記安全なメモリ領域はさらに有効フラグセクションを有し、
前記ブートストラップ処理モジュールは、前記アプリケーション処理モジュールの１つの実行を開始するときに開始アドレスロケーションを有効にするための有効フラグを前記有効フラグセクションに書き込む手段を含むことを特徴とする請求項１０に記載のマルチプロセッサデータ処理システム。
【請求項１２】
一致する処理モジュールＩＤを備えた前記アプリケーション処理モジュールは、前記開始アドレスにジャンプした後で前記有効フラグセクションをリセットする手段を含むことを特徴とする請求項１１に記載のマルチプロセッサデータ処理システム。
【請求項１３】
オペレーティングシステムを実行するブートストラップ処理モジュールと２以上のアプリケーション処理モジュールを含むマルチプロセッサデータ処理システムの実行を、前記ブートストラップ処理モジュールの制御に従い該システムのメモリ内の所望の開始アドレスにおいて開始する方法において、
一意的な処理モジュールＩＤを前記アプリケーション処理モジュールのうち選択されたものに割り当てるステップと、
所望の処理モジュールＩＤと開始アドレスを記憶空間に提供するステップと、
前記所望の処理モジュールＩＤを選択された前記アプリケーション処理モジュールに割り当てられた前記処理モジュールＩＤと比較するステップと、
該比較結果に従って、一致する処理モジュールＩＤを備えた前記アプリケーション処理モジュールに前記記憶空間から前記開始アドレスを読み出させ、前記メモリ内の前記開始アドレスにジャンプさせるステップと
を含むことを特徴とする方法。
【請求項１４】
前記アプリケーション処理モジュールの各々は、前記所望の処理モジュールＩＤをそれに割り当てられた前記処理モジュールＩＤと比較することを特徴とする請求項１３に記載の方法。
【請求項１５】
前記所望の処理モジュールＩＤと前記開始アドレスは前記ブートストラップ処理モジュールによって提供されることを特徴とする請求項１３に記載の方法。
【請求項１６】
所前記望の処理モジュールＩＤと前記開始アドレスは前記メモリ内の前記記憶空間に提供されることを特徴とする請求項１５に記載の方法。
【請求項１７】
前記アプリケーション処理モジュールの各々は前記メモリ内の前記記憶空間を周期的に読み出し、前記所望の処理モジュールＩＤをそれに割り当てられた前記処理モジュールＩＤと比較することを特徴とする請求項１６に記載の方法。
【請求項１８】
前記アプリケーション処理モジュールに割り当てられた前記処理モジュールＩＤは、該アプリケーション処理モジュール内のレジスタにストアされることを特徴とする請求項１７に記載の方法。
【請求項１９】
前記処理モジュールＩＤと前記アプリケーション処理モジュールの対応関係が構成データに含まれることを特徴とする請求項１８に記載の方法。
【請求項２０】
前記割り当てるステップにおいて前記構成データにアクセスすることを特徴とする請求項１９に記載の方法。
【請求項２１】
メンテナンスコントローラは、割り当てられた前記一意的な処理モジュールＩＤを対応する前記アプリケーション処理モジュールのレジスタにブートルーチン中に書き込むことを特徴とする請求項２０に記載の方法。
【請求項２２】
オペレーティングシステムを実行するブートストラップ処理モジュールと２以上のアプリケーション処理モジュールを含むマルチプロセッサデータ処理システムの実行を、前記ブートストラップ処理モジュールの制御に従い該システムのメモリ内の所望の開始アドレスにおいて開始する方法において、
処理モジュールＩＤを前記アプリケーション処理モジュールの各々に割り当てるステップと、
処理モジュールＩＤセクションと有効フラグセクションと開始アドレスコードセクションとを有する記憶空間を提供するステップと、
所望の処理モジュールＩＤを前記記憶空間の前記処理モジュールＩＤセクションに書き込み、所望の開始アドレスを前記記憶空間の前記開始アドレスコードセクションに書き込み、そして開始アドレスロケーションを有効にするための有効フラグを前記記憶空間の前記有効フラグセクションに書き込むステップと、
前記処理モジュールＩＤセクション内の前記所望の処理モジュールＩＤを前記アプリケーション処理モジュールの各々に割り当てられた前記処理モジュールＩＤと比較するステップと、
該比較結果に従って、一致する処理モジュールＩＤを備えた前記アプリケーション処理モジュールに前記開始アドレスコードセクションから前記開始アドレスを読み出させ、前記メモリ内の前記開始アドレスにジャンプさせ、そして前記有効フラグセクションをリセットして前記開始アドレスロケーションを無効にさせるステップと
を含むことを特徴とする方法。
【請求項２３】
前記アプリケーション処理モジュールの各々は、前記処理モジュールＩＤセクション内の前記処理モジュールＩＤをそれに割り当てられた前記処理モジュールＩＤと比較することを特徴とする請求項２２に記載の方法。
【請求項２４】
ブートストラップ処理モジュールと多数の処理モジュールを有するデータ処理システムをブートする方法であって、処理モジュールの各々が物理アドレス指定モードと論理アドレス指定モードで動作可能な対応するＡＰＩＣコントローラを有し、前記ブートストラップ処理モジュールの制御に従って初期設定のプロセッサ間割込み（init.ipi）の実行によって対応するＡＰＩＣコントローラを物理アドレス指定モードに切り替える方法において、
選択された処理モジュールのためのＡＰＩＣコントローラに初期設定のプロセッサ間割込みを提供し、選択された処理モジュールを物理アドレス指定モードに切り替えるステップ、
選択された処理モジュールのためのＡＰＩＣコントローラに開始プロセッサ間割込み（startup.ipi）を提供して、それらを初期設定手順にベクトル処理するステップであって、該初期設定手順によって、前記選択された処理モジュールの各々にＡＰＩＣ論理ＩＤを割り当て、前記選択された処理モジュールを物理アドレス指定モードから論理アドレス指定モードに切り替え、そして前記選択された処理モジュールの各々を処理モジュールＩＤセクションと開始アドレスコードセクションを有する選択されたメモリ空間上でスピンさせたままにしておくステップ、
前記選択された処理モジュールの各々に、選択されたメモリロケーションの前記処理モジュールＩＤセクションにストアされた処理モジュールＩＤを対応する割り当てられた処理モジュールＩＤと比較させるステップ、および、
該比較結果に従って、一致する処理モジュールＩＤを備えた処理モジュールを開始アドレスにジャンプさせるステップ
を含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマルチプロセッシングデータ処理システムに関し、より詳細に言えば、クラスタ化プロセッサアーキテクチャを有する対称マルチプロセッサデータ処理システムに関する。より詳細に言えば、本発明はそのようなクラスタ化マルチプロセッサシステムをブートし、そのようなシステム内で選択されたアプリケーションプロセッサの実行を開始する方法および装置に関する。
【背景技術】
【０００２】
複数でしかも連係したプロセッサを有するシステムは最初メインフレームコンピュータシステムの分野で開発され使用されてきた。ただし、最近になって、マルチプロセッサの比較的安いコストと高いパフォーマンスを理由として、多数のマイクロプロセッサの並列使用によるメインフレームのパフォーマンスの複製を狙ってマルチプロセッサシステムへの関心が高まってきた。
【０００３】
今日の多くのワークステーションおよびサーバ市場で使用されている対称マルチプロセッシング（「ＳＭＰ」）アーキテクチャを含む様々なアーキテクチャが開発されてきた。ＳＭＰシステムでは、プロセッサはメモリ、大容量記憶装置およびＩ／Ｏなどのすべてのシステムリソースに対称的にアクセスする。
【０００４】
オペレーティングシステムは通常、プロセッサ間のタスクの割当てと調整を処理する。好ましくは、オペレーティングシステムはすべての使用可能なプロセッサ間に比較的均一に作業負荷を分散する。したがって、追加されるプロセッサユニットが増えるにつれて、少なくとも理論的には、多数のＳＭＰシステムのパフォーマンスを向上させることができる。この極めて望ましい設計目標はスケーラビリティと呼ばれる。
【０００５】
多数のマルチプロセッサシステム内の最も重要な設計の課題の１つは割込みのルーティングと処理である。割込みは少なくとも１つのプロセッサに対する注意が必要なある種の状態（condition）がシステム内のどこかに存在することを示すイベントとして一般に説明できる。割込みに応答するプロセッサの動作は普通、割込みの「保守（servicing）」または「処理（handling）」と呼ばれる。各割込みは通常割込みを他の割込みと区別する同一性（identity）を有する。この同一性は、しばしば割込みの「ベクトル」と呼ばれる。ベクトルによって１以上のサービシングプロセッサは割込みの適切なハンドラを見つけることができる。プロセッサが割込みを受け入れる時、プロセッサはベクトルを用いて事前記憶されたテーブル内でハンドラの空きポイントを見つける。
【０００６】
ある種のマルチプロセッサシステムでは、割込みを割込み元から割込み先にルーティングする助けをする中央割込みコントローラが提供される。また別のシステムでは、割込み制御機能がシステム全体に分散される。分散割込み制御アーキテクチャでは、１以上のグローバル割込みコントローラが例えばＩ／Ｏ割込みルーティングなどのグローバルまたはシステムレベルの機能を有することを前提とする。対応する処理装置にそれぞれが関連する多数のローカル割込みコントローラは例えばプロセッサ間割込みなどのようなローカル機能を制御する。両方のクラスの割込みコントローラが通常共通の割込みバス上で通信し、システム内の割込み元から割込み先に割込みを転送（deliver）する責任を共同で負う。
【０００７】
Ｉｎｔｅｌ（登録商標）ＣｏｒｐｏｒａｔｉｏｎではＩｎｔｅｌ（登録商標）ブランドのプロセッサを使用する標準のマルチプロセッサシステムの基本アーキテクチャを概説するマルチプロセッサ（ＭＰ）仕様書（バージョン１．４）を発行している（非特許文献１）。特にＩｎｔｅｌ（登録商標）ブランドのプロセッサを使用する時には、Ｉｎｔｅｌ（登録商標）マルチプロセッサ（ＭＰ）仕様書に準拠することが望ましい。Ｉｎｔｅｌ（登録商標）マルチプロセッサ（ＭＰ）仕様書（バージョン１．４）によると、割込みは１以上のＩｎｔｅｌ（登録商標）製Ａｄｖａｎｃｅｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ（ＡＰＩＣ（登録商標））を用いてルーティングされる。ＡＰＩＣは上記のように分散された割込み制御アーキテクチャに構成され、このアーキテクチャ内で割込み制御機能は多数のローカルＡＰＩＣとＩ／Ｏ  ＡＰＩＣユニット間に分散される。ローカルＡＰＩＣユニットとＩ／Ｏ  ＡＰＩＣユニットはＩｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ（ＩＣＣ）バスと呼ばれる共通バス上で通信を行う。プロセッサごとに１つのローカルＡＰＩＣがあり、Ｉｎｔｅｌ（登録商標）ＭＰ準拠システム内の割込みラインの総数に応じて１以上のＩ／Ｏ  ＡＰＩＣ（登録商標）がある。ＡＰＩＣ（登録商標）はプロセッサとは別の離散的な構成要素でもよく、またプロセッサに統合されていてもよい。
【０００８】
割込み先はＩｎｔｅｌ  ＭＰ準拠システム内の１つまたはすべてのプロセッサ、またはプロセッサのサブセットでよい。送信元は２つの宛先モード、すなわち、物理宛先モードまたは論理宛先モードのうちの１つで割込み先を指定する。物理宛先モードでは、宛先プロセッサはローカルＡＰＩＣ（登録商標）ＩＤによって識別される。次いでローカルＡＰＩＣ（登録商標）ＩＤはローカルＡＰＩＣ（登録商標）内のローカルＡＰＩＣ（登録商標）ＩＤレジスタに記憶されているローカル要求ＡＰＩＣ（登録商標）の実際の物理ＩＤと比較される。ローカルＡＰＩＣ（登録商標）ＩＤレジスタのビット単位の定義を図１に示す。ローカルＡＰＩＣ（登録商標）ＩＤレジスタはプロセッサのピン上に駆動されるサンプリング構成データによって電源投入時にロードされる。Ｉｎｔｅｌ  Ｐ６ファミリプロセッサの場合、ピンＡ１１＃およびＡ１２＃およびピンＢＲ０＃からＢＲ３＃がサンプリングされる。物理宛先モードでは最大１５のローカルＡＰＩＣ（登録商標）を個別にアドレス指定できる。
【０００９】
論理宛先モードはＡＰＩＣ（登録商標）の数、したがって、システムによって個別にアドレス指定できるプロセッサの数を増やすために使用される。論理宛先モードでは、メッセージの宛先は８ビットのメッセージ宛先アドレス（ＭＤＡ）を用いて識別される。ＭＤＡはＡＰＩＣ（登録商標）論理宛先レジスタ（ＬＤＲ）の８ビットの論理ＡＰＩＣ（登録商標）ＩＤフィールドと比較される。論理宛先レジスタのビット単位の定義を図２に示す。
【００１０】
宛先フォーマットレジスタ（ＤＦＲ）は論理宛先情報の解釈を定義するために使用される。宛先フォーマットレジスタのビット単位の定義を図３に示す。ＤＦＲレジスタはフラットモデルまたはクラスタモデル割込み転送モード用にプログラミングできる。フラットモデル転送モードでは、ＤＦＲのビット２８〜３１は１１１１にプログラミングされる。次いでＭＤＡは複合化されたアドレスとして解釈される。この転送モードによって、対応するＬＤＲ内で各ＡＰＩＣ（登録商標）の対応ビットを１に設定するだけでローカルＡＰＩＣ（登録商標）の任意のグループを指定できる。すべてのＡＰＩＣ（登録商標）への同報通信はＭＤＡの８ビットすべてを１に設定することで達成される。理解いただけようが、フラットモデルでは最大８つのローカルＡＰＩＣ（登録商標）しかシステム内に共存できない。図４はＩｎｔｅｌ（登録商標）のマルチプロセッサ（ＭＰ）仕様書（バージョン１．４）に記載されているフラットモデル転送モードに従って接続されている例示的なマルチプロセッサシステムのブロック図である。
【００１１】
クラスタモデル転送モードでは、ＤＦＲのビット２８〜３１は００００にプログラミングされる。この転送モードでは、２つの基本的な接続手法、すなわち、フラットクラスタ法と階層クラスタ法がある。フラットクラスタ法では、すべてのクラスタが単一のＡＰＩＣ（登録商標）バス（例えば、ＩＣＣバス）に接続されているものとする。図５はＩｎｔｅｌ（登録商標）のマルチプロセッサ（ＭＰ）仕様書（バージョン１．４）に記載されているフラットクラスタモデル転送モードに従って接続されている例示的なマルチプロセッサシステムのブロック図である。このモードでは、ＭＤＡのビット２８〜３１は宛先クラスタの符号化されたアドレスを含む。これらのビットはＬＤＲのビット２８〜３１と比較され（図２を参照）、ローカルＡＰＩＣ（登録商標）がそのクラスタの一部であるか否かが判定される。ＭＤＡのビット２４〜２７はＬＤＲのビット２４〜２７と比較されて選択されたクラスタ内の個々のローカルＡＰＩＣ（登録商標）ユニットが識別される。
【００１２】
クラスタ内の任意のプロセッサのセットはＭＤＡのビット２８〜３１内に目的のクラスタアドレスを書き込み、クラスタの選択されたメンバに対応する選択されたビットをＭＤＡのビット２４〜２７に設定することで指定できる。このモードでは、各々が４つのプロセッサを有する１５個のクラスタ（クラスタアドレス０〜１４）を１つのメッセージ内に指定できる。ただし、ＡＰＩＣ（登録商標）アービトレーションＩＤは１５個のエージェントしかサポートしないので、フラットクラスタモードでサポートされるプロセッサの総数は１５に制限される。
【００１３】
階層クラスタ法では、独立したＡＰＩＣ（登録商標）バスを介して異なるフラットクラスタを接続することによって任意の階層クラスタネットワークを作成できる。図６はＩｎｔｅｌ（登録商標）のマルチプロセッサ（ＭＰ）仕様書（バージョン１．４）に記載されている階層クラスタモデル転送モードに従って接続されている例示的なマルチプロセッサシステムのブロック図である。ＭＰ仕様書によれば、このモードでは、クラスタ間で送信されるメッセージを処理する特別のクラスタ管理装置が各クラスタ内に必要である。必要な特別のクラスタ管理装置はローカルＡＰＩＣ（登録商標）ユニットまたはＩ／Ｏ  ＡＰＩＣ（登録商標）ユニットの一部ではない。クラスタ管理装置はこれらのユニットとは別に提供される。階層クラスタモードでは、１つのクラスタは最大４つのエージェントを含むことができる。したがって、単一のＡＰＩＣ（登録商標）バス（例えば、ＩＣＣバス）を介して接続された各々４つのエージェントを有する１５の特別のクラスタ管理装置を使用する時には、最大６０のＡＰＩＣ（登録商標）エージェントのネットワークが形成できる。
【００１４】
階層クラスタモードを使用する時に発生することがある問題は、図３に示すＤＦＲレジスタの状態が電源投入リセット後に、またはＩＮＩＴプロセッサ間割込み（INIT IPI）命令の実行後にすべて１に戻ってしまうということである。上記のように、ＤＦＲレジスタがすべて１に設定されていると、図２に示す論理宛先モードレジスタは８つのローカルＡＰＩＣ（登録商標）からなる最大構成が可能なフラットモデル転送モードであると解釈される。このことは、以下に詳述するように、システムのブート時および／または停止状態（halt state）からオペレーティングシステムによってアプリケーションプロセッサの実行を開始する時に問題を引き起こすことがある。
【００１５】
Ｉｎｔｅｌ（登録商標）のＭＰ準拠システムでは、プロセッサの１つは、システムハードウェアまたはシステムハードウェアとＢＩＯＳによるシステム初期設定時にブートストラッププロセッサ（ＢＳＰ）に指定される。残りのプロセッサはアプリケーションプロセッサ（ＡＰ）に指定される。ＢＳＰはオペレーティングシステムをブートし、ＡＰの実行を開始する役目をする。
【００１６】
Ｉｎｔｅｌ（登録商標）のＭＰ仕様書によれば、オペレーティングシステムの最初の命令がＢＳＰによって実行される時にＡＰは割込みが無効な停止状態にある。したがって、ＡＰのローカルＡＰＩＣ（登録商標）の各々はＡＰＩＣ（登録商標）バス（ＩＣＣバス）を受動的に監視しており、ＩＮＩＴまたはＳＴＡＲＴＵＰプロセッサ間割込み（ＩＰＩ）メッセージにのみ反応する。
【００１７】
ＩＮＩＴ  ＩＰＩはＩＮＩＴ  ＩＰＩメッセージによってアドレス指定されたローカルＡＰＩＣ（登録商標）にそれに対応するプロセッサを初期設定またはリセットさせるプロセッサ間割込みである。これによってプロセッサはその状態(state）をリセットし、リセットベクトルロケーションである固定のロケーションで実行を開始する。
【００１８】
ＳＴＡＲＴＵＰ  ＩＰＩは、ローカルＡＰＩＣ（登録商標）バージョンが１．ｘ以上のＳＴＡＲＴＵＰ  ＩＰＩメッセージを認識できるＩｎｔｅｌ（登録商標）プロセッサに基づくシステムで使用される。ＳＴＡＲＴＵＰ  ＩＰＩメッセージによって目的のプロセッサはアドレス０００ＶＶ０００ｈ（ただしＶＶはＳＴＡＲＴＵＰ  ＩＰＩメッセージの一部である８ビットベクトル）からリアルモードで実行を開始する。開始ベクトルはアドレス空間の最初のメガバイト内の、４キロバイトのページ境界に制限される。ＳＴＡＲＴＵＰ  ＩＰＩによっては目的のプロセッサの状態は変化しない（ただし、命令ポインタは変化する）。ＳＴＡＲＴＵＰ  ＩＰＩはＲＥＳＥＴの後またはＩＮＩＴ  ＩＰＩ受付けまたはピンのアサート後に１回だけ発行することができる。
【００１９】
Ｉｎｔｅｌ（登録商標）のＭＰ仕様書によれば、オペレーティングシステムによって通常ＡＰは以下のアルゴリズムを用いてオペレーティングシステムコード内の初期タスクの実行を開始する。
【００２０】
BSP sends AP an INIT IPI
BSP DELAYs(10mSec)
if(APIC_VERSION is not an 82489DX)
｛
BSP sends AP a STARTUP IPI
BSP DELAYs(200μSec)
BSP sends AP a STARTUP IPI
BSP DELAYs(200μSec)
｝
BSP verifies synchronization with executing AP
【００２１】
【特許文献１】特開平０１−２８２６７０号公報
【特許文献２】特公平０７−０６９８９２号公報
【非特許文献１】Intel Corporation, MultiProcessor pecification, version 1.4, Chapters B. May 1997.
【発明の開示】
【発明が解決しようとする課題】
【００２２】
目的のＡＰを停止状態から解放するにはＳＴＡＲＴ  ＩＰＩメッセージの前にＩＮＩＴ  ＩＰＩを実行しなければならない。これを上記の疑似コードに示す。ただし、上記のように、ＩＮＩＴ  ＩＰＩメッセージによって、図２に示すように、論理宛先レジスタはフラットモデル転送モードに切り替わり、８つのローカルＡＰＩＣ（登録商標）からなる最大構成が可能になる。クラスタモデル転送モードに従って構築されているそれらのシステムの場合、このことはローカルＡＰＩＣ（登録商標）を識別するために使用されるアドレス指定を阻害するおそれがある。電源投入リセット後にも同様の問題が発生することがある。
【００２３】
したがって、ローカルＡＰＩＣ（登録商標）のアドレス指定を阻害することなくクラスタ化マルチプロセッサシステム内で選択されたアプリケーションプロセッサの実行を開始する方法および装置が望ましい。また、そのようなクラスタ化マルチプロセッサシステムをブートする方法および装置も望ましい。最後に、ＩＮＩＴ  ＩＰＩまたは電源投入リセットの実行時にアドレス指定モードを切り替えないアプリケーションプロセッサが望ましい。
【課題を解決するための手段】
【００２４】
（発明の概要）
本発明は、ローカルＡＰＩＣ（登録商標）のアドレス指定モードを阻害することなくクラスタ化マルチプロセッサシステム内で選択されたアプリケーションプロセッサの実行を開始する方法および装置を提供することで従来技術の多くの欠点を克服する。一実施形態では、これはブートルーチン中にＡＰプロセッサを含むプロセッサを最初に初期設定することで達成される。これはＩＮＩＴ  ＩＰＩメッセージを用いて行われ、その結果、ＡＰＩＣ（登録商標）の論理宛先レジスタはフラットモードに切り替わる。次いで、クラスタごとに、ＢＳＰは各ＡＰのプログラムフローを共通初期設定手順に再指定ＳＴＡＲＴＵＰ  ＩＰＩメッセージを同報通信することができる。初期設定手順ではプロセッサの各々に特定のＡＰＩＣ（登録商標）論理ＩＤを割り当て、プロセッサを物理アドレス指定モードから論理指定モードに切り替えることができる。また初期設定手順では、アクティブモードクラスタのプロセッサの各々を所定の安全なメモリ空間（例えば、開始アドレスロケーション）上でスピンさせたままにすることもできる。所定の安全なメモリ空間は、好ましくは処理モジュールＩＤセクションと開始アドレスコードフィールドとを有する。
【００２５】
使用中に、ＡＰの各々はそれ自体の事前割当てされた処理モジュールＩＤを所定の安全なメモリロケーションの処理モジュールＩＤセクションに記憶された処理モジュールＩＤと比較する。ＡＰが所有する事前割当てされた処理モジュールＩＤがその処理モジュールＩＤと一致すると、対応するＡＰが選択されたメモリロケーションの開始アドレスコードセクションに指定された開始アドレス（startup address）にジャンプして実行を開始する。したがって、オペレーティングシステムは、一致する処理モジュールＩＤを処理モジュールＩＤセクションに書き込み、選択されたメモリロケーションの所望の開始アドレスを書き込むことで、選択された開始アドレスでＡＰの任意の１つの実行を開始することができる。
【００２６】
所定の安全なメモリロケーション（例えば、開始アドレスロケーション）が有効フラグセクションをさらに有することが企図される。オペレーティングシステムはＡＰの１つの実行を開始する時に有効フラグセクションに有効フラグ（例えば、１）を書き込むことができる。一致する処理モジュールＩＤを備えたＡＰは好ましくは所望の開始アドレスにジャンプした後に有効フラグセクションをリセットする。
【００２７】
最後に、停止状態からの切替え時にアドレス指定モードが阻害されることを回避しようとする代わりに、本発明は停止状態からの切替え時にアドレス指定モードを変更しないプロセッサを提供することも企図する。これによってプロセッサは上記のように所定の安全なメモリロケーション上でスピンする必要がなくなる。その結果、マルチプロセッサシステムの全体の設計と操作が簡単化できる。
【発明を実施するための最良の形態】
【００２８】
本発明のその他の目的と本発明のそれに伴う利点の多くは添付図面に関連する以下の詳細な説明を参照することでよりよく理解でき、それに応じて容易に了解されよう。図面では、同様の参照番号は同様の部分を示している。
【００２９】
なお、Ｕｎｉｘ（登録商標）はＯｐｅｎ  Ｇｒｏｕｐの登録商標である。ＳＣＯおよびＵｎｉｘ（登録商標）ｗａｒｅはＳａｎｔａ  Ｃｒｕｚ  Ｏｐｅｒａｔｉｏｎ，Ｉｎｃ．の登録商標である。本明細書で参照されるＭｉｃｒｏｓｏｆｔ、Ｗｉｎｄｏｗ、Ｗｉｎｄｏｗ  ＮＴおよび／またはその他のＭｉｃｒｏｓｏｆｔ（登録商標）製品はＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎの商標または登録商標である。本明細書で参照されるＩｎｔｅｌ、Ｐｅｎｔｉｕｍ（登録商標）、Ｐｅｎｔｉｕｍ（登録商標）  ＩＩ  Ｘｅｏｎ、Ｐｅｎｔｉｕｍ（登録商標）  ＩＩＩ  Ｘｅｏｎ、Ｍｅｒｃｅｄおよび／またはＩｎｔｅｌ（登録商標）製品はＩｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎの商標または登録商標である。
【００３０】
（好ましい実施形態の詳細な説明）
本発明はプロセッサのアドレス指定モードを阻害することなくクラスタ化マルチプロセッサシステム、より詳細に言えば、ローカル割込みコントローラ内で選択されたアプリケーションプロセッサの実行を開始する方法および装置を提供する。これは、例えば、アプリケーションプロセッサ（ＡＰ）の実行を開始し、それによって、プロセッサを停止状態から解放し、適当なアドレス指定モードを設定し、ＡＰを開始アドレスロケーション上でスピンさせたままの状態に保持することで達成される。この区画（partition）のＯＳは次いで開始アドレスロケーションに目的のプロセッサＩＤを書き込んでローカル割込みコントローラのアドレス指定モードを阻害することなく対応するアプリケーションプロセッサの実行を開始できる。あるいは、停止状態からの切替え時にアドレス指定モードを変更しないアプリケーションプロセッサを提供することが企図される。
【００３１】
図７は本発明の例示的な実施例によるマルチプロセッサのブロック図である。このマルチプロセッサシステムはプロセッサモジュール１１０、１１２および１１４を含む。プロセッサモジュール１１０、１１２および１１４は、好ましくは同等の互換性を有しているが、異種プロセッサおよび／またはオペレーティングシステムが共存していてもよいことが企図される。
【００３２】
プロセッサモジュール１１０、１１２および１１４は各々、好ましくは複数のプロセッサを含む。プロセッサモジュール１１０、１１２および１１４の２つ以上は好ましくはシステム相互接続機構１３０などのシステム相互接続機構を介してメイン（またはグローバル）メモリ１６０および／またはＩ／Ｏ装置１２０、１２２および１２４へのアクセスの共用もする。プロセッサモジュール１１０、１１２および１１４は好ましくはメインメモリ１６０を介して（メッセージや共通データ領域にあるステータス情報によって）相互に通信する。
【００３３】
マルチプロセッサコンピュータシステム内に多数の区画（partitions）が存在できるように、コンピュータシステム内に１以上のプロセッサモジュールを別々の区画として構成することができる。各区画は別々のオペレーティングシステムの制御下で操作できる。例えば、図７の各プロセッサモジュール１１０、１１２および１１４は別々のオペレーティングシステム１７０、１７２および１７４によって制御される別々の区画として定義できる。各オペレーティングシステム１７０、１７２および１７４は各々が好ましくはメインメモリ１６０にアクセスしている唯一のエンティティであるかのようにメインメモリを別々に認識する。ハードウェアサポートとその他の低レベル機能をシステムに提供する保守インタフェースプロセッサ（ＭＩＰ）１２７を提供してもよい。
【００３４】
図８は図７のマルチプロセッサシステムのより詳細なブロック図である。このマルチプロセッサシステムは図にメインメモリ１６０として示すメインメモリと、それぞれの第３レベルキャッシュ（Third Level Cache）モジュール２３０とクロスバー相互接続機構２９０とを介してメインメモリ１６０に接続された複数のプロセッサ２４０とを含む。第１のＰＯＤ２６３は、クロスバー相互接続機構２９０Ａと、第３レベルキャッシュモジュール２３０Ａおよび２３０Ｂと、プロセッサ２４０Ａ〜Ｈとを含む。第２のＰＯＤ２６５は、クロスバー相互接続機構２９０Ｂと、第３レベルキャッシュモジュール２３０Ｃおよび２３０Ｄと、プロセッサ２４０Ｊ〜Ｓとを含む。この構成では、処理モジュールとメインメモリは対称マルチプロセッシングアーキテクチャに配置されている。すなわち、プロセッサからメモリまでの待ち時間はメインメモリの全域にわたって処理モジュールごとに同じである。
【００３５】
メインメモリ１６０は好ましくはディレクトリベースのメモリシステムで、様々なメモリ整合性モデルをサポートすることができる。メインメモリ１６０は記憶装置２２０Ａ、２２０Ｂ、２２０Ｃ、および２２０Ｄなどの複数の記憶装置（ＭＳＵＳ）２２０を含む。好ましくは、各記憶装置２２０Ａ、２２０Ｂ、２２０Ｃ、および２２０Ｄは１６ギガバイトのメモリをも含む。また、各記憶装置２２０Ａ、２２０Ｂ、２２０Ｃ、および２２０Ｄは、好ましくは４つの倍幅（double-wide）データバスおよび８つの片方向アドレスバスを共用する１６個の半ば独立したバンクを含む。
【００３６】
複数の第３レベルキャッシュモジュール２３０Ａ〜２３０Ｄは、各々２つの第３レベルキャッシュ特定用途向け集積回路（例えば、ＴＣＴ２７０ＡおよびＴＣＴ２７０Ｂ）を含む。各ＴＣＴ２７０は、「Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｏｐｅｒａｔｉｎｇ  Ｍｕｌｔｉｐｌｅ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  ｉｎ  Ｄｉｆｆｅｒｅｎｔ  Ｐａｒｔｉｔｉｏｎｓ  ｏｆ  ｔｈｅ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  ａｎｄ  ｆｏｒ  Ａｌｌｏｗｉｎｇ  ｔｈｅ  Ｄｉｆｆｅｒｅｎｔ  Ｐａｒｔｉｔｉｏｎｓ  ｔｏ  Ｃｏｍｍｕｎｉｃａｔｅ  ｗｉｔｈ  ｏｎｅ  Ａｎｏｔｈｅｒ  Ｔｈｒｏｕｇｈ  Ｓｈａｒｅｄ  Ｍｅｍｏｒｙ」と題された共通の譲受人に譲渡された同時係属米国特許出願第ＴＮ０５２Ａ号に記載されているように、接続先プロセッサによって発行されたメモリアドレスのアドレス再配置、再利用、および翻訳（translation）を実行する。
【００３７】
各第３レベルキャッシュモジュール２３０Ａから２３０Ｄは図示のようにそれぞれのプロセッサ（ＭＰ）２４０Ａから２４０Ｓに接続されている。特に、この例示的な実施例では、各ＴＬＣ２３０は４つのプロセッサに接続されている。各ＴＬＣ２３０とそのそれぞれの４つのプロセッサはサブポッド（ＳＵＢＰＯＤ）を定義する。２つのサブポッドがクロスバー相互接続（例えば、クロスバー相互接続機構２９０Ａまたは２９０Ｂ）を介して接続されてポッド（ＰＯＤ）を形成する。したがって、図示の実施形態では、それぞれクロスバー相互接続機構２９０Ａおよび２９０Ｂを介して接続されて２つのＰＯＤ２６３および２６５を形成する４つのサブポッドがある。
【００３８】
クロスバー相互接続機構２９０Ａおよび２９０Ｂは、複数のクロスポイントがプロセッサ２４０と記憶装置２２０との交点に配置されるクロスバメモリ法を使用する。クロスポイント内には特定のプロセッサバス２８０から特定の記憶装置２２０への経路を決定するスイッチがある。各スイッチポイントはプロセッサ２４０とメインメモリ１６０との間の伝送経路（transfer path）を設定する制御論理を有する。制御論理はプロセッサバス２８０上に配置されたアドレスを検証してどの記憶装置２２０がアドレス指定されているかを判定する。制御論理はまた所定の優先順位に基づいて同じ記憶装置２２０への多数のアクセスに対する要求を解決する。
【００３９】
各クロスバー相互接続機構２９０は、「Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ｏｐｅｒａｔｉｎｇ  Ｍｕｌｔｉｐｌｅ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  ｉｎ  Ｄｉｆｆｅｒｅｎｔ  Ｐａｒｔｉｔｉｏｎｓ  ｏｆ  ｔｈｅ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  ａｎｄ  ｆｏｒ  Ａｌｌｏｗｉｎｇ  ｔｈｅ  Ｄｉｆｆｅｒｅｎｔ  Ｐａｒｔｉｔｉｏｎｓ  ｔｏ  Ｃｏｍｍｕｎｉｃａｔｅ  ｗｉｔｈ  ｏｎｅ  Ａｎｏｔｈｅｒ  Ｔｈｒｏｕｇｈ  Ｓｈａｒｅｄ  Ｍｅｍｏｒｙ」と題された共通の譲受人に譲渡された同時係属の米国特許出願第ＴＮ０５２Ａ号に記載されているように、Ｉ／Ｏ装置からのメモリ要求のアドレス再配置、再利用、および翻訳を実行する１対の第３レベルキャッシュのメモリインタフェース特定用途向け集積回路（ＴＣＭ）２８５をさらに含む。
【００４０】
コンピュータシステム２００は、Ｉ／Ｏバス２１０Ａから２０１Ｄ、ならびにＰＣＩ２６０Ａから２６０Ｄなどの複数の周辺装置相互接続機構（ＰＣＩ）をさらに含む。このＰＣＩは、ダイレクトＩ／Ｏブリッジ（ＤＩＢ）２５０Ａから２５０ＤなどのダイレクトＩ／Ｏブリッジを介して接続されている。動作時には、記憶装置２２０はクロスバー相互接続機構２９０を介して第３レベルキャッシュモジュール２３０と双方向通信を行う。クロスバー相互接続機構２９０はＩ／Ｏバス２１０を介してダイレクトＩ／Ｏブリッジ２５０と、またＴＣＴ２７０を介してプロセッサ２４０と双方向通信を行う。ダイレクトＩ／Ｏブリッジ２５０は周辺装置相互接続機構２６０と双方向通信を行う。
【００４１】
プロセッサ（ＭＰ）２４０Ａ〜２４０Ｓは、好ましくはＩｎｔｅｌ（登録商標）ブランドのプロセッサ（例えば、Ｐｅｎｔｉｕｍ（登録商標）  ＩＩ  Ｘｅｏｎ（登録商標），Ｐｅｎｔｉｕｍ（登録商標）  ＩＩＩ  Ｘｅｏｎ（登録商標），Ｍｅｒｃｅｄ（登録商標）），Ｕｎｉｓｙｓ  Ｅモードスタイルプロセッサ（Ｕｎｉｓｙｓ  ＡシリーズおよびＣｌｅａｒｐａｔｈ  ＨＭＰ  ＮＸエンタプライズサーバで使用）、またはＵｎｙｓｉｓ２２００スタイルプロセッサ（Ｕｎｉｓｙｓ２２００シリーズおよびＣｌｅａｒｐａｔｈ  ＨＭＰ  ＩＸエンタプライズサーバで使用）である。好ましくは、所与のサブポッドは同じタイプの４つのプロセッサを使用する。ただし、異なるサブポッドが異なるタイプのプロセッサを使用できることも企図される。例えば、あるサブポッドが４つのＩｎｔｅｌ（登録商標）ブランドのプロセッサを使用し、別のサブポッドが４つのＵｎｉｓｙｓ  Ｅモードスタイルプロセッサを使用してもよい。
【００４２】
そのような構成では、Ｉｎｔｅｌ（登録商標）ブランドのプロセッサを使用するサブポッドを１つの区画（partition）として定義し、Ｕｎｉｘ（登録商標）またはＷｉｎｄｏｗｓ（登録商標）ＮＴなどのＩｎｔｅｌ（登録商標）互換のオペレーティングシステムの制御下で実行し、Ｕｎｉｓｙｓ  Ｅモードスタイルプロセッサを使用するサブポッドを別の区画として定義し、Ｕｎｉｓｙｓ  ＭＣＰオペレーティングシステムの制御下で実行してもよい。さらに別の実施形態として、２つの異なる区画内のサブポッドが両方共Ｉｎｔｅｌ（登録商標）プロセッサを使用し、一方の区画をＩｎｔｅｌ（登録商標）互換のオペレーティングシステム（例えば、Ｗｉｎｄｏｗｓ（登録商標）ＮＴ）の制御下で実行し、他方の区画をその区画内のＩｎｔｅｌ（登録商標）プロセッサ上でＵｎｉｓｙｓ  ＡシリーズコンピュータアーキテクチャをエミュレートすることでＵｎｉｓｙｓ  ＭＣＰオペレーティングシステムの制御下で実行してもよい。図７に示すように、ハードウェアサポートとその他の低レベルシステム機能をシステムに提供する保守インタフェースプロセッサ（ＭＩＰ）２６７を提供してもよい。これについて以下に詳述する。
【００４３】
図９は図８のＰＯＤ２６３のより詳細なブロック図である。ＰＯＤ２６３は第１のＳＵＢＰＯＤ３００Ａと第２のＳＵＢＰＯＤ３００Ｂとを含む。ＳＵＢＰＯＤ３００Ａは好ましくは４つのプロセッサ２４０Ａ〜２４０Ｄを含む。図示の通り、プロセッサ２４０Ａ〜２４０Ｂは第１のフロントサイドのバス２８０Ａを介して第３レベルキャッシュモジュール２３０Ａに接続されている。同様に、図示の通り、プロセッサ２４０Ｃ〜２４０Ｄは第２のフロントサイドのバスを介して第３レベルキャッシュモジュール２３０Ａに接続されている。２つのフロントサイドのバス２８０Ａおよび２８０Ｂはプロセッサ２４０Ａ〜２４０Ｄと第３レベルキャッシュモジュール２３０Ａとの間のスループットを向上させるために提供されている。ＳＵＢＰＯＤ３００Ｂも同様の構成である。
【００４４】
図示のように各プロセッサは、好ましくはローカル割込みコントローラを含む。プロセッサがＩｎｔｅｌ（登録商標）ブランドのプロセッサの場合、ローカル割込みコントローラはＩｎｔｅｌ（登録商標）製Ａｄｖａｎｃｅｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ（ＡＰＩＣ（登録商標））でよい。サブポッド内のすべてのローカルＡＰＩＣ（登録商標）コントローラは、好ましくは単一の割込みコントローラ通信（ＩＣＣ）バス３１２を介して階層クラスタ管理装置３１０に接続される。したがって、図８，図９のマルチプロセッサシステムは好ましくはＩｎｔｅｌ（登録商標）のマルチプロセッサ（ＭＰ）仕様書（バージョン１．４）に記載の階層クラスタモデル転送モードと互換性があり、フラットモデル転送モードとは互換性がない。
【００４５】
ローカルＡＰＩＣ（登録商標）コントローラは共通ＩＣＣバス３１２を介してサブポッド内の他のすべてのＡＰＩＣ（登録商標）コントローラと通信する。ローカルＡＰＩＣ（登録商標）コントローラは、階層クラスタ管理装置３１０と共同してローカルＩＣＣバスを介して他のサブポッド内のＡＰＩＣ（登録商標）コントローラと通信する。好ましくは、階層クラスタ管理装置はメッセージ内に提供されたアドレスから目的のサブポッドを識別し、現在のシステム構成下でメッセージ伝送（transfer）が可能なことを確認するための検査をし、そのような伝送が可能な場合、目的のサブポッドの階層クラスタ管理装置にメッセージを渡す。異なるサブポッドのＡＰＩＣ（登録商標）コントローラ間における通信の詳細は、「Ｍｅｔｈｏｄ  Ａｎｄ  Ａｐｐａｒａｔｕｓ  Ｆｏｒ  Ｒｏｕｔｉｎｇ  Ｉｎｔｅｒｒｕｐｔｓ  Ｉｎ  Ａ  Ｃｌｕｓｔｅｒｅｄ  Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  Ｓｙｓｔｅｍ」と題された１９９９年７月２８日出願の同時係属の米国特許出願第ＸＸ／ＸＸＸ，ＸＸＸ号（Unisys Docket RA 5262[1028.1118101]）に記載されている。
【００４６】
図８，図９のマルチプロセッサシステムは、好ましくは各ポッドが２つのＳＵＢＰＯＤ３００Ａおよび３００Ｂを有する４つのＰＯＤ２６３からなる最大構成を有する。したがって、この最大構成では、マルチプロセッサシステムは（４つのポッド）×（ポッドあたり８つのプロセッサ）＝３２のプロセッサを含むことができる。このシステムは好ましくは任意の組み合わせのポッドまたはサブポッド境界上で区分でき、システム内に多数の区画が存在できる。各区画は別々のオペレーティングシステムの制御下で動作できる。図８，図９に図示し、同図を参照して説明してきたマルチプロセッサシステムの詳細は上記の同時係属の特許出願に記載されている。
【００４７】
図１０，図１１は図８，図９のマルチプロセッサシステムをブートし、図８，図９のＩｎｔｅｌ（登録商標）製ＭＰ準拠システム内で選択されたアプリケーションプロセッサ（ＡＰ）の実行を開始する例示的な方法の流れ図である。ステップ４０１でアルゴリズムが入力され、制御はステップ４０２に渡される。ステップ４０２で、ＭＩＰ２６７は初期低レベルハードウェア構成および初期設定を実行する。これは、システム内に設置されたハードウェア（例えば、どのポッド（ＰＯＤ），サブポッド（ＳＵＢＰＯＤ），ＤＩＢ、ＰＣＩモジュール、ＭＳＵ、などが現在設置されているか）を判定するステップと、すべての設置されているハードウェアをスキャンによって初期状態に設定するステップと、ビルトインセルフテスト（ＢＩＳＴ）によってメインメモリと第３レベルキャッシュとを検査するステップとを含む。
【００４８】
次いでＭＩＰ２６７は各区画のＢＩＯＳをメインメモリにロードする。通常、ＢＩＯＳはＭＩＰハードディスク上のファイル内に配置されている。このファイルはＢＩＯＳコードとＢＩＯＳのロード先の情報を含む。ＭＩＰはＢＩＯＳファイルの情報を用いてメインメモリ内にＢＩＯＳをロードする。次いでＭＩＰ２６７は構成データ領域セクションに指定されているＢＩＯＳの構成データ領域をメインメモリ内にロードする。構成データは論理ＡＰＩＣ（登録商標）ＩＤと各サブポッド（クラスタ）のプロセッサのローカルＡＰＩＣ（登録商標）ＩＤとを識別する。ローカルＡＰＩＣ（登録商標）ＩＤは現在のストラップ手順に基づくプロセッサの電源投入時ＩＤである。ＢＩＯＳはローカルＡＰＩＣ（登録商標）ＩＤを用いて各プロセッサに適当な論理ＡＰＩＣ（登録商標）ＩＤを割り当てる。
【００４９】
次いでＭＩＰ２６７は、ステップ４０８および４２２に示すように、区画（ｐａｒｔｉｔｉｏｎ）内のサブポッドの各々へのリセット信号を順次、デアサートする。リセット信号によってプロセッサはＢＩＳＴを実行し、次いで４１０に示すようにそのサブポッドのブートストラッププロセッサ（ＢＳＰ）になるように調停（arbitration）を行う。好ましくは、ＢＳＰは、各プロセッサがその（変更された）ＡＰＩＣ（登録商標）ＩＤをそれ自体を含めたサブポッド内のすべてのエージェントに同報通信する「フラグ争奪（race for the flag）」タイプのアルゴリズムを用いて決定される。プロセッサが最初に自分のＩＤを返送されれば、そのプロセッサがＢＳＰになる。ＡＰＩＣ（登録商標）アービトレーションＩＤは、好ましくは最も高い番号のＩＤを備えたプロセッサに対して「勝者（winner）」のチャンスを与える。ＢＳＰが決定されると、選択されたＢＳＰはＢＯＩＳコードにアクセスする。
【００５０】
次いで、４１２に示すように、各サブポッド（すなわち、クラスタ）のＢＳＰはその論理ＡＰＩＣ（登録商標）ＩＤをロードする。またＢＳＰはそのＣＰＵＩＤをＢＩＯＳ構成データ領域情報と突き合わせて検証し、クラスタチェックインステータスデータ構造体を更新する。また、４１４に示すように、各サブポッドのＢＳＰはまたＩＮＩＴ  ＩＰＩおよびＳＴＡＲＴＵＰ  ＩＰＩを介して構成データ内で使用可能のマークが付いたそのサブポッド内に常駐するアプリケーションプロセッサ（ＡＰ）を起動し、初期設定手順をベクトル処理する。
【００５１】
初期設定手順では多数の動作を開始する。最初に、各ＡＰは基本信頼性検査を実行する。次いで、各ＡＰは４１６に示すようにＭＩＰ２６７によって提供されたデータに基づいてそのＡＰＩＣ（登録商標）論理ＩＤを設定し、次に４１８に示すようにＡＰＩＣ（登録商標）物理モードから論理モードに切り替える。各ＡＰはそのバスとプロセッサＩＤに基づくインデックスを用いてＭＩＰデータ構造体からＡＰＩＣ（登録商標）論理ＩＤを取得する。次いで各ＡＰはセマフォをリセットして起動の完了を示す。
【００５２】
また各ＡＰはそのＣＰＵＩＤをＢＩＯＳ構成データ領域情報と照合し、クラスタチェックインステータスデータ構造体を更新する。ＢＳＰは各ＡＰのステータスを検査し、すべてのＡＰがチェックインしたことを検証し、またはタイマが満了するのを待つ。チェックイン後に、各ＡＰをループ内でスピンしたままの状態に保持し、一致するアドレスが事前識別された開始アドレスロケーションに書き込まれるのを待つ。これについて以下に詳述する。
【００５３】
サブポッドごとに１対のローカルメールボックスが提供される。これらのローカルメールボックスはサブポッドメールボックスと呼ばれ、図９に例示されている。図９を特に参照すると、ＳＵＢＰＯＤ３００Ａはサブポッドメールボックス３２０を有し、ＳＵＢＰＯＤ３００Ｂはサブポッドメールボックス３２２を有する。サブポッドメールボックス３２０および３２２は各サブポッド（ＳＵＢＰＯＤ）のＢＳＰとＭＩＰ２６７との間に通信を提供するために使用される。
【００５４】
各ＡＰがクラスタチェックインステータスデータ構造体を更新したことをＢＳＰが検出すると、ＢＳＰはサブポッドメールボックスにＣｌｕｓｔｅｒ  Ｃｈｅｃｋ−Ｉｎメッセージを書き込み、有効ビットを設定する。ＭＩＰ２６７はメッセージを受信し、ＢＩＯＳに応答を提供する。次いでＢＳＰは適当なサブポッドメールボックスをポーリングし、ＭＩＰ２６７からのＢｅｃｏｍｅ  ＢＳＰまたはＢｅｃｏｍｅ  ＡＰメッセージの受信を待つ。
【００５５】
ＭＩＰ２６７は４２４に示すようにその区画のマスタＢＳＰを有する予定のサブポッドを選択する。これは、好ましくはすべてのプロセッサが有効である最も若番のサブポッドか、区画内にサブポッドが１つしかない場合には、障害プロセッサがないその唯一のサブポッドである。マスタＢＳＰが選択されると、ＭＩＰ２６７は４２６に示すようにマスタＢＳＰを備えたサブポッドに対応するサブポッドメールボックスにＢｅｃｏｍｅ  ＢＳＰメッセージを書き込む。これによってマスタＢＳＰはシステムを解放してブートする。この時点で、区画には１つのマスタＢＳＰがあり、残りのＢＳＰはＭＩＰ２６７からのＢｅｃｏｍｅ  ＡＰメッセージ待ちのままになる。
【００５６】
ＭＩＰ２６７にＲｅｌｅａｓｅ  ＡＰｓメッセージを発行する前に、ＢＩＯＳは、ＤＩＢ  Ｉ／Ｏ  ＡＰＩＣ（登録商標），ＰＣＩカードおよびＰＣＩバス、割込みベクトル、キーボード、ビデオ、システムメモリなどを含めて選択されたハードウェア構成要素およびレジスタを初期設定する。この処理が完了すると、ＢＩＯＳはＭＩＰ２６７にＲｅｌａｅｓｅ  ＡＰｓメッセージを発行する。この命令はＢＩＯＳがマスタＢＳＰではない区画内のすべてのＢＳＰプロセッサをＡＰに切り替えるようにＭＩＰ２６７に通知するために使用する。このメッセージはＰＣＩおよびＤＩＢ  Ｉ／Ｏ  ＡＰＩＣ（登録商標）構成後に発行されるので、マスタＢＳＰはメモリマップに基づくＭＴＲＲ値を区画内のすべてのプロセッサに提供する。ＯＳのインスタンスを実行しているすべてのプロセッサは同じＭＴＲＲ値を有さなければならない。
【００５７】
これに応答して、４２８に示すように、ＭＩＰ２６７は非マスタＢＳＰのサブポッドの各々についてサブポッドメールボックスにＢｅｃｏｍｅ  ＡＰメッセージを発行する。Ｂｅｃｏｍｅ  ＡＰメッセージによって旧ＢＳＰはＭＩＰ２６７に対して応答を生成し、ループに入って一致するアドレスが図１２の開始アドレスロケーション３２４などの該当する開始アドレスロケーションに書き込まれるのを待つ。開始アドレスロケーションは好ましくはＢＩＯＳによって選択された安全なメモリロケーション内に位置し、好ましくはＢＩＯＳメモリ領域内にある。この時点で、１つのＢＳＰがあり、残りのプロセッサはＯＳが開始アドレスロケーションに一致するアドレスを書き込むのを論理ＡＰＩＣ（登録商標）モードで待つ。この時点で、ＢＩＯＳはＳｗｉｔｃｈ  ｔｏ  Ｐａｒｔｉｔｉｏｎメッセージを発行してサブポッドメールボックスを使用不能にし、区画メールボックス３２５を使用可能にする。この処理が完了すると、ＢＩＯＳはＭＩＰ２６７にＢＩＯＳ  ｔｏ  ＯＳ  Ｔｒａｎｓｉｔｉｏｎメッセージを発行し、ＩＮＴ１９を介してホストＯＳブートを開始する。
【００５８】
ＯＳが成功裏にブートされた後、ＯＳは目的のＡＰＩＣ（登録商標）ＩＤと開始アドレスを該当する開始アドレスロケーションに書き込むことでＡＰの１つを起動することができる。一致するＡＰＩＣ（登録商標）ＩＤを備えたＡＰは４３０に示すように開始アドレスロケーションを読み出し、開始アドレスにジャンプして実行を開始する。
【００５９】
図１２はマルチプロセッサシステム内の多数の事前定義された区画の各々の開始アドレスロケーションを示す図である。容易に分かるように、各区画は好ましくは一意的な開始アドレスロケーションを有する。図１３は開始アドレスロケーションのフォーマットを示す。開始アドレスロケーションは好ましくは有効フラグ、プロセッサ開始アドレスコード、論理ＡＰＩＣ（登録商標）ＩＤフィールド、および拡張ＳＡＰＩＣ  ＩＤフィールドを含む。
【００６０】
上記のように、ＢＩＯＳは対応する開始アドレスロケーション上で各ＡＰをループしたままの状態に保持し、ＡＰに開始アドレス内の論理ＡＰＩＣ（登録商標）ＩＤフィールドがその論理ＡＰＩＣ（登録商標）ＩＤと一致するのを待つようにする。したがって、ＡＰを起動するために、ＯＳは目的のＡＰの論理ＡＰＩＣ（登録商標）ＩＤ、所望の開始アドレスコード、および有効フラグを開始アドレスロケーションに書き込む。一致する論理ＡＰＩＣ（登録商標）ＩＤを備えたＡＰは開始アドレスロケーションを読み出し、開始アドレスコードセクションに指定されたアドレスにジャンプし、そのロケーションで実行を開始する。またＡＰは所望の開始アドレスにジャンプした後で有効フラグセクションをリセットすることができる。
【００６１】
ＡＰを開始アドレスロケーション上でスピンさせたままにしておく１つの理由は、ＩＮＩＴ  ＩＰＩメッセージ受信時にＡＰＩＣ（登録商標）コントローラがアドレス指定モードを変更するという一部のＩｎｔｅｌ（登録商標）ブランドのＡＰＩＣ（登録商標）コントローラによって引き起こされる問題を回避する手助けをするということである。Ｉｎｔｅｌ（登録商標）ブランドのＡＰＩＣ（登録商標）コントローラの場合、ＩＮＩＴ  ＩＰＩメッセージをＳＴＡＲＴＵＰ  ＩＰＩメッセージより先に実行して目的のＡＰを停止状態から解放しなければならない。ただし、ＩＮＩＴ  ＩＰＩメッセージによって図２に示す論理宛先レジスタは８つのローカルＡＰＩＣ（登録商標）による最大構成を有するフラットモデル転送モードに切り替わる。したがって、上記の図８，図９に示すシステムなどのクラスタモデル転送モードに従って構築されたシステムでは、これはローカルＡＰＩＣ（登録商標）を識別するために使用されるアドレス指定モードを阻害することがある。電源投入リセット後にも同様の問題が起こることがある。
【００６２】
したがって、停止状態からの切替え時にアドレス指定モードが変化しないようにプロセッサおよび／またはＡＰＩＣ（登録商標）コントローラ自体を変更できることも企図される。図１４はそのようなプロセッサおよび／またはＡＰＩＣ（登録商標）コントローラの状態図である。プロセッサは、好ましくはプロセッサが成功裏に初期設定された後に切り替わる停止状態５００を有する。これでプロセッサのアドレス指定モードは５０２に示すようにマルチプロセッサシステムの現在の構成に従って設定できる。アドレス指定モードが設定された後、制御は好ましくは停止状態５００に戻る。次いでオペレーティングシステムは目的のプロセッサＩＤと所望の開始アドレスとを有する開始メッセージを提供することでプロセッサの実行を開始できる。プロセッサＩＤは好ましくは目的のプロセッサを識別し、目的のプロセッサを停止状態５００から実行状態５０４に切り替える。停止状態５００から実行状態５０４に切り替わる時にアドレス指定モード５０２が変化しないことが分かる。この処理はプロセッサが現在どのアドレス指定モードであるかに拘らず実行されることが好ましい。
【００６３】
以上、本発明の好ましい実施形態について説明してきたが、本明細書内の教示は別途提出の特許請求の範囲内で他の実施形態にも適用できることは当業者には容易に理解されるであろう。
【図面の簡単な説明】
【００６４】
【図１】ローカルＡＰＩＣ（登録商標）ＩＤレジスタの各フィールドを示すテーブルの図である。
【図２】論理宛先レジスタの各フィールドを示すテーブルの図である。
【図３】宛先フォーマットレジスタ各フィールドを示すテーブルの図である。
【図４】Ｉｎｔｅｌ（登録商標）のマルチプロセッサ（ＭＰ）仕様書（バージョン１．４）に記載されているフラットモデルに従って接続されている例示的なマルチプロセッサシステムのブロック図である。
【図５】Ｉｎｔｅｌ（登録商標）のマルチプロセッサ（ＭＰ）仕様書（バージョン１．４）に記載されているフラットクラスタモデルに従って接続されている例示的なマルチプロセッサシステムのブロック図である。
【図６】Ｉｎｔｅｌ（登録商標）のマルチプロセッサ（ＭＰ）仕様書（バージョン１．４）に記載されている階層クラスタモデルに従って接続されている例示的なマルチプロセッサシステムのブロック図である。
【図７】本発明によるマルチプロセッサシステムのブロック図である。
【図８】図７のマルチプロセッサシステムのより詳細なブロック図である。
【図９】図８のＰＯＤの１つのブロック図である。
【図１０】Ｉｎｔｅｌ（登録商標）製ＭＰ準拠システム内で選択されたアプリケーションプロセッサ（ＡＰ）をブートして実行を開始する例示的な方法の流れ図である。
【図１１】Ｉｎｔｅｌ（登録商標）製ＭＰ準拠システム内で選択されたアプリケーションプロセッサ（ＡＰ）をブートして実行を開始する例示的な方法の流れ図である。
【図１２】多数の所定のプロセッサの各々の例示的な開始アドレスロケーションを示す図である。
【図１３】図１２の開始アドレスロケーションの１つの例示的なフィールドを示すテーブルの図である。
【図１４】停止状態からの切替え時にアドレス指定モードを変更しないプロセッサの状態図である。
【符号の説明】
【００６５】
１００  マルチプロセッサシステム
１１０、１１２、１１４  プロセッサモジュール
１２０、１２２、１２４  Ｉ／Ｏ装置
１３０  システム相互接続機構
１６０  メイン（またはグローバル）メモリ
１７０、１７２、１７４  オペレーティングシステム
２００  コンピュータシステム
２２０Ａ〜Ｄ  記憶装置
２３０  キャッシュ（Third Level Cache）モジュール
２４０  プロセッサ２４０
２５０Ａ〜２５０Ｄ  ダイレクトＩ／Ｏブリッジ（ＤＩＢ）
２６０Ａ〜２６０Ｄ  周辺装置相互接続機構（ＰＣＩ）
２６３、２６５  ＰＯＤ
２６７  保守インタフェースプロセッサ
３００Ａ、３００Ｂ  ＳＵＢＰＯＤ
【図１】
2007149116.tif 000003
【図２】
2007149116.tif 000004
【図３】
2007149116.tif 000005
【図４】
2007149116.tif 000006
【図５】
2007149116.tif 000007
【図６】
2007149116.tif 000008
【図７】
2007149116.tif 000009
【図８】
2007149116.tif 000010
【図９】
2007149116.tif 000011
【図１０】
2007149116.tif 000012
【図１１】
2007149116.tif 000013
【図１２】
2007149116.tif 000014
【図１３】
2007149116.tif 000015
【図１４】
2007149116.tif 000016