説明

バス調停装置およびバス調停方法

【課題】複数のマスタからスレーブへ同一のアクセス要求が重複して発生した場合であっても、データ転送効率を維持しつつアクセス制御が可能なバス調停装置を得る。
【解決手段】バス調停装置10は、バス1に接続されたマスタ2a〜2cからスレーブ3a、3bへのアクセスを調停するものであって、マスタから送信中の第1のリクエストコマンド及び第1の宛先アドレスの情報を第1のリクエスト情報として保持する転送中リクエスト保持部12と、マスタからスレーブへ送信完了した第1のリクエスト情報を第2のリクエスト情報として保持する前転送リクエスト保持部13と、転送中リクエスト保持部12及び前転送リクエスト保持部13から第1及び第2のリクエスト情報を受信し、これらの情報を用いてマスタ2a〜2cを選択し、アクセス要求先のスレーブ3a、3bへアクセス可能なマスタと判定する判定部11と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、スプリットトランザクション方式によるメモリへのアクセス制御に関するものである。
【背景技術】
【0002】
スプリットトランザクション方式によりメモリへのアクセスを効率的に行う装置として、従来、メモリへの書込命令、書込データ、及びメモリからの読込命令を送信路に送信する送信処理インタフェースと、メモリから読み出された読込データを受信路から受信する受信処理インタフェースと、書込命令、書込データ、及び読込命令を受信する受信部と、受信した書込命令を一時保管するバッファと、書込命令及び書込データのうちいずれか一つ以上の送信処理をしている間に受信した次の書込命令をバッファに保管し、バッファに書込命令を保管している間に後続の読込命令を受信した場合に読込命令を保管中の書込命令より先に送信処理インタフェースに受け渡す制御を行う制御部と、を備え、送信側、受信側の伝送路の遊休期間を削減する半導体集積回路がある(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−250985号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1に記載の半導体集積回路においては、複数のマスタからスレーブであるメモリへ同一のアクセス要求(すなわち、書込命令または読込命令)が重複して発生した場合に、特定のマスタからの要求を優先して他のマスタからの要求を遅延させうるため、データ転送効率を劣化させるおそれがあった。
【0005】
本発明はこのような問題を解決するためになされたもので、複数のマスタからスレーブへ同一のアクセス要求が重複して発生した場合であっても、データ転送効率を維持しつつアクセス制御が可能なバス調停装置を得ることを目的とする。
【課題を解決するための手段】
【0006】
本発明に係るバス調停装置は、バスに接続された第1のマスタ及び第2のマスタからバスに接続されたスレーブに対し同じタイミングでアクセス要求がなされた場合に第1のマスタ及び第2のマスタからスレーブへのアクセス要求を調停する前記バスに接続されたバス調停装置であって、第1のマスタがスレーブに対してアクセス要求する第1のリクエストコマンド及び第1のリクエストコマンドの実行先スレーブを示す第1の宛先アドレスの情報を第1のマスタから第1のタイミングに受信し、第2のマスタがスレーブに対してアクセスを要求する第2のリクエストコマンド及び第2のリクエストコマンドの実行先スレーブを示す第2の宛先アドレスの情報を第2のマスタから第1のタイミングに受信し、受信した第1のリクエストコマンド、第1の宛先アドレスの情報、第2のリクエストコマンド、及び第2の宛先アドレスの情報を第1のリクエスト情報として保持する第1のリクエスト保持部と、第1のマスタ又は第2のマスタからスレーブに対してアクセス要求され第1のタイミングより前の第2のタイミングに実行されたリクエストコマンド及びそのリクエストコマンドの実行先スレーブを示す宛先アドレスの情報を第2のリクエスト情報として保持する第2のリクエスト保持部と、第1のリクエスト保持部から第1のリクエスト情報を受信し、第2のリクエスト保持部から第2のリクエスト情報を受信し、この第1及び第2のリクエスト情報を用いて、第1のタイミングにおける第1のマスタからのアクセス要求または第2のマスタからのアクセス要求のいずれを実行するかを判定する判定部と、を備えたものである。
【発明の効果】
【0007】
本発明によれば、バス調停装置は上記構成を備えたことにより、複数のマスタから同一のアクセス要求が重複して発生した場合であっても、データ転送効率を維持しつつアクセス制御できる。
【図面の簡単な説明】
【0008】
【図1】実施の形態1に係るバス調停装置を備えたバスシステムの構成図である。
【図2】図1におけるバス調停装置の構成詳細を示す図である。
【図3】図2における転送中リクエスト保持部及び前転送リクエスト保持部が保持するデータの構成イメージ図である。
【図4】図1における判定部が行う判定処理を示すフローチャートである。
【図5】図1の判定部が使用するリクエスト状態テーブルのイメージ図である。
【図6】図1における判定部が行う別の判定処理を示すフローチャートである。
【図7】図1における前転送リクエスト保持部が保持するデータの別の構成イメージ図である。
【発明を実施するための形態】
【0009】
実施の形態1.
本発明を実施するための実施の形態1に係るバス調停装置を図1ないし図6を用いて説明する。図1はバス調停部10を備えたバスシステム100の構成を示している。バスシステム100はCPUやDMAなどのマスタ2a〜2c、バス1、バス1を介してマスタ2a〜2cと接続されたスレーブ3a、3b、を備えている。バス1にはマスタ2a〜2cからスレーブ3a、3bへのアクセス要求を調停するバス調停部10、マスタ2a〜2cのアクセス要求であるリクエストコマンド及びリクエスト要求先スレーブのアドレスを選択するリクエスト・アドレス選択部4、マスタ2a〜2cからスレーブ3a、3bに書き込まれるデータを選択するライトデータ選択部5、スレーブ3a、3bから読み出すデータを選択するリードデータ選択部6、リクエスト・アドレス選択部4により選択されたアドレスの制御を行うアドレス制御部7a、7bが設けられている。
【0010】
ここで、バス1、マスタ2a〜2c、スレーブ3a、3bは同じクロック(図示しない)に同期して動作するものであって、バス調停は毎クロック行われるものとする。また、ここではスレーブ7a、7bを2ポートメモリとして説明するが、1ポートメモリであっても良く、マスタ2a〜2c、アドレス制御部7a、7b、スレーブ3a、3bの個数も本実施の形態の個数に限らない。また、リクエスト・アドレス選択部4はリクエスト選択部とアドレス選択部を別々に設けても良い。
【0011】
バス調停部10は、あるマスタ(例えばマスタ2a)からあるスレーブ(例えばスレーブ3a)に対してデータを送信している最中に、複数のマスタ2a〜2cからスレーブ3a、3bに対して同一のリクエストコマンド(ライトリクエストまたはリードリクエスト)が重複して送信された場合に、現在転送中のバーストデータのデータ転送後にどのリクエストコマンドに対応するバーストデータを転送するか、すなわち宛先であるスレーブ3aまで到達させるかを調停するものである。
【0012】
バス調停部10は、図2に示すように、所定の条件(後述)に基いて転送するコマンド及び宛先のスレーブ3a(または3b)を判定し、リクエスト・アドレス選択信号20、ライトデータ選択信号21、リードデータ選択信号22を生成する判定部11と、マスタ2a〜2cからリクエストコマンド信号101a〜101c及びアドレス信号102a〜102cを受信してこれらの情報を一時保持した後、転送済データ信号34として送信する転送中リクエスト保持部12と、転送中リクエスト保持部12から転送済データ信号34を受信してこれを一時保持する前転送リクエスト保持部13と、外部から入力される外部調停モード設定信号37によりバス調停モードを設定する調停モード設定部14と、を備えている。
なお、リクエスト・アドレス選択部4をリクエスト選択部とアドレス選択部に分けた場合、リクエスト・アドレス選択信号20の代わりにリクエスト選択信号とアドレス選択信号の2つが必要となる。
【0013】
図3に転送中リクエスト保持部12及び前転送リクエスト保持部13が保持するデータの構成イメージ図を示す。
転送中リクエスト保持部12及び前転送リクエスト保持部13は、リクエスト要求先であるスレーブ2a、2bそれぞれについて、リクエストコマンド信号101a〜101cの情報を格納するコマンド領域40とリクエスト要求元であるマスタ3a〜3cの番号を格納するマスタ番号領域41とを有する。リクエストコマンド信号101a〜101cの情報とは、具体的には、スレーブへのデータ書き込みを要求するライトリクエスト、スレーブからデータ読み出しを要求するリードリクエスト、データの書き込みも読み出しも要求しないアイドルの3つの情報のいずれかのことである。
【0014】
ここで、バスシステム100の動作について説明する。
マスタ2a〜2cからリクエストコマンド信号101a〜101c、アドレス信号102a〜102c、ライトデータ信号103a〜103cがバス1に入力されると、リクエストコマンド信号101a〜101cとアドレス信号102a〜102cはそれぞれ2つに分岐され、一方はバス調停部10へ、他方はリクエストコマンド・アドレス選択部4へ送信される。また、ライトデータ信号103a〜103cはライトデータ選択部5へ送信される。
【0015】
リクエストコマンド・アドレス選択部4は、バス調停部10内の判定部11より受信したリクエストコマンド・アドレス選択信号20に応じて、マスタ2a〜2cから入力されるリクエストコマンド信号101a〜101c及びアドレス信号102a〜102cの中から1つのリクエストコマンド信号とこれに対応するアドレス信号を選択し、アドレス制御部7a、7bに選択リクエストコマンド・アドレス信号200を送信する。
【0016】
同様に、ライトデータ選択部5は、判定部11より受信したライトデータ選択信号21に応じて、マスタ2a〜2cから入力されるライトデータ信号103a〜103cの中から1つのライトデータ信号を選択し、このライトデータに対応するリクエストコマンドの宛先であるスレーブ3a(又は3b)に選択されたバーストデータ201を送信する。
【0017】
アドレス制御部7aはリクエストコマンド・アドレス選択部4より選択リクエストコマンド・アドレス信号200を受信すると、選択されたリクエストコマンドがライトデータを要求するものであるかリードデータを要求するものであるかを判断する。
ライトデータを要求するリクエストコマンドである場合、アドレス制御部7aは選択されたアドレス信号が対応するスレーブ3a宛であるか否かを判断し、スレーブ3a宛であればバーストデータ用のライトイネーブル信号202aとバーストアドレス信号204aを生成してスレーブ3aへ送信する。このとき、ライトデータ選択部5により選択されたバーストデータ201がスレーブ3aに到達するタイミングと、生成したライトイネーブル信号202a及びバーストアドレス信号204aがスレーブ3aに到達するタイミングは一致するようにアドレス制御部7aにて調整する。
【0018】
一方、リクエストコマンド・アドレス選択部4により選択されたリクエストコマンドがリードデータを要求するリクエストコマンドである場合、アドレス制御部7aは選択されたアドレス信号が対応するスレーブ3a宛であるか否かを判断し、スレーブ3a宛であればバーストデータ用のリードイネーブル信号203aとバーストアドレス信号204aを生成してスレーブ7aへ送信する。
そして、連続する同一要求・同一宛先のバーストデータ用のライトイネーブル信号202a、リードイネーブル信号203a、バーストアドレス信号204aの送信が完了すると、バス調停部10内の判定部11へ転送終了信号23aを送信する。
【0019】
アドレス制御部7bも同様に、リクエストコマンド・アドレス選択部4より選択リクエストコマンド・アドレス信号200を受信すると、選択されたリクエストコマンドがライトデータを要求するものであるかリードデータを要求するものであるかを判断する。
ライトデータを要求するリクエストコマンドである場合、選択されたアドレス信号が自身と対応するスレーブ3b宛であるか否かを判断し、スレーブ3b宛であればバーストデータ用のライトイネーブル信号202bとバーストアドレス信号204bを生成してスレーブ3bへ送信する。
【0020】
リードデータを要求するリクエストコマンドである場合、選択されたアドレス信号が自身と対応するスレーブ3b宛であるか否かを判断し、スレーブ3b宛であればバーストデータ用のリードイネーブル信号203bとバーストアドレス信号204bを生成してスレーブ3bへ送信する。
そして、連続する同一要求・同一宛先のバーストデータ用のライトイネーブル信号202b、リードイネーブル信号203b、バーストアドレス信号204bの送信が完了すると、バス調停部10内の判定部11へ転送終了信号23bを送信する。
なお、ここではスレーブとして2ポートメモリを想定しているためライトイネーブル信号とリードイネーブル信号を生成しているが、1ポートメモリの場合は一種類のイネーブル信号をライト用とリード用で併用することになる。
【0021】
スレーブ3aはアドレス制御部7aからライトイネーブル信号202a及びバーストアドレス信号204aを、ライトデータ選択部5からバーストデータ201を受信すると、受信したバーストデータ201を書き込む。また、アドレス制御部7aからリードイネーブル信号203aとバーストアドレス信号204aを受信すると、要求元のマスタ2a〜2cを宛先としてリードデータをリードデータ選択部6に向けて出力する。
スレーブ3bも同様に、アドレス制御部7bからライトイネーブル信号202b及びバーストアドレス信号204bを、ライトデータ選択部5からバーストデータ201を受信するとバーストデータ201を書き込み、リードイネーブル信号203bとバーストアドレス信号204bを受信すると、要求元のマスタ2a〜2cを宛先としてリードデータをリードデータ選択部6に向けて出力する。
【0022】
リードデータ選択部6は、判定部11より受信したリードデータ選択信号22に応じて、スレーブ3a、3bより入力されるリードデータ信号205a、205bを選択し、リード要求元であるマスタ2a〜2cのいずれかにリードデータ信号205として送信する。
マスタ2a〜2cはこのリードデータ信号205を受信し、所望のスレーブ3a、3bのデータを読み込む。
【0023】
以下、バス調停部10内部の動作について図2を用いて詳細に説明する。
マスタ2a〜2cからバス調停部10へ入力されたリクエストコマンド信号101a〜101c及びアドレス信号102a〜102cはそれぞれ2つに分岐され、判定部11と転送中リクエスト保持部12に入力される。
【0024】
判定部11は、マスタ2a〜2cからのリクエストコマンド信号101a〜101c及びアドレス信号102a〜102cの他に、転送中リクエスト保持部12から受信中転送リクエストコマンド・アドレス信号33、前転送リクエスト保持部13から転送済リクエストコマンド・アドレス信号36、調停モード設定部14から内部調停モード設定信号38を受信する。そして、これらの信号を用いて次のクロックに選択するリクエストコマンド、アドレス、データを判定し、リクエスト・アドレス選択信号20、ライトデータ選択信号21、リードデータ選択信号22をそれぞれ生成する。生成された信号は、次のクロック期間にそれぞれ所定のブロックへ送信される。すなわち、リクエスト・アドレス選択信号20はリクエスト・アドレス選択部4へ、ライトデータ選択信号21はライトデータ選択部5へ、リードデータ選択信号22はリードデータ選択部6へ送信される。
【0025】
判定部11はまた、転送中のリクエストコマンド情報及びアドレス情報を示す転送中リクエストコマンド・アドレス信号30と、どのマスタからのバーストデータを転送中であるかを示すデータ転送中マスタ番号信号31を、バーストデータ転送期間と同じクロック期間に転送中リクエスト保持部12に向けて送信する。
さらに、判定部11は、アドレス制御部7a、7bから転送終了信号23a、23bを受信すると転送中のバーストデータはバースト末尾であると判断し、転送中リクエスト保持部12へ転送終了通知信号32を、前転送リクエスト保持部13へクリア信号35を、バースト末尾のデータを転送するクロック期間に送信する。
なお、1クロックとは、判定部11が1回の判定を行う判定期間のことを示している。
【0026】
転送中リクエスト保持部12は、マスタ2a〜2cからのリクエストコマンド信号101a〜101c及びアドレス信号102a〜102cに基いて、マスタ2a〜2cそれぞれについて、リクエストコマンドの情報と宛先スレーブのアドレス情報とを記憶し一時保持する。
また、転送中リクエスト保持部12は、マスタ2a〜2cからの信号に加えて、判定部11から転送中リクエストコマンド・アドレス信号30、データ転送中マスタ番号信号31、及び転送終了通知信号32を受信する。
【0027】
転送中リクエスト保持部12がマスタ2a〜2cから信号を受信し判定部11からは信号を受信しない場合、転送中リクエスト保持部12は、マスタ2a〜2cから受信したリクエストコマンド信号101a〜101c及びアドレス信号102a〜102cを、受信中転送コマンド・アドレス信号33として判定部11へ、同じクロック期間にそのまま送信する。
【0028】
転送中リクエスト保持部12がマスタ2a〜2cから信号を受信し判定部11から転送終了通知信号32を受信した場合、転送中リクエスト保持部12は、受信したリクエストコマンド信号101a〜101c及びアドレス信号102a〜102cを、受信中転送コマンド・アドレス信号33として同じクロック期間にそのまま判定部11へ送信すると共に、データ転送中マスタ番号信号31から得たマスタ番号の情報と転送中リクエストコマンド・アドレス信号30から得たリクエストコマンドの情報と自装置内に記憶した宛先スレーブのアドレスの情報とに基いて転送済データ信号34を生成し、次のクロック期間に前転送リクエスト保持部13へ送信する。
なお、転送済データ信号34の生成に用いる宛先スレーブのアドレスの情報は、転送中リクエスト保持部12が記憶している情報を用いる代わりに、判定部11から受信する転送中リクエストコマンド・アドレス信号30の情報を用いても良い。
【0029】
また、転送中リクエスト保持部12がマスタ2a〜2cから信号を受信し、判定部11から転送終了通知信号32を受信せずに転送中リクエストコマンド・アドレス信号30とデータ転送中マスタ番号信号31を受信した場合、転送中リクエスト保持部12は、受信した転送中リクエストコマンド・アドレス信号30信号とデータ転送中マスタ番号信号31を次のクロック期間に判定部11へ送信する。すなわち、判定部11から入力された信号を1クロック遅れで判定部11へ返すことになる。
【0030】
前転送リクエスト保持部13は、転送中リクエスト保持部12から転送済データ信号34を受信すると、マスタ番号、リクエストコマンド、及び宛先スレーブのアドレスの情報をそれぞれ対応付けて自装置内に記憶し、判定部11からクリア信号35を受信するまでこれを保持する。
また、前転送リクエスト保持部13は、自装置内に記憶している情報を転送済リクエストコマンド・アドレス信号36として判定部11に送信する。この送信処理は、前転送リクエスト保持部13が転送済データ信号34を一旦受信すると、クリア信号35を受信するまで毎クロック繰り返される。
【0031】
前転送リクエスト保持部13は、判定部11からクリア信号35を受信すると保持している転送済データ信号34の情報をクリアする。また、クリア信号35を受信しない場合であっても、転送中リクエスト保持部12から新たな転送済データ信号34を受信すると、保持している情報を上書きして更新する。
【0032】
調停モード設定部14は、例えば判定部11がマスタ平均化モードとコマンド平均化モードの2つを備える場合にモード設定を行う。マスタ平均化モードはリクエスト要求元として選択されるマスタが平均的になるようにマスタの選択を行うモードであり、コマンド平均化モードではライトリクエストとリードリクエストのそれぞれについてリクエストコマンドが平均的になるようにマスタの選択を行うモードである。モードの切替は外部から入力される外部調停モード設定信号37により行われる。
【0033】
ここで、判定部11が1クロック期間中に行う判定処理を図4のフローチャート及び図5のリクエスト状態テーブルを用いて説明する。ここで、リクエスト状態テーブルとは、判定部11が受信中転送リクエストコマンド・アドレス信号33および転送済リクエストコマンド・アドレス信号36を用いて判定部11内に生成するリクエスト履歴を示す状態テーブルである。なお、調停モードはマスタ平均化モードに設定されているものとする。
図4では、スレーブの番号をi(i=1〜n、nは整数)とする。判定部11はS1においてスレーブ番号を「i=0」に初期化し、このスレーブがリクエストコマンドフル状態、すなわちライトリクエストとリードリクエストの双方を受付けている状態か否かを図5に示すようなリクエスト状態テーブルを参照して判断する(S2)。図5の例では、スレーブ#0はマスタ#0からライトリクエストを、マスタ#1及びマスタ#2からリードリクエストを受付けており、リクエストコマンドフル状態である。
【0034】
S2においてリクエストコマンドフル状態であると判断した場合、判定部11はリクエスト状態テーブルを参照し、それぞれのマスタ#0〜#2についてライトリクエストの数とリードリクエストの数それぞれをリクエストコマンドのべ数として集計する(S3)。
図5の場合、マスタ#0はライトリクエストのべ数「2」、リードリクエストのべ数「1」、マスタ#1はライトリクエストのべ数「1」、リードリクエストのべ数「2」、マスタ#2はライトリクエストのべ数「1」、リードリクエストのべ数「1」である。
【0035】
次に、ライトリクエストとリードリクエストそれぞれについて、リクエスト履歴(受信中転送リクエストコマンド・アドレス信号33によるリクエスト情報および転送済リクエストコマンド・アドレス信号36によるリクエスト情報)のあるマスタのべ数をマスタ毎に集計する(S4)。
図5の場合、ライトリクエストは、マスタ#0ののべ数「2」、マスタ#1ののべ数「1」、マスタ#2ののべ数「1」、リードリクエストは、マスタ#0ののべ数「1」、マスタ#1ののべ数「2」、マスタ#2ののべ数「1」である。
【0036】
各マスタのべ数の算出が終わると、S3にて集計した全マスタ#0〜#2のライトリクエストとリードリクエストのそれぞれについて合計リクエストコマンドのべ数(合計ライトリクエストのべ数「4」、合計リードリクエストのべ数「4」)を算出し(S5)、S4にて集計した全マスタの合計マスタのべ数(合計マスタのべ数「8」)を算出する(S6)。
【0037】
S6が終わると、S5で算出した合計ライトリクエストのべ数とS6で算出した合計マスタのべ数が等しいか否かを判断する(S7)。上記例では、合計ライトリクエストのべ数が「4」、合計マスタのべ数「8」で等しくないのでS8へ進み、S5で算出したリードリクエストの合計リクエストコマンドのべ数とS6で算出した合計マスタのべ数が等しいか否かを判断する(S8)。ここでも、合計リードリクエストのべ数が「4」、合計マスタのべ数「8」で等しくないので、S9へ進む。
【0038】
S9では、S6で算出した合計マスタのべ数がS6で算出した合計ライトリクエストのべ数と合計リードリクエストのよりも小さいか否かの判断を、合計ライトリクエストのべ数と合計リードリクエストのそれぞれについて行う(S9)。
上記例では、合計マスタのべ数「8」は合計ライトリクエストのべ数「4」よりも多いので、S9で「No」と判断してS10へ進む。また、合計マスタのべ数「8」は合計リードリクエストのべ数「4」よりも多いので、同様に、S9で「No」と判断してS10へ進む。
【0039】
S7でライトリクエストの合計リクエストコマンドのべ数(合計ライトコマンドのべ数)と合計マスタのべ数が等しいと判断した場合、あるいはS8でリードリクエストの合計リクエストコマンドのべ数(合計リードリクエストのべ数)と合計マスタのべ数が等しいと判断した場合、S9で「No」と判断した場合と同様にS10へ進む。
S10では、ライトリクエストとリードリクエストそれぞれについて、次に選択するマスタとしてS4で算出した合計マスタのべ数が最も少ないマスタを優先的に選択する(S10)。すなわち、図5の例では転送中リクエスト保持部12からのライトリクエストはマスタ#0のみなのでマスタ#0が選択されるが、リードリクエストはマスタ#1とマスタ#2からあり、S4においてマスタ#1ののべ数「2」、マスタ#2ののべ数「1」であるため、マスタのべ数の小さいマスタ#2が選択される。
【0040】
S9において合計ライトリクエストのべ数が合計マスタのべ数よりも少ない場合は、次にライトするマスタとしてライトリクエストのべ数が最も少ないマスタを優先的に選択する(S11)。同様に、S9において合計リードリクエストのべ数が合計マスタのべ数よりも少ない場合は、次にリードするマスタとしてリードリクエストのべ数が最も少ないマスタを優先して選択する(S11)。
なお、マスタのべ数が最小のマスタが複数ある場合、ラウンドロビンや重み付けにより1つのマスタを選択する。
【0041】
S10及びS11の後、判定部11で選択した結果に基づいて、選択したマスタ2a〜2cに対応するリクエスト・アドレス選択信号20、ライトデータ選択信号21、リードデータ選択信号22をそれぞれ生成し、上述の対応する各機能ブロックに出力する。この処理は、マスタ2a〜2cそれぞれからのアクセス要求からいずれのアクセス要求を実行させるかを判定する行為に相当する。
また、S10及びS11の後、もしくはS2において転送中リクエストコマンド保持部12からライトリクエスト及びリードリクエストの少なくとも一方を受付けていないと判断した場合(「No」と判断した場合)、スレーブ番号iがn(最終スレーブ番号)であるか否かを判断する(S12)。なお、S2で「No」と判断した場合であって、受付中ではない(転送に使用されていない)リクエストコマンドを受付けた場合は、リクエストコマンドに従って動作する。
【0042】
S12でn個全てのスレーブについて判断が完了している場合(i=nの場合)はフローを終了し、全スレーブについて判断が完了していない場合はS13にてiを1つインクリメントしS2へ戻る。
なお、図4ではスレーブ番号の初期値を「i=0」としたが、ラウンドロビン方式に初期値を随時変更するようにしても良い。
【0043】
また、ここではマスタ平均化モードが選択されている場合について説明したが、コマンド平均化モードが選択されている場合、図6に示すように、図4のマスタ平均化モードと一部の処理順序が異なる。具体的には、S1からS9はマスタ平均化モードと同じ処理を行い、S8で「Yes」の場合は上記S11、すなわちリクエストコマンドのべ数が最小のマスタを選択し、S8で「No」の場合に上記S9へ進む。S9で「No」の場合も上記S11の処理へ進み、S11で「Yes」の場合は上記S10でマスタのべ数が最も少ないマスタを選択する。
【0044】
ところで、全てのリクエストコマンドがライトリクエスト(またはリードリクエスト)の場合を除いて合計ライトリクエストコマンドのべ数(または合計リードリクエストコマンドのべ数)が常に合計マスタ数よりも少なくなるため、合計ライトリクエストコマンドのべ数(または合計リードリクエストコマンドのべ数)に重み付けをして比較するようにしても良い。
【0045】
また、図7に示すように、前転送リクエスト保持部13において、コマンド領域40、マスタ番号領域41に加えてアクセス回数領域42を設け、どのスレーブへどのリクエストコマンドで何回アクセスしたかをマスタ毎にカウントし、その履歴情報を転送済リクエストコマンド・アドレス信号36に含めて判定部に送るようにしても良い。
なお、アクセス回数は電源投入時や所定時間経過毎にリセットするものとする。例えば所定時間を1000クロック分(1000回の判定期間分)とした場合、この間におけるアクセス回数の履歴を判定部11に送信することにより、バス調停をする際にリクエストコマンドのべ数やマスタのべ数として、2クロックよりも長期間の平均値を用いることができる。
【0046】
なお、ここではライトイネーブル信号202a〜202cとリードイネーブル信号203a〜202cを有する2ポートメモリの場合について説明したが、ライトリクエストとリードリクエストで共通のイネーブル信号を用いる1ポートメモリの場合、転送中リクエスト保持部12から判定部11へ送られる受信中転送コマンド・アドレス信号33を参照し、次に選択するリクエストコマンドを現在選択中のものとは異なるリクエストコマンドとなるように設定しても良い。
【0047】
本実施の形態によれば、マスタからスレーブに対するリクエストのべ数とリクエストをしたマスタ数とを集計し、これらの合計数を比較してリクエストコマンドが平均化されるようにバス調停を行うことにより、複数のマスタからアクセス要求が重複して発生した場合であっても、データ転送効率を維持しつつアクセス制御できる。
【0048】
また、マスタからスレーブに対するリクエストのべ数とリクエストをしたマスタ数とを集計し、これらの合計数を比較してそれぞれのマスタからのリクエスト受付回数が平均化されるようにバス調停を行うことにより、複数のマスタからアクセス要求が重複して発生した場合であっても、データ転送効率を維持しつつアクセス制御できる。
【0049】
また、マスタ2a〜2cについてスレーブ3a〜3cにアクセスした回数をカウントし、このアクセス回数を用いてバス調停を行うことにより、複数のマスタ間でのアクセス回数を平均化してバスシステム全体としてのデータ転送効率を向上できる。
【0050】
以上、この発明の実施の形態について説明した。上記実施の形態では、請求項に記載の「第1のリクエストコマンド」及び「第2のリクエストコマンド」として「リクエストコマンド信号101a〜101c」、「第1の宛先アドレスの情報」及び「第2の宛先アドレスの情報」として「アドレス信号102a〜102c」、「第1のリクエスト保持部」として「転送中リクエスト保持部12」、「第2のリクエスト情報」として「転送済データ信号34」、「第2のリクエスト保持部」として「前転送リクエスト保持部13」を用いて説明したが、これらは上記実施の形態に限定されるものではなく、この発明の趣旨に包含される限りどのような変形が行われても良い。
【符号の説明】
【0051】
1 バス
2a〜2c マスタ
3a〜3c スレーブ
4 コマンド・アドレス選択部
5 ライトデータ選択部
6 リードデータ選択部
7a、7b アドレス制御部
10 バス調停部
11 判定部
12 転送中リクエスト保持部
13 前転送リクエスト保持部
14 調停モード設定部
20 リクエスト・アドレス選択信号
21 ライトデータ選択信号
22 リードデータ選択信号
23a、23b 転送終了信号
30 転送中リクエストコマンド・アドレス信号
31 データ転送中マスタ番号信号
32 転送終了通知信号
33 受信中転送リクエストコマンド・アドレス信号
34 転送済データ信号
35 クリア信号
36 転送済リクエストコマンド・アドレス信号
37 外部調停モード設定信号
38 内部調停モード設定信号
40 コマンド領域
41 マスタ番号領域
42 アクセス回数領域
100 バスシステム
101a〜101c リクエストコマンド信号
102a〜102c アドレス信号
103a〜103c ライトデータ信号
200 選択リクエストコマンド・アドレス信号
201 バーストデータ
202a〜202c ライトイネーブル信号
203a〜203c リードイネーブル信号
204a〜204c バーストアドレス信号
205、205a、205b リードデータ信号

【特許請求の範囲】
【請求項1】
バスに接続された第1のマスタ及び第2のマスタから前記バスに接続されたスレーブに対し同じタイミングでアクセス要求がなされた場合に前記第1のマスタ及び第2のマスタから前記スレーブへのアクセス要求を調停する前記バスに接続されたバス調停装置において、
前記第1のマスタが前記スレーブに対してアクセス要求する第1のリクエストコマンド及び前記第1のリクエストコマンドの実行先スレーブを示す第1の宛先アドレスの情報を前記第1のマスタから第1のタイミングに受信し、前記第2のマスタが前記スレーブに対してアクセスを要求する第2のリクエストコマンド及び前記第2のリクエストコマンドの実行先スレーブを示す第2の宛先アドレスの情報を前記第2のマスタから前記第1のタイミングに受信し、受信した前記第1のリクエストコマンド、前記第1の宛先アドレスの情報、前記第2のリクエストコマンド、及び前記第2の宛先アドレスの情報を第1のリクエスト情報として保持する第1のリクエスト保持部と、
前記第1のマスタ又は前記第2のマスタから前記スレーブに対してアクセス要求され前記第1のタイミングより前の第2のタイミングに実行されたリクエストコマンド及びそのリクエストコマンドの実行先スレーブを示す宛先アドレスの情報を第2のリクエスト情報として保持する第2のリクエスト保持部と、
前記第1のリクエスト保持部から前記第1のリクエスト情報を受信し、前記第2のリクエスト保持部から前記第2のリクエスト情報を受信し、該第1及び第2のリクエスト情報を用いて、前記第1のタイミングにおける前記第1のマスタからのアクセス要求または前記第2のマスタからのアクセス要求のいずれを実行するかを判定する判定部と、
を備えたことを特徴とするバス調停装置。
【請求項2】
前記判定部は、
前記第1のマスタから要求された前記第1のタイミング及び前記第2のタイミングにおけるリクエストコマンドの数、および前記第2のマスタから要求された前記第1のタイミング及び前記第2のタイミングにおけるリクエストコマンドの数をそれぞれ集計し、集計した前記第1及び第2のマスタのリクエストコマンドの数を合計した合計リクエストコマンド数を算出し、
前記第1のタイミング及び前記第2のタイミングに前記リクエストコマンドを送信した第1のマスタの数、および前記第1のタイミング及び前記第2のタイミングに前記リクエストコマンドを送信した第2のマスタの数をそれぞれ集計し、集計した前記第1及び第2のマスタの数を合計した合計マスタ数を算出し、
算出した前記合計リクエストコマンド数と前記合計マスタ数を用いて前記第1のマスタからのアクセス要求または前記第2のマスタからのアクセス要求のいずれを実行するかを判定することを特徴とする請求項1に記載のバス調停装置。
【請求項3】
前記判定部は、
前記合計リクエストコマンド数と前記合計マスタ数を比較し、前記合計マスタ数が前記合計リクエストコマンド数以下の場合に、前記第1のマスタからのアクセス要求及び前記第2のマスタからのアクセス要求のうち、前記集計した第1のマスタの数または第2のマスタの数が少ないマスタからのアクセス要求を実行するアクセス要求と判定することを特徴とする請求項2に記載のバス調停装置。
【請求項4】
前記判定部は、
前記合計リクエストコマンド数と前記合計マスタ数を比較し、前記合計マスタ数が前記合計リクエストコマンド数以下の場合に、前記第1のマスタからのアクセス要求及び前記第2のマスタからのアクセス要求のうち、前記集計した第1のマスタから要求されたリクエストコマンドの数または第2のマスタから要求されたリクエストコマンドの数が少ないマスタからのアクセス要求を実行するアクセス要求と判定することを特徴とする請求項2に記載のバス調停装置。
【請求項5】
前記判定部は、
前記第1のマスタからのアクセス要求または前記第2のマスタからのアクセス要求のいずれを実行するかを判定した結果に基づき、前記第1のマスタからのアクセス要求または前記第2のマスタからのアクセス要求のいずれかを選択する選択信号を出力することを特徴とする請求項1ないし請求項4のいずれか一項に記載のバス調停装置。
【請求項6】
前記第1のリクエスト保持部は、前記第2のタイミングに実行されたリクエストコマンド及びそのリクエストコマンドの実行先スレーブを示す宛先アドレスを前記第2のリクエスト保持部へ出力し、該第2のリクエスト保持部は、前記リクエストコマンド及び前記宛先アドレスを前記第2のリクエスト情報として保持することを特徴とする請求項1に記載のバス調停装置。
【請求項7】
前記第2のリクエスト保持部は、前記第1のマスタからアクセス要求され前記第2のタイミング以前に実行された第1のアクセス要求の回数および前記第2のマスタからアクセス要求され前記第2のタイミング以前に実行された第2のアクセス要求の回数をカウントし、該カウントしたアクセス要求の回数の情報を保持し、
前記判定部は、
前記第1のリクエスト保持部から出力された前記第1のリクエスト情報、前記第2のリクエスト保持部から出力された前記第2のリクエスト情報、及び前記第2のリクエスト保持部から出力された前記アクセス要求の回数の情報を用いて前記第1のマスタからのアクセス要求または前記第2のマスタからのアクセス要求のいずれを実行するかを判定することを特徴とする請求項1に記載のバス調停装置。
【請求項8】
バスに接続された第1のマスタ及び第2のマスタから前記バスに接続されたスレーブに対し同じタイミングでアクセス要求がなされた場合に前記第1のマスタ及び第2のマスタから前記スレーブへのアクセス要求を調停する前記バスに接続されたバス調停方法において、
前記第1のマスタが前記スレーブに対してアクセス要求する第1のリクエストコマンド及び前記第1のリクエストコマンドの実行先スレーブを示す第1の宛先アドレスの情報を前記第1のマスタから第1のタイミングに取得し、前記第2のマスタが前記スレーブに対してアクセスを要求する第2のリクエストコマンド及び前記第2のリクエストコマンドの実行先スレーブを示す第2の宛先アドレスの情報を前記第2のマスタから前記第1のタイミングに取得する第1の情報取得ステップと、
前記第1のマスタ又は前記第2のマスタから前記スレーブに対してアクセス要求され前記第1のタイミングより前の第2のタイミングに実行されたリクエストコマンド及びそのリクエストコマンドの実行先スレーブを示す宛先アドレスの情報を取得する第2の情報取得ステップと、
前記第1の情報取得ステップ及び前記第2の情報取得ステップにより取得された、前記第1のタイミングにおける、前記第1のリクエストコマンド、前記第1の宛先アドレスの情報、前記第2のリクエストコマンド、及び前記第2の宛先アドレスの情報と、前記第2のタイミングに実行されたリクエストコマンド及びそのリクエストコマンドの実行先スレーブを示す宛先アドレスの情報と、を用いて、前記第1のタイミングにおける前記第1のマスタからのアクセス要求または前記第2のマスタからのアクセス要求のいずれを実行するかを判定する判定ステップと、を備えたことを特徴とするバス調停方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−173847(P2012−173847A)
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願番号】特願2011−33203(P2011−33203)
【出願日】平成23年2月18日(2011.2.18)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】