(57)【要約】  高速双方向通信を制御するためのシステム（１０）は、例えばメモリコントローラなどのマスタデバイス（１００）に結合された、例えばメモリデバイス（４１０）などのスレーブデバイス（１１０）を有する。前記マスタデバイスは、前記マスタデバイスと前記スレーブデバイス間のデータ転送を制御するように構成されうる。前記マスタデバイスは、前記スレーブデバイスに１つ以上のクロック信号（１１８）を供給するように構成され、初期化モード中に前記マスタデバイスは前記１つ以上のクロック信号の位相アライメントを変更しうる。更に、前記マスタデバイスは、その後、前記スレーブデバイスから受信される情報に基づいて、前記マスタデバイスから送信するデータの位相アライメントを変更しうる。
2010503359.tif 000002
【特許請求の範囲】
【請求項１】
スレーブデバイス（１１０Ａ）と、
前記スレーブデバイスに結合されたマスタデバイス（１００）であって、前記マスタデバイスと前記スレーブデバイス間のデータ転送を制御するように構成されたマスタデバイスとを備え、
前記マスタデバイスは前記スレーブデバイスに１つ以上のクロック信号（１１８）に供給するように構成されており、
初期化モード中に、前記マスタデバイスは、前記１つ以上のクロック信号の位相アライメントを変更し、その後、前記スレーブデバイスから受信される情報に基づいて、前記マスタデバイスから送信するデータの位相アライメントを変更するように更に構成されているシステム（１０）。
【請求項２】
前記スレーブデバイスから受信される前記情報は、１つ以上の一方向ＣＲＣデータパス（１１２）を介して送信される巡回冗長符号（ＣＲＣ）情報を含み、前記ＣＲＣ情報は、前記マスタデバイスが複数の双方向データパス（１１４）を介して送信するデータに対応している請求項１に記載のシステム。
【請求項３】
前記マスタデバイスは、前記ＣＲＣ情報に応じて、前記マスタデバイスの受信器サンプルクロックの位相アライメントを適応的に変更するように構成された受信器位相調整回路（１０４）を有する請求項１または２に記載のシステム。
【請求項４】
前記マスタデバイスは、前記マスタデバイスによって実行される各リードオペレーション中に、前記スレーブデバイスから受信されるデータに応じて、前記マスタデバイスの受信器サンプルクロックの位相アライメントを適応的に変更するように構成された受信器位相調整回路（１０４）を有する請求項１〜３のいずれか１項に記載のシステム。
【請求項５】
通常動作中に、前記マスタデバイスは、前記スレーブデバイスから受信されるデータの計算で求めた誤り率に応じて、前記マスタデバイスが複数の双方向データパスを介して送信する前記データの前記位相アライメントを適応的に変更するように更に構成されている請求項１に記載のシステム。
【請求項６】
前記マスタデバイスは、前記スレーブデバイスに所定のパターンを送信し、計算で求めた遷移誤り率が実質的に５０％になるまで、一方向における前記送信データの前記位相アライメントを調整し、その後、もう一方の方向における前記送信データの前記位相アライメントを、データビット期間の半分と実質的に同じ量調整するように構成されている請求項５に記載のシステム。
【請求項７】
前記マスタデバイスは、アドレス／コマンド信号パス（１１６）に所定のコマンドを送信し、前記所定のコマンドに応答して前記スレーブから受信されるデータに応じて、前記１つ以上のクロック信号の前記位相アライメントを調整するように構成されている請求項１に記載のシステム。
【請求項８】
マスタデバイス（１００）が前記マスタデバイスとスレーブデバイス（１１０Ａ）間のデータ転送を制御するステップと、
前記マスタデバイスが前記スレーブデバイスに１つ以上のクロック信号（１１８）を供給するステップと、
初期化モード中に、前記マスタデバイスが、前記１つ以上のクロック信号の位相アライメントを変更し、その後、前記スレーブデバイスから受信される情報に基づいて、前記マスタデバイスから送信するデータの位相アライメントを変更するステップと、を有する方法。
【請求項９】
前記スレーブデバイスから受信される前記情報は、１つ以上の一方向ＣＲＣデータパス（１１２）を介して送信される巡回冗長符号（ＣＲＣ）情報を含み、前記ＣＲＣ情報は、前記マスタデバイスが複数の双方向データパス（１１４）を介して送信するデータに対応している請求項８に記載の方法。
【請求項１０】
メモリデバイス（４１０）と、
前記メモリデバイスに結合されたメモリコントローラ（１００）であって、前記メモリコントローラと前記メモリデバイス間のデータ転送を制御するように構成されたメモリコントローラとを備え、前記メモリコントローラは前記メモリデバイスに１つ以上のクロック信号（１１８）に供給するように構成されており、
初期化モード中に、前記メモリコントローラは、前記１つ以上のクロック信号の位相アライメントを変更し、その後、前記メモリデバイスから受信される情報に基づいて、前記メモリコントローラから送信するデータの位相アライメントを変更するように更に構成されているメモリサブシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は通信リンクに関し、より詳細には、双方向リンクを介するマスタデバイスとスレーブデバイス間の通信の制御に関する。
【背景技術】
【０００２】
多くのシステムは、従来の高速双方向信号伝送方式を使用しており、この方式では、チャネルを介して送信される信号の振幅および位相を制御する作業が、通信リンクの両端で等しく分けられている。このようなシステムでは、リンクの両端の送信器と受信器が非常に似た機能を有することができるように、リンクの制御が対称的でありうる。
【０００３】
このようなシステムの例としてメモリシステムが挙げられ、このシステムには、複雑なマスタデバイス（メモリコントローラなど）と単純なスレーブデバイス（メモリデバイスなど）が存在する。双方向データ転送は、スレーブへの転送時のデータの書き込みと、スレーブからの転送時のデータの読み出しとに相当する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
高いデータ速度での転送を可能にするために、双方向データバスの両端の受信器に、クロック位相リカバリ機構が実装されうる。大きな高周波損失または反射を示すチャネルでは、シンボル間干渉（ＩＳＩ）の影響からデータアイクロージャ（data eye closure）を防ぐために、チャネルが等化されうる。また、高いデータ転送速度を有するリンクでは、ビット誤りが発生する可能性が非常に高いことがある。このため、通常は誤り検出手段が実装される。上で説明したように、従来、このような機能はリンクの両端に実装されうる。しかし、双方向に伝搬するデータ波形のアナログ特性の制御を維持すると共に、スレーブデバイスを簡略化することが望ましいと考えられる。
【課題を解決するための手段】
【０００５】
マスタデバイスとスレーブデバイス間の高速双方向通信を制御するためのシステムおよび方法の各種実施形態が開示される。一実施形態では、システムは、例えばメモリコントローラなどのマスタデバイスに結合された、例えばメモリデバイスなどのスレーブデバイスを有する。前記マスタデバイスは、前記マスタデバイスと前記スレーブデバイス間のデータ転送を制御するように構成されうる。前記マスタデバイスは、前記スレーブデバイスに１つ以上のクロック信号を供給するように構成され、初期化モード中に前記マスタデバイスは前記１つ以上のクロック信号の位相アライメントを変更しうる。更に、前記マスタデバイスは、その後、前記スレーブデバイスから受信される情報に基づいて、前記マスタデバイスから送信するデータの位相アライメントを変更しうる。
【０００６】
特定の一実装では、前記マスタデバイスは、前記マスタデバイスによって実行される各リードオペレーション中に、前記スレーブデバイスから受信されるデータに応じて、前記マスタデバイスの受信器サンプルクロックの位相アライメントを適応的に変更しうる受信器位相調整回路を有する。
【０００７】
別の特定の実装では、通常動作中に、前記マスタデバイスは、前記スレーブデバイスから受信されるデータの計算で求めた誤り率に応じて、前記マスタデバイスが複数の双方向データパスを介して送信する前記データの前記位相アライメントを適応的に変更しうる。例えば、前記マスタデバイスは、前記スレーブデバイスに所定のパターンを送信し、計算で求めた遷移誤り率が実質的に５０％になるまで、一方向における前記送信データの前記位相アライメントを調整する。また、前記マスタデバイスは、その後、もう一方の方向における前記送信データの前記位相アライメントを、データビット期間の半分と実質的に同じ量調整し、これが各データビットの中央に対応しうる。
【図面の簡単な説明】
【０００８】
【図１】双方向データ転送の非対称制御を備えたシステムの一実施形態のブロック図。
【図２】図１のスレーブデバイスの一実施形態のより詳細な態様を示す図。
【図３】図１および図２に示した実施形態の動作を示すフローチャート。
【図４】図１のシステムの特定の実施形態のブロック図。
【図５】図４に示したメモリモジュールの例示的なピン出力図。
【発明を実施するための形態】
【０００９】
本発明は、さまざまに変形されたり、代替形態を取りうるが、その特定の実施形態が、例として図面に図示され、かつ本明細書に詳細に記載される。しかし、図面およびその詳細な説明は、開示の形態に本発明を限定することを意図するものではなく、逆に、本発明が、添付の特許請求の範囲によって規定される本発明の趣旨ならびに範囲に含まれるすべての変形例、均等物および代替例を含むことを意図することが理解されるべきである。本願にわたり、「しうる」、「してもよい」との文言は、許容を示す意味（すなわち、可能性がある、可能であること）で用いられており、義務的な意味（すなわち必須）ではない点に留意されたい。
【００１０】
図１を参照すると、双方向データ転送の非対称制御を備えたシステムの一実施形態のブロック図が示される。システム１０は、複数の信号パスおよびコネクタ１５０を介してスレーブデバイス１１０Ａ〜１１０ｎに結合されているマスタコントローラ１００を備える。図に示すように、信号パスには、双方向（ｂｉｄｉｒ）データパス１１４、コマンドパス１１６および巡回冗長符号（ＣＲＣ）情報パスおよびクロック１１８が含まれる。「スレーブデバイス１１０ｎ」は、任意の数のスレーブデバイスを例示してもよいことを示す点に留意されたい。また、数字と文字を含む参照符号を付された要素が、数字のみによって参照されることもある点にも留意されたい。例えば、スレーブデバイス１１０Ａは、必要に応じて「スレーブデバイス１１０」と呼ばれることもある。
【００１１】
図中の実施形態では、マスタコントローラ１００は、制御ユニット１０１を備え、制御ユニット１０１は送信ユニット１０１、受信ユニット１０２およびクロックユニット１０６に結合されている。一実装では、システム１０は、メモリサブシステムの例であってもよい。このため、マスタコントローラ１００はメモリコントローラであり、スレーブデバイス１１０Ａ〜１１０ｎはメモリデバイスなどであり、例えば、メモリデバイスのダイナミックアクセスメモリ（ＤＲＡＭ）の一員であるデバイスなどである。このため、コネクタ１５０は、複数のスレーブデバイス１１０などのメモリデバイスを含むメモリモジュールなどで用いられている「フィンガー」コネクタなどである。しかし、一般に、システム１０は、双方向データパスを使用するシステムであればどのようなタイプのものも例示することができる点に留意されたい。
【００１２】
一実施形態では、コマンドパス１１６は、シングルエンド信号パスを介してアドレスおよび制御の情報を伝達しうる。双方向（ｂｉｄｉｒ）データパス１１４は、双方向のシングルエンド信号パスを介してデータを双方向に伝達しうる。双方向データパス１１４は、多くの８ビット（バイト幅）のデータパスを含みうる。例えば、データパス全体は６４ビット幅であるが、データパス全体がバイトサイズの部分に分割されてもよい。データパス全体が任意の数のデータビットを有してもよく、異なるサイズの部分に分割されてもよい点に留意されたい。ＣＲＣパス１１２は、一方向のシングルエンド信号パスを介してスレーブ１１０からマスタコントローラ１００にＣＲＣ情報を伝達しうる。一実施形態では、ＣＲＣパス１１２には２つのＣＲＣビットを伝達するために２つの信号パスが含まれるが、信号パスの数やビット数は任意に設定することができる。また、クロックパス１１８は、各スレーブデバイス１１０にクロック信号０、１、２および３を伝達しうる。一実装では、各クロック信号０〜３は、差動信号の対として伝達されうる。
【００１３】
高いデータ速度では、スレーブデバイス１１０またはマスタコントローラ１００がビット誤りを受信する確率が非常に高くなる。このため、被保護ブロック内の複数のビット誤りを確実に検出する誤り検出コードにより、転送を保護することが必要となりうる。一実施形態では、このような複数のビット誤り検出を提供するために、ＣＲＣコードが使用されうる。より詳細には、図２に示すように、スレーブデバイス内のロジックとマスタコントローラ１００への誤りの報告を簡略化するために、スレーブデバイス１１０は、自身が生成中のデータか自身が受信中のデータに基づいてＣＲＣを計算する。このため、マスタコントローラ１００にＣＲＣ情報を送り返すために、１つ以上の一方向ＣＲＣ信号パス１１２が使用されうる。図２に示すように、ＣＲＣ生成ユニット１１９Ａは、自身の内部データに基づいてＣＲＣを計算し、ＣＲＣデータをマスタコントローラ１００に送り返す。リンクのいずれかの方向で誤りが検出されると、マスタコントローラ１００は動作を再試行することによって誤りを訂正しうる。
【００１４】
一実施形態では、ＣＲＣが、マスタコントローラ１００に到着したときに、ＣＲＣが保護しているデータブロックと同時にＣＲＣが利用可能となるように、ＣＲＣ情報が、スレーブデバイス１１０からマスタコントローラ１００に転送中のデータと並列に計算され送信されてもよい。一実施形態では、ＣＲＣの計算に伴う遅延は、ライトからリードへの遷移およびリードからライトへの遷移の間にデータパスで発生する遅延によって緩和されうる。
【００１５】
上で説明したように、多くの従来のシステムは、例えば、クロック位相のリカバリ、チャネル等化、誤り検出などの制御機能を両方の通信デバイスに実装することによって、高速の双方向通信を制御している。しかし、下記に詳細に説明するように、スレーブデバイス１１０は簡略化することができる。このため、マスタコントローラ１００は、スレーブデバイス１１０から受信された情報に基づいて、送信する書き込みデータの信号特性（例えば位相など）を動的かつ適応的に調整することができる制御機能を備え、スレーブデバイス１１０が正確にデータを読み出せるようにすることができる。また、マスタコントローラ１００は、マスタコントローラ１００が、スレーブデバイス１１０によって送信されるデータを受信することができるように、自身の内部受信器の特性を調整することができる。更に、マスタコントローラ１００は、アドレスおよびコマンドの情報が正しくサンプリングされるように、スレーブデバイス１１０に供給するクロック信号１１８の位相を調整しうる。
【００１６】
より詳細には、高いデータ速度では、バス中の異なる信号用の送信パスにおける遅延が不確実であるため、これらの信号の受信器のサンプルクロックをビット単位で位相調整する必要がある。この回路をスレーブデバイス１１０に使用せずに済むように、マスタコントローラ１００は、自身の送信クロックおよびデータ信号の位相を調整し、これにより、スレーブに複雑な移送シフト回路を使用せずに済むようにする。このため、制御ユニット１０１は、スレーブデバイス１１０から受信されるデータに基づいて位相情報を計算し、これが、マスタコントローラ１００内でさまざまなクロックエッジの位相を調整するために使用されうる。例えば、制御ユニット１０１は、このような情報を、ＣＲＣデータおよび読み出しデータとして受け取ると、送信ユニット１０２、受信ユニット１０４およびクロックユニット１０６内のそれぞれの位相トラッキングおよび調整回路１０３、１０５および１０７を制御しうる。
【００１７】
図２を参照すると、図１のスレーブデバイスの一実施形態のより詳細な態様を例示する図が示される。スレーブデバイス１１０Ａは、図１に示したどのスレーブデバイスを例示してもよい点に留意されたい。図３のスレーブデバイス１１０Ａは、アドレスおよびコマンド信号１１６を受信するように結合されたコアロジック２５５を有する。また、スレーブデバイス１１０Ａは、ｂｉｄｉｒデータパス１１４の１つの信号パスとＶＲｅｆ信号とを受信するために結合されたデータ入力バッファ２０９も備える。バッファ２０９の書き込みデータ出力は、フリップフロップ（ＦＦ）２０８の入力に結合されている。ＦＦ２０８の出力は、ＣＲＣユニット１１９Ａの入力と、記憶域１２０Ａとに結合されている。記憶域１２０Ａからの読み出しデータ出力信号は、ＦＦ２０６の入力に結合されている。ＦＦ２０６の出力は、データ出力バッファ２１０に結合され、これはｂｉｄｉｒデータパス１１４の同じ信号パスに結合されている。また、読み出しデータ出力信号は、ＣＲＣユニット１１９Ａの入力にも結合されている。
【００１８】
ＣＲＣユニット１１９Ａの出力は、２入力マルチプレクサ２５０の一方の入力に結合されている。マルチプレクサ２５０の出力は、ＦＦ２０５の入力に結合されている。ＦＦ２０５の出力は、出力バッファ２１１に結合され、出力バッファ２１１は、ＣＲＣおよび信号パス１１２の１つの信号パスに結合されている。マルチプレクサ２５０のもう一方の入力は、読み出しデータのデータバイトである。ＣＲＣ信号パスが、読み出しデータと多重されうる。マルチプレクサの入力の選択は、スレーブコアロジック２５５によって提供される。１本の信号パス、このため１データビットのみが図示されているが、各スレーブデバイスが操作するデータビットの数に応じて、データ信号パスの本数は任意に設定できる点に留意されたい。例えば、スレーブデバイスがＤＲＡＭデバイスである実施形態では、各デバイスに、４、８、１６などのデータパス信号が使用されてもよい。
【００１９】
図中の実施形態では、クロック１１８は、１．６ＧＨｚの差動信号として入力バッファ２１９に供給されるが、ほかの周波数が使用されてもよいことが考察される。バッファ２１９の出力は、ＦＦ２１８のクロック入力に結合されるシングルエンドクロック信号である。ＦＦ２１８の出力は、インバータ２１７を介してＦＦ２１８の入力に結合されており、このため、ＦＦ２１８は、１．６ＧＨｚのクロックを２分割しているＦＦ２１８の８００ＭＨｚの出力は、スレーブコアロジック２５５内の回路にクロックを供給するためにも使用される。ＦＦ２１８のクリア入力は、スレーブコアロジック２５５に結合されており、「トレーニングリセット」と示されている。図に示すように、ＦＦ２０５、ＦＦ２０６、ＦＦ２０８およびＦＦ２１８は、それぞれ１．６ＧＨｚのクロックによってクロック供給されている。更に、ＦＦ２０５、ＦＦ２０６およびＦＦ２０８は、デュアルエッジフリップフロップとして図示されており、入力クロック信号の立ち上がりおよび立ち下りの両方で「Ｄ」入力をラッチするように構成されている。したがって、読み出しデータ、書き込みデータおよびＣＲＣ情報を、各データパスで３．２ＧＨｚで伝達することができる。
【００２０】
一実施形態では、書き込みデータが受信されると、このデータがＦＦ２０８によってラッチされ、記憶域１２０Ａに記憶される。各種の実施形態では、記憶域１２０Ａは、データを記憶することができる記憶域であればどのようなタイプであってもよい。例えば、一実装では、記憶域１２０Ａは、行と列に配置されたメモリストレージアレイであり、代表的なＤＲＡＭデバイスに使用されているような対応するセンスアンプを備えていてもよい。アドレスコマンド信号パス１１６で受信したアドレスとコマンドに基づいて、ストレージアレイの特定の行と列がアクセスされうる。また、記憶域１２０Ａは、独立してアクセス可能なレジスタを１つ以上備えてもよく、これも、アドレスコマンド信号パス１１６で受信したアドレスとコマンドに基づいてアクセスすることができる。
【００２１】
上で説明したように、マルチプレクサ２５０を介して、スレーブデバイス１１０からマスタコントローラ１００にＣＲＣ情報が送信される。図２に示すように、ＣＲＣ信号パス１１２は、読み出しデータサイクルの一部の間に、データバイトのデータを伝達しうる。より詳細には、一実施形態では、２本のＣＲＣ信号パスが、８本のデータパスを保護しうる。スレーブデバイス１１０からマスタコントローラ１００への転送時には、データブロックおよびＣＲＣがすべて受信されるまで、ブロックのデータが正しいことを確認することができない。しかし、これにより、システムの前方向の進捗（forward progress）において重要なワードである可能性があるブロックの先頭部分のレイテンシが増大してしまう。
【００２２】
したがって、一実施形態では、この重要なワードとブロックの残りとの間に追加のインラインエラーコードを挿入することによって、重要なワードが更に保護されうる。例えば、読み出しデータブロックの先頭で重要なワード（例えばバイト０）を繰り返すことによって、追加の誤り検出情報が実装されうる。重要なワードを２回送信することによって、マスタコントローラ１００は、２つのコピー間で各ビットが同じであることを検証することができ、この重要なワードの誤り率が実質的に低下し、このため、ブロックのＣＲＣを完全に受信する前に、重要なワードを、正しいデータとして扱えるようになる。換言すると、リードオペレーション中に、スレーブデバイス１１０は、読み出しブロックの最初の２ビートまたはビットタイミング中に重要なワードを送信することができる。一実施形態では、重要な先頭データワードの２つのコピーのための空きを作るために、データバイトの１つ（例えばバイト３）が、読み出しブロックの最初の４ビートの間にＣＲＣパスに出力されうる。バス効率に対する影響を最小限に押さえると共に、ＣＲＣから十分な誤り保護を得るために、ＣＲＣが計算されるブロックすべてに、データがグループ化されうるという点に留意されたい。
【００２３】
図３の説明に関連して後で詳細に説明するように、動作中に、マスタコントローラ１００は、送信される書き込みデータの信号特性（例えば位相など）、およびその内部の受信器特性を動的かつ適応的に調整し、スレーブデバイス１１０に供給するクロック信号１１８の位相を調整しうる。より詳細には、上で説明したように、受信ユニット１０４は、サンプルクロック位相調整回路１０５を備え、サンプルクロック位相調整回路１０５はバン−バン（bang-bang）位相検出器（図示せず）を備えうる。よって、マスタコントローラ１００がスレーブデバイス１１０からデータを受信している間はいつでも、受信ユニット１０４は、スレーブデバイス１１０によって送信されるデータをより最適に受信するために、バン−バン位相検出器を使用して、自身のローカルサンプルクロック位相を調整しうる。また、マスタコントローラ１００は、クロック位相調整ロジック１０７も備え、これは、各クロック信号１２０の位相を調整するために使用されうる。例えば、電源投入リセットなどの初期化処理中に、マスタコントローラ１００は、各スレーブデバイスが、アドレスおよびコマンド信号１１６を正しくサンプリングできるようにするために、各クロック信号１１８の位相を調整しうる。更に、マスタコントローラ１００は、送信データ位相調整ロジック１０３も備え、これは、スレーブデバイス１１０Ａに送信される書き込みデータの位相を調整するために使用されうる。初期化中、および動作中に所定の間隔で、マスタコントローラ１００は、スレーブデバイス１１０Ａが、書き込みデータをより最適に受信できるようにするために、送信データの位相を調整しうる。
【００２４】
図３は、図１および図２に示した実施形態の動作を示すフローチャートである。上で説明したように、マスタコントローラ１００は、スレーブデバイスが正確に受信できるデータを送信し、スレーブデバイスが送信するデータを正確に受信できるように、自身のクロック特性、送信特性および受信特性を適応的に変更するように構成されうる。
【００２５】
図４は、図１に示したシステムの一実装を示す図である。図に示すように、システム１０は、デュアルインラインメモリモジュール（ＤＩＭＭ）４１０に結合されたメモリコントローラ１００を有するメモリサブシステムである。このため、メモリコントローラ１００は、図１に示したマスタコントローラ１００を例示しており、ＤＩＭＭ４１０は、図１のスレーブデバイス１１０を例示している複数のＤＲＡＭデバイス１１０Ａを備える。
【００２６】
図中の実施形態では、図１のクロック信号１２０がＭＣＬＫ０〜ＭＣＬＫ３として図示されている。また、上で説明したように、ＭＣＬＫ１は、最初の５つのＤＲＡＭデバイス１１０に結合されており、ＭＣＬＫ０は、続く４つのＤＲＡＭデバイス１１０に結合されている。同様に、ＭＣＬＫ２およびＭＣＬＫ３は、続く５つのＤＲＡＭデバイスおよび４つのＤＲＡＭデバイスに結合されている。図中の実施形態では、アドレス／コマンド１１６信号パスは、ＤＲＡＭデバイス１１０に並列に結合されているが、ＤＩＭＭの一端から他端に結合されている。このため、アドレス／コマンド信号のこの特定の経路により、特にＤＲＡＭデバイス同士が離れるほど、ＤＲＡＭデバイス間で信号のスキューが生じる。後で詳しく説明するように、ＤＲＡＭデバイス１１０のグループに供給される各クロックは、ほかの各クロックとは独立して位相調整されうる。
【００２７】
図１〜図４と、図３のブロック３００の開始点とを併せて参照すると、リセットまたは電源投入状態（ブロック３００）後に、マスタコントローラ１００は、各スレーブがアドレスおよびコマンド情報を正しくラッチすることができるように、各クロック信号を独立して整合させうる（ブロック３０５）。より詳細には、一実施形態では、共通クロックに結合されたスレーブデバイスのクロックスキューが同程度になるように、クロック信号（例えばクロック０、クロック１、クロック２など）のそれぞれが、１つ以上の個々のスレーブデバイス１１０に配線されうる（may be routed）。また、図４に示すように、アドレス／コマンド信号パス１１６は、全てのスレーブデバイスに並列に、ＤＩＭＭ４１０の一端から他端に配線されている。このように、あるクロック（例えばＭＣＬＫ１）を有するあるスレーブデバイス（例えば１１０Ａ）でのアドレス／コマンド信号のタイミングが、別のクロック（例えばＭＣＬＫ２）を有する別のスレーブデバイス（例えば１１０ｎ）でのアドレス／コマンド信号のタイミングと大きくずれていることがある。しかし、共通クロックが結合されているすべてのスレーブデバイスが、アドレス／コマンド信号を正しく捕捉することができるように、共通クロックの位相が調整されるように、アドレス／コマンド信号のスキューが、共通クロックに結合されているスレーブデバイス間で十分近くなる。
【００２８】
このため、一実施形態では、クロック１１８を整合させるために、各スレーブデバイス１１０は、記憶域１２０Ａに所定値を記憶させうる。この値は、スレーブデバイス（例えば１１０Ａ）に特定のアドレスまたはコマンドを送信することによってアクセスすることができ、これにより、格納されている値がスレーブデバイス１１０からマスタコントローラ１００に送信されうる。スレーブデバイス１１０Ａのクロック分周回路（例えばＦＦ２１８）が、入力クロックを正しくサンプリングしている（ブロック３１０）場合、マスタコントローラ１００は、記憶域１２０Ａに記憶されている正しい値を読み出すことができる。しかし、良好な初期マージンを得るために、クロック位相調整回路１０７は、２サイクルの間、クロック位相をスイープしうる。一実施形態では、制御ユニット１０１は、クロック位相を調整するために、位相調整回路１０７にデジタル信号を供給しうる（ブロック３１０）。クロック位相の調整中に、読み出しデータが継続的にチェックされ、制御ユニット１０１は、最も正確な結果が得られたクロック位相調整範囲を決定し、スレーブデバイス１１０Ａがマスタクロックにロックされているかどうかを判定しうる（ブロック３１５）。スレーブデバイス分周器（ＦＦ２１８）の１つ以上が間違ったエッジで１．６ＧＨｚのクロックを捕捉していることが起こりうる。このような場合、スレーブロジック２５５は、ＦＦ２１８に、トレーニングリセット信号を供給しうる（ブロック３２０）。各スレーブデバイス１１０がそれぞれのマスタクロックにロックされると（ブロック３１５）、動作はブロック３２５に進み、マスタコントローラ１００の受信ユニット１０４が、スレーブデバイス１１０から読み出しデータを正しく受信するためにトレーニングされうる。
【００２９】
一実装では、位相アライメントトレーニング中に、データがスレーブデバイス１１０に書き込まれて、記憶されうる点に留意されたい。しかし、一部の実施形態では、トレーニング中にしか使用されない特別なレジスタを設けることが望ましくないこともある。このことは、特にＤＲＡＭデバイスについていえる。このため、ＤＲＡＭデバイスのセンスアンプが、トレーニング中にスクラッチパッド記憶域として使用されうる。より詳細には、所定のメモリセルからビット値が読み出されると、そのセルに記憶されている電荷がセンスアンプに転送されて、その後読み出される。しかし、個々の記憶セルにそのデータを書き込む必要はない。
【００３０】
位相調整回路１０５は、読み出しデータとＣＲＣデータを正確に受信するために、サンプルクロック位相を調整しうる。一実施形態では、制御ユニット１０１は、受信ユニット１０４が読み出しデータに最適にロックされているかどうかを判定する回路を備えうる。受信ユニット１０４が読み出しデータに最適にはロックされていない場合（ブロック３３０）、制御ユニット１０１は、位相調整回路１０５に制御信号を供給しうる。より詳細には、一実施形態では、位相検出および調整回路１０５内のバン−バン位相検出器を使用して、ＣＲＣデータおよび読み出しデータで２つのサンプリングが行われうる。１つのサンプリングはデータの中央で、１つのサンプリングはデータの端で行われうる。これらのサンプリングの結果から、制御ユニット１０１は、サンプリングが早く行われたか、遅く行われたか、中程度で行われたかを判定しうる。この結果に基づいて、制御ユニット１０１は、受信位相調整回路１０５の位相を調整しうる（ブロック３３５）。受信ユニット１０４が読み出しデータにロックされている場合（ブロック３３０）、動作はブロック３４０に進み、送信ユニット１０２は、スレーブデバイスが読み出すことができるデータを書き込むためにトレーニングされうる。なお、通常動作中は、読み出しデータが受信されるたびに、受信ユニット１０４は継続的にトレーニングされうる。
【００３１】
受信ユニット１０４が読み出しデータおよびＣＲＣデータにロックされているとマスタコントローラ１００が判定した（ブロック３３０）場合、マスタコントローラ１００は、スレーブデバイス１１０が正確に受信することができるデータを送信するために、送信ユニット１０２をトレーニングしようと試みる。より詳細には、マスタコントローラ１００は、スレーブデバイス１１０に書き込みデータのトレーニングパターンを送信する（ブロック３４０）。一実装では、トレーニングパターンは、０から１、１から０への遷移を多く含んでもよい。制御ユニット１０１は、スレーブが書き込みデータにロックされているかどうかを判定しうる。スレーブが書き込みデータにロックされないと制御ユニット１０１が決定した場合（ブロック３４５）、制御ユニット１０１は書き込みデータの位相を調整しうる。一実施形態では、読み出しデータでみられる遷移ビット（例えば、０から１の遷移）に対して、書き込みデータが、スレーブデバイス１１０によってほぼ５０％の誤り率で不正確にラッチされて記憶される程度に、書き込みデータの位相が十分外れて調整されうる（ブロック３５０）。５０％の遷移誤り率は、書き込みデータがエッジの近くでサンプリングされていることを示しうる。次に、書き込みデータの位相が、０．５データビット時間に調整されうる。これにより、ＦＦ２０８が各データビットの中央付近でデータをサンプリングするようになる。この処理が、各スレーブデバイス１１０の各データ信号パスに対して行われうる。スレーブデバイス１１０がデータにロックされているとマスタコントローラ１００が判定すると、システム１０は通常動作を開始しうる（ブロック３５５）。
【００３２】
ブロック３６０に進み、システム１０の通常動作中に、ダイのこのような温度差のために、さまざまなクロックおよびデータの位相がドリフトしうる。上で説明したように、読み出しが発生しており、データパスでデータが転送されている限り、マスタコントローラ１００によって読み出しデータの位相アライメントが継続的に確認されうる。しかし、バストラフィックで大きなギャップが生ずると、位相が検知不能にドリフトすることがある。このように、制御ユニット１０１は、トレーニングシーケンス間の経過時間を測定することによって、所定の間隔で書き込みデータの位相をトレーニングしうる（ブロック３６５）。書き込みデータ位相のトレーニング間の経過時間が所定の範囲を越えている場合（ブロック３７０）、制御ユニット１０１は、上で説明したように、多くの遷移を含む書き込みデータのトレーニングパターンを書き込み（ブロック３７５）、書き込みデータの位相を調整して（ブロック３８５）、ブロック３４５〜３５０で上で説明したようにほぼ５０％の遷移誤り率を探すことによって、書き込みデータの位相をトレーニングする。スレーブデバイス１１０が書き込みデータにロックされていると制御ユニット１０１が判定すると（ブロック３８０）、システム１０は通常動作を続ける。
【００３３】
図５を参照すると、図４のメモリモジュールの一実施形態の例示的なピン図が示される。図４に示す実施形態では、メモリモジュールはＤＩＭＭである。代表的な場合、ＤＩＭＭは、通常はソケットに摺動するフィンガーコネクタを有する回路基板を有する。フィンガーコネクタは、ソケット内のスプリング式接点と係合する金属パッドを有する。フィンガーコネクタからＤＲＡＭデバイスに各種信号が配線されている。望ましい信号品質のクロック信号を得るためには、ピン図に示すように、クロック信号がフィンガーコネクタの端に配置される。
【００３４】
上の実施形態についてかなり詳細に記載したが、上記の開示を完全に理解できれば、数多くの変形例および変更例が当業者にとって自明であろう。下記の特許請求の範囲は、このような変形例および変更例を全て包含するものと解釈されることが意図される。
【産業上の利用可能性】
【００３５】
本発明は、一般に、通信リンク、および双方向リンクを介するマスタデバイスとスレーブデバイス間の通信の制御に利用可能である。
【図１】
2010503359.tif 000003
【図２】
2010503359.tif 000004
【図３】
2010503359.tif 000005
【図４】
2010503359.tif 000006
【図５】
2010503359.tif 000007
【国際調査報告】
2010503359.tif 000008
2010503359.tif 000009