(57)【要約】【課題】チャネルの転送速度を向上できるメモリコントローラの実現。【解決手段】メモリ10が接続されるメモリインターフェース24と、リードコマンドを受け付け、リードデータを出力するリードチャネル5と、ライトコマンドを受け付け、ライトデータが入力されるライトチャネル6と、コマンド用ＦＩＦＯ21と、ライトデータ用ＦＩＦＯ23と、リードデータ用ＦＩＦＯ22と、を備え、独立してリードおよびライトコマンドを受け付けて順次実行するメモリコントローラ20であって、リードコマンドおよびライトコマンドの受付が同時であるかを判定し、同時でなければ受付順に実行し、同時であればリードおよびライトコマンドのアクセスするアドレス領域が重複しているかをさらに判定し、重複していればリードおよびライトコマンドの所定の一方を他方より先に実行するように制御する調停回路27を備える。【選択図】図４
2010244408.tif 000002
【特許請求の範囲】
【請求項１】
メモリが接続されるメモリインターフェースと、
リードコマンドを受け付け、リードデータを出力するリードチャネルと、
ライトコマンドを受け付け、ライトデータが入力されるライトチャネルと、
コマンド用ＦＩＦＯと、
ライトデータ用ＦＩＦＯと、
リードデータ用ＦＩＦＯと、を備え、独立してリードコマンドおよびライトコマンドを受け付けて前記コマンド用ＦＩＦＯに順次保持し、前記コマンド用ＦＩＦＯに保持された前記リードコマンドおよび前記ライトコマンドを順次実行するメモリコントローラであって、
前記リードコマンドおよび前記ライトコマンドの受付が同時であるかを判定し、同時でなければ受付順に実行し、同時であれば前記リードコマンドおよび前記ライトコマンドのアクセスする前記メモリのアドレス領域が重複しているかをさらに判定し、重複していれば前記リードコマンドおよび前記ライトコマンドの所定の一方を他方より先に実行するように制御する調停回路を備えることを特徴とするメモリコントローラ。
【請求項２】
前記メモリインターフェースに接続される前記メモリは、リード／ライトのデータ端子を共有するメモリであり、
前記調停回路は、前記リードコマンドおよび前記ライトコマンドの受付が同時で且つアドレス領域が重複していない場合に、前記メモリインターフェースの状態がリード状態であれば前記リードコマンドをライト状態であれば前記ライトコマンドを先に実行するように制御することを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記調停回路は、
前記ライトチャネルにおける前記ライトデータの転送完了時に前記ライトコマンドを受け付けたと判定し、
前記リードチャネルにおける前記リードコマンドの転送完了時に前記リードコマンドを受け付けたと判定することを特徴とする請求項１または２に記載のメモリコントローラ。
【請求項４】
リードチャネルを介してリードコマンドを受け付けると共にリードデータを出力し、
ライトチャネルを介してライトコマンドを受け付けると共にライトデータが入力され、  受け付けた前記リードコマンドおよび前記ライトコマンドに基づくリード動作およびライト動作を、リード／ライトのデータ端子を共有するメモリに対して実行するメモリインターフェース方法であって、
前記リードコマンドおよび前記ライトコマンドの受付が同時であるかを判定し、
同時でなければ受付順に実行し、
同時であれば前記リードコマンドおよび前記ライトコマンドのアクセスする前記メモリのアドレス領域が重複しているかをさらに判定し、
重複していれば前記リードコマンドおよび前記ライトコマンドの所定の一方を他方より先に実行することを特徴とするメモリインターフェース方法。
【請求項５】
前記リードコマンドおよび前記ライトコマンドの受付が同時で且つアドレス領域が重複していない場合に、前記メモリインターフェースの状態を判定し、
前記メモリインターフェースがリード状態であれば前記リードコマンドを、ライト状態であれば前記ライトコマンドを、先に実行することを特徴とする請求項４に記載のメモリインターフェース方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラおよびメモリインターフェース方法に関する。
【背景技術】
【０００２】
近年、データを転送するバスの高度化が図られており、複数の回路ブロックを接続可能にし、バースト転送を効率的に行うためのバスが提案されている。
【０００３】
図１は、従来例のバスの構成を示す図である。
【０００４】
図１において、参照番号１は、システムＬＳＩなどの半導体装置である。半導体装置は、内部バス２と、内部バス２に接続される複数の回路ユニット３ａ、３ｂ、…、３ｎと、バスアービトレーションを行うアービタ４と、メモリコントローラ７と、を備える。回路ユニット３ａ、３ｂ、…、３ｎは、例えば、マイクロプロセッサ、ＤＭＡ、キャッシュメモリ、外部インターフェースなどである。メモリコントローラ７は、外部メモリ１０とのインターフェースを行う。なお、図１では、上記の回路ユニットがシステムＬＳＩ１内に設けられる例を示したが、上記の回路ユニットが個別のＬＳＩに形成され、それらのＬＳＩがプリント基板上に設けられる場合も、一部の回路ユニットがシステムＬＳＩ１内に、残りの回路ユニットが個別ＬＳＩに設けられる場合もある。
【０００５】
データを転送の効率を向上するため、独立して動作可能なリード（ＲＥＡＤ）チャネルとライト（ＷＲＩＴＥ）チャネルとを備える内部バス２を利用することが行われる。この場合、メモリコントローラを含む各回路ユニットは、リードコマンド、リードデータ、ライトコマンドおよびライトデータを一時的に記憶するバッファを備え、バッファに蓄積したコマンドを順次実行する。
【０００６】
図２は、リードチャネルとライトチャネルとを備える内部バスを使用する場合の、メモリコントローラ７の部分の概略構成を示す図である。図２に示すように、メモリコントローラ７にはリード（ＲＥＡＤ）チャネル５とライト（ＷＲＩＴＥ）チャネル６が接続され、メモリコントローラ７は、リードコマンドおよびライトコマンドを一時的に記憶するバッファ９を備える。バッファ９は、例えばＦＩＦＯ(First In First Out)メモリで実現される。なお、図示していないが、リードデータおよびライトデータを一時的に記憶するバッファも設けられる。
【０００７】
高速のアクセス動作が可能なダイナミックメモリとして、ＦＣＲＡＭ(Fast Cycle RAM)（登録商標）と呼ばれるリード（ＲＥＡＤ）／ライト（ＷＲＩＴＥ）のデータ端子を共有するシンクロナスＤＲＡＭが知られている。図２は、外部メモリ１０として、メモリコントローラ７にＦＣＲＡＭ（登録商標）を接続した場合を示す。このような外部メモリ１０を接続した場合、メモリコントローラ７は、データ端子の入出力方向を切り替える切替回路８を備え、データ端子を、ライト動作時には出力方向に、リード動作時には入力方向に切り替える。
【０００８】
図３は、メモリコントローラ７が、リード（ＲＥＡＤ）コマンドおよびライト（ＷＲＩＴＥ）コマンドを交互に受け付けた場合の外部メモリ１０へのアクセスを示すタイムチャートである。メモリコントローラ７は、クロックＣＬＫに同期して、外部メモリ１０へのアクセスを行う。メモリコントローラ７は、リード（ＲＥＡＤ）動作およびライト（ＷＲＩＴＥ）動作に応じて、データ端子ＤＱの入出力方向を切り替える。そのため、メモリコントローラ７のデータ端子ＤＱには、リード（ＲＥＡＤ）データおよびライト（ＷＲＩＴＥ）データが交互に出現する。データ端子ＤＱの入出力方向の切替には、数クロック（ここでは２クロック）を必要とする。
【０００９】
メモリコントローラ７は、受け付けたコマンドを、受け付けた順番で処理する。そのため、メモリコントローラ７が正しい順番でリードコマンドおよびライトコマンドを受け付けるように、アービタ４がリードチャネル５とライトチャネル６のアービトレーションを制御する。
【００１０】
しかし、メモリコントローラ７が、ライトコマンドとリードコマンドを同時に受け付けた場合については、これまで考慮されていなかった。そのため、アービタ４がリードチャネル５とライトチャネル６のアービトレーションを制御して、メモリコントローラ７がライトコマンドとリードコマンドを同時に受け付けることのないようにしていた。これは、アービトレーション制御において、同時受け付けが生じないようにコマンドを遅延させることを意味し、その分チャネルにおける転送動作に遅延を生じる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平８−３１４７９３号公報
【特許文献２】特開２００１−２２２４６１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
実施形態は、上記の遅延を低減して、チャネルの転送速度を向上できるメモリコントローラを開示する。
【課題を解決するための手段】
【００１３】
実施形態の第１の態様によれば、メモリコントローラは、メモリが接続されるメモリインターフェースと、リードコマンドを受け付け、リードデータを出力するリードチャネルと、ライトコマンドを受け付け、ライトデータが入力されるライトチャネルと、コマンド用ＦＩＦＯと、ライトデータ用ＦＩＦＯと、リードデータ用ＦＩＦＯと、を備え、独立してリードコマンドおよびライトコマンドを受け付けてコマンド用ＦＩＦＯに順次保持し、コマンド用ＦＩＦＯに保持されたリードコマンドおよびライトコマンドを順次実行する。そして、実施形態の態様のメモリコントローラは、リードコマンドおよびライトコマンドの受付が同時であるかを判定し、同時でなければ受付順に実行し、同時であればリードコマンドおよびライトコマンドのアクセスするメモリのアドレス領域が重複しているかをさらに判定し、重複していればリードコマンドおよびライトコマンドの所定の一方を他方より先に実行するように制御する調停回路を備える。
【００１４】
メモリコントローラが、リードコマンドおよびライトコマンドを同時に受け付けた場合、どちらのコマンドを優先して実行するかが問題になるのは、アドレス領域が重複している場合であり、重複していない場合にはどちらを優先しても特に問題は生じない。そこで、実施形態の第１の態様によれば、メモリコントローラは、リードコマンドおよびライトコマンドの受付が同時で且つアドレス領域が重複している場合に、リードコマンドおよびライトコマンドの所定の一方を他方より先に実行する。このような場合に、所定の一方のコマンドを他方のコマンドより先に実行することが規定されるので、それに応じたアービトレーション制御を行える。これにより、アービタは、メモリコントローラがライトコマンドとリードコマンドを同時に受け付けることが可能であるとしてアービトレーション制御を行うので、その分データの転送動作の遅延を低減して速度を向上できる。
【００１５】
また、リードコマンドおよびライトコマンドを同時に受け付けた場合、アドレス領域が重複していない場合にはどちらのコマンドを優先しても特に問題は生じない。そこで、実施形態の第２の態様によれば、接続されるメモリがリード／ライトのデータ端子を共有するメモリである場合、メモリコントローラは、コマンドの同時受付の時点のメモリとのデータ端子の状態に対応するコマンドを選択して実行する。これによりデータ端子の入出力方向の切替が不要になり、その分動作速度が向上する。
【発明の効果】
【００１６】
実施形態の態様のメモリコントローラを使用することにより、データの転送動作の速度を向上できる。
【図面の簡単な説明】
【００１７】
【図１】図１は、従来例のバスの構成を示す図である。
【図２】図２は、リードチャネルとライトチャネルとを備える内部バスを使用する場合の、メモリコントローラ７の部分の概略構成を示す図である。
【図３】図３は、メモリコントローラ７が、リード（ＲＥＡＤ）コマンドおよびライト（ＷＲＩＴＥ）コマンドを交互に受け付けた場合の外部メモリ１０へのアクセスを示すタイムチャートである。
【図４】図４は、実施形態のメモリコントローラの構成を示すブロック図である。
【図５】図５は、実施形態のメモリコントローラのコマンド受付動作を示すタイムチャートである。
【図６】図６は、実施形態のメモリコントローラの動作を示すフローチャートである。
【図７】図７は、実施形態のメモリコントローラが、リード（ＲＥＡＤ）コマンドおよびライト（ＷＲＩＴＥ）コマンドを一部同時に受け付けた場合の外部メモリ１０へのアクセスを示すタイムチャートである。
【発明を実施するための形態】
【００１８】
図４は、実施形態のメモリコントローラ２０の概略構成を示すブロック図である。
【００１９】
実施形態のメモリコントローラ２０は、図１に示したように、バス２で接続された複数の回路ユニット３ａ、３ｂ、…、３ｎを有する半導体装置１に、外部メモリ１０のインターフェースとして設けられる。しかし、これに限らず、メモリコントローラ２０を個別の半導体装置の形式で実現することも可能である。
【００２０】
図４に示すように、リード（ＲＥＡＤ）チャネル５は、リードコマンドを伝達するリードコマンドラインと、リードデータを伝達するリードデータラインと、を備える。ライト（ＷＲＩＴＥ）チャネル６は、ライトコマンドを伝達するライトコマンドラインと、ライトデータを伝達するライトデータラインと、を備える。
【００２１】
メモリコントローラ２０は、リード（ＲＥＡＤ）チャネル５のリードコマンドラインを介してリードコマンドが入力され、リード（ＲＥＡＤ）チャネル５のリードデータラインを介してリードデータを出力する。同様に、メモリコントローラ２０は、ライト（ＷＲＩＴＥ）チャネル６のライトコマンドラインおよびライトデータラインを介してライトコマンドおよびライトデータが入力される。
【００２２】
メモリコントローラ２０は、コマンド用バッファ２１と、リードデータ用バッファ２２と、ライトデータ用バッファ２３と、メモリインターフェース２４と、調停回路２７と、を備える。コマンド用バッファ２１、リードデータ用バッファ２２およびライトデータ用バッファ２３は、例えば、ＦＩＦＯ(First In First Out)メモリで実現される。
【００２３】
ライトチャネル６を介して入力されたライトデータは、ライトデータ用バッファ２３に受付順に記憶される。リードデータ用バッファ２２に記憶されたリードデータは、記憶された順にリードチャネル５を介して出力される。
【００２４】
リードチャネル５を介して入力されたリードコマンドおよびライトチャネル６を介して入力されたライトコマンドおよびライトデータは、調停回路２７に入力される。調停回路２７は、リードコマンドおよびライトコマンドを受付順にコマンド用バッファ２１に記憶する。本実施例では、ライトコマンドは、最終のライトデータの転送が完了した時をライトコマンドの受付と判断する。したがって、調停回路２７には、ライトコマンドと共にライトデータが入力される。また、リードコマンドは、リードコマンドの転送が完了した時、具体的にはリードアドレスの入力された時をリードコマンドの受付と判断する。なお、調停回路２７は、リードコマンドとライトコマンドを同時に受け付けた時に、後述するような判定処理を行い、判定結果にしたがってリードコマンドおよびライトコマンドをコマンド用バッファ２１に記憶する。
【００２５】
メモリインターフェース２４には、リード（ＲＥＡＤ）／ライト（ＷＲＩＴＥ）のデータ端子を共有するシンクロナスＤＲＡＭなどの外部メモリ１０が接続される。メモリインターフェース２４は、制御回路２５と、外部メモリ１０との間でデータ入出力端子の入出力方向を切り替える切替回路２６と、を備える。制御回路２５は、コマンド用バッファ２１に記憶されたコマンドに基づいて、外部メモリ１０にアクセスするための制御信号およびアドレス信号を生成して外部メモリ１０に出力すると共に、切替回路２６の入出力方向を切り替える。ライト（書込）動作を行う時には、メモリインターフェース２４は、切替回路２６を出力方向に切り替え、コマンド用バッファ２１に記憶されたライトコマンドに応じた制御信号およびアドレス信号を生成して外部メモリ１０に出力する。この時、ライトデータ用バッファ２３に記憶されたライトデータが、制御信号およびアドレス信号に同期して、切替回路２６を介して外部メモリ１０に出力される。リード（読出）動作を行う時には、メモリインターフェース２４は、切替回路２６を入力方向に切り替え、コマンド用バッファ２１に記憶されたリードコマンドに応じた制御信号およびアドレス信号を生成して外部メモリ１０に出力する。外部メモリ１０から読み出されたリードデータは、リードデータ用バッファ２２に記憶され、リードチャネル５から出力される。
【００２６】
メモリインターフェース２４の調停回路２７を除く部分は、これまでのものと同じであり、これ以上の説明は省略する。
【００２７】
図５は、実施形態のメモリコントローラのコマンド受付動作を示すタイムチャートである。
【００２８】
書込アドレスを含むライトコマンドAW(a),AW(b)が、ライトチャネル６のライトコマンドラインを介してメモリコントローラ２０に入力される。ライトデータラインからは、ライトコマンドAW(a)に対応したライトデータWdata(a1), Wdata(a2), Wdata(a3), Wdata(a4)およびAW(b) に対応してライトデータWdata(b1), Wdata(b2), Wdata(b3), Wdata(b4)が、メモリコントローラ２０に入力される。ライトコマンドライン上でのライトコマンドの入力と、ライトデータライン上でのライトデータの入力は独立である。図示のように、ライトデータの方がライトコマンドに比べて伝達するデータ量が多いため、ライトコマンドとライトデータの先頭との時間間隔は一定でない。ただし、ライトコマンドが、ライトデータの先頭より遅れることはない。調停回路２７は、ライトコマンドが入力された後、最終のライトデータ（図５では、Wdata(a4)およびWdata(b4)）が入力された時に、ライトコマンドを受け付けたと判断する。
【００２９】
読出アドレスを含むリードコマンドAR(a),AR(b)がリードチャネル５のリードコマンドラインを介してメモリコントローラ２０に入力される。メモリコントローラ２０は、リードコマンドAR(a),AR(b)が入力された時に、リードコマンドを受け付けたと判断する。メモリコントローラ２０は、リードコマンドAR(a),AR(b)に応じて外部メモリ１０からの読み出し動作を行い、読み出したリードデータをリードデータ用バッファ２２に記憶し、順次リードデータラインに出力する。図５では、リードコマンドAR(a)に対するリードデータRdata(a1), Rdata(a2), Rdata(a3), Rdata(a4)が、リードコマンドAR(a)からある程度の時間後に出力される。
【００３０】
実施形態のメモリコントローラ２０では、調停回路２７が、ライトコマンドAW(b)とリードコマンドAR(b)が同時に受け付けられたかの判断を行う。図５に示した例では、Wdata(a4)の入力と、リードコマンドAR(b)の入力が同時である。
【００３１】
メモリコントローラ２０が、リードコマンドおよびライトコマンドを同時に受け付けた場合、どちらのコマンドを優先して実行するかが問題になる。同時に受け付けたリードコマンドとライトコマンドのアクセスする外部メモリ１０のアドレス領域が重複していない場合にはどちらを優先しても特に問題は生じないが、アドレス領域が重複している場合には、次のような問題が発生する。
【００３２】
例えば、あるライトコマンドが外部メモリ１０のアドレス領域のデータを書き換えた後、リードコマンドにより書き換えた後の同じアドレス領域からデータを読み出すことが想定されていたとする。このようなライトコマンドとリードコマンドが同時に受け付けられた場合、これらのコマンドに対応する動作を正確に行うためには、ライトコマンドに応じた書込動作が行われた後、リードコマンドに応じた読出動作を行う必要がある。
【００３３】
そこで、実施形態のメモリコントローラ２０は、ライトコマンドとリードコマンドを同時に受け付けた場合で、しかもライトコマンドとリードコマンドのアクセスする外部メモリ１０のアドレス領域が重複している場合、ライトコマンドとリードコマンドの所定の一方を優先して実行すると規定する。本実施形態では、このような場合、ライトコマンドを優先して実行すると規定されている。もちろん、リードコマンドを優先して実行すると規定することも可能である。
【００３４】
メモリコントローラ２０が、ライトコマンドとリードコマンドを同時に受け付け且つライトコマンドとリードコマンドのアドレス領域が重複している場合に、ライトコマンドを優先して実行するので、それを考慮してシステムを設計することができる。例えば、メモリコントローラ２０によるライトコマンドとリードコマンドの同時受付を許容するが、リードコマンドはアドレス領域が重複するライトコマンドとは同時に受け付けられないようにアービトレーション設計を行う。これにより、メモリコントローラがライトコマンドとリードコマンドを同時に受け付けることが可能であるとしてアービトレーション制御を行うので、その分データの転送動作の遅延を低減して速度を向上できる。
【００３５】
上記のように、リードコマンドおよびライトコマンドを同時に受け付けた場合、アドレス領域が重複していない場合にはどちらのコマンドを優先しても特に問題は生じない。そこで、実施形態では、メモリコントローラ２０は、アドレス領域が重複しないリードコマンドおよびライトコマンドを同時に受け付けた場合、その時点の切替回路２６の状態を変更する必要のないコマンドを優先して実行する。これにより切替回路２６の入出力方向の切替動作が不要になり、その分動作速度が向上する。
【００３６】
図６は、実施形態のメモリコントローラ２０における処理を示すフローチャートである。
【００３７】
ステップ１０１で、ライトチャネル６およびリードチャネル５を介して、ライトコマンド、ライトデータ、リードコマンドを受け付ける。
【００３８】
ステップ１０２では、受け付けたライトコマンドとリードコマンドが同時受付であるか判定し、同時受付でなければステップ１０３に、同時受付であればステップ１０４に進む。
【００３９】
ステップ１０３では、同時受付でないのでコマンドを受付順に実行するために、リードコマンドであるか判定し、リードコマンドであればステップ１０６に進み、リードコマンドでなければ、すなわちライトコマンドであればステップ１０７に進む。
【００４０】
ステップ１０４では、受け付けたライトコマンドとリードコマンドのアクセスする外部メモリ１０のアドレス領域が重複しているか判定し、重複していれば実施形態ではライトコマンドが優先なのでステップ１０７に進み、重複していなければステップ１０５に進む。
【００４１】
ステップ１０５では、直前に実行したコマンドがリードコマンドであるか判定し、リードコマンドであればステップ１０６に進み、ライトコマンドであればステップ１０７に進む。切替回路２６は、直前に実行したコマンドに対応した入出力方向に設定されているので、直前に実行したコマンドがリードコマンドであればリードコマンドを優先すると切替回路２６の切り替え動作が不要である。これは直前に実行したコマンドがライトコマンドである場合も同様である。
【００４２】
ステップ１０６では、リードコマンドにしたがってリード（読出）動作が行われ、ステップ１０１に戻る。
【００４３】
ステップ１０７では、ライトコマンドにしたがってライト（書込）動作が行われ、ステップ１０１に戻る。
【００４４】
なお、同時受付のライトコマンドとリードコマンドの一方が上記のようにして実行された後、他方のコマンドはこれまでと同様にステップ１０１、１０２および１０３を経た後実行される。
【００４５】
図７は、実施形態のメモリコントローラ２０が、リード（ＲＥＡＤ）コマンドを受け付けた後、ライト（ＷＲＩＴＥ）コマンドを受け付け、その後にリードコマンドとライトコマンドを同時に受け付けた場合の、外部メモリ１０へのアクセスを示すタイムチャートである。同時に受け付けたリードコマンドとライトコマンドは、アクセスするアドレス領域が重複しないものとする。図７に示すように、メモリコントローラ２０は、受付順に、リードコマンドに対応したリード動作を行い、切替回路２６の切り替えを行った後、ライトコマンドに対応したライト動作を行う。同時に受け付けたリードコマンドとライトコマンドはアドレス領域が重複しておらず、前の動作がライト動作なので、ライト動作を優先して実行する。したがって、切替回路２６の切り替え動作は不要である。
【００４６】
ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【００４７】
１    半導体装置（システムＬＳＩ）
２    バス
３ａ，３ｂ，３ｎ    回路ユニット
４    アービタ
１０    外部メモリ
２０    メモリコントローラ
２１    コマンド用バッファ
２２    リードデータ用バッファ
２３    ライトデータ用バッファ
２４    メモリインターフェース
２６    切替回路
２７    調停回路
【図１】
2010244408.tif 000003
【図２】
2010244408.tif 000004
【図３】
2010244408.tif 000005
【図４】
2010244408.tif 000006
【図５】
2010244408.tif 000007
【図６】
2010244408.tif 000008
【図７】
2010244408.tif 000009