(57)【要約】【課題】スプリットトランザクション方式のバスブリッジ装置において、複数の下位バス間の排他制御を実現する。【解決手段】排他制御部０１５は、下位バスＩＦ部による下位バスへのアクセス状況を監視し、下位バスＩＦ部による下位バスへのアクセス状況が所定の排他条件に合致している間は、次の実行対象のコマンドに基づいて下位バスへのアクセスを行う下位バスＩＦ部に下位バスへのアクセスを保留させ、アクセス状況が排他条件に合致しなくなった際に、アクセスを保留させていた下位バスＩＦ部による下位バスへのアクセスを開始させることで、複数の下位バス間の排他制御を実現する。【選択図】図１
2012190322.tif 000002
【特許請求の範囲】
【請求項１】
スプリットトランザクション方式の上位バスに接続され、前記上位バスからコマンドを入力する上位バスインタフェース部と、
複数の下位バスに接続され、前記コマンドに基づいて接続先の下位バスへのアクセスを行う複数の下位バスインタフェース部と、
前記下位バスへのアクセスの状態を示す現アクセス状態と
前記下位バスで次に実行予定のコマンドの状態を示す次コマンド状態と
排他条件を指定する排他条件情報とに基づいて排他条件の判定を実施し前記排他条件が成立している間は前記下位バスで次に実行予定のコマンドの実行を待たせることにより前記下位バスへのアクセスを前記複数の下位バス間で排他的に実行する排他制御部と
を備えたことを特徴とするバスブリッジ装置。
【請求項２】
前記現アクセス状態は前記下位バスへのアクセスを実行しているコマンドを示す実行中コマンド情報を含み、
前記次コマンド状態は前記下位バスで次に実行予定のコマンドを示す先頭コマンド情報を含み、
前記排他条件情報は前記実行中コマンド情報についての所定の条件を示す実行中コマンド条件と
前記先頭コマンド情報についての特定の条件を示す先頭コマンド条件とを含む
ことを特徴とする請求項１に記載のバスブリッジ装置。
【請求項３】
前記バスブリッジ装置は
前記実行中コマンド条件を記憶する実行中コマンドレジスタと
前記先頭コマンド条件を記憶する先頭コマンドレジスタと
前記実行中コマンドレジスタまたは前記先頭コマンドレジスタに対応したビットマスクパターンを記憶するマスクレジスタを備え、
前記排他条件情報は前記ビットマスクパターンを含み、
前記実行中コマンドレジスタと前記先頭コマンドレジスタと前記マスクレジスタは記憶する内容を書き換え可能である
ことを特徴とする請求項２に記載のバスブリッジ装置。
【請求項４】
前記排他制御部はステートを遷移させるステートマシンとプログラムを記憶するプログラム記憶部とを備え、
前記プログラム記憶部は記憶する前記プログラムを書き換え可能であり、
前記プログラムは前記ステートマシンのステートに対応した命令から構成され、
前記命令は前記ステートマシンの次の遷移先のステートを示す遷移先ステート情報を含み、
前記ステートマシンは
前記先頭コマンド条件と前記次コマンド状態と前記遷移先ステート情報とに基づいて次の遷移先のステートを決定し、
前記排他制御部は
前記ステートマシンのステートが特定のステートへ遷移した際に
前記先頭コマンド条件と前記次コマンド状態と前記実行中コマンド条件と前記現アクセス状態と
に基づいて前記排他条件の判定を実施し前記排他条件が成立している間は前記下位バスで次に実行予定のコマンドの実行を待たせることにより前記下位バスへのアクセスを前記複数の下位バス間で排他的に実行する
ことを特徴とする請求項２又は３に記載のバスブリッジ装置。
【請求項５】
前記命令は
前記先頭コマンド条件を選択する第１の条件選択情報と
前記実行中コマンド条件を選択する第２の条件選択情報と
前記排他条件の判定を実施するステートを示す抑制指示とを含み、
前記ステートマシンは次の遷移先のステートを決定する際に前記第１の条件選択情報で選択された先頭コマンド条件を用い、
前記排他制御部は前記ステートマシンのステートが前記抑制指示で示されたステートへ遷移した際に前記第２の条件選択情報で選択された実行中コマンド条件を用いて前記排他条件の判定を実施する
ことを特徴とする請求項４に記載のバスブリッジ装置。
【請求項６】
前記プログラムはパルス生成を実施するステートを示すモニタ指示を含み、 
前記ステートマシンのステートが前記モニタ指示で示されたステートへ遷移した際にパルス生成を実施するパルス生成部を有する
ことを特徴とする請求項５に記載のバスブリッジ装置。
【請求項７】
請求項１〜６のいずれかに記載のバスブリッジ装置を備えることを特徴とするデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、上位バスと下位バスとを接続するバスブリッジ装置に関する。
【背景技術】
【０００２】
大規模な組み込みシステムでは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラなど高速なデバイスを接続する上位バスと、上位バスより低速なデバイスを接続する下位バスと、それら二種類のバスをバスブリッジ装置で中継する構成が広く用いられている。
この構成においては、上位バス側のバスマスターからバスブリッジ装置を介して下位バス側の低速デバイスにアクセスした場合に、低速デバイスの応答速度の遅さから上位バスの性能低下を引き起こすことが知られている。
この性能低下の回避策のひとつの手段として、下位バスの応答を待たずに一旦上位バスを開放するスプリットトランザクション方式を用いることが知られており、例えば特許文献１に、上位バスがコマンド発行後、下位バスの応答を待たずに一旦上位バスを開放し、下位バスの応答を得た後、上位バスへアクセス結果を返送する方式が示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−１１０３４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えば対応するバスプロトコルが異なる既存の低速デバイスを複数接続する場合など、システムによっては複数の下位バスを実装することがある。
上位バスがスプリットトランザクション方式であり、なおかつバスブリッジ装置に複数の下位バスを実装する場合は、アクセス性能の観点から、複数の下位バスはコマンド投入順に順次並列に動作させ、アクセス結果が早く返ってきたものから上位バスへアクセス結果を返すようにすることが考えられる。
一方で、例えばシステム全体のデバッグまたは解析目的で、一部アクセスについて下位バス間で排他的に動作させることが必要となる場合がある。
例えば、排他設定を行った場合のみ、一方の下位バスのライトアクセスともう一方の下位バスのライトアクセスは同時実行を行わないように動作させることなどが考えられる。
また、例えば下位バス間で共有のリソースが存在する場合では、該当リソースに対するコマンドの順序性確保のため、該当リソースに対するアクセスを下位バス間で排他的に制御することが考えられる。
【０００５】
しかし従来のバスブリッジ装置は、下位バス間のアクセスについて排他制御を行う機構が存在しない。
このため例えば上位バスから入力されたコマンドを順に処理し各コマンドに対応した下位バスアクセスを開始した場合、下位バスターゲットの反応速度の違いによってはコマンドの順序性が逆転してしまう現象が発生してしまう。
【０００６】
本発明は、このような課題を解決することを主な目的としており、スプリットトランザクション方式のバスブリッジ装置において、複数の下位バス間の排他制御を実現することを主な目的とする。
【課題を解決するための手段】
【０００７】
本発明に係るバスブリッジ装置は、
スプリットトランザクション方式の上位バスに接続され、前記上位バスからコマンドを入力する上位バスインタフェース部と、
複数の下位バスに接続され、前記コマンドに基づいて接続先の下位バスへのアクセスを行う複数の下位バスインタフェース部と、
前記下位バスへのアクセスの状態を示す現アクセス状態と
前記下位バスで次に実行予定のコマンドの状態を示す次コマンド状態と
排他条件を指定する排他条件情報とに基づいて排他条件の判定を実施し前記排他条件が成立している間は前記下位バスで次に実行予定のコマンドの実行を待たせることにより前記下位バスへのアクセスを前記複数の下位バス間で排他的に実行する排他制御部と
を備えたことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、排他条件が成立している間は下位バスで次に実行予定のコマンドの実行を待たせることにより、複数の下位バス間の排他制御を実現することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係るデータ処理システムの構成例を示す図。
【図２】実施の形態１に係る排他制御部の構成例を示す図。
【図３】実施の形態１に係るバスブリッジ装置の動作例を示すタイミングチャート図。
【図４】実施の形態２に係る排他制御部の構成例を示す図。
【図５】実施の形態３に係る排他制御部の構成例を示す図。
【図６】実施の形態３に係る命令及び選択条件の例を示す図。
【図７】実施の形態３に係るバスブリッジ装置の動作例を示すタイミングチャート図。
【図８】実施の形態４に係る排他制御部の構成例を示す図。
【図９】実施の形態１に係るバスブリッジ装置内の信号の流れを示す図。
【図１０】実施の形態１に係るバスブリッジ装置内の信号の流れを示す図。
【発明を実施するための形態】
【００１０】
実施の形態１．
図１は、本実施の形態に係るデータ処理システムの構成例を示す。
本実施の形態に係るデータ処理システムは、バスブリッジ装置００３及び周辺装置で構成される。
【００１１】
図１において、上位バスマスター００１は上位バス００２を制御するバスマスターである。
上位バスマスター００１は単一でも複数存在してもよい。
なお、上位バスマスター００１及び上位バス００２では、スプリットトランザクション方式がとられている。
【００１２】
レジスタバス００４はバスブリッジ装置００３内のレジスタ設定を行うバスである。
【００１３】
第１のターゲット００５は第１の下位バス００６に接続されたターゲット装置である。
第２のターゲット００７は第２の下位バス００８に接続されたターゲット装置である。
【００１４】
バスブリッジ装置００３は、上位バス００２から入力したコマンドに従い第１のターゲット００５または第２のターゲット００７へアクセスし、第１の下位バス００６または第２の下位バス００８から入力したリードデータや応答情報などのアクセス結果を上位バス００２を介して上位バスマスター００１へ返送する。
バスブリッジ装置００３は、上位バスインタフェース部０１０、コマンド蓄積部０１１、第１の下位バスインタフェース部０１２、第２の下位バスインタフェース部０１３、レジスタ部０１４、排他制御部０１５から構成される。
なお、上位バスインタフェース部０１０、第１の下位バスインタフェース部０１２、第２の下位バスインタフェース部０１３は、以下では、それぞれ、上位バスＩＦ部０１０、第１の下位バスＩＦ部０１２、第２の下位バスＩＦ部０１３と表記する。
【００１５】
次に、バスブリッジ装置００３の詳細について説明する。
なお、図９及び図１０に、バスブリッジ装置００３内の各要素間での信号の送受信状況を図示する。
図９は後述の第１の下位バスＩＦ部０１２が第１の下位バス００６にアクセスする際の信号の送受信状況を示し、図１０は後述の第２の下位バスＩＦ部０１３が第２の下位バス００８にアクセスする際の信号の送受信状況を示している。
なお、作図上の理由から、図９では、第２の下位バスＩＦ部０１３、第２の下位バス００８及び第２のターゲット００７の図示は省略している。
同様に、図１０では、第１の下位バスＩＦ部０１２、第１の下位バス００６及び第１のターゲット００５の図示は省略している。
【００１６】
上位バスＩＦ部０１０は、上位バス００２に接続され、上位バス００２からコマンド（図９、図１０でＣと表記）を入力し、入力したコマンドとコマンドが有効であることを示すコマンド有効パルス（図９、図１０ではＣ有効Ｐと表記）をコマンド蓄積部０１１へ出力する。
コマンドは、リード／ライト情報、アドレス情報、ライトデータなどの情報を含む。
【００１７】
コマンド蓄積部０１１は、上位バスＩＦ部０１０から入力した有効なコマンドを内部のバッファへ蓄積する。
そして内部のバッファに蓄積したコマンドから次に実行すべきコマンドとして例えば最も古いコマンドを選択し、先頭コマンド（図９、図１０では先頭Ｃと表記）として、排他制御部０１５、第１の下位バスＩＦ部０１２及び第２の下位バスＩＦ部０１３へ出力する。
なお、先頭コマンドは、コマンド蓄積部０１１のバッファに蓄積されているコマンドのうち、第１の下位バスＩＦ部０１２または第２の下位バスＩＦ部０１３における次の実行対象のコマンドであるため、次実行コマンドともいう。
コマンド蓄積部０１１は、同時に先頭コマンドが有効であることを示す先頭コマンド有効フラグ信号（以下では、単に先頭コマンド有効フラグという）（図９、図１０では有効Ｆと表記）も合わせて第１の下位バスＩＦ部０１２及び第２の下位バスＩＦ部０１３へ出力する。
先頭コマンド及び先頭コマンド有効フラグは、第１の下位バスＩＦ部０１２または第２の下位バスＩＦ部０１３から第１のコマンド取得パルス信号（以下では、単に第１のコマンド取得パルスという）（図９では、第１Ｃ取得Ｐと表記）または第２のコマンド取得パルス信号（以下では、単に第２のコマンド取得パルスという）（図１０では、第２Ｃ取得Ｐと表記）が入力されるまで保持し、第１のコマンド取得パルスまたは第２のコマンド取得パルスが入力されたら先頭コマンド及び先頭コマンド有効フラグを更新する。
すなわち、第１のコマンド取得パルスまたは第２のコマンド取得パルスが入力された時点で内部のバッファに次のコマンドが蓄積されていれば先頭コマンドを次のコマンドへ更新し、内部のバッファに次のコマンドが蓄積されていない場合は先頭コマンド有効フラグを解除する。
【００１８】
第１の下位バスＩＦ部０１２は、コマンド蓄積部０１１が出力する先頭コマンド及び先頭コマンド有効フラグを参照し、先頭コマンドが有効であり、なおかつ先頭コマンドのアクセス先が第１の下位バス００６に該当した場合に、第１のコマンド取得有効フラグ信号（以下では、単に第１のコマンド取得有効フラグという）（図９では、第１Ｃ取得有効Ｆと表記）を排他制御部０１５へ出力する。
そして、排他制御部０１５が出力する第１のコマンド取得抑制フラグ信号（以下では、単に第１のコマンド取得抑制フラグという）（図９では、第１Ｃ取得抑制Ｆと表記）が無効であり、さらに第１の下位バス００６へアクセス開始可能な状態（すなわち第１の下位バス００６へアクセス中でない場合）であれば、第１のコマンド取得パルスをコマンド蓄積部０１１へ出力する。
第１の下位バスＩＦ部０１２は、同時に先頭コマンドを内部へ格納し、先頭コマンドに示された第１の下位バス００６へのアクセスを開始する。
上位バス００２と第１の下位バス００６とのプロトコルの違いによりコマンド変換が必要な場合はバスブリッジ装置内で適宜コマンド変換を実施する。
また、内部へ格納した先頭コマンドは、第１の実行中コマンド信号（以下では、単に第１の実行中コマンドという）（図９では、第１実行中Ｃと表記）として排他制御部０１５へ通知する。
第１の下位バスＩＦ部０１２は、第１の下位バス００６へのアクセス中は第１のビジーフラグ信号（以下では、単に第１のビジーフラグという）（図９では、第１ビジーＦと表記）を排他制御部０１５へ出力する。
そして第１の下位バス００６へのアクセスが終了したら、第１の下位バスＩＦ部０１２は、第１の下位バス００６のアクセス結果と第１のアクセス結果有効フラグ信号（第１のアクセス結果有効フラグという）（図９では、第１Ａ結果有効Ｆと表記）を上位バスＩＦ部０１０へ出力する。
第１のアクセス結果有効フラグ及び第１のビジーフラグは上位バスＩＦ部０１０から第１のアクセス結果取得パルス信号（以下、単に第１のアクセス結果取得パルスという）（図９では、第１Ａ結果取得Ｐと表記）が入力されたら解除する。
【００１９】
第２の下位バスＩＦ部０１３は、第１の下位バスＩＦ部０１２と同様に、コマンド蓄積部０１１が出力する先頭コマンド及び先頭コマンド有効フラグを参照し、先頭コマンドが有効であり、なおかつ先頭コマンドのアクセス先が第２の下位バス００８に該当した場合、第２のコマンド取得有効フラグ信号（以下、単に第２のコマンド取得有効フラグという）（図１０では、第２Ｃ取得有効Ｆと表記）を排他制御部０１５へ出力する。
そして、排他制御部０１５が出力する第２のコマンド取得抑制フラグ信号（以下、単に第２のコマンド取得抑制フラグという）（図１０では、第２Ｃ取得抑制Ｆと表記）が無効であり、さらに第２の下位バス００８へアクセス開始可能な状態（すなわち第２の下位バス００８へアクセス中でない場合）であれば、第２のコマンド取得パルスをコマンド蓄積部０１１へ出力する。
第２の下位バスＩＦ部０１３は、同時に先頭コマンドを内部へ格納し、先頭コマンドに示された第２の下位バス００８へのアクセスを開始する。
上位バス００２と第２の下位バス００８とのプロトコルの違いによりコマンド変換が必要な場合は第２の下位バスＩＦ部０１３は適宜コマンド変換を実施する。
また、内部へ格納した先頭コマンドは、第２の実行中コマンド信号（以下、単に第２の実行中コマンドという）（図１０では、第２実行中Ｃと表記）として排他制御部０１５に通知する。
第２の下位バス００８へのアクセス中は第２のビジーフラグ信号（以下、単に第２のビジーフラグという）（図１０では、第２ビジーＦと表記）を排他制御部０１５へ出力する。
そして第２の下位バス００８へのアクセスが終了したら、第２の下位バス００８のアクセス結果と第２のアクセス結果有効フラグ信号（以下、単に第２のアクセス結果有効フラグという）（図１０では、第２Ａ結果有効Ｆと表記）を上位バスＩＦ部０１０へ出力する。
第２のアクセス結果有効フラグ及び第２のビジーフラグは上位バスＩＦ部０１０から第２のアクセス結果取得パルス信号（以下、単に第２のアクセス結果取得パルスという）（図１０では、第２Ａ結果取得Ｐと表記）が入力されたら解除する。
【００２０】
上位バスＩＦ部０１０は、第１の下位バスＩＦ部０１２または第２の下位バスＩＦ部０１３から有効なアクセス結果が入力され、なおかつ上位バス００２へアクセス開始可能な状態であれば、アクセス結果を内部へ格納し、上位バス００２へアクセス結果を返送するアクセスを開始すると同時に、該当するアクセス結果取得パルス（第１のアクセス結果取得パルスまたば第２のアクセス結果取得パルス）を該当する下位バスＩＦ部（第１の下位バスＩＦ部０１２または第２の下位バスＩＦ部０１３）へ出力する。
第１の下位バスＩＦ部０１２と第２の下位バスＩＦ部０１３との両方から有効なアクセス結果が入力された場合は適宜優先度を割り当て、片方ずつ上位バス００２へ返送する。
【００２１】
また、レジスタ部０１４は、レジスタバス００４から設定された排他条件情報を保持し、排他条件情報を排他制御部０１５へ出力する。
【００２２】
排他制御部０１５は、第１の下位バスＩＦ部０１２から第１のコマンド取得有効フラグを、または第２の下位バスＩＦ部０１３から第２のコマンド取得有効フラグを入力したら、コマンド蓄積部０１１が出力している先頭コマンドと、第２の実行中コマンドまたは、第１の実行中コマンド（すなわち現在アクセス中のコマンド）及び第２のビジーフラグまたは第１のビジーフラグを参照し、レジスタ部０１４から入力した排他条件情報に従った排他条件が成立するか不成立かの判定を行う。
そして排他条件が成立する場合は、コマンド取得抑制フラグ（第１のコマンド取得抑制フラグまたは第２のコマンド取得抑制フラグ）を該当する下位バスＩＦ部（第１の下位バスＩＦ部０１２または第２の下位バスＩＦ部０１３）を有効にして出力し続け、排他条件が不成立になったらコマンド取得抑制フラグを無効にする。
【００２３】
次に、図２に、本実施の形態に係る排他制御部０１５の構成例を示す。
【００２４】
第１のコマンド取得抑制フラグ生成回路１００は、第１の下位バスＩＦ部０１２へ出力する第１のコマンド取得抑制フラグ１０７を生成する回路である。
第２のコマンド取得抑制フラグ生成回路１０１は、第２の下位バスＩＦ部０１３へ出力する第２のコマンド取得抑制フラグ１０８を生成する回路である。
なお、第１のコマンド取得抑制フラグ１０７及び第２のコマンド取得抑制フラグ１０８コマンドを区別しないときは、両者の総称としてコマンド取得抑制フラグと表記する。
ＡＮＤ回路１０５、１０６はＡＮＤ演算を行う回路である。
【００２５】
第２の実行中コマンド判定部１０３は、第２の実行中コマンド１１０が排他条件に一致するかを判定する回路であり、第２のビジーフラグ１０９が有効かつ第２の実行中コマンド１１０が第２の実行中コマンド条件１１１に一致する場合はＨを、それ以外の場合はＬを出力する。
第１の先頭コマンド判定部１０４は、先頭コマンド１１３が排他条件に一致するかを判定する回路であり、第１のコマンド取得有効フラグ１１２が有効かつ先頭コマンド１１３が第１の先頭コマンド条件１１４に一致する場合はＨを、それ以外の場合はＬを出力する。
第１のコマンド取得抑制フラグ１０７は、第２の実行中コマンド判定部１０３と第１の先頭コマンド判定部１０４の出力をＡＮＤ演算することで得られる。
すなわち、第２の下位バス００８で実行中のコマンドと、次に第１の下位バス００６で実行するコマンドとが排他条件に一致した際に第１のコマンド取得抑制フラグ１０７を有効（Ｈ）にする。
なお、第２の実行中コマンド条件１１１と、第１の先頭コマンド条件１１４とは、レジスタ部０１４から排他制御部０１５へ入力される排他条件情報から得られるものとする。
【００２６】
第１の実行中コマンド判定部１１５は、第１の実行中コマンド１１８が排他条件に一致するかを判定する回路であり、第１のビジーフラグ１１７が有効かつ第１の実行中コマンド１１８が第１の実行中コマンド条件１１９に一致する場合はＨを、それ以外の場合はＬを出力する。
第２の先頭コマンド判定部１１６は、先頭コマンド１１３が排他条件に一致するかを判定する回路であり、第２のコマンド取得有効フラグ１２０が有効かつ先頭コマンド１１３が第２の先頭コマンド条件１２１に一致する場合はＨを、それ以外の場合はＬを出力する。
第２のコマンド取得抑制フラグ１０８は、第１の実行中コマンド判定部１１５と第２の先頭コマンド判定部１１６の出力をＡＮＤ演算することで得られる。
すなわち、第１の下位バス００６で実行中のコマンドと、次に第２の下位バス００８で実行するコマンドとが排他条件に一致した際に第２のコマンド取得抑制フラグ１０８を有効（Ｈ）にする。
なお、第１の実行中コマンド条件１１９と、第２の先頭コマンド条件１２１とは、レジスタ部０１４から排他制御部０１５へ入力される排他条件情報から得られるものとする。
これらはコマンド値と直接比較できる値であってもよいし、特定のコマンド値を指定する符号であってもよい。また簡単のため、排他制御を行わない場合の設定値もこれらに含めるものとする。
【００２７】
排他条件の簡単な例として、例えば、レジスタ部０１４に排他条件設定レジスタとして１ビットのレジスタを実装し、値「０」は排他制御なし、値「１」は第１の下位バス００６のライトコマンドと第２の下位バス００８のライトコマンドとを排他的に動作させると規定する。
そして第２の実行中コマンド判定部１０３は、第２の実行中コマンド条件１１１として値「１」が入力された場合は、第２の実行中コマンド１１０がライトコマンドであれば第２の実行中コマンド条件１１１に一致とみなすようにし、第２の実行中コマンド条件１１１として値「０」が入力された場合は、第２の実行中コマンド１１０に関わらず第２の実行中コマンド条件１１１に不一致とみなすようにする。
第１の先頭コマンド条件１１４、第１の実行中コマンド条件１１９、第２の先頭コマンド条件１２１についても同様に判定を行うことで、第１の下位バス００６のライトコマンドの次に第２の下位バス００８のライトコマンドが続いた場合は第２のコマンド取得抑制フラグ１０８が有効に、第２の下位バス００８のライトコマンドの次に第１の下位バス００６のライトコマンドが続いた場合は第１のコマンド取得抑制フラグ１０７が有効になるようにすることができる。
【００２８】
次に動作の例を、図３に示すタイミングチャートを用いて説明する。
なお、図３においてフラグまたはパルスは全て有効ならはＨを、無効ならばＬを示すものとする。
また、図３のタイミングチャートは前述の排他制御の例に対応している。
このような排他条件の場合に、排他制御部０１５は、次実行下位バスインタフェース部（第１の下位バスＩＦ部０１２または第２の下位バスＩＦ部０１３）によるライトアクセスに先行して他の下位バスインタフェース部（第２の下位バスＩＦ部０１３または第１の下位バスＩＦ部０１２）が下位バスへライトアクセスを行っている間は、排他条件に合致しているとして、次実行下位バスインタフェース部による下位バスへのアクセスを保留させ、アクセス中であった下位バスインタフェース部による下位バスへのアクセスが完了した際に、排他条件に合致しなくなったとして、次実行下位バスインタフェース部による下位バスへのアクセスを開始させるという制御を行っている。
【００２９】
まず、上位バスマスター００１は、上位バス００２へ、第１の下位バス００６へのライトコマンド（図の（１））を、その後、第２の下位バス００８へのライトコマンド（図の（２））を発行する。
バスブリッジ装置００３は、まず上位バスＩＦ部０１０から、ライトコマンドを入力し、コマンド蓄積部０１１へ格納する。
そしてコマンド蓄積部０１１からは最初の先頭コマンド１１３が出力される。
第１の下位バスＩＦ部０１２は、第１のコマンド取得抑制フラグ１０７が無効（Ｌ）であるので、先頭コマンド１１３を内部へ格納し第１の下位バス００６へのアクセスを開始する。
このとき第１の実行中コマンド１１８として第１の下位バス００６へのライトコマンドを出力し第１のビジーフラグ１１７を有効とする。
また、コマンド蓄積部０１１では、第１の下位バスＩＦ部０１２から第１のコマンド取得パルスが入力されたことで、先頭コマンド１１３を次のコマンド、すなわち第２の下位バス００８へのライトコマンドに更新する。
排他制御部０１５では、第１の下位バス００６でライトコマンドが実行中であり、先頭コマンド１１３が第２の下位バス００８へのライトコマンドである間は、第２のコマンド取得抑制フラグ１０８を有効にする。
この間は、第２の下位バスＩＦ部０１３は第２のコマンド取得パルスを発行できず、第２の下位バス００８へのアクセスが行われない。
【００３０】
そして第１の下位バス００６へのライトアクセスが終了したら、第１のビジーフラグ１１７が無効になり、第２のコマンド取得抑制フラグ１０８も無効になるので、第２の下位バスＩＦ部０１３は、先頭コマンド１１３を取得し、第２の下位バス００８へのライトアクセスを開始する。
また、第１の下位バス００６のアクセス結果は、第１の下位バスＩＦ部０１２から第１のアクセス結果有効フラグと共に上位バスＩＦ部０１０へ出力され、上位バスＩＦ部０１０が第１のアクセス結果取得パルスを出力し、上位バス００２へのアクセス結果の返送が開始する（図の（１）’）。
同様に第２の下位バス００８のアクセス結果も、第２の下位バスＩＦ部０１３から第２のアクセス結果有効フラグと共に上位バスＩＦ部０１０へ出力され、上位バスＩＦ部０１０が第２のアクセス結果取得パルスを出力し、上位バス００２へのアクセス結果の返送が開始する（図の（２）’）。
【００３１】
以上のように、下位バスへのアクセスの状態と次に下位バスで実行予定のコマンドの状態と、あらかじめ指定した排他条件情報とを比較し、排他条件に一致（排他条件が成立）する場合は、次に下位バスで実行予定のコマンドの実行を待たせるようにバスブリッジ装置を構成することで、排他条件に従った複数の下位バス間での排他的なアクセスを実現することができる。
また、本実施の形態に係るバスブリッジ装置は、上位バスを介さずに排他制御を行うため、上位バス及び上位バスマスターへ特別な機構を実装する必要がないという利点もある。
なお、本実施の形態では、ライトコマンド同士の排他制御の例を示したが、例えば特定のアドレスや特性のライトデータなども排他条件に加えてもよい。
また、排他条件としてコマンドの値を特定せず、全てのコマンドが条件一致とみなすように構成すれば、全ての下位バスアクセスを排他的に実行するように動作させることもできる。
また、本実施の形態では、下位バスが２本の場合を記載したが、下位バスが３本以上の構成でも同様に実現することができる。
【００３２】
実施の形態２．
本実施の形態では、排他条件設定として、複数のコマンドレジスタとマスクレジスタを実装して排他条件を指定できるようにしている。
【００３３】
図４は本実施の形態によるバスブリッジ装置００３の排他制御部０１５の構成例を示すブロック図である。
なお、図４において、実施の形態１と同じ信号は同じ符号を付しており、説明を省略する。
【００３４】
図４において、ＡＮＤ回路３０８はＡＮＤ演算を行う回路であり、ＯＲ回路３０９はＯＲ演算を行う回路である。
４０−０は、レジスタ部０１４内に実装したコマンドレジスタ（図示を省略）の値、４０−１はレジスタ部０１４内に実装したマスクレジスタ（図示を省略）の値であり、４０−０のコマンド値に対応している。
４１〜４７−０は、４０−０と同じくレジスタ部０１４内に実装したコマンドレジスタ（図示を省略）の値、４１〜４７−１は、４０−１と同じく、レジスタ部０１４内に実装したマスクレジスタ（図示を省略）の値であり、同様に４１〜４７−０のコマンド値にそれぞれ対応している。
【００３５】
第２の実行中コマンド第１判定部３００は、第２の実行中コマンド１１０とコマンドレジスタ４０−０とについてマスクレジスタ４０−１が無効（非マスク）を示すビットを比較し、一致すれば条件一致とし、なおかつ第２のビジーフラグ１０９が有効であれば、有効（Ｈ）を、それ以外の場合（条件不一致または第２のビジーフラグ１０９が無効の場合）は無効（Ｌ）を出力する。
第１の先頭コマンド第１判定部３０１は、先頭コマンド１１３とコマンドレジスタ４１−０とについてマスクレジスタ４１−１が無効（非マスク）を示すビットを比較し、一致すれば条件一致とし、なおかつ第１のコマンド取得有効フラグ１１２が有効であれば、有効（Ｈ）を、それ以外の場合（条件不一致または第１のコマンド取得有効フラグ１１２が無効の場合）は無効（Ｌ）を出力する。
第２の実行中コマンド第２判定部３０２、第１の先頭コマンド第２判定部３０３は、それぞれ第２の実行中コマンド第１判定部３００、第１の先頭コマンド第１判定部３０１からコマンドレジスタ、マスクレジスタが変更された以外は同じである。
【００３６】
第１の実行中コマンド第１判定部３０４は、第１の実行中コマンド１１８とコマンドレジスタ４４−０とについてマスクレジスタ４４−１が無効（非マスク）を示すビットを比較し、一致すれば条件一致とし、なおかつ第１のビジーフラグ１１７が有効であれば、有効（Ｈ）を、それ以外の場合（条件不一致または第１のビジーフラグ１１７が無効の場合）は無効（Ｌ）を出力する。
第２の先頭コマンド第１判定部３０５は、先頭コマンド１１３とコマンドレジスタ４６−０とについてマスクレジスタ４６−１が無効（非マスク）を示すビットを比較し、一致すれば条件一致とし、なおかつ第２のコマンド取得有効フラグ１２０が有効であれば、有効（Ｈ）を、それ以外の場合（条件不一致または第２のコマンド取得有効フラグ１２０が無効の場合）は無効（Ｌ）を出力する。
第１の実行中コマンド第２判定部３０６、第２の先頭コマンド第２判定部３０７は、それぞれ第１の実行中コマンド第１判定部３０４、第２の先頭コマンド第１判定部３０５からコマンドレジスタ、マスクレジスタが変更された以外は同じである。
【００３７】
なお、３００〜３０７の各々においてば、マスクレジスタ入力が全て有効（全ビットマスク）の場合は条件不一致とし、排他制御を行わないという指示に使用する。
また、ＯＲ回路３０９−１により、第２の実行中コマンド第１判定部３００と第１の先頭コマンド第１判定部３０１で検出した排他条件と、第２の実行中コマンド第２判定部３０２、第１の先頭コマンド第２判定部３０３で検出した排他条件との２通りの条件のいずれかに該当すれば、第１のコマンド取得抑制フラグ１０７が有効（Ｈ）を示すようになる。
同様に、ＯＲ回路３０９−２により、第１の実行中コマンド第１判定部３０４と第２の先頭コマンド第１判定部３０５で検出した排他条件と、第１の実行中コマンド第２判定部３０６、第２の先頭コマンド第２判定部３０７で検出した排他条件との２通りの条件のいずれかに該当すれば、第２のコマンド取得抑制フラグ１０８が有効（Ｈ）を示すようになる。
【００３８】
以上のように、コマンドレジスタ、マスクレジスタを用いて構成することにより、排他条件を随時別の任意の条件に書き換えることが可能となる。
また、マスクレジスタをビット単位で設定できることにより、例えばアドレスのうち上位ビットのみを排他条件へ含める、あるいは一部の条件のみライトデータの値も条件に含めるということも可能となる。
また、複数の排他条件設定を用意することにより、バスブリッジ製造後に排他条件の追加を容易に行うことができるようになる。
例えばバスブリッジ装置製造時には１通りのみの排他条件しか必要なかったが、バスブリッジ製造後にシステムの変更または不具合などの要因でもう１通り排他条件の追加が必要になった場合に、バスブリッジ装置のハードウェアを改訂せずに、レジスタ設定を変更するのみで排他条件の追加が行えるようになる。
【００３９】
実施の形態３．
本実施の形態では、排他制御部０１５にプログラム可能なステートマシンを実装してシーケンスとして排他条件を指定できるようにしている。
【００４０】
図５は、実施の形態３によるバスブリッジ装置００３の排他制御部０１５の構成例を示すブロック図である。
なお、図５では、作図上の理由から、第１の先頭コマンド第１判定部３０１を１先−１と略記し、第１の先頭コマンド第２判定部３０３を１先−２と略記し、第２の先頭コマンド第１判定部３０５を２先−１と略記し、第２の先頭コマンド第２判定部３０７を２先−２と略記している。
同様に、第２の実行中コマンド第１判定部３００を２実−１と略記し、第２の実行中コマンド第２判定部３０２を２実−２と略記し、第１の実行中コマンド第１判定部３０４を１実−１と略記し、第１の実行中コマンド第２判定部３０６を１実−２と略記している。
【００４１】
プログラム記憶部５００は、ステートマシン５０１が示すステート値に対応した命令を記憶し、ステートマシンから入力されるステート値に対応した命令を出力する。
命令は、第１の条件選択値（条件１選択とも表記する）、第２の条件選択値（条件２選択とも表記する）、抑制指示（抑制とも表記する）、第１の遷移先ステート値（遷移先１とも表記する）、第２の遷移先ステート値（遷移先２とも表記する）とから構成される。
第１の遷移先ステート値及び第２の遷移先ステート値は、遷移先ステート情報の例である。
【００４２】
ステートマシン５０１は、ステート値を管理し、プログラム記憶部５００から出力される命令を参照し、第１の条件選択値によって選択された条件が成立する場合は、第１の遷移先ステート値へ、条件が成立しない場合は第２の遷移先ステート値へ、ステート値を遷移させる。
なお、ステート値の遷移は、第１のコマンド取得パルス５０６または第２のコマンド取得パルス５０７毎に１回行う。
【００４３】
セレクタ５０２は、第１の条件選択値によって先頭コマンドの条件を選択するセレクタであり、例えば第２の実施の形態における、第１の先頭コマンド第１判定部３０１、第１の先頭コマンド第２判定部３０３、第２の先頭コマンド第１判定部３０５、第２の先頭コマンド第２判定部３０７及び付随するレジスタをレジスタ部０１４に構成し接続する。
【００４４】
セレクタ５０３は、第２の条件選択値によって下位バス実行中コマンドの条件を選択するセレクタであり、例えば第２の実施の形態における、第２の実行中コマンド第１判定部３００、第２の実行中コマンド第２判定部３０２、第１の実行中コマンド第１判定部３０４、第１の実行中コマンド第２判定部３０６及び付随するレジスタをレジスタ部０１４に構成し接続する。
【００４５】
抑制フラグ生成回路５０４は、第１のコマンド取得抑制フラグ１０７、第２のコマンド取得抑制フラグ１０８を生成する回路である。
抑制フラグ生成回路５０４は、セレクタ５０２で選択された条件とセレクタ５０３で選択された条件とが両方とも一致（Ｈ）であり、なおかつ命令の抑制指示５０５が有効（Ｈ）である場合、第１のコマンド取得有効フラグ１１２が有効（Ｈ）であれば第１のコマンド取得抑制フラグ１０７を有効（Ｈ）に、第２のコマンド取得有効フラグ１２０が有効であれば第２のコマンド取得抑制フラグ１０８を有効（Ｈ）にする。
【００４６】
図６に命令及び排他条件設定の例を示す。
ステート値０では、第２の下位バス００８で実行するコマンド（２）を受信後ステート値１へ遷移し、ステート値１では、第１の下位バス００６で実行するコマンド（３）を受信後ステート値２へ遷移し、ステート値２では、先頭コマンドが第２の下位バス００８で実行するコマンド（４）であれば、前のコマンド（コマンド（３））の終了までコマンド（４）の取得を抑制するよう設定している。
【００４７】
図７に図６の設定例を動作させたタイミングチャートを示す。
最初のコマンド（１）は、セレクタ５０２で選ばれる条件が不成立（Ｌ）となるため、ステートの遷移先は遷移先２であるステート０が選ばれステート値は０のままとなる。
その後は、セレクタ５０２で選ばれる条件が成立（Ｈ）し、ステート値が１、２、０と遷移する。
ステート値が２の状態では、抑制指示が有効（Ｈ）であるので、セレクタ５０３出力で条件一致（Ｈ）が成立している間、第２のコマンド取得抑制フラグがアサート（Ｈ）され、その間コマンド（４）の実行が待たされる。
このようにして、シーケンシャルな排他制御を行うことができる。
【００４８】
このように、排他条件設定をシーケンスとしてプログラムできるようにしているので、例えば特定のコマンドシーケンスが発生した場合のみ排他制御が必要になるような場合でも排他制御を行うことができる。
【００４９】
なお、図５においては、セレクタ５０２へ接続する先頭コマンドの条件及びセレクタ５０３へ接続する下位バス実行コマンドの条件として、実施の形態２で記したようにマスクレジスタ及びコマンドレジスタを用いて条件生成を行う構成例を示したが、実施の形態１で記したように実行中コマンドまたは先頭コマンドのコマンド値から条件を直接算出するように構成してもよい。
【００５０】
実施の形態４．
本実施の形態では、排他制御部の命令にモニタ指示を追加して、パルス生成をできるようにしている。
【００５１】
図８は、本実施の形態に係る排他制御部０１５の構成例を示したものである。
プログラム記憶部５００は記憶する命令にモニタ指示を含み、５０８はプログラム記憶部５００から出力される命令のモニタ指示である。
パルス生成回路５１０はパルス５０９を生成する回路であり、モニタ指示５０８が有効なステートでセレクタ５０２によって選ばれる条件が成立（Ｈ）していたら、第１のコマンド取得パルス５０６または第２のコマンド取得パルス５０７のタイミングで、バスブリッジ装置００３の外部へパルス５０９（Ｈ）出力を行うように構成している。
これにより特定のシーケンスが出現した際にパルス５０９出力を行うことができるようになる。
例えば、このパルス５０９出力をバスブリッジ装置００３外部のカウンタでカウントすることで特定のシーケンスの出現回数を計数することができ、あるいは信号トレース用のトリガーとして用いることで、特定のシーケンスの出現時の信号トレースを行うことができる。
なお、パルス生成回路５１０は、パルス生成部の例である。
【００５２】
このように、本実施の形態によれば、命令にモニタ指示を加えパルス生成を行うことで、デバッグ容易性を向上させることができる。
【符号の説明】
【００５３】
００１  上位バスマスター、００２  上位バス、００３  バスブリッジ装置、００４  レジスタバス、００５  第１のターゲット、００６  第１の下位バス、００７  第２のターゲット、００８  第２の下位バス、０１０  上位バスＩＦ部、０１１  コマンド蓄積部、０１２  第１の下位バスＩＦ部、０１３  第２の下位バスＩＦ部、０１４  レジスタ部、０１５  排他制御部、１００  第１のコマンド取得抑制フラグ生成回路、１０１  第２のコマンド取得抑制フラグ生成回路、１０３  第２の実行中コマンド判定部、１０４  第１の先頭コマンド判定部、１０５  ＡＮＤ回路、１０６  ＡＮＤ回路、１０７  第１のコマンド取得抑制フラグ、１０８  第２のコマンド取得抑制フラグ、１０９  第２のビジーフラグ、１１０  第２の実行中コマンド、１１１  第２の実行中コマンド条件、１１２  第１のコマンド取得有効フラグ、１１３  先頭コマンド、１１４  第１の先頭コマンド条件、１１５  第１の実行中コマンド判定部、１１６  第２の先頭コマンド判定部、１１７  第１のビジーフラグ、１１８  第１の実行中コマンド、１１９  第１の実行中コマンド条件、１２０  第２のコマンド取得有効フラグ、１２１  第２の先頭コマンド条件、３００  第２の実行中コマンド第１判定部、３０１  第１の先頭コマンド第１判定部、３０２  第２の実行中コマンド第２判定部、３０３  第１の先頭コマンド第２判定部、３０４  第１の実行中コマンド第１判定部、３０５  第２の先頭コマンド第１判定部、３０６  第１の実行中コマンド第２判定部、３０７  第２の先頭コマンド第２判定部、３０８  ＡＮＤ回路、３０９  ＯＲ回路、５００  プログラム記憶部、５０１  ステートマシン、５０２  セレクタ、５０３  セレクタ、５０４  抑制フラグ生成回路、５１０  パルス生成回路。
【図１】
2012190322.tif 000003
【図２】
2012190322.tif 000004
【図３】
2012190322.tif 000005
【図４】
2012190322.tif 000006
【図５】
2012190322.tif 000007
【図６】
2012190322.tif 000008
【図７】
2012190322.tif 000009
【図８】
2012190322.tif 000010
【図９】
2012190322.tif 000011
【図１０】
2012190322.tif 000012