(57)【特許請求の範囲】
【請求項１】
外部からのメモリアクセス要求を蓄えることができるコマンドキューと、前記コマンドキューに蓄えられた前記メモリアクセス要求によりコマンド制御ステートマシンが動作してメモリに対してメモリコマンドを発行するメモリ制御部と、を備え、アドレス空間が複数のバンクに分割されている前記メモリにアクセスするメモリ制御装置において、
前記メモリ内の前記複数のバンクそれぞれに対してアクティブにしたか否かを記憶するバンクアクティブフラグを備え、
前記コマンドキューが少なくとも３以上のメモリアクセス要求を蓄えられるように構成され、
前記メモリ制御部が、前記コマンドキューに蓄えられている全てのメモリアクセス要求と前記バンクアクティブフラグに基づいて前記メモリコマンドを決定するように構成されている
ことを特徴とするメモリ制御装置。
【請求項２】
前記メモリ制御部が前記コマンドキューからのメモリアクセス要求により最初に発行する前記メモリコマンドは、少なくともバンクアクティブコマンド、ライトコマンド、リードコマンド、プリチャージ付きライトコマンド、プリチャージ付きリードコマンドのうちのいずれかであって、
前記バンクアクティブフラグは、前記バンクアクティブコマンド発行時には該当バンクに対応するフラグがアクティブになり、前記プリチャージコマンド、前記プリチャージ付きライトコマンド、前記プリチャージ付きリードコマンド発行時には該当バンクに対応するフラグがインアクティブになるように構成されていることを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
外部からのメモリアクセス要求を蓄えることができるコマンドキューと、前記コマンドキューに蓄えられた前記メモリアクセス要求によりコマンド制御ステートマシンが動作してメモリに対してメモリコマンドを発行するメモリ制御部と、を備え、アドレス空間が複数のバンクに分割されている前記メモリにアクセスするメモリ制御装置において、
前記コマンドキューが少なくとも３以上のメモリアクセス要求を蓄えられるように構成され、
前記メモリ制御部が、前記コマンドキューに蓄えられている全てのメモリアクセス要求に基づいて前記メモリコマンドを決定するとともに、前記メモリコマンドを決定する際に、前記コマンドキューに蓄えられている全てのメモリアクセス要求それぞれにおいて最初に発行する前記メモリコマンドの情報を、対応するメモリアクセス要求ごとに前記コマンドキューに書き込むように構成されている
ことを特徴とするメモリ制御装置。
【請求項４】
定期的に前記メモリのメモリリフレッシュの要求を発行するリフレッシュ制御部と、少なくとも前記コマンドキューの要求及び前記リフレッシュ制御部の要求を調停する調停部と、を備え、
前記リフレッシュ制御部が、前記調停部に対してメモリリフレッシュの要求を行う第一の要求信号と、前記第一の要求信号よりも複数サイクル前に前記メモリ制御部に対してメモリリフレッシュの要求を行う第二の要求信号と、を出力するように構成され、そして、
前記メモリ制御部が、前記第二の要求信号に基づいて前記メモリコマンドを決定するように構成されている
ことを特徴とする請求項１乃至３のうちいずれか一項に記載のメモリ制御装置。
【請求項５】
前記コマンドキューとは異なる第二のコマンドキューを備え、前記メモリ制御部が、前記第二のコマンドキューからの要求を優先して前記メモリコマンドを決定するように構成されていることを特徴とする請求項１乃至４のうちいずれか一項に記載のメモリ制御装置。
【請求項６】
前記コマンドキューの前段に外部からのメモリアクセス要求を分割するコマンド分割部が設けられていることを特徴とする請求項１乃至５のうちいずれか一項に記載のメモリ制御装置。
【請求項７】
前記メモリ制御部が前記コマンドキューからのメモリアクセス要求により最初に発行する前記メモリコマンドは、少なくともバンクアクティブコマンド、ライトコマンド、リードコマンド、プリチャージ付きライトコマンド、プリチャージ付きリードコマンドのうちのいずれかであることを特徴とする請求項１、３乃至６のうちいずれか一項に記載のメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
ローアドレスとカラムアドレスを異なるタイミングで出力してアクセスする同期式のメモリを制御するメモリ制御装置に関する。
【背景技術】
【０００２】
大容量メモリとして使用されるＤＲＡＭ（Dynamic Random Access Memory）には、ＤＤＲ１−ＳＤＲＡＭやＤＤＲ２−ＳＤＲＡＭまたはＤＤＲ３−ＳＤＲＡＭのようなＤＤＲ（ダブルデータレート）方式の同期式ＤＲＡＭ（ＳＤＲＡＭ）が主流である。将来的にはＤＤＲ４−ＳＤＲＡＭの規格も策定されつつあり、メモリの動作速度および容量は世代が交代する毎に速く、大きくなっていく。現在最も高速な動作をするＤＤＲ３−ＳＤＲＡＭにはデータレートが８００ＭＨｚから１．６ＧＨｚを超える仕様がＪＥＤＥＣ（Joint Electron Device Engineering Council）により規格化されている。
【０００３】
これらのメモリは、ローアドレスを一度選択（ＤＤＲ方式メモリにおいてはバンクアクティブコマンドに相当、一般的にページオープンとも呼ばれている）すれば、その後カラムアドレスを選択して実際のリードまたはライトを実施する場合、カラムアドレスの変更だけなら連続して行うことができ、このことにより動作効率が上がる。しかし、ローアドレスを異なるアドレスに選択し直す場合は、再選択するためのコマンドを発行する時間や、再選択に必要な待ち時間が生じ効率が下がってしまう。
【０００４】
ここで、上述したＤＤＲ２−ＳＤＲＡＭなどの同期式ＤＲＡＭを対象としたメモリ制御装置において、メモリのリードまたはライトを行うために必要なことを三つのケースに分けて説明する。
【０００５】
第一のケース、該当するバンクのページ（ローアドレス）がオープンされていない場合：まず該当ページのオープンが必要である。そのためには、オープンするバンクアドレスとローアドレスの指定を含むバンクアクティブコマンドを発行する。その次にメモリに対し実際のリードまたはライトをするため、カラムアドレスの指定を含むリードコマンドまたはライトコマンドを発行する必要がある。その後、必要ならページをクローズさせるためにプリチャージコマンドを発行しても良い。
【０００６】
第二のケース、該当するバンクのページが既にオープンされており、同じページ（同じローアドレスが指定されている）の場合：バンクアクティブコマンドを発行する必要はなく、メモリに対し実際のリードまたはライトをするためのカラムアドレスの指定を含むリードコマンドまたはライトコマンドを発行する。その後、必要ならページをクローズさせるためにプリチャージコマンドを発行しても良い。
【０００７】
第三のケース、該当するバンクのページが既にオープンされており、異なるページ（異なるローアドレスが指定されている）の場合：まず、オープンされているページのクローズが必要である。そのために、プリチャージコマンドを発行する。その後、異なるページをオープンするために、バンクアドレスとローアドレスの指定を含むバンクアクティブコマンドを発行する。バンクアクティブコマンドを発行した後の動作は、第一のケースと同様である。
【０００８】
なお、リードコマンドまたはライトコマンドを発行後、ページを必ずクローズする場合は、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドを、リードコマンドまたはライトコマンドの代わりに発行すれば、別途プリチャージコマンドを発行する必要は無い。
【０００９】
このような動作をするメモリ制御装置は、一般的に以下の二種類のアクセス方法のどちらかが選択されている。またはどちらかを最初に選択することで動作させている。
（Ａ）異なるページをアクセスするまでページをオープンし続ける方式。同じページを連続してアクセスすれば効率が上がるように構成されている（以降、オープンバンク方式と呼ぶ。例えば、特許文献１、２を参照）。
（Ｂ）毎回ページをオープンしクローズする方式。異なるバンクを連続してアクセスすれば効率が上がるように構成されている（以降、インターリーブ方式と呼ぶ。例えば、特許文献３、４を参照）。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
オープンバンク方式は同じバンクの異なるページのアクセスが連続する場合に効率を落とすことになり、インターリーブ方式は同じバンクのアクセスが連続すると効率を落とすことになるという問題があった。
【００１１】
また、オープンバンク方式はメモリが例えば、ＤＤＲ３−ＳＤＲＡＭの場合、リフレッシュサイクルを実施する際に、オープンしているバンクを一旦クローズするためにプリチャージコマンドを発行した後、しかるべき時間を待ってからリフレッシュコマンドを発行しなければならないため、インターリーブ方式に比べリフレッシュ期間ごとに非効率になるサイクルが生じることになるという問題があった。
【００１２】
本発明はかかる問題を解決することを目的としている。
【００１３】
即ち、本発明は、ローアドレスとカラムアドレスを異なるタイミングで出力してアクセスする同期式のメモリにアクセスする際に効率良くアクセスすることができるメモリ制御装置を提供することを目的としている。
【課題を解決するための手段】
【００１４】
請求項１に記載された発明は、外部からのメモリアクセス要求を蓄えることができるコマンドキューと、前記コマンドキューに蓄えられた前記メモリアクセス要求によりコマンド制御ステートマシンが動作してメモリに対してメモリコマンドを発行するメモリ制御部と、を備え、アドレス空間が複数のバンクに分割されている前記メモリにアクセスするメモリ制御装置において、前記メモリ内の前記複数のバンクそれぞれに対してアクティブにしたか否かを記憶するバンクアクティブフラグを備え、前記コマンドキューが少なくとも３以上のメモリアクセス要求を蓄えられるように構成され、前記メモリ制御部が、前記コマンドキューに蓄えられている全てのメモリアクセス要求と前記バンクアクティブフラグに基づいて前記メモリコマンドを決定するように構成されていることを特徴とするメモリ制御装置である。
【００１５】
請求項２に記載された発明は、請求項１に記載の発明において、前記メモリ制御部が前記コマンドキューからのメモリアクセス要求により最初に発行する前記メモリコマンドは、少なくともバンクアクティブコマンド、ライトコマンド、リードコマンド、プリチャージ付きライトコマンド、プリチャージ付きリードコマンドのうちのいずれかであって、前記バンクアクティブフラグは、前記バンクアクティブコマンド発行時には該当バンクに対応するフラグがアクティブになり、前記プリチャージコマンド、前記プリチャージ付きライトコマンド、前記プリチャージ付きリードコマンド発行時には該当バンクに対応するフラグがインアクティブになるように構成されていることを特徴とする。
【００１６】
請求項３に記載された発明は、外部からのメモリアクセス要求を蓄えることができるコマンドキューと、前記コマンドキューに蓄えられた前記メモリアクセス要求によりコマンド制御ステートマシンが動作してメモリに対してメモリコマンドを発行するメモリ制御部と、を備え、アドレス空間が複数のバンクに分割されている前記メモリにアクセスするメモリ制御装置において、前記コマンドキューが少なくとも３以上のメモリアクセス要求を蓄えられるように構成され、前記メモリ制御部が、前記コマンドキューに蓄えられている全てのメモリアクセス要求に基づいて前記メモリコマンドを決定するとともに、前記メモリコマンドを決定する際に、前記コマンドキューに蓄えられている全てのメモリアクセス要求それぞれにおいて最初に発行する前記メモリコマンドの情報を、対応するメモリアクセス要求ごとに前記コマンドキューに書き込むように構成されていることを特徴とするメモリ制御装置である。
【００１７】
請求項４に記載された発明は、請求項１乃至３のうちいずれか一項に記載された発明において、定期的に前記メモリのメモリリフレッシュの要求を発行するリフレッシュ制御部と、少なくとも前記コマンドキューの要求及び前記リフレッシュ制御部の要求を調停する調停部と、を備え、前記リフレッシュ制御部が、前記調停部に対してメモリリフレッシュの要求を行う第一の要求信号と、前記第一の要求信号よりも複数サイクル前に前記メモリ制御部に対してメモリリフレッシュの要求を行う第二の要求信号と、を出力するように構成され、そして、前記メモリ制御部が、前記第二の要求信号に基づいて前記メモリコマンドを決定するように構成されていることを特徴とする。
【００１８】
請求項５に記載された発明は、請求項１乃至４のうちいずれか一項に記載された発明において、前記コマンドキューとは異なる第二のコマンドキューを備え、前記メモリ制御部が、前記第二のコマンドキューからの要求を優先して前記メモリコマンドを決定するように構成されていることを特徴とする。
【００１９】
請求項６に記載された発明は、請求項１乃至５のうちいずれか一項に記載された発明において、前記コマンドキューの前段に外部からのメモリアクセス要求を分割するコマンド分割部が設けられていることを特徴とする。
【００２０】
請求項７に記載された発明は、請求項１、３乃至６のうちいずれか一項に記載された発明において、前記メモリ制御部が前記コマンドキューからのメモリアクセス要求により最初に発行する前記メモリコマンドは、少なくともバンクアクティブコマンド、ライトコマンド、リードコマンド、プリチャージ付きライトコマンド、プリチャージ付きリードコマンドのうちのいずれかであることを特徴とする。
【発明の効果】
【００２２】
請求項１に記載の発明によれば、３以上の複数のメモリアクセス要求を蓄えられるように構成されたコマンドキューに蓄えられている全てのメモリアクセス要求に基づいて、メモリ制御部がメモリコマンドを決定しているので、３以上先のメモリアクセス要求におけるバンク及びローアドレスも考慮してメモリコマンドを発行することができるため、例えば前後のメモリアクセス要求のみを考慮した場合よりも、ページオープン、ページクローズに関するメモリコマンドの発行を少なくすることができ、メモリへのアクセス効率を良くすることができる。また、メモリ内の複数のバンクそれぞれに対してアクティブにしたか否かを記憶するバンクアクティブフラグを備え、そのバンクアクティブフラグに基づいてメモリコマンドを決定しているので、アクティブになっているバンクと３以上先のメモリアクセス要求におけるバンク及びローアドレスも考慮してメモリコマンドを発行することができるため、例えば前後のメモリアクセス要求のみを考慮した場合よりも、バンクアクティブコマンドや、プリチャージコマンドなどのメモリコマンドの発行を少なくすることができ、メモリへのアクセス効率を良くすることができる。
【００２３】
請求項２に記載の発明によれば、メモリ制御部がコマンドキューからの要求に応じてバンクアクティブコマンド、ライトコマンド、リードコマンド、プリチャージ付きライトコマンド、プリチャージ付きリードコマンドから適切なメモリコマンドを選択して、バンクをアクティブまたはインアクティブにするコマンドによってフラグを切替えることができる。
【００２４】
請求項３に記載の発明によれば、３以上の複数のメモリアクセス要求を蓄えられるように構成されたコマンドキューに蓄えられている全てのメモリアクセス要求に基づいて、メモリ制御部がメモリコマンドを決定しているので、３以上先のメモリアクセス要求におけるバンク及びローアドレスも考慮してメモリコマンドを発行することができるため、例えば前後のメモリアクセス要求のみを考慮した場合よりも、ページオープン、ページクローズに関するメモリコマンドの発行を少なくすることができ、メモリへのアクセス効率を良くすることができる。また、メモリコマンドを決定する際に、コマンドキューに蓄えられている全てのメモリアクセス要求それぞれにおいて最初に発行するメモリコマンドの情報をコマンドキューに書き込んでいるので、予め効率の良いメモリコマンドの発行順を決めておくことができるため、例えば前後のメモリアクセス要求のみを考慮した場合よりも、バンクアクティブコマンドや、プリチャージコマンドなどのメモリコマンドの発行を少なくすることができ、メモリへのアクセス効率をよくすることができる。
【００２５】
請求項４に記載の発明によれば、リフレッシュ制御部が、第一の要求信号よりも複数サイクル前にメモリ制御部に対してメモリリフレッシュの要求を行う第二の要求信号を出力して、メモリ制御部が、第二の要求信号に基づいてメモリコマンドを決定するので、リフレッシュの際に、予めプリチャージコマンドなどを発行してメモリに対してリフレッシュコマンドを発行できる状態にするため、リフレッシュにかかる待ち時間を短縮することができる。
【００２６】
請求項５に記載の発明によれば、コマンドキューとは異なる第二のコマンドキューを備え、メモリ制御部が、第二のコマンドキューからの要求を優先してメモリコマンドを決定しているので、ＣＰＵのキャッシュアクセスなどの優先順位が高いアクセスの場合でも、ＣＰＵのパフォーマンスを落とさずに、最優先でメモリアクセスを行うことができる。
【００２７】
請求項６に記載の発明によれば、コマンドキューの前段に外部からのメモリアクセス要求を分割するコマンド分割部が設けられているので、コマンドキューに接続されるシステムバスのバス幅で入力されるメモリアクセス要求をメモリのバス幅とバースト長に合わせて適切な数にメモリアクセス要求を分割することができ、システムバス側でメモリに合わせたメモリアクセス要求を行う必要が無くなる。
【００２８】
請求項７に記載の発明によれば、メモリ制御部がコマンドキューからの要求に応じてバンクアクティブコマンド、ライトコマンド、リードコマンド、プリチャージ付きライトコマンド、プリチャージ付きリードコマンドから適切なメモリコマンドを選択することができる。
【図面の簡単な説明】
【００３０】
【図１】本発明の第１の実施形態にかかるメモリ制御装置のブロック図である。
【図２】図１に示したコマンドキューの説明図である。
【図３】本発明の第２の実施形態にかかるメモリ制御装置のブロック図である。
【図４】図３に示したメモリ制御装置の動作を示したタイミングチャートである。
【図５】本発明の第３の実施形態にかかるメモリ制御装置のブロック図である。
【図６】本発明の第４の実施形態にかかるメモリ制御装置のブロック図である。
【図７】本発明の第５の実施形態にかかるメモリ制御装置のブロック図である。
【発明を実施するための形態】
【００３１】
［第１実施形態］
以下、本発明の第１の実施形態を、図１および図２を参照して説明する。図１は、本発明の第１の実施形態にかかるメモリ制御装置のブロック図である。図２は、図１に示したコマンドキューの説明図である。
【００３２】
図１に示した本発明の第１の実施形態にかかるメモリ制御装置１は、コマンドキュー３と、メモリ制御部４と、を備え、メモリ２と接続されている。
【００３３】
メモリ２は、例えば、ＤＤＲ１−ＳＤＲＡＭやＤＤＲ２−ＳＤＲＡＭまたはＤＤＲ３−ＳＤＲＡＭといった同期式ＤＲＡＭであって、ローアドレスをバンクアクティブコマンド、カラムアドレスをリードコマンド、ライトコマンド、プリチャージ付きリードコマンド、プリチャージ付きライトコマンドに含めて異なるタイミングで出力してアクセスするメモリである。また、プリチャージコマンド、リフレッシュコマンドといったメモリコマンドによってプリチャージやリフレッシュといった動作も行う。
【００３４】
コマンドキュー３は、ｎ個の待機コマンドバッファ＃１〜＃ｎ（ｎは３以上の整数）から構成されたキューであり、各待機コマンドバッファには、メモリ制御装置１外部から少なくともメモリ２へアクセスするバンクとローアドレス（またはこれらの値を算出することができるアドレス番号等）がそれぞれ記憶される（蓄えられる）。コマンドキュー３は、コマンドバッファ＃１が先のエントリー順で、＃２、＃３、…と＃ｎに向かってエントリー順が後になるように蓄えられる。
【００３５】
メモリ制御部４は、発行コマンド判定部５と、要求受付制御部６と、メモリコマンド制御ステートマシン７と、を備えている。
【００３６】
発行コマンド判定部５は、コマンドキュー３内の全ての待機コマンドバッファの内容に基づいて、待機コマンドバッファ＃１における発行すべきコマンドを判定して要求受付制御部６へ出力する。
【００３７】
要求受付制御部６は、コマンドキュー３からのメモリへのアクセスリクエスト信号（Ｒｅｑ）に対して、メモリコマンド制御ステートマシン７が実行可能になった際にリクエストを受け付けたことを示す信号（Ａｃｋ）を返して、発行コマンド判定部５から入力された発行すべきコマンドをメモリコマンド制御ステートマシン７へ出力する。
【００３８】
メモリコマンド制御ステートマシン７は、メモリ２に出力するメモリコマンドを発行するための状態遷移を行うステートマシンであり、発行コマンド判定部５から入力された発行すべきコマンドに応じて状態遷移させメモリコマンドを出力する。また、メモリ２へ書き込むデータの出力やメモリ２から読み出されたデータも入力される。
【００３９】
上述した構成のメモリ制御装置１は、コマンドキュー３からの要求を受け付け、メモリ制御部４のメモリコマンド制御ステートマシン７を動作させて、メモリ２に対するメモリコマンドを発行する場合、要求元となる待機コマンドバッファ＃１の内容のみに基づくのではなく、コマンドキュー３に蓄えられている全ての内容に基づいてメモリコマンドを発行する構成となっている。
【００４０】
図２を用い具体的に動作を説明する。図２は例としてコマンドキュー３に８個の図示しないシステムバス側（外部）から送信されたコマンド（メモリアクセス要求）が蓄えられていることを示している。図中ではメモリアクセスするバンクとローアドレスの内容を記載している。カラムアドレスおよびリードやライトの種類は、本発明の特徴を説明する上で必要ないので省略している。同じ記号は同じバンク番号または、同じローアドレス番号が蓄えられていることを示す。また、コマンドキュー３に蓄えられている内容は、バンクアドレス、ローアドレス、カラムアドレスそのものの値である必要は無く、これらの値を算出することができるシステム上のアドレス番号であっても良い。
【００４１】
まず、図２において、待機コマンドバッファ＃１以外にはシステムバス側から送信されたコマンドが蓄えられていない場合を説明する。その場合、バンクＢ０のローアドレスＲ１をオープンし、その後図示していないカラムアドレスに対しリードまたはライトを実行し、バンクＢ０をクローズする。これは、従来のインターリーブ方式と同じである。
【００４２】
次に、図２において、待機コマンドバッファ＃１〜＃８までにシステムバス側から送信されたコマンドが蓄えられている場合を説明する。従来のインターリーブ方式では、待機コマンドバッファ＃１、＃２、＃３が同じバンクの同じローアドレス（ページ）へのアクセスにも関わらず、同じローアドレスをオープンし、その後クローズするために効率が低下してしまう。本実施形態では、まず、待機コマンドバッファ＃１を実行する際に待機コマンドバッファ＃２が同じバンクの同じローアドレスへのアクセスか否か確認する。すると、待機コマンドバッファ＃２は同じバンクの同じローアドレスへのアクセスであるために、待機コマンドバッファ＃１ではページクローズを行わない（プリチャージコマンドを出力しない）。この際に待機コマンドバッファ＃２にページオープンされていることを示す情報を付加する。これにより待機コマンドバッファ＃２を実行する際にバンクアクティブコマンドを発行する必要が無いことを識別できる。同様に待機コマンドバッファ＃２の場合も直後に実行する待機コマンドバッファ＃３が同じバンクの同じローアドレスへのアクセスであるために、待機コマンドバッファ＃２ではページクローズを行わない。この際にも待機コマンドバッファ＃３にページオープンされていることを示す情報を付加する。
【００４３】
待機コマンドバッファ＃３の場合は、直後に実行する待機コマンドバッファ＃４が同じバンクの同じローアドレスへのアクセスでない。そこで、その後の待機コマンドバッファに対して順次同じバンクへのアクセスがあるか確認する。すると、待機コマンドバッファ＃７で同じバンクへのアクセスが検出される。そして、待機コマンドバッファ＃７が同じローアドレスへのアクセスかを確認し、同じローアドレスへのアクセスであることが検出されるので、待機コマンドバッファ＃３では、ページクローズを行わない。この際に待機コマンドバッファ＃７にページオープンされていることを示す情報を付加する。なお、待機コマンドバッファ＃７が同じバンクで異なるローアドレスへのアクセスであった場合は待機コマンドバッファ＃３実行時には、勿論ページクローズする。
【００４４】
このように上述した従来のインターリーブ方式や前後など連続する待機コマンドバッファのみを確認する方式よりもローアドレスをオープンするときに要する時間を省略することができ効率を上げることが可能となる。
【００４５】
本実施形態によれば、３以上の複数のメモリアクセス要求を蓄えられるように構成されたコマンドキュー３に蓄えられている全てのメモリアクセス要求に基づいて、メモリ制御部４の発行コマンド判定部５がメモリコマンドを判定しているので、３以上先のメモリアクセス要求におけるバンク及びローアドレスも考慮してメモリコマンドを発行することができるため、前後のメモリアクセス要求のみを考慮した場合よりも、ページオープン、ページクローズに関するメモリコマンドの発行を少なくすることができ、メモリ２へのアクセス効率を良くすることができる。
【００４６】
［第２実施形態]
次に、本発明の第２の実施形態を図３および図４を参照して説明する。なお、前述した第１の実施形態と同一部分には、同一符号を付して説明を省略する。図３は、本発明の第２の実施形態にかかるメモリ制御装置のブロック図である。図４は、図３に示したメモリ制御装置の動作を示したタイミングチャートである。
【００４７】
本実施形態では、第１の実施形態にバンクアクティブフラグ８を追加している。
【００４８】
バンクアクティブフラグ８は、メモリ２内のバンク数分設けられている。例えば、バンク数が８のメモリ２とＣＳ（チップセレクト）一本で接続されている場合は、必要なバンクアクティブフラグは８個であり、バンク数が８のメモリ２とＣＳ二本で接続されている場合は、必要なバンクアクティブフラグは１６個である。バンクアクティブフラグ８は、メモリコマンド制御ステートマシン７によってアクティブ、インアクティブの切り替えが行われる。即ち、メモリコマンド制御ステートマシン７が、要求受付後、最初に発行するコマンドがバンクアクティブコマンドの場合、該当するバンクに対応するバンクアクティブフラグをアクティブの状態に更新する。また、最初に発行するコマンドがプリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドの場合、該当するバンクに対応するバンクアクティブフラグをインアクティブの状態に更新する。
【００４９】
図３に示したメモリ制御装置１は、コマンドキュー３からの要求を受け付け、メモリ制御部４のメモリコマンド制御ステートマシン７を動作させて、メモリ２に対するメモリコマンドを発行する場合、発行コマンド判定部５は、コマンドキュー３に蓄えられている全ての内容とバンクアクティブフラグ８の状態から発行すべきコマンドを決定する。
【００５０】
次に図４を参照して本実施形態の動作説明である。図４では、コマンドキュー３に蓄えられている内容と、メモリコマンド発行順の対応について動作例を示している。図中ＡＣＴ  Ｂ０はバンクＢ０に対するアクティブコマンドを示し、Ｒｄ／Ｗｒ：リードコマンドまたはライトコマンドを示し、Ｒｄ／Ｗｒ＋Ｐｒｅ：プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドを示している。メモリコマンド発行順は時間軸情報に基づいているが、メモリコマンドが空きサイクル無く詰まっていることを示しているのではない。ＤＤＲ２−ＳＤＲＡＭやＤＤＲ３−ＳＤＲＡＭなどで必要な空きサイクルや待ち時間は省略している。
【００５１】
まず、待機コマンドバッファ＃１のコマンドに対応するメモリコマンドは、バンクＢ０のバンクアクティブコマンドの発行と、リードコマンドまたはライトコマンドとなる。最初に発行したメモリコマンドが、アクティブコマンドであるのは、バンクＢ０に対応するバンクアクティブフラグ８がインアクティブであったためであり、バンクアクティブコマンドの発行と同時にバンクＢ０に対応するバンクアクティブフラグ８をアクティブにする。
【００５２】
次に、待機コマンドバッファ＃２のコマンドに対応するメモリコマンドは、リードコマンドまたはライトコマンドとなる。これは、待機コマンドバッファ＃１と同じバンク、同じローアドレスに対するリードまたはライトであったためである。
【００５３】
次に、待機コマンドバッファ＃３のコマンドに対応するメモリコマンドは、リードコマンドまたはライトコマンドとなる。本実施形態では、現在の待機コマンド番号から最後（待機コマンドバッファ＃８まで、つまり、近い将来ではなく、遠い将来に起こることまで）の内容からも判断しているために、待機コマンドバッファ＃７で同じバンク、同じローアドレスに対するリードまたはライトを検出し、かつ、その間にページクローズする必要が無いことを確認することができるので、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドではなく、リードコマンドまたはライトコマンドを発行することが可能となる。
【００５４】
次に、待機コマンドバッファ＃４のコマンドに対応するメモリコマンドは、バンクＢ１のバンクアクティブコマンドの発行と、リードコマンドまたはライトコマンドとなる。これは、バンクＢ１に対応するバンクアクティブフラグ８がインアクティブであったためであり、バンクアクティブコマンドの発行と同時にバンクＢ１に対応するバンクアクティブフラグ８をアクティブにする。
【００５５】
次に、待機コマンドバッファ＃５のコマンドに対応するメモリコマンドは、バンクＢ２のバンクアクティブコマンドの発行と、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドとなる。これは、バンクＢ２に対応するバンクアクティブフラグ８がインアクティブであり、また、待機コマンドバッファ＃８に同じバンクで異なるローアドレスへのリードまたはライトが蓄えられていることが検出されるため、まず、バンクＢ２のバンクアクティブコマンドを発行し、続けて、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドを発行している。バンクＢ２に対応するバンクアクティブフラグ８は、バンクアクティブコマンドの発行と同時にアクティブとなり、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドの発行と同時にインアクティブとなる。
【００５６】
次に、待機コマンドバッファ＃６のコマンドに対応するメモリコマンドは、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドとなる。これは、待機コマンドバッファ＃８までに同じバンクで同じローアドレスへのリードまたはライトが蓄えられていないことが検出されるため、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドを発行している。バンクＢ１に対応するバンクアクティブフラグ８は、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドの発行と同時にインアクティブとなる。
【００５７】
次に、待機コマンドバッファ＃７のコマンドに対応するメモリコマンドは、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドとなる。これは、待機コマンドバッファ＃８までに同じバンクで同じローアドレスへのリードまたはライトが蓄えられていないことが検出されるため、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドを発行している。バンクＢ０に対応するバンクアクティブフラグ８は、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドの発行と同時にインアクティブとなる。
【００５８】
次に、待機コマンドバッファ＃８のコマンドに対応するメモリコマンドは、バンクＢ２のバンクアクティブコマンドの発行と、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドとなる。これは、バンクＢ２に対応するバンクアクティブフラグがインアクティブであり、また、待機コマンドバッファ＃８以降はコマンドが蓄えられていないため、まず、バンクＢ２のバンクアクティブコマンドを発行し、続けて、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドを発行している。バンクＢ２に対応するバンクアクティブフラグは、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドの発行と同時にインアクティブとなる。
【００５９】
図４では、待機コマンドバッファ＃８以降は、コマンドキュー３にコマンドが来なかったという例であり、コマンドキュー＃８に対応するメモリコマンド発行後は、全てのバンクアクティブフラグがインアクティブの状態になっている。
【００６０】
本実施形態によれば、メモリ２内の複数のバンクをアクティブにしたか否かを記憶するバンクアクティブフラグ８をアクセス可能なバンク数分備え、そのバンクアクティブフラグ８に基づいてメモリコマンドを決定しているので、アクティブになっているバンクと３以上先のメモリアクセス要求におけるバンク及びローアドレスも考慮してメモリコマンドを発行することができるため、例えば前後のメモリアクセス要求のみを考慮した場合よりも、バンクアクティブコマンドや、プリチャージコマンドなどのメモリコマンドの発行を少なくすることができ、メモリ２へのアクセス効率をよくすることができる。
【００６１】
つまり、次のキュー（待機コマンドバッファ）の内容でしか判断していないと、例えば待機コマンドバッファ＃３の場合はプリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドを発行してしまうが、本実施形態では、現在のキュー番号から４個先の待機コマンドバッファ＃７（近い将来ではなく、遠い将来に起こること）の内容からも判断できるために、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドではなく、リードコマンドまたはライトコマンドを発行することが可能である。また、次のキューの内容でしか判断していないと、上述したように、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドを発行してしまうので、待機コマンドバッファ＃７に対応するメモリコマンドは最初にバンクアクティブコマンドを発行しなければならなかった。本実施形態ではバンクアクティブコマンド発行に必要なサイクルを省くことができ、効率が向上する。さらに、次のキューの内容でしか判断していないと、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドを発行した場合、ページをクローズして次にオープンするまでにしかるべき待ち時間を消費した後に、バンクアクティブを発行しなければならないので、この待ち時間が効率を下げる原因にもなっている。本実施形態では、このような効率を下げる原因がないため、効率を上げることができる。
【００６２】
また、本実施形態では、コマンドキュー３による動作が終了した時点（待機コマンドバッファ＃８まで終了した時点）で、リードまたはライトに関与したバンクは全てクローズの状態になっている。そのため、コマンドキュー３による動作が終了した時点以降にリフレッシュコマンドを発行する場合、オープンしているバンクを全てクローズするためにプリチャージコマンドを発行する必要が無く、効率を下げることが無い。
【００６３】
また、従来のオープンバンク方式の場合、図４で例を示すと、待機コマンドバッファ＃８に対応するメモリコマンドは、それ以前に待機コマンドバッファ＃５でオープンしたバンクＢ１のローアドレスＲ３のページを一旦クローズさせるために、プリチャージコマンドの発行を最初にしなければならない。本実施形態では、プリチャージ発行とそれに対応する待ち時間が必要ないため効率を上げることができる。
【００６４】
さらに、従来のオープンバンク方式では、オープンしているバンクの情報にはローアドレスの情報が必要である。ローアドレスの情報はＤＤＲ３−ＳＤＲＡＭの場合、該当するバンク毎に１２〜１６ビット必要である。それに対し、本実施形態では該当するバンク毎に１ビットのバンクアクティブフラグ８のみで済む。
【００６５】
［第３実施形態］
次に、本発明の第３の実施形態を図５を参照して説明する。なお、前述した第１、第２の実施形態と同一部分には、同一符号を付して説明を省略する。図５は、本発明の第３の実施形態にかかるメモリ制御装置のブロック図である。
【００６６】
本実施形態は、コマンドキュー３からの要求を受け付ける際に、最初の待機コマンドバッファに対応する最初に発行するメモリコマンドを決定すると同時に、この後に要求される各待機コマンドバッファに蓄えられているコマンドに対応する最初に発行するメモリコマンドも決定し、その情報を各コマンドバッファの内容に追記する構成となっている。
【００６７】
例えば、待機コマンドバッファ＃１に対応する最初に発行するメモリコマンドであるバンクＢ０のバンクアクティブコマンドを決定すると同時に、待機コマンドバッファ＃２〜＃８までに蓄えられているコマンドに対応する最初に発行するメモリコマンドも決定する。つまり、待機コマンドバッファ＃２はリードコマンドまたはライトコマンド、待機コマンドバッファ＃３はリードコマンドまたはライトコマンド、待機コマンドバッファ＃４はバンクＢ１のバンクアクティブコマンド、待機コマンドバッファ＃５はバンクＢ２のバンクアクティブコマンド、待機コマンドバッファ＃６はプリチャージ付きリードコマンドまたはプリチャージ付きライトコマンド、待機コマンドバッファ＃７はプリチャージ付きリードコマンドまたはプリチャージ付きライトコマンド、待機コマンドバッファ＃８はバンクＢ２のバンクアクティブコマンドと、それぞれ決定してその情報を各コマンドバッファの内容に追記している。各メモリコマンドは全ての待機コマンドバッファのコマンドを参照して決定している。すなわち、予め効率の良いメモリコマンドの発行順を決めておく。
【００６８】
本実施形態に対応する動作は、図４のバンクアクティブフラグ８のタイミング図を削除したものと全く同様である。また、本実施形態による効果も第２の実施形態と同様であるとともに、さらには、バンクアクティブフラグ８が不要となるという効果がある。
【００６９】
［第４実施形態］
次に、本発明の第４の実施形態を図６を参照して説明する。なお、前述した第１乃至第３の実施形態と同一部分には、同一符号を付して説明を省略する。図６は、本発明の第４の実施形態にかかるメモリ制御装置のブロック図である。なお、図中のWrite with APはプリチャージ付きライトコマンドを示し、Read with APはプリチャージ付きリードコマンドを示している。
【００７０】
本実施形態は、第２の実施形態（図３）に対して、リフレッシュ制御部としてのリフレッシュ制御回路９が追加され、要求受付制御部６が調停部としての要求調停制御部６´に変更されている。
【００７１】
リフレッシュ制御回路９は、第一の要求信号としてのメモリ２へのリフレッシュ要求信号（Ｒｅｑ）を予め定めた間隔で要求調停制御部６´に対して出力するとともに、要求調停制御部６´からの要求受付信号（Ａｃｋ）が入力される。また、リフレッシュ制御回路９は、発行コマンド判定部５に対して、リフレッシュ要求信号（Ｒｅｑ）よりも数サイクル前に、第二の要求信号としての第２リフレッシュ要求信号（Ｐｒｅ．Ｒｅｑ）を出力する。この数サイクルは、使用するメモリ２のリフレッシュコマンド発行条件に合わせて適宜設定すれば良い。
【００７２】
要求調停制御部６´は、コマンドキュー３からのメモリへのアクセスリクエスト信号（Ｒｅｑ）と、リフレッシュ制御回路９からのメモリ２へのリフレッシュ要求信号（Ｒｅｑ）とに対して、調停を行い、受け付けた方のブロックに対してリクエストを受け付けたことを示す信号（Ａｃｋ）を返して、発行コマンド判定部５から入力された発行すべきコマンドまたはリフレッシュコマンドをメモリコマンド制御ステートマシン７へ出力する。
【００７３】
上述した第１〜第３の実施形態において、コマンドキュー３にコマンド（メモリアクセス要求）が埋まっている状態で、リフレッシュを実行しようとすれば、まずプリチャージコマンドを発行して、しかるべき待ち時間後にリフレッシュコマンドを発行することが必要になる可能性がある。このような場合に対応するために本実施形態では、通常のリフレッシュ要求信号（Ｒｅｑ）に加え、この信号より数サイクル前にアクティブになる第２リフレッシュ要求信号（Ｐｒｅ．Ｒｅｑ）を発行コマンド判定部５に出力する。この信号がアクティブの場合は、リードコマンドまたはライトコマンドではなく、プリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドを発行するように制御し、リフレッシュ要求受付時には全てのページがクローズした状態にしている。即ち、メモリ制御部が、第二の要求信号に基づいてメモリコマンドを決定するように構成されている。
【００７４】
本実施形態によれば、フレッシュ制御回路９が、リフレッシュ要求信号よりも数サイクル前に発行コマンド判定部５に対してメモリリフレッシュの要求を行う第２要求信号を出力して、発行コマンド判定部５が、第２要求信号に基づいてメモリコマンドを決定するので、リフレッシュの際に、予めプリチャージ付きリードコマンドまたはプリチャージ付きライトコマンドなどを発行してメモリ２に対してリフレッシュコマンドを発行できる状態にするため、リフレッシュにかかる待ち時間を短縮することができる。
【００７５】
［第５実施形態］
次に、本発明の第５の実施形態を図７を参照して説明する。なお、前述した第１乃至第４の実施形態と同一部分には、同一符号を付して説明を省略する。図７は、本発明の第５の実施形態にかかるメモリ制御装置のブロック図である。
【００７６】
本実施形態は、第４の実施形態のリフレッシュ制御回路９に代えてバスインターコネクト１２からのコマンド（メモリアクセス要求）のうちキャッシュアクセスなどの優先順位が高いアクセスに関するコマンドが入力される第二のコマンドキューとしてのコマンドバッファ１０を設け、さらに、バスインターコネクト１２からのコマンドを分割するコマンド分割部としてのコマンド分割回路１１が設けられている。バスインターコネクト１２には図示しないＣＰＵやＤＭＡなどが接続されている。
【００７７】
コマンドバッファ１０は、ＣＰＵのキャッシュアクセスなどのように、動作パフォーマンスを落とさないために、最優先でメモリ２との動作が行われる必要があるコマンドが入力される。コマンドバッファ１０は、バスインターコネクト１２からコマンドが書き込まれると、アクセスリクエスト信号（Ｒｅｑ）を要求調停制御部６´に対して出力するとともに、要求調停制御部６´からの要求受付信号（Ａｃｋ）が入力される。
【００７８】
コマンド分割回路１１は、バスインターコネクト１２から入力されるコマンドを複数に分割してコマンドキュー３に出力する。バスインターコネクト１２上のコマンドは、アドレスとバースト長を定義したものがメモリ制御装置１に入力される。例えば、バスが１２８ビットでバースト長が８の場合、１２８バイト分のメモリアクセスを示す。接続されているメモリ２が、バスが３２ビットでリードコマンドまたはライトコマンドでアクセス可能なサイズが３２バイトの場合、コマンド分割回路１１で、１２８バイトのコマンドを、３２バイト単位の４個のコマンド（メモリアクセス要求）に分割する。
【００７９】
本実施形態によれば、コマンドキュー３以外にコマンドバッファ１０を備え、要求調停制御部６´が、コマンドバッファ１０からの要求を優先してメモリコマンドを決定しているので、ＣＰＵのキャッシュアクセスなどの優先順位が高いアクセスの場合でも、ＣＰＵのパフォーマンスを落とさずに、最優先でメモリアクセスを行うことができる。
【００８０】
また、コマンドキュー３の前段に外部からのメモリアクセス要求を分割するコマンド分割回路１１が設けられているので、コマンドキュー３に接続されるバスインターコネクト１２のバス幅で入力されるコマンドをメモリ２のバス幅とバースト長に合わせて適切な数に分割することができ、バスインターコネクト１２側でメモリ２に合わせたメモリアクセス要求を行う必要が無くなる。
【００８１】
なお、コマンド分割回路１１は、コマンドキュー３だけでなく、コマンドバッファ１０の前段に設けてもよい。この場合は、ＣＰＵのキャッシュアクセスなどの優先順位が高いアクセスの場合でもメモリ２のバス幅とバースト長に合わせて適切な数に分割することができ、バスインターコネクト１２側でメモリ２に合わせたメモリアクセス要求を行う必要が無くなる。
【００８２】
なお、本発明は上記実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【符号の説明】
【００８３】
１          メモリ制御装置
２          メモリ
３          コマンドキュー
４          メモリ制御部
６´        要求調停制御部（調停部）
８          バンクアクティブフラグ
９          リフレッシュ制御回路（リフレッシュ制御部）
１０        コマンドバッファ（第二のコマンドキュー）
１１        コマンド分割回路（コマンド分割部）
【先行技術文献】
【特許文献】
【００８４】
【特許文献１】特開２００４−３１０３９４号公報
【特許文献２】特表２００２−５３０７４３号公報
【特許文献３】特開２００６−１６４０９９号公報
【特許文献４】特開２００７−２４９８３７号公報
【図１】
0005428687.tif 000002
【図２】
0005428687.tif 000003
【図３】
0005428687.tif 000004
【図４】
0005428687.tif 000005
【図５】
0005428687.tif 000006
【図６】
0005428687.tif 000007
【図７】
0005428687.tif 000008