(57)【特許請求の範囲】
【請求項１】
中央演算部と主記憶部と遠隔制御部とを備えるノードがネットワークを介して複数接続され、任意のノードから他のノードに対してデータを転送する分散メモリ型並列計算機であって、
前記任意のノードにおいて、
前記中央演算部は、
前記遠隔制御部に対して転送データの転送終了を示すＥＯＴ（ＥＯＴ：End Of Transfer)コマンドを発行する発行手段を有し、
前記遠隔制御部は、
前記発行手段による前記ＥＯＴコマンドを受け付けると、前記主記憶部に記憶されているデータを取得する取得手段と、
前記取得手段により取得された前記データに前記ＥＯＴコマンドを付加する付加手段と、
前記付加手段により前記ＥＯＴコマンドを付加した前記転送データを前記他のノードに対して転送する転送手段と、を有し、
前記他のノードにおいて、
前記遠隔制御部は、
前記転送手段により転送される前記転送データのコマンド及びアドレスを受け付けて保持する第１の受け付け手段と、
前記転送手段により転送される前記転送データのデータを受け付けて保持する第２の受け付け手段と、
前記第１の受け付け手段により受け付けられた前記転送デ−タのコマンド及びアドレスの競合調停を行う競合調停手段と、
前記競合調停手段により競合調停された前記アドレスを変換するアドレス変換手段と、
前記競合調停手段により競合調停された前記コマンドがＥＯＴコマンドであるか否かを判定する判定手段と、
前記判定手段により前記コマンドがＥＯＴコマンドであると判定された場合に、前記第２の受け付け手段により受け付けた前記データの一部を、前記ＥＯＴコマンドが付加されて転送されたことを示す所定の値に差し替える差し替え手段と、
前記差し替え手段により差し替えられた前記データと前記アドレス変換手段により変換されたアドレスとを前記主記憶部に記憶させる記憶手段と、
前記記憶手段により前記主記憶部への記憶が完了した場合に、その旨を前記任意のノードに通知する完了通知手段と、を有し、
前記中央演算部は、
前記記憶手段により前記主記憶部に前記データの一部が差し替えられて記憶されているか否かを検知する検知手段を有することを特徴とする分散メモリ型並列計算機。
【請求項２】
前記差し替え手段は、
前記第２の受け付け手段により受け付けられた前記データの先頭部分を差し替えることを特徴とする請求項１記載の分散メモリ型並列計算機。
【請求項３】
前記差し替え手段は、
前記第２の受け付け手段により受け付けられた前記データの最終部分を差し替えることを特徴とする請求項１記載の分散メモリ型並列計算機。
【請求項４】
中央演算部と主記憶部と遠隔制御部とを備えるノードがネットワークを介して複数接続され、任意のノードから他のノードに対してデータを転送する分散メモリ型並列計算機のデータ転送終了確認方法であって、
前記任意のノードにおいて、
前記中央演算部から前記遠隔制御部に対して転送データの転送終了を示すＥＯＴ（ＥＯＴ：End Of Transfer)コマンドを発行する発行工程と、
前記発行工程による前記ＥＯＴコマンドを受け付けると、前記主記憶部に記憶されているデータを取得する取得工程と、
前記取得工程により取得された前記転送データに前記ＥＯＴコマンドを付加する付加工程と、
前記付加工程により前記ＥＯＴコマンドを付加した前記転送データを前記他のノードに対して転送する転送工程と、
前記他のノードの遠隔制御部において、
前記遠隔制御部にて前記転送データのコマンド及びアドレスを受け付けて保持する第１の受け付け工程と、
前記転送データのデータを受け付けて保持する第２の受け付け工程と、
前記第１の受け付け工程により保持される前記コマンド及びアドレスの競合調停を行う競合調停工程と、
前記競合調停工程により競合調停された前記アドレスを変換するアドレス変換工程と、
前記競合調停工程により競合調停された前記コマンドがＥＯＴコマンドであるか否かを判定する判定工程と、
前記判定工程により前記コマンドがＥＯＴコマンドであると判定された場合に、前記第２の受け付け工程により受け付けた前記データの一部を、前記ＥＯＴコマンドが付加されて転送されたことを示す所定の値に差し替える差し替え工程と、
前記差し替え工程により差し替えられた前記データと前記アドレス変換工程により変換されたアドレスとを前記主記憶部に記憶させる記憶工程と、
前記記憶工程により前記主記憶部への記憶が完了した場合に、その旨を前記任意のノードに対して通知する完了通知工程と、
前記他のノードの中央演算部において、
前記記憶工程により前記主記憶部に前記差し替え工程により前記データの一部が差し替えられて記憶されているか否かを検知する検知工程と、を有することを特徴とする分散メモリ型並列計算機のデータ転送終了確認方法。
【請求項５】
前記差し替え工程は、
前記第２の受け付け工程により受け付けられた前記データの先頭部分を差し替えることを特徴とする請求項４記載の分散メモリ型並列計算機のデータ転送終了確認方法。
【請求項６】
前記差し替え工程は、
前記第２の受け付け工程により受け付けられた前記データの最終部分を差し替えることを特徴とする請求項４記載の分散メモリ型並列計算機のデータ転送終了確認方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、分散メモリ型並列計算機及びデータ転送終了確認方法に関し、特にローカルノードのＣＰＵを主体とし、ローカルノードからリモートノードへのライト転送を行い、リモートノードのＣＰＵがそのライト転送の完了を確認する分散メモリ型並列計算機及びデータ転送終了確認方法に関する。
【０００２】
【従来の技術】
従来、電子計算機の構成方式において、複数の処理装置（計算ノード）を同時に動作させることにより、高い処理能力を実現する分散メモリ型並列計算機が注目されている。
【０００３】
このような分散メモリ型並列計算機を用いて計算を行う場合は、各計算ノード間におけるデータ転送の発生頻度を小さくする、すなわち、計算ノード内に閉じたプログラミングを行うのが好ましいとされている。その理由は、各計算ノード間がネットワークで接続されているため、計算ノード内の距離に比べてそれぞれの計算ノード間の距離が大きいためである。
【０００４】
しかし、大規模な科学技術問題において、各計算ノード内に閉じたプログラミングを行うことは不可能に等しく、実際には各計算ノードが協調して動作するプログラミングとなる。例えば、大規模問題配列が複数ノードに跨ってマッピングされている場合（グローバルメモリ空間としてマッピング）等がこれに相当する。
【０００５】
図５は、従来の分散メモリ型並列計算機の構成を示すブロック図である。
図５において、従来の分散型メモリ並列計算機は、第１の計算ノード１と第２の計算ノードとがネットワーク３を介して接続されているものである。ここでは、命令起動を発する第１の計算ノード１をローカルノード１と称し、それに準ずる第２の計算ノード２をリモートノード２と称して説明する。
【０００６】
ローカルノード１は、ＣＰＵ(Central Processing Unit：中央演算装置）１１と、ＭＭＵ（Main Memory Unit：主記憶装置）１２と、ＲＣＵ（Remote Contorol Unit：遠隔制御装置）１３と、を有して構成される。
【０００７】
リモートノード２は、上記ローカルノード１と同様に、ＣＰＵ２１と、ＭＭＵ２２と、ＲＣＵ２３と、を有して構成される。
【０００８】
ネットワーク３は、ローカルノード１とリモートノード２とを接続するものであり、一般に各ノード間の同期処理用に通信レジスタ３１を有して構成される。
【０００９】
ローカルノード１において、ＣＰＵ１１は、ＭＭＵ１２に対するデータのロードとストアが可能であり、ロードしたデータを用いて演算を行い、その結果をＭＭＵ１２にストアする。
【００１０】
ＲＣＵ１３は、ＣＰＵ１１からの計算ノードを跨ぐＭＭＵ２２間のデータ転送命令を受け付け、ＲＣＵ２３と協調してノード間データ転送を実現する。
【００１１】
例えば、ＣＰＵ１１がＲＣＵ１３に対して、ＭＭＵ１２のデータをリモートノード２のＭＭＵ２２に転送するように指示した場合、ＲＣＵ１３は、ＭＭＵ１２のデータをロードしてネットワーク３を経由してＲＣＵ２３に転送する。ＲＣＵ２３は、この転送されたデータをＭＭＵ２２にストアする。これをノード間ライト転送と称する。
【００１２】
また、ＣＰＵ１１がＲＣＵ１３に対して、リモートノード２のＭＭＵ２２のデータをＭＭＵ１２に転送するように指示した場合、ＲＣＵ１３は、ＲＣＵ２３に対してデータ転送リクエストを送る。ＲＣＵ２３は、ＭＭＵ２２にストアされるデータをロードしてネットワーク３を経由してＲＣＵ１３に転送する。ＲＣＵ１３は、この転送されたデータをＭＭＵ１２にストアする。これをノード間リード転送と称する。
【００１３】
図６は、従来の分散メモリ型並列計算機におけるＲＣＵの詳細な構成を示すブロック図である。図６において、従来の分散メモリ型並列計算機におけるＲＣＵ１３（２３）は、リクエスト受付部１３１（２３１）と、データ受付部１３２（２３２）と、競合調停部１３３（２３３）と、アドレス変換部１３４（２３４）と、リクエスト／データ送出部１３５（２３５）と、を有して構成される。
【００１４】
リクエスト受付部２３１は、ＣＰＵ２１からの命令またはネットワーク３を経由してのＲＣＵ１３からの命令（コマンド・アドレス）を受け付けて保持する。
【００１５】
データ受付部２３２は、ネットワーク３を介してＲＣＵ１３から転送されてくるデータ部分を受け付けて保持する。
【００１６】
競合調停部２３３は、リクエスト受付部２３１中のリクエストを１つずつ選択（競合調停）する。
【００１７】
アドレス変換部２３４は、論理ノード番号を物理ノード番号に変換、ローカルＪＯＢ番号をリモートＪＯＢ番号に変換、ノード内論理アドレスをノード内物理アドレスに変換する。特に、物理ノード番号変換とリモートＪＯＢ番号変換は、ネットワーク３を経由して他のノード（ローカルノード１）にアクセスする命令に対して必要となり、ノード内物理アドレス変換は、ノード内メモリ（ここではＭＭＵ２２）にアクセスする命令に対して必要となる。
【００１８】
リクエスト／データ送出部２３５は、アドレス変換部２３４によりアドレス変換後の命令（コマンド・アドレス）とＭＭＵ２２からのロードデータを他ノード（ネットワーク３を経由してＲＣＵ１３）に送出する部分である。また、データ受付部２３２にて保持されているデータは、他ノード（ネットワーク３を経由してＲＣＵ１３）からＭＭＵ２２にストアする場合に必要となる。
【００１９】
一般に、ローカルノードがライト転送命令を起動し、その終了確認をリモートノードで行うプログラムは、以下のように示される。
【００２０】
（ローカルノードプログラム）
ＦＬＡＧ＝１
ＤＯ  Ｉ＝１，Ｍ
ＮＯＤＥ２（Ｉ＋Ｊ）＝ＮＯＤＥ（Ｉ）
ＥＮＤ  ＤＯ
ＦＬＡＧ＝０
（リモートノードプログラム）
ＩＦ  ＦＬＡＧ .ｅｑ．０  ＴＨＥＮ
ＣＡＬＬ  ＮＥＸＴ＿ＰＲＯＧＲＡＭ＿ＳＵＢ
ＥＮＤ  ＩＦ
【００２１】
分散メモリ型並列計算機におけるプログラミングは、通常、ＭＰＩ(Message Passing Interface）／ＨＰＦ(High Performance Fortran)を使って、１つのプログラムで表現するのが普通であるが、ここでは分かり易いように、各計算ノード毎に分けて表現することにする。
【００２２】
従来の分散メモリ型配列計算機においては、配列ＮＯＤＥ１（Ｉ）をローカルノード１にマッピングし、配列ＮＯＤＥ２（Ｉ＋Ｊ）をリモートノード２にマッピングし、親プロセスをローカルノード１のＣＰＵ１１としている。
【００２３】
また、データ転送状態を表示する同期フラグＦＬＡＧは、ネットワーク３内の通信レジスタ３１にマッピングする。ここでは、ＦＬＡＧ＝”１”の時をデータ転送中、ＦＬＡＧ＝”０”の時をデータ転送完了と定義するものである。
【００２４】
ここで、配列コピーがノード間に跨り、コピー先のプロセスは、コピー完了後に次のサブルーチンにジャンプできるケースを検証してみる。
【００２５】
上述されるプログラムは、配列ＮＯＤＥ１（Ｉ）を配列ＮＯＤＥ２（Ｉ＋Ｊ）にコピーし、当該コピーが完了した後（ＦＬＡＧの値が”１”から”０”に変わったのを確認した後）、次のサブルーチンにジャンプできるプログラムである。
【００２６】
ここで、配列ＮＯＤＥ１（Ｉ）をローカルノード１にマッピングし、配列ＮＯＤＥ２（Ｉ＋Ｊ）をリモートノード２にマッピングし、グローバルフラグＦＬＡＧは、ローカルノード１及びリモートノード２の双方から等距離にあるネットワーク（Inter-node-Network）３内の通信レジスタ３１にマッピングされる。また、親プロセスは、ローカルノード１のＣＰＵ１１であるとする。
【００２７】
この場合、ローカルノード１のＣＰＵ１１は、ＲＣＵ１３に対し、ＦＬＡＧの”１”セット命令とノード間ライト転送命令とＦＬＡＧ”０”クリア命令を発行するものである。
【００２８】
図７は、従来の分散メモリ型並列計算機の動作例を示すタイミングチャートである。図７を参照しながら、ローカルノード１の動作を以下に示す。
【００２９】
ローカルノード１において、ＣＰＵ１１は、データ転送中であることをリモートノード２のＣＰＵ２１に通知するため、ＲＣＵ１３に対してネットワーク３内の通信レジスタ３１への書き込み命令を発行する。
【００３０】
ＲＣＵ１３では、ＣＰＵ１１からの通信レジスタ３１への書き込み命令をリクエスト受付部１３１で受け付け、競合調停部１３３で競合調停した後、リクエスト／データ送出部１３５より、ネットワーク３に送出する。
【００３１】
ネットワーク３では、通信レジスタ３１のＦＬＡＧを”１”にセットし、ＦＬＡＧの書き込み処理が正常に行えたことを示す「終了リプライ」をＲＣＵ１３に返却し、当該ＲＣＵ１３は、この終了リプライをＣＰＵ１１に通知して通信レジスタ３１への書き込み処理を終了する。
【００３２】
次に、ＣＰＵ１１は、ＲＣＵ１３に対してリモートノード２のＭＭＵ２２に対するライト転送命令を発行する。
【００３３】
ＲＣＵ１３では、ＣＰＵ１１からのライト転送命令をリクエスト受付部１３１で受け付け、競合調停部１３３で競合調停した後、アドレス変換部１３４において、物理ノード番号変換／リモートＪＯＢ番号変換／物理アドレス変換してＭＭＵ１２にアクセスする。その後、ＲＣＵ１３は、ＭＭＵ１２からのロードデータと物理ノード番号／リモートＪＯＢ番号とを一緒にしてリクエスト／データ送出部１３５より、ネットワーク３を介してＲＣＵ２３に対して送出する。
【００３４】
次に、リモートノード２において、ＲＣＵ２３は、ネットワーク３を介してＲＣＵ１３から送出されたライト転送命令をリクエスト受付部２３１で受け付け、競合調停部２３３で競合調停した後、アドレス変換部２３４で物理アドレスに変換する。また、転送データは、データ受付部２３２で受け付けられ、物理アドレスと一緒にＭＭＵ２２に書き込まれる。
【００３５】
ＲＣＵ２３は、ＲＣＵ１３からのライト転送命令とＭＭＵ２２への書き込み動作が正常に終了したことを示す「終了リプライ」をリクエスト／データ送出部２３５からネットワーク３を経由してＲＣＵ１３に送り、ＲＣＵ１３は、この終了リプライをＣＰＵ１１に返却してライト転送命令が完了する。
【００３６】
次に、ＣＰＵ１１は、データ転送が完了したことをリモートノード２のＣＰＵ２１に知らせるために、ＲＣＵ１３にネットワーク３内の通信レジスタ３１への書き込み命令を発行する。
【００３７】
ＲＣＵ１３では、通信レジスタ３１への書き込み命令をリクエスト受付部１３１で受け付け、競合調停部１３３で競合調停した後、リクエスト／データ送出部１３５より、ネットワーク３に送出する。
【００３８】
ネットワーク３では、通信レジスタ３１のＦＬＡＧ値を”０”にクリアし、ＦＬＡＧの書き込みが正常に行えたことを示す「終了リプライ」をＲＣＵ１３に返却し、ＲＣＵ１３は、この終了リプライをＣＰＵ１１に通知して通信レジスタ３１への書き込み処理を終了する。
【００３９】
次に、リモートノード２の動作を以下に示す。
リモートノード２において、ＣＰＵ２１は、ＲＣＵ２３に通信レジスタ読み出し命令を発行する。ＲＣＵ２３では、通信レジスタ３１への読み出し命令をリクエスト受付部２３１で受け付け、競合調停部２３３で競合調停した後、リクエスト／データ送出部２３５より、ネットワーク３に対して送出する。
【００４０】
ネットワーク３では、通信レジスタ３１のＦＬＡＧ値を読み出し、当該ＦＬＡＧ値とＦＬＡＧの読み出しが正常に行えたことを示す「終了リプライ」をＲＣＵ２３に返却し、ＲＣＵ２３は、それをＣＰＵ２１に通知してネットワーク３内の通信レジスタ３１の読み出し処理を終了する。
【００４１】
このＦＬＡＧの読み出し処理は、ＦＬＡＧ値が”０”になるまで、すなわち、ライト転送の完了を確認するまで繰り返される。そして、ＦＬＡＧ値が”０”になったのを確認したら、ＣＰＵ２１は，次のシーケンス（ＮＥＸＴ＿ＰＲＯＧＲＡＭ＿ＳＵＢ）に移り一連の動作が完了となる。
【００４２】
この時、従来の分散メモリ型並列計算機において、各ユニット間／ユニット内におけるレイテンシ（Latency)を以下に定めることにする。ここで用いられるＴは、分散メモリ型並列計算機システムの１マシンクロックに相当するものとする。
【００４３】
１．ＣＰＵ（１１，２１）／ＭＭＵ（１２，２２）間のレイテンシ  ：１Ｔ
２．ＭＭＵ（１２，２２）／ＲＣＵ（１３，２３）間のレイテンシ  ：１Ｔ
３．ネットワーク３／ＲＣＵ（１３，２３）間のレイテンシ        ：３Ｔ
４．各ユニット内通過レイテンシ                                ：０Ｔ
【００４４】
よって、従来の分散メモリ型並列計算機においては、図７に示されるように、データ転送の終了確認まで、つまり、ＣＰＵ２１がＦＬＡＧ＝”０”を確認するまでに６２Ｔ必要となる。
【００４５】
【発明が解決しようとする課題】
しかしながら、上記従来例に示される分散メモリ型並列計算機において、本来の目的のノード間ライト転送命令の前後に位置するＦＬＡＧのセット処理及びクリア処理は、距離が遠いネットワークまでのアクセスとなるため、ライト転送前とライト転送後のオーバーヘッドが大きくなるという問題がある。
【００４６】
一方、リモートノードのＣＰＵもＲＣＵに対し、ＦＬＡＧの読み出し命令を発行し続けることとなるため、こちらも距離が遠いネットワークまでのアクセスとなり、ライト転送完了からリモートノードのＣＰＵがライト転送完了を確認するまでのオーバーヘッドが大きくなるという問題がある。
【００４７】
この問題を解決するために、以下に示される２つの方法が考えられる。
まず、第１の方法として、ローカルノードのＣＰＵにおいて、ＦＬＡＧのセット処理及びリセット処理を排除することができれば、当該ローカルノードは、早いタイミングにてライトデータ転送を実行し完了することが可能となる。
【００４８】
次に、第２の方法として、リモートノードにおいて、データ転送確認フラグＦＬＡＧがネットワークではなく、リモートノードの付近にあれば、ターンアラウンドタイムが短縮されるので、ＦＬＡＧの確認処理が高速化され、データ転送終了後、早いタイミングで次のサブルーチンへのジャンプが可能となる。
【００４９】
上述される２つの方法による動作が可能となれば、分散メモリ型並列計算機におけるライトデータ転送時のリモートノードにおけるデータ転送終了確認は高速化されるものと期待できる。
【００５０】
本発明は、ローカルノードのＣＰＵが主体となり、ローカルノードからリモートノードへライト転送を行い、リモートノードのＣＰＵがそのデータ転送の完了を確認をするまでの一連の動作を高速化する分散メモリ型並列計算機及びそのデータ転送終了確認方法を提供することを目的とする。
【００５１】
【課題を解決するための手段】
前記課題を解決するために、請求項１記載の発明は、中央演算部と主記憶部と遠隔制御部とを備えるノードがネットワークを介して複数接続され、任意のノードから他のノードに対してデータを転送する分散メモリ型並列計算機であって、前記任意のノードにおいて、前記中央演算部は、前記遠隔制御部に対して転送データの転送終了を示すＥＯＴ（ＥＯＴ：End Of Transfer）コマンドを発行する発行手段を有し、前記遠隔制御部は、前記発行手段による前記ＥＯＴコマンドを受け付けると、前記主記憶部に記憶されているデータを取得する取得手段と、前記取得手段により取得された前記データに前記ＥＯＴコマンドを付加する付加手段と、前記付加手段により前記ＥＯＴコマンドを付加した前記転送データを前記他のノードに対して転送する転送手段と、を有し、前記他のノードにおいて、前記遠隔制御部は、前記転送手段により転送される前記転送データのコマンド及びアドレスを受け付けて保持する第１の受け付け手段と、前記転送手段により転送される前記転送データのデータを受け付けて保持する第２の受け付け手段と、前記第１の受け付け手段により受け付けられた前記転送デ−タのコマンド及びアドレスの競合調停を行う競合調停手段と、前記競合調停手段により競合調停された前記アドレスを変換するアドレス変換手段と、前記競合調停手段により競合調停された前記コマンドがＥＯＴコマンドであるか否かを判定する判定手段と、前記判定手段により前記コマンドがＥＯＴコマンドであると判定された場合に、前記第２の受け付け手段により受け付けた前記データの一部を、前記ＥＯＴコマンドが付加されて転送されたことを示す所定の値に差し替える差し替え手段と、前記差し替え手段により差し替えられた前記データと前記アドレス変換手段により変換されたアドレスとを前記主記憶部に記憶させる記憶手段と、前記記憶手段により前記主記憶部への記憶が完了した場合に、その旨を前記任意のノードに通知する完了通知手段と、を有し、前記中央演算部は、前記記憶手段により前記主記憶部に前記データの一部が差し替えられて記憶されているか否かを検知する検知手段を有することを特徴とする分散メモリ型並列計算機である。
【００５２】
請求項２記載の発明は、請求項１記載の分散メモリ型並列計算機において、前記差し替え手段は、前記第２の受け付け手段により受け付けられた前記データの先頭部分を差し替えることを特徴とする。
【００５３】
請求項３記載の発明は、請求項１記載の分散メモリ型並列計算機において、前記差し替え手段は、前記第２の受け付け手段により受け付けられた前記データの最終部分を差し替えることを特徴とする。
【００５４】
請求項４記載の発明は、中央演算部と主記憶部と遠隔制御部とを備えるノードがネットワークを介して複数接続され、任意のノードから他のノードに対してデータを転送する分散メモリ型並列計算機のデータ転送終了確認方法であって、前記任意のノードにおいて、前記中央演算部から前記遠隔制御部に対して転送データの転送終了を示すＥＯＴ（ＥＯＴ：End Of Transfer）コマンドを発行する発行工程と、前記発行工程による前記ＥＯＴコマンドを受け付けると、前記主記憶部に記憶されているデータを取得する取得工程と、前記取得工程により取得された前記転送データに前記ＥＯＴコマンドを付加する付加工程と、前記付加工程により前記ＥＯＴコマンドを付加した前記転送データを前記他のノードに対して転送する転送工程と、前記他のノードの遠隔制御部において、前記遠隔制御部にて前記転送データのコマンド及びアドレスを受け付けて保持する第１の受け付け工程と、前記転送データのデータを受け付けて保持する第２の受け付け工程と、前記第１の受け付け工程により保持される前記コマンド及びアドレスの競合調停を行う競合調停工程と、前記競合調停工程により競合調停された前記アドレスを変換するアドレス変換工程と、前記競合調停工程により競合調停された前記コマンドがＥＯＴコマンドであるか否かを判定する判定工程と、前記判定工程により前記コマンドがＥＯＴコマンドであると判定された場合に、前記第２の受け付け工程により受け付けた前記データの一部を、前記ＥＯＴコマンドが付加されて転送されたことを示す所定の値に差し替える差し替え工程と、前記差し替え工程により差し替えられた前記データと前記アドレス変換工程により変換されたアドレスとを前記主記憶部に記憶させる記憶工程と、前記記憶工程により前記主記憶部への記憶が完了した場合に、その旨を前記任意のノードに対して通知する完了通知工程と、前記他のノードの中央演算部において、前記記憶工程により前記主記憶部に前記差し替え工程により前記データの一部が差し替えられて記憶されているか否かを検知する検知工程と、を有することを特徴とする分散メモリ型並列計算機のデータ転送終了確認方法である。
【００５５】
請求項５記載の発明は、請求項３記載の分散メモリ型並列計算機のデータ転送終了確認方法において、前記差し替え工程は、前記第２の受け付け工程により受け付けられた前記データの先頭部分を差し替えることを特徴とする。
【００５６】
請求項６記載の発明は、請求項３記載の分散メモリ型並列計算機のデータ転送終了確認方法において、  前記差し替え工程は、前記第２の受け付け工程により受け付けられた前記データの最終部分を差し替えることを特徴とする。
【００６０】
【発明の実施の形態】
次に、添付図面を参照しながら本発明の実施形態である分散メモリ型並列計算機及びそのデータ転送終了確認方法を詳細に説明する。図１から図４を参照すると、本発明に係る分散メモリ型並列計算機及びそのデータ転送終了確認方法の実施の形態が示されている。なお、図５に示される従来例と同一構成要素に関しては、同一符号を付して説明するものである。
【００６１】
図１は、本発明の実施形態における分散メモリ型並列計算機の概略構成を示すブロック図である。図１において、本発明の実施形態である分散メモリ型並列計算機は、複数の計算ノードとして第１の計算ノード（以下、ローカルノードと称す）１及び第２の計算ノード（以下、リモートノードと称す）２と、それらを結ぶネットワーク３とを有して構成される。なお、本発明の実施形態においては、第１の計算ノード１をローカルノードとして説明するものであるが、これに限定されるものでなく、また、この台数も限定されるものではない。
【００６２】
ローカルノード１は、ＣＰＵ（Central Processing Unit ：中央演算装置）１１と、ＭＭＵ（Main Memory Unit：主記憶装置）１２と、ＲＣＵ（Remote Control Unit ：遠隔制御装置）１３と、を有して構成されている。
【００６３】
リモートノード２は、上述のローカルノード１と同様に、ＣＰＵ２１と、ＭＭＵ２２と、ＲＣＵ２３とにより構成されている。
【００６４】
また、ネットワーク３は、上述されるローカルノード１とリモートノード２と接続するものである。
【００６５】
図２は、本発明の実施形態である分散メモリ型並列計算機における計算ノードの概略構成を示すブロック図である。図２において、本発明の実施形態である分散メモリ型並列計算機は、リクエスト受付部１３１（２３１）と、データ受付部１３２（２３２）と、競合調停部１３３（２３３）と、アドレス変換部１３４（２３４）と、リクエスト／データ送出部１３５（２３５）と、ＥＯＴ判定部１３６（２３６）と、セレクタ１３７（２３７）と、を有して構成される。
【００６６】
本発明の実施形態における計算ノードにおいては、リモートノードにおけるライト転送完了確認を高速化するために、ＥＯＴ（End Of Transfer)マーク付きライト転送命令を発行するための機構を設けることにより、その命令をローカルノード１のＣＰＵ１１から発行可能とするものである。
【００６７】
ここで、ＥＯＴマーク付きライト転送命令とは、転送すべきデータの先頭要素の値を固定値（例えば”Ａｌｌ  １”：４Ｂデータならば１６進で”ＦＦＦＦＦＦＦＦ”、８Ｂデータならば１６進で”ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ”）にリモートノード２のＲＣＵ２３で差し替えて、ＭＭＵ２２に書き込むものである。
【００６８】
但し、先頭要素が別の値に置き換えられても問題のないようにマッピングをする必要がある。本方式を実現するために、リモートノード２のＲＣＵ２３には、ＥＯＴ付き転送命令であることを認識するためのＥＯＴ判定部１３６（２３６）と、ＥＯＴマークを先頭要素と差し替えるためのセレクタ１３７（２３７）とが新規に設けられている点において従来例と相違する。
【００６９】
リクエスト受付部２３１は、ＣＰＵ２１からの命令またはネットワーク３を経由してのＲＣＵ１３からの命令（コマンド・アドレス）を受け付けて保持する。
【００７０】
データ受付部２３２は、ネットワーク３を介してＲＣＵ１３から転送されてくるデータ部分を受け付けて保持する。
【００７１】
競合調停部２３３は、リクエスト受付部２３１中のリクエストを１つずつ選択（競合調停）する。
【００７２】
アドレス変換部２３４は、論理ノード番号を物理ノード番号に変換、ローカルＪＯＢ番号をリモートＪＯＢ番号に変換、ノード内論理アドレスをノード内物理アドレスに変換する。特に、物理ノード番号変換とリモートＪＯＢ番号変換は、ネットワーク３を経由して他のノード（ローカルノード１）にアクセスする命令に対して必要となり、ノード内物理アドレス変換は、ノード内メモリ（ここではＭＭＵ２２）にアクセスする命令に対して必要となる。
【００７３】
リクエスト／データ送出部２３５は、アドレス変換部２３４によりアドレス変換後の命令（コマンド・アドレス）とＭＭＵ２２からのロードデータを他ノード（ネットワーク３を経由してＲＣＵ１３）に送出する部分である。また、データ受付部２３２にて保持されているデータは、他ノード（ネットワーク３を経由してＲＣＵ１３）からＭＭＵ２２にストアする場合に必要となる。
【００７４】
次に、本発明の特徴であるＥＯＴ判定部２３６及びセレクタ２３７について説明する。
【００７５】
ＥＯＴ判定部２３６は、受け付けた命令がＥＯＴマーク付きライト転送命令であることを認識するための回路であり、当該受け付けた命令がＥＯＴマーク付きライト転送命令である場合は、転送データの先頭要素をＥＯＴマークに差し替えるようセレクタ２３７に指示を出す。
【００７６】
セレクタ２３７は、通常、データ受付部２３２の方向を向いているが、ＥＯＴ判定部２３６よりＥＯＴマーク差し替え指示があった場合は、転送データをＥＯＴマーク（４Ｂデータならば１６進で”ＦＦＦＦＦＦＦＦ”、８Ｂデータならば１６進で”ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ”）に差し替える。
【００７７】
図３は、本発明の実施形態である分散メモリ型並列計算機の動作例を示すタイミングチャートである。図３を参照しながら、ローカルノード１の動作を以下に示す。
【００７８】
ローカルノード１において、ＣＰＵ１１は、ＲＣＵ１３にＥＯＴマーク付きライト転送命令を発行し、ＲＣＵ１３は、ＭＭＵ１２から転送データ（配列ＮＯＤＥ１（Ｉ））をロードして、ネットワーク３を経由してＲＣＵ２３にデータ転送する。
【００７９】
ＲＣＵ２３では、ネットワーク３を経由して転送されてきたライト転送命令をＥＯＴ判定部２３６でＥＯＴマーク付きライト転送命令であると認識し、セレクタ２３７において、データの先頭要素をＥＯＴマーク（４Ｂデータならば１６進で”ＦＦＦＦＦＦＦＦ”、８Ｂデータならば１６進で”ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ”）に差し換え、ＭＭＵ２２に転送されてきたデータをストアする。
【００８０】
ＲＣＵ２３では、ＥＯＴマーク付きライト転送命令が正常に終了したことを知らせる終了リプライをＲＣＵ１３に送り、ＲＣＵ１３は、この終了リプライをＣＰＵ１１に返却してローカルノード１の処理が完了する。
【００８１】
一方、ＣＰＵ２１では、ＭＭＵ２２内のライト転送の先頭番地を読み出してＥＯＴマークの確認処理を繰り返しており、やがて読み出した値がＥＯＴマークであることを確認するとライト転送が完了したと認識し、次のシーケンスに移り一連の動作が完了となる。
【００８２】
以上のように構成することにより、ローカルノード１のＣＰＵ１１とネットワーク３との間でのＦＬＡＧ書き込み処理、つまり、ＦＬＡＧのセットとＦＬＡＧのクリアがなくなり、かつリモートノード２のＣＰＵ２１とネットワーク３との間でのＦＬＡＧ読み出し処理（ＦＬＡＧの値確認）の代わりに、リモートノード２内のＭＭＵ２２によるＥＯＴマーク固定番地の読み出し処理をすることになるので一連の動作が高速化される。
【００８３】
図１から図３に基づいて、本発明における分散メモリ型並列計算機におけるライト転送時のリモートノードにおける転送終了確認の動作について説明する。
【００８４】
まず、ローカルノード１において、ＣＰＵ１１からＲＣＵ１３に対して、リモートメモリ（ＭＭＵ２２）に対するＥＯＴマーク付きライト転送命令が発行される。
【００８５】
ＲＣＵ１３では、ＥＯＴマーク付きライト転送命令をリクエスト受付部１３１で受け付け、競合調停部１３３で競合調停後、アドレス変換部１３４において、物理ノード番号変換／リモートＪＯＢ番号変換／物理アドレス変換してＭＭＵ１２をアクセスする。そして、ＭＭＵ１２からのロードデータと物理ノード番号／リモートＪＯＢ番号を一緒にしてリクエスト／データ送出部１３５より、ＲＣＵ２３（ネットワーク３）に送出する。
【００８６】
次に、リモートノード２において、ＲＣＵ２３は、ＲＣＵ１３（ネットワーク３）よりＥＯＴマーク付きライト転送命令をリクエスト受付部２３１で受け付け、競合調停部２３３で競合調停して、アドレス変換部２３４で物理アドレス変換するのと同時にＥＯＴ判定部２３６においてＥＯＴマーク付きライト転送命令であることを認識し、セレクタ２３７においてデータの先頭要素をＥＯＴマークに置き換えるよう指示する。
【００８７】
また、データはデータ受付部２３２で受け付け、セレクタ２３７により先頭の要素のみがＥＯＴマークに置き換えられて、物理アドレスと一緒にＭＭＵ２２にライトされる。
【００８８】
ＲＣＵ２３は、ＲＣＵ１３からのＥＯＴマーク付きライト転送とＭＭＵ２２へのライト動作が正常終了したことの通知（終了リプライ）をリクエスト／データ送出部２３５からネットワーク３を経由してＲＣＵ１３に送り付け、ＲＣＵ１３は、この終了リプライをＣＰＵ１１に返却してＥＯＴマーク付きライト転送命令が完了する。
【００８９】
一方、リモートノードのＣＰＵ２１は、ＭＭＵ２２のＥＯＴマークが書き込まれるべき番地を読み出してチェックをする。この動作は、ＭＭＵ２２のＥＯＴマークが書き込まれるべき番地にＥＯＴマークが書き込まれるまで続く。やがて、ＭＭＵ２２にＲＣＵ２３によりＥＯＴマークが書き込まれ、ＣＰＵ２１がそれを確認することでライト転送が完了したと認識し、次のシーケンス（ＮＥＸＴ＿ＰＲＯＧＲＡＭ＿ＳＵＢ）に移り一連の動作が完了となる。
【００９０】
ここでは便宜上、各ユニット間／ユニット内のレイテンシを下記のように定めることにする。但し、Ｔとは本分散メモリ型並列計算機システムの１マシンクロックに相当するものとする。
【００９１】
１．  ＣＰＵ（１１，２１）／ＭＭＵ（１２，２２）間のレイテンシ：１Ｔ
２．  ＭＭＵ（１２，２２）／ＲＣＵ（１３，２３）間のレイテンシ：１Ｔ
３．  ネットワーク３／ＲＣＵ（１３，２３）間のレイテンシ      ：３Ｔ
４．  各ユニット内通過レイテンシ                              ：０Ｔ
【００９２】
このとき、本発明における構成例では、ローカルノードからライト転送命令が発行されてから、リモートノードが転送終了確認を行うまでの時間（ＣＰＵ２１がＭＭＵ２２のＥＯＴマークを確認するまで）は、１２Ｔとなる。
【００９３】
〈他の実施形態〉
図４は、本発明の他の実施形態である分散メモリ型並列計算機の動作例を示すタイミングチャートである。本発明の実施形態と異なる点は、ＥＯＴマークの差し替え位置が変更されている点にある。上述される実施形態において、転送データの先頭要素をＥＯＴマークに差し替えるのに対し、本発明の他の実施形態においては、転送データの最終要素をＥＯＴマークに差し替えるようにするものである。
【００９４】
まず、ローカルノード１において、ＣＰＵ１１からＲＣＵ１３に対して、リモートノード側のメモリ（ＭＭＵ２２）に対するＥＯＴマーク付きライト転送命令が発行される。
【００９５】
ＲＣＵ１３では、ＥＯＴマーク付きライト転送命令をリクエスト受付部１３１で受け付け、競合調停部１３３で競合調停した後、アドレス変換部１３４において、物理ノード番号変換／リモートＪＯＢ番号変換／物理アドレス変換してＭＭＵ１２にアクセスする。そして、ＭＭＵ１２からのロードデータと物理ノード番号／リモートＪＯＢ番号とを一緒にしてリクエスト／データ送出部１３５より、ネットワーク３を介してＲＣＵ２３に送出する。
【００９６】
次に、リモートノード２において、ＲＣＵ２３は、ネットワーク３を介してＲＣＵ１３からのＥＯＴマーク付きライト転送命令をリクエスト受付部２３１で受け付け、競合調停部２３３で競合調停し、アドレス変換部２３４で物理アドレス変換するのと同時にＥＯＴ判定部２３６においてＥＯＴマーク付きライト転送命令であることを認識し、セレクタ２３７においてデータの最終要素をＥＯＴマークに置き換えるよう指示する。また、データは、データ受付部２３２で受け付け、セレクタ２３７により最終の要素のみがＥＯＴマークに置き換えられて、物理アドレスと一緒にＭＭＵ２２に書き込まれる。
【００９７】
ＲＣＵ２３は、ＲＣＵ１３からのＥＯＴマーク付きライト転送とＭＭＵ２２へのライト動作が正常終了したことを示す「終了リプライ」をリクエスト／データ送出部２３５からネットワーク３を経由してＲＣＵ１３に送り付け、ＲＣＵ１３は、この終了リプライをＣＰＵ１１に返却してＥＯＴマーク付きライト転送命令が完了する。
【００９８】
一方、リモートノードのＣＰＵ２１は、ＭＭＵ２２のＥＯＴマークが書き込まれるべき番地を読み出してチェックをする。この動作は、ＭＭＵ２２のＥＯＴマークが書き込まれるべき番地にＥＯＴマークが書き込まれるまで続く。やがて、ＭＭＵ２２にＲＣＵ２３によりＥＯＴマークが書き込まれ、ＣＰＵ２１がそれを確認することでライト転送が完了したと認識し、次のシーケンスに移り一連の動作が完了となる。
【００９９】
このとき、本発明の他の実施形態における構成では、ローカルノードからライト転送命令が発行されてから、リモートノードが転送終了確認を行うまでの時間（ＣＰＵ２１がＭＭＵ２２のＥＯＴマークを確認するまで）は、２６Ｔとなる。
【０１００】
なお、上述される各実施形態は、本発明の好適な実施形態であり、本発明の要旨を逸脱しない範囲内において種々変形して実施することが可能である。
【０１０１】
例えば、各ユニット間におけるレイテンシ、ユニット内のレイテンシを固定値を用いて説明したものであるが、上述される値に限定されるものでない。
【０１０２】
また、上述される実施形態においては、転送データの１要素を４Ｂ幅または８Ｂ幅として説明するものであるが、そのデータ幅に限定されるものでない。
【０１０３】
【発明の効果】
以上の説明より明らかなように、本発明の分散メモリ型並列計算機及びそのデータ転送終了確認方法によれば、ローカルノードのＣＰＵによるライト転送の前処理（データ転送中であることをリモートノードのＣＰＵに示すＦＬＡＧの”１”セット）と後処理（データ転送が終了したことをリモートノードのＣＰＵに示すＦＬＡＧの”０”セット）をなくすことができる。その理由は、リモートノードのＲＣＵ内にＥＯＴ判定部とセレクタとを備えることにより、転送データそのものに転送終了マークを付けることにより、リモートノードのＣＰＵは転送データそのものを確認すればよいからである。
【０１０４】
また、本発明の分散メモリ型並列計算機及びそのデータ転送終了確認方法によれば、リモートノードのＣＰＵによるライト転送の終了確認処理が高速に行うことができる。その理由は、リモートノードのＣＰＵ内にＥＯＴ判定部とセレクタとを備えることにより、転送データそのものに転送終了マークを付けることができ、リモートノードのＣＰＵは同一ノード内のＭＭＵのＥＯＴマーク書き込み番地にアクセスすればよいので、確認の際のターンアラウンドタイムが大幅に短縮されるからである。
【０１０５】
また、本発明の分散メモリ型並列計算機及びそのデータ転送終了確認方法によれば、ライト転送確認処理が高速に行えるのでリモートノードにおけるデータ転送の次のシーケンスをより早いタイミングで実行することができ、システム全体の性能を向上することができる。その理由は、分散メモリ型プログラムでは、リモートノードのＭＭＵに対するライト転送処理は頻繁に現れ、本確認処理時間を短縮することにより、プログラム全体の実行時間が短縮されるからである。
【０１０６】
さらに、本発明の分散メモリ型並列計算機及びそのデータ転送終了確認方法によれば、排他制御の一般論理にも応用できる。つまり、ＥＯＴマーク付き転送とは、誰かがある場所を読みたいが、最新のデータが到着するまで読み出せない動作であり、これは例えば、ディスクに対する最新データ読み出し動作の高速化にも応用することが可能である。
【図面の簡単な説明】
【図１】本発明の実施形態である分散メモリ型計算機の概略構成を示すブロック図である。
【図２】本発明の実施形態におけるＲＣＵの概略構成を示すブロック図である。
【図３】本発明の実施形態である分散メモリ型計算機の動作例を示すタイミングチャートである。
【図４】本発明の他の実施形態である分散メモリ型計算機の動作例を示すタイミングチャートである。
【図５】従来の分散メモリ型計算機の概略構成を示すブロック図である。
【図６】従来の分散メモリ型計算機におけるＲＣＵ部の概略構成を示すブロック図である。
【図７】従来の分散メモリ型計算機の動作例を示すタイミングチャートである。
【符号の説明】
１  第１の計算ノード（ローカルノード）
２  第２の計算ノード（リモートノード）
３  ネットワーク
１１  ＣＰＵ（中央演算装置）
１２  ＭＭＵ（主記憶装置）
１３  ＲＣＵ（遠隔制御装置）
２１  ＣＰＵ（中央演算装置）
２２  ＭＭＵ（主記憶装置）
２３  ＲＣＵ（遠隔制御装置）
３１  通信レジスタ
【図１】
0003667585.tif 000002
【図２】
0003667585.tif 000003
【図３】
0003667585.tif 000004
【図４】
0003667585.tif 000005
【図５】
0003667585.tif 000006
【図６】
0003667585.tif 000007
【図７】
0003667585.tif 000008