(57)【特許請求の範囲】
【請求項１】
第１リセット信号に応答して、外部クロック信号のサイクル数をカウントするステップと；
前記第１リセット信号を遅延ロックループ回路によって遅延させた第２リセット信号に応答して、前記遅延ロックループ回路を用いることによって前記外部クロック信号から導出した内部読出しクロック信号のサイクル数をカウントするステップと；
読出しコマンドに応答して、前記外部クロック信号のサイクル数のカウント値を保持するステップと；
前記保持している外部クロック信号のサイクル数のカウント値と前記内部読出しクロック信号のサイクル数のカウント値とを比較するステップであって、前記比較の前に、前記外部クロック信号のサイクル数または前記内部読出しクロック信号のサイクル数の一方を、所定値を加算または減算することによって補償するステップと；
前記比較の結果に応答して、出力線上への読出しデータの出力を可能にするステップと
を具えていることを特徴とするメモリーデバイスの動作方法。
【請求項２】
前記所定値が内部読出しレイテンシ値であることを特徴とする請求項１に記載の方法。
【請求項３】
前記保持している外部クロック信号のサイクル数のカウント値を補償することを特徴とする請求項２に記載の方法。
【請求項４】
前記内部読出しクロック信号のサイクル数のカウント値を補償することを特徴とする請求項２に記載の方法。
【請求項５】
前記読出しデータの出力を可能にするステップが、前記比較するステップにおいて比較した前記保持している外部クロック信号のサイクル数のカウント値と前記内部読出しクロック信号のサイクル数のカウント値とが等しい際に、読出しデータを前記出力線上に出力するパルスを発生することを含むことを特徴とする請求項３に記載の方法。
【請求項６】
前記読出しデータの出力を可能にするステップが、前記比較するステップにおいて比較した前記保持している外部クロック信号のサイクル数のカウント値と前記内部読出しクロック信号のサイクル数のカウント値とが等しい際に、読出しデータを前記出力線上に出力するパルスを発生することを含むことを特徴とする請求項４に記載の方法。
【請求項７】
さらに、
出力用の読出しデータを前記内部読出しクロック信号でラッチするステップと；
前記比較の結果に応答して、前記ラッチした読出しデータを前記出力線上に出力するステップと
を具えていることを特徴とする請求項１に記載の方法。
【請求項８】
第１リセット信号に応答して、外部クロック信号のサイクル数を第１カウンタでカウントするステップと；
前記第１リセット信号を遅延ロックループ回路によって所定時間間隔だけ遅延させて得られた第２リセット信号に応答して、前記遅延ロックループ回路を用いることによって前記外部クロック信号から導出した内部読出しクロック信号のサイクル数を第２カウンタでカウントするステップと；
読出しコマンドに応答して、前記第１カウンタのカウント値を記憶するステップと；
前記記憶している第１カウンタのカウント値と前記第２カウンタのカウント値とを比較するステップであって、前記比較の前に、前記第１カウンタのカウント値または前記第２カウンタのカウント値の一方を、所定値を加算または減算することによって補償するステップと；
前記比較の結果に応答して、出力線上への読出しデータの出力を可能にするステップと
を具えていることを特徴とするメモリーデバイスの動作方法。
【請求項９】
前記所定値が内部読出しレイテンシ値であることを特徴とする請求項８に記載の方法。
【請求項１０】
前記記憶している第１カウンタのカウント値を補償することを特徴とする請求項９に記載の方法。
【請求項１１】
前記第２カウンタのカウント値を補償することを特徴とする請求項９に記載の方法。
【請求項１２】
さらに、前記メモリーデバイスの初期化シーケンスに応答して、前記第１カウンタに前記外部クロック信号のカウントを開始させて、前記第２カウンタに前記内部読出しクロック信号のカウントを開始させるステップを具えていることを特徴とする請求項８に記載の方法。
【請求項１３】
前記初期化シーケンスが、
前記第１カウンタを始動させる始動信号を発生するステップと；
前記始動信号を、前記外部クロック信号から前記内部読出しクロック信号を発生する第２信号処理経路と同じ信号タイミング特性を有する遅延ロックループのスレーブ遅延線に通すステップと；
前記始動信号が前記スレーブ遅延線を通ると、前記第２カウンタを始動させるステップと
を具えていることを特徴とする請求項１２に記載の方法。
【請求項１４】
さらに、前記外部クロック信号と前記内部読出しクロック信号とのタイミング差を追跡して、これらの信号間の読出しレイテンシを維持するステップを具えていることを特徴とする請求項１３に記載の方法。
【請求項１５】
メモリーデバイスにおいて外部クロック信号を受信するステップと；
リセット信号の受信後にカウントした前記外部クロック信号のサイクル数に基づいて、第１カウンタのカウント値を更新するステップと；
遅延ロックループ回路を用いて、前記外部クロック信号から内部クロック信号を導出するステップと；
前記リセット信号を前記遅延ロックループ回路によって所定時間間隔だけ遅延させた信号の受信後にカウントした前記内部クロック信号のサイクル数に基づいて、第２カウンタのカウント値を更新するステップと；
読出しコマンドの受信後に実行した前記第１カウンタのカウント値と前記第２カウンタのカウント値との比較に基づいて、データを出力線上に出力するステップであって、前記比較の前に、前記外部クロック信号のサイクル数または前記内部読出しクロック信号のサイクル数の一方を、所定値を加算または減算することによって補償するステップと
を具えていることを特徴とするメモリーデバイスの動作方法。
【請求項１６】
前記遅延ロックループ回路が、前記外部クロック信号と前記内部クロック信号との間の所定のレイテンシを維持することであることを特徴とする請求項１５に記載の方法。
【請求項１７】
第１リセット信号に応答して、外部クロック信号のサイクル数をカウントする第１カウンタと；
前記第１リセット信号を遅延ロックループ回路によって所定時間間隔だけ遅延させた第２リセット信号に応答して、前記遅延ロックループ回路を用いることによって前記外部クロック信号から導出した内部読出しクロック信号のサイクル数をカウントする第２カウンタと；
読出しコマンドに応答して、前記第１カウンタのカウント値を記憶する記憶回路と；
前記記憶している第１カウンタのカウント値または前記第２カウンタのカウント値の一方を、所定値を加算するか所定値を減算することによって補償するカウント補償回路であって、オフセット計算機及び加算回路から成り、前記オフセット計算機によって計算した値を前記加算回路によって加算することによって、前記所定値を加算するか前記所定値を減算する前記カウント補償回路と；
前記カウント補償回路によって一方を補償した、前記第１カウンタのカウント値と前記第２カウンタのカウント値とを比較する比較回路と；
前記比較の結果に応答して、読出しデータを出力線上に出力する出力回路と
を具えていることを特徴とするメモリーデバイス。
【請求項１８】
前記所定値が内部読出しレイテンシ値であることを特徴とする請求項１７に記載のメモリーデバイス。
【請求項１９】
前記カウント補償回路が、前記記憶している第１カウンタのカウント値を補償することを特徴とする請求項１８に記載のメモリーデバイス。
【請求項２０】
前記カウント補償回路が、前記第２カウンタのカウント値を補償することを特徴とする請求項１８に記載のメモリーデバイス。
【請求項２１】
前記カウント補償回路が、読出しレイテンシ値に応答して前記補償を実行することを特徴とする請求項１９に記載のメモリーデバイス。
【請求項２２】
さらに、前記第１カウンタ及び前記第２カウンタを始動させる初期化回路を具えていることを特徴とする請求項１７に記載のメモリーデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の分野）
本発明はＤＲＡＭ回路に関するものであり、特に高速ＤＲＡＭにおける所望の読出しレイテンシ（待ち時間）を維持する回路及び方法に関するものである。
【０００２】
（発明の背景）
一般的なＤＲＡＭメモリーシステムは、ＤＲＡＭメモリーデバイスに対する読出し及び書込み要求を行う外部ＤＲＡＭコントローラを有する。読出し要求を行う際には、このコントローラは、メモリーデバイス内のデータが所定の読出しレイテンシ内にデータバス上で利用可能であることを想定し、この読出しレイテンシは通常、前記コントローラが読み出し要求を行った後のシステムクロックの所定サイクル数であり、例えば外部クロックの８サイクルである。
【０００３】
高速ＤＲＡＭにおけるデータ読出しレイテンシを維持することに伴う問題は、内部ＤＲＡＭ動作用読出しクロック信号を含むタイミング信号を発生する内部遅延ロックループ（ＤＬＬ：delay locked loop）を用いてデータを外部クロックに合わせる必要性から生じる。外部ＤＲＡＭクロック、内部コマンド／アドレス捕獲クロック、及び読出しクロック信号を発生するために用いるＤＬＬの出力クロック相互間の位相関係は完全に任意であり、周波数、及びプロセス、電圧、温度（ＰＶＴ：process, voltage, temperature）の変化に依存する。コマンド捕獲クロックは、クロックレシーバ（受信回路）及び他のクロック分配遅延によって外部クロックに対して遅延される。ＤＬＬは、データ出力回路の遅延によって外部クロックに対して時間遅れしているが、内部クロックレシーバから入力信号を受信し、そして外部クロックに同期していない出力信号に調整も施す。完全なクロックサイクルに近いかより大きい位相差は、コマンド／アドレス捕獲クロックドメイン（クロック領域）とＤＬＬクロックドメインとの間のタイミングの制御を困難にする。
本発明に関連する技術文献として、国際公開第２００４／０２１３５２号、国際公開第０１／０１６９５７号が挙げられる。
【０００４】
上述したように、内部的には、ＤＲＡＭメモリーデバイスは自前のＤＬＬ駆動のクロックシステムを有し、このクロックシステムは外部クロック信号を受信して、この外部クロック信号から、メモリーデバイスの内部動作用の読出しクロック信号を含むいくつかの異なる内部クロック信号を発生する。第１のクロックドメインは、論理回路の大半で用いられ、メモリーアレイ・コアを駆動するために用いるタイミングを表わす。第１ドメイン用のタイミングは、フリーランニング（自走する）システムクロックからのバッファとなる内部クロックレシーバから生成される。第１ドメイン内のクロック信号の外部クロックに対する位相は、外部クロック信号を受信するクロックレシーバ内の遅延に依存する。第２ドメインも外部システムクロックから導出され、時間遅れした読出しクロック信号を表わす。このクロックドメインは遅延ロックループＤＬＬ及び関連するクロックツリーによって生成される。この第２クロックドメインは、データ読出しラッチを動作させるための読出しクロックを生成する。この読出しクロックは、外部システムクロックに対する所望の位相関係で読出しラッチに供給される。第２クロックドメインは、外部システムクロックとの指定の位相合わせを達成すべくデータ出力経路の遅延を補償して、出力データラッチを動作させる読出しクロック信号を生成する。
【０００５】
これら２つのクロックドメインのいずれも、特に高周波数の動作において外部システムクロックのタイミングを真に正確に反映しておらず、これら２つのドメイン内のクロック信号のタイミングは、メモリーデバイスの動作中のプロセス、電圧及び温度（ＰＶＴ）の変動により、互いに食い違い得る。結果的に、読出しデータの出力ラッチへの搬送を担う一方のクロックドメインが、このデータをラッチするための時間遅れした読出しクロックが当該ラッチに存在する時点とは異なる時点においてこのデータを搬送可能にする、という問題が生じ得る。
【０００６】
指定の読出しレイテンシを満足するために、メモリーデバイスは、ＲＥＡＤ（読出し）コマンドの受信に続いてクロック信号をカウント（計数）して、出力ラッチ及びデータドライバを起動して、時間遅れした読出しクロックで出力データをラッチして、指定の読出しレイテンシを生み出すのに必要な程度に正確な時刻にバスを駆動することができなければならない。
【０００７】
高速動作中には、読出しクロックの時間遅れの量が、データの利用可能性に対して中間的になるので、読出しクロックを制御して、正しいデータ出力、及び外部クロックのサイクル数で測った特定の読出しレイテンシを保証することが困難になる。
【０００８】
（発明の概要）
本発明は、読出しクロックのデータフローに対する時間遅れの量の不確定性及び変動を補償して、指定の読出しレイテンシを維持する方法及び装置を提供するものである。本発明は、ＤＬＬループ遅延を指定の読出しレイテンシを維持するための基準として利用するＤＲＡＭ回路である。ＤＬＬのループ遅延は、クロックエッジがＤＬＬの位相検出器の基準入力からこの位相検出器のフィードバック入力まで進むのに要するクロックサイクル数を表わす。理想条件の下では、前記２つのクロック信号間の位相差は０°である。結果として、ＤＬＬの遅延要素を、高速ＤＲＡＭ用の指定の読出しレイテンシを維持するために用いることができる。
【０００９】
これに加えて、本発明は、主ＤＬＬ線に至るスレーブ遅延線を利用して、ＤＬＬ出力クロックの調整に用いる主遅延線対して施された調整を追跡することができる。スレーブ遅延線は、ＤＬＬ入力クロックドメインに同期した信号を転送するために用いることができ、従ってこの信号はＤＬＬ出力クロックドメインに同期してスレーブ遅延線の出力に到達し、これにより、同じ遅延を与えられる。結果的に、遅延した信号は、同じＰＶＴ、あるいは主ＤＬＬ線に与えられたのと同じ他のタイミング変動を受け、出力経路の遅延としてＤＬＬの主信号と同じ量だけ時間遅れする。
【００１０】
本発明では、ＤＲＡＭの初期化においてリセット信号を発生させ、このリセット信号は、外部クロックのサイクル数をカウントする上流カウンタを始動させ、スレーブ遅延線を通過して、ＤＬＬ及び関連するクロックツリーによって供給される読出しクロック信号に対応するクロック信号をカウントする下流カウンタも始動させる。これらのカウンタは一旦始動すると連続的に動作し、カウント値の差は、外部クロック信号がＤＬＬを通過して内部読出しクロック信号を生成する間の内部遅延を表わす。
【００１１】
１つの好適例では、ＲＥＡＤコマンドを外部コントローラから受信すると、前記上流カウンタの内容をＦＩＦＯ（first-in, first-out：先入れ先出しバッファ）／加算器内にロードする。このカウント値は、内部読出しレイテンシ値ＩＲＬＶＡＬを加算するかあるいは減算するかのいずれかによって変更され、内部読出しレイテンシ値ＩＲＬＶＡＬは、ＤＲＡＭ回路の内部読出しレイテンシを種々のパラメータから計算するレイテンシ・オフセット計算機が発生する値である。前記上流カウンタの値によるＩＲＬＶＡＬの総計は、補償されたカウント値ＣＣＶＡＬを生成する。この補償されたカウント値は、前記下流カウンタが生成するカウント値と比較器内で比較される。
【００１２】
一旦、前記下流カウンタが前記補償されたカウント値に等しいカウント値を有すると、前記比較器がラインドライバ・イネーブルカウンタに信号を送って、ラインドライバ・イネーブルカウンタは出力信号を出力回路に送って、ＤＬＬによって発生され指定の読出しレイテンシを有する読出しクロックによって出力ラッチ内にラッチ（保持）された読出しデータを出力線上に出す。バーストモードでは、バーストのデータ信号毎に、前記ラインドライバ・イネーブルカウンタが複数の出力信号を出力回路に送る。
【００１３】
こうして、読出しクロック出力の時間遅れが変動しても、出力データは外部読出しクロックに同期して出力線上に出る。
【００１４】
第２の好適例では、内部の読出しレイテンシ値を用いて、前記上流カウンタの代わりに前記下流カウンタのカウント値をオフセットさせる（ずらす）。
【００１５】
本発明の以上及び他の特徴は、以下の図面を参照した本発明の好適な実施例の説明より一層明らかになる。
【００１６】
（実施例の詳細な説明）
本発明は、時間遅れした読出しクロックに適正にタイミングを合わせ、かつ外部クロックに同期したデータをバス出力に送ることによって、ＤＲＡＭメモリーデバイスにおける読出しクロックの不確定性及び変動を補償して、適正なデータが指定の読出しレイテンシでデータバスに送られることを保証するものである。
【００１７】
図１に、メモリーデバイス２００内で用いられる本発明の第１実施例の動作部分を示す。外部メモリーコントローラ１００は、外部システムクロックＸＷＣＬＫをメモリーデバイス２００の外部クロック線１１０上に供給し、コマンド・アドレス信号Ｃ／Ａをコマンド／アドレスバス１１２上に供給する。コントローラ１００とメモリーデバイス２００との間のメモリーアレイデータはマルチビット・データバス上で交換され、図１ではこれをバスの１本のデータ線３００で表わす。本発明は特に、メモリーデバイス２００内に発生する読出し動作のタイミングに指向したものであるので、データ線３００は、選択した読出しデータをメモリーアレイ２２６からデータパイプ２２８を通して読出しラッチ２３０、ラインドライバ２３２、データ線３００、及びメモリーコントローラ１００内に送るように示してある。データパイプ２２８は、並列的に送られたアレイデータをシリアルデータに変換して出力ＤＱパス（経路）３００に送るためのシリアライザ（直列化器）を含む。
【００１８】
メモリーデバイス２００はさらに、外部システムクロックＸＷＣＬＫを受信して一時蓄積（バッファ）するクロックバッファ２１０、コマンド・アドレスバス１１２上に出現するコマンド・アドレス信号を受信して一時蓄積するコマンド／アドレスバッファ２１２、及びメモリーコントローラ１００から入力されるコマンドをラッチ（保持）しデコード（復号化）するコマンドＣＭＤラッチ兼デコーダ２２０を具えている。コマンドデコーダ２２０によってデコードされたＲＥＡＤ（読出し）コマンドは、メモリーアレイ２２６上の読出し動作を開始するために利用される。読出し動作は、メモリーデバイス２００の制御論理回路によって開始され、制御論理回路は図１では読出し論理回路２２２として表わされ、読出し論理回路２２２はメモリーアレイ２２６を操作して、コントローラ１００によって指定され、アドレスデコーダ２２４によってデコードされた１つ以上のメモリーアドレスからデータを読み出す。読出し論理回路２２２は、バッファ（一時蓄積）された外部クロック信号ＸＷＣＬＫ１１０によって駆動される。
【００１９】
上記バッファされた外部クロック信号はＤＬＬ２５０にも供給され、ＤＬＬ２５０はクロックツリー２５６との組合せでメモリーデバイス２００用の追加的な内部クロック信号を生成し、これらのクロック信号の１つは、メモリーアレイ２２６からの出力データをラッチするために用いられる線２５７上の読出しクロック信号である。上述したように、ＤＬＬ２５０及びクロックツリー２５６によって生成される読出しクロック信号は、出力経路内の遅延によって時間遅れしている。読出しクロック信号の特定エッジを選定して出力読出しラッチ２３０を駆動して、アレイ２２６からのデータ読出し用の指定の読出しレイテンシを達成する。
【００２０】
コマンド／アドレスバス信号はコマンド／アドレスバッファ２１２を通過して、コマンドＣＭＤラッチ／デコーダ２２０及びアドレスラッチ／デコーダ２２４に入力され、メモリーコントローラ１００からのコマンド・アドレスデータ内で適切に読み出される。
【００２１】
読出しデータが適正な時間関係で、ＰＶＴ及び他のタイミング変動によらずにバスライン３００に送られることを保証するために、本発明は上流カウンタ２６０、ファーストイン・ファーストアウト（ＦＩＦＯ：先入れ先出し）レジスタ兼加算器２６２、比較器（コンパレータ）２６４、カウンタ２６６、下流カウンタ２５８、前方遅延レジスタ２４２、レイテンシ・オフセット計算機２４６、ＤＬＬループタイマー２４４、及びＤＬＬ２５０の一部であるスレーブ遅延パス（経路）を用いる。これらの回路は協働して、イネーブル信号を出力バスドライバ２３２に供給して、読出し出力データが、外部システムクロックのサイクル数で測った適正なレイテンシでバス３００に送られることを保証する。
【００２２】
内部読出しレイテンシ計算機は、読出しデータと出力ドライバ２３２用のイネーブル信号とが適正な時間関係で出力ドライバ２３２に到着することを保証するために次の値を必要とする：
【００２３】
信号が遅延ロックループ２５０、クロックツリーモデル２５４、及びＩ／Ｏモデル２５２の全体を通過するのに要するサイクル数を表わす値Ｎが、レイテンシ・オフセット計算機２４６に供給される。値Ｎは、信号が遅延ロックループのクロックドメインによってタイミング合わせされた際に、この信号が入力クロックパッドから出力データパッドまでのダイを通過するのに要する外部クロックサイクル数も表わす。値Ｎは、デバイスの初期化中のＤＬＬ２５０のループ遅延、クロックツリーモデル２５４の遅延、及びＩ／Ｏモデル２５２の遅延を測定するＤＬＬループタイマー２４４によって定められる。
【００２４】
図３で表わすデバイスの初期化中には、ＤＬＬ２５０がロックして、ＤＬＬループタイマー２４４に、バッファレシーバ（バッファ受信機）２１０から受信した外部クロックサイクル数のカウント（計数）開始を促す。ＤＬＬループタイマー２４４は、ストップ（停止）信号をＤＬＬ２５０に送って、ＤＬＬ位相検出器２８０が遅延線をさらに変化させることを防止する。次にＤＬＬループタイマー２４４は抑制したパルスを、ＤＬＬ２５０の位相検出器２８０の基準入力を通して送って、クロック信号の摂動を発生させる。この摂動は例えば、パルスがＤＬＬのサポート（支援）回路の動作に影響しない限り、クロックパルスの欠落であり得る。この抑制されたパルスはその後に、読出しクロックツリー２５６に対して出力される。読出しクロックツリー２５６がＤＬＬ２５０からの入力信号を受信すると、読出しクロックツリー２５６はフィードバック（帰還）信号をＩ／Ｏモデル２５２に対して出力し、そしてこのフィードバック信号はＤＬＬ２５０内の位相検出器２８０に至るフィードバック入力に戻って入力される。Ｉ／Ｏモデル２５２は、ＤＬＬ２５０が到着するフィードバック信号のタイミングを検出して補償し、デバイス用のＩ／Ｏ回路に想定されるＰＶＴ変動を表現することを可能にする。
【００２５】
Ｉ／Ｏモデル２５２によってＤＬＬ２５０の位相検出器２８０に供給されるフィードバック信号はＤＬＬループタイマー２４４にも供給されて、ＤＬＬループタイマー２４４がクロックの摂動を受信した際に、ＤＬＬループタイマー２４４にクロックサイクル数のカウントを停止すべきことを知らせる。ＤＬＬループタイマー２４４はそのカウント値をＤＬＬ２５０の位相検出器２８０に返送して、ＤＬＬ２５０の位相検出器２８０のサンプル及び調整のレート（速度）を設定する。前記抑制された信号がＤＬＬループを通過するのに要するクロックサイクル数は値Ｎである。
【００２６】
Ｎを計算するプロセス（過程）中には、上流カウンタ２６０のリセット信号、及びＤＬＬ２５０のスレーブ遅延回路によって遅延されたリセット信号である下流カウンタ２５８の遅延されたリセット信号は、両方のカウンタがクロックサイクル数をカウントするのを防止する論理状態である。
【００２７】
ＤＬＬタイマー２４４からの値Ｎを用いることに加えて、レイテンシ・オフセット計算機２４６は、読出しコマンドの発行と読出しデータがデータバス３００上に持って来られた時点との間の外部クロックサイクル数を表わす値Ｌをモードレジスタ２４０から供給される。図１の回路では、値Ｌは、モードレジスタ２４０によってレイテンシ・オフセット計算機２４６に供給するか、あるいはレイテンシ・オフセット計算機２４６の初期化中にプログラムするかのいずれかとすることができる。
【００２８】
値ＮをＤＬＬループタイマー２４４によって計算する間に、ＤＬＬループタイマー２４４によってクロックパルスの欠落と同時にリセット信号を線２４５上に供給することができる。このリセット信号は上流カウンタ２６０に供給されて、上流カウンタ２６０は循環カウンタによって、クロックバッファ２１０を通して送られる外部システムクロックのサイクル数をカウントする。前記リセット信号はＤＬＬ２５０内のスレーブ遅延線にも供給され、このスレーブ遅延線は遅延ロックループ２５０のタイミングに支配される。ＤＬＬ２５０内のスレーブ遅延線の出力はクロックツリーモデル２５４に供給され、クロックツリーモデル２５４は、クロックツリー２５６を通過する読出しクロックにもたらされる遅延を複製する。従って、ＤＬＬ２５０によって生成され、線２５７上の読出しクロック信号に与えられるあらゆるタイミング変動も、クロックツリーモデル２５４を通過するリセット信号２４５に与えられる。結果的に、このリセット信号は、線２５７上の読出しクロック信号にもたらされたのと同じＰＶＴあるいは他のタイミング変動を受けて、出力経路の遅延分として、線２５７上の読出しクロック信号と同じ量だけ時間遅れする。前記リセット信号は、クロックツリーモデル２５４から遅延されたリセット信号として線２５５上に出力される。このリセット信号は同時に、欠落したパルスとして送られる、というのは、下流カウンタ２５８における欠落したパルスは、下流カウンタ２５８を始動させるためのより大きいタイミングマージン（時間余裕）を与えるからである。このことは、ＤＬＬ２５０のスレーブ遅延線と真正な遅延線との間の不整合を防止する。
【００２９】
読出しクロックツリー２５６からのクロック信号は下流循環カウンタ２５８に供給され、下流カウンタ２５８は、読出しクロックツリー２５６のクロック出力を、遅延されたリセット信号が線２５５上に出現した時点から始めてカウントする。結果的に、上流カウンタ２６０及び下流カウンタ２５８は共に外部クロック信号をカウントするが、下流カウンタ２５８の値は上流カウンタ２６０の値よりも、ＤＬＬ２５０及びクロックツリー２５６に固有の遅延分だけ遅れる。
【００３０】
遅延されたリセット信号２５５は、遅延されたリセット信号が下流カウンタ２５８のリセット入力に入力された時点で、上流カウンタ２６０に存在するカウント値Ｄを前方遅延レジスタ２４２内にラッチするためにも用いられる。前方遅延レジスタ２４２内の値Ｄは、前方遅延レジスタ２４２を、ＤＬＬ２５０の入力クロックとは反対側のクロック端上で、上流カウンタ２６０によってカウント中のクロック端に対してクロック測定することによって、最も近い半サイクル単位に丸められる。
【００３１】
カウント値Ｄは、クロック信号がＤＬＬ２５０内のスレーブ遅延線及び読出しクロックツリー２５６を通過して、下流カウンタ２５８をリセットする（始動させる）のに要する外部クロックサイクル数の概略値であり、一旦、前方遅延レジスタ２４２がカウント値Ｄでラッチされると、カウント値Ｄはレイテンシ・オフセット計算機２４６に供給される。
【００３２】
レイテンシ・オフセット計算機２４６がモードレジスタ２４０から値Ｌを受け取ると、値ＣＭＰがＣＭＰ計算機２４８によって計算され、レイテンシ・オフセット計算機２４６によって使用される。値ＣＭＰは、内部信号分配遅延及び読出しストローブのプリアンブル（前置き）に起因して読出しレイテンシのタイミング発生に必要となる補償の外部クロックサイクル数を整数のクロックサイクル数で表わしたものである。
【００３３】
最後に、出力バッファ２３２の出力においてデータを指定の外部読出しレイテンシで利用可能にするのに必要な許容タイミング内に留められる範囲内で、内部読出しレイテンシの計算から安全に除去することができるサイクル数を表わすガードバンド値（ＧＢ）を、レイテンシ・オフセット計算機２４６内に配線入力する。一旦、読出しレイテンシ計算機２４６がこれらの値をすべて受け取ると、初期化において次式の計算を実行し、所望の内部読出しレイテンシを決定するために利用する：
(Ｌ−Ｎ)≧ＣＭＰ  である場合には、
上流カウンタ２６０の値に、(Ｌ−Ｎ)−ＣＭＰサイクルを加算する。
そうではなく、ＣＭＰ−(Ｌ−Ｎ)≦Ｄ−(ガードバンド)  である場合には、
上流カウンタ２６０の値から、ＣＭＰ−(Ｌ−Ｎ)サイクルを減算する。
以上に該当しない場合には、
上流カウンタ２６０の値から、Ｄ−(ガードバンド)を減算する。
【００３４】
内部読出しレイテンシの計算は、ＦＩＦＯ／加算器２６２に供給される内部読出しレイテンシ値を生成する。
【００３５】
ＦＩＦＯ／加算器２６２は、ＦＩＦＯ／加算器２６２のＲＥＱ入力でＲＥＡＤコマンドを受信すると、動作中の上流カウンタ２６０からカウント入力を受け取る。内部読出しレイテンシ値（ＩＲＬＶＡＬ）は、レイテンシ・オフセット計算機２４６による前回の計算次第で正の値も負の値もとり得る。そして加算器２６２において、上流カウンタ２６０によって供給される値に加算される。ＦＩＦＯ／加算器２６２によって提供される和は補償されたカウンタ値ＣＣＶＡＬである。
【００３６】
一旦、ＦＩＦＯ／加算器２６２がＣＣＶＡＬを計算すると、ＦＩＦＯ／加算器２６２からのＲＥＱＯＵＴ信号が比較器２６４をイネーブル（動作可能）状態にする。比較器２６４が一旦イネーブル状態になると、ＦＩＦＯ／加算器２６２からの補償されたカウンタ値（ＣＣＶＡＬ）が比較器２６４内に読み込まれる。また、下流カウンタ２５８の動作中のカウント値も比較器２６４に供給される。下流カウンタ２５８が、前記補償されたカウンタ値（ＣＣＶＡＬ）に等しい値までカウントすると、比較器２６４はスタート（始動）信号をカウンタ２６６に供給し、このスタート信号はＦＩＦＯ／加算器２６２のＡＣＫ入力への確認応答（アクノレッジ）としても作用する。
【００３７】
メモリーデバイスがバーストモードで動作しておらず、１サイクルのデータのみをメモリーコントローラ１００に供給する必要がある場合には、単一のパルスをカウンタ２６６によってマルチプレクサ（多重化器）２７０に供給し、このパルスは同期的に読出しラッチ２３０に送られ、読出しラッチ２３０は同期的に出力バッファ２３２が、内部読出しクロックによって読出しラッチ２３０内にあるデータをバスライン３００上に読み出すことを可能にする。カウンタ２６６の出力はフリップフロップ２６８にも供給され、フリップフロップ２６８は、カウンタ２６６の出力を１クロックサイクルだけ遅延させて、追加的な意図しない遅延を補償する効果を有する。フリップフロップ２６８の出力は、マルチプレクサ２７０への他の入力として供給される。マルチプレクサ２７０用の制御信号はＣＭＰであり、この信号はレイテンシ・オフセット計算機２４６によってマルチプレクサ２７０に供給される。従って、必要であれば追加的な遅延を、レイテンシ・オフセット計算機２４６によって供給することができる。
【００３８】
マルチプレクサ２７０が発生する出力信号２６７は読出しラッチ２３０において同期化され、イネーブル出力バッファ２３２をストローブして（信号で作動させて）、データをバスライン３００上で利用可能にする。
【００３９】
メモリーコントローラ１００が複数のデータ項目を要求する場合には、即ちメモリーデバイスはバーストモードで動作している。カウンタ２６６はクロックツリー２５６からクロック出力ＣＮＴを受信しこれをカウントして、バーストのカウント数に達するまで、クロックパルス毎に、フリップフロップ２６８にあるパルスをマルチプレクサ２７０の入力に供給する。カウンタ２６６からの連続的な出力は、前記バースト中の各データ出力を同期させるために用いる。
【００４０】
図２に、本発明の第２の好適な実施例を示す。この実施例は図１の実施例と類似しているが、ＦＩＦＯ２６２内の加算器をなくして、下流カウンタ２５８のカウント値は、レイテンシ・オフセット計算機２４６によって供給される内部読出しレイテンシ値（ＩＲＬＶＡＬ）に等しいサイクル数だけ変更される。下流カウンタ２５８は、カウンタにオフセット値をロードすることを可能にする論理状態を有する。従って、下流カウンタ２５８がカウントしたクロックサイクル数は、比較器２６４に供給される前に、内部読出しレイテンシ値（ＩＲＬＶＡＬ）がこのクロックサイクル数に加算されるか、あるいはこのクロックサイクル数から減算される。
【００４１】
メモリーデバイス２００からのデータ出力をメモリーコントローラ１００と同期させるためにＸサイクルを遅延ロックループに加算する必要のある場合には、下流カウンタ２５８にロードするオフセット値は−Ｘである。メモリーデバイス２００からのデータ出力をメモリーコントローラ１００と同期させるためにＸサイクルを遅延ロックループから減算する必要のある場合には、下流カウンタ２５８にロードするオフセット値は＋Ｘである。
【００４２】
結果として、上流カウンタ２６０からＦＩＦＯ２６２に供給される値はレイテンシ・オフセット計算機２４６によって変更されず；従って加算器は必要ない。比較器２６４は、読出しコマンドを受信した後に下流カウンタ２５８が上流カウンタ２６０と同一の値に達してもなお信号発生する。
【００４３】
図４に、図１〜３に開示した本発明の実施例によるＤＲＡＭメモリーデバイス２００を利用する好適な処理システム５００を示す。図４は、好適なパーソナルコンピュータまたはワークステーションのアーキテクチャを表わす。処理システム５００は、ローカルバス５０４に結合された１つ以上のプロセッサ５０１を具えている。メモリーコントローラ１００及び主バスブリッジ５０３もローカルバス５０４に結合されている。処理システム５００は、複数のメモリーコントローラ１００及び／または複数の主バスブリッジ５０３を具えることができる。メモリーコントローラ１００及び主バスブリッジ５０３は単一デバイス５０６として集積することができる。
【００４４】
メモリーコントローラ１００は１つ以上のメモリーバス５０７にも結合されている。各メモリーバス５０７は、少なくとも１つのメモリーデバイス２００を含むメモリー構成要素５０８を受け入れる。メモリー構成要素５０８は、メモリーカードまたはメモリーモジュールとすることができる。メモリーモジュールの例は、シングル・インラインメモリーモジュールＳＩＭＭ（single in-line memory module）及びデュアル・インライン・メモリーモジュールＤＩＭＭ（dual in-line memory module）を含む。メモリー構成要素５０８は１つ以上の追加的なデバイス９０９を含むことができる。例えば、ＳＩＭＭまたはＤＩＭＭでは、追加的なデバイス９０９はシリアル・プレゼンス検出ＳＰＤ（serial presence detect）メモリーのようなコンフィギュレーション（構成）メモリーとすることができる。メモリーコントローラ１００は、キャッシュメモリー５０５に結合することもできる。キャッシュメモリー５０５は処理システム５００内の唯一のキャッシュメモリーとすることができる。あるいはまた、他のデバイス、例えばプロセッサ５０１がキャッシュメモリーを含むこともでき、このキャッシュメモリーはキャッシュメモリー５０５と階層をなすことができる。処理システム５００が周辺装置またはコントローラを含み、これらがバスマスターであるか、あるいはこれらがダイレクト・メモリーアクセスＤＭＡ（direct memory access）をサポート（支援）する場合には、メモリーコントローラ１００はキャッシュ・コヒーレンシー・プロトコルを実現することができる。メモリーコントローラ１００が複数のメモリーバス５０７に結合されている場合には、各メモリーバス５０７は並列に動作することができ、あるいは異なるアドレス範囲を異なるメモリーバス５０７にマッピング（対応付け）することができる。
【００４５】
主バスブリッジ５０３は、少なくとも１つの周辺バス５１０に結合されている。周辺バス５１０には、周辺装置あるいは追加的なバスブリッジのような種々の装置を結合することができる。これらの装置は、ストレージ（記憶装置）コントローラ５１１、種々雑多なＩ／Ｏ装置５１４、二次バスブリッジ５１５、マルチメディア・プロセッサ５１８、及び従来型の装置インタフェース５２０を含むことができる。主バスブリッジ５０３は、１つ以上の特定目的の高速ポート５２２に結合することもできる。パーソナルコンピュータでは、例えばこの特定目的のポートを、高性能ビデオカードを処理システム５００に結合するために用いるアクセレレーティッド・グラフィックス・ポートＡＧＰ（accelerated graphics port、登録商標）とすることができる。
【００４６】
ストレージ・コントローラ５１１は、１つ以上の記憶装置５１３をストレージバス５１２を介して周辺バス５１０に結合する。例えば、ストレージ・コントローラ５１１をＳＣＳＩ（small computer system interface：小型コンピュータ向けの周辺装置インタフェース規格）コントローラとして、記憶装置５１３をＳＣＳＩディスクとすることができる。Ｉ／Ｏ装置５１４はあらゆる種類の周辺装置とすることができる。例えば、Ｉ／Ｏ装置５１４はイーサネット（登録商標）カードのようなローカルエリア・ネットワーク・インタフェースとすることができる。二次バスブリッジ５１５は、追加的な装置を他のバスを介して処理システム５００とインタフェース（整合）させるために用いることができる。例えば、二次バスブリッジ５１５は、ＵＳＢ（universal serial bus）装置５１７を処理システム５００に結合するために用いるユニバーサル・シリアル・ポートＵＳＢコントローラとすることができる。マルチメディア・プロセッサ５１８は、サウンド（音声）カード、ビデオキャプチャ（捕捉）カード、あるいは他のあらゆる種類のメディア・インタフェースとすることができ、これらのインタフェースもスピーカ５１９のような１つの追加的な装置に結合することができる。従来型装置インタフェース５２０は、例えば旧式のキーボード及びマウスのような従来型装置を処理システム５００に結合するために用いることができる。
【００４７】
図４に示す処理装置５００は、本発明を使用することのできる好適な処理システムに過ぎない。図４は、パーソナルコンピュータまたはワークステーションのような汎用コンピュータに特に適した処理アーキテクチャを示すが、周知の変更を加えて処理システム５００を種々の用途に用いるのにより適したものとすることができることは明らかである。例えば、処理を必要とする多くの電子装置を、メモリー構成要素５０８及び／またはメモリーバッファ装置５０４に結合されたＣＰＵ５０１に頼るより簡単なアーキテクチャを用いて実現することができる。これらの電子装置は、オーディオ／ビデオのプロセッサ及びレコーダ、ゲーム操作器、ディジタルテレビ受像機、有線または無線電話機、ナビゲーション装置（全地球測位システムＧＰＳ（global positioning system）及び／または慣性ナビゲーションに基づくシステムを含む）、及びディジタルカメラ及び／またはレコーダを含むことができるが、これらに限定されない。上記変形は、例えば、不要な構成要素の除外、特化した装置または回路の追加、及び／または複数の装置の統合を含むことができる。
【００４８】
本発明は特定の好適な実施例を参照して説明及び図示してきたが、本発明の範囲を逸脱することなしに多くの変更及び代替を行うことができることは明らかである。従って、本発明は以上の説明によって限定されるものではなく、特許請求の範囲によってのみ限定されるものと考えるべきである。
【図面の簡単な説明】
【００４９】
【図１】本発明の好適な実施例を示すブロック図である。
【図２】本発明の第２の好適な実施例を示すブロック図である。
【図３】値Ｎを計算する際のＤＬＬの動作を示すブロック図である。
【図４】プロセッサシステム内に実現した図１及び２のメモリーデバイスを表わすブロック図である。
【図１】
0004444277.tif 000002
0004444277.tif 000003
【図２】
0004444277.tif 000004
0004444277.tif 000005
【図３】
0004444277.tif 000006
【図４】
0004444277.tif 000007