(57)【特許請求の範囲】
【請求項１】
複数のバスインタフェース装置および中継装置が、集積回路上に構築されたパケット交換方式のバスによって接続されたバスシステムであって、
前記複数のバスインタフェース装置は、それぞれ、前記バスシステムの１動作サイクルで送信するデータのビット数が異なる複数の送信ノードと接続され、
前記複数のバスインタフェース装置の各々は、
接続された送信ノードから受信したデータを格納する受信バッファと、
接続された前記送信ノードに関する前記ビット数を示すサイズ情報を記憶する記憶部と、
前記サイズ情報を含むヘッダ情報を生成するヘッダ情報生成部と、
前記ヘッダ情報および前記データからパケットを生成するパケット化部と、
前記中継装置への前記パケットの送信を制御する送信制御部とを備え、
前記中継装置は、
前記バスインタフェース装置から受信した前記パケットを解析して、前記ヘッダ情報から前記サイズ情報を取得するパケット解析部と、
受信した前記パケットを格納するバッファと、
受信した前記パケットの送信先を決定する中継制御部と、
前記バッファからの前記パケットの送信を制御する出力制御部と、
取得した前記サイズ情報に基づいて、前記バッファへの格納量を設定するパケット格納制御部と
を備えた、バスシステム。
【請求項２】
前記中継装置のパケット格納制御部は、前記サイズ情報によって示されるビット数を単位として前記パケットに前記バッファのアドレスを割り振り、
前記バッファは、前記パケット格納制御部が割り振ったアドレスにしたがって、受信した前記パケットを格納する、請求項１に記載のバスシステム。
【請求項３】
前記複数の送信ノードは、第１のビット数でデータを送信する第１送信ノードと、第１のビット数よりも少ない第２のビット数でデータを送信する第２送信ノードとを含み、前記バスでは、前記第１および第２のビット数以上の第３のビット数で前記データが伝送される場合において、
前記第２送信ノードと接続されたバスインタフェース装置の送信制御部は、前記第２のビット数のデータを含む第３のビット数で前記パケットを前記中継装置に送信し、
前記中継装置のパケット格納制御部は、前記サイズ情報が示す前記第２のビット数を単位として前記バッファのアドレスを割り振り、
前記中継装置のバッファは、前記第２のビット数のパケットを格納する、請求項２に記載のバスシステム。
【請求項４】
前記中継装置のパケット格納制御部は、取得した前記サイズ情報に基づいて、前記バッファから送信されるパケットの送信量をさらに制御する、請求項１に記載のバスシステム。
【請求項５】
前記サイズ情報は可変であり、
所定の送信ノードに関して前記ビット数を示すサイズ情報が変化したときは、前記所定の送信ノードに接続されたバスインタフェース装置のヘッダ情報生成部は、前記ヘッダ情報に含まれるサイズ情報を変更する、請求項１に記載のバスシステム。
【請求項６】
前記所定の送信ノードは、電力の消費が異なる複数の動作モードを有しており、
前記ビット数を示すサイズ情報の変化は、前記動作モードの変化に応答して発生する、請求項５に記載のバスシステム。
【請求項７】
前記所定の送信ノードは、第１のビット数で転送するデータ転送モードと、前記第１のバス幅よりも狭い第２のビット数で転送するデータ転送モードとを切り替えることが可能であり、
前記ビット数を示すサイズ情報の変化は、前記データ転送モードの切り替えに応答して発生する、請求項５に記載のバスシステム。
【請求項８】
前記バスインタフェース装置は、接続された送信ノードの要求品質を特定する要求品質特定部をさらに備えており、
前記バスインタフェース装置のヘッダ情報生成部は、前記要求品質の情報をさらに含むヘッダ情報を生成し、
前記中継装置のパケット解析部は、受信した前記パケットのヘッダ情報に記載された、前記サイズ情報と前記要求品質を示す情報を取得し、
前記中継装置のパケット格納制御部は、前記サイズ情報および前記要求品質に基づいて、前記バッファへの格納量を設定する、請求項１または４に記載のバスシステム。
【請求項９】
前記要求品質特定部は、接続された前記送信ノードから、前記送信ノードの要求品質を特定する情報を取得し、
前記要求品質が遅延時間に関する制約がないことを示しているときは、
前記中継装置のパケット格納制御部は、パケット毎に前記ヘッダ情報に含まれるサイズ情報に基づき、前記バッファへの格納量を設定する、請求項８に記載のバスシステム。
【請求項１０】
前記要求品質特定部は、接続された前記送信ノードから、前記送信ノードの要求品質を特定する情報を取得し、
前記要求品質が遅延時間に関する制約が所定値以上に厳しいことを示しているときは、
前記中継装置のパケット格納制御部は、前記バッファへの格納量とバッファからの送信量を、予め定めた一定のビット数に基づき制御する、請求項８に記載のバスシステム。
【請求項１１】
前記遅延時間に対する制約は、要求品質に対する厳しさを表現したクラス、および要求品質で許容できる遅延時間である締切時刻の少なくとも一方によって表される、請求項９または１０に記載のバスシステム。
【請求項１２】
前記バスインタフェース装置のヘッダ情報生成部は、中継装置が利用する中継装置情報、およびバスインタフェース装置が利用するバスインタフェース情報の順に前記ヘッダ情報を生成する、請求項１に記載のバスシステム。
【請求項１３】
前記中継装置の中継制御部は、前記パケット解析部によって取得された前記サイズ情報と、前記パケットの送信先である他の装置のバッファの利用状況に基づき、受信した前記パケットを格納するための前記他の装置のバッファを選択する、請求項１に記載のバスシステム。
【請求項１４】
前記パケットの送信先である他の装置のバッファの利用状況は、前記バッファにおけるフリット格納のされ方、格納しているフリットのビット数の種類、およびバッファの空容量の少なくとも１つである、請求項１３に記載のバスシステム。
【請求項１５】
集積回路上に構築されたパケット交換方式のバスと、前記バスにデータを送信する送信ノードと、前記バス上に設けられて前記データの伝送を中継する中継装置とを有するバスシステムにおいて用いられるバスインタフェース装置であって、
送信ノードと接続され、前記送信ノードから受信したデータを格納する受信バッファと、
前記送信ノードに関するビット数を示すサイズ情報を記憶する記憶部と、
前記サイズ情報を含むヘッダ情報を生成するヘッダ情報生成部と、
前記ヘッダ情報および前記データからパケットを生成するパケット化部と、
前記中継装置への前記パケットの送信を制御する送信制御部とを備えた、バスインタフェース装置。
【請求項１６】
前記バスおよび前記中継装置は、１動作サイクルで第１ビット数のデータを送信し、前記送信ノードは、前記第１ビット数と異なる第２ビット数のデータを送信する場合において、
前記ヘッダ情報生成部は、前記中継装置において受信したパケットのバッファへの格納量の設定に用いる前記第２ビット数を示すサイズ情報を含むヘッダ情報を生成する、請求項１５に記載のバスインタフェース装置。
【請求項１７】
バスシステムにおいて用いられる中継装置であって、
前記バスシステムは、集積回路上に構築されたパケット交換方式のバスと、前記バスにデータを送信する送信ノードと、前記送信ノードと前記バスとを接続するバスインタフェース装置とを有し、前記バスインタフェース装置は、前記送信ノードから受信したデータ、および前記送信ノードに関するビット数を示すサイズ情報を含むヘッダ情報から生成したパケットを出力し、
前記バスインタフェース装置から受信したパケットを解析して、前記ヘッダ情報から前記サイズ情報を取得するパケット解析部と、
受信した前記パケットを格納するバッファと、
受信した前記パケットの送信先を決定する中継制御部と、
前記バッファからの前記パケットの送信を制御する出力制御部と、
取得した前記サイズ情報に基づいて、前記バッファへの格納量を設定するパケット格納制御部と
を備えた、中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、ネットワーク化された半導体バスを備える半導体集積回路において、バスマスタとバススレーブとの間で送受信するデータを伝送する中継装置内に設けられたバッファの利用効率の改善技術に関する。
【背景技術】
【０００２】
集積回路の開発において、目的の機能や性能を実現するために、既存のバスマスタを再利用し繋ぎ合わせることで効率的に開発を行う取り組みがある。このような開発では、バス幅やバスプロトコル、要求品質の異なる多種多様なバスマスタを容易に接続できることが求められる。【０００３】
多種多様なバスマスタを容易に接続させる方法として、複数のバスマスタ間を、ネットワーク化したバスにより接続するネットワーク・オン・チップ（Ｎｅｔｗｏｒｋ  ｏｎ  Ｃｈｉｐ；以下「ＮｏＣ」と記述する。）技術を利用した開発がある。ＮｏＣでは、バス幅やバスプロトコルの異なるバスマスタが送受信するデータがパケットに変換される。各パケットは、パケット交換方式により、中継装置を介して宛先のノードまで伝送される。【０００４】
パケット交換方式では、多種多様なデータがパケット化して送信される。これにより、共通の伝送路を介した伝送が実現される。しかしながら、伝送中に、中継装置が備えるパケットを格納するバッファの空容量が不足すると、伝送路の性能が低下するという課題がある。【０００５】
ＮｏＣに限らず、パケット交換方式の伝送路では、伝送性能を低下させることなく、限られたバッファの利用効率の改善することが求められる。【０００６】
特許文献１は、中継装置のバッファの利用効率を改善する方法の一例を開示する。ただし特許文献１は、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットを利用した、一般的なネットワーク技術に関している。特許文献１では、中継装置のバッファが輻輳状態にある場合には、優先度の低いクラスのパケットを廃棄し、優先度の高いクラスのパケットに対しバッファの利用を優先させる。これにより、中継装置の限られたバッファの利用効率が改善される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−２９０４５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来技術では、インターネット等のように伝送経路上でのパケットロスの発生を前提とし、送受信ノード間でフロー制御が行われるネットワークを対象としている。このため、バッファの利用効率を改善するためにパケットを廃棄することが許容されていた。【０００９】
これに対し、半導体回路上のネットワーク化されたバスは、伝送経路上の中継装置間でフロー制御が行われ、伝送経路上でのパケットロスは基本的に発生しないよう設計されている。つまり、パケットを廃棄することは原則として考えられていない。そのため、中継装置に、特許文献１のような従来技術を適用するだけではバッファの利用効率を改善できない。仮に、バスマスタから送信されたデータを伝送路上で廃棄する場合には、バスマスタ側にデータの再送を行うための機能拡張が必要となる。これは、既存のバスマスタをそのまま再利用できないことを意味する。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明の一態様は、複数のバスインタフェース装置および中継装置が、集積回路上に構築されたパケット交換方式のバスによって接続されたバスシステムであって、前記複数のバスインタフェース装置は、それぞれ、前記バスシステムの１動作サイクルで送信するデータのビット数が異なる複数の送信ノードと接続され、前記複数のバスインタフェース装置の各々は、接続された送信ノードから受信したデータを格納する受信バッファと、接続された前記送信ノードに関する前記ビット数を示すサイズ情報を記憶する記憶部と、前記サイズ情報を含むヘッダ情報を生成するヘッダ情報生成部と、前記ヘッダ情報および前記データからパケットを生成するパケット化部と、前記中継装置への前記パケットの送信を制御する送信制御部とを備え、前記中継装置は、前記バスインタフェース装置から受信した前記パケットを解析して、前記ヘッダ情報から前記サイズ情報を取得するパケット解析部と、受信した前記パケットを格納するバッファと、受信した前記パケットの送信先を決定する中継制御部と、前記バッファからの前記パケットの送信を制御する出力制御部と、取得した前記サイズ情報に基づいて、前記バッファへの格納量を設定するパケット格納制御部とを備えたバスシステムを含む。【００１１】
上述の一般的かつ特定の態様は、システム、方法およびコンピュータプログラムを用いて実装され、またはシステム、方法およびコンピュータプログラムの組み合わせを用いて実現され得る。
【発明の効果】
【００１２】
本開示による一実施形態にかかる中継装置は、パケットに付与されたバスマスタ側のバス幅を認識し、バス幅に基づくパケットのバッファへの格納と、バッファからの送信のために、適切なアドレッシングを自動的に行えるため、バッファの利用効率の改善が行える。このため、中継装置毎の個別の設定が不要となり半導体集積回路の設計の簡略が行える。【００１３】
また、バッファの利用効率の改善により、伝送路のスループットが向上することで、半導体集積回路の性能保証に必要となるバスの動作周波数やバス幅の削減が可能となり、省電力化や面積削減を期待できる。
【図面の簡単な説明】
【００１４】
【図１】従来のＮｏＣに設けられた中継装置のバッファ利用方法を示す図である。
【図２】例示的な本実施形態にかかるバスシステム４００が構築された半導体集積回路の構成の一例を示す図である。
【図３】例示的な本実施形態によるバスシステムの動作の概要を示す図である。
【図４】本実施形態によるバスシステム４００の具体的な接続例を示す図である。
【図５】バスＩ／Ｆ４０２の構成を示す図である。
【図６】中継装置４０３の構成を示す図である。
【図７】バスＩ／Ｆ４０２の動作フローを示す図である。
【図８】バスＩ／Ｆ４０２の入出力信号線の構成を示す図である。
【図９Ａ】記憶部４０７に記憶される内容の一例を示す図である。
【図９Ｂ】記憶部４０７に記憶される内容の一例を示す図である。
【図１０】パケット化部で生成されるパケット６１０の構成の一例を示す図である。
【図１１】ヘッダ情報生成部４０８の動作フローを示す図である。
【図１２】パケットヘッダに記載される情報の一例を示す図である。
【図１３】送信制御部４１０の動作フローを示す図である。
【図１４】中継装置４０３の動作フローを示す図である。
【図１５】パケット格納制御部４１３の動作フローを示す図である。
【図１６】受信フリットをバッファ４１２に格納する場合、及びバッファ４１２からフリットを送信する場合のアドレッシングの設定の一例を示す図である。
【図１７】中継制御部４１４の動作フローを示す図である。
【図１８】スイッチ割当部４１５の動作フローを示す図である。
【図１９】バスマスタ４０１からのデータ送信において、動的にバス幅が変化する場合のバスＩ／Ｆ４０２の動作フローを示す図である。
【図２０】バス幅の値に加えて、クラスや締切時刻に関する情報をヘッダ情報に記載するバスＩ／Ｆ４２２の構成を示す図である。
【図２１】要求品質のクラスや締切時刻を記載するバスＩ／Ｆ４２２の動作フローを示す図である。
【図２２】バス幅に加えて、パケットのクラスや締切時刻に関する情報に基づき、受信したフリットをバッファへ格納し、バッファから送信するためのアドレッシングを設定する中継装置４０３のパケット格納制御部４１３（図６）の動作フローを示す図である。
【図２３】バス幅の異なる複数のバスから構成されるシステムバスの例を示す図である。
【発明を実施するための形態】
【００１５】
図１は、従来のＮｏＣに設けられた中継装置のバッファ利用方法を示す。図１では、バス幅が異なるバスマスタ２０１およびバスマスタ２０２が、それぞれバスインタフェース装置（以下「バスＩ／Ｆ」と記述する。）２０３および２０４を介して、中継装置２０５に接続されている。中継装置２０５は中継装置２０６と接続されている。後述する図２との関係では、中継装置２０５および中継装置２０６はシステムバスに設けられており、そのシステムバスのバス幅は６４ビットに統一されているとする。
【００１６】
本開示においては、出力に利用するバスの幅（バス幅）が異なる複数のバスマスタがＮｏＣ上に存在しているとする。図１では、バスマスタ２０１が利用するバス幅は６４ビットであり、バスマスタ２０２が利用するバス幅は３２ビットである。中継装置２０５および２０６は、６４ビット単位でバッファを管理しているとする。この「バス幅」とは、バスシステムの１動作サイクルで送信するデータのビット数を意味する。本開示においては、バスマスタのバス幅を示す情報を、「サイズ情報」と呼ぶこともある。
【００１７】
なお後述するように、ＮｏＣ上を伝送される際、データはパケット化される。そのため、バスマスタが６４ビットのデータを出力してもそのデータが一度にそのまま中継装置まで送られることはない。データは複数に分割され、それぞれにヘッダ等が付与されて、６４ビットのサイズを有するパケットの形態で伝送される。
【００１８】
バスＩ／Ｆ２０３、２０４は、バスマスタから送信されたデータをパケットに変換する回路である。
【００１９】
バスＩ／Ｆ２０３は、バス幅が６４ビットのバスマスタ２０１から送信されたデータを、６４ビットのデータとしてパケット化し、中継装置２０５へ送信する。
【００２０】
これに対し、バスＩ／Ｆ２０４は、バス幅が３２ビットのバスマスタ２０２から送信されたデータを、６４ビットのバス幅に合わせる処理を行ってパケット化し、中継装置２０５へ送信する。具体的にはバスＩ／Ｆ２０４は、バス幅が６４ビットの中継装置２０５へ送信する際に、バス幅の違いに対応するため、３２ビットのバス幅で送信されたデータに対し、３２ビット分のダミーデータを付与する。これにより、データのバス幅を６４ビットに合わせることが可能になる。この６４ビットのデータはバスＩ／Ｆ２０４においてパケット化され、中継装置２０５に送信される。これにより、中継装置２０５および２０６側では、バス幅の異なるバスマスタ２０１とバスマスタ２０２が送信したパケットを、全て６４ビットのデータが格納されたパケットとして扱うことが可能となる。
【００２１】
いま、中継装置のバッファ（たとえば中継装置２０６のバッファ２０７）に注目する。バスＩ／Ｆ２０４から送信された、バスマスタ２０２からのデータ、およびダミーデータを含むパケットを、６４ビットのパケットとしてそのままバッファ２０７に格納すると、バッファの一部がダミーデータによって占有される。ダミーデータは情報として利用されないため、ダミーデータがバッファ２０７に格納されるほど、バッファ２０７の利用効率が低下する。
【００２２】
例えば、図１の例では、パケット１およびパケット３は、バスマスタ２０２から送信されたデータを含むパケットである。そのため、パケットの半分をダミーデータが占めている。一方のパケット２は、バスマスタ２０１から送信されたデータを含むパケットである。このような場合、バッファ２０７の約１／３がダミーデータに占有されていることになる。これでは、バッファ２０７の利用効率が低下する。
【００２３】
なお、バス幅が３２ビットで送られたデータであっても、データ全体で見たときのサイズが大きい場合には、バスＩ／Ｆ２０４において、３２ビットのデータを２つずつ統合して６４ビットのデータを構成することが可能である。このように統合するとダミーデータを削減することができる。しかしながら、全てのデータをそのように取り扱うことはできない。その理由は、コマンドデータのようにサイズの小さいデータが送信され得るからである。サイズの小さいデータが送信された場合には、依然としてダミーデータを付与することが必要である。よって、ダミーデータによるバッファの占有をなくすことができない。
【００２４】
また、バスＩ／Ｆ２０４において、３２ビットのコマンドデータを含むパケットが連続して送信される場合には、コマンドパケットを２つずつ統合し、６４ビットのパケットを構成して送信することでダミーデータを削減する方法が考えられる。しかし、コマンドを統合して送信するためには、バスマスタ２０２から送信されるコマンドが連続して送信されるのか、単発で送信されるのかによって、複数のコマンドを統合して送信すべきか、ダミーデータを付与して送信すべきかの判断が必要となる。このため、バスマスタ２０２からバスＩ／Ｆ２０４に対して、これから送信されるコマンドの数や送信間隔を通知するための機能拡張が必要となる。
【００２５】
さらに、バスＩ／Ｆ２０４側でパケットの統合を行うためには、データを一旦蓄えるためのバッファと専用の回路が必要となる。このような個別の対応をバスマスタやバスＩ／Ｆに対して行うと、多種多様なバスマスタを接続した開発が容易に行えなくなる。
【００２６】
データを統合するいずれの変形例に関しても、６４ビットのバス幅が利用されるＮｏＣ上の中継装置では、バスＩ／Ｆは、６４ビットのデータとしてパケットを伝送する必要がある、という制約が課せられている。
【００２７】
本発明の一態様の概要は以下のとおりである。
【００２８】
本発明の一態様であるバスシステムは、複数のバスインタフェース装置および中継装置が、集積回路上に構築されたパケット交換方式のバスによって接続されたバスシステムであって、前記複数のバスインタフェース装置は、それぞれ、前記バスシステムの１動作サイクルで送信するデータのビット数が異なる複数の送信ノードと接続され、前記複数のバスインタフェース装置の各々は、接続された送信ノードから受信したデータを格納する受信バッファと、接続された前記送信ノードに関する前記ビット数を示すサイズ情報を記憶する記憶部と、前記サイズ情報を含むヘッダ情報を生成するヘッダ情報生成部と、前記ヘッダ情報および前記データからパケットを生成するパケット化部と、前記中継装置への前記パケットの送信を制御する送信制御部とを備え、前記中継装置は、前記バスインタフェース装置から受信した前記パケットを解析して、前記ヘッダ情報から前記サイズ情報を取得するパケット解析部と、受信した前記パケットを格納するバッファと、受信した前記パケットの送信先を決定する中継制御部と、前記バッファからの前記パケットの送信を制御する出力制御部と、取得した前記サイズ情報に基づいて、前記バッファへの格納量を設定するパケット格納制御部とを備えている。
【００２９】
ある実施形態において、前記中継装置のパケット格納制御部は、前記サイズ情報によって示されるビット数を単位として前記パケットに前記バッファのアドレスを割り振り、前記バッファは、前記パケット格納制御部が割り振ったアドレスにしたがって、受信した前記パケットを格納する。
【００３０】
ある実施形態において、前記複数の送信ノードは、第１のビット数でデータを送信する第１送信ノードと、第１のビット数よりも少ない第２のビット数でデータを送信する第２送信ノードとを含み、前記バスでは、前記第１および第２のビット数以上の第３のビット数で前記データが伝送される場合に、前記第２送信ノードと接続されたバスインタフェース装置の送信制御部は、前記第２のビット数のデータを含む第３のビット数で前記パケットを前記中継装置に送信し、前記中継装置のパケット格納制御部は、前記サイズ情報が示す前記第２のビット数を単位として前記バッファのアドレスを割り振り、前記中継装置のバッファは、前記第２のビット数のパケットを格納する。
【００３１】
ある実施形態において、前記中継装置のパケット格納制御部は、取得した前記サイズ情報に基づいて、前記バッファから送信されるパケットの送信量をさらに制御する。
【００３２】
ある実施形態において、前記サイズ情報は可変であり、所定の送信ノードに関して前記ビット数を示すサイズ情報が変化したときは、前記所定の送信ノードに接続されたバスインタフェース装置のヘッダ情報生成部は、前記ヘッダ情報に含まれるサイズ情報を変更する。
【００３３】
ある実施形態において、前記所定の送信ノードは、電力の消費が異なる複数の動作モードを有しており、前記ビット数を示すサイズ情報の変化は、前記動作モードの変化に応答して発生する。
【００３４】
ある実施形態において、前記所定の送信ノードは、第１のビット数で転送するデータ転送モードと、前記第１のバス幅よりも狭い第２のビット数で転送するデータ転送モードとを切り替えることが可能であり、前記ビット数を示すサイズ情報の変化は、前記データ転送モードの切り替えに応答して発生する。
【００３５】
ある実施形態において、前記バスインタフェース装置は、接続された送信ノードの要求品質を特定する要求品質特定部をさらに備えており、前記バスインタフェース装置のヘッダ情報生成部は、前記要求品質の情報をさらに含むヘッダ情報を生成し、前記中継装置のパケット解析部は、受信した前記パケットのヘッダ情報に記載された、前記サイズ情報と前記要求品質を示す情報を取得し、前記中継装置のパケット格納制御部は、前記サイズ情報および前記要求品質に基づいて、前記バッファへの格納量を設定する。
【００３６】
ある実施形態において、前記要求品質特定部は、接続された前記送信ノードから、前記送信ノードの要求品質を特定する情報を取得し、前記要求品質が遅延時間に関する制約がないことを示しているときは、前記中継装置のパケット格納制御部は、パケット毎に前記ヘッダ情報に含まれるサイズ情報に基づき、前記バッファへの格納量を設定する。
【００３７】
ある実施形態において、前記要求品質特定部は、接続された前記送信ノードから、前記送信ノードの要求品質を特定する情報を取得し、前記要求品質が遅延時間に関する制約が所定値以上に厳しいことを示しているときは、前記中継装置のパケット格納制御部は、前記バッファへの格納量とバッファからの送信量を、予め定めた一定のビット数に基づき制御する。
【００３８】
ある実施形態において、前記遅延時間に対する制約は、要求品質に対する厳しさを表現したクラス、および要求品質で許容できる遅延時間である締切時刻の少なくとも一方によって表される。
【００３９】
ある実施形態において、前記バスインタフェース装置のヘッダ情報生成部は、中継装置が利用する中継装置情報、およびバスインタフェース装置が利用するバスインタフェース情報の順に前記ヘッダ情報を生成する。
【００４０】
ある実施形態において、前記中継装置の中継制御部は、前記パケット解析部によって取得された前記サイズ情報と、前記パケットの送信先である他の装置のバッファの利用状況に基づき、受信した前記パケットを格納するための前記他の装置のバッファを選択する。
【００４１】
ある実施形態において、前記パケットの送信先である他の装置のバッファの利用状況は、前記バッファにおけるフリット格納のされ方、格納しているフリットのビット数の種類、およびバッファの空容量の少なくとも１つである。
【００４２】
本発明の他の一態様であるバスインタフェース装置は、集積回路上に構築されたパケット交換方式のバスと、前記バスにデータを送信する送信ノードと、前記バス上に設けられて前記データの伝送を中継する中継装置とを有するバスシステムにおいて用いられるバスインタフェース装置であって、送信ノードと接続され、前記送信ノードから受信したデータを格納する受信バッファと、前記送信ノードに関するビット数を示すサイズ情報を記憶する記憶部と、前記サイズ情報を含むヘッダ情報を生成するヘッダ情報生成部と、前記ヘッダ情報および前記データからパケットを生成するパケット化部と、前記中継装置への前記パケットの送信を制御する送信制御部とを備えている。
【００４３】
ある実施形態において、前記バスおよび前記中継装置は、１動作サイクルで第１ビット数のデータを送信し、前記送信ノードは、前記第１ビット数と異なる第２ビット数のデータを送信する場合に、前記ヘッダ情報生成部は、前記中継装置において受信したパケットのバッファへの格納量の設定に用いる前記第２ビット数を示すサイズ情報を含むヘッダ情報を生成する。
【００４４】
本発明のさらに他の一態様である中継装置は、バスシステムにおいて用いられる中継装置であって、前記バスシステムは、集積回路上に構築されたパケット交換方式のバスと、前記バスにデータを送信する送信ノードと、前記送信ノードと前記バスとを接続するバスインタフェース装置とを有し、前記バスインタフェース装置は、前記送信ノードから受信したデータ、および前記送信ノードに関するビット数を示すサイズ情報を含むヘッダ情報から生成したパケットを出力し、前記中継装置は、前記バスインタフェース装置から受信したパケットを解析して、前記ヘッダ情報から前記サイズ情報を取得するパケット解析部と、受信した前記パケットを格納するバッファと、受信した前記パケットの送信先を決定する中継制御部と、前記バッファからの前記パケットの送信を制御する出力制御部と、取得した前記サイズ情報に基づいて、前記バッファへの格納量を設定するパケット格納制御部とを備えている。
【００４５】
以下、添付の図面を参照しながら、本開示による通信システム、中継装置、およびインタフェース装置の実施形態を説明する。
【００４６】
本開示の各実施形態の説明に先立って、まず、本開示において対象とする半導体集積回路を説明する。
【００４７】
図２は、本実施形態にかかるバスシステム４００が構築された半導体集積回路の構成の一例である。
【００４８】
本実施形態では、バスマスタからの入出力のアクセスのビット幅や、通信のプロトコルの異なる複数のバスマスタを接続して構成されるバスシステムが構築された半導体集積回路を対象としている。各バスマスタは、バスＩ／Ｆおよび中継装置を有するネットワーク化されたシステムバスを介して共有メモリと接続される。バスＩ／Ｆは、バスマスタが送信したデータをパケットに変換する処理を行い、またパケットからデータを抽出する処理を行う回路である。中継装置は、パケット化されたデータを宛先のノードへと転送する回路である。
【００４９】
なお、図２では中継装置をリング状に接続した構成を示しているが、本開示が対象とする半導体集積回路はリング状に接続された構成に限定されない。中継装置を格子状に配置したメッシュ型や、中継装置を多段に接続した階層型などその他の構成も本開示の対象である。また、図２では、複数のバスマスタが１つの共有メモリに接続する例を示したが、共有メモリの数は１つに限定されるものではなく、複数の共有メモリと接続しても良い。また、メモリ以外にも外部回路とのＩ／Ｏ（Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）と接続しても良い。
【００５０】
図３は、本実施形態によるバスシステムの動作の概要を示す。
【００５１】
本実施形態では、バスマスタが送信したデータを、バスＩ／Ｆがパケットに変換する際に、パケットヘッダにバスマスタ側のバス幅の値を記載する。中継装置２０５および２０６は、パケットヘッダに記載されたバス幅を示す値を読み出すことにより、パケットに含まれる実際のデータとダミーデータの値を判定できる。
【００５２】
なお、ここでいう「ダミーデータ」とは、たとえば６４ビットに統一されたバス幅を有するバス（たとえば図２に示すシステムバス）で３２ビットのデータを送信する際に、実際に伝送される３２ビットのデータに加えて必然的に送信されてしまうデータである。バスを６４ビット幅で駆動するため、実際に伝送される３２ビットだけでなく、残りの３２ビットも結果として何らかのデータが送信されていることになる。このダミーデータは無効な値であり、たとえば予め定められた値（「０」または「１」のみ）を並べたデータを用いても良い。
【００５３】
また、中継装置２０５および中継装置２０６は、受信したパケットヘッダに記載されたバス幅の値に基づき、パケットに含まれる実際のデータのみをバッファ２０７に格納する。
【００５４】
例えば、図３の例では、バス幅３２ビットのバスマスタ２０２からのパケット１とパケット３に対しては、ダミーデータを取り除いた実際のデータ部分だけをバッファに格納する。また、バス幅が６４ビットのバスマスタ２０１のパケットについては、パケット１からダミーデータを取り除いたことで発生した３２ビットの空きを詰めてパケットを格納する。これにより、図１の例との比較では、本実施形態ではバッファ２０７内の利用量を約２／３に削減し、バッファの利用効率を改善することができる。
【００５５】
また、図３の例では、パケットが届いた順に、バッファの０番地から詰めて格納したためパケット２が０番地と１番地に３２ビットずつ別れて格納されている。この場合、パケット２の格納、及び取り出しには０番地と１番地に２回アクセスする必要があり、遅延時間が増加する。このため、全てのパケットに対して１回でアクセスができるように、バス幅が６４ビットのパケット２を番地１にまとめて格納し、番地０にはバス幅が３２ビットのパケット１とパケット３を格納するようにしても良い。
【００５６】
このように、本開示では、パケットヘッダに記載された、送信元のバスマスタからバスＩ／Ｆへのアクセス時のバス幅に基づき、中継装置側が、自動的にパケットのバッファ２０７への格納方法を自動的に変更することで、バッファの利用効率の改善を行う。
【００５７】
以下、図を参照しながら実施の形態を説明する。
【００５８】
図４は、本実施形態によるバスシステム４００の具体的な接続例を示す。図４に示すように、バスマスタ４０１、バスＩ／Ｆ４０２、中継装置（群）４０３、バスＩ／Ｆ４０４、およびバススレーブ４０５がこの順で接続されている。
【００５９】
本開示のバスＩ／Ｆ４０２と中継装置４０３は、バス幅の異なる複数のバスマスタ４０１と、複数のバススレーブ４０５を接続するネットワーク・オン・チップでの利用を前提としている。
【００６０】
なお、バスシステム４００に組み込まれるバスマスタ４０１として、既存の処理回路、たとえばメディア処理用のＤＳＰ、高速なファイル転送を行うＣＰＵを利用することができる。また、バススレーブ４０５として共有メモリや共通のＩＯ(input output)等が利用できる。このとき、既存の処理回路に適合するようバスＩ／Ｆ４０２および４０４を動作させればよい。
【００６１】
なお、バススマスタ４０１からバススレーブ４０５に至るまでにデータが通過する経路を往路とし、スレーブからバスマスタに至るまでにデータが通過する経路を復路とする。往路では、バスマスタ４０１がデータを送信する送信ノードになる。バスＩ／Ｆ４０２は、バスマスタ４０１と中継装置４０３を接続する回路であり、バスマスタ４０１から送信されたデータを、中継装置４０３が受信できるパケットに変換する。また、バスＩ／Ｆ４０４は、中継装置４０３とバススレーブ４０５とを接続する回路である。バスＩ／Ｆ４０４は、中継装置４０３から送信されたパケットを受け取り、バススレーブ４０５が受信できるデータに変換し、バススレーブ４０５に送信する。
【００６２】
復路では、バススレーブ４０５がデータを送信する送信ノードになる。バスＩ／Ｆ４０４は、バススレーブ４０５から送信されたデータを受け取り、そのデータを中継装置４０３が受信できるパケットに変換し、中継装置４０３に送信する。また、バスＩ／Ｆ４０２は、中継装置４０３からパケットを受け取り、バスマスタ４０１が受信できるデータに変換して、バスマスタ４０１に送信する。
【００６３】
なお、以下の説明では、バスマスタ４０１が送信ノードとなる往路を例に説明する。
【００６４】
図５は、バスＩ／Ｆ４０２の構成を示す。
【００６５】
バスＩ／Ｆ４０２は、受信バッファ４０６、記憶部４０７、ヘッダ情報生成部４０８、パケット化部４０９、送信制御部４１０を有している。
【００６６】
受信バッファ４０６は、バスマスタ４０１が送信する宛先アドレス、制御信号、データを一時的に記憶するメモリである。
【００６７】
記憶部４０７は、バスマスタ４０１がデータの送信時に利用するバス幅を記憶しているメモリである。
【００６８】
ヘッダ情報生成部４０８は、バスマスタ４０１から送信された宛先のアドレス、制御信号の内容、及び記憶部４０７に記憶されたバス幅情報に基づき、パケットに付与するヘッダ情報を生成する回路である。
【００６９】
パケット化部４０９は、受信バッファ４０６に格納されたデータに対し、ヘッダ情報生成部４０８で生成したパケットヘッダを付与することで、データのパケット化を行う回路である。
【００７０】
送信制御部４１０は、パケット化部４０８で生成されたパケットを、フリット（１サイクルで送れるデータ単位）に分割し、１フリットずつ中継装置４０３へ送信を行う回路である。
【００７１】
図６は、中継装置４０３の構成を示す。
【００７２】
中継装置４０３は、バスＩ／Ｆ４０２から送信されたパケットを、宛先のバススレーブ４０５まで送信する装置である。中継装置４０３は、パケット解析部４１１、バッファ４１２、パケット格納制御部４１３、出力制御部４１７を有している。
【００７３】
パケット解析部４１１は、受信したパケットヘッダ情報から、パケットの宛先アドレスとバス幅の値を取得する回路である。
【００７４】
バッファ４１２は、パケットを一時的に記憶するメモリである。
【００７５】
パケット格納制御部４１３は、パケット解析部４１１で取得したバス幅の情報に基づいて、バッファ４１２へのフリットの格納処理、及びバッファ４１２からのフリット送信時におけるアドレッシングの設定を行う回路である。格納処理に関して「アドレッシング」とは、バッファ等の記憶領域にデータを格納するため、記憶領域を割り当てる処理をいう。一方、送信処理に関して「アドレッシング」とは、記憶領域の中から送信先（宛先）へ送るデータを取り出す領域を決定する処理をいう。
【００７６】
中継制御部４１４は、パケットの宛先アドレスに基づき、中継装置４０３が送信するパケットを送信先の中継装置で格納するバッファを決定する回路である。
【００７７】
出力制御部４１７は、バッファからのパケットの送信を制御する。出力制御部４１７は、スイッチ割当部４１５およびクロスバスイッチ４１６を含む。
【００７８】
クロスバスイッチ４１６は、複数のバッファと中継装置４０３の出力先との接続を切り替えるスイッチ回路である。
【００７９】
スイッチ割当部４１５は、クロスバスイッチ４１６の接続を切り替える回路である。
【００８０】
最後に、バススレーブと接続するバスＩ／Ｆ４０４は、中継装置４０３とバススレーブ４０５を接続する回路であり、中継装置４０３から送信されたパケットをバススレーブ４０５が受信できるデータに変換する。
【００８１】
図７は、バスＩ／Ｆ４０２の動作フローを示す。
【００８２】
バスＩ／Ｆ４０２は、バスマスタ４０１から受信したデータを、バスマスタ４０１とバスＩ／Ｆ４０２との間のバス幅の値を含むパケットに変換し、パケットを中継装置４０３に送信するために、以下のステップを実行する。
【００８３】
ステップ５０１において、バスＩ／Ｆ４０２は、バスマスタ４０１からデータ送信の有無を判定する。バスマスタ４０１からデータ送信があればステップ５０２へ移る。バスマスタ４０１からのデータ送信がなければステップ５０１を繰り返す。
【００８４】
ステップ５０２において、バスマスタ４０１からデータ送信がある場合、バスＩ／Ｆ４０２は、バスマスタから送信されたデータを受信バッファ４０６内に格納する。
【００８５】
ステップ５０３において、受信バッファ４０６にデータが格納されると、ヘッダ情報生成部４０８は、バスマスタが送信したデータのバス幅の値を含むヘッダ情報を生成する。なお、ヘッダ情報生成部４０８の詳細な動作については、図１１を参照しながら後に説明する。
【００８６】
ステップ５０４において、パケット化部４０９は、ヘッダ情報生成部４０８で生成されたヘッダ情報をバスマスタ４０１が送信したデータに付与し、パケットの作成を行う。
【００８７】
ステップ５０５において、送信制御部４１０は、所定の送信レートに基づく送信間隔で、パケット化部４０９で生成されたパケットを送信する。
【００８８】
以上、バスＩＦ４０２は、ステップ５０１からステップ５０５の動作を行うことで、バスマスタ４０１から送信されたデータを、バスマスタ４０１とバスＩ／Ｆ４０２の間のバス幅の値を含むパケットに変換し、中継装置４０３へ送信する。
【００８９】
図８は、バスＩ／Ｆ４０２の入出力信号線の構成を示す。
【００９０】
バスマスタ４０１とバスＩ／Ｆ４０２の間は、データの宛先のアドレスを通知するための信号線６０１、バスマスタ側のバスプロトコルを制御するための信号線６０２、実際のデータを伝送するための信号線６０３で接続されている。
【００９１】
また、バスＩ／Ｆ４０２と中継装置４０３の間は、ＮｏＣ側の機器の制御を行うための信号線６０４、パケット化されたデータを送信する信号線６０５で接続されている。
【００９２】
上述のように、バスマスタ４０１に接続されるバスＩ／Ｆ４０２の信号線と、中継装置４０３に接続されるバスＩ／Ｆ４０２の信号線とは異なっている。中継装置４０３に接続される信号線のバス幅は予め定められている。よってバスＩ／Ｆ４０２は、予め定められたデータ幅（サイズ）のデータを送信する。なお、上述のように、データ幅が定められているとしても、その信号線を流れるデータの全てが必要とされるわけではない。全体のうちの、一部のビット（たとえば６４ビットのバス幅に対し３２ビット）の実効データを送信してもよい。上述したように、送信されるデータには、単なるコマンドもあれば、メモリに記憶させるべきデータもある。送信されるデータの内容によって信号線を流れるデータのサイズも互いに異なり得る。
【００９３】
図９Ａおよび９Ｂは、記憶部４０７に記憶される内容の一例を示す。記憶部４０７は、バスマスタ４０１とバスＩ／Ｆ４０２とのデータ線のバス幅の値を記録している。
【００９４】
図９Ａの例では、バスマスタ４０１とバスＩ／Ｆ４０２を接続するバスとして、記憶部４０７には、バス幅が６４ビットのバスが設定されている。バス幅の値は、バスＩ／Ｆ４０２毎に予め設定されている。また、図９Ｂの例では、記憶部４０７にはバス幅が３２ビットのバスが設定されている。
【００９５】
なお、記憶部４０７に記憶されるバス幅の値は、予め設定する以外にも、例えば、バスマスタ４０１がデータを送信する際に、バスマスタ４０１からバスＩ／Ｆ４０２へ制御信号の一部としてバス幅の値を通知する方法や、バスＩ／Ｆ４０２側がバスマスタ４０１と接続するデータ線の中から実際に信号が通知された配線を識別し、バス幅の値を取得しても良い。
【００９６】
図１０は、パケット化部で生成されるパケット６１０の構成の一例を示す。図１０に示すパケット６１０の構成は、バス幅が６４ビットのバスで伝送される場合の例を示している。パケット６１０はヘッダ領域６１１とデータ領域６１２とに分けられる。
【００９７】
ヘッダ領域６１１は、パケットの先頭に設けられる。ヘッダ領域６１１には、後述する図１２に示されるヘッダ情報が格納される。このヘッダ情報は、ヘッダ情報生成部４０８によって生成される。
【００９８】
一方、データ領域６１２には、バスマスタ４０１から送信されたデータが格納される。
【００９９】
なお、半導体集積回路のバスシステム４００では、パケットの送信は、パケットをさらに分割したフリット単位で行われる。フリットとは、バスシステム４００を動作させるクロックの１サイクルでバスが送信可能なデータである。フリットは、パケットに格納されたヘッダ情報を含む、１または複数のヘッダフリット６１３と、パケットに格納されたデータを含む、１または複数のデータフリット６１４とに分類される。パケットをフリットに分割する処理は、送信制御部４１０によって行われる。
【０１００】
なお、図１０では、ヘッダ領域６１１とデータ領域６１２の双方を含むパケットを示したが、パケット６１０は、ヘッダ領域６１１だけから構成されていてもよい。例えば、バスマスタからメモリに対し、リード要求を行う場合には、データを含まない制御信号のみがヘッダ領域に格納されて送信される。
【０１０１】
以下、ヘッダ情報生成部４０８が、パケットのヘッダ領域に格納されるヘッダ情報を生成する処理を説明する。
【０１０２】
図１１は、ヘッダ情報生成部４０８の動作フローを示す。
【０１０３】
ヘッダ情報生成部４０８は、バスマスタ４０１から通知された信号と、記憶部４０７に記憶されたバス幅に関する情報とに基づいて、ヘッダ情報を生成する。ここでいう「バスマスタ４０１から通知された信号」とは、図８に示される信号線６０１を介して伝送される信号であり、データの宛先のアドレスを示す信号である。ヘッダ情報生成部４０８の具体的な処理が、以下のステップ８０１からステップ８０３である。そして、ヘッダ情報生成部４０８によって生成されたヘッダ情報のデータ構造が、後述する図１２に示されている。まず図１１を参照しながら、ヘッダ情報を生成する処理を説明する。
【０１０４】
図１１は、ヘッダ情報生成部４０８の動作の手順を示すフローチャートである。
【０１０５】
ステップ８０１において、ヘッダ情報生成部４０８は、バスマスタ４０１から信号線６０１を介して送信された宛先アドレスの情報を取得する。また必要に応じて、信号線６０２を介して伝送される、バスマスタ側で利用されているバスプロトコルの制御情報を取得する。
【０１０６】
ステップ８０２において、ヘッダ情報制御部４０８は、記憶部４０７からバス幅の値を取得する。
【０１０７】
ステップ８０３において、ヘッダ情報制御部４０８は、取得した宛先アドレス、バスプロトコルの制御情報、バス幅の値を含むパケットヘッダを生成する。
【０１０８】
以上、ステップ８０１からステップ８０３を実行することにより、ヘッダ情報生成部４０８は、バス幅に関する情報を含むヘッダ情報を生成する。
【０１０９】
なお、ヘッダ情報に含まれるバス幅の値は、実施のバス幅の値を直接記載する以外にも、予め利用されるバス幅の種類をバスＩ／Ｆ４０２と中継装置４０３の間で定義し、その種類を特定する情報をヘッダ情報に記載するなど、中継装置４０３側で実際に利用されるバス幅の値が特定できる情報であれば良い。
【０１１０】
例えば、事前にバスマスタ４０１の識別子とバス幅の値を対応づけたテーブルを、バスＩ／Ｆ４０２と中継装置４０３がそれぞれ保持し、バス幅の値の代わりにマスタの識別子をヘッダ情報に記載しても良い。
【０１１１】
または、ヘッダ情報生成部４０８は、通信の度にバスマスタ４０１からバス幅を示す情報を取得しなくてもよい。たとえばバスマスタ４０１が利用するバスのバス幅が不変である場合には、記憶部４０７にそのバス幅を示す情報を保持させておき、動作開始時にヘッダ情報生成部４０８が一度その値を参照すればよい。
【０１１２】
図１２は、パケットヘッダに記載される情報の一例を示す。
【０１１３】
パケットヘッダに記載される情報として、大きく３種類の情報が記載される。
【０１１４】
１つ目は、中継装置４０３の制御に利用する中継装置情報９０１である。宛先アドレス情報、及びバス幅の値は、中継装置４０３で必要な情報であり中継装置情報に記載される。
【０１１５】
２つ目は、バススレーブ４０５側のバスＩＦ４０４で利用されるバスＩＦ情報９０２である。バスＩＦ情報には、バススレーブ４０５からの返信用のパケットを作成するために必要となる送信元のアドレスや、送信パケットと返信パケットの対応関係を特定するためのパケットＩＤなどが記録される。
【０１１６】
３つ目は、ＡＸＩ（Ａｄｖａｎｃｅｄ  ｅＸｔｅｎｓｉｂｌｅ  Ｉｎｔｅｒｆａｃｅ）やＯＰＣ（Ｏｐｅｎ  Ｃｏｒｅ  Ｐｒｏｔｏｃｏｌ）などの独自情報を記述するバスプロトコル情報９０３である。
【０１１７】
ヘッダ情報は、パケットが伝送経路上で通過する装置の順に合わせて、まず中継装置で利用される中継装置情報、次にバスＩ／Ｆ４０４で利用されるバスＩ／Ｆ情報、最後にバスマスタ４０１とバススレーブ４０５で利用されるバスプロトコル情報の順に記載する。
【０１１８】
この順序でヘッダ情報を構成することで、中継装置４０３やバスI／Ｆ４０４が、ヘッダ情報からの必要な情報を読み込むまでの時間が短縮され、処理を高速化できる。
【０１１９】
図１３は、送信制御部４１０の動作フローを示す。
【０１２０】
送信制御部４１０は、パケット化部４０９で生成されたパケットを中継装置４０３に送信するために、以下のステップを行う。
【０１２１】
まずステップ１１０１において、送信制御部４１０は、予め設定された送信レートに基づき、パケットの送信間隔を調整する。
【０１２２】
ステップ１１０２において、送信制御部４１０は、パケット化部４０９で生成されたパケットをフリットに分割する。
【０１２３】
ステップ１１０３において、送信制御部４１０は、分割したフリットをヘッダフリットから順番に送信する。
【０１２４】
以上、ステップ１１０１からステップ１１０３を繰り返し行うことで、バスＩ／Ｆ４０２は、所定の送信レートでパケットを中継装置４０３へと送信する。
【０１２５】
次に、バスＩ／Ｆ４０２から出力されたパケットを、中継装置４０３がどのように処理するかを説明する。
【０１２６】
図１４は、中継装置４０３の動作フローを示す。
【０１２７】
中継装置４０３は、バスＩ／Ｆ４０２から出力されたパケットをフリット単位で受信する。このとき中継装置４０３は、受信パケットに記載されたバス幅の値に基づいて、バッファの利用効率を高くするための処理を行う。具体的には以下のステップを実行する。
【０１２８】
ステップ１２０１において、パケット解析部４１１は、受信するフリットが存在するかどうかを判定する。フリットを受信しない場合はフリットを受信するまでステップ１２０１を繰り返す。フリットを受信した場合にはステップ１２０２に移る。
【０１２９】
ステップ１２０２において、パケット解析部４１１は、受信したパケットがヘッダフリットであるかどうかを判定する。ヘッダフリットであるかどうかの判断は、たとえば、各フリットに対してフリットの種類を識別する識別子を付与しておき、ヘッダフリットであることを示す識別子の有無により判断すればよい。あるいは、ヘッダフリットに図１２に示すデータ構造の一部が含まれているかどうかによって判断してもよい。たとえば、ヘッダフリットが複数存在する場合であっても、最初のヘッダフリットには図１２に示す中継装置情報９０１が格納されている。パケット解析部４１１は、中継装置情報９０１が格納されているフリットかどうかによって、受信したパケットがヘッダフリットであるかどうかを判定することができる。ヘッダフリットである場合にはステップ１２０３に移る。ヘッダフリットでない場合には、ステップ１２０４に移る。
【０１３０】
ステップ１２０３において、パケット解析部４１１は、ヘッダフリットに記載されるヘッダ情報から、バス幅の値と宛先アドレスの情報を取得する。
【０１３１】
ステップ１２０４において、パケット格納制御部４１３は、パケット解析部４１１で取得したバス幅の情報に基づき、受信したフリットをバッファへ格納し、及びバッファから送信するためのアドレッシングを設定する。パケット格納制御部４１３の動作の詳細は、図１５および図１６を参照しながら、後に説明する。
【０１３２】
ステップ１２０５において、中継制御部４１４は、パケット解析部４１１で取得した宛先アドレスの情報に基づき、送信先の中継装置４０３を決定し、さらにそのパケットを格納するためのその中継装置４０３のバッファ４１２を選択する。中継制御部４１４の動作の詳細は図１７を参照しながら後に説明する。
【０１３３】
ステップ１２０６において、パケット格納制御部４１３は、ステップ１２０４で設定したアドレッシングに基づきフリットをバッファに格納する。
【０１３４】
ステップ１２０７において、スイッチ割当部４１５は、中継装置４０３の出力毎に、フリットを送信するバッファを１つ決定する。
【０１３５】
ステップ１２０８において、スイッチ割当部４１５は、クロスバスイッチ４１６の接続を切り替えて、ステップ１２０４で設定したアドレッシングに基づきフリットをバッファ４１２から送信する。
【０１３６】
以上、ステップ１２０１からステップ１２０８を行うことで、中継装置４０３は、受信パケットに記載されたバス幅の値に基づいて、バッファ４１２の利用効率が高くなるように、パケットを格納する。各中継装置が同様に動作することにより、パケットが宛先のノードまで送信される。
【０１３７】
図１５は、パケット格納制御部４１３の動作フローを示す。
【０１３８】
パケット格納制御部４１３は、ヘッダフリットに記載されたバス幅の値に基づいて、受信したフリットをバッファ４１２へ格納し、バッファ４１２からの送信のためのアドレッシングを設定するために、ステップ１３０１からステップ１３０４を実行する。
【０１３９】
ステップ１３０１において、パケット格納制御部４１３は、パケット解析部４１１から、ヘッダフリットに記載されたバス幅の値を取得する。
【０１４０】
ステップ１３０２において、パケット格納制御部４１３は、受信したフリットを格納するバッファ４１２を特定する識別情報（バッファＩＤ）を取得する。
【０１４１】
ステップ１３０３において、パケット格納制御部４１３は、まず、ステップ１３０１で取得したバス幅の値、およびステップ１３０２で取得したバッファＩＤに基づいて、受信したフリットをバッファ４１２に格納し、及びそのフリットをバッファ４１２から送信するためのアドレッシングの設定を参照する。そしてパケット格納制御部４１３は、受信したフリットを格納するバッファの、現在のアドレッシングの設定が、バス幅の値と一致するかどうかを判定する。一致しない場合にはステップ１３０４に移る。一致する場合には処理を終了する。なお、動作開始時には、「現在のアドレッシングの設定」として予め設定されたアドレッシングの設定値が適用される。
【０１４２】
ステップ１３０４において、受信したフリットのバス幅の値に合わせて、バッファ４１２への格納、及びバッファ４１２からの送信のためのアドレッシングの設定を変更する。
【０１４３】
以上、ステップ１３０１からステップ１３０４を実行することにより、パケット格納制御部４１３は、ヘッダフリットに記載されたバス幅の値に基づいて、受信したフリットをバッファ４１２へ格納、及びバッファ４１２からの送信のためのアドレッシングの設定を変更する。
【０１４４】
図１６は、受信フリットをバッファ４１２に格納する場合、及びバッファ４１２からフリットを送信する場合のアドレッシングの設定の一例を示す。
【０１４５】
図１６の（Ａ）は、受信パケットのヘッダ情報に記載されているバス幅が６４ビットのフリットを格納する場合のアドレッシングの例である。
【０１４６】
バス幅が６４ビットの場合、パケット格納制御部４１３は、バッファ４１２には、６４ビット毎にフリットを格納するアドレスを割り振る。パケット格納制御部４１３は、受信したフリットをそのまま格納する。また、バッファ４１２からフリットを送信する場合は、パケット格納制御部４１３は、６４ビットのサイズでバッファからフリットを取り出し、出力制御部４１７を介してそのまま送信する。
【０１４７】
図１６の（Ｂ）は、受信パケットのヘッダ情報に記載されているバス幅が３２ビットのフリットを格納する場合のアドレッシングの例である。
【０１４８】
バス幅が３２ビットの場合、バッファ４１２には、３２ビット毎にフリットを格納するようにアドレスが割り振られている。パケット格納制御部４１３は、受信フリット６１５のうち、ダミーデータ６１５ｂを取り除いた、実際のデータ６１５ａのみをバッファ４１２に格納する。
【０１４９】
また、バッファ４１２からフリットを送信する場合には、パケット格納制御部４１３は、３２ビットのサイズでバッファからフリット（データ６１５ａ）を取り出し、さらに３２ビットのダミーデータ６１６ｂを付与する。これにより、続く出力制御部４１７が、アクセスサイズが６４ビットのパケット６１６として送信することができる。
【０１５０】
以上のように、パケット格納制御部４１３が、受信フリットに記載されたバス幅の情報を利用することにより、フリットのバッファ４１２への格納方法、及びバッファからの送信のためのアドレッシング方法を変更する。これにより、バッファ４１２の利用効率が大きく改善される。
【０１５１】
なお、図１６では、バス幅が３２ビットと６４ビットの場合についてアドレッシングの例を示したが、例えばバス幅が１６ビットや２５６ビットなど図１６に示したバス幅以外のであっても良い。
【０１５２】
また、図１６では、バッファ４１２の先頭からアドレッシングの割りてる例を示したが、１つのバッファにバス幅の異なるパケット（フリット）が混在する場合には、バッファ４１２に対し、３２ビットのアドレス割り当てと、６４ビットのアドレス割り当てが混在しても良い。例えば、３２ビットのフリット１個と、６４ビットのフリット１個が同じバッファに入る場合には、バッファの先頭から１フリット分は、３２ビットでアドレスを割り当て、それ以降は６４ビットでアドレスを割り当てる。
【０１５３】
図１７は、中継制御部４１４の動作フローを示す。
【０１５４】
中継制御部４１４は、パケットの宛先アドレスの情報に基づき、中継装置４０３が受信したパケットを送信先の中継装置４０３（又は図４に記載の、バススレーブ４０５側のバスＩ／Ｆ４０４）と、その中継装置４０３（又はバススレーブ４０５側のバスＩ／Ｆ４０４）でパケットを格納するバッファを決定する。そのために、以下のステップ１５０１とステップ１５０２を実行する。
【０１５５】
ステップ１５０１において、中継制御部４１４は、宛先アドレスの情報に基づき次にパケットを送信する出力先を決定する。
【０１５６】
パケットの出力先の決定方法としては、例えば、宛先アドレスと中継装置４０３の出力との関係を定義したルーティングテーブルを用意し、パケットの宛先アドレスの値に応じて出力を選択すればよい。なお、ルーティングテーブルを利用する方法以外にも、宛先アドレスに対して出力を一意に決定できる方法であれば良い。
【０１５７】
ステップ１５０２において、中継制御部４１４は、ステップ１５０１で選択された出力先の中継装置４０３（図６）又はバスＩ／Ｆ４０４の中で利用可能なバッファ４１２を特定し、その中から１つを、パケットを格納するバッファとして選択する。
【０１５８】
ステップ１５０１とステップ１５０２を行うことで、中継装置４１４はパケットの宛先アドレスの情報に基づき、受信パケットを次に送信する先の中継装置４０３、又はバススレーブ４０５側のバスＩ／Ｆ４０４と、その中継措置４０３でパケットを格納するバッファを決定する。
【０１５９】
次に、図１８を参照しながら、図６に記載されたスイッチ割当部４１５を説明する。
【０１６０】
図１８は、スイッチ割当部４１５の動作フローを示す。
【０１６１】
スイッチ割当部４１５は、バッファ４１２に格納されたフリットを送信するために、以下のステップ１６０１からステップ１６０３を繰り返す。
【０１６２】
ステップ１６０１において、スイッチ割当部４１５は、バッファ４１２にフリットが格納されているかどうかを判定する。フリットが格納されていない場合はステップ１６０１を繰り返し、フリットが格納されている場合にはステップ１６０２に移る。
【０１６３】
ステップ１６０２において、スイッチ割当部４１５は、出力先が競合するバッファが存在する場合、出力先が競合するバッファ間で、フリットを送信するバッファを１つ選択する。
【０１６４】
ステップ１６０３において、スイッチ割当部４１６は、選択されたバッファからバッファ毎に設定されたアドレッシングの設定に基づきフリットを送信する。
【０１６５】
以上、ステップ１６０１からステップ１６０３を繰り返すことにより、バッファ４１２に格納されたフリットを送信する。
【０１６６】
以上、説明したように、本開示の中継装置４０３は、パケットに付与されたバスマスタ４０１側のバス幅を認識し、バス幅に基づくパケットのバッファへの格納と、バッファからの送信のために、適切なアドレッシングを自動的に行うことができる。これにより、バッファ４１２の利用効率を改善することができる。このため、中継装置毎の個別の設定が不要となり半導体集積回路の設計を簡略化できる。
【０１６７】
なお、本実施形態では、各中継装置が個別にパケットに付与されたバスマスタ４０１側のバス幅を認識し、バス幅に基づくパケットのバッファへの格納と、バッファからの送信のためのアドレッシングを行う例を説明した。しかしながら、バッファ内の同じ番地に格納される複数のフリットの送信先が同じ中継装置である場合には、パケット格納制御部４１３は、バッファの同じ番地に格納された複数のフリットを分割せずそのまま次の中継装置に送信しても良い。
【０１６８】
例えば、図１６（Ｂ）の例では、バス幅が３２ビットのフリットが、バッファ内に２個ずつ詰めて格納される。このとき、同じ番地に詰めて格納されたフリットの、それぞれの宛先の中継装置が同じであれば、２個のフリットを分割することなく、バス幅が６４ビットのバスを介して同時に送信すればよい。これにより２個のフリットを１度に送ることができるため伝送遅延を削減することができる。
【０１６９】
なお、パケット格納制御部４１３において、同じ番地に格納されるフリットの宛先が同じかどうかの判定は、パケット解析部４１１により取得されるヘッダ情報に記載の宛先アドレスを比較することで実現できる。
【０１７０】
また、本実施形態では、バスマスタからスレーブまでのバス幅が一定である場合を例に説明した。しかしながらこれは一例である。他の例として、バス幅が異なるバスを接続する中継装置において、バス幅の狭いバスから、バス幅の広いバスへデータを送信する際に、バッファ内で連続する番地に格納される複数のフリットの送信先が同じ中継装置であれば、パケット格納制御部４１３は、送信先の広いバス幅に合わせて、連続する番地に格納されたデータを１つのデータにまとめて送信しても良い。
【０１７１】
例えば、図１６（Ａ）、（Ｂ）において、送信先のバス幅が１２８ビットのバスであり、バッファ内で連続する番地に格納されるフリットの宛先の中継装置が同じであるとする。この場合には、連続する２つの番地に格納される３２ビット、又は６４ビットのデータを１２８ビットのデータにまとめ、バス幅が１２８ビットのバスを介して送信する。これにより番地２個分のフリットを１度に送ることができるため伝送遅延を削減することができる。
【０１７２】
なお、パケット格納制御部４１３が行う、連続する番地に格納されるフリットの宛先が同じかどうかの判定は、パケット解析部４１１により取得されるヘッダ情報に記載の宛先アドレスを比較することで実現できる。また、中継装置の送信先のバスがローカルバスであるか、基幹バスであるかは、中継装置毎に予めパケット格納制御部４１３に記録されている。
【０１７３】
また、本実施形態では、バス幅が３２ビットのバスマスタと６４ビットのバスマスタを接続するために、３２ビット分のダミーデータを付与して全て６４ビットに揃える例を説明したが、これは一例である。他の例として、バス幅３２ビットのバスマスタと２５６ビットのバスマスタとが接続されたバスシステムを考える。この場合には、全てのバスを２５６ビットに揃えるために付与されるダミーデータは２２４ビット必要となり、ダミーデータが占める割合が多くなる。このような場合には、上述した実施形態の効果が大きく現れる。本実施形態によるバッファの利用効率の改善は、バスマスタ間のバス幅の違いが大きいほどより大きくなるといえる。
【０１７４】
また、本開示では、１つのバッファ４１２内に、多くのパケットが格納される場合に、バッファの利用効率の改善が期待できる。このため、例えばバスマスタから共有メモリに対して、リード要求のためのコマンドを送信する場合など、サイズの小さいパケットを伝送する用途でより大きな効果が期待できる。
【０１７５】
上記の実施形態では、バスマスタ４０１からバスＩ／Ｆ４０２へのデータの送信は、バス幅が変化しないことを前提に説明した。しかしながら、本開示のバスＩ／Ｆ４０２と中継装置４０３は、バスマスタ４０１からバスＩ／Ｆへのデータ送信において、バス幅が動的に変化する場合にも対応できる。
【０１７６】
たとえば図４のバスシステムにおいて、バスマスタ４０１からバスＩ／Ｆ４０２へのデータ送信において、データのバス幅が変化する例としては、例えばプロセッサが、電力の消費が異なる通常モードと省電力モードの動作モードの切り替えた場合が該当する。例えばプロセッサを通常モードから省電力モードで動作させる際に、プロセッサ内の内部バスのバス幅を動的に変更し、利用しないバスへの給電を停止することで消費電力を削減する。このような、バスマスタ４０１側で利用するバス幅の変更は、制御信号の一部としてバスＩ／Ｆ４０２に通知される。省電力モードから通常モードへの移行時も同様にバス幅が変更される。
【０１７７】
図１９は、バスマスタ４０１からのデータ送信において、動的にバス幅が変化する場合のバスＩ／Ｆ４０２の動作フローを示す。
【０１７８】
図１１と同じ動作については同じ参照符号を付与し、説明を省略する。
【０１７９】
ステップ１７０１において、バスＩ／Ｆ４０２のヘッダ情報生成部４０８は、バスマスタ４０１から通知された制御情報からバス幅の情報を取得する。動的にバス幅が変動されたとしても、都度、その時点でのバス幅の情報が制御情報から得られる。図１９の動作を行うことで、バスＩ／Ｆ４０２は、バスマスタ４０１が設定するバス幅の変化に応じてヘッダ情報に記載するバス幅の値を変更することができる。
【０１８０】
なお、図１９の動作フローでは、バスマスタ４０１からデータを送信しているバス幅の値が制御情報の一部として通知される場合について説明を行ったが、これ以外にも、記憶部４０７に省電力モードでのバス幅と通常モードでのバス幅を事前に記憶しておき、バスマスタ４０１から制御信号の一部として、省電モードか通常モードかを判別する信号を受け取ることで、バス幅を決定することができる。
【０１８１】
また、省電力モード以外にも、バスマスタ４０１からの送信データのバス幅が変化する例としては、バスマスタ４０１からのナロー転送処理および通常転送処理の切り替えがある。ナロー転送は、ＡＸＩ（Ａｄｖａｎｃｅｄ  ｅＸｔｅｎｓｉｂｌｅ  Ｉｎｔｅｒｆａｃｅ）などのバスプロトコルなどで利用できる機能であり、例えばバスマスタ４０１のバス幅（例えば３２ビット）よりも、バス幅が小さいバススレーブ４０５（例えば８ビットや１６ビット）と通信する場合や、バススレーブ４０５がメモリであり、１ｗｏｒｄ中の一部（例えば８ビット）にだけにアクセスしたい場合などに、データ線の一部分だけを利用してデータ転送する機能である。
【０１８２】
また、ナロー転送時に利用するバス幅の値は、バスマスタ４０１からバスＩ／Ｆ４０２に対して制御信号の一部として通知される。このため、バスＩ／Ｆ４０２は、バスマスタ４０１から通知されるバス幅の値に応じてヘッダ情報に記載するバス幅の値を変更することができる。
【０１８３】
このように、省電以外の目的であっても、バスマスタ４０１から通知されるバス幅の情報に基づき、ヘッダ情報に記載するバス幅の値を変更しても良い。
【０１８４】
また、ヘッダ情報９００には宛先アドレス、バス幅に関する情報以外にも情報を含めることができる。たとえば、中継装置４０３においてパケット毎の要求品質を保証した制御を行うために、要求品質の厳しさを表現したクラスの情報や、要求品質で許容できる遅延時間である締切時刻の情報などをヘッダ情報９００に含めることができる。
【０１８５】
このようなクラスや締切時刻に関する情報がヘッダ情報に含まれる場合には、中継装置４０３は、バス幅の値に加えて、クラスや締切時刻に関する情報に基づき、受信したフリットをバッファへ格納、及びバッファから送信するためのアドレッシングの設定を変更しても良い。
【０１８６】
図２０は、バス幅の値に加えて、クラスや締切時刻に関する情報をヘッダ情報に記載するバスＩ／Ｆ４２２の構成を示す。図５と同じ構成に対しては同じ参照符号を付与し、説明を省略する。
【０１８７】
バスＩ／Ｆ４２２は、要求品質特定部１８０１を有している。
【０１８８】
要求品質特定部１８０１は、バスマスタ４０１が送信するパケットの要求品質の厳しさを表現したクラスや、品質要求で許容できる遅延時間である締切時刻を特定する回路である。
【０１８９】
クラスや締切時刻の値は、バスマスタ４０１から要求品質特定部１８０１へ直接通知される。また、予め記憶部４０７にバスマスタ４０１のクラスの値を記憶しておき、記憶部４０７を参照してクラスの値を特定しても良い。また、記憶部４０７に品質要求で許容できる遅延時間を記憶しておき、バスマスタ４０１から受信バッファ４０６にデータが送信された時刻に、品質要求で許容できる遅延時間を加算することで締切時刻を特定しても良い。
【０１９０】
ヘッダ情報生成部４０８は、送信先アドレス、バス幅に加え、要求品質特定部１８０１で特定されたクラスや締切時刻に関する情報を含むパケットヘッダ情報を作成する。
【０１９１】
図２１は、要求品質のクラスや締切時刻を記載するバスＩ／Ｆ４２２の動作フローを示す。
【０１９２】
図１１と同じ動作フローについては、同じ参照符号を付与し説明を省略する。
【０１９３】
ステップ８０２において、バスマスタと接続するバス幅の値を取得した後、ステップ１９０１において、要求品質特定部１８０１は、バスマスタの要求品質を特定する。その後処理は、ステップ８０３に移る。
【０１９４】
以上、図２０の構成と、図２１の動作フローにより、バスＩＦ４０２は、パケットのクラスや締切時刻に関する情報を含むパケットを生成し、送信する。
【０１９５】
図２２は、バス幅に加えて、パケットのクラスや締切時刻に関する情報に基づき、受信したフリットをバッファへ格納し、バッファから送信するためのアドレッシングを設定する中継装置４０３のパケット格納制御部４１３（図６）の動作フローを示す。図１５と同じ動作については同じ参照符号を付与し、説明を省略する。
【０１９６】
ステップ２００１において、パケット格納制御部４１３は、パケット解析部４１１からヘッダ情報に記載されたクラスや締切時刻を取得し、ステップ２００２に移る。
【０１９７】
ステップ２００２において、受信したパケットに記載されたクラスや締切時刻に基づき、遅延時間に対する制約があるパケットであるかどうかを判定する。遅延時間に対する制約がある場合にはステップ２００３に移る。遅延時間に対する制約がない場合にはステップ１３０３に移る。
【０１９８】
ステップ２００３において、遅延時間に対する制約があるパケットに対しては、ヘッダ情報に記載されたバス幅の値に依らず、バス幅６４ビットのパケットとしてバッファのアドレッシングを行う。
【０１９９】
以上、図２２の動作フローを行うことで、パケット格納制御部４１３は、バス幅に加えて、パケットのクラスや締切時刻に関する情報に基づき、受信したフリットをバッファへ格納、及びバッファから送信するためのアドレッシングを設定する。
【０２００】
例えば、音声通話など遅延時間（締切時刻）に対して制約のあるクラスのパケットと、ＧＰＵ処理などベストエフォートで処理され、遅延時間（締切時刻）に対する制約がないクラスのパケットが中継装置４０３で混在する場合には、各クラスのパケットを、独立したバッファ４１２に区別して格納し、音声通話用のパケットを優先的に送信することで音声通話の品質を保証できる。
【０２０１】
このように遅延時間に対する制約が異なるクラスのパケットが混在する場合、遅延時間に制約の厳しいクラスのパケットに対しては、バッファの利用効率の改善よりも、より早くフリットを格納し、次へ送信することが求められる。このため、遅延時間（締切時刻）に制約のあるパケットに対しては、バス幅に応じたアドレッシングの設定を行わず、常に６４ビットのバス幅で格納と送信を行うことで処理を行う。
【０２０２】
これにより、図３の例で示したような、バッファの利用効率を優先することで、パケットがバッファ内の複数の番地に跨って格納され、フリットの格納や取り出しにかかる遅延時間の増加することを回避できる。
【０２０３】
一方、遅延時間に制約のないクラスのパケットに対しては、バッファ４１２の利用効率の改善を優先させるために、バス幅に応じたアドレッシングの設定を行えばよい。
【０２０４】
なお、上記の例では、パケットのクラスの種類によりアドレッシングの設定を変更する例を示した。これ以外にも、例えば締切時刻までの残り時間の長さに基づきアドレッシングを変更しても良い。
【０２０５】
ヘッダ情報に記載されたバス幅に加え、パケットのクラスや締切時刻の内容を加味したバッファ４１２のアドレッシングの設定を行うことで、パケット毎の要求品質を考慮しつつ、バッファ４１２の利用効率の改善を行うことができる。
【０２０６】
また、中継装置４０３にバッファ４１２が複数設けられている場合、中継制御部４１４により、送信先の中継装置４０３でフリットを格納するバッファを選択する際に、パケット解析部４１１で取得されたバス幅と、送信先のバッファの利用状況に基づいてバッファを選択しても良い。「送信先」とは、隣接する中継器、またはバススレーブ４０５側のバスＩ／Ｆ４０４である。
【０２０７】
例えば、送信先のバッファの利用状況として、バッファ内のフリットの格納のされ方を利用しても良い。具体的な例として、送信先の中継装置に、アクセス幅が６４ビットの２つのバッファ（バッファＡ、バッファＢ）があり、バッファＡは空状態で、バッファＢには３２ビットのフリットが格納されている状況を想定する。
【０２０８】
この状況において、中継制御部４１４は、これから送信するパケットが３２ビットのフリットの場合は、送信先のバッファの利用効率を向上させるためにバッファＢを格納先として選択する。
【０２０９】
また、これから送信するパケットが６４ビットのフリットの場合、フリットの格納先としてバッファＢを選択すると、図３で示したパケット２のように、バッファ内の異なる番地にフリットが分割して格納される。そのため、中継制御部４１４は、フリットが分割して格納されるのを回避するためバッファＡを格納先として選択する。なお、利用状況として、バッファ内でのフリットの格納され方を利用する代わりに、バッファの空き方や空容量を利用しても良い。
【０２１０】
また、送信先のバッファの利用状況として、バッファ内に格納されているフリットのバス幅の種類に基づいてバッファを選択しても良い。具体的な例として、送信先の中継装置に、アクセス幅が６４ビットの２つのバッファ（バッファＡ、バッファＢ）があり、バッファＡには３２ビットのフリットだけが格納されており、バッファＢには６４ビットのフリットのみが格納されている状況を想定する。
【０２１１】
この状況において、中継制御部４１４は、これから送信するパケットが３２ビットのフリットの場合は、送信先のバッファとして３２ビットのフリットだけが格納されているバッファＡを選択し、これから送信するパケットが６４ビットのフリットの場合は、送信先のバッファとして６４ビットのフリットだけが格納されているバッファＢを選択する。このようにバッファ毎に、サイズが同じフリットをまとめることで、様々なサイズのフリットが混在する場合に比べ、フリット格納や取出しが容易になり、またバッファの利用効率を改善しやすくなる。
【０２１２】
このように、中継制御部４１４により、これから送信するフリットのバス幅と、送信先のバッファの利用状況に基づき送信先の中継装置で格納するバッファを選択することで、送信先のバッファの利用効率をさらに向上させることができる。
【０２１３】
なお、中継制御部４１４は、送信先の中継措置のバッファの利用状況をＮｏＣ側の制御信号６０４によって管理している。
【０２１４】
また、上記の説明では、送信先の中継装置でフリットを格納するバッファを選択するために、バス幅が３２ビットと６４ビットの２種類のフリットに対するバッファ選択を例に説明したが、フリットのサイズは８ビットや２５６ビットなど様々なサイズのフリットにも適用可能であり、また、３種類以上のフリットが混在しても良い。
【０２１５】
なお、本実施形態では、図４においてバスマスタ４０１が送信ノードとなる往路でのデータの伝送を例に説明した。バススレーブ４０５が送信ノードとなる復路についても、バススレーブ４０５側のバスＩ／Ｆ４０４が、バスマスタ４０１側のバスＩ／Ｆ４０２と同じ構成を持ち、また、バススレーブ４０５から送信されたデータをバススレーブ４０５とバスＩ／Ｆ４０４の間のバス幅の値を含むパケットに変換して中継装置４０３へ送信することで、往路と同様に中継装置内に設けられたバッファの利用効率を改善できる。
【０２１６】
なお、上述の説明では、たとえば図１〜図３に示すように、バス幅の異なる複数のバスマスタ（及びバスＩＦ）が同じバス幅のシステムバスにより接続される場合を例に説明を行った。しかしながら、本開示はシステム全体のバス幅が同じであることに限定されない。例えば、システムバスとローカルバスとが中継装置（ゲートウェイ）を介して接続されている場合において、当該システムバスのバス幅と当該ローカルバスのバス幅とが異なるようなバスシステムも本開示の範疇である。
【０２１７】
図２３は、バス幅の異なる複数のバスから構成されるシステムバスの例を示す。
【０２１８】
図２３では、中継装置Ａ（ゲートウェイＡ）を介して、バス幅３２ビットのローカルバスＡとバス幅２５６ビットのシステムバスとが接続され、中継装置Ｂ（ゲートウェイＢ）を介して、バス幅１２８ビットのローカルバスＢとシステムバスとが接続されている。上述した図２は、バスマスタとバスＩＦとの間で、バス幅がそれぞれ３２ビットおよび２５６ビットの例であり、バスＩＦがシステムバスの中継装置に接続されていたが、図２３は、バスＩＦとシステムバスとの間にネットワーク（ローカルバス）が含まれる態様に拡張されている。
【０２１９】
図２３の例において、中継装置Ａは、バス幅６４ビットのバスマスタ（バスＩＦ）から送信されたデータのパケットを、ローカルバスＡを介して受け取り、バス幅２５６ビットのシステムバスに送信する。このときの中継装置Ａの動作は、図３における中継装置２０５および２０６と同様である。また中継装置Ｂは、バス幅１２８ビットのバスマスタ（バスＩＦ）から送信されたデータのパケットを、ローカルバスＢを介して受け取り、２５６ビットのシステムバスに送信する。このときの中継装置Ｂの動作も、図３における中継装置２０５および２０６と同様である。これにより、システムバスを構成する中継装置のバッファの利用効率を改善できる。
【産業上の利用可能性】
【０２２０】
本開示の一実施形態にかかる中継装置は、分散型のバスを備える集積回路において、中継装置のバッファの利用効率を改善するために利用することが可能である。このため、例えば、利用するバス幅が異なる複数のメディア処理用のＤＳＰや、高速なファイル転送を行うＣＰＵなどを、分散バスを用いて１つのＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）上に集積化する際に、実装に必要なリソースの省資源化と、処理の低遅延化の双方を実現する上で有用である。
【符号の説明】
【０２２１】
４００  バスシステム
４０１  バスマスタ
４０２、４２２  バスマスタ側のバスインタフェース装置（バスＩ／Ｆ）
４０３  中継装置
４０４  バススレーブ側のバスＩ／Ｆ
４０５  バススレーブ
４０６  受信バッファ
４０７  記憶部
４０８  ヘッダ情報生成部
４０９  パケット化部
４１０  送信制御部
４１１  パケット解析部
４１２  バッファ
４１３  パケット格納制御部
４１４  中継制御部
４１５  スイッチ割当部
４１６  クロスバスイッチ
４１７  出力制御部
１８０１  要求品質特定部
【図１】
0005853211.tif 000002
【図２】
0005853211.tif 000003
【図３】
0005853211.tif 000004
【図４】
0005853211.tif 000005
【図５】
0005853211.tif 000006
【図６】
0005853211.tif 000007
【図７】
0005853211.tif 000008
【図８】
0005853211.tif 000009
【図９Ａ】
0005853211.tif 000010
【図９Ｂ】
0005853211.tif 000011
【図１０】
0005853211.tif 000012
【図１１】
0005853211.tif 000013
【図１２】
0005853211.tif 000014
【図１３】
0005853211.tif 000015
【図１４】
0005853211.tif 000016
【図１５】
0005853211.tif 000017
【図１６】
0005853211.tif 000018
【図１７】
0005853211.tif 000019
【図１８】
0005853211.tif 000020
【図１９】
0005853211.tif 000021
【図２０】
0005853211.tif 000022
【図２１】
0005853211.tif 000023
【図２２】
0005853211.tif 000024
【図２３】
0005853211.tif 000025