JP5723967B2 - ソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに入力データを記録するための方法、エンコーダ装置、およびソリッド・ステート・ストレージ・デバイス - Google Patents

ソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに入力データを記録するための方法、エンコーダ装置、およびソリッド・ステート・ストレージ・デバイス Download PDF

Info

Publication number
JP5723967B2
JP5723967B2 JP2013501998A JP2013501998A JP5723967B2 JP 5723967 B2 JP5723967 B2 JP 5723967B2 JP 2013501998 A JP2013501998 A JP 2013501998A JP 2013501998 A JP2013501998 A JP 2013501998A JP 5723967 B2 JP5723967 B2 JP 5723967B2
Authority
JP
Japan
Prior art keywords
code
level
bch
codewords
input data
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.)
Active
Application number
JP2013501998A
Other languages
English (en)
Other versions
JP2013524609A5 (ja
JP2013524609A (ja
Inventor
シデシヤン、ロイ、ディー
エレフテリオス、エバンゲロス、エス
ミッテルホルツァー、トーマス
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2013524609A publication Critical patent/JP2013524609A/ja
Publication of JP2013524609A5 publication Critical patent/JP2013524609A5/ja
Application granted granted Critical
Publication of JP5723967B2 publication Critical patent/JP5723967B2/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/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
    • 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • 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/2906Coding, 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 using block codes
    • 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/2942Coding, 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 wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks of information bits

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

本発明は、一般に、ソリッド・ステート・ストレージ・デバイス(SSD)におけるデータ・エンコードに関する。データをエンコードし、エンコードされたデータをsレベル・ソリッド・ステート・ストレージに記録するための方法および装置が提供され、ここでs≧2はソリッド・ステート・メモリの基本記憶単位または「セル」によって想定可能な異なる値またはレベルの数を表す。
ソリッド・ステート・ストレージは、ディスクおよびテープのような従来の磁気または光メディアではなく、データを保管するために電子回路、典型的には集積回路を使用するメモリである。フラッシュ・メモリ・デバイスなどのソリッド・ステート・ストレージ・デバイスは、現在、データ記憶の分野に革命を起こしている。このようなデバイスは、可動部がないために従来のストレージ・デバイスより堅牢であり、並外れた帯域幅、消費電力の大幅な節約、およびハード・ディスク・ドライブ(HDD)より数桁分優れたランダムI/O(入出力)性能を提供する。
HDDなどの従来のストレージ・デバイスは2進データを記録する。すなわち、このようなデバイス内の基本記憶単位は1ビットの情報のみを保持する。DRAM(ダイナミック・ランダム・アクセス・メモリ)などの揮発性ソリッド・ステート・メモリ技術も2進データを記録し、このようなメモリ内の基本記憶セルは2つのレベルしか想定できず(s=2)、このため、2進値しか記録できない。しかし、その他のタイプのSSDでは、記憶セルは3つ以上のレベルを想定することができる(s>2)。たとえば、フラッシュ・メモリおよび相変化メモリ(PCM)という2つの重要な不揮発性メモリ技術はマルチレベル記録を可能にする。たとえば、NORフラッシュ・メモリはセルあたり4つのレベル、すなわち、2ビットを保管することができる。43nmプロセス技術を使用して単一フラッシュ・セルあたり4ビットのデータを保管できるマルチレベル・セル(MLC)NANDフラッシュ・メモリ・チップが現在入手可能である。PCM技術は、10nm以下のプロセス技術が必要であるときにフラッシュ・メモリ技術に取って代わることが期待されている。市販のPCMチップは現在、セルあたり1ビットしか保管できないが、PCMチップ内でセルあたり4ビットを保管することはすでに実験的に実証されている。
デジタル・カメラおよびミュージック・プレーヤのような消費者製品においてフラッシュおよびPCMなどのソリッド・ステート・メモリが成功したことにより、これらのメモリ技術は、現在、エンタープライズ・ストレージ用に考慮されている。エラー性能は、常にデータ・ストレージ・デバイスに関する重要な問題であり、これらの技術がエンタープライズ空間に移行するにつれてますます重要になっている。HDDのような従来のストレージ・デバイスは約10%〜15%のECC(エラー訂正コード)オーバヘッドを有するが、市販のフラッシュ・メモリにおけるECCオーバヘッドは約2.5%〜5%に過ぎない。したがって、これらのデバイスにおけるECコード体系(coding scheme)には、効率が重要である。
SSDでは、ストレージは記憶領域またはブロック単位で編成され、そのそれぞれが1組の記憶位置を含み、そこにデータを書き込むことができる。ECコーディングは、書き込み単位レベルで、すなわち、それぞれのデータ書き込み位置内で冗長性を追加することによりSSDで実行される。たとえば、フラッシュ・メモリは、「ページ」として知られるデータ書き込み位置を含む。それぞれのページは複数のセクタを含むが、書き込み動作は通常、ページごとに実行される。各フラッシュ・ページまたはあるページ内の各セクタに書き込まれた入力データについて1つのECコードが計算され、そのECコードは入力データとともにそのページまたはセクタに記録される。このコーディングにより、個々のデータ・ページ内でエラーからの回復が可能になる。このいわゆる「1レベル」ECコーディングにはRS(リード・ソロモン)コードおよびBCH(ボース・チャウドゥーリー・オッカンガム)コードなどの線形コードが使用されてきた。「長い」1レベル・コードは、そのエンコードがページごとに(すなわち、ページあたり1つのコードワードで)実行される場合、使用可能なページ冗長性を最も十分に利用し、したがって、最良のエラー性能をもたらすが、このような方式は実現するには極めて複雑であり、ページ・サイズおよび所望のエラー訂正能力が大きい場合に大量の消費電力を必要とする。このようなコードに関連する複雑さは、エンコードおよびデコード演算が実行される有限体(ガロア体(GF))のサイズに依存する。(以下では、GF(q)によって示されるq個の要素を有するガロア体からの要素を有するすべてのNタプルからなる集合は、GF(q)によって示されるベクトル空間である。)たとえば、2KiBおよび4KiBというペイロードを有する2つの異なるページ・サイズ用の長い1レベル・コードが設計されている。2KiBおよび4KiBというペイロードを有する長い1レベル・コードの使用可能なECCオーバヘッド(冗長性)はそれぞれ56バイトと120バイトであると想定されていた。最良の2KiBの1レベルRSコード(ここで2KiBはページ・サイズである)は、ページあたり20個までのランダムに選択された11ビット・シンボルを訂正することができるが、エンコードとデコードの両方にGF(211)の演算が必要である。最良の4KiBの1レベルRSコードは、1ページ内で40個までのランダムに選択された12ビット・シンボルを訂正することができるが、エンコードとデコードにGF(212)の演算が必要である。その上、最良の2KiBの1レベルBCHコードは、ページあたり29個までのランダムに選択されたビットを訂正することができ、エンコードにはGF(2)の演算が必要であるが、デコードにはGF(215)の演算が必要である。最良の4KiBの1レベルBCHコードは、ページあたり60個までのランダムに選択されたビットを訂正することができ、エンコードにはGF(2)の演算が必要であるが、デコードにはGF(216)の演算が必要である。これらの長いコードは過度に複雑であるので、実際には単一ページに複数のより短いコードワードが含まれる「短い」1レベル・コードが使用され、実現の実用性のためにエラー性能が犠牲になる。
米国特許第7047478B2号では、すべての使用可能なストレージ・レベルが使用されるモードから、すべてのレベルが使用されるわけではないモードに、オペレーティング・モードが切り替え可能であるマルチレベル・セル・メモリ用の1レベル・コーディング・システムを開示している。これに対応するために、コード体系はq進アルファベット(すなわち、q通りの値を取ることができるシンボルでコードワードが形成される)を使用し、ここでqはマルチレベル・セルの使用可能なレベルの数に等しい。
M.Hassner他による「Integrated Interleaving − A Novel ECC Architecture」(IEEE Trans.on Magn.、第37巻、第2号、773〜775ページ、2001年3月)ならびに米国特許第5946328号、第5942005号、および第7231578B2号に記載されているように、HDDではインターリーブドRSコード(interleaved RS code)を使用する2レベル・コード体系が使用されてきた。これらのシステムは、たとえば、E.L.BlokhおよびV.V.Zyablovによる「Generalized concatenated codes」(Plenum Publishing Corporation、218〜222ページ、1976年(Problemy Peredachi Informatsii、第10巻、第3号、45〜50ページから翻訳、1974年7〜9月)ならびにJ.Maucher他による「On the Equivalence of Generalized Concatenated Codes and Generalized Error Location Codes」(IEEE Trans.on Information Theory、第46巻、第2号、2000年3月)に記載されている汎用型連結コードに基づくものである。上記で参照したHassner他による2レベルRSコード体系は、それぞれC1およびC2によって示される第1および第2のRSコードを使用し、ここで第2のRSコードは第1のRSコードのサブコードである。M個の第1の(C1)コードワードからなる集合は、これらのM個のコードワードからなる一次結合が第2の(C2)コードワードになるように生成される。特に、前述の集合内のM個のC1コードワードのBf1個の加重和(weighted sum)は第2のRSコードのそれぞれのC2コードワードである。これらの加重和のための重み係数(weighting coefficient)はヴァンデルモンド行列(Vandermonde matrix)によって定義される。加えて、このコード体系はM<qという制限の対象になり、すなわち、前述の集合内のC1コードワードの数Mはガロア体要素の総数qより小さい。たとえば、GF(q=2)における2進線形コードの場合、統合インターリービング・コードについてM<2という条件が適用され、、すなわち、M=1であり、Hassner他によって定義された統合インターリービング・コードの系列は2進の2レベル・コードを含まない。この体系において、1つのセクタについてインターリーブされた複数のRSコードワードを使用すると、HDDチャネルにおけるバースト・エラーに対するロバストネスが増加する。RSコードはこれに十分適しており、一般に広く支持されている。RSコードの重み分布が分かっているので、これは、ある程度、性能評価が容易であるためである可能性がある。また、上記で例示したように、実現の複雑さはBCHコードに比べて勝るとも劣らず、特にデコードはRSコードの場合より著しく簡単である。
Junsheng Han他による「Reliable Memories with Subline Accesses」(ISIT2007、フランス・ニース、6月24日〜6月29日、2531〜2535ページ)および米国特許出願第2008/0168329A1号に述べられているように、2レベルRSコーディングはDRAMにも採用されてきた。この2レベルRSコーディングは、上記で参照したHassner他による統合インターリービング方式に基づくものであるが、コード設計の詳細およびデコード・アルゴリズムは指定されていない。
米国特許第7047478B2号 米国特許第5946328号 米国特許第5942005号 米国特許第7231578B2号 米国特許出願第2008/0168329A1号
M.Hassner他による「Integrated Inter leaving − A Novel ECC Architecture」(IEEE Trans. on Magn.、第37巻、第2号、773〜775ページ、2001年3月) E.L.BlokhおよびV.V.Zyablovによる「Generalized concatenated codes」(Plenum Publishing Corporation、218〜222ページ、1976年(Problemy Peredachi Informatsii、第10巻、第3号、45〜50ページから翻訳、1974年7〜9月) J.Maucher他による「On the Equivalence of Generalized Concatenated Codes and Generalized Error Location Codes」(IEEE Trans.on Information Theory、第46巻、第2号、2000年3月) Junsheng Han他による「Reliable Memories with Subline Accesses」(ISIT2007、フランス・ニース、6月24日〜6月29日、2531〜2535ページ)
本発明の一態様の一実施形態は、s≧2であるソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに入力データを記録するための方法を提供する。この方法は、
第1および第2のBCHコードによりM個の入力データ・ワードからなるグループに入力データ・ワードをエンコードし、M個の第1のコードワードの所定の一次結合が第2のBCHコードの第2のコードワードを生成するように、各グループごとに、第1のBCHコードのM個の第1のコードワードからなる集合を生成し、第2のBCHコードが第1のBCHコードのサブコードであることと、
M個の第1のコードワードからなる集合をsレベル・ストレージに記録すること
を含む。
上述のRSコードの確立された使用法とは対照的に、本発明を実施する方法は、sレベル・ソリッド・ステート・ストレージ・デバイスにおける2レベル・エンコードにBCHコードを使用する。本発明の諸実施形態は、ある程度、BCHコードが特にSSDストレージ・チャネル内のエラー・パターンの訂正に十分適しているという認識に基づいている。加えて、2レベルBCHコード体系を使用することにより、デコーダの複雑さの影響を最小限にしながら、エラー性能の利点を活用することができる。実際に、実現の複雑さという点で最小限の不利を伴うが、良好なエラー率性能を達成することができる。認識された欠点にもかかわらず、SSDにおける2レベル・コーディングにBCHコードを使用することにより、実現の複雑さが低く、消費電力も少ない、非常に効率的なエラー訂正方式を達成することができる。その上、以下に詳述するように、BCHコード特性は、SSDセルのレベルの数sおよびSSDチャネルのエラー構造に適合するように容易に調整することができる。したがって、全体的に見て、本発明を実施する記録方法は、sレベル・ソリッド・ステート・メモリに情報を確実に保管するための実用的で効率的なシステムを提供することができる。
一般に、エンコードすべき入力データ・ワードは複数のデータ・シンボルを含むことができ、ここでデータ・シンボルは単一ビット(すなわち、2進)シンボルまたは複数ビット・シンボルにすることができる。本発明の好ましい諸実施形態では、第1および第2のコードワードのそれぞれは複数の(Nによって示される)q進シンボルを含み、ここでq=pであり、kは正整数であり、pは素数である。その上、特に好ましい諸実施形態では、特に効率的な動作のためにソリッド・ステート・ストレージのレベルの数sに合わせて2レベルBCHコードのq進アルファベットが調整される。これは、qおよびsが共通ベースrのそれぞれu乗およびv乗になるようなコードの使用によって達成され、ここでuおよびvは正整数であり、k≧uである。これは、p(k/u)v=sという条件によりq進コード・アルファベットがs進ストレージに「整合」することを保証するものである。コードがこの「整合アルファベット(matched alphabet)」制約を満足することを保証することにより、q進コードワード・シンボルはsレベル・ストレージに記録するために単純かつ効率的にs進アルファベットに変換することができ、非常に効率的な動作ならびにコード選択の柔軟性を提供する。特に、事例によってはqおよびsが同じである可能性があるが、q≠sである好ましい諸実施形態については以下に詳述する。加えて、本発明を実施する方法は2進(s=2)ソリッド・ステート・ストレージに適用することができるが、好ましい諸実施形態はマルチレベル・ソリッド・ステート・ストレージ(s>2)のための柔軟かつ効率的な動作を提供する。
特に好ましい諸実施形態では、M個の第1のコードワードからなる各集合はソリッド・ステート・ストレージのそれぞれの書き込み位置に記録される。たとえば、フラッシュ・メモリでは、各ページはM個の第1のコードワードからなる単一集合を含むことになる。しかし、実施形態によっては、M個の第1のコードワードからなる複数の集合を各書き込み位置に、たとえば、フラッシュ・ページのセクタあたり1つの集合を、記録することが望ましい場合もある。また、M個の第1のコードワードからなる各集合がソリッド・ステート・ストレージの複数の書き込み位置に記録される諸実施形態も想定することができるであろう。
本発明の他の態様の一実施形態により、本発明の第1の態様による方法をコンピュータに実行させるためのプログラム・コード手段を含むコンピュータ・プログラムが提供される。「コンピュータ」という用語は最も一般的な意味で使用され、コンピュータ・プログラムを実現するためのデータ処理機能を有する任意のデバイス、コンポーネント、またはシステムを含むことが理解されるであろう。その上、本発明を実施するコンピュータ・プログラムは、独立プログラムを構成する場合もあれば、より大きいプログラムの1つの要素になる場合もあり、たとえば、コンピュータにロードするためにディスクなどのコンピュータ可読媒体または電子伝送で実施して、供給することができる。コンピュータ・プログラムのプログラム・コード手段は、直接または(a)他の言語、コード、または表記への変換、および(b)異なる物質的形式による複製のいずれか一方または両方の後、当該方法をコンピュータに実行させるための1組の命令を任意の言語、コード、または表記で表した任意の表現を含むことができる。
本発明の第3の態様の一実施形態は、
s≧2であるsレベル・ソリッド・ステート・ストレージと、
第1および第2のBCHコードによりM個の入力データ・ワードからなるグループに入力データ・ワードをエンコードし、M個の第1のコードワードの所定の一次結合が第2のBCHコードの第2のコードワードを生成するように、各グループごとに、第1のBCHコードのM個の第1のコードワードからなる集合を生成するための2レベルBCHエンコーダであって、第2のBCHコードが第1のBCHコードのサブコードである、2レベルBCHエンコーダと
を含むソリッド・ステート・ストレージ・デバイスであって、
このデバイスがM個の第1のコードワードからなる集合をsレベル・ストレージに記録するように適合される、ソリッド・ステート・ストレージ・デバイスを提供する。
本発明の第4の態様の一実施形態は、s≧2であるソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに記録すべき入力データをエンコードするためのエンコーダ装置を提供する。このエンコーダ装置は、
第1および第2のBCHコードによりM個の入力データ・ワードからなるグループに入力データ・ワードをエンコードし、M個の第1のコードワードの所定の一次結合が第2のBCHコードの第2のコードワードを生成するように、各グループごとに、第1のBCHコードのM個の第1のコードワードからなる集合を生成するための2レベルBCHエンコーダであって、第2のBCHコードが第1のBCHコードのサブコードであり、第1および第2のコードワードのそれぞれがN個のq進シンボルを含み、ここでq≠sであり、q=pであり、kは正整数であり、pは素数であり、qおよびsは共通ベースrのそれぞれu乗およびv乗であり、ここでuおよびvは正整数であり、k≧uであり、これによりp(k/u)v=sになる、2レベルBCHエンコーダと、
sレベル・ストレージに記録するためにそれぞれの第1のコードワードのq進シンボルをs進アルファベットに変換するためのシンボル・コンバータと
を含む。
一般に、本発明の一態様の一実施形態に関連して本明細書に特徴が記載されているが、本発明の他の態様の諸実施形態で対応する特徴を提供することもできる。
次に、添付図面に関連して一例として本発明の好ましい諸実施形態について説明する。
本発明を実施するsレベル・ソリッド・ステート・ストレージ・デバイスの概略ブロック図である。 図1のデバイスで使用するための第1の2レベル・コード体系を示す図である。 図1のデバイスで使用するための第2の2レベル・コード体系を示す図である。
図1は、ソリッド・ステート・ストレージ・デバイス、ここではフラッシュ・メモリ・デバイス1の簡易概略図であり、説明すべきエンコード・システムに含まれる主要要素を示している。デバイス1は、フラッシュ・メモリ・セルの統合アレイにデータを保管するためのsレベル・フラッシュ・メモリ2を含み、各セルはs≧2通りのストレージ・レベルを想定することができる。同図には単一ブロックとして示されているが、一般に、フラッシュ・メモリ2は、たとえば、単一チップまたはダイから、それぞれがストレージ・チップの複数パッケージを含む複数のストレージ・バンクに及ぶ、任意の所望の構成のフラッシュ・ストレージ・ユニットを含むことができる。デバイス1は、2レベルBCHエンコーダ3と、同図では破線で囲まれているシンボル・コンバータ4とを含むものとして一般化した形で示されているエンコーダ装置を有する。シンボル・コンバータ4は、q進−r進コンバータ5と、チャネル・マッピング・ユニット6とを含む。デバイス1の対応するデコーダ装置は、一般に、同図にはデコーダ7として示されている。
一般に、BCHエンコーダ3、シンボル・コンバータ4、およびデコーダ7の機能性は、ハードウェア、ソフトウェア、またはその組み合わせで実現できるであろう。たとえば、BCHエンコーダ3におけるエンコード動作は、以下に詳述するコード体系を実現するためにエンコーダ装置のプロセッサを構成するソフトウェアによって全部または一部を実行できるであろう。適切なソフトウェアは、本明細書の説明から当業者にとって明白になるであろう。しかし、動作速度の理由により、ハードワイヤード論理回路の使用は、一般に、可能な限り機能性を実現するために好ましいものである。加えて、エンコード・プロセスは、一般に、系統的エンコード(エンコード・プロセスへの入力データはコーディングによって変化しないが、出力コードワードを入手するためにエンコードされないシンボルにパリティ・ビットが追加される)または非系統的エンコード(エンコード・プロセスへの入力データは、コーディングによって出力コードワードに埋め込まれる)によって実現できるあろう。しかし、エンコーダ(および対応するデコーダ)の実現を単純にするために系統的エンコードが好ましい。デバイス1のエンコーダおよびデコーダ装置の適切な実現例は、本明細書の説明から当業者にとって容易に明白になるであろう。
デバイス1の動作時に、フラッシュ・メモリ2に記録すべき入力データはBCHエンコーダ3に供給される。入力データは連続した入力データ・ワードを含み、これらは以下に詳細に説明する2レベルBCHエンコード方式によりBCHエンコーダ3によってM個の入力データ・ワードからなるグループにエンコードされる。M個の入力データ・ワード(以下に説明するように異なる数のデータ・シンボルを有するワードを含む可能性がある)からなる各グループごとに、BCHエンコーダ3はM個のq進シンボル・コードワードからなる集合を出力し(すなわち、これらのコードワードの単一シンボルはq個の可能な値を有する可能性がある)、ここでq=pであり、kは正整数であり、pは素数である。qとsとの関係次第で、シンボル・コンバータ4は以下に詳述するように動作して、記録するためにq進シンボル・コードワードをs進アルファベットに変換する。次に、s進シンボル・コードワードはフラッシュ・メモリ2に記録され、それにより各フラッシュ・セルはコードワードの1つのs進シンボルを保管する。この実施形態では、フラッシュ・メモリの各ページはM個のs進コードワードからなる単一集合に十分な記憶域を提供し、それによりM個のs進コードワードからなる各集合はそれぞれのフラッシュ・ページに保管される。その後、あるページがフラッシュ・メモリ2から読み取られる場合、デコーダ7はs進コードワードをデコードするためにエンコーダ装置3、4とは逆の処理を実行し、一般に知られている方法でエラー検出および回復動作を実現する。それにより、元の入力データ・ワードは回復され、デコーダ7から出力データとして供給される。
次に、BCHエンコーダ3の動作についてより詳細に説明する。エンコーダ3に供給されたM個の入力データ・ワードからなる各グループは、ベクトル空間GF(q) からの(M−P)個のKシンボル・データ・ワードと、ベクトル空間GF(q) からのP個のKシンボル・データ・ワードで構成される。エンコーダ3は、第1のBCHコードにより(M−P)個のKシンボル・データ・ワードをそれぞれのNシンボルの第1のコードワードにマッピングする。この第1のBCHコードは、ベクトル空間GF(q)からのNタプルの事前定義集合で構成される。したがって、このコードは入力q進シンボル・データ・ワードをq進シンボルの第1のコードワードに1対1でマッピングし、(M−P)個の第1のコードワードのそれぞれに含まれるN−K個のパリティ・シンボルはECCプロセスに必要な冗長性の第1の部分を提供する。さらに、エンコーダ3は第2のBCHコードにより残りのP個のKシンボル・データ・ワードをそれぞれのNシンボルの第2のコードワードにマッピングする。この第2のBCHコードは、ベクトル空間GF(q)からのNタプルのもう1つの事前定義集合で構成され、第1のBCHコードのサブコードであり、すなわち、すべて第2のコードワードの集合はすべて第1のコードワードの集合のサブセットである。したがって、第2のコードは入力q進シンボル・データ・ワードをq進シンボルの第2のコードワード(第1のコードワードでもある)に1対1でマッピングし、P個のコードワードのそれぞれに含まれるN−K個のパリティ・シンボルはECCプロセスに必要な冗長性の第2の部分を提供する。したがって、エンコーダはM個のコードワードからなる初期集合を生成する。次に、初期集合内のP個の第2のコードワードをP個の変更済み(第1の)コードワードで置き換えることによりM個のコードワードからなる最終集合が得られ、それぞれの変更済みコードワードのi番目のシンボル(ここでi=1〜N)は初期集合内のM個のコードワードのi番目のシンボルの特定の一次結合である。これらの変更済みコードワードは、M個の第1のコードワードからなる最終集合が第2のBCHコードによって抑制されるように生成される。具体的には、M個の第1のコードワードからなる集合の少なくとも1つの所定の一次結合は第2のBCHコードのコードワードである。したがって、1つまたは複数の所定の一次結合に応じて結合されたときに、M個の第1のコードワードからなる結果集合は、第2のBCHコードの1つまたは複数の第2のコードワードを生成する。
上記ではエンコーダ3における2レベル・コード体系のための模範的な実現例を説明しているが、様々な2レベル・コード構成を想定することができる。本発明の諸実施形態によれば、第1および第2のBCHコードによりM個の入力データ・ワードからなる各グループをエンコードし、M個の第1のコードワードの所定の一次結合が第2のBCHコードの第2のコードワードを生成するように、第1のBCHコードのM個の第1のコードワードからなる集合を生成し、この第2のコードが第1のBCHコードのサブコードになる。単純な例は図2に概略的に示されている。第1および第2のコードワードは同図の一番上に2つの異なる長方形ブロックによって表されている。第1のコードワードのように第2のコードワードはそれぞれ、示されているようにN個のq進シンボルで構成される。M個の入力データ・ワードからなる所与のグループの場合、M個の第1のコードワードからなる結果集合は、定義された順序で連結されると、同図の中心に示されているように、2レベルBCHコード全体のうちの2レベル・コードワードを効果的に形成する。この2レベル・コードワードは同図の一番下に示されている条件を満足する。すなわち、M個の第1のコードワードの合計(シンボルごと)は第2のBCHコードのコードワードを生成する。
もう1つの模範的な2レベル・コード体系は図3に示されている。この場合、M個の第1のコードワードの複数の一次結合のそれぞれは第2のBCHコードのコードワードを生成する。特に、定義された連結順序の場合、M個の第1のコードワードの複数の加重和のそれぞれはそれぞれの第2のコードワードになる。これは同図の一番下の条件によって一般化した形で示されており、「」は乗算を示している。特に、第2のコードワードはM個のコードワードのP個の加重和から得られ、これらの加重和の重み係数は、以下に説明するように第3の線形コードに対応するパリティチェック行列によって定義される。
有限体GF(q)におけるこのクラスの2レベルBCHコードCは、有限体GF(q)における3つのコードCおよびCおよびCの定義に基づくものであり、ここでqは素数の累乗である。このコードCは、(N−K)×Nのパリティチェック行列H1によって定義された最小距離d(C)を有する第1のBCHコード[N,K,d(C)]である。第2のコードCは、最小距離d(C)を有する第2のBCHコード[N,K,d(C)]である。これは第1のコードCのサブコードであり、(N−K)×Nのパリティチェック行列
Figure 0005723967
によって定義され、ここでHaは、Cコードがパリティチェック制約Hに加えて満足しなければならないパリティチェック制約を表す(K−K)×Nのパリティチェック行列である。H=[h ]はサイズP×MのGF(q)におけるフルランク・パリティチェック行列であるとし、これは寸法がK=M−Pであり、最小寸法d(C)を有する線形[M,K,d(C)]コードを定義する。長さMNの2レベル・コードC全体は、パリティチェック行列H=[h ]を有する線形コードCとコードCおよびCから得られ、ここでC⊂Cであり、
Figure 0005723967
というパリティチェック行列によって定義され、ここで
Figure 0005723967
はサイズ[(N−K)M+(K−K)P]×[MN]のブロック行列であり、これは、Hの(i,j)番目のサブブロックの単純な表現の使用に基づくH=[h ]によって特徴付けることもできる。この場合、行列要素hi,は図3の加重和のための重み係数を示す。長さMNの結果の2レベル・コードCはK+PKという寸法と
d(C)=min{d(C)d(C),d(C)}
という最小距離を有することが分かる。
図2および図3のコーディング・アーキテクチャにより多数の2レベルBCHコードを構築することができ、個々のシステムのパラメータに応じて特定のコードCおよびCおよびCを選択できることが認識されるであろう。具体的なコードは、たとえば、s進ストレージのレベルの数sおよび所与のシステムの性能要件に基づいて選択することができる。しかし、性能効率を強化し、実現を単純にするために、デバイス1の好ましい諸実施形態では、以下のようにBCHコードが選択される。
(1)q=p=rであり、ここでk≧uである。
(2)s=rである。
ここでuおよびvは正整数である。換言すれば、qおよびsは共通ベースrのそれぞれu乗およびv乗である。これは、
(k/u)v=s
という条件を意味するものであり、この条件は本明細書では「整合アルファベット」制約という。この制約を満足することは、2レベルBCHコードのq進アルファベットが最も効率的なデバイス動作のためにs進ストレージに「整合」することを保証する。特に、シンボル・コンバータ4においてq進コードを単純かつ効率的にs進アルファベットに変換できることを保証しながら、コード選択の柔軟性が提供される。このため、コード体系はq=sのものに限定されないが、特定のsレベル・ストレージ特性について最良の結果をもたらすように選択することができる。s≠qであるデバイス1の動作時に、q進シンボル・コードワードはq進−r進コンバータ5によってr進シンボル・コードワードに変換され、ここで上記で定義されるようにr=sである。ここでv>1である場合(すなわち、r≠s)、チャネル・マッピング・ユニット6においてr進シンボルをメモリ2のsストレージ・チャネルにマッピングすることができる。特に、各r進入力コードワードのv個のr進シンボルからなる連続集合は、v個のr進シンボルのすべての可能な値をs通りのレベルのそれぞれ異なるレベルにマッピングする所定のマッピング方式によりsレベル・ストレージのそれぞれの対応するレベルにマッピングされる。チャネル・マッピングは、当業者にとって明白になるようにs進ストレージのエラー特性に適合するように、任意の所望の方法で、ここでは、たとえば、既知のグレイ・マッピング方式を使用して実行することができる。したがって、v個のr進入力シンボルからなる各集合はチャネル・マッピング・ユニット6の出力において1つのs進シンボルに対応し、対応するレベルとしてメモリ2のそれぞれのs進セルに記録される。
u=1であり、それによりq=rである諸実施形態では、q進−r進変換は当然のことながら必要ではなく、コンバータ5は省略または迂回することができる。しかし、r≠sを想定すると、ここではv個のq進シンボルからなる集合について、依然として上述のようにチャネル・マッピングを実行することができる。同様に、r=sである実施形態では、チャネル・マッピング・ユニット6は省略または迂回することができる。したがって、一般に、シンボル・コンバータ4は、ストレージ・システムの特定のパラメータに応じてq進−r進変換およびチャネル・マッピングのいずれか一方または両方を実行することができる。上記の2レベル・コーディング技法はq=sであるシステムにも適用することができ、その場合、シンボル・コンバータ4は全体として省略または迂回できることに留意されたい。
上記のシステムはコード選択の並外れた柔軟性を提供することができるが、ストレージ・デバイス1で使用するための2つの特に興味深い系列のコード体系について以下に説明する。
第1の系列のコード体系はr=s>2によって特徴付けられ、独立s進シンボル・エラーを有するs進チャネル・モデルによってメモリ・チャネルを記述できるときに特に有用である。第2の系列のコード体系はr=2およびk=uによって特徴付けられ、独立ビット・エラーを有する2進チャネルによってチャネル・マッピング・ユニット、メモリ・チャネル、リードバック・プロセス、およびデコーダ7で実行される逆チャネル・マッピングの連結を記述できるときに特に有用である。グレイ・エンコードがチャネル・マッピングとして使用され、不揮発性メモリ・チャネル内のエラーの結果、チャネル・レベルが隣接チャネル・レベルとして誤って読み取られる場合に、独立ビット・エラー・チャネルは不揮発性sレベル・メモリのための良いモデルである。この場合、q=2、r=2、およびs=2である。独立ビット・エラー・チャネルのための良い選択は、2レベル2進BCHコード体系を選択することになり、ここでq=2、すなわち、p=2およびk=1である。しかし、実現あるいはエラー率性能またはその両方の理由により、q>2であるGF(q)におけるコードを使用することは有利なことになる可能性があり、ここでエンコードのための有限体演算はGF(q=2)で実行され、k>1である。
次に、フラッシュ・メモリ用の2レベル・コードの2つの具体的な例について詳細に説明する。現在、フラッシュ・メモリ内の典型的な1ページは4KiBのユーザ・データを含む。さらに、ページあたり使用可能なECC冗長性は224バイトであると想定される。2進コードを使用する場合、コード長MNは34560(ビット単位)でなければならず、コードの寸法は少なくとも32768(ビット単位)でなければならない。GF(212)におけるデコード・アルゴリズムにより、長さ3840の2進BCHコードに基づいて、長さ34560=M×N=9×3840の2つの2進2レベル・コードが構築される。
第1の例では、[N=3840,K=3660,d=31]というパラメータを有する第1の2進BCHコードCと、[N=3840,K=3492,d=59]というパラメータを有する第2の2進BCHコードCと、長さM=9、寸法K=8、およびd(C)=2である単一パリティチェック・コードCから、2進2レベル・コードCが構築される。結果の2レベル・コードは32772という寸法を有し、したがって、4KiBのユーザ・データに対応することができる。さらに、d(C)=59であり、すなわち、このコードは29個までのエラーを訂正することができる。
第2の例では、[N=3840,K=3732,d=19]というパラメータを有する第1の2進BCHコードCと、[N=3840,K=3528,d=53]というパラメータを有する第2の2進BCHコードCと、長さM=9、寸法K=5、およびd(C)=3である短縮ハミング・コードCから、2進2レベル・コードCが構築される。結果の2レベル・コードは32772という寸法を有し、したがって、4KiBのユーザ・データに対応することができる。さらに、d(C)=53であり、すなわち、このコードは26個までのエラーを訂正することができる。
GF(2)におけるこれらの2進2レベル・コード例は、[34560,32768,225]というパラメータを有する2進BCHコードと比較しなければならない。この長いBCHコードは112個までのエラーを訂正することができるが、そのデコード・アルゴリズムは大きい体GF(216)で機能し、これは現在、SSDメモリでの適用には非現実的である。
上記の2レベル・コードのもう1つの比較は、[3840,3648,33]というパラメータを有する2進1レベルBCHコードの9ウェイ・インターリービング方式に関するものであり、これは16個までのエラーを訂正することができる。9個のインターリーブドBCHコードのそれぞれに関するデコーダはGF(212)において動作する。2レベル・コードは同じ体GF(212)において動作するデコーダを有するが、単純な9ウェイ・インターリービング方式と比較すると、実質的により多くのエラーを訂正することができる。
上記のようにsレベル・フラッシュにおけるページ・エンコードのために整合アルファベット2レベルBCHコードを使用すると、非常に効率的なエラー訂正コーディングを提供することができる。BCHコードは、不揮発性フラッシュおよびPCMメモリなどのsレベル・ソリッド・ステート・ストレージのエラー特性に特に適しており、現行の不揮発性メモリ製品においてシンボルの長さが1ビット〜4ビットである場合に記録媒体には独立シンボル・エラーが発生する可能性がある。その上、実現の複雑さおよび消費電力に対する最小限の影響で、改善されたエラー性能を達成することができる。したがって、上記のシステムの使用により、並外れた総合性能を得ることができる。
当然のことながら、本発明の範囲を逸脱せずに、上記の模範的な諸実施形態に対して多くの変更および修正が可能であることが認識されるであろう。

Claims (15)

  1. s≧2であるソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに入力データを記録するための方法であって
    第1および第2のBCHコードによりM個の入力データ・ワードからなるグループに入力データ・ワードをエンコードし、M個の第1のコードワードの所定の一次結合が前記第2のBCHコードの第2のコードワードを生成するように、各グループごとに、前記第1のBCHコードのM個の第1のコードワードからなる集合を生成するステップであって、前記第2のBCHコードが前記第1のBCHコードのサブコードである、前記生成するステップと、
    M個の第1のコードワードからなる前記集合を前記sレベル・ストレージに記録するステップであって、
    前記第1および第2のコードワードのそれぞれがN個のq進シンボルを含み、ここでq=p であり、kは正整数であり、pは素数であり、
    qおよびsが共通ベースrのそれぞれu乗およびv乗であり、ここでuおよびvは正整数であり、k≧uであり、これによりp (k/u)v =sになる、
    前記生成するステップ
    を含む、前記方法。
  2. 前記集合内の前記M個の第1のコードワードの合計が前記第2のコードワードである、請求項1記載の方法。
  3. 前記集合内の前記M個の第1のコードワードの複数の加重和のそれぞれがそれぞれの第2のコードワードであり、前記複数の加重和の重み係数が第3の線形コードに対応するパリティチェック行列によって定義される、請求項1または2記載の方法。
  4. s≠qである、請求項1〜3のいずれか一項に記載の方法。
  5. 記sレベル・ストレージに記録する前にそれぞれのq進の第1のコードワードをr進の第1のコードワードに変換するステップ
    さらに含む、請求項4に記載の方法。
  6. r≠sであり
    所定のマッピング方式によりそれぞれのr進の第1のコードワードのv個のr進シンボルからなる連続集合を前記sレベル・ストレージのそれぞれの対応するレベルにマッピングするステップと、
    v個のr進シンボルからなる各集合を前記対応するレベルとして前記sレベル・ストレージに記録するステップ
    さらに含む、請求項5に記載の方法。
  7. q=r≠sであり
    所定のマッピング方式によりそれぞれのq進の第1のコードワードのv個のq進シンボルからなる連続集合を前記sレベル・ストレージのそれぞれの対応するレベルにマッピングするステップと、
    v個のq進シンボルからなる各集合を前記対応するレベルとして前記sレベル・ストレージに記録するステップ
    さらに含む、請求項5に記載の方法。
  8. r=s>2である、請求項のいずれか項に記載の方法。
  9. r=2およびk=uである、請求項1〜8のいずれか項に記載の方法。
  10. s>2である、請求項1〜のいずれか一項に記載の方法。
  11. M個の第1のコードワードからなる前記集合のそれぞれを前記ソリッド・ステート・ストレージのそれぞれの書き込み位置に記録するステップ
    を含む、請求項1〜10のいずれか一項に記載の方法。
  12. エンコーダ装置に、請求項1〜11のいずれか一項に記載の方法の各ステップを実行させるコンピュータ・プログラム。
  13. s≧2であるソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに記録すべき入力データをエンコードするためのエンコーダ装置であって
    第1および第2のBCHコードによりM個の入力データ・ワードからなるグループに入力データ・ワードをエンコードし、M個の第1のコードワードの所定の一次結合が前記第2のBCHコードの第2のコードワードを生成するように、各グループごとに、前記第1のBCHコードのM個の第1のコードワードからなる集合を生成するための2レベルBCHエンコーダであって、前記第2のBCHコードが前記第1のBCHコードのサブコードであり、前記第1および第2のコードワードのそれぞれがN個のq進シンボルを含み、ここq=pであり、kは正整数であり、pは素数であり、qおよびsは共通ベースrのそれぞれu乗およびv乗であり、ここでuおよびvは正整数であり、k≧uであり、これによりp(k/u)v=sになる、前記2レベルBCHエンコーダと、
    前記sレベル・ストレージに記録するためにそれぞれの第1のコードワードの前記q進シンボルをs進アルファベットに変換するためのシンボル・コンバータと
    を含む、前記エンコーダ装置。
  14. s≠qである、請求項13に記載のエンコーダ装置。
  15. ソリッド・ステート・ストレージ・デバイスであって、
    s≧2であるsレベル・ソリッド・ステート・ストレージと、
    第1および第2のBCHコードによりM個の入力データ・ワードからなるグループに入力データ・ワードをエンコードし、M個の第1のコードワードの所定の一次結合が前記第2のBCHコードの第2のコードワードを生成するように、各グループごとに、前記第1のBCHコードのM個の第1のコードワードからなる集合を生成するための2レベルBCHエンコーダであって、前記第2のBCHコードが前記第1のBCHコードのサブコードである、前記2レベルBCHエンコーダと
    を含み、
    前記デバイスがM個の第1のコードワードからなる前記集合を前記sレベル・ストレージに記録するように適合され、
    前記第1および第2のコードワードのそれぞれがN個のq進シンボルを含み、ここでq=p であり、kは正整数であり、pは素数であり、
    qおよびsが共通ベースrのそれぞれu乗およびv乗であり、ここでuおよびvは正整数であり、k≧uであり、これによりp (k/u)v =sになる、
    前記ソリッド・ステート・ストレージ・デバイス。
JP2013501998A 2010-03-30 2011-03-23 ソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに入力データを記録するための方法、エンコーダ装置、およびソリッド・ステート・ストレージ・デバイス Active JP5723967B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP10158438 2010-03-30
EP10158438.1 2010-03-30
PCT/IB2011/051219 WO2011121490A1 (en) 2010-03-30 2011-03-23 Two -level bch codes for solid state storage devices

Publications (3)

Publication Number Publication Date
JP2013524609A JP2013524609A (ja) 2013-06-17
JP2013524609A5 JP2013524609A5 (ja) 2015-03-12
JP5723967B2 true JP5723967B2 (ja) 2015-05-27

Family

ID=44235962

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013501998A Active JP5723967B2 (ja) 2010-03-30 2011-03-23 ソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに入力データを記録するための方法、エンコーダ装置、およびソリッド・ステート・ストレージ・デバイス

Country Status (6)

Country Link
US (1) US8930798B2 (ja)
JP (1) JP5723967B2 (ja)
CN (1) CN102823141B (ja)
DE (1) DE112011101116B4 (ja)
GB (1) GB2492708B (ja)
WO (1) WO2011121490A1 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2813078A4 (en) * 2012-02-06 2015-09-30 Nokia Technologies Oy ENCODING METHOD AND APPARATUS
KR20140114516A (ko) * 2013-03-15 2014-09-29 삼성전자주식회사 메모리 컨트롤러 및 이의 동작 방법
RU2013128346A (ru) * 2013-06-20 2014-12-27 ИЭмСи КОРПОРЕЙШН Кодирование данных для системы хранения данных на основе обобщенных каскадных кодов
US9219503B2 (en) * 2013-10-16 2015-12-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for multi-algorithm concatenation encoding and decoding
GB2525430B (en) 2014-04-25 2016-07-13 Ibm Error-correction encoding and decoding
US9524207B2 (en) * 2014-09-02 2016-12-20 Micron Technology, Inc. Lee metric error correcting code
US9710199B2 (en) 2014-11-07 2017-07-18 International Business Machines Corporation Non-volatile memory data storage with low read amplification
US10162700B2 (en) 2014-12-23 2018-12-25 International Business Machines Corporation Workload-adaptive data packing algorithm
US9647694B2 (en) 2014-12-28 2017-05-09 International Business Machines Corporation Diagonal anti-diagonal memory structure
US9712190B2 (en) 2015-09-24 2017-07-18 International Business Machines Corporation Data packing for compression-enabled storage systems
US9870285B2 (en) 2015-11-18 2018-01-16 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory
US10333555B2 (en) 2016-07-28 2019-06-25 Micron Technology, Inc. Apparatuses and methods for interleaved BCH codes
US10275309B2 (en) 2017-04-26 2019-04-30 Western Digital Technologies, Inc. Multi-layer integrated zone partition system error correction
CN109857340B (zh) * 2019-01-14 2022-05-06 普联技术有限公司 Nor flash中文件的存储和读取方法、装置及存储介质
US11139827B2 (en) 2019-03-15 2021-10-05 Samsung Electronics Co., Ltd. Conditional transcoding for encoded data
US10871910B1 (en) * 2019-09-27 2020-12-22 Western Digital Technologies, Inc. Non-volatile memory with selective interleaved coding based on block reliability
US11694761B2 (en) 2021-09-17 2023-07-04 Nxp B.V. Method to increase the usable word width of a memory providing an error correction scheme

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5942005A (en) 1997-04-08 1999-08-24 International Business Machines Corporation Method and means for computationally efficient error and erasure correction in linear cyclic codes
US5946328A (en) * 1997-11-17 1999-08-31 International Business Machines Corporation Method and means for efficient error detection and correction in long byte strings using integrated interleaved Reed-Solomon codewords
US6275965B1 (en) * 1997-11-17 2001-08-14 International Business Machines Corporation Method and apparatus for efficient error detection and correction in long byte strings using generalized, integrated, interleaved reed-solomon codewords
JPH11212876A (ja) 1998-01-21 1999-08-06 Sony Corp 符号化方法およびそれを利用したメモリ装置
DE69932962T2 (de) * 1998-01-21 2007-02-01 Sony Corp. Kodierungsverfahren und Speicheranordnung
IT1321049B1 (it) 2000-11-07 2003-12-30 St Microelectronics Srl Metodo di costruzione di un codice a controllo dell'errore polivalenteper celle di memoria multilivello funzionanti a un numero variabile di
US7231578B2 (en) 2004-04-02 2007-06-12 Hitachi Global Storage Technologies Netherlands B.V. Techniques for detecting and correcting errors using multiple interleave erasure pointers
US7844877B2 (en) * 2005-11-15 2010-11-30 Ramot At Tel Aviv University Ltd. Method and device for multi phase error-correction
TWM314385U (en) * 2006-10-23 2007-06-21 Genesys Logic Inc Apparatus for inspecting and correcting encoding random error of BCH
US7895502B2 (en) 2007-01-04 2011-02-22 International Business Machines Corporation Error control coding methods for memories with subline accesses
US7782232B2 (en) * 2007-08-08 2010-08-24 Marvell World Trade Ltd. Encoding and decoding methods using generalized concatenated codes (GCC)
US8136020B2 (en) * 2007-09-19 2012-03-13 Altera Canada Co. Forward error correction CODEC
CN101227194B (zh) * 2008-01-22 2010-06-16 炬力集成电路设计有限公司 用于并行bch编码的电路、编码器及方法
US8266495B2 (en) * 2008-02-20 2012-09-11 Marvell World Trade Ltd. Systems and methods for performing concatenated error correction
US8656263B2 (en) * 2010-05-28 2014-02-18 Stec, Inc. Trellis-coded modulation in a multi-level cell flash memory device

Also Published As

Publication number Publication date
US20130013974A1 (en) 2013-01-10
JP2013524609A (ja) 2013-06-17
DE112011101116T5 (de) 2013-01-10
CN102823141B (zh) 2015-09-16
WO2011121490A1 (en) 2011-10-06
US8930798B2 (en) 2015-01-06
CN102823141A (zh) 2012-12-12
DE112011101116B4 (de) 2017-09-21
GB2492708A (en) 2013-01-09
GB2492708B (en) 2017-01-25
GB201219123D0 (en) 2012-12-05

Similar Documents

Publication Publication Date Title
JP5723967B2 (ja) ソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに入力データを記録するための方法、エンコーダ装置、およびソリッド・ステート・ストレージ・デバイス
JP2013524609A5 (ja)
US9070453B2 (en) Multiple programming of flash memory without erase
US8713411B2 (en) Encoding and/or decoding memory devices and methods thereof
US8166370B1 (en) Efficient RAID ECC controller for RAID systems
JP5091253B2 (ja) マルチレベルセルメモリ装置およびこのメモリ装置にデータを記録および読み取る方法
US20120096328A1 (en) Multi-write endurance and error control coding of non-volatile memories
US8656263B2 (en) Trellis-coded modulation in a multi-level cell flash memory device
JP2015507409A (ja) 代数符号を用いるマルチフェーズecc符号化
US9559725B1 (en) Multi-strength reed-solomon outer code protection
WO2017018008A1 (ja) 符号化装置、メモリコントローラ、通信システムおよび符号化方法
US9059744B2 (en) Encoding a data word for writing the encoded data word in a multi-level solid state memory
US9639421B2 (en) Operating method of flash memory system
CN112134573B (zh) 用于将数据存储在存储器装置内的方法和检索数据的方法
Deal Trends in NAND flash memory error correction
JP2020135391A (ja) メモリシステム
KR101355988B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
US10951238B1 (en) Memory system and method for controlling non-volatile memory
Mittelholzer et al. High-throughput ecc with integrated chipkill protection for nonvolatile memory arrays
JPH11213693A (ja) メモリ装置
Shetty et al. Synthesis of BCH codes for enhancing data integrity in flash memories
KR20220124182A (ko) 저장 시스템에서의 데이터 복구를 위한 인코딩
KR20140006445A (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141014

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141222

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20141222

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20141222

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20141225

TRDD Decision of grant or rejection written
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150309

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20150309

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150309

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150330

R150 Certificate of patent or registration of utility model

Ref document number: 5723967

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150