JP2012094132A - 不揮発性半導体メモリ装置とデータ誤り訂正方法 - Google Patents
不揮発性半導体メモリ装置とデータ誤り訂正方法 Download PDFInfo
- Publication number
- JP2012094132A JP2012094132A JP2011217761A JP2011217761A JP2012094132A JP 2012094132 A JP2012094132 A JP 2012094132A JP 2011217761 A JP2011217761 A JP 2011217761A JP 2011217761 A JP2011217761 A JP 2011217761A JP 2012094132 A JP2012094132 A JP 2012094132A
- Authority
- JP
- Japan
- Prior art keywords
- error correction
- error
- area
- redundant
- user 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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/2906—Coding, 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1044—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/80—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
- G11C29/816—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
- G11C29/82—Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/35—Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
- H03M13/353—Adaptation to the channel
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Error Detection And Correction (AREA)
Abstract
【課題】誤り訂正回路の大きさを抑制する誤り訂正方法と誤り訂正装置を実現する。
【解決手段】
誤り訂正単位210は誤りビットの個数が少ないページ内の一領域であり、誤り訂正単位220は誤りビットの個数が多いページ内の一領域である。誤り訂正単位210は、ユーザデータ領域211と第1冗長領域212と第2冗長領域213とを含んでいる。また、誤り訂正単位220は、ユーザデータ領域221と第1冗長領域222と第2冗長領域223とを含んでいる。そして、ユーザデータ領域211及び221にある誤りを訂正するための第1組の冗長ビットは第1冗長領域212及び222にそれぞれ記憶される。誤りビットの個数が多いページ内のユーザデータ領域221にある誤りを訂正するための第2組の冗長ビットは、誤りビットの個数が少ないページ内の第2冗長領域213及び誤りビットの個数が多いページ内の第2冗長領域223に分散されて記憶される。
【選択図】 図4
【解決手段】
誤り訂正単位210は誤りビットの個数が少ないページ内の一領域であり、誤り訂正単位220は誤りビットの個数が多いページ内の一領域である。誤り訂正単位210は、ユーザデータ領域211と第1冗長領域212と第2冗長領域213とを含んでいる。また、誤り訂正単位220は、ユーザデータ領域221と第1冗長領域222と第2冗長領域223とを含んでいる。そして、ユーザデータ領域211及び221にある誤りを訂正するための第1組の冗長ビットは第1冗長領域212及び222にそれぞれ記憶される。誤りビットの個数が多いページ内のユーザデータ領域221にある誤りを訂正するための第2組の冗長ビットは、誤りビットの個数が少ないページ内の第2冗長領域213及び誤りビットの個数が多いページ内の第2冗長領域223に分散されて記憶される。
【選択図】 図4
Description
本発明は、不揮発性半導体メモリ装置と、そのデータの誤り訂正方法に関する。
フラッシュメモリと呼ばれる不揮発性半導体メモリは、小型化、大容量化が進んでいる。このようなフラッシュメモリの記憶領域は、一定のサイズの複数のブロックから構成されており、各ブロックは一定のサイズの複数のページから構成されている。そして、データの消去はブロック単位で行われ、データの読み込み及び書き込みはページ単位で行われる。
フラッシュメモリは、メモリセルの微細化と多値化により、その記憶容量が大きくなっている。その副作用として、誤りビットの数も増加する。この誤りを訂正するために、誤り訂正符号(ECC, Error Correcting Code)を用いて誤り訂正を行うことが一般的である。誤り訂正符号の例としては、BCH符号、リード・ソロモン符号(Reed Solomon Code)、低密度パリティ検査符号(LDPC Code, Low-Density Parity-Check Code)が挙げられる。
フラッシュメモリにおいて、誤り訂正符号は各ページの一部の領域に記憶されている。その一例を図19に示している。領域700は、ある1つのページを4つに分割した領域である。つまり、領域700が4つ並んで1つのページが構成されることになる。そして、領域700は、ユーザデータ領域701と、例えば、24ビットの誤り訂正能力を有する誤り訂正符号の冗長領域702とから構成されている。ユーザデータ領域701にはユーザデータが記憶されており、そのサイズは一例として1キロバイトである。冗長領域702には誤り訂正符号の冗長ビットが記憶されており、そのサイズは一例として336ビットである。冗長領域702のサイズが大きければ大きいほど、誤り訂正能力は向上する。メモリセルの多値化や微細化に対応して、あるいは信頼性の向上を目的として、冗長ビット数は増大する傾向にある。その一方で、冗長領域702のサイズが増加すると、誤り訂正回路の規模も増大する。このような回路規模の増大は、メモリの実装面積の減少を招き、記憶容量の減少をもたらす。また、冗長ビット数または冗長領域702のサイズの増加は、ユーザデータ領域701に記憶されているユーザデータを読み取って再生するのに要する時間の増加にもつながる。
このような問題を解消すべく、特許文献1には、メモリチップの内部と外部の双方に誤り訂正回路を設けた半導体メモリが開示されている。
また、特許文献2には、誤り訂正能力を超える誤りビットが検出された場合には、誤り訂正を行わないこととして、さらなる誤りビットの付加を防止することのできる誤り訂正装置が記載されている。
特許文献3には、誤り率の高い部分と低い部分を一つのECCフレームに混在させることで、各ECCフレーム間で誤り率の場所依存によるバラツキを均一化させて、誤り訂正の効率が向上する不揮発性半導体記憶装置が記載されている。
このような従来技術の課題に鑑み、本発明は、不揮発性半導体メモリのための新たな誤り訂正方法及びその装置を提供するものである。
本発明は、不揮発性半導体メモリの誤りビットの発生状況の傾向に着目し、誤り訂正符号の記憶領域を有効に活用し、誤り訂正回路の大きさを抑制する誤り訂正方法と誤り訂正装置を実現することを目的とする。
まず、データが誤っているビットの発生状況の傾向について図1と図2を参照して説明する。図1は、横軸にページ番号、縦軸に誤りビットの個数を示したグラフである。図に例示しているように、ページ番号が0〜120の各ページにある誤りビットの個数は、最も多くて約120個である。これに対し、ページ番号が120〜127のページにある誤りビットの個数は、最も多くて約370個、最少でも約150個である。つまり、誤りビットの個数が少ないページが大半であり、誤りビットがある一定数以上存在するページは、ページ番号の大きなページに数が限られている。この例でもわかるように、誤りビットが多い少数のページと、そうでない多数のページが存在するのが普通である。誤りビットが多いページは、ブロックの先頭や終わりの部分に偏在している傾向にあって、ブロックの全体に分布しているのではないことが分かる。
書き込みと読み取りの誤りには、ビット値が正しくは「0」であるビットを「1」と誤る誤りと、ビット値が正しくは「1」であるビットを「0」と誤る誤りの2種類がある。以下、前者の誤りをマイナス(−)誤りと呼び、後者の誤りをプラス(+)誤りと呼ぶことにする。この2種類の誤りの発生の傾向を図2に示している。ページ番号を横軸にとり、マイナス誤りの個数を縦軸の負の方向にとり、プラス誤りの個数を縦軸の正の方向にとっている。そして、マイナス誤りの個数を結んだ線を符号C1で示しており、プラス誤りの個数を結んだ線を符号C2で示している。この図からわかるように、マイナス誤りの多いページは、プラス誤りが非常に少ない。また、プラス誤りの多いページは、マイナス誤りが非常に少ない。つまり、誤りビットそのものの個数の多寡に関わらず、各ページについてみると、あるページについてマイナス誤りとプラス誤りが同様の頻度で発生することはほとんどなく、いずれか一方が他方に比べて極端に多い傾向があるといえる。
図3は、誤りビットを含んだページを読み取って従来の誤り訂正を行う際に、誤り訂正された誤りビット数の分布を各ページ毎に模式的に示したグラフである。誤りビットの数が大きいページを基準に冗長領域のサイズを決定するため、実際には多くのページに対しては過剰な冗長ビットを付加していることになることがわかる。つまり、誤りビットの個数が少ないページの冗長領域が有効に活用されていないということがいえる。そこで、本発明は、このような誤りビットの発生状況の傾向と冗長領域の使用状況とに着目して、なされたものである。
本発明は、まず、複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置であって、前記ページのそれぞれがユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、該誤り訂正単位は、その誤り訂正単位内のユーザデータ領域にある誤りを第1の誤り訂正法により訂正するための第1組の冗長ビットを記憶する第1冗長領域と、その誤り訂正単位が属するページに比較的に多くの誤りが存在している場合に対応するために、当該誤り訂正単位にある誤りを第2の誤り訂正法により訂正するための第2組の冗長ビットを、当該誤り訂正単位と当該ページよりも誤りの少ない1以上の別のページにある誤り訂正単位とに記憶するための第2冗長領域とを含む、不揮発性半導体メモリ装置を提供する。
また、本発明は、複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれがユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、該誤り訂正単位は、その誤り訂正単位内のユーザデータ領域にある誤りを第1の誤り訂正法により訂正するための第1組の冗長ビットを記憶する第1冗長領域と、その誤り訂正単位が属するページに比較的に多くの誤りが存在していることが判明している場合に当該誤り訂正単位にある誤りを第2の誤り訂正法により訂正するための第2組の冗長ビットを、当該誤り訂正単位と当該ページよりも誤りの比較的に少ない別のページにある誤り訂正単位とに分散させて記憶するための第2冗長領域とを含み、比較的に誤りの少ないページに属する誤り訂正単位のユーザデータに対しては前記第1組の冗長ビットにより誤り訂正を行うステップと、比較的に誤りの多いページに属する誤り訂正単位のユーザデータについては、そのユーザデータ領域を分割して、分割されたユーザデータ領域のそれぞれに対して、前記第2冗長領域にある第2組の冗長ビットを適用して誤り訂正を行うステップとを含む不揮発性半導体メモリ装置の誤り訂正方法を提供する。
さらに、本発明は、複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれがユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、誤り訂正単位は、その誤り訂正単位内のユーザデータ領域にある誤りを第1の誤り訂正法により訂正するための第1組の冗長ビットを記憶する第1冗長領域と、その誤り訂正単位が属するページに比較的に多くの誤りが存在していることが判明している場合には、当該誤り訂正単位にある誤りを第2の誤り訂正法により訂正するための第2組の冗長ビットを、当該誤り訂正単位と当該ページよりも誤りの比較的に少ない1以上の別のページにある誤り訂正単位とに記憶するための第2冗長領域とを含み、ある誤り訂正単位のユーザデータに対して前記第1組の冗長ビットを用いて誤り訂正する第1の訂正ステップと、前記第1の訂正ステップにより前記誤り訂正単位にあるユーザデータの誤りが訂正されたか否かを判断する訂正後状態判断ステップと、前記訂正後状態判断ステップにより、誤りが訂正されていないと判断された場合には、前記第2組の冗長ビットを用いて当該誤り訂正単位のユーザデータに対して誤り訂正を行う第2の訂正ステップとを含む誤り訂正方法を提供する。
ここで、前記第1の訂正ステップを行う前に、前記誤り訂正単位のユーザデータにある誤りを検出する誤り検出ステップと、前記誤り検出ステップにより検出された誤りが前記第1の訂正ステップにより訂正可能であるか否かを判断して、訂正可能であれば前記第1の訂正ステップに進み、さもなければ前記第2の訂正ステップに進むステップとをさらに含んでいてもよい。
また、前記誤り検出ステップにおいて、ユーザデータと冗長ビットを0と1の値の数が同じバランス化符号に変換して、不揮発性半導体メモリ装置に書き込み、それを読み出すことにより、0と1の値の数のバランスの崩れを用いて誤りを検出してもよい。
そして、本発明は、複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置の誤り訂正装置であって、前記ページのそれぞれがユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、ある誤り訂正単位のユーザデータにある誤りを第1の誤り訂正法により訂正するための第1組の冗長ビットを当該誤り訂正単位に記憶する第1の冗長ビット書き込み手段と、前記誤り訂正単位のユーザデータに比較的に多くの誤りが存在している場合には、当該誤り訂正単位にある誤りを第2の誤り訂正法により訂正するための第2組の冗長ビットを、当該誤り訂正単位と当該誤り訂正単位の属するページより誤りの少ない別のページに属する誤り訂正単位とに分散させて書き込む第2の冗長ビット書き込み手段と、前記ある誤り訂正単位にある誤りビットを前記第1組の冗長ビットを用いて訂正する第1の誤り訂正実行手段と、前記第1の誤り訂正実行手段により前記誤り訂正単位のユーザデータにある誤りが訂正されたか否かを判断する訂正後状態判断手段と、前記訂正後状態判断手段により、誤りが訂正されていないと判断された場合には、前記第2組の冗長ビットを用いて当該誤り訂正単位にある誤りビットを訂正する第2の誤り訂正実行手段とを備えた誤り訂正装置を提供する。
ここで、前記誤り訂正単位にある誤りビットを検出する誤り検出手段と、前記誤り検出手段により検出された誤りビットが前記第1の誤り訂正実行手段により訂正可能であるか否かを判断する訂正方法判断手段とをさらに備えていてもよく、前記訂正方法判断手段により訂正可能と判断された場合には、前記第1の誤り訂正実行手段が誤り訂正を実行し、さもなければ、前記第2の誤り訂正実行手段が誤り訂正を実行することができる。
また、前記誤り検出手段が、ユーザデータと冗長ビットを0と1の値の数が同じバランス化符号に変換して、不揮発性半導体メモリ装置に書き込み、それを読み出すことにより、0と1の値の数のバランスの崩れを用いて誤りの数を検出してもよい。
本発明は、さらに、比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置であって、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、比較的に誤りの多いページに属する誤り訂正単位にある誤りを訂正するための第2組の冗長ビットの少なくとも一部を記憶するための第2冗長領域とを含む、不揮発性半導体メモリ装置を提供する。
ここで、訂正を行う対象である比較的に誤りの多いページの誤り訂正単位と、その訂正に用いる冗長ビットの保存先は、一定のルールに基づいて関係付けておくことが出来る。例えば、一定数のページをおいて離れたページ(比較的に誤りの少ないページ)内の対応する位置にある誤り訂正単位に含めた冗長ビットを用いるといったようにである。このような関係性は任意であり、特定の例に限定されるものではない。
本発明は、また、比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、比較的に誤りが多いページに属するある誤り訂正単位の誤りを訂正するための第2組の冗長ビットを記憶するための第2冗長領域とを含み、比較的に誤りの少ないページに属する誤り訂正単位のユーザデータ領域に対してはその誤り訂正領域内にある前記第1組の冗長ビットにより誤り訂正を行う第1の訂正ステップと、比較的に誤りの多いページに属する誤り訂正単位のユーザデータ領域については、そのユーザデータ領域を分割して、分割されたユーザデータ領域のそれぞれに対して、前記第2冗長領域の冗長ビット又は比較的に誤りの多いページの当該誤り訂正単位の冗長ビットの全部又は一部あるいはそれらの両方を適用して誤り訂正を行う第2の訂正ステップとを含む不揮発性半導体メモリ装置の誤り訂正方法を提供する。
さらに別の実施の形態として、本発明は、比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、比較的に誤りが多いページのある誤り訂正単位の誤りを訂正するための第2組の冗長ビットを記憶するための第2冗長領域とを含み、1以上の比較的に誤りの多いページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための少なくとも一組の冗長ビットを記憶しており、比較的に誤りが多いページにある誤り訂正単位のユーザデータ領域に対してその誤り訂正単位内にある前記一組の冗長ビットにより誤り訂正を行う第1の訂正ステップと、前記第1の訂正ステップにより当該誤り訂正単位にあるユーザデータの誤りが訂正されたか否かを判断する訂正後状態判断ステップと、前記訂正後状態判断ステップにより、誤りが訂正されていないと判断された場合には、その誤り訂正単位のユーザデータ領域を分割して、分割されたユーザデータのそれぞれに対して、前記第2冗長領域の冗長ビット又は比較的に誤りの多いページの当該誤り訂正単位にある前記一組の冗長ビット以外の冗長ビットの全部又は一部あるいはそれらの両方を適用して誤り訂正を行うステップとを含む不揮発性半導体メモリ装置の誤り訂正方法を提供する。
さらに、本発明は、比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、比較的に誤りの多いページにある1以上の誤り訂正単位のユーザデータ領域内にある特定領域が設定されており、1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、比較的に誤りが多いページに属するある誤り訂正単位内の前記特定領域の誤りを訂正するための第2組の冗長ビットを記憶するための第2冗長領域とを含み、1以上の比較的に誤りの多いページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための少なくとも一組の冗長ビットを記憶しており、比較的誤りが多いページにある誤り訂正単位のユーザデータ領域に対してその誤り訂正単位内にある前記一組の冗長ビットにより誤り訂正を行う第1の訂正ステップと、前記第1の訂正ステップにより前記誤り訂正単位にあるユーザデータの誤りが訂正されたか否かを判断する訂正後状態判断ステップと、前記訂正後状態判断ステップにより、誤りが訂正されていないと判断された場合には、前記特定領域に対して、前記第2組の冗長ビットを適用して誤り訂正を行うステップと、訂正された前記特定領域のデータによって前記特定領域内のデータを置換した後、置換されたデータを含むユーザデータ領域に対して当該誤り訂正単位にある前記一組の冗長ビットにより訂正を行うステップとを含む不揮発性半導体メモリ装置の誤り訂正方法を提供する。
図1〜図3を通して説明したビット誤りの発生状況の傾向に鑑みて、誤りビットが多いページに用いる誤り訂正の訂正能力と、誤りが少ないページに用いる誤り訂正の訂正能力を変更することが好ましい。具体的には、上述した図16の例では訂正能力を24ビットとした場合を例示したが、訂正能力を高めることを考えてみる。例えば、訂正能力を24ビットから60ビットに高めるとすると、それに伴って誤り訂正回路の複雑さも増加してしまう。そこで、20ビットの訂正能力を持つ誤り訂正と41ビットの訂正能力を持つ誤り訂正とを用いて、誤り訂正回路の複雑さが余り増大しないようにすることを考えてみる。ここで、説明のために20ビット、41ビット、60ビットといった訂正能力の数値を例示して説明するが、本発明はこれらの数値に拘束されるものではもちろんない。
ここで、第1の誤り訂正は、1キロバイトのユーザデータに対して、20ビットの訂正能力を有する誤り訂正であり、比較的に誤りが少ないページ(good page)に対して適用する。そして、第2の誤り訂正は、1キロバイトのユーザデータを2つに分割した512バイトのユーザデータに対して、41ビットの訂正能力を有する誤り訂正符号であり、比較的に誤りの多いページ(bad page)に適用する。誤り訂正方式の例としてBCHを使用する。前者をBCH(20,1024)、後者をBCH(41,512)と記すことにする。つまり、BCH(A,B)は、Aビットの訂正能力を有するBCH法をBバイトのユーザデータに適用することを表す。BCH(41,512)は、BCH(20,1024)の4倍以上の訂正能力を持っている。
そして、図4に、BCH(20,1024)とBCH(41,512)とを用いて誤り訂正を行うためのページの領域の使用を示している。仮に、誤り訂正単位210は誤りビットの個数が少ないページ(good page)内の一領域であり、誤り訂正単位220は誤りビットの個数が多いページ(bad page)内の一領域であるとする。誤り訂正単位210は、サイズが1キロバイトであるユーザデータ領域211と、20ビット訂正の第1の冗長領域212と、41ビット訂正の第2の冗長領域213とから構成されている。誤り訂正単位220も、誤り訂正単位210と同様の構成であり、ユーザデータ領域221と、第1の冗長領域222と、第2の冗長領域223とから構成されている。なお、誤り訂正単位210と220は、ある1つのブロックに存在している領域である。両者は互いに隣接したページにあることが考えられるが、必ずしも隣接している必要はなく、1ページあるいは複数のページを間に挟んで位置していてもよい。このような誤りビット数が多いページとそのページの訂正に使う冗長ビットを保存する比較的に誤りビット数の少ないページとの間の関係は一定のルールによって決定されるものであればよく、どのようなルールであるかは任意である。
誤り訂正単位210において、第1の冗長領域212は、ユーザデータ領域211の誤りを訂正するための第1の誤り訂正、すなわちBCH(20,1024)に使用する第1組の冗長ビットを記憶する領域である。第2の冗長領域213は、誤りの多いページにあるユーザデータ領域221の前半のユーザデータ領域221A(512バイト)の誤りを訂正するための第2の誤り訂正、すなわちBCH(41,512)に使用する第2組の冗長ビットを記憶する領域である。
また、誤り訂正単位220において、第1の冗長領域222は、ユーザデータ領域221の誤りを訂正するための第1の誤り訂正、すなわちBCH(20,1024)に使用する第1組の冗長ビットを記憶する領域である。そして、第2の冗長領域223は、誤り訂正単位220内のユーザデータ領域221の後半であるユーザデータ領域221Bの誤りを訂正するための第2の誤り訂正、すなわちBCH(41,512)に使用する第2組の冗長ビットを記憶する領域である。つまり、誤りの多い誤り訂正単位220内のユーザデータ領域221にある誤りを訂正するための第2組の冗長ビットは、第2の冗長領域213と223に分散して記憶されている。
このようにすることにより、誤りの多い1キロバイトのユーザデータ領域221に対して、第2の冗長領域213と223からなる冗長領域を確保することができる。つまり、ユーザデータ領域221を構成している領域221Aと221Bのそれぞれ(いずれも512バイト)に対して41ビット訂正の第2の冗長領域を確保することができる。加えて、従来技術においては浪費されていた冗長領域212あるいは213を無駄なく有効に利用することができる。つまり、60ビット訂正の冗長ビットをすべてのページに適用するのではなく、通常は20ビット訂正の冗長ビットを適用し、誤りの多いページに対しては、そのページのユーザデータ領域を分割したうえで、例えば、二つの分割されたユーザデータ領域のそれぞれに対して41ビット訂正の冗長ビットを用いて誤り訂正を行う。これにより、誤り訂正に必要な回路の大きさを60ビット用回路から41ビット用回路へと大幅に抑えることができる。
また、同様に、図5に示すように、比較的に誤りの少ないページ内の誤り訂正単位310と比較的に誤りの多いページ内の誤り訂正単位320を考えたとき、比較的に誤りの少ないページの誤り訂正単位310にある1キロバイトのユーザデータ領域311のためにBCH(20,1024)を使って訂正する。そこで、そのための冗長領域312を設けておく。上に定義したように、この冗長領域312は、20ビットの訂正能力を与えるものである。そして、比較的に誤りの多いページの誤り訂正単位320のためにはBCH(20,512)を使って、誤り訂正単位320のユーザデータの半分321Aと残りの半分321Bとのそれぞれに対してBCH(20,512)の訂正を施すことが考えられる。その場合には、ユーザデータ領域の半分の領域321Aの訂正ために、BCH(20,512)用の冗長ビットを2分割して、領域313と領域323として、それぞれ、誤り訂正単位310と誤り訂正単位320の中に分けて保存することが出来る。そして、ユーザデータ領域の残り半分の領域321Bのためには、領域312に対応する領域322にBCH(20,512)のための冗長ビットを保存することが出来る。ここで、領域321Aに対する誤り訂正を行う際には、領域313と領域323とに分割されて保存されていた冗長ビットを組み合わせて訂正を実行することとなる。この場合には、20ビット訂正用の回路しか必要としないこととなる。
さらに、図6に示すように、比較的に誤りの少ないページ内の誤り訂正単位350、360と、比較的に誤りの多いページ内の誤り訂正単位370とを考える。比較的に誤りの少ないページの誤り訂正単位350にある1キロバイトのユーザデータ領域351はBCH(20,1024)を使って訂正するので、そのための冗長領域353を設ける。誤り訂正単位360についても同様である。これらの冗長領域352と362は、それぞれ20ビットの訂正能力を与えるものである。そして、比較的に誤りの多いページ内の誤り訂正単位370のユーザデータ領域371は、0.5キロバイトずつに2分割して、それぞれ領域371Aと領域371Bとする。そして、ユーザデータ領域371Aの訂正に用いるBCH(41,512)のための冗長ビットは、比較的に誤りの少ないページ内の誤り訂正単位350と360とに分割して含める。ユーザデータ371Bの訂正に用いる冗長ビットは、比較的に誤りの多いページの誤り訂正単位370内の領域372に含めることが出来る。
このように、ユーザデータ訂正用の冗長ビットの少なくとも一部は、比較的に誤りの多いページ内の誤り訂正単位の外、すなわち比較的に誤りの少ないページ内の誤り訂正単位に、分散して配置することが出来る。そして、その分散の仕方は全く任意であり、一定のルールに従っていれば、どのように配置することも可能である。図4〜図6の例においては、比較的に誤りの多いページ内のユーザデータ領域を2分割して、等しいサイズの2つの領域を作ったが、これは一例に過ぎず、2:3や3:4など任意の割合に分割することが出来る。また下記の例にあるように、4分割またはそれ以上の分割、3分割などの奇数の領域数への分割も可能である。
図7は、本発明の実施の形態に係るSSD(Solid State Drive)1を概略的に示したブロック図である。SSD1はホスト装置4に接続されており、ホスト装置4の外部メモリとして機能する。SSD1は、不揮発性メモリとしてのNANDフラッシュメモリ(以下、NANDメモリと略す)2と、ホスト装置4の指示に応じて、NANDメモリ2に対してデータの読み込み及び書き込みを行うNANDコントローラ3とを備えている。NANDメモリ2の記憶領域は、上述したように、一定のサイズの複数のブロックから構成されており、各ブロックは一定のサイズの複数のページから構成されている。本実施の形態では、不揮発性メモリとしてNANDメモリを使用しているが、それに限定されるものではない。
図7において、NANDコントローラ3は、ホスト装置4とのインターフェース処理を行うホストインターフェース6と、NANDメモリ2とのインターフェース処理を行い、データの読み込み及び書き込みを制御するNANDインターフェース5と、NANDメモリ2に書き込むデータに対して、誤り訂正符号を生成する誤り訂正符号部7と、NANDメモリ2から読み出されたデータに対して、誤り検出および誤り訂正を行う誤り訂正復号部8とを備えている。
図8に示すように、誤り訂正符号部7は、ホスト装置4からのユーザデータを受け付けるユーザデータ受付手段71と、これから書き込むNANDメモリのページが誤りの多いページかそうでないページかを判断する誤り数判定手段73と、第1の冗長ビット生成手段75と、第2の冗長ビット生成手段77と、ページデータ生成手段79とを備えている。第1の冗長ビット生成手段75は、NANDメモリ2のユーザデータに対して、上述した誤り訂正単位210で、その誤り訂正を行うための第1組の冗長ビットを生成する。この第1組の冗長ビットは、第1の誤り訂正、例えばBCH(20,1024)に用いる冗長ビットである。第2の冗長ビット生成手段77はその誤り訂正単位が誤りの多いページに書き込まれる場合に、NANDメモリ2のユーザデータに対して、上述した誤り訂正単位220で、その誤り訂正を行うための第2組の冗長ビットを生成する。この第2組の冗長ビットは、第2の誤り訂正、例えばBCH(41,512)に用いる冗長ビットである。ここで、これから書き込むページが誤り数の多いページか否かは、すでに行ったテストの結果を記憶させておいて判断することもできるし、過去の書き込み及び読み出しの結果を記憶して判定を行うものであってもよい。この場合には、誤りの数があまり多くないページに対しても積極的に第2の冗長領域の付与を行うことにより、経時的な誤り率の悪化などに対してもよりフレキシブルに対応できるようにすることができる。
ページデータ生成手段79は、ホスト装置4から受け取ったユーザデータを所定のサイズ(例えば1キロバイト)に分割して、図4に示したユーザデータ領域211に書き込むためのユーザデータを生成し、このユーザデータと、第1の冗長ビット生成手段75により生成された第1組の冗長ビットと、第2の冗長ビット生成手段77により生成された第2組の冗長ビットとを組み合わせて誤り訂正単位210のデータを作成する。さらに、ページデータ生成手段79は、ホスト装置4から受け取ったユーザデータを所定のサイズ(例えば512バイト)に分割して、図4に示したユーザデータ領域221A及び221Bに書き込むためのユーザデータを作成し、これら2つのユーザデータと、第1の冗長ビット生成手段75により生成された第1組の冗長ビットと、第2の冗長ビット生成手段77により生成された第2組の冗長ビットとを組み合わせて誤り訂正単位220のデータを作成する。このとき、ユーザデータ領域221Aに書き込まれるユーザデータのための第2組の冗長ビットは、誤り訂正単位210のデータの中に含まれ、ユーザデータ領域221Bに書き込まれるユーザデータのための第2組の冗長ビットは、誤り訂正単位220のデータの中に含まれるように、ページデータ生成手段79が誤り訂正単位210及び220のデータを生成する。
図9は、図4のさらに別の変形例を示している。誤り訂正単位410、420、430は、いずれも、誤りの数が少ないページに属する。誤り訂正単位440は、誤りの数が多いページに属する。なお、上述の例と同様、これらの4つの誤り訂正単位の位置関係は、410、420、430と、440とが異なるページに属しているほかは特に問わない。第1の冗長領域412、422、432、442は、それぞれ、ユーザデータ領域411、421、431、441のための第1の誤り訂正に用いる冗長ビットを記憶する領域である。また、誤りの数が多い誤り訂正単位440内のユーザデータ領域441内の領域441A、441B、441C、441D(サイズはいずれも256バイト)のための第2の誤り訂正に用いる冗長ビットは、それぞれ第2の冗長領域413、423、433、443に分散して記憶されている。一例として、上記第1の誤り訂正は、BCH(31,1024)であり、上記第2の誤り訂正は、BCH(29,256)である。BCH(29,256)は、BCH(31,1024)の約3.7倍の訂正能力を持っている。
図10は、図4のさらに別の変形例を示している。誤り訂正単位510、520、530は、いずれも、誤りの数が少ないページに属する。一方で、誤り訂正単位540は、誤りの数が多いページに属する。この誤り訂正単位540内のユーザデータ領域541は、領域541Aと領域541Bの2つの領域(サイズはいずれも512バイト)からなる。なお、上述の例と同様、これらの4つの誤り訂正単位の位置関係は、510、520、530と540とが異なるページに属しているほかは、特に問わない。第1の冗長領域512、522、532、542は、それぞれ、ユーザデータ領域511、521、531、541のための第1の誤り訂正に用いる冗長ビットを記憶する領域である。そして、誤りの数が多い誤り訂正単位540内の領域541Aのための第2の誤り訂正に用いる冗長ビットは、第2の冗長領域533及び543に分散して記憶されている。また、領域541Bのための第2の誤り訂正に用いる冗長ビットは、第2の冗長領域513及び523に分散して記憶されている。一例として、上記第1の誤り訂正は、BCH(31,1024)であり、上記第2の誤り訂正は、BCH(50,512)である。BCH(50,512)は、BCH(31,1024)の約3.2倍の訂正能力を持っている。
図11は、4種類の誤り訂正法、すなわち、BCH(60,1024)とBCH(41,512)とBCH(29,256)とBCH(50,512)の訂正能力を比較したグラフである。横軸は元のユーザデータの誤りの割合を示しており、縦軸は、誤り訂正を行ってもなお訂正できなかった誤りビットの割合を示している。4つの曲線は、それぞれ、BCH(60,1024)、BCH(41,512)、BCH(29,256)、BCH(50,512)を示している。この図からわかるように、4つの方法のいずれも、ユーザデータの誤りの割合が大きくなるにつれて、訂正できなかった誤りの割合も大きくなる。現在、一般的には、許容される誤りの割合として10−13程度が基準となっている。図からわかるように、この基準に照らして、回路規模が小さなBCH(29,256)は回路規模の大きなBCH(60、1024)よりも性能が良い。また、BCH(50,512)は、BCH(60,1024)よりも回路規模が小さいにも関わらず、優れた性能を持っている。
図12は、図4〜図6、図9あるいは図10に示したような、分散させて記憶した冗長ビットを用いて、2組の誤り訂正を適用する場合の誤り訂正のフローチャートである。図13は、図12に示しているフローチャートを実行する誤り訂正復号部8のブロック図である。図13に示しているように、誤り訂正復号部8は、第1の誤り訂正実行手段84と、訂正後状態判断手段86と、第2の誤り訂正実行手段88とを備えている。
まず、ステップS11にて、第1の誤り訂正実行手段84が第1の誤り訂正を用いて誤り訂正を行う。そして、ステップS12にて、訂正後状態判断手段86が訂正できたかどうかの判断を行う。具体的には、復号器の「訂正不能」の信号により判断する。この場合の「訂正できた」という状態は、一例として、41ビット誤り訂正BCHであれば、BCH単位(例えば512KB)における誤りの数が41ビット以下となった状態とする。そして、ステップS12の結果が「Yes」であった場合には、ステップS14にて終了する。あるいは、ステップS12の結果が「No」であった場合には、ステップS13に進み、第2の誤り訂正実行手段88が、より高い訂正能力を持つ第2の誤り訂正を用いて誤り訂正を行う。そして、ステップS14にて終了する。
図12に示したフローにより、図4〜図6、図7あるいは図8に示したデータ構造に基づいて、各誤り訂正単位につき2組の誤り訂正符号を適用して誤り訂正を行うことができる。そのため、誤りが多いページであっても少ないページであっても、誤りを効率的に訂正することができる。しかし、第1の誤り訂正で訂正しきれなかった場合には、第2の誤り訂正を実行するため、1つのページに対して2種類の誤り訂正を行うことに起因してスループットが低下してしまうという欠点もある。
上述の欠点を回避する、2組の誤り訂正を適用して誤り訂正を行うフローチャートを図14に示している。図12と同様のステップには、同様の符号を付している。そして、図15は、図14に示しているフローチャートを実行する誤り訂正復号部8のブロック図である。図13と同様の要素には、同じ符号を付している。図13と異なるのは、誤り訂正復号部8が事前判定手段81を備えている点である。この事前判定手段81は、誤り検出手段82と、訂正方法判断手段83とを備えている。
まず、ステップS1にて誤り検出手段82が誤りを検出する。その詳細は後述する。そして、誤り検出手段82により検出された誤りが第1の誤り訂正により訂正可能かどうかをステップS2で訂正方法判断手段83が判断する。ここでの第1の誤り訂正(ECC1)は、誤り訂正能力が比較的低いBCHにすることが望ましく、例えばBCH(20,1024)とすることが望ましい。そして、ステップS2の判断結果が「Yes」であった場合には、ステップS11に進む。また、ステップS2の判断結果が「No」であった場合には、ステップS13に進む。
図14のフローによれば、ステップS1にて誤り検出手段82が誤りを検出し、検出された誤りを第1の誤り訂正により訂正可能であるとステップS2にて訂正方法判断手段83が判断した場合のみ、第1の誤り訂正実行手段84が第1の誤り訂正を実行する。さもなければ、第2の誤り訂正実行手段88が訂正能力の高い第2の誤り訂正を実行する。つまり、誤り訂正を行う前に、事前判定手段81がステップS1及びS2からなる事前判定を行うため、各ページにつき誤り訂正は1回しか行われないこととなり、スループットの低下という上述の問題を回避することができる。
図14に示したステップS1の誤り検出の具体的な流れについて図16を参照して説明する。符号610は、元のユーザデータのビット列の一部である。このビット列610のビット数が12ビットであるとし、うち5ビットがビット値「1」であり、残りの7ビットがビット値「0」であるとする。このようなビット列610に対して、バランス化処理を適用する。バランス化処理とは、値が「1」のビットの数と、値が「0」のビットの数とを等しくなるように変換することであり、その結果得られる符号をバランス化符号(Balanced Code)。詳細は、非特許文献「Donald E. Knuth, “Efficient Balanced Codes”, IEEE Transactions on Information Theory, IEEE, January, 1986, Vol. IT-32, No. 1, pp. 51-53」に記載されている。具体的には、ビット列610について、パラメータKを決定した上で、最初のKビットを反転させる。ここではK=5として、ビット列610の最初の5ビット「01100」を反転させて「10011」とすることにより、ビット列621を得る。ビット列621においては、ビット値「1」、「0」の数はいずれも6である。このビット列621をバランス化符号と呼ぶ。また、ビット列621の後方には、4ビットのパリティビット622が設けられている。パリティビット622のビット値は、上記パラメータK=5を二進数により表現した「0101」であり、これ自体も「0」と「1」の数が同じバランス化符号である。このようなパリティビットを設けることにより、最初の何ビット分のビット値が反転されたかがわかる。バランス化符号であるビット列621と、同じくバランス化符号であるパリティビット622とからなるビット列620もバランス化符号となっている。このビット列620においては、ビット値「1」、「0」の数はいずれも8である。なお、どのようなビット列についても上記パラメータKが必ず存在することが証明されており、その詳細は上記文献を参照されたい。
図16に示した例では、パラメータKを二進数により表現したパリティビット622がそれ自体バランス化符号であった。しかし、パラメータKの値によっては、パラメータKを二進数により表現したビット列がバランス化符号ではない場合もある。例えば、パラメータK=7である場合に、パラメータKを二進数で表現すると「0111」となる。このビット列「0111」はバランス化符号ではないため、このビット列をそのままパリティビット622とすることはできない。そこで、ビット列「0111」を、バランス化符号である「1010」へと符号化するようなルールを定めておき、このルールをルックアップテーブルとして保存しておくことができる。このようにすることで、パラメータKがどんな値であっても、パラメータKからパリティビットのバランス化符号を導き出すことができる。このルックアップテーブルによる方法は一例であり、パラメータKの二進表現がバランス化符号になればいいのであって、これに限定されるものではない。
ビット列621と622からなるビット列620をあるページに書き込んで、それを読み出した結果をビット列630として示している。このビット列630は、ビット列631と632とからなる。ビット列630においては、値「1」のビットの数は6ビットであり、値「0」のビットの数は10ビットである。つまり、ビット列620及び630について値「1」の数を比較すると、8ビットから6ビットに減少しているため、2つのビットについてプラス誤りが生じたことがわかる。元のユーザデータのビット列の全てに対して、このようなバランス化符号に変換したうえでページへの書き込みを行うことにより、ステップS1に示したような誤り検出を容易に行うことができる。なお、ステップS1における誤りの検出には、バランス化符号を用いるもののほか、従来から知られている検出方法を用いることができる。具体的には、ユーザデータの読み込みの際に、ソフト情報(信頼度情報)を用いて、その信頼度の低いビットの数によって誤りを検出する方法などがある。
なお、ビット列620をページへ書き込む際に、マイナス誤りとプラス誤りが同じ数だけ発生した場合には、書き込み前後でビット値「1」のビット数が変化しないため、誤りを検出することができない。これは、ビット列620及び630における値「1」のビットの数を単純に比較することにより、誤りを検出しているからである。しかし、図2を参照して上述したように、マイナス誤りとプラス誤りが同数発生することは実際にはほぼないため、バランス化符号を用いて容易に誤り検出を行うことができる。
図17は、事前判定手段81がステップS1及びS2からなる事前判定を行った場合と行わなかった場合のスループットの違いを示したグラフである。第1の誤り訂正としてBCH(20,1024)を使用し、第2の誤り訂正としてBCH(41,512)を使用した。横軸は、ユーザデータ領域に書き込まれているユーザデータの誤りの割合を示しており、縦軸はスループットを示している。事前判定を行わなかった場合と、事前判定を行った場合とをそれぞれ示している。この図からわかるように、ユーザデータの誤りビットの割合が大きくなるにつれて、事前判定を行わなかった場合のスループットは著しく低下するのに対し、事前判定を行った場合にはスループットが高いまま安定しており、事実、0.99を下回ることはなかった。
図18は、比較的に誤りの少ないページ内の誤り訂正単位610と比較的に誤りの多いページ内の誤り訂正単位620があったとき、どのような手順で、本願発明の方法を適用することが出来るかを示すもう一つの変形例である。これまでと同様、ユーザデータ領域611と621はそれぞれ1kBであるとする。比較的に誤りの少ないページ内の領域であれば、BCH(20,1024)により訂正可能であるとする。比較的に誤りの多いページ内の領域620であるとユーザデータ領域621をBCH(20,1024)で訂正できない可能性がある。そこで、ユーザデータ領域621内に254バイトの特定領域621Aを設けて、そのための冗長データを比較的に誤りの少ないページ内の領域613に保存する。特定領域621Aは、ユーザデータ領域620の左端又は右端にあってもよいし、図示したように、ユーザデータの中の任意の位置においてもよい。また、この特定領域621Aはユーザデータ領域620内において複数の領域に分割しておくことも出来る。この特定領域621Aの大きさも任意であるが、この特定領域621A内のデータの訂正が成功し、それがユーザデータ領域621全体の訂正の成功に貢献する程度の大きさが求められる。まず、ステップS21で開始すると、第1の誤り訂正法によりユーザデータ領域621の訂正を行う(ステップS22)。ステップS23において、もし訂正が可能であったと判断されれば、訂正が可能であったことを表す信号と復号されたユーザデータを出力して(ステップS24)、終了する(ステップS29)。ステップS23において、もし訂正が出来なかったと判断されれば、第2の誤り訂正法により特定領域621Aのデータを訂正する(ステップS25)。このとき、例えば、BCH(20,256)を用いる。ステップS26において特定領域621Aが訂正できたと判断されれば、ユーザデータ領域621のうち特定領域621Aのデータを復号された訂正済みデータで置換する(ステップS27)。そして、ステップS22の訂正をこの一部置換されたユーザデータ621の出力に対して行う。改めてステップS23において訂正が可能であったかどうかを判断して、訂正可能と判断されれば、ステップS24において訂正可能信号と復号されたデータを出力する(ステップS24)。ステップS23において訂正が出来なかったと判断されると、ステップS25において、特定領域621Aに対して再度第2の誤り訂正法による訂正を行った(この訂正は可能であることは既に分かっている)上で、ステップS26において、第1回目の第2の訂正法による訂正ではないかをチェックする。第1回目の試行でないと判断されれば、ステップS28において訂正不能を表す信号を出力して、終了する(ステップS29)。なお、図18では、特定領域621Aは一つのユーザデータ621内に設けられていたが、それを複数に分割して、2以上のユーザデータ領域に配置することも可能である。この場合には、分割された特定領域を再結合して、その再結合された特定領域に対して第2の訂正法を適用することとなる。
これまでに述べた実施の形態では、誤り訂正を行うにあたってBCH符号を用いている。しかし、BCH符号に限らず、リード・ソロモン符号、低密度パリティ検査符号といった誤り訂正符号を用いることもできる。また、訂正可能なビット数の値も上記の例に限るものでは一切ない。
これまでに述べた実施の形態に関して、1つの誤り訂正単位にある誤りの多寡の基準としては、その誤り訂正単位における誤りの割合や、誤りの数を用いることができる。仮に、誤りの数を基準とする場合には、その誤り訂正単位が属しているブロック内のすべての誤り訂正単位ごとの誤りの数の平均値あるいはその平均値に一定の数を足したものを基準としたり、あるいは、そのブロックにおけるページあるいは誤り訂正単位ごとの誤りの数の最大値と最小値との平均値を基準とすることができる。あるいは、第1組の冗長ビットを用いて訂正できる誤りの数を基準として誤りが多いか少ないかを区別して、第2組の冗長ビットを使用するかを判断することができる。このとき、NANDメモリの経時的な誤り特性の劣化に対応して若干の余裕をみて基準を設定することができる。また、不揮発性メモリの設計段階で適当な値をしきい値として設定して、これを基準に誤りが多い場合と誤りが少ない場合とを区別することも可能である。
1 SSD
2 NANDメモリ
3 NANDコントローラ
4 ホスト装置
5 NANDインターフェース
6 ホストインターフェース
7 誤り訂正符号部
71 ユーザデータ受付手段
73 誤り数判定手段
75 第1の冗長ビット生成手段
77 第2の冗長ビット生成手段
79 ページデータ生成手段
8 誤り訂正復号部
81 事前判定手段
82 誤り検出手段
83 訂正方法判断手段
84 第1の誤り訂正実行手段
86 訂正後状態判断手段
88 第2の誤り訂正実行手段
210,220 誤り訂正単位
211,221 ユーザデータ領域
212,222 第1の冗長領域
213,223 第2の冗長領域
700 領域
701 ユーザデータ領域
702 冗長領域
2 NANDメモリ
3 NANDコントローラ
4 ホスト装置
5 NANDインターフェース
6 ホストインターフェース
7 誤り訂正符号部
71 ユーザデータ受付手段
73 誤り数判定手段
75 第1の冗長ビット生成手段
77 第2の冗長ビット生成手段
79 ページデータ生成手段
8 誤り訂正復号部
81 事前判定手段
82 誤り検出手段
83 訂正方法判断手段
84 第1の誤り訂正実行手段
86 訂正後状態判断手段
88 第2の誤り訂正実行手段
210,220 誤り訂正単位
211,221 ユーザデータ領域
212,222 第1の冗長領域
213,223 第2の冗長領域
700 領域
701 ユーザデータ領域
702 冗長領域
Claims (11)
- 複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置であって、前記ページのそれぞれがユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、
該誤り訂正単位の冗長領域は、
その誤り訂正単位内のユーザデータ領域にある誤りを第1の誤り訂正法により訂正するための第1組の冗長ビットを記憶する第1冗長領域と、
その誤り訂正単位が属するページに比較的に多くの誤りが存在している場合に対応するために、当該誤り訂正単位にある誤りを第2の誤り訂正法により訂正するための第2組の冗長ビットを、当該誤り訂正単位と当該ページよりも誤りの少ない1以上の別のページにある誤り訂正単位とに記憶するための第2冗長領域と
を含む、不揮発性半導体メモリ装置。 - 比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置であって、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、
1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、
その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、
比較的に誤りの多いページに属する誤り訂正単位にある誤りを訂正するための第2組の冗長ビットの少なくとも一部を記憶するための第2冗長領域と
を含む、不揮発性半導体メモリ装置。 - 複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれがユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、
該誤り訂正単位の冗長領域は、
その誤り訂正単位内のユーザデータ領域にある誤りを第1の誤り訂正法により訂正するための第1組の冗長ビットを記憶する第1冗長領域と、
その誤り訂正単位が属するページに比較的に多くの誤りが存在していることが判明している場合に当該誤り訂正単位にある誤りを第2の誤り訂正法により訂正するための第2組の冗長ビットを、当該誤り訂正単位と当該ページよりも誤りの比較的に少ない別のページにある誤り訂正単位とに分散させて記憶するための第2冗長領域と
を含み、
比較的に誤りの少ないページに属する誤り訂正単位のユーザデータに対しては前記第1組の冗長ビットにより誤り訂正を行うステップと、
比較的に誤りの多いページに属する誤り訂正単位のユーザデータについては、そのユーザデータ領域を分割して、分割されたユーザデータ領域のそれぞれに対して、前記第2冗長領域にある冗長ビットを適用して誤り訂正を行うステップと
を含む不揮発性半導体メモリ装置の誤り訂正方法。 - 比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、
1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、
その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、
比較的に誤りが多いページに属するある誤り訂正単位の誤りを訂正するための第2組の冗長ビットを記憶するための第2冗長領域と
を含み、
比較的に誤りの少ないページに属する誤り訂正単位のユーザデータ領域に対してはその誤り訂正領域内にある前記第1組の冗長ビットにより誤り訂正を行う第1の訂正ステップと、
比較的に誤りの多いページに属する誤り訂正単位のユーザデータ領域については、そのユーザデータ領域を分割して、分割されたユーザデータ領域のそれぞれに対して、前記第2冗長領域の冗長ビット又は比較的に誤りの多いページの当該誤り訂正単位の冗長ビットの全部又は一部あるいはそれらの両方を適用して誤り訂正を行う第2の訂正ステップと
を含む不揮発性半導体メモリ装置の誤り訂正方法。 - 比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、
1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、
その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、
比較的に誤りが多いページのある誤り訂正単位の誤りを訂正するための第2組の冗長ビットを記憶するための第2冗長領域と
を含み、
1以上の比較的に誤りの多いページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための少なくとも一組の冗長ビットを記憶しており、
比較的に誤りが多いページにある誤り訂正単位のユーザデータ領域に対してその誤り訂正単位内にある前記一組の冗長ビットにより誤り訂正を行う第1の訂正ステップと、
前記第1の訂正ステップにより当該誤り訂正単位にあるユーザデータの誤りが訂正されたか否かを判断する訂正後状態判断ステップと、
前記訂正後状態判断ステップにより、誤りが訂正されていないと判断された場合には、その誤り訂正単位のユーザデータ領域を分割して、分割されたユーザデータのそれぞれに対して、前記第2冗長領域の冗長ビット又は比較的に誤りの多いページの当該誤り訂正単位にある前記一組の冗長ビット以外の冗長ビットの全部又は一部あるいはそれらの両方を適用して誤り訂正を行うステップと
を含む不揮発性半導体メモリ装置の誤り訂正方法。 - 比較的に誤りの少ないページと比較的に誤りの多いページとからなる複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置において、前記ページのそれぞれが、ユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、
比較的に誤りの多いページにある1以上の誤り訂正単位のユーザデータ領域内にある特定領域が設定されており、
1以上の比較的に誤りの少ないページにある1以上の誤り訂正単位の冗長領域は、
その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための第1組の冗長ビットを記憶する第1冗長領域と、
比較的に誤りが多いページに属するある誤り訂正単位内の前記特定領域の誤りを訂正するための第2組の冗長ビットを記憶するための第2冗長領域と
を含み、
1以上の比較的に誤りの多いページにある1以上の誤り訂正単位の冗長領域は、その誤り訂正単位内のユーザデータ領域にある誤りを訂正するための少なくとも一組の冗長ビットを記憶しており、
比較的誤りが多いページにある誤り訂正単位のユーザデータ領域に対してその誤り訂正単位内にある前記一組の冗長ビットにより誤り訂正を行う第1の訂正ステップと、
前記第1の訂正ステップにより前記誤り訂正単位にあるユーザデータの誤りが訂正されたか否かを判断する訂正後状態判断ステップと、
前記訂正後状態判断ステップにより、誤りが訂正されていないと判断された場合には、前記特定領域に対して、前記第2組の冗長ビットを適用して誤り訂正を行うステップと、
訂正された前記特定領域のデータによって前記特定領域内のデータを置換した後、置換されたデータを含むユーザデータ領域に対して当該誤り訂正単位にある前記一組の冗長ビットにより訂正を行うステップと
を含む不揮発性半導体メモリ装置の誤り訂正方法。 - 前記第1の訂正ステップを行う前に、
前記誤り訂正単位のユーザデータにある誤りの数を検出する誤り検出ステップと、
前記誤り検出ステップにより検出された誤りの数が前記第1の訂正ステップにより訂正可能であるか否かを判断して、訂正可能であれば前記第1の訂正ステップに進み、さもなければ前記第2の訂正ステップに進むステップと
をさらに含む請求項4に記載の誤り訂正方法。 - 前記誤り検出ステップにおいて、ユーザデータと冗長ビットを0と1の値の数が同じバランス化符号に変換して、不揮発性半導体メモリ装置に書き込み、それを読み出すことにより、0と1の値の数のバランスの崩れを用いて誤りを検出する、請求項7に記載の誤り訂正方法。
- 複数のページによって記憶領域が構成されている不揮発性半導体メモリ装置の誤り訂正装置であって、前記ページのそれぞれがユーザデータ領域と冗長領域とを有する1以上の誤り訂正単位を含んでおり、
ある誤り訂正単位のユーザデータにある誤りを第1の誤り訂正法により訂正するための第1組の冗長ビットを当該誤り訂正単位に記憶する第1の冗長ビット書き込み手段と、
前記誤り訂正単位のユーザデータに比較的に多くの誤りが存在している場合には、当該誤り訂正単位にある誤りを第2の誤り訂正法により訂正するための第2組の冗長ビットを、当該誤り訂正単位と当該誤り訂正単位の属するページより誤りの少ない別のページに属する誤り訂正単位とに分散させて書き込む第2の冗長ビット書き込み手段と、
前記ある誤り訂正単位にある誤りビットを前記第1組の冗長ビットを用いて訂正する第1の誤り訂正実行手段と、
前記第1の誤り訂正実行手段により前記誤り訂正単位のユーザデータにある誤りが訂正されたか否かを判断する訂正後状態判断手段と、
前記訂正後状態判断手段により、誤りが訂正されていないと判断された場合には、前記第2組の冗長ビットを用いて当該誤り訂正単位にある誤りビットを訂正する第2の誤り訂正実行手段と
を備えた誤り訂正装置。 - 前記誤り訂正単位にある誤りビットの数を検出する誤り検出手段と、
前記誤り検出手段により検出された誤りビットの数が前記第1の誤り訂正実行手段により訂正可能であるか否かを判断する訂正方法判断手段と
をさらに備えており、
前記訂正方法判断手段により訂正可能と判断された場合には、前記第1の誤り訂正実行手段が誤り訂正を実行し、さもなければ、前記第2の誤り訂正実行手段が誤り訂正を実行する、請求項9に記載の誤り訂正装置。 - 前記誤り検出手段が、ユーザデータと冗長ビットを0と1の値の数が同じバランス化符号に変換して、不揮発性半導体メモリ装置に書き込み、それを読み出すことにより、0と1の値の数のバランスの崩れを用いて誤りの数を検出する、請求項10に記載の誤り訂正装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011217761A JP2012094132A (ja) | 2010-10-01 | 2011-09-30 | 不揮発性半導体メモリ装置とデータ誤り訂正方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010223839 | 2010-10-01 | ||
JP2010223839 | 2010-10-01 | ||
JP2011217761A JP2012094132A (ja) | 2010-10-01 | 2011-09-30 | 不揮発性半導体メモリ装置とデータ誤り訂正方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012094132A true JP2012094132A (ja) | 2012-05-17 |
Family
ID=46387336
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011217761A Pending JP2012094132A (ja) | 2010-10-01 | 2011-09-30 | 不揮発性半導体メモリ装置とデータ誤り訂正方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20120254686A1 (ja) |
JP (1) | JP2012094132A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015141730A1 (ja) * | 2014-03-18 | 2015-09-24 | 株式会社 東芝 | キャッシュメモリ、誤り訂正回路およびプロセッサシステム |
JP2015535640A (ja) * | 2012-12-03 | 2015-12-14 | ウェスタン デジタル テクノロジーズ インコーポレーテッド | ランタイム可変raid保護スキームを有する方法、ソリッドステートドライブコントローラー、及びデータ格納装置 |
JP2016514883A (ja) * | 2013-04-12 | 2016-05-23 | クアルコム,インコーポレイテッド | フラッシュメモリの信頼性および寿命を改善するシステムおよび方法 |
JP2016219092A (ja) * | 2012-03-06 | 2016-12-22 | マイクロン テクノロジー, インク. | 誤り訂正符号の編成を含む装置および方法 |
JP2017058953A (ja) * | 2015-09-16 | 2017-03-23 | 株式会社東芝 | キャッシュメモリシステム |
JP2019194841A (ja) * | 2018-04-09 | 2019-11-07 | インテル・コーポレーション | 片側ソフト読み出し |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9098399B2 (en) | 2011-08-31 | 2015-08-04 | SMART Storage Systems, Inc. | Electronic system with storage management mechanism and method of operation thereof |
US9063844B2 (en) | 2011-09-02 | 2015-06-23 | SMART Storage Systems, Inc. | Non-volatile memory management system with time measure mechanism and method of operation thereof |
US9239781B2 (en) | 2012-02-07 | 2016-01-19 | SMART Storage Systems, Inc. | Storage control system with erase block mechanism and method of operation thereof |
KR102002925B1 (ko) * | 2012-11-01 | 2019-07-23 | 삼성전자주식회사 | 메모리 모듈, 그것을 포함하는 메모리 시스템, 그것의 구동 방법 |
US9671962B2 (en) | 2012-11-30 | 2017-06-06 | Sandisk Technologies Llc | Storage control system with data management mechanism of parity and method of operation thereof |
US9123445B2 (en) | 2013-01-22 | 2015-09-01 | SMART Storage Systems, Inc. | Storage control system with data management mechanism and method of operation thereof |
US9214965B2 (en) | 2013-02-20 | 2015-12-15 | Sandisk Enterprise Ip Llc | Method and system for improving data integrity in non-volatile storage |
US9329928B2 (en) | 2013-02-20 | 2016-05-03 | Sandisk Enterprise IP LLC. | Bandwidth optimization in a non-volatile memory system |
US9183137B2 (en) | 2013-02-27 | 2015-11-10 | SMART Storage Systems, Inc. | Storage control system with data management mechanism and method of operation thereof |
US10049037B2 (en) | 2013-04-05 | 2018-08-14 | Sandisk Enterprise Ip Llc | Data management in a storage system |
US9170941B2 (en) | 2013-04-05 | 2015-10-27 | Sandisk Enterprises IP LLC | Data hardening in a storage system |
US9543025B2 (en) | 2013-04-11 | 2017-01-10 | Sandisk Technologies Llc | Storage control system with power-off time estimation mechanism and method of operation thereof |
US10546648B2 (en) | 2013-04-12 | 2020-01-28 | Sandisk Technologies Llc | Storage control system with data management mechanism and method of operation thereof |
US9136015B2 (en) | 2013-04-24 | 2015-09-15 | Apple Inc. | Threshold adjustment using data value balancing in analog memory device |
US9244519B1 (en) | 2013-06-25 | 2016-01-26 | Smart Storage Systems. Inc. | Storage system with data transfer rate adjustment for power throttling |
US9367353B1 (en) | 2013-06-25 | 2016-06-14 | Sandisk Technologies Inc. | Storage control system with power throttling mechanism and method of operation thereof |
US9146850B2 (en) | 2013-08-01 | 2015-09-29 | SMART Storage Systems, Inc. | Data storage system with dynamic read threshold mechanism and method of operation thereof |
US9361222B2 (en) | 2013-08-07 | 2016-06-07 | SMART Storage Systems, Inc. | Electronic system with storage drive life estimation mechanism and method of operation thereof |
US9431113B2 (en) | 2013-08-07 | 2016-08-30 | Sandisk Technologies Llc | Data storage system with dynamic erase block grouping mechanism and method of operation thereof |
US9448946B2 (en) | 2013-08-07 | 2016-09-20 | Sandisk Technologies Llc | Data storage system with stale data mechanism and method of operation thereof |
US9152555B2 (en) | 2013-11-15 | 2015-10-06 | Sandisk Enterprise IP LLC. | Data management with modular erase in a data storage system |
US9323602B2 (en) | 2014-01-20 | 2016-04-26 | Freescale Semiconductor, Inc. | Error correction with extended CAM |
US9396064B2 (en) * | 2014-04-30 | 2016-07-19 | Freescale Semiconductor, Inc. | Error correction with secondary memory |
JP2019121129A (ja) | 2017-12-28 | 2019-07-22 | 株式会社日立製作所 | 不揮発性メモリモジュール |
TWI650763B (zh) * | 2018-05-14 | 2019-02-11 | 慧榮科技股份有限公司 | 用來進行記憶裝置的頁可用性管理之方法、記憶裝置及電子裝置以及頁可用性管理系統 |
US10756849B2 (en) | 2019-01-21 | 2020-08-25 | Apple Inc. | Self referenced single-ended chip to chip communication |
KR20210004135A (ko) * | 2019-07-03 | 2021-01-13 | 에스케이하이닉스 주식회사 | 패일 정보 제어회로, 이를 포함하는 반도체 장치 및 반도체 장치의 패일 정보 제어방법 |
JP7408449B2 (ja) | 2020-03-23 | 2024-01-05 | キオクシア株式会社 | 記憶装置及び記憶方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004152300A (ja) * | 2002-10-28 | 2004-05-27 | Sandisk Corp | 不揮発性メモリシステムにおけるデータの完全性を管理する方法および装置 |
US20080168319A1 (en) * | 2007-01-08 | 2008-07-10 | Samsung Electronics Co., Ltd. | Flash memory Device Error Correction Code Controllers and Related Methods and Memory Systems |
JP2008192054A (ja) * | 2007-02-07 | 2008-08-21 | Megachips Lsi Solutions Inc | 半導体メモリシステム |
WO2009072014A1 (en) * | 2007-12-06 | 2009-06-11 | Sandisk Il Ltd. | Correction of errors in a memory array |
JP2009282923A (ja) * | 2008-05-26 | 2009-12-03 | Toshiba Corp | 半導体記憶装置及び不揮発性メモリ |
US20100162083A1 (en) * | 2008-12-22 | 2010-06-24 | Industrial Technology Research Institute | Flash memory controller, error correction code controller therein, and the methods and systems thereof |
JP2010152989A (ja) * | 2008-12-25 | 2010-07-08 | Toshiba Corp | 不揮発性半導体記憶装置 |
JP2010526365A (ja) * | 2007-05-02 | 2010-07-29 | サムスン エレクトロニクス カンパニー リミテッド | エラー制御コード装置およびその方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7810017B2 (en) * | 2006-03-20 | 2010-10-05 | Micron Technology, Inc. | Variable sector-count ECC |
US7739576B2 (en) * | 2006-08-31 | 2010-06-15 | Micron Technology, Inc. | Variable strength ECC |
US8627167B1 (en) * | 2007-01-08 | 2014-01-07 | Marvell International Ltd. | Methods and apparatus for providing multi-layered coding for memory devices |
-
2011
- 2011-09-30 JP JP2011217761A patent/JP2012094132A/ja active Pending
- 2011-09-30 US US13/249,751 patent/US20120254686A1/en not_active Abandoned
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004152300A (ja) * | 2002-10-28 | 2004-05-27 | Sandisk Corp | 不揮発性メモリシステムにおけるデータの完全性を管理する方法および装置 |
US20080168319A1 (en) * | 2007-01-08 | 2008-07-10 | Samsung Electronics Co., Ltd. | Flash memory Device Error Correction Code Controllers and Related Methods and Memory Systems |
JP2008192054A (ja) * | 2007-02-07 | 2008-08-21 | Megachips Lsi Solutions Inc | 半導体メモリシステム |
JP2010526365A (ja) * | 2007-05-02 | 2010-07-29 | サムスン エレクトロニクス カンパニー リミテッド | エラー制御コード装置およびその方法 |
WO2009072014A1 (en) * | 2007-12-06 | 2009-06-11 | Sandisk Il Ltd. | Correction of errors in a memory array |
JP2009282923A (ja) * | 2008-05-26 | 2009-12-03 | Toshiba Corp | 半導体記憶装置及び不揮発性メモリ |
US20100162083A1 (en) * | 2008-12-22 | 2010-06-24 | Industrial Technology Research Institute | Flash memory controller, error correction code controller therein, and the methods and systems thereof |
JP2010152989A (ja) * | 2008-12-25 | 2010-07-08 | Toshiba Corp | 不揮発性半導体記憶装置 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016219092A (ja) * | 2012-03-06 | 2016-12-22 | マイクロン テクノロジー, インク. | 誤り訂正符号の編成を含む装置および方法 |
US9983928B2 (en) | 2012-03-06 | 2018-05-29 | Micron Technology, Inc. | Apparatuses and methods including error correction code organization |
JP2015535640A (ja) * | 2012-12-03 | 2015-12-14 | ウェスタン デジタル テクノロジーズ インコーポレーテッド | ランタイム可変raid保護スキームを有する方法、ソリッドステートドライブコントローラー、及びデータ格納装置 |
JP2016514883A (ja) * | 2013-04-12 | 2016-05-23 | クアルコム,インコーポレイテッド | フラッシュメモリの信頼性および寿命を改善するシステムおよび方法 |
US9778861B2 (en) | 2013-04-12 | 2017-10-03 | Qualcomm Incorporated | Systems and methods to improve the reliability and lifespan of flash memory |
WO2015141730A1 (ja) * | 2014-03-18 | 2015-09-24 | 株式会社 東芝 | キャッシュメモリ、誤り訂正回路およびプロセッサシステム |
US10120750B2 (en) | 2014-03-18 | 2018-11-06 | Kabushiki Kaisha Toshiba | Cache memory, error correction circuitry, and processor system |
JP2017058953A (ja) * | 2015-09-16 | 2017-03-23 | 株式会社東芝 | キャッシュメモリシステム |
US10360100B2 (en) | 2015-09-16 | 2019-07-23 | Kabushiki Kaisha Toshiba | Cache memory system and processor system |
JP2019194841A (ja) * | 2018-04-09 | 2019-11-07 | インテル・コーポレーション | 片側ソフト読み出し |
JP7321717B2 (ja) | 2018-04-09 | 2023-08-07 | タホ リサーチ リミテッド | 片側ソフト読み出し |
Also Published As
Publication number | Publication date |
---|---|
US20120254686A1 (en) | 2012-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2012094132A (ja) | 不揮発性半導体メモリ装置とデータ誤り訂正方法 | |
US10135465B2 (en) | Error correction methods and apparatuses using first and second decoders | |
US8769374B2 (en) | Multi-write endurance and error control coding of non-volatile memories | |
CN104657231B (zh) | 在存储器设备处的控制数据的错误校正的系统和方法 | |
JP6960877B2 (ja) | メモリシステム | |
US8458568B2 (en) | Systems and methods for memory devices | |
KR101570472B1 (ko) | 연접 부호화 및 복호화 구조를 갖는 데이터 처리 시스템 | |
CN102024501A (zh) | 存储器系统以及对存储器系统的控制方法 | |
JP2010237822A (ja) | メモリコントローラおよび半導体記憶装置 | |
US11768732B2 (en) | Soft decoding method using LLR conversion table | |
US9032278B2 (en) | Method for performing data shaping, and associated memory device and controller thereof | |
TW200846898A (en) | Method for writing data in flash memory and error correction coding/decoding method thereof | |
US20090055706A1 (en) | Method and apparatus for flash memory error correction | |
US10009045B2 (en) | Decoding method, memory controlling circuit unit and memory storage device | |
US9548761B2 (en) | Coding and decoding of error correcting codes | |
CN110716824B (zh) | 编码方法及使用所述编码方法的存储器存储装置 | |
US20170161141A1 (en) | Method and apparatus for correcting data in multiple ecc blocks of raid memory | |
WO2023020114A1 (zh) | 一种数据处理方法及装置 | |
CN114078560B (zh) | Nand闪存芯片的纠错译码方法、存储介质及ssd设备 | |
JPH1173797A (ja) | 記憶装置 | |
US11689219B1 (en) | Method and system for error correction in memory devices using irregular error correction code components | |
US12009840B2 (en) | Systems and methods of decoding error correction code of a memory device with dynamic bit error estimation | |
TWI836877B (zh) | 讀取電壓校正方法、記憶體儲存裝置及記憶體控制電路單元 | |
US8739003B1 (en) | Method and apparatus for decoding a data sector including user data and non-user data | |
US11204831B2 (en) | Memory system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140731 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150309 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150407 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20150731 |