【文献】
鎌部 浩,テンソルプロダクト符号とIntegrated Interleaving,映像情報メディア学会技術報告,2007年12月13日,Vol.31, No.62,pp.35-40
【文献】
Mustafa N. Kaynak et al.,Classification Codes for Soft Information Generation from Hard Flash Reads,IEEE Journal on Selected Areas in Communications,2014年 5月,Vol.32, No.5,pp.892-899
(58)【調査した分野】(Int.Cl.,DB名)
外符号コードワードの一片及び対応するCCパリティ桁を含むCCコードワードを受信し、少なくとも部分的に、前記対応するCCパリティ桁を使用して、前記外符号コードワードの一片に関連付けられるソフトデータを生成する、分類コード(CC)復号器と、
前記CC復号器に連結され、前記外符号コードワード及び前記ソフトデータの少なくとも一部に基づき符号化されたユーザデータを出力する外符号復号器と、
前記外符号復号器に連結され、前記符号化されたユーザデータの少なくとも一部に基づき、復号されたユーザデータを出力するECC符号化/復号構成要素と、を含み、
前記外符号復号器は、低密度パリティチェック(LDPC)反復復号器であり、前記外符号コードワードの前記一片は、LDPCコードワードの一片である、
装置。
前記ソフトデータは、前記外符号コードワードの前記一片に関連付けられる信頼性値であり、前記信頼性値は、少なくとも部分的に、ハード読み取りを使用して判定される前記CCコードワードの桁に関して判定される対数尤度比(LLR)を含む、請求項1〜2のいずれかに記載の装置。
前記ソフトデータは、前記外符号コードワードの前記一片の一部分に関連付けられる信頼性値であり、前記CC復号器は、それぞれの信頼性値を、前記外符号コードワードの前記一片の前記一部分の各桁に関連付けるように構成される、請求項1〜3のいずれかに記載の装置。
外符号復号器は、フィードバックパスを介して前記CC復号器にハード決定をフィードバックするように構成され、前記CC復号器は、前記ハード決定を使用してソフトデータを判定するように構成される、請求項1に記載の装置。
最大2反復動作する前記第2の復号器を介して、少なくとも部分的に、前記外符号コードワードの前記一片及び前記判定されたソフトデータに基づくデータを判定することをさらに含む、請求項8に記載の方法。
前記第1の復号器を介して、前記第1のコードパリティ桁からパリティチェックコード(C1)及びバイナリ代数コード(C2)を判定することをさらに含み、前記第1のコードパリティ桁は、C1及びC2のテンソル積から計算される、請求項9〜10のいずれかに記載の方法。
前記ECC符号化/復号化要素は、前記LDPC符号器に連結されるボーズ・チョドーリ・オッケンジェム(BCH)符号器をさらに含み、前記LDPC符号器は、前記BCH符号器からBCHコードワードを受信し、前記CC符号器に前記LDPCコードワードを提供するように構成される、請求項13に記載の装置。
前記CC符号器は、前記外符号コードワードの前記一片の複数の部分の各々に関して、一桁パリティチェックコード(C1)の桁を判定するように構成され、前記CC符号器は、前記外符号コードワードの前記一片からバイナリ代数コード(C2)を判定するように構成される、請求項13〜14のいずれか一項に記載の装置。
【発明を実施するための形態】
【0007】
分類コードを使用してソフトデータを判定するための装置及び方法が、提供される。1つの装置例は、分類コード(CC)復号器と、CC復号器に連結される外符号復号器(CC以外の1つ以上のコードに対応する)とを含むことができる。CCは、最内符号であり得、低密度パリティチェック(LDPC)コードなどの1つ以上の外部エラー訂正コード(単数または複数)(ECC)が存在し得る。CC復号器は、CCコードワードを受信するように構成される。CCコードワードは、外部ECCコードワードの一片を含む。CC復号器は、少なくとも部分的に、対応するCCパリティ桁、例えば、パリティビットに基づいて、外部ECCコードワードの一片に関連付けられるソフトデータを判定するように構成される。
【0008】
本開示の種々の実施形態によれば、「分類コード」は、メモリ、例えば、フラッシュメモリからのハード読み取りから獲得されるデータに基づいて、ソフトデータを生成するために使用される。この様式で生成されるソフトデータは、反復復号器、例えば、LDPC復号器において使用することができる。分類コードは、単純で簡単なフォワード符号化及び復号技術と共に利用することができ、その使用は、先行アプローチと比較して、特定の反復範囲における最良の生のビットエラー率(RBER)性能を提供することができる。本開示の装置及び方法の1つの利点は、ECCオーバーヘッドのごく一部のみを使用して達成することができる、メモリからのハード読み取りに基づいてソフトデータを生成するための分類コードの使用である。本開示の分類コードは、LDPCコード、及びその復号器が任意の形態のソフト情報を利用することができる任意のECCと協調して使用することができる。
【0009】
LDPCコードの利点としては、シャノン容量に近い性能及び効率的/構造的ハードウェア実装を挙げることができる。LDPC復号器は、信頼性情報、例えば「信念」の反復交換に基づく、「信念伝播」アルゴリズムを利用する。LDPC復号器は、確率的な性質であり、したがって、ソフトデータを利用することができる。実際、LDPCコードは、例えば、信頼性値などのソフトデータの存在下でのみ、シャノン容量に近い性能を達成することができる。
【0010】
しかしながら、メモリからのソフトデータ読み取りを伴う作業は、複数の読み取りを必要とし、ハード読み取りと比較してより遅い読み取り時間をもたらし得るメモリのソフト読み取りを介したソフトデータの獲得を含むがそれらに限定されない、いくつかの課題を含む。ハード読み取りの場合、単一ビットの代わりに複数のビットが転送されるため、メモリからのソフトデータ読み取りの転送は、ハード読み取りデータの転送と比較して、より低いスループット率をもたらし得る。メモリ内の全てのページ/ブロック/ダイを含むであろうソフト読み取り位置の算出は、困難であり得る。したがって、それは、可能な限りハード読み取りモードでフラッシュデバイスを動作させるのにより効率的であり得る。
【0011】
図1は、本開示のいくつかの実施形態に従う、不揮発性メモリアレイ100の一部分の概略図を例解する。
図1の実施形態は、NANDアーキテクチャの不揮発性メモリアレイ、例えば、NANDフラッシュを例解する。しかしながら、本明細書において説明される実施形態は、本実施例に限定されない。
図1に示されるように、メモリアレイ100は、アクセス線(例えば、ワード線105−1、...、105−N)、及び交差するデータ線(例えば、ローカルビット線107−1、107−2、107−3、...、107−M)を含む。デジタル環境におけるアドレス指定を容易にするために、ワード線105−1、...、105−Nの数、及びローカルビット線107−1、107−2、107−3、...、107−Mの数は、2のいくらかの累乗であり得る(例えば、256ワード線と4,096ビット線)。
【0012】
メモリアレイ100は、NANDストリング109−1、109−2、109−3、...、109−Mを含む。各NANDストリングは、不揮発性メモリセル111−1、...、111−Nを含み、各々、それぞれのワード線105−1、...、105−Nに連結される。各NANDストリング(及びその構成メモリセル)はまた、ローカルビット線107−1、107−2、107−3、...、107−Mと関連付けられる。各NANDストリング109−1、109−2、109−3、...、109−Mの不揮発性メモリセル111−1、...、111−Nは、ソース選択ゲート(SGS)、例えば、電界効果トランジスタ(FET)、113とドレイン選択ゲート(SGD)、例えば、FET、119との間で、直列にソース・トゥ・ドレイン接続される。各ソース選択ゲート113は、ソース選択線117上の信号に応答して、それぞれのNANDストリングを共通のソース123に選択的に連結するように構成され、一方で、各ドレイン選択ゲート119は、ドレイン選択線115上の信号に応答して、それぞれのNANDストリングをそれぞれのビット線に選択的に連結するように構成される。
【0013】
図1に例解される実施形態に示されるように、ソース選択ゲート113のソースは、共通のソース線123に接続される。ソース選択ゲート113のドレインは、対応するNANDストリング109−1のメモリセル111−1のソースに接続される。ドレイン選択ゲート119のドレインは、ドレインコンタクト121−1において、対応するNANDストリング109−1のビット線107−1に接続される。ドレイン選択ゲート119のソースは、対応するNANDストリング109−1の最後のメモリセル111−N、例えば、フローティングゲートトランジスタのドレインに接続される。
【0014】
いくつかの実施形態では、不揮発性メモリセル111−1、...、111−Nの構造は、ソース、ドレイン、フローティングゲートなどの電荷貯蔵構造、及び制御ゲートを含む。不揮発性メモリセル111−1、...、111−Nは、それぞれ、ワード線、105−1、...、105−Nに連結されるそれらの制御ゲートを有する。不揮発性メモリセル、111−1、...、111−Nの「列」は、NANDストリング109−1、109−2、109−3、...、109−Mを作成し、それぞれ、所与のローカルビット線107−1、107−2、107−3、...、107−Mに連結される。不揮発性メモリセルの「行」は、所与のワード線105−1、...、105−Nに共通して連結されるメモリセルである。用語「列」及び「行」の使用は、不揮発性メモリセルの特定の線形、例えば、垂直及び/または水平の配向を示唆することを意味されない。NORアレイアーキテクチャは、メモリセルのストリングが選択されたゲート間で並列に連結されることを除き、同様に配列することができる。
【0015】
選択されたワード線、例えば、105−1、...、105−Nに連結されるセルのサブセットは、メモリセルのページとして、一緒にプログラムする及び/または読み取ることができる。プログラム動作、例えば、書き込み動作は、その選択されたアクセス線に連結される選択されたセルの閾値電圧(Vt)を、標的の、例えば、所望の状態、例えば、電荷貯蔵状態に対応する所望のプログラム電圧レベルまで増加させるために、多数のプログラムパルス、例えば、16V〜20Vを、選択されたワード線に印加することを含むことができる。
【0016】
読み取り動作(本明細書において使用するとき、「読み取り」動作は、プログラム検証動作を指すことができる)は、選択されたセルのデータ値を判定するために、選択されたセルに連結されたビット線の電圧及び/または電流の変化を感知することを含むことができる。読み取り動作は、ビット線を予め帯電させること、及び選択されたセルが導通し始めるときに放電を感知することを含むことができる。本明細書において使用するとき、感知することは、読み取ることに含まれる行為である。
【0017】
選択されたセルの状態を判定する、例えば、感知することは、選択されたワード線に多数の感知信号、例えば、読み取り電圧を提供しつつ、選択されていないセルの閾値電圧とは独立して、選択されていないセルを導通状態に定置するのに十分なストリングの選択されていないセルに連結されるワード線に、多数の電圧、例えば、読み取りパス電圧を提供することを含むことができる。読み取り及び/または検証されている選択されたセルに対応するビット線は、選択されたワード線に印加される特定の感知信号に応答して、選択されたセルが導通するかどうかを判定するように感知することができる。例えば、選択されたセルの状態は、ビット線電流が、特定の状態に関連付けられる特定の参照電流に達する、ワード線電圧によって判定することができる。
【0018】
NANDストリング内の選択されたメモリセル上で実施される感知動作において、ストリングの選択されていないメモリセルは、導通状態であるようにバイアスされる。かかる感知動作においては、選択されたセルの状態は、ストリングに対応するビット線上で感知される電流及び/または電圧に基づいて、判定することができる。例えば、選択されたセルの状態は、所与の期間中にビット線電流が特定の量だけ変化するか、または特定のレベルに達するかどうかに基づいて、判定することができる。
【0019】
例として、
図1に示されるアレイ100などのアレイのメモリセルは、シングルレベル(メモリ)セル(SLC)またはマルチレベル(メモリ)セル(MLC)であり得る。SLCは、単一ビット、例えば、2つの状態メモリセルであり得る。すなわち、セルは、2つの状態、例えば、P0及びP1のうちの1つに、それぞれプログラムすることができる。動作中、選択されたブロック内などの多数のメモリセルは、P0かまたはP1のいずれかに対応するVtレベルを有するようにプログラムすることができる。例として、状態P0は、バイナリ「1」などの記憶されたデータ値を表すことができる。状態P1は、バイナリ「0」などの記憶されたデータ値を表すことができる。
【0020】
MLCは、2ビット、例えば、4つの状態のメモリセルであることができ、または、1メモリセル当たりデータの小数部のビットを含む、1メモリセル当たり2つを超えるビットのデータを記憶することができる。例えば、2ビットメモリセルは、4つの状態、例えば、P0、P1、P2、及びP3のうちの1つに、それぞれプログラムすることができる。動作中、選択されたブロック内などの多数のメモリセルは、P0、P1、P2、またはP3のいずれかに対応するVtレベルを有するようにプログラムすることができる。例として、状態P0は、バイナリ「11」などの記憶されたデータ値を表すことができる。状態P1は、バイナリ「10」などの記憶されたデータ値を表すことができる。状態P2は、バイナリ「00」などの記憶されたデータ値を表すことができる。状態P3は、バイナリ「01」などの記憶されたデータ値を表すことができる。しかしながら、実施形態は、これらの例に限定されない。
【0021】
図2は、本開示のいくつかの実施形態に従う、少なくとも1つのメモリシステム234を含む計算システム230の形態の装置のブロック図である。本明細書において使用するとき、メモリシステム234、コントローラ238、またはメモリデバイス239も、別々に「装置」であると見なされることがある。メモリシステム234は、例えば、固体状態ドライブ(SSD)であることができ、ホストインターフェース236と、コントローラ238、例えば、プロセッサ及び/または他の制御回路と、多数のメモリデバイス239−1、...、239−M、例えば、NANDフラッシュデバイスなどの、メモリシステム234のための記憶容量を提供する固体状態メモリデバイスとを含むことができる。いくつかの実施形態では、コントローラ238、メモリデバイス239−1〜239−M、及び/またはホストインターフェース236は、単一のダイ上にか、または単一のパッケージ、例えば、管理されたNANDアプリケーション内に物理的に位置付けることができる。また、いくつかの実施形態では、メモリ、例えば、メモリデバイス239−1〜239−Mは、単一のメモリデバイスを含むことができる。
【0022】
図2に例解されるように、コントローラ234は、1つ以上のチャネルを介してホストインターフェース236及びメモリデバイス239−1、...、239−Mに連結され得、メモリシステム234及びホスト232の間でデータを転送するために使用され得る。インターフェース236は、標準インターフェースの形態であり得る。例えば、メモリシステム234が計算システム230内のデータ記憶のために使用されるとき、インターフェース236は、他のコネクタ及びインターフェースの中でもとりわけ、シリアルアドバンスドテクノロジーアタッチメント(SATA)、周辺構成要素相互接続エクスプレス(PCIe)、またはユニバーサルシリアルバス(USB)であり得る。しかしながら、概して、インターフェース236は、メモリシステム234とホストインターフェース236のための互換性のあるレセプタを有するホスト232との間で、制御、アドレス、データ、及び他の信号を渡すためのインターフェースを提供することができる。
【0023】
ホスト232は、種々の他の種類のホストの中でもとりわけ、パーソナルラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、携帯電話、またはメモリカードリーダーなどのホストシステムであり得る。ホスト232は、システムマザーボード及び/またはバックプレーンを含むことができ、多数のメモリアクセスデバイス、例えば、多数のプロセッサを含むことができる。ホスト232は、通信チャネル233によってホストインターフェース236に連結され得る。
【0024】
コントローラ238は、他の動作の中でもとりわけ、データ読み取り、書き込み、及び消去動作を制御するために、メモリデバイス239−1、...、239−Mと通信することができる。コントローラ238は、例えば、いくつかのメモリデバイス239−1、...、239−Mへのアクセスを制御するため、及び/もしくはホスト232とメモリデバイス239−1、...、239−Mとの間のデータ転送を促進するためのハードウェア、ならびに/またはファームウェア、例えば、1つ以上の集積回路、ならびに/またはソフトウェアの形態の多数の構成要素を含むことができる。例えば、
図2に例解される例では、コントローラ238は、ソフトデータ構成要素242及びエラーコード/復号構成要素244を含むことができる。しかしながら、コントローラ238は、本開示の実施形態を曖昧にしないために例解されていない、種々の他の構成要素を含むことができる。また、構成要素242及び/または244は、いくつかの実施形態では、コントローラ238の構成要素でなくてもよく、例えば、構成要素242及び/または244は、独立した構成要素であり得る。
【0025】
ソフトデータ構成要素242は、ソフトデータを判定する、例えば、参照するために使用することができる。例えば、ソフトデータ構成要素242は、ハード読み取りからソフトデータを判定するために使用することができる。エラーコード/復号構成要素244は、例えば、BCH符号器/復号器、LDPC符号器/復号器、分類コード符号器/復号器、及び/または他の種類の符号器/復号器であり得、ホスト232とメモリデバイス239−1、...、239−M間で転送されるユーザデータを符号化/復号することができる。ソフトデータ構成要素242は、エラーコード/復号構成要素244に連結されて、例えば、それにソフトデータを提供することができる。それに加えて、エラーコード/復号構成要素244の復号器は、ソフトデータを別のエラーコード/復号構成要素244の復号器に提供することができる。
【0026】
メモリデバイス239−1、...、239−Mは、メモリセルの多数のアレイ、例えば、
図1に示されるアレイ100などのアレイを含むことができる。アレイは、例えば、NANDアーキテクチャを有するフラッシュアレイであり得る。しかしながら、実施形態は、特定の種類のメモリアレイまたはアレイアーキテクチャに限定されない。メモリセルは、例えば、多数の物理的ページを含む多数のブロックにグループ化することができる。多数のブロックは、メモリセルのプレーン内に含まれ得、アレイは、多数のプレーンを含むことができる。
【0027】
図3は、本開示のいくつかの実施形態に従う、コントローラ338の形態の装置の機能ブロック図である。コントローラ338は、メモリ339に連結され得、コントローラ338は、ECC符号化/復号構成要素344を含むことができる。コントローラ338は、
図2の計算システム230の一部として示されるコントローラ238と同等のものであり得る。本開示の装置及び方法は、計算システムに関して、またより具体的には、メモリからのデータ読み取りの復号に関して例解されているが、本開示の実施形態はそのように限定されるものではなく、通信チャネル233を通じて伝送されるデータの復号などの他の様式で実装することもできる。
【0028】
メモリ339は、非一時的媒体であり、メモリセル、例えば、不揮発性メモリセルの多数のアレイを含むことができる。アレイは、例えば、
図1に示されるアレイ100などのNANDアーキテクチャを有するフラッシュアレイであり得る。しかしながら、本開示の実施形態は、特定の種類のメモリアレイまたはアレイアーキテクチャに限定されない。本開示の方法及び装置はまた、他のメモリセル、例えば、典型的にはDRAM、PCRAM、及び/またはRRAMメモリに使用されるメモリセルなどと共に使用または実装することもできる。
【0029】
コントローラ338は、メモリ339と通信して、動作する、例えば、メモリセルを読み取る、書き込む、動かす、プログラムする、感知する、消去することができる。したがって、コントローラ338は、メモリ339との通信、及びメモリ339内に記憶されたデータを管理することができる。コントローラ338は、多数の集積回路を利用する回路、及び他の別個の構成要素を有することができる。いくつかの実施形態では、コントローラ338は、ホストインターフェース108、及び/またはメモリデバイス339を含む、プリント基板に連結される特定用途向け集積回路(ASIC)であり得る。メモリ339及び/またはコントローラ338は、本開示の実施形態を曖昧にしないために例解されていない、追加の回路を含むことができる。本明細書において使用するとき、コントローラ338及び/またはメモリ339はまた、別々に実装される、及び/または「装置」と見なされてもよい。
【0030】
ECC符号化/復号構成要素344は、メモリ339に伝送されている、及び/またはメモリ339から受信されているデータを符号化及び復号するために構成される論理を含むことができる。データの符号化及び/または復号は、ハードウェア及び/またはソフトウェアにおいて達成することができる。例えば、ECC符号化/復号構成要素344は、入力時に符号化されていないデータを受信し、出力時に符号化されたデータを提供することができる。
【0031】
図3に例解されるように、ECC符号化/復号構成要素344は、多数の種々の種類のエラーコード/復号構成要素、例えば、特定のECCエンジンを実装する符号器/復号器を含むことができる。エラー符号化構成要素は、メモリ339に書き込む、例えば、記憶するための、例えば、ホスト、例えば、
図2に示される232から受信されたデータ、例えば、ユーザデータを、符号化するように構成することができる。代替的な実施形態(単数または複数)によると、種々の種類のエラーコード/復号構成要素は、ECC符号化/復号構成要素344の構成要素としてよりもむしろ、コントローラ338の構成要素として実装することができる。
【0032】
いくつかの実施形態によると、ECC符号化/復号構成要素344は、多数の符号化部分(単数または複数)及び/または復号部分(単数または複数)を含むことができる。例えば、ECC符号化/復号構成要素344は、1つ以上の外符号符号器(単数または複数)、例えば、LDPC符号器348、1つ以上の外符号復号器、例えば、LDPC復号器354などの反復復号器、CC符号器350、及びCC復号器352を含むことができる。ECC符号化/復号構成要素344はまた、例えば、任意追加的なボーズ・チョドーリ・オッケンジェム(BCH)符号器346及びBCH復号器356を含むこともできる。任意追加的なBCH符号器346及びBCH復号器356は、1つ以上の中間コード符号器、例えば、LDPC符号器348、及び1つ以上の中間コード復号器、例えば、LDPC復号器354などの反復復号器が存在するように、最外符号符号器及び復号器として実装することができる。任意追加的なBCH符号器346及びBCH復号器356は、別々の構成要素として実装することができ、またはBCH符号器/復号器347として実装することができる。LDPC符号器348及びLDPC復号器354は、別々の構成要素として実装することができ、または符号器/反復復号器349の構成要素として実装してもよい。CC符号器350及び/またはCC復号器352は、別々の構成要素として実装することができ、またはCC符号器/復号器351の構成要素として実装してもよい。本開示の実施形態は、上に記載した特定の量及び/または種類のコード符号器/復号器セットに限定されるものではなく、追加の符号器/復号器、及び/または上述のもの以外の異なる種類もしくは順序の符号化/復号を含むことができる。
【0033】
本開示の種々の実施形態によると、CC復号器352は、コントローラの構成要素として、またはプロセッサ、マイクロプロセッサ、システムオンチップ、特定用途向け集積回路,ハードウェア論理、もしくは開示される機能性の全部または一部を提供する1つ以上の集積回路上での包含に好適な他の回路を介して、ハードウェア内に実装することができる。種々の実施形態では、CC復号器352は、フィールドもしくはマスクプログラム可能ゲートアレイ集積回路などのプログラム可能技術、完全にもしくは部分的にセルベースの集積回路などのセミカスタム技術、特殊集積回路などの技術、それらの組合せ、または集積回路の設計及び/もしくは製造に適合する別の技術を含む種々の技術に従って、設計可能及び/もしくは製造可能であり得る。
【0034】
ユーザデータは、まず任意追加的なBCH符号器346を使用して符号化することができ、それは、LDPC符号器348を使用してさらに符号化することができ、それは、CC符号器350を使用してさらに符号化することができる。したがって、LDPCコードは、BCHコードに対する内符号であり、CCは、LDPCコードに対する内符号である。種々の実施形態によると、BCH符号器346及び/またはBCH復号器356は、点線によって
図3に示されるように、所望により省略することができる。
【0035】
本開示の種々の実施形態によると、ECC符号化/復号構成要素344は、全LDPC ECCスキーム、または内部LDPCコードと外部BCHコードとを有する連接されたECCスキームを選択的に実装することができる。連接されたECCスキームにおいては、LDPC復号器は、例えば、1または2反復、走ることができる。1または2反復後の残りのエラーは、例えば、外部BCHコードを実装する構成要素(単数または複数)によって訂正することができる。
【0036】
高精度LDPC復号器は、LDPC復号器が所望の量の反復に制御され得るように、使用することができる。全LDPC ECCスキームは、それが必要なだけ多くの反復を走ることができるならば、特定の用途に関するハード及びソフトモードの双方において、連接されたECCスキーム、例えば、外/内符号とのLDPCコードの連接と比較してより高いRBER性能を支持することができる。全LDPC ECCスキームは、LDPC復号器反復の数及び利用可能なハードウェアリソースに応じて、多様なスループット率を提供することができる。しかしながら、全LDPC ECCスキームは、連接されたECCスキームと比較して、同一のRBER性能に達するためにより多くの復号器反復を必要とする可能性があり、より複雑なECC復号構成要素、例えば、LDPC復号器354を利用する。より高い復号器の反復は、より高い復号器電力に変わる。
【0037】
例えば、1または2反復を実装するLDPC復号器を伴う連接されたECCスキームは、相対的により複雑でないECC符号化/復号構成要素344と共に実装することができ、より少ない反復を必要とすることができ、全LDPC ECCスキームより少ない電力を使用することができ、(いくつかの用途に関して)持続したスループットを提供することができる。しかしながら、連接されたECCスキームは、例えば、フラッシュメモリにおけるサイクリング及び保持効果の後、RBERの寿命の最後に対応するRBER領域において、全LDPC ECCスキームと比較して同程度に高いRBER性能を提供しない。
【0038】
いくつかの実施形態によると、1または2反復のLDPC復号器に限定される用途、例えば、電力及びハードウェアの制約に関しては、連接されたECCスキームは、全LDPC ECCスキームより良好に機能し、1または2反復のLDPC復号器に限定されない用途に関しては、全LDPC ECCスキームは、連接されたECCスキームより良好に機能する。
【0039】
本開示の種々の実施形態によると、メモリのハード読み取りに基づいて判定されるソフトデータが、LDPC復号器に提供される。ハード読み取りモードにおける全LDPC ECCスキーム及び連接されたECCスキームは、どちらもより遅い復号器収束を抱え、それは、より高い数の復号器反復へと変わる。所与のRBERに関して、LDPC復号器の平均反復数は、ソフトデータの存在下ではより少なくなるであろう。ソフトデータは、LDPC復号器が、高い信頼性を有すると判定された、例えば、ビットなどのデータ桁と、低い信頼性を有すると判定されたデータ桁とを区別することを可能にすることができ、これは、LDPC復号器の確率的性質のため、低い信頼性を有すると判定されたデータ桁のより速い訂正に転じることができる。信頼性のあるデータ桁と信頼性のないデータ桁とを区別するソフトデータを使用するLDPC復号器は、より良好なRBER性能、及びより速いLDPC復号器収束、例えば、より少ない平均数のLDPC復号器反復を提供することができる。
【0040】
本開示の種々の実施形態によると、ECCオーバーヘッドの一部分は、CCパリティ桁を含む「分類コード」(CC)のために使用される。CCパリティ桁は、メモリからのハード読み取りによって獲得されるデータに基づいてソフトデータを生成するために、使用することができる。生成されたソフトデータは、LDPC復号器性能を改善するために、LDPC復号器において使用することができる。いくつかの実施形態によると、ソフトデータの品質、例えば、粒度は、分類コードに割り当てられるECCオーバーヘッドバジェットの量に基づくことができる。粗いソフトデータでさえも、特定の反復数におけるLDPC復号器からの改善されたRBER結果につながることができる。したがって、本開示のCCは、LDPC復号器結果を達成するために、改善された相対的に小さいECCオーバーヘッドを使用して実装することができる。
【0041】
本開示の種々の実施形態によると(及び、
図3を参照すると)、書き込みパスにおいて、CC符号器350は、LDPC符号器348によって提供されるLDPCコードワード、例えば、LDPC符号化されたシーケンスを受信することができる。LDPCコードワードは、CCコードワードに関するユーザデータに対応する、特定の数のより小さい片に分割することができる。CC符号器350は、LDPC符号化シーケンスの各片にCCパリティ桁を追加することができる。付加されたCCパリティ桁を有するLDPCコードワードの一片は、CCコードワードである。単一のLDPCコードワード内には、複数のCCコードワードが存在し得る。LDPCコードワードに対応するCCコードワードは、CC符号化されたシーケンスである。換言すれば、CC符号化されたシーケンスは、多数のCCコードワードを含むことができ、各CCコードワードは、
図4に関してさらに説明されるように、LDPCコードワードの一片から形成される。
【0042】
CC符号器350出力、例えば、CCコードワード(単数または複数)は、メモリ339に書き込むことができる。換言すれば、CCコードは、LDPCコードに対する内符号である。下により詳細に述べるように、CC符号化は、CC符号器352が、LDPCコードワードの片に付加され得る多数のCCパリティ桁を含むCCコードワードを生成するように、系統的であり得る。本明細書において使用するとき、「コードワード」は、例えば、ユーザデータ、例えば、入力データとそれぞれのコードのパリティ桁とを含むことができる、データ桁のシーケンスを指す。
【0043】
復号パスにおいて、CC復号器352は、ハード読み取りによってメモリ339から獲得されるデータなどのデータを受信することができる。CC復号器352によって受信されるデータは、多数のCCコードワードを含むCC符号化されたシーケンスであり得る。CC復号器352によって受信されるCC符号化されたシーケンスは、桁エラーが生じているか否かに応じて、メモリ339に記憶されたCC符号化されたシーケンスと同一であってもよく、または同一でなくてもよい。すなわち、CC復号器352によって受信されるCCコードワードは、1つ以上の桁における起こり得るエラーのため、メモリ339に書き込まれた対応するCCコードワードと同一であってもよく、または同一でなくてもよい。
【0044】
CC復号器352は、CC制約に関連付けられる能力に基づいて、LDPCコードワードのそれぞれの片に関連付けられるソフトデータを生成することができる。LDPCコードワードの片及び関連付けられるソフトデータは、LDPC復号器354に提供され得る。種々の実施形態によると、CC復号器352は、例えば、(メモリから受信されるCCコードワードの)LDPCコードワード片に対して、いかなる訂正も行わない。すなわち、CC復号器352の出力におけるRBERは、メモリからのRBERと同じである。
【0045】
いくつかの実施形態によると、LDPC符号器348は、ユーザデータを入力として受信し、LDPCコードワードをCC符号器350に出力することができる。所望により、BCH符号器346は、ユーザデータを入力として受信し、BCHコードワードをLDPC符号器348に、例えば、LDPC符号器348に対する入力として、出力することができる。LDPC符号器348は、BCHコードワードを受信し、それからLDPCコードワードを生成することができる。したがって、LDPCコードは、BCHコードに対する内符号である。
【0046】
いくつかの実施形態によると、LDPC復号器354は、LDPCコードワードとLDPCコードワードの各片に関連付けられるソフトデータとを含む1つ以上の片をCC復号器352から受信し、LDPCコードワード及びソフトデータから判定されるユーザデータを出力することができる。LDPCコードワードに対応する複数のCCコードワードに関連付けられるソフトデータは、一緒にグループ化され、LDPC復号器354に渡されることができ、該LDPC復号器354は、集約されたソフトデータを使用してLDPCコードワードを復号する。
【0047】
所望により、LDPC復号器354は、LDPCコードワードとLDPCコードワードのそれぞれの片に関連付けられるソフトデータとを含む1つ以上の片をCC復号器352から受信し、BCHコードワードをBCH復号器356に出力することができる。BCH復号器356は、BCHコードワードを入力として受信し、ユーザデータを出力することができる。いくつかの実施形態によると、LDPC復号器354は、下にさらに述べられるように、フィードバックパス358を介して信頼性データをCC復号器352に提供することができる。
【0048】
種々の実施形態によると、CC復号器352は、それぞれの信頼性値を、LDPCコードワードの一片の種々の部分に、例えば、LDPCコードワードのそれぞれの片の桁(単数または複数)に関連付けるように構成することができる。信頼性値は、例えば、対数尤度比(LLR)であり得る。CC復号器352は、LDPCコードワードの一片の一部分に関する信頼性値を、(LDPCコードワードの一片と併せて)LDPC復号器に提供するように構成される。種々の実施形態によると、信頼性値は、3つの値:不確実な信頼性に対応する1つの値、強い信頼性に対応する別の値、及び弱い信頼性に対応する第3の値のうちの1つであり得る。いくつかの実施形態によると、信頼性値は、少なくとも部分的に、特定の桁に関連付けられる他のソフトデータに基づいて、上述の3つの値のうちの1つからさらに調整することができる。
【0049】
図4は、本開示のいくつかの実施形態に従う、CC符号化されたシーケンス例を例解する図である。CC符号化されたシーケンス460は、LDPCコードワードから、多数のCCパリティ桁469をその中に挿入することによって形成され、各CCコードワード468は、LDPCコードワード467の一片及び関連付けられるCCパリティ桁469から形成される。LDPCコードワードは、ユーザデータ462、LDPCパリティ桁466、及び/または任意追加的なBCHパリティ桁464を含むことができる。したがって、CC符号化されたシーケンス460は、ユーザデータ462、ユーザデータ桁462、LDPCパリティ桁466、任意追加的なBCHパリティ桁464、及びCCパリティ桁469を含むことができる。したがって、CC符号化されたシーケンス460は、連接されたコードワードである。いくつかの実施形態によると、CC符号化されたシーケンス460は、多数のCCコードワード468を含み、各CCコードワード468は、LDPCコードワード467の一片、及びLDPCコードワード467の一片に関連付けられるCCパリティ桁469から成る。
【0050】
例として、CC符号化されたシーケンス460は、多数のCCパリティ桁469と併せて、LDPCコードワードから成り得る。LDPCコードワードは、例えば、16,000の桁、例えば、ビットのサイズを有することができる。したがって、この例では、CC符号化されたシーケンス460は16,000桁のLDPCコードワードに加えて多数のCCパリティ桁469を含むため、CC符号化されたシーケンス460のサイズは、16,000桁より大きい。LDPCコードユーザデータは、任意追加的なBCHコードパリティビットに加えて、ホストからのユーザデータから成る。
【0051】
CC符号化されたシーケンス460は、多数のCCコードワード468から成り得る。
図4は、100個のCCコードワード468を含むCC符号化されたシーケンス460を示す。CCコードワード468のLDPCコードワード467の一片は、多数の部分470、例えば、「チャンク」を含むことができる。CCパリティ桁469は、多数の部分470に付加され得る。
図4は、8個の部分470を有するCCコードワード468を示す。すなわち、CCコードワードが構成されるLDPCコードワード467の一片は、複数の部分を含むことができる。
【0052】
LDPCコードワード例のサイズが16,000桁であると仮定すると、各部分470はしたがって、20桁から成り、各CCコードワード468は、8×20=160桁を有するLDPCコードワード467の一片と、それに付加されるCCパリティ桁469(量は、CCコード比率に依存する)とを含む。しかしながら、LDPCコードワード467の一片、CCコードワード468、CCパリティ桁469、及び/または部分470は、この例に説明される桁の量に限定されず、各々、この例に説明されるものより多いまたは少ない桁から成ってもよい。各部分470、例えば、この例では20ビットは、LDPCコードワード460の一片の一部分であり、各部分470はまた、C1コードワードである(下にさらに述べられる)。
【0053】
本開示の種々の実施形態によると、CCは、代数コード(「C1」)及びバイナリ代数コード(「C2」)のテンソル積である。C1は、任意の検出コードであり得る。種々の実施形態によると、C1は、各C1コードワードに対応するパリティチェックコード、例えば、各C1コードワードに対応する一桁パリティチェックコードから成る。例えば、C1桁は、「1」に設定して、C1コードワードの桁に関する偶数または奇数パリティのうちの1つを示すことができる。いくつかの実施形態によると、C1は、部分470の全ての桁の加算のうちの最下位桁として計算することができる。CCコードワード468のLDPCコードワード467の一片が8個の部分を含むと仮定すると、各チャンクに関して計算されるC1と併せて、8桁のベクトルが得られる。したがって、C1は、LDPCコードワード467の一片の一部分、例えば、部分470内の奇数の桁エラーを検出するために使用することができる。逆に、C1は、LDPCコードワード460の一片の一部分内、例えば、部分470内の偶数の桁エラーを検出するためには使用することができない。
【0054】
C2は、任意の訂正コードであり得る。例えば、C2は、ハミングコードなどのバイナリ代数コードであり得る。しかしながら、C2は、ハミングコード実装に限定されない。C2は、「t」エラーを識別する、及び「t+1」エラーを検出するために使用することができる。すなわち、C2は、エラーであるCCコードワード468の「t」部分470を直接識別するために使用することができ、CCコードワード468の「t+1」部分470がエラーであるかを検出するために使用することができる(しかし、どの部分470がエラーであるかを識別することができない)。「t+1」を超えるエラーが存在する場合、CCコードは、エラーである部分470を正確に検出することができない。この場合、部分470は、エラーである、及び/またはエラーでないとして誤認される可能性がある。その結果、一部のビットは、(下にさらに述べるように)不適切な信頼性値に割り当てられる場合がある。
【0055】
C1及びC2のテンソル積は、例によってさらに例解することができる。C1が比率4/5の単一パリティコードであると仮定すると、C2は、比率4/7のハミングコードである。C1、C2、及びH(C1)とH(C2)とのテンソル積のパリティチェックマトリックスは、以下に与えられる:
【数1】
H(C1)は、1×5マトリックスであり、H(C2)は、3×7マトリックスであり、結果として得られるH(TPC)は、3×35マトリックスである。したがって、結果として得られるコード比率は、32/35である。
【0056】
テンソル積を決定するために、H(C1)を、例えば、マトリックス乗算によって、H(C2)の各入力によって乗じる。例えば、H(TPC)の第1の行の初めの5入力は、H(C1)をH(C2)で乗じることによって計算され、例えば、(1,1)は1である。同様に、H(TPC)の第2の行の最後の5ビットは、例えば、H(C1)をH(C2)で乗じることによって計算され、(2,7)=0である。C1(検出コード)及びC2(訂正コード)のテンソル積に基づく結果として得られるコードは、「検出コード」である。
【0057】
CC符号器、例えば、
図3の350は、CCコードワード468を生成し、これは、メモリ、例えば、
図3の339に書き込まれる。CCは、系統的なコードである。したがって、符号化は、CC469のパリティ桁の生成に関与する。これは、バイナリ加算に関与する線形の動作である。CCが最内符号であるとすると、CC符号器、例えば、
図3の350への入力は、LDPCコードワード、例えば、LDPC符号化されたビットシーケンスである。CC符号器は、この入力シーケンスを取得し、CCパリティ桁をそこへ付加する。結果として得られるCCコードワードはその後、例えば、
図2に示される238などのコントローラによって、メモリに書き込まれる。
【0058】
以下の考察は、CCコードワードの生成を例解する例である。この例に関するコード比率は32/35であり、したがって各々32ビットのCC符号器へのデータ入力が、35ビットのCCコードワードにマッピングされ、これは、3個のパリティ桁を含む。以下の例において、32ビットのCC符号器への入力は、以下のように仮定される:
U=[U1 U2…U32]。次に、CCコードワード(付加されたCCの3個のパリティ桁を伴う)は以下の形態である:
【表1】
P1、P2、及びP3は、パリティ桁である。i番目の「ファントムシンドローム」は、例えば、バイナリ加算を使用して、例えば、i番目の列中の5ビットを加算することによって、計算することができる。用語S1、S2、S3、及びS4は、数として計算することができる。用語S5、S6、及びS7は、P1、P2、及びP3を含む。結果として得られるシンドローム(ベクトル)[S1 S2…S7]は、使用した4/7ハミングコードに関する有効なコードワードである。ファントムシンドロームをハミングコードのパリティチェックマトリックスで乗じることによって、S5、S6、及びS7は、S1、S2、S3、及び S4から以下のように決定することができる(全ての加算はバイナリである):
S5=S1+S2+S3、
S6=S1+S2+S4、
S7=S1+S3+S4、また
次に、S5、S6、及びS7を使用して、P1、P2、及びP3を以下のように得ることができる:
P1=S5+U21+U22+U23+U24、
P2=S6+U25+U26+U27+U28、
P3=S7+U29+U30+U31+U32。
シンドローム(ベクトル)[S1 S2…S7]は、C2のパリティチェックマトリックス、例えば、ハミングコードパリティチェックマトリックスによって乗じることができ、これは、先に述べたようにエラーである部分470を検出または識別するために使用することができる別のシンドロームをもたらす。
【0059】
図5は、本開示のいくつかの実施形態に従う、分類コードを復号するための方法のフローチャートである。CC復号器への入力は、例えば、ハード読み取り571などによる、例えば、メモリから読み取られたデータであり得る。一度に読み取られるデータの量は、例えば、データのページに対応することができる。CC復号器、例えば、
図3の352は、多数のCCコードワードを含むように、受信されたCC符号化されたシーケンスのCCコードワード、例えば、LDPCコードワード上で動作することができる。CC符号化されたシーケンスを含むデータは、複数のCCコードワードを含むことができる。所与のLDPCコードワード中のCCコードワードの正確な数は、CC及びLDPCコードコードワードサイズに依存する。
【0060】
この例では、各CCコードワードに関して、復号するステップは、以下の通りである。CCシンドロームは、572に示されるように、受信されたCCコードワードを、分類コードのパリティチェックマトリックスによって乗じることによって計算される。多数の部分が、573に示されるように、エラーであってもよい。エラーである部分の量に応じて、異なる結果が生じることになる。すなわち、結果は、エラーであるt以下の部分が存在するか、エラーであるt+1の部分が存在するか、またはエラーであるt+1超、例えば、t+2以上の部分が存在するかに応じて異なる。
【0061】
受信されたCCコードワード内で「t」以下の部分がエラーである場合、シンドロームは、574に示されるように、エラーである部分を正確に識別する。エラーであると識別された部分は、C1が単一のパリティコードであるとき、エラー内に奇数のビットを有することになる。575に示されるように、弱い信頼性(適切なサインを伴う)に対応する信頼性値は、エラーであると識別された部分内の全てのビットに関連付けられ、強い信頼性(適切なサインを伴う)に対応する信頼性値は、例えば、エラーであるとは識別されない、他の部分内の全てのビットに関連付けられる。本開示の種々の実施形態によると、特定のセルの桁に関する弱い及び/または強い信頼性に対応する信頼性値は、特定のメモリセルの条件、例えば、プログラム/消去サイクル、保持、データが保持されていた時間量、読み取り阻害の数などに少なくとも部分的に基づいて、調整する、例えば、精緻化する、整調するなどすることができる。
【0062】
「t+1」の部分がエラーである場合、シンドロームは、576に示されるように、エラーである部分を識別することなく、「t+1」の部分がエラーであることを検出する。この場合、CCコードワード内の全てのビットは、577に示されるように、不確実な信頼性に対応する信頼性値を割り当てられる。本開示の種々の実施形態によると、特定のセルの桁に関する不確実な信頼性に対応する信頼性値は、特定のメモリセルの条件、例えば、プログラム/消去サイクル、保持、データが保持されていた時間量、読み取り阻害の数などに少なくとも部分的に基づいて、調整する、例えば、精緻化する、整調するなどすることができる。
【0063】
「t+1」を超える部分がエラーである場合、シンドロームは、578に示されるように、エラーである部分を誤認する。エラーであると誤認された部分に関して、弱い信頼性に対応する信頼性値(適切なサインを伴う)は、579に示されるようにエラーであると誤認された部分内の全てのビットに関連付けられ、また、強い信頼性に対応する信頼性値(適切なサインを伴う)は、579に示されるように、例えば、エラーであるとは識別されない、他の部分内の全てのビットに関連付けられる。これは、エラーである「t」以下の部分が存在する場合と同様に処理される。
【0064】
誤認の結果として、一部のビットは、不適切な信頼性を割り当てられることがある。弱い信頼性に対応する信頼性値は、エラーであると誤認された部分内のビットに関連付けられる。C1内の検出不可能なエラー事象(エラーである偶数のビット)を無視すると、弱い信頼性に対応する信頼性値は、実際には正しいビット、例えば、CCコードワードのビットに関連付けられ得る。残りの部分、例えば、エラーであると誤認されていない部分に関して、これらの部分の一部には、エラーである奇数のビットが存在することになり、強い信頼性に対応する信頼性値は、これらの誤りのあるビット、及び残りの正しいビットに関連付けられる。
【0065】
一部のビットとの不正確及び/または不適切な信頼性値の関連付けは、例えば、LDPC復号器において、いくらかの性能の劣化を引き起こす可能性がある。しかしながら、信頼性値の関連付けはRBERを変化させないとすると、性能の劣化は小規模であり得、したがってLDPC復号器におけるソフトデータの使用に関連付けられる利益の観点から、許容され得る。
【0066】
CC復号器動作の詳細な例を、下に説明する。メモリ内の記憶されたCCコードワードを、例えば、ハード読み取りを介して受信した後、1×7のファントムシンドロームが計算される。1×7のファントムシンドロームを、3×7H(C2)によって乗じて、1×3のエラー場所マトリックスを獲得し、これは、奇数のビットエラーを有する部分を位置付けるために10進数に変換することができる。例として:
【数2】
を考察する(ビットエラーは、単一下線によって示され、パリティ桁は、二重下線によって示される)。
C(25)にビットエラーが存在すると仮定すると、C’は:
【数3】
である。この場合、シンドロームは、[1100011]であり、エラーロケータは、[010]=2であり、これは右から2番目の5ビット部分を指す。C2がエラーであるt=1の部分を識別することができ、C’がエラーである単一の部分を有したとすると、CC復号器は、エラーである部分を正確に識別することができる。
【0067】
別の例として、同じU及びCに関して、エラーがU(7)、U(8)、及びU(10)において作成された(単一の部分内の3ビットエラーは、エラーである単一の部分を引き起こす)と仮定すると:
【数4】
シンドロームは、[1100001]であり、エラーロケータは、[110]=6であり、これは、右から6番目の部分を指す。
【0068】
最後の例に関して、部分6内の3ビットエラー及び部分2内の1ビットエラーは:
【数5】
であり、
シンドロームは、[1100011]であり、エラーロケータは、[010]=2である。したがって、エラーロケータは、奇数のビットエラーを有する第2の部分を示す。この特定のCCコードは、奇数のビットエラーを有するただ1つの部分のみを位置付けることが可能である。この例は、エラーである2つの部分を有するため、これは、
図5の578及び579に対応する。この場合、CC復号器は、正しい(エラーではない)部分6を誤認し、これは、部分6の誤りのあるビットにおける高い信頼性の関連付けをもたらすことになる。
【0069】
分類コードの選択及び/または設計は、本装置または方法が実装されている計算システム及び/またはメモリデバイスの必要に基づいて行うことができる。CCは、RBERを変化させない。CC復号器は、ソフトデータ、例えば、信頼性値を、メモリから読み取られたものと同じサインを有するビットに関連付ける。部分内の全てのビットは、同様に処理することができる。例えば、部分がエラーであると識別される場合、一部の、例えば、奇数のビットがエラーであり得る場合であっても、弱い信頼性に対応する信頼性値は、その部分内の全てのビットに関連付けることができる。このことを考慮すると、より短い部分を有することがより良い。しかしながら、より短い部分は、より多くのECCオーバーヘッドを使用する。例えば、以下の2つのコード例を考察する。
【0070】
コード1は、25ビットの単一パリティコード(K,N)=(24,25)であるC1、及びハミングコード(K,N)=(4,8)を検出する2ビットを訂正する1ビットであるC2を有する。CCは、(K,N)=(196,200)_比率=0.98(2%オーバーヘッド)である。コード2は、10ビットの単一パリティコード(K,N)=(9,10)であるC1、及びハミングコード(K,N)=(4,8)を検出する2ビットを訂正する1ビットであるC2を有する。CCは、(K,N)=(76,80)_比率=0.95(5% オーバーヘッド)である。これらの例は、より小さい部分サイズと比率とのトレードオフを示す(より細かいソフト信頼性割当てを示唆する)。固定されたECCバジェットを仮定すると、ECCバジェットから取得された任意の過剰の比率は、より高い比率のLDPCコードの使用につながり得る。したがって、結果として得られるRBER性能は、より不良となり得る。
【0071】
C2に関してより大きい「t」を有することは、有益であり得る。しかしながら、この効果は、結果として得られるコードに関する増加されたコードワードサイズであろう。以下の2つの事例を考察する。コード1は、25ビットの単一パリティコード(K,N)=(24,25)であるC1、及びハミングコード(K,N)=(4,8)を検出する2ビットを訂正する1ビットであるC2を有する。CCは、(K,N)=(196,200)比率=0.98(2%オーバーヘッド)である。コード2は、25ビットの単一パリティコード(K,N)=(24,25)であるC1、及びゴーレイコード(K,N)=(12,24)を検出する4ビットを訂正する3ビットであるC2を有する。CCは、(K,N)=(588,600)比率=0.98(2%オーバーヘッド)である。どちらのコード例も、同一のオーバーヘッド(2%)を有する。コード1は、200ビット(8つの25ビットの部分)当たり、エラーである1つの部分を識別し、エラーである2つの部分を検出することができる。コード2は、600ビット(24個の25ビットの部分)当たり、エラーである3つの部分を識別し、エラーである4つの部分を検出することができる。これらの2つのコードを比較すると、コード2は、ECCリソースをプールしており、より大きいコードワードをそれらに提供している。200ビットの3つの区分としてのコード2の600ビットのコードワードを考察すると、コード2は、該区分のうちの1つが、エラーである2、3、または4つの部分を有し、またエラーである部分の総数が、24個の部分のうち4以下であるときにのみ、より良好に機能するであろう。シミュレーションは、RBER領域が約5E−3の例では、両コードは同様に機能することを示しており、これは、関心のRBER領域では、8つの部分のうちエラーである2つ超の部分を有する確率は、極めて低いことを表している。しかしながら、種々の製品及び技術に関する関心のRBER領域に応じて、CCコードワードのECCリソースのプーリングは、有益であり得る。
【0072】
エラーであると誤認された部分のビットに対する不正確な信頼性値の関連付けの可能性を考慮すると、弱い信頼性、不確実な信頼性、及び/または強い信頼性に対応する信頼性値の選択は、良好な性能を達成するために使用することができる。同一の構成に関しては、より不良な選択は、遥かにより不良な結果につながり得る。
【0073】
再び
図3を参照すると、LDPC復号器354からCC復号器352へのフィードバックパス358は、それらの間にターボ等化を提供するために使用することができる。ターボ等化は、CC復号器352の動作を潜在的に助けることができる。CC復号器352が、まず、メモリからのハード読み取りを介してデータを受信することができ、LDPC復号器354における使用のためにソフトデータを生成することができる。LDPC復号器354は、例えば、数回の反復を走らせた後に、この生成されたソフトデータをエラー訂正のために使用することができる。LDPC復号器354からのハード決定は、フィードバックパス358を介してCC復号器352にフィードバックされ得る。LDPC復号器354からのハード決定を用いて、CC復号器352は、メモリ339から読み取られたデータと比較して、潜在的により少ないエラーをその中に有するハード読み取りからのデータと共に稼働することができる。
【0074】
LDPC復号器354からのこの新しいデータを使用して、CC復号器352は、ソフトデータを再生成し、それをLDPC復号器354に送り返すことができる。LDPC復号器354からのフィードバックは、無視することができ、CC復号器は、ソフトデータが全く存在しないかのように(CC復号器352が、ハード読み取りを介してメモリ339から獲得したデータに基づいてソフトデータを生成する状況と同様に)ソフトデータを生成することができる。または、CC復号器352は、潜在的にエラーである部分を識別することができる。信頼性値を同じ弱い信頼性に対応する全てのビットに関連付ける代わりに、エラーである部分を識別するCC復号器352によって、CC復号器352は、(LDPC復号器354からフィードバックされるソフトデータを使用して)エラーであるビット(単数または複数)を識別するよう試みることができる。例えば、最も低い信頼性ビットは、エラーである可能性がより高いものとして識別することができ、弱い信頼性に対応する信頼性値は、部分のいくつかのビットに関連付けることができ、一方、強い信頼性に対応する信頼性値は、チャンク内の他のビットに関連付けることができる。
【0075】
低密度パリティチェック(LDPC)コードなどの高度なエラー訂正コード(ECC)の復号は、対数尤度比(LLR)情報などのソフトデータを使用して達成することができる。バイナリデータ値決定に関する確信度は、LLRとして表すことができ、これは、
【数6】
として算出され、式中、P(0)は、データ値の桁、例えば、ビットが、第1の値、例えば、ゼロを有する条件付き確率であり、P(1)は、データ値の桁が第2の値、例えば、1を有する条件付き確率である。(コードワードがメモリに記憶される場合、メモリに実際に記憶されるデータ値は、コードワードのデータ値であることに留意されたい。)確信度全体が感知された状態に起因するとき、上述の式は、
【数7】
であるため、「0」を表す状態が感知されるときである正の無限大と、また
【数8】
であるため、「1」を表す状態が感知されるときである負の無限大とをもたらす。確信度の測定は、1ビットに切り捨てて、例えば、読み取り要求に応答して、正の無限大の代わりに+1を返し、また負の無限大の代わりに−1を返すことができる。
【0076】
1つの方法例は、ハード読み取りを使用して、メモリセルの状態を判定することを含むことができる。ソフトデータは、少なくとも部分的に、判定された状態に基づいて判定される。本開示のいくつかの実施形態によると、確率は、特定のデータ値配置内の近隣の状態に対応するデータ値に基づいて、特定のデータ値配置内の各状態に対応するデータ値の各桁、例えば、ビットに関して予め判定することができる。これらの予め判定された確率から、LLRも、特定のデータ値配置内の近隣の状態に対応するデータ値に基づいて、特定のデータ値配置内の各状態に対応するデータ値の各桁、例えば、ビットに関して計算することができる。データ値確率及び/またはLLRは、参照テーブル(LUT)などのデータ構造内に記憶することができる。したがって、適当なデータ値確率及び/またはLLRは、例えば、ハード読み取りによるインデックスに基づいて、LUTから読み出すことができる。
【0077】
図5に関して先に述べたように、「t+1」の部分がエラーである場合、例えば、
図3に示されるCC復号器352によって、シンドロームは、576に示されるように、エラーである部分を識別することなく、「t+1」の部分がエラーであることを検出する。本開示のいくつかの実施形態によると、CCコードワード内の全ての桁、例えば、ビットは、577に示されるように、不確実な信頼性に対応する同一の信頼性値を割り当てられる。本開示の種々の実施形態によると、エラーであると識別された「t+1」の部分を有するCCコードワード内の特定のビットに関して、不確実な信頼性に対応する同一の信頼性値は、少なくとも部分的に、エラーであると識別された「t+1」の部分を有するCCコードワード内の特定の桁に関して判定されたソフトデータに基づいて、それぞれ調整する、例えば、精緻化することができる。エラーであると識別された「t+1」の部分を有するCCコードワード内の特定の桁に関して判定されたソフトデータは、例えば、特定の桁のハード読み取りを使用して判定されたLLR、または特定の桁の複数の読み取りから判定されたLLRであり得る。
【0078】
図5に関して先に述べたように、受信されたCCコードワード内で「t」以下の部分がエラーである場合、シンドロームは、574に示されるように、エラーである部分を正確に識別する。575に示されるように、弱い信頼性(適切なサインを伴う)に対応する信頼性値は、エラーであると識別された部分内の全てのビットに関連付けられ、強い信頼性(適切なサインを伴う)に対応する信頼性値は、例えば、エラーであるとは識別されない、他の部分内の全てのビットに関連付けられる。本開示の種々の実施形態によると、エラーであると識別された「t」以下の部分を有するCCコードワード内の特定のビットに関して、関連付けられた特定の桁の信頼性値は、少なくとも部分的にCCコードワード内の特定の桁に関して判定されたソフトデータに基づいて、調整する、例えば、精緻化することができる。CCコードワード内の特定の桁に関して判定されたソフトデータは、例えば、特定の桁のハード読み取りを使用して判定されたLLR、または特定の桁の複数の読み取りから判定されたLLRであり得る。
【0079】
具体的な実施形態を本明細書において例解及び説明してきたが、当業者は、同じ結果を達成すると算出される配設を、示される具体的な実施形態に代用することができることを理解するであろう。本開示は、本開示の種々の実施形態の適応または改変を網羅することが意図される。上の説明は、制限的ではなく、例解的に行われていることが理解されるものとする。上の実施形態の組合せ、及び本明細書において具体的に説明されていない他の実施形態は、上の説明を再考察すれば、当業者には明らかであろう。本開示の種々の実施形態の範囲は、上の構造及び方法が使用される、他の用途を含む。したがって、本開示の種々の実施形態の範囲は、添付の特許請求の範囲を、かかる特許請求の範囲が権利付与される均等物の全範囲と共に、参照して決定されるべきである。
【0080】
前述の発明を実施するための形態において、種々の特性は、本開示を合理化する目的で、単一の実施形態に一緒にグループ化される。本開示の方法は、本開示の開示される実施形態が、各請求項で明示的に列挙されるものよりも多い特性を使用しなければならないという意図を反映するものとして解釈されないものとする。むしろ、以下の請求項が反映するように、発明の主題は、単一の開示される実施形態の全ての特性よりも少ない特性にある。このため、以下の特許請求の範囲は、本明細書において、各請求項は、別個の実施形態として自立する状態で、発明を実施するための形態に組み込まれる。