説明

バスシステムおよびそのデッドロック回避回路

【課題】スプリットトランザクションにより複数のスレーブへの同時アクセスを許容したシステムにおいて、デッドロックの発生を防止する。
【解決手段】先行トランザクション情報管理部410は、対応するマスタから複数のスレーブの何れかに先に発行された先行トランザクション情報を管理する。発行停止判定部420は、先行トランザクション情報に基づいて、対応するマスタから新たに発行されたトランザクションがデッドロックの要因になるか否かを判定する。レスポンス出力制御部430は、先行トランザクション情報に基づいて、対応するマスタへ返送すべきレスポンスを制御する。退避バッファ470は、先行トランザクションに対する複数のスレーブからのレスポンスが予め期待された順序とは異なる順序で戻ってきた場合に、そのレスポンスを退避する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、バスシステムに関し、特にバスシステムのためのデッドロック回避回路に関する。
【背景技術】
【0002】
バスシステムにおいては、バス(インターコネクトとも呼称される。)に複数の接続機器が接続され、接続機器間でデータ転送が行われる。データ転送を主導する接続機器はマスタと呼ばれ、受動的に動作する接続機器はスレーブと呼ばれる。マスタとなる接続機器としては、例えばプロセッサが想定される。スレーブとなる接続機器としては、例えばメモリが想定される。
【0003】
このようなバスシステムにおいては、データ転送のための一連の動作(トランザクション)のうち、データ転送の要求と実際のデータ転送とをそれぞれ独立して制御すること(スプリットトランザクション)により、転送効率を向上させることができる。一方、スプリットトランザクションを許容した場合、マスタが複数のスレーブに対して同時期に依存関係のあるトランザクションを発行すると、データリクエストとデータ転送間においてデッドロックを生じるおそれがある。
【0004】
ここで、インターコネクトにマスタM1およびM2とスレーブS1およびS2とが接続されているシステムを想定する。マスタM1がスレーブS1およびS2の順序で、マスタM2がスレーブS2およびS1の順序で、それぞれ依存関係のあるリードトランザクションを発行した場合を考える。ここで、「依存関係のある」とは、各マスタがリードデータの返却順序はアドレス発行の順序と同順で返却されることを期待していることを意味する。各スレーブが受け取ったアドレスは、以下のように表現される。
S1 : M11,M22
S2 : M21,M12
ここで添え字の番号は、マスタが期待するデータ返却順序を示す。例えば、M12は「M1が発行したトランザクションであって、M1はこのトランザクションに関連するデータの返却は2番目であると期待している」ことを意味する。つまり、マスタM1はM11、M12の順序でデータを受け取ることが示されている。
【0005】
このとき、各スレーブが、1番目に期待されるデータを先に返却すれば、デッドロックは起こらない。一方、各スレーブが受信したトランザクションはそれぞれ別マスタから発行されたものであり、何の制約もない状態であれば、スレーブはどの順序でデータを返却してもよい。仮に、スレーブS1がM22を返却した後にM11を返却し、スレーブS2がM12を返却した後にM21を返却しようとすると、マスタM1およびM2はスレーブS1およびS2が返却しようとするデータを受け取ることができない。すなわち、マスタ側が最初に返却されることを期待しているのはそれぞれM11およびM21であり、スレーブが最初に返却しようとしているM12およびM22を受け取ることができない。スレーブ側はM12およびM22が受信されない限り、マスタ側が最初に期待しているM11およびM21を返却することができない。このように、スレーブ側においてデータのリオーダが行われた場合には、デッドロックが発生するおそれがある。
【0006】
これに対し、トランザクションのリオーダを制御することによりデッドロックを防止する手法が提案されている。例えば、トランザクション識別子を単一の識別子に置き換えてエイリアスすることにより、リオーダすることができないようにして、デッドロックを防止するデータ処理装置が提案されている(例えば、特許文献1参照。)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2008−041099号公報(図1)
【発明の概要】
【発明が解決しようとする課題】
【0008】
上述の従来技術では、リオーダを抑止することによりデッドロックの発生を防止しようとしている。しかしながら、インターコネクト内部の全てのスレーブへのアドレス発行を監視していない限り、あるマスタから複数スレーブに対して発行されたアドレスの到着順序を制御することは元来不可能である。そのため、それらの到着順序は必ずしもマスタの発行順序と一致するとは限らない。したがって、前述の例のようにスレーブが明示的にデータをリオーダしない場合であっても、デッドロックの可能性が存在する。
【0009】
本発明はこのような状況に鑑みてなされたものであり、スプリットトランザクションにより複数のスレーブへの同時アクセスを許容したシステムにおいて、デッドロックの発生を防止することを目的とする。
【課題を解決するための手段】
【0010】
本発明は、上記課題を解決するためになされたものであり、その第1の側面は、対応するマスタから複数のスレーブの何れかに先に発行された先行トランザクションに関する情報を管理する先行トランザクション情報管理部と、上記対応するマスタから新たに発行されたトランザクションがデッドロックの要因になるか否かを上記先行トランザクションに関する情報に基づいて判定して、デッドロックの要因になると判定した場合には当該トランザクションの発行を停止する発行停止判定部と、上記先行トランザクションに対する上記複数のスレーブからのレスポンスが予め期待された順序とは異なる順序で戻ってきた場合に上記予め期待された順序が維持されるように上記対応するマスタへの出力を制御するレスポンス出力制御部とを具備するデッドロック回避回路またはそのバスシステムである。これにより、複数のスレーブへの同時アクセスを許容したバスシステムにおいて、デッドロックの発生を防止するという作用をもたらす。
【0011】
また、この第1の側面において、上記先行トランザクションに対する上記複数のスレーブからのレスポンスが予め期待された順序とは異なる順序で戻ってきた場合に当該レスポンスを退避する退避バッファをさらに具備し、上記発行停止判定部は、上記退避バッファの容量に基づいて上記新たに発行されたトランザクションがデッドロックの要因になるか否かを判定するようにしてもよい。これにより、デッドロックとなる可能性を有するトランザクションの発行を、退避バッファの容量に相当する分、許容するという作用をもたらす。
【0012】
また、この第1の側面において、上記退避バッファは、上記複数のスレーブの何れかに設けられてもよい。これにより、何れかのスレーブを退避バッファとして機能させるという作用をもたらす。
【0013】
また、この第1の側面において、上記レスポンス出力制御部は、上記先行トランザクションに対する上記複数のスレーブからのレスポンスが予め期待された順序とは異なる順序で戻ってきた場合には当該レスポンスを破棄して当該レスポンスに対応するトランザクションを再度発行させるように制御してもよい。これにより、デッドロックとなる可能性を有するトランザクションの発行を許容するという作用をもたらす。
【0014】
また、本発明の第2の側面は、複数のマスタから複数のスレーブの何れかに先に発行された先行トランザクションの対象スレーブの識別子とその順番を含む先行トランザクション情報を管理する先行トランザクション情報管理部と、上記複数のマスタの何れかから新たに発行されたトランザクションがデッドロックの要因になるか否かを上記先行トランザクション情報に基づいて判定して、デッドロックの要因になると判定した場合には当該トランザクションの発行を停止する発行停止判定部とを具備するデッドロック回避回路またはそのバスシステムである。これにより、デッドロックの要因になるトランザクションの発行を停止するという作用をもたらす。
【発明の効果】
【0015】
本発明によれば、スプリットトランザクションにより複数のスレーブへの同時アクセスを許容したシステムにおいて、デッドロックの発生を防止することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【0016】
【図1】本発明の実施の形態におけるバスシステムの全体構成例を示す図である。
【図2】本発明の実施の形態におけるインターコネクト300の構成例を示す図である。
【図3】AXIプロトコルにおけるリードアドレスチャネルを構成する信号を示す図である。
【図4】AXIプロトコルにおけるリードデータチャネルを構成する信号を示す図である。
【図5】AXIプロトコルにおけるライトアドレスチャネルを構成する信号を示す図である。
【図6】AXIプロトコルにおけるライトデータチャネルを構成する信号を示す図である。
【図7】AXIプロトコルにおけるライトレスポンスチャネルを構成する信号を示す図である。
【図8】本発明の第1の実施の形態におけるデッドロック回避回路400の構成例を示す図である。
【図9】本発明の第1の実施の形態における先行トランザクション情報管理部410の構成例を示す図である。
【図10】本発明の第1の実施の形態における発行停止判定部420における判定フローの一例を示す図である。
【図11】本発明の第1の実施の形態におけるレスポンス出力制御部430の構成例を示す図である。
【図12】本発明の第2の実施の形態におけるデッドロック回避回路500の構成例を示す図である。
【図13】本発明の第2の実施の形態における先行トランザクション情報管理部510の構成例を示す図である。
【図14】本発明の第2の実施の形態における発行停止判定部520における判定フローの一例を示す図である。
【図15】本発明の第2の実施の形態におけるレスポンス出力制御部530の構成例を示す図である。
【図16】本発明の第3の実施の形態におけるデッドロック回避回路600の構成例を示す図である。
【図17】本発明の第3の実施の形態におけるレスポンス出力制御部630の構成例を示す図である。
【図18】本発明の第4の実施の形態におけるインターコネクト300の構成例を示す図である。
【図19】本発明の第4の実施の形態におけるデッドロック回避回路700の構成例を示す図である。
【図20】本発明の第4の実施の形態における先行トランザクション情報管理部710の構成例を示す図である。
【図21】本発明の第4の実施の形態における管理キュー711の登録例を示す図である。
【図22】本発明の第4の実施の形態における発行停止判定部720によるデッドロック判定手法を示す図である。
【図23】本発明の第4の実施の形態における発行停止判定部720における判定フローの一例を示す図である。
【図24】本発明の第4の実施の形態におけるデッドロック判定の第1の例を示す図である。
【図25】本発明の第4の実施の形態におけるデッドロック判定の第2の例を示す図である。
【図26】本発明の第4の実施の形態におけるデッドロック判定の第3の例を示す図である。
【図27】本発明の第4の実施の形態におけるデッドロック判定の第4の例を示す図である。
【発明を実施するための形態】
【0017】
以下、本発明を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(依存関係のあるレスポンスを退避バッファに退避する例)
2.第2の実施の形態(依存関係のあるレスポンスを破棄してリトライする例)
3.第3の実施の形態(退避バッファに代えてスレーブを利用する例)
4.第4の実施の形態(全マスタからのリクエストを一括管理する例)
【0018】
<1.第1の実施の形態>
[バスシステムの全体構成]
図1は、本発明の実施の形態におけるバスシステムの全体構成例を示す図である。このバスシステムでは、バスとして機能するインターコネクト300に、複数の接続機器が接続される。複数の接続機器は、M台のマスタ100とS台のスレーブ200とに分類される。マスタ100はデータ転送を主導する接続機器であり、スレーブ200は受動的に動作する接続機器である。マスタとなる接続機器としては、例えばプロセッサが想定される。スレーブとなる接続機器としては、例えばメモリが想定される。なお、MおよびSは1以上の整数である。
【0019】
図2は、本発明の実施の形態におけるインターコネクト300の構成例を示す図である。ここでは、マスタ100およびスレーブ200がそれぞれ2台ずつのバスシステムを想定して説明する。
【0020】
また、ここでは、データ転送の要求と実際のデータ転送とをそれぞれ独立して制御する(スプリットトランザクション)バスの代表例として、AXI(Advanced eXtensible Interface)プロトコルを想定する。このAXIプロトコルでは、リード動作のためのパスとして、リードアドレスチャネルおよびリードデータチャネルが用意されている。マスタ100からリードアドレスチャネルを介してスレーブ200にリードアドレスを含むリクエストが転送されると、これに応答してリードデータチャネルを介してスレーブ200からマスタ100にリードデータが転送されるようになっている。また、AXIプロトコルでは、ライト動作のためのパスとして、ライトアドレスチャネル、ライトデータチャネルおよびライトレスポンスチャネルが用意されている。マスタ100からライトアドレスチャネルおよびライトデータチャネルを介してスレーブ200にライトリクエストが転送されると、これに応答してスレーブ200においてライト動作が行われる。そして、そのライト動作の結果が、ライトレスポンスチャネルを介してスレーブ200からマスタ100に転送されるようになっている。
【0021】
AXIにおいて、リードアドレスチャネルおよびリードデータチャネルの組が1つのトランザクションを形成し、また、ライトアドレスチャネル、ライトデータチャネルおよびライトレスポンスチャネルの組が1つのトランザクションを形成する。1つのトランザクションを形成するチャネル同士には同じ識別子が付与するのがAXIにおける原則である。また、異なるトランザクション間で同じ識別子を付与した場合には、そのトランザクション間では順序保証を行う必要が生じ、依存関係(順序依存)を有することになる。
【0022】
AXIの場合、デッドロックを生じる原因となるのは、ライトアドレスチャネルとライトレスポンスチャネルとの間、リードアドレスチャネルとリードデータチャネルとの間、および、ライトアドレスチャネルとライトデータチャネルとの間の順序のねじれである。両者のデッドロック回避機構は本質的に同様であるため、以下ではライトアドレスチャネルおよびリードアドレスチャネルを総称してアドレスチャネルとし、ライトレスポンスチャネルおよびリードデータチャネルを総称してレスポンスチャネルとして扱う。アドレスチャネルの接続を扱うのがアドレスチャネルバスマトリックス310であり、レスポンスチャネルの接続を扱うのがレスポンスチャネルバスマトリックス320である。アドレスチャネルバスマトリックス310は、マスタ100側からのリクエストをスレーブ200側に伝える。レスポンスチャネルバスマトリックス320は、スレーブ200側からのレスポンスをマスタ100側に伝える。
【0023】
本発明の第1の実施の形態では、M台のマスタ100の各々に対応してデッドロック回避回路400を備えている。このデッドロック回避回路400は、対応するマスタ100のトランザクションがデッドロックを発生しないように動作制御を行う回路である。ここでは、アドレスチャネルを信号線10および20により示し、レスポンスチャネルを信号線30および40により示している。各信号線の矢印は、便宜上、主な信号に合わせているが、実際には制御信号を含めると両方向の信号のやりとりが行われる。
【0024】
AXIプロトコルでは、それぞれのチャネルにおいてバリッド信号(VALID)およびレディ信号(READY)がともにアサートされているときに情報の伝達(例えば、データ転送)が行われる。例えば、リードアドレスチャネルの場合、送信元であるマスタ100はリードアドレス等をセットするとともに、バリッド信号(ARVALID)を「1」にアサートする。このとき、受信側であるスレーブ200は、受信可能となるタイミングにおいてレディ信号(ARREADY)を「1」にアサートする。これにより、バリッド信号(ARVALID)およびレディ信号(ARREADY)がともに「1」にアサートされているときに、リードアドレス等が伝達される。
【0025】
[AXIプロトコルにおけるチャネル構成]
図3は、AXIプロトコルにおけるリードアドレスチャネルを構成する信号を示す図である。リードアドレスチャネルは、リードアドレスをマスタ100からスレーブ200に伝達するためのチャネルである。このリードアドレスチャネルは、リードアドレス識別子、リードアドレス、バースト長、バーストサイズ、バーストタイプ、ロックタイプ、キャッシュタイプ、プロテクションタイプ、リードアドレスバリッド、リードアドレスレディの各信号からなる。これらの信号のうち、リードアドレスレディのみがスレーブ200からの信号であり、これ以外はマスタ100からの信号である。
【0026】
リードアドレス識別子ARID[3:0]は、信号のリードアドレスグループを識別するための4ビットのタグである。AXIプロトコルでは、マスタがトランザクションを発行する際に、スレーブに対して順序関係を維持することを要求する場合には、同じ識別子を付与することになっている。換言すれば、識別子が異なるトランザクション間では順序関係が維持される保証はない。
【0027】
リードアドレスARADDR[31:0]は、リード対象となる32ビットのアドレスであり、バースト転送における初期アドレスを示す信号である。
【0028】
バースト長ARLEN[3:0]は、バースト転送のデータ数を示す4ビットの信号である。「1」から「16」の何れかのデータ数が4ビットにエンコードされて示される。
【0029】
バーストサイズARSIZE[2:0]は、バースト転送の各回における転送サイズを示す3ビットの信号である。「20」、「21」、「22」、「23」、「24」、「25」、「26」、「27」の何れかの転送サイズが3ビットにエンコードされて示される。
【0030】
バーストタイプARBURST[1:0]は、バースト転送のアドレス計算のタイプを示す2ビットの信号である。具体的には、FIFO型、連続アクセス、キャッシュラインの何れかのタイプを指定できるようになっている。
【0031】
ロックタイプARLOCK[1:0]は、アトミックアクセスのための情報を示す2ビットの信号である。具体的には、ノーマルアクセス、排他的アクセス、ロック付きアクセスの何れかのタイプを指定できるようになっている。
【0032】
キャッシュタイプARCACHE[3:0]は、キャッシュメモリ制御に必要な情報を示す4ビットの信号である。具体的には、キャッシュ可能か否か、ライトスルーかライトバックか等の制御情報が示される。
【0033】
プロテクションタイプARPROT[2:0]は、プロテクション制御に必要な情報を示す3ビットの信号である。具体的には、特権アクセス、非セキュアアクセス、インストラクションアクセスの各プロテクションレベルを指定できるようになっている。
【0034】
リードアドレスバリッドARVALIDは、アドレスおよび制御信号の有効性を示すバリッド信号である。リードアドレスレディARREADYは、スレーブ200がアドレスおよび制御信号を受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、リードアドレスバリッドARVALIDおよびリードアドレスレディARREADYがともにアサートされているときに、アドレスおよび制御信号の転送が行われる。
【0035】
図4は、AXIプロトコルにおけるリードデータチャネルを構成する信号を示す図である。リードデータチャネルは、リードデータをスレーブ200からマスタ100に転送するためのチャネルである。このリードデータチャネルは、リード識別子タグ、リードデータ、リードレスポンス、リードラスト、リードバリッド、リードレディの各信号からなる。これらの信号のうち、リードレディのみがマスタ100からの信号であり、これ以外はスレーブ200からの信号である。
【0036】
リード識別子タグRID[3:0]は、信号のリードデータグループを識別するための4ビットのタグである。このリード識別子タグRID[3:0]はスレーブにおいて生成されるものであり、リードアドレス識別子ARID[3:0]と一致していなければならない。
【0037】
リードデータRDATA[31:0]は、リードトランザクションによるスレーブ200からのリードデータである。ここでは32ビット幅のリードデータバスを想定したが、RDATAのビット幅はリードデータバス幅に応じて変化する。リードデータバスは、8、16、32、64、128、256、512および1024の何れかのビット幅を有する。
【0038】
リードレスポンスRRESP[1:0]は、リードトランザクションによるデータ転送の状態を示す2ビットの信号である。信号内容の詳細については後述する。
【0039】
リードラストRLASTは、リードトランザクションにおける最終のデータ転送である旨を示す信号である。
【0040】
リードバリッドRVALIDは、要求されたリードデータの有効性を示すバリッド信号である。リードレディRREADYは、マスタ100がリードデータを受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、リードバリッドRVALIDおよびリードレディRREADYがともにアサートされているときに、リードデータの転送が行われる。
【0041】
図5は、AXIプロトコルにおけるライトアドレスチャネルを構成する信号を示す図である。ライトアドレスチャネルは、ライトアドレスをマスタ100からスレーブ200に伝達するためのチャネルである。このライトアドレスチャネルは、ライトアドレス識別子、ライトアドレス、バースト長、バーストサイズ、バーストタイプ、ロックタイプ、キャッシュタイプ、プロテクションタイプ、ライトアドレスバリッド、ライトアドレスレディの各信号からなる。これらの信号のうち、ライトアドレスレディのみがスレーブ200からの信号であり、これ以外はマスタ100からの信号である。
【0042】
ライトアドレス識別子AWID[3:0]は、信号のライトアドレスグループを識別するための4ビットのタグである。ライトアドレスAWADDR[31:0]は、ライト対象となる32ビットのアドレスであり、バースト転送における初期アドレスを示す信号である。
【0043】
バースト長AWLEN[3:0]は、バースト転送のデータ数を示す4ビットの信号である。バーストサイズAWSIZE[2:0]は、バースト転送の各回における転送サイズを示す3ビットの信号である。バーストタイプAWBURST[1:0]は、バースト転送のアドレス計算のタイプを示す2ビットの信号である。ロックタイプAWLOCK[1:0]は、アトミックアクセスのための情報を示す2ビットの信号である。キャッシュタイプAWCACHE[3:0]は、キャッシュメモリ制御に必要な情報を示す4ビットの信号である。プロテクションタイプAWPROT[2:0]は、プロテクション制御に必要な情報を示す3ビットの信号である。これらは基本的にリードアドレスチャネルの場合と同様である。
【0044】
ライトアドレスバリッドAWVALIDは、アドレスおよび制御信号の有効性を示すバリッド信号である。ライトアドレスレディAWREADYは、スレーブ200がアドレスおよび制御信号を受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、ライトアドレスバリッドAWVALIDおよびライトアドレスレディAWREADYがともにアサートされているときに、アドレスおよび制御信号の転送が行われる。
【0045】
図6は、AXIプロトコルにおけるライトデータチャネルを構成する信号を示す図である。ライトデータチャネルは、ライトデータをマスタ100からスレーブ200に転送するためのチャネルである。このライトデータチャネルは、ライト識別子タグ、ライトデータ、ライトストローブ、ライトラスト、ライトバリッド、ライトレディの各信号からなる。これらの信号のうち、ライトレディのみがスレーブ200からの信号であり、これ以外はマスタ100からの信号である。
【0046】
ライト識別子タグWID[3:0]は、信号のライトデータグループを識別するための4ビットのタグである。このライト識別子タグWID[3:0]は、ライトアドレス識別子AWID[3:0]と一致していなければならない。
【0047】
ライトデータWDATA[31:0]は、ライトトランザクションによるスレーブ200へのライトデータである。ここでは32ビット幅のライトデータバスを想定したが、WDATAのビット幅はリードデータバス幅に応じて変化する。ライトデータバスは、8、16、32、64、128、256、512および1024の何れかのビット幅を有する。
【0048】
ライトストローブWSTRB[3:0]は、スレーブ200のメモリにおいて更新されるべきバイト位置を示す4ビットの信号である。ライトデータバスの8ビット毎にライトストローブWSTRB[3:0]の1ビットが割り当てられる。すなわち、WSTRB[i]は、WDATA[(8×i)+7:(8×i)]に対応する。
【0049】
ライトラストWLASTは、ライトトランザクションにおける最終のデータ転送である旨を示す信号である。
【0050】
ライトバリッドWVALIDは、ライトデータの有効性を示すバリッド信号である。ライトレディWREADYは、スレーブ200がライトデータを受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、ライトバリッドWVALIDおよびライトレディWREADYがともにアサートされているときに、ライトデータの転送が行われる。
【0051】
図7は、AXIプロトコルにおけるライトレスポンスチャネルを構成する信号を示す図である。ライトレスポンスチャネルは、ライトトランザクションの結果をスレーブ200からマスタ100に伝達するためのチャネルである。このライトレスポンスチャネルは、レスポンス識別子、ライトレスポンス、ライトレスポンスバリッド、レスポンスレディの各信号からなる。これらの信号のうち、レスポンスレディのみがマスタ100からの信号であり、これ以外はスレーブ200からの信号である。
【0052】
レスポンス識別子BID[3:0]は、ライトレスポンスを識別するための4ビットのタグである。このレスポンス識別子BID[3:0]は、ライトアドレス識別子AWID[3:0]と一致していなければならない。
【0053】
ライトレスポンスBRESP[1:0]は、ライトトランザクションによるデータ転送の状態を示す2ビットの信号である。信号内容の詳細については後述する。
【0054】
ライトレスポンスバリッドBVALIDは、ライトレスポンスの有効性を示すバリッド信号である。レスポンスレディBREADYは、マスタ100がライトレスポンスを受け取ることができる状態にあるか否かを示すレディ信号である。前述のように、ライトレスポンスバリッドBVALIDおよびレスポンスレディBREADYがともにアサートされているときに、ライトレスポンスの伝達が行われる。
【0055】
[デッドロック回避回路の構成]
図8は、本発明の第1の実施の形態におけるデッドロック回避回路400の構成例を示す図である。このデッドロック回避回路400は、先行トランザクション情報管理部410と、発行停止判定部420と、レスポンス出力制御部430と、退避バッファ470とを備えている。また、このデッドロック回避回路400は、ラッチ442と、論理積ゲート451および452と、デマルチプレクサ460と、マルチプレクサ480と、論理積ゲート491とを備えている。
【0056】
先行トランザクション情報管理部410は、対応するマスタ100から複数のスレーブの何れかに先に発行された先行トランザクションに関する情報(先行トランザクション情報)を管理するものである。この先行トランザクション情報管理部410は先行トランザクション情報を保持する管理キューを有しており、その情報を発行停止判定部420およびレスポンス出力制御部430に供給する。
【0057】
発行停止判定部420は、先行トランザクション情報管理部410において管理された先行トランザクション情報に基づいて、対応するマスタ100から新たに発行されたトランザクションがデッドロックの要因になるか否かを判定するものである。この発行停止判定部420は、新たに発行されたトランザクションがデッドロックの要因になると判定した場合には、当該トランザクションの発行を停止する。この発行停止判定部420は、先行トランザクション情報管理部410の管理キューが満杯でない旨を示すXFULL信号と、対応するマスタ100から異なる複数のスレーブ200へのアクセスに関する情報を示すSTATUS信号およびPID信号を受ける。PID信号は異なる複数のスレーブ200へのアクセスを発生しているトランザクションの識別子を示し、STATUS信号はPID信号に対応するアクセスの個数を示す。また、この発行停止判定部420は、対応するマスタ100から新たに発行されたトランザクションの識別子を示すDID信号を受ける。これらの情報に基づいて、発行停止判定部420は当該トランザクションの発行を停止するか否かを判定し、停止する場合にはSTOP信号をアクティブにする。
【0058】
なお、ここでは、先行トランザクション情報管理部410においてSTATUS信号およびPID信号を生成して、これらに基づいて発行停止判定部420が判定を行うことを想定したが、本発明はこれに限定されるものではない。例えば、先行トランザクション情報管理部410の管理キューの全ての内容を発行停止判定部420が参照して判定を行うようにしてもよい。
【0059】
レスポンス出力制御部430は、先行トランザクション情報管理部410において管理された先行トランザクション情報に基づいて、対応するマスタ100へ返送すべきレスポンスを制御するものである。このレスポンス出力制御部430は、先行トランザクションに対する複数のスレーブ200からのレスポンスが予め期待された順序とは異なる順序で戻ってきた場合に、その予め期待された順序が維持されるように対応するマスタ100への出力を制御する。
【0060】
退避バッファ470は、先行トランザクションに対する複数のスレーブ200からのレスポンスが予め期待された順序とは異なる順序で戻ってきた場合に、そのレスポンスを退避するためのバッファである。この退避バッファ470への入力および出力は、先行トランザクション情報管理部410において管理された先行トランザクション情報に基づいて、レスポンス出力制御部430によって制御される。
【0061】
ラッチ442は、アドレスチャネルにおける対応するマスタ100からの信号を保持するラッチである。論理積ゲート451は、ラッチ442にラッチされたAVALID信号をSTOP信号によりマスクするためのものである。すなわち、発行停止判定部420からのSTOP信号が停止する旨を示している場合には、AVALID信号がマスクされてアドレスチャネルの信号はラッチ442に保留される。論理積ゲート452は、スレーブ200側からのAREADY信号(AREADY_IN信号)と論理積ゲート451の出力との論理積演算を行うものである。この論理積ゲート452の出力がアクティブであれば、マスタ100からの新たなトランザクションが先行トランザクション情報管理部410の管理キューに保持される。すなわち、アドレスチャネルにおいてマスタ100からのAVALID信号およびスレーブ200からのAREADY信号がともにアクティブであれば、PUSH信号がアクティブになり、管理キューへのプッシュ動作が実行される。
【0062】
デマルチプレクサ460は、スレーブ200からのレスポンスを退避バッファ470またはマスタ100側の何れかに分配するものである。マルチプレクサ480は、デマルチプレクサ460から直接受け取ったまたは退避バッファに一旦退避された、何れかのレスポンスを選択して、マスタ100へ供給するものである。デマルチプレクサ460およびマルチプレクサ480に対する制御信号は、レスポンス出力制御部430から供給される。
【0063】
論理積ゲート491は、マスタ100側からのRREADY信号(RREADY_IN信号)とスレーブ200側からのRVALID信号との論理積演算を行うものである。この論理積ゲート491の出力がアクティブであれば、先行トランザクション情報管理部410の管理キューに保持されていたトランザクションが解放される。すなわち、アドレスチャネルにおいてマスタ100側からのRREADY信号(RREADY_IN信号)とスレーブ200側からのRVALID信号がともにアクティブであれば、POP信号がアクティブになり、管理キューからのポップ動作が実行される。
【0064】
図9は、本発明の第1の実施の形態における先行トランザクション情報管理部410の構成例を示す図である。この先行トランザクション情報管理部410は、管理キュー411と、管理情報生成部412と、キュー状態生成部413とを備えている。
【0065】
管理キュー411は、先行トランザクション情報をFIFO(First-In First-Out:先入れ先出し)方式により保持するキューである。先行トランザクション情報は、トランザクションの識別子IDと行き先スレーブ番号TGTのペアにより構成され、管理キュー411の各エントリに保持される。また、各エントリには、保持される先行トランザクション情報の有効性を示すバリッド信号Vが保持される。この管理キュー411は、先行トランザクション情報をx組(xは整数)保持し得るものとし、信号線401からバリッド信号Vを、信号線402から識別子IDを、信号線403から行き先スレーブ番号TGTをそれぞれ出力する。この管理キュー411への新たなエントリ(ID_INとTGT_INのペア)の追加は、論理積ゲート452の出力であるPUSH信号を契機として実行される。一方、この管理キュー411からの削除は、論理積ゲート491の出力であるPOP信号を契機として実行される。なお、AXIにおけるスレーブ側のプロトコルとして、異なる識別子を有するトランザクションのみリオーダすることが許されている。そのため、本発明の実施の形態のように、行き先スレーブ番号を利用したトランザクションの管理が可能となっている。
【0066】
管理情報生成部412は、管理キュー411に保持される先行トランザクション情報に関する情報を生成するものである。すなわち、この管理情報生成部412は、対応するマスタ100から異なる複数のスレーブ200へのアクセスに関する情報を示すSTATUS信号およびPID信号を生成する。上述のように、PID信号は異なる複数のスレーブ200へのアクセスを発生しているトランザクションの識別子を示し、STATUS信号はPID信号に対応するアクセスの個数を示す。
【0067】
キュー状態生成部413は、管理キュー411の状態を生成するものである。すなわち、このキュー状態生成部413は、先行トランザクション情報管理部410の管理キューが満杯でない旨を示すXFULL信号を生成する。
【0068】
図10は、本発明の第1の実施の形態における発行停止判定部420における判定フローの一例を示す図である。発行停止判定部420では、マスタ100から新たなトランザクションが入力されると(ステップS911)、そのトランザクションの発行可否が判定される。
【0069】
まず、先行トランザクションと新規トランザクションとの間で依存関係があり、かつ、それらの行き先スレーブが異なるものであるか否かが判定される(ステップS912)。先行トランザクションと新規トランザクションとの間で依存関係がなければ、デッドロックを考慮する必要がないため、その新規トランザクションは発行可能となる(ステップS915)。また、依存関係があったとしても、それらの行き先スレーブが一致していれば、スレーブ200側で順序を保証する限りは追い越しを生じないため、同様に新規トランザクションは発行可能となる(ステップS915)。これに対し、依存関係があり、かつ、それらの行き先スレーブが異なるものである場合には、次の判定(ステップS914)が行われる。
【0070】
すなわち、依存関係のある先行トランザクション間において、異なる行き先スレーブに対して発行されたトランザクションは何組あるかが判断される(ステップS914)。退避バッファ470の段数をnと仮定して、n組未満であれば退避バッファ470へ退避可能であるため、新規トランザクションは発行可能となる(ステップS915)。一方、既にn組以上発行されているのであれば、新規トランザクションの発行は停止される(ステップS916)。
【0071】
図11は、本発明の第1の実施の形態におけるレスポンス出力制御部430の構成例を示す図である。このレスポンス出力制御部430は、レスポンストランザクション発行履歴探索部431と、レスポンストランザクション返却順序判定部433とを備えている。また、このレスポンス出力制御部430は、バッファトランザクション発行履歴探索部432と、バッファトランザクション返却順序判定部434と、バッファトランザクション優先処理部435とを備えている。
【0072】
レスポンストランザクション発行履歴探索部431は、スレーブ200からのレスポンスの識別子と一致する発行済トランザクションを管理キュー411において探索するものである。すなわち、このレスポンストランザクション発行履歴探索部431は、スレーブ200からのレスポンスの識別子RIDと管理キュー411のID1乃至x402の各々とを比較して、一致するものを探索する。
【0073】
レスポンストランザクション返却順序判定部433は、レスポンストランザクション発行履歴探索部431において探索されたトランザクションのうち、スレーブ200からのレスポンスの行き先スレーブ番号と一致するものの返却順序を判定するものである。すなわち、このレスポンストランザクション返却順序判定部433は、探索されたトランザクションの行き先スレーブ番号TGT403とスレーブ200からのレスポンスの行き先スレーブ番号RTGTとを比較して、一致するものを探索する。そして、その一致するトランザクションが最も古いものでなければ、route_shltr_w信号をアクティブにする。このroute_shltr_w信号は、スレーブ200からのレスポンスを退避バッファ470に退避させるよう指示するための信号である。
【0074】
バッファトランザクション発行履歴探索部432は、退避バッファ470の先頭に退避されたレスポンスの識別子と一致する発行済トランザクションを管理キュー411において探索するものである。すなわち、このバッファトランザクション発行履歴探索部432は、退避バッファ470の先頭に退避されたレスポンスの識別子SIDと管理キュー411のID1乃至x402の各々とを比較して、一致するものを探索する。
【0075】
バッファトランザクション返却順序判定部434は、バッファトランザクション発行履歴探索部432において探索されたトランザクションのうち、退避バッファ470の先頭に退避されたレスポンスの行き先スレーブ番号と一致するものの返却順序を判定するものである。すなわち、このバッファトランザクション返却順序判定部434は、探索されたトランザクションの行き先スレーブ番号TGT403と退避バッファ470の先頭に退避されたレスポンスの行き先スレーブ番号STGTとを比較して、一致するものを探索する。そして、その一致するトランザクションが最も古いものであれば、drain_shltr_w信号をアクティブにする。このdrain_shltr_w信号は、退避バッファ470に保持されている先頭のレスポンスをマスタ100に返却するよう指示するための信号である。
【0076】
バッファトランザクション優先処理部435は、退避バッファ470内のレスポンスがマスタ100に返却可能な場合、そのレスポンスを優先して処理するよう制御するものである。したがって、退避バッファ470内のレスポンスがマスタ100に返却可能な場合には、その返却処理が優先され、新たにスレーブ200から到着したレスポンスに関する処理は保留される。すなわち、退避バッファ470の先頭のレスポンスを取り出すコマンドDRAIN_SHELTERは、
DRAIN_SHELTER=drain_shltr_w&
ANY_IN_SHELTER
により表される。ただし、ANY_IN_SHELTER信号は、退避バッファ470に少なくとも1つのレスポンスが退避されている場合にアクティブになる信号である。また、退避バッファ470へのレスポンスの退避を指示するコマンドROUTE_SHELTERは、
ROUTE_SHELTER=NOT(DRAIN_SHELTER)&
route_shltr_w
により表される。
【0077】
このように、本発明の第1の実施の形態によれば、レスポンスの返却順序が期待通りでなかった場合の退避先として退避バッファ470を設けることにより、依存関係にあり且つ異なるスレーブに発行されるトランザクションを許容することができる。この場合、退避バッファ470に退避できるレスポンスは最大でn組に限られるため、該当するレスポンスがn組を超えることになる場合には発行停止判定部420においてトランザクションの発行が停止される。
【0078】
<2.第2の実施の形態>
次に、本発明の第2の実施の形態について説明する。上述の第1の実施の形態では退避バッファ470を想定したが、この第2の実施の形態では退避バッファ470を設けずに、レスポンスの返却順序が期待通りでなかった場合には当該レスポンスを破棄してリトライを要求する。なお、バスシステムの全体構成は図1により説明したものと同様である。
【0079】
[デッドロック回避回路の構成]
図12は、本発明の第2の実施の形態におけるデッドロック回避回路500の構成例を示す図である。このデッドロック回避回路500は、先行トランザクション情報管理部510と、発行停止判定部520と、レスポンス出力制御部530と、セレクタ541と、ラッチ542と、論理積ゲート551、552、561および591とを備えている。
【0080】
先行トランザクション情報管理部510は、先行トランザクション情報管理部410と同様に、対応するマスタ100から先に発行されたトランザクションの先行トランザクション情報を管理するものである。管理キューを有して、その情報を発行停止判定部520およびレスポンス出力制御部530に供給する点も先行トランザクション情報管理部410と同様である。ただし、レスポンス出力制御部530からのRETRY要求により、管理キューのRETRY_IDXに保持されるトランザクションについてリトライコマンドRETRY_CMDを出力する点が異なっている。
【0081】
発行停止判定部520は、発行停止判定部420と同様に、先行トランザクション情報に基づいて、対応するマスタ100から新たに発行されたトランザクションがデッドロックの要因になるか否かを判定するものである。この発行停止判定部520は、当該トランザクションの発行を停止するか否かを判定し、停止する場合にはSTOP信号をアクティブにする。ただし、この第2の実施の形態では退避バッファを有さないことを想定しているため、退避バッファの段数は考慮されない。
【0082】
レスポンス出力制御部530は、レスポンス出力制御部430と同様に、先行トランザクション情報に基づいて、対応するマスタ100へ返送すべきレスポンスを制御するものである。ただし、この第2の実施の形態では退避バッファを有さないことを想定しているため、制御対象となるのはスレーブ200から戻ってきたレスポンスだけである。
【0083】
セレクタ541は、アドレスチャネルにおける対応するマスタ100から新たに発行されたトランザクションまたは先行トランザクション情報管理部510から要求されたリトライに係るトランザクションの何れか一方を選択する選択器である。ラッチ542は、セレクタ541によって選択されたトランザクションの信号を保持するラッチである。論理積ゲート551は、論理積ゲート451と同様に、ラッチ542にラッチされたAVALID信号をSTOP信号によりマスクするためのものである。論理積ゲート552は、論理積ゲート452と同様に、スレーブ200側からのAREADY信号(AREADY_IN信号)と論理積ゲート551の出力との論理積演算を行うものである。論理積ゲート561は、レスポンス出力制御部530からリトライの指示がされた際に、スレーブ200からのレスポンスチャネル30のRVALID信号(RVALID_IN信号)をマスクするためのものである。この論理積ゲート561の出力がアクティブであれば、スレーブ200からのレスポンスは破棄される。論理積ゲート591は、論理積ゲート491と同様に、マスタ100側からのRREADY信号(RREADY_IN信号)とスレーブ200側からのRVALID信号との論理積演算を行うものである。この論理積ゲート591の出力がアクティブであれば、先行トランザクション情報管理部510の管理キューに保持されていたトランザクションが解放される。
【0084】
図13は、本発明の第2の実施の形態における先行トランザクション情報管理部510の構成例を示す図である。この先行トランザクション情報管理部510は、管理キュー511と、管理情報生成部512と、キュー状態生成部513と、論理和ゲート514と、セレクタ515とを備えている。
【0085】
管理キュー511は、管理キュー411と同様に、先行トランザクション情報をFIFO方式により保持するキューである。管理情報生成部512は、管理情報生成部412と同様に、管理キュー511に保持される先行トランザクション情報に関する情報として、STATUS信号およびPID信号を生成するものである。キュー状態生成部513は、キュー状態生成部413と同様に、管理キュー511の状態として、管理キュー511が満杯でない旨を示すXFULL信号を生成するものである。
【0086】
論理和ゲート514は、POP信号とRETRY信号の論理和を生成するものである。この論理和ゲート514の出力は、管理キュー511の先頭から先行トランザクション情報を取り出すためのポップ信号として用いられる。すなわち、第1の実施の形態では論理積ゲート491の出力をそのままポップ信号として用いていたが、この第2の実施の形態ではレスポンス出力制御部530からのRETRY信号がアクティブなときにもポップ動作が行われるようになっている。
【0087】
セレクタ515は、管理キュー511のエントリの中からRETRY_IDX信号によって指定されたエントリを選択するものである。このセレクタ515の出力は、RETRY_CMDとしてセレクタ541の一方の入力端子に供給される。これにより、管理キュー511の任意のエントリに保持されたトランザクションについてリトライ動作が行われる。
【0088】
図14は、本発明の第2の実施の形態における発行停止判定部520における判定フローの一例を示す図である。この第2の実施の形態の判定フローは、図10により説明した第1の実施の形態の判定フローと同様であり、ステップS921乃至S926はそれぞれステップS911乃至S916に相当する。ただし、第1の実施の形態のステップS914においては依存関係のある先行トランザクションであって異なる行き先スレーブに対して発行されたトランザクションを退避バッファ470の段数nに相当するn組を許容していた。これに対し、第2の実施の形態のステップS924では管理キュー511のエントリ数xに相当するx組を許容している。x組を超える場合には先行トランザクション情報管理部510では管理できなくなるからである。
【0089】
図15は、本発明の第2の実施の形態におけるレスポンス出力制御部530の構成例を示す図である。このレスポンス出力制御部530は、レスポンストランザクション発行履歴探索部531と、レスポンストランザクション返却順序判定部533とを備えている。
【0090】
レスポンストランザクション発行履歴探索部531は、レスポンストランザクション発行履歴探索部431と同様に、スレーブ200からのレスポンスの識別子と一致する発行済トランザクションを管理キュー511において探索するものである。
【0091】
レスポンストランザクション返却順序判定部533は、レスポンストランザクション返却順序判定部433と同様に、探索されたトランザクションのうち、スレーブ200からのレスポンスの行き先スレーブ番号と一致するものの返却順序を判定するものである。すなわち、このレスポンストランザクション返却順序判定部533は、一致するトランザクションが最も古いものでなければ、そのエントリ番号をRETRY_IDXとして、リトライ要求を指示するRETRY信号を出力する。
【0092】
このように、本発明の第2の実施の形態によれば、レスポンスの返却順序が期待通りでなかった場合に当該レスポンスを破棄することによりマスタ100への返却順序を担保することができる。この場合、レスポンスを破棄されたトランザクションは、リトライ要求により再度スレーブ200に対する要求が実行される。この第2の実施の形態は、第1の実施の形態と比較して、退避バッファ470を有していない分、簡易な構成とすることができる。
【0093】
<3.第3の実施の形態>
次に、本発明の第3の実施の形態について説明する。上述の第1の実施の形態では退避バッファ470をデッドロック回避回路400内に想定したが、この第3の実施の形態ではスレーブ200を退避バッファとして利用する。なお、バスシステムの全体構成は図1により説明したものと同様である。
【0094】
[デッドロック回避回路の構成]
図16は、本発明の第3の実施の形態におけるデッドロック回避回路600の構成例を示す図である。このデッドロック回避回路600は、先行トランザクション情報管理部610と、発行停止判定部620と、レスポンス出力制御部630と、セレクタ641と、ラッチ642と、論理積ゲート651、652および691とを備えている。
【0095】
先行トランザクション情報管理部610は、先行トランザクション情報管理部410と同様に、対応するマスタ100から先に発行されたトランザクションの先行トランザクション情報を管理するものである。管理キューを有して、その情報を発行停止判定部620およびレスポンス出力制御部630に供給する点も先行トランザクション情報管理部410と同様である。
【0096】
発行停止判定部620は、発行停止判定部420と同様に、先行トランザクション情報に基づいて、対応するマスタ100から新たに発行されたトランザクションがデッドロックの要因になるか否かを判定するものである。この発行停止判定部620は、当該トランザクションの発行を停止するか否かを判定し、停止する場合にはSTOP信号をアクティブにする。
【0097】
レスポンス出力制御部630は、レスポンス出力制御部430と同様に、先行トランザクション情報に基づいて、対応するマスタ100へ返送すべきレスポンスを制御するものである。ただし、この第3の実施の形態ではスレーブ200を退避バッファとして利用することを想定しているため、退避すべきレスポンスはスレーブ200に対するコマンドとして制御される。
【0098】
セレクタ641は、アドレスチャネルにおける対応するマスタ100から新たに発行されたトランザクションまたはレスポンス出力制御部630から出力された外部コマンドに係るトランザクションの何れか一方を選択する選択器である。ラッチ642は、セレクタ641によって選択されたトランザクションの信号を保持するラッチである。論理積ゲート651は、論理積ゲート451と同様に、ラッチ642にラッチされたAVALID信号をSTOP信号によりマスクするためのものである。論理積ゲート652は、論理積ゲート452と同様に、スレーブ200側からのAREADY信号(AREADY_IN信号)と論理積ゲート651の出力との論理積演算を行うものである。論理積ゲート691は、論理積ゲート491と同様に、マスタ100側からのRREADY信号(RREADY_IN信号)とスレーブ200側からのRVALID信号との論理積演算を行うものである。この論理積ゲート691の出力がアクティブであれば、先行トランザクション情報管理部610の管理キューに保持されていたトランザクションが解放される。
【0099】
図17は、本発明の第3の実施の形態におけるレスポンス出力制御部630の構成例を示す図である。このレスポンス出力制御部630は、レスポンス出力制御部430と同様の構成を備えている。ただし、この第3の実施の形態では退避バッファはスレーブ200に配置されているため、退避バッファを模擬するために、さらにバッファトランザクション情報保持部636と、コマンド生成部637とを備えている。また、バッファトランザクション優先処理部435に代えてバッファトランザクション優先処理部635を備えている。
【0100】
バッファトランザクション情報保持部636は、退避バッファとして動作するスレーブ200からの退避データを保持するものである。すなわち、このバッファトランザクション情報保持部636は、スレーブ200からのレスポンスに係るトランザクション識別子RIDおよびそのスレーブ番号RTGTを保持する。このバッファトランザクション情報保持部636に保持されたトランザクション識別子RIDおよびそのスレーブ番号RTGTは、それぞれ退避されたトランザクション識別子SIDおよびそのスレーブ番号STGTとして供給される。バッファトランザクション発行履歴探索部632は、退避されたトランザクション識別子SIDをバッファトランザクション情報保持部636から受け取る。バッファトランザクション返却順序判定部634は、退避されたトランザクションのスレーブ番号STGTをバッファトランザクション情報保持部636から受け取る。
【0101】
バッファトランザクション優先処理部635は、スレーブ200の退避バッファ内のレスポンスがマスタ100に返却可能な場合、そのレスポンスを優先して処理するよう制御するものである。したがって、スレーブ200の退避バッファ内のレスポンスがマスタ100に返却可能な場合には、その返却処理が優先され、新たにスレーブ200から到着したレスポンスに関する処理は保留される。すなわち、スレーブ200の退避バッファからリード動作を行って退避データを取り出す信号ISSUE_READは、
ISSUE_READ=drain_shltr_w&
ANY_IN_SHELTER
により表される。ただし、ANY_IN_SHELTER信号は、DRAIN_SHELTER信号が「1」になると「0」に遷移し、ROUTE_SHELTER信号が「1」になると「1」に遷移する信号である。また、スレーブ200の退避バッファにライト動作を行って、返却されたレスポンスを格納する信号ISSUE_WRITEは、
ISSUE_WRITE=NOT(ISSUE_READ)&
route_shltr_w
により表される。
【0102】
コマンド生成部637は、バッファトランザクション優先処理部635からの信号ISSUE_READおよびISSUE_WRITEに基づいて、スレーブ200の退避バッファへのアクセスコマンドを生成するものである。信号ISSUE_READがアクティブな場合、コマンド生成部637は、スレーブ200の退避バッファの特定アドレスに対してリード動作を行うコマンドを生成し、退避データを取り出す。信号ISSUE_WRITEがアクティブな場合、コマンド生成部637は、スレーブ200の退避バッファの特定アドレスに対してライト動作を行うコマンドを生成し、返却されたレスポンスを格納する。このコマンド生成部637によって生成されたコマンドはEXT_COMMANDとしてセレクタ641の入力端子の一つに供給される。
【0103】
このように、本発明の第3の実施の形態によれば、レスポンスの返却順序が期待通りでなかった場合の退避先としての退避バッファをスレーブ200内に設けることにより、依存関係にあり且つ異なるスレーブに発行されるトランザクションを許容することができる。
【0104】
<4.第4の実施の形態>
次に、本発明の第4の実施の形態について説明する。上述の第1乃至3の実施の形態ではマスタ100毎に対応して個別にデッドロック回避回路を設けていたが、この第4の実施の形態では全てのマスタ100に共通して1つのデッドロック回避回路を設ける。なお、バスシステムとしての全体構成は図1により説明したものと同様である。
【0105】
[インターコネクトの構成]
図18は、本発明の第4の実施の形態におけるインターコネクト300の構成例を示す図である。ここでは、マスタ100およびスレーブ200がそれぞれ2台ずつのバスシステムを想定して説明する。なお、AXIプロトコルを想定する点は上述の第1乃至3の実施の形態と同様である。
【0106】
本発明の第4の実施の形態では、全てのマスタ100に共通して1つのデッドロック回避回路700を備えている。このデッドロック回避回路700は、マスタ100のトランザクションがデッドロックを発生しないように動作制御を行う回路である。ここでは、1台目のマスタ100(#1)のアドレスチャネルを信号線11および21により示し、レスポンスチャネルを信号線31および41により示している。また、2台目のマスタ100(#2)のアドレスチャネルを信号線12および22により示し、レスポンスチャネルを信号線32および42により示している。各信号線の矢印は、便宜上、主な信号に合わせているが、実際には制御信号を含めると両方向の信号のやりとりが行われる。
【0107】
[デッドロック回避回路の構成]
図19は、本発明の第4の実施の形態におけるデッドロック回避回路700の構成例を示す図である。このデッドロック回避回路700は、先行トランザクション情報管理部710と、発行停止判定部720と、レスポンス出力制御部730と、論理積ゲート741および742を備えている。
【0108】
先行トランザクション情報管理部710は、マスタ100毎に先行トランザクション情報を管理するものである。この先行トランザクション情報管理部710はマスタ100毎に対応して先行トランザクション情報を保持する管理キューを有しており、その情報を信号線719を介して発行停止判定部720に供給する。
【0109】
発行停止判定部720は、先行トランザクション情報管理部710において管理された先行トランザクション情報に基づいて、マスタ100から新たに発行されたトランザクションがデッドロックの要因になるか否かを判定するものである。この発行停止判定部720は、新たに発行されたトランザクションがデッドロックの要因になると判定した場合には、当該トランザクションの発行を停止する。この発行停止判定部720は、新たに発行されたトランザクションによるアクセスが、転送中の「たすきがけ」の関係になるか否かを判定し、デッドロックの可能性を検出する。具体的な判定方法については後述する。この発行停止判定部720によってデッドロックの可能性がないと判定された場合には、当該トランザクションに関する情報が信号線729を介して先行トランザクション情報管理部710に通知され、対応する管理キューに登録される。
【0110】
論理積ゲート741および742は、発行停止判定部720からのSTOP信号によってアドレスチャネルのAVALID信号をマスクするためのものである。ここでは、1台目のマスタ100(#1)のSTOP信号が信号線721を介して供給されると、マスタ100(#1)のAVALID信号が論理積ゲート741によってマスクされる。また、2台目のマスタ100(#2)のSTOP信号が信号線722を介して供給されると、マスタ100(#2)のAVALID信号が論理積ゲート742によってマスクされる。
【0111】
レスポンス出力制御部730は、スレーブ200からのレスポンスがマスタ100へ返却された際、アウトスタンディングな転送が終了した旨を、信号線739を介して先行トランザクション情報管理部710に対して通知するものである。
【0112】
図20は、本発明の第4の実施の形態における先行トランザクション情報管理部710の構成例を示す図である。この先行トランザクション情報管理部710は、M台のマスタ100のそれぞれに対応して管理キュー711−1乃至Mを備えている。管理キュー711−1乃至Mは、先行トランザクション情報をFIFO方式により保持するキューである。ここでは、先行トランザクション情報として、行き先スレーブ番号TGTを保持することを想定している。したがって、管理キュー711−1乃至Mの各々によって、行き先スレーブ番号および発行順序の情報を管理することができる。これら情報は、信号線719を介して発行停止判定部720に供給される。
【0113】
管理キュー711−1乃至Mには、マスタ100からのアクセス要求が発行停止判定部720によって許可された際に、対応するマスタ100の管理キューに行き先スレーブ番号が登録される(信号線729)。また、スレーブ200からマスタ100に対してレスポンスが返却された際に、対応するマスタ100の管理キューから行き先スレーブ番号が削除される(信号線739)。
【0114】
図21は、本発明の第4の実施の形態における管理キュー711の登録例を示す図である。ここでは、最初に1台目のマスタ100(M1)から1台目のスレーブ200(S1)へトランザクションM11が発行され、2台目のマスタ100(M2)から2台目のスレーブ200(S2)へトランザクションM21が発行されたものとする(同図(a))。このとき、同図(b)のように、1台目のマスタ100(M1)に対応する管理キュー711−1にはスレーブ番号S1が登録され、2台目のマスタ100(M2)に対応する管理キュー711−2にはスレーブ番号S2が登録される。
【0115】
次に、1台目のマスタ100(M1)から2台目のスレーブ200(S2)へトランザクションM12が発行され、2台目のマスタ100(M2)から1台目のスレーブ200(S1)へトランザクションM22が発行されたものとする(同図(a))。このとき、同図(c)のように、1台目のマスタ100(M1)に対応する管理キュー711−1にはスレーブ番号S2が登録され、2台目のマスタ100(M2)に対応する管理キュー711−2にはスレーブ番号S1が登録される。
【0116】
図22は、本発明の第4の実施の形態における発行停止判定部720によるデッドロック判定手法を示す図である。発行停止判定部720は、同図(a)のような仮想回路811および812を用いてデッドロックの可能性を判定する。仮想回路811は1台目のマスタ100(M1)のアクセスの依存関係を表すブロックであり、仮想回路812は2台目のマスタ100(M2)のアクセスの依存関係を表すブロックである。仮想回路811および812は、入出力端子をともにスレーブ200の各々に割り当てて、入出力端子の接続の有無によって依存関係を表す。同図の例では、4個のスレーブ200を有することを想定している。
【0117】
図21の例を用いることとすると、まず1台目のマスタ100(M1)ではスレーブ番号S2からスレーブ番号S1への依存関係を示しているため、仮想回路811では入力端子S2から出力端子S1への接続が仮定される。また、2台目のマスタ100(M2)ではスレーブ番号S1からスレーブ番号S2への依存関係を示しているため、仮想回路812では入力端子S1から出力端子S2への接続が仮定される。そして、仮想回路811および812を直列に接続して、仮想回路811の入力端子から入力された信号と仮想回路812の出力端子から出力された信号とを比較して、同じ信号レベルが検知されるとき、アクセスに「たすきがけ」の依存関係が検出される。同図の例では、スレーブ番号S2がこれに該当する。
【0118】
図23は、本発明の第4の実施の形態における発行停止判定部720における判定フローの一例を示す図である。発行停止判定部720では、マスタMiから新たなトランザクションが入力されると(ステップS931)、そのトランザクションの発行可否が判定される。
【0119】
まず、ステップS932において同一マスタにおけるチェックが行われる。すなわち、マスタMiから発行された先行トランザクションと依存関係があり、かつ、その先行トランザクションと新たなトランザクションの行き先スレーブ番号が一致するか否かがマスタMiについて判断される。先行トランザクションと新規トランザクションとの間で依存関係がなければ、デッドロックを考慮する必要がないため、その新規トランザクションは発行可能となる(ステップS935)。また、依存関係があったとしても、それらの行き先スレーブが一致していれば、スレーブ200側で順序を保証する限りは追い越しを生じないため、同様に新規トランザクションは発行可能となる(ステップS935)。これに対し、依存関係があり、かつ、それらの行き先スレーブが異なるものである場合には、次の判定(ステップS933)が行われる。
【0120】
次に、ステップS933において他のマスタとのチェックが行われる。すなわち、他のマスタから依存関係のある転送が発行されており、その転送の行き先スレーブがマスタMiの行き先スレーブと完全に一致し、かつ、期待されるレスポンス返却順序が逆という関係を有するか否かが判断される。このような関係を有するということは「たすきがけ」の依存関係を有することになるため、新規トランザクションの発行は停止される(ステップS936)。一方、「たすきがけ」の依存関係を有しない場合には新規トランザクションは発行可能となる(ステップS935)。なお、「たすきがけ」の依存関係を検出するためには、図22により説明した仮想回路を利用することができる。
【0121】
[デッドロック判定]
図24は、本発明の第4の実施の形態におけるデッドロック判定の第1の例を示す図である。この例では、最初に1台目のマスタ100(M1)から1台目のスレーブ200(S1)へトランザクションM11が発行され、2台目のマスタ100(M2)から3台目のスレーブ200(S3)へトランザクションM21が発行されたものとする(同図(a))。このとき、同図(b)のように、1台目のマスタ100(M1)に対応する管理キュー711−1の先頭にはスレーブ番号S1が登録され、2台目のマスタ100(M2)に対応する管理キュー711−2の先頭にはスレーブ番号S3が登録される。
【0122】
次に、1台目のマスタ100(M1)から2台目のスレーブ200(S2)へトランザクションM12が発行され、2台目のマスタ100(M2)から4台目のスレーブ200(S4)へトランザクションM22が発行されたものとする(同図(a))。このとき、同図(b)のように、1台目のマスタ100(M1)に対応する管理キュー711−1の最後にはスレーブ番号S2が登録され、2台目のマスタ100(M2)に対応する管理キュー711−2の最後にはスレーブ番号S4が登録される。
【0123】
これにより、1台目のマスタ100(M1)のアクセスの依存関係を表すブロックでは、入力端子S2から出力端子S1への接続が仮定される。また、2台目のマスタ100(M2)のアクセスの依存関係を表すブロックでは、入力端子S4から出力端子S3への接続が仮定される。その結果、「たすきがけ」の依存関係は検出されないという結論が得られる。
【0124】
図25は、本発明の第4の実施の形態におけるデッドロック判定の第2の例を示す図である。この例では、最初に1台目のマスタ100(M1)から1台目のスレーブ200(S1)へトランザクションM11が発行され、2台目のマスタ100(M2)からも1台目のスレーブ200(S1)へトランザクションM21が発行されたものとする(同図(a))。このとき、同図(b)のように、1台目のマスタ100(M1)に対応する管理キュー711−1の先頭にはスレーブ番号S1が登録され、2台目のマスタ100(M2)に対応する管理キュー711−2の先頭にもスレーブ番号S1が登録される。
【0125】
次に、1台目のマスタ100(M1)から2台目のスレーブ200(S2)へトランザクションM12が発行され、2台目のマスタ100(M2)から3台目のスレーブ200(S3)へトランザクションM22が発行されたものとする(同図(a))。このとき、同図(b)のように、1台目のマスタ100(M1)に対応する管理キュー711−1の最後にはスレーブ番号S2が登録され、2台目のマスタ100(M2)に対応する管理キュー711−2の最後にはスレーブ番号S3が登録される。
【0126】
これにより、1台目のマスタ100(M1)のアクセスの依存関係を表すブロックでは、入力端子S2から出力端子S1への接続が仮定される。また、2台目のマスタ100(M2)のアクセスの依存関係を表すブロックでは、入力端子S3から出力端子S1への接続が仮定される。その結果、「たすきがけ」の依存関係は検出されないという結論が得られる。
【0127】
図26は、本発明の第4の実施の形態におけるデッドロック判定の第3の例を示す図である。この例では、最初に1台目のマスタ100(M1)から1台目のスレーブ200(S1)へトランザクションM11が発行され、2台目のマスタ100(M2)から3台目のスレーブ200(S3)へトランザクションM21が発行されたものとする(同図(a))。このとき、同図(b)のように、1台目のマスタ100(M1)に対応する管理キュー711−1の先頭にはスレーブ番号S1が登録され、2台目のマスタ100(M2)に対応する管理キュー711−2の先頭にはスレーブ番号S3が登録される。
【0128】
次に、1台目のマスタ100(M1)から2台目のスレーブ200(S2)へトランザクションM12が発行され、2台目のマスタ100(M2)から1台目のスレーブ200(S1)へトランザクションM22が発行されたものとする(同図(a))。このとき、同図(b)のように、1台目のマスタ100(M1)に対応する管理キュー711−1の最後にはスレーブ番号S2が登録され、2台目のマスタ100(M2)に対応する管理キュー711−2の最後にはスレーブ番号S1が登録される。
【0129】
これにより、1台目のマスタ100(M1)のアクセスの依存関係を表すブロックでは、入力端子S2から出力端子S1への接続が仮定される。また、2台目のマスタ100(M2)のアクセスの依存関係を表すブロックでは、入力端子S1から出力端子S3への接続が仮定される。その結果、「たすきがけ」の依存関係は検出されないという結論が得られる。
【0130】
図27は、本発明の第4の実施の形態におけるデッドロック判定の第4の例を示す図である。ここでは、3台のマスタ100を想定し、3台の管理キュー711−1乃至3を設けている。そのため、「たすきがけ」の依存関係を検出するための仮想回路を3段直列接続し、さらに他の仮想回路の出力を、論理和ゲートを介して入力している。
【0131】
この例では、最初に1台目のマスタ100(M1)から1台目のスレーブ200(S1)へトランザクションM11が発行され、2台目のマスタ100(M2)から3台目のスレーブ200(S3)へトランザクションM21が発行されたものとする。また、3台目のマスタ100(M3)から2台目のスレーブ200(S2)へトランザクションM31が発行されたものとする(同図(a))。このとき、同図(b)のように、1台目のマスタ100(M1)に対応する管理キュー711−1の先頭にはスレーブ番号S1が登録され、2台目のマスタ100(M2)に対応する管理キュー711−2の先頭にはスレーブ番号S3が登録される。また、3台目のマスタ100(M3)に対応する管理キュー711−3の先頭にはスレーブ番号S2が登録される。
【0132】
次に、1台目のマスタ100(M1)から2台目のスレーブ200(S2)へトランザクションM12が発行され、2台目のマスタ100(M2)から1台目のスレーブ200(S1)へトランザクションM22が発行されたものとする。また、3台目のマスタ100(M3)から3台目のスレーブ200(S3)へトランザクションM32が発行されたものとする(同図(a))。このとき、同図(b)のように、1台目のマスタ100(M1)に対応する管理キュー711−1の最後にはスレーブ番号S2が登録され、2台目のマスタ100(M2)に対応する管理キュー711−2の最後にはスレーブ番号S1が登録される。また、3台目のマスタ100(M3)に対応する管理キュー711−3の最後にはスレーブ番号S3が登録される。
【0133】
これにより、1台目のマスタ100(M1)のアクセスの依存関係を表すブロックでは、入力端子S2から出力端子S1への接続が仮定される。また、2台目のマスタ100(M2)のアクセスの依存関係を表すブロックでは、入力端子S1から出力端子S3への接続が仮定される。また、3台目のマスタ100(M3)のアクセスの依存関係を表すブロックでは、入力端子S3から出力端子S2への接続が仮定される。その結果、スレーブ番号S2において、「たすきがけ」の依存関係が検出される。
【0134】
このように、本発明の第4の実施の形態によれば、「たすきがけ」の依存関係が検出された場合にトランザクションの発行を停止することにより、デッドロックの発生を防止することができる。
【0135】
すなわち、本発明の実施の形態によれば、従来技術に比べて性能劣化を緩和しつつ、デッドロックを回避することができる。実装する対象の要求する性能レベルおよび制約に合わせて適切なデッドロック回避機構を選択して、スプリットバスシステムを実装することができる。
【0136】
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、本発明の実施の形態において明示したように、本発明の実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本発明の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本発明は実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【符号の説明】
【0137】
100 マスタ
200 スレーブ
300 インターコネクト
310 アドレスチャネルバスマトリックス
320 レスポンスチャネルバスマトリックス
400、500、600、700 デッドロック回避回路
410、510、610、710 先行トランザクション情報管理部
411、511、711 管理キュー
412、512 管理情報生成部
413、513 キュー状態生成部
420、520、620、720 発行停止判定部
430、530、630、730 レスポンス出力制御部
431、531 レスポンストランザクション発行履歴探索部
432、632 バッファトランザクション発行履歴探索部
433、533 レスポンストランザクション返却順序判定部
434、634 バッファトランザクション返却順序判定部
435、635 バッファトランザクション優先処理部
442、542、642 ラッチ
515、541、641 セレクタ
636 バッファトランザクション情報保持部
637 コマンド生成部

【特許請求の範囲】
【請求項1】
対応するマスタから複数のスレーブの何れかに先に発行された先行トランザクションに関する情報を管理する先行トランザクション情報管理部と、
前記対応するマスタから新たに発行されたトランザクションがデッドロックの要因になるか否かを前記先行トランザクションに関する情報に基づいて判定して、デッドロックの要因になると判定した場合には当該トランザクションの発行を停止する発行停止判定部と、
前記先行トランザクションに対する前記複数のスレーブからのレスポンスが予め期待された順序とは異なる順序で戻ってきた場合に前記予め期待された順序が維持されるように前記対応するマスタへの出力を制御するレスポンス出力制御部と
を具備するデッドロック回避回路。
【請求項2】
前記先行トランザクションに対する前記複数のスレーブからのレスポンスが予め期待された順序とは異なる順序で戻ってきた場合に当該レスポンスを退避する退避バッファをさらに具備し、
前記発行停止判定部は、前記退避バッファの容量に基づいて前記新たに発行されたトランザクションがデッドロックの要因になるか否かを判定する
請求項1記載のデッドロック回避回路。
【請求項3】
前記退避バッファは、前記複数のスレーブの何れかに設けられる請求項2記載のデッドロック回避回路。
【請求項4】
前記レスポンス出力制御部は、前記先行トランザクションに対する前記複数のスレーブからのレスポンスが予め期待された順序とは異なる順序で戻ってきた場合には当該レスポンスを破棄して当該レスポンスに対応するトランザクションを再度発行させるように制御する
請求項1記載のデッドロック回避回路。
【請求項5】
少なくとも1つのマスタと、複数のスレーブと、前記少なくとも1つのマスタと前記複数のスレーブとを接続するバスとを具備するバスシステムであって、前記バスは前記少なくとも1つのマスタの各々に対応するデッドロック回避回路を備え、
前記デッドロック回避回路が、
前記対応するマスタから前記複数のスレーブの何れかに先に発行された先行トランザクションに関する情報を管理する先行トランザクション情報管理部と、
前記対応するマスタから新たに発行されたトランザクションがデッドロックの要因になるか否かを前記先行トランザクションに関する情報に基づいて判定して、デッドロックの要因になると判定した場合には当該トランザクションの発行を停止する発行停止判定部と、
前記先行トランザクションに対する前記複数のスレーブからのレスポンスが予め期待された順序とは異なる順序で戻ってきた場合に前記予め期待された順序が維持されるように前記対応するマスタへの出力を制御するレスポンス出力制御部と
を備えるバスシステム。
【請求項6】
複数のマスタから複数のスレーブの何れかに先に発行された先行トランザクションの対象スレーブの識別子とその順番を含む先行トランザクション情報を管理する先行トランザクション情報管理部と、
前記複数のマスタの何れかから新たに発行されたトランザクションがデッドロックの要因になるか否かを前記先行トランザクション情報に基づいて判定して、デッドロックの要因になると判定した場合には当該トランザクションの発行を停止する発行停止判定部と
を具備するデッドロック回避回路。
【請求項7】
複数のマスタと、複数のスレーブと、前記複数のマスタと前記複数のスレーブとを接続するバスとを具備するバスシステムであって、
前記バスは、
前記複数のマスタから前記複数のスレーブの何れかに先に発行された先行トランザクションの対象スレーブの識別子とその順番を含む先行トランザクション情報を管理する先行トランザクション情報管理部と、
前記複数のマスタの何れかから新たに発行されたトランザクションがデッドロックの要因になるか否かを前記先行トランザクション情報に基づいて判定して、デッドロックの要因になると判定した場合には当該トランザクションの発行を停止する発行停止判定部と
を備えるバスシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate


【公開番号】特開2012−73851(P2012−73851A)
【公開日】平成24年4月12日(2012.4.12)
【国際特許分類】
【出願番号】特願2010−218612(P2010−218612)
【出願日】平成22年9月29日(2010.9.29)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】