(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-05
(45)【発行日】2024-11-13
(54)【発明の名称】メモリデバイスへのコマンドバストレーニングの技術
(51)【国際特許分類】
G06F 12/00 20060101AFI20241106BHJP
G06F 12/04 20060101ALI20241106BHJP
G06F 11/22 20060101ALI20241106BHJP
G11C 7/10 20060101ALI20241106BHJP
【FI】
G06F12/00 564A
G06F12/04 530
G06F11/22 607G
G06F11/22 673F
G11C7/10 460
G06F12/00 597D
【外国語出願】
(21)【出願番号】P 2020157943
(22)【出願日】2020-09-18
【審査請求日】2023-09-07
(32)【優先日】2019-12-10
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】クリストファー ピー.モザク
(72)【発明者】
【氏名】スティーブン ティー.テイラー
(72)【発明者】
【氏名】アルヴィン シン チェ ゴ
【審査官】豊田 真弓
(56)【参考文献】
【文献】特開2012-208936(JP,A)
【文献】米国特許出願公開第2019/0042519(US,A1)
【文献】米国特許出願公開第2017/0294236(US,A1)
【文献】特開2011-090361(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 12/04
G06F 11/22
G11C 7/10
G11C 11/4096
(57)【特許請求の範囲】
【請求項1】
メモリデバイスを第1コマンドバストレーニングモードまたは第2コマンドバストレーニングモードのうちの一方に移行するようにトリガして前記メモリデバイスのコマンド・アドレス(CA)インタフェースをトレーニングする第1コマンドを生成するためのコマンドロジックと、
前記メモリデバイスの前記CAインタフェースと結合されるコマンドバスを介してCAパターンが出力されるようにするための入出力(I/O)トレーニング回路と
を備えるメモリコントローラであって、
前記I/Oトレーニング回路は、
前記メモリデバイスのDQインタフェースと結合されるデータバスを介して前記メモリデバイスから受信されるサンプリング済みのCAパターンを圧縮して、前記第1コマンドバストレーニングモードにある前記メモリデバイスに基づいて第1圧縮値を生成し、前記コマンドロジックに前記第1圧縮値を転送すること、または、
前記データバスを介して前記メモリデバイスから受信される第2圧縮値を転送することであって、前記第2圧縮値は、前記第2コマンドバストレーニングモードにある前記メモリデバイスに基づいて前記メモリデバイスで圧縮される前記サンプリング済みのCAパターンを表す、転送すること
を行うためのものでもある、
メモリコントローラ。
【請求項2】
前記コマンドロジックは更に、
前記第1圧縮値または前記第2圧縮値を使用して、前記コマンドバスを介して送信される前記CAパターンが前記サンプリング済みのCAパターンと一致するかどうかを判断し、
送信される前記CAパターンが前記サンプリング済みのCAパターンと一致しない場合に、前記メモリデバイスの前記CAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整する
ためのものである、
請求項1に記載のメモリコントローラ。
【請求項3】
前記I/Oトレーニング回路は、前記コマンドバスに含まれる偶数個の信号線を介して出力される前記CAパターンを生成するためのものであり、
前記第1圧縮値または前記第2圧縮値は、前記偶数個の信号線を介して送信される、前記サンプリング済みのCAパターンと一致する前記CAパターンに基づく0の偶数パリティ値である、
請求項1または2に記載のメモリコントローラ。
【請求項4】
前記第2コマンドバストレーニングモードはコマンドアドレストレーニングモード(CATM)であり、
前記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、前記SDRAMデバイスは、前記サンプリング済みのCAパターンから前記0の偶数パリティ値を生成し、かつ、前記データバスを介して前記サンプリング済みのCAパターンに関する前記0の偶数パリティ値を示すための回路を有する、
請求項3に記載のメモリコントローラ。
【請求項5】
前記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、
前記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、
前記I/Oトレーニング回路は、前記SDRAMデバイスから受信される前記サンプリング済みのCAパターンから前記0の偶数パリティ値を生成するための1または複数の排他的OR(XOR)ゲートを有する、
請求項3または4に記載のメモリコントローラ。
【請求項6】
前記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、
前記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、
前記I/Oトレーニング回路は、前記SDRAMデバイスから受信される前記サンプリング済みのCAパターンから巡回冗長検査(CRC)値を計算して、前記第1圧縮値を生成し、前記コマンドロジックに前記CRC値を転送するための回路を含み、
前記コマンドロジックは、
前記CRC値を使用して、前記コマンドバスを介して送信される前記CAパターンが前記サンプリング済みのCAパターンと一致するかどうかを判断し、
前記CAパターンが前記サンプリング済みのCAパターンと一致しないと判断された場合に、前記メモリデバイスの前記CAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整する
ためのものである、
請求項1から5のいずれか一項に記載のメモリコントローラ。
【請求項7】
前記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、
前記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、
前記I/Oトレーニング回路は、前記SDRAMデバイスから受信される前記サンプリング済みのCAパターンから署名値を生成して、前記第1圧縮値を生成し、前記コマンドロジックに前記署名値を転送するための多入力シフトレジスタを有し、
前記コマンドロジックは、
前記署名値を使用して、前記コマンドバスを介して送信される前記CAパターンが前記サンプリング済みのCAパターンと一致するかどうかを判断し、
前記CAパターンが前記サンプリング済みのCAパターンと一致しないと判断された場合に、前記メモリデバイスの前記CAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整する
ためのものである、
請求項1から6のいずれか一項に記載のメモリコントローラ。
【請求項8】
前記コマンドバスを介して出力される前記CAパターンは、前記第1コマンドバストレーニングモードおよび前記第2コマンドバストレーニングモードのために実装され得る同じCAトレーニングアルゴリズムに基づいて生成される前記CAパターンを含む、請求項1から7のいずれか一項に記載のメモリコントローラ。
【請求項9】
コマンド・アドレス(CA)インタフェースとDQインタフェースとを有するメモリデバイスと、
前記CAインタフェースと結合されるコマンドバスと、
前記DQインタフェースと結合されるデータバスと、
前記コマンドバスおよび前記データバスと結合されるメモリコントローラと
を備えるシステムであって、
前記メモリコントローラは、
前記メモリデバイスを第1コマンドバストレーニングモードまたは第2コマンドバストレーニングモードのうちの一方に移行するようにトリガして前記CAインタフェースをトレーニングする第1コマンドを生成するためのコマンドロジックと、
前記コマンドバスを介してCAパターンが出力されるようにするための入出力(I/O)トレーニング回路と
を有し、
前記I/Oトレーニング回路は、
前記データバスを介して前記メモリデバイスから受信されるサンプリング済みのCAパターンを圧縮して、前記第1コマンドバストレーニングモードにある前記メモリデバイスに基づいて第1圧縮値を生成し、前記コマンドロジックに前記第1圧縮値を転送すること、または、
前記データバスを介して前記メモリデバイスから受信される第2圧縮値を転送することであって、前記第2圧縮値は、前記第2コマンドバストレーニングモードにある前記メモリデバイスに基づいて前記メモリデバイスで圧縮される前記サンプリング済みのCAパターンを表す、転送すること
を行うためのものでもある、
システム。
【請求項10】
前記コマンドロジックは更に、
前記第1圧縮値または前記第2圧縮値を使用して、前記コマンドバスを介して送信される前記CAパターンが前記サンプリング済みのCAパターンと一致するかどうかを判断し、
送信される前記CAパターンが前記サンプリング済みのCAパターンと一致しない場合に、前記メモリデバイスの前記CAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整する
ためのものである、
請求項9に記載のシステム。
【請求項11】
前記I/Oトレーニング回路は、前記コマンドバスに含まれる偶数個の信号線を介して出力されるCAパターンを生成するためのものであり、
前記第1圧縮値または前記第2圧縮値は、前記偶数個の信号線を介して送信される、前記サンプリング済みのCAパターンと一致する前記CAパターンに基づく0の偶数パリティ値である、
請求項9または10に記載のシステム。
【請求項12】
前記第2コマンドバストレーニングモードはコマンドアドレストレーニングモード(CATM)であり、
前記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、前記SDRAMデバイスは、前記サンプリング済みのCAパターンから前記0の偶数パリティ値を生成し、かつ、前記データバスを介して前記サンプリング済みのCAパターンに関する前記0の偶数パリティ値を示すための回路を有する、
請求項11に記載のシステム。
【請求項13】
前記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、
前記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、
前記I/Oトレーニング回路は、前記SDRAMデバイスから受信される前記サンプリング済みのCAパターンから前記0の偶数パリティ値を生成するための1または複数の排他的OR(XOR)ゲートを含む、
請求項11または12に記載のシステム。
【請求項14】
前記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、
前記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、
前記I/Oトレーニング回路は、前記SDRAMデバイスから受信される前記サンプリング済みのCAパターンから巡回冗長検査(CRC)値を計算して、前記第1圧縮値を生成し、前記コマンドロジックに前記CRC値を転送するための回路を含み、
前記コマンドロジックは、
前記CRC値を使用して、前記コマンドバスを介して送信される前記CAパターンが前記サンプリング済みのCAパターンと一致するかどうかを判断し、
前記CAパターンが前記サンプリング済みのCAパターンと一致しないと判断された場合に、前記メモリデバイスの前記CAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整する
ためのものである、
請求項9から13のいずれか一項に記載のシステム。
【請求項15】
前記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、
前記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、
前記I/Oトレーニング回路は、前記SDRAMデバイスから受信される前記サンプリング済みのCAパターンから署名値を生成して、前記第1圧縮値を生成し、前記コマンドロジックに前記署名値を転送するための多入力シフトレジスタを有し、
前記コマンドロジックは、
前記署名値を使用して、前記コマンドバスを介して送信される前記CAパターンが前記サンプリング済みのCAパターンと一致するかどうかを判断し、
前記CAパターンが前記サンプリング済みのCAパターンと一致しないと判断された場合に、前記メモリデバイスの前記CAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整する
ためのものである、
請求項9から14のいずれか一項に記載のシステム。
【請求項16】
前記コマンドバスを介して出力される前記CAパターンは、前記第1コマンドバストレーニングモードおよび前記第2コマンドバストレーニングモードのために実装され得る同じCAトレーニングアルゴリズムに基づいて生成される前記CAパターンを含む、請求項9から15のいずれか一項に記載のシステム。
【請求項17】
メモリコントローラにおいて、メモリデバイスを第1コマンドバストレーニングモードまたは第2コマンドバストレーニングモードのうちの一方に移行するようにトリガして前記メモリデバイスのコマンド・アドレス(CA)インタフェースをトレーニングする第1コマンドを生成する段階と、
前記メモリデバイスの前記CAインタフェースと結合されるコマンドバスを介してCAパターンが出力されるようにする段階であって、
前記メモリデバイスが前記第1コマンドバストレーニングモードまたは前記第2コマンドバストレーニングモードのどちらにあるようにトリガされたかに応じて、
前記第1コマンドバストレーニングモードにある前記メモリデバイスに基づいて前記メモリデバイスのDQインタフェースと結合されるデータバスを介して前記メモリデバイスからサンプリング済みのCAパターンを受信し、受信される前記サンプリング済みのCAパターンを圧縮して第1圧縮値を生成する段階、または、
前記データバスを介して前記メモリデバイスから受信される第2圧縮値を受信する段階であって、前記第2圧縮値は、前記第2コマンドバストレーニングモードにある前記メモリデバイスに基づいて前記メモリデバイスで圧縮される前記サンプリング済みのCAパターンを表す、段階、
を含む段階と、
前記第1圧縮値または前記第2圧縮値を使用して、前記コマンドバスを介して送信される前記CAパターンが前記サンプリング済みのCAパターンと一致するかどうかを判断する段階と、
送信される前記CAパターンが前記サンプリング済みのCAパターンと一致しない場合に、前記メモリデバイスの前記CAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整する段階と
を備える方法。
【請求項18】
前記コマンドバスに含まれる偶数個の信号線を介して出力される前記CAパターンを生成する段階
を備え、
前記第1圧縮値または前記第2圧縮値は、前記偶数個の信号線を介して送信される、前記サンプリング済みのCAパターンと一致しない前記CAパターンに基づく1の奇数パリティ値である、
請求項17に記載の方法。
【請求項19】
前記第2コマンドバストレーニングモードはコマンドアドレストレーニングモード(CATM)であり、
前記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、前記SDRAMデバイスは、前記サンプリング済みのCAパターンから前記1の奇数パリティ値を生成し、かつ、前記データバスを介して前記サンプリング済みのCAパターンに関する前記1の奇数パリティ値を示すための回路を有する、
請求項18に記載の方法。
【請求項20】
前記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、
前記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、前記方法は、
前記メモリコントローラにおける1または複数の排他的OR(XOR)ゲートを使用して、前記SDRAMデバイスから受信される前記サンプリング済みのCAパターンから前記1の奇数パリティ値を生成する段階
を更に備える
請求項18または19に記載の方法。
【請求項21】
前記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、前記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、前記方法は、
前記SDRAMデバイスから受信される前記サンプリング済みのCAパターンから巡回冗長検査(CRC)値を計算して、前記第1圧縮値を生成する段階と、
前記CRC値を使用して、前記コマンドバスを介して送信される前記CAパターンが前記サンプリング済みのCAパターンと一致するかどうかを判断する段階と
を更に備える、請求項17から20のいずれか一項に記載の方法。
【請求項22】
前記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、前記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、前記方法は、
前記SDRAMデバイスから受信される前記サンプリング済みのCAパターンから署名値を生成して、前記第1圧縮値を生成する段階、および
前記署名値を使用して、前記コマンドバスを介して送信される前記CAパターンが前記サンプリング済みのCAパターンと一致するかどうかを判断する段階
を更に備える、請求項17から21のいずれか一項に記載の方法。
【請求項23】
前記コマンドバスを介して出力される前記CAパターンは、前記第1コマンドバストレーニングモードおよび前記第2コマンドバストレーニングモードのために実装され得る同じCAトレーニングアルゴリズムに基づいて生成される前記CAパターンを含む、請求項17から22のいずれか一項に記載の方法。
【請求項24】
請求項17から23のいずれか一項に記載の方法をシステムに実行させるためのプログラム。
【請求項25】
請求項17から23のいずれか一項に記載の方法を実行するための手段を備える装置。
【請求項26】
請求項24に記載のプログラムが記憶された機械可読記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
説明は概してメモリデバイスへのコマンドバストレーニングの技術に関連している。
【背景技術】
【0002】
メモリサブシステムプロセスの標準化によって、異なるデバイス製造業者間での相互運用が可能になり得る。標準化によって、所定のガイドラインに従って機能する様々なアーキテクチャ設計および様々な処理技術を備えたデバイスを構築することができる。メモリデバイスは、メモリコントローラからコマンドバス経由でコマンドを受信し、コマンドバスは、目標水準をデバイス間のシグナリングが確実に満たすように従来からトレーニングされている。トレーニングは、信号線上のシグナリングの精度が最も高くなる設定を決定するための様々なI/O(入出力)インタフェースパラメータの反復テストを指すことができる。信号精度の一般用語は、信号アイの中央または中心を見つけることである。メモリ技術は、最適な性能を得るために、コマンドバスタイミングおよび電圧サンプリングポイントを信号アイの中央または中心にあるようにトレーニングする必要がある。
【図面の簡単な説明】
【0003】
【0004】
【0005】
【0006】
【
図4A】例示的な第1タイミングダイアグラムを示す。
【
図4B】例示的な第1タイミングダイアグラムを示す。
【0007】
【0008】
【
図6】例示的な第2タイミングダイアグラムを示す。
【0009】
【0010】
【0011】
【0012】
【発明を実施するための形態】
【0013】
メモリコントローラと1または複数のメモリデバイスとの間で信号が送受信される方法のばらつきは、メモリデバイスの設計の違い、並びに、メモリデバイスの形状の減少、パッケージサイズの縮小、チャネル帯域幅の増加、およびシグナリング周波数の増加により生じ得る。故に、メモリチャネルのレイアウトに大きなばらつきがあると、メモリデバイスがコマンドバストレーニングなくデフォルト状態で動作することをメモリデバイスのサプライヤが保証する可能性は低い。コマンドバストレーニングは、コマンドバスが、サイドバンド通信チャネルを持たない可能性があるメモリデバイスと通信する唯一の方法であるかもしれないという因果関係の分からない問題であることから、特に複雑である。しかし、その同じコマンドバスには適切なセンタリングが必要である。コマンドバス上のエラーによってメモリデバイスがハングアップまたはロックアップする可能性があることから、(例えば、複雑なクロストーク状況または干渉状況に対処すべく、)標準化されたトレーニングモード以外でコマンドバストレーニングの完了を試みることも困難である。メモリデバイスがハングアップまたはロックアップすると、リセットのフローまたはプロセスが長引き高くつく可能性がある。
【0014】
本明細書に記載するように、メモリデバイスへの言及は様々なメモリタイプに適用され得る。メモリデバイスは揮発性メモリ技術を指すことがある。揮発性メモリは、デバイスへの電力が遮断された場合に状態(ひいてはそこに記憶されるデータ)が不確定になるメモリである。不揮発性メモリは、デバイスへの電力が遮断された場合でも状態が確定しているメモリを指す。動的揮発性メモリでは、デバイスに記憶されるデータをリフレッシュして状態を維持する必要がある。動的揮発性メモリの一例には、ダイナミックランダムアクセスメモリ(DRAM)、またはシンクロナスDRAM(SDRAM)などの何らかの変形形態がある。本明細書に記載のメモリサブシステムは、DDR3(ダブルデータレートバージョン3、JESD79-3、2007年6月27日にJEDEC(電子機器技術評議会)により最初に公開)、DDR4(DDRバージョン4、JESD79-4、2012年9月にJEDECにより最初に公開)、LPDDR3(低電力DDRバージョン3、JESD209-3B、2013年8月にJEDECにより最初に公開)、LPDDR4(低電力DDRバージョン4、JESD209-4、2014年8月にJEDECにより最初に公開)、WIO2(登録商標)(ワイドI/O2(WIDE IO2)、JESD229-2、2014年8月にJEDECにより最初に公開)、HBM(高帯域幅メモリDRAM、JESD235、2013年10月にJEDECにより最初に公開)、LPDDR5(2019年2月にJEDECにより最初に公開)、HBM2((HBMバージョン2)、2018年12月にJEDECにより最初に公開)、もしくはDDR5(DDRバージョン5、現在JEDECで議論中)など、またはメモリ技術の組み合わせ、および係る仕様の派生物または拡張に基づく技術といった複数のメモリ技術またはメモリ規格と互換性があり得る。
【0015】
LPDDR4またはLPDDR5の規格または仕様に従って動作するように設計されるDRAMメモリデバイスは、チップ選択(CS)信号がトグルされたときにコマンドバスを介して受信されるコマンド/アドレス(CA)値をサンプリングし、かつ、データバス上のサンプリング済みのCA値をメモリコントローラに返すコマンドバストレーニング(CBT)モードを有し得る。受信側のメモリコントローラは、このフィードバックを使用して、コマンドバスの電圧基準(VrefCA)(例えばLPDDR5モードレジスタ(MR)MR12.OP[6:0])を調整してよい。受信側のメモリコントローラは、このフィードバックを使用して、通常は位相補間回路でコマンドバスとクロック(CLK)との間の相対的なタイミングを調整してもよいし、送信機または受信機の等化技術などのより高いコマンドバス周波数と関連付けられる高度なシグナリング技術を調整してもよい。CBTモードによってLPDDR4またはLPDDR5のコマンドバスのトレーニングが可能になるが、これは、通常ファームウェア/ソフトウェアを通じて実行する必要がある時間のかかるプロセスである。例えば、これらのLPDDR4/LPDDR5 CBTモードでは、CAパターンをプログラムし、コマンドバスを介してDRAMにCAパターンを送信し、データバスに返されるサンプリング済みの値を読み取り、正誤に関するファームウェア/ソフトウェアチェックを行うために、ファームウェア/ソフトウェアが必要になることがある。これらの段階の各々がファームウェアにより調整されることから、いくつかの例では、コマンドバストレーニングが数マイクロ秒につき1つのサンプルしか取得できない。数マイクロ秒につき1つのサンプルというレートでは、許容期間内にテストできるCAパターンの数が大幅に限定され得る。また、LPDDR4またはLPDDR5のDRAMメモリデバイスの通常動作で1ナノ秒につき複数のサンプルを収集/観察する機会を提供できるとすると、この制限されたサンプリングレートはコマンドバストレーニングの質に悪影響を及ぼす可能性がある。故に、LPDDR4/LPDDR5 CBTモードがメモリコントローラのファームウェア/ソフトウェアを通じて実行されると、CAパターンの正誤を観察するために数千の潜在的なサンプリングポイントが失われる可能性がある。
【0016】
提案されたDDR5仕様に従って動作するように設計されるDRAMメモリデバイスは、コマンドアドレストレーニングモード(CATM)と呼ばれるコマンドバストレーニングモードをサポートする。CATMは、CSがトグルしたときにCA値をサンプリングし、これらのタイプのDDR5メモリデバイスのデータバスに結果を返す。ただし、DDR5メモリデバイスは、実際のサンプリング済みのCA値を返す代わりに、サンプリング済みのCA値のパリティだけを返す内部回路を含む。メモリコントローラのロジックは、データバスがメモリデバイスによりハイ(エラーがあることを示すパリティ値)またはロー(エラーがないことを示すパリティ値)に駆動されているかどうかをチェックするだけでよいので、CATMによってCAパターンのエラーチェックは大幅に簡略化される。結果として、DDR5メモリデバイスのコマンドバストレーニング用に配置されるメモリコントローラのロジックは、コマンドバス経由で伝送されるCAパターンを、データバスを介して返される、メモリデバイスサンプリング済みのCAパターンと比較する必要がなくなる。
【0017】
CATM中のDDR5メモリデバイスにおけるロジックによるCAパターンのパリティチェックが簡略化されると、それぞれのコマンドバストレーニングモード中のLPDDR4およびLPDDR5のメモリデバイスと比較して、ファームウェアが行う必要のある調整作業の大部分が取り除かれる。ただし、LPDDR4およびLPDDR5のメモリデバイスには、CATMと同様のコマンドバストレーニングモードを実装するための内部回路およびロジックがない。従って、コマンドバスをトレーニングする時間を短縮してコマンドバストレーニングの質を上げるために、LPDDR4またはLPDDR5のメモリデバイスにコマンドバストレーニングモードを実装するメモリコントローラにおいてファームウェアの調整作業を最小限に抑える技術が必要である。
【0018】
図1は例示的なシステム100を示す。いくつかの例では、
図1に示すように、システム100は、コンピューティングデバイス内にプロセッサとメモリサブシステムの要素とを含む。プロセッサ110は、オペレーティングシステム(OS)およびアプリケーションを実行し得るコンピューティングプラットフォームの処理装置を表し、処理装置は総じてメモリサブシステムのホストまたはユーザと呼ばれ得る。OSおよびアプリケーションは、メモリアクセスにつながる動作を実行する。プロセッサ110は、1または複数の別個のプロセッサを含むことができる。各別個のプロセッサは、単一の処理装置、マルチコア処理装置、またはこれらの組み合わせを含んでよい。処理装置は、中央処理装置(CPU)などのプライマリプロセッサ、グラフィックス処理装置(GPU)などの周辺プロセッサ、またはこれらの組み合わせであってよい。メモリアクセスは、ネットワークコントローラまたはハードディスクコントローラなどのデバイスにより開始されてもよい。係るデバイスは、いくつかのシステム内のプロセッサと統合されてもよいし、バス(例えばPCIエクスプレスバス)を介してプロセッサに取り付けられてもよいし、これらの組み合わせであってもよい。システム100は、システムオンチップ(SOC)として実装されてもよいし、スタンドアロンコンポーネントで実装されてもよい。
【0019】
メモリデバイスへの言及は様々なメモリタイプに適用されてよい。メモリデバイスは、DRAMなどの揮発性メモリ技術を指すことが多い。揮発性メモリに加えてまたは代替的に、いくつかの例において、メモリデバイスへの言及は、デバイスへの電力が遮断された場合でも状態が確定している不揮発性メモリデバイスを指すことができる。一例では、不揮発性メモリデバイスは、NAND技術またはNOR技術などのブロックアドレス指定可能なメモリデバイスである。メモリデバイスは、以下に限定されるわけではないが、カルコゲナイド相変化材料(例えばカルコゲナイドガラス)を含む3次元(3-D)クロスポイントメモリ構造(以下、「3-Dクロスポイントメモリ」と呼ぶ)を有するバイトアドレス指定可能またはブロックアドレス指定可能なタイプの不揮発性メモリを含んでもよい。不揮発性タイプのメモリは、以下に限定されるわけではないが、多閾値レベルのNANDフラッシュメモリ、NORフラッシュメモリ、単一またはマルチレベルの相変化メモリ(PCM)、抵抗メモリ、ナノワイヤメモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、反強誘電体メモリ、金属酸化物系、酸素欠陥系、および導電性ブリッジランダムアクセスメモリ(CB-RAM)を含む抵抗メモリ、スピントロニック磁気接合メモリ、磁気トンネル接合(MTJ)メモリ、磁壁(DW)スピン軌道トランスファ(SOT)メモリ、サイリスタベースのメモリ、メモリスタ技術を内蔵した磁気抵抗ランダムアクセスメモリ(MRAM)、スピントランスファトルクMRAM(STT-MRAM)、または上記のいずれかの組み合わせなどの他のタイプのバイトアドレス指定可能またはブロックアドレス指定可能な不揮発性メモリを含んでもよい。
【0020】
本明細書での「RAM」または「RAMデバイス」に関する説明は、揮発性であるか不揮発性であるかにかかわらず、ランダムアクセスを可能にする任意のメモリデバイスに適用され得る。「DRAM」、「SDRAM」、「DRAMデバイス」、または「SDRAMデバイス」に関する説明は、揮発性ランダムアクセスメモリデバイスを指すことがある。メモリデバイス、SDRAM、またはDRAMは、ダイ自体、1または複数のダイを含むパッケージメモリ製品、またはその両方を指すことがある。いくつかの例では、リフレッシュを必要とする揮発性メモリを備えたシステムが、少なくとも何らかの不揮発性メモリを含んでもよい。
【0021】
メモリコントローラ120は、
図1に示すように、システム100の1または複数のメモリコントローラ回路またはメモリデバイスを表してよい。また、メモリコントローラ120は、プロセッサ110による動作の実行に応答してメモリアクセスコマンドを生成するロジックおよび/または機能を含んでよい。いくつかの例において、メモリコントローラ120は1または複数のメモリデバイス140にアクセスしてよい。これらの例の場合、メモリデバイス140は、上記のいずれかに係るSDRAMデバイスであってよい。メモリデバイス140は、様々なチャネルを通じて編成および管理されてよく、これらのチャネルは、バスおよび信号線を介して複数のメモリデバイスに並列に結合してよい。各チャネルは独立して動作可能であってよい。故に、別個のチャネルが独立してアクセスおよび制御されてよく、タイミング、データ転送、コマンドおよびアドレス交換、並びに他の動作がチャネルごとに別個のものであってよい。結合は、電気的結合、通信的結合、物理的結合、またはこれらの組み合わせを指すことがある。物理的結合は直接的接触を含んでよい。電気的結合は例えば、コンポーネント間の電気的な流れを可能にするか、またはコンポーネント間のシグナリングを可能にするか、またはその両方を可能にするインタフェースまたは相互接続を含む。通信的結合は例えば、コンポーネントがデータを交換できるようにする、有線接続または無線絶族を含む接続を含む。
【0022】
いくつかの例によれば、チャネルごとの設定は、別個のモードレジスタまたは他のレジスタ設定により制御される。これらの例の場合、システム100は、単一のメモリコントローラにより管理される複数のチャネルを有するように、または単一チャネル上に複数のメモリコントローラを有するように構成され得るが、メモリコントローラ120は別個のメモリチャネルを管理してよい。一例において、メモリコントローラ120は、プロセッサ110と同じダイ上に実装されるか、または同じパッケージ空間に実装される、メモリコントローラ120のロジックおよび/または機能のような、プロセッサ110の部分である
【0023】
メモリコントローラ120は、上記のメモリチャネルなどのメモリバスに結合するI/Oインタフェース回路122を含む。I/Oインタフェース回路122(およびメモリデバイス140のI/Oインタフェース回路142)は、ピン、パッド、コネクタ、信号線、トレース、またはワイヤ、またはデバイスを接続する他のハードウェア、またはこれらの組み合わせを含んでよい。I/Oインタフェース回路122はハードウェアインタフェースを含んでよい。
図1に示すように、I/Oインタフェース回路122は、少なくとも信号線用のドライバ/トランシーバを含む。一般に、集積回路インタフェース内のワイヤは、パッド、ピン、またはコネクタと結合して、デバイス間の信号線またはトレースまたは他のワイヤをインタフェース接続する。I/Oインタフェース回路122は、メモリコントローラ120とメモリデバイス140との間で信号線上の信号を交換するためのドライバ、受信機、トランシーバ、または終端、または他の回路もしくは回路の組み合わせを含むことができる。信号の交換は送信または受信のうちの少なくとも一方を含む。I/Oインタフェース回路122をメモリコントローラ120からメモリデバイス140のI/Oインタフェース回路142に結合するものとして示されているが、メモリデバイス140の群が並列にアクセスされるシステム100の実装では、複数のメモリデバイスがメモリコントローラ120の同じインタフェースへのI/Oインタフェース回路を含み得ることが解るだろう。1または複数のメモリモジュール170を含むシステム100の実装において、I/Oインタフェース回路142は、メモリデバイス140用のインタフェースハードウェアに加えて、メモリモジュール170のインタフェースハードウェアを含んでよい。他のメモリコントローラ120は、メモリデバイス140の1または複数のメモリデバイスへの複数の別個のインタフェースを含んでよい。
【0024】
いくつかの例において、メモリコントローラ120は、複数の信号線を介してメモリデバイス140と結合されてよい。複数の信号線は、少なくともクロック(CLK)132、コマンド/アドレス(CMD)134、並びに書き込みデータ(DQ)および読み取りデータ(DQ)136、並びにゼロ以上の他の信号線138を含んでよい。いくつかの例によれば、メモリコントローラ120をメモリデバイス140に結合する信号線の構成は、総じてメモリバスと呼ばれることがある。CMD134の信号線は、「コマンドバス」、「C/Aバス」、または「ADD/CMDバス」と呼ばれてもよいし、コマンドの転送を示す何らかの他の名称で呼ばれてもよい。DQ136の信号線は「データバス」と呼ばれることがある。
【0025】
いくつかの例によれば、独立したチャネルは、様々なクロック信号、コマンドバス、データバス、および他の信号線を有してよい。これらの例の場合は、独立したインタフェース経路を別個のバスと見なすことができるという意味で、システム100を複数の「バス」を有するものと見なすことができる。バスは、
図1に示す信号線に加えて、ストローブシグナリング線、警告線、補助線、または他の信号線、またはこれらの更なる信号線の組み合わせのうちの少なくとも1つを含んでもよいことが解るだろう。メモリコントローラ120とメモリデバイス140との間で信号を伝送するためにシリアルバス技術が使用され得ることも解るだろう。シリアルバス技術の例には、各方向における単一の差動信号対にわたってクロックが埋め込まれた高速データの8B10B符号化および伝送がある。いくつかの例において、CMD134は、複数のメモリデバイス140と並列に共有される信号線を表す。他の例では、複数のメモリデバイスがCMD134の符号化コマンド信号線を共有し、各々が個々のメモリデバイス140を選択するための別個のチップ選択(CS_n)信号線を有する。
【0026】
いくつかの例において、メモリコントローラ120とメモリデバイス140との間のバスは、CMD134に含まれる信号線を介してルーティングされる補助コマンドバスと、DQ136に含まれる信号線を介してルーティングされる書き込みデータおよび読み取りデータを運ぶ補助データバスとを含む。いくつかの例において、CMD134およびDQ136は別個に双方向線を含んでよい。他の例において、DQ136は、ホストからメモリにデータを書き込むための一方向書き込み信号線と、メモリからホストにデータを読み取るための一方向線とを含んでよい。
【0027】
いくつかの例によれば、選択されるメモリ技術およびシステム設計に従って、その他138に含まれる信号線がメモリバスまたは補助バスを拡張してよい。例えば、DQS用のストローブ線信号線。システム100の設計またはメモリ技術の実装に基づいて、メモリバスは、メモリデバイス140に含まれるメモリデバイスごとに程度の差はあれ帯域幅を有してよい。メモリバスは、×32インタフェース、×16インタフェース、×8インタフェース、または他のインタフェースのいずれかを有するメモリデバイス140に含まれるメモリデバイスをサポートしてよい。慣例で、「xW」(Wは、メモリデバイス140のインタフェースのインタフェースサイズまたはインタフェース幅を指す整数)は、メモリコントローラ120とデータを交換する信号線の数を表す。これらのメモリデバイスのインタフェースサイズは、システム100内のチャネルごとに同時に使用され得るか、または同じ信号線に並列に結合され得るメモリデバイスの数に対する制御要因であってよい。いくつかの例では、高帯域幅メモリデバイス、ワイドインタフェースメモリデバイス、または積層メモリデバイス、またはこれらの組み合わせによって、×128インタフェース、×256インタフェース、×512インタフェース、×1024インタフェース、または他のデータバスインタフェース幅などのより幅広いインタフェースが使用可能になり得る。
【0028】
いくつかの例において、メモリデバイス140およびメモリコントローラ120は、バーストで、または一連の連続したデータ転送で、DQ136に含まれる信号線を介してデータバス経由でデータを交換する。バーストは、バス周波数に関連する転送サイクルの数に対応する。所与の転送サイクルが、同じクロックまたはストローブ信号エッジ(例えば立ち上りエッジ)で行われる転送の全クロックサイクルであってよい。いくつかの例では、システムクロックのサイクルを指す全てのクロックサイクルが複数の単位間隔(UI)に分割されてよく、各UIは転送サイクルである。例えば、ダブルデータレート転送がクロック信号の両方のエッジ(例えば立ち上がりおよび立ち下がり)でトリガする。バーストは、構成される数のUIにわたって持続することができ、これは、レジスタに記憶されるか、またはオンザフライでトリガされる構成であってよい。例えば、8つの連続した一連の転送期間は、バースト長8(BL8)と見なされてよく、各メモリデバイス140は各UIでデータを転送することができる。故に、BL8で動作する×8メモリデバイスは、64ビットのデータ(8データ信号線×バースト経由で線ごとに転送される8データビット)を転送することができる。この簡単な例は単なる例示に過ぎず、限定しているわけではないことが解るだろう。
【0029】
いくつかの例によれば、メモリデバイス140はシステム100のメモリリソースを表す。これらの例の場合、メモリデバイス140に含まれる各メモリデバイスは別個のメモリダイである。別個のメモリデバイスが、デバイスまたはダイごとに複数の(例えば2つの)チャネルとインタフェース接続してよい。メモリデバイス140の所与のメモリデバイスがI/Oインタフェース回路142を含んでよく、当該所与のメモリデバイスの実装または構成と関連付けられるインタフェース幅で決定される帯域幅(例えば×16、または×8、または何らかの他のインタフェース帯域幅)を有してよい。I/Oインタフェース回路142は、メモリデバイスがメモリコントローラ120とインタフェース接続することを可能にし得る。I/Oインタフェース回路142はハードウェアインタフェースを含み、メモリコントローラ120のI/Oインタフェース回路122と協調して動作してよい。
【0030】
いくつかの例では、複数のメモリデバイス140が(例えばCMD134およびDQ136を介して)同じコマンドバスおよびデータバスに並列に接続されてよい。他の例では、複数のメモリデバイス140が同じコマンドバスに並列に接続されるが、異なるデータバスに接続されてよい。例えば、システム100は、並列に結合される複数のメモリデバイス140で構成されてよく、各メモリデバイスはコマンドに応答し、各メモリデバイスの内部のメモリリソース160にアクセスする。書き込み動作の場合は、メモリデバイス140の個々のメモリデバイスがデータワード全体の一部を書き込んでよく、読み取り動作の場合は、個々のメモリデバイスがデータワード全体の一部をフェッチしてよい。非限定的な例として、特定のメモリデバイスが、読み取り動作または書き込み動作用の128ビットデータワードの8ビット、または256ビットデータワードの8ビットもしくは16ビット(×8デバイスか×16デバイスかによって決まる)をそれぞれ提供または受信してよい。ワードの残りのビットは、他のメモリデバイスにより並列に提供または受信されてよい。
【0031】
いくつかの例によれば、メモリデバイス140は、コンピューティングデバイスのマザーボードまたはホストシステムプラットフォーム(例えば、プロセッサ110が配置されるPCB(プリント回路基板))上に直接配置されてよい。メモリデバイス140はメモリモジュール170の中に編成されてよい。いくつかの例において、メモリモジュール170は、デュアルインラインメモリモジュール(DIMM)を表すことがある。いくつかの例において、メモリモジュール170は、ホストシステムプラットフォームとは別個の回路、別個のデバイス、または別個の基板であり得る、アクセス回路または制御回路の少なくとも一部を共有する複数のメモリデバイスの他の編成または構成を表すことがある。いくつかの例において、メモリモジュール170は複数のメモリデバイス140を含んでよく、メモリモジュール170は、自らに配置される包含済みのメモリデバイス140に対する複数の別個のチャネルのサポートを含んでよい。
【0032】
いくつかの例において、メモリデバイス140は、メモリコントローラ120と同じパッケージに組み込まれてよい。例えば、マルチチップモジュール(MCM)、シリコン貫通ビア(TSV)を備えたパッケージオンパッケージ、または他の技術もしくはこれらの組み合わせに組み込まれる。同様に、いくつかの例において、メモリデバイス140はメモリモジュール170に組み込まれてよく、メモリモジュール170自体はメモリコントローラ120と同じパッケージに組み込まれてよい。これらの例および他の例の場合、メモリコントローラ120はプロセッサ110の一部であってもよいし、プロセッサ110と統合されてもよいことが解るだろう。
【0033】
図1に示すように、いくつかの例において、メモリデバイス140はメモリリソース160を含む。メモリリソース160は、データのメモリ位置または記憶位置の個々のアレイを表すことがある。メモリリソース160は、ワード線(行)およびビット線(行内の個々のビット)の制御を介してアクセスされるデータの行として管理されてよい。メモリリソース160は、別個のチャネル、ランク、およびメモリバンクとして編成されてよい。チャネルは、メモリデバイス140内の記憶位置への独立した制御経路を指すことがある。ランクは、複数のメモリデバイス(例えば異なるメモリデバイス内の同じ行アドレス)における共通の位置を指すことがある。バンクは、メモリデバイス140の所与のメモリデバイス内のメモリ位置のアレイを指すことがある。バンクが、サブバンク用の共有回路(例えばドライバ、信号線、制御ロジック)の少なくとも一部を有するサブバンクに分割されることで、別個のアドレス指定およびアクセスが可能になり得る。チャネル、ランク、バンク、サブバンク、バンク群、またはメモリ位置の他の編成、およびこれらの編成の組み合わせが、メモリリソース160にアクセスするためのアプリケーションで重複し得ることが解るだろう。例えば、ランクにも属し得る特定のバンクとして、同じ物理的メモリ位置に特定のチャネル経由でアクセスすることができる。故に、メモリリソース160の編成は、排他的な方式ではなく包括的な方式で理解され得る。
【0034】
いくつかの例によれば、
図1に示すように、メモリデバイス140は1または複数のレジスタ144を含む。レジスタ144は、動作メモリデバイス140用の構成または設定を提供する1または複数の記憶デバイスまたは記憶位置を表すことがある。一例において、レジスタ144は、制御動作または管理動作の一部としてメモリコントローラ120がアクセスするためのデータを記憶するメモリデバイス140の記憶位置を提供してよい。例えば、レジスタ144は1または複数のモードレジスタ(MR)を含んでよく、および/または、1または複数の多目的レジスタを含んでよい。
【0035】
いくつかの例では、レジスタ144の1または複数のレジスタに対する書き込みまたはプログラミングによって、メモリデバイス140は、様々な「モード」で動作するように構成されてよい。これらの例の場合、1または複数のレジスタに書き込まれるか、またはプログラムされるコマンド情報は、メモリデバイス140内の様々なモードをトリガしてよい。更にまたは代替的に、様々なモードは、トリガされるモードに応じてアドレス情報または他の信号線から様々な動作をトリガすることもできる。レジスタ144のプログラムされる設定は、I/O設定の構成(例えば、タイミング、終端、オンダイ終端(ODT)、ドライバ、または他のI/O設定の構成)を示すか、またはトリガしてよい。
【0036】
いくつかの例によれば、メモリデバイス140は、I/Oインタフェース回路142と関連付けられるインタフェースハードウェアの一部としてODT146を含む。ODT146は、所定の信号線へのインタフェースに付与されるインピーダンスの設定を提供してよい。例えば、ODT146は、DQ136またはCMD134に含まれる信号線にインピーダンスを付与するように構成されてよい。ODT146のODT設定は、メモリデバイス140のうちのあるメモリデバイスが、アクセス動作の選択されるターゲット、または非ターゲットメモリデバイスのどちらであるかに基づいて変更されてよい。ODT146のODT設定は、例えばCMD134またはDQ136に含まれる終端信号線上のシグナリングのタイミングおよび反映に影響を及ぼすことがある。ODT146のODT設定を制御することで、付与されるインピーダンスと負荷との整合性が改善され、より高速な動作が可能になり得る。インピーダンスおよび負荷は、I/Oインタフェース回路142、122の特定の信号線(例えばCMD134およびDQ136)に付与されてよく、必ずしも全ての信号線に付与されるとは限らない。
【0037】
いくつかの例では、
図1に示すように、メモリデバイス140はコントローラ150を含む。コントローラ150は、メモリデバイス140内の内部動作を制御するための、メモリデバイス140内の制御ロジックを表すことがある。例えば、コントローラ150は、メモリコントローラ120により送信されるコマンドを復号し、コマンドを実行するまたは満たすための内部動作を生成する。コントローラ150は内部コントローラと呼ばれることがあり、ホストのメモリコントローラ120とは別個のものである。コントローラ150は、レジスタ144に示すプログラムされる設定またはデフォルト設定に基づいて、選択されるモードを決定し、かつ、選択されるモードに基づいて、メモリリソース160にアクセスするための動作または他の動作の内部実行を構成する、ためのロジックおよび/または機能を含んでよい。コントローラ150は、メモリデバイス140内のビットのルーティングを制御するための制御信号を生成して、選択されるモードに適切なインタフェースを提供し、メモリリソース160の適切なメモリ位置またはアドレスにコマンドを向ける。コントローラ150はコマンド(CMD)ロジック152を含み、CMDロジック152は、コマンド信号線およびアドレス信号線で受信されるコマンド符号化を復号することができる。故に、CMDロジック152はコマンドデコーダであってもよいし、コマンドデコーダを含んでもよい。コマンドロジック152を用いて、メモリデバイスはコマンドを識別し、要求されるコマンドを実行するための内部動作を生成することができる。
【0038】
改めてメモリコントローラ120を参照すると、メモリコントローラ120はCMDロジック124を含み、CMDロジック124は、メモリデバイス140に送信するコマンドを生成するためのロジックおよび/または機能を表す。コマンドの生成は、スケジューリング前のコマンド、または、送信準備のできているキューに入れられたコマンドの準備を指すことができる。概して、メモリサブシステム内のシグナリングは、メモリデバイス140がコマンドを実行すべき1または複数のメモリ位置を示すまたは選択するための、コマンド内のアドレス情報、またはコマンドに付随するアドレス情報を含む。メモリデバイス140のトランザクションのスケジューリングに応答して、メモリコントローラ120は、I/Oインタフェース回路122を介してコマンドを発行して、メモリデバイス140に当該コマンドを実行させることができる。いくつかの例において、メモリデバイス140のコントローラ150は、メモリコントローラ120からI/Oインタフェース回路142を介して受信されるコマンドおよびアドレス情報を受信および復号する。コントローラ150は、受信されるコマンドおよびアドレス情報に基づき、メモリデバイス140内のロジック、機能、および/または回路の動作のタイミングを制御してコマンドを実行してよい。コントローラ150は、メモリデバイス140のタイミング要件およびシグナリング要件などの規格または仕様に準拠して動作するように配置されてよい。メモリコントローラ120は、アクセスのスケジューリングおよび制御により規格または仕様への準拠を実装してよい。
【0039】
いくつかの例によれば、メモリコントローラ120はスケジューラ130を含み、スケジューラ130は、メモリデバイス140に送信するトランザクションを生成および注文するためのロジックおよび/または機能を表す。1つの観点から、メモリコントローラ120の主要な機能は、メモリデバイス140に対するメモリアクセスおよび他のトランザクションをスケジューリングすることであると言える。係るスケジューリングは、トランザクション自体を生成して、プロセッサ110によるデータの要求を実装し、(例えばリフレッシュに関連するコマンドを用いるなどして)データの完全性を維持することを含むことができる。トランザクションは1または複数のコマンドを含むことができ、クロックサイクルまたは単位間隔などの1または複数のタイミングサイクルにわたって、コマンドもしくはデータまたはその両方が転送される。トランザクションは、読み取りコマンドもしくは書き込みコマンドもしくは関連コマンド、またはこれらの組み合わせなどのアクセスのためであってよく、他のトランザクションは、構成、設定、データの完全性、または他のコマンドもしくはこれらの組み合わせのためのメモリ管理コマンドを含むことができる。
【0040】
いくつかの例において、メモリコントローラ120はリフレッシュ(REF)ロジック126を含む。REFロジック126は、確定状態を保持するためにリフレッシュを必要とする揮発性のメモリリソースに使用されてよい。REFロジック126は例えば、リフレッシュの位置、および実行するリフレッシュのタイプを示してよい。REFロジック126は、メモリデバイス140内のセルフリフレッシュをトリガしてもよいし、リフレッシュコマンドを送信することにより、自動リフレッシュコマンドと呼ばれ得る外部リフレッシュを実行してもよいし、これらの組み合わせを行ってもよい。いくつかの例によれば、システム100は、全てのバンクリフレッシュと、バンクごとのリフレッシュとをサポートする。全てのバンクリフレッシュでは、並列に結合される全てのメモリデバイス140内のバンクがリフレッシュされる。バンクごとのリフレッシュでは、メモリデバイス140の所定のメモリデバイス内の所定のバンクがリフレッシュされる。いくつかの例において、メモリデバイス140内のコントローラ150は、メモリデバイス140内のリフレッシュを適用するためのREFロジック154を含む。REFロジック154は例えば、メモリコントローラ120から受信される外部リフレッシュに従ってリフレッシュを実行するための内部動作を生成してよい。REFロジック154は、リフレッシュがメモリデバイス140に向けられているかどうかを判断し、コマンドに応答してリフレッシュすべきメモリリソース160を決定してよい。
【0041】
いくつかの例によれば、メモリコントローラ120はI/Oトレーニング回路128を含む。I/Oトレーニング回路128は、メモリコントローラ120とメモリデバイス140との間のI/O相互接続のトレーニングを実行するためのメモリコントローラ120内の回路を指す。トレーニングは、シグナリングの質を向上させる設定を決定するために様々な設定を適用することを指すことができる。トレーニングは、様々な設定をテストするための反復動作を含んでよく、当該様々な設定は、電圧設定、タイミング設定、もしくは他の設定、またはこれらの組み合わせを含むことができる。I/Oトレーニング回路128は、I/Oインタフェース回路142およびI/Oインタフェース回路122のトランシーバと関連付けられるパラメータを設定してよい。いくつかの例では、I/Oトレーニング回路128によって、CMD134に含まれる信号線のコマンドバス信号トレーニングが可能になる。
【0042】
トレーニングは、データ信号アイを制御する電気的パラメータもしくはタイミングパラメータまたはその両方のテストおよび設定を指すことがある。データ信号アイは、1または複数の信号線で受信される信号の立ち上がりエッジおよび立ち下がりエッジの平均的なタイミングおよび形状を指す。アイの高さおよび幅は、1または複数の信号線上の論理値もしくは論理値の変化またはその両方をトリガするために必要なタイミングおよび電圧レベルの要件に準拠する。コマンドバストレーニングは、本明細書に記載のコマンドバスまたはC/Aバストレーニングの任意の例に従ったものであってよい。いくつかの例において、I/Oトレーニング回路128は、本明細書に記載の任意の例に従ってコマンドバストレーニングモードを提供してよい。
【0043】
いくつかの例において、メモリデバイス140はI/Oサンプリング・フィードバックロジック180を含む。メモリコントローラ120とメモリデバイス140との間に結合される様々な信号線を介してルーティングされる信号をトレーニングするための様々なシグナリングパラメータのテストが可能になるよう、I/Oトレーニング回路128はCMDロジック124と協調して動作してよい。I/Oサンプリング・フィードバックロジック180は、トレーニング中にこれらの様々な信号線をサンプリングし、メモリコントローラ120にフィードバックを提供して、メモリコントローラ120からのコマンド、およびメモリデバイス140に書き込まれるまたはメモリデバイス140から受信されるデータなどの情報をメモリコントローラ120およびメモリデバイス140が交換できるようにする、シグナリング特性を提供する設定を識別してよい。
【0044】
いくつかの例によれば、メモリデバイス140は、CMDロジック124からのコマンドに基づいてコマンドバストレーニングモードに移行する。メモリデバイス140が、提案されたDDR5仕様に従って動作するように配置または構成される場合は、コマンドバストレーニングモードは、以下でより詳細に説明するようなCATMであってよい。メモリデバイス140が、LPDDR4またはLPDDR5の仕様に従って動作するように配置または構成される場合は、コマンドバストレーニングモードはLPDDR4/LPDDR5 CBTモードであってよい。以下で更に説明するように、いずれのタイプのコマンドバストレーニングモードでも、システム100などのシステムが、CMD134に含まれる信号線経由でメモリデバイス140にルーティングされるCA信号などの、コマンドバス信号線経由で1または複数のメモリデバイスにルーティングされるCA信号をトレーニングすることを可能にし得る。例えば、コマンドバストレーニングモードのメモリデバイス140を用いると、CMDロジック124などのメモリコントローラ120のロジックおよび/または機能によってコマンドおよび/または信号がメモリデバイス140に送信されることで、CMD134を介してルーティングされるCA信号の電圧マージニング、タイミングマージニング、もしくは位相マージニング、またはこれらの組み合わせ(総じて信号マージニングと呼ばれ得る)をトレーニングして、当該CA信号をCLK132に含まれるクロック信号のメモリサブシステムクロック信号と整合させることができる。
【0045】
また、以下で更に説明するように、メモリコントローラ120のCMDロジック124と同様のメモリコントローラのコマンドロジックは、それぞれのCATMモードまたはCBTモードに置かれるDDR5メモリデバイスまたはLPDDR4/LPDDR5メモリデバイスの両方のCAパターンを生成するためのCAアルゴリズムの共通セットに基づいて、メモリデバイスによるサンプリング済みの信号のエラー検出を容易にすることができるI/Oトレーニング回路128などのエラー検出回路を含んでもよいし、当該エラー検出回路にアクセスできてもよい。例えば、メモリコントローラ120内に含まれるI/Oトレーニング回路は、サンプリング済みのCAパターンが正しいか、1または複数のエラーを有するかを、CMDロジック124が迅速かつ効率的に判断できるようにする少なくとも何らかのエラーチェックハードウェアを含んでよい。いくつかの例によれば、エラーチェックハードウェアを含むまたはエラーチェックハードウェアにアクセスできるこのタイプのI/Oトレーニング回路は、メモリコントローラが、CAパターンおよび/またはCAトレーニングアルゴリズムの共通セットを利用するDDR5メモリデバイスまたはLPDDR4/LPDDR5メモリデバイスでの動作を含め、より広い範囲のメモリデバイスで動作して、様々なタイプのメモリデバイスまたはメモリ技術のコマンドバスをトレーニングすることを可能にし得る。エラーチェックハードウェアを使用すると、LPDDR4/LPDDR5メモリデバイスのコマンドバストレーニングを実装するときに必要なファームウェアまたはソフトウェアの調整作業を簡略化することもできる。
【0046】
図2は例示的なシステム200を示す。いくつかの例では、
図2に示すように、システム200は、メモリコントローラ220およびメモリデバイス240を含む。これらの例の場合は、同様に
図2に示すように、メモリコントローラ220は、以下に限定されるわけではないが、CMDロジック224、I/Oトレーニング回路228、およびI/Oインタフェース回路222を含む。CLK232、CMD234、DQ236、およびその他238は、
図2に示すように、I/Oインタフェース回路222をI/Oインタフェース回路242と結合する。CLK232、CMD234、DQ236、およびその他238は、
図1に示すCLK132、CMD134、DQ136、およびその他138について上述したのと同様の信号線およびメモリバス機能を含んでよい。
【0047】
いくつかの例では、
図2に示すように、メモリデバイス240は、I/Oサンプリング・フィードバックロジック280およびI/Oインタフェース回路242を含む。パターン回路227またはエラー検出回路229などのI/Oトレーニング回路228のロジックおよび/または機能によって、DDR5メモリデバイスまたはLPDDR4/5メモリデバイスのいずれかのコマンドバストレーニングを容易にすることが可能になり得る。例示的なシステム200の場合は、メモリデバイス240は、LPDDR4仕様またはLPDDR5仕様に準拠して動作するように配置または設計されてよい。LPDDR4/5メモリデバイスの場合は、CMDロジック224は、いくつかの例において、エラー検出回路229が、サンプリング済みのCAパターンの圧縮表現を提供するために、メモリコントローラ220に返されるサンプリング済みのCAパターンの少なくともいくらかの圧縮を必要とすることを示してよい。以下で更に説明するように、エラー検出回路229は、返されるCAパターンに様々な圧縮スキームを実装するように配置されてよい。
【0048】
いくつかの例によれば、パターン回路227は、CMDロジック224により実行されるファームウェアまたはソフトウェアによって提供される1または複数のCAトレーニングアルゴリズムに基づいてパターン回路227がCAパターンを生成できるようにするためのプログラム可能なロジックまたは機能を含んでよい。例えば、CMDロジック224により実行されるファームウェアまたはソフトウェアは、パターン回路227に1または複数のCAトレーニングアルゴリズムを提供して、CAパターンを生成させてよい。
図2に示されてはいないが、パターン回路227は、1または複数のタイプの回路を利用して、1または複数の線形帰還シフトレジスタ(LFSR)などの疑似乱数CAパターンを生成させてよい。例えば、シード値が1または複数のCAトレーニングアルゴリズムで示され、次に、疑似乱数CAパターンを生成させるためにパターン回路227により使用されてよい。いくつかの例では、メモリコントローラ220とメモリデバイス240との間で結合されるCMD234に含まれる信号線を介してルーティングされる信号に対する複雑なクロストークまたは電力供給ストレスの影響をシミュレーションすべく、パターン回路227が複数のLFSRを利用してよい。パターン回路227は、可変周波数方形波を使用してLFSRパターンをマスキングすることにより異なる周波数成分を作成してもよい。メモリコントローラ220は様々な内部状態に移行して、コマンドバストレーニング法をこれらの内部状態の副次的影響にさらしてもよい。内部状態は、以下に限定されるわけではないが、低電力状態、または温度変化に基づく内部伝送設定の更新を含んでよい。以下でより詳細に説明するように、生成されるパターンは、LPDDR4またはLPDDR5の仕様に従って実装されるCBTモードの開始に基づいてCMD234に含まれるコマンドバス信号線を介してルーティングされてよい。
【0049】
いくつかの例において、I/Oトレーニング回路228のエラー検出回路229は、CBTモードの開始に応答してI/Oサンプリング・フィードバックロジック280により観察されるサンプリング済みのCAパターンのエラー検出を容易にすることができる回路を含んでよい。これらの例の場合、サンプリング済みのCAパターンは、CMD234に含まれる信号線を介してルーティングされているCAパターンに基づいてI/Oサンプリング・フィードバックロジック280により観察されてよい。サンプリング済みのCAパターンは、DQ236に含まれる信号線を有するデータバスを介して送り返されてよい。一例において、エラー検出回路229は、サンプリング済みのCAパターンが正しいか、1または複数のエラーを有するかを、CMDロジック224により実行されるファームウェアまたはソフトウェアが判断できるように、返されるサンプリング済みのCAパターンを圧縮するための回路を含んでよい。
【0050】
いくつかの例によれば、返されるサンプリング済みのCAパターンの圧縮は、1または複数の排他的OR(XOR)ゲートを使用して、返されるサンプリング済みのCAパターンを単一のパリティビット値に圧縮することを含んでよい。これらの例の場合、パターン回路227は、CMD234に含まれる偶数個の信号線上に疑似乱数パターンを生成させて偶数パリティを作成するCAトレーニングアルゴリズムを実装してよい。故に、圧縮されるサンプリング済みのCAパターンが「0」のパリティ値を生成した場合は、CMDロジック224により実装されるソフトウェアまたはファームウェアは、CAパターンがエラーなくサンプリングされたと判断してよい。圧縮されるサンプリング済みのCAパターンが「1」のパリティ値を生成した場合は、CMDロジック224により実装されるソフトウェアまたはファームウェアは、CAパターンがエラーを伴ってサンプリングされたと判断してよく、修正措置(例えば、CMD234に含まれる信号線を介して送信される信号に関連する電気的パラメータまたはタイミングパラメータの調整)が必要であると判断してよい。
【0051】
いくつかの例において、サンプリング済みのCAパターンの圧縮は、回路を使用して巡回冗長検査(CRC)値を計算することで、圧縮されるサンプリング済みのCAパターンを表すことを含んでよい。これらの例の場合、パターン回路227は、CMD234に含まれる信号線上に生成されるCAパターンの期待されるM+1ビットCRC値(「M」は任意の正の整数を表す)を有するCAトレーニングアルゴリズムを実装してよい。期待されるM+1 CRC値は、CMDロジック224により実行されるソフトウェアまたはファームウェアによって維持されてよい。サンプリング済みのCAパターンがDQ236を介して返されると、エラー検出回路229は、サンプリング済みのCAパターンに関するCRC値を計算する。次に、CRC値は、CMDロジック224により実行されるソフトウェアまたはファームウェアに転送されてよい。次に、CMDロジック224により実行されるソフトウェアまたはファームウェアは、圧縮されるサンプリング済みのCAパターンを表すCRC値が、生成/送信されるCAパターンの期待されるM+1 CRC値と一致するかどうかを判断してよい。提供されるCRC値が、期待されるM+1 CRC値と一致する場合は、ソフトウェアまたはファームウェアは、サンプリング済みのCAパターンにエラーがないと判断する。提供されるCRC値が、期待されるM+1 CRC値と一致しない場合は、ソフトウェアまたはファームウェアは、サンプリング済みのCAパターンがエラーを含み、かつ、修正措置が必要であると判断する。
【0052】
いくつかの例によれば、サンプリング済みのCAパターンの圧縮は、回路を使用して署名値を生成することで、圧縮されるサンプリング済みのCAパターンを表すことを含んでよい。署名値を生成するために使用される回路は、多入力シフトレジスタ(MISR)を含んでよい。これらの例の場合、パターン回路227は、CMD234に含まれる信号線上に生成されるCAパターンについて期待されるM+1ビット署名値を有するCAトレーニングアルゴリズムを実装してよい。期待されるM+1署名値は、CMDロジック224により実行されるソフトウェアまたはファームウェアによって維持されてよい。サンプリング済みのCAパターンがDQ236を介して返されると、エラー検出回路229は、サンプリング済みのCAパターンをMISRに入力することによりサンプリング済みのCAパターンに関する署名値を計算する。次に、MISRから出力される署名値が、CMDロジック224により実行されるソフトウェアまたはファームウェアに転送されてよい。次に、CMDロジック224により実行されるソフトウェアまたはファームウェアは、圧縮されるサンプリング済みのCAパターンを表す署名値が、生成/送信されるCAパターンの期待されるM+1署名値と一致するかどうかを判断してよい。提供される署名値が、期待されるM+1署名値と一致する場合は、ソフトウェアまたはファームウェアは、サンプリング済みのCAパターンにエラーがないと判断する。提供される署名値が、期待されるM+1署名値と一致しない場合は、ソフトウェアまたはファームウェアは、サンプリング済みのCAパターンがエラーを含み、かつ、修正措置が必要であると判断する。
【0053】
図3は例示的なシステム300を示す。いくつかの例では、
図3に示すように、システム300は、
図2について上述したようなメモリコントローラ220と、メモリデバイス340とを含む。これらの例の場合、I/Oインタフェース回路222をI/Oインタフェース回路342と結合するものとして
図3に示すCLK332、CMD334、DQ336、およびその他338は、
図1に示すCLK132、CMD134、DQ136、およびその他138について上述したのと同様の信号線およびメモリバス機能を含んでよい。
【0054】
いくつかの例では、前に述べたように、パターン回路227またはエラー検出回路229などのI/Oトレーニング回路228のロジックおよび/または機能によって、DDR5メモリデバイスまたはLPDDR4/5メモリデバイスのいずれかのコマンドバストレーニングを容易にすることが可能になり得る。例示的なシステム300の場合は、メモリデバイス340は、提案されたDDR5仕様に準拠して動作するように配置または設計されてよい。DDR5メモリデバイスの場合、CMDロジック224は、メモリコントローラ220に返されるサンプリング済みのCAパターンの圧縮がエラー検出回路329により必要とされないことを示してよい。サンプリング済みのCAパターンを圧縮するのに役立つメモリデバイスのXOR回路をDDR5メモリデバイスが含むことに起因して、圧縮は必要ない。以下で更に説明するように、I/Oサンプリング・フィードバックロジック380は、サンプリング済みのCAパターンをメモリデバイス340で圧縮するためのXOR回路382を含む。
【0055】
いくつかの例によれば、上述したように、パターン回路227は、CMDロジック224により実行されるファームウェアまたはソフトウェアによって提供される1または複数のCAトレーニングアルゴリズムに基づいてパターン回路227がCAパターンを生成できるようにするためのプログラム可能なロジックまたは機能を含んでよい。以下でより詳細に説明するように、生成されるパターンは、提案されたDDR5仕様に従って実装されるCATMの開始に基づいてCMD334に含まれるコマンドバス信号線を介してルーティングされてよい。
【0056】
いくつかの例において、I/Oトレーニング回路228のエラー検出回路229は、CATMの開始に応答してI/Oサンプリング・フィードバックロジック380により観察されるサンプリング済みのCAパターンのエラー検出を容易にすることができる回路を含んでよい。これらの例の場合、サンプリング済みのCAパターンは、CMD334に含まれる信号線を介してルーティングされているCAパターンに基づいてI/Oサンプリング・フィードバックロジック380により観察されてよい。サンプリング済みのCAパターンは、XOR回路382によりパリティ値に圧縮されてよく、パリティ値は、DQ336に含まれる信号線を介して送り返される。
【0057】
一例において、エラー検出回路229は、CMDロジック224により実装されるソフトウェアまたはファームウェアにパリティ値を転送してよい。また、これらの例の場合、パターン回路227は、CMD334に含まれる偶数個の信号線上に疑似乱数パターンを生成させて偶数パリティを作成するCAトレーニングアルゴリズムを実装してよい。故に、返されるパリティ値が「0」である場合は、CMDロジック324により実装されるソフトウェアまたはファームウェアは、CAパターンがエラーなくサンプリングされたと判断してよい。返されるパリティ値が「1」である場合は、CMDロジック324により実装されるソフトウェアまたはファームウェアは、CAパターンがエラーを伴ってサンプリングされたと判断してよく、修正措置(例えば、CMD334に含まれる信号線を介して送信される信号に関連する電気的パラメータまたはタイミングパラメータの調整)が必要であると判断してよい。
【0058】
図4Aおよび
図4Bは例示的なダイアグラム400を示す。いくつかの例において、ダイアグラム400は、
図2に示す上記のメモリデバイス240などのLPDDR5仕様に従って動作するように配置されるメモリデバイスのモード1コマンドバストレーニング(CBT)の実装と関連付けられるタイミングダイアグラムであってよい。例はモード1CBTに限定されない。
【0059】
いくつかの例によれば、信号410は、CLK332に含まれる信号線を介してルーティングされるクロック信号を表し、当該クロック信号は、一次クロック信号CK_tおよび相補的クロック信号CK_cを含むことができる。モード1CBTの場合、クロック信号は継続的に実行される。CLK信号410のタイミングは、Ta0、Ta1、・・・、Td0、Td1、・・・、などといった様々なタイミングインジケータを有する。タイミングの様々なセクションは、必ずしも連続的であるとは限らないタイミングを示すが、連続的であってよい。複数のブレーク(BR)が示されている。これらのブレークは単に代表的なものである。いくつかの例において、メモリデバイス340がモード1CBTを実装している間のコマンドバストレーニングは、CK信号410とコマンドバス(CA)信号430との間の整合を確立してよい。
【0060】
いくつかの例において、CA信号430は、コマンドバスを介してルーティングされるCA信号の例を示し、当該CA信号の例は、
図4に示すように7つの信号線[6:0]を含むことができる。例えば、CA信号430の7つの信号線は、メモリコントローラ220とメモリデバイス240との間に結合されるCMD334を通じてルーティングされてよい。
図4に示す信号線の数は単なる例である。
【0061】
いくつかの例によれば、メモリコントローラ220のロジックおよび/または機能によって、CMD信号440がCBTへの移行を示していることを示した
図4Aに示されるように第1モードレジスタ書き込み(MRW-1)コマンドに次いで第2MRW-2コマンドを発行することにより、モード1CBTが可能になり得る。
図4Aは、CA信号430が有効なMRWコマンド(ほぼTa0付近)を示していることも示す。有効なMRWコマンドは、
図4Aに示すように、チップ選択(CS_n)信号420をアサートしている間に発行される。CMD信号440は、CA信号430の信号に基づいて復号されるコマンドを示す。いくつかの例において、MRWコマンドは、メモリデバイス240におけるモードレジスタの多目的レジスタに対する書き込みまたはプログラミングを行うメモリコントローラ220により発行されてよい。モード1CBT MRWコマンドは、特定のビットパターンを多目的レジスタに書き込むまたはプログラムすることによりトリガされてよい。
【0062】
いくつかの例によれば、WCK_t、WCK_c信号460は、DQ[7]信号450の状態のトグルをキャプチャする、CLK132に含まれる信号線を介して送信される信号を表してよい。いくつかの例において、DQ[7]信号450は、8ピンデータバスの8番目のピンに結合される信号線を表してよい。一方、DQ[6:0]信号470は、8ピンデータバスの他の7つのピンに結合される信号線を表してよい。これらの例の場合、DQ[7]信号450およびDQ[6:0]信号470は、メモリコントローラ220とメモリデバイス240との間に結合されるDQ236に含まれてよい。
【0063】
いくつかの例では、
図4Aに示すように、tCAENTに続いて、CS_n信号420はハイに駆動されてよく、一方で、DQ[7]信号450もハイに駆動され、CAパターンAは、(例えばパターン回路227により生成されるパターンに基づいて、)Td1付近のCMD信号440により示されるように、メモリコントローラ220からコマンドバストレーニング用のCA[6:0]信号430を介して送信される。これらの例の場合は、サンプル442がCAパターンAとして観察されてよい。サンプル442は例えば、メモリデバイス240のI/Oサンプリング・フィードバックロジック280により観察されてよい。次に、サンプル442は、
図4Aに示すように、DQ[6:0]信号470を介して送信されて、結果として得られるサンプリング済みのCAパターンAをTd4付近で示してよい。
【0064】
図4Bに示すように、CAパターンAおよびその対応するサンプル442に次いで、第2CAパターンBおよび対応するサンプル444が示されている。また、
図4Bは、Tb0およびTd0の付近でDQ[6:0]信号470を介して送信されているこれら両方のサンプルを示す。例は2つのCAパターンに限定されるわけでなく、メモリデバイス240がモード1CBTにある間に、任意の数のCAパターンが送受信されてよい。
【0065】
いくつかの例では、
図4Bに示すように、第1MRWコマンドおよび第2MRWコマンドは、Tg0付近のCMD信号440上で送信される。これらの例の場合、CS_n信号420はハイに駆動され、DQ[7]信号450はローに駆動されて、モード1CBTを終了するためにMRW-1コマンドおよびMRW-2コマンドが発行される。tMRDの後、次に、メモリデバイス240は、通常動作の準備ができた状態にあってよい。
【0066】
図5は例示的な表500を示す。いくつかの例において、表500は、
図4Aおよび
図4Bのダイアグラム400について上述したような、かつ、LPDDR5仕様に記載されているようなモード1CBTを実装するメモリデバイスのコマンドバストレーニングに関するACパラメータを含む。表500に含まれるACパラメータは、メモリデバイスがモード1CBTを実装している間の信号線上のシグナリングに関するタイミングパラメータを指す。これらの例の場合、シグナリングは、立ち上がりエッジもしくは立ち下がりエッジのいずれか、またはその両方で行われる。表500に含まれるタイミングパラメータは、1つの信号変化から別の信号変化へのタイミングを満たすための要件を指し、信号変化は、メモリデバイスの1または複数のロジック、機能、または回路による動作をトリガする。
【0067】
行502は、DQ[7]信号のトグルと関連付けられる静的WCK期間を定義するタイミングパラメータを表すtCBTWCKPRE_staticを識別する。行504は、DQ[7]信号とWCK_t、WCK_c信号との間のセットアップマージンに関するタイミングパラメータを表すtWCK2DQYHを識別する。行506は、DQ[7]信号とWCK_t、WCK_c信号との間のホールドマージンに関するタイミングパラメータを表すtDQ7HWCKを識別する。行508は、DQ[7]信号がアサート(ハイ)された後に有効なクロックおよびコマンドに関するタイミングパラメータを表すtDQ7HCKを識別する。行510は、CS_n信号がアサートされる前の有効なクロック要件を表すtCHPRECSを識別する。行512は、CS_n信号がアサートされた後の有効なクロック要件に関するタイミングパラメータを表すtCKPSTCSを識別する。行514は、DQ[7]信号がアサートされたときから所与のCAパターンのCAバストレーニングまでの遅延時間に関するタイミングパラメータを表すtCAENTを識別する。行516は、非同期データ読み取りに関するタイミングパラメータを表すtADRを識別する。行518は、CAバストレーニングコマンドからCAバストレーニングコマンドまでの遅延に関するタイミングパラメータを表すtCACDを識別する。行520は、DQ[7]信号がデアサート(ロー)される前にCA[6:0]信号を介して有効なCK_t、CK_c信号およびコマンドに関するタイミングパラメータを表すtCKDQ7Lを識別する。行522は、静的WCKにデアサートされているDQ[7]信号に関するタイミングパラメータを表すtDQ7LWCKを識別する。
【0068】
示されている例示的な表500は、パラメータ/シンボルごとにナノ秒(ns)またはクロックサイクルのいずれかでの最小/最大時間を示す。いくつかの例において、CKサイクルはCK_t、CK_c信号に基づいていてよく、WCKサイクルはWCK_t、WCK_c信号に基づいていてよい。
【0069】
図6は例示的なダイアグラム600を示す。いくつかの例において、ダイアグラム600は、
図3に示す上記のメモリデバイス340などの提案されたDDR5仕様に従って動作するように配置されるメモリデバイスのCATMの実装と関連付けられるタイミングダイアグラムであってよい。
【0070】
いくつかの例によれば、信号610は、CLK332に含まれる信号線を介してルーティングされるクロック信号を表し、当該クロック信号は、一次クロック信号CK_tおよび相補的クロック信号CK_cを含むことができる。CATMの場合、クロック信号は継続的に実行される。CLK信号610のタイミングは、t0、t1、・・・、t(a+1)、t(a+2)、・・・、などといった様々なタイミングインジケータを有する。タイミングの様々なセクションは、必ずしも連続的であるとは限らないタイミングを示すが、連続的であってよい。図には複数のブレーク(BR)が示されている。これらのブレークは単なる代表的なものである。いくつかの例において、メモリデバイス340がCATMを実装している間のコマンドバストレーニングは、CK信号610とコマンドバス(CA)信号620との間の整合を確立してよい。
【0071】
いくつかの例において、CA信号620は、コマンドバスを介してルーティングされるCA信号の例を示し、当該CA信号の例は、
図6に示すように14個の信号線[13:0]を含むことができる。例えば、CA信号620の14個の信号線は、メモリコントローラ220とメモリデバイス340との間に結合されるCMD334を通じてルーティングされてよい。
図6に示す信号線の数は単なる例である。
【0072】
いくつかの例によれば、メモリコントローラ220のロジックおよび/または機能は、CMD信号630により示される多目的コマンド(MPC)を発行することによってCATMを有効にしてよい。CA信号620はCATM移行コマンド(ほぼt0付近)を示す。CATMは、
図6に示すようにCA信号620を介してノーオペレーション(NOP)コマンドを送信している間に、CK信号610の2サイクル以上(ほぼtc+6からtc+8の付近)にわたるチップ選択(CS_n)信号640のアサートに基づいて終了または無効化される。CMD信号630は、CA信号620の信号に基づいて復号されるコマンドを示す。いくつかの例において、MPCは、メモリデバイス340におけるモードレジスタの多目的レジスタに対する書き込みまたはプログラミングを行うメモリコントローラ220により発行されてよい。CATM移行コマンドは、特定のビットパターンを多目的レジスタに書き込むまたはプログラムすることによりトリガされてよい。
【0073】
いくつかの例において、MPCは複数のtCKサイクルを超えて拡張し、その最中、CS_n信号620は、CATMにある間、単一のtCKサイクルにわたってのみアサートされる。ひとたびCATMになると、他のコマンドがメモリデバイス340により解釈されることはない。メモリデバイスは、パターン回路227から送信されるCAパターンのみをサンプリングし、XOR回路382によりパリティ値を生成し、DQ信号660を介してサンプリング済みのCAパターンに関するパリティ値を送り返す。いくつかの例では、
図6に示すように、CATMにある間、メモリコントローラ220は、選択解除(DES)コマンド符号化でCA信号620を保持または維持し、CAパターンがCA信号620からサンプリングされていないときにCAコマンドでCA信号を保持する。CMD信号630に見られるように、DESコマンドとCAコマンドとの違いは、CS_n信号640のアサーションまたはデアサーションである。
【0074】
いくつかの例によれば、DQS_tおよびDQS_c信号650は、相補的なDQS_t信号およびDQS_c信号を含み得るデータストローブ信号(DQS)を表す。DQS_tおよびDQS_c信号650を介して伝達されるデータストローブの特定のシグナリングは、ダイアグラム600に対して制限を課すものではない。CS_n信号640は、メモリデバイス340のチップ選択信号を表してよく、I/Oサンプリング・フィードバックロジック380は、サンプル642およびサンプル644などの複数のサンプルを取得してよい。いくつかの例では、ひとたびメモリデバイス340でCATMが有効になると、I/Oサンプリング・フィードバックロジック380は、tCATM_Entryの後に開始し得る遅延期間を表すtCATM_Entryの遅延の後のクロック信号610の立ち上りエッジから開始する、立ち上がりCKエッジでCA信号620上で送信されるCAパターンをサンプリングする。別の実装では、より多くのまたはより少ないサンプルが使用され得る。
【0075】
いくつかの例において、サンプル642またはサンプル644が観察されてからそれぞれのパリティ値(例えばXOR回路382により決定される)の出力がDQ信号660を介して出力信号を発生するまでの遅延は、tCATM_Validと指定される。期間tCATM_DQ_Windowは、I/Oサンプリング・フィードバックロジック380またはメモリデバイス340がDQ信号660上のそれぞれのパリティ値の出力結果を駆動する期間を表し、システム構成に応じて
図6に示すものより短くても長くてもよい。I/Oサンプリング・フィードバックロジック380は、パリティ値に応じて0または1の値を示すものとして出力を駆動してよい。例えば、
図6に示すように、DQ信号660上の出力は、サンプル642が「0」、サンプル644が「1」である。
【0076】
図7は例示的な表700を示す。いくつかの例において、表700は、
図6のダイアグラム600について上述したような、かつ、提案されたDDR5仕様に記載されているようなCATMを実装するメモリデバイスのコマンドバストレーニングに関するACパラメータを含む。表700に含まれるACパラメータは、メモリデバイスがCATMを実装している間の信号線上のシグナリングに関するタイミングパラメータを指す。これらの例の場合、シグナリングは、立ち上がりエッジもしくは立ち下がりエッジのいずれか、またはその両方で行われる。表700に含まれるタイミングパラメータは、1つの信号変化から別の信号変化へのタイミングを満たすための要件を指し、信号変化は、メモリデバイスの1または複数のロジック、機能、または回路による動作をトリガする。
【0077】
行702は、CATM移行コマンドの登録とコマンドバストレーニング用のサンプルの取得の開始との間の遅延または時間帯(window)または時間を定義するタイミングパラメータを表すtCATM_Entryを識別する。行704は、CATM終了コマンドの登録とCATMの終了との間の時間を定義するタイミングパラメータを表すtCATM_Exitを識別する。行706は、CATMの終了を示した後の遅延時間を定義するタイミングパラメータを表すtCATM_Exit_Delayを識別する。行708は、サンプル評価からサンプル評価結果のデータバス(DQ)への出力までのタイミングパラメータを表すtCATM_Validを識別する。行702および行706については、20ナノ秒(ns)の最小時間が示されている。行704および行708については、14nsおよび20nsの最大時間がそれぞれ示されている。
【0078】
行710は、データバス(DQ)への出力が可能な時間を表すtCATM_DQ_Windowを識別する。出力が可能な時間は、メモリコントローラが結果を読み取ることができる時間帯を定義する。示されている例示的な表は、2nCKまたは2クロックサイクルの可能な最小時間を示す。
【0079】
行712は、終了コマンドを登録するためにCS_n信号がローに保持される時間を表すtCATM_CS_Exitを識別する。CS_n信号をローに保持することへの言及は、CS_n信号線上でロジックローを駆動するためのメモリコントローラによる動作を指すことができる。表700の例では、両方のパラメータが、2nCKの最小時間および8nCKの最大時間を有するものとして示されている。
【0080】
本明細書には、開示されているアーキテクチャの新規の態様を実行するための例示的な方法論を表す論理フローが含まれる。一方、説明の簡略化を目的として、本明細書に示す1または複数の方法論は一連の行為として図示および説明されているが、当業者であれば、これらの方法論が行為の順序に限定されないことを理解および認識するだろう。それに応じて、いくつかの行為は、本明細書で図示および説明するものとは異なる順序で、および/または、本明細書で図示および説明するものから得た他の行為と同時に行われてよい。例えば、当業者であれば、方法論が代替的に、状態ダイアグラムなどにおいて、一連の相互に関連する状態またはイベントとして表され得ることを理解および認識するだろう。更に、方法論に示されている全ての行為が新規の実装に必要なわけではない可能性がある。
【0081】
論理フローおよび/または論理フローの一部が、ソフトウェア、ファームウェア、および/またはハードウェアで実装されてよい。ソフトウェアおよびファームウェアの実施形態では、光学ストレージ、磁気ストレージ、または半導体ストレージなどの少なくとも1つの非一時的なコンピュータ可読媒体または機械可読媒体に記憶されるコンピュータ実行可能命令により論理フローが実装されてよい。これらの実施形態はこの文脈において限定されない。
【0082】
図8は例示的な論理フロー800を示す。
図8に示すように、論理フロー800は、メモリコントローラ(例えばメモリコントローラ220)と、DDRメモリデバイス(例えばメモリデバイス340)またはLPDDR5メモリデバイス(例えば、コマンドバス(CA)トレーニング中のメモリデバイス240)のいずれかとによる措置を含んでよい。いくつかの例において、メモリコントローラは、リセット条件または初期化条件に応答して、メモリコントローラとメモリデバイスとの間のI/Oインタフェースをトレーニングする(802)。これらの例の場合、チップ選択(CS)信号線は、I/Oインタフェースのコマンドバスの他の信号線とは別個にトレーニングされる(804)。いくつかの例によれば、メモリコントローラは、メモリタイプに基づいて、あるコマンドまたは一連のコマンドをメモリデバイスに送信して、コマンドバストレーニングモードへの移行をトリガする(806)。このトリガに応答して、DDR5メモリデバイスがCAトレーニングモード(CATM)に移行する(808A)か、または、LPDDR5メモリデバイスがコマンドバストレーニング(CBT)モードに移行する(808B)。
【0083】
いくつかの例では、メモリデバイスがCAトレーニングモードにある間、メモリコントローラはコマンドバス上でCAパターンを駆動する(810)。いくつかの例において、メモリデバイスはCAパターンをサンプリングする(812A/B)。メモリデバイスがDDR5メモリデバイスである場合は、DDR5メモリのXOR回路は、サンプリング済みのCAパターン(812A)をXORし、次に、圧縮されるサンプリング済みのCAパターンを表すべく、データバス上にパリティ値を出力してよい(816A)。メモリデバイスがLPDDR5メモリデバイスである場合は、サンプリング済みのCAパターン全体がデータバス上に出力される(816B)。
【0084】
いくつかの例によれば、メモリコントローラはデータバスを読み取る(818)。一例では、データバスから読み取られたものがサンプリング済みのCAパターンである場合(820、「パターン」分岐)は、メモリコントローラは、エラー検出回路を利用して、サンプリング済みのCAパターンを(例えば、XORパリティ値、CRC値、または署名値に)圧縮する(822)。メモリデバイスは、CAパターンが正しくサンプリングされたことを示すために圧縮された値を評価する(824)。いくつかの例において、CAパターンが正しくサンプリングされなかったとメモリコントローラが判断した場合(826、「いいえ」分岐)は、メモリコントローラは、メモリデバイスに少なくとも1つのI/Oインタフェースパラメータを変更させてよく、CAバス上でのCAパターンの駆動(810)を反復する。
【0085】
いくつかの例によれば、コマンドバス(CB)がトレーニングされている場合(826、「はい」分岐)は、メモリコントローラはコマンドバストレーニングの終了をトリガする(828)。コマンドバストレーニングの終了をトリガしたことに応答して、DDR5メモリデバイスがCATMを終了し、トレーニングされるコマンドバスに関するパラメータを設定する(830A)か、または、LPDDR5メモリデバイスがCBTモードを終了し、トレーニングされるコマンドバスに関するパラメータを設定する(830B)。いくつかの例では、メモリコントローラは、コマンドバスをトレーニングした後、メモリデバイスに書き込まれるデータパターンのためにデータバスを別個にトレーニングしてよい(832)。
【0086】
図9は例示的なシステム900を示す。いくつかの例において、システム900は、メモリシステムがCAトレーニングモードを実装し得るコンピューティングシステムであってよい。システム900は、本明細書に記載の任意の例に係るコンピューティングデバイスを表しており、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、サーバ、ゲーム制御システムもしくはエンタテインメント制御システム、スキャナ、コピー機、プリンタ、ルーティングデバイスもしくはスイッチングデバイス、組み込みコンピューティングデバイス、スマートフォン、ウェアラブルデバイス、モノのインターネットデバイス、または他の電子デバイスであり得る。
【0087】
システム900はプロセッサ910を含み、プロセッサ910は、システム900に対して命令の処理、動作管理、および実行を提供する。プロセッサ910は、任意のタイプのマイクロプロセッサ、中央処理装置(CPU)、グラフィックス処理装置(GPU)、処理コア、またはシステム900に対して処理を提供する他の処理ハードウェア、またはプロセッサの組み合わせを含むことができる。プロセッサ910は、システム900の動作全体を制御し、1または複数のプログラム可能な汎用マイクロプロセッサもしくは専用マイクロプロセッサ、デジタル信号プロセッサ(DSP)、プログラム可能なコントローラ、特定用途向け集積回路(ASIC)、もしくはプログラム可能な論理デバイス(PLD)など、または係るデバイスの組み合わせであってもよいし、それを含んでもよい。
【0088】
一例において、システム900は、プロセッサ910に結合されるインタフェース912を含み、インタフェース912は、メモリサブシステム920またはグラフィックスインタフェースコンポーネント940などのより高い帯域幅接続を必要とするシステムコンポーネントのより高速なインタフェースまたは高スループットインタフェースを表すことができる。インタフェース912は、スタンドアロンコンポーネントであり得るまたはプロセッサダイ上に統合され得るインタフェース回路を表す。存在する場合、グラフィックスインタフェース940は、システム900のユーザに視覚表示を提供するためのグラフィックスコンポーネントにインタフェース接続する。一例において、グラフィックスインタフェース940は、ユーザに出力を提供する高精細度(HD)ディスプレイを駆動することができる。高精細度は、画素密度がほぼ100PPI(インチあたりの画素)以上のディスプレイを指すことができ、フルHD(例えば1080p)、網膜ディスプレイ、または4K(超高精細度またはUHD)などといったフォーマットを含むことができる。一例において、ディスプレイはタッチスクリーンディスプレイを含むことができる。一例において、グラフィックスインタフェース940は、メモリ930に記憶されるデータもしくはプロセッサ910により実行される動作またはその両方に基づいて表示を生成する。
【0089】
メモリサブシステム920は、システム900のメインメモリを表し、プロセッサ910により実行されるコード、またはルーチンの実行に使用されるデータ値のためのストレージを提供する。メモリサブシステム920のメモリ930は、リードオンリメモリ(ROM)、フラッシュメモリ、DRAMなどの1または複数の種類のランダムアクセスメモリ(RAM)、もしくは他のメモリデバイス、または係るデバイスの組み合わせといった1または複数のメモリデバイスを含んでよい。メモリ930は、とりわけ、システム900において命令を実行するためのソフトウェアプラットフォームを提供するオペレーティングシステム(OS)932を記憶およびホストする。更に、アプリケーション934は、メモリ930からOS932のソフトウェアプラットフォーム上で実行することができる。アプリケーション934は、1または複数の機能の実行を行うための独自の動作ロジックを有するプログラムを表す。プロセス936は、OS932、もしくは1または複数のアプリケーション934、またはこれらの組み合わせに補助機能を提供するエージェントまたはルーチンを表す。OS932、アプリケーション934、およびプロセス936は、システム900に対して機能を提供するためのソフトウェアロジックを提供する。一例において、メモリサブシステム920はメモリコントローラ922を含み、メモリコントローラ922は、コマンドを生成してメモリ930に発行するためのメモリコントローラである。メモリコントローラ922は、プロセッサ910の物理的部分またはインタフェース912の物理的部分であり得ることが解るだろう。例えば、メモリコントローラ922は、プロセッサ910を備えた回路上に統合される統合メモリコントローラであり得る。
【0090】
具体的には示されていないが、システム900は、メモリバス、グラフィックスバス、またはインタフェースバスなどといった、デバイス間の1または複数のバスまたはバスシステムを含み得ることが解るだろう。バスまたは他の信号線は、コンポーネントを互いに通信可能または電気的に結合するか、またはコンポーネントを通信可能かつ電気的に結合することができる。バスは、物理的通信回線、ポイントツーポイント接続、ブリッジ、アダプタ、コントローラ、もしくは他の回路、またはこれらの組み合わせを含むことができる。バスは例えば、システムバス、ペリフェラルコンポーネントインターコネクト(PCI)バス、ハイパートランスポートもしくはインダストリスタンダードアーキテクチャ(ISA)バス、スモールコンピュータシステムインタフェース(SCSI)バス、ユニバーサルシリアルバス(USB)、または米国電気電子学会(IEEE)規格1394バスのうちの1または複数を含むことができる。
【0091】
一例において、システム900はインタフェース914を含み、インタフェース914はインタフェース912に結合され得る。インタフェース914は、インタフェース912より低速なインタフェースであり得る。一例において、インタフェース914は、スタンドアロンコンポーネントと集積回路とを含み得るインタフェース回路を表す。一例では、複数のユーザインタフェースコンポーネントもしくはペリフェラルコンポーネントまたはその両方がインタフェース914に結合する。ネットワークインタフェース950は、1または複数のネットワーク経由でリモートデバイス(例えばサーバまたは他のコンピューティングデバイス)と通信する能力をシステム900に提供する。ネットワークインタフェース950は、イーサネット(登録商標)アダプタ、無線相互接続コンポーネント、セルラネットワーク相互接続コンポーネント、USB(ユニバーサルシリアルバス)、または他の有線または無線の標準ベースのインタフェースもしくはプロプライエタリインタフェースを含むことができる。ネットワークインタフェース950はリモートデバイスとデータを交換することができ、この交換は、メモリに記憶されるデータの送信またはメモリに記憶されるデータの受信を含むことができる。
【0092】
一例において、システム900は1または複数の入出力(I/O)インタフェース960を含む。I/Oインタフェース960は、ユーザがシステム900と対話する際に用いる1または複数のインタフェースコンポーネント(例えばオーディオ、英数字、触覚/タッチ、または他のインタフェース接続)を含むことができる。周辺インタフェース970は、具体的には上述されていない任意のハードウェアインタフェースを含むことができる。周辺機器は概して、システム900に依存して接続するデバイスを指す。依存接続とは、動作が実行され、かつ、ユーザが対話する際に用いる、ソフトウェアプラットフォームもしくはハードウェアプラットフォームまたはその両方をシステム900が提供するような接続である。
【0093】
一例において、システム900は、不揮発的にデータを記憶するための記憶サブシステム980を含む。一例では、特定のシステム実装において、記憶サブシステム980の少なくとも特定のコンポーネントが、メモリサブシステム920のコンポーネントと重複することができる。記憶サブシステム980は記憶デバイス984を含み、記憶デバイス984は、1または複数の磁気ディスク、ソリッドステートディスク、もしくは光ベースのディスク、またはこれらの組み合わせなど、大量のデータを不揮発的に記憶するための任意の従来の媒体であってもよいし、それを含んでもよい。記憶デバイス984は、コードまたは命令およびデータ986を永続的な状態で保持する(すなわち、システム900への電力の遮断にもかかわらず値が保持される)。記憶デバイス984は一般的に「メモリ」と見なされ得るが、メモリ930は通常、プロセッサ910に命令を提供するための実行メモリまたはオペレーティングメモリである。記憶デバイス984は不揮発性であるが、メモリ930は、揮発性メモリ(すなわち、システム900への電力が遮断された場合にデータの値または状態が不確定になる)を含むことができる。一例において、記憶サブシステム980は、記憶デバイス984とインタフェース接続するためのコントローラ982を含む。一例において、コントローラ982は、インタフェース914またはプロセッサ910の物理的部分であるか、またはプロセッサ910およびインタフェース914の両方に回路またはロジックを含むことができる。
【0094】
電源902はシステム900のコンポーネントに電力を提供する。より具体的には、電源902は通常、システム900内の1または複数の電力供給装置904にインタフェース接続して、システム900のコンポーネントに電力を提供する。一例において、電力供給装置904は、壁のコンセントに差し込むためのAC-DC(交流から直流)アダプタを含む。係るAC電力は、再生可能エネルギー(例えば太陽光発電)電源902であり得る。一例において、電源902は、外部AC-DC変換器などのDC電源を含む。一例において、電源902または電力供給装置904は、充電磁場への接近によって充電するための無線充電ハードウェアを含む。一例において、電源902は内部バッテリまたは燃料電池ソースを含むことができる。
【0095】
一例において、メモリサブシステム920はCAトレーニングロジック990を含む。CAトレーニングロジック990は、CAトレーニングモードまたはコマンドバストレーニングモードをトリガし、かつ、CA信号線をトレーニングすべく信号を送信するためのロジックをメモリコントローラ922に含んでよい。メモリ930は、CA信号線上で駆動されるCAパターンに応答してフィードバックを提供するためのロジックを含んでよい。CAトレーニングモードにおいて、メモリ930は、圧縮されるサンプリング済みの値、または、CA信号線上で駆動される所与のCAパターンに応答してサンプリングされる完全なCAパターンを示してよい。CAトレーニングは、本明細書に記載の任意の例に従ったものであってよい。
【0096】
図10は例示的なデバイス1000を示す。いくつかの例において、デバイス1000は、メモリシステムがCAトレーニングモードを実装し得るモバイルデバイスであってよい。デバイス1000は、コンピューティングタブレット、モバイルフォンもしくはスマートフォン、無線対応の電子書籍リーダ、ウェアラブルコンピューティングデバイス、モノのインターネットデバイス、もしくは他のモバイルデバイス、または組み込みコンピューティングデバイスなどのモバイルコンピューティングデバイスを表す。これらのコンポーネントのうちのいくつかが大まかに示されており、係るデバイスの全てのコンポーネントがデバイス1000に示されているわけではないことが解るだろう。
【0097】
デバイス1000はプロセッサ1010を含み、プロセッサ1010はデバイス1000の主要な処理動作を実行する。プロセッサ1010は、マイクロプロセッサ、アプリケーションプロセッサ、マイクロコントローラ、プログラム可能な論理デバイス、または他の処理手段などの1または複数の物理的デバイスを含むことができる。プロセッサ1010により実行される処理動作は、アプリケーションおよびデバイス機能が実行されるオペレーティングプラットフォームまたはオペレーティングシステムの実行を含む。処理動作は、人間のユーザまたは他のデバイスとのI/O(入出力)に関連する動作、電力管理に関連する動作、デバイス1000を別のデバイスに接続することに関連する動作、またはこれらの組み合わせを含む。処理動作は、オーディオI/O、表示I/Oもしくは他のインタフェース接続、またはこれらの組み合わせに関連する動作を含むこともできる。プロセッサ1010は、メモリに記憶されるデータを実行することができる。プロセッサ1010は、メモリに記憶されるデータを書き込むまたは編集することができる。
【0098】
一例において、デバイス1000は1または複数のセンサ1012を含む。センサ1012は、組み込みセンサ、もしくは外部センサへのインタフェース、またはこれらの組み合わせを表す。センサ1012によって、デバイス1000は、デバイス1000が実装される環境またはデバイスの1または複数の状態を監視または検出することができる。センサ1012は、環境センサ(温度センサ、動き検出器、光検出器、カメラ、化学センサ(例えば一酸化炭素センサ、二酸化炭素センサ、または他の化学センサ)など)、圧力センサ、加速度計、ジャイロスコープ、医療センサもしくは生理学センサ(例えばバイオセンサ、心拍数モニタ、または生理学的属性を検出する他のセンサ)、もしくは他のセンサ、またはこれらの組み合わせを含むことができる。センサ1012は、指紋認識システム、顔検出システムもしくは顔認識システム、またはユーザの特徴を検出または認識する他のシステムなどの生体認証システム用のセンサを含むこともできる。センサ1012は広範に理解されるべきであり、デバイス1000で実装され得る多くの異なるタイプのセンサに対して制限を課すものではない。一例では、1または複数のセンサ1012が、プロセッサ1010と統合されるフロントエンド回路を介してプロセッサ1010に結合する。一例では、1または複数のセンサ1012が、デバイス1000の別のコンポーネントを介してプロセッサ1010に結合する。
【0099】
一例において、デバイス1000はオーディオサブシステム1020を含み、オーディオサブシステム1020は、コンピューティングデバイスにオーディオ機能を提供することと関連付けられるハードウェア(例えばオーディオハードウェアおよびオーディオ回路)コンポーネントおよびソフトウェア(例えばドライバ、コーデック)コンポーネントを表す。オーディオ機能は、スピーカ出力またはヘッドフォン出力とマイク入力とを含むことができる。係る機能のためのデバイスは、デバイス1000に統合され得るか、またはデバイス1000に接続され得る。一例において、ユーザは、プロセッサ1010により受信および処理されるオーディオコマンドを提供することによってデバイス1000と対話する。
【0100】
表示サブシステム1030は、ユーザに提示するための視覚表示を提供するハードウェアコンポーネント(例えば表示デバイス)およびソフトウェアコンポーネント(例えばドライバ)を表す。一例において、ディスプレイは、ユーザがコンピューティングデバイスと対話するための触覚コンポーネントまたはタッチスクリーン要素を含む。表示サブシステム1030は表示インタフェース1032を含み、表示インタフェース1032は、ユーザに表示を提供するために使用される特定のスクリーンまたはハードウェアデバイスを含む。一例において、表示インタフェース1032は、表示に関連する少なくとも何らかの処理を実行するための、プロセッサ1010(グラフィックスプロセッサなど)とは別個のロジックを含む。一例において、表示サブシステム1030は、ユーザに出力および入力の両方を提供するタッチスクリーンデバイスを含む。一例において、表示サブシステム1030は、ユーザに出力を提供する高精細度(HD)ディスプレイを含む。高精細度は、画素密度がほぼ100PPI(インチあたりの画素)以上のディスプレイを指すことができ、フルHD(例えば1080p)、網膜ディスプレイ、または4K(超高精細度またはUHD)などといったフォーマットを含むことができる。一例において、表示サブシステムはタッチスクリーンディスプレイを含む。一例において、表示サブシステム1030は、メモリに記憶されるデータもしくはプロセッサ1010により実行される動作またはその両方に基づいて表示情報を生成する。
【0101】
I/Oコントローラ1040は、ユーザとの対話に関連するハードウェアデバイスおよびソフトウェアコンポーネントを表す。I/Oコントローラ1040は、オーディオサブシステム1020もしくは表示サブシステム1030またはその両方の一部であるハードウェアを管理するように動作することができる。更に、I/Oコントローラ1040は、ユーザがシステムと対話し得る際に用いるデバイス1000に接続する更なるデバイスのための接続ポイントを示す。例えば、デバイス1000に取り付けられ得るデバイスは、マイクデバイス、スピーカシステムもしくはステレオシステム、ビデオシステムもしくは他の表示デバイス、キーボードデバイスもしくはキーパッドデバイス、または、カードリーダまたは他のデバイスなどの特定のアプリケーションと使用するための他のI/Oデバイスを含んでよい。
【0102】
上述したように、I/Oコントローラ1040は、オーディオサブシステム1020もしくは表示サブシステム1030またはその両方と対話することができる。例えば、マイクまたは他のオーディオデバイスを通じた入力によって、デバイス1000の1または複数のアプリケーションまたは機能に対する入力またはコマンドが提供され得る。更には、表示出力の代わりにまたは表示出力に加えてオーディオ出力が提供され得る。別の例において、表示サブシステムがタッチスクリーンを含む場合は、表示デバイスは、I/Oコントローラ1040により少なくとも部分的に管理され得る入力デバイスとしても機能する。デバイス1000上には、I/Oコントローラ1040により管理されるI/O機能を提供するための更なるボタンまたはスイッチがあってもよい。
【0103】
一例において、I/Oコントローラ1040は、加速度計、カメラ、光センサもしくは他の環境センサ、ジャイロスコープ、グローバルポジショニングシステム(GPS)、またはデバイス1000に含まれ得る他のハードウェア、またはセンサ1012などのデバイスを管理する。入力は、直接的なユーザとの対話処理の一部であり得ると同時に、システムに対してその動作に影響を及ぼすための環境入力(ノイズのフィルタリング、輝度検出に関するディスプレイの調整、カメラに対するフラッシュの適用、または他の機能など)を提供することでもあり得る。
【0104】
一例において、デバイス1000は、バッテリ電力使用量と、バッテリの充電と、省電力動作に関連する機能とを管理する電力管理1050を含む。電力管理1050は、デバイス1000のコンポーネントに電力を提供する電源1052からの電力を管理する。一例において、電源1052は、壁のコンセントに差し込むためのAC-DC(交流から直流)アダプタを含む。係るAC電力は、再生可能エネルギー(例えば太陽光発電、動きに基づく電力)であり得る。一例において、電源1052は、外部AC-DC変換器などのDC電源により提供され得るDC電力のみを含む。一例において、電源1052は、充電磁場への接近によって充電するための無線充電ハードウェアを含む。一例において、電源1052は内部バッテリまたは燃料電池ソースを含むことができる。
【0105】
メモリサブシステム1060は、デバイス1000に情報を記憶するためのメモリデバイス1062を含む。メモリサブシステム1060は、不揮発性(メモリデバイスへの電力が遮断された場合に状態が変化しない)メモリデバイスもしくは揮発性(メモリデバイスへの電力が遮断された場合に状態が不確定になる)メモリデバイスまたはこれらの組み合わせを含むことができる。メモリサブシステム1060は、アプリケーションデータ、ユーザデータ、音楽、写真、文書、または他のデータ、並びに、デバイス1000のアプリケーションおよび機能の実行に関連するシステムデータ(長期的なものであるか一時的なものであるかにかかわらず)を記憶することができる。一例において、メモリサブシステム1060は、メモリコントローラ1064(デバイス1000の制御の一部と見なされてもよく、潜在的にプロセッサ1010の一部と見なされ得る)を含む。メモリコントローラ1064は、メモリデバイス1062へのアクセスを制御するコマンドを生成および発行するためのスケジューラを含む。
【0106】
接続機能1070は、デバイス1000が外部デバイスと通信できるようにするためのハードウェアデバイス(例えば、無線コネクタもしくは有線コネクタおよび通信ハードウェア、または有線ハードウェアと無線ハードウェアとの組み合わせ)およびソフトウェアコンポーネント(例えばドライバ、プロトコルスタック)を含む。外部デバイスは、他のコンピューティングデバイス、無線アクセスポイント、または基地局、および、ヘッドセット、プリンタ、または他のデバイスなどの周辺機器といった別個のデバイスであり得る。一例において、デバイス1000は、メモリへの記憶または表示デバイスでの表示のために、外部デバイスとデータを交換する。交換されるデータは、データの読み取り、書き込み、または編集を行うべく、メモリに記憶されるデータ、または既にメモリに記憶されているデータを含むことができる。
【0107】
接続機能1070は複数の異なるタイプの接続機能を含むことができる。一般化すべく、デバイス1000はセルラ接続機能1072および無線接続機能1074と共に示されている。セルラ接続機能1072は概して、GSM(登録商標)(グローバルシステムフォーモバイルコミュニケーションズ)もしくはその変形物もしくは派生物、CDMA(符号分割多元接続)もしくはその変形物もしくは派生物、TDM(時分割多重化)もしくはその変形物もしくは派生物、LTE(ロングタームエボリューション、「4G」とも呼ばれる)、または他のセルラサービス規格を介して提供されるなど、無線キャリアにより提供されるセルラネットワーク接続機能を指す。無線接続機能1074は、セルラではない無線接続機能を指し、パーソナルエリアネットワーク(Bluetooth(登録商標)など)、ローカルエリアネットワーク(WiFi(登録商標)など)、ワイドエリアネットワーク(WiMax(登録商標)など)、もしくは他の無線通信、またはこれらの組み合わせを含むことができる。無線通信は、非固体媒体を通じた変調電磁放射の使用によるデータの転送を指す。有線通信は固体通信媒体を通じて行われる。
【0108】
周辺接続1080は、ハードウェアインタフェースおよびコネクタと、周辺接続を行うためのソフトウェアコンポーネント(例えばドライバ、プロトコルスタック)とを含む。デバイス1000は、他のコンピューティングデバイスに対する周辺デバイス(「~へ」1082)であり得ると同時に、そこに接続される周辺デバイス(「~から」1084)を有し得ることが解るだろう。デバイス1000は一般に、デバイス1000上のコンテンツの管理(例えばダウンロード、アップロード、変更、同期)などを目的として他のコンピューティングデバイスに接続するための「ドッキング」コネクタを有する。更に、ドッキングコネクタは、例えば視聴覚システムまたは他のシステムへのコンテンツ出力をデバイス1000が制御できるようにする特定の周辺機器に、デバイス1000が接続することを可能にし得る。
【0109】
プロプライエタリドッキングコネクタまたは他のプロプライエタリ接続ハードウェアに加えて、デバイス1000は、一般的なコネクタまたは標準ベースのコネクタを介して周辺接続1080を行うことができる。一般的なタイプは、ユニバーサルシリアルバス(USB)コネクタ(複数の異なるハードウェアインタフェースのいずれかを含み得る)、MiniDisplayPort(MDP)を含むDisplayPort、高精細度マルチメディアインタフェース(HDMI(登録商標))、ファイヤワイヤ、または他のタイプを含むことができる。
【0110】
一例において、メモリサブシステム1060はCAトレーニングロジック1090を含む。CAトレーニングロジック1090は、CAトレーニングモードまたはコマンドバストレーニングモードをトリガし、かつ、CA信号線をトレーニングすべく信号を送信するためのロジックをメモリコントローラ1064に含んでよい。メモリ1162は、CA信号線上で駆動されるCAパターンに応答してフィードバックを提供するためのロジックを含んでよい。CAトレーニングモードにおいて、メモリ1162は、圧縮されるサンプリング済みの値、または、CA信号線上で駆動される所与のCAパターンに応答してサンプリングされる完全なCAパターンを示してよい。CAトレーニングモードは本明細書に記載の任意の例に従ったものであってよい。
【0111】
少なくとも1つの例の1または複数の態様が、プロセッサ内の様々なロジックを表す少なくとも1つの機械可読媒体に記憶される代表的な命令により実装されてよく、これらの命令は、機械、コンピューティングデバイス、またはシステムにより読み取られると、当該機械、当該コンピューティングデバイス、または当該システムに、本明細書に記載の技術を実行するためのロジックを作成させる。係る表現は「IPコア」として知られ、IPブロックと同様であってよい。IPコアは有形の機械可読媒体に記憶され、様々な顧客または製造施設に供給されて、実際にロジックまたはプロセッサを作る製造機械にロードされてよい。
【0112】
ハードウェア要素、ソフトウェア要素、またはその両方の組み合わせを使用して、様々な例が実装されてよい。いくつかの例において、ハードウェア要素は、デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、回路要素(例えばトランジスタ、抵抗器、コンデンサ、およびインダクタなど)、集積回路、ASIC、PLD、DSP、FPGA、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、およびチップセットなどを含んでよい。いくつかの例において、ソフトウェア要素は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、機能、方法、手順、ソフトウェアインタフェース、API、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはこれらの任意の組み合わせを含んでよい。ハードウェア要素および/またはソフトウェア要素を使用して例が実装されるかどうかを判断することは、所望の計算速度、電力レベル、耐熱性、処理サイクルの予算、入力データレート、出力データレート、メモリリソース、データバス速度、および、所与の実装に所望される設計上または性能上の他の制約など、任意の数の要因に従って変化し得る。
【0113】
いくつかの例は、製品または少なくとも1つのコンピュータ可読媒体を含み得る。コンピュータ可読媒体は、ロジックを記憶するための非一時的記憶媒体を含んでよい。いくつかの例において、非一時的記憶媒体は、揮発性メモリまたは不揮発性メモリ、取り外し可能または取り外し不可能なメモリ、消去可能または消去不可能なメモリ、および書き込み可能または書き換え可能なメモリなどを含む、電子データを記憶できる1または複数のタイプのコンピュータ可読記憶媒体を含んでよい。いくつかの例において、ロジックは、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、機能、方法、手順、ソフトウェアインタフェース、API、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはこれらの任意の組み合わせなどの様々なソフトウェア要素を含んでよい。
【0114】
いくつかの例によれば、コンピュータ可読媒体は、命令を記憶または維持するための非一時的記憶媒体を含んでよく、命令は、機械、コンピューティングデバイス、またはシステムにより実行されると、当該機械、当該コンピューティングデバイス、または当該システムに、説明されている例に係る方法および/または動作を実行させる。命令は、ソースコード、コンパイル済みのコード、解釈済みのコード、実行可能なコード、静的コード、および動的コードなどといった任意の適切なタイプのコードを含んでよい。命令は、機械、コンピューティングデバイス、またはシステムに特定の機能を実行するように命令するための事前定義されたコンピュータ言語、方式、または構文に従って実装されてよい。命令は、任意の適切な高レベル、低レベル、オブジェクト指向、視覚的、コンパイル済み、および/または解釈済みのプログラミング言語を使用して実装されてよい。
【0115】
いくつかの例は、「一例では(in one example)」または「例(an example)」という表現と共にその派生語を使用して説明されてよい。これらの用語は、例との関連で説明する特定の特徴、構造、または特性が少なくとも1つの例に含まれることを意味する。本明細書の様々な箇所における「一例では」という言い回しの出現は、必ずしも全てが同じ例を指しているとは限らない。
【0116】
いくつかの例は、「結合され(coupled)」または「接続され(connected)」という表現と共にその派生語を使用して説明されてよい。これらの用語は、必ずしも互いの同義語として意図されているとは限らない。例えば、「接続され」および/または「結合され」という用語を使用した説明は、2またはそれより多くの要素が互いに直接物理的または電気的に接触していることを示してよい。ただし、「結合され」または「~と結合され」という用語は、2またはそれより多くの要素が互いに直接接触してはいないが、それでもなお互いに協働または対話することを意味してもよい。
【0117】
様々な動作または機能が本明細書で説明される限りにおいて、これらの動作または機能は、ソフトウェアコード、命令、構成、および/またはデータとして説明または定義され得る。コンテンツは、直接実行可能な(「オブジェクト」または「実行可能な」形態)、ソースコード、または差分コード(「デルタ」または「パッチ」コード)であり得る。本明細書に記載のソフトウェアコンテンツは、コンテンツが記憶されている製品を介して、または、通信インタフェース経由でデータを送信するための当該通信インタフェースを動作させる方法を介して提供され得る。機械可読記憶媒体は、説明されている機能または動作を機械に実行させることができ、記録可能/記録不可能な媒体(例えばリードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイスなど)などの、機械(例えばコンピューティングデバイス、電子システムなど)によりアクセス可能な形態で情報を記憶する任意の機構を含む。通信インタフェースは、メモリバスインタフェース、プロセッサバスインタフェース、インターネット接続、ディスクコントローラなどといった、別のデバイスに通信するためのハードワイヤード媒体、無線媒体、光学式媒体などの媒体のいずれかにインタフェース接続する任意の機構を含む。通信インタフェースは、構成パラメータを提供すること、および/または、通信インタフェースに、ソフトウェアコンテンツを記述するデータ信号を提供する準備をさせるための信号を送信することにより構成され得る。通信インタフェースは、通信インタフェースに送信される1または複数のコマンドまたは信号を介してアクセスされ得る。
【0118】
以下の例は、本明細書で開示する技術の更なる例に関する。
【0119】
[例1] 例示的なメモリコントローラが、メモリデバイスを第1コマンドバストレーニングモードまたは第2コマンドバストレーニングモードのうちの一方に移行するようにトリガしてメモリデバイスのCAインタフェースをトレーニングする第1コマンドを生成するためのコマンドロジックを含んでよい。メモリコントローラは、メモリデバイスのCAインタフェースと結合されるコマンドバスを介してCAパターンが出力されるようにするためのI/Oトレーニング回路を含んでもよい。I/Oトレーニング回路は、メモリデバイスのDQインタフェースと結合されるデータバスを介してメモリデバイスから受信されるサンプリング済みのCAパターンを圧縮して、第1コマンドバストレーニングモードにあるメモリデバイスに基づいて第1圧縮値を生成し、コマンドロジックに第1圧縮値を転送してもよい。代替的に、I/Oトレーニング回路は、データバスを介してメモリデバイスから受信される第2圧縮値を転送してよい。第2圧縮値は、第2コマンドバストレーニングモードにあるメモリデバイスに基づいてメモリデバイスで圧縮されるサンプリング済みのCAパターンを表してよい。
【0120】
[例2] 例1のメモリコントローラは、第1圧縮値または第2圧縮値を使用して、コマンドバスを介して送信されるCAパターンがサンプリング済みのCAパターンと一致するかどうかを判断するためのコマンドロジックを含んでもよい。コマンドロジックは、送信されるCAパターンがサンプリング済みのCAパターンと一致しない場合に、メモリデバイスのCAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整してもよい。
【0121】
[例3] 例1のメモリコントローラは、コマンドバスに含まれる偶数個の信号線を介して出力されるCAパターンを生成するためのI/Oトレーニング回路を含んでもよい。第1圧縮値または第2圧縮値は、偶数個の信号線を介して送信される、サンプリング済みのCAパターンと一致するCAパターンに基づく0の偶数パリティ値である。
【0122】
[例4] 第2コマンドバストレーニングモードはCATMであり、メモリデバイスは、ダブルデータレート規格と互換性があるSDRAMデバイスである、例3のメモリコントローラ。SDRAMデバイスは、サンプリング済みのCAパターンから0の偶数パリティ値を生成し、かつ、データバスを介してサンプリング済みのCAパターンに関する0の偶数パリティ値を示すための回路を有してよい。
【0123】
[例5] 第1コマンドバストレーニングモードはCBTモードであり、メモリデバイスは、ダブルデータレート規格と互換性があるSDRAMデバイスであってよい、例3のメモリコントローラ。I/Oトレーニング回路は、SDRAMデバイスから受信されるサンプリング済みのCAパターンから0の偶数パリティ値を生成するための1または複数のXORゲートを含んでよい。
【0124】
[例6] 第1コマンドバストレーニングモードはCBTモードである、例1のメモリコントローラ。メモリデバイスは、ダブルデータレート規格と互換性があるSDRAMデバイスであってよい。I/Oトレーニング回路は、SDRAMデバイスから受信されるサンプリング済みのCAパターンからCRC値を計算して、第1圧縮値を生成し、コマンドロジックにCRC値を転送するための回路を含んでよい。コマンドロジックは、CRC値を使用して、コマンドバスを介して送信されるCAパターンがサンプリング済みのCAパターンと一致するかどうかを判断し、CAパターンがサンプリング済みのCAパターンと一致しないと判断された場合に、メモリデバイスのCAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整してよい。
【0125】
[例7] 第1コマンドバストレーニングモードはCBTモードである、例1のメモリコントローラ。メモリデバイスは、ダブルデータレート規格と互換性があるSDRAMデバイスであってよい。I/Oトレーニング回路は、SDRAMデバイスから受信されるサンプリング済みのCAパターンから署名値を生成して、第1圧縮値を生成し、コマンドロジックに署名値を転送するための多入力シフトレジスタを含んでよい。コマンドロジックは、署名値を使用して、コマンドバスを介して送信されるCAパターンがサンプリング済みのCAパターンと一致するかどうかを判断し、CAパターンがサンプリング済みのCAパターンと一致しないと判断された場合に、メモリデバイスのCAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整してよい。
【0126】
[例8] コマンドバスを介して出力されるCAパターンは、第1コマンドバストレーニングモードおよび第2コマンドバストレーニングモードのために実装され得る同じCAトレーニングアルゴリズムに基づいて生成されるCAパターンを含んでよい、例1のメモリコントローラ。
【0127】
[例9] 例示的なシステムが、CAインタフェースとDQインタフェースとを有するメモリデバイスを含んでよい。システムは、CAインタフェースと結合されるコマンドバスと、DQインタフェースと結合されるデータバスと、コマンドバスおよびデータバスと結合されるメモリコントローラとを含んでもよい。メモリコントローラは、メモリデバイスを第1コマンドバストレーニングモードまたは第2コマンドバストレーニングモードのうちの一方に移行するようにトリガしてCAインタフェースをトレーニングする第1コマンドを生成するためのコマンドロジックを含んでよい。メモリコントローラは、コマンドバスを介してCAパターンが出力されるようにするためのI/Oトレーニング回路を含んでもよい。I/Oトレーニング回路は、データバスを介してメモリデバイスから受信されるサンプリング済みのCAパターンを圧縮して、第1コマンドバストレーニングモードにあるメモリデバイスに基づいて第1圧縮値を生成し、コマンドロジックに第1圧縮値を転送してもよい。代替的に、I/Oトレーニング回路は、データバスを介してメモリデバイスから受信される第2圧縮値を転送してよい。第2圧縮値は、第2コマンドバストレーニングモードにあるメモリデバイスに基づいてメモリデバイスで圧縮されるサンプリング済みのCAパターンを表してよい。
【0128】
[例10] コマンドロジックは、第1圧縮値または第2圧縮値を使用して、コマンドバスを介して送信されるCAパターンがサンプリング済みのCAパターンと一致するかどうかを判断するためのものである、例9のシステム。コマンドロジックは、送信されるCAパターンがサンプリング済みのCAパターンと一致しない場合に、メモリデバイスのCAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整するためのものでもある。
【0129】
[例11] I/Oトレーニング回路は、コマンドバスに含まれる偶数個の信号線を介して出力されるCAパターンを生成するためのものである、例9のシステム。第1圧縮値または第2圧縮値は、偶数個の信号線を介して送信される、サンプリング済みのCAパターンと一致するCAパターンに基づく0の偶数パリティ値であってよい。
【0130】
[例12] 第2コマンドバストレーニングモードはCATMであってよい、例11のシステム。メモリデバイスは、ダブルデータレート規格と互換性があるSDRAMデバイスであってよい。SDRAMデバイスは、サンプリング済みのCAパターンから0の偶数パリティ値を生成し、かつ、データバスを介してサンプリング済みのCAパターンに関する0の偶数パリティ値を示すための回路を有してよい。
【0131】
[例13] 第1コマンドバストレーニングモードはCBTモードであってよい、例11のシステム。メモリデバイスは、ダブルデータレート規格と互換性があるSDRAMデバイスであってよい。I/Oトレーニング回路は、SDRAMデバイスから受信されるサンプリング済みのCAパターンから0の偶数パリティ値を生成するための1または複数の排他的XORゲートを含んでよい。
【0132】
[例14] 第1コマンドバストレーニングモードはCBTモードであってよい、例9のシステム。メモリデバイスは、ダブルデータレート規格と互換性があるSDRAMデバイスであってよい。I/Oトレーニング回路は、SDRAMデバイスから受信されるサンプリング済みのCAパターンからCRC値を計算して、第1圧縮値を生成し、コマンドロジックにCRC値を転送するための回路を含んでよい。コマンドロジックは、CRC値を使用して、コマンドバスを介して送信されるCAパターンがサンプリング済みのCAパターンと一致するかどうかを判断し、CAパターンがサンプリング済みのCAパターンと一致しないと判断された場合に、メモリデバイスのCAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整してよい。
【0133】
[例15] 第1コマンドバストレーニングモードはCBTモードであってよい、例9のシステム。メモリデバイスは、ダブルデータレート規格と互換性があるSDRAMデバイスであってよい。I/Oトレーニング回路は、SDRAMデバイスから受信されるサンプリング済みのCAパターンから署名値を生成して、第1圧縮値を生成し、コマンドロジックに署名値を転送するための多入力シフトレジスタを含んでよい。コマンドロジックは、署名値を使用して、コマンドバスを介して送信されるCAパターンがサンプリング済みのCAパターンと一致するかどうかを判断してよい。コマンドロジックは、CAパターンがサンプリング済みのCAパターンと一致しないと判断された場合に、メモリデバイスのCAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整してもよい。
【0134】
[例16] コマンドバスを介して出力されるCAパターンは、第1コマンドバストレーニングモードおよび第2コマンドバストレーニングモードのために実装され得る同じCAトレーニングアルゴリズムに基づいて生成されるCAパターンを含んでよい、例9のシステム。
【0135】
[例17] 例示的な方法が、メモリコントローラにおいてメモリデバイスを第1コマンドバストレーニングモードまたは第2コマンドバストレーニングモードのうちの一方に移行するようにトリガしてメモリデバイスのCAインタフェースをトレーニングする第1コマンドを生成する段階を含んでよい。方法は、メモリデバイスのCAインタフェースと結合されるコマンドバスを介してCAパターンが出力されるようにする段階を含んでもよい。これらの例の場合は、メモリデバイスが第1コマンドバストレーニングモードまたは第2コマンドバストレーニングモードのどちらにあるようにトリガされたかに応じて、方法は、第1コマンドバストレーニングモードにあるメモリデバイスに基づいてメモリデバイスのDQインタフェースと結合されるデータバスを介してメモリデバイスからサンプリング済みのCAパターンを受信し、受信されるサンプリング済みのCAパターンを圧縮して第1圧縮値を生成する段階を含んでもよいし、データバスを介してメモリデバイスから受信される第2圧縮値を受信する段階であって、第2圧縮値は、第2コマンドバストレーニングモードにあるメモリデバイスに基づいてメモリデバイスで圧縮されるサンプリング済みのCAパターンを表す、段階を含んでもよい。 方法は、第1圧縮値または第2圧縮値を使用して、コマンドバスを介して送信されるCAパターンがサンプリング済みのCAパターンと一致するかどうかを判断する段階を含んでもよい。方法は、送信されるCAパターンがサンプリング済みのCAパターンと一致しない場合に、メモリデバイスのCAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整する段階を含んでもよい。
【0136】
[例18] 例17の方法は、コマンドバスに含まれる偶数個の信号線を介して出力されるCAパターンを生成する段階を含んでもよい。方法は、第1圧縮値または第2圧縮値が、偶数個の信号線を介して送信される、サンプリング済みのCAパターンと一致しないCAパターンに基づく1の奇数パリティ値であることを含んでもよい。
【0137】
[例19] 第2コマンドバストレーニングモードはCATMである、例18の方法。メモリデバイスは、ダブルデータレート規格と互換性があるSDRAMデバイスであってよい。SDRAMデバイスは、サンプリング済みのCAパターンから1の奇数パリティ値を生成し、かつ、データバスを介してサンプリング済みのCAパターンに関する1の奇数パリティ値を示すための回路を有してよい。
【0138】
[例20] 第1コマンドバストレーニングモードはCBTモードであってよい、例18の方法。メモリデバイスは、ダブルデータレート規格と互換性があるSDRAMデバイスであってよい。方法は、メモリコントローラにおいて1または複数のXORゲートを使用して、SDRAMデバイスから受信されるサンプリング済みのCAパターンから1の奇数パリティ値を生成する段階を含んでもよい。
【0139】
[例21] 第1コマンドバストレーニングモードはCBTモードであり、メモリデバイスは、ダブルデータレート規格と互換性があるSDRAMデバイスであってよい、例17の方法。方法は、SDRAMデバイスから受信されるサンプリング済みのCAパターンからCRC値を計算して第1圧縮値を生成する段階を含んでもよい。方法は、CRC値を使用して、コマンドバスを介して送信されるCAパターンがサンプリング済みのCAパターンと一致するかどうかを判断する段階を含んでもよい。
【0140】
[例22] 第1コマンドバストレーニングモードはCBTモードであってよく、メモリデバイスは、ダブルデータレート規格と互換性があるSDRAMデバイスであってよい、例17の方法。方法は、SDRAMデバイスから受信されるサンプリング済みのCAパターンから署名値を生成して第1圧縮値を生成する段階を含んでもよい。方法は、署名値を使用して、コマンドバスを介して送信されるCAパターンがサンプリング済みのCAパターンと一致するかどうかを判断する段階を含んでもよい。
【0141】
[例23] コマンドバスを介して出力されるCAパターンは、第1コマンドバストレーニングモードおよび第2コマンドバストレーニングモードのために実装され得る同じCAトレーニングアルゴリズムに基づいて生成されるCAパターンを含んでよい、例17の方法。
【0142】
[例24] 少なくとも1つの例示的な機械可読媒体は、システムによる実行に応答して例17から23のいずれか1つに記載の方法をシステムに実行させ得る複数の命令を含んでよい。
【0143】
[例25] 例示的な装置が、例17から23のいずれか1つに記載の方法を実行するための手段を含んでよい。
【0144】
開示の要約は、連邦規則法典集第37巻に準拠するように提供されていることを強調する。1.72(b)章では、読者が技術的開示の本質を迅速に確認できるようにする要約書が要求されている。要約書は、それが特許請求の範囲または意味を解釈または限定するのに使用されることはないという理解のもとで提出されている。加えて、上記の詳細な説明では、開示の簡素化を目的として様々な特徴が単一の例にまとめられていることが分かる。この開示方法は、特許請求されている例が各請求項に明示的に記載されているよりも多くの特徴を必要とするという意図を反映していると解釈されるべきではない。むしろ、以下の特許請求の範囲が反映するように、発明の主題は、単一の開示されている例の全ての特徴よりも少ないことにある。故に、以下の特許請求の範囲はこれにより詳細な説明に組み込まれ、各請求項は別個の例として自立している。添付した特許請求の範囲において、「含む(including)」および「ここで(in which)」という用語は、「含む(comprising)」および「ここで(wherein)」というそれぞれの用語の平易な英語と同義語としてそれぞれ使用されている。更に、「第1」、「第2」、および「第3」などの用語は、単なる符号として使用されているに過ぎず、これらのオブジェクトに対して数値的要件を課すことを意図しているわけではない。
【0145】
構造的特徴および/または方法論的行為に固有の言語で主題を説明してきたが、添付した特許請求の範囲で定義されている主題が必ずしも上記の特定の特徴または行為に限定されるとは限らないことを理解されたい。むしろ、上記の特定の特徴および行為は、特許請求の範囲を実装する例示的な形態として開示されている。 [他の考えられる項目]
(項目1)
メモリデバイスを第1コマンドバストレーニングモードまたは第2コマンドバストレーニングモードのうちの一方に移行するようにトリガして上記メモリデバイスのコマンド・アドレス(CA)インタフェースをトレーニングする第1コマンドを生成するためのコマンドロジックと、
上記メモリデバイスの上記CAインタフェースと結合されるコマンドバスを介してCAパターンが出力されるようにするための入出力(I/O)トレーニング回路と
を備えるメモリコントローラであって、
上記I/Oトレーニング回路は、
上記メモリデバイスのDQインタフェースと結合されるデータバスを介して上記メモリデバイスから受信されるサンプリング済みのCAパターンを圧縮して、上記第1コマンドバストレーニングモードにある上記メモリデバイスに基づいて第1圧縮値を生成し、上記コマンドロジックに上記第1圧縮値を転送すること、または、
上記データバスを介して上記メモリデバイスから受信される第2圧縮値を転送することであって、上記第2圧縮値は、上記第2コマンドバストレーニングモードにある上記メモリデバイスに基づいて上記メモリデバイスで圧縮される上記サンプリング済みのCAパターンを表す、転送すること
を行うためのものでもある、
メモリコントローラ。
(項目2)
上記コマンドロジックは更に、
上記第1圧縮値または上記第2圧縮値を使用して、上記コマンドバスを介して送信される上記CAパターンが上記サンプリング済みのCAパターンと一致するかどうかを判断し、
送信される上記CAパターンが上記サンプリング済みのCAパターンと一致しない場合に、上記メモリデバイスの上記CAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整する
ためのものである、
項目1に記載のメモリコントローラ。
(項目3)
上記I/Oトレーニング回路は、上記コマンドバスに含まれる偶数個の信号線を介して出力される上記CAパターンを生成するためのものであり、
上記第1圧縮値または上記第2圧縮値は、上記偶数個の信号線を介して送信される、上記サンプリング済みのCAパターンと一致する上記CAパターンに基づく0の偶数パリティ値である、
項目1に記載のメモリコントローラ。
(項目4)
上記第2コマンドバストレーニングモードはコマンドアドレストレーニングモード(CATM)であり、
上記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、上記SDRAMデバイスは、上記サンプリング済みのCAパターンから上記0の偶数パリティ値を生成し、かつ、上記データバスを介して上記サンプリング済みのCAパターンに関する上記0の偶数パリティ値を示すための回路を有する、
項目3に記載のメモリコントローラ。
(項目5)
上記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、
上記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、
上記I/Oトレーニング回路は、上記SDRAMデバイスから受信される上記サンプリング済みのCAパターンから上記0の偶数パリティ値を生成するための1または複数の排他的OR(XOR)ゲートを有する、
項目3に記載のメモリコントローラ。
(項目6)
上記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、
上記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、
上記I/Oトレーニング回路は、上記SDRAMデバイスから受信される上記サンプリング済みのCAパターンから巡回冗長検査(CRC)値を計算して、上記第1圧縮値を生成し、上記コマンドロジックに上記CRC値を転送するための回路を含み、
上記コマンドロジックは、
上記CRC値を使用して、上記コマンドバスを介して送信される上記CAパターンが上記サンプリング済みのCAパターンと一致するかどうかを判断し、
上記CAパターンが上記サンプリング済みのCAパターンと一致しないと判断された場合に、上記メモリデバイスの上記CAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整する
ためのものである、
項目1に記載のメモリコントローラ。
(項目7)
上記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、
上記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、
上記I/Oトレーニング回路は、上記SDRAMデバイスから受信される上記サンプリング済みのCAパターンから署名値を生成して、上記第1圧縮値を生成し、上記コマンドロジックに上記署名値を転送するための多入力シフトレジスタを有し、
上記コマンドロジックは、
上記署名値を使用して、上記コマンドバスを介して送信される上記CAパターンが上記サンプリング済みのCAパターンと一致するかどうかを判断し、
上記CAパターンが上記サンプリング済みのCAパターンと一致しないと判断された場合に、上記メモリデバイスの上記CAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整する
ためのものである、
項目1に記載のメモリコントローラ。
(項目8)
上記コマンドバスを介して出力される上記CAパターンは、上記第1コマンドバストレーニングモードおよび上記第2コマンドバストレーニングモードのために実装され得る同じCAトレーニングアルゴリズムに基づいて生成される上記CAパターンを含む、項目1に記載のメモリコントローラ。
(項目9)
コマンド・アドレス(CA)インタフェースとDQインタフェースとを有するメモリデバイスと、
上記CAインタフェースと結合されるコマンドバスと、
上記DQインタフェースと結合されるデータバスと、
上記コマンドバスおよび上記データバスと結合されるメモリコントローラと
を備えるシステムであって、
上記メモリコントローラは、
上記メモリデバイスを第1コマンドバストレーニングモードまたは第2コマンドバストレーニングモードのうちの一方に移行するようにトリガして上記CAインタフェースをトレーニングする第1コマンドを生成するためのコマンドロジックと、
上記コマンドバスを介してCAパターンが出力されるようにするための入出力(I/O)トレーニング回路と
を有し、
上記I/Oトレーニング回路は、
上記データバスを介して上記メモリデバイスから受信されるサンプリング済みのCAパターンを圧縮して、上記第1コマンドバストレーニングモードにある上記メモリデバイスに基づいて第1圧縮値を生成し、上記コマンドロジックに上記第1圧縮値を転送すること、または、
上記データバスを介して上記メモリデバイスから受信される第2圧縮値を転送することであって、上記第2圧縮値は、上記第2コマンドバストレーニングモードにある上記メモリデバイスに基づいて上記メモリデバイスで圧縮される上記サンプリング済みのCAパターンを表す、転送すること
を行うためのものでもある、
システム。
(項目10)
上記コマンドロジックは更に、
上記第1圧縮値または上記第2圧縮値を使用して、上記コマンドバスを介して送信される上記CAパターンが上記サンプリング済みのCAパターンと一致するかどうかを判断し、
送信される上記CAパターンが上記サンプリング済みのCAパターンと一致しない場合に、上記メモリデバイスの上記CAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整する
ためのものである、
項目9に記載のシステム。
(項目11)
上記I/Oトレーニング回路は、上記コマンドバスに含まれる偶数個の信号線を介して出力されるCAパターンを生成するためのものであり、
上記第1圧縮値または上記第2圧縮値は、上記偶数個の信号線を介して送信される、上記サンプリング済みのCAパターンと一致する上記CAパターンに基づく0の偶数パリティ値である、
項目9に記載のシステム。
(項目12)
上記第2コマンドバストレーニングモードはコマンドアドレストレーニングモード(CATM)であり、
上記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、上記SDRAMデバイスは、上記サンプリング済みのCAパターンから上記0の偶数パリティ値を生成し、かつ、上記データバスを介して上記サンプリング済みのCAパターンに関する上記0の偶数パリティ値を示すための回路を有する、
項目11に記載のシステム。
(項目13)
上記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、
上記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、
上記I/Oトレーニング回路は、上記SDRAMデバイスから受信される上記サンプリング済みのCAパターンから上記0の偶数パリティ値を生成するための1または複数の排他的OR(XOR)ゲートを含む、
項目11に記載のシステム。
(項目14)
上記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、
上記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、
上記I/Oトレーニング回路は、上記SDRAMデバイスから受信される上記サンプリング済みのCAパターンから巡回冗長検査(CRC)値を計算して、上記第1圧縮値を生成し、上記コマンドロジックに上記CRC値を転送するための回路を含み、
上記コマンドロジックは、
上記CRC値を使用して、上記コマンドバスを介して送信される上記CAパターンが上記サンプリング済みのCAパターンと一致するかどうかを判断し、
上記CAパターンが上記サンプリング済みのCAパターンと一致しないと判断された場合に、上記メモリデバイスの上記CAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整する
ためのものである、
項目9に記載のシステム。
(項目15)
上記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、
上記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、
上記I/Oトレーニング回路は、上記SDRAMデバイスから受信される上記サンプリング済みのCAパターンから署名値を生成して、上記第1圧縮値を生成し、上記コマンドロジックに上記署名値を転送するための多入力シフトレジスタを有し、
上記コマンドロジックは、
上記署名値を使用して、上記コマンドバスを介して送信される上記CAパターンが上記サンプリング済みのCAパターンと一致するかどうかを判断し、
上記CAパターンが上記サンプリング済みのCAパターンと一致しないと判断された場合に、上記メモリデバイスの上記CAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整する
ためのものである、
項目9に記載のシステム。
(項目16)
上記コマンドバスを介して出力される上記CAパターンは、上記第1コマンドバストレーニングモードおよび上記第2コマンドバストレーニングモードのために実装され得る同じCAトレーニングアルゴリズムに基づいて生成される上記CAパターンを含む、項目9に記載のシステム。
(項目17)
メモリコントローラにおいて、メモリデバイスを第1コマンドバストレーニングモードまたは第2コマンドバストレーニングモードのうちの一方に移行するようにトリガして上記メモリデバイスのコマンド・アドレス(CA)インタフェースをトレーニングする第1コマンドを生成する段階と、
上記メモリデバイスの上記CAインタフェースと結合されるコマンドバスを介してCAパターンが出力されるようにする段階であって、
上記メモリデバイスが上記第1コマンドバストレーニングモードまたは上記第2コマンドバストレーニングモードのどちらにあるようにトリガされたかに応じて、
上記第1コマンドバストレーニングモードにある上記メモリデバイスに基づいて上記メモリデバイスのDQインタフェースと結合されるデータバスを介して上記メモリデバイスからサンプリング済みのCAパターンを受信し、受信される上記サンプリング済みのCAパターンを圧縮して第1圧縮値を生成する段階、または、
上記データバスを介して上記メモリデバイスから受信される第2圧縮値を受信する段階であって、上記第2圧縮値は、上記第2コマンドバストレーニングモードにある上記メモリデバイスに基づいて上記メモリデバイスで圧縮される上記サンプリング済みのCAパターンを表す、段階、
を含む段階と、
上記第1圧縮値または上記第2圧縮値を使用して、上記コマンドバスを介して送信される上記CAパターンが上記サンプリング済みのCAパターンと一致するかどうかを判断する段階と、
送信される上記CAパターンが上記サンプリング済みのCAパターンと一致しない場合に、上記メモリデバイスの上記CAインタフェースと関連付けられる1または複数の電気的パラメータまたはタイミングパラメータを調整する段階と
を備える方法。
(項目18)
上記コマンドバスに含まれる偶数個の信号線を介して出力される上記CAパターンを生成する段階
を備え、
上記第1圧縮値または上記第2圧縮値は、上記偶数個の信号線を介して送信される、上記サンプリング済みのCAパターンと一致しない上記CAパターンに基づく1の奇数パリティ値である、
項目17に記載の方法。
(項目19)
上記第2コマンドバストレーニングモードはコマンドアドレストレーニングモード(CATM)であり、
上記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、上記SDRAMデバイスは、上記サンプリング済みのCAパターンから上記1の奇数パリティ値を生成し、かつ、上記データバスを介して上記サンプリング済みのCAパターンに関する上記1の奇数パリティ値を示すための回路を有する、
項目18に記載の方法。
(項目20)
上記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、
上記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、上記方法は、
上記メモリコントローラにおける1または複数の排他的OR(XOR)ゲートを使用して、上記SDRAMデバイスから受信される上記サンプリング済みのCAパターンから上記1の奇数パリティ値を生成する段階
を更に備える
項目18に記載の方法。
(項目21)
上記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、上記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、上記方法は、
上記SDRAMデバイスから受信される上記サンプリング済みのCAパターンから巡回冗長検査(CRC)値を計算して、上記第1圧縮値を生成する段階と、
上記CRC値を使用して、上記コマンドバスを介して送信される上記CAパターンが上記サンプリング済みのCAパターンと一致するかどうかを判断する段階と
を更に備える、項目17に記載の方法。
(項目22)
上記第1コマンドバストレーニングモードはコマンドバストレーニング(CBT)モードであり、上記メモリデバイスは、ダブルデータレート規格と互換性があるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスであり、上記方法は、
上記SDRAMデバイスから受信される上記サンプリング済みのCAパターンから署名値を生成して、上記第1圧縮値を生成する段階、
上記署名値を使用して、上記コマンドバスを介して送信される上記CAパターンが上記サンプリング済みのCAパターンと一致するかどうかを判断する段階
を更に備える、項目17に記載の方法。
(項目23)
上記コマンドバスを介して出力される上記CAパターンは、上記第1コマンドバストレーニングモードおよび上記第2コマンドバストレーニングモードのために実装され得る同じCAトレーニングアルゴリズムに基づいて生成される上記CAパターンを含む、項目17に記載の方法。