(57)【要約】  メモリコントローラが、制御信号をメモリモジュールへ送信する。メモリコントローラはクロック信号をメモリモジュールへ継続して送信する。メモリコントローラは、ストローブ信号を繰り返し解析することによって、クロック信号に対する制御信号の調整を決定する。
2016540291.tif 000002
【特許請求の範囲】
【請求項１】
メモリコントローラにより制御信号をメモリモジュールへ送信する段階であって、前記メモリコントローラは前記メモリモジュールへクロック信号を継続して送信する、送信する段階と、
ストローブ信号を繰り返し解析することによって、前記クロック信号に対する前記制御信号の調整を、前記メモリコントローラにより決定する段階と、
を有する、信号を調整する方法。
【請求項２】
前記制御信号の前記調整を決定する前記段階は、
前記ストローブ信号のプリアンブルが正しい位置合わせを保持することを保証しつつ、前記クロック信号に対する前記制御信号のタイミングを前後の時間にシフトさせて、前記制御信号のタイミングを、前記クロック信号の立ち上りエッジに対して中心に位置させる段階をさらに含む、請求項１に記載の方法。
【請求項３】
前記制御信号の前記タイミングの最大のパス領域を繰り返し決定する段階に続いて、前記制御信号の前記タイミングが中心に位置される、請求項２に記載の方法。
【請求項４】
前記方法は、
前記メモリコントローラにより、リードコマンドを前記メモリモジュールへ送信する段階と、
前記リードコマンドを送信する前記段階に応答して、前記メモリコントローラにより、リードデータを伴う前記ストローブ信号を前記メモリモジュールから受信する段階と、
前記メモリコントローラにより、前記ストローブ信号の前記プリアンブルが通常生じるクロックサイクル位置を決定する段階と、
をさらに有する、請求項２に記載の方法。
【請求項５】
前記メモリコントローラは、前記制御信号の調整に続いて別のリードコマンドを発行し、その後、前記ストローブ信号の前記プリアンブルが検出されるかどうかを判断する、請求項４に記載の方法。
【請求項６】
前記方法は、
前記ストローブ信号が検出されるとの判断に応答して、前記ストローブ信号の前記プリアンブルが正しいクロックサイクル位置に生じているかどうかを判断する段階と、
前記制御信号の前記タイミングの最大のパス領域が決定されていた場合、前記ストローブ信号の前記プリアンブルが前記正しいクロック位置に生じているとの判断に応答して、立ち上りクロックエッジに対する最大のパス領域の中心に前記制御信号の前記タイミングをプログラミングする段階と、
をさらに有する、請求項５に記載の方法。
【請求項７】
前記方法は、前記ストローブ信号が検出されないとの判断に応答して、前記制御信号の前記タイミングがフェイル領域にあることを記録する段階をさらに有する、請求項５に記載の方法。
【請求項８】
前記メモリモジュールはＤＤＲメモリを有し、
前記制御信号はチップ選択信号またはグラント信号を含む、
請求項２から請求項７のいずれか１項に記載の方法。
【請求項９】
前記メモリモジュールは非ＤＤＲメモリを有し、
前記制御信号はチップ選択信号またはグラント信号を含む、
請求項２から請求項７のいずれか１項に記載の方法。
【請求項１０】
前記メモリコントローラは、前記制御信号のタイミングがパス領域の中心にあるかどうかを判断する、請求項１から請求項９のいずれか１項に記載の方法。
【請求項１１】
メモリモジュールに連結されたメモリコントローラであって、前記メモリコントローラは、
前記メモリモジュールへ制御信号を送信するように動作可能であって、前記メモリコントローラは前記メモリモジュールへクロック信号を継続して送信し、
ストローブ信号を繰り返し解析することによって、前記クロック信号に対する前記制御信号の調整を決定するように動作可能である、
メモリコントローラ。
【請求項１２】
前記制御信号の前記調整の決定は、
前記ストローブ信号のプリアンブルが正しい位置合わせを保持することを保証しつつ、前記クロック信号に対する前記制御信号のタイミングを前後の時間にシフトさせて、前記制御信号のタイミングを、前記クロック信号の立ち上りエッジに対して中心に位置させることをさらに含む、請求項１１に記載のメモリコントローラ。
【請求項１３】
前記制御信号の前記タイミングの最大のパス領域を繰り返し決定することに続いて、前記制御信号の前記タイミングが中心に位置される、請求項１２に記載のメモリコントローラ。
【請求項１４】
前記メモリコントローラは、
リードコマンドを前記メモリモジュールへ送信し、
前記リードコマンドの前記送信に応答して、リードデータを伴う前記ストローブ信号を前記メモリモジュールから受信し、
前記ストローブ信号の前記プリアンブルが通常生じるクロックサイクル位置を決定するように、
さらに動作可能である、請求項１２に記載のメモリコントローラ。
【請求項１５】
前記メモリコントローラは、前記制御信号の調整に続いて別のリードコマンドを発行し、前記ストローブ信号の前記プリアンブルが検出されるかどうかを判断する、請求項１４に記載のメモリコントローラ。
【請求項１６】
前記メモリコントローラは、
前記ストローブ信号が検出されるとの判断に応答して、前記ストローブ信号の前記プリアンブルが正しいクロックサイクル位置に生じているかどうかを判断し、
前記制御信号の前記タイミングの最大のパス領域が決定されていた場合、前記ストローブ信号の前記プリアンブルが前記正しいクロック位置に生じているとの判断に応答して、立ち上りクロックエッジに対する最大のパス領域の中心に前記制御信号の前記タイミングをプログラムするようにさらに動作可能である、請求項１５に記載のメモリコントローラ。
【請求項１７】
前記メモリコントローラは、
前記ストローブ信号が検出されないとの判断に応答して、前記制御信号の前記タイミングがフェイル領域にあることを記録するようにさらに動作可能である、請求項１５に記載のメモリコントローラ。
【請求項１８】
前記メモリコントローラが連結されている前記メモリモジュールはＤＤＲメモリを有し、
前記制御信号はチップ選択信号またはグラント信号を含む、請求項１２から請求項１７のいずれか１項に記載のメモリコントローラ。
【請求項１９】
前記メモリコントローラが連結されている前記メモリモジュールは非ＤＤＲメモリを有し、
前記制御信号はチップ選択信号またはグラント信号を含む、請求項１２から請求項１７のいずれか１項に記載のメモリコントローラ。
【請求項２０】
前記メモリコントローラは、前記制御信号のタイミングがパス領域の中心にあるかどうかを判断する、請求項１１から請求項１９のいずれか１項に記載のメモリコントローラ。
【請求項２１】
信号を調整する計算システムであって、
メモリモジュールと、
前記メモリモジュールに連結されたメモリコントローラと、
前記メモリコントローラに連結されたプロセッサと、
を備え、
前記プロセッサは、
メモリモジュールへ制御信号を送信するように動作可能であって、前記メモリコントローラは前記メモリモジュールへクロック信号を継続して送信し、
ストローブ信号を繰り返し解析することによって、前記クロック信号に対する前記制御信号の調整を決定するように動作可能である、
計算システム。
【請求項２２】
前記制御信号の前記調整の決定は、
前記ストローブ信号のプリアンブルが正しい位置合わせを保持することを保証しつつ、前記クロック信号に対する前記制御信号のタイミングを前後の時間にシフトさせて、前記制御信号のタイミングを、前記クロック信号の立ち上りエッジに対して中心に位置させることをさらに含む、請求項２１に記載の計算システム。
【請求項２３】
前記制御信号の前記タイミングの最大のパス領域を繰り返し決定することに続いて、前記制御信号の前記タイミングが中心に位置される、請求項２２に記載の計算システム。
【請求項２４】
信号を調整するシステムであって、
メモリモジュールと、
メモリモジュールに連結されたメモリコントローラと、
を備え、
前記メモリコントローラは、
メモリモジュールへ制御信号を送信するように動作可能であって、前記メモリコントローラは前記メモリモジュールへクロック信号を継続して送信し、
ストローブ信号を繰り返し解析することによって、前記クロック信号に対する前記制御信号の調整を決定するように動作可能である、
システム。
【請求項２５】
格納されたコードがプロセッサに複数の動作を実行させるコンピュータ可読記憶媒体であって、前記複数の動作は、
メモリコントローラにより制御信号をメモリモジュールへ送信する段階であって、前記メモリコントローラは前記メモリモジュールへクロック信号を継続して送信する、送信する段階と、
ストローブ信号を繰り返し解析することによって、前記クロック信号に対する前記制御信号の調整を、前記メモリコントローラにより決定する段階と、
を含む、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
パーソナルコンピュータおよびサーバ産業は、競争力の高い状態であるために、多くのワークロードタイプにわたって性能向上が必要であろう。例えば、コア総数の増大およびメモリサイズ／帯域幅／レイテンシの改良を含む、こうしたレベルの性能向上を提供すべく、様々なメカニズムが使用されている。メモリの改良は、より高速なダイナミックランダムアクセスメモリ（ＤＲＡＭ）、より高いダブルデータレート（ＤＤＲ）バス周波数、より大きな容量のデュアルインラインメモリモジュール（ＤＩＭＭ）、１チャネル当たりのより多くのＤＩＭＭ、およびその他複数の最適化の形を取り得る。２０１２年９月に公開された、ダブルデータレート第４世代（ＤＤＲ４）同期ランダムアクセスメモリ（ＳＤＲＡＭ）規格ＪＥＳＤ７９−４のような、ＪＥＤＥＣ半導体技術協会により定義された多くのＤＤＲ規格が存在する。
【０００２】
より高いＤＤＲ速度には、複数のＤＲＡＭチャネルが、最適な信号品質およびＤＤＲバスタイミングに対して注意深く調整される必要がある。この調整は、起動中に基本入出力システム（ＢＩＯＳ）によって実行され、一般に"ＤＤＲトレーニング"と呼ばれている。ＤＤＲトレーニングは、例えば、様々なストローブ信号の中心位置合わせ、クロストークの除去、および参照電圧キャリブレーションなど、時間のかかる多くのステップを含む。これらのキャリブレーションステップは、ＤＲＡＭコントローラおよび複数のＤＩＭＭに対して適用される、最適な複数のＤＤＲタイミングパラメータを導出すべく使用される。これらのパラメータは、メモリトラフィックを妨げずに動作中に更新されることができないので、メモリがアクセスされる前にこのプログラミングが行われる。
【０００３】
最適ではない複数のパラメータは、より高いビットエラー率につながり、一般に、システム動作を不安定化させる。これらの複雑なキャリブレーションステップは、起動時間の増加を招く。より高い速度およびより低い電圧を実現すべく、いくつかのＤＤＲの提案が、複数のパラメータにわたるＤＤＲデバイスごとのキャリブレーションを必要としている。その結果として、これらのプラットフォームにおけるメモリトレーニング処理が増加するであろう。
【０００４】
コンピュータシステムの通常のメモリシステムにおいては、メモリコントローラが、コンピュータシステム中でのメモリモジュールのアクセスを容易にする。このメモリモジュールは、１または複数のメモリを含んでよい。これらの１または複数のメモリはまた、ランクとも呼ばれる。メモリコントローラは、複数のランクからのデータにアクセスすべく、または、複数のランクへデータを送信すべく、複数のアドレス信号、制御信号、クロック信号、等を含む複数の信号のホストを、複数のランクへ送信する。正しいデータを、これらのランクへ送信し、これらのランクから受信すべく、メモリコントローラは、クロック信号に対して様々な信号をトレーニングする（変更する）。
【０００５】
通常、メモリコントローラは、クロック信号に対する特定の信号を複数のランクへと送信し、その後、各ランクからの応答を解析して、そのランクがこの特定の信号を正しく受信したかどうかを確認することにより、信号をトレーニングし得る。そのランクから正しい応答があると、メモリコントローラは、クロック信号に対するこの特定の信号の位相を遅延させ、その後、遅延された位相を有するこの遅延された特定の信号を、そのランクへと再送信する。次いでメモリコントローラは、そのランクからの応答を解析して、遅延された特定の信号をそのランクが正しく受信したかどうか確認する。そのランクからメモリコントローラに対して応答が受信されない場合（または正しくない応答が受信された場合）、メモリモジュールは、アンノウン状態に移行する。
【０００６】
現在の複数のＤＤＲインタフェースがより高い周波数を実現しており、ボードルーティングフライトタイムはこれらの周波数とともにはスケーリングされない。ここで、ボードルーティング時間は、ある信号が、ボード上での特定の信号ルートに沿って伝播するのに要する時間である。その結果、複数のクロック信号に対する、ＤＤＲバス用の複数の制御信号間の厳しい一致要件を確立することが、益々困難になってきている。
【図面の簡単な説明】
【０００７】
ここで複数の図面を参照する。図中、同様な参照番号は、全体を通して対応するパーツを表す。
【図１】いくつかの実施形態に従った、計算デバイス中に実装されるＤＤＲベースのシステムのブロック図を示す。
【図２】いくつかの実施形態に従った、計算デバイス中に実装されるＤＤＲベースのシステムの別のブロック図を示す。
【図３】いくつかの実施形態に従った、例示的な複数の信号を示すブロック図を示す。
【図４】いくつかの実施形態に従った、複数の第１の動作を示すフローチャートを示す。
【図５】いくつかの実施形態に従った、複数の第２の動作を示すフローチャートを示す。
【図６】いくつかの実施形態に従った、計算デバイスのブロック図を示す。
【発明を実施するための形態】
【０００８】
以下の説明において、本明細書の一部を形成し、いくつかの実施形態を示す添付の複数の図面が参照される。その他複数の実施形態が利用されてよく、構造上および動作上の複数の変更が成されてよいことが理解される。
【０００９】
複数の実施形態が、ＤＤＲベースのシステムにおいて制御信号をトレーニングするための方法および装置に関する。ＤＤＲベースのシステムのいくつかの実施形態においては、メモリコントローラがＤＤＲ  ＤＲＡＭデバイスに連結される。このメモリコントローラは、制御信号、クロック信号、コマンド信号、等のような複数の信号を介して、ＤＤＲ  ＤＲＡＭデバイスと通信し得る。いくつかの実施形態において、ＤＤＲ  ＤＲＡＭデバイスに連結されたメモリコントローラは、ＤＤＲ  ＤＲＡＭデバイスからメモリコントローラによって受信されるストローブ信号を繰り返し解析することにより、クロック信号に対して制御信号をトレーニングするように動作可能である。いくつかの実施形態において、ＤＤＲベースのシステムはＤＤＲ  ＤＩＭＭを含んでよい。ＤＩＭＭとしては設計されていない複数のメモリ構成が、代替的な複数の実施形態において採用されてよい。その他複数の実施形態において、制御信号は、ＤＤＲベースのシステムではないシステム中でトレーニングされてよい。
【００１０】
複数のＤＤＲベースのシステムにおいて、コマンド信号エンコーディングがメモリデバイスによっていつラッチされるべきかを認定すべく、複数の制御信号が使用される。クロックに対するコマンド信号タイミングのあらゆるトレーニングよりも前に、並びに、データバスタイミングおよび電圧のあらゆるトレーニングの前に、安定した複数の制御信号タイミングを確立することが重要である。ここでクロックはメモリコントローラによって生成され且つメモリデバイスによって受信される。いくつかのＤＤＲベースのシステムにおいて、制御信号は早期にトレーニングされるべきであり、それより前にトレーニングされていた信号タイミングは他に存在しない。制御信号タイミングはクロック信号タイミングに対して移動されるので、パスまたはフェイル応答を提供するフィードバックを確立することが望ましいであろう。
【００１１】
複数の制御信号によってコマンドバスが認定される、複数のＤＤＲインタフェースによる以前のアプローチは、クロックタイミングに対するコマンドの関係が制限要因とはならないことを保証すべく、複数の緩和されたコマンドタイミングを使用することを含んでいた。これらの場合、複数のリードコマンドを送信し、ＤＩＭＭによってこのリードコマンドが受信されたかどうかを解釈することにより、複数の制御信号がトレーニングされてきた。制御信号トレーニングの問題を解決するための別の方法は、ＤＤＲ４レジスタードＤＩＭＭによるもののように、ＤＤＲ  ＤＩＭＭ自身にループバックサンプリング能力を提供することである。これには、ＤＤＲ  ＤＩＭＭのレジスタ内でサンプリングされた値を示すためのエラーフィードバック信号の使用が必要である。このループバックモードにおいて、レジスタは、コマンド信号および制御信号を受信し、予め定められた間隔でその値をサンプリングし、その後、サンプリングされた値をホストメモリコントローラへ送り返す。このアプローチは、メモリコントローラから周期的な制御信号を送信する能力を必要とするが、これはサポートされていないかもしれない。
【００１２】
図１は、プロセッサ５２およびＤＤＲベースのメモリシステム１００を備える計算デバイス５０を示す。計算デバイス５０は、任意の適切なデバイスであってよく、パーソナルコンピュータ、ワークステーション、サーバ、メインフレーム、ハンドヘルドコンピュータ、パームトップコンピュータ、テレフォニデバイス、ネットワークアプライアンス、ブレードコンピュータ、ストレージサーバ等のような、当技術分野において現在既知のものを含む。
【００１３】
ＤＤＲベースのメモリシステム１００は、一実施形態に従って、制御信号１０４をトレーニングするように動作可能なメモリコントローラ１０２、および、メモリコントローラ１０２に連結されたＤＲＡＭ１０６を備える。
【００１４】
一実施形態において、メモリコントローラ１０２はマイクロプロセッサ（ＣＰＵ）内に統合される。その他複数の実施形態において、メモリコントローラ１０２は、マザーボード上の個別の集積回路（ＩＣ）であり、プロセッサ５２およびＤＲＡＭ１０６と連結される。ＤＲＡＭ１０６は、メモリモジュールまたはＤＩＭＭ中に含まれてよい。ここで、メモリモジュールは、このＤＲＡＭに加えて、複数のレジスタデバイス、複数のバッファデバイス等を含んでよい。いくつかの実施形態において、ＤＲＡＭ１０６はＤＤＲメモリデバイスを備える。また、いくつかのその他の実施形態において、ＤＲＡＭ１０６はＤＲＡＭではないメモリデバイスを備える。
【００１５】
一実施形態において、メモリコントローラ１０２は、複数の信号を介してＤＲＡＭ１０６と通信する。これらの信号は、限定されるものではないが、制御信号１０４（例えばチップ選択信号）、クロック信号１０８、複数のコマンド信号１１０（例えばリードコマンド）、および、メモリコントローラ１０２とＤＲＡＭ１０６との間で通信させるための任意のその他複数の信号を含む。複数の実施形態の対応する複数の図面において、複数の信号が複数の線で表されていることに留意されたい。いくつかの線は１または複数の端部に矢印を有することがあり、これは、主な情報の流れの方向を示す。このように示すことで、限定することを意図するのではない。むしろ、これらの線は、回路または論理ユニットについてのより容易な理解を促すため、１または複数の例示的な実施形態と関連して使用されるものである。設計上の必要性または優先事項によって規定される、ここに表された任意の信号は、いずれの方向にも移動し得る１または複数の信号を実際には含んでよく、任意の適切なタイプの信号スキームで実装され得る。
【００１６】
一実施形態において、トレーニングアプリケーション１１４が計算デバイス５０中で実行される。トレーニングアプリケーション１１４は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせとして実装され得る。トレーニングアプリケーション１１４は、メモリコントローラ１０２からＤＲＡＭ１０６へ送信されたリードコマンド１１０に応答して、メモリコントローラ１０２によってＤＲＡＭ１０６から受信されたストローブ信号１１６を解釈することにより、メモリコントローラ１０２がチップ選択信号１０４をトレーニングすることを可能にする。
【００１７】
いくつかの実施形態が、メモリコントローラ１０２またはＤＲＡＭ１０６中の追加的なハードウェアサポートを何ら必要としないが、制御信号の複数のエッジをクロック信号に対して決定する方法を提供する。いくつかの実施形態において、制御信号１０４はチップ選択信号を含んでよい。一方、その他複数の実施形態において、制御信号１０４はグラント信号を含んでよい。いくつかの実施形態が、クロック信号１０８のクロックサイクルに対して制御信号１０４を中心に位置させるべく、リードコマンドがＤＲＡＭ１０６へと送信された後に、複数のリードリターンストローブをサンプリングする能力に頼っている。
【００１８】
図２は、いくつかの実施形態に従った、プロセッサ６２を有する計算デバイス６０内に実装されたメモリシステム２００のブロック図を示す。図２においては、メモリコントローラ２０２が、制御信号の１つのタイプであるグラント信号２０４、クロック信号２０８、コマンド信号２２０（例えばリードコマンド）、およびその他複数の制御信号２２２を、メモリコントロールバッファ２０６へと送信する。いくつかの実施形態において、メモリコントローラ２０２は、メモリコントロールバッファ２０６によって戻されたストローブ信号２２６を受信してよい。トレーニングアプリケーション２１４が、ＤＤＲベースのシステム２００のグラント信号２０４をトレーニングするべく、計算デバイス６０中で実行される。図２において、グラント信号２０４は、あらゆるコマンドエンコーディングを認定せず、クロック信号２０８と正しく位置合わせされるべきスタンドアロン信号である。そのようなスタンドアロングラント信号は、いくつかの実施形態において、チップ選択信号に加えて、またはチップ選択信号の代替物として実装されてよい。
【００１９】
図３は、いくつかの実施形態に従った、複数の例示的な信号を示すブロック図、３００を示す。示されている複数の例示的な信号はクロック信号２０２である。ここでは、参照番号３０２によって示されるように、クロック信号２０２に対して正しく位置合わせされるべく、制御信号がトレーニングアプリケーション１１４によってトレーニングされる。制御信号の中心３０４がクロックサイクルの立ち上りエッジに来るとともに、ストローブ信号のプリアンブル３０７が（参照番号３０６によって示されるように）正しいクロックサイクルに位置合わせされる場合に、制御信号の正しい位置合わせが生じる。
【００２０】
いくつかの実施形態において、トレーニングアプリケーション１１４は、参照番号３０８、３１０、３１２によって示されるように、制御信号を前方および後方に移動させることにより、制御信号の正しい位置合わせを判断する。いくつかの実施形態において、制御信号が前方に移動された場合（参照番号３０８）、ストローブ信号のプリアンブル３０７は（参照番号３１４によって示されるように）生じないであろう。いくつかの実施形態において、制御信号がさらにもっと前方に（参照番号３１０）または後方に（参照番号３１２）移動される場合、制御信号のプリアンブルが生じるであろうが、（参照番号３１６、３１８によって示されるように）正しくないクロックサイクルに位置合わせされるであろう。
【００２１】
従って、図３は、制御信号を後方および前方に繰り返し移動させることによって、ストローブ信号のプリアンブルの正しい位置合わせを維持することに基づいて、クロック信号に対して制御信号が正しく位置合わせされるようないくつかの実施形態を示すものである。
【００２２】
図４は、いくつかの実施形態に従った、ＤＤＲベースのシステム１００、２００において実行される複数の動作を示すフローチャート４００を示す。図４に示される複数の動作は、計算デバイス５０、６０中で実行し、メモリコントローラ１０２、２０２によって実行される複数の動作を制御する、少なくともトレーニングアプリケーション１１４、２１４によって実行されてよい。
【００２３】
制御はブロック４０２において始まる。ここで、メモリコントローラ１０２が制御信号１０４（例えばチップ選択信号またはグラント信号）およびコマンド信号（例えばリードコマンド）をＤＲＡＭ１０６へと送信する。メモリコントローラ１０２は、リードデータを伴うストローブ信号１１６を（ブロック４０４において）ＤＲＡＭ１０６から受信する。
【００２４】
制御はブロック４０６へと進む。ここで、メモリコントローラ１０２は、ストローブ信号のプリアンブルが通常生じるクロックサイクル位置を決定する。（ブロック４０８において）メモリコントローラ１０２は、制御信号タイミングを（前後の時間に）シフトさせ、リードコマンドを発行する。
【００２５】
制御はブロック４１０へ進む。ここで、メモリコントローラ１０２は、ストローブ信号１１６のプリアンブルが検出されたかどうかを判断する。もしもそうである場合（参照番号４１２）、メモリコントローラ１０２は、ストローブ信号１１６のプリアンブルが正しいクロック位置に生じているかどうかを（ブロック４２０において）判断する。もしもそうでない場合（参照番号４１４）には、プリアンブルは検出されなかった。そして、制御はブロック４３０へと進む。
【００２６】
もしもブロック４２０において、ストローブ信号のプリアンブルが正しいクロック位置に生じていると判断された場合には、プリアンブルは正しい位置合わせを保持してきた。そして、制御はブロック４２４へと進む（参照番号４２２）。ブロック４２４においてメモリコントローラ１０２は、制御信号タイミングがパス領域にあることを記録する。制御はブロック４２６へと進む。ここでメモリコントローラ１０２は、パス領域における制御信号タイミングの限界の決定を試みる。そして、もしも限界が決定されていなかった場合（参照番号４３４）、メモリコントローラ１０２は、ブロック４０８へと制御を戻すことによって、パス領域における制御信号タイミングの限界の決定を試みる。
【００２７】
もしもブロック４２６において、パス領域における制御信号タイミングの限界が決定されている場合には、制御はブロック４４０へと進む（参照番号４３２）。ここで、メモリコントローラ１０２は、立ち上りクロックエッジに対してパス領域の中心へと制御信号タイミングを変化させる。
【００２８】
もしもブロック４２０において、ストローブ信号のプリアンブルが正しいクロック位置に生じていないと判断された場合には、プリアンブルは位置を変えた。制御はブロック４３０へと進む。ブロック４３０において、メモリコントローラ１０２は、制御信号タイミングがフェイル領域にあることを記録し、制御はブロック４２６へと進む。
【００２９】
パス領域における制御信号タイミングの限界をメモリコントローラが決定するブロック４２６は、パス領域における制御信号タイミングの限界を見出すための検索アルゴリズムの詳細を要約することが意図されている。パス領域を検索するための複数の方法が、当技術分野において知られている。それらの方法は以下を含み得る。
１）パス領域中で開始し、最初のフェイルが発生する複数のエッジを見出すべく、内側から外側へ（左右両方向に）検索する。
２）（左側の）フェイル領域中で開始し、フェイルからパスへの移行、次いでパスからフェイルへの移行を判断すべく、一方向に（左から右へ）検索する。
【００３０】
パス領域の複数の限界がひとたびわかると、メモリコントローラ１０２は、（最適な制御信号セットアップおよび立ち上りクロックエッジに対する複数のホールド時間を提供すべく）パス領域の中心に制御信号タイミングをプログラムすることができる。
【００３１】
いくつかの実施形態が、（ストローブまたは代替的にエラー信号フィードバックメカニズムを使用して）制御信号タイミングがパス領域中に位置されているかどうかをメモリコントローラが判断する方法を提供する。パス領域の複数の限界を見出すための任意の可能な検索方法が、いくつかの実施形態において実装されてよい。
【００３２】
従って図４は、トレーニングアプリケーション１１４が、立ち上りクロックエッジに対する最大のパス領域の中心に制御信号タイミングをプログラムするいくつかの実施形態を示す。
【００３３】
図５は、いくつかの実施形態に従った、いくつかの動作５００を示す。図５に示される複数の動作は制御信号の正しい位置合わせを決定するためのものであり、トレーニングアプリケーション１１４、２１４の制御下でメモリコントローラ１０２、１０４によって実行される。
【００３４】
制御はブロック５０２で始まる。ここで、メモリコントローラ１０２は、制御信号をメモリモジュール１０６へ送信し、メモリコントローラ１０２はクロック信号１０８をメモリモジュール１０６へ継続して送信する。メモリコントローラ１０２は、ストローブ信号１１６を繰り返し解析することによって、クロック信号１０８に対する制御信号１０４への調整を（ブロック５０４において）決定する。
【００３５】
従って、図１−５は、ストローブ信号を繰り返し解析することによってＤＤＲメモリの制御信号をトレーニングするためのいくつかの実施形態を示す。
【００３６】
説明された複数の動作は、方法として、装置として、または、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせを生成するための、標準的なプログラミングおよび／またはエンジニアリング技術を使用したコンピュータプログラム製品として実装され得る。説明された複数の動作は、"コンピュータ可読記憶媒体"中に保持されるコードとして実装され得る。プロセッサが、コンピュータ可読記憶媒体からコードを読み出し、実行し得る。コンピュータ可読記憶媒体は、電子回路、ストレージ材料、無機材料、有機材料、生物材料、ケーシング、筐体、コーティング、およびハードウェアのうちの少なくとも１つを含む。コンピュータ可読記憶媒体は、限定されるものではないが、磁気ストレージ媒体（例えばハードディスクドライブ、フロッピー（登録商標）ディスク、テープ等）、光学ストレージ（ＣＤ−ＲＯＭ、ＤＶＤ、光学ディスク等）、揮発性および不揮発性メモリデバイス（例えばＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭ、フラッシュメモリ、ファームウェア、プログラマブルロジック等）、ソリッドステートデバイス（ＳＳＤ）等を含んでよい。説明された複数の動作を実行するコードは、ハードウェアデバイス（例えば集積回路チップ、プログラマブルゲートアレイ（ＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）等）で実装されるハードウェアロジックでさらに実装され得る。さらに、説明される複数の動作を実行するコードは、"複数の送信信号"で実装されてよい。複数の送信信号は、空間を通って、または光ファイバ、銅線等のような伝送媒体を通って伝播し得る。コードまたはロジックがエンコードされた複数の送信信号は、無線信号、衛星送信、無線波、赤外線信号、Ｂｌｕｅｔｏｏｔｈ（登録商標）等をさらに含んでよい。コンピュータ可読記憶媒体に組み込まれたプログラムコードが、複数の送信信号として、送信局またはコンピュータから受信局またはコンピュータへ送信されてよい。コンピュータ可読記憶媒体は、複数の送信信号のみから成るものではない。この構成に対して多くの変更が成されてよいこと、および、製造物品が当技術分野において既知の適切な情報保持媒体を含んでよいことを、当業者であれば認識するであろう。
【００３７】
いくつかの実施形態の複数の態様に対する複数の動作を実行するためのコンピュータプログラムコードが、１または複数のプログラミング原語の任意の組み合わせによって書き込まれてよい。フローチャートおよび複数のブロック図の複数のブロックは、複数のコンピュータプログラム命令によって実装されてよい。
【００３８】
図６は、いくつかの実施形態に従った、計算デバイス５０、６０に対応するシステム６００のブロック図を示す。システム６００は、いくつかの実施形態においては少なくとも１つのプロセッサ６０４を含み得る回路６０２を含んでよい。システム６００はまた、メモリ６０６（例えば揮発性メモリデバイス）およびストレージ６０８も含んでよい。ストレージ６０８は、不揮発性メモリデバイス（例えばＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭ、フラッシュ、ファームウェア、プログラマブルロジック等）、磁気ディスクドライブ、光学ディスクドライブ、テープドライブ等を含んでよい。ストレージ６０８は、内部ストレージデバイス、外付けのストレージデバイス、および／またはネットワークアクセス可能なストレージデバイスを備えてよい。システム６００は、プログラムロジック６１０を含んでよい。これは、メモリ６０６にロードされ、プロセッサ６０４または回路６０２によって実行され得るコード６１２を含む。いくつかの実施形態において、コード６１２を含むプログラムロジック６１０は、ストレージ６０８に格納されてよい。他のいくつかの実施形態において、プログラムロジック６１０は回路６０２中に実装されてよい。従って、図６は、プログラムロジック６１０をその他複数の要素から独立して示しているものの、プログラムロジック６１０は、メモリ６０６および／または回路６０２中に実装されてよい。
【００３９】
いくつかの実施形態は、コンピュータ可読コードをコンピューティングシステムに統合するコンピューティング命令を人または自動化された処理によって配置するための方法に向けられたものであり得る。ここで、コンピューティングシステムと組み合わされたこのコードは、説明された複数の実施形態の複数の動作を実行することが可能となる。
【００４０】
"一実施形態"、"実施形態"、"複数の実施形態"、"上記実施形態"、"上記複数の実施形態"、"１または複数の実施形態"、"いくつかの実施形態"、および"１つの実施形態"という用語は、そうでないことが明示的に特定されていない限り、"１または複数の（だが、全てではない）実施形態"を意味する。
【００４１】
"含む"、"備える"、"有する"およびそれらの変形した用語は、そうでないことが明示的に特定されていない限り、"含むが、限定されはしない"ことを意味する。
【００４２】
複数の事項の列挙されたリストは、そうでないことが明示的に特定されていない限り、これらの事項の任意のものまたは全てが、互いに排他的であることを暗示するものではない。
【００４３】
"一の"、"１つの"、および"その"という用語は、そうでないことが明示的に特定されていない限り、"１または複数の"を意味する。
【００４４】
そうでないことが明示的に特定されていない限り、互いに通信している複数のデバイスが、互いに継続して通信している必要はない。さらに、互いに通信している複数のデバイスは、直接的に、または１または複数の中間媒体を介して間接的に通信してよい。
【００４５】
互いに通信しているいくつかのコンポーネントを伴う一実施形態の説明は、そのようなコンポーネントの全てが必須であることを暗示するものではない。反対に、様々な任意のコンポーネントが、可能性のある多種多様な実施形態を示すべく説明されている。
【００４６】
さらに、複数のプロセスステップ、方法の複数のステップ、複数のアルゴリズム等が連続した順序で説明されているかもしれないが、そのような複数のプロセス、複数の方法、および複数のアルゴリズムは、交互の順序で動作するように構成され得る。言い換えると、説明され得る複数のステップのあらゆる順番または順序は、必ずしも、それらのステップがその順序で実行されるべきであるとの要件を示すものではない。本明細書に説明される複数のプロセスの複数のステップは、実際的な任意の順序で実行され得る。さらに、いくつかのステップは、同時に実行され得る。
【００４７】
単一のデバイスまたは物品が本明細書において説明されている場合、単一のデバイス／物品の代わりに、１つよりも多くのデバイス／物品が（それらが協働していようがいまいが）使用されてよいことは、容易に明らかであろう。同様に、１つよりも多くのデバイスまたは物品が（それらが協働していようがいまいが）本明細書において説明されている場合、１つよりも多くのデバイスまたは物品の代わりに、単一のデバイス／物品が使用されてよいこと、もしくは、示されている数のデバイスまたはプログラムの代わりに、異なる数のデバイス／物品が使用されてよいことは、容易に明らかであろう。あるデバイスの機能および／または複数の特徴は、そのような機能／複数の特徴を有するように明示的には説明されていない１または複数の他のデバイスによって、代替的に具現化されてよい。従って、他の複数の実施形態が、そのデバイス自身を含む必要は無い。
【００４８】
複数の図面中に示されてきたであろう少なくともいくつかの動作が、特定の順序で生じるいくつかのイベントを示す。複数の代替的な実施形態において、いくつかの動作は、異なる順序で実行されてよく、修正されてよく、あるいは除去されてよい。さらに、複数のステップが上記のロジックに追加されてよく、それでもなお、説明された複数の実施形態に従うものである。さらに、本明細書にて説明された複数の動作は、連続的に生じてよい。あるいは、いくつかの動作が並行して処理されてよい。またさらに、複数の動作が、単一の処理ユニットによって、または分散型の複数の処理ユニットによって実行されてよい。
【００４９】
様々な実施形態に関する上記の説明は、例示および説明を目的として提示されてきた。これは、包括的であること、あるいは、開示された正確な複数の形態に限定されるものであることを意図するのではない。上記の教示を考慮すると、多くの変更および変形が可能である。
【００５０】
以下の複数の例は、いくつかの実施形態に関する。
【００５１】
例１は信号を調整する方法であり、メモリコントローラがメモリモジュールへ制御信号を送信する。上記メモリコントローラは、上記メモリモジュールへクロック信号を継続して送信する。上記メモリコントローラは、ストローブ信号を繰り返し解析することによって、上記クロック信号に対する上記制御信号の調整を決定する。
【００５２】
例２において、例１の主題が次を含んでよい。上記制御信号の上記調整を決定することは、上記ストローブ信号のプリアンブルが正しい位置合わせを保持することを保証しつつ、上記クロック信号に対する上記制御信号のタイミングを前後の時間にシフトさせて、上記制御信号のタイミングを、上記クロック信号の立ち上りエッジに対して中心に位置させることをさらに含む。
【００５３】
例３において、例２の主題が次を含んでよい。上記制御信号の上記タイミングの最大のパス領域を繰り返し決定することに続いて、上記制御信号の上記タイミングが中心に位置される。
【００５４】
例４において、例２の主題が次を含んでよい。上記メモリコントローラがリードコマンドを上記メモリモジュールへ送信する。上記メモリコントローラは、上記リードコマンドの上記送信に応答して、リードデータを伴う上記ストローブ信号を上記メモリモジュールから受信する。上記メモリコントローラは、上記ストローブ信号の上記プリアンブルが通常生じるクロックサイクル位置を決定する。
【００５５】
例５において、例４の主題が次を含んでよい。上記メモリコントローラが、上記制御信号の調整に続いて別のリードコマンドを発行し、その後、上記ストローブ信号の上記プリアンブルが検出されるかどうかを判断する。
【００５６】
例６において、例５の主題が次を含んでよい。上記ストローブ信号が検出されるとの判断に応答して、上記ストローブ信号の上記プリアンブルが正しいクロックサイクル位置に生じているかどうかが判断される。上記制御信号タイミングの上記タイミングの最大のパス領域が決定されていた場合、上記ストローブ信号の上記プリアンブルが上記正しいクロック位置に生じているとの判断に応答して、上記制御信号の上記タイミングが、立ち上りクロックエッジに対する最大のパス領域の中心にプログラミングされる。
【００５７】
例７において、例５の主題が次を含んでよい。上記ストローブ信号が検出されないとの判断に応答して、上記制御信号タイミングがフェイル領域にあることが記録される。
【００５８】
例８において、例２の主題が次を含んでよい。上記メモリモジュールはＤＤＲメモリを有し、上記制御信号はチップ選択信号またはグラント信号を含む。
【００５９】
例９において、例２の主題が次を含んでよい。上記メモリモジュールは非ＤＤＲメモリを有し、上記制御信号はチップ選択信号またはグラント信号を含む。
【００６０】
例１０において、例１の主題が次を含んでよい。上記メモリコントローラが、上記制御信号のタイミングがパス領域の中心にあるかどうかを判断する。
【００６１】
例１１は、メモリコントローラがメモリモジュールに連結されているシステムであり、上記メモリコントローラは、メモリモジュールへ制御信号を送信するように動作可能である。上記メモリコントローラは、上記メモリモジュールへクロック信号を継続して送信する。上記メモリコントローラは、ストローブ信号を繰り返し解析することによって、上記クロック信号に対する上記制御信号の調整を決定するように動作可能である。
【００６２】
例１２において、例１１の主題が次を含んでよい。上記制御信号の上記調整を決定することは、上記ストローブ信号のプリアンブルが正しい位置合わせを保持することを保証しつつ、上記クロック信号に対する上記制御信号のタイミングを前後の時間にシフトさせて、上記制御信号のタイミングを、上記クロック信号の立ち上りエッジに対して中心に位置させることをさらに有する。
【００６３】
例１３において、例１２の主題が次を含んでよい。上記制御信号の上記タイミングの最大のパス領域を繰り返し決定することに続いて、上記制御信号の上記タイミングが中心に位置される。
【００６４】
例１４において、例１２の主題が次を含んでよい。上記メモリコントローラがリードコマンドを上記メモリモジュールへ送信する。上記メモリコントローラは、上記リードコマンドの上記送信に応答して、リードデータを伴う上記ストローブ信号を上記メモリモジュールから受信する。上記メモリコントローラは、上記ストローブ信号の上記プリアンブルが通常生じるクロックサイクル位置を決定する。
【００６５】
例１５において、例１４の主題が次を含んでよい。上記メモリコントローラが、上記制御信号の調整に続いて別のリードコマンドを発行し、その後、上記ストローブ信号の上記プリアンブルが検出されるかどうかを判断する。
【００６６】
例１６において、例１５の主題が次を含んでよい。上記ストローブ信号が検出されるとの判断に応答して、上記ストローブ信号の上記プリアンブルが正しいクロックサイクル位置に生じているかどうかが判断される。上記制御信号タイミングの上記タイミングの最大のパス領域が決定されていた場合、上記ストローブ信号の上記プリアンブルが上記正しいクロック位置に生じているとの判断に応答して、上記制御信号の上記タイミングが、立ち上りクロックエッジに対する最大のパス領域の中心にプログラミングされる。
【００６７】
例１７において、例１５の主題が次を含んでよい。上記ストローブ信号が検出されないとの判断に応答して、上記制御信号タイミングがフェイル領域にあることが記録される。
【００６８】
例１８において、例１２の主題が次を含んでよい。上記メモリモジュールはＤＤＲメモリを有し、上記制御信号はチップ選択信号またはグラント信号を含む。
【００６９】
例１９において、例１２の主題が次を含んでよい。上記メモリモジュールは非ＤＤＲメモリを有し、上記制御信号はチップ選択信号またはグラント信号を含む。
【００７０】
例２０において、例１１の主題が次を含んでよい。上記メモリコントローラが、上記制御信号のタイミングがパス領域の中心にあるかどうかを判断する。
【００７１】
例２１は、メモリモジュール、および上記メモリモジュールに連結されたメモリコントローラを備えた、信号を調整するための計算システムである。上記メモリコントローラにプロセッサが連結される。上記プロセッサは、メモリモジュールへ制御信号を送信するように動作可能である。上記メモリコントローラは、上記メモリモジュールへクロック信号を継続して送信する。上記メモリコントローラは、ストローブ信号を繰り返し解析することによって、上記クロック信号に対する上記制御信号の調整を決定するように動作可能である。
【００７２】
例２２において、例２１の主題が次を含んでよい。上記制御信号の上記調整を決定することは、上記ストローブ信号のプリアンブルが正しい位置合わせを保持することを保証しつつ、上記クロック信号に対する上記制御信号のタイミングを前後の時間にシフトさせて、上記制御信号のタイミングを、上記クロック信号の立ち上りエッジに対して中心に位置させることをさらに有する。
【００７３】
例２３において、例２２の主題が次を含んでよい。上記制御信号の上記タイミングの最大のパス領域を繰り返し決定することに続いて、上記制御信号の上記タイミングが中心に位置される。
【００７４】
例２４は、メモリモジュール、および上記メモリモジュールに連結されたメモリコントローラを備えた、信号を調整するためのシステムである。上記メモリコントローラは、メモリモジュールへ制御信号を送信するように動作可能である。上記メモリコントローラは、上記メモリモジュールへクロック信号を継続して送信する。上記メモリコントローラは、ストローブ信号を繰り返し解析することによって、上記クロック信号に対する上記制御信号の調整を決定するように動作可能である。
【００７５】
例２５において、例２４の主題が次を含んでよい。上記制御信号の上記調整を決定することは、上記ストローブ信号のプリアンブルが正しい位置合わせを保持することを保証しつつ、上記クロック信号に対する上記制御信号のタイミングを前後の時間にシフトさせて、上記制御信号のタイミングを、上記クロック信号の立ち上りエッジに対して中心に位置させることをさらに有する。
【００７６】
例２６は、信号を調整するためのシステムであって、メモリモジュールへ制御信号を送信するための手段を備える。上記メモリコントローラは、上記メモリモジュールへクロック信号を継続して送信する。さらに、上記メモリコントローラが、ストローブ信号を繰り返し解析することによって、上記クロック信号に対する上記制御信号の調整を決定するための手段が含まれる。
【００７７】
例２７において、例２６の主題が次を含んでよい。上記制御信号の上記調整を決定することは、上記ストローブ信号のプリアンブルが正しい位置合わせを保持することを保証しつつ、上記クロック信号に対する上記制御信号のタイミングを前後の時間にシフトさせて、上記制御信号のタイミングを、上記クロック信号の立ち上りエッジに対して中心に位置させるための手段をさらに備える。
【００７８】
例２８において、例２６の主題が次を含んでよい。上記制御信号の上記タイミングの最大のパス領域を繰り返し決定することに続いて、上記制御信号の上記タイミングが中心に位置される。
【００７９】
例２９において、例２７の主題は、上記メモリコントローラがリードコマンドを上記メモリモジュールへ送信するための手段を含んでよい。また、上記メモリコントローラが、上記リードコマンドの上記送信に応答して、リードデータを伴う上記ストローブ信号を上記メモリモジュールから受信するための手段も含まれる。さらに、上記メモリコントローラが、上記ストローブ信号の上記プリアンブルが通常生じるクロックサイクル位置を決定するための手段が含まれる。
【００８０】
例３０において、例２９の主題が次を含んでよい。上記メモリコントローラが、上記制御信号の調整に続いて別のリードコマンドを発行し、その後、上記ストローブ信号の上記プリアンブルが検出されるかどうかを判断する。
【００８１】
例３１において、例３０の主題は、上記ストローブ信号が検出されるとの判断に応答して、上記ストローブ信号の上記プリアンブルが正しいクロックサイクル位置に生じているかどうかを判断するための手段、および、上記制御信号タイミングの上記タイミングの最大のパス領域が決定されていた場合、上記ストローブ信号の上記プリアンブルが上記正しいクロック位置に生じているとの判断に応答して、立ち上りクロックエッジに対する最大のパス領域の中心に上記制御信号の上記タイミングをプログラミングするための手段を含んでよい。
【００８２】
例３２において、例３０の主題は、上記ストローブ信号が検出されないとの判断に応答して、上記制御信号タイミングがフェイル領域にあることを記録するための手段を含んでよい。
【００８３】
例３３において、例２７の主題が次を含んでよい。上記メモリモジュールはＤＤＲメモリを有し、上記制御信号はチップ選択信号またはグラント信号を含む。
【００８４】
例３４において、例２７の主題が次を含んでよい。上記メモリモジュールは非ＤＤＲメモリを有し、上記制御信号はチップ選択信号またはグラント信号を含む。
【００８５】
例３５において、例２６の主題が次を含んでよい。上記メモリコントローラが、上記制御信号のタイミングがパス領域の中心にあるかどうかを判断する。
【００８６】
例３６はコンピュータ可読記憶媒体であり、上記コンピュータ可読記憶媒体に格納されたコードが、プロセッサに対して、複数の動作を実行させる。これらの動作は、メモリコントローラにより制御信号をメモリモジュールへ送信することであって、上記メモリコントローラは上記メモリモジュールへクロック信号を継続して送信することと、ストローブ信号を繰り返し解析することによって、上記クロック信号に対する上記制御信号の調整を、上記メモリコントローラにより決定することを含む。
【００８７】
例３７において、例３６の主題が次を含んでよい。上記制御信号の上記調整を決定することは、上記ストローブ信号のプリアンブルが正しい位置合わせを保持することを保証しつつ、上記クロック信号に対する上記制御信号のタイミングを前後の時間にシフトさせて、上記制御信号のタイミングを、上記クロック信号の立ち上りエッジに対して中心に位置させることをさらに有する。
【００８８】
例３８において、例３７の主題が次を含んでよい。上記制御信号の上記タイミングの最大のパス領域を繰り返し決定することに続いて、上記制御信号の上記タイミングが中心に位置される。
【００８９】
例３９において、例３７の主題が次を含んでよい。上記メモリコントローラがリードコマンドを上記メモリモジュールへ送信する。上記メモリコントローラは、上記リードコマンドの上記送信に応答して、リードデータを伴う上記ストローブ信号を上記メモリモジュールから受信する。上記メモリコントローラは、上記ストローブ信号の上記プリアンブルが通常生じるクロックサイクル位置を決定する。
【００９０】
例４０において、例３９の主題が次を含んでよい。上記メモリコントローラが、上記制御信号の調整に続いて別のリードコマンドを発行し、その後、上記ストローブ信号の上記プリアンブルが検出されるかどうかを判断する。
【００９１】
例４１において、例４０の主題が次を含んでよい。上記ストローブ信号が検出されるとの判断に応答して、上記ストローブ信号の上記プリアンブルが正しいクロックサイクル位置に生じているかどうかが判断される。上記制御信号タイミングの上記タイミングの最大のパス領域が決定されていた場合、上記ストローブ信号の上記プリアンブルが上記正しいクロック位置に生じているとの判断に応答して、上記制御信号の上記タイミングが、立ち上りクロックエッジに対する最大のパス領域の中心にプログラミングされる。
【００９２】
例４２において、例３７の主題が次を含んでよい。上記ストローブ信号が検出されないとの判断に応答して、上記制御信号タイミングがフェイル領域にあることが記録される。
【００９３】
例４３において、例３７の主題が次を含んでよい。上記メモリモジュールはＤＤＲメモリを有し、上記制御信号はチップ選択信号またはグラント信号を含む。
【００９４】
例４４において、例３７の主題が次を含んでよい。上記メモリモジュールは非ＤＤＲメモリを有し、上記制御信号はチップ選択信号またはグラント信号を含む。
【００９５】
例４５において、例３７の主題が次を含んでよい。上記メモリコントローラが、上記制御信号のタイミングがパス領域の中心にあるかどうかを判断する。
【００９６】
例４６はコンピュータ可読記憶媒体を含み、上記コンピュータ可読記憶媒体に格納されたコードが、プロセッサに、請求項１、２、３、４、５、６、７、８、９、１０のいずれか１項に記載される方法を実行させる。
【図１】
2016540291.tif 000003
【図２】
2016540291.tif 000004
【図３】
2016540291.tif 000005
【図４】
2016540291.tif 000006
【図５】
2016540291.tif 000007
【図６】
2016540291.tif 000008
【手続補正書】
【提出日】平成28年6月23日(2016.6.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリコントローラにより制御信号をメモリモジュールへ送信する段階であって、前記メモリコントローラは前記メモリモジュールへクロック信号を継続して送信する、送信する段階と、
ストローブ信号を繰り返し解析することによって、前記クロック信号に対する前記制御信号の調整を、前記メモリコントローラにより決定する段階と、
を有する、信号を調整する方法。
【請求項２】
前記制御信号の前記調整を決定する前記段階は、
前記ストローブ信号のプリアンブルが正しい位置合わせを保持することを保証しつつ、前記クロック信号に対する前記制御信号のタイミングを前後の時間にシフトさせて、前記制御信号のタイミングを、前記クロック信号の立ち上りエッジに対して中心に位置させる段階をさらに含む、請求項１に記載の方法。
【請求項３】
前記制御信号の前記タイミングの最大のパス領域を繰り返し決定する段階に続いて、前記制御信号の前記タイミングが中心に位置される、請求項２に記載の方法。
【請求項４】
前記方法は、
前記メモリコントローラにより、リードコマンドを前記メモリモジュールへ送信する段階と、
前記リードコマンドを送信する前記段階に応答して、前記メモリコントローラにより、リードデータを伴う前記ストローブ信号を前記メモリモジュールから受信する段階と、
前記メモリコントローラにより、前記ストローブ信号の前記プリアンブルが通常生じるクロックサイクル位置を決定する段階と、
をさらに有する、請求項２に記載の方法。
【請求項５】
前記メモリコントローラは、前記制御信号の調整に続いて別のリードコマンドを発行し、その後、前記ストローブ信号の前記プリアンブルが検出されるかどうかを判断する、請求項４に記載の方法。
【請求項６】
前記方法は、
前記ストローブ信号が検出されるとの判断に応答して、前記ストローブ信号の前記プリアンブルが正しいクロックサイクル位置に生じているかどうかを判断する段階と、
前記制御信号の前記タイミングの最大のパス領域が決定されていた場合、前記ストローブ信号の前記プリアンブルが前記正しいクロック位置に生じているとの判断に応答して、立ち上りクロックエッジに対する最大のパス領域の中心に前記制御信号の前記タイミングをプログラミングする段階と、
をさらに有する、請求項５に記載の方法。
【請求項７】
前記方法は、前記ストローブ信号が検出されないとの判断に応答して、前記制御信号の前記タイミングがフェイル領域にあることを記録する段階をさらに有する、請求項５に記載の方法。
【請求項８】
前記メモリモジュールはＤＤＲメモリを有し、
前記制御信号はチップ選択信号またはグラント信号を含む、
請求項２から請求項７のいずれか１項に記載の方法。
【請求項９】
前記メモリモジュールは非ＤＤＲメモリを有し、
前記制御信号はチップ選択信号またはグラント信号を含む、
請求項２から請求項７のいずれか１項に記載の方法。
【請求項１０】
前記メモリコントローラは、前記制御信号のタイミングがパス領域の中心にあるかどうかを判断する、請求項１から請求項９のいずれか１項に記載の方法。
【請求項１１】
メモリモジュールに連結されたメモリコントローラであって、前記メモリコントローラは、
前記メモリモジュールへ制御信号を送信するように動作可能であって、前記メモリコントローラは前記メモリモジュールへクロック信号を継続して送信し、
ストローブ信号を繰り返し解析することによって、前記クロック信号に対する前記制御信号の調整を決定するように動作可能である、
メモリコントローラ。
【請求項１２】
前記制御信号の前記調整の決定は、
前記ストローブ信号のプリアンブルが正しい位置合わせを保持することを保証しつつ、前記クロック信号に対する前記制御信号のタイミングを前後の時間にシフトさせて、前記制御信号のタイミングを、前記クロック信号の立ち上りエッジに対して中心に位置させることをさらに含む、請求項１１に記載のメモリコントローラ。
【請求項１３】
前記制御信号の前記タイミングの最大のパス領域を繰り返し決定することに続いて、前記制御信号の前記タイミングが中心に位置される、請求項１２に記載のメモリコントローラ。
【請求項１４】
前記メモリコントローラは、
リードコマンドを前記メモリモジュールへ送信し、
前記リードコマンドの前記送信に応答して、リードデータを伴う前記ストローブ信号を前記メモリモジュールから受信し、
前記ストローブ信号の前記プリアンブルが通常生じるクロックサイクル位置を決定するように、
さらに動作可能である、請求項１２に記載のメモリコントローラ。
【請求項１５】
前記メモリコントローラは、前記制御信号の調整に続いて別のリードコマンドを発行し、前記ストローブ信号の前記プリアンブルが検出されるかどうかを判断する、請求項１４に記載のメモリコントローラ。
【請求項１６】
前記メモリコントローラは、
前記ストローブ信号が検出されるとの判断に応答して、前記ストローブ信号の前記プリアンブルが正しいクロックサイクル位置に生じているかどうかを判断し、
前記制御信号の前記タイミングの最大のパス領域が決定されていた場合、前記ストローブ信号の前記プリアンブルが前記正しいクロック位置に生じているとの判断に応答して、立ち上りクロックエッジに対する最大のパス領域の中心に前記制御信号の前記タイミングをプログラムするようにさらに動作可能である、請求項１５に記載のメモリコントローラ。
【請求項１７】
前記メモリコントローラは、
前記ストローブ信号が検出されないとの判断に応答して、前記制御信号の前記タイミングがフェイル領域にあることを記録するようにさらに動作可能である、請求項１５に記載のメモリコントローラ。
【請求項１８】
前記メモリコントローラが連結されている前記メモリモジュールはＤＤＲメモリを有し、
前記制御信号はチップ選択信号またはグラント信号を含む、請求項１２から請求項１７のいずれか１項に記載のメモリコントローラ。
【請求項１９】
前記メモリコントローラが連結されている前記メモリモジュールは非ＤＤＲメモリを有し、
前記制御信号はチップ選択信号またはグラント信号を含む、請求項１２から請求項１７のいずれか１項に記載のメモリコントローラ。
【請求項２０】
前記メモリコントローラは、前記制御信号のタイミングがパス領域の中心にあるかどうかを判断する、請求項１１から請求項１９のいずれか１項に記載のメモリコントローラ。
【請求項２１】
信号を調整する計算システムであって、
メモリモジュールと、
前記メモリモジュールに連結されたメモリコントローラと、
前記メモリコントローラに連結されたプロセッサと、
を備え、
前記プロセッサは、
メモリモジュールへ制御信号を送信するように動作可能であって、前記メモリコントローラは前記メモリモジュールへクロック信号を継続して送信し、
ストローブ信号を繰り返し解析することによって、前記クロック信号に対する前記制御信号の調整を決定するように動作可能である、
計算システム。
【請求項２２】
前記制御信号の前記調整の決定は、
前記ストローブ信号のプリアンブルが正しい位置合わせを保持することを保証しつつ、前記クロック信号に対する前記制御信号のタイミングを前後の時間にシフトさせて、前記制御信号のタイミングを、前記クロック信号の立ち上りエッジに対して中心に位置させることをさらに含む、請求項２１に記載の計算システム。
【請求項２３】
前記制御信号の前記タイミングの最大のパス領域を繰り返し決定することに続いて、前記制御信号の前記タイミングが中心に位置される、請求項２２に記載の計算システム。
【請求項２４】
信号を調整するシステムであって、
メモリモジュールと、
メモリモジュールに連結されたメモリコントローラと、
を備え、
前記メモリコントローラは、
メモリモジュールへ制御信号を送信するように動作可能であって、前記メモリコントローラは前記メモリモジュールへクロック信号を継続して送信し、
ストローブ信号を繰り返し解析することによって、前記クロック信号に対する前記制御信号の調整を決定するように動作可能である、
システム。
【請求項２５】
格納されたコードがプロセッサに複数の動作を実行させるプログラムであって、前記複数の動作は、
メモリコントローラにより制御信号をメモリモジュールへ送信する段階であって、前記メモリコントローラは前記メモリモジュールへクロック信号を継続して送信する、送信する段階と、
ストローブ信号を繰り返し解析することによって、前記クロック信号に対する前記制御信号の調整を、前記メモリコントローラにより決定する段階と、
を含む、プログラム。
【請求項２６】
請求項２５に記載のプログラムを格納する、コンピュータ可読記憶媒体。
【国際調査報告】
2016540291.tif 000009
2016540291.tif 000010