(57)【特許請求の範囲】
【請求項１】
メモリデバイス（１５０）に対するクロック信号を生成するように構成されるクロック発生器（１０２）と、
前記メモリデバイスに対するストローブ信号を生成するように構成されるストローブ信号発生器（１１０）と、
前記メモリデバイスからのエラー信号を受け取るように構成される位相回復エンジン（１２０）と、を備えたメモリ制御器であって、
前記エラー信号は前記ストローブ信号の複数の周期の各々のための前記クロック信号に対する前記ストローブ信号の位相合わせを示すエラー表示を伝え、
前記位相回復エンジンは前記ストローブ信号の前記複数の周期に対する前記エラー表示に依存する累積値を保持するように構成される加算器を含み、
前記ストローブ信号発生器（１１０）は前記ストローブ信号の生成に関連する遅延を前記累積値に応じて制御するように構成されるメモリ制御器。
【請求項２】
前記ストローブ信号発生器（１１０）は前記ストローブ信号の前記生成に関連する前記遅延を前記累積値の複数のビットに応じて制御するように構成される位相制御可能信号生成デバイス（２１５）を含む、請求項１に記載のメモリ制御器。
【請求項３】
前記位相制御可能信号生成デバイスは遅延ロックループ（ＤＬＬ）デバイス（２１５）であり、前記累積値は微細遅延フィールドを形成する１つ以上の低次ビットを更に含む、請求項２に記載のメモリ制御器。
【請求項４】
前記ストローブ信号を表す出力を生成するように構成されるサンプリング回路（２１７）を更に備え、
前記ＤＬＬデバイス（２１５）の出力信号は前記サンプリング回路の制御クロッキングに結合される、請求項３に記載のメモリ制御器。
【請求項５】
前記ストローブ信号発生器（１１０）は前記クロック信号の高位相又は低位相のいずれかが前記累積値の少なくとも１つの高次ビットに応じて前記サンプリング回路によって選択的にサンプリングされるように構成される、請求項４に記載のメモリ制御器。
【請求項６】
前記サンプリング回路はフリップフロップ（２１７）である、請求項４に記載のメモリ制御器。
【請求項７】
メモリデバイス（１５０）と、
前記メモリデバイスに接続される請求項１乃至６のいずれかに記載のメモリ制御器（１００）と、を備えたシステム。
【請求項８】
クロック信号及びストローブ信号をメモリデバイス（１５０）へ供給することと、
前記ストローブ信号の複数の周期の各々のための前記クロック信号に対する前記ストローブ信号の位相合わせを示すエラー表示を伝えるエラー信号を前記メモリデバイスから受け取ることと、
前記ストローブ信号の前記複数の周期に対する前記エラー表示に依存する累積値を保持することと、
前記ストローブ信号の生成に関連する遅延を前記累積値に応じて制御することと、を備えた方法。
【請求項９】
前記ストローブ信号の生成に関連する前記遅延を制御することは、ＤＬＬデバイス（２１５）に関連する前記遅延を前記累積値の第１の複数のビットに従って制御することを含む、請求項８に記載の方法。
【請求項１０】
前記ストローブ信号の生成に関連する前記遅延を制御することは、
前記クロック信号の高位相又は低位相のいずれかが前記累積値の少なくとも１つの高次ビットに応じて選択的にサンプリング回路に供給されるようにすることと、
前記サンプリング回路のクロッキングを前記ＤＬＬデバイス（２１５）の出力と共に制御することと、を更に含む、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はメモリサブシステムに関し、より特定的にはメモリサブシステムのための書き込みレベライゼーションメカニズムに関する。
【背景技術】
【０００２】
種々のメモリサブシステムアーキテクチャは、メモリ制御器で生成されるメモリクロック信号及びデータストローブ（ＤＱＳ）信号が位相合わせされて対応するメモリデバイスに到着し、読み出し及び書き込み動作を効率的に実行するように設計される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ダブルデータレート同期ダイナミックランダムアクセスメモリ(Double Data Rate Synchronous Dynamic Random Access Memory)（ＤＤＲ＿ＳＤＲＡＭ）及びＤＤＲ２＿ＳＤＲＡＭシステムにおいては、これら信号に関連する痕跡長さが一致するという事実に少なくとも部分的に起因して、これら信号は位相合わせされている。ＤＤＲ３＿ＳＤＲＡＭシステムはそれらの信号に対して一致した痕跡長さを有していないので、ＤＤＲ３＿ＳＤＲＡＭメモリアーキテクチャは、メモリクロック信号とＤＱＳ信号をメモリデバイスで位相合わせする書き込みレベライゼーションを実行するためのメカニズムを含むであろう。
【課題を解決するための手段】
【０００４】
コンピュータシステムの１つ以上のメモリデバイスでのクロック信号及び一連のストローブ信号を位相合わせ(aligning)するための方法及び装置について、種々の実施形態が開示される。１つの実施形態においては、メモリ制御器は、クロック信号を生成するように構成されるクロック発生器と、各ストローブ信号を生成するように構成される個々のストローブ信号発生器とを含む。メモリ制御器は各ストローブ信号発生器に付随する位相回復エンジンを更に含み、位相回復エンジンは対応するメモリデバイスからのエラー信号を受け取るように構成される。エラー信号は、ストローブ信号の複数の周期の各々のためのクロック信号に対するストローブ信号の位相合わせを示すエラー表示を伝える。位相回復エンジンは、ストローブ信号の複数の周期に対するエラー表示に依存する累積値を保持するように構成される加算器を含む。ストローブ信号発生器は、ストローブ信号の生成に関連する遅延を累積値に応じて制御するように構成される。
【図面の簡単な説明】
【０００５】
【図１】図１はメモリ制御器及び１つ以上のメモリモジュールを含むメモリサブシステムの１つの実施形態のブロック図である。
【０００６】
【図２Ａ】図２Ａは１つの実施形態に従うメモリクロック（ＭｅｍＣｌｋ）信号に対するデータストローブ（ＤＱＳ）信号の位相合わせを示すタイミング図（その１）である。
【図２Ｂ】図２Ｂは１つの実施形態に従うＭｅｍＣｌｋ信号に対するＤＱＳ信号の位相合わせを示すタイミング図（その２）である。
【図２Ｃ】図２Ｃは１つの実施形態に従うＭｅｍＣｌｋ信号に対するＤＱＳ信号の位相合わせを示すタイミング図（その３）である。
【０００７】
【図３】図３はメモリクロック発生器、ストローブ信号発生器、及び位相回復エンジンの１つの実施形態のブロック図である。
【０００８】
【図４】図４はメモリモジュールのメモリデバイスの１つの実施形態のブロック図である。
【０００９】
【図５】図５はメモリサブシステムにおける種々の実施形態に従う書き込みレベライゼーションのための方法を示すフローチャートである。
【００１０】
【図６Ａ】図６ＡはＤＱＳ信号とＭｅｍＣｌｋ信号の間での位相合わせを示すエラー信号の生成を示すタイミング図（その１）である。
【図６Ｂ】図６ＢはＤＱＳ信号とＭｅｍＣｌｋ信号の間での位相合わせを示すエラー信号の生成を示すタイミング図（その２）である。
【００１１】
【図７】図７はメモリクロック発生器、ストローブ信号発生器及び位相回復エンジンの１つの特定の実装のブロック図である。
【００１２】
【図８】図８は加算器によって保持される累積値のフィールドを示す図である。
【００１３】
【図９】図９は図７の実施形態に関係する動作を示すフローチャートである。
【図１０】図１０は図７の実施形態に関係する信号を示すタイミング図（その１）である。
【図１１】図１１は図７の実施形態に関係する信号を示すタイミング図（その２）である。
【００１４】
【図１２】図１２はストローブ信号発生器及び位相回復エンジンの更に特定の実装を示すブロック図である。
【００１５】
【図１３】図１３は１つの実施形態に従い遅延期間がそれに続くＤＱＳ周期の繰り返しシーケンスを示すタイミング図である。
【００１６】
【図１４】図１４は加算器の特定の実装を示すブロック図である。
【００１７】
【図１５】図１５はプロセッサ及びシステムメモリを含むコンピュータシステムの１つの実施形態のブロック図である。
【００１８】
本発明が種々の修正及び代替的な形態を許容し得る一方で、その具体的な実施形態が例示の目的で図面に示されており、ここに更に詳細に説明されることとなる。しかしながら、図面及びそれに対する詳細な説明は、開示された特定の形態に本発明を限定することを意図しているのではなく、むしろ添付の特許請求の範囲により画定されるような本発明の精神及び範囲内にある全ての改変、均等なもの及び代替案を網羅する意図であることが理解されるべきである。
【発明を実施するための形態】
【００１９】
図１を参照すると、１つの実施形態に従いメモリ制御器１００と１つ以上のメモリモジュール１８０とを備えたメモリサブシステムのブロック図が示されている。図示されるように、メモリ制御器１００はクロック発生器１０２、メモリクロック発生器１０５、複数のデータストローブ信号発生器１１０Ａ〜Ｘ、及び複数の位相回復エンジン１２０Ａ〜Ｘを含んでいてよい。メモリモジュール１８０は各々、複数のメモリデバイス１５０Ａ〜Ｘを含んでいてよい。以下に更に説明されるように、メモリ制御器１００はメモリデバイス１５０でメモリクロック（ＭｅｍＣｌｋ）信号と対応するデータストローブ（ＤＱＳ）信号とを位相合わせするための書き込みレベライゼーションアルゴリズムを支持して、メモリ読み出し及び書き込み動作を効果的に実行する。
【００２０】
１つの特定の実装においては、クロック発生器１０２はメモリクロック発生器１０５、ストローブ信号発生器１１０Ａ〜Ｘ、及び位相回復エンジン１２０Ａ〜Ｘに接続されてよい。メモリクロック発生器１０５はメモリデバイス１５０Ａ〜Ｘに接続されてよい。メモリモジュール１８０のメモリデバイス１５０Ａ〜Ｘの各々は、ＤＱＳ信号線を介して対応するストローブ信号発生器１１０に、またエラー信号線を介して対応する位相回復エンジン１２０に接続されてよい。例えばメモリデバイス１５０Ｘは、ストローブ信号発生器１１０Ｘ及び位相回復エンジン１２０Ｘに接続されてよい。位相回復エンジン１２０Ａ〜Ｘの各々はまた、対応するストローブ信号発生器１１０に接続されていてよい。
【００２１】
メモリ制御器１００及びメモリモジュール１８０は、あらゆる種類のコンピュータシステム又は処理システム、例えば数ある中でもパーソナルコンピュータ（ＰＣ）、ワークステーション、サーバーブレード(server blade)、携帯型コンピュータデバイス、ゲーム機、システムオンチップ（ＳｏＣ）、テレビジョンシステム、オーディオシステム内に含まれていてよい。メモリ制御器１００及びメモリモジュール１８０はコンピュータシステムの回路基板又はマザーボードに接続されていてよい。種々の実施形態においては、メモリ制御器１００はコンピュータシステムのプロセッサ内に一体化されていてよい。他の実施形態においては、メモリ制御器１００は別体のチップセットによりプロセッサ外部に実装されていてよい。メモリモジュール１８０はコンピュータシステムのメインシステムメモリ（例えば図１５のシステムメモリ６４０）の形をとってよい。メモリモジュール１８０はデュアルインラインメモリモジュール（ＤＩＭＭ）であってよく、またメモリデバイス１５０はＲＡＭデバイス、例えばＤＤＲ３＿ＳＤＲＡＭデバイスであってよい。しかし、他の実施形態では、メモリデバイスでＭｅｍＣｌｋ信号と対応するＤＱＳ信号とを位相合わせするために、他の種類のメモリを含むメモリサブシステム内に書き込みレベライゼーションアルゴリズムが実装されてよいことに言及しておく。
【００２２】
動作中、クロック発生器１０２はメモリ制御器１００の内部クロックとして作用するクロック信号（ＰＣｌｋ）を発生することができる。１つの特定の実装においては、ＤＤＲ３＿ＳＤＲＡＭに対して内部クロックは１６００ＭＨｚで動作してよい。内部クロック信号はストローブ信号発生器１１０及びメモリクロック発生器１０５をはじめとするメモリ制御器１００の種々の構成要素に供給されてよい。１つの実施形態では、内部クロック信号はメモリクロック発生器１０５がメモリクロック（ＭｅｍＣｌｋ）信号を生成するのに用いられるタイミング参照として作用することができる。図示されるように、ＭｅｍＣｌｋ信号はメモリデバイス１５０の各々に供給される。１つの特定の実装においては、ＭｅｍＣｌｋ信号は内部クロック信号ＰＣｌｋの半分の周波数で（例えば８００ＭＨｚで）生成されてよい。
【００２３】
内部クロック信号（ＰＣｌｋ）はまた、対応するメモリデバイス１５０に供給されるそれぞれのデータストローブ（ＤＱＳ）信号をストローブ信号発生器１１０の各々が生成するのに用いられるタイミング参照として作用してよい。例えばストローブ信号発生器１１０Ａは対応するＤＱＳ信号をメモリデバイス１５０Ａへ供給する。当業者に理解されるであろうように、ＤＱＳ信号は、メモリサブシステムの動作の標準モードの間に、メモリデバイス１５０に関連するデータ読み出し及び書き込み動作を制御するために用いられる。
【００２４】
書き込みレベライゼーション手続きの間、ＤＱＳ信号はメモリデバイス１５０でのＭｅｍＣｌｋ信号をサンプリングするための試験信号として供給されてよく、それによりＭｅｍＣｌｋ信号に対する各ＤＱＳ信号の位相合わせを決定することができる。特に、ストローブ信号発生器１１０はその対応するＤＱＳ信号を、ＭｅｍＣｌｋ信号と同じ周波数を有する複数周期（又は複数ストローブ）の形態で生成してよい。ＤＱＳ信号及びＭｅｍＣｌｋ信号はメモリ制御器１００で位相合わせを開始されてよいのであるが、これら信号がメモリデバイス１５０に到着するとき、図２Ａに示されるように個々のＤＱＳ信号はＭｅｍＣｌｋ信号に先行しており、あるいは図２Ｂに示されるようにＭｅｍＣｌｋ信号に対して遅れている。これら信号はメモリデバイス１５０まで完全に異種の経路をとるので痕跡長さは一致せず、従ってこれら信号が位相合わせされずにメモリデバイス１５０に到着することをもたらす異なる遅延が導入されるであろう。個々のＤＱＳ信号を遅延させあるいは早めてＤＱＳ信号とＭｅｍＣｌｋ信号を位相合わせするために、以下に更に説明されるように書き込みレベライゼーションがメモリサブシステムに実装されてよい。書き込みレベライゼーションの後、図２Ｃに示されるように、対応するメモリデバイスで受け取られるときに各ＤＱＳ信号は、ＭｅｍＣｌｋ信号に対して位相合わせされられるであろう。この初期化手続きに続いて、メモリサブシステムは、実行されるべき標準データ読み出し及び書き込み動作を可能にする動作モードに入ることができる。
【００２５】
位相回復エンジン１２０は、対応するメモリデバイス１５０から受け取ったエラー信号を解釈及び処理し、書き込みレベライゼーションアルゴリズムを実行するために用いることができる。各位相回復エンジン１２０は、対応するメモリデバイス１５０へ送られたＤＱＳ信号の各周期に応答するエラーの表示を受け取ることができる。位相回復エンジンは次いでエラー表示を処理して、ＭｅｍＣｌｋ信号に対する位相合わせを達成するために対応するＤＱＳ信号に付随させられる遅延を増やすかあるいは減らすかを決定する位相合わせ情報を生成することができる。尚、幾つかの実施形態では、書き込みレベライゼーション手続きの間にエラー信号を受け取るためのフィードバック経路は、標準メモリ読み出し及び書き込み動作の間のデータ転送に用いられるのと同じ線、例えばメモリサブシステム内の双方向データ（ＤＱ）線であってよい。書き込みレベライゼーション手続きの特定の実装又は実施に関する更なる詳細は、図３〜１４と共に以下に説明される。
【００２６】
尚、図１を参照して説明した構成要素は例示のみを目的としたものであり、本発明をいかなる特定の一連の構成要素又は構成に限定することを意図したものでもない。例えば種々の実施形態において、必要に応じて、１つ以上の説明された構成要素が省かれ、結合され、修正されてよく、あるいは付加的な構成要素が含まれていてよい。
【００２７】
図３はメモリクロック発生器１０５、ストローブ信号発生器１１０（例えば図１のストローブ信号発生器１１０Ａ〜１１０Ｘのどれをも代表して）、及び位相回復エンジン１２０（例えば対応する位相回復エンジン１２０Ａ〜１２０Ｘを代表して）の１つの実施形態の一般化されたブロック図である。図４はメモリデバイス１５０（例えば対応するメモリデバイス１５０Ａ〜１５０Ｘを代表して）の１つの実施形態のブロック図である。図示されるように、メモリクロック発生器１０５は遅延ロックループ（ＤＬＬ）デバイス２０６、２分の１分周器２０７、及びフリップフロップ２０８を含んでよい。同様にストローブ信号発生器１１０はＤＬＬデバイス２１５、２分の１分周器２１６、及びフリップフロップ２１７を含んでよい。位相回復エンジン１２０がエラー値発生器２２２及び加算器２２５と共に示されている。最後にメモリデバイス１５０はフリップフロップ２５５と共に示されている。尚、例示された回路要素の特定の実装に関連して用いられるであろう種々の回路、例えば信号ドライバ、バイアス回路、マルチプレクサ等は簡潔明瞭のために図から省略されているかもしれない。
【００２８】
図１〜４及び関連する図５のフローチャートを集合的に参照すると、書き込みレベライゼーション手続きの間に、メモリ制御器１００のメモリクロック発生器１０５はメモリモジュール１８０の各メモリデバイス１５０へＭｅｍＣｌｋ信号を供給し（この実施形態ではＰＣｌｋの半分の周波数で）、各ストローブ信号発生器１１０はＭｅｍＣｌｋ信号の周波数で周期するそれぞれのＤＱＳ信号を対応するメモリデバイス１５０へ供給する（ブロック４０２）。前述したようにＤＱＳ信号及びＭｅｍＣｌｋ信号は、対応するメモリデバイス１５０でのＭｅｍＣｌｋ信号に対する各ＤＱＳ信号の位相合わせを決定するためのエラー表示を発生するために供給される。
【００２９】
図示された実施形態では、メモリデバイス１５０へ供給されるＤＱＳ信号の１周期の各立ち上がりエッジが、例えばフリップフロップ２５５を用いてＭｅｍＣｌｋ信号のサンプリングをもたらす。サンプリング動作に応答して、位相回復エンジン１２０はメモリデバイス１５０からエラー表示を受け取ってよい（ブロック４０４）。具体的には図示された実施形態では、ＤＱＳ信号の各周期の立ち上がりエッジがフリップフロップ２５５にＭｅｍＣｌｋ信号のサンプリングをもたらし、そうして対応するエラー信号がメモリデバイス１５０でのＭｅｍＣｌｋ信号に対するＤＱＳ信号の位相合わせに応じて低又は高のいずれかに駆動される。例えば図６Ａに示されるように、ＤＱＳ信号の最初の立ち上がりエッジではＭｅｍＣｌｋ信号が低にサンプリングされてよく、従って対応するメモリデバイス１５０から提供されるエラー信号は低に駆動される。それに続くＤＱＳ信号の立ち上がりエッジでは（ＭｅｍＣｌｋ信号に対する僅かな位相シフトと共に例示的に示されている）、ＭｅｍＣｌｋ信号は高にサンプリングされ、従ってエラー信号は高に駆動される。
【００３０】
図６ＢはＭｅｍＣｌｋ信号が最初に高にサンプリングされて高いエラー信号をもたらし次いで低にサンプリングされて低いエラー信号をもたらす同様の例を示している。
【００３１】
エラー信号において伝えられるエラー表示を受け取ることに応答して、対応する位相回復エンジン１２０は関連する累積値を更新してよい（ブロック４０６）。例えば図３の実施形態においては、累積値（後述するように特定の初期値に初期化されてよい）は加算器２２５によって保持されてよい。ＤＱＳ信号の各周期では、位相回復エンジン１２０のエラー値発生器２２２は、エラー信号の状態を第１の値（例えばエラー信号が高の場合に−１）又は第２の値（例えばエラー信号が低の場合に＋１）のいずれかと関連付け、第１又は第２の値を加算器２２５へ供給する。加算器２２５はエラー値発生器２２２から供給された値（又はそれに応じた値）を２番目に最新の累積値に加えて、更新された累積値を導き出す（例えばＤＱＳ信号の各周期で）。従って、加算器２２５で保持される累積値は、ＭｅｍＣｌｋ信号に対するＤＱＳ信号の位相合わせに依存して増大し又は減少することに言及しておく。累積値又はそれに応じた信号はＤＬＬデバイス２１５に対応して供給され、対応するＤＱＳ信号の生成に関連する遅延が制御される。このように、ＭｅｍＣｌｋ信号に対するＤＱＳ信号の位相合わせは、位相合わせを達成するためのフィードバック方法において調節及び制御されてよい。尚、図５のブロック４０２〜４０８を参照した上述の一般的動作は、種々の特定のメカニズム及び方法、例えば以下に図７〜１４を参照して論じられるようなメカニズム及び方法を用いて実施され得る。また、ここに説明される遅延ロックループデバイス（例えばＤＬＬ２１５）は、他の実施形態では位相補間器等の他の位相制御可能信号生成デバイスで置換されてよい。
【００３２】
図７はメモリクロック発生器１０５、ストローブ信号発生器１１０、及び位相回復エンジン１２０の１つの特定の実装のブロック図である。図３の回路部分に対応する回路部分には簡潔明瞭のために同一の番号が付されている。図示された実施形態では、メモリクロック発生器１０５はＤＬＬ２０６の出力に接続される２分の１クロック分周器２０７と共に示されている。ストローブ信号発生器１１０はＤＬＬ２１５、フリップフロップ７０２、２：１マルチプレクサ７０４、及びインバータ７０６と共に示されている。位相回復エンジン１２０はエラー値発生器２２２と加算器２２５の間に接続される利得ユニット７１０と共に図示されている。
【００３３】
図７の実施形態では、加算器２２５は３つのフィールドを含む累積値を保持するように構成される。特に図８に示されるように、１つの実施形態では、加算器２２５で保持される累積値はビット[９：０]の形をとる１０ビット値である。ここでは微細遅延ビット（又はフィールド）と称されるビット[２：０]は、雑音に対する平均化を提供し、またＤＬＬ２１５の更新とエラー信号における対応する応答の間の遅延を提供し、それにより安定性を提供する。ビット［７：３］はＤＬＬ２１５に付随する遅延を制御する。ビット［９：８］は以下に更に論じられるように粗い遅延を提供する。尚、図示される実施形態では微細遅延ビットはビット［２：０］の形をとっているが、他の実施形態では微細遅延ビット［ｎ：０］が１以上のビットで異なる数字により形成されてよい。同様にＤＬＬ制御ビット［ｃ：ｎ＋１］及び粗遅延ビット［Ｍ：ｃ＋１］の各々も、１以上のビットで異なる数字により形成されてよい。
【００３４】
図７の実施形態の動作が図９のフローチャート並びに図１０及び１１のタイミングチャートと共に論じられる。既に論じられたように、書き込みレベライゼーション手続きの間、エラー値発生器２２２は、対応するＤＱＳ信号の各立ち上がりエッジ上でのエラー信号において伝えられるエラー表示を受け取ってよい（ブロック４３２）。受け取ったエラー信号が低状態にある場合には、対応するメモリデバイス１５０で受け取ったＤＱＳ信号がＭｅｍＣｌｋ信号に先行している（図２Ａに示されるように）ことを示しているであろう。受け取ったエラー信号が高状態にある場合には、ＤＱＳ信号がＭｅｍＣｌｋ信号に遅れている（図２Ｂに示されるように）ことを示しているであろう。エラー値発生器２２２は、エラー信号が高である場合（ブロック４３４及び４３６）にはエラー表示を第１の値、例えば−１に関連付け、エラー信号が低である場合（ブロック４３４及び４３８）にはエラー表示を第２の値、例えば＋１に関連付けることができる。
【００３５】
図７の実施形態においては、エラー値発生器２２２からの第１又は第２の値は利得ユニット７１０へ供給され、利得ユニット７１０は供給された値を増幅する（又は減衰させる）（ブロック４３９）。例えば、利得ユニット７１０は値を＋１から＋８に、あるいは−１から−８に増やし、そして結果としての増幅された値を加算器２２５へ供給することができる。ＤＱＳ信号の各周期に対して、加算器２２５は利得ユニット７１０からの増幅された値をその２番目に最新の累積値と共に合算して、更新された累積値を導き出す（ブロック４４０）。尚、利得ユニット７１０によって提供される特定の利得量は、ＤＱＳ信号の各サンプリングにおいて累積値が増大し又は減少する範囲を制御することができる。また、利得ユニット７１０によって提供される利得量はプログラム可能であってよい。更に、利得ユニット７１０が単位利得よりも小さい利得を提供してよい実施形態においては、加算器２２５によって保持される累積値の微細遅延フィールドは、１以上の付加的ビット（例えば図８において［−１］及び［−２］で示される）を含むことができ、それにより当該微細単位の値の累積が可能になる。
【００３６】
図示されるように、累積値のビット［７：３］は、ＤＬＬ２１５の出力信号（ＤｌｌＣｌｋ）に関連する遅延を制御するために供給される。１つの実施形態では、ＤｌｌＣｌｋ信号は単位間隔（ＵＩ）の１／３２の分数インクリメントにおいて制御可能に遅延させられてよく、単位間隔は内部クロックＰＣｌｋの周期に等しい。図１０はＰＣｌｋ信号に対して単位間隔の０／３２から３１／３２までＤｌｌＣｌｋ信号を遅延させたそれぞれのバージョンを示している。累積値のビット［７：３］に応じて、これらの選択された遅延の１つに従ってＤＬＬ２１５はＤｌｌＣｌｋ信号を生成し、当該信号をフリップフロップ７０２のクロッキングを制御するために供給する。尚、図１０は２分の１回路２０７からの出力としてのＭｅｍＣｌｋ信号も示している。図示されるようにこの特定の実施形態では、ＭｅｍＣｌｋ信号は内部クロックＰＣｌｋの周波数の半分の周波数を有している。
【００３７】
図７にまた示されるように、累積値のビット［８］はマルチプレクサ７０４の選択入力に供給される。マルチプレクサ７０４はその一方の入力でＭｅｍＣｌｋ信号を受け取り、ＭｅｍＣｌｋ信号の反転バージョンを他方の入力で受け取る。累積値のビット［８］に応じてマルチプレクサ７０４は、ＭｅｍＣｌｋ信号又はＭｅｍＣｌｋ信号の反転されたバージョンのいずれかがフリップフロップ７０２の入力として供給されるようにする。尚、幾つかの実施形態では、ＭｅｍＣｌｋ信号をメモリクロック発生器１０５から受け取るよりもむしろ、ストローブ信号発生器が、内部クロックＰＣｌｋを受け取りその周波数を２分の１にする別個の２分の１回路を用いてＭｅｍＣｌｋ信号の複製バージョンを別個に発生してよい。
【００３８】
図７の回路構成の結果、ＤＬＬ２１５によって生成される（そして累積値のビット［７：３］に従い遅延される）ＤｌｌＣｌｋ信号の各立ち上がりエッジで、フリップフロップ７０２は、累積値のビット［８］に応じてＭｅｍＣｌｋ信号又はＭｅｍＣｌｋ信号の反転されたバージョンのいずれかをサンプリングする。図１１に示されるように、フリップフロップ７０２の出力によって示されるＤＱＳ信号は従って、０／３２ＵＩから６３／３２ＵＩの間の１／３２ＵＩ毎のインクリメントでの、累積値に基いて制御される遅延を伴うＭｅｍＣｌｋ信号の周波数で周期される。尚、ビット［９］が含まれている場合には、遅延は概念的には０／３２ＵＩから１２７／３２ＵＩまで制御することができる（粗遅延フィールド内に設けられてよい更なるビットに対しても必要に応じて同様）。よって、ＤＬＬ２１５により生成されるＤｌｌＣｌｋ信号が１／３２ＵＩの遅延を伴い且つ累積値のビット［８］が低である場合には、ＭｅｍＣｌｋ信号は、ＤｌｌＣｌｋ信号の最初に図示された立ち上がりエッジ（１／３２ＵＩに対応する遅延を有している）で高にサンプリングされ、従ってＤＱＳ信号は高に駆動される。その図示されたＤｌｌＣｌｋ信号の次の立ち上がりエッジでは、ＭｅｍＣｌｋ信号は低にサンプリングされ、従ってＤＱＳ信号は低に移行し、以下同様である。このようにして、フリップフロップ７０２の出力として示され１／３２ＵＩに対応する遅延を伴うＤＱＳ信号を生成することができる。一方、累積値のビット［８］が高である場合には、ＤｌｌＣｌｋ信号の最初の立ち上がりエッジがＭｅｍＣｌｋ信号の反転されたバージョン（即ちＭｅｍＣｌｋバー）の低状態のサンプリングをもたらし、従ってＤＱＳ信号は低に駆動される。その図示されたＤｌｌＣｌｋ信号の次の立ち上がりエッジでは、ＭｅｍＣｌｋバー信号は高にサンプリングされ、従ってＤＱＳ信号は高に移行し、以下同様である。このようにして、３２／３２ＵＩに対応する遅延を伴うＤＱＳ信号が生成される。ＤＱＳ信号の他の遅延されたバージョンも同様にして生成することができる。
【００３９】
ＤＱＳ信号の連続する周期からもたらされるエラー表示がエラー値発生器２２２で受け取られるのにつれ、加算器２２５で保持される累積値は、対応するメモリデバイス１５０でのＤＱＳ信号とＭｅｍＣｌｋ信号の位相合わせを達成し且つ維持する値に収束することになる。もし例えばＭｅｍＣｌｋ信号に対してＤＱＳ信号が有意に先行しているとすると、累積値は徐々に増大し、ストローブ信号発生器１１０は段々と遅らせたＤＱＳ信号のバージョンを出力することとなる（即ちＤＱＳ信号を遅くし又は遅延させることとなる）。同様にして、もしＭｅｍＣｌｋ信号に対してＤＱＳ信号が有意に遅れているとすると、累積値は徐々に減少し、ストローブ信号発生器１１０はＤＱＳ信号に付随する遅延を減少させることになる（即ちＤＱＳ信号を進め又は加速することになる）。最終的には、回路のフィードバックループ構成により、対応するメモリデバイス１５０で受け取られるＤＱＳ信号とＭｅｍＣｌｋ信号の間での位相合わせを達成し且つ維持する値に累積値が収束することとなる。
【００４０】
尚、加算器２２５によって保持される累積値の微細遅延ビット［ｎ：０］は、雑音の平均化を提供し且つ更に安定性を提供する。特に、微細遅延ビットが全部で３ビット（例えば［２：０］）で形成されている実施形態（図７に示されるような）で考察する。当該実施形態においては、ビットが最初に全て論理０（即ち「０００」）である場合、累積値のビット３をインクリメントさせるには、８つの連続する「＋１」エラー値をエラー値発生器２２２／利得ユニット７１０から取ることになる（対応する変化がＤＱＳ信号に付随する遅延にもたらされる）。同様に、微細遅延ビットが最初に全て論理１（即ち「１１１」）である場合、ビット３をデクリメントさせるには、８つの「−１」エラー値をエラー値発生器２２２／利得ユニット７１０から取ることになる。このように、ＤＱＳ信号とＭｅｍＣｌｋ信号の間の位相合わせを維持する値に累積値が収束するにつれ、累積値のランダムなインクリメント及びデクリメントを引き起こし得るシステム内の雑音は、ＤＱＳ信号の選択された遅延に対していかなる変化をももたらさなくなり得る（例えば累積値のビット［８：３］は影響を受けないから）。この平均化はまた、ループ内の任意の外部遅延をも安定化させるように作用する。
【００４１】
また、図７の実施形態においては、ＤＬＬデバイス２１５は、０／３２ＵＩから３１／３２ＵＩの遅延を伴うＤｌｌＣｌｋ信号の生成を制御可能である。しかし、ＭｅｍＣｌｋ信号の周波数はＤｌｌＣｌｋ信号の周波数の半分であるから、累積値の粗遅延ビット［ｃ＋１］（例えばビット［８］）が、高位相のＭｅｍＣｌｋ信号（即ちＭｅｍＣｌｋ）又は低位相のＭｅｍＣｌｋ信号（即ちＭｅｍＣｌｋバー）のいずれがフリップフロップ７０２によるサンプリングのための入力として供給されるかを制御するために用いられる。このようにして、ＤＬＬ２１５が単に１ＵＩの範囲に及び得る選択可能な遅延を提供するように構成されているに過ぎない場合であっても、ＭｅｍＣｌｋ信号の全周期に及ぶ範囲（即ち２ＵＩ）内で選択され得る付随遅延を伴ってＤＱＳ信号が生成され得る。尚、種々の実施形態においては、累積値の粗遅延フィールドを形成する１つ以上の高次ビット（例えばビット［９］）が、加算器ラッピング(accumulator wrapping)（即ちオーバーフロー又はアンダーフロー）の追跡を単純にするために設けられてよい。
【００４２】
一旦、累積値がＤＱＳ信号とＭｅｍＣｌｋ信号の間の位相合わせを達成する値に収束すると、書き込みレベライゼーション手続きは終了してよい。種々の実施形態において、図９に図示されるように実行されてよい動作の繰り返し総数は、累積値の収束を確実にするように選択することができる。他の実施形態においては、書き込みレベライゼーション手続きが実行される間の時間の長さは、累積値の収束を確実にするように要望どおり設定されてよい。尚、利得ユニット７１０によって提供される利得が、累積値の適切な収束が達成されるまでに必要な繰り返し数又は時間を決定するであろう。書き込みレベライゼーション手続きの後、ストローブ信号発生器１１０は決定された遅延値を用いて、標準的メモリ読み出し及び書き込み動作を実行するための対応するストローブ信号の生成に関係する遅延を設定することができる。
【００４３】
幾つかの実施形態では、利得ユニット７１０によって提供される利得は、高速収束のための書き込みレベライゼーション手続きの間に自動的に調節されてよい。例えば、利得は初めに比較的高い値（例えば＋８）に設定することができる。所定数の累積周期の後、利得は低下させられてよく（例えば＋１の値まで）、それにより、収束が達成される累積値への正確な調節が可能になる。当該実施形態において利得を低下させることは、単一の利得変化ステップにおいて行われてよく、あるいは幾つかの離散的な値を経由して徐々に繰り返し低下させることによって行われてよい。更なる実施形態においては、利得ユニット７１０の利得における変化は、特定の条件、例えばＤＱＳ信号におけるＭｅｍＣｌｋ信号に対する位相反転の検出に応答してなされてよい。
【００４４】
また幾つかの実施形態では、加算器２２５によって保持される累積値は初めに所定値に設定されてよい（例えば種値(seed value)）。例えば、メモリ制御器１００が展開されてよいコンピュータシステムのＢＩＯＳ（基本入力／出力システム）コードの実行を介する初期化に際して、加算器２２５内で初期値がプログラムされてよい。例えば、微細遅延フィールドのビット［ｎ］が値「１」で初期化されてよい一方で、微細遅延フィールドの低次ビットは値「０」で初期化されてよい。ＤＬＬ制御フィールド［即ちビットｃ：ｎ＋１］及び粗遅延フィールド［即ちビットＭ：ｃ＋１］も同様に、要望に応じて特定の初期値に初期化されてよい。
【００４５】
上述した図７の説明では、ストローブ信号発生器１１０で生成されるようなＤＱＳ信号は、書き込みレベライゼーション手続きの間にＭｅｍＣｌｋ信号の周波数で連続的に周期し、また累積値は各ＤＱＳ周期に応答して受け取られるエラー表示に従って更新されるが、他の実施形態もまた可能である。例えば、図１２はシーケンサ１１０２がストローブ信号発生器１１０内に設けられている実施形態を示している。図１３に示されるように、動作中、シーケンサ１１０２がストローブ信号発生器１１０を制御するように動作し、所定数周期のＤＱＳ信号のシーケンス１２０２が繰り返す形で生成されて遅延期間１２０４がそれに続く。当該実施形態においては、シーケンス１２０２の各周期に付随するエラー表示が位相回復エンジン１２０へ供給され、それに従って上述したようにして加算器２２５に付随する累積値を更新させるであろう。その一方で、シーケンサ１１０２は、ＤＱＳ信号の周期毎でよりはむしろ、ＤＱＳ信号の周期のシーケンス１２０２全体に続いてのみ（例えば遅延期間１２０４の間）、ＤＱＳ信号の生成に付随する遅延が変化させられることを可能にする。換言すれば、それでもなお位相回復エンジン１２０が、ＤＱＳ信号の各周期に応答して受け取られるエラー表示に関連する値を累積してよいのである。しかし、周期毎の結果としてストローブ信号発生器１１０に付随する遅延を累積値が潜在的に変化させることを可能にする代わりに、ストローブ信号発生器１１０によって生成されるＤＱＳ信号に付随する遅延は、ＤＱＳ信号の周期のシーケンス１２０２全体に続いてのみ変化させられ得る（例えば遅延期間１２０４の間に）。図１３はまた、後続する第２のシーケンス１２０６の発生を種々示しており、ＤＱＳ信号の所定数周期の第２のシーケンス１２０６は、遅延が変化しないままである場合、遅延が増える場合、又は遅延が減る場合に生成されてよい。尚、シーケンサ１１０２によって制御されるような各シーケンス（１２０２，１２０６）において発生する所定数周期はプログラム可能であってよく、遅延期間１２０４の長さも同様である。また当該実施形態では、遅延期間１２０４にエラー値発生器２２２／利得ユニット７１０から出力される値の累積を避けるために、１つ以上のデシメータ１１０４を位相回復エンジン１２０内に設けることができる。
【００４６】
尚、図３、７及び１２のブロック図により一般的に示されている種々の要素は、様々な特定の回路構成及び技術を用いて実装することができる。例えば１つの特定の実装においては、加算器２２５は多段積分ダンプ構成(multi-stage integrate-and-dump configuration)を用いて実装することができる。当該実装が図１４に示されており、加算器２２５は内部クロック信号ＰＣｌｋによってクロックされる第１の加算器１４０２（例えばこの例では４ビット幅加算器）を用いて実装されている。第２の加算器１４０４が加算器１４０２の出力（符号拡張ユニット１４０６によって適切に符号拡張されている）を受け取るように接続されており、第２の加算器１４０４は累積値全体（例えばビット［９：０］）を保持するが、より低速のクロック信号（例えばこの例ではＰＣｌｋ／４の周波数を有する）によってクロックされてよい。図１４に示されるような加算器２２５の実装は、単一段階加算器を用いる実装と比較して、高いデータレートでの機能をなすためにより少ない電力を消費し且つより簡素であろう。
【００４７】
また、最後になるが、ストローブ信号発生器１１０は、位相回復エンジン１２０から供給される累積値に応じて関連付けられる、ＤＱＳ信号の生成に付随する遅延を制御するための他の特定の回路及び／又は回路構成を採用してよい。例えば幾つかの実施形態では、フリップフロップ７０２はサンプリング回路の異なる特定の実装に置換されてよい。また幾つかの実施形態では、ＤＬＬデバイス２１５は、ＭｅｍＣｌｋ信号の全周期（即ち２ＵＩ）に及ぶ遅延の範囲にわたって選択的に遅延され得る出力信号を生成するように構成されてよい。当該実施形態においては、フリップフロップ７０２及びマルチプレクサ７０４は完全に省略されてよいかもしれず、またＤＱＳ信号はＤＬＬデバイス２１５の出力から直接的にもたらされてよい。更に、累積値の各フィールドを形成するビット（即ち微細遅延ビット、ＤＬＬ制御ビット、及び粗遅延ビット）の具体的な数及び、利得ユニット７１０によって提供される利得は、与えられた実装の性能を最適化するように要望に応じて選択されてよい。
【００４８】
図１５はプロセッサ６００及びシステムメモリ６４０を含むコンピュータシステム６５０の１つの実施形態のブロック図である。プロセッサ６００は、単一の集積回路の一部として他の構成と共に製造される１つ以上のプロセッサコア、例えばプロセッサコア６０１ａ〜ｄを含んでよい。各プロセッサコア６０１は、システムメモリ６４０内に記憶されていてよい命令を実行するように構成されていてよい。当該命令は特定の命令セットアーキテクチャ（ＩＳＡ）に従って定義されてよい。例えばプロセッサコア６０１はｘ８６ＩＳＡのバージョンを実装するように構成されてよいが、他の実施形態ではプロセッサコア６０１は他のＩＳＡ又は複数ＩＳＡの組み合わせを実装してもよい。
【００４９】
図示された実施形態では、コア６０１の各々は、システムインタフェースユニット（ＳＩＵ）６１０を介してＬ３キャッシュ６２０及びメモリ制御器／周辺機器インタフェースユニット（ＭＣＵ）６３０に接続されてよい。１つの実施形態においては、Ｌ３キャッシュ６２０は任意の適切な組織(organization)を用いて実装される統合キャッシュ(unified cache)として構成されてよく、統合キャッシュはコア６０１のＬ２キャッシュとシステムメモリ６４０の間での中間キャッシュとして動作する。
【００５０】
ＭＣＵ６３０はプロセッサ６００を直接的にシステムメモリ６４０とインタフェースするように構成されてよい。例えばＭＣＵ６３０は、１つ以上の異なる種類のＤＤＲ−３＿ＳＤＲＡＭ等のランダムアクセスメモリ（ＲＡＭ）を支持するのに必要な信号を生成するように構成されてよい。システムメモリ６４０においてメモリクロック（ＭｅｍＣｌｋ）信号に対して一連のデータストローブ（ＤＱＳ）信号の各々を位相合わせするための書き込みレベライゼーションアルゴリズムを支持するために、ＭＣＵ６３０は図１〜１４を参照して上述したメモリ制御器１００の機能を含んでいてよい。システムメモリ６４０は、プロセッサ６００の種々のコア６０１によってそこで動作してよい命令及びデータを記憶するように構成されてよく、システムメモリ６４０のコンテンツは上述したキャッシュの種々の形態によってキャッシュされてよい。
【００５１】
また、ＭＣＵ６３０はプロセッサ６００に対する他の種類のインタフェースを支持することができる。例えばＭＣＵ６３０は、アクセラレーテッドアドバンスドグラフィックスポート(Accelerated/Advanced Graphics Pot)（ＡＧＰ）インタフェースの１バージョンのような専用グラフィックスプロセッサインタフェースを実装していてよく、そのような専用グラフィックスプロセッサインタフェースは、別個のグラフィックスプロセッサ、グラフィックスメモリ及び／又は他の要素を含んでいてよいグラフィック処理サブシステムに対してプロセッサ６００をインタフェースするために用いることができる。ＭＣＵ６３０はまた、１つ以上の種類の周辺機器インタフェース、例えばＰＣＩエクスプレスバス規格(PCI-Express bus standard)の１バージョンを実装するように構成されていてよく、そのような周辺機器インタフェースを介してプロセッサ６００は記憶デバイス、グラフィックスデバイス、ネットワークデバイス等の周辺機器とインタフェースすることができる。幾つかの実施形態では、プロセッサ６００の外部の補助バスブリッジ（例えば「サウスブリッジ」）が、他の種類のバス又は相互接続を介してプロセッサ６００を他の周辺デバイスに接続するために用いられてよい。尚、メモリ制御器及び周辺機器インタフェース機能はＭＣＵ６３０を介してプロセッサ６００内で統合されているように図示されているが、他の実施形態ではこれらの機能は標準的な「ノースブリッジ」配置を介してプロセッサ６００外部で実装されてもよい。例えば、ＭＣＵ６３０の種々の機能は、プロセッサ６００内で統合化されておらず別個のチップセットにより実装されてよい。
【００５２】
上述の実施形態は相当詳細に説明されてきたが、上述の開示が完全に理解されたならば、多くの変更及び修正が当業者にとって明らかであろう。以下の特許請求の範囲は、そのような変更及び修正の全てに及ぶように解釈されることが意図されている。
【産業上の利用可能性】
【００５３】
この発明は概してメモリサブシステム及びコンピュータシステムに適用することができる。
【図１】
0005520938.tif 000002
【図２Ａ】
0005520938.tif 000003
【図２Ｂ】
0005520938.tif 000004
【図２Ｃ】
0005520938.tif 000005
【図３】
0005520938.tif 000006
【図４】
0005520938.tif 000007
【図５】
0005520938.tif 000008
【図６Ａ】
0005520938.tif 000009
【図６Ｂ】
0005520938.tif 000010
【図７】
0005520938.tif 000011
【図８】
0005520938.tif 000012
【図９】
0005520938.tif 000013
【図１０】
0005520938.tif 000014
【図１１】
0005520938.tif 000015
【図１２】
0005520938.tif 000016
【図１３】
0005520938.tif 000017
【図１４】
0005520938.tif 000018
【図１５】
0005520938.tif 000019