JP2021179962A - オンダイeccを選択的に無効化するための読み出しリトライ - Google Patents
オンダイeccを選択的に無効化するための読み出しリトライ Download PDFInfo
- Publication number
- JP2021179962A JP2021179962A JP2020194691A JP2020194691A JP2021179962A JP 2021179962 A JP2021179962 A JP 2021179962A JP 2020194691 A JP2020194691 A JP 2020194691A JP 2020194691 A JP2020194691 A JP 2020194691A JP 2021179962 A JP2021179962 A JP 2021179962A
- Authority
- JP
- Japan
- Prior art keywords
- command
- memory
- memory device
- data
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
- G06F11/1052—Bypassing or disabling error detection or correction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/4076—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
- G11C11/4096—Input/output [I/O] data management or control circuits, e.g. reading or writing circuits, I/O drivers or bit-line switches
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1045—Read-write mode select circuits
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Detection And Correction Of Errors (AREA)
- Memory System (AREA)
- Databases & Information Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
Abstract
【課題】誤訂正を伴わずに、ホストが特定のメモリデバイスからデータを受信することを可能にするメモリコントローラを提供する。【解決手段】内部ECC(エラー検査訂正)を実行するメモリデバイスは、メモリコントローラからの異なる読み出しコマンドに応答して、内部ECCを適用してまたは内部ECCを適用せずに、読み出しデータを選択的に返すことができる。メモリデバイスは通常、通常の読み出しコマンドに応答して、ECCを適用して、訂正済みデータを返すことができる。リトライコマンドに応答して、メモリデバイスは、内部ECCを適用せずに読み出しデータを返すことができる。【選択図】図1
Description
本説明は、概してメモリデバイスに関し、より詳細な説明は、内部エラー検査訂正(ECC)の選択的適用に関する。
メモリサブシステムにおけるエラー処理は、RAS期待を満たすために用いられるエラー処理を指すように、RAS(信頼性、可用性、保守性)と称することができる。RAS期待は、多くの場合、フルSDDC(シングルデバイスデータ訂正)能力に関する期待を含み、ここでは、フルデバイス障害から生じるエラーを訂正することができる。しかしながら、将来世代のメモリサブシステムは、より少数のデバイスからより多くのデータが提供されるため、フルSDDCを提供するのに十分なECC(エラー検査訂正)ビットを有しないであろう。x4(デバイス毎の4ビット幅データインタフェース)DRAM(ダイナミックランダムアクセスメモリ)デバイスがDDR4(ダブルデータレート、バージョン4、JESD79−4、JEDECによって2012年9月に最初に公開された)の下で単一のデバイスから4B(4バイト)のデータを提供する一方で、DDR5(現在JEDECによって議論中のDDRバージョン5)x4DRAMデバイスは、単一のデバイスから8Bのデータを提供する。HBM(例えば、高帯域幅メモリDRAMであるJESD235A、JEDECによって2015年11月に最初に公開された)では、単一のデバイスは、全32Bの読み出しデータを提供する。
さらに、オンダイECCは一般に、シングルビットエラー(SBE)の訂正を提供することができるが、デバイスがマルチビットエラー(MBE)を有する場合、メモリデバイスECC回路は、MBEをSBEとして誤訂正することによって、さらなるエラーを発生させる可能性がある。このような誤訂正は、エイリアシングと称され、マルチビットエラーに基づいて生成されたECCシンドロームは、コードマトリクスの列と一致し、結果としてエラーにおける正しいビットが反転する。したがって、例えば、内部ECCによって、2ビットエラーが3ビットエラーへと「訂正」される可能性がある。
メモリコントローラは、複数のメモリデバイスからのデータを適用することにより、システムレベルでよりロバストなECCを適用することが可能であり得る。しかしながら、エイリアシングは、メモリコントローラが他の状況では訂正できるであろう訂正不可能エラーをもたらす可能性がある。
以下の説明は、実装の例として与えられる例示を有する図についての議論を含む。図面は、例として理解されるべきであり、限定として理解されるべきではない。本明細書において用いられる場合、1つまたは複数の例への言及は、本発明の少なくとも1つの実装に含まれる特定の特徴、構造または特性の説明と理解されるべきである。本明細書に現れる「1つの例において」または「代替的な一例において」などの語句は、本発明の実装の例を提供し、必ずしも全てが同じ実装を指すわけではない。しかしながら、それらは、必ずしも相互に排他的であるわけでもない。
特定の詳細および実装の説明を以下で行う。当該説明は、例のいくつかまたは全てと他の潜在的な実装とを示し得る図の非限定的な説明を含む。
本明細書で説明されるように、内部ECC(エラー検査訂正)を実行するメモリデバイスは、メモリコントローラからの異なる読み出しコマンドに応答して、内部ECCを適用してまたは内部ECCを適用せずに、読み出しデータを選択的に返すことができる。メモリデバイスは通常、通常の読み出しコマンドに応答して、ECCを適用して、訂正済みデータを返すことができる。リトライコマンドに応答して、メモリデバイスは、内部ECCを適用せずに読み出しデータを返すことができる。
次世代のメモリデバイスは、読み出し操作毎のビットの総数に対するデバイス毎のデータ信号線の比がはるかにより小さいこと(チャネルの縮小)が期待されている。加えて、ECCビットは、ポイズニング、ディレクトリ、セキュリティ、または他の用途のために再利用化されることがある。したがって、将来世代のメモリデバイスにおいて、フルSDDC(シングルデバイスデータ訂正)能力を提供するのに十分なECCビットが存在する可能性は低い。メモリシステム内で同RAS(信頼性、可用性、保守性)の期待の達成は、ホストまたはメモリコントローラによるECC操作に依拠する。メモリコントローラによる操作は、ECCエイリアシングによって妨げられるが、これには、メモリデバイスによる内部ECCの選択的な使用によって対抗することができる。
メモリデバイスが、内部ECC(例えば、SBE(シングルビットエラー)訂正)を有効化せずにデータを送信することになるリトライ読み出しコマンドは、ホストが、誤訂正を伴わずに特定のメモリデバイスからデータを受信することを可能にする。ホストは、内部ECCによってもたらされたエラーを識別するために、エイリアスされた訂正済みデータを未訂正データと比較することができる。このような操作によって、ホストがDUE(検出可能だが訂正不可能なエラー)エラーをCE(訂正可能なエラー)エラーに変換することを可能にすることができる。したがって、ホストは、メモリサブシステムのRASカバレッジを改善することができる。RASカバレッジは、メモリアーキテクチャに応じて、例えば、最大16b(ビット)または最大32bについて対象とされ得る。
32GB(ギガバイト)x4 RDIMM(レジスタードデュアルインラインメモリモジュール)の試験では、フルデバイス障害が一般的な障害の形態でないことが示された。識別され得るエラーに関しては、SBEの数が、他のいかなるエラーよりもはるかに多かった。SBEの比率は、より小さなパターニングおよびフィーチャサイズの縮小、ならびにVRT(可変保持時間)の使用に起因して、メモリデバイスにおいて増加し続ける。その次に最も一般的なものはMBE(マルチビットエラー)であり、その次は行エラー(またはキャッシュラインエラー)であった。内部ECCまたはオンダイECCは、一般にSBEの対処に有効であるが、MBEをDUEエラーにエイリアスする可能性がある。
1つの例において、メモリコントローラは、一群のメモリデバイスからのデータにおけるDUEの検出に応答して、リトライコマンド(代替的には、読み出しリトライコマンド、またはリトライ読み出しコマンド)を生成する。例えば、内部ECCの適用の一部として、メモリデバイスは、内部ECCによって、メモリデバイスが内部で訂正できないエラーが検出された場合、DUE指示を生成することができる。1つの例において、メモリコントローラは、メモリデバイスから受信したデータおよびECCチェックビットから、DUEを検出することができる。
メモリコントローラがリトライコマンドを生成するのに使用することができる様々なメカニズムが存在する。1つの例において、メモリコントローラは、メモリデバイスまたは一群のメモリデバイスを読み出しリトライモードまたは同等の状態に置き、メモリコントローラは、メモリデバイスの1つまたは複数の構成ビットを設定する。1つまたは複数の構成ビットは、例えば、モードレジスタまたは他の構成レジスタにおけるフィールドであり得る。
1つの例において、メモリコントローラおよびメモリデバイスは、コマンドプロトコルの一部として、リトライコマンドエンコーディングを備える。例えば、標準的な読み出しコマンドが、CA(コマンドおよびアドレス)ビットの特定のエンコーディングによって定義される一方で、読み出しリトライコマンドもまた定義され得る。このような読み出しリトライコマンドは、読み出し、書き込み、リフレッシュ、または他のコマンドなどの他のコマンドとともに、コマンドプロトコルに含まれ得ることが理解される。コマンドエンコーディングは、コマンドが構成設定によってトリガされるリトライモードと連携して用いられるのではない限り、プロトコルにおける他のコマンドとは異なっている必要がある。
1つの例において、メモリコントローラは、連続または一連の読み出しコマンドによってリトライコマンドをトリガする。連続コマンドまたは一連の同じコマンドとは、メモリコントローラが、いかなる介在コマンドも伴わずに同じコマンドを発行することを指すことができる。特定の介在コマンドが、プロトコルによって許容され得る。1つの例において、「同じコマンド」の発行とは、同じアドレスを有する同じコマンドエンコーディングを指す。したがって、エンコーディングは、一連の同一のCAビットエンコーディングを含むことができる。
1つの例において、連続読み出しコマンドメカニズムが機能するために、メモリデバイスは、コマンドを同じコマンドとしてデコードする回路を含むことができる。したがって、メモリデバイスは、一連のコマンドを読み出しコマンドのトリガとして内部でデコードすることができる。リトライコマンドの目的が、以前の訂正済みデータと比較するために未訂正データを提供することであれば、一連のコマンドによって、メモリデバイスが、元の読み出しコマンドのデコーディングに応答してデータを返し、続いてリトライコマンドをデコードし、内部ECCを適用せずに同じデータを返すようにすることができる。
メモリコントローラは、シングルメモリデバイスに結合され得ることが理解される。しかしながら、メモリコントローラによるシステムレベルの訂正は、シングルメモリデバイスのためのホストで異ならないであろう。通常、メモリデバイスは、群で使用される。メモリコントローラは、メモリチャネルを通じて複数のメモリデバイスまたは一群のメモリデバイスに結合され、メモリデバイスは、コマンド信号線およびアドレス信号線を(例えば、マルチドロップバスとともに)共有し、各メモリデバイスは、メモリデバイスとメモリコントローラとの間に結合されている専用のデータ線(DQおよび関連付けられたストローブまたはクロック(DQS)線)を有する。他の制御信号線もまた、共有することができる(例えば、ランク内の複数のデバイスは、デバイスイネーブル(EN)信号線またはアラート信号線を共有することができる)し、または固有のものとすることができる。
図1は、メモリがオンメモリECCを無効化するリトライ読み出しを実行するコマンドをホストが選択的に提供するシステムの一例のブロック図である。システム100は、コンピュータシステムの要素を表す。システム100は、メモリシステムがコンピュータシステムの一部と見なされるのであれば、メモリシステムまたはメモリサブシステムの要素を示すものと見なすことができる。
システム100は、ホスト110を備え、ホスト110は、メモリを含むコンピュータシステムのためのハードウェアおよびソフトウェアプラットフォームを表す。ホスト110は、プロセッサ112を備え、プロセッサ112は、任意のタイプのプロセッサ、マイクロプロセッサ、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、またはメモリへのアクセスを要求することになる命令を実行する他のコントローラもしくはプロセッサであり得る。プロセッサ112は、シングルコアプロセッサであり得る。1つの例において、プロセッサ112は、マルチコアプロセッサである。
ホスト110は、メモリ130へのアクセスを管理するホスト110における回路を表すように、メモリコントローラ120を備える。1つの例において、メモリコントローラ120は、プロセッサダイ(統合メモリコントローラまたはオンダイコントローラ)の一部である。1つの例において、メモリコントローラ120は、プロセッサ112およびメモリコントローラ120を含むシステムオンチップ(SOC)に統合された回路である。このようなSOCは、周辺機器コントローラ、通信コントローラ、グラフィックスコントローラ、または他の回路も含み得る。
1つの例において、メモリコントローラ120は、コマンド(CMD)ロジック122を備え、コマンド(CMD)ロジック122は、プロセッサ112によるメモリアクセスへの要求に応答してメモリ130に対するコマンドを生成するためのロジックを表す。コマンドロジック122は、メモリコントローラ120上の回路およびファームウェアまたはコードロジックを含むことができる。1つの例において、コマンドロジック122は、メモリ130によるリトライコマンドをトリガするために、コマンドエンコーディングによってコマンドを生成することができる。コマンドロジック122によるコマンドのエンコーディングに基づいて、1つの例において、メモリ130のコマンド(CMD)デコーダ132は、コマンドを、メモリデバイスに内部ECCを適用せずに読み出しデータを返させるリトライコマンドとして解釈する。
メモリコントローラ120は、ECC124を備え、ECC124は、ホスト側のエラー検査訂正ロジックを表す。ECC124は、システムレベルECCを実行する。システムレベルECCとは、複数のメモリデバイス130から受信されたデータのエラー検査訂正を指す。1つの例において、ECC124は、メモリ130から受信されたデータに対してECC操作を実行するための回路含む。1つの例において、ECC124は、書き込みコマンドのための書き込みデータとともに送信すべきECCチェックビットを生成する。
メモリコントローラ120は、I/O(入力/出力)128を備え、I/O(入力/出力)128は、メモリ130とインタフェースするためのハードウェアを表す。ハードウェアは、メモリコントローラ120とメモリ130との電気的相互接続を提供するシステム100の接続基板(例えば、SOCまたはマザーボード)上の信号線とインタフェースするためのピン、ボール、または他のコネクタを含むことができる。I/O128のハードウェアは、ドライバと、受信回路(終端ハードウェア、クロック/タイミング回路、遅延ロックループ(DLL)もしくは位相ロックループ(PLL)などの信号位相制御、または他のハードウェアを含む)を備えることができる。
メモリ130は、DRAM(ダイナミックランダムアクセスメモリ)デバイスまたはSDRAM(シンクロナスDRAM)デバイスなどの個々のメモリデバイスを表す。システム100は、それぞれメモリ130としてラベルが付されている、複数のメモリデバイスを示す。メモリ130は、I/O138を備え、I/O138は、メモリコントローラとインタフェースおよび通信するためのメモリデバイスのハードウェアを表す。バス150は、メモリ130とメモリコントローラ120とを電気的/通信可能に接続するための1つまたは複数の群の信号線またはトレースを表す。I/O138のハードウェアは、メモリコントローラのI/O128と同じまたは同様とすることができ、別個に説明しない。
メモリ130は、コマンド(CMD)デコーダ132を備え、コマンド(CMD)デコーダ132は、メモリコントローラ120から受信されたコマンドをデコードする回路要素およびロジックを表す。コマンドは、読み出しコマンド、書き込みコマンド、リフレッシュコマンド、または他のコマンドを含むことができる。1つの例において、コマンドデコーダ132は、リトライコマンドをデコードするためのロジックを含む。
メモリ130は、ECC134を備え、ECC134は、オンダイECCまたはオンデバイスECCを表す。ECC134は、メモリ130がメモリコントローラ120にデータを提供する前に、データのデータエラーを訂正するようにメモリ130内で動作する。メモリ130のECC134の動作は、メモリコントローラ120のECC124の動作とは異なることが理解される。メモリコントローラ120は、ECCを計算してチェックビットを送信し、これは複数のメモリデバイスのうちの1つまたは複数に記憶することができる。一部のメモリデバイスは、データのみを記憶し、他のメモリデバイスは、ECCチェックビットのみを記憶してよい。例えば、一般的なアーキテクチャは、10x4を備え、すなわち、8つがデータを記憶し、2つがECC情報を記憶する10のメモリデバイスを備え、メモリデバイスがx4データインタフェースを有する。ECCのためのより多くのデバイスを追加することで、部品が増加し、また追加のデバイスに接続するための追加の信号線のチャネルピンアウトが増加するため、コストが増大する。
したがって、ECC124は、合計で全てのメモリデバイスに送信された全てのデータビットにECCを実行する。ECC134は、メモリデバイスに記憶されたビットの一部を返す前に、メモリデバイス内でエラーを検査して訂正するように、メモリ130内で動作する。システムレベルECCのRASのパフォーマンスは、より多いECC情報を利用可能であることに起因して、個々のデバイス内のECCのRASのパフォーマンスよりも高いことが期待されることが理解される。
メモリ130は、レジスタ136を備え、レジスタ136は、メモリ130の構成レジスタを表す。例えば、レジスタ136は、モードレジスタであり得る。レジスタ136は、メモリ130の構成情報を記憶するための1つまたは複数のフィールドを備える。1つの例において、レジスタ136は、メモリコントローラ120がメモリ130をリトライコマンドモードに置くために設定することができる1ビットまたは複数ビットの情報を記憶するためのフィールドを備える。リトライコマンドモードは、メモリ130の動作の特定のモードまたは状態であり得る。リトライコマンドモードにおいて、コマンドデコーダ132は、読み出しコマンドを受信した場合、その読み出しコマンドを、ECC134を適用せずに読み出しをトリガするコマンドとしてデコードする。したがって、メモリ130は、アレイ140からデータを読み出し、内部ECCを適用せずに、そのデータをメモリコントローラ120に返す。このようなモードは、コマンドロジック122によるコマンドエンコーディングに基づくリトライコマンドの代替となるものであり得る。
メモリ130は、データを記憶するためのアレイ140を備える。アレイ140は、アドレス指定可能なメモリ位置のアレイを表す。通常、アレイ140は、少なくとも行(例えば、ワード線)および列(例えば、ビット線)によってアドレス指定可能である。アレイ140は、様々なバンクもしくはサブバンク、または他の区分に細分化され得る。アレイ140は、データおよびECCデータを記憶する。データは、メモリコントローラ120から書き込まれたデータを含み得ることが理解される。1つの例において、選択されたメモリデバイスにメモリコントローラによって書き込まれたデータの一部または全ては、システムECCデータであり得る。アレイ140内のECCは、内部ECCのためにECC134によって生成されたローカルECCデータまたはECCチェックビットを表す。
バス150は、メモリコントローラ120とメモリ130との間の電気的接続および通信接続を提供する。バス150を指し示す破線のボックスは、コマンド(CMD)シーケンス152の1つの例を示す。コマンドシーケンス152は、リトライコマンドが使用されるコマンドシーケンスの1つの非限定的な例として理解される。
1つの例において、読み出しコマンドは、メモリコントローラ120からメモリ130に送信される(コントローラ・ツー・メモリ、すなわちC→M)。読み出しコマンドに応答して、メモリ130は、アレイ140からデータにアクセスし、ECC134によってコードワードデータおよびローカルまたは内部ECCチェックビットにECC操作を適用する。内部ECCの適用後、メモリ130は、メモリコントローラ120に訂正済みデータを返す(メモリ・ツー・コントローラ、すなわちM→C)。
1つの例において、「訂正済み」データとは、単に、ECC134によって検査され訂正されたデータを指しており、必ずしもエラーの無いデータを意味しない。ECC134は、SBEを訂正するのに有効であり得るが、アレイ140から読み出されたデータが既にMBEを有している場合は、更なるビットエラーをエイリアスする可能性がある。1つの例において、メモリ130は、データを適切に訂正できなかった場合、DUE指示を発行するなど、ECC134によって指示を生成することができる。1つの例において、メモリコントローラ120は、読み出しデータを受信して、DUEを検出する。
1つの例において、メモリコントローラ120は、未訂正または訂正不可能エラーの検出、または、既に訂正されているはずのメモリ130からのデータにおける別のエラーの検出に応答して、メモリ130にリトライコマンドを送信する。リトライコマンドは、同じデータを再度読み出し、ECC134を適用せずにメモリコントローラ120に未訂正データを返すようにメモリ130をトリガする。
1つの例において、メモリコントローラ120は、フォールト検出器126を備える。1つの例において、リトライコマンドの送信後、メモリコントローラ120は、どのメモリデバイスがエラーを有するデータを返したかを特定するために、フォールト検出器126によってフォールト検出を実行することができる。標準的なフォールト検出またはプロプライエタリフォールト検出が用いられ得る。フォールト検出の具体的なプロセスは、本開示の範囲外である。フォールト検出器126は、メモリコントローラ120が、データの訂正を提供するために未訂正エラーを識別してシステムレベルECCを実行することを可能にする。
1つの例において、メモリコントローラ120は、全データにリトライコマンドを使用して、シングルビットエラーを隔離することができる。このような例では、コマンドエンコーディングまたはリトライモードを用いる場合、リトライコマンドの適用は、必ずしもエラーの検出に応答するものではない。したがって、リトライコマンドは、最初に通常の読み出しコマンドを送信することなく発行することができる。メモリデバイスのランタイム動作では、1つの例において、リトライコマンドは、読み出しコマンドが送信されるまで送信されない。1つの例において、メモリコントローラ120は、より良好なRASカバレッジを可能にするように、SBEのマップを生成することができる。1つの例において、エラーのマップおよび他のフォールト検出に基づいて、メモリコントローラ120は、過剰に多いエラーの検出に基づいてページをオフラインに取得することができる。
図2は、メモリが繰り返し読み出しコマンドに基づいてオンメモリECCを無効化するリトライ読み出しを実行するコマンドをホストが選択的に提供するシステムの一例のブロック図である。システム200は、図1のシステム100に係るシステムの一例を提供する。システム200は、一連の繰り返し読み出しコマンドによって示されるリトライコマンドのアーキテクチャをより具体的に示す。簡略化のために、1つのみのメモリデバイスが示されているが、1つよりも多いメモリデバイスが使用される場合があり、典型的な実装では複数のメモリデバイスを含むことが理解され得る。
ホスト210は、システム200のホストプラットフォームを表す。ホスト210は、プロセッサ212およびメモリコントローラ220を備える。システム100のプロセッサ112に関する上記の説明は、ホスト210のプロセッサ212にも当てはまり得る。システム100のメモリコントローラ120、コマンドロジック122、ECC124、フォールト検出器126、およびI/O128に関する上記の説明は、システム200のメモリコントローラ220、ECC224、フォールト検出器226、およびI/O228にもそれぞれ当てはまり得る。
システム100のメモリ130、コマンドデコーダ132、ECC134、I/O138、およびアレイ140に関する上記の説明は、メモリ230、コマンド(CMD)デコーダ232、ECC234、I/O238、およびアレイ240にもそれぞれ当てはまり得る。同様に、上記のバス150の説明は、バス250に当てはまり得る。
コマンド(CMD)ロジック222に関して、コマンドロジック222は、同じアドレスに連続読み出しコマンドを発行することによって、リトライコマンドを発行する。バス250上のコマンドシーケンスは具体的に示されていないが、バス150に関して説明したものと同じコマンドシーケンスがバス250にも適用され得る。シーケンス中のリトライコマンドは、より具体的には、システム200の読み出しコマンドの繰り返しによってトリガされるリトライコマンドである。
1つの例において、メモリ230は、読み出しコマンドのアドレスデータを記憶するためにアドレスレジスタまたは他のストレージ要素を備える。1つの例において、コマンドデコーダ232が読み出しコマンドを検出した場合、デコーダは、レジスタ262内の読み出しコマンド(ADDR)のアドレスを記憶するようにメモリ230をトリガする。メモリ230は、レジスタ262のアドレスを、レジスタ264内の前の読み出しアドレス(ADDR−1)と比較することができる。比較器266は、アドレスが同じであるかを判定し、比較に応答してリトライ準備出力を発行することができる。
1つの例において、連続する読み出しコマンドに応答してのみ、比較が行われる。したがって、例えば、比較器266の動作は、現在のコマンドが前のコマンドと同じであるという別の比較に基づいて有効化(またはゲート)することができる。1つの例において、メモリ230の回路は、レジスタ262内のあらゆるアクセスコマンドのアドレスを記憶し、次のアクセスコマンドを受けたら、アドレスを次のアクセスコマンドのアドレスと置き換えられるようにレジスタ264にプッシュする。このような実装では、メモリ230は、コマンドが読み出しコマンドであるか、またはコマンドが読み出しコマンドであるとともに前のコマンドもまた読み出しコマンドであるか(例えば、2つの読み出しコマンドが連続して受信されたという指示)の判断を伴う読み出しリトライ出力のゲーティングなどの、読み出しリトライデコーディングを制御するための追加の回路を備えることができる。このようなロジックは、出力によってゲートされ、または、読み出しリトライエンコーディング出力を生成するように比較器266内の回路によって使用され得る。
介在コマンドが受信されなかったことを確実にするために、同様または追加のロジックが追加され得る。例えば、メモリ230は、現在のコマンドおよび後続の読み出しコマンド(代替的には現在の読み出しコマンドおよび前の読み出しコマンドと見なされ得る)などの2つの読み出しコマンド間で介在コマンドが受信されていない場合、連続するコマンドのデコーディングが読み出しリトライのみをもたらすことを確実にするための回路を備えることができる。介在コマンドに言及する際、読み出しコマンドとそれに続くCASコマンドとは、1つの読み出しコマンドと見なされ得ることが理解される。したがって、CASコマンドは、CASコマンドが読み出し操作の実行をトリガするシーケンスの一部である場合、比較の目的では介在コマンドと見なされない。
したがって、1つの例において、メモリ230は、読み出しコマンドアドレスを以前の読み出しコマンドアドレスと比較する。読み出しコマンドアドレスが一致する場合、1つの例において、メモリ230は、アレイ240からデータにアクセスし、ECC234によるECCを適用せずに、そのデータを生データとしてメモリコントローラ220に返すことができる。このような操作は、新たなコマンドエンコーディングまたはリトライモードを用いずに、リトライコマンドを提供することができる。
図3Aは、メモリデバイスECCの選択的バイパスを実装し得るメモリアーキテクチャの一例のブロック図である。メモリセグメント302は、メモリデバイスが接続されているデータチャネルにデータを提供するためのメモリアレイの一部を表す。セグメント302は、8bのECCデータを有する64bのデータの2つの部分を示す。図表304は、ドライバを備えるセグメント302のアーキテクチャを示す。
図表304は、8ビットのデータを各側に駆動するサブワード線(SWL)ドライバを含み得る。図示するように、破線のボックスは、ビットの中央にあるドライバ(DRVR)によって駆動された16ビットのデータを示す。ドライバの左のビットは、ドライバの左サブアレイまたは左アームと見なされ得る。同様に、ドライバの右のビットは、ドライバの右サブアレイまたは右アームと見なされ得る。
図表306は、1つのドライバと、その関連付けられたサブアレイとの拡大図を示す。左アームとしての左サブアレイおよび右アームとしての右サブアレイは、図表306において具体的にラベルが付されている。右および左は、相対的な用語であり、単に図における向きを指していることが理解される。実際の実装では、左または右と見なされるビットは、入れ替わり得る。したがって、左アームおよび右アームという説明は、一群のビットまたはメモリセルもしくはメモリ位置の間のドライバが、ドライバ回路とメモリアレイのメモリセルまたはビットセルとの間で駆動される必要がある信号線の長さを低減するために、ビットをドライバ回路側のいずれかの物理側に駆動することを単に指す。
ビットは、ドライバの能動コンポーネントから各方向に駆動される。図示するように、1つのアーム(SWLアーム)の障害は、1つのアームに障害が起き、したがって1つのサブアレイがアクセス不可能になるので、8b障害をもたらすことが理解される。ドライバの障害(SWLドライバ障害)は、両方のアームがアクセス不可能になることを考慮すると、16b障害をもたらす。
本明細書に記載するように、1つのアームまたはドライバの障害は、マルチビットエラーをもたらす可能性があり、これは更なるビットエラーにエイリアスされ得る。各部分からのデータは、コードマトリクスを実装するハードコーディング回路、または、コードマトリクスを実装するための動作を実装するソフトウェア/ファームウェアを有するコントローラのいずれかであるECCハードウェアに選択的にフィードされ得る。ECCの適用は、リトライコマンドに応答してECCを無効化することによって選択的にバイパスすることができる。
図3Bは、未訂正読み出しデータを受信するメモリコントローラの一例のブロック図である。メモリコントローラ310は、システム100のメモリコントローラ120またはシステム200のメモリコントローラ220に従うメモリコントローラの一例を示す。メモリコントローラ310は、メモリアレイのセグメントであり得るセグメント302から受信されたデータに対して検査を実行する。
1つの例において、メモリコントローラ310は、データ受信312によって示されるように、読み出しデータを受信する回路を備える。1つの例において、メモリコントローラ310は、I/Oハードウェアからの受信データを記憶するためのレジスタ314と、内部ECCがメモリデバイスにおいて有効化されている場合に読み出しコマンドに応答して受信されたデータの前のバージョンを記憶するためのレジスタ316とを備える。1つの例において、メモリコントローラ310は、リトライコマンドに応答して受信されたデータを表すレジスタ314のデータを、エラーが検出された場合に通常の読み出しコマンドに応答して受信されたデータを表すレジスタ316のデータと比較する。したがって、メモリコントローラ310は、リトライコマンドを発行して、訂正済みデータ(レジスタ316)と比較するために生データ(レジスタ314)を受信している。
比較器318は、訂正されたデータのビットと未訂正データとの差を示すことができるフォールト検出出力を生成する、ビット毎の比較であり得る。1つの例において、メモリコントローラ310は、エラー訂正を実行するために、データにおけるエラーを検出するためのフォールト検出出力を適用する。このようなフォールト検出は、エラーのソースを識別することができる。
メモリデバイスにおける内部ECCで訂正することができるSBEに加えて、他の一般的な障害モードには、ドライバ全体またはドライバの1つのブランチのいずれかであるサブワード線(SWL)ドライバの障害が含まれる。SWLドライバは、1つのアーム上の8ビットおよび別のアームまたはブランチ上の8ビットを駆動するアーキテクチャを備え得る。1つのアームまたはブランチの障害は、8ビット障害をもたらす可能性があり、ドライバの障害は、16ビット障害をもたらす可能性がある。いずれのシナリオでも、アーム上の8ビットデータは、エイリアスエラーをもたらす可能性がある。メモリコントローラ310が16bフォールトをカバーしようと試みている場合、エイリアスデータが、誤って訂正された1つの追加のビットとともに現れ、他の状況では訂正可能なエラーから訂正不可能なエラーが発生し得る。
1つの例において、メモリコントローラは、メモリが生データ、すなわち内部ECCを適用していないデータを提供しようとしていることを示すために、読み出しCAS(列アドレスストローブ)のためのエンコーディングとともにリトライコマンドを送信する。1つの例において、メモリコントローラ310は、未訂正データまたは生読み出しデータを受信するために、構成を介してメモリをリトライコマンドモードに置く。1つの例において、メモリコントローラ310は、リトライコマンドをトリガするために、同じアドレスに連続読み出しコマンドを発行する。これには別個のモードも異なるコマンドエンコーディングも要求されない。このような一例では、(図2を参照して記載したような)メモリは、一連のコマンドをリトライコマンドとしてデコードすることができる。
リトライコマンドに応答して、メモリは、メモリ内の生データまたはシングルビット訂正を適用していないデータを返し、これにより、メモリコントローラ310がエイリアスエラーを有しないデータを受信することが可能になる。したがって、メモリからのリトライデータは、RASコントローラ訂正能力によって予め規定されるような、例えば、8b、16b、または32b境界内に含まれるエラーを有する。リトライデータは、SBEを訂正したであろうメモリデバイスからのシングルビットエラーも有する。
リトライデータに応答して、1つの例において、メモリコントローラ120は、元のデータをリトライデータと比較する。いずれかのリトライデータがシングルビット誤比較を有している場合、1つの例において、メモリコントローラ310は、シングルビットを反転させる。したがって、データの比較の適用により、エイリアスエラーを示し、メモリコントローラ310がエイリアスエラーを訂正することを可能にすることができる。
図4Aは、選択的メモリデバイスECCバイパスを可能にするメモリアーキテクチャの64ビットデータアーキテクチャの一例のブロック図である。図表402は、システム100またはシステム200などのシステムに組み込まれ得る要素を表す。図表402は、DDR4実装などの64ビットデータアーキテクチャのためのコアメモリアーキテクチャを表す。図示するように、メモリコアは、128b内部プリフェッチを実行し、内部ECCのための8bECCを備える。図表402はx4アーキテクチャを具体的に示しているが、x8実装がプリフェッチデータの全128ビットを使用し得る。
図示のx4実装において、4×16=64であるので、16のバースト長(BL16)を有する4つの信号線に基づいて、64ビットが、メモリアクセストランザクション毎にホストまたは関連付けられたメモリコントローラと交換され得る。図表402の明るい網掛け付きのブロックが上半分を表す場合、網掛け無しのブロックは、下半分を表し、その逆も同様である。暗い網掛け付きのビットは、ECCビットを表す。図示するように、64bのデータは、下半分からまたは上半分からフェッチすることができ、または上半分と下半分とに分割することができる。これらの半分の分割は、サブアレイからの各8bのうち、4bのみの使用を示唆している。
図表402は、4つのDQ(データ)信号線(DQ[3:0])とインタフェースするためのI/O回路462を伴うメモリデバイス412の適用を示す。メモリデバイス412は、メモリアレイ420を備え、メモリアレイ420は、プリフェッチ430において異なるサブアレイへと分離されるのが示されている。全てのプリフェッチされたデータが使用されるのではない場合、全てのプリフェッチされたデータをセンス増幅器内に置くことができ、その後、選択442によって示されるように、選択されたデータのみがメモリアクセスのために用いられることが理解される。したがって、プリフェッチ430は、センス増幅器内のデータを表すことができ、選択442は、読み出し操作のためにI/Oに送信されたセンス増幅器からのデータを表す。
例えば、データをセンスアンプ内に置くことができ、その後、アドレス指定が、書き込み操作のために書き込まれる、または読み出し操作のために読み出されるデータの特定の一部を選択するように動作する。アドレス指定は、アーキテクチャの理に適う任意の方式でデータを選択することができる。1つの例において、プリフェッチされたデータの一部は、アクセス操作のために選択される。図示のように、8ビットのうち4ビットが、各サブアレイから選択される。
1つの例において、読み出し操作のために選択された、すなわち選択442されたビットは、ECC回路452に提供することができる。ECC回路452は、メモリデバイス412のオンデバイスまたは内部ECCロジックを表す。1つの例において、ECC回路452は、ECCエンジンと見なす、または称することができる。ECC回路452は、ホスト(具体的に図示せず)に出力されるデータをI/O回路462に提供する前にエラーを訂正するために、読み出しデータにECCを適用することができる。
1つの例において、メモリデバイス412は、ECCバイパス472を備え、ECCバイパス472は、内部ECCを適用せずにホストに生読み出しデータを提供するメカニズムを表す。1つの例において、ECC回路452は、ECC回路の操作を選択的にバイパスするためにマルチプレクサ(mux)または他のハードウェアを備える。1つの例において、ECC回路452は、毎回その操作を実行するが、ECCを適用せずにデータを提供する代替データ経路が存在し、これはI/O回路462において多重化または選択することができる。
リトライコマンドに応答して、メモリデバイス412は、ECC回路を無効する、ECC回路を迂回するように生データをルーティングする、または生データを選択的に出力する別の経路を設ける、のいずれかによって、ECC回路452をバイパスすることで、ECCを無効化するものと見なすことができる。したがって、メモリデバイス412は、通常の読み出しコマンドに応答してECCを適用し、リトライコマンドに応答してECCの適用をバイパスすることができる。
図4Bは、選択的メモリデバイスECCバイパスを可能にするメモリアーキテクチャの128ビットデータアーキテクチャの一例のブロック図である。図表404は、システム100またはシステム200などのシステムに組み込まれ得る要素を表す。図表404は、DDR5実装などのコアメモリアーキテクチャを表す。図示するように、メモリコアは、128b内部プリフェッチを実行し、内部ECCのための8bECCを備える。 x4実装において、4×32=128であるので、32のバースト長(BL32)を有する4つの信号線に基づいて、128ビットが、メモリアクセストランザクション毎にホストまたは関連付けられたメモリコントローラと交換され得る。したがって、図示するように、アレイの上半分とアレイの下半分との両方が、それぞれ64bのデータを提供する。上半分は、メモリのアーキテクチャおよびアドレス指定構造に基づくことができ、これは図表404に具体的に示されない。図表404の明るい網掛け付きのブロックは、上半分を表し、網掛け無しのブロックは、下半分を表し、その逆も同様である。暗い網掛け付きのビットは、ECCビットを表す。
図表404は、4つのDQ(データ)信号線(DQ[3:0])とインタフェースするためのI/O回路464を伴うメモリデバイス414の適用を示す。メモリデバイス414は、メモリアレイ420を備え、メモリアレイ420は、プリフェッチ430において異なるサブアレイへと分離されるのが示されている。選択444は、読み出し操作のためのI/Oに送信されたセンス増幅器からのデータを表し、全128のプリフェッチされたビットを含み得る。
1つの例において、読み出し操作のために選択された、すなわち選択444されたビットは、ECC回路454に提供することができる。ECC回路454は、メモリデバイス414のオンデバイスまたは内部ECCロジックを表す。1つの例において、ECC回路454は、ECCエンジンと見なす、または称することができる。ECC回路454は、ホスト(具体的に図示せず)に出力されるデータをI/O回路464に提供する前にエラーを訂正するために、読み出しデータにECCを適用することができる。
1つの例において、メモリデバイス414は、ECCバイパス474を備え、ECCバイパス474は、内部ECCを適用せずにホストに生読み出しデータを提供するメカニズムを表す。1つの例において、ECC回路454は、ECC回路の操作を選択的にバイパスするためにマルチプレクサ(mux)または他のハードウェアを備える。1つの例において、ECC回路454は、毎回その操作を実行するが、ECCを適用せずにデータを提供する代替データ経路が存在し、これはI/O回路464において多重化または選択することができる。
リトライコマンドに応答して、メモリデバイス414は、ECC回路を無効する、ECC回路を迂回するように生データをルーティングする、または生データを選択的に出力する別の経路を設ける、のいずれかによって、ECC回路454をバイパスすることで、ECCを無効化するものと見なすことができる。したがって、メモリデバイス414は、通常の読み出しコマンドに応答してECCを適用し、リトライコマンドに応答してECCの適用をバイパスすることができる。
図5は、選択的メモリデバイスECCバイパスを伴うメモリサブシステムの状態図の一例の図である。図表500は、本明細書の任意の例に従うリトライコマンドのためのリトライシーケンスの状態を示す。最も左の列は、様々な状態を示し、他の列は、DRAM0、DRAM1、DRAM2、およびホストRASの状態をそれぞれ示す。
状態510は、元のDRAMの状態を表す。状態520は、DRAMがECCを有効化してデータを読み出す状態を表す。状態530は、DRAMがECCを無効化してデータを読み出す状態を表す。状態540は、フォールト検出を実行するためのホストによる操作を表す。1つの例において、ホストは、MBEを有するDRAMを検出するために、PFD(恒久フォールト検出)シーケンスを発行する。ホストは、フォールトが検出されるまで検出を実行するように、動作を反復して実行することができる。状態550は、ホストが、様々なDRAMに対して新たなデータをホストに生成する状態を表す。
状態510に関して、DRAM0が8ビットエラーを有し、DRAM1が1ビットエラーを有し、DRAM2がエラーを有しない一例を検討する。DRAMからのデータが、ホストにおけるSDDCコード保護を伴ってホストに提示される場合、SDDCコードはこの例では8b訂正に限られているので、結果としてDUEがもたらされる。
状態520では、DRAMデバイスは、読み出し値にECCを適用する。したがって、DRAM0は、別のビットを反転させることによって8ビットエラーを誤訂正し得るので、エイリアシング問題を有し得る。したがって、8ビットエラーは、+1ビットエイリアスエラーを伴う8ビットエラーになる。オンダイECCは、DRAM1上のエラーを修正するが、DRAM2上ではデータは変更されない。したがって、DRAM1およびDRAM2の両方が、0のエイリアスエラーを伴う0のエラーを有する。しかしながら、DRAM0の8ビットエラーに起因して、ホストはDUEを検出する。
ホストによるDUEの検出に応答して、1つの例において、ホストは、DRAMにおいてECCを無効化して読み出しをリトライするために、状態530に移行する。状態530のリトライコマンドに応答して、DRAM0は、エイリアスエラーを伴わない8ビットエラーを返す。DRAM1は、1bエラーを返し、DRAM2は、エラーを伴わないデータを返す。未訂正データには、ホストにおけるDUEをもたらすエラーが存在することが理解される。
1つの例において、状態540では、ホストは、MBEを検出するためのPFD動作を実行する。1つの例において、ホストは、固定書き込みパターン(例えば、AAAAh)コマンドと、それに続いてページを閉じるプリチャージコマンドとを発行する。ページを閉じることで、データがセンスアンプからDRAMセルに移動されることが確実になる。1つの例において、ホストは、その後、同じアドレスに読み出しコマンドを発行し、次に、そのデータを書き込みパターンと比較する。このような操作により、マルチビットエラーは複数のエラーを有していると返されるので、マルチビットエラーをDRAM0に隔離することができる。
状態550にて、ホストは、DRAM0の8bエラーを識別し、エイリアスエラーを取り除くことができる。したがって、ホストは、DRAM1およびDRAM2のために訂正済みデータを使用することができ、その結果、そのデータにはエラーが無く、DRAM0の8bエラーのみがもたらされる。ホストにおけるRAS結果は、DUEではなく訂正可能エラー(CE)である。
図6は、オンダイECCを選択的にバイパスするプロセスの一例のフロー図である。プロセス600は、読み出し操作にオンダイECCを選択的に適用するプロセスを表す。プロセス600は、システム100またはシステム200に従うシステムによって実行することができる。1つの例において、602にて、ホストは、メモリデバイスに読み出しコマンドを送信する。1つの例において、ECCを使用する読み出しコマンドを最初に送信することなく、リトライコマンドが使用され得る。604にて、読み出しコマンドに応答して、メモリデバイスは、読み出しコマンドをデコードする。
1つの例において、メモリデバイスは、読み出しコマンドが通常の読み出しコマンドであるか、またはリトライコマンドであるかを判定する。606のNO分岐にて、読み出しコマンドが通常の読み出しコマンドである場合、608にて、メモリデバイスは通常、内部でECCを実行する。610にて、ECCのパフォーマンスは、エラーの検出および訂正を含むことができる。次に、612にて、メモリデバイスは、ホストに訂正済みデータを返す。上述したように、このような操作は、エイリアスエラーをもたらす可能性がある。
メモリデバイスが、内部ECCが適用されたデータを返した後、ホストは、受信されたデータがリトライコマンドのためのものであるか、または通常のコマンドのためのものであるかを判定する。616のNO分岐にて、データがリトライコマンドのためのものでない場合、ホストは、そのデータがDUEをもたらすかを判定することができる。622のNO分岐にて、データがDUEエラーを含まない場合、626にて、ホストはデータを処理する。
1つの例において、622のYES分岐にて、ホストがDUEを特定した場合、624にて、ホストは、メモリに読み出しリトライコマンドを送信する。1つの例において、リトライコマンドは、メモリデバイスにおいて受信され、604にて、メモリデバイスは、読み出しコマンドをデコードする。606のYES分岐にて、リトライコマンドに応答して、メモリデバイスは、読み出しコマンドをリトライコマンドとしてデコードする。614にて、リトライコマンドに応答して、メモリデバイスは、ECCを無効化してデータを読み出す。612にて、ECCを無効化して読み出す場合、メモリデバイスは、ホストに生データを返す。
616のYES分岐にて、ホストにおいて受信されたデータがリトライコマンドのためのものである場合、1つの例において、618にて、ホストは、フォールト検出を実行する。フォールト検出は、ホストがメモリデータ内でエイリアスエラーがどこに存在し得るかを特定することを可能にする。1つの例において、620にて、ホストは、生データとメモリ訂正済みデータとの比較から収集された情報に基づいて、エラー訂正を実行する。
図7は、選択的オンダイECCバイパスを実装するためのオンデバイスECCエンジンの一例のブロック図である。システム700は、システム100またはシステム200に従うシステムのためのオンダイECC回路の一例を提供する。ホスト710は、メモリコントローラ、または、メモリ720へのアクセスを管理する同等もしくは代替の回路もしくはコンポーネントを備える。ホスト710は、メモリ720から読み出されたデータに対して外部ECCを実行する。メモリ720は、ホスト710にデータを送信する前にデータを検査して訂正するオンダイECCを実装する。
システム700は、メモリ720における書き込み経路732を示す。書き込み経路732は、ホスト710からメモリ720に書き込まれるデータの経路を表す。ホスト710は、メモリアレイに書き込むために、データ742をメモリ720に提供する。1つの例において、メモリ720は、チェックビット生成器722でチェックビット744を生成し、メモリ内のデータとともに記憶する。チェックビット744は、ECCビットと称され、メモリ720が、メモリアレイへの書き込みおよびメモリアレイからの読み出しの際に発生し得るエラーを訂正することを可能にすることができる。データ742およびチェックビット744は、メモリリソースに書き込まれるコードワードin746として含むことができる。
読み出し経路734は、メモリ720からホスト710に読み出されるデータの経路を表す。1つの例において、書き込み経路732および読み出し経路734の少なくとも特定のハードウェアコンポーネントは、同じハードウェアである。1つの例において、メモリ720は、ホスト710からの読み出しコマンドに応答して、コードワードout752をフェッチする。コードワードは、データ754およびチェックビット756を含むことができる。データ754およびチェックビット756はそれぞれ、書き込み経路732において書き込まれるデータ742およびチェックビット744に対応し得る。したがって、読み出しは、データおよびECCビットにアクセスすることができる。
読み出し経路734におけるエラー訂正は、エラーを検出して、(シングルビットエラーの場合)エラーを選択的に訂正するための、対応するH行列へのXOR(排他的論理和)ツリーの適用を含むことができることが理解される。XORツリーの構造は、H行列を実装するように設計することができる。当該技術分野で理解されるように、H行列はコードワードのデジットの線形結合がいかにゼロに等しいかを示すハミングコードパリティチェック行列を指す。したがって、H行列の行は、コードワードの一部となるコンポーネントまたはデジットのために満たさなければならないパリティチェック方程式の係数を特定する。1つの例において、メモリ720は、シンドロームデコード724を備える。シンドロームデコード724は、メモリが読み出しデータ内のエラーを検出するためにチェックビット756をデータ754に適用することを可能にする。シンドロームデコード724は、読み出しデータのための適切なエラー情報の生成に使用されるシンドローム758を生成することができる。データ754は、検出されたエラーの訂正のために、エラー訂正728にも転送され得る。
1つの例において、シンドロームデコード724は、シンドローム758をシンドローム生成器726に送り、エラーベクトルを生成させる。1つの例において、チェックビット生成器722およびシンドローム生成器726は、メモリデバイスのための対応するH行列によって完全に指定される。1つの例において、読み出しデータ内にエラーが無い(例えば、ゼロシンドローム758)場合、シンドローム生成器726は、エラー無し信号762を生成する。1つの例において、読み出しデータ内に複数のエラーが存在する(例えば、対応するH行列のいずれの列にも一致しない非ゼロシンドローム758)場合、シンドローム生成器726は、検出済み未訂正エラーを示すDUE(検出済み未訂正エラー)信号764を生成する。DUE信号764は、メモリ720が内部ECCによって訂正することができなかったマルチビットエラーを示すことができる。
1つの例において、シングルビットエラー(例えば、対応するH行列の1つの列に一致する非ゼロシンドローム758)が存在する場合、シンドローム生成器726は、エラー位置760を伴うCE(訂正済みエラー)信号を生成することができ、これは、エラー訂正ロジック728への訂正済みエラーの指示である。エラー訂正728は、データ754内の指定位置に訂正済みエラーを適用して、ホスト710に出力すべき訂正済みデータ766を生成することができる。1つの例において、エラー訂正728は、チェックビット768も生成し、チェックビット768は、読み出しデータのためのチェックビットを含む。
チェックビット768は、ホスト710に送信された読み出しデータ内のエラーの状態を示すエラーベクトルと見なされ得る。ゼロシンドローム(エラー無し762)条件および訂正済みデータ766を生じる訂正済みSBEは、エラー無しをホスト710に示す同じチェックビット768を有することが理解される。したがって、チェックビット768は、メモリ720内のSBEに関する情報を提供せず、マルチビットエラーのみに関する情報を提供する。1つの例において、システム700は、訂正済みデータをメモリアレイに書き戻す。
1つの例において、読み出し経路734は、リトライコマンド770を含み、リトライコマンド770は、リトライコマンドに応答するためのシステム700のロジックを表す。1つの例において、リトライコマンドに応答して、メモリ720は、データ754を未訂正データ772として転送する。リトライコマンド770からの未訂正データ772を出力する経路は、ECCバイパス経路と見なされ得る。ここで、ECC回路は読み出し経路734に適用されない。リトライコマンド770は、受信された読み出しコマンドがリトライコマンドであることを示す入力を有することができる。したがって、他の経路は、ホスト710にデータを出力するために用いられないが、リトライ経路は、生データ、すなわち内部ECCを適用せずにメモリアレイから取得されたままのデータ754を提供する。
図8は、選択的オンダイECCバイパスを実装できるメモリサブシステムの一例のブロック図である。システム800は、コンピューティングデバイスのプロセッサおよびメモリサブシステムの要素を含む。システム800は、システム100またはシステム200と互換性のあるシステムを組み込み得るシステムの1つの例である。
1つの例において、メモリ840は、メモリコントローラ820にデータを返す前に、読み出しデータにECCを実行するためのオンダイECC882を備える。1つの例において、メモリ840は、オンダイECC882を選択的にバイパスするためのバイパス884を備える。内部ECCのバイパスは、本明細書の任意の説明に従うものであることができ、メモリ840がリトライコマンドに応答して読み出しを実行する。メモリ840は、リトライコマンドに基づいて、データを返す前に、データにECCを実行する代わりに、メモリアレイ860から生データを返す。
プロセッサ810は、オペレーティングシステム(OS)およびアプリケーションを実行し得るコンピューティングプラットフォームの処理ユニットを表し、当該処理ユニットは、メモリのホストまたはユーザと総称され得る。OSおよびアプリケーションは、メモリアクセスをもたらす操作を実行する。プロセッサ810は、1つまたは複数の別個のプロセッサを含み得る。別個のプロセッサのそれぞれは、シングル処理ユニット、マルチコア処理ユニットまたはそれらの組み合わせを含み得る。処理ユニットは、CPU(中央処理ユニット)などのプライマリプロセッサ、GPU(グラフィックス処理ユニット)などの周辺プロセッサまたはその組み合わせであり得る。メモリアクセスは、ネットワークコントローラまたはハードディスクコントローラなどのデバイスによっても開始され得る。そのようなデバイスは、バス(例えば、PCIエクスプレス)を介して、いくつかのシステム内のプロセッサと統合され得るか、もしくはプロセッサに取り付けられ得るか、またはそれらの組み合わせであり得る。システム800は、SоC(システムオンチップ)として実装され得るか、またはスタンドアロンコンポーネントとともに実装され得る。
メモリデバイスへの言及は、様々なメモリタイプに適用できる。メモリデバイスは、多くの場合、揮発性メモリ技術を指す。揮発性メモリとは、デバイスへの電力が遮断された場合に状態(およびそれに格納されるデータ)が不定になるメモリである。不揮発性メモリとは、デバイスへの電力が遮断された場合でも状態が確定しているメモリを指す。ダイナミック揮発性メモリでは、状態を維持するためにデバイスに格納されているデータをリフレッシュする必要がある。ダイナミック揮発性メモリの1つの例には、DRAM(ダイナミックランダムアクセスメモリ)、またはシンクロナスDRAM(SDRAM)などの何らかの派生形が含まれる。本明細書で説明されるメモリサブシステムは、DDR4(ダブルデータレート(DDR)バージョン4、JESD79−4、2012年9月にJEDEC(Joint Electron Device Engineering Council)により最初に公開された)、LPDDR4(低電力DDRバージョン4、JESD209−4、2014年8月にJEDECにより最初に公開された)、WIO2(Wide I/O 2(WideIO2)、JESD229−2、2014年8月にJEDECにより最初に公開された)、HBM(高帯域幅メモリDRAM、JESD235A、2015年11月にJEDECにより最初に公開される)、DDR5(DDRバージョン5、現在JEDECによって議論中)、LPDDR5(LPDDRバージョン5、JESD209−5、2019年2月にJEDECにより最初に公開された)、HBM2((HBMバージョン2)、現在JEDECによって議論中)、またはその他またはメモリ技術の組み合わせ、およびそのような仕様の派生または拡張に基づく技術などの複数のメモリ技術と互換性があり得る。
1つの例において、揮発性メモリに加えて、または代替的に、メモリデバイスへの言及は、デバイスへの電力が遮断された場合でも状態が確定する不揮発性メモリデバイスを指すことができる。1つの例において、不揮発性メモリデバイスは、NAND(非AND)またはNOR(非OR)技術などのブロックアドレス指定可能なメモリデバイスである。したがって、メモリデバイスは、三次元クロスポイントメモリデバイス、他のバイトアドレス指定可能な不揮発性メモリデバイスなど、将来世代の不揮発性デバイスも含むことができる。メモリデバイスは、メモリセルの抵抗状態またはメモリセルの位相に基づいてデータを格納する、不揮発性のバイトアドレス指定可能媒体を含み得る。1つの例において、メモリデバイスは、カルコゲナイド相変化材料(例えば、カルコゲナイドガラス)を用い得る。1つの例において、メモリデバイスは、多閾値レベルのNANDフラッシュメモリ、NORフラッシュメモリ、シングルまたはマルチレベルの相変化メモリ(PCM)またはスイッチ付き相変化メモリ(PCMS)、抵抗メモリ、ナノワイヤメモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、メモリスタ技術を組み込んだ磁気抵抗ランダムアクセスメモリ(MRAM)メモリ、またはスピントランスファトルク(STT)−MRAM、または上記のいずれかの組み合わせ、またはその他のメモリとすることができるか、あるいはそれらを含むことができる。
メモリコントローラ820は、システム800用の1つまたは複数のメモリコントローラ回路またはデバイスを表す。メモリコントローラ820は、プロセッサ810による操作の実行に応答してメモリアクセスコマンドを生成する制御ロジックを表す。メモリコントローラ820は、1つまたは複数のメモリデバイス840にアクセスする。メモリデバイス840は、上記で言及されたいずれかのものに係るDRAMデバイスであり得る。1つの例において、メモリデバイス840は、異なるチャネルとして編成および管理される。各チャネルは、複数のメモリデバイスに並列に結合するバスおよび信号線に結合する。各チャネルは、独立して動作可能である。故に、各チャネルは、独立してアクセスおよび制御され、タイミングと、データ転送と、コマンドおよびアドレスの交換と、他の操作とは、各チャネルについて別個である。結合は、電気的結合、通信的結合、物理的結合またはこれらの組み合わせを指し得る。物理的結合は、直接接触を含み得る。電気的結合は、コンポーネント間に電気が流れることを可能にするか、もしくはコンポーネント間のシグナリングを可能にするか、またはそれらの両方を可能にするインタフェースまたは相互接続を含む。通信的結合は、有線または無線を含む、コンポーネントがデータを交換することを可能にする接続を含む。
1つの例において、各チャネルの設定は、別個のモードレジスタまたは他のレジスタ設定により制御される。1つの例において、各メモリコントローラ820が別個のメモリチャネルを管理するが、システム800は、単一のコントローラにより管理される複数のチャネルまたは単一のチャネル上の複数のコントローラを有するように構成され得る。1つの例において、メモリコントローラ820は、同じダイ上に実装されるか、またはプロセッサと同じパッケージ空間に実装されるロジックなど、ホストプロセッサ810の一部である。
メモリコントローラ820は、上記で言及したメモリチャネルなどのメモリバスに結合するI/Oインタフェースロジック822を含む。I/Oインタフェースロジック822(およびメモリデバイス840のI/Oインタフェースロジック842)は、ピン、パッド、コネクタ、信号線、トレースもしくはワイヤ、もしくは当該デバイスに接続する他のハードウェア、またはこれらの組み合わせを含み得る。I/Oインタフェースロジック822は、ハードウェアインタフェースを含み得る。示されるように、I/Oインタフェースロジック822は少なくとも、信号線用のドライバ/トランシーバを含む。一般に、集積回路インタフェース内のワイヤは、パッド、ピンまたはコネクタと結合して、デバイス間の信号線もしくはトレースまたは他のワイヤとインタフェースする。I/Oインタフェースロジック822は、デバイス間の信号線上で信号を交換するためのドライバ、受信機、トランシーバもしくは終端もしくは他の回路または回路の組み合わせを含み得る。信号の交換は、送信または受信のうちの少なくとも1つを含む。メモリコントローラ820からメモリデバイス840のI/O842へI/O822を結合するように示されるが、メモリデバイス840の群が並列にアクセスされるシステム800の実装では、複数のメモリデバイスがメモリコントローラ820の同じインタフェースへのI/Oインタフェースを含み得ることが理解される。1つまたは複数のメモリモジュール870を含むシステム800の実装では、I/O842は、メモリデバイス自体上のインタフェースハードウェアに加え、メモリモジュールのインタフェースハードウェアを含み得る。他のメモリコントローラ820は、他のメモリデバイス840への別個のインタフェースを含む。
メモリコントローラ820とメモリデバイス840との間のバスは、メモリコントローラ820をメモリデバイス840へ結合する複数の信号線として実装され得る。バスは通常、少なくとも、クロック(CLK)832、コマンド/アドレス(CMD)834および書き込みデータ(DQ)および読み出しデータ(DQ)836ならびにゼロまたはそれより多くの他の信号線838を含み得る。1つの例において、メモリコントローラ820とメモリとの間のバスまたは接続は、メモリバスと称され得る。1つの例において、メモリバスは、マルチドロップバスである。CMD用の信号線は、「C/Aバス」(もしくはADD/CMDバス、またはコマンド(CまたはCMD)およびアドレス(AまたはADD)情報の転送を示す何らかの他の名称)と称することができ、書き込みおよび読み出しDQ用の信号線は、「データバス」と称することができる。1つの例において、独立のチャネルは、異なるクロック信号、C/Aバス、データバスおよび他の信号線を有する。故に、システム800は、独立のインタフェース経路が別個のバスと見なされ得るという意味において、複数の「バス」を有していると見なされ得る。明示的に示される線に加え、バスは、ストローブシグナリング線、アラート線、補助線もしくは他の信号線またはそれらの組み合わせのうちの少なくとも1つを含み得ることが理解される。シリアルバス技術は、メモリコントローラ820とメモリデバイス840との間の接続のために用いられ得ることも理解される。シリアルバス技術の一例が、8B10Bエンコーディングおよび各方向における信号の単一の差動ペアを介した埋め込みクロックでの高速データの伝送である。1つの例において、CMD834は、複数のメモリデバイスと並列に共有される信号線を表す。1つの例において、複数のメモリデバイスがCMD834のエンコーディングコマンド信号線を共有し、それぞれが、個々のメモリデバイスを選択するための別個のチップ選択(CS_n)信号線を有する。
システム800の例において、メモリコントローラ820とメモリデバイス840との間のバスは、補助コマンドバスCMD834と書き込みデータおよび読み出しデータを伝達するための補助バスDQ836とを含むことが理解される。1つの例において、データバスは、読み出しデータおよび書き込み/コマンドデータ用の双方向線を含み得る。別の例において、補助バスDQ836は、ホストからメモリへの書き込みおよびデータのための一方向書き込み信号線を含み得るとともに、メモリからホストへの読み出しデータのための一方向線を含み得る。選択されたメモリ技術およびシステム設計に従って、他の信号838は、ストローブ線DQSなどのバスまたはサブバスに付随し得る。システム800の設計、またはある設計が複数の実装をサポートする場合の実装に基づいて、データバスは、メモリデバイス840毎に多少の帯域幅を有し得る。例えば、データバスは、x4インタフェース、x8インタフェース、x16インタフェースまたは他のインタフェースのいずれかを有するメモリデバイスをサポートできる。規定「xW」のWは、メモリデバイス840のインタフェースサイズまたはインタフェースの幅を指す整数であり、メモリコントローラ820とデータを交換するための信号線の数を表す。メモリデバイスのインタフェースサイズは、いくつのメモリデバイスがシステム800内のチャネル毎に同時に用いられ得るか、または同じ信号線へ並列に結合され得るかに関する制御要因である。1つの例において、高帯域幅メモリデバイス、ワイドインタフェースデバイスもしくは積層メモリ構成またはそれらの組み合わせは、x128インタフェース、x256インタフェース、x512インタフェース、x1024インタフェースまたは他のデータバスインタフェース幅などのより幅広いインタフェースを有効化できる。
1つの例において、メモリデバイス840およびメモリコントローラ820は、バーストで、または一連の連続するデータ転送で、データバスを介してデータを交換する。バーストは、バス周波数に関連する転送サイクルの数に対応する。1つの例において、転送サイクルは、同じクロックまたはストローブ信号エッジ(例えば、立ち上がりエッジ)で生じる転送の全クロックサイクルであり得る。1つの例において、システムクロックのサイクルを参照する全クロックサイクルは、複数の単位間隔(UI)へ分割される。各UIは、転送サイクルである。例えば、ダブルデータレート転送は、クロック信号の両方のエッジ(例えば、立ち上がりおよび立ち下がり)でトリガする。バーストは、構成された数のUIにわたって続き得る。これは、レジスタに格納される構成またはオンザフライでトリガされる構成であり得る。例えば、一連の8個の連続する転送期間は、バースト長8(BL8)と見なされ得、各メモリデバイス840は、各UIでデータを転送できる。故に、BL8で動作するx8メモリデバイスは、84ビットのデータを転送できる(8本のデータ信号線×バーストを介して線毎に転送される8データビット)。この単純な例は、例示に過ぎず、限定的なものではないことが理解される。
メモリデバイス840は、システム800用のメモリリソースを表す。1つの例において、各メモリデバイス840は、別個のメモリダイである。1つの例において、各メモリデバイス840は、デバイスまたはダイ毎に複数の(例えば2個の)チャネルを有するインタフェースであり得る。各メモリデバイス840は、デバイスの実装により決定される帯域幅(例えば、x16もしくはx8または何らかの他のインタフェース帯域幅)を有するI/Oインタフェースロジック842を含む。I/Oインタフェースロジック842により、メモリデバイスは、メモリコントローラ820とインタフェースすることが可能になる。I/Oインタフェースロジック842は、ハードウェアインタフェースを含み得、メモリコントローラのI/O822に応じ得るが、メモリデバイスエンドにおけるものである。1つの例において、複数のメモリデバイス840は、同じコマンドおよびデータバスへ並列に接続される。別の例において、複数のメモリデバイス840は、同じコマンドバスへ並列に接続され、異なるデータバスに接続される。例えば、システム800は、並列に結合されている複数のメモリデバイス840を用いて構成され得る。各メモリデバイスは、コマンドに応答し、各内部のメモリリソース860にアクセスする。書き込み操作の場合、個々のメモリデバイス840は、データワード全体のうちのある部分を書き込むことができ、読み出し操作の場合、個々のメモリデバイス840は、データワード全体のある部分をフェッチできる。ワードの残りのビットは、他のメモリデバイスにより並列に提供または受信される。
1つの例において、メモリデバイス840は、コンピューティングデバイスのマザーボードまたはホストシステムプラットフォーム(例えば、プロセッサ810が配置されるPCB(プリント回路基板))上に直接配置される。1つの例において、メモリデバイス840は、メモリモジュール870へ編成され得る。1つの例において、メモリモジュール870は、デュアルインラインメモリモジュール(DIMM)を表す。1つの例において、メモリモジュール870は、アクセスまたは制御回路のうちの少なくとも一部分を共有するための複数のメモリデバイスの他の編成を表す。当該回路は、ホストシステムプラットフォームとは別個の回路、別個のデバイスまたは別個の基板であり得る。メモリモジュール870は、複数のメモリデバイス840を含むことができ、メモリモジュールは、それらに配置されて含まれるメモリデバイスへの複数の別個のチャネルのためのサポートを含むことができる。別の例において、メモリデバイス840は、例えばマルチチップモジュール(MCM)、パッケージオンパッケージ、スルーシリコンビア(TSV)もしくは他の技術またはそれらの組み合わせなどの技術により、メモリコントローラ820と同じパッケージへ組み込まれてよい。同様に、1つの例において、複数のメモリデバイス840は、メモリモジュール870へ組み込まれてよく、メモリモジュール870自体が、メモリコントローラ820と同じパッケージへ組み込まれ得る。これらの実装および他の実装の場合、メモリコントローラ820はホストプロセッサ810の一部であり得ることが理解される。
メモリデバイス840はそれぞれ、1つまたは複数のメモリアレイ860を含む。メモリアレイ860は、アドレス指定可能なメモリ位置またはデータの記憶位置を表す。通常、メモリアレイ860は、データの行として管理され、ワード線(行)およびビット線(行内の個々のビット)の制御を介してアクセスされる。メモリアレイ860は、メモリの別個のチャネル、ランク、およびバンクとして編成され得る。チャネルは、メモリデバイス840内の記憶位置への独立の制御経路を指し得る。ランクは、並列に並んだ複数のメモリデバイスにわたる共通の位置(例えば、異なるデバイス内の同じ行アドレス)を指し得る。バンクは、メモリデバイス840内のメモリ位置のサブアレイを指し得る。1つの例において、メモリのバンクは、サブバンク用の共有回路(例えば、ドライバ、信号線、制御ロジック)のうちの少なくとも一部分を有するサブバンクへ分割される。これにより、別個のアドレス指定およびアクセスが可能になる。チャネル、ランク、バンク、サブバンク、バンク群、またはメモリ位置の他の編成、および当該編成の組み合わせは、それらの物理リソースへの応用において重複し得ることが理解される。例えば、同じ物理メモリ位置は、ランクに属すこともあり得る特定のバンクとしての特定のチャネルを介してアクセスされ得る。故に、メモリリソースの編成は、排他的にではなく、包括的に理解される。
1つの例において、メモリデバイス840は、1つまたは複数のレジスタ844を含む。レジスタ844は、メモリデバイスの操作用の構成または設定を提供する1つまたは複数のストレージデバイスまたは記憶位置を表す。1つの例において、レジスタ844は、制御操作または管理操作の一部としてメモリコントローラ820によりアクセスされるデータを格納するためのメモリデバイス840の記憶位置を提供できる。1つの例において、レジスタ844は、1つまたは複数のモードレジスタを含む。1つの例において、レジスタ844は、1つまたは複数の多目的レジスタを含む。レジスタ844内の位置の構成により、メモリデバイス840は、異なる「モード」で動作するように構成され得る。コマンド情報により、モードに基づいて、メモリデバイス840内の異なる操作がトリガされ得る。加えて、または代替的に、異なるモードにより、モードに応じて、アドレス情報または他の信号線から異なる操作もトリガされ得る。レジスタ844の設定は、I/O設定の構成(例えば、タイミング、終端またはODT(オンダイ終端)846、ドライバ構成または他のI/O設定)を示し得る。
1つの例において、メモリデバイス840は、I/O842に関連付けられたインタフェースハードウェアの一部としてのODT846を含む。ODT846は、上述のように構成され得るとともに、指定された信号線へのインタフェースに適用されるインピーダンスの設定を提供し得る。1つの例において、ODT846は、DQ信号線に適用される。1つの例において、ODT846は、コマンド信号線に適用される。1つの例において、ODT846は、アドレス信号線に適用される。1つの例において、ODT846は、前述のものの任意の組み合わせに適用され得る。ODT設定は、メモリデバイスがアクセス操作の選択されたターゲットであるか、または非ターゲットデバイスであるかに基づいて変更され得る。ODT846設定は、終端線上のシグナリングのタイミングおよび反映に影響を及ぼし得る。ODT846に対する慎重な制御により、適用されるインピーダンスおよびロードの一致度が向上した、より高速な操作が可能になり得る。ODT846は、I/Oインタフェース842、822(例えば、DQ線用のODTまたはCA線用のODT)の特定の信号線に適用され得るが、必ずしも全ての信号線に適用されるわけではない。
メモリデバイス840は、メモリデバイス内の内部操作を制御するためのメモリデバイス内の制御ロジックを表すコントローラ850を含む。例えば、コントローラ850は、メモリコントローラ820により送信されるコマンドをデコードするとともに、コマンドを実行しまたは満足させるための内部操作を生成する。コントローラ850は、内部コントローラと称され得、ホストのメモリコントローラ820とは別個のものである。コントローラ850は、どのモードが選択されているかをレジスタ844に基づいて決定でき、メモリリソース860へのアクセスのための操作または他の操作の内部での実行を、選択されたモードに基づいて構成できる。コントローラ850は、メモリデバイス840内のビットのルーティングを制御するための制御信号を生成して、選択されたモード用の適切なインタフェースを提供し、コマンドを適切なメモリ位置またはアドレスへ送る。コントローラ850は、コマンド信号線およびアドレス信号線上で受信されるコマンドエンコーディングをデコードできるコマンドロジック852を含む。故に、コマンドロジック852は、コマンドデコーダであり得るか、またはコマンドデコーダを含み得る。コマンドロジック852を用いることで、メモリデバイスは、コマンドを識別でき、要求されたコマンドを実行するための内部操作を生成できる。
メモリコントローラ820を再び参照すると、メモリコントローラ820は、メモリデバイス840へ送信すべきコマンドを生成するためのロジックまたは回路を表すコマンド(CMD)ロジック824を含む。コマンドの生成は、スケジューリング前のコマンド、またはキューに入れられたコマンドの送信の準備を整えることを指し得る。概して、メモリサブシステム内のシグナリングは、メモリデバイスがコマンドを実行すべき1つまたは複数のメモリ位置を指示または選択するためのコマンド内またはコマンドに付随するアドレス情報を含む。メモリデバイス840のトランザクションのスケジューリングに応答して、メモリコントローラ820は、メモリデバイス840にコマンドを実行させるためにI/O822を介してコマンドを発行できる。1つの例において、メモリデバイス840のコントローラ850は、メモリコントローラ820からI/O842を介して受信したコマンドおよびアドレス情報を受信およびデコードする。受信したコマンドおよびアドレス情報に基づいて、コントローラ850は、メモリデバイス840内のロジックおよび回路の操作のタイミングを制御することでコマンドを実行できる。コントローラ850は、タイミング要件およびシグナリング要件など、メモリデバイス840内の規格または仕様への準拠を担う。メモリコントローラ820は、アクセスのスケジューリングおよび制御により、規格または仕様への準拠を実装できる。
メモリコントローラ820は、メモリデバイス840へ送信すべきトランザクションを生成および命令するためのロジックまたは回路を表すスケジューラ830を含む。1つの観点から、メモリコントローラ820の主な機能は、メモリデバイス840へのメモリアクセスおよび他のトランザクションをスケジューリングすることと言うことができる。そのようなスケジューリングは、プロセッサ810によるデータについての要求を実装するために、かつ、(例えば、リフレッシュに関連するコマンドの利用などで)データの完全性を維持するためにトランザクション自体を生成することを含み得る。トランザクションは、1つまたは複数のコマンドを含み得るので、クロックサイクルまたは単位間隔などの1つまたは複数のタイミングサイクルでのコマンドもしくはデータまたはそれらの両方の転送をもたらし得る。トランザクションは、読み出しもしくは書き込みもしくは関連するコマンドまたはそれらの組み合わせなどのアクセスのためのものであり得る。他のトランザクションは、構成、設定、データ完全性についてのメモリ管理コマンド、もしくは他のコマンドまたはそれらの組み合わせを含み得る。
メモリコントローラ820は通常、トランザクションの選択および順序付けを可能にしてシステム800の性能を向上させるためのスケジューラ830などのロジックを含む。故に、メモリコントローラ820は、未処理のトランザクションのうちのどれがどの順序でメモリデバイス840へ送信されるべきかを選択できる。これは通常、単純な先入れ先出しアルゴリズムよりもはるかに複雑なロジックを用いて実現される。メモリコントローラ820は、メモリデバイス840へのトランザクションの伝送を管理するとともに、トランザクションに関連するタイミングを管理する。1つの例において、トランザクションには確定的なタイミングがある。当該タイミングは、メモリコントローラ820により管理され得るとともに、トランザクションをスケジューラ830でどのようにスケジューリングするかの決定において用いられ得る。
1つの例において、メモリコントローラ820は、リフレッシュ(REF)ロジック826を含む。リフレッシュロジック826は、揮発性であるメモリリソースに用いられるが、確定的な状態を保持するためにリフレッシュされる必要があり得る。1つの例において、リフレッシュロジック826は、リフレッシュの位置と、実行すべきリフレッシュのタイプとを示す。リフレッシュロジック826は、メモリデバイス840内でのセルフリフレッシュをトリガできるか、もしくはリフレッシュコマンドを送信することにより外部リフレッシュ(自動リフレッシュコマンドと称され得る)を実行できるか、またはそれらの組み合わせを行うことができる。1つの例において、メモリデバイス840内のコントローラ850は、メモリデバイス840内でリフレッシュを適用するためのリフレッシュロジック854を含む。1つの例において、リフレッシュロジック854は、内部操作を生成して、メモリコントローラ820から受信された外部リフレッシュに従ってリフレッシュを実行する。リフレッシュロジック854は、リフレッシュがメモリデバイス840に向けられているか、またコマンドに応答してどのメモリリソース860をリフレッシュすべきかを決定することができる。
図9は、選択的オンダイECCバイパスを実装できるコンピューティングシステムの一例のブロック図である。システム900は、本明細書における任意の例に係るコンピューティングデバイスを表し、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、サーバ、ゲーミングシステムもしくはエンタテインメント制御システム、組み込みコンピューティングデバイスまたは他の電子デバイスであり得る。システム900は、システム100またはシステム200と互換性のあるシステムを組み込み得るシステムの1つの例である。
1つの例において、メモリ930は、メモリコントローラ922にデータを返す前に、読み出しデータにECCを実行するためのオンダイECC992を備える。1つの例において、メモリ930は、ECC992を選択的にバイパスするためのバイパス994を備える。内部ECCのバイパスは、本明細書の任意の説明に従うものであることができ、メモリ930は、リトライコマンドに応答して読み出しを実行する。メモリ930は、リトライコマンドに基づいて、データを返す前に、データにECCを実行する代わりに、メモリアレイからの生データを返す。
システム900は、プロセッサ910を含む。プロセッサ910は、システム900のために命令の処理または実行を提供するための任意のタイプのマイクロプロセッサ、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、処理コアもしくは他の処理ハードウェアまたはそれらの組み合わせを含み得る。プロセッサ910は、システム900のオペレーション全体を制御し、1つまたは複数のプログラマブル汎用または特定用途向けマイクロプロセッサ、デジタル信号プロセッサ(DSP)、プログラマブルコントローラ、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)またはそのようなデバイスの組み合わせであり得るか、またはそれらを含み得る。
1つの例において、システム900は、プロセッサ910に結合されているインタフェース912を含む。インタフェース912は、メモリサブシステム920またはグラフィックスインタフェースコンポーネント940など、より高帯域幅の接続を必要とする、システムコンポーネント用のより高速なインタフェースまたは高スループットインタフェースを表し得る。インタフェース912は、スタンドアロンコンポーネントであり得るか、またはプロセッサダイに統合され得るインタフェース回路を表す。インタフェース912は、回路としてプロセッサダイ上に統合され得るか、またはコンポーネントとしてシステムオンチップに統合され得る。存在する場合、グラフィックスインタフェース940は、システム900のユーザに視覚表示を提供するためのグラフィックスコンポーネントにインタフェースする。グラフィックスインタフェース940は、スタンドアロンコンポーネントであり得るか、またはプロセッサダイもしくはシステムオンチップに統合され得る。1つの例において、グラフィックスインタフェース940は、ユーザに出力を提供する高精細度(HD)ディスプレイまたは超高精細度(UHD)ディスプレイを駆動できる。1つの例において、ディスプレイは、タッチスクリーンディスプレイを含み得る。1つの例において、グラフィックスインタフェース940は、メモリ930に格納されたデータに基づいて、もしくはプロセッサ910により実行された操作に基づいて、またはそれらの両方に基づいて表示を生成する。
メモリサブシステム920は、システム900のメインメモリを表し、プロセッサ910により実行されるコードまたはルーチンの実行に用いられるデータ値のための記憶領域を提供する。メモリサブシステム920は、リードオンリメモリ(ROM)、フラッシュメモリ、DRAMなどの1つまたは複数の種類のランダムアクセスメモリ(RAM)、3DXP(3次元クロスポイント)もしくは他のメモリデバイスまたはそのようなデバイスの組み合わせなど、1つまたは複数のメモリデバイス930を含み得る。メモリ930は、とりわけ、システム900内での命令の実行用のソフトウェアプラットフォームを提供するためのオペレーティングシステム(OS)932を格納およびホストする。加えて、アプリケーション934は、メモリ930からOS932のソフトウェアプラットフォーム上で実行され得る。アプリケーション934は、プログラムを表す。当該プログラムは、1つまたは複数の機能の実行をするためのそれらの独自の動作ロジックを有する。処理936は、OS932もしくは1つまたは複数のアプリケーション934またはそれらの組み合わせに補助機能を提供するエージェントまたはルーチンを表す。OS932、アプリケーション934および処理936は、システム900用の機能を提供するためのソフトウェアロジックを提供する。1つの例において、メモリサブシステム920は、コマンドを生成してメモリ930へ発行するメモリコントローラであるメモリコントローラ922を含む。メモリコントローラ922は、プロセッサ910の物理的部分またはインタフェース912の物理的部分であり得ることが理解される。例えば、メモリコントローラ922は、例えばプロセッサダイまたはシステムオンチップに統合されるなど、プロセッサ910とともに回路に統合される統合メモリコントローラであり得る。
具体的には示されていないが、システム900は、メモリバス、グラフィックスバス、インタフェースバスまたは他のものなど、デバイス間の1つまたは複数のバスまたはバスシステムを含み得ることが理解される。バスまたは他の信号線は、コンポーネントを互いに通信可能にまたは電気的に結合できるか、またはコンポーネントを通信可能にかつ電気的に結合できる。バスは、物理通信線、ポイントツーポイント接続、ブリッジ、アダプタ、コントローラもしくは他の回路またはそれらの組み合わせを含み得る。バスは、例えば、システムバス、ペリフェラルコンポーネント相互接続(PCI)バス、ハイパートランスポートアーキテクチャバスもしくは業界標準アーキテクチャ(ISA)バス、スモールコンピュータシステムインタフェース(SCSI)バス、ユニバーサルシリアルバス(USB)もしくは他のバスのうちの1つまたは複数またはそれらの組み合わせを含み得る。
1つの例において、システム900は、インタフェース912に結合され得るインタフェース914を含む。インタフェース914は、インタフェース912よりも低速なインタフェースであり得る。1つの例において、インタフェース914は、スタンドアロンコンポーネントおよび集積回路を含み得るインタフェース回路を表す。1つの例において、複数のユーザインタフェースコンポーネントもしくはペリフェラルコンポーネントまたはそれらの両方がインタフェース914に結合する。ネットワークインタフェース950は、1つまたは複数のネットワークを介してリモートデバイス(例えば、サーバまたは他のコンピューティングデバイス)と通信する機能をシステム900に提供する。ネットワークインタフェース950は、イーサネット(登録商標)アダプタ、無線相互接続コンポーネント、セルラネットワーク相互接続コンポーネント、USB(ユニバーサルシリアルバス)または他の有線もしくは無線規格ベースインタフェースもしくはプロプライエタリインタフェースを含み得る。ネットワークインタフェース950は、リモートデバイスとデータを交換できる。当該交換は、メモリに格納されたデータの送信またはメモリに格納されたデータの受信を含み得る。
1つの例において、システム900は、1つまたは複数の入力/出力(I/O)インタフェース960を含む。I/Oインタフェース960は、1つまたは複数のインタフェースコンポーネントを含み得る。当該インタフェースコンポーネントを通じて、ユーザは、システム900とインタラクトする(例えば、音声、英数字、触覚/タッチまたは他のインタフェース)。周辺インタフェース970は、具体的には上述されていない任意のハードウェアインタフェースを含み得る。周辺は概して、システム900へ従属的に接続するデバイスを指す。従属的な接続は、システム900がソフトウェアプラットフォームもしくはハードウェアプラットフォームを提供する接続であるか、または、当該プラットフォーム上で操作が実行され、かつ当該プラットフォームを用いてユーザがインタラクトする接続である。
1つの例において、システム900は、データを不揮発性方式で格納するためのストレージサブシステム980を含む。1つの例において、特定のシステム実装では、ストレージ980の少なくとも特定のコンポーネントがメモリサブシステム920のコンポーネントと重複し得る。ストレージサブシステム980は、ストレージデバイス984を含む。ストレージデバイス984は、1つまたは複数の磁気ディスク、ソリッドステートディスク、3DXPディスクもしくは光ベースディスクまたはそれらの組み合わせなど、大量のデータを不揮発性方式で格納するための任意の従来の媒体であり得るか、または当該媒体を含み得る。ストレージ984は、コードまたは命令およびデータ986を永続的な状態で保持する(すなわち、システム900への電力が遮断されても値が保持される)。ストレージ984は一般に「メモリ」であると見なされ得るが、メモリ930は通常、命令をプロセッサ910に提供するための実行メモリまたは動作メモリである。ストレージ984は不揮発性であるが、メモリ930は揮発性メモリを含み得る(すなわち、システム900への電力が遮断された場合、データの値または状態は不定になる)。1つの例において、ストレージサブシステム980は、ストレージ984とインタフェースするためのコントローラ982を含む。1つの例において、コントローラ982は、インタフェース914またはプロセッサ910の物理的部分であるか、またはプロセッサ910およびインタフェース914の両方に回路またはロジックを含み得る。
電源902は、システム900のコンポーネントに電力を提供する。より具体的には、電源902は通常、システム900内の1つまたは複数の電力供給装置904とインタフェースして、システム900のコンポーネントに電力を提供する。1つの例において、電力供給装置904は、壁のコンセントへ差し込むためのAC−DC(交流−直流)アダプタを含む。そのようなAC電源は、再生可能エネルギー(例えば、太陽光発電)電源902であり得る。1つの例において、電源902は、外部AC−DC変換器などのDC電源を含む。1つの例において、電源902または電力供給装置904は、充電磁場への近接を介して充電するための無線充電ハードウェアを含む。1つの例において、電源902は、内部バッテリまたは燃料電池電源を含み得る。
図10は、選択的オンダイECCバイパスを実装できるモバイルデバイスの一例のブロック図である。システム1000は、コンピューティングタブレット、携帯電話もしくはスマートフォン、ウェアラブルコンピューティングデバイスもしくは他のモバイルデバイスまたは組み込みコンピューティングデバイスなどのモバイルコンピューティングデバイスを表す。これらのコンポーネントのうちの特定のものが一般的に示されているが、そのようなデバイスの全てのコンポーネントがシステム1000内に示されているわけではないことが理解される。システム1000は、システム100またはシステム200と互換性のあるシステムを組み込み得るシステムの1つの例である。
1つの例において、メモリ1062は、メモリコントローラ1064にデータを返す前に、読み出しデータにECCを実行するためのオンダイECC1092を備える。1つの例において、メモリ1062は、ECC1092を選択的にバイパスするためのバイパス1094を備える。内部ECCのバイパスは、本明細書の任意の説明に従うものであることができ、メモリ1062がリトライコマンドに応答して読み出しを実行する。メモリ1062は、リトライコマンドに基づいて、データを返す前に、データにECCを実行する代わりに、メモリアレイからの生データを返す。
システム1000は、システム1000の主な処理操作を実行するプロセッサ1010を含む。プロセッサ1010は、マイクロプロセッサ、アプリケーションプロセッサ、マイクロコントローラ、プログラマブルロジックデバイスまたは他の処理手段などの1つまたは複数の物理デバイスを含み得る。プロセッサ1010により実行される処理操作は、アプリケーションおよびデバイス機能が実行されるオペレーティングプラットフォームまたはオペレーティングシステムの実行を含む。処理操作は、人間のユーザもしくは他のデバイスとのI/O(入力/出力)に関連する操作、電力管理に関連する操作、別のデバイスへのシステム1000の接続に関連する操作またはそれらの組み合わせを含む。処理操作は、音声I/O、表示I/Oもしくは他のインタフェースまたはそれらの組み合わせに関連する操作も含み得る。プロセッサ1010は、メモリに格納されたデータを実行できる。プロセッサ1010は、メモリに格納されたデータを書き込むことができるか、または編集できる。
1つの例において、システム1000は、1つまたは複数のセンサ1012を含む。センサ1012は、外部センサへの埋め込みセンサもしくはインタフェースまたはそれらの組み合わせを表す。センサ1012により、システム1000は、システム1000が実装される環境またはデバイスの1つまたは複数の条件を監視または検出することが可能になる。センサ1012は、環境センサ(温度センサ、動き検出器、光検出器、カメラ、化学センサ(例えば、一酸化炭素センサ、二酸化炭素センサもしくは他の化学センサ)など)、圧力センサ、加速度計、ジャイロスコープ、医療センサもしくは生理機能センサ(例えば、バイオセンサ、心拍数モニタもしくは生理学的な属性を検出するための他のセンサ)もしくは他のセンサまたはそれらの組み合わせを含み得る。センサ1012は、指紋認識システム、顔検出もしくは認識システムまたはユーザの特徴を検出または認識する他のシステムなどの生体認証システム用のセンサも含み得る。センサ1012は、幅広く理解されるべきであり、システム1000とともに実装され得る多くの異なるタイプのセンサに対する限定として理解されるべきではない。1つの例において、1つまたは複数のセンサ1012は、プロセッサ1010に統合されたフロントエンド回路を介して、プロセッサ1010に結合する。1つの例において、1つまたは複数のセンサ1012は、システム1000の別のコンポーネントを介して、プロセッサ1010に結合する。
1つの例において、システム1000は、ハードウェア(例えば、音声ハードウェアおよび音声回路)と、コンピューティングデバイスへの音声機能の提供に関連するソフトウェア(例えば、ドライバ、コーデック)コンポーネントとを表すオーディオサブシステム1020を含む。音声機能は、スピーカ出力またはヘッドフォン出力およびマイク入力を含み得る。そのような機能のためのデバイスは、システム1000へ統合され得るか、またはシステム1000に接続され得る。1つの例において、ユーザは、プロセッサ1010により受信および処理される音声コマンドを提供することにより、システム1000とインタラクトする。
ディスプレイサブシステム1030は、ユーザに提示するための視覚表示を提供するハードウェア(例えば、ディスプレイデバイス)コンポーネントおよびソフトウェアコンポーネント(例えば、ドライバ)を表す。1つの例において、ディスプレイは、ユーザがコンピューティングデバイスとインタラクトするための触覚コンポーネントまたはタッチスクリーン要素を含む。ディスプレイサブシステム1030は、ユーザに表示を提供するために用いられる特定のスクリーンまたはハードウェアデバイスを含むディスプレイインタフェース1032を含む。1つの例において、ディスプレイインタフェース1032は、表示に関連する少なくともいくつかの処理を実行するための、プロセッサ1010(グラフィックスプロセッサなど)とは別個のロジックを含む。1つの例において、ディスプレイサブシステム1030は、ユーザへの出力および入力の両方を提供するタッチスクリーンデバイスを含む。1つの例において、ディスプレイサブシステム1030は、ユーザに出力を提供する高精細度(HD)ディスプレイまたは超高精細度(UHD)ディスプレイを含む。1つの例において、ディスプレイサブシステムは、タッチスクリーンディスプレイを含むか、またはタッチスクリーンディスプレイを駆動する。1つの例において、ディスプレイサブシステム1030は、メモリに格納されたデータに基づいて、もしくはプロセッサ1010により実行される操作に基づいて、またはそれらの両方に基づいて表示情報を生成する。
I/Oコントローラ1040は、ユーザとのインタラクションに関連するハードウェアデバイスおよびソフトウェアコンポーネントを表す。I/Oコントローラ1040は、オーディオサブシステム1020もしくはディスプレイサブシステム1030またはそれらの両方の一部であるハードウェアを管理するように動作し得る。加えて、I/Oコントローラ1040は、システム1000に接続する追加のデバイスのための接続ポイントを示す。当該接続ポイントを通じて、ユーザは、システムとインタラクトし得る。例えば、システム1000に取り付けられ得るデバイスは、マイクデバイス、スピーカシステムもしくはステレオシステム、ビデオシステムもしくは他のディスプレイデバイス、キーボードデバイスもしくはキーパッドデバイス、ボタン/スイッチ、もしくは、カードリーダなどの特定の応用品とともに用いるための他のI/Oデバイス、または他のデバイスを含み得る。
上述のように、I/Oコントローラ1040は、オーディオサブシステム1020もしくはディスプレイサブシステム1030またはそれらの両方とインタラクトできる。例えば、マイクまたは他の音声デバイスを通じた入力により、システム1000の1つまたは複数のアプリケーションまたは機能についての入力またはコマンドが提供され得る。加えて、音声出力は、ディスプレイ出力の代わりに、またはディスプレイ出力に加えて提供され得る。別の例において、ディスプレイサブシステムがタッチスクリーンを含む場合、ディスプレイデバイスは、少なくとも部分的にI/Oコントローラ1040により管理され得る入力デバイスとしても機能する。I/Oコントローラ1040により管理されるI/O機能を提供するための追加のボタンまたはスイッチもシステム1000上に存在し得る。
1つの例において、I/Oコントローラ1040は、加速度計、カメラ、光センサもしくは他の環境センサ、ジャイロスコープ、全地球測位システム(GPS)もしくはシステム1000に含まれ得る他のハードウェアまたはセンサ1012などのデバイスを管理する。入力は、直接的なユーザインタラクションの一部であり得るだけでなく、その操作(ノイズのフィルタリング、輝度検出のための表示の調節、カメラ用のフラッシュの適用または他の特徴など)に影響を及ぼすようにシステムに環境入力を提供することであり得る。
1つの例において、システム1000は、バッテリの電力使用量と、バッテリの充電と省電力動作に関連する機能とを管理する電力管理1050を含む。電力管理1050は、システム1000のコンポーネントに電力を提供する電源1052からの電力を管理する。1つの例において、電源1052は、壁のコンセントへ差し込むためのAC−DC(交流−直流)アダプタを含む。そのようなAC電源は、再生可能エネルギー(例えば、太陽光発電、動きベース電力)であり得る。1つの例において、電源1052は、外部AC−DC変換器などのDC電源により提供され得るDC電力のみを含む。1つの例において、電源1052は、充電磁場への近接を介して充電するための無線充電ハードウェアを含む。1つの例において、電源1052は、内部バッテリまたは燃料電池電源を含み得る。
メモリサブシステム1060は、情報をシステム1000に格納するためのメモリデバイス1062を含む。メモリサブシステム1060は、不揮発性(メモリデバイスへの電力が遮断された場合に状態が変わらない)メモリデバイスもしくは揮発性(メモリデバイスへの電力が遮断された場合に状態が不定になる)メモリデバイスまたはそれらの組み合わせを含み得る。メモリ1060は、アプリケーションデータ、ユーザーデータ、音楽、写真、文書または他のデータだけでなく、システム1000のアプリケーションおよび機能の実行に関連するシステムデータ(長期間のものであるかまたは一時的なものであるかを問わない)を格納できる。1つの例において、メモリサブシステム1060は、メモリコントローラ1064(システム1000の制御部の一部とも見なされ得るとともに、プロセッサ1010の一部と潜在的に見なされ得る)を含む。メモリコントローラ1064は、コマンドを生成および発行してメモリデバイス1062へのアクセスを制御するスケジューラを含む。
接続1070は、ハードウェアデバイス(例えば、無線コネクタもしくは有線コネクタおよび通信ハードウェアまたは有線ハードウェアと無線ハードウェアとの組み合わせ)およびシステム1000が外部デバイスと通信することを可能にするためのソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)を含む。外部デバイスは、他のコンピューティングデバイス、無線アクセスポイントまたは基地局などの別個のデバイス、および、ヘッドセット、プリンタまたは他のデバイスなどの周辺機器であり得る。1つの例において、システム1000は、メモリへの格納のために、またはディスプレイデバイスでの表示のために、外部デバイスとデータを交換する。交換されるデータは、データの読み出し、書き込みまたは編集のためにメモリに格納されるデータまたはメモリに既に格納されているデータを含み得る。
接続1070は、複数の異なるタイプの接続を含み得る。一般化するために、システム1000は、セルラ接続1072および無線接続1074とともに示される。セルラ接続1072は概して、例えばGSM(登録商標)(グローバルシステムフォーモバイルコミュニケーションズ)を介して提供されるなど無線キャリアにより提供されるセルラネットワーク接続もしくはその変形規格もしくは派生規格、もしくはCDMA(符号分割多重アクセス)もしくはその変形規格もしくは派生規格、TDM(時分割多重化)もしくはその変形規格もしくは派生規格、LTE(「4G」とも称されるロングタームエボリューション)、5G、または他のセルラサービス規格を指す。無線接続1074は、セルラではない無線接続を指し、パーソナルエリアネットワーク(Bluetooth(登録商標)など)、ローカルエリアネットワーク(WiFi(登録商標)など)もしくはワイドエリアネットワーク(WiMAXなど)もしくは他の無線通信またはそれらの組み合わせを含み得る。無線通信は、非固体媒体を通じた変調済み電磁放射線の使用を通じてデータを転送することを指す。有線通信は、固体通信媒体によって生じる。
周辺接続1080は、ハードウェアインタフェースおよびコネクタならびに周辺接続を行うためのソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)を含む。システム1000は、他のコンピューティングデバイスへの(「外への」1082)周辺デバイスであり、かつ、システム1000へ(「外から」1084)接続される周辺デバイスを備え得ることが理解される。システム1000は一般的に、システム1000上のコンテンツの管理(例えば、ダウンロード、アップロード、変更、同期)などの目的で他のコンピューティングデバイスに接続する「ドッキング」コネクタを有する。加えて、ドッキングコネクタにより、例えばオーディオビジュアルシステムまたは他のシステムに出力されるコンテンツをシステム1000が制御することを可能にする特定の周辺機器にシステム1000が接続することが可能になり得る。
プロプライエタリドッキングコネクタまたは他のプロプライエタリ接続ハードウェアに加え、システム1000は、一般的なコネクタまたは規格ベースのコネクタを介して周辺接続1080を行い得る。一般的なタイプは、ユニバーサルシリアルバス(USB)コネクタ(多数の異なるハードウェアインタフェースのいずれかを含み得る)、MiniDisplayPort(MDP)、高精細度マルチメディアインタフェース(HDMI(登録商標))を含むDisplayPortまたは他のタイプを含み得る。
概して本明細書の説明に関して、1つの例において、メモリコントローラは、メモリデバイスに結合されているハードウェアインタフェースと、メモリデバイスのためのリトライコマンドを生成するコマンドロジックと、を備え、リトライコマンドは、メモリデバイスのECC回路によるエラー検査訂正(ECC)を適用せずに読み出しデータを返すようにメモリデバイスをトリガするようになっている。
1つの例において、コマンドロジックは、リトライコマンドを示すために、コマンドエンコーディングを有するコマンドを生成するようになっている。1つの例において、コマンドロジックは、リトライコマンドを示すために、同じアドレスに一連の連続する読み出しコマンドを生成するようになっている。1つの例において、コマンドロジックは、メモリデバイスのモードレジスタをリトライコマンドモードに設定するために、モードレジスタ書き込みコマンドを生成するようになっており、コマンドロジックは、メモリデバイスがリトライコマンドを示すためにリトライコマンドモードである間、送信すべき読み出しコマンドを生成するようになっている。1つの例において、コマンドロジックは、前の読み出しコマンドに応答して受信されたエラーデータの受信に応答して、リトライコマンドを生成するようになっている。1つの例において、ハードウェアインタフェースは、前の読み出しコマンドに応答して、メモリデバイスから、検出済み訂正不可能エラー(DUE)の指示を受信するようになっており、コマンドロジックは、メモリデバイスからのDUEの指示に応答してリトライコマンドを生成するようになっている。1つの例において、メモリデバイスは、ダブルデータレート(DDR)規格と互換性のあるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスを備える。
概して本明細書の説明に関して、1つの例において、メモリデバイスは、読み出しデータを受信し、メモリデバイスの内部で読み出しデータにECCを適用し、読み出しコマンドに応答して、訂正済みデータを返すエラー検査訂正(ECC)回路と、読み出しコマンドの後にリトライコマンドを受信するハードウェアインタフェースであって、リトライコマンドに応答して、ECC回路によるECCを適用せずに読み出しデータを返すようになっている、ハードウェアインタフェースと、を備える。
1つの例において、リトライコマンドは、リトライコマンドを示すために、コマンドエンコーディングを有するコマンドを含む。1つの例において、リトライコマンドは、他の介在コマンドを伴わない一連の読み出しコマンドを含む。1つの例において、メモリデバイスは、読み出しコマンドのアドレスを記憶するレジスタをさらに備え、メモリデバイスは、レジスタに記憶されている読み出しコマンドのアドレスが他の介在コマンドを伴わずに送信された後続の読み出しコマンドのアドレスと一致する場合、一連の読み出しコマンドをリトライコマンドとしてデコードするようになっている。1つの例において、メモリデバイスは、リトライコマンドモードを示すためのフィールドを記憶するモードレジスタをさらに備え、リトライコマンドは、リトライコマンドモードにおいて受信された読み出しコマンドを含む。1つの例において、ハードウェアインタフェースは、ECCを適用せずに読み出しデータを返すためにECC回路をバイパスするようになっている。1つの例において、ECC回路は、リトライコマンドを送信するようにホストをトリガするために、検出済み訂正不可能エラー(DUE)をホストに示すようになっている。1つの例において、メモリデバイスは、ダブルデータレート(DDR)規格と互換性のあるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスを含む。
概して本明細書の説明に関して、1つの例において、システムは、読み出しコマンドに応答して読み出しデータにECCを内部で適用し、読み出しコマンドに応答して、訂正済みデータを返すエラー検査訂正(ECC)回路を有するメモリデバイスと、読み出しコマンドを生成し、読み出しコマンドの後にリトライコマンドを生成するコマンドロジックを有するメモリコントローラと、を備え、リトライコマンドは、メモリデバイスのECC回路によるECCを適用せずに読み出しデータを返すようにメモリデバイスをトリガするようになっている。
1つの例において、リトライコマンドは、リトライコマンドを示すために、コマンドエンコーディングを有するコマンドを含む。1つの例において、リトライコマンドは、他の介在コマンドを伴わない一連の読み出しコマンドを含み、メモリデバイスは、一連の読み出しコマンドをリトライコマンドとしてデコードするようになっている。1つの例において、メモリデバイスは、リトライコマンドモードを示すためのフィールドを記憶するモードレジスタをさらに備え、メモリコントローラは、メモリデバイスがリトライコマンドを示すようにリトライコマンドモードである間、読み出しコマンドを送信するようになっている。1つの例において、メモリデバイスは、ダブルデータレート(DDR)規格と互換性のあるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスを含む。1つの例において、システムは、メモリコントローラに結合されているホストプロセッサデバイス、ホストプロセッサに通信可能に結合されているディスプレイ、ホストプロセッサに通信可能に結合されているネットワークインタフェース、またはシステムに電力を供給するバッテリのうちの1つまたは複数をさらに含む。
本明細書に示されるフロー図は、様々なプロセスアクションのシーケンスの例を提供する。フロー図は、ソフトウェアまたはファームウェアルーチン、ならびに物理的な操作によって実行される動作を示すことができる。フロー図は、ハードウェアおよび/またはソフトウェアで実装できる、有限状態機械(FSM)の状態の実装の一例を示すことができる。特定のシーケンスまたは順序で示されているが、特に明記しない限り、動作の順序は変更できる。したがって、図示された図表は単なる例として理解されるべきであり、プロセスは異なる順序で実行でき、いくつかの動作は並列に実行することができる。さらに、1つまたは複数のアクションを省略でき、したがって、すべての実装がすべてのアクションを実行するわけではない。
様々な操作または機能が本明細書に記載されている限り、それらはソフトウェアコード、命令、コンフィグレーション、および/またはデータとして記載または定義することができる。コンテンツは、直接実行可能(「オブジェクト」または「実行可能」形式)、ソースコード、または差分コード(「デルタ」または「パッチ」コード)とすることができる。本明細書に記載されているソフトウェアコンテンツは、コンテンツが格納された製品を介して、または通信インタフェースを介してデータを送信するための通信インタフェースを動作させる方法を介して提供することができる。機械可読記憶媒体は、記述された機能または操作を機械に実行させることができ、記録可能/記録不可能な媒体(例えば、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイスなど)などの機械(例えば、コンピューティングデバイス、電子システムなど)によってアクセス可能な形式で情報を格納する任意の機構を含む。通信インタフェースは、メモリバスインタフェース、プロセッサバスインタフェース、インターネット接続、ディスクコントローラなど、別のデバイスと通信するためのハードワイヤード、無線、光などの媒体のいずれかとインタフェースする任意の機構を含む。通信インタフェースは、ソフトウェアコンテンツを記述するデータ信号を提供するために、コンフィグレーションパラメータを提供すること、および/または通信インタフェースを準備する信号を送信することによって構成することができる。通信インタフェースは、通信インタフェースに送信される1つまたは複数のコマンドまたは信号を介してアクセスすることができる。
本明細書に記載される様々な構成要素は、記載される操作または機能を実行するための手段とすることができる。本書に記載される各構成要素は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む。構成要素は、ソフトウェアモジュール、ハードウェアモジュール、専用ハードウェア(例えば、特定用途向けハードウェア、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)など)、組み込みコントローラ、ハードワイヤード回路などとして実装することができる。
本明細書に記載される内容に加えて、開示される内容および本発明の実装に対して、それらの範囲から逸脱することなく様々な修正を行うことができる。したがって、本明細書の説明および例は、限定的な意味ではなく、例示的な意味で解釈されるべきである。本発明の範囲は、以下の特許請求の範囲を参照することによってのみ判断されるべきである。(項目1) メモリデバイスに結合されているハードウェアインタフェースと、
上記メモリデバイスのためのリトライコマンドを生成するコマンドロジックと、
を備え、
上記リトライコマンドは、上記メモリデバイスのECC回路によるエラー検査訂正(ECC)を適用せずに読み出しデータを返すように上記メモリデバイスをトリガするようになっている、メモリコントローラ。
(項目2) 上記コマンドロジックは、上記リトライコマンドを示すために、コマンドエンコーディングを有するコマンドを生成するようになっている、項目1に記載のメモリコントローラ。
(項目3) 上記コマンドロジックは、上記リトライコマンドを示すために、同じアドレスに一連の連続する読み出しコマンドを生成するようになっている、項目1に記載のメモリコントローラ。
(項目4) 上記コマンドロジックは、上記メモリデバイスのモードレジスタをリトライコマンドモードに設定するために、モードレジスタ書き込みコマンドを生成するようになっており、
上記コマンドロジックは、上記メモリデバイスが上記リトライコマンドを示すために上記リトライコマンドモードである間、送信すべき読み出しコマンドを生成するようになっている、項目1に記載のメモリコントローラ。
(項目5) 上記コマンドロジックは、前の読み出しコマンドに応答して受信されたエラーデータの受信に応答して、上記リトライコマンドを生成するようになっている、項目1に記載のメモリコントローラ。
(項目6) 上記ハードウェアインタフェースは、上記前の読み出しコマンドに応答して、上記メモリデバイスから、検出済み訂正不可能エラー(DUE)の指示を受信するようになっており、上記コマンドロジックは、上記メモリデバイスからの上記DUEの上記指示に応答して上記リトライコマンドを生成するようになっている、項目5に記載のメモリコントローラ。
(項目7) 上記メモリデバイスは、ダブルデータレート(DDR)規格と互換性のあるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスを備える、項目1に記載のメモリコントローラ。
(項目8) メモリデバイスであって、
読み出しデータを受信し、上記メモリデバイスの内部で上記読み出しデータにECCを適用し、読み出しコマンドに応答して、訂正済みデータを返すエラー検査訂正(ECC)回路と、
上記読み出しコマンドの後にリトライコマンドを受信するハードウェアインタフェースであって、上記リトライコマンドに応答して、上記ECC回路によるECCを適用せずに上記読み出しデータを返すようになっている、ハードウェアインタフェースと、
を備える、メモリデバイス。
(項目9) 上記リトライコマンドは、上記リトライコマンドを示すために、コマンドエンコーディングを有するコマンドを含む、項目8に記載のメモリデバイス。
(項目10) 上記リトライコマンドは、他の介在コマンドを伴わない一連の読み出しコマンドを含む、項目8に記載のメモリデバイス。
(項目11) 上記読み出しコマンドのアドレスを記憶するレジスタをさらに備え、上記メモリデバイスは、上記レジスタに記憶されている上記読み出しコマンドの上記アドレスが他の介在コマンドを伴わずに送信された後続の読み出しコマンドのアドレスと一致する場合、上記一連の読み出しコマンドを上記リトライコマンドとしてデコードするようになっている、項目10に記載のメモリデバイス。
(項目12) リトライコマンドモードを示すためのフィールドを記憶するモードレジスタをさらに備え、
上記リトライコマンドは、上記リトライコマンドモードにおいて受信された読み出しコマンドを含む、項目8に記載のメモリデバイス。
(項目13) 上記ハードウェアインタフェースは、ECCを適用せずに上記読み出しデータを返すために上記ECC回路をバイパスするようになっている、項目8に記載のメモリデバイス。
(項目14) 上記ECC回路は、上記リトライコマンドを送信するようにホストをトリガするために、検出済み訂正不可能エラー(DUE)を上記ホストに示すようになっている、項目8に記載のメモリデバイス。
(項目15) 上記メモリデバイスは、ダブルデータレート(DDR)規格と互換性のあるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスを含む、項目8に記載のメモリデバイス。
(項目16) 読み出しコマンドに応答して読み出しデータにECCを内部で適用し、上記読み出しコマンドに応答して、訂正済みデータを返すエラー検査訂正(ECC)回路を有するメモリデバイスと、
上記読み出しコマンドを生成し、上記読み出しコマンドの後にリトライコマンドを生成するコマンドロジックを有するメモリコントローラと、
を備え、
上記リトライコマンドは、上記メモリデバイスの上記ECC回路によるECCを適用せずに読み出しデータを返すように上記メモリデバイスをトリガするようになっている、データを記憶するシステム。
(項目17) 上記リトライコマンドは、上記リトライコマンドを示すために、コマンドエンコーディングを有するコマンドを含む、項目16に記載のシステム。
(項目18) 上記リトライコマンドは、他の介在コマンドを伴わない一連の読み出しコマンドを含み、上記メモリデバイスは、上記一連の読み出しコマンドを上記リトライコマンドとしてデコードするようになっている、項目16に記載のシステム。
(項目19) 上記メモリデバイスは、リトライコマンドモードを示すためのフィールドを記憶するモードレジスタをさらに備え、
上記メモリコントローラは、上記メモリデバイスが上記リトライコマンドを示すように上記リトライコマンドモードである間、読み出しコマンドを送信するようになっている、項目16に記載のシステム。
(項目20) 上記メモリデバイスは、ダブルデータレート(DDR)規格と互換性のあるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスを含む、項目16に記載のシステム。
(項目21) 上記メモリコントローラに結合されているホストプロセッサデバイス、
ホストプロセッサに通信可能に結合されているディスプレイ、
ホストプロセッサに通信可能に結合されているネットワークインタフェース、または、
上記システムに電力を供給するバッテリ、
のうちの1つまたは複数をさらに備える、項目16に記載のシステム。
上記メモリデバイスのためのリトライコマンドを生成するコマンドロジックと、
を備え、
上記リトライコマンドは、上記メモリデバイスのECC回路によるエラー検査訂正(ECC)を適用せずに読み出しデータを返すように上記メモリデバイスをトリガするようになっている、メモリコントローラ。
(項目2) 上記コマンドロジックは、上記リトライコマンドを示すために、コマンドエンコーディングを有するコマンドを生成するようになっている、項目1に記載のメモリコントローラ。
(項目3) 上記コマンドロジックは、上記リトライコマンドを示すために、同じアドレスに一連の連続する読み出しコマンドを生成するようになっている、項目1に記載のメモリコントローラ。
(項目4) 上記コマンドロジックは、上記メモリデバイスのモードレジスタをリトライコマンドモードに設定するために、モードレジスタ書き込みコマンドを生成するようになっており、
上記コマンドロジックは、上記メモリデバイスが上記リトライコマンドを示すために上記リトライコマンドモードである間、送信すべき読み出しコマンドを生成するようになっている、項目1に記載のメモリコントローラ。
(項目5) 上記コマンドロジックは、前の読み出しコマンドに応答して受信されたエラーデータの受信に応答して、上記リトライコマンドを生成するようになっている、項目1に記載のメモリコントローラ。
(項目6) 上記ハードウェアインタフェースは、上記前の読み出しコマンドに応答して、上記メモリデバイスから、検出済み訂正不可能エラー(DUE)の指示を受信するようになっており、上記コマンドロジックは、上記メモリデバイスからの上記DUEの上記指示に応答して上記リトライコマンドを生成するようになっている、項目5に記載のメモリコントローラ。
(項目7) 上記メモリデバイスは、ダブルデータレート(DDR)規格と互換性のあるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスを備える、項目1に記載のメモリコントローラ。
(項目8) メモリデバイスであって、
読み出しデータを受信し、上記メモリデバイスの内部で上記読み出しデータにECCを適用し、読み出しコマンドに応答して、訂正済みデータを返すエラー検査訂正(ECC)回路と、
上記読み出しコマンドの後にリトライコマンドを受信するハードウェアインタフェースであって、上記リトライコマンドに応答して、上記ECC回路によるECCを適用せずに上記読み出しデータを返すようになっている、ハードウェアインタフェースと、
を備える、メモリデバイス。
(項目9) 上記リトライコマンドは、上記リトライコマンドを示すために、コマンドエンコーディングを有するコマンドを含む、項目8に記載のメモリデバイス。
(項目10) 上記リトライコマンドは、他の介在コマンドを伴わない一連の読み出しコマンドを含む、項目8に記載のメモリデバイス。
(項目11) 上記読み出しコマンドのアドレスを記憶するレジスタをさらに備え、上記メモリデバイスは、上記レジスタに記憶されている上記読み出しコマンドの上記アドレスが他の介在コマンドを伴わずに送信された後続の読み出しコマンドのアドレスと一致する場合、上記一連の読み出しコマンドを上記リトライコマンドとしてデコードするようになっている、項目10に記載のメモリデバイス。
(項目12) リトライコマンドモードを示すためのフィールドを記憶するモードレジスタをさらに備え、
上記リトライコマンドは、上記リトライコマンドモードにおいて受信された読み出しコマンドを含む、項目8に記載のメモリデバイス。
(項目13) 上記ハードウェアインタフェースは、ECCを適用せずに上記読み出しデータを返すために上記ECC回路をバイパスするようになっている、項目8に記載のメモリデバイス。
(項目14) 上記ECC回路は、上記リトライコマンドを送信するようにホストをトリガするために、検出済み訂正不可能エラー(DUE)を上記ホストに示すようになっている、項目8に記載のメモリデバイス。
(項目15) 上記メモリデバイスは、ダブルデータレート(DDR)規格と互換性のあるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスを含む、項目8に記載のメモリデバイス。
(項目16) 読み出しコマンドに応答して読み出しデータにECCを内部で適用し、上記読み出しコマンドに応答して、訂正済みデータを返すエラー検査訂正(ECC)回路を有するメモリデバイスと、
上記読み出しコマンドを生成し、上記読み出しコマンドの後にリトライコマンドを生成するコマンドロジックを有するメモリコントローラと、
を備え、
上記リトライコマンドは、上記メモリデバイスの上記ECC回路によるECCを適用せずに読み出しデータを返すように上記メモリデバイスをトリガするようになっている、データを記憶するシステム。
(項目17) 上記リトライコマンドは、上記リトライコマンドを示すために、コマンドエンコーディングを有するコマンドを含む、項目16に記載のシステム。
(項目18) 上記リトライコマンドは、他の介在コマンドを伴わない一連の読み出しコマンドを含み、上記メモリデバイスは、上記一連の読み出しコマンドを上記リトライコマンドとしてデコードするようになっている、項目16に記載のシステム。
(項目19) 上記メモリデバイスは、リトライコマンドモードを示すためのフィールドを記憶するモードレジスタをさらに備え、
上記メモリコントローラは、上記メモリデバイスが上記リトライコマンドを示すように上記リトライコマンドモードである間、読み出しコマンドを送信するようになっている、項目16に記載のシステム。
(項目20) 上記メモリデバイスは、ダブルデータレート(DDR)規格と互換性のあるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスを含む、項目16に記載のシステム。
(項目21) 上記メモリコントローラに結合されているホストプロセッサデバイス、
ホストプロセッサに通信可能に結合されているディスプレイ、
ホストプロセッサに通信可能に結合されているネットワークインタフェース、または、
上記システムに電力を供給するバッテリ、
のうちの1つまたは複数をさらに備える、項目16に記載のシステム。
Claims (21)
- メモリデバイスに結合されているハードウェアインタフェースと、
前記メモリデバイスのためのリトライコマンドを生成するコマンドロジックと、
を備え、
前記リトライコマンドは、前記メモリデバイスのECC回路によるエラー検査訂正(ECC)を適用せずに読み出しデータを返すように前記メモリデバイスをトリガするようになっている、メモリコントローラ。 - 前記コマンドロジックは、前記リトライコマンドを示すために、コマンドエンコーディングを有するコマンドを生成するようになっている、請求項1に記載のメモリコントローラ。
- 前記コマンドロジックは、前記リトライコマンドを示すために、同じアドレスに一連の連続する読み出しコマンドを生成するようになっている、請求項1に記載のメモリコントローラ。
- 前記コマンドロジックは、前記メモリデバイスのモードレジスタをリトライコマンドモードに設定するために、モードレジスタ書き込みコマンドを生成するようになっており、
前記コマンドロジックは、前記メモリデバイスが前記リトライコマンドを示すために前記リトライコマンドモードである間、送信すべき読み出しコマンドを生成するようになっている、請求項1に記載のメモリコントローラ。 - 前記コマンドロジックは、前の読み出しコマンドに応答して受信されたエラーデータの受信に応答して、前記リトライコマンドを生成するようになっている、請求項1〜4のいずれか一項に記載のメモリコントローラ。
- 前記ハードウェアインタフェースは、前記前の読み出しコマンドに応答して、前記メモリデバイスから、検出済み訂正不可能エラー(DUE)の指示を受信するようになっており、前記コマンドロジックは、前記メモリデバイスからの前記DUEの前記指示に応答して前記リトライコマンドを生成するようになっている、請求項5に記載のメモリコントローラ。
- 前記メモリデバイスは、ダブルデータレート(DDR)規格と互換性のあるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスを備える、請求項1〜6のいずれか一項に記載のメモリコントローラ。
- メモリデバイスであって、
読み出しデータを受信し、前記メモリデバイスの内部で前記読み出しデータにECCを適用し、読み出しコマンドに応答して、訂正済みデータを返すエラー検査訂正(ECC)回路と、
前記読み出しコマンドの後にリトライコマンドを受信するハードウェアインタフェースであって、前記リトライコマンドに応答して、前記ECC回路によるECCを適用せずに前記読み出しデータを返すようになっている、ハードウェアインタフェースと、
を備える、メモリデバイス。 - 前記リトライコマンドは、前記リトライコマンドを示すために、コマンドエンコーディングを有するコマンドを含む、請求項8に記載のメモリデバイス。
- 前記リトライコマンドは、他の介在コマンドを伴わない一連の読み出しコマンドを含む、請求項8に記載のメモリデバイス。
- 前記読み出しコマンドのアドレスを記憶するレジスタをさらに備え、前記メモリデバイスは、前記レジスタに記憶されている前記読み出しコマンドの前記アドレスが他の介在コマンドを伴わずに送信された後続の読み出しコマンドのアドレスと一致する場合、前記一連の読み出しコマンドを前記リトライコマンドとしてデコードするようになっている、請求項10に記載のメモリデバイス。
- リトライコマンドモードを示すためのフィールドを記憶するモードレジスタをさらに備え、
前記リトライコマンドは、前記リトライコマンドモードにおいて受信された読み出しコマンドを含む、請求項8に記載のメモリデバイス。 - 前記ハードウェアインタフェースは、ECCを適用せずに前記読み出しデータを返すために前記ECC回路をバイパスするようになっている、請求項8〜12のいずれか一項に記載のメモリデバイス。
- 前記ECC回路は、前記リトライコマンドを送信するようにホストをトリガするために、検出済み訂正不可能エラー(DUE)を前記ホストに示すようになっている、請求項8〜13のいずれか一項に記載のメモリデバイス。
- 前記メモリデバイスは、ダブルデータレート(DDR)規格と互換性のあるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスを含む、請求項8〜14のいずれか一項に記載のメモリデバイス。
- 読み出しコマンドに応答して読み出しデータにECCを内部で適用し、前記読み出しコマンドに応答して、訂正済みデータを返すエラー検査訂正(ECC)回路を有するメモリデバイスと、
前記読み出しコマンドを生成し、前記読み出しコマンドの後にリトライコマンドを生成するコマンドロジックを有するメモリコントローラと、
を備え、
前記リトライコマンドは、前記メモリデバイスの前記ECC回路によるECCを適用せずに読み出しデータを返すように前記メモリデバイスをトリガするようになっている、データを記憶するシステム。 - 前記リトライコマンドは、前記リトライコマンドを示すために、コマンドエンコーディングを有するコマンドを含む、請求項16に記載のシステム。
- 前記リトライコマンドは、他の介在コマンドを伴わない一連の読み出しコマンドを含み、前記メモリデバイスは、前記一連の読み出しコマンドを前記リトライコマンドとしてデコードするようになっている、請求項16に記載のシステム。
- 前記メモリデバイスは、リトライコマンドモードを示すためのフィールドを記憶するモードレジスタをさらに備え、
前記メモリコントローラは、前記メモリデバイスが前記リトライコマンドを示すように前記リトライコマンドモードである間、読み出しコマンドを送信するようになっている、請求項16に記載のシステム。 - 前記メモリデバイスは、ダブルデータレート(DDR)規格と互換性のあるシンクロナスダイナミックランダムアクセスメモリ(SDRAM)デバイスを含む、請求項16〜19のいずれか一項に記載のシステム。
- 前記メモリコントローラに結合されているホストプロセッサデバイス、
ホストプロセッサに通信可能に結合されているディスプレイ、
ホストプロセッサに通信可能に結合されているネットワークインタフェース、または、
前記システムに電力を供給するバッテリ、
のうちの1つまたは複数をさらに備える、請求項16〜20のいずれか一項に記載のシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/875,642 US11314589B2 (en) | 2020-05-15 | 2020-05-15 | Read retry to selectively disable on-die ECC |
US16/875,642 | 2020-05-15 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021179962A true JP2021179962A (ja) | 2021-11-18 |
Family
ID=72236675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020194691A Pending JP2021179962A (ja) | 2020-05-15 | 2020-11-24 | オンダイeccを選択的に無効化するための読み出しリトライ |
Country Status (3)
Country | Link |
---|---|
US (2) | US11314589B2 (ja) |
EP (1) | EP3910475B1 (ja) |
JP (1) | JP2021179962A (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11048583B1 (en) * | 2015-09-11 | 2021-06-29 | Green Mountain Semiconductor Inc. | Flexible, low-latency error correction architecture for semiconductor memory products |
US11687407B2 (en) * | 2020-08-27 | 2023-06-27 | Micron Technologies, Inc. | Shared error correction code (ECC) circuitry |
US11907544B2 (en) | 2020-08-31 | 2024-02-20 | Micron Technology, Inc. | Automated error correction with memory refresh |
US11593197B2 (en) | 2020-12-23 | 2023-02-28 | Samsung Electronics Co., Ltd. | Storage device with data quality metric and selectable data recovery scheme |
US11586502B2 (en) * | 2021-05-19 | 2023-02-21 | Micron Technology, Inc. | Performance and deadlock mitigation during a memory die fail storm |
KR20230062172A (ko) * | 2021-10-29 | 2023-05-09 | 삼성전자주식회사 | 메모리 장치, 이를 포함하는 메모리 모듈 및 메모리 컨트롤러의 동작 방법 |
US11955989B2 (en) | 2022-08-21 | 2024-04-09 | Nanya Technology Corporation | Memory device and test method thereof |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130034522A (ko) * | 2011-09-28 | 2013-04-05 | 삼성전자주식회사 | 비휘발성 메모리 장치의 데이터 리드 방법, 및 이를 수행하는 장치 |
US9811420B2 (en) | 2015-03-27 | 2017-11-07 | Intel Corporation | Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC) |
US10127101B2 (en) | 2015-08-28 | 2018-11-13 | Intel Corporation | Memory device error check and scrub mode and error transparency |
US20170110178A1 (en) * | 2015-09-17 | 2017-04-20 | Intel Corporation | Hybrid refresh with hidden refreshes and external refreshes |
CN109074851B (zh) | 2016-05-02 | 2023-09-22 | 英特尔公司 | 利用额外系统位的内部错误校验和校正(ecc) |
KR102553780B1 (ko) | 2018-05-10 | 2023-07-10 | 에스케이하이닉스 주식회사 | 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 |
US11068340B2 (en) * | 2019-06-19 | 2021-07-20 | Samsung Electronics Co., Ltd. | Semiconductor memory devices and memory systems |
US11210167B2 (en) | 2019-10-28 | 2021-12-28 | Intel Corporation | Memory wordline isolation for improvement in reliability, availability, and scalability (RAS) |
US11599481B2 (en) * | 2019-12-12 | 2023-03-07 | Western Digital Technologies, Inc. | Error recovery from submission queue fetching errors |
-
2020
- 2020-05-15 US US16/875,642 patent/US11314589B2/en active Active
- 2020-11-24 JP JP2020194691A patent/JP2021179962A/ja active Pending
- 2020-12-22 EP EP20216306.9A patent/EP3910475B1/en active Active
-
2022
- 2022-04-07 US US17/715,771 patent/US11966286B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11314589B2 (en) | 2022-04-26 |
EP3910475B1 (en) | 2023-04-05 |
US20200278906A1 (en) | 2020-09-03 |
US20220229724A1 (en) | 2022-07-21 |
US11966286B2 (en) | 2024-04-23 |
EP3910475A1 (en) | 2021-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109074851B (zh) | 利用额外系统位的内部错误校验和校正(ecc) | |
EP3370152B1 (en) | Integrated error checking and correction (ecc) in memory devices with fixed bandwidth interfaces | |
US10572343B2 (en) | Targeted aliasing single error correction (SEC) code | |
CN107924698B (zh) | Dram设备、错误校正管理的方法和存储器控制器 | |
EP3910475B1 (en) | Read retry to selectively disable on-die ecc | |
US20190252009A1 (en) | Memory device with flexible internal data write control circuitry | |
US20180137005A1 (en) | Increased redundancy in multi-device memory package to improve reliability | |
CN110023914B (zh) | 用于重复写入存储器的可编程数据样式 | |
KR102501147B1 (ko) | 메모리에서 에러 체킹 및 정정 코드의 확장된 적용 | |
US20220075689A1 (en) | Memory wordline isolation for improvement in reliability, availability, and scalability (ras) | |
US20210224155A1 (en) | Reduction of latency impact of on-die error checking and correction (ecc) | |
JP2021093235A (ja) | インメモリポストパッケージ修復(ppr)のためのインラインバッファ | |
WO2018038883A1 (en) | Double data rate command bus | |
US20210141692A1 (en) | Distribution of error checking and correction (ecc) bits to allocate ecc bits for metadata | |
JP2021111333A (ja) | 不揮発性メモリの自動インクリメント書き込みカウント | |
CN117099075A (zh) | 针对长突发长度的存储器数据传送的双倍取得 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230901 |