(57)【特許請求の範囲】
【請求項１】
リングバスに接続された複数のノードのそれぞれから送出されたデータを、前記リングバス上を一方向に送られるスロットに収容して前記複数のノードの何れかに転送するデータ転送装置であって、
前記複数のノードのそれぞれは、
自ノードより上流側のノードに対向するスロットに自ノード宛のデータが存在するかどうかを検出する検出部と、
前記検出部により自ノード宛のデータが存在することが検出された場合に、前記スロットが自ノードに対向した時に前記自ノード宛のデータを取り込む制御部、
とを備え、
前記検出部は、
前記複数のノードのそれぞれが送出したデータの宛先を示すＩＤ信号を前記リングバスにおけるデータの転送に同期して転送するＩＤ線と、
前記複数のノードのそれぞれが送出したデータが前記リングバス上に存在することを示すバリッド信号を前記リングバスにおけるデータの転送に同期して転送するバリッド線、とを更に備え、
自ノードより上流側の所定ノードに対向する部分の前記ＩＤ線内のＩＤ信号が自ノードを示しており、且つ前記所定ノードに対向する部分の前記バリッド線内にバリッド信号が出力されている場合に、前記自ノード宛のデータが存在することを検出するデータ転送装置。
【請求項２】
前記複数のノードのそれぞれは、下流側の隣接する下流側ノードにデータを転送する場合に、前記下流側ノードに対向する部分の前記ＩＤ線及び前記バリッド線に前記下流側ノードを指定するＩＤ信号及びバリッド信号をそれぞれ出力する請求項１に記載のデータ転送装置。
【請求項３】
リングバスに接続された複数のノードのそれぞれから送出されたデータを、前記リングバス上を一方向に送られるスロットに収容して前記複数のノードの何れかに転送するデータ転送装置であって、
前記複数のノードのそれぞれは、
自ノードより上流側のノードに対向するスロットに自ノード宛のデータが存在するかどうかを検出する検出部と、
前記検出部により自ノード宛のデータが存在することが検出された場合に、前記スロットが自ノードに対向した時に前記自ノード宛のデータを取り込む制御部、
とを備え、
前記検出部は、
前記複数のノードのそれぞれが送出したデータが前記リングバス上に存在することを示すバリッド信号を前記リングバスにおけるデータの転送に同期して転送するバリッド線を、前記複数のノードのそれぞれに対応して更に備え、
自ノードに対応するバリッド線の、自ノードより上流側のノードに対向する部分にバリッド信号が出力されている場合に、前記自ノード宛のデータが存在することを検出するデータ転送装置。
【請求項４】
前記複数のノードのそれぞれは、下流側の隣接する下流側ノードにデータを転送する場合に、前記下流側ノードに対応するバリッド線の、該下流側ノードに対向する部分にバリッド信号を出力する請求項３に記載のデータ転送装置。
【請求項５】
前記制御部は、送出すべきライトデータが保持されていない場合に、前記自ノード宛のデータを取り込むと共に、前記自ノード宛のデータが収容されていたスロットを無効化する請求項１から４の何れか１項に記載のデータ転送装置。
【請求項６】
前記制御部は、送出すべきライトデータが保持されている場合に、前記自ノード宛のデータを取り込むと共に、前記自ノード宛のデータが収容されていたスロットに前記ライトデータを収容して送出する請求項１から４の何れか１項に記載のデータ転送装置。
【請求項７】
リングバスに接続された複数のノードのそれぞれから送出されたデータを、前記リングバス上を一方向に送られるスロットに収容して前記複数のノードの何れかに転送するデータ転送方法であって、
前記複数のノードのそれぞれは、
（Ａ）自ノードより上流側のノードに対向するスロットに自ノード宛のデータが存在するかどうかを検出し、
（Ｂ）該検出結果が自ノード宛のデータが存在することを示している場合に、前記スロットが自ノードに対向した時に前記自ノード宛のデータを取り込み、
前記ステップ（Ａ）は、
前記複数のノードのそれぞれが送出したデータの宛先を示すＩＤ信号を前記リングバスにおけるデータの転送に同期して転送するステップと、
前記複数のノードのそれぞれが送出したデータが前記リングバス上に存在することを示すバリッド信号を前記リングバスにおけるデータの転送に同期して転送するステップ、とを更に備え、
自ノードより上流側の所定ノードに対向する部分のＩＤ信号が自ノードを示しており、且つ前記所定ノードに対向する部分にバリッド信号が出力されている場合に、前記自ノード宛のデータが存在することを検出するデータ転送方法。
【請求項８】
前記複数のノードのそれぞれは、下流側の隣接する下流側ノードにデータを転送する場合に、前記下流側ノードに対向する部分のＩＤ信号及びバリッド信号をそれぞれ出力する請求項７に記載のデータ転送方法。
【請求項９】
リングバスに接続された複数のノードのそれぞれから送出されたデータを、前記リングバス上を一方向に送られるスロットに収容して前記複数のノードの何れかに転送するデータ転送方法であって、
前記複数のノードのそれぞれは、
（Ａ）自ノードより上流側のノードに対向するスロットに自ノード宛のデータが存在するかどうかを検出し、
（Ｂ）該検出結果が自ノード宛のデータが存在することを示している場合に、前記スロットが自ノードに対向した時に前記自ノード宛のデータを取り込み、
前記ステップ（Ａ）は、
前記複数のノードのそれぞれが送出したデータが前記リングバス上に存在することを示すバリッド信号を前記複数のノード毎に前記リングバスにおけるデータの転送に同期して転送するステップを更に備え、
自ノードに対応するバリッド線の、自ノードより上流側のノードに対向する部分にバリッド信号が出力されている場合に、前記自ノード宛のデータが存在することを検出するデータ転送方法。
【請求項１０】
前記複数のノードのそれぞれは、下流側の隣接する下流側ノードにデータを転送する場合に、前記下流側ノードに対応するバリッド線の、該下流側ノードに対向する部分にバリッド信号を出力する請求項９に記載のデータ転送方法。
【請求項１１】
前記ステップ（Ｂ）では、送出すべきライトデータが保持されていない場合に、前記自ノード宛のデータを取り込むと共に、前記自ノード宛のデータが収容されていたスロットを無効化する請求項７から１０の何れか１項に記載のデータ転送方法。
【請求項１２】
前記ステップ（Ｂ）では、送出すべきライトデータが保持されている場合に、前記自ノード宛のデータを取り込むと共に、前記自ノード宛のデータが収容されていたスロットに前記ライトデータを収容して送出する請求項７から１０の何れか１項に記載のデータ転送方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、リング接続方式を採用するデータ転送装置及びデータ転送方法に関し、特にリングバスの使用効率を向上させる技術に関する。
【０００２】
【従来の技術】
従来、複数のプロセッサ間でデータ転送を高速に行うための接続方式としてバス接続方式、リング接続方式、スイッチ接続方式等が知られている。このうち、リング接続方式は種々の利点を有することから、種々の関連技術が提案されている。例えば、特開平９−２００２３９号公報には、「リング接続を用いたデータ転送方法及び情報処理システム」（以下、「先行技術」という）が開示されている。
【０００３】
この先行技術に開示されたデータ情報処理システムは、図１１に示すように、リングバス５０とこのリングバス５０に接続された複数のノード（図示例では、４個のノード０〜３）とから構成されている。各ノードとしては、例えばプロセッサ、メモリを制御するためのメモリコントローラ、入出力装置（Ｉ／Ｏ）を制御するための入出力コントローラ、ＤＭＡ（Ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）コントローラといったモジュールが使用される。
【０００４】
この情報処理システムでは、データの送受はリングバス５０上を一方向に転送されるパケットを用いて行われる。図１１ではパケットが時計回り方向に転送されるものと仮定している。この情報処理システムの動作は以下の通りである。
【０００５】
先ず、各ノード０〜３がパケットをリングバス５０に送出する動作（以下、「ライト動作」という）を説明する。この情報処理システムは、各ノードがライト権、つまりパケットをリングバス５０に送出する権利を獲得するための独立した選択線（図示せず）を備えている。
【０００６】
ノード０〜３のそれぞれは、上記選択線をセットしてライト権を要求する。これは自ノードより上流側の所定ノードに対向するスロットが空きスロットであるかどうかを調べることにより行われる。そして、各ノードは、受信された選択線がセットされていないことによりライト権を獲得したことを知り、上記空きスロットが自ノードに到着するまでの間に送信すべきライトデータを含むパケットを生成する。そして、該空きスロットが自ノードに到着した際に生成したバケットをリングバス５０に送出する。以上によりライト動作が完了する。
【０００７】
次に、各ノード０〜３がリングバス５０からパケットを受け取る動作（以下、「リード動作」という）を説明する。ノード０〜３のそれぞれは、上流側のノードから送られてきたパケットをそのまま下流側のノードに転送すると同時に、上流側のノードから送られてきた全てのパケットをバッファ（図示しない）に一時的に格納する。バッファに格納されたパケットの有効性確認、つまり自己宛のパケットであるかどうかの確認は、パケットを下流側のノードに転送した後のサイクルで行われる。そして、有効であることが確認されるとそのパケットがバッファからノードの内部に取り込まれる。以上のように構成れることにより、各ノードのレイテンシが短縮可能になっている。
【０００８】
また、バッファからパケットがノード内部に取り込まれた場合は、取り込まれたパケットと同一のパケットであってリングバス５０上に存在するものを無効にする必要がある。そこで、パケットを取り込んだノードは、該パケットと同一のパケットがリングバス５０を一周して自ノードに到着した際に無効化する。この構成によれば、リングバス５０を一周するパケットは何れかのノードで必ず取り込まれるので不要なパケットを確実に無効化できる。この無効化によって、リングバス５０上の当該スロットが開放され、空きスロットになる。
【０００９】
上記のように構成される従来の情報処理システムの動作を、図１２に示したタイミングチャートを参照しながら更に詳細に説明する。この情報処理システムは以下の条件１〜３の下に動作するものとする。なお、図１２では、ノード０〜３のそれぞれに割り当てられているサイクルをＣ０〜Ｃ３で表し、リングバス５０をＲｄａｔａ［ｘ］で表し、このリングバスＲｄａｔａ［ｘ］上の有効データＮ０〜Ｎ３で表している。
（１）条件１：リングバス上にノード２からノード０への有効データＮ０が存在する。
（２）条件２：ノード０は、ノード１へのライトデータを保持している。
（３）条件３：ノード１はノード３へのライトデータを保持している。
【００１０】
図１２において、ノード０は次のように動作する。即ち、ノード０は、ノード０サイクルＣ０（タイミングＴ３）でリングバス５０上の有効データＮ０を受け取ってバッファに格納すると同時に次のノード１へ転送する。このノード０はノード１へのライトデータを保持しているが、バッファに格納されたデータの有効性確認は後に行われるため、タイミングＴ３では無効化やライトデータの送出を行うことができない。そこで、ノード０は、次のノード０サイクルＣ０が到来するまで待つことになる。
【００１１】
ところで、有効データＮ０は、ノード２がノード２サイクルＣ２（タイミングＴ１）でリングバス５０に送出したものである。従って、この有効データＮ０は、ノード２サイクルＣ２（タイミングＴ５）で無効化される。その結果、ノード２サイクルＣ２（タイミングＴ５）では当該スロットは空きスロットになり、次のノード３サイクルＣ３（タイミングＴ６）でもその状態は維持される。ノード０は、ノード３サイクルＣ３（タイミングＴ６）では当該スロットは空きスロットであるのでライト権を獲得し、次のノード０サイクルＣ０（タイミングＴ７）で有効データＮ１としてリングバス５０に送出する。この有効データＮ１は、更に次のノード０サイクルＣ０（タイミングＴ１１）で無効化される。
【００１２】
ノード１は次のように動作する。即ち、上述したように、有効データＮ０の無効化は、ノード２サイクルＣ２（タイミングＴ５）で行われる。従って、ノード１はノード３へのライトデータを保持しているが、ノード０サイクルＣ０（タイミングＴ３）ではリングバス５０上に有効データＮ０が残っているのでライト権を獲得できず、次のノード１サイクルＣ１が到来するまで待つことになる。
【００１３】
ノード１は、次のノード１サイクルＣ１（タイミングＴ８）では、ノード０がタイミングＴ７で送出した有効データＮ１を受け取るが、有効データＮ１を無効化できるのはノード０のみであるため、タイミングＴ８では無効化やライトデータの送出を行うことができない。そこで、ノード１は、更に次のノード１サイクルＣ１が到来するまで待つことになる。
【００１４】
有効データＮ１は、ノード０がノード０サイクルＣ０（タイミングＴ７）でリングバス５０に送出したものであるので、ノード０サイクルＣ０（タイミングＴ１１）で無効化される。その結果、ノード０サイクルＣ０（タイミングＴ１）では当該スロットは空きスロットになる。ノード１は、ノード０サイクルＣ０（タイミングＴ１１）では当該スロットは空きスロットであるのでライト権を獲得し、次のノード１サイクルＣ１（タイミングＴ１２）で有効データＮ３としてリングバス５０に送出する。この有効データＮ３は、ノード３サイクルＣ３（タイミングＴ１４）でノード３によって取り込まれる。
【００１５】
従来の情報処理システムでは、上記のような動作を繰り返し実行することにより、リングバスに接続された複数のモジュール間でデータ転送が行われる。ちなみに、従来の情報処理システムでは、上記条件１〜３に示したデータ転送を完了するまでに、１４クロックを必要とする。
【００１６】
【発明が解決しようとする課題】
上述したように、従来の情報処理システムでは、受信データの有効性確認は、受信データがノードの内部に取り込まれた後に行われるので、有効データをリングバスから受信すると同時に受信データの無効化や新たなデータのライトができない。
【００１７】
この場合、受信データの無効化はリングバスを一周した後に行われるため、有効データが取り込まれた後はそのスロット内のデータは本来不要であるにも拘わらず、無効化されるまでの間スロットを占有する。また、ノードが送信すべきデータを保持している状態で有効データを受信した場合、有効データが取り込まれた後はそのスロットを用いて送信データを送出できるにも拘わらず、取り込まれたデータと同一のデータがリングバスを一周するまで保持される。その結果、リングバスの使用効率が低下する。
【００１８】
本発明は、上述した問題を解消するためになされたものであり、リングバスの使用効率を高めることのできるデータ転送装置及びデータ転送方法を提供することを目的とする。
【００１９】
【課題を解決するための手段】
本発明の第１の態様に係るデータ転送装置は、上記目的を達成するために、リングバスに接続された複数のノードのそれぞれから送出されたデータを、前記リングバス上を一方向に送られるスロットに収容して前記複数のノードの何れかに転送するデータ転送装置であって、前記複数のノードのそれぞれは、自ノードより上流側のノードに対向するスロットに自ノード宛のデータが存在するかどうかを検出する検出部と、前記検出部により自ノード宛のデータが存在することが検出された場合に、前記スロットが自ノードに対向した時に前記自ノード宛のデータを取り込む制御部、とを備えている。そして、この第１の態様に係るデータ転送装置の検出部は、前記複数のノードのそれぞれが送出したデータの宛先を示すＩＤ信号を前記リングバスにおけるデータの転送に同期して転送するＩＤ線と、前記複数のノードのそれぞれが送出したデータが前記リングバス上に存在することを示すバリッド信号を前記リングバスにおけるデータの転送に同期して転送するバリッド線、とを更に備え、自ノードより上流側の所定ノードに対向する部分の前記ＩＤ線内のＩＤ信号が自ノードを示しており、且つ前記所定ノードに対向する部分の前記バリッド線内にバリッド信号が出力されている場合に、前記自ノード宛のデータが存在することを検出するように構成できる。
【００２０】
この場合、前記複数のノードのそれぞれは、下流側の隣接する下流側ノードにデータを転送する場合に、前記下流側ノードに対向する部分の前記ＩＤ線及び前記バリッド線に前記下流側ノードを指定するＩＤ信号及びバリッド信号をそれぞれ出力するように構成するのが好ましい。
【００２１】
また、この第１の態様に係るデータ転送装置の検出部は、前記複数のノードのそれぞれが送出したデータが前記リングバス上に存在することを示すバリッド信号を前記リングバスにおけるデータの転送に同期して転送するバリッド線を、前記複数のノードのそれぞれに対応して更に備え、自ノードに対応するバリッド線の、自ノードより上流側のノードに対向する部分にバリッド信号が出力されている場合に、前記自ノード宛のデータが存在することを検出するように構成できる。この場合、前記複数のノードのそれぞれは、下流側の隣接する下流側ノードにデータを転送する場合に、前記下流側ノードに対応するバリッド線の、該下流側ノードに対向する部分にバリッド信号を出力するように構成するのが好ましい。
【００２２】
或いはまた、この第１の態様に係るデータ転送装置の制御部は、送出すべきライトデータが保持されていない場合に、前記自ノード宛のデータを取り込むと共に、前記自ノード宛のデータが収容されていたスロットを無効化するように構成できる。或いはまた、上記制御部は、送出すべきライトデータが保持されている場合に、前記自ノード宛のデータを取り込むと共に、前記自ノード宛のデータが収容されていたスロットに前記ライトデータを収容して送出するように構成できる。
【００２３】
また、本発明の第２の態様に係るデータ転送方法は、上記と同様の目的で、リングバスに接続された複数のノードのそれぞれから送出されたデータを、前記リングバス上を一方向に送られるスロットに収容して前記複数のノードの何れかに転送するデータ転送方法であって、前記複数のノードのそれぞれは、Ａ）自ノードより上流側のノードに対向するスロットに自ノード宛のデータが存在するかどうかを検出し、Ｂ）該検出結果が自ノード宛のデータが存在することを示している場合に、前記スロットが自ノードに対向した時に前記自ノード宛のデータを取り込む。そして、この第２の態様に係るデータ転送方法におけるステップ（Ａ）は、前記複数のノードのそれぞれが送出したデータの宛先を示すＩＤ信号を前記リングバスにおけるデータの転送に同期して転送するステップと、前記複数のノードのそれぞれが送出したデータが前記リングバス上に存在することを示すバリッド信号を前記リングバスにおけるデータの転送に同期して転送するステップ、とを更に備え、自ノードより上流側の所定ノードに対向する部分のＩＤ信号が自ノードを示しており、且つ前記所定ノードに対向する部分にバリッド信号が出力されている場合に、前記自ノード宛のデータが存在することを検出するように構成できる。
【００２４】
この場合、前記複数のノードのそれぞれは、下流側の隣接する下流側ノードにデータを転送する場合に、前記下流側ノードに対向する部分のＩＤ信号及びバリッド信号をそれぞれ出力するように構成することが好ましい。
【００２５】
また、この第２の態様に係るデータ転送方法におけるステップ（Ａ）は、前記複数のノードのそれぞれが送出したデータが前記リングバス上に存在することを示すバリッド信号を前記複数のノード毎に前記リングバスにおけるデータの転送に同期して転送するステップを更に備え、自ノードに対応するバリッド線の、自ノードより上流側のノードに対向する部分にバリッド信号が出力されている場合に、前記自ノード宛のデータが存在することを検出するように構成することが好ましい。この場合、前記複数のノードのそれぞれは、下流側の隣接する下流側ノードにデータを転送する場合に、前記下流側ノードに対応するバリッド線の、該下流側ノードに対向する部分にバリッド信号を出力するように構成することが好ましい。
【００２６】
或いはまた、この第２の態様に係るデータ転送方法におけるステップ（Ｂ）は、送出すべきライトデータが保持されていない場合に、前記自ノード宛のデータを取り込むと共に、前記自ノード宛のデータが収容されていたスロットを無効化するように構成できる。或いはまた、送出すべきライトデータが保持されている場合に、前記自ノード宛のデータを取り込むと共に、前記自ノード宛のデータが収容されていたスロットに前記ライトデータを収容して送出するように構成できる。
【００２７】
【発明の実施の形態】
以下、本発明の実施の形態を、図面を参照しながら説明する。なお、以下では、説明を簡単にするために、リングバスに４個のノードが設けられているデータ転送装置について説明するが、本発明に係るデータ転送装置のノード数は４個に限定されず任意である。また、以下では、本発明の特徴であるリード動作のためめの構成及び動作を中心に説明する。
【００２８】
（実施の形態の概要）
先ず、本発明の実施の形態に係るデータ転送装置の概要を説明する。このデータ転送装置は、図１に示すように、リングバス１０とこのリングバス１０に接続された４個のノード０〜３から構成されている。各ノードとしては、例えばプロセッサ、メモリコントローラ、入出力コントローラ、ＤＭＡコントローラといったモジュールを使用できる。
【００２９】
リングバス１０は、例えば３２ビットのバス幅を有するデータバスから構成されている。なお、この実施の形態ではリングバス１０のバス幅を３２ビットとしているが、本発明におけるリングバス１０のバス幅はこれに限定されず任意である。このリングバス１０は、隣り合うノードを相互に接続する。
【００３０】
このデータ転送装置におけるデータの送受は、リングバス１０上を時計回り向に転送されるパケットを用いて行われる。即ち、リングバス１０上のパケットは１サイクル毎に下流側のノードに転送される。従って、パケットは４サイクルでリングバス１０を一周することになる。ノード０、ノード１、ノード２及びノード３のそれぞれには４サイクルの中の１サイクルが割り当てられており、それぞれ「ノード０サイクル」、「ノード１サイクル」、「ノード２サイクル」及び「ノード３サイクル」という。また、各サイクルはスロットと呼ばれる。この場合、このデータ転送装置は、リング状に連結された４つのスロットがリングバス１０上を１サイクル毎に時計回りに移動しながらデータを送受すると考えることができる。
【００３１】
このデータ転送装置では、各ノードは、自己に割り当てられたサイクルでのみ、リングバス１０へのパケットの送出（ライト）及びリングバス１０からのパケットの受け取り（リード）が可能である。例えば、ノード０は、ノード０サイクルが到来した時にパケットのリード及びライトが可能である。
【００３２】
以上のように構成されるデータ転送装置の動作の概要を図２に示す。今、ノード０に着目すると、ノード０は、ノード３サイクルをチェックする（Ｃｈｅｃｋ）。このチェックでは、ノード３サイクルに自ノード０に対するリード要求が存在するかどうかのチェック、パケットをリードする準備、ノード３サイクルのスロットが使用中であるかどうかのチェック、送出すべきライトデータを含むパケットの生成、ライト動作の準備、無効化の準備等が行われる。
【００３３】
また、ノード０は、ノード０サイクルでパケットのリード動作及びライト動作を行う（Ｅｘｅｃｕｔｅ）。なお、ノード０は、ノード１サイクル及びノード２サイクルでは、ノード３から送られてきたパケットを単にノード１に転送するだけである（Ｔｒａｎｓｆｅｒ）。以上は、ノード０についての動作であるが、その他のノードについても同様である。
【００３４】
次に、このデータ転送装置の動作を詳細に説明する。先ず、ライト動作を図３に示したフローチャートを参照しながら説明する。なお、各ノードの動作は同じであるので、以下ではノード０の動作についてのみ説明する。
【００３５】
今、各ノードのサイクルが、図１に示すような状態で存在する場合を考える。ノード０は、先ず、その内部にライト要求が存在するかどうかを調べる（ステップＳ１０）。そして、ライト要求が存在することが判断されると、各ノードはライト権、つまりパケットをリングバス１０に送出する権利を獲得できるかどうかを調べる（ステップＳ１１）。これは、自ノード０から上流側に隣接するノード３に対向しているスロット（ノード３サイクル）が空きであるかどうか又は該スロットに自ノード０宛のデータが存在するかどうかを調べることにより行われる。
【００３６】
そして、ライト権を獲得できることが判断された場合は、送出すべきライトデータを含むパケットを生成する（ステップＳ１２）。次いで、ノード０は、自ノードのサイクル（ノード０サイクル）が到来したかどうかを調べる（ステップＳ１３）。ここで、自ノードのサイクルでない、即ち、未だデータをライトするタイミングでないと判断されると、ライトできるタイミングが到来するまで待機する。そして、自ノードのサイクルが到来したことが判断されると、上記ステップＳ１２で生成したパケットをリングバス１０に送出する（ステップＳ１４）。これにより、パケットの送出が完了する。
【００３７】
なお、上記ステップＳ１０でライト要求が存在しないことが判断された場合はライト動作は行われない。また、上記ステップＳ１１でライト権を確保できないことが判断された場合、つまりノード３サイクルが空きスロットでない場合はライト動作は行われない。この場合、ライト要求は保留されたままになり、次のサイクルで上述したことと同様の動作が行われる。
【００３８】
次に、リード動作を図４に示したフローチャートを参照しながら説明する。各ノードのサイクルが、図１に示すような状態で存在する場合を考える。
【００３９】
ノード０は、先ず自ノード０に対する他ノードからのデータ転送（リード要求）が存在するかどうかを調べる（ステップＳ２０）。これは、自ノード０から上流側に隣接するノード３に対向しているスロット（ノード３サイクル）に自ノード宛のパケットが存在するかどうかを調べることにより行われる。
【００４０】
そして、自ノード宛のパケットが存在することが判断されると、ノード０は、その内部にライト要求が存在するかどうかを調べる（ステップＳ２１）。そして、ライト要求が存在することが判断されると、送出すべきライトデータを含むパケットを生成する（ステップＳ２２）。
【００４１】
次いで、ノード０は、自ノードのサイクル（ノード０サイクル）、即ち、ライトタイミングが到来したかどうかを調べる（ステップＳ２３）。ここで、ライトタイミングが到来していないことが判断されると、ライトタイミングが到来するまで待機する。そして、ライトタイミングが到来したことが判断されると、リングバス１０からパケットを受け取る（ステップＳ２４）。次いで、上記ステップＳ２２で生成したパケットをリングバス１０に送出する（ステップＳ２４）。これにより、パケットの受け取り及び送出が１サイクル内で完了する。
【００４２】
上記ステップＳ２１で、ライト要求が存在しないことが判断されると、ノード０は、無効化の準備を行う（ステップＳ２６）。次いで、ノード０は、自ノードのサイクル（ノード０サイクル）、即ち、ライトタイミングが到来したかどうかを調べる（ステップＳ２７）。ここで、ライトタイミングが到来していないことが判断されると、ライトタイミングが到来するまで待機する。そして、ライトタイミングが到来したことが判断されると、リングバス１０からパケットを受け取る（ステップＳ２８）。次いで、無効化を行う（ステップＳ２８）。これにより、パケットの受け取りが完了し、且つ受け取ったパケットが存在したスロットが空きにされる。なお、上記ステップＳ２０で、自ノード０に対する他ノードからのデータ転送が存在しないことが判断された場合は、上流側に隣接するノードからのデータを下流側に隣接するノードに転送する。
【００４３】
次に、上記のように構成されるデータ転送装置の動作を、従来の技術の欄で示したと同一の条件１〜３の下において、図５に示したタイミングチャートを参照しながら更に詳細に説明する。
【００４４】
図５において、ノード０は、ノード３サイクルＣ３（タイミングＴ２）において、自ノード０に対する有効データＮ０がリングバス１０上に存在し、次のノード０サイクルＣ０で受け取ることができることを確認する。また、このノード０は、ノード１へのライトデータを保持しているので、上記確認がとれたら、ライトデータを含むパケットを生成する。
【００４５】
そして、次のノード０サイクルＣ０（タイミングＴ３）において、リングバス１０から有効データＮ０を受け取ると同時に、ライトデータを含むパケットをリングバス１０に送出する。このパケットは、リングバス１０上では、次のノード１サイクルＣ１（タイミングＴ４）から有効データＮ１になる。
【００４６】
一方、ノード１は、ノード０サイクルＣ０（タイミングＴ３）において、自ノード１に対する有効データＮ１がパケットとして生成されていて、次のノード１サイクルＣ１で受け取ることができることを確認する。また、このノード１は、ノード３へのライトデータを保持しているので、上記確認がとれたら、ライトデータを含むパケットを生成する。
【００４７】
そして、次のノード１サイクルＣ１（タイミングＴ４）において、リングバス１０から有効データＮ１を受け取ると同時に、ライトデータを含むパケットをリングバス１０に送出する。このパケットは、リングバス１０上では、次のノード２サイクルＣ２（タイミングＴ５）から有効データＮ３になる。
【００４８】
更に、ノード３は、ノード２サイクルＣ２（タイミングＴ５）において、自ノード３に対する有効データＮ３がリングバス１０上に存在し、次のノード３サイクルＣ３で受け取ることができることを確認する。また、このノード１は、ノード３へのライトデータを保持していないので、上記確認がとれたら、無効化の準備をする。
【００４９】
そして、次のノード３サイクルＣ３（タイミングＴ６）において、リングバス１０から有効データＮ３を受け取ると同時に、当該スロットの無効化を行う。これにより、そのスロットは、次のノード０サイクルＣ０からリングバス１０上で空きスロットになる。
【００５０】
以上のように構成されるデータ転送装置では、上記条件１〜３に示したデータ転送を完了するまでに６クロックしか必要としない。これに対し、上述した従来の情報処理システムでは、同様のデータ転送を完了するまでに１４クロックを必要とする。このように、この実施の形態に係るデータ転送装置によれば、不要なパケットがリングバスを占有することがないので、リングバスの使用効率を上げることができ、その結果、データの転送に要する時間を大幅に改善することができる。
【００５１】
（実施の形態１）
次に、本発明の実施の形態１に係るデータ転送装置を説明する。このデータ転送装置は、上記概略的に説明したデータ転送装置を更に具体化したものである。このデータ転送装置は、自ノードの上流側に隣接するノードに対向しているスロットに自ノード宛のパケットが存在するかどうかを、ノード番号を示す２本のＩＤ線と１本のバリッド線とによってチェックする。
【００５２】
図６は、この実施の形態１に係るデータ転送装置の構成を示すブロック図である。このデータ転送装置は、リングバス１０、バリッド線（Ｖａｌｉｄ）１１、第１ＩＤ線（ＩＤ［１］）１２、第２ＩＤ線（ＩＤ［０］）１３、ノード０、ノード１、ノード２及びノード３から構成されている。また、ノード０はノード０データ部とノード０制御部とから構成され、ノード１はノード１データ部とノード１制御部とから構成され、ノード２はノード２データ部とノード２制御部とから構成され、ノード３はノード３データ部とノード３制御部とから構成されている。
【００５３】
リングバス１０は、各々がデータ入力端子にセレクタＫ００〜Ｋ０３を備えた４個のＤタイプのフリップフロップＦ００〜Ｆ０３をリング状に接続して構成されている。フリップフロップＦ００〜Ｆ０３はそれぞれノード０〜３に対応し、各フリップフロップにはクロックが共通に供給される。フリップフロップＦ００に備えられたセレクタＫ００の一方の入力端子にはフリップフロップＦ０３の出力が供給され、他方の入力端子にはノード０データ部からライトデータＷｄａｔａＮ０［ｘ］が供給される。また、該セレクタＫ００のセレクト端子には、ノード０制御部からのライトイネーブル信号ＷＥが供給される。該セレクタＫ００は、ライトイネーブル信号ＷＥに応じて、フリップフロップＦ０３の出力及びノード０制御部からのライトデータＷｄａｔａＮ０［ｘ］の一方を選択してフリップフロップＦ００のデータ入力端子に供給する。更に、フリップフロップＦ０３の出力はノード０データ部に供給される。ノード１〜３用の構成も上記と同様であるが、図６では図面の煩雑さを避けるために一部の接続を省略してある。また、フリップフロップＦ００〜Ｆ０３はデータバス幅ｘの分設けられているが、図６では上記と同様の理由により省略してある。
【００５４】
バリッド線１１は、各々がデータ入力端子にセレクタＫ１０〜Ｋ１３を備えた４個のＤタイプのフリップフロップＦ１０〜Ｆ１３をリング状に接続して構成されている。フリップフロップＦ１０〜Ｆ１３はそれぞれノード０〜３に対応し、各フリップフロップにはクロックが共通に供給される。フリップフロップＦ１０に備えられたセレクタＫ１０の一方の入力端子にはフリップフロップＦ１３の出力が供給され、他方の入力端子にはノード０制御部からの信号ＶＤＮ０が供給される。また、該セレクタＫ１０のセレクト端子には、ノード０制御部からの信号ＶＳＮ０が供給される。該セレクタＫ１０は、信号ＶＳＮ０に応じて、フリップフロップＦ１３の出力及びノード０制御部からの信号ＶＤＮ０の一方を選択してフリップフロップＦ１０のデータ入力端子に供給する。更に、フリップフロップＦ１３の出力はノード０の制御部に供給される。他のフリップフロップＦ１１〜Ｆ１３の周囲の回路構成も同様である。
【００５５】
第１ＩＤ線１２は、各々がデータ入力端子にセレクタＫ２０〜Ｋ２３を備えた４個のＤタイプのフリップフロップＦ２０〜Ｆ２３をリング状に接続して構成されている。フリップフロップＦ２０〜Ｆ２３はそれぞれノード０〜３に対応し、各フリップフロップにはクロックが共通に供給される。フリップフロップＦ２０に備えられたセレクタＫ２０の一方の入力端子にはフリップフロップＦ２３の出力が供給され、他方の入力端子にはノード０制御部からの信号ＩＤＤＮ０［１］が供給される。また、該セレクタのセレクト端子には、ノード０制御部からの信号ＩＤＳＮ０［１］が供給される。該セレクタＫ２０は、信号ＩＤＳＮ０［１］に応じて、フリップフロップＦ２３の出力及びノード０制御部からの信号ＩＤＤＮ０［１］の一方を選択してフリップフロップＦ２０のデータ入力端子に供給する。更に、フリップフロップＦ２２の出力はノード０制御部に供給される。ノード１〜３用の構成も同様である。
【００５６】
同様に、第２ＩＤ線１３は、各々がデータ入力端子にセレクタＫ３０〜Ｋ３３を備えた４個のＤタイプのフリップフロップＦ３０〜Ｆ３３をリング状に接続して構成されている。フリップフロップＦ３０〜Ｆ３３はそれぞれノード０〜３に対応し、各フリップフロップにはクロックが共通に供給される。フリップフロップＦ３０に備えられたセレクタＫ３０の一方の入力端子にはフリップフロップＦ３３の出力が供給され、他方の入力端子にはノード０制御部からの信号ＩＤＤＮ０［０］が供給される。また、該セレクタＫ３０のセレクト端子には、ノード０制御部からの信号ＩＤＳＮ０［０］が供給される。該セレクタＫ３０は、信号ＩＤＳＮ０［０］に応じて、フリップフロップＦ３３の出力及びノード０制御部からの信号ＩＤＤＮ０［０］の一方を選択してフリップフロップＦ３０のデータ入力端子に供給する。更に、フリップフロップＦ３２の出力はノード０制御部に供給される。ノード１〜３用の構成も同様である。
【００５７】
以上のように構成されるデータ転送装置の動作を、図７に示したタイミングチャートを参照しながら説明する。このタイミングチャートは、上述した条件１〜３の下で動作する場合を示している。
【００５８】
先ず、図７（２）に示すように、ノード３サイクルＣ３におけるリングバスＲｄａｔａＮ３［ｘ］上の有効データはＮ０Ｄａｔａであり、ノード３宛のデータではない。従って、ノード３サイクルＣ３では、リングバスＲｄａｔａＮ３［ｘ］上のデータＮ０Ｄａｔａのリード、無効化及びライトの何れも起こらず、次のノード０サイクルＣ０のリングバスＲｄａｔａＮ０［ｘ］へ送られる。
【００５９】
一方、ノード０の制御部は、フリップフロップＦ１２からのバリッド信号ＶａｌｉｄＮ３が有効データであることを示しており（図７（８）参照）、且つ、フリップフロップＦ２２からの信号ＩＤＮ３［１］及びフリップフロップＦ３２からの信号ＩＤＮ３［０］（以下、「ＩＤＮ３［１：０］」と総称する）が自ノード０を示している（図７（１２）参照）ことから、図７中の矢印（ａ）で示すように、次のノード０サイクルＣ０で信号ＶＳＮ０をセットする（図７（１９）参照）。上記信号ＶａｌｉｄＮ３は次のノード０サイクルＣ０へ送られて信号ＶａｌｉｄＮ０になる（図７（９）参照）。また、信号ＩＤＮ３［１：０］は、次のノード０サイクルへ送られて信号ＩＤＮ０［１：０］になる（図７（１３）参照）。
【００６０】
また、ノード０の制御部の内部では、図７中の矢印（ｂ）で示すように、ライトデータを保持していることを表す信号ＷｒｅｑＮ０がセットされている（図７（１６）参照）ことから、次のノード０サイクルＣ０で信号ＶＤＮ０をセットする（図７（１８）参照）。また、ノード０の制御部は、上記保持しているライトデータの宛先Ｎ１を表す信号ＩＤＤＮ０［１：０］を出力する（図７（１７）参照）。このうち、信号ＩＤＤＮ０［１］はフリップフロップＦ２０のセレクタのデータ入力端子へ、信号ＩＤＤＮ０［０］はフリップフロップＦ３０のセレクタのデータ入力端子へ、それぞれ供給される。更に、図７には図示されていないが、ノード０の制御部は、データ部に保持されているライトデータの宛先Ｎ１を選択するための信号ＩＤＳＮ０［１：０］を出力する。このうち、信号ＩＤＳＮ０［１］はフリップフロップＦ２０のセレクタのセレクト入力端子へ、信号ＩＤＳＮ０［０］はフリップフロップＦ３０のセレクタのセレクト入力端子へ、それぞれ供給される。
【００６１】
次のノード０サイクルＣ０では、ノード０の制御部は、信号ＩＤＮ０［１：０］が自ノード０を示しており（図７（１３）参照）、且つ信号ＶａｌｉｄＮ０がオンにされているのでリードイネーブル信号ＲＥをアクティブにする。これにより、リングバスＲｄａｔａＮ０［ｘ］に流れているデータＮ０Ｄａｔａがノード０のデータ部に取り込まれる。また、ノード０のデータ部は、保持しているライトデータＮ１Ｄａｔａを信号ＷｄａｔａＮ０［ｘ］としてフリップフロップＦ００のセレクタに供給し（図７（６）参照）、ライト動作の準備をする。
【００６２】
上記の状態で、ノード０サイクルＣ０からノード１サイクルＣ１に移行することにより次のような各種データの切り替えが行われる。即ち、ノード０の制御部は、信号ＶＳＮ０及び信号ＶＤＮ０がセットされていることにより（図７（１８）及び（１９）参照）、図７中の矢印（ｃ）で示すように、ライトイネーブル信号ＷＥ（図７では図示を省略してある）をアクティブにする。これにより、フリップフロップＦ００のセレクタは、ノード０のデータ部からの信号ＷｄａｔａＮ０［ｘ］を選択する。その結果、セレクタの一方の入力端子に供給されているデータＮ０Ｄａｔａは捨てられ（図７（３）参照）、フリップフロップＦ００からリングバスＲｄａｔａＮ１［ｘ］に有効データＮ１Ｄａｔａが出力される（図７（４）参照）。
【００６３】
また、信号ＶＳＮ０及び信号ＶＤＮ０がセットされていることにより、フリップフロップＦ１０のセレクタは、ノード０の制御部からの信号ＶＤＮ０を選択する。その結果、フリップフロップＦ１０から信号ＶａｌｉｄＮ１が出力される（図７（１０）参照）。
【００６４】
更に、ノード０の制御部からの信号ＩＤＳＮ０［１］信号及びＩＤＳＮ０［０］がフリップフロップＦ２０及びＦ３０のセレクタのセレクト入力端子にそれぞれ供給されることにより、ノード０の制御部からの信号ＩＤＤＮ０［１］及び信号ＩＤＤＮ０［０］をそれぞれ選択する。その結果、フリップフロップＦ２０及びＦ３０から信号ＩＤＤＮ０［１］及び信号ＩＤＤＮ０［０］がＩＤＮ１［１：０］として出力される（図７（１４）参照）。
【００６５】
以上により、ノード０がリングバス１０からデータＮ０Ｄａｔａをリードするという動作と共に、データＮ１Ｄａｔａをリングバス１０にライトし、且つデータＮ１Ｄａｔａが有効である旨を示すバリッド信号及びデータＮ１Ｄａｔａの宛先を示すＩＤを出力するという動作がノード０サイクルＣ０という１サイクルで行われる。
【００６６】
次に、ノード１の制御部は、フリップフロップＦ１３からのバリッド信号ＶａｌｉｄＮ０が有効データであることを示しており（図７（９）参照）、且つ、フリップフロップＦ２３及びＦ２４からの信号ＩＤＮ０［１：０］が自ノード１を示している（図７（１７）参照）ことから、図７中の矢印（ｄ）で示すように、次のノード１サイクルＣ１で信号ＶＳＮ１をセットする（図７（２３）参照）。上記信号ＶａｌｉｄＮ３は次のノード０サイクルＣ０へ送られて信号ＶａｌｉｄＮ０になる（図７（９）参照）。
【００６７】
また、ノード１の制御部の内部では、図７中の矢印（ｅ）で示すように、ライトデータを保持していることを表す信号Ｗｒｅｑ１がセットされている（図７（２０）参照）ことから、次のノード１サイクルで信号ＶＤＮ１をセットする（図７（２２）参照）。また、ノード１の制御部は、上記保持しているライトデータの宛先Ｎ３を表す信号ＩＤＤＮ１［１：０］を出力する（図７（２１）参照）。このうち、信号ＩＤＤＮ１［１］はフリップフロップＦ２１のセレクタのデータ入力端子へ、信号ＩＤＤＮ１［０］はフリップフロップＦ３１のセレクタのデータ入力端子へ、それぞれ供給される。更に、図７には図示されていないが、ノード１の制御部は、データ部に保持されているライトデータの宛先Ｎ３を選択するための信号ＩＤＳＮ１［１：０］を出力する。このうち、信号ＩＤＳＮ１［１］はフリップフロップＦ２１のセレクタのセレクト入力端子へ、信号ＩＤＳＮ１［０］はフリップフロップＦ３１のセレクタのセレクト入力端子へ、それぞれ供給される。
【００６８】
次のノード１サイクルＣ１では、ノード１の制御部は、信号ＩＤＮ１［１：０］が自ノード１を示しており（図７（１４）参照）、且つ信号ＶａｌｉｄＮ１がオンにされているのでリードイネーブル信号（図示せず）をアクティブにする。これにより、リングバスＲｄａｔａＮ１［ｘ］に流れているデータＮ１Ｄａｔａがノード１のデータ部に取り込まれる。また、ノード１のデータ部は、保持しているライトデータＮ３Ｄａｔａを信号ＷｄａｔａＮ１［ｘ］としてフリップフロップＦ００のセレクタに供給し（図７（７）参照）、ライト動作の準備をする。
【００６９】
上記の状態で、ノード１サイクルＣ１からノード２サイクルＣ２に移行することにより次のような各種データの切り替えが行われる。即ち、ノード１の制御部は、信号ＶＳＮ１及び信号ＶＤＮ１がセットされていることにより（図７（２２）及び（２３）参照）、図７中の矢印（ｆ）で示すように、ライトイネーブル信号（図示せず）をアクティブにする。これにより、フリップフロップＦ０１のセレクタは、ノード１のデータ部からの信号ＷｄａｔａＮ１［ｘ］を選択する。その結果、セレクタの一方の入力端子に供給されているデータＮ１Ｄａｔａは捨てられ（図７（４）参照）、フリップフロップＦ０１からリングバスＲｄａｔａＮ２［ｘ］に有効データＮ３Ｄａｔａが出力される（図７（２）参照）。
【００７０】
また、信号ＶＳＮ１がセットされていることにより、フリップフロップＦ１１のセレクタは、ノード１の制御部からの信号ＶＤＮ１を選択する。その結果、フリップフロップＦ１１から信号ＶａｌｉｄＮ２が出力される（図７（１２）参照）。
【００７１】
更に、ノード１の制御部からの信号ＩＤＳＮ１［１］信号及びＩＤＳＮ１［０］がフリップフロップＦ２１及びＦ３１のセレクタのセレクト入力端子にそれぞれ供給されることにより、ノード１の制御部からの信号ＩＤＤＮ１［１］及び信号ＩＤＤＮ１［０］をそれぞれ選択する。その結果、フリップフロップＦ２１及びＦ３１から信号ＩＤＤＮ１［１］及び信号ＩＤＤＮ１［０］がＩＤＮ２［１：０］として出力される（図７（１５）参照）。以下、同様の動作が繰り返される。
【００７２】
以上の説明では、ノード０及びノード１はリングバスからデータを受け取ると共に、リングバスへ送出すべきライトデータを保持している場合について説明したが、ライトデータを保持していない場合は、無効化が行われることになる。この無効化は、上述したライト動作において、ライトイネーブル信号の出力を抑止すると共に、信号Ｖａｌｉｄをクリアすることによって行われる。
【００７３】
以上説明したように、このデータ転送装置では、自ノード宛の有効データが存在するかどうかを２通りの方法で検出している。先ず、自ノードより２以上の上流側に存在するノードがライトした場合は、自ノードの上流側に隣接ノードに対応するバリッド信号を参照して自ノード宛の有効データが存在するかどうかを判断している。一方、自ノードの上流側に隣接するノードがライトした場合は、バリッド信号を参照していたのでは自ノードがライトできるかどうかの判断が遅れるので、バリッド信号と同様の意味を持つ信号ＶＤＮ０〜３及び信号ＶＳＮ０〜３を参照して自ノード宛の有効データが存在するかどうかを判断している。図７の矢印（ｄ）及び（ｅ）がこれに相当する。
【００７４】
この実施の形態１に係るデータ転送装置によれば、或るノードは、その上流側のノードの状態を調べ、自ノード宛の有効データが存在すれば次の自ノードのサイクルでそれを取り込む。この時、リングバスへ送出すべきライトデータを保持していれば、そのサイクルでライトデータをリングバスへ送出し、保持していなければ無効化する。従って、リードとライト又は無効化とが同一サイクルで行われることになり、従来の情報処理システムのような不要なデータがリングバスを一周することがなくなるので、データの転送効率を高めることができる。
【００７５】
また、自ノード宛の有効データの有無の判定及び宛先の特定を各ノードに付与されたＩＤと１本のバリッド線を用いて行うようにしたので、回路構成が簡単になるという利点がある。また、以上の説明では、４つのノードサイクル中に１つの有効データしかない場合を例に挙げたが、最大４個（ノード数に等しい）の有効データがリングバスに適宜存在し得る。
【００７６】
（実施の形態２）
次に、本発明の実施の形態２に係るデータ転送装置を説明する。このデータ転送装置は、上記概略的に説明したデータ転送装置を更に具体化したものである。このデータ転送装置は、自ノードの上流側に隣接するノードに対向しているスロットに自ノード宛のパケットが存在するかどうかを、各ノードに割り当てられた４本のバリッド線を使用してチェックする。
【００７７】
図８及び図９は、この実施の形態２に係るデータ転送装置の構成を示すブロック図である。このデータ転送装置は、リングバス１０、バリッド線１５、ノード０、ノード１、ノード２及びノード３から構成されている。また、ノード０はノード０データ部とノード０制御部とから構成され、ノード１はノード１データ部とノード１制御部とから構成され、ノード２はノード２データ部とノード２制御部とから構成され、ノード３はノード３データ部とノード３制御部とから構成されている。また、バリッド線１５は、第１バリッド線Ｖａｌｉｄ［０］、第２バリッド線Ｖａｌｉｄ［１］、第３バリッド線Ｖａｌｉｄ［２］及び第４バリッド線Ｖａｌｉｄ［３］（以下、Ｖａｌｉｄ［３：０］と総称する）から構成されている。
【００７８】
リングバス１０の構成は、上述した実施の形態１に係るデータ転送装置と同じである。第１バリッド線Ｖａｌｉｄ［０］は、ノード０のデータが各サイクルにおいて有効であるかどうかを示す。この第１バリッド線Ｖａｌｉｄ［０］は、各々がデータ入力端子にセレクタを備えた４個のＤタイプのフリップフロップＦ１０〜Ｆ１３をリング状に接続して構成されている。フリップフロップＦ１０〜Ｆ１３はそれぞれノード０〜３に対応し、各フリップフロップにはクロックが共通に供給される。フリップフロップＦ１０に備えられたセレクタの一方の入力端子にはフリップフロップＦ１３からの信号ＶａｌｉｄＮ０［０］が供給され、他方の入力端子にはノード０制御部からの信号ＶＤＮ０［０］が供給される。また、該セレクタのセレクト端子には、ノード０制御部からの信号ＶＳＮ０［０］が供給される。他のフリップフロップＦ１１〜Ｆ１３の周囲の回路構成も上記と同様である。
【００７９】
また、第２バリッド線Ｖａｌｉｄ［１］、第３バリッド線Ｖａｌｉｄ［２］及び第４バリッド線Ｖａｌｉｄ［３］の構成も上記第１バリッド線Ｖａｌｉｄ［０］と同様である。
【００８０】
ノード０制御部には、このノード０に対向する信号として、フリップフロップＦ１３、Ｆ２３、Ｆ３３及びＦ４３からの信号ＶａｌｉｄＮ０［３：０］が入力される。また、このノード０の上流側に隣接するノード３に対向する信号として、フリップフロップＦ１２からの信号ＶａｌｉｄＮ３［０］が入力される。更に、このノード０制御部には、このノード０の上流側に隣接するノード３制御部からの信号ＶＤＮ３［０］及びＶＳＮ３［０］が入力される。
【００８１】
ノード１制御部には、このノード１に対向する信号として、フリップフロップＦ１０、Ｆ２０、Ｆ３０及びＦ４０からの信号ＶａｌｉｄＮ１［３：０］が入力される。また、このノード１の上流側に隣接するノード０に対向する信号として、フリップフロップＦ２３からの信号ＶａｌｉｄＮ０［１］が入力される。更に、このノード１制御部には、このノード１の上流側に隣接するノード０制御部からの信号ＶＤＮ０［１］及びＶＳＮ０［１］が入力される。
【００８２】
ノード２制御部には、このノード２に対向する信号として、フリップフロップＦ１１、Ｆ２１、Ｆ３１及びＦ４１からの信号ＶａｌｉｄＮ２［３：０］が入力される。また、このノード２の上流側に隣接するノード１に対向する信号として、フリップフロップＦ３０からの信号ＶａｌｉｄＮ１［２］が入力される。更に、このノード２制御部には、このノード２の上流側に隣接するノード１制御部からの信号ＶＤＮ１［２］及びＶＳＮ１［２］が入力される。
【００８３】
ノード３制御部には、このノード３に対向する信号として、フリップフロップＦ１２、Ｆ２２、Ｆ３２及びＦ４２からの信号ＶａｌｉｄＮ３［３：０］が入力される。また、このノード３の上流側に隣接するノード２に対向する信号として、フリップフロップＦ４１からの信号ＶａｌｉｄＮ２［３］が入力される。更に、このノード３制御部には、このノード３の上流側に隣接するノード２制御部からの信号ＶＤＮ２［３］及びＶＳＮ２［３］が入力される。
【００８４】
以上のように構成されるデータ転送装置の動作を、図１０に示したタイミングチャートを参照しながら説明する。このタイミングチャートは、上述した条件１〜３の下で動作する場合を示している。
【００８５】
先ず、図１０（２）に示すように、ノード３サイクルＣ３におけるリングバスＲｄａｔａＮ３［ｘ］上の有効データはＮ０Ｄａｔａであり、ノード３宛のデータではない。従って、ノード３サイクルＣ３では、リングバスＲｄａｔａＮ３［ｘ］上のデータＮ０Ｄａｔａのリード、無効化及びライトの何れも起こらず、次のノード０サイクルＣ０のリングバスＲｄａｔａＮ０［ｘ］へ送られる。
【００８６】
一方、ノード０の制御部は、フリップフロップＦ１２からのバリッド信号ＶａｌｉｄＮ３［０］がセットされ、自ノード０宛の有効データが存在することを示している（図１０（８）参照）ことから、次のノード０サイクルＣ０で自ノード０宛のデータを無効化するために、信号ＶＤＮ０［０］をリセットし（図１０（１３）参照）、信号ＶＳＮ０［０］をセットする（図１０（１４）参照）。また、ノード０データ部がノード１宛のライトデータを保持していることから、図１０中の矢印（ａ）で示すように、次のノード０サイクルＣ０で信号ＶＳＮ０［１］をセットする（図１０（１８）参照）。上記信号ＶａｌｉｄＮ３［０］は次のノード０サイクルＣ０へ送られて信号ＶａｌｉｄＮ０［０］になる（図１０（９）参照）。
【００８７】
また、ノード０の制御部の内部では、図１０中の矢印（ｂ）で示すように、ライトデータを保持していることを表す信号ＷｒｅｑＮ０がセットされていて（図１０（１６）参照）、該ライトデータがノード１宛であるので、次のノード０サイクルＣ０で信号ＶＤＮ０［１］をセットする（図１０（１７）参照）。
【００８８】
次のノード０サイクルＣ０では、ノード０の制御部は、信号ＶａｌｉｄＮ０［０］がオンにされているので、リードイネーブル信号ＲＥをアクティブにする。これにより、リングバスＲｄａｔａＮ０［ｘ］に流れているデータＮ０Ｄａｔａがノード０のデータ部に取り込まれる。また、ノード０のデータ部は、保持しているライトデータＮ１Ｄａｔａを信号ＷｄａｔａＮ０［ｘ］としてフリップフロップＦ００のセレクタに供給し（図１０（６）参照）、ライト動作の準備をする。
【００８９】
上記の状態で、ノード０サイクルＣ０からノード１サイクルＣ１に移行することにより次のような各種データの切り替えが行われる。即ち、ノード０の制御部は、信号ＶＳＮ０［１］及び信号ＶＤＮ０［１］がセットされていることにより（図１０（１７）及び（１８）参照）、図１０中の矢印（ｃ）で示すように、ライトイネーブル信号ＷＥ（図１０では図示を省略してある）をアクティブにする。これにより、フリップフロップＦ００のセレクタは、ノード０のデータ部からの信号ＷｄａｔａＮ０［ｘ］を選択する。その結果、セレクタの一方の入力端子に供給されているデータＮ０Ｄａｔａは捨てられ（図１０（３）参照）、フリップフロップＦ００からリングバスＲｄａｔａＮ１［ｘ］に有効データＮ１Ｄａｔａが出力される（図１０（４）参照）。
【００９０】
また、信号ＶＳＮ０［１］及び信号ＶＤＮ０［１］がセットされていることにより、ノード０がノード１宛の有効データをリングバス１０上にライトすることを認識するため、フリップフロップＦ２０のセレクタは、ノード０の制御部からの信号ＶＤＮ０［１］を選択する。その結果、フリップフロップＦ２０から信号ＶａｌｉｄＮ１［１］が出力される（図１０（１０）参照）。また、信号ＶＤＮ０［０］がリセットされ（図１０（１３）参照）、信号ＶＳＮ０［０］がセットされている（図１０（１４）参照）ことにより、次ノード１サイクルＣ１では、信号ＶａｌｉｄＮ１［０］はリセットされる（図１０（１５）参照）。これにより、自ノード０宛のデータは無効化されることになる。
【００９１】
以上により、ノード０がリングバス１０からデータＮ０Ｄａｔａをリードするという動作と共に、データＮ１Ｄａｔａをリングバス１０にライトし、且つデータＮ１Ｄａｔａが有効である旨を示すバリッド信号ＶａｌｉｄＮ１［１］を出力するという動作がノード０サイクルＣ０という１サイクルで行われる。
【００９２】
次に、ノード１の制御部は、信号ＶＳＮ０［１］及び信号ＶＤＮ０［１］がセットされ、自ノード１宛の有効データが存在することを示していることから、図１０中の矢印（ｄ）で示すように、次のノード１サイクルＣ１で信号ＶＳＮ１［３］をセットする（図１０（２１）参照）。また、ノード１制御部は自ノード１宛のデータを無効化するため信号ＶＤＮ１［１］をリセットし（図１０（２２参照）、信号ＶＳＮ１［１］をセットする（図１０（２３）参照）。
【００９３】
また、ノード１の制御部の内部では、図１０中の矢印（ｅ）で示すように、ライトデータを保持していることを表す信号ＷｒｅｑＮ１がセットされており（図１０（１９）参照）、且つ保持しているライトデータがノード３宛であるので、次のノード１サイクルＣ１で信号ＶＤＮ１［３］をセットする（図１０（２０）参照）。
【００９４】
次のノード１サイクルＣ１では、ノード１の制御部は、信号ＶａｌｉｄＮ１［１］がオンにされているので（図１０（１０）参照）、リードイネーブル信号ＲＥをアクティブにする。これにより、リングバスＲｄａｔａＮ１［ｘ］に流れているデータＮ１Ｄａｔａがノード１のデータ部に取り込まれる。また、ノード１のデータ部は、保持しているライトデータＮ３Ｄａｔａを信号ＷｄａｔａＮ１［ｘ］としてフリップフロップＦ０１のセレクタに供給し（図１０（７）参照）、ライト動作の準備をする。
【００９５】
上記の状態で、ノード１サイクルＣ１からノード２サイクルＣ２に移行することにより次のような各種データの切り替えが行われる。即ち、ノード１の制御部は、信号ＶＳＮ１［３］及び信号ＶＤＮ１［３］がセットされていることにより（図１０（２０）及び（２１）参照）、図１０中の矢印（ｆ）で示すように、ライトイネーブル信号ＷＥ（図１０では図示を省略してある）をアクティブにする。これにより、フリップフロップＦ０１のセレクタは、ノード１のデータ部からの信号ＷｄａｔａＮ１［ｘ］を選択する。その結果、セレクタの一方の入力端子に供給されているデータＮ１Ｄａｔａは捨てられ（図１０（３）参照）、フリップフロップＦ０１からリングバスＲｄａｔａＮ２［ｘ］に有効データＮ３Ｄａｔａが出力される（図１０（５）参照）。
【００９６】
また、信号ＶＳＮ１［３］及び信号ＶＤＮ１［３］がセットされていることにより、ノード１がノード３宛の有効データをリングバス１０上にライトすることを認識するため、フリップフロップＦ４１のセレクタは、ノード１の制御部からの信号ＶＤＮ１［３］を選択する。その結果、フリップフロップＦ４１から信号ＶａｌｉｄＮ２［３］が出力される（図１０（１１）参照）。また、信号ＶＤＮ１［１］がリセットされ（図１０（２２）参照）、信号ＶＳＮ１［１］がセットされている（図１０（２３）参照）ことにより、次ノード２サイクルＣ２では、信号ＶａｌｉｄＮ２［１］はリセットされる（図１０（２４）参照）。これにより、自ノード１宛のデータは無効化されることになる。以下、同様の動作が繰り返される。
【００９７】
以上の説明では、ノード０及びノード１はリングバスからデータを受け取ると共に、リングバスへ送出すべきライトデータを保持している場合について説明したが、ライトデータを保持していない場合は、ライト先のノード番号と同じＶａｌｉｄ線へのライトは行われないので、無効化が行われることになる。
【００９８】
以上説明したように、このデータ転送装置でも、上述した実施の形態１と同様に、自ノード宛の有効データが存在するかどうかを２通りの方法で検出している。ちなみに、自ノードの上流側に隣接するノードがライトした場合は、図１０の矢印（ｄ）及び（ｅ）に示すように動作することにより自ノード宛の有効データが存在するかどうかを判断している。
【００９９】
この実施の形態２に係るデータ転送装置によれば、上述した実施の形態１に係るデータ転送装置と同様の効果を奏する。また、自ノード宛の有効データの有無の判定及び宛先の特定を４本のバリッド線を用いて行うようにしたので、データ転送装置の制御が簡単になるという利点がある。また、この実施の形態２によれば、各ノードに対応するバリッド線をオンにするだけで特定のノードのみならず、全ノードに対して一斉にデータを転送するというブロードキャスト転送が可能になる。
【０１００】
以上説明したデータ転送装置は、ＳＯＣ（Ｓｉｌｉｃｏｎ  Ｏｎ  Ｃｈｉｐ）のロジックに組み込むことができる。この構成によれば、リング接続方式の利点である種々の効果を発揮させることができる。
【０１０１】
【発明の効果】
以上詳述したように、本発明によれば、リングバスの使用効率を高めることのできるデータ転送装置及びデータ転送方法を提供できる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係るリング接続方式を採用したデータ転送装置の概略構成を示すブロック図である。
【図２】図１に示したデータ転送装置の概略の動作を説明するための図である。
【図３】図１に示したデータ転送装置における各ノードのライト動作を示すフローチャートである。
【図４】図１に示したデータ転送装置における各ノードのリード動作を示すフローチャートである。
【図５】図１に示したデータ転送装置の動作を示すタイミングチャートである。
【図６】本発明の実施の形態１に係るデータ転送装置の構成を示すブロック図である。
【図７】図６に示したデータ転送装置の動作を示すタイミングチャートである。
【図８】本発明の実施の形態２に係るデータ転送装置の構成を示すブロック図（その１）である。
【図９】本発明の実施の形態２に係るデータ転送装置の構成を示すブロック図（その２）である。
【図１０】図８及び図９に示したデータ転送装置の動作を示すタイミングチャートである。
【図１１】従来のリングバス接続方式を採用した情報処理システムの構成を示す図である。
【図１２】図１１に示した情報処理システムの動作を示すタイミングチャートである。
【符号の説明】
０〜３  ノード
１０  リングバス
１１  バリッド線
１２  第１ＩＤ線
１３  第２ＩＤ線
１５  バリッド線
Ｆ００〜Ｆ４３  フリップフロップ
Ｋ００〜Ｋ３３  セレクタ
【図１】
0003586603.tif 000002
【図２】
0003586603.tif 000003
【図３】
0003586603.tif 000004
【図４】
0003586603.tif 000005
【図５】
0003586603.tif 000006
【図６】
0003586603.tif 000007
【図７】
0003586603.tif 000008
【図８】
0003586603.tif 000009
【図９】
0003586603.tif 000010
【図１０】
0003586603.tif 000011
【図１１】
0003586603.tif 000012
【図１２】
0003586603.tif 000013