(57)【特許請求の範囲】
【請求項１】
複数の処理手段が転送路手段により接続された並列計算機システムのデータ転送方法において，
送信側の処理手段は，前記送信側の処理手段が転送データの格納位置として指定した受信側の処理手段の主記憶におけるアドレス及び転送データ量を含む制御情報を有するパケットヘッダと，
前記パケットヘッダに対応するボディデータと，
からなる転送データを，前記転送路手段を介して前記受信側の処理手段に送信し，
前記パケットヘッダは更に，
前記受信側の処理手段が当該パケットヘッダに対応するボディデータを格納する主記憶の領域として，
前記送信側の処理手段が指定した受信側の処理手段の主記憶におけるアドレス及び前記転送データ量とから決まる領域，若しくは，前記受信側の処理手段が指定したメッセージ領域，の何れかを指示する選択情報を有し，
前記受信側の処理手段が受信した前記パケットヘッダの前記選択情報により，前記ボディデータを格納する領域を選択する選択手段を切り換えて，選択された領域に受信したボディデータを格納することを特徴とするデータ転送方法。
【請求項２】
複数の処理手段が転送路手段により接続された並列計算機システムに含まれる処理手段のデータ受信方法において，
前記処理手段は，転送データの格納位置として指定される処理手段の主記憶におけるアドレス及び転送データ量を含む制御情報を有するパケットヘッダと，
前記パケットヘッダに対応するボディデータと，
からなる転送データを受信し，
前記パケットヘッダは更に，
前記処理手段が当該パケットヘッダに対応するボディデータを格納する主記憶の領域として，
前記処理手段の主記憶におけるアドレス及び前記転送データ量とから決まる領域，若しくは，前記処理手段が指定したメッセージ領域，の何れかを指示する選択情報を有し，
前記処理手段が受信した前記パケットヘッダの前記選択情報により，前記ボディデータを格納する領域を選択する選択手段を切り換えて，選択された領域に受信したボディデータを格納することを特徴とするデータ受信方法。
【請求項３】
前記処理手段に該処理手段が前記ボディデータを格納する主記憶の領域を指定するメッセージ領域を複数個設け，前記処理手段がデータを受信し，前記選択情報によりメッセージ領域が選択されたとき，前記複数のメッセージ領域の中の一つを前記選択情報により指定することを特徴とする請求項２記載のデータ受信方法。
【請求項４】
前記処理手段が有する前記複数のメッセージ領域は，ボディデータがＯＳプログラムとユーザプログラムの何れかであることに対応して，前記複数のメッセージ領域のうちの１つを選択して使用することを特徴とする請求項３記載のデータ受信方法。
【請求項５】
前記送信側の処理手段から送信されるボディデータがストライドデータや，インダイレクトデータのように連続領域でない複数の領域に配置されているとき，
前記複数の領域に配置されたボディデータを前記受信側の処理手段の主記憶における連続領域である前記メッセージ領域に転送することを特徴とする請求項１記載のデータ転送方法。
【請求項６】
転送データのボディデータを前記受信側の処理手段のメッセージ領域へ転送するとき，
当該転送データのパケットヘッダに同じ受信側の処理手段が有するメッセージ領域を宛先とする複数のパケットを連結して送信することを表す連結情報を設けたことを特徴とする請求項１記載のデータ転送方法。
【請求項７】
前記複数のパケットを連結して送信するとき，連結して送信するパケットの個数を０からＮ（Ｎは自然数）まで可変とする連結個数の情報を前記パケットヘッダに設けたことを特徴とする請求項６記載のデータ転送方法。
【請求項８】
前記連結して送信された複数のパケットを受信する受信処理手段は，連結するパケットの終了時に１回だけ割込むことを特徴とする請求項６または７の何れかに記載のデータ転送方法。
【請求項９】
前記連結された転送データが前記送信側の処理手段に送り返すことを要求する返信要求データを前記受信側の処理手段が受信するとき，
該転送データのボディデータの格納が終了すると該返信要求データを前記送信側の処理手段に送り返し，
前記送信側の処理手段は該返信要求データを受信することにより，該ボディデータの格納が終了したことを，前記受信側の処理手段において認識することを特徴とする請求項６記載のデータ転送方法。
【請求項１０】
複数の処理装置が転送路により接続され，
送信側の処理装置は，
前記送信側の処理装置が転送データの格納位置として指定する受信側の処理装置の主記憶におけるアドレス及び転送データ量を含む制御情報を有するパケットヘッダと，
前記パケットヘッダに対応するボディデータと，
からなる転送データを受信側の処理装置に転送するデータ転送処理部を有し，
前記送信側の処理装置は前記データ転送処理部により，前記転送路を介して前記受信側の処理装置に前記転送データを送信し，
前記パケットヘッダは更に，
前記受信側の処理装置が当該パケットヘッダに対応するボディデータを格納する主記憶の領域として，
前記送信側の処理装置が指定した受信側の処理装置の主記憶におけるアドレス及び前記転送データ量とから決まる領域，若しくは，前記受信側の処理装置が指定したメッセージ領域，の何れかを支持する選択情報を有し，
受信側の処理装置は，
受信した転送データが格納される主記憶と，
受信したパケットヘッダの選択情報に基づいて，前記受信した転送データを格納する領域を選択する選択部とを有し，
前記選択部より選択された主記憶の領域に，前記受信したパケットヘッダに対応するボディデータを格納することを特徴とする並列計算機システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は並列計算機システムのデータ転送方法，データ受信方法，並列計算機システムに関する。
近年，計算機システムの処理能力を向上させるために，多数の処理装置を設け，相互の通信により結合して，高速のデータ処理を行う並列計算機システムが提供されるようになった。
【０００２】
従来の並列計算機システムでは，送信側の処理装置（ＰＥとよぶ：Processor Element)から送信データをパケットヘッダと呼ばれる制御情報と共に送信して, 受信側ＰＥで制御情報に従ってデータを格納したり，格納が完了した時に受信ＰＥに割込みをかける等を行うが，受信側でデータを格納する領域を指定することができなかったり，データ格納の完了毎に割込みが発生する等の点で改善が望まれている。
【０００３】
【従来の技術】
図２１は本発明が適用される並列計算機システムの説明図である。
図２１のＡ．に示すように並列計算機システムは多数の処理装置（ＰＥ０〜ＰＥｎ）と，各処理装置を相互に接続するスイッチ回路（ネットワーク）とで構成されている。
【０００４】
各処理装置（ＰＥ）は図２１のＢ．に示すような構成を備え，データ転送装置（ＤＴＵ：Data Trnsfer Unit ）と主記憶（ＭＳＵ：Main Storage Unit)及び命令処理部（ＣＰＵ：Central Processor Unit）とで構成され，相互にアドレス，データの線路により結合される。
【０００５】
このような並列計算機システムでは，それぞれの主記憶にデータが分散して格納されており，一つの処理装置ＰＥでデータの処理を行う場合に他の処理装置ＰＥが保持するデータが必要となる場合には，そのデータを持つ処理装置ＰＥからデータを必要とする処理装置ＰＥへデータを転送する必要がある。
【０００６】
データの転送方式として，例えば特開平４−１６７８４２号公報，特開平４−１６７１６号公報，特開平５−１７３９９２号公報，特開平５−１０８５８１号公報，特開平７−２１０５２５号公報等が公開されている。
【０００７】
上記の従来の転送方法としては，パケットヘッダと呼ばれる制御情報に従い，ボディと呼ばれる送信側のデータを転送するものである。ボディデータは受信側の処理装置ＰＥに転送されて受信側の主記憶内のパケットヘッダの(6) により指定されたアドレスに格納される。
【０００８】
図２２に従来のパケットヘッダの構成例を示す。
先頭の(1) は受信ＰＥ（相手処理装置）のアドレス，(2) は送信データ量（ボディデータ量），(3) は送信転送モード（送信データが送信側の主記憶上からの取り出し方式，等を含む），(4) は送信データの送信ＰＥにおけるアドレス， (5)は受信転送モード（転送されたデータの受信側ＰＥの主記憶への格納方式，等を含む），(6) は送信データの受信ＰＥにおけるアドレス，(7) は受信終了時の割込み有無の表示とで構成されている。
【０００９】
このパケットヘッダを送信側の処理装置ＰＥの転送処理部からスイッチ回路に送ると，スイッチ回路でパケットヘッダの(1) 受信ＰＥを識別して，受信ＰＥを起動してスイッチングにより送信側と受信側の転送路を形成し，パケットヘッダを転送し，続いて送信側の処理装置ＰＥからボディデータが送信され，受信側の処理装置ＰＥに転送される。
【００１０】
また，送信側の処理装置ＰＥがＰＥ０とし，受信側の処理装置ＰＥがＰＥｎとした時，ＰＥ０にあるボディデータをＰＥｎに送る場合，ＰＥ０はＰＥｎに転送したボディデータの格納が完了したことか否かを確認する場合，特開平５−１７３９９２号公報に記載された方法では，ＰＥ０からＰＥｎにパケットを送信して，ＰＥｎがボディデータの格納を完了するとＰＥｎからＰＥ０にパケット転送を起動するようにして，そのパケットを送信側のＰＥ０が受信することにより確認する方法がある。
【００１１】
【発明が解決しようとする課題】
上記した従来の並列計算機システムの処理装置間のデータ転送方式によれば，受信側の処理装置がパケットのボディデータを格納する領域を自由に指定できないし，送信側からボディデータの受信側主記憶の格納位置（アドレス）を指定しており，送信側では予めそのアドレスを知らなければならなかった。また，ＯＳ（オペレーションシステム）のデータを含むＯＳパケットを送信処理装置から転送を行うような場合には，受信側のＯＳが指定した領域に格納した方が効率的な場合にそのような領域への格納ができないという問題があった。
【００１２】
また，ボディデータの格納が完了したことは受信側のＰＥにおいて割込みによって知らされるが，一般的に割込みは時間のかかる処理であり，割込み回数が多いと処理の高速化を実現できないという問題があった。
【００１３】
更に，受信側におけるボディデータの格納完了を送信側に知らせる従来の方法では時間がかかるという問題があった。
本発明は受信側の処理装置でボディ格納領域が指定可能なようにし，受信側の処理装置における割込みを減らし，パケットヘッダとボディデータとで構成するパケットの高速な転送が可能な並列計算機システムのデータ転送方法，データ受信方法，並列計算機システムを提供することを目的とする。
【００１４】
また，本発明は，受信側の同じ処理装置の指定領域に複数のパケットの転送を連続して転送できることや，受信側処理装置でのボディデータの格納の終了を迅速に知らせることができること等を他の目的とする。
【００１５】
【課題を解決するための手段】
図１は本発明の原理構成図である。
図中，１はＰＥ（処理装置），２は受信されたパケットヘッダ，３はメモリ，３ａは受信側の処理装置が設定したメッセージ領域，３ｂは送信側が指示したアドレス，４は受信側のＰＥが設定したメッセージ領域を指定するメッセージ領域アドレス格納部，５は選択部である。
【００１６】
送信側のＰＥからスイッチ（図示省略）を介して受信側のＰＥへパケットヘッダとボディデータが送信されるが，最初に受信されるパケットヘッダは図１のパケットヘッダ２に示す構成を備える。このパケットヘッダは従来のパケットヘッダが備える上記図２２に示す(1) 〜(7) の各情報に対して新たな制御情報を付加したものであり，２ａ〜２ｇは上記の(1) 〜(7) に対応し，２ａは受信ＰＥ（相手処理装置）のアドレス，２ｂは送信データ量，２ｃは送信転送モード，２ｄは送信データの送信ＰＥにおけるアドレス，２ｅは受信転送モード，２ｆは送信データの受信ＰＥにおけるアドレス，２ｇは受信終了時の割込み有無の表示である。
【００１７】
２ｈは新たに付加された受信アドレス選択情報であり，受信側の処理装置において，ボディを格納するメモリの位置としてパケットヘッダの２ｆで指示する送信データの受信側のＰＥにおけるアドレス３ｂ（送信側のＰＥが指定）にするか，受信側の処理装置で指定するメッセージ領域アドレス３ａにするかを選択する情報である。この受信アドレス選択情報２ｈは，従来のパケットヘッダの情報中に含ませることもできる。例えば，２ｅの受信転送モードの情報の中の１ビット又は複数ビットを受信アドレス選択情報として割り当てることでパケットヘッダの情報量を増やす必要がなくなる。
【００１８】
受信側ＰＥ１では予め受信側でメッセージ領域として指定した領域のアドレスをメッセージ領域アドレス格納部４に設定しておく。送信側のＰＥからパケットヘッダ２を受信すると，選択部５は受信アドレス選択情報２ｈにより選択を行う。この受信アドレス選択情報２ｈによりメッセージ領域アドレス格納部４のアドレスか，またはパケットヘッダ２の中の２ｆで指定されるアドレスかの何れかが選択され，メモリ３のメッセージ領域３ａまたは送信側で指定されたアドレス３ｂにボディデータが格納される。
【００１９】
メッセージ領域３ａが１つの場合は，受信データの格納が終了すると割込みにより受信ＰＥ（ＣＰＵ）に通知するが，メッセージ領域への格納要求が複数あった場合には，１回の受信が終了した時点で受信を一時中止させ，メッセージ領域から他の領域にデータを写し，その後受信を再開する作業が必要になる。これを防止するため，受信側に予めメッセージ領域を複数個用意しておくと，メッセージ領域への格納を連続して行うことが可能となる。この場合，受信アドレス選択情報２ｈとしてどのメッセージ領域を使用するかを指定して，受信側でこれを解読することになる。
【００２０】
複数のメッセージ領域を使用してメッセージ領域への格納がユーザとＯＳの両方で可能な場合，ＯＳパケットをユーザがアクセスできる領域に格納すると問題があるため，ユーザとＯＳで異なるメッセージ領域となるように割当てる。
【００２１】
上記図１のパケットヘッダ２の中の２ｉはメッセージ情報であり，これによりメッセージ領域に格納されるデータの種類（ソフトウェアの種類）を送信側から受信側ＰＥに通知して有効に利用することができる。２ｊは同じ受信側のＰＥへパケットを複数個ある場合に連結して送信することを受信側のＰＥに通知するためのパケット連結情報である。更に，２ｋは連結するパケットの数を受信側のＰＥに通知するためのパケット連結数を表す。これらの２ｉ〜２ｋの各情報を用いた具体的な構成及び動作の詳細は後述する。
【００２２】
【発明の実施の形態】
図２はＰＥ（処理装置）の送信に関係する部分の実施例の構成図，図３はメモリ領域の構成例である。
【００２３】
図２において，１０はメモリ１４にキューとして格納される送信パケット（パケットヘッダとボディデータ）は相対アドレスで格納されており，そのベースアドレスがキューに対応して設定されている送信キューベースアドレスの格納部，１１はキューとして格納された送信パケットのベースアドレスに対する相対アドレスであるポインタが設定される送信キューリードポインタ，１２は送信パケットをメモリ１４に書き込んでエンキューを行った時のライトポインタが設定され，エンキューを行った個数が加算された値を保持する送信キューライトポインタである。１０〜１２は送信キューに対応して複数個（図２の例では３個）設けることができる。
【００２４】
１３は送信パケットを読み出す時に，先頭のパケットヘッダのアドレス（送信キューベースアドレス＋送信キューリードポインタ）を発生する加算器，１４はメモリ（メモリ制御部を含む），１５は送信キューリードポインタと送信キューライトポインタを比較する比較器，１６は送信制御部，１７は割込み表示，１８はメモリから取り出されたパケットヘッダが格納されるパケットヘッダバッファ，１９は送信バッファ（ヘッダを含む），２０はプログラムをメモリから読み出して処理を行うと共に割込みを受け付けるＣＰＵである。また，ＳＥＬ１〜ＳＥＬ４はセレクタであり，図２の中のａ〜ｏは後述する送信の処理フローにおける動作の手順を表す符号である。
【００２５】
図２の１０〜１３，１５〜１９は，図２１に示すＰＥ（処理装置）の中のデータ転送装置（ＤＴＵ）を構成し，１４はＰＥの中の主記憶（ＭＳＵ）を構成し，２０はＰＥの中の命令処理部（ＣＰＵ）を構成する。また，図２の構成は一つのＰＥの中の主として送信に関係する部分を示すが，実際は後述（図６）する受信に関係する部分も備えている。
【００２６】
図３にメモリ１４のメモリ領域の構成例を示すように，メモリ１４は送信だけでなく受信のための領域を備えている。この例では，各領域（アドレスは１例である）に，割込み処理ルーチン，フリーエリア，送信キュー１〜送信キュー３（送信用に使用），フリーエリアが配置され，その後に受信用に使用するヘッダ格納域及びメッセージ領域１〜メッセージ領域３が配置されている。
【００２７】
図４，図５は送信の処理フロー（その１），（その２）である。
送信の処理を上記図２の各部の信号及び図３を参照しながら説明する。
スタートによりＣＰＵがプログラムに従って実行し（図４のＳ１，図２のａ，ｂ），転送（送信）命令があるか判別し（図４のＳ２），有る場合はＣＰＵがパケットヘッダを作成して送信キューライトポインタ１２に書き込みアドレスを設定しパケットヘッダをメモリ１４の送信キューの領域（図３）に書き込むことによりエンキューする（図４のＳ３，図２のｃ）。送信ライトポインタをエンキューの数だけ加算する（図４のＳ４，図２のｄ）。
【００２８】
以上の処理はＣＰＵにおいて実行され，以下のＳ５〜Ｓ１６の処理はＤＴＵ（データ転送装置）においてＣＰＵと非同期に実行される。
ＤＴＵは，送信キューライトポインタ１２と送信キューリードポインタ１１を比較する（図４のＳ５）。この動作は，図２において，それぞれ複数個のポインタを持つ送信キューライトポインタ１２と送信キューリードポインタ１１の中から対応するそれぞれ一つをセレクタ（以下，ＳＥＬという）２，ＳＥＬ３で選択して比較器１５で比較する（図２のｅ）。比較値が異なるか判別し（図４のＳ６），同じ場合は送信済であるから比較動作に戻るが，異なる場合は送信制御部１６は送信待ちパケットがあることを検出して，送信するパケットのキューベースアドレスをＳＥＬ１（図２）で選択し（図４のＳ７，図２のｆ），送信パケットヘッダのアドレスを加算器１３で送信キューベースアドレス１０とＳＥＬ２で選択された送信キューリードポインタ１１の値を加算して求める（図４のＳ８，図２のｇ）。
【００２９】
求めたアドレスでメモリ１４から送信パケットヘッダを読み出し送信バッファ１９及びパケットヘッダバッファ１８にフェッチする（図４のＳ９，図２のｈ）。パケットヘッダバッファ１８の内容を送信制御部１６に送り（図４のＳ１０，図２のｉ）。送信制御部１６はパケットヘッダを送信バッファ１９から並列計算機システムのスイッチ（図示省略）へ送る制御を行う（図４のＳ１１，図２のｊ）。
【００３０】
次にヘッダ送信が終了したか判別し（図４のＳ１２），パケットヘッダが１回でフェッチできない時には更に残りのパケットヘッダをフェッチするために送信パケットヘッダのフェッチに戻るが，終了した場合はボディ（ボディデータ）アドレスを送信制御部１６で設定し（図５のＳ１３，図２のｋ），メモリ１４からボディを送信バッファ１９へフェッチし（図５のＳ１４，図２のｌ），ボディを送信バッファ１９からスイッチを介して相手ＰＥに送信し，送信と同時にエラーが発生した場合は発生したエラーを割込み表示１７に表示する（図５のＳ１５，図２のｍ，ｎ）。次にボディ送信が終了したか判別し（図５のＳ１６），終了しない場合は，Ｓ１３に戻って同様の処理を行う。
【００３１】
この後，Ｓ１７〜Ｓ１９においてＣＰＵにおける処理が行われ，割込み表示があるか判別し（図５のＳ１７），ある場合は割込み処理をＤＴＵと非同期で実行し（図５のＳ１８），割込処理が終了したか判別し（同Ｓ１９），終了すると後述するＳ２１の処理へ移行する。
【００３２】
ＤＴＵが送信パケットとして「パケットヘッダ」＋「ボデイデータ」＋「フッタ（送信側でエラーがあったことを通知するための送信側エラー情報）」を送信する場合，フッタとして割込み情報を送信し（図５のＳ２０，図２のｏ），受信側に対し送信側でエラーがあったことを通知する。ＤＴＵの送信制御部１６は送信キューリードポインタ１１を＋１し（図５のＳ２１），以上で１パケット分の送信を終了する（同Ｓ２２）。なお，パケットの中にフッタ（送信側エラー情報）を含めて送信する方式は特開平６−１８８９０９号公報等により公知である。
【００３３】
図６はＰＥ（処理装置）の受信に関係する部分の実施例の構成図である。
図６において，１４，２０は上記図２と同様にそれぞれメモリとＣＰＵを表し，３０は受信パケットのボディを受信側で設定した複数のメッセージ領域（図３参照）の何れかに格納するために各領域のベースアドレスがキューに対応して格納されるメッセージキューアドレスの格納部である。３１は各メッセージキューアドレスに対する各メッセージ領域の相対アドレスを表すポインタを格納したメッセージキューライトポインタ，３２は複数のメッセージ領域のどこまでを読み出したかを示すためのメッセージキューリードポインタ，３３は加算器，３４はパケットヘッダのアドレスを指示するヘッダアドレスの格納部，３５は受信制御部，３６は割込み表示，３７はパケットヘッダのバッファ，３８は受信バッファである。また，ＳＥＬ５〜ＳＥＬ８はセレクタであり，図６の中のａ〜ｏは後述する受信の処理フローにおける動作の手順を表す符号である。
【００３４】
図６の３０〜３８は，図２１に示すＰＥ（処理装置）の中のデータ転送装置（ＤＴＵ）を構成し，図２で説明したように１４はメモリ制御部を含むメモリ（主記憶），２０はＰＥの中の命令処理部（ＣＰＵ）を構成する。
【００３５】
図７，図８は受信の処理フロー（その１），（その２）である。
受信の処理を上記図６の各部の信号及び図３を参照しながら説明する。
スタートすると，受信すべきデータが存在すると受信バッファ３８に取り込むと同時に受信制御部３５に通知する（図７のＳ１，図６のａ）。最初にヘッダをパケットヘッダのバッファ３７に取り込み（図７のＳ２，図６のｂ），ヘッダ情報を受信制御部３５に通知する（図７のＳ３，図６のｃ）。次にヘッダアドレスの格納部３４が指示するヘッダ領域（図３のヘッダ格納域）にヘッダをストアし（図７のＳ４，図６のｄ），ヘッダ受信が終了したかの判定をする（図７のＳ５）。ヘッダ受信が終了すると，受信制御部３５は受信モードを調べる（図７のＳ６）。
【００３６】
この実施例では，パケットヘッダの中の受信転送モード（図１の２ｅ）の中に本発明による受信アドレス選択情報（図１の２ｈ）が含まれており，受信制御部３５はメッセージ領域への受信アドレス選択情報が指定されているか否かを判別する（図７のＳ７），指定されている場合，ヘッダ情報に基づいて受信メッセージ領域を決定する（図７のＳ８，図６のｅ）。この決定によりＳＥＬ５，ＳＥＬ６で何れかのメッセージ領域の選択が行われ，加算器３３で加算されて得られたメッセージアドレスがＳＥＬ７へ供給される。なお，この例では，複数のメッセージ領域が用意されてその中の一つが選択されるが，１個であってもよい。
【００３７】
一方，上記受信モードがメッセージ受信を指示していない場合は，パケットヘッダに含まれた送信データの受信ＰＥにおけるアドレス（図１の２ｆ）がパケットヘッダのバッファ３７からのボディアドレスとしてＳＥＬ７へ供給される。
【００３８】
上記のＳ６〜Ｓ８によりボディストア領域が決定するとボディをメモリ１４にストアする動作を開始する（図７のＳ９，図６のｆ）。すなわち，ＳＥＬ７で一方のアドレスが選択されるとＳＥＬ８を介してメモリ１４にアドレスが供給されてボディデータが受信バッファ３８から入力されて書き込みが行われる。このボディ受信と同時にエラーが発生（受信バッファ３８で検出）した場合，そのエラーを割込み表示３６に表示する（図７のＳ１０，図６のｉ）。次にボディ受信が終了したか判別する（図７のＳ１１）。終了しない場合は，上記Ｓ９に戻る。
【００３９】
ボディ受信が終了すると，ボディを受信した際（メモリ１４へ書き込み時）に発生したエラーを割込み表示３６に表示する（図８のＳ１２，図６のｈ）。次に受信制御部３５は，ボディを受信した分だけメッセージキューライトポインタ３１を加算し，同時に受信終了割込表示する。また送信側から送られてきた場合はフッタエラー（送信側で発生したエラー）を表示する（図８のＳ１３，図６のｉ）。
【００４０】
次に割込み表示３６からの割込み表示があるか判別し（図８のＳ１４），有る場合はＣＰＵ２０に割込み（図８のＳ１５，図６のｊ），ＣＰＵはエラー処理またはメッセージ受信の時は受信終了処理を実行する（図８のＳ１６）。この後割込終了の判別を行って（図８のＳ１７），終了すると１パケット分の受信を終了し（図８のＳ１８），図７のＳ１に戻って次のパケットの受信処理を行う。
【００４１】
この後，ＣＰＵは受信したメッセージ（プログラムやデータ）についてプログラムを実行し（図８のＳ１９，図６のｋ，ｌ），受信したメッセージを使用した後，メッセージが不必要になったか判別する（図８のＳ２０）。不必要になると，メッセージをデキュー（キューから外す）し（図８のＳ２１，図６のｍ），不必要にならないとＳ１９に戻る。
【００４２】
図９は受信ＰＥにおけるボディ格納領域選択の説明図である。
図９のＡ．は受信パケットヘッダの構成を示し，２ａ〜２ｇの各情報により構成されているが，この例では受信転送モードの中の１ビットを受信アドレス選択情報（図１の２ｈ）として使用している。このビットにより，受信ＰＥにおいてボディ格納位置をメッセージアドレスで指定される領域と，受信ＰＥで指定されるメッセージ領域の何れかに格納するかを選択でき，これをパケットヘッダで指定することができる。
【００４３】
この例では，このビットが「１」の場合はメッセージ領域のメッセージアドレスを選択し，「０」の場合はメッセージ受信ではなく，２ｆに示す送信データの受信ＰＥにおけるアドレス（ボディアドレス）を選択する。図９のＢ．は上記図６に示す受信ＰＥの一部の構成を示すもので，セレクタ（ＳＥＬ）７は受信制御部（図６の３５）が受信転送モード２ｅを解読した結果により制御される。
【００４４】
図１０は複数のメッセージ領域を備える場合の説明図である。
メッセージ領域へ転送する場合，受信ＰＥで設定される複数のメッセージ領域の中の一つをパケットヘッダで指定可能である。図１０のＡ．には図６に示す受信ＰＥに対応するもので，パケットヘッダの受信転送モード２ｅの中の予め決められた２ビットを受信アドレス選択情報として使用する。この例では，２ビットが「００」「０１」，「１０」の時は，それぞれメッセージ領域１，メッセージ領域２，メッセージ領域３を指定し，「１１」の時は割り当て無し（メッセージ領域を選択しない）ことを表す。
【００４５】
図１０のＢ．は図６に示す構成の一部を示し，それぞれ３個設けられたメッセージキューアドレス３０，メッセージキューライトポインタ３１の組が，上記Ａ．に示す２ビットにより選択され，加算器３３に供給されて各メッセージ領域のアドレスが発生する。
【００４６】
図１１は複数のメッセージ領域の使い分けの例を示す図である。
図１１には，メッセージ領域を複数個設定されており，メッセージ領域１が大きく，メッセージ領域２，３が小さい領域である。このように設定した場合，ボディデータ量が大きいとメッセージ領域１を使用し，ボディデータ量が小さい場合はメッセージ領域２または３を使用する。このように使い分けることにより，メモリ領域の中のフリーエリアが広く（トータルメモリ容量が等しいとする）なっており無駄が少なくなり，効率的に利用できる。
【００４７】
図１２は複数のメッセージ領域の使い分けの他の例を示す図である。
この例は，ＯＳとユーザプログラムによって複数種類のメッセージ領域を使い分けるようにしたものである。
【００４８】
すなわち，メモリの領域を図１２に示すように，先頭側のＯＳ（スーパバイザ）領域として，割込み処理ルーチン，フリーエリア，送信キュー１，メッセージ領域１を割り当て，その後のユーザ領域として送信キュー２，３，フリーエリア，メッセージ領域２，３を割り当て，ＯＳ領域はユーザアクセス不可で，全領域をＯＳアクセス可能域とする。このように割り当てることにより，ＯＳのパケットのボディをＯＳ領域のメッセージ領域１を選択するようにすると，このメッセージ領域１はユーザがアクセスできない領域であるため，ユーザのプログラムミスによりＯＳ領域が破壊されるといったことがなくなる。
【００４９】
上記図１０乃至図１２に説明した受信側で，複数のメッセージ領域のうちの１つに複数のメッセージを格納する場合，最初のメッセージはリードポインタで表される位置にあることは明らかであるが，次のメッセージがどこから始まるのか分からない。この場合，それぞれのメッセージのメッセージ長（送信データ量）が分かれば次のメッセージの先頭アドレスが分かる。そこで，本発明ではパケットヘッダの領域にあるメッセージ長（送信データ量２ｂ）もメッセージ領域に格納するようにする。
【００５０】
メッセージ長をメッセージ領域に格納するには次の２つの方法がある。
▲１▼送信側で送信ボディデータの先頭にメッセージ長をセットする。
▲２▼受信側で受信ボディデータの先頭にメッセージ長をメッセージ領域に格納する時にセットする。
【００５１】
上記▲１▼の方法は，送信ボディデータの先頭にメッセージ長をセットする必要があり，そのためにはＣＰＵ（ソフトウェア）の処理が必要になる。正確には，ＤＴＵ（データ転送装置）で実現することもできるが，大幅な改造が必要になる。
【００５２】
▲２▼の方法の場合，受信ＰＥはメッセージ長（送信データ量２ｂ）がヘッダのどの部分にあるかは認識可能であるため図６の受信バッファ３８からメモリ１４にストアする際に，図６のＳＥＬ９を制御することにより，ヘッダの一部である送信データ量だけをメッセージ領域に格納することができ，この動作に関係する構成を図１３に示す。
【００５３】
図１３はヘッダのボディデータに関する情報をメッセージ領域へ格納するための構成を示す。図１３のＡ．に示すようにヘッダの一部である送信データ量（図１の２ｂ）を格納する時に，ＳＥＬ８でヘッダアドレス（図３のヘッダ格納領域）を選択せずに，ＳＥＬ７において選択されたメッセージアドレスをＳＥＬ８で選択することにより，メッセージ領域に送信データ量（ボディデータ長）を格納することができる。
【００５４】
更に，メッセージ情報（ボディデータに関する情報）が多量にある時は，ヘッダを拡張して，図１３のＢ．に示すようにパケットヘッダに新たに「メッセージ情報」２ｉを設けることができる。このメッセージ情報をメモリにストアする場合も，パケットヘッダのメッセージ情報２ｉをメモリに格納する時に，上記の場合と同様にＡ．に示すＳＥＬ７，ＳＥＬ８をメッセージアドレスを選択する状態にして，メッセージ領域に格納することができる。
【００５５】
メッセージ領域への転送をする場合に送信側でのボディデータの配置がストライドデータやインダイレクトデータの転送について，それぞれ特開平５−１０８５８１号公報や特開平７−２１０５２５号公報に記載されているが，本発明では，このような送信側で連続領域にない場合にも受信側でメッセージ領域（一般的に連続領域）への転送を可能とし，図１４により説明する。
【００５６】
図１４は送信側のデータ配置と受信側のデータ配置を指定するパケットヘッダの構成を示す。この例は，受信転送モード２ｅの中の１ビットにより，上記図９の場合と同様に，受信側でメッセージ領域に格納するか，送信データの受信ＰＥにおけるアドレス２ｆで指定された位置に格納するかを指定する。この時，送信転送モード２ｃの中の複数ビット，この例では３ビットにより，送信側のボディデータの配置が，連続，ストライド，インダイレクトであるかを指定すると共に返信要求であることも指定する。このようにパケットヘッダにより指定することにより，送信側の不連続領域のデータをユーザのメッセージ領域に受信可能とすることができる。
【００５７】
ボディデータを受信側ＰＥのメッセージ領域へ転送する場合に，同じ受信ＰＥのメッセージ領域を宛先とする複数のパケットを連結して送信したい場合がある。これを実現するため，図１５に示すようにパケットヘッダに複数のパケットが連結するか否かの情報を新たに設けた。
【００５８】
図１５はパケット連結の情報を備えるパケットヘッダの説明図である。このパケット連結の情報２ｊは，１ビットで表すことができ，当該ビットが「１」の時連結有り，「０」の時連結無しを表す。この情報は既存のパケットヘッダを構成する他の情報２ａ〜２ｇの中の何れかに含めることもできる。
【００５９】
図１６は従来の送信側のＰＥがフリーエリアにある転送データを複数個送る場合の説明図である。図１６のＡ．に示すようにフリーエリアの転送データ１，２を送る場合，従来はＢ．に示すタイムチャートにより送信が行われ，Ｃに示すタイムチャートにより受信が行われる。なお，送信または受信の立ち上がりでは，ヘッダの情報に基づいて制御をどうするかということを決めている。
【００６０】
図１７はパケット連結の情報を用いた場合のタイムチャートであり，Ａ．は送信のタイムチャート，Ｂ．は受信のタイムチャートである。このように，同じ送信側のＰＥから同じ受信側のＰＥへのパケットを送信する時にパケット連結の情報を検出することにより，連続して送信または受信が行われる。上記図１６のＢ．及びＣ．に示すタイムチャートに比べて，後続のパケットの送信または受信の立ち上がりは，パケット連結により前のパケットと制御が同じで良いということを指示することにより，後続の立ち上げの時間を省略できて転送時間が節約される。
【００６１】
上記に図１５及び図１７に説明したパケット連結を行う場合に，連結するパケットが単に連結するというだけでは受信側のＰＥでは一つだけ連結することが分かるが，より多くのパケットを連結したい場合には対応することができない。
【００６２】
これに対し，連結するパケットの個数を受信側に指示することができるようにパケットヘッダを拡張して新たにパケット連結数を設けるようにした。
図１８はパケット連結数を設けた場合の説明図である。図に示すように，パケット連結の情報２ｊがパケット連結を指示した場合に，パケット連結数２ｋで表す個数が有効となる。この例ではパケット連結数は，例えば４ビットで表すと，「０００１」〜「１１１１」の中の任意の個数を指定できるが，連結するパケットの個数を０からＮ（Ｎは自然数）まで可変とすることが可能である。これにより，送信立ち上がり，受信立ち上がりの時間を短縮できる。
【００６３】
通常，パケットを受信した場合に，パケットヘッダにおいて受信終了時の割込み有無２ｇにより割込み有りが指示されていると，一つのパケットの終結で割込みが行われ，終結サイクルは非常に長くなる。一方，上記したパケットの連結時（図１５，図１７及び図１８）には，連結パケットの最後のパケットの終結時に１回だけ割込みを行うように受信側のＰＥで制御を行うようにする。
【００６４】
図１９に連結したパケットの最後に割込む場合のタイムチャートを示す。これのように制御することによりトータルの転送時間を短縮することができる。
連結パケットを送信した場合に，送信側のＰＥでは最後のパケットまで受信側のＰＥで受信されたか確認したい場合がある。その確認を行うために，送信側から連結パケットの最後のパケットで返信要求を行うことができる。返信要求は上記図１４に示すように送信側のＰＥからパケットヘッダの送信転送モード２ｃの中で返信要求を表示することにより実現できる。
【００６５】
図２０に連結パケットの受信動作と返信動作の説明図である。
受信側の処理終了を知る手段として，特開平５−１７３９９２号公報に返信要求パケットを使用する方法があり，この方法をパケットの連結の場合に応用して次のようにして実現する。図２０に示す受信側のＰＥでは，送信側からヘッダ１（ＨＤ１），ボディ１（ＢＯＤＹ１），ヘッダ２（ＨＤ２），ボディ２（ＢＯＤＹ２）・・・ボディ４（ＢＯＤＹ４）の連結パケットを受信すると，各ヘッダ１〜ヘッダ４はヘッダ格納領域に格納され，ボディ１〜ボディ３はメッセージ領域１が選択された場合，そのメッセージ領域１に格納される。連結パケットの最終パケット（ヘッダ４，ボディ４）が返信要求データであった場合，図２０のメモリ内に設けられた返信キューの領域に受信データ（ボディ４）を格納する。この受信データは，パケットヘッダと同じ形式をしている。返信キューにデータの受信が終わった時に割込んで，割込みの処理が終了した時点で連結パケットの受信処理を終了する。
【００６６】
ここで，受信と送信は非同期（独立）に動作しているので，返信キューに格納されたデータ（パケットヘッダ）はあるタイミングで取り出されて受信側から送信側へ送信される。送信制御部は送信キュー１，２，３と返信キューの何れからかエンキューされているパケットヘッダを取り出して送信しているが，返信キューの優先度を高めておくことにより，連結パケットの送信側に受信が終了したことを早めに通知することができる。これにより，送信側では受信側の受信処理の終了を認識することができる。
【００６７】
【発明の効果】
本発明によれば，並列計算機システムにおける処理装置（ＰＥ）間のデータ転送において，受信側の処理装置でボディデータの格納領域を指定可能であり，送信側の処理装置が受信側の処理装置の何のメモリ領域に空きがあるか知らなくてもよい。また，メッセージ領域を複数用意することにより受信側の処理装置における処理効率を上げることができる。その場合，メッセージ領域を受信できるデータ量の大小により複数用意することによりメモリ領域の使用効率を向上することが可能となる。更に，ＯＳパケットとユーザパケットによりメッセージ領域を分けることによりセキュリティの上で有効となる。
【００６８】
パケットヘッダの一部（または全体）をメッセージ領域に格納できるよう制御することにより，複数パケットの境界の識別ができソフトウェアの負担を軽減することができる。
【００６９】
また，送信側のボディデータは連続領域でなくても連続して送信を可能とすることにより，不連続領域のデータをソフトウェア連続域に集めた後に転送する処理を行う必要がないためソフトウェアの負担を軽減できる。パケットの連続転送ができるため，複数個のパケットの転送を１回で実現できる。その際に，パケットの連続転送数を指定できるため，連結するパケット数を任意とすることができる。
【００７０】
パケットの連続転送時に，割込み数を１回にするよう制御することにより，トータルとしての転送時間を短縮することができる。また，パケットの連続転送時に返信パケット（返信要求パケット）を付加することにより，受信側から返信パケットを他のパケットと共に送信側に転送することにより受信側の受信処理終了を送信側に通知することができる。
【図面の簡単な説明】
【図１】本発明の原理構成図である。
【図２】ＰＥ（処理装置）の送信に関係する部分の実施例の構成図である。
【図３】メモリ領域の構成例を示す図である。
【図４】送信の処理フロー（その１）を示す図である。
【図５】送信の処理フロー（その２）を示す図である。
【図６】ＰＥ（処理装置）の受信に関係する部分の実施例の構成図である。
【図７】受信の処理フロー（その１）を示す図である。
【図８】受信の処理フロー（その２）を示す図である。
【図９】受信ＰＥにおけるボディ格納領域選択の説明図である。
【図１０】複数のメッセージ領域を備える場合の説明図である。
【図１１】複数のメッセージ領域の使い分けの例を示す図である。
【図１２】複数のメッセージ領域の使い分けの他の例を示す図である。
【図１３】ヘッダのボディデータに関する情報をメッセージ領域へ格納するための構成を示す図である。
【図１４】送信側のデータ配置と受信側のデータ配置を指定するパケットヘッダの構成を示す図である。
【図１５】パケット連結の情報を備えるパケットヘッダの説明図である。
【図１６】従来の送信側のＰＥがフリーエリアにある転送データを複数個送る場合の説明図である。
【図１７】パケット連結の情報を用いた場合のタイムチャートを示す図である。
【図１８】パケット連結数を設けた場合の説明図である。
【図１９】連結したパケットの最後に割込む場合のタイムチャートを示す図である。
【図２０】連結パケットの受信動作と返信動作の説明図である。
【図２１】本発明が適用される並列計算機システムの説明図である。
【図２２】従来のパケットヘッダの構成を示す図である。
【符号の説明】
１    処理装置（ＰＥ）
２    パケットヘッダ
２ａ  受信ＰＥ
２ｂ  送信データ量
２ｃ  送信転送モード
２ｄ  送信データの送信ＰＥにおけるアドレス
２ｅ  受信転送モード
２ｆ  送信データの受信ＰＥにおけるアドレス
２ｇ  受信終了時の割込み有無の表示
２ｈ  受信アドレス選択情報
２ｉ  メッセージ情報
２ｊ  パケット連結情報
２ｋ  パケット連結数
３    メモリ
３ａ  メッセージ領域
３ｂ  送信側が指示したアドレス
４    メッセージ領域アドレス格納部
５    選択部
【図１】
0003681810.tif 000002
【図２】
0003681810.tif 000003
【図３】
0003681810.tif 000004
【図４】
0003681810.tif 000005
【図５】
0003681810.tif 000006
【図６】
0003681810.tif 000007
【図７】
0003681810.tif 000008
【図８】
0003681810.tif 000009
【図９】
0003681810.tif 000010
【図１０】
0003681810.tif 000011
【図１１】
0003681810.tif 000012
【図１２】
0003681810.tif 000013
【図１３】
0003681810.tif 000014
【図１４】
0003681810.tif 000015
【図１５】
0003681810.tif 000016
【図１６】
0003681810.tif 000017
【図１７】
0003681810.tif 000018
【図１８】
0003681810.tif 000019
【図１９】
0003681810.tif 000020
【図２０】
0003681810.tif 000021
【図２１】
0003681810.tif 000022
【図２２】
0003681810.tif 000023