(57)【特許請求の範囲】
【請求項１】
送信側計算機からパケットを受信すると該受信パケットに関連付けられる処理を実行する並列計算機における計算機の通信インターフェース装置であって、
パケットの送信先となる複数の計算機のそれぞれに対応したパケット送信命令を記憶する命令記憶部と、
前記送信側計算機から受信したパケットに含まれるデータを記憶するデータ記憶部と、  前記送信側計算機からパケットを受信し、該受信パケットに含まれるデータを前記データ記憶部に記憶するパケット受信部と、
前記送信側計算機からのパケットを前記パケット受信部により受信した場合に、前記命令記憶部からパケット送信命令を順次読み出し、該パケット送信命令に基づいて前記データ記憶部に記憶された前記データを含むパケットを前記複数の計算機のそれぞれに送信する連鎖実行部と、を備えたことを特徴とする通信インターフェース装置。
【請求項２】
前記パケット受信部によって前記送信側計算機からパケットが受信されるデータの受信回数を計数し、該計数した受信回数が所定の閾値となった場合に、前記複数の計算機へのパケットの送信を前記連鎖実行部に開始させる実行判定部をさらに備えたことを特徴とする請求項１に記載の通信インターフェース装置。
【請求項３】
前記命令記憶部に記憶されたパケット送信命令のすべてが前記連鎖実行部により読み出されて前記複数の計算機の全てにパケットが送信されたか否かを判定する命令実行完了判定部をさらに備えたことを特徴とする請求項１又は２に記載の通信インターフェース装置。
【請求項４】
前記命令実行完了判定部により前記複数の計算機の全てにパケットが送信されたと判定された場合に、前記受信パケットの処理の開始のために該計算機のプロセッサに割り込みを発生させる割り込み発生部をさらに備えたことを特徴とする請求項３に記載の通信インターフェース装置。
【請求項５】
前記パケット受信部は、前記送信側計算機からパケットを受信すると、処理中フラグをオンにし、前記連鎖実行部によって前記複数の計算機の全てにパケットが送信された場合に、前記処理中フラグを初期化することを特徴とする請求項４に記載の通信インターフェース装置。
【請求項６】
前記パケット受信部は、前記処理中フラグを初期化する前に、前記送信側計算機からパケットをさらに受信した場合に、該パケットを無視して、該パケットを送信した送信側計算機に対して、パケット送信の再試行を行なう指示を送信することを特徴とする請求項５に記載の通信インターフェース装置。
【請求項７】
前記命令記憶部は、前記パケット送信命令と次に実行されるパケット送信命令の格納アドレスとを前記パケット送信命令ごとに関連付けて記憶しており、
前記連鎖実行部は、前記送信側計算機から受信したパケットに含まれるパケット送信命令のうち先頭のパケット送信命令および次のパケット送信命令の格納アドレスを前記命令記憶部から読み出した後に当該先頭のパケット送信命令により指定される計算機に前記データ記憶部に記憶されたデータを含むパケットを送信し、前記パケット送信命令とともに次のパケット送信命令の格納アドレスが連鎖して記憶されている間、前記次のパケット送信命令の格納アドレスを参照して前記命令記憶部からパケット送信命令および次のパケット送信命令の格納アドレスを読み出して前記データを含むパケットの送信を繰り返し実行することを特徴とする請求項１〜６のいずれか１項に記載の通信インターフェース装置。
【請求項８】
送信側計算機からパケットを受信すると該受信パケットに関連付けられる処理を実行する並列計算機における計算機の通信方法であって、
パケットの送信先となる複数の計算機のそれぞれに対応したパケット送信命令を命令記憶部に記憶する命令記憶手順と、
前記送信側計算機からパケットを受信し、該受信パケットに含まれるデータをデータ記憶部に記憶するパケット受信手順と、
前記パケット受信手順により前記送信側計算機からパケットを受信した場合に、前記命令記憶部からパケット送信命令を順次読み出し、該パケット送信命令に基づいて前記データ記憶部に記憶された前記データを含むパケットを前記複数の計算機のそれぞれに送信する連鎖実行手順と、を含んだことを特徴とする通信方法。
【請求項９】
前記パケット受信手順によって前記送信側計算機からパケットが受信されるデータの受信回数を計数し、該計数した受信回数が所定の閾値となった場合に、前記連鎖実行手順による前記複数の計算機へのパケットの送信を開始させる実行判定手順をさらに含むことを特徴とする請求項８に記載の通信方法。
【請求項１０】
前記命令記憶手順において、前記パケット送信命令と次に実行されるパケット送信命令の格納アドレスとを前記パケット送信命令ごとに関連付けて前記命令記憶部に記憶し、
前記連鎖実行手順において、前記送信側計算機から受信したパケットに含まれるパケット送信命令のうち先頭のパケット送信命令および次のパケット送信命令の格納アドレスを前記命令記憶部から読み出した後に当該先頭のパケット送信命令により指定される計算機に前記データ記憶部に記憶されたデータを含むパケットを送信し、前記パケット送信命令とともに次のパケット送信命令の格納アドレスが連鎖して記憶されている間、前記次のパケット送信命令の格納アドレスを参照して前記命令記憶部からパケット送信命令および次のパケット送信命令の格納アドレスを読み出して前記データを含むパケットの送信を繰り返し実行することを特徴とする請求項８又は９に記載の通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信側計算機からデータを受信すると該受信データに関連付けられる処理を実行する並列計算機における計算機の通信インターフェース装置及び通信方法に関し、特に、並列計算機において、通信データを、最も近接して接続される複数の計算機へ同報配信するとともに、該最も近接して接続される複数の計算機を超えた先のノードの計算機まで送信する並列計算機において、それぞれデータの送受信が行われる都度発生する処理に伴う割り込み処理などのオーバーヘッドの解消を図る通信インターフェース装置及び通信方法に関する。
【背景技術】
【０００２】
従来から、複数の装置を接続して通信を行わせることにより、装置間でデータの授受を行うことが行われてきた。かかる接続では、装置の接続が木構造状に構成されている場合に、通信データを、最も近接して接続される複数の装置へ同報配信するとともに、該最も近接して接続される複数の装置を超えた先のノードの装置まで送信したい要求がある。
【０００３】
かかる要求を満たすために、例えば、特許文献１及び２には、前述の装置がファクシミリ装置である場合に、上位ノードのファクシミリ装置から受信した受信データを、該データの受信に連鎖して同報配信する下位ノードのファクシミリ装置に関する情報に基づいて該下位ノードのファクシミリ装置へ送信する多段中継同報方法が開示されている。
【０００４】
また、特許文献３には、送信側計算機及び複数の受信側計算機を有するデータ通信システムにおいて、予め記憶される同報配信先である受信側計算機に関する情報に基づいて、送信側計算機は、該複数の受信側計算機へデータを同報配信すると共に、受信側で検知されたエラー情報に基づいて送信タイミングを決定することにより、同報配信におけるデータ通信の信頼性を高め得るデータ通信システムが開示されている。
【０００５】
【特許文献１】特許第２５８５３３８号公報
【特許文献２】特開平９−８３７０１号公報
【特許文献３】特許第３４９５６７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、近年、複数の計算機を通信可能に多数接続して協調動作させることにより、膨大なデータ処理能力、計算能力を有する並列計算機が、従来の大型コンピュータに代わる計算機システムとして主流となりつつある。
【０００７】
かかる並列計算機においても、通信データを、最も近接して接続される複数の計算機へ同報配信するとともに、該最も近接して接続される複数の計算機を超えた先のノードの計算機まで送信したい要求がある。この処理の際に、ノード間通信を使用して、最も近接して接続される複数の計算機へ同報配信するとともに、該最も近接して接続される複数の計算機を超えた先のノードの計算機まで送信することとなる。
【０００８】
ここで、上記特許文献１及び２に代表される従来技術の技術思想を適用したとしても、上位ノードからデータが受信されると割り込み処理を発生させ、さらに次ノードの計算機へ転送処理の際にも割り込み処理が発生するが、このような割り込み処理の連続発生を抑制することは不可能である。
【０００９】
また、上記特許文献３に代表される従来技術では、同報配信におけるデータ通信の信頼性を高めることを目的としているため、上位ノードからのデータ受信時に発生する割り込み処理、及び次ノードの計算機への転送処理の際に発生する割り込み処理の連続発生を抑制することは不可能である。
【００１０】
本発明は、上記問題点（課題）を解消するためになされたものであって、並列計算機において、通信データを、最も近接して接続される複数の計算機へ同報配信するとともに、該最も近接して接続される複数の計算機を超えた先のノードの計算機まで送信する並列計算機において、それぞれデータの送受信が行われる都度発生する処理に伴う割り込み処理などのオーバーヘッドを極力押さえることができる通信インターフェース装置及び通信方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した問題を解決し、目的を達成するため、本発明は、送信側計算機からパケットを受信すると該受信パケットに関連付けられる処理を実行する並列計算機における計算機の通信インターフェース装置であって、パケットの送信先となる複数の計算機のそれぞれに対応したパケット送信命令を記憶する命令記憶部と、前記送信側計算機から受信したパケットに含まれるデータを記憶するデータ記憶部と、前記送信側計算機からパケットを受信し、該受信パケットに含まれるデータを前記データ記憶部に記憶するパケット受信部と、前記送信側計算機からのパケットを前記パケット受信部により受信した場合に、前記命令記憶部からパケット送信命令を順次読み出し、該パケット送信命令に基づいて前記データ記憶部に記憶された前記データを含むパケットを前記複数の計算機のそれぞれに送信する連鎖実行部と、を備えたことを特徴とする。
【００１２】
また、本発明は、上記発明において、前記パケット受信部によって前記送信側計算機からパケットが受信されるデータの受信回数を計数し、該計数した受信回数が所定の閾値となった場合に、前記複数の計算機へのパケットの送信を前記連鎖実行部に開始させる実行判定部をさらに備えたことを特徴とする。
【００１３】
また、本発明は、上記発明において、前記命令記憶部に記憶されたパケット送信命令のすべてが前記連鎖実行部により読み出されて前記複数の計算機の全てにパケットが送信されたか否かを判定する命令実行完了判定部をさらに備えたことを特徴とする。
【００１４】
また、本発明は、上記発明において、前記命令実行完了判定部により前記複数の計算機の全てにパケットが送信されたと判定された場合に、前記受信パケットの処理の開始のために該計算機のプロセッサに割り込みを発生させる割り込み発生部をさらに備えたことを特徴とする。
【００１５】
また、本発明は、上記発明において、前記パケット受信部は、前記送信側計算機からパケットを受信すると、処理中フラグをオンにし、前記連鎖実行部によって前記複数の計算機の全てにパケットが送信された場合に、前記処理中フラグを初期化することを特徴とする。
【００１６】
また、本発明は、上記発明において、前記パケット受信部は、前記処理中フラグを初期化する前に、前記送信側計算機からパケットをさらに受信した場合に、該パケットを無視して、該パケットを送信した送信側計算機に対して、パケット送信の再試行を行なう指示を送信することを特徴とする。
【００１７】
また、本発明は、上記発明において、前記命令記憶部は、前記パケット送信命令と次に実行されるパケット送信命令の格納アドレスとを前記パケット送信命令ごとに関連付けて記憶しており、前記連鎖実行部は、前記送信側計算機から受信したパケットに含まれるパケット送信命令のうち先頭のパケット送信命令および次のパケット送信命令の格納アドレスを前記命令記憶部から読み出した後に当該先頭のパケット送信命令により指定される計算機に前記データ記憶部に記憶されたデータを含むパケットを送信し、前記パケット送信命令とともに次のパケット送信命令の格納アドレスが連鎖して記憶されている間、前記次のパケット送信命令の格納アドレスを参照して前記命令記憶部からパケット送信命令および次のパケット送信命令の格納アドレスを読み出して前記データを含むパケットの送信を繰り返し実行することを特徴とする。
【００１８】
また、本発明は、送信側計算機からパケットを受信すると該受信パケットに関連付けられる処理を実行する並列計算機における計算機の通信方法であって、パケットの送信先となる複数の計算機のそれぞれに対応したパケット送信命令を命令記憶部に記憶する命令記憶手順と、前記送信側計算機からパケットを受信し、該受信パケットに含まれるデータをデータ記憶部に記憶するパケット受信手順と、前記パケット受信手順により前記送信側計算機からパケットを受信した場合に、前記命令記憶部からパケット送信命令を順次読み出し、該パケット送信命令に基づいて前記データ記憶部に記憶された前記データを含むパケットを前記複数の計算機のそれぞれに送信する連鎖実行手順と、を含んだことを特徴とする。
【００１９】
また、本発明は、上記発明において、前記パケット受信手順によって前記送信側計算機からパケットが受信されるデータの受信回数を計数し、該計数した受信回数が所定の閾値となった場合に、前記連鎖実行手順による前記複数の計算機へのパケットの送信を開始させる実行判定手順をさらに含むことを特徴とする。
【００２０】
また、本発明は、上記発明において、前記命令記憶手順において、前記パケット送信命令と次に実行されるパケット送信命令の格納アドレスとを前記パケット送信命令ごとに関連付けて前記命令記憶部に記憶し、前記連鎖実行手順において、前記送信側計算機から受信したパケットに含まれるパケット送信命令のうち先頭のパケット送信命令および次のパケット送信命令の格納アドレスを前記命令記憶部から読み出した後に当該先頭のパケット送信命令により指定される計算機に前記データ記憶部に記憶されたデータを含むパケットを送信し、前記パケット送信命令とともに次のパケット送信命令の格納アドレスが連鎖して記憶されている間、前記次のパケット送信命令の格納アドレスを参照して前記命令記憶部からパケット送信命令および次のパケット送信命令の格納アドレスを読み出して前記データを含むパケットの送信を繰り返し実行することを特徴とする。
【発明の効果】
【００２１】
本発明によれば、パケット受信を契機として、パケット送信命令を通信インターフェース装置内の処理のみで連鎖させて実行することができ、パケット受信毎にパケット送信命令を実行する場合に比べ、計算機のプロセッサの処理負担を軽減し、並列計算機の処理能力の低下を防止できるという効果を奏する。
【発明を実施するための最良の形態】
【００２９】
以下に添付図面を参照して、本発明の通信インターフェース装置及び通信方法に係る実施例を詳細に説明する。以下に示す実施例では、本発明を、並列アプリケーションを実行する、複数のコンピュータが接続された並列計算機における連鎖処理に適用した例を示すこととする。なお、本発明における並列計算機は、クラスタ計算機、グリッドコンピューティング計算機などを広く含む。また、以下の実施例は、並列計算機における計算機間のインターフェース規格であるInfiniBandやMyrinet（登録商標）に代表される、遠隔の計算機からのメモリへの直接アクセス技術であるＲＤＭＡ（Remote Direct Memory Access）を前提とするものである。
【実施例１】
【００３０】
先ず、従来の並列計算機の構成と連鎖処理における問題点について説明する。図１は、従来の並列計算機の構成と同期処理における問題点を示す図である。同図に示すように、ノードコンピュータＡ、Ｂ、Ｃ及びＤがノードとして相互に通信可能に接続されている従来の並列計算機において、メッセージ通信によるノードコンピュータＢからノードコンピュータＡを介したノードコンピュータＣへのパケットと、同じくメッセージ通信によるノードコンピュータＣからノードコンピュータＡを介したノードコンピュータＤへのパケットとが連鎖して送信される状況において、問題が発生していた。
【００３１】
ここで、パケットとは、ネットワークを介して遠隔に存在するコンピュータに、該パケットに対応するAtomic Operation等の実行を依頼する指示であり、該Atomic Operationの実行対象となるデータを含むものである。Atomic Operationとは、該Atomic Operationの実行終了まで割り込みを禁止して、他の命令の実行を行わせない操作である。
【００３２】
ノードコンピュータＡ、Ｂ、Ｃ及びＤは、ＣＰＵなどのプロセッサと、メモリなどの記憶部と、ネットワークインターフェースカードである通信Ｉ／Ｆ部とを有する。プロセッサは、さらにプロセス切り替え処理部を有する。記憶部は、受信データを含むデータの書き込み領域であるデータ記憶部をさらに有する。通信Ｉ／Ｆ部は、Atomic Operation等を実行する通信処理実行部と、割り込み発生部とをさらに有する。
【００３３】
プロセス切り替え処理部は、割り込み処理部による割り込み処理の発生又はイベントの発生毎に、複数のノードコンピュータからの受信データの受信毎に、それぞれの受信データの処理に対応するプロセスへ実行プロセスを切り替える処理を行う。
【００３４】
通信処理実行部は、他のノードコンピュータからのパケットを受信すると、該パケットに応じたAtomic Operation等の通信処理を実行して、直接データ記憶部においてメモリ操作を行う。また、割り込み発生部に対して、プロセッサにデータの受信に係る割り込み処理を発生させる指示を出力する。
【００３５】
割り込み発生部は、通信処理実行部からの割り込み処理発生指示に基づいて、同期処理部にプロセッサに対して割り込み処理を発生させ、また、プロセッサから出力された外部へのパケット送信指示であるＳＷＲ（Send Work Request）に基づいて、通信処理実行部にパケットの送信の指示を出力する。また、割り込み発生部からの他のノードコンピュータへのパケット送信指示に基づいて、対応するパケットを該他のノードコンピュータへ送信する。
【００３６】
ここで、ノードコンピュータＢからノードコンピュータＡを経由して、ノードコンピュータＣ及びノードコンピュータＤに対してデータが送信される場合を示す。先ず、（１）ノードコンピュータＢから、連鎖処理に係るパケットがノードコンピュータＡにより受信されると、このパケットの受信に基づくメッセージ受信が実行されるが、該受信実行のために、プロセッサにおいて割り込み処理及びプロセス切り替え処理が発生される。続いて、この切り替えられたプロセスにより、（２）ノードコンピュータＣへ、連鎖処理に係るパケットが送信される。（１）及び（２）では、ノードコンピュータＡにおいて、パケットの受信／送信のために、プロセッサへの割り込み及びプロセスの切り替えによるコンテキストスイッチの乱れによるオーバーヘッドが発生することになる。
【００３７】
次に、（３）ノードコンピュータＣから、連鎖処理に係るパケットがノードコンピュータＡにより受信されると、このパケットの受信に基づくメッセージ受信が実行されるが、該受信実行のために、プロセッサにおいて割り込み処理及びプロセス切り替え処理が発生される。続いて、この切り替えられたプロセスにより、（４）ノードコンピュータＤへ、連鎖処理に係るパケットが送信される。（３）及び（４）でも、ノードコンピュータＡにおいて、パケットの受信／送信のために、プロセッサへの割り込み及びプロセスの切り替えによるコンテキストスイッチの乱れによるオーバーヘッドが発生することになる。
【００３８】
このように、従来の並列計算機は、連鎖処理の対象となる複数のパケットの受信毎にプロセッサに割り込み処理を発生させることとなる。そして、プロセス切り替え処理部は、割り込み発生毎に、ある受信データが指示する連鎖処理を指示するために、実行するプロセスの切り替えを行う。これら割り込み処理及びプロセスの切り替えにより、プロセッサのコンテキストスイッチが大きく乱されることとなる。
【００３９】
また、パケット受信に基づくAtomic Operationを、従来技術をそのまま移行してネットワーク経由で使用するとなると、送信側で受信側のロックを取るまでリトライを繰り返すSpin Lockを使用して排他制御を行うことになるが、このリトライによる待ちの発生によって発生する送信側のプロセッサにおけるプロセスの切り替えによってコンテキストスイッチが大きく乱されてしまうことにもなる。
【００４０】
これらのことにより、並列計算機において分散アプリケーションを実行する場合には、個々の計算機の処理能力がいくら高くても、計算機間の通信において、同期処理に係る割り込み処理の頻発、プロセスの切り替えによるコンテキストスイッチの増大により、並列計算機全体として高い処理能力を期待することが難しくなってしまう。
【００４１】
そこで、本発明は、前述のメッセージ通信を行う分散アプリケーションの特徴に着目し、メッセージの受信毎に該受信メッセージが指示する連鎖処理を行うアプリケーションにおいて、メッセージが到着する毎にプロセッサに割り込みを発生させてプロセッサで同期処理を行うことなどの計算機間の通信に伴うオーバーヘッドを解消し、並列計算機全体の処理能力を向上させることができる通信インターフェース装置及び通信方法を提供するためになされた。
【００４２】
次に、実施例の並列計算機の構成について説明する。図２は、実施例の並列計算機の構成を説明する機能ブロック図である。同図に示すノードコンピュータＡ１００、ノードコンピュータＢ２００及びノードコンピュータＣ３００は同一の機能ブロックを有するので、ここでは、ノードコンピュータＡ１００に代表させて、ノードコンピュータの機能ブロックについて説明する。
【００４３】
ノードコンピュータＡ１００は、ＣＰＵなどのプロセッサ１０１と、メモリなどの記憶部１０２と、ネットワークインターフェースカードである通信Ｉ／Ｆ部１０３とを有する。なお、実施例のプロセッサ１０１は、プロセス切り替え処理部を有さない点に大きな特徴がある。記憶部１０２は、受信データを含むデータの書き込み領域であるデータ記憶部１０２ａと、連鎖するＳＷＲを記憶する連鎖ＳＷＲ記憶部１０２ｂとをさらに有する。通信Ｉ／Ｆ部１０３は、パケット受信時実行部１０３ａと、連鎖実行部１０３ｂとをさらに有する。
【００４４】
なお、実施例で送受信されるパケットは、対応するAtomic Operationの実行対象となるデータを含むと共に、連鎖ＳＷＲ記憶部１０２ｂに記憶される連鎖して実行されるべきＳＷＲの格納アドレスを示すポインタ情報も含む。データ記憶部１０２ａには、ＳＷＲに対応するAtomic Operationの実行対象となるデータと共に、連鎖ＳＷＲ記憶部１０２ｂに記憶される連鎖して実行されるべきＳＷＲの格納アドレスの先頭アドレスを示すポインタ情報が記憶される。
【００４５】
パケット受信時実行部１０３ａは、ＳＷＲを受信すると、該ＳＷＲに対応するメモリ操作をデータ記憶部１０２ａにおいて行うと共に、連鎖実行部１０３ｂに対して連鎖するAtomic Operationの実行を指示する。
【００４６】
連鎖実行部１０３ｂは、パケット受信時実行部１０３ａから連鎖するAtomic Operationの実行の指示を受けたならば、先ず、データ記憶部１０２ａから連鎖して実行されるべきＳＷＲの格納アドレスの先頭アドレスを示すポインタ情報を読み出して、該ポインタで指し示されるアドレスに格納される第１のＳＷＲを読み出して対応するAtomic Operationを実行する。次に、連鎖ＳＷＲ記憶部１０２ｂに記憶される第１のＳＷＲに付随して格納されている、次に連鎖して実行されるべき第２のＳＷＲの格納アドレスを示すポインタから第２のＳＷＲを読み出して対応するAtomic Operationを実行する。次に実行されるべきＳＷＲの格納アドレスを示すポインタ情報が格納されている限り、この連鎖を繰り返す。これにより、１つのＳＷＲを外部から受信したならば、通信Ｉ／Ｆ部１０３の機能により、連鎖する複数のＳＷＲが順次読み出され、対応するAtomic Operationが実行されることとなる。
【００４７】
これを、図２を参照して具体的に見ると、先ず、（１）ノードコンピュータＢ２００から、連鎖処理に係るパケットがノードコンピュータＡ１００により受信されると、このパケットの受信に応じて連鎖するＳＷＲに応じたAtomic Operationが順次実行されてパケットが送信されることとなる。具体的には、（２）ノードコンピュータＣ３００へ、連鎖するＳＷＲに基づく依頼処理パケットが送信され、続いて、（３）ノードコンピュータＤ４００へ、連鎖するＳＷＲに基づく依頼処理パケットが送信されることとなる。
【００４８】
従来では、ノードコンピュータＢ２００からノードコンピュータＡ１００を経由してノードコンピュータＣ３００及びノードコンピュータＤ４００へデータを送信する場合に、ノードコンピュータＣ３００及びノードコンピュータＤ４００それぞれにデータを送信する際に、その都度パケットをノードコンピュータＡ１００へ送信しなければならなかった。よって、ノード間通信による割り込み発生やプロセス切り替えによるコンテキストスイッチの乱れが発生することによって、ノード間通信が並列計算機全体の性能向上の足かせとなっていた。
【００４９】
しかし、実施例では、ノードコンピュータＢ２００からノードコンピュータＡ１００を経由してノードコンピュータＣ３００及びノードコンピュータＤ４００へデータを送信する場合に、ノードコンピュータＣ３００及びノードコンピュータＤ４００それぞれにデータを送信する際に、ノードコンピュータＢ２００からノードコンピュータＡ１００へパケットを最初に１度だけ送信するだけでよいこととなる。通信Ｉ／Ｆ部１０３が、ノードコンピュータＣ３００及びノードコンピュータＤ４００それぞれへのデータ送信を連鎖するＳＷＲに基づいて行い、対応するAtomic Operationを順次実行してパケットを送信することによって、プロセッサの負担を肩代わりするためである。これによって、ノード間通信による割り込み発生を無くし、プロセス切り替えによるコンテキストスイッチの乱れを抑制することによって、並列計算機全体の性能向上を図ることができる。
【００５０】
次に、ノードコンピュータの記憶部の記憶内容について説明する。図３は、図２に示したノードコンピュータの記憶部の記憶内容を示す図である。同図に示すように、記憶部１０２では、アドレス１には、連鎖するＳＷＲの先頭の格納領域のポインタが記憶されている。このポインタが示す情報は、具体的には、後述のアドレスＸ1である。アドレス２には、ＳＷＲに係るデータが記憶されている。このアドレス１及びアドレス２でアドレスが示される記憶領域がデータ記憶部１０２ａである。
【００５１】
また、アドレスＸ1には、データ格納領域のポインタ（具体的にはアドレス２）、連鎖するＳＷＲであるＳＷＲ１及び次の連鎖するＳＷＲの格納領域のポインタ（具体的にはアドレスＸ2）が記憶されている。同様に、アドレスＸ2には、データ格納領域のポインタ（具体的にはアドレス２）が、連鎖するＳＷＲであるＳＷＲ２及び次の連鎖するＳＷＲの格納領域のポインタが記憶されている。このように、全ての連鎖するＳＷＲが、次に読み出され対応するAtomic Operationが実行されるＳＷＲの格納領域を示すポインタを伴って記憶されている。なお、このアドレスＸ1、アドレスＸ2、・・・、でアドレスが示される記憶領域が連鎖ＳＷＲ記憶部１０２ｂである。
【００５２】
なお、パケット受信時実行部１０３ａは、他のノードコンピュータから連鎖処理に係るＳＷＲを受信するのみならず、自ノードコンピュータからの連鎖処理に係るＳＷＲを受信可能である。これは、パケット受信時実行部１０３ａが、自ノードコンピュータに対してもＳＷＲの送信が可能であることに基づく。
【００５３】
パケット受信時実行部１０３ａは、該ＳＷＲにより操作が指定されるメモリ領域のアドレスは仮想アドレスであるので、実施例の通信Ｉ／Ｆ部１０３は、該仮想アドレスを実アドレスへ変換する変換機能を包含している。また、連鎖実行部１０３ｂは、他のノードコンピュータへのパケット送信指示に基づいて、対応するＳＷＲを該他のノードコンピュータへ送信する。
【００５４】
次に、図２に示した並列計算機における連鎖処理について説明する。図４は、図２に示した並列計算機における連鎖処理を示すシーケンス図である。同図に示すように、先ず、ノードコンピュータＢ２００からノードコンピュータＡ１００のパケット受信時実行部１０３ａへパケットが送信され、該パケット受信時実行部１０３ａにより受信される（ステップＳ１０１）。
【００５５】
次に、パケット受信時実行部１０３ａから記憶部１０２へ、ノードコンピュータＢ２００からのパケットに基づくメモリ処理が実行され（ステップＳ１０２）、さらに、連鎖実行部１０３ｂへ連鎖するＳＷＲの先頭の格納領域のポインタ読み込み命令が出力される（ステップＳ１０３）。続いて、記憶部１０２から、読み込み対象のＳＷＲが、対象データの格納領域のポインタ及び次のパケットの格納領域のポインタと共に連鎖実行部１０３ｂに読み出される（ステップＳ１０４）。
【００５６】
次に、連鎖実行部１０３ｂは、データ記憶部１０２ａから読み込み対象データを読み込む（ステップＳ１０５）。続いて、ノードコンピュータＡ１００からノードコンピュータＣ３００へ連鎖するＳＷＲに基づくパケットが送信され、受信される（ステップＳ１０６）。
【００５７】
次に、ステップＳ１０４及びステップＳ１０５を繰り返して、続いて連鎖するＳＷＲを読み出して、対応するAtomic Operationを実行することとなる（ステップＳ１０７）。続いて、ノードコンピュータＡ１００からノードコンピュータＤ４００へ連鎖するＳＷＲに基づくパケットが送信され、受信される（ステップＳ１０８）。なお、ステップＳ１０４、ステップＳ１０５及びステップＳ１０８と同様の処理の繰り返しは、連鎖ＳＷＲ記憶部１０２ｂにＳＷＲが連鎖して記憶されている限りにおいて行われるものである。
【００５８】
このように、本来ならば、１台のノードコンピュータから連鎖処理に係るパケットを受信すると、連鎖処理を行う毎に、プロセッサに対して割り込み又はイベントを発生させるが、本実施例では、連鎖処理に係るＳＷＲに基づくパケット送信をノードコンピュータの通信Ｉ／Ｆ部１０３が全てプロセッサに代わって実行するので、プロセッサが割り込み又はイベントによりコンテキストスイッチを乱され、並列計算機全体としてのパフォーマンスが低下することを防止することができる。
【００５９】
次に、実施例の応用例について説明する。図５は、図２に示した通信Ｉ／Ｆ部１０３を有する計算機を接続した並列計算機の実施例の応用例を示す図である。同図に示すように、上位ノードコンピュータからデータ中継ノードコンピュータを経由して下位ノードコンピュータへデータを順次送信する場合に、データ中継ノードコンピュータの通信Ｉ／Ｆ部が、上位ノードコンピュータからのデータ入力／変更を検出し、プロセッサ処理を介することなく連鎖するＳＷＲを実行してデータを中継することにより、データ中継ノードコンピュータのプロセッサの負担を軽減できるデータのブロードキャストを実現することが可能となる。
【００６０】
本発明は、上記実施例に限られるものではなく、特許請求の範囲に記載した技術的思想の範囲内で、更に種々の異なる実施例で実施されてもよいものである。以下に、その異なる実施例について説明する。
【００６１】
実施例では、１台の受信側ノードコンピュータに対し１台の送信側ノードコンピュータがデータを送信するファインアウト型の通信連鎖を想定している。しかし、これに限らず、通信Ｉ／Ｆ部１０３が連鎖Atomic Operation実行判定部をさらに備え、パケット受信時実行部１０３ａからのAtomic Operation実行通知に基づいて、記憶部１０２に記憶される連鎖Atomic Operation実行開始条件を、データ記憶部１０２ａに記憶されるAtomic Operationによるメモリ操作後のメモリの値と比較し、両者が一致するものと判定されたものである場合に、連鎖実行部１０３ｂに対して連鎖ＳＷＲの読み出し及び対応するAtomic Operationの実行指示を出力することとしてもよい。このようにすることにより、入力が複数の場合に、同期待ち合わせを行って連鎖処理を開始することができるファインイン型の通信連鎖が実現可能となる。
【００６２】
なお、前述の“連鎖Atomic Operation実行開始条件”をデータ記憶部１０２ａに最終的保持されるべき値の目標値であるとするが、これに限らず、“連鎖Atomic Operation実行開始条件”を同期処理に必要な受信データの受信回数とし、データ記憶部１０２ａに受信データの受信回数のカウント値を記憶し、この値が予め定められた値となった場合に連鎖Atomic Operationの実行を開始することとしてもよい。
【００６３】
パケット受信時実行部１０３ａは、連鎖処理を伴うパケットを受信すると、連鎖処理中フラグをオンにし、該連鎖処理が終了すると該フラグを初期化する機能を有するとしてもよい。この場合、該初期化以前に、他のパケットを受信したならば、該パケットを無視すると共に、送信元のノードコンピュータに対し、パケット送信の再試行を行う指示を送信する機能を有してもよい。このようにして、連鎖処理において、他のパケットを受け付けないようにする排他制御を行うことができる。
【００６４】
通信Ｉ／Ｆ部１０３が、連鎖実行部１０３ｂにより連鎖ＳＷＲ記憶部１０２ｂに記憶される全ての連鎖するＳＷＲが読み出され対応するAtomic Operationが実行されてパケットが送信されたか否かを判定する連鎖不可分命令実行完了判定部をさらに備えることとしてもよい。この連鎖不可分命令実行完了判定部により連鎖ＳＷＲ記憶部１０２ｂに記憶される全ての連鎖するＳＷＲが読み出され対応するAtomic Operationが実行されてパケットが送信されたと判定された場合に、受信データの処理の開始のために該ノードコンピュータのプロセッサに割り込みを発生させる割り込み発生部をさらに備えてもよい。
【００６５】
また、通信Ｉ／Ｆ部１０３が、連鎖不可分命令実行完了判定部により連鎖ＳＷＲ記憶部１０２ｂに記憶される全ての連鎖するＳＷＲが読み出され対応するAtomic Operationが実行されたと判定された場合に、受信データの処理の開始のために該ノードコンピュータのプロセッサに対して完了通知を送信する完了通知送信部をさらに備えることとしてもよい。
【００６６】
また、通信Ｉ／Ｆ部１０３が、連鎖不可分命令実行完了判定部により連鎖ＳＷＲ記憶部１０２ｂに記憶される全ての連連鎖するＳＷＲが読み出され対応するAtomic Operationが実行されたと判定された場合に、送信側ノードコンピュータに対して予め定められた通信処理を実行する通信処理実行部をさらに備えることとしてもよい。
【００６７】
また、パケット受信時実行部１０３ａは、当該通信Ｉ／Ｆ部１０３を有する当該ノードコンピュータからのパケット受信に応じてもメモリ操作を行うと共に、データ記憶部１０２ａを参照して該受信データに関連付けられるＳＷＲを指定することとしてもよい。
【００６８】
以上、本発明の実施例を説明したが、本発明は、これらに限られるものではなく、特許請求の範囲に記載した技術的思想の範囲内で、適宜設計変更して実施可能である。また、実施例に記載した効果は、これに限定されるものではない。
【００６９】
なお、実施例では、説明を簡単にするために、並列計算機には４台のノードコンピュータが接続されるものとしたが、２台又は３台、若しくは５台以上であっても同様に本発明は適用可能である。
【００７０】
また、本発明に係る通信Ｉ／Ｆ部１０３は、通信機構にとして従来の通信Ｉ／Ｆ部と互換性を有する。従って、本発明に係る通信Ｉ／Ｆ部１０３を装着したノードコンピュータと、装着していないノードコンピュータとを相互に接続可能である。この場合は、本発明に係る通信Ｉ／Ｆ部１０３を装着していないノードコンピュータにおいて、ノード間通信に係るプロセッサの割り込みが発生し、連鎖処理に係るコンテキストスイッチの乱れが生じるなど、通信のパフォーマンスが低下する。即ち、本発明に係る通信Ｉ／Ｆ部１０３を装着していないノードコンピュータと、本発明に係る通信Ｉ／Ｆ部１０３を装着していないノードコンピュータとを混在させて並列計算機を構成することが可能である。
【００７１】
（付記１）送信側計算機からパケットを受信すると該受信パケットに関連付けられる処理を実行する並列計算機における計算機の通信インターフェース装置であって、
連鎖する不可分命令を記憶する連鎖不可分命令記憶手段と、
前記送信側計算機からの受信パケットに基づいたメモリ操作を行うと共に、前記連鎖不可分命令記憶手段を参照して該受信パケットに関連付けられる不可分命令を指定する連鎖不可分命令指定手段と、
前記連鎖不可分命令指定手段により指定された不可分命令を実行すると共に該不可分命令に関連付けられる連鎖不可分命令を前記連鎖不可分命令記憶手段から読み出してさらに実行する連鎖不可分命令実行手段と
を備えたことを特徴とする通信インターフェース装置。
【００７２】
（付記２）前記不可分命令指定手段は、当該通信インターフェース装置を有する当該計算機からの送信パケットに応じてもメモリ操作を行うと共に、前記連鎖不可分命令記憶手段を参照して該受信パケットに関連付けられる不可分命令を指定することを特徴とする付記１に記載の通信インターフェース装置。
【００７３】
（付記３）複数の送信側計算機において前記連鎖不可分操作実行手段により一の同期処理に係る前記連鎖不可分操作が実行されたことによるパケットの受信毎に、該不可分操作によるメモリ操作結果が予め定められた条件を満たすか否かを判定する割り込み発生条件判定手段をさらに備え、
前記連鎖不可分命令指定手段は、前記割り込み発生条件判定手段により前記メモリ操作結果が前記予め定められた条件を満たすと判定された場合に、前記受信パケットに関連付けられる不可分命令を指定することを特徴とする付記１又は２に記載の通信インターフェース装置。
【００７４】
（付記４）前記連鎖不可分命令実行手段により前記連鎖不可分命令記憶手段に記憶される全ての連鎖する不可分命令が実行されたか否かを判定する連鎖不可分命令実行完了判定手段をさらに備えたことを特徴とする付記１又は２に記載の通信インターフェース装置。
【００７５】
（付記５）前記連鎖不可分命令実行完了判定手段により前記連鎖不可分命令記憶手段に記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記受信パケットの処理の開始のために該計算機のプロセッサに割り込みを発生させる割り込み発生手段をさらに備えたことを特徴とする付記４に記載の通信インターフェース装置。
【００７６】
（付記６）前記連鎖不可分命令実行完了判定手段により前記連鎖不可分命令記憶手段に記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記受信パケットの送信側計算機に対して完了通知を送信する完了通知送信手段をさらに備えたことを特徴とする付記４に記載の通信インターフェース装置。
【００７７】
（付記７）前記連鎖不可分命令実行完了判定手段により前記連鎖不可分命令記憶手段に記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記送信側計算機に対して予め定められた通信処理を実行する通信処理実行手段をさらに備えたことを特徴とする付記４に記載の通信インターフェース装置。
【００７８】
（付記８）前記送信側計算機から受信パケットを受信した旨のパケット受信情報を記憶する受信パケット受信情報記憶手段と、
前記連鎖不可分命令実行完了判定手段により前記連鎖不可分命令記憶手段に記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記受信パケット受信情報記憶に記憶される前記パケット受信情報を初期化するパケット受信情報初期化手段とを
さらに備えたことを特徴とする付記４に記載の通信インターフェース装置。
【００７９】
（付記９）前記受信パケット受信情報初期化手段による前記パケット受信情報の初期化以前に、前記送信側計算機から受信パケットをさらに受信した場合に、前記連鎖不可分命令指定手段によるメモリ操作及び前記不可分命令の指定を中止させる連鎖不可分命令指定中止手段と、
前記連鎖不可分命令指定中止手段により前記不可分命令の指定が中止させられた情報を前記送信側計算機へ送信する不可分命令指定中止情報送信手段と
をさらに備えたことを特徴とする付記８に記載の通信インターフェース装置。
【００８０】
（付記１０）当該受信側計算機から前記不可分命令指定中止情報送信手段により送信された前記不可分命令の指定が中止させられた情報を受信すると、該受信側計算機へのパケット送信を再試行するパケット送信再試行手段をさらに備えたことを特徴とする付記９に記載の通信インターフェース装置。
【００８１】
（付記１１）送信側計算機からパケットを受信すると該受信パケットに関連付けられる処理を実行する並列計算機における計算機の通信方法であって、
連鎖する不可分命令を記憶する連鎖不可分命令記憶工程と、
前記送信側計算機からの受信パケットに基づいたメモリ操作を行うと共に、前記連鎖不可分命令記憶工程を参照して該受信パケットに関連付けられる不可分命令を指定する連鎖不可分命令指定工程と、
前記連鎖不可分命令指定工程により指定された不可分命令を実行すると共に該不可分命令に関連付けられる連鎖不可分命令をさらに実行する連鎖不可分命令実行工程と
を含んだことを特徴とする通信方法。
【００８２】
（付記１２）前記連鎖不可分命令実行工程により実行された連鎖不可分命令にさらに関連付けられる連鎖不可分命令を前記連鎖不可分命令記憶工程から読み出して実行することを特徴とする付記１１に記載の通信方法。
【００８３】
（付記１３）前記不可分命令指定工程は、当該通信方法を有する当該計算機からの送信パケットに応じてもメモリ操作を行うと共に、前記連鎖不可分命令記憶工程を参照して該受信パケットに関連付けられる不可分命令を指定することを特徴とする付記１１又は１２に記載の通信方法。
【００８４】
（付記１４）複数の送信側計算機において前記連鎖不可分操作実行手段により一の同期処理に係る前記連鎖不可分操作が実行されたことによるパケットの受信毎に、該不可分操作によるメモリ操作結果が予め定められた条件を満たすか否かを判定する割り込み発生条件判定手段をさらに備え、
前記連鎖不可分命令指定手段は、前記割り込み発生条件判定手段により前記メモリ操作結果が前記予め定められた条件を満たすと判定された場合に、前記受信パケットに関連付けられる不可分命令を指定することを特徴とする付記１１又は１２に記載の通信方法。
【００８５】
（付記１５）前記連鎖不可分命令実行工程により前記連鎖不可分命令記憶工程にて記憶される全ての連鎖する不可分命令が実行されたか否かを判定する連鎖不可分命令実行完了判定工程をさらに含んだことを特徴とする付記１１又は１２に記載の通信方法。
【００８６】
（付記１６）前記連鎖不可分命令実行完了判定工程により前記連鎖不可分命令記憶工程にて記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記受信パケットの処理の開始のために該計算機のプロセッサに割り込みを発生させる割り込み発生工程をさらに含んだことを特徴とする付記１５に記載の通信方法。
【００８７】
（付記１７）前記連鎖不可分命令実行完了判定工程により前記連鎖不可分命令記憶工程にて記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記受信パケットの送信側計算機に対して完了通知を送信する完了通知送信工程をさらに含んだことを特徴とする付記１５に記載の通信方法。
【００８８】
（付記１８）前記連鎖不可分命令実行完了判定工程により前記連鎖不可分命令記憶工程にて記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記送信側計算機に対して予め定められた通信処理を実行する通信処理実行工程をさらに含んだことを特徴とする付記１５に記載の通信方法。
【００８９】
（付記１９）前記送信側計算機から受信パケットを受信した旨のパケット受信情報を記憶する受信パケット受信情報記憶工程と、
前記連鎖不可分命令実行完了判定工程により前記連鎖不可分命令記憶工程にて記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記受信パケット受信情報記憶に記憶される前記パケット受信情報を初期化するパケット受信情報初期化工程を
さらに含んだことを特徴とする付記１５に記載の通信方法。
【００９０】
（付記２０）前記メモリ操作結果初期化工程による前記パケット受信情報の初期化以前に、前記送信側計算機から受信パケットをさらに受信した場合に、前記連鎖不可分命令指定工程によるメモリ操作及び前記不可分命令の指定を中止させる連鎖不可分命令指定中止工程と、
前記連鎖不可分命令指定中止工程により前記不可分命令の指定が中止させられた情報を前記送信側計算機へ送信する不可分命令指定中止情報送信工程と
をさらに含んだことを特徴とする付記１９に記載の通信方法。
【００９１】
（付記２１）当該受信側計算機から前記不可分命令指定中止情報送信工程により送信された前記不可分命令の指定が中止させられた情報を受信すると、該受信側計算機へのパケット送信を再試行するパケット送信再試行工程をさらに含んだことを特徴とする付記２０に記載の通信方法。
【産業上の利用可能性】
【００９２】
本発明は、並列計算機において、通信データを、最も近接して接続される複数の計算機へ同報配信するとともに、該最も近接して接続される複数の計算機を超えた先のノードの計算機まで送信する並列計算機において、それぞれデータの送受信が行われる都度発生する処理に伴う割り込み処理などのオーバーヘッドの解消を図りたい場合に有用である。
【図面の簡単な説明】
【００９３】
【図１】従来の並列計算機の構成と連鎖処理における問題点を示す図である。
【図２】実施例の並列計算機の構成を示す機能ブロック図である。
【図３】ノードコンピュータの記憶部の記憶内容を示す図である。
【図４】連鎖処理を示すシーケンス図である。
【図５】実施例の応用例を示す図である。
【符号の説明】
【００９４】
１００    ノードコンピュータＡ
１０１    プロセッサ
１０２    記憶部
１０２ａ    データ記憶部
１０２ｂ    連鎖ＳＷＲ記憶部
１０３ａ    パケット受信時実行部
１０３ｂ    連鎖実行部
２００    ノードコンピュータＢ
３００    ノードコンピュータＣ
４００    ノードコンピュータＤ
【図１】
0004806295.tif 000002
【図２】
0004806295.tif 000003
【図３】
0004806295.tif 000004
【図４】
0004806295.tif 000005
【図５】
0004806295.tif 000006