(57)【特許請求の範囲】
【請求項１】
それぞれ，データを処理する中央処理装置と，該中央処理装置が発行するデータ転送要求コマンドによってデータを送受信する送受信制御装置とを備える複数のプロセッサを，相互結合網で接続した並列計算機システムにおいて，
前記送受信制御装置は，
転送要求回数をカウントする転送カウンタと，
前記中央処理装置が発行したデータ転送要求コマンドを受信し，受信したコマンドに基づくデータ転送依頼の処理を行うコマンド処理手段と，
前記コマンド処理手段からのデータ転送依頼を受け付け，データを要求された転送先のプロセッサへ転送する制御を行う転送制御手段とを備え，
前記コマンド処理手段は，
受信したデータ転送要求コマンド内に，転送完了の確認を必要とすることを示す転送確認指示情報が設定されている場合に，前記転送制御手段に対しそのコマンドに基づくデータ転送依頼を行う前に，前記転送カウンタをインクリメントする手段と，
受信したデータ転送要求コマンド内に，そのコマンド以前の転送の完了を待つことを指示する転送バリア指示情報が設定されている場合に，前記転送制御手段に対しそのコマンドに基づくデータ転送依頼を行う前に，前記転送カウンタの値が初期値になるまで待ち合わせる手段とを備え，
前記転送制御手段は，
前記コマンド処理手段からのデータ転送依頼によって，依頼されたデータの転送を実行する手段と，
そのデータ転送が完了したとき，前記データ転送要求コマンド内に前記転送確認指示情報が設定されていれば，前記転送カウンタをデクリメントする手段とを備え，
前記中央処理装置は，
前記転送確認指示情報を設定した１または複数のデータ転送要求コマンドを発行し前記送受信制御装置に送信する手段と，
それまでに発行した前記１または複数のデータ転送要求コマンドによる転送がすべて完了したことを確認する必要があるときに前記転送バリア指示情報を設定したデータ転送要求コマンドであって，自プロセッサ内におけるメモリ上の所定の領域に特定のデータを書き込むことを指示するコマンドを発行し，前記メモリ上の所定の領域に特定のデータが書き込まれたことを確認することによって，そのコマンド以前に発行した前記１または複数のデータ転送要求コマンドによる転送の完了を認識する手段とを備える
ことを特徴とする並列計算機システム。
【請求項２】
それぞれ，データを処理する中央処理装置と，該中央処理装置が発行するデータ転送要求コマンドによってデータを送受信する送受信制御装置とを備える複数のプロセッサを，相互結合網で接続した並列計算機システムにおいて，
前記送受信制御装置は，
転送要求回数をカウントする転送カウンタと，
前記中央処理装置が発行したデータ転送要求コマンドを受信し，受信したコマンドに基づくデータ転送依頼の処理を行うコマンド処理手段と，
前記コマンド処理手段からのデータ転送依頼を受け付け，データを要求された転送先のプロセッサへ転送する制御を行う転送制御手段とを備え，
前記コマンド処理手段は，
受信したデータ転送要求コマンド内に，転送完了の確認を必要とすることを示す転送確認指示情報が設定されている場合に，前記転送制御手段に対しそのコマンドに基づくデータ転送依頼を行う前に，前記転送カウンタをインクリメントする手段と，
受信したデータ転送要求コマンド内に，そのコマンド以前の転送の完了を待つことを指示する転送バリア指示情報が設定されている場合に，前記転送制御手段に対しそのコマンドに基づくデータ転送依頼を行う前に，前記転送カウンタの値が初期値になるまで待ち合わせる手段と，
受信したデータ転送要求コマンド内に，割り込みを発生させることを要求する割り込み指示情報が設定されている場合に，前記転送制御手段に前記データ転送要求コマンドで要求されたデータを転送することを依頼した後，該コマンドを発行した中央処理装置に割り込み要求信号を出力する手段とを備え，
前記転送制御手段は，
前記コマンド処理手段からのデータ転送依頼によって，依頼されたデータの転送を実行する手段と，
そのデータ転送が完了したとき，前記データ転送要求コマンド内に前記転送確認指示情報が設定されていれば，前記転送カウンタをデクリメントする手段とを備え，
前記中央処理装置は，
前記転送確認指示情報を設定した１または複数のデータ転送要求コマンドを発行し前記送受信制御装置に送信する手段と，
それまでに発行した前記１または複数のデータ転送要求コマンドによる転送がすべて完了したことを確認する必要があるときに前記転送バリア指示情報と前記割り込み指示情報とを設定したデータ転送要求コマンドを発行し，割り込みが発生したことによって，そのコマンド以前に発行した前記１または複数のデータ転送要求コマンドによる転送の完了を認識する手段とを備える
ことを特徴とする並列計算機システム。
【請求項３】
それぞれ，データを処理する中央処理装置と，該中央処理装置が発行するデータ転送要求コマンドによってデータを送受信する送受信制御装置とを備える複数のプロセッサを，相互結合網で接続した並列計算機システムにおいて，
前記送受信制御装置は，
応答要求回数をカウントする応答カウンタと，
前記中央処理装置が発行したデータ転送要求コマンドを受信し，受信したコマンドに基づくデータ転送依頼の処理を行うコマンド処理手段と，
前記コマンド処理手段からのデータ転送依頼を受け付け，データを要求された転送先のプロセッサへ転送する制御を行う転送制御手段とを備え，
前記コマンド処理手段は，
受信したデータ転送要求コマンド内に，応答受信の確認を必要とすることを示す応答要求指示情報が設定されている場合に，前記転送制御手段に対しそのコマンドに基づくデータ転送依頼を行う前に，前記応答カウンタをインクリメントする手段と，
受信したデータ転送要求コマンド内に，そのコマンド以前のデータ転送に対する応答を待つことを指示する応答バリア指示情報が設定されている場合に，前記転送制御手段に対しそのコマンドに基づくデータ転送依頼を行う前に，前記応答カウンタの値が初期値になるまで待ち合わせる手段とを備え，
前記転送制御手段は，
前記コマンド処理手段からのデータ転送依頼によって，依頼されたデータの転送を実行する手段と，
データ転送先からデータを受信したことを示す応答コマンドを受信したときに，前記応答カウンタをデクリメントする手段と，
他のプロセッサの送受信制御装置から前記応答要求指示情報が設定されているデータ転送要求コマンドに基づいて転送されたデータを受信した場合に，そのデータ転送元へ応答コマンドを返信する手段とを備え，
前記中央処理装置は，
前記応答要求指示情報を設定した１または複数のデータ転送要求コマンドを発行し前記送受信制御装置に送信する手段と，
それまでに発行した前記１または複数のデータ転送要求コマンドによる転送に対する応答をすべて受信したことを確認する必要があるときに前記応答バリア指示情報を設定したデータ転送要求コマンドであって，自プロセッサ内におけるメモリ上の所定の領域に特定のデータを書き込むことを指示するコマンドを発行し，前記メモリ上の所定の領域に特定のデータが書き込まれたことを確認することによって，そのコマンド以前に発行した前記１または複数のデータ転送要求コマンドによる転送に対する応答をすべて受信したことを認識する手段とを備える
ことを特徴とする並列計算機システム。
【請求項４】
それぞれ，データを処理する中央処理装置と，該中央処理装置が発行するデータ転送要求コマンドによってデータを送受信する送受信制御装置とを備える複数のプロセッサを，相互結合網で接続した並列計算機システムにおいて，
前記送受信制御装置は，
応答要求回数をカウントする応答カウンタと，
前記中央処理装置が発行したデータ転送要求コマンドを受信し，受信したコマンドに基づくデータ転送依頼の処理を行うコマンド処理手段と，
前記コマンド処理手段からのデータ転送依頼を受け付け，データを要求された転送先のプロセッサへ転送する制御を行う転送制御手段とを備え，
前記コマンド処理手段は，
受信したデータ転送要求コマンド内に，応答受信の確認を必要とすることを示す応答要求指示情報が設定されている場合に，前記転送制御手段に対しそのコマンドに基づくデータ転送依頼を行う前に，前記応答カウンタをインクリメントする手段と，
受信したデータ転送要求コマンド内に，そのコマンド以前のデータ転送に対する応答を待つことを指示する応答バリア指示情報が設定されている場合に，前記転送制御手段に対しそのコマンドに基づくデータ転送依頼を行う前に，前記応答カウンタの値が初期値になるまで待ち合わせる手段と，
受信したデータ転送要求コマンド内に，割り込みを発生させることを要求する割り込み指示情報が設定されている場合に，前記転送制御手段に前記データ転送要求コマンドで要求されたデータを転送することを依頼した後，該コマンドを発行した中央処理装置に割り込み要求信号を出力する手段とを備え，
前記転送制御手段は，
前記コマンド処理手段からのデータ転送依頼によって，依頼されたデータの転送を実行する手段と，
データ転送先からデータを受信したことを示す応答コマンドを受信したときに，前記応答カウンタをデクリメントする手段と，
他のプロセッサの送受信制御装置から前記応答要求指示情報が設定されているデータ転送要求コマンドに基づいて転送されたデータを受信した場合に，そのデータ転送元へ応答コマンドを返信する手段とを備え，
前記中央処理装置は，
前記応答要求指示情報を設定した１または複数のデータ転送要求コマンドを発行し前記送受信制御装置に送信する手段と，
それまでに発行した前記１または複数のデータ転送要求コマンドによる転送に対する応答をすべて受信したことを確認する必要があるときに前記応答バリア指示情報と前記割り込み指示情報とを設定したデータ転送要求コマンドを発行し，割り込みが発生したことによって，そのコマンド以前に発行した前記１または複数のデータ転送要求コマンドによる転送に対する応答をすべて受信したことを認識する手段とを備える
ことを特徴とする並列計算機システム。
【請求項５】
それぞれ，データを処理する中央処理装置と，該中央処理装置が発行するデータ転送要求コマンドによってデータを送受信する送受信制御装置とを備える複数のプロセッサを，相互結合網で接続した並列計算機システムにおける送受信制御装置が実行するデータ転送制御方法であって，
前記中央処理装置の発行したデータ転送要求コマンドを受信する過程と，
受信したデータ転送要求コマンド内に，転送完了の確認を必要とすることを示す転送確認指示情報が設定されている場合に，そのコマンドに基づくデータの転送を実行する前に，転送要求数をカウントする転送カウンタをインクリメントする過程と，
受信したデータ転送要求コマンド内に，そのコマンド以前の転送の完了を待つことを指示する転送バリア指示情報が設定されている場合に，そのコマンドに基づくデータの転送を実行する前に，前記転送カウンタの値が初期値になるまで待ち合わせる過程と，
受信したデータ転送要求コマンドに基づいて要求されたデータを転送先のプロセッサへ転送する過程と，
そのデータ転送が完了したとき，当該データ転送要求コマンド内に前記転送確認指示情報が設定されていれば，前記転送カウンタをデクリメントする過程とを有する
ことを特徴とするデータ転送制御方法。
【請求項６】
請求項５記載のデータ転送制御方法において，
前記転送カウンタを複数用い，前記転送カウンタをインクリメントする過程，前記転送カウンタの値が初期値になるまで待ち合わせる過程，および前記転送カウンタをデクリメントする過程では，前記データ転送要求コマンド内で指定された特定の転送カウンタを対象としてその転送カウンタの値の操作または参照を行う
ことを特徴とするデータ転送制御方法。
【請求項７】
それぞれ，データを処理する中央処理装置と，該中央処理装置が発行するデータ転送要求コマンドによってデータを送受信する送受信制御装置とを備える複数のプロセッサを，相互結合網で接続した並列計算機システムにおける送受信制御装置が実行するデータ転送制御方法であって，
前記中央処理装置の発行したデータ転送要求コマンドを受信する過程と，
受信したデータ転送要求コマンド内に，応答受信の確認を必要とすることを示す応答要求指示情報が設定されている場合に，そのコマンドに基づくデータの転送を実行する前に，応答要求回数をカウントする応答カウンタをインクリメントする過程と，
受信したデータ転送要求コマンド内に，そのコマンド以前のデータ転送に対する応答を待つことを指示する応答バリア指示情報が設定されている場合に，そのコマンドに基づくデータの転送を実行する前に，前記応答カウンタの値が初期値になるまで待ち合わせる過程と，
受信したデータ転送要求コマンドに基づいて要求されたデータを転送先のプロセッサへ転送する過程と，
データ転送先からデータを受信したことを示す応答コマンドを受信したときに，前記応答カウンタをデクリメントする過程と，
他のプロセッサの送受信制御装置から前記応答要求指示情報が設定されているデータ転送要求コマンドに基づいて転送されたデータを受信した場合に，そのデータ転送元へ応答コマンドを返信する過程とを有する
ことを特徴とするデータ転送制御方法。
【請求項８】
請求項７記載のデータ転送制御方法において，
前記応答カウンタを複数用い，前記応答カウンタをインクリメントする過程，前記応答カウンタの値が初期値になるまで待ち合わせる過程，および前記応答カウンタをデクリメントする過程では，前記データ転送要求コマンド内で指定された特定の応答カウンタを対象としてその応答カウンタの値の操作または参照を行う
ことを特徴とするデータ転送制御方法。
【請求項９】
請求項５から請求項８までのいずれか１項に記載のデータ転送制御方法において，
前記送受信制御装置が，受信したデータ転送要求コマンド内に，割り込みを発生させることを要求する割り込み指示情報が設定されている場合に，そのコマンドに基づくデータの転送の処理の後，該コマンドを発行した中央処理装置に割り込み要求信号を出力する過程を有する
ことを特徴とするデータ転送制御方法。
【請求項１０】
それぞれ，データを処理する中央処理装置と，該中央処理装置が発行するデータ転送要求コマンドによってデータを送受信する送受信制御装置とを備える複数のプロセッサを，相互結合網で接続した並列計算機システムにおける送受信制御装置であって，
転送要求回数をカウントする転送カウンタと，
前記中央処理装置が発行したデータ転送要求コマンドを受信し，受信したコマンドに基づくデータ転送依頼の処理を行うコマンド処理手段と，
前記コマンド処理手段からのデータ転送依頼を受け付け，データを要求された転送先のプロセッサへ転送する制御を行う転送制御手段とを備え，
前記コマンド処理手段は，
受信したデータ転送要求コマンド内に，転送完了の確認を必要とすることを示す転送確認指示情報が設定されている場合に，前記転送制御手段に対しそのコマンドに基づくデータ転送依頼を行う前に，前記転送カウンタをインクリメントする手段と，
受信したデータ転送要求コマンド内に，そのコマンド以前の転送の完了を待つことを指示する転送バリア指示情報が設定されている場合に，前記転送制御手段に対しそのコマンドに基づくデータ転送依頼を行う前に，前記転送カウンタの値が初期値になるまで待ち合わせる手段とを備え，
前記転送制御手段は，
前記コマンド処理手段からのデータ転送依頼によって，依頼されたデータの転送を実行する手段と，
そのデータ転送が完了したとき，前記データ転送要求コマンド内に前記転送確認指示情報が設定されていれば，前記転送カウンタをデクリメントする手段とを備える
ことを特徴とする送受信制御装置。
【請求項１１】
請求項１０記載の送受信制御装置において，
前記転送カウンタを複数備え，
前記転送カウンタをインクリメントする手段は，前記データ転送要求コマンド内で指定された特定の転送カウンタを対象としてその転送カウンタをインクリメントし，
前記転送カウンタの値が初期値になるまで待ち合わせる手段は，前記データ転送要求コマンド内で指定された特定の転送カウンタを対象としてその値の参照により待ち合わせを行い，
前記転送カウンタをデクリメントする手段は，前記データ転送要求コマンド内で指定された特定の転送カウンタを対象としてその転送カウンタをデクリメントする
ことを特徴とする送受信制御装置。
【請求項１２】
それぞれ，データを処理する中央処理装置と，該中央処理装置が発行するデータ転送要求コマンドによってデータを送受信する送受信制御装置とを備える複数のプロセッサを，相互結合網で接続した並列計算機システムにおける送受信制御装置であって，
応答要求回数をカウントする応答カウンタと，
前記中央処理装置が発行したデータ転送要求コマンドを受信し，受信したコマンドに基づくデータ転送依頼の処理を行うコマンド処理手段と，
前記コマンド処理手段からのデータ転送依頼を受け付け，データを要求された転送先のプロセッサへ転送する制御を行う転送制御手段とを備え，
前記コマンド処理手段は，
受信したデータ転送要求コマンド内に，応答受信の確認を必要とすることを示す応答要求指示情報が設定されている場合に，前記転送制御手段に対しそのコマンドに基づくデータ転送依頼を行う前に，前記応答カウンタをインクリメントする手段と，
受信したデータ転送要求コマンド内に，そのコマンド以前のデータ転送に対する応答を待つことを指示する応答バリア指示情報が設定されている場合に，前記転送制御手段に対しそのコマンドに基づくデータ転送依頼を行う前に，前記応答カウンタの値が初期値になるまで待ち合わせる手段とを備え，
前記転送制御手段は，
前記コマンド処理手段からのデータ転送依頼によって，依頼されたデータの転送を実行する手段と，
データ転送先からデータを受信したことを示す応答コマンドを受信したときに，前記応答カウンタをデクリメントする手段と，
他のプロセッサの送受信制御装置から前記応答要求指示情報が設定されているデータ転送要求コマンドに基づいて転送されたデータを受信した場合に，そのデータ転送元へ応答コマンドを返信する手段とを備える
ことを特徴とする送受信制御装置。
【請求項１３】
請求項１２記載の送受信制御装置において，
前記応答カウンタを複数備え，
前記応答カウンタをインクリメントする手段は，前記データ転送要求コマンド内で指定された特定の応答カウンタを対象としてその応答カウンタをインクリメントし，
前記応答カウンタの値が初期値になるまで待ち合わせる手段は，前記データ転送要求コマンド内で指定された特定の応答カウンタを対象としてその値の参照により待ち合わせを行い，
前記応答カウンタをデクリメントする手段は，前記データ転送要求コマンド内で指定された特定の応答カウンタを対象としてその応答カウンタをデクリメントする
ことを特徴とする送受信制御装置。
【請求項１４】
請求項１０から請求項１３までのいずれか１項に記載の送受信制御装置において，
前記コマンド処理手段は，
受信したデータ転送要求コマンド内に，割り込みを発生させることを要求する割り込み指示情報が設定されている場合に，前記転送制御手段に前記データ転送要求コマンドで要求されたデータを転送することを依頼した後，該コマンドを発行した中央処理装置に割り込み要求信号を出力する手段を備える
ことを特徴とする送受信制御装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は，複数のプロセッサを相互結合網で接続した並列計算機システムにおいて，データ転送の完了またはデータが送信先プロセッサに転送されたことを確認できるようにした並列計算機システム，データ転送制御方法および送受信制御装置に関する。
【０００２】
並列計算機システムにおいては，各プロセッサが同期をとって行わなければならない処理が頻繁に現れ，これに伴って，プロセッサ間通信におけるデータ転送の完了またはデータが送信先プロセッサに転送されたことを確認することが必要になる場合が多くある。そのための効率的な確認手段が必要になる。
【０００３】
【従来の技術】
並列計算機においては，プロセッサ間のデータ転送は全体の性能に大きく影響する。転送のオーバヘッドを削減する一つの方法として，データ転送を制御する送受信制御装置を設け，プロセッサが，送受信制御装置にデータ転送要求をデータ転送要求コマンドとして発行し，プロセッサ自身は他の処理を行う方法が用いられる。
【０００４】
従来，このような並列計算機システムでは，データ転送要求をするプロセッサが，特に複数の要求をまとめて出した場合に，それらのデータ転送の完了および応答メッセージの受信を，効率的に知る手段がなかった。そのため，例えばあるプロセッサＡが，他の３台のプロセッサＢ，Ｃ，Ｄにデータを転送することを送受信制御装置に要求した場合，送受信制御装置がそのデータ転送をいつ完了したかを知ることはできなかった。また，あるプロセッサＡが他の３台のプロセッサＢ，Ｃ，Ｄに対して応答を必要とするデータ転送を行い，それらのすべてのプロセッサＢ，Ｃ，Ｄから応答が返ったことを確認しようとした場合に，プロセッサＡは，受信した応答を解析して，一つ一つどこからの応答であるかを調べ，管理しなければならなかった。または，時間監視を行い，ある一定時間が経過したときに転送が完了したものとして，もしくは応答を受領したものとして処理を進める必要があった。
【０００５】
【発明が解決しようとする課題】
以上のように従来技術では，データ転送要求をするプロセッサがデータ転送の完了および応答（メッセージ）の受信を効率的に知る手段がなかった。データ転送の確認をしないでそのまま処理を続行した場合，転送プロセッサでは，まだ転送されていない領域にデータを書き込む可能性がある。また，複数のデータ転送を行った後，プロセッサ全体でバリア同期をとり，次の処理に入るという並列処理においては，データ転送を行ったプロセッサは，自分が転送したデータが送信先プロセッサに確実に到着していることを保証する必要がある。そうしないと，例えば送信先プロセッサでは，データ転送が完了していない古いデータを読み込む可能性があるからである。
【０００６】
また，複数のプロセッサにデータ転送を行う場合に，データ転送を一つずつ行い，各データ転送ごとに転送完了または応答受信の確認をとって，次のプロセッサへのデータ転送へ移るようにすることも考えられるが，その場合，データ転送時間が長くかかるという問題がある。
【０００７】
本発明は上記問題点の解決を図り，並列計算機システムにおけるプロセッサ間通信において，複数のデータ転送を連続して行った場合でも，それらのデータ転送の完了またはデータが送信先プロセッサに転送されたことを効率的に確認する有効な手段を与えることを目的とする。
【０００８】
【課題を解決するための手段】
本発明は，例えば図２に示すような複数のプロセッサ３０を相互結合網（ネットワーク）３３で結合した並列計算機システムにおいて，図１に示すような送受信制御装置１０を用いる。送受信制御装置１０は，中央処理装置（ＣＰＵ）３１からのデータ転送要求コマンドによるデータ転送要求により，相互結合網３３を介して他のプロセッサ３０へデータを転送する制御を行うものである。データ転送先は自プロセッサでもよい。
【０００９】
送受信制御装置１０は，転送要求回数をカウントする転送カウンタ１４を持ち，転送完了の確認を必要とすることを示す転送確認フラグがアクティブであるデータ転送要求コマンドを実行するときに転送カウンタ１４をインクリメントし，その転送が完了すると転送カウンタ１４をデクリメントする。転送カウンタ１４の初期値が０であるとすると，転送要求回数がカウントされた後，転送カウンタ１４が０になったかどうかにより転送完了を確認することができる。
【００１０】
また，送受信制御装置１０は，応答要求回数をカウントする応答カウンタ１７を持ち，応答受信の確認を必要とすることを示す応答要求フラグがアクティブであるデータ転送要求コマンドを実行するときに応答カウンタ１７をインクリメントし，それに対する応答を受信すると応答カウンタ１７をデクリメントする。応答カウンタ１７の初期値が０であるとすると，応答要求回数がカウントされた後，応答カウンタ１７が０になったかどうかにより全応答の受信を確認することができる。
【００１１】
転送カウンタ１４，応答カウンタ１７によるデータ転送の完了またはデータが送信先プロセッサに転送されたことを，ＣＰＵ３１が認識できるようにするため，ＣＰＵ３１が発行するデータ転送要求コマンドには，送受信制御装置１０に対する指示手段として，以下のようなフラグが設けられる。
【００１２】
（１）転送確認フラグ
転送確認フラグは，そのフラグが設定されたデータ転送要求コマンドが転送完了の確認を必要とするコマンドであることを示すものである。
【００１３】
（２）転送バリアフラグ
転送バリアフラグは，そのフラグが設定されたデータ転送要求コマンドを実行する場合，そのコマンド以前に発行された転送の完了を待つことを指示するものである。すなわち，転送バリアフラグが有効であるときには，そのコマンド以前のデータ転送がすべて完了してから，そのデータ転送要求コマンドによる次の転送を開始する。ここで待ち合わせの対象となる先行コマンドは，転送確認フラグが設定されたデータ転送要求コマンドであるが，転送確認フラグを設けずに，すべての先行するデータ転送要求コマンドを待ち合わせの対象としてもよい。
【００１４】
（３）応答要求フラグ
応答要求フラグは，送信先プロセッサにデータの転送が完了したことを示す応答メッセージを，送信先プロセッサから返答してもらうことを要求するフラグであって，応答受信の確認を必要とすることを示すものである。
【００１５】
（４）応答バリアフラグ
応答バリアフラグは，そのフラグが設定されたデータ転送要求コマンドを実行する場合，そのコマンド以前に発行されたコマンドに対する転送のすべての応答を待つことを指示するものである。すなわち，応答バリアフラグが有効であるときには，そのコマンド以前のデータ転送に対する応答をすべて受信してから，そのデータ転送要求による次の転送を開始する。ここで待ち合わせの対象となる先行コマンドは，応答要求フラグが設定されたデータ転送要求コマンドであるが，応答要求フラグを設けずに，すべての先行するデータ転送要求コマンドを待ち合わせの対象としてもよい。
【００１６】
（５）割り込みフラグ
割り込みフラグは，そのフラグが設定されたデータ転送要求コマンドが実行されたときに，割り込みを発生させることを指示するものである。
【００１７】
ＣＰＵ３１は，転送バリアフラグがアクティブで，メモリ３２にデータを書き込むデータ転送要求コマンドを発行することより，データ転送完了をメモリ３２上のデータで知ることができる。
【００１８】
他の方法として，ＣＰＵ３１は，転送バリアフラグがアクティブで，割り込みを発生させる割り込みフラグがアクティブで，転送を行わない転送要求コマンドを発行することより，データ転送完了を割り込みで知ることができる。
【００１９】
また，ＣＰＵ３１は，応答バリアフラグがアクティブで，メモリ３２にデータを書き込むデータ転送要求コマンドを発行することにより，データ転送に対する応答をすべて受信したことをメモリ３２上のデータで知ることができる。
【００２０】
他の方法として，ＣＰＵ３１は，応答バリアフラグがアクティブで，割り込みを発生させる割り込みフラグがアクティブで，転送を行わない転送要求コマンドを発行することにより，データ転送に対する応答をすべて受信したことを割り込みで知ることができる。
【００２１】
転送カウンタ１４または応答カウンタ１７は，転送するデータの種類に応じて複数設けるようにしてもよい。転送カウンタ１４または応答カウンタ１７を複数設けた場合には，前述したフラグを転送カウンタ１４または応答カウンタ１７ごとに設けるか，またはデータ転送要求コマンド内にどの転送カウンタ１４または応答カウンタ１７を対象とするかの識別情報を設けることなどにより，必要とするデータ転送の完了または応答の受信だけを待ち合わせる。
【００２２】
【作用】
本発明は，例えば以下のように実現される。
１．データ転送要求コマンド内にそのコマンド以前の転送の完了を待つことを指示する転送バリアフラグを持つことにより，そのコマンド以前のデータ転送がすべて完了してから次の転送を開始することを可能とする。
【００２３】
２．データ転送要求コマンド内にそのコマンド以前の転送の応答を待つことを指示する応答バリアフラグを持つことにより，そのコマンド以前のデータ転送を送信先プロセッサが受け取ったことを確認してから次の転送を開始することを可能とする。
【００２４】
３．データ転送要求コマンド内に転送確認フラグを持つことにより，転送制御部１３に対し，データ転送完了の確認が必要であることを要求できるようにする。
【００２５】
４．データ転送要求コマンド内に応答要求フラグを持つことにより，送信先プロセッサにデータの転送が完了したことを示す応答（メッセージ）を，送信先プロセッサから返答してもらうことを要求する。
【００２６】
５．転送カウンタ１４を持ち，転送完了の確認を必要とする（転送確認フラグがアクティブな）データ転送要求コマンドが実行されると，転送カウンタ１４をインクリメントし，転送が完了すると転送カウンタ１４をデクリメントすることにより，転送完了の確認を必要とするデータ転送要求コマンドに対する転送が完了したことを確認する。
【００２７】
６．応答カウンタ１７を持ち，応答を必要とする（応答要求フラグがアクティブな）データ転送要求コマンドが実行されると，応答カウンタ１７をインクリメントし，応答を受信すると応答カウンタ１７をデクリメントすることにより，応答を必要とするデータ転送要求コマンドに対する応答をすべて受信したことを確認する。
【００２８】
７．転送バリアフラグがアクティブなデータ転送要求コマンドにおいて，転送カウンタ１４が０になるまで待ち合わせ，先行コマンドの転送完了を待ち合わせる。
【００２９】
８．応答バリアフラグがアクティブなデータ転送要求コマンドにおいて，応答カウンタ１７が０になるまで待ち合わせ，先行コマンドの転送に対する応答を待ち合わせる。
【００３０】
９．転送バリアフラグがアクティブで，メモリ３２にデータを書き込むデータ転送要求コマンドを発行することにより，データ転送完了をメモリ３２上のデータで知ることを可能とする。
【００３１】
１０．応答バリアフラグがアクティブで，メモリ３２にデータを書き込むデータ転送要求コマンドを発行することにより，データ転送に対する応答をすべて受信したことをメモリ３２上のデータで知ることを可能とする。
【００３２】
１１．転送バリアフラグがアクティブで，割り込みを発生させる割り込みフラグがアクティブで，転送を行わない転送要求コマンドを発行することより，データ転送完了を割り込みによって知ることを可能とする。
【００３３】
１２．応答バリアフラグがアクティブで，割り込みを発生させる割り込みフラグがアクティブで，転送を行わない転送要求コマンドを発行することにより，データ転送に対する応答をすべて受信したことを割り込みによって知ることを可能とする。
【００３４】
１３．転送カウンタ１４を複数持ち，データ転送要求コマンド内に対象とする転送カウンタ１４を示す転送確認フラグを持ち，対象とする転送カウンタ１４を示す転送バリアフラグを持つことにより，必要とするデータ転送の完了だけを待ち合わせることを可能とする。
【００３５】
１４．応答カウンタ１７を複数持ち，データ転送要求コマンド内に対象とする応答カウンタ１７を示す応答要求フラグを持ち，対象とする応答カウンタ１７を示す応答バリアフラグを持つことにより，必要とするデータ転送の応答だけを待ち合わせることを可能とする。
【００３６】
【実施例】
図１は本発明の実施例に係る送受信制御装置のブロック図，図２は本発明を適用する並列計算機システムの構成例を示す。
【００３７】
例えば図２に示すように，各プロセッサ３０は，中央処理装置（ＣＰＵ）３１，メモリ３２，送受信制御装置１０から構成され，相互結合網（ネットワーク）３３を介してデータ転送を行う。
【００３８】
図１に示す送受信制御装置１０において，転送要求コマンドキュー１１は，ＣＰＵ３１からのデータ転送要求コマンドを，ＦＩＦＯ（First In First Out）により処理するためにキューイングするものである。コマンド処理部１２は，転送要求コマンドキュー１１からデータ転送要求コマンドをデキューイングし，そのコマンドを解釈して処理するものである。転送制御部１３は，データ転送要求コマンドが他のプロセッサ３０への転送要求である場合に，コマンド処理部１２からの依頼により，メモリ制御部１６を介してメモリ３２から読み出したデータを，相互結合網３３によって他のプロセッサ３０に転送する制御を行うものである。一つまたは複数のデータ転送を行うことができる。転送カウンタ１４は，転送要求回数をカウントする計数手段である。
【００３９】
メモリ制御部１６は，メモリ３２への転送データの書き込み，およびメモリ３２からの転送データの読み出しを制御するものである。応答カウンタ１７は，応答要求回数をカウントする計数手段である。受信バッファ１８は，相互結合網３３を介して送られてきたメッセージを一時的に格納するバッファである。受信制御部１９は，受信したメッセージを解釈し，転送データについてはメモリ制御部１６を介してメモリ３２へ書き込み，また，応答が必要なメッセージについてはそれに対する応答コマンドを応答コマンドキュー２０にキューイングする制御を行うものである。コマンド処理部２１は，応答コマンドキュー２０から応答コマンドをデキューイングして，転送制御部２２を起動するものである。転送制御部２２は，応答メッセージを相互結合網３３を介してデータ転送元のプロセッサ３０へ返送する制御を行うものである。
【００４０】
なお，コマンド処理部１２とコマンド処理部２１，転送制御部１３と転送制御部２２とは，それぞれ共通化してもよい。
送受信制御装置１０が扱うコマンドのフォーマットは，例えば図３に示すようになっている。
【００４１】
データ転送要求コマンドは，図３（Ａ）に示すように，データ転送要求であることを示すコマンド識別子（ＰＵＴ）と，各種フラグと，送信相手のプロセッサを示す送信先プロセッサＩＤと，自プロセッサの識別子である送信元プロセッサＩＤと，メッセージ転送サイズと，転送データが格納されている送信元のメモリアドレスと，転送データを格納する送信先のメモリアドレスとからなる。各種フラグとしては，転送確認フラグ，応答要求フラグ，転送バリアフラグ，応答バリアフラグ，割り込みフラグ等がある。
【００４２】
応答要求フラグが“１”であるデータ転送要求コマンドを受信したプロセッサが応答する応答コマンドは，図３（Ｂ）に示すように，応答であることを示すコマンド識別子（ＡＣＫ）と，応答の送信先プロセッサＩＤ（すなわち，データ転送要求コマンドを発行したプロセッサの識別子）とからなる。
【００４３】
他に，特別なデータ転送要求コマンドであって，実際にはデータ転送をしないことを示すＮＯＰコマンドがある。ＮＯＰコマンドは，図３（Ｃ）に示すように，データ転送をしないことを示すコマンド識別子（ＮＯＰ）と，図３（Ａ）と同様な各種フラグとからなる。
【００４４】
図１に示すコマンド処理部１２，２１は，図３に示すコマンドに対して，図４に示す処理を行う。
処理４０１により，転送要求コマンドキュー１１または応答コマンドキュー２０から，送信要求のコマンドを取り出す。処理４０２によりコマンド種別を判定し，コマンドがＡＣＫであれば，処理４０３によって，転送制御部２２に対し応答コマンドの送信を依頼する。その後，コマンド処理を終了する。
【００４５】
コマンドがデータ転送要求コマンドまたはＮＯＰコマンドであれば，処理４０４により，そのコマンドにおける応答バリアフラグが“１”であるかどうかを判定する。応答バリアフラグが“０”であれば，処理４０６へ進む。応答バリアフラグが“１”であれば，処理４０５により，応答カウンタ１７が０になるまで次の処理を待ち合わせる。
【００４６】
処理４０６では，転送バリアフラグが“１”であるかどうかを判定する。転送バリアフラグが“０”であれば，処理４０８へ進む。転送バリアフラグが“１”であれば，処理４０７により，転送カウンタ１４が０になるまで次の処理を待ち合わせる。
【００４７】
処理４０８では，応答要求フラグが“１”であるかどうかを判定する。応答要求フラグが“０”であれば，処理４１０へ進む。応答要求フラグが“１”であれば，処理４０９により，応答カウンタ１７をインクリメントする。
【００４８】
処理４１０では，転送確認フラグが“１”であるかどうかを判定する。転送確認フラグが“０”であれば，処理４１２へ進む。転送確認フラグが“１”であれば，処理４１１により，転送カウンタ１４をインクリメントする。
【００４９】
次に，処理４１２では，コマンドがＮＯＰコマンドであるかどうかを判定する。ＮＯＰコマンドであれば，処理４１３をスキップし，処理４１４へ進む。ＮＯＰコマンドでない場合には，処理４１３により，転送制御部１３に対してデータ転送を依頼する。
【００５０】
処理４１４では，割り込みフラグが“１”であるかどうかを判定する。割り込みフラグが“０”であれば，コマンド処理を終了する。割り込みフラグが“１”であれば，処理４１５により，ＣＰＵ３１に対する割り込み信号を出力し割り込み要求を行う。その後，処理を終了する。
【００５１】
図１に示す受信制御部１９は，図５に示すように，受信したメッセージの種類に応じて以下の処理を行う。
まず，処理５０１により，受信バッファ１８から受信コマンドを取り出す。そして，処理５０２によりコマンド種別を判定し，コマンドがＡＣＫであれば，処理５０３によって，応答カウンタ１７をデクリメントする。その後，処理を終了する。
【００５２】
コマンド種別がＡＣＫでない（応答コマンドでない）場合，処理５０４により，メッセージ転送サイズが０であるかどうかを判定し，メッセージ転送サイズが０になるまで，処理５０５，処理５０６を繰り返す。メッセージ転送サイズが０になったならば，処理５０７へ進む。
【００５３】
処理５０５では，送信先アドレスとして指定されたメモリ３２のアドレスに，メモリ制御部１６を介してデータを書き込む。そして，処理５０６によりメッセージ転送サイズをデクリメントする。
【００５４】
データの書き込みが終了したならば，処理５０７により，応答要求フラグが“１”であるかどうかを判定する。応答要求フラグが“０”であれば，処理を終了する。応答要求フラグが“１”であれば，処理５０８により応答コマンドを発行し，応答コマンドキュー２０にキューイングする。その後，処理を終了する。
【００５５】
図１に示す転送制御部１３は，コマンド処理部１２からのデータ転送依頼に対し，図６に示すような処理を行う。転送制御部２２の処理も同様である。
処理６０１により，コマンド処理部１２からのデータ転送依頼を受け付けたならば，以下の処理を行う。処理６０２により，メッセージ転送サイズが０であるかどうかを判定し，メッセージ転送サイズが０になるまで，処理６０３，処理６０４を繰り返す。メッセージ転送サイズが０になったならば，処理６０５へ進む。
【００５６】
処理６０３では，送信元アドレスとして指定されたメモリ３２のアドレスから，メモリ制御部１６を介してデータを読み出し，相互結合網３３へ送信する。なお，送信先プロセッサＩＤが自プロセッサであれば，送信先アドレスとして指定されたメモリ３２のアドレスに，データを書き込む。次に，処理６０４によりメッセージ転送サイズをデクリメントする。
【００５７】
データの転送が終了したならば，処理６０５により，転送確認フラグが“１”であるかどうかを判定する。転送確認フラグが“０”であれば，処理を終了する。転送確認フラグが“１”であれば，処理６０６により転送カウンタ１４をデクリメントし，処理を終了する。
【００５８】
ＣＰＵ３１は，例えば次のようにデータ転送要求コマンドを使用し，他のプロセッサへのデータ転送が完了したことを確認することができる。データの送信先プロセッサとして，Ａ，Ｂ，Ｃのプロセッサがあったとする。
【００５９】
まず，自プロセッサのメモリ３２における同期用に確保した任意のデータ領域を０に初期化する。そして，次のようなデータ転送要求コマンドを順次発行する。
【００６０】
１．プロセッサＡへのデータ転送要求（転送確認フラグ＝１）を発行。
２．プロセッサＢへのデータ転送要求（転送確認フラグ＝１）を発行。
３．プロセッサＣへのデータ転送要求（転送確認フラグ＝１）を発行。
【００６１】
４．自プロセッサへのデータ転送要求（転送バリアフラグ＝１）を発行。この自プロセッサへの転送は，上記のデータ領域を１にするコマンドを指定する。
４番目の転送の実行は，転送バリアフラグが“１”であるから，１から３番目の転送が終了するのを待ってから行われる。したがって，ＣＰＵ３１は，４番目のコマンドで指定したデータ領域が１になるのを確認することにより，データ転送が完了したことを確認することができる。
【００６２】
また，ＣＰＵ３１は，例えば次のようにデータ転送要求コマンドを使用し，転送したデータを送信先プロセッサが受け取ったことを確認することができる。データの送信先プロセッサとして，Ａ，Ｂ，Ｃのプロセッサがあったとする。
【００６３】
まず，自プロセッサのメモリ３２における同期用に確保した任意のデータ領域を０に初期化する。そして，次のようなデータ転送要求コマンドを順次発行する。
【００６４】
１．プロセッサＡへのデータ転送要求（応答要求フラグ＝１）を発行。
２．プロセッサＢへのデータ転送要求（応答要求フラグ＝１）を発行。
３．プロセッサＣへのデータ転送要求（応答要求フラグ＝１）を発行。
【００６５】
４．自プロセッサへのデータ転送要求（応答バリアフラグ＝１）を発行。この自プロセッサへの転送は，上記のデータ領域を１にするコマンドを指定する。
４番目の転送の実行は，応答バリアフラグが“１”であるから，１から３番目の転送に対する応答を受信するのを待ってから行われる。したがって，ＣＰＵ３１は，４番目のコマンドで指定したデータ領域が１になるのを確認することにより，データが送信先プロセッサＡ，Ｂ，Ｃのすべてに転送されたことを確認することができる。
【００６６】
図１に示す転送カウンタ１４を複数設け，転送要求回数のカウントを，転送するデータの種類ごとに行うようにすることもできる。転送カウンタ１４を複数用意した場合，どの転送カウンタ１４を用いるかについては，例えば転送カウンタ１４の識別番号をデータ転送要求コマンド（ＮＯＰコマンドを含む）に設定することにより決めることができる。また，転送確認フラグ，転送バリアフラグを各転送カウンタ１４に対応して設けることにより，カウント対象の転送カウンタ１４を決めることもできる。
【００６７】
同様に，図１に示す応答カウンタ１７を複数設け，応答要求回数のカウントを，必要なデータの種類ごとに行うようにすることもできる。応答カウンタ１７を複数用意した場合，どの応答カウンタ１７を用いるかについては，例えば応答カウンタ１７の識別番号をデータ転送要求コマンド（ＮＯＰコマンドを含む）に設定することにより決めることができる。また，応答要求フラグ，応答バリアフラグを各応答カウンタ１７に対応して設けることにより，カウント対象の応答カウンタ１７を決めることもできる。
【００６８】
【発明の効果】
以上説明したように，本発明によれば，データ転送の完了またはデータが送信先プロセッサに転送され届いたことを，ＣＰＵは少ないオーバヘッドで簡単に確認することができる。特に，転送バリアフラグまたは応答バリアフラグを設定したコマンドを，先行コマンドの転送完了または応答受信の確認が必要なときに発行し，転送完了または応答受信を待つことにより，データ転送を一つずつ同期を取って行うのではなく，複数連続して実行し，データ転送時間を短縮することができる。また，例えば同一のプロセッサ宛に複数のデータ転送を行う場合，受信順序が保証される相互結合網では，同期を必要とする最後の送信コマンドに対してのみ，応答要求を付けることにより，不必要な応答コマンドの送受信を削減することができる。
【図面の簡単な説明】
【図１】本発明の実施例に係る送受信制御装置のブロック図である。
【図２】本発明を適用する並列計算機システムの構成例を示す図である。
【図３】送受信制御装置が扱うコマンドの例を示す図である。
【図４】本発明の実施例によるコマンド処理シーケンスを示す図である。
【図５】本発明の実施例による受信制御シーケンスを示す図である。
【図６】本発明の実施例による転送制御シーケンスを示す図である。
【符号の説明】
１０    送受信制御装置
１１    転送要求コマンドキュー
１２    コマンド処理部
１３    転送制御部
１４    転送カウンタ
１６    メモリ制御部
１７    応答カウンタ
１８    受信バッファ
１９    受信制御部
２０    応答コマンドキュー
２１    コマンド処理部
２２    転送制御部
【図１】
0003639319.tif 000002
【図２】
0003639319.tif 000003
【図３】
0003639319.tif 000004
【図４】
0003639319.tif 000005
【図５】
0003639319.tif 000006
【図６】
0003639319.tif 000007