(57)【特許請求の範囲】
【請求項１】
データ処理システムであって、
システム相互接続と、
各々が、少なくとも１つのプロセッサとデータ記憶装置とを含む、前記システム相互接続に結合された複数の処理ノードと、
前記複数の処理ノードのうちの少なくとも１つのシステム・メモリに常駐する構成ユーティリティであって、前記データ処理システムの区分に関する情報に基づき、前記システム相互接続を介する通信を介して、前記複数の処理ノードを、単一のＮＵＭＡ（non-uniform memory access）および複数の独立のデータ処理システムのうちの１つに選択的に構成する前記構成ユーティリティとを含み、
前記通信が、前記複数の処理ノードのうちのマスタ処理ノードから当該マスタ処理ノードと同一の区分に属する他の処理ノードに送られる、当該他の処理ノードが有する資源のリストの要求を含み、前記マスタ処理ノードは、得られた資源のリストを基に前記区分の全体構成を判定し、前記資源のリストを再マッピングする方法を計算する、  データ処理システム。
【請求項２】
前記複数の独立のデータ処理システムのうちの少なくとも１つが、前記複数の処理ノードのうちの少なくとも２つを含むＮＵＭＡ（non-uniform memory access）システムである、請求項１に記載のデータ処理システム。
【請求項３】
前記複数の独立のデータ処理システムが、前記複数の処理ノードのばらばらのサブセットを含む、請求項１に記載のデータ処理システム。
【請求項４】
前記データ処理システムが、前記複数の処理ノードのうちの少なくとも１つのデータ記憶装置に格納されたブート・コードを含み、前記構成ユーティリティが、前記ブート・コードの部分を形成する、請求項１に記載のデータ処理システム。
【請求項５】
システム相互接続に結合された複数の処理ノードを１つまたは複数のデータ処理システムに構成する方法であって、前記複数の処理ノードのそれぞれは、少なくとも１つのプロセッサとデータ記憶装置とを含み、前記方法は、
前記システム相互接続を介して少なくとも１つの構成メッセージを送るステップと、
前記データ処理システムの区分に関する情報に基づき、前記少なくとも１つの構成メッセージを使用して、前記複数の処理ノードを、単一のＮＵＭＡ（non-uniform memory access）システムおよび複数の独立のデータ処理システムのうちの１つに構成するステップとを含み、
前記少なくとも１つの構成メッセージを送るステップが、前記複数の処理ノードのうちのマスタ処理ノードから当該マスタ処理ノードと同一の区分に属する他の処理ノードへ、当該他の処理ノードが有する資源のリストの要求を送るステップを含み、
前記構成するステップが、前記マスタ処理ノードが、得られた資源のリストを基に前記区分の全体構成を判定し、前記資源のリストを再マッピングする方法を計算するステップを含む、方法。
【請求項６】
前記構成するステップが、前記複数の処理ノードを、前記複数の処理ノードのうちの少なくとも２つを含む少なくとも１つのＮＵＭＡ（non-uniform memory access）サブシステムに構成するステップを含む、請求項５に記載の方法。
【請求項７】
前記複数の処理ノードを複数の独立のデータ処理システムに構成するステップが、前記複数の処理ノードを、前記複数の処理ノードのばらばらのサブセットを含む複数の独立のデータ処理システムに構成するステップを含む、請求項５に記載の方法。
【請求項８】
前記複数の処理ノードのうちの少なくとも１つのデータ記憶装置に、ブート・コードの部分を形成する構成ユーティリティを格納するステップと、
前記複数の処理ノードを構成するために前記構成ユーティリティを実行するステップと
をさらに含む、請求項５に記載の方法。
【請求項９】
複数の処理ノードを結合されたシステム相互接続を含むデータ処理システムを構成するためのプログラムを記録したコンピュータ読み取り可能な記録媒体であって、
前記複数の処理ノードのそれぞれが、少なくとも１つのプロセッサとデータ記憶装置とを含み、前記コンピュータに、
前記データ処理システムの区分に関する情報に基づき、前記複数の処理ノードのうちのマスタ処理ノードから当該マスタ処理ノードと同一の区分に属する他の処理ノードへ、当該他の処理ノードが有する資源のリストの要求である少なくとも１つの構成メッセージを、前記システム相互接続を介して送るステップと、
前記複数の処理ノードを、単一のＮＵＭＡ（non-uniform memory access）システムおよび複数の独立のデータ処理システムのうちの１つに構成するステップであって、前記マスタ処理ノードが、得られた資源のリストを基に前記区分の全体構成を判定し、前記資源のリストを再マッピングする方法を計算するステップとを実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１０】
前記複数の独立のデータ処理システムのうちの少なくとも１つが、前記複数の処理ノードのうちの少なくとも２つを含むＮＵＭＡ（non-uniform memory access）システムである、請求項９に記載のコンピュータ読み取り可能な記録媒体。
【請求項１１】
前記複数の独立のデータ処理システムが、前記複数の処理ノードのばらばらのサブセットを含む、請求項９に記載のコンピュータ読み取り可能な記録媒体。
【請求項１２】
前記構成ユーティリティが、ブート・コードの部分を形成する、請求項９に記載のコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にはデータ処理に関し、具体的には、ＮＵＭＡ（ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）データ処理システムに関する。より具体的には、本発明は、少なくとも１つのＮＵＭＡデータ処理システムを含む１つまたは複数のデータ処理システムとして構成することのできる、相互接続された処理ノードの集合に関する。
【０００２】
【従来の技術】
コンピュータの技術では、複数の個々のプロセッサの処理能力を連繋してたばねることによって、高いコンピュータ・システム性能を達成できることが周知である。マルチプロセッサ（ＭＰ）コンピュータ・システムは、複数の異なるトポロジを用いて設計することができ、そのさまざまなトポロジのそれぞれが、各応用分野の性能要件およびソフトウェア環境に応じて特定の応用分野により適する場合がある。一般的なＭＰコンピュータ・トポロジの１つが、複数のプロセッサが、システム・メモリおよび入出力サブシステムなど、通常は共用システム相互接続に結合される共通資源を共用する、対称型マルチプロセッサ（ＳＭＰ）構成である。そのようなコンピュータ・システムが対称型と呼ばれるのは、ＳＭＰコンピュータ・システム内のすべてのプロセッサが、共用システム・メモリに格納されたデータに関して、理想的には同一のアクセス待ち時間を有するからである。
【０００３】
ＳＭＰコンピュータ・システムでは、比較的単純なプロセッサ間通信およびデータ共用の方法論の使用が可能であるが、ＳＭＰコンピュータ・システムは、スケーラビリティが制限されている。言い換えると、ＳＭＰコンピュータ・システムの性能は、一般に、スケールに伴って（すなわちより多くのプロセッサの追加に伴って）向上すると期待することができるが、固有のバス、メモリおよび入出力の帯域幅制限があるので、これらの共用資源の利用が最適化される実装依存のサイズを超えてＳＭＰをスケーリングすることから大きい利益を得ることができない。したがって、ＳＭＰトポロジ自体は、システムのスケールが増大するにつれて、特にシステム・メモリでの帯域幅制限からある程度の損害をこうむる。ＳＭＰコンピュータ・システムは、製造効率の観点からもスケーリングが良好ではない。たとえば、いくつかの構成要素は、単一プロセッサと小規模なＳＭＰコンピュータ・システムの両方での使用のために最適化することができるが、そのような構成要素は、大規模なＳＭＰでの使用に関して非効率的であることがしばしばである。逆に、大規模ＳＭＰでの使用のために設計された構成要素は、コストの観点から、小規模のシステムでの使用のためには非実用的になる可能性がある。
【０００４】
その結果、最近、ＮＵＭＡ（ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）と称する、多少の追加の複雑さを犠牲にしてＳＭＰコンピュータ・システムの制限の多くに対処するＭＰコンピュータ・システム・トポロジへの関心が高まっている。通常のＮＵＭＡコンピュータ・システムには、それぞれが１つまたは複数のプロセッサとローカル「システム」メモリとを含む複数の相互接続されたノードが含まれる。このようなコンピュータ・システムが、ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ（不均一なメモリ・アクセス）を有するといわれるのは、各プロセッサが、そのローカル・ノードのシステム・メモリに格納されたデータに関して、リモート・ノードのシステム・メモリに格納されたデータに関するものよりも低いアクセス待ち時間を有するからである。ＮＵＭＡシステムは、さらに、データ・コヒーレンシが異なるノードのキャッシュ間で維持されるか否かに応じて、非コヒーレントまたはキャッシュ・コヒーレントのいずれかとして分類することができる。キャッシュ・コヒーレントＮＵＭＡ（ＣＣ−ＮＵＭＡ）システムの複雑さは、各ノード内のさまざまなレベルのキャッシュ・メモリおよびシステム・メモリの間だけではなく、異なるノード内のキャッシュ・メモリおよびシステム・メモリの間でもデータ・コヒーレンシをハードウェアが維持するために必要な追加の通信に帰するところが大きい。しかし、ＮＵＭＡコンピュータ・システムは、ＮＵＭＡコンピュータ・システム内の各ノードを、より小さい単一プロセッサまたはＳＭＰシステムとして実施することができるので、通常のＳＭＰコンピュータ・システムのスケーラビリティ制限に対処する。したがって、各ノード内の共用コンポーネントを、１つまたは少数のプロセッサによる使用のために最適化できると同時に、システム全体が、比較的低い待ち時間を維持しながらより大きいスケールの並列性を利用できることから利益を得る。
【０００５】
【発明が解決しようとする課題】
本発明では、大規模ＮＵＭＡデータ処理システムの出費が、変化する作業負荷を有する環境などのいくつかのコンピューティング環境では正当化が困難であることが認識されている。すなわち、いくつかのコンピューティング環境では、単一のアプリケーションを実行するために大規模ＮＵＭＡデータ処理システムの処理資源が必要になる頻度が低く、異なるオペレーティング・システムまたは異なるアプリケーションの走行のために複数のより小さいデータ処理システムが必要になる頻度が高い。本発明の以前には、そのようなコンピューティング環境の変化する作業負荷は、異なるスケールの複数のコンピュータ・システムによるか、必要に応じてノードを接続または切断することによってＮＵＭＡシステムを物理的に再構成することによってのみ対処することができた。
【０００６】
【課題を解決するための手段】
当技術分野の上述の短所に対処するために、本発明は、それぞれに少なくとも１つのプロセッサとデータ記憶装置とが含まれる複数の処理ノードを含むデータ処理システムを提供する。複数の処理ノードは、システム相互接続によって一緒に結合される。このデータ処理システムには、さらに、複数の処理ノードのうちの少なくとも１つのデータ記憶装置に常駐する構成ユーティリティが含まれる。構成ユーティリティは、システム相互接続を介する通信を介して、複数の処理ノードを、単独のＮＵＭＡ（ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）システムまたは複数の独立のデータ処理システムのいずれかに選択的に構成する。
【０００７】
【発明の実施の形態】
システムの概要
ここで図面、具体的には図１を参照すると、本発明によるデータ処理システムの実施例が示されている。図示の実施例は、たとえば、ワークステーション、サーバまたはメインフレーム・コンピュータとして実現することができる。図からわかるように、データ処理システム６には、ノード相互接続２２によって相互接続された複数の処理ノード８（この場合は４つ）が含まれる。下でさらに説明するように、ノード間データ・コヒーレンスは、相互接続コヒーレンス・ユニット（ＩＣＵ）３６によって維持される。
【０００８】
ここで図２を参照すると、処理ノード８ａないし８ｄのそれぞれには、１つまたは複数のプロセッサ１０ａないし１０ｍ、ローカル相互接続１６および、メモリ・コントローラ１７を介してアクセスされるシステム・メモリ１８が含まれる。プロセッサ１０ａないし１０ｍは、同一であることが好ましい（必要ではない）。全般的にプロセッサ・コア１２として示される、プログラム命令の実行に使用されるレジスタ、命令シーケンシング論理および実行ユニットのほかに、プロセッサ１０ａないし１０ｍのそれぞれには、システム・メモリ１８から関連するプロセッサ・コア１２にデータをステージングするのに使用される、オンチップのキャッシュ階層１４が含まれる。キャッシュ階層１４のそれぞれには、たとえば、８ないし３２キロバイト（ｋＢ）の記憶容量を有するレベル１（Ｌ１）キャッシュと、１ないし１６メガバイト（ＭＢ）の記憶容量を有するレベル２（Ｌ２）キャッシュを含めることができる。
【０００９】
処理ノード８ａないし８ｄのそれぞれには、さらに、ローカル相互接続１６とノード相互接続２２の間に結合されるめいめいのノード・コントローラ２０が含まれる。ノード・コントローラ２０のそれぞれは、少なくとも２つの機能を実行することによって、リモートの処理ノード８のローカル・エージェントとして働く。第１に、各ノード・コントローラ２０は、関連するローカル相互接続１６をスヌープし、リモートの処理ノード８へのローカル通信トランザクションの伝送を容易にする。第２に、各ノード・コントローラ２０は、ノード相互接続２２上の通信トランザクションをスヌープし、関連するローカル相互接続１６上の関係する通信トランザクション（たとえば読取要求）をマスタリングする。各ローカル相互接続１６上の通信は、アービタ２４によって制御される。アービタ２４は、プロセッサ１０によって生成されるバス要求信号に基づいてローカル相互接続１６へのアクセスを調整し、ローカル相互接続１６上のスヌープされた通信トランザクションに関するコヒーレンシ応答をコンパイルする。
【００１０】
ローカル相互接続１６は、メザニン・バス・ブリッジ２６を介してメザニン・バス３０に結合され、メザニン・バス３０は、たとえばＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）ローカル・バスとして実施することができる。メザニン・バス・ブリッジ２６は、プロセッサ１０がそれを介してバス・メモリまたは入出力アドレス空間にマッピングされる入出力装置３２および記憶装置３４のうちの装置に直接アクセスできる低待ち時間経路と、入出力装置３２および記憶装置３４がそれを介してシステム・メモリ１８にアクセスできる高帯域幅経路の両方を提供する。入出力装置３２には、たとえば、表示装置、キーボード、グラフィカル・ポインタ、および、外部ネットワークまたは付加された装置への接続のためのシリアル・ポートおよびパラレル・ポートを含めることができる。その一方で、記憶装置３４には、オペレーティング・システムおよびアプリケーション・ソフトウェアのための不揮発性記憶域を提供する、光ディスクまたは磁気ディスクを含めることができる。
【００１１】
ローカル相互接続１６は、さらに、ホスト・ブリッジ３８を介して、メモリ・バス４０およびサービス・プロセッサ・バス４４に結合される。メモリ・バス４０は、不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）４２に結合され、ＮＶＲＡＭ４２には、処理ノード８の構成データおよび他のクリティカルなデータが格納される。サービス・プロセッサ・バス４４は、サービス・プロセッサ５０をサポートし、サービス・プロセッサ５０は、処理ノード８のブート・プロセッサとして働く。処理ノード８のブート・コードには、通常は電源オン自己試験（ＰＯＳＴ）、基本入出力システム（ＢＩＯＳ）およびオペレーティング・システム・ローダ・コードが含まれ、処理ノード８のブート・コードは、フラッシュ・メモリ４８に格納される。ブートの後に、サービス・プロセッサ５０は、サービス・プロセッサ・ダイナミック・ランダム・アクセス・メモリ（ＳＰ  ＤＲＡＭ）４６からシステム監視ソフトウェアを実行することによって、処理ノード８のソフトウェアおよびハードウェアに関するシステム・モニタとして働く。
【００１２】
システム構成可能性
本発明の好ましい実施例では、フラッシュ・メモリ４８に格納されたＢＩＯＳブート・コードに、データ処理システム６を１つまたは複数の独立に動作可能なサブシステムに選択的に区分できるようにする構成ユーティリティが含まれる。下で詳細に述べるように、データ処理システム６は、構成ソフトウェアによって、処理負荷の予想される特性に応答して、単一のＮＵＭＡデータ処理システムとして、複数のＮＵＭＡデータ処理サブシステムとして、または、単一ノードまたは複数マルチノード（すなわちＮＵＭＡ）のデータ処理サブシステムの他の組合せとして、有利に構成することができる。たとえば、単一のアプリケーションを実行するために大量の処理能力が必要な場合には、データ処理システム６を単一のＮＵＭＡコンピュータ・システムとして構成し、したがって、そのアプリケーションの実行に使用できる処理能力を最大にすることが望ましい。その一方で、複数の別個のアプリケーションまたは複数の別個のオペレーティング・システムの実行が必要な場合には、データ処理システム６を複数のＮＵＭＡデータ処理サブシステムまたは複数の単一ノード・サブシステムとして構成することが望ましい可能性がある。
【００１３】
データ処理システム６が、複数のデータ処理サブシステムとして構成される時には、それらのデータ処理サブシステムに、処理ノード８のばらばらのおそらくは異なるサイズの組が含まれる。複数のデータ処理サブシステムのそれぞれは、他のデータ処理サブシステムの動作に干渉せずに、独立に構成、走行、遮断、リブートおよび再区分を行うことができる。重要なことに、データ処理システム６の再構成は、ノード相互接続２２への処理ノード８の付加または切離しを必要としない。
【００１４】
メモリ・コヒーレンシ
システム・メモリ１８に格納されるデータは、所与のデータ処理サブシステム内のいずれかのプロセッサ１０によって要求され、アクセスされ、変更される可能性があるので、キャッシュ・コヒーレンス・プロトコルを実施して、同一の処理ノード内のキャッシュの間と、同一のデータ処理サブシステム内の異なる処理ノード内のキャッシュの間の両方でコヒーレンスを維持する。実施されるキャッシュ・コヒーレンス・プロトコルは、実装依存である。しかし、好ましい実施例では、キャッシュ階層１４とアービタ２４によって、通常のＭｏｄｉｆｉｅｄ、Ｅｘｃｌｕｓｉｖｅ、Ｓｈａｒｅｄ、Ｉｎｖａｌｉｄ（変更済み、排他、共用、無効、ＭＥＳＩ）プロトコルまたはその変形形態が実施される。ノード間キャッシュ・コヒーレンシは、ノード相互接続２２に接続されたＩＣＵ３６に集中化されるディレクトリベースの機構を介して維持されることが好ましいが、その代わりに、ノード・コントローラ２０によって維持されるディレクトリ内に分散することができる。このディレクトリベースのコヒーレンス機構は、好ましくはＭ状態、Ｓ状態およびＩ状態を認識し、正しさに関してＥ状態はＭ状態にマージされるとみなす。すなわち、リモート・キャッシュによって排他的に保持されるデータは、そのデータが実際に変更されたか否かにかかわらず、変更済みとみなされる。
【００１５】
相互接続アーキテクチャ
ローカル相互接続１６およびノード相互接続２２は、さまざまな相互接続アーキテクチャを用いて実施することができる。しかし、好ましい実施例では、少なくともノード相互接続２２が、米国ニューヨーク州アーモンクのＩＢＭ  Ｃｏｒｐｏｒａｔｉｏｎによって開発された６ｘｘ通信プロトコルによって制御されるスイッチベースの相互接続として実施される。この２地点間通信方法論では、ノード相互接続２２が、ソースの処理ノード８からのアドレス・パケットおよびデータ・パケットを、同一のデータ処理サブシステム内の処理ノード８だけに経路指定することが可能になる。
【００１６】
ローカル相互接続１６およびノード相互接続２２では、分割トランザクションが可能であり、これは、通信トランザクションを構成するアドレス保有権とデータ保有権の間に固定されたタイミング関係が存在しないことと、データ・パケットを関連するアドレス・パケットと異なる形で順序付けることができることを意味する。ローカル相互接続１６およびノード相互接続２２の使用は、パイプライン化通信トランザクションによって機能強化されることが好ましく、パイプライン化通信トランザクションでは、前の通信トランザクションのマスタが各宛先からコヒーレンシ応答を受け取る前に、後続の通信トランザクションを供給することができる。
【００１７】
構成ユーティリティ
ここで図３を参照すると、本発明に従って、データ処理システム６などのマルチノード・データ処理システムを１つまたは複数のデータ処理サブシステムに区分し、構成するための処理を示す高水準論理流れ図が示されている。図からわかるように、この処理は、ブロック８０で、処理ノード８ａないし８ｄのすべての電源が投入されることに応答して開始され、その後、ブロック８２に進んで、各処理ノード８のサービス・プロセッサ５０が、フラッシュ・メモリ４８からＰＯＳＴコードを実行して、ローカル・ハードウェアを既知の安定した状態に初期設定する。ＰＯＳＴの後に、各サービス・プロセッサ５０は、主要な周辺機器（たとえばキーボードおよび表示装置）とインターフェースするために従来のＢＩＯＳルーチンを実行し、割込み処理を初期設定する。その後、ブロック８４以降に示されているように、各処理ノード８のプロセッサ（すなわち、サービス・プロセッサ５０またはプロセッサ１０もしくはその両方）が、データ処理システム６が区分される独立のデータ処理サブシステムの数と、各データ処理サブシステムに属する特定の処理ノード８とを指定する入力を得ることによって、上で述べたＢＩＯＳ構成ユーティリティの実行を開始する。ブロック８４に示された入力は、たとえばデータ記憶媒体上に存在するファイルまたは１つまたは複数の処理ノード８での操作員入力など、複数の供給源のうちのいずれかから得ることができる。
【００１８】
本発明の好ましい実施例では、ブロック８４に示された入力は、１つまたは複数の処理ノード８で表示される一連のメニュー画面に応答して、そのような処理ノード８で操作員から得られる。この入力は、その後、各処理ノード８で、その処理ノード８と共にグループ化されてデータ処理サブシステムを形成する他の処理ノード８を示す区分マスクを作成するのに使用される。たとえば、データ処理システム６内の４つの処理ノード８のそれぞれが、４ビット・マスクの１ビットを割り当てられる場合には、全処理ノードを含むＮＵＭＡ構成は、１１１１によって表すことができ、２つの２ノードＮＵＭＡサブシステムは、００１１および１１００か、１０１０および０１０１によって表すことができ、２ノードＮＵＭＡサブシステムおよび２つの単独ノード・サブシステムは、００１１、１０００および０１００（および他の同様のノードの組合せ）によって表すことができる。データ処理システム６の所望の区分を示す入力が、処理ノード８のすべてより少ない個数で供給される場合には、適当なマスクが、ノード相互接続２２を介して他の処理ノード８に伝送される。この形で、各処理ノード８は、共にグループ化される他の処理ノード８がある場合に、互いにそれらの処理ノードのレコードを有する。
【００１９】
ブロック８４の後に、この処理はブロック８６に進み、データ処理システム６の各データ処理サブシステムが、図４および５に関して下で詳細に説明するように、その構成を独立に完了する。その後、処理はブロック８８で継続される。
【００２０】
ここで図４および５を参照すると、図３のブロック８６に示された、マスタ処理ノードおよびクライアント処理ノードがデータ処理システム６のデータ処理サブシステムの構成を達成できる処理をそれぞれ示す高水準論理流れ図が示されている。図示の処理は、その間の通信の詳細を示すために一緒に説明するが、上で述べたＢＩＯＳ構成ユーティリティの一部として実施されることが好ましい。
【００２１】
図４に示された処理は、マスタである処理ノード８の動作を表し、図５に示された処理は、クライアントである処理ノード８（存在する場合）の動作を表すが、それぞれ、図３のブロック８４の後に、ブロック１００および１４０で並列に開始される。それぞれブロック１０２および１４２に示されているように、データ処理サブシステム内の各処理ノード８は、それがそのデータ処理サブシステムの構成を完了する責任を負うマスタの処理ノード８であるかどうかを判定する。データ処理サブシステムのマスタの処理ノード８は、投票および競争を含む多数の周知の機構によって判定することができるが、好ましい実施例では、マスタの処理ノード８は、区分マスクでセットされているビットのうちで最下位のビットを有する、データ処理サブシステム内の処理ノード８として、デフォルトで設定される。マスタであると判定された処理ノード８のマスタ・プロセッサ（すなわち、サービス・プロセッサ５０または指定されたプロセッサ１０のいずれか）は、図４のブロック１０４ないし１３０で詳細に説明するように、そのデータ処理サブシステムの構成を管理する。
【００２２】
ブロック１０４を参照すると、マスタ・プロセッサは、データ処理サブシステムに属するクライアントの処理ノード８がある場合には、ローカル相互接続１６上でその処理ノード８を目標とするメッセージを発行する。矢印Ａによって表されるこのメッセージは、その処理ノード８がマスタであることを主張する。このメッセージは、ローカルのノード・コントローラ２０によってスヌープされ、ノード相互接続２２を介して、指示されたクライアントの処理ノード８に転送される。それぞれブロック１４４および１４６に示されているように、クライアントの処理ノード８は、マスタからこのメッセージを受け取るまで待機し、メッセージの受取に応答して、矢印Ｂによって示される肯定応答メッセージを、マスタの処理ノード８に送る。図４のブロック１０６および１０８に示されているように、マスタは、クライアントの処理ノード８から肯定応答メッセージを受け取るまで待機し、肯定応答を受け取った後に、追加のクライアントの処理ノード８がマスタ主張メッセージにまだ連絡していないことが区分マスクから示される場合には、ブロック１０４に戻る。このマスタ主張−肯定応答プロトコル（その代わりに、複数のクライアントの処理ノード８に対して並列に実行することもできる）は、データ処理サブシステム内のすべての処理ノード８が、どの処理ノード８がマスタであるかに関して合意することを保証するだけではなく、有利なことに、異なる時に電源を投入され、異なる速度でブートする可能性がある、サブシステム内のさまざまな処理ノード８を同期化させるようにも働く。
【００２３】
マスタの処理ノード８は、図４のブロック１０８からブロック１１０に進む処理によって示されるように、データ処理サブシステム内のすべてのクライアントの処理ノード８（存在する場合）からそのマスタシップの肯定応答を受け取った後に、マスタの処理ノード８は、クライアントの処理ノード８（存在する場合）に構成情報（たとえば資源リスト）を要求する。この構成情報の要求は、クライアントに対する１つまたは複数のメッセージを含む可能性があるが、矢印Ｃによって表される。図５のブロック１４８および１５０によって示されるように、クライアントの処理ノード８は、この資源リスト要求を待ち、資源リスト要求の受取に応答して、その入出力資源、存在するシステム・メモリ１８の量、それに含まれるプロセッサ１０の数および他の構成情報を指定する１つまたは複数のメッセージを、マスタの処理ノード８に送ることによって応答する。この構成情報応答は、矢印Ｄによって表される。図４のブロック１１２および１１４は、マスタの処理ノード８が、クライアントの処理ノード８からの応答を待ち、応答の受取の後に、指定された資源をサブシステム資源リストに追加することを示す。ブロック１１６に示されているように、マスタの処理ノード８は、区分マスクで指定されたクライアントの処理ノード８のそれぞれについて、ブロック１１０ないし１１４を実行する。
【００２４】
マスタが各クライアント（存在する場合）から資源リストを得た後に、図４のブロック１１６からブロック１１８に進む処理によって示されるように、マスタの処理ノード８のマスタ・プロセッサは、サブシステムの全体的構成を判定し、クライアントの処理ノード８のそれぞれの資源を再マッピングする方法を計算する。次に、ブロック１２０で、マスタの処理ノード８のマスタ・プロセッサは、クライアントの処理ノード８（存在する場合）に、そのクライアントの処理ノード８がその資源を再マッピングする方法を指定する１つまたは複数のメッセージ（矢印Ｅによって表される）を送る。たとえば、マスタ・プロセッサは、クライアントの処理ノード８のメモリ・コントローラ１７に、付加されたシステム・メモリ１８の記憶位置に関連する物理アドレスの範囲を指定することができる。さらに、マスタ・プロセッサは、クライアントの処理ノード８内の入出力装置３２のメモリ・マップド・アドレスを指定することができる。実施形態によっては、マスタ・プロセッサは、クライアントの処理ノード８の各プロセッサ１０のプロセッサＩＤを指定することもできる。
【００２５】
好ましい実施例では、各データ処理サブシステム内のプロセッサ１０のすべてが、単一の物理メモリ空間を共用するが、これは、各物理アドレスが、システム・メモリ１８のうちの１つの単一の位置だけに関連することを意味する。したがって、一般にデータ処理サブシステム内のすべてのプロセッサ１０がアクセスできる、データ処理サブシステムのシステム・メモリの全体的な内容は、データ処理サブシステムを構成する処理ノード８内のシステム・メモリ１８の間で区分されるものとして見ることができる。たとえば、各処理ノード８に１ＧＢのシステム・メモリ１８が含まれ、データ処理システム６が２つのＮＵＭＡデータ処理サブシステムとして構成される場合の例の実施形態では、各ＮＵＭＡデータ処理サブシステムが、２ギガバイト（ＧＢ）の物理アドレス空間を有する。
【００２６】
図５のブロック１５２および１５４に示されているように、クライアントの処理ノード８は、マスタの処理ノード８からの再マッピング要求を待ち、再マッピング要求の受取に応答して、矢印Ｆによって表される再マッピング要求の肯定応答を用いて応答する。ブロック１２２および１２４に示されているように、マスタの処理ノード８は、この再マッピング要求肯定応答を待ち、再マッピング要求肯定応答の受取に応答して、区分マスクで示される他のクライアントの処理ノード８のそれぞれについて、ブロック１２０および１２２を繰り返す。
【００２７】
図４のブロック１２４および図５のブロック１５４の後に、マスタの処理ノード８およびクライアントの処理ノード８のそれぞれは、それぞれブロック１２６および１５６に示されるように、マスタの処理ノード８によって決定された構成に従って、めいめいのローカル資源を再マッピングする。図５のブロック１５８に示されているように、クライアントの処理ノード８のそれぞれは、その後、データ処理サブシステムのオペレーティング・システム（ＯＳ）がプロセッサ１０に作業をスケジューリングするまで、プロセッサ１０による処理を停止する。それに対して、図４のブロック１２８に示されるように、マスタの処理ノード８は、たとえば記憶装置３４のうちの１つからそのデータ処理サブシステムのためのオペレーティング・システムをブートする。前に述べたように、複数のデータ処理サブシステムが、データ処理システム６の処理ノード８から形成される場合には、複数のデータ処理サブシステムが、Ｗｉｎｄｏｗｓ  ＮＴおよびＳＣＯ（Ｓａｎｔａ  Ｃｒｕｚ  Ｏｐｅｒａｔｉｏｎ社）ＵＮＩＸなどの異なるオペレーティング・システムを走行させることができる。その後、マスタの処理ノード８による処理が、ブロック１３０で継続される。
【００２８】
上で説明したように、本発明は、内部接続された処理ノードの集合を、単一のＮＵＭＡデータ処理システムまたは選択された数の独立に動作可能なデータ処理サブシステムのいずれかに構成する方法を提供する。本発明によれば、処理ノードの複数のデータ処理サブシステムへの区分は、処理ノードのいずれをも接続または切断せずに達成される。
【００２９】
好ましい実施例に関して本発明を具体的に図示し、説明してきたが、本発明の主旨および範囲から逸脱せずに、形態および詳細におけるさまざまな変更を行うことができることを当業者は理解するであろう。たとえば、本発明の諸態様を、本発明の方法を指示するソフトウェアを実行するコンピュータ・システムに関して説明してきたが、本発明は、その代わりに、コンピュータ・システムと共に使用するためのコンピュータ・プログラム製品として実施することができることを理解されたい。本発明の機能を定義するプログラムは、書換可能でない記憶媒体（たとえばＣＤ−ＲＯＭ）と、書換可能記憶媒体（たとえばフロッピ・ディスケットまたはハード・ディスク装置）と、コンピュータ・ネットワークおよび電話網などの通信媒体とを制限なしに含む、さまざまな信号担持媒体を介してコンピュータ・システムに配布することができる。したがって、このような信号担持媒体は、本発明の方法機能を指示するコンピュータ可読命令を担持または符号化する時に、本発明の代替実施形態を表すことを理解されたい。
【００３０】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３１】
（１）システム相互接続と、
複数の処理ノードのそれぞれが、少なくとも１つのプロセッサとデータ記憶装置とを含む、前記システム相互接続に結合された前記複数の処理ノードと、
前記複数の処理ノードのうちの少なくとも１つのシステム・メモリに常駐する構成ユーティリティであって、前記構成ユーティリティが、前記システム相互接続を介する通信を介して、前記複数の処理ノードを、単一のＮＵＭＡ（ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）および複数の独立のデータ処理システムのうちの１つに選択的に構成する、前記構成ユーティリティと
を含むデータ処理システム。
（２）前記複数の独立のデータ処理システムのうちの少なくとも１つが、前記複数の処理ノードのうちの少なくとも２つを含むＮＵＭＡ（ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）システムである、上記（１）に記載のデータ処理システム。
（３）前記複数の独立のデータ処理システムが、前記複数の処理ノードのばらばらのサブセットを含む、上記（１）に記載のデータ処理システム。
（４）前記データ処理システムが、前記複数の処理ノードのうちの少なくとも１つのデータ記憶装置に格納されたブート・コードを含み、前記構成ユーティリティが、前記ブート・コードの部分を形成する、上記（１）に記載のデータ処理システム。
（５）前記通信が、前記複数の処理ノードのうちのマスタ処理ノードから前記複数の処理ノードのうちの少なくとも１つの他の処理ノードに送られる、構成情報の要求を含む、上記（１）に記載のデータ処理システム。
（６）前記通信が、前記複数の処理ノードのうちの前記少なくとも１つの他の処理ノードから前記マスタ処理ノードへ送られる応答メッセージを含み、前記応答メッセージが、要求された構成情報を含む、上記（５）に記載のデータ処理システム。
（７）複数の処理ノードのそれぞれが、少なくとも１つのプロセッサとデータ記憶装置とを含む、前記複数の処理ノードをシステム相互接続と結合するステップと、
前記システム相互接続を介して少なくとも１つの構成メッセージを送るステップと、
前記少なくとも１つの構成メッセージを使用して、前記システム相互接続に結合された前記複数の処理ノードを、単一のＮＵＭＡ（ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）システムおよび複数の独立のデータ処理システムのうちの１つに構成するステップと
を含む、複数の相互接続された処理ノードを１つまたは複数のデータ処理システムに構成する方法。
（８）前記複数の処理ノードを複数の独立のデータ処理システムに構成するステップが、前記複数の処理ノードを、前記複数の処理ノードのうちの少なくとも２つを含む少なくとも１つのＮＵＭＡ（ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）サブシステムに構成するステップを含む、上記（７）に記載の方法。
（９）前記複数の処理ノードを複数の独立のデータ処理システムに構成するステップが、前記複数の処理ノードを、前記複数の処理ノードのばらばらのサブセットを含む複数の独立のデータ処理システムに構成するステップを含む、上記（７）に記載の方法。
（１０）前記複数の処理ノードのうちの少なくとも１つのデータ記憶装置に、ブート・コードの部分を形成する構成ユーティリティを格納するステップと、
前記複数の処理ノードを構成するために前記構成ユーティリティを実行するステップと
をさらに含む、上記（７）に記載の方法。
（１１）少なくとも１つの構成メッセージを送るステップが、前記複数の処理ノードのうちのマスタ処理ノードから前記複数の処理ノードのうちの少なくとも１つの他の処理ノードへ、構成情報の要求を送るステップを含む、上記（７）に記載の方法。
（１２）少なくとも１つの構成メッセージを送るステップが、さらに、前記複数の処理ノードのうちの前記少なくとも１つの他の処理ノードから前記マスタ処理ノードへ応答メッセージを送るステップを含み、前記応答メッセージが、要求された構成情報を含む、上記（１１）に記載の方法。
（１３）複数の処理ノードを結合されたシステム相互接続を含むデータ処理システムを構成するためのプログラム製品であって、前記複数の処理ノードのそれぞれが、少なくとも１つのプロセッサとデータ記憶装置とを含み、前記プログラム製品が、
データ処理システム使用可能媒体と、
前記データ処理システム使用可能媒体内で符号化された構成ユーティリティであって、前記構成ユーティリティが、前記システム相互接続を介する通信を介して、前記複数の処理ノードを、単一のＮＵＭＡ（ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）システムおよび複数の独立のデータ処理システムのうちの１つに選択的に構成する、前記構成ユーティリティと
を含む、プログラム製品。
（１４）前記複数の独立のデータ処理システムのうちの少なくとも１つが、前記複数の処理ノードのうちの少なくとも２つを含むＮＵＭＡ（ｎｏｎ−ｕｎｉｆｏｒｍ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）システムである、上記（１３）に記載のプログラム製品。
（１５）前記複数の独立のデータ処理システムが、前記複数の処理ノードのばらばらのサブセットを含む、上記（１３）に記載のプログラム製品。
（１６）前記構成ユーティリティが、ブート・コードの部分を形成する、上記（１３）に記載のプログラム製品。
（１７）前記通信が、前記複数の処理ノードのうちのマスタ処理ノードから前記複数の処理ノードのうちの少なくとも１つの他の処理ノードに送られる、構成情報の要求を含む、上記（１３）に記載のプログラム製品。
（１８）前記通信が、前記複数の処理ノードのうちの前記少なくとも１つの他の処理ノードから前記マスタ処理ノードへ送られる応答メッセージを含み、前記応答メッセージが、要求された構成情報を含む、上記（１７）に記載のプログラム製品。
【図面の簡単な説明】
【図１】本発明を有利に使用することのできる、複数ノード・データ処理システムの実施例を示す図である。
【図２】図１に示されたデータ処理システム内の処理ノードのより詳細なブロック図である。
【図３】図１のデータ処理システムを選択的に区分し、１つまたは複数のデータ処理サブシステムに構成する方法を示す、高水準論理流れ図である。
【図４】本発明の実施例による、マスタ処理ノードがデータ処理サブシステムを構成する方法の高水準論理流れ図である。
【図５】本発明の実施例による、クライアント処理ノードを構成する方法の高水準論理流れ図である。
【符号の説明】
６  データ処理システム
８  処理ノード
８ａ  処理ノード
８ｂ  処理ノード
８ｃ  処理ノード
８ｄ  処理ノード
１０ａ  プロセッサ
１０ｂ  プロセッサ
１０ｃ  プロセッサ
１０ｄ  プロセッサ
１０ｅ  プロセッサ
１０ｆ  プロセッサ
１０ｇ  プロセッサ
１０ｈ  プロセッサ
１０ｉ  プロセッサ
１０ｊ  プロセッサ
１０ｋ  プロセッサ
１０ｌ  プロセッサ
１０ｍ  プロセッサ
１２  プロセッサ・コア
１４  キャッシュ階層
１６  ローカル相互接続
１７  メモリ・コントローラ
１８  システム・メモリ
２０  ノード・コントローラ
２２  ノード相互接続
２４  アービタ
２６  メザニン・バス・ブリッジ
３０  メザニン・バス
３２  入出力装置
３４  記憶装置
３６  相互接続コヒーレンス・ユニット（ＩＣＵ）
３８  ホスト・ブリッジ
４０  メモリ・バス
４２  不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）
４４  サービス・プロセッサ・バス
４６  サービス・プロセッサ・ダイナミック・ランダム・アクセス・メモリ（ＳＰ  ＤＲＡＭ）
４８  フラッシュ・メモリ
５０  サービス・プロセッサ
【図１】
0003628595.tif 000002
【図２】
0003628595.tif 000003
【図３】
0003628595.tif 000004
【図４】
0003628595.tif 000005
【図５】
0003628595.tif 000006