(57)【特許請求の範囲】
【請求項１】
それぞれが複数のデータ記憶装置に接続された複数のプロセッサノードと、当該複数のプロセッサノード間でメッセージを伝送する相互接続ネットワークと、を備えた並列演算処理システムであって、
前記プロセッサノードのそれぞれは、
あるタスク処理のために実行される一連のインストラクションであるスレッドを同時に実行するために割り当てられた複数の仮想プロセッサ手段と、
システム起動時において前記複数の仮想プロセッサ手段のそれぞれを前記プロセッサノードに割り当てるオペレーティングシステム手段と、
前記相互接続ネットワークにおける前記プロセッサノードと前記仮想プロセッサ手段のロケーションを識別するための翻訳テーブルを格納する手段と、
を有し、
オペレーティングシステム手段は、システムの動作中において前記システム起動時に設定された前記翻訳テーブルの内容を更新し、
前記複数の仮想プロセッサ手段のそれぞれは、他の仮想プロセッサ手段の実行と同時に前記複数のスレッドの一つを独立して実行し、前記データ記憶装置の異なる一つを同時にアクセスすることを特徴とする並列演算処理システム。
【請求項２】
それぞれが複数のデータ記憶装置に接続された複数のプロセッサノードと、当該複数のプロセッサノード間でメッセージを伝送する相互接続ネットワークとを備えたコンピュータシステムにおける並列演算処理方法であって、
（ａ）あるタスク処理のために実行される一連のインストラクションであるスレッドを同時に実行するために複数の仮想プロセッサ手段を割り当てるステップと、
（ｂ）前記複数の仮想プロセッサ手段のそれぞれは、他の仮想プロセッサ手段の実行と同時に前記スレッドの一つを独立して実行し、前記データ記憶装置の異なる一つを同時にアクセスするステップと、
（ｃ）システムの動作中に前記プロセッサノードの一つが故障した場合、当該プロセッサノードを構成する前記仮想プロセッサを他のプロセッサノードへ割り当てを変更するステップと、
（ｄ）前記複数のプロセッサノード間で伝送されるメッセージが前記故障したプロセッサノードを構成する仮想プロセッサ宛の場合に、前記故障したプロセッサノードから前記他のプロセッサノードへ伝送されるように前記相互接続ネットワークにおける前記プロセッサノードと前記仮想プロセッサ手段のロケーションを識別するための翻訳テーブルを更新するステップと、
の各ステップを有することを特徴とする並列演算処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、並列演算処理システムに係り、特に作業の複数のスレッドを同時に実行することを可能にし、並列処理および利用度を向上させるように設計された仮想プロセッサに関する。
【０００２】
【従来の技術】
並列演算処理システムは、オペレーティングシステムおよび個々のコンピュータ（すなわち、プロセッサノード）のアレイからなる。プロセッサノードのそれぞれは、それ自身の中央演算処理装置（ＣＰＵ）、メモリおよびデータ記憶ユニットを有する。タスクは、各プロセッサノードを使用することにより並列に実行される。
【０００３】
タスクの実行中に、作業は複数のスレッドに分割される。スレッドは、タスクのためにコンピュータにより実行されるインストラクションのストリームである。類似物として、オーケストラが演奏するシンフォニーのようなタスクは、それぞれのパートを演奏する個々の音楽家に相当する多くのスレッドに分解することができる。
【０００４】
一般に、並列コンピュータシステムにおいて、各スレッドは、異なるプロセッサノードに割り当てられる。これらのスレッドのそれぞれは、その対応する別個のプロセッサノードにおいて並列に実行される。例えば、３つのスレッドは、一度に３つの異なるノードを使用し、同時に実行される。
【０００５】
この並列演算処理技術の１つの利点は、実行時間の短縮である。しかしこの技術は、１つのプロセッサノードが複数のスレッドを実行し、これらのスレッドがプロセッサノードの全体時間を実際に共有し、すなわちその一部分を交互に使用する状況と混同されるべきではない。
【０００６】
【発明が解決しようとする課題】
この従来の並列演算処理には利点もあるが、欠点もある。従来の並列演算処理技術では、利用可能なハードウェアの使用が非効率的であった。例えば、１つのプロセッサノードに複数の記憶装置（すなわちディスクドライブ装置）が設けられている場合、１つの実行スレッドは、これらの記憶装置のうちの１つのみを一度にアクセスすることになり、他の記憶装置は、十分に活用されないすなわちアイドル状態となる。さらに並列システムがマルチプロセッサノードから構成される場合、ノード当たり単一スレッドは、ノード中の全ての利用可能なＣＰＵを利用することはできない。
【０００７】
【課題を解決するための手段】
上述した従来技術における制約を克服するために、本発明は、ノード当たり複数のスレッドを含むように並列処理のレベルを高めた並列コンピュータシステムのための仮想プロセッサ方法および装置を開示する。１つのプロセッサノードに複数の記憶装置が設けられている場合、単に時間の一部分を交互に使用するのではなく複数のスレッドが同時に実行できるように、単一のスレッドを各装置に割り当てることができる。
【０００８】
同様に、１つのプロセッサノードが複数のＣＰＵを有する場合、個々のスレッドのそれぞれは同時に異なるＣＰＵを利用することができる。したがって、タスクは潜在的にシステム中の全ての利用可能なハードウェアを使用することができる。この結果、システムの有用性および利用度が向上する。
【０００９】
本発明において、各スレッドは、仮想プロセッサ（ｖｐｒｏｃ）と呼ばれるオペレーティング環境に入れられている。この仮想プロセッサｖｐｒｏｃは、並列処理の基本単位を提供する。この仮想プロセッサｖｐｒｏｃの並列処理は、現実のハードウェアの並列処理とは独立したものである。さらに、仮想プロセッサｖｐｒｏｃは、同じノードまたは他のノードにおける他の仮想プロセッサｖｐｒｏｃ中で働く他のスレッドからのあるレベルの分離を提供する。
【００１０】
本発明の１つの目的は、並列コンピュータシステムのより効率的な利用を提供することである。この目的は、本発明の仮想プロセッサ（ｖｐｒｏｃ）コンセプトの使用により達成される。本発明の仮想プロセッサは、特定のタスクのマルチスレッディングとコンピュータシステムの物理的レイアウトとの間のあるレベルの抽象性を付加する。この特徴は、並列処理の程度以上のより良い制御という利点を提供する。もう一つの利点は、アプリケーションにおける不必要なプログラミングオーバヘッドなしにより高いシステム利用度が得られることである。本発明のさらなる他の利点は、故障に対する耐性を向上できるということである。
【００１１】
【発明の実施の形態】
以下、本発明の好ましい実施形態を、図面を参照して説明する。なお、他の実施形態が使用でき、本発明の範囲から離れることなく構造的な変更を加えることができることは言うまでもない。
【００１２】
並列演算処理システムは、典型的には、特定のタスクの実行を演算処理エレメントのアレイについて分割することを試みる。本発明の仮想プロセッサ（ｖｐｒｏｃ）コンセプトは、特定のタスクのマルチスレッディングと演算システムの物理的レイアウトとの間のあるレベルの抽象性を付加する。得られる利点は、並列処理の程度以上のより良い制御、アプリケーションにおける不必要なプログラミングオーバヘッドなしにより高いシステム利用度が得られること、および故障に対する耐性が向上することである。
【００１３】
図１は、典型的な並列演算処理システムを示す。相互接続ネットワーク１０は、これによりプロセッサノード１２を共にグループ化し、互いに通信させる手段である。各ノードは、複数の記憶装置１４を有する。プロセッサノード１２は、しっかりと結合されたマルチプロセッシングまたは対称的なマルチプロセッシングのために使用される複数のＣＰＵを有することもできる。典型的な並列演算処理システムにおいて、タスクは複数の実行スレッド（すなわち作業のエレメント）に分割され、通常はプロセッサノード当たり１スレッドを有する。これらのスレッドのそれぞれは、プロセッサノード１２により並列的に（同時に）実行される。しかし、プロセッサノード１２が複数のＣＰＵで構成されている場合、ノード当たり単一スレッドは、全てのＣＰＵを使用することはできない。
【００１４】
図２は、複数の記憶装置１４を備えているが、仮想プロセッサｖｐｒｏｃが設けられていない単一のプロセッサノード１２を示す。実行の単一スレッド１６は、３つの記憶装置１４を逐次アクセスできるが、一度に１つのみをアクセスでき、他の利用可能な記憶装置１４はアイドル状態のままである。
【００１５】
図３は、複数のスレッド１６および複数の記憶装置１４を有する単一のプロセッサノード１２を示す。各スレッド１６は、仮想プロセッサ（ｖｐｒｏｃ）１８と呼ばれるオペレーティング環境中に入れられている。各仮想プロセッサ（ｖｐｒｏｃ）１８には、仮想ディスク（ｖｄｉｓｋ）と呼ばれるそれ自体固有の論理的ディスク空間が与えられており、実際にはこの仮想ディスクは１つまたはそれ以上のデータ記憶装置１４であってもよい。仮想プロセッサｖｐｒｏｃコンセプトを使用して、並列システムにより与えられる並列処理の程度は、ノード当たり複数の同時実行スレッドを含むように高めることができるので、図２に示されているようにノード当たり１つのスレッドではなく記憶装置当たり１つのスレッドがある。仮想プロセッサ１８および仮想ディスクｖｄｉｓｋは、プロセッサノード１２の時間の一部分を単に交互に使用するのではなく、スレッド１６を同時に実行することを可能にする。同様に、プロセッサノード１２が複数のＣＰＵを有する場合、個々のスレッド１６のそれぞれは強化された並列処理のために異なるＣＰＵを使用することができる。また仮想プロセッサｖｐｒｏｃ１８も、同じプロセッサノード１２上の他の仮想プロセッサｖｐｒｏｃ１８中で働く他のスレッド１６からのあるレベルの分離を提供する。さらに、仮想プロセッサｖｐｒｏｃ１８は、その中で仮想プロセッサｖｐｒｏｃ１８がアドレスを使用して互いに通信するある程度のロケーション透明度を提供する。このアドレスは、プロセッサノードに特有のものではなく仮想プロセッサｖｐｒｏｃに特有のものである。すなわち仮想プロセッサｖｐｒｏｃは、どのノード上で実行しているかを知ることを必要とせずにアドレスされることができる。異なるプロセッサノード１２上の仮想プロセッサｖｐｒｏｃ１８は、同じプロセッサノード１２上の仮想プロセッサｖｐｒｏｃと同じメカニズムを使用して互いに通信する。さらに、仮想プロセッサｖｐｒｏｃ１８は、物理的プロセッサノード１２および実行スレッド１６との間のあるレベルの分離／抽象化を与えることにより冗長度を促進し、いくつかのプロセッサノード１２が故障したか遮断された場合にも全てのスレッド１６をランさせることを可能にする。この結果、システムの有用性および故障に対する耐性が向上する。
【００１６】
図４Ａは、仮想プロセッサｖｐｒｏｃコンセプトの好ましい実施形態が具現化され得るシステムソフトウェアのレベルを示す。伝統的なコンピュータシステムの分割は、非常に低いレベルで行われてきた。ここでアドレス空間が分割されており、インターラプトおよび他の低いレベルのＣＰＵ動作が分割され分離されている。本発明は、仮想プロセッサｖｐｒｏｃ１８をオペレーティングシステムデータ構造レベルにおいて相互接続ネットワーク１０のソフトウェア中に具現化している。データ構造レベルにおける「バーチャリズム」を提供することにより仮想プロセッサｖｐｒｏｃ１８の分割および分離は、伝統的な仮想マシーン手段よりもかなり低いパフォーマンスコストで提供することができる。
【００１７】
各プロセッサノード１２中のオペレーティングシステム（ＯＳ）イメージは、各タスクがどの仮想プロセッサｖｐｒｏｃ１８に属するかを監視する。タスクがオペレーティングシステムコールに機能を実行させる場合には、オペレーティングシステムＯＳは、仮想プロセッサｖｐｒｏｃ１８に基づく存在についてのアドレス／タグ／ハンドルを監視する。言い換えれば、タスクは仮想プロセッサｖｐｒｏｃ１８内で固有のアドレスと共にメールボックスを回収する。同じプロセッサノード１２上で働く他の仮想プロセッサｖｐｒｏｃ１８もこのアドレスを有することができるが、オペレーティングシステムＯＳがどのタスクがどの仮想プロセッサｖｐｒｏｃ１８に属するかを監視しているので、全てのこれらのメールボックスは論理的には別個のものである。
【００１８】
オペレーティングシステムＯＳは、システムの起動時に、仮想プロセッサｖｐｒｏｃ１８をプロセッサノード１２に割り当てる。好ましくはこれは、付加バランスアルゴリズムに基づいて行われるが、他の割当アルゴリズムも同様に使用することができる。さらに、オペレーティングシステムＯＳは、追加的なプロセッサノードが利用可能となった場合にはいつでも、すなわちプロセッサノードが修理されおよび／またはブートし直された後に、仮想プロセッサｖｐｒｏｃ１８をプロセッサノード１２に割り当てることができる。システムスタートアップ時に、仮想プロセッサｖｐｒｏｃ１８およびこれらが存在するプロセッサノード１２の翻訳テーブルがつくられ、相互接続ネットワーク１０に格納される。仮想プロセッサｖｐｒｏｃ１８およびこれらが存在するプロセッサノード１２の翻訳テーブルは、仮想プロセッサｖｐｒｏｃ１８がどんな理由のためでも、プロセッサノード１２の間を移動したときにはいつでも更新される。
【００１９】
メッセージが特定の仮想プロセッサｖｐｒｏｃ１８中のメールボックスに送られた場合、相互接続ネットワーク（相互接続ドライバ）１０は、テーブル中の仮想プロセッサｖｐｒｏｃ／プロセッサノードの翻訳を参照し、メッセージを指定されたプロセッサノード１２に送り、受信プロセッサノードは、適切な仮想プロセッサｖｐｒｏｃ１８中の適切なメールボックスにそのメッセージを局所的に方路選択する。そして、仮想プロセッサｖｐｒｏｃ１８は、ノード特有ではなく仮想プロセッサｖｐｒｏｃ特有のアドレスを使用して互いに通信する。具体的には、仮想プロセッサｖｐｒｏｃ１８は、どのプロセッサノード１２上で実行しているかを知ることなしにアドレスされ得る。
【００２０】
例えば、図４Ｂにおいて、仮想プロセッサ（ｖｐｒｏｃ０）２２中のタスクは仮想プロセッサ（ｖｐｒｏｃ３）２６中のメールボックス２４中のｍｂｘ１にメッセージを送ることを決定できる。このメッセージは、用意され、ローカルプロセッサノード３０上の相互接続ドライバ２８に送られる。相互接続ドライバ２８は、宛先仮想プロセッサ（ｖｐｒｏｃ３）２６を使用して、その翻訳テーブル３４中のホストプロセッサノードを参照し、この例においては、プロセッサノード（ノード１）３２を識別する。このメッセージは、相互接続ネットワーク３６を通してプロセッサノード（ノード１）３２に送られる。プロセッサノード（ノード１）３２中の相互接続ネットワークドライバ２８は、このメッセージを受け取り、これを仮想プロセッサ（ｖｐｒｏｃ３）２６中のメールボックス２４中のｍｂｘ１に方路選択する。仮想プロセッサ特有のアドレスの結果として、コンピュータシステム中のどこかに位置するタスクは、このコンピュータシステム中のどこかに位置するいかなる他のタスクにもメッセージを送ることができる。したがって、図４Ａにおいて、同じプロセッサノード１２上の仮想プロセッサｖｐｒｏｃ１８は、異なるプロセッサノード１２上の仮想プロセッサｖｐｒｏｃ１８と同じメカニズムを使用して互いに通信する。
【００２１】
図５は、本発明によるクリークの概念を示す。クリークは、１つまたはそれ以上のデータ記憶装置１４に接続されたプロセッサノード１２の集合である。クリークは、利用度を向上させるためのプロセッサノード１２のクラスタに、データ記憶装置１４への共通に割り当てられたアクセスの側面的利点を与える。仮想ディスクｖｄｉｓｋは、クリーク内のどのプロセッサノード１２からもアクセスすることができ、仮想プロセッサｖｐｒｏｃ１８をクリーク内のどのプロセッサノード１２においてもランさせることが可能となる。プロセッサノード１２を一緒にグループ化し、これらに共通のデータ記憶装置（ディスク記憶装置）１４を取り付けることにより、グループ中の少なくとも１つのプロセッサノード１２が機能的である可能性は、グループ中の全てのプロセッサノードが機能的である可能性よりも数桁高いことがわかる。例えば、３０，０００時間の平均故障間隔（ＭＴＢＦ）を有するプロセッサノード１２でできた３つのプロセッサノード１２のクリークにおいて、クリーク内のプロセッサノード１２の平均故障間隔は１０，０００時間（３０，０００時間／クリークにつき３ノード）である。しかし、故障したプロセッサノード１２に対して、平均修理時間（ＭＴＴＲ）が３０時間である場合、クリーク全体の理論的ＭＴＢＦは（百万倍改善して）非常に高くなる。これが冗長度の基本的な利点である。したがって、並列システムは、個々のプロセッサノード１２のアレイというよりはむしろクリークのアレイの合成物であると考えられる。
【００２２】
図６は、１つまたはそれ以上のプロセッサノード１２が故障しまたは遮断されたとしても、構成が一定に保たれることを示す。データ記憶装置１４は、いくつかのよく知られた冗長度および回復の形（例えば、鏡像化アルゴリズムおよび他のＲＡＩＤアルゴリズム）を有する。プロセッサノード１２およびデータ記憶装置１４をクリークに構成することは、冗長性のあるハードウェアを提供し、仮想プロセッサｖｐｒｏｃ１８は、冗長性のあるソフトウェアを提供する。プロセッサノード当たり複数のスレッドおよびロケーション独立（仮想プロセッサｖｐｒｏｃ１８は、どのプロセッサノード１２に前もって割り当てられたかを知らないので）の特質を利用することにより、１つまたはそれ以上のプロセッサノード１２が利用可能でない場合であっても、仮想プロセッサｖｐｒｏｃ１８の構成は、一定に保たれることがわかる。処理されている全てのデータは、共有のデータ記憶装置１４において利用可能である。結果としての構成は、より少ない処理パワーで動作可能であるが、この並列アプリケーションは、なお同じ数の仮想プロセッサｖｐｒｏｃ１８を有し、全てのデータ記憶装置１４への完全なアクセスを保持する。
【００２３】
要するに、本発明は、並列処理のレベルを高めノード当たり複数のスレッドを含むようにした並列コンピュータシステムのための仮想プロセッサ方法および装置を開示する。１つのプロセッサノードに複数の記憶装置が設けられている場合、個々のスレッドのそれぞれは異なるデータ記憶装置に割り当てることができる。同様に、１つのプロセッサノードが複数のＣＰＵを有している場合、個々のスレッドのそれぞれは、そのコード中の異なるＣＰＵを利用することができる。したがって、タスクは、システム中の全ての利用可能なハードウェアを潜在的に使用することができる。この結果、システムの有用性および利用度が向上する。
【００２４】
【発明の効果】
以上説明したように本発明によれば、システムの有用性および利用度を向上させることが可能なコンピュータシステムおよび並列コンピュータシステムにおいて実行される複数のスレッド間を通信する方法を提供することができる。
【図面の簡単な説明】
【図１】典型的な並列演算処理システムの構成を示すブロック図
【図２】仮想プロセッサを有しないディスク記憶装置を使用した構成を示すブロック図
【図３】仮想プロセッサと共にディスク記憶装置を使用する構成を示すブロック図
【図４】仮想プロセッサが仮想プロセッサ特有のアドレスを使用して互いに通信する方法を示す図
【図５】同一のデータ記憶装置に接続されたプロセッサノードの集合であるクリークを示す図
【図６】１つまたは２つ以上のプロセッサノードが故障したとしても、仮想プロセッサ構成が一定に保たれることを示す図
【符号の説明】
１０  相互接続ネットワーク
１２  プロセッサノード
１４  データ記憶装置
１６  スレッド
１８  仮想プロセッサ
【図１】
0003696960.tif 000002
【図２】
0003696960.tif 000003
【図３】
0003696960.tif 000004
【図４】
0003696960.tif 000005
【図５】
0003696960.tif 000006
【図６】
0003696960.tif 000007