(57)【特許請求の範囲】
【請求項１】
複数のプロセッサ要素（１０）が相互結合網（２０）を介して結合される並列計算機システムで、各プロセッサ要素（１０）に実装される通信制御装置（３０）において、
メモリ空間上に設けられた、特定のアドレスにデータ列を書き込むことによってそのデータがコマンドとして解釈されることを可能にするコマンドエントリ領域と、
該コマンドエントリ領域に対するコマンドデータ列の書き込みを検出し、上記コマンドデータ列からコマンドを生成すると共に、自プロセッサ要素（１０）のメモリ（１２）に対するデータの読み出し／書き込みを制御するバスインタフェース（３１）と、
該バスインタフェース（３１）により生成されたコマンドを解釈して、送信メッセージを構築する送信コントローラ（３２）と、
該送信コントローラ（３２）によって構築された送信メッセージを前記相互結合網（２０）へ送出すると共に、前記相互結合網（２０）から自プロセッサ要素（１０）宛のメッセージを受信する相互結合網インタフェース（３３）と、
該相互結合網インタフェース（３３）によって受信されたメッセージを解釈し、該メッセージによって転送されてきたデータを、前記バスインタフェース（３１）を介して自プロセッサ要素（１０）のメモリ（１２）の指定された領域に格納する受信コントローラ（３４）と、
を備えたことを特徴とする通信制御装置。
【請求項２】
前記受信コントローラ（３４）は、受信したメッセージのコマンドにデータの格納先として予め定められた特別なバッファ領域が指定されていた場合、上記受信メッセージのデータを、前記バスインタフェース（３１）を介して該バッファ領域に格納することを、
特徴とする請求項１記載の通信制御装置。
【請求項３】
前記受信コントローラ（３４）は、自プロセッサ要素（１０）のメモリ（１２）の内容を他のプロセッサ要素（１０）へ転送することを要求するコマンドを受信した場合、該コマンドを前記送信コントローラ（３２）へ伝達し、
該送信コントローラ（３２）は、上記コマンドを受け取ると前記バスインタフェース（３１）を介して自プロセッサ要素（１０）のメモリ（１２）から上記コマンドにより要求されたデータを読み出し、該データを送信するメッセージを、構築すること、
を特徴とする請求項１記載の通信制御装置。
【請求項４】
前記バスインタフェース（３１）によって生成されたコマンドが書き込まれるコマンドキュー（３５）を、
さらに備えたことを特徴とする請求項１記載の通信制御装置。
【請求項５】
前記バスインタフェース（３１）は、前記プロセッサ（１１）によるあるアドレス領域に対するアクセスを検出したときは、前記プロセッサ（１１）が他のプロセッサ要素（１０）のメモリ（１２）をアクセスするリモートアクセスコマンドを生成する機構を備えること、
を特徴とする請求項３記載の通信制御装置。
【請求項６】
前記バスインタフェース（３１）によって生成された前記リモートアクセスコマンドが書き込まれるリモートアクセス送信キュー（３５Ａ）を、
さらに備えることを特徴とする請求項５記載の通信制御装置。
【請求項７】
前記バスインタフェース（３１）は、前記プロセッサ（１１）がシステムレベルで走行しているときに前記コマンドエントリ領域に書き込んだコマンドデータ列からシステムモードの通信コマンドを生成し、前記プロセッサ（１１）がユーザレベルで走行しているときに前記コマンドエントリ領域に書き込んだコマンドデータ列からユーザモードの通信コマンドを生成すること、
を特徴とする請求項１記載の通信制御装置。
【請求項８】
前記バスインタフェース（３１）によって生成される前記システムモードの通信コマンドが書き込まれるシステム送信キュー（３５Ｂ）と、前記ユーザモードの通信コマンドが書き込まれるユーザ送信キュー（３５Ｃ）を、
さらに備え、
前記送信コントローラ（３２）は、前記システム送信キュー（３５Ｂ）またはユーザ送信キュー（３５Ｃ）から通信コマンドを取り出して該通信コマンドを実行すること、
を特徴とする請求項７記載の通信制御装置。
【請求項９】
前記送信コントローラ（３２）により構築された自プロセッサ要素（１０）内で処理が完結されるコマンドのメッセージを、前記相互結合網インタフェース（３３）を介さずに前記受信コントローラ（３４）に転送する転送手段（３６）を、
さらに備えたことを特徴とする請求項１記載の通信制御装置。
【請求項１０】
前記受信コントローラ（３４）が、前記転送手段（３６）を介して受け取った、自プロセッサ要素（１０）のメモリ（１２）のある領域に格納されているデータの転送を要求する通信コマンドの設定されたメッセージに対する返信コマンドが、前記受信コントローラ（３４）によって書き込まれる返信キュー（３５Ｄ）を、
さらに備え、
前記送信コントローラ（３２）は、該返信キューから前記通信コマンドを取り出し、前記バスインタフェース（３１）を介して前記通信コマンドの実行を行う、
ことを特徴とする請求項９記載の通信制御装置。
【請求項１１】
前記受信コントローラ（３４）が、前記相互結合網インタフェース（３３）を介して受け取った、他のプロセッサ要素（１０）から発行された自プロセッサ要素（１０）のメモリ（１２）内容の参照を要求するリモートアクセスコマンドの設定されたメッセージに対する返信コマンドが、前記受信コントローラ（３４）よって書き込まれるリモートアクセス返信キュー（３５Ｅ）を、
さらに備え、
前記送信コントローラ（３２）は、該リモートアクセス返信キュー（３５Ｅ）から前記リモートアクセスコマンドを取り出し、前記バスインタフェース（３１）を介して前記リモートアクセスコマンドによって要求された自プロセッサ要素（１０）のメモリ（１２）の内容を読み出して、前記他のプロセッサ要素（１０）宛の送信メッセージを構築すること、
を特徴とする請求項１記載の通信制御装置。
【請求項１２】
前記バスインタフェース（３１）は、前記プロセッサ（１０）が前記コマンドエントリ領域に書き込むコマンドデータ列のアドレスによって、コマンドの種類を決定すること、
を特徴とする請求項１記載の通信制御装置。
【請求項１３】
前記プロセッサ（１１）が、ユーザレベルで走行しているときに前記コマンドデータ列を書き込み可能な前記コマンドエントリ領域内での領域を制限するメモリ保護手段（３７）を、
さらに備えることを特徴とする請求項１２記載の通信制御装置。
【請求項１４】
前記バスインタフェース（３１）は、前記プロセッサ（１１）が前記コマンドエントリ領域に対して書き込むコマンドの種類に応じて、該コマンドエントリ領域に書き込まれるコマンドデータの数を計数して、該コマンドデータ列の終了を検出する検出手段（３１Ａ）を、
備えることを特徴とする請求項１，４，６，８，１０，または１１記載の通信制御装置。
【請求項１５】
前記バスインタフェース（３１）は、前記コマンドデータの計数値を基に、前記コマンドデータ列のある部分の正当性をチェックするチェック手段（３１Ｂ）を、
さらに備えることを特徴とする請求項１４記載の通信制御装置。
【請求項１６】
前記バスインタフェース（３１）は、前記コマンドデータの計数値を基に、前記コマンドデータ列のある部分にシステムで使用される情報を付加する情報付加手段（３１Ｃ）を、
さらに備えることを特徴とする請求項１４記載の通信制御装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、複数のプロセッサ要素（ＰＥ：Processing Element) が相互結合網（ＩＮ：Interconnection Network)に結合された並列計算機に係わり、特に該プロセッサ要素内に実装される通信制御装置に関する。
【０００２】
【従来の技術】
逐次処理方式を基本原理とした汎用大型計算機の高速化が、ハードウェア技術的にも論理方式的にも限界に近づくにつれ、複数のプロセッサ要素（以下、ＰＥと記述する）により並列処理を行う並列計算機に対するニーズが高まっている。
【０００３】
特に科学技術計算分野（流体力学、原子物理学、分子科学など）におけるシミュレーションでは、解の信頼性、精度を確保するために膨大な計算量が必要とされるため、その計算時間の短縮のために特にそのニーズが強い。
【０００４】
図１５は、一般的な分散メモリ構成の並列計算機の全体構成を示すブロック図である。
ＰＥ７０は、プロセッサ７１、該プロセッサ７１がアクセスするメモリ７２、該プロセッサ７１が他のＰＥ７０とメッセージの授受を行うための制御を相互通信網８０を介して行う通信制御装置７３を備えている。
【０００５】
並列計算機では、各ＰＥ７０内に設けられた複数のプロセッサ７１が協調して負荷分散や機能分散などを図りながら処理を進めていくために、プロセッサ７１間の通信が不可欠である。上記構成の並列計算機においては、プロセッサ７１間の通信は、相互通信網８０を介したメッセージ交換（message passing)方式により行われる。
【０００６】
並列計算機の性能を高めるためには、このプロセッサ７１間の通信処理を高速に行い、またこの通信処理とプロセッサ７１による計算処理（演算処理）を並列して行えるようにすることが課題になっている。
【０００７】
一般に、プロセッサ７１間のメッセージ通信は、複数のパラメータを有するコマンドとそれに付随するデータの授受によって行われる。
このようなメッセージ通信には、従来、以下のような方式が採用されていた。
▲１▼  プロセッサ７１が通信制御装置７３内に、コマンドの種類及び該コマンドに付随する個々のパラメータから成るコマンドをセットする複数のレジスタを設ける。プロセッサ７１は、他ＰＥ７０のプロセッサ７１に送信するコマンドの種類及びそのパラメータを個々のレジスタにセットした後、通信制御装置７３内に設けられた不図示の送信機構を起動する。これにより、該送信機構は、上記複数のレジスタに設定されたコマンド及びそのパラメータを順次、解釈して送信メッセージを構築し、該メッセージを相互結合網８０を介して他の当該ＰＥ７０に送信する。
▲２▼  プロセッサ７１がメモリ７２の所定領域に上記コマンドを書き込む。続いて、プロセッサ７１は、通信制御装置７３に上記メモリ７２上の所定領域内での上記コマンドの書き込みアドレスを通知し、該通信制御装置７３を起動する。通信制御装置７３は、上記▲１▼と同様にして送信メッセージを構築し、該メッセージを相互結合網８０を介して、他の当該ＰＥ７０に送信する。
【０００８】
【発明が解決しようとする課題】
上記▲１▼の方式では、以下のような欠点があった。
この方式の場合、通信制御装置７３にセットしたレジスタの内容を、該内容が前記送信機構によって相互結合網８０を介して他ＰＥ７０に送信されるまで保護しなくてはならない。従って、この間、ユーザレベルでの上記レジスタへのアクセスを禁止するために、上記レジスタにコマンドを設定する操作はシステムコールの発行により、システムレベルへ移行して行う必要があった。
【０００９】
このユーザレベルからシステムレベルへの移行のために、システムコールが発行されると、カーネルに実行が移り、該カーネルは上記レベル移行処理のために多くのプロセッサ命令を実行する。そして、この命令の実行のためのプロセッサ７１の処理時間がオーバヘッドとなってしまい、システムのスループットを低下させる原因となっていた。
【００１０】
また、この方式では、一通信毎に、通信制御装置７３内のレジスタに１または複数ワードから成るコマンドを設定しなければならないため、連続して、複数のメッセージを送信する場合には、直前のメッセージの通信処理の終了を待ってから通信制御装置７３を起動しなければならなかった。すなわち、一度にひとつのメッセージの通信処理しか行うことができなかった。また、このような１メッセージを通信する毎に発生する待ち時間を削減するために、通信制御装置７３内に、メッセージの通信終了毎にプロセッサ７１に割り込みをかける装置を実装することが多い。しかしながら、この割り込みに伴ってプロセッサ７１によって実行される割り込み処理は、上記レベル移行時の処理と同様に多くのプロセッサ命令の実行を必要とするため、その処理時間がオーバヘッドとなるという問題があった。
【００１１】
一方、後者の▲２▼の方式では、メモリ７２上の連続領域を利用することにより、複数のコマンドを該連続領域にセットすることができ、連続するメッセージの通信処理を効率良く高速に処理することが可能である。しかし、上記複数のコマンドをセットしたメモリ７２上の領域を、該メッセージの転送が完了するまで他のプロセスから保護しておかなくてはならない。この保護は、ユーザレベルでは不可能であり、上記▲１▼の方式と同様にシステムレベルへの移行が必要となり、ＭＭＵ（Memory Management Unit) 等を用いて、上記メモリ領域を保護しなければならない。したがって、上記▲１▼の方式と同様の問題があった。
【００１２】
また、複数のコマンドについて１または複数の各パラメータの値の計算、該計算後のコマンドのメモリ７２への格納、該コマンドの格納アドレスを通信制御装置７３へセット、続いて通信制御装置７３を起動する、という一連の処理が必要であり、メモリ７２へ格納するパラメータの量が多くなると、上記一連の処理時間のオーバヘッドが大きくなるという問題があった。
【００１３】
本発明は、ユーザレベルでのコマンドの発行を可能にして、従来、必要であったシステムレベルへの移行に伴うオーバヘッドを削減し、連続するメッセージ通信を高速化できるようにすることである。
【００１４】
また、プロセッサが複数のコマンドの発行を連続して効率良く発行できるようにすることである。
【００１５】
【課題を解決するための手段】
図１は、本発明の原理を説明する図である。
本発明は、複数のプロセッサ要素１０が相互結合網２０を介して結合される並列計算機システムで、各プロセッサ要素１０に実装される通信制御装置３０を前提とする。
【００１６】
請求項１記載の発明の通信制御装置は、以下の手段を有する。
バスインタフェース３１は、プロセッサ要素１０内のプロセッサ１１による予め定められたコマンドエントリ領域に対するコマンドデータ列の書き込みを検出し、上記コマンドデータ列からコマンドを生成すると共に、自プロセッサ要素１０のメモリ１２に対するデータの読み出し／書き込みを制御する。
【００１７】
送信コントローラ３２は、該バスインタフェース３１により生成されたコマンドを解釈して、送信メッセージを構築する。
相互結合網インタフェース３３は、該送信コントローラ３２によって構築された送信メッセージを前記相互結合網２０へ送出すると共に、前記相互結合網２０から自プロセッサ要素１０宛のメッセージを受信する。
【００１８】
受信コントローラ３４は、該相互結合網インタフェース３３によって受信されたメッセージを解釈し、該メッセージによって転送されてきたデータを、前記バスインタフェース３１を介して自プロセッサ要素１０のメモリ１２の指定された領域に格納する。
【００１９】
請求項２記載の発明は、上記請求項１記載の発明において、前記受信コントローラ３４を、受信したメッセージのコマンドにデータの格納先として予め定められた特別なバッファ領域が指定されていた場合、上記受信メッセージのデータを、前記バスインタフェース３１を介して該バッファ領域に格納するように構成する。
【００２０】
請求項３記載の発明は、上記請求項１記載の発明において、前記受信コントローラ３４を、自プロセッサ要素１０のメモリ１２の内容を他のプロセッサ要素１０へ転送することを要求するコマンドを受信した場合、該コマンドを前記送信コンコローラ３２へ伝達するように構成する。
【００２１】
また、該送信コントローラ３２を、上記コマンドを受け取ると前記バスインタフェース３１を介して自プロセッサ要素１０のメモリ１２から上記コマンドにより要求されたデータを読み出し、該データを送信するメッセージを、構築するように構成する。
【００２２】
請求項４記載の発明は、上記請求項１記載の発明の各要素に加え、さらに、前記バスインタフェース３１によって生成されたコマンドが書き込まれるコマンドキュー３５を、備えたものである。
【００２３】
請求項５記載の発明は、上記請求項３記載の発明の構成において、前記バスインタフェース３１は、前記プロセッサ１１によるあるアドレス領域に対するアクセスを検出したときは、前記プロセッサ１１が他のプロセッサ要素１０のメモリ１２をアクセスするリモートアクセスコマンドを生成する機構を備えるように構成する。該アクセスには、例えば、該メモリ１２の参照や更新などが含まれる。
【００２４】
請求項６記載の発明は、上記請求項５記載の発明の各要素に加え、さらに、前記バスインタフェース３１によって生成された前記リモートアクセスコマンドが書き込まれるリモートアクセス送信キュー３５Ａを、備える。
【００２５】
請求項７記載の発明は、上記請求項１記載の発明の構成において、前記バスインタフェース３１は、前記プロセッサ１１がシステムレベルで走行しているときに前記コマンドエントリ領域に書き込んだコマンドデータ列からシステムモードの通信コマンドを生成し、前記プロセッサ１１がユーザレベルで走行しているときに前記コマンドエントリ領域に書き込んだコマンドデータ列からユーザモードの通信コマンドを生成する。
【００２６】
請求項８記載の発明は、上記請求項７記載の発明の各要素に加え、さらに、前記バスインタフェース３１によって生成される前記システムモードの通信コマンドが書き込まれるシステム送信キュー３５Ｂと、前記ユーザモードの通信コマンドが書き込まれるユーザ送信キュー３５Ｃを備える。
【００２７】
そして、前記送信コントローラ３２は、前記システム送信キュー３５Ｂまたはユーザ送信キュー３５Ｃから送信コマンドを取り出して該通信コマンドを実行する。
【００２８】
請求項９記載の発明は、上記請求項１記載の発明が備える各要素に加え、さらに、前記送信コントローラ３２により構築された自プロセッサ要素１０内で処理が完結されるコマンドのメッセージを、前記相互結合網インタフェース３３を介さずに前記受信コントローラ３４に転送する転送手段３６を、備える。
【００２９】
請求項１０記載の発明は、上記請求項３記載の発明が備える各要素に加え、さらに、前記受信コントローラ３４が、前記転送手段３６を介して受け取った、自プロセッサ要素１０のメモリ１２のある領域に格納されているデータの転送を要求する通信コマンドが設定されたメッセージに対する返信コマンドが、前記受信コントローラ３４によって書き込まれる返信キュー３５Ｄを、備える。
【００３０】
そして、前記送信コントローラ３２は、該返信キューから前記通信コマンドを取り出し、前記バスインタフェース３１を介して前記通信コマンドの実行を行う。
【００３１】
請求項１１記載の発明は、上記請求項５記載の発明が備える各要素に加え、さらに、前記受信コントローラ３４が、前記相互結合網インタフェース３３を介して受け取った、他のプロセッサ要素１０から発行された自プロセッサ要素１０のメモリ１２の内容の参照を要求するリモートアクセスコマンドの設定されたメッセージに対する返信コマンドが、前記受信コントローラ３４によって書き込まれるリモートアクセス返信キュー３５Ｅを、備える。
【００３２】
そして、前記送信コントローラ３２は、該リモートアクセス返信キュー３５Ｅから前記リモートアクセスコマンドを取り出し、前記バスインタフェース３１を介して前記リモートアクセスコマンドによって要求された自プロセッサ要素１０のメモリ１２の内容を読み出して、前記他のプロセッサ要素１０宛の送信メッセージを構築する。
【００３３】
請求項１２記載の発明は、上記請求項１記載の発明の構成において、前記バスインタフェース３１は、前記プロセッサ１１が前記コマンドエントリ領域に書き込むコマンドデータ列のアドレスによって、コマンドの種類を決定する。
【００３４】
請求項１３記載の発明は、上記請求項１２記載の発明が備える各要素に加え、さらに、前記プロセッサ１１が、ユーザレベルで走行しているときに前記コマンドデータ列を書き込み可能な前記コマンドエントリ領域内での領域を制限するメモリ保護手段３７を、備える。
【００３５】
請求項１４記載の発明は、上記請求項１，４，６，８，１０，または１１記載の発明の構成において、前記バスインタフェース３１は、前記プロセッサ１１が前記コマンドエントリ領域に対して書き込むコマンドの種類に応じて、該コマンドエントリ領域に書き込まれるコマンドデータの数を計数して、該コマンドデータ列の終了を検出する検出手段３１Ａを、備える。
【００３６】
請求項１５記載の発明は、上記請求項１４記載の発明の構成において、前記バスインタフェース３１は、前記コマンドデータの計数値を基に、前記コマンドデータ列のある部分の正当性をチェックするチェック手段３１Ｂを、さらに備える。
【００３７】
請求項１６記載の発明は、上記請求項１４記載の発明において、前記バスインタフェース３１は、前記コマンドデータの計数値を基に、前記コマンドデータ列のある部分にシステムで使用される情報を付加する情報付加手段３１Ｃを、さらに備える。
【００３８】
【作用】
請求項１記載の発明においては、バスインタフェース３１がプロセッサ要素１０内のプロセッサ１１による予め定められたコマンドエントリ領域に対するコマンドデータ列の書き込みを検出し、上記コマンドデータ列からコマンドを生成する。
【００３９】
そして、送信コントローラ３２が、該バスインタフェース３１により生成されたコマンドを解釈して、送信メッセージを構築する。
相互結合網インタフェース３３は、該送信コントローラ３２によって構築された送信メッセージを前記相互結合網２０へ送出する。また、前記相互結合網２０から自プロセッサ要素１０宛のメッセージを受信する。
【００４０】
受信コントローラ３４は、該相互結合網インタフェース３３によって受信されたメッセージを解釈し、該メッセージによって転送されてきたデータを、前記バスインタフェース３１を介して自プロセッサ要素１０のメモリ１２の指定された領域に格納する。
【００４１】
このように、プロセッサ１０は、所望のコマンドを発行する際、自己のアドレス空間内に特定領域として設けられるコマンドエントリ領域の上記所望のコマンドに対して予め割り当てられたアドレスに該コマンドのパラメータ等を書き込めばよい。したがって、上記コマンドエントリ領域にユーザレベルのコマンドを発行するためのアドレス領域を割り当てることにより、プロセッサがユーザレベルでコマンドを発行することが可能になる。すなわち、コマンド発行時にシステムレベルへ移行する必要がなくなるのでオーバーヘッドを削減できる。
【００４２】
請求項２記載の発明では、受信コントローラ３４は、受信メッセージのコマンドにデータの格納先として予め定められた特別なバッファ領域が指定されていた場合、上記データを、前記バスインタフェース３１を介して該バッファ領域に格納する。
【００４３】
したがって、メッセージにデータの格納先アドレスを明示的に設定する必要がなくなり、メッセージパッシング方式でのデータ転送が可能になる。また、上記データ転送を実現するためのハードウェアを、受信コントローラ内に設けるようにした場合でも、送受信機構の大部分を共有することが可能となるため、ハードウェア量の増加を少なく抑えることができる。
【００４４】
請求項３記載の発明では、自プロセッサ要素１０のメモリ１２の内容を他のプロセッサ要素１０へ転送することを要求するコマンドが受信コントローラ３４により受信されると、該コマンドは、前記送信コントリーラ３２へ伝達される。そして、送信コントローラ３２は、上記コマンドを受け取ると前記バスインタフェース３１を介して自プロセッサ要素１０のメモリ１２から上記コマンドにより要求されたデータを読み出し、該データを送信するメッセージを、構築する。
【００４５】
したがって、返信コマンドの処理を送信コントローラ３２により実行でき、ハードウェアの量を削減できる。
請求項４記載の発明では、バスインタフェース３１は生成したコマンドを直ちにコマンドキュー３５に書き込むことができるので、複数のコマンドを送信コントローラ３２のコマンド処理の終了を待たずに、連続して発行することが可能となり、処理効率が向上する。
【００４６】
請求項５記載の発明では、プロセッサ１１のアクセス空間内のあるアドレス領域を、リモートアクセスコマンド生成用の領域として予め割り当てておくことにより、前記バスインタフェース３１は、前記プロセッサ１１による前記アドレス領域に対するアクセスを検出して、例えば、ハードウェア機構により前記プロセッサ１１が他のプロセッサ要素１０のメモリ１２をアクセスするリモートアクセスコマンドを自動的に生成する。したがって、少量のハードウェアの付加により、リモートアクセス機能を実現できる。
【００４７】
請求項６記載の発明によれば、前記バスインタフェース３１は、生成したリモートアクセスコマンドをリモートアクセス送信キュー３５Ａに書き込む。したがって、複数のリモートアクセス通信コマンドを送信コントローラ３２のコマンド処理の終了を待たずに、連続して発行することが可能になる。
【００４８】
請求項７記載の発明によれば、前記バスインタフェース３１は、前記プロセッサ１１がシステムレベルで走行しているときに前記コマンドエントリ領域に書き込んだコマンドデータ列からシステムモードの通信コマンドを生成し、前記プロセッサ１１がユーザレベルで走行しているときに前記コマンドエントリ領域に書き込んだコマンドデータ列からユーザモードの通信コマンドを生成する。
【００４９】
したがって、プロセッサ１１は、システムモードの通信コマンドとユーザモードの通信コマンドの発行を、その走行レベルによって制御することができる。
請求項８記載の発明によれば、前記バスインタフェース３１によって、前記システムモード及びユーザモードの通信コマンドが、それぞれシステム送信キュー３５Ｂと、ユーザ送信キュー３５Ｃに書き込まれる。
【００５０】
そして、送信コントローラ３２は前記システム送信キュー３５Ｂまたはユーザ送信キュー３５Ｃから通信コマンドを取り出して該通信コマンドを実行する。
したがって、システム送信キュー３５Ｂとユーザ送信キューのいずれの方から優先的に通信コマンドを取り出すかを予め決めておくことにより、システムコマンドとユーザコマンドの処理に優先順位を付けることができる。また、システムコマンドとユーザコマンドは、互いに別々のキューに格納されるため、プロセッサ１１の走行レベルがユーザがユーザレベルとシステムレベルとの間で頻繁に切り替わっても、ユーザモードの通信コマンドとシステムモードの通信コマンドは当該キューに正しく格納される。このため、プロセッサ１１は上記２つの通信コマンドを随時、独立に発行することができる。
【００５１】
請求項９記載の発明によれば、転送手段３６により、前記送信コントローラ３２により構築された自プロセッサ要素１０内で処理が完結されるコマンドのメッセージは、前記相互完結網インタフェース３３を介さずに前記受信コントローラ３４に転送される。
【００５２】
したがって、自プロセッサ要素内で完結する処理を高速に行うことができる。
請求項１０記載の発明によれば、自プロセッサ要素１０のメモリ１２のある領域に格納されているデータの転送を要求する通信コマンドに対する返信コマンドは、前記受信コントローラ３４によって返信キュー３５Ｄにかきこまれる。
【００５３】
そして、前記送信コントローラ３２は、該返信キューから前記通信コマンドを取り出し、前記バスインタフェース３１を介して前記通信コマンドの実行を行う。
【００５４】
したがって、受信コントローラ３４は、上記返信コマンドを送信コントローラ３２の処理の終了を待たずに、連続して発行することができる。
請求項１１記載の発明によれば、前記受信コントローラ３４が、前記相互結合網インタフェース３３を介して受け取った、他のプロセッサ要素１０から発行された自プロセッサ要素１０のメモリ１２の内容の参照を要求するリモートアクセスコマンドに対する返信コマンドが、前記受信コントローラ３４によってリモートアクセス返信キュー３５Ｅに書き込まれる。
【００５５】
そして、送信コントローラ３２は、該リモートアクセス返信キュー３５Ｅから前記リモートアクセスコマンドを取り出し、前記バスインタフェース３１を介して前記リモートアクセスコマンドによって要求された自プロセッサ要素１０のメモリ１２の内容を読み出して、前記他のプロセッサ要素１０宛の送信メッセージを構築する。
【００５６】
したがって、受信コントローラ３４は、相互結合網インタフェース３３を介して受け取った返信メッセージを要求するリモートアクセスコマンドに対する返信コマンドを、送信コントローラの処理の終了を待たずに連続して出力することができる。
【００５７】
請求項１２記載の発明によれば、前記バスインタフェース３１により、前記プロセッサ１１が前記コマンドエントリ領域に書き込むコマンドデータ列のアドレスによって、コマンドの種類が決定される。
【００５８】
したがって、コマンドエントリ領域をユーザコマンド発行用の領域とシステムコマンド発行用の領域に分割できる。
また、請求項１３記載の発明によれば、メモリ保護手段３７により、前記プロセッサ１１が、ユーザレベルで走行しているときに前記コマンドデータ列を書き込み可能な前記コマンドエントリ領域内の領域を、一部の領域に制限することができる。
【００５９】
したがって、ユーザレベルで発行できるコマンドの種類を制限することができる。
請求項１４記載の発明によれば、バスインタフェース３１は、検出手段３１Ａにより、前記プロセッサ１１が前記コマンドエントリ領域に対して書き込むコマンドの種類に応じて、該コマンドエントリ領域に書き込まれるコマンドデータの数を計数して、該コマンドデータ列の終了を検出する。
【００６０】
したがって、この検出情報を用いることにより、キューに格納されているまだ未完結のコマンドの発行を抑えることができる。また、コマンドの種類に応じて複数のキューが用意されている場合には、完結しているコマンドが格納されているキューから完結しているコマンドを取り出して処理すればよいので、余分な待ち時間を削減でき処理効率が向上する。
【００６１】
請求項１５記載の発明によれば、バスインタフェース３１は、チェック手段３１Ｂにより、前記コマンドデータの計数値を基に、前記コマンドデータ列のある部分の正当性をチェックする。
【００６２】
したがって、不正なコマンドの発行を防止できる。
また、請求項１６記載の発明によれば、バスインタフェース３１は、情報付加手段３１Ｃにより、前記コマンドデータの計数値を基に、前記コマンドデータ列のある部分にシステムで使用される情報を付加する。
【００６３】
したがって、コマンドデータ列の任意の部分に種々の情報を埋め込むことができる。
【００６４】
【実施例】
以下、図面を参照しながら本発明の実施例を説明する。
図２は、本発明の一実施例である並列計算機の相互結合網２００に結合されるプロセッサ要素（以下、ＰＥと表現する）１００の全体構成を示すブロック図である。
【００６５】
ＰＥ１００は、プロセッサ１１０と、該プロセッサ１１０にバス１３０を介して接続されたメモリ１２０と通信制御装置１４０とから構成されている。
プロセッサ１１０は、自ＰＥ１００のメモリ１２０の内容を他のＰＥ１００のメモリ１２０へ転送する旨を指示するコマンドのメッセージを送信する際、自アドレス空間上に設定された“コマンドエントリ”と呼ばれる領域１５０へコマンドデータ列を書き込む。
【００６６】
コマンドデータ列は、プロセッサ１１０に対してある機能の実行を指示するコマンドを構成するパラメータやデータなどで構成される１ワード以上のデータである。上記パラメータには、例えば、〈宛先ＰＥ〉、〈メッセージサイズ〉、〈宛先アドレス〉、〈ソースアドレス〉、〈その他のパラメータ〉、・・・などがある。
【００６７】
図３は、上記コマンドエントリ領域１５０の概念を説明する図である。
コマンドエントリ領域１５０はプロセッサ１１０のアドレス空間１１２上の特定の領域であり、それぞれのアドレスは、上記自ＰＥ１００のメモリ１２０の内容を他ＰＥ１００のメモリ１２０へ転送する旨を指示する各種コマンドに一対一に対応している。プロセッサ１００は、上記各コマンドを他ＰＥ１００のプロセッサ１１０へ送信する際、そのコマンドに対して予め割り当てられているコマンドエントリ領域１５０のアドレスに対して、前記コマンドデータ列を書き込む。
【００６８】
通信制御装置１４０は、バス１３０上に出力された上記コマンドエントリ領域１５０に対して書き込みがなされたコマンドデータ列を解釈して、他ＰＥ１００の通信制御装置１４０が解釈可能な形式にコマンド送信用のメッセージを構築して、該メッセージを相互結合網１６０へ送出する。
【００６９】
通信制御装置１４０は、バスインタフェース１４１、送信コントローラ１４２、マルチプレクサ１４３、相互結合網インタフェース１４４、及び受信コントローラ１４５から成る。
【００７０】
バスインタフェース１４１は、バス１３０のアドレスバス上に出力されているアドレス信号を監視し、該アドレス信号がコマンドエントリ領域１５０内のアドレスであれば、バス１３０のデータバスから上記コマンドデータ列を取り出し、これにプロセスＩＤ（ＰＩＤ）などの情報を付加して送信コントローラ１４２に伝達する。また、メモリ１２０に対してアクセスする機構も有し、該メモリ１２０に対するデータの読み出しや書き込みなどを行う。自ＰＥ１００のメモリ１２０の内容を他ＰＥ１００のメモリ１２０へ転送する場合には、上記メモリアクセス機構によりその転送データを自ＰＥ１００のメモリ１２０から読み出し、マルチプレクサ１４３に出力する。
【００７１】
送信コントローラ１４２は、バスインタフェース１４１から受信するコマンドデータ列を解釈し、他ＰＥ１００へコマンドを送信するためのメッセージを構築する。そして、該メッセージをマルチプレクサ１４３を介して相互結合網インタフェース１４５へ出力する。また、受信したメッセージのコマンドが自ＰＥ１００のメモリ１２０の内容を他ＰＥ１００へ転送する旨を指示するものであった場合、上記メモリ１２０から該コマンドにより指示されたデータを読み出すための要求をバスインタフェース１４１に対して出力する。
【００７２】
マルチプレクサ１４３は、送信コントローラ１４２からの制御により、該送信コントローラ１４２から入力されるコマンドまたは該送信コントローラ１４２からの上記メモリ読み出し要求に従ってバスインタフェース１４１から入力送られてくる自ＰＥ１００のメモリ１２０から読み出されたデータのいずれか一方を相互結合網インタフェース１４５へ選択出力することにより、他ＰＥ１００宛の送信メッセージを出力する。
【００７３】
相互結合網インタフェース１４４は、上記マルチプレクサ１４３から入力されるメッセージを相互結合網１６０へ送出する。また、該相互結合網１６０から他のＰＥ１００から送信されてくるメッセージを受信し、これを受信コントローラ１４５へ出力する。
【００７４】
受信コントローラ１４５は、相互結合網インタフェース１４４から入力されるメッセージを解釈し、該メッセージに設定されているコマンドに対応する処理を行う。そして、例えば、該メッセージによって転送されてきたデータを自ＰＥ１００のメモリ１２０の上記コマンドにより指定されたアドレスに書き込む。
【００７５】
上記構成の本実施例においては、プロセッサ１１０は自己のアドレス空間上のコマンドエントリ領域１５０という特殊な領域にコマンドデータ列を書き込むことにより、システムレベルへ移行することなく、ユーザレベルで上記コマンドデータ列の書き込みを行い他ＰＥ１００とメッセージ通信を行うことができる。
【００７６】
次に、図４は本発明の他の実施例のＰＥ２００の全体構成を示すブロック図である。同図において、前述した図２に示す実施例内のブロックと同一のブロックには同一の符号を付与し、詳しい説明は省略する。
【００７７】
本実施例の通信制御装置２４０は、バスインタフェース２４１と送信コントローラ２４２との間に、コマンドキュー２４６を設けている。
コマンドキュー２４６は、バスインタフェース２４１がコマンドデータ列を書き込むキューであり、例えばＦＩＦＯ（First In First Out) メモリ（ＦＩＦＯバッファ）等から成る。そして、このキュー２４６に書き込まれたコマンドデータ列はＦＩＦＯ方式で送信コントローラ２４２に読み出される。
【００７８】
本実施例においては、このようにコマンドキュー２４６を設けたことにより、バスインタフェース２４１は、送信コントローラ２４２の処理速度に合わせることなく連続してコマンドデータ列を出力することができ、処理効率が向上する。
【００７９】
図５は本発明のさらに他の実施例のＰＥ３００の全体構成を示すブロック図である。図５においても、図２に示す実施例内のブロックと同一のブロックには同一の符号を付与している。
【００８０】
プロセッサ３１０は、該プロセッサ３１０のアドレス空間上のコマンドエントリ領域１５０内におけるシステムレベルでのみのアクセスが許可されている領域に対するユーザレベルでの不正なアクセスを保護するＭＭＵ（Memory Management Unit）３１２を備えている。また、ＭＭＵ３１２は、コマンドエントリ領域１５０に対する不正なアクセスを禁止するメモリ保護機能も備えている。尚、このＭＭＵ３１２はプロセッサ３１０とは別のチップであってもよい。
【００８１】
次に、通信制御装置３４０の構成を説明する。
バスインタフェース３４１は、バス１３０のアドレスバス上に出力されるアドレス信号を監視することにより、プロセッサ１００のコマンドエントリ領域１５０に対するコマンドデータ列の書き込みを監視する。そして、該書き込みアドレスからコマンドの種類を求め、これを上記コマンドデータ列の第１ワードに設定する。また、プロセスＩＤ（ＰＩＤ）を上記コマンドデータ列の第２ワードに設定する。ＰＩＤは、プロセス毎に割り当てられるユニークな識別子である。複数のプロセスが単一のシステム内で実行されるとき、各プロセスに割り当てられる資源はこのＰＩＤで識別され、資源に対するアクセスの保護機能が実現される。そして、このようにして作成したコマンドデータ列をコマンドキュー群３４６内の該当するキューに書き込む。
【００８２】
コマンドキュー群３４６は、３本の送信キュー（ユーザ送信キュー３４６Ａ、システム送信キュー３４６Ｂ、リモートアクセス送信キュー３４６Ｃ）と２本の返信キュー（リモートアクセス返信キュー３４６Ｆ、その他の返信キュー３４６Ｇ）を備えている。
【００８３】
ユーザ送信キュー３４６Ａは、ユーザレベルで発行される通信コマンド（ユーザモードの通信コマンド）のデータ列を一時的に蓄えるキューである。
システム送信キュー３４６Ｂは、システムレベルで発行される通信コマンド（システムモードの通信コマンド）のデータ列を一時的に蓄えるキューである。
【００８４】
プロセッサ３１０は、プロセスを複数のレベルで実行する。ユーザレベルの処理は、システムレベルの管理下におかれ、システムレベルに比べハードウェア資源に対するアクセスが制限され、システム特権命令の使用が禁止される。ユーザレベルのプロセスがこれらの制限事項に違反した場合、例外割り込みが発生し、プロセッサ３１０はシステムレベルへ移行する。
【００８５】
リモートアクセス送信キュー３４６Ｃは、自ＰＥ３００のプロセッサ３１０が他ＰＥ３００のメモリ１２０の内容の参照（読み出し）、更新（書き込み）さらにはデータ交換などのリモートアクセスを実行するための通信コマンド（リモートアクセスコマンド）のデータ列を一時的に蓄えるキューである。
【００８６】
リモートアクセス返信キュー３４６Ｆは、他ＰＥ３００から送信されてくる自ＰＥ３００のメモリ１２０に対するリモートアクセスコマンドに対する返信コマンドのデータ列を一時的に蓄えるキューである。
【００８７】
返信キュー３４６Ｇは、上記リモートアクセスコマンド以外の自ＰＥ３００のメモリ１２０に対するアクセスコマンドに対する返信コマンドのデータ列を一時的に蓄えるキューである。
【００８８】
上記返信コマンドは、例えば自ＰＥ３００に対してメモリ１２０の内容の参照を要求するコマンドのメッセージが到着した場合における、その返信のためのコマンドである。例えば、後述詳しく説明するリモートリードコマンドのような他ＰＥ４００からのリモートアクセスコマンドに対する返信コマンドは、リモートアクセス返信キュー３４６Ｆに格納される。また、例えば、自ＰＥ３００のメモリ１２０領域の内容の転送を要求する通信コマンドに対する返信コマンドは、返信キュー３４６Ｇに格納される。
【００８９】
尚、本実施例における“リモートアクセス”という概念は、あるＰＥ３００のプロセッサ３１０が、他ＰＥ３００のメモリ１２０に対して自ＰＥ３００のメモリ１２０と同様にして直接アクセスできる（データの読み出し、書き込みができる）という機能を表す。そして、リモートアクセスコマンドは、このリモートアクセス機能を実現するために用いられるコマンドである。
【００９０】
上記コマンドキュー群３４６内の各キュー３４６Ａ〜３４６Ｇは不図示のアービタ等によって適切な優先順位に基づいて選択され、該選択されたキューからコマンドデータ列が出力される。
【００９１】
送信コントローラ３４２は、コマンドキュー群３４６内の選択されたキューから出力されるコマンドデータ列を受け取り、これを解釈する。そして、バスインタフェース３４１を介してメモリ１２０をアクセスするなどして、マルチプレクサ３４３を制御して送信メッセージを構築し、これを送信バッファ３４７に格納させる。すなわち、上記解釈したコマンドデータ列が自ＰＥ３００のメモリ１２０のある領域に格納されているデータの転送を要求するコマンドであった場合には、該データのメモリ１２０からの読み出しをバスインタフェース３４１に要求する。これを受けて、バスインタフェース３４１がメモリ１２０から読み出したデータはマルチプレクサ３４３を介して当該コマンドに続いて送信バッファ３４７に格納され、送信メッセージが構築される。
【００９２】
送信バッファ３４７は、このように自ＰＥ３００が他ＰＥ３００へ送信するメッセージ（送信メッセージ）または自ＰＥ３００のメモリ１２０から読み出されたデータを含む自ＰＥ３００宛の送信メッセージなどを格納する。
【００９３】
送信バッファ３４７は、格納されたメッセージの宛先が自ＰＥ３００となっている場合、アービタ３４８に出力する自ＰＥ宛信号を“アクティブ”にする。また、送信バッファ３４７にメッセージが格納されている場合には、上記アービタ３４８に出力するempty Ｓ信号を“非アクティブ”にする。そして、送信バッファ３４７に格納されているメッセージが自ＰＥ３００宛の場合、該メッセージはマルチプレクサ３４９に入力データとして送られる。そして、アービタ３４８は、上記自ＰＥ宛信号、empty Ｓ信号がそれぞれ“アクティブ”、“非アクティブ”となって加わることにより、送信バッファ３４７から出力される自ＰＥ宛のメッセージをマルチプレクサ３４９から受信コントローラ３４５に選択出力させる。一方、送信バッファ３４７は、他ＰＥ３００宛のメッセージについては相互結合網インタフェース３４４へ出力する。
【００９４】
相互結合網インタフェース３４４は、送信バッファ３４７から入力される他ＰＥ３００宛のメッセージを相互結合網１６０へ送出する。また、相互結合網１６０から自ＰＥ３００宛のメッセージを受信し、該メッセージを受信バッファ３５０に格納する。
【００９５】
受信バッファ３５０は、相互結合網インタフェース３４４から入力される上記他ＰＥ３００から相互結合網２００を介して送信されてくる自ＰＥ３００宛のメッセージ（受信メッセージ）を格納する。そして、受信メッセージを格納している間、empty Ｒ信号を“非アクティブ”にしてアービタ３４８に加える。
【００９６】
アービタ３４８は、送信バッファ３４７から入力されるempty Ｓ信号並びに自ＰＥ宛信号、及び受信バッファ３５０から入力されるempty Ｒ信号を基に、送信バッファ３４７から入力されるメッセージまたは受信バッファ３５０から入力される受信メッセージのいずれか一方をマルチプレクサ３４９から選択出力させる。
【００９７】
受信コントローラ３４５は、マルチプレクサ３４９を介して入力される送信バッファ３４７に格納された自ＰＥ３００宛のメッセージまたは受信バッファ３５０に格納された他ＰＥ３００から送信されてきた自ＰＥ３００宛のメッセージを解釈する。そして、そのメッセージにメモリ１２０へのデータ転送を要求するデータ転送コマンドが設定されていた場合には、その要求がなされたデータをバスインタフェース３４１及びバス１３０を介してメモリ１２０の該コマンドで指定された領域へ転送する。一方、返信コマンドを要求するコマンドが設定されていたメッセージの場合には、該返信コマンドを返信キュー３４６Ｅまたはリモートアクセス返信キュー３４６Ｆに格納する。すなわち、例えば、他ＰＥ３００または自ＰＥ３００のプロセッサ３１０が自ＰＥ３００に対してそのメモリ１２０の内容の参照を要求するリモートアクセスコマンドが設定されたメッセージであれば、その返信コマンドを、リモートアクセス返信キュー３４６Ｆに書き込む。また、自ＰＥ３００のメモリ１２０の内容を自ＰＥ３００または他ＰＥ３００のメモリ１２０へ転送する旨を要求するリモートアクセスコマンド以外のコマンドが設定されたメッセージであれば、その返信のためのコマンドを返信キュー３４６Ｇに書き込む。
【００９８】
これらのリモートアクセス返信キュー３４６Ｆまたは返信キュー３４６Ｇに格納された返信コマンドは、送信コントローラ３４２に入力される。該送信コントローラ３４２は、バスインタフェース３４１を介してメモリ１２０から該返信コマンドによって要求されているデータを読み出し、該データをマルチプレクサ３４３を介して送信バッファ３４７に書き込み、返信メッセージを構築する。
【００９９】
次に、バスインタフェース３４１の内部構成を説明する。
図６は、バスインタフェース３４１内のバス１３０を監視し、前記ユーザ送信キュー３４６Ａまたは前記システム送信キュー３４６Ｂに格納する通信コマンドを生成する部分の回路構成を示す図である。
【０１００】
バス１３０のデータバスは６４bit 幅となっている。また、アドレスバスは、３６bit 幅となっている。同図に示す、Bus Write Dataラッチ回路３４１１（以下、データラッチ回路３４１１と表現する）は、プロセッサ３１０が上記データバス上に出力するデータをラッチする。Bus Address ラッチ回路３４１２（以下、アドレスラッチ回路３４１２と表現する）は、プロセッサ３１０が上記アドレスバス上に出力するアドレス信号をラッチする。プロセッサ３１０は、６４bit 幅のデータバスの内、第０ビット〜第３１ビット（下位ワード）のバス線または第３２ビット〜第６３ビット（上位ワード）のバス線のいずれか一方にデータを出力する。この内、どちらの方にデータを出力するかはアドレスバス上に出力するアドレス値すなわちコマンドエントリ領域１５０のコマンドデータ列の書き込みアドレスによって決定される。
【０１０１】
また、バス１３０上には、プロセッサ３１０がユーザレベルまたはシステムレベルのいずれでプロセスを実行しているかを示すＳＵフラグ信号線が存在する。このＳＵフラグ信号線は、プロセッサ３１０によりユーザレベルの時には“０”、システムレベルの時には“１”に設定される。
【０１０２】
プロセッサ３１０は、通信コマンド（ユーザ通信コマンドまたはシステム通信コマンド）を発行する場合、上述したように自己のアドレス空間上に予め設定されているコマンドエントリ領域１５０に対して当該コマンドのデータ列を書き込む。
【０１０３】
図６は、プロセッサ３１０がデータバス上に出力するコマンドデータ列のフォーマットの一例を示す図である。
プロセッサ３１０は、同図に示す第１ワード（３２ビット幅）から第ｎワードの各コマンドデータを、順次データバス上に出力する。
【０１０４】
第１ワードには、第１６ビット〜第３１ビットに宛先ＰＥすなわちコマンドの送信先のＰＥ３００の識別情報が設定される。
第２ワードには、第０ビット〜第１９ビットにメッセージサイズが設定される。
【０１０５】
第３ワード以降には、宛先アドレス、ソースアドレス、及びその他のパラメータ１，２，・・・が設定される。
尚、宛先アドレスはメモリ１２０上のデータの転送先アドレス、ソースアドレスはメモリ１２０上のデータの転送元のアドレスである。
【０１０６】
バスインタフェース３４１は、バス１３０のアドレスバス上に出力されているアドレスを常時監視しており、該アドレスがコマンドエントリ領域１５０内のアドレスであることを検出すると、バス１３０のデータバスとアドレスバスから、それぞれデータとアドレスを取り込み、これらをデータラッチ回路３４１１及びアドレスラッチ回路３４１２にそれぞれラッチする。
【０１０７】
ＳＵフラグ解析回路３４１３は、バス１３０上のＳＵフラグ信号線を参照して、現在、データバス上に出力されているデータがユーザレベルのコマンドまたはシステムレベルのコマンドのいずれであるか判断する。そして、ＳＵフラグが“１”の時には、アドレスラッチ回路３４１２にラッチされているアドレス値を参照して、データラッチ回路３４１１の上位ワード（第３２ビット〜第６３ビット）または下位ワード（第０ビット〜第３１ビット）からコマンドエントリ領域１６０に書き込まれたコマンドデータを取り出す。このコマンドデータは、マルチプレクサ３４１６Ｓに出力される。
【０１０８】
SYSCNT回路３４１４Ｓは、不図示のバスインタフェース３４１全体の動作タイミングを制御するシーケンサから入力されるクロックに従ってシステムレベルの通信コマンドを作成するために必要な計数を行うカウンタであり、初期値として“１”がセットされる。このカウンタ値は、現在、処理中の通信コマンドのワード位置を示す。
【０１０９】
command kind埋め込み回路３４１５Ｓ（以下、command 回路３４１５Ｓと表現する）は、SYSCNT回路３４１４Ｓから“１”のカウント値が入力されると、データラッチ回路３４１１から図６に示すコマンドの第１ワードのデータを取り込み、図７に示すように該データの第０ビット〜第１３ビットにアドレスラッチ回路３４１２から読み込んだ１４ビットのcommand kindデータを埋め込む。尚、この“ command kind" データは、コマンドの種類を示す７ビットの情報といくつかのフラグから成る。そして、このようにしてcommand kindデータが設定された通信コマンドの第１ワードをマルチプレクサ３４１６Ｓに出力する。
【０１１０】
マルチプレクサ３４６１Ｓは、不図示のアービタによって制御され図８に示すコマンドを作成・出力する。該アービタはSYSCNT３４１４Ｓのカウント値情報を基に、マルチプレクサ３４１６Ｓの選択制御を行う。
【０１１１】
また、上記command kindデータは、cmdsiz回路３４１７Ｓにも入力・保持される。
次に、データラッチ回路３４１１にコマンドエントリ領域１６０に書き込まれた図７に示すシステムレベルの通信コマンドの第２ワードのデータがラッチされる。このデータは、ＳＵフラグ解析回路３４１３を介してＰＩＤ埋め込み回路３４１９Ｓに入力されると共に、上記cmdsiz回路３４１７Ｓにも入力される。
【０１１２】
cmdsiz回路３４１７Ｓは、この第２ワードの第０〜第１９ビットに設定されているメッセージサイズ情報と、上記既に入力・保持しているcommand kindデータとからコマンドのデータ長、すなわちコマンドを構成するデータ列のワード長（コマンドサイズ）を求める。
【０１１３】
また、データラッチ回路３４１１に上記システムレベルの通信コマンドの第２ワードのデータがラッチされることにより、SYSCNT回路３４１４Ｓにクロックが加わり、SYSCNT回路３４１４Ｓは、“２”にインクリメントされる。
【０１１４】
このSYSCNT回路３４１４Ｓのカウント値“２”は、SYSLEN回路３４１８ＳにＬＯＡＤ信号として加わり、SYSLEN回路３４１８Ｓはcmdsiz回路３４１７Ｓから上記コマンドサイズを入力・保持する。
【０１１５】
また、SYSCNT回路３４１４Ｓのカウント値“２”は、ＰＩＤ埋め込み回路３４１９Ｓ（以下、ＰＩＤ回路３４１９Ｓと表現する）にも入力される。ＰＩＤ回路３４１９Ｓは、この入力が加わるとＳＵフラグ解析回路３４１３を介してデータラッチ回路３４１１から図７に示す第２ワードのデータを入力する。そして、このデータの第２０ビット〜第３１ビットに、不図示のレジスタに保持されているＰＩＤ情報を設定する。そして、設定後のデータをマルチプレクサ３４１６Ｓに出力する。プロセッサ３１０は、プロセス切替が生じた時に、該切り替えによって新たに実行するプロセスのＩＤ（ＰＩＤ情報）をレジスタに設定する。
【０１１６】
上述のようにして、command 回路３４１５Ｓ、ＰＩＤ回路３４１９Ｓによってそれぞれ作成された、図８に示すコマンドの第１ワード及び第２ワード目のデータは、マルチプレクサ３４１６Ｓによって、順次選択出力され、システム送信キュー（System Queue）３４６Ｂに入力される。
【０１１７】
続いて、データラッチ回路３４１１にシステムレベルの通信コマンドの第３ワード目以降のデータが順次ラッチされる。これらのデータは、ＳＵフラグ解析回路３４１３を介して、直接、マルチプレクサ３４１６Ｓに入力される。そして、マルチプレクサ３４１６Ｓにより順次、選択されシステム送信キュー３４６Ｂに入力される。
【０１１８】
データラッチ回路３４１１にラッチされる上記システムレベルの通信コマンドの最後のデータがラッチされ、これがＳＵフラグ解析回路３４１３を介してマルチプレクサ３４１６Ｓに入力された時点で、SYSCNT３４１４Ｓのカウント値は、SYSLENと同じ値になる。
【０１１９】
compare 回路（コンパレータ）３４２０Ｓは、SYSCNT回路３４１４ＳとSYSLEN回路３４１８Ｓの両者の値が等しくなると、有効値（例えば、“１”）に設定されたEnd bit データを出力する。このEnd bit データは、SYSCNT回路３４１４Ｓに対してプリセット信号として加わり、SYSCNT回路３４１４Ｓの値は“１”にプリセットされる。
【０１２０】
以上のようにして、システム送信キュー３４６Ｂには図８に示すようなフォーマットの通信コマンドが書き込まれる。
上述した、SYSCNT回路３４１４Ｓ、command 回路３４１５Ｓ、マルチプレクサ３４１６Ｓ、cmdsiz回路３４１７Ｓ、SYSLEN回路３４１８Ｓ、ＰＩＤ回路３４１９Ｓ、及びcompare 回路３４２０Ｓから成る、システム送信キュー３４６Ｂ用の通信コマンドを生成する回路３４１０Ｓ（システム通信コマンド生成回路３４１９Ｓ）と同様な回路３４１０Ｕ（ユーザ通信コマンド生成回路３４１０Ｕ）が、ユーザ送信キュー３４６Ａに書き込むユーザレベルの通信コマンドを生成する装置として設けられている。この回路３４１０Ｕにおいて、対応するブロックについては、その符号の末尾の英字を“Ｓ”から“Ｕ”に変えて示している。
【０１２１】
プロセッサ３１０がユーザレベルでコマンドエントリ領域１５０に通信コマンドのデータ列を順次書き込む場合には、バス１３０上のＳＵフラグ信号線を“０”に設定する。これにより、ＳＵフラグ解析部３４１３は、データラッチ回路３４１１にラッチされるプロセッサ３１０の出力したユーザレベルの通信コマンドのデータ列を回路３４１０Ｕの方へ出力する。これにより、上述した回路３４１０Ｓと同様な動作が回路３４１０Ｕによって行われ、該回路３４１０Ｕは第１ワードにアドレスラッチ回路の第１２ビット〜第２５ビットにラッチされたcommand kindデータを、第２ワードに内部のレジスタにラッチされた“ＰＩＤ情報”を埋め込んで、ユーザレベルの通信コマンドを生成する。そして、この通信コマンドのデータ列をユーザ送信キュー３４６Ａに入力させる。また、該通信コマンドのデータ列のユーザ送信キュー３４６Ａへの入力の終了をcompare 回路３４２０Ｕにより検出する（有効値のEnd bit の出力）。
【０１２２】
尚、上記End bit は、上記ユーザレベルまたはシステムレベルの送信コマンドの各ワードに付加してユーザ送信キュー３４６Ａまたはシステム送信キュー３４６Ｂに格納するようにしてもよい。これにより、送信コントローラ３４２は各コマンドの終了を容易に検出できる。また、不図示のカウンタを設け、該カウンタにより上記送信キュー３４６Ａまたは３４６Ｂに格納されるパケット数を計数するために利用するようにしてもよい。
【０１２３】
次に、図９は、バスインタフェース３４１内に設けられるリモートアクセス送信キュー３４６Ｃに格納されるリモートアクセスの通信コマンドを生成する装置を簡略化して示した図である。
【０１２４】
プロセッサ３１０は、そのアドレス空間上の予め定められたアドレス領域（リモートアクセス空間）にアクセスする。このアクセスにおいて、バス１３０のアドレスバス上に出力する３６ビットのアドレス信号の最上位ビット（ＭＳＢ）は“０”に設定する。また、該アドレス信号の第２５ビット〜第３４ビットには、上記リモートアクセスコマンドの送信先のＰＥ３００（宛先ＰＥ３００）の識別情報rcidを、第０ビット〜第２４ビットには、該宛先ＰＥ３００のメモリ１２０上のアドレスを設定する。したがって、アドレス信号の第０ビット〜第３４ビットによって特定ＰＥ３００のメモリ１２０の特定アドレスにアクセスできる。
【０１２５】
リモートアクセスコマンドには、プロセッサ３１０が他ＰＥ３００のメモリ１２０の内容の参照、更新を行う。さらには他ＰＥ３００のメモリ１２０の内容とデータを交換するなどの機能を実現するものがあり、これらは、それぞれバス１３０上のＲＤ信号、ＷＲ信号、及びＬＤＳＴ信号の各信号線によって指定される。
【０１２６】
リモートアクセスコマンド生成回路３４５０は、データラッチ回路３４１１にラッチされるプロセッサ３１０が上記リモートアクセス空間上のある領域に対して書き込んだデータ、アドレスラッチ回路にラッチされる該リモートアクセス空間上のアクセスアドレス、及びバス１３０上のＲＤ信号、ＷＲ信号、ＬＤＳＴ信号の状態を入力・解析して、内部に設けられた不図示のハードウェアによりプロセッサ３１０が発行した当該リモートアクセスの通信コマンド（リモートアクセスコマンド）を生成する。そして、生成したリモートアクセスコマンドをリモートアクセス送信キュー（Remote Access Que)３４６Ｃに書き込む。また、該リモートアクセスコマンドの終了をEnd bit により通知する。尚、ＲＤ信号によってリモートリードが、ＷＲ信号によってリモートライトが、ＬＤＳＴ信号によってリモートスワップの各コマンドが作成される。リモートライトコマンドの場合には、データラッチ回路３４１１にラッチされるデータの上位ワードも下位ワードも共に有効である。そして、この場合、リモートアクセス回路３４５０によってデータラッチ回路３４１から上位ワード、下位ワードの順で読み出され、リモートアクセス送信キュー３４６Ｃへ書き込まれる。
【０１２７】
次に、図１０は前記図６に示すユーザ通信コマンド生成回路３４１０で不正なコマンドが生成（発行）されないように保護する機構を設けたバスインタフェース３４１の回路構成を示すブロック図である。同図において、図６に示すブロックと同一のブロックには同一の符号を付与しており、詳しい説明は省略する。
【０１２８】
本実施例では、Parameter check 回路３４６０を新たに付加している。Parameter check 回路３４６０は、USRCNT回路３４１４Ｕからそのカウント値を入力し、該カウント値が“１”であるときにcommand 回路３４１５Ｕから該回路が生成したコマンドの第１ワードのデータを入力する。そして、例えばそのデータの値を検査し、その値が予め定められた範囲に収まっていない不正な値である場合には、不正なコマンドが作成されたと判断し、error 信号をバス１３０を介してプロセッサ３１０に出力する。
【０１２９】
これにより、プロセッサ３１０は、上記不正コマンドが作成されたことに対する当該処理を実行する。
次に、図１１はメッセージパッシング機能により他ＰＥ３００宛のデータ転送を実現する受信コントローラ３４５の構成例を示す図である。
【０１３０】
受信コントローラ３４５は、上記メッセージパッシング機能でのデータ転送以外に、転送データの宛先を指定するデータ転送の機能もサポートしている。
図１２に、本実施例で使用されるデータ転送等に係わるコマンドの、フォーマットの例を示す。
【０１３１】
このコマンドの第１ワードの第１６ビット〜第３１ビットには宛先ＰＥ（Destination PE）の情報が設定される。この宛先ＰＥには、前記rcidが設定される。また、第０ビット〜第６ビットには、メッセージ種類(Message kind)、ＡＳ(Source)、ＡＳ(Destination) から成るコマンド種類を示す前記Command kindデータ一部の情報が設定される。
【０１３２】
ＡＳ(Source)は、転送データの読み出し場所を指定する情報が設定されるフィールドであり、２ビットから成る。
ＡＳ(Destination) は、転送されてくるデータの格納場所を指定する情報が設定されるフィールドであり、２ビットから成る。
【０１３３】
このＡＳフィールドには、「００」または「１０」のいずれかの値が設定される。
００：Ｌｏｇｉｃａｌ  Ｍｅｍｏｒｙ
１０：Ｒｉｎｇ  Ｂｕｆｆｅｒ
リングバッファ(Ring Buffer) は、「メッセージパッシング方式」での通信用に設けられた特別なバッファ領域である。ＡＳ(destination) としてリングバッファ(Ring Buffer) を指定した場合には、宛先ＰＥ３００におけるメモリ１２０上の転送先アドレスを指定する必要がない。
【０１３４】
一方、ＡＳ(destination) として“Logical Memory”を指定した場合には、宛先ＰＥ４００に対してメモリ１２０上の転送データの格納アドレスを明示的に指定する必要がある。
【０１３５】
次に、“Message kind”について説明する。
該Message kindは、その３ビット値によって下記のようなコマンドを指定する。
【０１３６】
０００：ＰＵＴ
００１：ＧＥＴ
０１０：Ｒｅｍｏｔｅ  Ｗｒｉｔｅ
０１１：ＳＷＡＰ
１００：ＣＳＩ
１０１：ＦＯＰ
１１１：Ｎｏ  Ｈｅａｄｅｒ
ＰＵＴ：自ＰＥ３００のメモリ１２０の内容を、他ＰＥ４００のメモリ１２０へ転送するデータ送信コマンド。
【０１３７】
ＧＥＴ：他ＰＥ３００のメモリ１２０の内容を、自ＰＥ４００のメモリ１２０へ転送するまたは自ＰＥ３００のプロセッサ３１０に返すデータ受信コマンド（上記リモートリードコマンドに該当する）。
【０１３８】
Ｒｅｍｏｔｅ  Ｗｒｉｔｅ：自ＰＥ３００のプロセッサ３１０が、他ＰＥ３００のメモリ１２０へデータを書き込むコマンド（上記リモートライトコマンドに該当する）。
【０１３９】
ＳＷＡＰ：メモリ内容とデータの交換を行うコマンド（上記リモートスワップコマンドに該当する）。
ＣＳＩ(Compare and Swap Instruction)：メモリ１２０から内容を読み出し、これを指定された比較データと比較する。そして、等しい場合はストアデータを対象メモリ１２０へ書き込む。最初に読み出されたメモリ１２０の内容がリターンされる。
【０１４０】
ＦＯＰ(Fetch and Operation) ：メモリ１２０から内容を読み出し、それに対しパラメータで指定される操作（ａｎｄ，ｏｒなどの論理演算）を施す。そして、該操作後のデータをメモリ１２０へ書き込む。最初に読み込んだメモリ１２０の内容がリターンされる。
【０１４１】
Ｎｏ  Ｈｅａｄｅｒ：メッセージのヘッダ（コマンド部分）を作成しない特別なコマンド。データのみが送出される。
これらのコマンドの内、ＧＥＴ、Ｒｅｍｏｔｅ  Ｗｒｉｔｅ、及びＳＷＡＰがリモートアクセスコマンドに該当する。但し、ＧＥＴの場合、受信データをメモリ１２０に転送するものは、リモートアクセスコマンドに該当しない。
【０１４２】
図１３は、リングバッファ領域１２０Ｂを利用した「メッセージパッシング方式」によるデータ転送と、転送データの格納先アドレスａ，ｂを指定するデータ転送方式の違いを説明する図である。
【０１４３】
同図(a) は、「メッセージパッシング方式」によるデータ転送方法を説明刷る図である。「メッセージパッシング方式」によりデータＡ、Ｂを他ＰＥ３００に転送する場合には、同図(a) に示すようにコマンドの直後に転送データＡ、Ｂが付加されたメッセージＡ１，Ｂ１を宛先ＰＥ３００に送信すればよい。すなわち、宛先ＰＥ３００のメモリ１２０上での格納アドレスを指定する必要がない。そして、メッセージＡ１，Ｂ１のデータＡ，Ｂは、到着順にメモリ１２０上に設けられたリングバッファ領域１２０Ｂに連続して格納される。
【０１４４】
一方、同図(b) に示す「メッセージパッシング方式」によらないデータ転送の場合には、同一のデータＡ，Ｂを他ＰＥ３００に転送する際、メッセージＡ２，Ｂ２において宛先ＰＥ３００のメモリ１２０上での上記データＡ、Ｂの格納アドレスａ，ｂを明示的に指定する必要がある。上記宛先ＰＥ３００は、メッセージＡ２，Ｂ２を受信すると、それらのメッセージＡ，Ｂで指定されている自メモリ１２０上のアドレスａ，ｂに、データＡ，Ｂを格納する。
【０１４５】
図１４に、上記リモートリードコマンド、リモートライトコマンド、及びリモートスワップコマンドの各リモートアクセスコマンドを発行するメッセージの第１ワード目に設定されるコマンド種類の情報の内容を示す。
【０１４６】
次に、図１１に示す受信コントローラ３４５の構成と動作を説明する。
コマンド解釈装置３４５１は、マルチプレクサ３４５を介してメッセージを受信する。そして、該受信したメッセージの第１ワードのＡＳ(destination) 情報を参照して、メッセージのデータの格納先を判断する。そして、該ＡＳ(destination) 情報の値が「００」すなわち“Logical Memory”指定となっているならば、受信メッセージに設定されているデータ格納アドレスや転送データ数などのパラメータをＤＭＡコントローラ３４５２に設定し、該ＤＭＡコントローラ３４５２を起動する。これにより、ＤＭＡコントローラ３４５２は、バスインタフェース３４１を介してメモリ１２０上の当該領域に受信メッセージのデータを転送する。
【０１４７】
一方、コマンド解釈装置３４５１は、上記受信メッセージのＡＳ(destination) 情報の値が「１０」すなわち“Ring Buffer ”指定となっていれば、リングバッファ管理装置３４５３に受信メッセージのデータの転送を要求する。
【０１４８】
該リングバッファ管理装置３４５３は、メモリ１２０上のリングバッファ領域１２０Ｂの次のデータの格納アドレスが設定される書き込みポインタ（Write pointer)３４５３１を備えており、シーケンサ３４５３２により該書き込みポインタ３４５３１の値を更新しながら、リングバッファ領域１２０Ｂに連続して受信メッセージのデータを転送する。また、リングバッファ管理装置３４５３は、読み出しポインタ３４５３３と比較器３４５３４を備えている。
【０１４９】
読み出しポインタ３４５３３には、上記リングバッファ領域１２０Ｂから次に読み出すデータのアドレスが設定される。この読み出しポインタ３４５３３の更新は、プロセッサ３１０によって行われる。比較器３４５３４は、上記両ポインタ３４５３１、３４５３２の値を比較して、両ポインタがリングバッファ領域１２０Ｂの隣接するアドレスを指定している場合には、リングバッファ領域１２０Ｂが満杯であることを示すバッファフル信号をアクティブにしてバスインタフェース３４１に出力する。バスインタフェース３４１は、該アクティブとなったバッファフル信号をバス１３０を介してプロセッサ３１０に割り込み信号として出力する。
【０１５０】
上記リングバッファ管理装置３４５３は、コマンド解釈装置３４５１やバスインタフェース３４１と連携して動作し、その回路規模も小さくして済むため、受信コントローラ３４５全体のハードウェア量の増加は少なくて済む。
【０１５１】
本実施例でＰＥ３００のプロセッサ３１０がリモートアクセスコマンド以外の通信コマンドを発行するために実行するプログラムの一例を下記に示す。
下記の例は、前記ＰＵＴコマンドを発行するプログラムである。
【０１５２】
ｐｕｔａｄｄｒは、コマンドエントリ領域１５０上のＰＵＴコマンドに割り当てられたアドレスである。
ｐｕｔ（宛先ＰＥ，ソースアドレス，サイズ，宛先アドレス，その他のパラメータ１，その他のパラメータ２・・・）
｛
ｐｕｔａｄｄｒに＜宛先ＰＥ＞を書く。
【０１５３】
ｐｕｔａｄｄｒに＜サイズ＞を書く。
ｐｕｔａｄｄｒに＜宛先アドレス＞を書く。
ｐｕｔａｄｄｒに＜ソースアドレス＞を書く。
【０１５４】
ｐｕｔａｄｄｒに＜その他パラメータ１＞を書く。
ｐｕｔａｄｄｒに＜その他パラメータ２＞を書く。
・・・
｝
尚、上記宛先ＰＥとして自ＰＥ３００を指定することも可能である。
【０１５５】
【発明の効果】
請求項１記載の発明において、プロセッサは、所望のコマンドを発行する際、自己のアドレス空間内に特定領域として設けられるコマンドエントリ領域の上記所望のコマンドに対して予め割り当てられたアドレスに該コマンドのパラメータ等を書き込めばよい。したがって、上記コマンドエントリ領域にユーザレベルのコマンドを発行するためのアドレス領域を割り当て、該コマンドエントリ領域をメモリプロテクト機能により保護することにより、プロセッサがユーザレベルでコマンドを発行することが可能になる。また、これによりコマンド発行時にシステムレベルへ移行する必要がなくなるのでオーバーヘッドを削減できる。
【０１５６】
請求項２記載の発明では、受信コントローラは、受信メッセージのコマンドにデータの格納先として予め定められた特別なバッファ領域が指定されていた場合、上記データを、前記バスインタフェース３１を介して該バッファ領域に格納するので、メッセージにデータの格納先を明示的に設定する必要がなくなり、メッセージパッシング方式でのデータ転送が可能になる。また、このデータ転送を実現するためのハードウェアを、受信コントローラに設けたとしても、送受信機構の大部分を共有できるためハードウェア量の増加を少なく抑えることができる。
【０１５７】
請求項３記載の発明では、自プロセッサ要素のメモリ１２の内容を他のプロセッサ要素１０へ転送することを要求するコマンドが受信コントローラ３４により受信されると、該コマンドは、前記送信コントリーラ３２へ伝達される。
【０１５８】
したがって、返信コマンドの処理を送信コントローラ３２により実行でき、ハードウェアの量を削減できる。
請求項４記載の発明では、バスインタフェース３１は生成したコマンドを直ちにコマンドキュー３５に書き込むことができるので、複数のコマンドを送信コントローラ３２のコマンド処理の終了を待たずに、連続して発行することが可能となり、処理効率が向上する。
【０１５９】
請求項５記載の発明では、プロセッサのアドレス空間上の一部の領域を、リモートアクセスコマンド発行用の領域として予め割り当てておくことにより、前記バスインタフェース３１に設けたハードウェアよりリモートアクセスコマンドを生成できる。したがって、少量のハードウェアの付加により、リモートアクセス機能を実現できる。
【０１６０】
請求項６記載の発明によれば、前記バスインタフェース３１は、生成したリモートアクセスコマンドをリモートアクセス送信キュー３５Ａに書き込む。したがって、複数のリモートアクセスコマンドを送信コントローラ３２のコマンド処理の終了を待たずに、連続して発行することが可能になる。
【０１６１】
請求項７記載の発明によれば、バスインタフェースは、前記プロセッサがコマンドエントリ領域にコマンドデータ列を書き込んだときの走行レベルに従ってシステムモードの送信コマンドまたはユーザモードの送信コマンドを生成する。
【０１６２】
したがって、プロセッサは、システムモードのコマンドとユーザモードのコマンドの発行を、その走行レベルによって制御することができる。
請求項８記載の発明によれば、前記バスインタフェースによって、前記システムモード及びユーザモードの送信コマンドが、それぞれシステム送信キューと、ユーザ送信キューに書き込まれる。
【０１６３】
したがって、送信コントローラがシステム送信キューとユーザ送信キューのいずれの方から優先的に送信コマンドを取り出すかを予め決めておくことにより、システムモードの通信コマンドとユーザモードの通信コマンドの処理に優先順位を付けることができる。また、システムモードの通信コマンドとユーザモードの通信コマンドは、互いに別々のキューに格納されるため、プロセッサの走行レベルがユーザがユーザレベルとシステムレベルとの間で頻繁に切り替わっても、ユーザモードの通信コマンドとシステムモードの通信コマンドは当該キューに正しく格納される。このため、プロセッサは上記２つのコマンドを随時、独立に発行することができる。
【０１６４】
請求項９記載の発明によれば、転送手段により、前記送信コントローラにより構築された自プロセッサ要素内で処理が完結されるコマンドのメッセージは、前記相互完結網インタフェースを介さずに前記受信コントローラに転送される。
【０１６５】
したがって、自プロセッサ要素内で完結する処理を高速に行うことができる。
請求項１０記載の発明によれば、前記転送手段を介して受信コントローラにより受け取られる自プロセッサ要素のメモリのある領域に格納されているデータの転送を要求する通信コマンドに対する返信コマンドは、前記受信コントローラによって返信キューに書き込まれる。
【０１６６】
したがって、受信コントローラは、上記返信コマンドを送信コントローラの処理の終了を待たずに、連続して発行することができる。
請求項１１記載の発明によれば、前記受信コントローラが、前記相互結合網インタフェースを介して受け取ったリモートアクセスコマンドの設定されたメッセージに対する返信コマンドが、前記受信コントローラによってリモートアクセス返信キューに書き込まれる。
【０１６７】
したがって、受信コントローラは、相互結合網インタフェースを介して受け取った返信メッセージを要するリモートアクセスコマンドに対する返信コマンドを、送信コントローラの処理の終了を待たずに連続して出力することができる。
【０１６８】
請求項１２記載の発明によれば、前記バスインタフェースにより、前記プロセッサが前記コマンドエントリ領域に書き込むコマンドデータ列のアドレスによって、コマンドの種類が決定される。
【０１６９】
したがって、コマンドエントリ領域をユーザコマンド発行用の領域とシステムコマンド発行用の領域に分割できる。
また、請求項１３記載の発明によれば、メモリ保護手段により、前記プロセッサが、ユーザレベルで走行しているときに前記コマンドデータ列を書き込み可能な前記コマンドエントリ領域内の領域を、一部の領域に制限することができる。
【０１７０】
したがって、ユーザレベルで発行できるコマンドの種類を制限させることができる。
請求項１４記載の発明によれば、バスインタフェースは、検出手段により、前記プロセッサが前記コマンドエントリ領域に対して書き込むコマンドの種類に応じて、該コマンドエントリ領域に書き込まれるコマンドデータの数を計数して、該コマンドデータ列の終了を検出する。
【０１７１】
したがって、この検出情報を用いることにより、キューに格納されているまだ未完結のコマンドの発行を抑えることができる。また、コマンドの種類に応じて複数のキューが用意されている場合には、完結しているコマンドが格納されているキューから完結しているコマンドを取り出して処理すればよいので、余分な待ち時間を削減でき処理効率が向上する。
【０１７２】
請求項１５記載の発明によれば、バスインタフェースは、チェック手段により、前記コマンドデータの計数値を基に、前記コマンドデータ列のある部分の正当性をチェックする。
【０１７３】
したがって、不正なコマンドの発行を防止できる。
また、請求項１６記載の発明によれば、バスインタフェースは、情報付加手段により、前記コマンドデータの計数値を基に、前記コマンドデータ列のある部分にシステムで使用される情報を付加する。
【０１７４】
したがって、コマンドデータ列の任意の部分に種々の情報を埋め込むことができる。
【図面の簡単な説明】
【図１】本発明の原理図を説明する図である。
【図２】本発明の第１の実施例のプロセッサ要素の全体構成を示すブロック図である。
【図３】コマンドエントリ領域の概念を説明する図である。
【図４】本発明の第２実施例のプロセッサ要素の全体構成を示すブロック図である。
【図５】本発明の第３実施例のプロセッサ要素の全体構成を示すブロック図である。
【図６】上記第３実施例のバスインタフェースにおけるシステムコマンド及びユーザコマンドを生成する部分の回路構成を示すブロック図である。
【図７】上記第３実施例において、プロセッサがデータバス上に出力するコマンドデータ列のフォーマットを説明する図である。
【図８】上記第３実施例においてバスインタフェースによって生成されるシステムレベルの通信コマンドのフォーマットを説明する図である。
【図９】上記第３実施例内のバスインタフェースにおけるリモートアクセスコマンドを生成する部分の概略構成を示すブロック図である。
【図１０】パラメータチェック機能が付加されたバスインタフェースの回路構成を示すブロック図である。
【図１１】上記第３実施例におけるメッセージパッシング方式でのデータ転送機能を備えた受信コントローラの回路構成を示すブロック図である。
【図１２】リモートアクセスコマンドのフォーマットを示す図である。
【図１３】メッセージパッシング方式でのデータ転送方法と、これ以外でのデータ転送方法を説明する図である。
【図１４】リモートリードコマンド、リモートライトコマンド、及びリモートスワップコマンドを発行するメッセージの第１ワード目に設定されるコマンド種類情報の内容を示す図である。
【図１５】並列計算機の全体構成を説明する図である。
【符号の説明】
１０      プロセッサ要素
１１      プロセッサ
１２      メモリ
２０      相互通信網
３０      通信制御装置
３１      バスインタフェース
３１Ａ    検出手段
３１Ｂ    チェック手段
３１Ｃ    情報付加手段
３２      送信コントローラ
３３      相互結合網インタフェース
３４      受信コントローラ
３５      コマンドキュー
３５Ａ    リモートアクセス送信キュー
３５Ｂ    システム送信キュー
３５Ｃ    ユーザ送信キュー
３５Ｄ    返信キュー
３５Ｅ    リモートアクセス送信キュー
【図１】
0003701988.tif 000002
【図２】
0003701988.tif 000003
【図３】
0003701988.tif 000004
【図４】
0003701988.tif 000005
【図５】
0003701988.tif 000006
【図６】
0003701988.tif 000007
【図７】
0003701988.tif 000008
【図８】
0003701988.tif 000009
【図９】
0003701988.tif 000010
【図１０】
0003701988.tif 000011
【図１１】
0003701988.tif 000012
【図１２】
0003701988.tif 000013
【図１３】
0003701988.tif 000014
【図１４】
0003701988.tif 000015
【図１５】
0003701988.tif 000016