(57)【特許請求の範囲】
【請求項１】
１以上のマスタデバイスが接続される第１のバスと、１以上のスレーブデバイスが接続される第２のバスと、前記第１のバスと前記第２のバスとを接続する複数のデータ転送経路と、を備えた半導体集積回路であって、
前記第１のバスは、第１の前記マスタデバイスから第１の前記スレーブデバイスへのデータ転送経路を、前記複数のデータ転送経路から選択する経路選択モジュールを含み、
前記経路選択モジュールは、
前記第１のマスタデバイスから前記第１のスレーブデバイスへのデータ転送のトランザクションが発生した場合、前記第１のマスタデバイスが、前記過去のデータ転送のトランザクションのうち転送先が前記第１のスレーブデバイスであるトランザクションのレスポンスの待ち状態である場合、前記過去のデータ転送のトランザクションのデータ転送経路と同一のデータ転送経路を、現に発生したトランザクションのデータ転送経路として選択し、
前記第１のマスタデバイスが、前記過去のデータ転送のトランザクションのうち転送先が前記第１のスレーブデバイスであるトランザクションのレスポンスの待ち状態でない場合、前記複数のデータ転送経路から、現に発生したトランザクションのデータ転送経路を選択することを特徴とする半導体集積回路。
【請求項２】
前記複数のデータ転送経路の各々は、転送すべきデータを一時的に格納するＦＩＦＯに接続されたバスブリッジであり、
前記経路選択モジュールは、前記複数のデータ転送経路から、現に発生したトランザクションのデータ転送経路を選択する場合、各々のバスブリッジに接続されたＦＩＦＯの空き状況に応じて、利用すべきバスブリッジを選択することを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記経路選択モジュールは、各々のバスブリッジに接続されたＦＩＦＯの空きエントリ数を、バスブリッジ毎に設定された重みを用いて重み付けし、重み付けされた値に応じて、利用すべきバスブリッジを選択することを特徴とする請求項２に記載の半導体集積回路。
【請求項４】
前記１以上のマスタデバイスの各々と、前記経路選択モジュールとは、各マスタデバイスに対する前記経路選択モジュールの機能の有効又は無効を制御するための経路変更禁止専用線によって接続され、
前記経路変更禁止専用線は、所定のプログラムからの専用命令を用いて前記経路選択モジュールの機能を有効又は無効に動的に制御することを特徴とする請求項１に記載の半導体集積回路。
【請求項５】
１以上のマスタデバイスが接続される第１のバスと、１以上のスレーブデバイスが接続される第２のバスと、前記第１のバスと前記第２のバスとを接続する複数のデータ転送経路と、を備えた半導体集積回路におけるデータ転送の制御方法であって、
前記第１のバスは、第１の前記マスタデバイスから第１の前記スレーブデバイスへのデータ転送経路を、前記複数のデータ転送経路から選択する経路選択モジュールを含み、
前記方法は、
前記第１のマスタデバイスが、前記第１のスレーブデバイスへのデータ転送のトランザクションを発行する手順と、
前記経路選択モジュールが、前記第１のマスタデバイスが前記過去のデータ転送のトランザクションのうち転送先が前記第１のスレーブデバイスであるトランザクションのレスポンスの待ち状態である場合、前記過去のデータ転送のトランザクションのデータ転送経路と同一のデータ転送経路を、現に発生したトランザクションのデータ転送経路として選択する手順と、
前記経路選択モジュールが、前記第１のマスタデバイスが前記過去のデータ転送のトランザクションのうち転送先が前記第１のスレーブデバイスであるトランザクションのレスポンスの待ち状態でない場合、前記複数のデータ転送経路から、現に発生したトランザクションのデータ転送経路を選択することを特徴とする半導体集積回路におけるデータ転送の制御方法。
【請求項６】
前記複数のデータ転送経路の各々は、転送すべきデータを一時的に格納するＦＩＦＯに接続されたバスブリッジであり、
前記選択する手順において、前記経路選択モジュールは、前記複数のデータ転送経路から、現に発生したトランザクションのデータ転送経路を選択する場合、各々のバスブリッジに接続されたＦＩＦＯの空き状況に応じて、利用すべきバスブリッジを選択することを特徴とする請求項５に記載の半導体集積回路におけるデータ転送の制御方法。
【請求項７】
前記選択する手順において、前記経路選択モジュールは、各々のバスブリッジに接続されたＦＩＦＯの空きエントリ数を、バスブリッジ毎に設定された重みを用いて重み付けし、重み付けされた値に応じて、利用すべきバスブリッジを選択することを特徴とする請求項６に記載の半導体集積回路におけるデータ転送の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路に関し、特に、バス間を複数のバスブリッジで接続する構成の半導体集積回路におけるデータ転送の制御方法に関する。
【背景技術】
【０００２】
システムＬＳＩとは、複数の回路モジュール（ＣＰＵやメモリモジュール等）を組み合わせて単一のチップ上に形成した半導体集積回路である。各回路モジュールは、バスを介して接続されている。
【０００３】
近年、このようなシステムＬＳＩの規模が大きくなり、バスに接続されるデバイス数の増加に伴い、システムの動作周波数が低下してしまう問題がある。
【０００４】
この問題の原因の一つとして、デバイス数の増加によるバスの複雑化が挙げられる。マスタデバイスの数が増えた場合、マスタデバイス間のバス権の競合を抑制するために、バスレーンの本数を増やす必要がある。ここで、１本のバスレーンは、データ線、アドレス線、制御線等の多数の配線から構成される。そのため、多本数のバスレーンを備えたシステムＬＳＩを実装しようとすると、必要な配線数も多くなる。その結果、システムＬＳＩの回路面積が増大し、システムの動作周波数が低下してしまう。
【０００５】
そこで、システムＬＳＩの回路面積の増大を防ぎつつデバイス間のバス権の競合を抑制するために、複数のバスを用意し、各デバイスをいずれかのバスに接続し、バス間をバスブリッジで接続する方法がある。また、バス間を複数のバスブリッジで接続し、利用するバスブリッジを動的に選択することによって、バス間のデータ転送性能を向上させる方法がある（特許文献１参照）。
【０００６】
図１は、従来のシステムＬＳＩ（１）の典型的な構成例を示す図である。図１に示すシステムＬＳＩ（１）は、マスタデバイス１０１〜１０４、スレーブデバイス１０５〜１０８、バス１１１、１１２、バスブリッジ１２１、１２２、ＦＩＦＯ（First-In First-Out）１３１、１３２を備える。
【０００７】
マスタデバイス１０１〜１０４は、ＣＰＵ、ＤＭＡＣ（Dynamic Memory Access Controller）、ＤＳＰ（Digital Signal Processor）等の機能を実現するマスタ側のデバイスである。スレーブデバイス１０５〜１０８は、各種メモリインターフェースやＵＳＢ（Universal Serial Bus）等の機能を実現するスレーブ側のデバイスである。図１に示す例では、マスタデバイス１０１〜１０３及びスレーブデバイス１０５はバス１１１に接続され、マスタデバイス１０４及びスレーブデバイス１０６〜１０８はバス１１２に接続されている。
【０００８】
バスブリッジ１２１、１２２は、バス１１１、１１２間に多重に接続され、バス１１１、１１２のプロトコルを変換する。これらバスブリッジ１２１、１２２は、ＳＲＡＭやフリップフロップ等のデータの格納場所を備え、格納された順番にデータを読み出す制御回路を備えるＦＩＦＯ１３１、１３２に接続されている。トランザクションがバスブリッジ１２１、１２２を通過する場合、そのトランザクションは一旦ＦＩＦＯ１３１、１３２に格納される。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００７−１９９８５９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ところで、図１に示すような従来のシステムＬＳＩ（１）では、マスタデバイス１０１〜１０３からスレーブデバイス１０６〜１０８へのデータ転送経路には、バスブリッジ１２１を通過する経路及びバスブリッジ１２２を通過する経路の二つの経路がある。ここで、トランザクションの順番が入れ替わってしまう等の理由により、データの転送性能が低下する問題が生じていた。
【００１１】
トランザクションの順番の入れ替わりについて図１を用いて具体的に説明する。図１において、マスタデバイス１０１がスレーブデバイス１０６に対して、トランザクション０（不図示）、トランザクション１（不図示）を順番に転送する場合を考える。
【００１２】
まず、トランザクション０がバスブリッジ１２１を通過することが決まったとする。そうすると、トランザクション０はバスブリッジ１２１に転送され、バスブリッジ１２１に接続されたＦＩＦＯ１３１に格納される。このとき、マスタデバイス１０４からスレーブデバイス１０６へのトランザクションの発生等の理由でバス１１２が利用されている場合、ＦＩＦＯ１３１に格納されたトランザクション０は、バス１１２への転送権利が得られずＦＩＦＯ１３１で停滞する。その間に、トランザクション１がバスブリッジ１２２を通過することが決まったとする。そうすると、トランザクション０がＦＩＦＯ１３１で停滞している間に、トランザクション１はバスブリッジ１２２に転送され、バスブリッジ１２２に接続されたＦＩＦＯ１３２に格納される。
【００１３】
次に、バス１１２において、バスブリッジ１２２の優先度がバスブリッジ１２１の優先度より高い場合、トランザクション１がトランザクション０よりも先にスレーブデバイス１０６に到着する。このようにトランザクションの順番が入れ替わってしまう。
【００１４】
本発明は、上述した課題を考慮したものであって、バス間を複数のバスブリッジで接続する構成の半導体集積回路において、トランザクションの順番の入れ替わりを防ぎ、データの転送性能を向上させるデータ転送の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、１以上のマスタデバイスが接続される第１のバスと、１以上のスレーブデバイスが接続される第２のバスと、前記第１のバスと前記第２のバスとを接続する複数のデータ転送経路と、を備えた半導体集積回路であって、前記第１のバスは、第１の前記マスタデバイスから第１の前記スレーブデバイスへのデータ転送経路を、前記複数のデータ転送経路から選択する経路選択モジュールを含み、前記経路選択モジュールは、前記第１のマスタデバイスから前記第１のスレーブデバイスへのデータ転送のトランザクションが発生した場合、前記第１のマスタデバイスが、前記過去のデータ転送のトランザクションのうち転送先が前記第１のスレーブデバイスであるトランザクションのレスポンスの待ち状態である場合、前記過去のデータ転送のトランザクションのデータ転送経路と同一のデータ転送経路を、現に発生したトランザクションのデータ転送経路として選択し、前記過去のデータ転送のトランザクションのうち転送先が前記第１のスレーブデバイスであるトランザクションのレスポンスの待ち状態でない場合、前記複数のデータ転送経路から、現に発生したトランザクションのデータ転送経路を選択することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、バス間を複数のバスブリッジで接続する構成の半導体集積回路において、トランザクションの順番の入れ替わりを防ぎ、データの転送性能を向上させることができる。
【図面の簡単な説明】
【００１７】
【図１】従来のシステムＬＳＩの典型的な構成例を示す図である。
【図２】本発明の第１の実施形態のシステムＬＳＩの基本構成例を示す図である。
【図３】本発明の第１の実施形態のバスの構成の一例を示す図である。
【図４】本発明の第１の実施形態の経路選択モジュールの構成の一例を示す図である。
【図５】本発明の第１の実施形態のカウンタ表更新モジュールの一例を示す図である。
【図６】本発明の第１の実施形態のカウンタ表モジュールの一例を示す図である。
【図７】本発明の第１の実施形態のパス変更モジュールの一例を示す図である。
【図８】本発明の第１の実施形態の推奨経路取得モジュールの一例を示す図である。
【図９】本発明の第１の実施形態のシステムＬＳＩの動作を示すフローチャートである。
【図１０】本発明の第２の実施形態のシステムＬＳＩの基本構成例を示す図である。
【図１１】本発明の第２の実施形態のバスの構成の一例を示す図である。
【図１２】本発明の第２の実施形態の経路選択モジュールの構成の一例を示す図である。
【図１３】本発明の第２の実施形態のシステムＬＳＩの動作を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１９】
（第１の実施形態）
まず、本発明の第１の実施形態について説明する。
【００２０】
図２は、本発明の第１の実施形態のシステムＬＳＩ（２）の基本構成例を示す図である。図２に示すシステムＬＳＩ（２）は、マスタデバイス２０１〜２０４、スレーブデバイス２０５〜２０８、バス２１１、２１２、バスブリッジ２２１、２２２、ＦＩＦＯ２３１、２３２を備える。
【００２１】
マスタデバイス２０１〜２０４は、ＣＰＵ、ＤＭＡＣ、ＤＳＰ等の機能を実現するマスタ側のデバイスである。スレーブデバイス２０５〜２０８は、各種メモリインターフェースやＵＳＢ等の機能を実現するスレーブ側のデバイスである。図２に示す例では、マスタデバイス２０１〜２０３及びスレーブデバイス２０５はバス２１１に接続され、マスタデバイス２０４及びスレーブデバイス２０６〜２０８はバス２１２に接続されている。
【００２２】
バスブリッジ２２１、２２２は、バス２１１、２１２間に多重に接続され、バス２１１、２１２のプロトコルを変換する。これらバスブリッジ２２１、２２２は、ＳＲＡＭやフリップフロップ等のデータの格納場所を備え、格納された順番にデータを読み出す制御回路を備えるＦＩＦＯ２３１、２３２に接続されている。トランザクションがバスブリッジ２２１、２２２を通過する場合、そのトランザクションは一旦ＦＩＦＯ２３１、２３２に格納される。
【００２３】
バス２１１は、バス２１１のアービトレーションを実行するアービタ２４１と経路選択モジュール２５１を含む。一方、バス２１２は、バス２１２のアービトレーションを実行するアービタ２４２を含む。
【００２４】
経路選択モジュール２５１は、マスタデバイス２０１〜２０３、アービタ２４１、ＦＩＦＯ１３１、２３２に接続される。この経路選択モジュール２５１は、マスタデバイス２０１〜２０３、アービタ２４１、ＦＩＦＯ１３１、２２２から受信した情報に基づき、データの転送経路を選択する。
【００２５】
経路選択モジュール２５１は、マスタデバイス（例えばマスタデバイス２０１）からスレーブデバイス（例えばスレーブデバイス２０６）へのバスブリッジ２２１、２２２を介したデータ転送のトランザクションが発生した場合、発生したトランザクションのデータ転送経路を、以下に示す方法で選択する。
【００２６】
すなわち、マスタデバイスがスレーブデバイスに対して過去に発行したトランザクションのレスポンスの待ち状態である場合、過去に発行したトランザクションの転送経路と同じ転送経路を選択する。具体的には、過去に発行したトランザクションの転送経路がバスブリッジ２２１を通過する経路である場合には、同じバスブリッジ２２１を通過する経路を選択する。
【００２７】
一方、マスタデバイスがスレーブデバイスに対して過去に発行したトランザクションのレスポンスの待ち状態でない場合（マスタデバイスがスレーブデバイスに対して現に発行しているトランザクションが存在しない場合）、バスブリッジ２２１を通過する経路及びバスブリッジ２２２を通過する経路の中から、データ転送経路を動的に選択する。選択処理の詳細については後述する。
【００２８】
また、経路選択モジュール２５１は、マスタデバイス（例えばマスタデバイス２０１）からスレーブデバイス（例えばスレーブデバイス２０５）へのバスブリッジ２２１、２２２を介さないデータ転送のトランザクションが発生した場合、選択処理を実行しない。このようなトランザクションに対しては、通過すべきバスブリッジ２２１、２２２を選択する必要がないためである。
【００２９】
なお、図２に示す各マスタデバイス２０１〜２０４の数、スレーブデバイス２０５〜２０８の数、バス２１１、２１２の数、バスブリッジ２２１、２２２の数、アービタ２４１、２４２の数は一例であり、図示されている数に限らない。
【００３０】
図３は、本発明の第１の実施形態のバス２１１の構成の一例を示す図である。図３において、図２と同一の構成要素には同一の符号を付して重複する説明を適宜省略する。また図３において、実線の矢印は、マスタデバイス２０１〜２０３からスレーブデバイス２０５〜２０８に向かって流れるバス信号（例えばアドレス信号、書き込みデータ信号、制御信号等）を示す。一方、点線の矢印は、スレーブデバイス２０５〜２０８からマスタデバイス２０１〜２０３に向かって流れるバス信号（例えば読み出しデータ信号、応答信号等）を示す。
【００３１】
バス２１１は、アービタ２４１、Ｉ／Ｆ制御モジュール３０１〜３０３、アドレスデコーダ３１１〜３１３、経路選択モジュール２５１を含む。
【００３２】
アービタ２４１は、マスタデバイス２０１〜２０３から、スレーブデバイス２０５〜２０８へのデータ転送のトランザクションを制御するアービタ３３１と、スレーブデバイス２０５〜２０８からマスタデバイス２０１〜２０３へのデータ転送のトランザクションを制御するアービタ３３２とを含む。
【００３３】
アービタ３３１は、マスタデバイス２０１〜２０３からＩ／Ｆ制御モジュール３０１〜３０３を介して、バス２１１の使用要求を受け取る。そうすると、アービタ３３１は、マスタデバイス２０１〜２０３のいずれか一つに使用権を与え、使用権が与えられたデバイスに関する情報をセレクタ３６１に通知する。
【００３４】
アービタ３３２は、スレーブデバイス２０５及びバスブリッジ２２１、２２２から、バス２１１の使用要求を受け取る。そうすると、スレーブデバイス２０５及びバスブリッジ２２１、２２２のいずれか一つに使用権を与え、使用権が与えられたデバイスに関する情報をセレクタ３６２に通知する。
【００３５】
セレクタ３６１は、マスタデバイス２０１〜２０３から、データ信号と制御信号とを受け取る。また、アービタ３３１から、使用権が与えられたデバイス（マスタデバイス２０１〜２０３のいずれか）のＩＤ（識別子）を受け取る。また、経路選択モジュール３２１〜３２３から、転送先（スレーブデバイス２０５及びバスブリッジ２２１、２２２のいずれか）のＩＤを受け取る。そして、セレクタ３６１は、使用権が与えられたデバイス（マスタデバイス２０１〜２０３のいずれか）から、転送先（スレーブデバイス２０５及びバスブリッジ２２１、２２２のいずれか）への信号線を接続する。
【００３６】
セレクタ３６２は、スレーブデバイス２０５又はバスブリッジ２２１、２２２から、データ信号と制御信号とを受け取る。この制御信号は、転送先のマスタデバイス２０１〜２０３を示す情報を含む。また、アービタ３３２から、使用権が与えられたデバイス（スレーブデバイス２０５及びバスブリッジ２２１、２２２のいずれか）のＩＤを受け取る。そして、セレクタ３６２は、使用権が与えられたデバイス（スレーブデバイス２０５及びバスブリッジ２２１、２２２のいずれか）から、転送先（マスタデバイス２０１〜２０３のいずれか）への信号線を接続する。
【００３７】
Ｉ／Ｆ制御モジュール３０１〜３０３は、それぞれマスタデバイス２０１〜２０３に、信号線３４１〜３４３を介して接続される。これらＩ／Ｆ制御モジュール３０１〜３０３は、マスタデバイス２０１〜２０３とバス２１１との間におけるリードやライトのリクエストとデータの送受信のトランザクションに関するインターフェースを制御する。
【００３８】
アドレスデコーダ３１１〜３１３は、それぞれＩ／Ｆ制御モジュール３０１〜３０３から、アドレス信号３５１〜３５３を受け取る。そして、アドレス信号３５１〜３５３に基づいて導出される転送先のスレーブデバイス（スレーブデバイス２０５〜２０８のいずれか）のＩＤを示す信号３５４〜３５６を、経路選択モジュール３２１〜３２３に出力する。
【００３９】
経路選択モジュール２５１は、マスタデバイス２０１〜２０３毎の経路選択モジュール３２１〜３２３を含む。経路選択モジュール３２１〜３２３は、アービタ３３１、３３２から、バス２１１の使用権が与えられたトランザクションの情報を取得する。これにより、経路選択モジュール３２１は、マスタデバイス２０１とスレーブデバイス２０５〜２０８との間のデータ転送の状況を把握する。同様に、経路選択モジュール３２２、３２３は、それぞれマスタデバイス２０２、２０３とスレーブデバイス２０５〜２０８との間のデータ転送の状況を把握する。
【００４０】
また、経路選択モジュール３２１〜３２３は、それぞれアドレスデコーダ３１１〜３１３から、転送先のスレーブデバイス２０５〜２０８のＩＤを示す信号３５４〜３５６を受け取る。さらに、ＦＩＦＯ２３１、２３２から、各ＦＩＦＯ２３１、２３２のエントリの利用状況（空き状況）の情報を取得する。
【００４１】
その後、経路選択モジュール３２１〜３２３は、アービタ３３１、３３２、アドレスデコーダ３１１〜３１３、ＦＩＦＯ２３１、２３２から取得した情報に基づいて、内部のカウンタ表モジュール４０２（図４参照）を更新し、カウンタ表モジュール４０２を用いて利用可能なデータの転送経路を判定・選択する。
【００４２】
なお、図３に示すバス２１１では、経路選択モジュール３２１〜３２３がマスタデバイス２０１〜２０３毎に設けられているが、この場合には限らない。マスタデバイス２０１〜２０３に対して１つの経路選択モジュールが設けられてもよい。
【００４３】
図４は、本発明の第１の実施形態の経路選択モジュール３２１の構成の一例を示す図である。図４において、図３と同一の構成要素には同一の符号を付して重複する説明を適宜省略する。また図４では、経路選択モジュール３２１の構成の一例を示しているが、経路選択モジュール３２２、３２３も同様の構成である。
【００４４】
経路選択モジュール３２１は、カウンタ表更新モジュール４０１、カウンタ表モジュール４０２、パス変更モジュール４０３を含む。
【００４５】
カウンタ表更新モジュール４０１は、アービタ３３１、３３２、パス変更モジュール４０３から、バス２１１の使用状況を示す情報を取得し、取得された情報に基づいて、カウンタ表モジュール４０２を更新するための信号４１１を作成する。
【００４６】
カウンタ表モジュール４０２は、カウンタ表更新モジュール４０１によって出力された信号４１１に基づいて、マスタデバイス２０１からスレーブデバイス２０６〜２０８へのバスブリッジ２２１、２２２を介したデータ転送のトランザクション（リクエストは発行されたがレスポンスは待ち状態のトランザクション）が現に存在するか否か及び存在する場合のトランザクションの数を示す情報を保持する。このようなトランザクションが存在する場合、カウンタ表モジュール４０２は、当該トランザクションが通過した経路上のバスブリッジ２２１、２２２のいずれかのＩＤを保持する。
【００４７】
パス変更モジュール４０３は、カウンタ表モジュール４０２に保持された情報等を用いて、トランザクションの経路（パス）を変更する。
【００４８】
このパス変更モジュール４０３は、アドレスデコーダ３１１から、デコード結果、すなわち転送先のスレーブデバイス２０５〜２０８のＩＤを示す信号３５４（以下、「スレーブＩＤ信号３５４」という。）を取得する。また、ＦＩＦＯ２３１、２３２から、各ＦＩＦＯ２３１、２３２の空きエントリ数及び各ＦＩＦＯ２３１、２３２が接続されたバスブリッジ２２１、２２２のＩＤを取得する。
【００４９】
その後、パス変更モジュール４０３は、取得されたスレーブＩＤ信号３５４からカウンタ表モジュール４０２の値を減算することによって、スレーブＩＤ信号３５４で示されるスレーブデバイス（特に、スレーブデバイス２０６〜２０８）へのデータ転送が現に実行されているか否かを判定する。データ転送が現に実行されている場合、現に利用されているバスブリッジ２２１、２２２のＩＤを出力する（３５７）。一方、データ転送が現に実行されていない場合、利用すべきデータの転送経路（例えばバスブリッジ２２１、２２２のいずれか）を計算し、計算結果を出力する（３５７）。
【００５０】
図５は、本発明の第１の実施形態のカウンタ表更新モジュール４０１の一例を示す図である。図５において、図４と同一の構成要素には同一の符号を付して重複する説明を適宜省略する。
【００５１】
カウンタ表更新モジュール４０１は、アービタ３３１からの入力信号２８１、パス変更モジュール４０３からの入力信号４１３及びアービタ３３２からの入力信号２７１を入力する。このカウンタ表更新モジュール４０１は、所定のＩＤがバスブリッジ１２１、２２２のＩＤか否かを判定するバスブリッジＩＤ判定モジュール５０１、５０２を備える。
【００５２】
入力信号２８１は、転送先のスレーブデバイス２０５〜２０８のいずれかのＩＤを示すスレーブＩＤ信号と、マスタデバイス２０１へのｇｎｔ（グラント）信号とを含む。ｇｎｔ信号は、マスタデバイス２０１からスレーブデバイス２０５〜２０８へのリクエスト信号が許可されているか否かを示す信号である。
【００５３】
入力信号４１３は、転送先のデバイス（スレーブデバイス２０５及びバスブリッジ２２１、２２２のいずれか）のＩＤを示す信号（以下、「転送先ＩＤ信号」という。）を含む。マスタデバイス２０１からスレーブデバイス２０５〜２０８へのリクエストがバスブリッジ２２１、２２２を介したデータ転送である場合、転送先ＩＤは、バスブリッジ２２１、２２２のＩＤを示す。一方、バスブリッジ２２１、２２２を介したデータ転送でない場合、スレーブデバイス２０５のＩＤを示す。
【００５４】
入力信号２８１に含まれるスレーブＩＤ信号は、転送先スレーブＩＤ信号５１１としてカウンタ表モジュール４０２に直接送信される。入力信号４１３に含まれる転送先ＩＤ信号は、バスブリッジＩＤ判定モジュール５０１に送信される。
【００５５】
バスブリッジＩＤ判定モジュール５０１は、転送先ＩＤ信号に基づいて、転送先のＩＤがバスブリッジ２２１、２２２のＩＤであるか否かを判定する。転送先のＩＤがバスブリッジ２２１、２２２のＩＤであると判定され、且つ、ｇｎｔ信号が有効の場合、ＡＮＤ回路５０３は、マスタデバイス２０１からスレーブデバイス２０６〜２０８へのバスブリッジ２２１、２２２を介したデータ転送がアービタ３３１によって許可されたと判定し、ｖａｌｉｄ信号５１２を有効にする。この場合、転送先ＩＤ信号は、バスブリッジＩＤ信号５１３としてカウンタ表モジュール４０２に送信される。また、カウントアップ信号５１４がカウンタ表モジュール４０２に送信される。
【００５６】
以上のように、カウンタ表更新モジュール４０１では、マスタデバイス２０１からスレーブデバイス２０６〜２０８へのバスブリッジ２２１、２２２を介したデータ転送がアービタ３３１によって許可された場合のみ、ｖａｌｉｄ信号５１２が有効となる。この場合、転送先スレーブＩＤ信号５１１、バスブリッジＩＤ信号５１３、カウントアップ信号５１４が適切に設定される。
【００５７】
入力信号２７１は、転送元のスレーブデバイス２０５〜２０８のいずれかのＩＤを示すスレーブＩＤ信号と、マスタデバイス２０１へのｇｎｔ信号と、転送元のデバイス（スレーブデバイス２０５及びバスブリッジ２２１、２２２のいずれか）のＩＤを示す信号（以下、「転送元ＩＤ信号」という。）とを含む。ｇｎｔ信号は、スレーブデバイス２０５〜２０８からマスタデバイス２０１へのレスポンス信号が許可されているか否かを示す信号である。スレーブデバイス２０５〜２０８からマスタデバイス２０１へのレスポンスがバスブリッジ２２１、２２２を介したデータ転送である場合、転送元ＩＤは、バスブリッジ２２１、２２２のＩＤを示す。一方、バスブリッジ２２１、２２２を介したデータ転送でない場合、スレーブデバイス２０５のＩＤを示す。
【００５８】
入力信号２７１に含まれるスレーブＩＤ信号は、転送元スレーブＩＤ信号５２１としてカウンタ表モジュール４０２に直接送信される。入力信号２７１に含まれる転送元ＩＤ信号は、バスブリッジＩＤ判定モジュール５０２に送信される。
【００５９】
バスブリッジＩＤ判定モジュール５０２は、転送元ＩＤ信号に基づいて、転送元のＩＤがバスブリッジ２２１、２２２のＩＤであるか否かを判定する。転送元のＩＤがバスブリッジ２２１、２２２のＩＤであると判定され、且つ、ｇｎｔ信号が有効の場合、ＡＮＤ回路５０４は、スレーブデバイス２０６〜２０８からマスタデバイス２０１へのバスブリッジ２２１、２２２を介したデータ転送がアービタ３３２によって許可されたと判定し、ｖａｌｉｄ信号５２２を有効にする。この場合、転送元ＩＤ信号は、バスブリッジＩＤ信号５２３としてカウンタ表モジュール４０２に送信される。また、カウントダウン信号５２４がカウンタ表モジュール４０２に送信される。
【００６０】
以上のように、カウンタ表更新モジュール４０１では、スレーブデバイス２０６〜２０８からマスタデバイス２０１へのバスブリッジ２２１、２２２を介したデータ転送がアービタ３３２によって許可された場合のみ、ｖａｌｉｄ信号５２２が有効となる。この場合、転送元スレーブＩＤ信号５２１、バスブリッジＩＤ信号５２３、カウントダウン信号５２４が適切に設定される。
【００６１】
図６は、本発明の第１の実施形態のカウンタ表モジュール４０２の一例を示す図である。図６において、図４と同一の構成要素には同一の符号を付して重複する説明を適宜省略する。
【００６２】
カウンタ表モジュール４０２は、カウンタ表更新モジュール４０１から出力されたスレーブＩＤ信号６２１（図５のスレーブＩＤ信号５１１、５２１）、有効か否かを示すｖａｌｉｄ信号６２２（図５のｖａｌｉｄ信号５１２、５２２）、バスブリッジＩＤ信号６２３（図５のバスブリッジＩＤ信号５１３、５２３）、カウントアップ／カウントダウン信号６２４（図５のカウントアップ信号５１４、カウントダウン信号５２４）の組み合わせを入力する。
【００６３】
このカウンタ表モジュール４０２は、バスブリッジ２２１、２２２を介したアクセスが必要なスレーブデバイス２０６〜２０８毎に、カウンタ６０１、６０２、バスブリッジＩＤ保持ＦＦ（フリップフロップ）６１１、６１２を備える。カウンタ表モジュール４０２は、これらカウンタ６０１、６０２、バスブリッジＩＤ保持ＦＦ６１１、６１２を用いて、各スレーブデバイス２０６〜２０８へのトランザクションが現に存在するか否か及び存在する場合のトランザクションの数を示す情報を保持する。
【００６４】
カウンタ６０１、６０２は、カウントアップ／カウントダウン信号６２４が入力されると、内部に保持する値をカウントアップ又はカウントダウンする。これにより、スレーブデバイス２０６〜２０８毎に、レスポンス待ち状態のトランザクションの数を保持する。
【００６５】
バスブリッジＩＤ保持ＦＦ６１１、６１２は、スレーブデバイス２０６〜２０８毎に、レスポンス待ち状態のトランザクションが通過した経路上のバスブリッジ２２１、２２２のＩＤを保持する。
【００６６】
なお、カウンタ表モジュール４０２において、スレーブデバイス２０６〜２０８毎に、カウンタ６０１、６０２、バスブリッジＩＤ保持ＦＦ６１１、６１２が設けられている理由について説明する。マスタデバイス２０１からスレーブデバイス２０６〜２０８へのアクセスは、一度にバスブリッジ２２１、２２２の両方を利用しないように設計される。そのため、スレーブデバイス２０６〜２０８毎に、１つのバスブリッジＩＤと、そのバスブリッジＩＤで示されるバスブリッジを介したトランザクションの数とを保持させることが、経路変更が可能か否か及び経路変更が不可である場合に利用すべきバスブリッジ２２１、２２２を判定させるのに十分な情報であるからである。
【００６７】
カウンタ表モジュール４０２では、一組のスレーブＩＤ信号６２１、ｖａｌｉｄ信号６２２、バスブリッジＩＤ信号６２３及びカウントアップ／カウントダウン信号６２４が入力されると、ｖａｌｉｄ信号６２２が有効である場合、スレーブＩＤ信号６２１のスレーブデバイスに対応するカウンタ６０１又はカウンタ６０２の値が、カウントアップ／カウントダウン信号６２４に応じてカウントアップ又はカウントダウンされる。この場合、スレーブＩＤ信号６２１のスレーブデバイスに対応するバスブリッジＩＤ保持ＦＦ６１１、６１２には、バスブリッジＩＤ信号６２３で示されるバスブリッジのＩＤが格納される。
【００６８】
以上のように、カウンタ表モジュール４０２は、カウンタ表更新モジュール４０１によって更新される。なお、カウンタ表モジュール４０２に２以上の組のスレーブＩＤ信号６２１、ｖａｌｉｄ信号６２２、バスブリッジＩＤ信号６２３及びカウントアップ／カウントダウン信号６２４が入力される場合、カウンタ表モジュール４０２の書き込みポート数を増加させる又は入力された信号毎にデータを書き込むタイミングをずらす等の方法によって対応可能である。
【００６９】
図７は、本発明の第１の実施形態のパス変更モジュール４０３の一例を示す図である。図７において、図４と同一の構成要素には同一の符号を付して重複する説明を適宜省略する。
【００７０】
パス変更モジュール４０３は、カウンタ表モジュール４０２からの入力信号７２４、アドレスデコーダ３１１からのスレーブＩＤ信号３５４、ＦＩＦＯ２３１、２３２からのＦＩＦＯの空きエントリ数及びバスブリッジＩＤ信号３９１を入力する。このパス変更モジュール４０３は、セレクタ７０１、７０２、推奨経路取得モジュール７１１を備える。
【００７１】
セレクタ７０１は、入力信号７２４と、スレーブＩＤ信号３５４とを入力する。入力信号７２４がスレーブＩＤ信号３５４のスレーブデバイスに対応している信号を含む場合、すなわち転送先のスレーブデバイスへのバスブリッジ２２１、２２２を介したトランザクションが現に存在している場合、入力信号７２４に含まれる当該スレーブデバイスのカウンタの値、バスブリッジのＩＤを、それぞれ利用エントリ数信号７２１、バスブリッジＩＤ信号７２２として出力する。
【００７２】
一方、入力信号７２４がスレーブＩＤ信号３５４のスレーブデバイスに対応している信号を含まない場合、すなわち転送先のスレーブデバイスへのバスブリッジ２２１、２２２を介したトランザクションが現に存在しない場合、利用エントリ数信号７２１を０以外の正の値（例えば１）として出力する。また、スレーブＩＤ信号３５４のスレーブデバイスのＩＤを、バスブリッジＩＤ信号７２２として出力する。
【００７３】
推奨経路取得モジュール７１１は、スレーブＩＤ信号３５４と、ＦＩＦＯの空きエントリ数及びバスブリッジＩＤ信号３９１とを入力し、入力されたこれらの信号に基づいて推奨経路を取得し、推奨経路信号７２３として出力する。図８を用いて詳細には後述する。
【００７４】
セレクタ７０２は、セレクタ７０１から出力された利用エントリ数信号７２１及びバスブリッジＩＤ信号７２２、並びに、推奨経路取得モジュール７１１から出力された推奨経路信号７２３を入力する。利用エントリ数信号７２１の値が０の場合、推奨経路信号７２３を出力信号３５７として出力する。一方、利用エントリ数信号７２１の値が０以外の場合、バスブリッジＩＤ信号７２２を出力信号３５７として出力する。
【００７５】
以上の構成により、パス変更モジュール４０３は、マスタデバイス２０１からスレーブデバイス２０５〜２０８へのトランザクションがバスブリッジ２２１、２２２を介し、且つ、このようなトランザクションが現に実行されている場合、バスブリッジＩＤ信号７２２を出力する。これにより、現に実行されているトランザクションの転送経路と同じ転送経路を選択することができる。
【００７６】
また、マスタデバイス２０１からスレーブデバイス２０５〜２０８へのトランザクションがバスブリッジ２２１、２２２を介し、且つ、このようなトランザクションが現に実行されていない場合、推奨経路信号７２３を出力する。これにより、バスブリッジ２２１又はバスブリッジ２２２を通過するデータ転送経路を動的に選択することができる。
【００７７】
さらに、当該トランザクションがバスブリッジ２２１、２２２を介さない場合、スレーブＩＤ信号３５４を出力する。これは、通過すべきバスブリッジ２２１、２２２を選択する必要がないためである。
【００７８】
図８は、本発明の第１の実施形態の推奨経路取得モジュール７１１の一例を示す図である。図８において、図７と同一の構成要素には同一の符号を付して重複する説明を適宜省略する。
【００７９】
推奨経路取得モジュール７１１は、アドレスデコーダ３１１からのスレーブＩＤ信号３５４、ＦＩＦＯ２３１、２３２からのＦＩＦＯの空きエントリ数及びバスブリッジＩＤ信号３９１を入力する。この推奨経路取得モジュール７１１は、スレーブＩＤ重み付けテーブル８０１、最大値選択モジュール８０２、加算器８１１、８１２を備える。
【００８０】
スレーブＩＤ重み付けテーブル８０１は、スレーブデバイス２０６〜２０８とバスブリッジ２２１、２２２毎に重み値を保持する（例えばスレーブデバイス２０６、バスブリッジ２２１の組の重みは３、スレーブデバイス２０６、バスブリッジ２２２の組の重みは１）。このスレーブＩＤ重み付けテーブル８０１は、スレーブＩＤ信号３５４が入力されると、バスブリッジ２２１、２２２の各々に対応する重みを示す信号８２１、８２２を出力する。
【００８１】
加算器８１１、８１２は、ＦＩＦＯ２３１、２３２毎に設けられる。加算器８１１は、バスブリッジ２２１に対応する重みを示す信号８２１と、ＦＩＦＯ２３１の空きエントリ数信号３９１とを加算して出力する（８３１）。一方、加算器８１２は、バスブリッジ２２２に対応する重みを示す信号８２２と、ＦＩＦＯ２３２の空きエントリ数信号３９１とを加算して出力する（８３２）。
【００８２】
最大値選択モジュール８０２は、加算器８１１、８１２の出力信号８３１、８３２と、各々に対応するバスブリッジＩＤ信号３９１を入力し、加算器８１１、８１２の出力信号８３１、８３２のうち最大値をとる出力信号を選択し、選択された出力信号に対応するバスブリッジのＩＤを出力する（７２１）。
【００８３】
以上の構成により、推奨経路取得モジュール７１１は、入力されたスレーブＩＤ信号３５４で示されるスレーブデバイスへのデータ転送経路が複数存在する場合、ＦＩＦＯの空きエントリ数及びバスブリッジＩＤ信号３９１に基づいて、現在利用することが推奨されるバスブリッジＩＤを出力する。これにより、推奨経路取得モジュール７１１は推奨経路を決定する。
【００８４】
なお、推奨経路取得モジュール７１１は、入力されたスレーブＩＤ信号３５４で示されるスレーブデバイスへのデータ転送経路がバスブリッジ２２１、２２２を含まない場合（スレーブデバイス２０５）、出力を不定値にしてもよい。
【００８５】
また、マスタデバイス２０３からスレーブデバイス２０８へのデータ転送経路を一方のバスブリッジ（例えばバスブリッジ２２１）に制限したい場合、スレーブＩＤ重み付けテーブル８０１の他のバスブリッジ２２２に対応する出力を十分に大きな負の値にすればよい。例えば、スレーブＩＤ重み付けテーブル８０１において、選択可能なバスブリッジ２２１の出力を０以上の値とし、選択不能なバスブリッジ２２２の出力をＦＩＦＯ２３２の空きエントリ数の最大値＋１のマイナス値とする。これにより、選択可能なバスブリッジ２２１に対する加算の結果は０以上になるのに対し、選択不能なバスブリッジ２２２に対する加算の結果はマイナスになる。よって、推奨経路取得モジュール７１１は、選択可能なバスブリッジ２２１を推奨経路と決定することができる。
【００８６】
なお、図８に示す例では、推奨経路取得モジュール７１１は、スレーブＩＤ重み付けテーブル８０１の出力信号８２１、８２２と、ＦＩＦＯ２３１、２３２からのＦＩＦＯの空きエントリ数及びバスブリッジＩＤ信号３９１との加算結果８３１、８３２に基づいて、推奨経路を決定しているが、この場合に限らない。例えば、バス２１２等の利用状況を把握して新たな経路を決定してもよい。また例えば、加算器８１１、８１２を用いずに、ＦＩＦＯ２３１、２３２からのＦＩＦＯの空きエントリ数及びバスブリッジＩＤ信号３９１に基づいて、空きエントリ数の多いＦＩＦＯ（ＦＩＦＯ２３１、２３２のいずれか）を推奨経路として決定してもよい。
【００８７】
図９は、本発明の第１の実施形態のシステムＬＳＩ（２）の動作を示すフローチャートである。図９を用いてシステムＬＳＩ（２）の動作を説明する。
【００８８】
まずＳ１において、マスタデバイス２０１〜２０３は、Ｉ／Ｆ制御モジュール３０１〜３０３、アドレスデコーダ３１１〜３１３を介して、経路選択モジュール３２１〜３２３に転送要求を通知する（Ｓ１）。Ｓ１では、アドレスデコーダ３１１〜３１３によるデコード結果（スレーブＩＤ）は、経路選択モジュール３２１〜３２３内のパス変更モジュール４０３に通知される。
【００８９】
次にＳ２において、パス変更モジュール４０３は、Ｓ１で要求された転送がバスブリッジ２２１、２２２を介したデータ転送であるか否かを、前述のスレーブＩＤに基づいて判定する（Ｓ２）。バスブリッジ２２１、２２２を介したデータ転送でない場合（Ｓ２でＮＯ）、パス変更モジュール４０３は、前述のスレーブＩＤ信号をセレクタ３６１に通知する。一方、バスブリッジ２２１、２２２を介したデータ転送である場合（Ｓ２でＹＥＳ）、Ｓ３に進む。
【００９０】
Ｓ３において、パス変更モジュール４０３は、カウンタ表モジュール４０２から前述のスレーブＩＤに対応するスレーブデバイスのエントリ（値）を読み出す（Ｓ３）。すなわち、Ｓ３では、前述のスレーブＩＤに対応するスレーブデバイスへのバスブリッジ２２１、２２２を介した別のトランザクションが現に存在しているか否かの情報を取得している。なお、Ｓ３において、カウンタ表モジュール４０２は、アービタ３３１、３３２からの入力信号２８１、２７１（図４参照）に基づいて更新されている。その後、パス変更モジュール４０３は、前述のスレーブＩＤに対応するスレーブデバイスに対して別のトランザクションが実行されているか否かを判定する（Ｓ４）。
【００９１】
Ｓ４においてＹＥＳの場合（Ｓ４でＹＥＳ）、パス変更モジュール４０３は、経路変更はできないと判断し、Ｓ６に進んで、現在利用中のバスブリッジ２２１、２２２を通過する経路を選択する（Ｓ６）。この場合、現在利用中のバスブリッジのＩＤを示す信号をセレクタ３６１に通知する。これにより、現在利用中の経路と同じ経路が利用され、当該経路上ではトランザクションは順番に処理される。そのため、トランザクションの順番が入れ替わらない。
【００９２】
一方、Ｓ４においてＮＯの場合（Ｓ４でＮＯ）、パス変更モジュール４０３は、経路変更可能であると判断し、Ｓ５に進んで、ＦＩＦＯ２３１、２３２の空き状況（例えば空きエントリ数）に応じて経路を動的に決定する（Ｓ５）。これにより、例えば空きエントリ数の多いＦＩＦＯ（ＦＩＦＯ２３１、２３２のいずれか）を通過する経路を選択することによって、バス間の転送速度を向上させることができる。
【００９３】
Ｓ７において、アービタ３３１はアービトレーションを行い（Ｓ７）、マスタデバイス２０１〜２０３の中の１つにバス２１１の使用権を与える。バス２１１の使用権を得たマスタデバイスは、Ｓ５又はＳ６で選択された経路を利用する。
【００９４】
（具体例）
図９に示す動作の具体例を、図２のマスタデバイス２０１が３つのトランザクション０、１、２の転送要求を順に通知する場合を例に説明する。
【００９５】
まず、本具体例の前提条件を説明する。３つのトランザクション０、１、２は、それぞれスレーブデバイス２０６へのデータ転送（トランザクション０）、スレーブデバイス２０７へのデータ転送（トランザクション１）、スレーブデバイス２０６へのデータ転送（トランザクション２）である。また、３つのトランザクション０、１、２の転送要求を通知する時点において、マスタデバイス２０１は、レスポンス待ち状態のトランザクションを保持しない。マスタデバイス２０１からスレーブデバイス２０６、２０７へのデータ転送経路は、バスブリッジ２２１を通過する経路と、バスブリッジ２２２を通過する経路とがある。ＦＩＦＯ２３１のエントリ数と、ＦＩＦＯ２３２のエントリ数とは、同一である。スレーブＩＤ重み付けテーブル８０１において、バスブリッジ２２１に対する重みと、バスブリッジ２２２に対する重みとは、同一の値である。
【００９６】
以上の前提条件において、まず、トランザクション０がバスブリッジ２２１を通過することが決まったとする。そうすると、トランザクション０はバスブリッジ２２１まで転送され、ＦＩＦＯ２３１に格納される。その結果、バスブリッジ２２２のＦＩＦＯ２３２の方が、ＦＩＦＯ２３１よりも空きエントリ数が多くなる。
【００９７】
このとき、トランザクション１が発生すると、経路選択モジュール２５１は、バスブリッジ２２２を介したデータ転送を選択する。これは、トランザクション０とトランザクション１とは転送先のスレーブデバイスが異なり、且つ、バスブリッジ２２２のＦＩＦＯ２３２の方がＦＩＦＯ２３１よりも空きエントリ数が多いためである。
【００９８】
以上のように、経路選択モジュール２５１は、トランザクションの転送先のスレーブデバイスが異なる場合には、空きエントリ数の多いバスブリッジ２２２をデータ転送経路として選択する。これにより、バス間の転送速度を向上させることができる。
【００９９】
一方、トランザクション０のレスポンスがマスタデバイス２０１に通知される前にトランザクション２が発生すると、経路選択モジュール２５１は、トランザクション０が通過するバスブリッジ２２１を介したデータ転送を選択する。これは、トランザクション０とトランザクション２とは、転送先のスレーブデバイスが同一であるためである。仮にこのような場合に、バスブリッジ２２２を介したデータ転送が選択されると、トランザクション２がトランザクション０よりも先にバス２１２の使用権を取得してしまい、トランザクションの順番が入れ替わる可能性がある。しかしながら、経路選択モジュール２５１は、トランザクション０と同様に、バスブリッジ１２１を介したデータ転送を選択することによって、トランザクションの順番が入れ替わる問題を防ぐことができる。
【０１００】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
【０１０１】
図１０は、本発明の第２の実施形態のシステムＬＳＩ（２）の基本構成例を示す図である。図１０において、前述の第１の実施形態（図２参照）と同一の構成要素には同一の符号を付して重複する説明を適宜省略する。
【０１０２】
図１０に示すシステムＬＳＩ（２）において、バス９１１は、アービタ２４１、Ｉ／Ｆ制御モジュール３０１〜３０３、アドレスデコーダ３１１〜３１３、経路選択モジュール９５１を含む。経路選択モジュール９５１は、経路変更禁止専用線９６１〜９６３を介して、マスタデバイス２０１〜２０３に接続される。これら経路変更禁止専用線９６１〜９６３の有効・無効の設定は、所定のプログラム（不図示）によって専用命令を用いて実行される。
【０１０３】
図１１は、本発明の第２の実施形態のバス９１１の構成の一例を示す図である。図１１において、図１０と同一の構成要素には同一の符号を付して重複する説明を適宜省略する。
【０１０４】
経路選択モジュール９５１は、マスタデバイス２０１〜２０３毎の経路選択モジュール１０２１〜１０２３を含む。経路選択モジュール１０２１〜１０２３は、それぞれアドレスデコーダ３１１〜３１３から、転送先のスレーブデバイス２０５〜２０８のＩＤを受け取る。また、ＦＩＦＯ２３１、２３２から、各ＦＩＦＯ２３１、２３２のエントリの利用状況（空き状況）の情報を取得する。その後、経路選択モジュール９５１は、アドレスデコーダ３１１〜３１３、ＦＩＦＯ２３１、２３２から取得した情報に基づいて、利用可能なデータの転送経路を判定・選択する。特に、経路変更禁止専用線９６１〜９６３の状態に応じて、推奨経路を選択するかデフォルトの経路を選択するか決定する。
【０１０５】
図１２は、本発明の第２の実施形態の経路選択モジュール１０２１の一例を示す図である。前述の第１の実施形態の経路選択モジュール３２１（図４参照）とは、カウンタ表更新モジュール４０１とカウンタ表モジュール４０２を備えない点、パス変更モジュール４０３の構成が若干変更されている点において相違する。図１２において、図１１と同一の構成要素には同一の符号を付して重複する説明を適宜省略する。また図１２では、経路選択モジュール１０２１の構成の一例を示しているが、経路選択モジュール１０２２、１０２３も同様の構成である。
【０１０６】
経路選択モジュール１０２１は、セレクタ１１０１、推奨経路取得モジュール１１１１、デフォルト経路テーブル１１１２、バスブリッジＩＤ判定モジュール１１１３を備える。
【０１０７】
推奨経路取得モジュール１１１１は、スレーブＩＤ信号３５４を入力し、入力されたスレーブＩＤ信号３５４に基づいて、推奨経路を示す推奨経路信号１１２２を出力する。図８の推奨経路取得モジュール７１１と同様であるため、ここでは詳細な説明を省略する。
【０１０８】
デフォルト経路テーブル１１１２は、スレーブＩＤ信号３５４を入力し、入力されたスレーブＩＤ信号３５４に基づいて、データ転送に利用するデフォルトのバスブリッジ２２１、２２２を示す信号１１２３を出力する。
【０１０９】
このデフォルト経路テーブル１１１２は、入力されたスレーブＩＤ信号３５４のスレーブデバイスへのトランザクションが、バスブリッジ２２１、２２２を介したトランザクションである場合、デフォルトのバスブリッジ２２１、２２２のＩＤを出力する。一方、バスブリッジ２２１、２２２を介したトランザクションでない場合、入力されたスレーブＩＤ信号３５４のスレーブデバイス自身のＩＤを出力する。
【０１１０】
バスブリッジＩＤ判定モジュール１１１３は、スレーブＩＤ信号３５４を入力し、入力されたスレーブＩＤ信号３５４のスレーブデバイスへのデータ転送が、バスブリッジ２２１、２２２を介したデータ転送であるか否かを判定する。判定結果は、出力信号１１２１として出力される。
【０１１１】
セレクタ１１０１は、推奨経路取得モジュールからの出力信号１１２２と、デフォルト経路テーブル１１１２からの出力信号１１２３とを入力する。そして、経路変更禁止専用線９６１の信号とバスブリッジＩＤ判定モジュール１１１３からの出力信号１１２１とに基づいて、出力信号３５７の値を決定する。経路変更禁止専用線９６１が有効又は出力信号１１２１がバスブリッジ２２１、２２２を介したデータ転送でないことを示す場合、デフォルト経路テーブル１１１２からの出力信号１１２３を出力する（３５７）。一方、その他の場合、推奨経路取得モジュール１１１１からの出力信号１１２２を出力する（３５７）。
【０１１２】
図１３は、本発明の第２の実施形態のシステムＬＳＩ（２）の動作を示すフローチャートである。図１３を用いてシステムＬＳＩ（２）の動作を説明する。
【０１１３】
まずＳ１１において、マスタデバイス２０１〜２０３は、Ｉ／Ｆ制御モジュール３０１〜３０３、アドレスデコーダ３１１〜３１３を介して、経路選択モジュール１０２１〜１０２３に転送要求を通知する（Ｓ１１）。Ｓ１１では、アドレスデコーダ３１１〜３１３によるデコード結果（スレーブＩＤ）も、経路選択モジュール１０２１〜１０２３に通知される。
【０１１４】
次にＳ１２において、経路選択モジュール１０２１〜１０２３は、経路変更禁止専用線９６１〜９６３が有効であるという条件及びＳ１１で要求された転送がバスブリッジ１２１、１２２を介さないデータ転送であるという条件のうちの少なくとも一方の条件を満たすか否かを、経路変更禁止専用線９６１〜９６３の状態及び前述のスレーブＩＤに基づいて判定する（Ｓ１２）。
【０１１５】
Ｓ１２においてＹＥＳの場合（Ｓ１２でＹＥＳ）、経路選択モジュール１０２１〜１０２３は、経路変更はできないと判断し、Ｓ１３に進んで、デフォルト経路テーブル１１１２より読み出された値を利用する（Ｓ１３）。これにより、デフォルトの経路が利用され、当該経路上ではトランザクションは順番に処理される。そのため、トランザクションの順番が入れ替わらない。
【０１１６】
一方、Ｓ１２においてＮＯの場合（Ｓ１２でＮＯ）、経路選択モジュール１０２１〜１０２３は、経路変更可能であると判断し、Ｓ１４に進んで、ＦＩＦＯ２３１、２３２の空き状況（例えば空きエントリ数）に基づいて経路を動的に決定する（Ｓ１４）。これにより、例えば空きエントリ数の多いＦＩＦＯ（ＦＩＦＯ２３１、２３２のいずれか）を通過する経路を選択することによって、バス間の転送速度を向上させることができる。
【０１１７】
Ｓ１５において、アービタ３３１は、アービトレーションを行い（Ｓ１５）、マスタデバイス２０１〜２０３の中の１つにバス２１１の使用権を与える。バス２１１の使用権を得たマスタデバイスは、Ｓ１３又はＳ１４で選択された経路を利用する。
【０１１８】
以上に示す処理により、本発明の第２の実施形態のシステムＬＳＩ（２）では、経路変更禁止専用線９６１〜９６３が有効の場合又はトランザクションがバスブリッジ２２１、２２２を介したデータ転送でない場合、常にデフォルトの経路が選択される。このように経路変更禁止専用線９６１〜９６３が有効の場合、経路を変更しないので、トランザクションの順番が入れ替わらなくなる。一方、経路変更禁止専用線９６１〜９６３が無効の場合、推奨経路が選択される。これにより、バス間の転送性能を向上させることができる。
【０１１９】
なお、経路変更禁止専用線９６１〜９６３は、プログラムから専用命令を用いて設定される。そのため、経路変更禁止専用線９６１〜９６３が無効となっているプログラム範囲において、トランザクションの入れ替わりが発生する可能性がある。しかしながら、当該範囲はトランザクションの入れ替わりが発生しても問題ないと指定されている範囲であるため、問題とはならない。
【０１２０】
（具体例）
図１３に示す動作の具体例を、図１０のマスタデバイス２０１が２つのトランザクション０、１の転送要求を順に通知する場合を例に説明する。
【０１２１】
まず、本具体例の前提条件を説明する。マスタデバイス２０１は、レスポンス待ち状態のトランザクションを保持しない。マスタデバイス２０１からスレーブデバイス２０６へのデータ転送経路は、バスブリッジ２２１を通過する経路と、バスブリッジ２２２を通過する経路とがある。ＦＩＦＯ２３１のエントリ数と、ＦＩＦＯ２３２のエントリ数とは、同一である。推奨経路取得モジュール１１１１において、バスブリッジ２２１に対する重みと、バスブリッジ２２２に対する重みとは、同一の値である。さらに、マスタデバイス２０１からスレーブデバイス２０６へのデフォルトの転送経路は、バスブリッジ２２２を通過する経路である。
【０１２２】
（経路変更禁止専用線９６１〜９６３が無効の場合）
以上の前提条件において、経路変更禁止専用線９６１〜９６３が無効の場合について説明する。経路変更禁止専用線９６１〜９６３が無効の場合、トランザクション０、１の転送経路は動的に決定される。すなわち、トランザクション０が発生したときに、例えばＦＩＦＯ２３１の空きエントリ数が３２で、且つ、ＦＩＦＯ２３２の空きエントリ数が３０である場合、トランザクション０の転送経路として、バスブリッジ２２１を通過する経路が選択される。
【０１２３】
次に、トランザクション０のレスポンスがマスタデバイス２０１に通知される前にトランザクション１が発生したときに、ＦＩＦＯ２３１の空きエントリ数が２５で、且つ、ＦＩＦＯ２３２の空きエントリ数が３２である場合、トランザクション１の転送経路として、ＦＩＦＯの空きエントリ数が多いバスブリッジ２２２を通過する経路が選択される。
【０１２４】
以上のように２つのデータ転送経路が利用されることによって、バス間の転送性能が向上する。
【０１２５】
（経路変更禁止専用線９６１〜９６３が有効の場合）
一方、上記の前提条件において、経路変更禁止専用線９６１〜９６３が有効の場合について説明する。経路変更禁止専用線９６１〜９６３が有効の場合、トランザクション０、１の転送経路として、デフォルトの経路が利用される。すなわち、トランザクション０が発生したときに、ＦＩＦＯ２３１の空きエントリ数が３２で、且つ、ＦＩＦＯ２３２の空きエントリ数が３０である場合、経路変更禁止専用線９６１〜９６３が無効の場合と同様に、トランザクション０の転送経路として、バスブリッジ２２１を通過する経路が選択される。
【０１２６】
次に、トランザクション０のレスポンスがマスタデバイス２０１に通知される前にトランザクション１が発生したときに、ＦＩＦＯ２３１の空きエントリ数が２５で、且つ、ＦＩＦＯ２３２の空きエントリ数が３２である場合、つまり他のマスタデバイス（例えばマスタデバイス２０２）によってバスブリッジ２２１が利用されている場合であっても、トランザクション１の転送経路として、マスタデバイス２０１からスレーブデバイス２０６へのデフォルトの経路であるバスブリッジ２２１を通過する経路が選択される。
【０１２７】
以上のように、経路変更禁止専用線９６１〜９６３を有効にすることによって、トランザクションの順番が入れ替わることを防ぐことができる。
【０１２８】
以上、本発明の各実施形態について説明したが、上記各実施形態は本発明の適用例の一つを示したものであり、本発明の技術的範囲を上記各実施形態の具体的構成に限定する趣旨ではない。本発明の要旨を逸脱しない範囲において種々変更可能である。
【０１２９】
例えば、図２の説明においては、２つのバスブリッジ２２１、２２２のそれぞれにＦＩＦＯ２３１、２３２が設けられる構成について説明したが、この場合には限らない。例えば、１つのバスブリッジ２２１に２つのＦＩＦＯ２３１、２３２が設けられる構成であってもよい。
【０１３０】
また例えば、図８の説明においては、スレーブＩＤ重み付けテーブル８０１と最大値選択モジュール８０２との間に、加算器８１１、８１２が設けられる構成について説明したが、この場合には限らない。例えば、加算器８１１、８１２の代わりに、乗算器、減算器が設けられる構成であってもよい。
【符号の説明】
【０１３１】
２  システムＬＳＩ
２０１〜２０４  マスタデバイス
２０５〜２０８  スレーブデバイス
２１１、２１２  バス
２２１、２２２  バスブリッジ
２３１、２３２  ＦＩＦＯ
２４１、２４２、３３１、３３２  アービタ
２５１、３２１〜３２３  経路選択モジュール
３１１〜３１３  アドレスデコーダ
３６１、３６２  セレクタ
４０１  カウンタ表更新モジュール
４０２  カウンタ表モジュール
４０３  パス更新モジュール
５０１、５０２  バスブリッジＩＤ判定モジュール
６０１、６０２  カウンタ
６１１、６１２  バスブリッジＩＤ保持ＦＦ
７０１、７０２  セレクタ
７１１  推奨経路取得モジュール
８０１  スレーブＩＤ重み付けテーブル
８０２  最大値選択モジュール
８１１、８１２  加算器
９５１、１０２１〜１０２３  経路選択モジュール
９６１〜９６３  経路変更禁止専用線
１１０１  セレクタ
１１１１  推奨経路取得モジュール
１１１２  デフォルト経路テーブル
１１１３  ブリッジＩＤ判定モジュール
【図１】
0005240619.tif 000002
【図２】
0005240619.tif 000003
【図３】
0005240619.tif 000004
【図４】
0005240619.tif 000005
【図５】
0005240619.tif 000006
【図６】
0005240619.tif 000007
【図７】
0005240619.tif 000008
【図８】
0005240619.tif 000009
【図９】
0005240619.tif 000010
【図１０】
0005240619.tif 000011
【図１１】
0005240619.tif 000012
【図１２】
0005240619.tif 000013
【図１３】
0005240619.tif 000014