(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
まず、バス回路を含むマスタ・スレーブ・システムについて説明する。
図1は、複数のマスタのそれぞれが、複数のスレーブのそれぞれにアクセスするマスタ・スレーブ・システムの全体構成を示す図である。このようなシステムは、例えば、システムLSI内に設けられる。
【0012】
図1に示すように、マスタ・スレーブ・システムは、複数のマスタ10A〜10Cと、複数のスレーブ11a〜11eと、複数のマスタ10A〜10Cと複数のスレーブ11a〜11eを接続するバス回路(接続回路:Interconnect)20と、を有する。バス回路20は、マスタのスレーブへのアクセス要求に応じて、マスタのバスをスレーブのバスに接続する。例えば、
図1では、マスタ10Aがスレーブ11eに、マスタ10Bがスレーブ11aに、マスタ10Cがスレーブ11cに、アクセスする状態を示している。アクセスは、アクセス先が競合しない限り、並列に行なわれる。
【0013】
これまでのシステムは、マスタがバス回路20にアクセス要求を出力すると、バス回路20は、アクセス要求のあったスレーブにアクセス可能な状態かを判定し、アクセス可能であれば、内部スイッチを制御して、マスタのバスとスレーブのバスを接続していた。例えば、マスタ10Aがスレーブ10aにアクセスしている状態で、マスタ10Bがスレーブ10aへのアクセス要求を出すと、マスタ10Bはマスタ10Aのスレーブ10aへのアクセスが終了するまで待たされる。この状態で、マスタ10Cがスレーブ10aへのアクセス要求を出すと、マスタ10Cはマスタ10Aおよびマスタ10Bのスレーブ10aへのアクセスが終了するまで待たされる。もし、マスタ10Aのスレーブ10aへのアクセスが長時間を要する場合には、マスタ10Bおよびマスタ10Cは、たとえ少量のデータ転送のアクセスであっても、長時間待機させられることになり、システムの処理効率が低下する。
【0014】
そこで、1アクセスでは1転送単位のデータを転送することが行われる。1転送単位は1パケットと呼ばれる。1パケット単位でアクセスを行うことにより、例えば、1パケットのアクセスであれば長時間待機させられることはなくなったが、依然待機状態になる場合が発生し、特にマスタの個数が増加した場合には待機時間が長くなる場合が起こり得る。マスタは、待機時間中に他の処理を行わないので、システムの処理効率が依然十分でなかった。
【0015】
そこで、アウトスタンディング(Outstanding)と呼ばれる技術およびアウトオブオーダー(Out-Of-Order) と呼ばれる技術が提案され、システムLSIで使用される内部バスプロトコルでは、これらの技術が主流となっている。これらの技術を適用したシステムでは、マスタは、スレーブへのライト・アクセス要求が発生すると、ライト・アクセス要求およびライト・データをパケット単位でバス回路に出力した後、スレーブおよびバス回路の応答を待たずに他の処理を開始できる。バス回路20は、ライト・アクセス要求およびライト・データをバッファに記憶し、スレーブへの競合する他のアクセスとの調整を行い、スレーブにアクセス可能となると、ライト・アクセス要求にしたがって、ライト・データをスレーブに出力する。スレーブは、ライト・データを保存した後、処理終了の応答をバス回路に出力する。バス回路は、処理終了の応答を、マスタへのアクセス順を調整して適宜マスタに転送する。このようにして、マスタからスレーブへのライト・アクセス処理が終了する。
【0016】
また、マスタでスレーブからのリード・アクセス要求が発生すると、マスタは、リード・アクセス要求をバス回路20に出力する。バス回路20は、リード・アクセス要求をバッファに記憶し、スレーブへの競合する他のアクセスとの調整を行い、スレーブにアクセス可能となると、リード・アクセス要求をスレーブに出力する。スレーブはリード・アクセス要求に対する応答およびデータをバス回路に出力する。バス回路は、スレーブからの応答およびデータを保持し、マスタへの競合する他のアクセスとの調整を行い、マスタにアクセス可能となると、データをマスタに出力する。
【0017】
上記のシステムでは、バス回路が、複数のマスタからスレーブへのアクセス要求を調停してスレーブへのアクセスを行い、複数のスレーブからの応答を調停してマスタへのアクセスを行う。このため、マスタは、スレーブへのアクセス要求を出力した後では、スレーブからの応答を受けるまで待機する必要はなく、他の処理を実行でき、アウトスタンディング技術が実現できる。また、バス回路は、アクセス可能なスレーブまたはマスタに対してアクセスを行うように調停するので、マスタに対しては、要求順序と異なる順序で応答を返すことになり、アウトオブオーダー技術が実現される。
【0018】
アウトスタンディングおよびアウトオブオーダーを実現するのは、バス回路内の適宜の位置に、パケットを一時的に保持するバッファを備える必要がある。
図2は、アウトスタンディングおよびアウトオブオーダーを実現したシステムのバス回路の構成を示す図である。
図2では、記載を簡単にするために、2つのマスタ(A)11Aおよびマスタ(B)11Bと2つのスレーブ(a)11aおよびスレーブ(b)11bが接続される場合を示す。
【0019】
バス回路20は、マスタA用バスインターフェース(I/F)30Aと、マスタB用バスインターフェース(I/F)30Bと、スレーブa用バスインターフェース(I/F)40aと、スレーブb用バスインターフェース(I/F)40bと、を有する。バス回路20は、さらに、マスタA用バスI/F30A、マスタB用バスI/F30B、スレーブa用バスI/F40aおよびスレーブb用バスI/F40bの接続を切り替えるスイッチ50を有する。
【0020】
マスタA用バスI/F30Aはマスタ10Aに、マスタB用バスI/F30Bはマスタ10Bに、スレーブa用バスI/F40aはスレーブ11aに、スレーブb用バスI/F40bはスレーブ11bに、それぞれ接続される。各バスI/Fは、マスタまたはスレーブとの間で転送するデータを一時的に保持するバッファを有する。
【0021】
スイッチ50は、スイッチユニット51a、51b、61Aおよび61Bを有する。スイッチユニット51aは、マスタA用バスI/F30Aの出力とマスタB用バスI/F30Bの出力のいずれかを選択して、スレーブa用バスI/F40aに出力する。スイッチユニット51bは、マスタA用バスI/F30Aの出力とマスタB用バスI/F30Bの出力のいずれかを選択して、スレーブb用バスI/F40bに出力する。スイッチユニット61Aは、スレーブa用バスI/F40aの出力とスレーブb用バスI/F40bの出力のいずれかを選択して、マスタA用バスI/F30Aに出力する。スイッチユニット61Bは、スレーブa用バスI/F40aの出力とスレーブb用バスI/F40bの出力のいずれかを選択して、マスタB用バスI/F30Bに出力する。
【0022】
各スイッチユニットは、バッファと、セレクタと、を有する。具体的には、スイッチユニット51aは、バッファ52aと、セレクタ53aと、を有する。バッファ52aは、マスタA用バスI/F30Aの出力とマスタB用バスI/F30Bの出力のうち、スレーブ11aに対するライト・アクセス要求の転送データを一時的に保持する。セレクタ53aは、バッファ52aに保持されたマスタA用バスI/F30Aの出力とマスタB用バスI/F30Bの出力のいずれかを選択して、スレーブa用バスI/F40aに出力する。
【0023】
同様に、スイッチユニット51bは、バッファ52bと、セレクタ53bと、を有する。バッファ52bは、マスタA用バスI/F30Aの出力とマスタB用バスI/F30Bの出力のうち、スレーブ11bに対するライト・アクセス要求の転送データを一時的に保持する。セレクタ53bは、バッファ52bに保持されたマスタA用バスI/F30Aの出力とマスタB用バスI/F30Bの出力のいずれかを選択して、スレーブb用バスI/F40bに出力する。
【0024】
スイッチユニット61Aは、バッファ62Aと、セレクタ63Aと、を有する。バッファ62Aは、スレーブa用バスI/F40aの出力とスレーブb用バスI/F40bの出力のうち、マスタ10Aのリード・アクセス要求に対する応答の転送データを一時的に保持する。セレクタ63Aは、バッファ62Aに保持されたスレーブa用バスI/F40aの出力とスレーブb用バスI/F40bの出力のいずれかを選択して、マスタA用バスI/F30Aに出力する。
【0025】
スイッチユニット61Bは、バッファ62Bと、セレクタ63Bと、を有する。バッファ62Bは、スレーブa用バスI/F40aの出力とスレーブb用バスI/F40bの出力のうち、マスタ10Bのリード・アクセス要求に対する応答の転送データを一時的に保持する。セレクタ63Bは、バッファ62Bに保持されたスレーブa用バスI/F40aの出力とスレーブb用バスI/F40bの出力のいずれかを選択して、マスタB用バスI/F30Bに出力する。
【0026】
なお、各バスI/Fは、マスタまたはスレーブとの間で転送するデータを一時的に保持するバッファを有するが、スイッチ50内にバッファを設ける場合にはバスI/F内のバッファは省略可能である。
図2の例では、後述するようにスイッチ50内の入力側にバッファが設けられるので、バスI/F30Aおよび30Bのマスタからスレーブへの転送バッファ、およびバスI/F40aおよび40bのスレーブからマスタへの転送バッファは省略可能である。また、各バスI/Fにバッファを設ける場合には、後述するように、スイッチ50内のバッファを省略することが可能である。
【0027】
図3は、
図2に示したスイッチ50の簡易表現を説明する図である。
図3の(A)に示すスイッチ50は、マスタA用バスI/F30A、マスタB用バスI/F30B、スレーブa用バスI/F40aおよびスレーブb用バスI/F40b間のデータ転送における接続を切り替える。このようなスイッチ50を、
図3の(B)に示すように表す。具体的には、マスタA用バスI/F30Aと接続されるポートをポートAで、マスタB用バスI/F30Bと接続されるポートをポートBで、表す。また、スレーブa用バスI/F40aと接続されるポートをポートaで、スレーブb用バスI/F40bと接続されるポートをポートbで、表す。
【0028】
なお、バス回路に接続されるマスタの個数およびスレーブの個数は限定されず、3以上であってもよい。例えば4個のマスタおよび5個のスレーブを接続する場合には、バス回路は、4個のマスタ用バスI/Fと、5個のスレーブ用バスI/Fと、スイッチと、を有する。この場合、スイッチは、ポートA、B、CおよびDと、ポートa、b、c、dおよびeを有する。さらに、これに応じてスイッチ50に設けられるスイッチユニットの個数も9個に増加し、マスタからスレーブへの転送経路のセレクタは4入力1出力に、スレーブからマスタへの転送経路のセレクタは5入力1出力に、する。
【0029】
上記の内部バスプロトコルを使用するバス回路で、データ転送要求に対して、一定の帯域を確保し通信速度を保証する技術(QoS)が求められている。これを実現する方法として、事前に優先度を決定する方法と、一定時間内でのバス転送量に応じて優先度を決定する方法が知られている。しかし、前述のように、いずれの方法でも、バスの状況に応じて上記の要求を満たすことが難しかった。以下に説明する、アウトスタンディングかつアウトオブオーダーのバスプロトコルを実行する実施形態のバス回路を含むシステムでは、パケットの一定時間内での転送完了を実現する。
【0030】
図4は、第1実施形態のマスタ・スレーブ・システムの全体構成およびシステムに含まれるバス回路の構成を示す図である。第1実施形態のマスタ・スレーブ・システムは、アウトスタンディングかつアウトオブオーダーのバスプロトコルを実行する。
図4に示すように、第1実施形態のマスタ・スレーブ・システムは、2個のマスタ10Aおよび10Bと、3個のスレーブ11a〜11cと、バス回路20と、を有する。
【0031】
バス回路20は、マスタA用バスインターフェース(I/F)30Aと、マスタB用バスインターフェース(I/F)30Bと、を有する。バス回路20は、スレーブa用バスインターフェース(I/F)40aと、スレーブb用バスインターフェース(I/F)40bと、スレーブc用バスインターフェース(I/F)40cと、を有する。バス回路20は、さらに、スイッチ50と、コンフィグレジスタ71と、タイマ72と、を有する。マスタA用バスI/F30A、マスタB用バスI/F30B、スレーブa用バスI/F40a、スレーブb用バスI/F40bおよびスレーブc用バスI/F40cは、これまで説明したものと同様の構成を有する。
【0032】
図4に示すように、コンフィグレジスタ71と、タイマ72と、を有する。コンフィグレジスタ71は、データ転送において要求される時間に関係する設定項目を記憶する。また、タイマ72は、データ転送における時間経過を計測する。コンフィグレジスタ71とタイマ72の時間情報は、マスタA用バスI/F30A、マスタB用バスI/F30B、スレーブa用バスI/F40a、スレーブb用バスI/F40b、スレーブc用バスI/F40cおよびスイッチ50に供給される。マスタA用バスI/F30A、マスタB用バスI/F30B、スレーブa用バスI/F40a、スレーブb用バスI/F40bおよびスレーブc用バスI/F40cは、転送パケットに対して、時間情報を付加して転送する。スイッチ50は、時間情報から、各バス構成要素における転送到達時間をもとに転送要求の選択を動的に変化させ、転送パケットごとの目標時間内での転送完了を実現する。
【0033】
まず、コンフィグレジスタ71が記憶する設定項目を説明する。
コンフィグレジスタ71は、転送処理の時間に関係する目標転送時間T_target、理想転送時間T_ideal、実測転送時間T_actual、余裕度マージン時間T_slackmargin、遅れ待ち時間T_wait、および転送エラー情報Err_infoの項目が設定されている。設定項目は、システム全体またはバス回路20を制御するCPUなどの制御部から変更可能である。
【0034】
(目標転送時間T_target)
目標転送時間T_targetは、1パケットがマスタとスレーブ間を転送される時の目標の転送時間であり、以下の値が設定される。
マスタ−スレーブ間(以下、M2S)目標転送時間T_target_m2s:マスタからスレーブへのアクセス要求の転送に要する目標時間である。
スレーブ目標応答時間T_target_slvresp:スレーブがアクセス要求を受け取ってから応答を返すまでに要する目標時間である。
スレーブ−マスタ間(以下、S2M)目標転送時間T_target_s2m:スレーブからマスタへのアクセス応答の転送に要する目標時間である。
【0035】
(理想転送時間T_ideal)
理想転送時間T_idealは、1パケットがマスタとスレーブ間を転送される時、バス経路中でバス競合等による遅延が発生しない理想の転送時間であり、以下の値が設定される。
M2S理想転送時間T_ideal_m2s
スレーブ理想応答時間T_ideal_slvresp
S2M理想転送時間T_ideal_s2m
【0036】
(実測転送時間T_actual)
実測転送時間T_actualは、過去の転送における1パケットがマスタとスレーブ間を転送した時の実測の転送時間として以下の値を設定する。なお、初期値は、理想転送時間T_idealを設定する。
M2S実測転送時間T_m2s
スレーブ実測応答時間T_slvresp
S2M実測転送時間T_s2m
【0037】
(余裕度マージン時間T_slackmargin)
余裕度マージン時間T_slackmarginは、経路が複数ある場合、各経路に与えるマージン値を設定する。
【0038】
(遅れ待ち時間T_wait)
遅れ待ち時間T_waitは、1パケットがスイッチ50とスレーブ用バスI/Fにおいて目標時間に遅れが生じた時、スイッチ50とスレーブ用バスI/Fが許容可能な転送遅れの待ち時間として以下の値を設定する。
M2S Switch遅れ待ち時間T_wait_m2s
スレーブ遅れ待ち時間T_wait_slv
S2M Switch遅れ待ち時間T_wait_s2m
【0039】
(転送エラー情報Err_info)
転送エラー情報Err_infoは、1パケットが転送される時、1パケットの転送が、転送成功、又はスイッチ転送遅れ待ちエラー発生、またはスレーブ応答待ちエラー発生、転送エラー発生であったかを設定する。
【0040】
図5は、第1実施形態のシステムにおいて、転送パケットの流れを示す図であり、マスタ(A)10Aとスレーブ(a)10aの間のパケット転送を示している。また、
図5では、転送に伴ってパケットに付加される時間情報が一緒に示されている。
【0041】
まず、マスタがスレーブにライト・アクセス要求を出し、マスタからスレーブに転送要求パケットが流れる場合の流れを説明する。
【0042】
(1)マスタ用バスI/F30Aは、マスタ10Aから発行された転送要求パケットを受け取ると、パケット受信時間T_startとコンフィグレジスタ71に設定してある目標転送時間T_targetの情報を転送要求パケットに付加し、スイッチ50へ送る。パケット受信時間T_startは、タイマ72が示している現在時間である。転送要求パケットには、要求先(アドレスなどのスレーブ識別情報)、ライトデータ、および転送タイプ・サイズなどバス制御情報が、含まれる。
【0043】
(2)スイッチ50は、マスタ用バスI/F30Aから転送要求パケットを受け取ると、経路決定と優先度制御を行い、転送要求パケットをスレーブ用バスI/F40aに送る。
【0044】
(3)スレーブ用バスI/F40aは、スイッチ50から転送要求パケットを受け取ると、マスタ用バスI/F30Aが付加した情報(T_start、T_target)を内部バッファに保存する。また、スレーブ用バスI/F40aは、マスタ用バスI/F30Aからスレーブ用バスI/F40aへの実転送時間(=M2S実測転送時間T_m2s)を計算し、T_startおよびT_targetを保存する。M2S実測転送時間T_m2sは、以下の式で計算される。
【0045】
M2S実測転送時間T_m2s=現在時間T_current−パケット受信時間T_start
ここで、T_currentは、 計算時点でタイマ72が示している時間である。
【0046】
マスタ10Aの発行した元の転送要求パケットは、スレーブ10aへ送る。
【0047】
次に、マスタからスレーブへのリード・アクセス要求に対して、リードデータを含むスレーブからの転送応答パケットの、スレーブからマスタへの転送の流れを説明する。
【0048】
(4)スレーブ用バスI/F40aは、スレーブ10aから、応答先(マスタ識別情報)、OK/エラー応答、リードデータ等を含む転送応答パケットを受け取るとスレーブ実測応答時間T_slvrespを、次の式で計算する。
【0049】
スレーブ実測応答時間T_slvresp=
現在時間T_current−パケット受信時間T_start−M2S実測転送時間T_m2s
【0050】
そして、スレーブ実測応答時間T_slvrespと、(3)で保存した転送要求パケットの付加情報(T_start、T_target)と、M2S実測転送時間T_m2sと、を転送応答パケットに付加し直し、スイッチ50へ送る。
【0051】
(5)スイッチ50は、スレーブ用バスI/F40aから転送応答パケットを受け取ると、転送応答パケットをマスタ用バスI/F30Aへ送る。
【0052】
(6)マスタ用バスI/F30Aは、スイッチ50から転送応答パケットを受け取ると、スレーブ用バスI/F40aからマスタ用バスI/F30Aまでの実転送時間(=S2M実測転送時間T_s2m)を、次の式で計算する。
S2M実測転送時間T_s2m=現在時間T_current−パケット受信時間T_start
−M2S実測転送時間T_m2s−スレーブ実測応答時間T_slvresp
【0053】
ここで、現在時間T_currentは、計算時点でタイマ72が指している時間である。
そして、コンフィグレジスタ71は、M2S実測転送時間T_m2s、スレーブ実測応答時間T_slvresp、S2M実測転送時間T_s2mを、コンフィグレジスタ71の実測転送時間T_actualの値に更新する。さらに、コンフィグレジスタ71は、転送エラー情報Err_infoの値を、マスタ用バスI/F30Aが転送応答パケットを受信したときの情報に更新する。
【0054】
スレーブ10aの発行した元の転送応答パケットは、マスタ10Aへ送る。
【0055】
以上説明したように、バス回路におけるパケット転送の際には、時間情報が付加される。第1実施形態では、この時間情報に基づいて、アクセスの優先順位を制御する。なお、上記の例では、マスタ10Aとスレーブ10bの間のパケット転送について説明したが、他のマストとスレーブの間のパケット転送でも同様に時間情報が付加される。
【0056】
次に、複数のマスタから1つのスレーブへの転送要求が競合した場合に、スイッチ50が、上記の時間情報を利用して、転送パケットごとの目標時間内での転送完了を実現するように、スレーブに出力する転送要求の優先度を制御する処理を説明する。
【0057】
図6は、スイッチ50におけるマスタからスレーブへの転送に関係するスイッチユニットの部分を示す図である。図示していないが、スレーブからマスタへの転送に関係するスイッチユニットの部分も存在する。
【0058】
スイッチ50は、スレーブa用バスI/F40aに対応したセレクタ53a、入力側バッファ、出力側バッファ55aおよび優先度スイッチ制御部54aの組を有する。さらに、スイッチ50は、スレーブb用バスI/F40bに対応したセレクタ53b、入力側バッファ、出力側バッファ55bおよび優先度スイッチ制御部54bの組を有する。また、スイッチ50は、スレーブc用バスI/F40cに対応したセレクタ53c、入力側バッファ、出力側バッファ55cおよび優先度スイッチ制御部54cの組と、を有する。
【0059】
スレーブa用バスI/F40aに対応した入力側バッファは、マスタA用バスI/F30Aからのパケットを保持するバッファ52Aaと、マスタB用バスI/F30Bからのパケットを保持するバッファ52Baと、を有する。バッファ52Aaおよびバッファ52Baは、パケット単位で転送要求に関係するデータおよび情報を一時的に保持する。他の入力側バッファも同様である。
【0060】
出力側バッファ55aは、セレクタ53aからスレーブa用バスI/F40aに出力するパケットを一時的に保持する。出力側バッファ55aは、スレーブa用バスI/F40aに設けられたバッファで代替することが可能である。他の出力側バッファも同様である。
【0061】
優先度スイッチ制御部54aは、バッファ52Aaおよびバッファ52Baに保持されたパケットの情報に応じて、セレクタ53aがスレーブa用バスI/F40aに出力するパケットの選択を制御する。
【0062】
次に、優先度制御の具体的な処理について説明する。
スイッチ50は、前段のマスタ用AバスI/F30Aおよびマスタ用AバスI/F30Bから転送パケットを受け取ると、いずれのスレーブへの転送パケットであるかに応じて、対応する入力側バッファに記憶する。例えば、マスタ10Aからスレーブaへのパケットであれば、入力側バッファ52Aaに、マスタ10Aからスレーブbへのパケットであれば、入力側バッファ52Abに、それぞれ記憶される。また、マスタ10Bからスレーブaへのパケットであれば、入力側バッファ52Baに、マスタ10Bからスレーブcへのパケットであれば、入力側バッファ52Bcに、それぞれ記憶される。マスタA用バスI/F30AのバスとマスタB用バスI/F30Bのバスは独立しているので、同じスレーブへの転送の場合でも、待ち時間は発生しない。したがって、マスタ10AおよびマスタBは、スレーブの状態にかかわらず、バス回路20にアクセス要求を出力するだけでよい。
【0063】
以上のようにして、入力側バッファにマスタ10Aおよびマスタ10Bからのパケットが、転送先のスレーブの入力側バッファに記憶される。以下、優先度スイッチ制御部54aの動作について説明する。
【0064】
入力側バッファ52Aaおよび52Baに記憶されているパケットには、T_startおよびT_targetが付加されており、タイマ72は現在時間T_currentを出力しており、コンフィグレジスタ71には遅れ待ち時間T_waitが設定されている。優先度スイッチ制御部54は、これらの時間情報から、以下のように、余裕時間T_slackと総余裕時間T_slack_totalを計算する。
【0065】
消費時間T_consume=現在時間T_current−パケット受信時間T_start
余裕時間T_slack=目標転送時間T_target_m2s−消費時間T_consume
総余裕時間T_slack_total=余裕時間T_slack+スイッチでの待ち時間T_wait_m2s
【0066】
優先度スイッチ制御部54aは、入力側バッファ52Aaおよび52Baに記憶されているパケットのうちで、余裕時間T_slackが最も少ない(この場合は2つなので、少ない方の)パケットを、セレクタ53aが選択して出力するように制御する。出力されたパケットは、出力側バッファ55aに記憶されたのち、スレーブa用バスI/F40aに出力される。
【0067】
スイッチ50は、同時に、タイマ72の計測単位時間ごとに各転送待ちパケットの総余裕時間T_slack_totalを減じていき、総余裕時間T_slack_total<0以下の条件が成り立った場合には該当のパケットを転送待ちバッファ内から削除して転送を打ち切る。そして、スイッチ50は、転送要求元マスタへエラー情報Err_infoを付加したエラー応答パケットを生成して送る。
【0068】
スイッチ50は、その後、バスI/F40aがパケット受信可能状態になると、格納順に、すなわち優先度の高いパケットを、バスI/F40aに送る。
以上の動作は、他のスレーブbおよびcへの転送パケットについても同様である。
【0069】
スレーブからマスタへの転送の場合には、スイッチの入力側バッファに記憶されているパケットには、さらにM2S実測転送時間T_m2s、スレーブ実測応答時間T_slvrespが付加されている。さらに、コンフィグレジスタ71には、目標転送時間T_target_s2mが設定されている。優先度スイッチ制御部は、これらの時間情報から、以下のように、余裕時間T_slackと総余裕時間T_slack_totalを計算する。
【0070】
消費時間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
【0071】
他の動作は上記と同じなので、説明は省略する。
以上のようにして、目標時間内での転送を完了させるための余裕時間が少ないパケットを優先して転送することになり、転送パケットごとに目標時間内での転送を完了する。
【0072】
第1実施形態のバス回路20は、スイッチ50にバッファを設けたが、各バスI/Fに設けたバッファを利用することも可能である。次に説明する第2実施形態のバス回路20は、各バスI/Fに設けたバッファを利用する。
【0073】
図7は、第2実施形態のマスタ・スレーブ・システムの全体構成およびシステムに含まれるバス回路50の構成を示す図である。第2実施形態のマスタ・スレーブ・システムは、2個のマスタ10Aおよび10Bと2個のスレーブ11aおよび11bを接続し、アウトスタンディングかつアウトオブオーダーのバスプロトコルを実行する。接続するマスタの個数およびスレーブの個数は適宜設定できるが、ここでは説明を簡単にするために、2個のマスタと2個のスレーブを接続した例を示す。
【0074】
なお、
図7は、マスタからスレーブへのパケット転送に関係する部分のみを示しているが、スレーブからマスタへのパケット転送に関係する同様の部分を有するが、図示は省略している。スレーブからマスタへのパケット転送は、マスタからスレーブへのパケット転送とは独立して類似の動作で行われ、第1実施例で説明したように復路の時間情報が付加されることが異なる。
【0075】
図7に示すように、各バスI/F30A、30B、40aおよび40bは、転送されるパケットを一時的に記憶するバッファを有する。
【0076】
スイッチ50は、分岐器65および66と、セレクタ67および68と、を有する。分岐器65は、バスI/F30Aからの転送パケットを、転送先に応じてセレクタ67および68のいずれかに出力するように選択する。分岐器66は、バスI/F30Bからの転送パケットを、転送先に応じてセレクタ67および68のいずれかに出力するように選択する。セレクタ67は、分岐器65からの転送パケットと分岐器66からの転送パケットを、優先度に応じて選択してバスI/F40aに出力する。セレクタ68は、分岐器65からの転送パケットと分岐器66からの転送パケットを、優先度に応じて選択してバスI/F40bに出力する。
【0077】
スイッチ50は、転送先選択部61と、転送時間計算部62と、優先度制御部63と、をさらに有する。転送先選択部61は、バスI/F30Aおよび30B内のバッファに記憶されたパケットの情報およびコンフィグレジスタ71の情報から転送先を判定し、分岐器65および66を制御する。転送時間計算部62は、バスI/F30Aおよび30B内のバッファに記憶されたパケットの情報、コンフィグレジスタ71の情報およびタイマ72の出力する時間情報から、第1実施形態で説明した転送時間に関係する情報を計算する。
【0078】
優先度制御部63は、転送時間計算部62の計算した時間情報に基づいて、第1実施形態と同様の制御を行い、目標時間内での転送を完了させるための余裕時間が少ないパケットを優先して転送する。これにより、転送パケットごとに目標時間内での転送を完了する。
【0079】
図8は、第2実施形態における優先度制御の例を説明する図である。
例えば、T_current=22において、スイッチ50が、バスI/F30AからバスI/F40aに向かう転送要求パケットRP0と、バスI/F30BからバスI/F40aに向かう転送要求パケットRP1を、同時に受信した場合を考える。RP0はT_start0=18、T_target0_m2s=6であるためT_slack=2となり、RP1はT_start1=19、T_target1_m2s=4であるためT_slack=1となる。したがって、T_slackが小さいのはRP1であるため、RP0よりもRP1の優先度が高くなるように出力され、バスI/F40aのバッファには、RP1がRP0よりも先に記憶される。バスI/F40aは、RP1がRP0よりも先にスレーブ11aに出力されることになる。
【0080】
第1実施形態のバス回路20は、
図4に示すように、2個のマスタと3個のスレーブの接続を切り替えるスイッチを使用した。接続されるマスタおよびスレーブの個数を増加させることは可能であるが、その分スイッチは複雑になる。そこで、第2実施形態のスイッチ50のように、2個のマスタと2個のスレーブの接続を切り替える2×2スイッチを基本スイッチとして、複数の基本スイッチを使用することにより、接続されるマスタ数およびスレーブの増加に対処することが考えられる。次に説明する第3実施形態のマスタ・スレーブ・システムは、2×2スイッチを複数個使用して、3個のマスタと2個のスレーブを接続するバス回路を形成する。
【0081】
図9は、2×2スイッチを2個使用して、3個のマスタと2個のスレーブを接続するバス回路を形成したマスタ・スレーブ・システムを示す図である。
【0082】
図9に示すように、マスタ・スレーブ・システムは、3個のマスタ10A、10Bおよび10Cと、2個のスレーブ11aおよび11bと、バス回路20と、を有する。バス回路20は、3個のマスタ10A、10Bおよび10Cと、2個のスレーブ11aおよび11bの接続し、アウトスタンディングかつアウトオブオーダーのバスプロトコルを実行する。
【0083】
バス回路20は、マスタA用バスI/F30Aと、マスタB用バスI/F30Bと、マスタC用バスI/F30Cと、スレーブa用バスI/F40aと、スレーブb用バスI/F40bと、2個のスイッチ81および82と、を有する。バス回路20は、コンフィグレジスタ71と、タイマ72と、をさらに有する。コンフィグレジスタ71およびタイマ72は、第1実施形態と同様のものである。マスタA用バスI/F30Aと、マスタB用バスI/F30Bと、マスタC用バスI/F30Cと、スレーブa用バスI/F40aと、スレーブb用バスI/F40bは、第2実施形態と同様に、バッファを有する。スイッチ81および82は、
図7に示した第2実施形態のスイッチと同様のものである。
【0084】
図9のマスタ・スレーブ・システムにおいて、例えば、マスタ10Aからスレーブ11aへのパケットの転送は、マスタA用バスI/F30A、スイッチ81のポートAとa、スレーブa用バスI/F11a、スレーブ11aの経路で行う。マスタ10Cからスレーブ11aへのパケットの転送は、マスタC用バスI/F30C、スイッチ82のポートBとa、スイッチ81のポートBtoa、スレーブa用バスI/F11a、スレーブ11aの経路で行う。また、マスタ10Bからスレーブ11bへのパケットの転送は、マスタB用バスI/F30B、スイッチ82のポートAとa、スイッチ81のポートBとb、スレーブb用バスI/F11b、スレーブ11bの経路で行う。他の経路についても同様であり、スレーブからマスタへのパケット転送も同様である。
【0085】
図9のマスタ・スレーブ・システムにおいては、各マスタから各スレーブへの転送経路は1つのみ存在する。ここで、マスタ10Bとマスタ10Cが異なるスレーブにアクセスする場合であっても、スイッチ82のポートaにアクセスが集中することになり、ポートaにおいて転送の渋滞が発生し、マスタ10Bとマスタ10Cの転送性能の低下が引き起こされる。
【0086】
例えば、マスタ10Aからのアクセスは、スレーブ11aが多く、スレーブ11bが少なく、マスタ10Bからのアクセスは、スレーブ11aが少なく、スレーブ11bが多く、マスタ10Cからのアクセスは、スレーブ11aが多く、スレーブ11bが少ない場合を考える。この場合、マスタ10Bおよびマスタ10Cのアクセスでは、それぞれアクセスするスレーブが異なっていても、常にスイッチ82のポートaにアクセスが集中することになる。そのため、マスタ10Bおよびマスタ10Cからスレーブ11bへの余裕時間の短い転送パケットが、スイッチ82のポートaで待機する時間が長くなり、要求される転送時間を満足できない状態が生じる。
【0087】
図10は、第3実施形態のマスタ・スレーブ・システムの構成を示す図である。第3実施形態のマスタ・スレーブ・システムは、
図9のマスタ・スレーブ・システムにおいて、特定ポートへの転送量の集中を回避するようにしたものである。
【0088】
第3実施形態のマスタ・スレーブ・システムは、3個のスイッチ83−85を使用する。スイッチ83は、ポートAにマスタA用バスI/F30Aが、ポートBにスイッチ84のポートaが、ポートaにスレーブa用バスI/F40aが、ポートbにスイッチ85のポートAが接続される。スイッチ84は、ポートAにマスタB用バスI/F30Bが、ポートBにマスタC用バスI/F30Cが、ポートaにスイッチ83のポートBが、ポートbにスイッチ85のポートBが接続される。スイッチ85は、ポートAにスイッチ83のポートbが、ポートBにスイッチ84のポートbが、ポートaにスレーブb用バスI/F40bが、接続される。したがって、マスタ10Bからスレーブ11bへのパケットの転送経路は、2経路存在する。第1の経路は、マスタB用バスI/F30B、スイッチ84のポートAとa、スイッチ83のポートBとb、スイッチ85のポートAとa、およびスレーブb用バスI/F11bの経路である。第2の経路は、マスタB用バスI/F30B、スイッチ84のポートAとb、スイッチ85のポートBとa、およびスレーブb用バスI/F11bの経路である。同様に、マスタ10Cからスレーブ11bへのパケットの転送経路も、2経路存在する。第1の経路は、マスタC用バスI/F30C、スイッチ84のポートBとa、スイッチ83のポートBとb、スイッチ85のポートAとa、およびスレーブb用バスI/F11bの経路である。第2の経路は、マスタC用バスI/F30C、スイッチ84のポートBとb、スイッチ85のポートBとa、およびスレーブb用バスI/F11bの経路である。したがって、スイッチ84での経路選択によりいずれの経路で転送するかが選択されることになる。
【0089】
上記のマスタ10Bおよび10Cからスレーブ11bへの第2の経路、すなわちスイッチ84のポートbとスイッチ85のポートBを通る経路は、スイッチ83を通らないため、スレーブa用バスI/F40aの経路と競合することはない。
【0090】
バス回路20内の各バスI/Fおよび各スイッチは、コンフィグレジスタ71とタイマ72の時間情報を受けて、各バス構成要素における転送到達時間をもとに転送要求の選択を動的に変化させ、転送パケットごとの目標時間内での転送完了を実現する。バス回路20内の各バスI/Fおよびスイッチ83と85は、第2実施形態と同じ構成および動作を行う。スイッチ84は、他のスイッチと同様の機能に加えて、経路選択を行う。
【0091】
図11は、スイッチ84の構成を示す図である。
スイッチ84は、第2実施形態のスイッチ50に、複数経路判定部64を付加した構成を有する。複数経路判定部64は、転送先選択部61の情報および転送時間計算部62の情報に基づいて分岐器65および65の分岐先を制御する。具体的には、スレーブ11aへの転送パケットであれば、分岐器65および65が、セレクタ67に接続される出力を選択するように制御する。スレーブ11bへの転送パケットの場合、余裕時間がある転送パケット(緊急性の低いアクセス要求)については、分岐器65および65が、セレクタ67に接続される出力を選択するように制御する。スレーブ11bへの転送パケットで余裕時間がない転送パケット(緊急性の高いアクセス要求)は、分岐器65および65が、セレクタ68に接続される出力を選択するように制御する。
【0092】
上記のような経路選択を行うことで、緊急性の高いアクセス要求は、スイッチ84のポートbからスイッチ85のポートBを通る競合の少ない経路でスレーブ11bに転送される。これにより、アクセス集中による性能低下の問題が回避できる。
【0093】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものである。特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。