以下、図面を参照して本発明の実施形態を説明する。ただし、本発明は以下の実施形態に限定されるものではない。
[実施形態1]
図1は、実施形態1における電子機器100の構成要素を説明するためのブロック図である。
図1に示すように、電子機器100は、CPU(central processing unit)101、画像処理部102、画像処理部103、データバス104、メモリ制御部105、メモリ106を有する。電子機器100の各構成要素は、後述する機能を実現するための電子回路を有する。
CPU101、画像処理部102および画像処理部103は、それぞれ、バスマスタである。メモリ制御部105は、バススレーブである。データバス104は、CPU101、画像処理部102、画像処理部103およびメモリ制御部105を相互に接続する。
CPU101は、電子機器100の構成要素および電子機器100の動作を制御する制御部として動作する。CPU101は、データバス104に接続される。CPU101は、データバス104およびメモリ制御部105を介して、メモリ106にデータを書き込んだり、メモリ106からデータを読み出したりする。
画像処理部102および画像処理部103は、それぞれ、データバス104に接続され、画像処理を行う。画像処理部102は、データバス104およびメモリ制御部105を介して、メモリ106にデータを書き込んだり、メモリ106からデータを読み出したりする。画像処理部103も、データバス104およびメモリ制御部105を介して、メモリ106にデータを書き込んだり、メモリ106からデータを読み出したりする。
メモリ106は、例えばSRAM(Static Random Access Memory)である。メモリ106は、CPU101、画像処理部102または画像処理部103が使用するデータを記憶するメモリである。また、メモリ106は、データの書き込みとデータの読み出しとが排他的に行われるシングルポートSRAM(1ポートSRAM)である。
メモリ制御部105は、CPU101、画像処理部102または画像処理部103が発行する書き込みトランザクションまたは読み出しトランザクションに基づいて、メモリ106に対するメモリアクセスを制御する。また、メモリ制御部105は、書き込みトランザクションと読み出しトランザクションとを並行して処理する場合には、複数のメモリアクセスの競合を調停し、データの書き込みおよびデータの読み出しを行う。
図2は、メモリ制御部105の構成要素を説明するためのブロック図である。
図2に示すように、メモリ制御部105は、書き込みアドレスインタフェース部201、書き込みデータインタフェース部202、読み出しアドレスインタフェース部203、読み出しデータインタフェース部204、調停部205を有する。メモリ制御部105の各構成要素は、後述する機能を実現するための電子回路を有する。
書き込みアドレスインタフェース部201は、データバス104と調停部205との間に接続される。書き込みアドレスインタフェース部201は、書き込みアドレス情報を入力可能なことを示すレディ信号WArをデータバス104に出力する。また、書き込みアドレスインタフェース部201は、メモリ106の書き込みアドレスWAと、書き込みバースト転送長WLと、バリッド信号WAvとをデータバス104から入力する。バリッド信号WAvは、書き込みアドレスWAおよび書き込みバースト転送長WLが有効な情報であることを示す。
書き込みデータインタフェース部202は、データバス104と調停部205との間に接続される。書き込みデータインタフェース部202は、書き込みデータ情報を入力可能なことを示すレディ信号WDrをデータバス104に出力する。また、書き込みデータインタフェース部202は、メモリ106に対する書き込みデータWDと、書き込みデータWDが有効な情報であることを示すバリッド信号WDvとをデータバス104から入力する。
読み出しアドレスインタフェース部203は、データバス104と調停部205との間に接続される。読み出しアドレスインタフェース部203は、読み出しアドレス情報を入力可能なことを示すレディ信号RArをデータバス104に出力する。また、読み出しアドレスインタフェース部203は、メモリ106の読み出しアドレスRAと、読み出しバースト転送長RLと、バリッド信号RAvとをデータバス104から入力する。バリッド信号RAvは、読み出しアドレスRAおよび読み出しバースト転送長RLが有効な情報であることを示す。
読み出しデータインタフェース部204は、データバス104と調停部205との間に接続される。読み出しデータインタフェース部204は、調停部205がメモリ106から読み出した読み出しデータRDと読み出しデータRDが有効な情報であることを示すバリッド信号RDvとをデータバス104に出力する。また、読み出しデータインタフェース部204は、データバス104がデータを入力可能なことを示すレディ信号RDrを入力する。
調停部205は、メモリ106へデータの書き込む処理を書き込みアドレス情報に基づいて制御し、メモリ106からデータ読み出す処理を読み出しアドレス情報に基づいて制御する。調停部205は、複数のメモリアクセスの競合が発生したときに、書き込みトランザクションの方を優先するか否かを判定するための優先フラグを有する。調停部205は、チップイネーブル信号CEと、ライトイネーブル信号WEと、メモリアドレスMAと、書き込みデータMWDとをメモリ106に出力し、読み出しデータMRDをメモリ106から入力する。チップイネーブル信号CEは、書き込みまたは読み出しを有効化する信号である。ライトイネーブル信号WEは、データの書き込みを示す信号である。メモリアドレスMAは、メモリ106上の書き込みアドレスまたは読み出しアドレスを示す。
図3(A)および図3(B)は、メモリ制御部105の制御方法を説明するためのタイミングチャートである。メモリ制御部105は、同期クロック信号CKの立ち上がりエッジで動作する同期回路である。
図3(A)は、メモリ制御部105が書き込みアドレス情報および書き込みデータ情報を入力したときのメモリ制御部105の制御方法を説明するためのタイミングチャートである。例えば、メモリ制御部105は、データバス104を介して、画像処理部102が発行した書き込みトランザクションを入力する。
時刻T301では、書き込みアドレスインタフェース部201は、レディ信号WArおよびバリッド信号WAvが1のとき、書き込みアドレスWAおよび書き込みバースト転送長WLを画像処理部102から入力する。例えば、書き込みバースト転送長WLは128である。書き込みアドレスインタフェース部201は、書き込みアドレスWAおよび書き込みバースト転送長WLを調停部205に出力する。
書き込みデータインタフェース部202は、レディ信号WDrおよびバリッド信号WDvが1のとき、メモリ106に対する書き込みデータWDを画像処理部102から入力する。そして、書き込みデータインタフェース部202は、書き込みデータWDを調停部205に出力する。
時刻T302では、調停部205は、書き込みアドレスWA、書き込みバースト転送長WLおよび書き込みデータWDに基づいて、チップイネーブル信号CE、ライトイネーブル信号WE、メモリアドレスMAおよび書き込みデータMWDの出力を開始する。メモリアドレスMAは、書き込みアドレスWAが示す開始アドレスから、書き込みバースト転送長WLに対応する終了アドレスまで順にインクリメントされる。書き込みデータMWDは、書き込みデータWDに対応する。メモリ106は、チップイネーブル信号CEおよびライトイネーブル信号WEが1のとき、メモリ106上のメモリアドレスMAに書き込みデータMWDを書き込む。
時刻T303では、書き込みデータインタフェース部202は、書き込みアドレスインタフェース部201が時刻T301において入力開始した書き込みバースト転送長WLに対応する長さの最後の書き込みデータWAの入力を終了する。そして、次のクロックサイクルにおいて、書き込みデータインタフェース部202は、バースト転送の最後の書き込みデータMWDの書き込みを行う。
図3(B)は、メモリ制御部105が読み出しアドレス情報および読み出しデータ情報を入力したときのメモリ制御部105の制御方法を説明するためのタイミングチャートである。例えば、メモリ制御部105は、データバス104を介して、画像処理部103が発行した読み出しトランザクションを入力する。
時刻T311では、読み出しアドレスインタフェース部203は、レディ信号RArおよびバリッド信号RAvが1のとき、読み出しアドレスRAおよび読み出しバースト転送長RLを画像処理部103から入力する。例えば、読み出しバースト転送長RLは4である。読み出しアドレスインタフェース部203は、読み出しアドレスRAおよび読み出しバースト転送長RLを調停部205に出力する。
時刻T312では、調停部205は、読み出しアドレスRAおよび読み出しバースト転送長RLに基づいて、1のチップイネーブル信号CEおよび0のライトイネーブル信号WEの出力を開始する。メモリ106は、チップイネーブル信号CEが1であり、ライトイネーブル信号WEが0のとき、メモリ106上のメモリアドレスMAに記憶されているデータを読み出し、その読み出したデータを読み出しデータMRDとして調停部205に出力する。メモリアドレスMAは、読み出しアドレスRAが示す開始アドレスから、読み出しバースト転送長RLに対応する終了アドレスまで順にインクリメントされる。調停部205は、読み出しデータMRDを読み出しデータインタフェース部204に出力する。
次のクロックサイクルでは、読み出しデータインタフェース部204は、読み出しデータMRDを基に、読み出しデータRDおよび1のバリッド信号RDvを、データバス104を介して画像処理部103に出力する。1のバリッド信号RDvは、読み出しデータMRDが有効な情報であることを示す。読み出しデータRDは、読み出しデータMRDに対応する。
時刻T313では、読み出しデータインタフェース部204は、読み出しバースト転送長RLに対応する長さの読み出しデータRDを画像処理部103に出力する処理を終了する。
図4は、クロック単位に行われるメモリ制御部105の制御方法を説明するためのフローチャートである。以下、図4を参照して、メモリ制御部105が複数のメモリアクセスの競合を調停する方法について説明する。メモリ制御部105は、書き込みトランザクションまたは読み出しトランザクションが入力されると、メモリ106にデータを書き込む書き込み処理とメモリ106からデータを読み出す読み出し処理とを制御する。
調停部205の優先フラグは、書き込みトランザクションを優先するか否かを示すフラグであり、一例として初期状態では「1」である。優先フラグの「1」は、書き込みトランザクションを優先することを意味する。優先フラグの「0」は、読み出しトランザクションを優先することを意味する。
メモリ制御部105は、レディ信号WArを1にして、バスマスタから書き込みトランザクションを入力するために待機し、レディ信号RArを1にして、読み出しトランザクションを入力するために待機する。バスマスタは、CPU101、画像処理部102または画像処理部103である。書き込みトランザクションの入力は、例えば、図3(A)の時刻T301におけるバリッド信号WAv、書き込みアドレスWAおよび書き込みバースト転送長WLの入力である。読み出しトランザクションの入力は、例えば、図3(B)の時刻T311におけるバリッド信号RAv、読み出しアドレスRAおよび読み出しバースト転送長RWLの入力である。メモリ制御部105は、書き込みトランザクションまたは読み出しトランザクションが入力されると、書き込みトランザクションまたは読み出しトランザクションを開始する。
ステップS401では、メモリ制御部105は、書き込みトランザクションおよび読み出しトランザクションの少なくとも一つが処理中であるか否かを判定する。メモリ制御部105は、書き込みトランザクションおよび読み出しトランザクションのいずれも処理中でない場合には、ステップS401を繰り返す(S401でNO)。メモリ制御部105は、書き込みトランザクションおよび読み出しトランザクションの少なくとも一つが処理中である場合には、ステップS402に進む(S401でYES)。
ステップS402では、メモリ制御部105は、書き込みトランザクションが処理中であるか否かを判定する。メモリ制御部105は、書き込みトランザクションが処理中であると判定した場合には、ステップS403に進む(S402でYES)。メモリ制御部105は、書き込みトランザクションが処理中でないと判定した場合には、ステップS408に進む(S402でNO)。
ステップS403では、メモリ制御部105は、読み出しトランザクションが処理中であるか否かを判定する。メモリ制御部105は、読み出しトランザクションが処理中であると判定した場合には、ステップS404に進む(S403でYES)。メモリ制御部105は、読み出しトランザクションが処理中でないと判定した場合には、ステップS407に進む(S403でNO)。
ステップS404は、書き込みトランザクションと読み出しトランザクションとが競合する場合に行われる処理である。ステップS404では、調停部205は、優先フラグが1であるか否かを判定する。調停部205は、優先フラグが1であると判定した場合には、ステップS405に進み(S404でYES)、優先フラグが0であると判定した場合には、ステップS406に進む(S404でNO)。
ステップS405では、書き込みデータインタフェース部202は、レディ信号WDrを1にすることにより、書き込みデータWDを入力可能な状態にする。調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを1にする。さらに、調停部205は、書き込みデータMWDをメモリ106に書き込む処理を制御する。そして、調停部205は、優先フラグを0にし、図4のフローチャートが終了する。
ステップS406では、書き込みデータインタフェース部202は、レディ信号WDrを0にすることにより、書き込みデータWDの入力を停止する。調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを0にする。さらに、調停部205は、メモリ106から読み出しデータMRDを読み出す処理を制御する。そして、調停部205は、優先フラグを1にし、図4のフローチャートが終了する。
ステップS407では、書き込みデータインタフェース部202は、レディ信号WDrを1にすることにより、書き込みデータWDを入力可能な状態にする。調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを1にする。さらに、調停部205は、書き込みデータMWDをメモリ106に書き込む処理を制御する。この処理は、図3(A)の処理に対応する。そして、調停部205は、優先フラグを0にし、図4のフローチャートが終了する。
ステップS408では、調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを0にする。さらに、調停部205は、メモリ106から読み出しデータMRDを読み出す処理を制御する。この処理は、図3(B)の処理に対応する。そして、調停部205は、優先フラグを1にし、図4のフローチャートが終了する。
図5は、書き込みトランザクションと読み出しトランザクションとが競合した場合のメモリ制御部105の制御方法を説明するためのタイミングチャートである。メモリ制御部105は、画像処理部102が発行した書き込みトランザクションと画像処理部103が発行した読み出しトランザクションを入力し、図4のフローチャートに基づく制御を行う。
時刻T501では、書き込みアドレスインタフェース部201は、レディ信号WArおよびバリッド信号WAvが1のとき、書き込みアドレスWAおよび書き込みバースト転送長WLを画像処理部102から入力する。例えば、書き込みバースト転送長WLは128である。書き込みアドレスインタフェース部201は、書き込みアドレスWAおよび書き込みバースト転送長WLを調停部205に出力する。書き込みデータインタフェース部202は、レディ信号WDrの1を維持し、書き込みデータWDの入力を開始する。メモリ制御部105は、書き込みトランザクションが処理中であり、読み出しトランザクションが処理中でないので、ステップS407に進む(S403でNO)。
時刻T502では、調停部205は、ステップS407の処理を行う。ステップS407では、調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを1にする。さらに、調停部205は、メモリ106のメモリアドレスMAに書き込みデータMWDを書き込む処理を制御する。そして、調停部205は、優先フラグを0にする。
時刻T503は、バースト転送による書き込み処理の途中の時刻である。時刻T503では、読み出しアドレスインタフェース部203は、レディ信号RArおよびバリッド信号RAvが1のとき、読み出しアドレスRAおよび読み出しバースト転送長RLを画像処理部103から入力し、レディ信号RArを0にする。例えば、読み出しバースト転送長RLは4である。読み出しアドレスインタフェース部203は、読み出しアドレスRAおよび読み出しバースト転送長RLを調停部205に出力する。メモリ制御部105は、書き込みトランザクションおよび読み出しトランザクションが処理中であるので、ステップS404に進む(S403でYES)。ステップS404では、調停部205は、優先フラグが0であるので、ステップS406に進む(S404でNO)。
時刻T504では、調停部205は、ステップS406の処理を行う。ステップS406では、書き込みデータインタフェース部202は、レディ信号WDrを0にすることにより、書き込みデータWDの入力を停止する。調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを0にする。さらに、調停部205は、メモリ106から読み出しデータMRDを読み出す処理を制御する。そして、調停部205は、優先フラグを1にする。
時刻T505では、メモリ制御部105は、書き込みトランザクションおよび読み出しトランザクションが処理中であるので、ステップS404に進む(S403でYES)。ステップS404では、調停部205は、優先フラグが1であるので、ステップS405に進む(S404でYES)。ステップS405では、書き込みデータインタフェース部202は、レディ信号WDrを1にすることにより、書き込みデータWDの入力を再開する。調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを1に。さらに、調停部205は、書き込みデータMWDをメモリ106に書き込む処理を制御する。そして、調停部205は、優先フラグを0にする。
以下、同様に、調停部205は、クロック信号CKのサイクル毎に、メモリ106にデータを書き込む書き込み処理とメモリ106からデータを読み出す読み出し処理とが交互に繰り返されるように制御する。
時刻T506では、調停部205は、読み出しトランザクションを完了し、レディ信号RArを1にする。メモリ制御部105は、書き込みトランザクションが処理中であり、読み出しトランザクションが処理中でないので、ステップS407に進む(S403でNO)。ステップS407では、調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを1にすることにより、書き込みデータMWDをメモリ106に書き込む処理を再開する。そして、調停部205は、優先フラグを0にする。
時刻T507は、バースト転送による書き込み処理の途中の時刻である。時刻T507では、読み出しアドレスインタフェース部203は、レディ信号RArおよびバリッド信号RAvが1のとき、読み出しアドレスRAおよび読み出しバースト転送長RLを画像処理部103から入力し、レディ信号RArを0にする。例えば、読み出しバースト転送長RLは4である。読み出しアドレスインタフェース部203は、読み出しアドレスRAおよび読み出しバースト転送長RLを調停部205に出力する。メモリ制御部105は、書き込みトランザクションおよび読み出しトランザクションが処理中であるので、ステップS404に進む(S403でYES)。ステップS404では、調停部205は、優先フラグが0であるので、ステップS406に進む(S404でNO)。
ステップS406では、書き込みデータインタフェース部202は、レディ信号WDrを0にすることにより、書き込みデータWDの入力を停止する。調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを0にする。さらに、調停部205は、メモリ106から読み出しデータMRDを読み出す処理を制御する。そして、調停部205は、優先フラグを1にする。以下、時刻T503以降と同様に、調停部205は、クロック信号CKのサイクル毎に、メモリ106にデータを書き込む書き込み処理とメモリ106からデータを読み出す読み出し処理とが交互に繰り返されるように制御する。
例えば、画像処理部102は、書き込みトランザクションを発行するバスマスタである。画像処理部103は、読み出しトランザクションを発行するバスマスタである。
メモリ制御部105は、画像処理部102が発行する書き込みトランザクションと、画像処理部103が発行する読み出しトランザクションとが競合する場合、ステップS404に進む(S403でYES)。その場合、調停部205は、クロックサイクルごとに、メモリ106にデータを書き込む書き込み処理と、メモリ106からデータを読み出す読み出し処理とが交互に繰り返されるように制御する。
調停部205は、上記の競合の場合において、前回の処理が書き込み処理である場合には、読み出し処理を行うように制御し、前回の処理が読み出し処理である場合には、書き込み処理を行うように制御する。また、調停部205は、上記の競合の場合、優先フラグに応じて、書き込み処理または読み出し処理を行うように制御する。
以上説明したように、実施形態1によれば、調停部205は、書き込み処理を行った後に優先フラグを0にし、読み出し処理を行った後に優先フラグを1にする。これにより、調停部205は、書き込み処理と読み出し処理とが競合する場合であっても、読み出し処理を効率的に処理することができる。
なお、実施形態1では、バスマスタは、CPU101、画像処理部102および画像処理部103であり、データバス104に接続される構成を説明したが、バスマスタの数は限定されない。より多くのバスマスタがデータバス104に接続され、それぞれのバスマスタがメモリ106に対するメモリアクセスを行う構成であってもよい。図2で説明したデータバス104およびメモリ制御部105の間で入力または出力される信号の機能および信号数は一例であり、上述した例に限定されない。
さらに、一例として示した図3(A)、図3(B)および図5で示した信号の波形は、メモリ制御部105およびメモリ106の回路構成によって、バッファによるクロックサイクルのずれがあってもよい。また、信号の論理の極性の意味が異なるものでもよく、信号の波形は限定されない。
[実施形態2]
図6は、実施形態2における電子機器600の構成要素を説明するためのブロック図である。実施形態2における電子機器600の構成要素のうち、実施形態1における電子機器100の構成要素と同様の構成要素については、同じ符号を付してそれらの説明を省略する。
図6に示すように、電子機器600は、CPU101、画像処理部102、画像処理部103、データバス104、メモリ制御部605、メモリ606を有する。電子機器600の各構成要素は、後述する機能を実現するための電子回路を有する。
CPU101、画像処理部102および画像処理部103は、それぞれ、バスマスタである。メモリ制御部605は、バススレーブである。データバス104は、CPU101、画像処理部102、画像処理部103およびメモリ制御部605を相互に接続する。
メモリ606は、複数のシングルポートSRAM(1ポートSRAM)を有する。複数のシングルポートSRAMはいずれも、データの書き込みとデータの読み出しとが排他的に行われる。また、メモリ606は、メモリ606上のアドレス領域を分割して、複数のシングルポートSRAMに連続するアドレス領域を設定する。
メモリ制御部605は、データバス104に接続され、バスマスタが発行する書き込みトランザクションまたは読み出しトランザクションに基づいて、メモリ606に対するメモリアクセスを制御する。メモリ制御部605は、書き込みトランザクションと読み出しトランザクションとが競合する場合、複数のメモリアクセスの競合を調停し、メモリ606にデータを書き込む書き込み処理とメモリ606からデータを読み出す読み出し処理とを制御する。
図7は、メモリ制御部605の構成要素を説明するためのブロック図である。
メモリ制御部605は、書き込みアドレスインタフェース部201、書き込みデータインタフェース部202、読み出しアドレスインタフェース部203、読み出しデータインタフェース部204、調停部701、セレクタ702を有する。メモリ制御部605の各構成要素は、後述する機能を実現するための電子回路を有する。
メモリ606は、複数のメモリバンク711~714を有する。複数のメモリバンク711~714はいずれも、データの書き込みとデータの読み出しとが排他的に行われるシングルポートSRAMである。メモリ606は、一例として、メモリ606上のアドレスを4分割して、メモリバンク711、メモリバンク712、メモリバンク713およびメモリバンク714の4個のシングルポートSRAM上のアドレスに連続アドレスを設定する。
メモリバンク711は、チップイネーブル信号CE1と、ライトイネーブル信号WE1と、メモリアドレスMA1と、書き込みデータMWD1とをセレクタ702から入力し、読み出しデータMRD1をセレクタ702に出力する。
メモリバンク712は、チップイネーブル信号CE2と、ライトイネーブル信号WE2と、メモリアドレスMA2と、書き込みデータMWD2とをセレクタ702から入力し、読み出しデータMRD2をセレクタ702に出力する。
メモリバンク713は、チップイネーブル信号CE3と、ライトイネーブル信号WE3と、メモリアドレスMA3と、書き込みデータMWD3とをセレクタ702から入力し、読み出しデータMRD3をセレクタ702に出力する。
メモリバンク714は、チップイネーブル信号CE4と、ライトイネーブル信号WE4と、メモリアドレスMA4と、書き込みデータMWD4とをセレクタ702から入力し、読み出しデータMRD4をセレクタ702に出力する。
チップイネーブル信号CE1~CE4は、図2のチップイネーブル信号CEと同様である。ライトイネーブル信号WE1~WE4は、図2のライトイネーブル信号WEと同様である。メモリアドレスMA1~MA4は、図2のメモリアドレスMAと同様である。書き込みデータMWD1~MWD4は、図2の書き込みデータMWDと同様である。読み出しデータMRD1~MRD4は、図2の読み出しデータMRDと同様である。
メモリ制御部605は、図2のメモリ制御部105に対して、調停部701の構成が異なり、セレクタ702が追加される。調停部701は、メモリ606にデータを書き込む書き込み処理とメモリ106からデータを読み出す読み出し処理とが競合した場合、書き込みアドレス情報および読み出しアドレス情報に基づいて、メモリバンク711~714のいずれに対する書き込みおよび読み出しかを判別し、メモリバンクを決定する。セレクタ702は、調停部701の判別結果に基づいて、メモリバンク711~714のそれぞれに対応するデータの書き込みおよび読み取り制御を、実施形態1におけるメモリ106に対する制御と同様に行う。
調停部701は、書き込みトランザクションと読み出しトランザクションとが競合した場合、書き込み対象のメモリバンクと読み出し対象のメモリバンクとが同一であるか否かを判定する。調停部701は、書き込み対象のメモリバンクと読み出し対象のメモリバンクとが同一である場合には実施形態1と同様に調停する。調停部701は、書き込み対象のメモリバンクと読み出し対象のメモリバンクとが同一でない場合には、書き込みおよび読み出しをそれぞれ独立に並列に制御する。メモリ制御部605は、より短期間に、多くのトランザクションを処理することができ、データの書き込みおよびデータの読み出し性能が向上する。
図8は、クロック単位に行われるメモリ制御部605の制御方法を説明するためのフローチャートである。以下、図8を参照して、メモリ制御部605が複数のメモリアクセスの競合を調停する方法について説明する。メモリ制御部605は、書き込みトランザクションまたは読み出しトランザクションが入力されると、メモリバンク711~714にデータを書き込む書き込み処理とメモリバンク711~714からデータを読み出す読み出し処理とを制御する。
調停部701の優先フラグは、書き込みトランザクションを優先するか否かを示すフラグであり、一例として初期状態では「1」である。優先フラグの「1」は、書き込みトランザクションを優先することを意味する。優先フラグの「0」は、読み出しトランザクションを優先することを意味する。
メモリ制御部605は、レディ信号WArを1にして、書き込みトランザクションを入力するために待機し、レディ信号RArを1にして、読み出しトランザクションを入力するために待機する。
ステップS801では、メモリ制御部605は、書き込みトランザクションおよび読み出しトランザクションの少なくとも一つが処理中であるか否かを判定する。メモリ制御部605は、書き込みトランザクションおよび読み出しトランザクションのいずれも処理中でない場合には、ステップS801を繰り返す(S801でNO)。メモリ制御部605は、書き込みトランザクションおよび読み出しトランザクションの少なくとも一つが処理中である場合には、ステップS802に進む(S801でYES)。
ステップS802では、調停部701は、入力した書き込みアドレスWAまたは読み出しアドレスRAに基づいて、書き込み対象または読み出し対象が4つのメモリバンク711~714のうちのいずれであるのかを決定する。
ステップS803では、メモリ制御部605は、書き込みトランザクションが処理中であるか否かを判定する。メモリ制御部605は、書き込みトランザクションが処理中であると判定した場合には、ステップS804に進む(S803でYES)。メモリ制御部605は、書き込みトランザクションが処理中でないと判定した場合には、ステップS811に進む(S803でNO)。
ステップS804では、メモリ制御部605は、読み出しトランザクションが処理中であるか否かを判定する。メモリ制御部605は、読み出しトランザクションが処理中であると判定した場合には、ステップS805に進む(S804でYES)。メモリ制御部605は、読み出しトランザクションが処理中でないと判定した場合には、ステップS810に進む(S804でNO)。
ステップS805は、書き込みトランザクションと読み出しトランザクションとが競合する場合に行われる処理である。ステップS805では、調停部701は、ステップS802で決定した書き込み対象のメモリバンクと読み出し対象のメモリバンクとが同一であるか否かを判定する。調停部701は、同一であると判定した場合には、書き込みトランザクションと読み出しトランザクションとが競合するので、ステップS806に進む(S805でYES)。調停部701は、同一でないと判定した場合には、書き込みトランザクションと読み出しトランザクションとが競合しないので、ステップS809に進む(S805でNO)。
ステップS806では、調停部701は、優先フラグが1であるか否かを判定する。調停部701は、優先フラグが1であると判定した場合には、ステップS807に進み(S806でYES)、優先フラグが0であると判定した場合には、ステップS808に進む(S806でNO)。
ステップS807では、書き込みデータインタフェース部202は、レディ信号WDrを1にすることにより、書き込みデータWDを入力可能な状態にする。調停部701は、ステップS802で決定した書き込み対象のメモリバンクのチップイネーブル信号CE1~CE4を1にし、書き込み対象のメモリバンクのライトイネーブル信号WE1~WE4を1にする。さらに、調停部701は、ステップS802で決定した書き込み対象のメモリバンクに書き込みデータを書き込む処理を制御する。そして、調停部701は、優先フラグを0にし、図8のフローチャートが終了する。
ステップS808では、書き込みデータインタフェース部202は、レディ信号WDrを0にすることにより、書き込みデータWDの入力を停止する。調停部701は、ステップS802で決定した読み出し対象のメモリバンクのチップイネーブル信号CE1~CE4を1にし、読み出し対象のメモリバンクのライトイネーブル信号WE1~WE4を0にする。さらに、調停部701は、ステップS802で決定した読み出し対象のメモリバンクから読み出しデータMRD1~MRD4を読み出す処理を制御する。そして、調停部701は、優先フラグを1にし、図8のフローチャートが終了する。
ステップS809では、書き込みデータインタフェース部202は、レディ信号WDrを1にすることにより、書き込みデータWDを入力可能な状態にする。調停部701は、ステップS802で決定した書き込み対象のメモリバンクのチップイネーブル信号CE1~CE4を1にし、書き込み対象のメモリバンクのライトイネーブル信号WE1~WE4を1にする。さらに、調停部701は、ステップS802で決定した書き込み対象のメモリバンクに書き込みデータを書き込む処理を制御する。
また、調停部701は、ステップS802で決定した読み出し対象のメモリバンクのチップイネーブル信号CE1~CE4を1にし、読み出し対象のメモリバンクのライトイネーブル信号WE1~WE4を0にする。さらに、調停部701は、ステップS802で決定した読み出し対象のメモリバンクから読み出しデータMRD1~MRD4を読み出す処理を制御する。そして、図8のフローチャートが終了する。
ステップS810では、書き込みデータインタフェース部202は、レディ信号WDrを1にすることにより、書き込みデータWDを入力可能な状態にする。調停部701は、ステップS802で決定した書き込み対象のメモリバンクのチップイネーブル信号CE1~CE4を1にし、書き込み対象のメモリバンクのライトイネーブル信号WE1~WE4を1にする。さらに、調停部701は、ステップS802で決定した書き込み対象のメモリバンクに書き込みデータを書き込む処理を制御する。そして、調停部701は、優先フラグを0にし、図8のフローチャートが終了する。
ステップS811では、書き込みデータインタフェース部202は、レディ信号WDrを0にすることにより、書き込みデータWDの入力を停止する。調停部701は、ステップS802で決定した読み出し対象のメモリバンクのチップイネーブル信号CE1~CE4を1にし、読み出し対象のメモリバンクのライトイネーブル信号WE1~WE4を0にする。さらに、調停部701は、ステップS802で決定した読み出し対象のメモリバンクから読み出しデータMRD1~MRD4を読み出す処理を制御する。そして、調停部701は、優先フラグを1にし、図8のフローチャートが終了する。
図9は、書き込みトランザクションと読み出しトランザクションとが競合した場合のメモリ制御部605の制御方法を説明するためのタイミングチャートである。メモリ制御部605は、画像処理部102が発行した書き込みトランザクションと画像処理部103が発行した読み出しトランザクションを入力し、図9のフローチャートに基づく制御を行う。
時刻T901では、書き込みアドレスインタフェース部201は、レディ信号WArおよびバリッド信号WAvが1のとき、書き込みアドレスWAおよび書き込みバースト転送長WLを画像処理部102から入力する。例えば、書き込みバースト転送長WLは128である。書き込みデータインタフェース部202は、レディ信号WDrの1を維持し、書き込みデータWDの入力を開始する。ステップS802では、調停部701は、入力した書き込みアドレスWAに基づいて、例えば、書き込み対象のメモリバンクがメモリバンク711であることを決定する。メモリ制御部605は、書き込みトランザクションが処理中であり、読み出しトランザクションが処理中でないので、ステップS810に進む(S804でNO)。
時刻T902では、調停部701は、ステップS810の処理を行う。ステップS810では、調停部701は、書き込み対象のメモリバンク711のチップイネーブル信号CE1を1にし、ライトイネーブル信号WE1を1にする。さらに、調停部701は、書き込みデータMWD1をメモリバンク711のメモリアドレスMA1に書き込み処理を制御する。そして、調停部701は、優先フラグを0にする。
時刻T903は、バースト転送による書き込み処理の途中の時刻である。時刻T903では、読み出しアドレスインタフェース部203は、レディ信号RArおよびバリッド信号RAvが1のとき、読み出しアドレスRAおよび読み出しバースト転送長RLを画像処理部103から入力し、レディ信号RArを0にする。例えば、読み出しバースト転送長RLは4である。ステップS802では、調停部701は、入力した読み出しアドレスRAに基づいて、例えば、読み出し対象のメモリバンクがメモリバンク712であることを決定する。メモリ制御部605は、書き込みトランザクションおよび読み出しトランザクションが処理中であるので、ステップS805に進む(S804でYES)。ステップS805では、調停部701は、書き込み対象のメモリバンクと読み出し対象のメモリバンクとが同一でないので、ステップS809に進む(S805でNO)。
時刻T904では、調停部701は、ステップS809の処理を行う。ステップS809では、書き込みデータインタフェース部202は、レディ信号WDrを1にすることにより、書き込みデータWDを入力可能な状態にする。調停部701は、書き込み対象のメモリバンク711のチップイネーブル信号CE1を1にし、ライトイネーブル信号WE1を1にし、メモリバンク711に書き込みデータMWD1を書き込む処理を継続する。
また、調停部701は、読み出し対象のメモリバンク712のチップイネーブル信号CE2を1にし、ライトイネーブル信号WE2を0にする。これにより、調停部701は、メモリバンク712から読み出しデータMRD2を読み出す。調停部701は、メモリバンク712から読み出しデータMRD2を読み出す処理を開始する。以上のように、調停部701は、メモリバンク711に対する書き込み処理と並列に、メモリバンク712に対する読み取り処理を行う。
時刻T905は、バースト転送による読み出し処理の終了後の時刻であり、バースト転送による書き込み処理の途中の時刻である。時刻T905では、読み出しアドレスインタフェース部203は、レディ信号RArおよびバリッド信号RAvが1のとき、読み出しアドレスRAおよび読み出しバースト転送長RLを画像処理部103から入力し、レディ信号RArを0にする。例えば、読み出しバースト転送長RLは4である。ステップS802では、調停部701は、入力した読み出しアドレスRAに基づいて、例えば、読み出し対象のメモリバンクがメモリバンク711であることを決定する。メモリ制御部605は、書き込みトランザクションおよび読み出しトランザクションが処理中であるので、ステップS805に進む(S804でYES)。ステップS805では、調停部701は、書き込み対象のメモリバンクと読み出し対象のメモリバンクとが同一であるので、ステップS806に進む(S805でYES)。ステップS806では、調停部701は、優先フラグが0であるので、ステップS808に進む(S806でNO)。
時刻T906では、調停部701は、ステップS808の処理を行う。ステップS808では、書き込みデータインタフェース部202は、レディ信号WDrを0にすることにより、書き込みデータWDの入力を停止する。調停部701は、読み出し対象のメモリバンク711のチップイネーブル信号CE1を1にし、ライトイネーブル信号WE1を0にする。さらに、調停部701は、読み出し対象のメモリバンク711から読み出しデータMRD1を読み出す処理を制御する。そして、調停部701は、優先フラグを1にする。調停部701は、メモリバンク711から読み出しデータMRD1を読み出す処理を開始する。
時刻T907では、メモリ制御部605は、書き込みトランザクションおよび読み出しトランザクションが処理中であり、書き込み対象のメモリバンクと読み出し対象のメモリバンクとが同一であるので、ステップS806に進む(S805でYES)。ステップS806では、調停部701は、優先フラグが1であるので、ステップS807に進む(S806でYES)。
時刻T908では、調停部701は、ステップS807の処理を行う。ステップS807では、書き込みデータインタフェース部202は、レディ信号WDrを1にすることにより、書き込みデータWDの入力を再開する。調停部701は、書き込み対象のメモリバンク711のチップイネーブル信号CE1を1にし、ライトイネーブル信号WE1を1にする。さらに、調停部701は、書き込み対象のメモリバンク711に書き込みデータを書き込む処理を制御する。そして、調停部701は、優先フラグを0にする。
以下、同様に、調停部701は、クロック信号CKのサイクル毎に、メモリバンク711にデータを書き込む書き込み処理とメモリバンク711からデータを読み出す読み出し処理とが交互に繰り返されるように制御する。
時刻T908では、調停部701は、読み出しトランザクションを完了し、レディ信号RArを1にする。メモリ制御部605は、書き込みトランザクションが処理中であり、読み出しトランザクションが処理中でないので、ステップS810に進む(S804でNO)。ステップS810では、調停部701は、メモリバンク711のチップイネーブル信号CE1を1にし、ライトイネーブル信号WE1を1にする。これにより、調停部701は、メモリバンク711に書き込みデータMWD1を書き込む処理を再開する。そして、調停部701は、優先フラグを0にする。
メモリ制御部605は、画像処理部102が発行する書き込みトランザクションと、画像処理部103が発行する読み出しトランザクションとが競合する場合、ステップS805に進む(S804でNO)。メモリ制御部605は、画像処理部102が発行する書き込みトランザクションの対象であるメモリバンクと、画像処理部103が発行する読み出しトランザクションの対象であるメモリバンクとが同じ場合、ステップS806に進む。その場合、調停部701は、クロックサイクルごとに、メモリバンクにデータを書き込む書き込み処理と、メモリバンクからデータを読み出す読み出し処理とが交互に繰り返されるように制御する。
メモリ制御部605は、画像処理部102が発行する書き込みトランザクションの対象であるメモリバンクと、画像処理部103が発行する読み出しトランザクションの対象であるメモリバンクが異なる場合、ステップS809に進む。ステップS809では、調停部701は、上記の異なるメモリバンクに対して書き込みと読み出しを並列に行うように制御する。
以上説明したように、実施形態2によれば、調停部701は、書き込みトランザクションおよび読み出しトランザクションが処理中である場合、書き込み対象のメモリバンクと読み出し対象のメモリバンクとが同一であるか否かを判定する。調停部701は、書き込み対象のメモリバンクと読み出し対象のメモリバンクとが同一である場合には、実施形態1と同様の調停を行うことができる。調停部701は、書き込み対象のメモリバンクと読み出し対象のメモリバンクとが同一でない場合には、書き込みおよび読み出しをそれぞれ独立に並列に行うことができる。これにより、調停部205は、書き込み処理と読み出し処理とが競合する場合であっても、読み出し処理を効率的に処理することができる。
[実施形態3]
実施形態3における電子機器100の構成は、実施形態1における電子機器100の構成と同様である。実施形態3が実施形態1と異なる点を説明する。実施形態3では、メモリ制御部105は、書き込みトランザクションまたは読み出しトランザクションが継続する場合には、継続するトランザクションを優先して調停を行う。従って、メモリ制御部105は、トランザクションを発行したバスマスタのメモリアクセス完了までのレイテンシを効率よく短くし、データ転送性能を向上することができる。特に、書き込みトランザクションおよび読み出しトランザクションが混み合っていないときや、短いバースト転送長のトランザクションが多い状況において、その効果が期待できる。
図10は、クロック単位に行われるメモリ制御部105の制御方法を説明するためのフローチャートである。以下、図10を参照して、複数のメモリアクセスの競合を調停する方法について説明する。メモリ制御部105は、書き込みトランザクションまたは読み出しトランザクションが入力されると、メモリ106にデータを書き込む書き込み処理とメモリ106からデータを読み出す読み出し処理とを制御する。実施形態3では、調停部205の優先フラグの設定条件が実施形態1と異なる。
調停部205の優先フラグは、一例として初期状態では「1」である。メモリ制御部105は、レディ信号WArを1にして、書き込みトランザクションを入力するために待機し、レディ信号RArを1にして、読み出しトランザクションを入力するために待機する。
ステップS1001では、メモリ制御部105は、書き込みトランザクションおよび読み出しトランザクションの少なくとも一つが処理中であるか否かを判定する。メモリ制御部105は、書き込みトランザクションおよび読み出しトランザクションのいずれも処理中でない場合には、ステップS1001を繰り返す(S1001でNO)。メモリ制御部105は、書き込みトランザクションおよび読み出しトランザクションの少なくとも一つが処理中である場合には、ステップS1002に進む(S1001でYES)。
ステップS1002では、メモリ制御部105は、書き込みトランザクションが処理中であるか否かを判定する。メモリ制御部105は、書き込みトランザクションが処理中であると判定した場合には、ステップS1003に進む(S1002でYES)。メモリ制御部105は、書き込みトランザクションが処理中でないと判定した場合には、ステップS1008に進む(S1002でNO)。
ステップS1003では、メモリ制御部105は、読み出しトランザクションが処理中であるか否かを判定する。メモリ制御部105は、読み出しトランザクションが処理中であると判定した場合には、ステップS1004に進む(S1003でYES)。メモリ制御部105は、読み出しトランザクションが処理中でないと判定した場合には、ステップS1007に進む(S1003でNO)。
ステップS1004は、書き込みトランザクションと読み出しトランザクションとが競合する場合に行われる処理である。ステップS1004では、調停部205は、優先フラグが1であるか否かを判定する。調停部205は、優先フラグが1であると判定した場合には、ステップS1005に進み(S1004でYES)、優先フラグが0であると判定した場合には、ステップS1006に進む(S1004でNO)。
ステップS1005では、書き込みデータインタフェース部202は、レディ信号WDrを1にすることにより、書き込みデータWDを入力可能な状態にする。調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを1にする。さらに、調停部205は、書き込みデータMWDをメモリ106に書き込む処理を制御する。
ステップS1006では、書き込みデータインタフェース部202は、レディ信号WDrを0にすることにより、書き込みデータWDの入力を停止する。調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを0にする。さらに、調停部205は、メモリ106から読み出しデータMRDを読み出す処理を制御する。
ステップS1007では、書き込みデータインタフェース部202は、レディ信号WDrを1にすることにより、書き込みデータWDを入力可能な状態にする。調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを1にする。そして、調停部205は、書き込みデータMWDをメモリ106に書き込む処理を制御する。
ステップS1008では、調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを0にする。さらに、調停部205は、メモリ106から読み出しデータMRDを読み出す処理を制御する。
ステップS1009では、調停部205は、書き込みトランザクションが次のクロック信号CKのサイクルにおいても継続するか否かを判定する。調停部205は、書き込みトランザクションが継続すると判定した場合には、ステップS1011に進む(S1009でYES)。調停部205は、書き込みトランザクションが完了したと判定した場合には、ステップS1012に進む(S1009でNO)。
ステップS1010では、調停部205は、読み出しトランザクションが次のクロック信号CKのサイクルにおいても継続するか否かを判定する。調停部205は、読み出しトランザクションが継続すると判定した場合には、ステップS1013に進む(S1010でYES)。調停部205は、読み出しトランザクションが完了したと判定した場合には、ステップS1014に進む(S1010でNO)。
ステップS1011では、調停部205は、優先フラグを1にし、図10のフローチャートが終了する。
ステップS1012では、調停部205は、優先フラグを0にし、図10のフローチャートが終了する。
ステップS1013では、調停部205は、優先フラグを0にし、図10のフローチャートが終了する。
ステップS1014では、調停部205は、優先フラグを1にし、図10のフローチャートが終了する。
図11は、書き込みトランザクションと読み出しトランザクションとが競合した場合のメモリ制御部105の制御方法を説明するためのタイミングチャートである。メモリ制御部105は、画像処理部102が発行した書き込みトランザクションと画像処理部103が発行した読み出しトランザクションを入力し、図10のフローチャートに基づく制御を行う。
時刻T1101では、書き込みアドレスインタフェース部201は、レディ信号WArおよびバリッド信号WAvが1のとき、書き込みアドレスWAおよび書き込みバースト転送長WLを画像処理部102から入力する。例えば、書き込みバースト転送長WLは4である。書き込みデータインタフェース部202は、レディ信号WDrの1を維持し、書き込みデータWDの入力を開始する。メモリ制御部105は、書き込みトランザクションが処理中であり、読み出しトランザクションが処理中でないので、ステップS1007に進む(S1003でNO)。
時刻T1102では、調停部205は、ステップS1007の処理を行う。ステップS1007では、調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを1にする。そして、調停部205は、メモリ106のメモリアドレスMAに書き込みデータMWDを書き込む処理を制御する。ステップS1009では、調停部205は、書き込みトランザクションが継続すると判定し、ステップS1011に進む。ステップS1011では、調停部205は、優先フラグを1にし、クロック信号CKのサイクルの処理を終える。調停部205は、同様の処理を繰り返し、4サイクルで、4つの書き込みデータWDをメモリ106に書き込む。
時刻T1103では、調停部205は、ステップS1007の処理を行う(S1003でNO)。ステップS1007では、調停部205は、メモリ106のメモリアドレスMAに書き込みデータMWDを書き込む処理を制御する。ステップS1009では、調停部205は、書き込みトランザクションが完了したと判定し、ステップS1012に進む。ステップS1012では、調停部205は、優先フラグを0にし、クロック信号CKのサイクルの処理を終える。
時刻T1104では、書き込みアドレスインタフェース部201は、レディ信号WArおよびバリッド信号WAvが1のとき、書き込みアドレスWAおよび書き込みバースト転送長WLを画像処理部102から入力する。例えば、書き込みバースト転送長WLは4である。書き込みデータインタフェース部202は、レディ信号WDrの1を維持し、書き込みデータWDの入力を開始する。メモリ制御部105は、書き込みトランザクションが処理中であり、読み出しトランザクションが処理中でないので、ステップS1007に進む(S1003でNO)。
時刻T1105では、調停部205は、ステップS1007の処理を行う。ステップS1007では、調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを1にする。そして、調停部205は、メモリ106のメモリアドレスMAに書き込みデータMWDを書き込む処理を制御する。ステップS1009では、調停部205は、書き込みトランザクションが継続すると判定し、ステップS1011に進む。ステップS1011では、調停部205は、優先フラグを1にし、クロック信号CKのサイクルの処理を終える。
時刻T1106は、バースト転送による書き込み処理の途中の時刻である。時刻T1106では、読み出しアドレスインタフェース部203は、レディ信号RArおよびバリッド信号RAvが1のとき、読み出しアドレスRAおよび読み出しバースト転送長RLを画像処理部103から入力し、レディ信号RArを0にする。例えば、読み出しバースト転送長RLは4である。読み出しアドレスインタフェース部203は、読み出しアドレスRAおよび読み出しバースト転送長RLを調停部205に出力する。メモリ制御部105は、書き込みトランザクションおよび読み出しトランザクションが処理中であるので、ステップS1004に進む(S1003でYES)。ステップS1004では、調停部205は、優先フラグが1であるので、ステップS1005に進む(S1004でNO)。
ステップS1005では、書き込みデータインタフェース部202は、レディ信号WDrを1にすることにより、書き込みデータWDを入力する。調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを1にする。そして、調停部205は、書き込みデータMWDをメモリ106に書き込む処理を制御する。ステップS1009では、調停部205は、書き込みトランザクションが継続すると判定し、ステップS1011に進む。ステップS1011では、調停部205は、優先フラグを1にし、クロック信号CKのサイクルの処理を終える。調停部205は、同様の処理を繰り返し、4サイクルで、4つの書き込みデータWDをメモリ106に書き込む。
時刻T1107では、メモリ制御部105は、書き込みトランザクションが処理中でなく、読み出しトランザクションが処理中であるので、ステップS1008に進む(S1002でNO)。ステップS1008では、調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを0にする。そして、調停部205は、メモリ106から読み出しデータMRDを読み出す処理を制御する。ステップS1010では、調停部205は、読み出しトランザクションが継続すると判定し、ステップS1013に進む。ステップS1013では、調停部205は、優先フラグを0にし、クロック信号CKのサイクルの処理を終える。調停部205は、同様の処理を繰り返し、4サイクルで、4つの読み出しデータMRDをメモリ106から読み出す。
時刻T1108では、メモリ制御部105は、書き込みトランザクションが処理中でなく、読み出しトランザクションが処理中であるので、ステップS1008に進む(S1002でNO)。ステップS1008では、調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを0にする。そして、調停部205は、メモリ106から読み出しデータMRDを読み出す処理を制御する。ステップS1010では、調停部205は、読み出しトランザクションが完了したと判定し、ステップS1014に進む。ステップS1014では、調停部205は、優先フラグを1にし、クロック信号CKのサイクルの処理を終える。
時刻T1109では、調停部205は、読み出しトランザクションを完了し、レディ信号RArを1にする。
時刻T1110では、読み出しアドレスインタフェース部203は、レディ信号RArおよびバリッド信号RAvが1のとき、読み出しアドレスRAおよび読み出しバースト転送長RLを画像処理部103から入力し、レディ信号RArを0にする。例えば、読み出しバースト転送長RLは4である。読み出しアドレスインタフェース部203は、読み出しアドレスRAおよび読み出しバースト転送長RLを調停部205に出力する。メモリ制御部105は、書き込みトランザクションが処理中でなく、読み出しトランザクションが処理中であるので、ステップS1008に進む(S1002でNO)。
時刻T1111では、調停部205は、ステップS1008の処理を行う。ステップS1008では、調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを0にする。そして、調停部205は、メモリ106から読み出しデータMRDを読み出す処理を制御する。ステップS1010では、調停部205は、読み出しトランザクションが継続すると判定し、ステップS1013に進む。ステップS1013では、調停部205は、優先フラグを0にし、クロック信号CKのサイクルの処理を終える。
時刻T1112は、バースト転送による読み出し処理の途中の時刻である。時刻T1112では、書き込みアドレスインタフェース部201は、レディ信号WArおよびバリッド信号WAvが1のとき、書き込みアドレスWAおよび書き込みバースト転送長WLを画像処理部102から入力する。例えば、書き込みバースト転送長WLは4である。書き込みデータインタフェース部202は、レディ信号WDrの1を維持し、書き込みデータWDの入力を開始する。メモリ制御部105は、書き込みトランザクションおよび読み出しトランザクションが処理中であるので、ステップS1004に進む(S1003でYES)。ステップS1004では、調停部205は、優先フラグが0であるので、ステップS1006に進む(S1004でNO)。
ステップS1006では、書き込みデータインタフェース部202は、レディ信号WDrを0にすることにより、書き込みデータWDの入力を停止する。調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを0にする。そして、調停部205は、メモリ106から読み出しデータMRDを読み出す処理を制御する。ステップS1010では、調停部205は、読み出しトランザクションが継続すると判定し、ステップS1013に進む。ステップS1013では、調停部205は、優先フラグを0にし、クロック信号CKのサイクルの処理を終える。
調停部205は、同様の処理を繰り返し、4サイクルで、4つの読み出しデータMRDをメモリ106から読み出す。ステップS1010では、調停部205は、読み出しトランザクションが完了したと判定し、ステップS1014に進む。ステップS1014では、調停部205は、優先フラグを1にする。メモリ制御部105は、書き込みトランザクションが処理中であり、読み出しトランザクションが処理中でないので、ステップS1007に進む(S1003でNO)。
時刻T1113では、調停部205は、ステップS1007の処理を行う。ステップS1007では、書き込みデータインタフェース部202は、レディ信号WDrを1にすることにより、書き込みデータWDの入力を再開する。調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを1にする。そして、調停部205は、書き込みデータMWDをメモリ106のメモリアドレスMAに書き込む処理を制御する。ステップS1009では、調停部205は、書き込みトランザクションが継続すると判定し、ステップS1011に進む。ステップS1011では、調停部205は、優先フラグを1にし、クロック信号CKのサイクルの処理を終える。調停部205は、同様の処理を繰り返し、4サイクルで、4つの書き込みデータWDをメモリ106に書き込む。
時刻T1114では、書き込みデータインタフェース部202は、書き込みデータWDの入力を完了する。メモリ制御部105は、レディ信号WArを1にして、書き込みトランザクションを入力するために待機する。ステップS1007では、調停部205は、チップイネーブル信号CEを1にし、ライトイネーブル信号WEを1にする。そして、調停部205は、書き込みデータMWDをメモリ106のメモリアドレスMAに書き込む処理を制御する。ステップS1009では、調停部205は、書き込みトランザクションが完了したと判定し、ステップS1012に進む。ステップS1012では、調停部205は、優先フラグを0にし、クロック信号CKのサイクルの処理を終える。
メモリ制御部105は、画像処理部102が発行する書き込みトランザクションと、画像処理部103が発行する読み出しトランザクションとが競合する場合、ステップS1004に進む(S1003でYES)。
時刻T1104~T1109は、上記の競合の場合において、メモリ制御部105が読み出しトランザクションよりも書き込みトランザクションを先に入力した場合である。その場合、調停部205は、書き込みトランザクションに基づく書き込みの制御を完了した後、読み出しトランザクションに基づく読み出しを行うように制御する。
時刻T1110~T1114は、上記の競合の場合において、メモリ制御部105が書き込みトランザクションよりも読み出しトランザクションを先に入力した場合である。その場合、調停部205は、読み出しトランザクションに基づく読み出しの制御を完了した後、書き込みトランザクションに基づく書き込みを行うように制御する。
以上説明したように、実施形態3によれば、調停部205は、書き込みトランザクションが継続する場合には、優先フラグを1にし、読み出しトランザクションが継続する場合には、優先フラグを1にする。これにより、調停部205は、書き込み処理と読み出し処理とが競合する場合であっても、読み出し処理を効率的に処理することができる。なお、メモリ制御部105は、電子機器100の動作状況によって、図4のフローチャートに基づく制御方法と図10のフローチャートに基づく制御方法とを選択的に行うこともできる。