(57)【特許請求の範囲】
【請求項１】
第１のノード計算機と、該第１のノード計算機が記憶するデータが更新された場合に更新が必要なデータを記憶する第２のノード計算機と、該第２のノード計算機が記憶するデータが更新された場合に更新が必要なデータを記憶する第３のノード計算機とを含む計算処理システムであって、前記第１のノード計算機における更新、前記第２のノード計算機における更新、前記第３のノード計算機における更新の順でデータの更新が必要とされる計算処理システムにおいて、
前記第１のノード計算機は、該第１のノード計算機が記憶する前記データの更新を検出し、データの更新の順が前記順となるように予め設定された送信指示であって、データの更新を通知するパケットの前記第２のノード計算機への送信指示を、該第１のノード計算機の記憶手段から読み出して前記第２のノード計算機にパケットを送信する通信インタフェース装置を備え、
前記第２のノード計算機は、前記データの更新を通知するパケットを前記第１のノード計算機から受信したことを検出すると、該第２のノード計算機が記憶する前記データの更新を行い、更に、データの更新の順が前記順となるように予め設定された送信指示であって、データの更新を通知するパケットの前記第３のノード計算機への送信指示を、該第２のノード計算機の記憶手段から読み出して前記第３のノード計算機にパケットを送信して、前記第３のノード計算機が記憶する前記データの更新を実行させる通信インタフェース装置を備えた、
ことを特徴とする計算処理システム。
【請求項２】
前記第２のノード計算機は、下位ノード計算機である複数の前記第１のノード計算機に接続され、前記第１のノード計算機各々に分散して記憶されるデータに依存したデータを記憶する中継ノード計算機であり、
前記第３のノード計算機は、前記中継ノード計算機である前記第２のノード計算機に接続され、前記第２のノード計算機に記憶されるデータに依存したデータを記憶する上位ノード計算機であることを特徴とする請求項１に記載の計算処理システム。
【請求項３】
前記第１のノード計算機の通信インタフェース装置は、前記データが無効になったことを検出した場合に、前記第１のノード計算機が記憶するデータが更新された場合に更新が必要なデータの無効化を前記第２のノード計算機に送信し、
前記第２のノード計算機の通信インタフェース装置は、前記データの無効化を通知するパケットを前記第１のノード計算機から受信したことを検出すると、該第２のノード計算機が記憶する前記データの無効化を行い、更に、前記第２のノード計算機が記憶するデータが更新された場合に更新が必要なデータの無効化を前記第３のノード計算機に送信することを特徴とする請求項２に記載の計算処理システム。
【請求項４】
前記第１のノード計算機の通信インタフェース装置は、前記データの更新を通知するパケットに関連付けられた関連パケットの前記第２のノード計算機への送信指示を該第１のノード計算機の記憶手段から読み出して、前記第２のノード計算機にパケットを送信し、
前記第２のノード計算機の通信インタフェース装置は、さらに、前記関連パケットを前記第１のノード計算機から受信したことを検出すると、前記関連パケットにより指定された該第２のノード計算機が記憶するデータの更新を行い、更に、前記データの更新を通知する関連パケットの前記第３のノード計算機への送信指示を該第２のノード計算機の記憶手段から読み出して前記第３のノード計算機にパケットを送信して、前記関連パケットにより指定された前記第３のノード計算機が記憶するデータの更新を実行させることを特徴とする請求項３に記載の計算処理システム。
【請求項５】
前記第２のノード計算機の通信インタフェース装置は、下位ノード装置である前記第１のノード計算機に対して、前記第１のノード計算機が記憶する前記データが更新されたか否かを問い合わせ、
前記第３のノード計算機は、中継ノード装置である前記第２のノード計算機に対して、前記第２のノード計算機が記憶する前記データが更新されたか否かを問い合わせる通信インタフェース装置を有することを特徴とする請求項１〜４のいずれか一つに記載の計算処理システム。
【請求項６】
前記第１のノード計算機の通信インタフェース装置は、前記データが更新されたか否かの問い合わせに関連付けられたパケットの前記第２のノード計算機への送信指示とともに、該パケットに関連付けられた関連パケットの前記第２のノード計算機への送信指示を該第１のノード計算機の記憶手段から読み出して、前記第２のノード計算機にパケットを送信し、
前記第２のノード計算機の通信インタフェース装置は、前記データが更新されたか否かの問い合わせに関連付けられたパケットの前記第３のノード計算機への送信指示とともに、該パケットに関連付けられた関連パケットの前記第３のノード計算機への送信指示を該第２のノード計算機の記憶手段から読み出して、前記第３のノード計算機にパケットを送信することを特徴とする請求項５に記載の計算処理システム。
【請求項７】
前記第１のノード計算機の通信インタフェース装置は、前記データが更新されたか否かの問い合わせに応じて、前記データの更新を前記第２のノード計算機に送信し、
前記第２のノード計算機の通信インタフェース装置は、前記データが更新されたか否かの問い合わせに応じて、前記データの更新を前記第３のノード計算機に送信することを特徴とする請求項５または６に記載の計算処理システム。
【請求項８】
第１のノード計算機と、該第１のノード計算機が記憶するデータが更新された場合に更新が必要なデータを記憶する第２のノード計算機と、該第２のノード計算機が記憶するデータが更新された場合に更新が必要なデータを記憶する第３のノード計算機とを含む計算処理システムであって、前記第１のノード計算機における更新、前記第２のノード計算機における更新、前記第３のノード計算機における更新の順でデータの更新が必要とされる計算処理システムにおけるデータ更新方法において、
前記第１のノード計算機の通信インタフェース装置は、該第１のノード計算機が記憶する前記データの更新を検出し、データの更新の順が前記順となるように予め設定された送信指示であって、データの更新を通知するパケットの前記第２のノード計算機への送信指示を該第１のノード計算機の記憶手段から読み出して前記第２のノード計算機にパケットを送信し、
前記第２のノード計算機の通信インタフェース装置は、前記データの更新を通知するパケットを前記第１のノード計算機から受信したことを検出すると、該第２のノード計算機が記憶する前記データの更新を行い、更に、データの更新の順が前記順となるように予め設定された送信指示であって、データの更新を通知するパケットの前記第３のノード計算機への送信指示を該第２のノード計算機の記憶手段から読み出して前記第３のノード計算機にパケットを送信して、前記第３のノード計算機が記憶する前記データの更新を実行させる、
ことを特徴とするデータ更新方法。
【請求項９】
前記第２のノード計算機は、下位ノード計算機である複数の前記第１のノード計算機に接続され、前記第１のノード計算機各々に分散して記憶されるデータに依存したデータを記憶する中継ノード計算機であり、
前記第３のノード計算機は、前記中継ノード計算機である前記第２のノード計算機に接続され、前記第２のノード計算機に記憶されるデータに依存したデータを記憶する上位ノード計算機であることを特徴とする請求項８に記載のデータ更新方法。
【請求項１０】
前記第１のノード計算機の通信インタフェース装置は、前記データが無効になったことを検出した場合に、前記第１のノード計算機が記憶するデータが更新された場合に更新が必要なデータの無効化を前記第２のノード計算機に送信し、
前記第２のノード計算機の通信インタフェース装置は、前記データの無効化を通知するパケットを前記第１のノード計算機から受信したことを検出すると、該第２のノード計算機が記憶する前記データの無効化を行い、更に、前記第２のノード計算機が記憶するデータが更新された場合に更新が必要なデータの無効化を前記第３のノード計算機に送信することを特徴とする請求項９に記載のデータ更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の下位ノード計算機に分散して配置されているデータを受信した該複数の下位ノード計算機に接続される上位ノード計算機において該データに依存するデータを保持する並列計算機における計算機の計算処理システムおよびデータ更新方法に関し、特に、多段構成の多分岐木構造をとる並列計算機において、各ノード計算機に配置されるデータがより下位のノード計算機に配置されるデータに依存している場合に、共有データの変更の情報を上位のノード計算機までオーバーヘッドを極力抑えつつ伝達することができる計算処理システムおよびデータ更新方法に関する。
【背景技術】
【０００２】
従来から、複数の計算機を接続して通信を行わせることにより、計算機間でノード間通信によりデータの授受を行い、該データを共有することが行われてきた。特に、複数の計算機が接続されて、あたかも一つの計算機として協働する並列計算機においては、該共有データの一貫性の保持が重要である。
【０００３】
しかしながら、並列計算機における通信を介して共有データの一貫性の保持には、頻繁に行われる通信と該通信に伴うコンテキストスイッチによるプロセッサのオーバーヘッドが大きく、これが一貫性保持を困難にさせていた。
【０００４】
そこで、例えば、特許文献１には、共有データ管理部を備え、共有メモリに存在する共有データに変更を加える計算機は、該共有データ管理部に対して共有データの変更を通知し、該通知に基づき共有データ管理部は共有データの変更を管理する並列計算機が開示されている。この並列計算機によれば、共有データに変更を加えた計算機以外のその他の計算機は、共有データ管理部で管理される共有データの変更を参照することによって、並列計算機内で共有データの一貫性を保つことができる。また、このような仕組みを利用することによって、並列計算機内でのオーバーヘッドを抑えて、共有データの一貫性を維持することができる。
【０００５】
【特許文献１】特開平７−１５２６４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１に代表される従来技術では、共有メモリにデータを共有する場合とは異なり、並列計算機内で多段に亘るデータの依存関係が存在する場合に、上位ノードの計算機において、下位ノード計算機からの入力データに変更があったか否かを検知することは不可能である。
【０００７】
具体的には、共有メモリによるデータ共有は、並列計算機のノード構成トポロジが１段構成の多分岐木構造であるがゆえに、下位ノード計算機による共有データの変更の情報は、直ちに全ての他の計算機に伝達されることとなる。しかし、多段構成の多分岐木構造をとる並列計算機において、各ノード計算機に配置されるデータがより下位のノード計算機に配置されるデータに依存している場合には、共有データの変更の情報を最上位のノード計算機まで伝達させることは、通信に係るオーバーヘッドの制約上、困難を伴うというのが現状である。
【０００８】
本発明は、上記問題点（課題）を解消するためになされたものであって、多段構成の多分岐木構造をとる並列計算機において、各ノード計算機に配置されるデータがより下位のノード計算機に配置されるデータに依存している場合に、共有データの変更の情報を上位のノード計算機までオーバーヘッドを極力抑えつつ伝達することができる計算処理システムおよびデータ更新方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した問題を解決し、目的を達成するため、本発明は、複数の下位ノード計算機に分散して配置されているデータを受信した該複数の下位ノード計算機に接続される上位ノード計算機において該データに依存するデータを保持する並列計算機における計算機の通信インターフェース装置であって、連鎖する不可分命令を記憶する連鎖不可分命令記憶手段と、当該計算機に配置されている前記データの変更を検知するデータ変更検知手段と、前記データ変更検知手段により前記データの変更が検知されると、前記連鎖不可分命令記憶手段を参照して該変更されたデータに関連付けられる不可分命令を指定する連鎖不可分命令指定手段と、前記連鎖不可分命令指定手段により指定された不可分命令を実行する不可分命令実行手段とを備えたことを特徴とする。
【００１０】
また、本発明は、上記発明において、前記不可分命令実行手段により実行された前記不可分命令に基づいて、前記データの変更を前記上位ノード計算機へ通知することを特徴とする。
【００１１】
また、本発明は、上記発明において、前記下位ノード計算機から受信した前記データの変更の通知に基づいて該データに依存するデータの無効化を記憶するデータ無効化記憶手段をさらに備えたことを特徴とする。
【００１２】
また、本発明は、上記発明において、前記連鎖不可分命令記憶手段を参照して前記変更が通知されたデータに関連付けられる不可分命令を指定する変更受信時連鎖不可分命令指定手段と、前記変更受信時連鎖不可分命令指定手段により指定された不可分命令を実行すると共に該不可分命令に関連付けられる連鎖不可分命令をさらに実行する連鎖不可分命令実行手段とをさらに備えたことを特徴とする。
【００１３】
また、本発明は、上記発明において、前記下位ノード計算機に対して、当該上位ノード計算機が有するデータが依存する該下位ノード計算機に配置されるデータに変更があったか否かを照い合わせるデータ変更照会手段をさらに備えたことを特徴とする。
【００１４】
また、本発明は、上記発明において、前記連鎖不可分命令記憶手段を参照して前記上位ノード計算機からの前記データの変更の問い合わせに関連付けられる不可分命令を指定する照会受信時連鎖不可分命令指定手段と、前記照会受信時連鎖不可分命令指定手段により指定された不可分命令を実行すると共に該不可分命令に関連付けられる連鎖不可分命令をさらに実行する連鎖不可分命令実行手段とをさらに備えたことを特徴とする。
【００１５】
また、本発明は、上記発明において、前記上位ノード計算機からの前記データの変更の問い合わせに応じて、前記データの変更を前記上位ノード計算機へ通知することを特徴とする。
【００１６】
また、本発明は、複数の下位ノード計算機に分散して配置されているデータを受信した該複数の下位ノード計算機に接続される上位ノード計算機において該データに依存するデータを保持する並列計算機における計算機の通信方法であって、連鎖する不可分命令を記憶する連鎖不可分命令記憶工程と、当該計算機に配置されている前記データの変更を検知するデータ変更検知工程と、前記データ変更検知工程により前記データの変更が検知されると、前記連鎖不可分命令記憶工程を参照して該変更されたデータに関連付けられる不可分命令を指定する連鎖不可分命令指定工程と、前記連鎖不可分命令指定工程により指定された不可分命令を実行する不可分命令実行工程とを含んだことを特徴とする。
【００１７】
また、本発明は、上記発明において、前記不可分命令実行工程により実行された前記不可分命令に基づいて、前記データの変更を前記上位ノード計算機へ通知することを特徴とする。
【００１８】
また、本発明は、上記発明において、前記下位ノード計算機から受信した前記データの変更の通知に基づいて該データに依存するデータの無効化を記憶するデータ無効化記憶工程をさらに含んだことを特徴とする。
【発明の効果】
【００１９】
本発明によれば、上位ノード計算機に配置されるデータが下位ノード計算機に配置されるデータに依存する場合に、該下位ノード計算機に配置されるデータの更新の検知及び該検知に応じた連鎖不可分命令の実行を通信インターフェース装置の機能で実現でき、並列計算機間の通信にかかるオーバーヘッドを低減し、プロセッサのコンテキストスイッチの乱れを抑制し、並列計算機の性能低下を防止することができるという効果を奏する。
【００２０】
また、本発明によれば、上位ノード計算機に配置されるデータが下位ノード計算機に配置されるデータに依存する場合に、該下位ノード計算機に配置されるデータの更新の検知及び該検知に応じた上位ノード計算機への該更新の通知を通信インターフェース装置の機能で実現でき、並列計算機間の通信にかかるオーバーヘッドを低減し、プロセッサのコンテキストスイッチの乱れを抑制し、並列計算機の性能低下を防止することができるという効果を奏する。
【００２１】
また、本発明によれば、上位ノード計算機に配置されるデータが下位ノード計算機に配置されるデータに依存する場合に、該下位ノード計算機に配置されるデータの更新の通知及び上位ノード計算機における該更新の記憶による認識を通信インターフェース装置の機能で実現でき、並列計算機間の通信にかかるオーバーヘッドを低減し、プロセッサのコンテキストスイッチの乱れを抑制し、並列計算機の性能低下を防止することができるという効果を奏する。
【００２２】
また、本発明によれば、上位ノード計算機に配置されるデータが下位ノード計算機に配置されるデータに依存する場合に、該下位ノード計算機に配置されるデータの更新の通知に応じた連鎖する不可分命令のさらなる実行を通信インターフェース装置の機能で実現でき、並列計算機間の通信にかかるオーバーヘッドを低減し、プロセッサのコンテキストスイッチの乱れを抑制し、並列計算機の性能低下を防止することができるという効果を奏する。
【００２３】
また、本発明によれば、上位ノード計算機に配置されるデータが下位ノード計算機に配置されるデータに依存する場合に、該下位ノード計算機に配置されるデータの更新の有無の問い合わせを通信インターフェース装置の機能で実現でき、並列計算機間の通信にかかるオーバーヘッドを低減し、プロセッサのコンテキストスイッチの乱れを抑制し、並列計算機の性能低下を防止することができるという効果を奏する。
【００２４】
また、本発明によれば、上位ノード計算機に配置されるデータが下位ノード計算機に配置されるデータに依存する場合に、該下位ノード計算機に配置されるデータの更新の有無の問い合わせに応じた連鎖する不可分命令のさらなる実行を通信インターフェース装置の機能で実現でき、並列計算機間の通信にかかるオーバーヘッドを低減し、プロセッサのコンテキストスイッチの乱れを抑制し、並列計算機の性能低下を防止することができるという効果を奏する。
【００２５】
また、本発明によれば、上位ノード計算機に配置されるデータが下位ノード計算機に配置されるデータに依存する場合に、上位ノード計算機から下位ノード計算機へのデータの更新の有無の問い合わせに応じて、下位ノード計算機は、上位ノード計算機に対して該データの更新の通知を通信インターフェース装置の機能で実現でき、並列計算機間の通信にかかるオーバーヘッドを低減し、プロセッサのコンテキストスイッチの乱れを抑制し、並列計算機の性能低下を防止することができるという効果を奏する。
【発明を実施するための最良の形態】
【００２６】
以下に添付図面を参照して、本発明の計算処理システムおよびデータ更新方法に係る実施例を詳細に説明する。以下に示す実施例では、本発明を、並列アプリケーションを実行する、複数のコンピュータが接続された並列計算機の各ノードコンピュータに分散して配置される、上位ノードコンピュータから下位ノードコンピュータへの依存関係がある依存データの整合性に関する処理に適用した例を示すこととする。なお、本発明における並列計算機は、クラスタ計算機、グリッドコンピューティング計算機などを広く含む。また、以下の実施例は、並列計算機における計算機間のインターフェース規格であるInfiniBandやMyrinet（登録商標）に代表される、遠隔の計算機からのメモリへの直接アクセス技術であるＲＤＭＡ（Remote  Direct  Memory  Access）を前提とするものである。
【実施例１】
【００２７】
以下に示す実施例１では、並列計算機の各ノード計算機に分散して配置される、多段に亘る木構造の依存関係を持つデータのうち、下位ノード計算機に配置されるデータが更新されたことに応じて、該下位ノード計算機に配置されるデータに依存する上位のノード計算機に配置されるデータを再計算するために、該下位ノード計算機に配置されるデータの更新を上位ノード計算機へ伝達する依存データ整合処理について説明する。
【００２８】
まず、従来の並列コンピュータ間の依存データ整合処理における問題点について説明する。図１は、従来の並列コンピュータ間の依存データ整合処理における問題点を示す図である。同図に示すように、最上位のノードコンピュータに配置されるデータは、木構造状の依存関係で隣接した下位に配置される中継のノードコンピュータに配置されるデータに依存しており、さらに、中継のノードコンピュータに配置されるデータは、木構造状の依存関係で隣接した下位に配置される下位のノードコンピュータに配置されるデータに依存している。即ち、上位ノードコンピュータに配置されるデータは、複数の下位のノードコンピュータに配置されるデータに依存したデータである。
【００２９】
この場合に、先ず、（１）最も下位にある下位ノードコンピュータの一つにおいてデータの更新があったとする。この最も下位にある下位ノードコンピュータの隣接する上位の中継ノードコンピュータに配置されるデータは、下位ノードコンピュータに配置されるデータに依存している。よって、（２）下位ノードコンピュータの一つにおいて更新によりデータが無効となったことが、ノード間通信を使用して、該下位ノードコンピュータから隣接する上位の中継ノードコンピュータへと伝達される。中継ノードコンピュータでは、下位ノードコンピュータで更新されたデータに基づいて、保持するデータの再計算を行い、データの更新を行うこととなる。
【００３０】
さらに、この中継ノードコンピュータの隣接する上位の最も上位の上位ノードコンピュータに配置されるデータは、該中継ノードコンピュータに配置されるデータに依存している。このため、中継ノードコンピュータで更新によりデータが無効となったことを、ノード間通信を使用して、該中継ノードコンピュータから隣接する上位の上位ノードコンピュータへと伝達される。（３）この様にして、最も上位に位置する最上位ノードコンピュータは、前述の（１）のデータ更新がなされ該データが無効となったことを、高コストで検知することとなる。
【００３１】
ここで、前述の“高コスト”とは、次を意味する。並列計算機において分散して配置される、上位ノードコンピュータから下位ノードコンピュータへの依存するデータの無効化は、ノード間通信を使用して伝達される。ノード間通信は、パケットの送受信毎にプロセッサの割り込みが発生し、パケット受信の待機処理によりプロセッサのコンテキストスイッチの乱れが生じるなど、各ノードコンピュータ間の通信速度の低下を招くこととなる。
【００３２】
並列計算機の各ノードコンピュータ間でノード間通信を使用して通信を行うと、特に、多段構成を取る木構造のトポロジを持つデータ依存関係がある場合に、最下位のノードコンピュータから途中に何段もの中継ノードコンピュータを経由して最上位のノードコンピュータへ、ノード間通信を使用して更新によるデータの無効化を伝達したときに発生するオーバーヘッドによって各ノードコンピュータ間の通信速度の低下を招くこととなり、延いては、並列計算機の性能向上の阻害要因となりかねない。これが、前述の“高コスト”の意味するところである。
【００３３】
本発明は、かかる問題点（課題）を解消するためになされたものであって、並列計算機の各ノード計算機に分散して配置される、多段に亘る木構造の依存関係を持つデータの更新によるデータの無効化を、各ノードコンピュータのプロセッサに割り込みやコンテキストスイッチの乱れを発生させることなく、効率よく伝達できるようにするためになされた。
【００３４】
次に、前述の課題を解消するためになされた実施例１に係る並列計算機間の依存データ整合処理の特徴について説明する。図２は、実施例１に係る並列計算機間の依存データ整合処理の特徴を示すである。同図に示す下位ノードコンピュータＡ１００は、多段に亘る木構造のデータ依存関係を持つ最下位ノードコンピュータであり、中継ノードコンピュータＢ２００は、中継ノードコンピュータであり、上位ノードコンピュータＣ３００は、最上位ノードコンピュータである。
【００３５】
同図においても、図１と同様に、上位ノードコンピュータＣ３００に配置されるデータは、木構造状の依存関係で隣接した下位に配置される中継ノードコンピュータＢ２００に配置されるデータに依存しており、さらに、中継ノードコンピュータＢ２００に配置されるデータは、木構造状の依存関係で隣接した下位に配置される下位の下位ノードコンピュータＡ１００に配置されるデータに依存している。即ち、上位ノードコンピュータＣ３００に配置されるデータは、下位のノードコンピュータである中継ノードコンピュータＢ２００及び下位ノードコンピュータＡ１００に配置されるデータに依存したデータである。
【００３６】
この場合に、先ず、（１）最も下位にある下位ノードコンピュータＡ１００においてデータの更新があったとする。この下位ノードコンピュータＡ１００の隣接する上位の中継ノードコンピュータＢ２００に配置されるデータは、下位ノードコンピュータＡ１００に配置されるデータに依存している。よって、（２）下位ノードコンピュータＡ１００においてデータの更新があったことが、各ノードコンピュータが備える通信Ｉ／Ｆ部による連鎖通信によって、下位ノードコンピュータＡ１００から隣接する上位の中継ノードコンピュータＢ２００へと伝達される。中継ノードコンピュータＢ２００では、下位ノードコンピュータＡ１００で更新されたデータに基づいて、保持するデータの再計算を行い、データの更新を行うこととなる。
【００３７】
さらに、中継ノードコンピュータＢ２００の隣接する上位の上位ノードコンピュータＣ３００に配置されるデータは、中継ノードコンピュータＢ２００に配置されるデータに依存している。このため、中継ノードコンピュータＢ２００でデータの更新があり、該データが無効となったならば、該無効化が、各ノードコンピュータが備える通信Ｉ／Ｆ部による連鎖通信によって、中継ノードコンピュータＢ２００から隣接する上位の上位ノードコンピュータＣ３００へと伝達される。（３）この様にして、最も上位に位置する上位ノードコンピュータＣ３００は、前述の（１）のデータ更新がなされ該データが無効となったことを、低コストで検知し、該更新をフラグで管理することとなる。
【００３８】
ここで、前述の“低コスト”とは、次を意味する。実施例１では、並列計算機において分散して配置される、上位ノードコンピュータから下位ノードコンピュータへの依存するデータの更新を、各ノードコンピュータが備える通信Ｉ／Ｆ部による連鎖通信によって伝達する。
【００３９】
並列計算機の各ノードコンピュータ間で各ノードコンピュータが備える通信Ｉ／Ｆ部による連鎖通信によって通信を行うと、多段構成を取る木構造のトポロジを持つデータ依存関係がある場合であっても、最下位のノードコンピュータから途中に何段もの中継ノードコンピュータを経由して最上位のノードコンピュータへ、更新によるデータ無効化を伝達する際に発生するオーバーヘッドを抑制することができる。
【００４０】
更新によるデータ無効化の伝達において、ノード間通信を使用したならば、パケットの送受信毎にプロセッサの割り込みが発生し、パケット受信の待機処理によりプロセッサのコンテキストスイッチの乱れが生じるなど、各ノードコンピュータ間の通信速度の低下を招くこととなるが、実施例１ではノード間通信を使用しないために、かかる問題が発生することがなくなり、よって、各ノードコンピュータ間の通信速度の低下を招くことなく、並列計算機の性能低下を防止し、最大限の性能を発揮させることができる。これが、前述の“低コスト”の意味するところである。
【００４１】
次に、図２に示した並列計算機の下位ノードコンピュータＡ１００の構成について説明する。図３は、図２に示した並列計算機の下位ノードコンピュータＡ１００の構成を示す機能ブロック図である。図２に示した下位ノードコンピュータＡ１００、中継ノードコンピュータＢ２００及び上位ノードコンピュータＣ３００は同一の機能ブロックを有するものであるが、ここでは、下位ノードコンピュータＡ１００に代表させて、実施例１の下位ノードコンピュータの機能ブロックについて説明する。下位ノードコンピュータの特徴的機能ブロック以外の説明は、省略することとする。同図に示すように、下位ノードコンピュータＡ１００は、該下位ノードコンピュータＡ１００全体の制御を司り、処理演算を実行するプロセッサ１０１と、記憶部１０２と、ネットワークインターフェースカードである通信Ｉ／Ｆ部１０３とを有する。
【００４２】
記憶部１０２は、メモリなどのデータを記憶する記憶領域であるデータ記憶部１０２ａと、連鎖するＳＷＲを記憶する連鎖ＳＷＲ記憶部１０２ｂとをさらに有する。ここで、ＳＷＲ（Send Work Request）とは、外部へパケットを送信する指示である。ＳＷＲに基づいて、外部にパケットが送信されることとなる。連鎖ＳＷＲとは、順序付けて関連付けられたＳＷＲの集合であり、連鎖ＳＷＲが出力されたならば、該順序付けに従って、関連付けられた全てのＳＷＲが出力される。出力されたそれぞれのＳＷＲに応じたパケットが、外部へ送信されることとなる。
【００４３】
なお、実施例１で送受信されるパケットは、対応する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が実行されたと判定された場合に、送信側ノードコンピュータに対して予め定められた通信処理を実行する通信処理実行部をさらに備えることとしてもよい。
【００７７】
また、連鎖実行部２０３ｂは、当該通信Ｉ／Ｆ部２０３を有する当該ノードコンピュータからのパケット受信に応じてもメモリ操作を行うと共に、データ記憶部２０２ａを参照して該受信データに関連付けられるＳＷＲを指定することとしてもよい。
【実施例２】
【００７８】
次に、上位ノードコンピュータが下位に位置する全てのノードコンピュータに対して依存データの更新の有無を照会する実施例２に係る並列計算機間の依存データ整合処理の特徴について説明する。図９は、実施例２に係る並列計算機間の依存データ整合処理の特徴を示すである。同図に示す下位ノードコンピュータＡ１００及び下位ノードコンピュータＡ´１００´は、多段に亘る木構造のデータ依存関係を持つ最下位ノードコンピュータであり、中継ノードコンピュータＢ２００は、中継ノードコンピュータであり、上位ノードコンピュータＣ３００は、最上位ノードコンピュータである。
【００７９】
同図においても、上位ノードコンピュータＣ３００に配置されるデータは、木構造状の依存関係で隣接した下位に配置される中継ノードコンピュータＢ２００に配置されるデータに依存しており、さらに、中継ノードコンピュータＢ２００に配置されるデータは、木構造状の依存関係で隣接した下位に配置される下位の下位ノードコンピュータＡ１００に配置されるデータに依存している。即ち、上位ノードコンピュータＣ３００に配置されるデータは、下位のノードコンピュータである中継ノードコンピュータＢ２００及び下位ノードコンピュータＡ１００に配置されるデータに依存したデータである。
【００８０】
この場合に、先ず、（１）最も上位にある上位ノードコンピュータＣ３００においてデータの更新の有無を隣接する下位の中継ノードコンピュータＢ２００に対して照会する。この上位ノードコンピュータＣ３００の隣接する下位に位置する中継ノードコンピュータＢ２００に配置されるデータは、下位ノードコンピュータＡ１００に配置されるデータに依存している。よって、（２）中継ノードコンピュータＢ２００又は下位ノードコンピュータＡ１００におけるデータの更新の有無の照会が、各ノードコンピュータが備える通信Ｉ／Ｆ部による連鎖通信によって、低コストで、上位ノードコンピュータＣ３００から隣接する下位の中継ノードコンピュータＢ２００へ、さらに中継ノードコンピュータＢ２００から隣接する下位の下位ノードコンピュータＡ１００と伝達される。
【００８１】
さらに、中継ノードコンピュータＢ２００又は下位ノードコンピュータＡ１００において（図９では下位ノードコンピュータ）データの更新があった場合には、実施例１に示した方法にて、該データの更新があったことが返信されることとなる。
【００８２】
ここで、前述の“低コスト”とは、次を意味する。実施例２でも、並列計算機において分散して配置される、上位ノードコンピュータから下位ノードコンピュータへの依存するデータの更新の有無の照会を、各ノードコンピュータが備える通信Ｉ／Ｆ部による連鎖通信によって行う。
【００８３】
並列計算機の各ノードコンピュータ間で各ノードコンピュータが備える通信Ｉ／Ｆ部による連鎖通信によって通信を行うと、多段構成を取る木構造のトポロジを持つデータ依存関係がある場合であっても、最下位のノードコンピュータから途中に何段もの中継ノードコンピュータを経由して最上位のノードコンピュータへ、データ更新の有無の照会を行う際に発生するオーバーヘッドを抑制することができる。
【００８４】
更新によるデータ更新の有無の照会において、ノード間通信を使用したならば、パケットの送受信毎にプロセッサの割り込みが発生し、パケット受信の待機処理によりプロセッサのコンテキストスイッチの乱れが生じるなど、各ノードコンピュータ間の通信速度の低下を招くこととなるが、実施例２でもノード間通信を使用しないために、かかる問題が発生することがなくなり、よって、各ノードコンピュータ間の通信速度の低下を招くことなく、並列計算機の性能低下を防止し、最大限の性能を発揮させることができる。これが、前述の“低コスト”の意味するところである。
【００８５】
なお、実施例２では、依存データ更新の有無の照会は、全ての隣接する下位のノードコンピュータに対して送信されることとなる。図９では、説明を簡潔に行うために、上位ノードコンピュータＣ３００から中継ノードコンピュータＢ２００を経て下位ノードコンピュータＡ１００及び下位ノードコンピュータＡ´１００´へと依存データ更新の有無の照会が行われる状況を示している。
【００８６】
次に、図９に示した並列計算機の下位ノードコンピュータＡ１００の構成について説明する。図１０は、図９に示した並列計算機の下位ノードコンピュータＡ１００の構成を示す機能ブロック図である。図９に示した下位ノードコンピュータＡ１００、中継ノードコンピュータＢ２００及び上位ノードコンピュータＣ３００は同一の機能ブロックを有するものであるが、ここでは、下位ノードコンピュータＡ１００に代表させて、実施例２の下位ノードコンピュータの機能ブロックについて説明する。下位ノードコンピュータの特徴的機能ブロック以外の説明は、省略することとする。同図に示すように、下位ノードコンピュータＡ１００は、該下位ノードコンピュータＡ１００全体の制御を司り、処理演算を実行するプロセッサ１０１と、記憶部１０２と、ネットワークインターフェースカードである通信Ｉ／Ｆ部１０３とを有する。
【００８７】
記憶部１０２は、メモリなどのデータを記憶する記憶領域であるデータ記憶部１０２ａと、連鎖するＳＷＲを記憶する連鎖ＳＷＲ記憶部１０２ｂとをさらに有する。ここで、ＳＷＲ（Send Work Request）とは、外部へパケットを送信する指示である。ＳＷＲに基づいて、外部にパケットが送信されることとなる。連鎖ＳＷＲとは、順序付けて関連付けられたＳＷＲの集合であり、連鎖ＳＷＲが出力されたならば、該順序付けに従って、関連付けられた全てのＳＷＲが出力される。出力されたそれぞれのＳＷＲに応じたパケットが、外部へ送信されることとなる。
【００８８】
なお、実施例２で送受信されるパケットは、対応する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によりメモリ操作後のメモリの値を読み出して、両者を比較する。この比較結果が、両者が一致するものと判定されたものである場合に、連鎖実行部２０３ｂに対して連鎖処理実行の指示を出力すると共に、当該メモリ操作が基づくパケットの全ての送信元のノードコンピュータへ完了通知を送信するように指示する。
【００９９】
具体的には、連鎖処理実行条件判定部２０３ｂは、（３）下位ノードコンピュータＡ１００からのパケット（パケット１）及び（３´）下位ノードコンピュータＡ´１００´からのパケット（パケット２）の同期待ち合わせを行うこととなる。
【０１００】
さらに、連鎖処理実行条件判定部２０３ｂにより、前述の同期待ち合わせが完了したとされたならば、（４）連鎖実行部２０３ｂが、パケット１及びパケット２の同期待ち合わせが完了に連鎖して出力されるＳＷＲに応じたパケットを、上位ノードコンピュータＣ３００へ送信することとなる。
【０１０１】
なお、実施例では、前述の“連鎖処理実行条件”をデータ記憶部２０２ａに最終的に保持されるべき値の目標値であるとし、前述の“メモリ操作後のデータ記憶部２０２ａの値”をデータ記憶部２０２ａに格納される値そのものであるする。しかし、これに限らず、“連鎖処理実行条件”を連鎖処理実行開始に必要な受信パケットの受信回数とし、“メモリ操作後のデータ記憶部２０２ａの値”を該データ記憶部２０２ａに格納される受信回数のカウント値であるとしてもよい。
【０１０２】
また、連鎖処理実行条件記憶部２０２ｃは、記憶部１０２に配置されるものであることに限られず、通信Ｉ／Ｆ部２０３内に設けられた所定の記憶領域に配置されることとしてもよい。
【０１０３】
また、前述のパケット受信時実行部２０３ａからの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実行部３０３ｃが、自ノードコンピュータに対してもパケットの送信が可能であることに基づく。
【０１１２】
また、受信パケットにより操作が指定されるメモリ領域のアドレスは仮想アドレスであるので、実施例１の通信Ｉ／Ｆ部３０３は、該仮想アドレスを実アドレスへ変換する変換機能を包含している。Atomic Operation実行部３０３ｃは、割り込み発生部３０３ａに対してデータの受信に係る割り込み処理を発生させる指示を出力する。
【０１１３】
このように、実施例２の下位ノードコンピュータＡ１００、中継ノードコンピュータＢ２００及び上位ノードコンピュータＣ３００は、従来はプロセッサ１０１、プロセッサ２０１及びプロセッサ３０１で行っていた下位ノードコンピュータＡ１００において依存関係があるデータの更新が行われたか否かの照会を、中継ノードコンピュータＢ２００を中継して下位ノードコンピュータＡ１００及び下位ノードコンピュータＡ´１００´へ送信する処理を、通信Ｉ／Ｆ部１０３、通信Ｉ／Ｆ部２０３及び通信Ｉ／Ｆ部３０３のみの処理で行うようにしたので、パケット受信毎に発生する割り込み及び同期処理によるプロセッサのコンテキストスイッチの乱れを抑制することができる。即ち、実施例２によれば、データ更新有無照会処理に係るパケット受信毎に発生する割り込みの発生を抑え、データ更新有無照会パケット送信処理をプロセッサにおけるソフトウェア制御から通信Ｉ／Ｆ部におけるハードウェア処理へ委譲したので、プロセッサのコンテキストスイッチの混乱を抑制し、以って並列計算機における計算機間の通信速度を向上させ、並列計算機の処理能力を向上させることができる。
【０１１４】
次に、図９に示した並列計算機における並列計算期間の依存データ整合処理について説明する。図１３及び１４は、図９に示した並列計算機における並列計算期間の依存データ整合処理を示すシーケンス図である。同図に示すように、先ず、上位ノードコンピュータＣ３００において、Atomic Operation実行部３０３ｃによりデータ更新有無照会パケットが、中継ノードコンピュータＢ２００へ送信される（ステップＳ１１１）。続いて、データ更新有無照会パケットがパケット受信時実行部２０３ａにより受信されると、データ更新有無照会がパケット受信時実行部２０３ａから連鎖実行部１０３ｂへ通知される（ステップＳ１１２）。該通知を受信した連鎖実行部１０３ｂは、記憶部１０２からデータ更新有無照会連鎖ＳＷＲを読み出し（ステップＳ１１３）、対応するデータ更新有無照会連鎖パケットを下位ノードコンピュータＡ１００へ送信する（ステップＳ１１４）。
【０１１５】
下位ノードコンピュータＡ１００において、パケット受信時実行部１０３ｃがデータ更新有無照会パケットを受信したならば、該パケット受信時実行部１０３ｃは、データ更新有無照会通知を連鎖実行部１０３ｂへ通知する（ステップＳ１１５）。続いて、連鎖実行部１０３ｂは、記憶部１０２から、データ更新有無照会通知連鎖ＳＷＲを読み出し（ステップＳ１１６）、記憶部１０２に記憶される依存データの更新の有無のチェックを実行する（ステップＳ１１７）。なお、ステップＳ１１４〜ステップＳ１１７の処理は、下位ノードコンピュータＡ´１００´においても実行されることとなる。ステップＳ１１７の処理で、データ更新があったと判定されると、実施例１に示した依存データ更新の通知が、下位ノードコンピュータＡ１００から中継ノードコンピュータＢ２００を経由して上位ノードコンピュータＣ３００へ行われることとなる。
【０１１６】
以上、本発明の実施例１及び２を説明したが、本発明は、これらに限られるものではなく、特許請求の範囲に記載した技術的思想の範囲内で、適宜設計変更して実施可能である。また、実施例１及び２に記載した効果は、これに限定されるものではない。
【０１１７】
なお、実施例１及び２では、説明を簡単にするために、並列計算機に接続されるノードコンピュータの数を限定したがが、木構造に接続されるものであれば、図示した数を超えたノードコンピュータが接続されるものであってもよい。
【０１１８】
また、本発明に係る通信Ｉ／Ｆ部１０３、通信Ｉ／Ｆ部２０３及び通信Ｉ／Ｆ部３０３は、通信機構として従来の通信Ｉ／Ｆ部と互換性を有する。従って、本発明に係る通信Ｉ／Ｆ部１０３、通信Ｉ／Ｆ部２０３及び通信Ｉ／Ｆ部３０３を装着したノードコンピュータと、装着していないノードコンピュータとを相互に接続可能である。この場合は、本発明に係る通信Ｉ／Ｆ部１０３、通信Ｉ／Ｆ部２０３及び通信Ｉ／Ｆ部３０３を装着していないノードコンピュータにおいて、ノード間通信に係るプロセッサの割り込みが発生し、同期待ち合わせに係るコンテキストスイッチの乱れが生じるなど、通信のパフォーマンスが低下する弊害が生ずるが、これ以外には問題は弊害が生ずるが、これ以外の問題は生じない。ない。即ち、本発明に係る通信Ｉ／Ｆ部１０３、通信Ｉ／Ｆ部２０３及び通信Ｉ／Ｆ部３０３を装着していないノードコンピュータと、本発明に係る通信Ｉ／Ｆ部１０３、通信Ｉ／Ｆ部２０３及び通信Ｉ／Ｆ部３０３を装着していないノードコンピュータとを混在させて並列計算機を構成することが可能である。
【０１１９】
（付記１）複数の下位ノード計算機に分散して配置されているデータを受信した該複数の下位ノード計算機に接続される上位ノード計算機において該データに依存するデータを保持する並列計算機における計算機の通信インターフェース装置であって、
連鎖する不可分命令を記憶する連鎖不可分命令記憶手段と、
当該計算機に配置されている前記データの変更を検知するデータ変更検知手段と、
前記データ変更検知手段により前記データの変更が検知されると、前記連鎖不可分命令記憶手段を参照して該変更されたデータに関連付けられる不可分命令を指定する連鎖不可分命令指定手段と、
前記連鎖不可分命令指定手段により指定された不可分命令を実行する不可分命令実行手段と
を備えたことを特徴とする通信インターフェース装置。
【０１２０】
（付記２）前記不可分命令実行手段により実行された前記不可分命令に基づいて、前記データの変更を前記上位ノード計算機へ通知することを特徴とする付記１に記載の通信インターフェース装置。
【０１２１】
（付記３）前記下位ノード計算機から受信した前記データの変更の通知に基づいて該データに依存するデータの無効化を記憶するデータ無効化記憶手段をさらに備えたことを特徴とする付記２に記載の通信インターフェース装置。
【０１２２】
（付記４）前記連鎖不可分命令記憶手段を参照して前記変更が通知されたデータに関連付けられる不可分命令を指定する変更受信時連鎖不可分命令指定手段と、
前記変更受信時連鎖不可分命令指定手段により指定された不可分命令を実行すると共に該不可分命令に関連付けられる連鎖不可分命令をさらに実行する連鎖不可分命令実行手段と
をさらに備えたことを特徴とする付記３に記載の通信インターフェース装置。
【０１２３】
（付記５）前記連鎖不可分命令実行手段により前記連鎖不可分命令記憶手段に記憶される全ての連鎖する不可分命令が実行されたか否かを判定する連鎖不可分命令実行完了判定手段をさらに備えたことを特徴とする付記４に記載の通信インターフェース装置。
【０１２４】
（付記６）前記連鎖不可分命令実行完了判定手段により前記連鎖不可分命令記憶手段に記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記通知の受信後の処理の開始のために該計算機のプロセッサに割り込みを発生させる割り込み発生手段をさらに備えたことを特徴とする付記５に記載の通信インターフェース装置。
【０１２５】
（付記７）前記連鎖不可分命令実行完了判定手段により前記連鎖不可分命令記憶手段に記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記通知の受信後の処理の開始のために該計算機のプロセッサに対して完了通知を出力する完了通知出力手段をさらに備えたことを特徴とする付記５に記載の通信インターフェース装置。
【０１２６】
（付記８）前記連鎖不可分命令実行完了判定手段により前記連鎖不可分命令記憶手段に記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記下位ノード計算機に対して予め定められた通信処理を実行する通信処理実行手段をさらに備えたことを特徴とする付記５に記載の通信インターフェース装置。
【０１２７】
（付記９）前記下位ノード計算機に対して、当該上位ノード計算機が有するデータが依存する該下位ノード計算機に配置されるデータに変更があったか否かを照い合わせるデータ変更照会手段をさらに備えたことを特徴とする付記１〜８のいずれか一つに記載の通信インターフェース装置。
【０１２８】
（付記１０）前記連鎖不可分命令記憶手段を参照して前記上位ノード計算機からの前記データの変更の問い合わせに関連付けられる不可分命令を指定する照会受信時連鎖不可分命令指定手段と、
前記照会受信時連鎖不可分命令指定手段により指定された不可分命令を実行すると共に該不可分命令に関連付けられる連鎖不可分命令をさらに実行する連鎖不可分命令実行手段と
をさらに備えたことを特徴とする付記９に記載の通信インターフェース装置。
【０１２９】
（付記１１）前記上位ノード計算機からの前記データの変更の問い合わせに応じて、前記データの変更を前記上位ノード計算機へ通知することを特徴とする付記９又は１０に記載の通信インターフェース装置。
【０１３０】
（付記１２）前記下位ノード計算機からデータを受信した旨のデータ受信情報を記憶する受信データ受信情報記憶手段と、
前記連鎖不可分命令実行完了判定手段により前記連鎖不可分命令記憶手段に記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記受信データ受信情報記憶に記憶される前記データ受信情報を初期化するデータ受信情報初期化手段を
さらに備えたことを特徴とする付記５〜１１のいずれか一つに記載の通信インターフェース装置。
【０１３１】
（付記１３）前記メモリ操作結果初期化手段による前記データ受信情報の初期化以前に、前記送信側計算機から受信データをさらに受信した場合に、前記連鎖不可分命令指定手段によるメモリ操作及び前記不可分命令の指定を中止させる連鎖不可分命令指定中止手段と、
前記連鎖不可分命令指定中止手段により前記不可分命令の指定が中止させられた情報を前記送信側計算機へ送信する不可分命令指定中止情報送信手段と
をさらに備えたことを特徴とする付記１２に記載の通信インターフェース装置。
【０１３２】
（付記１４）当該受信側計算機から前記不可分命令指定中止情報送信手段により送信された前記不可分命令の指定が中止させられた情報を受信すると、該受信側計算機へのデータ送信を再試行するデータ送信再試行手段をさらに備えたことを特徴とする付記１３に記載の通信インターフェース装置。
【０１３３】
（付記１５）前記データ無効化記憶手段に前記下位ノード計算機から受信した前記データの変更の通知に基づく該データに依存するデータの無効化が記憶されると、前記通知の受信後の処理の開始のために該計算機のプロセッサに割り込みを発生させる割り込み発生手段をさらに備えたことを特徴とする付記３〜１４のいずれか一つに記載の通信インターフェース装置。
【０１３４】
（付記１６）複数の下位ノード計算機に分散して配置されているデータを受信した該複数の下位ノード計算機に接続される上位ノード計算機において該データに依存するデータを保持する並列計算機における計算機の通信方法であって、
連鎖する不可分命令を記憶する連鎖不可分命令記憶工程と、
当該計算機に配置されている前記データの変更を検知するデータ変更検知工程と、
前記データ変更検知工程により前記データの変更が検知されると、前記連鎖不可分命令記憶工程を参照して該変更されたデータに関連付けられる不可分命令を指定する連鎖不可分命令指定工程と、
前記連鎖不可分命令指定工程により指定された不可分命令を実行する不可分命令実行工程と
を含んだことを特徴とする通信方法。
【０１３５】
（付記１７）前記不可分命令実行工程により実行された前記不可分命令に基づいて、前記データの変更を前記上位ノード計算機へ通知することを特徴とする付記１６に記載の通信方法。
【０１３６】
（付記１８）前記下位ノード計算機から受信した前記データの変更の通知に基づいて該データに依存するデータの無効化を記憶するデータ無効化記憶工程をさらに含んだことを特徴とする付記１７に記載の通信方法。
【０１３７】
（付記１９）前記連鎖不可分命令記憶工程による処理結果に基づき前記変更が通知されたデータに関連付けられる不可分命令を指定する変更受信時連鎖不可分命令指定工程と、
前記変更受信時連鎖不可分命令指定工程により指定された不可分命令を実行すると共に該不可分命令に関連付けられる連鎖不可分命令をさらに実行する連鎖不可分命令実行工程と
をさらに含んだことを特徴とする付記１８に記載の通信方法。
【０１３８】
（付記２０）前記連鎖不可分命令実行工程により前記連鎖不可分命令記憶工程に記憶される全ての連鎖する不可分命令が実行されたか否かを判定する連鎖不可分命令実行完了判定工程をさらに含んだことを特徴とする付記１９に記載の通信方法。
【０１３９】
（付記２１）前記連鎖不可分命令実行完了判定工程により前記連鎖不可分命令記憶工程に記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記通知の受信後の処理の開始のために該計算機のプロセッサに割り込みを発生させる割り込み発生工程をさらに含んだことを特徴とする付記２０に記載の通信方法。
【０１４０】
（付記２２）前記連鎖不可分命令実行完了判定工程により前記連鎖不可分命令記憶工程に記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記通知の受信後の処理の開始のために該計算機のプロセッサに対して完了通知を出力する完了通知出力工程をさらに含んだことを特徴とする付記２０に記載の通信方法。
【０１４１】
（付記２３）前記連鎖不可分命令実行完了判定工程により前記連鎖不可分命令記憶工程に記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記下位ノード計算機に対して予め定められた通信処理を実行する通信処理実行工程をさらに含んだことを特徴とする付記２０に記載の通信方法。
【０１４２】
（付記２４）前記下位ノード計算機に対して、当該上位ノード計算機が有するデータが依存する該下位ノード計算機に配置されるデータに変更があったか否かを照い合わせるデータ変更照会工程をさらに備えたことを特徴とする付記１６〜２３のいずれか一つに記載の通信方法。
【０１４３】
（付記２５）前記連鎖不可分命令記憶工程を参照して前記上位ノード計算機からの前記データの変更の問い合わせに関連付けられる不可分命令を指定する照会受信時連鎖不可分命令指定工程と、
前記照会受信時連鎖不可分命令指定工程により指定された不可分命令を実行すると共に該不可分命令に関連付けられる連鎖不可分命令をさらに実行する連鎖不可分命令実行工程と
をさらに備えたことを特徴とする付記２４に記載の通信方法。
【０１４４】
（付記２６）前記上位ノード計算機からの前記データの変更の問い合わせに応じて、前記データの変更を前記上位ノード計算機へ通知することを特徴とする付記２４又は２５に記載の通信方法。
【０１４５】
（付記２７）前記下位ノード計算機からデータを受信した旨のデータ受信情報を記憶する受信データ受信情報記憶工程と、
前記連鎖不可分命令実行完了判定工程により前記連鎖不可分命令記憶工程に記憶される全ての連鎖する不可分命令が実行されたと判定された場合に、前記受信データ受信情報記憶に記憶される前記データ受信情報を初期化するデータ受信情報初期化工程を
さらに含んだことを特徴とする付記２０〜２６のいずれか一つに記載の通信方法。
【０１４６】
（付記２８）前記メモリ操作結果初期化工程による前記データ受信情報の初期化以前に、前記送信側計算機から受信データをさらに受信した場合に、前記連鎖不可分命令指定工程によるメモリ操作及び前記不可分命令の指定を中止させる連鎖不可分命令指定中止工程と、
前記連鎖不可分命令指定中止工程により前記不可分命令の指定が中止させられた情報を前記送信側計算機へ送信する不可分命令指定中止情報送信工程と
をさらに含んだことを特徴とする付記２７に記載の通信方法。
【０１４７】
（付記２９）当該受信側計算機から前記不可分命令指定中止情報送信工程により送信された前記不可分命令の指定が中止させられた情報を受信すると、該受信側計算機へのデータ送信を再試行するデータ送信再試行工程をさらに含んだことを特徴とする付記２８に記載の通信方法。
【０１４８】
（付記３０）前記データ無効化記憶工程により前記下位ノード計算機から受信した前記データの変更の通知に基づく該データに依存するデータの無効化が記憶されると、前記通知の受信後の処理の開始のために該計算機のプロセッサに割り込みを発生させる割り込み発生工程をさらに含んだことを特徴とする付記１８〜２９のいずれか一つに記載の通信方法。
【産業上の利用可能性】
【０１４９】
本発明は、上位ノード計算機に配置されるデータが下位ノード計算機に配置されるデータに依存する場合に、該下位ノード計算機に配置されるデータの更新の検知及び該検知に応じた連鎖不可分命令の実行を通信インターフェース装置の機能で実現したい場合に有用であり、特に、並列計算機間の通信にかかるオーバーヘッドを低減し、プロセッサのコンテキストスイッチの乱れを抑制し、並列計算機の性能低下を防止したい場合に有効である。
【図面の簡単な説明】
【０１５０】
【図１】従来の並列計算機間の依存データ整合処理における問題点を示す図である。
【図２】本発明の実施例１に係る並列計算機間の依存データ整合処理の特徴を示す図である。
【図３】実施例１に係る並列計算機の下位ノードコンピュータの構成を示す機能ブロック図である。
【図４】ノードコンピュータの記憶部の記憶内容を示す図である。
【図５】実施例１に係る並列計算機の中継ノードコンピュータの構成を示す機能ブロック図である。
【図６】実施例１に係る並列計算機の上位ノードコンピュータの構成を示す機能ブロック図である。
【図７】実施例１の並列計算機間の依存データ整合処理を示すシーケンス図（その１）である。
【図８】実施例１の並列計算機間の依存データ整合処理を示すシーケンス図（その２）である。
【図９】本発明の実施例２に係る並列計算機間の依存データ整合処理の特徴を示す図である。
【図１０】実施例２に係る並列計算機の下位ノードコンピュータの構成を示す機能ブロック図である。
【図１１】実施例２に係る並列計算機の中継ノードコンピュータの構成を示す機能ブロック図である。
【図１２】実施例２に係る並列計算機の上位ノードコンピュータの構成を示す機能ブロック図である。
【図１３】実施例２の並列計算機間の依存データ更新照会処理を示すシーケンス図（その１）である。
【図１４】実施例２の並列計算機間の依存データ更新照会処理を示すシーケンス図（その２）である。
【符号の説明】
【０１５１】
１００    下位ノードコンピュータＡ
１０１    プロセッサ
１０２    記憶部
１０２ａ    データ記憶部
１０２ｂ    連鎖ＳＷＲ記憶部
１０３    通信Ｉ／Ｆ部
１０３ａ    データ更新検知部
１０３ｂ    連鎖実行部
１０３ｃ    パケット受信時実行部
１００´    下位ノードコンピュータＡ´
２００    中継ノードコンピュータＢ
２０１    プロセッサ
２０２    記憶部
２０２ａ    データ記憶部
２０２ｂ    連鎖ＳＷＲ記憶部
２０２ｃ    連鎖処理実行条件記憶部
２０３    通信Ｉ／Ｆ部
２０３ａ    パケット受信時実行部
２０３ｂ    連鎖実行部
２０３ｃ    連鎖処理実行条件判定部
３００    上位ノードコンピュータＣ
３０１    プロセッサ
３０２    記憶部
３０２ａ    データ更新フラグ記憶部
３０２ｂ    データ記憶部
３０３    通信Ｉ／Ｆ部
３０３ａ    割込み発生部
３０３ｂ    パケット受信時実行部
３０３ｃ    Atomic Operation実行部
【図１】
0004696025.tif 000002
【図２】
0004696025.tif 000003
【図３】
0004696025.tif 000004
【図４】
0004696025.tif 000005
【図５】
0004696025.tif 000006
【図６】
0004696025.tif 000007
【図７】
0004696025.tif 000008
【図８】
0004696025.tif 000009
【図９】
0004696025.tif 000010
【図１０】
0004696025.tif 000011
【図１１】
0004696025.tif 000012
【図１２】
0004696025.tif 000013
【図１３】
0004696025.tif 000014
【図１４】
0004696025.tif 000015