ここで本発明を特定の応用についての実施形態を参照して説明するが、本発明はそれに限定されるものと理解すべきではない。当業者は本発明の技術的範囲内に含まれる付加的な変形、応用、実施形態および本発明が非常に有効である付加的な分野を認識するであろう。
図1は本発明の1実施形態にしたがった効率的なメモリ制御装置12を使用するシステム10のブロック図である。明瞭にするために、増幅器、電源、フリップフロップ等の種々の部品は図面から省略されている。しかしながら当業者は所定の応用の要求を満たすためにいずれのコンポーネントおよび特徴が構成され、どのようにしてこれらを構成するかを知るであろう。
システム10はメモリ管理装置22およびメモリ制御装置12を介してメモリ16と通信するコンピュータシステム14を含んでいる。コンピュータシステム14は直接的にメモリ管理装置22と通信し、メモリ管理装置22はアドレス、メモリ開始、読取/書込みコマンドを含むメモリコマンドを制御装置12を介してメモリ16へ伝送する。メモリ管理装置22はメモリ制御装置12で動作するシーケンサ状態マシン32からの制御通報信号に応答して、データバス34を介してコンピュータシステム14とメモリ16との間で選択的にデータを伝送する。効率的なメモリ制御装置12はメモリサイクル時間最適化装置とも呼ばれている。本発明の目的に対しては、メモリ制御装置はメモリへまたはメモリから転送されるメモリコマンドおよび/またはデータの流れまたは動作を行う装置、ハードウェア、ソフトウェア、またはファームウェアシステムのような任意のシステムである。
制御装置12はシーケンサ20とのマスター・スレーブ構造による命令復号器18を含んでいる。本発明の説明の目的では、マスター・スレーブ関係はマスターモジュールと呼ばれる第1のモジュールと、スレーブモジュールと呼ばれる第2のモジュールとの関係であり、スレーブモジュールの動作はマスターモジュールからの入力に応じて制御されるか、その他の方法でそれにしたがっている。マスター・スレーブ関係を有する2つのモジュールはマスター・スレーブ構造で接続される。
命令復号器18はアドレス(Addr.)、コマンド開始、制御(R/W,Ctrl.)入力をメモリ管理装置22から受信する。命令復号器18は本発明の技術的範囲から逸脱せずに、データマスク(DQM)のような付加的な入力を受信できる。
シーケンサ20は選択的にアドレス(Addr.)、制御(R/W,Ctrl.)入力をメモリ16へ提供する。シーケンサ20を介してメモリ16に供給される制御入力は列選択(CS)、行選択(RS)、クロックエネーブル(CKE)、行アクセスストローブ(RAS)、および列アクセスストローブ(CAS)信号のような種々のサブレベルのインターフェース信号を含むことができる。
命令復号器18は復号モジュール24を含んでおり、それはメモリ状態追跡装置26から入力を受信し、出力を次のコマンドおよび時間コード発生器28へ提供し、これら両者は共に命令復号器18中に含まれている。復号モジュール24はまたデータおよび制御入力をメモリ管理装置22から受信し、シーケンサ状態入力をシーケンサ20から受信し、そのシーケンサ状態入力はロードコマンド(Ld Cmd)信号とも呼ばれるシーケンサ状態時間コードおよび新しいコマンドシーケンスエネーブル信号(Enable)を含んでいる。
シーケンサ20は、命令復号器18中の次のコマンドおよび時間コード発生器28から実行時間コード入力を受信し、エネーブル出力(Enable)をシーケンサ状態マシン32へ供給する比較器30を含んでいる。シーケンサ状態マシン32はコマンドシーケンスを含むコマンド信号を次のコマンドおよび時間コード発生器28から受信し、このコマンドシーケンスは初期シーケンサ開始コマンド(Seq.Start Command)コマンドを含んでいる。シーケンサ状態マシン32は制御出力をメモリ管理装置22へ与え、シーケンサ状態時間コードとして符号化されるシーケンサ状態情報を命令復号器18の復号モジュール24へ供給する。シーケンサ状態マシン32はまた、制御入力をメモリ22へ供給し、メモリ管理装置22を介してコンピュータシステム14からメモリ16へのデータ流を選択的に可能にする。
動作において、コンピュータプロセッサまたは他のシステムであることができるコンピュータシステム14上で動作するソフトウェア、ハードウェアまたはファームウェア(図示せず)はメモリ管理装置22とメモリ制御装置12を介して選択的にデータをメモリ装置16に記憶し、メモリ16から検索する。メモリ16へデータを記憶し、或いはメモリ16からデータを検索するコンピュータシステム14からのリクエストはメモリ管理装置22に転送される。メモリ管理装置22はそのリクエストを処理し、その後、アドレスおよび制御入力としてメモリ制御装置12中に含まれている命令復号器18の復号モジュール24へ選択的にそれらを転送する。
復号モジュール24は受信されたアドレスおよび制御情報をフォーマットし、その情報をサービスされるように特定のコマンドまたはコマンドシーケンスへ組込む。本発明の目的では、コマンドはシーケンサスタートコマンドのような単一のコマンドであってもよく、またはコマンドのシーケンスであってもよい。
復号モジュール24はメモリ状態追跡装置26からの入力、シーケンサ状態マシン32からのシーケンサ状態時間コード、および比較器30の出力からのエネーブル信号に基づいてメモリ16の現在の状態を決定する。好ましい実施形態では、メモリ状態追跡装置26はメモリの構成後、メモリ16の内部状態を追跡する。メモリ状態追跡装置26はメモリ16の最初の構造と、メモリ16の予測可能な性質に基づいてメモリ16の現在の状態を予測する。メモリ16からフィードバックされた物理的なメモリ状態信号は必要とされない。しかしながら、本発明の技術的範囲を逸脱せずに状態出力を提供するメモリを使用することができる。当業者は過剰な実験をせずにメモリ状態追跡装置26を容易に構成することができる。
比較器30から出力されたエネーブル信号はシーケンサ状態マシン32が新しいコマンドを受取るためにエネーブルされているか否かを示す。復号モジュール24は必要なときにメモリ管理装置22からの入力をフォーマットし、選択的にそれらを次のコマンドおよび時間コード発生器28へ提供する。
これらの入力に基づいて、次のコマンドおよび時間コード発生器28は実行時間コードを各検索されたコマンドシーケンスへ割当て、コマンドおよび実行時間コード対を生成する。実行時間コードは、コマンドが最良の時間に、最良の順序で順序付けられるようにシーケンサ状態時間コードを参照にして割当てられる。最適なコマンド順序の決定と、コマンドシーケンスへの実行時間コードの割当てについての正確な詳細はメモリおよび用途特定であり、所定の応用の必要性を満たすために当業者によって決定されることができる。
用途特定パラメータはクロック速度とデータフォーマットを含んでいる。クロック速度は利用可能なメモリ動作モードに影響する。データフォーマットもまた用途特定である。例えばパーソナルコンピュータ内のペンティアム(登録商標)の中央処理装置(CPU)は典型的に各メモリバーストの読取または書込み4ピースである。他のコンピュータ応用はメモリの帯域幅を最適化するためにバースト当り256読取/書込(対4)を有するフルページバーストを使用できる。さらに他の応用は頻繁なクロスバンクおよびクロスページメモリアクセス応用に対しては8のバーストを使用できる。
メモリの動作速度とデータフォーマットが規定されるとき、コマンド/データのオーバーラップの詳細はメモリに特定している。標準的なインターフェースタイミングはSDRAMに対して規定されるが、全てのモードが所定のメモリ装置によりサポートされるわけではない。例えば、列アクセスストローブ待ち時間(CL)=1モードは50MHzまでの幾つかの製造業者によりサポートされるが、多くは66MHzまではサポートされない。
クロック速度、データフォーマット、メモリが選択されるとき、最大のデータ帯域幅に対して最大のメモリコマンドおよびデータのオーバーラップを実現するために理想的なタイミングは製造業者のデータシートから決定されることができる。その後、メモリ制御装置の設計は理想的なタイミングが実現されることができるか否かを決定する。メモリ制御装置12の使用は理想的なメモリタイミングの実現を促進する。
種々のファクターが最適な時間コード割当てを容易にする。好ましくは、次のコマンドおよび時間コード発生器28は特に既存のコマンドが実行されているとき、入来する新しいコマンドをできる限りすぐに検索する。次のコマンドおよび時間コード発生器28はメモリ16によりサポートされたタイミング選択肢に基づいて、データの帯域幅を最大にするために最適のコマンド/データのオーバーラップタイミングを選択するように現在および次の(入来)コマンドを解析することが好ましい。
命令復号器18はある連続するコマンド間の時間変化関係に適合するためにシーケンサフィードバックを使用する。SDRAMとESDRAMのデータギャップを最小にするように最良のコマンド/データオーバーラップを得るために、次のコマンドの組合せが復号器18により受信されるときに応じて、あるコマンドの組合せがシーケンサ20の現在の状態に関して異なって処理される。メモリ制御装置12は類似の連続的なコマンドのセットで異なるコマンドシーケンスをメモリ16に発生することができる。シーケンサ20からメモリ16へ送られるコマンドシーケンスは全て新しいコマンド入力時間と現在のシーケンサ状態に基づいている。
以下の表は、読取コマンド(CMDのRD参照)が後続する書込みバースト(W0乃至W3)の最後のデータ(W3)におけるデータマスク(DQM)アクティビティ(DQM=H、即ち1またはハイ)を有する書込みコマンド(行CMD中のWRを参照)に応答してシーケンサ20によって発生されるNOP−RD(読取りが後続する動作なし)状態を示している。
書込み動作のデータマスク(DQM)は遅延を有しない。読取動作では、データマスク(DQM)は2クロックサイクルだけデータ(DQ)をリードする(ZZとZZはデータ(D0乃至D3)が送信される前の2クロックサイクル遅延を表している)。第1の読取データがDQM=Hの2クロックサイクル内で生じたならば、書込みマスクは最後の書込みデータ(W3)と第1の読取データ(D0)をマスクアウトする。上記の表1では、読取コマンドは書込みサイクルの早い時期に生じる。結果として、シーケンサ20は動作なし(NOP)状態と、それに続く読取(RD)状態とを発生して、第1の読取データ(D0)がマスクされるのを阻止しなければならない。
以下の表2では、読取コマンド(RD)は書込みサイクルの後の時期に、復号/コマンド発生遅延後に生成する。読取コマンドが以下の表2に示されているように行われることを想定する。過剰なクロックサイクルが遅延によって挿入されるので、メモリ制御装置12は第1の読取データ(D0)がマスクされないことを保証するためにNOP−読取の組合せの代りに直接的に読取りコマンドを発生することができる。
命令復号器18とシーケンサ20との間のマスター・スレーブ関係は効率的なコマンド実行シーケンスのパイプライン化を可能にする。シーケンサ状態マシン32からのシーケンサ状態のフィードバックは状態の先取りを強化する。
シーケンサ20は多くの制御装置がするようにコマンド毎にメモリページを開閉しない。次のコマンドおよび時間コード発生器28は新しいコマンドが現在のコマンドの処理の早期の段階に到着したならば、最良の新しいコマンドエントリタイミングのための時間コードを使用する。新しいコマンドが現在のコマンドサイクルの後期に到着したならば、割当てられた時間コードは新しいコマンドが可能な限りすぐに(事後の最良)実行されることを確実にする。
次のコマンドおよび時間コード発生器28は、特定のコマンドシーケンスをシーケンサ状態マシン32へ転送し始めるときを決定するために、復号モジュール24を介して受信される比較器30のシーケンサ状態時間コードと出力(Enable)を監視する。本発明の特定の実施形態では、次のコマンドおよび時間コード発生器28は、シーケンサ20の比較器30へ順序付けされる次のコマンドに対応する実行時間コードを転送する。比較器30は現在のシーケンサ状態時間コードを、順序付けされる次のコマンドの実行時間コードに対して比較する。
本発明の特定の実施形態では、シーケンサ状態時間コードが実行時間コードよりも大きいならば、比較器30はシーケンサ状態マシン32が次のコマンドおよび時間コード発生器28から次のコマンドシーケンスを受信することを可能にする。別の構造では、シーケンサ状態時間コードが実行時間コードよりも小さいならば、比較器30はシーケンサ状態マシン32が次のコマンドシーケンスを受信することを可能にする。以下、さらに十分に説明する別の代りの構造では、シーケンサ状態時間コードが実行時間コードよりも大きいか等しいならば、比較器30はシーケンサ状態マシン32が次のコマンドシーケンスを受信することを可能にする。
シーケンサ状態マシン32はその後、次のコマンドシーケンスのサービスを開始する。比較器30から出力された結果的なエネーブル信号は、コマンドの順序付けおよび/または実行時間コード割当てを容易にするための復号モジュール24を含んだ上流の電子装置へ転送される。
シーケンサ状態マシン32がコマンドシーケンスをサービスするとき、これはコマンドシーケンスに対応するアドレスおよび制御通報をメモリ16へ提供する。シーケンサ状態マシン32はまた制御信号をメモリ管理装置22へ供給し、シーケンサ状態マシン32によりサービスされているコマンドシーケンスによって必要とされるとき、メモリ管理装置22がコンピュータシステム14とメモリ16との間で選択的にデータを転送することを可能にする。
本発明のメモリ制御装置12の設計は、命令復号器18へのフィードバックとしてのシーケンサ状態時間コードの新規の使用により容易にされ、これはコマンドシーケンスに割当てられた実行時間コードにしたがって適切なコマンドシーケンスを選択するためにフィードバックを使用する。選択的にシーケンサ状態フィードバックを命令復号器18に与える結果として、先取り効果は命令復号器18とシーケンサ20が最適にコマンドを順序付けるために共に動作することを可能にする。
例えば、本発明の特別な実施形態では、シーケンサ状態時間コードは整数1乃至8のセットにより示される8つの可能な状態の1つを表すことができる。さらに、所定のコマンドシーケンスに割当てられる実行時間コードもまた整数1乃至8のセットにより示される8つの可能な状態の1つにより表されることができる。例示的な構造では、コマンドがサービスされておらず、命令復号器18がスケジュールするコマンドシーケンスをもたないときには、実行時間コードとシーケンサ状態時間コードは8の値を割当てられる。したがって、比較器30により決定されるとき、シーケンサ状態時間コードが実行時間コードよりも大きくないならば、シーケンサ状態マシン32はアクチブではない。この例では、新しいコマンドシーケンスが到着したとき、実行時間コードが5の値を割当てられることを想定している。
比較器30はその後、実行時間コード(5)がシーケンサ状態時間コード(8)よりも小さいことを決定し、それにしたがってシーケンサ状態マシン32を付勢する。シーケンサ状態マシン32はその後、これは次のコマンドおよび時間コード発生器28からの出力であるコマンドシーケンスをサービスする。コマンドシーケンスがシーケンサ状態マシン32にロードされるとき、シーケンサ状態マシン32はロードされたコマンドシーケンスに基づいてシーケンサ時間コードを変更する。コマンドシーケンスがサービスされているとき、シーケンサ状態マシン32はサービスされているコマンドシーケンスの進行にしたがってシーケンサ状態時間コードをインクリメントし続ける。しかしながら、8に到達したとき、シーケンサ状態時間コードは8に留まり、シーケンサ状態マシン32が所定のコマンドを完了したことを示す。
次のコマンドが命令復号器18に到着し、シーケンサ20およびメモリ状態追跡装置26からの入力に基づいて6の実行時間コードを割当てられることを想定する。現在サービスされているコマンドシーケンスは5のシーケンサ状態時間コードを生成すると想定する。シーケンサ状態時間コード(5)は6より大きくないので、次のコマンドシーケンスはサービスされない。シーケンサ状態時間コードが6を通過し、即ち7以上に到達するとき、次のコマンドシーケンスはサービスされる。次のコマンドシーケンスのサービスが開始されることを示す信号は比較器30からのエネーブル信号(Enable)出力を介して復号モジュール24へフィードバックされる。これは命令復号器18による実行時間コードの割当てを容易にする。エネーブル信号(Enable)はまた実行されているコマンドの反復的な実行を阻止するように実行時間コードを8にリセットする。コマンドおよび時間コード発生器28は新しいコマンドが到着したとき新しい実行時間コードを発生する。
代りに、命令復号器からシーケンサ20へのコマンド待機信号は、図4を参照して以下詳しく説明するように、新しいコマンドがシーケンサ20によりロードされるのを待機しているか否かを示す。次のコマンドおよび時間コード発生器28が新しいコマンドおよび時間コードを発生するとき、コマンド待機信号は1に設定され、コマンドがシーケンサ20によりサービスされるとき、リセットされる。
復号モジュール24は現在および次のメモリリクエスト(コマンドシーケンス)、シーケンサ状態変数、およびメモリ状態変数をコマンドおよび時間コード発生器28への適切な入力に変換する。コマンドおよび時間コード発生器28はその後、検索表(図示せず)の徹底的な検索によって、最良のシーケンサ開始コマンドと実行時間コードの組合せを全部で128の異なる組合せから選択する。シーケンサ20はその後、その固有の状態時間コードを比較器30によって実行時間コードと比較する。
命令復号器18はメモリリクエストがサービスされるとき、メモリ状態追跡装置26によって内部メモリ状態を追跡し、現在および以前のメモリサイクル、メモリ状態、およびシーケンサ状態に基づいて最良のコマンドおよび実行時間コードの組合せを計算する。シーケンサ20は実行時間コードに関連するコマンドを実行するときを決定するために実行時間コードをそれ自身の状態と比較する。
シーケンサ20が新しいコマンドを受取るとき、命令復号器18は次のメモリリクエストを自由にサービスする。新しいコマンドシーケンスがメモリ16に送信されるとき、シーケンサ20は以下詳しく説明するように、コマンド送信信号を命令復号器18またはメモリ管理装置22のようなアップストリームまたはダウンストリームの電子装置へ転送し、次のメモリリクエストに対するデータ開始および時間を示す。この実施形態では、シーケンサ状態マシン32はワンショットマシンである。
別の構成では、一定のアイドル状態で、命令復号器18とシーケンサ20の両者は最初に同一の時間コード1を有し、シーケンサ状態時間コードは1に到達するまで処理の進行と共に減少され、1に到達するとコードは1に留まる。この場合、比較器30はシーケンサ状態が実行時間コードよりも小さくなるとき次のコマンドシーケンスのサービスを選択的に可能にする。第1のコマンドシーケンスを受信するとき、シーケンサ状態時間コードは1であり、一方実行時間コードは順序付けされるコマンドの特性にしたがって、6のようなより高い値に設定される。実行時間コードの割当てに使用される方法の正確な詳細は用途特定であり、過剰に実験せずに当業者により決定されることができる。したがって、シーケンサ状態時間コードが実行時間コードよりも小さいので、コマンドシーケンスは直ちにサービスされる。コマンドが処理のためにシーケンサ20に送信された後、次のコマンドおよび時間コード発生器28に関連される実行時間コードは1にリセットされる。
したがって別の構成では、シーケンサ状態マシン32が現在のメモリリクエストを実行しているとき、その状態時間コードはそれがコマンドシーケンスにある場所を示すように変化(減少)される。シーケンサ20が現在のコマンドシーケンスでロードした後、命令復号器18は自由に新しいメモリリクエストを受取る。次のメモリリクエストが命令復号器18に到着したとき、新しい実行時間コードがコマンドシーケンスに割当てられる。シーケンサ状態時間コードが実行時間コードよりも大きいならば、新しいコマンドシーケンス、即ちメモリリクエストはまだ実行されることができない。シーケンサ20は新しいコマンドシーケンスを最適時にメモリ16に送信する前に、シーケンサ開始時間コードが実行時間コードよりも小さくなるまで、現在のコマンドシーケンスを継続する。したがってコンピュータシステム14とメモリ16との間で流れるデータのギャップは制御装置12による効率的なコマンドの順序付けにより最小にされる。
当業者は、値を割当て、その値を調節して、シーケンサ状態マシン32と他の機構の現在の状態を示し、シーケンサ状態のフィードバックに応答してエネーブル信号を発生する方法が本発明の技術的範囲を逸脱せずに使用されることができることを認識するであろう。さらに、システム10を実行するのに必要な種々のモジュールが、過剰に実験せずに当業者により構成されるか、またはそうでなければ本発明の考察の実行によって得られる。例えばデータアービトレータ、コマンドアービトレータ、および付随するメモリバスとコマンド発生器のようなメモリ管理装置22の実行に使用される種々のモジュールが容易に利用可能である。
この実施形態では、メモリ制御装置12はメモリ管理装置22により実行される付加的なメモリ制御機能と共に使用するのに適している。付加的なメモリ制御機能は種々のアドレスおよびコマンド発生器(図示せず)と通信するコマンドアービトレータモジュールを含むことができ、その出力は選択的に制御装置12へ多重化される。メモリ管理装置22の実行を容易にするために使用されることのできる例示的なデータアービトレータを以下詳しく説明し、これは同時出願の米国特許明細書(発明の名称“SYSTEM AND METHOD FOR SELECTIVELY AFFECTING DATA FLOW TO OR FROM A MEMORY DEVICE”)に記載されており、この文献は本発明の出願人に譲渡され、ここで参考文献とされている。
本発明の特定の実施形態では、メモリ16は同期ダイナミックランダムアクセスメモリ(SDRAM)または強化されたSDRAM(ESDRAM)であり、これを以下さらに詳しく説明する。特有のサイクル時間最適化装置12は特に2つの連続的なESDRAMまたはSDRAMメモリサイクル間のコマンド、アドレス、データのオーバーラップを最大にするのに適しており、それによってメモリの帯域幅を最適にする。
市販の制御装置の命令復号器と異なって、命令復号器18はシーケンサ20がフィードバックとして状態情報を提供するので、シーケンサ状態を決定するために特別なモジュールを組込むことを必要とされない。これはある通常の制御装置に関連する状態マシンの長いターンアラウンド時間または状態マシンのピンポン時間を除去し、それによって最適なコマンド/アドレスオーバーラップと、設計の複雑性の減少を容易にする。
発生器28による次のコマンドおよび実行時間コードの発生のシーケンサ状態フィードバックの使用は、メモリサイクル間の最良の可能なコマンド/アドレスのオーバーラップに対する状態先取り効果を与える。しかしながら、シーケンサ20から命令復号器18へのシーケンサ状態のフィードバックは本発明の技術的範囲から逸脱せずに省略されることができる。
本発明の種々の実施形態で使用される時間コード発生および関連するコマンド実行タイミング方式は制御装置の設計の複雑性を著しく減少させる。さらに、比較器30により実行される時間コード比較は、シーケンサ状態マシン32が時間コードの発生時とは無関係に、命令復号器18により命令されるとき最適時に、または可能な限り早く次のコマンドシーケンスを実行することを確実にする助けをする。さらに比較器30による時間コード比較は、現在のコマンドシーケンスがメモリ16に送信されている間に、命令復号器18に自由に次のメモリリクエストをサービスさせる。これはメモリ16が先のコマンドに関連するデータをバーストしながら行われる。したがって実質的に3つの全てのパイプライン化されたマシン18、20、16は十分に同時に使用され、それによってデータギャップを最小にし、メモリの利用を最大にする。本発明の実施形態にしたがって構成されたメモリ制御装置を使用するコンピュータシステムは所望のメモリ帯域幅を実現するために必要とするESDRAMおよび/またはSDRAM装置の数はより少数である。
図2は図1のメモリ制御装置12により制御される例示的なSDRAM16のより詳細な図である。SDRAMはN個の種々のメモリバンク50を含んでいる。第1のメモリバンク52およびN番目のメモリバンク54は例示の目的で示されている。各N個のメモリバンク50は図1のシーケンサ20からアドレス(Addr.)、読取/書込み(R/W)、および制御(Ctrl.)入力を受信する。特定のアドレスに対応するデータは、感知増幅器とも呼ばれる対応する能動バッファを介してメモリバンク50へ、およびメモリバンク50から選択的に転送され、これらの能動バッファは第1のメモリバンク52に対応する第1の能動バッファ60とN番目のメモリバンク54に対応するN番目の能動バッファ62により示されている。各能動バッファ60、62はそれらのバッファ60、62を通ってデータの選択的な移動を容易にするために読取/書込み(R/W)および/または図1のシーケンサ32からのその他の制御入力を含むことができる。バッファ60、62はそれぞれ図1のシーケンサ32からの制御シグナリングに応答して、必要なときに能動バッファ60、62の出力および/または入力間で選択的に切換えるマルチプレクサ64と通信する。
動作において、メモリバンク50のうち1つの休止メモリ領域に読取り、書込みを行うために、第1のメモリバンク52の行i56またはN番目のメモリバンクの行k58のようなデータの行を休止メモリ52、54から対応する能動バッファ60、62へ移動するための付勢コマンドが発生されなければならない。読取または書込みコマンドはその後、メモリバンク52、54との間でデータ転送を行うために能動バッファ60、62へ発生されることができる。
新しい行に書込むとき、能動バッファ60、62の内容をメモリバンク52、54へ書込む準備のために、メモリバンク52、54の新しい行を付勢する前に、プレチャージコマンドが図1のシーケンサ32から発生される。1つのメモリバンクが所定の時間にプレチャージされるか、または、全てのメモリバンクが同時にプレチャージされることができる。しかしながら、書込まれるメモリバンクだけがプレチャージされることが多い。各ESDRAMバッファ60、62は対応する休止RAM52、54の類似する、または異なるページからのデータを含むことができる。したがって複数のメモリページは同時に開かれ、それはページを探す時間を減少する。
異なるメモリの内部状態および異なる連続的なメモリリクエストに対しては、種々のメモリタイミング限定により、メモリサイクル間にデータギャップが生じ、これは最適なメモリ帯域幅を得るために最小にされなければならない。図1の制御装置12はこの機能を実行する。
メモリ制御装置12は特に多くのページを探す動作を含む応用で有効であり、その場合には通常の制御装置が多数の望ましくないデータギャップを発生する可能性が大きい。いわゆるクロスページ動作では、ページとも呼ばれる最初にメモリバンクの特定の行が能動バッファへロードされる。異なる行(ページ)をアクセスしてクロスページ動作を完了するために、ロードされたバッファの内容はメモリバンクへ返送されなければならず、その後、新しい行がバッファに書込まれなければならない。通常の制御装置はクロスページ動作を非効率的に処理することが多く、データバスに過剰なデータギャップを生じ、それによってメモリの帯域幅を減少させる。
当業者はESDRAMメモリおよび仮想チャンネルメモリ(VCM)のような他のタイプのメモリが本発明の技術的範囲を逸脱せずに本発明の目的で使用されることができることを認識するであろう。ESDRAM、SDRAM、VCMは広く使用されているメモリである。
図2のSDRAM16のようなSDRAMでは、各メモリバンク52、54は読取りまたは書込みされることのできる単一の能動バッファ60、62を有する。ESDRAM(図示せず)では、各メモリバンクは読取専用バッファと、それと分離された書込み専用バッファとを含んでいる能動領域を有している。各能動領域は対応する休止RAMの同一または異なるページからのデータを含むことができ、両者は同時にアクチブに維持されることができる。したがって、ESDRAMは特に本発明の種々の実施形態に開示されているメモリサイクル時間最適化装置12、12’では有効である。
仮想チャンネルSDRAM(VCSDRAMまたはVCM)メモリはそれぞれ多数のバッファにアクセスできるメモリバンクを有している。VCMはしばしば仮想チャンネルと呼ばれるプログラム可能なバッファを有する。仮想チャンネルは任意のメモリバンクに接続するようにプログラムされることができる。これは必要なときに異なる数のバッファが異なるバンクへ接続されることを可能にする。したがってメモリ帯域幅は強化される。VCMメモリを使用するシステムは本発明の実施形態では非常に有効である。
図3はさらに詳細にメモリ管理装置22’を示している図1のシステム10の別の実施形態10’のブロック図である。別のメモリ管理装置22’はコマンドアービトレータ70とデータアービトレータ72とを含んでおり、その両者はコンピュータシステム14と通信する。
コマンドアービトレータ70は優先順位符号器76から制御入力を受信するマルチプレクサ(MUX)74を含んでいる。優先順位符号器76はまたメモリ制御装置12’へコマンド開始入力を提供し、そこからコマンド送信入力を受信する。MUX74は種々の入力および出力メモリリクエストコマンドを受信し、それらはコンピュータシステム14から発生したがコマンドアービトレータ70で動作するモジュール(図示せず)により必要とされるようにフォーマットされている。優先順位符号器76はまた対応する入力および出力メモリリクエスト(コマンド)を受信し、それらを予め定められたアルゴリズムにしたがって優先順位を定める。メモリリクエストは優先順位の順に一度に一つづつメモリ制御装置12’へ送信され、それによって高い優先順位に関連するコマンドが最初にメモリ制御装置12’によりサービスされる。
優先順位符号器76は受信された各コマンドの優先順位にしたがって選択信号をMUX74へ発生する。例えば、優先順位符号器76により決定される最高の優先順位のコマンドはMUXエネーブル信号を発生し、この信号によって対応するコマンドがMUX74の出力に現れる。メモリ制御装置12’へ入力されるMUX74の出力は優先順位符号器76により決定される入力コマンドの中で最高の優先順位コマンドを表している。各コマンドはデータアドレス、読取/書込、データマスク情報のような情報を含むことができる。
それ故、優先順位符号器76は信号処理モジュール(コンピュータシステム)14からのメモリリクエストの優先順位を定め、適切なリクエストを選択し、コマンド開始信号をメモリ制御装置12’へ送信し、メモリ制御装置12’はメモリサイクルを最適化する。現在のコマンドの実行後、メモリ制御装置12’はコマンド送信信号を優先順位符号器76に発生し、別のメモリコマンドがメモリ制御装置12’により受信されることができることを承諾する。メモリ制御装置12’はまたデータアービトレータ72とメモリ16との間でデータバス34に沿ったデータ流を制御するために制御信号をデータアービトレータ72へ提供する。
データアービトレータ72はメモリ読取バッファ78およびメモリ書込みバッファ80を含み、これは読取/書込み制御入力をメモリ制御装置12’から受信する。メモリ読取バッファ78とメモリ書込みバッファ80とはそれぞれ入力/出力(I/O)スイッチ82とデータバス34を介して、それぞれデータをメモリ16から受信し、メモリ16へデータを提供する。I/Oスイッチ82はデータバス34に沿って読取動作と書込み動作との間の切換えを容易にするためにメモリ制御装置12’から制御入力を受信する。メモリ読取バッファ78はメモリ16から読取られているデータをコンピュータシステム14へ提供する。同様に、メモリ16へ書込まれるデータはコンピュータシステム14からメモリ書込みバッファ80によって受信される。読取および書込みデータのフォーマットに使用されるフォーマットモジュール(図示せず)のような種々の他のモジュールが本発明の技術的範囲を逸脱せずに使用されることができる。
本発明の実施形態では、メモリ制御装置12’はメモリ管理装置22’の一部として考慮される。MUX74と優先順位符号器76は本発明の技術的範囲を逸脱せずにメモリ制御装置12’の一部として組込まれることができる。さらに、メモリバッファ78、80は先に参照した米国特許明細書と、ここで参考により組込まれている対応する出願にしたがって先入れ先出し(FIFO)バッファとして構成されることができる。
図4は、図3のメモリ制御装置12’の別の実施形態12’のより詳細なブロック図である。図3および4を参照すると、メモリ制御装置12’はマスタースレーブ関係で配置されている別の命令復号器18’およびシーケンサ20’を含んでいる。別の復号モジュール24’はメモリ状態追跡装置26’と通信し、そのメモリ状態追跡装置26’は図3のメモリ16の種々のページの開/閉状態に関する情報88を維持する。復号モジュール24’はサービスされる次のコマンドに関連するマスク入力をメモリ管理装置22’から受信し、選択的に対応するデータマスク制御(DQM)入力をメモリ16に提供するデータマスク(DQM)発生器98を含んでいる。
サービスされる次のコマンドの読取/書込み信号(次のコマンド)は復号モジュール24’に入力され、その復号モジュール24’は次のコマンドが現在サービスされているコマンドによりクロスバンク状態を発生させるか否かを決定するためにバンク比較器90を使用する。復号モジュール24’は次のコマンド(新しいメモリリクエスト)がメモリ16中でクロスページ状態を生じるか否かを決定する行比較器92を含んでいる。クロスバンクおよび/またはクロスページ状態が明白であるならば、復号モジュール24’は更新信号をメモリ状態追跡装置26’に送信し、そのメモリ状態追跡装置26’はメモリ16の内部状態を追跡する。
メモリ状態追跡装置26’は更新信号、バンク情報、および行情報をアドレスバス(Addr.)から受信し、コマンドがシーケンサ状態マシン20’により実行されるとき(Cmd送信=1のとき)対応するバンク開/閉フラグ88を更新する。メモリ状態追跡装置26’からの出力信号は最後および新しいコマンドに対するバンク開/閉情報を提供する。この情報は予め定められた用途特定アルゴリズムにしたがって、最良のシーケンサ開始コマンドと実行時間コードとの決定を助けるために次のコマンドおよび時間コード発生器28’によって使用されることができる。
適切な信号は、クロスバンクまたはクロスページ状態が生じるか否かにかかわりなく復号モジュール24’から次のコマンドおよび時間コード発生器28’へ送信される。次のコマンドおよび時間コード発生器28’はその後、それに応答して適切な実行時間コードを次のコマンドに割当てる。
メモリ管理装置22’から受信され、次のコマンドに対応するメモリアドレス情報はメモリ状態追跡装置26’と復号モジュール24’とに供給される。復号モジュール24’はクロスバンクおよびクロスページ比較を容易にするためにアドレス情報を使用する。
図3の優先順位復号器76からのコマンド開始信号は次のコマンドおよび時間コード発生器28’およびコマンド待機発生器94に送信される。次のコマンドおよび時間コード発生器28’は対応するシーケンサ開始コマンドをシーケンサ状態マシン32’へ選択的に転送する。コマンド待機発生器94はコマンド待機信号をシーケンサ比較器30’へ転送し、シーケンサ状態マシン32’がコマンドをロードされたとき、ロードされたコマンド信号をシーケンサ比較器30’から受信する。シーケンサ状態マシン32’がコマンドをメモリに送信するとき、コマンド送信信号は復号モジュール24’へフィードバックされる。
現在のコマンドに関連する行および列アドレスもまたアドレスMUX96の入力へ転送され、このアドレスMUX96はシーケンサ状態マシン32’から制御入力を受信する。アドレスMUX96はシーケンサ状態マシン32’からの制御信号に応答して、バンク番号および行アドレス、またはバンク番号および列アドレスをメモリに選択的に出力する。
シーケンサ状態マシン32’はまた現在のメモリリクエスト(コマンド)に対応する列選択(CS)、行アクセスストローブ(RAS)、列アクセスストローブ(CAS)、R/W、クロックエッジ選択(CKE)、データマスク(DQM)信号のような種々の制御入力をメモリ16に提供する。データバスおよびメモリバッファ制御信号はシーケンサ20’から図3のデータアービトレータ72へフィードバックされる。コマンド送信信号もまた図3のコマンドアービトレータ70の優先順位符号器76へフィードバックされる。
本発明の別の実施形態では、メモリ制御装置12’はシーケンサ20’と命令復号器18’との間で双方向ハンドシェイクおよびフィードバックによるマスター・スレーブパイプラインマシンである。マスターは命令復号器18’であり、シーケンサ20’はスレーブモジュールである。入力アドレスはESDRAM/SDRAMアドレスの時間多元化要求に適応するために行および列アドレスに分割する。
命令復号器18’の出力は時間依存性である。命令復号器18’は現在およびその次のメモリリクエスト、シーケンサ状態変数、メモリ状態変数、データマスク状態を次のコマンドおよび時間コード発生器28’への適切な入力に変換する。当業者はデータマスク(DQM)発生器98の使用がシーケンサ設計の複雑度を減少できることを認識するであろう。
次のコマンドおよび時間コード発生器28’は図3のメモリ管理装置22’からのコマンド開始信号がエネーブルされるとき、検索表によって最良のシーケンサ開始コマンドおよび実行時間コードの組合せを選択する。コマンド待機発生器94は新しいコマンドがサービスされるために待機している場合には、シーケンス20’に通知するコマンド待機信号を選択的に発生する。メモリ状態追跡装置26’はESDRAM/SDRAMメモリ16の内部状態を追跡し、メモリ16の各バンクの開閉状態と、各バンク(図2)の開かれたページのアドレスを追跡する。メモリ状態追跡装置26’はメモリコマンドがシーケンサ20’により実行されるときに更新される。
シーケンサ比較器30’は、コマンド待機発生器94からのコマンド待機信号により示されるように、新しいコマンドが実行を待機しているとき、シーケンサ30’はシーケンサ状態時間コードを実行状態時間コードと比較する。本発明の別の実施形態では、シーケンサ状態時間コードが待機しているコマンドに関連する実行時間コード以上であるならば、シーケンサ状態コマンドは実行のためシーケンサ状態マシン32’へロードされる。
シーケンサ状態マシン32’はワンショット状態マシンである。アイドル状態においてシーケンサ状態時間コードは最大値に設定される。コマンドがシーケンサ状態マシン32’にロードされるとき、シーケンサ状態時間コードは最小値のような低い値でロードされ、コマンドの実行が完了したときに最大値まで増加しつづける。シーケンサ状態マシン32’はその後、アイドル状態に戻る。
定常のアイドル状態では、コマンド待機発生器94からのコマンド待機信号はディスエーブルされ、シーケンサ状態マシン32’は最大時間コードを示し、コマンドをサービスしていない。新しいメモリリクエストが命令復号器18’に到着するとき、シーケンサ比較器30’に入力されるコマンド待機信号はエネーブルされる。最大よりも小さい実行時間コードはその後、シーケンサ比較器30’によってシーケンサ状態時間コードに比較され、これは最初に最大値に設定される。したがって新しいコマンドはシーケンサ20’により直ちに実行される。シーケンサ状態マシン32’が現在のメモリリクエストを実行しているとき、新しいメモリリクエストが発生されるならば、時間コード比較特性は新しいコマンドが適切な実行時間まで実行されるのを待機することを確実にする。
図5は図1、3、4のメモリ制御装置12、12’を使用するように適合された方法100のフロー図である。図1および5を参照すると、最初のコマンド開始ステップ110において、命令復号器18はメモリリクエストが保留中であることを示すコマンド開始信号がエネーブルされているか否かを決定する。メモリリクエストが保留中であるとき、制御は受信ステップ102へ進む。
受信ステップ102では、メモリ制御装置12の命令復号器18は(コマンドシーケンスとも呼ぶ)メモリリクエスト、(シーケンサ状態時間コードを含む)シーケンサ状態変数、メモリ状態追跡装置26を介して維持されるメモリ状態変数を受信して選択的にフォーマットする。
結果的な選択的にフォーマットされた情報は後続するフォーマット化ステップ104で使用される。フォーマット化ステップ104では、結果的な情報は、次のコマンドおよび時間コード発生器28により使用され、実行時間コードをメモリリクエストに対応している受信されたコマンドシーケンスへ最適に割当てられる。結果的なコマンドシーケンスおよび実行時間コード対は、命令復号器18が次に処理される最適なコマンドシーケンスを決定することを可能にするために特別な優先順位符号器(図3の76を参照)を介して解析されることができる。その代りに、コマンドは一度に一つづつ命令復号器18により受信されて処理され、それによって与えられ受信されたコマンドシーケンスは実行時間コードを割当てられ、これはシーケンサ20によりサービスされるときに決定される。この場合、コマンドの優先順位の順序付けは命令復号器18が実行時間コードを割当てる前に、図3の優先順位符号器76などによって行われることができる。与えられたコマンドシーケンスが処理される時間はその割当てられる実行時間コードと現在のシーケンサ状態時間コードの関数である。
その後の比較ステップ106では、次に処理されるコマンドシーケンスの実行時間コードは、比較よりも大きいか等しいかのように、1以上の予め定められた比較基準に基づいてシーケンサ状態時間コードと比較される。比較結果が所望の基準を満たしているか、または所望の条件が満たされているならば、制御はサービスステップ108へ進む。満たしていないならば、制御は比較ステップ106に戻る。図5には示されていないが、方法100の動作中、シーケンサ20は所定のコマンドを処理するので、シーケンサ20の状態は連続してシーケンサ20により更新されることに注意すべきである。したがって、方法は静的なシーケンサ状態によって、ステップ106で無限のループに入らない。
サービスステップ108では、比較ステップ106で、1以上の所望の条件または基準を満たす実行時間コードに関連するコマンドシーケンスはシーケンサ20によりサービスされる。シーケンサ状態時間コードはサービス中に更新される。続いて、制御はコマンドチェックステップ112へ進み、ここでシーケンサ状態マシン(図4の32’参照)から出力されたコマンド送信信号はコマンドがシーケンサ20または20’によりメモリに送信されているか否かを決定するようにチェックされる。コマンドが送信されているならば、制御は最初のコマンド開始ステップ110へ戻る。送信されていないならば、制御はコマンド送信チェックステップ112へ戻る。方法100の動作中、図1のシーケンサ20の状態はシーケンサ20が与えられたコマンドを処理するとき、シーケンス20により連続的に更新されることに注意すべきである。したがって方法100は静的なシーケンサ状態のために、ステップ112で無限ループに入らない。
図6は本発明の1実施形態にしたがって構成されるSDRAM制御装置(図3の12および図4の12’参照)用の図3のSDRAMデータバス34上の最小のデータギャップを示しているタイミング図である。このタイミング図120は例示的なクロック信号122、コマンド開始信号124、シーケンサ開始コマンド信号126、実行時間コード値128、コマンド待機信号130、シーケンサ状態時間コード132、コマンド送信信号134、SDRAMコマンドシーケンス136、SDRAMアドレス138、SDRAMデータバスシーケンス144を含んでいる。データバスシーケンス144は図1、2、3のSDRAMデータバス34に沿って送信される。
タイミング図120は図4の制御装置12’と図3のシステム10’の動作を示している。図3、4、6を参照すると、ESDRAM/SDRAM16は列アクセスストローブ待ち時間(CL)=1およびバースト長(BL)=8で動作するように設定されている。全てのメモリリクエスト、即ちコマンドシーケンス136は読取(Rd)動作に関連されている。
タイミング図120により示されている例示的なシナリオは定常状態で開始し、ここで信号コマンド待機信号130は0(ディスエーブル)であり、シーケンサ状態132は11(最大)である。新しいコマンドが開始され、コマンド開始信号124は1に設定される。コマンド待機信号130はその後、エネーブルされ、新しい開始コマンド126(アクチブ(ACT))と実行時間コード(5)の組合せ(ACT、5)が次のクロックサイクルで発生される。
コマンド待機信号130がエネーブルされるとき、シーケンサ状態132は11であり、これは5である実行時間コード128よりも大きい。したがって、シーケンサ開始コマンド126(ACT)は次のクロックサイクルで図4のシーケンサ状態マシン32’へロードされ、新しいSDRAMコマンドシーケンス136(ACTバンク1(B1)、RdB1)は直ちに実行される。
コマンド待機信号130はさらにコマンドがシーケンサ20’へロードされるのを停止するために新しいSDRAMコマンドシーケンス136(ACT B1、RdB1)のロード時にディスエーブルされる。シーケンサ20’が図3のSDRAM16へのメモリ制御コマンドの送信を完了したとき、コマンド送信信号134は1クロックサイクルだけエネーブルにされ、それによって制御装置12’が別のメモリコマンドを受けることができることを通報する。
現在のSDRAMコマンド136(ACT B1、RdB1)が実行され、SDRAM16がデータバーストモードにある一方で、コマンド開始信号124により示される第2のメモリコマンドは図4の命令復号器18’によって受信される。次のコマンドおよび時間コード発生器28’は最適の実行時間コード128(7)をシーケンサ開始コマンド126(プレチャージ(PCh))へ割当て、図4のコマンド待機発生器94からのコマンド待機信号130がエネーブルにされる。新しい(第2の)シーケンサ開始コマンド126(PCh)はシーケンサ状態時間コード132が最適なコマンドのオーバーラップの7に到達するまで実行されない。第2のSDRAMコマンドシーケンス136(PCh B1、ACT B1、Rd B1)はシーケンサ状態時間コードが7に到達するときに実行される。コマンド送信信号34はコマンドの実行の完了後にエネーブルにされる。第2のSDRAMコマンドシーケンス136(PCh B1、ACT B1、Rd B1)は対応するSDRAMアドレス138(行B、列X)にオーバーラップし、対応するデータ(X1...X8)はその後、データバス34に沿って送信される。2クロックサイクルの最小のデータギャップ140は第1のコマンド136(Act B1、RdB1)による送信されるデータ(M1...M8)と、第2のコマンドシーケンス136(PCh B1、ACT B1、RdB1)による送信されるデータ(X1...X8)との間で生じる。
本発明の実施例では、第2のメモリコマンドシーケンス136(PCh B1、ACT B1、RdB1)はバンクB1の異なる行を読取ることを含んでおり、即ち行B(SDRAMアドレス138参照)の代りに行Aを読取ることを含んでいることに注意すべきである。これは読取後に同一のバンク(B1)のクロスページアクセス動作において読取ミスが続くことを表しており、ここでは異なる行(行B)は同じバンク(B1)から読取られる。これは最初にプレチャージ(PCh)動作を介して行A(ページA)を閉じ、その後付勢(ACT)動作を介して新しいページを開き、その後読取動作(Rd)によって新しいページ(ページB)から読取ることを必要とする。第2のコマンドシーケンス136(PCh B1、ACT B1、RdB1)に関連するクロスページアクセスに対する最適のデータギャップは2クロックサイクルである。通常の状態マシン制御装置またはパイプライン化された制御装置は以下で詳しく説明するように、それぞれこのようなクロスページ動作中にしばしば4または3クロックサイクルのデータギャップを生じる。
第3のメモリコマンドシーケンス136(PCh B2、ACT B2、RdB2)は第3のコマンド開始シーケンス126(PCh)が付勢され、5の最適な実行時間コードを割当てられた後に、コマンド待機信号130がエネーブルにされた後、シーケンサ状態時間コード132が実行時間コード(5)に等しいか大きくなった後に開始される。しかしながら、この例では、第3のシーケンサ開始コマンド126(PCh)および対応する実行時間コード割当て128(5)は1クロックサイクル後に到着する。コマンド待機信号130はシーケンサ開始時間コード132が5ではなく6であるときにエネーブルにされる。
シーケンサ12’は可能な限り速やかに第3のメモリコマンド136(PCh B2、ACT B2、RdB2)を実行するが、1クロックサイクル142のデータギャップはデータバースト間のデータバスシーケンス144に存在する。第3のメモリコマンドシーケンス136(PCh B2、ACT B2、RdB2)は第2のコマンドとは異なるバンク(B2)から読取られる。したがって、(PCh、5)のシーケンサ開始コマンド126と時間コード128の組合せが時間内、即ち1クロックサイクル早く到着したならば、データギャップ142は存在しない。
図4の次のコマンドおよび時間コード発生器28’はコマンドシーケンス136全体を発生してそれをシーケンサ状態マシン32’へ転送し、シーケンサ状態マシン32’はその後直列にコマンドを出力する。その代りに、次のコマンドおよび時間コード発生器28’は開始コマンド126を発生し、シーケンサ状態マシン32’は次のコマンド136を発生する。これはさらにコンパクトで簡単な設計を与える。
コマンドシーケンス136はまたメモリ制御バスとも呼ばれる。メモリ制御バス136はメモリアドレスバス138と共にコマンドシーケンスバスを形成する。したがって、第1のコマンドはACT B1行A、RdB1 Col Mとして考慮されることができる。
例示的なタイミング図120はメモリ制御装置12’の内部動作を示し、それは連続的なメモリサイクル間のデータギャップを最小にすることができる。
図7はそれぞれ通常の状態マシンメモリ制御装置およびパイプラインメモリ制御装置により示される並列データギャップ152、154、140に対する本発明の1実施形態12’により示される並列データギャップのタイミング図150である。データギャップ152、154、140は図6の第2のメモリコマンドシーケンス136(PCh B1、ACT B1、RdB1)に関連しており、これは同じバンク(B1)のクロスページアクセスシナリオ上に読取ミスが後続する読取を表している。
図3、4、6、7を参照すると、ESDRAM/SDRAM16はCL=1およびBL=8モードに設定され、全てのメモリリクエストは読取動作である。図6を参照して説明したように、データバスシーケンス144のデータギャップ140は2クロックサイクルだけである。
通常の状態マシンデータバス156は4クロックサイクルのデータギャップ152を示す。この過剰なデータギャップ152はメモリの帯域幅と性能を減少する。通常の状態マシンデータバス156に対応する状態158の例示的なシーケンスが示されている。
Eureka Techのパイプライン化された制御装置のデータバス160は(それらの仕様にしたがって)3クロックサイクルのデータギャップ154を示す。それ故、図4に説明されているメモリ制御装置12’は小さいデータギャップと高いメモリ帯域幅を生じる。
したがって本発明を特定の応用に対する特定の実施形態を参照してここで説明した。当業者は付加的な変形、応用、実施形態をその技術的範囲内で認識するであろう。
それ故、特許請求の範囲は本発明の技術的範囲内で任意のおよび全てのこのような応用、変形、実施形態をカバーすることを意図している。