(57)【要約】  半導体回路のバスシステム（１００）は、ネットワーク化されたバスにおいて、バスに配置された中継装置（２５０）を介して、第１ノードおよび少なくとも１つの第２ノードの間でデータを伝送する。バスシステム（１００）は、相対的に低遅延の第１のバスと相対的に高遅延の第２のバスとを備える。第１ノードは、バッファ部（２０２）に格納されたデータに、中継装置（２５０）における伝送の優先度を特定する情報を付与して複数のパケットを生成する。中継装置（２５０）は、各パケットの優先度を高遅延のバスの伝送遅延に基づいて決定された優先度に変換するための優先度変換ルールに基づいて、優先度を変換し、変換された優先度に基づいて、各パケットの送信先中継装置のバッファを割り当て、優先度の高い順に、パケットを送信する。また中継装置（２５０）は、優先度に基づいて、バッファ部（２５２）にパケットを格納する。
2014141678.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク化されたバスにおいて、前記バスに配置された中継装置を介して、第１ノードおよび少なくとも１つの第２ノードの間でデータを伝送する、半導体回路のバスシステムであって、
前記バスシステムは、相対的に低遅延の第１のバスと相対的に高遅延の第２のバスとを備え、
前記第１ノードは、
データを格納するバッファ部と、
前記バッファ部に格納されたデータに、前記中継装置における伝送の優先度を特定する情報を付与して複数のパケットを生成するパケット生成部と
を備え、
前記中継装置は、
前記複数のパケットの各々の優先度を高遅延のバスの伝送遅延に基づいて決定された優先度に変換するための優先度変換ルールに基づいて、前記優先度を変換する優先度変換部と、
変換された前記優先度に基づいて、前記パケットを送信する送信先の中継装置のバッファの割当を行うバッファ割当部と、
前記優先度の高い順に、パケットの送信を行う送信制御部と、
前記優先度に基づいて、パケットを格納するバッファ部と
を備えた、バスシステム。
【請求項２】
前記中継装置は、
前記優先度変換ルールを記憶する記憶部を更に備えた、請求項１に記載のバスシステム。
【請求項３】
ネットワーク化されたバスにおいて、前記バスに配置された中継装置を介して、第１ノードおよび少なくとも１つの第２ノードの間でデータを伝送する、半導体回路のバスシステムであって、
前記バスシステムは、相対的に低遅延の第１のバスと、相対的に高遅延の第２のバスとを備え、
前記第１ノードは、
データを格納するバッファ部と、
前記バッファ部に格納されたデータに、相対的に伝送遅延が大きい高遅延バスの伝送遅延に基づいて決定された、前記中継装置における伝送の優先度を特定する情報を付与して複数のパケットを生成するパケット生成部と
を備え、
前記中継装置は、
前記優先度に基づいて、前記パケットを送信する送信先の中継装置のバッファの割当を行うバッファ割当部と、
前記優先度の高い順に、パケットの送信を行う送信制御部と、
前記優先度に基づいて、パケットを格納するバッファ部と
を備えた、バスシステム。
【請求項４】
前記中継装置は、予め定められた優先度変換ルールに基づいて、前記複数のパケットの各々の優先度を変換する優先度変換部をさらに備え、
前記バッファ割当部は、変換された前記優先度に基づいて、前記パケットを送信する送信先の中継装置のバッファの割当を行う、請求項３に記載のバスシステム。
【請求項５】
相対的に高遅延のバスを介して伝送されるパケットに関し、前記優先度変換部は、優先度がより高くなるよう前記優先度を変換する、請求項１または３に記載のバスシステム。
【請求項６】
相対的に高遅延の前記バスを介して伝送されないパケットに関し、前記優先度変換部は、優先度がより低くなるよう前記優先度を変換する、請求項１または３に記載のバスシステム。
【請求項７】
前記優先度は、要求品質の厳しさを表現するクラス、および要求品質の許容遅延を表す締切時刻の少なくとも一方によって決定される、１、３または５に記載のバスシステム。
【請求項８】
前記優先度が、要求品質の許容遅延を表す締切時刻によって決定される場合において、
前記優先度変換部は、パケットが通過する相対的に高遅延の前記第２のバスごとに、一定の時間、締切時刻が短くなるよう前記優先度を変換する、請求項７に記載のバスシステム。
【請求項９】
前記バッファ部は、相対的に高遅延のバスを介して伝送されるパケットと、相対的に低遅延のバスを介して伝送されるパケットを分離して格納する、請求項１または３に記載のバスシステム。
【請求項１０】
前記優先度が、要求品質の許容遅延を表す締切時刻によって決定される場合において、前記送信制御部は、締切時刻が短い順にパケットの送信を行う、請求項７に記載のバスシステム。
【請求項１１】
前記要求品質の厳しさを表現するクラスは、前記バス上の所定のノードが要求するスループット、許容遅延時間のうち、少なくとも１つにより定義される、請求項７に記載のバスシステム。
【請求項１２】
前記優先度が、前記要求品質の厳しさを表現するクラスによって決定される場合において、
前記中継装置のバッファ割当部および前記送信制御部は、前記優先度の低いクラスに関して、優先度の高いクラスよりも低い粒度で締切時刻の比較処理を行う、請求項７、または１１に記載のバスシステム。
【請求項１３】
前記優先度が、前記要求品質の厳しさを表現するクラスによって決定される場合において、
前記中継装置のバッファ部は、前記優先度の高いクラスのバッファ数よりも、前記優先度の低いクラスのバッファ数を少なく設定する、請求項７または１１に記載のバスシステム。
【請求項１４】
前記バスは、相対的に伝送遅延が大きい高遅延バスを含んでおり、
前記伝送遅延は、配線長、リピータ数、伝送材料、伝送路の伝送誤り率、伝送路での再送回数の少なくともひとつに基づいて決定される、請求項１または３に記載のバスシステム。
【請求項１５】
少なくとも２つのバスシステムが、異なる２つの伝送経路で相互接続されている場合において、
前記第１ノードおよび前記少なくとも１つの第２ノードは、それぞれ異なるバスシステムに存在しており、
前記２つの伝送経路は、それぞれパケットの往路および復路の経路として利用され、
前記往路にはパケットを中継する往路中継装置が設けられ、
前記復路にはパケットを中継する復路中継装置が設けられており、
前記往路中継装置は、少なくとも、前記第１ノードから前記少なくとも１つの第２ノードへ伝送されるパケットを中継し、前記復路中継装置は、少なくとも、前記少なくとも１つの第２ノードから前記第１ノードへ伝送されるパケットを中継し、
前記往路中継装置および前記復路中継装置は互いに接続されている、請求項１または３に記載のバスシステム。
【請求項１６】
ネットワーク化されたバスにおいて、前記バスに配置された中継装置を介して、第１ノードおよび少なくとも１つの第２ノードの間で複数のデータを伝送する半導体回路のバスシステムに設定する伝送の優先度を計算するための、コンピュータによって実行されるコンピュータプログラムであって、
前記バスシステムは、相対的に低遅延の第１のバスと、相対的に高遅延の第２のバスとを備え、
前記コンピュータプログラムはコンピュータに対し、
前記第２のバスの伝送遅延に基づいて決定された優先度に変換するための優先度変換ルール、および予め定められた優先度の情報の入力を受け取るステップと、
予め定められた前記優先度および前記優先度変換ルールに基づいて、前記中継装置における伝送の優先度を計算するステップと
を実行させる、コンピュータプログラム。
【請求項１７】
ネットワーク化されたバスにおいて、前記バスに配置された少なくとも１つの中継装置を介して、第１ノードおよび第２ノードの間でデータを伝送する半導体回路のバスシステムであって、
前記第２ノードは、前記中継装置よりも相対的に低い処理能力を有しており、
前記第１ノードおよび前記中継装置は第１のバスを介して接続され、
前記中継装置および前記第２ノードは第２のバスを介して接続されており、
前記第１のバスにおいては、前記要求品質の厳しさを表現するクラス単位でパケット処理を行う第１のクラス分類が定義され、前記第２のバスにおいては前記第１ノード単位でパケット処理を行う第２のクラス分類が定義されており、
前記第１ノードは、
前記データを格納するバッファ部と、
前記バッファ部に格納されたデータに、前記中継装置における伝送の優先度を特定するクラスを付与して複数のパケットを生成するパケット生成部と
を備え、
前記中継装置は、
前記第１のバスを介して、前記複数のパケットを受信するバッファ管理部と、
受信した前記パケットを格納するバッファ部と、
前記複数のパケットの送信元の第１ノードを識別し、クラス単位のパケット処理から前記第１ノード単位のパケット処理に変換して優先処理を行う優先度変換部と、
変換された、パケットの送信順位を示す優先度の高い順に、前記データを前記第２のバスを介して送信する送信制御部と
を備えている、バスシステム。
【請求項１８】
ネットワーク化されたバスにおいて、前記バスに配置された複数の中継装置を介して、第１ノードおよび第２ノードの間でデータを伝送する、半導体回路のバスシステムであって、
前記第２ノードは、前記中継装置よりも相対的に低い処理能力を有しており、
前記バスシステムは、パケットが伝送される経路として往路と復路とを独立して備えており、
前記第１ノードおよび前記中継装置は、前記往路を構成する第１のバスを介して接続され、
前記中継装置および前記第２ノードは、前記往路を構成する第２のバスを介して接続されており、
前記第１のバスにおいては、前記要求品質の厳しさを表現するクラス単位でパケット処理を行う第１のクラス分類が定義され、前記第２のバスにおいては前記第１ノード単位でパケット処理を行う第２のクラス分類が定義されており、
前記第１のバスと前記第２のバスとの間には第１の中継装置が配置されており、
前記第１の中継装置は、
前記第１のバスを介して、前記複数のパケットを受信するバッファ管理部と、
受信した前記パケットを格納するためのバッファ部と、
前記複数のパケットの送信元の第１ノードを識別し、クラス単位のパケット処理から前記第１ノード単位のパケット処理に変換して優先処理を行う優先度変換部と、
変換された、パケットの送信順位を示す優先度の高い順に、前記データを前記第２のバスを介して送信する送信制御部と
を備え、
前記復路には第２の中継装置が配置されており、
前記第２の中継装置は、前記第２ノードから前記第１ノードへ複数のパケットを伝送し、前記複数のパケットの送信の優先度を区別せずに伝送する、バスシステム。
【請求項１９】
前記第１の中継装置は、
前記第１ノード毎に送信レートを記憶するレート管理部と、
前記バッファ部に格納された複数のパケットに、前記レート管理部に設定された送信レートに基づいた第１の優先順位と、前記第１ノード単位に変換された前記クラスの優先度に基づく第２の優先順位を割り当て、前記第１の優先順位を優先的に用いて、前記データの送信を行う送信制御部と
をさらに備えた、請求項１７または１８に記載のバスシステム。
【請求項２０】
前記第１の中継装置は、送信先の前記第２ノードから、前記データの受信可否状態を取得するフロー制御部をさらに備えた、請求項１７または１８に記載のバスシステム。
【請求項２１】
前記第１の中継装置は、変換されたクラスの優先度が同じになる場合には、同じ優先度の複数の第１ノード間で送信レートが均等になるように送信処理を行う送信制御部を備えた、請求項１７または１８に記載のバスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、半導体の集積回路に設けられた、ネットワーク化された通信バス（分散型バス）を備えるバスシステムにおいて、通信バスの制御を行うための技術に関する。
【背景技術】
【０００２】
半導体回路を有するシステムの開発においては、複数の半導体回路を自由に組み合わせ、短い時間でシステムを作り上げることで、実装開発を低コスト化することが求められている。例えば、半導体回路をモジュール単位であらかじめチップ化しておき、新たな開発が必要のないモジュールについては、過去に開発したチップを外付けチップ（オフチップ）として利用することで、システムを低コストで開発することが可能になる。【０００３】
ところが、過去に開発したモジュールを効率的に利用するためには、半導体回路間を接続して通信データを伝送するバスシステムに、設定の柔軟性（自由な設定の粒度）が必要になる。各モジュールの中には複数のマスタ（ノード）が存在しており、各マスタはメモリなどのスレーブとの間でそれぞれ異なる要求品質でデータ通信を行う。ここでいう「要求品質」とは、たとえば保証すべき遅延、スループットである。【０００４】
データ通信のトラヒックを伝送するバスシステムには、バスの本数を削減可能な、ＮｏＣ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ）の技術が用いられる。ＮｏＣでは、ルータ（中継装置）を介してバスが接続される。異なる要求品質を持つトラヒックが同じバスを共有して伝送されるため、要求品質ごとに送信の仕方を変えて伝送が制御される。このとき、マスタの組み合わせ方に応じた最適な伝送性能（伝送にかかる遅延とスループット）を確保するためには、送信の仕方を柔軟に設定できる必要がある。これにより、モジュール単位で設定する場合やマスタ単位で設定する場合など、複数の設定のバリエーションを備える柔軟なバスシステムでは、より効率的に開発を行うことが可能になる。また、複数のチップを組み合わせるためには、全てのチップが対応可能な低速なバスでチップ間を接続しなければならないため、その低速リンクを通過するときの大きな伝送遅延を考慮した設定が必要になる。なお、本開示では以下において、遅延が大きいバスのことを「低速リンク」と呼ぶ。低速リンクは、他のバスとの関係で相対的に認定され得るし、チップが要求する伝送性能を満たさないバスとしても認定され得る。例えば、バスの単位時間あたりの伝送量が大きくても、遅延が大きいバスの場合は低速リンクに含まれる。【０００５】
特許文献１は、従来の中継装置を開示する。図１は、従来の中継装置の構成を示している。【０００６】
従来の中継装置には、３種類のバッファが設けられている。３種類のバッファとは、バスマスタＡ〜Ｃのそれぞれから伝送されたトラヒックを格納する専用のバッファである。バスマスタＡ〜Ｃは、それぞれ送信するトラヒックの種類（要求される品質）が決められている。たとえば、（Ａ）品質保証型のトラヒック、（Ｂ）出来高型リアルタイム（best-effort, low-delay type）のトラヒック、（Ｃ）出来高型（best-effort type）のトラヒックである。３種類のバッファは、これらのトラヒックを区別して送信スケジュールを制御するために設けられる。中継装置Ｒに届いたトラヒックは、いったん、それぞれ専用のバッファに区別して格納される。なお、トラヒックはパケットの形態で伝送される。【０００７】
中継装置は、各トラヒックの品質要求の優先度に応じてパケットの送信スケジュールを制御し、決定された送信スケジュールにしたがって各専用バッファからパケットを出力する。中継装置のアービターは品質要求の大きいバッファから優先的にバッファと出力ポートとを接続する。これにより、各トラヒックの品質要求の大きさに応じた送信スケジュールの制御を実現している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−５６３２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した従来の技術では、さらなる伝送性能の向上が求められていた。【００１０】
本願の、限定的ではない例示的なある実施形態は、高い伝送性能を有する、柔軟な設定が可能なバスシステムの技術を提供する。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明の一態様は、ネットワーク化されたバスにおいて、前記バスに配置された中継装置を介して、第１ノードおよび少なくとも１つの第２ノードの間でデータを伝送する、半導体回路のバスシステムであって、前記バスシステムは、相対的に低遅延の第１のバスと相対的に高遅延の第２のバスとを備え、前記第１ノードは、データを格納するバッファ部と、前記バッファ部に格納されたデータに、前記中継装置における伝送の優先度を特定する情報を付与して複数のパケットを生成するパケット生成部とを備え、前記中継装置は、前記複数のパケットの各々の優先度を高遅延のバスの伝送遅延に基づいて決定された優先度に変換するための優先度変換ルールに基づいて、前記優先度を変換する優先度変換部と、変換された前記優先度に基づいて、前記パケットを送信する送信先の中継装置のバッファの割当を行うバッファ割当部と、前記優先度の高い順に、パケットの送信を行う送信制御部と、前記優先度に基づいて、パケットを格納するバッファ部とを備えたバスシステムを含む。【００１２】
上述の一般的かつ特定の態様は、システム、方法およびコンピュータプログラムを用いて実装され、またはシステム、方法およびコンピュータプログラムの組み合わせを用いて実現され得る。
【発明の効果】
【００１３】
本発明の一態様にかかるバスシステムによれば、バスシステムの中継装置において伝送の優先度を変更しつつ、高い伝送性能で複数の半導体のモジュールを柔軟に組み合わせることができる。例えば、複数のチップ同士を接続する場合には、チップの組合せのバリエーションによらず、チップごとに合流する各トラヒックを最適な伝送性能（伝送にかかる遅延とスループット）で伝送できる。また、オフチップバスの伝送路の遅延を考慮した優先度の変更を行うことができる。柔軟な設定のバリエーションを用意することで、高い伝送性能を維持しながら、チップの変更量を調整することが可能になり、それにより低コストでの半導体開発が可能になる。
【図面の簡単な説明】
【００１４】
【図１】従来の中継装置の構成を示す図である。
【図２】本願発明者らが考察した、中継装置を用いた接続構成例を示す図である。
【図３】（Ａ）および（Ｂ）はそれぞれ、伝送性能差を生じさせる原因として想定しうる、２つのケースを示す図である。
【図４】例示的な実施形態における処理のポリシーを示す図である。
【図５】例示的な実施形態にかかるバスシステム１００の構成を示す図である。
【図６】ネットワーク・インタフェース・コントローラ（ＮＩＣ）２００の構成を示す図である。
【図７】ＮＩＣの動作手順を示すフローチャートである。
【図８】マスタ情報記憶部２０５に記憶される情報の構成例を示す図である。
【図９】パケットの構成を示す図である。
【図１０】優先度の変換を行うルータ２５０の構成を示す図である。
【図１１】優先度の変換を行うルータ２５０の動作手順を示すフローチャートである。
【図１２】優先度変換部２５５の動作手順を示すフローチャートである。
【図１３】記憶部２５６に記憶される優先度変換ルールを示す図である。
【図１４】マスタＩＤに代えて、バッファＩＤを用いて優先度を変換した場合の、優先度変換部２５５の動作手順を示すフローチャートである。
【図１５】バッファＩＤを用いた場合の優先度変換ルール記憶部の記憶する優先度変換ルールを示す図である。
【図１６】マスタＩＤではなく、トラヒックＩＤを用いて優先度を変換した場合の、優先度変換部２５５の動作手順を示すフローチャートである。
【図１７】トラヒックＩＤを用いた場合の優先度変換ルール記憶部の記憶する優先度変換ルールを示す図である。
【図１８】（Ａ）および（Ｂ）は、マスタの許容遅延時間と伝送遅延に基づいて、設計者が変換後のクラスを決める例を示す図である。
【図１９】（Ａ）および（Ｂ）は、マスタの許容遅延時間と伝送遅延に基づいてクラスを決める別の方法として、各クラスのマスタ数を均等に近づけるようにクラス分類する例を示す図である。
【図２０】低速リンクの伝送遅延の算出方法を示す図である。
【図２１】スレーブからの応答パケットが伝送される、復路の経路上での優先度変換処理を示す図である。
【図２２】（Ａ）および（Ｂ）は、それぞれ往路と復路とで優先度変換処理に差を設ける例を示す図である。
【図２３】変換後の優先度を付与したパケットの構成の例を示す図である。
【図２４】（Ａ）〜（Ｃ）は、図２３に示したパケットの構成に対し、実際のマスタから得られる情報で構成した例を示す図である。
【図２５】変換後の優先度を付与したパケットを生成するためのＮＩＣ２００の動作手順を示すフローチャートである。
【図２６】変換後の優先度を付与したパケットを生成するためのマスタ情報記憶部の構成を示す図である。
【図２７】ルータ２６０の構成を示す図である。
【図２８】ルータ２６０の動作手順を示すフローチャートである。
【図２９】例示的な実施形態にかかるバスシステムにおいて、コンピュータプログラムを用いて変換後の優先度をＮＩＣに設定する方法を示す図である。
【図３０】設計者のＰＣ３００のハードウェア構成を示す図である。
【図３１】優先度計算プログラムの処理手順を示すフローチャートである。
【図３２】画像処理の外付けチップと組み合わせ、画像認識向けのチップを開発する例を示す図である。
【図３３】往路と復路とを分離したシステムバスの構成例である。
【図３４】低速リンクを通るマスタ間通信に例示的な実施形態を適用したバスシステム１１０の例を示す図である。
【図３５】複数のローカルバスを低速リンクで多段に接続する例を示す図である。
【図３６】低速リンクを通らないパケットの優先度を低くする場合の、優先度変換ルールを示す図である。
【図３７】例示的な実施形態にかかるバスシステムの構成の例を示す図である。
【図３８】（Ａ）および（Ｂ）は、メモリコントローラにおいて、優先度変換を行わない場合と行う場合の違いを示す図である。
【図３９】往路のメモリコントローラ４００の構成を示す図である。
【図４０】メモリコントローラ４００の動作手順を示すフローチャートである。
【図４１】優先度変換ルール記憶部４０４に記憶される優先度変換ルールを示す図である。
【図４２】レート管理部４０６が管理するマスタごとの送信レートを示す図である。
【発明を実施するための形態】
【００１５】
特許文献１の中継装置は、品質要求の違いに応じてトラヒック毎の送信スケジュール制御を行う。そのため、品質要求の種類だけバッファを用意すると、中継装置内のバッファ面積がバッファの種類に応じて増大する。
【００１６】
そこで本願発明者らは、中継装置において、要求品質を区別するクラスごとにバッファを備え、格納するバッファのクラスを伝送経路上で変更（マッピング）する方式を考えた。
【００１７】
まず、バスマスタが、優先度が予め定められた（Ｎ＋１）種類の品質要求のうちの１つの品質要求の情報を格納したパケットを送信する状況を考える。本願発明者らは、中継装置に、Ｎ種類以下のバッファと、バッファ割当部を設けた。バッファ割当部は、送信先の中継装置が有するＮ種類以下のバッファのうち、どの種類のバッファに前記パケットを格納させるかを決定する。その上で、（Ｎ＋１）種類の品質要求の種類に応じてトラヒックの送信スケジュールの制御を行う。
【００１８】
例えば、図２は、本願発明者らが考察した、中継装置を用いた接続構成例を示す。ローカルバス１では、遅延保証型トラヒック（Ａ１）と出来高型トラヒック（Ｃ）とを収容し、ローカルバス２ではスループット保証型トラヒック（Ａ２）と出来高型リアルタイムトラヒック（Ｂ）とを収容する。それぞれのローカルバスでトラヒックの品質要求の種類を２種類にした場合には、優先度を変えることで中継装置内のバッファの種類も２種類にまで削減できる。なお、バッファにはトラヒックを構成するパケットが格納される。
【００１９】
本願発明者らは、このような中継装置を用いると、パケットを格納するバッファの割当の際に品質要求の優先度の付け替えは行われるが、送信スケジューリングに対する優先度を付け替えた効果が十分に伝送性能に反映されない場合があり得る、と考えた。
【００２０】
具体的には、出来高型リアルタイムのトラヒック（Ｂ）は、ローカルバス２ではＬｏクラスのバッファに格納され、基幹バス（backbone bus）ではＨｉクラスのバッファに格納されるが、送信スケジュールの優先順位が反映されない場合があり得る。つまり、各バスにおいて、それぞれＬｏ、Ｈｉのバッファに格納されたとしても、送信順序に関しては、Ｌｏ、Ｈｉの優先順位では伝送されるとは限らない。
【００２１】
本開示では、伝送性能に差のある複数のバスやノードを介してトラヒックが伝送されるときに生じる伝送性能の低下を改善する技術を提案する。ここでいう「伝送性能」とは、遅延やスループットの程度によって定められる、伝送に関する評価値であるとする。以下、優先度を付け替えてトラヒックを伝送することで性能の低下を抑制し、高い伝送性能を維持するバスシステムを説明する。
【００２２】
図３（Ａ）および（Ｂ）はそれぞれ、伝送性能差を生じさせる原因として想定しうる、２つのケースを示す。
【００２３】
図３（Ａ）は、バスの帯域差で伝送性能差が生じる例を示す。「広帯域」もしくは「低遅延」のバス１と「狭帯域」もしくは「高遅延」のバス２を組み合わせてバスシステムを構成した場合、バス１を伝送されるトラヒックは相対的に低遅延で伝送され、バス２を伝送されるトラヒックは高遅延で伝送される。特にバス２が「狭帯域」のバス（具体的には、例えば、相対的にバス幅が小さく、バス周波数が低いバス）の場合、バス１からバス２に向かう伝送において、伝送性能が確保できず、単位時間あたりのトラヒック伝送量が少なくなる。そのため、トラヒック同士の干渉による影響が大きくなり、ルータを含めた伝送にかかる遅延時間が大きくなる。後述するように、本開示によれば、このような場合であっても、伝送遅延を低減することが可能である。
【００２４】
また、図３（Ｂ）は、ノードの処理性能差で伝送性能差が生じる例を示す。処理性能の高いノードと、処理性能の低いノードとを組み合わせてバスシステムを構成した場合、処理性能の高いノード間では高い伝送性能を維持してトラヒックを伝送することができる。ここでは、処理性能の高いノードとして、たとえば、ルータやマスタ、メモリコントローラを想定している。また、処理性能の低いノードとして、たとえばメモリデバイス、Ｉ／Ｏを想定している。
【００２５】
なお、ノードの「処理性能」とは、ノードがデータを処理する速度を意味する。言い換えると、ノードが単位時間あたりに処理することが可能なデータ量を意味する。ノードがルータであるか、メモリであるか、またはマスタであるかによって、処理の内容は異なる。具体例は以下のとおりである。
【００２６】
まず、ルータの処理性能とは、受信したパケットを送信するために必要な処理（たとえばルーティング処理、バッファ割当処理、および送信処理）に関して、ルータが単位時間あたりに処理することが可能なデータ量を意味する。次に、メモリの処理性能とは、受信したデータ書き込み要求に関するアクセスデータを用いてメモリが実際に記憶領域にデータを書き込む場合には、メモリが単位時間当たりに書き込むことが可能なデータ量を意味する。あるいは、受信したデータ読み出し要求に関するアクセスデータを用いて、メモリが記憶領域からデータを読み出す場合には、メモリが単位時間当たりに読み出すことが可能なデータ量を意味する。最後に、マスタの処理性能とは、データ受信時にマスタが単位時間あたりに受信したデータを処理することが可能な演算データ量を意味する。
【００２７】
図３（Ｂ）に示されるような、マスタ０、ルータ０、メモリコントローラ０を接続するバス１の伝送性能は高い。一方、メモリコントローラ０とメモリデバイス０とを接続するバス２の伝送性能は低い。いま、図３（Ｂ）のバス１からバス２への通信のように、処理性能の高いノードから処理性能の低いノードへトラヒックを伝送する例を考える。この例の場合、処理性能の低いノードの処理性能がボトルネックになり、それに応じて処理性能の高いノードはトラヒックを高い伝送性能を維持して伝送できなくなる。すなわち、それらのノードの間のバスの伝送性能が低下したとみなすことができる。
【００２８】
本開示では、まず図３（Ａ）の構成に関連する技術を説明する。その後、図３（Ｂ）の構成を説明する。また、本開示は、図３（Ａ）と図３（Ｂ）とが複合する場合や往路と復路が分離されたバスシステムも対象とする。
【００２９】
ローカルバスと基幹バスの間を低速なオフチップバスで接続すると、低速なオフチップバスを通る際、一般には、トラヒックの伝送性能は低下する。ここでいう「オフチップバス」とは、チップ間の外部バスをいう。たとえば、マスタに相当するチップと、メモリコントローラを構成するチップとの間を接続するバスが「オフチップバス」に相当する。低速リンクを通るオフチップのトラヒックに関しては、オフチップバスを通らない他のオンチップのトラヒックよりも、オフチップバスの通過時に大きな遅延が生じる可能性がある。これにより、そのトラヒックが宛先ノードに届くまでの遅延時間が大きくなる。そのため、オンチップの場合と同じように優先度を設計すると、オフチップのトラヒックの伝送性能が著しく低下する場合がある。また、オフチップバスの配線の長さによっても遅延時間が変化する。オフチップバスの遅延を考慮しない場合には、さらに遅延時間が大きくなる。
【００３０】
そのため、オフチップバスの伝送遅延を考慮し、伝送の優先順位を表すクラスや伝送の締切時刻で表現される「優先度」を適切に変更することで、伝送性能の低下を防ぐ必要がある。
【００３１】
なお、本明細書において、「優先度が高い」とは、ルータにおけるパケットの伝送処理の順番について、優先的に、早く処理されることを意味し、優先度を表現している数字の大小にはよらない。例えば、優先度のクラスに対し、クラスＡを０、クラスＢを１、クラスＣを２と数字で表現し、値の小さい順に、例えば０，１，２の順に、優先度を高く設定してもよい。
【００３２】
なお、オフチップバスについては、例えば、半導体のチップ同士をプリント基板上の配線で接続した場合や、柔らかい外部ケーブルで接続した場合、伝送特性がオンチップの配線と異なり、伝送遅延が大きくなる。また、オフチップではなく、同じチップ内において伝送の遅いバスを備えるバスシステムであっても同様の伝送遅延が発生し得る。すなわち、同じチップ内において、ネットワーク化されたバスを備える複数のモジュール同士を、例えば、多段のリピータバッファを備える、長い配線によって接続することが可能である。ただし、その配線によって大きな遅延が生じる場合には、その配線を低速リンクと捉えることができる。すると上述の遅延の発生が考えられ得る。
【００３３】
いま、例えば、図２で中継装置Ｒ１とゲートウェイＧＷの間が低速なリンクで接続され、中継装置Ｒ３とゲートウェイＧＷの間が高速なリンクで接続されている場合を考える。同じ優先度の２つのパケットがそれぞれ、ＧＷからＲ１へ、ＧＷからＲ３へ送信される場合、同じ優先度であるにも関わらず、ＧＷからＲ１へ通るパケットの方が、低速リンクの遅延時間分だけパケット到着時刻が遅くなる。このような場合には、低速リンクを通るトラヒックの伝送性能は低下し得る。
【００３４】
よって、伝送性能を低下させずに、高い伝送性能を有する、柔軟な設定が可能なバスシステムの開発が必要とされている。
【００３５】
本開示は、伝送性能をより高く維持し、柔軟な設定が可能なバスシステムを提供する。
【００３６】
本発明の一態様の概要は以下のとおりである。
【００３７】
本発明の一態様であるバスシステムは、ネットワーク化されたバスにおいて、前記バスに配置された中継装置を介して、第１ノードおよび少なくとも１つの第２ノードの間でデータを伝送する、半導体回路のバスシステムであって、前記バスシステムは、相対的に低遅延の第１のバスと相対的に高遅延の第２のバスとを備え、前記第１ノードは、データを格納するバッファ部と、前記バッファ部に格納されたデータに、前記中継装置における伝送の優先度を特定する情報を付与して複数のパケットを生成するパケット生成部とを備え、前記中継装置は、前記複数のパケットの各々の優先度を高遅延のバスの伝送遅延に基づいて決定された優先度に変換するための優先度変換ルールに基づいて、前記優先度を変換する優先度変換部と、変換された前記優先度に基づいて、前記パケットを送信する送信先の中継装置のバッファの割当を行うバッファ割当部と、前記優先度の高い順に、パケットの送信を行う送信制御部と、前記優先度に基づいて、パケットを格納するバッファ部と備えている。
【００３８】
前記中継装置は、たとえば前記優先度変換ルールを記憶する記憶部を更に備えている。
【００３９】
本発明の他の一態様であるバスシステムは、ネットワーク化されたバスにおいて、前記バスに配置された中継装置を介して、第１ノードおよび少なくとも１つの第２ノードの間でデータを伝送する、半導体回路のバスシステムであって、前記バスシステムは、相対的に低遅延の第１のバスと、相対的に高遅延の第２のバスとを備え、前記第１ノードは、データを格納するバッファ部と、前記バッファ部に格納されたデータに、相対的に伝送遅延が大きい高遅延バスの伝送遅延に基づいて決定された、前記中継装置における伝送の優先度を特定する情報を付与して複数のパケットを生成するパケット生成部とを備え、前記中継装置は、前記優先度に基づいて、前記パケットを送信する送信先の中継装置のバッファの割当を行うバッファ割当部と、前記優先度の高い順に、パケットの送信を行う送信制御部と、前記優先度に基づいて、パケットを格納するバッファ部とを備えている。
【００４０】
たとえば、前記中継装置は、予め定められた優先度変換ルールに基づいて、前記複数のパケットの各々の優先度を変換する優先度変換部をさらに備え、前記バッファ割当部は、変換された前記優先度に基づいて、前記パケットを送信する送信先の中継装置のバッファの割当を行う。
【００４１】
たとえば、相対的に高遅延のバスを介して伝送されるパケットに関し、前記優先度変換部は優先度がより高くなるよう前記優先度を変換する。
【００４２】
たとえば、相対的に高遅延の前記バスを介して伝送されないパケットに関し、前記優先度変換部は優先度がより低くなるよう前記優先度を変換する。
【００４３】
前記優先度は、たとえば要求品質の厳しさを表現するクラス、および要求品質の許容遅延を表す締切時刻の少なくとも一方によって決定される。
【００４４】
前記優先度が、要求品質の許容遅延を表す締切時刻によって決定される場合において、たとえば前記優先度変換部は、パケットが通過する相対的に高遅延の前記第２のバスごとに、一定の時間、締切時刻が短くなるよう前記優先度を変換する。
【００４５】
たとえば、前記バッファ部は、相対的に高遅延のバスを介して伝送されるパケットと、相対的に低遅延のバスを介して伝送されるパケットを分離して格納する。
【００４６】
たとえば、前記優先度が、要求品質の許容遅延を表す締切時刻によって決定される場合において、前記送信制御部は、締切時刻が短い順にパケットの送信を行う。
【００４７】
たとえば、前記要求品質の厳しさを表現するクラスは、前記バス上の所定のノードが要求するスループット、許容遅延時間のうち、少なくとも１つにより定義される。
【００４８】
たとえば、前記優先度が、前記要求品質の厳しさを表現するクラスによって決定される場合において、前記中継装置のバッファ割当部および前記送信制御部は、前記優先度の低いクラスに関して、優先度の高いクラスよりも低い粒度で締切時刻の比較処理を行う。
【００４９】
たとえば前記優先度が、前記要求品質の厳しさを表現するクラスによって決定される場合において、前記中継装置のバッファ部は、前記優先度の高いクラスのバッファ数よりも、前記優先度の低いクラスのバッファ数を少なく設定する。
【００５０】
たとえば、前記バスは、相対的に伝送遅延が大きい高遅延バスを含んでおり、前記伝送遅延は、配線長、リピータ数、伝送材料、伝送路の伝送誤り率、伝送路での再送回数の少なくともひとつに基づいて決定される。
【００５１】
たとえば少なくとも２つのバスシステムが、異なる２つの伝送経路で相互接続されている場合において、前記第１ノードおよび前記少なくとも１つの第２ノードは、それぞれ異なるバスシステムに存在しており、前記２つの伝送経路は、それぞれパケットの往路および復路の経路として利用され、前記往路にはパケットを中継する往路中継装置が設けられ、前記復路にはパケットを中継する復路中継装置が設けられており、前記往路中継装置は、少なくとも、前記第１ノードから前記少なくとも１つの第２ノードへ伝送されるパケットを中継し、前記復路中継装置は、少なくとも、前記少なくとも１つの第２ノードから前記第１ノードへ伝送されるパケットを中継し、前記往路中継装置および前記復路中継装置は互いに接続されている。
【００５２】
本発明の他の一態様であるコンピュータプログラムは、ネットワーク化されたバスにおいて、前記バスに配置された中継装置を介して、第１ノードおよび少なくとも１つの第２ノードの間で複数のデータを伝送する半導体回路のバスシステムに設定する伝送の優先度を計算するための、コンピュータによって実行されるコンピュータプログラムであって、前記バスシステムは、相対的に低遅延の第１のバスと、相対的に高遅延の第２のバスとを備え、前記コンピュータプログラムはコンピュータに対し、前記第２のバスの伝送遅延に基づいて決定された優先度に変換するための優先度変換ルール、および予め定められた優先度の情報の入力を受け取るステップと、予め定められた前記優先度および前記優先度変換ルールに基づいて、前記中継装置における伝送の優先度を計算するステップとを実行させる。
【００５３】
本発明のさらに他の態様であるバスシステムは、ネットワーク化されたバスにおいて、前記バスに配置された少なくとも１つの中継装置を介して、第１ノードおよび第２ノードの間でデータを伝送する半導体回路のバスシステムであって、前記第２ノードは、前記中継装置よりも相対的に低い処理能力を有しており、前記第１ノードおよび前記中継装置は第１のバスを介して接続され、前記中継装置および前記第２ノードは第２のバスを介して接続されており、前記第１のバスにおいては、前記要求品質の厳しさを表現するクラス単位でパケット処理を行う第１のクラス分類が定義され、前記第２のバスにおいては前記第１ノード単位でパケット処理を行う第２のクラス分類が定義されており、前記第１ノードは、前記データを格納するバッファ部と、前記バッファ部に格納されたデータに、前記中継装置における伝送の優先度を特定するクラスを付与して複数のパケットを生成するパケット生成部とを備え、前記中継装置は、前記第１のバスを介して、前記複数のパケットを受信するバッファ管理部と、受信した前記パケットを格納するバッファ部と、前記複数のパケットの送信元の第１ノードを識別し、クラス単位のパケット処理から前記第１ノード単位のパケット処理に変換して優先処理を行う優先度変換部と、変換された、パケットの送信順位を示す優先度の高い順に、前記データを前記第２のバスを介して送信する送信制御部とを備えている。
【００５４】
本発明のさらに他の態様であるバスシステムは、ネットワーク化されたバスにおいて、前記バスに配置された複数の中継装置を介して、第１ノードおよび第２ノードの間でデータを伝送する、半導体回路のバスシステムであって、前記第２ノードは、前記中継装置よりも相対的に低い処理能力を有しており、前記バスシステムは、パケットが伝送される経路として往路と復路とを独立して備えており、前記第１ノードおよび前記中継装置は、前記往路を構成する第１のバスを介して接続され、前記中継装置および前記第２ノードは、前記復路を構成する第２のバスを介して接続されており、前記第１のバスにおいては、前記要求品質の厳しさを表現するクラス単位でパケット処理を行う第１のクラス分類が定義され、前記第２のバスにおいては前記第１ノード単位でパケット処理行う第２のクラス分類が定義されており、前記第１のバスと前記第２のバスとの間には第１の中継装置が配置されており、前記第１の中継装置は、前記第１のバスを介して、前記複数のパケットを受信するバッファ管理部と、受信した前記パケットを格納するためのバッファ部と、前記複数のパケットの送信元の第１ノードを識別し、クラス単位のパケット処理から前記第１ノード単位のパケット処理に変換して優先処理を行う優先度変換部と、変換された、パケットの送信順位を示す優先度の高い順に、前記データを前記第２のバスを介して送信する送信制御部とを備え、前記復路には第２の中継装置が配置されており、前記第２の中継装置は、前記第２ノードから前記第１ノードへ複数のパケットを伝送し、前記複数のパケットの送信の優先度を区別せずに伝送する。
【００５５】
たとえば前記第１の中継装置は、前記第１ノード毎に送信レートを記憶するレート管理部と、前記バッファ部に格納された複数のパケットに、前記レート管理部に設定された送信レートに基づいた第１の優先順位と、前記第１ノード単位に変換された前記クラスの優先度に基づく第２の優先順位を割り当て、前記第１の優先順位を優先的に用いて、前記データの送信を行う送信制御部とをさらに備えている。
【００５６】
たとえば前記第１の中継装置は、送信先の前記第２ノードから、前記データの受信可否状態を取得するフロー制御部をさらに備えている。
【００５７】
たとえば、前記第１の中継装置は、変換されたクラスの優先度が同じになる場合には、同じ優先度の複数の第１ノード間で送信レートが均等になるように送信処理を行う送信制御部を備えている。
【００５８】
以下、添付の図面を参照しながら、本発明の一実施形態である中継装置を説明する。
【００５９】
本明細書では、半導体の集積回路における分散型バス（ＮｏＣ）において、異なる半導体のモジュールを組み合わせたときに、高い伝送性能を維持しつつ、トラヒックの伝送に必要な優先度の設定を柔軟に行える技術を説明する。
【００６０】
本願発明者らは、中継装置においてトラヒックの優先度の変換を行った。すなわち、ローカルバスからシステムバスへ、その間の低速なリンクを通ってトラヒックが伝送されるときに、システムバスで定義された要求品質の優先度を、ローカルバスで定義された要求品質より高い優先度として解釈を行った。換言すれば、当初定義された要求品質の優先度をより、それよりも高い優先度に変換した。
【００６１】
本発明の一実施形態である中継装置では、要求品質の厳しさを表すクラスと締切時刻を優先度として用いて、優先度に応じて、優先度の高い順にパケットのバッファ割当と送信順序の制御を行う。優先度は、各マスタから送信されるトラヒックの要求品質の違い、およびバスの伝送帯域から、設計者により事前に相対的に定義される。「優先度の変換」とは、送信元側のバスと送信先側のバスにおいて、同じパケットを異なる優先度（クラスと締切時刻）で伝送できるように、優先度の切り替えを行うことである。優先度の変換は、パケットの優先度の上書き（パケットの中の優先度を記憶している領域に、変換後の優先度を書き直すこと）をせずに、伝送に用いる優先度を切り替えることも含む。各々のシリコン上にマスタやルータが実装された複数の半導体を組み合わせる場合には、ローカルバスとシステムバスは、低速なオフチップバスを介して接続され、低速なバスによって大きな遅延時間が生じるため、より高い優先度へ優先度変換を行う。これにより、低遅延化を実現することが可能となった。オフチップバスを通るトラヒックに関しては、オフチップバスを通らない他のトラヒックよりも、オフチップバス通過時に生じる大きな遅延により、宛先ノードに届くまでの遅延時間が大きくなりやすい。また、オフチップバスの配線の長さによっても遅延時間が変化しうる。これらの伝送にかかる遅延時間の増大に対応するためにも、相対的により高い優先度への変換を行うことで、より低遅延での伝送処理を可能とした。詳細は後述する例示的な実施形態に関連して説明する。
【００６２】
図４は、本実施形態にかかる処理のポリシーを示す。
【００６３】
複数のローカルバス０〜Ｎがシステムバスに低速リンクで接続される。システムバスには、各ローカルバスに配置された複数のマスタのトラヒックが合流する。ローカルバスは過去の開発資産を効率的に利用できるように、設定の変更量を少なくする。そのために、システムバスでは、ローカルバスで定義された優先度とは異なる優先度で伝送を行えるように、優先度が変換される。また、低速リンクの伝送遅延分を考慮し、低速リンクを通るトラヒックを、より高優先度で伝送する。さらに、システムバスの中継装置では、格納するバッファの割当時に発生する干渉を抑えるために、低速リンクを通るトラヒックとそれ以外のトラヒックを分離してバッファに格納し、低速リンクを通るトラヒックをさらに低遅延で伝送する。
【００６４】
本開示の例では、ローカルバスは、特定の機器同士での高速なデータの交換を実現するために、通常のバスとは別に用意された、機器同士を直結するか、あるいはそれに準ずる形で接続されるバスを意味する。システムバスは、複数のローカルバスを相互接続するためのバスであることを意味する。
【００６５】
本明細書では、中継装置を「ルータ」と呼ぶこともある。
【００６６】
図５は、本実施形態にかかるバスシステム１００の構成を示す。図５にはまた、バスシステム１００において、優先度変換処理を行うルータの配置も示されている。
【００６７】
本実施形態にかかるバスシステム１００では、バスに配置された複数のマスタ（第１ノード）がネットワーク・インタフェース・コントローラ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃｏｎｔｒｏｌｌｅｒ；ＮＩＣ）を介して、ルータと接続されている。ＮＩＣは、マスタが送信したスレーブへのアクセスデータをパケットに変換する。パケットは少なくとも１つのルータを通り、宛先のスレーブ（第２ノード）に到着する。
【００６８】
スレーブは、パケットからアクセスデータを抽出して、例えばＤＲＡＭなどのメモリデバイス（図示せず）へのアクセス処理を行う。スレーブは、デバイスのアクセスに対する応答データを再びパケットに変換し、応答パケットとしてマスタへ送信する。
【００６９】
ローカルバス全体の設定変更量をなるべく少なくするために、ローカルバスとシステムバスとを接続するオフチップバスに直接接続された中継装置が優先度変換処理を行うことが効率的である。例えば、ルータ１とルータ２とが低速なオフチップバスで接続されている場合、ルータ１およびルータ２の少なくとも一方が優先度変換処理を行えばよい。たとえばルータ１が変換処理を行う場合、ルータ２側のバスの設定を変更する必要が無い。一方、ルータ２が変換処理を行う場合、ルータ１側のバスの設定を変更しなくて済む。後者の例としては、ルータ１側のバスがモジュール化された外付けチップ内に構成されており、外付けチップの設定が変更できない場合が考えられる。本実施形態では、ルータ２が変換処理を行う例を説明する。
【００７０】
優先度変換処理は、オフチップバスに直接接続された中継装置ではなく、ルータ０やルータ４が行ってもよい。ルータ１またはルータ２以外のルータが優先度変換処理を行うことにより、局所的な伝送性能を向上させることが可能である。
【００７１】
ただし、その場合には、設定の効率や伝送効率が低下する可能性がある点に留意されたい。ルータ１が処理する場合には、ローカルバス０に配置されたすべてのマスタのトラヒックが変換の対象になる一方、ルータ０が処理する場合にはルータ０を通過するマスタのみが変換の対象となるからである。そのため、ローカルバス０のすべてのマスタのトラヒックに変換を行うためには、別のルータも変換処理を行うことが必要になる場合がある。よって変換の設定を行う中継装置の数が増加する可能性がある。また、ルータ０では、トラヒックの要求品質が若干低下したり、常に最適な送信スケジューリングでバスの伝送路の帯域を利用することができない可能性がある。その理由は、本来のローカルバスにおける優先度の定義ではなく、変換後の優先度の定義でトラヒックが送信されるためである。同様に、ルータ４が変換処理を行う場合でも、ルータ２では変換される前のローカルバスの優先度の定義で送信スケジューリングが行われるため、同様に効率が低下しうる。
【００７２】
図６は、ＮＩＣ２００の構成を示す。
【００７３】
ＮＩＣ２００は、マスタからスレーブへのアクセスデータを受信し、優先度の情報を付与してパケットに変換し、ルータへ送信する。ＮＩＣ２００は、たとえば回路として実装される。次に説明するＮＩＣ２００の構成要素は、そのような機能・動作を行うよう、予めプログラムされた動作を行う回路素子として実装され得る。
【００７４】
ＮＩＣ２００は、バッファ管理部２０１と、バッファ部２０２と、フロー制御部２０３と、バッファ割当部２０４と、マスタ情報記憶部２０５と、締切時刻決定部２０６と、パケット生成部２０７とを備えている。
【００７５】
バッファ管理部２０１は、マスタからスレーブへのアクセスデータを受信し、バッファ部２０２の空いているバッファにアクセスデータを格納する。バッファ管理部２０１は受信端子（図示せず）を有していてもよい。
【００７６】
バッファ部２０２はいわゆるバッファである。バッファ部２０２には受信したアクセスデータが格納される。
【００７７】
フロー制御部２０３は、送信先のルータの空きバッファＩＤを取得する。
【００７８】
バッファ割当部２０４は、取得した空きバッファＩＤによって送信先のルータで格納されるバッファＩＤを割り当てる。
【００７９】
マスタ情報記憶部２０５は、例えば、フリップフロップのような記憶素子で実装され、マスタＩＤ、クラス、許容遅延時間の情報を記憶する。
【００８０】
締切時刻決定部２０６は、トラヒックの伝送に関する締切時刻を決定する。締切時刻は、例えば、半導体バスシステムに供給されるバスクロックによって駆動されるカウンタ値によって実装することができる。また、本実施形態においては、同一クラス内では締切時刻の比較に基づいて伝送順位を決定する方法を説明するが、締切時刻は、同じクラス内でパケットの伝送に対する時間的な緊急度を表す情報であればよい。例えば、締切時刻の代わりに、パケットの要求発生時刻で、伝送に対する時間的な緊急度を表してもよい。
【００８１】
パケット生成部２０７は、バッファ部に格納されたアクセスデータに対し、マスタＩＤ、クラス、締切時刻、格納先バッファＩＤ、開始コード、終了コードを付与してパケットに変換し、ルータへ送信する。
【００８２】
上述のフロー制御部２０３、バッファ割当部２０４、締切時刻決定部２０６、およびパケット生成部２０７は、半導体回路によって形成されている。
【００８３】
図７は、ＮＩＣ２００の動作フローを示す。
【００８４】
ステップＳ１０において、バッファ管理部２０１は、マスタから、アクセスデータ、宛先ＩＤ、アクセスの要求発生時刻を受信し、バッファ部２０２に格納する。
【００８５】
ステップＳ１１において、フロー制御部２０３は、送信先のルータから、送信先の空きバッファＩＤを取得する。
【００８６】
ステップＳ１２において、バッファ割当部２０４は、送信先ルータの空きバッファＩＤを用いて、格納先バッファＩＤを決定する。
【００８７】
ステップＳ１３において、締切時刻決定部２０６は、マスタ情報記憶部２０５に格納された許容遅延時間とバッファ部２０２の要求発生時刻に基づき、要求発生時刻に許容遅延時間を加えた値で締切時刻を決定する。
【００８８】
ステップＳ１４において、パケット生成部２０７は、バッファ部２０２に格納されたアクセスデータと宛先ＩＤに対し、マスタ情報記憶部２０５のマスタＩＤとクラス、締切時刻決定部の決定した締切時刻、バッファ割当部２０４の決定した格納先バッファＩＤ、開始コード、終了コードを付与し、パケットを生成し、生成したパケットを送信する。なお、要求発生時刻は、マスタからアクセスデータを受信した時刻をもって、要求発生時刻としてもよい。
【００８９】
図８は、マスタ情報記憶部２０５に記憶される情報の構成例を示す。
【００９０】
マスタ情報記憶部２０５は、パケットの送信元を表すマスタＩＤ、およびパケットの伝送の優先度を決めるための、クラスと許容遅延時間を備えている。なお、許容遅延時間とは、マスタの要求品質に基づき、パケットが伝送先となるノードに到着するまでに費やしてもよい最大の伝送遅延時間を表し、到着の締切時刻を算出する際に用いられる。例えば、伝送先となるノードは、アクセスの宛先であるスレーブや、スレーブからの応答パケットを受け取る送信元のマスタであってもよい。
【００９１】
図９は、パケットの構成を示す。
【００９２】
パケットは、開始コード、宛先ＩＤ、マスタＩＤ、クラス、締切時刻、格納先バッファＩＤ、アクセスデータ、終了コードを備えている。
【００９３】
図１０は、優先度の変換を行うルータ２５０の構成を示す。
【００９４】
優先度の変換を行うルータ２５０は、送信元のバス側の優先度の定義とは異なる優先度の定義で、パケットの優先度変換を行い、変換された優先度に基づいてバッファ割当および送信順序決定を行う。また、送信先の通常のルータでも、ここで行われた優先度の変換が反映されるようにする。
【００９５】
優先度の変換を行うルータ２５０は、バッファ管理部２５１と、バッファ部２５２と、ルーティング処理部２５３と、フロー制御部２５４と、優先度変換部２５５と、優先度変換ルール記憶部２５６と、バッファ割当部２５７と、送信制御部２５８とを有している。
【００９６】
バッファ管理部２５１は、パケットを受信し、バッファ部２５２にパケットを格納する。パケットを格納する際、パケットの格納先バッファＩＤに対応するバッファにパケットを格納する。なおバッファ管理部２５１は受信端子（図示せず）を有していてもよい。
【００９７】
バッファ部２５２は、第１バッファ２５２ａおよび第２バッファ２５２ｂを有する。第１バッファ２５２ａは、低速リンクを通過するパケットを格納するためのバッファであり、第２バッファ２５２ｂは、第１バッファ２５２ａに格納されないパケットを格納するためのバッファである。第１バッファ２５２ａおよび第２バッファ２５２ｂに格納されるパケットは、それぞれ、クラスごとに分けて格納してもよい。
【００９８】
パケットを「分離して格納する」とは、格納可能なバッファを物理的に分離し、バッファごとに送信を切り替えられるようにすることを意味する。これにより、分離したトラヒック間の干渉を抑制することができる。また、ランダムアクセス可能なメモリなどを用いて、論理的に分離されていれば、物理的に分離しなくてもよい。具体的には、送信の切り替えが可能で、かつ使用するバッファ領域を論理的に分けて管理できていればよい。
【００９９】
ルーティング処理部２５３は、宛先ＩＤに応じてパケットを送信する出力ポートを決定する。
【０１００】
フロー制御部２５４は、送信先のルータの空きバッファＩＤを取得する。
【０１０１】
優先度変換部２５５は、後述する優先度変換ルール記憶部２５６に記憶されたルールを参照して、パケットの優先度を変換する。
【０１０２】
優先度変換ルール記憶部２５６（以下、「記憶部２５６」と記述する。）は、例えば、フリップフロップのような記憶素子で実装され、優先度変換のためのルールを記憶する。
【０１０３】
バッファ割当部２５７は、変換後の優先度に基づき送信先のルータにおける格納先バッファＩＤを決定する。
【０１０４】
送信制御部２５８は、変換後の優先度の高い順にパケットの送信を制御する。
【０１０５】
上述のルーティング処理部２５３、フロー制御部２５４、優先度変換部２５５、バッファ割当部２５７、および送信制御部２５８は、半導体回路によって形成されている。
【０１０６】
なお、ルータ２５０によって行われた優先度変換の結果は、送信先のルータへ引き継がれるようにする。具体的には、クラスについては、送信先のルータが受信したパケットをクラスごとに分離してバッファに格納し、格納されたバッファＩＤによってパケットのクラスを判定する。例えば、各ルータにおいてバッファ０がクラスＡ、バッファ１がクラスＢ、バッファ２がクラスＣに割り当てられ、クラスＢのパケットをクラスＡに変換する場合、バッファ１に格納されたパケットを、送信先のルータのバッファ０に格納されるように割り当てを行うことで、パケットのクラスの切り替えを行うことができ、送信先のルータではパケットに付与されたクラスによらず、バッファＩＤに基づいてクラスＡと判定することができる。
【０１０７】
なお、別の方法としては、変換されたクラスを、パケットのクラスを上書きするようにしてパケットに記録し、送信先のルータにおいてパケットのクラスの優先度に基づいて、バッファ割当と送信制御を行ってもよい。また、締切時刻については、変換された締切時刻をパケットに付与された締切時刻を上書きするように記録し、送信先のルータではパケットに上書きされた締切時刻に基づいて、バッファ割当と送信制御を行う。このようにして、変換された優先度（クラスと締切時刻）を送信先のルータへ引き継ぐことができる。
【０１０８】
図１１は、優先度の変換を行うルータ２５０の動作フローを示す。
【０１０９】
ステップＳ２０において、バッファ管理部２５１はパケットを受信し、そのパケットが低速リンクを通過するか否かに基づいて、パケットをバッファ部２５２の第１バッファ２５２ａまたは第２バッファ２５２ｂに格納する。このとき、第１バッファ２５２ａ内または第２バッファ２５２ｂ内では、パケットのクラスに応じた格納が行われる。
【０１１０】
ステップＳ２１において、ルーティング処理部２５３は、ルーティングテーブルとパケットの宛先ＩＤに基づき、対応する出力ポートを決定する。
【０１１１】
ステップＳ２２において、フロー制御部２５４は、送信先のルータから、送信先の空きバッファＩＤを取得する。
【０１１２】
ステップＳ２３において、優先度変換部２５５は、バッファ部２５２から、各バッファのバッファＩＤ、クラス、および各バッファに格納されたパケットのマスタＩＤ、締切時刻を取得し、記憶部２５６に記憶された優先度変換ルールを用いて、クラスと締切時刻の変換を行う。
【０１１３】
ステップＳ２４において、優先度変換部２５５は、変換された締切時刻をパケットに記録する。
【０１１４】
ステップＳ２５において、バッファ割当部２５７は、変換されたクラスと締切時刻、および送信先のルータの空きバッファＩＤを用いて、クラスの優先度の高いパケットの中から、締切時刻の早い順に、格納先バッファＩＤを決定し、パケットに記録する。
【０１１５】
ステップＳ２６において、送信制御部２５８は、出力ポートごとに、変換されたクラスと締切時刻を用いて、クラスの優先度の高いパケットの中から、締切時刻の早い順に、送信するパケットを決定し送信する。
【０１１６】
なお、締切時刻の早い順にパケットを選ぶ処理については、時刻の比較にかかる処理時間が大きくなりやすいため、あらかじめ設計者が半導体の組み合わせ方に応じて、処理に必要なリソースと伝送性能を考慮しつつ、締切時刻の比較に用いるｂｉｔ数を設定できるようにしてもよい。そのとき、要求品質の厳しい高優先度のクラスについては、許容遅延時間が小さく、比較に必要な締切時刻の範囲も狭いため、時刻の数値表現の粒度は変えずに、比較に不要な時刻の数値の上位ｂｉｔを削減してもよい。
【０１１７】
また、品質要求の比較的厳しくない低優先度のクラスについては、時刻の数値表現の粒度を下げつつ、処理時間を削減するために、数値の下位ｂｉｔを削減してもよい。具体的には、ルータ２５０のバッファ割当部２５７と送信制御部２５８に、クラスごとに時刻の比較に使用するｂｉｔを指定するためのレジスタ（記憶素子）を備える。レジスタの設定方法は、例えば、バスシステム１００の起動時に固定的に設定されるようにしてもよいし、バスシステム１００全体にレジスタ用の信号線を配線し、プロセッサが信号線を介してレジスタに設定値を書き込むことで、設定してもよい。また、締切時刻の比較に用いる比較演算回路は、バッファ割当部２５７と送信制御部２５８について、それぞれ備えていてもよいし、同じ回路を共用してもよい。
【０１１８】
また同様に、あらかじめ設計者が半導体の組み合わせ方に応じて、処理に必要なリソースと伝送性能を考慮しつつ、優先度の比較にかかる処理時間を削減するために、各クラスに割り当てるバッファの数を設定できるようにしてもよい。そのとき、要求品質の厳しい高優先度のクラスについては、伝送性能が低下しないように十分なバッファ数を用意し、要求品質の比較的厳しくないクラスについては、リソースを削減するために、バッファ数を少なくしてもよい。具体的には、バッファ割当部に、送信先のルータの各バッファに対するクラスを指定するレジスタ（記憶素子）を備える。レジスタは、締切時刻のｂｉｔ指定用のレジスタと同様に、起動時に固定的に設定されるようにしてもよいし、プロセッサが信号線を介してレジスタに設定値を書き込むことで、設定してもよい。
【０１１９】
図１２は、優先度変換部２５５の動作フローを示す。
【０１２０】
ステップＳ３０において、優先度変換部２５５は、バッファ部２５２から、各バッファのバッファＩＤ、クラス、および各バッファに格納されたパケットのマスタＩＤ、締切時刻を取得する。ステップＳ３１において、優先度変換部２５５は、記憶部２５６から、優先度変換ルールを取得する。ステップＳ３２において、優先度変換部２５５は、優先度変換ルールに基づき取得したマスタＩＤに対応する、変換後のクラスと締切時刻に対するオフセット時間を取得する。ステップＳ３３において、優先度変換部２５５は、取得した締切時刻と、締切時刻に対するオフセット時間に基づき、締切時刻からオフセット時間を差し引いた時刻を変換後の締切時刻とする。
【０１２１】
図１３は、記憶部２５６に記憶される優先度変換ルールを示す。
【０１２２】
優先度変換ルールは、マスタＩＤと、変換後のクラスあるいは締切時刻に対するオフセット時間のうち少なくとも一方との対応を表したテーブルで構成される。例えば、クラスにはクラスＡ、Ｂ、Ｃの３クラスがあり、オフセット時間はバスクロックのサイクル単位の整数値で表現される。低速リンクを通過するマスタ０は、本来のクラスはクラスＢであるが、変換後のクラスはより高優先のクラスＡとして変換される。また、締切時刻に対するオフセット時間は４００であるため、締切時刻から４００サイクル差し引いた時刻を変換後の締切時刻となる。これらの変換されたクラスと締切時刻に基づいて、バッファ割当と送信制御が行われる。
【０１２３】
なお、変換されたクラスとオフセット時間については、例えば、伝送シミュレーションや、配線長やプリント基板の配線の伝送特性に基づいて、決定されるバスの伝送遅延に基づいて、設計者が事前に解析的に決める。また同様に、マスタ１については、本来のクラスはクラスＣであり、ローカルバスにおいては、マスタ０のクラスと区別されて伝送される。変換後のクラスはマスタ０と同じく、クラスＡで変換されるため、同じクラスの優先度で伝送される。締切時刻に対するオフセット時間は、マスタ０と同じ低速リンクを共有しており、同じ伝送遅延がかかるため、マスタ０と同じ値（４００サイクル）で設定を行う。低速リンクを通過しないマスタ２については、変換前と変換後で同じ優先度を使うように、変換前と変換後のクラスを同じにし、締切時刻に対するオフセット時間を０サイクルで設定する。マスタ２はクラスＢで、マスタ０の本来のクラスと同じクラスであるが、マスタ０の低速リンクによる遅延を考慮し、マスタ０をより高優先で宛先に伝送できるように、マスタ０のパケットはマスタ２とは異なるクラスＡで変換される。また、マスタ４、５に関しては、マスタ０、１とは異なるオフチップバスを通ってシステムバスに合流するため、オフチップバスでの伝送遅延が異なり、締切時刻に対するオフセット時間を異なる値（たとえば、５００サイクル）で設定する。
【０１２４】
また、優先度変換ルールを実装する上で、優先度変換ルールはレジスタ（記憶素子）で設定できるようにしてもよい。レジスタの設定方法は、例えば、バスシステム１００の起動時に固定的に設定されるようにしてもよいし、バスシステム１００全体にレジスタ用の信号線を配線し、プロセッサが信号線を介してレジスタに設定値を書き込むことで、設定してもよい。
【０１２５】
また、変換後のクラスを指定する別の方法として、クラスの優先度の変換前と変換後の相対的な差分で指定してもよい。例えば、オフチップにプロセッサ（ＣＰＵ）のマスタと動画のデコード処理のマスタを備えていた場合、マスタを区別し、遅延の厳しくないプロセッサのマスタに対してはクラスを「１」段階高い優先度のクラスで変換し、遅延の厳しいデコード処理のマスタに対してはクラスを「２」段階高い優先度のクラスで変換する。このように、変換後の変換前に対する相対的な優先度の差分で指定してもよい。
【０１２６】
また、優先度を変換するために、オフチップのマスタとオンチップのマスタを区別する、より簡単な実装方法として、パケットに対し低速なオフチップバスの通過の有無を表すフラグを付与してもよい。例えば、オフチップのマスタから送信されるパケットについてはフラグを「１」に設定し、オンチップのマスタから送信されるパケットについてはフラグを「０」に設定する。優先度を変換するルータ２５０においては、そのフラグに基づいて、優先度を変換する。例えば、フラグが「０」のパケットに対しては優先度変換を行わず、フラグが「１」のパケットに対しては、マスタによらず、変換後のクラスをクラスＡとして、同じ優先度で変換する方法や、変換後のクラスを変換前に対し相対的に２段階高い優先度のクラスで変換する方法であってもよい。
【０１２７】
図１４は、マスタＩＤに代えて、バッファＩＤを用いて優先度を変換した場合の、優先度変換部２５５の動作フローを示す。
【０１２８】
マスタＩＤではなく、バッファＩＤを用いて優先度を変換する場合、バッファ部は低速リンクを通過するパケットを格納するバッファと低速リンクを通過しないパケットを格納するバッファとを別々に備えることで、低速リンクを通るパケットと通らないパケットとを区別して優先度を変換することができる。図１４の優先度変換部２５５の動作フローは、ステップＳ４２を除いて、図１２と同じである。ステップＳ４２では、優先度変換部２５５は、優先度変換ルールに基づき取得したバッファＩＤに対応する、変換後のクラスと締切時刻に対するオフセット時間を取得する。つまり、図１２のステップＳ３２では、優先度変換部２５５は、優先度変換ルールを用いて優先度を変換する際に、マスタＩＤに対応する要素（変換後のクラス、締切時刻に対するオフセット時間）を取得していたが、ステップＳ４２では、ステップＳ３２の処理が、バッファＩＤに対応する要素を取得する処理に変更されている。
【０１２９】
マスタＩＤを用いて優先度を変換する場合とバッファＩＤを用いて優先度を変換する場合を比較すると、以下の相違点がある。すなわち、前者は、マスタごとに優先度を設定することができるが、マスタ数が増えた場合に優先度変換ルールを適用する際の処理時間の増加と、設定項目の増加というデメリットがある。後者は、パケットの格納されたバッファごとに優先度の変換ルールが決まり、マスタごとの変換後の優先度の違いが表現できない。しかしながら、後者はマスタＩＤをパケットから抽出しなくてよく、マスタを区別せずにバッファ数の粒度で優先度変換ルールを適用できるため、マスタ数よりもバッファ数が少ない場合に変換の処理時間を短縮できる。
【０１３０】
図１５は、バッファＩＤを用いた場合の優先度変換ルール記憶部の記憶する優先度変換ルールを示す。
【０１３１】
例えば、低速リンクを通過するクラスＡのパケットが格納されるバッファ０に対し、変換後のクラスはクラスＡで、締切時刻に対するオフセット時間は４５０サイクルとして設定されている。同様に、低速リンクを通過するクラスＢのパケットが格納されるバッファ１は、変換後のクラスがクラスＡ、締切時刻に対するオフセット時間は４５０サイクルとして設定されている。また同様にして、低速リンクを通過しないクラスＡのパケットは、バッファ３に格納され、変換後の優先度は変化せず、変換後のクラスはクラスＡで、締切時刻に対するオフセット時間は０サイクルである。
【０１３２】
本実施形態においては、マスタＩＤ、バッファＩＤのいずれかに基づいて、優先度変換を行っているが、同様にして、同じマスタから送信されるトラヒックを識別可能なトラヒックＩＤを用いて、優先度変換を行ってもよい。その場合は、優先度変換ルールは、少なくともトラヒックＩＤと変換後の優先度との対応を表すテーブルで構成され、ＮＩＣ２００は、送信元マスタから取得したトラヒックＩＤをパケットに付与し、ルータ２５０は付与されたトラヒックＩＤと優先度変換ルールに基づいて、優先度変換を行う。トラヒックＩＤを用いた場合、マスタＩＤを用いた場合と比較して、ひとつのマスタから送信される複数のトラヒックの種別ごとに優先度変換ルールを決める事ができる。例えば、プロセッサのマスタが送信する複数のトラヒックのうち、とりわけスループット保証の必要なアプリケーション（例えば、音声を用いるアプリケーション）が発行しているトラヒックは、優先度変換ルールにより、高優先の優先度に切り替えて伝送し、それ以外のスループット保証の必要ないアプリケーションについては、優先度を変更しないという使い方が考えられる。この場合、マスタＩＤを用いた優先度の変換ではなく、トラヒックＩＤを用いて優先度を変換することで、ひとつのマスタから送信される複数のトラヒックに対し、異なる優先度変換ルールを適用することができる。
【０１３３】
図１６は、マスタＩＤに代えて、トラヒックＩＤを用いて優先度を変換した場合の、優先度変換部２５５の動作フローを示す。図１２との関係では、図１６は、ステップＳ３０およびＳ３２が異なり、ステップＳ３１およびＳ３３は同じである。
【０１３４】
ステップＳ３０では、優先度変換部２５５は、バッファ部から、各バッファのバッファＩＤ、クラス、および各バッファに格納されたパケットのトラヒックＩＤ、締切時刻を取得する。つまり、図１２のステップＳ３２において、優先度変換部２５５は、優先度変換ルールを用いて優先度を変換する際に、マスタＩＤに対応する要素（変換後のクラス、締切時刻に対するオフセット時間）を取得していたが、ステップ５０ではトラヒックＩＤに対応する要素を取得する処理に変更されている。この相違に起因して、図１６のステップＳ５２においても、マスタＩＤがトラヒックＩＤに変更されている。
【０１３５】
パケットに付与されたトラヒックＩＤに関しては、パケットに付与された宛先ＩＤと同様に、マスタがアクセスデータを送信する際に、トラヒックＩＤをアクセスデータに付与して送信し、ＮＩＣ２００がパケットを送信する際に、アクセスデータにトラヒックＩＤを付与してパケットを生成し、パケットを送信する。
【０１３６】
図１７は、トラヒックＩＤを用いた場合の優先度変換ルール記憶部に記憶される優先度変換ルールを示す。
【０１３７】
例えば、図１７は、低速リンクを通過するトラヒック０のパケットに対し、変換後のクラスはクラスＡで、締切時刻に対するオフセット時間は４００サイクルで設定されている。同様に、低速リンクを通過するトラヒック１のパケットは、変換後のクラスがクラスＡ、締切時刻に対するオフセット時間は４００サイクルとして設定されている。また同様にして、低速リンクを通過しないトラヒック３のパケットは、変換後の優先度は変化せず、変換後のクラスはクラスＢで、締切時刻に対するオフセット時間は０サイクルである。
【０１３８】
図１８（Ａ）および（Ｂ）は、マスタの許容遅延時間と伝送遅延に基づいて、設計者が変換後のクラスを決める例を示す。
【０１３９】
図１８（Ａ）は、それぞれのマスタの要求する許容遅延時間とクラス分類を表す。例えば、各マスタの許容遅延時間の長さに応じて、マスタ０はクラスＢの基準時間より小さいためクラスＢに分類され、同様に、マスタ１はクラスＣ、マスタ２はクラスＢ、マスタ３はクラスＡに分類される。
【０１４０】
図１８（Ｂ）は、低速リンクでの遅延時間を考慮した場合の、変換後のクラス分類を表す。例えば、今、マスタ０とマスタ１は、伝送遅延４００サイクルの低速リンクを通り、マスタ２とマスタ３は低速リンクを通らず、マスタ４とマスタ５は伝送遅延５００サイクルの低速リンクを通るとする。マスタ０とマスタ１は、低速リンクの伝送遅延を許容遅延時間から差し引き、それぞれクラスＡの基準時間より小さいため、クラスＡに分類される。マスタ２とマスタ３は、低速リンクを通らないため、本来の許容遅延時間に基づいてクラス分類が行われ、同様にして、それぞれクラスＢとクラスＡに分類される。マスタ４、マスタ５は、マスタ０、マスタ１とは異なる低速リンクを通過し、通過する低速リンクに応じた伝送遅延時間を差し引いた上で、それぞれクラスＡ、クラスＢに分類される。
【０１４１】
図１９（Ａ）および（Ｂ）は、マスタの許容遅延時間と伝送遅延に基づいてクラスを決める別の方法として、各クラスのマスタ数を均等に近づけるようにクラス分類する例を示す。例えば、今、クラスの数を３、マスタの数を６とした場合、図１９（Ａ）は、それぞれのマスタを許容遅延時間の厳しい順に並べ、許容遅延時間の厳しいマスタから、２マスタずつ優先度の高い順にクラスを分類する。このとき、各クラスのマスタ数を均等に近づけるように分類したが、各クラスの送信するトラヒック量を均等に近づけるように分類してもよい。図１９（Ｂ）は、低速リンクでの遅延時間を考慮した場合の、変換後のクラス分類を表す。それぞれのマスタの許容遅延時間から、低速リンクを通るマスタについては低速リンクの伝送遅延時間を差し引いた許容遅延時間の値に基づいて、差し引いた後の許容遅延時間の厳しい順に各マスタを並べ、各クラス２マスタずつ分類されるようにクラスを割当てる。なお、クラス分類については、上述の方法以外にも、設計者が各クラスの要求品質を保証しつつ、バスの動作周波数を小さく抑えられるように、伝送遅延、要求帯域および伝送シミュレーションに基づき解析的に決めてもよい。
【０１４２】
図２０は、低速リンクの伝送遅延（Ｌａｔｅｎｃｙ）の算出方法を示す。
【０１４３】
低速リンクの伝送遅延は、パケットのデータサイズを低速リンクの伝送帯域で割った値を用いて算出してもよい。具体的には、低速リンクの伝送遅延をＬａｔｅｎｃｙ［μｓｅｃ］、パケットのデータサイズをＮ［Ｂｙｔｅ］、伝送帯域をＲ［ＭＢｙｔｅ／ｓ］、オフチップバスの伝送特性によって決まる経路上の電圧信号が安定するまでに要する時間α［μｓｅｃ］とすると、低速リンクの伝送遅延Ｌａｔｅｎｃｙを次の式で算出してもよい。
Latency = Ｎ／Ｒ  ＋α
【０１４４】
締切時刻に対するオフセット時間は、低速リンクの伝送遅延を考慮するために、低速リンクの伝送遅延の値としてよい。すなわち実際に、低速リンクを通るトラヒックと通らないトラヒックは、同じ締切時刻に設定されていても、低速リンクを通るトラヒックの方がその伝送遅延分だけ遅く到着しやすい。それらがシステムバスで合流する際には、低速リンクを通るパケットに関しては、その低速リンクの伝送遅延分を締切時刻に対し考慮し、伝送遅延分を差し引いた、より早い締切時刻で変換し、より高優先度で伝送処理を行う。なお、オフチップバスの例としては、三次元実装で積層されたＬＳＩ間の伝送、プリント基板上の伝送、フレキシブルプリント基板を使ったプリント基板間の伝送、車載ＬＡＮ（例えば、イーサーネット）を介した伝送を想定してもよい。また、伝送特性を高遅延化する要因として、伝送路で生じる伝送誤り率や再送回数で生じる要因（伝送誤りと再送による伝送路の品質）を含めてもよい。一般に、伝送誤り率が高く、再送回数が多い伝送路は高遅延になりやすい。
【０１４５】
図２１は、スレーブからの応答パケットが伝送される、復路の経路上での優先度変換処理を示す。
【０１４６】
なお、本実施形態においては、マスタからスレーブへパケットが伝送される「往路」と、スレーブからマスタへ応答パケットが伝送される「復路」について、バスおよびルータがそれぞれ往復分離した構成で説明するが、分離せずに往路と復路で同じルータを介してパケットを伝送してもよい。
【０１４７】
復路においても、往路と同様に優先度変換をルータで行い、優先度をローカルバスで定義された優先度に復元することで、システムバスで定義された伝送の優先度と、ローカルバスで定義された伝送の優先度を、バスごとに最適な優先度に変更することができる。
【０１４８】
例えば、ルータ１０２では、スレーブ０が送信した応答パケットを受信し、低速リンクを通ってルータ１０１へパケットを伝送する。今、ルータ１０２がマスタ０行きのクラスＡのパケットを受信したとき、往路と同様に優先度変換ルールに基づき、ローカルバスで定義されたクラスであるクラスＢで変換し、バッファ割当と送信制御を行う。締切時刻に関しても、パケットに付与された締切時刻に対し、オフセット時間４００を加えた時刻をパケットに記録し、変換された締切時刻に基づいて送信制御を行う。
【０１４９】
なお、復路に関しては、高速なシステムバスから低速リンクへ伝送する際の伝送速度差を吸収するために、優先度を変換するルータに速度差吸収用のバッファを備えていてもよい。具体的には、バッファ部のバッファを、送信先であるローカルバスに配置された各マスタが最大同時送信可能なパケット数の和に基づいて、同時にバス上に存在しうる、同じローカルバス行きのすべての応答パケットを格納可能なバッファ量を備える。それにより、低速リンクへ伝送しきれないパケットが、速度差吸収バッファ以外の経路上のルータのバッファに長い時間留まることがなくなり、経路上のトラヒック同士のバッファ割当時の干渉を抑制することができる。
【０１５０】
なお、本実施形態においては、復路で優先度を復元する形態について説明したが、メモリの数が少ない場合に、復路のバスの伝送帯域を十分大きくすることで、復路では優先度（クラスと締切時間）を使わずに、伝送する複数のパケットを同じ優先度で伝送してもよい。なぜならば、メモリの数が少ない場合、往路は、多数のマスタから送信された複数のパケットがスレーブ付近の少数の中継装置に集中しやすく、パケット間の干渉が大きくなりやすいため、低速リンクの遅延を考慮した優先度で伝送したときに得られる効果が大きい。一方、復路は、スレーブから送信されるパケットが特定の中継装置に比較的集中しにくいため、伝送帯域を十分大きくし、優先度に基づく伝送を行わなくとも、パケット間の干渉を小さく抑えることができる。そこで復路では、優先度の変換を行わなくてもよい。
【０１５１】
たとえば図２２（Ａ）および（Ｂ）は、往路と復路とで優先度変換処理に差を設ける例を示す。図２２（Ａ）に示されるように、往路については、経路上のルータで、低速リンクの遅延を考慮した優先度の変換を行う。図２２（Ｂ）に示されるように、復路については、優先度変換および優先度に基づく伝送を行わなくてもよい。このように、復路に優先度変換する中継装置を用意せずに、各パケットを同じ優先度で伝送することで、復路の中継装置をより簡便に実装することができる。
【０１５２】
（変形例１）
前述の実施形態にかかるバスシステム１００においては、優先度を付け替えるルータにおいて、優先度変換ルールに基づき優先度変換を行っていたが、他の実施形態として、ＮＩＣ２００において変換された優先度を予め設定し、ルータでは、パケットに付与された変換された優先度を用いて優先度付替えを行う場合の実施形態について説明する。
【０１５３】
ＮＩＣ２００において変換された優先度を予め設定する場合、変換された優先度と、変換される前のローカルバスで定義される優先度の両方をパケットに付与して送信し、優先度を付け替えるルータでは、付与された変換後の優先度に基づいて伝送処理を行う。これにより、ルータでは、優先度変換の処理を行う回路面積と処理時間を削減しつつ、優先度付替えを行うことができ、また、オフチップ側のＮＩＣ２００の設定だけで、オフチップ側のバスとオンチップ側のバスの両方の優先度を変更することができる。
【０１５４】
図２３は、変換後の優先度を付与したパケットの構成の例を示す。
【０１５５】
変換後の優先度を付与したパケットは、前述の実施形態にかかるパケットの構成に対し、「変換後のクラス」および「変換後の締切時刻」を追加した構成をとる。
【０１５６】
図２４（Ａ）〜（Ｃ）は、図２３に示したパケットの構成に対し、実際のマスタから得られる情報で構成した例を示す。
【０１５７】
例えば、図２４（Ａ）は、低速リンクを通るマスタ０のパケットであって、パケットの宛先となるスレーブの宛先ＩＤが０、送信元となるマスタＩＤは０、ローカルバスにおいて定義されたクラスはクラスＢ、送信元のマスタに応答パケットが到着する締切時刻は５００、変換後のクラスはクラスＡ、変換後の締切時刻は１００で設定されている。
【０１５８】
また、図２４（Ｂ）は、同様に、宛先ＩＤは０、マスタＩＤは１、ローカルバスにおいて定義されたクラスはクラスＣ、応答パケットが到着する締切時刻は７００、変換後のクラスはクラスＡ、変換後の締切時刻は３００で設定されている。このとき、締切時刻の変換に用いられたオフセット時間は、マスタ０とマスタ１で同じ低速リンクを通過するため、同じ伝送遅延時間４００サイクルで計算されている。
【０１５９】
図２４（Ｃ）は、低速リンクを通らないマスタ２のパケットであって、宛先ＩＤは０、マスタＩＤは２、ローカルバスにおいて定義されたクラスはクラスＢ、応答パケットが到着する締切時刻は５５０、変換後のクラスはクラスＢ、変換後の締切時刻は５５０で設定されている。なお、マスタ２は低速リンクを通らないため、変換によってクラスと締切時刻は変更されない。
【０１６０】
なお、ＮＩＣ２００においてパケットに、変換前のローカルバスで定義される優先度と、変換後の優先度の両方を付与しているが、前者を付与せず、変換後の優先度のみを付与してもよい。その場合、ローカルバスにおいては、変換後の優先度で伝送処理を行わないといけなくなるため、伝送が非効率になりうる。具体的には、ローカルバスにおいて最適な伝送を行うためのクラス分類ではなくなるため、各マスタの要求品質を保証するためにローカルバスの伝送帯域を過剰に大きくする必要がある。一方、各ルータにおいては、パケットは変換後の優先度のみ付与されているため、優先度を選んで変換を行う処理を行わなくてよい。そのため、処理に必要な回路面積を抑える事ができる。
【０１６１】
図２５は、変換後の優先度を付与したパケットを生成するためのＮＩＣ２００の動作フローを示す。
【０１６２】
前述の実施形態におけるＮＩＣ２００の動作フロー（図７）との違いは、ステップＳ６３およびＳ６４である。すなわちステップＳ６３において、締切時刻決定部は、要求発生時刻に変換後の許容遅延時間を加えた値で変換後の締切時刻を決定する。またステップＳ６４において、パケット生成部は、マスタ情報記憶部２０５から変換後のクラスを取得し、締切時刻決定部から変換後の締切時刻を取得しつつ、取得した変換後のクラスと締切時刻を付与することでパケットを生成する。
【０１６３】
図２６は、変換後の優先度を付与したパケットを生成するためのマスタ情報記憶部の構成を示す。
【０１６４】
前述の実施形態におけるマスタ情報記憶部の構成（図８）との違いは、変換後のクラスと変換後の許容遅延時間を備える点である。これらの情報に基づいて、パケット生成部は変換後のクラスを取得し、締切時刻決定部は、変換後の締切時刻を決定する。
【０１６５】
なお、本実施形態は、マスタ情報記憶部は、変換後の締切時刻を求めるために、変換後の許容遅延時間を備えているが、変換後の許容遅延時間ではなく、変換に用いるオフセット時間の値を備えていてもよい。その場合、変換後の許容遅延時間の算出は、ＮＩＣ２００の締切時刻決定部において、マスタ情報記憶部の許容遅延時間およびオフセット時間に基づいて、許容遅延時間からオフセット時間を差し引いた値として、算出してもよい。
【０１６６】
図２７は、ルータ２６０の構成を示す。
【０１６７】
前述の実施形態におけるルータ２５０（図１０）の構成との違いは、ルータ２６０には、優先度変換部２５５と記憶部２５６が設けられていないことである。これは、本実施形態におけるルータ２６０では優先度変換ルールに基づく優先度変換を行う必要がないことに起因している。
【０１６８】
なお、オフチップのバスに配置されたルータ、オンチップのバスに配置されたルータを、優先度の切り替えを行うルータと同じ構成のルータで実装するために、パケットから優先度を読み出す位置を切り替えるためのレジスタを用意してもよい。具体的には、バッファ割当部２５７と送信制御部２５８に、読み出し切り替え用のレジスタを設け、レジスタの値に応じて、パケットの変換前の優先度を読み出すか、変換後の優先度を読み出すか、切り替えてもよい。レジスタの設定方法は、例えば、バスシステムの起動時に固定的に設定されるようにしてもよいし、バスシステム全体にレジスタ用の信号線を配線し、プロセッサが信号線を介してレジスタに設定値を書き込むことで、設定してもよい。
【０１６９】
図２８は、ルータ２６０の動作フローを示す。
【０１７０】
前述の実施形態におけるルータ２５０の動作フロー（図１１）との違いは、まず、優先度変換部２５５が優先度変換を行う処理（ステップＳ２３）と、優先度変換部２５５が変換された締切時刻をパケットに記録する処理（ステップＳ２４）が行われないことである。さらなる相違点は、図１１のステップＳ２５およびＳ２６が、図２８ではステップＳ７５およびＳ７６に変更されている点である。具体的には、図１１のステップＳ２５およびＳ２６における「変換後のクラス」および「変換後の締切時刻」の情報が、図２８では、バッファ割当部と送信制御部によって、バッファ部に格納されたパケットから取得されている。
【０１７１】
図２９は、本実施形態にかかるバスシステムにおいて、コンピュータプログラムを用いて変換後の優先度をＮＩＣに設定する方法を示す。このコンピュータプログラムは、バスシステムの設計時に、設計者の開発環境で利用される。本明細書では、設計者はＰＣ上で当該プログラムを実行するとして説明する。実行結果として得られた変換後の優先度が、ＮＩＣに設定される。なお、本実施形態では、設計者のＰＣによってプログラムを実行する形態について説明する。しかしながらこれは一例であり、それ以外の方法を排除することを意図するものではない。たとえば、同じ優先度の変換計算を手計算などの別の方法で実行してもよい。
【０１７２】
図３０は、設計者が利用するＰＣ３００のハードウェア構成を示す。ＰＣ３００は、ＣＰＵ３０１と、メモリ３０２と、グラフィックコントローラ３０３と、通信端子３０４とを備えている。これらの構成要素はバス３０６によって相互に通信可能に接続されている。メモリ３０２は、優先度計算プログラム３０５を格納している。
【０１７３】
ＣＰＵ３０１は、優先度計算プログラム３０５を実行する演算回路である。
【０１７４】
メモリ３０２はたとえばＲＡＭである。優先度計算プログラム３０５は、当初、ハードディスクドライブなどの記憶装置（図示せず）に格納されている。ＣＰＵ３０１が記憶装置から優先度計算プログラム３０５を読みだして、メモリ３０２上に展開する。
【０１７５】
グラフィックコントローラ３０３は、表示装置（図示せず）に演算結果等を表示させるための映像信号を生成する。
【０１７６】
通信端子３０４は、たとえば図２９に示すシステムとＰＣ３００とを接続するための端子である。
【０１７７】
優先度計算プログラム３０５を実行したＣＰＵ３０１は、優先度計算プログラム３０５に規定された命令にしたがって、変換後のクラスおよび変換後の許容遅延時間を算出する。そして、通信端子３０４を介して、求めたクラス、許容遅延時間を各ＮＩＣのマスタ情報記憶部に設定する。各ＮＩＣでは、設定されたクラス、許容遅延時間に基づいて、変換後のクラスと変換後の締切時刻を決定し、変換後のクラスと変換後の締切時刻をパケットに付与して送信する。
【０１７８】
図３１は、優先度計算プログラムの処理フローを示す。
【０１７９】
ステップＳ８０において、ＣＰＵ３０１は、設計者からマスタＩＤ、優先度変換ルール、許容遅延時間、伝送遅延時間の入力を待ち受ける。ステップ８１において、ＣＰＵ３０１は、優先度変換ルールとマスタＩＤに基づき、対応するクラスを算出する。ＣＰＵ３０１は、許容遅延時間から伝送遅延時間を差し引いた値を、新しい許容遅延時間として算出する。ＣＰＵ３０１は、計算結果として、算出後のクラスと許容遅延時間を出力する。上記を、設計ツールとして実現してもよい。
【０１８０】
（利用例１）
以下、本発明の例示的な実施形態によるバスシステムの実際の機器への利用例を説明する。
【０１８１】
図３２は、画像処理の外付けチップと組み合わせ、画像認識向けのチップを開発する例を示している。オフチップには画像処理を行うマスタが存在し、オンチップには、２つのプロセッサ（ＣＰＵ）のマスタと、周辺機器との入出力（Ｉ／Ｏ）を処理するマスタ、および２つのメモリが、ネットワーク化されたバスを介して接続されている。画像処理チップは外付けチップのため、低速なオフチップバスを介して接続される。
【０１８２】
画像認識向けの半導体チップは、デジタル・カメラの顔認識や自動車の運転支援、屋外監視カメラでの人物や物体追跡など、応用範囲が広い。また一方で、画像処理エンジンの処理内容は、処理対象や処理アルゴリズムの変更により、頻繁に変更を要する。そういった状況の中で、半導体を効率よく開発するためには、画像認識に相当するモジュール部分を外部チップ化した上で、チップを組み合わせて開発する方法が考えられる。例えば、処理内容の変更には画像処理チップを作り変えることで対応し、搭載する機種の変更には、画像処理チップは作り変えず、システムバスを備える側のメインのチップを作り変えることで対応することで、効率的に開発を行うことができる。
【０１８３】
本発明の例示的な実施形態によるバスシステムを適用することで、組み合わせるときに変更を加えるチップを選んで、優先度の設定を行うことが可能になり、効率的に開発を行うことができる。例えば、オフチップ側を作り変える場合には、オフチップ側で優先度を変換するルータの設定を変更し、システムバスを備えるメインのチップを作り変える場合には、メインのチップ側で優先度を変換するルータの設定を変更すればよい。また、そのとき、低速リンクとなるオフチップバスの伝送速度や配線長に応じ、伝送遅延を考慮して、画像処理のパケットに対する伝送の優先度がより高優先度になるように、変換後の優先度を設定すればよい。このようにして、さまざまなチップの組合せのバリエーションに対し、オフチップのパケットの伝送性能を落とさずに優先度の設定を行うことが可能になる。
【０１８４】
（他の実施例）
図３３は、往路と復路とを分離したシステムバスの構成例である。わかりやすく表現するために、図では往路と復路とを物理的に分離して配置している。実際の利用に際しては、往路と復路は近くに配置される。また、図の例ではバタフライ網で、往路と復路は同様のネットワーク構成で実現しているが、往路と復路は異なったネットワーク構成であってもよい。
【０１８５】
図に示すように、往路と復路の伝送路は分離されているため、往路と復路でトラヒック干渉が生じない。しかし、マスタ間で通信を行う場合には、これまでは全てのマスタはシステムバスに備えられたスレーブ（メモリ）を介して通信を行わなければならなかったため、スレーブでの負荷集中やルータの中継処理が大きくなり、伝送遅延が大きくなりやすい。
【０１８６】
以下では、システムバスのスレーブを介さずに、システムバスを介したローカルバス間、又はローカルバス内で、マスタ同士の直接通信を行う例を説明する。これにより、伝送遅延の低減や、システムバスのメモリの負荷集中を抑制できる。
【０１８７】
上述の実施形態では、２種類の経路について、優先度変換の行うルータを適用する形態について説明した。２種類の経路とは、マスタからローカルバス、システムバスの順に通り、スレーブに到着する往路バスの経路、およびスレーブからシステムバス、ローカルバスの順に通り、マスタに到着する復路バスの経路であった。上述の実施形態に関連する他の例として、マスタからローカルバス、システムバスの順に通り、スレーブに到着せずに、再びローカルバスを通って、マスタに到着するマスタ間通信の経路について、本実施形態にかかるルータを適用してもよい。
【０１８８】
図３４は、低速リンクを通るマスタ間通信に本実施形態を適用したバスシステム１１０の例を示す。図３４における、ルータ１およびルータ２の間、およびルータ１０７およびルータ１０８の間が、バスシステム内で相対的に伝送速度が低い低速リンクである。
【０１８９】
低速リンクを通るマスタ間通信では、低速リンクを通るパケットをシステムバスでより高い優先度で伝送するため、パケットの優先度を、システムバスに伝送されるときに、より高い優先度に変換する。また、パケットシステムバスから再び別のローカルバスに伝送されるときに、伝送先の別のローカルバスで定義された優先度に変換して伝送を行う。
【０１９０】
例えば今、ローカルバス０のマスタ０から送信されたパケットを考える。このパケットには、宛先ＩＤとして、ローカルバスＮのマスタ４が付与されているとする。このパケットがルータ１もしくはルータ２で伝送されるとき、低速リンクの遅延を考慮して、その優先度はより高い優先度に変換される。そしてそのパケットが伝送される。ルータ２を経由して、ルータ８を通るときに、パケットはマスタ間通信用に設けられた、往路と復路の間の折り返し用リンクを通って復路側のルータ１０８へ伝送される。
【０１９１】
なお、折り返し用リンクについては、往路復路分離のバスに対し、システムバスとローカルバスを接続する、往路側ルータ（例えば、ルータ８）の送信制御部と復路側ルータ（例えば、ルータ１０８）のバッファ管理部との間を接続することで、スレーブまで伝送することなく経路の途中で往路から復路へ折り返すことができる。また、往復分離のバスにおいて、同じローカルバス内のマスタ間通信の場合に対しても、前述の折り返し用リンクを経由することで、システムバスを通る他のパケットとの干渉を抑えながら、各ローカルバスに対して少なくとも１つの折り返しリンクを備えればよいので、少ないリソースでマスタ間通信用の折り返し経路を提供することができる。
【０１９２】
このパケットが折り返し用リンクを通って復路側のルータ１０８まで伝送されると、その優先度は、伝送先であるローカルバスＮの要求品質で定義された優先度に変換される。そしてそのパケットが伝送される。具体的には、クラスに関しては、ローカルバスＮに配置されたマスタの要求品質の厳しさに応じて決められたクラスに変換される。また、締切時刻に関しては、ルータ１０８とルータ１０７の間の低速リンクの伝送遅延を考慮し、伝送遅延分を足して、より低優先度で伝送する。なお、復路側では、バスの伝送帯域が十分大きく、復路のローカルバスにおいて優先度による伝送制御によって得られる効果が小さい場合、復路での優先度の変換は行わなくてもよい。
【０１９３】
（多段接続のバスシステムにおける優先度変換の例）
前述の実施形態では、ローカルバスとシステムバスの間で優先度を変換する形態で説明したが、複数のローカルバスを低速リンクで多段に接続するバスシステムにおいて、優先度を変換するルータを多段に適用してもよい。
【０１９４】
図３５は、複数のローカルバスを低速リンクで多段に接続する例を示す。この場合、前述の実施形態のローカルバスとシステムバスの間の優先度変換だけではなく、ローカルバス同士の接続の間でも優先度変換を行ってもよい。図の例では、ルータ１とルータ９との間で優先度変換を行い、さらにルータ７とルータ２との間でも優先度変換を行えばよい。
【０１９５】
例えば、同じパケットであっても、ローカルバス０で定義された優先度、ローカルバスＮで定義された優先度、システムバスで定義された優先度で、優先度を切り替えて伝送することができる。その際、各ローカルバス間、およびローカルバスとシステムバスの間の低速リンクの伝送遅延を考慮して、優先度（クラスと締切時刻）がより高優先度になるように変換してもよい。例えば、ローカルバス０のルータ１からローカルバスＮのルータ９へ伝送されるときは、優先度をローカルバス０とローカルバスＮの間の低速リンクの伝送遅延に基づいて、より高優先度になるように変換する。また、ローカルバスＮのルータ７からシステムバスのルータ２へ伝送されるときは、再びローカルバスＮとシステムバスの間の低速リンクの伝送遅延に基づいて、優先度をさらに高優先度になるように変換する。
【０１９６】
（システムバス側の優先度を相対的に下げる例）
前述の実施形態では、低速リンクを通るパケットの優先度について、変換される前よりも変換された後の優先度を高くして伝送処理を行うが、低速リンクを通らないパケットの優先度を低くして処理することで、低速リンクを通るパケットの優先度を相対的に高くしてもよい。
【０１９７】
図３６は、低速リンクを通らないパケットの優先度を低くする場合の、優先度変換ルールを示す。例えば、低速リンクを通るマスタ０は、優先度（クラスと締切時刻）を変更せず、クラスは変更前と同じクラスＢ、締切時刻に対するオフセット時間は０となる。また、低速リンクを通らないマスタ２は、優先度（クラスと締切時刻）を低くするため、本来のクラスであるクラスＢから、低優先度であるクラスＣに変換される。また、締切時刻に対するオフセット時間は「−４５０」で、本来の締切時刻に対し「−４５０」差し引き、すなわち「４５０」だけ加えつつ、締切時刻をより遅く設定することで、優先度をより低優先度に変換する。このように、低速リンクを通らないパケットの優先度を低く変換することで、低速リンクを通るパケットの優先度を相対的に高くなるように変換してもよい。
【０１９８】
（変形例２：ケース（Ｂ）ノードの処理性能差でバス伝送性能差が生じる例）
前述の実施形態においては、低速リンクを通過するパケットと、低速リンクを通過しないパケットを区別し、低速リンクを通過するパケットに対して、低速リンクの遅延時間に基づき、優先度を相対的に高く変換することで、高い伝送性能を維持するための形態について述べた（ケース（Ａ））。一方、本実施形態では、ある中継装置を通るすべてのパケットが同じ低速リンクを通過する場合に、優先度を変換することで、高い伝送性能を維持するための形態について述べる（ケース（Ｂ））。
【０１９９】
なお、本実施形態においては、遅延が大きいバスやスループットの小さいバスのことを「低速リンク」と呼び、特にバスの伝送にかかる遅延時間だけでなく、バスに接続されたノードの処理能力が低いために、そのバスに直接接続されたノードにおける遅延時間（スループット）が他ノードよりも相対的に大きく（小さく）なる場合、そのバスも低速リンクと呼ぶ。具体的には、ＤＲＡＭのようなメモリデバイスのノードは、アクセスデータを受信してから応答を送信するまでの遅延時間が他のノード（例えばルータ）よりも非常に大きいノードであるため、メモリデバイスに接続されたバスは低速リンクに含まれる。例えば、メモリデバイスはバンク切り替えなどの処理が含まれるため、ルータにくらべて、処理遅延が大きくなる。また、本実施形態においては、処理性能の低いノードに接続されたリンク（ケース（Ｂ））について述べるが、同様にケース（Ａ）の高遅延のリンクについても本開示を適用することができる。さらに、メモリデバイスだけでなく、Ｉ／Ｏなどの低速デバイスも対象としてよい。また、「中継装置」とは、バスを介してデータを受信し、受信したデータを送信する任意のノードのことを呼び、受信したパケットからデータを抽出してメモリデバイスへのデータの送信順序制御などを行うメモリコントローラも中継装置に含めてもよい。
【０２００】
ある中継装置に伝送されるすべてのパケットが同じ低速リンクを通過する場合、優先度をクラス単位からマスタ単位に変換することで、より高い伝送性能を維持できる。まず、半導体における各マスタはメモリとの間でそれぞれ異なる要求品質（保証すべき遅延とスループット）でデータ通信を行っている。中継装置がクラスと締切時刻による伝送を行う場合、これらの要求品質を保証するためには、十分大きな伝送帯域を用意する必要がある。だが一方、メモリデバイスのように処理能力が低い低速リンクを通過するときは、バスの伝送速度を高めても一定時間に処理できる量は制限される。このため、クラスと締切時刻の優先度を用いて伝送を行った場合、各マスタの許容遅延や要求スループットを保証できなくなる可能性がある。そこで、マスタごとの要求性能を確保できるようにするため、メモリコントローラはクラスからマスタごとの優先度に変換し、さらにマスタごとに送信レートを制御しながら伝送処理を行う必要がある。
【０２０１】
図３７は、本実施形態にかかるバスシステムの構成の例を示す。
【０２０２】
このバスシステムは、マスタによるメモリデバイスへのアクセス要求を、マスタからスレーブのメモリデバイスまで伝送する「往路」と、アクセス要求に対するメモリデバイスの応答データを、メモリデバイスからマスタへ伝送する「復路」を有する。なお、メモリデバイスを複数個備える構成であってもよい。往路に関して、各マスタとメモリデバイスへのアクセス処理を行うメモリコントローラとの間の経路は、相対的に低遅延のバス（例えば、システムバスやローカルバス）とノードで構成される（バス１）。一方、メモリデバイスは遅延の大きいノードであるため、メモリコントローラからメモリデバイスまでの間の経路は相対的に高遅延となる（バス２）。同様に、復路に関して、メモリデバイスは処理遅延が大きいものの、メモリコントローラやルータの処理遅延がメモリデバイスの処理遅延よりも小さい場合、メモリデバイスから各マスタまでの間の経路は相対的に低遅延となる（バス１）。
【０２０３】
優先度変換処理は、往路に関しては、相対的に低遅延の経路（バス１）から高遅延の経路（バス２）へ中継するメモリコントローラが行う。また復路に関しては、高遅延の経路（バス２）から低遅延の経路（バス１）へ中継するメモリコントローラが優先度変換処理による優先度の復元を行う。このとき、復路では、バス帯域が十分確保され、復路のメモリコントローラの処理能力がルータと同様に処理能力の高い場合には、メモリコントローラにトラヒックが残留しにくくなるため、各パケットを同一の優先度で扱い、実質的に優先度を使わない伝送を行うことで、復路の実装を簡便にすることができる。具体的には、各パケットについて優先度（クラスと締切時間）を付与せずに伝送することでデータ通信量を削減し、メモリコントローラも含めた中継装置について優先度の比較処理にかかる比較回路を削減することができる。
【０２０４】
なお、往路での優先度変換ルールは、前述の実施形態におけるマスタＩＤと変換後の優先度との対応関係を表したテーブルであってもよいし、メモリコントローラがマスタごとに対応するバッファを備え、マスタＩＤではなくバッファＩＤと変換後の優先度との対応関係を表したテーブルであってもよい。
【０２０５】
図３８（Ａ）および（Ｂ）は、メモリコントローラにおいて、優先度変換を行わない場合と行う場合の違いを示す。
【０２０６】
図３８（Ａ）および（Ｂ）は、各場合について、往路のルータ、メモリコントローラ、メモリデバイスの各ノードにおける、パケットの送信時刻と受信時刻を示す。クラスＡのマスタ０から送信された複数のパケットと、クラスＡのマスタ１から送信された複数のパケットが伝送されている。各パケットの締切時刻については、マスタ０の送信したパケットの締切時刻を時刻ｔ０、マスタ１の送信したパケットの締切時刻を時刻ｔ１とし、時刻ｔ１は時刻ｔ０よりも大きいとする。また、変換後の優先度については、マスタ０はマスタ１よりも高優先とする。
【０２０７】
メモリコントローラで優先度を変換しない図３８（Ａ）の場合、伝送の優先順位はクラスと締切時刻によって決まるため、締切時刻の早いマスタ０のパケットを優先的に早く伝送する。この場合、クラスと締切時刻に基づく送信スケジューリングになるため、マスタごとの保証すべきスループットを保証できなくなる可能性がある。一方、優先度を変換する図３８（Ｂ）の場合、メモリコントローラに到着している複数のパケットの中から、変換後の優先度の高い順に、マスタごとに送信レートを制御して伝送する。これにより、マスタごとのスループットを保証することでマスタごとの締切時刻を保証することが可能になる。
【０２０８】
図３９は、往路のメモリコントローラ４００の構成を示す。
【０２０９】
メモリコントローラ４００は、受信したパケットのマスタＩＤを識別し、マスタごとに対応するバッファにパケットを格納するバッファ管理部４０１、受信したパケットをマスタごとに分離して格納するためのバッファ部４０２と、送信先のメモリデバイスの空き状態を確認し、バッファ部４０２の空きバッファＩＤを送信元の中継装置に通知するためのフロー制御部４０３、マスタごとに優先度を変換する優先度変換ルールを記憶する優先度変換ルール記憶部４０４、各パケットのマスタＩＤを識別し、識別されたマスタＩＤと優先度変換ルールに基づき、優先度を変換する優先度変換部４０５、マスタごとにデータの送信レートを管理するためのレート管理部４０６、レート管理部４０６の管理している送信レートと優先度変換部４０５で変換された優先度に基づき、バッファ部４０２に格納されたパケットのデータの送信を制御する送信制御部４０７を備える。なお、バッファは物理的にマスタごとに分離されている必要はなく１つのバッファを論理的に分けて実装してもよい。また、復路のメモリコントローラは、前述したように、宛先および優先度を区別しない構成で実現できるため、メモリデバイスから送信される応答データを格納するバッファ部と送信先の中継装置の空きバッファＩＤを取得するフロー制御部４０３と送信先の空きバッファＩＤの有無に応じてバッファ部に格納された応答データを送信する送信制御部を備える構成（図示せず）になる。
【０２１０】
図４０は、メモリコントローラ４００の動作フローを示す。
【０２１１】
バッファ管理部がルータからパケットを受信し、パケットのマスタＩＤに対応するバッファ部のバッファにパケットを格納する（Ｓ９０）。フロー制御部４０３が、送信先のメモリデバイスからメモリデバイスの処理の受付可否の状態を取得し、バッファ部の空きバッファＩＤを送信元の中継装置へ通知する（Ｓ９１）。優先度変換部が、各バッファに格納されたパケットのマスタＩＤを取得し、マスタＩＤと優先度変換ルールを用いて、優先度の変換を行う（Ｓ９２）。送信制御部がレート管理部の管理するマスタごとに設定された送信間隔と現在の送信間隔を取得する（Ｓ９３）。送信制御部がバッファ部に格納されたパケットに対し、現在の送信間隔（前回の送信時刻からの経過時間）から設定された送信間隔を差し引いた差分値の大きい順に「送信間隔に基づく優先順位」を割り当てる（Ｓ９４）。送信制御部がバッファ部に格納されたパケットに対し、変換後の優先度の高い順に「要求品質に基づく優先順位」を割り当てる（Ｓ９５）。変換後の要求品質に基づく優先度の同じパケットが複数存在する場合、マスタごとに送信レートが均等になるように（たとえば、全てのマスタの送信レートが同じ値になるよう、または予め定められ得た範囲内（たとえば５％以内）に収まるように）、現在の送信間隔（前回の送信時刻からの経過時間）の大きいマスタから順に要求品質に基づく優先順位を割り当てる（Ｓ９６）。送信制御部が、現在の送信間隔が設定された送信間隔より大きいパケット（グループ１のパケット）に対しては送信間隔に基づく優先順位の順に、それ以外のパケット（グループ２のパケット）に対しては要求品質に基づく優先順位の順に、グループ２のパケットよりもグループ１のパケットを優先的に、メモリデバイスの空いているときに、パケットのデータをメモリデバイスへ送信する（Ｓ９７）。送信制御部が、送信したデータのマスタＩＤをレート管理部に通知する（Ｓ９８）。
【０２１２】
図４１は、優先度変換ルール記憶部４０４に記憶される優先度変換ルールを示す。本実施形態における優先度変換ルールは、マスタＩＤごとに対応する変換後のクラスを備えるテーブルで実装する。例えば、このルールを用いることで、パケットのマスタＩＤがマスタ０のパケットは、クラスＡから同じ優先度であるクラスＡに変換される。また、マスタ１のパケットは、マスタ０と同じクラスのクラスＡから、クラスＡより優先度の低いクラスＢに変換される。マスタ４およびマスタ５のパケットは、クラスＣから変換後のクラスの中で最も優先度の低いクラスＥに変換される。
【０２１３】
図４２は、レート管理部４０６が管理するマスタごとの送信レートを示す。
【０２１４】
本実施形態においては、送信レートは、送信するデータの送信間隔で制御する。なお、送信レートは送信間隔ではなく、単位時間当たりに送信したデータ量で制御してもよい。送信間隔で制御する場合、例えば、あらかじめ設計者がレート管理部にマスタごとの送信間隔を設定し、レート管理部は現在の送信間隔（前回の送信時刻からの経過時間）をパケットの送信タイミングに基づき、送信されるとカウンタ値が「０」となるカウンタで、送信待ち時はカウントアップされるカウンタで送信間隔を制御する。具体的には、図４２に示すように、マスタ０について、設定された送信間隔は１０（サイクル）で、現在のカウンタ値は２（サイクル）である。また、マスタ１について、設定された送信間隔は１０（サイクル）で、現在のカウンタ値は１２（サイクル）である。このように、現在のカウンタ値が設定された送信間隔よりも大きいパケットについては、送信制御部はその差が大きいパケットから順に送信する「送信間隔に基づく優先順位」を高く割り当てる（グループ１）。マスタ２について、設定された送信間隔は１００（サイクル）、現在のカウンタ値は２５（サイクル）である。現在のカウンタ値が設定された送信間隔よりも小さいパケットについては、変換後のクラスの優先度の高い順に「要求品質に基づく優先順位」を高く割り当てる（グループ２）。さらに、変換後の要求品質に基づく優先度が同じクラスに割り当てられるマスタが複数存在する（たとえば、クラスＥのマスタ４とマスタ５）場合については、送信レートがマスタ間で均等になるように、たとえば、送信制御部は現在のカウンタ値が大きい方から順に要求品質に基づく優先順位を高く割り当てる。あるいは、一定時間に送信したデータ量を積算しておいて、一定時間に送信するデータ量がマスタ間で均等になるように、直前に一定時間に送信したデータ量の小さい方のマスタに対し優先順位を高く割り当ててもよい。なお、スループットと遅延時間の両方を保証しないマスタについては、レート管理部の送信間隔を「−１」で設定し、カウンタ値と設定された送信間隔の差分の計算をせずに、送信のための優先順位は最も低い優先順位を割り当てる。
【０２１５】
送信制御部は、例えば、図４１と図４２の例では、送信制御のためのカウンタ値が設定された送信間隔より大きいマスタ１については（グループ１）、最も高優先である優先順位「１」が割り当てられる（値が小さい方が高優先とする）。次に、送信制御のためのカウンタ値が設定された送信間隔以下のマスタ０、２、３については、要求品質に基づく優先順位に従い（グループ２）、変換後のクラスがクラスＡのマスタ０が優先順位「２」、クラスＣのマスタ２が優先順位「３」、クラスＤのマスタ３が優先順位「４」を割り当てられる。また、スループットおよび遅延時間の両方を保証しない非保証のマスタ４とマスタ５については、最も低い優先順位を割り当て、変換後のクラスが同じクラスＥにあたるため、カウンタ値の大きいマスタ５が優先順位「５」、マスタ６が優先順位「６」を割り当てられる。
【０２１６】
このようにして、送信制御部は、各マスタの送信レートを設定された送信レートで保証しつつ、優先順位の最も高いパケットをメモリデバイスへ送信する。
【産業上の利用可能性】
【０２１７】
本発明のある実施形態は、半導体の集積回路における分散型バスにおいて、バスの伝送性能やノードの処理性能が異なるときに、複数の設定のバリエーションを提供することで、半導体同士を短い時間で組み合わせて作り上げることを可能にし、半導体開発の低コスト化が可能になる。また、様々な組み合わせ方に対応できるため、機種展開が容易となる。
【符号の説明】
【０２１８】
１００  バスシステム
２００  ＮＩＣ
２０１  バッファ管理部
２０２  バッファ部
２０３  フロー制御部
２０４  バッファ割当部
２０５  マスタ情報記憶部
２０６  締切時刻決定部
２０７  パケット生成部
２５０  ルータ
２５１  バッファ管理部
２５２  バッファ部
２５３  ルーティング処理部
２５４  フロー制御部
２５５  優先度変換部
２５６  優先度変換ルール記憶部（記憶部）
２５７  バッファ割当部
２５８  送信制御部
３００  ＰＣ
３０１  ＣＰＵ
３０２  メモリ
３０３  グラフィックコントローラ
３０４  通信端子
【図１】
2014141678.tif 000003
【図２】
2014141678.tif 000004
【図３】
2014141678.tif 000005
【図４】
2014141678.tif 000006
【図５】
2014141678.tif 000007
【図６】
2014141678.tif 000008
【図７】
2014141678.tif 000009
【図８】
2014141678.tif 000010
【図９】
2014141678.tif 000011
【図１０】
2014141678.tif 000012
【図１１】
2014141678.tif 000013
【図１２】
2014141678.tif 000014
【図１３】
2014141678.tif 000015
【図１４】
2014141678.tif 000016
【図１５】
2014141678.tif 000017
【図１６】
2014141678.tif 000018
【図１７】
2014141678.tif 000019
【図１８】
2014141678.tif 000020
【図１９】
2014141678.tif 000021
【図２０】
2014141678.tif 000022
【図２１】
2014141678.tif 000023
【図２２】
2014141678.tif 000024
【図２３】
2014141678.tif 000025
【図２４】
2014141678.tif 000026
【図２５】
2014141678.tif 000027
【図２６】
2014141678.tif 000028
【図２７】
2014141678.tif 000029
【図２８】
2014141678.tif 000030
【図２９】
2014141678.tif 000031
【図３０】
2014141678.tif 000032
【図３１】
2014141678.tif 000033
【図３２】
2014141678.tif 000034
【図３３】
2014141678.tif 000035
【図３４】
2014141678.tif 000036
【図３５】
2014141678.tif 000037
【図３６】
2014141678.tif 000038
【図３７】
2014141678.tif 000039
【図３８】
2014141678.tif 000040
【図３９】
2014141678.tif 000041
【図４０】
2014141678.tif 000042
【図４１】
2014141678.tif 000043
【図４２】
2014141678.tif 000044
【手続補正書】
【提出日】平成27年2月25日(2015.2.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワーク化されたバスにおいて、前記バスに配置された中継装置を介して、第１ノードおよび少なくとも１つの第２ノードの間でデータを伝送する、半導体回路のバスシステムであって、
前記バスシステムは、相対的に低遅延の第１のバスと、相対的に高遅延の第２のバスとを備え、
前記第１ノードは、
データを格納するバッファ部と、
前記バッファ部に格納されたデータに、相対的に伝送遅延が大きい高遅延バスの伝送遅延に基づいて決定された、前記中継装置における伝送の優先度を特定する情報を付与して複数のパケットを生成するパケット生成部と
を備え、
前記中継装置は、
予め定められた優先度変換ルールに基づいて、前記複数のパケットの各々の優先度を変換する優先度変換部と、
前記優先度に基づいて、前記パケットを送信する送信先の中継装置のバッファの割当を行うバッファ割当部と、
前記優先度の高い順に、パケットの送信を行う送信制御部と、
前記優先度に基づいて、パケットを格納するバッファ部と
を備え、
前記バッファ割当部は、変換された前記優先度に基づいて、前記パケットを送信する送信先の中継装置のバッファの割当を行い、
前記優先度は、要求品質の厳しさを表現するクラス、および要求品質の許容遅延を表す締切時刻の少なくとも一方によって決定される、バスシステム。
【請求項２】
相対的に高遅延のバスを介して伝送されるパケットに関し、前記優先度変換部は、優先度がより高くなるよう前記優先度を変換する、請求項１に記載のバスシステム。
【請求項３】
相対的に高遅延の前記バスを介して伝送されないパケットに関し、前記優先度変換部は、優先度がより低くなるよう前記優先度を変換する、請求項１に記載のバスシステム。
【請求項４】
前記優先度が、要求品質の許容遅延を表す締切時刻によって決定される場合において、前記優先度変換部は、パケットが通過する相対的に高遅延の前記第２のバスごとに、一定の時間、締切時刻が短くなるよう前記優先度を変換する、請求項１または２に記載のバスシステム。
【請求項５】
前記バッファ部は、相対的に高遅延のバスを介して伝送されるパケットと、相対的に低遅延のバスを介して伝送されるパケットを分離して格納する、請求項１に記載のバスシステム。
【請求項６】
前記優先度が、要求品質の許容遅延を表す締切時刻によって決定される場合において、前記送信制御部は、締切時刻が短い順にパケットの送信を行う、請求項１または２に記載のバスシステム。
【請求項７】
前記要求品質の厳しさを表現するクラスは、前記バス上の所定のノードが要求するスループット、許容遅延時間のうち、少なくとも１つにより定義される、請求項１または２に記載のバスシステム。
【請求項８】
前記優先度が、前記要求品質の厳しさを表現するクラスによって決定される場合において、
前記中継装置のバッファ割当部および前記送信制御部は、前記優先度の低いクラスに関して、優先度の高いクラスよりも低い粒度で締切時刻の比較処理を行う、請求項１または７に記載のバスシステム。
【請求項９】
前記優先度が、前記要求品質の厳しさを表現するクラスによって決定される場合において、前記中継装置のバッファ部は、前記優先度の高いクラスのバッファ数よりも、前記優先度の低いクラスのバッファ数を少なく設定する、請求項１または７に記載のバスシステム。
【請求項１０】
前記バスは、相対的に伝送遅延が大きい高遅延バスを含んでおり、
前記伝送遅延は、配線長、リピータ数、伝送材料、伝送路の伝送誤り率、伝送路での再送回数の少なくともひとつに基づいて決定される、請求項１に記載のバスシステム。
【請求項１１】
少なくとも２つのバスシステムが、異なる２つの伝送経路で相互接続されている場合において、前記第１ノードおよび前記少なくとも１つの第２ノードは、それぞれ異なるバスシステムに存在しており、
前記２つの伝送経路は、それぞれパケットの往路および復路の経路として利用され、
前記往路にはパケットを中継する往路中継装置が設けられ、
前記復路にはパケットを中継する復路中継装置が設けられており、
前記往路中継装置は、少なくとも、前記第１ノードから前記少なくとも１つの第２ノードへ伝送されるパケットを中継し、前記復路中継装置は、少なくとも、前記少なくとも１つの第２ノードから前記第１ノードへ伝送されるパケットを中継し、
前記往路中継装置および前記復路中継装置は互いに接続されている、請求項１に記載のバスシステム。
【請求項１２】
ネットワーク化されたバスにおいて、前記バスに配置された中継装置を介して、第１ノードおよび少なくとも１つの第２ノードの間で複数のデータを伝送する半導体回路のバスシステムに設定する伝送の優先度を計算するための、コンピュータによって実行されるコンピュータプログラムであって、
前記バスシステムは、相対的に低遅延の第１のバスと、相対的に高遅延の第２のバスとを備え、
前記コンピュータプログラムはコンピュータに対し、前記第２のバスの伝送遅延に基づいて決定された優先度に変換するための優先度変換ルール、および予め定められた優先度の情報の入力を受け取るステップと、
予め定められた前記優先度および前記優先度変換ルールに基づいて、前記中継装置における伝送の優先度を計算するステップと
を実行させる、コンピュータプログラム。
【請求項１３】
ネットワーク化されたバスにおいて、前記バスに配置された少なくとも１つの中継装置を介して、第１ノードおよび第２ノードの間でデータを伝送する半導体回路のバスシステムであって、
前記第２ノードは、前記中継装置よりも相対的に低い処理能力を有しており、
前記第１ノードおよび前記中継装置は第１のバスを介して接続され、
前記中継装置および前記第２ノードは第２のバスを介して接続されており、
前記第１のバスにおいては、前記要求品質の厳しさを表現するクラス単位でパケット処理を行う第１のクラス分類が定義され、前記第２のバスにおいては前記第１ノード単位でパケット処理を行う第２のクラス分類が定義されており、
前記第１ノードは、
前記データを格納するバッファ部と、
前記バッファ部に格納されたデータに、前記中継装置における伝送の優先度を特定するクラスを付与して複数のパケットを生成するパケット生成部と
を備え、
前記中継装置は、
前記第１のバスを介して、前記複数のパケットを受信するバッファ管理部と、
受信した前記パケットを格納するバッファ部と、
前記複数のパケットの送信元の第１ノードを識別し、クラス単位のパケット処理から前記第１ノード単位のパケット処理に変換して優先処理を行う優先度変換部と、
変換された、パケットの送信順位を示す優先度の高い順に、前記データを前記第２のバスを介して送信する送信制御部と
を備えている、バスシステム。
【請求項１４】
ネットワーク化されたバスにおいて、前記バスに配置された複数の中継装置を介して、第１ノードおよび第２ノードの間でデータを伝送する、半導体回路のバスシステムであって、
前記第２ノードは、前記中継装置よりも相対的に低い処理能力を有しており、
前記バスシステムは、パケットが伝送される経路として往路と復路とを独立して備えており、
前記第１ノードおよび前記中継装置は、前記往路を構成する第１のバスを介して接続され、
前記中継装置および前記第２ノードは、前記往路を構成する第２のバスを介して接続されており、
前記第１のバスにおいては、前記要求品質の厳しさを表現するクラス単位でパケット処理を行う第１のクラス分類が定義され、前記第２のバスにおいては前記第１ノード単位でパケット処理を行う第２のクラス分類が定義されており、
前記第１のバスと前記第２のバスとの間には第１の中継装置が配置されており、
前記第１の中継装置は、
前記第１のバスを介して、前記複数のパケットを受信するバッファ管理部と、
受信した前記パケットを格納するためのバッファ部と、
前記複数のパケットの送信元の第１ノードを識別し、クラス単位のパケット処理から前記第１ノード単位のパケット処理に変換して優先処理を行う優先度変換部と、
変換された、パケットの送信順位を示す優先度の高い順に、前記データを前記第２のバスを介して送信する送信制御部と
を備え、
前記復路には第２の中継装置が配置されており、
前記第２の中継装置は、前記第２ノードから前記第１ノードへ複数のパケットを伝送し、前記複数のパケットの送信の優先度を区別せずに伝送する、バスシステム。
【請求項１５】
前記第１の中継装置は、
前記第１ノード毎に送信レートを記憶するレート管理部と、
前記バッファ部に格納された複数のパケットに、前記レート管理部に設定された送信レートに基づいた第１の優先順位と、前記第１ノード単位に変換された前記クラスの優先度に基づく第２の優先順位を割り当て、前記第１の優先順位を優先的に用いて、前記データの送信を行う送信制御部と
をさらに備えた、請求項１３または１４に記載のバスシステム。
【請求項１６】
前記第１の中継装置は、送信先の前記第２ノードから、前記データの受信可否状態を取得するフロー制御部をさらに備えた、請求項１３または１４に記載のバスシステム。
【請求項１７】
前記第１の中継装置は、変換されたクラスの優先度が同じになる場合には、同じ優先度の複数の第１ノード間で送信レートが均等になるように送信処理を行う送信制御部を備えた、請求項１３または１４に記載のバスシステム。
【国際調査報告】
2014141678.tif 000045
2014141678.tif 000046
2014141678.tif 000047
2014141678.tif 000048