(57)【要約】【課題】本発明は、高並列化または分散型コンピュータにおいてプログラムのロード時間を減少させる方法を提供する。【解決手段】一実施形態では、このことは、高並列化または分散型コンピュータ・システムの特定の計算ノードでプログラムの前の呼び出し中に生成されたページ・テーブルの項目を選択的に再利用することによって実現される。【選択図】図１
2007280397.tif 000002
【特許請求の範囲】
【請求項１】
複数処理ノードを含むコンピュータ・システムでプログラムをロードする方法であって、
前記コンピュータ・システムによる実行を依頼された計算ジョブと関連するプログラムを前に実行した複数の処理ノードを識別することと、
前記プログラムの前の実行に関連するページ・テーブルを保持するためのメッセージを、識別した各処理ノードに送信することと、
前記計算ジョブを前記複数の処理ノードにディスパッチすることと
を含む方法。
【請求項２】
前記計算ジョブがディスパッチされた前記複数の処理ノードの標識を記録することを更に含む、請求項１に記載の方法。
【請求項３】
各処理ノードは少なくともＣＰＵ及びメモリを含む、請求項１に記載の方法。
【請求項４】
前記コンピュータ・システムは並列コンピュータ・システムまたは分散コンピュータ・システムを含む、請求項１に記載の方法。
【請求項５】
前記プログラムを最後に実行した前記複数の処理ノードが利用可能でない場合、前記コンピュータ・システムに前記計算ジョブをディスパッチし、どの処理ノードに前記計算ジョブがディスパッチされたかを示す情報を記録する、請求項１に記載の方法。
【請求項６】
前記メッセージを受信したことに応答して、
前記プログラムと関連するページ・テーブルを識別することと、
各ページ・テーブル項目に対して、当該ページ・テーブル項目が、前記プログラムに関する実行可能命令を参照しているかどうかを決定することと、
当該ページ・テーブル項目が実行可能命令を参照している場合、前記ページ・テーブルに当該ページ・テーブル項目を保持することと、
当該ページ・テーブル項目が実行可能命令を参照していない場合、前記ページ・テーブルから当該ページ・テーブル項目を廃棄することと
を更に含む、請求項１に記載の方法。
【請求項７】
廃棄したページ・テーブル項目によってマッピングされていた物理メモリ・アドレスの内容を消去することを更に含む、請求項６に記載の方法。
【請求項８】
プログラムを含むコンピュータ可読媒体であって、前記プログラムが実行されると、複数処理ノードを含むコンピュータ・システムでプログラムをロードする動作を実行し、前記動作は、
前記コンピュータ・システムによる実行を依頼された計算ジョブと関連するプログラムを前に実行した複数の処理ノードを識別することと、
前記プログラムの前の実行に関連するページ・テーブルを保持するためのメッセージを、識別した各処理ノードに送信することと、
前記計算ジョブを前記複数の処理ノードにディスパッチすることと
を含むコンピュータ可読媒体。
【請求項９】
複数の計算ノードと、
動作を実行することによって前記複数の計算ノードの少なくとも幾つかで計算ジョブを実行するように構成された制御システムと
を含む並列コンピュータ・システムであって、
前記計算ジョブは、当該並列コンピュータ・システムで実行すべきプログラムを識別し、
前記動作は、
前記プログラムを前に実行した複数の計算ノードを識別することと、
前記プログラムの前の実行に関連するページ・テーブルを保持するためのメッセージを、前記複数の計算ノードの少なくとも幾つかに送信することと、
前記計算ジョブを、前記複数の計算ノードの少なくとも幾つかにディスパッチすることと
を含む並列コンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、コンピュータ・システム及び開発に関する。特に、本発明は、分散コンピュータ・システムまたは高並列化コンピュータ・システムにおいて実行用プログラムをロードするために必要とされる時間を減少させるプロセスに関する。
【背景技術】
【０００２】
スーパーコンピュータ・システムは、ますます複雑な計算問題に対処するために開発され続けている。これらシステムは、生命科学、金融モデル化、流体力学、量子化学、分子力学、天文学、気象モデル化及び予測、並びに地質学モデル化を含む幅広い種類の用途に特に有用であることが証明されている。スーパーコンピュータ開発者は、これらの用途及びその他の用途に適用するための絶えず増大する量の計算能力を達成するため、超並列コンピュータ・アーキテクチャに焦点を合わせている。
【０００３】
超並列システムの１つのファミリーが、Ｂｌｕｅ  Ｇｅｎｅ（登録商標）という名前でインターナショナル・ビジネス・マシーンズ・コーポレーション（以下、ＩＢＭという）によって開発され（続け）ている。Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｌシステムはスケーラブルであって、最大６５５３６（２１６）個の計算ノードを構成することができる。各Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｌノードは、２ＣＰＵを有する単一の特定用途向け集積回路（ＡＳＩＣ）及びメモリを含む。Ｂｌｕｅ  Ｇｅｎｅ（登録商標）アーキテクチャは大成功し、２００５年１０月２７日、ＩＢＭは、Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｌシステムが２８０．６テラフロップ（毎秒２８０．６兆回の浮動小数点演算）の演算速度に達し、これにより、この時点で、世界で最も速いコンピュータであることを発表した。更に、２００５年６月現在で、世界中の様々な場所におけるＢｌｕｅ  Ｇｅｎｅ（登録商標）／Ｌの導入は、世界中で最も高性能なトップ１０のコンピュータのうちの５つに入った。
【０００４】
ＩＢＭは、Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐと名付けた、Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｌシステムに継ぐものを現在開発している。Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐは、連続１ペタフロップ（毎秒１０００兆回の浮動小数点演算）で動作する最初のコンピュータ・システムになると期待されている。Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｌシステムのように、Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐはスケーラブルであって、計画では最大７３７２８個の計算ノードを有する。各Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐノードは、４ＣＰＵを有する単一の特定用途向け集積回路（ＡＳＩＣ）及びメモリを含む。完全なＢｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐシステムは７２個のラックまたはキャビネットに収納され、各々は３２個のノード・ボードを有する（１ボード当たり３２個のノードを有する）。
【０００５】
ＩＢＭによって開発されたＢｌｕｅ  Ｇｅｎｅ（登録商標）アーキテクチャに加えて、その他の分散コンピュータ・システムは、超並列コンピュータ・システムと類似する全アーキテクチャを有することがある。その他の分散システムの例として、クラスタ化システム及びグリッド・ベース・システムが挙げられる。例えば、Ｂｅｏｗｕｌｆクラスタは一群のコンピュータ・システムであって、各コンピュータ・システムは、ＬＩＮＵＸ（登録商標）またはＢＳＤオペレーティング・システムのようなＵＮＩＸ（登録商標）系オペレーティング・システムを実行する。この集合のコンピュータ・システムは高速ネットワークを介して小規模ＴＣＰ／ＩＰ  ＬＡＮに接続され、ライブラリと、インストールされたプログラムとを有し、これによって、ノード間で処理を共有することができる。
【０００６】
前述の用途の多くを実行する場合、スーパーコンピュータ・システムは、異なるデータ・セットに対して実質的に同じ計算を実行することを含むことが多い様々な問題を解くために用いられる。この種類の用途の例として、個々のたんぱく質の折り畳みをシミュレートするといったような分子間相互作用のモデル化が挙げられる。これらの種類の用途の場合、所与のノードで実行するプログラムが用いるデータは比較的少量である。プログラムは、このデータを用いて多くの計算を行う。計算が終了すると、計算の結果が戻される。何千ものノードが（異なるデータ・セットについて）同じ計算を実行するので、比較的短い期間に極端に多くのデータ・セットを処理することがある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
Ｂｌｕｅ  Ｇｅｎｅ（登録商標）システムのような高並列化スーパーコンピュータ、またはその他の分散システムにおけるノードの数を考慮すると、個々のノードのいずれに対しても少量のオーバーヘッドしか必要としない動作であっても、システム全体としてはかなりの時間を消費することが多い。例えば、個々の計算ノードによってプログラムをロードするのに必要とされる総合時間は顕著となる。従って、プログラムを計算ノードに送信するだけのために、総合的にかなりの量の時間を費やすことがある。同じ現象は、分散システムの一部である処理ノードにデータ・セットやプログラムなどを送信する必要がある分散システムにおいても生じる。従って、当該技術分野では、高並列化コンピュータ・システムまたは分散コンピュータ・システムにおいてプログラムのロード時間を減少させる技術を必要とする。
【課題を解決するための手段】
【０００８】
本発明は、高並列化コンピュータ・システムまたは分散コンピュータ・システムにおいてプログラムをロードするのに必要とされる時間を減少させる方法を提供する。本発明の一実施形態は、複数処理ノードを含むコンピュータ・システムで、プログラムをロードする方法を提供する。この方法は、当該コンピュータ・システムによる実行を依頼された計算ジョブと関連するプログラムを前に実行した複数の処理ノードを識別することを含む。この方法は、プログラムの前の実行に関連するページ・テーブルを保持するためのメッセージを、識別した各処理ノードに送信することと、計算ジョブを複数の処理ノードにディスパッチすることとを更に含む。
【０００９】
本発明の別の実施形態は、プログラムを含むコンピュータ可読媒体であって、プログラムが実行されると、複数処理ノードを含むコンピュータ・システムにプログラムをロードする動作を実行するコンピュータ可読媒体を含む。動作は、当該コンピュータ・システムによる実行を依頼された計算ジョブと関連するプログラムを前に実行した複数の処理ノードを識別することを含む。動作は、プログラムの前の実行に関連するページ・テーブルを保持するためのメッセージを、識別した各処理ノードに送信することと、計算ジョブを複数の処理ノードにディスパッチすることとを更に含む。
【００１０】
本発明の更なる別の実施形態は、並列コンピュータ・システムを含む。このシステムは、複数の計算ノードと、一連の動作を実行することによって複数の計算ノードの少なくとも幾つかで計算ジョブを実行するように構成された制御システムとを含む。計算ジョブは、並列コンピュータ・システム上で実行すべきプログラムを識別する。動作は、プログラムを前に実行した複数の計算ノードを識別することを含むことができ、動作は、プログラムの前の実行に関連するページ・テーブルを保持するためのメッセージを、複数の計算ノードの少なくとも幾つかに送信することと、計算ジョブを、複数の計算ノードの少なくとも幾つかにディスパッチすることとを更に含むことができる。
【発明を実施するための最良の形態】
【００１１】
本発明の前述の特徴、利点及び目的が実現され、これらを細部にわたって理解できるように、上記で簡潔に要約した本発明を、添付図面に示された本発明の実施形態を参照して更に詳細に説明する。
【００１２】
しかしながら、添付図面は本発明の代表的な実施形態のみを示し、従って、本発明の範囲を限定するものではなく、本発明に対して、その他の同様に効果的な実施形態も認められることに留意すべきである。
【００１３】
本発明の実施形態は、高並列化コンピュータ・システムまたは分散コンピュータ・システムにおいてプログラムのロード時間を減少させる方法を提供する。このことは、高並列化コンピュータ・システムまたは分散コンピュータ・システムの特定の計算ノードでプログラムの前の呼び出しによってロードされた情報を、可能であれば再利用することによって実現される。ジョブが実行のためディスパッチされる際に（複数の）計算ノードに送信されるデータの幾つかのセグメントは、メモリ内で不変であるプログラムのバイナリ命令であるので、同じプログラムの前の呼び出しからメモリのページを保存することができる。従って、本発明の実施形態は、制御システムがジョブを特定の計算ノードにディスパッチするたびに生じるページ不在を回避する。同時に、所与の計算ノードは、特定のジョブを実行し始めるよう指示されたとき、バイナリ命令がメモリにページ・インされるのを待つ必要がない。
【００１４】
本明細書では、ＩＢＭによって開発されたＢｌｕｅ  Ｇｅｎｅ（登録商標）コンピュータ・アーキテクチャを参照して本発明の実施形態を説明する。本明細書で説明する実施形態は、Ｂｌｕｅ  Ｇｅｎｅ（登録商標）システムのような何千もの処理ノードを含む超並列コンピュータ・システムに対して特に有利である。しかし、ネットワークを介して通信するように配置された複数のＣＰＵを用いる様々な並列コンピュータ・システムに用いるように本発明の実施形態を適合させることができる。例えば、クラスタまたはグリッドのような分散アーキテクチャに用いるように実施形態を容易に適合させることができる。このようなアーキテクチャでは、各処理ノードを、ローカル・ネットワーク、地域ネットワークまたはグローバル・ネットワークを介して他のノードと通信するコンピュータ・システムとすることができる。
【００１５】
下記では、本発明の実施形態について説明する。しかし、当然のことながら、本発明は、説明した特定の実施形態に限定されるものではない。代わりとして、下記の特徴及び要素のいかなる組み合わせも、異なる実施形態に関連するか否かにかかわらず、本発明を実装し実施するものである。更に、様々な実施形態では、本発明は、従来技術よりも優れた多数の利点を提供する。しかし、本発明の実施形態は、その他の可能な解決策よりも優れた利点、または、従来技術よりも優れた利点、あるいはその両方を実現することができるが、特定の利点が所与の実施形態によって実現されるか否かは、本発明を限定するものではない。従って、下記の側面、特徴、実施形態及び利点は単に例示のためであって、請求項に明記された箇所以外は、請求項の要素または請求項を限定するものと見なされるべきではない。これと同様に、「本発明」という表現は、本明細書で開示した発明の主題の一般化として解釈されるべきではなく、請求項に明記された箇所以外は、請求項の要素または請求項を限定するものと見なされるべきではない。
【００１６】
本発明の一実施形態は、例えば、以下で説明する図１の高並列化コンピュータ・システム１００のようなコンピュータ・システムと用いるプログラム製品として実装される。プログラム製品のプログラムは、（本明細書で説明する方法を含む）実施形態の機能を定義するもので、様々な信号担持媒体に記録することができる。例示的な信号担持媒体は、（ｉ）書き込み不可能ストレージ媒体（例えば、ＣＤ‐ＲＯＭドライブによって読み取り可能なＣＤ‐ＲＯＭディスクのようなコンピュータ内の読み取り専用メモリ装置）に永続的に格納された情報と、（ｉｉ）書き込み可能ストレージ媒体（例えば、ディスケット・ドライブ内のフレキシブル・ディスクまたはハード・ディスク・ドライブ）に格納された可変情報と、（ｉｉｉ）無線通信を含むコンピュータ・ネットワークまたは電話網を介するような通信媒体によってコンピュータに搬送された情報とを含むが、これらに限定されない。後者の実施形態は、インターネット及びその他のネットワークからダウンロードされた情報を特に含む。このような信号担持媒体は、本発明の機能を指示するコンピュータ可読命令を搬送する場合、本発明の実施形態を表現する。
【００１７】
一般に、本発明の実施形態を実装するのに実行されるルーチンを、オペレーティング・システムまたは特定のアプリケーションの一部、コンポーネント、プログラム、モジュール、オブジェクト、または、一連の命令とすることができる。本発明のコンピュータ・プログラムは、一般に、ネイティブ・コンピュータによって機械可読フォーマット従って実行可能命令に変換される多数の命令を含む。プログラムは、当該プログラムに局所的に存在るか、あるいは、メモリまたはストレージ装置にある変数及びデータ構造をも含む。更に、以後に説明する様々なプログラムは、それらを本発明の特定の実施形態に実装する用途に基づいて識別することができる。しかし、以後のいかなる特定のプログラム用語も便宜のためにのみ用いられ、従って、このような用語によって識別され、または暗に示され、あるいはその両方が行われた任意の特定の用途のみに用いることに本発明を限定すべきではない。
【００１８】
図１は、本発明の一実施形態による高並列化コンピュータ・システム１００を示すブロック図である。特に、高並列化コンピュータ・システム１００は、Ｂｌｕｅ  Ｇｅｎｅ（登録商標）システムの概略を示す。図示のように、高並列化コンピュータ・システム１００は、計算ノード１１０の集合及び入出力（Ｉ／Ｏ）ノード１１２の集合を含む。計算ノード１１０は、高並列化コンピュータ・システム１００の計算能力を提供する。一実施形態では、各計算ノード１１０は、１つ以上のＣＰＵを含む。更に、各計算ノード１１０は、プログラム命令と、命令の操作対象となるデータ・セットとの両方を格納するのに用いられるメモリを含むことができる。
【００１９】
一実施形態では、計算ノード１１０は、当該計算ノード１１０で実行されるプログラムと関連するページ・テーブルを再利用するように構成することができる。同じプログラムを複数回呼び出すためである。既知のように、ページ・テーブルは、ページと、その物理アドレス及び論理アドレスとの索引付けを提供する。ページ・テーブルの再利用については、以下で更に詳細に説明する。
【００２０】
Ｉ／Ｏノード１１２は、機能ネットワーク１６０を介して計算ノード１１０とファイル・サーバ１３０との間に物理インターフェースを提供することができる。一実施形態では、計算ノード１１０及びＩ／Ｏノード１１２は、制御ネットワーク１５０または機能ネットワーク１６０あるいはその両方を介してファイル・サーバ１３０、フロント・エンド・ノード１２０及びサービス・ノード１４０と通信する。Ｂｌｕｅ  Ｇｅｎｅ（登録商標）システムでは、Ｉ／Ｏノード１１２及び計算ノード１１０は、ネットワーク・インターフェースのどれが使用可能であるか、また、高並列化コンピュータ・システム１００によってノードがどのように用いられるかによってのみ、互いに異なることができる。高並列化コンピュータ・システム１００の制御、起動、ジョブ開始及びデバッグを容易にするプロセスを実行するようにもＩ／Ｏノード１１２を構成することができる。これにより、各計算ノード１１０がわずかなＩ／Ｏノード１１２と通信するだけで足りるので、各計算ノード１１０で稼働しているオペレーティング・システム・カーネルを簡単にすることができる。フロント・エンド・ノード１２０は、コンパイラと、高並列化コンピュータ・システム１００と対話するユーザによって用いられるその他のアプリケーションとを格納する。典型的に、ユーザはフロント・エンド・ノード１２０にアクセスし、プログラムのコンパイルを依頼し、サービス・ノード１４０にジョブの実行を依頼する。
【００２１】
サービス・ノード１４０は、システム・データベースと、高並列化コンピュータ・システム１００によって供給されたすべての管理ツールとを含むことができる。典型的に、サービス・ノード１４０は、計算ノード１１０のソフトウェア・プログラム及びデータのスケジューリング及びロードを処理するように構成されたコンピュータ・システムを含む。一実施形態では、サービス・ノード１４０は、（ブロックと称する）一群の計算ノード１１０を組立て、ジョブを実行のためブロックにディスパッチするように構成することができる。典型的に、サービス・ノード１４０は、オペレーティング・システム、メモリ、ストレージ及び制御コンソール（図示せず）を含むコンピュータ・システムである。例えば、Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐシステムは、ＬＩＮＵＸ（登録商標）オペレーティング・システムを実行するコンピュータ・システムを用いる。サービス・ノード１４０は、制御ネットワーク１５０を介して計算ノード１１０と通信する。制御ネットワーク１５０は、高並列化コンピュータ・システム１００の動作を制御するため、サービス・ノード１４０に対して通信チャネルを提供する。
【００２２】
図２は、本発明の一実施形態による超並列コンピュータ・システムの構成を更に示すブロック図である。図２は、特に、Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐコンピュータ・システムの構成を示すブロック図である。前述したように、Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐは、計画では最大７３７２８個の計算ノード１１０を有するスケーラブルなシステムである。Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐシステムでは、各計算ノード１１０はノード・カードにパッケージされ、４ＣＰＵを有する単一の特定用途向け集積回路（ＡＳＩＣ）２１２及びメモリ２１４から成る。ノード・ボード２２０は３２個のノード・カードを収納し、各ノード・カードは計算ノード１１０を有する。従って、各ノード・ボードは、一計算ノード１１０当たり４つのＣＰＵ及びメモリ２１４を有する３２個のノードを有する。ラック２３０は、３２個のノード・ボード２２０を保持するハウジングである。完全なＢｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐシステムは、各ラックに３２個のノード・ボード２２０を有する７２個のラック２３０に収納される。従って、完全なＢｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐシステムは、最大２９４９１２個のＣＰＵ（７２ラック×３２ノード・ボード×３２ノード×４ＣＰＵ）を有する。
【００２３】
Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐコンピュータ・システムは、複数のデータ通信ネットワークを含む。幾つかのノード・ボード２２０に位置付けられたＩ／Ｏプロセッサは、サービス・ノード１４０と一群の計算ノード１１０との間のデータ通信を処理する。一実施形態では、各Ｉ／Ｏノード１１２は、１０２４個の計算ノード１１０に対して機能ネットワーク１６０を介するデータ通信を管理する。Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐシステムでは、７３７２８個の計算ノード１１０及び１０２４個のＩ／Ｏノード１１２が、論理ツリー・ネットワーク及びトーラス・ネットワークの両方を介して通信するように構成されている。トーラス・ネットワークは、各計算ノード１１０に６個の最近傍ノードと直接通信させることができる格子状構造に計算ノード１１０を接続する。計算ノード１１０は、高並列化コンピュータ・システムまたはクラスタ・コンピュータ・システム（例えば、システム１００）用のアプリケーションを開発するのに用いられるアプリケーション・プログラミング・インターフェースを、周知のメッセージ・パッシング・インターフェース（ＭＰＩ）を用いてトーラス・ネットワークを介して通信することができる。いずれの計算ノード１１０も、トーラス・ネットワークを介してメッセージを別の計算ノード１１０に発送することができる。
【００２４】
図３は、本発明の一実施形態による超並列コンピュータ・システムの構成を更に示すブロック図である。特に、図３には、Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐコンピュータ・システムのシステム・アーキテクチャの図を更に示す。図３において、高並列化コンピュータ・システム１００のすべての計算ノード１１０は、制御システム２０８に接続された計算コア２１０として示されている。計算コア２１０は、制御ネットワーク１５０を介して制御システム２０８のサービス・ノード１４０と通信する。計算コア２１０は、各Ｉ／Ｏノード１１２を一連の計算ノード１１０と接続するハードウェア制御装置２７０を介して制御ネットワーク１５０に接続されている。
【００２５】
高並列化コンピュータ・システム１００は、１０２４個の計算ノード１１０との通信が同じＩ／Ｏノード１１２によって管理されるＩ／Ｏノード面を有する計算コア２１０として表すことができる。Ｂｌｕｅ  Ｇｅｎｅ（登録商標）システムでは、Ｉ／Ｏノード１１２はツリー・ネットワーク２１５を介して計算ノード１１０に接続され、しかも、ギガビット・イーサネット（登録商標）ネットワーク（例えば、機能ネットワーク１６０）を介した機能的広域ネットワーク機能を有する。
【００２６】
一実施形態では、ハードウェア制御装置２７０は、ＪＴＡＧネットワーク２１９を用いて計算ノード１１０と通信する。既知のように、ＪＴＡＧは、計算ノードを初期化し、システム・イメージをロードさせるようにこれら計算ノードを準備するのに用いることができる低レベル通信プロトコルである。ＪＴＡＧネットワークを用いて、様々なその他の低レベル監視及びサポート機能をも実行することができる。ハードウェア制御装置２７０は各ラック２３０に存在し、制御システム２０８に対するインターフェースを提供する。このインターフェースは、計算ノード１１０を構成し、計算ノードのメモリ２１４にプログラム命令及びデータをロードするためのものである。Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐコンピュータ・システムでは、各ノード・ボード及びミッドプレーンのパッケージ化は、ＩＤｏチップを含む。ＩＤｏチップは、ＪＴＡＧネットワーク２１９を介して送信されるＵＤＰパケットを用いてサービス・ノードからコマンドを受信する２５ＭＨｚのＦＰＧＡである。
【００２７】
更に、図３に示すように、計算コア２１０は、機能ネットワーク１６０を介してファイル・サーバ１３０及びフロント・エンド・ノード１２０とも通信する。機能ネットワーク１６０をギガビット・イーサネット（登録商標）とすることができる。ファイル・サーバ１３０は、ユーザ・アプリケーション用のデータ及びシステム・イメージを格納する。個々の計算ノードは、Ｉ／Ｏノード１１２と通信することによってファイル・サーバにアクセスする。例えば、計算ノードは、ＮＦＳ共有を介してファイル・サーバ１３０にアクセスすることができる。一実施形態では、制御システム２０８は、計算ノード１１０と関連する状態情報を指定するデータ・テーブルを保持するように構成されたデータベース２５０を含む。計算コア２１０内のハードウェアを異なる計算ジョブに割り当てることを管理するようにミッドプレーン管理及び制御システム（ＭＭＣＳ）１４４を構成することができる。制御システム２０８は、機能ネットワーク１６０にも接続されている。一実施形態では、この接続は、システム・イメージ及びデータ・ファイルがロードされた後、計算ノード１１０が起動プロセスを完了したときを制御システム２０８に検出させることができる。制御システム２０８は、ユーザ及びシステム管理者によって用いられるコンソール２６０を更に含む。
【００２８】
また、図３において、計算コア２１０には、ラック２３０に収納された計算ノード１１０を示す。Ｂｌｕｅ  Ｇｅｎｅ（登録商標）システムでは、計算ノードは、処理セット（Ｐセット）にグループ化されている。Ｐセットは、特定のＩ／Ｏノード１１２と通信する一セットにグループ化された６４個のノードのグループである。一実施形態では、計算コア２１０を、最大でＰセットの数に分割することができ、各々は、ＬＩＮＵＸ（登録商標）オペレーティング・システム・カーネルを実行する１つのＩ／Ｏノード１１２と、制御ネットワーク１５０を介してシステム・イメージとして送信された計算ノード・カーネル（ＣＮＫ）を実行する６４個の計算ノード１１０とを有する。記述されているように、Ｉ／Ｏノード１１２は、所与のＰセット内の計算ノードに対して機能ネットワーク１６０を介する通信を提供する。Ｂｌｕｅ  Ｇｅｎｅ（登録商標）／Ｐシステムでは、８個乃至１２８個の計算ノードと通信するようにＩ／Ｏノード１１２を構成することができる。
【００２９】
各計算ノード１１０は、計算ノード１１０のメモリ２１４に格納されたシステム・イメージ・ファイル及びデータ・ファイルを含む。システム・イメージ・ファイル及び計算ノード・カーネル（ＣＮＫ）２１８は、オペレーティング・システム・カーネルのようなシステム・ファイルを含む。計算ノード・カーネル２１８は、各計算ノード１１０のメモリ２１４に格納されている。計算ノード１１０がユーザ・アプリケーションを実行するよう命令される前に、一般に、システム・イメージ・ファイルがロードされ、計算ノード・カーネル２１８が実行し始める。
【００３０】
計算ジョブを高並列化コンピュータ・システム１００で実行するため、計算ノード１１０の集合を、ジョブを実行するブロックに割り当てるようサービス・ノード１４０に要求する。計算ノード１１０は、ハード・ディスク・ドライブのような任意のローカル永続ストレージを含まなくてもよいので、計算ノード１１０には、ジョブを実行するために適切なソフトウェアをロードする必要がある。一実施形態では、ユーザは、ジョブを実行するために所望のパーティションの特性を指定する。スケジューラ２８０は、ジョブを実行するのに用いるブロックを形成するように一連の計算ノード１１０を選択する。選択後、スケジューラ２８０によって選択された計算ノード１１０（及び対応のＩ／Ｏノード１１２）を、制御ネットワーク１５０を用いてサービス・ノード１４０によってブロックに構成する。ブロックを生成した後、制御ネットワーク１５０または機能ネットワーク１６０あるいはその両方を介してＩ／Ｏノード１１２と通信する制御システム２０８を通じてジョブをディスパッチすることができる。
【００３１】
一実施形態では、サービス・ノード１４０は、各計算ノード１１０で最後に呼び出されたプログラムのテーブルを維持するためにデータベース２５０及びノード状態テーブル２５２を用いる。ユーザがジョブを呼び出すと、制御システム２０８は、ディスパッチされる同じプログラムを最後に実行した計算ノード１１０が現在利用可能であるかどうかを決定する。計算ノード１１０が利用可能である場合、制御システム２０８は、このような計算ノード１１０に、ジョブ要求中に識別されたプログラムと関連するページ・テーブルを保持するよう指示する。ディスパッチされるプログラムと関連するページ・テーブル以外のすべてのページ・テーブルは、計算ノードによって廃棄される。更に、保持されたページ・テーブルの、無効または書き込み可能とマークされた項目を、保持されたページ・テーブルから除去することができる。この時点で、プログラムの前の実行で生成または変更されたデータのいずれをも、ディスパッチされたプログラムを最後に実行したプロセスのメモリ・スペースから除去している。同時に、ディスパッチされたプログラムが計算ノード１１０によって実行されるとき、読み取り専用または実行可能とマークされたページは保持されていて、ロードされる必要はなく、ページ不在を生じさせない（ページ不在は、必要とされるページが物理メモリにマッピングされていないときにメモリ管理ユニットによって引き起こされる例外である）。
【００３２】
この時点で、プログラムは計算ノード１１０にディスパッチされる。制御システム２０８は、ディスパッチされるプロセスに対して新たなページ・テーブルを生成する代わりに、保持されたページ・テーブルを用いるよう計算ノード１１０に指示する。計算ジョブの一部である他のいかなるプロセスも、空のメモリ・スペースから開始し、デマンド・ページング・プロセスを用い、機能ネットワーク及びＩ／Ｏノード１１２を用いてページをメモリに導入することができる。プログラムは、実行を開始するとき、最初の命令をメモリ内のロケーションからロードしようとする。通常、これによって、ページ不在が引き起こされる。この例外は、オペレーティング・システムに送られ、オペレーティング・システムは、ページ不在に応答して、要求されたページを何らかの２次ストレージ・ソースから物理メモリ内にロードする。しかし、保持されたページ・テーブルからの情報は有効なマッピングを含むので、プログラムは容易に情報バイナリ命令にアクセスする。このことは、プログラムのすべての命令に起こる。従って、保持されたページ・テーブルと関連するアプリケーションのロード時間をかなり減少させることができる。このことは、特に、異なるデータ・セットを有する同じジョブを何千回、何百万回または何十億回もディスパッチすることがあるＢｌｕｅ  Ｇｅｎｅ（登録商標）システムのような超並列システムに当てはまる。
【００３３】
図４は、本発明の一実施形態によるサービス・ノード１４０によって維持されるノード状態テーブル２５２のブロック図である。一実施形態では、ノード状態テーブル２５２をデータベース２５０の一部として格納することができる。図示のように、ノード状態テーブル２５２は、所与のシステムの一部である計算ノード１１０と、各ノードで実行された最後のジョブとを示すリストを含む。従って、ユーザがジョブ要求をディスパッチすると、制御システム２０８はノード状態テーブル２５２を用いて、ディスパッチされたジョブを前に実行したノードを識別することができる。
【００３４】
図５は、本発明の一実施形態による高並列化コンピュータ・システムまたは分散コンピュータ・システムにおいて計算ジョブを実行する一連の計算ノード１１０を準備する方法５００を示す流れ図である。この方法５００はステップ５１０で開始し、制御システム２０８は、計算コア２１０にディスパッチするためのジョブ記述を受信する。一実施形態では、ジョブ記述は、実行すべきアプリケーション・プログラム、ジョブを実行するのに用いる計算ノード１１０の数のような所望の性能特性、または、ジョブを完了する所望の推定時間を指定することができ、所与のジョブと関連するデータ・セットを更に含むことができる。
【００３５】
ステップ５２０で、制御システム２０８は、ジョブ記述で指定されたアプリケーション・プログラムを最後に実行した計算ノード１１０が利用可能であるかどうかを決定する。利用可能でない場合、ステップ５２５で、制御システム２０８はジョブをスケジュールし、計算コア２１０にディスパッチする。更に、計算ノード１１０がジョブの処理を終了すると、制御システム２０８は、ジョブを実行するのに用いた計算ノード１１０をノード状態テーブル２５２に記録することができる。
【００３６】
これに対して、ジョブ記述によって指定されたアプリケーション・プログラムを最後に実行した計算ノード１１０が利用可能である場合、ステップ５３０で、制御システム２０８は、アプリケーション・プログラムを最後に実行した一連の計算ノードを識別する。ステップ５４０で、制御システム２０８は、ジョブ記述で指定されたアプリケーション・プログラム用のページ・テーブルを保持するため、識別した計算ノード１１０にメッセージを送信する。一実施形態では、制御システムは、制御ネットワーク１５０を介して、影響を受けた計算ノード１１０と通信する。以下に説明する図６は、アプリケーション・プログラム用のページ・テーブルを保持するためのメッセージを受信したことに応答して計算ノード１１０によって実行されるアクションを示している。
【００３７】
ステップ５５０で、ジョブを実行用の計算ノードにディスパッチする。計算ノード１１０がジョブの実行を終了すると、ステップ５６０で、制御システム２０８は、ジョブを実行するのに用いた計算ノード１１０をノード状態テーブル２５２に記録することができる。
【００３８】
図６は、本発明の一実施形態による並列化コンピュータ・システムまたは分散コンピュータ・システムのノードが計算ジョブを実行する方法６００を示す流れ図である。方法６００はステップ６１０で開始し、計算ノード１１０は、同じアプリケーションの前の呼び出しからのページ・テーブルを保持するため、制御ネットワーク１５０を介して制御システム２０８からメッセージを受信する。ステップ６２０で、計算ノード１１０は、ユーザ・アプリケーションと関連するページ・テーブルを識別する。その後、ステップ６３０〜６６０を含むループが開始する。ループの各繰り返しにおいて、計算ノード１１０は、アプリケーションと関連するページ・テーブルの項目を保持するか廃棄するかを決定する。ステップ６３０で、計算ノード１１０は、考慮中のページが書き込み可能とマークされているかどうかを決定する。マークされている場合、ステップ６４０で、ページをページ・テーブルから消去し、メモリから廃棄する。これに対して、ページ・テーブルの項目が書き込み可能とマークされていない場合、ステップ６５０で、計算ノード１１０は、ページ・テーブルと関連するアプリケーション・プログラムのその後の呼び出し中に用いるためページ・テーブルの項目を保持する。これと反対に、ステップ６３０では、計算ノード１１０は、ページ・テーブルの項目が読み取り専用（すなわち、実行可能）とマークされているかどうかを決定し、これに応じて、ページを保持または廃棄することもできる。考慮中のページ・テーブルの項目を保持しても廃棄しても、ステップ６６０で、計算ノード１１０は、更なるページ・テーブルの項目を評価する必要があるかどうかを決定する。評価する必要がある場合、ステップ６３０に戻り、別のページ・テーブルの項目を評価する。
【００３９】
これに対して、ステップ６６０で、ページ・テーブルの項目のすべてが評価されていると、計算ノード１１０は、同じアプリケーション・プログラムの前の呼び出しからの変更したページ・テーブルを用いてアプリケーション・プログラムの実行を開始することができる。その結果として、再入可能ページ（すなわち、実行可能命令のみを含むページ）はページ・テーブルで有効のままであり、プログラムをロードするため計算ノードの物理メモリに導入される必要はない。
【００４０】
図７のＡ及びＢは、本発明の一実施形態による高並列化コンピュータ・システムまたは分散コンピュータ・システムの計算ノード１１０によって維持されるページ・テーブルを示す。図示のように、図７のＡは、（Ｐ０，Ｐ１として示された）２つのユーザ・アプリケーションが実行を完了した後の計算ノード１１０の状態を表す。仮想メモリ・テーブル７１０は、プロセスＰ０によって用いられた４つのページ（ページ０、１、２及び３）を示す。プロセスＰ０は、実行可能命令の３つのページ（ページ０、１及び３）と、実行可能でない（すなわち、書き込み可能データ）とマークされた単一ページ（ページ２）とを含む。ページ・テーブル７１５は、プロセスＰ０によって用いられた仮想メモリ・アドレスを物理メモリ７３０のアドレスにマッピングする。特に、ページ０、１、２及び３はそれぞれ、物理メモリ７３０のページ１、４、３及び７にマッピングされている。図示のように、ページ・テーブル７１５は、物理メモリ７３０に位置付けられた仮想ページからのマッピングを示す列７１６と、ページが実行可能であるかどうかを示す列７１７と、ページ・テーブルの項目が有効であるかどうかを示す列７１８とを含む。これと同様に、ページ・テーブル７２５は、プロセスＰ１によって用いられたページ７２０を物理メモリ７３０のページにマッピングする。プロセスＰ１は、実行可能命令の単一ページ（ページ０）と、３つのデータ・ページ（ページ１、２及び３）とを含む。ページ・テーブル７２５は、プロセスＰ１によって用いられた仮想メモリ・アドレスを物理メモリ７３０のアドレスにマッピングする。図示のように、ページ０、１、２及び３はそれぞれ、物理メモリ７３０のページ２、５、０及び６にマッピングされている。
【００４１】
図７のＢは、プロセスＰ０を２度目に実行する準備をするため、制御システム２０８からメッセージを受信した後の図７のＡの計算ノード１１０の状態を示す。受信したことに応答して、計算ノード１１０は特定の項目をページ・テーブル７１５から廃棄し、その他の値を変更した。例えば、計算ノード１１０は、図６に示す方法６００に従ってページ・テーブル７１５を変更することができる。図示のように、プロセスＰ１用のページ・テーブル７２５は廃棄された。しかし、計算ノード１１０がＰ０を再び実行しようとしているので、ページ・テーブル７１５は保持されている。ページ・テーブル７１５の項目は仮想メモリ・テーブル７１０からのページ０、１及び３をそれぞれ物理メモリ７３０のページ１、４及び７にマッピングし続ける。しかし、仮想メモリのページ２のページ・テーブルの項目は除去される。図示のように、ページ・テーブル７１５は、現在、ページ２の項目が無効であると示している。更に、物理メモリ７３０のページ３に現在示されている値は、このページがプロセスＰ０の前の呼び出し中にマッピングされ、ヌルに設定されていることを示している。プロセスＰ０が実行されるとき、追加の時間、並びに、ページ０、１及び３のページ不在は生じない。
【００４２】
分散コンピュータ・システムまたは高並列化コンピュータ・システムにおいて実行用のプログラムをロードするのに必要とされる時間を減少させるため、本発明の実施形態を用いることができる。このことは、特定の計算ノードでプログラムの前の呼び出し中に生成された特定のページ・テーブルの項目を再利用することによって達成される。従って、全体として、計算ノードのメモリにページングする必要があるページの数は減少され、これによって、プログラムのロード時間を減少させる。同じジョブを何回も実行することがある超並列システム及び分散システムまたはクラスタ化システムの両方において、個々の計算ノードの改善が比較的わずかとなる場合であっても、システム性能全体への改善は多大である。
【００４３】
上記の記述は本発明の実施形態に関するものであるが、本発明のその他の実施形態及び更なる実施形態を、本発明の基本範囲から逸脱することなく考え出すことができる。本発明の範囲は、特許請求の範囲によって決定される。
【図面の簡単な説明】
【００４４】
【図１】本発明の一実施形態による超並列コンピュータ・システムを示すブロック図である。
【図２】本発明の一実施形態による超並列コンピュータ・システムの構成を更に示すブロック図である。
【図３】本発明の一実施形態による超並列コンピュータ・システムの構成を更に示すブロック図である。
【図４】本発明の一実施形態によるサービス・ノードによって維持される計算ノード状態テーブルのブロック図である。
【図５】本発明の一実施形態による高並列化コンピュータ・システムまたは分散コンピュータ・システムにおいて計算ジョブを実行する一連の計算ノードを準備する方法を示す流れ図である。
【図６】本発明の一実施形態による高並列化コンピュータ・システムまたは分散コンピュータ・システムの計算ノードに関して計算ジョブを実行する方法を示す流れ図である。
【図７】Ａ及びＢは、本発明の一実施形態による高並列化コンピュータ・システムまたは分散コンピュータ・システムの計算ノードによって維持されるページ・テーブルを示す図である。
【符号の説明】
【００４５】
１００  高並列化コンピュータ・システム
１１０  計算ノード
１１２  Ｉ／Ｏノード
１２０  フロント・エンド・ノード
１３０  ファイル・サーバ
１４０  サービス・ノード
１４４  ミッドプレーン管理及び制御システム（ＭＭＣＳ）
１５０  制御ネットワーク
１６０  機能ネットワーク
２０８  制御システム
２１０  計算コア
２１２  単一の特定用途向け集積回路（ＡＳＩＣ）
２１４  メモリ
２１５  ツリー・ネットワーク
２１８  計算ノード・カーネル（ＣＮＫ）
２１９  ＪＴＡＧネットワーク
２２０  ノード・ボード
２３０  ラック
２５０  データベース
２５２  ノード状態テーブル
２６０  コンソール
２７０  ハードウェア制御装置
２８０  スケジューラ
Ｐ０、Ｐ１  プロセス
７１０、７２０  仮想メモリ
７１５、７２５  ページ・テーブル
７３０  物理メモリ
【図１】
2007280397.tif 000003
【図２】
2007280397.tif 000004
【図３】
2007280397.tif 000005
【図４】
2007280397.tif 000006
【図５】
2007280397.tif 000007
【図６】
2007280397.tif 000008
【図７】
2007280397.tif 000009