JP2023085175A - メモリ一致低密度パリティ検査符号化方式 - Google Patents

メモリ一致低密度パリティ検査符号化方式 Download PDF

Info

Publication number
JP2023085175A
JP2023085175A JP2022083498A JP2022083498A JP2023085175A JP 2023085175 A JP2023085175 A JP 2023085175A JP 2022083498 A JP2022083498 A JP 2022083498A JP 2022083498 A JP2022083498 A JP 2022083498A JP 2023085175 A JP2023085175 A JP 2023085175A
Authority
JP
Japan
Prior art keywords
data pages
memory
controller
bits
volatile memory
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.)
Granted
Application number
JP2022083498A
Other languages
English (en)
Other versions
JP7407231B2 (ja
Inventor
エラン・シャロン
Sharon Eran
ラン・ザミール
Zamir Ran
デイヴィッド・アブラハム
Avraham David
アイダン・アルロッド
Alrod Idan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of JP2023085175A publication Critical patent/JP2023085175A/ja
Application granted granted Critical
Publication of JP7407231B2 publication Critical patent/JP7407231B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1044Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1068Adding 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 sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1048Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1072Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1114Merged schedule message passing algorithm with storage of sums of check-to-bit node messages or sums of bit-to-check node messages, e.g. in order to increase the memory efficiency
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1125Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using different domains for check node and bit node processing, wherein the different domains include probabilities, likelihood ratios, likelihood differences, log-likelihood ratios or log-likelihood difference pairs
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/6325Error control coding in combination with demodulation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)
  • Mathematical Physics (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Figure 2023085175000001
【課題】データ記憶デバイスにおけるメモリセル電圧分布(CVD)に基づく低密度パリティ検査(LDPC)符号化してメモリオーバープロビジョニングを低減するメモリコントローラ、方法及び装置を提供する。
【解決手段】データ記憶デバイスにおけるメモリセル電圧分布に基づくLDPC符号化を実行するシステム100であって、コントローラは、不揮発性メモリとインタフェースするメモリインタフェースと、コントローラ回路と、を含む。コントローラは、不揮発性メモリに記憶される複数のデータページを受信し、複数のデータページを複数の変換されたデータページに変換し、複数の変換されたデータページに基づいて複数のパリティビットを決定し、複数のデータページ及び複数のパリティビットを不揮発性メモリに記憶する。
【選択図】図1

Description

本出願は、概して、データ記憶デバイスに関し、より具体的には、データ記憶デバイスにおけるメモリセル電圧分布(CVD)に基づく低密度パリティ検査(LDPC)符号化に関する。
メモリデバイスは、プロセススケーリング、3Dスタッキング、及びメモリセルごとのより多くのビットの記憶によるメモリ密度の増加に伴って、より高いメモリ容量をますます経験している。メモリ密度の増加は、基本的に「ノイズの多い」媒体をもたらす。エラー訂正コード(ECC)もメモリ内の空間を割り当てられ、実際のユーザデータの空間の量を減らす。
本開示の技術は、理論上の限界(すなわち、シャノン限界)に近接して動作するようにECC符号化を最適化する。具体的には、本開示の符号化方式は、LDPC符号化を実行するときに、様々なプログラミング状態の予想されるエラー率を説明する。以下でより詳細に説明するように、本開示の符号化方式は、ECCのために割り当てられた空間を含む、メモリオーバープロビジョニングを低減する。
LDPCなどの高度な符号化方式は、典型的には、メモリデバイスのメモリエラーモデルに基づいて調整されない。具体的には、メモリエラー保護レベルは、各メモリ読み出し閾値に対して調整されず、代わりに全体的に決定される。メモリエラーモデルは、典型的には、デコーダ初期化値を設定するためにのみ使用される。本開示の技術は、ECC構築及び設計中にメモリエラーモデルを使用することを提案する。
本開示は、一実施形態では、メモリインタフェース及びコントローラを含むメモリコントローラを提供する。メモリインタフェースは、不揮発性メモリとインタフェースするように構成されている。コントローラは、不揮発性メモリに記憶される複数のデータページを受信し、複数のデータページを複数の変換されたデータページに変換するように構成されている。コントローラは、複数の変換されたデータページに基づいて複数のパリティビットを決定し、複数のデータページ及び複数のパリティビットを不揮発性メモリに記憶するように更に構成されている。
本開示はまた、方法を提供する。一実施形態では、方法は、不揮発性メモリに記憶される複数のデータページを受信することと、複数のデータページを複数の変換されたデータページに変換することと、を含む。方法は、複数の変換されたデータページに基づいて複数のパリティビットを決定することと、複数のデータページ及び複数のパリティビットを不揮発性メモリに記憶することと、を更に含む。
本開示はまた、装置を提供する。装置は、不揮発性メモリとインタフェースするための手段を含む。装置は、不揮発性メモリに記憶される複数のデータページを受信する手段と、複数のデータページを複数の変換されたデータページに変換する手段と、を含む。装置は、複数の変換されたデータページに基づいて複数のパリティビットを決定する手段と、複数のデータページ及び複数のパリティビットを不揮発性メモリに記憶する手段と、を更に含む。
このようにして、本開示の様々な態様は、少なくともデータ記憶デバイスの技術分野並びにそれらの設計及びアーキテクチャにおいて改善をもたらす。本開示は、ファームウェア(すなわち、プロセッサ上で実行されるコード)によって制御されるハードウェア又は回路、コンピュータシステム及びネットワーク、並びにハードウェア実施方法、信号処理回路、メモリアレイ、特定用途向け集積回路、フィールドプログラマブルゲートアレイなどを含む様々な形態で実施することができる。上述の概要は、本開示の様々な態様の一般的な概念を提供することのみを意図したものであり、いかなる方法でも本開示の範囲を限定するものではない。
本開示のいくつかの実施形態による、メモリ一致LDPC符号化/復号化を有するデータ記憶デバイスを含むシステムのブロック図である。
本開示のいくつかの実施形態による、クワッドレベルセルメモリの様々なセル電圧分布レベルについてのエラー率を示すグラフである。
本開示のいくつかの実施形態による、クワッドレベルセル(QLC)メモリのメモリ一致変換の例である。 本開示のいくつかの実施形態による、クワッドレベルセル(QLC)メモリのメモリ一致変換の例である。
本開示のいくつかの実施形態による、メモリ一致LDPC符号化/復号化プロセスを示すフローチャートである。
本開示のいくつかの実施形態による、例示的なメモリ一致LDPCメッセージ受け渡しプロセスを示す図である。
本開示のいくつかの実施形態による、ガウスメモリレベル分布を有するQLCメモリを示すグラフである。
本開示のいくつかの実施形態による、セルエラー率の関数としてのデコーダ故障確率を示すグラフである。
本開示のいくつかの実施形態による、例示的なソフトビット読み出しを提供する。
以下の説明では、本開示の1つ以上の態様の理解を提供するために、データ記憶デバイス構成、コントローラ動作などのような多数の詳細が記載される。これらの具体的な詳細は単なる例示であり、本出願の範囲を限定することを意図するものではないことは、当業者には容易に明らかであろう。具体的には、メモリデバイスに関連付けられた機能は、ハードウェア(例えば、アナログ回路又はデジタル回路)、ハードウェアとソフトウェアとの組み合わせ(例えば、非一時的コンピュータ可読媒体に記憶され、処理回路又は制御回路によって実行される、プログラムコード又はファームウェア)、又は任意の他の好適な手段によって実行され得る。以下の説明は、本開示の様々な態様の一般的な概念を提供することのみを意図するものであり、いかなる方法でも本開示の範囲を限定するものではない。
図1は、データ記憶デバイス102を含むシステム100の一例のブロック図である。いくつかの実装では、データ記憶デバイス102は、フラッシュメモリデバイスである。例えば、データ記憶デバイス102は、セキュアデジタルSD(登録商標)カード、マイクロSD(登録商標)カード、又は別の同様のタイプのデータ記憶デバイスである。図1に示すデータ記憶デバイス102は、不揮発性メモリ104及びコントローラ106を含む。データ記憶デバイス102は、ホストデバイス108に結合される。ホストデバイス108は、データ110(例えば、ユーザデータ)をデータ記憶デバイス102に提供して、例えば、不揮発性メモリ104に記憶されるように構成されている。ホストデバイス108は、例えば、スマートフォン、音楽プレイヤ、ビデオプレイヤ、ゲームコンソール、電子書籍リーダ、携帯情報端末、タブレット、ノートパソコン、又は別の同様のデバイスである。
データ記憶デバイス102の不揮発性メモリ104は、コントローラ106に結合されている。いくつかの実装では、不揮発性メモリ104は、NANDフラッシュメモリである。図1に示す不揮発性メモリ104は、複数のメモリユニット112A~112N(例えば、フラッシュメモリユニット)を含む。複数のメモリユニット112A~112Nの各々は、複数の記憶素子を含む。例えば、図1では、メモリユニット112Aは、代表的な記憶素子114を含む。いくつかの実装では、記憶素子114は、2レベルセル(「SLC」)、4レベルセル(「MLC」)、8レベルセル(「TLC」)、16レベルセル(「QLC」)、又はセルごとにより多くのビット数を有するフラッシュメモリセル(例えば、セルごとに5~10ビット)などのマルチレベルセルフラッシュメモリである。いくつかの実装では、複数のメモリユニット112A~112Nは、マルチレベルセルフラッシュメモリのワード線又はページに含まれる。他の実装では、複数のメモリユニット112A~112Nは、マルチレベルセルフラッシュメモリの複数のワード線又はページにわたって分散されている。
図1に示すコントローラ106は、ホストインタフェース116、メモリインタフェース118、コントローラ回路120、及びECCエンジン122を含む。コントローラ106は、簡略化された形態で図1に示されている。当業者は、不揮発性メモリのコントローラが、図1に具体的に示されるもの以外の追加のモジュール又は構成要素を含むことを認識するであろう。更に、データ記憶デバイス102は、例えば、ECCを実行するためのコントローラ106及びモジュールを含むものとして図1に示されているが、コントローラ106は、代わりに、ホストデバイス108内に位置するか、又は他の方法でデータ記憶デバイス102から分離される。結果として、コントローラ106(例えば、ウェアレベリング、バッドブロック管理、データスクランブル、ゴミ集め、アドレスマッピングなど)によって通常実行されるECC及び他のフラッシュ変換レイヤ(「FTL」)動作は、ホストデバイス108又はデータ記憶デバイス102に接続する別のデバイスによって実行することができる。
コントローラ106は、ホストインタフェース116を介して、ホストデバイス108にデータを送信し、ホストデバイス108からデータ及び命令を受信するように構成されている。ホストインタフェース116は、ホストデバイス108が、例えば、任意の好適な通信プロトコルを使用して、不揮発性メモリ104から読み出し、不揮発性メモリ104に書き込むことを可能にする。好適な通信プロトコルには、例えば、ユニバーサルフラッシュストレージ(「UFS」)ホストコントローラインタフェース仕様、セキュアデジタル(「SD」)ホストコントローラ仕様などが含まれる。
コントローラ106はまた、メモリインタフェース118を用いて不揮発性メモリ104にデータ及びコマンドを送信し(例えば、メモリ動作134)、不揮発性メモリからデータを受信するように構成されている。例示的な例として、コントローラ106は、不揮発性メモリ104内の特定のメモリ位置にデータを記憶するように不揮発性メモリ104に命令するためのデータ及び書き込みコマンドを送信するように構成されている。コントローラ106はまた、不揮発性メモリ104内の特定のメモリ位置からデータを読み取るために、不揮発性メモリ104に読み出しコマンドを送信するように構成されている。いくつかの例では、コントローラ106は、メモリインタフェース118と組み合わせてバス132を用いて不揮発性メモリ104に結合される。バス132は、コントローラ120が、1つ以上のメモリユニット112の各々と、他のメモリダイ103との通信と並列かつ独立して通信することを可能にするために、複数の別個のチャネルを含み得る。
図1に示すコントローラ回路120は、プロセッサ124(例えば、マイクロプロセッサ、マイクロコントローラ、フィールドプログラマブルゲートアレイ[「FPGA」]半導体、特定用途向け集積回路[「ASIC」]、又は別の適切なプログラム可能なデバイス)と、非一時的コンピュータ可読媒体又はメモリ126(例えば、ランダムアクセスメモリ[「RAM」]及び読み出し専用メモリ[「ROM」]を含む)とを含む。プロセッサ124は、コントローラ回路120、コントローラ106、及びデータ記憶デバイス102内の様々なモジュールに動作可能に接続される。例えば、ファームウェアは、コンピュータ実行可能命令としてメモリ126のROMにロードされる。これらのコンピュータ実行可能命令は、メモリ126から取り出され、コントローラ回路120の動作を制御し、本明細書に記載のプロセス(例えば、データ整列及びECC)を実行するためにプロセッサ124によって実行されることが可能である。いくつかの実装では、コントローラ回路120の1つ以上のモジュールは、コントローラ回路120内の別個のハードウェア構成要素に対応する。他の実装では、コントローラ回路120の1つ以上のモジュールは、メモリ126内に記憶され、プロセッサ124によって実行されるソフトウェアに対応する。メモリ126は、動作中にコントローラ回路120によって使用されるデータを記憶するように構成されている。
ECCエンジン122は、不揮発性メモリ104に格納されるデータを受信するように構成されている。ECCエンジン122は、ECC符号化方式を使用してデータを符号化するように構成されている。いくつかの実装では、ECC符号化方式は、リードソロモン符号化方式、Bose-Chaudhuri-Hocquenghem(「BCH」)符号化方式、低密度パリティ検査(「LDPC」)符号化方式、又は別の好適な符号化方式である。図1に示すECCエンジン122は、デコーダ128及びエンコーダ130を含む。デコーダ128は、不揮発性メモリ104から読み取られたデータを復号するように構成されている。例えば、デコーダ128は、不揮発性メモリ104から読み取られた符号語を復号するように構成されている。符号語は、例えば、以下でより詳細に説明される、4kデータビット及び4mパリティビットを含み得る。デコーダ128は、不揮発性メモリ104から読み取られたデータに存在するビットエラーを検出及び訂正するように構成されている。デコーダ128は、不揮発性メモリ104から読み取られたデータに存在するビットエラーを、実装されたECC方式のエラー訂正能力まで訂正する。いくつかの実装では、ECCエンジン122は、コントローラ回路120に含まれる。
前述のように、本明細書に記載の符号化方式は、メモリデバイス内のセル電圧分布(CVD)によって引き起こされる各プログラミング状態の予想されるエラー率を使用する。図2は、QLCメモリの例示的なCVDのグラフ200を示す。複数のメモリセル状態S0~S15が、凡例205によって示される。グラフ200は、複数のメモリセル状態S0~S15のゲート電圧値を表すx軸210を含む。グラフ200は、複数のメモリセル状態S0~S15の各々のビット分布を表すy軸215を含む。いくつかの実装では、メモリセル状態S0~S15のうちの1つ以上は、所与のゲート電圧で別の1つ又はメモリセル状態S0~S15と重複し得る。そのような重複は、各重複についてセルエラー率(CER)をもたらす。グラフ200は、16個のメモリセル状態S0~S15の間の15回の重複についての15個のCERを含む。更に、グラフ200の各メモリセル状態S0~S15は対称ではなく、ゲート電圧又はビット分布の異なる範囲を有し得る。いくつかの理想的な実装では、各メモリセル状態S0~S15は同一である。
CVD及びそのメモリエラーモデル(CERによって定義される)と一致するようにLDPCを調整するために、本明細書で「メモリ一致変換」(すなわち、m変換)と呼ばれるものがメモリモデルに適用され、各読み出し閾値によってもたらされるエラーが符号化ビットのサブセットのみに影響を及ぼすことを保証する。図3A~図3Bは、QLCメモリの例示的なメモリ一致変換を示す。図3Aに示すように、QLCメモリは、複数のメモリセル状態300を有し、各メモリセル状態300は、各メモリセル状態300にn=4個のユーザデータビットを記憶し、合計2=16個の状態(状態0から始まり、状態15で終わる)を有する。各メモリセル状態300は、下部ページ302、中央ページ304、上部ページ306、及びトップページ308を有し、各ページは、ビットを記憶するように構成されている。図3Aの例では、左から右に各状態を移動する際に1ビットのみが変更される。例えば、状態0はビット[1111]を記憶し、状態1はビット[1110]を記憶し、トップページ308のビットのみが変化した。状態2は、中央ページ306のビットのみが変化したビット[1010]を記憶する。
各メモリセル状態300を読み取るために、t=2-1=15個の読み出し閾値(すなわち、CER)が必要である。従って、メモリ一致変換は、n=4個のユーザデータページの全てをt=15個の変換されたデータページ320に変換する。図3Aから図3Bへの変換は、垂直に発生する。例えば、状態0はビット[1111]を記憶しているが、変換されたページ0はビット[111111111111111]を記憶する。状態1はビット[1110]を記憶し、変換されたページ1はビット[011111111111111]を記憶する。変換されたデータページ320では、第jの読み出し閾値によってもたらされる任意のセルエラーは、第jの変換されたページ320でのみビットエラーをもたらされる。各変換されたページは、CER値340を有する。
例えば、この特定のセルに対応する変換されたページの値が[111111111111111]であるように、複数のメモリセル状態300のうちの第1のメモリセル状態(すなわち、状態0)にプログラムされたセルを考える。しかしながら、読み出し中、第1の読み出し閾値によってセルエラーがもたらされ、第2の複数のセル状態200(すなわち、状態1)でセルの状態が読み取られ、従って、読み取られた対応する変換されたページ値は[011111111111111]である。従って、ビットエラーは、15個の変換されたページのうちの第1のページにのみもたらされる。
別の例では、この特定のセルに対応する変換されたページの値が[000111111111111]であるように、複数のメモリセル状態のうちの第4のメモリセル状態(すなわち、状態3)にプログラムされたセルを考える。しかしながら、読み出し中、第3の読み出し閾値によってセルエラーがもたらされ、第3の複数のセル状態200(すなわち、状態2)でセルの状態が読み取られ、従って、読み取られた対応する変換されたページ値は[001111111111111]である。従って、ビットエラーは、15個の変換されたページのうちの第3のページにのみもたらされる。
従って、メモリ一致変換の結果として、変換されたページ320の各ページにもたらされたビットエラー率は、対応する読み出し閾値に関連付けられたセルエラー率に対応する。更に、適切な保護レベルは、対応する読み出し閾値の予想されるCERに対応する変換された各ページに割り当てられ得る。図3A~図3Bに示す変換の代わりに、異なるメモリ一致変換を使用してもよい。例えば、ページレベル一致変換を使用することができる。
元のn=4個のページ(すなわち、下部ページ302、中央ページ304、上部ページ306、トップページ308)の全体的なビットエラー率(BER)と、変換されたページ320の全体的なBERは同じである。具体的には、
BERLower+BERMiddle+BERUpper+BERTop=BERt1+BERt2+...+BERt15
平均して、各変換されたページ320によって観察されたBERは、元のページのn/t=4/15である。従って、変換されたページ320を保護するために必要な全体的なECC冗長性は、n=4個の元のデータページを保護するために必要なECC冗長性と同じである。
変換されたページ320は、変換されたページ320のエラー率を説明するLDPCエンコーダ(すなわち、メモリ一致LDPCエンコーダ、mLDPCエンコーダ)を使用して符号化される。パリティビットの量は、それらの予想されるBERに従って、変換されたページ320の各々に割り当てられる。従って、変換された各ページ320が同じ予想BERを有する場合、パリティビットは対称的に割り当てられ得る。いくつかの例では、変換されたページ320が変化するBERを有する場合、パリティビットは非対称に割り当てられ得る。他の例では、単一のLDPCコードが使用されてもよく、LDPCコードを表す基礎となる2部グラフ内では、変換されたページ320の各々に対して異なる度スペクトル(すなわち、ビットごとにパリティ検査式の異なる割り当て)が使用される。次いで、度スペクトルは、それぞれの変換されたページの予想されるBERに対応する。例えば、よりエラーが発生しやすい読み出し閾値の影響を受けるものなど、より高いBERを示すと予想されるビットのサブセットは、より低い比較BERを示すと予想されるビットのサブセットよりも多くのパリティ検査式に関与する。
図4は、メモリ一致LDPC符号化及び復号化方法のための例示的なプロセス400を示す。プロセス400は、ECCエンジン122によって実行され得る。図4の例では、n=4個のユーザデータページ(すなわち、下部ページ302、中央ページ304、上部ページ306、及びトップページ308)は入力データとして提供され、各ページはkビットを含む。4kビットの入力データは、メモリ一致変換符号化ブロック405に提供される。メモリ一致変換ブロック符号化405は、入力データをkビットのt=15個の変換されたページ(例えば、変換されたページ320)に変換する。変換された15k個のビットは、nm=4m個のパリティビットを生成するメモリ一致LDPCエンコーダ410によって符号化される。メモリ一致変換符号化ブロック405及びメモリ一致LDPCエンコーダ410と並行して、4k個の元のユーザビットは、ページ当たりk+m個のビットが存在するように、4m個のパリティビットとともにメモリ104(すなわち、QLCデータページ)に記憶される。
メモリセルがn個のページのみを記憶することができ、t=2-1ページを直接記憶することができないため、変換されたページは、メモリ104に直接記憶されない。むしろ、読み出し動作中、変換されたページは、逆メモリ一致変換を介して読み出しセル電圧(Vt)から推測される。例えば、セル状態、論理ページの値(例えば、下部ページ302、中央ページ304、上部ページ306、及びトップページ308)、及び変換されたページ320の値は、読み出しセルのVtから推測することができる。読み出し動作は、任意の必要な解像度で、セルのVtの量子化バージョン(図5ではYとして示されている)を取り出す。一実施形態では、ハードビット(HB)ページを取り出してセル状態を推測するために、図2に示す公称読み出し閾値で読み出しが実行される。別の実施形態では、ハードビットに加えてソフトビット(SB)を取り出すためのより高い読み出し解像度(セルのVtをより細かく判定する)が、読み出し値に信頼性を割り当てるために使用される。
各ハードビットは、メモリ104から読み取られた論理ページ(例えば、下部ページ302、中央ページ304、上部ページ306、トップページ308)に対応する。各ソフトビットは、図8に示すように、セルのVtが読み出し閾値にどれだけ近いかを示す。従って、ソフトビットは、ハードビットがどの程度正しくない可能性があるか(例えば、読み出しエラーの可能性)を示す。セルの読み出しハードビットとソフトビットの組み合わせはYとして示され、セルのVtの量子化バージョンに対応する。読み出しセル値Yを使用して、セルが異なる状態s=0、1、...、2-1にプログラムされた確率を決定することができる。Pr(Y|s)として示される状態sにプログラムされたセルから特定の値Yが読み取られた確率は、CVDモデルに基づいて計算することができる。
読み出し動作中、メモリ104によってもたらされたエラーを訂正し、メモリ104に記憶されたユーザデータを回復するために、mLDPCデコーダ415内の読み出しセル値Yに対して復号化が実行される。mLDPC復号化動作は、固有の反復メッセージ受け渡し復号化アルゴリズムを適用する。mLDPCメッセージ受け渡しアルゴリズムは、適切なメッセージ計算規則を有する「セルノード」、「ビットノード」、及び「検査ノード」を有する3部グラフ上で動作すると見なすことができる(2部グラフ上で動作する従来のLDPCメッセージ受け渡し復号化とは対照的に)。3部グラフのエッジ上で交換されたメッセージは、符号語ビット上の推定値を伝達し、これは反復的に改善される。ビット推定値を伝達するために使用される一般的なメトリックは、対数尤度比(LLR)である。所与の観察値VであるビットbのLLRは、式(1)に従って定義され、
Figure 2023085175000002
ここで、対数底2は、本明細書で説明される計算のために仮定されるが、他の値の底が使用されてもよい。例示的な3部グラフ500が図5に示されている。3部グラフ500は、セルノード505、ビットノード510、及び検査ノード515を含む。
セルノード505は、k個の情報セル(元のnk=4k個の情報ビットを「記憶」している)及びm個のパリティセル(nm=4m個のパリティビットを「記憶」している)を備える。各セルノード505は、セルが間接的に記憶するt=15個の変換された情報ビットに対応するt=15個のビットノードに接続される。各パリティセルノードは、セルが直接記憶するn=4個のパリティビットに対応するn=4個のビットノードに接続される。情報セルノード505とそれらの対応するビットノード510との間で実行される動作は、n=4個の読み出しビットからt=15個の変換されたビットまで「拡張」する、「拡張」動作である。拡張動作は、対数尤度比(LLR)レベルでのメモリ一致変換に対応する。セルノード505とビットノード510との間で実行されるメモリ一致変換は、Tメッセージとして示される変換されたビットのLLR推定値を計算する。情報セルノードfからビットノードvへのLLRメッセージは、以下の式(2a)に従って計算され、
Figure 2023085175000003
パリティセルノードfからビットノードvへのLLRメッセージは、以下の式(2b)に従って計算され、
Figure 2023085175000004
式中、s(v)は状態sにおけるビットvの値である。
ビットノードvからセルノードfへのLLRメッセージは、式(3)に従って計算され、
Figure 2023085175000005
従来のLDPCメッセージ受け渡し復号化は、ビットノード510と検査ノード515との間で、ビットノードから検査ノードメッセージ(Qメッセージと呼ばれる)と、検査ノードからビットノードメッセージ(Rメッセージと呼ばれる)を交換することによって実行される。検査ノードは、(パリティ検査制約が満たされるように、パリティビットを生成した符号化動作によって保証されるように)それらに接続されたビットノードにパリティ検査制約を課す。(現在のビット推定値を伝達する)ビットノードvから検査ノードcへのLLRメッセージは、式(4)に従って計算され、
Figure 2023085175000006
検査ノードcからビットノードvへのLLRメッセージ(検査ノードに接続されたビットがパリティ検査制約を満たすべきであるという事実に基づいて更新されたビット推定値を伝達する)は、式(5)に従って計算され、
Figure 2023085175000007
式中、
Figure 2023085175000008
図5の例では、各検査ノード515は、4つのビットノード510に接続されている。他の例では、各検査ノードは、4つより多い又は少ないビットノード510に接続される。所与の検査ノード515に接続する4つのビットノード510は、0に加算する(モジュロ2)。エラーがある場合、検査ノード515は代わりに1に加算する(モジュロ2)。次いで、検査ノード515が1に加算すると、エラーを検出及び訂正することができる。いくつかの例では、メモリ一致変換はまた、Qメッセージによって伝達される現在のビット推定値に基づく。
図4に戻り、メモリ一致LDPCデコーダ415には、4(k+m)個の「ハードビット」と4(k+m)個の「ソフトビット」が入力される。「ソフト」メモリ一致変換復号化ブロック420は、提供されたハードビット及びソフトビット(量子化された読み出しセルのVt値Yを示す)を復号し、15k個の変換されたページ及びLLR形式の4m個のパリティビットを出力する(従って、これは、変換された情報ビット及びパリティビットのソフト推定値を伝達する「ソフト」変換である)。ソフトメモリ一致変換は、セルノードとビットノードとの間で実行される反復メッセージ受け渡し動作に対応する。LDPCデコーダブロック425は、15k個の変換されたビット及び4m個のパリティビットが一組のパリティ検査制約を満たすべきであるという事実を利用することによってビットのLLR推定値を更新する。これは、ビットノードと検査ノードとの間で実行されるメッセージ受け渡し動作に対応する。15k個の変換されたビット及び4m個のパリティビットのビット推定値が全てのパリティ検査制約を満たすまで、メモリ一致変換ブロック420とLDPCデコーダブロック425との間でいくつかの反復が実行されてもよく、これは、復号化動作が有効な符号語に収束したことを示す。復号化動作が有効な符号語に収束すると(デコーダ425が15k個の変換されたページ内の全てのエラーを訂正したことを示す)、デコーダ425は、(逆ハードメモリ一致変換を適用することによって)15k個の変換されたページから元の4k個のビットを取り出して、訂正された入力データを出力する。
図6は、複数のメモリセル状態600を有するQLCメモリを示す。複数のメモリセル状態600はガウス分布を有し、状態0(すなわち、Er状態)の標準偏差(σ)は、他の状態の標準偏差のα倍の何らかの値である。図6のQLCメモリのLDPC訂正能力は、様々なα値について図7に示されている。図7は、CERの関数としてのデコーダ故障確率を示すグラフ700を提供する。第1の曲線705及び第3の曲線715は、従来のLDPC符号化方法に対応する。第2の曲線710及び第4の曲線720は、本明細書に記載されるメモリ一致LDPC符号化(「mLDPC」とも呼ばれる)に対応する。更に、第1の曲線705及び第2の曲線710は、α=4に対応し、第3の曲線715及び第4の曲線720は、α=1に対応する。αが増加し、メモリモデルがより非対称になると(すなわち、異なる読み出し閾値のエラー率間の分散の増加)、メモリ一致LDPC符号化の有効性が増加する。
改善された訂正能力の利点に加えて、提案されたメモリ一致LDPC符号化の使用は、いくつかの追加の利点を有する。mLDPCコードを使用する場合、各読み出し閾値によってもたらされるエラーは、ビットの固有のサブセット(すなわち、その読み出し閾値に関連付けられた特定の変換されたページ)に影響を及ぼす。変換された各ページのビットエラー率(BER)を推定することによって、各読み出し閾値に関連付けられたエラー率を推定することができる。変換されたページのエラー率は、デコーダが収束したと仮定して、変換されたページの初期読み出しビット値を復号化後の訂正された変換されたページビット値と比較することによって推定され得る。あるいは、変換されたページの初期読み出しビットに関連付けられた満たされていないパリティ検査式の数は、BER推定に使用することができる。満たされていないパリティ検査制約の数が多いほど(別名シンドローム重み)、予想されるBERは高くなる。このアプローチは、復号化が失敗した場合でも適用され得る(初期読み出しビット値のみに基づく)。各読み出し閾値のBERを推定することは、メモリ104の読み出しメモリワード線に関連する基礎となるメモリエラーモデル又はCVDを推定するために使用することができる。これは、メモリの健全性にアクセスするために使用することができる。これはまた、P(Y|s)のより正確な推定に基づいてデコーダの正確なLLR値を計算するために使用されてもよい。
読み出し閾値ごとのBERを推定する能力の別の用途は、読み出し閾値を調整し、かつ調和させることである。最適な読み出し閾値は、その関連するBER推定を最小限に抑える読み出し閾値として見出され得る。復号化前の初期の変換されたページビット値を復号化後のそれらの値と比較することによって、0から1にフリップされたビットの数(BER0→1)、及び1から0にフリップされたビットの数(BER1→0)を示す指向性BERも、読み出し閾値ごとに推定することができる。指向性BERは、BERを最小化し、BER0→1とBER1→0とのバランスをとるために、読み出し閾値がどの方向に調整される必要があるかを示すインジケーションを提供し得る。
ここまで説明した実施形態は、反復メッセージ受け渡し復号化を用いたLDPC符号化に基づいている。しかしながら、メモリ一致符号化の概念は、他の符号化方式にも適用され得る。メモリ一致変換をユーザデータに適用することができ、次いで任意の所与の符号化方式(BCH、RS、又は他の適切な符号化方式)を変換された各ページに適用することができる。読み出し中、逆メモリ一致変換が適用され得る。逆メモリ一致変換は、(読み出しビットに対する)ハード変換又は(ソフトデコーダのためのLLRを出力する)ソフト変換であり得る。逆メモリ一致変換復号化を適用して、変換されたページにわたるエラーを訂正することができる。
本明細書に説明されるプロセス、システム、方法、ヒューリスティックなどに関して、かかるプロセスのステップは、特定の順序付けられたシーケンスに従って発生するものとして説明されているが、かかるプロセスは、本明細書に説明される順序以外の順序で実行されると説明されたステップを用いて実施され得ることを理解されたい。更に、特定のステップが同時に実行されてもよく、他のステップが追加されてもよく、又は本明細書に説明される特定のステップを省略することができることを理解されたい。すなわち、本明細書のプロセスの説明は、特定の実施形態を例示する目的で提供され、特許請求の範囲を限定するものと解釈されるべきではない。
従って、上の説明は例示的であり、限定的ではないことが意図されることを理解されたい。提供される実施例以外の多くの実施形態及び用途は、上の説明を読むことで明らかとなるであろう。範囲は、上の説明を参照して決定されるべきではなく、その代わりに、添付の特許請求の範囲を参照して、かかる特許請求の範囲が権利を与えられる等価物の全範囲とともに決定されるべきである。将来の開発が本明細書で考察される技術において生じ、開示されたシステム及び方法がそのような将来の実施形態に組み込まれることが予想及び意図されている。要約すると、用途は、修正及び変形が可能であることを理解されたい。
特許請求の範囲で使用される全ての用語は、本明細書でなされる反対の明示的な指示がない限り、本明細書に説明される技術において知識豊富な者によって理解されるような、最も広い合理的な構造及びそれらの通常の意味が与えられることを意図している。具体的には、「a」、「the」、「said」などのような単数形冠詞の使用は、請求項の反対の明示的な限定を列挙しない限り、示された要素のうちの1つ以上を列挙するために読み取られるべきである。
要約書は、読者が技術的開示の性質を迅速に確認することができるように提供される。請求項の範囲又は意味を解釈又は限定するために使用されないことが理解されよう。加えて、上述の[発明を実施するための形態]において、様々な機能が、本開示を合理化する目的で様々な実施形態において一緒にグループ化されていることが分かり得る。本開示の方法は、請求される実施形態が各請求項に明示的に列挙されているよりも多くの機能を必要とするという意図を反映するものとして解釈されるべきではない。むしろ、以下の特許請求の範囲が反映されるように、本発明の主題は、開示される単一の実施形態の全ての機能よりも少ないことにある。従って、以下の特許請求の範囲は、「発明を実施するための形態」に組み込まれ、各特許請求の範囲は、個別に請求される主題として独立している。

Claims (20)

  1. メモリコントローラであって、
    不揮発性メモリとインタフェースするように構成されたメモリインタフェースと、
    コントローラであって、
    前記不揮発性メモリに記憶される複数のデータページを受信し、
    前記複数のデータページを複数の変換されたデータページに変換し、
    前記複数の変換されたデータページに基づいて、複数のパリティビットを決定し、
    前記複数のデータページ及び前記複数のパリティビットを前記不揮発性メモリに記憶する
    ように構成された、コントローラと、を備える、メモリコントローラ。
  2. 前記複数の変換されたデータページの各々は、前記不揮発性メモリの関連付けられた読み出し閾値のエラーによって影響を受ける、請求項1に記載のメモリコントローラ。
  3. 前記複数のデータページのビットエラー率は、前記複数の変換されたデータページのビットエラー率に等しい、請求項1に記載のメモリコントローラ。
  4. 前記不揮発性メモリは複数のメモリセル状態を含み、前記複数の変換されたデータページの数は、前記複数のメモリセル状態の読み出し閾値の数に基づく、請求項1に記載のメモリコントローラ。
  5. 前記コントローラは、
    前記記憶された複数のデータページ及び前記記憶された複数のパリティビットを前記不揮発性メモリから取り出すように更に構成されており、前記記憶された複数のデータページは、複数のデータハードビット及び複数のデータソフトビットを含み、前記記憶された複数のパリティビットは、複数のパリティハードビット及び複数のパリティソフトビットを含むように更に構成されている、請求項1に記載のメモリコントローラ。
  6. 前記コントローラは、
    前記記憶された複数のデータページを第2の複数の変換されたデータページに変換し、
    前記第2の複数の変換されたデータページ及び前記複数のパリティビットについての対数尤度比推定値を決定する、ように更に構成されている、請求項5に記載のメモリコントローラ。
  7. 前記コントローラは、
    前記第2の複数の変換されたデータページの前記対数尤度比推定値と、前記複数のパリティビットの前記対数尤度比推定値とに基づいて、訂正された複数のデータページを生成する、ように更に構成されている、請求項6に記載のメモリコントローラ。
  8. 前記コントローラは、
    前記記憶された複数のデータページを第2の複数の変換されたデータページに変換し、
    前記第2の複数の変換されたデータページ及び前記複数のパリティビットが、一組のパリティ検査制約を満たすかどうかを判定し、
    前記第2の複数の変換されたデータページ及び前記複数のパリティビットが前記一組のパリティ検査制約を満たしていないことに応答して、前記第2の複数の変換されたデータページのうちの少なくとも1つの変換されたデータページの値を調整する、ように更に構成されている、請求項5に記載のメモリコントローラ。
  9. 前記コントローラは、
    前記第2の複数の変換されたデータページ及び前記複数のパリティビットが、前記一組のパリティ検査制約を満たすかどうかを判定し、
    前記第2の複数の変換されたデータページのうちの少なくとも1つの変換されたデータページの前記値を、前記第2の複数の変換されたデータページ及び前記複数のパリティビットが前記一組のパリティ検査制約を満たすまで調整する、ように更に構成されている、請求項8に記載のメモリコントローラ。
  10. 前記複数の変換されたデータページにわたって前記不揮発性メモリによって引き起こされるビットエラー分布は、前記複数のデータページにわたるエラー分布とは異なる、請求項1に記載のメモリコントローラ。
  11. 前記コントローラは、
    前記複数の変換されたデータページの推定ビットエラー率に基づいて、前記不揮発性メモリのメモリエラーモデルを決定し、
    前記メモリエラーモデルに基づいて、前記不揮発性メモリの健全性を判定する、ように更に構成されている、請求項1に記載のメモリコントローラ。
  12. 前記コントローラは、
    前記複数の変換されたデータページの推定ビットエラー率に基づいて、前記不揮発性メモリの読み出し閾値を調整する、ように更に構成されている、請求項1に記載のメモリコントローラ。
  13. 方法であって、
    不揮発性メモリに記憶される複数のデータページを受信することと、
    前記複数のデータページを複数の変換されたデータページに変換することと、
    前記複数の変換されたデータページに基づいて、複数のパリティビットを決定することと、
    前記複数のデータページ及び前記複数のパリティビットを前記不揮発性メモリに記憶することと
    を含む、方法。
  14. 前記複数の変換されたデータページは、前記複数のデータページよりも多数のページを含む、請求項13に記載の方法。
  15. 前記複数のデータページのビットエラー率は、前記複数の変換されたデータページのビットエラー率に等しい、請求項13に記載の方法。
  16. 前記不揮発性メモリは複数のメモリセル状態を含み、前記複数の変換されたデータページの数は、前記複数のメモリセル状態の数に基づく、請求項13に記載の方法。
  17. 前記記憶された複数のデータページ及び前記記憶された複数のパリティビットを前記不揮発性メモリから取り出すことを更に含み、前記記憶された複数のデータページは、複数のデータハードビット及び複数のデータソフトビットを含み、前記記憶された複数のパリティビットは、複数のパリティハードビット及び複数のパリティソフトビットを含む、請求項13に記載の方法。
  18. 前記記憶された複数のデータページを第2の複数の変換されたデータページに変換することと、
    前記第2の複数の変換されたデータページ及び前記複数のパリティビットについての対数尤度比推定値を決定することと
    を更に含む、請求項17に記載の方法。
  19. 前記第2の複数の変換されたデータページの前記対数尤度比推定値と、前記複数のパリティビットの前記対数尤度比推定値とに基づいて、訂正された複数のデータページを生成すること
    を更に含む、請求項18に記載の方法。
  20. 装置であって、
    不揮発性メモリとインタフェースするための手段と、
    前記不揮発性メモリに記憶される複数のデータページを受信するための手段と、
    前記複数のデータページを複数の変換されたデータページに変換するための手段と、
    前記複数の変換されたデータページに基づいて、複数のパリティビットを決定するための手段と、
    前記複数のデータページ及び前記複数のパリティビットを前記不揮発性メモリに記憶するための手段と
    を備える、装置。

JP2022083498A 2021-12-08 2022-05-23 メモリ一致低密度パリティ検査符号化方式 Active JP7407231B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/545,051 2021-12-08
US17/545,051 US11860733B2 (en) 2021-12-08 2021-12-08 Memory matched low density parity check coding schemes

Publications (2)

Publication Number Publication Date
JP2023085175A true JP2023085175A (ja) 2023-06-20
JP7407231B2 JP7407231B2 (ja) 2023-12-28

Family

ID=86607506

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022083498A Active JP7407231B2 (ja) 2021-12-08 2022-05-23 メモリ一致低密度パリティ検査符号化方式

Country Status (4)

Country Link
US (1) US11860733B2 (ja)
JP (1) JP7407231B2 (ja)
KR (1) KR20230086557A (ja)
CN (1) CN116302664A (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013141219A (ja) * 2011-12-30 2013-07-18 Samsung Electronics Co Ltd 格納装置からのデータ読出し方法、エラー訂正装置、及びエラー訂正コードデコーダーを含む格納システム
US20150220390A1 (en) * 2014-02-06 2015-08-06 Macronix International Co., Ltd. Programming method, reading method and operating system for memory

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3999822B2 (ja) * 1993-12-28 2007-10-31 株式会社東芝 記憶システム
US5450363A (en) * 1994-06-02 1995-09-12 Intel Corporation Gray coding for a multilevel cell memory system
TW405154B (en) * 1997-06-06 2000-09-11 Nippon Steel Corp Semiconductor memory device, employ method and reading method of the same, and memory medium for storing the employ method and the reading method
US7831895B2 (en) * 2006-07-25 2010-11-09 Communications Coding Corporation Universal error control coding system for digital communication and data storage systems
US7966550B2 (en) * 2007-03-31 2011-06-21 Sandisk Technologies Inc. Soft bit data transmission for error correction control in non-volatile memory
KR101436505B1 (ko) * 2008-01-03 2014-09-02 삼성전자주식회사 메모리 장치
US8127091B2 (en) * 2008-10-30 2012-02-28 Micron Technology, Inc. Programming memory cells with additional data for increased threshold voltage resolution
US20130031431A1 (en) * 2011-07-28 2013-01-31 Eran Sharon Post-Write Read in Non-Volatile Memories Using Comparison of Data as Written in Binary and Multi-State Formats
US8656257B1 (en) * 2012-01-11 2014-02-18 Pmc-Sierra Us, Inc. Nonvolatile memory controller with concatenated error correction codes
US9619381B2 (en) * 2013-12-24 2017-04-11 International Business Machines Corporation Collaborative health management in a storage system
KR20170065076A (ko) * 2015-12-02 2017-06-13 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US20200042223A1 (en) * 2018-08-02 2020-02-06 Alibaba Group Holding Limited System and method for facilitating a high-density storage device with improved performance and endurance
US10802909B2 (en) * 2018-08-17 2020-10-13 Micron Technology, Inc. Enhanced bit flipping scheme

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013141219A (ja) * 2011-12-30 2013-07-18 Samsung Electronics Co Ltd 格納装置からのデータ読出し方法、エラー訂正装置、及びエラー訂正コードデコーダーを含む格納システム
US20150220390A1 (en) * 2014-02-06 2015-08-06 Macronix International Co., Ltd. Programming method, reading method and operating system for memory

Also Published As

Publication number Publication date
KR20230086557A (ko) 2023-06-15
US20230176947A1 (en) 2023-06-08
CN116302664A (zh) 2023-06-23
US11860733B2 (en) 2024-01-02
JP7407231B2 (ja) 2023-12-28

Similar Documents

Publication Publication Date Title
TWI613674B (zh) 在具有選擇性二元及非二元解碼之快閃記憶體中之偵測及解碼
KR101428891B1 (ko) 아날로그 메모리 셀들에서의 최적화된 임계치 검색
US8984365B1 (en) System and method for reduced memory storage in LDPC decoding
US8935598B1 (en) System and method for adaptive check node approximation in LDPC decoding
US10389389B2 (en) Method and data storage device using convolutional low-density parity-check coding with a long page write and a short page read granularity
US10447301B2 (en) Optimal LDPC bit flip decision
US9251000B2 (en) Apparatuses and methods for combining error coding and modulation schemes
US20190163567A1 (en) Decoding method, memory storage device and memory control circuit unit
US11243838B2 (en) Methods and apparatuses for error correction
US10157097B2 (en) Redundant bytes utilization in error correction code
JP2019125910A (ja) メモリシステム
US10326473B2 (en) Symbol-based coding for NAND flash devices
JP2019057752A (ja) メモリシステム
JP2021047712A (ja) メモリシステム
US9715430B2 (en) Controller for a solid-state drive, and related solid-state drive
JP2020155861A (ja) メモリシステム
US20190253080A1 (en) Generating and using invertible, shortened bose-chaudhuri-hocquenghem codewords
US11128314B2 (en) Error characteristic estimation for NAND flash
US10884858B2 (en) LDPC decoding device, memory system including the same and method thereof
US11150813B2 (en) Memory system
JP7407231B2 (ja) メモリ一致低密度パリティ検査符号化方式
US11394403B1 (en) Error correction based on rate adaptive low density parity check (LDPC) codes with flexible column weights in the parity check matrices
US20240086280A1 (en) Memory system and control method
US20210089393A1 (en) Memory system and method for controlling nonvolatile memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220531

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20220627

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230718

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230920

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231205

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231218

R150 Certificate of patent or registration of utility model

Ref document number: 7407231

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150