(57)【要約】  ＮｏＣバスで伝送される各トラヒックの異なる要求性能を、過剰に見積もることなく、性能保証に必要なバス帯域を求め、さらに余剰帯域の利用効率を大きくする。  ＮｏＣバスシステムでは、中継器を介して第１ノードおよび第２ノードの間でデータが伝送される。当該データは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含んでいる。第１ノードは、伝送されるデータ、および伝送されるデータの要求性能を識別するための識別情報を含むパケットを複数生成し、パケットの送信を制御する。中継器は、受信したパケットを、識別情報に基づいて要求性能ごとに分離して格納するバッファ部と、識別情報ごとに、識別情報に対応するすべての第１ノードの保証すべき送信レートの合計値以上の送信レートで、バッファ部に格納された各パケットの送信を制御する中継制御部とを備えている。
2014017069.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク化されたバスと、前記バスに配置された少なくとも１つの中継器とを介して第１ノードおよび少なくとも１つの第２ノードの間でデータを伝送する、半導体回路のバスシステムであって、
伝送されるデータは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含み、
前記第１ノードは、
伝送されるデータ、および伝送されるデータの要求性能を識別するための識別情報を含むパケットを複数生成するパケット生成部と、
前記パケットの送信を制御する送信制御部とを備え、
前記少なくとも１つの中継器は、
受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、
前記識別情報ごとに、識別情報に対応するすべての第１ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部と
を備えた、バスシステム。
【請求項２】
前記少なくとも１つの中継器は複数存在し、
複数の中継器は同一の動作周波数で動作し、かつ前記複数の中継器に備えられた各中継制御部は、同一の送信レートで前記各パケットの送信を制御しており、
前記同一の送信レートは、前記複数の中継器が保証すべき各送信レートのうちの最大の送信レート以上に設定されている、請求項１に記載のバスシステム。
【請求項３】
各性能保証データには、保証すべき送信レートが予め設定されており、
前記送信制御部は、前記性能保証データの保証すべき送信レートを超えた所定レートで、または送信レートに制限を設けることなく、前記性能保証データのパケットの送信を制御し、
前記少なくとも１つの中継器は、保証すべき前記送信レートを維持可能な第１の帯域、および余剰帯域である第２の帯域を利用して、保証すべき送信レートを超えたレートで前記性能保証データのパケットを伝送可能であり、
前記中継制御部は、前記バッファ部に格納された複数のパケットのうち、前記性能保証データの各パケットを、前記識別情報に基づいて、前記第１の帯域を利用して伝送するか、前記第１の帯域および前記第２の帯域を利用して伝送するかに分類し、前記第１の帯域を利用する各パケットを優先的に伝送する、請求項１に記載のバスシステム。
【請求項４】
前記伝送されるデータは、スループット及び許容遅延時間の両方を保証しない非性能保証データをさらに含み、
前記送信制御部は、送信レートに制限を設けることなく前記非性能保証データのパケットの送信を制御し、
前記バッファ部は、受信した前記非性能保証データのパケットをさらに分離して格納し、
前記中継制御部は、前記性能保証データのパケット、および前記非性能保証データのパケットの順に伝送する、請求項１に記載のバスシステム。
【請求項５】
前記パケット生成部は、前記パケットの締切時間に関する時間情報を前記パケットにさらに付与しており、
前記中継制御部は、同一の識別情報が付与されたパケットについては各パケットの前記締切時間に応じて伝送する順位を決定する、請求項１に記載のバスシステム。
【請求項６】
前記締切時間に関する時間情報は、前記パケットが前記少なくとも１つの第２ノードに到達すべき締切時間の情報、前記第１ノードが前記パケットを送信した時刻の情報、前記第１ノードおよび前記中継器の処理時間の累積値の情報、および前記パケットの前記第１ノードにおける送信順序を表す送信カウンタの値の情報のいずれかである、請求項５に記載のバスシステム。
【請求項７】
前記締切時間に関する時間情報が前記締切時間を示す場合、
前記中継制御部は、前記締切時間が早いパケットから優先して送信する、請求項６に記載のバスシステム。
【請求項８】
前記第１の帯域および前記第２の帯域を利用して伝送される各パケットに関し、
前記中継制御部および前記送信制御部は、保証すべき送信レートを超えたレートを、バスシステムのボトルネックとなるノードまたはリンクの処理能力に基づいて決定する、請求項３に記載のバスシステム。
【請求項９】
前記性能保証データは、バースト性のあるバーストデータ、および、バースト性のない非バーストデータを含んでおり、
前記パケット生成部が付与する前記識別情報は、前記バーストデータ、非バーストデータを識別可能であり、
前記少なくとも１つの中継器のバッファ部は、前記複数のバッファに、前記バーストデータ、非バーストデータを分離して格納し、
前記少なくとも１つの中継器の前記中継制御部は、前記バーストデータ、非バーストデータの順で、前記パケットを伝送する、請求項１に記載のバスシステム。
【請求項１０】
前記第１ノードの送信制御部は、前記バーストデータを予め定めた送信レートで送信し、
前記中継制御部は、少なくとも前記バーストデータを予め定めた送信レートで送信する、請求項９に記載のバスシステム。
【請求項１１】
前記少なくとも１つの第２ノードは複数存在しており、
前記少なくとも１つの中継器のバッファ部は、前記複数のバッファに、第２ノード毎のパケットを分離して格納する、請求項１に記載のバスシステム。
【請求項１２】
パケットには、コマンドを送るパケットとデータを送るパケットが存在しており、
前記中継制御部は、前記コマンドを送るパケットに対し送信レート制限を設けずに送信する、請求項１、２、３および８のいずれかに記載のバスシステム。
【請求項１３】
パケットには、コマンドを送るパケットとデータを送るパケットが存在しており、
前記少なくとも１つの中継器のバッファ部は、前記複数のバッファに、前記コマンドを送るパケットと、前記データを送るパケットとを分離して格納する、請求項１２に記載のバスシステム。
【請求項１４】
前記第１ノードのパケット生成部は、複数のパケットを多重化して伝送する、請求項２に記載のバスシステム。
【請求項１５】
多重化された前記パケットを送信する前記第１ノードおよび前記少なくとも１つの中継器は、多重化された前記パケットを個々のデータに復元するための分割位置を示す情報を伝送する信号線を備えた、請求項１４に記載のバスシステム。
【請求項１６】
半導体回路のバスシステムに設けられたネットワーク化されたバスに配置され、前記バスシステムの第１ノードおよび少なくとも１つの第２ノードの間で伝送されるデータを中継する中継器であって、
前記第１ノードは、伝送される前記データ、および伝送される前記データの要求性能を識別するための識別情報を含むパケットを複数生成して送信し、
伝送される前記データは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含んでおり、
受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、
前記識別情報ごとに、識別情報に対応するすべての第１ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部と
を備えた、中継器。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、半導体の集積回路に設けられた、ネットワーク化された通信バス（分散型バス）を備えるバスシステムにおいて、通信バスの制御を行うための技術に関する。
【背景技術】
【０００２】
ＮｏＣ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ）は、半導体の集積回路である半導体チップ上に設けられた、ネットワーク化された通信バスである。ＮｏＣでは、中継器（ルータ）でバスを接続し、複数のマスタから送信されるトラヒックを同じバスを共有して伝送する。これにより、バスの本数を削減し、バスを効率よく利用することが可能となる。【０００３】
ところが、ＮｏＣにおいては、バスを複数のマスタのトラヒックで共有するため、性能保証（スループット保証と遅延保証）が困難となる。【０００４】
複数のマスタは、独立して異なる性能を要求するトラヒックを流す。そのため、同じバスの中を、たとえば短い遅延時間で伝送したいトラヒック（遅延保証）、常に一定の伝送量を保証したいトラヒック（スループット保証）、および不定期に大容量のデータ通信を必要とするトラヒックが混在した状態で伝送される。【０００５】
ＮｏＣにおいては、最低限必要なバス帯域で、各トラヒックの要求性能（スループットおよび遅延時間の少なくとも一方）を満たすことを保証する、性能保証の仕組みの実現が必要である。ＮｏＣの性能保証が実現されると、バスをより効率よく利用すること、および要求性能を満たす必要最小限のバス帯域で設計することが可能になる。その結果、バスのハード設計と開発が容易となる。【０００６】
従来の中継器の中には、トラヒックの優先度を判断するものが存在する。この中継器は、バッファに優先度の高いトラヒックのデータが格納された場合、そのバッファを高優先に切り替えて伝送処理する。図１（Ａ）は、バッファ３０２〜３０４のうち、優先度の高いトラヒックが格納されているバッファ３０４および３０３のトラヒックのデータを先に出力する中継器３０１の構成例を示す。数字の値が大きいほど、優先度が高いとする。中継器３０１は、入力バッファの先頭のデータの優先度に応じて、出力するトラヒックのデータを決定する。【０００７】
しかしながらそのような中継器では、同一バッファ内に異なる優先度のトラヒックが混在する。その結果、高優先のトラヒックが低優先のトラヒックの干渉の影響を受けるという問題がある。【０００８】
たとえば特許文献１および非特許文献１は、そのような問題に対応するための技術を開示している。図１（Ｂ）は、図１（Ａ）の中継器３０１において、格納されたメッセージの中で最も高い優先度を用いて入力バッファの優先度を決定し、入力バッファの優先度に応じてデータを出力する構成例を示す。【０００９】
図示された例では、入力バッファ３０２には、優先度が３のメッセージと、優先度が１のメッセージとが格納されている。また、入力バッファ３０３には、優先度が２のメッセージと、優先度が１のメッセージとが格納されている。そして、入力バッファ３０４には、優先度が１のメッセージと、優先度が２のメッセージと、優先度が３のメッセージとが格納されている。【００１０】
各入力バッファの優先度は格納されているメッセージの最高の優先度を用いて決定される。そのため、入力バッファ３０２の優先度は３、入力バッファ３０３の優先度は２、入力バッファ３０４の優先度は３となる。その結果、送信されるメッセージは優先度の高い順、すなわち入力バッファ３０２と入力バッファ３０４の先頭に格納されたメッセージとなる。【００１１】
結果として、優先度が３のメッセージが入った入力バッファ３０２は、それより前に格納されているメッセージの優先度に依存することなく、優先的に伝送処理を進めることが可能になる。そして優先度の高いメッセージの遅延を、バッファの先方を低い優先度のメッセージが占めていても、小さくすることができる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】米国特許出願公開第２００５／０１１７５８９号明細書
【非特許文献】
【００１３】
【非特許文献１】Jean-Jacques Lecler、Gilles Baillieu 著、“Application Driven Network on Chip Architecture Exploration & Refinement for a Complex SoC”、Springer Verlag's Design Automation for Embedded Systems Journal, Volume 15, Number 2, pp.133-158
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ところが、従来技術の方式では、優先度の高いメッセージは、少なくともそれより前に格納された他のメッセージの伝送が完了されるまでは、伝送されなかった。そのため優先度の高いメッセージの中継器における遅延時間は、優先度の低いメッセージにより影響を受け、大きく設定されやすかった。【００１５】
このような条件下で性能を保証するためには、実際に必要な帯域よりも過剰に大きな帯域を用意しなければならない。また、バッファ内の高優先度と低優先度の割合で、必要な伝送帯域は異なってくる。
【課題を解決するための手段】
【００１６】
上記課題を解決するために、本発明の一態様は、ネットワーク化されたバスと、前記バスに配置された少なくとも１つの中継器とを介して第１ノードおよび少なくとも１つの第２ノードの間でデータを伝送する、半導体回路のバスシステムを含む。伝送されるデータは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含む。前記第１ノードは、伝送されるデータ、および伝送されるデータの要求性能を識別するための識別情報を含むパケットを複数生成するパケット生成部と、前記パケットの送信を制御する送信制御部とを備えている。前記少なくとも１つの中継器は、受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、前記識別情報ごとに、識別情報に対応するすべての第１ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部とを備えている。【００１７】
上述の一般的かつ特定の態様は、システム、方法およびコンピュータプログラムを用いて実装され、またはシステム、方法およびコンピュータプログラムの組み合わせを用いて実現され得る。
【発明の効果】
【００１８】
本発明のある実施形態にかかるバスシステムによれば、中継器において、要求性能に応じて伝送すべきデータを切り替えられるバッファ構成と、マスタと中継器における送信スケジューリングとによって、相互の干渉を抑制することができ、性能保証できるバス動作周波数を小さく見積もることができる。例えば、高優先の性能保証クラスのトラヒックが低優先の非性能保証クラスのトラヒックの干渉を受けずに伝送できることで、バス帯域を見積もる時に干渉するトラヒック量を減らすことができ、過剰に見積もることなく、小さいバス動作周波数で性能保証可能なバスを構築できる。またワースト見積もりによって発生するバスの余剰帯域を、マスタと中継器での送信スケジューリングによってできるだけ低減する、換言すればバスの余剰帯域の利用効率を大きくすることが可能になる。
【図面の簡単な説明】
【００１９】
【図１】（Ａ）は、バッファ３０２〜３０４のうち、優先度の高いトラヒックが格納されているバッファ３０４および３０３のトラヒックのデータを先に出力する中継器３０１の構成例を示す図であり、（Ｂ）は、図１（Ａ）の中継器３０１において、格納されたメッセージの中で最も高い優先度を用いて入力バッファの優先度を決定し、入力バッファの優先度に応じてデータを出力する構成例を示す図である。
【図２】性能保証クラス／非性能保証クラスに応じて適用される、本実施形態による処理のポリシーを示す図である。
【図３】本発明の一実施形態である中継器１０３によって構成されるＮｏＣの一例を示す図である。
【図４】ＮｏＣの構成要素の概念を示す図である。
【図５】図３のＮｏＣの構成を模式的に示す図である。
【図６】（Ａ）および（Ｂ）は、中継器ごとに設定される送信レート値の例を示す図である。
【図７】（Ａ）および（Ｂ）は、中継器１０３の構成をインターネットに適用した場合と、半導体のバスシステムに適用した場合の効果の違いを示す図である。
【図８】本発明のある実施形態にかかる中継器を備えるＮｏＣの動作を示すフローチャートである。
【図９】必要なバス動作周波数の見積もりを下げるために、少なくとも性能保証データと非性能保証データを区別可能なクラス分類規則の例を示す図である。
【図１０】マスタの発行するトラヒックの要求仕様の定義の具体例を示す図である。
【図１１】バスマスタ１０１ごとに分類されるクラスおよびその具体例を示す図である。
【図１２】マスタ側ＮＩＣ１０２の構成を示す図である。
【図１３】マスタ側ＮＩＣ１０２の動作フローを示す図である。
【図１４】パケット２０２のデータ構造を示す図である。
【図１５】マスタ側ＮＩＣ１０２に設けられるレート制御部８０４の構成を示す図である。
【図１６】レート値記憶部１００３が記憶するレート値を示す図である。
【図１７】レート制御部８０４の動作フローを示す図である。
【図１８】送信可否決定部１００１による送信可否の決定処理Ｓ１１０３の動作フローを示す図である。
【図１９】タイマー処理部１００２の動作フローを示す図である。
【図２０】マスタ側ＮＩＣ１０２と中継器１０３で行う一般的なフロー制御を説明する図である。
【図２１】（Ａ）および（Ｂ）は、フロー制御とレート制御の違いを示す図である。
【図２２】中継器１０３の構成を示す図である。
【図２３】クラス記憶部１４１１に記憶されるクラスの優先度情報を示す図である。
【図２４】中継器１０３の出力調停部１４１０が送信すべきバッファの優先順位を調停した結果の具体例である。
【図２５】中継器１０３の動作フローを示す図である。
【図２６】中継器１０３のクラス解析部１４０３の入出力関係を示す図である。
【図２７】中継器１０３のレート制御部１４０９の構成を示す図である。
【図２８】レート制御部１４０９の動作フローを示す図である。
【図２９】レート制御部１４０９の送信可否の決定処理の動作フローを示す図である。
【図３０】タイマー処理部の管理情報の具体例を示す図である。
【図３１】レート制御部１４０９のタイマー処理部２００２の動作フローを示す図である。
【図３２】レート制御値記憶部２００３がクラスごとに管理している送信レート値の一例を示す図である。
【図３３】出力調停部１４１０の動作フローを示す図である。
【図３４】出力調停部１４１０が送信すべき入力バッファ１４１５を調停する処理（Ｓ２８０５）のフローチャートを示す図である。
【図３５】中継器１０３のバッファ情報記憶部１４０７の管理情報の構成例を示す図である。
【図３６】（ａ）〜（ｃ）は、本発明の他の実施形態として適用できるＮｏＣ網の例を示す図である。
【図３７】コマンドとデータを分離した場合のバッファ構成の例を示す図である。
【図３８】コマンドとデータを分離した場合の効果として、コマンドに対する遅延を短縮できることを示す図である。
【図３９】パケットを多重化して伝送する方法の概要を示す図である。
【図４０】（Ａ）および（Ｂ）は、パケット多重化の有無に応じたパケット伝送例を示す図である。
【図４１】パケット多重化のためのパケット２０２の構成を示す図である。
【図４２】パケット多重化のためのマスタ側ＮＩＣ１０２の動作フローを示す図である。
【図４３】パケット多重化のためのスレーブ側ＮＩＣ１０４の構成を示す図である。
【図４４】パケット多重化のためのスレーブ側ＮＩＣ１０４の動作フローを示す図である。
【図４５】半導体回路上の複数のマスタと複数のメモリおよび外部とデータを通信するための共用の入出力ポート（Ｉ／Ｏポート）とを分散型のバスを利用して接続した例を示す図である。
【図４６】ＣＰＵやＧＰＵ，ＤＳＰ等のコアプロセッサの処理能力を向上させるために、複数のコアプロセッサをメッシュ状に配列し、これらを分散バスで接続したマルチコアプロセッサを示す図である。
【図４７】（ａ）〜（ｃ）は、それぞれ、遅延保証クラスの優先度に関連する分類の例を示す。
【発明を実施するための形態】
【００２０】
本発明の例示的な実施形態は、バスを流れる個々のトラヒックの要求性能に対し、過剰な見積もりにならないバス帯域を求める。その上で、ワーストケースで見積もられたことで発生するバスの余剰帯域をできるだけ低減する。
【００２１】
本開示の例示的な実施形態を説明する前に、本願明細書で使用する用語を説明する。なお、以下の用語以外にも、実施形態の説明中で用語を適宜説明している。
【００２２】
「バースト性を有する」とは、たとえばバスマスタがトラヒックの通信データを連続的に送信しつつ、それらのトラヒックの許容遅延時間が短く、もしくは要求帯域が大きいことを指す。例えば、バースト性を有するバスマスタが送信する通信データには、映像系のデータが分類される。バースト性を有しない遅延保証クラスの通信データにはＵＳＢのデータが分類される。バースト性があるかないかは、設計者の観点で決定される。
【００２３】
「非性能保証データ」とは、スループットおよび遅延の両方を保証しなくてよいデータである。
【００２４】
「要求帯域」とは、スループット保証によって保証されるトラヒックの単位時間あたりの伝送量のことである。
【００２５】
トラヒックの「締切時刻」とは、トラヒックの伝送を開始したバスマスタによって指定される、宛先（スレーブ）に到着する時刻を表す。
【００２６】
たとえば本発明の例示的な実施形態によれば、以下のバスシステムおよび中継器を得ることができる。
【００２７】
すなわちある実施形態によれば、半導体回路のバスシステムは、ネットワーク化されたバスと、前記バスに配置された少なくとも１つの中継器とを介して第１ノードおよび少なくとも１つの第２ノードの間でデータを伝送する、半導体回路のバスシステムであって、伝送されるデータは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含み、前記第１ノードは、伝送されるデータ、および伝送されるデータの要求性能を識別するための識別情報を含むパケットを複数生成するパケット生成部と、前記パケットの送信を制御する送信制御部とを備え、前記少なくとも１つの中継器は、受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、前記識別情報ごとに、識別情報に対応するすべての第１ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部とを備えている。
【００２８】
ある実施形態において、前記少なくとも１つの中継器は複数存在し、複数の中継器は同一の動作周波数で動作し、かつ前記複数の中継器に備えられた各中継制御部は、同一の送信レートで前記各パケットの送信を制御しており、前記同一の送信レートは、前記複数の中継器が保証すべき各送信レートのうちの最大の送信レート以上に設定されている。
【００２９】
ある実施形態において、各性能保証データには、保証すべき送信レートが予め設定されており、前記送信制御部は、前記性能保証データの保証すべき送信レートを超えた所定レートで、または送信レートに制限を設けることなく、前記性能保証データのパケットの送信を制御し、前記少なくとも１つの中継器は、保証すべき前記送信レートを維持可能な第１の帯域、および余剰帯域である第２の帯域を利用して、保証すべき送信レートを超えたレートで前記性能保証データのパケットを伝送可能であり、前記中継制御部は、前記バッファ部に格納された複数のパケットのうち、前記性能保証データの各パケットを、前記識別情報に基づいて、前記第１の帯域を利用して伝送するか、前記第１の帯域および前記第２の帯域を利用して伝送するかに分類し、前記第１の帯域を利用する各パケットを優先的に伝送する。
【００３０】
ある実施形態において、前記伝送されるデータは、スループット及び許容遅延時間の両方を保証しない非性能保証データをさらに含み、前記送信制御部は、送信レートに制限を設けることなく前記非性能保証データのパケットの送信を制御し、前記バッファ部は、受信した前記非性能保証データのパケットをさらに分離して格納し、前記中継制御部は、前記性能保証データのパケット、および前記非性能保証データのパケットの順に伝送する。
【００３１】
ある実施形態において、前記パケット生成部は、前記パケットの締切時間に関する時間情報を前記パケットにさらに付与しており、前記中継制御部は、同一の識別情報が付与されたパケットについては各パケットの前記締切時間に応じて伝送する順位を決定する。
【００３２】
ある実施形態において、前記締切時間に関する時間情報は、前記パケットが前記少なくとも１つの第２ノードに到達すべき締切時間の情報、前記第１ノードが前記パケットを送信した時刻の情報、前記第１ノードおよび前記中継器の処理時間の累積値の情報、および前記パケットの前記第１ノードにおける送信順序を表す送信カウンタの値の情報のいずれかである。
【００３３】
ある実施形態において、前記締切時間に関する時間情報は、前記パケットが前記少なくとも１つの第２ノードに到達すべき締切時間の情報、前記第１ノードが前記パケットを送信した時刻の情報、前記第１ノードおよび前記中継器の処理時間の累積値の情報、および前記パケットの前記第１ノードにおける送信順序を表す送信カウンタの値の情報のいずれかである。
【００３４】
ある実施形態において、前記締切時間に関する時間情報が前記締切時間を示す場合、前記中継制御部は、前記締切時間が早いパケットから優先して送信する。
【００３５】
ある実施形態において、前記第１の帯域および前記第２の帯域を利用して伝送される各パケットに関し、前記中継制御部および前記送信制御部は、保証すべき送信レートを超えたレートを、バスシステムのボトルネックとなるノードまたはリンクの処理能力に基づいて決定する。
【００３６】
ある実施形態において、前記性能保証データは、バースト性のあるバーストデータ、および、バースト性のない非バーストデータを含んでおり、前記パケット生成部が付与する前記識別情報は、前記バーストデータ、非バーストデータを識別可能であり、前記少なくとも１つの中継器のバッファ部は、前記複数のバッファに、前記バーストデータ、非バーストデータを分離して格納し、前記少なくとも１つの中継器の前記中継制御部は、前記バーストデータ、非バーストデータの順で、前記パケットを伝送する。
【００３７】
ある実施形態において、前記第１ノードの送信制御部は、前記バーストデータを予め定めた送信レートで送信し、前記中継制御部は、少なくとも前記バーストデータを予め定めた送信レートで送信する。
【００３８】
ある実施形態において、前記少なくとも１つの第２ノードは複数存在しており、前記少なくとも１つの中継器のバッファ部は、前記複数のバッファに、第２ノード毎のパケットを分離して格納する。
【００３９】
ある実施形態において、パケットには、コマンドを送るパケットとデータを送るパケットが存在しており、前記中継制御部は、前記コマンドを送るパケットに対し送信レート制限を設けずに送信する。
【００４０】
ある実施形態において、パケットには、コマンドを送るパケットとデータを送るパケットが存在しており、前記少なくとも１つの中継器のバッファ部は、前記複数のバッファに、前記コマンドを送るパケットと、前記データを送るパケットとを分離して格納する。
【００４１】
ある実施形態において、前記第１ノードのパケット生成部は、複数のパケットを多重化して伝送する。
【００４２】
ある実施形態において、多重化された前記パケットを送信する前記第１ノードおよび前記少なくとも１つの中継器は、多重化された前記パケットを個々のデータに復元するための分割位置を示す情報を伝送する信号線を備えている。
【００４３】
本発明の他の実施形態にかかる中継器は、半導体回路のバスシステムに設けられたネットワーク化されたバスに配置され、前記バスシステムの第１ノードおよび少なくとも１つの第２ノードの間で伝送されるデータを中継する中継器であって、前記第１ノードは、伝送される前記データ、および伝送される前記データの要求性能を識別するための識別情報を含むパケットを複数生成して送信し、伝送される前記データは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含んでおり、受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、前記識別情報ごとに、識別情報に対応するすべての第１ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部とを備えている。
【００４４】
以下、添付の図面を参照しながら、本発明の一実施形態である中継器を説明する。
【００４５】
本明細書では、半導体の集積回路における分散型バス（ＮｏＣ）において、バスを流れる、異なる要求性能を有する複数のトラヒックに対し、相互の干渉を抑制しつつ、定量的試算に基づき小さいバス動作周波数でバスの伝送効率を上げる技術を説明する。併せて、ＮｏＣにおいて用いられる、性能（スループットと許容遅延時間）を保証するための中継器の構成、および分散型バスにおけるＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）に関しても説明する。
【００４６】
本願発明者らは、トラヒックの要求性能に応じて、トラヒックに「クラス」を設定した。すなわち出力ノードであるバスマスタから出力されるトラヒックに、複数のクラスのうちのいずれかを設定し、中継器において、クラス間の干渉を抑制するためにクラスごとにトラヒックを格納するバッファを分離して設けた。たとえば本願明細書では、大きく分けて２つのクラス、すなわち性能保証クラスと、性能非保証クラスが設定される。各々は要求性能に応じて、さらに細かなクラスに分けられ得る。詳細は後述する例示的な実施形態に関連して説明する。
【００４７】
本発明のある実施形態においては、中継器とバスマスタにおいて、要求性能が相対的に厳しい性能保証クラスのトラヒックに対しては、高優先度でかつレート制御の下で伝送処理が行われる。また性能保証クラスの中でも要求性能が相対的に厳しくないトラヒック、もしくは要求性能が存在しない非性能保証クラスのトラヒックに対しては、低優先度ではあるが要求帯域を超えてトラヒックを伝送する。これにより、まず性能保証クラスのトラヒックに対しては性能を保証することが可能になる。一方、性能保証クラスの中でも要求性能が相対的に厳しくないトラヒック、もしくは非性能保証クラスのトラヒックに対しては、ワースト見積もりによって発生するバスの余剰帯域を利用して伝送を行うことができる。要求性能ごとの干渉を抑制し、バスの利用効率を上げることで、性能を保証するのに必要なバス帯域を過剰に見積もる必要が無く、小さいバス動作周波数で性能保証可能なバスを構築することができる。さらに、バス動作周波数を抑制できることにより、バスの消費電力の抑制、実装面積の抑制、レイアウトの自由度の増大、バス配線の抑制が可能となる。
【００４８】
図２は、性能保証クラス／非性能保証クラスに応じて適用される、本実施形態による処理のポリシーを示す。
【００４９】
今、図２に示すように、性能保証クラスＡ、Ｂ、Ｃ、非性能保証クラスＺがトラヒックのクラスとして規定されているとする。
【００５０】
クラスＡ、Ｂのトラヒックに関しては、中継器とバスマスタにおいて、要求帯域に基づく送信レート値（上限値）を設定しトラヒックの送信レートを制御することで、性能が保証される。特にクラスＡは、クラスＢより要求性能が厳しく、クラスＡのトラヒックはより高優先度で伝送される。
【００５１】
クラスＣのトラヒックは、中継器とバスマスタにおいて、要求帯域を超えた送信レートで送信される。これにより、性能を保証しつつ、バスの余剰帯域を利用することができる。
【００５２】
クラスＺは、上述したクラスの中では最も低い優先度で処理される。非性能保証データを、送信レートの上限なく送信し、バスの余剰帯域を利用することができる。また、中継器においては、バッファをクラスごとに分離し、クラスごとの伝送制御により、クラス間の干渉を抑制することができ、かつ高優先のトラヒックをより低遅延で伝送することができる。これらにより、小さいバス動作周波数で、性能を保証しつつ、バスの利用効率を向上する事ができる。
【００５３】
なお、「ワースト見積もり」とは、設計時にバスシステムのワースト時のトラヒックの状態を想定して、性能を保証できるバス帯域を算出することである。実際はワースト時よりもトラヒック量が小さくなることがあり、それによって余剰帯域、すなわちバスに余裕が発生する。
【００５４】
＜全体構成＞
図３は、本発明の一実施形態である中継器１０３によって構成されるＮｏＣの一例を示す。図３には、中継器１０３のバッファ構成例と、パケットによる伝送例とが示されている。
【００５５】
ＮｏＣは、バスマスタ１０１、マスタ側ネットワーク・インタフェース・コントローラ（Network Interface Controller；ＮＩＣ）１０２、少なくとも１つの中継器（たとえば中継器１０３）、スレーブ側ＮＩＣ１０４、およびスレーブ１０５を備える。
【００５６】
バスマスタ１０１（「マスタ」と略記することもある。）はマスタ側ＮＩＣ１０２と接続される。マスタ側ＮＩＣ１０２およびスレーブ側ＮＩＣ１０４は、少なくとも１つの中継器（たとえば中継器１０３）を介して接続される。スレーブ側ＮＩＣ１０４はスレーブ１０５と接続される。なお、以下の説明に置いては、上述の少なくとも１つの中継器は、いずれも同じ構成を有し、同じ動作を行う。したがって、以下では少なくとも１つの中継器として、中継器１０３を例に挙げて説明する。
【００５７】
中継器１０３は、パケット２０２を格納する入力バッファ部１４０４を備えている。入力バッファ部１４０４は、中継するパケット２０２のクラスに応じて、クラスごとにパケット２０２を格納する。このような入力バッファ部１４０４を有することにより、中継器１０３は伝送するパケット２０２の優先順位を調停することが可能となる。詳細は後述する。また、マスタ側ＮＩＣ１０２および中継器１０３は、クラスごとにあらかじめ設定されたレートでパケットを送信するために、それぞれがレート制御部（後述）を備える。
【００５８】
マスタ側ＮＩＣ１０２は、バスマスタ１０１から受信した通信データ２０１から、１以上のパケット２０２を生成する。マスタ側ＮＩＣ１０２は、パケット２０２を、バスの動作周波数の１サイクルで送出可能なサイズに分割して伝送する。本願明細書では、バスの動作周波数の１サイクルで送出可能なサイズを有するデータ単位を「フリット」（flit）と呼ぶ。図３には、複数のフリット２０３が示されている。
【００５９】
伝送されるパケットは、中継器１０３が備える入力バッファ部１４０４に格納され、中継器１０３からフリット２０３単位で送出されながら、スレーブ側ＮＩＣ１０４まで伝送される。スレーブ側ＮＩＣ１０４は、受信した複数のフリット２０３から各パケットを構築し、さらに複数のパケットから元の通信データを構築して、スレーブ１０５へと伝送する。
【００６０】
図４は、ＮｏＣの構成要素の概念を示す。
【００６１】
本明細書では、以下のように用語を定義する。
【００６２】
バスマスタ１０１およびマスタ側ＮＩＣ１０２を総称して「第１ノード２１１」と呼ぶ。
【００６３】
スレーブ１０５およびスレーブ側ＮＩＣ１０４を総称して「第２ノード２１５」と呼ぶ。
【００６４】
１つまたは複数の中継器１０３を巨視的に見て１つの中継器と見なし、中継器２０６と呼ぶ。
【００６５】
第１ノード２１１、第２ノード２１５および中継器２０６全体を、「バスシステム５５０１」と呼ぶ。
【００６６】
以下、本発明の例示的な実施の形態にかかる中継器２０６について、図面を参照しながら説明する。
【００６７】
図５は、図３のＮｏＣの構成を模式的に示す。
【００６８】
まず、マスタ側ＮＩＣ１０２は、入力バッファ部（図示せず）においてマスタ１０１から各トラヒックのデータを受け取り、各トラヒックの要求性能を満たすのに必要な、マスタ１０１ごとに設定された送信レートでパケット２０２を送信する。
【００６９】
中継器１０３は入力バッファ部１４０４およびレート制御部１４０９を備えている。
【００７０】
入力バッファ部１４０４（バッファ部）は、宛先ごと、かつ、クラスごとに分離されたトラヒックを格納する入力バッファ１４０５を備えている。図５は、ＦＩＦＯ（First In, First Out）のバッファで構成する例を示している。このような入力バッファ部１４０４を備えることにより、中継器１０３では、高優先度のクラスのトラヒックが低優先度のクラスのトラヒックによる影響を受けずに送信の切り替えができる。なお、本実施形態においては、バッファを入力バッファとして説明するが、バッファを出力バッファとして備えていても、同様に適用することができる。その理由は、バッファを備える位置には依存せず、要求性能に応じてパケットを分離して格納でき、隣接する中継器またはスレーブ側ＮＩＣへのパケットの送信レートを制御できればよいからである。
【００７１】
レート制御部１４０９は、クラスごとに設定された送信レートでパケットを伝送する。例えばレート制御部１４０９は、送信間隔という形態で、送信レートを設定してもよい。なお、本願明細書において、レート制御部は「中継制御部」と呼ぶこともある。
【００７２】
中継器１０３のレート制御部１４０９の送信レートについては、複数のマスタから発行されたパケットが合流するため、マスタ側ＮＩＣ１０２において保証すべき送信レート以上の送信レート値をクラスごとに設定しておく。例えば、同じクラスに分類されたＮ個のマスタが存在し、所定の送信間隔で送信レートを設定する場合は、送信間隔はマスタ側ＮＩＣの送信間隔をＮで割った値以下に設定する。つまり、各マスタの保証すべき送信レートの和以上の送信レートで伝送する。また、マスタ側ＮＩＣだけではなく、中継器においてもレート制御を行うことで、エンドツーエンドで各クラスの遅延保証とスループット保証が可能である。
【００７３】
具体的には、中継器での送信レートの設定方法として、各中継器を通過する保証すべきトラヒック量に基づき、中継器ごとに個別の送信レート値を設定する方法が考えられる。
【００７４】
図６（Ａ）および（Ｂ）は、中継器ごとに設定される送信レート値の例を示す。
【００７５】
図６（Ａ）は、各中継器を流れるトラヒックに基づいて、保証すべき最小限の送信レート値を設定をする例を示す。例えば、図６（Ａ）に示すように、マスタＡ０、Ａ１からの各トラヒックに関して保証すべき送信レートの和が、中継器Ｒ２のトラヒックの送信レートとして設定され制御される。このような方法によって各中継器の送信レートを設定すれば、各中継器のバス動作周波数を最小化できる。ただし、最適な周波数で各中継器を設計しなければならなくなるため実装コストが大きくなる。
【００７６】
他の例示的な実施形態として、各中継器に対し同一の送信レート値を設定することも考えられる。つまり、各クラスに対し、システム全体の中で保証すべきトラヒック量が最も多く合流する中継器の送信レートに基づいて、各中継器のトラヒックの送信レートとして設定され制御される。
【００７７】
例えば、図６（Ｂ）に示すように、中継器Ｒ２では、最も多くトラヒックが合流する中継器Ｒ３の送信レート値（マスタＢ０、Ｂ１、Ｂ２の保証レートの和）に基づいて、各中継器におけるトラヒックの送信レートを設定する。系全体の中で最も大きくなる送信レートを各中継器の送信レートとして設定することによりネットワーク全体でボトルネックができにくくなる。そのため性能保証が容易になり、また、単一の動作周波数で設計可能なためハードウェアの実装が容易になる。
【００７８】
なお、各中継器の中継制御部における送信レートとして、系全体の中で最も大きくなる送信レートを共通に設定するとしたが、これは一例である。系全体の中で最も大きくなる送信レートより大きい送信レートを設定してもよい。
【００７９】
ただし、各中継器が同一の動作周波数で動作し、かつ各中継制御部に同一の送信レートが設定される場合には、一部の中継器は必要以上に大きい送信レートが設定されることになる。その結果、必要以上に大きい動作周波数で動作することになる。
【００８０】
なお、保証すべき送信レートの和で動作させるための動作周波数が過剰に大きくなる場合には、すべての中継器を同一の動作周波数で駆動しなくてもよい。例えば、システムバスやローカルバスのように、バスの役割の単位で、動作周波数を変え、最大送信レートの中継器を選択し、送信レートを設定する。それにより、マスタに比較的近いローカルバスの中継器の動作周波数が、過剰に大きくなるのを抑えることができる。
【００８１】
入力バッファ部１４０４におけるクラス構成としては、例えば、遅延を考慮すべき遅延保証クラスと遅延を考慮する必要が無い非遅延保証クラスに分類することが考えられる。遅延保証クラスは、特にバースト性を有するクラスＡと、それ以外のクラスＢに細分類する。本実施形態では、細分類された下位クラスに応じて入力バッファを割り当てている。
【００８２】
なお、遅延保証クラスと非遅延保証クラスの下位のクラス構成に対しては、それぞれ任意のクラス数で任意の入力バッファ数を割り当てできる。
【００８３】
本実施形態では、「遅延保証クラス」の分類を、許容され得る遅延に基づいて行っている。しかしながら、遅延ではなく、スループットに基づいて「遅延保証クラス」の分類を行ってもよい。本実施形態においては、遅延およびスループットの少なくとも一方の保証に基づいて遅延保証クラスの分類を行えばよい。
【００８４】
中継器１０３の入力バッファ部１４０４およびマスタ側ＮＩＣ１０２の入力バッファ部（図示せず）は、宛先ごとにバッファを分離して構成する。クラスごとの分離だけでなく、宛先ごとにバッファを分離することにより、宛先ごとのトラヒックの干渉を抑制することができ、ある宛先行きのトラヒックでバスの中が混雑した場合にも、他の宛先行きのトラヒックがバッファを確保できることが保証され、他の宛先行きのトラヒックを確実に伝送することができる。
【００８５】
また、バッファを分離すると、バッファをＦＩＦＯで構成した場合にクラスと宛先ごとに送信を切り替えることで、優先度間のトラヒックの干渉、異なる宛先間のトラヒックの干渉を抑制することができる。ただし、ランダムアクセス可能なメモリなどを用いて、送信の切り替えが可能で、かつクラスごと、および宛先ごとに使用するバッファを管理できていれば、バッファを物理的に分離しなくてもよい。
【００８６】
例えば、中継器１０３にランダムアクセス可能なメモリとともに、データであるアドレステーブルを設ければよい。アドレステーブルは、メモリ内を各クラスの宛先スレーブごとに格納するアドレスと格納したパケットとを管理するテーブルである。当該メモリおよびアドレステーブルを用いることにより、中継器１０３の入力バッファに格納された任意のパケットを自由に読み書きすることができる。これにより、バッファを論理的に分離された効果が得られる。低優先のパケットもしくはある特定の宛先行きのパケットがバッファに格納されている場合にも、それらと干渉することなく高優先のパケットもしくは別の宛先行きのパケットを伝送することが可能である。
【００８７】
また別の例として、低優先のトラヒックが使用するバッファを高優先のトラヒックが利用できるよう構成してもよい。この場合、高優先のトラヒックが利用できるバッファには、低優先のトラヒックに干渉されないバッファと干渉するバッファの両方が存在するが、干渉されないバッファが少なくとも１つ以上確保されていればよい。その結果、低優先度のトラヒックによる干渉を抑制することができる。
【００８８】
また、中継器１０３のレート制御部１４０９と、マスタ側ＮＩＣ１０２のレート制御部（図示せず）との間で送信レートを制御する方式として、本実施形態では実装の簡便さからパケットの送信間隔を制御している。例えば、より大きい送信レートでトラヒックを伝送したい場合、送信間隔をより小さく設定することで、送信レートを大きくすることができる。具体的には、トラヒックの送信レートを２倍にしたい場合、送信間隔を半分に設定する。送信レートを半分にしたい場合には、送信間隔を２倍に設定する。しかしながら、例えば、単位時間もしくは単位サイクルあたりの送信データ量もしくは送信データ長を計測する方法など、他の手段によって実現してもよい。また、スレーブは、一般的にはメモリやメモリコントローラによって構成されるが、メモリだけではなくマスタやＩ／Ｏ、中継器など任意のノードであってもよい。
【００８９】
本実施形態にかかる中継器１０３によるフロー制御は、インターネットに適用されるフロー制御とは大きく異なっている。以下、図７を参照しながらその理由を説明する。
【００９０】
図７は、上述した中継器１０３の構成をインターネットに適用した場合と、半導体のバスシステムに適用した場合の効果の違いを示す。
【００９１】
インターネット（図７（Ａ））では、マスタから送信されるデータのフロー制御は、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）により、マスタとスレーブの間でのやり取りに基づいて行われる。その一方で伝送経路上の中継器では、伝送経路を決定するルーティング制御やＱｏＳ制御が行われる。しかしながらインターネットの中継器においては、フロー制御は行われない。インターネットでは、隣接するノードのバッファに空き状態に関係なくデータの送信を行うため、バッファ溢れによるデータのロスが発生する可能性がある。
【００９２】
図７（Ａ）の例では、バッファに空きのある中継器１、中継器２、スレーブは、隣接するノードから送信されたデータを受信できる。一方、バッファに空きがない中継器３ではデータをバッファに格納できずバッファ溢れが発生してしまう。また、輻輳回避を目的として、バッファ溢れが発生する前にルータ側でパケット廃棄を行うことでもデータのロスが発生する。
【００９３】
一方、本実施形態が対象とする半導体のバスシステム（図７（Ｂ））では、伝送経路上の全てのノード間でフロー制御が行われる。具体的には、各ノードはデータを送信する際に、隣接する送信先のノードのバッファの空状態を確認し、バッファに空きがある場合のみデータを送信する。
【００９４】
このため、送信先のノードのバッファに空きがない場合には、データの送信を停止することでバッファ溢れを回避できる。図７（Ｂ）の例では、隣接する送信先のノード（中継器を含む。）のバッファに空きがあることを確認できたマスタ、中継器１、中継器３のみがデータを送信する。隣接する送信先ノードのバッファの空きがあることを確認できなかった中継器２はデータの送信を停止する。これにより、バッファ溢れによるデータの損失を回避することができる。このように本実施形態が対象とする半導体のバスシステムでは、伝送経路上でのデータのロスが発生しないことを前提としている点においてインターネット技術とは大きく異なっている。
【００９５】
上述の実施形態の開示を仮にインターネットに適用すると、レート制御されないトラヒックや、要求帯域を超えて伝送が行われるトラヒックに関して、過剰に送りつけられたデータにより、経路上でバッファ溢れ、およびパケットロスが発生する。そのパケットロスを検出した送信ノードは、動的にデータ量を小さくしてデータを送信し直すため、余剰帯域の利用効率を最大化すること、および遅延とスループットの性能を保証することが困難である。
【００９６】
一方、上述した、半導体のバスシステムでは、過剰に送りつけられたデータはロスすることなく、中継器のバッファに蓄積される。そのため、中継器は、例えば高優先度のデータが送信されていない時間帯を利用して、バッファにためておいた低優先度のデータを送信することができ、バスの利用効率を向上させることができる。中継器では高優先度のデータの伝送が行われていない時間帯が存在しており、その時間帯ではバスの帯域に余裕がある。後述するように、本実施形態にかかる中継器は、その余剰帯域を利用してデータを流すことができる。
【００９７】
＜全体フロー＞
図８は、本発明のある実施形態にかかる中継器を備えるＮｏＣの動作を示すフローチャートである。
【００９８】
バスマスタ１０１が通信データ２０１をマスタ側ＮＩＣ１０２へ送信する（Ｓ５０１）。マスタ側ＮＩＣ１０２は、受信した通信データ２０１をパケット２０２に変換し、クラスごとに設定される送信レートで、パケット２０２を中継器１０３へ伝送する（Ｓ５０２）。
【００９９】
遅延保証クラスのクラスＡおよびＢの送信レートについては、マスタ側ＮＩＣ１０２は、各クラスの要求帯域と遅延の性能とを保証できる送信レートを設定する。クラスＣの送信レートについては、マスタ側ＮＩＣ１０２は、要求帯域と遅延の性能を保証しつつ余剰帯域を利用するために、要求帯域を超える上限値で送信レートを設定するか、あるいは上限を設定しない。
【０１００】
非遅延保証クラス（クラスＺ）の送信レートについては、マスタ側ＮＩＣ１０２は、余剰帯域を利用するために送信レートの上限を設定しない。なお、これらの４クラスに対し、クラスＡ、Ｂ、Ｃ、Ｚの順に伝送の優先度が高いと定義する。つまりクラスＡが最も高優先度で処理される。図２は、性能保証クラスＡ〜Ｃおよび非性能保証クラスＺ間の優先度、およびレート制御に関する相違点を示す。
【０１０１】
１つまたはそれ以上の中継器１０３は、受け取ったパケット２０２の宛先スレーブＩＤ及びクラスに応じて、優先度の高いクラスから順に、設定されたレート値でパケットを伝送する（Ｓ５０３）。
【０１０２】
スレーブ側ＮＩＣ１０４は、中継器１０３から受け取ったパケット２０２を元の通信データ２０１に変換し、通信データをスレーブ１０５へ伝送する（Ｓ５０４）。スレーブ１０５は受け取った通信データ２０１を解釈し、応答する必要があれば（Ｓ５０５のＹｅｓ）、応答のための通信データを生成し、スレーブ側ＮＩＣ１０４へ送信する（Ｓ５０６）。スレーブ側ＮＩＣ１０４は、スレーブから受信した応答の通信データ２０１をパケット２０２に変換し、中継器１０３へパケット２０２を伝送する（Ｓ５０７）。中継器１０３は受信したパケット２０２の宛先を見て、転送先を決定して伝送する（Ｓ５０８）。マスタ側ＮＩＣ１０２は、受け取ったパケット２０２を通信データ２０１に変換し、通信データ２０１をバスマスタ１０１へ送信する（Ｓ５０９）。
【０１０３】
図９は、必要なバス動作周波数の見積もりを下げるために、少なくとも性能保証データと非性能保証データを区別可能なクラス分類規則の例を示している。バスシステムの設計者は、このクラス分類規則に沿ってバスマスタのクラスを設定する。中継器等の動作ではないが、以下に説明する。
【０１０４】
各マスタのクラスをあらかじめ分類するために、まず設計時において設計者は、すべてのマスタが発行するトラヒックの要求仕様を定義する（Ｓ３２０１）。
【０１０５】
設計者は、優先度が低く、バスが空いているときにだけ流せばよいマスタをクラスＺに分類する（Ｓ３２０２）。クラスＺは、非性能保証のトラヒックを発行するマスタである。例えば、プロセッサが出力するデータが、非性能保証のトラヒックに該当する。
【０１０６】
設計者は、要求帯域以上のデータ転送が必要なマスタをクラスＣに分類する（Ｓ３２０５）。例えば、クラスＣには、一部のプロセッサ処理やグラフィックス系の処理を担うマスタが該当する。また、例えばフィルタ系の処理のように、時間変動で、常に一定レート以上の伝送の保証が必要で、時間的に見ると、先行的に平均要求帯域以上に伝送を行ってもよいトラヒックもクラスＣに該当する。また、例えばフィルタ系の処理のように、時間的に変動し、常に一定レート以上の伝送の保証が必要なトラヒックであって、時間的に見ると、先行的に平均要求帯域以上に伝送を行ってもよいトラヒックを出力するマスタもクラスＣに該当する。
【０１０７】
設計者は、遅延保証クラスの中で、要求帯域や、許容遅延時間の要求が厳しく、バースト性のあるマスタをクラスＡに分類する（Ｓ３２０３）。クラスＡのマスタのトラヒックは最も優先的に伝送が処理されるため、中継器において他のクラスのトラヒックとは干渉なく伝送される。そのため、より小さいバス動作周波数で各トラヒックの遅延とスループットの性能を保証できる。
【０１０８】
設計者は、残りのマスタをクラスＢに分類する（Ｓ３２０４）。
【０１０９】
図１０は、マスタの発行するトラヒックの要求仕様の定義の具体例を示している。
【０１１０】
要求仕様の定義は、種々のパラメータによって決定される。パラメータは、たとえばマスタＩＤやトラヒックの要求帯域、許容遅延時間、パケット生成時のパケット長、宛先スレーブＩＤである。スレーブがメモリの場合にはＲｅａｄアクセスやＷｒｉｔｅアクセスなどの通信データの種別も定義される。例えば、図１０の表中の２行目の要素は、マスタＩＤが０のマスタが発行するトラヒックの属性を表す。このトラヒックは、要求帯域が８００ＭＢｙｔｅｓ／ｓ、許容遅延時間が０．２μ秒、１パケット長は１０フリット（flit）、スレーブＩＤが０のスレーブに対する、Ｗｒｉｔｅアクセスであることを示している。
【０１１１】
＜各構成要素＞
図１１は、バスマスタ１０１ごとに分類されるクラスおよびその具体例を示す。なお、本実施形態ではバスマスタ１０１が定まればクラスが定まるとしているが、あるバスマスタが複数種類の処理を行い、トラヒックを送出する場合には、トラヒック毎にクラスを定めればよい。
【０１１２】
トラヒックごとにクラスを定める方法として、たとえば、以下の２通りの方法が考えられる。
【０１１３】
たとえば、バスマスタが、トラヒックを構成するデータにクラスを指定する情報を付与してマスタ側ＮＩＣに送出することにより、トラヒックごとにクラスを定めることが可能である。上述のように、各バスマスタのトラヒックの要求仕様は、設計者によって定義されている。バスマスタはトラヒックの要求仕様を当然に把握しているため、クラスを指定することが可能である。
【０１１４】
または、マスタ側ＮＩＣがトラヒックごとにクラスを定めてもよい。マスタ側ＮＩＣは、トラヒックの識別子とクラスとを対応付けたテーブル（図示せず）を予めメモリに保持している。バスマスタが、トラヒックの要求仕様に応じた識別子をトラヒックを構成するデータに付与してマスタ側ＮＩＣに送出する。マスタ側ＮＩＣは、受け取ったトラヒックの識別子に基づいてテーブルを参照することにより、そのトラヒックのクラスを決定することができる。
【０１１５】
バスマスタ１０１は、本実施形態においては、図９のクラス分類規則によって、各クラスに分類される。クラスは、遅延を考慮すべき遅延保証クラス（クラスＡ、Ｂ、Ｃ）と、許容遅延時間が大きく遅延を考慮しなくても保証ができる非遅延保証クラス（クラスＺ）とに分類される。
【０１１６】
更に、遅延保証クラスは、要求帯域を超えてトラヒックを送信するクラス（クラスＣ）、特に許容遅延時間が小さい、もしくは要求帯域が大きい、バースト性を有するトラヒックを発行するクラス（クラスＡ）、それ以外の遅延やスループットを考慮すべきクラス（クラスＢ）に区分する。
【０１１７】
例えば、クラスＡには、短い周期で大容量のデータ伝送を必要とするエンコーダやデコーダのマスタが分類される。クラスＢにはペリフェラルやＩ／Ｏのマスタが分類される。クラスＣには性能保証が必要なデータ転送を含む一部のプロセッサやグラフィックス系の処理を担うマスタが分類される。
【０１１８】
非遅延保証クラス（クラスＺ）には、スループットと遅延の性能を保証する必要が無いトラヒックで、優先度が低くバスが空いているときにだけ伝送されればよいトラヒックを発行するマスタが分類される。もちろん、上述の通り、トラヒックごとにクラスを分類してもよい。例えば、性能保証が不要なグラフィックス系の処理のトラヒックやプロセッサが出力するデータのトラヒックはクラスＺに該当する。なお、プロセッサやグラフィックス系においても、遅延やスループットのいずれかの保証が必要なデータを含む場合は、クラスＺとは区別して、性能保証のクラスとして設定してもよい。
【０１１９】
なお、各クラスの中でも特に満たすべき性能（許容遅延時間、もしくは要求帯域）の厳しいトラヒックやマスタに対し、さらに優先度の高いクラスを設け、分類しても良い。
【０１２０】
図４７（ａ）〜（ｃ）は、それぞれ、遅延保証クラスの優先度に関連する分類の例を示す。図の上方ほど優先度が高いことを示している。なお、図４７（ａ）〜（ｃ）はそれぞれ独立してクラス分けが行われる例である。図４７（ａ）〜（ｃ）の相互間では優先度の高低は関連がないことに留意されたい。
【０１２１】
図４７（ａ）は、これまで説明したクラスＡ〜Ｃの優先度の例を示す。優先度に関しては、クラスＡが最も高く、次いでクラスＢ、クラスＣの順に設定されている。
【０１２２】
他の例として、クラスＣの一部のプロセッサのトラヒックに対し、遅延を短くするために、クラスＣの中の他のトラヒックと区別して別の高優先クラスＤを設けてもよい。図４７（ｂ）は、クラスＢより低優先度で、かつクラスＣより高優先度のクラスＤを示す。このようなクラスＤには一部のプロセッサのトラヒックが該当する。少なくともクラスＤに設定される要求帯域分のトラヒックは、低遅延化のために、クラスＣのトラヒックより高優先で伝送を行う。
【０１２３】
また、さらに他の例として、上述のクラスＤに分類されるトラヒックを細分化してクラスを割り当ててもよい。図４７（ｃ）は、要求帯域を超えて送出するトラヒックを考慮した、さらに細分化されたクラスの例を示す。この例では、優先度の高い順に、クラスＡ、Ｂ、Ｄ、Ｃ１、Ｃ、Ｃ２が設定されている。
【０１２４】
まず、クラスＤに分類されるトラヒックのうち、要求帯域を超えたトラヒックのクラスを、クラスＣ１に設定する。これにより、要求帯域を超えたトラヒックは、クラスＣに分類される要求帯域を超えたトラヒックより高優先度で送出される。
【０１２５】
あるいは、クラスＤに分類されるトラヒックのうち、要求帯域を超えたトラヒックのクラスを、クラスＣ２に設定してもよい。これにより、要求帯域を超えたトラヒックは、クラスＣに分類されるトラヒックより低優先度で送出される。
【０１２６】
当初クラスＤに分類されたトラヒックの全体をできるだけ高優先で送る場合には、クラスＤのトラヒックの遅延をクラスＣより小さくすることができる。また、クラスＤに要求される要求帯域を超えたトラヒックを低優先で送る場合には、その超過分のトラヒックをクラスＣ２に設定することにより、クラスＣのトラヒックの遅延をより小さくすることができる。
【０１２７】
また、クラスＤのトラヒックを優先して送出するために、事前に余剰帯域を確保しておくことが考えられる。たとえば、クラスＣに要求される帯域でトラヒックを送出し、さらにクラスＤのトラヒックを伝送していない時間帯に、余剰帯域を利用して先行してクラスＣのトラヒックを送出する。これにより、将来的には、先行して送出したクラスＣのトラヒックの伝送を行う必要がなくなる。これは、将来の余剰帯域を確保することを意味する。具体的には、クラスＤのトラヒックを伝送していない時間帯に、クラスＣのトラヒックを要求帯域以上に伝送しておく。これにより、将来のクラスＣの送信量を減らし、余剰帯域を他のトラヒックの送出に充てることができる。結果として、クラスＣのトラヒックとの干渉を抑制することができ、クラスＤのトラヒックの遅延時間を短くすることができる。
【０１２８】
図１２は、マスタ側ＮＩＣ１０２の構成を示す。マスタ側ＮＩＣ１０２は、主としてハードウェア回路として実現されている。各構成要素は、複数の回路素子の組合せによって実現される。なお、１つの集積回路、または複数の集積回路によって実現されていてもよい。
【０１２９】
マスタ側ＮＩＣ１０２は、宛先解析部８０１、入力バッファ部８０２、マスタ情報記憶部８０３、レート制御部８０４、出力切替部８０５、パケット生成部８０６、およびバッファ利用情報通信部８０７を備えている。
【０１３０】
宛先解析部８０１は、バスマスタ１０１との通信によって、通信データ２０１、宛先スレーブＩＤ７０５、締切時刻７０７、送信元ＩＤ７０４を受信し、各データを格納する。
【０１３１】
入力バッファ部８０２は、通信データ２０１を宛先ごとに格納する。
【０１３２】
マスタ情報記憶部８０３は、宛先解析部８０１がバスマスタ１０１との通信で取得された、そのバスマスタ１０１を示す送信元ＩＤ７０４、そのバスマスタ１０１のクラス、締切時刻７０７、あるいは宛先スレーブＩＤ７０５を格納する。
【０１３３】
レート制御部８０４は、レート値記憶部１００３にあらかじめ設定されたレート値に基づいて送信レートを決定し、パケットの送信レートを制御する。本願明細書では、レート制御部を「送信制御部」と呼ぶこともある。
【０１３４】
要求性能が厳しい性能保証のデータを送信するバスマスタは、送信レートを保証すべき送信レートに設定する。また、要求帯域を超えて送信するバスマスタは、余剰帯域を利用するために、トラヒックのレート値（上限値）を要求帯域を超えた送信レートに設定するか、もしくはトラヒックのレート値（上限値）を設定しない。非性能保証のクラスのトラヒックに対しては、バスマスタはトラヒックの送信レートのレート値（上限値）を設定しない。これにより、常にトラヒックを送信可の状態とし、余剰帯域を利用して伝送を行うことが可能となる。
【０１３５】
なお、レート値（上限値）を要求帯域を超えた送信レートに設定する場合には、バスシステム全体のボトルネックとなるノードまたはリンクの処理能力に基づいてレート値（上限値）を決定してもよい。例えば、バスシステムの中のある特定のリンクが、トラヒックの最も集中する、バスシステム全体のボトルネックであるとする。このとき、そのリンクの利用効率を最大化できるように、バスの動作周波数とバス幅からリンクの伝送能力を求め、伝送能力に基づいて送信レート値（上限値）を決定する。また、この時に、あるユースケースを想定し、他のバスマスタから送信される性能保証のデータの要求帯域分を差し引いて余剰帯域を求め、レート値を決定してもよい。また、スレーブがメモリの場合は、通信データに対するメモリの処理能力がボトルネックとなりうる。そのため、メモリが継続的に処理できるだけのデータ量を送信するのに必要な値を、送信レート（上限値）として決定してもよい。これにより、過剰にトラヒックを伝送することなく、バスシステムのボトルネックの利用効率を最大化することができる。
【０１３６】
出力切替部８０５は、入力バッファ部８０２に格納された通信データ２０１と、レート制御部８０４の送信可否、バッファ利用情報通信部８０７から取得したスレーブ側の中継器１４０２の空きバッファ情報に基づいて、送信するバッファを切り替え、入力バッファ部８０２に格納したデータを、パケット生成部に出力する。
【０１３７】
パケット生成部８０６は、出力切替部８０５から送られてきた通信データをパケットに変換して、フリットに分割して伝送する。パケットに変換する際、パケット生成部８０６は、後述する通り、通信対象となるデータにヘッダおよび終了コードを付与する。
【０１３８】
図１３は、マスタ側ＮＩＣ１０２の動作フローを示す。
【０１３９】
宛先解析部８０１は、バスマスタ１０１との通信で情報を取得し、マスタ情報記憶部８０３に伝送するべきトラヒックの、宛先スレーブＩＤ、締切時刻を記録する（Ｓ９０１）。締切時刻を示す情報はマスタ側ＮＩＣ１０２によってパケットに付与される。また本実施形態においては、許容遅延時間については、例えば、送信元ノードから送信される時刻と送信先ノードに到着する時刻の最大の相対時間（差分値）で表現される。締切時刻については、送信先ノードへ到着する絶対時間で表現される。これらは絶対時間もしくは相対時間のいずれかに統一して表現してもよい。
【０１４０】
宛先解析部８０１は、受信した通信データ２０１を入力バッファ部８０２の宛先スレーブごとに対応する入力バッファに格納する（Ｓ９０２）。
【０１４１】
出力切替部８０５は、入力バッファの送信可否をレート制御部８０４に問い合わせる。レート制御部８０４は、受信した問い合わせに応じて、設定された送信レートを超えないよう、出力切替部８０５へ送信可否を通知する（Ｓ９０３）。
【０１４２】
バッファ利用情報通信部８０７は、スレーブ側の中継器１４０２の空きバッファ情報を取得する。出力切替部８０５は、バッファ利用情報通信部８０７から取得した空きバッファ情報に基づいて、入力バッファ部８０２に格納された通信データに対し、送信先の空きバッファを割当てる。
【０１４３】
出力切替部８０５は、通知された送信可否と、バッファ割当結果に基づいて、送信可の入力バッファから通信データ２０１を転送する（Ｓ９０４）。
【０１４４】
パケット生成部８０６は、受信した通信データ２０１に対し、マスタ情報記憶部から取得した情報（送信元ＩＤ７０４、宛先スレーブＩＤ７０５、締切時刻７０７、マスタ情報記憶部８０３にあらかじめ設定されたクラス７０６）とバッファ割当結果である入力バッファ番号７０８に基づいてヘッダ７０１を生成する。そしてパケット生成部８０６は、通信データ２０１にヘッダ７０１と終了コード７０２を付与し、パケット２０２を生成し、パケットをフリットに分割して転送する（Ｓ９０５）。
【０１４５】
図１４は、パケット２０２のデータ構造を示す。
【０１４６】
パケット２０２は、通信データ２０１、ヘッダ情報７０１、および終了コード７０２を有する。
【０１４７】
通信データ２０１は、バスマスタ１０１がスレーブ１０５に通信する実データであり、例えば、動画の画像や音声のデータである。
【０１４８】
ヘッダ情報７０１は、パケットの開始を判定するための開始コード７０３、マスタを識別するための送信元ＩＤ７０４、伝送先であるスレーブを識別するための宛先スレーブＩＤ７０５、トラヒックのクラス分類を示すクラス７０６、スレーブ１０５、またはバスマスタ１０１に通信データが到着する締切時刻７０７、および各中継器１０３で格納される入力バッファ番号の割当結果７０８の情報を有する。
【０１４９】
終了コード７０２は、パケットの終了を示す情報である。
【０１５０】
なお、本実施形態では、パケット２０２を生成する際に、クラス７０６を含めてヘッダ７０１を生成することで、中継器１０３で、データをクラスごとに区別して伝送を行うことができる。この際、クラス７０６は、データの要求性能の違いを識別できる情報（識別情報）であればよく、例えば、クラス７０６ではなく、それぞれのデータ区別に基づく伝送の優先順位情報を含めて、パケットを生成してもよい。また、データを識別できる情報の他の例として、各中継器で格納可能なバッファ番号の組合せを含めてパケット生成し、中継器では格納されたバッファ番号で伝送の優先順位を決めてもよい。
【０１５１】
図１５は、マスタ側ＮＩＣ１０２に設けられるレート制御部８０４の構成を示す。
【０１５２】
レート制御部８０４は、送信可否決定部１００１、タイマー処理部１００２、およびレート値記憶部１００３を有する。
【０１５３】
送信可否決定部１００１は、出力切替部８０５から各入力バッファの送信可否の問合せを受信すると、送信レートに基づいて送信可否を決定し、決定結果を出力切替部８０５へ通知する。
【０１５４】
タイマー処理部１００２は、送信レートを制御するためにパケット２０１の送信間隔を計測するためのタイマーを有する。
【０１５５】
レート値記憶部１００３は、マスタから送信されるパケットの送信レートを制御するために、あらかじめ設定された送信レートの値を記憶する。
【０１５６】
レート制御部８０４は、各構成要素が別個のハードウェアによって実現される。たとえば送信可否決定部１００１およびタイマー処理部１００２は、各々が複数の回路素子の組合せ、あるいは１つの集積回路として実現されていてもよい。レート値記憶部１００３の送信レートの設定方法は、例えば、バスシステムが起動する電源投入時に不揮発性のメモリから読み込む方法、信号線の配線を介し、別のノードから設定された送信レートを読み込む方法がある。なお、レート制御部８０４は、コンピュータプログラムおよびそのプログラムを実行するコンピュータ（集積回路）として実現されてもよい。
【０１５７】
図１６は、レート値記憶部１００３が記憶するレート値を示す。送信レートをパケットの送信間隔で制御する場合、あらかじめ送信間隔の値が設定される。なお、送信レートはクラスごとに同じ値を設定しても、マスタ単位で個別に値を設定しても良い。なお図１６の「送信間隔」という文言は記載の便宜のためである。実際には記憶されていなくてもよい。記憶領域などを明確にすることにより、送信間隔の値そのもの、または送信間隔の値に対応する情報（換言すれば送信レートの値を示す情報）が保持されていればよい。
【０１５８】
なお、以下で参照する図面において、類似の形式でデータ構造が記載されているものについても、１行目に記載されている文字は実際には記憶されていなくてもよい。
【０１５９】
図１７は、レート制御部８０４の動作フローを示す。
【０１６０】
タイマー処理部１００２は、設定されたレート値をレート値記憶部１００３から読み込む（Ｓ１１０１）。設定の具体例として、遅延保証クラスに分類されるクラスに対しては遅延とスループットの性能を保証できるレート値を設定し、非遅延保証クラスに分類されるクラスに対しては余剰帯域の利用効率を最大化するためにレート値の上限を設定しない。
【０１６１】
出力切替部８０５から入力バッファ部８０２の入力バッファの送信可否の問合せを受信した場合（Ｓ１１０２のYes）、送信可否決定部１００１は、タイマー処理部１００２のタイマー値に基づいて送信可否を決定する（Ｓ１１０３）。
【０１６２】
送信可否決定部１００１は、決定された送信可否情報を出力切替部８０５へ通知する（Ｓ１１０４）。
【０１６３】
図１８は、送信可否決定部１００１による送信可否の決定処理Ｓ１１０３の動作フローを示す。
【０１６４】
送信可否決定部１００１は、タイマー処理部１００２から、入力バッファごとの現在のタイマー値を取得する（Ｓ１２０１）。
【０１６５】
タイマー値が正でない場合（Ｓ１２０２のNo）、送信可とし、正の場合（Ｓ１２０２のYes）、送信不可とする。
【０１６６】
図１９は、タイマー処理部１００２の動作フローを示す。
【０１６７】
タイマー処理部１００２は、送信レートを制御するためのタイマー制御を行う。処理の開始に先立って、まずタイマー処理部１００２は、タイマー処理部１００２が有するタイマーの値を「０」に初期化する。タイマー処理部１００２は、入力バッファの通信データを送信する時に、送信結果を受信した場合（Ｓ１３０２のYes）、タイマー値をレート値記憶部１００３から読み込んだレート値にセットする（Ｓ１３０３）。
【０１６８】
タイマー処理部１００２は、タイマーの値が０になるまで、バスの動作周波数の１サイクルごとにデクリメントする（Ｓ１３０４）。
【０１６９】
上述の処理によれば、タイマー処理部１００２は、タイマーが正の間は、対応するバッファに格納された通信データ２０１の送信を抑制する。これにより、送信レートを設定されたレート値以上にならないように制御することができる。なお、前述したように、送信レート制御の実現方法は、ここで示した方法以外で実現してもよい。
【０１７０】
図２０は、マスタ側ＮＩＣ１０２と中継器１０３で行う一般的なフロー制御を説明する図である。フロー制御とは、送信先の通信状況を受信して、通信状況に応じてパケットを送信する制御のことを示す。例えば、マスタ側ＮＩＣ１０２が送信元から送信先までの経路上にある中継器やスレーブ側ＮＩＣの空きバッファ情報を取得し、空きバッファ情報に基づいてパケットを送信する制御は、フロー制御の一例である。
【０１７１】
図２１（Ａ）および（Ｂ）は、フロー制御とレート制御の違いを示す。図２１（Ａ）は、レート制御を行ったときの単位時間当たりの伝送量を示し、図２１（Ｂ）は、レート制御を行わなかったときの単位時間当たりの伝送量を示す。図２１（Ａ）に示されるように、レート制御により、マスタ側ＮＩＣもしくは中継器から送信されるパケットの単位時間あたりの伝送量が、あらかじめ設定されたレート値（上限値）を超えないように制御される。図２１（Ｂ）に示されるように、レート制御を行わずフロー制御を行った場合には、フロー制御による物理帯域内での伝送制御が支配的になる。例えば、送信レートに制限なく、バスの物理帯域をすべて利用してパケットを伝送することができる。また、要求帯域を超えてレート値（上限値）を設定する場合にも、レート値を十分大きくすることで、フロー制御による伝送制御が支配的になる。また、本実施形態におけるフロー制御については、中継器１０３とマスタ側ＮＩＣ１０２では送信先の入力バッファ部の空きバッファ情報に基づいてパケットを送信するフロー制御を行う。
【０１７２】
＜中継器＞
図２２は、中継器１０３の構成を示す。
【０１７３】
中継器１０３は、マスタ側の中継器１４０１あるいは、マスタ側ＮＩＣ１０２からパケット２０２を受信し、スレーブ側の中継器１４０２、あるいは、スレーブ側ＮＩＣ１０４へとパケット２０２を伝送する。それらの間は、バス配線で接続されている。
【０１７４】
中継器１０３は、クラス解析部１４０３、入力バッファ部１４０４、出力ポート選択部１４０６、バッファ情報記憶部１４０７、バッファ利用情報通信部１４０８、レート制御部１４０９、出力調停部１４１０、クラス記憶部１４１１、およびスイッチ切替部１４１２を備える。
【０１７５】
クラス解析部１４０３は、パケット２０２を受信してパケットの開始コード７０３に基づいてヘッダ情報７０１を解析し、クラス、宛先スレーブＩＤ、締切時刻を取得する。またクラス解析部１４０３は、バッファ利用情報通信部１４０８からスレーブ側の中継器１４０２の空きバッファ情報を取得し、クラスに対応した入力バッファの割当を行う。割当結果は、バッファ情報記憶部１４０７に記録される。
【０１７６】
入力バッファ部１４０４は、パケットをクラスごとに格納する。
【０１７７】
出力ポート選択部１４０６は、クラス解析部１４０３により取得した宛先スレーブＩＤから出力ポート番号を決定し、バッファ情報記憶部１４０７に記憶する。
【０１７８】
バッファ情報記憶部１４０７は、入力バッファ部１４０４に格納されたパケット２０２の情報（クラス、宛先スレーブＩＤ、締切時刻、出力ポート番号、スレーブ側マスタの入力バッファ割当結果）を記憶する。
【０１７９】
バッファ利用情報通信部１４０８は、スレーブ側の中継器１４０２のバッファの空き情報を取得し、また、バッファ情報記憶部１４０７から、入力バッファ部１４０４の空き情報を取得し、マスタ側の中継器１４０１のバッファ利用情報通信部１４０８へ空き情報を通知する。
【０１８０】
レート制御部１４０９は、バッファ情報記憶部１４０７から、入力バッファ部１４０４に格納されたパケット２０２のクラスを取得し、クラスごとにパケットの保証すべき送信レートに基づいて、パケットの送信を制御する。なお、クラスごとに保証すべき送信レートは、レート値記憶部２００３（詳細は後述。図２２に記載なし）に設定されたレート値に基づき決定する。
【０１８１】
レート制御部１４０９は、レート制御の結果を、パケットの送信許可信号として、出力調停部１４１０へ通知する。出力調停部１４１０は、取得した送信許可信号に基づいて、保証すべき送信レート以下のパケットから順に高優先度で調停し、送信レートを超えるパケットは低優先度で調停を行う。
【０１８２】
後述するレート値記憶部２００３に設定されるレート値については、同じクラスに属するトラヒックが要求帯域を維持しつつ合流できるように、マスタ側ＮＩＣ１０２で設定した保証すべきレート値以上の値を設定する。例えば、送信間隔によるレート制御の場合、同じクラスに属するマスタ数（Ｎ）で、マスタ側ＮＩＣ１０２で設定した送信間隔（Ｐ）を割った値（Ｐ／Ｎ）を用いて中継器１０３の送信間隔を設定することで、それぞれのマスタの要求帯域を維持してトラヒックを伝送できる。また、非遅延保証クラスに対しては、バスの余剰帯域の利用効率を高められるように、送信レートの上限を設定しない。
【０１８３】
出力調停部１４１０は、クラス記憶部１４１１に記憶したクラス優先度と、バッファ情報記憶部１４０７から取得した締切時刻、レート制御部１４０９から取得した送信許可信号とにより、送信するパケットの送信順位を調停する。
【０１８４】
クラス記憶部１４１１は、あらかじめクラスに対応した優先度を記憶している。
【０１８５】
図２３は、クラス記憶部１４１１に記憶されるクラスの優先度情報を示す。
【０１８６】
この例では、優先度の値が小さいほど、優先的に伝送処理される。例えば、クラスＡの優先度の値は、「１」であり、クラスＡは最も優先的に処理される。クラスＢの優先度の値は「２」であり、クラスＣの優先度の値は「３」であるから、クラスＢはクラスＡの次に優先して処理される。クラスＣは、クラスＢの次に処理される。設計したクラス数に応じた任意の優先度を割り当てればよい。
【０１８７】
中継器１０３の出力調停部１４１０は、ここで定義された優先度と締切時刻に基づき、優先度が高く、締切時刻の早い順に送信すべき入力バッファを調停し、送信処理する。
【０１８８】
図２４は、中継器１０３の出力調停部１４１０が送信すべきバッファの優先順位を調停した結果の具体例である。例えば、出力ポート番号ごとに、かつ、クラスＡ、クラスＢ、クラスＣ、クラスＺのクラスごとに、入力バッファにパケットが存在するとする。いま、たとえば出力ポート番号０および１に対して、それぞれ、クラスＡ、Ｂ、Ｃ、Ｚの各入力バッファにパケットが存在しているとする。まず出力調停部１４１０は、出力ポート番号０に対し、送信可のパケットが格納されている入力バッファの中から、一番優先度が高いクラスの入力バッファ（例えば、クラスＡの入力バッファ）を抽出する。さらに出力調停部１４１０は、抽出された入力バッファの中で、締切時刻の最も早い入力バッファを抽出する。入力バッファがひとつも抽出されなかった場合、出力調停部１４１０は、送信不可の入力バッファから、クラスの優先度が高く、締切時刻が早い順に入力バッファをひとつ抽出する。出力調停部１４１０は、抽出された結果を、出力ポート番号０に対して送信する入力バッファとする。次に、出力調停部１４１０は、出力ポート番号１に対して、上記の調停処理で送信する入力バッファを選択する。
【０１８９】
スイッチ切替部１４１２は、出力調停部１４１０の調停結果とバッファ情報記憶部１４０７に記憶される出力ポート番号とに基づいてスイッチを切り替えてパケットを伝送する。
【０１９０】
なお、本実施形態においては、同一クラス内では締切時刻の比較に基づいて伝送順位を決定する方法を説明する。締切時刻は、同じクラス内でパケットの伝送に対する時間的な緊急度を表す情報であればよい。例えば、締切時刻は、宛先スレーブに通信データが到着する時刻、あるいは送信元マスタにスレーブからの返信が到着する時刻であってもよい。同様に、許容遅延時間は、例えばマスタからスレーブに到着するまでの往路にかかる時間、あるいは送信元マスタに返信が戻ってくるまでの往復にかかる時間であってよい。また、締切時刻の代わりに、パケットが送信された時刻や、送信時刻からの経過時間（マスタ側ＮＩＣ１０２および中継器１０３の処理時間の累積値の情報）、送信時点でそれまでに送信されたパケット数の値（パケットのマスタ側ＮＩＣ１０２における送信順序を表す送信カウンタの値）などで、伝送に対する時間的な緊急度を表してもよい。本願明細書では、これらの情報を包括して「締切時間に関する時間情報」と表現することがある。
【０１９１】
なお実装にあたっては、時刻は、例えば、半導体バスシステムに供給されるバスクロックによって駆動されるカウンタ値によって表現される。また、締切時刻の代わりに送信時刻からの経過時間を用いる場合、締切時刻の代わりに経過時間を計測するためのカウンタ値を保持する領域をヘッダに用意し、マスタ側ＮＩＣ１０２および中継器１０３において動作クロックごとにカウンタ値を＋１増やせばよい。あるいは、締切時刻の代わりにパケットの送信順序を表す送信カウンタを用いる場合、パケット生成部８０６に送信カウンタを用意し、パケット生成部８０６はパケットを送信するごとに送信カウンタを＋１増やし、送信時点での送信カウンタの値をヘッダに付与することで実現できる。なお、これらはアップカウンタでの例を示したが、アップカウンタではなくダウンカウンタで実装してもよい。
【０１９２】
図２５は、中継器１０３の動作フローを示す。
【０１９３】
クラス解析部１４０３は、マスタ側の中継器１４０１からパケット２０２を受信する（Ｓ１５０１）。
【０１９４】
クラス解析部１４０３は、パケット２０２のヘッダ情報７０１（宛先スレーブＩＤ、クラス、締切時刻）を解析し、バッファ情報記憶部１４０７に登録する（Ｓ１５０２）。
【０１９５】
クラス解析部１４０３は、パケット２０２から入力バッファ番号を抽出し、パケットを対応する入力バッファ部１４０４の入力バッファ１４０５に格納する（Ｓ１５０３）。
【０１９６】
出力ポート選択部１４０６は宛先スレーブＩＤに基づいてパケット２０２の出力ポート番号を選択する（Ｓ１５０４）。なお、出力ポート番号の選択には、一般的に中継器の接続関係によって静的に決まるルーティングテーブルを利用する方法や、宛先スレーブＩＤを用いてある一定の規則に基づく計算によって求める方法などがある。
【０１９７】
レート制御部１４０９は各クラスの出力ポート番号ごとにパケットの送信レートを計測し、実際の送信レートが設定されたレート値を超えるかどうかを出力調停部１４１０が判断できるように、入力バッファ部１４０４に格納されたパケットの送信許可を決定する（Ｓ１５０５）。なお、レート制御部１４０９に設定されるレート値（上限値）を、保証すべきレート値に設定されたトラヒックに対しては、そのトラヒックのレートを保証することができる。このトラヒックを、本実施形態においては、第１の帯域（そのトラヒックの保証すべき帯域）を利用して伝送するトラヒックと呼ぶ。また、保証すべきレート値を超えて設定されたトラヒックに対しては、送信レートを保証しつつ、余剰帯域を利用することができる。このトラヒックを、本実施形態においては、第１の帯域と第２の帯域（余剰帯域）を利用して伝送するトラヒックと呼ぶ。また、レート制御のレート値（上限値）がない場合は、例えば送信間隔を「０」に設定することで、連続的にトラヒックを送信することが可能になり、余剰帯域を、最大、バスの物理帯域上限まで利用することが可能になる。
【０１９８】
バッファ利用情報通信部１４０８は、スレーブ側の中継器１４０２のバッファを割り当てるときに利用する空きバッファの情報を取得する（Ｓ１５０６）。空きバッファの情報とは、スレーブ側の中継器１４０２の各クラスの宛先スレーブごとに割り当てられた各入力バッファ１４０５に対し、格納されているパケットの有無と空きフリット数である。なお、入力バッファ部１４０４がひとつのランダムアクセス可能なメモリと、アドレスを各クラスの宛先スレーブごとに管理するアドレステーブルとにより構成される場合、ひとつの入力バッファで複数のパケットを格納できるため、各クラスの宛先ごとに対応した空きパケット数と空きフリット数とを空きバッファの情報とする。
【０１９９】
クラス解析部１４０３は、スレーブ側の中継器において格納される入力バッファが未割当の入力バッファに対し、スレーブ側の中継器１４０２が持つ空きバッファを、各クラスの宛先スレーブＩＤごとに割り当てる（Ｓ１５０７）。
【０２００】
出力調停部１４１０は、入力バッファ部１４０５に格納されたパケットの中で送信するパケットを優先度の高い順に調停し、余剰帯域があればレート制御部１４０９が送信不可としたパケットに対しても、低優先度で送信順序を調停する（Ｓ１５０８）。中継器におけるレート制御部１４０９は、要求帯域に基づくレート値（上限値）で伝送を制御することで、必要な性能は保証しつつ、要求帯域を超えるトラヒック、もしくは非性能保証のトラヒックに対しては、バスに余剰帯域があれば伝送を行うことで、余剰帯域の利用効率を向上する。
【０２０１】
スイッチ切替部１４１２は、出力調停部１４１０の決定結果に基づき、パケット２０２を送信するためにスイッチを切替え、パケット２０２の送信を開始する（Ｓ１５０９）。
【０２０２】
パケット２０２の送信が終了した場合（Ｓ１５１０のYes）、バッファ情報記憶部１４０７が該当する入力バッファの情報を初期化する（Ｓ１５１１）。終了しない場合（Ｓ１５１０のNo）はパケットの送信を継続する。
【０２０３】
図２６は、中継器１０３のクラス解析部１４０３の入出力関係を示す。
【０２０４】
クラス解析部１４０３は、マスタ側の中継器１４０１からパケット２０２を受信し、転送先を決めるために、出力ポート選択部１４０６に対し、宛先スレーブＩＤを通知する。そしてクラス解析部１４０３は、出力ポート番号を取得し、バッファ情報記憶部１４０７に出力ポート番号を記録する。クラス解析部１４０３は、スレーブ側の中継器１４０２の入力バッファを割り当てるために、バッファ利用情報通信部１４０８から、スレーブ側の中継器１４０２の空きバッファ情報を各クラスの宛先スレーブＩＤごとに取得する。クラス解析部１４０３は、バッファ情報記憶部１４０７に、パケット２０２のヘッダ７０１と出力ポート番号を記録させる。クラス解析部１４０３は、入力バッファ部１４０４に、パケット２０２を格納させる。
【０２０５】
図２７は、中継器１０３のレート制御部１４０９の構成を示す。レート制御部１４０９は、マスタ側ＮＩＣ１０２のレート制御部８０４と同様に、タイマーを用いてパケットの送信間隔を制御する方式でレート制御を行う。タイマー処理部２００２が各クラスの出力ポート番号ごとに独立にタイマーを管理し、送信可否決定部２００１は、クラス、出力ポート番号に対応するタイマー値を取得して送信可否を決定する。また、レート値記憶部２００３には、クラスごとに設定されたレート値が記憶され、各クラスの出力ポートごとに、送信レートがそのレート値を超えるかどうか判定できるように入力バッファの送信可否を決定する。なお、出力調停部１４１０は、余剰帯域を利用するために、送信不可の入力バッファの中から送信を行うこともある。また、各クラスのレート値は、要求性能に応じてあらかじめ設計者が設定しておく。例えば、性能保証トラヒックは、保証すべき伝送レートでレート値を設定し、非性能保証トラヒックは、レート値（上限値）を設定しない。また、レート制限を設定しない場合は、例えば送信間隔の値を「０」に設定しておけばよい。
【０２０６】
図２８は、レート制御部１４０９の動作フローを示す。
【０２０７】
まず、レート制御部１４０９のタイマー処理部２００２は、レート値記憶部２００３から各クラスのレート値を読み込む（Ｓ２１０１）。
【０２０８】
送信可否決定部２００１は、出力調停部１４１０から各入力バッファの出力ポート番号とクラスを、取得する（Ｓ２１０２）。
【０２０９】
送信可否決定部２００１は、取得した出力ポート番号とクラスに対してタイマー処理部２００２のタイマー値に基づき送信可否を決定する（Ｓ２１０３）。
【０２１０】
送信可否決定部２００１は、出力調停部１４１０へ送信可否情報を通知する（Ｓ２１０４）。
【０２１１】
図２９は、レート制御部１４０９の送信可否の決定処理の動作フローを示す。
【０２１２】
レート制御部１４０９の送信可否決定部２００１は、出力調停部１４１０から出力ポートとクラス情報とを受信する（Ｓ２２０１）。
【０２１３】
送信可否決定部２００１はタイマー処理部２００２から出力ポートとクラスに対応するタイマー値とを取得する（Ｓ２２０２）。
【０２１４】
送信可否決定部２００１は、取得したタイマー値が正の場合は（Ｓ２２０３のＹｅｓ）送信不可とする。タイマー値が正でない場合（Ｓ２２０３のＮｏ）、送信可否決定部２００１は、性能保証クラスの場合（クラスＺでない場合）（Ｓ２２０５のＮｏ）に送信可とし、非性能保証クラス（クラスＺ）の場合（Ｓ２２０５のＹｅｓ）、送信不可とする。
【０２１５】
図３０は、タイマー処理部の管理情報の具体例を示す。例えば、図３０の表の２行目は、出力ポート番号０に対するクラスＡに対するタイマー値が、「０」であることを示す。タイマー値が「０」であるということは、前回のパケット送信時刻から設定された送信間隔の時間以上、パケットを送信しなかったため、「送信可」の状態である。また、同じく３行目は、出力ポート番号０に対するクラスＢに対するタイマー値が６であることを示しており、レート値記憶部２００３に設定された送信レート以下にパケットの送信レートを制限するために、送信が抑制される「送信不可」の状態であり、６サイクル後にタイマー値は０になり、「送信可」の状態になる。また、非性能保証クラスに対しレート値を設定しない場合、例えば、送信間隔は「０」で設定しておくことで、タイマー値は後述の動作により常に「０」となる。非性能保証クラス（例えば、クラスＺ）は、常に低優先度で処理するために、タイマー値によらず、常に送信不可となる。また、要求帯域を超えて伝送を行うクラス（例えば、クラスＣ）または非性能保証クラスの場合は、送信可のパケットが入力バッファに存在しなければ、送信不可であっても、送信されることがある。これにより、バスの余剰帯域を利用することができる。
【０２１６】
図３１は、レート制御部１４０９のタイマー処理部２００２の動作フローを示す。
【０２１７】
タイマー処理部２００２は、動作開始時に各タイマー値を０に初期化し、パケットを送信したタイミングで出力調停部１４１０から送信結果（送信された入力バッファのクラスと出力ポート番号）を受信した場合（Ｓ２４０１がYes）、対応するタイマー値をレート値記憶部２００３に設定されたレート値（この場合は送信間隔）で設定する。送信結果を受信した場合（Ｓ２４０１のYes）も受信しなかった場合（Ｓ２４０１のNo）も、バス動作周波数のサイクルごとにタイマー値を１ずつ小さくし、０になるまでタイマー値を小さくする（Ｓ２４０３）。なお、本実施形態のタイマー処理部２００２は、中継器１０３での送信レート制御の実現例であり、別の方法で実現しても良い。具体的には、ビットレートで送信レートを制御しても良いし、ある一定期間に送信するパケットのサイクル数を指定する方法、サイクル単位ではなく時間単位で送信間隔を指定する方法などでもよい。なお実施形態によっては、長期的に見て送信レートを満たしていれば、短期的に見て、十分小さい量の送信レートを超えてもよい。
【０２１８】
図３２は、レート制御値記憶部２００３がクラスごとに管理している送信レート値の一例を示す。例えば、レート制御が送信間隔によって制御される場合、設定される値は送信間隔を表す。図３２において、クラスＡの値は「１０」で設定され、中継器１０３の出力ポートごとに、最大で１０サイクルごとにパケットを送信できる。クラスＺは、値が「０」で設定され、クラスＺのトラヒックのパケットは、中継器１０３において送信間隔を空けることなく連続して送信できることを示す。なお、設定された送信間隔は小さい方が、送信レートは大きくなり、送信間隔が大きい場合は、送信レートは小さくなる。また、レート制御値記憶部２００３の送信レートの設定方法は、例えば、バスシステムが起動する電源投入時に不揮発性のメモリから読み込む方法、信号線の配線を介し、別のノードから設定された送信レートを読み込む方法がある。
【０２１９】
図３３は、出力調停部１４１０の動作フローを示す。
【０２２０】
出力調停部１４１０は、クラス記憶部１４１１から、各クラスの優先度を取得する（Ｓ２８０１）。
【０２２１】
出力調停部１４１０は、送信すべき入力バッファ１４１５を選択するために、バッファ情報記憶部１４０７から、入力バッファ１４１５の情報（出力ポート番号、クラスの属性情報、締切時刻）を取得する（Ｓ２８０２）。
【０２２２】
レート制御部１４０９へ送信可否を問い合わせるために、出力調停部１４１０は入力バッファの出力ポート番号とクラスの属性情報を通知し（Ｓ２８０３）、レート制御部１４０９から送信可否を取得する（Ｓ２８０４）。
【０２２３】
出力調停部１４１０は、取得した送信可否、出力ポート番号、クラスの属性、締切時刻に基づき、送信可の入力バッファの中から、出力ポート番号ごとにクラスの優先度が最も高いバッファを選択する。優先度が重複した場合には、出力調停部１４１０は、締切時刻が早いバッファを選ぶ。これにより出力調停部１４１０は、送信すべき入力バッファを調停する（Ｓ２８０５）。
【０２２４】
出力調停部１４１０は、スイッチ切替部１４１２へ送信すべき入力バッファと出力ポート番号の組合せを通知し（Ｓ２８０６）、送信した入力バッファ１４１５の結果（送信する入力バッファのクラスと出力ポート番号）をレート制御部１４０９へ通知する（Ｓ２８０６）。
【０２２５】
図３４は、出力調停部１４１０が送信すべき入力バッファ１４１５を調停する処理（Ｓ２８０５）のフローチャートを示す。
【０２２６】
出力調停部１４１０は、送信可の入力バッファを高優先度で伝送し、送信不可の入力バッファを送信可の入力バッファより低優先度で伝送するよう制御する。
【０２２７】
出力調停部１４１０は、入力バッファ１４１５の中から送信可の入力バッファを抽出し（Ｓ２９０１）、抽出された入力バッファの中から、出力ポート番号ごとにクラスの優先順位の最も高い入力バッファを抽出する（Ｓ２９０２）。
【０２２８】
出力ポート番号ごとに、出力調停部１４１０は締切時刻の最も早い入力バッファを抽出し、送信すべき入力バッファとする（Ｓ２９０３）。
【０２２９】
出力調停部１４１０は、送信するべき入力バッファが抽出できなかった出力ポート番号に対し、出力ポート番号ごとに、クラスＡ、Ｂを除くクラスの入力バッファ１４１５の中から送信不可の入力バッファを抽出する（Ｓ２９０４）。出力調停部１４１０は、抽出された入力バッファの中から出力ポート番号ごとに、クラスの優先順位の最も高い入力バッファを抽出する（Ｓ２９０５）。出力調停部１４１０は、抽出された入力バッファの中から出力ポート番号ごとに、締切時刻の最も早い入力バッファを抽出する（Ｓ２９０６）。
【０２３０】
図３５は、中継器１０３のバッファ情報記憶部１４０７の管理情報の構成例を示す。
【０２３１】
バッファ情報記憶部１４０７は、各入力バッファ１４０５に対応するクラスと宛先スレーブＩＤを記憶している。バッファ情報記憶部１４０７には、各入力バッファ１４０５に格納されたパケットの有無や、締切時刻、宛先スレーブＩＤに基づいて選択された出力ポート番号、およびスレーブ側の中継器１４０２の入力バッファの割り当て結果（入力バッファＩＤ）が格納されている。
【０２３２】
例えば、図３５の表の２行目の要素について説明する。この要素は、中継器１０３の入力ポート番号０の入力バッファＩＤ０に対応する情報を示している。この要素に関しては、入力バッファ１４０５には、クラスＡで宛先スレーブＩＤが０のパケットが格納されており、そのパケットの締切時刻は１００、出力ポート選択部１４０６によって割り当てられた出力ポート番号は０である。クラス解析部１４０３によって割り当てられたスレーブ側の中継器１４０２の入力バッファＩＤは０である。
【０２３３】
同じく表の３行目の要素は、入力ポート番号０の入力バッファＩＤ１に対応する情報を示している。この要素に関しては、入力バッファ１４０５には、クラスＡの宛先スレーブＩＤが１のトラヒックのパケットが格納される。この要素では、データの有無が「無し」になっていることより、格納されたパケットが存在しないことがわかる。
【０２３４】
図３６は、本発明の他の実施形態として適用できるＮｏＣ網の例を示している。
【０２３５】
なお、本発明の一実施形態にかかる中継器は、要求性能に応じたバッファ分離構成と伝送制御方式によって性能保証に必要なバス動作周波数を小さくし、余剰帯域の利用効率を大きくしている。そのため、ＮｏＣ網の中継器の接続関係には依存せず、図３６（ａ）のメッシュ型のＮｏＣや、図３６（ｂ）のトーラス型、図３６（ｃ）のツリー型のような接続関係であっても適用することができる。
【０２３６】
上述の実施形態によれば、中継器において上述したクラス分類によってバッファを分離して備え、低優先度クラスによる干渉を抑制しつつ、必要なバス帯域を小さくできた。しかしながら、パケットの種別によってバッファを分離してもよい。
【０２３７】
パケットには、コマンドを送るパケットとデータを送るパケットという、２つの種類が存在する。
【０２３８】
コマンドは２種類存在する。すなわち、スレーブに対するＲｅａｄアクセスの際に、データの読み出しに必要となるリクエスト情報を含むコマンドと、スレーブに対するＷｒｉｔｅアクセスの際に、データの書き込みのレスポンス情報を含むコマンドがある。Ｒｅａｄリクエストのコマンドは、マスタから送信され、スレーブに受信される。Ｗｒｉｔｅレスポンスのコマンドは、スレーブから送信され、マスタに受信される。
【０２３９】
一方、データも同様に２種類存在する。すなわち、Ｗｒｉｔｅアクセスの際に、スレーブに書き込むための内容を含むデータと、Ｒｅａｄアクセスの際に、スレーブから読みだした内容を含むデータである。Ｗｒｉｔｅデータを含むパケットは、マスタから送信され、スレーブで受信される。Ｒｅａｄデータを含むパケットは、スレーブから送信され、マスタで受信される。
【０２４０】
例えば、Ｒｅａｄアクセスに対する遅延を小さくする目的で、Ｒｅａｄアクセスのコマンドを含むパケットに対しては中継器においてレート制御を行わず、Ｗｒｉｔｅアクセスのデータを含むパケットに対してのみレート制御を行うことが考えられる。その場合、それらのコマンドとデータに対して分離してバッファを備えることで、コマンドとデータの制御方式の違いによる干渉を抑制することができる。その結果として、コマンドの最大遅延時間をより小さく見積もることができ、性能を保証するのに必要なバス帯域を小さくすることができる。
【０２４１】
図３７は、コマンドとデータを分離した場合のバッファ構成の例を示している。コマンドに対してはレート制御は行われず、データに対してのみレート制御が行われる。なお、本実施形態では、バッファを物理的に分離した構成に基づいて説明するが、論理的に分離されていれば、物理的に分離していなくてもよい。
【０２４２】
図３８は、コマンドとデータを分離した場合の効果として、コマンドに対する遅延を短縮できることを示している。
【０２４３】
図３７において、中継器１０３は、コマンド用の入力バッファ３７０１とデータ用の入力バッファ３７０２とを備える入力バッファ部１４０４を備えている。コマンドとデータごとに入力バッファ１４０５を分離して構成することで、コマンドとデータの間で伝送を切り替えることが可能になり、互いの干渉を抑制することができる。例えば、入力バッファ３７０２に格納されたクラスＡのＷｒｉｔｅアクセスのデータ用のパケットがレート制御により伝送を抑制されているとする。その間に、レート制御の不要なＲｅａｄアクセスのコマンド用のパケットが到着し、コマンド用の入力バッファ３７０１に格納されたとする。その場合は、中継器１０３は、分離されている効果により、Ｒｅａｄアクセスのパケットの伝送をすぐに開始できる。図３８（Ａ）は、コマンドとデータごとに入力バッファ１４０５を分離した場合における、パケット送信時刻の様子を示す。
【０２４４】
一方、例えば、これらのパケットが到着順に同じ入力バッファに格納され、それらのパケット間で伝送切り替えができない場合（例えば入力バッファが一つのＦＩＦＯで構成されている場合）、先に到着したＷｒｉｔｅアクセスのパケットはレート制御により送信を抑制され、後から到着したＲｅａｄアクセスのパケットはそれより前方にいるＷｒｉｔｅアクセスのパケットの影響を受けて送信を抑制される。図３８（Ｂ）は、パケット間で伝送切り替えができない場合におけるパケット送信時刻を示す。つまり、同じ入力バッファに格納されるパケットに対し、互いに干渉を受けることで遅延が大きくなり、性能を保証するのに必要な動作周波数を大きく見積もる必要がある。
【０２４５】
よって、レート制御を行うＷｒｉｔｅデータパケットと、レート制御を行わないＲｅａｄコマンドパケットに対して入力バッファを分離し、それらの間で伝送を切り替えられる方式にすることで、Ｒｅａｄコマンドパケットの伝送遅延を緩和できる。これにより、互いの影響による中継器における遅延時間を小さくし、性能を保証するのに必要なバス動作周波数を小さくすることができる。
【０２４６】
次に、パケットを多重化して伝送することで、特定のマスタの送信間隔あたりのスループットを向上し、必要な動作周波数の見積もりが低減する方法を説明する。
【０２４７】
図３９は、パケットを多重化して伝送する方法の概要を示す。「パケットを多重化する」とは、マスタ側ＮＩＣ１０２が、複数の通信データからひとつのパケットを生成することを言う。パケットの「多重化」の逆の処理が、パケットの「逆多重化」である。スレーブ側ＮＩＣ１０４は、受信した多重化されたパケットを逆多重化して、元の複数の通信データに復元する。
【０２４８】
図４０（Ａ）および（Ｂ）は、パケット多重化の有無に応じたパケット伝送例を示す。図４０（Ａ）は、パケットを多重化しない場合の例を示す。この例では、通信データごとにパケットが生成され、伝送が行われる。図４０（Ｂ）は、パケットを多重化した場合の例を示す。この例では、複数の通信データに基づいてひとつのパケットが生成され、伝送が行われる。
【０２４９】
各マスタの要求仕様に基づき、各マスタに対し「スループット性能を保証できる送信間隔の最大値」を求めてパケットの多重化を行う場合、送信間隔あたりの伝送量を増やすことで、送信間隔の最大値を大きくすることができる。同一のクラスに分類される複数のマスタは、中継器において同一の送信間隔で制御される。よって、スループット性能を保証できる送信間隔の最大値に大きな差がある場合、送信間隔を必要以上に小さくする必要があり、動作周波数の見積もりが過剰になりやすい。そのため、同一クラス内で送信間隔の最大値が小さいマスタに対して、パケットを多重化して伝送することで、スループット性能を保証できる最大の送信間隔を大きくすることができ、必要な動作周波数を低減することができる。
【０２５０】
図４１は、パケット多重化のためのパケット２０２の構成を示す。パケットは、パケットの開始コード７０３とは別に、ひとつのパケットの中に複数の通信データを格納するために、通信データの開始コード７０９を各通信データの先頭に備え、通信データの開始コード７０９を送信するための専用の信号線をバスシステムに備える。通信データの開始コード７０９は、通信データを復元する際に、分割の目印となる位置に挿入され、専用の信号線を介して、パケットと共に伝送される。専用の信号線を用いることで、複雑な構造を用意することなく、パケットの多重化を実現できる。
【０２５１】
なお、本実施形態においては、パケットの多重化の際に、通信データの開始コード７０９を送信するための専用の信号線を用いたが、ヘッダに多重化した複数の通信データの構造を表す情報を付与してもよい。例えば、多重化した通信データの数と、それぞれの通信データのデータ長の情報をヘッダに付与する方法でも、通信データの復元が可能である。
【０２５２】
パケット多重化のためのマスタ側ＮＩＣ１０２の構成は、図１２と同じである。
【０２５３】
図４２は、パケット多重化のためのマスタ側ＮＩＣ１０２の動作フローを示す。パケット多重化のため、出力切替部８０５は送信可の入力バッファから、格納された複数の通信データを転送する（Ｓ６２０４）。パケット生成部８０６は、受信した複数の通信データに対し、通信データの開始コード７０９を各通信データの先頭に付与し、ヘッダ７０１と終了コード７０２を付与してパケットを生成する（Ｓ６２０５）。
【０２５４】
なお、多重化する数の決定方法は、前記のように格納された通信データの数とする方法以外で実現してもよい。例えば、マスタが既定の発行パターンでのみトラヒックを発行する場合には、挙動が設計時に完全に想定でき、多重化数を設計時に決める方法でもよい。また、マスタが不定の発行パターンでトラヒックを発行する場合には、あらかじめ設定したパケット長に達した時にひとつのパケットとして伝送する方法でもよい。
【０２５５】
図４３は、パケット多重化のためのスレーブ側ＮＩＣ１０４の構成を示す。多重化されたパケットから複数の通信データを復元するために、通信データ復元部６３０３を備える。スレーブ側ＮＩＣ１０４は、通信データ復元部６３０３の他に、パケットを受信するためのパケット受信部６３０１、パケットの情報（送信元ＩＤ、締切時刻、クラス）を格納するためのバッファ情報記憶部６３０２、復元した通信データを格納する入力バッファ部６３０４、スレーブ１０５からスレーブ１０５のバッファの空き情報を取得し、スレーブ側ＮＩＣ１０４のバッファの空き情報をマスタ側の中継器１４０１に通知するバッファ利用情報通信部６３０７、バッファの空き情報と、クラス、送信元ＩＤに基づいてスレーブで格納するバッファ番号を割り当てた上で、締切時刻、クラスに基づいて送信する順番を決定する出力切替部６３０５を備える。
【０２５６】
図４４は、パケット多重化のためのスレーブ側ＮＩＣ１０４の動作フローを示す。パケット受信部６３０１が、マスタ側の中継器から、パケット２０２を受信する（Ｓ６４０１）。パケット受信部は、パケットの情報（送信元ＩＤ、締切時刻、クラス）を、パケット情報記憶部６３０２に記録する（Ｓ６４０２）。通信データ復元部６３０３が、パケットからヘッダ７０１と終了コード７０２を取り外し、通信データ２０１に復元する（Ｓ６４０３）。多重化されたパケットの場合、パケットと一緒に受信した通信データの開始コード７０９に基づいて、通信データへと復元する際に、複数の通信データに分割する。
【０２５７】
通信データ復元部６３０３が、通信データ２０１をヘッダ７０１が有する入力バッファ番号７０８に基づいて、入力バッファ部６３０４に格納する（Ｓ６４０４）。
【０２５８】
スレーブ側ＮＩＣ１０４において、スレーブ１０５で格納するバッファ番号を割り当てるために、スレーブ１０５からスレーブ１０５のバッファの空き情報を取得し、マスタ側の中継器１４０１において、スレーブ側ＮＩＣ１０４で格納するバッファ番号を割り当てるために、マスタ側の中継器１４０１に対しスレーブ側ＮＩＣ１０４のバッファの空き情報を通知する（Ｓ６４０５）。出力切替部６３０５が、取得したスレーブのバッファの空き情報と、バッファ情報記憶部６３０２の情報（送信元ＩＤ、クラス）に基づいて、スレーブ１０５で格納するバッファ番号を割り当てる（Ｓ６４０６）。出力切替部６３０５が、クラス、締切時刻に応じて、入力バッファ部６３０４に格納された通信データ２０２の送信する順番を決定し、通信データ２０２、および、割り当てた入力バッファ番号７０８を、スレーブ１０５へ送信する（Ｓ６４０７）。
【０２５９】
（利用例１）
以下、本発明の例示的な実施形態による中継器の実際の機器への利用例を説明する。
【０２６０】
図４５は、半導体回路上の複数のマスタと複数のメモリおよび外部とデータを通信するための共用の入出力ポート（Ｉ／Ｏポート）とを分散型のバスを利用して接続した例を示している。このような半導体回路は、例えば、携帯電話、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔｓ）、電子書籍リーダーなどの携帯端末や、ＴＶ、ビデオレコーダ、ビデオカメラ、監視カメラ等の機器で用いられ得る。マスタは、例えば、ＣＰＵ、ＤＳＰ、伝送処理部、画像処理部などである。スレーブは、揮発性のＤＲＡＭであってもよいし、不揮発性のフラッシュメモリであってもよい。また、揮発性メモリおよび不揮発性メモリが混在していてもよい。また、入出力ポートは、外付けのＨＤＤやＳＳＤ、ＤＶＤなどの記憶装置と接続するためのＵＳＢやイーサネット（登録商標）などの通信インターフェイスであり得る。
【０２６１】
複数の映像や音楽などの再生、記録、トランスコード、および書籍、写真、地図データ等の閲覧や編集、ゲームのプレイなど、複数のアプリケーションやサービスを同時に利用する場合、各マスタからメモリへ、異なる要求性能のアクセスが行われる。このとき、バスを設計する際に、性能保証の可能な必要最小限のバス帯域を見積もり、バス帯域の利用効率を最大化することができれば、開発の実装コストを下げることができ、製品化を加速化することができる。
【０２６２】
実現手段として例えば、アプリケーションやサービス等の種類によってマスタが利用する要求帯域や許容遅延時間を定義し、要求性能に応じたクラス分類に基づくバッファ分離構成、伝送制御方式により、トラヒック間の干渉を抑制しつつ、余剰帯域の利用効率を大きくすることで、性能保証に必要なバス帯域を小さく見積もることができる。
【０２６３】
（利用例２）
次に、本発明の例示的な実施形態にかかる中継器のマルチコアプロセッサ（ｍｕｌｔｉ−ｃｏｒｅ  ｐｒｏｃｅｓｓｏｒ）への利用例を説明する。
【０２６４】
図４６は、ＣＰＵやＧＰＵ，ＤＳＰ等のコアプロセッサの処理能力を向上させるために、複数のコアプロセッサをメッシュ状に配列し、これらを分散バスで接続したマルチコアプロセッサを示している。この構成では、各コアプロセッサが上述の第１ノードとして機能し得るし、第２ノードとしても機能し得る。
【０２６５】
マルチコアプロセッサ上では、各コアプロセッサ間で通信が行われる。例えば、各コアプロセッサには、演算処理に必要なデータを記憶しておくキャッシュメモリが備えられており、コアプロセッサ間で互いのキャッシュメモリの情報をやり取りすることができる。これによって情報の共有が可能となり、処理性能を向上させることができる。
【０２６６】
しかし、マルチコアプロセッサ上で発生するコアプロセッサ間の通信は、それぞれ位置関係や距離（中継ホップ数）、通信頻度が異なる。このため、データパケットの順序を単純に維持したまま中継すると、優先度の高いアプリケーションのトラヒックが優先度の低いアプリケーションのトラヒックの干渉を受け、伝送時間も大きくなる。その結果、マルチコアプロセッサの性能の低下を引き起こす。
【０２６７】
これに対し、本発明のある実施形態による中継器を用いた場合には、各ＣＰＵが実行するアプリケーションの属性でクラス分類を行うことで、バス帯域を効率よく利用することができ、必要なバス帯域をより小さく見積もることができる。例えば、高頻度でメモリにアクセスするアプリケーションの場合は、他のアプリケーションより優先度の高いクラスに分類し、低頻度で定期的にアクセスするアプリケーションで、アクセス要求を先行的に発行可能な場合は、優先度を下げつつ、要求帯域を超えて送信レートを制御することで、トラヒックがバス中を伝送される時間を抑え、バスの余剰帯域を利用することができ、その結果として、各コアプロセッサの性能向上、および処理時間の効率を向上させることができる。
【０２６８】
（利用例３）
以上の説明では、第１ノード、中継器、第２ノードの各構成要素は、ブロック化された個別の機能部として表されているが、これらの機能部の処理を規定するプログラムを中継器に実装されたプロセッサ（コンピュータ）に実行させることによって中継器の動作が実現されていてもよい。そのようなプログラムの処理手順は、例えば図示されたフローチャートに記載されているとおりである。
【０２６９】
上述の実施形態および利用例では、本願発明がチップ上で実装された際の構成を説明した。本願発明は、チップ上に実装されるだけでなく、チップ上に実装するための設計及び検証を行うシミュレーションプログラムとしても実施され得る。そのようなシミュレーションプログラムは、コンピュータによって実行される。例えば、図１２に示される各構成要素は、シミュレーションプログラム上のオブジェクト化されたクラスとして実装される。各クラスは、予め定められたシミュレーションシナリオを読み込むことにより、各構成要素に対応する動作をコンピュータ上で実現する。言い換えると、各構成要素に対応する動作は、コンピュータの処理ステップとして直列的または並列的に実行される。
【０２７０】
中継器として実装されたデータクラスは、シミュレータで定義されたシミュレーションシナリオを読み込むことにより、バスマスタのクラス等の条件を決定する。また、他の中継器のデータクラスから送信されるパケットの送信タイミング、送信先、優先度、締切時間等の条件を決定する。
【０２７１】
中継器として実装されたデータクラスは、シミュレーションシナリオに記述されたシミュレーションの終了条件が成立する迄の間、動作を行う。動作中のスループットやレイテンシ、バスの流量の変動の様子、動作周波数、消費電力の見積値等を算出しプログラムの利用者に提供する。これらに基づき、プログラムの利用者はトポロジや性能の評価を行い、設計及び検証を行う。
【０２７２】
シミュレーションシナリオの各行には、例えば、送信元ノードのＩＤ、宛先ノードのＩＤ、送信するパケットのサイズ、送信するタイミング等の情報が記述されるのが普通である。また複数のシミュレーションシナリオをバッチ処理的に評価することで、想定した全てのシナリオで所望の性能が保証できているか否かを効率的に検証できる。またバスのトポロジやノード数、送信ノード、中継器、宛先ノードの配置を変化させて性能比較することにより、シミュレーションシナリオに最も適したネットワーク構成を特定することもできる。上記の実施形態のいずれもが本態様の設計及び検証ツールとしても適用可能である。このように、本願発明の例示的な実施形態は、設計及び検証ツールとして実現され得る。
【産業上の利用可能性】
【０２７３】
本発明のある実施形態は、半導体の集積回路における分散型バスにおいて、バスを流れる、異なる要求性能を有する複数のトラヒックに対し、定量的試算に基づき比較的小さい（たとえば最も小さい）バス動作周波数でバスの伝送効率を最大化でき、かつ、性能を保証する中継器の構成とＱｏＳの技術を備えた半導体バスに利用できる。
【符号の説明】
【０２７４】
１０１  バスマスタ
１０２  マスタ側ＮＩＣ
１０３  中継器
１０４  スレーブ側ＮＩＣ
８０１  宛先解析部
８０２  入力バッファ部
８０３  マスタ情報記憶部
８０４  レート制御部（送信制御部）
８０５  出力切替部
８０６  パケット生成部
８０７  バッファ利用情報通信部
１４０３  クラス解析部
１４０４  入力バッファ部
１４０６  出力ポート選択部
１４０７  バッファ情報記憶部
１４０８  バッファ利用情報通信部
１４０９  レート制御部（中継制御部）
１４１０  出力調停部
１４１１  クラス記憶部
１４１２  スイッチ切替部
【図１】
2014017069.tif 000003
【図２】
2014017069.tif 000004
【図３】
2014017069.tif 000005
【図４】
2014017069.tif 000006
【図５】
2014017069.tif 000007
【図６】
2014017069.tif 000008
【図７】
2014017069.tif 000009
【図８】
2014017069.tif 000010
【図９】
2014017069.tif 000011
【図１０】
2014017069.tif 000012
【図１１】
2014017069.tif 000013
【図１２】
2014017069.tif 000014
【図１３】
2014017069.tif 000015
【図１４】
2014017069.tif 000016
【図１５】
2014017069.tif 000017
【図１６】
2014017069.tif 000018
【図１７】
2014017069.tif 000019
【図１８】
2014017069.tif 000020
【図１９】
2014017069.tif 000021
【図２０】
2014017069.tif 000022
【図２１】
2014017069.tif 000023
【図２２】
2014017069.tif 000024
【図２３】
2014017069.tif 000025
【図２４】
2014017069.tif 000026
【図２５】
2014017069.tif 000027
【図２６】
2014017069.tif 000028
【図２７】
2014017069.tif 000029
【図２８】
2014017069.tif 000030
【図２９】
2014017069.tif 000031
【図３０】
2014017069.tif 000032
【図３１】
2014017069.tif 000033
【図３２】
2014017069.tif 000034
【図３３】
2014017069.tif 000035
【図３４】
2014017069.tif 000036
【図３５】
2014017069.tif 000037
【図３６】
2014017069.tif 000038
【図３７】
2014017069.tif 000039
【図３８】
2014017069.tif 000040
【図３９】
2014017069.tif 000041
【図４０】
2014017069.tif 000042
【図４１】
2014017069.tif 000043
【図４２】
2014017069.tif 000044
【図４３】
2014017069.tif 000045
【図４４】
2014017069.tif 000046
【図４５】
2014017069.tif 000047
【図４６】
2014017069.tif 000048
【図４７】
2014017069.tif 000049
【手続補正書】
【提出日】平成26年1月9日(2014.1.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワーク化されたバスと、前記バスに配置された少なくとも１つの中継器とを介して第１ノードおよび少なくとも１つの第２ノードの間でデータを伝送する、半導体回路のバスシステムであって、
伝送されるデータは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含み、
前記第１ノードは、
伝送されるデータ、および伝送されるデータの要求性能を識別するための識別情報を含むパケットを複数生成するパケット生成部と、
前記パケットの送信を制御する送信制御部とを備え、
前記少なくとも１つの中継器は、
受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、
前記識別情報ごとに、識別情報に対応するすべての第１ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部と
を備え、
各性能保証データには、保証すべき送信レートが予め設定されており、
前記送信制御部は、前記性能保証データの保証すべき送信レートを超えた所定レートで、または送信レートに制限を設けることなく、前記性能保証データのパケットの送信を制御し、
前記少なくとも１つの中継器は、保証すべき前記送信レートを維持可能な第１の帯域、および余剰帯域である第２の帯域を利用して、保証すべき送信レートを超えたレートで前記性能保証データのパケットを伝送可能であり、
前記中継制御部は、前記バッファ部に格納された複数のパケットのうち、前記性能保証データの各パケットを、前記識別情報に基づいて、前記第１の帯域を利用して伝送するか、前記第１の帯域および前記第２の帯域を利用して伝送するかに分類し、前記第１の帯域を利用する各パケットを優先的に伝送する、バスシステム。
【請求項２】
前記少なくとも１つの中継器は複数存在し、
複数の中継器は同一の動作周波数で動作し、かつ前記複数の中継器に備えられた各中継制御部は、同一の送信レートで前記各パケットの送信を制御しており、
前記同一の送信レートは、前記複数の中継器が保証すべき各送信レートのうちの最大の送信レート以上に設定されている、請求項１に記載のバスシステム。
【請求項３】
前記伝送されるデータは、スループット及び許容遅延時間の両方を保証しない非性能保証データをさらに含み、
前記送信制御部は、送信レートに制限を設けることなく前記非性能保証データのパケットの送信を制御し、
前記バッファ部は、受信した前記非性能保証データのパケットをさらに分離して格納し、
前記中継制御部は、前記性能保証データのパケット、および前記非性能保証データのパケットの順に伝送する、請求項１に記載のバスシステム。
【請求項４】
前記パケット生成部は、前記パケットの締切時間に関する時間情報を前記パケットにさらに付与しており、
前記中継制御部は、同一の識別情報が付与されたパケットについては各パケットの前記締切時間に応じて伝送する順位を決定する、請求項１に記載のバスシステム。
【請求項５】
前記締切時間に関する時間情報は、前記パケットが前記少なくとも１つの第２ノードに到達すべき締切時間の情報、前記第１ノードが前記パケットを送信した時刻の情報、前記第１ノードおよび前記中継器の処理時間の累積値の情報、および前記パケットの前記第１ノードにおける送信順序を表す送信カウンタの値の情報のいずれかである、請求項４に記載のバスシステム。
【請求項６】
前記締切時間に関する時間情報が前記締切時間を示す場合、
前記中継制御部は、前記締切時間が早いパケットから優先して送信する、請求項５に記載のバスシステム。
【請求項７】
前記第１の帯域および前記第２の帯域を利用して伝送される各パケットに関し、
前記中継制御部および前記送信制御部は、保証すべき送信レートを超えたレートを、バスシステムのボトルネックとなるノードまたはリンクの処理能力に基づいて決定する、請求項１に記載のバスシステム。
【請求項８】
ネットワーク化されたバスと、前記バスに配置された少なくとも１つの中継器とを介して第１ノードおよび少なくとも１つの第２ノードの間でデータを伝送する、半導体回路のバスシステムであって、
伝送されるデータは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含み、
前記第１ノードは、
伝送されるデータ、および伝送されるデータの要求性能を識別するための識別情報を含むパケットを複数生成するパケット生成部と、
前記パケットの送信を制御する送信制御部とを備え、
前記少なくとも１つの中継器は、
受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、
前記識別情報ごとに、識別情報に対応するすべての第１ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部と
を備え、
前記性能保証データは、バースト性のあるバーストデータ、および、バースト性のない非バーストデータを含んでおり、
前記パケット生成部が付与する前記識別情報は、前記バーストデータ、非バーストデータを識別可能であり、
前記少なくとも１つの中継器のバッファ部は、前記複数のバッファに、前記バーストデータ、非バーストデータを分離して格納し、
前記少なくとも１つの中継器の前記中継制御部は、前記バーストデータ、非バーストデータの順で、前記パケットを伝送する、バスシステム。
【請求項９】
前記第１ノードの送信制御部は、前記バーストデータを予め定めた送信レートで送信し、
前記中継制御部は、少なくとも前記バーストデータを予め定めた送信レートで送信する、請求項８に記載のバスシステム。
【請求項１０】
前記少なくとも１つの第２ノードは複数存在しており、
前記少なくとも１つの中継器のバッファ部は、前記複数のバッファに、第２ノード毎のパケットを分離して格納する、請求項１に記載のバスシステム。
【請求項１１】
パケットには、コマンドを送るパケットとデータを送るパケットが存在しており、
前記中継制御部は、前記コマンドを送るパケットに対し送信レート制限を設けずに送信する、請求項１、２および７のいずれかに記載のバスシステム。
【請求項１２】
パケットには、コマンドを送るパケットとデータを送るパケットが存在しており、
前記少なくとも１つの中継器のバッファ部は、前記複数のバッファに、前記コマンドを送るパケットと、前記データを送るパケットとを分離して格納する、請求項１１に記載のバスシステム。
【請求項１３】
前記第１ノードのパケット生成部は、複数のパケットを多重化して伝送する、請求項２に記載のバスシステム。
【請求項１４】
多重化された前記パケットを送信する前記第１ノードおよび前記少なくとも１つの中継器は、多重化された前記パケットを個々のデータに復元するための分割位置を示す情報を伝送する信号線を備えた、請求項１３に記載のバスシステム。
【請求項１５】
半導体回路のバスシステムに設けられたネットワーク化されたバスに配置され、前記バスシステムの第１ノードおよび少なくとも１つの第２ノードの間で伝送されるデータを中継する中継器であって、
前記第１ノードは、伝送される前記データ、および伝送される前記データの要求性能を識別するための識別情報を含むパケットを複数生成して送信し、
伝送される前記データは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含んでおり、
受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、
前記識別情報ごとに、識別情報に対応するすべての第１ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部と
を備え、
各性能保証データには、保証すべき送信レートが予め設定されており、
前記第１ノードは、前記性能保証データの保証すべき送信レートを超えた所定レートで、または送信レートに制限を設けることなく、前記性能保証データのパケットの送信を制御し、
前記中継器は、保証すべき前記送信レートを維持可能な第１の帯域、および余剰帯域である第２の帯域を利用して、保証すべき送信レートを超えたレートで前記性能保証データのパケットを伝送可能であり、
前記中継制御部は、前記バッファ部に格納された複数のパケットのうち、前記性能保証データの各パケットを、前記識別情報に基づいて、前記第１の帯域を利用して伝送するか、前記第１の帯域および前記第２の帯域を利用して伝送するかに分類し、前記第１の帯域を利用する各パケットを優先的に伝送する、中継器。
【請求項１６】
半導体回路のバスシステムに設けられたネットワーク化されたバスに配置され、前記バスシステムの第１ノードおよび少なくとも１つの第２ノードの間で伝送されるデータを中継する中継器であって、
前記第１ノードは、伝送される前記データ、および伝送される前記データの要求性能を識別するための識別情報を含むパケットを複数生成して送信し、
伝送される前記データは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含んでおり、
受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、
前記識別情報ごとに、識別情報に対応するすべての第１ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部と
を備え、
前記性能保証データは、バースト性のあるバーストデータ、および、バースト性のない非バーストデータを含んでおり、
前記パケット生成部が付与する前記識別情報は、前記バーストデータ、非バーストデータを識別可能であり、
前記バッファ部は、前記複数のバッファに、前記バーストデータ、非バーストデータを分離して格納し、
前記中継制御部は、前記バーストデータ、非バーストデータの順で、前記パケットを伝送する、中継器。
【国際調査報告】
2014017069.tif 000050
2014017069.tif 000051
2014017069.tif 000052
2014017069.tif 000053