(57)【要約】【課題】ループ状の通信経路に接続された複数のデバイスを備えるデバイスシステムを容易に実現する。【解決手段】ループ状の通信経路により接続された複数のデバイスを備えるデバイスシステムは、前記複数のデバイスのうち、少なくとも２以上のデバイスはプロセッサで構成されている。前記通信経路は、各デバイスに備えられるノードを順に接続することによりループ状に形成されている。各ノードの間を接続する複数の部分経路のうち、少なくとも１つの部分経路中には、少なくとも１つのダミーノードが設けられている。【選択図】図１
2007122576.tif 000002
【特許請求の範囲】
【請求項１】
ループ状の通信経路により接続された複数のデバイスを備えるデバイスシステムであって、
前記複数のデバイスのうち、少なくとも２以上のデバイスはプロセッサで構成されており、
前記通信経路は、各デバイスに備えられるノードを順に接続することによりループ状に形成されており、
各ノードの間を接続する複数の部分経路のうち、少なくとも１つの部分経路中には、少なくとも１つのダミーノードが設けられている、
ことを特徴とするデバイスシステム。
【請求項２】
請求項１記載のデバイスシステムであって、
前記ダミーノードは、前記ダミーノードを設けない場合において、伝送する信号の遅延量が所定量以上となる部分経路中に設けられている、
ことを特徴とするデバイスシステム。
【請求項３】
請求項１記載のデバイスシステムであって、
各部分経路中には、それぞれ、少なくとも１つのダミーノードが設けられている、
ことを特徴とするデバイスシステム。
【請求項４】
請求項１ないし請求項３のいずれかに記載のデバイスシステムであって、
前記デバイスシステムは、１つの半導体基板上に集積化されている
ことを特徴とするデバイスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ループ状の通信経路に接続された複数のデバイスを備えるデバイスシステムに関する。
【背景技術】
【０００２】
マルチプロセッサシステムのように、複数のプロセッサや、メモリコントローラ、キャッシュコントローラ、Ｉ／Ｏインタフェース等の複数のデバイスを備えるデバイスシステムには、それぞれのデバイスに備えられるノードを順に接続することにより形成されたループ状の通信経路（以下、「ループバス」とも呼ぶ）を備えているものがある（例えば、特許文献１，２参照）。
【０００３】
【特許文献１】特開２００１−１２５８７５号公報
【特許文献２】特開昭５８−４４２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
各ノード間の配線は、各デバイスの実装レイアウト上の位置関係に応じて、長くなったり短くなったりするため、配線の長さによっては信号遅延のために、所望する周波数での信号伝送が出来ない場合がある。かかる場合には、所望する周波数での信号伝送が可能となるように、性能の異なるデバイスへの変更や実装レイアウトの変更を行う必要があり、デバイスシステムの設計上不便な点があった。
【０００５】
本発明は、上述の課題を解決するためになされたものであり、マルチプロセッサシステムのように、複数のプロセッサや、メモリコントローラ、キャッシュコントローラ、Ｉ／Ｏインタフェース等の種々の複数のデバイスを備えるデバイスシステムにおいて、ループバスに接続された複数のデバイスを備えるデバイスシステムを容易に実現することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述の課題の少なくとも一部を解決するために、本発明は、
ループ状の通信経路により接続された複数のデバイスを備えるデバイスシステムであって、
前記複数のデバイスのうち、少なくとも２以上のデバイスはプロセッサで構成されており、
前記通信経路は、各デバイスに備えられるノードを順に接続することによりループ状に形成されており、
各ノードの間を接続する複数の部分経路のうち、少なくとも１つの部分経路中には、少なくとも１つのダミーノードが設けられている、
ことを特徴とする。
【０００７】
上記構成では、ダミーノードを設けることにより、２つのノード間の配線長を実効的に短くして、信号遅延を抑制することが可能となるので、ループバスに接続された各デバイスに対して、所望の動作周波数で信号を伝達することが可能なデバイスシステムを容易に実現することができる。また、ダミーノードを設けることにより、通信経路中を同時に伝送する情報数を増加させることができる。
【０００８】
ここで、前記ダミーノードは、前記ダミーノードを設けない場合において、伝送する信号の遅延量が所定量以上となる部分経路中に設けられていることが好ましい。
【０００９】
上記構成では、伝送する信号の遅延量が所定量以上となる部分経路中の信号遅延を効果的に抑制することができるので、所望の動作周波数で信号を伝達することが可能なデバイスシステムを容易に実現することができる。
【００１０】
また、各部分経路中には、それぞれ、少なくとも１つのダミーノードが設けられているようにしてもよい。
【００１１】
上記構成では、通信経路中を同時に伝送する情報数をより多くすることが可能である。
【００１２】
なお、前記デバイスシステムは、１つの半導体基板上に集積化することが可能である。
【００１３】
デバイスシステムを集積化する場合においては、半導体基板上の各デバイスの実装配置に関係なく、各デバイスに対して、所望の動作周波数で信号を伝達することが可能なデバイスシステムを容易に実現することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態について、実施例に基づき以下の順序で説明する。
Ａ．実施例：
Ａ１．デバイスシステムの構成例：
Ａ２．デバイス間の通信動作：
Ａ２．１．パケットのデータ構造：
Ａ２．２．ノードの構成および動作：
Ａ２．３．ダミーノードの構成および動作：
Ａ２．４．通信動作の説明：
Ａ３．実施例の効果：
Ｂ．変形例：
【００１５】
Ａ．実施例：
Ａ１．デバイスシステムの構成例：
図１は、本発明のデバイスシステムの実施例としての構成例を示すブロック図である。このデバイスシステム１０は、５つのデバイス２０Ａ〜２０Ｅを備えており、第１〜第３のデバイス２０Ａ〜２０Ｃを３つのプロセッサ、第４のデバイス２０Ｄをメモリコントローラ、および、第５のデバイス２０ＥをＩ／Ｏインタフェースとして構成し、各デバイスを１チップ上に集積化したマイクロプロセッサを例に示している。各プロセッサは、それぞれ、ＣＰＵや、キャッシュメモリ、ＲＯＭ、ＲＡＭ、バスコントローラ、ノード等の周辺回路を含むユニットを意味している。
【００１６】
５つのデバイス２０Ａ〜２０Ｅは、それぞれに備えられるノード２２Ａ〜２２Ｅを順に接続することによりループ状に形成される通信経路ＮＩＯを介して互いに接続されている。
【００１７】
具体的には、第１のデバイス２０Ａのノード２２Ａは第１番目の通信経路ＮＩＯ１を介して第２のデバイス２０Ｂのノード２２Ｂに接続され、第２のデバイス２０Ｂのノード２２Ｂは第２番目の通信経路ＮＩＯ２を介して第３のデバイス２０Ｃのノード２２Ｃに接続され、第３のデバイス２０Ｃのノード２２Ｃは第３番目の通信経路ＮＩＯ３を介して第４のデバイス２０Ｄのノード２２Ｄに接続され、第４のデバイス２０Ｄのノード２２Ｄは第４番目の通信経路ＮＩＯ４を介して第５のデバイス２０Ｅのノード２２Ｅに接続され、第５のデバイス２０Ｅのノード２２Ｅは第５番目の通信経路ＮＩＯ５を介して第１のデバイス２０Ａのノード２２Ａに接続されている。
【００１８】
ただし、第３のデバイス２０Ｃと第４のデバイス２０Ｄの間には、ダミーノード５０Ａが設けられており、第３番目の通信経路ＮＩＯ３は、第３のデバイス２０Ｃのノード２２Ｃとダミーノード５０Ａとを結ぶＮＩＯ３ａ、および、ダミーノード５０Ａと第４のデバイス２０Ｄのノード２２Ｄとを結ぶＮＩＯ３ｂに区分されている。第４のデバイス２０Ｄと第５のデバイス２０Ｅの間には、ダミーノード５０Ｂが設けられており、第４番目の通信経路ＮＩＯ４は、第４のデバイス２０Ｄのノード２２Ｄとダミーノード５０Ｂとを結ぶＮＩＯ４ａ、および、ダミーノード５０Ｂと第５のデバイス２０Ｅのノード２２Ｅとを結ぶＮＩＯ４ｂに区分されている。第５のデバイス２０Ｅと第１のデバイス２０Ａの間には、ダミーノード５０Ｃが設けられており、第５番目の通信経路ＮＩＯ５は、第５のデバイス２０Ｅのノード２２Ｅとダミーノード５０Ｃとを結ぶＮＩＯ５ａ、および、ダミーノード５０Ｃと第１のデバイス２０Ａのノード２２Ａとを結ぶＮＩＯ５ｂに区分されている。
【００１９】
以上のように、第３番目の通信経路ＮＩＯ３の経路の途中に第１のダミーノード５０Ａを設け、第４番目の通信経路ＮＩＯ４の途中に第２のダミーノード５０Ｂを設け、第５番目の通信経路ＮＩＯ５の経路の途中に第３のダミーノード５０Ｃを設けているのは、以下の理由による。
【００２０】
図２は、各デバイス２０Ａ〜２０Ｅの半導体基板ＣＰ上における配置例について示す説明図である。図に示すように、３つのダミーノード５０Ａ〜５０Ｃは、第１のデバイス２０Ａのノード２２Ａと第２のデバイス２０Ｂのノード２２Ｂとの間の第１番目の通信経路ＮＩＯ１および第２のデバイス２０Ｂのノード２２Ｂと第３のデバイス２０Ｃのノード２２Ｃとの間の第２番目の通信経路ＮＩＯ２に比べて、比較的配線長が長くなってしまう、第３のデバイス２０Ｃのノード２２Ｃと第４のデバイス２０Ｄのノード２２Ｄとの間の第３番目の通信経路ＮＩＯ３、第４のデバイス２０Ｄのノード２２Ｄと第５のデバイス２０Ｅのノード２２Ｅとの間の第４番目の通信経路ＮＩＯ４、および、第５のデバイス２０Ｅのノード２２Ｅと第１のデバイス２０Ａのノード２２Ａとの間の第５番目の通信経路ＮＩＯ５に設けられている。
【００２１】
これらの通信経路ＮＩＯ３〜ＮＩＯ５に、仮にダミーノードが設けられていないとすると、それぞれを伝送する信号の遅延により、所望の伝送周波数で信号を伝送することができない場合がある。
【００２２】
そこで、第３番目の通信経路ＮＩＯ３は、第３のデバイス２０Ｃのノード２２Ｃと第４のデバイス２０Ｄのノード２２Ｄとの間に、第１のダミーノード５０Ａを設けることにより、第３のデバイス２０Ｃのノード２２Ｃとダミーノード５０Ａとの間を、比較的短い通信経路ＮＩＯ３ａで接続し、ダミーノード５０Ａと第４のデバイス２０Ｄとの間を比較的短い通信経路ＮＩＯ３ｂで接続することにより、各ノードを結ぶ通信経路の配線長を短くすることができる。これにより、各通信経路を通過する信号の遅延を小さくして、所望の伝送周波数で信号を伝送することが可能となる。
【００２３】
なお、第４番目の通信経路ＮＩＯ４の途中にダミーノード５０Ｂが設けられ、第５番目の通信経路ＮＩＯ５の途中にダミーノード５０Ｃが設けられるのも、第３番目の通信経路ＮＩＯ３の場合と同様の理由による。
【００２４】
Ａ２．デバイス間の通信動作：
各デバイス２０Ａ〜２０Ｅの間では、それぞれ、上記ループ状の通信経路ＮＩＯに接続されているノード２２Ａ〜２２Ｅを介して、所定の通信内容を表すパケットを送受信することにより、通信が実行される。所定の通信内容としては、送信先のデバイスにデータを書き込むためのライトリクエストメッセージや、送信先のデバイスからデータを読み出すためのリードリクエストメッセージ、これらのリクエストメッセージに対するレスポンスメッセージ等がある。
【００２５】
以下では、まず、ループ状の通信経路ＮＩＯを介して伝送されるパケットのデータ構造、各デバイス２０Ａ〜２０Ｅのノード２２Ａ〜２２Ｅの構成および動作、各ダミーノード５０Ａ〜５０Ｃの構成および動作について説明した後で、通信動作について説明する。
【００２６】
Ａ２．１．パケットのデータ構造：
図３は、ループ状の通信経路を介して伝送されるパケットのデータ構造について示す説明図である。ループ状の通信経路ＮＩＯを介して伝送されるパケットの表す通信内容（通信の種別）としては、例えば、ライトリクエスト、ライトＡＣＫレスポンス、リードリクエスト、および、リードレスポンスがある。
【００２７】
図３に示すように、通信経路ＮＩＯを介して伝送されるパケットは、６４ビット（８バイト）の固定長を有しており、最初の４バイトのうちの前半の２バイトが制御情報部分で、後半の２バイトが、送信先のデバイスに書き込むデータや送信先のデバイスから読み出されるデータを書き込むための図示しないメモリに確保されている通信用メモリのアドレスを示すアドレス情報部分である。残りの４バイトは、通信用メモリを用いずに直接書き込みあるいは読み出しを行う場合のデータ部分である。
【００２８】
制御情報部分の最初の３ビットの部分（図中には、「ＴＹＰＥ」と表記されている）は、通信内容の種別を示す部分であり、図３はライトリクエストに対応するコマンド「ＷＲ＿ＲＥＱ」が記述されている場合を示している。そして、次の３ビットの部分（図中には、「Ｄｓｉｚｅ」と表記されている部分）はデータサイズを示す部分であり、ライトリクエストの場合にはライトデータのサイズとして、リードリクエストの場合にはリードデータのサイズ、それぞれ、「４バイト」を示す値が記述される。さらに、次の５ビットの部分（図中には、「ＤＩＤ」と表記されている部分）は送信先ＩＤを示す部分であり、さらに次の５ビットの部分（図中には、「ＳＩＤ」と表記されている部分）は送信元ＩＤを示す部分である。
【００２９】
なお、通信経路ＮＩＯは、３２ビット幅のデータ線および２ビットの制御線の計３４ビットの線幅を有しており、システムクロック１サイクルで３２ビット（４バイト）のデータを転送することができる。すなわち、通信経路ＮＩＯの伝送速度は、３２ｂｉｔ／ｃｙｃｌｅ（４Ｂｙｔｅ／ｃｙｃｌｅ）である。
【００３０】
従って、１つの通信内容を表す６４ビット（８バイト）のパケットは、２サイクルのシステムクロック単位で、各デバイスのノードに順に転送されることになる。
【００３１】
なお、２ビットの制御線のうち、一方の１ビットは、３２ビットのデータがパケットを表すデータ（以下、「パケットデータ」と呼ぶ）を構成する制御部分であるか、それともデータ部分であるかを示す制御情報のビット（ヘッダービット）である。また、他方の１ビットは、３２ビットのデータが有効なデータであるか否かを示す制御情報のビット（バリッドビット）である。
【００３２】
Ａ２．２．ノードの構成および動作：
図４は、デバイスに備えられるノードについて示す説明図である。図４は、各デバイス２０Ａ〜２０Ｅに備えられるノード２２Ａ〜２２Ｅを代表して、第２のデバイス２０Ｂのノード２２Ｂについて示している。
【００３３】
このノード２２Ｂは、２つのレジスタ２２１，２２２と、送受信制御部２２３と、を備えている。
【００３４】
２つのレジスタ２２１，２２２は、それぞれ、ノードの入力側に接続される第１番目の通信経路ＮＩＯ１の３４ビットの配線幅、および、ノードの出力側に接続される第２番目の通信経路ＮＩＯ２の３４ビットの配線幅に等しいビット数の記憶領域を有するレジスタを備えている。第１のレジスタ２２１は、送受信制御部２２３から出力される第１の制御信号ＣＴＬ１によって、書き込み動作が制御され、第２のレジスタ２２２は、送受信制御部２２３から出力される第２の制御信号ＣＴＬ２によって、書き込み動作が制御される。
【００３５】
送受信制御部２２３は、システムクロックＳＣＫに同期して、１サイクルごとに、第１の制御信号ＣＴＬ１を出力して、入力側の通信経路ＮＩＯ１を介して入力されるデータの第１のレジスタ２２１への書き込み動作を制御するとともに、第２の制御信号ＣＴＬ２を出力して、第１のレジスタ２２１から出力されるデータの第２のレジスタ２２２への書き込み動作を制御する。
【００３６】
ノード２２Ｂは、以下で説明するようにして、２サイクルのシステムクロックごとに１つのパケットを送受信する。
【００３７】
各サイクルの書き込みタイミングにおいて、第１のレジスタ２２１は、入力側の通信経路ＮＩＯ１上を伝送しているデータを書き込み、第２のレジスタ２２２は、ひとつ前のサイクルにおいて第１のレジスタ２２１に書き込まれて出力されているデータを書き込む。
【００３８】
ここで、送受信制御部２２３は、第１のサイクルにおける第１のレジスタ２２１および第２のレジスタ２２２の書き込み動作の終了後、第２のサイクルが開始される前において、第１のレジスタ２２１に書き込まれて、第１のレジスタ２２１から出力されているデータと、入力側の通信経路ＮＩＯ１上を伝送しており、第２のサイクルで第１のレジスタ２２１に書き込まれるデータと、に基づいて、第２のサイクルで第１および第２のレジスタ２２１，２２２に書き込まれる６４ビットのデータが、自分宛のパケットデータであるか否か判断する。
【００３９】
このとき、送受信制御部２２３は、自分宛のデータである場合には、第２のサイクルの書き込みタイミングにおいて、第１のレジスタ２２１の入力データおよび出力データを取り込んで、受信バッファ２４に格納するとともに、第１および第２のレジスタ２２１，２２２に空きパケットを表すデータ（以下、「空きパケットデータ」と呼ぶ）を書き込むことにより、出力側の通信経路ＮＩＯ２から空きパケットの送信を開始する。一方、自分宛のデータでない場合には、そのデータの受信バッファへの格納は行わず、そのまま、第２のサイクルで、第１のレジスタ２２１に書き込まれているデータを第２のレジスタ２２２に書き込むとともに、入力側の通信経路ＮＩＯ１上を伝送しているデータを第１のレジスタ２２１に書き込んで、出力側の通信経路ＮＩＯ２から、第１および第２のレジスタ２２１，２２２に書き込まれたデータの表すパケットの送信を開始する。なお、受信したパケットデータが空きパケットである場合において、送信バッファ２６に送信待ちのパケットデータが格納されているときには、送信バッファ２６に格納されているパケットデータを、第１および第２のレジスタ２２１，２２２に書き込むことにより、出力側の通信経路ＮＩＯ２から、そのパケットデータの送信を開始する。
【００４０】
そして、次ぎのサイクルを第１のサイクルとして、次ぎのパケットデータの受信を開始する。
【００４１】
なお、自分宛のデータであるか否かの判断は、図３に示すように、パケットデータの制御情報部分に含まれている送信先ＩＤ（ＤＩＤ）を調べることにより、容易に実行することができる。また、空きパケットであるか否かの判断は、例えば、通信内容（ＴＹＰＥ）の記述があるか、送信先ＩＤ（ＤＩＤ）の記述があるか等を調べることにより、容易に実行することができる。
【００４２】
以上のようにして、第２のデバイス２０Ｂのノード２２Ｂは、２サイクルのシステムクロックごとに１つのパケットデータの受信および送信を実行することができる。
【００４３】
また、他のデバイス２０Ａ，２０Ｃ〜２０Ｅのノード２２Ａ，２２Ｃ〜２０Ｅの構成および動作も、第２のデバイス２０Ｂのノード２２Ｂと同じである。
【００４４】
なお、本実施例では、通信経路ＮＩＯに接続されているノードを、各デバイス２０Ａ〜２０Ｅに備えられるノード２２Ａ〜２２Ｅのように、パケットデータの送信および受信を実際に実行する部分のみをとして説明しているが、各デバイスを全体としてノードとみることも場合もある。
【００４５】
Ａ２．３．ダミーノードの構成および動作：
図５は、ダミーノードについて示す説明図である。なお、図５は、３つのダミーノード５０Ａ〜５０Ｃを代表して、第１のダミーノード５０Ａについて示している。
【００４６】
このダミーノード５０Ａは、各デバイス２０Ａ〜２０Ｅに備えられるノード２２Ａ〜２２Ｅ（図４参照）と同様に、２つのレジスタ５０１，５０２と、送受信制御部５０３と、を備えている。
【００４７】
２つのレジスタ５０１，５０２は、ノード２２Ａの２つのレジスタ２２１，２２２と同様に、それぞれ、ノードの入力側に接続される通信経路ＮＩＯ３ａの３４ビットの配線幅、および、ノードの出力側に接続される通信経路ＮＩＯ３ｂの３４ビットの配線幅に等しいビット数の記憶領域を有するレジスタを備えている。第１のレジスタ５０１は、送受信制御部２２３から出力される第１の制御信号ＣＴＬ１によって、書き込み動作が制御され、第２のレジスタ５０２は、送受信制御部２２３から出力される第２の制御信号ＣＴＬ２によって、書き込み動作が制御される。
【００４８】
ただし、送受信制御部５０３は、上述したノード２２Ｂの送受信制御部２２３において実行される判断は行わず、単に、各サイクルの書き込みタイミングで、第１の制御信号ＣＴＬ１および第２の制御信号ＣＴＬ２を出力して、第１のレジスタ５０１および第２のレジスタ５０２の書き込み動作を制御するのみである。すなわち、単に、ダミーノード５０Ａは、第３のデバイス２０Ｃから送信されたパケットデータを、一旦、バッファして、第４のデバイス２０Ｄへ送信するための中継装置として動作するものである。
【００４９】
なお、他のダミーノード５０Ｂ，５０Ｃの構成および動作も、第１のダミーノード５０Ａと同じである。
【００５０】
Ａ２．４．通信動作の説明：
以下では、通信経路ＮＩＯを介して各デバイス２０Ａ〜２０Ｅの間で実行される通信動作について説明する。
【００５１】
図６〜図８は、各デバイス間で実行される通信動作について示す説明図である。これらの図６〜図８は、動作の説明を容易にするため、図１に示したデバイスシステムの構成を簡略化して、ノード１〜ノード３の３つのノードがループ状の通信経路ＮＩＯを介して接続されており、ノード１とノード２の間、および、ノード２とノード３の間に、２つのダミーノードが設けられている構成として示している。また、図の右側は本例の通信動作について示し、図の左側は比較例としてダミーノードのない場合の通信動作について示している。
【００５２】
また、ノード１からノード３へ送信される通信内容のパケットデータとして、例えば、リクエストメッセージを「Ｒｅｑ―１３」のように記述し、レスポンスメッセージを「Ｒｅｓ―１３」のように記述することとする。さらに、同じノードに対して送信する通信内容が複数ある場合を想定して、例えば、ノード１からノード３へ送信する通信内容のうち、１番目を「Ｒｅｑ−１３ａ」、２番目を「Ｒｓｐ−１３ｂ」のように、アルファベットを順に付記して示すこととする。ただし、同じ通信内容のパケットデータが、例えば、リクエストメッセージ［Ｒｅｑ−１３ａ］、リクエストメッセージ［Ｒｅｑ−１３ｂ］のように、連続して発生することはない。
【００５３】
また、図６〜図８には８段階の動作状態が示されているが、上述したように、通信経路ＮＩＯの伝送速度は３２ｂｉｔ／ｃｙｃｌｅ（４Ｂｙｔｅ／ｃｙｃｌｅ）であり、６４ビットのパケットデータは、２サイクルでのシステムクロック単位で送信されるので、各段階は、先頭の動作状態から２サイクルのシステムクロックごとに変化した動作状態を示している。
【００５４】
以下では、通信動作の開始状態、比較例の通信動作、実施例の通信動作の順に説明する。なお、リクエストメッセージやレスポンスメッセージを、「パケットデータ」と呼んで説明することとする。
【００５５】
（通信動作の開始状態）
比較例の通信動作および実施例の通信動作の開始状態（先頭の動作状態）として、ノード１には２つのパケットデータ［Ｒｓｐ−１３ａ］，［Ｒｅｑ−１３ｂ］が送信バッファに順に格納されており、ノード２にも２つのパケットデータ［Ｒｓｐ−２３ａ］，［Ｒｅｑ―２１ａ］が送信バッファに順に格納されている。また、ノード３には１つのパケットデータ［Ｒｅｑ−３２ａ］が送信バッファに格納されていることとする。
【００５６】
そして、この状態から、２サイクルのシステムクロックごとに、動作状態２から動作状態８まで順に変化して、各ノードの送信バッファに格納されているメッセージの通信が実行される。
【００５７】
（比較例の通信動作）
上述したように、先頭の動作状態（動作状態１）において、ノード１にはメッセージ［Ｒｓｐ―１３ａ］が、ノード２にはメッセージ［Ｒｓｐ―２３ａ］が、ノード３にはメッセージ［Ｒｅｑ―３２ａ］が発生している。
【００５８】
そして、動作状態２では、次のように動作する。すなわち、ノード１は、発生しているパケットデータ［Ｒｓｐ―１３ａ］をノード２に向けて送信するとともに、後述するように、ノード３から送信されたパケットデータ［Ｒｅｑ−３２ａ］を受信する。ノード２は、発生しているパケットデータ［Ｒｓｐ−２３ａ］をノード３に向けて送信するとともに、ノード１から送信されたパケットデータ［Ｒｓｐ―１３ａ］を受信する。ノード３は、発生しているパケットデータ［Ｒｅｑ−３２ａ］をノード１に向けて送信するとともに、ノード２から送信されたパケットデータ［Ｒｓｐ−２３ａ］を受信する。
【００５９】
動作状態３では、次のように動作する。すなわち、ノード１は、動作状態２でパケットデータ［Ｒｅｑ−３２ａ］を受信しているので、送信バッファに格納されているパケットデータ［Ｒｅｑ１３ｂ］を送信することはできず、受信したパケットデータ［Ｒｅｑ３２ａ］をそのままノード２に向けて送信するとともに、後述するようにノード３から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード２は、動作状態２でパケットデータ［Ｒｓｐ−１３ａ］を受信しているので、送信バッファに格納されているパケットデータ［Ｒｅｑ−２１ａ］を送信することはできず、受信したパケットデータ［Ｒｓｐ−１３ａ］をそのままノード３に向けて送信するとともに、ノード１から送信されたパケットデータ［Ｒｅｑ−３２ａ］を受信する。ノード３は、動作状態２で受信したパケットデータ［Ｒｓｐ―２３ａ］が自分宛であるので、そのデータを受信バッファに格納し、空きパケットデータ［＊＊＊−＊＊＊］をノード１に向けて送信するとともに、ノード２から送信されたパケットデータ［Ｒｓｐ−１３ａ］を受信する。
【００６０】
動作状態４では、次のように動作する。すなわち、ノード１は、動作状態３で空きパケットデータを受信しており、新たなパケットデータを送信することができるので、パケットデータ［Ｒｅｑ−１３ｂ］をノード２に向けて送信するとともに、後述するようにノード３から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード２は、動作状態３で受信したパケットデータ［Ｒｅｑ−３２ａ］が自分宛であるので、そのデータを受信バッファに格納し、空きパケットデータ［＊＊＊−＊＊＊］をノード３に向けて送信するとともに、ノード１から送信されたパケットデータ［Ｒｅｑ−１３ｂ］を受信する。ノード３は、動作状態３で受信したパケットデータ［Ｒｓｐ―１３ａ］が自分宛であるので、そのデータを受信バッファに格納し、空きパケットデータ［＊＊＊−＊＊＊］をノード１に向けて送信するとともに、ノード２から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。
【００６１】
動作状態５では、次のように動作する。すなわち、ノード１は、動作状態４で空きパケットデータを受信しており、新たなパケットデータを送信することができるが、新たなパケットデータは発生していないので、そのまま空きパケットデータ［＊＊＊−＊＊＊］をノード２に向けて送信するとともに、後述するようにノード３から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード２は、動作状態４で受信したパケットデータ［Ｒｅｑ−１３ｂ］をノード３に向けて送信するとともに、ノード１から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード３は、動作状態４で空きパケットデータを受信しており、新たなパケットデータを送信することができるが、新たなパケットデータは発生していないので、そのまま空きパケットデータ［＊＊＊−＊＊＊］をノード１に向けて送信するとともに、ノード２から送信されたパケットデータ［Ｒｅｑ−１３ｂ］を受信する。
【００６２】
動作状態６では、次のように動作する。すなわち、ノード１は、動作状態５で空きパケットデータ［＊＊＊−＊＊＊］を受信しており、新たなパケットデータを送信することができるが、新たなパケットデータは発生していないので、そのまま空きパケットデータ［＊＊＊−＊＊＊］をノード２に向けて送信するとともに、後述するようにノード３から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード２は、動作状態５で空きパケットデータを受信しており、新たなパケットデータを送信することができるので、送信バッファに格納されているパケットデータ［Ｒｅｑ−２１ａ］をノード３に向けて送信するとともに、ノード１から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード３は、動作状態５で受信したパケットデータ［Ｒｅｑ−１３ｂ］が自分宛であるので、そのデータを受信バッファに格納し、空きパケットデータ［＊＊＊−＊＊＊］をノード１に向けて送信するとともに、ノード２から送信されたパケットデータ［Ｒｅｑ−２１ａ］を受信する。
【００６３】
動作状態７では、次のように動作する。すなわち、ノード１は、動作状態６で空きパケットデータ［＊＊＊−＊＊＊］を受信しており、新たなパケットデータを送信することができるが、新たなパケットデータは発生していないので、そのまま空きパケットデータ［＊＊＊−＊＊＊］をノード２に向けて送信するとともに、後述するようにノード３から送信されたパケットデータ［Ｒｅｑ−２１ａ］を受信する。ノード２は、動作状態６で空きパケットデータ［＊＊＊−＊＊＊］を受信しており、新たなパケットデータを送信することができるが、新たなパケットデータは発生していないので、そのまま空きパケットデータ［＊＊＊−＊＊＊］をノード３に向けて送信するとともに、ノード１から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード３は、動作状態６でパケットデータ［Ｒｅｑ−２１ａ］を受信しているので、そのパケットデータをそのままノード１に向けて送信するとともに、ノード２から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。
【００６４】
動作状態８では、次のように動作する。すなわち、ノード１は、動作状態７で受信したパケットデータ［Ｒｅｑ−２１ａ］が自分宛であるので、そのデータを受信バッファに格納し、空きパケットデータ［＊＊＊−＊＊＊］をノード１に向けて送信するとともに、後述するようにノード３から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード２は、動作状態７で空きパケットデータ［＊＊＊−＊＊＊］を受信しており、新たなパケットデータを送信することができるが、新たなパケットデータは発生していないので、そのまま空きパケットデータ［＊＊＊−＊＊＊］をノード３に向けて送信するとともに、ノード１から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード３は、動作状態７で空きパケットデータ［＊＊＊−＊＊＊］を受信しており、新たなパケットデータを送信することができるが、新たなパケットデータは発生していないので、そのまま空きパケットデータ［＊＊＊−＊＊＊］をノード１に向けて送信するとともに、ノード２から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。
【００６５】
（実施例の通信動作）
上述したように、先頭の動作状態（動作状態１）において、ノード１にはメッセージ［Ｒｓｐ―１３ａ］が、ノード２にはメッセージ［Ｒｓｐ―２３ａ］が、ノード３にはメッセージ［Ｒｅｑ―３２ａ］が発生している。
【００６６】
そして、動作状態２では、次のように動作する。すなわち、ノード１は、発生しているパケットデータ［Ｒｓｐ−１３ａ］をダミーノード１に向けて送信するとともに、後述するようにノード３から送信されたパケットデータ［Ｒｅｑ−３２ａ］を受信する。ダミーノード１は空きパケットデータ［＊＊＊−＊＊］をノード２に向けて送信するとともに、ノード１から送信されたパケットデータ［Ｒｓｐ−１３ａ］を受信する。ノード２は、発生しているパケットデータ［Ｒｓｐ−２３ａ］をダミーノード２に向けて送信するとともに、ダミーノード１から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ダミーノード２は空きパケットデータ［＊＊＊−＊＊＊］をノード３に向けて送信するとともに、ノード２から送信されたパケットデータ［Ｒｓｐ−２３ａ］を受信する。ノード３は、発生しているパケットデータ［Ｒｅｑ−３２ａ］をノード１に向けて送信するとともに、ダミーノード２から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。
【００６７】
動作状態３では、次のように動作する。すなわち、ノード１は、動作状態２でパケットデータ［Ｒｅｑ−３２ａ］を受信しているので、送信バッファに格納されているパケットデータ［Ｒｅｑ―１３ｂ］を送信することはできず、受信したパケットデータ［Ｒｅｑ―３２ａ］をそのままノード２に向けて送信するとともに、後述するようにノード３から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ダミーノード１は、動作状態２でパケットデータ［Ｒｓｐ−１３ａ］を受信しているので、そのパケットデータをそのままノード２に向けて送信するとともに、ノード１から送信されたパケットデータ［Ｒｅｑ−３２ａ］を受信する。ノード２は、動作状態２で空きパケットデータ［＊＊＊−＊＊＊］を受信しており、新たなパケットデータを送信することができるので、送信バッファに格納されているパケットデータ［Ｒｅｑ−２１ａ］をダミーノード２に向けて送信するとともに、ダミーノード１から送信されたパケットデータ［Ｒｓｐ−１３ａ］を受信する。ダミーノード２は、動作状態２でパケットデータ［Ｒｓｐ−２３ａ］を受信しているので、そのパケットデータをそのままノード３に向けて送信するとともに、ノード２から送信されたパケットデータ［Ｒｅｑ−２１ａ］を受信する。ノード３は、動作状態２で空きパケットデータ［＊＊＊−＊＊＊］を受信しているので、その空きパケットデータをそのままノード１に向けて送信するとともに、ダミーノード２から送信されたパケットデータ［Ｒｓｐ−２３ａ］を受信する。
【００６８】
動作状態４では、次のように動作する。すなわち、ノード１は、動作状態３で空きパケットデータ［＊＊＊−＊＊＊］を受信しており、新たなパケットデータを送信することができるので、パケットデータ［Ｒｅｑ−１３ｂ］をダミーノード１に向けて送信するとともに、後述するようにノード３から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ダミーノード１は、動作状態３でパケットデータ［Ｒｅｑ−３２ａ］を受信しているので、そのパケットデータをそのままノード２に向けて送信するとともに、ノード１から送信されたパケットデータ［Ｒｅｑ−１３ｂ］を受信する。ノード２は、動作状態３でパケットデータ［Ｒｓｐ−１３ａ］を受信しているので、そのパケットデータをそのままダミーノード２に向けて送信するとともに、ダミーノード１から送信されたパケットデータ［Ｒｅｑ−３２ａ］を受信する。ダミーノード２は、動作状態３でパケットデータ［Ｒｅｑ−２１ａ］を受信しているので、そのパケットデータをそのままノード３に向けて送信するとともに、ノード２から送信されたパケットデータ［Ｒｓｐ−１３ａ］を受信する。ノード３は、動作状態３で受信したパケットデータ［Ｒｓｐ―２３ａ］が自分宛であるので、そのデータを受信バッファに格納し、空きパケットデータ［＊＊＊−＊＊＊］をノード１に向けて送信するとともに、ダミーノード２から送信されたパケットデータ［Ｒｅｑ−２１ａ］を受信する。
【００６９】
動作状態５では、次のように動作する。すなわち、ノード１は、動作状態４で空きパケットデータ［＊＊＊−＊＊＊］を受信しており、新たなパケットデータを送信することができるが、新たなパケットデータは発生していないので、そのまま空きパケットデータ［＊＊＊−＊＊＊］をダミーノード１に向けて送信するとともに、後述するようにノード３から送信されたパケットデータ［Ｒｅｑ−２１ａ］を受信する。ダミーノード１は、動作状態４でパケットデータ［Ｒｅｑ−１３ｂ］を受信しているので、そのパケットデータをそのままノード２に向けて送信するとともに、ノード１から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード２は、動作状態４で受信したパケットデータ［Ｒｅｑ−３２ａ］が自分宛であるので、そのデータを受信バッファに格納し、空きパケットデータ［＊＊＊−＊＊＊］をダミーノード２に向けて送信するとともに、ダミーノード１から送信されたパケットデータ［Ｒｅｑ−１３ｂ］を受信する。ダミーノード２は、動作状態４でパケットデータ［Ｒｓｐ−１３ａ］を受信しているので、そのパケットデータをそのままノード３に向けて送信するとともに、ノード２から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード３は、動作状態４でパケットデータ［Ｒｅｑ−２１ａ］を受信しているので、そのパケットデータをそのままノード１に向けて送信するとともに、ダミーノード２から送信されたパケットデータ［Ｒｓｐ−１３ａ］を受信する。
【００７０】
動作状態６では、次のように動作する。すなわち、ノード１は、動作状態５で受信したパケットデータ［Ｒｅｑ−２１ａ］が自分宛であるので、そのデータを受信バッファに格納し、空きパケットデータ［＊＊＊−＊＊＊］をダミーノード１に向けて送信するとともに、後述するようにノード３から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ダミーノード１は、動作状態５で空きパケットデータ［＊＊＊−＊＊＊］を受信しているので、その空きパケットデータをそのままノード２に向けて送信するとともに、ノード１から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード２は、動作状態５でパケットデータ［Ｒｅｑ−１３ｂ］を受信しているので、そのパケットデータをそのままダミーノード２に向けて送信するとともに、ダミーノード１から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ダミーノード２は、動作状態５で空きパケットデータ［＊＊＊−＊＊＊］を受信しているので、その空きパケットデータをそのままノード３に向けて送信するとともに、ノード２から送信されたパケットデータ［Ｒｅｑ−１３ｂ］を受信する。ノード３は、動作状態５で受信したパケットデータ［Ｒｓｐ−１３ａ］が自分宛であるので、そのデータを受信バッファに格納し、空きパケットデータ［＊＊＊−＊＊＊］をノード１に向けて送信するとともに、ダミーノード２から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。
【００７１】
動作状態７では、次のように動作する。すなわち、ノード１は、動作状態６で空きパケットデータ［＊＊＊−＊＊＊］を受信しており、新たなパケットデータを送信することができるが、新たなパケットデータは発生していないので、そのまま空きパケットデータ［＊＊＊−＊＊＊］をダミーノード１に向けて送信するとともに、後述するようにノード３から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ダミーノード１は、動作状態６で空きパケットデータ［＊＊＊−＊＊＊］を受信しているので、その空きパケットデータをそのままノード２に向けて送信するとともに、ノード１から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード２は、動作状態６で空きパケットデータ［＊＊＊−＊＊＊］を受信しており、新たなパケットデータを送信することができるが、新たなパケットデータは発生していないので、そのまま空きパケットデータ［＊＊＊−＊＊＊］をダミーノード２に向けて送信するとともに、ダミーノード１から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ダミーノード２は、動作状態６でパケットデータ［Ｒｅｑ−１３ｂ］を受信しているので、そのパケットデータをそのままノード３に向けて送信するとともに、ノード２から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード３は、動作状態６で空きパケットデータ［＊＊＊−＊＊＊］を受信しており、新たなパケットデータを送信することができるが、新たなパケットデータは発生していないので、そのまま空きパケットデータ［＊＊＊−＊＊＊］をノード１に向けて送信するとともに、ダミーノード２から送信されたパケットデータ［Ｒｅｑ−１３ｂ］を受信する。
【００７２】
動作状態８では、次のように動作する。すなわち、ノード１は、動作状態７で空きパケットデータ［＊＊＊−＊＊＊］を受信しており、新たなパケットデータを送信することができるが、新たなパケットデータは発生していないので、そのまま空きパケットデータ［＊＊＊−＊＊＊］をノード２に向けて送信するとともに、後述するようにノード３から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ダミーノード１は、動作状態７で空きパケットデータ［＊＊＊−＊＊＊］を受信しているので、その空きパケットデータをそのままノード２に向けて送信するとともに、ノード１から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード２は、動作状態７で空きパケットデータ［＊＊＊−＊＊＊］を受信しており、新たなパケットデータを送信することができるが、新たなパケットデータは発生していないので、そのまま空きパケットデータ［＊＊＊−＊＊＊］をダミーノード２に向けて送信するとともに、ダミーノード１から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ダミーノード２は、動作状態７で空きパケットデータ［＊＊＊−＊＊＊］を受信しているので、そのパケットデータをそのままノード３に向けて送信するとともに、ノード２から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。ノード３は、動作状態７で受信したパケットデータ［Ｒｅｑ−１３ｂ］が自分宛であるので、そのデータを受信バッファに格納し、空きパケットデータ［＊＊＊−＊＊＊］をノード１に向けて送信するとともに、ダミーノード２から送信された空きパケットデータ［＊＊＊−＊＊＊］を受信する。
【００７３】
以上のようにして先頭の動作状態１において各ノードで発生したパケットデータの通信が実行される。
【００７４】
なお、比較例の動作と実施例の動作とを比較すればわかるように、実施例の場合には、ダミーノードを有していることにより、ある通信内容のパケットが送信元から送信先に到達するまでのレイテンシー（システムクロックのサイクル数）は、送信元のノードから送信先のノードまでの間に存在するダミーノードの数に応じて大きくなる。しかしながら、実施例の場合には、比較例の場合に比べて、通信経路ＮＩＯ上を同時に伝送するパケットの数をダミーノードの数分だけ増やすことが可能となる。これにより、複数のパケットの通信が実行される場合の全体としてのレイテンシーは、必ずしも遅くなるわけではない。
【００７５】
Ａ３．実施例の効果：
以上説明したように、上記実施例のデバイスシステム１０では、図２に示したように、第１のデバイス２０Ａのノード２２Ａと第２のデバイス２０Ｂのノード２２Ｂとの間の第１番目の通信経路ＮＩＯ１および第２のデバイス２０Ｂのノード２２Ｂと第３のデバイス２０Ｃのノード２２Ｃとの間の第２番目の通信経路ＮＩＯ２に比べて、比較的配線長が長くなってしまう、第３のデバイス２０Ｃのノード２２Ｃと第４のデバイス２０Ｄのノード２２Ｄとの間の第３番の通信経路ＮＩＯ３、第４のデバイス２０Ｄのノード２２Ｄと第５のデバイス２０Ｅのノード２２Ｅとの間の第４番目の通信経路ＮＩＯ４、および、第５のデバイス２０Ｅのノード２２Ｅと第１のデバイス２０Ａのノード２２Ａとの間の第５番目の通信経路ＮＩＯ５に、３つのダミーノード５０Ａ〜５０Ｃが設けられている。
【００７６】
これにより、例えば、各デバイス２０Ａ〜２０Ｅが、図２に示したように、半導体基板ＣＰ上に実装配置されて、第３のデバイス２０Ｃと第４のデバイス２０Ｄとの間を結ぶ通信経路ＮＩＯ３、第４のデバイス２０Ｄと第５のデバイス２０Ｅとの間を結ぶ通信経路ＮＩＯ４、および、第５のデバイス２０Ｅと第１のデバイス２０Ａとの間を結ぶ通信経路ＮＩＯ５の配線長が長くなってしまい、所望の伝送周波数で信号の伝送を実行することができないような信号の遅延量を有することとなってしまう場合においても、再度、各デバイス２０Ａ〜２０Ｅの間を結ぶ各通信経路ＮＩＯ１〜ＮＩＯ５の配線長が短くなるように、各デバイス２０Ａ〜２０Ｅの実装配置をやり直す必要はなく、所望の伝送周波数を確保できない通信経路ＮＩＯ３〜ＮＩＯ５の途中に、それぞれ、ダミーノード５０Ａ〜５０Ｃを設けることにより、容易に、所望の伝送周波数を確保することが可能となる。
【００７７】
また、ダミーノード５０Ａ〜５０Ｃを設けることにより、通信経路ＮＩＯ上を同時に伝送するパケットの数を、３パケット分増加させることができるので、複数のパケットが通信される場合の全体としてのレイテンシーの増加を抑制する効果もある。
【００７８】
Ｂ．変形例：
以上、本発明の実施の形態について説明したが、本発明はこのような実施の形態になんら限定されるものではなく、その要旨を逸脱しない範囲において種々の態様にて実施することが可能である。例えば、以下のような変形が可能である。
【００７９】
上記実施例では、第３のデバイス２０Ｃと第４のデバイス２０Ｄとの間、第４のデバイス２０Ｄと第５のデバイス２０Ｅとの間、および、第５のデバイス２０Ｅと第１のデバイス２０Ａとの間にダミーノードを設ける場合を例に説明したが、これに限定されるものではない。要するに、ループ状の通信経路で接続された複数のデバイスを備えるデバイスシステムにおいて、各デバイスが基板上に実装配置された場合に、各デバイスに備えられるノード間を結ぶことにより形成されるループ状の通信経路を伝送する信号の伝送周波数が、所望の伝送周波数となるように、所望の伝送周波数を確保できない信号の遅延を有している通信経路の途中にダミーノードを設けるようにすればよい。
【００８０】
なお、２つのノード間の途中に設けるダミーノードの数は、１つである必要はなく、複数のダミーノードを設けるようにしてもよい。また、複数のノードのそれぞれの間に、それぞれ１以上のダミーノードを設けるようにしてもよい。
【図面の簡単な説明】
【００８１】
【図１】本発明のデバイスシステムの実施例としての構成例を示すブロック図である。
【図２】各デバイスの実装配置について示す説明図である。
【図３】ループ状の通信経路を介して伝送されるパケットのデータ構造について示す説明図である。
【図４】デバイスに備えられるノードについて示す説明図である。
【図５】ダミーノードについて示す説明図である。
【図６】各デバイス間で実行される通信動作について示す説明図である。
【図７】各デバイス間で実行される通信動作について示す説明図である。
【図８】各デバイス間で実行される通信動作について示す説明図である。
【符号の説明】
【００８２】
１０…デバイスシステム
２０Ａ〜２０Ｅ…デバイス
２２Ａ〜２２Ｅ…ノード
２２１，２２２…レジスタ
２２３…送受信制御部
２４…受信バッファ
２６…送信バッファ
５０Ａ〜５０Ｃ…ダミーノード
５０１…第１のレジスタ
５０２…第２のレジスタ
５０３…送受信制御部
ＮＩＯ…通信経路
ＮＩＯ１…通信経路
ＮＩＯ２…通信経路
ＮＩＯ３…通信経路
ＮＩＯ３ａ…通信経路
ＮＩＯ３ｂ…通信経路
ＮＩＯ４…通信経路
ＮＩＯ４ａ…通信経路
ＮＩＯ４ｂ…通信経路
ＮＩＯ５…通信経路
ＮＩＯ５ａ…通信経路
ＮＩＯ５ｂ…通信経路
ＣＴＬ１…第１の制御信号
ＣＴＬ２…第２の制御信号
ＣＰ…半導体基板
ＳＣＫ…システムクロック
【図１】
2007122576.tif 000003
【図２】
2007122576.tif 000004
【図３】
2007122576.tif 000005
【図４】
2007122576.tif 000006
【図５】
2007122576.tif 000007
【図６】
2007122576.tif 000008
【図７】
2007122576.tif 000009
【図８】
2007122576.tif 000010