(57)【特許請求の範囲】
【請求項１】
１以上の出力側論理回路が発行する異なるデータ長を持つ２種類以上の命令を、１以上の入力側論理回路に送出する論理回路接続装置において、
命令は、命令の種類を示す命令コード部と、命令に伴うデータを示す命令デタ部からなり、
出力側論理回路から入力側論理回路に送出する時に使用する転送命令は、転送命令の種類を示す転送コード部と、転送命令に伴うデータを示す転送データ部からなり、
前記論理回路接続装置は、各出力側論理回路が発行する１以上の命令の命令コード部を受けて、転送命令に変換して入力側論理回路に一度に送出できる１以上の命令の組を選択し、該命令の組に対応した転送コード部を生成する調停回路・エンコーダと、
前記各出力側論理回路が発行する１以上の命令の命令コード部及び命令データ部の一部分をそれぞれ受けて、前記転送命令の転送データを構成する複数のデータ部分の各々を、前記各出力側論理回路が発行する命令の命令データ部の一部分からの選択によりそれぞれ決定する複数の調停回路と、
前記調停回路・エンコーダ及び複数の調停回路から転送される転送命令を受けて出力側論理回路が発行した命令の組を復元するデコーダを備えることを特徴とする論理接続装置。
【請求項２】
出力側論理回路は、ｎ個を同時に転送可能な命令の発行時に、出力側論理回路から論理回路接続装置への命令発行ポートに、命令データ部をｎ個に分割した複数のフィールドに発行する命令のデータを出力して調停回路・エンコーダまたは調停回路に伝送し、
調停回路・エンコーダは、各命令発行ポートからの命令の中から入力側論理回路に出力する１以上の命令の組を選択し、これに対応する転送コードを入力側論理回路に向けて出力し、
調停回路は、各命令発行ポートからの命令の中から入力側論理回路に出力する１以上の命令の組を選択し、これらに対応する転送データ部から自調停回路の担当する部分を入力側論理回路へと出力し、
デコーダは、調停回路・エンコーダから受けた転送コードを受けて出力側論理回路が発行した命令の組を復元してこれらの命令コードを入力側論理回路へと出力することで、
前記出力回路側は、前記論理回路接続装置を介して、命令の種類により異なる個数の命令を同一サイクルで前記入力側論理回路に送出可能であることを特徴とする請求項１に記載の論理回路接続装置。
【請求項３】
前記調停回路及びデコーダに直前に転送した命令の一部のフィールドを記憶するレジスタを設け、
前記調停回路は後続命令の選択時に前記レジスタと命令の当該フィールドを比較して、同一のフィールドを持つ命令の転送時に当該フィールドを省略した転送命令を利用することで転送ビット数を削減して同時に転送可能な命令数を増やし、
前記デコーダは、命令のフィールドを省略した転送命令の受信時に、デコーダ側の前記レジスタの値をフィールド値として使用することで転送された命令の組を復元することを特徴とする請求項１に記載の論理回路接続装置。
【請求項４】
前記転送命令をバスを介して伝送する請求項１に記載の論理回路接続装置。
【請求項５】
前記出力側論理回路は、前記論理回路接続装置に出力する命令を格納するバッファを備えることを特徴とする請求項１に記載の論理回路接続装置。
【請求項６】
前記命令の種類は、命令のデータ長の違いであることを特徴とする請求項１に記載の論理回路接続装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、論理回路間の命令の転送性能を向上する論理回路接続方法及びそれを用いた論理回路接続装置に係り、特に複数のプロセッサを結合した並列計算機のプロセッサ間の接続に用いるのに好適な論理回路接続方法及び論理回路接続装置に関する。
【０００２】
【従来の技術】
計算機等の大規模なシステムは、全体を適当な論理単位（モジュール単位）に分割され、モジュール単位で個別に設計される。従来、モジュールはシステムを構成する集積回路単位としていた。近年では、特に、集積回路の大規模化が進んでおり、集積回路内を更に複数のモジュールに分割して、分割された個々のモジュール単位で設計することが一般的となっている。
【０００３】
システム及び集積回路内の各モジュール間のデータ信号や制御信号の授受の方法は、送信側及び受信側のモジュール間のインターフェイスとして規定される。そして、信号の送信側及び受信側の双方のモジュールは、このインターフェイスに従って動作する様に設計される。
【０００４】
上記のモジュール間のインターフェイスは、使用する信号線数が少ないことが要求される。これは、集積回路間のインターフェイスでは、集積回路の入出力ピン数に制限があること、集積回路内のインターフェイスでは、モジュール間の信号線はモジュール内の信号線と比較して長くなりやすく、集積回路の配線領域を多くとること、の理由による。
【０００５】
通常、モジュール間でやり取りする命令は複数存在する。これらの命令毎にモジュール間の信号線を設け、個別に転送する構造を採用した場合、信号線数が多くなり、上記要求を満たせない。このため、通常は、命令の種類を伝える制御信号と付随するデータを伝えるデータ信号線を設け、複数の命令で信号線を共用するインターフェースを採用する。この方式では、送信側モジュールに、モジュールの論理回路内の種々の命令の転送要求を受付けて受信側に転送する送信回路を設け、受信側モジュールには送信回路から命令の信号線を介して転送された命令を受けて受信モジュール内の論理回路に発行する受信回路を設ける。なお、送信回路、命令の信号線、受信回路からなる部分を論理回路接続装置と呼ぶ。
【０００６】
この従来の論理回路接続装置では、同時に転送可能な命令数は固定であった。例えば、「MIPS R10000 Microprocessor User's Manual Version 2.0(MIPS Technologies Inc.発行)」の第６章によると（従来技術１）、R10000はスプリットトランザクション方式のバスを採用し、アドレス及びデータの転送を６４ビットのバス（multiplex address/data bus）で転送する。バスをアドレス転送及びデータ転送のいずれに使用するかは、命令毎に指定される。例えば、プロセッサがメモリ読出しを発行する"Processor Block Read Request"、外部からプロセッサのキャッシュを無効化する"External Invalidate Request"はアドレス転送であり４０ビットを用いていた。また、外部からプロセッサにメモリデータを返送する"External Block Data Response"はデータ転送であり、６４ビットを用いていた。このように一度に転送される命令が使用するバス幅は固定されていた。
【０００７】
また、特開平８−１６５１０号公報（従来技術２）には、システムバスを介して複数の入出力装置とプロセッサ間でデータ転送を行う場合に、データバスを複数の入出力装置が使用するフィールドに分割して転送を行うことが記載されている。この例では、複数の入出力装置はプロセッサから同一のアドレスに配置され、入出力装置とプロセッサ間のデータ幅は固定となっていた。
【０００８】
また、特開昭６２−１３４７４５号公報（従来技術３）には、中央処理装置及び主記憶装置と複数の入出力装置間でデータ転送を行う場合に、共通バスを２分割し、上位を入出力装置１、下位を入出力装置２で使用することが記載されている。この従来技術では、処理モジュール（中央処理装置、入出力装置等）の種類に応じて共通バスの上位／下位を独立に使用するか、または同時に使用するかが決められていた。
【０００９】
【発明が解決しようとする課題】
上記従来技術１で述べた論理回路接続装置では、命令の種類により転送するデータ長が異なる場合、データ長の短い命令は信号線の一部のみを使用して転送される。このため、データ長の短い命令の伝達時に信号線に空きができる。アドレスは４０ビットであるため、バスをアドレス転送に使用する場合には、その他制御信号を付加しても１７ビットの未使用部分が生じる。今後、バス幅が１２８ビット等に拡大されると、アドレス転送時の未使用部分が増加する。
【００１０】
また、従来技術２で述べた論理回路接続装置では、対象とする転送区間がプロセッサと入出力装置間に限定されており、また、入出力装置とプロセッサ間のデータ幅は固定であり、定められたデータ幅より小さいデータ幅を持つ命令のデータ転送の場合にはシステムバスに未使用部分が生じ無駄を生じていた。
【００１１】
また、従来技術３で述べたものに関しては、処理モジュールの種類に応じて共通バスの上位／下位を独立に使用するか、または同時に使用するかが決められていたが、処理モジュール間で転送される個々の命令の転送単位では、バスの使用ビット数を設定することができず、即ち、バス上位や下位等で定められたデータ幅より小さいデータ幅を持つ命令のデータ転送の場合にはシステムバスに未使用部分が生じ無駄を生じていた。
【００１２】
本発明の目的は、命令単位で、転送するデータ長が短い命令の転送時に、命令データ信号線の空きビットを利用して複数の命令を伝達し、転送性能を向上することにある。
【００１３】
【課題を解決するための手段】
上記課題を解決するために、送信側論理回路が転送を要求する複数の命令の中から、同時に受信側論理回路に転送可能な命令の組を選択する調停回路と、選択した命令の組を転送命令に変換し、受信側論理回路に向けて送出するエンコーダと、エンコーダからの転送命令を受けて送信側論理回路が発行した命令の組を復元するデコーダを備え、送信側論理回路側は、調停回路、エンコーダ、デコーダからなる論理回路接続装置を介して、各命令の種類により異なる個数の命令を同一サイクルで受信側論理回路に送出可能とする。
【００１４】
【発明の実施の形態】
（実施例１）
以下に、本発明の第１の実施例を図１〜３を用いて説明する。
【００１５】
図１は、本発明に係る論理回路接続装置を示す。図１の論理回路接続装置は、調停回路１００、エンコーダ１０２、デコーダ１０４、および信号線から構成される。送信側論理回路から送出される命令（命令コード部と命令データ部から構成される）は、ポートＡ〜ポートＤから論理回路接続装置に与えられ、論理回路接続装置を通って受信側論理回路のポートＥ及びポートＦに転送される。
【００１６】
送信側論理回路から受信側論理回路へ出力される命令は、命令の種類によって、命令データ部の転送に必要とする信号線のビット幅が異なる。そこで、命令データ部の転送に必要な信号線のビット数が送信側論理回路から受信側論理回路へ向けて設けられている信号線のビット数より小さい場合は、複数の命令を纏めて転送することにより、つまり、１つの命令のデータ部の転送では使用していなかった信号線の部分に、他の命令のデータ部を合わせて転送することにより、信号線の未使用部分をなくすことができ、結果として信号線を有効に利用することができる。
【００１７】
本願発明では、送信側論理回路と受信側論理回路との間に論理回路接続装置を設け、送信側論理回路側にある論理回路接続装置（調停回路１００及びデコーダ１０２）によって、送信側論理回路が送信した命令を少なくとも１つ以上纏めて一つの新たな命令（転送命令）として合成し、合成した転送命令を受信側論理回路側にある論理回路接続装置（デコーダ１０４）へ、エンコーダとデコーダ間の信号線（転送ライン）を用いて転送し、転送命令を受信したデコーダは、送信側論理回路が出力した元の複数の命令に戻して受信側論理回路へ出力する。これにより、エンコーダとデコーダ間の信号線を有効利用でき、複数の命令を同時に送信側論理回路から受信側論理回路へ転送することが可能となる。
【００１８】
従って、一つの転送命令で２つ以上の命令を転送できるようになる。例えば、従来１サイクルで命令を転送できていたとすれば、この転送命令を用いることで、１サイクルで２つの命令を転送できるようになり、効率よく命令を転送できるようになる。言い換えれば、本実施例は、送信側論理回路から受信側論理回路に対して同一サイクルに伝送する命令数を、命令データの長さに応じて変えることができる点に特長がある。
【００１９】
また、送信側論理回路側のエンコーダと受信側論理回路側のデコーダ間の転送ラインは、送信側論理回路からエンコーダまでの距離やデコーダから受信側論理回路までの距離と比べて一般に長く、この部分の領域は、複数の論理回路およびモジュール間転送路から構成されるシステムの全体を考える場合、送信側論理回路からエンコーダまでの距離やデコーダから受信側論理回路までの転送路の領域より大きいといえる。従って、この転送ラインを、命令に応じて使い分けることは重要である。
【００２０】
以下、図１を詳しく説明する。
【００２１】
送信側論理回路のポート数は、送信側論理回路が同時に発行しうる命令の数により決定される。受信側論理回路のポート数は、１つの転送命令で転送可能な命令の最大数により決定される。本実施例では、送信側論理回路のポート数を４、受信側論理回路のポート数を２としているが、これらの値は送信側論理回路の構成及び１つの転送命令で転送可能な命令数によって変わりうる。
【００２２】
調停回路１００は、出力側論理回路がポートＡ〜ポートＤを通して出力する最大４つの命令の中から受信側論理回路へ出力する命令を最大２つ選択し、選択命令ライン１（１３０ａ、１４０ａ）及び選択命令ライン２（１３０ｂ、１４０ｂ）を通してエンコーダ１０２に出力する。エンコーダ１０２は、調停回路１００で選択された命令を転送命令に変換し、転送ライン（１５０、１６０）を通してデコーダ１０４に出力する。デコーダ１０４は、エンコーダ１０２から受けた転送命令を調停回路１００が選択した命令に戻し、ポートＥ及びポートＦを通して受信側論理回路に出力する。
【００２３】
送信側論理回路のポートＡ〜ポートＤから調停回路へ信号線を介して命令が転送される。それぞれのポートから接続される信号線は、命令コード部を転送する信号線１１０ａ〜１１０ｄ、命令データ部を転送する信号線１２０ａ〜１２０ｄ、および、調停回路が送信側論理回路へ命令を受理したことを知らせるためのアクノリッジ信号線から構成される。命令コード部を転送する信号線は、命令の種類を転送するのに用いる。図１では、それぞれのポートに対して、命令コード部を転送する信号線として２ビット、命令データ部を転送する信号線として６４ビット、アクノリッジ信号線として１ビットが割り付けられている。
【００２４】
次に、送信側論理回路から調停回路へ転送される命令について説明する。命令は、命令の種類を示す２ビットの命令コード部と、命令により伝送する命令データ部分からなる。ここで、命令の種類というのは、命令が、命令データ部を転送する信号線の内、実際に使用する信号線の部分を示すものである。例えば、命令データを転送する信号線が６４ビットとした場合、６４ビットの内の６４ビットを全て使用するとか、上位３２ビットを使用するとか、上位１６ビットを使用するとかの違いによる種類である。従って、図１においては、命令コード部が上位３２ビットの使用すると示す場合、命令コード部を転送する６４ビットの信号線の内の上位３２ビットの信号線を用いて命令データ部が伝送されることになる。
【００２５】
調停回路１００は、出力側論理回路がポートＡ〜ポートＤを通して出力した命令の中から受信側論理回路へ出力する命令を複数選んで送出する。基本的な選び方は次のようになる。選択は、選択した一つ以上の命令の命令データ部のビット数の合計が、エンコーダからデコーダへの転送ラインの信号線のビット数より大きくならない様に、一つ以上の命令が選択される。選択された一つ以上の命令は、調停回路１００からエンコーダ１０２へ選択命令ライン１および選択命令ライン２を介して送られる。選択命令ライン１及び２の構造は、ポートＡ〜Ｄの信号線の構造からアクノリッジ信号線を削除した構造と同じである。図１においては、出力側論理回路がポートＡ〜ポートＤを通して出力する最大４つの命令の中から受信側論理回路へ出力する命令を最大２つ選択し、選択命令ライン１（１３０ａ、１４０ａ）及び選択命令ライン２（１３０ｂ、１４０ｂ）を通してエンコーダ１０２に出力する。なお、調停回路１００については後で更に詳細に説明する。
【００２６】
エンコーダ１０２（後で詳細に述べる）は、調停回路１００で選択された１つ以上の命令を選択命令ライン１及び２から受信すると、これら１つ以上の命令を一つの転送命令（後述する）に変換し、転送ライン（転送コード部用信号線１５０、転送データ部用信号線１６０）を通してデコーダ１０４に出力する。転送命令は、転送命令の種類を示す２ビットの転送コード部と、転送命令により伝送するデータ部分である６４ビットの転送データ部からなる。転送コード部は、調停回路からきた命令がどのような種類であり、また、これをどのように組み合わせたかを示す情報をであり、転送ラインの転送コード部用信号線を介して転送される。転送データ部は、調停回路より受信した命令のデータを送る部分であり、例えば、全ビットが１つの命令のデータであったり、転送データ部の上位と下位とで互いに異なる命令のそれぞれのデータ部であったりし、これらは、転送データ部用信号線を介して転送される。
【００２７】
デコーダ１０４は、エンコーダ１０２から転送ラインを介して受けた転送命令の転送コード部により、受信した転送データ部がどのような種類の命令の組み合わせであるかを判定し、判定結果に従って、転送データ部をそのまま、または必要に応じて分割して命令データ部を得て、判定結果である命令コード部と命令データ部を組み合わせて一つの命令とし、これを命令として、デコーダから受信側論理回路へ出力する。即ち、転送ラインから受信した転送命令を調停回路１００が選択した１つ以上の命令に戻し、ポートＥ及びポートＦを通して受信側論理回路に出力する。デコーダ１０４からポートＥおよびポートＦへの命令信号線のそれぞれの構造は、ポートＡ信号線の構造からアクノリッジ信号線を削除した構造と同様の構造であり、１７０ａ、１７０ｂが命令コード部であり、１８０ａ、１８０ｂが命令データ部を伝送する信号線である。なお、デコーダ１０４については後で更に説明する。
【００２８】
なお、本実施例では、命令コード部と転送コード部を２ビット、命令データ部と転送データ部を６４ビットとしているが、本発明は任意の命令および転送命令の構成について有効である。
【００２９】
図２は、図１の論理回路接続装置で使用する命令を示す。命令は、命令コード部と命令データ部から構成される。命令コード部が"00"の場合、命令を発行しないことを示す。命令Ｉ０は、３２ビットのデータを伝送する命令であり、命令コード部は"10"、命令データ部は、命令データ部を転送する信号線６４ビットの内上位３２ビットを用いて転送される。命令Ｉ１は、６４ビットのデータを伝送する命令であり、命令コード部は"11"であり、命令データ部は、命令データ部を転送する信号線６４ビットの全部を用いて転送される。この命令は、送信側論理回路から調停回路への命令、調停回路からエンコーダへの命令、および、デコーダから受信側論理回路への命令として使用される。
【００３０】
図３は、図１の論理回路接続装置で使用する転送命令を示す。転送命令は、転送コード部と転送データ部から構成される。転送コード部が"00"の場合、転送命令を発行しないことを示す。転送命令Ｔ０は、図２で説明した命令Ｉ０を１つ伝送する転送命令である。転送コード部は"01"であり、転送データ部は、６４ビットの内上位３２ビットを用いて命令Ｉ０の命令データが転送される。転送ラインの内、転送する部分である信号線１６０の上位３２ビットが当該転送命令の転送データを転送するのに使用される。転送命令Ｔ１は、命令Ｉ０を同時に２つ伝送する転送命令である。転送コード部は"10"であり、転送データ部は信号線１６０の６４ビットの内上位３２ビットが１つ目の命令Ｉ０の命令データ部、下位３２ビットが２つ目の命令Ｉ０の命令データ部を転送するのに使用される。転送命令Ｔ２は、命令データ部が６４ビットである命令Ｉ１を１つ伝送する転送命令であり、転送コード部は"11"、転送データ部は命令Ｉ１の命令データ部とする。
【００３１】
本実施例は、送信側論理回路から受信側論理回路に対して同一サイクルに伝送する命令数を、命令データの長さに応じて変えることができる点に特長がある。
【００３２】
本実施例の論理回路接続装置の動作を具体的に以下に示す。
【００３３】
送信側論理回路は、ポートＡ〜ポートＤを用いて０から４個の命令の転送を要求する。
【００３４】
＜調停回路の動作＞
調停回路１００は、同時に転送可能な命令の組をポートＡ〜ポートＤから選択し、エンコーダ１０２に出力する。以下、調停回路１００の構成及び同時に転送可能な命令の組の選択方法を説明する。
【００３５】
図２７は、調停回路１００の構成を示す図である。信号線１１０ａ〜１１０ｄ、１２０ａ〜１２０ｄ、１１５ａ〜１１５ｄ、１３０ａ〜１３０ｂ、１４０ａ〜１４０ｂは図１の対応する信号線である。調停回路１００は、命令順序決定回路１００ａ、命令順序キュー１００ｂ、命令選択回路１００ｃ、第１命令セレクタ１００ｄ、第２命令セレクタ１００ｅにより構成される。
【００３６】
命令順序決定回路１００ａは、ポートＡ〜ポートＤの全ての命令コード部を受けて順序を決定し、ポート番号及び命令コードの列を命令順序キュー１００ｂに送出する。ここでは、命令順序キュー１００ｂの命令順序決定をラウンドロビンで行なうこととする。ラウンドロビン制御は、前回送出したポート番号列の最後のポート番号＋１のポートの命令を最優先として送出する。ただし、前回送出したポート番号及び命令コードの列の最後のポート番号がポートＤを示す場合、最優先のポートはＡとする。例えば、サイクルＮでポートＢ、ポートＣ、ポートＤが命令の送信を要求しており、ポートＣが最優先である場合、ポートＣ、ポートＤ、ポートＢのポート番号及び命令コードの列を命令順序キュー１００ｂに送出し、サイクルＮ＋１ではポートＣが最優先となる。従って、サイクルＮ＋１でポートＡ、ポートＤが命令の送信を要求すると、ポートＤ、ポートＡのポート番号及び命令コードの列が命令順序キュー１００ｂに送出される。
【００３７】
命令順序キュー１００ｂは、命令順序決定回路１００ａから送出されるポート番号及び命令コードの列を順に格納し、命令選択回路１００ｃにポート番号及び命令コードを最大２つ送出する。命令選択回路１００ｃの指示により命令がエンコーダに送出されると、命令順序キュー１００ｂから当該エントリを削除する。この制御により、命令順序キュー１００ｂ内には送信側論理回路の各ポートから出力中の命令の内、エンコーダ側に出力されなかった命令が発行される順序で格納される。また、ポート番号及び命令コードの格納時に、命令順序キュー１００ｂ内に存在するポート番号に対応するものを除外して格納することで、すでにエンコーダへの送出を待っている命令の２重格納を防ぐ。命令順序キュー１００ｂから命令選択回路１００ｃに送出するポート番号及び命令コードが不足する場合、命令順序決定回路１００ａの送出するポート番号及び命令コードを直接命令選択回路１００ｃに送出する。これにより、命令順序キュー１００ｂが空の場合に送信側論理回路の送出する命令を遅滞なくエンコーダに送出できる。
【００３８】
命令選択回路１００ｃは、命令順序キュー１００ｂから送出されるポート番号及び命令コードを最大２つ受け、これらの命令が同時に送出可能かどうかを判断し、判断結果に基づいて第１命令セレクタ１００ｄ、第２命令セレクタ１００ｅを制御する。本実施例においては、命令順序キュー１００ｂが命令Ｉ０を２つ送出した場合のみ、これらの命令を同時に送出可能である。従って、以下のアルゴリズムにより、第１命令セレクタ１００ｄ及び第２命令セレクタ１００ｅを制御し、命令をエンコーダに発行する。
【００３９】
（１）命令順序キュー１００ｂから命令Ｉ０を２つ受け取った場合、
第１の命令のポート番号を第１命令セレクタ１００ｄに送出してセレクタを制御し、信号線１３０ａ、１４０ａを介して対応する命令をエンコーダに送出する。同時に、第２の命令のポート番号を第２命令セレクタ１００ｅに送出してセレクタを制御し、信号線１３０ｂ、１４０ｂを介して対応する命令をエンコーダに送出する。この時、第１及び第２命令に対応するエントリを命令順序キュー１００ｂから削除すると共に、アクノリッジ信号線１１５ａ〜１１５ｄの当該ポートに対応する信号線を”１”として、命令の発行を完了する。
【００４０】
（２）（１）の場合以外で、命令順序キュー１００ｂから第１の命令Ｉ０を受け取った場合、
第１の命令のポート番号を第１命令セレクタ１００ｄに送出してセレクタを制御し、信号線１３０ａ、１４０ａを介して対応する命令をエンコーダに送出する。同時に、第２の命令を発行しないことを第２命令セレクタ１００ｅに送出してセレクタを制御し、信号線１３０ｂを"00"として、信号線１３０ｂ、１４０ｂからは命令を送出しない。この時、第１命令に対応するエントリを命令順序キュー１００ｂから削除すると共に、アクノリッジ信号線１１５ａ〜１１５ｄの当該ポートに対応する信号線を”１”として、命令の発行を完了する。
【００４１】
（３）命令順序キュー１００ｂから第１の命令Ｉ１を受け取った場合、
第１の命令のポート番号を第１命令セレクタ１００ｄに送出してセレクタを制御し、信号線１３０ａ、１４０ａを介して対応する命令をエンコーダに送出する。同時に、第２の命令を発行しないことを第２命令セレクタ１００ｅに送出してセレクタを制御し、信号線１３０ｂを"00"として、信号線１３０ｂ、１４０ｂからは命令を送出しない。この時、第１命令に対応するエントリを命令順序キュー１００ｂから削除すると共に、アクノリッジ信号線１１５ａ〜１１５ｄの当該ポートに対応する信号線を”１”として、命令の発行を完了する。
【００４２】
（４）第１及び第２の命令を発行しないことを第１命令セレクタ１００ｄ及び第２命令セレクタ１００ｅに送出してセレクタを制御し、信号線１３０ａ及び１３０ｂを"00"として、信号線１３０ｂ、１４０ｂから命令を送出しない。この時、命令順序キュー１００ｂからのエントリの削除を行なわず、アクノリッジ信号線１１５ａ〜１１５ｄは全て”０”とする。
【００４３】
調停回路１００を以上の様に構成することで、ポートＡ〜ポートＤから送出される命令を、異なるタイミングで到達するものに対しては前後の順序を維持し、同一のタイミングで到達するものに対してはラウンドロビンで順序を決定して命令を受信側論理回路側に送出することができる。受信側論理回路が、送信側論理回路の発行する命令の順序に関係なく命令を受け付ける場合の構成としては、例えば命令選択回路１００ｃが命令順序キュー１００ｂから任意の１〜２命令を抽出し、発行する方式が考えられる。
【００４４】
＜エンコーダの動作＞
エンコーダ１０２は、調停回路１００から選択命令ライン１及び選択命令ライン２を通して命令の組を受けると、受け取った命令の種類と数に応じて転送命令（図３に示す）を生成し、デコーダ１０４に対して発行する。
【００４５】
図２９にエンコーダ１０２の構成を示す。エンコーダ１０２は、選択命令ライン１及び選択命令ライン２の命令コードを受けて転送コードを生成する転送命令生成回路１０２ａ、転送命令の種類によって転送データ部下位３２ビットに選択命令ライン１の命令データ部下位３２ビット叉は選択命令ライン２の命令データ部のいずれかを送出するセレクタ１０２ｂからなる。以下に、エンコーダ１０２の動作を示す。
【００４６】
（１）調停回路１００から命令Ｉ０を２つ受けた場合
転送命令生成回路１０２ａは、転送コード信号線１５０に"10"を出力する。また、転送命令生成回路１０２ａは、命令データ選択線を用いてセレクタ１０２ｂを"1"側に選択し、転送データ信号線１６０の下位３２ビットを命令データ信号線１４０ｂの値とする。転送データ信号線１６０の上位３２ビットは命令データ信号線１４０ａの値とする。これにより、命令Ｉ０を２つ転送する転送命令Ｔ１を生成し、デコーダに対して発行できる。
【００４７】
（２）（１）以外の場合で、調停回路１００から命令コード１３０ａを通して命令Ｉ０を受けた場合
転送命令生成回路１０２ａは、転送コード信号線１５０に"01"を出力する。また、転送命令生成回路１０２ａは、命令データ選択線を用いてセレクタ１０２ｂを"0"側に選択し、転送データ信号線１６０の下位３２ビットを命令データ信号線１４０ａ下位３２ビットの値とする。転送データ信号線１６０の上位３２ビットは命令データ信号線１４０ａの値とする。これにより、命令Ｉ０を１つ転送する転送命令Ｔ０を生成し、デコーダに対して発行できる。
【００４８】
（３）調停回路１００から命令コード１３０ａを通して命令Ｉ１を受けた場合
転送命令生成回路１０２ａは、転送コード信号線１５０に"11"を出力する。また、転送命令生成回路１０２ａは、命令データ選択線を用いてセレクタ１０２ｂを"0"側に選択し、転送データ信号線１６０の下位３２ビットを命令データ信号線１４０ａ下位３２ビットの値とする。転送データ信号線１６０の上位３２ビットは命令データ信号線１４０ａの値とする。これにより、命令Ｉ０を１つ転送する転送命令Ｔ２を生成し、デコーダに対して発行できる。
【００４９】
（４）上記（１）〜（３）の場合
転送コード信号線１５０に"00"を出力し、転送命令を発行しない。
【００５０】
＜デコーダの動作＞
デコーダ１０４は、エンコーダ１０２から転送ラインを通して転送命令を受信すると、転送命令の転送コード部を解析し、解析結果に従って命令コードを復元するとともに、転送データ部から命令コード部を引き出す。そして、復元した命令コードと引き出した命令データ部を合わせて命令を復元し、エンコーダ部から受信側論理回路へ復元した命令を送出する。
【００５１】
図３０にデコーダ１０４の構成を示す。命令復元回路１０４ａは、転送命令の転送コード部１５０を受け、送出された命令１〜２個に復元し、第１の命令の命令コード部を信号線１７０ａ、第２の命令の命令コード部を１７０ｂに送出する。第１の命令の命令データ部は、３２ビットを転送する命令Ｉ０の場合、転送データ部上位３２ビットを用いて転送される。６４ビットを転送する命令Ｉ１の場合、転送データ部６４ビットの全てを用いて転送される。よって、転送データ信号線１６０は、ポートＥの命令データ信号線１８０ａに直結する。第２の命令の命令データ部は、転送命令Ｔ１の場合にのみ転送データ部下位３２ビットを用いて転送される。よって、転送データ信号線１６０の下位３２ビットはポートＦの命令データ部３２ビット（１８０ｂ）として使用される。
【００５２】
転送命令の転送コード部と復元する命令の関係は次のようになる。
（１）エンコーダ１０２から転送命令Ｔ２を受けた場合
命令コード信号線１７０ａを"11"、命令データ信号線１８０ａを転送データ信号線１６０の値とし、入力側論理回路に対して命令Ｉ１を発行する。命令コード信号線１７０ｂは"00"とし、ポートＦからは命令を発行しない。
【００５３】
（２）エンコーダ１０２から転送命令Ｔ１を受けた場合
命令コード信号線１７０ａ及び命令コード信号線１７０ｂを"10"、命令データ信号線１８０ａを転送データ信号線１６０の上位３２ビット、命令データ信号線１８０ｂを転送データ信号線１６０の下位３２ビットとし、入力側論理回路に対して命令Ｉ０を２つ発行する。入力側論理回路はポートＥ上の命令を１つ目の命令、ポートＦ上の命令を２つ目の命令として処理する。
【００５４】
（３）エンコーダ１０２から転送命令Ｔ０を受けた場合
命令コード信号線１７０ａを"10"、命令データ信号線１８０ａを転送データ信号線１６０の上位３２ビットの値とし、入力側論理回路に対して命令Ｉ０を発行する。命令コード信号線１７０ｂは"00"とし、ポートＦからは命令を発行しない。
【００５５】
図３１に本実施例の論理回路接続装置の動作を示す。図３１では、サイクルｔ０でポートＡが最優先であり、サイクルｔ０でポートＡが命令Ｉ０（Ｉ０−０１）、ポートＣが命令Ｉ１（Ｉ１−０２）、サイクルｔ１でポートＤ、ポートＢが命令Ｉ０（それぞれＩ０−０３、Ｉ０−０４）、サイクルｔ２でポートＡが命令Ｉ１（Ｉ１−０５）、サイクルｔ３でポートＣ及びポートＤが命令Ｉ０（Ｉ０−６、Ｉ０−７）を発行している。
【００５６】
各サイクルの論理回路接続装置の動作は以下の通りである。
【００５７】
（１）サイクルｔ０
命令Ｉ０−０１がポートＡから、命令Ｉ１−０２がポートＣから入力される。調停回路１００内で、命令順序決定回路１００ａが命令Ｉ０−０１、命令Ｉ１−０２の順に命令を順序付け、命令順序キュー１００ｂに送出する。命令選択回路１００ｃは命令順序キュー１００ｂが空のため、命令順序決定回路１００ａの命令Ｉ０−０１、Ｉ１−０２を受け、命令Ｉ０−０１の発行を決定する。この結果、命令Ｉ０−０１は受信側論理回路に送出され、ポートＡはアクノリッジ信号線１１５ａにより命令の受理を通知される。この時、命令順序キュー１００ｂは命令Ｉ０−０１が削除されるため、命令Ｉ１−０２のみを格納する。命令列の最後のポートはＣのため、次サイクルの最優先ポートはＤとなる。
【００５８】
（２）サイクルｔ１
命令Ｉ０−０３及び命令Ｉ０−０４がポートＤから入力される。調停回路内で命令順序決定回路１００ａが命令Ｉ０−０３、命令Ｉ０−０４の順に命令を順序付け、命令順序キュー１００ｂに送出する。命令選択回路１００ｃは、命令順序キュー１００ｂに命令Ｉ１−０２が格納されているため、命令Ｉ１−０２の発行を決定する。この結果、命令Ｉ１−０２は受信側論理回路に送出され、ポートＣはアクノリッジ信号線１１５ｃにより命令の受理を通知される。この時、命令順序キュー１００ｂは命令Ｉ１−０２が削除され、命令Ｉ０−０３、命令Ｉ０−０４を格納する。命令列の最後のポートはＢのため、次サイクルの最優先ポートはＣとなる。
【００５９】
（３）サイクルｔ２
命令Ｉ１−０５がポートＡから入力される。命令順序決定回路１００ａは命令Ｉ１−０５を、命令順序キュー１００ｂに送出する。命令選択回路１００ｃは、命令順序キュー１００ｂに命令Ｉ０−０３、命令Ｉ０−０４が格納されており、これらは同時に転送可能であるため、命令Ｉ０−０３と命令Ｉ０−０４の発行を決定する。この結果、命令Ｉ０−０３及び命令Ｉ０−０４は受信側論理回路に送出され、ポートＢ及びポートＤはアクノリッジ信号線１１５ｂ、１１５ｄにより命令の受理を通知される。この時、命令順序キュー１００ｂは命令Ｉ０−０３、命令Ｉ０−０４が削除され、命令Ｉ１−０５を格納する。命令列の最後のポートはＡのため、次サイクルの最優先ポートはＢとなる。
【００６０】
（４）サイクルｔ３
命令Ｉ０−０６がポートＣから入力される。命令順序決定回路１００ａは命令Ｉ０−０６を、命令順序キュー１００ｂに送出する。命令選択回路１００ｃは、命令順序キュー１００ｂに命令Ｉ１−０５が格納されているため、命令Ｉ１−０５の発行を決定する。この結果、命令Ｉ１−０５は受信側論理回路に送出され、ポートＡはアクノリッジ信号線１１５ａにより命令の受理を通知される。この時、命令順序キュー１００ｂは命令Ｉ１−０５が削除され、命令Ｉ０−０６を格納する。
【００６１】
（５）サイクルｔ４
命令Ｉ０−０７がポートＤから入力される。命令順序決定回路１００ａは命令Ｉ０−０７を、命令順序キュー１００ｂに送出する。命令選択回路１００ｃは、命令順序キュー１００ｂに命令Ｉ０−０６が格納されており、命令Ｉ０−０７と同時に転送化のであるため、命令Ｉ０−０６及び命令Ｉ０−０７の発行を決定する。この結果、命令Ｉ０−０６及び命令Ｉ０−０７は受信側論理回路に送出され、ポートＡはアクノリッジ信号線１１５ｃ及び１１５ｄにより命令の受理を通知される。この時、命令順序キュー１００ｂは命令Ｉ０−０６及び命令Ｉ０−０７が削除される。
【００６２】
以上に示すように、送信側論理回路のポートＡ〜ポートＤの複数のポートからデータ量が小さい命令Ｉ０が同時に出力された場合、１サイクルに２つの命令Ｉ０を受信側論理回路に送出できる。また、複数のポートから異なるサイクルに命令Ｉ０が出力された場合であっても、転送ラインを他の命令の転送に使用した結果として第１の命令Ｉ０が命令順序キュー１００ｂで待たされ、次のサイクルでさらに命令Ｉ０が到着した場合においても、これら２つの命令Ｉ０を１サイクルで受信側論理回路に送出できる。よって、従来、命令Ｉ０は１サイクルに１命令のみしか転送できなかったが、本発明を適用することにより命令Ｉ０を１サイクルに最大２命令転送可能となる。これにより、図３１の例では従来転送に７サイクル必要であった命令列を、５サイクルで転送することができる。
【００６３】
以上が本発明の実施例１である。
【００６４】
本実施例では、送信側論理回路から受信側論理回路に送出する命令の種類によって生じる転送データ部の空きを利用して複数の命令を１転送命令にまとめて転送し、転送データを伝送する信号線を効率良く利用することができる。
【００６５】
（実施例１ａ）
以下に本発明の実施例１ａを図２８を用いて説明する。本実施例は実施例１の変形であるため、相違点についてのみ説明する。本実施例は、実施例１の調停回路１００内において命令コード及び命令データをバッファリングする点のみが実施例１と異なる。
【００６６】
図２８に調停回路内に命令をバッファリングする調停回路の構成を示す。
【００６７】
本実施例では、実施例１の送信側論理回路のポートＡ〜ポートＤから送出される命令は、それぞれ一旦命令バッファ１００ｆ〜１００ｉに格納される。命令の格納時に各命令バッファは対応するアクノリッジ信号線を”１”とし、命令を受理したことを送信側論理回路に伝える。ただし、命令バッファの空きが無い場合、命令を格納することができないため、命令を受理しない。
【００６８】
図２８の命令順序決定回路１００ａ、命令順序キュー１００ｂ、命令選択回路１００ｃ、第１命令セレクタ１００ｄ、第２命令セレクタ１００ｅの構成は実施例１と同じである。命令選択回路１００ｃの出力するアクノリッジ信号線１１５ａ’〜１１５ｄ’は実施例１と異なり、それぞれ命令バッファ１００ｆ〜１００ｉ内に保持された命令の発行完了を示し、命令バッファ内のエントリの削除に使用される。
【００６９】
調停回路内に命令をバッファリングする構成としたことで、命令をバッファリングしない構成と比較し受信側論理回路に命令が到達するまでにかかるサイクル数が増加する。しかし、命令をバッファリングしない構成では、出力側論理回路が命令を発行してから命令の受理を行なうまでの処理を１サイクルに納めなければならないが、本構成では調停回路内の命令バッファから命令を発行し、アクノリッジ信号線１１５ａ’〜１１５ｄ’を用いて命令バッファ内のエントリを削除するまでを１サイクルに納めればよい。このため、実施例１と比較してサイクル時間を短縮することができる。
【００７０】
（実施例２）
以下に、本発明の第２の実施例を図４〜図５を用いて説明する。本実施例は実施例１の変形であるため、相違点についてのみ説明する。本実施例は、調停回路１００及びエンコーダ１０２の代わりに命令コードの調停回路・エンコーダ２００、命令データ上位３２ビットの調停回路２０２、命令データ下位３２ビットの調停回路２０３を設けた点、及び、デコーダ１０４の代わりに転送コードのデコーダ２０４を設け、転送データは調停回路２０２及び調停回路２０３の出力をそのまま命令データとして使用する点が異なる。
【００７１】
図４は本発明に係る論理回路接続装置を示す。本実施例の論理回路接続装置では、送信側論理回路のポートＡ〜ポートＤから送信される命令の命令コード部を調停回路・エンコーダ２００、調停回路２０２及び調停回路２０３に、命令データ部の上位３２ビットを調停回路２０２、命令データ部の下位３２ビットを調停回路２０３に入力する。
【００７２】
図５に送信側論理回路のポートＡ〜ポートＤから出力される命令を示す。本実施例では、３２ビットのデータ転送を行なう命令Ｉ０において、送信側論理回路が転送データを命令データ部の上位３２ビット及び下位３２ビットの双方に出力する点が実施例１と異なる。これにより、調停回路２０２は全ての命令Ｉ０の命令データ部３２ビット及び全ての命令Ｉ１の命令データ部上位３２ビットを受け取る。また、調停回路２０２は全ての命令Ｉ０の命令データ部３２ビット及び全ての命令Ｉ１の命令データ部下位３２ビットを受け取る。
【００７３】
調停回路・エンコーダ２００は、ポートＡ〜ポートＤの命令の命令コード部を受けて、入力側論理回路に送出する命令の組を選択し、図３に示す命令の組に対応する転送コードを生成してデコーダ２０４に送出する。この時、選択した命令に対応するポートの命令アクノリッジ信号線２１５ａ〜２１５ｄを"1"とし、出力側論理回路に命令を出力したことを伝える。
【００７４】
調停回路２０２は、ポートＡ〜ポートＤの命令の命令コード部及び命令データ部の上位３２ビットを受けて、命令コード部から入力側論理回路に送出する命令の組を選択し、図３に示す命令データ部を選択して、転送データ線上位２６０に送出する。命令Ｉ０を２つ送出する場合、調停回路２０２は１つ目の命令Ｉ０の命令データ部を送出し、２つ目の命令Ｉ０の命令データ部は破棄する。
【００７５】
調停回路２０３は、ポートＡ〜ポートＤの命令の命令コード部及び命令データ部の下位３２ビットを受けて、命令コード部から入力側論理回路に送出する命令の組を選択し、図３に示す命令データ部を選択して、転送データ線下位２６１に送出する。命令Ｉ０を２つ送出する場合、調停回路２０２は２つ目の命令Ｉ０の命令データ部を送出し、１つ目の命令Ｉ０の命令データ部は破棄する。
【００７６】
本実施例は、これらの調停回路・エンコーダ２００、調停回路２０２及び調停回路２０３が、ポートＡ〜ポートＤの命令の命令コード部の中から同一の方法で入力側論理回路に送出する命令の組を選択することで、それぞれが独立に動作して正しく命令を転送できる。なお、動作タイミングは同一のクロック等の入力により一致させる。
【００７７】
デコーダ２０４は、調停回路・エンコーダ２００から転送コード線を通して転送命令を受け、以下に示すように命令の組を復元し、入力側論理回路に対して発行する。
【００７８】
（１）調停回路・エンコーダ２００から転送命令Ｔ２を受けた場合
命令コード信号線２７０ａを"11"とし、入力側論理回路に対して命令Ｉ１を発行する。ポートＦからは命令を発行しない。
【００７９】
（２）調停回路・エンコーダ２００から転送命令Ｔ１を受けた場合
命令コード信号線２７０ａ及び命令コード信号線２７０ｂを"10"とし、入力側論理回路に対して命令Ｉ０を２つ発行する。
【００８０】
（３）調停回路・エンコーダ２００から転送命令Ｔ０を受けた場合
命令コード信号線２７０ａを"10"とし、入力側論理回路に対して命令Ｉ０を１つ発行する。ポートＦからは命令を発行しない。
【００８１】
入力側論理回路は、命令コードＥ及び命令コードＦが命令Ｉ０を示す場合はそれぞれ転送データ上位３２ビット及び転送データ下位３２ビットを命令データ部として使用する。命令コードＥが命令Ｉ１を示す場合は、転送データ上位３２ビットを命令データ上位３２ビット、転送データ下位３２ビットを命令データ下位３２ビットとして使用する。
【００８２】
以上が本発明の実施例２である。本実施例により、例えば出力側論理回路を命令コード部及び複数の命令データ部を処理する複数のＬＳＩに分割した場合において、転送するデータ量が小さい命令は、同時に複数転送することができ、論理回路接続装置の転送性能を従来と比較し高めることができる。
【００８３】
（実施例３）
以下に本発明の第３の実施例を図６を用いて説明する。本実施例は実施例１の変形であるため、相違点についてのみ説明する。本実施例は、論理回路接続装置で接続する論理回路が、命令の入力及び出力の双方を行なう点、及び、論理回路間の接続にバスを使用する点が実施例１と異なる。
【００８４】
図６は本実施例に係る論理回路接続装置をユニット間の接続に適用したものを示す。
【００８５】
本実施例では、転送命令の送信及び受信を行なうユニット３００ａと３００ｂが、転送コードバス３５０と転送データバス３６０からなるバスに結合される。ユニット３００ａ及び３００ｂは、論理回路３１０ａ及び３１０ｂ、調停回路・エンコーダ３２０ａ及び３２０ｂ、バス調停回路３４０ａ及び３４０ｂ、デコーダ３３０ａ及び３３０ｂからなる。論理回路接続装置は、調停回路・エンコーダ３２０ａ及び３２０ｂ、バス調停回路３４０ａ及び３４０ｂ、デコーダ３３０ａ及び３３０ｂ、転送コードバス３５０、転送データバス３６０からなる。
【００８６】
論理回路３１０ａ及び３１０ｂは、論理回路接続装置を介して相互に命令の入出力を行なう。論理回路３１０ａから論理回路３１０ｂに命令を転送する場合、論理回路３１０ａの発行する命令は、調停回路・エンコーダ３２０ａ、バス調停回路３４０ａ、転送コードバス３５０及び転送データバス３６０、バス調停回路３４０ｂ、デコーダ３３０ｂを経由して論理回路３１０ｂに到達する。
【００８７】
調停回路・エンコーダ３２０ａ及び３２０ｂは、論理回路３１０ａ及び３１０ｂが出力ポートＡ〜ポートＢに出力する命令からバスに出力する命令の組を選択し、転送命令に変換する。生成した転送命令は自ユニット内のバス調停回路３４０ａ叉は３４０ｂに伝送される。論理回路３１０ａ及び３１０ｂで使用する命令の形式は、実施例１の図２の通りである。また、論理回路接続装置内で使用する転送命令の形式は、実施例１の図３の通りである。命令の組から転送命令を生成する方法は、実施例１の通りである。
【００８８】
バス調停回路３４０ａ及び３４０ｂは、送信する転送命令を受けるとバス権の獲得を要求する。この時、他ユニットのバス調停回路３４０ａ叉は３４０ｂとの間でバス権を調停し、バス権を獲得したバス調停回路が受信側のバス調停回路に対して転送命令を送信する。バス権の調停には従来からラウンドロビン等の方法が提案されているが、本発明は、バス権の調停方法に係わらず有効である。
【００８９】
デコーダ３３０ａ及び３３０ｂは、バス調停回路３４０ａ叉は３４０ｂが受信した転送命令を命令に復元し、論理回路３１０ａ叉は３１０ｂに出力する。転送命令から命令を復元する方法は、実施例１の通りである。
【００９０】
本実施例においては、調停回路・エンコーダ３２０ａ及び３２０ｂ内のバッファの有無、バス調停回路３４０ａ及び３４０ｂのバッファの有無の種々の実現方法が考えられる。経路上にバッファを設けてステージ数を増やすと命令伝達のレイテンシが増加する。一方、ステージ数を減らすとバッファ間の論理ディレイが長くなり、動作サイクルが長くなる。実施例１ａに示した方法と同様の方法を用いて調停回路３２０ａ及び３２０ｂ内にポートＡ及びポートＢに対応する命令バッファを設けた場合、転送命令は命令バッファ内の命令を組み合わせて生成可能である。このため、転送命令はポートＡ及びポートＢから異なるサイクルで出力された任意の命令の中から組み合わせることができる。バス調停回路３４０ａ及び３４０ｂ内に転送命令バッファを設ければ、バス権を獲得できない場合においても転送命令バッファに空きがある限り、調停回路・エンコーダ３２０ａ叉は３２０ｂの転送命令生成を継続することができる。調停回路・エンコーダ３２０ａ及び３２０ｂ、バス調停回路３４０ａ及び３４０ｂ内のバッファの有無により論理回路接続装置の複数命令を転送できる可能性及びステージ数は異なるが、本実施例は各部のバッファの有無に係わらず有効である。
【００９１】
以上が本発明の実施例３である。本実施例により、バスにより結合されたユニット間で、転送するデータ量が小さい命令Ｉ０は１サイクルに２つ転送することができ、論理回路接続装置の転送性能を従来と比較し高めることができる。
【００９２】
（実施例４）
以下に、本発明の第４の実施例を図７〜１３を用いて説明する。図７は本発明に係る論理回路接続装置を用いた並列計算機を示す。図７の並列計算機は、プロセッサノード１０００ａ及び１０００ｂ、メモリノード１０８０が転送コードバス１０５０及び転送データバス１０６０からなる転送バスに接続された構成をとる。本実施例の変形として、プロセッサノード内にメモリを分散配置することも可能であるが、本発明は、いずれの構成においても有効である。
【００９３】
プロセッサノード１０００ａ及び１０００ｂ内では、それぞれプロセッサ１０１０ａ及び１０１０ｂがプロセッサバスを介して論理回路接続装置の調停回路・エンコーダ１０２０ａ及び１０２０ｂ、デコーダ１０３０ａ及び１０３０ｂと接続される。調停回路・エンコーダ１０２０ａ及び１０２０ｂ、デコーダ１０３０ａ及び１０３０ｂはバス調停回路１０４０ａ及び１０４０ｂと接続される。また、プロセッサ１０１０ａ及び１０１０ｂは、キャッシュメモリ１０１５ａ及び１０１５ｂとキャッシュ専用バスで接続される。
【００９４】
メモリノード１０８０内では、メモリ１０７０が調停回路・エンコーダ１０２０ｃ及びデコーダ１０３０ｃと接続される。調停回路・エンコーダ１０２０ｃ及びデコーダ１０３０ｃは、バス調停回路１０４０ｃと接続される。
【００９５】
図８に、本実施例の並列計算機における各プロセッサノード１０００ａ及び１０００ｂ上のキャッシュ１０１５ａ及び１０１５ｂのキャッシュエントリの状態の種類を示す。
【００９６】
INVALID状態（I状態）は、当該キャッシュエントリに有効なデータを保持していないことを示す。
【００９７】
CLEAN状態（C状態）は、当該キャッシュエントリにメモリ１０７０と同じデータを保持していることを示す。複数のプロセッサノードが同一のラインをC状態でキャッシングできる。
【００９８】
MODIFIED状態（M状態）は、当該キャッシュエントリに最新のデータを保持していることを示す。この時、メモリ１０７０上の当該ラインは古いデータを保持している。同一のラインは、並列計算機内の１つのプロセッサノードのみがM状態で保持することができ、他のプロセッサノードは当該ラインをキャッシュ上に保持できない。
【００９９】
あるプロセッサ（１０１０ａとする）がメモリを読み出すと、当該メモリラインがキャッシュエントリにキャッシングされ、このキャッシュエントリはC状態となる。この時、異なるプロセッサ（１０１０ｂとする）が同一メモリラインを読み出すと、当該メモリラインはプロセッサ１０１０ｂの対応するキャッシュエントリにキャッシングされ、キャッシュエントリはC状態となる。これにより、複数のプロセッサが読み出したデータをキャッシングすることができる。
【０１００】
ここで、あるプロセッサＡが当該メモリラインに書込みを行なうと、バスを介して他のプロセッサの対応するキャッシュラインを無効化し、I状態とする。そして、メモリラインを読み出しキャッシュエントリにキャッシングして、データを書き込む。この時、当該キャッシュエントリをM状態とする。他のプロセッサがM状態のキャッシュエントリに対応するメモリラインをアクセスすると、当該キャッシュエントリがメモリに書き戻されると共にメモリデータとして使用される。この動作により、全てのプロセッサのキャッシュの一貫性を保つことができる。
【０１０１】
図９に、本実施例の並列計算機のプロセッサ１０１０ａ及び１０１０ｂ、または、メモリ１０７０が発行する命令の種類を示す。LD要求は、プロセッサがメモリ読み出しを行なうときに、転送バスにメモリ読み出し要求を発行する命令である。RDI要求は、プロセッサがメモリ書込みを行なうために、他のプロセッサノードの当該キャッシュラインを無効化すると共に当該キャッシュラインのデータを読み出す命令である。ライン読み出しデータは、LD要求及びRDI要求を受けて、メモリが要求を発行したプロセッサにメモリの内容を転送する命令である。WB要求は、プロセッサノードが外部からのLD要求又はRDI要求に対応するキャッシュラインをM状態で保持している時、または、自プロセッサのLD要求又はRDI要求発行時にキャッシュエントリに空きがなく、M状態のキャッシュラインを置き換える時に、プロセッサノードが当該キャッシュラインの内容をメモリに書き戻す命令である。
【０１０２】
本実施例では、ライン読み出しデータ及びLD要求叉はRDI要求に伴うWB要求の順序は、LD要求及びRDI要求の順序と一致する。バス調停回路１０４０ａ〜１０４０ｃは、バス上に出力された全てのLD要求及びRDI要求の発行順を記録しておき、他のバス調停回路からライン読み出しデータや対応するWB要求が発行された時に記録を消去する。当該バス調停回路がライン読み出しデータや対応するWB要求によってデータを返送する順番が来ると、バス権を獲得し、データを返送する。バス権の調停には種々の方法が存在するが、本発明は、バス権の調停方法に係わらず有効である。LD要求叉はRDI要求の順序を保証しない場合、命令の順序保証の制約によって生じる待ち時間を削減できる代わりに、各命令の対応を示すための識別子を命令に付加する必要が生じる。本発明は、命令に識別子を付加するかどうかに係わらず有効である。
【０１０３】
図１０に、本実施例の並列計算機のプロセッサ１０１０ａがメモリ読み出し命令（LD命令）を実行する場合の動作を示す。
【０１０４】
プロセッサ１０１０ａは、LD命令実行時にキャッシュ１０１５ａに読み出し対象データが保持されているか検査する（Ｌ１）。キャッシュ１０１５ａ内に対象データが保持されている場合、プロセッサ１０１０ａはキャッシュ１０１５ａから対象データを読み出し使用する（Ｌ２）。キャッシュ１０１５ａ内に対象データが保持されていない場合かつ、キャッシュ１０１５ａ内に空エントリがない場合、置き換えるキャッシュラインを決定する。置き換えるキャッシュラインがM状態の場合、WB要求を発行し、置き換えるキャッシュラインの内容をメモリに書き込む（以上Ｌ０）。キャッシュ１０１５ａ内に対象データが保持されていない場合かつキャッシュ１０１５ａ内に空エントリがある場合、または、Ｌ０の動作を行なった場合、プロセッサ１０１０ａは転送バスに対してLD要求を発行する（Ｌ３）。
【０１０５】
転送バスに接続された全てのプロセッサノード１０００ａ〜１０００ｂとメモリ１０８０は、プロセッサ１０１０ａのLD要求を受ける。全プロセッサノード上のプロセッサは、自プロセッサのキャッシュ内に対象データを含むキャッシュラインをM状態で保持しているか検査する（Ｌ４）。
【０１０６】
対象データがM状態で保持されている場合、M状態のキャッシュラインを保持するプロセッサはWB要求を転送バスに発行すると共に、当該キャッシュラインの状態をCLEANとする（Ｌ５）。メモリノード１０８０は転送バス上のWB要求を受け、WB要求対象のラインをメモリ１０７０に書き込む（Ｌ６）。プロセッサノード１０００ａは、転送バス上のWB要求を受け、WB要求対象のラインをキャッシュ１０１５ａに書込み当該キャッシュラインの状態をCLEANにすると共に、ライン内の対象データをLD要求に対する読み出しデータとして使用する（Ｌ６）。
【０１０７】
Ｌ４において、全てのプロセッサノード上のキャッシュに対象データを含むM状態のキャッシュラインが存在しない場合、メモリノード１０８０はLD要求を受けて対象ラインを読み出し、転送バスを介してプロセッサノード１０００ａにライン読み出しデータを転送する（Ｌ７）。プロセッサ１０１０ａは、ライン読み出しデータをキャッシュ１０１５ａに書込み当該キャッシュラインの状態をCLEANにすると共に、ライン内の対象データをLD要求に対する読み出しデータとして使用する（Ｌ８）。
【０１０８】
図１１に、本実施例の並列計算機のプロセッサ１０１０ａがメモリ書き込み命令（ST命令）を実行する場合の動作を示す。
【０１０９】
プロセッサ１０１０ａは、ST命令実行時にキャッシュ１０１５ａに書込み対象データが保持されているか検査する（Ｓ１）。キャッシュ１０１５ａ内に対象データが保持されており、当該ラインがM状態の場合、プロセッサ１０１０ａはキャッシュ１０１５ａの当該ラインに対象データを書き込む（Ｓ２）。キャッシュ１０１５ａ内に対象データが保持されていない場合かつ、キャッシュ１０１５ａ内に空エントリがない場合、置き換えるキャッシュラインを決定する。置き換えるキャッシュラインがM状態の場合、WB要求を発行し、置き換えるキャッシュラインの内容をメモリに書き込む（以上Ｓ０）。キャッシュ１０１５ａ内に対象データが保持されていない場合かつキャッシュ１０１５ａ内に空エントリがある場合、または、Ｓ０の動作を行なった場合、プロセッサ１０１０ａは転送バスに対してRDI要求を発行し、対象データを含むキャッシュラインを読み出すと共に他プロセッサノード上の当該キャッシュラインを無効化する（Ｓ３）。
【０１１０】
転送バスに接続された１０００ａを除く全てのプロセッサノードとメモリ１０８０は、プロセッサ１０１０ａのRDI要求を受ける。全プロセッサノード上のプロセッサは、自プロセッサのキャッシュ内に対象データを含むキャッシュラインをM状態で保持しているか検査する（Ｓ４）。
【０１１１】
対象データをM状態で保持しているプロセッサはWB要求を転送バスに発行すると共に、当該キャッシュラインの状態をI状態とする（Ｓ５）。プロセッサ１０１０ａは、転送バス上のWB要求を受けてST命令の書込みデータ部を更新し、キャッシュ１０１５ａに書き込む。この時、キャッシュ１０１５ａの当該キャッシュラインをM状態とする（Ｓ６）。
【０１１２】
Ｓ４の動作時に対象データを含むキャッシュラインをM状態で保持しているプロセッサが存在しない場合、当該キャッシュラインを保持する全プロセッサはキャッシュラインの状態をI状態に変更する（Ｓ７）。また、メモリ１０７０は、Ｓ３の動作時に発行されたRDI要求を受け、対象ラインを読み出す（Ｓ８）。ST命令を発行したプロセッサは、ライン読み出しデータを受けてST命令の書込みデータ部を更新し、キャッシュ１０１５ａに書き込む。この時、キャッシュ１０１５ａの当該キャッシュラインをM状態とする（Ｓ９）。
【０１１３】
図１２に本実施例の並列計算機で使用する転送命令の一覧を示す。本実施例の並列計算機では、図９に示した命令のうち命令データとしてアドレス32bitのみを転送するLD要求とRDI要求を同時に転送可能とする。このため、LD要求とRDI要求の全ての組み合わせに対応する転送命令Ｔ１〜Ｔ６を用意する。WB要求は、１サイクル目にアドレス32bitを転送し、２サイクル目から５サイクル目にデータ256bitを転送する。１サイクル目の転送データ部に32bitの空きができるが、本実施例の並列計算機ではWB要求は他の命令と同時に転送しないこととし、WB要求とLD要求、RDI要求等を同時に転送する転送命令は用意しない。
【０１１４】
プロセッサノード２つで構成した本実施例の並列計算機において、プロセッサノード０がアドレスＡ０及びＡ１、プロセッサノード１がアドレスＡ２及びＡ３にLD要求を発行した場合の動作を図１３に示す。
【０１１５】
時刻ｔ０で、プロセッサノード０がアドレスＡ０及びＡ１へのLD要求を発行する。２つのLD要求は、プロセッサノード内の調停回路・エンコーダ３２０ａで転送命令Ｔ２に変換され、１サイクルでプロセッサノード０及びメモリノードに伝送される。
【０１１６】
時刻ｔ１で、プロセッサノード１がアドレスＡ２及びＡ３へのLD要求を発行する。２つのLD要求は、プロセッサノード内の調停回路・エンコーダ３２０ｂで転送命令Ｔ２に変換され、１サイクルでプロセッサノード１及びメモリノードに伝送される。
【０１１７】
ここでは、プロセッサノード１のキャッシュ内にアドレスＡ０及びＡ１のデータが保持されていなく、また、プロセッサノード０のキャッシュ内にアドレスＡ２及びＡ３のデータが保持されていない場合を示す。従って、プロセッサノード０及び１はキャッシュラインの書き戻しを行なわず、全LD要求に対する返答はメモリノードが行なう。
【０１１８】
時刻ｔ２〜ｔ５では、プロセッサノード０が転送バスを通してアドレスＡ０のLD要求に対するライン読み出しデータを受ける。
【０１１９】
時刻ｔ６〜ｔ９では、プロセッサノード０が転送バスを通してアドレスＡ１のLD要求に対するライン読み出しデータを受ける。
【０１２０】
時刻ｔ１０〜ｔ１３では、プロセッサノード１が転送バスを通してアドレスＡ２のLD要求に対するライン読み出しデータを受ける。
【０１２１】
時刻ｔ１４〜ｔ１７では、プロセッサノード０が転送バスを通してアドレスＡ３のLD要求に対するライン読み出しデータを受ける。
【０１２２】
以上が、第４の実施例である。本実施例により、バスにより結合された並列計算機において、各プロセッサノードは転送するデータ量が小さいLD要求命令およびRDI要求命令を同時に複数転送することができ、転送バスの転送性能を従来と比較し高めることができる。
【０１２３】
（実施例５）
以下に、本発明の第５の実施例を図１４〜１６を用いて説明する。本実施例は実施例４の変形であるため、相違点についてのみ説明する。本実施例は、並列計算機の各ノードを転送バスで結合する代わりにネットワークで結合することとした点、及び、命令及び転送命令に識別子を付加し、命令及び転送命令を順不同に処理できる点が実施例４と異なる。
【０１２４】
図１４は、本発明に係る並列計算機を示す。
【０１２５】
プロセッサノード４００ａ及び４００ｂ内では、それぞれプロセッサ４１０ａ及び４１０ｂがプロセッサバスを介して論理回路接続装置の調停回路・エンコーダ４２０ａ及び４２０ｂ、デコーダ４３０ａ及び４３０ｂと接続される。調停回路・エンコーダ４２０ａ及び４２０ｂ、デコーダ４３０ａ及び４３０ｂはネットワーク４５０と接続される。また、プロセッサ４１０ａ及び４１０ｂは、キャッシュメモリ４１５ａ及び４１５ｂとキャッシュ専用バスで接続される。
【０１２６】
メモリノード４８０ｃ及び４８０ｄ内では、それぞれメモリ４７０ｃ及び４７０ｄが調停回路・エンコーダ４２０ｃ及び４２０ｄ、デコーダ４３０ｃ及び４３０ｄと接続される。調停回路・エンコーダ４２０ｃ及び４２０ｄ、デコーダ４３０ｃ及び４３０ｄは、ネットワーク４５０と接続される。
【０１２７】
本実施例では、プロセッサノード及びメモリノードの数をそれぞれ４とするが、本発明はプロセッサノード及びメモリノードの数に依存せず有効である。また、本実施例の変形として、プロセッサノード内にメモリを分散配置することも可能であるが、本発明は、いずれの構成においても有効である。
【０１２８】
並列計算機で使用する命令、転送命令、キャッシュの状態及び命令発行時の動作は、命令及び転送命令に識別子（ＩＤ）が付加される点を除いて実施例４と同じである。本実施例では命令の識別子として、LD要求叉はRDI要求叉は置き換えに伴うWB要求を発行したプロセッサノードの番号２ビットと、プロセッサノード内で一意に定めた発行中の要求の番号２ビットの計４ビットからなる識別子を使用する。また、転送命令の識別子は８ビットとし、上位４ビットが１つめの命令の識別子、下位４ビットが２つめの命令の識別子とする。本発明は、識別子の値の設定方法に係わらず有効である。
【０１２９】
図１５に、ネットワーク４５０の内部の構造を示す。セレクタ５００ａ〜５００ｂは、全てのプロセッサノード及びメモリノードから転送命令を受け、これらを調停して１つの転送命令を生成し、担当するノードへ転送命令を出力する。これらのセレクタをノード毎に対応して用意することで、任意のノード間で転送命令を授受できる。
【０１３０】
プロセッサ４１０ａ〜４１０ｂ、メモリ４７０ｃ及び４７０ｄは、図９に示した命令を調停回路・エンコーダ４２０ａ〜４２０ｄに発行する。調停回路・エンコーダ４２０ａ〜４２０ｄは、プロセッサ及びメモリの発行する命令を図１２に示した転送命令に変換し、ネットワーク４５０に発行する。ネットワーク内のセレクタ５００ａ〜５００ｂは、全てのノードからの転送命令を受けて、それぞれ対応するノードに出力する転送命令を生成する。
【０１３１】
ここでは、セレクタ５００ａの構造を例として説明する。各ノードから受信した転送命令は、セレクタ５００ａ内のデコーダ５２０ａ〜５２０ｃによって命令に変換される。変換後以下に示す方法でノードに出力する命令を選択し、対応する命令バッファ５２５ａ〜５２５ｃに書き込む。
【０１３２】
＜命令がLD要求叉はRDI要求の場合＞
図９に示したように、命令の対象ノードは全てのプロセッサノード及びアクセス対象のメモリである。よって、全てのプロセッサノードに対応するセレクタ内のデコーダ、及び、命令の対象アドレスを保持するメモリノードに対応するセレクタ内のデコーダは、各々に対応する命令バッファに当該命令を書き込む。上記以外のデコーダは、当該命令を破棄する。
【０１３３】
＜命令がライン読み出しデータ叉はRDI要求に対応するWB要求の場合＞
図９に示したように、命令の対象ノードはアクセスを発行したプロセッサノード及びメモリである。よって、全デコーダは、命令の識別子から要求の送信元を得て、アクセスを発行したプロセッサノードに対応するセレクタを特定する。当該セレクタ内のデコーダは、対応する命令バッファに当該命令を書き込む。また、命令の対象アドレスを保持するメモリノードに対応するセレクタ内のデコーダは、各々に対応する命令バッファに当該命令を書き込む。上記以外のデコーダは、当該命令を破棄する。
【０１３４】
＜命令が置き換えによるWB要求の場合＞
図９に示したように、命令の対象ノードはメモリである。よって、命令の対象アドレスを保持するメモリノードに対応するセレクタ内のデコーダは、各々に対応する命令バッファに当該命令を書き込む。上記以外のデコーダは、当該命令を破棄する。
【０１３５】
WB要求が置き換えによる場合、WB要求の識別子中のプロセッサノード番号がWB要求の発行元となる。この基準により、WB要求が置き換えによるものであることを判断する。
【０１３６】
上記に示した手順により、プロセッサノード０に送出される命令が命令バッファ５２５ａ〜５２５ｃに格納される。調停回路・エンコーダ５３０ａは、セレクタ５００ａ内の全命令バッファ５２５ａ〜５２５ｃからプロセッサノード０に送出する命令の組を選択し、転送命令に変換してプロセッサノード０に送出する。
【０１３７】
ネットワーク内で各ノードが出力した転送命令を一旦命令に復元し、命令バッファに格納することで、調停回路・エンコーダ５３０ａは複数の命令の選択時に、異なる命令バッファから選択可能となる。これにより、異なるノードを対象とする、命令が同一転送命令として到着した場合においても、各命令を対象ノードに送出できる。
【０１３８】
対応するノードに送出する命令を調停回路・エンコーダ５３０ａで選択する構成も考えられる。この構成ではデコーダ５２０ａ〜５２０ｃ毎に命令の送出判定を行なう回路を設けなくてもよいが、対応するノード送出しない命令についても命令バッファ５２５ａ〜５２５ｃに格納するため命令バッファ利用の効率が低下する。
【０１３９】
本実施例では各セレクタはデコーダを保持する構造としているが、デコーダを全てのセレクタで共通とし、ネットワーク単位で保持して、セレクタ内にはデコーダを設けない方法も可能である。
【０１４０】
プロセッサノード及びメモリノードをそれぞれ４つで構成した本実施例の並列計算機において、プロセッサノード０がアドレスＡ０及びＡ１、プロセッサノード１がアドレスＡ２及びＡ３、プロセッサノード２がアドレスＡ４及びＡ５、プロセッサノード３がアドレスＡ６及びＡ７にLD要求を発行した場合の動作を図１６に示す。
【０１４１】
時刻ｔ０で、プロセッサノード０がアドレスＡ０及びＡ１、プロセッサノード１がアドレスＡ２及びＡ３、プロセッサノード２がアドレスＡ４及びＡ５、プロセッサノード３がアドレスＡ６及びＡ７へのLD要求をそれぞれ発行する。各プロセッサノードの発行するそれぞれ２つのLD要求は、プロセッサノード内の調停回路・エンコーダ４２０ａ〜４２０ｂで転送命令Ｔ２に変換され、ネットワーク４５０に伝送される。ネットワーク４５０内の各セレクタ５００ａ〜５００ｂ内では、各プロセッサノードから受けた転送命令Ｔ２をデコーダ５２０ａ〜５２０ｂでそれぞれ２つのLD要求に戻し、命令バッファ５２５ａ〜５２５ｂに格納する。
【０１４２】
時刻ｔ１〜ｔ４で、各セレクタ内の調停回路・エンコーダ５３０ａは、セレクタ内の命令バッファから命令の組を選択し、各プロセッサノード及びメモリノードへ出力する。図１６では、各セレクタは時刻ｔ１でアドレスＡ０及びＡ２へのLD命令、時刻ｔ２でアドレスＡ４及びＡ６へのLD命令、時刻ｔ３でアドレスＡ１及びＡ３へのLD命令、時刻ｔ４でアドレスＡ５及びＡ７へのLD命令を選択し、各プロセッサノード及びメモリノードへ送出している。
【０１４３】
ここでは、プロセッサノード１のキャッシュ内にアドレスＡ０、Ａ１のデータが保持されていなく、また、プロセッサノード０のキャッシュ内にアドレスＡ２、Ａ３のデータが保持されていない場合を示す。従って、プロセッサノード０及び１はキャッシュラインの書き戻しを行なわず、全LD要求に対する返答はメモリノードが行なう。
【０１４４】
また、アドレスＡ０及びＡ２及びＡ４及びＡ６、アドレスＡ１及びＡ３及びＡ５及びＡ７の各組は異なるメモリノード上のアドレスであり、各メモリノードが同時にネットワークに対して対応するライン読みだしデータ発行できる場合を示す。
【０１４５】
時刻ｔ５〜ｔ８では、プロセッサノード０がアドレスＡ０のLD要求に対するライン読み出しデータを受け、プロセッサノード１がアドレスＡ２のLD要求に対するライン読み出しデータを受け、プロセッサノード２がアドレスＡ４のLD要求に対するライン読み出しデータを受け、プロセッサノード３がアドレスＡ６のLD要求に対するライン読み出しデータを受ける。
【０１４６】
時刻ｔ９〜ｔ１２では、プロセッサノード０がアドレスＡ１のLD要求に対するライン読み出しデータを受け、プロセッサノード１がアドレスＡ３のLD要求に対するライン読み出しデータを受け、プロセッサノード２がアドレスＡ５のLD要求に対するライン読み出しデータを受け、プロセッサノード３がアドレスＡ７のLD要求に対するライン読み出しデータを受ける。
【０１４７】
以上が本発明の第５の実施例である。図１６の動作例では、２つのLD要求を１サイクルで転送することにより、時刻ｔ０〜ｔ４の間の動作で動作サイクル数が５サイクル削減できる。本実施例により、ネットワークにより結合された並列計算機において、各ノード及びネットワークは転送するデータ量が小さいLD要求命令およびRDI要求命令を１サイクルに最大２つ転送することができる。これにより、ネットワークの処理性能を従来と比較し高めることができる。
【０１４８】
＜実施例６＞
以下に、本発明の第６の実施例を図１７〜１９を用いて説明する。本実施例は実施例５の変形であるため、相違点についてのみ説明する。本実施例は、並列計算機の各ノードからネットワークに送出する信号線を命令コード及び命令データに変更した点、及び、ネットワークを命令コード部及び命令データ部上位３２ビットを処理するネットワーク上位部分、及び、命令データ部下位３２ビットを処理するネットワーク下位部分に分割した点が実施例５と異なる。
【０１４９】
図１７は、本発明に係る並列計算機を示す。図１７は実施例５における図１４の変形であり、変更点のみを説明する。実施例５では、プロセッサ及びメモリの発行する命令は、調停回路・エンコーダ４２０ａ〜４２０ｄで転送コード及び転送データに変更され、ネットワーク４５０に送出される。これに対し、本実施例では、プロセッサ及びメモリの発行する命令は、ネットワークインターフェイス７２０ａ〜７２０ｄを介して命令コード及び命令データとしてネットワーク７５０に送出される。
【０１５０】
図１８は、本発明に係る並列計算機のネットワークの構造を示す。ネットワーク７５０は、ネットワーク上位部分６０２ａとネットワーク下位部分６０２ｂからなる。ネットワーク上位部分６０２ａは、各ノードの出力する命令コード、命令データ上位３２ビット及び命令ＩＤを受け、転送コード、転送データ上位３２ビット及び転送ＩＤ上位４ビットを各ノードに送出する。ネットワーク下位部分６０２ｂは、各ノードの出力する命令データ下位３２ビット及び命令ＩＤを受け、転送データ下位３２ビット及び転送ＩＤ下位４ビットを各ノードに送出する。
【０１５１】
セレクタ６００ａ〜６００ｄは、全てのプロセッサノード及びメモリノードから命令を受け、これらを調停して１つの転送命令を生成し、転送コード及び転送データ上位３２ビット、または、転送データ下位３２ビットのいずれか担当部分を対応するノードへ出力する。
【０１５２】
各ノードからネットワークに送出する命令の種類は図９の通りである。ただし、LD要求及びRDI要求の発行時には、ネットワークインターフェイス７２０ａ〜７２０ｄは命令データの上位３２ビットと下位３２ビットに同一アドレスを出力する点が異なる。
【０１５３】
並列計算機で使用する転送命令、キャッシュの状態及び命令発行時の動作は実施例５と同じである。
【０１５４】
ネットワーク上位部分６０２ａのセレクタ６００ａ〜６００ｂの構造を、セレクタ６００ａを用いて説明する。各ノードからセレクタ６００ａに発行された命令コード及び命令データ上位３２ビットは、命令バッファ６２５ａ〜６２５ｂに格納される。調停回路・エンコーダ６３０ａは、セレクタ６００ａ内の全命令バッファ６２５ａ〜６２５ｂからプロセッサノード０に送出する命令の組を選択し、転送命令に変換して転送コード及び転送データ上位３２ビットをプロセッサノード０に送出する。複数の命令を選択する場合、異なる命令バッファから選択することができる。調停回路・エンコーダ６３０ａにおける送出命令の選択方法は、実施例５のデコーダの動作と同様である。
【０１５５】
ネットワーク下位部分６０２ｂのセレクタ６００ｃ〜６００ｄの構造を、セレクタ６００ｃを用いて説明する。各ノードからセレクタ６００ｃに発行された命令コード及び命令データ下位３２ビットは、命令バッファ６２５ｃ〜６２５ｄに格納される。調停回路６３０ｂは、セレクタ６００ｂ内の全命令バッファ６２５ｃ〜６２５ｄからプロセッサノード０に送出する命令の組を選択し、転送命令に変換して転送データ下位３２ビットをプロセッサノード０に送出する。複数の命令を選択する場合、異なる命令バッファから選択することができる。調停回路・エンコーダ６３０ｂにおける送出命令の選択方法は、実施例５のデコーダの動作と同様である。
【０１５６】
調停回路・エンコーダ６００ａ〜６００ｂにおける命令の組の選択は、ネットワーク上位側及びネットワーク下位側で同一のアルゴリズムで行なう。命令の組の選択アルゴリズムは任意の方法が使用可能であり、本実施例では説明しない。
【０１５７】
図１９は、プロセッサノードＡから受けたアドレスＡ０のLD要求と、プロセッサノードＢから受けたアドレスＢ０のLD要求の２命令を選択し、転送命令に変換してプロセッサノード０に送出する動作を示す。
【０１５８】
プロセッサノードＡは、命令コードにLD要求を示す"100"、命令データ上位３２ビット及び命令データ下位３２ビットの双方にアドレスＡ０、命令ＩＤを出力する。プロセッサノードＢは、命令コードにLD要求を示す"100"、命令データ上位３２ビット及び命令データ下位３２ビットの双方にアドレスＢ０、命令ＩＤを出力する。図１９は、プロセッサノードＡ及びＢのLD要求が命令バッファ６２５ａ−１〜６２５ｄ−１に格納された状態を示す。ネットワーク上位のセレクタ６００ａ−１内の調停回路・エンコーダ６３０ａ−１は、プロセッサノード０に送出する命令の組をアドレスＡ０及びアドレスＢ０へのLD要求と決定し、転送コードにＴ２、転送データ上位３２ビットに１番目の命令の命令データであるアドレスＡ０、転送ＩＤ上位４ビットに１番目の命令の命令ＩＤを出力する。出力後、命令バッファ６２５ａ−１及び命令バッファ６２５ｂ−１からアドレスＡ０及びＢ０へのLD要求を取り除く。一方、ネットワーク下位のセレクタ６００ｃ−１内の調停回路６３０ｂ−１は、プロセッサノード０に送出する命令の組を、調停回路・エンコーダ６３０ａ−１と同一の方法を用いてアドレスＡ０及びアドレスＢ０へのLD要求と決定し、転送データ下位３２ビットに２番目の命令の命令データであるアドレスＢ０、転送ＩＤ下位４ビットに２番目の命令の命令ＩＤを出力する。出力後、命令バッファ６２５ｃ−１及び命令バッファ６２５ｄ−１からアドレスＡ０及びＢ０へのLD要求を取り除く。
【０１５９】
本実施例の動作は、実施例５と比較し、各ノードからネットワークには同一サイクルで複数の命令を転送できない点が異なる。プロセッサノード及びメモリノードをそれぞれ４つで構成した本実施例の並列計算機において、プロセッサノード０がアドレスＡ０及びＡ１、プロセッサノード１がアドレスＡ２及びＡ３、プロセッサノード２がアドレスＡ４及びＡ５、プロセッサノード３がアドレスＡ６及びＡ７にLD要求を発行した場合、図１６の時刻ｔ０における２つのLD要求の同時転送が実行できない。従って、実施例５と比較し動作サイクルが１サイクル長くなる。
【０１６０】
以上が本発明の第６の実施例である。本実施例により、ネットワークにより結合された並列計算機において、ネットワークは転送するデータ量が小さいLD要求命令およびRDI要求命令を１サイクルに最大２つ転送することができる。これにより、ネットワークの処理性能を従来と比較し高めることができる。また、データ幅を分割した複数のユニットでネットワークを構成することで、ネットワークを構成するＬＳＩのピン数を削減できる。
【０１６１】
（実施例７）
以下に、本発明の第７の実施例を図２０〜図２２を用いて説明する。本実施例は実施例１の変形であるため、相違点についてのみ説明する。本実施例は、調停回路及びデコーダにそれぞれ直前上位データレジスタを設け、命令データ部上位が直前に転送した命令データ部上位と等しい命令を複数同時に入力側論理回路に転送できる点が実施例１と異なる。
【０１６２】
図２０は、本実施例に係る論理回路接続装置を示す。図２０は実施例１における図１の変形であり、変更点のみを説明する。
【０１６３】
本実施例では、調停回路８００及びデコーダ８０４のそれぞれに直前上位データレジスタ８０６及び８０８を付加する。本実施例では全ての命令が６４ビットであり、命令データ部の上位３２ビットが直前に転送した命令の命令データ部上位３２ビットと等しい場合に命令データ部の上位３２ビットを省略し、命令データ部の下位３２ビットのみを転送する。直前上位データレジスタ８０６は、調停回路８００側で直前に転送した命令の命令データ部上位３２ビットを保持する。調停回路８００は、転送する命令の選択時に各命令データ部の上位３２ビットと直前上位データレジスタ８０６の一致確認を行なう。直前上位データレジスタ８０８は、デコーダ８０４側で直前に受信した命令の命令データ部上位３２ビットを保持する。デコーダ８０４は、命令データ部上位３２ビットを省略した命令を受信した時に、直前上位データレジスタ８０８の値を命令データ部上位３２ビットとして用いる。直前上位データレジスタの初期値は双方とも同じ値とし、誤動作を防ぐ。
【０１６４】
図２１に図２０の論理回路接続装置で使用する命令を示す。
【０１６５】
命令コード部が"00"の場合、命令を発行しないことを示す。命令Ｉ０は、６４ビットのデータを伝送する命令であり、命令コード部は"10"である。この命令は、命令データ部の上位３２ビットが以前の命令と同一である可能性が高い命令である。例えば、計算機におけるアドレスを指定する信号線は、参照の局所性があるためアドレス上位が同一である可能性が高い。命令Ｉ１は、６４ビットのデータを伝送する命令であり、命令コード部は"11"である。
【０１６６】
図２２に図２０の論理回路接続装置で使用する転送命令を示す。
【０１６７】
転送コード部が"00"の場合、転送命令を発行しないことを示す。転送命令Ｔ０は、命令Ｉ０を１つ伝送する転送命令であり、転送コード部は"01"、転送データ部は命令Ｉ０の命令データ部とする。転送命令Ｔ１は、命令Ｉ０を２つ伝送する転送命令であり、転送コード部は"10"、転送データ部は６４ビットの内上位３２ビットが１つ目の命令Ｉ０の命令データ部下位３２ビット、転送データ部下位３２ビットは２つ目の命令Ｉ０の命令データ部下位３２ビットとする。この転送命令は、転送する２つの命令Ｉ０の命令データ部上位３２ビットが直前アドレスレジスタ８０６と等しい場合にのみ使用される。転送命令Ｔ２は、命令Ｉ１を１つ伝送する転送命令であり、転送コード部は"11"、転送データ部は命令Ｉ１の命令データ部とする。
【０１６８】
本実施例は、出力側論理回路から入力側論理回路に対して同一サイクルに伝送する命令数を、命令データ部の一部が直前に転送した命令と等しい場合に増やすことができる点に特長がある。
【０１６９】
本実施例の論理回路接続装置の動作の、実施例１に対する変更点を以下に示す。
【０１７０】
＜調停回路の動作＞
調停回路８００は、以下のいずれかに該当する命令の組をポートＡ〜ポートＤから選択し、エンコーダ８０２に出力する。
【０１７１】
（１）命令Ｉ１を１つ選択
選択した命令を、選択命令ライン１を用いてエンコーダ８０２に出力する。
【０１７２】
選択命令ライン２の命令コード信号線８３０ｂは"00"として、選択命令ライン２には命令を出力しない。
【０１７３】
（２）命令Ｉ０を２つ選択
２つの命令Ｉ０の命令データ部上位３２ビットが、直前上位データレジスタ８０６とそれぞれ等しい場合にのみ選択可能である。選択した命令を、選択命令ライン１及び選択命令ライン２を用いてエンコーダ８０２に出力する。
【０１７４】
（３）命令Ｉ０を１つ選択
選択した命令を、選択命令ライン１を用いてエンコーダ８０２に出力する。
【０１７５】
選択命令ライン２の命令コード信号線８３０ｂは"00"として、選択命令ライン２には命令を出力しない。
【０１７６】
（４）命令を選択しない
命令コード信号線８３０ａ、８３０ｂとも"00"として、選択命令ライン１及び選択命令ライン２には命令を出力しない。
【０１７７】
（１）から（３）の場合、選択した命令に対応するポートの命令アクノリッジ信号線を"1"とし、出力側論理回路に当該ポートの命令を出力したことを伝える。また、命令Ｉ０を選択した場合、直前上位アドレスレジスタ８０６に命令Ｉ０の命令データ部上位３２ビットの値を書き込む。
【０１７８】
＜エンコーダの動作＞
エンコーダ８０２は、調停回路８００から選択命令ライン１及び選択命令ライン２を通して命令の組を受け、以下に示すように転送命令を生成し、デコーダ８０４に対して発行する。
【０１７９】
（１）調停回路８００から命令Ｉ１を１つ受けた場合
転送コード信号線８５０を"11"、転送データ信号線１６０を命令データ信号線８４０ａの値とし、転送命令Ｔ２をデコーダに対して発行する。
【０１８０】
（２）調停回路８００から命令Ｉ０を２つ受けた場合
転送コード信号線８５０を"10"、転送データ信号線８６０の上位３２ビットを信号線８４０ａ上の命令データ下位３２ビットの値、転送データ信号線８６０の下位３２ビットを信号線８４０ｂ上の命令データ下位３２ビットの値とし、転送命令Ｔ１をデコーダに対して発行する。
【０１８１】
（３）調停回路８００から命令Ｉ０を１つ受けた場合
転送コード信号線８５０を"01"、転送データ信号線８６０を命令データ信号線８４０ａの値とし、転送命令Ｔ０をデコーダに対して発行する。
【０１８２】
（４）調停回路８００から命令を受けなかった場合
転送コード信号線８５０を"00"とし、転送命令を発行しない。
【０１８３】
＜デコーダの動作＞
デコーダ８０４は、エンコーダ８０２から転送ラインを通して転送命令を受け、以下に示すように命令の組を復元し、入力側論理回路に対して発行する。
【０１８４】
（１）エンコーダ８０２から転送命令Ｔ２を受けた場合
命令コード信号線８７０ａを"11"、命令データ信号線８８０ａを転送データ信号線８６０の値とし、入力側論理回路に対して命令Ｉ１を発行する。命令コード信号線８７０ｂは"00"とし、ポートＦからは命令を発行しない。
【０１８５】
（２）エンコーダ８０２から転送命令Ｔ１を受けた場合
命令コード信号線８７０ａ及び命令コード信号線８７０ｂを"10"、直前上位データレジスタ８０８の値を命令データ信号線８８０ａ及び８８０ｂの上位３２ビット、命令データ信号線８８０ａの下位３２ビットを信号線８６０の上位３２ビット、命令データ信号線８８０ｂの下位３２ビットを信号線８６０の下位３２ビットとし、入力側論理回路に対して命令Ｉ０を２つ発行する。
【０１８６】
（３）エンコーダ８０２から転送命令Ｔ０を受けた場合
命令コード信号線８７０ａを"10"、命令データ信号線８８０ａを転送データ信号線８６０の値とし、入力側論理回路に対して命令Ｉ０を発行する。命令コード信号線８７０ｂは"00"とし、ポートＦからは命令を発行しない。この時、命令データ部上位３２ビットの値を直前上位データレジスタ８０８に書き込む。
【０１８７】
以上が本発明の実施例７である。
【０１８８】
本実施例により、データ部上位３２ビットが直前の命令Ｉ０と同一である可能性の高い命令を同時に複数転送することが可能となり、論理回路接続装置の転送性能を従来と比較し高めることができる。
【０１８９】
（実施例８）
以下に本発明の第８の実施例を図２３〜２６を用いて説明する。図２３は本発明にかかる論理回路接続装置を用いた計算機を示す。図２３の計算機は、バスアービタ９７０によりバス権の調停を受けるノード９００ａ〜９００ｄが、転送コードバス９５０及び転送データバス９６０ａ〜９６０ｄに接続された構成をとる。本実施例の変形として、プロセッサとメモリを異なるノードに配置する構成も可能であるが、本発明はいずれの構成においても有効である。
【０１９０】
ノード９００ａ〜９００ｄの構成を、ノード９００ａを例に説明する。ノード９００ａ内では、プロセッサ９１０ａ及びメモリ９１８ａがプロセッサバスを介して論理回路接続装置の調停回路・エンコーダ９２０ａ、デコーダ９３０ａと接続される。調停回路・エンコーダ９２０ａ及びデコーダ９３０ａは、バスインターフェイス９４０ａを介して２ビットの転送コードバス９５０及び１２８ビットの転送データバス９６０ａ〜９６０ｄと接続される。プロセッサ９１０ａは、キャッシュメモリ９１５ａとキャッシュ専用バスで接続される。ここでは、ノード内のプロセッサ数及びメモリ数は１としたが、本発明はノード内のプロセッサ数及びメモリ数に係わりなく有効である。
【０１９１】
図２４は、本実施例の計算機で使用する命令を示す。図２４の命令の種類は、実施例４における図９と同一である。本実施例では、計算機で使用するアドレスを３０ビットとする。アドレスとデータ双方の転送を伴うライン読出データ及びWB要求では、いずれか１ノードが転送バスを占有し、転送を行なう。アドレスのみの転送であるLD要求及びRDI要求では、ノード０（９００ａ）は転送データバス０、ノード１（９００ｂ）は転送データバス１、ノード２（９００ｃ）は転送データバス２、ノード３（９００ｄ）は転送データバス３をそれぞれ使用し、全てのノードが同時にアドレスの転送を行なう。この時、転送データ部の上位２ビットで各ノードが発行する命令の種類を伝送する。
【０１９２】
バスアービタ９７０の機能を図２５及び図２６を用いて説明する。各ノード９００ａ〜９００ｄは、命令発行を行なう前にバスアービタ９７０にバス要求を発行し、バス使用の許可を得る。図２５は、各ノードがバスアービタ９７０に発行するバス要求の種類を示す。バス要求は、ライン読出データ叉はWB要求を発行する為のバス要求"10"と、LD要求叉はRDI要求を発行する為のバス要求"11"の２種類が存在する。バスアービタ９７０は、各ノードからのバス要求を受けてバス権の調停を行い、図２６に示す３ビットのバス許可信号を全ノード９００ａ〜９００ｄに発行する。バス許可信号の最上位ビットが"0"の場合、いずれか１ノードのライン読出データ叉はWB要求の発行が許可される。この時、バス許可信号の下位２ビットはバス使用が許可されたノードの番号を示す。バス許可信号の最上位ビットが"1"の場合、全ノードに対してLD要求叉はRDI要求の発行が許可される。この時、全てのノード９００ａ〜９００ｄは、自ノードに対応する転送データバスのフィールドを使用してLD要求叉はRDI要求を発行してよい。バス許可信号の下位２ビットは、各ノード９００ａ〜９００ｄの発行する命令を処理する順序を示す。例えば、バス許可信号が"100"の場合、全ノード９００ａ〜９００ｄは、ノード０の命令-ノード１の命令-ノード２の命令-ノード３の命令の順序で命令を処理する。バスアービタは、ライン読出データ及びWB要求に対して"000"〜"011"のバス許可信号を、LD要求及びRDI要求に対して"100"〜"111"を均等に使用し、バス権の偏りを防ぐ。
【０１９３】
バス許可"000"〜"011"を受けてライン読出データ叉はWB要求を発行するノードは、転送コードバス９５０と転送データバス９６０ａ〜９６０ｄの全てに命令コード及び命令データを送出する。この時、他のノードは転送コードバス及び転送データバスに信号を送出しない。バス許可"100"〜"111"を受けた時、全てのノードは転送データバスの対応するフィールドに命令データを送出する。この時、バスアービタが転送コードバスに命令を送出し、全てのノードは転送コードバスに信号を送出しない。
【０１９４】
計算機の命令の転送以外の部分に関する動作は実施例４と同様である。
【０１９５】
以上が、本発明の第８の実施例である。本実施例により、バスにより結合された計算機において、転送するデータ量が小さいLD要求及びRDI命令を全ノードが同時に転送バスに発行することができ、転送バスの転送性能を従来と比較し高めることができる。
【０１９６】
【発明の効果】
本発明によれば、出力側論理回路から入力側論理回路にトランザクション（命令）を伝送する論理回路接続装置において、トランザクションの種類により生じる命令データ転送時の空きビットを利用して複数のトランザクションを伝達し、論理回路接続装置の転送性能を向上することができる。
【図面の簡単な説明】
【図１】本発明の実施例１に係る論理回路接続装置の図である。
【図２】本発明の実施例１に係る論理回路接続装置で伝送する命令を示す図である。
【図３】本発明の実施例１に係る論理回路接続装置で使用する転送命令を示す図である。
【図４】本発明の実施例２に係る論理回路接続装置の図である。
【図５】本発明の実施例２に係る論理回路接続装置で伝送する命令を示す図である。
【図６】本発明の実施例３に係る論理回路接続装置の図である。
【図７】本発明の実施例４に係る計算機の図である。
【図８】本発明の実施例４に係る計算機で使用するキャッシュ状態を示す図である。
【図９】本発明の実施例４に係る計算機で使用する命令を示す図である。
【図１０】本発明の実施例４に係る計算機において、プロセッサがメモリ読み出しを行なう動作の流れを示す図である。
【図１１】本発明の実施例４に係る計算機において、プロセッサがメモリ書込みを行なう動作の流れを示す図である。
【図１２】本発明の実施例４に係る計算機で使用する転送命令を示す図である。
【図１３】本発明の実施例４に係る計算機の動作タイミングを示す図である。
【図１４】本発明の実施例５に係る計算機の図である。
【図１５】本発明の実施例５に係るネットワークの構造を示す図である。
【図１６】本発明の実施例５に係る計算機の動作タイミングを示す図である。
【図１７】本発明の実施例６に係る計算機の図である。
【図１８】本発明の実施例６に係るネットワークの構造を示す図である。
【図１９】本発明の実施例６に係るネットワークの動作を示す図である。
【図２０】本発明の実施例７に係る論理回路接続装置の図である。
【図２１】本発明の実施例７に係る論理回路接続装置で使用する命令を示す図である。
【図２２】本発明の実施例７に係る論理回路接続装置で使用する転送命令を示す図である。
【図２３】本発明の実施例８に係る計算機の図である。
【図２４】本発明の実施例８に係る計算機で使用する命令を示す図である。
【図２５】本発明の実施例８に係る計算機で使用するバス要求信号の種類を示す図である。
【図２６】本発明の実施例８に係る計算機で使用するバス使用許可信号の種類を示す図である。
【図２７】図１の調停回路の構成を示す図である。
【図２８】図１の調停回路の他の構成を示す図である。
【図２９】図１のエンコーダの構成を示す図である。
【図３０】図１のデコーダの構成を示す図である。
【図３１】図１の論理接続回路の動作を示す図である。
【符号の説明】
１００、２０２、２０３、３１０ａ〜３１０ｂ、６３０ｂ、８００…調停回路、２００、３２０ａ〜３２０ｂ、１０２０ａ〜１０２０ｃ、１０３０ａ〜１０３０ｃ、１０４０ａ〜１０４０ｃ、４２０ａ〜４２０ｄ、５３０ａ、６３０ａ、６３０ａ−１〜６３０ｂ−１、９２０ａ…調停回路・エンコーダ、  １０２、８０２…エンコーダ、  １０４、２０４、３３０ａ〜３３０ｂ、４３０ａ〜４３０ｄ、５２０ａ〜５２０ｃ、７３０ａ〜７３０ｄ、９３０ａ…デコーダ、  ３００ａ〜３００ｂ、９００ａ〜９００ｄ…ノード、  ３４０ａ〜３４０ｂ、１０４０ａ〜１０４０ｃ…バス調停回路、  ３５０、１０５０、９５０…転送コードバス、３６０、１０６０…転送データバス、  ９６０ａ…転送データバス０、  ９６０ｂ…転送データバス１、  ９６０ｃ…転送データバス２、  ９６０ｄ…転送データバス３、  ９７０…バスアービタ、  １０００ａ〜１０００ｂ、４００ａ〜４００ｂ、７００ａ〜７００ｂ…プロセッサノード、  １０８０、４８０ｃ〜４８０ｄ、７８０ｃ〜７８０ｄ…メモリノード、  １０１０ａ〜１０１０ｂ、４１０ａ〜４１０ｂ、７１０ａ〜７１０ｂ、９１０ａ…プロセッサ、  １０１５ａ〜１０１５ｂ、４１５ａ〜４１５ｂ、７１５ａ〜７１５ｂ、９１５ａ…キャッシュ、  １０７０、４７０ｃ〜４７０ｄ、７７０ｃ〜７７０ｄ、９１８ａ…メモリ、４５０、７５０…ネットワーク、  ５００ａ〜５００ｂ、６００ａ〜６００ｄ、６００ａ−１、６００ｃ−１…セレクタ、  ５２５ａ〜５２５ｃ、６２５ａ〜６２５ｄ、６２５ａ−１〜６２５ｄ−１…命令バッファ、  ７２０ａ〜７２０ｄ…ネットワークインターフェイス、  ６０２ａ…ネットワーク上位部、  ６０２ｂ…ネットワーク下位部、  ８０６、８０８…直前上位データレジスタ、  ９４０ａ…バスインターフェイス、  １１０ａ〜１１０ｄ、１３０ａ〜１３０ｂ、１７０ａ〜１７０ｂ、２１０ａ〜２１０ｄ、２７０ａ〜２７０ｂ、８１０ａ〜８１０ｄ、８３０ａ〜８３０ｂ、８７０ａ〜８７０ｂ…命令コード信号線、  １２０ａ〜１２０ｄ、１４０ａ〜１４０ｂ、１８０ａ〜１８０ｂ、８２０ａ〜８２０ｄ、８４０ａ〜８４０ｂ、８８０ａ〜８８０ｂ…命令データ信号線、  ２２０ａ〜２２０ｄ…命令データ上位信号線、  ２２１ａ〜２２１ｄ…命令データ下位信号線、  １１５ａ〜１１５ｄ、２１５ａ〜２１５ｄ、８１５ａ〜８１５ｄ…命令アクノリッジ信号線、  １５０、２５０、８５０…転送コード信号線、  １６０、８６０…転送データ信号線、  ２６０…転送データ上位信号線、  ２６１…転送データ下位信号線。
【図１】
0003713876.tif 000002
【図２】
0003713876.tif 000003
【図３】
0003713876.tif 000004
【図４】
0003713876.tif 000005
【図５】
0003713876.tif 000006
【図６】
0003713876.tif 000007
【図７】
0003713876.tif 000008
【図８】
0003713876.tif 000009
【図９】
0003713876.tif 000010
【図１０】
0003713876.tif 000011
【図１１】
0003713876.tif 000012
【図１２】
0003713876.tif 000013
【図１３】
0003713876.tif 000014
【図１４】
0003713876.tif 000015
【図１５】
0003713876.tif 000016
【図１６】
0003713876.tif 000017
【図１７】
0003713876.tif 000018
【図１８】
0003713876.tif 000019
【図１９】
0003713876.tif 000020
【図２０】
0003713876.tif 000021
【図２１】
0003713876.tif 000022
【図２２】
0003713876.tif 000023
【図２３】
0003713876.tif 000024
【図２４】
0003713876.tif 000025
【図２５】
0003713876.tif 000026
【図２６】
0003713876.tif 000027
【図２７】
0003713876.tif 000028
【図２８】
0003713876.tif 000029
【図２９】
0003713876.tif 000030
【図３０】
0003713876.tif 000031
【図３１】
0003713876.tif 000032