(57)【特許請求の範囲】
【請求項１】
ＮＵＭＡマシンをブートする方法であって、
対称マルチプロセッシング・システムを相互接続して構成されるＮＵＭＡシステム内で動作させるために、複数のスタンドアロンの対称マルチプロセッシング・システムを構成するステップと、
前記マルチプロセッシング・システムの各々へＮＵＭＡ  ＩＤを割り当てるステップとを含み、各ＩＤは固有であり、
ＮＵＭＡモードで前記マルチプロセッシング・システムにオペレーティング・システムをメモリへロードする前に、ノーダル・マスタ・プロセッサおよびＮＵＭＡマスタ・プロセッサにより前記マルチプロセッシング・システムのリモート入出力を構成するシステム・ファームウェアを実行するステップを含み、
前記マルチプロセッシング・システムを構成するステップは、
ホスト・プロセッサとホスト・メモリとを構成してテストするステップと、
ＮＵＭＡメモリを構成してテストするステップと、
ファームウェア・イメージをローカル・メモリへロードし、ファームウェア・バージョンをハードウェア・システム・コンソールに通知するステップと、
前記ファームウェア・バージョンが、前記ＮＵＭＡシステム内の全てのマルチプロセッシング・システムに対して同一であるという確認を、前記ハードウェア・システム・コンソールから受信するステップと、
ＮＵＭＡアダプタを構成して各マルチプロセッシング・システムを前記ＮＵＭＡシステムへ接続し、全てのホスト・プロセッサを初期化するステップと、
前記システム・ファームウェアの実行を開始するために全てのホスト・プロセッサをリリースするステップとを含み、
メモリ・コヒーレンシがシステム・ファームウェアの実行開始時に確立される方法。
【請求項２】
各マルチプロセッシング・システム内部のノーダル・マスタ・プロセッサを選択し、各システム内部の全ての他のプロセッサをノーダル・スレーブ・プロセッサに指定するステップと、
前記個別のノーダル・マスタ・プロセッサの中からＮＵＭＡマスタ・プロセッサを選択し、全ての他のノーダル・マスタ・プロセッサをＮＵＭＡスレーブ・プロセッサに指定するステップと、
をさらに含む請求項１に記載の方法。
【請求項３】
マルチプロセッシング・システム内部の前記ノーダル・マスタ・プロセッサと各ノーダル・スレーブ・プロセッサとの間の１対１のハンドシェークを実行するステップをさらに含み、前記ハンドシェークは、全てのノーダル・スレーブ・プロセッサの時間基準レジスタをノーダル時間基準ソースと同期させ、
各マルチプロセッシング・システム内の前記ノーダル・スレーブ・プロセッサを、前記ノーダル・スレーブ・プロセッサがＮＵＭＡスレーブ・プロセッサになるハイパーバイザ環境へ切り替えるステップを含む請求項２に記載の方法。
【請求項４】
前記ＮＵＭＡマスタ・プロセッサは、
単一のオペレーティング・システムをＮＵＭＡシステム・メモリへロードし、
前記オペレーティング・システムへ制御を移し、
全てのスレーブ・プロセッサを、前記ＮＵＭＡオペレーティング・システム内部の指定された位置へ割り当てるオペレーティング・システム・コードを実行する請求項２に記載の方法。
【請求項５】
ＮＵＭＡマシンをブートするシステムであって、
対称マルチプロセッシング・システムを相互接続して構成されるＮＵＭＡシステム内で動作させるために、複数のスタンドアロンの対称マルチプロセッシング・システムを構成する複数のハードウェア構成コンポーネントと、
前記マルチプロセッシング・システムの各々へＮＵＭＡ  ＩＤを割り当てる識別コンポーネントとを備え、各ＩＤは固有であり、
ＮＵＭＡモードで前記マルチプロセッシング・システムにオペレーティング・システムをメモリへロードする前に、ノーダル・マスタ・プロセッサおよびＮＵＭＡマスタ・プロセッサにより前記マルチプロセッシング・システムのリモート入出力を構成するシステム・ファームウェアを実行するステップを含み、
各ハードウェア構成コンポーネントは、
ホスト・プロセッサとホスト・メモリとを構成してテストするホスト・テスト・コンポーネントと、
ＮＵＭＡメモリを構成してテストするＮＵＭＡテスト・コンポーネントと、
ファームウェア・イメージをローカル・メモリへロードし、ファームウェア・バージョンをハードウェア・システム・コンソールに通知するソフトウェア・ロード機構と、
前記ファームウェア・バージョンが、前記ＮＵＭＡシステム内の全てのマルチプロセッシング・システムに対して同一であるという確認を、前記ハードウェア・システム・コンソールから受信する受信コンポーネントと、
ＮＵＭＡアダプタを構成して各マルチプロセッシング・システムを前記ＮＵＭＡシステムへ接続し、全てのホスト・プロセッサを初期化するアダプタ構成コンポーネントと、
前記システム・ファームウェアの実行を開始するために全てのホスト・プロセッサをリリースするリリース機構とを備えており、
メモリ・コヒーレンシをシステム・ファームウェアの実行開始時に確立するシステム。
【請求項６】
各マルチプロセッシング・システム内部のノーダル・マスタ・プロセッサを選択し、各システム内部の全ての他のプロセッサをノーダル・スレーブ・プロセッサに指定する複数のノーダル選択機構と、
前記個別のノーダル・マスタ・プロセッサの中からＮＵＭＡマスタ・プロセッサを選択し、全ての他のノーダル・マスタ・プロセッサをＮＵＭＡスレーブ・プロセッサに指定するＮＵＭＡ選択機構とを、
さらに備える請求項５に記載のシステム。
【請求項７】
マルチプロセッシング・システム内部の前記ノーダル・マスタ・プロセッサと各ノーダル・スレーブ・プロセッサとの間の１対１のハンドシェークを実行するハンドシェーク機構をさらに備え、前記ハンドシェークは、全てのノーダル・スレーブ・プロセッサの時間基準レジスタをノーダル時間基準ソースと同期させ、
各マルチプロセッシング・システム内の前記ノーダル・スレーブ・プロセッサを、前記ノーダル・スレーブ・プロセッサがＮＵＭＡスレーブ・プロセッサになるハイパーバイザ環境へ切り替える切替機構を備える請求項６に記載のシステム。
【請求項８】
前記ＮＵＭＡマスタ・プロセッサは、
単一のオペレーティング・システムをＮＵＭＡシステム・メモリへロードし、
前記オペレーティング・システムへ制御を移し、
全てのスレーブ・プロセッサを、前記ＮＵＭＡオペレーティング・システム内部の指定された位置へ割り当てるオペレーティング・システム・コードを実行する請求項６に記載のシステム。
【請求項９】
データ処理システムでの使用のためのコンピュータ読み取り可能媒体における、ＮＵＭＡマシンをブートするコンピュータ・プログラムであって、
対称マルチプロセッシング・システムを相互接続して構成されるＮＵＭＡシステム内で動作させるために、複数のスタンドアロンの対称マルチプロセッシング・システムを構成する命令と、
前記マルチプロセッシング・システムの各々へＮＵＭＡ  ＩＤを割り当てる命令とを含み、各ＩＤは固有であり、
ＮＵＭＡモードで前記マルチプロセッシング・システムにオペレーティング・システムをメモリへロードする前に、ノーダル・マスタ・プロセッサおよびＮＵＭＡマスタ・プロセッサにより前記マルチプロセッシング・システムのリモート入出力を構成するシステム・ファームウェアを実行する命令とを含み、
前記マルチプロセッシング・システムを構成する命令は、
ホスト・プロセッサとホスト・メモリとを構成してテストする命令と、
ＮＵＭＡメモリを構成してテストする命令と、
ファームウェア・イメージをローカル・メモリへロードし、ファームウェア・バージョンをハードウェア・システム・コンソールに通知する命令と、
前記ファームウェア・バージョンが、前記ＮＵＭＡシステム内の全てのマルチプロセッシング・システムに対して同一であるという確認を、前記ハードウェア・システム・コンソールから受信する命令と、
ＮＵＭＡアダプタを構成して各マルチプロセッシング・システムを前記ＮＵＭＡシステムへ接続し、全てのホスト・プロセッサを初期化する命令と、
前記システム・ファームウェアの実行を開始するために全てのホスト・プロセッサをリリースする命令と、
を含み、
メモリ・コヒーレンシがシステム・ファームウェアの実行開始時に確立される、コンピュータ実行可能なプログラム。
【請求項１０】
各マルチプロセッシング・システム内部のノーダル・マスタ・プロセッサを選択し、各システム内部の全ての他のプロセッサをノーダル・スレーブ・プロセッサに指定する命令と、
前記個別のノーダル・マスタ・プロセッサの中からＮＵＭＡマスタ・プロセッサを選択し、全ての他のノーダル・マスタ・プロセッサをＮＵＭＡスレーブ・プロセッサに指定する命令と、
をさらに含む請求項９に記載のプログラム。
【請求項１１】
マルチプロセッシング・システム内部の前記ノーダル・マスタ・プロセッサと各ノーダル・スレーブ・プロセッサとの間の１対１のハンドシェークを実行する命令をさらに含み、前記ハンドシェークは、全てのノーダル・スレーブ・プロセッサの時間基準レジスタをノーダル時間基準ソースと同期させ、
各マルチプロセッシング・システム内の前記ノーダル・スレーブ・プロセッサを、前記ノーダル・スレーブ・プロセッサがＮＵＭＡスレーブ・プロセッサになるハイパーバイザ環境へ切り替える命令を含む請求項１０に記載のプログラム。
【請求項１２】
前記ＮＵＭＡマスタ・プロセッサは、
単一のオペレーティング・システムをＮＵＭＡシステム・メモリへロードし、
前記オペレーティング・システムへ制御を移し、
全てのスレーブ・プロセッサを、前記ＮＵＭＡオペレーティング・システム内部の指定された位置へ割り当てるオペレーティング・システム・コードを実行する請求項１０に記載のプログラム。
【請求項１３】
ＮＵＭＡマシンをブートするシステムであって、
対称マルチプロセッシング・システムを相互接続して構成されるＮＵＭＡシステム内で動作させるために、複数のスタンドアロンの対称マルチプロセッシング・システムを構成する複数のハードウェア構成コンポーネントと、
ホスト・プロセッサとホスト・メモリとを構成してテストするホスト・テスト・コンポーネントと、
ＮＵＭＡメモリを構成してテストするＮＵＭＡテスト・コンポーネントと、
ファームウェア・イメージをローカル・メモリへロードし、ファームウェア・バージョンをハードウェア・システム・コンソールに通知するソフトウェア・ロード機構と、
前記ファームウェア・バージョンが、前記ＮＵＭＡシステム内の全てのマルチプロセッシング・システムに対して同一であるという確認を、前記ハードウェア・システム・コンソールから受信する受信コンポーネントと、
ＮＵＭＡアダプタを構成して各マルチプロセッシング・システムを前記ＮＵＭＡシステムへ接続し、全てのホスト・プロセッサを初期化するアダプタ構成コンポーネントと、
前記システム・ファームウェアの実行を開始するために全てのホスト・プロセッサをリリースするリリース機構と、
前記マルチプロセッシング・システムの各々へＮＵＭＡ  ＩＤを割り当てる識別コンポーネントとを備え、各ＩＤは固有であり、
各マルチプロセッシング・システム内部のノーダル・マスタ・プロセッサを選択し、各システム内部の全ての他のプロセッサをノーダル・スレーブ・プロセッサに指定する複数のノーダル選択機構と、
前記個別のノーダル・マスタ・プロセッサの中からＮＵＭＡマスタ・プロセッサを選択し、全ての他のノーダル・マスタ・プロセッサをＮＵＭＡスレーブ・プロセッサに指定するＮＵＭＡ選択機構と、
各マルチプロセッシング・システム内の前記ノーダル・スレーブ・プロセッサを、前記ノーダル・スレーブ・プロセッサがＮＵＭＡスレーブ・プロセッサになるハイパーバイザ環境へ切り替える切替機構と、
ＮＵＭＡモードで前記マルチプロセッシング・システムにオペレーティング・システムをメモリへロードする前に、ノーダル・マスタ・プロセッサおよびＮＵＭＡマスタ・プロセッサにより前記マルチプロセッシング・システムのリモート入出力を構成するシステム・ファームウェアを実行する機構を含み、メモリ・コヒーレンシがシステム・ファームウェアの実行開始時に確立されるシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マルチプロセッサ・コンピュータ・アーキテクチャに関し、特に、ＮＵＭＡ（Non-Uniform-Memory-Access）マシンに関する。
【０００２】
【従来の技術】
対称マルチプロセッシング（ＳＭＰ）・アーキテクチャは、１つのキャビネットに存在し同一のメモリを共用する複数の中央処理装置（ＣＰＵ）を含む。このアーキテクチャは、ＳＭＰシステムが、ユーザのニーズに依存して、例えばトランザクション・ボリュームのようなスケーラビリティを提供することを可能にする。
【０００３】
ＳＭＰシステムは、２〜３２あるいはそれ以上のＣＰＵを含み得る。しかしながら、ＳＭＰシステム内部の１つのＣＰＵに障害が起こる場合には、全体のシステムに障害が起こる。ＣＰＵ障害を防ぐために、クラスタ内の２以上のＳＭＰシステムを用いて、代理機能性（ｒｅｄｕｎｄａｎｃｙ）を与えることができる。この方式においては、クラスタ内の１つのＳＭＰシステムに障害が起こる場合に、その他のＳＭＰシステムは動作し続け、失われたシステムを補うことができる。
【０００４】
単一のＣＰＵが、一般的に、ＳＭＰシステムをブートし、オペレーティング・システムをロードし、その他のＣＰＵにオンラインをもたらす。ＳＭＰシステム内のＣＰＵは同一のメモリを共用するので、ただ１つのオペレーティング・システムとアプリケーションのただ１つのインスタンスとがメモリ内に存在する。ＳＭＰシステムは、プロセスがオーバーラップし得る時はいつでも、特に有益である。例えば、複数のアプリケーションを同時に実行可能である。他の例はマルチスレッド化であり、それは単一アプリケーション内部のコンカレント・オペレーションを含む。
【０００５】
ＮＵＭＡアーキテクチャは、メモリがクローズ（ｃｌｏｓｅ）・バンクとディスタント（ｄｉｓｔａｎｔ）・バンクとに分けられるマルチプロセッシング・アーキテクチャである。ＳＭＰと同じように、ＮＵＭＡマシンは、単一のメモリを共用する複数のＣＰＵを有する。しかしながら、ＮＵＭＡでは、ＣＰＵと同じ処理ボード上に位置するローカル・メモリは、他の処理ボード上に位置する共用メモリより速くアクセスされる。
【０００６】
ＳＭＰシステム・メモリ・マップ・アーキテクチャを構造化して、ＳＭＡ  ＮＵＭＡアダプタに接続された個々のＳＭＰシステムでＮＵＭＡマシンをサポートできる。各々のＳＭＰシステムがスタンドアロン・マシンである場合には、各ギガ・プロセッサ（ＧＰ）のＰＩＲレジスタ内のシステム・ノードＩＤフィールドは常時０にセットされる。ファームウェアは、システムＩＤ  ０に対応するメモリ・マップを常に使用して、リモート入出力（ＲＩＯ）構成を実行する。
【０００７】
いくつかのＳＭＰシステムが接続されてＮＵＭＡマシンを形成する場合には、個々のＳＭＰシステムが、それらに対するＮＵＭＡメモリ・マップに関して適切にセットアップされ、ＮＵＭＡマシン内で正確に作動する必要がある。スタンドアロン・モードでＳＭＰシステムをブートするためのファームウェア機能を維持する一方、同一のシステム・ファームウェア・イメージが、ＮＵＭＡモードでの通常のオペレーションのために全ての個々のＳＭＰマシンをブートするために、全体のＮＵＭＡマシンを構成する方法を提供できることが望ましい。
【０００８】
加えて、この新しい方法は、ＲＩＯ構成の実行に著しいブート時間を費やすことなしに、すなわち、各システム・ノードのＲＩＯ構成を同時に実行して、ＮＵＭＡマシンのブートを成し遂げ得ることが、さらに望ましい。
【０００９】
【発明が解決しようとする課題】
本発明は、ＮＵＭＡマシンをブートする方法、装置およびプログラムを提供する。
【００１０】
【課題を解決するための手段】
本発明は、複数のスタンドアロン，対称マルチプロセッシング（ＳＭＰ）システムを構成して、ＮＵＭＡシステム内で動作させるステップを含む。マスタ・プロセッサが各々のＳＭＰ内部で選択され、ＳＭＰ内のその他のプロセッサは、ＮＵＭＡスレーブ・プロセッサに指定される。続いて、ＮＵＭＡマスタ・プロセッサがＳＭＰマスタ・プロセッサから選択され、その他のＳＭＰマスタ・プロセッサはＮＵＭＡスレーブ・プロセッサに指定される。固有のＮＵＭＡ  ＩＤが、ＮＵＭＡシステムの一部となるそれぞれのＳＭＰへ割り当てられる。続いて、ＳＭＰが、システム・ファームウェアの実行開始時に正確に確立されたメモリ・コヒーレンシを用いて、ワンパスで、ＮＵＭＡモードでブートされる。
【００１１】
【発明の実施の形態】
本発明の特徴と思われる新規な特徴は、特許請求の範囲において説明される。しかしながら、本発明自身，使用の好適な態様，本発明のさらなる目的および利点は、図面と共に実施の形態を説明する以下の詳細な説明を参照することにより、最も良く理解できる。
【００１２】
図１を参照すると、本発明を実装可能なデータ処理システムを表す図が、本発明の好適な実施の形態に従って説明される。システム・ユニット１１０と、ビデオ・ディスプレイ端末１０２と、キーボード１０４と、フロッピー（Ｒ）・ドライブおよびその他のタイプの永続および取り外し可能記憶媒体等であるストレージ・デバイス１０８と、マウス１０６とを含むコンピュータ１００が示される。例えば、ジョイスティック，タッチパッド，タッチスクリーン，トラックボール，マイクロホン等のような追加の入力装置をパーソナル・コンピュータ１００の一部として含むことができる。コンピュータ１００は、好ましくは、コンピュータ１００内部のオペレーションにおいて、コンピュータ読み取り可能媒体に存在するシステム・ソフトウェアによって実装可能なグラフィカル・ユーザ・インターフェースも含む。
【００１３】
図２を参照すると、本発明を実装可能なデータ処理システムのブロック図が示される。データ処理システム２００は、コンピュータ例えば図１のコンピュータ１００の一例であり、本発明のプロセスを実現するコードまたは命令を配置可能である。データ処理システム２００は、ＰＣＩ（peripheral component interconnect）ローカル・バス・アーキテクチャを用いる。図示された例はＰＣＩバスを用いるが、他のバス・アーキテクチャ、例えばＡＧＰ（Accelerated Graphics Port）およびＩＳＡ（Industry Standard Architecture）が使用可能である。プロセッサ２０２，２０４，２０６および主記憶装置２１０は、ＰＣＩブリッジ２１２によってＰＣＩローカル・バス２０８へ接続されている。ＰＣＩブリッジ２１２は、また、プロセッサ２０２，２０４，および２０６のための統合されたメモリ・コントローラおよびキャッシュ・メモリを含むことができる。ＰＣＩローカル・バス２０８への追加の接続を、直接コンポーネント相互接続またはアドイン・ボードによって行うことが可能である。図示された例においては、ローカル・エリア・ネットワーク（ＬＡＮ）・アダプタ２１４，ＳＣＳＩホスト・バス・アダプタ２１６，および拡張バス・インターフェース２１８が、直接コンポーネント接続によってＰＣＩローカル・バス２０８へ接続される。それに対して、オーディオ・アダプタ２２０，グラフィックス・アダプタ２２２，およびオーディオ／ビデオ・アダプタ２２４が、拡張スロットへ挿入されたアドイン・ボードによってＰＣＩローカル・バス２０８へ接続される。拡張バス・インターフェース２１８は、キーボードおよびマウス・アダプタ２２５と、モデム２２６と、追加メモリ２２８とのための接続を提供する。ＳＣＳＩホスト・バス・アダプタ２１６は、ハード・ディスク・ドライブ２３０，磁気テープ・ドライブ２３２，およびＣＤ−ＲＯＭドライブ２３４のための接続を与える。典型的なＰＣＩローカル・バス実装例は、３または４つのＰＣＩ拡張スロットもしくはアドイン・コネクタをサポートする。
【００１４】
単一のオペレーティング・システムが、プロセッサ２０２，２０４，および２０６上で実行され、図２のデータ処理システム２００内の様々なコンポーネントの制御を調整し、提供するために使用される。オペレーティング・システムは、商業的に入手可能なオペレーティング・システム、例えばMicrosoft Corporationから入手可能なＷｉｎｄｏｗｓ（Ｒ）２０００とすることができる。Ｊａｖａ（Ｒ）のようなオブジェクト指向プログラミング・システムがオペレーティング・システムと共に実行され、データ処理システム２００上で実行されるＪａｖａ（Ｒ）プログラムまたはアプリケーションからのオペレーティング・システムへの呼び出しを与える。“Ｊａｖａ（Ｒ）”は、Sun Microsystems, Incの商標である。オペレーティング・システムとオブジェクト指向プログラミング・システムとアプリケーションもしくはプログラムとに対する命令は、ハード・ディスク・ドライブ２３０のようなストレージ・デバイス上に配置され、プロセッサ２０２，２０４，および２０６による実行のために主記憶装置２１０へロードされることとなる。
【００１５】
当業者は、図２におけるハードウェアが、実施状況に依存して変化し得るということを理解できる。その他の内部ハードウェアまたは周辺装置、例えばフラッシュＲＯＭ（もしくは同等の不揮発性メモリ）または光ディスク・ドライブ等を、図２に示されたハードウェアに加えて、あるいはそれらの代わりに用いることができる。さらに、本発明のプロセスは、マルチプロセッサ・データ処理システムに適用可能である。
【００１６】
図２に示された例および上述した例は、アーキテクチャの制限を含むことを意味するものではない。
【００１７】
個々のＳＭＰマシンを接続することによって、ＮＵＭＡ構成をサポートするために、対称マルチプロセッシング（ＳＭＰ）・システム・メモリ・マップが構造化される。個々のマシンがスタンドアロン・モードで用いられる場合には、プロセッサ内のシステムＩＤはゼロにセットされる。本発明は、同一のファームウェアを用いてＳＭＰおよびＮＵＭＡモードでシステムを構成する。ＮＵＭＡシステムのためのＨＳＣは、各ＳＭＰシステムのＮＵＲＡＭ（Non-Uniform Random Access Memory）内に格納されたＮＵＭＡ構成セットアップ変数に基づいて、ＮＵＭＡモードでシステムをセットアップするよう各ＳＭＰシステムのサービス・プロセッサに命令する。
【００１８】
ＮＵＭＡマシンは、ＮＵＭＡマシンを管理し構成するための１以上のハードウェア・システム・コンソール（ＨＳＣ）を有する。各ＳＭＰシステムは、それ自身の組み込み共通サービス・プロセッサ（ＣＳＰ）を有する。ＨＳＣは、通信リンクで全てのＣＳＰに接続する。
【００１９】
図３を参照すると、本発明に係るＳＭＰシステム構成のプロセスを説明するフローチャートが示される。起動プロセスのこの段階において、ＨＳＣはＳＭＰと通信し、ＮＵＭＡマシン内部のＳＭＰの位置を指定するＩＤを各ＳＭＰに割り当てる。システムの各ＣＳＰは、ＮＵＭＡ構成セットアップのための２つの不揮発性ＲＡＭ（ＮＶＲＡＭ）バイト変数（ＮＵＭＡ＿ｍｏｄｅ＿ｆｌａｇおよびＮＵＭＡ＿ｎｏｄｅ＿ｉｄ）を保持する。
【００２０】
・ＮＵＭＡ＿ｍｏｄｅ＿ｆｌａｇ：ＮＵＭＡ＿ｍｏｄｅ＿ｆｌａｇ＝０の場合には、システムは、スタンドアロンＳＭＰモードにある。他の場合には、モード、すなわち変数の値は、ＮＵＭＡマシン内部のシステム・ノードの存在を指示するビット・マスクである。
【００２１】
・ＮＵＭＡ＿ｎｏｄｅ＿ｉｄ：これは、このＮＶＲＡＭ変数が存在するＳＭＰシステムのシステム・ノードＩＤを含む。
【００２２】
ＨＳＣは、ＮＵＭＡマシンのための適正なマスク値でＮＵＭＡ＿ｍｏｄｅ＿ｆｌａｇをセットアップするよう全てのＣＳＰに命令し（ステップ３０１）、ＮＵＭＡ  ＩＤを割り当て、それぞれの固有のＮＵＭＡ＿ｎｏｄｅ＿ｉｄをセットアップするよう各ＣＳＰに命令する（ステップ３０２）。ＮＵＭＡ＿ｍｏｄｅ＿ｆｌａｇおよびＮＵＭＡ＿ｎｏｄｅ＿ｉｄがセットされた後に、ＨＳＣは、パワーオン・コマンドを各ノードのＣＳＰへ送信してそれぞれの付加ＳＭＰシステムをパワーオンする（ステップ３０３）。
【００２３】
図４を参照すると、本発明に従って、ホスト・プロセッサおよびホスト・メモリを構成するプロセスを説明するフローチャートが示される。各ノードのＣＳＰは、ホスト・プロセッサを構成してテストし（ステップ４０１）、ホスト・メモリを構成してテストする（ステップ４０２）。電源オン自己試験（ＰＯＳＴ）の後、メモリは、システム・メモリ基底アドレスを割り当てられるが、メモリは不連続であってもよい。例えば、ＳＭＰシステムのメモリは数表示メモリ領域と不連続とすることができる。しかしながら、２５６Ｇの大きさを越えることはできない。
【００２４】
ホスト・プロセッサおよびホスト・メモリが構成されてテストされた後に、ＣＳＰはＮＵＭＡメモリを構成してテストし（ステップ４０３）、ノードＩＤをＸにセットする（ステップ４０４）。ＣＳＰは、次に、ノードＩＤ  Ｘのために予約されたシステム・メモリ・マップを用いることにより、全てのリモート入出力（ＲＩＯ）ハブの基底アドレスをセットアップする（ステップ４０５）。
【００２５】
次に、ＣＳＰは、アドレス・ゼロから開始するローカル・システム・メモリを一時的にマップし（ステップ４０６）、システム・ファームウェア・イメージをそのローカル・システム・メモリへロードする（ステップ４０７）。そこから、ＣＳＰは、メモリ・マップがノードＩＤ  Ｘのために予約した開始アドレスＹにローカル・システム・メモリを永続的にマップする（ステップ４０８）。いったんローカル・システム・メモリがマップされると、ＣＳＰは、ロードされたファームウェア・イメージのバージョンをＨＳＣに知らせ（ステップ４０９）、ロードされたシステム・ファームウェア・イメージがその他のノードのファームウェア・イメージと同一であるということをＨＳＣが確認するのを待つ（ステップ４１０）。
【００２６】
ＣＳＰはそのＮＵＭＡアダプタを構成してシステムを最終ＮＵＭＡマシンへ接続し（ステップ４１１）、ローカル・ノーダル時間基準レジスタを初期化する（ステップ４１２）。
【００２７】
ギガ・プロセッサの論理区画ハードウェアを用いて、各ノードのＣＳＰは、全てのＧＰプロセッサを以下で始動させる（ステップ４１３）。
【００２８】
・ＭＳＲ［ＳＦ］＝１、これは、６４ビット・モードで実行コードを開始するようプロセッサに命じる。
【００２９】
・ＭＳＲ［ＨＶ］＝０、これは、プロセッサを論理区画環境に置く。
【００３０】
・ＨＩＤ０［１９］＝１、これは、プロセッサの時間基準ファンクションがＮＵＭＡモードで動作していることを指示する。これは、ＮＵＭＡファームウェア・フラグとしても働き、したがって、ファームウェアはＮＵＭＡ実行パスに従わなければならない。
【００３１】
・ＨＩＤ４［ＡＳ／ＲＳ］＝１、これは、ＲＳ／６０００サーバ・マシンの環境で稼働するプロセッサを選択する。
【００３２】
・ＨＩＤ４［ＲＭＯＲ］．このレジスタ（ノードのメモリ基底アドレス）を、式：システム・メモリ基底アドレス（Ｙ）＝ＮＵＭＡ＿ｎｏｄｅ＿ｉｄ×２５６Ｇに基づいてセットする。
【００３３】
ＨＩＤ４［ＲＭＬＲ］．このレジスタ（実モード限界レジスタ）をセットして１Ｇ実モード・アドレス・サイズ・イネーブリングをエンコードする。
【００３４】
・ＨＩＤ４［ＬＰＩＤ］＝０、これは、論理区画ＩＤを０すなわちデフォルト値にセットする。
【００３５】
・ＰＩＲ［２３，２５］＝ＮＵＭＡ＿ｎｏｄｅ＿ｉｄ．このレジスタを、プロセッサが存在するＳＭＰシステムのｎｏｄｅ＿ｉｄにセットする。
【００３６】
ＮＩＡ＝０ｘ１００．これは、システム・ファームウェアをセットしてそのエントリー・ポイントにおいて実行させる。
【００３７】
ＣＳＰは、全てのホスト・プロセッサのプログラム・カウンタをシステム・ファームウェアのエントリー・ポイントにセットし（ステップ４１４）、それらがシステム・ファームウェアの実行を開始できるように全てのホスト・プロセッサをリリースする（ステップ４１５）。上述のセットアップは、個々のノードにおけるシステム・ファームウェア・イメージが、まるでそれがメモリ・アドレス０にロードされたかのように実行されることを可能にする。
【００３８】
図５を参照すると、本発明に従って、ＮＵＭＡシステムをブートするプロセスを説明するフローチャートが示される。本プロセスは、各ノードが、ノードのＲＩＯを構成することとなるマスタ・プロセッサを選択するときに開始する（ステップ５０１）。各システム・ノードのファームウェアは、マスタ・ソフトウェア・セマフォを実装している。同一のシステム・ノードからの全てのプロセッサはこのセマフォを獲得するために競合することとなる。セマフォを首尾よく獲得した勝者は、ノーダル・マスタ・プロセッサになる。マスタ・ノーダル・プロセッサにならないプロセッサは、スレーブ・プロセッサと称される（ステップ５０２）。ノーダル・スレーブ・プロセッサは、ノーダル・マスタ・プロセッサが、１対１のハンドシェークを開始するのを待ち（ステップ５０３）、ハンドシェークの開始時点で、スレーブ・プロセッサは、それらの時間基準（ＴＢ）レジスタをセットする（ステップ５０４）。スレーブ・プロセッサは、次に、ハイパーバイザ環境へ切り替えＮＵＭＡスレーブ・プロセッサになる（ステップ５０５）。ハイパーバイザ環境は、プロセッサが、システムのハードウェアへの制限されないアクセスを有する実行環境である。全てのＮＵＭＡスレーブ・プロセッサは、次に、ノード０に存在するファームウェアを実行し、ＮＵＭＡマスタ・プロセッサが、ＮＵＭＡスレーブ・プロセッサにさらに進行することを許可するのを待つ（ステップ５０６）。
【００３９】
ノーダル・マスタ・プロセッサに選ばれたノーダル・プロセッサは、ローカル・ノードのＲＩＯハブを構成しなければならない（ステップ５０７）。ＲＩＯ構成を終了した後、ノーダル・マスタ・プロセッサは、そのＴＢレジスタをノーダルＴＢと同期させ（ステップ５０８）、各スレーブ・プロセッサもそのＴＢレジスタに同期するように、各ノーダル・スレーブ・プロセッサとハンドシェークする（ステップ５０９）。ハンドシェークの後、ステップ５０５に示されるようにノーダル・スレーブ・プロセッサは、区画環境を離れてハイパーバイザ環境へ進む。スレーブ・プロセッサは、この時点では、システム・ノードＩＤ  ０のメモリからフェッチされることとなる同一のコードの実行を継続する。これらのノーダル・スレーブ・プロセッサは、この時点ではＮＵＭＡマシンのＮＵＭＡスレーブ・プロセッサであり、ＮＵＭＡマスタ・プロセッサが１対１のハンドシェークを開始するのを待つ。各ノーダル・マスタ・プロセッサは、次に、ノードのグローバル・キュー割り込みマスク（ＧＱＩＲＭ）・レジスタをセットアップする（ステップ５１０）。
【００４０】
各ノーダル・マスタ・プロセッサは、区画環境を離れて、グローバル・ハイパーバイザ環境およびハイパーバイザ・メモリ区域へ進み、ＮＵＭＡマスタ・プロセッサになるために競合する（ステップ５１１）。システム・ファームウェアは、ＮＵＭＡマスタ・ソフトウェア・セマフォも実装する。全てのノーダル・マスタ・プロセッサがハイパーバイザ環境へ全面的に切り替えた後に、システム・ノードＩＤ  ０に対するファームウェアのＮＵＭＡマスタ・ソフトウェア・セマフォが競合ターゲットになる。再び、このＮＵＭＡマスタ・セマフォを首尾よく獲得した勝者は、ＮＵＭＡマスタ・プロセッサになる（ステップ５１２）。ノーダル・マスタ・プロセッサがＮＵＭＡマスタ・プロセッサになることができない場合には、ノーダル・マスタ・プロセッサは、ＮＵＭＡマスタ・プロセッサとの１対１のハンドシェークを待ち、ＮＵＭＡスレーブ・プロセッサになることとなる（ステップ５１３）。
【００４１】
ＮＵＭＡマスタ・プロセッサとして選択されたプロセッサは、全ての更新済みノーダルＲＩＯ構造，全てのノーダル・メモリ・ステータス，および全てのノーダル・プロセッサ・ステータスを集める（ステップ５１４）。ＮＵＭＡマスタ・プロセッサは、次に、オープン・ファームウェアを実行し、全体のＮＵＭＡマシンのためのオープン・ファームウェア・デバイス・ツリーを作成する（ステップ５１５）。ＮＵＭＡマスタ・プロセッサは、それがまるで論理的に巨大なＳＭＰマシンであるかのようにＮＵＭＡマシンを続いてブートする。これは、オペレーティング・システム（ＯＳ）をＮＵＭＡシステム・メモリへロードし、ＯＳへ制御を移すステップを含む（ステップ５１６）。ＮＵＭＡマスタ・プロセッサは、ＯＳコードを実行して、ＮＵＭＡスレーブ・プロセッサの全てをＯＳ内のそれらの宛先に導く（ステップ５１７）。
【００４２】
本発明の方法は、システム・ファームウェアの実行の前に、ＳＭＰシステム・ノード間にメモリ・コヒーレンシを確立する。これは、ＮＵＭＡマシンがコヒーレント・システム・メモリで始動されることを可能にし、従来のツーパス方式の非コヒーレンシを回避する。
【００４３】
完全に機能を果たすデータ処理システムの状況において本発明を説明してきたが、当業者は、本発明のプロセスは、コンピュータ読み取り可能媒体の命令の形式および様々な形式で分散されていてもよいということを理解できる。そして、分散を実行するために実際に用いられる信号伝達媒体の特定のタイプにかかわらず本発明は等しく適合するということを理解できるということを留意されたい。コンピュータ読み取り可能媒体の例は、記録可能なタイプの媒体、たとえばフロッピー（Ｒ）・ディスク，ハード・ディスク・ドライブ，ＲＡＭ，ＣＤ−ＲＯＭ，ＤＶＤ−ＲＯＭと、伝送タイプの媒体、たとえばディジタルおよびアナログ通信リンク，無線周波数および光波伝送等の伝送形式を用いる有線または無線通信リンクとを含む。コンピュータ読み取り可能媒体は、特定のデータ処理システムにおける実際の使用のためにデコードされるコード化フォーマットの形式をとることができる。
【００４４】
まとめとして、本発明の構成に関して以下の事項を開示する。
（１）ＮＵＭＡマシンをブートする方法であって、複数のスタンドアロン，対称マルチプロセッシング・システムを構成して、ＮＵＭＡシステム内部で動作させるステップと、前記マルチプロセッシング・システムの各々へＮＵＭＡ  ＩＤを割り当てるステップとを含み、各ＩＤは固有であり、ワンパスで、ＮＵＭＡモードで前記マルチプロセッシング・システムをブートするステップを含み、メモリ・コヒーレンシがシステム・ファームウェアの実行開始時に確立される方法。
（２）前記マルチプロセッシング・システムを構成するステップは、ホスト・プロセッサとホスト・メモリとを構成してテストするステップと、ＮＵＭＡメモリを構成してテストするステップと、ファームウェア・イメージをローカル・メモリへロードし、ファームウェア・バージョンをハードウェア・システム・コンソールに通知するステップと、前記ファームウェア・バージョンが、前記ＮＵＭＡシステム内の全てのマルチプロセッシング・システムに対して同一であるという確認を、前記ハードウェア・システム・コンソールから受信するステップと、ＮＵＭＡアダプタを構成して各マルチプロセッシング・システムを前記ＮＵＭＡシステムへ接続し、全てのホスト・プロセッサを初期化するステップと、全てのホスト・プロセッサをリリースしてシステム・ファームウェアを実行するステップと、をさらに含む上記（１）に記載の方法。
（３）各マルチプロセッシング・システム内部のノーダル・マスタ・プロセッサを選択し、各システム内部の全ての他のプロセッサをノーダル・スレーブ・プロセッサに指定するステップと、前記個別のノーダル・マスタ・プロセッサの中からＮＵＭＡマスタ・プロセッサを選択し、全ての他のノーダル・マスタ・プロセッサをＮＵＭＡスレーブ・プロセッサに指定するステップと、をさらに含む上記（１）に記載の方法。
（４）マルチプロセッシング・システム内部の前記ノーダル・マスタ・プロセッサと各ノーダル・スレーブ・プロセッサとの間の１対１のハンドシェークを実行するステップをさらに含み、前記ハンドシェークは、全てのノーダル・スレーブ・プロセッサの時間基準レジスタをノーダル時間基準ソースと同期させ、各マルチプロセッシング・システム内の前記ノーダル・スレーブ・プロセッサを、前記ノーダル・スレーブ・プロセッサがＮＵＭＡスレーブ・プロセッサになるハイパーバイザ環境へ切り替えるステップを含む上記（３）に記載の方法。
（５）前記ＮＵＭＡマスタ・プロセッサは、単一のオペレーティング・システムをＮＵＭＡシステム・メモリへロードし、前記オペレーティング・システムへ制御を移し、全てのスレーブ・プロセッサを、前記ＮＵＭＡオペレーティング・システム内部の指定された位置へ割り当てるオペレーティング・システム・コードを実行する上記（３）に記載の方法。
（６）ＮＵＭＡマシンをブートするシステムであって、複数のスタンドアロン，対称マルチプロセッシング・システムを構成して、ＮＵＭＡシステム内部で動作させる複数のハードウェア構成コンポーネントと、前記マルチプロセッシング・システムの各々へＮＵＭＡ  ＩＤを割り当てる識別コンポーネントとを備え、各ＩＤは固有であり、ワンパスで、ＮＵＭＡモードで前記マルチプロセッシング・システムをブートするブート機構を備え、メモリ・コヒーレンシが、システム・ファームウェアの実行開始時に確立されるシステム。
（７）各ハードウェア構成コンポーネントは、ホスト・プロセッサとホスト・メモリとを構成してテストするホスト・テスト・コンポーネントと、ＮＵＭＡメモリを構成してテストするＮＵＭＡテスト・コンポーネントと、ファームウェア・イメージをローカル・メモリへロードし、ファームウェア・バージョンをハードウェア・システム・コンソールに通知するソフトウェア・ロード機構と、前記ファームウェア・バージョンが、前記ＮＵＭＡシステム内の全てのマルチプロセッシング・システムに対して同一であるという確認を、前記ハードウェア・システム・コンソールから受信する受信コンポーネントと、ＮＵＭＡアダプタを構成して各マルチプロセッシング・システムを前記ＮＵＭＡシステムへ接続し、全てのホスト・プロセッサを初期化するアダプタ構成コンポーネントと、全てのホスト・プロセッサをリリースしてシステム・ファームウェアを実行するリリース機構とをさらに備える上記（６）に記載のシステム。
（８）各マルチプロセッシング・システム内部のノーダル・マスタ・プロセッサを選択し、各システム内部の全ての他のプロセッサをノーダル・スレーブ・プロセッサに指定する複数のノーダル選択機構と、前記個別のノーダル・マスタ・プロセッサの中からＮＵＭＡマスタ・プロセッサを選択し、全ての他のノーダル・マスタ・プロセッサをＮＵＭＡスレーブ・プロセッサに指定するＮＵＭＡ選択機構とを、さらに備える上記（６）に記載のシステム。
（９）マルチプロセッシング・システム内部の前記ノーダル・マスタ・プロセッサと各ノーダル・スレーブ・プロセッサとの間の１対１のハンドシェークを実行するハンドシェーク機構をさらに備え、前記ハンドシェークは、全てのノーダル・スレーブ・プロセッサの時間基準レジスタをノーダル時間基準ソースと同期させ、各マルチプロセッシング・システム内の前記ノーダル・スレーブ・プロセッサを、前記ノーダル・スレーブ・プロセッサがＮＵＭＡスレーブ・プロセッサになるハイパーバイザ環境へ切り替える切替機構を備える上記（８）に記載のシステム。
（１０）前記ＮＵＭＡマスタ・プロセッサは、単一のオペレーティング・システムをＮＵＭＡシステム・メモリへロードし、前記オペレーティング・システムへ制御を移し、全てのスレーブ・プロセッサを、前記ＮＵＭＡオペレーティング・システム内部の指定された位置へ割り当てるオペレーティング・システム・コードを実行する上記（８）に記載のシステム。
（１１）データ処理システムでの使用のためのコンピュータ読み取り可能媒体における、ＮＵＭＡマシンをブートするコンピュータ・プログラム・プロダクトであって、複数のスタンドアロン，対称マルチプロセッシング・システムを構成して、ＮＵＭＡシステム内部で動作させる命令と、前記マルチプロセッシング・システムの各々へＮＵＭＡ  ＩＤを割り当てる命令とを含み、各ＩＤは固有であり、ワンパスで、ＮＵＭＡモードで前記マルチプロセッシング・システムをブートする命令を含み、メモリ・コヒーレンシがシステム・ファームウェアの実行開始時に確立されるコンピュータ・プログラム・プロダクト。
（１２）前記マルチプロセッシング・システムを構成する命令は、ホスト・プロセッサとホスト・メモリとを構成してテストする命令と、ＮＵＭＡメモリを構成してテストする命令と、ファームウェア・イメージをローカル・メモリへロードし、ファームウェア・バージョンをハードウェア・システム・コンソールに通知する命令と、前記ファームウェア・バージョンが、前記ＮＵＭＡシステム内の全てのマルチプロセッシング・システムに対して同一であるという確認を、前記ハードウェア・システム・コンソールから受信する命令と、ＮＵＭＡアダプタを構成して各マルチプロセッシング・システムを前記ＮＵＭＡシステムへ接続し、全てのホスト・プロセッサを初期化する命令と、全てのホスト・プロセッサをリリースしてシステム・ファームウェアを実行する命令と、をさらに含む上記（１１）に記載のコンピュータ・プログラム・プロダクト。
（１３）各マルチプロセッシング・システム内部のノーダル・マスタ・プロセッサを選択し、各システム内部の全ての他のプロセッサをノーダル・スレーブ・プロセッサに指定する命令と、前記個別のノーダル・マスタ・プロセッサの中からＮＵＭＡマスタ・プロセッサを選択し、全ての他のノーダル・マスタ・プロセッサをＮＵＭＡスレーブ・プロセッサに指定する命令と、をさらに含む上記（１１）に記載のコンピュータ・プログラム・プロダクト。
（１４）マルチプロセッシング・システム内部の前記ノーダル・マスタ・プロセッサと各ノーダル・スレーブ・プロセッサとの間の１対１のハンドシェークを実行する命令をさらに含み、前記ハンドシェークは、全てのノーダル・スレーブ・プロセッサの時間基準レジスタをノーダル時間基準ソースと同期させ、各マルチプロセッシング・システム内の前記ノーダル・スレーブ・プロセッサを、前記ノーダル・スレーブ・プロセッサがＮＵＭＡスレーブ・プロセッサになるハイパーバイザ環境へ切り替える命令を含む上記（１３）に記載のコンピュータ・プログラム・プロダクト。
（１５）前記ＮＵＭＡマスタ・プロセッサは、単一のオペレーティング・システムをＮＵＭＡシステム・メモリへロードし、前記オペレーティング・システムへ制御を移し、全てのスレーブ・プロセッサを、前記ＮＵＭＡオペレーティング・システム内部の指定された位置へ割り当てるオペレーティング・システム・コードを実行する上記（１３）に記載のコンピュータ・プログラム・プロダクト。
（１６）ＮＵＭＡマシンをブートするシステムであって、複数のスタンドアロン，対称マルチプロセッシング・システムを構成して、ＮＵＭＡシステム内部で動作させる複数のハードウェア構成コンポーネントと、ホスト・プロセッサとホスト・メモリとを構成してテストするホスト・テスト・コンポーネントと、ＮＵＭＡメモリを構成してテストするＮＵＭＡテスト・コンポーネントと、ファームウェア・イメージをローカル・メモリへロードし、ファームウェア・バージョンをハードウェア・システム・コンソールに通知するソフトウェア・ロード機構と、前記ファームウェア・バージョンが、前記ＮＵＭＡシステム内の全てのマルチプロセッシング・システムに対して同一であるという確認を、前記ハードウェア・システム・コンソールから受信する受信コンポーネントと、ＮＵＭＡアダプタを構成して各マルチプロセッシング・システムを前記ＮＵＭＡシステムへ接続し、全てのホスト・プロセッサを初期化するアダプタ構成コンポーネントと、全てのホスト・プロセッサをリリースしてシステム・ファームウェアを実行するリリース機構と、前記マルチプロセッシング・システムの各々へＮＵＭＡ  ＩＤを割り当てる識別コンポーネントとを備え、各ＩＤは固有であり、各マルチプロセッシング・システム内部のノーダル・マスタ・プロセッサを選択し、各システム内部の全ての他のプロセッサをノーダル・スレーブ・プロセッサに指定する複数のノーダル選択機構と、前記個別のノーダル・マスタ・プロセッサの中からＮＵＭＡマスタ・プロセッサを選択し、全ての他のノーダル・マスタ・プロセッサをＮＵＭＡスレーブ・プロセッサに指定するＮＵＭＡ選択機構と、各マルチプロセッシング・システム内の前記ノーダル・スレーブ・プロセッサを、前記ノーダル・スレーブ・プロセッサがＮＵＭＡスレーブ・プロセッサになるハイパーバイザ環境へ切り替える切替機構と、ワンパスで、ＮＵＭＡモードで前記マルチプロセッシング・システムをブートするブート機構とを備え、メモリ・コヒーレンシが、システム・ファームウェアの実行開始時に確立されるシステム。
【図面の簡単な説明】
【図１】本発明を実装可能なデータ処理システムを表す図である。
【図２】本発明を実装可能なデータ処理システムのブロック図である。
【図３】本発明に係るＳＭＰシステム構成のプロセスを説明するフローチャートである。
【図４】本発明に従ってホスト・プロセッサおよびホスト・メモリを構成するプロセスを説明するフローチャートである。
【図５】本発明に従ってＮＵＭＡシステムをブートするプロセスを説明するフローチャートである。
【符号の説明】
１００  コンピュータ
１０２  ビデオ・ディスプレイ端末
１０４  キーボード
１０６  マウス
１０８  ストレージ・デバイス
１１０  システム・ユニット
２００  データ処理システム
２０２，２０４，２０６  プロセッサ
２０８  ＰＣＩローカル・バス
２１０  主記憶装置
２１２  ＰＣＩブリッジ
２１４  ＬＡＮアダプタ
２１６  ＳＣＳＩホスト・バス・アダプタ
２１８  拡張バス・インターフェース
２２０  オーディオ・アダプタ
２２２  グラフィックス・アダプタ
２２４  オーディオ／ビデオ・アダプタ
２２５  キーボードおよびマウス・アダプタ
２２６  モデム
２２８  追加メモリ
２３０  ハード・ディスク・ドライブ
２３２  磁気テープ・ドライブ
２３４  ＣＤ−ＲＯＭドライブ
【図１】
0003974440.tif 000002
【図２】
0003974440.tif 000003
【図３】
0003974440.tif 000004
【図４】
0003974440.tif 000005
【図５】
0003974440.tif 000006