(57)【要約】【課題】メモリへの書込みを高速化することが可能なメモリコントローラ及び書込み制御方法を提供する。【解決手段】メモリコントローラ２００は、ＣＰＵ１００などの外部から入力されたライトデータｗｄａｔａを一時保持する複数のバッファ２２１ａ〜２２４ａと、複数のバッファ２２１ａ〜２２４ａ全てにライトデータｗｄａｔａが格納される前に、外部から入力されたメモリ３００へのライトアクセス（コマンドｗｒｉｔｅ、アドレスａｄｄｒ）に基づいてメモリ３００における所定記憶領域のＲｏｗアドレスをアクティブにするためのコマンドＡＣＴを発行するコマンド制御部２１０とを有する。【選択図】図３
2007094647.tif 000002
【特許請求の範囲】
【請求項１】
外部から入力されたデータを一時保持する複数のバッファと、
前記複数のバッファ全てにデータが格納される前に、外部から入力されたメモリへの書込み要求に基づいて当該メモリにおける所定記憶領域のローアドレスをアクティブにするための第１コマンドを発行する制御部と
を有することを特徴とするメモリコントローラ。
【請求項２】
前記制御部は、前記複数のバッファに最初にデータが格納されるより前のタイミングで前記第１コマンドを発行することを特徴とする請求項１記載のメモリコントローラ。
【請求項３】
前記複数のバッファに保持されたデータの数を管理するカウンタをさらに有し、
前記制御部は、前記カウンタの値に基づいて前記複数のバッファに格納されるデータが最初のデータであるか否かを判定することを特徴とする請求項２記載のメモリコントローラ。
【請求項４】
前記制御部は、前記バッファの数と同数のデータが前記複数のバッファに書き込まれた場合、前記所定記憶領域のカラムアドレスをアクティブにするための第２コマンドを発行することを特徴とする請求項１から３の何れか１項に記載のメモリコントローラ。
【請求項５】
前記第１コマンドを発行してから前記第２コマンドを発行するまでの期間、前記メモリの動作を停止させるクロック制御部をさらに有することを特徴とする請求項４記載のメモリコントローラ。
【請求項６】
外部からメモリへの書込み要求を受信するステップと、
外部から入力されたデータを複数のバッファに一時保持するステップと、
前記複数のバッファ全てにデータが格納される前に、前記書き込み要求に基づいて前記メモリにおける所定記憶領域のローアドレスをアクティブにするための第１コマンドを発行するステップと
を有することを特徴とする書込み制御方法。
【請求項７】
前記第１コマンドは、前記複数のバッファに最初にデータが格納されるより前のタイミングで発行されることを特徴とする請求項６記載の書込み制御方法。
【請求項８】
前記複数のバッファに保持されたデータの数を管理するステップと、
前記複数のバッファに保持されたデータの数に基づいて前記複数のバッファに格納されるデータが最初のデータであるか否かを判定するステップとをさらに有し、
前記第１コマンドは、前記複数のバッファに格納されるデータが最初のデータであると判定された場合、発行されることを特徴とする請求項７記載の書込み制御方法。
【請求項９】
前記バッファの数と同数のデータが前記複数のバッファに書き込まれた場合、前記所定記憶領域のカラムアドレスをアクティブにするための第２コマンドを発行するステップをさらに有することを特徴とする請求項６から８の何れか１項に記載の書込み制御方法。
【請求項１０】
前記第１コマンドを発行してから前記第２コマンドを発行するまでの期間、前記メモリの動作を停止させるステップをさらに有することを特徴とする請求項４記載の書込み制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及び書込み制御方法に関し、特にライトバッファを有するメモリコントローラ及びその書込み制御方法に関する。
【背景技術】
【０００２】
従来技術によるメモリコントローラ９００及びその周辺部の構成を図１に示す。図１に示すように、メモリコントローラ９００は、ｗｂｕｆｆ０からｗｂｕｆｆＮの合計Ｎ（Ｎは正の整数）段のライトバッファ９２０を有し、システムバス１０１を介してＣＰＵ１００と接続される。このシステムバス１０１は、書込み対象のデータ（以下、ライトデータという）ｗｄａｔａを伝達するための‘wdata’と、ＣＰＵ１００からのアクセス先のアドレスａｄｄｒを伝達するための‘add’と、ＣＰＵ１００からのアクセスが書込みであること（以下、ライトアクセスという）を示すコマンドｗｒｉｔｅを伝達するための‘write’と、ライトアクセスに対する準備ができたことを示す応答信号ｒｅａｄｙを伝達するための‘ready’とを含む。
【０００３】
また、メモリコントローラ９００は、システムバスを介してメモリ３００と接続される。このシステムバスは、ＣＰＵ１００から受信したアドレスａｄｄｒをデコードすることで生成したローアドレス（以下、Ｒｏｗアドレスという）及びカラムアドレス（Ｃｏｌｕｍｎアドレスという）を伝達するための‘maddr’と、ライトバッファ９２０から読み出したライトデータを伝達するための‘mdata’と、書込み対象のＲｏｗアドレスをアクティブにするためのコマンドＡＣＴ及び同じく書込み対象のｃｏｌｕｍｎアドレスをアクティブにするためのコマンドＷＲＩＴＥを伝達するための‘command’とを含む。
【０００４】
次に、図１に示すメモリコントローラ９００の動作を、図２に示すタイミングチャートを用いて説明する。なお、図２では、簡略化のため、メモリコントローラ９００におけるライトバッファ９２０を４段（Ｎ＝４）とする。また、図２では、ＣＰＵ１００がアドレスａｄｄｒ＝Ａから連続する４つのアドレス（Ａ〜Ａ＋３）にライトアクセスする際の動作を示す。さらに、図２では、ＲＡＳ−ＣＡＳ遅延が２サイクルである場合を示す。
【０００５】
例えば図２に示すタイミングＴ２でＣＰＵ１００からライトアクセスとしてコマンドｗｒｉｔｅ＝１とアドレスａｄｄｒ＝Ａとが出力されると、メモリコントローラ９００は、これらを入力し、同じタイミングＴ２で応答信号ｒｅａｄｙ＝１を生成して、これをＣＰＵ１００へ返す。次に、メモリコントローラ９００は、応答信号ｒｅａｄｙ＝１を受けたＣＰＵ１００からタイミングＴ３で出力されたライトデータｗｄａｔａ＝ＤをタイミングＴ４で入力し、これを先ず１段目のライトバッファ９２０（ｗｂｕｆｆ０）に格納する。その後、メモリコントローラ９００は、タイミングＴ３からＴ５でＣＰＵ１００からそれぞれ出力されたライトアクセス（コマンドｗｒｉｔｅ＝１、アドレスａｄｄｒ＝Ａ＋１〜Ａ＋３）に基づいて、タイミングＴ４からＴ６でＣＰＵ１００からそれぞれ出力されたライトデータｗｄａｔａ＝Ｄ＋１，Ｄ＋２，Ｄ＋３を順次タイミングＴ５からＴ７で入力し、これらをライトバッファ９２０（ｗｂｕｆｆ１〜ｗｂｕｆｆ３）にそれぞれ格納する。
【０００６】
また、メモリコントローラ９００は、図２におけるタイミングＴ５で４つ目のライトアクセス（コマンドｗｒｉｔｅ＝１、アドレスａｄｄｒ＝Ａ＋３）がＣＰＵ１００から出力されると、これを受けたメモリコントローラ９００は、ライトバッファ９２０がフル（ｆｕｌｌ）になることを認識する。ライトバッファ９２０がフルになることを認識したメモリコントローラ９００は、コマンドＡＣＴを生成すると共に、アドレスａｄｄｒ＝Ａ〜Ａ＋３をデコードすることでＲｏｗアドレスを生成し、これらをタイミングＴ６でメモリ３００へ発行する。その後、ＲＡＳ−ＣＡＳ遅延を経た後、メモリコントローラ９００は、生成したコマンドＷＲＩＴＥと、アドレスａｄｄｒ＝Ａ〜Ａ＋３をデコードすることで生成したＣｏｌｕｍｎアドレスとを、タイミングＴ８でメモリ３００へ発行することで、書込み対象のアドレスを特定すると共に、１段目のライトバッファ９２０（ｗｂｕｆｆ０）に格納されているライトデータｗｄａｔａ＝Ｄをライトデータｍｄａｔａとしてメモリ３００へ供給する。これにより、最初のライトデータｗｄａｔａ＝Ｄがメモリ３００に書き込まれる。その後、タイミングＴ９〜Ｔ１１でライトバッファ９２０（ｗｂｕｆｆ１〜ｗｂｕｆｆ３）のライトデータｗｄａｔａ＝Ｄ＋１〜Ｄ＋３を順次メモリ３００へ供給することで、これらのデータをメモリ３００に書き込む。これにより、メモリ３００への書込み動作が終了する。
【０００７】
また、例えば以下に示す特許文献１には、例えば同じＲｏｗアドレスへ連続してデータを書き込む際に、２つ目以降の書込み動作を高速化するための技術が開示されている。
【特許文献１】特開平５−１２１２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記した従来技術では、メモリコントローラのライトバッファに保持されているデータをメモリへ書き込む際、メモリコントローラは、ライトバッファからメモリへ書き込む条件が成立した後、コマンドＡＣＴを発行し、その後、ＲＡＳ−ＣＡＳ遅延の後、コマンドＷＲＩＴＥを発行することで、実際のライトアクセスを実行する。このため、ライトバッファからメモリへ書き込む条件が成立した後、コマンドＷＲＩＴＥを発行するまでの間に数サイクル必要とし、高速な書込みができないという問題があった。
【０００９】
なお、上記した特許文献１が開示するところの技術は、連続するアドレスへ連続してデータを書き込む場合、高速アクセスモードを利用することで２つ目以降のデータの書込み動作を高速化するための技術であるため、本発明のように、ライトバッファからメモリへの書込みを高速化することは解決できていない。
【００１０】
そこで本発明は、上記の問題に鑑みてなされたものであり、メモリへの書込みを高速化することが可能なメモリコントローラ及び書込み制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
かかる目的を達成するために、本発明によるメモリコントローラは、外部から入力されたデータを一時保持する複数のバッファと、複数のバッファ全てにデータが格納される前に、外部から入力されたメモリへの書込み要求に基づいてメモリにおける所定記憶領域のローアドレスをアクティブにするための第１コマンドを発行する制御部とを有して構成される。
【００１２】
従来では、複数のバッファ全てにデータを格納した後に、ＲｏｗアドレスやコマンドＡＣＴなどの第１コマンドを発行するように構成されていたため、ＲＡＳ−ＣＡＳ遅延の分、書込みのタイミングが遅れてしまうが、本発明のように、複数のバッファ全てにデータが格納される前に、先行してＲｏｗアドレスやコマンドＡＣＴなどの第１コマンドをメモリへ発行するように構成することで、ＲＡＳ−ＣＡＳ遅延に左右されずに書込みのタイミングを早めることができる。これにより、高速な書込み動作が可能となる。
【００１３】
また、本発明による書込み制御方法は、外部からメモリへの書込み要求を受信するステップと、外部から入力されたデータを複数のバッファに一時保持するステップと、複数のバッファ全てにデータが格納される前に、書き込み要求に基づいてメモリにおける所定記憶領域のローアドレスをアクティブにするための第１コマンドを発行するステップとを有して構成される。
【００１４】
上述したように、複数のバッファ全てにデータが格納される前に、先行してＲｏｗアドレスやコマンドＡＣＴなどの第１コマンドをメモリへ発行するように構成することで、ＲＡＳ−ＣＡＳ遅延に左右されずに書込みのタイミングを早めることができる。これにより、高速な書込み動作が可能となる。
【発明の効果】
【００１５】
本発明によれば、メモリへの書込みを高速化することが可能なメモリコントローラ及び書込み制御方法を実現することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明を実施するための最良の形態を図面と共に詳細に説明する。
【実施例１】
【００１７】
まず、本発明による実施例１について図面を用いて詳細に説明する。本実施例では、ライトバッファからライトデータを読み出してメモリへ書き込む前に、ＲｏｗアドレスをアクティブにするためのコマンドＡＣＴ（第１コマンド）を先行して発行することで、メモリへの書込みを高速化するように構成されたメモリコントローラを例に挙げて説明する。なお、本実施例では、簡略化のため、メモリコントローラにおけるライトバッファを４段（Ｎ＝４）とする。また、本実施例では、ＣＰＵがアドレスａｄｄｒ＝Ａから連続する４つのアドレス（Ａ〜Ａ＋３）にライトアクセスする際の動作を示す。さらに、本実施例では、ＲＡＳ−ＣＡＳ遅延が２サイクルである場合を示す。
【００１８】
・構成
図３は、本実施例によるメモリコントローラ２００及びその周辺部の構成を示すブロック図である。図３に示すように、メモリコントローラ２００は、コマンド制御部２１０と、ライトバッファ２２０と、バッファカウンタ２３０とを有し、システムバス１０１を介してＣＰＵ１００と接続される。このシステムバス１０１は、ライトデータｗｄａｔａを伝達するための‘wdata’と、ＣＰＵ１００からのアクセス先のアドレスａｄｄｒを伝達するための‘add’と、ＣＰＵ１００からのアクセスがライトアクセスであることを示すコマンドｗｒｉｔｅを伝達するための‘write’と、ライトアクセスに対する準備ができたことを示す応答信号ｒｅａｄｙを伝達するための‘ready’とを含む。なお、システムバス１０１を介する信号の送受信は、システムクロックに基づいて行われる。また、メモリコントローラ２００も、システムクロックに基づいて動作する。
【００１９】
また、メモリコントローラ２００は、システムバスを介してメモリ３００と接続される。このシステムバスは、ＣＰＵ１００から受信したアドレスａｄｄｒをデコードすることで生成したＲｏｗアドレス及びＣｏｌｕｍｎアドレスを伝達するための‘maddr’と、ライトバッファ２２０から読み出したライトデータを伝達するための‘mdata’と、書込み対象のＲｏｗアドレスをアクティブにするためのコマンドＡＣＴ及び同じく書込み対象のｃｏｌｕｍｎアドレスをアクティブにするためのコマンドＷＲＩＴＥ（第２コマンド）を伝達するための‘command’とを含む。
【００２０】
上記構成におけるコマンド制御部２１０は、ＣＰＵ１００からのライトアクセスに対して、メモリ３００への書込みを制御するための各種コマンド（コマンドＡＣＴ、ＷＲＩＴＥ等）及びアドレス（Ｒｏｗアドレス、Ｃｏｌｕｍｎアドレス等）を生成するための構成である。このコマンド制御部２１０は、図４に示すような、３つの入力と１つの出力とを有する論理積回路２１１を有する。論理積回路２１１の１つの入力には、ＣＰＵ１００から出力されたアドレスａｄｄｒが有効の状態であるか否かが入力される。なお、アドレスａｄｄｒが有効である場合、例えば‘１’が入力され、無効である場合、‘０’が入力される。また、論理積回路２１１の他の１つの入力には、コマンドｗｒｉｔｅが入力される。コマンドｗｒｉｔｅは有効である場合を‘１’とし、無効である場合を‘０’とする。さらに、論理積回路２１１の残りの１つの入力には、応答信号ｒｅａｄｙが入力される。応答信号ｒｅａｄｙは有効である場合を‘１’とし、無効である場合を‘０’とする。したがって、論理積回路２１１は、アドレスａｄｄｒとコマンドｗｒｉｔｅと応答信号ｒｅａｄｙとが全て有効（‘１’）である場合のみ、‘１’を示すライトアクセス信号ｖａｌｉｄｗを出力する。なお、この他の状態では、論理積回路２１１は‘０’を示すライトアクセス信号ｖａｌｉｄｗを出力する。
【００２１】
以上のような論理積回路２１１を有するコマンド制御部２１０は、ライトアクセス信号ｖａｌｉｄｗが‘１’であって、後述するバッファカウンタ２３０のカウンタ値が‘０’である場合、コマンドＡＣＴを出力し、バッファカウンタ２３０のカウンタ値がライトバッファ２２０の段数と同一の値（本説明では‘４’）である場合、コマンドＷＲＩＴＥを出力する。なお、この他の状態では、コマンド制御部２１０はアイドリング状態となり、コマンドを発行しない。
【００２２】
また、上記構成におけるバッファカウンタ２３０は、ライトバッファ２２０に格納されたライトデータｗｄａｔａの数を管理するためのカウンタである。図５に、バッファカウンタ２３０のカウンタ値が遷移する順序を示す。ここで、例えばバッファカウンタ２３０の初期値が‘０’であるとすると、バッファカウンタ２３０のカウンタ値は、図５における（１）から（４）に示すように、‘０’から‘４’まで１ずつインクリメントされた後、今度は、図５における（５）から（８）に示すように、‘４’から‘０’まで１ずつデクリメントされる。図５において、（１）から（４）に示すカウントアップは、上述したコマンド制御部２１０から‘１’を示すライトアクセス信号ｖａｌｉｄｗが出力される度に行われる。なお、アドレスａｄｄｒとコマンドｗｒｉｔｅと応答信号ｒｅａｄｙとは、１システムクロックごとに出力される。したがって、ライトアクセス信号ｖａｌｉｄｗはシステムクロックごとにコマンド制御部２１０から出力される。また、図５において、（５）から（８）に示すカウントダウンは、上述したコマンド制御部２１０から出力されるライトアクセス信号ｖａｌｉｄｗが‘０’を示す際に、システムクロックに従って行われる。
【００２３】
このように、本実施例によるバッファカウンタ２３０は、ＣＰＵ１００からのライトアクセスを示すライトアクセス信号ｖａｌｉｄｗ＝１を受ける度にカウントアップし、また、ライトバッファ２２０がフルの状態になると、システムクロックに基づいて‘０’までカウントダウンするように構成されている。なお、本例では、４段構成のライトバッファ２２０を用いているため、これがフルの状態になる際、バッファカウンタ２３０のカウンタ値は‘４’となる。したがって、バッファカウンタ２３０は、カウンタ値が‘４’になると、以降、‘０’になるまでカウンタ値をデクリメントする。
【００２４】
また、本実施例によるバッファカウンタ２３０は、メモリ３００へ各種コマンドを発行するタイミングも管理する。バッファカウンタ２３０は、カウンタ値が‘０’から‘１’へ遷移する際、ＣＰＵ１００から入力されたアドレスａｄｄｒ及びコマンドｗｒｉｔｅに基づいてＲｏｗアドレスとコマンドＡＣＴとを発行し、これをメモリ３００へ入力する。これにより、メモリ３００が書込みに対してスタンバイ状態となる。また、バッファカウンタ２３０は、カウンタ値が‘４’から‘３’へ遷移する際、同じくＣＰＵ１００から入力されたアドレスａｄｄｒ及びコマンドｗｒｉｔｅに基づいてＣｏｌｕｍｎアドレスとコマンドＷＲＩＴＥとを発行し、これをメモリ３００へ入力する。これにより、メモリ３００へのライトデータｗｄａｔａの書込みが開始される。なお、‘０’から‘１’への遷移及び‘４’から‘３’への遷移の際以外では、バッファカウンタ２３０はアイドリング状態となり、コマンドを発行しない。
【００２５】
また、上記構成におけるライトバッファ２２０は、ＣＰＵ１００からメモリ３００へ書き込むライトデータｗｄａｔａを一時保持するための構成である。図５に、ライトバッファ２２０の回路構成を示す。図５に示すように、ライトバッファ２２０は、４つのバッファ２２１ａ〜２２４ａ（ｗｂｕｆｆ０〜ｗｂｕｆｆ４）と、各バッファ２２１ａ〜２２４ａの入力段に設けられたマルチプレクサ２２１ｂ〜２２４ｂとを有する。
【００２６】
この構成において、１段目のバッファ２２１ａ（ｗｂｕｆｆ０）の入力段に設けられたマルチプレクサ２２１ｂは、「１」から「３」の３つの入力と１つの出力とを有する。３つの入力のうち「１」には、ＣＰＵ１００から出力されたライトデータｗｄａｔａが入力される。また、「２」には、２段目のバッファ２２２ａ（ｗｂｕｆｆ１）の出力が入力される。さらに、「３」には、１段目のバッファ２２１ａ（ｗｂｕｆｆ０）の出力がフィードバックされる。
【００２７】
このマルチプレクサ２２１ｂは、コマンド制御部２１０から出力されたライトアクセス信号ｖａｌｉｄｗが‘１’であってバッファカウンタ２３０のカウンタ値が‘１’である場合、入力「１」に入力されたライトデータｗｄａｔａを１段目のバッファ２２１ａ（ｗｂｕｆｆ０）に入力する。これにより、１段目のバッファ２２１ａ（ｗｂｕｆｆ０）にはＣＰＵ１００から出力されたライトデータｗｄａｔａ＝Ｄが格納される。また、入力「３」に１段目のバッファ２２１ａ（ｗｂｕｆｆ０）から出力されたライトデータｗｄａｔａがフィードバックされた場合、マルチプレクサ２２１ｂは、１段目のバッファ２２１ａ（ｗｂｕｆｆ０）に格納されているライトデータｗｄａｔａを消去する。なお、１段目のバッファ２２１ａ（ｗｂｕｆｆ０）から出力されたライトデータｗｄａｔａは、メモリ３００に書き込まれる。さらに、入力「２」に２段目のバッファ２２２ａ（ｗｂｕｆｆ１）からライトデータｗｄａｔａが入力された場合、マルチプレクサ２２１ｂは、２段目のバッファ２２２ａ（ｗｂｕｆｆ１）から入力されたライトデータｗｄａｔａを１段目のバッファ２２１ａ（ｗｂｕｆｆ０）に入力する。これにより、２段目のバッファ２２２ａ（ｗｂｕｆｆ１）に格納されていたライトデータｗｄａｔａが１段目のバッファ２２１ａ（ｗｂｕｆｆ０）に移し替られる。
【００２８】
また、２段目のバッファ２２２ａ（ｗｂｕｆｆ１）の入力段に設けられたマルチプレクサ２２２ｂは、マルチプレクサ２２１ｂと同様に、「１」から「３」の３つの入力と１つの出力とを有する。３つの入力のうち「１」には、ＣＰＵ１００から出力されたライトデータｗｄａｔａが入力される。また、「２」には、３段目のバッファ２２３ａ（ｗｂｕｆｆ２）の出力が入力される。さらに、「３」には、２段目のバッファ２２２ａ（ｗｂｕｆｆ１）の出力がフィードバックされる。
【００２９】
このマルチプレクサ２２２ｂは、コマンド制御部２１０から出力されたライトアクセス信号ｖａｌｉｄｗが‘１’であってバッファカウンタ２３０のカウンタ値が‘２’である場合、入力「１」に入力されたライトデータｗｄａｔａを２段目のバッファ２２２ａ（ｗｂｕｆｆ１）に入力する。これにより、２段目のバッファ２２２ａ（ｗｂｕｆｆ１）にはＣＰＵ１００から出力されたライトデータｗｄａｔａ＝Ｄ＋１が格納される。また、入力「３」に２段目のバッファ２２２ａ（ｗｂｕｆｆ１）から出力されたライトデータｗｄａｔａがフィードバックされた場合、マルチプレクサ２２２ｂは、２段目のバッファ２２２ａ（ｗｂｕｆｆ１）に格納されているライトデータｗｄａｔａを消去する。なお、２段目のバッファ２２２ａ（ｗｂｕｆｆ１）から出力されたライトデータｗｄａｔａは、マルチプレクサ２２１ｂを介して１段目のバッファ２２１ａ（ｗｂｕｆｆ０）の入力段に格納される。さらに、入力「２」に３段目のバッファ２２３ａ（ｗｂｕｆｆ２）からライトデータｗｄａｔａが入力された場合、マルチプレクサ２２２ｂは、３段目のバッファ２２３ａ（ｗｂｕｆｆ２）から入力されたライトデータｗｄａｔａを２段目のバッファ２２２ａ（ｗｂｕｆｆ１）に入力する。これにより、３段目のバッファ２２３ａ（ｗｂｕｆｆ２）に格納されていたライトデータｗｄａｔａが２段目のバッファ２２２ａ（ｗｂｕｆｆ１）に移し替られる。
【００３０】
さらに、３段目のバッファ２２３ａ（ｗｂｕｆｆ２）の入力に設けられたマルチプレクサ２２３ｂは、マルチプレクサ２２１ｂ、２２２ｂと同様に、「１」から「３」の３つの入力と１つの出力とを有する。３つの入力のうち「１」には、ＣＰＵ１００から出力されたライトデータｗｄａｔａが入力される。また、「３」には、４段目のバッファ２２４ａ（ｗｂｕｆｆ３）の出力が入力される。さらに、「３」には、３段目のバッファ２２３ａ（ｗｂｕｆｆ２）の出力がフィードバックされる。
【００３１】
このマルチプレクサ２２３ｂは、コマンド制御部２１０から出力されたライトアクセス信号ｖａｌｉｄｗが‘１’であってバッファカウンタ２３０のカウンタ値が‘３’である場合、入力「１」に入力されたライトデータｗｄａｔａを３段目のバッファ２２３ａ（ｗｂｕｆｆ２）に入力する。これにより、３段目のバッファ２２３ａ（ｗｂｕｆｆ２）にはＣＰＵ１００から出力されたライトデータｗｄａｔａ＝Ｄ＋２が格納される。また、入力「３」に３段目のバッファ２２３ａ（ｗｂｕｆｆ２）から出力されたライトデータｗｄａｔａがフィードバックされた場合、マルチプレクサ２２３ｂは、３段目のバッファ２２３ａ（ｗｂｕｆｆ２）に格納されているライトデータｗｄａｔａを消去する。なお、３段目のバッファ２２３ａ（ｗｂｕｆｆ２）から出力されたライトデータｗｄａｔａは、マルチプレクサ２２２ｂを介して２段目のバッファ２２２ａ（ｗｂｕｆｆ１）の入力段に格納される。さらに、入力「２」に４段目のバッファ２２４ａ（ｗｂｕｆｆ３）からライトデータｗｄａｔａが入力された場合、マルチプレクサ２２３ｂは、４段目のバッファ２２４ａ（ｗｂｕｆｆ３）から入力されたライトデータｗｄａｔａを３段目のバッファ２２３ａ（ｗｂｕｆｆ２）に入力する。これにより、４段目のバッファ２２４ａ（ｗｂｕｆｆ３）に格納されていたライトデータｗｄａｔａが３段目のバッファ２２３ａ（ｗｂｕｆｆ２）に移し替られる。
【００３２】
さらにまた、４段目のバッファ２２４ａ（ｗｂｕｆｆ３）の入力に設けられたマルチプレクサ２２４ｂは、「０」及び「１」の２つの入力と１つの出力とを有する。２つの入力のうち「１」には、ＣＰＵ１００から出力されたライトデータｗｄａｔａが入力され、また、「０」には、バッファ２２４ａ（ｗｂｕｆｆ３）の出力がフィードバックされるように接続されている。ただし、本実施例では、この４段目のバッファ２２４ａ（ｗｂｕｆｆ３）及びマルチプレクサ２２４ｂは実質的に使用していない構成である。このため、省略してもよい。なお、ＣＰＵ１００から出力された４番目のライトデータｗｄａｔａ＝Ｄ＋３（アドレスａｄｄｒ＝Ａ＋３）は、ライトバッファ２２０における３段目のバッファ２２３ａ（ｗｂｕｆｆ２）に最初に格納される。
【００３３】
・動作
次に、本実施例によるメモリコントローラ２００の動作を図面と共に詳細に説明する。図７は、メモリコントローラ２００の動作を示すタイミングチャートである。なお、図７では、簡略化のため、メモリコントローラ２００におけるライトバッファ２２０を４段（Ｎ＝４）とする。また、図７では、ＣＰＵ１００がアドレスａｄｄｒ＝Ａから連続する４つのアドレス（Ａ〜Ａ＋３）にライトアクセスする際の動作を示す。さらに、図７では、ＲＡＳ−ＣＡＳ遅延が２サイクルである場合を示す。
【００３４】
例えば図７に示すタイミングＴ２でＣＰＵ１００からライトアクセスとしてコマンドｗｒｉｔｅ＝１とアドレスａｄｄｒ＝Ａとが出力されると、メモリコントローラ２００は、同じタイミングＴ２でこれらを入力する。また、メモリコントローラ２００は、内部のコマンド制御部２１０において応答信号ｒｅａｄｙ＝１をタイミングＴ２にて生成し、これをＣＰＵ１００へ返す。この際、アドレスａｄｄｒ＝Ａが有効（‘１’）の状態であり、コマンドｗｒｉｔｅと応答信号ｒｅａｄｙとも‘１’であるため、コマンド制御部２１０における論理積回路２１１は、ライトアクセス信号ｖａｌｉｄｗ＝１を生成する。また、このようにライトアクセス信号ｖａｌｉｄｗ＝１が生成されると、バッファカウンタ２３０はカウンタ値を１インクリメントする。この場合、バッファカウンタ２３０のカウンタ値は‘１’となる。
【００３５】
さらにこの際、バッファカウンタ２３０におけるカウンタ値が‘０’から‘１’へ遷移するため、メモリコントローラ２００は、ＣＰＵ１００から入力されたライトアクセス（コマンドｗｒｉｔｅ＝１、アドレスａｄｄｒ＝Ａ）に基づいて、書込み対象のＲｏｗアドレスと、この書込み対象のＲｏｗアドレスをアクティブにするためのコマンドＡＣＴを生成し、これをタイミングＴ３にてメモリ３００へ入力する。すなわち、本実施例では、ライトバッファ２２０に全てのライトデータｗｄａｔａが格納される前に、先行してＲｏｗアドレスとコマンドＡＣＴとをメモリ３００へ入力することで、ＲＡＳ−ＣＡＳ遅延に左右されずに書込みのタイミングを早めることができる。これにより、高速な書込み動作を可能としている。
【００３６】
また、メモリコントローラ２００からライトアクセス（コマンドｗｒｉｔｅ＝１、アドレスａｄｄｒ＝Ａ）に対する応答信号ｒｅａｄｙ＝１がタイミングＴ２にて出力されると、ＣＰＵ１００は、アドレスａｄｄｒ＝Ａに対応するライトデータｗｄａｔａ＝ＤをタイミングＴ３で出力する。これに対し、メモリコントローラ２００は、ＣＰＵ１００から出力されたライトデータｗｄａｔａ＝Ｄを入力し、これをタイミングＴ４にてライトバッファ２２０に書き込む。ただし、タイミングＴ３におけるバッファカウンタ２３０のカウンタ値が‘１’であり、ライトアクセス信号ｖａｌｉｄｗが‘１’であるため、ライトデータｗｄａｔａ＝Ｄはマルチプレクサ２２１ｂを介して１段目のバッファ２２１ａ（ｗｂｕｆｆ０）に格納される。
【００３７】
また、ＣＰＵ１００は、上記のタイミングＴ２にてメモリコントローラ２００からライトアクセス（コマンドｗｒｉｔｅ＝１、アドレスａｄｄｒ＝Ａ）に対する応答信号ｒｅａｄｙ＝１を受信すると、タイミングＴ３にて次のライトデータｗｄａｔａ＝Ｄ＋１に対するライトアクセス（コマンドｗｒｉｔｅ＝１、アドレスａｄｄｒ＝Ａ＋１）をメモリコントローラ２００へ出力する。これに対し、メモリコントローラ２００は、同じタイミングＴ３でこれらを入力する。また、メモリコントローラ２００は、内部のコマンド制御部２１０において応答信号ｒｅａｄｙ＝１をタイミングＴ３にて生成し、これをＣＰＵ１００へ返す。この際、アドレスａｄｄｒ＝Ａ＋１が有効（‘１’）の状態であり、コマンドｗｒｉｔｅと応答信号ｒｅａｄｙとも‘１’であるため、コマンド制御部２１０における論理積回路２１１は、ライトアクセス信号ｖａｌｉｄｗ＝１を生成する。また、このようにライトアクセス信号ｖａｌｉｄｗ＝１が生成されると、バッファカウンタ２３０はカウンタ値を１インクリメントする。この場合、バッファカウンタ２３０のカウンタ値は‘２’となる。
【００３８】
また、メモリコントローラ２００からライトアクセス（コマンドｗｒｉｔｅ＝１、アドレスａｄｄｒ＝Ａ＋１）に対する応答信号ｒｅａｄｙ＝１がタイミングＴ３にて出力されると、ＣＰＵ１００は、アドレスａｄｄｒ＝Ａ＋１に対応するライトデータｗｄａｔａ＝Ｄ＋１をタイミングＴ４で出力する。これに対し、メモリコントローラ２００は、ＣＰＵ１００から出力されたライトデータｗｄａｔａ＝Ｄ＋１を入力し、これをタイミングＴ５にてライトバッファ２２０に書き込む。ただし、タイミングＴ４におけるバッファカウンタ２３０のカウンタ値が‘２’であり、ライトアクセス信号ｖａｌｉｄｗが‘１’であるため、ライトデータｗｄａｔａ＝Ｄ＋１はマルチプレクサ２２２ｂを介して２段目のバッファ２２２ａ（ｗｂｕｆｆ１）に格納される。
【００３９】
また、ＣＰＵ１００は、上記のタイミングＴ３にてメモリコントローラ２００からライトアクセス（コマンドｗｒｉｔｅ＝１、アドレスａｄｄｒ＝Ａ＋１）に対する応答信号ｒｅａｄｙ＝１を受信すると、タイミングＴ４にて次のライトデータｗｄａｔａ＝Ｄ＋２に対するライトアクセス（コマンドｗｒｉｔｅ＝１、アドレスａｄｄｒ＝Ａ＋２）をメモリコントローラ２００へ出力する。これに対し、メモリコントローラ２００は、同じタイミングＴ３でこれらを入力する。また、メモリコントローラ２００は、内部のコマンド制御部２１０において応答信号ｒｅａｄｙ＝１をタイミングＴ３にて生成し、これをＣＰＵ１００へ返す。この際、アドレスａｄｄｒ＝Ａ＋２が有効（‘１’）の状態であり、コマンドｗｒｉｔｅと応答信号ｒｅａｄｙとも‘１’であるため、コマンド制御部２１０における論理積回路２１１は、ライトアクセス信号ｖａｌｉｄｗ＝１を生成する。また、このようにライトアクセス信号ｖａｌｉｄｗ＝１が生成されると、バッファカウンタ２３０はカウンタ値を１インクリメントする。この場合、バッファカウンタ２３０のカウンタ値は‘３’となる。
【００４０】
また、メモリコントローラ２００からライトアクセス（コマンドｗｒｉｔｅ＝１、アドレスａｄｄｒ＝Ａ＋２）に対する応答信号ｒｅａｄｙ＝１がタイミングＴ４にて出力されると、ＣＰＵ１００は、アドレスａｄｄｒ＝Ａ＋２に対応するライトデータｗｄａｔａ＝Ｄ＋２をタイミングＴ５で出力する。これに対し、メモリコントローラ２００は、ＣＰＵ１００から出力されたライトデータｗｄａｔａ＝Ｄ＋２を入力し、これをタイミングＴ６にてライトバッファ２２０に書き込む。ただし、タイミングＴ５におけるバッファカウンタ２３０のカウンタ値が‘３’であり、ライトアクセス信号ｖａｌｉｄｗが‘１’であるため、ライトデータｗｄａｔａ＝Ｄ＋２はマルチプレクサ２２３ｂを介して３段目のバッファ２２３ａ（ｗｂｕｆｆ２）に格納される。
【００４１】
また、ＣＰＵ１００は、上記のタイミングＴ４にてメモリコントローラ２００からライトアクセス（コマンドｗｒｉｔｅ＝１、アドレスａｄｄｒ＝Ａ＋２）に対する応答信号ｒｅａｄｙ＝１を受信すると、タイミングＴ５にて次のライトデータｗｄａｔａ＝Ｄ＋３に対するライトアクセス（コマンドｗｒｉｔｅ＝１、アドレスａｄｄｒ＝Ａ＋３）をメモリコントローラ２００へ出力する。これに対し、メモリコントローラ２００は、同じタイミングＴ４でこれらを入力する。また、メモリコントローラ２００は、内部のコマンド制御部２１０において応答信号ｒｅａｄｙ＝１をタイミングＴ４にて生成し、これをＣＰＵ１００へ返す。この際、アドレスａｄｄｒ＝Ａ＋３が有効（‘１’）の状態であり、コマンドｗｒｉｔｅと応答信号ｒｅａｄｙとも‘１’であるため、コマンド制御部２１０における論理積回路２１１は、ライトアクセス信号ｖａｌｉｄｗ＝１を生成する。また、このようにライトアクセス信号ｖａｌｉｄｗ＝１が生成されると、バッファカウンタ２３０はカウンタ値を１インクリメントする。この場合、バッファカウンタ２３０のカウンタ値は‘４’となる。
【００４２】
また、メモリコントローラ２００からライトアクセス（コマンドｗｒｉｔｅ＝１、アドレスａｄｄｒ＝Ａ＋３）に対する応答信号ｒｅａｄｙ＝１がタイミングＴ５にて出力されると、ＣＰＵ１００は、アドレスａｄｄｒ＝Ａ＋３に対応するライトデータｗｄａｔａ＝Ｄ＋３をタイミングＴ６で出力する。これに対し、メモリコントローラ２００は、ＣＰＵ１００から出力されたライトデータｗｄａｔａ＝Ｄ＋３を入力し、これをタイミングＴ７にてライトバッファ２２０に書き込む。ただし、タイミングＴ６からタイミングＴ７では、バッファカウンタ２３０のカウンタ値が‘４’から‘３’へデクリメントされる。このため、タイミングＴ７では、ライトバッファ２２０におけるバッファ２２１ａ（ｗｂｕｆｆ０）に格納されているライトデータｗｄａｔａ＝Ｄがメモリ３００へ書き込まれ、バッファ２２２ａ（ｗｂｕｆｆ１）に格納されているライトデータｗｄａｔａ＝Ｄ＋１がバッファ２２１ａ（ｗｂｕｆｆ０）へ移し替られ、バッファ２２３ａ（ｗｂｕｆｆ２）に格納されているライトデータｗｄａｔａ＝Ｄ＋２がバッファ２２２ａ（ｗｂｕｆｆ１）に移し替られると共に、新たに入力されたライトデータｗｄａｔａ＝Ｄ＋３がマルチプレクサ２２３ｂを介して３段目のバッファ２２３ａ（ｗｂｕｆｆ２）に格納される。
【００４３】
また、上述したように、タイミングＴ６からタイミングＴ７では、バッファカウンタ２３０のカウンタ値が‘４’から‘３’へデクリメントされるため、メモリコントローラ２００は、ＣＰＵ１００から入力されたライトアクセス（コマンドｗｒｉｔｅ、アドレスａｄｄｒ）に基づいて、書込み対象のＣｏｌｕｍｎアドレスと、この書込み対象のＣｏｌｕｍｎアドレスをアクティブにするためのコマンドＷＲＩＴＥを生成し、これをタイミングＴ７にてメモリ３００へ入力する。すなわち、本実施例では、ライトバッファ２２０に全てのライトデータｗｄａｔａが書き込まれると同時に、ＣｏｌｕｍｎアドレスとコマンドＷＲＩＴＥとをメモリ３００へ入力することで、ＲＡＳ−ＣＡＳ遅延に左右されずに書込みのタイミングを早めることができる。これにより、高速な書込み動作を可能としている。
【００４４】
その後、メモリコントローラ２００は、システムクロックＣＬＫに基づいてバッファカウンタ２３０のカウンタ値を‘０’までデクリメントすると共に、ライトバッファ２２０におけるバッファ２２１ａ〜２２３ａに格納されているライトデータｗｄａｔａ＝Ｄ＋１〜Ｄ＋３を、順次、前段のライトバッファへ移し替ると共に、バッファ２２１ａに格納されているライトデータを逐次、メモリ３００へ書き込む。これにより、ＣＰＵ１００から要求されたライトデータのメモリ３００への書込みが終了する。
【００４５】
・作用効果
以上で説明したように、本実施例によるメモリコントローラ２００は、ＣＰＵ１００などの外部から入力されたライトデータｗｄａｔａを一時保持する複数（本実施例では４つ）のバッファ２２１ａ〜２２４ａと、複数のバッファ２２１ａ〜２２４ａ全てにライトデータｗｄａｔａが格納される前に、外部から入力されたメモリ３００へのライトアクセス（コマンドｗｒｉｔｅ、アドレスａｄｄｒ）に基づいてメモリ３００における所定記憶領域のＲｏｗアドレスをアクティブにするためのコマンドＡＣＴを発行するコマンド制御部２１０とを有して構成される。
【００４６】
従来では、複数のバッファ２２１ａ〜２２４ａ全てにライトデータｗｄａｔａを格納した後にコマンドＡＣＴを発行するように構成されていたため、ＲＡＳ−ＣＡＳ遅延の分、書込みのタイミングが遅れてしまうが、本実施例のように、複数のバッファ２２１ａ〜２２４ａ全てにライトデータｗｄａｔａが格納される前に、先行してコマンドＡＣＴをメモリ３００へ発行するように構成することで、ＲＡＳ−ＣＡＳ遅延に左右されずに書込みのタイミングを早めることができる。これにより、高速な書込み動作が可能となる。
【００４７】
また、本実施例によるコマンド制御部２１０は、複数のバッファ２２１ａ〜２２４ａに最初にライトデータｗｄａｔａが格納されるより前のタイミング（本説明ではＴ３）でコマンドＡＣＴを発行するように構成されている。
【００４８】
また、本実施例によるメモリコントローラ２００は、複数のバッファ２２１ａ〜２２４ａに保持されたライトデータｗｄａｔａの数を管理するバッファカウンタ２３０をさらに有し、コマンド制御部２１０が、バッファカウンタ２３０のカウンタ値に基づいて複数のバッファ２２１ａ〜２２４ａに格納されるライトデータｗｄａｔａが最初のデータであるか否かを判定するように構成されている。
【００４９】
さらに、本実施例によるコマンド制御部２１０は、バッファ２２１ａ〜２２４ａの数と同数のライトデータｗｄａｔａが複数のバッファ２２１ａ〜２２４ａに書き込まれた場合、所定記憶領域のＣｏｌｕｍｎアドレスをアクティブにするためのＷＲＩＴＥコマンドを発行するように構成されている。
【実施例２】
【００５０】
次に、本発明の実施例２について図面を用いて詳細に説明する。尚、以下の説明において、実施例１と同様の構成については、同一の符号を付し、その詳細な説明を省略する。また、特記しない構成に関しては実施例１と同様である。
【００５１】
本実施例では、ライトバッファからライトデータを読み出してメモリへ書き込む前に、ＲｏｗアドレスをアクティブにするためのコマンドＡＣＴを先行して発行することで、メモリへの書込みを高速化するように構成されたメモリコントローラを例に挙げて説明する。なお、本実施例では、簡略化のため、メモリコントローラにおけるライトバッファを４段（Ｎ＝４）とする。また、本実施例では、ＣＰＵがアドレスａｄｄｒ＝Ａから連続する４つのアドレス（Ａ〜Ａ＋３）にライトアクセスする際の動作を示す。さらに、本実施例では、ＲＡＳ−ＣＡＳ遅延が２サイクルである場合を示す。
【００５２】
・構成
図８は、本実施例によるメモリコントローラ４００及びその周辺部の構成を示すブロック図である。図８に示すように、メモリコントローラ４００は、実施例１によるメモリコントローラ２００と同様の構成に、クロックイネーブル制御部（以下、ＣＫＥ制御部という）４４０が追加された構成を有する。
【００５３】
ＣＫＥ制御部４４０（クロック制御部）は、メモリ３００へのシステムクロックＣＬＫの供給を有効または無効とするためのクロックイネーブル信号ＣＫＥを生成し、これを用いてメモリ３００の動作／不動作を切り替えることで、メモリ３００における消費電力を低減させるための構成である。なお、本実施例では、メモリ３００の動作／不動作が、クロックイネーブル信号ＣＫＥの値が変化されてから２サイクル後（ＲＡＳ−ＣＡＳ遅延後）に切り替えられるものとする。
【００５４】
図９に、本実施例によるＣＫＥ制御部４４０の構成を示す。図９に示すように、ＣＫＥ制御部４４０は、「１」から「３」の３つの入力と１つの出力とを有するマルチプレクサ４４１と、マルチプレクサ４４１の出力段に設けられたバッファ４４２とを有する。
【００５５】
上記構成において、マルチプレクサ４４１の３つの入力のうち「１」にはデータ‘０’が入力される。また、「２」には、データ‘１’が入力される。さらに、「３」には、バッファ４４２の出力がフィードバックされる。
【００５６】
このマルチプレクサ４４１は、コマンド制御部２１０から出力されたライトアクセス信号ｖａｌｉｄｗが‘１’であってバッファカウンタ２３０のカウンタ値が‘１’である場合、入力「１」に入力されたデータ‘０’をバッファ４４２に入力する。これにより、バッファ４４２からはＬｏｗレベル（‘０’）のクロックイネーブル信号ＣＫＥが出力され、２サイクル後にメモリ３００へのシステムクロックＣＬＫの供給が停止される。また、入力「３」にバッファ４４２の出力がフィードバックされた場合、マルチプレクサ２２１ｂは、バッファ４４２に格納されている値を消去する。さらに、マルチプレクサ４４１は、コマンド制御部２１０から出力されたライトアクセス信号ｖａｌｉｄｗが‘１’であってバッファカウンタ２３０のカウンタ値が‘４’である場合、入力「２」に入力されたデータ‘１’をバッファ４４２に入力する。これにより、バッファ４４２からはＨｉｇｈレベル（‘１’）のクロックイネーブル信号ＣＫＥが出力され、２サイクル後にメモリ３００へのシステムクロックＣＬＫの供給が再開される。
【００５７】
なお、他の構成は、実施例１と同様であるため、ここでは詳細な説明を省略する。
【００５８】
・動作
次に、本実施例によるメモリコントローラ４００の動作を図面と共に詳細に説明する。図１０は、メモリコントローラ４００の動作を示すタイミングチャートである。なお、図１０では、簡略化のため、メモリコントローラ４００におけるライトバッファ２２０を４段（Ｎ＝４）とする。また、図１０では、ＣＰＵ１００がアドレスａｄｄｒ＝Ａから連続する４つのアドレス（Ａ〜Ａ＋３）にライトアクセスする際の動作を示す。さらに、図１０では、ＲＡＳ−ＣＡＳ遅延が２サイクルである場合を示す。
【００５９】
図１０に示すように、本実施例によるメモリコントローラ４００は、実施例１によるメモリコントローラ２００と同様の動作の他に、上述したように、メモリ３００へのシステムクロックＣＬＫの供給を、クロックイネーブル信号ＣＫＥを用いて制御する。以下、この点に着目して説明する。
【００６０】
例えば図１０に示すタイミングＴ２でＣＰＵ１００からライトアクセスとしてコマンドｗｒｉｔｅ＝１とアドレスａｄｄｒ＝Ａとが出力されると、メモリコントローラ４００は、同じタイミングＴ２でこれらを入力する。また、メモリコントローラ２００は、内部のコマンド制御部２１０において応答信号ｒｅａｄｙ＝１をタイミングＴ２にて生成し、これをＣＰＵ１００へ返す。この際、アドレスａｄｄｒ＝Ａが有効（‘１’）の状態であり、コマンドｗｒｉｔｅと応答信号ｒｅａｄｙとも‘１’であるため、コマンド制御部２１０における論理積回路２１１は、ライトアクセス信号ｖａｌｉｄｗ＝１を生成する。また、このようにライトアクセス信号ｖａｌｉｄｗ＝１が生成されると、バッファカウンタ２３０はカウンタ値を１インクリメントする。この場合、バッファカウンタ２３０のカウンタ値は‘１’となる。
【００６１】
このようにライトアクセス信号ｖａｌｉｄｗが‘１’となり、バッファカウンタ２３０のカウンタ値が‘１’となると、メモリコントローラ４００におけるＣＫＥ制御部４４０は、‘０’であるクロックイネーブル信号ＣＫＥを生成し、これをタイミングＴ３にてメモリ３００へ供給する。これにより、２サイクル後のタイミングＴ５に、メモリ３００の動作が停止する。
【００６２】
その後、ＣＰＵ１００からライトアクセス（コマンドｗｒｉｔｅ＝１、アドレスａｄｄｒ＝Ａ＋１〜Ａ＋３）が順次出力されると、メモリコントローラ４００におけるバッファカウンタ２３０のカウンタ値が、実施例１と同様に‘４’となる。この際、ライトアクセス信号ｖａｌｉｄｗが‘１’であるため、メモリコントローラ４００におけるＣＫＥ制御部４４０は、‘１’であるクロックイネーブル信号を生成し、これをタイミングＴ６にてメモリ３００へ共有する。これにより、２サイクル後のタイミングＴ８に、メモリ３００の動作が再開する。
【００６３】
なお、他の動作は、実施例１と同様であるため、ここでは詳細な説明を省略する。
【００６４】
・作用効果
以上で説明したように、本実施例によるメモリコントローラ４００は、実施例１と同様に、ＣＰＵ１００などの外部から入力されたライトデータｗｄａｔａを一時保持する複数（本実施例では４つ）のバッファ２２１ａ〜２２４ａと、複数のバッファ２２１ａ〜２２４ａ全てにライトデータｗｄａｔａが格納される前に、外部から入力されたメモリ３００へのライトアクセス（コマンドｗｒｉｔｅ、アドレスａｄｄｒ）に基づいてメモリ３００における所定記憶領域のＲｏｗアドレスをアクティブにするためのコマンドＡＣＴを発行するコマンド制御部２１０とを有して構成される。
【００６５】
従来では、複数のバッファ２２１ａ〜２２４ａ全てにライトデータｗｄａｔａを格納した後にコマンドＡＣＴを発行するように構成されていたため、ＲＡＳ−ＣＡＳ遅延の分、書込みのタイミングが遅れてしまうが、本実施例のように、複数のバッファ２２１ａ〜２２４ａ全てにライトデータｗｄａｔａが格納される前に、先行してコマンドＡＣＴをメモリ３００へ発行するように構成することで、ＲＡＳ−ＣＡＳ遅延に左右されずに書込みのタイミングを早めることができる。これにより、高速な書込み動作が可能となる。
【００６６】
また、本実施例によるメモリコントローラ４００は、実施例１と同様に、コマンド制御部２１０が、複数のバッファ２２１ａ〜２２４ａに最初にライトデータｗｄａｔａが格納されるより前のタイミング（本説明ではＴ３）でコマンドＡＣＴを発行するように構成されている。
【００６７】
また、本実施例によるメモリコントローラ４００は、実施例１と同様に、複数のバッファ２２１ａ〜２２４ａに保持されたライトデータｗｄａｔａの数を管理するバッファカウンタ２３０をさらに有し、コマンド制御部２１０が、バッファカウンタ２３０のカウンタ値に基づいて複数のバッファ２２１ａ〜２２４ａに格納されるライトデータｗｄａｔａが最初のデータであるか否かを判定するように構成されている。
【００６８】
さらに、本実施例によるメモリコントローラ４００は、実施例１と同様に、コマンド制御部２１０が、バッファ２２１ａ〜２２４ａの数と同数のライトデータｗｄａｔａが複数のバッファ２２１ａ〜２２４ａに書き込まれた場合、所定記憶領域のＣｏｌｕｍｎアドレスをアクティブにするためのＷＲＩＴＥコマンドを発行するように構成されている。
【００６９】
さらにまた、本実施例によるメモリコントローラ４００は、コマンドＡＣＴを発行してからコマンドＷＲＩＴＥを発行するまでの期間、メモリ３００の動作を停止させるＣＫＥ制御部４４０をさらに有して構成されている。
【００７０】
ＣＫＥ制御部４４０が、メモリ３００へのシステムクロックＣＬＫの供給を有効または無効とするためのクロックイネーブル信号ＣＫＥを生成し、これを用いてメモリ３００の動作／不動作を切り替えるように構成することで、メモリ３００における消費電力を低減させることが可能となる。
【００７１】
また、上記実施例１及び２は本発明を実施するための例にすぎず、本発明はこれらに限定されるものではなく、これらの実施例を種々変形することは本発明の範囲内であり、更に本発明の範囲内において、他の様々な実施例が可能であることは上記記載から自明である。
【００７２】
また、上記では、ＤＲＡＭ（Dynamic Random Access Memory）やＳＤＲＡＭ（Synchronous DRAM）などを念頭に置いた実施例を例示したが、本発明はこれに限定されず、ＲＡＳ−ＣＡＳ遅延を持つダイナミックメモリであれば、本発明の主旨を逸脱しない限り、如何なるものも適用することができる。
【図面の簡単な説明】
【００７３】
【図１】従来技術によるメモリコントローラ及びその周辺部の構成を示すブロック図である。
【図２】従来技術によるメモリコントローラの動作を示すタイミングチャートである。
【図３】本発明の実施例１によるメモリコントローラ及びその周辺部の構成を示すブロック図である。
【図４】本発明の実施例１によるメモリコントローラにおけるコマンド制御部が有する構成の一部を示す回路図である。
【図５】本発明の実施例１によるメモリコントローラにおけるバッファカウンタのカウンタ値が遷移する順序を示す図である。
【図６】本発明の実施例１によるメモリコントローラにおけるライトバッファの構成を示す回路図である。
【図７】本発明の実施例１によるメモリコントローラの動作を示すタイミングチャートである。
【図８】本発明の実施例２によるメモリコントローラの構成を示すブロック図である。
【図９】本発明の実施例２によるメモリコントローラにおけるＣＫＥ制御部の構成を示す回路図である。
【図１０】本発明の実施例２によるメモリコントローラの動作を示すタイミングチャートである。
【符号の説明】
【００７４】
１００  ＣＰＵ
１０１  システムバス
２００、４００  メモリコントローラ
２１０  コマンド制御部
２２１  論理積回路
２２０  ライトバッファ
２２１ａ、２２２ａ、２２３ａ、２２４ａ  バッファ
２２１ｂ、２２２ｂ、２２３ｂ、２２４ｂ  マルチプレクサ
２３０  バッファカウンタ
４４０  ＣＫＥ制御部
４４１  マルチプレクサ
４４２  バッファ
【図１】
2007094647.tif 000003
【図２】
2007094647.tif 000004
【図３】
2007094647.tif 000005
【図４】
2007094647.tif 000006
【図５】
2007094647.tif 000007
【図６】
2007094647.tif 000008
【図７】
2007094647.tif 000009
【図８】
2007094647.tif 000010
【図９】
2007094647.tif 000011
【図１０】
2007094647.tif 000012