(57)【特許請求の範囲】
【請求項１】
データストローブ信号を受信するように構成されたメモリコントローラを備えるシステムであって、
前記メモリコントローラは、
データ入力の前記データストローブ信号と、クロック入力のイネーブル信号とを受信するように結合された第１の記憶回路と、
前記第１の記憶回路から受信した出力信号に基づき、前記イネーブル信号のアサーションが前記データストローブ信号内のプリアンブル指示と一致するまで、前記イネーブル信号の位相を調整するように構成されたトレーニングユニットと、
を含むトレーニング回路と、
前記データストローブ信号を受信するように結合された第１の入力と、前記イネーブル信号を受信するように結合された第２の入力とを有する論理ゲートであって、前記イネーブル信号がアサートされる場合に、前記データストローブ信号を渡すように構成されている論理ゲートと、を備える、
システム。
【請求項２】
前記イネーブル信号を前記第１の記憶回路の前記クロック入力に提供するように結合された第２の記憶回路であって、前記イネーブル信号を前記論理ゲートの前記第２の入力に提供するように結合された第２の記憶回路をさらに備え、前記第１および第２の記憶回路はフリップフロップである、請求項１に記載のシステム。
【請求項３】
入力クロック信号を受信するように結合された遅延ロックループ（ＤＬＬ）であって、遅延を前記入力クロック信号に提供することに基づいて、出力クロック信号を生成するように構成されたＤＬＬをさらに備える、請求項２に記載のシステム。
【請求項４】
前記トレーニングユニットは制御レジスタを含み、前記ＤＬＬは、前記制御レジスタ内に格納された値に基づいて、遅延量を前記入力クロック信号に提供するように構成されている、請求項３に記載のシステム。
【請求項５】
前記トレーニングユニットは、前記データストローブ信号に対する前記イネーブル信号の前記位相を検出するように構成されており、且つ、前記制御レジスタ内に格納された前記値を更新するように構成されている、請求項４に記載のシステム。
【請求項６】
前記プリアンブルは、前記データストローブ信号内に複数の連続した論理ゼロを含み、前記トレーニングユニットは、前記イネーブル信号が前記プリアンブル内でアサートされるように、前記イネーブル信号の前記位相を調整するように構成されている、請求項１に記載のシステム。
【請求項７】
前記トレーニングユニットは、トレーニング手順の開始に応じて、前記データストローブ信号の立ち上がりエッジがいつ受信されるかを判断するように構成されている、請求項６に記載のシステム。
【請求項８】
前記トレーニングユニットは、前記データストローブ信号の立ち上がりエッジがいつ受信されるかの判断に応じて、
前記イネーブル信号の立ち上がりエッジが前記プリアンブルの終端と一致するまで、前記イネーブル信号の前記位相を増加するように調整することと、
調整における増加ごとに、制御レジスタ内に格納された値を更新することと、
前記イネーブル信号の前記立ち上がりエッジが前記プリアンブルの前記終端といつ一致するかの判断に応じて、前記値から所定量を減算することと、
を行うように構成されている、
請求項７に記載のシステム。
【請求項９】
データおよび前記データストローブ信号を前記メモリコントローラに伝達するように結合されたメモリをさらに備え、前記メモリコントローラは、前記メモリから受信したデータを、前記データストローブ信号と同期化するように構成されている、請求項１に記載のシステム。
【請求項１０】
第１の記憶回路が、データ入力のデータストローブ信号と、クロック入力のイネーブル信号とを受信して、対応する出力信号を生成することと、
メモリから受信した前記データストローブ信号に対する前記イネーブル信号の位相を、前記イネーブル信号のアサーションが前記データストローブ信号内のプリアンブル指示と一致するまで調整することであって、遅延ロックループ（ＤＬＬ）の遅延を調整することを含む、ことと、
前記遅延の指示をレジスタに格納することと、
を含む方法。
【請求項１１】
トレーニングユニットが前記プリアンブルを検出することをさらに含み、前記プリアンブルを検出することは、前記データストローブ信号内の複数の連続した論理ゼロを検出することを含む、請求項１０に記載の方法。
【請求項１２】
前記イネーブル信号が前記プリアンブル内でアサートされるように、前記トレーニングユニットが、前記イネーブル信号の前記位相を調整することをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記トレーニングユニットが、トレーニング手順の開始に応じて、前記データストローブ信号の第１の立ち上がりエッジを検出することをさらに含む、請求項１１に記載の方法。
【請求項１４】
前記イネーブル信号が、前記プリアンブルの終端で生じる前記データストローブ信号のエッジと一致するまで、前記トレーニングユニットが、前記イネーブル信号の前記位相を増加させるように調整することをさらに含む、請求項１３に記載の方法。
【請求項１５】
前記イネーブル信号の前記位相を前記プリアンブルの前記終端と一致するように調整した後に、前記トレーニングユニットが、前記イネーブル信号の前記位相を前記プリアンブルの前記終端から前記プリアンブル内に調整することをさらに含む、請求項１４に記載の方法。
【請求項１６】
前記イネーブル信号がアサートされる場合に、論理ゲートが、前記データストローブ信号をメモリコントローラ内の受信器に渡すことと、
前記イネーブル信号がアサートされない場合に、前記論理ゲートが、前記データストローブ信号の前記受信器への引き渡しを抑制することと、をさらに含む、請求項１０に記載の方法。
【請求項１７】
トレーニングユニットが、前記出力信号に基づいて、前記データストローブ信号に対する前記イネーブル信号の前記位相を判断することと、
前記トレーニングユニットが、前記データストローブ信号に対する前記イネーブル信号の前記位相に基づいて、前記ＤＬＬの前記遅延を調整することと、
第２の記憶回路が、クロック信号を前記ＤＬＬから受信することと、前記ＤＬＬから受信した前記クロック信号と同期して、前記イネーブル信号をアサートすることと、
をさらに含む、請求項１０に記載の方法。
【請求項１８】
前記調整中にメモリからの複数の連続読み取りを実行することをさらに含み、前記データストローブ信号は前記調整中に切り換わり続ける、請求項１０に記載の方法。
【請求項１９】
メモリコントローラが、読み取り要求をメモリに提供することと、
前記メモリが、前記読み取り要求の受信に応じて、前記データストローブ信号を前記メモリコントローラに提供することと、
前記イネーブル信号を、前記プリアンブル内で生じた時点でアサートすることと、
をさらに含む、請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関し、より詳細には、コンピュータシステム内のメモリの読み取りを同期化するのに用いられる信号に対する遅延時間のトレーニングに関する。
【背景技術】
【０００２】
メモリからデータを適切に読み出すために、データが有効な時間を判断することは重要なファクターである。コンピュータシステムの性能を最適化するために、この値を最小限にすることが望ましい。メモリから受信したデータが読み出され得る最適な時間を判断するために、トレーニング手順が実行され得る。
【０００３】
様々なタイプのダブルデータレート（ＤＤＲ）メモリ（例えば、ＤＤＲ、ＤＤＲ２、およびＤＤＲ３など）に対して、読み取り操作中に、データストローブ信号がデータと共にメモリから返される場合がある。データストローブ信号は、メモリコントローラ内の受信器でデータを同期化するために使用され得るソース同期クロック信号であることに加えて、そのデータが有効であることを示す。正確なタイミングを確実にするためのデータストローブ信号のトレーニングが、システム動作の開始時に実行され得る。
【０００４】
ＤＤＲデータストローブのトレーニングを実行するための一つ方法は、シードとして知られている低動作周波数での読み取りの実行で始まる。次いで、トレーニング手順は、シードとして知られている第１の周波数で返されたデータをデータストローブ信号が観察するのを可能にする最適時間を判断するために、一連の読み取りを実行し得る。シードは、コンピュータシステムの設計段階において、研究所で実施された特性評価に基づき判断され得る。トレーニングは、データストローブ信号を有効にする最適時間が判断されるまで、異なる周波数で実施され得る。元の周波数で結果として生じるトレーニングされた最適時間は、次のさらに高い周波数での後続のトレーニングに対するおおよその開始時間を計算するために使用され得る。結果として生じる第２のトレーニングされた値は、第３のさらに高い周波数などでのトレーニングに対するおおよその開始時間を計算するために使用され得る。さらに高い周波数でのトレーニングに対する開始時間を決定するために低周波数でトレーニングされた時間を使用する方法は、通常の操作で使用される全ての周波数がトレーニングされるまで、複数回繰り返され得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
データストローブ信号を有効にするための遅延をトレーニングする様々な方法および装置の実施形態が開示される。一実施形態では、システムは、データストローブ信号を受信するように構成されたメモリコントローラを含む。メモリコントローラは、トレーニング回路を含む。トレーニング回路は、データ入力のデータストローブ信号とクロック入力のイネーブル信号を受信するように結合された第１の記憶回路と、前記第１の記憶回路から受信した出力信号に基づき、イネーブル信号のアサーションがデータストローブ信号内のプリアンブル指示と一致するまで、イネーブル信号の位相を調整するように構成されたトレーニングユニットと、を含む。
【０００６】
一実施形態では、方法は、メモリから受信したデータストローブ信号に対するイネーブル信号の位相を調整することを含む。この位相は、イネーブル信号のアサーションがデータストローブ信号内のプリアンブル指示と一致するまで調整され得る。この調整は、遅延ロックループ（ＤＬＬ）の遅延を調整することによって達成され得る。本方法は、遅延指示をレジスタに格納することをさらに含む。
【０００７】
メモリサブシステムの一実施形態は、メモリコントローラに結合されたメモリを含む。メモリコントローラは、読み取り要求をメモリに送信するように構成されている。メモリは、読み取り要求に応じて、データとデータストローブ信号とを、メモリコントローラに提供するように構成されている。メモリコントローラは、イネーブル信号のアサーションがデータストローブ信号内のプリアンブル指示と一致するまで、データストローブ信号に対するイネーブル信号の位相を調整するように構成されたトレーニングユニットを含む。前記調整することは、遅延ロックループ（ＤＬＬ）の遅延を調整することを含む。メモリコントローラは、遅延指示をレジスタに格納するようにさらに構成されている。
【０００８】
本開示の他の態様は、以下の詳細な説明と、添付の図面とを参照することで明らかになる。添付の図面の簡単な説明を以下に示す。
【図面の簡単な説明】
【０００９】
【図１】処理装置と、ディスプレイと、周辺機器用バスと、メモリと、メモリコントローラとを含むシステムのブロック図である。
【図２】トレーニングユニットを含むメモリコントローラの一実施形態のブロック図である。
【図３】データストローブ信号に対するイネーブル信号の遅延をトレーニングするための方法の一実施形態を示すタイミング図である。
【図４】データストローブ信号に対するイネーブル信号の遅延をトレーニングするための方法の一実施形態を示すフロー図である。
【図５】コンピュータ可読キャリア媒体の一実施形態のブロック図である。
【発明を実施するための形態】
【００１０】
本発明は、様々な修正および代替形式を受け入れる余地があるが、図面では、本発明の特定の実施形態を一例として示し、本明細書において詳細に説明する。しかし、図面およびそれに関連する説明は、本発明を開示する特定の形式に限定することを意図しておらず、それとは逆に、本発明は、添付の請求項によって定義されるような本発明の精神ならびに範囲に含まれる、全ての修正、均等物および代替手段を包含することが理解されるべきである。
【００１１】
図１は、コンピュータシステム１０の一実施形態のブロック図である。図示した実施形態では、コンピュータシステム１０は、メモリ６に結合された集積回路（ＩＣ）２を含む。コンピュータシステム１０は、例えばラップトップ、デスクトップまたはサーバーコンピュータなどの従来型のコンピュータシステムや、例えばハンドヘルドコンピューティング装置（例えば、携帯電話またはスマートフォン）、デジタルテレビ、タブレットコンピューティング装置などの様々な他のタイプのコンピューティング装置を含み得る。図示した実施形態では、ＩＣ  ２は、いくつかのプロセッサコア１１を有するシステムオンチップ（ＳｏＣ）である。ＩＣ  ２の実施形態は、中央処理装置（ＣＰＵ）、グラフィック処理装置（ＧＰＵ）、加速処理装置（ＡＰＵ）、アプリケーションプロセッサ、デジタル信号プロセッサ（ＤＳＰ）などを含み得る。様々な実施形態では、プロセッサコアの数は、わずか１つであってもよいし、ＩＣダイ上の実装に適するだけの数であってもよい。マルチコアの実施形態では、プロセッサコア１１は、互いに同一（すなわち、ホモジニアスマルチコア）であってもよいし、１つ以上のコアが他のコアと異なって（すなわち、ヘテロジニアスマルチコア）いてもよい。各プロセッサコア１１は、１つ以上の実行ユニット、キャッシュメモリ、スケジューラ、分岐予測回路などを含んでもよい。さらに、各プロセッサコア１１は、メモリ６へのアクセス要求をアサートするように構成されてもよく、メモリ６は、コンピュータシステム１０におけるメインメモリとして機能し得る。かかる要求は、読み取り要求および／または書込み要求を含んでもよく、当初は各プロセッサコア１１からノースブリッジ１２によって受信され得る。メモリ６へのアクセス要求は、ある命令の実行に応じて開始されてもよく、プリフェッチ操作に応じて開始されてもよい。
【００１２】
図示した実施形態では、ノースブリッジ１２は、ＩＣ  ２の様々な機能ユニット間の通信の経路指定および制御を提供し得る。このため、ノースブリッジ１２は、異なる機能ユニットを互いに結合する（例えば、メモリアクセス要求中に、何れか１つのプロセッサコア１１をメモリコントローラ１８に結合する）ように構成された１つ以上のクロスバーユニットを含んでもよい。さらに、ノースブリッジ１２は、ＩＣ  ２の動作中に、電力消費対性能を最適化するために使用される様々な電力管理機能を実装し得る。
【００１３】
図示した実施形態では、Ｉ／Ｏインタフェース１３は、ノースブリッジ１２に結合されている。Ｉ／Ｏインタフェース１３は、コンピュータシステム１０におけるサウスブリッジ装置として機能してもよい。いくつかの異なるタイプの周辺機器用バスが、Ｉ／Ｏインタフェース１３に結合されてもよい。この特定の実施例では、バスタイプは、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バス、ＰＣＩ−Ｅｘｔｅｎｄｅｄ（ＰＣＩ−Ｘ）、ギガビットイーサネット（登録商標）（ＧＢＥ）バスおよびユニバーサルシリアルバス（ＵＳＢ）を含む。しかし、これらのバスタイプは例示であり、多数の他のバスタイプがＩ／Ｏインタフェース１３に結合されてもよい。周辺機器は、周辺機器用バスの一部または全部に結合されてもよい。かかる周辺機器は、キーボード、マウス、プリンタ、スキャナ、ジョイスティックや他のタイプのゲームコントローラ、媒体記録装置、外部記憶装置、ネットワークインタフェースカードなどを含むが、これらに限定されない。対応する周辺機器用バスを介してＩ／Ｏユニット１３に結合され得る周辺機器の少なくともいくつかは、直接メモリアクセス（ＤＭＡ）を用いてメモリアクセス要求をアサートし得る。（読み取りおよび書込み要求を含み得る）これらの要求は、Ｉ／Ｏインタフェース１３を介してノースブリッジ１２に伝達され得る。
【００１４】
図示した実施形態では、ＩＣ  ２は、コンピュータシステム１０のディスプレイ３に結合されるグラフィック処理装置１４を含む。ディスプレイ３は、フラットパネルＬＣＤ（液晶ディスプレイ）、プラズマディスプレイ、ＣＲＴ（ブラウン管）または任意の他の適切なディスプレイタイプであり得る。ＧＰＵ  １４は、様々なビデオ処理機能を実行し、処理情報を、視覚情報としての出力のためにディスプレイ３に提供し得る。
【００１５】
図示した実施形態におけるメモリコントローラ１８は、ノースブリッジ１２に結合されており、いくつかの実施形態では、実際に、ノースブリッジ１２の構成要素であってもよい。メモリコントローラ１８は、ノースブリッジ１２から伝達されたメモリ要求を受信し得る。（プリフェッチを含む）読み取り要求に応じてメモリ６からアクセスされたデータは、メモリコントローラ１８によって、ノースブリッジ１２を介して要求エージェントに伝達され得る。メモリコントローラ１８は、書込み要求に応じて、要求および書き込まれるデータの両方を、ノースブリッジ１２を介して要求エージェントから受信し得る。複数のメモリアクセス要求がある時間において保留中である場合に、メモリコントローラ１８は、これらの要求間を調停（ａｒｂｉｔｒａｔｅ）し得る。
【００１６】
メモリコントローラ１８は、メモリ６へのデータの書込みをサポートする機能も含むが、その機能については、便宜上、ここでは示していないことに留意されたい。
【００１７】
図示した実施形態におけるメモリ６は、一実施形態では、複数のメモリモジュールとして実装され得る。各メモリモジュールは、メモリモジュール上に実装された１つ以上のメモリデバイス（例えば、メモリチップ）を含み得る。別の実施形態では、メモリ６は、ＩＣ  ２が実装され得るマザーボードまたは他のキャリア上に設けられた１つ以上のメモリデバイスを含み得る。さらに別の実施形態では、メモリ６の少なくとも一部は、ＩＣ  ２のダイ上に実装され得る。前述した様々な実施態様の組合せを有する実施形態も可能であり、検討され得る。メモリ６は、動作中にＩＣ  ２とともに用いられるランダムアクセスメモリ（ＲＡＭ）を実現するために使用され得る。
【００１８】
図示した実施形態では、メモリ６は、いくつかの異なるタイプのダブルデータレート（ＤＤＲ）ダイナミックＲＡＭ（ＤＲＡＭ）のうちの１つとして実装される。かかるタイプのＤＤＲ  ＤＲＡＭは、オリジナルＤＤＲ標準ＤＲＡＭ、ＤＤＲ２  ＤＲＡＭおよびＤＤＲ３  ＤＲＡＭを含む。メモリ６は、将来の規格のＤＤＲ  ＤＲＡＭとして実装され得ることも考えられる。特定の規格に関わらず、メモリ６は、メモリコントローラ１８からの読み取り要求に応じて、要求されたデータと共に、データストローブ信号、ＤＱＳを返し得る。データストローブ信号は、事実上、メモリコントローラ１８の受信器２５でデータを同期化するために使用されるソース同期クロック信号である。メモリ６からデータが返されていない場合には、データストローブ信号は、アイドルであってもよいし、トライステート（ｔｒｉ−ｓｔａｔｅｄ）であってもよい。いくつかの事例では、データストローブ信号は、読み取りが実行されていない場合、トライステート状態にされ得る（すなわち、高インピーダンス状態に置かれる）。トライステート状態の間にデータストローブ信号がサンプリングされる場合には、誤った読み取りや受信器２５内での遅延ロックループ（ＤＬＬ）の内部操作の破損を含む、予測できない挙動を引き起こし得る。しかし、以下で説明する方法および装置の実施形態では、データストローブ信号がトライステート状態である場合には、データストローブ信号のサンプリングを回避し得る。
【００１９】
図示した実施形態では、メモリコントローラ１８は、読み取りコマンドをノースブリッジ１２から受信するために結合されたスケジューラ２１を含む。スケジューラ２１は、メモリ６への伝送のために様々な読み取りコマンドをスケジューリングするように構成されている。いくつかの実施形態では、スケジューラ２１は、競合する読み取りコマンドの調停を実行するように構成されてもよい。読み取りコマンドは、メモリ６への伝送のために送信器２３に転送され得る。加えて、スケジューラ２１は、読み取りコマンドに応じてメモリ６からのデータの受信を可能にするために、受信イネーブル信号（Ｒｘ＿Ｅｎａｂｌｅ）を受信器２５に提供し得る。図示した実施形態では、受信器２５は、データストローブ信号のメモリ６からの伝送と合わせるために、イネーブル信号のアサーションを保留するいくつかのバッファリングおよびタイミング回路を含み得る。これにより、誤ったデータが受信器２５によって受信されるのを防ぎ得る。受信器２５内のイネーブル信号のアサーションのタイミングは、トレーニングユニット３０によって実行されるトレーニング手順によって判断され得る。トレーニングユニット３０および対応するトレーニング手順については、以下でさらに詳細に説明する。
【００２０】
ここで、図２を参照すると、メモリコントローラ１８の一実施形態のブロック図が示されている。この図では、メモリコントローラ１８の全ての構成要素が示されておらず、従って、様々な実施形態では（前述のものを含む）他の構成要素が含まれ得ることに留意されたい。
【００２１】
図示した実施形態では、メモリコントローラ１８は、メモリ６から伝達されたデータを受信するために結合された受信器２５を含む。データは、メモリ６から伝達されたデータストローブ信号に基づいて、受信したデータストローブ信号（ＲＤＱＳ）と同期化され得る（受信したデータストローブ信号は、メモリ６から提供されたデータストローブ信号と実質的に同一の信号であり得るが、ここでは、バッファ３３の存在のために別々に参照される）。受信したデータストローブ信号は、イネーブル信号（Ｒｘ＿ｅｎａｂｌｅ）を用いて、（本実施形態においてＡＮＤゲートとして実装された）論理ゲート３４を介してゲートされ得る。イネーブル信号がアサートされる場合には、受信したデータストローブは、受信器２５の遅延ロックループ（ＤＬＬ）２５１に渡すために有効にされる。次いで、ＤＬＬ  ２５１は、着信データを同期化するために、対応するクロック信号をフリップフロップ３９（またはフリップフロップのグループ）に提供し得る。一方、イネーブル信号がアサートされない場合には、受信したデータストローブはＤＬＬ  ２５１に提供されない。これにより、受信器２５における意図しないデータの受信を抑制する。イネーブル信号がアサート解除される場合には、トライステートのデータストローブ信号のサンプリングが回避される。このことは、上述したように、誤った動作が発生する可能性を防ぎ得る。従って、イネーブル信号がいつアサートされ、いつアサート解除されるかという制御は、データストローブ信号が、正しい動作を保証する適切なタイミング（すなわち、図３に示すパターンのように、データストローブ信号が、高状態と低状態との間でアクティブに切り換わっているタイミング）でサンプリングされることを確実にし得る。
【００２２】
イネーブル信号は、ＤＬＬ  ３５に提供されたクロック信号（ｐｃｌｋ）と同じ領域から受信したイネーブル信号（Ｒｘ＿ｅｎａｂｌｅ＿ｐ）に基づく。図示した実施形態では、受信したイネーブル信号は、先入れ先出しメモリ（ＦＩＦＯ）２９に提供される。ＦＩＦＯ  ２９の読み取りおよび書込みポインタはｐｃｌｋ信号と同期化される。ｐｃｌｋ信号は、メモリコントローラ１８内の位相ロックループ（ＰＬＬ）によって生成されてもよく、その内部の動作を同期化するために使用される。ＦＩＦＯ  ２９の出力は、記憶回路（本実施形態では、フリップフロップ３２）に結合される。また、ＦＩＦＯ  ２９の出力は、クロック信号をＤＬＬ  ３５から受信するために結合される。図示した実施形態では、ＤＬＬ  ３５は、ｐｃｌｋ信号を入力クロックとして受信するように結合され、ｐｃｌｋ信号の遅延バージョンをフリップフロップ３２に提供するように構成されている。その結果、論理ゲート３４に提供されたＲｘ＿ｅｎａｂｌｅ信号は、ＤＬＬ  ３５からの出力としてのｐｃｌｋ信号の遅延バージョンと同期化され得る。
【００２３】
読み取り中、イネーブル信号は、特定の時点でアサートされ得る。イネーブル信号があまりにも早くアサートされることにより、受信したデータストローブ信号がＤＬＬ  ２５１に渡るのを可能にする場合には、受信器２５は、誤ったデータを受信する場合がある。イネーブル信号のアサートが遅すぎる場合には、メモリ６から返されるデータは、受信器２５に受信されない場合がある。従って、イネーブル信号のアサーションに最適な時間を判断するために、トレーニングが実施され得る。図示した実施形態では、メモリコントローラ１８は、トレーニングユニット３０を含む。トレーニングユニット３０は、フリップフロップ３１と、位相検出器３７と、トレーニング制御論理３８と、を含む。
【００２４】
図示した実施形態では、ＲＤＱＳ信号は、フリップフロップ３１のデータ入力で受信される。フリップフロップ３１のクロック入力は、フリップフロップ３２から出力されたイネーブル信号出力を受信するように結合されている。フリップフロップ３１の出力は、位相検出器３７に提供される。位相検出器３７は、フリップフロップ３１から受信した出力信号に基づき、受信したデータストローブ信号、ＲＤＱＳに対する、イネーブル信号、Ｒｘ＿ｅｎａｂｌｅの位相を判断し得る。この実施形態では、ＦＩＦＯ  ２９は、Ｒｘ＿ｅｎａｂｌｅ信号がプリアンブルに応じてアサートされるように、論理高（ｌｏｇｉｃ  ｈｉｇｈ）をフリップフロップ３２のＤ入力に提供し得る。したがって、フリップフロップ３１によるＲＤＱＳ信号のサンプリングを生じさせ得るプリアンブルを生成する読み取りとなる。
【００２５】
イネーブル信号のトレーニングは、トレーニング制御論理３８の制御下で実施され得る。トレーニングを実施するために、トレーニング制御論理３８に提供されたトレーニング信号（Ｔｒａｉｎ）がアサートされ得る。トレーニング制御論理３８は、トレーニングアルゴリズムの実行中に位相検出器３７に指示し得る。位相検出器３７によって提供される情報は、トレーニングアルゴリズムにおいて実行される様々なステップの判断において、トレーニング制御論理３８によって使用され得る。
【００２６】
図示した実施形態における位相検出器３７の出力は、制御レジスタ３６に格納された値を増加または減少させる１つ以上の信号を含む。制御レジスタ３８の出力は、フリップフロップ３２に提供されるクロック信号を生成するためにｐｃｌｋ信号の遅延を設定するのに使用される、ＤＬＬ  ３５に提供される指示であってよい。したがって、位相検出器３７は、イネーブル信号と、受信したデータストローブ信号との間の位相関係を効果的に制御するのに使用され得る。より詳細には、図示した実施形態における位相検出器３７は、制御レジスタ３６に格納された値を増加させることにより、ＤＬＬ  ３２によって提供される遅延を増加し得る。ＤＬＬによって提供される遅延の減少は、制御レジスタ３６に格納された値を減少させる位相検出器３７によって実行され得る。一般に、ＤＬＬ  ３２によって提供される遅延の変化は、受信したデータストローブ信号と、イネーブル信号との間の位相関係を変化させ得る。トレーニング中、位相検出器３７は、アルゴリズムのいくつかの部分においてフリップフロップ３１によって提供される出力信号と、アルゴリズムの他の部分におけるトレーニング制御論理３８からの直接制御とに基づいて、ＤＬＬ  ３２の遅延を変化させ得る。
【００２７】
図３は、トレーニングユニット３０によって実行され得るトレーニングアルゴリズムの一実施形態を示すタイミング図である。トレーニングは、トレーニング制御論理３８へｔｒａｉｎ信号をアサートすることにより開始され得る。また、アルゴリズムのステップ０では、連続読み取りが、プリアンブルによって中断されている読み取りとともに、トレーニング手順の実行時に開始され得る。図示の例では、読み取りは、論理１と論理０との間の受信したデータストローブ信号のサイクルによって示される。図示の例におけるプリアンブルは、論理１の間のいくつか（図の例では３つ）の連続した論理０によって示される。一般に、データ読取り操作は、限定数のデータビットを受信するバースト内で行われてよく、その後、データストローブ信号は、トライステート状態にされ得る（すなわち、高インピーダンス状態に置かれる）。読取りバーストごとに準備するために、各読取り操作は、データストローブがｌｏｗになる期間に先行され得る。この期間はプリアンブルとして知られている。読取り操作が連続して生じる場合には、着信データストローブは、クロックのように見える波形を示し、プリアンブルは生成されない。より詳細には、バーストは、図に示すように、プリアンブルによって中断される。バーストは、データストローブ信号がトライステート状態になるのを防ぐために、継続期間において十分に短い場合がある。一方、読み取りの間の期間がプリアンブルの継続期間よりも長い場合には、データストローブ信号は、メモリによってトライステート状態にされ得る。
【００２８】
アルゴリズムのステップ１は、受信したデータストローブ信号の立ち上がりエッジを見つけることである（この代わりに、立ち下がりエッジを見つける実施形態も可能であり、検討されることに留意されたい）。これは、イネーブル信号を循環させ、イネーブル信号と（循環している）受信したデータストローブ信号との間の位相差を測定して、位相差がゼロになるまで調整することによって達成され得る。立ち上がりエッジが見つかると、トレーニング制御論理３８は、位相検出器３７に対して、データストローブ信号の２分の１の単位間隔をＤＬＬ  ３６の遅延から減算するように指示する。本明細書では、単位間隔は、受信したデータストローブ信号の２分の１の期間であってよい。従って、データストローブ信号が５０％のデューティサイクルを有する場合には、単位間隔は、当該デューティサイクルと同等であり得る。
【００２９】
受信したデータストローブ信号に対するイネーブル信号の位相をデータストローブ信号の２分の１の単位間隔だけ調整した後に、トレーニング制御論理３８は、位相検出器３７に対して、プリアンブルの終端が見つかるまで、イネーブル信号の位相を１単位間隔だけ増加するように調整する（ステップ３）のを開始するように指示し得る。図の例では、位相調整は、増加によって実行される。しかし、同じ目的を達成するためには、増加の代わりに減少も使用され得る。位相の増加調整ごとに、位相関係が、トレーニング制御論理３８に報告されてもよく、トレーニング制御論理３８は、測定値の履歴を保持および監視し得る。その履歴に基づき、トレーニング制御論理３８は、イネーブル信号が、受信したデータストローブ信号の第１のポストプリアンブルサイクルの第１の立ち下がりエッジと一致するタイミングを判断し得る。
【００３０】
トレーニング制御論理３８は、プリアンブルの終端が検出されたことを判断すると、位相検出器３７に対して、イネーブル信号の位相がプリアンブル内で生じるまで遅延を減算する（ステップ４）ように調整することを指示し得る。一実施形態では、イネーブル信号は、プリアンブルのおおよその中間点に位置合わせされ得る。この調整が生じると、位相検出器３７は、受信したデータストローブ信号に対するイネーブル信号の位相の指標を、制御レジスタ３６に記録し得る。このとき、トレーニングが完了する。ミッション（すなわち、通常）モードでの将来の動作のために、メモリ６からのデータの１つ以上の連続読み取り中に、イネーブル信号のアサーションが、データストローブ信号の第１の立ち上がりエッジよりも前のプリアンブル中に生じ得る。
【００３１】
イネーブル信号の立ち上がりエッジをプリアンブル内の点と一致させることによって、温度および電圧変動に起因したドリフトを許容するためにより多くのマージンが提供され得る。これにより、メモリに対するインタフェースが、より高速な周波数で動作されることを可能にし得る。前述のトレーニングアルゴリズムは、異なる周波数での複数の反復を必要としないこと、および、「シード値」としても知られている、事前特性化された開始条件も必要としないことにさらに留意されたい。これにより、トレーニング手順が、従来の方法よりも確実に、かつ、短時間で実行されることを可能にし得る。
【００３２】
ここで図４を参照すると、データストローブ信号に対するイネーブル信号の遅延をトレーニングするための方法の一実施形態を示すフロー図が表されている。方法４００は、図１および図２に関連して前述したハードウェアの実施形態を使用して実行され得るが、他のハードウェアの実施形態で本方法を実行することも可能であり、検討されることに留意されたい。
【００３３】
方法４００は、プリアンブルによって中断されている読み取りとともに、複数の一連の連続メモリ読み取りを実行すること（ブロック４０５）によるトレーニングの開始で始まる。読み取りは、データストローブ信号と同期化されてもよく、データストローブ信号は、プリアンブル（例えば、１と０の交互に入れ替わるサイクル間の複数の連続した０）を含む。読み取りは、連続、次いでプリアンブル、その後、別の連続などのように実行されてもよい。
【００３４】
トレーニング手順中に、データストローブ信号のエッジ（本実施例では、立ち上がりエッジ）が、データストローブの立ち上がりエッジとの位相差がゼロになるまでイネーブル信号の立ち上がりエッジの位相を調整することによって、見つけられ得る（ブロック４１０）。この時点でイネーブル信号が調整される立ち上がりエッジは、データストローブ信号の任意の立ち上がりエッジであり得る。
【００３５】
データストローブ信号の立ち上がりエッジの位置決めに応じて、イネーブル信号の位相は、２分の１の単位間隔分減算されてもよく、次いで、一単位間隔分増加するように調整され得る（ブロック４１５）。調整は、増加または減少を含み得る。プリアンブルの終端が見つからなかった（ブロック４２０，いいえ）場合には、ブロック４１５の調整が継続する。プリアンブルの終端が見つかった（ブロック４２０，はい）場合には、プリアンブル内のポイントにイネーブル信号のアサーションを置くために、最終位相調整が行われ得る（ブロック４２５）。一実施形態では、最終位相調整において、イネーブル信号のアサーションを、プリアンブルの中間点または中間点の近くに置き得る。最終位相調整が完了した後に、対応する遅延値の指示が制御レジスタに格納される（ブロック４３０）。この遅延値は、通常動作中に、遅延ロックループの遅延を設定するために使用され得る。
【００３６】
次に図５を参照すると、システム１０を表すデータベース５０５を含むコンピュータアクセス可能記憶媒体５００のブロック図が示されている。一般的に言えば、コンピュータアクセス可能記憶媒体５００は、命令および／またはデータをコンピュータに提供するために、使用中にコンピュータによってアクセス可能な任意の持続性（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）記憶媒体を含み得る。例えば、コンピュータアクセス可能記憶媒体５００は、磁気または光媒体などの記憶媒体（例えば、ディスク（固定もしくは取り外し可能）、テープ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、Ｂｌｕ−Ｒａｙなど）を含み得る。記憶媒体は、例えばユニバーサルシリアルバス（ＵＳＢ）インタフェースなどの周辺インタフェースを介してアクセス可能な、ＲＡＭ（例えば、シンクロナスダイナミックＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３など）ＳＤＲＡＭ、低電力ＤＤＲ（例えばＬＬＤＤＲ２など）ＳＤＲＡＭ、Ｒａｍｂｕｓ  ＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（例えばＳＲＡＭなど）など）、ＲＯＭ、フラッシュメモリ、不揮発性メモリ（例えばフラッシュメモリ）などの、揮発性または不揮発性メモリ媒体をさらに含み得る。記憶媒体は、微小電気機械システム（ＭＥＭＳ）、ならびに、ネットワークおよび／または無線リンクなどの通信媒体を介してアクセス可能な記憶媒体を含み得る。
【００３７】
一般に、コンピュータアクセス可能記憶媒体５００で実行される、システム１０および／またはその部分を表すデータ５０５は、システム１０を含むハードウェアを製造するために、直接または間接に、プログラムによって読み取られて使用可能なデータベースまたは他のデータ構造であり得る。例えば、データベース５０５は、ＶｅｒｉｌｏｇまたはＶＨＤＬなどの高水準設計用言語（ＨＤＬ）でのハードウェア機能性の動作レベル記述またはレジスタ転送レベル（ＲＴＬ）記述であり得る。記述は、ゲートのリストを含むネットリストを合成ライブラリから生成するために、記述を合成し得る合成ツールによって読み取られ得る。ネットリストは、システム１０を含むハードウェアの機能性も表すゲートの組を含む。ネットリストは、次いで、マスクに適用される幾何学形状を記述するデータセットを生成するために、設置され、経路指定され得る。マスクは、次いで、システム１０に対応する半導体回路または複数の回路を製造するための様々な半導体製造ステップで使用され得る。あるいは、コンピュータアクセス可能記憶媒体５００上のデータベース５０５は、必要に応じて、ネットリスト（合成ライブラリ有りまたは無し）もしくはデータセット、または、グラフィックデータシステム（ＧＤＳ）ＩＩデータであり得る。
【００３８】
コンピュータアクセス可能記憶媒体５００は、システム１０の表現を含むが、他の実施形態では、必要に応じて、ＩＣ  ２、エージェントの任意の組（例えば、処理コア１１、Ｉ／Ｏインタフェース１３、ノースブリッジ１２など）、または、エージェントの部分を含む、システム１０の任意の部分の表現を含み得る。
【００３９】
本発明は、特定の実施形態に関して説明してきたが、実施形態は例示であること、および、発明の範囲はこのように限定されないことが理解されるであろう。説明した実施形態に対する任意の変形、修正、追加および改善が可能である。これらの変形、修正、追加および改善は、以下の特許請求の範囲内で詳述するように、本発明の範囲内に含まれ得る。
【図１】
0005819027.tif 000002
【図２】
0005819027.tif 000003
【図３】
0005819027.tif 000004
【図４】
0005819027.tif 000005
【図５】
0005819027.tif 000006