(57)【要約】    【課題】  計算機ジョブを分割して複数の子プロセスで並列処理を行う並列ジョブのＴＡＴを短縮し、システム効率を高めることのできる、並列処理システムを提供する。    【解決手段】  複数のノード１、２がインタコネクションネットワーク５０を介して相互に接続され、ノードに備える計算機で実行される親プロセスにより計算機ジョブを並列ジョブに分割し、並列ジョブを複数のノードに配置された複数の計算機による複数の子プロセスで並列処理する並列処理システムであって、子プロセスの中で最も処理の遅れている子プロセスからの転送処理を、インタコネクションネットワーク５０で他の転送処理よりも優先して処理することを特徴とする。【選択図】      図１
2006085428.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードがインタコネクションネットワークを介して相互に接続され、前記ノードに配置された計算機で実行される親プロセスにより計算機ジョブを並列ジョブに分割し、前記並列ジョブを複数のノードに配置された前記複数の計算機による前記複数の子プロセスで処理する並列処理システムであって、
前記子プロセスの中で処理の遅れている子プロセスからの前記インタコネクションネットワークによる転送処理を、他の転送処理よりも優先して処理することを特徴とする並列処理システム。
【請求項２】
前記複数の子プロセスで実行される処理が計算処理と計算結果転送処理で構成され、前記計算結果転送処理は前記計算処理の終了後になされ、前記子プロセスからの転送処理が前記計算結果転送処理であることを特徴とする請求項１に記載の並列処理システム。
【請求項３】
前記他の転送処理は、前記親プロセスとは別の親プロセスと当該親プロセスの子プロセスとの間でなされる転送処理であることを特徴とする請求項２に記載の並列処理システム。
【請求項４】
実行中の子プロセス数を監視する子プロセス数監視回路を前記インタコネクションネットワークに備え、前記子プロセス数を前記子プロセス数監視回路の備えるレジスタに保持することを特徴とする請求項３に記載の並列処理システム。
【請求項５】
前記並列ジョブを複数の子プロセスにより処理する際、最初に、親プロセスからそれぞれの子プロセスへ前記親プロセスを識別するための情報と前記優先度を設定するための数値情報を送信することを特徴とする請求項４に記載の並列処理システム。
【請求項６】
前記親プロセスを識別するための情報は、前記子プロセス数が格納された前記レジスタのアドレス情報又は前記親プロセスを実行している計算機で発行したプロセス番号であることを特徴とする請求項５に記載の並列処理システム。
【請求項７】
前記子プロセスで前記並列ジョブの処理を一時中断して別のプロセスを処理する際、前記親プロセスを識別するための情報と前記優先度を設定するための数値情報をセーブし、前記別のプロセスが終了し前記並列ジョブの処理を再開する際に、前記情報と前記数値情報のリストアを行うことを特徴とする請求項６に記載の並列処理システム。
【請求項８】
バリア同期に必要な子プロセス数情報を前記親プロセスから前記子プロセス数監視回路へ送信し、前記子プロセス数監視回路で前記バリア同期に必要な子プロセス数を前記レジスタへ書き込むことを特徴とする請求項５から請求項７のいずれか１項に記載の並列処理システム。
【請求項９】
前記実行中の子プロセス数を保持する子プロセス数複製回路を前記ノードに備え、前記子プロセス数を前記子プロセス数複製回路の備えるレジスタに保持することを特徴とする請求項８に記載の並列処理システム。
【請求項１０】
前記子プロセス数監視回路から、前記並列ジョブを実行する子プロセスを処理する複数の計算機の配置されたそれぞれのノードの、前記子プロセス数複製回路へ前記バリア同期に必要な子プロセス数情報の送信を行い、それぞれの前記子プロセス数複製回路で前記バリア同期に必要な子プロセス数を前記レジスタに書き込むことを特徴とする請求項９に記載の並列処理システム。
【請求項１１】
前記子プロセスは終了すると、前記子プロセス数監視回路へ、前記子プロセス数監視回路の備えるレジスタに保持している子プロセス数から１を減算する指示を送信することを特徴とする請求項１０に記載の並列処理システム。
【請求項１２】
前記子プロセス数から１を減算する指示を受信すると、前記インタコネクションネットワークから前記子プロセスに対して、それぞれの子プロセスを実行する計算機の配置されたノードの前記子プロセス数複製回路の備えるレジスタに保持する子プロセス数から１を減算する指示を送信し、前記子プロセス数複製回路で前記レジスタの子プロセス数から１を減算することを特徴とする請求項１１に記載の並列処理システム。
【請求項１３】
最も処理の遅れている子プロセスの実行されている計算機の配置されたノードからの転送処理を前記優先して処理するリクエスト調停回路を備えることを特徴とする請求項１２に記載の並列処理システム。
【請求項１４】
前記最も処理の遅れている子プロセスにより、前記子プロセスの実行されている計算機の配置されたノードの前記子プロセス数複製回路の備えるレジスタを参照して、実行中の子プロセス数が１つであることを検出することを特徴とする請求項１３に記載の並列処理システム。
【請求項１５】
前記最も処理の遅れている子プロセスで計算結果転送処理を開始する直前に、前記ノードから前記インタコネクションネットワークに前記親プロセスを識別するための情報と転送処理の優先を指示する情報を送信し、前記リクエスト調停回路で前記ノードからの転送処理を優先して処理することを特徴とする請求項１４に記載の並列処理システム。
【請求項１６】
計算機ジョブを並列ジョブに分割する親プロセスを実行する計算機の配置されたノードと、前記並列ジョブを処理する子プロセスを実行する複数の計算機の配置されたノードに接続されたインタコネクションネットワークであって、
前記子プロセスの中で処理の遅れている子プロセスからの転送処理を、他の転送処理よりも優先して処理することを特徴とするインタコネクションネットワーク。
【請求項１７】
前記複数の子プロセスで実行される処理が計算処理と計算結果転送処理で構成され、前記計算結果転送処理は前記計算処理の終了後になされ、前記子プロセスからの転送処理が前記計算結果転送処理であることを特徴とする請求項１６に記載のインタコネクションネットワーク。
【請求項１８】
前記他の転送処理は、前記親プロセスとは別の親プロセスと当該親プロセスの子プロセスとの間でなされる転送処理であることを特徴とする請求項１７に記載のインタコネクションネットワーク。
【請求項１９】
実行中の子プロセス数を監視する子プロセス数監視回路を備え、前記子プロセス数を前記子プロセス数監視回路の備えるレジスタに保持することを特徴とする請求項１８に記載のインタコネクションネットワーク。
【請求項２０】
親プロセスからバリア同期に必要な子プロセス数情報を受信すると、前記子プロセス数監視回路で前記バリア同期に必要な子プロセス数を前記レジスタへ書き込むことを特徴とする請求項１９に記載のインタコネクションネットワーク。
【請求項２１】
前記ノードに備えられた、実行中の子プロセス数を保持する子プロセス数複製回路へ、前記子プロセス数監視回路から前記バリア同期に必要な子プロセス数情報を送信することを特徴とする請求項２０に記載のインタコネクションネットワーク。
【請求項２２】
前記子プロセス数監視回路の備えるレジスタに保持する子プロセス数から１を減算する指示を、終了した子プロセスから受信すると、前記複数の子プロセスに対して前記子プロセス数複製回路の備えるレジスタに保持されている子プロセス数から１を減算する指示を送信することを特徴とする請求項２１に記載のインタコネクションネットワーク。
【請求項２３】
最も処理の遅れている子プロセスの実行されている計算機の配置されたノードからの転送処理を前記優先して処理するリクエスト調停回路を備えることを特徴とする請求項２２に記載のインタコネクションネットワーク。
【請求項２４】
前記複数の計算機の配置されたノードからの入力信号のオア出力と前記入力信号の優先度エンコーダ出力とをセレクタに入力する回路を前記リクエスト調停回路に備えることを特徴とする請求項２３に記載のインタコネクションネットワーク。
【請求項２５】
前記最も処理の遅れている子プロセスの実行されている計算機の配置されたノードから前記親プロセスを識別するための情報と転送処理の優先を要求する情報を受信すると、前記リクエスト調停回路でノードからの転送処理を優先して処理することを特徴とする請求項２４に記載のインタコネクションネットワーク。
【請求項２６】
親プロセスにより複数の子プロセスに分割された並列ジョブをインタコネクションネットワーク経由で受信し、前記並列ジョブを実行する計算機が配置され、前記子プロセスの中で処理の遅れている子プロセスからの転送処理を、前記インタコネクションネットワークにより優先して処理する並列処理システムを構成するノードであって、
実行中の子プロセス数を保持する子プロセス数複製回路を備え、
前記実行中の子プロセス数を前記子プロセス数複製回路の備えるレジスタに保持することを特徴とするノード。
【請求項２７】
前記インタコネクションネットワークに備えた、実行中の子プロセス数を監視する子プロセス数監視回路からバリア同期に必要な子プロセス数情報を受信すると、前記子プロセス数複製回路で前記子プロセス数を前記レジスタに書き込むことを特徴とする請求項２６に記載のノード。
【請求項２８】
前記レジスタに書き込まれた子プロセス数から１を減算する命令を、前記子プロセス数監視回路から受信すると、前記レジスタの子プロセス数から１を減算することを特徴とする請求項２７に記載のノード。
【請求項２９】
最も処理の遅れている子プロセスにより、前記子プロセス数複製回路の備えるレジスタを参照して、実行中の子プロセス数が１つであることを検出することを特徴とする請求項２８に記載のノード。
【請求項３０】
前記最も処理の遅れている子プロセスから前記親プロセスを識別するための情報と優先度を設定するための数値情報を前記子プロセス数複製回路へ送信すると、前記子プロセス数複製回路から前記インタコネクションネットワークへ前記親プロセスを識別するための情報と転送処理の優先を要求する情報を送信することを特徴とする請求項２９に記載のノード。
【請求項３１】
前記優先度を設定するための数値情報と前記子プロセス数との比較を行う比較器を前記子プロセス数複製回路に備え、前記数値情報が前記子プロセス数よりも大きいか又は前記子プロセス数に等しい場合に、前記転送処理に優先度を設定することを特徴とする請求項３０に記載のノード。
【請求項３２】
計算機ジョブを並列ジョブに分割する親プロセスを実行する計算機の配置されたノードと、前記並列ジョブを処理する複数の子プロセスを実行する計算機の配置された複数のノードに接続されたインタコネクションネットワーク上で実行されるネットワーク制御プログラムであって、
前記子プロセスの中で処理の遅れている子プロセスからの転送処理を、他の転送処理よりも優先して処理する機能を実行することを特徴とするネットワーク制御プログラム。
【請求項３３】
実行中の子プロセス数をレジスタに書き込む機能を有することを特徴とする請求項３２に記載のネットワーク制御プログラム。
【請求項３４】
親プロセスからバリア同期に必要な子プロセス数情報を受信すると、前記バリア同期に必要な子プロセス数を前記レジスタに書き込む機能を有することを特徴とする請求項３３に記載のネットワーク制御プログラム。
【請求項３５】
前記子プロセスの実行されている計算機の配置されたノードに備えられ、実行中の子プロセス数を保持する子プロセス数複製回路へ、前記バリア同期に必要な子プロセス数情報を送信する機能を有することを特徴とする請求項３４に記載のネットワーク制御プログラム。
【請求項３６】
前記レジスタに保持する数値を１減算する指示を前記子プロセスから受信すると、前記複数の子プロセスに対して前記子プロセス数複製回路の備えるレジスタに保持されている数値から１を減算する指示を送信する機能を有することを特徴とする請求項３５に記載のネットワーク制御プログラム。
【請求項３７】
最も処理の遅れている子プロセスから前記親プロセスを識別するための情報と前記転送処理の優先を指示する情報を受信すると、前記ノードからの転送処理を優先して処理する機能を有することを特徴とする請求項３６に記載のネットワーク制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理システムに関し、特に、並列ジョブ全体のターンアラウンドタイム（ＴＡＴ）を短縮し、システム全体の効率を高める並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラムに関する。
【背景技術】
【０００２】
並列ジョブは、親プロセスが一連のジョブを複数の子プロセスに分割することでＴＡＴ短縮を狙う手法である。この手法では、プロセス分割は並列化コンパイラによって、極力同時期に終了するように等しい負荷バランスを考慮して行われる。しかしながら、実際に並列化動作をさせてみると、他のジョブからの擾乱、子プロセス間通信の非同期性などが原因となって、負荷インバランスという問題が発生する。つまり、子プロセスの実行時間のばらつきによって、最も時間がかかる子プロセスのＴＡＴに並列ジョブ全体のＴＡＴが律速されてしまう。
【０００３】
また、負荷インバランスは並列ジョブＴＡＴに対して悪影響を及ぼすだけでなく、計算資源を有効利用できないという問題を引き起こす。例えば、最後に残った子プロセス終了を待つための無意味なポーリング処理を、親プロセスが続けなければならないという問題がある。
【０００４】
これらの問題は、並列化コンパイラ、ジョブスケジューラというシステムソフトウェアの力だけでは十分解決することができない。すなわち、どんなにコンパイラ等で負荷を均等にしたタスクに分割しても、上記の理由により負荷インバランスが発生する。また、ジョブスケジューラの能力を効率化するためにｐｏｓｔ−ｗａｉｔ式の同期制御を行う、つまり、待っているプロセスはポーリングで待たずにスリープさせて、同期が取れた時に割り込みで再開させるようなことで計算資源の有効利用を図ろうとしても、割り込み処理のオーバーヘッドで効果が上がらない場合もある。
【０００５】
このような問題の解決に類する方法の一例が、例えば特開平６−１４９７５２号公報（特許文献１）及び例えば特開２０００−２３１５０２号公報（特許文献２）に記載されている。
【０００６】
特許文献１の方法は、ネットワークで接続された複数のプロセッサとメインメモリを備えたシステムでの、システムスループットを高めるバリア同期方式に関するものである。
【０００７】
特許文献１の方法では、プロセッサ数（変数）をメインメモリに格納する。プロセッサ数は、最初はプロセッサの数であり、各プロセッサがそれぞれの処理を終了すると、各プロセッサからメインメモリに対してプロセッサ数から１を減算する命令を発行する。それぞれのプロセッサでの処理終了にともない、プロセッサ数は減少し、すべてのプロセッサでの処理が終了すると０になる。プロセッサ数が０になると、各プロセッサは次の処理を開始することにより、バリア同期がなされる。
【０００８】
特許文献１に開示される方法は、このバリア同期の際のみ、コヒーレンス動作を行うというものである。この方法によれば、コヒーレンス動作を高速かつ必要最小限に行うため、特許文献１の方法以前に行われていた、各プロセッサの処理の終了時にコヒーレンス動作を行っていた方法に比較すると、システム全体としてスループットを高めることができる。
【０００９】
また、特許文献２の方法は、ネットワークで接続された管理計算機と複数の計算機のシステムでの遅延要因解析方法に関するものである。
【００１０】
特許文献２の方法では、各計算機からジョブの実行の履歴を示す履歴情報が管理計算機へ送られる。計算機システムの終了予定時刻が終了予定時刻より規定以上遅れていることを検出すると、最後に行われたジョブで、実行時間と実行予定時間を比較し、実行時間が実行予定時間よりも長いときは、遅延原因は最後に行われたジョブを実行した計算機であると判断するというものである。
【００１１】
また、実行時間が実行予定時間よりも短いときは、実行開始時刻が予定開始時刻を過ぎていたかどうかを調べ、遅延の原因がジョブにあるのか、計算機の性能にあるのかを分析する。
【００１２】
特許文献２によれば、業務処理に遅延を生じさせた原因を、ジョブと計算機とに分けて抽出することができるというものである。
【特許文献１】特開平６−１４９７５２号公報
【特許文献２】特開２０００−２３１５０２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上述した従来の技術は、いずれも以下に述べるような問題点があった。
【００１４】
特許文献１の方法では、ネットワークで接続された複数のプロセッサとメインメモリを備えたシステムで、コヒーレンス動作を高速かつ必要最小限とすることにより、システムスループットを高めることができるというものである。
【００１５】
しかしながら、特許文献１の方法は、負荷インバランスの問題を解決するものではなかった。すなわち、特許文献１の方法では、すべてのプロセッサの処理が終了するまで待ちつづけた後、バリア同期がなされるというものであり、並列ジョブ全体のＴＡＴを短縮するものではなかった。
【００１６】
また、特許文献２の方法では、ネットワークで接続された管理計算機と複数の計算機のシステムで、計算機システムの終了時刻が終了予定時刻より規定以上遅れている場合に、遅延を生じさせた原因を、ジョブと計算機とに分けて抽出することができるというものである。
【００１７】
しかしながら、特許文献２の方法は、遅延原因を、ジョブと計算機とに分けて抽出することはできるが、特許文献１の方法と同じく、並列ジョブ全体のＴＡＴを短縮するものではなかった。
【００１８】
本発明の目的は、上記従来技術の欠点を解決し、計算機ジョブを分割して複数の子プロセスで並列処理を行う並列ジョブ全体のＴＡＴを短縮し、システム効率を高めることのできる並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラムを提供することにある。
【課題を解決するための手段】
【００１９】
上記目的を達成するための本発明は、複数のノードがインタコネクションネットワークを介して相互に接続され、前記ノードに備える計算機で実行される親プロセスにより計算機ジョブを複数の並列ジョブに分割し、前記並列ジョブを複数のノードに設置された前記複数の計算機による子プロセスで並列処理する並列処理システムであって、前記子プロセスの中で、最も処理の遅れている子プロセスの処理時間を短縮することを特徴としている。
【００２０】
また、子プロセスで実行される処理は、計算処理と計算結果転送処理で構成されるが、計算結果転送処理の処理時間を短縮することを特徴としている。計算結果転送処理では、計算結果が子プロセスから親プロセスへ転送される。
【００２１】
また、最も処理の遅れている子プロセスの実行されている計算機の配置されたノードからの転送処理を優先して処理することにより、計算結果転送処理の処理時間を短縮するものである。
【００２２】
従来の並列ジョブでは、並列ジョブ全体の処理時間は、最も処理の遅れている子プロセスにより律速されるものであった。本発明では、最も処理の遅れている子プロセスによる処理時間を短縮することにより、並列ジョブ全体の処理時間の短縮を実現するものである。子プロセスでの処理時間の短縮は次のようにして行う。
【００２３】
子プロセスでは、計算処理を行った後、親プロセスへ計算結果を送付するための計算結果転送処理を行う。計算処理は計算機の性能により決定されるために、その処理時間の短縮は困難である。一方、計算結果転送処理では、最も処理の遅れている子プロセスの実行されている計算機の配置されたノードからの転送処理に優先度を設定することにより、計算結果転送処理の時間を短縮することができる。
【００２４】
本発明では、ノードからの転送処理がインタコネクションネットワーク経由で行われるため、インタコネクションネットワークに特定のノードからの転送処理を優先的に処理するリクエスト調停回路を設けることにより、当該ノードからの転送処理を優先的に処理することができる。
【００２５】
転送処理に優先度を設定しない場合には、インタコネクションネットワークでの転送受付けの待ち時間が発生し、転送に遅れが発生する。
【００２６】
優先度の設定は、最も処理の遅れている子プロセスからの転送処理に対してなされる。子プロセスに優先度を設定する時点では、当該子プロセスの親プロセスから分割された子プロセスは、最も処理の遅れている子プロセスを除いてすべて終了している。このため、最も処理の遅れている子プロセスに優先度を設定すると、当該子プロセスからの転送処理は、その時点で動作している別の親プロセスとその子プロセス間でなされる転送処理よりも優先して処理されることになる。
【００２７】
本発明では、最も処理の遅れている子プロセスからの計算結果転送処理時間を短縮するものであるが、これによって最も処理の遅れている子プロセスの計算結果転送処理が終了するまでの他の子プロセスでの待ち時間が短縮され、システム効率を高めることができる。
【発明の効果】
【００２８】
本発明の並列処理システム、インタコネクションネットワーク、ノード及びネットワーク制御プログラムによれば、以下の効果が達成される。
【００２９】
計算機ジョブを分割して複数の子プロセスで並列処理を行う並列ジョブ全体のＴＡＴを短縮し、システム効率を高めることが可能となる。
【００３０】
その理由は、並列ジョブに分割された子プロセスの中で、最も処理の遅れている子プロセスからの転送処理を優先して処理することにより、最も処理の遅れている子プロセスのＴＡＴを短縮するためである。
【実施例】
【００３１】
以下、本発明の好適な実施例について図面を参照して詳細に説明する。
【００３２】
図１は、本実施例による並列処理システムの構成を示すブロック図である。
【００３３】
本実施例による並列処理システムは複数のノード１、２とインタコネクションネットワーク（ＩＮ）５０による構成となっている。複数のノード１、２はいずれも同一の構造である。以下では必要な場合を除きノード１について説明を行うが、他のノードの場合も同様である。
【００３４】
図１を参照すると、本実施例によるノード１は１つ以上のセントラルプロセシングユニット（ＣＰＵ）１１と、メインメモリユニット（ＭＭＵ）１２と、リモートノードコントロールユニット（ＲＣＵ）１３による構成となっている。
【００３５】
ＭＭＵ１２は、ノード間転送を行うデータを格納することができる。
【００３６】
ＲＣＵ１３は、ＣＰＵ１１からノード間データ転送リクエストの通知を受けると、転送するデータをＭＭＵ１２から読み出し、それをＩＮ５０に転送する。
【００３７】
本実施例によるＩＮ５０は、複数のノードからのデータ転送リクエストを受付け、ノード間のデータ転送をすることができる。
【００３８】
ＩＮ５０は、リクエスト調停回路４００と子プロセス数監視回路５００を備えている。子プロセス数監視回路５００には、ＧＢＣ５４０が備えられている。リクエスト調停回路４００と子プロセス数監視回路５００の詳細については、それぞれ図９、図１０の説明で述べる。
【００３９】
ここでは、並列ジョブの子プロセス数を保持するレジスタ群であるＧＢＣ５４０について説明を行う。なお、本実施例による並列処理システムでは、複数の親プロセスが動作していることを前提とする。
【００４０】
ＧＢＣ５４０は、同期をとるための子プロセス数を複数保持するレジスタ群である。複数の子プロセス数は、それぞれの親プロセスに対応している。これらの複数の親プロセスに対応した複数の子プロセス数は、ＧＢＣ５４０内で、それぞれ異なるＧＢＣ＃のレジスタに保持されている。
【００４１】
ＧＢＣ＃は、ＧＢＣ５４０内の各親プロセスに対応したレジスタのアドレスであるが、これを親プロセスの識別に使用することもできる。なお、計算機でプロセス番号を発行して、これを親プロセスの識別に使用することもできる。
【００４２】
各ノードからＧＢＣ値にアクセスする際は、ＧＢＣ＃を指定することによりノードの関係する並列ジョブの子プロセス数にアクセスすることができる。
【００４３】
以下では、必要な場合に、レジスタ群であるＧＢＣ５４０のそれぞれのレジスタに格納された値をＧＢＣ値、また後述するＧＢＣ＃１１１のレジスタに格納された値をＧＢＣ＃値、Ｔｈｒｈｌｄ１１２のレジスタに格納された値をＴｈｒｈｌｄ値と略すことにする。この場合、ＧＢＣ値は子プロセス数を、ＧＢＣ＃はアドレスを、またＴｈｒｈｌｄ値は優先度設定の数値を表している。
【００４４】
各ノードは、親プロセスの場合に、最初にＳＧＢＣＦ（Ｉｎｉｔ）命令を実行して、バリア同期に必要な子プロセス数をＧＢＣ５４０のＧＢＣ値に書き込むことができる。
【００４５】
各ノードの子プロセスは、それぞれが与えられた処理を実行し、終了するとＳＧＢＣＦ（ｄｅｃ）命令を実行して、ＧＢＣ５４０に保持されているＧＢＣ値を１減算させることができる。
【００４６】
ＣＰＵ１１の内部に設置されたＧＢＣ＃１１１は、レジスタ群であるＧＢＣ５４０のレジスタアドレスを保持するレジスタである。ＧＢＣ＃値により、並列ジョブの親プロセスを識別することができる。
【００４７】
Ｔｈｒｈｌｄ１１２は、プロセス優先度を設定する数値制御の効果を最大限引き出すためのプロセス毎に保持するレジスタである。Ｔｈｒｈｌｄ１１２には、優先度設定のための数値が保持され、その数値がＧＢＣ値よりも大きいか又はＧＢＣ値に等しいときに、優先度を設定することができる。
【００４８】
例えば、ＧＢＣ値が１の場合、Ｔｈｒｈｌｄ値が１以上に対して、優先度が設定される。
【００４９】
ＧＢＣ値が１の場合、すなわち最も遅い子プロセスのみが動作している場合に、当該プロセスに優先度をつけるためには、親プロセスはＰ通信による起動時にすべての子プロセスのＴｈｒｈｌｄ値を全て１とすれば良い。
【００５０】
命令制御部１１３は、ＧＢＣ＃１１１、Ｔｈｒｈｌｄ１１２の値が、プロセス毎に保持されるような操作を行う。
【００５１】
命令制御部１１３は、また、ＭＭＵ１２に対してＩＮ５０へ送信される命令を発行する場合は、ＧＢＣ＃１１１、Ｔｈｒｈｌｄ１１２に保持されている値を添えて発行することができる。
【００５２】
以下ではＩＮ５０へ送信される命令をＩＮ関連命令と略すことにする。
【００５３】
ＲＣＵ１３の内部には子プロセス数複製回路３００を備えている。子プロセス数複製回路３００は、子プロセス数監視回路５００のＧＢＣ５４０に保持された子プロセス数の数値をコピーして保持する回路である。子プロセス数複製回路３００については、次に説明する。
【００５４】
図２は、本実施例による子プロセス数複製回路３００の回路構成を示す図である。
【００５５】
Ｔｈｒｈｌｄ３０１は、ＭＭＵ１２から送信されるＩＮ５０関連命令リクエストに付与されるＴｈｒｈｌｄ値を保持するレジスタである。
【００５６】
ＣＭＤ３０２は、ＭＭＵ１２から送信されるＩＮ関連命令リクエストに付与される命令コマンドを保持するレジスタである。ここで、コマンド値は命令の種類別情報を示す。
【００５７】
ＣＭＤ３１３は、ＣＭＤ３０２の命令コマンドを保持するレジスタであり、その値はＩＮ５０に送られる。
【００５８】
ＧＢＣ＃３０３は、ＭＭＵ１２から送信されるＩＮ関連命令リクエストに付与されるＧＢＣ＃値、あるいはＩＮ５０から送信されるリクエストに付随するＧＢＣ＃値を保持するレジスタである。
【００５９】
ＧＢＣコピ−３０９は、ＧＢＣ５４０に保持されている、ノードの関連する親プロセスのＧＢＣ値をコピーして保持するレジスタである。
【００６０】
ＷＥ３０４は、ＧＢＣコピー３０９の書き込み指示信号（ＷＥ）を保持するレジスタである。
【００６１】
デクリメンタ３０５は、ＧＢＣコピ−３０９に保持されたＧＢＣ値をデクリメント（１を減算する）するためのものである。
【００６２】
制御回路３０６は、ＩＮ５０から各ノードに対するＧＢＣ値の書き換え要求を受け付けて、ＧＢＣコピ−３０９の内容を書き換える制御を行う回路である。
【００６３】
セレクタ３０７は、ＩＮ５０からのＧＢＣ値の書き換え要求のＧＢＣ値と、デクリメンタ３０５のＧＢＣ値を切り替えることができる。
【００６４】
ＷＤＲ３０８は、ＧＢＣコピー３０９に書き込むデータを保持するレジスタである。
【００６５】
ＲＤＲ３１０は、ＧＢＣコピー３０９から読み出したデータを保持するレジスタである。
【００６６】
比較器３１１は、ＲＤＲ３１０のデータとＴｈｒｈｌｄ３０１のデータを比較し、Ｔｈｒｈｌｄ３０１のデータ値がＲＤＲ３１０のデータ値よりも大きいか又は等しい場合に出力信号をアクティブにし、優先度が付加される。
【００６７】
Ｐｒｉｏ３１２は、比較器３１１の出力を保持するレジスタであり、その値はＩＮ５０へ送られる。
【００６８】
ＩＮ関連命令は、ＣＰＵ１１からＭＭＵ１２とＲＣＵ１３を経由して、ＩＮ５０へと送られる。その際、ＣＰＵ１１から付与されるＴｈｒｈｌｄ値、コマンド値、ＧＢＣ＃がそれぞれＴｈｒｈｌｄ３０１、ＣＭＤ３０２、ＧＢＣ＃３０３に格納される。
【００６９】
なお、子プロセス数複製回路３００は、ノード１のＲＣＵ１３内に設置されているが、ノード内であればＲＣＵ１３の外部に設置することもできる。
【００７０】
次に、本実施例による動作について、図を用いて詳細に説明する。本発明の特徴をわかりやすく説明するため、最初に、従来技術によるバリア同期の動作を説明する。
【００７１】
図１１は、従来技術における子プロセスでの並列ジョブの実行を説明するための図である。
【００７２】
親プロセスから６つの子プロセスにジョブが分割され、分割された子プロセスの終了をバリア同期によって親プロセスが知ることで、並列ジョブを終了する流れになっている。なお、処理の進行を説明するために、実行順に括弧内に番号を示してある。以下の説明では、文中の該当する部分に図の括弧内の番号を示した。
【００７３】
図１１を参照すると、（１）親プロセスのノードでＳＧＢＣＦ（Ｉｎｉｔ）命令を実行し、バリア同期に必要な子プロセス数をＧＢＣ５４０に書き込む。
【００７４】
次に、親プロセスは（２）ブロードキャストによるプロセッサ間通信（以下Ｐ通信と記載する）を発し、各ノードの子プロセスを起動する指示を出す。そして、同期が取れた状態を監視するために（３）ポーリングを開始する。
【００７５】
一方、各ノードの子プロセスは、それぞれの子プロセスに対して与えられた処理を実行し、（４）終了すると、ブロードキャストによるＳＧＢＣＦ（ｄｅｃ）命令を実行して、ＩＮ５０に保持されているＧＢＣ値を１つずつ減少させる。
【００７６】
この命令がＩＮ５０に対して実行され、ＩＮ５０のＧＢＣ５４０に格納されたＧＢＣ値が０になると、（５）子プロセスのバリア同期が完了する。
【００７７】
図１２は、従来技術における並列ジョブの処理の流れを説明するための図である。なお、従来技術においても、並列処理システム構成は本実施例と同様であるため、図1の主要な部分を用いて説明する。
【００７８】
また、各ノードでの処理の進行を示すために、実行順に括弧内に番号を示してある。以下の説明では、文中の該当する部分に図の括弧内の番号を示した。
【００７９】
図１２を参照すると、最初に、親プロセスのノードで（１）ＳＧＢＣＦ（Ｉｎｉｔ）命令を実行し、バリア同期に必要な子プロセス数をＩＮ５０内のＧＢＣ５４０に書き込む。
【００８０】
次に、（２）ＩＮ５０は親プロセスのノードに対して、ＧＢＦ（グローバルバリアフラグ）を初期化するよう指示する。ＧＢＦは、子プロセスによる並列ジョブが実行中かどうかを示すフラグである。
【００８１】
その後、更に親プロセスは（３）Ｐ通信（ブロードキャスト）によって各ノードの子プロセスを起動する指示を出す。
【００８２】
そして、同期が取れた状態を監視するために（４）ポーリングを開始する。
【００８３】
一方、各ノードの子プロセスは、（５）起動した後、それぞれの子プロセスで与えられた処理を実行し、終了すると（６）ＳＧＢＣＦ（ｄｅｃ）命令を実行して、ＩＮ５０に保持されているＧＢＣ値を１つずつ減少させる。
【００８４】
この命令がＩＮ５０に対して実行され、ＳＧＢＣＦ（ｄｅｃ）命令の累積回数が子プロセス数に等しくなると、ＩＮ５０のＧＢＣ５４０に格納されたＧＢＣ値が０になる。この時点で、子プロセスのバリア同期が取れたことになる。この時、（７）ＩＮ５０は、親ノードのＧＢＦを反転させるブロードキャスト（ＤＥＣ）を出す。
【００８５】
親プロセスは、（８）ポーリングでＧＢＦの状態を監視しているので、同期が完了したタイミングを知ることができる。
【００８６】
次に、従来技術と本実施例によるバリア同期の相違を説明する。
【００８７】
図３は、本実施例によるバリア同期と従来技術によるバリア同期との比較を説明するための図である。
【００８８】
図３を参照すると、従来技術では、６つの子プロセスであるＰ０〜Ｐ５に分割して並列化しているが、その中でＰ３が最も時間がかかってしまったとする。その場合、親プロセスはＰ３の終了まで待ち続けるので、この最も遅いＰ３に全体のＴＡＴが律速される。
【００８９】
本実施例では、Ｐ３のＴＡＴ短縮を優先して考えるために、並列ジョブのＴＡＴがその分短縮され、システム全体の効率性が高まる。
【００９０】
次に、本実施例によるバリア同期の説明に先立ち、本実施例による並列処理システムの概略動作及びＩＮ５０の動作について述べる。
【００９１】
図４は、本実施例による並列処理システムの概略動作を説明するためのフローチャートである。
【００９２】
最初に、親プロセスによりバリア同期に必要な子プロセス数がＧＢＣ５４０に記入される(ステップ２０１)。
【００９３】
次に、ＩＮ５０から各ノードに対してＧＢＣコピー３０９を初期化するよう指示が行われる。初期化により、バリア同期に必要な子プロセス数がＧＢＣコピー３０９に書き込まれる（ステップ２０２）。
【００９４】
次に、親プロセスからＰ通で子プロセスに起動が指示される。その際、親プロセス識別のためのＧＢＣ＃値、優先度設定のためのＴｈｒｈｌｄ値が添付される（ステップ２０３）。
【００９５】
起動した子プロセスの内、終了した子プロセスからＩＮ５０のＧＢＣ値を１減らすよう指示がなされる（ステップ２０４）。
【００９６】
ＧＢＣ値を１減らす指示を受けたＩＮ５０は、各ノードに対してＧＢＣコピー値を１減らすよう指示する（ステップ２０５）。
【００９７】
ＧＢＣ値が１よりも大きい場合は、複数の子プロセスが動作しているため、ステップ２０４に戻る（ステップ２０６）。
【００９８】
ＧＢＣ５４０の値が１に等しい場合は、最も遅れた子プロセスのみが動作しているため、次のステップに進む（ステップ２０６）。
【００９９】
最も遅れた子プロセスは、ＧＢＣコピー３０９のＧＢＣ値を参照することにより、最も遅れている子プロセスであることを検出する（ステップ２０７）。
【０１００】
最も遅れていることを認識した子プロセスは、計算結果転送処理の直前にＩＮ命令を発行する。その際、ＧＢＣ＃値、Ｔｈｒｈｌｄ値を添付する（ステップ２０８）。
【０１０１】
子プロセスより優先度設定のＩＮ命令を受けると、ＩＮ５０のリクエスト調停回路は、最も遅れた子プロセスの処理されているノードからの転送処理を優先して処理する（ステップ２０９）。
【０１０２】
最も遅れた子プロセスの転送処理が終了すると、バリア同期が完了する（ステップ２１０）。
【０１０３】
以上に、本実施例による並列処理システムの概略動作を説明した。
【０１０４】
次に、本実施例による並列処理システム内のデータ転送を行うＩＮ５０の概略動作について説明する。
【０１０５】
図５は、本実施例によるＩＮ５０の動作を説明するためのフローチャートである。
【０１０６】
最初に、親プロセスによりバリア同期に必要な子プロセス数がＧＢＣ５４０に記入される(ステップ６０１)。
【０１０７】
次に、各ノードに対してＧＢＣコピー３０９を初期化するよう指示をする。初期化により、バリア同期に必要な子プロセス数がＧＢＣコピー３０９に書き込まれる（ステップ６０２）。
【０１０８】
次に、親プロセスからＰ通で子プロセスに起動が指示され、並列ジョブが開始される。一部の子プロセスが終了すると、子プロセスからＧＢＣ値を１減らすよう指示を受ける。
【０１０９】
終了した子プロセスからＧＢＣ値を１減らすよう指示を受けると、ＧＢＣ値を書き換え、また各ノードに対してＧＢＣコピー値を１減らすよう指示する（ステップ６０３）。
【０１１０】
次に、ＧＢＣ値が減少して１に等しくなると、最も遅れた子プロセスで最も遅れていることが検出される。
【０１１１】
最も遅れていることを認識した子プロセスから、計算結果転送処理の直前にＩＮ命令の発行を受ける。その際、親プロセス識別のためのＧＢＣ＃値、優先度設定のためのＴｈｒｈｌｄ値が添付される（ステップ６０４）。
【０１１２】
子プロセスより優先度設定のＩＮ命令を受けると、リクエスト調停回路は、最も遅れた子プロセスの処理されているノードからの転送処理を優先して処理する（ステップ６０５）。
【０１１３】
最も遅れた子プロセスの転送処理が終了すると、バリア同期が完了する。
【０１１４】
以上に、本実施例による並列処理システムの概略動作及び並列処理システム内のデータ転送を行うＩＮ５０の概略動作について説明した。
【０１１５】
次に、本実施例によるバリア同期の動作を詳細に説明する。
【０１１６】
図６は、本実施例による子プロセスでの並列ジョブの実行を説明するための図である。
【０１１７】
図６を参照すると、親プロセスから６つの子プロセスに処理が分割され、それら子プロセスの終了をバリア同期によって親プロセスが知ることで、並列ジョブを終了する流れになっている。
【０１１８】
このような並列ジョブの実行の流れは、図１１に示した従来技術における子プロセスでの並列ジョブの実行と一致している。但し、本実施例では子プロセス終了前に計算結果転送処理を行っている点が異なる。
【０１１９】
図７は、本実施例による並列ジョブの処理の流れを説明するための図である。
【０１２０】
なお、各ノードでの処理の進行を示すために、実行順に括弧内に番号を示した。以下の説明では、文中の該当する部分に図の括弧内の番号を示した。
【０１２１】
図７を参照すると、最初に、親プロセスのノードで（１）ＳＧＢＣＦ（Ｉｎｉｔ）命令を親プロセスが実行することで、バリア同期に必要な子プロセス数をＧＢＣ５４０のＧＢＣ値に書き込む。
【０１２２】
次に、（２）ＧＢＣ５４０に子プロセス数が書き込まれたことを認識したＩＮ５０は、各ノードに対してＧＢＣのコピーを初期化するよう、ブロードキャストする。このブロードキャストにより、各ノードの子プロセス数複製回路３００のＧＢＣコピー３０９に子プロセス数が書き込まれる。
【０１２３】
次に、親プロセスは、（３）Ｐ通信によって各ノードの子プロセスを起動する指示を出す。
【０１２４】
そして、バリア同期が完了した状態を監視するために（４）ポーリングを開始する。
【０１２５】
一方、（５）各子プロセスは起動後それぞれが与えられた処理を実行し、終了すると（６）ＳＧＢＣＦ（ｄｅｃ）命令を実行して、ＩＮ５０に保持されているＧＢＣ値を１つずつ減少させる。
【０１２６】
この命令を受け取ったＩＮ５０は、（７）各ノードに対してＧＢＣコピーのＤＥＣ要求（ＧＢＣコピー値を１減算する要求）をブロードキャストする。この処理によって、各ノード間でのＧＢＣコピー値の一致が保障される。
【０１２７】
この命令がＩＮ５０に対して子プロセスの数と同じ回数実行されると、ＧＢＣ５４０のＧＢＣ値が０になる。この状態をもって、（８）子プロセスのバリア同期が完了したことになる。
【０１２８】
本実施例によれば、各ノードでＧＢＣ値のコピーを有しているため、図１２に示した従来技術とは異なり、ＩＮ５０からバリア同期が完了したことをブロードキャストする必要はない。
【０１２９】
また、親プロセスのノードは、ポーリングでＧＢＣコピー３０９の状態を監視しているので同期が完了したことを知ることができる。
【０１３０】
各子プロセスは、割り当てられた計算処理を終了すると、その計算結果を親プロセスに返すためにノード間データ転送を行う。そのデータを受け取った親プロセスは並列ジョブ全体の結果を集計する。
【０１３１】
本実施例では、この最後のノード間データ転送の性能向上を最も遅れている子プロセスで実現することによって、並列ジョブ全体のＴＡＴ短縮を図るものである。
【０１３２】
以上説明したように、本発明のシステムは、複数のノード１、２がＩＮ５０を介して相互に接続され、ノードに備える計算機で実行される親プロセスにより計算機ジョブを並列ジョブに分割し、並列ジョブを複数のノードに配置された複数の計算機による複数の子プロセスで並列処理する並列処理システムであって、子プロセスの中で最も処理の遅れている子プロセスからの転送処理を、インタコネクションネットワークで他の転送処理よりも優先して処理することを特徴とする。
【０１３３】
複数の子プロセスで実行される処理は計算処理と計算結果転送処理で構成され、計算結果転送処理は計算処理の終了後になされる。このため、優先して処理される子プロセスからの転送処理は、計算結果転送処理となる。
【０１３４】
また、当該他の転送処理は、当該複数の子プロセスからの転送処理ではなく、当該親プロセスとは別の親プロセスとその子プロセスとの間でなされる転送処理となる。このようになるのは以下の理由による。
【０１３５】
最も処理の遅れている子プロセスに優先度を設定する時点では、当該子プロセスの親プロセスから分割された子プロセスは、最も処理の遅れている子プロセスを除いてすべて終了している。このため、最も処理の遅れている子プロセスに優先度を設定すると、当該子プロセスからの転送処理は、その時点で動作している別の親プロセスとその子プロセス間でなされる転送処理よりも優先して処理されることになる。
【０１３６】
図６を参照すると、最も遅れている子プロセスはＰ３である。Ｐ３に次いで遅いプロセスであるＰ１ が終了した後は、各ノードのコピーＧＢＣ値が１となる。このため、次に説明するように、子プロセスＰ３はＰ３のプロセスが最も遅いことを認識することができる。
【０１３７】
次に、最も遅れている子プロセスの動作について詳細に説明する。
【０１３８】
図８は、本実施例による子プロセスの動作を示す図である。
【０１３９】
なお、以下の説明は複数の子プロセスを複数のノードで処理する場合の例であるが、ノード内の主要な部分の符号については、図１に示したノード１の符号を参照して説明を行う。また、必要に応じて、図２の主要な部分を参照する。
【０１４０】
図８を参照すると、最初に、Ｐ通信による起動指示が親プロセスのノードから送られる。その際、親プロセスの指示でＧＢＣ＃値が親プロセスを識別するため数値として、またｔｈｒｈｌｄ値がノード間転送の優先度を設定する数値として子プロセスに対して渡される。
【０１４１】
その後、それぞれの子プロセスは、これらの値をプロセススイッチ毎にｓａｖｅ／ｒｅｓｔｏｒｅ（セーブ／リストア）という処理を行う。この処理を行うことにより、ＧＢＣ＃値とｔｈｒｈｌｄ値は、別のプロセスを実行する際にも保持される。
【０１４２】
そして、子プロセスが計算結果転送処理の直前に、命令制御部１１３からＩＮ５０関連命令が発行される。
【０１４３】
その際、命令制御部１１３は、ＧＢＣ＃１１１とＴｈｒｈｌｄ１１２からそれぞれＧＢＣ＃値とｔｈｒｈｌｄ値の付与を受け、ＧＢＣ＃値を使って子プロセス数複製回路３００のＧＢＣコピー３０９を参照する。
【０１４４】
この際、ＧＢＣ値が１である場合には、そのプロセスが最も遅いことを認識して、命令制御部１１３から、ＧＢＣ＃値、Ｔｈｒｈｌｄ値がＩＮ５０に転送する。
【０１４５】
その際、子プロセス数複製回路３００の比較器３１１で、ＧＢＣ＃値とＴｈｒｈｌｄ値の比較がなされ、ＧＢＣ＃値、Ｔｈｒｈｌｄ値が共に１に設定されている場合には、優先度が設定される。優先度情報はＰｒｉｏ３１２に格納され、ＩＮ５０への命令コマンドに添えて、ＩＮ５０へ送信される。
【０１４６】
ＩＮ５０はこれらの情報を認識して、優先度のついたリクエストのＴＡＴを他に比べて優先的に行うよう制御する。
【０１４７】
最も遅れた子プロセスの処理が終わると、当該子プロセスはＳＧＢＣＦ（ｄｅｓ）命令を発行してプロセスを終了する。
【０１４８】
以上のようにして、最も遅れた子プロセスの実行されている計算機の配置されたノードからの転送処理に優先度が付与され、ＩＮ５０での転送処理が優先的に行われる。
【０１４９】
次に、転送処理への優先度の設定について、詳細に説明する。
【０１５０】
図６に示した並列ジョブを実行する際の、ノードからの転送処理への優先度の設定について説明する。なお必要に応じて、図１、図２の主要な部分を参照する。
【０１５１】
ＧＢＣ＃値とｔｈｒｈｌｄ値は、命令制御部１１３によって、タスク切り替えの際にもｓａｖｅ／ｒｅｓｔｏｒｅで保持され、その値は子プロセスが実行状態である間は、ＧＢＣ＃１１１とＴｈｒｈｌｄ１１２に保持されている。
【０１５２】
ＣＰＵ１１から発行されるＩＮ関連命令には、ＧＢＣ＃値とＴｈｒｈｌｄ値が付与され、ＭＭＵ１２を経由してＲＣＵ１３まで送信される。ＲＣＵ１３の子プロセス数複製回路３００はＩＮ関連命令を受け取って、ＧＢＣ＃値とＴｈｒｈｌｄ値をそれぞれＴｈｒｈｌｄ３０１とＧＢＣ＃３０３に保持する。そして、ＧＢＣ＃を親プロセス識別に用いて、ＧＢＣコピ−３０９からＧＢＣ値を読み出し、ＲＤＲ３１０に格納する。
【０１５３】
ＲＤＲ３１０に格納されたＧＢＣ値は、同じバリア内で未だ終了していない子プロセスの数を表す。
【０１５４】
その数が、Ｔｈｒｈｌｄ値より小さい又はＴｈｒｈｌｄ値に等しい場合は、子プロセス自身が遅い方であると判断することになる。
【０１５５】
Ｔｈｒｈｌｄ値を１に固定すると、最も遅い子プロセスのみに優先度が設定される。優先度の設定は、Ｐｒｉｏ３１２に格納され、ＣＭＤ３０２に保持されたＩＮ５０への命令コマンドに添えて、ＩＮ５０へ送られる。
【０１５６】
以上により、転送処理に優先度が設定され、ＩＮ５０へ送信される。
【０１５７】
次に、このようにして設定された優先度に基づくＩＮ５０によるノード間転送処理の制御について説明する。
【０１５８】
図９は、本実施例によるリクエスト調停回路４００の回路構成を示す図である。
【０１５９】
リクエスト調停回路４００は、各ノードからＩＮ５０へ送信されたリクエストから、優先度に基づいてノードを選択する回路である。
【０１６０】
ＩＮＵ（Input Unit）４１１、４１２は、各ノードからのリクエストをＩＮ５０で認識できる形に変換するユニットである。ＩＮＵ（Input Unit）４１１、４１２は、バッファリングする機能を有する。
【０１６１】
ＯＵ（Output Unit）４２１、４２２は、それぞれのノードへのリプライをノード側で認識できる形に変換するユニットである。ＯＵ（Output Unit）４２１、４２２は、バッファリングする機能を有する。
【０１６２】
ＯＲゲート４３０は、全ノードからの優先度信号のＯＲをとることができる。
【０１６３】
優先度エンコーダ４３１は、全ノードからのリクエスト信号の中から最も若番の番号（ＩＮＵ番号の小さい）を送出することができる。
【０１６４】
ＯＲゲート４３２は、マスク後のリクエスト信号のＯＲをとることができる。
【０１６５】
セレクタ４３３は、マスクしたリクエスト信号群とマスクしないリクエスト信号群を切り替えることができる。
【０１６６】
リーディング０回路（Leading０回路）４３４は、調停権を与えるノード番号を選択する回路である。リーディング０回路４３４は、各ノードからのリクエスト信号群データの最若番ｂｉｔからの０の数を用いて調停選択ノード番号にするための回路である。
【０１６７】
フラグ４３５は、リクエストが来た状態を保持することができる。
【０１６８】
セレクタ４３６は、優先度付リクエストの場合は、優先度エンコーダ４３９出力とすることができる。
【０１６９】
レジスタ４３７は、調停で選択されたノード番号を格納する。
【０１７０】
セレクタ４３８は、調停で選択されたリクエストのコマンドを選択する。
【０１７１】
マスク生成回路４３９は、ラウンドロビン方式の調停回路を実現するために後続ノード番号のリクエストを優先させるためにある。
【０１７２】
デコーダ４４０は、調停で選択されたリクエストを送出したことをＩＮＵ４１１、４１２に対して示す、リクエストｓｅｌ信号を送出する。
【０１７３】
ＩＮ命令リクエスト制御部４４１は、調停で選択されたリクエストの処理を行う。
【０１７４】
ＯＲゲート４４２は、全ノードからのリクエスト信号のＯＲをとる。
【０１７５】
次に、図９を用いてＩＮ５０のリクエスト調停回路の動作について説明する。なお、必要に応じて図１の主要な部分を参照する。
【０１７６】
図９を参照すると、最初に、各ノ−ドのＲＣＵからＩＮＵ４１１、４１２へ、優先度付のリクエストを含んだリクエストが送られてくる。
【０１７７】
優先度付のリクエストはＯＲゲート４３０で認識され、リクエストを受付けたノード番号（以下受付けノード番号と略す）を優先度エンコーダ４３１で決定する。
【０１７８】
なお、優先度付リクエストを受信した場合は、若番ノード（ＩＮＵ番号の小さいノード）が選択される。この場合は、セレクタ４３６を経由して、レジスタ４３７にその受付ノード番号が格納される。同時にリクエストの有効ビット情報もレジスタ４３５に格納される。その情報に基づき、デコーダ４４０によって、ＩＮＵ４１１、４１２にリクエストを受付けたことを伝えるリクエストｓｅｌ信号を生成する。
【０１７９】
以上のようにして、ノードからの転送処理に優先度が設定される。
【０１８０】
次に、ＩＮ５０のＧＢＣ値を各ノードへコピーする動作について説明する。
【０１８１】
図１０は、本実施例による子プロセス数監視回路５００の回路構成を示す図である。なお、必要に応じて図１の主要な部分を参照する。
【０１８２】
ＩＮ５０に備えられた子プロセス数監視回路５００は、各ノードのＲＣＵ回路に備えられたＧＢＣコピー３０９に保持されたＧＢＣ値を、ＩＮ５０のＧＢＣ５４０に保持されたＧＢＣ値と等しくするための回路である。
【０１８３】
ＩＮＵ（Input Unit）５１１、５１２は、ノードからのリクエストを、ＩＮ５０で認識できる形に変換するユニットである。ＩＮＵ５１１、５１２は、バッファリングの機能も有する。
【０１８４】
ＯＵ（Output Unit）５２１、５２２は、ノードへのリプライをノード側で認識できる形に変換するユニットである。ＯＵ５２１、５２２はバッファリングの機能も有する。
【０１８５】
ＧＢＣリクエスト調停回路５３０は、全ノードからのＧＢＣアクセス命令の調停動作を行うことができる。ＧＢＣリクエスト調停回路５３０は、リクエスト調停回路４００とは異なる。
【０１８６】
Ｖ５３１は、ＧＢＣアクセス命令の有効ビットＶ（リクエストが有効であることを示すための信号）を保持するレジスタである。
【０１８７】
ＣＭＤ５３２は、ＧＢＣアクセス命令のコマンドを保持するレジスタである。
【０１８８】
ＧＢＣ＃５３３は、ＧＢＣアクセス命令のＧＢＣ＃値を保持するレジスタである。
【０１８９】
制御回路５３４は、ＧＢＣへの書き込み動作を制御することができる。
【０１９０】
ＷＥ５３５は、ＧＢＣへの書き込みイネーブル信号を保持するレジスタである。
【０１９１】
デコーダ５３６は、各ノードへのブロードキャストを発生させる時の有効信号を生成する。
【０１９２】
デクリメンタ５３７は、各ノードからのＳＧＢＣＦ（ｄｅｃ）命令を受けると、ＧＢＣデータから１を減算する。
【０１９３】
セレクタ５３８は、リクエストに乗ってきたデータか、各ノードからの命令によりＧＢＣデータから１を減算したデータかを選択することができる。
【０１９４】
ＷＤＲ５３９は、ＧＢＣ５４０への書き込みデータを保持するレジスタである。
【０１９５】
ＧＢＣ５４０は、図１の説明で述べたが、同期をとるためのＧＢＣ値を保持するレジスタ群である。ＧＢＣ値は、各親プロセスに対応しており、ＧＢＣ５４０には複数の親プロセスに対応したＧＢＣ値が保持されている。これらの複数のＧＢＣ値は、それぞれ異なるＧＢＣ＃のレジスタに保持されている。
【０１９６】
ＲＤＲ５４１は、ＧＢＣ５４０からの読み出しデータを保持するレジスタである。
【０１９７】
次に、ＧＢＣのコピーをＩＮ５０のＧＢＣ５４０と等しく保つ動作について、図１０を用いて説明する。なお、必要に応じて図１、図２の主要な部分を参照する。
【０１９８】
最初に、ノード１のＲＣＵ１３よりＩＮＵ５１１、５１２に対してＳＧＢＣＦ（Ｉｎｉｔ）が送信された場合について説明する。
【０１９９】
複数のノードからリクエストが送信された場合は、ＧＢＣリクエスト調停回路５３０によって、その中から任意の１つが選択される。
【０２００】
選択されたリクエストのコマンド、ＧＢＣ＃、書き込みデータは、それぞれ、ＣＭＤ５３２、ＧＢＣ＃５３３、ＷＤＲ５３９に格納され、Ｖ５３１が点灯する（有効信号であることを示す）。
【０２０１】
更にＷＥ５３５が点灯し、ＧＢＣ５４０に、データが書き込まれる。
【０２０２】
次に、デコーダ５３８によって、全ノードへのブロードキャストを実行するために、ＯＵ５２１、５２２への有効信号が点灯する。
【０２０３】
またコマンド、ＧＢＣ＃、ライトデータ（ＷＤＲに保持されたデータ）も、ＯＵ５２１、５２２に対して同じものが送られる。
【０２０４】
ＯＵ５２１、５２２からは、全ノードに対してＳＧＢＣＦ（Ｉｎｉｔ）がブロードキャストされる。
【０２０５】
ＳＧＢＣＦ（ｄｅｃ）の場合も、動作は似ている。ブロードキャスト時に減算命令であることだけを伝えれば、ＲＣＵ１３側のＧＢＣコピー３０９を１減算する。
【０２０６】
ＩＮ５０内ＧＢＣ５４０の減算は、一旦ＲＤＲ５４１に古いＧＢＣ値を読みだした後、デクリメンタ５３７で古いＧＢＣ値から１を減算した値をＷＤＲ５３９に取り込んで、書き込む。
【０２０７】
以上説明した実施例によれば、計算機ジョブを分割して複数の子プロセスで並列処理を行う並列ジョブのＴＡＴを短縮できる。その結果、計算資源の有効利用がなされ、システム効率を高めることが可能となる。
【０２０８】
ＴＡＴの短縮は、並列ジョブに分割された子プロセスの処理を計算処理と計算結果転送処理で構成し、最も処理の遅れている子プロセスからの計算結果転送処理の短縮によりなされる。計算結果転送処理の短縮は、ＩＮ５０で最も処理の遅れている子プロセスからの転送処理を優先して処理することにより、実現する。また、転送処理への優先度設定は、子プロセスが最も処理の遅れていることを検出すると、計算結果転送処理の直前に子プロセスから優先度設定の命令をＩＮ５０へ送信することにより行われる。
【０２０９】
上記のように最も処理の遅れている子プロセスの転送処理時間が短縮され、並列ジョブ全体のＴＡＴを短縮することができるものである。
【０２１０】
本発明のＩＮ５０は、その動作をハードウェア的に実現することは勿論として、上記した各手段を実行するネットワーク制御プログラム（アプリケーション）１００をコンピュータ処理装置であるＩＮ５０で実行することにより、ソフトウェア的に実現することができる。このネットワーク制御プログラム１００は、磁気ディスク、半導体メモリその他の記録媒体に格納され、その記録媒体からＩＮ５０にロードされ、その動作を制御することにより、上述した各機能を実現する。
【０２１１】
以上好ましい実施例をあげて本発明を説明したが、本発明は必ずしも、上記実施例に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【図面の簡単な説明】
【０２１２】
【図１】本発明の実施例による並列処理システムの構成を示すブロック図である。
【図２】本発明の実施例による子プロセス数複製回路の回路構成を示す図である。
【図３】本発明の実施例によるバリア同期と従来技術によるバリア同期との比較を説明するための図である。
【図４】本発明の実施例による並列処理システムの概略動作を説明するためのフローチャートである。
【図５】本発明の実施例によるＩＮの動作を説明するためのフローチャートである。
【図６】本発明の実施例による子プロセスでの並列ジョブの実行を説明するための図である。
【図７】本発明の実施例による並列ジョブの処理の流れを説明するための図である。
【図８】本発明の実施例による子プロセスの動作を示す図である。
【図９】本発明の実施例によるリクエスト調停回路の回路構成を示す図である。
【図１０】本発明の実施例による子プロセス数監視回路の回路構成を示す図である。
【図１１】従来技術における子プロセスでの並列ジョブの実行を説明するための図である。
【図１２】従来技術における並列ジョブの処理の流れを説明するための図である。
【符号の説明】
【０２１３】
１、２：ノード
１１、２１：ＣＰＵ
１２、２２：メインメモリユニット（ＭＭＵ）
１３、２３：ノードユニット（ＲＣＵ）
５０：インタコネクションネットワーク（ＩＮ）
１００：ネットワーク制御プログラム
１１１：レジスタ（名称：ＧＢＣ＃）
１１２：レジスタ（名称：Ｔｈｒｈｌｄ）
１１３：命令制御部
１５０：ノードプログラム
３００、３００Ａ：子プロセス数複製回路
３０１：レジスタ（名称：Ｔｈｒｈｌｄ）
３０２：レジスタ（名称：ＣＭＤ）
３０３：セレクタ付レジスタ（名称：ＧＢＣ＃）
３０４：レジスタ（名称：ＷＥ）
３０５：デクリメンタ
３０６：制御回路
３０７：セレクタ
３０８：レジスタ（名称：ＷＤＲ）
３０９：レジスタ（名称：ＧＢＣコピー）
３１０：レジスタ（名称：ＲＤＲ）
３１１：比較器
３１２：レジスタ（名称：Ｐｒｉｏ）
３１３：レジスタ（名称：ＣＭＤ）
４００：リクエスト調停回路
４１１、４１２：インプットユニット（ＩＮＵ）
４２１、４２２：アウトプットユニット（ＯＵ）
４３０、４３２：ＯＲゲート
４３１：優先度エンコーダ
４３３、４３６、４３８：セレクタ
４３４：リーディング０回路（ Leading０回路 ）
４３５：フラグ
４３７：レジスタ（名称：ＮＤ＃）
４３９：マスク生成回路
４４０：デコーダ
４４１：ＩＮ命令リクエスト制御部
４５１、４５２：ＡＮＤゲート
５００：子プロセス数監視回路
５１１、５１２：インプットユニット（ＩＮＵ）
５２１、５２２：アウトプットユニット（ＯＵ）
５３０：ＧＢＣリクエスト調停回路
５３１：レジスタ（名称：Ｖ）
５３２：レジスタ（名称：ＣＭＤ）
５３３：レジスタ（名称：ＣＢＣ＃）
５３４：制御回路
５３５：レジスタ（名称：ＷＥ）
５３６：デコーダ
５３７：デクリメンタ
５３８：セレクタ
５３９：レジスタ（名称：ＷＤＲ）
５４０：レジスタ（名称：ＧＢＣ）
５４１：レジスタ（名称：ＷＤＲ）
【図１】
2006085428.tif 000003
【図２】
2006085428.tif 000004
【図３】
2006085428.tif 000005
【図４】
2006085428.tif 000006
【図５】
2006085428.tif 000007
【図６】
2006085428.tif 000008
【図７】
2006085428.tif 000009
【図８】
2006085428.tif 000010
【図９】
2006085428.tif 000011
【図１０】
2006085428.tif 000012
【図１１】
2006085428.tif 000013
【図１２】
2006085428.tif 000014