(57)【特許請求の範囲】
【請求項１】
プログラムの命令を実行処理する命令処理部を備えた複数の処理装置がネットワークで結合されたデータ処理システムにおいて，前記処理装置内において前記命令処理部とは別個に設けられ，前記処理装置における主記憶上の不連続な領域に格納されているボディデータを転送対象とし，そのボディデータの各要素のアドレスを主記憶上に置かれたアドレスリストによって指定するリストベクトル転送モードを設定可能に構成されたデータ転送制御装置であって，
主記憶から読み出された他の処理装置へ転送するデータを一時的に保持する送信用の第１のバッファと，
前記リストベクトル転送モード時に，主記憶から読み出されたアドレスリストを一時的に保持する第２のバッファと，
前記命令処理部により設定された転送モード制御情報を含む制御情報が格納された前記主記憶のアドレス情報を保持するためのレジスタと，
前記レジスタに設定されたアドレス情報に従って前記主記憶から少なくとも前記転送モード制御情報を前記第１のバッファに読み出し，前記転送モード制御情報によってリストベクトル転送モードが指定されているかどうかを判別し，リストベクトル転送モードが指定されている場合に，前記制御情報内で指定されたアドレスリストを主記憶から前記第２のバッファに読み出し，そのアドレスリストに従って転送すべきボディデータを各要素ごとに前記第１のバッファにロードし，前記第１のバッファのデータを指定された他の処理装置へ送信する制御を行う制御手段とを備えた
ことを特徴とするデータ転送制御装置。
【請求項２】
請求項１記載のデータ転送制御装置において，
前記リストベクトル転送モードで送信動作していない時には，前記第１のバッファおよび前記第２のバッファの少なくとも一部が，他の処理装置への送信用ロードデータを一時的に保持するバッファとして使用されるように構成された
ことを特徴とするデータ転送制御装置。
【請求項３】
請求項２記載のデータ転送制御装置において，
前記リストベクトル転送モードで送信動作していない時に，前記第２のバッファの少なくとも一部を，他の処理装置への送信用ロードデータを一時的に保持するバッファとして使用するのを，送信動作の主記憶読み出しアクセスがブロックアクセスで行われる場合に限るようにした
ことを特徴とするデータ転送制御装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は，並列計算機システムなどのデータ処理システムにおける処理装置間の通信に用いられるデータ転送制御装置に関する。
【０００２】
並列計算機システムなどでは，アドレスリストに従って送信するボディデータを指定する，いわゆるリストベクトル転送がしばしば用いられることがある。そのリストベクトル転送を高速化する技術が必要とされている。
【０００３】
【従来の技術】
図６は，従来技術の説明図である。
図６（Ａ）に本発明の対象となるデータ処理システムの構成例を示す。本発明は，例えば図６（Ａ）に示すように，複数の処理装置６０Ａ，…，処理装置６０Ｂ，処理装置６０Ｃが，ネットワーク１０を介してデータ転送を行うシステムににおいて，そのデータ転送を制御するデータ転送制御装置を対象とする。
【０００４】
図６（Ｂ）は，従来のデータ処理システムにおける各処理装置（プロセッサ・エレメント）６０の内部構成例を示す。このデータ処理システムでは，各処理装置６０内に，送受信処理を行う転送制御部６１と，ＣＰＵ等によりプログラム処理を行う命令処理部６２と，プログラムおよびデータが格納される主記憶６３を有する。処理装置間の通信における命令処理部６２の負荷とオーバーヘッドを削減するために，命令処理部６２と転送制御部６１とは独立に設けられている。
【０００５】
図６（Ｃ）に従来技術における転送制御部６１の構成例を示す。転送制御部６１は，主記憶６３から読み出した送信用のデータを一時的に保持するためのロードデータバッファ６４と，他の処理装置からネットワーク１０を介して受信したデータを一時的に保持するためのストアデータバッファ６５と，命令処理部６２からの指示により，データの送受信制御を行うネットワーク転送制御部６６と，主記憶６３からのデータの読み出しおよび主記憶６３へのデータの書き込みを制御する主記憶アクセス制御部６７とを備える。
【０００６】
従来，このようなシステムにおける処理装置間の通信では，送信処理装置の転送制御部６１によるボディデータ転送中の主記憶アクセスは，送信するボディデータの主記憶６３からの読み出しだけであった。そのため，主記憶６３に分散して配置されているボディデータを，アドレスリストに従って送信するリストベクトル転送を行う場合には，命令処理部６２が事前に主記憶６３からアドレスリストを読み出し，アドレスリストからポイントされるボディデータの各要素を並べ変えるなどの処理をして，データ転送を行う必要があった。
【０００７】
【発明が解決しようとする課題】
例えば，リストベクトルの転送を，図６に示す転送制御部６１で直接処理することを考えた場合，その実現のためには，転送制御部６１でボディデータ転送中にアドレスリストの主記憶６３からの読み出しアクセスが必要になる。しかし，転送制御部６１の送信処理では，当然ボディデータの主記憶６３からの読み出しアクセスがあるので，ロードデータバッファ６４は，ボディデータとアドレスリストとで共用することになる。そのため，次のような問題があった。
【０００８】
通常，アドレスリストは主記憶６３上に連続して配置されており，これを要素順にアクセスすると連続アクセスになる。主記憶６３がインターリーブされた構成になっている場合には，これにブロックアクセスを適用してアクセス効率を向上させることが望ましい。
【０００９】
一方，リストベクトルをアドレスリストで指示される順にアクセスすると，そのアクセスは一般的にランダムなアクセスとなる。そのため，ボディデータの主記憶６３からの読み出し速度とアドレスリストの主記憶６３からの読み出し速度とが一致しているとは限らず，また一方がブロックアクセスで他方がランダムアクセスというように，主記憶６３とのバンド幅が全く異なるアクセスが混在することも有り得る。従って，このロードデータバッファ６４は，単純なＦＩＦＯのバッファで構成することができず，その管理は非常に煩雑なものになって，制御回路の物量の増加やクロックサイクルの増大を招く結果となる。
【００１０】
また，もしその管理を単純化しようとするならば，ボディデータ読み出しのデータ転送速度と，アドレスリスト読み出しのデータ転送速度とを同じにして，主記憶６３とのバンド幅も同じにするというような制約を設けなければならず，データ転送性能やアクセス効率を犠牲にしなければならない。
【００１１】
本発明は上記問題点の解決を図り，データ転送性能や主記憶へのアクセス効率を犠牲にすることなく，リストベクトルの転送における命令処理部の負荷とオーバーヘッドの削減を可能とする手段を提供することを目的とする。
【００１２】
【課題を解決するための手段】
図１は本発明の構成例を示す図である。
図１において，処理装置１１，１１’，１１”，…は，ネットワーク１０を介して相互にデータパケットの転送を行い，データを処理するプロセッサである。各処理装置１１，…は，命令（プログラム）やデータを記憶する主記憶２０と，主記憶２０から命令（プログラム）を取り出して実行処理するＣＰＵ等の命令処理部１７と，主記憶２０とネットワーク１０との間でパケットの転送処理を行う転送制御部１２を備える。
【００１３】
転送制御部１２の中において，送信用ロードデータバッファ１３は，送信処理において主記憶２０からネットワーク１０へデータ転送を行う際に，一時的にデータをバッファリングするとともに，送信処理において転送制御部１２が必要とする主記憶２０上のデータの読み出しを行う際に，一時的にデータをバッファリングするものである。
【００１４】
送信用アドレスリストバッファ１４は，送信処理において転送制御部１２が必要とする主記憶２０上のアドレスリスト２１の読み出しを行う際に，一時的にアドレスリスト２１をバッファリングするものである。
【００１５】
その他の回路１５は，転送制御部１２の動作を制御し，命令処理部インタフェース／主記憶インタフェース／ネットワークインタフェースを制御する回路からなり，特にリストベクトル転送の送信処理機能を持つ送信処理制御部１６を有する。また，受信処理においてネットワーク１０から主記憶２０へデータ転送を行う際に，一時的にデータをバッファリングするストアデータバッファを持つ。
【００１６】
主記憶２０におけるアドレスリスト２１は，リストベクトルにおける分散されたボディデータの各要素のアドレスを保持するものである。また，ボディデータ２２は，実際の送信対象となるパケット本体のデータを表す。
【００１７】
図１に示すデータ処理システムは，複数の処理装置１１，…が，スイッチ回路等からなるネットワーク１０に接続されるシステムであって，データを送信する処理装置１１は，受信処理装置の指定や受信処理装置における処理の指定に関する情報を含む制御情報部と，その制御情報部で指定されるところのボディデータとを含むパケットを，スイッチ回路（図示省略）に対して発信し，スイッチ回路がパケットに含まれる受信処理装置指示に従ってスイッチの接続を行い，送信処理装置が発信したボディデータの量が零でない場合には，そのボディデータを，パケットの制御情報部に含まれる受信処理装置における処理の情報を参照して，受信処理装置が処理して，処理装置間の通信を行う構成になっている。
【００１８】
各処理装置１１，…は，少なくとも主記憶２０と転送制御部１２と命令処理部１７とを具備し，転送制御部１２には，主記憶２０から読み出された他の処理装置へ転送するデータを一時的に保持する送信用ロードデータバッファ１３の他に，リストベクトル転送モード時に，主記憶２０から読み出された送信処理用のアドレスリスト２１を一時的に保持する送信用アドレスリストバッファ１４を有する。
【００１９】
命令処理部１７から主記憶２０上の不連続な領域に格納されているボディデータ２２を転送対象とし，そのボディデータ２２の各要素のアドレスを主記憶２０上に置かれたアドレスリスト２１によって指定するリストベクトルの転送が指示されると，送信処理制御部１６は，主記憶２０からアドレスリスト２１を送信用アドレスリストバッファ１４に読み出し，そのアドレスリスト２１に従って転送すべきボディデータ２２を各要素ごとに送信用ロードデータバッファ１３にロードし，送信用ロードデータバッファ１３のデータを送信先として指定された他の処理装置へ送信する制御を行う。
【００２０】
さらに，請求項２記載の発明は，ボディデータ２２の各要素のアドレスが主記憶２０上に置かれたアドレスリスト２１によって指定されるリストベクトル転送モードで送信動作していない時には，その送信用アドレスリスト２１を一時的に保持するための送信用アドレスリストバッファ１４を，送信用ロードデータバッファ１３の少なくとも一部として使用する構成になっている。
【００２１】
さらにまた，請求項３記載の発明は，上記の動作を，送信動作における主記憶２０からの読み出しアクセスがブロックアクセスで行われている場合に限るように構成される。
【００２２】
【作用】
請求項１記載の発明では，送信処理において，命令処理部１７はパケットの制御情報部（以下，これをパケットヘッダという）を作成する際に，受信処理装置の指定，ボディデータの送信処理装置での主記憶アドレス，ボディデータの受信処理装置での処理，データ長をパケットヘッダ内に指定する。ここでリストベクトルを送信するリストベクトル転送モードである場合には，命令処理部１７は，送信処理装置の主記憶２０上のリストベクトルのアドレスを指定するアドレスリスト２１のアドレスを，パケットヘッダにおける送信ボディアドレスのフィールドに指定し，転送制御部１２を起動する。
【００２３】
転送制御部１２の送信処理制御部１６は，パケットヘッダを読み出して送信ボディアドレスの指定からアドレスリスト２１の主記憶２０上のアドレス情報を得る。そのアドレス情報によって，アドレスリスト２１を読み出し，送信用アドレスリストバッファ１４でバッファリングする。その後，送信処理制御部１６は，アドレスリスト２１で指定されたアドレスに従って，リストベクトル本体であるボディデータ２２を主記憶２０から読み出し，送信用ロードデータバッファ１３でバッファリングする。送信処理制御部１６は，指定されたパケットヘッダと，主記憶２０から読み出したボディデータ２２とでパケットを構成して，ネットワーク１０のスイッチ回路に対して発信する。
【００２４】
請求項１記載の発明の場合，送信用アドレスリストバッファ１４が送信用ロードデータバッファ１３と別に設けられ，リストベクトル転送モードのとき，送信用アドレスリストバッファ１４にアドレスリスト２１を読み出して，分散して配置されたリストベクトル本体のボディデータ２２を送信用ロードデータバッファ１３に自動収集するので，命令処理部１７のオーバーヘッドなしに，高速にデータを送信することが可能になる。なお，この発明の場合，送信用アドレスリストバッファ１４とスイッチ回路とは，直接結線されなくてもよい。
【００２５】
次に，請求項２記載の発明の作用について説明する。
転送制御部１２の中において，送信用ロードデータバッファ１３とその他の回路１５とは，前述したものと同様である。送信用アドレスリストバッファ１４は，送信処理において転送制御部１２が必要とする主記憶２０上のアドレスリスト２１の読み出しを行う際に，一時的にアドレスリスト２１をバッファリングし，またリストベクトルを送信するモードでない時には，送信処理において主記憶２０からネットワーク１０へデータ転送を行う際に，一時的に送信データをバッファリングする構成になっている。
【００２６】
送信処理において，命令処理部１７はパケットヘッダを作成する際に，受信処理装置の指定，ボディデータの送信処理装置での主記憶アドレス，ボディデータの受信処理装置での処理，データ長をパケットヘッダ内に指定する。
【００２７】
ここでリストベクトルを送信するリストベクトル転送モードである場合には，送信処理装置の主記憶２０上のリストベクトルのアドレスを指定するアドレスリスト２１のアドレスを，パケットヘッダにおける送信ボディアドレスのフィールドに指定し，転送制御部１２を起動する。このリストベクトル転送モードにおける送信処理制御部１６による送信処理の制御は，前述した請求項１記載の発明と同様である。
【００２８】
一方，リストベクトル転送モードではない通常の転送モードの場合には，命令処理部１７は，ボディデータ２２の送信処理装置上での主記憶アドレスそのものをパケットヘッダ内に指定し，転送制御部１２を起動する。この場合には，ボディデータ２２は，主記憶２０上の連続領域または等間隔に格納されている。
【００２９】
転送制御部１２の送信処理制御部１６は，パケットヘッダを読み出してボディデータ２２の主記憶２０上のアドレス情報を得る。そのアドレスに従ってボディデータ２２を主記憶２０から読み出し，送信用ロードデータバッファ１３と送信用アドレスリストバッファ１４とを使用してバッファリングする。次に，送信処理制御部１６は，パケットヘッダとボディデータとでパケットを構成してスイッチ回路に対して発信する。
【００３０】
このように，請求項２記載の発明では，リストベクトル転送モードでないときに送信用アドレスリストバッファ１４が，送信用ロードデータバッファ１３と同様に通常のボディデータ２２の送信用として利用されるので，バッファの有効利用が可能になる。
【００３１】
次に，請求項３記載の発明の作用について説明する。
請求項３記載の発明の場合，送信用アドレスリストバッファ１４は，送信処理において転送制御部１２が必要とする主記憶２０上のアドレスリスト２１の読み出しを行う際に，一時的にアドレスリスト２１をバッファリングするために用いられる。さらに，リストベクトルを送信するモードではなくボディデータ２２をブロックアクセスで主記憶２０から読み出す時には，送信処理において主記憶２０からネットワーク１０へデータ転送を行う際に，一時的に送信データをバッファリングするものとして用いられる。
【００３２】
このように構成することの利点を以下に述べる。通常，アドレスリスト２１は主記憶２０上の連続領域に置かれるので，アドレスリスト２１に対するアクセスはブロックアクセスで行うことができる。従って，送信用アドレスリストバッファ１４をアドレスリスト２１専用に使用する場合には，ブロックアクセスのみに対応した制御回路を設ければよい。
【００３３】
一方，ボディデータ２２の主記憶２０上の配置は連続であることもあり，不連続な等間隔であることもあり，ランダムであることもある。一般的にデータが連続に配置されている場合以外は，ブロックアクセスで処理することができない。そこで請求項２記載の発明のように，送信用アドレスリストバッファ１４をボディデータ２２を送信するためのロードデータバッファとしても使用する場合には，ブロックアクセスと単発アクセスの両方に対応した制御回路を設けなければならない。
【００３４】
請求項３記載の発明は，この問題を解決するもので，ボディデータ２２のアクセスがブロックアクセスで処理できる場合にだけ，送信用アドレスリストバッファ１４を，ボディデータ２２を送信するためのロードデータバッファとして使用するようにしている。このように構成すると，送信用アドレスリストバッファ１４の制御回路は依然としてブロックアクセスのみに対応していれば良く，制御回路の増加や複雑化を回避できる。
【００３５】
なお，ブロックアクセスは主記憶読み出しのスループットが大きく，ネットワーク１０へのデータ送信のスループットとの乖離が大きいため，大容量のロードデータバッファを持つと制御上有利になる。これに対して，単発アクセスは主記憶読み出しのスループットが小さくて，ネットワーク１０へのデータ送信のスループットとの乖離が小さいため，ロードデータバッファの容量はそれほど大きいことを要しない。そのためブロックアクセスの場合だけ送信用ロードデータバッファの容量を拡張する構成でも，十分な効率を得ることができる。
【００３６】
【実施例】
図２に本発明の一実施例における転送制御部の構成例を示す。
図２において，ストアデータバッファ３０は，受信処理においてネットワーク１０から主記憶２０へデータ転送を行う際に，一時的にデータをバッファリングするものである。なお，受信処理部分については本発明の要旨ではなく，従来技術と同様でよいので，ここでの詳しい説明は省略する。
【００３７】
ネットワーク転送制御部３１は，命令処理部１７からの指令によって起動され，転送パケットの制御情報部とアドレスリスト２１とボディデータ２２との読み出しのため主記憶アクセス制御部３６へ主記憶アクセス要求を発行し，ネットワークインタフェースを制御し，送信用ロードデータバッファ１３からネットワーク１０へのデータ送出を制御するものである。ネットワーク転送制御部３１は，転送するデータを指定し，データ転送を制御するための制御レジスタとして，ヘッダキュー先頭アドレス指定レジスタ３２，ヘッダキューサイズ指定レジスタ３３，ヘッダキュー書き込みポインタ３４，ヘッダキュー読み出しポインタ３５を持つ。これらの制御レジスタの詳細については，後述する。
【００３８】
主記憶アクセス制御部３６は，ネットワーク転送制御部３１からの指令によって主記憶２０に対してアクセスを行い，主記憶２０とストアデータバッファ３０／送信用ロードデータバッファ１３／送信用アドレスリストバッファ１４との間のデータの転送を制御するものである。
【００３９】
図１に示す送信処理制御部１６は，図２に示すネットワーク転送制御部３１と主記憶アクセス制御部３６によって実現される。
送信用ロードデータバッファ１３は，送信処理において主記憶２０からネットワーク１０へデータ転送を行う際に，一時的にデータをバッファリングするとともに，送信処理のネットワーク１０へのデータ転送中でない時に，ネットワーク転送制御部３１と主記憶アクセス制御部３６が必要とする主記憶２０上のデータの読み出しを行う際のデータを一時的にバッファリングするものである。
【００４０】
送信用アドレスリストバッファ１４は，送信処理において主記憶アクセス制御部３６が主記憶２０上のアドレスリスト２１の読み出しを行う際に，一時的にアドレスリスト２１をバッファリングするものである。
【００４１】
次に，本実施例の処理装置のデータ転送動作の概略を説明する。
送信処理装置の命令処理部１７は，パケットの制御情報部であるパケットヘッダを作成する際に，受信処理装置の指定，ボディデータ２２の送信処理装置での主記憶アドレス，ボディデータ２２の受信処理装置での処理，データ長をパケットヘッダ内に指定し，転送制御部１２を起動する。転送制御部１２は，パケットヘッダを読み出してそこで指定されたアドレスに従ってボディデータ２２を主記憶２０から読み出す。転送制御部１２はパケットヘッダとボディデータ２２とでパケットを構成してスイッチ回路に対して発信する。パケットがスイッチ回路を通って受信処理装置に到着すると，受信処理装置では転送制御部１２が起動され，パケットヘッダでの指定に従ってボディデータ２２を格納する。
【００４２】
次に，リストベクトル転送モードの送信処理における転送制御部１２の動作を説明する。
送信処理装置の転送制御部１２が命令処理部１７から起動されるときは，直接にはネットワーク転送制御部３１が起動される。ネットワーク転送制御部３１は，命令処理部１７の指定に従って，パケットヘッダの主記憶２０上のアドレスを得て，主記憶アクセス制御部３６へパケットヘッダ読み出し要求を発行する。主記憶アクセス制御部３６は，この要求を受けて主記憶２０に対してロードアクセスを行い，主記憶２０から読み出されたパケットヘッダを送信用ロードデータバッファ１３へ格納する。
【００４３】
この動作が終了すると，主記憶アクセス制御部３６は，ネットワーク転送制御部３１へパケットヘッダ読み出し終了通知を送る。これによりネットワーク転送制御部３１は，送信用ロードデータバッファ１３から必要な制御情報を読み出して解析し，主記憶アクセス制御部３６へボディデータ読み出し要求を発行する。主記憶アクセス制御部３６は，この要求を受けて，送信用ロードデータバッファ１３のパケットヘッダから送信アドレスリストアドレス／データ数を読み出して，主記憶２０に対してロードアクセスを行い，主記憶２０から読み出されたアドレスリスト２１を送信用アドレスリストバッファ１４へ格納する。
【００４４】
さらに主記憶アクセス制御部３６は，送信用アドレスリストバッファ１４からリストベクトルのアドレスリスト２１を取り出して，その指定するアドレスに従って主記憶２０に対してロードアクセスを行い，主記憶２０から読み出されたボディデータ２２を送信用ロードデータバッファ１３へ格納する。この間，ネットワーク転送制御部３１は，パケットデータを送信用ロードデータバッファ１３からネットワーク１０へと送出する。
【００４５】
主記憶アクセス制御部３６は，指定された数のボディデータ２２の読み出しを終了すると，ネットワーク転送制御部３１へボディデータ読み出し終了通知を送る。ネットワーク転送制御部３１はこの通知を受け取った後，送信用ロードデータバッファ１３が空になるまでパケットデータをネットワーク１０へ送出し，それが終了するとパケット送信を終了する。
【００４６】
次に，本実施例における命令処理部（ＣＰＵ）１７と，転送制御部１２とのインタフェースについて，図３に従って説明する。
ネットワーク転送制御部３１には，前述したように，データ転送を制御するための制御レジスタとして，ヘッダキュー先頭アドレス指定レジスタ３２，ヘッダキューサイズ指定レジスタ３３，ヘッダキュー書き込みポインタ３４，ヘッダキュー読み出しポインタ３５が内蔵されている。これらの制御レジスタは，命令処理部１７からアクセス可能に構成され，そのための命令処理部１７の命令セットとして，図３（Ａ）および（Ｂ）に示す命令フォーマットを持つ命令が用意されている。個々の制御レジスタには，各々識別用の制御レジスタ番号が割り当てられており，命令処理部１７は，上記命令内でその番号を指定して，所望の制御レジスタをアクセスする。
【００４７】
制御レジスタ書き込み命令の命令フォーマットは，図３（Ａ）に示すようになっており，命令の種別を示す命令オペレーションコード（ＯＰＣＯＤＥ）と，汎用レジスタ番号と，制御レジスタ番号とを指定するフィールドを持つ。この命令の実行により，汎用レジスタ番号で指定される汎用レジスタの内容が，制御レジスタ番号で指定される制御レジスタに書き込まれる。
【００４８】
制御レジスタ読み出し命令の命令フォーマットは，図３（Ｂ）に示すようになっており，命令の種別を示す命令オペレーションコード（ＯＰＣＯＤＥ）と，汎用レジスタ番号と，制御レジスタ番号とを指定するフィールドを持つ。この命令の実行により，制御レジスタ番号で指定される制御レジスタの内容が，汎用レジスタ番号で指定される汎用レジスタに読み出される。
【００４９】
主記憶２０には，パケットのヘッダキューが置かれる。ヘッダキューの先頭は，上記のヘッダキュー先頭アドレス指定レジスタ３２によって指定される。ヘッダキューの大きさは，上記のヘッダキューサイズ指定レジスタ３３によって指定される。ヘッダキューには，固定長のパケットヘッダが連続して並べられる。パケットヘッダは，各々が１個のパケットに対応しており，そのパケットの宛先やアドレス等の制御情報が記述されている。
【００５０】
図３（Ｃ）に，個々のパケットヘッダの形式を示す。図３（Ｃ）の受信処理装置指定のフィールドには，パケット転送先の処理装置番号が記述される。ボディデータ長のフィールドには，通常のデータ転送によるストライドアクセスの場合にパケット本体のデータ長が記述され，リストベクトル転送の場合にアドレスリスト２１のサイズが記述される。転送モード制御情報のフィールドには，ストライドアクセスかリストベクトル転送かのモード指定情報が記述される。送信ボディアドレスのフィールドには，ストライドアクセスの場合，ボディデータの先頭アドレスが記述され，リストベクトル転送の場合，アドレスリスト２１の先頭アドレスが記述される。受信ボディアドレスのフィールドには，受信処理装置においてパケット本体を格納すべき主記憶アドレスが記述される。送信元ストライド長のフィールドには，ストライドアクセスの場合に，ストライドの指定情報が記述される。
【００５１】
送信処理装置の転送制御部１２は，ヘッダキューから読み出したパケットヘッダ内に記述された制御情報に基づいて，ボディデータを主記憶２０から読み出してパケットを作成し，送信する。受信処理装置の転送制御部１２は，ネットワーク１０から受信したパケットヘッダ内に記述された制御情報に基づいてパケットを受信し，ボディデータを主記憶２０へ格納する。
【００５２】
送信処理装置の命令処理部１７は，パケットヘッダをヘッダキューに書き込む。すなわち，エンキューする。最新のエンキューアドレスは，［ヘッダキュー先頭アドレス＋ヘッダキュー書き込みポインタ］により表示される。命令処理部１７は，最新のエンキューアドレスで始まる主記憶２０上の領域へパケットヘッダを作成し，その後でヘッダキュー書き込みポインタ３４を＋１する。なお，ヘッダキュー書き込みポインタ３４は，ヘッダキューの大きさに応じて自動的にラップアラウンドする。
【００５３】
送信処理装置の転送制御部１２は，ヘッダキュー読み出しポインタ３５を更新しつつ，ヘッダキュー読み出しポインタ３５からポイントされるパケットヘッダをヘッダキューから読み出す。そして，ヘッダキューから読み出したパケットヘッダ内に記述された制御情報に基づいて，ボディデータを主記憶２０から読み出し，パケットを作成して送信する。受信処理装置の転送制御部１２は，ネットワーク１０から受信したパケットヘッダ内に記述された制御情報に基づいてパケットを受信し，ボディデータを主記憶２０へ格納する。
【００５４】
図４は，本発明の実施例における送信処理制御部の制御フローチャートを示す。ネットワーク転送制御部３１および主記憶アクセス制御部３６による送信処理制御は，次のように行われる。
【００５５】
命令処理部１７からの起動により，スタートしたならば，図２に示すヘッダキュー書き込みポインタ３４とヘッダキュー読み出しポインタ３５とが異なる値になっているかどうかを判定する（ステップ１０１）。等しい場合には次の起動を待ち，等しくない場合には次のステップ１０２へ進む。
【００５６】
ステップ１０２では，［ヘッダキュー先頭アドレス＋ヘッダキュー読み出しポインタ］のアドレスで，主記憶２０に対する読み出しアクセスを行う。そして，読み出しデータであるパケットヘッダを，送信用ロードデータバッファ１３にバッファリングする。
【００５７】
次に，ステップ１０３では，パケットヘッダ内の送信ボディアドレス／ボディデータ長／転送モード制御情報を，送信用ロードデータバッファ１３から読み出す。そして，ステップ１０４により，転送モード制御情報における送信リストベクトル指定フラグがＯＮかどうかを判定し，送信リストベクトル指定フラグがＯＮの場合，ステップ１０５へ進み，ＯＦＦの場合，ステップ１０９へ進む。なお，この送信リストベクトル指定フラグは，リストベクトル転送モード指定の場合にＯＮで，その他の場合にＯＦＦのフラグである。
【００５８】
ステップ１０５では，送信ボディアドレスで主記憶読み出しアクセスを行う。ここで読み出されるデータはアドレスリスト２１である。そのアドレスリスト２１を送信用アドレスリストバッファ１４でバッファリングする。１要素アクセスする毎に，ボディデータ長を１減算する。
【００５９】
次のステップ１０６では，アドレスリスト２１を送信用アドレスリストバッファ１４から読み出して，そのアドレスで主記憶読み出しアクセスを行う。読み出しデータは，ボディデータ２２である。そのボディデータ２２を送信用ロードデータバッファ１３でバッファリングしつつ，ネットワーク１０へ送信する。
【００６０】
ステップ１０７の判定により，ボディデータ長が０になるまで，ステップ１０５，１０６を繰り返し，ボディデータ長が０になったならば，ステップ１０８へ進む。ステップ１０８では，ヘッダキュー読み出しポインタ３５を１加算し，スタートへ戻る。
【００６１】
ストライドアクセスの場合，ステップ１０９により，送信ボディアドレスで主記憶読み出しアクセスを行う。１要素読み出す毎にボディデータ長を１減算する。そして，読み出しデータを送信用ロードデータバッファ１３でバッファリングしつつ，ネットワーク１０へ送信する。ステップ１１０により，ボディデータ長が０になるかどうかを判定し，ボディデータ長が０になるまでステップ１０９を繰り返す。ボディデータ長が０になったら，ステップ１０８によりヘッダキュー読み出しポインタ３５を１加算し，スタートへ戻る。
【００６２】
図５に本発明の別の一実施例における転送制御部の構成例を示す。なお本実施例における命令処理部１７および主記憶２０の構成は，前述した実施例と同様である。
【００６３】
図５において，ネットワーク転送制御部３１は，命令処理部１７からの指令によって起動され，転送パケットのパケットヘッダとボディデータ２２の読み出しのため主記憶アクセス制御部３６へ主記憶アクセス要求を発行し，ネットワークインタフェースを制御し，送信用ロードデータバッファ１３と送信用アドレスリストバッファ１４とからネットワーク１０へのデータ送出を制御するものである。主記憶アクセス制御部３６とストアデータバッファ３０と送信用ロードデータバッファ１３とは，前述した実施例と同様なものである。
【００６４】
送信用アドレスリストバッファ１４は，送信処理において主記憶アクセス制御部３６が主記憶２０上のアドレスリスト２１の読み出しを行う際に，一時的にアドレスリスト２１をバッファリングするとともに，リストベクトルを送信するリストベクトル転送モードではなく，かつボディデータ２２がブロックアクセスで読み出せるときには，送信処理において主記憶２０からネットワーク１０へデータ転送を行う際に，一時的にデータをバッファリングするものである。
【００６５】
次に，この実施例のデータ転送動作を説明する。転送制御部１２以外の動作の概略は前述した実施例と同様であるので説明を省略する。
送信処理における転送制御部１２の動作は以下のとおりである。送信処理装置の転送制御部１２が命令処理部１７から起動される時は，直接にはネットワーク転送制御部３１が起動される。ネットワーク転送制御部３１は，命令処理部１７の指定に従って，パケットヘッダの主記憶２０上のアドレスを得て，主記憶アクセス制御部３６へパケットヘッダ読み出し要求を発行する。主記憶アクセス制御部３６は，この要求を受けて主記憶２０に対してロードアクセスを行い，主記憶２０から読み出されたパケットヘッダを送信用ロードデータバッファ１３へ格納する。この動作が終了すると，主記憶アクセス制御部３６は，ネットワーク転送制御部３１へパケットヘッダ読み出し終了通知を送る。これにより，ネットワーク転送制御部３１は，送信用ロードデータバッファ１３から必要な制御情報を読み出して解析し，主記憶アクセス制御部３６へボディデータ読み出し要求を発行する。この解析で送信データのアクセスモードの判定を行い，送信データがリストベクトルであるか否か，リストベクトルでない場合にはブロックアクセスで処理できるか否かを決定する。
【００６６】
送信データがリストベクトルである場合は，これ以降の動作は前述した実施例と同様である。
送信データがリストベクトルでなく，かつブロックアクセスで処理できる場合（すなわち，送信データが主記憶２０上に連続に配置されている場合）の動作は次のようになる。主記憶アクセス制御部３６は，ネットワーク転送制御部３１からのボディデータ読み出し要求を受けて，送信用ロードデータバッファ１３から送信データアドレス／データ数を読み出して，主記憶２０に対してブロックロードアクセスを行い，主記憶２０から読み出されたボディデータ２２を送信用ロードデータバッファ１３と送信用アドレスリストバッファ１４とに格納する。このとき，送信用アドレスリストバッファ１４は，実質的には送信用ロードデータバッファ１３の増設部分として扱われる。
【００６７】
この間，ネットワーク転送制御部３１は，パケットデータを送信用ロードデータバッファ１３と送信用アドレスリストバッファ１４とからネットワーク１０へと送出する。主記憶アクセス制御部３６は，指定された数のボディデータ２２の読み出しを終了すると，ネットワーク転送制御部３１へボディデータ読み出し終了通知を送る。ネットワーク転送制御部３１はこの通知を受け取った後，送信用ロードデータバッファ１３と送信用アドレスリストバッファ１４とが空になるまで，パケットデータをネットワーク１０へ送出し，それが終了するとパケット送信を終了する。
【００６８】
送信データがリストベクトルでなく，かつブロックアクセスで処理できない場合（すなわち，送信データが主記憶２０上に等間隔に不連続に配置されている場合など）の動作は次のようになる。主記憶アクセス制御部３６は，ネットワーク転送制御部３１からのボディデータ読み出し要求を受けて，送信用ロードデータバッファ１３から送信データアドレス／データ数を読み出して，主記憶２０に対してランダムロードアクセスを行い，主記憶２０から読み出されたボディデータ２２を送信用ロードデータバッファ１３へ格納する。
【００６９】
この間，ネットワーク転送制御部３１は，パケットデータを送信用ロードデータバッファ１３からネットワーク１０へと送出する。主記憶アクセス制御部３６は，指定された数のボディデータ２２の読み出しを終了すると，ネットワーク転送制御部３１へボディデータ読み出し終了通知を送る。ネットワーク転送制御部３１は，この通知を受け取った後，送信用ロードデータバッファ１３が空になるまでパケットデータをネットワーク１０へ送出し，それが終了するとパケット送信を終了する。
【００７０】
【発明の効果】
以上説明したように，請求項１記載の発明によれば，命令処理部のオーバーヘッドなしに，効率よくリストベクトルを転送することができるようになる。特に，アドレスリスト格納用のバッファを設けることにより，ロードデータバッファの管理を単純にすることができるので，制御回路の物量の増加やクロックサイクルの増大を回避することができるという効果がある。また，送信データのための主記憶読み出しと送信アドレスリストのための主記憶読み出しとを，独立に管理することができるので，ハードウェアの使用方法を最適化して使用効率を高めることができるという効果がある。
【００７１】
また，請求項２記載の発明によれば，送信データがリストベクトルでない時には，送信用アドレスリストバッファを送信用ロードデータバッファの増設部分として利用することができるので，送信データ読み出しにおけるハードウェアの使用方法を最適化して使用効率を高めることができるという効果がある。
【００７２】
さらに，請求項３記載の発明によれば，送信用アドレスリストバッファの制御回路をブロックアクセスのみに対応するものとすることができ，制御回路の増加や複雑化を回避できる。
【図面の簡単な説明】
【図１】本発明の構成例を示す図である。
【図２】本発明の一実施例における転送制御部の構成例を示す図である。
【図３】本発明の実施例における命令処理部と転送制御部とのインタフェース説明図である。
【図４】本発明の一実施例による送信処理制御部の制御フローチャートである。
【図５】本発明の別の一実施例における転送制御部の構成例を示す図である。
【図６】従来技術の説明図である。
【符号の説明】
１０    ネットワーク
１１，１１’，１１”  処理装置
１２    転送制御部
１３    送信用ロードデータバッファ
１４    送信用アドレスリストバッファ
１５    その他の回路
１６    送信処理制御部
１７    命令処理部
２０    主記憶
２１    アドレスリスト
２２    ボディデータ
【図１】
0003639317.tif 000002
【図２】
0003639317.tif 000003
【図３】
0003639317.tif 000004
【図４】
0003639317.tif 000005
【図５】
0003639317.tif 000006
【図６】
0003639317.tif 000007