(57)【特許請求の範囲】
【請求項１】
メモリデバイスが、前記メモリデバイスのトレーニングモードに入る段階と、
前記トレーニングモードの間に、コントローラからトレーニング信号を受信する段階と、
前記トレーニング信号をサンプリング回路でサンプリングする段階と、
前記メモリデバイスが、前記トレーニング信号のサンプリングにおけるエラー数を追跡する段階と、
前記エラー数に基づいて、少なくとも１つの入／出力（Ｉ／Ｏ）パラメータへの調整を生じさせる段階と、を備える、メモリデバイスとの通信のための複数の入／出力（Ｉ／Ｏ）設定をトレーニングするための方法。
【請求項２】
前記トレーニングモードに入る段階は、前記メモリデバイスのリフレッシュモード中に、前記トレーニングモードに入る段階を含む、請求項１に記載の方法。
【請求項３】
前記トレーニング信号を受信する段階は、
前記トレーニング信号を書き込みコマンドとして受信する段階と、
前記トレーニング信号を前記メモリデバイスのメモリアレイへ書き込む代わりに、それを破棄する段階と、を含む、請求項１または２に記載の方法。
【請求項４】
前記エラー数を追跡する段階は、カウンタで、トレーニング信号のシーケンスにわたり発生するエラー数をカウントする段階を含む、請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記調整を生じさせる段階は、
前記コントローラに、調整するための前記少なくとも１つのＩ／Ｏパラメータを決定させるべく、前記エラー数を前記コントローラに送信する段階を含む、請求項４に記載の方法。
【請求項６】
前記調整を生じさせる段階は、
前記メモリデバイスの受信Ｉ／Ｏパラメータへの前記調整を生じさせる段階を含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記調整を生じさせる段階は、
前記コントローラの送信Ｉ／Ｏパラメータへの前記調整を生じさせる段階を含む、請求項１から５のいずれか一項に記載の方法。
【請求項８】
前記調整を生じさせる段階はさらに、
前記エラー数に基づく、調整するための前記少なくとも１つのＩ／Ｏパラメータの検索を実行する段階を含む、請求項１から７のいずれか一項に記載の方法。
【請求項９】
コンピュータに、請求項１から８のいずれか一項に記載の方法を実行させる、プログラム。
【請求項１０】
請求項１から８のいずれか一項に記載の方法を実行するための手段を備える、装置。
【請求項１１】
メモリデバイスに前記メモリデバイスのトレーニングモードに入らせるようにする状態コントローラと、
前記トレーニングモードの間に、コントローラデバイスからトレーニング信号を受信すべく、前記コントローラデバイスとのインタフェースを取るハードウェアインタフェースと、
前記トレーニング信号をサンプリングし、前記トレーニング信号のサンプリングにおけるエラー数を追跡する受信機ハードウェアと、
前記エラー数に基づいて、少なくとも１つの入／出力（Ｉ／Ｏ）パラメータへの調整を生じさせるロジックと、を備える、メモリデバイス。
【請求項１２】
前記状態コントローラは、前記メモリデバイスに前記メモリデバイスのリフレッシュモード中に、前記トレーニングモードに入らせるようにする、請求項１１に記載のメモリデバイス。
【請求項１３】
トレーニング信号のシーケンスにわたり発生するエラー数をカウントするカウンタをさらに備える、請求項１１に記載のメモリデバイス。
【請求項１４】
前記ロジックは、前記コントローラデバイスの送信機の少なくとも１つのＩ／Ｏパラメータへの調整を生じさせる、請求項１１に記載のメモリデバイス。
【請求項１５】
請求項９に記載のプログラムを格納する、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の複数の実施形態は一般に、メモリデバイスの書き込みに関し、より具体的には、不一致アーキテクチャにおける書き込みに対するタイミング制御のための周期的なトレーニングに関する。
【０００２】
著作権表示／許可
本特許文献の開示は部分的に、著作権保護の対象となる材料を含み得る。著作権所有者は、特許商標庁の特許包袋若しくは記録の表示通り、特許文献若しくは特許開示が何人により複製されようと異議を申し立てないが、それ以外の場合、一切の著作権はどれも留保する。著作権表示Copyright (c) 2013, Intel Corporation, All Rights Reservedは、以下の説明、本明細書の添付図面におけるすべてのデータ、並びに以下に説明される任意のソフトウェアに適用される。
【背景技術】
【０００３】
ホストプラットフォーム上のコンポーネント間の通信が、電子デバイスの動作に対して必要である。しかしながら、温度変化および電圧変動等の様々な条件が、コンポーネント間の高速通信のタイミングに影響を与える。一般に、異なるコンポーネント間の通信は、Ｉ／Ｏ（入／出力）と呼ばれ得、規格（例えば、メモリサブシステムのコンポーネント間）によって頻繁に統制される。Ｉ／Ｏ規格は、Ｉ／Ｏ電力、Ｉ／Ｏレイテンシ、およびＩ／Ｏ周波数に関する性能特性に関連し得る。Ｉ／Ｏ性能設定の規格または公称値は、互換性および相互運用性のために、異なるシステムにわたって実現され得る値に設定される。通常、電力とレイテンシとの間のトレードオフがある。このように、厳格なタイミングパラメータを用いることは電力を低減し得るが、Ｉ／Ｏレイテンシが温度、電圧および処理変動によって、さらなる悪影響を受ける状態をもたらす。
【０００４】
メモリサブシステムにおいては、データパス（ＤＱ）およびデータストローブパス（ＤＱＳ）の両方が、一致連続時間増幅器によって増幅される、一致アーキテクチャを使用することが一般的である。図１Ａは、既知の一致受信機回路のブロック図である。一致アーキテクチャ１０２において、データパスの増幅器１２２は、ストローブパスの増幅器１２４およびクロック分配ネットワーク１３０の両方に一致される。データパスは、内部Ｖｒｅｆ信号１１０とともに増幅器１２２に入力されるデータ入力ＤＱ［７：０］を含む。データストローブパスは、ｐタイプデバイス（ＤＱＳ＿Ｐ）のためのストローブおよびｎタイプデバイス（ＤＱＳ＿Ｎ）のためのストローブに対する入力を含む。増幅器１２４は、クロック信号を複数の受信者デバイスへ同時に分配するためのネットワークを提供するクロック分配ネットワーク１３０にフィードする。具体的に示されているのは、サンプリング回路１４０の要素１４２および１４４へと進む信号である。
【０００５】
不一致アーキテクチャを使用することは、一致アーキテクチャの使用に比較して、受信機の電力および性能を改善し得る。図１Ｂは、既知の不一致受信機回路のブロック図である。不一致アーキテクチャ１０４において、データ（ＤＱ）電圧は、パッドで直接サンプリングされる。サンプリングされた後、システムは一致アーキテクチャ１０２に必要とされる厳密なタイミング制約無しで、信号を増幅し得る。即ち、増幅はＵＩ（ユニット間隔）全体にわたり、またはおそらくそれよりも多く生じ得る。このように、不一致受信機のゲイン／帯域幅要件は、一致受信機のものよりも低い。図示の通り、ＤＱ［７：０］および内部Ｖｒｅｆ１１０は、サンプリング回路１６０の要素１６２および１６４に直接フィードされる。ＤＱＳパスは依然、連続時間増幅器、増幅器１２６を要求するが、ＤＱＳ上の振幅は通常、ＤＱ上の振幅よりも大きく、このことは、より低いゲイン増幅器１２６が使用され得ることを意味する。というのは、より低いゲイン増幅器は、データパス内で高いゲイン増幅器に一致される必要がないからである。
【０００６】
不一致アーキテクチャ１０４は、一致アーキテクチャ１０２に関し、特定の受信機帯域幅および電圧応答性を改善するが、タイミング制御を低下させる。ＤＱＳパスおよびＤＱパス上の遅延は、不一致アーキテクチャ１０４内で自己補償しない。このように、ＴＤＱＳ、すなわちストローブ信号をクロック分配ネットワーク１３０を介して伝播する時間における変更は、受信機タイミングバジェットを直接低下させることになる。既存のトレーニングは、タイミングを１回修正できるが、トレーニングされた位置からのずれは、タイミングマージンに直接影響を与える。ずれは、電圧、温度、および／または経年劣化にわたって生じ得、これにより、タイミングマージンを低下させ、おそらくはリンクエラーを生じさせるであろう。
【０００７】
トレーニングデータがリンクにわたって書き込まれ（例えば、メモリコントローラからＤＲＡＭ（ダイナミックランダムアクセスメモリ）へ）、エラーが確認される、周期的なトレーニングが既知である。しかしながら、周期的なトレーニングは、バス帯域幅上の複雑性および負荷に悩まされる。また、当該トレーニングは、多数のサンプルが平均化された場合に最も有効であろうが、より多くのサンプルの平均化は、性能要件およびフィードバックループ帯域幅と直接競合する。さらに、既知の周期的なトレーニングは、既存のトレーニング方法のフィードバックループに係る反復特性が原因で、本来的に遅い。
【０００８】
以下の説明は、本発明の複数の実施形態の実装の例示として提供された図解を有する図面の説明を含む。図面は、例示として理解されるべきであって、限定として理解されるべきではない。本明細書で用いられるように、１または複数の「実施形態」という言及は、本発明の少なくとも１つの実装に含まれる特定の特徴、構造、および／または特性を説明するものとして理解されるべきである。このように、本明細書内に現れる「一実施形態において」または「代替的な実施形態において」等の文言は、本発明の様々な実施形態および実装を記載しており、必ずしもすべてが同一の実施形態を指してはいない。しかしながら、それらはまた、必ずしも互いに排他的であるわけではない。図面の説明を含む特定の詳細および実装の説明が後に続くが、図面は以下に説明される実施形態のうちのいくつかまたはすべてを示し得、本明細書で提示される発明思想の他の潜在的な実施形態または実装を説明している場合もある。
【図面の簡単な説明】
【０００９】
【図１Ａ】既知の一致受信機回路のブロック図である。
【図１Ｂ】既知の不一致受信機回路のブロック図である。
【図２】トレーニング信号上でエラー確認を実行する不一致受信機回路を有するシステムの実施形態のブロック図である。
【図３】不一致受信機回路、および受信されたトレーニング信号内のエラーをカウントするエラー確認回路を有するシステムの実施形態のブロック図である。
【図４】送信機から受信機へ送信されたトレーニング信号内のエラーの検出に基づいて、Ｉ／Ｏ動作を調整するシステムの実施形態のブロック図である。
【図５】受信されたトレーニング信号内のエラーを検出するための動作タイミングの実施形態のタイミング図である。
【図６Ａ】受信されたトレーニング信号内の複数のエラーを確認するための処理の実施形態に係るフロー図である。エラー確認は、受信デバイスによって実行される
【図６Ｂ】受信されたトレーニング信号内の複数のエラーを確認するための処理の実施形態のフロー図である。エラー確認は、送信デバイスによって実行される。
【図７】受信信号エラー確認が実装され得るコンピューティングシステムの実施形態のブロック図である。
【図８】受信信号エラー確認が実装され得るモバイルデバイスの実施形態のブロック図である。
【発明を実施するための形態】
【００１０】
本明細書で説明されるように、メモリサブシステム内の周期的なトレーニングは、トレーニング状態またはトレーニングモード中に実行される。一実施形態において、トレーニング状態は、メモリデバイスのリフレッシュサイクル中である。メモリデバイスおよび／またはメモリコントローラは、トレーニングの性能に対する影響を低減すべく、いつメモリデバイスをトレーニング状態またはトレーニングモードに置くべきかを決定できる。このように、メモリサブシステムは、メモリデバイスの性能に影響を与えないか、あるいは性能への影響が少ないかのいずれかである間に、Ｉ／Ｏ（入／出力）をトレーニングし得る。例えば、トレーニングがメモリデバイスのリフレッシュ状態中に実行される場合、リフレッシュ中にメモリデバイスに対し発行される読み取りまたは書き込みコマンドはないから、性能に対する影響はない可能性がある。
【００１１】
複数のＩ／Ｏパラメータは、受信されたトレーニング信号内に検出されるエラー数に基づいて調整される。コントローラデバイスはトレーニング信号を送信し、メモリデバイスはトレーニング信号をサンプリングする。コントローラは、中央処理ユニット（ＣＰＵ）、メモリコントローラ、またはシステム内の他のプロセッサであり得る。メモリデバイスは単一のデバイスであり得、あるいは複数の他のメモリデバイスと並列に構成され得る。受信されたトレーニング信号内に検出されたエラー数に基づいて、システムは少なくとも１つのＩ／Ｏパラメータを調整し得る。システムの構成に応じて、コントローラまたはメモリデバイスのいずれかがエラー検出を実行し得る。システムの構成に応じて、コントローラのＩ／ＯパラメータまたはメモリデバイスのＩ／Ｏパラメータのいずれかが調整され得る。
【００１２】
複数のエラーを追跡し、追跡された当該複数のエラーに応答して少なくとも１つのＩ／Ｏパラメータを調整することによって、システムは、サンプリングストローブ信号であるＴＤＱＳに関連付けられる経時的なタイミングのずれを周期的に追跡し得る。周期的な補償は、システムがデータ信号（ＤＱ）のアイの中央にサンプリングストローブ信号（ＤＱＳ）を保持することを可能にし得る。周期的な補償トレーニングは、初期トレーニングまたはＤＱアイ上のＤＱＳ信号のセンタリングに対する補足および追加的なものとして理解されるべきである。初期トレーニングは一般に、メモリデバイスおよびコントローラが位置されるシステムをブートおよび初期化するＢＩＯＳ（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）の処理を介して実行される。このように、初期トレーニングは完了したと想定され得、周期的な補償トレーニングは、ＴＤＱＳにおけるずれを追跡および補償できる。ずれは通常、システムの動作中の温度および／または電圧の変化等、環境条件の変化に起因して発生する。また、デバイスの経年劣化は、デバイスの性能における変化を生じさせ得る。
【００１３】
初期化トレーニングを実行する代わりに、周期的なトレーニングがずれを決定するために使用される場合、システムは、周期的なトレーニングのために単純なトレーニングパターン（例えば、１０１０）を使用し得る。単純なトレーニングパターンは、データ信号に関するストローブ信号内のずれを識別するのに十分であるべきである。一実施形態において、コントローラまたは送信デバイスは、複数のトレーニング動作を制御する。コントローラは、データ信号に関する情報を提供する複数の値を個別に追跡し得る。一実施形態において、システムは、システムクロックの各フェーズ中に起こるアクティビティを細分化するためのフェーズ補間を採用する。これらの値は、クロックサイクル内のデータ信号および／またはストローブ信号の特定の位置に関する情報を提供する。複数のフェーズを追跡するために使用されるロジックは、フェーズ補間器（ＰＩ）と呼ばれ、当該ロジックから導出される複数の値は、ＰＩ値と呼ばれ得る。通常の細分化は、８、１６、または３２であり得るが、他の複数のバイナリ値が使用され得る。一実施形態において、コントローラは、２つのＰＩ値を個別に追跡する。１つのＰＩは、通常動作のための複数の条件を示し、最悪のケースのトレーニングパターン（例えば、初期化トレーニング中に決定される）のアイの中心を表す。第２のＰＩ値は、アイエッジを追跡するために用いられる周期的なトレーニングに関する複数の条件を示す。周期的なトレーニング中、（例えば、コントローラ、メモリデバイス、またはいくつかの組み合わせにおける）制御ロジックは、ＤＱエッジが前に格納された値に対して、どのくらい移動するかを検出し得る。エッジがどのくらい移動したかに基づいて、制御ロジックは、ＤＱ中心値をどのようにオフセットするかを決定し得る。ＤＱエッジがトレーニングパターンに基づく場合、それは、複数の平均的なＤＱの移動を正確にキャプチャすべきである。これは、単純なトレーニングパターンが使用される場合であっても当てはまる。というのは、ＤＱエッジはまた、データバス上のより複雑なパターン（例えば、ランダムな、ＬＦＳＲ（ｌｉｎｅａｒ  ｓｈｉｆｔ  ｆｅｅｄｂａｃｋ  ｒｅｇｉｓｔｅｒ）、ビクティムアグレッサ、偶数対奇数モード等のより複雑な複数のパターン）に対する平均的な移動を示すべきであるからである。
【００１４】
周期的なトレーニングを用いて、アイエッジのずれ、またはデータアイの経時的な移動を追跡することによって、システムはコントローラからメモリデバイスまでのＩ／Ｏインタフェースの書き込みパスを監視し得る。当該監視によって、Ｉ／Ｏインタフェースの性能に関する詳細を提供し得る。リフレッシュ中、またはＩ／Ｏインタフェースが他のアイドル時のいくつかの他の特別なトレーニング期間中に提供される場合、システムは、有効なバス帯域幅に対する最小減の影響で、複数のエラー内のノイズをフィルタリングすべく、平均化する十分なサンプルを生成し得る。
【００１５】
一実施形態において、テストシステムまたはテストエンジンが、複数のメモリサブシステム、より具体的には、プラットフォームコンポーネント（例えば、プロセッサ、メモリコントローラ）とメモリデバイスとの間のＩ／Ｏ（入／出力）インタフェースまたは通信をテストするために使用され得る。テストは、説明される周期的なテストを実装し得る。スケジューラまたはそれに相当するロジックを持つメモリコントローラを使用する任意のメモリサブシステムが、テストエンジンの少なくとも一実施形態を実装し得る。本明細書でのメモリデバイスの言及は、異なるメモリタイプを含み得る。例えば、メモリサブシステムは一般に、本明細書で説明されるメモリデバイスの一例であるＤＲＡＭを使用する。このように、本明細書に記載のテストエンジンは、多数のメモリ技術のうちの任意のものと互換性がある。そのようなものとしては、ＤＤＲ３（デュアルデータレートバージョン３、２００７年６月２７日にＪＥＤＥＣ（電子機器技術評議会）によるオリジナルリリース、現在はリリース２１）、ＤＤＲ４（ＤＤＲバージョン４、初期の仕様はＪＥＤＥＣによって２０１２年９月に公開された）、ＬＰＤＤＲ４（低電力デュアルデータレートバージョン４、仕様は本出願の出願時において、ＪＥＤＥＣによって開発段階である）、ＷＩＯ（Ｗｉｄｅ  Ｉ／Ｏ、仕様は本出願の出願時において、ＪＥＤＥＣによって開発段階である）および／またはその他のもの、並びにそのような複数の仕様の複数の派生物または拡張物に基づく複数の技術等が挙げられる。
【００１６】
一実施形態において、Ｉ／Ｏインタフェース回路の動作は、実験的テストの使用によりさらに制御され得る。周期的なトレーニングによって検出される遅延の変化に基づいて、システムはデバイスＩ／Ｏ（入／出力）の複数の性能パラメータを実験的にテストし得、検出された複数のタイミング変化を調整すべく、どのパラメータを修正するかを決定する。テストシステムを介する実験的テストに基づいて、システムは、デバイス間通信が行われるシステムまたはデバイスに特有の複数の性能パラメータを設定し得る。異なるＩ／Ｏ回路パラメータに対する異なる設定の各々に関し、テストシステムは、各Ｉ／Ｏ回路パラメータに対して値を設定し、当該パラメータ値で通信の負荷テストをするためのテストトラフィックを生成し、Ｉ／Ｏ性能特性のための動作マージンを測定し得る。テストシステムはさらに、検索機能を実行し、遅延が補償される各Ｉ／Ｏ回路パラメータに対して複数の値を決定し得る。一実施形態において、システムは、検索機能に基づいて、複数のＩ／Ｏ回路パラメータに対する複数のランタイム値を設定する。複数の設定は、テストに基づいて、複数の特定のシステムに係る複数の特定のコンポーネントに対し動的に変更され得る。
【００１７】
上述の通り、不一致アーキテクチャは、一致アーキテクチャに関して、帯域幅および周波数において顕著な改善を提供し得る。しかしながら、従来の不一致アーキテクチャは、タイミング制御の低下に悩まされる。以下により詳細に説明されるように、システムは、不一致受信機アーキテクチャのタイミング制御を周期的なトレーニングの使用を介して管理し得る。システムは、トレーニング信号の受信において複数のエラーを検出し、エラー検出によって示されるタイミングのずれを補償すべく、メモリコントローラおよび／またはメモリデバイス間の調整するための１または複数のＩ／Ｏパラメータを決定する。
【００１８】
一実施形態において、受信機回路は、送信機へ情報を提供し返し、送信機に、検出された複数のエラーに基づいてその動作を調整させる。このように、複数の遅延変化は、送信機デバイスの送信動作を変更することによって補償され得る。一実施形態において、受信機デバイスは、必要なＩ／Ｏ調整を算出し得る。一実施形態において、受信機デバイスは単に生データを送信機へ送信する。送信機は次に、検出された複数の変化に基づいて、Ｉ／Ｏ調整を算出し得る。
【００１９】
図２は、トレーニング信号上でエラー確認を実行する不一致受信機回路を有するシステムの実施形態のブロック図である。システム２００は、送信ハードウェアＴＸ２１２とともに示されるデバイス２１０および、受信ハードウェア２２２とともに示されるデバイス２２０を含む。一実施形態において、デバイス２２０はまた、デバイス２１０に送信信号を送信し得る。このように、デバイス２２０は、明示的に示されていない送信ハードウェアを含み得、デバイス２１０は明示的に示されていない受信ハードウェアを含み得ることが理解されるであろう。一実施形態において、送信および受信ハードウェアは、送受信機ハードウェアであって、それは、送信および受信の両方によってインタフェースを取ることを可能にする。複数のデバイスは、送信ドライバによって駆動される１または複数の送信ラインを介して接続される。送信ラインは、デバイス２１０の複数のＩ／Ｏピンをデバイス２２０と接続する任意のタイプの信号ライン（例えば、トレース、ワイヤ）であり得る。デバイス２２０は、デバイス２２０のための複数の受信動作を実行するハードウェアおよび他のロジックを表す受信コントローラ２３０を含む。受信コントローラ２３０は、ＲＸ２２２からの受信信号の複数の電圧レベルをサンプリングするためのサンプリング回路２３２を含み得る。
【００２０】
サンプリング回路２３２は、いつ着信または受信信号をサンプリングするかを示すサンプルストローブ２３４または他の制御信号によって制御される。サンプルストローブ２３４は、受信コントローラ２３０によって個別の信号として生成される。受信コントローラ２３０は、サンプルストローブ２３４の生成を制御するタイミング制御２３６を含む。
【００２１】
一実施形態において、受信コントローラ２３０は、受信されたトレーニング信号内にエラーが検出されたかを決定するためのハードウェアおよび／または他のロジックを含むエラー確認２３８を含む。ＲＸ２２２によって受信される信号内のデータアイに関するサンプルストローブ２３４のタイミングにおける（正または負のいずれかの）ずれは、着信信号を正常に受信するためのデバイス２２０の機能に悪く影響し得る。エラー確認２３８は、サンプリングストローブが、データ信号と整合されているかを決定し得る。エラー数の閾値が多数のサンプルにわたって受信される場合、システムは受信機タイミングにおいてずれが発生したと決定し得る。ずれ、またはデータ信号に対するストローブ信号若しくは制御信号の遅延変化に基づいて、タイミング制御２３６はその変化を調整し得る。一実施形態において、タイミング制御２３６および／または他の制御ロジックは、サンプリング回路２３２のサンプリングタイミングをより良好に一致させるべく、その複数の送信パラメータを変更するために、デバイス２１０にシグナリングすることによって、遅延を調整する。このように、デバイス２１０のタイミング制御２１４は、ＴＸ２１２の動作を調整し得る。一実施形態において、タイミング制御２３６は、サンプリング回路２３２のタイミングを調整すべく、ストローブサンプリング２３４のタイミングを調整する。このように、システム２００は、デバイス２１０の送信回路に対するデバイス２２０の受信回路のタイミングを制御する。
【００２２】
一実施形態において、エラー確認２３８は、デバイス２１０の制御ロジック（タイミング制御２１４および／または他のロジック）に直接送信されるエラーカウントを生成する。このように、デバイス２１０のタイミング制御２１４および／または他の制御ロジックは、ずれを補償すべく、デバイス２１０および／またはデバイス２２０の動作を調整し得る。タイミング制御２１４および／またはタイミング制御２３６は、代替的にＩ／Ｏコントロールとしてラベル付けされ得、それらがデバイスのＩ／Ｏ性能を調整するロジックを含むことを示すことが理解されるであろう。Ｉ／Ｏ性能調整は、Ｉ／Ｏインタフェースのタイミングを変更する。
【００２３】
デバイス２１０がメモリコントローラまたはプロセッサであり、デバイス２２０がメモリデバイスであるという一例として想定すると、システム２００は、遅延における複数の変化を補償すべく、ｔＤＱＳ遅延（データストローブ信号の伝播遅延）の測定方法、およびコントローラ／プロセッサ送信機タイミングの調整方法と関連があると言える。メモリデバイスのリフレッシュまたはトレーニングモード中の複数のエラーを追跡することによって、Ｉ／Ｏインタフェースは、Ｉ／Ｏインタフェースのスループット帯域幅に影響を与えずにトレーニング信号を交換するために使用され得る。サンプルストローブ２３４の回路パスは、サンプリング回路２３２に一致されていないことが理解されるであろう。このように、受信コントローラ２３０は、不一致受信機回路アーキテクチャを採用する。不一致アーキテクチャは通常、電圧および温度変化に対して敏感であることから、回路の動作（具体的には、タイミング）は、経時的に変化する。しかしながら、周期トレーニングでタイミングにおける変化を監視することは、エラー確認２３８によって示されるように、システム２００がＩ／Ｏインタフェースタイミングを調整することを可能にし、Ｉ／Ｏインタフェースは次にサンプリングポイントを調整する。さもなければ、サンプリングポイントはずれ、信号の誤った部分でのサンプリングを生じさせ、複数の受信エラーをもたらすだろう。
【００２４】
周期的なトレーニングは、最悪のケースのシナリオまたは最悪のケースのパターンに対するＩ／Ｏインタフェース性能をテストするのではなく、単にＩ／Ｏインタフェース内のエッジの移動を追跡することが理解されるであろう。このように、トレーニングは単に、以前に格納された複数の値に対し、どのくらいの変更が生じるかを決定するので、トレーニングは「堅牢」であるとみなされない可能性がある。検出されたエラー数における変化は、ストローブ信号に対するデータ信号の複数のエッジの移動を示すべきである。一実施形態において、メモリデバイスは、エラー確認を実行し、それによって、テストが書き込み数より少ない読み取り数でなされることを可能にする。例えば、メモリデバイスは、トレーニングモード中に受信される書き込みを無視または切り落とすように構成され得る。このように、トレーニングは、従来の周期的なテストのように、各書き込みに対して読み取りを実行する必要があることに対し、はるかにより迅速に完了できる。
【００２５】
実際の読み取りは、メモリデバイスのアクティブな動作の要求に加え、保存および復元を要求し、それにより実際のアクセス帯域幅を干渉する。トレーニングモードにおいて、メモリデバイスは単に、着信信号を受信およびサンプリングし、次に物理的媒体にそれを書き込む代わりに切り落とすことができる。代替的な実施形態において、メモリデバイスは、トレーニング信号のためのトレーニングモードにおいて使用されるレジスタに着信信号を書き込むことができ、繰り返すが、物理的ストレージ媒体アレイにデータを書き込まない。トレーニング信号内の複数のエラーを検出すべく、コントローラがレジスタを読み取る場合であっても、保存および復元は要求されない。
【００２６】
周期的なトレーニングは、検出されたエラー数を平均化することを可能にすべく、十分な数のトレーニング信号サンプルとともに優先的に実行されることが理解されるであろう。例えば、単一のトレーニング信号サンプル中のスプリアス条件は、複数の不正確な結果をもたらし得る。しかしながら、検出されたエラー数を監視すると、平均で、１００を超えるトレーニング信号が、エラー数のより正確な読み取りをもたらし得る。例えば、多数のトレーニング信号（例えば、５０または１００）が、メモリデバイスのリフレッシュサイクル中に、メモリデバイスの性能全体に影響を与えずに実行され得る。
【００２７】
一実施形態において、複数のＰＩ値または複数の他のエラー追跡値は、レジスタに格納され得、複数の後続のトレーニングに対して監視され得る。制御ロジックは、前の値に対する現在読み取られたエラー追跡値の変化の結果に基づいて、データ信号のエッジを左または右に移動させ得る。一実施形態において、システムは後述の通り、データエッジを変更すべく、ＩＯインタフェースの性能をどのようにして変更するかを決定するため、検索を実行する。
【００２８】
一実施形態において、システム２００は、Ｉ／Ｏを改善するため、ランタイムシステムのための複数の設定を具体的に決定する検索を実行すべく、複数のエラー測定値を入力として使用する。検出された複数のエラー、およびおそらく他の複数の測定されたＩ／Ｏパラメータに基づいて、検索ロジック（テストロジックの一部であってよく、または個別のロジックであってよい）は、複数の測定値から、複数のデバイス間のＩＯに対してどの設定を使用すべきか決定する。一実施形態において、検索ロジックは、Ｉ／Ｏに対する１または複数の代表的な性能曲線を生成すべく、複数の測定値を使用し得る。複数の代表的な曲線に基づいて、検索ロジックは、複数の他のパラメータに関して（規格または構成によって）要求される性能を少なくとも維持しつつ、少なくとも１つのパラメータに関して、より良好な性能を満たすために、どの設定を使用するかを決定すべく、検索機能を実行し得る。検索ロジックは、ｎ次元の検索ロジック、（ｎ個の一次元の検索を実行するための）一次元の検索ロジック、線形回帰検索ロジック、二次回帰検索ロジック、最急降下検索ロジック、曲線回帰検索ロジック、または複数の他のうちの任意のものを含み得る。ｎは、検索の組み合わせの数を示す整数を表すことが理解されるであろう。一実施形態において、検索ロジックはまた、繰り返しノイズを減らすか、または最悪のケースの複数の条件を推定するかのいずれかを行うべく、複数の測定値を共に組み合わせ得る。このように、制御ロジックは、メモリデバイスの受信Ｉ／Ｏパラメータ、および／またはコントローラの送信Ｉ／Ｏパラメータへの調整を生じさせることを決定し得る。
【００２９】
図３は、不一致受信機回路、および受信されたトレーニング信号内のエラーをカウントするエラー確認回路を有するシステムの実施形態のブロック図である。回路３００は、図２のシステム２００に図示されるようなサンプリング回路およびエラー確認の一例を提供する。一実施形態において、回路３００が一部であるメモリデバイスは、トレーニングまたはＩ／Ｏインタフェーステストを実行すべく、トレーニングモードに入る。一実施形態において、メモリデバイスは、オールバンクリフレッシュがメモリデバイス内で発生している間に、トレーニングモードに入り得る。このように、トレーニングは、Ｉ／Ｏ帯域幅を消費し、性能に影響を与えることなく、約７．６μＳ毎に生じ得る。トレーニングは、より頻繁に実行され得るものの、頻度を増加することで、リフレッシュ中以外の時間におけるトレーニングを実行することをもたらし、それによって、メモリアクセス動作のために利用可能なＩ／Ｏ帯域幅に悪影響を及ぼし得ることが理解されるであろう。リフレッシュ中以外の時間におけるトレーニングの実行は、メモリデバイスアクセスにおける、負荷のより低い時間中に計算され得、それによって、トレーニングの性能に対する影響を低減し得ることが理解されるであろう。
【００３０】
回路３００は、サンプリング回路３１０、および不一致増幅器３３０を含む不一致受信機回路である。増幅器３３０は、簡略化の目的で除去されているクロック分配ネットワークによってサンプリング回路３１０に接続されている。しかしながら、クロック分配ネットワークを介する遅延と、受信データ信号ＤＱ［７：０］のサンプリングの遅延との間の差が、回路３００を不一致受信機として識別するものである。分配ネットワークを介する遅延における変化は、データ信号と比較した際、サンプリング信号内のずれを生じさせ得る。
【００３１】
サンプリング回路３１０は、受信データ信号ＤＱ［７：０］を内部参照電圧Ｖｒｅｆ３２０に対してサンプリングする。データ信号は、回路３００が一部であるシステムの構成に応じて、むしろ８ビットより少なくてもよいことが理解されるであろう。サンプリング回路３１０は、正のサンプルストローブ上で、入力信号のサンプルを提供するための要素３１２、およびサンプルストローブの相補的な部分において、入力信号のサンプルを提供するための要素３１４を含む。他の複数の構成が可能である。要素３１２および３１４は、実際の受信信号をサンプリングし、サンプルを増幅させるサンプリング増幅器である。このように、増幅は、一致構成のようなサンプリングより前の増幅に対し、より低速の増幅器によって実行され得る。
【００３２】
増幅器３３０は、プルアップストローブ信号およびプルダウンストローブ信号を入力として受信する。クロック分配ネットワークは例えば、複数の異なるサンプリング要素（不図示）等、複数の異なる要素に対し、ストローブまたはサンプリング信号を分配する。分配ネットワークのレベルの正確な数は、実装によって変わるであろう。一般的な分配ネットワークは、バイナリツリー（各追加的なレベルは、２つの分岐を含む）およびＨツリー（各追加的なレベルは、４つの分岐を含み、「Ｈ」のように見える）分配ネットワークを含む。増幅器３３０からサンプリング要素３１２および３１４までの遅延は、経年劣化、電圧レベルの変化、温度の変化、またはおそらく複数の他の動作条件を介して、デバイスの動作に基づいて経時的に変化する。
【００３３】
一実施形態において、サンプリング要素３１２および３１４は、エラー確認回路３４０へフィードされ、その簡易化されたものが図３に示されている。一実施形態において、エラー確認回路は、サンプルストローブの正の部分でサンプリングされたサンプル３１６を要素３１２から受信するための反転ゲート３４２、およびサンプルストローブの負の部分でサンプリングされたサンプル３１８を要素３１４から受信するための非反転ゲート３４４を含む。１０１０...のトレーニング信号に対し、出力サンプル３１６は常に「１」であるべきであり、出力サンプル３１８は常に「０」であるべきであることが理解されるであろう。このように、ゲート３４２および３４４の出力が入力としてＸＯＲゲート３４６に供給され得、ＸＯＲゲートは、受信信号にエラーがある場合、１を生成するのみであるべきである。受信信号が正しく受信される場合、ゲート３４６は、常にゼロを出力する。
【００３４】
カウンタ３５０は、受信されたトレーニング信号内に検出されたエラー数をカウントする。一実施形態において、サンプリングされた着信トレーニング信号は、エラー確認回路３４０において受信されるが、回路３００が一部であるメモリデバイスのメモリアレイに書き込まれる代わりに、破棄される。一実施形態において、カウンタ３５０は、トレーニング信号のシーケンスにわたり検出されたエラー数をカウントする。このように、カウンタ３５０の最終カウントは、累積値を表す。一実施形態において、カウンタ３５０の出力は、メモリデバイス内の制御ロジックに送信され、制御ロジックは、検出されたエラー数に応答して、どのＩ／Ｏ性能パラメータを調整するかを決定する。検出されたエラー数に基づいて、制御ロジックは、特定のトレーニングシーケンスに対して、いずれのパラメータも調整しないことを決定してよい。一実施形態において、カウンタ３５０の出力は、コントローラデバイス内の制御ロジックに送信され、制御ロジックは次に、検出されたエラー数に応答して、どのＩ／Ｏ性能パラメータを調整するかを決定し得る。いずれの制御ロジックも、決定するための検索ロジックを含んでよい。
【００３５】
図４は、送信機から受信機へ送信されるトレーニング信号内の複数のエラーの検出に基づいて、Ｉ／Ｏ動作を調整するシステムの実施形態のブロック図である。システム４００は、図２のシステム２００に係るシステムの一例であってよい。コントローラデバイス４１０は、送信デバイスであり、メモリデバイス４２０は、２つのデバイス間のＩ／Ｏインタフェースをテストするためのトレーニング信号の交換を目的とする受信デバイスである。図示の通り、メモリデバイス４２０はまた、コントローラ４１０に通信を返してもよいが、そのような通信は、Ｉ／ＯインタフェースをテストするためのＩ／Ｏインタフェーストレーニング信号を送信することは含まない。メモリデバイス４２０は、Ｉ／Ｏ性能パラメータの調整方法の決定のためのカウンタ値を送信する、またはコントローラによる読み取りコマンドに応答してデータを送信する（トレーニングレジスタ内に格納されたトレーニング信号の読み取りを含み得る）等、データをコントローラに返すよう通信してよい。
【００３６】
コントローラ４１０は、メモリデバイス４２０とインタフェースを取るための送受信機４１２を含む。メモリデバイス４２０は、コントローラ４１０とインタフェースを取るための送受信機４２２を含む。２つの送受信機間の接続は、Ｉ／Ｏインタフェースである。Ｉ／Ｏインタフェースは、コントローラ４１０のＩ／Ｏコントローラ４２０およびメモリデバイス４２０のＩ／Ｏコントローラ４４０を含むと理解され得る。Ｉ／Ｏコントローラ４２０は、コントローラ４１０が、送受信機４１２のための送信および／または受信に係る複数のパラメータを設定することを可能にする。同様に、Ｉ／Ｏコントローラ４４０は、メモリデバイス４２０が、送受信機４２２のための受信および／または送信に係る複数のパラメータを設定することを可能にする。
【００３７】
一実施形態において、Ｉ／Ｏコントローラ４３０は、Ｉ／Ｏコントロール４３２を含み、Ｉ／Ｏコントロール４３２は、複数のレジスタ、テーブル、および／または送受信機４１２を介してＩ／Ｏに関連付けられる複数の値を格納する他の複数の機構を含み得る。Ｉ／Ｏコントロール４３２は、通信の複数の物理的パラメータおよび／または複数のレイテンシパラメータのために、送受信機４１２によって使用される複数の設定を制御する。ロジック４３４は、コントローラデバイス４１０における制御ロジックを表し、制御ロジックは、周期的なトレーニングによって示されるずれを補償すべく、コントローラデバイスがどのパラメータが調整されるべきかを決定することを可能にし得る。一実施形態において、Ｉ／Ｏコントローラ４４０は、Ｉ／Ｏコントロール４４６を含み、Ｉ／Ｏコントロール４４６は、Ｉ／Ｏコントロール４３２に類似するものであり得る。このように、Ｉ／Ｏコントローラ４４０は、複数のレジスタ、テーブル、および／または送受信機４２２を介してＩ／Ｏに関連付けられる複数の値を格納する他の複数の機構を含み得る。一実施形態において、Ｉ／Ｏコントロール４４６は、トレーニング信号をメモリアレイに書き込む必要なく、コントローラデバイス４１０による読み取りのためにトレーニング信号を一時的に格納すべく、メモリデバイス４２０によって使用されるレジスタを含む（メモリアレイは不図示）。ロジック４４４は、メモリコントローラ４２０における制御ロジックを表し、制御ロジックは、周期的なトレーニングによって示されるずれを補償すべく、どのパラメータを調整すべきかを決定し得る。Ｉ／Ｏコントローラ４４０は、複数の受信信号をサンプリングするためのサンプリング回路４４２を含み得る。一実施形態において、サンプリング回路４４２は、トレーニングサンプルのシーケンス内のエラー数をカウントするためのエラー検出回路を含み得る。
【００３８】
システム４００に図示の通り、一実施形態において、メモリデバイス４２０は、トレーニング信号内の複数のエラーを確認するよう構成され得る。一実施形態において、コントローラデバイス４１０は、トレーニング信号内の複数のエラーを確認するよう構成され得る。メモリデバイス４２０は、エラー確認回路を使用することによって、複数のエラーを確認し得る。メモリデバイスは次に、検出された複数のエラーに基づいて調整を生じさせてよく、および／または、コントローラデバイス４１０に対し、検出された複数のエラーを示し、コントローラに対し検出された複数のエラーに基づいて、調整を生じさせるようにし得る。
【００３９】
コントローラデバイス４１０は、送信されたトレーニングデータをリードバックする複数の読み取りコマンドを発行するコントローラによって複数のエラーを確認し得る。例示的なコマンドテストフローは、Write Data0、Read Data0、Write Datal、Read Data1であり得、ここにおいて、Data0、Datalは...はバス上で駆動される複数の潜在的に異なるデータ値である。コントローラデバイスが複数のエラーを確認するために、メモリデバイス４２０は、データをメモリアレイに書き込まずに、書き込みコマンドおよび読み取りコマンド間のバッファ（例えば、新しいまたは既存のレジスタまたは他のバッファ）にトレーニングデータを格納するよう構成され得る。コントローラデバイス４１０が複数のエラーを確認する場合、周期的なトレーニングは、より容易に複数の異なるデータパターンをテストし得る。
【００４０】
しかしながら、コントローラデバイスによるエラー確認は、メモリデバイスによるエラー確認よりも長くかかることが予期されるであろう。
【００４１】
一実施形態において、コントローラデバイス４１０は、周期的なトレーニングを制御する有限ステートマシン（ＦＳＭ、明示されない）を含む。例えば、ＦＳＭはＮ個のリフレッシュコマンド毎にトレーニングモードを可能にするよう構成され得、ここでＮは何らかの整数である。トレーニングは、リフレッシュサイクルごと、またはより少ない頻度で生じ得る。ＦＳＭは代替的に、タイマーが閾値時間に到達した後のメモリデバイスの比較的低い負荷時間中に、トレーニングを実行するよう構成され得る。コントローラデバイスは、データアイのエッジを表す既知の値を監視し、トレーニング信号を生成するためのＭ個の書き込みを発行し得る。データアイのエッジのみが監視される場合（アイの全体に対し）、エラー検出は、セットアップエッジおよびホールドエッジの両方に対し、エッジを監視できる（例えば、セットアップタイミング）。複数の書き込みコマンドを発行後、コントローラデバイスは、エラーカウントをリードバックおよび／または書き込みデータをリードバックし、データエッジがインクリメントまたはデクリメントされるべきかどうかを決定し得る。一実施形態において、ＦＳＭは、データアイエッジを多少移動し得る（または、フェーズ補間で行われるように、細分化された複数の部分）。ＦＳＭは、アイエッジをどの方向に移動させるかを決定するためのテストを実行し得る。
【００４２】
一実施形態において、コントローラデバイス４１０の制御ロジック（コントローラデバイスが複数のエラー調整を生じさせる場合）またはメモリデバイス４２０の制御ロジック（メモリデバイスが複数のエラー調整を生じさせる場合）は、アイのエッジ内で検出された複数の変化に応答して、データアイの中心に関連付けられた複数の設定をオフセットできる。このように、周期的なトレーニングは、アイのエッジを監視し、アイのエッジ内で検出された変化または移動に相当するようアイの中心を移動し得る。アイのセンタリングは、要求に応じてチャネル、ワード、バイト、またはビットベースで行われ得る。メモリデバイスからコントローラデバイスへのフィードバックの量は、センタリングがどのように実行されるかに応じて、増加させる必要があってよいことが理解されるであろう。一実施形態において、メモリデバイス４２０は、複数のランクを含む。一実施形態において、エラー検出は、ランクベースでランク上で実行され得る。代替的な実施形態において、エラー検出は選択されたランクで実行され得、すべてのランクにわたって適用され得る。複数の特定の実装詳細は、温度または電圧においてどの程度の差が異なるランクにわたって存在するかが予期されるか等、複数の環境制約に基づく。
【００４３】
周期的なトレーニングは、デジタルフィードバックループとして理解可能であることが理解されるであろう。デジタルフィードバックループは通常、２つの隣接する設定間のディザリングである。一実施形態において、ＰＩエッジ設定の値は、２つの隣接する設定間でディザリングし得るが、当該ディザリングは、複数の既知のデジタルフィルタリング技術を使用してＰＩ中心設定からフィルタリングされ得る。例えば、ＰＩ中心設定は、ＰＩエッジ設定が同一方向に２回移動後にのみ移動し得る（例えば、中心ＰＩは、１つの設定によってエッジ移動を常に遅らせる）。ＰＩエッジ設定が１つの設定値によってディザリングするのみであると想定すると、そのようなフィルタは、フィードバックディザリングをノイズのソースとして除去してよい。
【００４４】
メモリデバイスの動作のモード、および／または複数のトレーニング時間制約に基づいて、ずれを補償するためのＩ／Ｏパラメータ設定の調整方法を決定する制御ロジックは、多少のデータを収集し、および／またはより多くの設定またはパラメータを検索し得る。ロジックは、複数の以前のずれの結果、電力状態アクティビティ、温度変化および／またはシステム内の他の環境変化に基づいて、より多くのデータまたはより少ないデータと、より多くの検索時間またはより少ない検索時間との間でトレードオフを行ってよい。例えば、温度／電圧の頻繁な変動、または複数の以前のずれの結果における変化の高さは、より多くの設定が使用され得ること、および／またはより正確な結果を実現すべく、結果検索がより多くの処理を使用し得ることを示し得る。非常に少ない変化は、これとは逆のことを示し得る。図５は、受信されたトレーニング信号内の複数のエラーを検出するための動作タイミングの実施形態に係るタイミング図である。タイミング図５００は、ＤＲＡＭデバイスへの複数のコマンドのフローの一実施形態を図示し、ＤＲＡＭデバイスは、説明される任意の実施形態に係るメモリデバイスの一例であり得る。クロック信号５１０はシステムクロックである。ＣＭＤ５２０は、メモリコントローラによって送信されるＤＲＡＭコマンド信号であり、メモリコントローラは、説明される任意の実施形態に係るコントローラデバイスの一例であり得る。ＰＲＥ  ＡＬＬは、トレーニング目的のシステムの初期状態を表す。ＰＲＥ  ＡＬＬとＭＲＷ  ＥＮＴＲＹコマンドの発行との間に、ｔＲＰａｂの遅延がある。ＭＲＷ（モードレジスタ書き込み）ＥＮＴＲＹは、特別のトレーニング状態へ入るためのコマンドを表す。
【００４５】
トレーニング状態は、ＭＲＷ、明確なコマンド、または何らかの類似の機構を使用して有効化され得る特別なモードである。ＤＲＡＭがトレーニング状態、ｔＭＲＷへ入るために適切な時間待機した後、ホストまたはメモリコントローラは、通常の書き込みコマンドをＤＲＡＭに対して発行し得る。一実施形態において、書き込みコマンドおよびＭＲＷは、同一コマンドである。一実施形態において、ＤＲＡＭは、複数の書き込みがトレーニング状態でない状態で受信された場合に対し、複数の書き込みがトレーニング状態において受信された場合、複数の書き込みを異なって扱う。例えば、ＤＲＡＭは、内部のメモリアレイにアクセスすることなく、書き込みデータが所望のトレーニングパターンに一致することを確認し得る。コマンド信号５２０に発生するコマンドと、生成されているデータストローブ信号（ＤＱＳ＿ｔ／ｃ５３０）との間に、ＷＬ＋ｔＤＱＳＳの遅延（書き込みレイテンシ）がある。ストローブ信号が開始した後、データは、データライン、ＤＱ５４０上で受信される。当該ライン上のデータ量は、いくつの書き込みがトレーニングのためにメモリコントローラによって生成されるかにより決まる。
【００４６】
一実施形態において、１０１０のトレーニングパターンが使用される場合、ＤＲＡＭエラー確認は非常にシンプルである。例えば、１０１０トレーニングパターンでは、確認ロジックは、すべての上昇するＤＱＳサンプルは１であり、すべての降下するＤＱＳサンプルは０であることを要求し得る。ＤＲＡＭは、１バイト内の任意のレーンが、各サイクルについてエラーに遭遇したかどうかを確認し得る。一実施形態において、１または複数のエラーが所定のサイクルにおいて検出される場合、ＤＲＡＭはエラーカウンタを１つインクリメントする。一実施形態において、各ＤＱバイトは、エラーをカウントするための個別のＮビットカウンタをＤＲＡＭ内に有する。カウンタのカウントは、ＤＱと比べ、はるかにより正確なＤＱＳの平均相対位置のビューを提供し得、それにより、制御ロジックが少数の不良サンプルからノイズをフィルタリングすることを可能にし、ノイズおよびトレーニング時間を減らす。
【００４７】
一実施形態において、ＤＲＡＭは、複数の異なるレーンからの複数のエラーカウントとカウンタの前の複数のＤＱＳエッジとを組み合わせ、それにより、トレーニングが最悪のケースのレーン／エッジに焦点を置くことを確保する。最終的な書き込みＤＱＳエッジ後の遅延（ｔＷａｉｔ）を待機後、メモリコントローラは、複数のエラー結果を読み取るためのＭＲＲコマンドまたは類似のコマンドを発行し得る。図示の通り、ＭＲＲ結果コマンドがＤＲＡＭに対し発行される。ｔＭＲＲ（読み取りコマンドを生成するための時間）の時間後、メモリコントローラは、ＭＲＷ終了コマンドを発行でき、および／またはメモリデバイスはトレーニング状態を終了できる。ＲＬ＋ｔＤＱＳＣＫ（実際のレイテンシ）遅延の後、メモリコントローラは、複数のエラーカウンタ結果を読み取る。ＤＲＡＭの代わりにコントローラにおいて、複数のエラーを確認すべく、メモリコントローラがトレーニングデータをリードバックする場合について、同様のフローが生成され得ることが理解されるだろう。一実施形態において、エラーカウントはＭＲＷトレーニングモードエンターコマンドによって、自動的に０にリセットされ得る。一実施形態において、ＤＲＡＭが既にトレーニング状態またはトレーニングモードにある場合であっても、カウンタをリセットする目的で、メモリコントローラはまた、ＭＲＷトレーニングモードコマンドを再発行し得る。
【００４８】
図６Ａは、受信されたトレーニング信号内の複数のエラーを確認するための処理に係る実施形態のフロー図であり、エラー確認は受信デバイスによって実行される。一実施形態において、メモリデバイスはリフレッシュモードに入る（６０２）。例えば、メモリデバイスをリフレッシュモードに入らせるべく、メモリコントローラはコマンドをメモリデバイスに送信できる。メモリアレイへのアクセスが許可されないので、リフレッシュにおいては、メモリデバイスは通常、メモリコントローラからのコマンドを受信および処理できない。あるいは、メモリコントローラは、リフレッシュ中以外の時間において、コマンドを送信できる。
【００４９】
一実施形態において、メモリコントローラは、メモリデバイスに対し、トレーニングモードインジケータを送信する（６０４）。トレーニングモードインジケータは、メモリコントローラによって送信されるコマンドであり得る。トレーニングモードインジケータは、メモリコントローラが設定するメモリデバイスのレジスタ設定であり得る。トレーニングモードインジケータに応答して、メモリデバイスはトレーニングモードに入る（６０６）。トレーニングモードにおいて、メモリデバイスは、メモリアレイにアクセスすることなく、コマンドバスを介して、特定の複数のトレーニングコマンドを受信し、当該複数のコマンドを処理できる。
【００５０】
トレーニングモードの間、メモリコントローラは、メモリコントローラによる処理のためにＩ／Ｏを送信できる。トレーニングＩ／Ｏは、Ｉ／Ｏインタフェースの観点から、通常のＩ／Ｏである。しかしながら、メモリアレイへのアクセスの観点からは、トレーニングＩ／Ｏは「ダミー」Ｉ／Ｏであり、当該Ｉ／Ｏはメモリアレイへのアクセスを生成しないことを意味する。ｎ＝１からＮの各トレーニングＩ／Ｏについて（６０８）、トレーニング信号またはトレーニング信号のシーケンスが、メモリコントローラからメモリデバイスに送信される（６１０）。一実施形態において、メモリコントローラはトレーニング信号をトレーニングモード書き込みとして送信する。トレーニングモード書き込みは、メモリデバイスがトレーニングモードの間に送信される通常の書き込みコマンドであり得、あるいはトレーニングに特有の書き込みコマンドであり得る。メモリデバイスは、トレーニングモード書き込みを受信する（６１２）。メモリデバイスは、メモリデバイス受信プロセッサが、メモリアレイ媒体へのアクセスのためのデータを転送しないという点において、複数のトレーニングモード書き込みを複数の通常の書き込みコマンドとは異なるように扱う。一実施形態において、メモリデバイスは、トレーニング信号について複数のエラーを評価し、エラーが検出される場合、エラーカウントをインクリメントする（６１４）。
【００５１】
ｎがＮ、すなわちトレーニング状態中、受信および処理されるトレーニング信号数に等しくない限り（６１６）、すなわちいいえの分岐の場合、メモリコントローラは６０８から６１４まで、メモリデバイスによる処理のための複数のトレーニング信号の送信を続行する。ｎがＮに等しい場合、制御ロジックは最終エラーカウントに基づいて、１または複数のＩ／Ｏパラメータを調整するかどうかおよび／または調整方法を決定する（６１８）。一実施形態において、制御ロジックは、複数のＩ／Ｏパラメータを評価するための検索機能を使用する。一実施形態において、制御ロジックはメモリデバイスの一部である。一実施形態において、制御ロジックはメモリコントローラの一部である。一実施形態において、制御ロジックは、メモリコントローラによる送信に関連するＩ／Ｏパラメータを調整することを決定する。一実施形態において、制御ロジックは、メモリデバイスによる信号の受信に関連するＩ／Ｏパラメータを調整することを決定する。システムは、当該決定に従い、決定されたＩ／Ｏパラメータを調整する（６２０）。
【００５２】
図６Ｂは、受信されたトレーニング信号内の複数のエラーを確認するための処理の実施形態のフロー図である。エラー確認は、送信デバイスによって実行される。図６Ｂは、図６Ａと６３０、６３２、および６３４において異なることがわかるだろう。それ以外は、動作のフローは上述した内容と類似または同一である。上述した内容を繰り返すのではなく、図６Ｂの説明は、異なる部分に焦点を置くことにする。
【００５３】
図６Ａでは、ひとたびメモリデバイスがトレーニングモード書き込みを受信する（６１２）と、メモリデバイスがトレーニング信号を複数のエラーについて評価したのに対し、図６Ｂでは、メモリコントローラは以下のようにトレーニング信号を複数のエラーについて評価する。メモリデバイスは、トレーニングモード書き込みを受信する（６１２）と、メモリデバイスはトレーニング信号をトレーニングバッファに書き込むが、メモリデバイスはメモリアレイに書き込まない（６３０）。メモリコントローラは、後続の動作において、トレーニングバッファからトレーニング信号を読み取る（６３２）。例えば、メモリコントローラは、トレーニングバッファ読み取りコマンドを発行し得る。トレーニングバッファは、メモリデバイスの既存のレジスタまたはバッファであり得、例えば、メモリコントローラはそこにレジスタ読み取りコマンドを介してアクセスできる。メモリコントローラは、読み取られた信号について複数のエラーを評価し、エラーが検出される場合、エラーカウントをインクリメントする（６３４）。再び、処理はトレーニングシーケンスについて、すべてのＩ／Ｏがメモリコントローラからメモリデバイスへ送信されるよう続行する。前と同じく、メモリコントローラまたはメモリデバイスにおける制御ロジックは、エラーカウントに基づいて１または複数のＩ／Ｏパラメータを調整するかどうかおよび／またはその調整方法を決定する。
【００５４】
図７は、受信信号エラー確認が実装され得るコンピューティングシステムの実施形態のブロック図である。システム７００は、本明細書に記載の任意の実施形態に係るコンピューティングデバイスを表し、それはラップトップコンピュータ、デスクトップコンピュータ、サーバ、ゲーム若しくはエンタテイメント制御システム、スキャナ、コピー機、プリンタ、ルーティング若しくは切り替えデバイス、または他の電子デバイスであり得る。システム７００はプロセッサ７２０を含み、プロセッサ７２０は、システム７００の複数の命令の処理、動作管理、および実行を提供する。
【００５５】
プロセッサ７２０は、システム７００の処理を提供するための任意のタイプのマイクロプロセッサ、中央処理ユニット（ＣＰＵ）、処理コア、または他のプロセッシングハードウェアを含み得る。プロセッサ７２０は、システム７００の動作全体を制御し、プロセッサ７２０は、１または複数のプログラマブル汎用マイクロプロセッサまたはプログラマブル特定用途マイクロプロセッサ、デジタルシグナルプロセッサ（ＤＳＰ）、プログラマブルコントローラ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、または同様のもの、あるいはそのようなデバイスの組み合わせであり得、またはそれらを含み得る。
【００５６】
メモリサブシステム７３０は、システム７００のメインメモリを表し、プロセッサ７２０により実行されるコード、ルーチンを実行する際に使用される複数のデータ値の一時的なストレージを提供する。メモリサブシステム７３０は、リードオンリメモリ（ＲＯＭ）、フラッシュメモリ、１または複数の種々のランダムアクセスメモリ（ＲＡＭ）、または他のメモリデバイス、あるいはそのようなデバイスの組み合わせといった１または複数のメモリデバイスを含むことができる。メモリサブシステム７３０は、特に、システム７００内の複数の命令を実行するためのソフトウェアプラットフォームを提供するオペレーティングシステム（ＯＳ）７３７を格納し、ホストする。また、複数の他の命令７３８が格納され、メモリサブシステム７３０から実行されて、システム７００のロジックおよび処理を提供する。ＯＳ７３７および複数の命令７３８は、プロセッサ７２０により実行される。
【００５７】
メモリサブシステム７３０は、メモリサブシステムがデータ、複数の命令、プログラム、または他のアイテムを格納するメモリデバイス７３２を含む。一実施形態において、メモリサブシステムは、メモリコントローラ７３４を含み、メモリコントローラ７３４は、本明細書に記載の任意の実施形態に係るメモリコントローラであり、またメモリデバイス７３２への複数のコマンドを生成および発行するスケジューラを含む。
【００５８】
一実施形態において、メモリサブシステム７３０およびメモリデバイス７３２は、周期的なトレーニングを介して生成されたフィードバックに基づいてＩ／Ｏタイミング補償を実装する。メモリデバイス７３２はトレーニング状態に入り、メモリコントローラ７３４はメモリデバイスとメモリコントローラとの間のＩ／Ｏインタフェースを介してトレーニング信号を送信し、メモリデバイスはそのメモリアレイ内にトレーニング信号を格納しない。一実施形態において、メモリデバイス７３２は、受信されたトレーニング信号について複数のエラーを評価する。一実施形態において、メモリデバイス７３２はトレーニング信号をトレーニングバッファ内に格納する。トレーニングバッファは、トレーニング信号を格納するために使用される任意のバッファであり得る。メモリコントローラ７３４はバッファされたトレーニング信号を読み取り、当該信号について複数のエラーを評価する。検出された複数のエラーに基づいて、システムはメモリコントローラまたはメモリデバイスのいずれかあるいは両方の１または複数のＩ／Ｏパラメータを調整し、Ｉ／Ｏタイミングに影響する環境条件における複数の変化を補償する。
【００５９】
プロセッサ７２０およびメモリサブシステム７３０は、バス／バスシステム７１０に連結される。バス７１０は、適切なブリッジ、アダプタ、および／またはコントローラによって接続された１または複数の個別の物理的バス、通信ライン／インタフェース、および／またはポイントツーポイント接続を表す抽象的なものである。従って、バス７１０は例えば、システムバス、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス、ハイパートランスポートまたは業界標準アーキテクチャ（ＩＳＡ）バス、ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）バス、ユニバーサルシリアルバス（ＵＳＢ）、または米国電気電子学会（ＩＥＥＥ）規格１３９４バス（「一般的にファイヤワイヤとして呼ばれる」）のうちの１または複数を含み得る。バス７１０の複数のバスはまた、ネットワークインタフェース７５０内の複数のインタフェースに対応し得る。
【００６０】
システム７００はまた、バス７１０に連結された１または複数の入／出力（Ｉ／Ｏ）インタフェース７４０、ネットワークインタフェース７５０、１または複数の内蔵大容量ストレージデバイス７６０、および周辺機器インタフェース７７０を含む。Ｉ／Ｏインタフェース７４０は、ユーザがそれを介してシステム７００と対話する１または複数のインタフェースコンポーネント（例えば、ビデオ、オーディオ、および／または英数字インタフェース）を含むことができる。ネットワークインタフェース７５０は、１または複数のネットワークを介して複数のリモートデバイス（例えば、複数のサーバ、他のコンピューティングデバイス）と通信する能力をシステム７００に提供する。ネットワークインタフェース７５０は、イーサネット（登録商標）アダプタ、複数の無線相互接続コンポーネント、ＵＳＢ（ユニバーサルシリアルバス）、または他の有線規格ベース若しくは無線規格ベースまたは独自のインタフェースを含むことができる。
【００６１】
ストレージ７６０は、１または複数の磁気、ソリッドステート、または光ベースディスク、またはそれらの組み合わせ等の不揮発性形式で、大量のデータを格納するための任意の従来の媒体で有り得、またはそれらを含むことができる。ストレージ７６０は、永続的な状態で、コードまたは複数の命令およびデータ７６２を保持する（すなわち、値はシステム７００の電力が遮断されても保持される）。ストレージ７６０は一般的に「メモリ」であると考えられ得るが、メモリ７３０は、複数の命令をプロセッサ７２０に提供するメモリを実行または操作することである。ストレージ７６０は不揮発性である一方で、メモリ７３０は揮発性メモリを含むことができる（すなわち、システム７００の電力が遮断される場合、データの値または状態は不定である）。
【００６２】
周辺機器インタフェース７７０は、具体的に上記していない任意のハードウェアインタフェースを含み得る。複数の周辺機器は一般に、システム７００に依存して接続する複数のデバイスを指す。依存接続は、システム７００が、ユーザがそれを用いて対話する動作実行上のソフトウェアおよび／またはハードウェアプラットフォームを提供するものである。
【００６３】
図８は、受信信号エラー確認が実装され得るモバイルデバイスの実施形態のブロック図である。デバイス８００は、コンピューティングタブレット、携帯電話またはスマートフォン、ワイヤレス可能な電子書籍リーダ、または他のモバイルデバイスなどのモバイルコンピューティングデバイスを表す。複数のコンポーネントうちの特定のものが大まかに示されており、そのようなデバイスのすべてのコンポーネントがデバイス８００に示されているのではないことが理解されよう。
【００６４】
デバイス８００は、デバイス８００の主な処理動作を実行するプロセッサ８１０を含む。プロセッサ８１０は、複数のマイクロプロセッサ、アプリケーションプロセッサ、マイクロコントローラ、プログラマブルロジックデバイス、または他のプロセッシング手段のような１または複数の物理デバイスを含み得る。一実施形態において、プロセッサ８１０は、プロセッサダイに加え、複数の光インタフェースコンポーネントを含む。このように、プロセッサダイおよび複数のフォトニックコンポーネントが同一パッケージ内に存在する。そのようなプロセッサパッケージは、本明細書に記載の任意の実施形態に係る光コネクタと光学的にインタフェースをとり得る。
【００６５】
プロセッサ８１０によって実行される複数の処理動作は、複数のアプリケーションおよび／またはデバイス機能がそこで実行されるオペレーティングプラットフォームまたはオペレーティングシステムの実行を含む。複数の処理動作は、ユーザまたは複数の他のデバイスとのＩ／Ｏ（入／出力）に関連する複数の動作、電力管理に関連する複数の動作、および／またはデバイス８００を別のデバイスに接続することに関連する複数の動作を含む。処理動作はまた、オーディオＩ／Ｏおよび／またはディスプレイＩ／Ｏに関連する複数の動作を含み得る。
【００６６】
一実施形態において、デバイス８００は、オーディオサブシステム８２０を含み、オーディオサブシステムは、複数のオーディオ機能をコンピューティングデバイスに対し提供することに関連付けられたハードウェア（例えば、オーディオハードウェアおよび複数のオーディオ回路）およびソフトウェア（例えば、複数のドライバ、コーデック）コンポーネントを表す。複数のオーディオ機能は、マイク入力に加え、スピーカおよび／またはヘッドフォン出力を含むことができる。そのような複数の機能のための複数のデバイスは、デバイス８００に統合され得、またはデバイス８００に接続され得る。一実施形態において、ユーザは、プロセッサ８１０によって受信および処理される複数のオーディオコマンドを提供することによって、デバイス８００と対話する。
【００６７】
ディスプレイサブシステム８３０は、ユーザがコンピューティングデバイスと対話するためのビジュアルディスプレイおよび／または触覚ディスプレイを提供するハードウェア（例えば、複数のディスプレイデバイス）およびソフトウェア（例えば、複数のドライバ）コンポーネントを表す。ディスプレイサブシステム８３０は、ユーザにディスプレイを提供するために使用される特定のスクリーンまたはハードウェアデバイスを含むディスプレイインタフェース８３２を含む。一実施形態において、ディスプレイインタフェース８３２は、ディスプレイに関連する少なくともいくつかの処理を実行する、プロセッサ８１０と個別のロジックを含む。一実施形態において、ディスプレイサブシステム８３０は、ユーザに対して出力および入力の両方を提供するタッチスクリーンデバイスを含む。
【００６８】
Ｉ／Ｏコントローラ８４０は、ユーザとの対話に関する複数のハードウェアデバイスおよび複数のソフトウェアコンポーネントを表す。Ｉ／Ｏコントローラ８４０は、オーディオサブシステム８２０および／またはディスプレイサブシステム８３０の一部であるハードウェアを管理するために動作できる。また、Ｉ／Ｏコントローラ８４０は、それを介してユーザがシステムと対話し得るデバイス８００に接続する複数の追加のデバイスのための接続ポイントを図示する。例えば、デバイス８００に取り付けられ得る複数のデバイスは、複数のマイクデバイス、スピーカまたはステレオシステム、ビデオシステムまたは他のディスプレイデバイス、キーボードまたはキーパッドデバイス、または複数のカードリーダまたは他のデバイスなど、複数の特定のアプリケーションとの使用のための複数の他のＩ／Ｏデバイスを含み得る。上述の通り、Ｉ／Ｏコントローラ８４０は、オーディオサブシステム８２０および／またはディスプレイサブシステム８３０と対話できる。例えば、マイクまたは他のオーディオデバイスを介する入力は、デバイス８００の１または複数のアプリケーションまたは機能のための入力若しくは複数のコマンドを提供し得る。
【００６９】
また、オーディオ出力は、ディスプレイ出力の代わりに、またはそれに加えて提供され得る。別の例において、ディスプレイサブシステムがタッチスクリーンを含む場合、ディスプレイデバイスは、少なくとも部分的にＩ／Ｏコントローラ８４０によって管理され得る入力デバイスとしても動作する。Ｉ／Ｏコントローラ８４０によって管理される複数のＩ／Ｏ機能を提供する、デバイス８００上の追加の複数のボタンまたはスイッチもあり得る。
【００７０】
一実施形態において、Ｉ／Ｏコントローラ８４０は、複数の加速度計、カメラ、光センサ若しくは他の環境センサ、ジャイロスコープ、全地球測位システム（ＧＰＳ）、またはデバイス８００に含められ得る他のハードウェアのような複数のデバイスを管理する。入力は、システムの複数の動作に影響を及ぼす、システムに対する環境入力（ノイズのフィルタリング、輝度の検出に関するディスプレイの調整、カメラに対するフラッシュの適用、または複数の他の特徴等）を提供することに加え、直接的なユーザの対話の一部であり得る。一実施形態において、デバイス８００は、バッテリ電力使用量、バッテリの充電、および省電力動作に関連する複数の特徴を管理する電力管理８５０を含む。
【００７１】
メモリサブシステム８６０は、デバイス８００内に情報を格納するためのメモリデバイス８６２を含む。メモリサブシステム８６０は、不揮発性（メモリデバイスへの電力が遮断された場合に状態が変化しない）および／または揮発性（メモリデバイスへの電力が遮断された場合に状態が不定である）メモリデバイスを含むことができる。メモリ８６０は、システム８００の複数のアプリケーションおよび機能の実行に関連するシステムデータ（長期間であろうと、一時的であろうと）に加え、アプリケーションデータ、ユーザデータ、音楽、複数の写真、複数のドキュメント、または他のデータを格納できる。一実施形態において、メモリサブシステム８６０は、メモリコントローラ８６４（システム８００の制御の一部とも考えられ得、潜在的にプロセッサ８１０の一部として考えられ得る）を含む。メモリコントローラ８６４は、メモリデバイス８６２に対する複数のコマンドを生成および発行するスケジューラを含む。
【００７２】
一実施形態において、メモリサブシステム８６０およびメモリデバイス８６２は、周期的なトレーニングを介して生成されるフィードバックに基づいてＩ／Ｏタイミング補償を実装する。メモリデバイス８６２はトレーニング状態に入り、メモリコントローラ８６４は、メモリデバイスとメモリコントローラとの間のＩ／Ｏインタフェースを介してトレーニング信号を送信し、メモリデバイスはそのメモリアレイ内にトレーニング信号を格納しない。一実施形態において、メモリデバイス８６２は、受信されたトレーニング信号について複数のエラーを評価する。一実施形態において、メモリデバイス８６２はトレーニング信号をトレーニングバッファ内に格納する。トレーニングバッファは、トレーニング信号を格納するために使用される任意のバッファであり得る。メモリコントローラ８６４はバッファされたトレーニング信号を読み取り、当該信号について複数のエラーを評価する。検出された複数のエラーに基づいて、システムはメモリコントローラまたはメモリデバイスのいずれかあるいは両方の１または複数のＩ／Ｏパラメータを調整し、Ｉ／Ｏタイミングに影響する環境条件の複数の変化を補償する。
【００７３】
接続８７０は、デバイス８００が複数の外部デバイスと通信することを可能にする複数のハードウェアデバイス（例えば、無線および／または有線コネクタおよび通信ハードウェア）および複数のソフトウェアコンポーネント（例えば、複数のドライバ、プロトコルスタック）を含む。デバイスは、複数のヘッドセット、プリンタまたは他のデバイス等の周辺機器に加え、複数の他のコンピューティングデバイス、無線アクセスポイントまたは基地局等の個別の複数のデバイスであり得る。
【００７４】
接続８７０は、複数の異なるタイプの接続を含み得る。一般化すべく、デバイス８００はセルラ接続８７２および無線接続８７４とともに示される。セルラ接続８７２は一般的に、複数の無線キャリアによって提供されるセルラネットワーク接続と呼ばれ、そのようなものとして、ＧＳＭ（登録商標）（モバイル通信のためのグローバルシステム）またはその複数の変形若しくは派生物、ＣＤＭＡ（ｃｏｄｅ  ｄｉｖｉｓｉｏｎ  ｍｕｌｔｉｐｌｅ  ａｃｃｅｓｓ）またはその変形若しくは派生物、ＴＤＭ（ｔｉｍｅ  ｄｉｖｉｓｉｏｎ  ｍｕｌｔｉｐｌｅｘｉｎｇ）またはその複数の変形若しくは派生物、ＬＴＥ（ｌｏｎｇ  ｔｅｒｍ  ｅｖｏｌｕｔｉｏｎ‐または「４Ｇ」とも呼ばれる）、または他の複数のセルラサービス規格を介して提供されるものが挙げられる。無線接続８７４は、セルラではない無線接続を指し、複数のパーソナルエリアネットワーク（Ｂｌｕｅｔｏｏｔｈ（登録商標）など）、ローカルエリアネットワーク（ＷｉＦｉ（登録商標）など）、および／またはワイドエリアネットワーク（ＷｉＭａｘ（登録商標）など）、または他の無線通信を含むことができる。無線通信は、無形媒体を介して変調された電波放射の使用を介したデータ転送を指す。有線通信は、有形通信媒体を介してもたらされる。
【００７５】
周辺接続８８０は、複数のハードウェアインタフェースおよびコネクタ、並びに複数の周辺接続を形成するための複数のソフトウェアコンポーネント（例えば、複数のドライバ、プロトコルスタック）を含む。デバイス８００は、他のコンピューティングデバイスに対する周辺デバイス（「〜へ」８８２）であり得るとともに、そこに接続された複数の周辺デバイスを有するもの（「〜から」８８４）でもあり得ることを理解されたい。デバイス８００は一般に、デバイス８００上の内容の管理（例えば、ダウンロードおよび／またはアップロード、変更、同期）などを目的として複数の他のコンピューティングデバイスに接続する「ドッキング」コネクタを有する。
【００７６】
また、ドッキングコネクタは、デバイス８００が例えば、複数の視聴覚または他のシステムへ出力される内容を制御することを可能とする複数の特定の周辺機器に、デバイス８００が接続することを可能にし得る。
【００７７】
独自のドッキングコネクタまたは他の独自の接続ハードウェアに加えて、デバイス８００は、一般的なまたは規格ベースの複数のコネクタを介して周辺接続８８０を形成し得る。複数の共通のタイプは、ユニバーサルシリアルバス（ＵＳＢ）コネクタ（多数の異なるハードウェアインタフェースのうちの任意のものを含み得る）、ＭｉｎｉＤｉｓｐｌａｙＰｏｒｔ（ＭＤＰ）を含むＤｉｓｐｌａｙＰｏｒｔ、Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ（ＨＤＭＩ（登録商標））、ファイヤワイヤ（登録商標）、または他のタイプを含み得る。
【００７８】
一態様において、メモリデバイスとの通信のための複数の入／出力（Ｉ／Ｏ）設定をトレーニングするための方法は、メモリデバイスによって、上記メモリデバイスのトレーニングモードに入る段階と、上記トレーニングモードの間に、コントローラからトレーニング信号を受信する段階と、上記トレーニング信号をサンプリング回路でサンプリングする段階と、上記メモリデバイスによって、上記トレーニング信号のサンプリングにおけるエラー数を追跡する段階と、上記エラー数に基づいて、少なくとも１つの入／出力（Ｉ／Ｏ）パラメータへの調整を生じさせる段階と、を含む。
【００７９】
一実施形態において、上記トレーニングモードに入る段階は、上メモリデバイスのリフレッシュモード中に、上記トレーニングモードに入る段階を含む。一実施形態において、上記トレーニング信号を受信する段階は、上記トレーニング信号を書き込みコマンドとして受信する段階と、上記トレーニング信号を上記メモリデバイスのメモリアレイへ書き込む代わりに、それを破棄する段階と、を含む。一実施形態において、上記エラー数を追跡する段階は、カウンタで、トレーニング信号のシーケンスにわたり発生するエラー数をカウントする段階を含む。一実施形態において、上記調整を生じさせる段階は、上記コントローラに、調整するための上記少なくとも１つのＩＯパラメータを決定させるべく、上記エラー数を上記コントローラに送信する段階を含む。一実施形態において、上記調整を生じさせる段階は、上記メモリデバイスの受信Ｉ／Ｏパラメータへの上記調整を生じさせる段階を含む。一実施形態において、上記調整を生じさせる段階は、上記コントローラの送信Ｉ／Ｏパラメータへの上記調整を生じさせる段階を含む。一実施形態において、上記調整を生じさせる段階は、調整するための上記少なくとも１つのＩ／Ｏパラメータを決定させるべく、検索機能をコンピューティングする段階をさらに含む。
【００８０】
一態様において、製造物品は、実行時に、以下を含む複数の動作を実行する格納された内容を有するコンピュータ可読ストレージ媒体を備える。すなわち、メモリデバイスによって、メモリデバイスのトレーニングモードに入り、上記トレーニングモードの間に、コントローラからトレーニング信号を受信し、上記トレーニング信号をサンプリング回路でサンプリングし、上記メモリデバイスによって、上記トレーニング信号のサンプリングにおけるエラー数を追跡し、上記エラー数に基づいて、少なくとも１つの入／出力（Ｉ／Ｏ）パラメータへの調整を生じさせる。
【００８１】
一実施形態において、上記トレーニングモードに入るための上記内容は、上記メモリデバイスのリフレッシュモード中に、トレーニングモードに入ることを含む。一実施形態において、上記トレーニング信号を受信するための上記内容は、上記トレーニング信号を書き込みコマンドとして受信し、上記トレーニング信号を上記メモリデバイスのメモリアレイに書き込む代わりに、それを破棄するための内容を含む。一実施形態において、上記エラー数を追跡するための内容は、カウンタで、トレーニング信号のシーケンスにわたり発生するエラー数をカウントするための内容を含む。一実施形態において、上記調整を生じさせる内容は、上記コントローラに、調整するための上記少なくとも１つのＩ／Ｏパラメータを決定させるべく、上記エラー数を前記コントローラに送信するための内容を含む。一実施形態において、上記調整を生じさせる内容は、上記メモリデバイスの受信Ｉ／Ｏパラメータへの上記調整を生じさせるための内容を含む。一実施形態において、上記調整を生じさせる内容は、上記コントローラの送信Ｉ／Ｏパラメータへの上記調整を生じさせるための内容を含む。一実施形態において、調整を生じさせる内容はさらに、調整するための上記少なくとも１つのＩ／Ｏパラメータを決定すべく、検索機能をコンピューティングするための内容を含む。
【００８２】
一態様において、装置は、メモリデバイスによって、上記メモリデバイスのトレーニングモードに入るための手段と、上記トレーニングモードの間に、コントローラからトレーニング信号を受信するための手段と、上記トレーニング信号をサンプリング回路でサンプリングするための手段と、上記メモリデバイスによって、上記トレーニング信号のサンプリングにおけるエラー数を追跡するための手段と、上記エラー数に基づいて、少なくとも１つの入／出力（Ｉ／Ｏ）パラメータへの調整を生じさせるための手段と、を含む。
【００８３】
一実施形態において、上記トレーニングモードに入るための手段は、上記メモリデバイスのリフレッシュモード中に、上記トレーニングモードに入るための手段を含む。一実施形態において、上記トレーニング信号を受信するための手段は、上記トレーニング信号を書き込みコマンドとして受信するための手段と、上記トレーニング信号を上記メモリデバイスのメモリアレイへ書き込む代わりに、それを破棄するための手段と、を含む。一実施形態において、上記エラー数を追跡するための手段は、カウンタで、トレーニング信号のシーケンスにわたり発生するエラー数をカウントするための手段を含む。一実施形態において、前記調整を生じさせるための手段は、上記コントローラに、調整するための上記少なくとも１つのＩ／Ｏパラメータを決定させるべく、上記エラー数を上記コントローラに送信するための手段を含む。一実施形態において、上記調整を生じさせるための手段は、上記メモリデバイスの受信Ｉ／Ｏパラメータへの調整を生じさせるための手段を含む。一実施形態において、上記調整を生じさせるための手段は、上記コントローラの送信Ｉ／Ｏパラメータへの調整を生じさせるための手段を含む。一実施形態において、上記調整を生じさせるための手段はさらに、調整するための上記少なくとも１つのＩ／Ｏパラメータを決定させるべく、検索機能をコンピューティングするための手段を含む。
【００８４】
一態様において、トレーニング可能な複数の入／出力（Ｉ／Ｏ）設定を備えるメモリデバイスは、メモリデバイスに上記メモリデバイスのトレーニングモードに入らせるようにする状態コントローラと、上記トレーニングモードの間に、上記コントローラからトレーニング信号を受信すべく、コントローラデバイスとのインタフェースを取るハードウェア接触と、上記トレーニング信号をサンプリングし、上記トレーニング信号のサンプリングにおけるエラー数を追跡する受信機ハードウェアと、上記エラー数に基づいて、少なくとも１つの入／出力（Ｉ／Ｏ）パラメータへの調整を生じさせるロジックと、を備える。
【００８５】
一実施形態において、状態コントローラは、上記メモリデバイスに上記メモリデバイスのリフレッシュモード中に、上記トレーニングモードに入らせるようにする。一実施形態において、上記受信機ハードウェアは、上記トレーニング信号を上記メモリデバイスのメモリアレイに書き込む代わりに、それを破棄する。一実施形態において、上記メモリデバイスはさらに、トレーニング信号のシーケンスにわたり発生するエラー数をカウントするカウンタを含む。一実施形態において、上記ロジックは、上記コントローラの送信機の少なくとも１つのＩ／Ｏパラメータへの調整を生じさせる。一実施形態において、上記ロジックはさらに、調整するための上記少なくとも１つのＩ／Ｏパラメータを決定するための検索機能ロジックを含む。
【００８６】
一態様において、メモリデバイスとの通信のための複数の入／出力（Ｉ／Ｏ）設定をトレーニングするための方法は、トレーニング信号を書き込みコマンドとしてメモリデバイスに送信する段階と、レジスタから上記トレーニング信号を読み取る段階と、上記読み取られたトレーニング信号について、複数のエラーを確認する段階と、エラー数に基づいて、少なくとも１つの入／出力（Ｉ／Ｏ）パラメータへの調整を生じさせる段階と、を含み、上記メモリデバイスは、上記トレーニング信号を上記メモリデバイスのメモリアレイではなく、上記レジスタに書き込む。
【００８７】
一実施形態において、上記調整を生じさせる段階は、上記メモリデバイスの受信Ｉ／Ｏパラメータへの調整を生じさせる段階を含む。一実施形態において、上記調整を生じさせる段階は、上記コントローラの送信ＩＯパラメータへの調整を生じさせる段階を含む。一実施形態において、上記調整を生じさせる段階はさらに、調整するための上記少なくとも１つのＩ／Ｏパラメータを決定させるべく、検索機能をコンピューティングする段階を含む。一実施形態において、上記方法はさらに、上記メモリデバイスに、上記リフレッシュ状態の間に、トレーニング状態に入らせるようにするコマンドを送信する段階を含む。
【００８８】
一態様において、製造物品は、実行時に、以下を含む複数の動作を実行する格納された内容を有するコンピュータ可読ストレージ媒体を備える。すなわち、トレーニング信号を書き込みコマンドとしてメモリデバイスに送信し、レジスタから上記トレーニング信号を読み取り、上記読み取られたトレーニング信号について、複数のエラーを確認し、エラー数に基づいて、少なくとも１つの入／出力（Ｉ／Ｏ）パラメータへの調整を生じさせ、上記メモリデバイスは、上記トレーニング信号を上記メモリデバイスのメモリアレイではなく、上記レジスタに書き込む。
【００８９】
一実施形態において、上記調整を生じさせる内容は、上記メモリデバイスの受信Ｉ／Ｏパラメータへの上記調整を生じさせるための内容を含む。一実施形態において、上記調整を生じさせる内容は、上記コントローラの送信ＩＯパラメータへの上記調整を生じさせるための内容を含む。一実施形態において、調整を生じさせる内容はさらに、調整するための上記少なくとも１つのＩ／Ｏパラメータを決定すべく、検索機能をコンピューティングするための内容を含む。一実施形態において、製造物品は、上記メモリデバイスに、上記リフレッシュ状態の間に、トレーニング状態に入らせるようにするコマンドを送信するための内容をさらに含む。
【００９０】
一態様において、メモリデバイスとの通信のための複数の入／出力（Ｉ／Ｏ）設定をトレーニングするための装置が、トレーニング信号を書き込みコマンドとしてメモリデバイスに送信するための手段と、レジスタから上記トレーニング信号を読み取るための手段と、上記読み取られたトレーニング信号について、複数のエラーを確認するための手段と、エラー数に基づいて、少なくとも１つの入／出力（Ｉ／Ｏ）パラメータへの調整を生じさせるための手段と、を備え、上記メモリデバイスは、上記トレーニング信号を上記メモリデバイスのメモリアレイではなく、上記レジスタに書き込む。一実施形態において、上記調整を生じさせるための手段は、上記メモリデバイスの受信Ｉ／Ｏパラメータへの調整を生じさせるための手段を含む。一実施形態において、上記調整を生じさせるための手段は、上記コントローラの送信Ｉ／Ｏパラメータへの調整を生じさせるための手段を含む。一実施形態において、上記調整を生じさせるための手段はさらに、調整するための上記少なくとも１つのＩ／Ｏパラメータを決定させるべく、検索機能をコンピューティングするための手段を含む。一実施形態において、上記装置はさらに、上記メモリデバイスに、上記リフレッシュ状態の間に、トレーニング状態に入らせるようにするコマンドを送信するための手段を含む。一態様において、メモリデバイスとのインタフェースを取るハードウェア接触と、読み取られたトレーニング信号について、複数のエラーを確認し、エラー数に基づいて、少なくとも１つの入／出力（Ｉ／Ｏ）パラメータへの調整を生じさせるロジックと、を備える、メモリデバイスとの通信のための複数の入／出力（Ｉ／Ｏ）設定をトレーニングするためのコントローラデバイスであって、上記コントローラデバイスは、上記ハードウェア接触を介し、トレーニング信号を書き込みコマンドとして上記メモリデバイスにリフレッシュ状態において送信し、上記メモリデバイスは、上記トレーニング信号を上記メモリデバイスのメモリアレイではなく、レジスタに書き込み、上記レジスタから上記トレーニング信号を読み取る、コントローラデバイス。
【００９１】
一実施形態において、上記ロジックは、上記メモリデバイスの少なくとも１つのＩ／Ｏパラメータへの調整を生じさせる。一実施形態において、上記ロジックは、上記コントローラの少なくとも１つのＩ／Ｏパラメータへの調整を生じさせる。
【００９２】
本明細書に図示される複数のフロー図は、様々な処理動作の例示的なシーケンスを提供する。特定のシーケンスまたは順序について示しているが、別途明記されない限り、複数の動作の順序は、修正され得る。このように、図示された複数の実施形態は一例としてのみ理解されるべきであり、処理は異なる順序で実行され得、いくつかの動作は、並列に実行され得る。また、１または複数の動作は、様々な実施形態において省略され得、従って、すべての動作が、各実施形態において要求されるわけではない。他の処理フローが可能である。
【００９３】
様々な動作または機能が本明細書中に記載される限りにおいて、それらはソフトウェアコード、複数の命令、構成、および／またはデータとして記載または定義され得る。内容は、直接実行可能な（「オブジェクト」または「実行可能な」フォーム）、ソースコード、または差分コード（「デルタ」または「パッチ」コード）であり得る。本明細中に記載された複数の実施形態に係るソフトウェアの内容は、そこに内容が格納された製造物品を介して、または通信インタフェースを介してデータを送信する通信インタフェースを動作する方法を介して、提供され得る。機械可読記憶媒体は機械に、記載された機能または動作を実行させることができ、機械可読記憶媒体は、記録可能／記録不可能媒体（例えば、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスクストレージ媒体、光ストレージ媒体、複数のフラッシュメモリデバイスなど）のような、機械（例えば、コンピューティングデバイス、電子システム等）によってアクセス可能な形態で情報を格納する任意の機構を含む。通信インタフェースは、メモリバスインタフェース、プロセッサバスインタフェース、インターネット接続、ディスクコントローラ等のような、別のデバイスと通信する任意のハードワイヤード、無線、光学等の媒体のうちの任意のものとのインタフェースを取る任意の機構を含む。通信インタフェースは、複数の構成パラメータを提供することによって、および／またはソフトウェアの内容を記述するデータ信号を提供する通信インタフェースを準備する複数の信号を送信することによって構成され得る。通信インタフェースは、通信インタフェースに送信される１または複数のコマンドまたは信号を介してアクセスされ得る。
【００９４】
本明細書に記載の様々なコンポーネントは、記載される複数の動作または機能を実行するための手段であり得る。本明細書に記載の各コンポーネントは、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む。当該複数のコンポーネントは、複数のソフトウェアモジュール、ハードウェアモジュール、特殊用途ハードウェア（例えば、アプリケーション特有のハードウェア、特定用途向け集積回路（ＡＳＩＣ）、デジタルシグナルプロセッサ（ＤＳＰ）等）、組み込みコントローラ、ハードワイヤード回路等として実装され得る。
【００９５】
本明細書に記載される内容に加え、本発明の範囲から逸脱することなく、様々な変更を本発明の開示された複数の実施形態および実装に加え得る。
【００９６】
従って、ここにおける図および例は、例示として捉えられるべきであり、限定的な意味に捉えられるべきではない。本発明の範囲は、以下の特許請求の範囲への参照によってのみ評価されるべきである。
【図１Ａ】
0006274683.tif 000002
【図１Ｂ】
0006274683.tif 000003
【図２】
0006274683.tif 000004
【図３】
0006274683.tif 000005
【図４】
0006274683.tif 000006
【図５】
0006274683.tif 000007
【図６Ａ】
0006274683.tif 000008
【図６Ｂ】
0006274683.tif 000009
【図７】
0006274683.tif 000010
【図８】
0006274683.tif 000011