JP2015015701A - 低密度パリティチェック(ldpc)復号器での対数尤度比(llr)減衰 - Google Patents

低密度パリティチェック(ldpc)復号器での対数尤度比(llr)減衰 Download PDF

Info

Publication number
JP2015015701A
JP2015015701A JP2014103075A JP2014103075A JP2015015701A JP 2015015701 A JP2015015701 A JP 2015015701A JP 2014103075 A JP2014103075 A JP 2014103075A JP 2014103075 A JP2014103075 A JP 2014103075A JP 2015015701 A JP2015015701 A JP 2015015701A
Authority
JP
Japan
Prior art keywords
llr values
shortened
llr
codeword
bit
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
JP2014103075A
Other languages
English (en)
Other versions
JP2015015701A5 (ja
JP6367607B2 (ja
Inventor
ティー.コーエン アール
T Cohen Earl
ティー.コーエン アール
エフ.ハラチュ エーリヒ
F Haratsch Erich
エフ.ハラチュ エーリヒ
エス.アルフセイン アブデル−ハキム
S Alhussien Abdel-Hakim
エス.アルフセイン アブデル−ハキム
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.)
LSI Corp
Original Assignee
LSI Corp
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
Priority claimed from US13/934,999 external-priority patent/US9337865B2/en
Application filed by LSI Corp filed Critical LSI Corp
Publication of JP2015015701A publication Critical patent/JP2015015701A/ja
Publication of JP2015015701A5 publication Critical patent/JP2015015701A5/ja
Application granted granted Critical
Publication of JP6367607B2 publication Critical patent/JP6367607B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/618Shortening and extension of codes
    • 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
    • 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/1142Decoding using trapping sets
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3723Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
    • 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/6306Error control coding in combination with Automatic Repeat reQuest [ARQ] and diversity transmission, e.g. coding schemes for the multiple transmission of the same information or the transmission of incremental redundancy
    • 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/65Purpose and implementation aspects
    • H03M13/6577Representation or format of variables, register sizes or word-lengths and quantization
    • H03M13/658Scaling by multiplication or division
    • 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/65Purpose and implementation aspects
    • H03M13/6577Representation or format of variables, register sizes or word-lengths and quantization
    • H03M13/6591Truncation, saturation and clamping

Abstract

【課題】記載された実施形態は、媒体に記憶されたデータを読み取る媒体コントローラを提供する。
【解決手段】媒体コントローラは、媒体からの短縮符号語の各ビットの値を決定する。短縮符号語は、完全な符号語の複数の非短縮ビットを含み、完全な符号語は、複数の非短縮ビット、および、1つまたは複数の短縮ビットを含む。短縮ビットは、短縮符号語内の未使用ビットに対応する。媒体コントローラは、短縮符号語の各ビットの決定された値を、対数尤度比(LLR)値の第1の組に変換する。完全な符号語は、短縮符号語に関するLLR値の第1の組を使用して復号される。媒体コントローラは、LLR値の第2の組を生成するために、符号語の非短縮ビットに対応する1つまたは複数のLLR値を減衰し、LLR値の第2の組を復号する。
【選択図】図1

Description

関連出願の相互参照
本出願は、参照によりその全体が本明細書に組み込まれている、2012年11月21日に出願した米国仮出願第61/729,178号の優先権を主張するものである。
本出願の主題は、参照によりその全体が本明細書に組み込まれている、2012年5月4日に出願した米国特許出願第13/464,433号、および、2012年8月4日に出願した米国特許出願第13/567,025号に関連する。
フラッシュメモリは、特定の種類の電気的に消去可能なプログラム可能読み取り専用メモリ(EEPROM)である不揮発性メモリ(NVM)である。一般的に用いられる種類のフラッシュメモリ技術の1つが、NANDフラッシュメモリである。NANDフラッシュメモリは、セルあたり小さいチップ面積を必要とし、典型的には、1つまたは複数のバンクまたはプレーンに分割される。各バンクは、ブロックに分割され、各ブロックは、ページに分割される。各ページは、ユーザデータ、誤り訂正符号(ECC)情報、またはその両方を記憶するためのいくつかのバイトを含む。
NANDデバイスに関する3つの基本的な動作、すなわち、読み取り、書き込み、および消去が存在する。読み取りおよび書き込み動作は、ページ単位で行われる。ページサイズは、一般に、2Nバイトのユーザデータ(プラス、ECC情報のための追加のバイト)であり、ここで、Nは、整数であり、典型的なユーザデータページサイズは、例えば、ページあたり2048バイト(2KB)、4096バイト(4KB)、8192バイト(8KB)、またはそれ以上である。「読み取りユニット」は、最小量のデータであり、ECC情報に対応しており、ECC情報は、NVMから読み取られ、ECCによって補正されることが可能で、読み取りユニットは、典型的には、4Kビットと32Kビットの間であってよい(例えば、一般に、ページあたり整数の読み取りユニットが存在する)。ページは、典型的には、ブロックに配置され、消去動作は、ブロック単位で行われる。典型的なブロックサイズは、例えば、ブロックあたり64、128、またはそれ以上のページである。ページは、通常はブロック内の低アドレスから高アドレスへ、順次に書き込まれなければならない。より低いアドレスは、ブロックが消去されるまで、再書き込みされることができない。一般に、ECC情報および/またはメモリ管理に使用される他のメタデータを記憶するために使用される予備領域(典型的には、100〜640バイト)が、各ページに関連付けられる。ECC情報は、一般に、ページ内に記憶されたユーザデータを検出し、訂正するために用いられ、論理アドレスを物理アドレスに、または、物理アドレスから論理アドレスにマッピングするために、メタデータが使用されてよい。複数のバンクを有するNANDフラッシュチップでは、各バンクからページが実質的に並列にアクセスされることを可能にする、複数バンクの動作がサポートされてよい。
NANDフラッシュメモリは、フローティングゲートトランジスタから作られたメモリセルのアレイに情報を記憶する。これらのトランジスタは、外部電力を供給されることなしに、数カ月または数年のオーダの長期間、電荷とも呼ばれるそれらの電圧レベルを保持する。シングルレベルセル(SLC)フラッシュメモリでは、各セルは、1ビットの情報を記憶する。多レベルセル(MLC)フラッシュメモリでは、各セルは、そのセルのフローティングゲートに印加する複数のレベルの電荷間で選択することによって、セルあたり1より多くのビットを記憶することができる。MLC NANDフラッシュメモリは、同じ数のトランジスタを使用して、より多くのビットが記憶されることを可能にするために、直列に連結されたトランジスタ配置によって、セルあたり複数の電圧レベルを用いる。したがって、個々に考えると、各セルは、セルに記憶されている論理ビット値(複数可)に対応する特定の格納された(プログラムされた)電荷を有し、セルは、各セルのための1つまたは複数のしきい値電圧に基づいて読み取られる。
理想的には、NVM内のすべてのセルは、同じしきい値電圧を有するが、実際には、しきい値電圧は、形状がガウス確率曲線に似ている「しきい値電圧分布」で、セルによって異なる。多数のセル(例えば、読み取りユニットまたはページ)にわたって考えると、セルあたりの状態(例えば、セルあたり2分布で、bはビット数)と同じくらい多くのしきい値電圧分布(例えば、ガウス確率曲線)が存在する。したがって、SLCフラッシュメモリに関して、セルあたり2つの状態(0または1)、および、したがって、2つのしきい値電圧分(ゼロのための1つ、および、1のための別のもの)、並びに、単一の読み取りしきい値電圧が存在する。大部分のMLC NANDフラッシュメモリは、セルあたり4つの可能な状態を用い、したがって、セルあたり2ビットの情報を記憶することができる。したがって、MLCフラッシュメモリに関して、4つの状態(例えば、00、01、10、11)、および、したがって、4つのしきい値電圧分布、並びに、3つの読み取りしきい値が存在する。
セルあたりのビット数を増加させることは、セル間干渉および保持雑音(例えば、漏れなどによる、格納された電荷のドリフト)をより深刻にし、これは、各電圧レベルを分離する電圧マージンの量を減少させ、読み取りエラーの可能性、したがって、システムのビット誤り率(BER)を増加させる。さらに、各セルのしきい値電圧分布は、例えば、読み取り妨害、書き込み妨害、保持損失、セルエージングおよびプロセス、電圧および温度(PVT)変動により、NVMの動作時間中に変化する可能性があり、これもBERを増加させる。NVMから読み取られる読み取りユニット中でビットエラーに遭遇すると、システム(例えば、NVMに結合されたコントローラ)は、ハード復号訂正可能な読み取りユニットの標本の位置を突き止めるために、読み取りしきい値の異なる電圧値で、読み取りユニットを再読み取りすることができる。さらに、例えば、Bose−Chaudhuri−Hocquenghem(BCH)のような誤り訂正符号(ECC)、および低密度パリティチェック(LDPC)を用いることによって、より大きいBERを補償するために、ソフトウェアの複雑さが増加する可能性がある。
メモリデバイスがより小さくなり、セルあたりのレベルの数が増加するにつれて、より強力なECCが必要とされる。例えば、ECCは、BCH符号の符号化率を減少させることによって改善されるが、符号化率を減少させることは、NVMの記憶容量を減少させる。BCH符号とは異なり、LDPC符号は、軟判定復号であり、各ビット値を推定する(「ハード復号」)ことに加えて、復号器は、各ビットの信頼度(「軟判定復号」)も推定する。BCH符号を上回るLDPC符号のために、各ビットの信頼度の改善された推定が望まれる。
この概要は、以下の詳細な説明でさらに説明される概念の選択を単純化された形態で紹介するために提供される。この概要は、特許請求される主題の主要な特徴または本質的な特徴を特定するものではなく、特許請求される主題の範囲を限定するために使用されるものでもない。
記載された実施形態は、媒体に記憶されたデータを読み取る媒体コントローラを提供する。媒体コントローラは、媒体からの短縮符号語の各ビットの値を決定する。短縮符号語は、完全な符号語の複数の非短縮ビットを含み、完全な符号語は、複数の非短縮ビット、および、1つまたは複数の短縮ビットを含む。短縮ビットは、短縮符号語内の未使用ビットに対応する。媒体コントローラは、短縮符号語の各ビットの決定された値を、対数尤度比(LLR)値の第1の組に変換する。完全な符号語は、短縮符号語に関するLLR値の第1の組を使用して復号される。媒体コントローラは、LLR値の第2の組を生成するために、符号語の非短縮ビットに対応する1つまたは複数のLLR値を減衰し、LLR値の第2の組を復号する。
記載された実施形態の他の態様、特徴、および利点は、以下の詳細な説明、添付の特許請求の範囲、および、添付図面からより完全に明らかになり、添付図面では、同様の参照番号は、類似のまたは同一の要素を識別する。
例示的な実施形態によるフラッシュメモリ記憶システムのブロック図を示す。 単一の標準的なフラッシュメモリセルの例示的な機能ブロック図を示す。 例示的な実施形態による例示的なNAND MLCフラッシュメモリセルを示す。 経時的な図3のMLC NANDフラッシュセル内の状態ビット値の電圧分布の変化の例示的な図を示す。 初期時点での図3のMLC NANDフラッシュセルのしきい値電圧確率分布の例示的な図である。 より後の時点での初期時点での図3のMLC NANDフラッシュセルのシフトされたしきい値電圧確率分布の例示的な図である。 図1の記憶媒体に記憶された例示的な非短縮符号語を示す。 図1の記憶媒体に記憶された例示的な短縮符号語を示す。 図6Bの短縮符号語の例示的な減衰されたものを示す。 例示的な実施形態による図1のフラッシュメモリ記憶システムの例示的なLDPC復号アルゴリズムの流れ図を示す。 図8のLDPC復号アルゴリズムによる、減衰有りおよび無しの、信号対雑音比に対する訂正不可能なビット誤りの誤りフロアを示す例示的なグラフを示す。
記載された実施形態は、媒体に記憶されたデータを読み取る媒体コントローラを提供する。媒体コントローラは、媒体からの短縮符号語の各ビットの値を決定する。短縮符号語は、完全な符号語の複数の非短縮ビットを含み、完全な符号語は、複数の非短縮ビット、および、1つまたは複数の短縮ビットを含む。短縮ビットは、短縮符号語内の未使用ビットに対応する。媒体コントローラは、短縮符号語の各ビットの決定された値を、対数尤度比(LLR)値の第1の組に変換する。完全な符号語は、短縮符号語に関するLLR値の第1の組を使用して復号される。媒体コントローラは、LLR値の第2の組を生成するために、符号語の非短縮ビットに対応する1つまたは複数のLLR値を減衰し、LLR値の第2の組を復号する。
表1は、記載された実施形態を理解するための助けとして、本明細書を通じて用いられる頭字語のリストを定義する。
Figure 2015015701
図1は、不揮発性メモリ(NVM)記憶システム100のブロック図を示す。NVM記憶システム100は、媒体110を含み、媒体110は、媒体コントローラ120に結合される。媒体110は、NANDフラッシュ固体ディスク(SSD)、ハードディスクドライブ(HDD)のような磁気記憶媒体、コンパクトディスク(CD)もしくはデジタル多用途ディスク(DVD)のような光記憶媒体、ハイブリッド光および磁気システム、または、他の同様の記憶システムとして実装されてよい。媒体110は、典型的には、バックプレーン、磁気記録システム内のドライブヘッド、光ファイバ、1つもしくは複数の同軸ケーブル、1つもしくは複数のより対銅線、または、1つもしくは複数の無線周波数(RF)チャネルのような、物理的伝送媒体によって、媒体コントローラ120に結合されてよい。さらに、NVM記憶システムに関して本明細書に記載されているが、記載された実施形態は、有線もしくは無線チャネルを介して受信されたデータを復号するために、携帯電話または基地局のベースバンド処理システムで、または、有線もしくは無線通信チャネルから受信されたデータを復号する任意のシステムで、追加でまたは代わりに用いられてよい。
図1に示すように、媒体110および媒体コントローラ120は、集合的にSSD101である。媒体コントローラ120は、固体コントローラ130、制御プロセッサ140、バッファ150、およびI/Oインタフェース160を含む。媒体コントローラ120は、媒体110と、通信リンク170に結合されたホストデバイス180との間のデータの転送を制御する。媒体固体コントローラ120は、システムオンチップ(SoC)または他の集積回路(IC)として実装されてよい。固体コントローラ130は、媒体110内のメモリ位置にアクセスするために使用されてよく、典型的には、媒体110とインタフェースするために、低レベルのデバイス特有の動作を実装することができる。バッファ150は、制御プロセッサ140のためのキャッシュとして、並びに/または、固体媒体110およびホストデバイス180間の動作のための読み取り/書き込みバッファとして機能するように用いられるRAMバッファであってよい。例えば、データは、一般に、I/Oインタフェース160およびリンク170を介する固体媒体110およびホストデバイス180間の転送中、バッファ150に一時的に格納されてよい。バッファ150は、通信リンク170のデータ転送サイズと、媒体110の記憶ユニットサイズ(例えば、読み取りユニットサイズ、ページサイズ、セクタサイズ、またはマップされたユニットサイズ)との間の差を考慮するために、データをグループ化、または分割するために用いられてよい。バッファ150は、媒体コントローラ120の内部の、静的ランダムアクセスメモリ(SRAM)として、または、埋め込まれた動的ランダムアクセスメモリ(eDRAM)として実装されてよいが、典型的には2倍データレート(例えば、DDR−3)DRAMであってよい、媒体コントローラ120の外部のメモリ(図示せず)を含むこともできる。
制御プロセッサ140は、媒体110内のデータへのデータアクセス(例えば、読み取りまたは書き込み動作)データを制御するために、固体コントローラ130と通信する。制御プロセッサ140は、Pentium(登録商標)、Power PC(登録商標)、Tensilica(登録商標)、もしくはARM(登録商標)プロセッサ、または、異なるプロセッサの種類の組み合わせの1つもしくは複数として実装されてよい(Pentiumは、Intel(登録商標) Corporationの登録商標であり、Tensilicaは、Tensilica,Inc.の登録商標であり、ARMプロセッサは、ARM Holdingsによるものであり、Power PCは、IBM(登録商標)による登録商標である)。図1には単一のプロセッサとして示しているが、制御プロセッサ140は、複数のプロセッサ(図示せず)によって実装されてよく、記載されて実施形態にしたがってしきい値最適化動作を実行することを含む、動作のために必要とされるようなソフトウェア/ファームウェアを含むことができる。制御プロセッサ140は、低密度パリティチェック(LDPC)符号器/復号器(コーデック)142と通信し、コーデック142は、媒体110に書き込まれたデータのLDPC符号化、および、媒体110から読み取られたデータの復号を実行する。
通信リンク170は、ホストデバイス180と通信するために使用され、ホストデバイス180は、NVMシステム100とインタフェースするコンピュータシステムであってよい。通信リンク170は、カスタム通信リンクであってよく、または、例えば、小型コンピュータシステムインタフェース(「SCSI」)プロトコルバス、シリアルアタッチドSCSI(「SAS」)プロトコルバス、シリアルアドバンストテクノロジーアタッチメント(「SATA」)プロトコルバス、ユニバーサルシリアルバス(「USB」)、ユニバーサルフラッシュストレージ(「UFS」)プロトコルインタフェース、イーサネットリンク、IEEE801.11リンク、IEEE802.15リンク、IEEE802.16リンク、ペリフェラルコンポーネントインターコネクトエクスプレス(「PCI−E」)リンク、シリアルラピッドI/O(「SRIO」)リンク、または、周辺デバイスをコンピュータに接続するための任意の他の同様のインタフェースリンクのような、標準的な通信プロトコルにしたがって動作するバスであってよい。
図2は、固体媒体110内に見ることができる単一のフラッシュメモリセルの例示的な機能ブロック図を示す。フラッシュメモリセル200は、2つのゲートを有するMOSFETである。ワード線制御ゲート230が、フローティングゲート240の上部に配置される。フローティングゲート240は、絶縁層によって、ワード線制御ゲート230およびMOSFETチャネルから絶縁され、MOSFETチャネルは、N−チャネル250および260、並びにP−チャネル270を含む。フローティングゲート240は、電気的に絶縁されるため、フローティングゲート240上に配置された任意の電荷は、典型的には多くの月の間、残り、十分に放電しないことになる。フローティングゲート240が、電荷を保持する場合、ワード線制御ゲート230からの電界を部分的に打ち消し、これは、セルのしきい値電圧を変更する。しきい値電圧は、チャネルを導通させるために、制御ゲート230に印加される電圧の量である。チャネルの導電率は、セルに記憶された値を、例えば、フローティングゲート240上の電荷を感知することによって決定する。
図3は、固体媒体110内に見ることができる例示的なNAND MLCフラッシュメモリストリング300を示す。図3に示すように、フラッシュメモリストリング300は、ドレインからソースに直列に接続された、1つまたは複数のワード線トランジスタ200(2)、200(4)、200(6)、200(8)、200(10)、200(12)、200(14)、および200(16)(例えば、8フラッシュメモリセル)、並びに、ビット線選択トランジスタ304を含むことができる。この直列接続は、接地選択トランジスタ302、ワード線トランジスタ200(2)、200(4)、200(6)、200(8)、200(10)、200(12)、200(14)、および200(16)、並びに、ビット線選択トランジスタ304が、ビット線322が完全にローに引かれるように、対応するゲートをハイに駆動することによって、(例えば線形モードもしくは飽和モードで)すべて「ターンオン」されるようなものである。ターンオンされるワード線トランジスタ200(2)、200(4)、200(6)、200(8)、200(10)、200(12)、200(14)、および200(16)の数(または、トランジスタが、線形領域または飽和領域で動作している場所)を変化させることは、MLCストリング300が、複数の電圧レベルを達成することを可能にすることができる。典型的なMLC NANDフラッシュは、フローティングゲートを有する64個のトランジスタの(例えば、図3に示すような)「NANDストリング」を用いることができる。書き込み動作中、高電圧が、NANDストリングに、書き込まれるワード線位置で印加される。読み取り動作中、電圧が、所望の読み取り位置に対応するトランジスタを除く、NANDストリング内のすべてのトランジスタのゲートに印加される。所望の読み取り位置は、フローティングゲートを有する。
本明細書に記載のように、SLCおよびMLC NANDフラッシュの両方で、各セルは、読み取りしきい値電圧レベルと比較することなどによって感知することができる電圧充電値(例えば、アナログ信号)を有する。媒体コントローラは、電圧充電値を読み取り、セルの対応するバイナリ値を検出するために用いられる所与の数の所定の電圧しきい値を有することができる。例えば、MLC NANDフラッシュに関して、3つのしきい値(0.1、0.2、0.3)が存在する場合、セル電圧レベルが、0.0≦セル電圧<0.1であるならば、セルは、[00]の値を有するとして検出され得る。典型的なMLCフラッシュを読み取る際に、3つの読み取りしきい値が、フラッシュ製造業者によってプログラムされた規定値に当初は設定される。ECCが失敗した場合、3つのしきい値は、データを再読み取りするために修正される。セル電圧レベルが、0.1≦セル電圧<0.2ならば、値は、[10]であってよい、などである。このように、測定されたセルレベルは、セルレベルが、2つのしきい値の間にあるものと決定され、検出され得るまで、典型的にはしきい値と1つずつ比較されてよい。このように、検出されたデータ値は、検出された値を(例えば、誤り訂正符号と共に)、ホストデバイス180に提供されるデータに復号するために、メモリコントローラ120の復号器に提供される。
記載された実施形態は、フラッシュメモリに記憶されたデータを復号するために、低密度パリティチェック(LDPC)復号器(例えば、図1のLDPCコーデック142)を用いる。LDPC復号器は、訂正能力の点で、シャノン限界に近づくことができる。代数的符号を用いる復号器とは異なり、LDPC復号器は、(符号語あたりの訂正可能な誤りのビットでのような)一定の訂正能力を持たない。さらに、LDPC復号器は、「誤りフロア」を作成するそれらのタナーグラフ内のトラッピングセットの影響を受けやすく、誤りフロアは、入力ビット誤り率に対する出力ビット誤り率の通常の「ウォーターフォール」特性の変化であり、ここで、出力ビット誤り率は、はるかに急ではない勾配に突然変化する。しかしながら、LDPC符号をより効率的に用いるために、LDPC復号器は、復号されている各ビットが所与の値を有する(例えば、各セルが特定の電荷レベルを有する)アナログ的な確率のような「軟」データを用いる。所与の値を有する復号ビットのこの確率は、一般に、対数尤度比(LLR)として特定される。フラッシュメモリでは、例えば、読み取り動作中にビット検出のためのしきい値電圧を移動させる能力は、各ビットがどのくらい信頼できるかを判定するために、ビット値の複数の標本を取ることを可能にし、この信頼度は、各ビットに関するLLRとして表されてよい。本明細書に記載のように、フラッシュメモリの軟判定LDPC復号の一部は、各ビット位置に関するLLRを生成するために、所与のフラッシュセルの(それぞれ、異なるしきい値電圧での)1つまたは複数の読み取りを用いている。
例えば、図4は、MLC NANDフラッシュセルの状態(ビット値)の電圧分布が、経時的にどのように変化するかを示す。特に、すべてのビットが、まったく同じにドリフトするわけではなく、これは、単一の固定された電圧しきい値で読み取る際の変動につながる。さらに、ビットのいくつかは、単にその正しい位置からドリフトされている値を有するのではなく、間違った値を報告することなどによって、「スタック」する可能性がある。記載された実施形態は、LDPC復号器が、符号語の一部であるが送信/記憶されない「短縮」ビットを除いてすべてのビットに使用される対数尤度比(LLR)を変更することによって、「スタック」ビット(間違っているが、それらが正しいことを高い確率で主張するビット)の影響を克服することを可能にする。
図5Aおよび5Bは、図3に示すようなMLC NANDフラッシュセルのしきい値電圧およびしきい値電圧確率分布の例示的な図を示す。図5Aは、グレイ符号化MLC状態11(例えば、分布550)、01(例えば、分布560)、00(例えば、分布570)、および10(例えば、分布580)に関する、初期時点(例えば、データが書き込まれるとき)でのしきい値電圧確率分布を表す。示されているように、公称の読み取りしきい値540、542、544は、各MLC状態間に理想的に位置する。図5Bは、より後の時点でのしきい値電圧確率分布を表す。図5Bに示されているように、しきい値電圧分布551、561、571、および581は、保持ドリフトなどにより、図5Aに示すそれらのより以前のそれぞれのしきい値電圧分布550、560、570、および580に対してシフトされる。図5Bは、左に一様にシフトされたすべての4つの分布を示すが、分布は、一般に、互いに独立してシフトする可能性がある。さらに、しきい値電圧分布のシフトの方向は、一般に、不明であるか、直接知り得ない。またさらに、シフトは、各ビットで独立している可能性があり、シフトは、分布を拡大させる可能性があり、拡大は、非対称である可能性がある。
いくつかの実施形態では、4つの状態の統計的分布が、各状態に対して25パーセントであるように、様々なスクランブル技術が使用される。(例えば、図5Bに示すような)シフトされた分布を有するMLCセルが、通常の読み取りしきい値(例えば、図5Aに示すシフトされていない分布位置のために配置された540、542、および544)を使用して読み取られると、(多くの標本にわたる)各状態に関して25パーセントの期待される読み取りデータからの偏差が、(例えば、任意の誤り訂正の前に)観測される可能性がある。媒体コントローラ120は、しきい値電圧分布中のシフトの存在を推測するために、読み取りデータ状態にこの差異を用いることができる。媒体コントローラ120は、次に、公称の読み取りしきい値(例えば、540、542、および544)を、図5Bに示すようなシフトされた読み取りしきい値565、575、および585になるように、観測された差異に少なくとも部分的に基づいて調整することができる。いくつかの実施形態では、差異は、全ページを基準に(または、複数のページを基準に)評価されてよい。他の実施形態では、差異は、読み取りユニットおよび/または符号語を基準に評価されてよい。図4Aおよび4Bには示していないが、SLCセルに関して、2つの状態(例えば、1および0)並びに単一の読み取りしきい値が存在してよい。2つの状態の統計的分布が、各状態に関して50パーセントであるように、スクランブリングが用いられてよい。読み取りしきい値は、典型的には、参照により本明細書に組み入れられる2012年5月4日に出願された関連の米国特許出願第13/464,433号に記載のようにシフトされてよい。
したがって、図5Aおよび5Bで見られるように、最下位ビット(LSB)を読み取る際、しきい値基準未満の電圧が、1として読み取られる。見られるように、Vは、より多くのビットを1として標本化する傾向があることになり、Vは、より多くのビットを0として標本化する傾向があることになる。また、Vによって標本化されたビットは、2つの分布の中心で、時には不確定である。各セルがその電圧しきい値(1から0に交差する)を有する場所に正確に基づいて、セルが実際に1または0を保持している可能性は、決定され得るが、この可能性は、(図5Aと図5Bとの違いによって示されるように)経時的に変化する可能性がある。NANDフラッシュメモリの軟判定LDPC復号の一部は、NANDフラッシュの(それぞれ、異なるしきい値電圧での)1つまたは複数の読み取りを、各ビット位置に関するLLRに変えている。異なるしきい値でのNANDフラッシュの複数の読み取りが実行される順序は、様々な実施形態によれば、(分布追跡情報のような)静的および/または動的な追跡情報、読み取りの観測される差異、復号の試みからの観測される誤り率、並びに他の要因のような要因に基づいて変化する。
多くの実際の場合では、符号語は、短縮される。短縮は、いくつかのメッセージビット位置のような符号語位置が存在することを意味し、これらの符号化位置は、未使用であり、記憶/送信されることなく符号化および復号する際の両方で、有効に知られる。短縮符号語は、符号語の可変サイズをサポートし、符号化率の選択のより高い柔軟性を提供するために用いられてよい。例えば、チェックバイトの数は、固定されているが、異なるNANDフラッシュ販売業者が、異なる量の予備領域を提供する場合、符号語あたりのユーザバイトの数は、異なる量の予備領域を収容するために、符号語を短縮することによって変更されてよい。図6Aは、媒体110に記憶された例示的な短縮符号語600を示す。図6Aに示すように、短縮符号語600は、短縮メッセージビット602、非短縮メッセージビット604、およびECCビット606を含む。一緒に、非短縮メッセージビット604およびECCビット606は、媒体110に記憶された非短縮符号語部分608を形成する。図6Bは、媒体110から読み取られる例示的な短縮符号語620を示す。図6Bに示すように、短縮符号語620は、いくつかの短縮メッセージビットLLR622、いくつかの非短縮メッセージビット624、およびECCビットLLR626を含む、一緒に、非短縮メッセージビットLLR624およびECCビットLLR626は、媒体110から読み取られるデータに対応する非短縮符号語部分628を形成する。
例えば、第1のNANDフラッシュ販売業者は、16KBページのユーザデータあたり1216バイトの予備領域を用いる可能性があり、第2のNANDフラッシュ販売業者は、16KBページのユーザデータあたり1280バイトの予備領域を用いる可能性がある。2KBの符号語あたり144バイトのLDPCチェックビットを有する例示的な実施形態では、各販売業者のメモリに関して、各ページのすべてのバイトを効率的に使用して、第1の販売業者のNANDフラッシュは、8インスタンスの(2200B、2056B)符号を用いる可能性があり、第2の販売業者のNANDフラッシュは、8インスタンスの(2208B、2064B)符号を用いる可能性がある。実装に応じて、LDPC符号器および復号器(例えば、図1のLDPCコーデック142)は、2176バイトのユーザデータ、144バイトのLDPCチェックビットを有する(2320B、2176B)符号のような、より大きいサイズの符号語を実装することができる。(2200B、2056B)コードおよび(2208B、2064B)コードの両方は、その後、実装された符号語の短縮されたものになる。
特定のチャネルは、「スタックビット」誤りとして知られる誤りを有する可能性があり、スタックビット誤りは、ある値(例えば、0)であるように強く現れるが、実際には別の値(例えば、1)であるべきである誤りである。スタックビット誤りは、(1)書き込む/プログラムすることができず、常に固定値として読み取ることができないビット(例えば、図3のNAND MLCフラッシュメモリストリング300内の1つまたは複数のショートしたまたはオープンのトランジスタ)のような、静的なスタックビット、(2)多レベルセル(MLC)フラッシュのような、セルあたり複数のビットを記憶するいくつかの技術で、セルのMSBをプログラムする際に、セルのLSBが誤って読み取られる場合、結果として生じる電荷状態は、誤ったLSBに基づき、結果として、そのセルのLSBおよび/またはMSB位置に「スタック」ビットが生じる、誤ったプログラミング、(3)書き込まれる/プログラムされるために送られているデータが、書き込み/プログラムの前に、(アルファ粒子などによる)任意の誤りを経験する場合、誤りのビットは、誤った値にプログラムされる、シングルイベントアップセット(SEU)、の1つまたは複数によるものである可能性がある。
このような「スタックビット」誤りは、所与の値(例えば、大きい大きさのLLR)を有するように非常に強く現れるため、実際には、ビットが逆の値であるべきである場合、スタックビット誤りは、このように、LDPC復号の誤りを作成する可能性がある。このようなスタックビット誤りは、それらの値について強く「嘘をつく」ことによって、LDPC復号に関する誤りフロアを上昇させ、「トラッピングセット問題」を悪化させる可能性がある。トラッピングセット問題は、LLR値が、ビットが0であることを強く示すが、実際には、ビットは、1である場合であり、トラッピングセットの他のビットは、いくつかの場合、誤りビットの強さを無効にすることができない。記載された実施形態は、短縮ビット位置の相対的な「確実性」を高めるために、非短縮ビット位置のLLRを選択的に変更する。これは、LDPC復号がスタックビットを克服するのを助け、スタックビットの存在下での誤りフロアを低下させる。
LDPC復号器は、一般に、短縮位置を、LLRの最大の大きさを有するものとして扱う。他の(非短縮)ビット位置は、記憶/伝送媒体から得られるアナログデータ(例えば、各ビットの可能性を決定するために、図5AおよびBに示すような様々なしきい値と比較される、測定されたセルレベル)によって決定されるように、所与の値を有するそれらの実際の可能性から決定されるLLRを有する。
いくつかの実施形態では、短縮ビット位置は、符号化では(同様に、復号では)常にゼロとして扱われる。他の実施形態では、短縮ビット位置は、符号化では(同様に、復号では)常に1として扱われる。他の実施形態では、短縮ビット位置の一部または全部は、符号化では(同様に、復号では)、ゼロおよび1を交互にするような、特定のパターンを有するように扱われる。したがって、記載された実施形態によれば、短縮ビット位置のLLRは、最大のLLRの大きさを有するものとして、または、無限のLLRの大きさを有するものとして扱われてよく、復号処理中、変更されることが防止される。例えば、いくつかの実施形態では、短縮ビット位置は、「無限の」大きさのための特別な符号化を有し、LDPC復号器のロジックは、「無限」の値を(その数学的意味にしたがうように、または、任意の他の値よりはるかに大きいものとして)特別に扱うように変更される。短縮ビット位置のための特別な「無限の」LLRの大きさを有することは、これらのビット位置が、正しいことが「保証される」ように、これらのビット位置の「確実性」を強化し、これは、スタックビットの存在下では、非短縮ビット位置については、大きい大きさのLLRの値を有する非短縮ビット位置であっても容易ではない。他の実施形態では、短縮ビット位置のLLRは、初期のLDPC復号ステップで(例えば、反復LDPC復号処理の第1の反復の開始時に)、可能な最大のLLRの大きさに設定され、後続のLDPC復号の反復では変更が許可されない。短縮ビット位置のLLRが変更を許可される場合でも、短縮ビット位置のLLRは、それらの信頼できる初期の大きさのおかげで、誤った値(例えば、誤った符号)に変更されることはありそうにない。
復号中、スタックビットのLLRは、例えば、ビットに関するアナログレベルを決定し、ビットが0または1である確率を決定することによって、任意の他の非短縮ビットに関して決定される。スタックビットに関して、しかしながら、ビットのアナログレベルは、正しくない。スタックビットは、このように、最大値のLLRのように、大きいLLRの大きさを有し、潜在的に誤りフロアを上昇させ、LDPC復号器の出力ビット誤り率を制限する。具体的には、スタックビットは、トラッピングセットに巻き込まれるLDPC復号器の可能性を増加することによって、LDPC復号器が、解決法に集中するのを妨げる。これが発生すると、LDPC復号は、失敗する。LDPC復号は、ますます多くの正確なLLR情報を使用して、複数回繰り返されてよい。例えば、硬判定LDPC復号が失敗する場合、NANDフラッシュメモリの1つまたは複数の追加の読み取りが、一次LLR情報を得るために、異なったしきい値電圧で行われ、LDPC復号は、この軟判定情報を用いて繰り返される。LDPC復号が再び失敗する場合、二次LLR情報を得るために、中間しきい値電圧でのような、NANDフラッシュメモリのさらなる追加の読み取りが行われ、LLR復号は、この改善された軟判定情報を用いて繰り返される。LDPC復号が再び失敗する場合、様々な実施形態は、DSP技術、または、いくつかの形式の複数の符号語にまたがるより高いレベルの符号(例えば、RAID5のような符号)のような、さらに他の代替の戦略を有する。
スタックビットの存在下では、繰り返される読み取り再試行およびLDPC復号は、スタックビットが変化せず、代わりに、正しくない状態を維持するため、LDPC復号を改善しない。さらなる代替の戦略は、非常に処理が集中的である傾向があり、依然として、スタックビットを訂正できない可能性がある。
様々な実施形態では、軟判定LDPC復号ステップが失敗する場合、非短縮ビット位置は、減衰された(大きさが減らされた)それらのLLR値を有するが、短縮ビット位置は、それらの(例えば、最大の)LLR値を維持し、その後、LDPC復号が繰り返される。非短縮ビット位置を減衰させることは、短縮ビット位置と比較してスタックビットのLLRの大きさを減少させる効果を有し、したがって、LDPC復号器に、どのビットが正しい値を有するのかを決定するより高い能力を与える。減衰が、非短縮ビット位置に適用された後、LDPC復号は、更新されたLLRを用いて再び試みられる。減衰は、繰り返されてよく、例えば、第1のわずかな減衰が、LDPC復号を成功させない場合、1つまたは複数の追加のより積極的な減衰ステップが実行されてよく、LDPC復号が再試行されてよい。したがって、減衰および反復LDPC復号が、復号処理の1つまたは複数の段階で行われる。図7は、例示的な減衰され、短縮された符号語700(例えば、図6Bの符号語620の減衰されたもの)を示し、符号語700は、短縮メッセージビットLLR622、減衰された非短縮メッセージビットLLR704、および、減衰されたECCビットLLR706を含み、その結果、符号語620のすべての非短縮位置は、減衰される(例えば、減衰された非短縮メッセージビットLLR704は、非短縮メッセージビットLLR624の減衰されたものであり、減衰されたECCビットLLR706は、ECCビットLLR626の減衰されたものである)。短縮メッセージビットLLR622は、減衰されない。
図8は、不揮発性メモリ(例えば、MLC NANDフラッシュメモリ)の例示的なLDPC復号処理800の流れ図を示す。ステップ802では、LDPC復号処理800が開始する。ステップ804では、媒体110の(例えば、図3に示すような)1つまたは複数のセルの第1の読み取りが、1つまたは複数のセルのそれぞれの第1のアナログレベルを決定するために行われる。ステップ806では、1つまたは複数のセルのそれぞれのアナログレベルが、各LLR値に対応するビット値を決定するために、LLR値に変換される。破線807で示すように、任意のステップ808では、ステップ810でのLDPC復号を実行する前に、非短縮ビット位置は、減衰されてよい。ステップ810では、LDPC復号が、符号語内の1つまたは複数のセルのそれぞれに関するLLR値に対して実行される。ステップ812では、LDPC復号が成功した場合、処理800は、ステップ824に進む。ステップ812では、LDPC復号(任意の減衰ステップ808ありまたはなしでの)が、成功しなかった場合、処理800は、ステップ814に進み、非短縮位置の減衰が実行されるべきか否かが決定される。ステップ814で、減衰が実行されるべき場合、ステップ816では、符号語の非短縮ビット位置は、減衰され、処理800は、ステップ810に戻り、LDPC復号が、符号語内の1つまたは複数のセルのそれぞれに関するLLR値に対して実行される。ステップ814で、減衰が実行されるべきではない場合、ステップ818では、媒体コントローラ120の読み取り再試行限界に達したか否かが判定される。ステップ818で、読み取り再試行限界に達していない場合、ステップ820で、媒体110の1つまたは複数のセルのその後の読み取りが、決定された電圧レベルを精密にするために、(例えば、図5AおよびBに示すような)1つまたは複数の代わりのしきい値レベルを用いて実行される。後続の読み取り動作が、ステップ820で実行された後、処理800は、ステップ806に戻り、1つまたは複数のセルのそれぞれに関する精密化されたアナログレベルが、各LLR値に対応するビット値を決定するために、LLR値に変換される。ステップ818で、読み取り再試行限界に達している場合、ステップ822では、1つまたは複数の追加の復号方法が、データを復元するために試みられてよい(例えば、デジタル信号処理(DSP)、など)。ステップ824では、処理800は、完了し、復元されたデータは、媒体コントローラ120によってさらに処理されてよい。
このように、記載された実施形態では、LDPC復号(減衰なし)が失敗するたびに、より正確な軟判定情報を得るために、減衰および反復LDPC復号が、追加の読み取りと並行などして試みられる。いくつかの例示的な実施形態では、減衰および反復LDPC復号は、(さらなる軟判定情報を得るための)すべての所望の追加の読み取り後のLDPC復号が失敗した場合、単独で行われる。DSPが、減衰の前または後に行われてよく、複数の符号語にまたがるより高いレベルの符号化(例えば、RAID5のような符号)の使用が、一般に、最後の回復の試みであるため、減衰および反復LDPC復号は、必ずしも最終的な試みではない。スタックビット誤りが、より優勢である場合、非短縮ビット位置のみが、最大のLLR値を有することができるように、減衰は、すべてのLDPC復号に対して行われる。減衰の第1の試みは、第1の減衰レベルで実行されてよく、LDPC復号が失敗する場合、1つまたは複数のより強いレベルの減衰が、さらなるLDPC復号の試みのために適用されてよい。
ハード誤りが、LDPC復号がトラッピングセットでスタックする原因である場合、LDPC復号は、一般に、単一の「小さい」トラッピングセットでスタックする。トラッピングセットのサイズ(関与する誤ったビットノードおよび不満足なチェックノードの数)は、LDPC符号のパリティチェック行列に対応するタナーグラフ、特に、列重み、および、グラフの短周期スペクトルによって決定される。例示的な小さいトラッピングセットは、(4,2)および(4,4)を含み、これは、それぞれ、4つの誤ったビットノード、並びに、2つおよび4つの不満足なチェックを意味する。LDPC復号が、このような小さいトラッピングセットでスタックする場合、これは、シンドローム重みによって、または、同等に、不満足なチェックの数によって決定可能である。LDPC復号が、許容最大反復回数に達した後、シンドローム重みが小さいか、最後の数回の反復の間、小さかった(1と6の間)ことがわかった場合、これは、小さいトラッピングセットを含むハード誤りを示すと思われる。それに応じて、読み取り再試行は、ハード誤りを確実に検出することができないため(書き込まれたアナログ電圧が、最低および最高読み取り基準電圧によって囲まれる電圧窓を超える場合のような)、追加の読み取り再試行よりも、より積極的な減衰を使用することが有効である。
減衰は、すべての非短縮ビット位置のLLRに比を適用することによって行われる。例えば、LLRが−7から+7までの範囲である場合、非短縮ビット位置は、5/7、または4.5/7、または4/7のような減衰係数を乗算される。短縮ビット位置は、それらの最大のLLR(例えば、+7または−7)を維持する。図9は、増加する減衰係数2/7、3/7、4/7、および5/7を使用する減衰ありの様々な結果に対する、減衰なしの誤りフロア(三角形)を示す。図9では、s=10は、符号語あたり10のスタックビット誤りが存在することを示し、UBERは、LDPC復号後の訂正不可能なビット誤り率を表し、SNRは、信号対雑音比である。いくつかの実施形態では、減衰は、指定されたしきい値より大きい任意の非短縮ビット位置のLLR値の大きさを選択的に減少させることによって行われる。(−7から+7までの範囲のLLR値を使用する)第1の例では、4より大きい大きさを有する任意のLLR値は、その大きさを4まで減少されている。(−7から+7までの範囲のLLR値を使用する)第2の例では、5より大きい大きさを有する任意のLLR値は、その大きさを1だけ減少されている。第3の例では、最大の大きさを有する任意のLLR値は、その大きさを、1または2のような指定された量だけ減少されている。代わりに、減衰は、指数関数的減衰(より大きい大きさのLLR値を、より小さいLLR値より多く減衰させる)、ステップ関数、2次関数、または任意の他の数学関数のような、非短縮ビット位置のLLRに適用される任意の関数であってよい。
いくつかの実施形態では、減衰は、特定の種類の失敗の可能性の知識に基づいて、非対称である。例えば、値1が正のLLRを有し、値0が負のLLRを有する場合、並びに、スタックビットが、値0より値1を有する可能性がより高い場合、非対称減衰が、負のLLR値よりも強く正のLLR値を減衰させる。さらに、この例では、任意のスタックビットが値0を有することが非常にありそうにない場合、正のLLR値のみが減衰される。
MLC NANDフラッシュを用いる実施形態では、スタックビットの障害がどのようにセルに影響するかの可能性についての知識と組み合わされた、同じセルに記憶された他のビットの値(例えば、復号されているMSBビットに関するLSBビット値、または、復号されているLSBビットに関するMSBビット値、など)についての知識は、同じセルに記憶された他のビットの値の知識に基づく、各ビット位置の選択的な減衰を可能にする。例えば、下位ページを復号する場合、上位ページを読み取りおよび復号することは、下位ページの復号に使用されるLLR値を選択的に減衰させるために、追加の情報を提供する。したがって、LLR値は、NANDフラッシュの(1つまたは複数の符号語のような)所与の部分をそれぞれのしきい値電圧で読み取ることによって取られた1つまたは複数の標本を変換することによって生成されてよい。さらなる実施形態では、各ビット位置で取られた標本を、そのビット位置に関するLLR値に変換するために、テーブルルックアップが使用される。テーブルは、ファームウェアなどによって、読み取られているNANDフラッシュの部分のセルの状態分布の静的または動的な知識に基づいて、予め計算される。さらに別の実施形態では、標本は、それぞれのしきい値電圧によって順序付けされ、変換は、LLR値を決定するために、(1から0、または0から1のような)遷移点のインデックスを使用することが可能となる。
様々な実施形態によれば、LLR値は、LDPC復号器、専用ハードウェアユニット、ファームウェア、および他の同様な技術、のうちの1つまたは複数によって生成される。様々な実施形態によれば、LLRの減衰は、前処理ステップとしてのLDPC復号器、ルックアップテーブルで提供されるLLR値を変更するファームウェア、メモリに記憶されたLLR値を直接修正すること、および他の同様な技術、のうちの1つまたは複数によって行われる。
例示的な実施形態は、(例えば、図6A〜Bおよび7に示すように)ECCビットがメッセージビットの端部にある組織符号を用いる。しかしながら、いくつかの実施形態では、ECCビットは、データ内の任意の場所(中央、前方)であってよく、符号は、組織的でなくてよく、これは、LDPC復号器(例えば、142)が、メッセージとECCビットとを区別することができないことを意味する。この場合、復号器は、すべてのビットが「符号化」され、ECC情報およびデーが、数学的アルゴリズムにしたがって互いにインタリーブされるように、短縮ビット(例えば、602)と非短縮ビット(例えば、604)とを区別する。
このように、記載された実施形態は、媒体に記憶されたデータを読み取る媒体コントローラを提供する。媒体コントローラは、媒体からの短縮符号語の各ビットの値を決定する。短縮符号語は、完全な符号語の複数の非短縮ビットを含み、完全な符号語は、複数の非短縮ビット、および、1つまたは複数の短縮ビットを含む。短縮ビットは、デフォルト値に設定された短縮符号語内の未使用ビットに対応する。媒体コントローラは、短縮符号語の各ビットの決定された値を、対数尤度比(LLR)値の第1の組に変換する。完全な符号語は、短縮符号語に関するLLR値の第1の組を使用して復号される。媒体コントローラは、LLR値の第2の組を生成するために、符号語の非短縮ビットに対応する1つまたは複数のLLR値を減衰し、LLR値の第2の組を復号する。
本明細書での「一実施形態」または「実施形態」への参照は、実施形態に関連して説明した特定の特徴、構造、または特性が、少なくとも1つの実施形態に含まれ得ることを意味する。本明細書の様々な箇所での「一実施形態では」という語句の出現は、必ずしもすべてが同じ実施形態のことを指しておらず、別のまたは代わりの実施形態が、他の実施形態と相互に排他的である必要もない。同じことが、「実装」という用語にも当てはまる。本明細書で使用される、「例示的」という単語は、本明細書では、例、事例、または例示として機能することを意味するために使用される。本明細書に「例示的」に記載される任意の態様または設計は、必ずしも、他の態様または設計より好適または有利であると解釈されるべきではない。むしろ、例示という単語の使用は、概念を具体的に提示することを意図している。
例示的な実施形態を、デジタル信号プロセッサ、マイクロコントローラ、または汎用コンピュータとしての可能な実装を含むソフトウェアプログラムの処理ブロックに関して説明してきたが、記載された実施形態は、そのように限定されない。当業者には明らかであろうように、ソフトウェアの様々な機能は、回路の処理として実装されてもよい。このような回路は、例えば、単一の集積回路、多チップモジュール、単一のカード、または多カード回路パックで用いられてよい。
加えて、「または」という用語は、排他的な「または」ではなく、包括的な「または」を意味することを意図している。すなわち、特に指定のない限り、または、文脈から明らかでない限り、「XがAまたはBを用いる」は、自然な包括的置換のいずれかを意味することを意図している。すなわち、XがAを用いる、XがBを用いる、または、XがAおよびBの両方を用いる場合、「XがAまたはBを用いる」は、前述の事例のどれの下でも満たされる。加えて、本出願および添付の特許請求の範囲で使用される冠詞「a」および「an」は、一般に、特に指定のない限り、または、単数形に向けられることが文脈から明らかでない限り、「1つまたは複数」を意味すると解釈されるべきである。
さらに、「システム」、「構成要素」、「モジュール」、「インタフェース」、「モデル」、などの用語は、一般に、ハードウェア、ハードウェアおよびソフトウェアの組み合わせ、ソフトウェア、または、実行中のソフトウェアのいずれかの、コンピュータ関連の実体を指すことを意図している。例えば、構成要素は、プロセッサ上で動作しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、および/または、コンピュータであってよいが、これらに限定されない。例として、コントローラ上で作動しているアプリケーション、コントローラおのどちらも構成要素となりうる。1つまたは複数の構成要素は、実行のプロセスおよび/またはスレッド内に存在してよく、構成要素は、1台のコンピュータ上に局在化されてよく、および/または、2つ以上のコンピュータ間で分散されてよい。
要素および標準を参照して本明細書で使用される、「互換性がある」という用語は、要素が、他の要素と、標準によって全体的または部分的に指定される方法で連絡し、他の要素によって、標準によって指定される方法で、他の要素と通信することが十分に可能であると認識されることを意味する。互換性のある要素は、標準によって指定された方法で内部的に動作する必要はない。
また、この説明の目的のために、「結合」、「結合する」、「結合された」、「接続」、「接続する」、または「接続された」という用語は、エネルギーが1つまたはそれ以上の要素の間で転送されることが可能となる、当該技術分野で既知の、または将来開発される任意の方法を指し、1つまたは複数の追加の要素の介在が、考えられるが、必要ではない。逆に、「直接結合された」、「直接接続された」、などの用語は、このような追加の要素の不在を示唆する。信号、および対応するノードまたはポートは、同じ名前によって指されてよく、本明細書での目的のために交換可能である。
本明細書に記載の主題は、ユーザインタラクティブな構成要素を有するコンピューティングアプリケーションのための1つまたは複数のコンピューティングアプリケーションの機能/動作を処理するように、例示的な実装の文脈で説明されている場合があるが、主題は、これらの特定の実施形態に限定されない。むしろ、本明細書に記載の技術は、任意の適切な種類のユーザインタラクティブな構成要素の実行管理方法、システム、プラットホーム、および/または装置に適用されてよい。
記載された実施形態は、方法、および、これらの方法を実施するための装置の形態で実施されてよい。記載された実施形態は、磁気記録媒体、光記録媒体、固体メモリ、フロッピー(登録商標)ディスケット、CD−ROM、ハードドライブ、または、任意の他の非一時的な機械可読記憶媒体のような有形の媒体内で具体化されたプログラムコードの形態で実装されてもよく、プログラムコードがコンピュータのような機械にインストールされ、機械によって実行されると、機械は、記載された実施形態を実施するための装置となる。記載された実施形態は、例えば、非一時的な機械可読記憶媒体に記憶される、機械にロードされ、および/もしくは機械によって実行される、または、電気的な配線またはケーブル接続を介する、光ファイバを介する、もしくは、電磁放射を介するような、いくつかの伝送媒体または搬送波を介して伝送される、プログラムコードの形態で実装されてもよく、プログラムコードがコンピュータのような機械にインストールされ、機械によって実行されると、機械は、記載された実施形態を実施するための装置となる。汎用プロセッサ上に実装されると、プログラムコードセグメントは、特定の論理回路と類似して動作する独自の装置を提供するために、プロセッサと結合する。記載された実施形態は、媒体を介して電気的または光学的に伝送され、磁気記録媒体などに磁界変動で記憶され、本明細書に記載されたような方法および/または装置を使用して生成される、ビットストリームまたは他の信号値のシーケンスの形態で実装されてもよい。
本明細書に記載の例示的な方法のステップは、必ずしも、記載された順序で実行される必要はないことを理解すべきであり、このような方法のステップの順序は、単に例示であると理解すべきである。同様に、様々な実施形態と矛盾しない方法で、追加のステップが、このような方法に含まれてよく、特定のステップが、省略または結合されてよい。
記載された実施形態の性質を説明するために説明および図示された部分の詳細、材料、および配置の様々な変更は、以下の特許請求の範囲から逸脱することなく、当業者によってなされ得ることが、さらに理解されるであろう。

Claims (10)

  1. コントローラによって、記憶媒体および通信チャネルのうちの少なくとも1つからデータを読み取る方法であって、前記方法が、
    前記読み取りデータの短縮符号語の各ビットに関する値を決定することを含み、前記短縮符号語が、完全な符号語の複数の非短縮ビットを含み、前記完全な符号語が、複数の非短縮ビット、および1つまたは複数の短縮ビットを含み、前記短縮ビットが、前記短縮符号語内の未使用ビットに対応し、
    前記方法が、さらに、前記短縮符号語の各ビットに関する前記決定された値を、対数尤度比(LLR)の値の第1の組に変換することと、
    前記完全な符号語を、前記短縮符号語に関する前記LLR値の第1の組を使用して復号することと、
    LLR値の第2の組を生成するために、前記LLR値の第1の組の1つまたは複数のLLR値を減衰させることと、を含み、前記1つまたは複数のLLR値が、前記符号語の非短縮ビットに対応し、
    前記方法が、さらに、前記LLR値の第2の組を復号することを含む、方法。
  2. 前記1つまたは複数のLLR値を減衰させるステップが、前記LLR値の第1の組の復号が、前記短縮符号語に対応するデータをうまく回復しなかった場合にのみ、実行される、請求項1に記載の方法。
  3. 前記1つまたは複数のLLR値を減衰させるステップが、
    前記短縮符号語の短縮ビットに対応する1つまたは複数のLLR値を、関連する最大のLLRの大きさに設定することと、
    前記LLR値の第1の組の1つまたは複数のLLR値の大きさを、所定の量だけ減少させることと、
    前記LLR値の第1の組の1つまたは複数のLLR値の大きさを、所定のスケールファクタによってスケーリングすることと、のうちの1つを含む、請求項1に記載の方法。
  4. 前記短縮符号語に関するLLR値の第1の組を復号することの前に、前記LLR値の第1の組の1つまたは複数のLLR値を減衰させることをさらに含む、請求項1に記載の方法。
  5. 前記復号することが、前記LLR値の第2の組からの前記短縮符号語に対応するデータをうまく回復しなかった場合、
    LLR値の第3の組を生成するために、前記LLR値の第2の組の1つまたは複数のLLR値を減衰させることをさらに含み、前記1つまたは複数のLLR値が、前記符号語の非短縮ビットに対応し、
    前記方法が、さらに、前記LLR値の第3の組を復号することを含む、請求項1に記載の方法。
  6. 前記LLR値の第1の組を減衰させることが、前記LLR値の第1の組の1つまたは複数のLLR値の大きさを、第1の所定の量だけ減少させることによって行われ、
    前記LLR値の第2の組を減衰させることが、前記LLR値の第2の組の1つまたは複数のLLR値の大きさを、第2の所定の量だけ減少させることによって行われる、請求項5に記載の方法。
  7. 前記LLR値の第1の組を減衰させることが、前記LLR値の第1の組の1つまたは複数のLLR値の大きさを、第1のスケールファクタによってスケーリングすることによって行われ、
    前記LLR値の第2の組を減衰させることが、前記LLR値の第2の組の1つまたは複数のLLR値の大きさを、第2のスケールファクタによってスケーリングすることによって行われる、請求項5に記載の方法。
  8. 前記決定された値が、バイナリデータまたはアナログ電圧レベルのうちの少なくとも1つであり、前記短縮符号語の各ビットに関する前記決定された値を、対数尤度比(LLR)値の第1の組に変換するステップが、第1のしきい値レベルを用いて実行され、前記方法が、さらに、
    減衰動作のしきい値数に達した場合、
    前記コントローラの読み取り再試行制限に達しているかどうかを判定することを含み、
    前記方法が、さらに、前記読み取り再試行制限に達しない場合、
    前記記憶媒体から前記短縮符号語の各ビットに関する値を再読み取りすることと、
    1つまたは複数の後続のしきい値レベルを用いて、前記短縮符号語の各ビットに関する前記決定された値を、対数尤度比(LLR)値の後続の組に変換することと、
    前記減衰させるステップおよび前記復号するステップを、前記LLR値の後続の組を用いて再実行することと、を含む、請求項1に記載の方法。
  9. 前記読み取り再試行制限に達した場合、
    前記LLR値の組に対するデータ回復をさらに実行することを含む、請求項8に記載の方法。
  10. 前記復号するステップは、低密度パリティチェック(LDPC)復号であり、
    前記さらなるデータ回復は、デジタル信号処理(DSP)、および、独立ディスク(RAID)データ回復の冗長アレイのうちの少なくとも1つである、請求項9に記載の方法。
JP2014103075A 2013-07-03 2014-05-19 低密度パリティチェック(ldpc)復号器での対数尤度比(llr)減衰 Expired - Fee Related JP6367607B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/934,999 2013-07-03
US13/934,999 US9337865B2 (en) 2012-05-04 2013-07-03 Log-likelihood ratio (LLR) dampening in low-density parity-check (LDPC) decoders

Publications (3)

Publication Number Publication Date
JP2015015701A true JP2015015701A (ja) 2015-01-22
JP2015015701A5 JP2015015701A5 (ja) 2017-03-02
JP6367607B2 JP6367607B2 (ja) 2018-08-01

Family

ID=51167664

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014103075A Expired - Fee Related JP6367607B2 (ja) 2013-07-03 2014-05-19 低密度パリティチェック(ldpc)復号器での対数尤度比(llr)減衰

Country Status (5)

Country Link
EP (1) EP2822184B1 (ja)
JP (1) JP6367607B2 (ja)
KR (1) KR102155795B1 (ja)
CN (1) CN104283570B (ja)
TW (1) TWI619353B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10763898B2 (en) 2016-09-13 2020-09-01 Toshiba Memory Corporation Memory system that carries out soft bit decoding

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9818488B2 (en) * 2015-10-30 2017-11-14 Seagate Technology Llc Read threshold voltage adaptation using bit error rates based on decoded data
KR102265220B1 (ko) * 2015-03-09 2021-06-16 에스케이하이닉스 주식회사 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법
US9727416B2 (en) * 2015-07-01 2017-08-08 Xilinx, Inc. Variable code rate solid-state drive
US10268539B2 (en) * 2015-12-28 2019-04-23 Intel Corporation Apparatus and method for multi-bit error detection and correction
US10222996B2 (en) 2017-02-07 2019-03-05 Western Digital Technologies, Inc. Read operation and soft decoding timing
US10269422B2 (en) * 2017-09-08 2019-04-23 Cnex Labs, Inc. Storage system with data reliability mechanism and method of operation thereof
KR102543059B1 (ko) 2017-11-22 2023-06-14 삼성전자주식회사 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템
US10884858B2 (en) * 2018-03-16 2021-01-05 SK Hynix Inc. LDPC decoding device, memory system including the same and method thereof
CN108683423B (zh) * 2018-05-16 2022-04-19 广东工业大学 一种多级闪存信道下的ldpc码动态串行调度译码算法及装置
US20190379399A1 (en) * 2018-06-08 2019-12-12 Goke Us Research Laboratory Log-likelihood-ratio (llr) generation algorithm for low-density-parity-check (ldpc) codes used in flash memory
US10715182B2 (en) * 2018-07-27 2020-07-14 Innogrit Technologies Co., Ltd. Systems and methods for decoding error correcting codes with self-generated LLR
KR20200019046A (ko) * 2018-08-13 2020-02-21 에스케이하이닉스 주식회사 에러 정정 회로 및 이의 동작 방법
US10778248B1 (en) * 2020-01-30 2020-09-15 TenaFe, Inc. Low-density parity-check decoding with de-saturation

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011036864A1 (ja) * 2009-09-25 2011-03-31 パナソニック株式会社 符号化装置、復号装置、符号化方法、復号方法、及び通信システム
US20120272000A1 (en) * 2008-10-15 2012-10-25 Ofir Shalvi Efficient data storage in storage device arrays

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702986B2 (en) * 2002-11-18 2010-04-20 Qualcomm Incorporated Rate-compatible LDPC codes
JP2006238127A (ja) * 2005-02-25 2006-09-07 Sony Corp 復号装置および方法、並びにプログラム
TW200803341A (en) * 2006-03-14 2008-01-01 Qualcomm Inc Log-likelihood ratio (LLR) computation using piecewise linear approximation of llr functions
US8873671B2 (en) * 2008-03-26 2014-10-28 Qualcomm Incorporated Method and system for LLR buffer reduction in a wireless communication modem
US8677218B2 (en) * 2010-01-27 2014-03-18 Sk Hynix Memory Solutions Inc. LDPC decoding with on the fly error recovery
US8458555B2 (en) * 2010-06-30 2013-06-04 Lsi Corporation Breaking trapping sets using targeted bit adjustment
KR20130012549A (ko) * 2011-07-25 2013-02-04 한양대학교 산학협력단 Ldpc 부호화, 복호화 방법 및 그 방법을 이용하는 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120272000A1 (en) * 2008-10-15 2012-10-25 Ofir Shalvi Efficient data storage in storage device arrays
WO2011036864A1 (ja) * 2009-09-25 2011-03-31 パナソニック株式会社 符号化装置、復号装置、符号化方法、復号方法、及び通信システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YU CAI ET AL.: "Flash Correct-and-Refresh: Retention - Aware Error Management for Increased Flash Memory Lifetime", COMPUTER DESIGN(ICCD), 2012 IEEE 30TH INTERNATIONAL CONFERENCE ON, JPN6018001039, 3 October 2012 (2012-10-03), pages 94 - 101 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10763898B2 (en) 2016-09-13 2020-09-01 Toshiba Memory Corporation Memory system that carries out soft bit decoding
US11336307B2 (en) 2016-09-13 2022-05-17 Kioxia Corporation Memory system that carries out soft bit decoding

Also Published As

Publication number Publication date
EP2822184B1 (en) 2017-03-15
KR20150004732A (ko) 2015-01-13
JP6367607B2 (ja) 2018-08-01
EP2822184A9 (en) 2015-06-10
CN104283570A (zh) 2015-01-14
TW201503604A (zh) 2015-01-16
EP2822184A1 (en) 2015-01-07
KR102155795B1 (ko) 2020-09-14
CN104283570B (zh) 2020-05-19
TWI619353B (zh) 2018-03-21

Similar Documents

Publication Publication Date Title
JP6367607B2 (ja) 低密度パリティチェック(ldpc)復号器での対数尤度比(llr)減衰
US9337865B2 (en) Log-likelihood ratio (LLR) dampening in low-density parity-check (LDPC) decoders
US8938659B2 (en) Low-density parity-check decoder disparity preprocessing
US9319073B2 (en) Mitigation of write errors in multi-level cell flash memory through adaptive error correction code decoding
KR101645906B1 (ko) 계층적 반복 에러 교정을 위한 종료 기준
US20200012561A1 (en) System and method for adaptive multiple read of nand flash
TWI514388B (zh) 讀取快閃記憶體中所儲存之資料的方法、記憶體控制器與系統
US9553612B2 (en) Decoding based on randomized hard decisions
US9935735B2 (en) Multiuse data channel
TW202025162A (zh) 解碼方法、記憶體控制電路單元以及記憶體儲存裝置
TWI576847B (zh) 讀取快閃記憶體中所儲存之資料的方法、記憶體控制器與系統
KR102606829B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
KR20180123393A (ko) Siso 복호 방법, 디코더 및 반도체 메모리 시스템
KR20200033688A (ko) 에러 정정 회로 및 이의 동작 방법
TWI514404B (zh) 讀取快閃記憶體中所儲存之資料的方法、記憶體控制器與系統
TWI721842B (zh) 解碼方法、記憶體儲存裝置及記憶體控制電路單元
KR20230019573A (ko) 컨트롤러 및 컨트롤러의 동작 방법
KR20200124054A (ko) 오류 정정 디코더 및 이를 포함하는 메모리 시스템
CN110795268B (zh) 比特判断方法、存储器控制电路单元以及存储器存储装置
CN113496752B (zh) 解码方法、存储器存储装置及存储器控制电路单元
US11567828B2 (en) Asymmetric LLR generation using assist-read
US10628259B2 (en) Bit determining method, memory control circuit unit and memory storage device
US20240088915A1 (en) Bit-flipping decoder and decoding method for irregular codes
KR20180125298A (ko) 반복 복호기, 반복 복호 방법 및 반도체 메모리 시스템
KR102530269B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170120

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170120

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180413

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: 20180605

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180705

R150 Certificate of patent or registration of utility model

Ref document number: 6367607

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees