(57)【特許請求の範囲】
【請求項１】
通信手段を介し複数の処理装置を相互に通信可能に接続して構成された分散主記憶ＭＩＭＤ（Multiple Instruction stream Multiple Data stream）型並列計算機におけるデータ転送方法であって、送信側処理装置が、各種制御情報を含むパケットヘッダと転送データ本体を含むパケットボディとからなるパケットを該通信手段に対して発信するとともに、該通信手段が、該パケットを所定の受信側処理装置へ転送することにより、該送信側処理装置の主記憶上のデータを該受信側処理装置の主記憶上へ転送するデータ転送方法において、
該送信側処理装置の主記憶上に作成される前記パケットヘッダを、データ転送を指示するコマンド用のコマンド領域と、プログラムにより指定されたデータを転送するための非コマンド領域とから構成し、
前記パケットヘッダの非コマンド領域に、該分散主記憶ＭＩＭＤ型並列計算機においてメッセージパッシングモデルでデータ転送を行なう際にプログラムによって指定され送信メッセージの識別子を含む送信側制御データを設定し、
該受信側処理装置では、前記パケットを受信すると、前記パケットヘッダの非コマンド領域と前記パケットボディとを該主記憶上のメッセージ受信キューに格納するとともに、前記パケットヘッダのコマンド領域を、該主記憶上において複数のコマンド領域を格納可能に構成されたコマンド受信領域に格納し、
受信に際して異常が発生しない場合には前記パケットヘッダのコマンド領域を該コマンド受信領域に対して上書きにより格納する一方、異常発生時には当該異常の発生要因に係るパケットのコマンド領域を該コマンド受信領域に保持し、
該コマンド受信領域に、新たなコマンド領域を格納するための有効領域が無くなった場合には、新たなパケットの受信を停止することを特徴とする、並列計算機におけるデータ転送方法。
【請求項２】
該送信側処理装置で、前記パケットヘッダのコマンド領域にプロセス識別子を設定するとともに、
該受信側処理装置の主記憶上に、前記プロセス識別子毎にメッセージ受信キューをそなえ、
該受信側処理装置では、前記パケットヘッダの非コマンド領域と前記パケットボディとを、前記パケットヘッダのコマンド領域のプロセス識別子に応じたメッセージ受信キューに格納することを特徴とする、請求項１記載の並列計算機におけるデータ転送方法。
【発明の詳細な説明】
【０００１】
（目次）
発明の属する技術分野
従来の技術（図８〜図１１）
発明が解決しようとする課題（図１０，図１１）
課題を解決するための手段
発明の実施の形態
（ａ）第１実施形態の説明（図１〜図５）
（ｂ）第２実施形態の説明（図６，図７）
発明の効果
【０００２】
【発明の属する技術分野】
本発明は、複数の処理装置〔以下、ＰＥ（Processor Element)という〕を相互に通信可能に接続して構成された並列計算機におけるデータ転送方法に関し、特に、分散主記憶ＭＩＭＤ（Multiple Instruction stream Multiple Data stream）型並列計算機システムに用いて好適の技術に関する。
【０００３】
【従来の技術】
近年、例えば数値計算や画像処理等のように膨大なデータを高速に処理する必要性から、コンピュータシステムの高速化や大容量化が要求されるている。これに伴って、複数のＰＥをそなえて相互に通信を行ないながら並列的に処理を行なう並列処理技術が研究・開発されている。
【０００４】
一般に、並列計算機システムでは、例えば図８に示すように、ｎ台のＰＥ（ＰＥ番号として＃１〜＃ｎが付与されているものとする）１０１が、通信手段としてのＰＥ間結合網１００を介して相互に通信可能に接続されている。
各ＰＥ１０１には、図９に示すように、転送処理部１０２，命令処理部（ＣＰＵ）１０３および主記憶１０４がそなえられている。
【０００５】
ここで、転送処理部１０２は、主記憶１０４上のデータの送受信処理を行なうものであり、命令処理部１０３は、ＰＥ１０１相互間の通信に際してプログラム処理を行なうものである。
なお、上述のように転送処理部１０２と命令処理部１０３とを独立に設けることにより、命令処理部１０３の負荷とオーバヘッドとを削減できるようになっている。また、転送処理部１０２は、送信処理と受信処理とを同時並列的に行なえるように構成され、これにより、データ転送速度とデータ転送効率との向上をはかっている。
【０００６】
ところで、近年、上述のような分散主記憶ＭＩＭＤ型並列計算機システムにおいては、メッセージパッシングモデルと呼ばれるプログラミングモデルを用いた並列プログラミングが盛んになりつつある。このメッセージパッシングモデルは、ＰＥ１０１相互間でメッセージの送受信を明示的に行なうことにより、ＰＥ１０１相互間のデータ転送処理とＰＥ１０１相互間の同期処理とを実行するモデルである。このため、並列計算機システムにおいて、メッセージパッシングモデルを効率よく実現できるようにする必要がある。
【０００７】
メッセージパッシングモデルでデータ転送を行なう際には、一般に、送信側ＰＥ１０１では、転送データ本体に、プログラムが指定する送信側制御データを付加する一方、受信側ＰＥ１０１では、受信した転送データ本体と送信側制御データとに、受信側制御データを付加して保持・管理する必要がある。
以下に、図１０および図１１により、従来のメッセージ転送処理について説明する。なお、図１０，図１１では、送信側および受信側の各ＰＥ１０１の主記憶１０４上におけるデータ保持状態が示され、時間経過が左方から右方へ進むものとして概略的な表示がなされている。
【０００８】
図１０に示すメッセージ転送処理では、送信側ＰＥ１０１上のプログラムが、まず、主記憶１０４上において、配列の一部等の転送データ本体２０１を複写するとともに、複写された転送データ本体２０１に、送信メッセージの識別子（以下、ＩＤという）等の送信側制御データ２０２を付加することにより、パケットボディ２００を組み立てる。同時に、送信側ＰＥ１０１上のプログラムは、主記憶１０４上において、パケットボディ２００を転送するための通信装置（図９の転送処理部１０２）への転送コマンド２１０の組立も行なう。そして、通信装置（図９の転送処理部１０２）に対して、組み立てた転送コマンド２１０の実行を指示する〔以上、図１０中の期間（１）参照〕。
【０００９】
これに応じて、通信装置は、転送コマンド２１０によってポインティングされる主記憶１０４上のパケットボディ２００を読み出し、転送コマンド２１０をパケットヘッダとして、このパケットヘッダとパケットボディ２００とからなるパケットを、ＰＥ間結合網１００へ送り出す。ＰＥ間結合網１００は、パケットヘッダ内の転送コマンド２１０に含まれる受信側ＰＥ１０１の指定情報に従い、パケットを受信側ＰＥ１０１へ転送する〔以上、図１０中の期間（２）参照〕。
【００１０】
受信側ＰＥ１０１では、パケットヘッダ内の転送コマンド２１０は通信装置（図９の転送処理部１０２）へ送られ、コマンド解析等の処理が実行されるとともに、送信側制御データ２０２および転送データ本体２０１を含むパケットボディ２００は、主記憶１０４上のメッセージ受信キュー１１０内に格納される〔以上、図１０中の期間（３）参照〕。
【００１１】
そして、受信側ＰＥ１０１上のプログラムが、主記憶１０４上において、受信側制御データ２２０を、受信したメッセージ（パケットボディ２００）に付加する〔図１０中の期間（４）参照〕。この受信側制御データ２２０には、受信メッセージのＩＤや、メッセージ受信キュー１１０内のメッセージをポインティングするための情報などが含まれている。
【００１２】
一方、図１１に示すメッセージ転送処理では、送信側ＰＥ１０１上のプログラムが、まず、主記憶１０４上において、送信メッセージの識別子（以下、ＩＤという）等の送信側制御データ２０２を組み立てるとともに、この送信側制御データ２０２を転送するための通信装置への転送コマンド２１０Ａと、転送データ本体２０１を転送するための通信装置への転送コマンド２１０Ｂとを組み立てる。そして、通信装置（図９の転送処理部１０２）に対して、組み立てた２つの転送コマンド２１０Ａ，２１０Ｂの実行を指示する〔以上、図１１中の期間（１）参照〕。
【００１３】
これに応じて、通信装置は、転送コマンド２１０Ａによってポインティングされる主記憶１０４上の送信側制御データ２０２を読み出し、転送コマンド２１０Ａをパケットヘッダ、送信側制御データ２０２をパケットボディとして、１つ目のパケットを、ＰＥ間結合網１００へ送り出す。
続いて、通信装置は、転送コマンド２１０Ｂによってポインティングされる主記憶１０４上の転送データ本体２０１を読み出し、転送コマンド２１０Ｂをパケットヘッダ、転送データ本体２０１をパケットボディとして、２つ目のパケットを、ＰＥ間結合網１００へ送り出す。
【００１４】
ＰＥ間結合網１００は、これら２つのパケットを、各パケットヘッダ内の転送コマンド２１０Ａ，２１０Ｂに含まれる受信側ＰＥ１０１の指定情報に従って、受信側ＰＥ１０１へ転送する〔以上、図１１中の期間（２）参照〕。
受信側ＰＥ１０１では、各パケットのパケットヘッダ内の転送コマンド２１０Ａ，２１０Ｂは通信装置（図９の転送処理部１０２）へ送られ、コマンド解析等の処理が実行されるとともに、パケットボディとして転送されてきた送信側制御データ２０２および転送データ本体２０１は、一体化されて、主記憶１０４上のメッセージ受信キュー１１０内に格納される〔以上、図１１中の期間（３）参照〕。
【００１５】
そして、受信側ＰＥ１０１上のプログラムが、主記憶１０４上において、受信側制御データ２２０を、受信したメッセージ（一体化された送信側制御データ２０２および転送データ本体２０１）に付加する〔図１１中の期間（４）参照〕。この受信側制御データ２２０には、前述と同様、受信メッセージのＩＤや、メッセージ受信キュー１１０内のメッセージをポインティングするための情報などが含まれている。
【００１６】
【発明が解決しようとする課題】
しかしながら、図１０に示すメッセージ転送処理では、送信側ＰＥ１０１の主記憶１０４上でメッセージ（パケットボディ２００）を組み立てる際に、転送データ本体２０１をコピーする必要があるため、大きな処理量が必要となる。従って、大容量のメッセージ転送を行なう場合には、そのコピー処理に多大な時間を要し、メッセージパッシングを効率よく行なうことができないという課題があった。
【００１７】
図１１に示すメッセージ転送処理では、送信側ＰＥ１０１において、転送データ本体２０１をコピーする必要はなくなるが、１つのメッセージを転送するために２つのパケットを組み立てて転送する必要があり、２つの転送コマンド２１０Ａ，２１０Ｂを組み立てなければならず、処理量が多くなって効率が悪いという課題があった。
【００１８】
また、図１１に示すメッセージ転送処理では、受信側ＰＥ１０１において、２つのパケットの間に他ＰＥからのパケットが割り込むと以後の処理が面倒になるため、送信側ＰＥ１０１からの２つのパケットを受信し終えるまでは、他ＰＥからのパケットを受信しないようにするなどの特殊な制御が必要になるなどの課題もあった。
【００１９】
本発明は、このような課題に鑑み創案されたもので、転送データ本体のコピーが不要で、且つ、１個のパケット転送で１個のメッセージを転送できるようにして、メッセージ転送のための処理量を少なくし、メッセージ転送の効率化をはかった、並列計算機におけるデータ転送方法を提供することを目的とする。
【００２０】
【課題を解決するための手段】
このため、本発明の並列計算機におけるデータ転送方法は、通信手段を介し複数の処理装置を相互に通信可能に接続して構成された分散主記憶ＭＩＭＤ型並列計算機におけるデータ転送方法であって、送信側処理装置が、各種制御情報を含むパケットヘッダと転送データ本体を含むパケットボディとからなるパケットを該通信手段に対して発信するとともに、該通信手段が、該パケットを所定の受信側処理装置へ転送することにより、該送信側処理装置の主記憶上のデータを該受信側処理装置の主記憶上へ転送するものにおいて、該送信側処理装置の主記憶上に作成される前記パケットヘッダを、データ転送を指示するコマンド用のコマンド領域（ハードウエア用コマンド領域）と、プログラムにより指定されたデータを転送するための非コマンド領域（プログラム用領域）とから構成し、前記パケットヘッダの非コマンド領域に、該分散主記憶ＭＩＭＤ型並列計算機においてメッセージパッシングモデルでデータ転送を行なう際にプログラムによって指定され送信メッセージの識別子を含む送信側制御データを設定し、該受信側処理装置では、前記パケットを受信すると、前記パケットヘッダの非コマンド領域と前記パケットボディとを該主記憶上のメッセージ受信キューに格納するとともに、前記パケットヘッダのコマンド領域を、該主記憶上において複数のコマンド領域を格納可能に構成されたコマンド受信領域に格納し、受信に際して異常が発生しない場合には前記パケットヘッダのコマンド領域を該コマンド受信領域に対して上書きにより格納する一方、異常発生時には当該異常の発生要因に係るパケットのコマンド領域を該コマンド受信領域に保持し、該コマンド受信領域に、新たなコマンド領域を格納するための有効領域が無くなった場合には、新たなパケットの受信を停止することを特徴としている（請求項１）。
【００２４】
このとき、送信側処理装置で前記パケットヘッダのコマンド領域にプロセス識別子を設定するとともに、該受信側処理装置の主記憶上に前記プロセス識別子毎にメッセージ受信キューをそなえ、該受信側処理装置では、前記パケットヘッダの非コマンド領域と前記パケットボディとを、前記パケットヘッダのコマンド領域のプロセス識別子に応じたメッセージ受信キューに格納するように構成してもよい（請求項２）。
【００２６】
上述した本発明の並列計算機におけるデータ転送方法および並列計算機用処理装置では、データ送信時に、データ転送を指示するコマンドがパケットヘッダのコマンド領域に設定されるとともに、プログラムにより送信側制御データがパケットヘッダの非コマンド領域に設定され、転送コマンドおよび送信側制御データの両方を含むパケットヘッダと転送データ本体を含むパケットボディとからなるパケットが、受信側処理装置に転送される。
【００２７】
このとき、転送データ本体は、パケットヘッダのコマンド領域に設定された転送コマンドにより指定されパケットボディとして主記憶から読み出されるので、送信側処理装置でのパケット組立時に転送データ本体を主記憶上でコピーする必要がなく、また、パケットヘッダに送信側制御データが含まれているので、２個のパケット転送を行なう必要もなくなり、１個のパケット転送で１個のメッセージを転送することができる。
【００２８】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
（ａ）第１実施形態の説明
図１は本発明の第１実施形態としての並列計算機システムの全体構成を示すブロック図であり、この図１に示すように、本実施形態の並列計算機システムも、図８に示したものとほぼ同様に、ｎ台のＰＥ（ＰＥ番号として＃１〜＃ｎが付与されているものとする）１が、通信手段としてのＰＥ間結合網２を介して相互に通信可能に接続されている。
【００２９】
各ＰＥ１は、図２のＰＥ番号＃１のＰＥ１のブロック内に表記されるように、少なくとも通信装置３および主記憶４をそなえて構成されている。なお、図１においては、ＰＥ番号＃１のＰＥ１についてのみその内部を図示しているが、他のＰＥ番号＃２〜＃ｎのＰＥ１も、同様に構成され、後述する各種機能を有することは言うまでもない。
【００３０】
ここで、通信装置３は、図９にて前述した転送処理部１０２と同様に、主記憶４上のデータの送受信処理を行なうもので、その詳細構成や動作については図４，図５により後述する。
そして、本実施形態の各ＰＥ１は、他ＰＥ１に対してデータ送信（メッセージ転送）を行なう際には、基本的には従来と同様、パケットヘッダ１１とパケットボディ１２とからなるパケット１０を、ＰＥ間結合網２に対して発信するものであるが、本実施形態では、パケットヘッダ１１が、データ転送を指示するための各種コマンド（詳細は図３参照；以下、通信装置転送コマンドという）１５を設定されるコマンド領域（ハードウエア用コマンド領域）１３と、プログラムにより指定されたデータを転送するための非コマンド領域（プログラム用領域）１４とから構成され、パケットヘッダ１１の非コマンド領域１４には、プログラムにより送信側制御データ１６が設定される。
【００３１】
なお、主記憶４上の配列の一部等の転送データ本体１７は、パケットヘッダ１１のコマンド領域１３に設定される通信装置転送コマンド１５により指定され、パケットボディ１７として主記憶４から読み出されるようになっている。
また、パケットヘッド１１の内容は、例えば図３に示すようになっている。ここに示す例では、ワード“０”〜“１５”が前述したコマンド領域１３に対応する部分であり、ワード“１６”〜“３１”が、送信側制御データ１６を設定される非コマンド領域１４に対応する部分である。
【００３２】
コマンド領域１３に設定される通信装置転送コマンド１５としては、図３に示す通り、ワード“０”に受信ＰＥ番号が、ワード“１”に送信ＰＥ番号が、ワード“２”に送信コマンドコード，送信パケット配置指定，送信ボディ配置指定，予約が設定され、同様に、ワード“３”に受信コマンドコード，受信パケット配置指定，受信ボディ配置指定，予約が設定される。さらに、ワード“４”に要素長が、ワード“５”にボディ長が、ワード“６”に送信ボディ開始アドレスが、ワード“７”に受信ボディ開始アドレスが、ワード“８”に送信ストライド距離１が、ワード“９”に送信ストライド距離１要素数が、ワード“１０”に送信ストライド２が、ワード“１１”に予約が、ワード“１２”に受信ストライド距離１が、ワード“１３”に受信ストライド距離１要素数が、ワード“１４”に受信ストライド２が、ワード“１５”に予約が設定される。
【００３３】
ここで、上述した設定データのうち、“送信パケット配置指定”は、本実施形態では、送信パケット１０（パケットヘッダ１１とパケットボディ１２）の配置手法は１通りしか無いので、この“送信パケット配置指定”領域の内容は無視される。
また、“受信パケット配置指定”として、例えば、“0x00”が設定された場合、パケットボディ１２（転送データ本体１７）は、受信ボディ開始アドレスに格納され、“OxO1”が設定された場合、後述するメッセージ受信キュー１８内に、パケットヘッダ１１とパケットボディ１２とが格納される。
【００３４】
“送信ボディ配置指定”や“受信ボディ配置指定”としては、例えば、“0x00”により連続配置が、“0x01”によりストライド配置が、“0x02”により二重ストライド配置が、“0x03”によりインダイレクト配置が指定される。
このとき、ボディ開始アドレスをＳ、ストライド距離１をD1、ストライド距離２をD2、ストライド距離１要素数をN1とすると、“送信ボディ配置指定”としてストライド配置が指定された場合、送信側ＰＥ１において、アドレスS,  S+D1,S+2*D1,S+3*D1, …,S+N1*D1のデータが主記憶４から転送データとして読み出される一方、“受信ボディ配置指定”としてストライド配置が指定された場合、受信側ＰＥ１において、主記憶４のアドレスS,S+D1,S+2*D1,S+3*D1, …,S+N1*D1に転送データが格納されることになる。
【００３５】
また、“送信ボディ配置指定”として二重ストライド配置が指定された場合、送信側ＰＥ１において、アドレス
S,             S+D1,             S+2*D1,..............,S+N1*D1,
S+N1*D1+D2,    S+N1*D1+D2+D1,    S+N1*D1+D2+2*D1,.....,S+2*N1*D1+D2,
S+2*N1*D1+2*D2,S+2*N1*D1+2*D2+D1,S+2*N1*D1+2*D2+2*D1,.,S+3*N1*D1+2*D2,
S+3*N1*D1+3*D2,............
のデータが主記憶４から転送データとして読み出される一方、“受信ボディ配置指定”として二重ストライド配置が指定された場合、受信側ＰＥ１において、主記憶４における上記アドレスに転送データが格納されることになる。
【００３６】
上述のような転送コマンドをパケットヘッダ１１のコマンド領域１３に設定することにより、本実施形態のパケットボディ１２では、送信側ＰＥ１の主記憶４上の配列のストライド転送や部分配列転送等を行なうことができる。ただし、受信側ＰＥ１の主記憶４上でのパケットボディ１２は、図２や図６に示すように、常に連続データとして格納される。
【００３７】
次に、図２により、第１実施形態の並列計算機システムにおけるデータ転送手順を説明する。なお、図２では、送信側および受信側の各ＰＥ１の主記憶４上におけるデータ保持状態が示され、時間経過が左方から右方へ進むものとして概略的な表示がなされている。
図２に示すように、送信側ＰＥ１上のプログラムが、まず、主記憶４上において、転送データ本体１７を転送するための通信装置転送コマンド１５を、コマンド領域１３に指定するとともに、図３に示したごとくコマンド領域１３に連続する非コマンド領域１４に、送信メッセージのＩＤ等の送信側制御データ１６を指定する。これらのコマンド領域１３と非コマンド領域１４とを合わせてパケットヘッダ１１とする。そして、通信装置３（図１参照）に対し、パケットヘッダ１１のコマンド領域１３内の通信装置転送コマンド１５の実行を指示する〔以上、図２中の期間（１）参照〕。
【００３８】
これに応じて、送信側通信装置３は、通信装置転送コマンド１５によってポインティングされる主記憶４上のパケットボディ１７をパケットボディ１２として読み出し、通信装置転送コマンド１５および送信側制御データ１６を含むパケットヘッダ１１を付加し、パケット１０を形成してＰＥ間結合網２へ送り出す。ＰＥ間結合網２は、パケットヘッダ１１内の通信装置転送コマンド１５に含まれる受信側ＰＥ１の指定情報に従い、パケット１０を受信側ＰＥ１へ転送する〔以上、図２中の期間（２）参照〕。
【００３９】
受信側ＰＥ１では、パケットヘッダ１１の通信装置転送コマンド１５は、受信側通信装置３へ送られ、コマンド解析等の処理が実行されるとともに、パケット１０の全体、つまり、通信装置転送コマンド１５および送信側制御データ１６を含むパケットヘッダ１１と、転送データ本体１７を含むパケットボディ１２との両方が、主記憶４上のサイクリックキューであるメッセージ受信キュー１８内に格納される〔以上、図２中の期間（３）参照〕。
【００４０】
そして、受信側ＰＥ１上のプログラムが、主記憶４上において、受信側制御データ１９を、受信したメッセージ（パケット１０）に付加する〔図２中の期間（４）参照〕。この受信側制御データ１９には、受信メッセージのＩＤや、メッセージ受信キュー１８内のメッセージをポインティングするための情報などが含まれている。
【００４１】
なお、送信側ＰＥ１で、パケットヘッダ１１のコマンド領域１３に、通信装置転送コマンド１５の情報の一つとしてプロセスＩＤを設定する一方、受信側ＰＥ１の主記憶４上にプロセスＩＤ毎に複数のメッセージ受信キュー１８をそなえておいてもよい。この場合、受信側ＰＥ１では、パケットヘッダ１１とパケットボディ１２との両方が、パケットヘッダ１１のコマンド領域１３のプロセスＩＤに応じたメッセージ受信キュー１８に格納される。
【００４２】
ところで、次に、本実施形態の各ＰＥ１における通信装置３の詳細構成について、図４を参照しながら説明する。なお、この図４に示す通信装置３は、後述する第２実施形態でも用いられるものである。
通信装置３は、大きく分けて３つの部分、即ち、送信系３Ａ，受信系３Ｂおよび主記憶アクセス制御部３Ｃから構成されている。主記憶アクセス制御部３Ｃは、送信系３Ａおよび受信系３Ｂからの指令に応じ主記憶４に対してアクセスを行ない、主記憶４から送信系３Ａへのデータ転送や、受信系３Ｂから主記憶４へのデータ転送を制御するものである。
【００４３】
送信系３Ａは、コマンドレジスタ２１，デコーダ２２，制御回路２３，アドレスレジスタ２４，セレクタ２５，加算器２６，ボディアドレスレジスタ２７，アドレス生成回路２８，パケットヘッダキューベースアドレスレジスタ２９，送信ポインタ３０，１加算器３１，送信末尾ポインタ３２，比較器３３および出力バッファ３４から構成されている。
【００４４】
ここで、コマンドレジスタ２１は、データ送信時に、主記憶アクセス制御部３Ｃを介して主記憶４から読み出されたパケットヘッダ１１の通信装置転送コマンド１５を一時的に保持するものである。
デコーダ２２は、コマンドレジスタ２１に保持された転送コマンド１５を解析するものであり、制御回路２３は、このデコーダ２２の解析結果に基づいて、送信系３Ａの各部を制御するものである。
【００４５】
アドレスレジスタ２４は、主記憶４から読み出すべき転送データの主記憶上アドレスを一時的に保持するもので、このアドレスレジスタ２４には、セレクタ２５により選択されたアドレスデータが保持されるようになっている。
セレクタ２５は、加算器２６，ボディアドレスレジスタ２７またはアドレス生成回路２８のいずれかからのアドレスデータを選択して、アドレスレジスタ２４に出力するものである。
【００４６】
加算器２６は、パケットヘッダ１１を主記憶４から読み出すために、パケットヘッダ１１の部分に対応するアドレスを順次生成するもので、レジスタ２９に保持されるパケットヘッダキューベースアドレス（パケットヘッダ１１の主記憶４上の先頭アドレス）と、送信ポインタ３０の値とを加算してセレクタ２５へ出力する。送信ポインタ３０は、初期値として０が設定されているが、データ送信を開始すると、その送信ポインタ３０の値は、１加算器３１により１ずつカウントアップされる。
【００４７】
従って、加算器２６からの出力は、パケットヘッダキューベースアドレスを初期値として１ずつ順に増加する。このような加算器２６からのアドレス値は、パケットヘッダキューベースアドレスからパケットヘッダ１１の最終アドレスに到達するまで、セレクタ２５を介してアドレスレジスタ２４に順次設定される。これにより、パケットヘッダ１１が、主記憶アクセス制御部３Ｃを介して主記憶４から読み出される。
【００４８】
また、ボディアドレスレジスタ２７は、ボディアドレス（主記憶４上の転送データ本体１７の先頭アドレス，前述したボディ開始アドレスＳ）を保持するものであり、パケットヘッダ１１の読出後には、セレクタ２５により、このレジスタ２７のボディアドレスがアドレスレジスタ２４に設定されることで、パケットボディ１２を成す転送データ本体１７の読出が開始される。
【００４９】
ボディアドレスがアドレスレジスタ２４に設定されると、以降、セレクタ２５は、アドレス生成回路２８からのアドレス値を選択して、順次、アドレスレジスタ２４に設定するように動作する。
このとき、アドレス生成回路２８は、転送コマンド１５中で指定される送信ボディ配置に応じ、ボディアドレスを初期値としてアドレス生成を行なうもので、送信ボディ配置が連続配置指定であればボディアドレスから１ずつ増加する値を出力するほか、送信ボディ配置がストライド配置指定あるいは二重ストライド配置指定であれば、前述した計算式に基づいてアドレス値を生成する。
【００５０】
このようなアドレス生成回路２８からのアドレス値は、セレクタ２５を介してアドレスレジスタ２４に順次設定され、これにより、転送データ本体１７が、パケットボディ１２として、主記憶アクセス制御部３Ｃを介して主記憶４から順次読み出される。
上述のごとく読み出されたパケットヘッダ１１およびパケットボディ１２は、パケット１０として出力バッファ３４に保持され、図５にて後述するごとく、ＰＥ間結合網２を経由して、受信側ＰＥ１へ転送されるようになっている。
【００５１】
なお、送信末尾ポインタ３２は、送信末尾のポインタ値を予め設定されるものであり、比較器３３は、送信ポインタ３０の値と送信末尾ポインタ３２の値とを比較し、一致した場合には送信停止信号を出力するものである。
一方、受信系３Ｂは、コマンドレジスタ３５，デコーダ３６，制御回路３７，入力バッファ３８，アドレスレジスタ３９，セレクタ４０，加算器４１，コマンド受信領域アドレスレジスタ４２，４３，アドレス生成回路４４，メッセージ受信キューベースアドレスレジスタ４５，受信ポインタ４６，１加算器４７，受信先頭ポインタ４８および比較器４９から構成されている。
【００５２】
ここで、コマンドレジスタ３５は、ＰＥ間結合網２からのデータ受信時に、パケットヘッダ１１の通信装置転送コマンド１５を一時的に保持するものであり、デコーダ３６は、コマンドレジスタ３５に保持された転送コマンド１５を解析するものであり、制御回路３７は、このデコーダ３６の解析結果に基づいて、受信系３Ｂの各部を制御するものである。
【００５３】
入力バッファ３８は、ＰＥ間結合網２を介して送信側ＰＥ１から受信したパケット１０を一時的に保持するもので、この入力バッファ３８に保持されたパケット１０のデータは、図５や図７に示すフローチャートに従って後述するごとく、アドレスレジスタ３９に示されるアドレスと組になって、順次、主記憶アクセス制御部３Ｃを介して主記憶４上のメッセージ受信キュー１８に格納されるようになっている。
【００５４】
アドレスレジスタ３９は、入力バッファ３８に保持されているパケット１０を書き込むべき主記憶４上のアドレスを一時的に保持するもので、このアドレスレジスタ３９には、セレクタ４０により選択されたアドレスデータが保持されるようになっている。
セレクタ４０は、加算器４１，コマンド受信領域アドレスレジスタ４２，４３またはアドレス生成回路４４のいずれかからのアドレスデータを選択して、アドレスレジスタ３９に出力するものである。なお、コマンド受信領域アドレスレジスタ４２，４３は、第１実施形態では用いられず、後述する第２実施形態を実現する際に使用されるもので、これらの構成要素の構成・動作については第２実施形態の説明中で行なう。
【００５５】
加算器４１は、入力バッファ３８に保持されているパケット１０を主記憶４上のメッセージ受信キュー１８に格納する際の書込アドレスを順次生成するためのもので、レジスタ４５に保持されるメッセージ受信キューベースアドレス（メッセージ受信キュー１８の空きの先頭アドレス）と、受信ポインタ４６の値とを加算してセレクタ４０へ出力する。
【００５６】
受信ポインタ４６は、初期値として０が設定されているが、主記憶４へのデータ書込を開始すると、その受信ポインタ４６の値は、メッセージ受信キュー１８に対してこの受信キュー１８の１ブロック分のデータが書き込まれる度に、１加算器４７により１ずつカウントアップされ、セレクタ４０を介してアドレスレジスタ３９に設定されるようになっている。
【００５７】
従って、加算器４１からの出力は、メッセージ受信キューベースアドレスを初期値として１ブロック分のデータ書込毎に１ずつ順に増加する。このような加算器４１からのアドレス値は、パケット１０を全て書き込むまで、セレクタ４０を介してアドレスレジスタ３９に順次設定される。
そして、パケット１０のデータは、アドレスレジスタ３９に順次設定されるアドレスと組になって、主記憶アクセス制御部３Ｃを介して主記憶４のメッセージ受信キュー１８に書き込まれる。
【００５８】
このとき、アドレス生成回路４４は、加算器４１からのアドレス値がアドレスレジスタ３９に設定されると、入力バッファ３８から主記憶４へのデータ書込を行なう度に、アドレスレジスタ３９に設定されたアドレス値に対して１回のデータ格納バイト長を加算するもので、その加算結果は、セレクタ４０を介してアドレスレジスタ３９に設定される。このアドレス生成回路４４による加算処理は、１ブロック分のデータ書込を完了するかパケット１０全ての書込を終了するまで行なわれる。
【００５９】
なお、受信先頭ポインタ４８は、サイクリックキューであるメッセージ受信キュー１８の先頭ポインタ値を予め設定されるものであり、比較器４９は、受信ポインタ４６の値と受信先頭ポインタ４８の値とを比較し、一致した場合には受信溢れ信号を出力するものである。
次に、第１実施形態の動作〔特にデータ受信時（ＰＥ間結合網２および受信系３Ｂ）の動作〕について、図５のフローチャート（ステップＳ１〜Ｓ１２）に従って説明する。
【００６０】
ＰＥ間結合網２は、このＰＥ間結合網２に接続された各ＰＥ１の入力バッファ３８の空きワード数を、常時、捕捉しており（ステップＳ１）、所定ＰＥ１を宛先（受信側ＰＥ）とするパケット１０が存在し、且つ、この受信側ＰＥ１の入力バッファ３８が空いている場合には（ステップＳ２）、１ワード目にパケット送信開始信号を伴ってパケット１０の転送を開始し（ステップＳ３）、受信側ＰＥ１の入力バッファ３８の空き状態に応じて、パケット１０の全体をその受信側ＰＥ１に転送する（ステップＳ４）。このステップＳ４による処理は、１つのパケット１０の転送を終了するまで（ステップＳ５でＹＥＳ判定となるまで）繰り返し行なわれ、パケット１０の転送を終了すると、ステップＳ１に戻る。
【００６１】
ステップＳ３，Ｓ４によりＰＥ間結合網２から受信側ＰＥ１へのパケット転送が開始されると、受信側ＰＥ１の通信装置３内の受信系３Ｂでは、入力バッファ３８が空いている限り、パケット１０を読み込む（ステップＳ６）。このとき、パケットヘッダ１１内のコマンドコード（通信装置転送コマンド１５）が流れるタイミングで、その転送コマンド１５をコマンドレジスタ３５に読み込む（ステップＳ７）。
【００６２】
ステップＳ７によりコマンドレジスタ３５に読み込まれたコマンドコードはデコーダ３６により解読されて、パケット１０の受信格納方法を制御するための信号が、制御回路３７により生成される（ステップＳ８）。
本実施形態では、図２により前述したように、パケット１０の全体、つまり、通信装置転送コマンド１５および送信側制御データ１６を含むパケットヘッダ１１と、転送データ本体１７を含むパケットボディ１２との両方を、主記憶４上のメッセージ受信キュー１８にエンキューすべく、まず、セレクタ４０により、加算器４１からのアドレス値が選択されてアドレスレジスタ３９に設定される。
【００６３】
つまり、アドレスレジスタ３９には、まず、メッセージ受信キューベースアドレスレジスタ４５の値と受信ポインタ４６の値との加算値が設定される。受信ポインタ４６の値は、メッセージ受信キュー１８に対して１ブロック分のパケットデータの格納を終える毎に１加算器４７により１ずつカウントアップされる（ステップＳ９）。
【００６４】
アドレスレジスタ３９に設定されたアドレスと入力バッファ３８からのパケットデータとを組にして主記憶アクセス制御部３Ｃへ送り、この主記憶アクセス制御部３Ｃを介して、パケットデータを主記憶４上のメッセージ受信キュー１８内へ格納する（ステップＳ１０）。
ステップＳ１０により、パケットデータを１回格納すると、アドレス生成回路４４により、アドレスレジスタ３９のアドレス値に１回のデータ格納バイト長が加算され、その加算結果が、セレクタ４０を介してアドレスレジスタ３９に設定される（ステップＳ１１）。
【００６５】
ステップＳ１０およびＳ１１による処理は、メッセージ受信キュー１８に対して１ブロック分のパケットデータ転送を完了するか、パケット１０の全てをメッセージ受信キュー１８に転送するまで（ステップＳ１２でＹＥＳ判定となるまで）繰り返し実行され、また、上述したステップＳ９〜Ｓ１２による処理は、パケット１０の受信を完了するまで、つまり、パケット１０の全てをメッセージ受信キュー１８に転送するまで（ステップＳ１３でＹＥＳ判定となるまで）繰り返し実行される。
【００６６】
このように、本発明の第１実施形態によれば、転送コマンド１５および送信側制御データ１６の両方を含むパケットヘッダ１１と、転送データ本体１７を含むパケットボディ１２とからなるパケット１０が受信側ＰＥ１に転送されるので、送信側ＰＥ１でのパケット組立時に転送データ本体１７を主記憶４上でコピーする必要がなく、１個のパケット転送で１個のメッセージを転送できる。従って、メッセージ転送のための処理量／オーバヘッドを少なくすることができ、このようなメッセージ転送（メッセージパッシング）の性能や効率が大幅に向上するという利点がある。
【００６７】
（ｂ）第２実施形態の説明
次に、本発明の第２実施形態について説明するが、この第２実施形態においても、送信側ＰＥ１で行なわれるパケット１０の組立処理や、送信側ＰＥ１からＰＥ間結合網２へのパケット送出処理は第１実施形態のものと全く同じであるが、第２実施形態では、図６および図７にて説明する通り、受信側ＰＥ１でのパケット１０の格納手法が第１実施形態と異なっている。
【００６８】
図６により、第２実施形態の並列計算機システムにおけるデータ転送手順を説明する。なお、図６でも、送信側および受信側の各ＰＥ１の主記憶４上におけるデータ保持状態が示され、時間経過が左方から右方へ進むものとして概略的な表示がなされている。
図６に示すように、送信側ＰＥ１上のプログラムが、まず、主記憶４上において、転送データ本体１７を転送するための通信装置転送コマンド１５を、コマンド領域１３に指定するとともに、図３に示したごとくコマンド領域１３に連続する非コマンド領域１４に、送信メッセージのＩＤ等の送信側制御データ１６を指定する。これらのコマンド領域１３と非コマンド領域１４とを合わせてパケットヘッダ１１とする。そして、通信装置３に対し、パケットヘッダ１１のコマンド領域１３内の通信装置転送コマンド１５の実行を指示する〔以上、図６中の期間（１）参照〕。
【００６９】
これに応じて、送信側通信装置３は、通信装置転送コマンド１５によってポインティングされる主記憶４上のパケットボディ１７をパケットボディ１２として読み出し、通信装置転送コマンド１５および送信側制御データ１６を含むパケットヘッダ１１を付加し、パケット１０を形成してＰＥ間結合網２へ送り出す。ＰＥ間結合網２は、パケットヘッダ１１内の通信装置転送コマンド１５に含まれる受信側ＰＥ１の指定情報に従い、パケット１０を受信側ＰＥ１へ転送する〔以上、図６中の期間（２）参照〕。ここまでの処理は、第１実施形態と全く同じである。
【００７０】
第２実施形態の受信側ＰＥ１では、主記憶４上に、メッセージ受信キュー１８以外に、パケットヘッダ１１のコマンド領域１３（転送コマンド１５）を２個分格納するためのコマンド受信領域２０Ａ，２０Ｂが設けられている。そして、図７にても後述するごとく、パケットヘッダ１１の通信装置転送コマンド１５は、受信側通信装置３へ送られ、コマンド解析等の処理が実行された後、コマンド受信領域２０Ａ，２０Ｂの空き状態に応じ、コマンド受信領域２０Ａまたは２０Ｂに保持される。
【００７１】
このとき、第２実施形態では、受信に際して異常が発生しない場合、パケットヘッダ１１のコマンド領域１３は、コマンド受信領域２０Ａまたは２０Ｂに対して上書きにより格納される一方、異常発生時には、当該異常の発生要因に係るパケット１０のコマンド領域１３をコマンド受信領域２０Ａまたは２０Ｂに保持し続け、新たなコマンド領域１３を格納するための有効領域が無くなった場合、コマンド受信領域２０Ａ，２０Ｂのいずれにも転送コマンド１５が保持され上書きを行なえない状況になった場合には、新たなパケット１０の受信を停止し、異常要因が解消されるまで待機する。
【００７２】
パケットヘッダ１１のコマンド領域１３（転送コマンド１５）を主記憶４上のコマンド受信領域２０Ａまたは２０Ｂに格納した後には、パケット１０の残りの部分、つまり、非コマンド領域１４における送信側制御データ１６と、転送データ本体１７を含むパケットボディ１２とが、主記憶４上のサイクリックキューであるメッセージ受信キュー１８内に格納される〔以上、図６中の期間（３）参照〕。
【００７３】
そして、受信側ＰＥ１上のプログラムが、主記憶４上において、受信側制御データ１９を、受信したメッセージ（送信側制御データ１６および転送データ本体１７）に付加する〔図２中の期間（４）参照〕。この受信側制御データ１９には、受信メッセージのＩＤや、メッセージ受信キュー１８内のメッセージをポインティングするための情報などが含まれている。
【００７４】
なお、第２実施形態においても、送信側ＰＥ１で、パケットヘッダ１１のコマンド領域１３に、通信装置転送コマンド１５の情報の一つとしてプロセスＩＤを設定する一方、受信側ＰＥ１の主記憶４上にプロセスＩＤ毎に複数のメッセージ受信キュー１８をそなえておいてもよい。この場合、受信側ＰＥ１では、パケットヘッダ１１の送信側制御データ１６とパケットボディ１２（転送データ本体１７）とが、パケットヘッダ１１のコマンド領域１３のプロセスＩＤに応じたメッセージ受信キュー１８に格納される。
【００７５】
ここで、図４に示した通信装置３（受信系３Ｂ）の構成のうち、この第２実施形態に係る部分の構成について詳細に説明する。
図４に示したコマンド受信領域アドレスレジスタ４２，４３およびアドレス生成回路４４は、パケットヘッダ１１のうち通信装置転送コマンド１３のみ、メッセージ受信キュー１８ではなく主記憶４上のコマンド受信領域２０Ａまたは２０Ｂに書き込む際に用いられる。このとき、送信側制御データ１５および転送データ本体１７は、前述した加算器４１からのアドレス値に基づいてメッセージ受信キュー１８に書き込まれる。
【００７６】
コマンド受信領域アドレスレジスタ４２，４３は、図６に示すコマンド受信領域２０Ａ，２０Ｂの先頭アドレスをそれぞれ保持するものであり、第２実施形態では、コマンド受信領域２０Ａ，２０Ｂの空き状態に応じて、まず、セレクタ４０が、コマンド受信領域アドレスレジスタ４２または４３のアドレスを選択してアドレスレジスタ３９に設定するようになっている。
【００７７】
コマンド受信領域アドレスがアドレスレジスタ３９に設定されると、以降、セレクタ４０は、アドレス生成回路４４からのアドレス値を選択して、順次、アドレスレジスタ３９に設定するように動作する。
このとき、アドレス生成回路４４は、入力バッファ３８から主記憶４へのデータ書込を行なう度に、アドレスレジスタ３９に設定されたアドレス値に対して１回のデータ格納バイト長を加算するもので、その加算結果は、セレクタ４０を介してアドレスレジスタ３９に設定される。このアドレス生成回路４４による加算処理は、パケットヘッダ１１のコマンド領域１３（転送コマンド１５）をコマンド受信領域２０Ａまたは２０Ｂに格納するまで行なわれる。
【００７８】
これにより、入力バッファ３８に保持されているパケットヘッダ１１の転送コマンド１５が、そのアドレス値と組になって、主記憶アクセス制御部３Ｃを介して主記憶４上のコマンド受信領域２０Ａまたは２０Ｂに書き込まれる。
転送コマンド１５の書込を終了すると、セレクタ４０が、加算器４１からのアドレス値とアドレス生成回路４４からのアドレス値とを適宜選択してアドレスレジスタ３９に設定するように動作することにより、入力バッファ３８に保持されているパケットヘッダ１１の送信側制御データ１６およびパケットボディ１２である転送データ本体１７は、第１実施形態と全く同様にして、主記憶アクセス制御部３Ｃを介して主記憶４上のメッセージ転送キュー１８に書き込まれるようになっている。
【００７９】
次に、第２実施形態の動作〔特にデータ受信時（ＰＥ間結合網２および受信系３Ｂ）の動作〕について、図７のフローチャート（ステップＳ２１〜Ｓ３８）に従って説明する。
ＰＥ間結合網２は、第１実施形態と全く同様に、ＰＥ間結合網２に接続された各ＰＥ１の入力バッファ３８の空きワード数を、常時、捕捉する（ステップＳ２１）。そして、所定ＰＥ１を宛先（受信側ＰＥ）とするパケット１０が存在し、且つ、この受信側ＰＥ１の入力バッファ３８が空いている場合には（ステップＳ２２）、１ワード目にパケット送信開始信号を伴ってパケット１０の転送を開始し（ステップＳ２３）、受信側ＰＥ１の入力バッファ３８の空き状態に応じて、パケット１０の全体をその受信側ＰＥ１に転送する（ステップＳ２４）。このステップＳ２４による処理は、１つのパケット１０の転送を終了するまで（ステップＳ２５でＹＥＳ判定となるまで）繰り返し行なわれ、パケット１０の転送を終了すると、ステップＳ２１に戻る。
【００８０】
ステップＳ２３，Ｓ２４によりＰＥ間結合網２から受信側ＰＥ１へのパケット転送が開始されると、受信側ＰＥ１の通信装置３内の受信系３Ｂでは、入力バッファ３８が空いている限り、パケット１０を読み込む（ステップＳ２６）。このとき、パケットヘッダ１１内のコマンドコード（通信装置転送コマンド１５）が流れるタイミングで、その転送コマンド１５をコマンドレジスタ３５に読み込む（ステップＳ２７）。
【００８１】
ステップＳ２７によりコマンドレジスタ３５に読み込まれたコマンドコードはデコーダ３６により解読されて、パケット１０の受信格納方法を制御するための信号が、制御回路３７により生成される（ステップＳ２８）。
本実施形態では、図６により前述したように、コマンド領域１３の通信装置転送コマンド１５を主記憶４上のコマンド受信領域２０Ａまたは２０Ｂに格納するとともに、非コマンド領域１４の送信側制御データ１６と転送データ本体１７を含むパケットボディ１２とを、主記憶４上のメッセージ受信キュー１８にエンキューすべく、セレクタ４０により、コマンド受信領域アドレスレジスタ４２，４３のアドレス値，加算器４１からのアドレス値もしくはアドレス生成回路４４からのアドレス値のいずれかが適宜選択されてアドレスレジスタ３９に設定される（後述するステップＳ３０〜Ｓ３８）。
【００８２】
このとき、コマンド受信領域２０Ａおよび２０Ｂの両方とも空いていなければ少なくとも一方が空き状態になるまで待機し（ステップＳ２９）、コマンド受信領域２０Ａまたは２０Ｂのいずれか一方が空き状態であれば、まず、セレクタ４０により、アドレスレジスタ３９に、コマンド受信領域アドレスレジスタ４２または４３のアドレス値を設定する（ステップＳ３０）。
【００８３】
アドレスレジスタ３９に設定されたアドレスと入力バッファ３８の転送コマンド１５とを組にして主記憶アクセス制御部３Ｃへ送り、この主記憶アクセス制御部３Ｃを介して、転送コマンド１５を主記憶４上のコマンド受信領域２０Ａまたは２０Ｂに格納する（ステップＳ３１）。
ステップＳ３１により、転送コマンド１５のデータを１回格納すると、アドレス生成回路４４により、アドレスレジスタ３９のアドレス値に１回のデータ格納バイト長が加算され、その加算結果が、セレクタ４０を介してアドレスレジスタ３９に設定される（ステップＳ３２）。
【００８４】
ステップＳ３１およびＳ３２による処理は、パケットヘッダ１１のコマンド領域１３（転送コマンド１５）を全て主記憶４上のコマンド受信領域２０Ａまたは２０Ｂに格納するまで（ステップＳ３３でＹＥＳ判定となるまで）繰り返し実行される。
転送コマンド１５を全て主記憶４上のコマンド受信領域２０Ａまたは２０Ｂに格納すると、第１実施形態とほぼ同様に、セレクタ４０により、アドレスレジスタ３９には、メッセージ受信キューベースアドレスレジスタ４５の値と受信ポインタ４６の値との加算値が設定される。受信ポインタ４６の値は、メッセージ受信キュー１８に対して１ブロック分のパケットデータの格納を終える毎に１加算器４７により１ずつカウントアップされる（ステップＳ３４）。
【００８５】
アドレスレジスタ３９に設定されたアドレスと入力バッファ３８からのパケットデータ（送信側制御データ１６および転送データ本体１７）とを組にして主記憶アクセス制御部３Ｃへ送り、この主記憶アクセス制御部３Ｃを介して、パケットデータを主記憶４上のメッセージ受信キュー１８内へ格納する（ステップＳ３５）。
【００８６】
ステップＳ３５により、パケットデータを１回格納すると、アドレス生成回路４４により、アドレスレジスタ３９のアドレス値に１回のデータ格納バイト長が加算され、その加算結果が、セレクタ４０を介してアドレスレジスタ３９に設定される（ステップＳ３６）。
ステップＳ３５およびＳ３６による処理は、メッセージ受信キュー１８に対して１ブロック分のパケットデータ転送を完了するか、パケット１０のうち転送コマンド１５以外の全てをメッセージ受信キュー１８に転送するまで（ステップＳ３７でＹＥＳ判定となるまで）繰り返し実行され、また、上述したステップＳ３４〜Ｓ３７による処理は、パケット１０の受信を完了するまで、つまり、パケット１０のうち転送コマンド１５以外の全てをメッセージ受信キュー１８に転送するまで（ステップＳ３８でＹＥＳ判定となるまで）繰り返し実行される。
【００８７】
このような本発明の第２実施形態によっても、第１実施形態と同様の作用効果を得ることができるほか、第２実施形態では、転送コマンド１５が、メッセージ受信キュー１８と別個のコマンド受信領域２０Ａまたは２０Ｂに保持され、異常受信した場合にはその異常が解消されるまで転送コマンド１５が保持されているので、転送コマンド１５をコマンド受信領域２０Ａまたは２０Ｂから読み出してその異常受信に直ちに対処することができる。
【００８８】
【発明の効果】
以上詳述したように、本発明の並列計算機におけるデータ転送方法によれば、転送コマンドおよび送信側制御データの両方を含むパケットヘッダとパケットボディとからなるパケットが受信側処理装置に転送されるので、送信側処理装置でのパケット組立時に転送データ本体を主記憶上でコピーする必要がなく、１個のパケット転送で１個のメッセージを転送できる。
【００８９】
従って、メッセージ転送のための処理量／オーバヘッドを少なくすることができ、このようなメッセージ転送（メッセージパッシング）の性能や効率の向上に寄与するところが大きい。
【図面の簡単な説明】
【図１】本発明の第１実施形態としての並列計算機システムの全体構成を示すブロック図である。
【図２】第１実施形態の並列計算機システムにおけるデータ転送手順を説明するための図である。
【図３】本実施形態におけるパケットヘッダの内容を説明するための図である。
【図４】本実施形態のＰＥにおける通信装置の詳細構成を示すブロック図である。
【図５】第１実施形態の動作を説明するためのフローチャートである。
【図６】本発明の第２実施形態としての並列計算機システムにおけるデータ転送手順を説明するための図である。
【図７】第２実施形態の動作を説明するためのフローチャートである。
【図８】一般的な並列計算機システムの構成を示すブロック図である。
【図９】一般的な並列計算機用処理装置の構成を示すブロック図である。
【図１０】並列計算機システムにおける従来のデータ転送処理を説明するための図である。
【図１１】並列計算機システムにおける従来のデータ転送処理の他例を説明するための図である。
【符号の説明】
１  ＰＥ（並列計算機用処理装置）
２  ＰＥ間結合網（通信手段）
３  通信装置
３Ａ  送信系
３Ｂ  受信系
３Ｃ  主記憶アクセス制御部
４  主記憶
１０  パケット
１１  パケットヘッダ
１２  パケットボディ
１３  コマンド領域（ハードウエア用コマンド領域）
１４  非コマンド領域（プログラム用領域）
１５  通信装置転送コマンド
１６  送信側制御データ
１７  転送データ本体
１８  メッセージ受信キュー（サイクリックキュー）
１９  受信側制御データ
２０Ａ，２０Ｂ  コマンド受信領域
２１  コマンドレジスタ
２２  デコーダ
２３  制御回路
２４  アドレスレジスタ
２５  セレクタ
２６  加算器
２７  ボディアドレスレジスタ
２８  アドレス生成回路
２９  パケットヘッダキューベースアドレスレジスタ
３０  送信ポインタ
３１  １加算器
３２  送信末尾ポインタ
３３  比較器
３４  出力バッファ
３５  コマンドレジスタ
３６  デコーダ
３７  制御回路
３８  入力バッファ
３９  アドレスレジスタ
４０  セレクタ
４１  加算器
４２，４３  コマンド受信領域アドレスレジスタ
４４  アドレス生成回路
４５  メッセージ受信キューベースアドレスレジスタ
４６  受信ポインタ
４７  １加算器
４８  受信先頭ポインタ
４９  比較器
【図１】
0003674720.tif 000002
【図２】
0003674720.tif 000003
【図３】
0003674720.tif 000004
【図４】
0003674720.tif 000005
【図５】
0003674720.tif 000006
【図６】
0003674720.tif 000007
【図７】
0003674720.tif 000008
【図８】
0003674720.tif 000009
【図９】
0003674720.tif 000010
【図１０】
0003674720.tif 000011
【図１１】
0003674720.tif 000012