(57)【特許請求の範囲】
【請求項１】
複数のマスタのそれぞれが、複数のスレーブのそれぞれに接続して、アウトスタンディングおよびアウトオブオーダーでアクセスするバス回路であって、
前記複数のマスタにそれぞれ接続される複数のマスタ用インターフェースと、
前記複数のスレーブにそれぞれ接続される複数のスレーブ用インターフェースと、
前記複数のマスタ用インターフェースと前記複数のスレーブ用インターフェース間の接続を切り替えるスイッチと、
データ転送において要求される時間に関係する設定項目を記憶するコンフィグレジスタと、
前記データ転送における時間経過を計測するタイマと、を備え、
前記スイッチは、前記タイマの計測した時間経過に基づいて前記複数のマスタ用インターフェースと前記複数のスレーブ用インターフェース間の接続を切り替えて、前記コンフィグレジスタに記憶された前記設定項目を満たすことを特徴とするバス回路。
【請求項２】
前記コンフィグレジスタは、目標転送時間、理想転送時間、設定実測転送時間、余裕度マージン、および遅れ待ち時間を設定項目として記憶しており、前記設定項目は、変更可能である請求項１記載のバス回路。
【請求項３】
各マスタ用インターフェースは、
転送要求パケットを受信すると、パケット受信時間として前記タイマが指している現在時間、前記コンフィグレジスタが記憶している前記目標転送時間を、転送要求パケットに付加し、ライト・アクセス時はデータパケットに前記パケット受信時間および前記転送目標時間を付加し、
転送要求応答を受け取ると、応答パケットに付加されている前記パケット受信時間、前記マスタ用インターフェースから前記スレーブ用インターフェースまでの第１実測転送時間、前記スレーブの実測応答時間、前記スレーブ用インターフェースから前記マスタ用インターフェースまでの第２実測転送時間を自動計算し、前記コンフィグレジスタが記憶している前記設定実測転送時間の値を計算結果に基づいて更新し、前記応答パケットを前記マスタへ転送する請求項２記載のバス回路。
【請求項４】
前記スレーブ用インターフェースは、
転送要求パケットまたは書込みデータパケットに付加される前記目標転送時間、前記マスタ用インターフェースでの前記パケット受信時間、および前記第１実測転送時間を計算して保持し、前記転送要求パケットを前記スレーブに送り、
前記スレーブから転送応答パケットを受け取ると、保持している前記転送要求パケットに付加されていた前記目標転送時間、前記マスタ用インターフェースでの前記パケット受信時間、計算した前記第１実測転送時間、および前記スレーブの実測応答時間を、前記転送応答パケットに付加し、マスタ側に転送する請求項３記載のバス回路。
【請求項５】
前記スレーブ用インターフェースは、
前記転送要求パケットに付加されていた前記目標転送時間に含まれるスレーブ目標応答時間と、前記コンフィグレジスタに記憶された設定されたスレーブ応答待ち時間が経過しても前記スレーブから応答が無い場合、スレーブ応答待ちエラーをマスタ側に返す請求項４記載のバス回路。
【請求項６】
前記スイッチは、
マスタまたはスレーブから前記スイッチまでパケットが到達する時間と、前記目標時間に対する余裕時間を計算し、前記余裕時間の小さい転送要求パケットを優先して後段のブロックへ転送し、
前記余裕時間の計算結果から、前記目標転送時間内の転送完了ができず、さらに前記遅れ待ち時間以上を経過していると判定した場合には、転送遅れ待ちエラーをマスタへ返して転送動作を打ち切る請求項１から５のいずれか１項記載のバス回路。
【請求項７】
前記スイッチは、
転送経路が複数ある場合、前記余裕時間、前記理想転送時間および前記余裕度マージン時間から、各設定値が許容する時間以内に転送を完了できる経路のうちで最も時間を要する経路を自動選択し、前記最も時間を要する経路へパケットを送る請求項２から６のいずれか１項記載のバス回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システムＬＳＩ内のバス回路に関する。
【背景技術】
【０００２】
現在のシステムＬＳＩで使用される内部バスプロトコルでは、アウトスタンディング(Outstanding)かつアウトオブオーダー(Out-Of-Order)のプロトコルが主流となっている。アウトスタンディングは、アクセス要求に対するバスあるいはバス・スレーブの応答を待つことなくデータ転送もしくは次の転送を開始できる技術である。アウトオブオーダーは、複数のアクセス要求があった場合に、要求順序と異なる順序で応答を返すことができる技術である。いずれの技術を実現するにも、バス回路内の適宜の位置に、パケットを一時的に保持するバッファを備える必要がある。
【０００３】
上記の内部バスプロトコルを使用するバス回路で、データ転送要求に対して、一定の帯域を確保し通信速度を保証することが求められている。これを実現するため、事前に優先度を決定する方法と、一定時間内でのバス転送量に応じて優先度を決定する方法が知られている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−３２３４７３号公報
【特許文献２】特開２００３−２５６３５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、事前に優先度を決定する方法では、バスの状況に応じて優先度を動的に変更できないため優先度が低く設定された転送要求はいつまでも完了できないという問題があった。
【０００６】
もう一つの一定時間内のバス転送量に基づく優先度決定方法では、一定時間内での転送量の少ない転送要求に対しては、対応できないという問題があった。
【０００７】
実施形態によれば、転送パケットごとに目標時間内での転送が完了するバス回路が実現される。
【課題を解決するための手段】
【０００８】
実施形態によれば、複数のマスタのそれぞれが、複数のスレーブのそれぞれに、アウトスタンディングおよびアウトオブオーダーでアクセスするように、複数のマスタと複数のスレーブを接続するバス回路が実現される。バス回路は、複数のマスタ用インターフェースと、複数のスレーブ用インターフェースと、スイッチと、コンフィグレジスタと、タイマと、を有する。複数のマスタ用インターフェースは、複数のマスタにそれぞれ接続される、複数のスレーブ用インターフェースは、複数のスレーブにそれぞれ接続される。スイッチは、複数のマスタ用インターフェースと複数のスレーブ用インターフェース間の接続を切り替える。コンフィグレジスタは、データ転送において要求される時間に関係する設定項目を記憶し、タイマは、データ転送における時間経過を計測する。スイッチは、タイマの計測した時間経過に基づいて、コンフィグレジスタに記憶された設定項目を満たすように、接続を切り替える。
【発明の効果】
【０００９】
実施形態のバス回路によれば、優先度が低く設定された転送要求や、一定時間内での転送量の少ない転送要求であっても、目標時間内で、転送を完了することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、複数のマスタのそれぞれが、複数のスレーブのそれぞれにアクセスするマスタ・スレーブ・システムの全体構成を示す図である。
【図２】図２は、アウトスタンディングおよびアウトオブオーダーを実現したシステムのバス回路の構成を示す図である。
【図３】図３は、図２に示したスイッチの簡易表現を説明する図である。
【図４】図４は、第１実施形態のマスタ・スレーブ・システムの全体構成およびシステムに含まれるバス回路の構成を示す図である。
【図５】図５は、第１実施形態のシステムにおいて、１個のマスタから１個のスレーブへの転送パケットの流れおよびパケットに付加される時間情報を示す図である。
【図６】図６は、スイッチにおけるマスタからスレーブへの転送に関係するスイッチユニットの部分を示す図である。
【図７】図７は、第２実施形態のマスタ・スレーブ・システムの全体構成およびシステムに含まれるバス回路の構成を示す図である。
【図８】図８は、第２実施形態における優先度制御の例を説明する図である。
【図９】図９は、２×２スイッチを２個使用して、３個のマスタと２個のスレーブを接続するバス回路を形成したマスタ・スレーブ・システムを示す図である。
【図１０】図１０は、第３実施形態のマスタ・スレーブ・システムの構成を示す図である。
【図１１】図１１は、複数経路を選択するスイッチの構成を示す図である。
【発明を実施するための形態】
【００１１】
まず、バス回路を含むマスタ・スレーブ・システムについて説明する。
図１は、複数のマスタのそれぞれが、複数のスレーブのそれぞれにアクセスするマスタ・スレーブ・システムの全体構成を示す図である。このようなシステムは、例えば、システムＬＳＩ内に設けられる。
【００１２】
図１に示すように、マスタ・スレーブ・システムは、複数のマスタ１０Ａ〜１０Ｃと、複数のスレーブ１１ａ〜１１ｅと、複数のマスタ１０Ａ〜１０Ｃと複数のスレーブ１１ａ〜１１ｅを接続するバス回路（接続回路:Interconnect）２０と、を有する。バス回路２０は、マスタのスレーブへのアクセス要求に応じて、マスタのバスをスレーブのバスに接続する。例えば、図１では、マスタ１０Ａがスレーブ１１ｅに、マスタ１０Ｂがスレーブ１１ａに、マスタ１０Ｃがスレーブ１１ｃに、アクセスする状態を示している。アクセスは、アクセス先が競合しない限り、並列に行なわれる。
【００１３】
これまでのシステムは、マスタがバス回路２０にアクセス要求を出力すると、バス回路２０は、アクセス要求のあったスレーブにアクセス可能な状態かを判定し、アクセス可能であれば、内部スイッチを制御して、マスタのバスとスレーブのバスを接続していた。例えば、マスタ１０Ａがスレーブ１０ａにアクセスしている状態で、マスタ１０Ｂがスレーブ１０ａへのアクセス要求を出すと、マスタ１０Ｂはマスタ１０Ａのスレーブ１０ａへのアクセスが終了するまで待たされる。この状態で、マスタ１０Ｃがスレーブ１０ａへのアクセス要求を出すと、マスタ１０Ｃはマスタ１０Ａおよびマスタ１０Ｂのスレーブ１０ａへのアクセスが終了するまで待たされる。もし、マスタ１０Ａのスレーブ１０ａへのアクセスが長時間を要する場合には、マスタ１０Ｂおよびマスタ１０Ｃは、たとえ少量のデータ転送のアクセスであっても、長時間待機させられることになり、システムの処理効率が低下する。
【００１４】
そこで、１アクセスでは１転送単位のデータを転送することが行われる。１転送単位は１パケットと呼ばれる。１パケット単位でアクセスを行うことにより、例えば、１パケットのアクセスであれば長時間待機させられることはなくなったが、依然待機状態になる場合が発生し、特にマスタの個数が増加した場合には待機時間が長くなる場合が起こり得る。マスタは、待機時間中に他の処理を行わないので、システムの処理効率が依然十分でなかった。
【００１５】
そこで、アウトスタンディング(Outstanding)と呼ばれる技術およびアウトオブオーダー(Out-Of-Order) と呼ばれる技術が提案され、システムＬＳＩで使用される内部バスプロトコルでは、これらの技術が主流となっている。これらの技術を適用したシステムでは、マスタは、スレーブへのライト・アクセス要求が発生すると、ライト・アクセス要求およびライト・データをパケット単位でバス回路に出力した後、スレーブおよびバス回路の応答を待たずに他の処理を開始できる。バス回路２０は、ライト・アクセス要求およびライト・データをバッファに記憶し、スレーブへの競合する他のアクセスとの調整を行い、スレーブにアクセス可能となると、ライト・アクセス要求にしたがって、ライト・データをスレーブに出力する。スレーブは、ライト・データを保存した後、処理終了の応答をバス回路に出力する。バス回路は、処理終了の応答を、マスタへのアクセス順を調整して適宜マスタに転送する。このようにして、マスタからスレーブへのライト・アクセス処理が終了する。
【００１６】
また、マスタでスレーブからのリード・アクセス要求が発生すると、マスタは、リード・アクセス要求をバス回路２０に出力する。バス回路２０は、リード・アクセス要求をバッファに記憶し、スレーブへの競合する他のアクセスとの調整を行い、スレーブにアクセス可能となると、リード・アクセス要求をスレーブに出力する。スレーブはリード・アクセス要求に対する応答およびデータをバス回路に出力する。バス回路は、スレーブからの応答およびデータを保持し、マスタへの競合する他のアクセスとの調整を行い、マスタにアクセス可能となると、データをマスタに出力する。
【００１７】
上記のシステムでは、バス回路が、複数のマスタからスレーブへのアクセス要求を調停してスレーブへのアクセスを行い、複数のスレーブからの応答を調停してマスタへのアクセスを行う。このため、マスタは、スレーブへのアクセス要求を出力した後では、スレーブからの応答を受けるまで待機する必要はなく、他の処理を実行でき、アウトスタンディング技術が実現できる。また、バス回路は、アクセス可能なスレーブまたはマスタに対してアクセスを行うように調停するので、マスタに対しては、要求順序と異なる順序で応答を返すことになり、アウトオブオーダー技術が実現される。
【００１８】
アウトスタンディングおよびアウトオブオーダーを実現するのは、バス回路内の適宜の位置に、パケットを一時的に保持するバッファを備える必要がある。
図２は、アウトスタンディングおよびアウトオブオーダーを実現したシステムのバス回路の構成を示す図である。図２では、記載を簡単にするために、２つのマスタ（Ａ）１１Ａおよびマスタ（Ｂ）１１Ｂと２つのスレーブ（ａ）１１ａおよびスレーブ（ｂ）１１ｂが接続される場合を示す。
【００１９】
バス回路２０は、マスタＡ用バスインターフェース（Ｉ／Ｆ）３０Ａと、マスタＢ用バスインターフェース（Ｉ／Ｆ）３０Ｂと、スレーブａ用バスインターフェース（Ｉ／Ｆ）４０ａと、スレーブｂ用バスインターフェース（Ｉ／Ｆ）４０ｂと、を有する。バス回路２０は、さらに、マスタＡ用バスＩ／Ｆ３０Ａ、マスタＢ用バスＩ／Ｆ３０Ｂ、スレーブａ用バスＩ／Ｆ４０ａおよびスレーブｂ用バスＩ／Ｆ４０ｂの接続を切り替えるスイッチ５０を有する。
【００２０】
マスタＡ用バスＩ／Ｆ３０Ａはマスタ１０Ａに、マスタＢ用バスＩ／Ｆ３０Ｂはマスタ１０Ｂに、スレーブａ用バスＩ／Ｆ４０ａはスレーブ１１ａに、スレーブｂ用バスＩ／Ｆ４０ｂはスレーブ１１ｂに、それぞれ接続される。各バスＩ／Ｆは、マスタまたはスレーブとの間で転送するデータを一時的に保持するバッファを有する。
【００２１】
スイッチ５０は、スイッチユニット５１ａ、５１ｂ、６１Ａおよび６１Ｂを有する。スイッチユニット５１ａは、マスタＡ用バスＩ／Ｆ３０Ａの出力とマスタＢ用バスＩ／Ｆ３０Ｂの出力のいずれかを選択して、スレーブａ用バスＩ／Ｆ４０ａに出力する。スイッチユニット５１ｂは、マスタＡ用バスＩ／Ｆ３０Ａの出力とマスタＢ用バスＩ／Ｆ３０Ｂの出力のいずれかを選択して、スレーブｂ用バスＩ／Ｆ４０ｂに出力する。スイッチユニット６１Ａは、スレーブａ用バスＩ／Ｆ４０ａの出力とスレーブｂ用バスＩ／Ｆ４０ｂの出力のいずれかを選択して、マスタＡ用バスＩ／Ｆ３０Ａに出力する。スイッチユニット６１Ｂは、スレーブａ用バスＩ／Ｆ４０ａの出力とスレーブｂ用バスＩ／Ｆ４０ｂの出力のいずれかを選択して、マスタＢ用バスＩ／Ｆ３０Ｂに出力する。
【００２２】
各スイッチユニットは、バッファと、セレクタと、を有する。具体的には、スイッチユニット５１ａは、バッファ５２ａと、セレクタ５３ａと、を有する。バッファ５２ａは、マスタＡ用バスＩ／Ｆ３０Ａの出力とマスタＢ用バスＩ／Ｆ３０Ｂの出力のうち、スレーブ１１ａに対するライト・アクセス要求の転送データを一時的に保持する。セレクタ５３ａは、バッファ５２ａに保持されたマスタＡ用バスＩ／Ｆ３０Ａの出力とマスタＢ用バスＩ／Ｆ３０Ｂの出力のいずれかを選択して、スレーブａ用バスＩ／Ｆ４０ａに出力する。
【００２３】
同様に、スイッチユニット５１ｂは、バッファ５２ｂと、セレクタ５３ｂと、を有する。バッファ５２ｂは、マスタＡ用バスＩ／Ｆ３０Ａの出力とマスタＢ用バスＩ／Ｆ３０Ｂの出力のうち、スレーブ１１ｂに対するライト・アクセス要求の転送データを一時的に保持する。セレクタ５３ｂは、バッファ５２ｂに保持されたマスタＡ用バスＩ／Ｆ３０Ａの出力とマスタＢ用バスＩ／Ｆ３０Ｂの出力のいずれかを選択して、スレーブｂ用バスＩ／Ｆ４０ｂに出力する。
【００２４】
スイッチユニット６１Ａは、バッファ６２Ａと、セレクタ６３Ａと、を有する。バッファ６２Ａは、スレーブａ用バスＩ／Ｆ４０ａの出力とスレーブｂ用バスＩ／Ｆ４０ｂの出力のうち、マスタ１０Ａのリード・アクセス要求に対する応答の転送データを一時的に保持する。セレクタ６３Ａは、バッファ６２Ａに保持されたスレーブａ用バスＩ／Ｆ４０ａの出力とスレーブｂ用バスＩ／Ｆ４０ｂの出力のいずれかを選択して、マスタＡ用バスＩ／Ｆ３０Ａに出力する。
【００２５】
スイッチユニット６１Ｂは、バッファ６２Ｂと、セレクタ６３Ｂと、を有する。バッファ６２Ｂは、スレーブａ用バスＩ／Ｆ４０ａの出力とスレーブｂ用バスＩ／Ｆ４０ｂの出力のうち、マスタ１０Ｂのリード・アクセス要求に対する応答の転送データを一時的に保持する。セレクタ６３Ｂは、バッファ６２Ｂに保持されたスレーブａ用バスＩ／Ｆ４０ａの出力とスレーブｂ用バスＩ／Ｆ４０ｂの出力のいずれかを選択して、マスタＢ用バスＩ／Ｆ３０Ｂに出力する。
【００２６】
なお、各バスＩ／Ｆは、マスタまたはスレーブとの間で転送するデータを一時的に保持するバッファを有するが、スイッチ５０内にバッファを設ける場合にはバスＩ／Ｆ内のバッファは省略可能である。図２の例では、後述するようにスイッチ５０内の入力側にバッファが設けられるので、バスＩ／Ｆ３０Ａおよび３０Ｂのマスタからスレーブへの転送バッファ、およびバスＩ／Ｆ４０ａおよび４０ｂのスレーブからマスタへの転送バッファは省略可能である。また、各バスＩ／Ｆにバッファを設ける場合には、後述するように、スイッチ５０内のバッファを省略することが可能である。
【００２７】
図３は、図２に示したスイッチ５０の簡易表現を説明する図である。
図３の（Ａ）に示すスイッチ５０は、マスタＡ用バスＩ／Ｆ３０Ａ、マスタＢ用バスＩ／Ｆ３０Ｂ、スレーブａ用バスＩ／Ｆ４０ａおよびスレーブｂ用バスＩ／Ｆ４０ｂ間のデータ転送における接続を切り替える。このようなスイッチ５０を、図３の（Ｂ）に示すように表す。具体的には、マスタＡ用バスＩ／Ｆ３０Ａと接続されるポートをポートＡで、マスタＢ用バスＩ／Ｆ３０Ｂと接続されるポートをポートＢで、表す。また、スレーブａ用バスＩ／Ｆ４０ａと接続されるポートをポートａで、スレーブｂ用バスＩ／Ｆ４０ｂと接続されるポートをポートｂで、表す。
【００２８】
なお、バス回路に接続されるマスタの個数およびスレーブの個数は限定されず、３以上であってもよい。例えば４個のマスタおよび５個のスレーブを接続する場合には、バス回路は、４個のマスタ用バスＩ／Ｆと、５個のスレーブ用バスＩ／Ｆと、スイッチと、を有する。この場合、スイッチは、ポートＡ、Ｂ、ＣおよびＤと、ポートａ、ｂ、ｃ、ｄおよびｅを有する。さらに、これに応じてスイッチ５０に設けられるスイッチユニットの個数も９個に増加し、マスタからスレーブへの転送経路のセレクタは４入力１出力に、スレーブからマスタへの転送経路のセレクタは５入力１出力に、する。
【００２９】
上記の内部バスプロトコルを使用するバス回路で、データ転送要求に対して、一定の帯域を確保し通信速度を保証する技術(QoS)が求められている。これを実現する方法として、事前に優先度を決定する方法と、一定時間内でのバス転送量に応じて優先度を決定する方法が知られている。しかし、前述のように、いずれの方法でも、バスの状況に応じて上記の要求を満たすことが難しかった。以下に説明する、アウトスタンディングかつアウトオブオーダーのバスプロトコルを実行する実施形態のバス回路を含むシステムでは、パケットの一定時間内での転送完了を実現する。
【００３０】
図４は、第１実施形態のマスタ・スレーブ・システムの全体構成およびシステムに含まれるバス回路の構成を示す図である。第１実施形態のマスタ・スレーブ・システムは、アウトスタンディングかつアウトオブオーダーのバスプロトコルを実行する。
図４に示すように、第１実施形態のマスタ・スレーブ・システムは、２個のマスタ１０Ａおよび１０Ｂと、３個のスレーブ１１ａ〜１１ｃと、バス回路２０と、を有する。
【００３１】
バス回路２０は、マスタＡ用バスインターフェース（Ｉ／Ｆ）３０Ａと、マスタＢ用バスインターフェース（Ｉ／Ｆ）３０Ｂと、を有する。バス回路２０は、スレーブａ用バスインターフェース（Ｉ／Ｆ）４０ａと、スレーブｂ用バスインターフェース（Ｉ／Ｆ）４０ｂと、スレーブｃ用バスインターフェース（Ｉ／Ｆ）４０ｃと、を有する。バス回路２０は、さらに、スイッチ５０と、コンフィグレジスタ７１と、タイマ７２と、を有する。マスタＡ用バスＩ／Ｆ３０Ａ、マスタＢ用バスＩ／Ｆ３０Ｂ、スレーブａ用バスＩ／Ｆ４０ａ、スレーブｂ用バスＩ／Ｆ４０ｂおよびスレーブｃ用バスＩ／Ｆ４０ｃは、これまで説明したものと同様の構成を有する。
【００３２】
図４に示すように、コンフィグレジスタ７１と、タイマ７２と、を有する。コンフィグレジスタ７１は、データ転送において要求される時間に関係する設定項目を記憶する。また、タイマ７２は、データ転送における時間経過を計測する。コンフィグレジスタ７１とタイマ７２の時間情報は、マスタＡ用バスＩ／Ｆ３０Ａ、マスタＢ用バスＩ／Ｆ３０Ｂ、スレーブａ用バスＩ／Ｆ４０ａ、スレーブｂ用バスＩ／Ｆ４０ｂ、スレーブｃ用バスＩ／Ｆ４０ｃおよびスイッチ５０に供給される。マスタＡ用バスＩ／Ｆ３０Ａ、マスタＢ用バスＩ／Ｆ３０Ｂ、スレーブａ用バスＩ／Ｆ４０ａ、スレーブｂ用バスＩ／Ｆ４０ｂおよびスレーブｃ用バスＩ／Ｆ４０ｃは、転送パケットに対して、時間情報を付加して転送する。スイッチ５０は、時間情報から、各バス構成要素における転送到達時間をもとに転送要求の選択を動的に変化させ、転送パケットごとの目標時間内での転送完了を実現する。
【００３３】
まず、コンフィグレジスタ７１が記憶する設定項目を説明する。
コンフィグレジスタ７１は、転送処理の時間に関係する目標転送時間T_target、理想転送時間T_ideal、実測転送時間T_actual、余裕度マージン時間T_slackmargin、遅れ待ち時間T_wait、および転送エラー情報Err_infoの項目が設定されている。設定項目は、システム全体またはバス回路２０を制御するＣＰＵなどの制御部から変更可能である。
【００３４】
（目標転送時間T_target）
目標転送時間T_targetは、１パケットがマスタとスレーブ間を転送される時の目標の転送時間であり、以下の値が設定される。
マスタ−スレーブ間(以下、M2S)目標転送時間T_target_m2s：マスタからスレーブへのアクセス要求の転送に要する目標時間である。
スレーブ目標応答時間T_target_slvresp：スレーブがアクセス要求を受け取ってから応答を返すまでに要する目標時間である。
スレーブ−マスタ間(以下、S2M)目標転送時間T_target_s2m：スレーブからマスタへのアクセス応答の転送に要する目標時間である。
【００３５】
（理想転送時間T_ideal）
理想転送時間T_idealは、１パケットがマスタとスレーブ間を転送される時、バス経路中でバス競合等による遅延が発生しない理想の転送時間であり、以下の値が設定される。
M2S理想転送時間T_ideal_m2s
スレーブ理想応答時間T_ideal_slvresp
S2M理想転送時間T_ideal_s2m
【００３６】
（実測転送時間T_actual）
実測転送時間T_actualは、過去の転送における１パケットがマスタとスレーブ間を転送した時の実測の転送時間として以下の値を設定する。なお、初期値は、理想転送時間T_idealを設定する。
M2S実測転送時間T_m2s
スレーブ実測応答時間T_slvresp
S2M実測転送時間T_s2m
【００３７】
（余裕度マージン時間T_slackmargin）
余裕度マージン時間T_slackmarginは、経路が複数ある場合、各経路に与えるマージン値を設定する。
【００３８】
（遅れ待ち時間T_wait）
遅れ待ち時間T_waitは、１パケットがスイッチ５０とスレーブ用バスＩ／Ｆにおいて目標時間に遅れが生じた時、スイッチ５０とスレーブ用バスＩ／Ｆが許容可能な転送遅れの待ち時間として以下の値を設定する。
M2S Switch遅れ待ち時間T_wait_m2s
スレーブ遅れ待ち時間T_wait_slv
S2M Switch遅れ待ち時間T_wait_s2m
【００３９】
（転送エラー情報Err_info）
転送エラー情報Err_infoは、１パケットが転送される時、１パケットの転送が、転送成功、又はスイッチ転送遅れ待ちエラー発生、またはスレーブ応答待ちエラー発生、転送エラー発生であったかを設定する。
【００４０】
図５は、第１実施形態のシステムにおいて、転送パケットの流れを示す図であり、マスタ（Ａ）１０Ａとスレーブ（ａ）１０ａの間のパケット転送を示している。また、図５では、転送に伴ってパケットに付加される時間情報が一緒に示されている。
【００４１】
まず、マスタがスレーブにライト・アクセス要求を出し、マスタからスレーブに転送要求パケットが流れる場合の流れを説明する。
【００４２】
（１）マスタ用バスＩ／Ｆ３０Ａは、マスタ１０Ａから発行された転送要求パケットを受け取ると、パケット受信時間T_startとコンフィグレジスタ７１に設定してある目標転送時間T_targetの情報を転送要求パケットに付加し、スイッチ５０へ送る。パケット受信時間T_startは、タイマ７２が示している現在時間である。転送要求パケットには、要求先（アドレスなどのスレーブ識別情報)、ライトデータ、および転送タイプ・サイズなどバス制御情報が、含まれる。
【００４３】
（２）スイッチ５０は、マスタ用バスＩ／Ｆ３０Ａから転送要求パケットを受け取ると、経路決定と優先度制御を行い、転送要求パケットをスレーブ用バスＩ／Ｆ４０ａに送る。
【００４４】
（３）スレーブ用バスＩ／Ｆ４０ａは、スイッチ５０から転送要求パケットを受け取ると、マスタ用バスＩ／Ｆ３０Ａが付加した情報(T_start、T_target)を内部バッファに保存する。また、スレーブ用バスＩ／Ｆ４０ａは、マスタ用バスＩ／Ｆ３０Ａからスレーブ用バスＩ／Ｆ４０ａへの実転送時間(=M2S実測転送時間T_m2s)を計算し、T_startおよびT_targetを保存する。M2S実測転送時間T_m2sは、以下の式で計算される。
【００４５】
M2S実測転送時間T_m2s=現在時間T_current−パケット受信時間T_start
ここで、T_currentは、 計算時点でタイマ７２が示している時間である。
【００４６】
マスタ１０Ａの発行した元の転送要求パケットは、スレーブ１０ａへ送る。
【００４７】
次に、マスタからスレーブへのリード・アクセス要求に対して、リードデータを含むスレーブからの転送応答パケットの、スレーブからマスタへの転送の流れを説明する。
【００４８】
（４）スレーブ用バスＩ／Ｆ４０ａは、スレーブ１０ａから、応答先（マスタ識別情報）、ＯＫ／エラー応答、リードデータ等を含む転送応答パケットを受け取るとスレーブ実測応答時間T_slvrespを、次の式で計算する。
【００４９】
スレーブ実測応答時間T_slvresp＝
現在時間T_current−パケット受信時間T_start−M2S実測転送時間T_m2s
【００５０】
そして、スレーブ実測応答時間T_slvrespと、（３）で保存した転送要求パケットの付加情報(T_start、T_target)と、M2S実測転送時間T_m2sと、を転送応答パケットに付加し直し、スイッチ５０へ送る。
【００５１】
（５）スイッチ５０は、スレーブ用バスＩ／Ｆ４０ａから転送応答パケットを受け取ると、転送応答パケットをマスタ用バスＩ／Ｆ３０Ａへ送る。
【００５２】
（６）マスタ用バスＩ／Ｆ３０Ａは、スイッチ５０から転送応答パケットを受け取ると、スレーブ用バスＩ／Ｆ４０ａからマスタ用バスＩ／Ｆ３０Ａまでの実転送時間(=S2M実測転送時間T_s2m)を、次の式で計算する。
S2M実測転送時間T_s2m＝現在時間T_current−パケット受信時間T_start
−M2S実測転送時間T_m2s−スレーブ実測応答時間T_slvresp
【００５３】
ここで、現在時間T_currentは、計算時点でタイマ７２が指している時間である。
そして、コンフィグレジスタ７１は、M2S実測転送時間T_m2s、スレーブ実測応答時間T_slvresp、S2M実測転送時間T_s2mを、コンフィグレジスタ７１の実測転送時間T_actualの値に更新する。さらに、コンフィグレジスタ７１は、転送エラー情報Err_infoの値を、マスタ用バスＩ／Ｆ３０Ａが転送応答パケットを受信したときの情報に更新する。
【００５４】
スレーブ１０ａの発行した元の転送応答パケットは、マスタ１０Ａへ送る。
【００５５】
以上説明したように、バス回路におけるパケット転送の際には、時間情報が付加される。第１実施形態では、この時間情報に基づいて、アクセスの優先順位を制御する。なお、上記の例では、マスタ１０Ａとスレーブ１０ｂの間のパケット転送について説明したが、他のマストとスレーブの間のパケット転送でも同様に時間情報が付加される。
【００５６】
次に、複数のマスタから１つのスレーブへの転送要求が競合した場合に、スイッチ５０が、上記の時間情報を利用して、転送パケットごとの目標時間内での転送完了を実現するように、スレーブに出力する転送要求の優先度を制御する処理を説明する。
【００５７】
図６は、スイッチ５０におけるマスタからスレーブへの転送に関係するスイッチユニットの部分を示す図である。図示していないが、スレーブからマスタへの転送に関係するスイッチユニットの部分も存在する。
【００５８】
スイッチ５０は、スレーブａ用バスＩ／Ｆ４０ａに対応したセレクタ５３ａ、入力側バッファ、出力側バッファ５５ａおよび優先度スイッチ制御部５４ａの組を有する。さらに、スイッチ５０は、スレーブｂ用バスＩ／Ｆ４０ｂに対応したセレクタ５３ｂ、入力側バッファ、出力側バッファ５５ｂおよび優先度スイッチ制御部５４ｂの組を有する。また、スイッチ５０は、スレーブｃ用バスＩ／Ｆ４０ｃに対応したセレクタ５３ｃ、入力側バッファ、出力側バッファ５５ｃおよび優先度スイッチ制御部５４ｃの組と、を有する。
【００５９】
スレーブａ用バスＩ／Ｆ４０ａに対応した入力側バッファは、マスタＡ用バスＩ／Ｆ３０Ａからのパケットを保持するバッファ５２Ａａと、マスタＢ用バスＩ／Ｆ３０Ｂからのパケットを保持するバッファ５２Ｂａと、を有する。バッファ５２Ａａおよびバッファ５２Ｂａは、パケット単位で転送要求に関係するデータおよび情報を一時的に保持する。他の入力側バッファも同様である。
【００６０】
出力側バッファ５５ａは、セレクタ５３ａからスレーブａ用バスＩ／Ｆ４０ａに出力するパケットを一時的に保持する。出力側バッファ５５ａは、スレーブａ用バスＩ／Ｆ４０ａに設けられたバッファで代替することが可能である。他の出力側バッファも同様である。
【００６１】
優先度スイッチ制御部５４ａは、バッファ５２Ａａおよびバッファ５２Ｂａに保持されたパケットの情報に応じて、セレクタ５３ａがスレーブａ用バスＩ／Ｆ４０ａに出力するパケットの選択を制御する。
【００６２】
次に、優先度制御の具体的な処理について説明する。
スイッチ５０は、前段のマスタ用ＡバスＩ／Ｆ３０Ａおよびマスタ用ＡバスＩ／Ｆ３０Ｂから転送パケットを受け取ると、いずれのスレーブへの転送パケットであるかに応じて、対応する入力側バッファに記憶する。例えば、マスタ１０Ａからスレーブａへのパケットであれば、入力側バッファ５２Ａａに、マスタ１０Ａからスレーブｂへのパケットであれば、入力側バッファ５２Ａｂに、それぞれ記憶される。また、マスタ１０Ｂからスレーブａへのパケットであれば、入力側バッファ５２Ｂａに、マスタ１０Ｂからスレーブｃへのパケットであれば、入力側バッファ５２Ｂｃに、それぞれ記憶される。マスタＡ用バスＩ／Ｆ３０ＡのバスとマスタＢ用バスＩ／Ｆ３０Ｂのバスは独立しているので、同じスレーブへの転送の場合でも、待ち時間は発生しない。したがって、マスタ１０ＡおよびマスタＢは、スレーブの状態にかかわらず、バス回路２０にアクセス要求を出力するだけでよい。
【００６３】
以上のようにして、入力側バッファにマスタ１０Ａおよびマスタ１０Ｂからのパケットが、転送先のスレーブの入力側バッファに記憶される。以下、優先度スイッチ制御部５４ａの動作について説明する。
【００６４】
入力側バッファ５２Ａａおよび５２Ｂａに記憶されているパケットには、T_startおよびT_targetが付加されており、タイマ７２は現在時間T_currentを出力しており、コンフィグレジスタ７１には遅れ待ち時間T_waitが設定されている。優先度スイッチ制御部５４は、これらの時間情報から、以下のように、余裕時間T_slackと総余裕時間T_slack_totalを計算する。
【００６５】
消費時間T_consume＝現在時間T_current−パケット受信時間T_start
余裕時間T_slack＝目標転送時間T_target_m2s−消費時間T_consume
総余裕時間T_slack_total＝余裕時間T_slack＋スイッチでの待ち時間T_wait_m2s
【００６６】
優先度スイッチ制御部５４ａは、入力側バッファ５２Ａａおよび５２Ｂａに記憶されているパケットのうちで、余裕時間T_slackが最も少ない（この場合は２つなので、少ない方の）パケットを、セレクタ５３ａが選択して出力するように制御する。出力されたパケットは、出力側バッファ５５ａに記憶されたのち、スレーブａ用バスＩ／Ｆ４０ａに出力される。
【００６７】
スイッチ５０は、同時に、タイマ７２の計測単位時間ごとに各転送待ちパケットの総余裕時間T_slack_totalを減じていき、総余裕時間T_slack_total＜０以下の条件が成り立った場合には該当のパケットを転送待ちバッファ内から削除して転送を打ち切る。そして、スイッチ５０は、転送要求元マスタへエラー情報Err_infoを付加したエラー応答パケットを生成して送る。
【００６８】
スイッチ５０は、その後、バスＩ／Ｆ４０ａがパケット受信可能状態になると、格納順に、すなわち優先度の高いパケットを、バスＩ／Ｆ４０ａに送る。
以上の動作は、他のスレーブｂおよびｃへの転送パケットについても同様である。
【００６９】
スレーブからマスタへの転送の場合には、スイッチの入力側バッファに記憶されているパケットには、さらにM2S実測転送時間T_m2s、スレーブ実測応答時間T_slvrespが付加されている。さらに、コンフィグレジスタ７１には、目標転送時間T_target_s2mが設定されている。優先度スイッチ制御部は、これらの時間情報から、以下のように、余裕時間T_slackと総余裕時間T_slack_totalを計算する。
【００７０】
消費時間T_consume＝現在時間T_current−パケット受信時間T_start
−M2S実測転送時間T_m2s−スレーブ実測応答時間T_slvresp
余裕時間T_slack＝目標転送時間T_target_s2m−消費時間T_consume
総余裕時間T_slack_total＝余裕時間T_slack+Switch待ち時間T_wait_s2m
【００７１】
他の動作は上記と同じなので、説明は省略する。
以上のようにして、目標時間内での転送を完了させるための余裕時間が少ないパケットを優先して転送することになり、転送パケットごとに目標時間内での転送を完了する。
【００７２】
第１実施形態のバス回路２０は、スイッチ５０にバッファを設けたが、各バスＩ／Ｆに設けたバッファを利用することも可能である。次に説明する第２実施形態のバス回路２０は、各バスＩ／Ｆに設けたバッファを利用する。
【００７３】
図７は、第２実施形態のマスタ・スレーブ・システムの全体構成およびシステムに含まれるバス回路５０の構成を示す図である。第２実施形態のマスタ・スレーブ・システムは、２個のマスタ１０Ａおよび１０Ｂと２個のスレーブ１１ａおよび１１ｂを接続し、アウトスタンディングかつアウトオブオーダーのバスプロトコルを実行する。接続するマスタの個数およびスレーブの個数は適宜設定できるが、ここでは説明を簡単にするために、２個のマスタと２個のスレーブを接続した例を示す。
【００７４】
なお、図７は、マスタからスレーブへのパケット転送に関係する部分のみを示しているが、スレーブからマスタへのパケット転送に関係する同様の部分を有するが、図示は省略している。スレーブからマスタへのパケット転送は、マスタからスレーブへのパケット転送とは独立して類似の動作で行われ、第１実施例で説明したように復路の時間情報が付加されることが異なる。
【００７５】
図７に示すように、各バスＩ／Ｆ３０Ａ、３０Ｂ、４０ａおよび４０ｂは、転送されるパケットを一時的に記憶するバッファを有する。
【００７６】
スイッチ５０は、分岐器６５および６６と、セレクタ６７および６８と、を有する。分岐器６５は、バスＩ／Ｆ３０Ａからの転送パケットを、転送先に応じてセレクタ６７および６８のいずれかに出力するように選択する。分岐器６６は、バスＩ／Ｆ３０Ｂからの転送パケットを、転送先に応じてセレクタ６７および６８のいずれかに出力するように選択する。セレクタ６７は、分岐器６５からの転送パケットと分岐器６６からの転送パケットを、優先度に応じて選択してバスＩ／Ｆ４０ａに出力する。セレクタ６８は、分岐器６５からの転送パケットと分岐器６６からの転送パケットを、優先度に応じて選択してバスＩ／Ｆ４０ｂに出力する。
【００７７】
スイッチ５０は、転送先選択部６１と、転送時間計算部６２と、優先度制御部６３と、をさらに有する。転送先選択部６１は、バスＩ／Ｆ３０Ａおよび３０Ｂ内のバッファに記憶されたパケットの情報およびコンフィグレジスタ７１の情報から転送先を判定し、分岐器６５および６６を制御する。転送時間計算部６２は、バスＩ／Ｆ３０Ａおよび３０Ｂ内のバッファに記憶されたパケットの情報、コンフィグレジスタ７１の情報およびタイマ７２の出力する時間情報から、第１実施形態で説明した転送時間に関係する情報を計算する。
【００７８】
優先度制御部６３は、転送時間計算部６２の計算した時間情報に基づいて、第１実施形態と同様の制御を行い、目標時間内での転送を完了させるための余裕時間が少ないパケットを優先して転送する。これにより、転送パケットごとに目標時間内での転送を完了する。
【００７９】
図８は、第２実施形態における優先度制御の例を説明する図である。
例えば、T_current＝22において、スイッチ５０が、バスＩ／Ｆ３０ＡからバスＩ／Ｆ４０ａに向かう転送要求パケットＲＰ０と、バスＩ／Ｆ３０ＢからバスＩ／Ｆ４０ａに向かう転送要求パケットＲＰ１を、同時に受信した場合を考える。ＲＰ０はT_start0＝１８、T_target0_m2s＝６であるためT_slack＝２となり、ＲＰ１はT_start1＝１９、T_target1_m2s＝４であるためT_slack＝１となる。したがって、T_slackが小さいのはＲＰ１であるため、ＲＰ０よりもＲＰ１の優先度が高くなるように出力され、バスＩ／Ｆ４０ａのバッファには、ＲＰ１がＲＰ０よりも先に記憶される。バスＩ／Ｆ４０ａは、ＲＰ１がＲＰ０よりも先にスレーブ１１ａに出力されることになる。
【００８０】
第１実施形態のバス回路２０は、図４に示すように、２個のマスタと３個のスレーブの接続を切り替えるスイッチを使用した。接続されるマスタおよびスレーブの個数を増加させることは可能であるが、その分スイッチは複雑になる。そこで、第２実施形態のスイッチ５０のように、２個のマスタと２個のスレーブの接続を切り替える２×２スイッチを基本スイッチとして、複数の基本スイッチを使用することにより、接続されるマスタ数およびスレーブの増加に対処することが考えられる。次に説明する第３実施形態のマスタ・スレーブ・システムは、２×２スイッチを複数個使用して、３個のマスタと２個のスレーブを接続するバス回路を形成する。
【００８１】
図９は、２×２スイッチを２個使用して、３個のマスタと２個のスレーブを接続するバス回路を形成したマスタ・スレーブ・システムを示す図である。
【００８２】
図９に示すように、マスタ・スレーブ・システムは、３個のマスタ１０Ａ、１０Ｂおよび１０Ｃと、２個のスレーブ１１ａおよび１１ｂと、バス回路２０と、を有する。バス回路２０は、３個のマスタ１０Ａ、１０Ｂおよび１０Ｃと、２個のスレーブ１１ａおよび１１ｂの接続し、アウトスタンディングかつアウトオブオーダーのバスプロトコルを実行する。
【００８３】
バス回路２０は、マスタＡ用バスＩ／Ｆ３０Ａと、マスタＢ用バスＩ／Ｆ３０Ｂと、マスタＣ用バスＩ／Ｆ３０Ｃと、スレーブａ用バスＩ／Ｆ４０ａと、スレーブｂ用バスＩ／Ｆ４０ｂと、２個のスイッチ８１および８２と、を有する。バス回路２０は、コンフィグレジスタ７１と、タイマ７２と、をさらに有する。コンフィグレジスタ７１およびタイマ７２は、第１実施形態と同様のものである。マスタＡ用バスＩ／Ｆ３０Ａと、マスタＢ用バスＩ／Ｆ３０Ｂと、マスタＣ用バスＩ／Ｆ３０Ｃと、スレーブａ用バスＩ／Ｆ４０ａと、スレーブｂ用バスＩ／Ｆ４０ｂは、第２実施形態と同様に、バッファを有する。スイッチ８１および８２は、図７に示した第２実施形態のスイッチと同様のものである。
【００８４】
図９のマスタ・スレーブ・システムにおいて、例えば、マスタ１０Ａからスレーブ１１ａへのパケットの転送は、マスタＡ用バスＩ／Ｆ３０Ａ、スイッチ８１のポートＡとａ、スレーブａ用バスＩ／Ｆ１１ａ、スレーブ１１ａの経路で行う。マスタ１０Ｃからスレーブ１１ａへのパケットの転送は、マスタＣ用バスＩ／Ｆ３０Ｃ、スイッチ８２のポートＢとａ、スイッチ８１のポートＢｔｏａ、スレーブａ用バスＩ／Ｆ１１ａ、スレーブ１１ａの経路で行う。また、マスタ１０Ｂからスレーブ１１ｂへのパケットの転送は、マスタＢ用バスＩ／Ｆ３０Ｂ、スイッチ８２のポートＡとａ、スイッチ８１のポートＢとｂ、スレーブｂ用バスＩ／Ｆ１１ｂ、スレーブ１１ｂの経路で行う。他の経路についても同様であり、スレーブからマスタへのパケット転送も同様である。
【００８５】
図９のマスタ・スレーブ・システムにおいては、各マスタから各スレーブへの転送経路は１つのみ存在する。ここで、マスタ１０Ｂとマスタ１０Ｃが異なるスレーブにアクセスする場合であっても、スイッチ８２のポートａにアクセスが集中することになり、ポートａにおいて転送の渋滞が発生し、マスタ１０Ｂとマスタ１０Ｃの転送性能の低下が引き起こされる。
【００８６】
例えば、マスタ１０Ａからのアクセスは、スレーブ１１ａが多く、スレーブ１１ｂが少なく、マスタ１０Ｂからのアクセスは、スレーブ１１ａが少なく、スレーブ１１ｂが多く、マスタ１０Ｃからのアクセスは、スレーブ１１ａが多く、スレーブ１１ｂが少ない場合を考える。この場合、マスタ１０Ｂおよびマスタ１０Ｃのアクセスでは、それぞれアクセスするスレーブが異なっていても、常にスイッチ８２のポートａにアクセスが集中することになる。そのため、マスタ１０Ｂおよびマスタ１０Ｃからスレーブ１１ｂへの余裕時間の短い転送パケットが、スイッチ８２のポートａで待機する時間が長くなり、要求される転送時間を満足できない状態が生じる。
【００８７】
図１０は、第３実施形態のマスタ・スレーブ・システムの構成を示す図である。第３実施形態のマスタ・スレーブ・システムは、図９のマスタ・スレーブ・システムにおいて、特定ポートへの転送量の集中を回避するようにしたものである。
【００８８】
第３実施形態のマスタ・スレーブ・システムは、３個のスイッチ８３−８５を使用する。スイッチ８３は、ポートＡにマスタＡ用バスＩ／Ｆ３０Ａが、ポートＢにスイッチ８４のポートａが、ポートａにスレーブａ用バスＩ／Ｆ４０ａが、ポートｂにスイッチ８５のポートＡが接続される。スイッチ８４は、ポートＡにマスタＢ用バスＩ／Ｆ３０Ｂが、ポートＢにマスタＣ用バスＩ／Ｆ３０Ｃが、ポートａにスイッチ８３のポートＢが、ポートｂにスイッチ８５のポートＢが接続される。スイッチ８５は、ポートＡにスイッチ８３のポートｂが、ポートＢにスイッチ８４のポートｂが、ポートａにスレーブｂ用バスＩ／Ｆ４０ｂが、接続される。したがって、マスタ１０Ｂからスレーブ１１ｂへのパケットの転送経路は、２経路存在する。第１の経路は、マスタＢ用バスＩ／Ｆ３０Ｂ、スイッチ８４のポートＡとａ、スイッチ８３のポートＢとｂ、スイッチ８５のポートＡとａ、およびスレーブｂ用バスＩ／Ｆ１１ｂの経路である。第２の経路は、マスタＢ用バスＩ／Ｆ３０Ｂ、スイッチ８４のポートＡとｂ、スイッチ８５のポートＢとａ、およびスレーブｂ用バスＩ／Ｆ１１ｂの経路である。同様に、マスタ１０Ｃからスレーブ１１ｂへのパケットの転送経路も、２経路存在する。第１の経路は、マスタＣ用バスＩ／Ｆ３０Ｃ、スイッチ８４のポートＢとａ、スイッチ８３のポートＢとｂ、スイッチ８５のポートＡとａ、およびスレーブｂ用バスＩ／Ｆ１１ｂの経路である。第２の経路は、マスタＣ用バスＩ／Ｆ３０Ｃ、スイッチ８４のポートＢとｂ、スイッチ８５のポートＢとａ、およびスレーブｂ用バスＩ／Ｆ１１ｂの経路である。したがって、スイッチ８４での経路選択によりいずれの経路で転送するかが選択されることになる。
【００８９】
上記のマスタ１０Ｂおよび１０Ｃからスレーブ１１ｂへの第２の経路、すなわちスイッチ８４のポートｂとスイッチ８５のポートＢを通る経路は、スイッチ８３を通らないため、スレーブａ用バスＩ／Ｆ４０ａの経路と競合することはない。
【００９０】
バス回路２０内の各バスＩ／Ｆおよび各スイッチは、コンフィグレジスタ７１とタイマ７２の時間情報を受けて、各バス構成要素における転送到達時間をもとに転送要求の選択を動的に変化させ、転送パケットごとの目標時間内での転送完了を実現する。バス回路２０内の各バスＩ／Ｆおよびスイッチ８３と８５は、第２実施形態と同じ構成および動作を行う。スイッチ８４は、他のスイッチと同様の機能に加えて、経路選択を行う。
【００９１】
図１１は、スイッチ８４の構成を示す図である。
スイッチ８４は、第２実施形態のスイッチ５０に、複数経路判定部６４を付加した構成を有する。複数経路判定部６４は、転送先選択部６１の情報および転送時間計算部６２の情報に基づいて分岐器６５および６５の分岐先を制御する。具体的には、スレーブ１１ａへの転送パケットであれば、分岐器６５および６５が、セレクタ６７に接続される出力を選択するように制御する。スレーブ１１ｂへの転送パケットの場合、余裕時間がある転送パケット（緊急性の低いアクセス要求)については、分岐器６５および６５が、セレクタ６７に接続される出力を選択するように制御する。スレーブ１１ｂへの転送パケットで余裕時間がない転送パケット(緊急性の高いアクセス要求)は、分岐器６５および６５が、セレクタ６８に接続される出力を選択するように制御する。
【００９２】
上記のような経路選択を行うことで、緊急性の高いアクセス要求は、スイッチ８４のポートｂからスイッチ８５のポートＢを通る競合の少ない経路でスレーブ１１ｂに転送される。これにより、アクセス集中による性能低下の問題が回避できる。
【００９３】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものである。特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【００９４】
１０Ａ，１０Ｂ，１０Ｃ    マスタ
１１ａ，１１ｂ，１１ｃ    スレーブ
２０    バス回路
３０Ａ，３０Ｂ，３０Ｃ    マスタ用バスＩ／Ｆ
４０ａ，４０ｂ，４０ｃ    スレーブ用バスＩ／Ｆ
５０、８１，８２、８３，８４、８５    スイッチ
５２Ａａ，５２Ｂａ，５２Ａｂ    入力側バッファ
５３ａ，５３ｂ，５３ｃ    セレクタ
５４ａ，５４ｂ，５４ｃ    優先度スイッチ制御部
６１    転送先選択部
６２    転送時間計算部
６３    優先度制御部
６４    複数経路判定部
７１    コンフィグレジスタ
７２    タイマ
【図１】
0005880169.tif 000002
【図２】
0005880169.tif 000003
【図３】
0005880169.tif 000004
【図４】
0005880169.tif 000005
【図５】
0005880169.tif 000006
【図６】
0005880169.tif 000007
【図７】
0005880169.tif 000008
【図８】
0005880169.tif 000009
【図９】
0005880169.tif 000010
【図１０】
0005880169.tif 000011
【図１１】
0005880169.tif 000012