(57)【要約】【課題】複数のマスタからスレーブへ同一のアクセス要求が重複して発生した場合であっても、データ転送効率を維持しつつアクセス制御が可能なバス調停装置を得る。【解決手段】バス調停装置１０は、バス１に接続されたマスタ２ａ〜２ｃからスレーブ３ａ、３ｂへのアクセスを調停するものであって、マスタから送信中の第１のリクエストコマンド及び第１の宛先アドレスの情報を第１のリクエスト情報として保持する転送中リクエスト保持部１２と、マスタからスレーブへ送信完了した第１のリクエスト情報を第２のリクエスト情報として保持する前転送リクエスト保持部１３と、転送中リクエスト保持部１２及び前転送リクエスト保持部１３から第１及び第２のリクエスト情報を受信し、これらの情報を用いてマスタ２ａ〜２ｃを選択し、アクセス要求先のスレーブ３ａ、３ｂへアクセス可能なマスタと判定する判定部１１と、を備える。【選択図】図２
2012173847.tif 000002
【特許請求の範囲】
【請求項１】
バスに接続された第１のマスタ及び第２のマスタから前記バスに接続されたスレーブに対し同じタイミングでアクセス要求がなされた場合に前記第１のマスタ及び第２のマスタから前記スレーブへのアクセス要求を調停する前記バスに接続されたバス調停装置において、
前記第１のマスタが前記スレーブに対してアクセス要求する第１のリクエストコマンド及び前記第１のリクエストコマンドの実行先スレーブを示す第１の宛先アドレスの情報を前記第１のマスタから第１のタイミングに受信し、前記第２のマスタが前記スレーブに対してアクセスを要求する第２のリクエストコマンド及び前記第２のリクエストコマンドの実行先スレーブを示す第２の宛先アドレスの情報を前記第２のマスタから前記第１のタイミングに受信し、受信した前記第１のリクエストコマンド、前記第１の宛先アドレスの情報、前記第２のリクエストコマンド、及び前記第２の宛先アドレスの情報を第１のリクエスト情報として保持する第１のリクエスト保持部と、
前記第１のマスタ又は前記第２のマスタから前記スレーブに対してアクセス要求され前記第１のタイミングより前の第２のタイミングに実行されたリクエストコマンド及びそのリクエストコマンドの実行先スレーブを示す宛先アドレスの情報を第２のリクエスト情報として保持する第２のリクエスト保持部と、
前記第１のリクエスト保持部から前記第１のリクエスト情報を受信し、前記第２のリクエスト保持部から前記第２のリクエスト情報を受信し、該第１及び第２のリクエスト情報を用いて、前記第１のタイミングにおける前記第１のマスタからのアクセス要求または前記第２のマスタからのアクセス要求のいずれを実行するかを判定する判定部と、
を備えたことを特徴とするバス調停装置。
【請求項２】
前記判定部は、
前記第１のマスタから要求された前記第１のタイミング及び前記第２のタイミングにおけるリクエストコマンドの数、および前記第２のマスタから要求された前記第１のタイミング及び前記第２のタイミングにおけるリクエストコマンドの数をそれぞれ集計し、集計した前記第１及び第２のマスタのリクエストコマンドの数を合計した合計リクエストコマンド数を算出し、
前記第１のタイミング及び前記第２のタイミングに前記リクエストコマンドを送信した第１のマスタの数、および前記第１のタイミング及び前記第２のタイミングに前記リクエストコマンドを送信した第２のマスタの数をそれぞれ集計し、集計した前記第１及び第２のマスタの数を合計した合計マスタ数を算出し、
算出した前記合計リクエストコマンド数と前記合計マスタ数を用いて前記第１のマスタからのアクセス要求または前記第２のマスタからのアクセス要求のいずれを実行するかを判定することを特徴とする請求項１に記載のバス調停装置。
【請求項３】
前記判定部は、
前記合計リクエストコマンド数と前記合計マスタ数を比較し、前記合計マスタ数が前記合計リクエストコマンド数以下の場合に、前記第１のマスタからのアクセス要求及び前記第２のマスタからのアクセス要求のうち、前記集計した第１のマスタの数または第２のマスタの数が少ないマスタからのアクセス要求を実行するアクセス要求と判定することを特徴とする請求項２に記載のバス調停装置。
【請求項４】
前記判定部は、
前記合計リクエストコマンド数と前記合計マスタ数を比較し、前記合計マスタ数が前記合計リクエストコマンド数以下の場合に、前記第１のマスタからのアクセス要求及び前記第２のマスタからのアクセス要求のうち、前記集計した第１のマスタから要求されたリクエストコマンドの数または第２のマスタから要求されたリクエストコマンドの数が少ないマスタからのアクセス要求を実行するアクセス要求と判定することを特徴とする請求項２に記載のバス調停装置。
【請求項５】
前記判定部は、
前記第１のマスタからのアクセス要求または前記第２のマスタからのアクセス要求のいずれを実行するかを判定した結果に基づき、前記第１のマスタからのアクセス要求または前記第２のマスタからのアクセス要求のいずれかを選択する選択信号を出力することを特徴とする請求項１ないし請求項４のいずれか一項に記載のバス調停装置。
【請求項６】
前記第１のリクエスト保持部は、前記第２のタイミングに実行されたリクエストコマンド及びそのリクエストコマンドの実行先スレーブを示す宛先アドレスを前記第２のリクエスト保持部へ出力し、該第２のリクエスト保持部は、前記リクエストコマンド及び前記宛先アドレスを前記第２のリクエスト情報として保持することを特徴とする請求項１に記載のバス調停装置。
【請求項７】
前記第２のリクエスト保持部は、前記第１のマスタからアクセス要求され前記第２のタイミング以前に実行された第１のアクセス要求の回数および前記第２のマスタからアクセス要求され前記第２のタイミング以前に実行された第２のアクセス要求の回数をカウントし、該カウントしたアクセス要求の回数の情報を保持し、
前記判定部は、
前記第１のリクエスト保持部から出力された前記第１のリクエスト情報、前記第２のリクエスト保持部から出力された前記第２のリクエスト情報、及び前記第２のリクエスト保持部から出力された前記アクセス要求の回数の情報を用いて前記第１のマスタからのアクセス要求または前記第２のマスタからのアクセス要求のいずれを実行するかを判定することを特徴とする請求項１に記載のバス調停装置。
【請求項８】
バスに接続された第１のマスタ及び第２のマスタから前記バスに接続されたスレーブに対し同じタイミングでアクセス要求がなされた場合に前記第１のマスタ及び第２のマスタから前記スレーブへのアクセス要求を調停する前記バスに接続されたバス調停方法において、
前記第１のマスタが前記スレーブに対してアクセス要求する第１のリクエストコマンド及び前記第１のリクエストコマンドの実行先スレーブを示す第１の宛先アドレスの情報を前記第１のマスタから第１のタイミングに取得し、前記第２のマスタが前記スレーブに対してアクセスを要求する第２のリクエストコマンド及び前記第２のリクエストコマンドの実行先スレーブを示す第２の宛先アドレスの情報を前記第２のマスタから前記第１のタイミングに取得する第１の情報取得ステップと、
前記第１のマスタ又は前記第２のマスタから前記スレーブに対してアクセス要求され前記第１のタイミングより前の第２のタイミングに実行されたリクエストコマンド及びそのリクエストコマンドの実行先スレーブを示す宛先アドレスの情報を取得する第２の情報取得ステップと、
前記第１の情報取得ステップ及び前記第２の情報取得ステップにより取得された、前記第１のタイミングにおける、前記第１のリクエストコマンド、前記第１の宛先アドレスの情報、前記第２のリクエストコマンド、及び前記第２の宛先アドレスの情報と、前記第２のタイミングに実行されたリクエストコマンド及びそのリクエストコマンドの実行先スレーブを示す宛先アドレスの情報と、を用いて、前記第１のタイミングにおける前記第１のマスタからのアクセス要求または前記第２のマスタからのアクセス要求のいずれを実行するかを判定する判定ステップと、を備えたことを特徴とするバス調停方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スプリットトランザクション方式によるメモリへのアクセス制御に関するものである。
【背景技術】
【０００２】
スプリットトランザクション方式によりメモリへのアクセスを効率的に行う装置として、従来、メモリへの書込命令、書込データ、及びメモリからの読込命令を送信路に送信する送信処理インタフェースと、メモリから読み出された読込データを受信路から受信する受信処理インタフェースと、書込命令、書込データ、及び読込命令を受信する受信部と、受信した書込命令を一時保管するバッファと、書込命令及び書込データのうちいずれか一つ以上の送信処理をしている間に受信した次の書込命令をバッファに保管し、バッファに書込命令を保管している間に後続の読込命令を受信した場合に読込命令を保管中の書込命令より先に送信処理インタフェースに受け渡す制御を行う制御部と、を備え、送信側、受信側の伝送路の遊休期間を削減する半導体集積回路がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２５０９８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の半導体集積回路においては、複数のマスタからスレーブであるメモリへ同一のアクセス要求（すなわち、書込命令または読込命令）が重複して発生した場合に、特定のマスタからの要求を優先して他のマスタからの要求を遅延させうるため、データ転送効率を劣化させるおそれがあった。
【０００５】
本発明はこのような問題を解決するためになされたもので、複数のマスタからスレーブへ同一のアクセス要求が重複して発生した場合であっても、データ転送効率を維持しつつアクセス制御が可能なバス調停装置を得ることを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係るバス調停装置は、バスに接続された第１のマスタ及び第２のマスタからバスに接続されたスレーブに対し同じタイミングでアクセス要求がなされた場合に第１のマスタ及び第２のマスタからスレーブへのアクセス要求を調停する前記バスに接続されたバス調停装置であって、第１のマスタがスレーブに対してアクセス要求する第１のリクエストコマンド及び第１のリクエストコマンドの実行先スレーブを示す第１の宛先アドレスの情報を第１のマスタから第１のタイミングに受信し、第２のマスタがスレーブに対してアクセスを要求する第２のリクエストコマンド及び第２のリクエストコマンドの実行先スレーブを示す第２の宛先アドレスの情報を第２のマスタから第１のタイミングに受信し、受信した第１のリクエストコマンド、第１の宛先アドレスの情報、第２のリクエストコマンド、及び第２の宛先アドレスの情報を第１のリクエスト情報として保持する第１のリクエスト保持部と、第１のマスタ又は第２のマスタからスレーブに対してアクセス要求され第１のタイミングより前の第２のタイミングに実行されたリクエストコマンド及びそのリクエストコマンドの実行先スレーブを示す宛先アドレスの情報を第２のリクエスト情報として保持する第２のリクエスト保持部と、第１のリクエスト保持部から第１のリクエスト情報を受信し、第２のリクエスト保持部から第２のリクエスト情報を受信し、この第１及び第２のリクエスト情報を用いて、第１のタイミングにおける第１のマスタからのアクセス要求または第２のマスタからのアクセス要求のいずれを実行するかを判定する判定部と、を備えたものである。
【発明の効果】
【０００７】
本発明によれば、バス調停装置は上記構成を備えたことにより、複数のマスタから同一のアクセス要求が重複して発生した場合であっても、データ転送効率を維持しつつアクセス制御できる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係るバス調停装置を備えたバスシステムの構成図である。
【図２】図１におけるバス調停装置の構成詳細を示す図である。
【図３】図２における転送中リクエスト保持部及び前転送リクエスト保持部が保持するデータの構成イメージ図である。
【図４】図１における判定部が行う判定処理を示すフローチャートである。
【図５】図１の判定部が使用するリクエスト状態テーブルのイメージ図である。
【図６】図１における判定部が行う別の判定処理を示すフローチャートである。
【図７】図１における前転送リクエスト保持部が保持するデータの別の構成イメージ図である。
【発明を実施するための形態】
【０００９】
実施の形態１．
本発明を実施するための実施の形態１に係るバス調停装置を図１ないし図６を用いて説明する。図１はバス調停部１０を備えたバスシステム100の構成を示している。バスシステム100はＣＰＵやＤＭＡなどのマスタ２ａ〜２ｃ、バス１、バス１を介してマスタ２ａ〜２ｃと接続されたスレーブ３ａ、３ｂ、を備えている。バス１にはマスタ２ａ〜２ｃからスレーブ３ａ、３ｂへのアクセス要求を調停するバス調停部１０、マスタ２ａ〜２ｃのアクセス要求であるリクエストコマンド及びリクエスト要求先スレーブのアドレスを選択するリクエスト・アドレス選択部４、マスタ２ａ〜２ｃからスレーブ３ａ、３ｂに書き込まれるデータを選択するライトデータ選択部５、スレーブ３ａ、３ｂから読み出すデータを選択するリードデータ選択部６、リクエスト・アドレス選択部４により選択されたアドレスの制御を行うアドレス制御部７ａ、７ｂが設けられている。
【００１０】
ここで、バス１、マスタ２ａ〜２ｃ、スレーブ３ａ、３ｂは同じクロック（図示しない）に同期して動作するものであって、バス調停は毎クロック行われるものとする。また、ここではスレーブ７ａ、７ｂを２ポートメモリとして説明するが、１ポートメモリであっても良く、マスタ２ａ〜２ｃ、アドレス制御部７ａ、７ｂ、スレーブ３ａ、３ｂの個数も本実施の形態の個数に限らない。また、リクエスト・アドレス選択部４はリクエスト選択部とアドレス選択部を別々に設けても良い。
【００１１】
バス調停部１０は、あるマスタ（例えばマスタ２ａ）からあるスレーブ（例えばスレーブ３ａ）に対してデータを送信している最中に、複数のマスタ２ａ〜２ｃからスレーブ３ａ、３ｂに対して同一のリクエストコマンド（ライトリクエストまたはリードリクエスト）が重複して送信された場合に、現在転送中のバーストデータのデータ転送後にどのリクエストコマンドに対応するバーストデータを転送するか、すなわち宛先であるスレーブ３ａまで到達させるかを調停するものである。
【００１２】
バス調停部１０は、図２に示すように、所定の条件（後述）に基いて転送するコマンド及び宛先のスレーブ３ａ（または３ｂ）を判定し、リクエスト・アドレス選択信号２０、ライトデータ選択信号２１、リードデータ選択信号２２を生成する判定部１１と、マスタ２ａ〜２ｃからリクエストコマンド信号101ａ〜101ｃ及びアドレス信号102ａ〜102ｃを受信してこれらの情報を一時保持した後、転送済データ信号３４として送信する転送中リクエスト保持部１２と、転送中リクエスト保持部１２から転送済データ信号３４を受信してこれを一時保持する前転送リクエスト保持部１３と、外部から入力される外部調停モード設定信号３７によりバス調停モードを設定する調停モード設定部１４と、を備えている。
なお、リクエスト・アドレス選択部４をリクエスト選択部とアドレス選択部に分けた場合、リクエスト・アドレス選択信号２０の代わりにリクエスト選択信号とアドレス選択信号の２つが必要となる。
【００１３】
図３に転送中リクエスト保持部１２及び前転送リクエスト保持部１３が保持するデータの構成イメージ図を示す。
転送中リクエスト保持部１２及び前転送リクエスト保持部１３は、リクエスト要求先であるスレーブ２ａ、２ｂそれぞれについて、リクエストコマンド信号101ａ〜101ｃの情報を格納するコマンド領域４０とリクエスト要求元であるマスタ３ａ〜３ｃの番号を格納するマスタ番号領域４１とを有する。リクエストコマンド信号101ａ〜101ｃの情報とは、具体的には、スレーブへのデータ書き込みを要求するライトリクエスト、スレーブからデータ読み出しを要求するリードリクエスト、データの書き込みも読み出しも要求しないアイドルの３つの情報のいずれかのことである。
【００１４】
ここで、バスシステム100の動作について説明する。
マスタ２ａ〜２ｃからリクエストコマンド信号101ａ〜101ｃ、アドレス信号102ａ〜102ｃ、ライトデータ信号103ａ〜103ｃがバス１に入力されると、リクエストコマンド信号101ａ〜101ｃとアドレス信号102ａ〜102ｃはそれぞれ２つに分岐され、一方はバス調停部１０へ、他方はリクエストコマンド・アドレス選択部４へ送信される。また、ライトデータ信号103ａ〜103ｃはライトデータ選択部５へ送信される。
【００１５】
リクエストコマンド・アドレス選択部４は、バス調停部１０内の判定部１１より受信したリクエストコマンド・アドレス選択信号２０に応じて、マスタ２ａ〜２ｃから入力されるリクエストコマンド信号101ａ〜101ｃ及びアドレス信号102ａ〜102ｃの中から１つのリクエストコマンド信号とこれに対応するアドレス信号を選択し、アドレス制御部７ａ、７ｂに選択リクエストコマンド・アドレス信号200を送信する。
【００１６】
同様に、ライトデータ選択部５は、判定部１１より受信したライトデータ選択信号２１に応じて、マスタ２ａ〜２ｃから入力されるライトデータ信号103ａ〜103ｃの中から１つのライトデータ信号を選択し、このライトデータに対応するリクエストコマンドの宛先であるスレーブ３ａ（又は３ｂ）に選択されたバーストデータ201を送信する。
【００１７】
アドレス制御部７ａはリクエストコマンド・アドレス選択部４より選択リクエストコマンド・アドレス信号200を受信すると、選択されたリクエストコマンドがライトデータを要求するものであるかリードデータを要求するものであるかを判断する。
ライトデータを要求するリクエストコマンドである場合、アドレス制御部７ａは選択されたアドレス信号が対応するスレーブ３ａ宛であるか否かを判断し、スレーブ３ａ宛であればバーストデータ用のライトイネーブル信号202ａとバーストアドレス信号204ａを生成してスレーブ３ａへ送信する。このとき、ライトデータ選択部５により選択されたバーストデータ201がスレーブ３ａに到達するタイミングと、生成したライトイネーブル信号202ａ及びバーストアドレス信号204ａがスレーブ３ａに到達するタイミングは一致するようにアドレス制御部７ａにて調整する。
【００１８】
一方、リクエストコマンド・アドレス選択部４により選択されたリクエストコマンドがリードデータを要求するリクエストコマンドである場合、アドレス制御部７ａは選択されたアドレス信号が対応するスレーブ３ａ宛であるか否かを判断し、スレーブ３ａ宛であればバーストデータ用のリードイネーブル信号203ａとバーストアドレス信号204ａを生成してスレーブ７ａへ送信する。
そして、連続する同一要求・同一宛先のバーストデータ用のライトイネーブル信号202ａ、リードイネーブル信号203ａ、バーストアドレス信号204ａの送信が完了すると、バス調停部１０内の判定部１１へ転送終了信号２３ａを送信する。
【００１９】
アドレス制御部７ｂも同様に、リクエストコマンド・アドレス選択部４より選択リクエストコマンド・アドレス信号200を受信すると、選択されたリクエストコマンドがライトデータを要求するものであるかリードデータを要求するものであるかを判断する。
ライトデータを要求するリクエストコマンドである場合、選択されたアドレス信号が自身と対応するスレーブ３ｂ宛であるか否かを判断し、スレーブ３ｂ宛であればバーストデータ用のライトイネーブル信号202ｂとバーストアドレス信号204ｂを生成してスレーブ３ｂへ送信する。
【００２０】
リードデータを要求するリクエストコマンドである場合、選択されたアドレス信号が自身と対応するスレーブ３ｂ宛であるか否かを判断し、スレーブ３ｂ宛であればバーストデータ用のリードイネーブル信号203ｂとバーストアドレス信号204ｂを生成してスレーブ３ｂへ送信する。
そして、連続する同一要求・同一宛先のバーストデータ用のライトイネーブル信号202ｂ、リードイネーブル信号203ｂ、バーストアドレス信号204ｂの送信が完了すると、バス調停部１０内の判定部１１へ転送終了信号２３ｂを送信する。
なお、ここではスレーブとして２ポートメモリを想定しているためライトイネーブル信号とリードイネーブル信号を生成しているが、１ポートメモリの場合は一種類のイネーブル信号をライト用とリード用で併用することになる。
【００２１】
スレーブ３ａはアドレス制御部７ａからライトイネーブル信号202ａ及びバーストアドレス信号204ａを、ライトデータ選択部５からバーストデータ201を受信すると、受信したバーストデータ201を書き込む。また、アドレス制御部７ａからリードイネーブル信号203ａとバーストアドレス信号204ａを受信すると、要求元のマスタ２ａ〜２ｃを宛先としてリードデータをリードデータ選択部６に向けて出力する。
スレーブ３ｂも同様に、アドレス制御部７ｂからライトイネーブル信号202ｂ及びバーストアドレス信号204ｂを、ライトデータ選択部５からバーストデータ201を受信するとバーストデータ201を書き込み、リードイネーブル信号203ｂとバーストアドレス信号204ｂを受信すると、要求元のマスタ２ａ〜２ｃを宛先としてリードデータをリードデータ選択部６に向けて出力する。
【００２２】
リードデータ選択部６は、判定部１１より受信したリードデータ選択信号２２に応じて、スレーブ３ａ、３ｂより入力されるリードデータ信号205ａ、205ｂを選択し、リード要求元であるマスタ２ａ〜２ｃのいずれかにリードデータ信号205として送信する。
マスタ２ａ〜２ｃはこのリードデータ信号205を受信し、所望のスレーブ３ａ、３ｂのデータを読み込む。
【００２３】
以下、バス調停部１０内部の動作について図２を用いて詳細に説明する。
マスタ２ａ〜２ｃからバス調停部１０へ入力されたリクエストコマンド信号101ａ〜101ｃ及びアドレス信号102ａ〜102ｃはそれぞれ２つに分岐され、判定部１１と転送中リクエスト保持部１２に入力される。
【００２４】
判定部１１は、マスタ２ａ〜２ｃからのリクエストコマンド信号101ａ〜101ｃ及びアドレス信号102ａ〜102ｃの他に、転送中リクエスト保持部１２から受信中転送リクエストコマンド・アドレス信号３３、前転送リクエスト保持部１３から転送済リクエストコマンド・アドレス信号３６、調停モード設定部１４から内部調停モード設定信号３８を受信する。そして、これらの信号を用いて次のクロックに選択するリクエストコマンド、アドレス、データを判定し、リクエスト・アドレス選択信号２０、ライトデータ選択信号２１、リードデータ選択信号２２をそれぞれ生成する。生成された信号は、次のクロック期間にそれぞれ所定のブロックへ送信される。すなわち、リクエスト・アドレス選択信号２０はリクエスト・アドレス選択部４へ、ライトデータ選択信号２１はライトデータ選択部５へ、リードデータ選択信号２２はリードデータ選択部６へ送信される。
【００２５】
判定部１１はまた、転送中のリクエストコマンド情報及びアドレス情報を示す転送中リクエストコマンド・アドレス信号３０と、どのマスタからのバーストデータを転送中であるかを示すデータ転送中マスタ番号信号３１を、バーストデータ転送期間と同じクロック期間に転送中リクエスト保持部１２に向けて送信する。
さらに、判定部１１は、アドレス制御部７ａ、７ｂから転送終了信号２３ａ、２３ｂを受信すると転送中のバーストデータはバースト末尾であると判断し、転送中リクエスト保持部１２へ転送終了通知信号３２を、前転送リクエスト保持部１３へクリア信号３５を、バースト末尾のデータを転送するクロック期間に送信する。
なお、１クロックとは、判定部１１が１回の判定を行う判定期間のことを示している。
【００２６】
転送中リクエスト保持部１２は、マスタ２ａ〜２ｃからのリクエストコマンド信号101ａ〜101ｃ及びアドレス信号102ａ〜102ｃに基いて、マスタ２ａ〜２ｃそれぞれについて、リクエストコマンドの情報と宛先スレーブのアドレス情報とを記憶し一時保持する。
また、転送中リクエスト保持部１２は、マスタ２ａ〜２ｃからの信号に加えて、判定部１１から転送中リクエストコマンド・アドレス信号３０、データ転送中マスタ番号信号３１、及び転送終了通知信号３２を受信する。
【００２７】
転送中リクエスト保持部１２がマスタ２ａ〜２ｃから信号を受信し判定部１１からは信号を受信しない場合、転送中リクエスト保持部１２は、マスタ２ａ〜２ｃから受信したリクエストコマンド信号101ａ〜101ｃ及びアドレス信号102ａ〜102ｃを、受信中転送コマンド・アドレス信号３３として判定部１１へ、同じクロック期間にそのまま送信する。
【００２８】
転送中リクエスト保持部１２がマスタ２ａ〜２ｃから信号を受信し判定部１１から転送終了通知信号３２を受信した場合、転送中リクエスト保持部１２は、受信したリクエストコマンド信号101ａ〜101ｃ及びアドレス信号102ａ〜102ｃを、受信中転送コマンド・アドレス信号３３として同じクロック期間にそのまま判定部１１へ送信すると共に、データ転送中マスタ番号信号３１から得たマスタ番号の情報と転送中リクエストコマンド・アドレス信号３０から得たリクエストコマンドの情報と自装置内に記憶した宛先スレーブのアドレスの情報とに基いて転送済データ信号３４を生成し、次のクロック期間に前転送リクエスト保持部１３へ送信する。
なお、転送済データ信号３４の生成に用いる宛先スレーブのアドレスの情報は、転送中リクエスト保持部１２が記憶している情報を用いる代わりに、判定部１１から受信する転送中リクエストコマンド・アドレス信号３０の情報を用いても良い。
【００２９】
また、転送中リクエスト保持部１２がマスタ２ａ〜２ｃから信号を受信し、判定部１１から転送終了通知信号３２を受信せずに転送中リクエストコマンド・アドレス信号３０とデータ転送中マスタ番号信号３１を受信した場合、転送中リクエスト保持部１２は、受信した転送中リクエストコマンド・アドレス信号３０信号とデータ転送中マスタ番号信号３１を次のクロック期間に判定部１１へ送信する。すなわち、判定部１１から入力された信号を１クロック遅れで判定部１１へ返すことになる。
【００３０】
前転送リクエスト保持部１３は、転送中リクエスト保持部１２から転送済データ信号３４を受信すると、マスタ番号、リクエストコマンド、及び宛先スレーブのアドレスの情報をそれぞれ対応付けて自装置内に記憶し、判定部１１からクリア信号３５を受信するまでこれを保持する。
また、前転送リクエスト保持部１３は、自装置内に記憶している情報を転送済リクエストコマンド・アドレス信号３６として判定部１１に送信する。この送信処理は、前転送リクエスト保持部１３が転送済データ信号３４を一旦受信すると、クリア信号３５を受信するまで毎クロック繰り返される。
【００３１】
前転送リクエスト保持部１３は、判定部１１からクリア信号３５を受信すると保持している転送済データ信号３４の情報をクリアする。また、クリア信号３５を受信しない場合であっても、転送中リクエスト保持部１２から新たな転送済データ信号３４を受信すると、保持している情報を上書きして更新する。
【００３２】
調停モード設定部１４は、例えば判定部１１がマスタ平均化モードとコマンド平均化モードの２つを備える場合にモード設定を行う。マスタ平均化モードはリクエスト要求元として選択されるマスタが平均的になるようにマスタの選択を行うモードであり、コマンド平均化モードではライトリクエストとリードリクエストのそれぞれについてリクエストコマンドが平均的になるようにマスタの選択を行うモードである。モードの切替は外部から入力される外部調停モード設定信号３７により行われる。
【００３３】
ここで、判定部１１が１クロック期間中に行う判定処理を図４のフローチャート及び図５のリクエスト状態テーブルを用いて説明する。ここで、リクエスト状態テーブルとは、判定部１１が受信中転送リクエストコマンド・アドレス信号３３および転送済リクエストコマンド・アドレス信号３６を用いて判定部１１内に生成するリクエスト履歴を示す状態テーブルである。なお、調停モードはマスタ平均化モードに設定されているものとする。
図４では、スレーブの番号をｉ（ｉ＝１〜ｎ、ｎは整数）とする。判定部１１はＳ１においてスレーブ番号を「ｉ＝０」に初期化し、このスレーブがリクエストコマンドフル状態、すなわちライトリクエストとリードリクエストの双方を受付けている状態か否かを図５に示すようなリクエスト状態テーブルを参照して判断する（Ｓ２）。図５の例では、スレーブ＃０はマスタ＃０からライトリクエストを、マスタ＃１及びマスタ＃２からリードリクエストを受付けており、リクエストコマンドフル状態である。
【００３４】
Ｓ２においてリクエストコマンドフル状態であると判断した場合、判定部１１はリクエスト状態テーブルを参照し、それぞれのマスタ＃０〜＃２についてライトリクエストの数とリードリクエストの数それぞれをリクエストコマンドのべ数として集計する（Ｓ３）。
図５の場合、マスタ＃０はライトリクエストのべ数「２」、リードリクエストのべ数「１」、マスタ＃１はライトリクエストのべ数「１」、リードリクエストのべ数「２」、マスタ＃２はライトリクエストのべ数「１」、リードリクエストのべ数「１」である。
【００３５】
次に、ライトリクエストとリードリクエストそれぞれについて、リクエスト履歴（受信中転送リクエストコマンド・アドレス信号３３によるリクエスト情報および転送済リクエストコマンド・アドレス信号３６によるリクエスト情報）のあるマスタのべ数をマスタ毎に集計する（Ｓ４）。
図５の場合、ライトリクエストは、マスタ＃０ののべ数「２」、マスタ＃１ののべ数「１」、マスタ＃２ののべ数「１」、リードリクエストは、マスタ＃０ののべ数「１」、マスタ＃１ののべ数「２」、マスタ＃２ののべ数「１」である。
【００３６】
各マスタのべ数の算出が終わると、Ｓ３にて集計した全マスタ＃０〜＃２のライトリクエストとリードリクエストのそれぞれについて合計リクエストコマンドのべ数（合計ライトリクエストのべ数「４」、合計リードリクエストのべ数「４」）を算出し（Ｓ５）、Ｓ４にて集計した全マスタの合計マスタのべ数（合計マスタのべ数「８」）を算出する（Ｓ６）。
【００３７】
Ｓ６が終わると、Ｓ５で算出した合計ライトリクエストのべ数とＳ６で算出した合計マスタのべ数が等しいか否かを判断する（Ｓ７）。上記例では、合計ライトリクエストのべ数が「４」、合計マスタのべ数「８」で等しくないのでＳ８へ進み、Ｓ５で算出したリードリクエストの合計リクエストコマンドのべ数とＳ６で算出した合計マスタのべ数が等しいか否かを判断する（Ｓ８）。ここでも、合計リードリクエストのべ数が「４」、合計マスタのべ数「８」で等しくないので、Ｓ９へ進む。
【００３８】
Ｓ９では、Ｓ６で算出した合計マスタのべ数がＳ６で算出した合計ライトリクエストのべ数と合計リードリクエストのよりも小さいか否かの判断を、合計ライトリクエストのべ数と合計リードリクエストのそれぞれについて行う（Ｓ９）。
上記例では、合計マスタのべ数「８」は合計ライトリクエストのべ数「４」よりも多いので、Ｓ９で「Ｎｏ」と判断してＳ１０へ進む。また、合計マスタのべ数「８」は合計リードリクエストのべ数「４」よりも多いので、同様に、Ｓ９で「Ｎｏ」と判断してＳ１０へ進む。
【００３９】
Ｓ７でライトリクエストの合計リクエストコマンドのべ数（合計ライトコマンドのべ数）と合計マスタのべ数が等しいと判断した場合、あるいはＳ８でリードリクエストの合計リクエストコマンドのべ数（合計リードリクエストのべ数）と合計マスタのべ数が等しいと判断した場合、Ｓ９で「Ｎｏ」と判断した場合と同様にＳ１０へ進む。
Ｓ１０では、ライトリクエストとリードリクエストそれぞれについて、次に選択するマスタとしてＳ４で算出した合計マスタのべ数が最も少ないマスタを優先的に選択する（Ｓ１０）。すなわち、図５の例では転送中リクエスト保持部１２からのライトリクエストはマスタ＃０のみなのでマスタ＃０が選択されるが、リードリクエストはマスタ＃１とマスタ＃２からあり、Ｓ４においてマスタ＃１ののべ数「２」、マスタ＃２ののべ数「１」であるため、マスタのべ数の小さいマスタ＃２が選択される。
【００４０】
Ｓ９において合計ライトリクエストのべ数が合計マスタのべ数よりも少ない場合は、次にライトするマスタとしてライトリクエストのべ数が最も少ないマスタを優先的に選択する（Ｓ１１）。同様に、Ｓ９において合計リードリクエストのべ数が合計マスタのべ数よりも少ない場合は、次にリードするマスタとしてリードリクエストのべ数が最も少ないマスタを優先して選択する（Ｓ１１）。
なお、マスタのべ数が最小のマスタが複数ある場合、ラウンドロビンや重み付けにより１つのマスタを選択する。
【００４１】
Ｓ１０及びＳ１１の後、判定部１１で選択した結果に基づいて、選択したマスタ２ａ〜２ｃに対応するリクエスト・アドレス選択信号２０、ライトデータ選択信号２１、リードデータ選択信号２２をそれぞれ生成し、上述の対応する各機能ブロックに出力する。この処理は、マスタ２ａ〜２ｃそれぞれからのアクセス要求からいずれのアクセス要求を実行させるかを判定する行為に相当する。
また、Ｓ１０及びＳ１１の後、もしくはＳ２において転送中リクエストコマンド保持部１２からライトリクエスト及びリードリクエストの少なくとも一方を受付けていないと判断した場合（「Ｎｏ」と判断した場合）、スレーブ番号ｉがｎ（最終スレーブ番号）であるか否かを判断する（Ｓ１２）。なお、Ｓ２で「Ｎｏ」と判断した場合であって、受付中ではない（転送に使用されていない）リクエストコマンドを受付けた場合は、リクエストコマンドに従って動作する。
【００４２】
Ｓ１２でｎ個全てのスレーブについて判断が完了している場合（ｉ＝ｎの場合）はフローを終了し、全スレーブについて判断が完了していない場合はＳ１３にてｉを１つインクリメントしＳ２へ戻る。
なお、図４ではスレーブ番号の初期値を「ｉ＝０」としたが、ラウンドロビン方式に初期値を随時変更するようにしても良い。
【００４３】
また、ここではマスタ平均化モードが選択されている場合について説明したが、コマンド平均化モードが選択されている場合、図６に示すように、図４のマスタ平均化モードと一部の処理順序が異なる。具体的には、Ｓ１からＳ９はマスタ平均化モードと同じ処理を行い、Ｓ８で「Ｙｅｓ」の場合は上記Ｓ１１、すなわちリクエストコマンドのべ数が最小のマスタを選択し、Ｓ８で「Ｎｏ」の場合に上記Ｓ９へ進む。Ｓ９で「Ｎｏ」の場合も上記Ｓ１１の処理へ進み、Ｓ１１で「Ｙｅｓ」の場合は上記Ｓ１０でマスタのべ数が最も少ないマスタを選択する。
【００４４】
ところで、全てのリクエストコマンドがライトリクエスト（またはリードリクエスト）の場合を除いて合計ライトリクエストコマンドのべ数（または合計リードリクエストコマンドのべ数）が常に合計マスタ数よりも少なくなるため、合計ライトリクエストコマンドのべ数（または合計リードリクエストコマンドのべ数）に重み付けをして比較するようにしても良い。
【００４５】
また、図７に示すように、前転送リクエスト保持部１３において、コマンド領域４０、マスタ番号領域４１に加えてアクセス回数領域４２を設け、どのスレーブへどのリクエストコマンドで何回アクセスしたかをマスタ毎にカウントし、その履歴情報を転送済リクエストコマンド・アドレス信号３６に含めて判定部に送るようにしても良い。
なお、アクセス回数は電源投入時や所定時間経過毎にリセットするものとする。例えば所定時間を1000クロック分（1000回の判定期間分）とした場合、この間におけるアクセス回数の履歴を判定部１１に送信することにより、バス調停をする際にリクエストコマンドのべ数やマスタのべ数として、２クロックよりも長期間の平均値を用いることができる。
【００４６】
なお、ここではライトイネーブル信号202ａ〜202ｃとリードイネーブル信号203ａ〜202ｃを有する２ポートメモリの場合について説明したが、ライトリクエストとリードリクエストで共通のイネーブル信号を用いる１ポートメモリの場合、転送中リクエスト保持部１２から判定部１１へ送られる受信中転送コマンド・アドレス信号３３を参照し、次に選択するリクエストコマンドを現在選択中のものとは異なるリクエストコマンドとなるように設定しても良い。
【００４７】
本実施の形態によれば、マスタからスレーブに対するリクエストのべ数とリクエストをしたマスタ数とを集計し、これらの合計数を比較してリクエストコマンドが平均化されるようにバス調停を行うことにより、複数のマスタからアクセス要求が重複して発生した場合であっても、データ転送効率を維持しつつアクセス制御できる。
【００４８】
また、マスタからスレーブに対するリクエストのべ数とリクエストをしたマスタ数とを集計し、これらの合計数を比較してそれぞれのマスタからのリクエスト受付回数が平均化されるようにバス調停を行うことにより、複数のマスタからアクセス要求が重複して発生した場合であっても、データ転送効率を維持しつつアクセス制御できる。
【００４９】
また、マスタ２ａ〜２ｃについてスレーブ３ａ〜３ｃにアクセスした回数をカウントし、このアクセス回数を用いてバス調停を行うことにより、複数のマスタ間でのアクセス回数を平均化してバスシステム全体としてのデータ転送効率を向上できる。
【００５０】
以上、この発明の実施の形態について説明した。上記実施の形態では、請求項に記載の「第１のリクエストコマンド」及び「第２のリクエストコマンド」として「リクエストコマンド信号101a〜101ｃ」、「第１の宛先アドレスの情報」及び「第２の宛先アドレスの情報」として「アドレス信号102ａ〜102ｃ」、「第１のリクエスト保持部」として「転送中リクエスト保持部１２」、「第２のリクエスト情報」として「転送済データ信号３４」、「第２のリクエスト保持部」として「前転送リクエスト保持部１３」を用いて説明したが、これらは上記実施の形態に限定されるものではなく、この発明の趣旨に包含される限りどのような変形が行われても良い。
【符号の説明】
【００５１】
１  バス
２ａ〜２ｃ  マスタ
３ａ〜３ｃ  スレーブ
４  コマンド・アドレス選択部
５  ライトデータ選択部
６  リードデータ選択部
７ａ、７ｂ  アドレス制御部
１０  バス調停部
１１  判定部
１２  転送中リクエスト保持部
１３  前転送リクエスト保持部
１４  調停モード設定部
２０  リクエスト・アドレス選択信号
２１  ライトデータ選択信号
２２  リードデータ選択信号
２３ａ、２３ｂ  転送終了信号
３０  転送中リクエストコマンド・アドレス信号
３１  データ転送中マスタ番号信号
３２  転送終了通知信号
３３  受信中転送リクエストコマンド・アドレス信号
３４  転送済データ信号
３５  クリア信号
３６  転送済リクエストコマンド・アドレス信号
３７  外部調停モード設定信号
３８  内部調停モード設定信号
４０  コマンド領域
４１  マスタ番号領域
４２  アクセス回数領域
100  バスシステム
101ａ〜101ｃ  リクエストコマンド信号
102ａ〜102ｃ  アドレス信号
103ａ〜103ｃ  ライトデータ信号
200 選択リクエストコマンド・アドレス信号
201  バーストデータ
202ａ〜202ｃ  ライトイネーブル信号
203ａ〜203ｃ  リードイネーブル信号
204ａ〜204ｃ  バーストアドレス信号
205、205ａ、205ｂ  リードデータ信号
【図１】
2012173847.tif 000003
【図２】
2012173847.tif 000004
【図３】
2012173847.tif 000005
【図４】
2012173847.tif 000006
【図５】
2012173847.tif 000007
【図６】
2012173847.tif 000008
【図７】
2012173847.tif 000009