(57)【特許請求の範囲】
【請求項１】
ネットワークを介して相互に接続され、データ処理を行なう命令処理部の転送要求に従って、転送処理部で主記憶と上記ネットワークとの間でデータ転送を行なうデータ処理装置において、
上記命令処理部より参照可能で、転送要求に基づく転送処理を実行する毎に上記転送処理部により更新されるカウンタを有し、
上記カウンタを主記憶上に設け、
上記カウンタの主記憶上のアドレスを転送要求の制御情報部に含み、
上記カウンタの更新を行なう前に主記憶アクセスの逐次化を行なうことを指示する逐次化フラグを設けたことを特徴とする、データ処理装置。
【請求項２】
ネットワークを介して相互に接続され、データ処理を行なう命令処理部の転送要求に従って、転送処理部で主記憶と上記ネットワークとの間でデータ転送を行なうデータ処理装置において、
上記命令処理部より参照可能で、転送要求に基づく転送処理を実行する毎に上記転送処理部により更新されるカウンタを有し、
上記カウンタを主記憶上に設け、
上記カウンタの主記憶上のアドレスを転送要求の制御情報部に含み、
上記カウンタの値が特定値となったとき上記命令処理部に対して割込みの発生有無を指示する割込みフラグを設けたことを特徴とする、データ処理装置。
【請求項３】
ネットワークを介して相互に接続され、データ処理を行なう命令処理部の転送要求に従って、転送処理部で主記憶と上記ネットワークとの間でデータ転送を行なうデータ処理装置において、
上記命令処理部より参照可能で、転送要求に基づく転送処理を実行する毎に上記転送処理部により更新されるカウンタを有し、
上記カウンタを主記憶上に設け、
上記カウンタの主記憶上のアドレスを転送要求の制御情報部に含み、
上記カウンタの更新の有無を指示する更新フラグを設け、
上記更新フラグを転送要求の制御情報部に含むことを特徴とする、データ処理装置。
【請求項４】
ネットワークを介して相互に接続され、データ処理を行なう命令処理部の転送要求に従って、転送処理部で主記憶と上記ネットワークとの間でデータ転送を行なうデータ処理装置において、
上記命令処理部より参照可能で、転送要求に基づく転送処理を実行する毎に上記転送処理部により更新されるカウンタを有し、
前記カウンタは前記主記憶上に設けられ、
前記転送処理部は、該カウンタの内容の期待値を任意のプロセスについて格納する第１のレジスタ手段と、前記命令処理部に対して割込みが発生したか否かを示すフラグを格納する第２のレジスタ手段とを有し、
該転送処理部は、該カウンタの内容と該第１のレジスタ手段内の期待値とが前記任意のプロセスについて一致すると該命令処理部に対して割込みを発生すると共に該第２のレジスタ手段にフラグを設定することを特徴とする、データ処理装置。
【請求項５】
前記任意のプロセスは、１又は複数の転送要求キューに対応していることを特徴とする、請求項４記載のデータ処理装置。
【請求項６】
前記転送処理部は、前記カウンタの前記主記憶内でのアドレスを前記任意のプロセスについて格納する第３のレジスタ手段を更に有することを特徴とする、請求項４又は５記載のデータ処理装置。
【請求項７】
前記命令処理部は、前記任意のプロセスに対する期待値及び前記カウンタのアドレスを夫々前記第１及び第３のレジスタ手段に設定することを特徴とする、請求項６記載のデータ処理装置。
【請求項８】
前記転送処理部は複数の転送要求キューをエンキューし、
前記カウンタは複数の転送要求キューに対応して複数設けられ、
前記第１及び第３のレジスタ手段は夫々複数の転送要求キューに対応して複数設けられ、
前記プロセスは各々１又は複数の転送要求キューに対応していることを特徴とする、請求項６又は７記載のデータ処理装置。
【請求項９】
前記カウンタは、転送要求に基づいて転送処理により送信及び受信のうち少なくとも一方が行われる毎に更新される内容を格納することを特徴とする、請求項１〜８のうちいずれか一項記載のデータ処理装置。
【請求項１０】
上記逐次化フラグを転送要求の制御情報部に含むことを特徴とする、請求項１記載のデータ処理装置。
【請求項１１】
上記割込みフラグを転送要求の制御情報部に含むことを特徴とする、請求項２記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、データ処理装置に関し、ネットワークを介して相互にデータ転送を行なうデータ処理装置に関する。
【０００２】
【従来の技術】
複数のデータ処理装置がネットワーク等を介して接続された並列計算機システム等のデータ処理システムにおいては、複数のデータ処理装置間でデータを転送して並列データ処理を実行する。
【０００３】
従来システムでは、任意のデータ処理装置の記憶領域の内容を他のデータ処理装置に対して転送する場合、他のデータ処理装置に対するデータ転送のキューイングの管理は、スーパーバイザプログラムが管理しており、データ処理装置のユーザープログラムはスーパーバイザプログラムに対してデータ転送依頼の割込みを発生し、スーパーバイザプログラムがヘッダを作成して転送指示を行なうのが一般的である。
【０００４】
しかし、この方法は割込みが多発してオーバーヘッドが大きいため、転送要求キューに書込みポインタ及び読出しポインタを設け、これらのポインタをユーザプログラムに直接管理させてスーパーバイザ介入のオーバーヘッドを削減する方法が提案されている。
【０００５】
【発明が解決しようとする課題】
しかし、上記の従来方法においても、転送要求をエンキューしておき転送処理部による転送の終了を知るためには、ユーザプログラムは読出しポインタをポーリングしなければならない。また転送要求が複数ある場合、転送要求の終了判定の読出しポインタの値は、エンキューを開始した時点での書込みポインタの値に依存するため、ユーザプログラム内に終了判定値を保持しなければならない。
【０００６】
更に転送要求キューがラップアラウンドして使用される構成の場合は、読出しポインタがオーバーランすると転送の終了が判定できなくなるため、転送要求のエンキューと転送終了判定のために余分な制御情報か必要となり、アルゴリズムが複雑になるという問題があった。
【０００７】
本発明は上記の点に鑑みなされたもので、転送終了判定のための余分な制御情報が不要でアルゴリズムが簡単であり、命令処理部の余分なオーバーヘッドの発生を防止するデータ処理装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
本発明のデータ処理装置は、ネットワークを介して相互に接続され、データ処理を行なう命令処理部の転送要求に従って、転送処理部で主記憶と上記ネットワークとの間でデータ転送を行なうデータ処理装置において、
上記命令処理部より参照可能で、転送要求に基づく転送処理を実行する毎に上記転送処理部により更新されるカウンタを有する。
【０００９】
また、上記カウンタを主記憶上に設ける。
【００１０】
また、上記カウンタを転送要求毎に複数設ける。
【００１１】
また、上記カウンタの主記憶上のアドレスを転送要求の制御情報部に含む。
【００１２】
また、上記カウンタの更新の有無を指示する更新フラグを設ける。
【００１３】
また、上記カウンタの更新を行なう前に主記憶アクセスの逐次化を行なうことを指示する逐次化フラグを設ける。
【００１４】
また、上記カウンタの値が特定値となったとき上記命令処理部に対して割込みの発生有無を指示する割込みフラグを設ける。
【００１５】
また、上記更新フラグ又は逐次化フラグ又は割込みフラグを転送要求の制御情報部に含む。
【００１６】
上記カウンタは前記主記憶上に設けられ、上記転送処理部は、カウンタの内容の期待値を任意のプロセスについて格納する第１のレジスタ手段と、命令処理部に対して割込みが発生したか否かを示すフラグを格納する第２のレジスタ手段とを有し、転送処理部は、カウンタの内容と第１のレジスタ手段内の期待値とが前記任意のプロセスについて一致すると命令処理部に対して割込みを発生すると共に第２のレジスタ手段にフラグを設定する構成としても良い。
【００１７】
【作用】
本発明においては、命令処理部から転送要求のエンキューに先立って転送要求の数に従った値をカウンタに設定しておき、転送要求の送信処理を実行する毎にカウンタの値を更新することにより、命令処理部はカウンタの値を監視するだけで転送処理部による送信処理の終了を知ることができ、上記カウンタの値は転送要求キューの使用状態に依存しないので終了判定値を保存する必要がない。
【００１８】
また、カウンタを主記憶上に複数設けることにより、複数の転送要求キューがある場合に各キューに別個のカウンタを割付けて転送要求管理を複数並列に行なうことができ、ハードウェア量の増加を防止できる。
【００１９】
また、カウンタの主記憶上のアドレスを転送要求の制御情報部に含むことにより、複数のカウンタを主記憶上に任意に設定することができる。
【００２０】
また、更新フラグを設けることにより、カウンタを使用する必要のないアルゴリズムで転送を行なう場合に余分なオーバーヘッドの発生を防止できる。
【００２１】
また、逐次化フラグを設けることにより、ユーザプログラムは命令処理部内のバッファ記憶と主記憶の内容との整合性を意識することなく転送終了時に所要の送信処理とそれに伴う主記憶の内容の更新が終了したものとみなすことができ、かつ転送要求のストリームの中間部分のような主記憶アクセスの逐次化の必要のない送信処理については逐次化フラグをオフとしておくことにより余分な逐次化のオーバーヘッドの発生を防止できる。
【００２２】
また割込みフラグを設けることにより、ユーザプログラムはカウンタを監視する必要がなくなり、カウンタをポーリングするオーバーヘッドを削減でき、かつプログラムは任意にカウンタの直接監視と割込みとを選択できるので、キューイングする転送要求の数が少ないときは直接監視を行ない、多いときは割込みを使用する等の柔軟な制御を行なうことができる。
【００２３】
上記転送処理部に第１及び第２のレジスタ手段を設けることにより、スーパバイザプログラム又はユーザプログラムによるカウンタのポーリングが不要となる。
【００２４】
【実施例】
図２は本発明装置を適用した並列計算機システムの構成図を示す。同図中、データ処理装置１０1 〜１０ｎ夫々はネットワーク１１を介して接続されている。各データ処理装置１０1 〜１０ｎはこのネットワーク１１を介して相互にデータ転送を行ない、かつ、個別にデータ処理を行なう。
【００２５】
各データ処理部１０1 〜１０ｎは図３に示す如く、転送処理部１５と、命令処理部１６と、主記憶１７とから構成されている。転送処理部１５は命令処理部１６からの指示に従って、主記憶１７とネットワーク１１との間でパケットの転送処理を行なう。転送パケットは送信側及び受信側のデータ処理装置におけるメモリアクセス属性、及び受信側のデータ処理装置における処理の指定を行なう情報等であるヘッダと、転送データ本体であるボディデータとよりなる。
【００２６】
命令処理部１６は主記憶１７に格納されているプログラムを読出して実行し、主記憶１７に格納されているデータのデータ処理を行なう。
【００２７】
図１は本発明装置の第１実施例の転送処理部のブロック図を示す。
【００２８】
同図中、ネットワーク転送制御部２０は、命令処理部１６から端子２１を通して供給される指令によって起動され、転送キュー読出しポインタ２２と転送キュー書込みポインタ２３との値によって転送処理を開始し、転送パケットのヘッダ及びボディデータの読出しのため主記憶アクセス制御部２４に主記憶アクセス要求を発行し、端子２５を介して接続されたネットワーク１１とのインタフェースを制御してデータバッファ２６から端子２７を介してネットワーク１１に転送パケットを送出する。また、転送終了時には転送キュー読出しポインタ２２をインクリメントすると共に、送信カウンタ３０のデクリメントを行なう。
【００２９】
主記憶アクセス制御部２４はネットワーク転送制御部２０からの指令によって、端子２８を介して主記憶１７に対してアクセスを行ない、主記憶１７とデータバッファ２６との間の端子２９を介するデータ転送を制御する。データバッファ２６は主記憶１７とネットワーク１１との間でデータ転送を行なうとき、一時的にデータのバッファリングを行なうと共に、ネットワーク転送制御部２０及び主記憶アクセス制御部２４が主記憶１７上の必要とするデータを読み書きする際に、一時的にデータをバッファリングする。
【００３０】
転送キューベースアドレスレジスタ３１は命令処理部１６から参照及び更新が可能であり、主記憶１７上の転送キューの先頭アドレスを格納する。転送キュー書込みポインタ２３は命令処理部１６が転送キューのどの位置まで転送要求をエンキューしたかを管理し、転送キュー読出しポインタは転送キューのどの位置までの転送要求の転送処理を終了したかを管理する。送信カウンタ３０は転送要求の処理終了数を管理する。上記ポインタ２２，２３及び送信カウンタ３０は命令処理部１６から参照及び更新が可能である。
【００３１】
図４はネットワーク転送制御部２０のブロック図を示す。同図中、端子２１を介して命令処理部１６より入来する起動／停止コマンドは受信ステート制御部４０及び送信ステート制御部４１に供給される。
【００３２】
受信ステート制御部４０は上記起動／停止コマンドの他に受信バッファ制御部４２よりの受信開始通知、主記憶アクセス制御部２４より端子４３を介しての受信アクセス終了を供給されて受信状態を管理しており、端子４７を介して接続されているレジスタ，ポインタ，カウンタの読み出し／書き込みコマンドをバス調整処理部４４に供給し、また主記憶アクセス制御部２４に受信アクセス制御コマンドを供給する。
【００３３】
送信ステート制御部４１は上記起動／停止コマンドの他に送信カウンタ更新／特定値検出処理部４５よりの特定値検出信号、主記憶アクセス制御部２４より端子４３を介しての送信アクセス終了を供給されて送信状態を管理しており、端子４７を介して接続されているレジスタ，ポインタ，カウンタの読み出し／書き込みコマンドをバス調整処理部４４に供給し、また主記憶アクセス制御部２４に受信アクセス制御コマンドを供給すると共に送信バッファ制御部４６に送信終了通知を供給する。
【００３４】
バス調停処理部４４は受信ステート制御部４０，送信ステート制御部４１夫々よりのコマンドの調停して端子４７を介して送信カウンタ３０，転送キューベースアドレスレジスタ３１、転送キュー読出しポインタ２２，転送キュー書込みポインタ２３及び主記憶アクセス制御部２４に接続されたバスにバス制御コマンド，バスアドレス及びデータを供給する。
【００３５】
送信カウンタ更新／特定値検出処理部４５はバス調停処理部４４に調定されて端子４７を介し送信カウンタ３０をアクセスし、送信カウンタ３０を更新すると共に、送信カウンタ３０の値が特定値（例えば０）となったとき特定値検出信号を送信ステート制御部４１に供給する。
【００３６】
受信バッファ制御部４２は端子４８を介してネットワーク１１より受信有効信号，受信終了信号を供給されて端子４９を介してデータバッファ２６にネットワーク１１よりのデータの受信バッファ書込有効信号及びアドレスを供給すると共にネットワーク１１に送信応答信号を供給し、データバッファ２６に対し受信バッファ読出しアドレスを供給して端子４３を介して主記憶アクセス制御部２４より受信バッファ読出有効信号を供給される。
【００３７】
送信バッファ制御部４６は端子４３を介して主記憶アクセス制御部２４より送信バッファ書込有効信号を供給されて端子４９よりデータバッファ２６に送信バッファ書込アドレスを供給し、またデータバッファ２６に送信バッファ読出し有効信号及びアドレスを供給して、端子４８を介しネットワーク１１に送信有効信号を供給し、ネットワーク１１より応答信号を供給される。また、転送終了通知を受けるとネットワーク１１に送信終了信号を供給する。更に端子４９を介してデータバッファとデータバスで接続されており、転送要求の制御情報の所定の検査及び変更を行なう。
【００３８】
図５は主記憶アクセス制御部２４のブロック図を示す。同図中、送信リクエスト／アドレス発生部５１は端子５２を介してネットワーク転送制御部２０からバス制御コマンド及びバスアドレスを供給されると共にデータバスで接続され、かつ端子５３を介してネットワーク転送制御部２０より送信アクセス制御コマンド及び送信バッファフル信号を供給され、また主記憶読出タイミング調整部５４より主記憶読出データ有効信号を供給され、端子５５を介してデータバッファ２６経由で主記憶１７の転送キューの内容を供給されており、送信リクエスト，オペレーションコード及びアドレスを発生して主記憶アクセスプライオリティ制御部５６に供給し、送信アクセス終了を端子５３を介してネットワーク転送制御部２０に通知する。
【００３９】
受信リクエスト／アドレス発生部５７は端子５２を介してネットワーク転送制御部２０からバス制御コマンド及びバスアドレスを供給されると共にデータバスで接続され、かつ端子５３を介してネットワーク転送制御部２０より受信アクセス制御コマンド及び受信バッファフル／エンプティ信号を供給され、また主記憶アクセスプライオリティ制御部５６より受信バッファ読出有効信号を供給され、端子５５を介してデータバッファ２６経由で主記憶１７の転送キューの内容を供給されており、受信リクエスト，オペレーションコード及びアドレスを発生して主記憶アクセスプライオリティ制御部５６に供給し、受信アクセス終了を端子５３を介してネットワーク転送制御部２０に通知する。
【００４０】
主記憶アクセスプライオリティ制御部５６は送信リクエスト，受信リクエスト及びオペレーションコードを供給されると、そのプライオリティに従って（通常は受信優先）、いずれかを選択し、端子５８を介して主記憶１７にリクエスト，オペレーションコード及びアドレスを供給し、主記憶読出タイミング調整部５４を起動し、また受信バッファ読出有効信号をデータバッファ２６及びネットワーク転送制御部２０に供給する。
【００４１】
主記憶読出タイミング調整部５４は上記起動に基づき主記憶読出データ有効信号，送信バッファ書込有効信号を生成してデータバッファ２６及びネットワーク転送制御部２０に供給する。
【００４２】
次に転送処理部１５の動作について説明する。
【００４３】
ユーザプログラムは転送要求のエンキューに先立って、エンキューする転送要求の数を送信カウンタ３０に書込む。次に転送要求の受信処理装置指定、ボディーデータ長、送信アドレス、受信アドレス等の転送要求の制御情報を転送パケットのヘッダの形式として転送キューベースアドレスレジスタ３１の値＋転送キュー書込みポインタ２３の値×ヘッダ長で示される主記憶１７上のアドレスに書込む。この後、転送キュー書込みポインタ２３をインクリメントする。以降ユーザプログラムは転送キューへの転送要求の制御情報の書込みと転送キュー書込みポインタ２３のインクリメントとを繰り返しエンキュー処理を終る。
【００４４】
これによって、主記憶１７の転送キューには図６に示す如く、転送要求の制御情報が格納される。
【００４５】
ネットワーク転送制御部２０は命令処理部１６よりの指令によって起動された状態で転送要求のエンキュー待ち状態となっており、転送キュー読出しポインタ２２の値と転送キュー書込みポインタ２３の値が一致しなくなると、未処理の転送要求があるとして転送処理を開始し、転送パケットのヘッダの読出しのため主記憶アクセス制御部２４に主記憶アクセスリクエストを発行する。
【００４６】
これにより、主記憶アクセス制御部２４は転送キューベースアドレスレジスタ３１の値＋転送キュー読出しポインタ２２の値×ヘッダ長を演算して、最も古い未処理の転送要求のパケットヘッダの主記憶１７上のアドレスを求め、主記憶１７に対して読出しアクセスを発行する。これにより主記憶１７からパケットヘッダが読出されると、主記憶アクセス制御部２４はこれをデータバッファ２６に格納すると共にネットワーク転送制御部２０にパケットヘッダの読出し終了を通知する。
【００４７】
引き続き主記憶アクセス制御部２４は主記憶１７からデータバッファ２６を介して転送要求の制御情報を取出して転送パケットのボディのアドレスを計算し、主記憶１７に対して上記パケットボディの読出しアクセスを発行する。主記憶１７からパケットボディが順次読出されてくると主記憶アクセス制御部２４はこれを順次データバッファ２６に格納すると共に、ネットワーク転送制御部２０にパケットボディの読出し量を順次通知する。
【００４８】
ネットワーク転送制御部２０は主記憶アクセス制御部２４からパケットヘッダの読出し終了を通知されると、データバッファ２６から転送要求の制御情報を取出して所定の検査と変更を加えた後、この制御情報をデータバッファ２６に書戻す。
【００４９】
引き続きネットワーク転送制御部２０はデータバッファ２６からネットワーク１１にパケットヘッダを送出する。更にネットワーク転送制御部２０は主記憶アクセス制御部２４からパケットボディの読出し量を順次通知されると、データバッファ２６に格納されたパケットボディを順次ネットワーク１１に送出する。このようにしてネットワーク１１への転送パケットの送出を終えると、ネットワーク転送制御部２０は転送キュー読出しポインタ２２をイクリメントし、送信カウンタをデクリメントする。
【００５０】
更に、ネットワーク転送制御部２０は転送キュー読出しポインタ２２と転送キュー書込みポインタの値を検査し、未処理の転送要求が残っていれば次の転送処理を開始する。
【００５１】
このようにして最初にエンキューされた転送要求の転送処理が全て終了すれば送信カウンタの値は０になる。ユーザプログラムはこの間別の処理を行ないながら、時々送信カウンタをポーリングしていれば、送信カウンタの値が０になったことにより、エンキューした転送要求の転送処理が全て終了したことを知ることができる。
【００５２】
このように、命令処理部１６から転送要求のエンキューに先立って転送要求の数に従った値を送信カウンタ３０に設定しておき、転送要求の送信処理を実行する毎に送信カウンタ３０の値を更新することにより、命令処理部１６は送信カウンタ３０の値を監視するだけで転送処理部１５による送信処理の終了を知ることができ、上記送信カウンタ３０の値は転送要求キューの使用状態に依存しないので終了判定値を保存する必要がない。
【００５３】
図７は本発明装置の第２実施例の転送処理部のブロック図を示す。同図中、図１と同一部分には同一符号を付し、その説明を省略する。図７においては送信カウンタ３０が設けられておらずネットワーク転送制御部６０は図８に示す構成である。図８では、送信カウンタ更新／特定値検出処理部４５は端子４９を介してデータバッファ２６とデータバスにより接続されている。この実施例では主記憶１７上に送信カウンタが格納されている。
【００５４】
次にこの実施例での転送処理部の動作について説明する。
【００５５】
ユーザプログラムは転送要求のエンキューに先立って、エンキューする転送要求の数を主記憶１７の送信カウンタに書込む。次に転送要求の受信処理装置指定、ボディーデータ長、送信アドレス、受信アドレス、送信カウンタアドレス、送信カウンタ制御情報等の転送要求の制御情報を転送パケットのヘッダの形式として転送キューベースアドレスレジスタ３１の値＋転送キュー書込みポインタ２３の値×ヘッダ長で示される主記憶１７上のアドレスに書込む。この後、転送キュー書込みポインタ２３をインクリメントする。以降ユーザプログラムは転送キューへの転送要求の制御情報の書込みと転送キュー書込みポインタ２３のインクリメントとを繰り返しエンキュー処理を終る。
【００５６】
これによって、主記憶１７の転送キューには図９に示す如く、転送要求の制御情報が格納される。ここで、送信カウンタアドレスは主記憶１７上の送信カウンタの格納アドレスであり、送信カウンタ制御情報は送信カウンタの更新の有無を指示する更新フラグと、送信カウンタが特定値であることを検出したとき割込みを行なうか否かを示す割込みフラグと、送信カウンタ更新時に主記憶アクセスを逐次化するか否かを示す逐次化フラグを有している。
【００５７】
ネットワーク転送制御部６０は命令処理部１６よりの指令によって起動された状態で転送要求のエンキュー待ち状態となっており、転送キュー読出しポインタ２２の値と転送キュー書込みポインタ２３の値が一致しなくなると、未処理の転送要求があるとして転送処理を開始し、転送パケットのヘッダの読出しのため主記憶アクセス制御部２４に主記憶アクセスリクエストを発行する。
【００５８】
これにより、主記憶アクセス制御部２４は転送キューベースアドレスレジスタ３１の値＋転送キュー読出しポインタ２２の値×ヘッダ長を演算して、最も古い未処理の転送要求のパケットヘッダの主記憶１７上のアドレスを求め、主記憶１７に対して読出しアクセスを発行する。これにより主記憶１７からパケットヘッダが読出されると、主記憶アクセス制御部２４はこれをデータバッファ２６に格納すると共にネットワーク転送制御部６０にパケットヘッダの読出し終了を通知する。
【００５９】
引き続き主記憶アクセス制御部２４は主記憶１７からデータバッファ２６を介して転送要求の制御情報を取出して転送パケットのボディのアドレスを計算し、主記憶１７に対して上記パケットボディの読出しアクセスを発行する。主記憶１７からパケットボディが順次読出されてくると主記憶アクセス制御部２４はこれを順次データバッファ２６に格納すると共に、ネットワーク転送制御部６０にパケットボディの読出し量を順次通知する。
【００６０】
ネットワーク転送制御部６０は主記憶アクセス制御部２４からパケットヘッダの読出し終了を通知されると、データバッファ２６から転送要求の制御情報を取出して所定の検査と変更を加えた後、この制御情報をデータバッファ２６に書戻す。
【００６１】
引き続きネットワーク転送制御部６０はデータバッファ２６からネットワーク１１にパケットヘッダを送出する。更にネットワーク転送制御部６０は主記憶アクセス制御部２４からパケットボディの読出し量を順次通知されると、データバッファ２６に格納されたパケットボディを順次ネットワーク１１に送出する。このようにしてネットワーク１１への転送パケットの送出を終えると、ネットワーク転送制御部６０は転送キュー読出しポインタ２２をイクリメントし、パケットヘッダの送信カウンタ制御情報内の送信カウンタ更新フラグを検査し、これがオンであれば主記憶アクセス制御部２４に対して送信カウンタの読出しを指示する。主記憶アクセス制御部２４は保持してあったパケットヘッダ内の送信カウンタアドレスを取出して、主記憶１７に対して読出しアクセスを発行する。主記憶１７から送信カウンタが読出されて来ると主記憶アクセス制御部２４はこれをデータバッファ２６へ格納するとともに、ネットワーク転送制御部６０に送信カウンタの読出し終了を通知する。ネットワーク転送制御部６０は主記憶アクセス制御部２４から送信カウンタの読出し終了を通知されると、データバッファ２６から送信カウンタを取出してこれをデクリメントしてからデータバッファ２６へ書戻し、主記憶アクセス制御部２４に対して送信カウンタの書込みを指示する。この際ネットワーク転送制御部６０はパケットヘッダの送信カウンタ制御情報内の送信カウンタ更新時主記憶アクセス逐次化フラグを検査し、これがオンであれば主記憶アクセス制御部２４に対して逐次化要求付きアクセスを行なうように指示する。主記憶アクセス制御部２４は転送制御部の指示に従って逐次化要求付き／無しアクセスを主記憶１７に対して発行し、データバッファ２６から更新された送信カウンタを取出して主記憶１７へ送る。主記憶１７への書込みが終了すると主記憶アクセス制御部２４は、ネットワーク転送制御部６０に送信カウンタの書込み終了を通知する。するとネットワーク転送制御部６０はパケットヘッダの送信カウンタ制御情報内の送信カウンタ特定値検出時割込みフラグを検査し、これがオンであってかつ送信カウンタのデクリメント後の値が０であれば命令処理部１６に対して割込みを発生する。この条件が成立していなければ、ネットワーク転送制御部６０は転送キュー読出しポインタ２２と転送キュー書込みポインタ２３の値を検査し、未処理の転送要求が残っていれば次の転送処理を開始する。
【００６２】
このようにして最初にエンキューされた転送要求の転送処理が全て終了し、これらの転送要求において送信カウンタ更新フラグがオンにしてあれば、送信カウンタの値は０になる。プログラムはこの間別の処理を行ないながら、時々送信カウンタをポーリングしていれば、送信カウンタの値が０になったことにより、エンキューした転送要求の転送処理が全て終了したことを知ることができる。また、これらの転送要求において送信カウンタ更新時主記憶アクセス逐次化フラグをオンにしておけば、送信カウンタの値が０になった時にそれ以前のネットワーク転送処理部６０の主記憶アクセスが命令処理部１６から見て全て終了していることが保障される。また、これらの転送要求において送信カウンタ特定値検出時割込みフラグをオンにしておけば、送信カウンタをポーリングする必要もなくなる。
【００６３】
このように、送信カウンタを主記憶１７上に複数設けることにより、複数の転送要求キューがある場合に各キューに別個の送信カウンタを割付けて転送要求管理を複数並列に行なうことができ、ハードウェア量の増加を防止できる。
【００６４】
また、送信カウンタの主記憶１７上のアドレスを転送要求の制御情報部に含むことにより、複数の送信カウンタを主記憶上に任意に設定することができる。
【００６５】
また、更新フラグを設けることにより、送信カウンタを使用する必要のないアルゴリズムで転送を行なう場合に余分なオーバーヘッドの発生を防止できる。
【００６６】
また、逐次化フラグを設けることにより、ユーザプログラムは命令処理部内のバッファ記憶と主記憶の内容との整合性を意識することなく転送終了時に所要の送信処理とそれに伴う主記憶の内容の更新が終了したものとみなすことができ、かつ転送要求のストリームの中間部分のような主記憶アクセスの逐次化の必要のない送信処理については逐次化フラグをオフとしておくことにより余分な逐次化のオーバーヘッドの発生を防止できる。
【００６７】
また割込みフラグを設けることにより、ユーザプログラムは送信カウンタを監視する必要がなくなり、送信カウンタをポーリングするオーバーヘッドを削減でき、かつプログラムは任意に送信カウンタの直接監視と割込みとを選択できるので、キューイングする転送要求の数が少ないときは直接監視を行ない、多いときは割込みを使用する等の柔軟な制御を行なうことができる。
【００６８】
次に、上記命令処理部１６を図１０と共により詳細に説明する。図１０は命令処理部１６の一実施例を示す。
【００６９】
図１０に示す命令処理部１６は、図示の如き接続の転送処理部アダプタ７１と、演算処理部７２と、汎用レジスタ７３と、命令シーケンサ７４と、キャッシュメモリ７５とからなる。命令処理部１６は、主記憶１７に格納された命令（プログラム）を読んで実行する。図１０中、データバスは実線で示し、制御信号は点線で示す。
【００７０】
命令シーケンサ７４は、内部プログラムカウンタを有し、この内部プログラムカウンタにより指定されたアドレスに基づいてキャッシュメモリ７５から命令を読み出す。命令シーケンサ７４は読んだ命令をデコードし、各種制御信号を命令処理部１６の各部へ供給する。命令の実行が終了すると、命令シーケンサ７４は内部プログラムカウンタの値を更新して次の命令の実行を開始する。
【００７１】
キャッシュメモリ７５は、主記憶１７の一部のコピーを格納する。キャッシュメモリ７５は、命令シーケンサ７４からの制御信号に応じて命令を命令シーケンサ７４へ供給すると共に、データをレジスタ７３へ供給する。要求されたデータがキャッシュメモリ７５に格納されていない場合は、要求されたデータは主記憶１７から読み出されてキャッシュメモリ７５へ格納される。キャッシュメモリ７５は、命令シーケンサ７４からの制御信号に応じてレジスタ７３からのデータをも格納し、格納されたデータを主記憶１７へ書込む。
【００７２】
レジスタ７３は、命令シーケンサ７４からの制御信号に応じてキャッシュメモリ７５、演算処理部７２及び転送処理部アダプタ７１からのデータを受けて格納する。レジスタ７３は、演算処理を施されるべきデータを演算処理部７２へ供給すると共に、キャッシュメモリ７５にデータを格納する。
【００７３】
演算処理部７２は、命令シーケンサ７４からの制御信号に応じてレジスタ７３から供給されるデータに演算を施す。演算処理部７２は、この演算の結果をレジスタ７３及び転送処理部アダプタ７１へ供給する。
【００７４】
転送処理部アダプタ７１は、命令シーケンサ７４からの制御信号に応じて転送処理部１５へ起動／停止コマンドを送出する。又、転送処理部アダプタ７１は、命令シーケンサ７４からの制御信号に応じて、演算処理部７２からのデータを用いて転送処理部１５内のレジスタ／ポインタに対して読出し／書込み動作を行う。転送処理部アダプタ７１は、命令シーケンサ７４からの制御信号に応じて転送処理部１５内のレジスタ／ポインタより読出したデータをレジスタ７３へ転送する。更に、転送処理アダプタ７１は、転送処理部１５からの割込み信号を命令シーケンサ７４へ転送する。
【００７５】
上記の如き構成の命令処理部１６は、図１においても図７においても使用できる。
【００７６】
尚、上記第１及び第２実施例では、パケット送信に対して送信カウンタが設けられているが、同様にして、パケット受信に対して受信カウンタを設けても良い。
【００７７】
ところで、上記第１及び第２実施例では、送信カウンタをポーリングする必要がある。この送信カウンタのポーリングをスーパバイザプログラムが行う場合、スーパバイザプログラムのオーバーヘッドが増大してしまう。しかし、上記第１及び第２実施例では、ユーザプログラムが送信カウンタのポーリングを行うため、スーパバイザプログラムのオーバーヘッドの増大は防止できる。ところが、ユーザプログラムが送信カウンタのポーリングを行うと、命令処理部は送信カウンタが特定値（上記の場合、「０」）となるまでスピンループを実行しなければならず、命令処理部への負荷が増大してしまう。
【００７８】
又、命令処理部がスピンループを実行する場合で、特に１つのデータ処理装置が１つの並列プロセスと他のプロセスを実行するような場合、他のプロセスは、たとえ実行可能であっても、１つの並列プロセスが送信カウンタの値が特定値となるまでスピンループを実行している間、実行されずに待たされてしまう。
【００７９】
そこで、次に送信カウンタのポーリングを不要とすることのできる実施例について図１１及び図１２と共に説明する。
【００８０】
図１１は、本発明装置の第３実施例の転送処理部のブロック図を示す。同図中、図７と同一部分には同一符号を付し、その説明は省略する。又、説明の便宜上、図１１中転送キューベースアドレスレジスタ３１、転送キュー読出しポインタ２２及び転送キュー書込みポインタ２３の図示は省略する。
【００８１】
又、図１２は、第３実施例の動作を説明するための図である。同図中、図７及び図１１と同一部分には同一符号を付し、その説明は省略する。
【００８２】
本実施例では、ｉ＝１，…，Ｍとすると、転送処理部１５は図１１に示す如き接続のレジスタ７１i ，７２i ，７３i ，７４i ，７５を有する。レジスタ７１i は、プロセス＃ｉに対する送信カウンタ期待値を格納し、レジスタ７２i は、検査されているプロセス＃ｉに対する送信カウンタアドレスを格納する。レジスタ７３i は、プロセス＃ｉに対する受信カウンタ期待値を格納し、レジスタ７４i は、検査されているプロセス＃ｉに対する受信カウンタアドレスを格納する。送信カウンタアドレスとは、検査されている対応する送信カウンタの主記憶１７内でのアドレスを示す。同様に、受信カウンタアドレスとは、検査されている対応する受信カウンタの主記憶１７内でのアドレスを示す。また、レジスタ７５は、命令処理部１６に対して割込みが発生したか否かを示す割込みフラグを格納する。
【００８３】
他方、主記憶１７は、図１２に示すように、プロセス＃１〜＃Ｍに対する送信カウンタ１７１1 〜１７１M と、プロセス＃１〜＃Ｍに対する受信カウンタ１７２1 〜１７２M とを格納する。受信カウンタ１７２i は、図９と共に説明したように、送信カウンタ１７１i と同様に、パケットヘッダの制御情報内に含まれている。
【００８４】
他方、主記憶１７は、図１２に示すようにプロセス＃１〜＃Ｍに対する送信カウンタ１７１1 〜１７１M と、プロセス＃１〜＃Ｍに対する受信カウンタ１７２1 〜１７２M とを格納する。受信カウンタ１７２i のアドレスは、図９と共に説明したように、送信カウンタ１７１i と同様に、パケットヘッダの制御情報内に含まれている。
【００８５】
受信カウンタを用いた動作は、基本的には送信カウンタを用いた動作と同様であるので、以後は送信カウンタを用いた動作についてのみ説明する。
【００８６】
レジスタ７１i は、対応するプロセス＃ｉに対する送信カウンタ期待値を格納する。ここで、プロセス＃ｉは、１又は複数の転送要求キューに対応する。レジスタ７２i は、プロセス＃ｉに対応する主記憶１７内の送信カウンタ１７１i のアドレスを格納する。主記憶１７内の送信カウンタ１７１i の値がレジスタ７１i に格納された期待値（即ち、特定の値）と一致し、レジスタ７２i に格納された対応するアドレスと主記憶１７内の送信カウンタ１７１i のアドレスと一致すると、転送制御部６０は端子２１を介して命令処理部１６に対して割込みを発生する。又、転送制御部６０は、割込みを発生する際にレジスタ７５に割込みフラグを設定して割込みが発生したことを示しておく。
【００８７】
つまり、仮にパケットカウンタの値、即ち送信カウンタ１７１i 又は受信カウンタ１７２i の値が期待値（特定値）となるまでの待ち状態が発生したとする。この場合、ユーザプログラムは、パケットカウンタの種別、パケットカウンタの期待値及びパケットカウンタのアドレスをパラメータに含めてシステムコールを行う。パケットカウンタの種別は、カウンタが送信カウンタ１７１i であるか受信カウンタ１７２i であるかを示す。このシステムコールに応答して、オペレーティングシステム（ＯＳ）はパケットカウンタの期待値及びアドレスを呼出し、例えば期待値を対応するレジスタ７１i に設定すると共にアドレスをレジスタ７２i に設定する。この結果、必要であればプロセスに対して割込みを発生可能となる。その後、上記システムコールを発行したプロセスは待ち状態となり、他のプロセスがディスパッチされる。レジスタ７２i は送信カウンタ１７１i のアドレスを格納しているので、送信カウンタ１７１i の値が更新された後であっても、送信カウンタ１７１i の値と対応する期待値とを正しく比較することができる。
【００８８】
例えばプロセス＃１のパケット送信の場合、パケット送信により送信カウンタ１７１1 の値がデクリメント又はインクリメントされると、転送制御部６０は送信カウンタ１７１1 の値とレジスタ７１1 間の期待値とを比較すると共に、送信カウンタ１７１1 の主記憶１７内でのアドレスとレジスタ７２1 内に格納されたアドレスとを比較する。送信カウンタ１７１1 の値とレジスタ７１1 内の期待値が一致すると共に、送信カウンタ１７１1 の主記憶１７内でのアドレスとレジスタ７２1 内に格納されたアドレスとが一致すると、転送制御部６０は命令処理部１６に対して割込みを発生することにより指定された待ち状態を解除する。又、転送制御部６０は、レジスタ７５に割込みフラグを設定することにより、プロセス＃１に対する割込みが発生したことを示す。これにより、プロセス＃１は割込みに応答して待ち状態からアクティブ状態に変更される。
【００８９】
従って、本実施例によれば、スーパーバイザプログラムがパケットカウンタのポーリングを行う場合と比較すると、スーパーバイザプログラムのオーバーヘッドを減少させることができる。又、第１及び第２実施例と比較した場合、ユーザプログラムのスピンループを削減することができる。つまり、本実施例ではパケットカウンタのポーリングが不要となり、システムのスループットを向上することができる。
【００９０】
パケットカウンタの期待値及びアドレスは各並列プロセスについてパケット送信及びパケット受信ごとに設けることが望ましいが、パケット送信及びパケット受信で共通に用いることも可能である。しかし、この場合には不要な割込みが発生する可能性がある。
【００９１】
尚、送信カウンタ及び受信カウンタのアドレスは必ずしも格納しておく必要はなく、レジスタ７２i ，７４i は省略しても良い。この場合、例えば送信カウンタ１７１1 の値をチェックするときは、この値をレジスタ７１1 〜７１M に格納された全ての期待値と比較する。このため、値が送信カウンタ１７１1 以外の送信カウンタの期待値とたまたま一致してしまうと、不要な割込みが発生してしまうことになる。従って、この場合に転送制御部６０から割込みが発生すると、オペレーティングシステム（ＯＳ）が送信カウンタ１７１1 の値と送信カウンタ１７１1 の期待値とが正しく一致しているか否かを確認し、一致していればプロセス＃１を待ち状態からアクティブ状態へ変更する。他方、一致しないと、割込みは送信カウンタ１７１1 についてのものではないので捨てられる。
【００９２】
【発明の効果】
上述の如く、本発明のデータ処理装置によれば、転送終了判定のため余分な制御情報が不要でアルゴリズムが簡単であり、命令処理部の余分なオーバーヘッドの発生を防止でき、実用上きわめて有用である。
【図面の簡単な説明】
【図１】本発明装置の第１実施例の転送処理部を示すブロック図である。
【図２】並列計算機システムの構成図である。
【図３】本発明のデータ処理装置のブロック図である。
【図４】ネットワーク転送制御部のブロック図である。
【図５】主記憶アクセス制御部のブロック図である。
【図６】転送キューの構成図である。
【図７】本発明装置の第２実施例の転送処理部を示すブロック図である。
【図８】ネットワーク転送制御部のブロック図である。
【図９】転送キューの構成図である。
【図１０】命令処理部の一実施例を示すブロック図である。
【図１１】本発明装置の第３実施例の転送処理部を示すブロック図である。
【図１２】第３実施例の動作を説明するための図である。
【符号の説明】
１０1 〜１０ｎ  データ処理装置
１１  ネットワーク
１５  転送処理部
１６  命令処理部
１７  主記憶
２０，６０  ネットワーク転送制御部
２２  転送キュー読出しポインタ
２３  転送キュー書込みポインタ
２４  主記憶アクセス制御部
２６  データバッファ
３０  送信カウンタ
３１  転送キューベースアドレスレジスタ
【図１】
0003693183.tif 000002
【図２】
0003693183.tif 000003
【図３】
0003693183.tif 000004
【図４】
0003693183.tif 000005
【図５】
0003693183.tif 000006
【図６】
0003693183.tif 000007
【図７】
0003693183.tif 000008
【図８】
0003693183.tif 000009
【図９】
0003693183.tif 000010
【図１０】
0003693183.tif 000011
【図１１】
0003693183.tif 000012
【図１２】
0003693183.tif 000013