説明

バスブリッジ装置及びデータ処理システム

【課題】スプリットトランザクション方式のバスブリッジ装置において、複数の下位バス間の排他制御を実現する。
【解決手段】排他制御部015は、下位バスIF部による下位バスへのアクセス状況を監視し、下位バスIF部による下位バスへのアクセス状況が所定の排他条件に合致している間は、次の実行対象のコマンドに基づいて下位バスへのアクセスを行う下位バスIF部に下位バスへのアクセスを保留させ、アクセス状況が排他条件に合致しなくなった際に、アクセスを保留させていた下位バスIF部による下位バスへのアクセスを開始させることで、複数の下位バス間の排他制御を実現する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、上位バスと下位バスとを接続するバスブリッジ装置に関する。
【背景技術】
【0002】
大規模な組み込みシステムでは、CPU(Central Processing Unit)やDMA(Direct Memory Access)コントローラなど高速なデバイスを接続する上位バスと、上位バスより低速なデバイスを接続する下位バスと、それら二種類のバスをバスブリッジ装置で中継する構成が広く用いられている。
この構成においては、上位バス側のバスマスターからバスブリッジ装置を介して下位バス側の低速デバイスにアクセスした場合に、低速デバイスの応答速度の遅さから上位バスの性能低下を引き起こすことが知られている。
この性能低下の回避策のひとつの手段として、下位バスの応答を待たずに一旦上位バスを開放するスプリットトランザクション方式を用いることが知られており、例えば特許文献1に、上位バスがコマンド発行後、下位バスの応答を待たずに一旦上位バスを開放し、下位バスの応答を得た後、上位バスへアクセス結果を返送する方式が示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平11−110342号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えば対応するバスプロトコルが異なる既存の低速デバイスを複数接続する場合など、システムによっては複数の下位バスを実装することがある。
上位バスがスプリットトランザクション方式であり、なおかつバスブリッジ装置に複数の下位バスを実装する場合は、アクセス性能の観点から、複数の下位バスはコマンド投入順に順次並列に動作させ、アクセス結果が早く返ってきたものから上位バスへアクセス結果を返すようにすることが考えられる。
一方で、例えばシステム全体のデバッグまたは解析目的で、一部アクセスについて下位バス間で排他的に動作させることが必要となる場合がある。
例えば、排他設定を行った場合のみ、一方の下位バスのライトアクセスともう一方の下位バスのライトアクセスは同時実行を行わないように動作させることなどが考えられる。
また、例えば下位バス間で共有のリソースが存在する場合では、該当リソースに対するコマンドの順序性確保のため、該当リソースに対するアクセスを下位バス間で排他的に制御することが考えられる。
【0005】
しかし従来のバスブリッジ装置は、下位バス間のアクセスについて排他制御を行う機構が存在しない。
このため例えば上位バスから入力されたコマンドを順に処理し各コマンドに対応した下位バスアクセスを開始した場合、下位バスターゲットの反応速度の違いによってはコマンドの順序性が逆転してしまう現象が発生してしまう。
【0006】
本発明は、このような課題を解決することを主な目的としており、スプリットトランザクション方式のバスブリッジ装置において、複数の下位バス間の排他制御を実現することを主な目的とする。
【課題を解決するための手段】
【0007】
本発明に係るバスブリッジ装置は、
スプリットトランザクション方式の上位バスに接続され、前記上位バスからコマンドを入力する上位バスインタフェース部と、
複数の下位バスに接続され、前記コマンドに基づいて接続先の下位バスへのアクセスを行う複数の下位バスインタフェース部と、
前記下位バスへのアクセスの状態を示す現アクセス状態と
前記下位バスで次に実行予定のコマンドの状態を示す次コマンド状態と
排他条件を指定する排他条件情報とに基づいて排他条件の判定を実施し前記排他条件が成立している間は前記下位バスで次に実行予定のコマンドの実行を待たせることにより前記下位バスへのアクセスを前記複数の下位バス間で排他的に実行する排他制御部と
を備えたことを特徴とする。
【発明の効果】
【0008】
本発明によれば、排他条件が成立している間は下位バスで次に実行予定のコマンドの実行を待たせることにより、複数の下位バス間の排他制御を実現することができる。
【図面の簡単な説明】
【0009】
【図1】実施の形態1に係るデータ処理システムの構成例を示す図。
【図2】実施の形態1に係る排他制御部の構成例を示す図。
【図3】実施の形態1に係るバスブリッジ装置の動作例を示すタイミングチャート図。
【図4】実施の形態2に係る排他制御部の構成例を示す図。
【図5】実施の形態3に係る排他制御部の構成例を示す図。
【図6】実施の形態3に係る命令及び選択条件の例を示す図。
【図7】実施の形態3に係るバスブリッジ装置の動作例を示すタイミングチャート図。
【図8】実施の形態4に係る排他制御部の構成例を示す図。
【図9】実施の形態1に係るバスブリッジ装置内の信号の流れを示す図。
【図10】実施の形態1に係るバスブリッジ装置内の信号の流れを示す図。
【発明を実施するための形態】
【0010】
実施の形態1.
図1は、本実施の形態に係るデータ処理システムの構成例を示す。
本実施の形態に係るデータ処理システムは、バスブリッジ装置003及び周辺装置で構成される。
【0011】
図1において、上位バスマスター001は上位バス002を制御するバスマスターである。
上位バスマスター001は単一でも複数存在してもよい。
なお、上位バスマスター001及び上位バス002では、スプリットトランザクション方式がとられている。
【0012】
レジスタバス004はバスブリッジ装置003内のレジスタ設定を行うバスである。
【0013】
第1のターゲット005は第1の下位バス006に接続されたターゲット装置である。
第2のターゲット007は第2の下位バス008に接続されたターゲット装置である。
【0014】
バスブリッジ装置003は、上位バス002から入力したコマンドに従い第1のターゲット005または第2のターゲット007へアクセスし、第1の下位バス006または第2の下位バス008から入力したリードデータや応答情報などのアクセス結果を上位バス002を介して上位バスマスター001へ返送する。
バスブリッジ装置003は、上位バスインタフェース部010、コマンド蓄積部011、第1の下位バスインタフェース部012、第2の下位バスインタフェース部013、レジスタ部014、排他制御部015から構成される。
なお、上位バスインタフェース部010、第1の下位バスインタフェース部012、第2の下位バスインタフェース部013は、以下では、それぞれ、上位バスIF部010、第1の下位バスIF部012、第2の下位バスIF部013と表記する。
【0015】
次に、バスブリッジ装置003の詳細について説明する。
なお、図9及び図10に、バスブリッジ装置003内の各要素間での信号の送受信状況を図示する。
図9は後述の第1の下位バスIF部012が第1の下位バス006にアクセスする際の信号の送受信状況を示し、図10は後述の第2の下位バスIF部013が第2の下位バス008にアクセスする際の信号の送受信状況を示している。
なお、作図上の理由から、図9では、第2の下位バスIF部013、第2の下位バス008及び第2のターゲット007の図示は省略している。
同様に、図10では、第1の下位バスIF部012、第1の下位バス006及び第1のターゲット005の図示は省略している。
【0016】
上位バスIF部010は、上位バス002に接続され、上位バス002からコマンド(図9、図10でCと表記)を入力し、入力したコマンドとコマンドが有効であることを示すコマンド有効パルス(図9、図10ではC有効Pと表記)をコマンド蓄積部011へ出力する。
コマンドは、リード/ライト情報、アドレス情報、ライトデータなどの情報を含む。
【0017】
コマンド蓄積部011は、上位バスIF部010から入力した有効なコマンドを内部のバッファへ蓄積する。
そして内部のバッファに蓄積したコマンドから次に実行すべきコマンドとして例えば最も古いコマンドを選択し、先頭コマンド(図9、図10では先頭Cと表記)として、排他制御部015、第1の下位バスIF部012及び第2の下位バスIF部013へ出力する。
なお、先頭コマンドは、コマンド蓄積部011のバッファに蓄積されているコマンドのうち、第1の下位バスIF部012または第2の下位バスIF部013における次の実行対象のコマンドであるため、次実行コマンドともいう。
コマンド蓄積部011は、同時に先頭コマンドが有効であることを示す先頭コマンド有効フラグ信号(以下では、単に先頭コマンド有効フラグという)(図9、図10では有効Fと表記)も合わせて第1の下位バスIF部012及び第2の下位バスIF部013へ出力する。
先頭コマンド及び先頭コマンド有効フラグは、第1の下位バスIF部012または第2の下位バスIF部013から第1のコマンド取得パルス信号(以下では、単に第1のコマンド取得パルスという)(図9では、第1C取得Pと表記)または第2のコマンド取得パルス信号(以下では、単に第2のコマンド取得パルスという)(図10では、第2C取得Pと表記)が入力されるまで保持し、第1のコマンド取得パルスまたは第2のコマンド取得パルスが入力されたら先頭コマンド及び先頭コマンド有効フラグを更新する。
すなわち、第1のコマンド取得パルスまたは第2のコマンド取得パルスが入力された時点で内部のバッファに次のコマンドが蓄積されていれば先頭コマンドを次のコマンドへ更新し、内部のバッファに次のコマンドが蓄積されていない場合は先頭コマンド有効フラグを解除する。
【0018】
第1の下位バスIF部012は、コマンド蓄積部011が出力する先頭コマンド及び先頭コマンド有効フラグを参照し、先頭コマンドが有効であり、なおかつ先頭コマンドのアクセス先が第1の下位バス006に該当した場合に、第1のコマンド取得有効フラグ信号(以下では、単に第1のコマンド取得有効フラグという)(図9では、第1C取得有効Fと表記)を排他制御部015へ出力する。
そして、排他制御部015が出力する第1のコマンド取得抑制フラグ信号(以下では、単に第1のコマンド取得抑制フラグという)(図9では、第1C取得抑制Fと表記)が無効であり、さらに第1の下位バス006へアクセス開始可能な状態(すなわち第1の下位バス006へアクセス中でない場合)であれば、第1のコマンド取得パルスをコマンド蓄積部011へ出力する。
第1の下位バスIF部012は、同時に先頭コマンドを内部へ格納し、先頭コマンドに示された第1の下位バス006へのアクセスを開始する。
上位バス002と第1の下位バス006とのプロトコルの違いによりコマンド変換が必要な場合はバスブリッジ装置内で適宜コマンド変換を実施する。
また、内部へ格納した先頭コマンドは、第1の実行中コマンド信号(以下では、単に第1の実行中コマンドという)(図9では、第1実行中Cと表記)として排他制御部015へ通知する。
第1の下位バスIF部012は、第1の下位バス006へのアクセス中は第1のビジーフラグ信号(以下では、単に第1のビジーフラグという)(図9では、第1ビジーFと表記)を排他制御部015へ出力する。
そして第1の下位バス006へのアクセスが終了したら、第1の下位バスIF部012は、第1の下位バス006のアクセス結果と第1のアクセス結果有効フラグ信号(第1のアクセス結果有効フラグという)(図9では、第1A結果有効Fと表記)を上位バスIF部010へ出力する。
第1のアクセス結果有効フラグ及び第1のビジーフラグは上位バスIF部010から第1のアクセス結果取得パルス信号(以下、単に第1のアクセス結果取得パルスという)(図9では、第1A結果取得Pと表記)が入力されたら解除する。
【0019】
第2の下位バスIF部013は、第1の下位バスIF部012と同様に、コマンド蓄積部011が出力する先頭コマンド及び先頭コマンド有効フラグを参照し、先頭コマンドが有効であり、なおかつ先頭コマンドのアクセス先が第2の下位バス008に該当した場合、第2のコマンド取得有効フラグ信号(以下、単に第2のコマンド取得有効フラグという)(図10では、第2C取得有効Fと表記)を排他制御部015へ出力する。
そして、排他制御部015が出力する第2のコマンド取得抑制フラグ信号(以下、単に第2のコマンド取得抑制フラグという)(図10では、第2C取得抑制Fと表記)が無効であり、さらに第2の下位バス008へアクセス開始可能な状態(すなわち第2の下位バス008へアクセス中でない場合)であれば、第2のコマンド取得パルスをコマンド蓄積部011へ出力する。
第2の下位バスIF部013は、同時に先頭コマンドを内部へ格納し、先頭コマンドに示された第2の下位バス008へのアクセスを開始する。
上位バス002と第2の下位バス008とのプロトコルの違いによりコマンド変換が必要な場合は第2の下位バスIF部013は適宜コマンド変換を実施する。
また、内部へ格納した先頭コマンドは、第2の実行中コマンド信号(以下、単に第2の実行中コマンドという)(図10では、第2実行中Cと表記)として排他制御部015に通知する。
第2の下位バス008へのアクセス中は第2のビジーフラグ信号(以下、単に第2のビジーフラグという)(図10では、第2ビジーFと表記)を排他制御部015へ出力する。
そして第2の下位バス008へのアクセスが終了したら、第2の下位バス008のアクセス結果と第2のアクセス結果有効フラグ信号(以下、単に第2のアクセス結果有効フラグという)(図10では、第2A結果有効Fと表記)を上位バスIF部010へ出力する。
第2のアクセス結果有効フラグ及び第2のビジーフラグは上位バスIF部010から第2のアクセス結果取得パルス信号(以下、単に第2のアクセス結果取得パルスという)(図10では、第2A結果取得Pと表記)が入力されたら解除する。
【0020】
上位バスIF部010は、第1の下位バスIF部012または第2の下位バスIF部013から有効なアクセス結果が入力され、なおかつ上位バス002へアクセス開始可能な状態であれば、アクセス結果を内部へ格納し、上位バス002へアクセス結果を返送するアクセスを開始すると同時に、該当するアクセス結果取得パルス(第1のアクセス結果取得パルスまたば第2のアクセス結果取得パルス)を該当する下位バスIF部(第1の下位バスIF部012または第2の下位バスIF部013)へ出力する。
第1の下位バスIF部012と第2の下位バスIF部013との両方から有効なアクセス結果が入力された場合は適宜優先度を割り当て、片方ずつ上位バス002へ返送する。
【0021】
また、レジスタ部014は、レジスタバス004から設定された排他条件情報を保持し、排他条件情報を排他制御部015へ出力する。
【0022】
排他制御部015は、第1の下位バスIF部012から第1のコマンド取得有効フラグを、または第2の下位バスIF部013から第2のコマンド取得有効フラグを入力したら、コマンド蓄積部011が出力している先頭コマンドと、第2の実行中コマンドまたは、第1の実行中コマンド(すなわち現在アクセス中のコマンド)及び第2のビジーフラグまたは第1のビジーフラグを参照し、レジスタ部014から入力した排他条件情報に従った排他条件が成立するか不成立かの判定を行う。
そして排他条件が成立する場合は、コマンド取得抑制フラグ(第1のコマンド取得抑制フラグまたは第2のコマンド取得抑制フラグ)を該当する下位バスIF部(第1の下位バスIF部012または第2の下位バスIF部013)を有効にして出力し続け、排他条件が不成立になったらコマンド取得抑制フラグを無効にする。
【0023】
次に、図2に、本実施の形態に係る排他制御部015の構成例を示す。
【0024】
第1のコマンド取得抑制フラグ生成回路100は、第1の下位バスIF部012へ出力する第1のコマンド取得抑制フラグ107を生成する回路である。
第2のコマンド取得抑制フラグ生成回路101は、第2の下位バスIF部013へ出力する第2のコマンド取得抑制フラグ108を生成する回路である。
なお、第1のコマンド取得抑制フラグ107及び第2のコマンド取得抑制フラグ108コマンドを区別しないときは、両者の総称としてコマンド取得抑制フラグと表記する。
AND回路105、106はAND演算を行う回路である。
【0025】
第2の実行中コマンド判定部103は、第2の実行中コマンド110が排他条件に一致するかを判定する回路であり、第2のビジーフラグ109が有効かつ第2の実行中コマンド110が第2の実行中コマンド条件111に一致する場合はHを、それ以外の場合はLを出力する。
第1の先頭コマンド判定部104は、先頭コマンド113が排他条件に一致するかを判定する回路であり、第1のコマンド取得有効フラグ112が有効かつ先頭コマンド113が第1の先頭コマンド条件114に一致する場合はHを、それ以外の場合はLを出力する。
第1のコマンド取得抑制フラグ107は、第2の実行中コマンド判定部103と第1の先頭コマンド判定部104の出力をAND演算することで得られる。
すなわち、第2の下位バス008で実行中のコマンドと、次に第1の下位バス006で実行するコマンドとが排他条件に一致した際に第1のコマンド取得抑制フラグ107を有効(H)にする。
なお、第2の実行中コマンド条件111と、第1の先頭コマンド条件114とは、レジスタ部014から排他制御部015へ入力される排他条件情報から得られるものとする。
【0026】
第1の実行中コマンド判定部115は、第1の実行中コマンド118が排他条件に一致するかを判定する回路であり、第1のビジーフラグ117が有効かつ第1の実行中コマンド118が第1の実行中コマンド条件119に一致する場合はHを、それ以外の場合はLを出力する。
第2の先頭コマンド判定部116は、先頭コマンド113が排他条件に一致するかを判定する回路であり、第2のコマンド取得有効フラグ120が有効かつ先頭コマンド113が第2の先頭コマンド条件121に一致する場合はHを、それ以外の場合はLを出力する。
第2のコマンド取得抑制フラグ108は、第1の実行中コマンド判定部115と第2の先頭コマンド判定部116の出力をAND演算することで得られる。
すなわち、第1の下位バス006で実行中のコマンドと、次に第2の下位バス008で実行するコマンドとが排他条件に一致した際に第2のコマンド取得抑制フラグ108を有効(H)にする。
なお、第1の実行中コマンド条件119と、第2の先頭コマンド条件121とは、レジスタ部014から排他制御部015へ入力される排他条件情報から得られるものとする。
これらはコマンド値と直接比較できる値であってもよいし、特定のコマンド値を指定する符号であってもよい。また簡単のため、排他制御を行わない場合の設定値もこれらに含めるものとする。
【0027】
排他条件の簡単な例として、例えば、レジスタ部014に排他条件設定レジスタとして1ビットのレジスタを実装し、値「0」は排他制御なし、値「1」は第1の下位バス006のライトコマンドと第2の下位バス008のライトコマンドとを排他的に動作させると規定する。
そして第2の実行中コマンド判定部103は、第2の実行中コマンド条件111として値「1」が入力された場合は、第2の実行中コマンド110がライトコマンドであれば第2の実行中コマンド条件111に一致とみなすようにし、第2の実行中コマンド条件111として値「0」が入力された場合は、第2の実行中コマンド110に関わらず第2の実行中コマンド条件111に不一致とみなすようにする。
第1の先頭コマンド条件114、第1の実行中コマンド条件119、第2の先頭コマンド条件121についても同様に判定を行うことで、第1の下位バス006のライトコマンドの次に第2の下位バス008のライトコマンドが続いた場合は第2のコマンド取得抑制フラグ108が有効に、第2の下位バス008のライトコマンドの次に第1の下位バス006のライトコマンドが続いた場合は第1のコマンド取得抑制フラグ107が有効になるようにすることができる。
【0028】
次に動作の例を、図3に示すタイミングチャートを用いて説明する。
なお、図3においてフラグまたはパルスは全て有効ならはHを、無効ならばLを示すものとする。
また、図3のタイミングチャートは前述の排他制御の例に対応している。
このような排他条件の場合に、排他制御部015は、次実行下位バスインタフェース部(第1の下位バスIF部012または第2の下位バスIF部013)によるライトアクセスに先行して他の下位バスインタフェース部(第2の下位バスIF部013または第1の下位バスIF部012)が下位バスへライトアクセスを行っている間は、排他条件に合致しているとして、次実行下位バスインタフェース部による下位バスへのアクセスを保留させ、アクセス中であった下位バスインタフェース部による下位バスへのアクセスが完了した際に、排他条件に合致しなくなったとして、次実行下位バスインタフェース部による下位バスへのアクセスを開始させるという制御を行っている。
【0029】
まず、上位バスマスター001は、上位バス002へ、第1の下位バス006へのライトコマンド(図の(1))を、その後、第2の下位バス008へのライトコマンド(図の(2))を発行する。
バスブリッジ装置003は、まず上位バスIF部010から、ライトコマンドを入力し、コマンド蓄積部011へ格納する。
そしてコマンド蓄積部011からは最初の先頭コマンド113が出力される。
第1の下位バスIF部012は、第1のコマンド取得抑制フラグ107が無効(L)であるので、先頭コマンド113を内部へ格納し第1の下位バス006へのアクセスを開始する。
このとき第1の実行中コマンド118として第1の下位バス006へのライトコマンドを出力し第1のビジーフラグ117を有効とする。
また、コマンド蓄積部011では、第1の下位バスIF部012から第1のコマンド取得パルスが入力されたことで、先頭コマンド113を次のコマンド、すなわち第2の下位バス008へのライトコマンドに更新する。
排他制御部015では、第1の下位バス006でライトコマンドが実行中であり、先頭コマンド113が第2の下位バス008へのライトコマンドである間は、第2のコマンド取得抑制フラグ108を有効にする。
この間は、第2の下位バスIF部013は第2のコマンド取得パルスを発行できず、第2の下位バス008へのアクセスが行われない。
【0030】
そして第1の下位バス006へのライトアクセスが終了したら、第1のビジーフラグ117が無効になり、第2のコマンド取得抑制フラグ108も無効になるので、第2の下位バスIF部013は、先頭コマンド113を取得し、第2の下位バス008へのライトアクセスを開始する。
また、第1の下位バス006のアクセス結果は、第1の下位バスIF部012から第1のアクセス結果有効フラグと共に上位バスIF部010へ出力され、上位バスIF部010が第1のアクセス結果取得パルスを出力し、上位バス002へのアクセス結果の返送が開始する(図の(1)’)。
同様に第2の下位バス008のアクセス結果も、第2の下位バスIF部013から第2のアクセス結果有効フラグと共に上位バスIF部010へ出力され、上位バスIF部010が第2のアクセス結果取得パルスを出力し、上位バス002へのアクセス結果の返送が開始する(図の(2)’)。
【0031】
以上のように、下位バスへのアクセスの状態と次に下位バスで実行予定のコマンドの状態と、あらかじめ指定した排他条件情報とを比較し、排他条件に一致(排他条件が成立)する場合は、次に下位バスで実行予定のコマンドの実行を待たせるようにバスブリッジ装置を構成することで、排他条件に従った複数の下位バス間での排他的なアクセスを実現することができる。
また、本実施の形態に係るバスブリッジ装置は、上位バスを介さずに排他制御を行うため、上位バス及び上位バスマスターへ特別な機構を実装する必要がないという利点もある。
なお、本実施の形態では、ライトコマンド同士の排他制御の例を示したが、例えば特定のアドレスや特性のライトデータなども排他条件に加えてもよい。
また、排他条件としてコマンドの値を特定せず、全てのコマンドが条件一致とみなすように構成すれば、全ての下位バスアクセスを排他的に実行するように動作させることもできる。
また、本実施の形態では、下位バスが2本の場合を記載したが、下位バスが3本以上の構成でも同様に実現することができる。
【0032】
実施の形態2.
本実施の形態では、排他条件設定として、複数のコマンドレジスタとマスクレジスタを実装して排他条件を指定できるようにしている。
【0033】
図4は本実施の形態によるバスブリッジ装置003の排他制御部015の構成例を示すブロック図である。
なお、図4において、実施の形態1と同じ信号は同じ符号を付しており、説明を省略する。
【0034】
図4において、AND回路308はAND演算を行う回路であり、OR回路309はOR演算を行う回路である。
40−0は、レジスタ部014内に実装したコマンドレジスタ(図示を省略)の値、40−1はレジスタ部014内に実装したマスクレジスタ(図示を省略)の値であり、40−0のコマンド値に対応している。
41〜47−0は、40−0と同じくレジスタ部014内に実装したコマンドレジスタ(図示を省略)の値、41〜47−1は、40−1と同じく、レジスタ部014内に実装したマスクレジスタ(図示を省略)の値であり、同様に41〜47−0のコマンド値にそれぞれ対応している。
【0035】
第2の実行中コマンド第1判定部300は、第2の実行中コマンド110とコマンドレジスタ40−0とについてマスクレジスタ40−1が無効(非マスク)を示すビットを比較し、一致すれば条件一致とし、なおかつ第2のビジーフラグ109が有効であれば、有効(H)を、それ以外の場合(条件不一致または第2のビジーフラグ109が無効の場合)は無効(L)を出力する。
第1の先頭コマンド第1判定部301は、先頭コマンド113とコマンドレジスタ41−0とについてマスクレジスタ41−1が無効(非マスク)を示すビットを比較し、一致すれば条件一致とし、なおかつ第1のコマンド取得有効フラグ112が有効であれば、有効(H)を、それ以外の場合(条件不一致または第1のコマンド取得有効フラグ112が無効の場合)は無効(L)を出力する。
第2の実行中コマンド第2判定部302、第1の先頭コマンド第2判定部303は、それぞれ第2の実行中コマンド第1判定部300、第1の先頭コマンド第1判定部301からコマンドレジスタ、マスクレジスタが変更された以外は同じである。
【0036】
第1の実行中コマンド第1判定部304は、第1の実行中コマンド118とコマンドレジスタ44−0とについてマスクレジスタ44−1が無効(非マスク)を示すビットを比較し、一致すれば条件一致とし、なおかつ第1のビジーフラグ117が有効であれば、有効(H)を、それ以外の場合(条件不一致または第1のビジーフラグ117が無効の場合)は無効(L)を出力する。
第2の先頭コマンド第1判定部305は、先頭コマンド113とコマンドレジスタ46−0とについてマスクレジスタ46−1が無効(非マスク)を示すビットを比較し、一致すれば条件一致とし、なおかつ第2のコマンド取得有効フラグ120が有効であれば、有効(H)を、それ以外の場合(条件不一致または第2のコマンド取得有効フラグ120が無効の場合)は無効(L)を出力する。
第1の実行中コマンド第2判定部306、第2の先頭コマンド第2判定部307は、それぞれ第1の実行中コマンド第1判定部304、第2の先頭コマンド第1判定部305からコマンドレジスタ、マスクレジスタが変更された以外は同じである。
【0037】
なお、300〜307の各々においてば、マスクレジスタ入力が全て有効(全ビットマスク)の場合は条件不一致とし、排他制御を行わないという指示に使用する。
また、OR回路309−1により、第2の実行中コマンド第1判定部300と第1の先頭コマンド第1判定部301で検出した排他条件と、第2の実行中コマンド第2判定部302、第1の先頭コマンド第2判定部303で検出した排他条件との2通りの条件のいずれかに該当すれば、第1のコマンド取得抑制フラグ107が有効(H)を示すようになる。
同様に、OR回路309−2により、第1の実行中コマンド第1判定部304と第2の先頭コマンド第1判定部305で検出した排他条件と、第1の実行中コマンド第2判定部306、第2の先頭コマンド第2判定部307で検出した排他条件との2通りの条件のいずれかに該当すれば、第2のコマンド取得抑制フラグ108が有効(H)を示すようになる。
【0038】
以上のように、コマンドレジスタ、マスクレジスタを用いて構成することにより、排他条件を随時別の任意の条件に書き換えることが可能となる。
また、マスクレジスタをビット単位で設定できることにより、例えばアドレスのうち上位ビットのみを排他条件へ含める、あるいは一部の条件のみライトデータの値も条件に含めるということも可能となる。
また、複数の排他条件設定を用意することにより、バスブリッジ製造後に排他条件の追加を容易に行うことができるようになる。
例えばバスブリッジ装置製造時には1通りのみの排他条件しか必要なかったが、バスブリッジ製造後にシステムの変更または不具合などの要因でもう1通り排他条件の追加が必要になった場合に、バスブリッジ装置のハードウェアを改訂せずに、レジスタ設定を変更するのみで排他条件の追加が行えるようになる。
【0039】
実施の形態3.
本実施の形態では、排他制御部015にプログラム可能なステートマシンを実装してシーケンスとして排他条件を指定できるようにしている。
【0040】
図5は、実施の形態3によるバスブリッジ装置003の排他制御部015の構成例を示すブロック図である。
なお、図5では、作図上の理由から、第1の先頭コマンド第1判定部301を1先−1と略記し、第1の先頭コマンド第2判定部303を1先−2と略記し、第2の先頭コマンド第1判定部305を2先−1と略記し、第2の先頭コマンド第2判定部307を2先−2と略記している。
同様に、第2の実行中コマンド第1判定部300を2実−1と略記し、第2の実行中コマンド第2判定部302を2実−2と略記し、第1の実行中コマンド第1判定部304を1実−1と略記し、第1の実行中コマンド第2判定部306を1実−2と略記している。
【0041】
プログラム記憶部500は、ステートマシン501が示すステート値に対応した命令を記憶し、ステートマシンから入力されるステート値に対応した命令を出力する。
命令は、第1の条件選択値(条件1選択とも表記する)、第2の条件選択値(条件2選択とも表記する)、抑制指示(抑制とも表記する)、第1の遷移先ステート値(遷移先1とも表記する)、第2の遷移先ステート値(遷移先2とも表記する)とから構成される。
第1の遷移先ステート値及び第2の遷移先ステート値は、遷移先ステート情報の例である。
【0042】
ステートマシン501は、ステート値を管理し、プログラム記憶部500から出力される命令を参照し、第1の条件選択値によって選択された条件が成立する場合は、第1の遷移先ステート値へ、条件が成立しない場合は第2の遷移先ステート値へ、ステート値を遷移させる。
なお、ステート値の遷移は、第1のコマンド取得パルス506または第2のコマンド取得パルス507毎に1回行う。
【0043】
セレクタ502は、第1の条件選択値によって先頭コマンドの条件を選択するセレクタであり、例えば第2の実施の形態における、第1の先頭コマンド第1判定部301、第1の先頭コマンド第2判定部303、第2の先頭コマンド第1判定部305、第2の先頭コマンド第2判定部307及び付随するレジスタをレジスタ部014に構成し接続する。
【0044】
セレクタ503は、第2の条件選択値によって下位バス実行中コマンドの条件を選択するセレクタであり、例えば第2の実施の形態における、第2の実行中コマンド第1判定部300、第2の実行中コマンド第2判定部302、第1の実行中コマンド第1判定部304、第1の実行中コマンド第2判定部306及び付随するレジスタをレジスタ部014に構成し接続する。
【0045】
抑制フラグ生成回路504は、第1のコマンド取得抑制フラグ107、第2のコマンド取得抑制フラグ108を生成する回路である。
抑制フラグ生成回路504は、セレクタ502で選択された条件とセレクタ503で選択された条件とが両方とも一致(H)であり、なおかつ命令の抑制指示505が有効(H)である場合、第1のコマンド取得有効フラグ112が有効(H)であれば第1のコマンド取得抑制フラグ107を有効(H)に、第2のコマンド取得有効フラグ120が有効であれば第2のコマンド取得抑制フラグ108を有効(H)にする。
【0046】
図6に命令及び排他条件設定の例を示す。
ステート値0では、第2の下位バス008で実行するコマンド(2)を受信後ステート値1へ遷移し、ステート値1では、第1の下位バス006で実行するコマンド(3)を受信後ステート値2へ遷移し、ステート値2では、先頭コマンドが第2の下位バス008で実行するコマンド(4)であれば、前のコマンド(コマンド(3))の終了までコマンド(4)の取得を抑制するよう設定している。
【0047】
図7に図6の設定例を動作させたタイミングチャートを示す。
最初のコマンド(1)は、セレクタ502で選ばれる条件が不成立(L)となるため、ステートの遷移先は遷移先2であるステート0が選ばれステート値は0のままとなる。
その後は、セレクタ502で選ばれる条件が成立(H)し、ステート値が1、2、0と遷移する。
ステート値が2の状態では、抑制指示が有効(H)であるので、セレクタ503出力で条件一致(H)が成立している間、第2のコマンド取得抑制フラグがアサート(H)され、その間コマンド(4)の実行が待たされる。
このようにして、シーケンシャルな排他制御を行うことができる。
【0048】
このように、排他条件設定をシーケンスとしてプログラムできるようにしているので、例えば特定のコマンドシーケンスが発生した場合のみ排他制御が必要になるような場合でも排他制御を行うことができる。
【0049】
なお、図5においては、セレクタ502へ接続する先頭コマンドの条件及びセレクタ503へ接続する下位バス実行コマンドの条件として、実施の形態2で記したようにマスクレジスタ及びコマンドレジスタを用いて条件生成を行う構成例を示したが、実施の形態1で記したように実行中コマンドまたは先頭コマンドのコマンド値から条件を直接算出するように構成してもよい。
【0050】
実施の形態4.
本実施の形態では、排他制御部の命令にモニタ指示を追加して、パルス生成をできるようにしている。
【0051】
図8は、本実施の形態に係る排他制御部015の構成例を示したものである。
プログラム記憶部500は記憶する命令にモニタ指示を含み、508はプログラム記憶部500から出力される命令のモニタ指示である。
パルス生成回路510はパルス509を生成する回路であり、モニタ指示508が有効なステートでセレクタ502によって選ばれる条件が成立(H)していたら、第1のコマンド取得パルス506または第2のコマンド取得パルス507のタイミングで、バスブリッジ装置003の外部へパルス509(H)出力を行うように構成している。
これにより特定のシーケンスが出現した際にパルス509出力を行うことができるようになる。
例えば、このパルス509出力をバスブリッジ装置003外部のカウンタでカウントすることで特定のシーケンスの出現回数を計数することができ、あるいは信号トレース用のトリガーとして用いることで、特定のシーケンスの出現時の信号トレースを行うことができる。
なお、パルス生成回路510は、パルス生成部の例である。
【0052】
このように、本実施の形態によれば、命令にモニタ指示を加えパルス生成を行うことで、デバッグ容易性を向上させることができる。
【符号の説明】
【0053】
001 上位バスマスター、002 上位バス、003 バスブリッジ装置、004 レジスタバス、005 第1のターゲット、006 第1の下位バス、007 第2のターゲット、008 第2の下位バス、010 上位バスIF部、011 コマンド蓄積部、012 第1の下位バスIF部、013 第2の下位バスIF部、014 レジスタ部、015 排他制御部、100 第1のコマンド取得抑制フラグ生成回路、101 第2のコマンド取得抑制フラグ生成回路、103 第2の実行中コマンド判定部、104 第1の先頭コマンド判定部、105 AND回路、106 AND回路、107 第1のコマンド取得抑制フラグ、108 第2のコマンド取得抑制フラグ、109 第2のビジーフラグ、110 第2の実行中コマンド、111 第2の実行中コマンド条件、112 第1のコマンド取得有効フラグ、113 先頭コマンド、114 第1の先頭コマンド条件、115 第1の実行中コマンド判定部、116 第2の先頭コマンド判定部、117 第1のビジーフラグ、118 第1の実行中コマンド、119 第1の実行中コマンド条件、120 第2のコマンド取得有効フラグ、121 第2の先頭コマンド条件、300 第2の実行中コマンド第1判定部、301 第1の先頭コマンド第1判定部、302 第2の実行中コマンド第2判定部、303 第1の先頭コマンド第2判定部、304 第1の実行中コマンド第1判定部、305 第2の先頭コマンド第1判定部、306 第1の実行中コマンド第2判定部、307 第2の先頭コマンド第2判定部、308 AND回路、309 OR回路、500 プログラム記憶部、501 ステートマシン、502 セレクタ、503 セレクタ、504 抑制フラグ生成回路、510 パルス生成回路。

【特許請求の範囲】
【請求項1】
スプリットトランザクション方式の上位バスに接続され、前記上位バスからコマンドを入力する上位バスインタフェース部と、
複数の下位バスに接続され、前記コマンドに基づいて接続先の下位バスへのアクセスを行う複数の下位バスインタフェース部と、
前記下位バスへのアクセスの状態を示す現アクセス状態と
前記下位バスで次に実行予定のコマンドの状態を示す次コマンド状態と
排他条件を指定する排他条件情報とに基づいて排他条件の判定を実施し前記排他条件が成立している間は前記下位バスで次に実行予定のコマンドの実行を待たせることにより前記下位バスへのアクセスを前記複数の下位バス間で排他的に実行する排他制御部と
を備えたことを特徴とするバスブリッジ装置。
【請求項2】
前記現アクセス状態は前記下位バスへのアクセスを実行しているコマンドを示す実行中コマンド情報を含み、
前記次コマンド状態は前記下位バスで次に実行予定のコマンドを示す先頭コマンド情報を含み、
前記排他条件情報は前記実行中コマンド情報についての所定の条件を示す実行中コマンド条件と
前記先頭コマンド情報についての特定の条件を示す先頭コマンド条件とを含む
ことを特徴とする請求項1に記載のバスブリッジ装置。
【請求項3】
前記バスブリッジ装置は
前記実行中コマンド条件を記憶する実行中コマンドレジスタと
前記先頭コマンド条件を記憶する先頭コマンドレジスタと
前記実行中コマンドレジスタまたは前記先頭コマンドレジスタに対応したビットマスクパターンを記憶するマスクレジスタを備え、
前記排他条件情報は前記ビットマスクパターンを含み、
前記実行中コマンドレジスタと前記先頭コマンドレジスタと前記マスクレジスタは記憶する内容を書き換え可能である
ことを特徴とする請求項2に記載のバスブリッジ装置。
【請求項4】
前記排他制御部はステートを遷移させるステートマシンとプログラムを記憶するプログラム記憶部とを備え、
前記プログラム記憶部は記憶する前記プログラムを書き換え可能であり、
前記プログラムは前記ステートマシンのステートに対応した命令から構成され、
前記命令は前記ステートマシンの次の遷移先のステートを示す遷移先ステート情報を含み、
前記ステートマシンは
前記先頭コマンド条件と前記次コマンド状態と前記遷移先ステート情報とに基づいて次の遷移先のステートを決定し、
前記排他制御部は
前記ステートマシンのステートが特定のステートへ遷移した際に
前記先頭コマンド条件と前記次コマンド状態と前記実行中コマンド条件と前記現アクセス状態と
に基づいて前記排他条件の判定を実施し前記排他条件が成立している間は前記下位バスで次に実行予定のコマンドの実行を待たせることにより前記下位バスへのアクセスを前記複数の下位バス間で排他的に実行する
ことを特徴とする請求項2又は3に記載のバスブリッジ装置。
【請求項5】
前記命令は
前記先頭コマンド条件を選択する第1の条件選択情報と
前記実行中コマンド条件を選択する第2の条件選択情報と
前記排他条件の判定を実施するステートを示す抑制指示とを含み、
前記ステートマシンは次の遷移先のステートを決定する際に前記第1の条件選択情報で選択された先頭コマンド条件を用い、
前記排他制御部は前記ステートマシンのステートが前記抑制指示で示されたステートへ遷移した際に前記第2の条件選択情報で選択された実行中コマンド条件を用いて前記排他条件の判定を実施する
ことを特徴とする請求項4に記載のバスブリッジ装置。
【請求項6】
前記プログラムはパルス生成を実施するステートを示すモニタ指示を含み、
前記ステートマシンのステートが前記モニタ指示で示されたステートへ遷移した際にパルス生成を実施するパルス生成部を有する
ことを特徴とする請求項5に記載のバスブリッジ装置。
【請求項7】
請求項1〜6のいずれかに記載のバスブリッジ装置を備えることを特徴とするデータ処理システム。

【図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