(57)【要約】  半導体システムのデータ伝送においてトラヒックの低遅延伝送を実現する。      中継器６００ｂは、データを受け取る入力部６１５と、入力部６１５が受け取ったデータを格納するための複数のデータ格納部を有するバッファ部６０４と、バッファ部６０４に格納されたデータを出力する出力部６１７を備えている。中継器６００ｂは、さらに、入力部６１５が受け取ったデータのバースト性を示す情報に基づいて、データを複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定する振分け処理部を備えている。
2012132264.tif 000002
【特許請求の範囲】
【請求項１】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器であって、
データを受け取る入力部と、
前記入力部が受け取った前記データを格納するための複数のデータ格納部を有するバッファ部と、
前記バッファ部に格納された前記データを出力する出力部と、
前記入力部が受け取った前記データのバースト性を示す情報に基づいて、前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定する振分け処理部と、
を備えた中継器。
【請求項２】
前記バースト性を示す情報は、単位時間当たりの伝送量、送信周期、送信間隔、連続して伝送されるパケット数、および遅延時間の少なくとも１つである、請求項１に記載の中継器。
【請求項３】
前記バースト性を示す情報は、前記データの許容スループットおよび許容遅延時間の少なくとも一方である、請求項１に記載の中継器。
【請求項４】
前記バースト性を示す情報は、バースト性を示す識別子、前記データの優先度、前記データの種類を示す識別子、および前記第１ノードを特定する識別子の少なくとも１つである、請求項１に記載の中継器。
【請求項５】
前記振分け処理部は、前記データの単位時間当たりの伝送量が予め定められた閾値よりも多い場合、前記データの送信周期が予め定められた閾値よりも短い場合、前記データの送信間隔が予め定められた閾値よりも短い場合、連続して伝送されるパケット数が予め定められた閾値よりも大きい場合、および前記データの許容遅延時間が予め定められた閾値よりも短い場合の少なくとも１つの場合に、前記データを前記バッファ部における予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における予め確保された特定のデータ格納部に格納する、請求項１に記載の中継器。
【請求項６】
前記バースト性を示す情報を計測する計測部をさらに備えている、請求項１から５のいずれかに記載の中継器。
【請求項７】
前記バースト性を示す情報は、前記データに予め付与されている、請求項１から６のいずれかに記載の中継器。
【請求項８】
前記振分け処理部は、前記複数のデータ格納部の各々がどのデータによって利用されているかを示すデータ格納部利用情報を有し、前記入力部が受け取った前記データを前記特定のデータ格納部に格納する場合に、前記情報を更新する、請求項１から７のいずれかに記載の中継器。
【請求項９】
前記振分処理部は、前記特定のデータ格納部に格納された前記データの送信完了後、予め定められた時間が経過したとき、前記データ格納部利用情報から前記データに関する情報を削除する、請求項８に記載の中継器。
【請求項１０】
前記入力部が受け取ったデータを優先的に処理するバイパス処理を行うか否かを判定し、前記バイパス処理を行うと判定した場合に、前記データを前記バッファ部に送るバイパス判定部をさらに備えている、請求項１から９のいずれかに記載の中継器。
【請求項１１】
前記出力部は、複数の出力ポートを含み、
前記入力部が受け取った前記データを解析することにより、前記複数の出力ポートの中から前記データを出力する１つの出力ポートを決定するルーティング処理部をさらに備えている、
請求項１から１０のいずれかに記載の中継器。
【請求項１２】
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定する送信管理部をさらに備えている、請求項１から１１のいずれかに記載の中継器。
【請求項１３】
前記送信管理部は、各データに付与された優先度または緊急度を示す情報に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択する、請求項１２に記載の中継器。
【請求項１４】
前記送信管理部は、各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択する、請求項１３に記載の中継器。
【請求項１５】
前記送信管理部は、各データに付与された前記許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定する、請求項１４に記載の中継器。
【請求項１６】
前記送信管理部は、各データに付与された締切時間、中継回数、および前記データが自中継器より前に経由した他の中継器におけるバイパスバッファでの待ち時間の少なくとも１つの情報に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択する、請求項１３に記載の中継器。
【請求項１７】
前記送信管理部は、各データに付与された締切時間、中継回数、および前記データが自中継器より前に経由した他の中継器におけるバイパスバッファでの待ち時間の少なくとも１つの情報に基づいて、前記複数のデータ格納部からのデータの出力順序を決定する、請求項１６に記載の中継器。
【請求項１８】
前記送信管理部は、各データのデータ長に基づいて各データの前記許容残り時間を補正する、請求項１４または１５に記載の中継器。
【請求項１９】
前記送信管理部は、少なくとも１つの他の中継器におけるバッファ部の負荷を示す情報を収集し、前記情報に基づいて、各データの前記許容残り時間を補正する、請求項１４または１５に記載の中継器。
【請求項２０】
前記バッファ部の負荷を示す情報は、前記バッファにおけるデータの待ち時間、前記バッファの空き容量、および前記バッファの使用量の少なくとも１つである、請求項１９に記載の中継器。
【請求項２１】
前記送信管理部は、前記複数のデータ格納部に格納されたデータのうち、バースト性が最も高いと判断されたデータが格納されているデータ格納部から前記データを出力させる、請求項１２から２０のいずれかに記載の中継器。
【請求項２２】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御方法であって、
データを受け取るステップと、
受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、
を含む制御方法。
【請求項２３】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御プログラムであって、
前記制御プログラムは、前記中継器に実装されたコンピュータに対し、
データを受け取るステップと、
受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、
を実行させる、制御プログラム。
【請求項２４】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器のためのシミュレーションプログラムであって、
前記シミュレーションプログラムは、コンピュータに対し、
データを受け取るステップと、
受け取った前記データを複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、
を実行させる、シミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスを備えた半導体システムにおける中継器、中継器の制御方法、およびプログラムに関する。
【背景技術】
【０００２】
バスを備えたデータ伝送システムにおける伝送制御には種々の方式がある。図５３Ａおよび図５３Ｂは、従来の半導体システムにおける伝送制御方式の例を示す図である。図５３Ａは、従来の集中型のバス制御の例を示している。図示される集中型のバス制御によれば、複数のバスマスタとメモリとの間が１本のバス９１０を介して接続され、アービタ９１２によって各バスマスタからメモリへのアクセスが調停される。このような構成により、複数のバスマスタとメモリとの間のトラヒック干渉を防ぎながらデータを伝送することができる。しかしながら、集積回路の高機能化およびマルチコア化による回路規模の増大、および伝送路を流れるトラヒックの変動の複雑化が進んでおり、集中型のバス制御による集積回路の設計が困難になってきている。【０００３】
その一方で、近年、並列計算機における接続技術や、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）網などのネットワーク制御技術を取り入れた分散型のバスを有する半導体集積回路の開発が進んでいる。図５３Ｂは、分散型のバス制御の例を示している。分散型のバスを有する半導体集積回路は、複数の中継器（ルータ：Ｒ）が複数のバスでメッシュ状に接続された構成を有している。近年、図５３Ｂに示すような分散型のバスを用いることにより、大規模化した集積回路内のトラヒックを複数のバスに分散して伝送するネットワークオンチップ（Ｎｅｔｗｏｒｋ  ｏｎ  Ｃｈｉｐ：ＮｏＣ）の取り組みが広がっている。【０００４】
図５４は、ＮｏＣ、並列計算機、ＡＴＭ網などで利用される中継器９２０の構成例を示す図である。伝送されるデータ（トラヒックデータ）は、パケットやセルの単位に分割され、複数の中継器を経由して宛先のノードまで送信される。図５４に示す中継器９２０は、複数の入力ポート０〜３と、複数の入力バッファ９２２と、複数の出力ポート０〜３と、各入力バッファおよび各出力ポートを相互に接続するクロスバスイッチ９２４と、データの宛先に応じてクロスバスイッチの接続を切り替えるアービタ９１２とを備えている。入力ポート０〜３から中継器９２０に入力されたデータは、一旦入力バッファ９２２に蓄えられる。【０００５】
入力バッファ９２２は、複数のバッファキューを有している。図５４に示す例では、各入力バッファ９２２は、２つの仮想チャネル（ＶＣ０、ＶＣ１）をバッファキューとして有している。アービタ９１２は、受信したデータを解析し、利用する出力ポートを決定するルーティング処理を行う。さらに、転送先の中継器の入力バッファのバッファキューと出力ポートとの対応付け、およびバッファキューからデータを送信するためのスケジューリング処理も行う。なお、クロスバスイッチ９２４の後に複数のバッファキューを有する出力バッファを設ける構成も可能である。そのような構成では、アービタ９１２は、出力バッファのバッファキューと出力ポートとの対応付けを行う。これらの処理は、データに定められた優先度を示す情報に基づき、または処理要求順にデータをバッファキューに割り振るラウンドロビン方式により行われる。スケジューリング結果に基づき、データは中継処理され、転送先の中継器やバスマスタへ伝送される。各中継器９２０は、上記のスケジューリング処理に従ってクロスバスイッチ９２４の接続を切り替えることにより、入力バッファ９２２内に格納されたデータを宛先へと中継する。【０００６】
中継器内では、各バッファでの待ち合わせ、クロスバスイッチでの処理遅延などに起因して、トラヒックデータの転送処理に遅延が発生することがある。遅延を最小限に抑えることが要求されるアプリケーション（例えば、緊急情報の通知）では、この遅延の低減が課題となる。ネットワークの規模が大きくなるほど、中継器の数が増加するため、遅延の問題は一層深刻になる。【０００７】
中継器で生じる遅延の課題は、例えば映像データのように、途切れなくデータが連続的に伝送されるトラヒック（バーストトラヒック）に顕著である。図５５は、バーストトラヒックの一例を示している。横軸は時間を表し、縦軸は伝送されるデータ量を示している。図示される例では、一定期間継続する一連のトラヒックが発生した後、トラヒックが一旦止まり、その後再び一定期間継続する一連のトラヒックが発生している。このようなバーストトラヒックは、中継器内のバッファキューを占有しやすく、他のトラヒックへの影響が大きい。そのため、バーストトラヒックが伝送されていると、トラヒックの混雑が発生し、伝送遅延が生じやすい。【０００８】
具体例として、ラウンドロビンによる割り当て方式により、パケット化されたバーストトラヒックを各バッファキューに格納した場合を想定する。宛先のノードに至る経路上の他の中継器において、バーストトラヒックと他のトラヒックとの干渉により、スループットが低下した場合、バーストトラヒックを格納する全てのバッファキューからの伝送が円滑に行われなくなる。これにより、各バッファキューのスループットが低下し、システム全体の伝送性能が低下する。【０００９】
このような課題への対策として、特許文献１には、優先度の高いトラヒックを設計時に予め決められたバッファキューに割当てる方式が開示されている。また、バッファキューにおける待ち合わせと、クロスバスイッチにおける処理遅延の両方によって生じる遅延に対する対策が、非特許文献１および非特許文献２に開示されている。非特許文献１には、中継処理を並列化したり、処理の一部をスキップすることにより、中継器における転送処理を簡略化あるいは高速化し、遅延を低減させる様々な方式が開示されている。また、非特許文献２には、中継器内の転送処理を省略することによって転送処理の遅延を低減する方式が開示されている。【００１０】
図５６は、非特許文献２に開示された中継器９４０の概略構成を示す図である。この中継器９４０では、入力ポートに入力された一部のデータは、入力バッファ９２２およびクロスバスイッチ９２４を経由せずにバイパス用配線９３０を通って出力ポートから出力される。このような構成により、中継器９４０内の転送処理が省略されるため、バイパス用配線９３０を通るデータは通常の処理によって転送されるデータよりも早く転送される。【００１１】
このように、中継処理の少なくとも一部を省略したり、一部のトラヒックを優先的にバッファキューに割り当てたり、中継処理を並列化することによって中継器における伝送遅延を低減させることができる。その結果、一部のデータを優先的に転送することが可能となる。本明細書では、上記のように中継処理の少なくとも一部を省略したり、一部のトラヒックを優先的にバッファキューに割り当てたり、中継処理を並列化することによって転送処理の遅延を低減させることを「バイパスする」と表現する。また、本明細書において、バイパスされるトラヒックを「バイパストラヒック」と呼び、バイパスされないトラヒックを「非バイパストラヒック」と呼ぶことがある。また、入力バッファまたは出力バッファにおけるバッファキューを「データ格納部」と呼ぶことがある。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００２−３４４５０９号公報
【非特許文献】
【００１３】
【非特許文献１】松谷  宏紀，  鯉渕  道紘，  天野  英晴，  吉永  努，  “低遅延オンチップネットワークのための予測ルータの評価”，  第７回先進的計算基盤システムシンポジウム（SACSIS’09)論文集, pp.209-218, May 2009.
【非特許文献２】John Kim, “Low-Cost Router Microarchitecture for On-Chip Networks”, MICRO'09, December 12-16, 2009
【発明の概要】
【発明が解決しようとする課題】
【００１４】
バイパス処理を行う従来の中継器では、一部のトラヒックをバイパスすることにより、通常の中継処理を経て転送される非バイパストラヒックは、転送処理が後回しになる。そのため、非バイパストラヒックの伝送遅延が大きくなるという問題が生じる。特に、伝送路の負荷が高い状態で一部のトラヒックをバイパスすると、出力先のバッファの多くがバイパストラヒックで占有される結果、非バイパストラヒックの伝送遅延は顕著になる。また、非特許文献１に開示されている方式のように、バイパス先や処理内容などを予測する方式を用いた場合、予測ミスにより、バイパスを行った中継器では想定以上に伝送遅延が大きくなる可能性がある。
【課題を解決するための手段】
【００１５】
本発明の一実施形態による中継器は、データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる。前記中継器は、データを受け取る入力部と、前記入力部が受け取った前記データを格納するための複数のデータ格納部を有するバッファ部と、前記バッファ部に格納された前記データを出力する出力部と、前記入力部が受け取った前記データのバースト性を示す情報に基づいて、前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定する振分け処理部とを備えている。【００１６】
本発明の一実施形態による制御方法は、データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御方法である。前記方法は、データを受け取るステップと、受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、前記複数のデータ格納部に格納された前記データを出力するステップと、受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、を含む。【００１７】
本発明の一実施形態による制御プログラムは、データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御プログラムである。前記制御プログラムは、前記中継器に実装されたコンピュータに対し、データを受け取るステップと、受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、前記複数のデータ格納部に格納された前記データを出力するステップと、受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、を実行させる。【００１８】
本発明の一実施形態によるシミュレーションプログラムは、データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器のためのシミュレーションプログラムである。前記シミュレーションプログラムは、コンピュータに対し、データを受け取るステップと、受け取った前記データを複数のデータ格納部のいずれかに格納するステップと、前記複数のデータ格納部に格納された前記データを出力するステップと、受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、を実行させる。
【発明の効果】
【００１９】
本発明の実施形態によれば、半導体システムのようなデータ伝送システムにおいて、トラヒックの伝送遅延を低減させることが可能となる。
【図面の簡単な説明】
【００２０】
【図１Ａ】中継器間でバイパスする場合に生じる課題を説明するための第１の図である。
【図１Ｂ】中継器間でバイパスする場合に生じる課題を説明するための第２の図である。
【図２】実施形態１の中継器の動作の概要を示す図である。
【図３】実施形態１における伝送システムの構成例を示す図である。
【図４】本明細書における中継器の表記を説明するための図である。
【図５Ａ】実施形態１における中継器の構成図である。
【図５Ｂ】実施形態１における中継器のバッファ選択部の構成図である。
【図６】パケットの伝送フォーマットの例を示す図である。
【図７】実施形態１における中継器の動作の手順を示す図である。
【図８】実施形態１におけるバッファ選択部がバイパスを行うか否かを判定する処理の流れを示す図である。
【図９Ａ】実施形態１におけるバイパス通知を隣接する中継器に通知する処理を示す図である。
【図９Ｂ】実施形態１におけるバイパス通知を隣接する中継器に通知する処理の他の例を示す図である。
【図１０】実施形態１におけるバイパス通知パケットの構成例を示す図である。
【図１１】バラフライ網の構成例を示す図である。
【図１２】簡易ネットワークモデルを説明するための図である。
【図１３Ａ】実施形態１における簡易ネットワークモデルによるバイパス通知処理の流れを示す図である。
【図１３Ｂ】中継器の経路情報の例を示す図である。
【図１４】バイパス通知を受信した中継器の処理の例を示す図である。
【図１５Ａ】バイパス通知を受信した中継器においてバイパス処理を行わないトラヒックに対して行う処理の第１の例を示す図である。
【図１５Ｂ】バイパス通知を受信した中継器においてバイパス処理を行わないトラヒックに対して行う処理の第２の例を示す図である。
【図１５Ｃ】バイパス通知を受信した中継器においてバイパス処理を行わないトラヒックに対して行う処理の第３の例を示す図である。
【図１６】実施形態１において、バイパス処理が行われた場合におけるバイパスされないトラヒックに対する中継器の処理の流れを示す図である。
【図１７Ａ】実施形態１において、バイパス処理が行われた場合にバイパスされないトラヒックに対する中継器の処理を示すフローチャートである。
【図１７Ｂ】実施形態１において、経路を切り替えるか否かを決定する処理を示すフローチャートである。
【図１８Ａ】実施形態１において、バイパス処理を行わないトラヒックに対する中継器の処理の第１の例を示す図である。
【図１８Ｂ】実施形態１において、バイパス処理を行わないトラヒックに対する中継器の処理の第２の例を示す図である。
【図１９Ａ】出力バッファを有しない中継器の構成例を示す図である。
【図１９Ｂ】外部に配線してバイパスを行う中継器の構成例を示す図である。
【図２０】機能拡張によりバスマスタおよびバイパス経路を追加した場合の例を示す図である。
【図２１Ａ】バイパス配線により、混雑が発生することを示す図である。
【図２１Ｂ】送信量の調整によってバイパス配線の課題を解決できることを示す図である。
【図２１Ｃ】宛先の変更によってバイパス配線の課題を解決できることを示す図である。
【図２２Ａ】複数のバスマスタを分散型のバスを介して接続したトーラス型のトポロジの例を示す図である。
【図２２Ｂ】複数のバスマスタを分散型のバスを介して接続した階層型のトポロジの例を示す図である。
【図２３】実施形態２における中継器の構成図である。
【図２４Ａ】実施形態２における簡易ネットワークモデルによる中継器の動作の例を示す図である。
【図２４Ｂ】中継器の経路情報の例を示す図である。
【図２５Ａ】実施形態２において、高優先度トラヒックが伝送された場合における低優先度トラヒックに対する中継器の処理の流れを示す図である。
【図２５Ｂ】実施形態２において、経路を切り替えるか否かを決定する処理の流れを示す図である。
【図２６Ａ】実施形態２における低優先度トラヒックに対する中継器の処理の第１の例を示す図である。
【図２６Ｂ】実施形態２における低優先度トラヒックに対する中継器の処理の第２の例を示す図である。
【図２７】実施形態３における中継器の概略構成を示すブロック図である。
【図２８Ａ】中継器によるバイパス判定処理の一例を示すフロー図である。
【図２８Ｂ】中継器によるバイパス判定処理の他の例を示すフロー図である。
【図２９】実施形態３における伝送システムの構成例を示す図である。
【図３０】実施形態３における中継器の処理の流れの概略を示す図である。
【図３１】実施形態３における中継器の動作を説明するための図である。
【図３２】実施形態３における中継器のバッファ選択部の構成図である。
【図３３】実施形態３におけるバッファ選択部の動作の手順を示す図である。
【図３４】実施形態３におけるヘッダフリットの詳細構造を示す図である。
【図３５】実施形態３におけるヘッダフリット解釈部で解析した結果を示す図である。
【図３６】実施形態３におけるフリット選別部の構成例を示す図である。
【図３７】実施形態３におけるフリット選別部の処理の流れを示す図である。
【図３８】実施形態３におけるフリット選別部の他の構成例を示す図である。
【図３９】実施形態３における出力バッファを有しない中継器の構成例を示す図である。
【図４０】実施形態３における外部に配線してバイパスを行う中継器の構成例を示す図である。
【図４１Ａ】実施形態４における中継器の概略構成の第１の例を示す図である。
【図４１Ｂ】実施形態４における中継器の概略構成の第２の例を示す図である。
【図４２】実施形態４における中継器の処理の流れの概略を示す図である。
【図４３】実施形態４における中継器のバッファ選択部の構成図である。
【図４４】実施形態４におけるバッファ選択部の動作の手順を示す図である。
【図４５】実施形態４におけるバイパスバッファ送信管理部の処理の流れを示す図である。
【図４６】実施形態４におけるフリット選別部による選択基準を動的に補正する方法を示す図である。
【図４７】実施形態４における負荷値情報の配信例を示す図である。
【図４８Ａ】実施形態４における自中継器のバイパスバッファのバッファキューにバーストトラヒックを割り当てる場合の構成例を示す図である。
【図４８Ｂ】実施形態４における転送先の中継器内の入力バッファのバッファキューにバーストトラヒックを割り当てる場合の構成例を示す図である。
【図４８Ｃ】実施形態４におけるバイパスバッファまたは入力バッファ内の構成例を示す図である。
【図４９】実施形態４におけるバイパス機能を有しない中継器における処理の手順を示す図である。
【図５０】実施形態４における優先度に応じてバッファキューを割り当てる動作の例を示す図である。
【図５１】中継器のメモリバスへの利用例を示す図である。
【図５２】中継器のマルチコアプロセッサ上での利用例を示す図である。
【図５３Ａ】従来の集中型のバス制御の例を示す図である。
【図５３Ｂ】従来の分散型のバス制御の例を示す図である。
【図５４】従来の中継器の概略構成を示す図である。
【図５５】バーストトラヒックの例を示す図である。
【図５６】従来のバイパスを行う中継器の概略構成を示す図である。
【発明を実施するための形態】
【００２１】
本発明の一実施形態による中継器は、データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる。前記中継器は、データを受け取る入力部と、前記入力部が受け取った前記データを格納するための複数のデータ格納部を有するバッファ部と、前記バッファ部に格納された前記データを出力する出力部と、前記入力部が受け取った前記データのバースト性を示す情報に基づいて、前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定する振分け処理部とを備えている。
【００２２】
ある実施形態において、前記バースト性を示す情報は、単位時間当たりの伝送量、送信周期、送信間隔、連続して伝送されるパケット数、および遅延時間の少なくとも１つである。
【００２３】
ある実施形態において、前記バースト性を示す情報は、前記データの許容スループットおよび許容遅延時間の少なくとも一方である。
【００２４】
ある実施形態において、前記バースト性を示す情報は、バースト性を示す識別子、前記データの優先度、前記データの種類を示す識別子、および前記第１ノードを特定する識別子の少なくとも１つである。
【００２５】
ある実施形態において、前記振分け処理部は、前記データの単位時間当たりの伝送量が予め定められた閾値よりも多い場合、前記データの送信周期が予め定められた閾値よりも短い場合、前記データの送信間隔が予め定められた閾値よりも短い場合、連続して伝送されるパケット数が予め定められた閾値よりも大きい場合、および前記データの許容遅延時間が予め定められた閾値よりも短い場合の少なくとも１つの場合に、前記データを前記バッファ部における予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における予め確保された特定のデータ格納部に格納する。
【００２６】
ある実施形態において、前記中継器は、前記バースト性を示す情報を計測する計測部をさらに備えている。
【００２７】
ある実施形態において、前記バースト性を示す情報は、前記データに予め付与されている。
【００２８】
ある実施形態において、前記振分け処理部は、前記複数のデータ格納部の各々がどのデータによって利用されているかを示すデータ格納部利用情報を有し、前記入力部が受け取った前記データを前記特定のデータ格納部に格納する場合に、前記情報を更新する。
【００２９】
ある実施形態において、前記振分処理部は、前記特定のデータ格納部に格納された前記データの送信完了後、予め定められた時間が経過したとき、前記データ格納部利用情報から前記データに関する情報を削除する。
【００３０】
ある実施形態において、前記中継器は、前記入力部が受け取ったデータを優先的に処理するバイパス処理を行うか否かを判定し、前記バイパス処理を行うと判定した場合に、前記データを前記バッファ部に送るバイパス判定部をさらに備えている。
【００３１】
ある実施形態において、前記出力部は、複数の出力ポートを含み、前記中継器は、前記入力部が受け取った前記データを解析することにより、前記複数の出力ポートの中から前記データを出力する１つの出力ポートを決定するルーティング処理部をさらに備えている。
【００３２】
ある実施形態において、前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定する送信管理部をさらに備えている。
【００３３】
ある実施形態において、前記送信管理部は、各データに付与された優先度または緊急度を示す情報に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択する。
【００３４】
ある実施形態において、前記送信管理部は、各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択する。
【００３５】
ある実施形態において、前記送信管理部は、各データに付与された前記許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定する。
【００３６】
ある実施形態において、前記送信管理部は、各データに付与された締切時間、中継回数、および前記データが自中継器より前に経由した他の中継器におけるバイパスバッファでの待ち時間の少なくとも１つの情報に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択する。
【００３７】
ある実施形態において、前記送信管理部は、各データに付与された締切時間、中継回数、および前記データが自中継器より前に経由した他の中継器におけるバイパスバッファでの待ち時間の少なくとも１つの情報に基づいて、前記複数のデータ格納部からのデータの出力順序を決定する。
【００３８】
ある実施形態において、前記送信管理部は、各データのデータ長に基づいて各データの前記許容残り時間を補正する。
【００３９】
ある実施形態において、前記送信管理部は、少なくとも１つの他の中継器におけるバッファ部の負荷を示す情報を収集し、前記情報に基づいて、各データの前記許容残り時間を補正する。
【００４０】
ある実施形態において、前記バッファ部の負荷を示す情報は、前記バッファにおけるデータの待ち時間、前記バッファの空き容量、および前記バッファの使用量の少なくとも１つである。
【００４１】
ある実施形態において、前記送信管理部は、前記複数のデータ格納部に格納されたデータのうち、バースト性が最も高いと判断されたデータが格納されているデータ格納部から前記データを出力させる。
【００４２】
本発明の一実施形態による制御方法は、データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御方法である。前記方法は、データを受け取るステップと、受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、前記複数のデータ格納部に格納された前記データを出力するステップと、受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、を含む。
【００４３】
本発明の一実施形態による制御プログラムは、データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御プログラムである。前記制御プログラムは、前記中継器に実装されたコンピュータに対し、データを受け取るステップと、受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、前記複数のデータ格納部に格納された前記データを出力するステップと、受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、を実行させる。
【００４４】
本発明の一実施形態によるシミュレーションプログラムは、データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器のためのシミュレーションプログラムである。前記シミュレーションプログラムは、コンピュータに対し、データを受け取るステップと、受け取った前記データを複数のデータ格納部のいずれかに格納するステップと、前記複数のデータ格納部に格納された前記データを出力するステップと、受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、を実行させる。
【００４５】
以下、添付の図面を参照しながら、本発明のより具体的な実施形態を説明する。以下の説明において、同一または対応する構成要素には同一の参照符号を付している。
【００４６】
（実施形態１）
＜１．本実施形態の概要＞
まず、本発明の第１の実施形態を説明する。本実施形態は、バイパス処理が実行された場合に発生し得るトラヒックの混雑の問題を解消する技術を提供する。まず、図１Ａおよび図１Ｂを参照しながら、バイパス処理に伴う課題を説明する。
【００４７】
＜１．１．バイパス処理に伴う課題＞
図１Ａは、複数の中継器Ｒ１〜Ｒ９を介して複数のバスマスタ（ＢＭ）と複数のメモリ（Ｍ）との間でデータの送受信を行うデータ伝送システムの構成例を示している。図示される構成例では、複数の中継器Ｒ１〜Ｒ９がバスによってメッシュ状に接続され、各中継器はバスマスタまたはメモリに接続されている。中継器Ｒ９と中継器Ｒ７との間にはバイパス経路１ｄが設けられている。
【００４８】
この構成例において、中継器Ｒ９に接続されたバスマスタ１ａからはバイパス経路１ｄを通らずに中継器Ｒ９、Ｒ８、Ｒ７を経由してメモリ５にデータが送信される。一方、バスマスタ１ｂからはバイパス経路１ｄを通って中継器Ｒ９、Ｒ７を経由してメモリ５にデータが送信される。この場合、バスマスタ１ｂから発生したバイパストラヒックとバスマスタ１ａから発生した非バイパストラヒックとの間で、共通の宛先であるメモリ５に接続された中継器Ｒ７において混雑が発生している。このため、バイパストラヒックは非バイパストラヒックの影響を受けて遅延する。また、中継器Ｒ７において、バイパストラヒックは高い優先度で処理され、非バイパストラヒックは低い優先度で処理されるとすると、非バイパストラヒックは、バイパストラヒックの伝送が完了するまで待たされる。このため、非バイパストラヒックの伝送遅延が問題となる。さらに、待たされている非バイパストラヒックが経路上の各中継器のバッファを占有するため、経路上の各中継器に接続されている他のバスマスタからの伝送が妨げられる。
【００４９】
図１Ｂは、中継器間をバイパスする場合に発生し得る課題の他の例を示す図である。図示される構成では、バスマスタ１ｃが、宛先であるメモリ５に中継器Ｒ７を介してバイパス経路１ｅを用いてバイパスする例を示している。この例でも、バスマスタ１ａから伝送される非バイパストラヒックとバスマスタ１ｃから伝送されるバイパストラヒックとの干渉により、中継器Ｒ７で混雑が発生している。中継器Ｒ７において、バイパストラヒックは高い優先度で処理され、非バイパストラヒックは低い優先度で処理されるとすると、非バイパストラヒックは、バイパストラヒックの伝送が完了するまで待たされる。このため、非バイパストラヒックの伝送遅延が問題となる。さらに、待たされている非バイパストラヒックが経路上の各中継器のバッファを占有するため、経路上の各中継器に接続されている他のバスマスタからの伝送が妨げられる。
【００５０】
このように、バイパストラヒックと非バイパストラヒックとが合流する中継器が存在すると、その中継器を経由するトラヒックの伝送遅延が問題となる。また、この例に限らず、一般にあるトラヒックについてバイパス処理が行われると、その他のトラヒックの伝送は後回しになるため、スループットが低下する。
【００５１】
＜１．２．本実施形態の動作の概要＞
本実施形態の中継器は、上記の課題に対処するため、バイパス処理を行う場合、バイパス処理が行われたことを示す通知（バイパス通知）を隣接中継器に送信する。また、非バイパストラヒックに対する伝送制御を実行する。以下、各処理の概要を説明する。
【００５２】
＜１．２．１．バイパス通知＞
本実施形態の中継器は、バイパス処理を行う場合、バイパス処理が行われたことを示す通知（バイパス通知）を隣接中継器に送信する機能を備えている。以下、図２を参照しながら本実施形態におけるバイパス通知処理の基本概念を説明する。
【００５３】
図２は、本実施形態において想定するデータ伝送システムの構成例および中継器の動作の概要を示す図である。図示されるデータ伝送システムは、データを送信する第１ノード（送信ノード）１０と、データを受信する第２ノード（受信ノード）２０と、第１ノード１０および第２ノード２０の間でデータを中継する複数の中継器６００ａ、６００ｂ、６００ｃとを備えている。図２（ａ）は、第１ノード１０から第２ノード２０へ、複数の中継器６００ａ、６００ｂ、６００ｃを介してデータが伝送されている様子を示している。なお、図示されるデータ伝送システムの構成はあくまでも一例であり、本発明はこのような構成に限られるものではない。
【００５４】
各中継器は、バイパス処理を行うことにより、優先度や緊急度の高いトラヒックを優先的に転送することができる。バイパス処理を行った場合には、伝送路の負荷状況に応じて他の中継器にバイパス処理を行ったことを示すバイパス通知を送信することができる。これにより、バイパス通知を受け取った他の中継器は、伝送負荷を軽減するための種々の対策を実行することが可能となる。この意味で、バイパス通知は、バイパス処理されないトラヒックの伝送を抑制すべきことを他の中継器に知らせるための通知であるといえる。
【００５５】
図２（ｂ）は、１つの中継器６００ｂがバイパス処理を行ったことを示している。図２（ｃ）は、バイパス処理を行った中継器６００ｂが前段の中継器６００ａにバイパス通知を送信している様子を表している。図２（ｄ）は、バイパス通知を受けた中継器６００ａが、データの送信経路を変更したり、流量を制限することによって中継器６００ｂにおける伝送遅延を回避する対策を行っている例を示している。このように、バイパス処理を行った中継器６００ｂが、バイパス通知を他の中継器に送信することにより、システム全体の伝送負荷を軽減することが可能となる。
【００５６】
本実施形態では、バイパスする方法として、後述するように、１つの中継器内、または２つの中継器間にバイパス経路を設定する方法や、バースト性のあるトラヒックのような優先度の高いトラヒックに対し、伝送経路上の各中継器において専用のバッファキューを割当てる方法を採用することができる。
【００５７】
バイパス通知による中継処理のオーバーヘッドを抑制するために、バイパス通知を行う機能を全ての中継器が備えている必要はなく、一部の中継器だけが備えていてもよい。例えば、宛先である第２ノード２０（例えば、メモリやＩ/Ｏなどのスレーブ）に接続された中継器６００ｃだけに当該機能を付与するだけでもよい。すなわち、中継器６００ｃがバイパス処理を行う場合（例えば、中継器６００ｃから第２ノード２０にバースト性のあるデータが転送される場合）にのみ、中継器６００ｂにバイパス通知をする形態でもよい。また、バイパス通知は、隣接する中継器間で行われるトラヒックのフロー制御と兼用してもよい。フロー制御とは、送信元の中継器が、データ転送前に送信先の中継器のバッファ確保の可否を通知する処理である。
【００５８】
具体的には、バーストトラヒックをバイパス経路を用いて中継器６００ｃから第２ノード２０に転送中に、その影響によって中継器６００ｃにおいてバースト性のないトラヒックの伝送がブロックされる場合を想定する。すなわち、バースト性のあるトラヒックがバースト性のないトラヒックよりも高優先度で伝送される場合を想定する。このとき、中継器６００ｃでは、バースト性のないトラヒックのためにバッファを確保することができない。この状況下で、中継器６００ｂは、バースト性のないトラヒックを転送する際、中継器６００ｃにバッファ確保の可否の問い合わせを行う。中継器６００ｃは、バッファの確保ができないことを中継器６００ｂに通知する。このフロー制御における通知は、実質的に中継器６００ｃから中継器６００ｂへバイパス伝送が行われていることを示す通知と同じである。このように、バイパス通知とフロー制御の通知処理とを兼用することが可能である。
【００５９】
同様に、中継器６００ｃ以外の他の中継器６００ａ、６００ｂは、中継器６００ｃからのバイパス通知の中継を、隣接する中継器または第１ノード１０との間のフロー制御と兼用するように構成してもよい。これにより、第１ノード１０（例えば、ＤＳＰやプロセッサなどのバスマスタ）は、中継器６００ａとの間のトラヒックのフロー制御の結果として、データの送信タイミングや送信量を適応的に制御することが可能である。同様に、中継器６００ａは、中継器６００ｂとの間のトラヒックのフロー制御の結果として、データの送信タイミングや送信量を適応的に制御することが可能である。
【００６０】
＜１．２．２．非バイパストラヒックに対する伝送制御＞
次に、非バイパストラヒックに対する伝送制御を説明する。この伝送制御には、以下の２つの態様がある。
【００６１】
第１の制御は、バイパス処理を実行する場合に、自中継器の伝送状態に基づいて、バイパストラヒックと同一の宛先が設定された非バイパストラヒックの出力に対して行われる制御である。この制御は、例えば図１Ａに示す中継器Ｒ９のように、バイパスされるデータとバイパスされないデータとを同一の宛先（メモリ５）に向けて送信する中継器において実行され得る。自中継器の伝送状態は、例えば、入力バッファや出力バッファの使用量（空き容量）といった情報である。自中継器の伝送状態を考慮して、非バイパストラヒックの送信経路を変更したり、送信流量を抑制するといった方法により、伝送遅延を抑制することができる。第１の制御の詳細については、後述する。
【００６２】
第２の制御は、バイパス処理が実行されない場合に、非バイパストラヒックと他の中継器から送出されたバイパストラヒックとが合流する中継器の伝送状態に基づいて、非バイパストラヒックの出力に対して行われる。この制御は、例えば図１Ａ、１Ｂに示す中継器Ｒ９のように、伝送先の他の中継器Ｒ７においてバイパストラヒックと非バイパストラヒックとの間で混雑が生じている際に、その上流（送信ノード側）に位置する中継器において実行され得る。バイパストラヒックと非バイパストラヒックとが合流する中継器の混雑状況に応じて、非バイパストラヒックの送信経路を変更したり、送信流量を抑制することにより、伝送遅延を抑制することができる。混雑状況は、例えばデータ伝送前に行われるフロー制御の際に他の中継器に通知されるように構成することができる。第２の制御の詳細についても後述する。
【００６３】
本実施形態の中継器は、第１の制御および第２の制御の両方を必ずしも実行する必要はない。これらの制御の少なくとも一方を実行するように構成されていればある程度の効果を得ることができる。
【００６４】
以下、本実施形態の具体的な構成および動作を説明する。
【００６５】
＜２．システム構成＞
図３は、本実施形態による中継器６００を用いたデータ伝送システムの構成例を示す図である。図示されるシステムは、送信ノードとして複数のバスマスタ１０１（ＢＭ０〜ＢＭ７）を有し、受信ノードとして複数のメモリ１０５（Ｍ０〜Ｍ７）を有している。複数のバスマスタ１０１および複数のメモリ１０５は、複数の中継器６００を介してバスで多段に接続されている。このように、図３に示す伝送システムは、多段接続網（Ｍｕｌｔｉｓｔａｇｅ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  Ｎｅｔｗｏｒｋ：ＭＩＮ）を構成している。本実施形態では、個々のバスマスタ１０１が本発明における第１ノードとして機能し、個々のメモリ１０５が本発明における第２ノードとして機能する。
【００６６】
本実施形態におけるバスマスタ１０１は、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）などのプロセッサであり、バスを用いてデータの転送制御を行うことができるデバイスである。メモリ１０５は、例えばＤＲＡＭやＳＲＡＭ等の半導体メモリである。中継器６００は、例えば半導体回路であり、複数のバスマスタ１０１および複数のメモリ１０５の間で伝送されるデータを中継する機能を備えている。
【００６７】
図３に示す構成例では、８個のバスマスタ（ＢＭ０〜ＢＭ７）と、１２個の中継器（Ｒ０〜Ｒ１１）と、８個のメモリ（メモリ０〜７）とがバスで接続されている。１２個の中継器は、３つのグループに分類される。第１のグループ（Ｇ１）は、８個のバスマスタ１０１に接続される４個の中継器（Ｒ０、Ｒ１、Ｒ２、Ｒ３）を含んでいる。第２のグループ（Ｇ２）は、第１のグループの後段に接続される４個の中継器（Ｒ４、Ｒ５、Ｒ６、Ｒ７）を含んでいる。第３のグループ（Ｇ３）は、第２のグループの後段に接続され、８個のメモリに接続される４個の中継器（Ｒ８、Ｒ９、Ｒ１０、Ｒ１１）を含んでいる。
【００６８】
バスマスタ１０１からメモリ１０５へのデータ伝送は、パケット交換方式により行われる。各バスマスタは、図３（ａ）に示すように、送信すべきパケットをフリットと呼ばれる最小単位に分割してから隣接の中継器に送信する。１つのパケットを分割した複数のフリットのうち、最初に送信されるフリットは、ヘッダフリットと呼ばれる。ヘッダフリットには、パケットの先頭であることを示すフラグ情報や、パケットの送信先のアドレス情報などが記述されている。本実施形態におけるパケットおよびフリットのデータ構造の詳細については後述する。
【００６９】
図３に示す多段接続網を構成する各中継器は、２入力２出力のクロスバスイッチ６０５を備えている。各中継器は、図３（ｂ）に示すように、クロスバスイッチ６０５を切り替えることにより、入力元と出力先との組合せを変更することができる。このため、トラヒックの流れを２つの伝送経路（伝送経路１、２）の間で切り替えることができる。出力先の伝送経路が異なっていれば、中継器は２種類のトラヒックを各伝送経路に同時に出力することが可能である。このような多段接続網によれば、各中継器６００におけるスイッチの切り替えにより、全バスマスタ１０１と全メモリ１０５との間で、必ず１つ以上の伝送経路を構築することができる。
【００７０】
一般に、クロスバスイッチによってＮ個のバスマスタとＭ個のメモリの全てを接続するためには、Ｎ×Ｍ個のスイッチが必要となる。ここで、スイッチとは、ある方向に並行する複数の通信路と他の方向に並行する複数の通信路との交点に設けられ、ＯＮ／ＯＦＦの切り替えによって通信路を動的に構築できるものをいう。通常、必要なスイッチの数は、バスマスタおよびメモリの数が増えるにつれて急激に増加してしまう。これに対し、多段接続網では、入出力数の少ないクロスバスイッチを階層的に接続することにより、少数のスイッチを用いてバスマスタとメモリとの間の接続を切り替えることができる。
【００７１】
図３に示す構成におけるデータ伝送の一例として、バスマスタＢＭ２からメモリＭ５へとデータが伝送される場合を想定する。このとき、バスマスタＢＭ２は、メモリＭ５のアドレス（１０１）が送信先アドレスとして記述されたパケットを複数のフリットに分割し、中継器Ｒ１に送信する。分割された複数のフリットは、中継器Ｒ１、Ｒ７、Ｒ１０を経てメモリＭ５へと送信される。メモリＭ５は、中継器Ｒ１０から送信された複数のフリットを受け取り、これらのフリットからパケットを再構築する。以上の処理により、バスマスタＢＭ２からメモリＭ５へとデータが伝送される。
【００７２】
なお、本実施形態における中継器６００は、図３に示すような多段接続網を構成する集積回路に限らず、他のトポロジを有する集積回路であっても同様に適用することが可能である。また、本実施形態では、バスマスタ１０１からメモリ１０５へのデータ転送は、パケット交換方式により複数の中継器を介して行われるものとして説明するが、データ転送方式は他の方式であってもよい。本実施形態の中継器は、バスマスタからメモリへのデータ伝送に限らず、複数のノード間でデータを伝送するシステムであれば、同様に適用することができる。例えば、メモリからデータを読み出す場合のように、メモリが送信側のノード、バスマスタが受信側のノードであってもよい。また、バスマスタと送受信する相手のノードは、メモリに限定されず、例えば外付けＨＤＤのような外部記録装置と接続するための入出力ポートであってもよい。そのような入出力ポートの例として、ＵＳＢポートが挙げられる。
【００７３】
図３に示す構成では、第１および第３グループの各中継器（Ｒ０〜Ｒ３、Ｒ８〜Ｒ１１）は、第２グループの各中継器（Ｒ４〜Ｒ７）と同様、１つの機能ブロックとして描かれている。しかし、実際には、第１グループの各中継器とバスマスタとの間、および第３グループの各中継器とメモリとの間には、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｔｒｏｌｌｅｒ）等の他の機能部が接続される。
【００７４】
図４は、本実施形態におけるデータ伝送システムの一部を示すブロック図である。図４では、簡単のため、１本の伝送経路上に接続された１組のバスマスタ１０１、第１グループの中継器６００ａ、第２グループの中継器６００ｂ、第３グループの中継器６００ｃ、およびメモリ１０５のみを示している。
【００７５】
図４（ａ）に示すように、バスマスタ１０１と第１グループの中継器６００ａとの間には、ＮＩＣ６２０ａが接続される。ＮＩＣ６２０ａは、バスプロトコルの変換処理や、バスマスタ１０１が要求するメモリサイズを確保できるメモリ１０５を複数のメモリの中から選択し、選択したメモリ１０５をバスマスタ１０１に通知する機能を備えている。
【００７６】
一方、第３グループの中継器６００ｃとメモリ１０５との間には、ＮＩＣ６２０ｃおよびメモリコントローラ６３０が接続される。ＮＩＣ６２０ｃは、バスプロトコル変換処理や、データ伝送の往路と復路との対応関係付けを行い、往路に対する復路の応答をＮＩＣ６２０ａへ返信する。ここで、往路とはバスマスタ１０１からメモリ１０５への方向の伝送経路を意味し、復路とはメモリ１０５からバスマスタ１０１への方向の伝送経路を意味する。メモリコントローラ６３０は、ＮＩＣ６２０ｃに接続され、メモリ１０５へのアクセス順序の制御などを行う。
【００７７】
本明細書では、表記を簡略化するために、図４（ｂ）に示すように、ＮＩＣ６２０ａ、６２０ｃ、およびメモリコントローラ６３０の表記を省略する。すなわち、以下の説明においては、バスマスタ１０１などの送信ノードに直接接続された中継器は、ＮＩＣを含んでいるものとする。同様に、メモリ１０５などの受信ノードに直接接続された中継器はＮＩＣおよびメモリコントローラを含んでいるものとする。
【００７８】
＜３．中継器の構成＞
＜３．１．中継器の概略構成＞
図５Ａは、本実施形態における中継器の概略構成を示す図である。以下の説明では、第２グループの中継器６００ｂを例に説明するが、第１および第３グループの中継器についても転送元および転送先が異なるだけで基本的な構成は同様である。以下、第１グループの中継器６００ａを「前段の中継器」と呼び、第３グループの中継器６００ｃを「後段の中継器」と呼ぶことがある。また、第１および第３グループの中継器を「隣接中継器」と呼ぶことがある。中継器６００ｂは、前段の中継器６００ａから後段の中継器６００ｃへの行き先を決定し、トラヒックを中継する。
【００７９】
中継器６００ｂは、複数の入力ポート６１５および出力ポート６１７を備えている。前段の中継器６００ａから入力ポート６１５を介してフリットを受け取り、出力ポート６１７を介して後段の中継器６００ｃにフリットを送出する。中継器６００ｂは、前段の中継器６００ａから送られるフリットを受信し、バイパスするか否かを決定するバッファ選択部６０３を備えている。また、中継器６００ｂは、バイパスされないフリットを一時的に格納する入力バッファ６０４と、入力元と出力先との接続を切り替えるクロスバスイッチ６０５と、クロスバスイッチ６０５から出力されたデータを一時的に格納する出力バッファ６０６とを備えている。中継器６００ｂは、さらに、バイパスされないフリットを宛先へと転送するための処理を行うルーティング処理部６０７、バッファアロケータ６０８、およびスイッチアロケータ６０９を備えている。
【００８０】
入力バッファ６０４および出力バッファ６０６は、例えばＳＲＡＭまたはレジスタなどの一次記憶領域である。クロスバスイッチ６０５は、例えば公知のスイッチ回路である。ルーティング処理部６０７、バッファアロケータ６０８、およびスイッチアロケータ６０９は、後述する動作を実行できるように構成された論理回路によって構成される。
【００８１】
なお、図５Ａに示す例では、中継器６００ｂは、バッファ選択部６０３を２つ、入力バッファ６０４を４つ、出力バッファ６０６を２つ備えているが、本発明はこのような例に限られない。図５Ａに示す例では、２つのバッファ選択部６０３のうちの１つのみがバイパス処理を行うように構成されている。
【００８２】
本実施形態における入力バッファ６０４および出力バッファ６０６は、複数のバッファキューから構成されている。バッファキューは、仮想チャネル（Virtual Channel）で構成してもよい。仮想チャネルでバッファキューを構成する場合、複数の仮想回線が構築されることになる。ここで、仮想回線とは、物理的には１本である通信回線について、論理的に複数の通信回線であるとみなされた回線を指す。
【００８３】
バッファ選択部６０３は、受信したフリットがバイパスを要するか否かを、ヘッダフリットに記述された情報に基づいて判断する。バイパスを要しないと判断した場合、バッファ選択部６０３は、そのフリットが属するトラヒックを入力バッファ６０４に格納する。バイパスを要すると判断した場合、バッファ選択部６０３は、そのトラヒックをバイパス経路ＢＰに送出する。
【００８４】
なお、バイパス経路ＢＰは、バイパストラヒックが出力バッファ６０６へ入力されるように構成してもよいし（バイパスＢＰ１）、出力バッファ６０６を介さずに隣接中継器６００ｃに入力されるように構成してもよい（バイパスＢＰ２）。出力バッファ６０６を介さないバイパス経路ＢＰ２を用いた場合、バッファリングによる遅延は生じないが、伝送先の中継器６００ｃの入力バッファを一意に決定しておく必要があるため、バッファ選択の自由度はない。一方、出力バッファ６０６を介す場合は、バッファリングによる遅延は発生するが、出力バッファ６０６に一旦、格納されるため、転送先の中継器６００ｃの入力バッファの中から転送先の入力バッファを選択できる。このため、出力バッファ６０６を介す場合のバッファ選択の自由度は出力バッファ６０６を介さない場合のバッファ選択の自由度に比べて高い。
【００８５】
一方、バッファ選択部６０３がバイパスしないと判断したトラヒックは、ルーティング処理部６０７、バッファアロケータ６０８、およびスイッチアロケータ６０９によって決定された経路情報に基づいて転送される。ルーティング処理部６０７は、フリットに記述された宛先情報に基づいて、フリットの転送先の出力ポート６１７を決定する。ルーティングのアルゴリズムは、動的に行き先を決定する次元順ルーティングや、設計時に送信元と宛先との関係に基づいて一意に行き先が決定されている静的ルーティングを用いてもよい。本発明は、特定のルーティングアルゴリズムには限定されない。
【００８６】
また、バッファアロケータ６０８は、ルーティング処理部６０７によって決定された出力ポート６１７に対応づけられた出力バッファ６０６の中から、空いているものを選び、入力バッファ６０４のバッファキューと使用する出力バッファ６０６とを対応付ける。
【００８７】
更に、スイッチアロケータ６０９は、トラヒックデータを伝送するために、対応付けが完了している入力バッファ６０４のバッファキューと出力バッファ６０６との組から１組を選ぶ。スイッチアロケータ６０９は、クロスバスイッチ６０５を介して、選択された入力バッファ６０４のバッファキューから出力バッファ６０６へフリットを転送する。その後、出力バッファ６０６から、出力ポート６１７を介して、対応する中継器６００ｃへフリットが転送される。
【００８８】
なお、本実施形態の中継器６００ｂは、出力バッファ６０６を備えているが、組込用途を想定してメモリ量を抑えるために、出力バッファ６０６を設けない場合もある。その場合、出力バッファ６０６と転送先の中継器６００ｃの入力バッファとを共用する構成となる。出力バッファ６０６の代わりに、転送先の中継器の入力バッファを用いても、本実施形態と同様の効果を得ることができる。出力バッファ６０６を設けない場合、バッファアロケータ６０８は、入力バッファ６０４のバッファキューと転送先の中継器６００ｃの入力バッファのバッファキューとを対応付けるように構成される。
【００８９】
＜３．２．バッファ選択部の構成＞
次に、本実施形態におけるバッファ選択部６０３の構成を説明する。図５Ｂは、バッファ選択部６０３の詳細な構成を示すブロック図である。
【００９０】
バッファ選択部６０３は、ヘッダフリットのデータ構造を解釈するヘッダフリット解釈部９０１と、ヘッダフリットに記述された情報に基づいて、受信したデータをバイパスさせるか否かを決定するフリット選別部９０２とを備えている。フリット選別部９０２は、バッファ選択部６０３が有するメモリ（不図示）に格納された優先度閾値９０３や締切時刻９０４の情報と、ヘッダフリットに記述された情報とを比較する。フリット選別部９０２は、受信したデータの優先度や緊急度が低いと判定した場合、データを入力バッファ６０４に送出する。受信したデータの優先度や緊急度が高いと判定した場合、データをバイパスする。本実施形態では、フリット選別部９０２が、本発明におけるバイパス制御部および出力制御部の機能を有する。バイパス処理の詳細については後述する。
【００９１】
バッファ選択部６０３は、さらに、バイパスされるトラヒックの伝送量および中継継続時間を計測する高優先度トラヒック計測部１００３と、入力バッファ６０４および／または出力バッファ６０６のバッファ使用量およびバッファ使用時間を計測するバッファ使用量計測部１００２と、バイパス経路の伝送負荷やバッファ使用量などに基づいてバイパス通知を隣接中継器６００ａに送信するバイパス通知判定部（バイパス通知部）１００１とを備えている。バイパス通知判定部１００１は、不図示のメモリに格納されたトラヒック閾値９０７およびバッファ閾値９０５の情報と、計測されたトラヒック情報およびバッファ情報とに基づいてバイパス通知処理を行う。バイパス通知処理の詳細は後述する。
【００９２】
なお、本実施形態の中継器６００ｂは、バイパスする配線およびバイパス通知機能を備えているが、本発明の中継器は、中継器内に必ずしもこれらを備えている必要はない。バイパス配線を行わずにバイパスを行う例は、実施形態２において説明する。
【００９３】
＜４．パケット、フリットの構成＞
次に、本実施形態におけるパケットおよびフリットの構造を説明する。
【００９４】
図６は、パケット５００の伝送フォーマットの一例と、パケット５００を複数のフリットに分割した例とを示している。パケット５００は、ヘッダフィールド５０１、データフィールド５０２、および制御コードフィールド５０３を有している。
【００９５】
ヘッダフィールド５０１には、例えば、パケットの先頭であることを示すフラグ情報、送信先のアドレス、送信元のアドレス、パケットの優先度を示す情報、およびパケットが送信されてから経過した時間を示す情報（経時情報）が記述される。経時情報の記述方法は任意であり、送信されてから経過した時間を判別できる値であればどのような記述方法であってもよい。例えば、送信された時刻、送信されてから経過した時間、または通過した中継器の数（ホップ数）などが記述され得る。ヘッダフィールド５０１には、上記以外の情報が記述されていてもよい。ヘッダフィールド５０１のデータのうち、送信先のアドレスおよび送信元のアドレスに基づいて、パケット５００の中継処理と、受信側での受信処理とが行われる。
【００９６】
データフィールド５０２には、例えば、映像データや音声データなどが記述される。制御コードフィールド５０３には、例えば予め定められた終了コードが記述される。終了コードの存在により、パケット５００が終了することが判別される。制御コードフィールド５０３には、終了コード以外の情報が格納されていてもよい。
【００９７】
バスマスタ１０１は、前述のように、パケット５００を、フリットと呼ばれる小さい単位に分解して伝送する。１フリットのサイズは、バスを使って１サイクルで伝送可能なサイズであり、バス幅に応じて決定される。パケット５００は、ヘッダフリット５０４、複数のデータフリット５０５、およびテイルフリット５０５に分割される。ヘッダフリット５０４には、上記のヘッダフィールド５０１に格納されたフラグ情報や送信先アドレス情報などが含まれる。なお、本明細書では、特別な断りを入れない限り、フリットを含めたデータ列をパケットと表現する。
【００９８】
ヘッダフリット５０４に続くデータフリット５０５およびテイルフリット５０６には、送信先を特定するアドレス情報は格納されていない。その理由は、ヘッダフリット５０４に続く各フリットは、ヘッダフリット５０４と同じ宛先に送られるためである。ヘッダフリット５０４によって宛先が決まり、そのトラヒックのフリットを出力する出力バッファ６０６が決まると、後に続くフリットは、ヘッダフリット５０４と同じ出力バッファ６０６を利用してヘッダフリット５０４が示す宛先に伝送される。
【００９９】
テイルフリット５０６には、そのフリットがパケットを構成する最後のフリットであることを示すフラグ情報（制御コードフィールド５０３に格納されている終了コード）が付与されている。また、ヘッダフリット５０４とテイルフリット５０６以外の複数のデータフリット５０５は、主にデータを伝送するフリットであり、パケット５００のデータフィールド５０２に対応する。
【０１００】
受信側のメモリ１０５は、テイルフリット５０６に記述されたフラグ情報（終了コード）を検出すると、その終了コードに基づき、伝送された複数のフリットをパケットへ再構築する。
【０１０１】
１パケットのサイズは、例えば１２８バイトであり、１フリットのサイズは、例えば３２ビットまたは６４ビットに設定される。ただし、１パケットのサイズおよび１フリットのサイズはアプリケーションによって異なり得るため、上記のサイズは一例に過ぎない。１フリットの長さは、送信先のアドレスや送信元のアドレスなどの制御データを記述できる長さを基準としてもよい。
【０１０２】
各中継器６００は、前述したように、送られてきたフリットを蓄えるための入力バッファ６０４を備えている。通常処理（非バイパス処理）において、フリットは、一旦入力バッファ６０４に蓄えられた後、クロスバスイッチ６０５の切り替えによって宛先のメモリへと続く中継器、または宛先のメモリへ送信される。
【０１０３】
＜５．中継器の動作＞
＜５．１．バイパス動作の概要＞
次に、中継器６００ｂの動作を説明する。図７は、中継器６００ｂの動作の概略を示すフローチャートである。
【０１０４】
まず、中継器６００ｂのバッファ選択部６０３は、隣接の中継器６００ａからフリットを受信する（Ｓ８０１）。次に、バッファ選択部６０３は、バイパスを行うべきか否かを判定する（Ｓ８０２）。バイパスを行うべきであると判断した場合、バッファ選択部６０３は、バイパスを行うとともに、バイパス通知を行うべきか否かを判定する（Ｓ８０７）。バイパス通知を行うべきであると判定した場合、バッファ選択部６０３は、バイパス通知を隣接する中継器６００ａに送出する（Ｓ８０８）。バイパス通知を行うべきであると判定しなかった場合、バイパス通知は送出されない。バイパスを行ったフリットは出力バッファ６０６へ送信され、対象とするバッファキューから伝送される（Ｓ８０６）。なお、バイパスを行うか否かの具体的な判定方法、バイパス通知を発行する動作の詳細については後述する。
【０１０５】
一方、ステップＳ８０２においてバッファ選択部６０３がバイパスを行わないと判定した場合、ルーティング処理部６０７は、ヘッダフリットを解析して出力ポートを決定する（Ｓ８０３）。続いて、バッファアロケータ６０８は、ルーティング処理で選ばれた出力ポートに対応する出力バッファ６０６のうち、空いている出力バッファ６０６を選び、当該出力バッファと自中継器６００ｂの入力バッファ６０４のバッファキューとの対応付けを行う（Ｓ８０４）。なお、出力バッファ６０６を設けない構成では、バッファアロケータ６０８は、出力バッファ６０６の代わりに、転送先の中継器６００ｃの入力バッファと自中継器６００ｂの入力バッファ６０４との対応付けを行う。次に、スイッチアロケータ６０９は、トラヒックデータを伝送するために対応付けが完了している入力バッファ６０４のバッファキューと出力バッファ６０６との組から１組を選び（Ｓ８０５）、対象とするバッファキューからデータを１フリット単位、またはパケット単位で伝送する（Ｓ８０６）。
【０１０６】
以上のＳ８０３からＳ８０６の処理によれば、中継器６００ｂに入力されたフリットが中継器６００ｂから出力されるのに最低３サイクルかかる。具体的には、以下の３サイクルを要する。
（１）ステップＳ８０３に対応する処理。すなわち、ヘッダフリットに記述された宛先アドレスに基づいて、出力ポート６１７（出力物理チャネル）の計算（Ｒｏｕｔｉｎｇ  ｃｏｍｐｕｔａｔｉｏｎ：ＲＣ）が行われる。
（２）ステップＳ８０４に対応する処理。すなわち、使用する出力バッファ６０６または転送先の中継器６００ｃの入力バッファのバッファキュー（出力仮想チャネル）の割り当て（Ｖｉｒｔｕａｌ  ｃｈａｎｎｅｌ  ａｌｌｏｃａｔｉｏｎ：ＶＡ）が行われる。
（３）ステップＳ８０５およびＳ８０６に対応する処理。すなわち、クロスバスイッチ６０５のアービトレーション（Ｓｗｉｔｃｈ  ａｌｌｏｃａｔｉｏｎ：ＳＡ）が行われ、フリットをクロスバスイッチ６０５上に送出し、通過させる（Ｓｗｉｔｃｈ  ｔｒａｖｅｒｓａｌ：ＳＴ）。なお、別の実装方法として、フリットをクロスバスイッチ６０５上に送出し、通過させる処理を４サイクル目で行う形態もある。
【０１０７】
これに対し、ステップＳ８０２においてバイパスすべきと判定されたフリットについては、上記のステップＳ８０３〜Ｓ８０５の処理は省略され、ステップＳ８０６に対応する処理（ＳＴ）のみが行われる。その結果、バイパスされたフリットは、最低１サイクルで伝送される。
【０１０８】
＜５．２．バイパス判定＞
次に、ステップＳ８０２において行われるバイパス判定の具体的な処理を説明する。
【０１０９】
図８は、バッファ選択部６０３によるバイパスを行うか否かを判定する処理の流れを示す図である。まず、図５Ｂに示すヘッダフリット解釈部９０１は、ヘッダフリットの優先度の記述の読取を行う（Ｓ９０１）。次に、フリット選別部９０２は、メモリに格納された優先度閾値９０３の値とフリットの優先度とを比較し、フリットの優先度が予め定めた優先度以上であるか否かを判定する（Ｓ９０２）。ここで、フリットの優先度の値は、例えば、低遅延伝送の要求の度合いが高いほど、高い値に設定され、優先度が高いものとして扱われる。
【０１１０】
フリットの優先度の値が予め定めた優先度以上であれば、フリット選別部９０２は、そのフリットを含むフローを、バイパス処理を行うフローであると判定し、対象とするトラヒックをバイパスさせる（Ｓ９０５）。バイパスされたトラヒックは高優先度トラヒック計測部１００３に送られた後、伝送される。
【０１１１】
一方、優先度の値が予め定めた優先度よりも小さければ、ヘッダフリット解釈部９０１は、ヘッダフリットの経時情報の記述の読取を行う（Ｓ９０３）。次に、フリット選別部９０２は、メモリに格納された締切時刻情報９０４とフリットの経時情報とを比較し、フリットが締切時刻より前に伝送されているか否かを判定する（Ｓ９０４）。締切時刻を経過している場合は緊急度が高いデータであると判断し、フリット選別部９０２は、バイパス伝送を行う（Ｓ９０５）。締切時刻を経過していない場合は緊急度が低いデータであると判断し、バイパス伝送は行わない。
【０１１２】
ヘッダフリットに記述される優先度の値は、データの緊急度や重要度に基づいて設計時に決定され得る。例えば、映像や音声といった低遅延伝送が要求されるデータや、ユーザが操作したコマンドやシステム異常を通知する情報のように、緊急度が高いデータには高い優先度が付与される。逆に、ファイル転送やバックグラウンドで処理を行うアプリケーションのデータなど、緊急性が比較的低いデータには低い優先度が付与される。
【０１１３】
ヘッダフリットに記述される経時情報は、データ送信を行うバスマスタ１０１が付与する。経時情報は、絶対的な記述（例：○時△分×秒）であってもよいし、相対的な記述（例：○○秒以内）であってもよい。
【０１１４】
なお、締切時刻を用いずに、中継器を通過する毎に優先度を変更する構成であってもよい。各中継器において、締切時刻が近いデータほど優先度を高く設定することにより、締切時刻の情報を用いなくても、緊急度の高いデータをバイパスさせることが可能となる。例えば、中継器内での残留時間の長いデータの優先度を高い優先度に割り当て直すことで、締切時刻を用いずに優先度の情報のみを用いて上記と同様の効果を得ることが可能である。
【０１１５】
また、フリット選別部９０２は、ヘッダフリットの優先度および経時情報の両方が、それぞれ優先度閾値９０３および締切時刻９０４を越えた場合にのみバイパスするように構成されていてもよい。あるいは、図５Ａに示すように、バイパスする経路を２種類（バイパスＢＰ１、バイパスＢＰ２）設け、優先度および緊急度に応じていずれかを選択するようにフリット選別部９０２が構成されていてもよい。例えば、優先度および経時情報の両方が閾値を越えた場合に、出力バッファ６０６を介さないバイパスＢＰ２を選択し、優先度および経時情報のいずれか一方が閾値を超えた場合に出力バッファ６０６を介して伝送するバイパスＢＰ１を選択するように構成されていてもよい。このような構成により、緊急度や重要度の高いデータをより早く伝送することが可能となる。
【０１１６】
本実施形態では、優先度および経時情報がフリットの低遅延伝送の要求度の高さを示す評価指標として用いられるが、本発明はこのような例に限られない。優先度や経時情報の代わりに、伝送するトラヒックのパケット長や、送信ノードから受信ノードまでに通過する中継器数（中継段数）を評価指標にしてもよい。例えば、パケット長が短く、中継段数が少ないパケットを優先的に伝送することにより、バイパスの効果を高めることが可能である。また、バスマスタ１０１または中継器６００において、バイパスするパケットであることを示すフラグをヘッダフリットに設けることによってバイパスの要否を判断できるようにしてもよい。
【０１１７】
あるいは、送信ノードと受信ノードとの対応関係（例：特定のバスマスタのメモリアクセスのみをバイパスさせる）や、トラヒックの種類に応じてバイパスを行うか否かを判定してもよい。これらの情報を用いてバイパスさせる経路を限定することにより、不必要なバイパス経路を持つ必要がなくなり、設計が複雑になることを回避できる。
【０１１８】
本実施形態では、図５Ａに示すバイパス方式を想定したが、中継器におけるバイパス方式はこのような例に限定されない。動的にバイパスする伝送路を確保する方式であってもよいし、予め設計時にバイパスする伝送路を確保する方式であってもよい。また、図５Ａに示すような、転送処理を回避するために物理的に配線を独立させる方式以外の方式を採用してもよい。具体的には、非特許文献１に開示されている、特定の送受信ノード間のトラヒック伝送に対してはルーティング処理などを省略または並列化して低遅延化を図る方式であってもよい。また、中継器の構成として、複数のバッファを設け、パケットに付与された優先度情報や経時情報などに応じて複数のバッファにパケットを振り分け、特定のバッファに格納されたパケットを優先的に伝送する方式であってもよい。さらに、特定の期間、特定のバッファを予約して伝送経路を確保して低遅延化を図る方式であってもよい。
【０１１９】
＜５．３．バイパス通知判定＞
次に、図７のステップＳ８０７において行われるバイパス通知を行うか否かの判定の具体的な処理、およびステップＳ８０８におけるバイパス通知の具体的な処理を説明する。
【０１２０】
図９Ａは、バイパス通知を隣接する中継器９００ａに通知する処理の流れを示す図である。なお、以下の説明において「高優先度トラヒック」とは、図７に示すステップＳ８０２においてバイパスすべきと判定されたトラヒックを指す。
【０１２１】
図５Ｂに示すバッファ選択部６０３の高優先度トラヒック計測部１００３は、バイパスされる高優先度トラヒックの伝送量を計測し（Ｓ１００１）、計測結果をバイパス通知判定部１００１に送出する。バイパス通知判定部１００１は、トラヒックの単位時間当たりの伝送量が予め定めた伝送量の閾値を越えたか否かを判定する（Ｓ１００４）。伝送量の閾値を超えたと判定した場合、バイパス通知判定部１００１は、バイパスしないトラヒックへの影響が大きくなると判断し、バイパス通知範囲と通知間隔とを決定し、他の中継器に対しバイパス通知を行う（Ｓ１００７）。なお、伝送量の閾値は、トラヒック閾値９０７の情報に含まれている。
【０１２２】
バイパス通知は、バイパス通知パケットを前段の隣接中継器６００ａに送信することによって行う。バイパス通知パケットの構造については後述する。
【０１２３】
ここで、図３のネットワーク構成から離れ、中継器６００がさらに多段的に接続されている構成を考える。すなわち、バスマスタ１０１からメモリ１０５までの各伝送経路上において、多数の中継器６００が直列的にトラヒックを中継する構成を考える。
【０１２４】
このような構成において、中継器の１つがバイパス通知を行うと判断した場合、バイパス通知範囲は、例えば、以下の方法で決定される。１万サイクルを単位時間として、単位時間中にバイパス用の伝送路の物理帯域のうち、１／４以上の帯域が高優先度トラヒックに占有された場合、１ホップ先の中継器までバイパス通知を行う。１／２以上の帯域が高優先度トラヒックに占有された場合、２ホップ先の中継器までバイパス通知を行う。３／４以上の帯域が高優先度トラヒックに占有された場合、バスマスタ１０１に接続された中継器までバイパス通知を行う。以上の方法により、バイパス処理を行った中継器におけるバイパス用の伝送路の伝送負荷に応じて、バイパス通知範囲を柔軟に変化させることができる。その結果、バイパス通知を受け取った他の中継器は、通知を発行した中継器におけるトラヒック干渉の緩和策を実施することができる。なお、バイパス通知パケットを受信した中継器の振舞いについては、後述する。
【０１２５】
また、通知間隔については、例えば、以下の方法で決定される。１万サイクルを単位時間として、単位時間内にバイパスを通過する高優先度トラヒックを検出した場合のみバイパス通知を行う。このような方法により、高優先度トラヒックが頻繁に検出された場合は、短い通知間隔でバイパス通知が行われる。逆に、高優先度トラヒックが頻繁に検出されない場合は、長い通知間隔でバイパス通知が行われる。その結果、トラヒック干渉の頻度が高くなった場合、早急にトラヒック干渉を抑制する処理が可能となる。逆に、トラヒック干渉の頻度が低くなった場合、バイパス通知のメッセージを減少させながら、トラヒック干渉を抑制することが可能となる。
【０１２６】
バッファ選択部６０３における高優先度トラヒック計測部１００３は、高優先度トラヒックが途切れずに継続してバイパスを通過する時間（中継継続時間）を計測し（Ｓ１００２）、計測結果をバイパス通知判定部１００１に送出する。バイパス通知判定部１００１は、バイパスされたトラヒックの中継継続時間が予め定められた閾値を越えたか否かを判定する（Ｓ１００５）。中継継続時間が閾値を超えたと判定した場合、バイパス通知判定部１００１は、バイパスしないトラヒックへの影響が大きくなると判断し、バイパス通知範囲と通知間隔とを決定し、他の中継器に対してバイパス通知を行う（Ｓ１００７）。なお、中継継続時間の閾値も、トラヒック閾値９０７の情報に含まれている。
【０１２７】
バイパス通知範囲は、例えば、以下の方法で決定される。１万サイクルを単位時間として、単位時間中に高優先度トラヒックがバイパスを通過する時間が単位時間の１／４を超えた場合、１ホップ先の中継器までバイパス通知を行う。単位時間中に高優先度トラヒックがバイパスを通過する時間が単位時間の１／２を超えた場合、２ホップ先の中継器までバイパス通知を行う。単位時間中に高優先度トラヒックがバイパスを通過する時間が単位時間の３／４を超えた場合、バスマスタに接続された中継器までバイパス通知を行う。以上の方法により、バイパス処理を行った中継器におけるバイパス用の伝送路の伝送負荷に応じて、バイパス通知範囲を柔軟に変化させることができる。その結果、バイパス通知を受け取った他の中継器は、通知を発行した中継器におけるトラヒック干渉の緩和策を実施することができる。
【０１２８】
なお、通知間隔については、上記の高優先度トラヒックの伝送量の閾値を超えた場合と同様の方法で決定すればよい。
【０１２９】
さらに、バッファ選択部６０３のバッファ使用量計測部１００２は、入力バッファ６０４および／または出力バッファ６０６のバッファ使用量の計測を行い（Ｓ１００３）、計測結果をバイパス通知判定部１００１に送出する。バイパス通知判定部１００１は、バッファ使用量が予め定めた閾値（バッファ閾値９０５）を超えたか否かを判定する（Ｓ１００６）。バッファ使用量が予め定めた閾値を超えたと判定した場合、バイパス通知判定部１００１は、バイパスの影響により、バイパスしないトラヒックへの影響が大きくなったと判断し、バイパス通知範囲と通知間隔を決定し、他の中継器に対してバイパス通知を行う（Ｓ１００７）。
【０１３０】
バイパス通知範囲は、例えば、以下の方法で決定される。１万サイクルを単位時間として、入力バッファ６０４（または、出力バッファ６０６）の空き容量が、全体の３／４以上であれば、１ホップ先の中継器までバイパス通知を行う。単位時間中の入力バッファ（または出力バッファ）の空き容量が全体の１／２以上であれば、２ホップ先の中継器までバイパス通知を行う。単位時間中の入力バッファ（または出力バッファ）の空き容量が全体の１／２に満たない場合、バスマスタに接続された中継器までバイパス通知を行う。以上の方法により、入力バッファおよび／または出力バッファの空き容量に応じてバイパス通知範囲を柔軟に変化させることができる。その結果、バイパス通知を受け取った他の中継器は、通知を発行した中継器におけるバイパスされないトラヒックの干渉の緩和策を実施することができる。
【０１３１】
通知間隔については、上記の高優先度トラヒックの伝送量の閾値を超えた場合と同様の方法で決定すればよい。
【０１３２】
なお、バッファの使用量ではなく、バッファでの待ち時間によって判定を行う方法であってもよい。バッファ容量が小さい場合、使用量よりも待ち時間で評価する方が、中継器での混雑状況を反映させやすい場合がある。
【０１３３】
バイパス通知パケットの通知範囲の指定は、例えば以下の方法で実現できる。まず、バイパス通知判定部１００１は、上記の方法で決定したホップ数を「中継回数」としてヘッダフリットに記述して前段の中継器に送信する。バイパス通知パケットを受け取った中継器は、中継回数の値から所定の値だけ減じ、さらに前段の中継器にバイパス通知パケットを転送する。このように、中継器を通過する毎に中継回数の値を減算し、中継回数の値が０以下になった段階でバイパス通知パケットの転送を中止するように各中継器を構成することによって通知範囲の指定が実現できる。また、通知方向としては、バスマスタ１０１からメモリ１０５へ伝送される往路のトラヒックにおいては、上記のように、送信元であるバスマスタ１０１側にバイパス通知パケットを送信するようにすればよい。一方、メモリ１０５からバスマスタ１０１へ伝送される復路のトラヒックにおいては、送信先であるメモリ１０５側にバイパス通知パケットを送信するようにすればよい。このように、通知方向を送信元であるバスマスタ１０１側、または送信先であるメモリ１０５側に限定することで、負荷の高い中継器との間で、効率的にメッセージを通知することが可能となるため、通知メッセージの削減が可能となる。
【０１３４】
なお、図９Ａに示す例では、高優先度トラヒックの伝送量の計測、中継継続時間の計測、およびバッファ使用量の計測を並列的に行っているが、これらを直列的に行ってもよい。直列的に行う場合、いずれかの判定で閾値を超えた場合にバイパス通知を送信するようにしてもよいし、全ての判定で閾値を超えた場合のみバイパス通知を送信するようにしてもよい。
【０１３５】
図９Ｂは、各判定を直列的に行う場合の処理の一例を示す図である。この例では、バイパス通知判定部１００１は、いずれかの判定で閾値を超えた場合にバイパス通知を行う。まず、バイパス通知判定部１００１は、高優先度トラヒック計測部１００３から高優先度トラヒックの伝送量の情報を取得する（Ｓ２００１）。次に、高優先度トラヒックの伝送量が閾値を超えたか否かを判定する（Ｓ２００２）。伝送量が閾値を超えたと判定した場合、バイパス通知判定部１００１は、バイパス通知範囲（ホップ数）と通知間隔とを決定し、他の中継器に対し、バイパス通知を行う（Ｓ２００７）。高優先度トラヒックの伝送量が閾値を超えていないと判定した場合、バイパス通知判定部１００１は、高優先度トラヒック計測部１００３から高優先度トラヒックの中継継続時間の情報を取得する（Ｓ２００３）。続いて、中継継続時間が所定の閾値を超えたか否かを判定する（Ｓ２００４）。中継継続時間が閾値を超えたと判定した場合、バイパス通知判定部１００１は、他の中継器に対し、バイパス通知を行う（Ｓ２００７）。中継継続時間が閾値を超えていないと判定した場合、バイパス通知判定部１００１は、バッファ使用量計測部１００２からバッファ使用量の情報を取得し（Ｓ２００５）、バッファ使用量が閾値を超えたか否かを判定する（Ｓ２００６）。バッファ使用量が閾値を超えたと判定した場合、バイパス通知を行う（Ｓ２００７）。バッファ使用量が閾値を超えていないと判定した場合、伝送負荷は低いと判断され、処理は終了する。このように、各判定を直列的に行うことにより、最初の判定処理でバイパス通知を行うことを決定した場合に他の判定処理を省略してもよい。
【０１３６】
また、映像データのように、振幅が大きく、連続したトラヒックが瞬間的に伝送されることがある。このようなトラヒック（バーストトラヒック）は、他のトラヒックに対し、トラヒック干渉を引き起こすため、影響が大きい。このため、上記の判定基準の他、例えば中継継続時間中のトラヒックの最大振幅や送信間隔に基づいてバイパス通知を行うか否かを判断してもよい。なお、振幅とは、単位時間当たりに伝送されるデータ量を意味し、送信間隔とは、連続で送信されるパケット間の時間間隔を意味する。バイパス通知を行うか否かの判定方法、および通知範囲および通知間隔の決定方法は、上記の例に限らず、どのような方法であってもよい。
【０１３７】
なお、以上の説明では、図７のＳ８０７に示すバイパス通知を行うか否かの判定が行われる場合の例を示したが、本発明ではステップＳ８０７に相当する処理を省略してもよい。すなわち、ステップＳ８０２においてバイパスを行うと判定された場合に、常にバイパス通知を行ってもよい。
【０１３８】
図１０は、バイパス通知パケット１１００の構成例を示す図である。前述のように、バイパス通知パケット１１００の先頭には、送信元アドレス１１０１と送信先アドレス１１０２とが記述される。また、バイパス通知パケット１１００は、バイパス通知のメッセージであることを示す識別子１１０３および中継回数を示す情報１１０４を有している。バイパス通知パケットの通知方法としては、隣接の中継器に対して同報的に通知してもよいし、トラヒックを送信している中継器に対してのみ通知してもよい。なお、図１０に示す例では、通知範囲を中継回数によって指定するが、時刻を直接記載する方法や、送信されてからの経過時間を記述して、通知を行う中継器の範囲を時間で制限してもよい。
【０１３９】
このようなバイパス通知パケット１１００を周囲の他の中継器に送信することにより、バイパス通知パケット１１００を受け取った他の中継器は、転送先でバイパスが生じていることを知ることができる。その結果、遅延を回避するために、例えば、伝送経路を変更する等の対処を行うことができる。これにより、伝送遅延を緩和することが可能となる。
【０１４０】
＜５．４．バイパス通知を受け取った中継器の動作＞
次に、バイパス通知を受け取った中継器が実行する動作の例を説明する。以下の説明では、理解を容易にするために、図３の構成ではなく、図１１の構成を例に説明する。
【０１４１】
図１１は、複数のバスマスタ１０１から複数の中継器６００を介して複数のメモリ１０５にアクセスできるバタフライ網を示している。バタフライ網は、バスマスタ１０１からメモリ１０５へは、どの中継器を介しても論理的に等距離である。図１１に示す例では、バスマスタ１０１からメモリ１０５へ直進するトラヒック（実線）のみがバイパス対象となる。ここで直進するトラヒックとは、例えば、各中継器において１番目の入出力ポートを経由して伝送されるトラヒックを意味する。一方、バスマスタからメモリへ直進しない伝送経路においては、バイパス処理は行われない。このような構成によれば、中継器のバイパスに必要な配線を削減することが可能である。バタフライ網ではなく、メッシュ網のような他のネットワークトポロジを採用する場合であっても、バイパスの有無をノード配置（バスマスタの配置およびメモリの配置）の関係から決定してよい。
【０１４２】
図１２は、以下の説明で利用するネットワークモデル（簡易ネットワークモデル）を説明するための図である。以下の説明において用いるネットワークモデルは、図１２（ｃ）に示すように、送信元（ノードＡ）から送信先（ノードＤ）まで２経路存在する網である。ノードＢおよびノードＣは中継するノードである。このネットワークモデルでは、必要に応じて２つの伝送経路のうちの１つを選択することが可能である。
【０１４３】
図１２（ａ）は、図１１に示すバタフライ網であり、図１２（ｃ）と対応付けて、送信元、中継、送信先の各ノードの対応関係の一例を示している。なお、本実施形態の中継器は、図３や図１１に示すネットワークに限らず、図１２（ｂ）に示すようなメッシュ網においても同様に適用できる。図１２（ｂ）は、メッシュ網の一例を示しており、同様に、図１２（ｃ）に対応付けて、送信元、中継、送信先の各ノードの対応関係の例を示している。以下の説明では、図１２（ａ）、（ｂ）のような送信元、中継、送信先の関係を、簡易的に図１２（ｃ）に示す簡易ネットワークモデルを用いて表す。ただし、本発明は、このような簡易ネットワークモデルに限定されるものではない。また、送信元および送信先は、図１２に示す例に限られず、例えば送信元が受信ノード（例：メモリ）であってもよい。
【０１４４】
図１３Ａは、本実施形態における中継器がバイパス通知を受け取った場合に想定される経路を簡易ネットワークモデルに基づいて表した図である。まず、経路上の中継器（ノードＣ）でバイパス処理が発生すると（(1)バイパス発生）、中継器（ノードＣ）は、トラヒックの送信元である中継器（ノードＡ）に対してバイパス通知のメッセージを送信する（(2)通知）。送信元の中継器（ノードＡ）は、バイパス通知を受け取ると、経路を変更して、中継器（ノードＢ）を経由して送信先である中継器（ノードＤ）へデータを伝送する（(3)迂回）。図１３Ａは、ノードＡが経路を変更する場合の例を示しているが、ノードＡは、後述するように経路の変更ではなく、送信流量の調整によって対処してもよい。
【０１４５】
図１３Ｂは、ノードＡのルーティング処理部６０７が管理する経路情報を示す図である。図示される経路情報には、送信元の中継器（ノードＡ）から他の各中継器（ノードＢ、ノードＣ、ノードＤ）への伝送経路が記述されている。中継器（ノードＡ）は、この経路情報に基づいて経路を決定する。同様の経路情報を各中継器のルーティング処理部６０７が管理している。
【０１４６】
図１４は、バイパス通知を受信した中継器（ノードＡ）の動作を示すフローチャートである。まず、バッファ選択部６０３は、受け取ったパケットの識別子１１０３を読み取り、そのパケットがバイパス通知パケット１１００であることを判別する（Ｓ１２０１）。
【０１４７】
続いて、バッファ選択部６０３は、経路を切り替える（迂回路を用いる）か否かを判断する（Ｓ１２０５）。迂回路を用いてバイパスするトラヒックと異なる経路を用いると判断した場合は、バイパス通知パケット１１００に記述されている送信元情報に基づき、ルーティング処理部６０７は、迂回路（Ａ⇒Ｂ⇒Ｄの経路）を選択する（Ｓ１２０２）。続いて、新たに設定された迂回路に対して、バッファアロケータ６０８、スイッチアロケータ６０９での転送処理を実行し、迂回伝送を実施（(3)迂回）する（Ｓ１２０３）。
【０１４８】
バッファ選択部６０３が迂回路を用いずにバイパスするトラヒックと同じ経路を用いると判断した場合は、中継器（ノードＡ）は、出力バッファ６０６からの送信タイミングをバイパス通知パケットの受信タイミングに応じて制御する（Ｓ１２０４）。
【０１４９】
迂回路を用いるか否かの判定は、バイパス通知を受信した中継器（ノードＡ）が、バイパス処理を実行している中継器（ノードＣ）から通知されるバイパス通知パケットの受信間隔に基づいて判定する。具体的には、バイパス通知パケットを受信したノードＡは、ヘッダフリット解釈部９０１において、そのパケットがバイパス通知パケットであることを判断すると、それをバイパス通知判定部１００１に転送する。バイパス通知判定部１００１は、バイパス通知パケットの受信間隔が所定の閾値以上である場合には、トラヒック干渉の影響が大きくないと判断し、バイパスしないトラヒックについて、出力バッファ６０６からの送信間隔を大きくするように出力バッファ６０６に指示する。これにより、ノードＡからノードＣへの送信流量が小さくなるように制御される（流量制限）。
【０１５０】
逆に、バイパス通知パケットの受信間隔が所定の閾値に満たない場合、ノードＡのバイパス通知判定部１００１は、バイパスしないトラヒックとバイパスするトラヒックとのトラヒック干渉の影響が大きいと判断する。さらに、送信元（ノードＡ）のバイパス通知判定部１００１が、送信元（ノードＡ）のルーティング処理部６０７に迂回路を探索させる。この迂回路に基づき送信元（ノードＡ）のバッファアロケータ６０８や送信元（ノードＡ）のスイッチアロケータ６０９を動作させ、バイパスしないトラヒックの伝送経路を変更してトラヒック干渉を防ぐ。なお、受信間隔の閾値は、予め設計時に経験的に決めておいてよい。
【０１５１】
以上のように、バイパス通知パケットを受け取った中継器は、その受信間隔に応じて経路の切替または送信タイミングの調整によって対応する。経路の切替による効果と送信タイミングの調整による効果との違いは、以下の通りである。経路を切替える場合には、経路の切替のため遅延が発生するが、バイパスされるトラヒックとバイパスされないトラヒックとのトラヒック干渉の影響を抑えることが出来る。逆に、送信タイミングの調整を行う場合は、経路の切替による遅延は発生しないが、バイパスされるトラヒックとバイパスされないトラヒックとのトラヒック干渉の影響が生じる可能性がある。しかし、迂回路を用いる場合であっても、切替えた経路でのトラヒック干渉が問題となる場合はあり得る。
【０１５２】
なお、バッファ選択部６０３は、バイパス通知パケットの受信間隔に応じて経路の切り替えまたは送信タイミングの調整を行うのではなく、他の方法で判断してもよい。例えば、バッファ使用量計測部１００２によって計測される出力バッファ６０５のバッファ使用量およびバッファ使用時間の少なくとも１つの情報に基づいて経路の変更または流量の調整を行ってもよい。
【０１５３】
本実施形態によれば、経路を切替えることによるリスク（切替遅延、切替えた経路でのトラヒック干渉）を加味しながら、バイパスしたトラヒックとのトラヒック干渉の影響を適切に抑えることが可能となる。経路を切替える手段を適用する場合、事前に切替え先の経路の伝送負荷を計測した上で、伝送負荷が小さい場合のみ経路切替を行うようにしてもよい。このようにすれば、切替えた経路でのトラヒック干渉の発生を抑えることができる。なお、経路を切り替える処理と流量を調整する処理のいずれか一方を行うのではなく、両者を併用することも可能である。
【０１５４】
以上の説明では、経路を切り替える処理として、送信先が同じである迂回路に切り替える例を具体的に示したが、伝送経路とともに送信先を変更してもよい。例えば、バイパス処理を行った中継器が、送信ノードにバイパス通知を行い、送信ノードが新たな送信先（例えば、データの書き込み先となるメモリ）を選択してもよい。また、経路の切替えは、バイパス処理を行っている中継器に入力される予定であるトラヒックにのみ行ってもよい。言い換えれば、バイパス処理を行っている中継器に入力されないトラヒックを経路切換えの対象から除外してもよい。さらに、送信ノードが、バイパス通知に応じて、バイパス処理をしている中継器を経由する予定のトラヒックに対して、バイパスが発生している経路を回避するように経路や宛先を変更してもよい。
【０１５５】
次に、図１５Ａ〜１５Ｃを参照しながら、本実施形態におけるバイパス通知の範囲と、バイパス通知を受信した中継器の動作の具体例を説明する。図１５Ａ〜１５Ｃにおいて、色塗りで示した中継器１３０５は、バイパス処理およびバイパス通知処理を行う中継器を表し、斜線で表した中継器はバイパス通知の送信範囲を表している。
【０１５６】
図１５Ａは、バイパス処理を行った中継器１３０５から１ホップ離れた中継器１３０６までバイパス通知が行われている例を示している。この例において、中継器１３０１から発生したトラヒック１３０２は、中継器１３０５でバイパスされ、メモリへ伝送されている。また、中継器１３０３から発生したトラヒック１３０４は、バイパスされることなく中継器１３０５を経由して、トラヒック１３０２と同じメモリに伝送されようとしている。この場合、中継器１３０５からバイパス通知を受信した中継器１３０６は、トラヒック１３０４の送信流量を抑制したトラヒック１３０７を伝送する。トラヒック１３０７は、当初予定されていたトラヒック１３０４よりも流量が制限されるが、バイパスされるトラヒック１３０２との間の干渉を低減できる。
【０１５７】
図１５Ｂは、バイパス処理を行った中継器１３０５から２ホップ離れた中継器１３０６までバイパス通知が行われている例を示している。この例において、中継器１３０１から発生したトラヒック１３０２は、中継器１３０５でバイパスされ、メモリへ伝送されている。また、中継器１３０３から発生したトラヒック１３０４は、バイパスされることなく中継器１３０５を経由して、トラヒック１３０２と同じメモリに伝送されようとしている。この場合、中継器１３０５からバイパス通知を受信した中継器１３０６は、中継器１３０５を経由せずに同じ目的のメモリに向かう迂回路を選択してトラヒック１３０７を伝送する。この結果、中継器１３０５におけるバイパス処理の影響を受けることなくデータを目的のメモリに伝送することができる。
【０１５８】
図１５Ｃは、バスマスタに接続された中継器１３０６までバイパス通知が行われている例を示している。この例において、中継器１３０１から発生したトラヒック１３０２は、中継器１３０５でバイパスされ、メモリへ伝送されている。また、中継器１３０３から発生したトラヒック１３０４は、中継器１３０５を経由して、トラヒック１３０２と同じメモリに伝送されようとしている。この場合、中継器１３０５からバイパス通知を受信した中継器１３０６（１３０３）は、トラヒック１３０２が伝送されるメモリとは異なるメモリへトラヒック１３０７を伝送する（または、トラヒックの伝送を中断する）。
【０１５９】
上記のように、バイパス処理を行う中継器１３０５とバイパス通知を受信した中継器１３０６との間の距離（ホップ数）に応じて、バイパス通知を受信した中継器１３０６の動作（送信流量の調整、迂回、宛先変更など）を設計時に設定しておくことができる。
【０１６０】
＜５．４．バイパスされないトラヒックに対する動作＞
次に、バイパス処理が行われないトラヒックに対する中継器６００の動作を説明する。
【０１６１】
本実施形態における中継器は、一部のトラヒックに対してバイパス処理を行った場合、トラヒック干渉を防ぐため、バイパスされたトラヒックと同一の宛先が設定された、バイパスされないトラヒックの伝送経路を変更したり、送信流量を調整する等の制御（伝送制御）を行う。この制御は、バイパストラヒックと非バイパストラヒックとが合流する中継器の伝送状態に基づいて実行される。具体的には、図３に示す構成では、自中継器６００ｂ内の出力バッファ６０６または後段の隣接中継器６００ｃの入力バッファでバイパストラヒックと非バイパストラヒックとが合流する。そのため、自中継器６００ｂまたは後段の隣接中継器６００ｃの伝送状態に基づいて伝送制御が行われる。この制御は、例えば、自中継器６００ｂの出力バッファ６０６または隣接中継器６００ｃの入力バッファの使用量（空き容量）や使用時間などの伝送状態に基づいて実行される。本明細書において、中継器の「伝送状態」とは、バッファ（入力バッファ６０４または出力バッファ６０６）の空き容量、使用量、待ち時間、スループット、伝送効率といった、伝送品質を示す情報を意味する。また、バイパストラヒックの伝送量を伝送状態として扱ってもよい。
【０１６２】
一方、例えば図１Ａに示す構成では、バスマスタ１ａから伝送される非バイパストラヒックと、バスマスタ１ｂから伝送されるバイパストラヒックとが中継器Ｒ９で合流することになる。この場合、中継器Ｒ９は、自身の伝送状態に基づいて非バイパストラヒックの伝送制御を行えばよい。この例では、中継器Ｒ９は、直接接続された隣接中継器Ｒ８をスキップしてさらに先の中継器Ｒ７にバイパスを行っている。このため、中継器Ｒ７でもバイパストラヒックと非バイパストラヒックとが合流する。したがって、中継器Ｒ９は、中継器Ｒ７の伝送状態をも考慮して、非バイパストラヒックの伝送制御を行うように構成されていてもよい。図１Ａに示す状況では、途中の経路上の中継器Ｒ８も、中継器Ｒ７の伝送状態に基づいて非バイパストラヒックの伝送制御を行ってもよい。
【０１６３】
また、図１Ｂに示す状況においては、宛先のメモリ５に接続された中継器Ｒ７においてのみ、バイパストラヒックと非バイパストラヒックとの合流が生じている。そのため、非バイパストラヒックを中継する中継器Ｒ８、Ｒ９は、伝送先の中継器Ｒ７の伝送状態に基づいて非バイパストラヒックに対する伝送制御を行うように構成される。
【０１６４】
上記の図１Ａ、１Ｂに示す例では、中継器Ｒ８、Ｒ９は、混雑が生じている中継器Ｒ７の伝送状態を示す情報を知る必要がある。そのための方法として、例えば、以下の方法を採用することができる。まず、送信元のバスマスタ１ａは、宛先のメモリ５へ非バイパストラヒックのデータを伝送する前に、メモリ５に対してメモリ容量等の情報についての問い合わせを行い、メモリ５から当該情報についての応答を受ける。その際、伝送経路上でバイパストラヒックと非バイパストラヒックとが合流している中継器Ｒ７は、自身の伝送状態を示す情報をメモリ５からの応答を示す情報に付加してバスマスタ１ａに返す。応答を受け取ったバスマスタ１ａは、メモリ５へのデータ送信が可能と判断した場合、送信すべきデータに中継器Ｒ７の伝送状態を示す情報を付加して、メモリ５宛に当該データを伝送する。伝送経路上の中継器Ｒ９、Ｒ８は、受け取ったデータに付加された中継器Ｒ７の伝送状態を示す情報に基づき、当該データに対する伝送制御を行う。このようにして、中継器Ｒ８、Ｒ９は、混雑が生じていると想定される中継器Ｒ７の伝送状態に基づいて非バイパストラヒックの伝送制御を行うことができる。
【０１６５】
なお、上記の方式は一例であり、バイパストラヒックと非バイパストラヒックとが合流する中継器における伝送状態を示す情報を他の中継器に通知できる方式であればどのような方式を採用してもよい。例えば、バイパストラヒックと非バイパストラヒックとが合流する中継器においてデータの遅延が生じている場合、その中継器にデータを転送する中継器は、転送先のバッファを確保できないため、そこでもデータの遅延が発生する。すると、連鎖的に上流の中継器へ混雑状況が伝播することになるため、各中継器は、データ伝送先のいずれかの中継器において混雑が生じていることを知ることができる。この例では、バイパストラヒックと非バイパストラヒックとの合流の影響は、転送先の中継器のバッファが確保できないという状況によって通知されるといえる。
【０１６６】
図１６は、バイパス処理を行わないトラヒックに対する中継器の処理を説明するための図である。図１６は、本実施形態における中継器がバイパス処理を行わないトラヒックの伝送経路を変更する様子を簡易ネットワークモデルに基づいて表している。まず、送信元の中継器Ａが、中継器Ｃを経由して送信先の中継器Ｄへデータの伝送を行っている状況を想定する（（１）送信）。データ伝送中に、中継器Ａが一部のトラヒックをバイパスさせると（（２）バイパス発生）、中継器Ａは、トラヒック間の干渉を抑えるために、バイパスさせないトラヒックの伝送経路を、中継器Ｂを経由する経路に変更する（（３）迂回）。なお、この例では、送信先（中継器Ｄ）は、２つの経路から同時にトラヒックが伝送されても、トラヒックを同時に受信可能な能力を備えていることを前提としている。従って、２つの経路から同時にトラヒックが伝送されても、送信先（中継器Ｄ）では混雑は発生しない。
【０１６７】
なお、図１６は、中継器Ａが非バイパストラヒックの経路を変更する場合の例を示しているが、後述するように、中継器Ａは、経路の変更ではなく送信流量を調整する場合もある。本実施形態では、経路を変更するか送信流量を調整するかは、出力バッファ６０６の使用量に基づいてバッファ選択部６０３のバイパス通知判定部１００１が判断する。送信流量を調整する方法として、例えば、バイパストラヒックの伝送が完了するまで送信開始タイミングを遅らせたり、一定時間送信を中断する等のアプローチが可能である。
【０１６８】
図１７Ａは、バイパス処理を行った中継器Ａが非バイパストラヒックに対して行う動作を示すフローチャートである。まず、トラヒック伝送中に、送信中の経路上で他のトラヒックに対してバイパス処理が行われたとする（Ｓ１３０１）。すると、バイパス通知判定部１００１は、非バイパストラヒックに対して、経路を切り替える（迂回路を用いる）か、送信流量を調整するかを、後述する方法で判定する（Ｓ１３０５）。バイパス通知判定部１００１が経路を切り替えると判定した場合、バイパス通知判定部１００１は、ルーティング処理部６０７に経路切換を指示するための制御信号を送出する。ルーティング処理部６０７は、制御信号を受けて迂回路（Ａ⇒Ｂ⇒Ｄの経路）を選択し、迂回路に対応する出力ポートを決定する（Ｓ１３０２）。続いて、バッファアロケータ６０８、スイッチアロケータ６０９による転送処理を実行し、迂回路を用いた伝送を実行（（３）迂回）する（Ｓ１３０３）。バイパス通知判定部１００１が迂回路を用いないと判定した場合、バイパス通知判定部１００１は、入力バッファ６０４に送信タイミングを指示するための制御信号を送出する。入力バッファ６０４は、制御信号に基づき、フリットを送信するタイミングを調整する（Ｓ１３０４）。
【０１６９】
迂回路を用いるか否かの判定（Ｓ１３０５）は、例えば、図１７Ｂに示す手順で行われる。まず、バッファ使用量計測部１００２は、出力バッファ６０６のバッファ使用量を計測する（Ｓ１３０６）。続いて、バイパス通知判定部１００１は、計測された出力バッファ６０６の使用量（バッファ使用量）に基づき、迂回するか否かを判定する（Ｓ１３０７）。具体的には、１万サイクルを単位時間として、バッファの空き容量が多い場合（例えば、出力バッファ６０６の空き容量が物理容量の１／２以上の場合）、バイパス通知判定部１００１は、トラヒック干渉の影響が大きくないと判断し、経路を変更することなく送信タイミングを調整する。この時、バイパス通知判定部１００１は、入力バッファ６０４に対して、バイパスしないトラヒックを入力バッファ６０４から送信する間隔を大きくするように指示する。これにより、クロスバスイッチ６０５および出力ポート６１７から出力されるトラヒックの送信間隔が大きくなり、トラヒックの伝送流量が抑制される。
【０１７０】
一方、バッファの空き容量が少ない場合（例えば、出力バッファの空き容量が物理容量の１／２に満たない場合）、バイパス通知判定部１００１は、トラヒック干渉の影響が大きいと判断する。トラヒック干渉の影響を早急に抑えるために、バイパス通知判定部１００１は、ルーティング処理部６０７に迂回路を探索させる。ルーティング処理部６０７が迂回路を探索すると、その迂回路に基づき、バッファアロケータ６０８およびスイッチアロケータ６０９が転送処理を実行する。これにより、バイパスされないトラヒックの伝送経路が変更され、トラヒック干渉を防ぐことができる。
【０１７１】
なお、上記の判定はあくまでも一例であり、判定方法は想定される伝送遅延に応じて適宜設計してよい。例えば、出力バッファの空き容量が物理容量の２／３以上の場合には何も行わず、１／３以上２／３未満の場合には流量の調整を行い、１／３に満たない場合には経路変更を行う構成を採用してもよい。なお、上記の説明ではバッファの「空き容量」と表現したが、バッファの「使用量」と表現しても同じことである。また、単位時間あたりのバッファの使用量を計測しているので、「スループット」または「伝送効率」に基づいて判定を行っているともいえる。これらのどの表現を用いても、上記と同様の処理内容を表す。
【０１７２】
また、出力バッファ６０６の使用量ではなく、出力バッファ６０６での待ち時間を計測し、その計測結果を用いて上記と同様の制御を行ってもよい。バッファ容量が小さい場合、バッファ使用量で評価するよりもバッファの待ち時間で評価した方が中継器での混雑状況を反映させやすい場合がある。
【０１７３】
バッファの待ち時間に基づく例として、バッファの待ち時間が１０サイクル未満の場合は、何も行わず、１０サイクル以上５０サイクル未満の場合には流量の調整を行い、５０サイクル以上の場合には経路変更を行うといった制御を採用してもよい。バッファの待ち時間は、例えば、ヘッダフリット５０４を自中継器が受信した時点からカウントを開始し、テイルフリット５０６を転送先の中継器へ送信した後にリセットすることによって計測できる。処理の簡略化のために、待ち時間のカウントは、高優先度のトラヒックに対してのみ行うように構成してもよい。
【０１７４】
このように、本実施形態では、バッファ選択部６０３は、自中継器の伝送状態に基づいて非バイパストラヒックの伝送経路および伝送流量の少なくとも一方を変更するようにクロスバスイッチ６０５の出力を制御する。なお、本発明はこのような例に限られず、上述のとおり、バイパストラヒックと非バイパストラヒックとが合流する中継器の伝送状態に基づいて非バイパストラヒックの伝送制御を行うように構成されていればよい。ここで、「伝送状態」とは、上述のとおり、バッファの空き容量、使用量、待ち時間、スループット、伝送効率などを意味する。また、バイパストラヒックの伝送量を計測し、その伝送量に基づいて非バイパストラヒックに対する上記の制御を行ってもよい。
【０１７５】
経路の切り替えによる効果と送信タイミングの調整による効果との違いは、以下の通りである。経路を切り替える場合には、経路の切り替えのため遅延が発生するが、バイパスされるトラヒックとバイパスされないトラヒックとのトラヒック干渉の影響を抑えることができる。逆に、送信タイミングの調整を行う場合は、経路の切り替えによる遅延は発生しないが、バイパスされるトラヒックとバイパスされないトラヒックとのトラヒック干渉の影響が生じる可能性がある。しかし、迂回路を用いる場合であっても、切り替えた経路でのトラヒック干渉が問題となる場合はあり得る。
【０１７６】
本実施形態によれば、経路を切り替えることによるリスク（切替遅延、切り替えた経路でのトラヒック干渉）を加味しながら、バイパストラヒックと非バイパストラヒックとの間の干渉の影響を適切に抑えることが可能となる。経路を切り替える手段を適用する場合、事前に切り替え先の経路の伝送負荷を計測した上で、伝送負荷が小さい場合のみ経路切替を行うようにしてもよい。このようにすれば、切り替え先の経路でのトラヒック干渉の発生をより効果的に抑えることができる。なお、経路を切り替える処理と流量を調整する処理のいずれか一方を行うのではなく、両者を併用してもよい。例えば、切り替え先の経路の伝送負荷が大きい場合には、切り替え後にさらに送信流量を少なくするように調整してもよい。
【０１７７】
以上の説明では、経路を切り替える場合、受信ノード（例えば、データの書き込み先となるメモリ）が同じである迂回路に切り替える例を示したが、伝送経路とともに受信ノードを変更してもよい。例えば、バイパス処理を行った中継器が、送信ノードにバイパス処理を行ったことを通知するとともに、通知を受けた送信ノードが新たな受信ノードを選択するように構成されていてもよい。また、経路の切り替えまたは流量の調整は、バイパス処理を行っている中継器に入力される予定であるトラヒックにのみ行ってもよい。言い換えれば、バイパス処理を行っている中継器に入力されないトラヒックを経路切換えまたは流量の調整の対象から除外してもよい。さらに、送信ノードが、バイパス処理をしている中継器を経由する予定のトラヒックに対して、バイパスが発生している経路を回避するように経路や宛先を変更してもよい。
【０１７８】
図１８Ａ、１８Ｂは、送信流量調整、迂回、および送信先変更の具体例を説明するための図である。図１８Ａは、１つのバスマスタから１つのメモリにトラヒック１３００１〜１３００３が伝送される際に、バイパス処理を行った中継器１３００４が送信流量を抑制する例を示している。トラヒック１３００１が中継器１３００４によってバイパスされる場合、バイパスされないトラヒック１３００２、１３００３については、中継器１３００４の出力バッファ６０６から出力される流量が抑制される。なお、この例では、送信先は、２つの経路から同時にトラヒックが伝送されても、トラヒックを同時に受信可能な能力を備えていることを前提としている。従って、２つの経路から同時にトラヒックが伝送されても、送信先では混雑は発生しない。
【０１７９】
図１８Ｂは、異なる複数のバスマスタから同一のメモリにトラヒック１３００１〜１３００３が伝送される際に、バイパス処理を行った中継器１３００４によって迂回や送信先（メモリ）の変更を行う例を示す図である。トラヒック１３００１が中継器１３００４によってバイパスされるとき、バイパスされないトラヒック１３００２、１３００３の経路は変更される。ここで、トラヒック１３００３については、その送信先のメモリも変更される。送信先の変更を行う場合、バイパス処理を行った中継器は、送信元のバスマスタに新たな送信先の問合せを行い、その結果を反映させて送信先の変更を行う。バイパス処理を行った中継器１３００４が経路変更、流量調整、送信先変更のいずれを行うかの判断基準は、設計時に中継器毎に決定してよい。
【０１８０】
以上のように、本実施形態の中継器６００は、バイパス通知処理および非バイパストラヒックに対する伝送制御を行うことにより、バイパス処理に伴うトラヒックの混雑を低減させることができる。本実施形態では、バイパス通知処理および非バイパストラヒックに対する伝送制御の両方を行うが、これらの一方のみを行うように中継器が構成されていてもよい。そのような構成であっても、ある程度の効果を得ることができる。
【０１８１】
以上の説明では、中継器６００の各構成要素は、ブロック化された個別の機能部として表されているが、これらの機能部の処理を規定するプログラムを中継器６００に実装されたプロセッサ（コンピュータ）に実行させることによって中継器６００の動作が実現されていてもよい。そのようなプログラムの処理手順は、例えば図７、８、９Ａ、９Ｂ、１４、１７Ａ、１７Ｂのフローチャートに記載されているとおりである。
【０１８２】
＜６．変形例＞
＜６．１．出力バッファを設けない構成＞
図５Ａに示す構成では、中継器６００ｂは出力バッファ６０６を備えているが、前述したように、出力バッファ６０６を備えていなくてもよい。図１９Ａは、中継器６００ｂが出力バッファ６０６を備えておらず、クロスバスイッチ６０５の出力が後段の隣接中継器６００ｃのバッファ選択部６０３ｃに入力される構成例を示している。このような構成によれば、メモリ量を抑えることができるため、組込用途に有効である。
【０１８３】
出力バッファ６０６を設けない場合、後段の隣接中継器６００ｃにおける入力バッファの使用状況に基づいて上述の伝送制御を行えばよい。例えば、バッファ使用量計測部１００２によって後段の隣接中継器６００ｃの入力バッファの使用量および待ち時間の少なくとも一方を計測し、計測値に基づいて経路を変更するか流量を調整するかの判断を行うことができる。
【０１８４】
＜６．２．外部配線＞
また、以上の説明では、図５Ａに示すように、中継器６００ｂ内でバイパスが行われる例（内部配線）を示したが、中継器６００ｂの外部にバイパストラヒックを伝送するように配線されていてもよい（外部配線）。図１９Ｂは、中継器６００ｂの外部に配線してバイパスする構成例を示す図である。この例では、バッファ選択部６０３は、バイパス経路ＢＰ３、ＢＰ４によって中継器６００ｂの外部の中継器またはメモリ１０５にトラヒックを伝送する。
【０１８５】
内部配線による構成では、中継器毎にバイパス処理が閉じているため、中継器の処理モジュールとしての再利用性は高い。すなわち、個々の中継器を１つの部品として交換することが容易となる。しかし、宛先までの中継器を全て中継する必要があるため、処理のオーバーヘッドが生じやすい。逆に、外部配線による構成では、内部配線による場合に比べて、中継器の処理モジュールとしての再利用性は低い。しかし、宛先までの中継器を全て中継する必要がないため、処理のオーバーヘッドを低減させることができる。
【０１８６】
図２０は、外部配線を用いて、バイパスする具体的な応用例を示す図である。図２０では、図１２（ｂ）に示すメッシュ型のネットワーク構成を用いる場合の例を示している。ここで、図２０（ａ）に示すように、機能拡張のため、新しいバスマスタ１０１ａをネットワークに接続した場合を考える。また、バスマスタ１０１ａからメモリ１０５ａまでの遅延時間が問題になる場合などを想定し、中継する中継器数を削減するために、新たにバイパス経路ＢＰを追加することを考える（ｂ）。
【０１８７】
バイパスするバスマスタ１０１ａから発生するトラヒックは、バイパスしたトラヒックであることを識別できるように、ヘッダフリットのフラグを有効にして伝送される。それを受信した中継器Ｒ７は、バイパスしたバスマスタ１０１ａがアクセスしようとするメモリ１０５ａへの流入量を抑制させるために、隣接の中継器Ｒ４、Ｒ８に対して、バイパス通知のメッセージを送信する。バイパス通知を受けた隣接中継器Ｒ４、Ｒ８は、メッセージに記述された通知範囲を読みとり、必要に応じて他の中継器および／またはバスマスタにメッセージをさらに転送する。
【０１８８】
バイパス通知を受けた中継器またはバスマスタは、送信量や宛先メモリを変更する等の制御を行うことによって対象とするメモリ１０５ａへのアクセスを抑制することができる。このように、バイパス通知を使うことにより、許容できる遅延時間が短いバスマスタ１０１ａを既存のネットワークに簡単に追加することが可能となる。
【０１８９】
さらに、本実施形態の中継器によれば、バッファの使用状況に応じて非バイパストラヒックの流量の調整や経路の変更等を行うことができるため、より高い性能を実現できる。図２１Ａ〜２１Ｃは、中継器間でバイパス配線を設ける際の課題と、本実施形態の中継器を用いることによる効果とを説明するための図である。図２１Ａは、バイパス配線によって生じる課題を示している。同一の宛先（メモリ１０５ａ）にバイパストラヒック５０ａと非バイパストラヒック５０ｂとが伝送される場合に、転送先の中継器Ｒ７ではバス帯域が不足して混雑が発生する可能性がある。そこで、本実施形態では、送信元の中継器Ｒ９のバッファの空き容量や待ち時間に基づいて、事前に非バイパストラヒックの送信量や宛先を変更する。送信量の調整で混雑を回避できると判断した場合は、図２１Ｂに示すように、中継器Ｒ９は、非バイパストラヒックの送信量を調整する。宛先のメモリを変更することによって混雑を回避できると判断した場合は、図２１Ｃに示すように、中継器Ｒ９は、宛先をメモリ１０５ａからメモリ１０５ｂに変更する。このような処理を行うことにより、高いスループットおよび低い伝送遅延でトラヒックを伝送することが可能となる。
【０１９０】
以上のように、本実施形態によれば、バイパス処理が行われないデータがバイパストラヒックと合流する中継器（図１Ａに示す例では中継器Ｒ７およびＲ９、図１Ｂに示す例では中継器Ｒ７）においてバイパス処理が行われるデータと同一の宛先に伝送される場合に、バイパストラヒックと合流する中継器の伝送状態に基づいて送信量の調整や経路の変更などが行われる。このため、宛先までの経路上で発生し得る混雑を事前に回避することが可能になる。
【０１９１】
バイパスの方式としては、上述のように、中継器内でバイパスする方式であってもよいし、中継器間でバイパスする方式であってもよい。特に、同一の宛先に向かうバイパストラヒックと非バイパストラヒックとが合流する中継器においてバイパスされるデータの伝送量も含めた伝送状態を把握することにより、宛先までの混雑状態をより正確に予測できるため、混雑の事前回避が可能となる。なお、１つの中継器においてバイパスされるデータの宛先とバイパスされないデータの宛先とが異なっている場合は、両者の競合による混雑は発生しないため、バイパスされないデータに対する送信量の調整や経路の変更は行わなくてもよい。
【０１９２】
本実施形態の構成により、宛先までの伝送路上で発生し得る混雑を事前に回避することが可能となり、高いスループットおよび低い伝送遅延でトラヒックを伝送することが容易になる。
【０１９３】
＜６．３．他のトポロジ＞
上記の説明では、集積回路のトポロジが多段接続網の場合（図３、１１）、およびメッシュ型の場合（図２０）を例に説明したが、本実施形態の中継器６００は、多段接続網やメッシュ型での利用に限定されるものではない。例えば、図２２Ａに示すように、中継器を格子状に並べ、末端の中継器同士を相互に接続したトーラス型のトポロジであってもよい。また、図２２Ｂに示すように、バスを階層的に接続したトポロジであってもよい。複数のバスマスタを分散型のバスを介して接続したトポロジであれば、上記と同様に本実施形態の中継器の適用が可能である。
【０１９４】
（実施形態２）
次に、本発明の第２の実施形態による中継器を説明する。
【０１９５】
実施形態１では、中継器内部または中継器間にバイパスの配線が設けられた構成を前提としたが、本実施形態の中継器は、バイパスの配線が設けられていない。以下の説明では、実施形態１におけるバイパストラヒックに対応するトラヒックを「高優先度トラヒック」と呼び、非バイパストラヒックに対応するトラヒックを「低優先度トラヒック」と呼ぶ。高優先度トラヒックは、例えば映像や音声といった低遅延伝送が要求されるトラヒックや、ユーザ操作のコマンドやシステム異常を通知する情報のように、緊急度が高いトラヒックである。低優先度トラヒックは、例えばファイル転送やバックグラウンドで処理を行うアプリケーションのデータのように緊急性が比較的低いトラヒックである。トラヒックが高優先度トラヒックであるか低優先度トラヒックであるかは、ヘッダフリットに記述された優先度を示す識別子によって規定され得る。本明細書では、高優先度トラヒックを優先的に伝送することも「バイパス」に含まれるものとする。以下、本実施形態の中継器について、実施形態１と異なる点を中心に説明し、重複する点についての説明は省略する。
【０１９６】
本実施形態の中継器によれば、高優先度トラヒックの伝送を継続させながら、高優先度トラヒックと低優先度トラヒックとが合流する中継器の伝送状態（バッファの使用状況など）に応じて低優先度トラヒックの伝送経路の変更、または伝送流量の調整を行うことができる。これにより、低優先度トラヒックと高優先度トラヒックとの干渉を抑制でき、スループットの向上や低遅延伝送が期待できる。
【０１９７】
以下、本実施形態における中継器の構成例を説明する。
【０１９８】
図２３は、本実施形態における中継器７００ｂの概略構成を示す図である。中継器７００ｂは、前段の隣接中継器７００ａから後段の隣接中継器７００ｃへの行き先を決定し、トラヒックを中継する。中継器７００ｂのルーティング処理部７０７は、前段の隣接中継器７００ａから転送されたフリットを受信し、フリットに記述された宛先情報に基づいて転送先の出力ポート７１７を決定する。ルーティングのアルゴリズムは、実施形態１と同様、動的に行き先を決定する次元順ルーティングや、設計時に送信元と行き先との関係から一意に決定されている静的ルーティングを用いてもよい。本実施形態の各中継器は、特定のルーティングアルゴリズムには限定されない。
【０１９９】
また、中継器７００ｂは、出力ポート７１７と出力バッファ７０６のバッファキューとを対応付けるバッファアロケータ７０８を備える。更に、トラヒックデータを伝送するために対応付けが完了している組から１組を選ぶスイッチアロケータ７０９を備え、スイッチ７０５を介して、出力バッファ７０６へフリットを転送する。フリットは、出力バッファ７０６から対応する中継器へ転送される。なお、本実施形態では出力バッファ７０６が存在するという前提で説明を行うが、出力バッファ７０６は必ずしも存在しなくてもよい。出力バッファ７０６を設けない場合、上述の出力バッファ７０６を後段の隣接中継器７００ｃの入力バッファで代替させることができる。
【０２００】
本実施形態の中継器７００ｂの特徴の一つは、高優先度トラヒックの伝送を継続させながら、同一の宛先に向かう低優先度トラヒックの伝送制御を行う出力制御部７１０を備えていることにある。出力制御部７１０は、受信したトラヒックの優先度の判定処理を行うことによって、高優先度トラヒックを低優先度トラヒックよりも優先的に転送する。このように、本実施形態の出力制御部７１０は、本発明におけるバイパス制御部としても機能する。出力制御部７１０は、バッファ計測部（不図示）を有しており、出力バッファ７０６（または後段の隣接中継器７００ｃの入力バッファ）の使用状況に基づいて低優先度トラヒックに対する伝送制御を行う。具体的には、出力制御部７１０は、出力バッファ７０６の空き容量や待ち時間等に基づいて、データの伝送経路および伝送流量の少なくとも一方を変更する制御を行う。
【０２０１】
入力バッファ７０４、出力バッファ７０６は、複数のバッファキューから構成されている。このバッファキューは、仮想チャネル（Virtual Channel）で構成してもよい。また、本実施形態では、バッファキューは、高優先度用と低優先度用の２種類がある。出力制御部７１０が、受信したヘッダフリットを解釈することにより、受信したデータの優先度を判定し、格納するバッファキューを特定する。
【０２０２】
図２４Ａ、２４Ｂは、本実施形態における中継器の処理を説明するための図である。図２４Ａは、本実施形態における中継器が低優先度トラヒックの伝送経路を変更する様子を簡易ネットワークモデルに基づいて表している。まず、送信元の中継器Ａが、中継器Ｃを経由して送信先の中継器Ｄへ高優先度トラヒックおよび低優先度トラヒックの転送を行っている状況を想定する（（１）転送）。中継器Ａが高優先度トラヒックを転送すると（（２）高優先度トラヒックの転送）、中継器Ａは、トラヒック間の干渉を抑えるために、低優先度トラヒックの伝送経路を、中継器Ｂを経由する経路に変更する（（３）迂回）。
【０２０３】
図２４Ｂは、中継器Ａのルーティング処理部が管理する経路情報の一例を示す図である。図示される例では、送信元の中継器Ａから各中継器（Ｂ、Ｃ、Ｄ）への伝送経路が記述されている。中継器Ａは、このような経路情報に基づき、経路を決定する。本実施形態では、同様の経路情報を他の中継器のルーティング処理部でも管理しているものとする。
【０２０４】
なお、図２４Ａは、中継器Ａが低優先度トラヒックの経路を変更する場合の例を示しているが、中継器Ａは、上記のように、経路の変更ではなく送信流量を調整することによって対処する場合もある。本実施形態では、経路を変更するか送信流量を調整するかは、出力バッファ７０６（または隣接中継器７００ｃの入力バッファ）の使用状況に基づいて出力制御部７１０が判断する。
【０２０５】
図２５Ａは、中継器Ａが低優先度トラヒックに対して行う動作を示すフローチャートである。まず、トラヒック伝送中に、送信中の経路上で高優先度トラヒックが発生したとする（Ｓ２３０１）。高優先度トラヒックを伝送しているか否かは、例えば、ヘッダフリットに記述された優先度を示す識別子の値が所定の閾値を超えているか否かによって判断される。出力制御部７１０は、低優先度トラヒックに対して、経路を切り替える（迂回路を用いる）か、送信流量を調整するかを、後述する方法で判定する（Ｓ２３０５）。出力制御部７１０が経路を切り替えると判定した場合、出力制御部７１０は、ルーティング処理部７０７に経路切換を指示するための制御信号を送出する。ルーティング処理部７０７は、制御信号を受けて迂回路（Ａ⇒Ｂ⇒Ｄの経路）を選択し、迂回路に対応する出力ポートを決定する（Ｓ２３０２）。続いて、バッファアロケータ７０８、スイッチアロケータ７０９による転送処理を実行し、迂回路を用いた伝送を実行（（３）迂回）する（Ｓ２３０３）。一方、ステップＳ２３０５において出力制御部７１０が迂回路を用いないと判定した場合、出力制御部７１０は、入力バッファ７０４に送信タイミングを指示するための制御信号を送出する。入力バッファ７０４は、制御信号に基づき、フリットを送信するタイミングを調整する（Ｓ２３０４）。
【０２０６】
迂回路を用いるか否かの判定（Ｓ２３０５）は、例えば、図２５Ｂに示す手順で行われる。まず、出力制御部７１０は、出力バッファ７０６のバッファ使用量を計測する（Ｓ２３０６）。続いて、出力制御部７１０は、計測された出力バッファ７０６の使用量（バッファ使用量）に基づき、迂回するか否かを判定する（Ｓ２３０７）。具体的には、１万サイクルを単位時間として、バッファ使用量が少ない場合（例えば、出力バッファ７０６の空き容量が物理容量の１／２以上の場合）、出力制御部７１０は、トラヒック干渉の影響が大きくないと判断し、経路を変更することなく送信タイミングを調整する。この時、出力制御部７１０は、入力バッファ７０４に対して、低優先度トラヒックを入力バッファ７０４から送信する間隔を大きくするように指示する。これにより、スイッチ７０５および出力ポート７１７から出力されるトラヒックの送信流量が抑制される。
【０２０７】
一方、バッファ使用量が大きい場合（例えば、出力バッファの空き容量が物理容量の１/２に満たない場合）、出力制御部７１０は、トラヒック干渉の影響が大きいと判断する。トラヒック干渉の影響を早急に抑えるために、出力制御部７１０は、ルーティング処理部７０７に迂回路を探索させる。ルーティング処理部７０７が迂回路を探索すると、その迂回路に基づき、バッファアロケータ７０８およびスイッチアロケータ７０９が転送処理を実行する。これにより、バイパスされないトラヒックの伝送経路が変更され、トラヒック干渉を防ぐことができる。
【０２０８】
上記の判定はあくまでも一例であり、上記の各閾値は想定される伝送遅延に応じて適宜設計される。例えば、出力バッファの空き容量が物理容量の２／３以上の場合には何も行わず、１／３以上２／３未満の場合には流量の調整を行い、１／３に満たない場合には経路変更を行う構成を採用してもよい。
【０２０９】
また、出力バッファ７０６の使用量ではなく、出力バッファ７０６における待ち時間を計測し、これを用いて上記と同様の制御を行ってもよい。バッファ容量が小さい場合、バッファ使用量で評価するよりもバッファの待ち時間で評価した方が中継器での混雑状況を反映させやすい場合がある。
【０２１０】
本実施形態においても、伝送経路を切り替える場合、経路とともに受信ノードを変更してもよい。例えば、高優先度トラヒックの伝送を行っている中継器から、送信元のバスマスタに新たな送信先の問合せを行い、その結果に基づいて送信先の変更を行う構成が可能である。
【０２１１】
図２６Ａ、２６Ｂは、送信流量調整、迂回、および送信先変更の具体例を示す図である。図２６Ａは、１つのバスマスタから１つのメモリにトラヒック２３００１〜２３００３が伝送される際に、中継器２３００４が送信流量を抑制する例を示している。トラヒック２３００１が高優先度トラヒックである場合、低優先度トラヒック２３００２、２３００３については、中継器２３００４の出力バッファから出力される流量が抑制される。
【０２１２】
図２６Ｂは、異なる複数のバスマスタから同一のメモリにトラヒック２３００１〜２３００３が伝送される際に、中継器２３００４によって迂回や送信先（メモリ）の変更を行う例を示している。トラヒック２３００１が高優先度トラヒックであるとき、低優先度トラヒック２３００２、２３００３の経路が変更される。ここで、トラヒック２３００３については、その送信先のメモリも変更される。送信先の変更を行う場合、中継器２３００４は、送信元のバスマスタに新たな送信先の問合せを行い、その結果を反映させて送信先の変更を行う。中継器２３００４が経路変更、流量調整、送信先変更のいずれを行うかの判断基準は、設計時に中継器毎に決定してもよい。
【０２１３】
本実施形態では、トラヒックを高優先度トラヒックと低優先度トラヒックとに分類し、高優先度トラヒック伝送時に自中継器の伝送状態に基づいて低優先度トラヒックに対して伝送制御を行う例を示した。しかしながら、本発明は、このような形態に限らず、優先的に処理されるバイパストラヒックが伝送された場合に、バイパストラヒックと非バイパストラヒックとが合流する中継器の伝送状態に基づいて、同一の宛先に向かう非バイパストラヒックの伝送経路の変更または伝送流量の調整を行う構成であればよい。
【０２１４】
（実施形態３）
次に、本発明の第３の実施形態を説明する。
【０２１５】
本実施形態の詳細を説明する前に、まず、本実施形態の基本原理を説明する。図２７は、本実施形態の中継器６００の概略構成を示すブロック図である。中継器６００は、パケットを受け取る入力部４００と、入力されたデータ伝送単位（パケット）を優先的に出力するバイパス処理および優先的に出力しない通常処理のいずれを実行するかを判定するバイパス制御部２００と、バイパスされないパケットの伝送経路を複数の経路の中から選択するスイッチ６０５とを備えている。図２７に示す例では、バイパス処理が行われるパケットは、バイパス経路３００を通って出力され、バイパス処理が行われないパケットは、非バイパス経路３５０を通って出力される。
【０２１６】
バイパス経路３００は、例えば図５６に示すバイパス用配線９３０を経由する経路に相当し、非バイパス経路３５０は、例えば図５６に示すクロスバスイッチ９２４を経由して出力される経路に相当する。ただし、本発明はこのような物理的に配線を独立させる構成に限定されるものではない。非特許文献１に開示されているように、特定の送受信ノード間のトラヒックの伝送に関してルーティング処理などを省略したり、並列化することによって転送遅延を抑制する処理もバイパス処理に含まれる。
【０２１７】
図２８Ａ、２８Ｂは、バイパス制御部２００が行う処理の流れの例を示すフローチャートである。バイパス制御部２００は、図２８Ａおよび図２８Ｂに示す処理の少なくとも一方を実行することにより、受け取ったパケットのバイパスの要否を判定し、必要と判断すればバイパス処理を行う。
【０２１８】
図２８Ａに示す処理では、バイパス制御部２００は、パケットに付された時間に関する情報（時間情報）に基づいて、バイパスの要否を判断し、バイパス処理を行うか否かを判定する。バイパス制御部２００は、まずステップＳ１０においてパケットを受信すると、ステップＳ１１において、パケットが有する時間情報から許容できる残り時間（許容残り時間）を求める。次に、ステップＳ１２において、許容残り時間が予め定めた時間よりも小さいか否かを判定する。許容残り時間が予め定めた時間よりも小さい場合、バイパス制御部２００は、バイパスが必要であると判断し、当該パケットについてバイパス処理を実行する。許容残り時間が予め定めた時間以上である場合、バイパス制御部２００は、バイパスは不要であると判断し、当該パケットについては通常処理を実行する。
【０２１９】
一方、図２８Ｂに示す処理では、バイパス制御部２００は、パケットを受け取ったときのトラヒックの伝送状態に基づいて、当該パケットのバイパスの要否を判定する。まず、ステップＳ２０においてパケットを受信すると、バイパス制御部２００は、ステップＳ２１において、トラヒックの伝送状態を検出する。ここで、「トラヒックの伝送状態」とは、受け取ったパケットの前後に伝送されている複数のパケットの集合によって規定される振幅、送信間隔などを指す。なお、振幅とは、単位時間当たりに伝送されるデータ量を意味し、送信間隔とは、連続で送信されるパケット間の時間間隔を意味する。続くステップＳ２２において、バイパス制御部２００は、トラヒックの伝送状態に基づいて、伝送負荷が高いか否かを判定する。伝送負荷の判定は、例えば、トラヒックの振幅や送信間隔を予め定められた閾値と比較することによって行われ得る。伝送負荷が高いと判定した場合は、バイパス制御部２００は、ステップＳ２３において、受け取ったパケットをバイパス処理する。伝送負荷が高くないと判定した場合は、ステップＳ２４に進み、通常処理が行われる。なお、この例とは逆に、ステップＳ２２において伝送負荷が高いと判定された場合に通常処理を行い、伝送負荷が低いと判定された場合にバイパス処理を行うように設計してもよい。
【０２２０】
中継器６００は、例えば図２８Ａ、２８Ｂの少なくとも一方の処理を行うことにより、受け取ったパケットがバイパスを要するか否かを判断する。これにより、許容できる残り時間および伝送されるトラヒックの特性に応じてバイパスさせるトラヒックを適切に選別することができ、トラヒックの転送遅延を抑制することが可能となる。なお、上記の処理手順は、あくまでも例であり、本実施形態における中継器のバイパス判定方法は、後述するように多様な形態が可能である。中継器は、入力されたパケットが有する時間に関する情報を用いて得られる許容残り時間、およびトラヒックの伝送状態の少なくとも一方に基づいてバイパス処理を行うか否かを判定するように構成されていればよい。
【０２２１】
以下、本実施形態の具体的な構成および動作を説明する。以下の説明では、実施形態１と異なる点を中心に説明し、重複する事項についての説明は省略する。
【０２２２】
＜１．中継器の構成および動作＞
＜１．１．中継器の概略構成＞
図２９は、本実施形態における中継器の概略構成を示す図である。本実施形態でも、図３に示す多元接続網の構成を有するシステムを想定する。本実施形態においても第２グループの中継器６００ｂを例に説明するが、第１および第３グループの中継器についても送信先および受信元が異なるだけで基本的な構成は同様である。
【０２２３】
本実施形態における中継器６００ｂは、図５Ａに示す構成要素の他、バイパスされるフリットを蓄えるバイパスバッファ６１２をさらに備えている。バイパスバッファ６１２に格納されたデータは、送信スケジュールが調整された後、バイパス経路ＢＰ１を経由して出力バッファ６０６へ伝送される。なお、送信スケジュールを調整することなく、届いた順にパケットを出力してもよい。本実施形態ではバイパスバッファ６１２のバッファキューの数は２つであるが、この例に限らず、バッファキューの数はトラヒックの伝送量に応じて適宜設計される。バイパスバッファ６１２は、入力バッファ６０４や出力バッファ６０６と同様、複数のバッファキューから構成されている。バッファキューは、仮想チャネルによって構成してもよい。
【０２２４】
バッファ選択部６０３は、受信したフリットがバイパスを要するか否かを、ヘッダフリットに記述された情報に基づいて判断する。バイパスを要しないと判断した場合、バッファ選択部６０３は、そのフリットが属するトラヒックを入力バッファ６０４に格納する。バイパスを要すると判断した場合、バッファ選択部６０３は、そのトラヒックをバイパスバッファ６１２に送出する。
【０２２５】
本実施形態では、バイパスを行うか否かの判定方法が実施形態１とは異なっている。一方、バイパスしない場合の処理は、実施形態１と同様である。
【０２２６】
＜１．２．中継器の動作の概略＞
図３０は、中継器６００ｂがフリットを受信したときの動作を示すフローチャートである。中継器６００ｂのバッファ選択部６０３は、まずステップＳ３００１において、隣接の中継器６００ａからフリットを受信する。そして、ステップＳ３００２において、バッファ選択部６０３でバイパスを行うべきかを判定する。
【０２２７】
バッファ選択部６０３が、受け取ったフリットについて、バイパスを行うフローに属するフリットであると判断した場合は、バイパスバッファ６１２へ当該フリットを送出する。バイパスバッファ６１２に格納されたフリットは、ステップＳ３００７において、バイパスバッファ６１２によってスケジューリングが行われる。その後、ステップＳ３００６において、出力バッファ６０６へ送信される。なお、バッファ選択部６０３によるバイパスの具体的な判定方法については図３３〜図３５を参照しながら後述する。
【０２２８】
一方、バイパスを行わない場合は、ステップＳ３００３において、ルーティング処理部６０７でヘッダフリットを解析して出力ポート６１３を決定する。次に、ステップＳ３００４において、バッファアロケータ６０８により、出力ポートと宛先の中継器の入力バッファのバッファキューとの対応付けを行う。続いて、ステップＳ３００５において、スイッチアロケータ６０９により、トラヒックデータを伝送するために対応付けが完了している組から１組を選ぶ。その後、ステップＳ３００６において、対象とするバッファキューからデータを１フリット単位又は、パケット単位で伝送する。
【０２２９】
図３１に、バイパス処理を行わない一般的な中継器の処理の手順を示す。一般的な中継器における構成や処理手順は、基本的に前述のバイパスを行わない場合における図２９の構成や図３０の処理手順と同じである。
【０２３０】
まず、（１）ヘッダフリットを解析して宛先アドレスから出力ポートを決定する（Routing computation：RC）。この処理は、本実施形態では、ルーティング処理部６０７が担当し、Ｓ３００３の処理ステップに対応する。
【０２３１】
次に、（２）転送先の隣接中継器の入力バッファのバッファキュー（または出力バッファ６０６のバッファキュー）を決定する（Virtual channel allocation：VA）。この処理は、本実施形態ではバッファアロケータ６０８が担当し、Ｓ３００４の処理ステップに対応する。出力ポートとバッファキューとを対応付ける順序として、ラウンドロビン、パケットの到着順、締切時間順などの選択基準に基づいて決定することができる。
【０２３２】
続いて、（３）トラヒックデータを伝送するために対応付けが完了している組から１組を選ぶ（Switch allocation：SA）。このステップでも同様に、対応付けが完了している組から１組を選ぶ選び方として、ラウンドロビン、パケットの到着順、締切時間順、中継処理の優先度やトラヒックのバースト性などの選択基準に基づいて決定することができる。トラヒックのバースト性を区別して、バースト性のあるトラヒックを優先して選択することにより、バーストトラヒックの伝送性能の確保、すなわち、許容遅延時間内での低遅延伝送や、許容スループット内での高スループット伝送が容易になる。但し、選択されても、転送先の中継器６００ｃが受け入れ可能でなければ、データを伝送できない。そのため、転送先の中継器６００ｃが受け入れ可能であると判断できた場合のみ、データを伝送する。この処理は本実施形態では、スイッチアロケータ６０９が担当し、Ｓ３００５の処理ステップに対応する。
【０２３３】
そして、（４）対象とするバッファキューからデータを１フリット単位で伝送する（Switch traversal：ST）。この処理は本実施形態では、スイッチアロケータ６０９が担当し、Ｓ３００６の処理ステップに対応する。伝送するデータのサイズは、前述のように、１フリット単位ではなく、パケット単位であってもよい。
【０２３４】
なお、バースト性を示すトラヒックデータの特徴は、単位時間当たりの伝送量、送信周期、送信間隔、連続して伝送されるパケット数、および遅延時間の少なくとも１つで表現できる。具体的には、データの単位時間当たりの伝送量が予め定められた閾値よりも多い場合、データの送信周期が予め定められた閾値よりも短い場合、およびデータの送信間隔が予め定められた閾値よりも短い場合、連続して伝送されるパケット数が予め定めた閾値よりも大きい場合、データの許容遅延時間が予め定められた閾値よりも短い場合の少なくとも１つの場合に、当該データはバースト性を備えていると判定できる。トラヒックのバースト性は、例えば前述の観点からバースト性を備えるか否かを判断し、その結果を処理の優先度を示す情報として表現することができる。あるいは、バースト性の有無または程度を識別子（例えば、バースト性を示す情報や、バーストトラヒックを送信するバスマスタを識別できる情報）としてパケットのヘッダに記述することもできる。そのような情報により、バーストトラヒックをバースト性を備えないトラヒックと区別することができる。
【０２３５】
具体的な実現例としては、バスマスタが送信するデータのバースト性の有無（もしくは優先度）を、図４に示すバスマスタ側のＮＩＣ６２０ａが判断し、図６に示すヘッダフリット５０４にバースト性の有無を示す情報（もしくは優先度）を付与することができる。これにより、各中継器のヘッダフリット解釈部９０１は、ヘッダフリットからバースト性の有無を判断して、バースト性の有無（もしくは優先度）に応じた中継処理を行うことができる。
【０２３６】
＜１．３．バッファ選択部の構成および動作＞
図３２は、本実施形態におけるバッファ選択部６０３の構成を示すブロック図である。バッファ選択部６０３により、中継器６００ｂが受信したトラヒックをバイパスするか、通常の処理により転送するかが決定される。バッファ選択部６０３は、図６に示すフリットの構造を解析するヘッダフリット解釈部９０１と、トラヒックデータをバイパスバッファ６１２または入力バッファ６０４のいずれかに振り分けるフリット選別部９０２と、バイパスバッファ６１２から出力されるトラヒックデータの送信を管理するバイパスバッファ送信管理部９０３とを備える。
【０２３７】
フリット選別部９０２は、解析したトラヒックデータの構造に基づき、受信したトラヒックデータをバイパスさせるか否かを決定する。受信したトラヒックデータをバイパスする場合は、トラヒックデータをバイパスバッファ６１２へ転送する。
【０２３８】
バイパスバッファ６１２へ転送されたデータは、ヘッダフリット解釈部９０１の解析結果に基づき、バイパスバッファ送信管理部９０３によってスケジューリングが調整された後、バイパスバッファ６１２から送信される。バイパスバッファ送信管理部９０３によるスケジューリングは、例えば、ラウンドロビン、締切時間、優先情報に基づいて行われる。
【０２３９】
また、受信したトラヒックデータをバイパスさせない場合は、フリット選別部９０２は、トラヒックデータを入力バッファ６０４へ送信する。各部の処理の詳細は後述する。
【０２４０】
図３３は、バッファ選択部６０３の動作の流れを示すフロー図である。まず、ヘッダフリット解釈部９０１にてトラヒック情報を収集し、解釈する（Ｓ３３０１）。続いて、ヘッダフリット解釈部９０１にて解析したトラヒック情報に基づき、フリット選別部９０２は、伝送に残された時間（残り時間）および伝送するコンテンツの特性のうち少なくともいずれかの観点からバイパスするトラヒックと、バイパスさせないトラヒックに分類する（Ｓ３３０２）。バイパスするトラヒックはバイパスバッファ６１２へ送信され、バイパスバッファ送信管理部９０３によって送信流量が制御される。バイパスしないトラヒックは入力バッファ６０４へ送信され、図３０に示すＳ３００３からＳ３００５までの処理を経て、出力バッファ６０６へ送信される（Ｓ３３０３）。
【０２４１】
＜１．４．ヘッダフリットの詳細構造＞
図３４は、本実施形態におけるヘッダフリット５０４の詳細構造を示す図である。ヘッダフリット５０４は、以下の構造で構成されている。すなわち、送受信ノード間での送信元１１０１と送信先１１０２を記述するフィールド、個々のトラヒックデータを識別するためのフローＩＤを記述するフィールド１１０３、トラヒックデータの重要度を定義する優先度を記述するフィールド１１０４、トラヒックデータの締切時間を記述するフィールド１１０５、トラヒックデータが中継器で中継された回数を記述するフィールド１１０６、トラヒックデータのデータサイズを記述するフィールド１１０７、トラヒックデータがバイパスした回数を記述するフィールド１１０８、およびトラヒックデータがバイパスバッファに滞在した時間を記述するフィールド１１０９である。
【０２４２】
図３５は、ヘッダフリット解釈部９０１が解析した結果を説明するための図である。フローＩＤは、トラヒックデータをシステム上で一意に特定するためのＩＤである。フローＩＤは、バスマスタが接続された中継器によって付与される。フローＩＤを割当てる中継器毎にＩＤの割当範囲を定義しておくことにより、システム上で一意なＩＤを割当てることが可能である。
【０２４３】
優先度は、送信するトラヒックデータの重要度を示す。例えば、低遅延要求の高い映像や音声、制御データなどに対しては高い優先度を割当てる。逆に、低遅延要求の低いテキストやイメージなどのデータに対しては低い優先度を割当てる。
【０２４４】
締切時間は、送信元から送信先に到着するまでに許容できる時間を記す。時間の表現形式としては、例えばクロック数、μ秒などの単位で表される。また、時刻をシステム上の絶対時刻で表現してもよいし、予め定めた基準時刻からの相対時間で表現してもよい。図３５に示す例では、フローＩＤ  ３２１は、フローＩＤ  ２３４よりも締切時間が短い（１２０１）。
【０２４５】
中継回数は、送信元から送信先までに通過する中継器の個数を記す。個数のカウントは、トラヒックデータが中継器を通過する毎に、ヘッダフリットの中継回数のフィールドを加算することによって実現される。図３５に示す例では、フローＩＤ  ４５６は、フローＩＤ  ５６７よりも中継回数が多い（１２０４）。中継回数が多いフローの方が中継遅延の影響により、伝送遅延が大きくなっていると考えられる。
【０２４６】
データサイズは、送信するデータのデータサイズを記す。一般に、制御データはサイズが小さく、映像や音声データはサイズが大きくなる（１２０５）。トラヒックデータの特徴を表すパラメータとして、ここではデータサイズを示したが、データサイズ以外の情報をヘッダフリットに記述してもよい。映像データのように、トラヒックデータの振幅が激しく、トラヒックデータが瞬間的（短い送信間隔）に連続して伝送されるトラヒック（バーストトラヒック）は、他のトラヒックデータに与える影響（例えばトラヒック干渉）が大きい。このため、トラヒックデータの最大振幅値、データの送信間隔や送信周期を記して、なるべく同一伝送経路や同一中継器で合流しないように設計することが好ましい。このような設計により、伝送性能の向上が期待できる。これらの具体的な応用については図３６を参照しながら後述する。
【０２４７】
バイパス回数は、送信元から送信先までに伝送される間に中継器のバイパスを通過した回数を記す（１２０３）。バイパス回数は、トラヒックデータが中継器のバイパスを通過する毎に、各中継器がヘッダフリットのバイパス回数のフィールドを加算することによって実現される。
【０２４８】
バイパスバッファ滞在時間は、中継器のバイパスバッファで待たされた時間の累計を示す。送信元から送信先までに各中継器のバイパスバッファで待たされた時間が累積される。時刻の表現形式としては、クロック数、μ秒などの単位で表され得る。また、時刻をシステム上の絶対時刻で表現してもよいし、予め定めた基準時刻からの相対時間で表現してもよい。図３５の例では、フローＩＤ  １２３は０、フローＩＤ  ３２１は２００だけバイパスバッファで待たされている（１２０２）。なお、バイパスバッファ滞在時間は、経由した全ての中継器におけるバイパスバッファでの滞在時間の累積ではなく、そのうちの一部の中継器におけるバイパスバッファでの滞在時間の累積であってもよい。これらの情報の収集対象となる他の中継器の範囲や、収集間隔（対象とする中継器のバイパスバッファでの滞在時間を収集する時間間隔）を、自中継器におけるバイパスバッファでの待ち時間に基づいて決定することも可能である。また、累積ではなく、平均値やピーク値をバイパスバッファ滞在時間として用いてもよい。
【０２４９】
ヘッダフリット解釈部９０１は、図３５に示す解析結果を示す情報を解析データとして、トラヒックデータとは別にフリット選別部９０２に送出する。
【０２５０】
＜１．５．フリット選別部によるバイパス判定処理＞
＜１．５．１．優先度、残り時間、その他の評価項目に基づくバイパス判定処理＞
次に、中継対象となるトラヒックの許容残り時間に基づいてバイパス処理を行うか否かを判定する処理を説明する。なお、本実施形態では、残り時間に基づく判定処理のみならず、パケット（フリット）に付された優先度を示す情報およびその他の評価項目に基づく判定処理も行う。
【０２５１】
図３６は、フリット選別部９０２の構成を示すブロック図である。フリット選別部９０２は、ヘッダフリット解釈部９０１によるヘッダフリットの解析結果に基づき、フリットを選別する。図３６に示すように、フリット選別部９０２には、ヘッダフリット解釈部９０１から、解析データとトラヒックデータとが入力される。フリット選別部９０２は、ヘッダフリットに記述された優先度を示す情報に基づきバイパスするか否かの判定を行う優先度判定部３６０１と、各トラヒックデータが許容できる残り時間（詳細は後述）に基づいてバイパスするか否かの判定を行う残り時間比較部３６０１と、着目する評価項目（詳細は後述）に基づき、バイパスするか否かの判定を行う評価項目比較部３６０３と、これら各部の判定結果に基づき、バイパスバッファ６１２または入力バッファ６０４のいずれかにパケットを転送する転送先選択部３６０４を備える。
【０２５２】
図３７は、フリット選別部９０２の処理の流れを示すフローチャートである。フリット選別部９０２は、まず受け取ったフリットのヘッダに記述された優先度の値が、予め定めた優先度以上であるかを判断する（Ｓ３７０１）。優先度の値が予め定めた優先度以上である場合、転送先選択部３６０４は、バイパスバッファ６１２にトラヒックデータを送信する（Ｓ３７０７）。ここで、優先度が高いほど、低遅延要求の度合いが高いものとする。優先度の値が予め定めた優先度未満である場合、残り時間比較部３６０２は、バイパスバッファ６１２に格納された各トラヒックデータが許容できる残り時間を求める（Ｓ３７０２）。残り時間の求め方としては、例えば以下のいずれかの方法で求める。
（１）残り時間  ＝  締切時刻  −  現在時刻
（２）残り時間  ＝  許容遅延時間  −  （滞在時間＋中継遅延×中継回数）
【０２５３】
ここで、締切時刻および滞在時間（バイパスバッファ滞在時間）は、図３４に示すヘッダフリットの要素である。現在時刻は、自中継器がトラヒックデータを受信した時刻である。許容遅延時間は、送受信ノード間で定義するアプリケーションにおいて許容できる最大遅延時間である。許容遅延時間は、ヘッダフリットに記述してもよいし、設計時に各中継器で定義、登録しておいてもよい。また、中継遅延は、中継器を経由する毎に必要となる中継処理により生じる遅延時間である。具体的には、固定値（例えば４サイクル）が１つの中継器あたりの中継遅延として設定される。これらの情報から上記（１）、（２）のいずれかの式を用いて残り時間が計算される。式（２）における滞在時間は、上述のように、当該フリットが自中継器に到達するまでに経由した各中継器のバイパスバッファで生じる遅延時間の累積を表す。中継遅延×中継回数は、自中継器から目的地である受信ノードまで入力バッファを介した通常処理によって伝送する場合の遅延時間（転送処理およびバッファでの待ち合わせ時間の合計）を表している。滞在時間と（中継遅延×中継回数）との和を、送信ノードから受信ノードまで伝送される間に中継処理によって生じる遅延と定義している。なお、自中継器から受信ノードまでの中継回数は、送信ノードから受信ノードまでに通過する中継器の個数から、ヘッダフリットに記述された通過した中継回数を減算することにより求められる。
【０２５４】
上記の式（１）、（２）の代わりに、上記式（１）または（２）を用いて計算した残り時間からパケット長によって決まる所定の時間を減算した値を残り時間としてもよい。これにより、長いパケットと短いパケットとが混在しても、より正確な残り時間を求めることが可能となる。
【０２５５】
図３７に示すステップＳ３７０３において、残り時間比較部３６０２は、上記のいずれかの方法で求めた残り時間が、予め定めた残り時間未満であるか否かを判定する。予め定めた時間未満である場合は、転送先選択部３６０４は、残り時間に余裕が無いと判断し、ステップＳ３７０７において、バイパスバッファ６１２にデータを送信する。残り時間が予め定めた時間以上であれば、残り時間に余裕があると判断され、処理はステップＳ３７０４に進む。
【０２５６】
ステップＳ３７０４において、評価項目比較部３６０３は、着目する評価項目に関して評価対象のフロー毎に予め定められた閾値と受信したデータの実際の値とを比較する。ここで、着目する評価項目とは、例えば、図３４に示すバイパスバッファ滞在時間、バイパス回数、中継回数などの各項目である。システム設計時にどの評価項目に着目するかを任意に決めることができる。閾値は、システム設計時に平均的な値で与えられる。例えば、バイパス回数については「２回」、中継回数については「５回」といった数値が閾値として設定される。
【０２５７】
続いて、ステップＳ３７０５において、評価項目比較部３６０３は、中継器のバイパスする伝送路の伝送負荷（例えばバイパスバッファ６１２の空き容量、またはバイパスバッファ６１２での待ち合わせ時間）が許容値より小さいか否かを判断する。ここで、バイパスバッファ６１２での待ち合わせ時間とは、バイパスバッファ６１２にパケットが到着してから送信されるまでに必要な時間を意味する。伝送負荷は、例えば不図示の計測部によって計測される。伝送負荷が予め定められた許容値より小さく、かつ、上記の評価項目について対象とするフローの閾値との比較結果からバイパスが必要と判断された場合、ステップＳ３７０７において、転送先選択部３６０４は、バイパスバッファ６１２にデータを送信する。そうでない場合、ステップＳ３７０６において、転送先選択部３６０４は、データを入力バッファ６０４に送信する。
【０２５８】
以上のような処理により、バイパスの伝送能力に余裕がある場合（例えば、バイパスバッファの占有率が５０％未満、バイパスバッファ６１２での待ち時間が１００サイクル未満の場合）、着目する評価項目に関して、バイパスさせる複数のフロー間の伝送品質の格差を小さくすることが可能となる。例えば、バイパス回数に関する情報を評価項目として用いた場合、バイパス回数が少ないフローを優先的に伝送することにより、特定のフローのみがバイパスされることを防ぐことができる。これにより、フロー間の伝送性能（伝送遅延やスループット）のバラツキを解消することが可能となる。
【０２５９】
なお、中継器は、図３７に示す処理フローに限らず、少なくともステップＳ３７０２で求められる許容できる残り時間に基づいてバイパス処理を行うか否かの決定が行われるように構成されていればよい。
【０２６０】
＜１．５．２．トラヒック特性に基づくバイパス判定処理＞
図３８はフリット選別部９０２の他の例を示す図である。この例では、フリット選別部９０２は、ヘッダフリット解釈部９０１によるヘッダフリットの解析結果を受け、トラヒックの特性に基づいてバイパスするか否かの判定を行うトラヒック特性判定部３６０５と、この判定結果に基づいてバイパスバッファ６１２または入力バッファ６０４にデータを送出する転送先選択部３６０４とを備えている。
【０２６１】
バイパスバッファ６１２の空き容量またはバイパスバッファ６１２での待ち時間だけではなく、伝送するデータの特性に基づいてバイパスの要否を判断してもよい。具体的には、トラヒック特性判定部３６０５は、伝送中のバーストトラヒックの有無や程度に基づいて、バイパスするか否かを判断してもよい。例えば、トラヒック特性判定部３６０５は、映像のようなバースト性の強いトラヒックに対して、ヘッダフリット解釈部９０１の解釈結果からトラヒックデータの最大振幅値、パケットの送信間隔や送信周期に関する情報などを取得する。それらの情報が予め設計時に定めた閾値以上であれば、トラヒック干渉の影響が強いと判断し、対象とするフローのバイパスを行わないと判定することができる。逆に、バースト性の強いトラヒックをバイパスさせる場合に、他のトラヒックとの干渉が強くなるため、バースト性の弱いトラヒックはバイパスしないと判定してもよい。判定結果に基づき、転送先選択部３６０４は、トラヒックデータをバイパスバッファ６１２または入力バッファ６０４へ転送する。
【０２６２】
一般に、トラヒックのバースト性が強い場合、トラヒックの最大振幅値は大きく、パケットの送信間隔や送信周期は短い。パケットの送信間隔や送信周期が所定の閾値よりも短いトラヒックをバーストトラヒックと定義してもよい。バースト性を定義する閾値は、例えば、設計時にシミュレーションにより、実験的に求められる。なお、トラヒックデータの最大振幅値、パケットの送信間隔や送信周期に関する情報などの情報は、ヘッダフリット解釈部９０１によってフロー毎に中継器が計測することによって取得してもよいし、図３５に示すヘッダフリットに予め記述しておき、ヘッダフリット解釈部９０１で解釈してもよい。
【０２６３】
バースト性のあるトラヒックをバースト性のないトラヒックと分離し、バースト性のあるトラヒックをバイパス経路で伝送し、バースト性のないトラヒックを通常の伝送経路で伝送することにより、バースト性のあるトラヒックとバースト性のないトラヒックとのトラヒック干渉を防ぐことができる。これにより、バーストトラヒックに要求される伝送性能、すなわち、許容遅延時間内での低遅延伝送や、高いスループットの確保が可能となる。
【０２６４】
バースト性のあるトラヒックを、バースト性のないトラヒックと分離する方法としては、前述したように、中継器の内部でバイパスする経路を設定する方法や、中継器の外部にバスパス経路を設けること方法がある。このような方法により、中継器内のバッファの共用によるトラヒックの干渉を防ぐとともに、中継器内のクロスバスイッチによる処理競合を無くすことができる。なお、中継器内でバイパスする場合においても、バイパスを行うかどうかの判定は、バスマスタに接続された中継器のみで行い、バスマスタに接続されていない途中の中継器ではバイパスを行うか否かの判定を行わないようにシステムを構成してもよい。そのような構成により、バイパスを行うか否かの判定処理によるバーストトラヒックとバースト性のないトラヒックとの間のトラヒック干渉を防ぐことが可能となる。この場合には、通常は隣接する中継器間で行われるフロー制御を、バスマスタに接続された中継器とメモリに接続された中継器との間で行うようにする必要がある。また、長距離に配線する場合には、バスバッファ（長配線を分割するリピータ）をバイパス経路に設ける必要がある。さらに、バースト性のあるトラヒックが複数ある場合には、中継器の外部にバイパス経路を設ける方法と同様に、バースト性のあるトラヒック毎に、独立にバイパスする伝送経路を設けることが効果的である。そのような構成では、トラヒック干渉を生じる箇所が少ないため、バーストトラヒックの伝送性能の改善効果は顕著である。
【０２６５】
詳細は後述するが、バースト性のあるトラヒックのみに中継器内に専用のバッファを割当ててもよい。このようにすることで、トラヒック干渉の影響は残るものの、バイパス経路を設ける方法よりは簡単にトラヒック干渉を防ぐことが可能となる。バースト性のあるトラヒックが複数ある場合には、バースト性のあるトラヒック毎に伝送経路上の各中継器に専用のバッファを割当てることが有効である。これにより、トラヒック干渉が生じる機会が減るため、バーストトラヒックの伝送性能の改善効果は顕著である。具体的なバッファの構成方法は、実施形態４で説明する。
【０２６６】
なお、本明細書では、バースト性のあるトラヒック毎に伝送経路上の各中継器に専用のバッファを割当てる方法も、独立したバイパス経路を実現する１つの方法と位置づける。すなわち、バースト性のあるトラヒックに対して、伝送経路上の各中継器に割当てたバッファをバイパスする伝送経路に対応付ける。トラヒックの特性（許容遅延時間、保証すべきスループット、バーストするトラヒックの数、トラヒック数など）に応じて、上記のアプローチを組み合わせて伝送路の設計をしてもよい。
【０２６７】
また、音声データや制御データのようなサイズの小さいデータや、最大振幅値が小さいデータ、送信間隔や送信周期が長いデータを優先的にバイパスさせるようにしてもよい。これにより、バイパスされる伝送路でのトラヒック間の干渉を小さくすることができる。
【０２６８】
さらに、トラヒックの伝送状態の別の表現方法としては、ヘッダフリットにバイパスすべきトラヒックであることを示す識別子を設けてもよい。トラヒックのバースト性やリアルタイム性などのトラヒック特性の観点や、伝送経路で生じるトラヒック干渉の影響などの観点から、設計者が判断して、設計時に、対象トラヒックのヘッダフリットにバイパスさせるか否かを示す情報を予め記述しておくことができる。この場合、各中継器のヘッダフリット解釈部９０１がバイパスの有無の識別子を解釈して、バイパス動作の有無の判定をさせるようにしてもよい。
【０２６９】
なお、本実施形態では、フリット選別部９０２は、図３６または図３８の構成を有しているが、これらの構成に限定されない。例えば、これらの両方の構成を有していてもよい。その場合、パケットに付された情報から求められる時間情報と、トラヒックの負荷の両方の観点からバイパスの要否が判定される。
【０２７０】
＜１．６．バイパスバッファ送信管理部によるスケジューリング＞
次に、図３０に示すステップＳ３００７におけるバイパスバッファ６１２による送信スケジューリングの例を説明する。図３２に示すバイパスバッファ送信管理部９０３は、図３６に示す残り時間比較部３６０２によって求められた許容残り時間に基づいて、バイパスバッファ６１２から出力されるデータの送信順序または送信時間（送信する間隔や送信タイミング）を決定する。送信順序や送信時間は、許容残り時間に限らず、他の情報に基づいて決定してもよい。例えば、入力されたパケットの締切時間、パケットが入力されたときのトラヒックのバイパスバッファ６１２での滞在時間、中継回数などの情報を適宜組み合わせて決定してもよい。このようなスケジューリングを行うことにより、迅速な転送が必要なパケットほど早く送信されるため、バイパストラヒックの遅延をさらに低減することができる。
【０２７１】
以上の説明では、中継器６００の各構成要素は、ブロック化された個別の機能部として表されているが、これらの機能部の処理を規定するプログラムを中継器６００に実装されたプロセッサ（コンピュータ）に実行させることによって中継器６００の動作が実現されていてもよい。そのようなプログラムの処理手順は、例えば図３０、３３、３７のフローチャートに記載されているとおりである。
【０２７２】
＜２．変形例＞
＜２．１．出力バッファを設けない構成＞
図２９に示す構成では、中継器６００ｂは出力バッファ６０６を備えているが、前述したように、出力バッファ６０６を備えていなくてもよい。図３９は、中継器６００ｂが出力バッファ６０６を備えておらず、クロスバスイッチ６０５の出力が後段の隣接中継器６００ｃのバッファ選択部６０３ｃに入力される構成例を示している。このような構成によれば、メモリ量を抑えることができるため、組込用途に有効である。
【０２７３】
＜２．２．外部配線＞
また、以上の説明では、図２９に示すように、中継器６００ｂ内でバイパスが行われる例（内部配線）を示したが、実施形態１と同様、中継器６００ｂの外部にバイパストラヒックを伝送するように配線（外部配線）されていてもよい。図４０は、中継器６００ｂの外部に配線してバイパスする構成例を示す図である。この例では、バッファ選択部６０３は、バイパス経路ＢＰ３、ＢＰ４によって中継器６００ｂの外部の中継器またはメモリ１０５にトラヒックを伝送する。
【０２７４】
内部配線による構成では、中継器毎にバイパス処理が閉じているため、中継器の処理モジュールとしての再利用性は高い。すなわち、個々の中継器を１つの部品として交換することが容易となる。しかし、宛先までの中継器を全て中継する必要があるため、処理のオーバーヘッドが生じやすい。逆に、外部配線による構成では、内部配線による場合に比べて、中継器の処理モジュールとしての再利用性は低い。しかし、宛先までの中継器を全て中継する必要がないため、処理のオーバーヘッドを低減させることができる。
【０２７５】
本実施形態においても、図２０を参照しながら説明した応用が可能である。図２０に示すバスマスタ１０１ａから発生するトラヒックについて、中継器Ｒ９は、入力されたパケットが有する時間に関する情報を用いて得られる許容残り時間、およびパケットが入力されたときのトラヒックの伝送状態の少なくとも一方に基づいて、パケットを優先的に出力するバイパス処理を行う。ここで、バスマスタは複数種類のトラヒックを出力してもよい。具体的には、締切時刻や優先度の異なるトラヒックや、振幅や送信間隔が異なるトラヒックを混在させて送信してもよい。また、外部配線と内部配線とを組合せてネットワークを構築してもよい。例えば、中継器Ｒ９を内部配線によって構成することにより、外部配線または内部配線のみで構築するよりも低遅延化が容易になる。
【０２７６】
＜２．３．他のトポロジ＞
上記の説明では、集積回路のトポロジが多段接続網の場合（図３）を例に説明したが、本実施形態の中継器６００も、実施形態１と同様、多段接続網での利用に限定されるものではない。例えば、図１２（ｂ）に示すような、中継器を格子状に並べたメッシュ型のトポロジ、図２２Ａに示すようなトーラス型のトポロジ、図２２Ｂに示すような、バスを階層的に接続したトポロジであってもよい。複数のバスマスタを分散型のバスを介して接続したトポロジであれば、同様に本実施形態の中継器の適用が可能である。
【０２７７】
（実施形態４）
次に、本発明の第４の実施形態を説明する。本実施形態の具体的な構成および動作を説明する前に、本実施形態の基本概念を説明する。
【０２７８】
本実施形態の中継器は、バーストトラヒックに対して、バッファキュー（データ格納部）を適切に割当てることにより、バッファキューの利用効率を高めながら、トラヒック干渉を抑制し、低遅延伝送を実現することを可能にする。一般に、バースト性の高いトラヒックは、トラヒックデータの最大振幅値は大きく、パケットの送信間隔や送信周期は短いため、トラヒック干渉が生じやすく、伝送遅延が生じやすい。そこで、本実施形態の中継器は、バーストトラヒックに対して特定のバッファキューを占有的に割り当てて格納することにより、バッファキューの利用効率を高め、トラヒック干渉を抑制する。
【０２７９】
図４１Ａは、本実施形態の中継器６００の概略構成の例を示す図である。図４１Ａに示すように、本実施形態による中継器６００は、データを受け取る入力部４００と、データを一時的に蓄える複数のデータ格納部３１を含むバッファ部３０と、バッファ部３０に格納されたデータを順次出力する出力部４５０と、受け取ったデータのバースト性を示す情報に基づいていずれかのデータ格納部３１にデータを振り分ける振分け処理部１４０４とを備えている。
【０２８０】
振分け処理部１４０４は、入力部４００が受け取ったトラヒックデータのバースト性を示す情報に基づいて、当該データを予め確保された特定のデータ格納部に振り分けるか否かを決定する。例えば、受け取ったトラヒックデータの最大振幅値が予め設定された閾値よりも大きい場合や、送信周期や送信間隔が予め設定された閾値よりも短い場合に、空いている１つのデータ格納部３１を確保し、当該データをそのデータ格納部３１に格納する。
【０２８１】
中継器６００は、図４１Ｂに示す構成を有していてもよい。図４１Ｂに示す構成では、振分け処理部１４０４は、自中継器６００−１ではなくデータの転送先の中継器６００−２における複数のデータ格納部３１−２に当該データを振分ける。この構成は、例えば自中継器６００−１内のバッファ部３０−１を経由せず、転送先の中継器６００−２内のバッファ部３０−２にデータをバイパスさせるような場合に採用され得る。振分処理部１４０４−１は、上記の例と同様、受け取ったデータのバースト性に基づき、転送先の中継器６００−２における予め確保した特定のデータ格納部３１−２に当該データを振分ける。
【０２８２】
以上の構成により、バースト性の高いトラヒックデータは、特定のデータ格納部３１を利用することになるため、他のトラヒックとの干渉が抑制される。結果として、トラヒックの伝送遅延を低減させることが可能となる。
【０２８３】
本実施形態において、バースト性を示す情報としては、上記のトラヒックデータの振幅、送信周期、送信間隔に限らず、他の指標を用いてもよい。例えば、特定の種類のデータ（例えば特定の映像、音声データ）をバーストトラヒックとして扱ってもよい。バースト性を示す情報は、自中継器内の計測部で計測してもよいし、送信されるデータに付与されていてもよい。例えば送信元のバスマスタがバースト性が高いことを示すフラグをデータに付与して送信するような形態でもよい。具体的には、トラヒックデータのバースト性を示す情報は、先に述べたトラヒック特性に基づき、設計時に、ヘッダフリットに付与されていてもよい。ヘッダフリットにバーストトラヒックであるか否かを示す識別子を設けて、他のトラヒックデータと区別できるようにすることで、各中継器でトラヒック特性の観測を行わずに、簡単に各中継器でバーストトラヒックの処理をできるようになる。
【０２８４】
以下の説明では、まず、バイパス機能を備えた中継器の具体的な構成を説明するとともに、バイパス機能を備えた中継器において、バーストトラヒックに対して特定のバッファキューを占有的に割り当てる実施形態を説明する。続いて、バイパス機能を備えない一般的な中継器においてバーストトラヒックに対して特定のバッファキューを占有的に割り当てる実施形態を説明する。後者の例に示すように、本発明の中継器は、必ずしもバイパス配線を備えている必要はない。
【０２８５】
以下、本実施形態の具体的な構成および動作を説明する。本実施形態と実施形態３との主な相違点は、バイパスバッファ６１２およびバイパスバッファ送信管理部９０３の構成および動作にある。以下の説明では、実施形態３と異なる点を中心に説明し、重複する事項についての説明は省略する。
【０２８６】
＜１．中継器の構成および動作＞
＜１．１．中継器の概略構成＞
本実施形態における中継器の物理構成は、図２９に示す構成と同様である。また、本実施形態でも、図３に示す多元接続網の構成を有するシステムを想定する。さらに、図３０〜３５を参照しながら説明した構成および動作については、本実施形態でもそのまま適用される。
【０２８７】
なお、本実施形態におけるバイパスバッファ６１２、入力バッファ６０４、および出力バッファ６０６は、複数のバッファキューを含むバッファ部を有している。バッファ部は、仮想チャネル（Virtual Channel）で構成してもよい。仮想チャネルによってバッファを構成する場合、複数の仮想回線が構築されることになる。本実施形態では、バッファキューや仮想チャネルが本発明におけるデータ格納部の機能を有する。
【０２８８】
＜１．２．フリット選別部の動作＞
図４２は、本実施形態におけるフリット選別部９０２の処理の例を示すフロー図である。実施形態３と同様、フリット選別部９０２は、ヘッダフリット解釈部９０１によって解析された結果に基づいて、バイパスを行うか否かの判断を行う。フリット選別部９０２は、まず、ステップＳ４２０１において、受け取ったフリットに付与された優先度が予め定めた閾値以上か否かを判定する。優先度が閾値以上である場合、ステップＳ４２０６に進み、フリット選別部９０２は、フリットをバイパスバッファ６１２に送信する。優先度が閾値に満たない場合は、ステップＳ４２０２に進み、フリット選別部９０２は、送信完了までに許容できる残り時間を求める。残り時間は、例えば、ヘッダフリットに記述された締切時間の情報から得られる締切時刻から現在時刻を減算することによって求められる。続いて、ステップＳ４２０３において、フリット選別部９０２は、残り時間が予め定めた閾値よりも小さいか否かを判定する。残り時間が予め定めた閾値よりも小さい場合、ステップＳ４２０６に進み、当該フリットはバイパスバッファに送信される。残り時間が予め定めた閾値以上である場合、ステップＳ４２０４において、フリット選別部９０２は、当該フリットの中継回数またはバイパス回数が予め定めた閾値よりも多いか否かを判定する。中継回数またはバイパス回数が予め定めた閾値よりも大きい場合、ステップＳ４２０６に進み、当該フリットはバイパスバッファに送信される。中継回数およびバイパス回数が予め定めた閾値以下である場合は、ステップＳ４２０５に進み、当該フリットは入力バッファ６０４に送信される。
【０２８９】
なお、図４２に示すフリット選別部９０２の動作は、あくまでも一例であり、図示されるフローのとおりに動作しなくてもよい。例えば、ステップＳ４２０１、Ｓ４２０３、Ｓ４２０４のいずれか１つの判定だけを行ってもよいし、図３４に示す他の情報に基づいて判定を行ってもよい。
【０２９０】
＜１．３．バイパスバッファ、バイパスバッファ送信管理部の構成・動作＞
＜１．３．１．バイパスバッファ、バイパスバッファ送信管理部の構成＞
次に、バイパスバッファ送信管理部９０３およびバイパスバッファ６１２の構成を説明する。
【０２９１】
図４３は、図３２に示すバイパスバッファ送信管理部９０３およびバイパスバッファ６１２の詳細構成を示すブロック図である。バイパスバッファ６１２は、振分け処理部１４０４と、複数のバッファキューを含むバッファ部１４０５とを有している。なお、本実施形態では、バッファ選択部６０３および振分け処理部１４０４が協働してバイパス制御部の機能を実現する。
【０２９２】
フリット選別部９０２によってバイパスバッファ６１２に振り分けられたトラヒックデータは、振分処理部１４０４に入力される。振分け処理部１４０４は、受け取ったトラヒックデータを、そのバースト性を示す情報に基づいて複数のバッファキューに振り分ける。なお、本実施形態では振分け処理部１４０４は、バイパスバッファ６１２の内部に設けられているが、外部に設けられていてもよい。また、バッファ部１４０５は、図４３に示す構成に限らず、バイパス先の他の中継器内に独立にバッファキューを設ける構成であってもよいし、バイパス先の他の中継器の入力バッファのバッファキューをバイパスされない他のトラヒックと共用する構成であってもよい。
【０２９３】
バースト性の高いトラヒックでは、トラヒックデータの最大振幅値は大きく、パケットの送信間隔や送信周期は短い。そのため、バーストトラヒックが伝送されると、トラヒック干渉が生じやすく、伝送遅延を引き起こす可能性が高い。そこで、本実施形態の中継器は、バイパストラヒックのバースト性に着目して複数のバッファキューへの割当を適切に行うことにより、トラヒック干渉を抑制する。トラヒック特性に関する情報は、自中継器で計測してもよいし、図３４に示す各情報のようにバスマスタからの送信時にヘッダフリットに記述しておき、自中継器で解釈してもよい。
【０２９４】
バースト性を示す情報は、例えば単位時間当たりの伝送量、送信周期、送信間隔、連続して伝送されるパケット数、および遅延時間の少なくとも１つであり得る。また、バースト性を示す情報は、データの許容スループット、許容遅延時間の少なくとも１つであってもよい。許容スループットは、単位時間当たりの伝送量、送信周期、送信間隔、連続して伝送されるパケット数とも表現され、設計時に、バスマスタ毎に設計要求値として満たさなければならない値として定義される。許容遅延時間も、中継遅延や処理遅延なども含めた、伝送路の片道または往復の伝送遅延時間として表現され、バスマスタ毎に設計要求値として満たさなければならない値として定義される。
【０２９５】
前述のように、データの単位時間当たりの伝送量が予め定められた閾値よりも多い場合、データの送信周期が予め定められた閾値よりも短い場合、およびデータの送信間隔が予め定められた閾値よりも短い場合、連続して伝送されるパケット数が予め定められた閾値よりも大きい場合、データの許容遅延時間が予め定められた閾値よりも短い場合の少なくとも１つの場合に、当該データはバースト性を有すると判定することができる。バースト性があるデータが送信されるケースには、例えば、映像、音声や制御データなどのように、許容遅延時間が小さいデータがパケット化されて、多くの連続したパケットとして、同一のバスマスタから送信されるケースがある。
【０２９６】
バスマスタが送信するデータのバースト性の有無は、上記の判断基準に基づいて、図４に示すバスマスタ側のＮＩＣ６２０ａによって判断され、ヘッダフリットにバースト性の有無を示す情報を付与して宛先へ伝送することができる。これにより、ヘッダフリット解釈部９０１はヘッダフリットの内容に基づいてバースト性の有無を判断することができるため、各中継器にてバースト性の有無に応じた中継処理を行うことが可能になる。
【０２９７】
バースト性を示す情報は、必ずしも許容スループットや許容遅延時間を表す情報としてデータとともに送信する必要はない。例えば、バースト性を示す識別子、データの優先度、送信ノードを特定できる識別子のいずれかの表現形態で、データとともに伝送してもよい。例えば、データの優先度を特異な値（例えば高い値）に設定を行って区別したり、バースト性のあるトラヒックを送信する送信ノード（バスマスタ）を特定する識別子を付与することによって区別してもよい。本実施形態では、バースト性を示す情報の表現方法は特定の方法に限定はされない。
【０２９８】
バイパスバッファ送信管理部９０３は、トラヒックデータの伝送に残された時間を計算する残り時間計算部１４０１と、計算した残り時間からバッファ部１４０５の各バッファキューからのトラヒックデータの送信頻度を計算する送信頻度計算部１４０２と、計算した送信頻度から、バッファ部１４０５の各バッファキューからの送信間隔を制御する送信間隔制御部１４０３とを有している。本実施形態では、バイパスバッファ送信管理部９０３が、本発明における送信管理部および計測部の機能を有している。バイパスバッファ送信管理部９０３における各部の具体的な動作については、後述する。
【０２９９】
＜１．３．２．バッファキューへのトラヒックの割当動作＞
図４４は、複数のバッファキューへのデータの割当動作を示すフロー図である。振分け処理部１４０４は、受け取ったトラヒックデータのバースト性に基づいて当該データをバッファ部１４０５の各バッファキューに振り分ける。
【０３００】
まずステップＳ１４０１において、振分け処理部１４０４は、バイパスされたトラヒックがバースト性の強いトラヒック（バーストトラヒック）であるか否かを判断する。バースト性が強いか否かは、ヘッダフリット解釈部９０１によって解析されたヘッダフリットの情報（図３５）、またはトラヒックの最大振幅値等の計測結果に基づいて判断される。ヘッダフリットの情報を利用する場合、振分け処理部１４０４は、ヘッダフリット解釈部９０１による解釈結果に基づいて判断すればよい。一方、計測結果を利用する場合、例えば、バイパスバッファ送信管理部９０３が、トラヒックの振幅（単位時間あたりの送信データ量）、送信周期、送信間隔等を計測し、その結果を振分け処理部１４０４が受け取るように構成されていればよい。あるいは、振分処理部１４０４自身がこれらの計測機能を備えていてもよい。振分処理部１４０４は、予め設定された閾値と計測結果とを比較し、その結果に基づいて受信したトラヒックがバーストトラヒックであるか否かを判断するように構成すればよい。
【０３０１】
当該トラヒックがバーストトラヒックではないと判断された場合、ステップＳ１４０５に進み、振分け処理部１４０４は、バーストトラヒック向けに割り当てられていないバッファキューに当該データを割り当てる。一方、バースト性が強いトラヒックがバイパスされた場合、ステップＳ１４０２に進み、振分け処理部１４０４は、受信したバーストトラヒックが新たに受信したバーストトラヒックであるか否かを判断する。当該トラヒックが既に受信済みのバーストトラヒックである場合、ステップＳ１４０３に進み、過去に割り当てたバッファキューに当該トラヒックを割り当てる。受信したバーストトラヒックが新たに受信したバーストトラヒックである場合、ステップＳ１４０６に進む。
【０３０２】
バッファキューへのトラヒックの割当ては、例えば以下のように管理される。振分け処理部１４０４は、どのバーストトラヒックをどのバッファキューに割当てたかを示すバッファキューリスト（データ格納部利用情報）を保有している。図４４（ａ）は、ある時点におけるバッファキューリストの内容の例を示している。バッファキューリストによって、トラヒックのフローＩＤと割当先バッファキューとの対応付けが管理される。バッファキューリストを参照することにより、振分け処理部１４０４は、当該トラヒックが新たに受信したバーストトラヒックであるか否かを判断する。また、バッファキューリストには、最終受信時刻を示す情報も登録される。最終受信時刻は、後述するようにバッファキューリストを解放する動作のために用いられる。なお、図４４（ａ）に示すバッファキューリストの例では、基準時刻からの相対時間で最終受信時刻が表されているが、最終受信時刻の表現形式はどのような形式であってもよい。
【０３０３】
ステップＳ１４０６において、振分け処理部１４０４は、受信した新たなトラヒックに空きのバッファキューを割り当て、バッファキューリストへの登録を新たに行う。なお、全てのバッファキューが割り当て済みの場合は、バッファキューの空きができるまで前段の隣接中継器で待ち状態となるように各中継器を構成してもよい。
【０３０４】
Ｓ１４０３、Ｓ１４０５、Ｓ１４０６のいずれかのステップにおいて、受信したトラヒックのバッファキューへの割当が完了すると、ステップＳ１４０７に進み、トラヒックを受信した時刻がバッファキューリストに登録または更新される。その後、ステップＳ１４０８において、各バーストトラヒックの送信が停止しているか否かが判断される。具体的には、予め決められた期間伝送されていないバーストトラヒックが存在するか否かをバッファキューリストに登録された各フローの最終送信時刻と現在時刻とを比較して判断する。最終受信時刻が予め定められた閾値より前（例えば、現時刻より１万サイクル以上前）であるトラヒックがバッファキューリストに存在すれば、そのバーストトラヒックは送信が停止していると判断される。その場合、ステップＳ１４０９において、振分け処理部１４０４は、他のトラヒックのために伝送が停止していると判断したバーストラヒックに割り当てられていたバッファキューを解放する。具体的には、バッファキューリストから停止しているトラヒックに該当するフローの情報を削除する。予め決められた期間伝送されていないバーストトラヒックが存在しない場合、どのバーストトラヒックも送信が停止していないと判断され、バッファキューは解放されることなく処理が終了する。
【０３０５】
なお、上記の説明では、各中継器が自律的にバッファキューを解放するものとしたが、バッファキューの解放動作は上記の例に限られるものではない。例えば、送信側のＮＩＣまたはバスマスタが、対象とするバーストトラヒックの送信が終了したことを各中継器に通知し、通知を受信した各中継器がバッファキューリストから対象となるフローを削除する方式であってもよい。
【０３０６】
また、トラヒックのバースト性の有無の判断は、上記の例に限らず、例えば設計時に他のトラヒックへの影響を加味してバースト性の有無が決定されていてもよい。例えば、音声データのようにトラヒックデータの最大振幅値は小さいが、パケットの送信間隔や送信周期が短いトラヒックについてはバーストトラヒックであるものとして上記の処理を適用してもよい。さらに、トラヒックの振幅などのトラヒック特性を示す情報を送信しなくても、バーストトラヒックを区別できる方法であればどのような方法であってもよい。例えば、バーストトラヒックであることを示すビットフラグや優先度を示す情報をヘッダフリットに付与し、その値に基づいてバーストトラヒックであるか否かを区別できるようにしてもよい。
【０３０７】
以上の構成によれば、従来のラウンドロビン方式のように、全てのバッファキューにバーストパケットを順次割当てていく従来のアルゴリズムを用いた構成とは異なり、バーストラヒックによる影響を特定のバッファキューに限定することができる。その結果、バーストトラヒックが混雑に遭遇して伝送遅延が上昇した場合でも、システム全体の伝送遅延の上昇を抑制することが可能となる。また、本実施形態によれば、従来方式とは異なり、バッファキューの定常的な確保を行わずに、バーストトラヒックが流れている時だけ占有的に特定のバッファキューを確保し、流れが止まればバッファキューを開放する。このため、バッファキューの利用効率は高まり、システムの伝送効率は向上する。
【０３０８】
＜１．３．３．バイパスバッファ送信管理部の動作＞
次に、バイパスバッファ送信管理部９０３の動作を説明する。図４５は、バイパスバッファ送信管理部９０３の動作の流れを示すフロー図である。バイパスバッファ送信管理部９０３は、中継対象となるトラヒックの伝送について許容できる残された時間に基づいて、バイパスバッファ６１２の各バッファキューからの送信スケジューリングを行う。
【０３０９】
バイパスバッファ送信管理部９０３は、複数のバッファキューに互いに異なるトラヒックデータが格納されている場合に、どのバッファキューからデータを送信させるかを決定する。バイパスバッファ送信管理部９０３は、例えば、トラヒックデータの優先度や緊急度を示す情報に基づいて、データを出力させるバッファキューを選択するとともに、各バッファキューからのデータの出力順序を決定する。バイパスバッファ送信管理部９０３は、バースト性の強いトラヒックから順に出力させてもよい。以下の説明では、各データの許容できる残り時間に基づいてデータの出力順序が決定される例を説明する。
【０３１０】
前述したように、バイパスバッファ６１２は、複数のバッファキューを有しており、トラヒックデータは、一旦、バイパスバッファ６１２の各バッファキューに蓄えられる。バイパスバッファ６１２において、トラヒックデータは、宛先に到着するまでの残り時間に基づき、送信スケジュールが調整された上で出力バッファ６０６へ送信される。送信スケジュール調整の具体的な手順について、以下に示す。
【０３１１】
図４３に示す残り時間計算部１４０１は、バイパスバッファ６１２に格納された各トラヒックデータのフロー伝送について、許容できる残り時間を求める（Ｓ１５０１）。残り時間は、例えば以下のいずれかの方法で求められる。
（１）残り時間  ＝ 締切時刻  −  現在時刻、
（２）残り時間  ＝ 許容遅延時間  −  （滞在時間＋中継遅延×中継回数）
【０３１２】
ここで、締切時刻および滞在時間（バイパスバッファの各バッファキューでの滞在時間）は、図３５に示すヘッダフリットの要素である。現在時刻は、自中継器がトラヒックデータを受信した時刻である。許容遅延時間は、送受信ノード間で定義するアプリケーションで許容できる最大遅延時間である。許容遅延時間は、ヘッダフリットに記述してもよいし、設計時に各中継器で定義、登録しておいてもよい。また、中継遅延は、中継する毎に必要となる中継処理により生じる遅延時間である。具体的には、固定値（例えば４サイクル）が１つの中継器あたりの中継遅延として設定され得る。これらの情報から上記（１）、（２）のいずれかの式を用いて残り時間が計算される。式（２）における滞在時間は、上述のように、当該フリットが自中継器に到達するまでに経由した各中継器のバイパスバッファの各バッファキューで生じる遅延時間の累積を表す。中継遅延×中継回数は、自中継器から目的地である受信ノードまで入力バッファを介した通常処理によって伝送する場合の遅延時間（転送処理およびバッファキューでの待ち合わせ時間の合計）を表している。滞在時間と（中継遅延×中継回数）との和を、送信ノードから受信ノードまで伝送される間に中継処理によって生じる遅延と定義している。なお、自中継器から受信ノードまでの中継回数は、送信ノードから送信ノードまでに通過する中継器の個数から、ヘッダフリットに記述された通過した中継回数を減算することにより求められる。
【０３１３】
上記の式（１）、（２）の代わりに、上記式（１）または（２）を用いて計算した残り時間からパケット長によって決まる所定の時間を減算した値を残り時間としてもよい。これにより、長いパケットと短いパケットとが混在しても、より正確な残り時間を求めることが可能となる。
【０３１４】
次に、送信頻度計算部１４０２は、バッファキュー毎の残り時間（Tｎ）に基づき、送信頻度（Wｎ）を計算する（Ｓ１５０２）。ここで、ｎはバッファキューの番号である。バイパスバッファ６１２が４つのバッファキューを有する場合、Ｗｎを求める計算式は、例えば以下の式（３）のように定義すればよい。
（３）  Wｎ＝  １−Tｎ／（T1＋T2＋T3＋T4）
このように定義すれば、残り時間の少ないバッファキューほど送信頻度が高くなる。
【０３１５】
また、バッファキュー１からバッファキュー４までの全送信時間をLとする。バッファキュー１からバッファキュー４までの伝送処理に必要な時間を１サイクルとして、１サイクルで各バッファキューの送信に割当てる送信時間Ｆｎを次の式（４）で定義する。
（４）  Fｎ＝L ×  Wｎ
送信間隔制御部１４０３は、上記の式（４）に基づき、バッファキュー１から順に、割当時間Fｎを計算し、各バッファキュー内のデータを割当時間Fｎの間送信する（Ｓ１５０３）。
【０３１６】
本実施形態では、予め決められた時間内にデータ伝送を完了させるという性能保証の観点から、上記のスケジューリングが行われる。他のスケジューリングの方法として、図３５に示す評価項目のいずれかに着目してスケジューリングしてもよい。具体的には、締切時間が短い順、バイパスバッファ滞在時間の長い順、中継回数の多い順に送信してもよい。そのような方法によってもフロー間の伝送遅延のバラツキを解消することができる。また、締切時間、滞在時間、中継回数を上記のＴｎの代わりに置き換えて、トラヒック毎の送信時間を求めてもよい。但し、締切時間を用いる場合は、前述したように、現在時刻からの差をとり、残り時間として評価する。
【０３１７】
図４６は、フリット選別部９０２による選択基準を動的に補正する方法を説明するための図である。図４６は、自中継器だけではなく、他の中継器のバイパスバッファでの待ち時間を用いて、残り時間を算出することで、中継器間の混雑の偏りを加味して残り時間を算出する方法を示している。
【０３１８】
まず、図４５に示す例と同様に、バッファに格納されたフロー伝送について許容できる残り時間を求める（Ｓ１６０１）。次に、隣接の中継器のバッファの負荷値を収集し、残り時間に反映する（Ｓ１６０２）。具体的には、隣接の中継器のバイパスバッファの待ち時間に関する情報を収集し、その平均値を隣接の中継器のバッファの負荷値とする。すると、隣接の中継器のバッファの負荷値は次の式（５）で表される。
（５）  隣接の中継器のバッファの負荷値
＝Σ  隣接の負荷値／収集した中継器数
【０３１９】
また、図４６に示す例で求めた残り時間を、残り時間（反映前）とする。残り時間（反映前）に、自中継器の負荷値と隣接の中継器の負荷値との差分を自中継器の負荷値で正規化した値の和を求め、隣接の中継器数で割り、平均する。その値に残り時間（反映前）を掛け合わせて、システム全体の負荷量を加味した残り時間（反映後）を算出する。すると、残り時間（反映後）は、次の式（６）で表される。
（６）  残り時間（反映後）
＝残り時間（反映前）
＋残り時間（反映前）×Σ（自中継器の負荷値−隣接の中継器の負荷値）／（自中継器の負荷値×隣接の中継器数）
【０３２０】
ここで、他の中継器から収集する負荷値情報としては、バッファでの待ち時間の代わりに、バッファの空き容量や使用量を用いてもよい。バイパスバッファの待ち時間は、平均値又は、ピーク値で情報を収集すればよい。また、上記の説明では、隣接の中継器から負荷情報を収集することとしたが、隣接しない他の中継器から負荷情報を収集してもよい。
【０３２１】
図４７は、負荷値情報の配信例を説明するための図である。ここでは、説明のため、バタフライ網によるシステム構成を想定する。各中継器は、接続されている各中継器に自らのバイパスバッファの待ち時間の情報（自中継器の負荷値）を通知する。通知間隔は、一定であってもよいし、自中継器の負荷の大きさに基づいて通知間隔を決定してもよい。自中継器の負荷が高い場合は、システム全体でのバイパスバッファの負荷量が高くなっていると判断し、通知間隔を短くしてもよい。一方、自中継器の負荷が低い場合は、通知によるオーバーヘッドを抑えるために、通知間隔を長くしてもよい。
【０３２２】
また、通知範囲についても、自中継器の負荷が高い場合は、システム全体でのバイパスバッファの負荷量を早く低下させるために広範囲に通知するように設計されていることが好ましい。一方、自中継器の負荷が低い場合は、通知によるオーバーヘッドを抑えるために、通知範囲を小さくすることが好ましい。通知範囲の指定方法は、例えば、通知を送出する中継器が通知対象の中継器数をヘッダフリットに記述し、中継器を通過する毎に中継器数の値を減算することによって実現できる。
【０３２３】
さらに、通知方向としては、送信元であるバスマスタ側や、送信先であるメモリ側に限定することで、負荷値の高い中継器との間で、効率的にメッセージを通知することが可能となるため、通知メッセージの効率的な削減が可能となる。
【０３２４】
上記の例では、自中継器から他中継器にメッセージを通知する方法を示したが、自中継器から他中継器に負荷状態を収集する形式であってもよい。他中継器のバッファの負荷値を収集し、自中継器でのトラヒックの許容残り時間を、収集した負荷値を用いて補正することで、中継器間の混雑の偏りが減少し、システム全体の伝送性能向上が期待できる。これにより、スループットや、低遅延伝送の実現が期待できる。
【０３２５】
以上の説明では、中継器６００の各構成要素は、ブロック化された個別の機能部として表されているが、これらの機能部の処理を規定するプログラムを中継器６００に実装されたプロセッサ（コンピュータ）に実行させることによって中継器６００の動作が実現されていてもよい。そのようなプログラムの処理手順は、例えば図４２、４４、４５、４６のフローチャートに記載されているとおりである。
【０３２６】
＜２．変形例＞
＜２．１．出力バッファを設けない構成＞
本実施形態でも、中継器６００ｂは出力バッファ６０６を備えていなくてもよい。図３９に示すように、中継器６００ｂが出力バッファ６０６を備えておらず、クロスバスイッチ６０５の出力が後段の隣接中継器６００ｃのバッファ選択部６０３ｃに入力される構成を採用してもよい。このような構成によれば、メモリ量を抑えることができるため、例えば組込用途に有効である。
【０３２７】
＜２．２．外部配線＞
また、本実施形態においても、図４０に示すように、中継器６００ｂの外部にバイパストラヒックを伝送するように配線（外部配線）が設けられていてもよい。内部配線による構成では、中継器毎にバイパス処理が閉じているため、中継器の処理モジュールとしての再利用性は高い。すなわち、個々の中継器を１つの部品として交換することが容易となる。しかし、宛先までの中継器を全て中継する必要があるため、処理のオーバーヘッドが生じやすい。逆に、外部配線による構成では、内部配線による場合に比べて、中継器の処理モジュールとしての再利用性は低い。しかし、宛先までの中継器を全て中継する必要がないため、処理のオーバーヘッドを低減させることができる。
【０３２８】
＜２．３．バイパスバッファを設けない構成＞
本実施形態では、各中継器はバイパスバッファ６１２を備えていることとしたが、バイパスバッファ６１２は必須の構成要素ではない。バイパスバッファ６１２を設けない場合、バイパス先の中継器における入力バッファにバイパストラヒックのためのバッファキューを設けるように構成されていればよい。図４８Ａ〜４８Ｃは、バイパスバッファ６１２を設ける場合の概略構成および設けない場合の概略構成を示す図である。
【０３２９】
図４８Ａは、上記の説明で前提としたバイパスバッファ６１２を各中継器が個別に備えている場合における、バイパス経路ＢＰを介して互いに接続された２つの中継器６００−１、６００−２の概略構成を示している。図中において、中継器６００−１の構成要素には参照符号に「−１」を付し、中継器６００−２の構成要素には参照符号に「−２」を付している。上述したように、バイパストラヒックは、自中継器６００−１のバイパスバッファ６１２−１のバッファキューに格納された後、転送先の中継器６００−２に入力される。
【０３３０】
図４８Ｂは、バイパスバッファ６１２を設けずに、中継器６００−２の入力バッファ６０４−２をバイパストラヒックと非バイパストラヒックとが共用する場合の構成例を示している。この構成例では、自中継器６００−１でバイパス処理されたトラヒックは、転送先の中継器６００−２の入力バッファ６０４−２のバッファキューに格納される。このように、各中継器は、自中継器６００−１に出力バッファを設ける代わりにバイパス先の中継器６００−２の入力バッファを用いてもよい。
【０３３１】
図４８Ｃは、バイパストラヒックが格納されるバイパスバッファ６１２−１または入力バッファ６０４−２の構成を示す図である。図４８Ａに示す構成においては、上述のとおり、バイパスバッファ６１２−１内に振り分け処理部１４０４および複数のバッファキューを含むバッファ部１４０５が設けられる。一方、図４８Ｂの構成を採用する場合は、入力バッファ６０４−２内に振分け処理部１４０４および複数のバッファキューを含むバッファ部１４０５が設けられていれば、上述の振分処理を実現することができる。
【０３３２】
図４８Ａに示す構成の場合、中継器としての汎用性は高くなるが、バッファ使用量は高くなる。逆に、図４８Ｂに示す構成の場合、中継器としての汎用性は低くなるが、バッファ使用量は小さくできる。
【０３３３】
＜２．４．バイパス処理を行わない構成＞
以上の説明では、各中継器は、例えば図４２に示すバイパス判定処理により、一部のトラヒックを優先的に処理するバイパス処理を行うこととしたが、本実施形態の中継器は、必ずしもこのようなバイパス処理を行わなくてもよい。バイパス配線およびバイパスバッファ６１２を有しない一般的な中継器の構成を用いた場合であっても、受信したトラヒックのバースト性に基づいて特定のバッファキューに占有的にトラヒックを振り分けるように構成されていればよい。以下、上述の説明における振分け処理部１４０４および送信間隔制御部１４０３の処理を、バイパス配線およびバイパスバッファ６１２を有しない一般的な中継器に適用する例を説明する。
【０３３４】
一般的な中継器でも、図２９に示す構成と同様、ヘッダフリットを解析して出力ポートを決定するルーティング処理部６０７と、転送先の隣接中継器における入力バッファのバッファキュー（又は自中継器における出力バッファのバッファキュー）を決定するバッファアロケータ部６０８と、トラヒックデータを伝送するために対応付けが完了している組から１組を選ぶスイッチアロケータ部６０９とを備えている。また、隣接中継器６００ａから受信したデータを蓄える入力バッファ６０４と、隣接中継器６００ｃへデータを出力する出力ポート６１７とを備えている。ただし、バイパスバッファ６１２やバイパス配線ＢＰ１、ＢＰ２は備えていない。
【０３３５】
このような中継器において、上述の振分け処理およびスケジューリング処理を適用するには、以下のようにすればよい。まず、図４３に示す振分け処理部１４０４の機能を、図２９に示すバッファアロケータ部６０８に追加する。また、図４３に示す送信間隔制御部１４０３の機能を、図２９に示すスイッチアロケータ部６０９に追加する。バッファアロケータ部６０８により、図４６におけるステップＳ１６０２において求めたように、残り時間を求め、残り時間の小さい順に出力ポートとバッファキューとの対応付けを行ってもよい。また、スイッチアロケータ部６０９は、バースト性の強いトラヒックから順番に処理してもよい。
【０３３６】
図４９は、このような中継器における動作の一例を示すフロー図である。中継器６００ｂは、まず、隣接中継器６００ａからフリットを受信する（Ｓ１０１）。次に、ルーティング処理部６０７によりヘッダフリットを解析して出力ポート６１７を決定する（Ｓ１０２）。続いて、バッファアロケータ部６０８により、出力ポート６１７と転送先の隣接中継器６００ｃの入力バッファのバッファキュー（または自中継器６００ｂの出力バッファ６０６のバッファキュー）との対応付けを決定する（Ｓ１０３）。バッファキューの割当方法としては、図４４を参照して説明したように、バーストトラヒックに対して占有的に特定のバッファキューを割当てる方法を用いる。次に、スイッチアロケータ部６０９により、トラヒックデータを伝送するために対応付けが完了している組から１組を選ぶ（Ｓ１０４）。選択方法として、バースト性の高いトラヒックほど優先的に選択してもよい。また、別の方法としては、図４５を参照して説明したように、許容できる残り時間に基づいて送信する１組を選択してもよい。さらに、ヘッダフリットに付与された締切時間、滞在時間、中継回数等の情報を用いて送信する１組を選択してもよい。最後に、選択したバッファキューからデータがフリット単位またはパケット単位で伝送される（Ｓ１０５）。
【０３３７】
次に図５０を参照する。図５０は、複数の中継器６００ａ〜６００ｄを介して、メモリＭに複数のバスマスタＢＭ１〜ＢＭ４が接続された具体例を示す。ここでは、バースト性のあるトラヒック毎に伝送経路上の各中継器に専用のバッファ（入力バッファ６０４）を割当てることにより、バイパス経路を設定することを想定する。バスマスタからメモリまでの伝送経路上にある各中継器によって割当てられる入力バッファ６０４のバッファキューがバイパス経路に対応する。
【０３３８】
図５０に示す構成例では、４つのバスマスタ、すなわち、バーストトラヒックＴＢを伝送するバスマスタＢＭ１、高優先度のトラヒックＴＨを伝送するバスマスタＢＭ２およびＢＭ３、低優先度のトラヒックＴＬを伝送するバスマスタＢＭ４が設けられている。各中継器の入力バッファ６０４は、バーストトラヒック向けのバッファキュー５００１と、高優先度トラヒック向けのバッファキュー５００２と、低優先度向けトラヒックのバッファキュー５００３とを備える。なお、この例ではバーストトラヒックは１種類であるが、バーストトラヒックが複数ある場合は、バーストトラヒック向けのバッファキューを複数個、独立に各中継器に設けてもよいし、複数のバーストトラヒックで１つのバッファキューを共有してもよい。また、複数のバーストトラヒック間でのトラヒック干渉を抑えるために、物理的に独立した伝送路を用意して伝送経路を構築してもよい。
【０３３９】
各中継器では、優先度の最も高いバーストトラヒックから順に、バースト、高優先度、低優先度の順にバッファキューを割当てる。具体的な入力バッファ６０４の割当は、図３０を参照しながら説明した転送先の隣接中継器の入力バッファのバッファキュー（または自中継器の出力バッファのバッファキュー）を決定する処理（ＶＡ）であり、前述の優先度に基づいてバッファアロケータ部６０８にて実行される。
【０３４０】
これらのバッファキューは、プライオリティーキュー／プライオリティ・スケジューリングに基づいて構成され、高優先度のバッファキューのデータが優先的に伝送され、低優先度のバッファキューのデータは高優先度のバッファキューにデータが存在する際にはデータ伝送はできない。具体的なデータ伝送手順は、図３０を参照しながら説明したトラヒックデータを伝送するために対応付けが完了している組から１組を選ぶ処理（ＳＡ）であり、前述の優先度に基づいてスイッチアロケータ部６０９にて実行される。
【０３４１】
バーストトラヒックＴＢは、メモリＭまでの各中継器のバッファキューにおいて、最も優先的に割当てられ、最も優先的にメモリまで伝送される。一方、バーストトラヒックＴＢよりも優先度の低い高優先度トラヒックＴＨおよび低優先度トラヒックＴＬについては、上記のプライオリティ・スケジューリングに基づき、バーストトラヒックＴＢの伝送が完了するまで伝送が抑制される。この状態は、具体的には、図３０を参照しながら説明したバッファアロケータ部６０８による転送先の中継器への入力バッファの割当要求の発行の際に、転送先の中継器からバッファ割当を拒否されるケースに対応する。
【０３４２】
図５０に示す例では、中継器６００ｃのバーストトラヒック用のバッファキュー５００１からデータを伝送する際には、高優先度と低優先度のトラヒックの伝送は抑制される。また、高優先度のバッファキュー５００２および低優先度のバッファキュー５００３が一杯の場合は、直前の中継器や、データの送信元である中継器またはバスマスタへ順次、データ伝送を抑制するように伝えてもよい。データ伝送の抑制を通知された中継器やバスマスタは、データ送信の停止や、データの流量を絞ったり、データ伝送の宛先メモリを変更することによって混雑の解消を図ることができる。この状態は、上記のように、バッファアロケータ部６０８による転送先の中継器への入力バッファの割当要求の発行の際に、転送先の中継器からバッファ割当を拒否されるケースに対応する。
【０３４３】
バースト性のあるトラヒックであるか否かは、例えば、パケットが有する時間に関する情報に基づいて得られる許容残り時間、中継処理の優先度、およびバースト性を示す情報の少なくとも一つに基づいて判断することができる。各中継器が解釈するパケット情報としては、上述のように、バースト性を示す識別子、データの優先度、バーストトラヒックを送信する送信ノードを特定できる識別子（設計時に決まる）として表現される。
【０３４４】
また、バースト性を示す特徴は、単位時間当たりの伝送量、送信周期、送信間隔、連続して伝送されるパケット数、および遅延時間の少なくとも１つに基づいて決めることもできる。具体的には、上述のように、バースト性があるデータは、データの単位時間当たりの伝送量が予め定められた閾値よりも多い場合、データの送信周期が予め定められた閾値よりも短い場合、およびデータの送信間隔が予め定められた閾値よりも短い場合、連続して伝送されるパケット数が予め定めた閾値よりも大きい場合、データの許容遅延時間が予め定められた閾値よりも短い場合の少なくとも１つの場合として特徴づけできる。さらに、バースト性を示す情報は、設計時の要求仕様として、各バスマスタのデータの許容スループットや、許容遅延時間を用いて表現することもできる。
【０３４５】
次に、バッファアロケータ部６０８の入力バッファの確保の動作として発生するトラヒックのフロー制御（送信元の中継器が、データ転送前に送信先の中継器のバッファ確保の可否を通知する処理）と、バイパス伝送が行われていることを示す通知機能との関係を説明する。バースト性のあるトラヒックが、メモリＭの直前にある中継器６００ｃからメモリＭに転送されている間に、その影響により、前述のように中継器６００ｃにおいてバースト性のないトラヒックの伝送がブロックされる場合を想定する。この場合、中継器６００ｃでは、バースト性のないトラヒック向けのバッファ確保ができない。この状況で、バスマスタ側に近い中継器６００ｂ（または中継器６００ｄ）が、バースト性のないトラヒックを転送時に、メモリの直前にある中継器６００ｃにバッファ確保の可否を問い合わせた場合を考える。この場合、バッファの確保ができないことが、中継器６００ｃからバスマスタ側に近い中継器６００ｂ（または中継器６００ｄ）に通知されるトラヒックのフロー制御の通知処理の際に通知される。この通知処理は、メモリの直前にある中継器６００ｃからバスマスタ側に近い中継器６００ｂ（または中継器６００ｄ）へ、中継器６００ｃにおいてバイパス伝送が行われていることを示す通知処理と同じことを意味している。すなわち、実施形態１において説明したとおり、フロー制御の通知処理とバーストトラヒックによって伝送できないことを示す情報の通知（広義のバイパス通知）とを兼用することが可能である。なお、バーストトラヒックの伝送中（またはバイパスする伝送経路の使用中）は、バースト性のないトラヒックデータの伝送はブロックされる。このため、図５０の構成では、中継器６００ｃは、バースト性のないトラヒックデータに対するフロー制御の結果（バースト性がないトラヒック向けのバッファキューが確保できないことを示す通知）を、データの送信元である中継器やバスマスタへ順次、データ伝送を抑制するように伝える。最終的に、バスマスタにおいてバースト性のないトラヒックデータの送信量や送信の停止/中断を行うか否かの判断を行うことができる。中継器６００ｄおよび中継器６００ｃにおける上記の機能は、一般的にはＤＲＡＭやＳＲＡＭなどのメモリを制御するメモリコントローラの処理の一部として実現してもよい。
【０３４６】
なお、隣接する中継器間のトラヒックのフロー制御は、転送元の中継器のバッファアロケータ部６０８から転送先の中継器のバッファアロケータ部６０８に入力バッファの割当要求を発行し、転送先の中継器のバッファアロケータ部６０８から転送元の中継器のバッファアロケータ部６０８へ、転送先の中継器での入力バッファの割当の可否を返信することにより、実現できる。また、中継器間のトラヒックの伝送量は、例えば、入力バッファの割当要求や入力バッファの割当の可否の通知のタイミングで調整され得る。
【０３４７】
以上の処理により、バイパス配線を設けない中継器でも、トラヒック特性に応じたバッファキューの利用、およびパケット伝送の許容時間を加味した伝送が可能となる。なお、このような中継器においても、フリット選別部９０２による選択基準を動的に補正する方法を適用してもよい。また、バーストトラヒックの種類（例えば、音声、映像、送信ノードと受信ノードとの対応関係）を区別して、出力ポートと転送先の中継器のバッファキューとを対応付けてもよいし、区別せずに出力ポートと転送先の中継器の特定のバッファキューとを対応付けてもよい。
【０３４８】
＜２．５．他のトポロジ＞
以上の説明では、集積回路のトポロジが多段接続網の場合（図３）を例に説明したが、本実施形態の中継器６００も、多段接続網での利用に限定されるものではない。例えば、図１２（ｂ）に示すような、中継器を格子状に並べたメッシュ型のトポロジ、図２２Ａに示すようなトーラス型のトポロジ、図２２Ｂに示すような、バスを階層的に接続したトポロジであってもよい。複数のバスマスタを分散型のバスを介して接続したトポロジであれば、同様に本実施形態の中継器の適用が可能である。
【０３４９】
（利用例１）
以下、上記の各実施形態による中継器の実際の機器への利用例を説明する。図５１は、半導体回路上の複数のバスマスタと複数のメモリおよび外部とデータを通信するための共用の入出力ポート（Ｉ／Ｏポート）とを分散型のバスを利用して接続した例を示している。このような半導体回路は、例えば、携帯電話、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）、電子書籍リーダーなどの携帯端末や、ＴＶ、ビデオレコーダ、ビデオカメラ、監視カメラ等の機器で用いられ得る。バスマスタは、例えば、ＣＵＰ、ＤＳＰ、伝送処理部、画像処理部などである。メモリは、揮発性のＤＲＡＭであってもよいし、不揮発性のフラッシュメモリであってもよい。また、揮発性メモリおよび不揮発性メモリが混在していてもよい。入出力ポートは、外付けのハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）、ＤＶＤドライブのような記録装置に接続するためのＵＳＢやイーサネット（登録商標）などの通信インターフェースであり得る。
【０３５０】
複数の映像や音楽などの再生、記録、トランスコード、および書籍、写真、地図データ等の閲覧や編集、ゲームのプレイなど、複数のアプリケーションやサービスを同時に利用する場合、各バスマスタからメモリへのアクセスが増える。このため、メモリの数が１つしかない場合、アクセスが１箇所に集中してしまう。これを解決するためには、メモリ側の入出力の伝送帯域を広げる必要があり、コストが高くなってしまう。
【０３５１】
メモリアクセスの集中を回避する方法として、アプリケーションやサービス等の種類によってバスマスタが利用するメモリを物理的に分ける方法や、外付けのＨＤＤなどの外部の記録装置を利用する方法を適用することにより、これらのバスマスタとメモリとを分散型のバスで接続させることが有効である。
【０３５２】
しかし、例えば、あるバスマスタが、映像データを保存するためにメモリＡに対して高いレートでデータパケットを送信した場合、伝送経路上のバッファが全てメモリＡ宛のパケットで占有される頻度が多くなる。その結果、他のメモリへデータが流れにくくなり、他のアプリケーションやサービスの性能が低下したり、処理時間が増加してしまう。この問題は、各中継器が送られてきたデータパケットの順序を単純に維持したまま中継することにより発生する。
【０３５３】
これに対し、本発明の実施形態による中継器を用いた場合には、緊急度や重要度の高いパケットは優先的に伝送されるため、特定のメモリに向かうパケットによるバッファの占有が回避される。これにより、アプリケーションやサービスで重要となるデータを締切時刻までに伝送することが可能となる。その結果、アプリケーションやサービスのユーザ応答性の確保や、映像・音声の品質確保などが可能となる。さらに、優先度の低いデータに対しても、優先度の高いデータとのトラヒックの干渉を抑えることが可能となるため、システム全体の伝送効率が改善するとともに、省電力化も期待できる。特に、設計時の想定以上にデータ伝送の遅延が発生した場合に、緊急的に重要なデータを優先的に伝送できるため、システムが想定外に過負荷になった場合の対処方法としても有効である。
【０３５４】
（利用例２）
次に、上記の各実施形態による中継器のマルチコアプロセッサ（ｍｕｌｔｉ−ｃｏｒｅ  ｐｒｏｃｅｓｓｏｒ）への利用例を説明する。
【０３５５】
図５２は、ＣＰＵやＧＰＵ、ＤＳＰ等のコアプロセッサの処理能力を向上させるために、複数のコアプロセッサをメッシュ状に配列し、これらを分散バスで接続したマルチコアプロセッサを示している。この構成では、各コアプロセッサが本発明における第１ノードとして機能し得るし、第２ノードとしても機能し得る。
【０３５６】
マルチコアプロセッサ上では、各コアプロセッサ間で通信が行われる。例えば、各コアプロセッサには、演算処理に必要なデータを記憶しておくキャッシュメモリが備えられており、コアプロセッサ間で互いのキャッシュメモリの情報をやり取りすることができる。これによって情報の共有が可能となり、処理性能を向上させることができる。
【０３５７】
しかし、マルチコアプロセッサ上で発生するコアプロセッサ間の通信は、それぞれ位置関係や距離（中継ホップ数）、通信頻度が異なる。このため、データパケットの順序を単純に維持したまま中継すると、バッファが全て特定のコアプロセッサ宛のパケットにより占有されパケットデータが流れにくい中継器が発生する。その結果、マルチコアプロセッサの性能の低下や、処理時間の増加を引き起こす。
【０３５８】
これに対し、上記の各実施形態による中継器を用いた場合には、緊急度や重要度の高いパケットは優先的に伝送されるため、特定のメモリに向うパケットによるバッファの占有が回避される。そのため、重要なデータを締切時刻までに伝送することが可能となる。同様に、アプリケーションやサービスのユーザ応答性の確保や映像・音声の品質確保などが可能となる。また、優先度の低いデータ伝送に対しても、トラヒック干渉を抑えることが可能となるため、システム全体の伝送効率の改善が可能となるとともに、省電力化も期待できる。特に、設計時に想定していた以上にデータ伝送で遅延が発生した場合に、緊急的に重要なデータを優先的に伝送できるため、システムが想定外に過負荷になった場合の対処方法としても有効である。
【０３５９】
（利用例３）
上述の実施形態および利用例では、本願発明がチップ上で実装された際の構成を説明した。本願発明は、チップ上に実装されるだけでなく、チップ上に実装するための設計及び検証を行うシミュレーションプログラムとしても実施され得る。そのようなシミュレーションプログラムは、コンピュータによって実行される。例えば図５Ａ、５Ｂに示される各構成要素は、シミュレーションプログラム上のオブジェクト化されたクラスとして実装される。各クラスは、予め定められたシミュレーションシナリオを読み込むことにより、各構成要素に対応する動作をコンピュータ上で実現する。言い換えると、各構成要素に対応する動作は、コンピュータの処理ステップとして直列的または並列的に実行される。
【０３６０】
中継器として実装されたクラスは、シミュレータで定義されたシミュレーションシナリオを読み込むことにより、優先度閾値、締切時刻、トラヒック閾値、バッファ閾値等の条件を決定する。また、他の中継器のクラスから送信されるパケットの送信タイミング、送信先、優先度、経時情報等の条件を決定する。
【０３６１】
バイパス配線を備えた中継器として実装されたクラスは、個々のシミュレーションシナリオにおいて、他の中継器のクラスからデータの入力を受け、そのデータがバイパスすべきデータか否かに応じて、バイパス処理および通常処理のいずれかを選択的に実行する。バイパス処理を実行する場合には、上記の実施形態１のように、トラヒック状態やバッファ状態に応じて他の中継器のクラスに対してバイパス通知パケットを通知してもよい。
【０３６２】
バイパス通知パケットが通知された中継器のクラスは、出力バッファまたは後段の隣接中継器における入力バッファの使用状況などの、バイパストラヒックと合流する中継器の伝送状態に基づいて流量の調整や伝送経路の変更を行うことによって伝送負荷の低減を図る。また、バイパス通知パケットの中継回数が規定値以下の場合、さらに他の中継器のクラスにバイパス通知パケットを通知する。
【０３６３】
また、バイパス配線を備えていない中継器として実装されたクラスは、個々のシミュレーションシナリオにおいて、高優先度トラヒック伝送時に、出力バッファまたは後段の隣接中継器における入力バッファの使用状況などの、バイパストラヒックと合流する中継器における伝送状態に基づいて低優先度トラヒックに対して流量の調整や経路の変更を行う。
【０３６４】
中継器として実装されたクラスは、シミュレーションシナリオに記述されたシミュレーションの終了条件が成立する迄の間、動作を行う。動作中のスループットやレイテンシ、バスの流量の変動の様子、動作周波数、消費電力の見積値等を算出しプログラムの利用者に提供する。これらに基づき、プログラムの利用者はトポロジや性能の評価を行い、設計及び検証を行う。
【０３６５】
シミュレーションシナリオの各行には、例えば、送信元ノードのＩＤ、宛先ノードのＩＤ、送信するパケットのサイズ、送信するタイミング等の情報が記述されるのが普通である。また複数のシミュレーションシナリオをバッチ処理的に評価することで、想定した全てのシナリオで所望の性能が保証できているか否かを効率的に検証できる。またバスのトポロジやノード数、送信ノード、中継器、宛先ノードの配置を変化させて性能比較することにより、シミュレーションシナリオに最も適したネットワーク構成を特定することもできる。上記の実施形態のいずれもが本態様の設計及び検証ツールとしても適用可能である。このように、本願発明は、設計及び検証ツールとして実施される際にも適用可能である。
【０３６６】
以上の各実施形態における中継器を実際の機器に適用する際には、各実施形態の処理を単独で適用する場合に限らず、これらを複合的に組み合わせてもよい。例えば、実施形態３におけるデータのバースト性に基づくバイパス処理の有無の判定処理を行うとともに、実施形態１におけるバイパス通知や非バイパストラヒックに対する伝送制御を行うように中継器を構成してもよい。また、実施形態４におけるデータのバースト性に基づくバッファキューの割当て処理を行うとともに、実施形態１におけるバイパス通知や非バイパストラヒックに対する伝送制御を行うようにしてもよい。それ以外にも、例えば実施形態２の処理と実施形態３または実施形態４の処理とを組み合わせてもよい。このように、上記の各実施形態における処理を可能な範囲で組み合わせることができる。これらの実施形態の処理を複合的に組み合わせることにより、相乗的な効果が期待できる。
【産業上の利用可能性】
【０３６７】
本発明に係る中継器は、システムＬＳＩなどのデータ伝送システム上のデータ伝送に利用できる。
【符号の説明】
【０３６８】
１ａ、１ｂ  バスマスタ
５    メモリ
１０  第１ノード
２０  第２ノード
５０ａ、５０ｂ  バイパス経路
１０１  バスマスタ
１０５  メモリ
２００  バイパス制御部
３００  バイパス
３５０  非バイパス
４００  入力部
５００  パケット
５０１  ヘッダフィールド
５０２  データフィールド
５０３  制御コードフィールド
５０４  ヘッダフリット
５０５  データフリット
５０６  テイルフリット
６００、６００ａ、６００ｂ、６００ｃ、６００ｄ  中継器
６０３、６０３ｃ  バッファ選択部
６０４、６０４ｃ  入力バッファ
６０５  クロスバスイッチ
６０６  出力バッファ
６０７  ルーティング処理部
６０８  バッファアロケータ
６０９  スイッチアロケータ
ＢＰ、ＢＰ１、ＢＰ２、ＢＰ３、ＢＰ４  バイパス配線
６１５  入力ポート
６１７  出力ポート
６２０ａ、６２０ｃ  ＮＩＣ
６３０  メモリコントローラ
７００ａ、７００ｂ、７００ｃ  中継器
７０４  入力バッファ
７０５  クロスバスイッチ
７０６  出力バッファ
７０７  ルーティング処理部
７０８  バッファアロケータ
７０９  スイッチアロケータ
７１０  出力制御部
７１５  入力ポート
７１７  出力ポート
９０１  ヘッダフリット解釈部
９０２  フリット選別部
９０３  優先度閾値
９０４  締切時刻
９０５  バッファ閾値
９０７  トラヒック閾値
１００１  バイパス通知判定部
１００２  バッファ使用量計測部
１００３  高優先度トラヒック計測部
１１００  バイパス通知パケット
１１０１  送信元
１１０２  送信先
１１０３  識別子
１１０４  中継回数
１３００１  バイパストラヒック
１３００２、１３００３  非バイパストラヒック
１３００４  中継器
２３００１  高優先度トラヒック
２３００２、２３００３  低優先度トラヒック
２３００４  中継器
【図１Ａ】
2012132264.tif 000003
【図１Ｂ】
2012132264.tif 000004
【図２】
2012132264.tif 000005
【図３】
2012132264.tif 000006
【図４】
2012132264.tif 000007
【図５Ａ】
2012132264.tif 000008
【図５Ｂ】
2012132264.tif 000009
【図６】
2012132264.tif 000010
【図７】
2012132264.tif 000011
【図８】
2012132264.tif 000012
【図９Ａ】
2012132264.tif 000013
【図９Ｂ】
2012132264.tif 000014
【図１０】
2012132264.tif 000015
【図１１】
2012132264.tif 000016
【図１２】
2012132264.tif 000017
【図１３Ａ】
2012132264.tif 000018
【図１３Ｂ】
2012132264.tif 000019
【図１４】
2012132264.tif 000020
【図１５Ａ】
2012132264.tif 000021
【図１５Ｂ】
2012132264.tif 000022
【図１５Ｃ】
2012132264.tif 000023
【図１６】
2012132264.tif 000024
【図１７Ａ】
2012132264.tif 000025
【図１７Ｂ】
2012132264.tif 000026
【図１８Ａ】
2012132264.tif 000027
【図１８Ｂ】
2012132264.tif 000028
【図１９Ａ】
2012132264.tif 000029
【図１９Ｂ】
2012132264.tif 000030
【図２０】
2012132264.tif 000031
【図２１Ａ】
2012132264.tif 000032
【図２１Ｂ】
2012132264.tif 000033
【図２１Ｃ】
2012132264.tif 000034
【図２２Ａ】
2012132264.tif 000035
【図２２Ｂ】
2012132264.tif 000036
【図２３】
2012132264.tif 000037
【図２４Ａ】
2012132264.tif 000038
【図２４Ｂ】
2012132264.tif 000039
【図２５Ａ】
2012132264.tif 000040
【図２５Ｂ】
2012132264.tif 000041
【図２６Ａ】
2012132264.tif 000042
【図２６Ｂ】
2012132264.tif 000043
【図２７】
2012132264.tif 000044
【図２８Ａ】
2012132264.tif 000045
【図２８Ｂ】
2012132264.tif 000046
【図２９】
2012132264.tif 000047
【図３０】
2012132264.tif 000048
【図３１】
2012132264.tif 000049
【図３２】
2012132264.tif 000050
【図３３】
2012132264.tif 000051
【図３４】
2012132264.tif 000052
【図３５】
2012132264.tif 000053
【図３６】
2012132264.tif 000054
【図３７】
2012132264.tif 000055
【図３８】
2012132264.tif 000056
【図３９】
2012132264.tif 000057
【図４０】
2012132264.tif 000058
【図４１Ａ】
2012132264.tif 000059
【図４１Ｂ】
2012132264.tif 000060
【図４２】
2012132264.tif 000061
【図４３】
2012132264.tif 000062
【図４４】
2012132264.tif 000063
【図４５】
2012132264.tif 000064
【図４６】
2012132264.tif 000065
【図４７】
2012132264.tif 000066
【図４８Ａ】
2012132264.tif 000067
【図４８Ｂ】
2012132264.tif 000068
【図４８Ｃ】
2012132264.tif 000069
【図４９】
2012132264.tif 000070
【図５０】
2012132264.tif 000071
【図５１】
2012132264.tif 000072
【図５２】
2012132264.tif 000073
【図５３Ａ】
2012132264.tif 000074
【図５３Ｂ】
2012132264.tif 000075
【図５４】
2012132264.tif 000076
【図５５】
2012132264.tif 000077
【図５６】
2012132264.tif 000078
【手続補正書】
【提出日】平成24年10月9日(2012.10.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器であって、
データを受け取る入力部と、
前記入力部が受け取った前記データを格納するための複数のデータ格納部を有するバッファ部と、
前記バッファ部に格納された前記データを出力する出力部と、
前記入力部が受け取った前記データのバースト性を示す情報に基づいて、前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定する振分け処理部と、
を備え、
前記振分け処理部は、前記複数のデータ格納部の各々がどのデータによって利用されているかを示すデータ格納部利用情報を有し、前記入力部が受け取った前記データを前記特定のデータ格納部に格納する場合に、前記情報を更新する、
中継器。
【請求項２】
前記バースト性を示す情報は、単位時間当たりの伝送量、送信周期、送信間隔、連続して伝送されるパケット数、遅延時間、前記データの許容スループット、許容遅延時間、バースト性を示す識別子、前記データの優先度、前記データの種類を示す識別子、および前記第１ノードを特定する識別子の少なくとも１つである、請求項１に記載の中継器。
【請求項３】
前記振分け処理部は、前記データの単位時間当たりの伝送量が予め定められた閾値よりも多い場合、前記データの送信周期が予め定められた閾値よりも短い場合、前記データの送信間隔が予め定められた閾値よりも短い場合、連続して伝送されるパケット数が予め定められた閾値よりも大きい場合、および前記データの許容遅延時間が予め定められた閾値よりも短い場合の少なくとも１つの場合に、前記データを前記バッファ部における予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における予め確保された特定のデータ格納部に格納する、請求項１に記載の中継器。
【請求項４】
前記バースト性を示す情報を計測する計測部をさらに備えている、請求項１から３のいずれかに記載の中継器。
【請求項５】
前記バースト性を示す情報は、前記データに予め付与されている、請求項１から４のいずれかに記載の中継器。
【請求項６】
前記振分処理部は、前記特定のデータ格納部に格納された前記データの送信完了後、予め定められた時間が経過したとき、前記データ格納部利用情報から前記データに関する情報を削除する、請求項１から５のいずれかに記載の中継器。
【請求項７】
前記入力部が受け取ったデータを優先的に処理するバイパス処理を行うか否かを判定し、前記バイパス処理を行うと判定した場合に、前記データを前記バッファ部に送るバイパス判定部をさらに備えている、請求項１から６のいずれかに記載の中継器。
【請求項８】
前記出力部は、複数の出力ポートを含み、
前記入力部が受け取った前記データを解析することにより、前記複数の出力ポートの中から前記データを出力する１つの出力ポートを決定するルーティング処理部をさらに備えている、
請求項１から７のいずれかに記載の中継器。
【請求項９】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器であって、
データを受け取る入力部と、
前記入力部が受け取った前記データを格納するための複数のデータ格納部を有するバッファ部と、
前記バッファ部に格納された前記データを出力する出力部と、
前記入力部が受け取った前記データのバースト性を示す情報に基づいて、前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定する振分け処理部と、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定する送信管理部と、
を備え、
前記送信管理部は、各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定し、
前記送信管理部は、前記各データのデータ長に基づいて各データの前記許容残り時間を補正する、
中継器。
【請求項１０】
前記送信管理部は、各データに付与された優先度または緊急度を示す情報に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択する、請求項９に記載の中継器。
【請求項１１】
前記送信管理部は、各データに付与された締切時間、中継回数、および前記データが自中継器より前に経由した他の中継器におけるバイパスバッファでの待ち時間の少なくとも１つの情報に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択する、請求項１０に記載の中継器。
【請求項１２】
前記送信管理部は、各データに付与された締切時間、中継回数、および前記データが自中継器より前に経由した他の中継器におけるバイパスバッファでの待ち時間の少なくとも１つの情報に基づいて、前記複数のデータ格納部からのデータの出力順序を決定する、請求項１１に記載の中継器。
【請求項１３】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器であって、
データを受け取る入力部と、
前記入力部が受け取った前記データを格納するための複数のデータ格納部を有するバッファ部と、
前記バッファ部に格納された前記データを出力する出力部と、
前記入力部が受け取った前記データのバースト性を示す情報に基づいて、前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定する振分け処理部と、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定する送信管理部と、
を備え、
前記送信管理部は、各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定し、
前記送信管理部は、少なくとも１つの他の中継器におけるバッファ部の負荷を示す情報を収集し、前記情報に基づいて、各データの前記許容残り時間を補正する、
中継器。
【請求項１４】
前記バッファ部の負荷を示す情報は、前記バッファにおけるデータの待ち時間、前記バッファの空き容量、および前記バッファの使用量の少なくとも１つである、請求項１３に記載の中継器。
【請求項１５】
前記送信管理部は、前記複数のデータ格納部に格納されたデータのうち、バースト性が最も高いと判断されたデータが格納されているデータ格納部から前記データを出力させる、請求項１３または１４に記載の中継器。
【請求項１６】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御方法であって、
データを受け取るステップと、
受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、
受け取った前記データを前記特定のデータ格納部に格納する場合に、前記複数のデータ格納部の各々がどのデータによって利用されているかを示すデータ格納部利用情報を更新するステップと、
を含む制御方法。
【請求項１７】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御方法であって、
データを受け取るステップと、
受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
前記各データのデータ長に基づいて各データの前記許容残り時間を補正するステップと、
を含む制御方法。
【請求項１８】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御方法であって、
データを受け取るステップと、
受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
少なくとも１つの他の中継器におけるバッファ部の負荷を示す情報を収集し、前記情報に基づいて、各データの前記許容残り時間を補正するステップと、
を含む制御方法。
【請求項１９】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御プログラムであって、
前記制御プログラムは、前記中継器に実装されたコンピュータに対し、
データを受け取るステップと、
受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、
受け取った前記データを前記特定のデータ格納部に格納する場合に、前記複数のデータ格納部の各々がどのデータによって利用されているかを示すデータ格納部利用情報を更新するステップと、
を実行させる、制御プログラム。
【請求項２０】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御プログラムであって、
前記制御プログラムは、前記中継器に実装されたコンピュータに対し、
データを受け取るステップと、
受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
前記各データのデータ長に基づいて各データの前記許容残り時間を補正するステップと、
を実行させる、制御プログラム。
【請求項２１】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御プログラムであって、
前記制御プログラムは、前記中継器に実装されたコンピュータに対し、
データを受け取るステップと、
受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
少なくとも１つの他の中継器におけるバッファ部の負荷を示す情報を収集し、前記情報に基づいて、各データの前記許容残り時間を補正するステップと、
を実行させる、制御プログラム。
【請求項２２】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器のためのシミュレーションプログラムであって、
前記シミュレーションプログラムは、コンピュータに対し、
データを受け取るステップと、
受け取った前記データを複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、
受け取った前記データを前記特定のデータ格納部に格納する場合に、前記複数のデータ格納部の各々がどのデータによって利用されているかを示すデータ格納部利用情報を更新するステップと、
を実行させる、シミュレーションプログラム。
【請求項２３】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器のためのシミュレーションプログラムであって、
前記シミュレーションプログラムは、コンピュータに対し、
データを受け取るステップと、
受け取った前記データを複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
前記各データのデータ長に基づいて各データの前記許容残り時間を補正するステップと、
を実行させる、シミュレーションプログラム。
【請求項２４】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器のためのシミュレーションプログラムであって、
前記シミュレーションプログラムは、コンピュータに対し、
データを受け取るステップと、
受け取った前記データを複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
少なくとも１つの他の中継器におけるバッファ部の負荷を示す情報を収集し、前記情報に基づいて、各データの前記許容残り時間を補正するステップと、
を実行させる、シミュレーションプログラム。
【手続補正書】
【提出日】平成25年3月11日(2013.3.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器であって、
データを受け取る入力部と、
前記入力部が受け取った前記データを格納するための複数のデータ格納部を有するバッファ部と、
前記バッファ部に格納された前記データを出力する出力部と、
前記入力部が受け取った前記データのバースト性を示す情報に基づいて、前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定する振分け処理部と、
を備え、
前記振分け処理部は、前記複数のデータ格納部の各々がどのデータによって利用されているかを示すデータ格納部利用情報を有し、前記入力部が受け取った前記データを前記特定のデータ格納部に格納する場合に、前記情報を更新する、
中継器。
【請求項２】
前記バースト性を示す情報は、単位時間当たりの伝送量、送信周期、送信間隔、連続して伝送されるパケット数、遅延時間、前記データの許容スループット、許容遅延時間、バースト性を示す識別子、前記データの優先度、前記データの種類を示す識別子、および前記第１ノードを特定する識別子の少なくとも１つである、請求項１に記載の中継器。
【請求項３】
前記振分け処理部は、前記データの単位時間当たりの伝送量が予め定められた閾値よりも多い場合、前記データの送信周期が予め定められた閾値よりも短い場合、前記データの送信間隔が予め定められた閾値よりも短い場合、連続して伝送されるパケット数が予め定められた閾値よりも大きい場合、および前記データの許容遅延時間が予め定められた閾値よりも短い場合の少なくとも１つの場合に、前記データを前記バッファ部における予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における予め確保された特定のデータ格納部に格納する、請求項１に記載の中継器。
【請求項４】
前記バースト性を示す情報を計測する計測部をさらに備えている、請求項１から３のいずれかに記載の中継器。
【請求項５】
前記バースト性を示す情報は、前記データに予め付与されている、請求項１から４のいずれかに記載の中継器。
【請求項６】
前記振分処理部は、前記特定のデータ格納部に格納された前記データの送信完了後、予め定められた時間が経過したとき、前記データ格納部利用情報から前記データに関する情報を削除する、請求項１から５のいずれかに記載の中継器。
【請求項７】
前記入力部が受け取ったデータを優先的に処理するバイパス処理を行うか否かを判定し、前記バイパス処理を行うと判定した場合に、前記データを前記バッファ部に送るバイパス判定部をさらに備えている、請求項１から６のいずれかに記載の中継器。
【請求項８】
前記出力部は、複数の出力ポートを含み、
前記入力部が受け取った前記データを解析することにより、前記複数の出力ポートの中から前記データを出力する１つの出力ポートを決定するルーティング処理部をさらに備えている、
請求項１から７のいずれかに記載の中継器。
【請求項９】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器であって、
データを受け取る入力部と、
前記入力部が受け取った前記データを格納するための複数のデータ格納部を有するバッファ部と、
前記バッファ部に格納された前記データを出力する出力部と、
前記入力部が受け取った前記データのバースト性を示す情報に基づいて、前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定する振分け処理部と、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定する送信管理部と、
を備え、
前記送信管理部は、各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定し、
前記送信管理部は、前記各データのデータ長に基づいて各データの前記許容残り時間を補正する、
中継器。
【請求項１０】
前記送信管理部は、各データに付与された優先度または緊急度を示す情報に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択する、請求項９に記載の中継器。
【請求項１１】
前記送信管理部は、各データに付与された締切時間、中継回数、および前記データが自中継器より前に経由した他の中継器におけるバイパスバッファでの待ち時間の少なくとも１つの情報に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択する、請求項１０に記載の中継器。
【請求項１２】
前記送信管理部は、各データに付与された締切時間、中継回数、および前記データが自中継器より前に経由した他の中継器におけるバイパスバッファでの待ち時間の少なくとも１つの情報に基づいて、前記複数のデータ格納部からのデータの出力順序を決定する、請求項１１に記載の中継器。
【請求項１３】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器であって、
データを受け取る入力部と、
前記入力部が受け取った前記データを格納するための複数のデータ格納部を有するバッファ部と、
前記バッファ部に格納された前記データを出力する出力部と、
前記入力部が受け取った前記データのバースト性を示す情報に基づいて、前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定する振分け処理部と、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定する送信管理部と、
を備え、
前記送信管理部は、各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定し、
前記送信管理部は、少なくとも１つの他の中継器におけるバッファ部の負荷を示す情報を収集し、前記情報に基づいて、各データの前記許容残り時間を補正する、
中継器。
【請求項１４】
前記バッファ部の負荷を示す情報は、前記バッファにおけるデータの待ち時間、前記バッファの空き容量、および前記バッファの使用量の少なくとも１つである、請求項１３に記載の中継器。
【請求項１５】
前記送信管理部は、前記複数のデータ格納部に格納されたデータのうち、バースト性が最も高いと判断されたデータが格納されているデータ格納部から前記データを出力させる、請求項１３または１４に記載の中継器。
【請求項１６】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御方法であって、
データを受け取るステップと、
受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
受け取った前記データを前記特定のデータ格納部に格納する場合に、前記複数のデータ格納部の各々がどのデータによって利用されているかを示すデータ格納部利用情報を更新するステップと、
を含む制御方法。
【請求項１７】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御方法であって、
データを受け取るステップと、
受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
前記各データのデータ長に基づいて各データの前記許容残り時間を補正するステップと、
を含む制御方法。
【請求項１８】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御方法であって、
データを受け取るステップと、
受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
少なくとも１つの他の中継器におけるバッファ部の負荷を示す情報を収集し、前記情報に基づいて、各データの前記許容残り時間を補正するステップと、
を含む制御方法。
【請求項１９】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御プログラムであって、
前記制御プログラムは、前記中継器に実装されたコンピュータに対し、
データを受け取るステップと、
受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
受け取った前記データを前記特定のデータ格納部に格納する場合に、前記複数のデータ格納部の各々がどのデータによって利用されているかを示すデータ格納部利用情報を更新するステップと、
を実行させる、制御プログラム。
【請求項２０】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御プログラムであって、
前記制御プログラムは、前記中継器に実装されたコンピュータに対し、
データを受け取るステップと、
受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
前記各データのデータ長に基づいて各データの前記許容残り時間を補正するステップと、
を実行させる、制御プログラム。
【請求項２１】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御プログラムであって、
前記制御プログラムは、前記中継器に実装されたコンピュータに対し、
データを受け取るステップと、
受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
少なくとも１つの他の中継器におけるバッファ部の負荷を示す情報を収集し、前記情報に基づいて、各データの前記許容残り時間を補正するステップと、
を実行させる、制御プログラム。
【請求項２２】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器のためのシミュレーションプログラムであって、
前記シミュレーションプログラムは、コンピュータに対し、
データを受け取るステップと、
受け取った前記データを複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
受け取った前記データを前記特定のデータ格納部に格納する場合に、前記複数のデータ格納部の各々がどのデータによって利用されているかを示すデータ格納部利用情報を更新するステップと、
を実行させる、シミュレーションプログラム。
【請求項２３】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器のためのシミュレーションプログラムであって、
前記シミュレーションプログラムは、コンピュータに対し、
データを受け取るステップと、
受け取った前記データを複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
前記各データのデータ長に基づいて各データの前記許容残り時間を補正するステップと、
を実行させる、シミュレーションプログラム。
【請求項２４】
データを送信する第１ノードと、前記第１ノードから送信された前記データを受信する第２ノードと、前記第１ノードおよび前記第２ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器のためのシミュレーションプログラムであって、
前記シミュレーションプログラムは、コンピュータに対し、
データを受け取るステップと、
受け取った前記データを複数のデータ格納部のいずれかに格納するステップと、
前記複数のデータ格納部に格納された前記データを出力するステップと、
受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる１つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
少なくとも１つの他の中継器におけるバッファ部の負荷を示す情報を収集し、前記情報に基づいて、各データの前記許容残り時間を補正するステップと、
を実行させる、シミュレーションプログラム。
【国際調査報告】
2012132264.tif 000079
2012132264.tif 000080
2012132264.tif 000081
2012132264.tif 000082