JP2013152737A - 固体メモリデバイスにおけるデータ復帰 - Google Patents

固体メモリデバイスにおけるデータ復帰 Download PDF

Info

Publication number
JP2013152737A
JP2013152737A JP2013058608A JP2013058608A JP2013152737A JP 2013152737 A JP2013152737 A JP 2013152737A JP 2013058608 A JP2013058608 A JP 2013058608A JP 2013058608 A JP2013058608 A JP 2013058608A JP 2013152737 A JP2013152737 A JP 2013152737A
Authority
JP
Japan
Prior art keywords
data
cell
read
reference signal
decoding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013058608A
Other languages
English (en)
Other versions
JP5582372B2 (ja
Inventor
Xueshi Yang
ヤン、シュエシ
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.)
Marvell World Trade Ltd
Original Assignee
Marvell World Trade Ltd
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 Marvell World Trade Ltd filed Critical Marvell World Trade Ltd
Publication of JP2013152737A publication Critical patent/JP2013152737A/ja
Application granted granted Critical
Publication of JP5582372B2 publication Critical patent/JP5582372B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5642Sensing or reading circuits; Data output circuits
    • 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
    • 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
    • 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/1515Reed-Solomon 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/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/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/373Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3746Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • H03M13/451Soft decoding, i.e. using symbol reliability information using a set of candidate code words, e.g. ordered statistics decoding [OSD]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • H03M13/458Soft decoding, i.e. using symbol reliability information by updating bit probabilities or hard decisions in an iterative fashion for convergence to a final decoding result
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • 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/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/154Error and erasure correction, e.g. by using the error and erasure locator or Forney polynomial

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Storage Device Security (AREA)

Abstract

【課題】固体メモリデバイスのデータ復帰技術および構成を提供する。
【解決手段】固体メモリデバイスのセルに関するハード誤りを特定する段階110と、特定されたハード誤りを有するセルの位置を、セルに元々プログラミングされていたデータを復帰させる復号器に提供する段階112と、復号器を利用して、セルに元々プログラミングされていたデータを復帰させる段階114と、を備える。また、固体メモリデバイスのセルに格納されているデータを、データの読み出しに通常利用される参照信号とは異なる、修正された参照信号を利用して読み出す段階と、セルから読み出されたデータに基づいて、セルから読み出されたデータの少なくとも1つの値が消失用にマークされる消失フラグを形成する段階と、消失フラグを利用して、セルから読み出されたデータを復号する段階と、を備える。
【選択図】図1

Description

本願は、2008年7月17日出願の米国仮特許出願番号第61/081,546、2008年8月13日出願の米国仮特許出願番号第61/088,514、および2008年11月26日出願の米国仮特許出願番号第61/118,152の優先権を主張しており、これらの内容の全体をここに、本明細書と矛盾しない限りにおいて、全ての目的で参照として組み込む。
本発明の実施形態は、概して、メモリデバイスに係り、より詳しくは、固体メモリデバイスにおけるデータ復帰技術に係る。
フラッシュメモリ等の固体メモリにおいては、データは通常、電荷トラップまたはセルの分離領域を利用してセルアレイに格納される。例えばセルは、シングルレベルセル(SLC)デバイスのセル毎に1ビットの情報を格納してよい、または、マルチレベルセル(MLC)デバイスであればセル毎に1を超えるビットを格納してよい。セルで計測された閾値電圧は、そのセルに格納されているデータの値に概ね対応する。
例えばセル材料の消耗および電荷リークを含む多様な理由により、固体メモリのデータロスが生じうる。このようなデータロスがセルの劣化によるものである場合、閾値電圧にシフトが起こる場合があり、劣化したセルではデータ読み出し誤りが発生する。セルの信号を単に再読み出しまたは再送信しても、劣化したセルで同じ誤りが生じることとなり、データは復帰されない。同様に、劣化したセルを消失または再度プログラミングすることによっても、同じ誤りが生じることが多い。
データ密度が増加するにつれて、固体メモリデバイスは、データインテグリティ保護のために誤り訂正符号(ECC)に頼るようになっている。誤り訂正符号(ECC)復号誤りの場合には、劣化したセルを単に再読み出しまたは再試行しても、一回の読み出し処理と大して変わらない結果になることが多い。再読み出しを行いその後でECC復号を行う処理を多数回繰り返しても、例えば復号の失敗が書き込み誤りに起因している場合などは、効果がないことがある。
様々な実施形態で、本開示は、固体メモリデバイスのセルに関するハード誤りを特定する段階と、特定されたハード誤りを有するセルの位置を、セルに元々プログラミングされていたデータを復帰させる復号器に提供する段階と、復号器を利用して、セルに元々プログラミングされていたデータを復帰させる段階と、を備える方法を提供する。
様々な実施形態で、本開示は、固体メモリデバイスのセルに格納されているデータを、データの読み出しに通常利用される参照信号とは異なる、修正された参照信号を利用して読み出す段階と、セルから読み出されたデータに基づいて、セルから読み出されたデータの少なくとも1つの値が消失用にマークされる消失フラグを形成する段階と、消失フラグを利用して、セルから読み出されたデータを復号する段階と、を備える方法を提供する。
本発明の実施形態は、以下の詳細な記載を、添付図面とともに読むことで容易に理解されよう。記載を容易にする目的から、同様の参照番号は同様の構造部材を表す。本発明の実施形態は、例示により示されており、添付図面で限定を加えるものではない。
固体メモリデバイスにおけるデータ復帰方法のフロー図である。
固体メモリデバイスにおけるハード誤りを特定する方法のフロー図である。
修正された参照信号および消失復号を利用して調節された再読み出し方法のフロー図である。
マルチレベルセルのメモリデバイスの閾値電圧分布および参照信号の例示的なプロットの概略を示す。
修正された参照信号の概略を示す。
例示的な消失フラグベクトルの概略を示す。
ここで記載する固体メモリデバイス技術を実装する例示的な電子システムの概略を示す。
本発明の実施形態は、固体メモリデバイスにおける改良されたデータ復帰に関する、および、固体メモリデバイスに基づくデータ記憶システムに関する技術および構成を記載する。以下の詳細な記載においては、この一部を形成する添付図面について言及するが、図面全体にわたり、同様の参照番号は同様の部材を示し、本発明を実施可能な例示的な実施形態が示されている。なお、本発明の範囲を逸脱しないで他の実施形態の利用が可能であり、および構造的または論理的変更も可能である。故に、以下の詳細な記載は、限定的に捉えられるべきものではなく、本発明の実施形態の範囲は、添付請求項およびその均等物により定義される。
記載には「1実施形態において」または「実施形態において」等の言い回しが利用されているが、それぞれ同じまたは異なる実施形態の1以上について言及している場合がある。「幾らかの実施形態において」等の言い回しも繰り返し用いられている。この言い回しは、通常は同じ実施形態については言及していないが、その場合もある。「含む(comprising)」「有する(having)」「含む(including)」等の用語は、そうではないことが文脈から明らかである場合以外は、同義語である。「Aおよび/またはB」という言い回しは、(A)、(B)、または(AおよびB)を意味している。「A/B」という言い回しも、「Aおよび/またはB」同様、(A)、(B)、または(AおよびB)を意味している。「A、BおよびCのうち少なくとも1つ」という言い回しは、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)または(A、BおよびC)を意味している。「(A)B」という言い回しは、(B)または(AおよびB)を意味しており、つまり、Aがオプションであることを示す。
「プレディクタ(predictor)」「オプティマイザ(optimizer)」「アナライザ(analyzer)」または「システムレベルマネージャ(system level manager)」といった用語は、それぞれ、エンティティを実装するハードウェアおよび/またはソフトウェアのことを意味しており、人間は含まない。例えば、「プレディクタ(predictor)」「オプティマイザ(optimizer)」「アナライザ(analyzer)」または「システムレベルマネージャ(system level manager)」が行う処理は、それぞれ、ハードウェアおよび/またはソフトウェア実装が行う処理である(例えば、実際のものを表すデータを、ある状態から別の状態に変換する処理等)。このような処理は、人間が行う精神的な処理は含まない。
また、請求されている主題の理解がし易くなることを最優先して、様々な処理を多数の離散的な動作または処理として記載している場合がある。しかし、記載の順序は、これら処理の順序に従うことが絶対必要であることを示唆しているわけではない。つまり、これら処理は、提示された順番で行われなくてもよい。記載された動作は、記載された実施形態以外の順序で行われてもよい。さらなる実施形態においては、様々な処理を追加することもできるし、および/または、記載された処理を省くこともできる。
図1は、固体メモリデバイスにおけるデータ復帰方法のフロー図である。ブロック102において、方法100は、固体メモリデバイスの1以上のセルに格納されているデータを読み出すことを含む。概して、読み出し処理は、1以上のセルに与えられる閾値電圧を、参照信号と比較して、セルのプログラミング状態を判断することにより行われる。データの1以上のビットが各セルに格納されてよい。固体メモリデバイスは、フラッシュメモリ等の半導体材料に基づくメモリデバイスを含むことができるが、それに限定はされない。
ブロック104において、方法100は、読み出し信号を復号することを含む。復号は、例えば、様々なソフトまたはハードの復号器(例えば、BCH(Bose, Ray-Chaudhuri, Hocquenghem)復号器、またはLDPC(low-density parity-check)復号器)により行われてよい。復号は、誤り訂正符号(ECC)復号および関連技術(例えば、リード‐ソロモン復号および/またはハミング復号)を含みうる。主題はこの点に限定されず、復号は他の実施形態の他の適切な復号技術により行うこともできる。
ブロック106において、復号に失敗したか成功したかの判断が行われる。復号が成功した場合、ブロック108でデータが出力される。復号が失敗した場合、ブロック110で1以上のハード誤りが特定される。ハード誤りは、通常修復不可能な劣化したセルに関する読み出し誤りおよび/または復号誤りを含む。つまり、通常、消失および再プログラミング処理では、このようなセルのハード誤りは訂正できない。ブロック110における1以上のハード誤りを特定する実施形態を、図2を参照しながら詳述する。
図2は、1以上のハード誤りを特定する方法200を示す。方法200は、ブロック202で、ブロック106で復号に失敗した1以上のセルのデータを別の位置にコピーすることを含む。ブロック106で復号に失敗した1以上のセルは、所望の場合消失することができる。そしてブロック204で既知のデータパターンで1以上のセルを再プログラミングし、ブロック206で1以上の再プログラミングされたセルを読み出し、ブロック208で既知のデータパターンを読み出されたデータパターンと比較して、ブロック210でハード誤りを起こした位置を特定することで、1以上のハード誤りが特定される。例えば、読み出されたデータがそのセルの既知のデータと異なっている場合、そのセルはハード誤りを有するとして特定されてよい。
ブロック212で、同じまたは異なる既知のデータパターンを利用して1回以上ブロック204、206、208、および210の処理を繰り返すことで、ハード誤りをより正確にまた完全に特定することができる。ブロック204で再プログラミングされた既知のデータパターンのうち少なくとも1つは、ブロック102で読み出されたデータに類似していてよく、またはそれに基づいていてよい。ブロック216で、ハード誤りを起こした位置を出力してよい。1実施形態においては、既知のデータは、ブロック102で原プログラミングデータについて読み出されたデータを含み、これがブロック106で1以上のセルの復号失敗となる。
図1に戻ると、ブロック112において、方法100は、1以上のハード誤りの位置を復号器に提供することを含む。方法200のブロック216で(図2)、1以上のハード誤りの位置が出力され、復号器に提供されて、復号を向上させる。特定されたハード誤りを有する劣化したセルに格納されているデータビットは、例えば、ECC復号用の消失箇所である旨を示すマークまたはフラグを付されてよい。他の実施形態においては、特定されたハード誤りを有するセルの位置を記録および/または提供するのに、他の技術を実装することができる。
ブロック114において、方法100は、ハード誤りの位置を利用して復号を行い、ブロック102で読み出される前に1以上のセルにプログラミングされていたデータである原プログラミングデータを復帰させることを含む。ハード誤りの位置を通知された復号器は、誤り訂正機能が向上していてよい。例えば、ECC復号器は、ハード誤りを特定されたビットを消失して復号を続けてよく、または、誤りを特定されたビットをフリップして復号を続けてもよい。消失復号においては、ハード誤りの位置を通知された復号器は、2個分の消失を訂正することができ、これにより、リード‐ソロモン符合用のT個の誤ったシンボルを、誤り訂正パワーのT個のシンボル(error correction power T symbol)と比較する。故に、消失の復号(erasure decoding)を利用すると、誤り位置が分かっている場合、ECC復号器が訂正可能な誤りの数を増やすことが出来るようになる。別の例でいうと、情報復号器は、ビットフリップ技術を実装することで、ハード誤りを特定されたビットの様々な値の組み合わせで復号を再試行することができる。通知されたハード誤りの位置で復号することで、原プログラミングデータを復帰させることができる。
1実施形態においては、原プログラミングデータはブロック114で消失復号技術により復帰される。消失によるハード復号の1例を以下に示して、ここで記載する原理を明らかにする。例えば、原プログラミングデータは、誤り訂正パワーT=1を有するハミング符号で符号化されたビット値(1 0 0 0 1 1 0)を含んでよい。ブロック102において、読み出されたデータは、例えば、第3および第4のビット(1 0 1 1 1 1 0)で2つの誤りを有するビット値を提供していることがある。この読み出されたデータの2つの誤りはハミング符号訂正機能を超えているので、ブロック106でECC復号失敗となる。ブロック202でこのデータは別のブロックにコピーされて、現在のブロックを消失することができ、これにより、ブロック110で1以上のハード誤りを特定することができる。
ブロック204において、セルを既知のデータパターンで再プログラミングする。1実施形態においては、既知のデータパターンは、ブロック102で読み出されたデータから各々スイッチされたビット値を含む。例えば、ブロック102で読み出されたデータが(1 0 1 1 1 1 0)である場合、既知のデータパターンは(0 1 0 0 0 0 1)を含んでよい。ブロック206で既知のデータパターンを読み出すことで、ビット値(0 1 1 1 0 0 1)を提供することができるが、ブロック208および210によれば、このビット値は、読み出されたデータが第3および第4ビット位置において既知のデータパターンとは異なっているので、第3および第4ビット位置にハード誤りがあることを示している。
ブロック110で特定されたハード誤り位置に応じて、原プログラミングデータの第3および第4ビット位置を消失して復号する(ブロック114)。この2つの消失により、ハミング復号を成功させ、復帰されたデータ(1 0 0 0 1 1 0)を出力することができる(ブロック116)。
同様の原理を利用することで消失によるソフト復号を行うことができる。例えば、ハード誤りを特定された特定するビットに対して、LLR(log-likelihood ratio)をゼロに設定することができる。読み出されたデータLLRが(−9.2 +10.5 +13.2 +11.2 −3 −9 +16)を含み、第3および第4ビットがハード誤りを特定された場合、ソフト復号器への入力は、例えばLLR(−9.2 +10.5 0 0 −3 −9 +16)を含みうる。
別の実施形態においては、ブロック114で、ビットフリップ技術により原プログラミングデータを復帰させる。ビットフリップにおいては、ビット値の組み合わせを、復号が成功するまで、特定されたハード誤り位置にプログラミングし続ける。例えば、ハミング符号で符号化された原プログラミングデータ(1 0 0 0 1 1 0)が、ブロック102で(1 0 1 1 1 1 0)として読み出されてしまった場合、2つの誤りは誤り訂正T=1であるハミング符号訂正機能を超えているので、ブロック106でECC復号の失敗が生じる。ブロック206および208で、既知のデータ(0 1 0 0 0 0 1)を再プログラミングして、既知のデータの読み出しデータ(0 1 1 1 0 0 1)を既知のデータと比較することで、ブロック210で第3および第4ビット位置におけるハード誤りが特定される。
ひとたびハード誤り位置が特定されると、原読み出しデータのハード誤り位置におけるビットの値をフリップする(ブロック102)。例えば、読み出しデータ(1 0 1 1 1 1 0)の第3ビットを、1から0にフリップして、(1 0 0 1 1 1 0)として提供することができる。この段階では、1つの誤りのみが残っているので、ブロック114でハミング符号が残りの誤りの訂正に成功し、復帰データ(1 0 0 0 1 1 0)をブロック116で出力する。
これまではビットフリップを、ハード復号器の例を利用して説明したが、ビットフリップはソフト復号器にも実装可能である。ソフト復号においては、ハード誤り位置に対応するビットを、排他的に反対の符号(sign)にフリップしてよい。例えば、LLRは、フリップされた値に対応する符号を有するように飽和され、または所望の大きさに設定されうる。読み出しデータLLRが(−9.2 +10.5 +13.2 +11.2 −3 −9 +16)を含み、第3および第4ビットがハード誤り位置に対応している場合、第3ビットをフリップして飽和させ、(−9.2 +10.5 −16 +11.2 −3 −9 +16)をブロック114の復号用に提供してよい。復号が成功するとブロック116でその値を出力し、失敗するとビットフリップを続行してよい。例えば、復号が失敗した場合、第4ビットをフリップして飽和させ、再度復号に回してよい。復号がさらに失敗した場合、第3および第4ビット両方をフリップして飽和させて、再度復号に回してよい。ハード誤り位置のビットフリップは、任意の値の組み合わせで任意の順序で行われてよい。
図3は、修正された参照信号および消失復号を利用して調節された再読み出しの方法300のフロー図である。ブロック302において、方法300は、固体メモリデバイスの1以上のセルに格納されているデータを読み取ることを含む。1以上のセルは、例えば、1つのセルに与えられる閾値電圧を参照信号と比較して、セルのプログラミング状態を判断することにより、読み出されてよい。異なるセルの閾値電圧は様々な理由から異なっていてよい。この理由の例には、プログラミングおよび/またはセル材料の消耗およびリークなどの他のセルの性質が異なっていること等が含まれる。
図4を参照すると、例示的なプロット400は、2ビットセルの4つのビット値(11)(10)(01)(00)各々について理想的な平均値(mean)S1、S2、S3、S4の周りに統計的に分布する閾値電圧分布402、404、406、408の概略を示す。プロット400は、さらに、セルのプログラミング状態を判断するのに利用される参照信号v1、v2、v3も示している。例えば、あるセルの閾値電圧が、電圧軸V沿いに参照信号v1より低いことが分かると、そのセルに格納されているデータは(11)として読み出される。
共有領域410、412、414にある閾値電圧を有するセルは、それらが参照信号v1、v2、v3に近接していることから、読み出しおよび/または復号誤りを受け易い。これらセルにおいては、読み出し処理中の小さなノイズまたは妨害でさえ、最も近接している参照信号を介して検出されたビット値に変化をきたす。このようなマージナルセルは、消失復号の有効な消失対象を提供しうる。
図3に戻ると、方法300はさらに、ブロック304で読み出しデータを復号することを含む。復号が成功すると、ブロック306で復号データを出力する。復号が失敗すると、ブロック308で、修正された参照信号を利用してデータを再読み出しする。修正された参照信号を再読み出しすることで、より有効な消失を生成することができ、これにより、より効果的な消失復号が行われる。
マージナルセルは、再読み出し中に参照信号を修正することでより効果的に特定される(ブロック308)。図5を参照すると、例えば、星印で示されている閾値電圧r1は、陰を付けられた領域510内の参照信号v1の付近にあり、参照信号v1は通常、データ読み出しに利用される。r1が、例えば、通常利用される参照信号v1を利用して読み出される場合、値は(11)として検知される。しかし、修正された参照信号v1'を利用する場合、r1の検知データは(11)ではなく(10)になる。修正された参照信号を利用した再読み出しから得られるデータを互いに、および/または、通常の参照信号を利用して得られる読み出しデータと比較することができる。これらデータのいずれかが異なっている場合、そのデータの位置を消失復号の消失箇所としてマークまたはフラグを付す。
図3に戻ると、方法300は、ブロック310で読み出しデータを復号することを含む。ブロック308で、修正された参照信号を利用してデータを再読み出しすることで、復号を成功させる値が提供されてよい。復号が成功すると、ブロック306で復号データが出力されてよい。代替的な実施形態においては、復号が成功すると、ブロック312で、最少誤りに対応する参照信号を記録しておいて将来の利用に備えさせる。例えば、復号器は、ブロック308および310で、利用される参照信号に対応する読み出しおよび復号中に遭遇した誤りの数を取得してよい。固体メモリデバイスに連結されている、または、固体メモリデバイス内にあるシステムにより、最少誤りに対応する参照信号をセーブさせ、将来、マージナルセルからデータを読み出すのに利用するのに備えさせてよい。様々な実施形態においては、ブロック310および312は利用せず、ブロック314をブロック308の後に行う。
ブロック314においては、方法300は、ブロック308で読み出されたデータに基づいて1以上の消失フラグを形成することを含む。消失フラグは、セルから読み出されたデータの少なくとも1つの値を消失用にマークすることを示してよい。少なくとも1つの値は、例えば、セルから読み出されたデータのビット値であってよい。例えば、ブロック308によるそれぞれ異なる再読み出しで読み出されたデータ同士を比較して、および/または、該データとブロック302により通常利用される参照信号を利用して得られた読み出しデータとを比較して、存在する差異を消失復号の際の消失位置としてマークしてよい。
図6を参照すると、様々な実施形態により利用されうる例示的な消失フラグベクトル600が概略的に示されている。Dと示されている読み出しデータは、通常利用される参照信号(例えば図5のv1)に対応しており、ブロック302の読み出しデータから得ることができる。D'および D''と示されている読み出しデータは、それぞれ異なる修正された参照信号(例えば図5のv1'およびv1'')に対応しており、ブロック308の読み出しデータから得ることができ、これらをブロック318で繰り返してもよい。消失フラグベクトル600は、示されているようにXOR(D,D')およびXOR(D',D'')のORを利用して形成することもでき、ここで、陰を付けられたデータ位置は、フラグを付された消失箇所を示す。主題は本例に限定されず、ブロック308のいずれかの再読み出し処理中にビットが変更される場合、ビットの消失フラグを様々な適切な技術を利用して設定することもできる。
多数の再読み出しにおいて消失箇所をマークする技術の他の例には、例えば、ビットが固体メモリデバイスの多数決復号原理で多数を占める値として読み出される回数が、ビットが閾値分(例えば1という閾値)別の値で読み出される回数よりも小さい場合、1以上のマージナルセルに関するビットを消失に対応するフラグを立て、小さくない場合には、ビットを多数決復号原理で多数を占める値に設定することを含む。消失フラグは、例えば、ビット毎またはシンボル毎に設定してよい。
ブロック316において、方法300は、1以上の消失フラグを利用して読み出しデータを復号することを含む。成功した場合、ブロック312で最少誤りに対応する参照信号をオプションとして記録して、ブロック306で復号データを出力する。
ブロック308、310、314、および316の処理は、ブロック316で復号が成功するまで、または、ブロック318で所定の再読み出し数を超えるまで、繰り返されてよい。1実施形態においては、ブロック308の再読み出し処理は、少なくとも2回行われる。このような再読み出し処理は、読み出すセルに通常利用される参照信号より高い、修正された参照信号(例えば電圧)を利用してデータを読み出すこと、および、通常利用される参照信号より低い修正された参照信号を利用してデータを読み出すことを含む。ブロック318では適切な任意の数の再読み出し回数を閾値として利用してよい。閾値を超えると、ブロック320で復号失敗が生じうる。
ここで記載した技術は、ソフトウェア、ハードウェア、またはファームウェア、またはこれらの組み合わせで実装されてよい。ここで記載した処理は、例えば、復号器または信号トランスミッタおよび/またはレシーバにより行われてよい。様々な実施形態においては、プレディクタ、オプティマイザ、アナライザ、またはシステムレベルマネージャを利用して、ここに記載した動作を行ってよい。様々な実施形態においては、ここで記載した技術は、これら機能を行うよう設計されたモジュールにより行われる。ここで利用されるモジュールとう用語は、ASIC(特定用途向けIC)、電子回路、1以上のソフトウェアまたはファームウェアプログラムを実行するプロセッサ(共有、専用、またはグループ)およびメモリ、組み合わせ論理回路、および/または、記載した機能を提供する他の適切なコンポーネントのことを示す。
図7は、ここで記載した技術および構成を実装する例示的な電子システムの概略図である。電子システム700は、ここで既に記載した実施形態に適合していてよい。電子システム700は、例えばデスクトップコンピュータデバイス、ラップトップコンピュータデバイス、パソコン(PC)、サーバ、電話機、セルラー式のPDA(cellular-enabled PDA)を含む携帯情報端末(PDA)、セットトップボックス、ポケットPC、タブレットPC、DVDプレーヤ、ビデオプレーヤ、複写機、印刷機、または多機能デバイス(MFD)を含む様々な電子デバイス(有線または無線)を表すことを意図しているが、これらの例に限定はされず、他の電子デバイスを含んでもよい。代替的な電子システムには、これより多いまたは少ない数のコンポーネントが含まれてよく、および/または異なるコンポーネントが含まれてもよい。
電子システム700は、情報通信用にバス705、または他の通信デバイスまたはインタフェースを含み、さらに、情報処理用にバス705に連結されたプロセッサ710を含む。バス705は、単一のシステムバスであっても、同じまたは異なる種類の多数のバスが互いにブリッジされたものであってもよい。電子システム700は1以上のプロセッサおよび/またはコプロセッサを含んでよい。
1実施形態においては、電子システム700は、バス705に連結された、ランダムアクセスメモリ(RAM)または他の記憶デバイス(「メモリ720」と称されてよい)を含む。メモリ720はさらに、プロセッサ710の命令実行中に、一次変数または他の仲介情報を格納するのに利用されてよい。メモリ720は、フラッシュメモリデバイスを含みうる。1実施形態においては、メモリ720は、ここで記載した固体メモリデバイスを含む。プロセッサ710はメモリ720と連結されることで、格納している命令を実行し、命令が実行されることで、記載した動作または処理が行われる。
電子システム700はさらに、バス705に連結されてプロセッサ710用の静的な情報および命令を格納する読み取り専用メモリ(ROM)および/または他の静的記憶デバイス730を含む。データ記憶デバイス740はバス705に連結されて、情報および命令を格納する。データ記憶デバイス740は、例えば、磁気ハードディスクドライブ(HDD)を含みうる。
1実施形態では製品が開示される。製品は、メモリ720、静的記憶デバイス730、データ記憶デバイス740、または、実行されることで記載した動作を行う命令が記憶された他のコンピュータ読み取り可能な媒体のような記憶媒体を含む。様々な実施形態では、命令はファームウェアまたはソフトウェア形式であってよい。
電子システム700は、バス705を介して、陰極線管(CRT)または液晶ディスプレイ(LCD)等のディスプレイ750に連結されて、ユーザに情報を表示する。アルファニューメリックおよび他のキーを含むアルファニューメリック入力デバイス760がバス705に連結されて、情報およびコマンド選択をプロセッサ710に伝送してよい。カーソル制御770が別の種類の入力デバイスであってよく、例えば、マウス、トラックボール、またはカーソル指向キー(cursor direction key)を含んで、情報およびコマンド選択をプロセッサ710に伝送してよく、および、ディスプレイ750上のカーソルの動きを制御してよい。
電子システム700はさらに、1以上のネットワークインタフェース780を含み、ローカルエリアネットワーク等のネットワークへのアクセスを可能としてよいが、この点に限定はしない。ネットワークインタフェース780は、例えば、1以上のアンテナを表してよいアンテナ785を有する無線ネットワークインタフェースを含みうる。ネットワークインタフェース780は、例えば、イサーネットケーブル、同軸ケーブル、光ファイバケーブル、シリアルケーブル、またはパラレルケーブルを含む有線ネットワークインタフェースを含んで、ネットワークケーブル787を介して遠隔のデバイスと通信してよい。
1つの実施形態においては、ネットワークインタフェース780は、例えば、IEEE802.11bおよび/またはIEEE802.11g規格等のアイトリプルイー(IEEE)規格に準拠することで、ローカルエリアネットワークへのアクセスを可能としてよく、および/または、無線ネットワークインタフェースは、例えばブルートゥース規格に準拠することでパーソナルエリアネットワークへのアクセスを可能としてよい。他の無線ネットワークインタフェースおよび/またはプロトコルをサポートすることもできる。
IEEE802.11bは、1999年9月16日承認の「Local and Metropolitan Area Networks, Part 11:Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications: Higher-Speed Physical Layer Extension in the 2.4 GHz Band」という名称のIEEE規格802.11b−1999、および関連ドキュメントに対応する。IEEE802.11gは、2003年6月27日承認の「Local and Metropolitan Area Networks, Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications, Amendment 4: Further Higher Rate Extension in the 2.4 GHz Band」という名称のIEEE規格802.11g−2003、および関連ドキュメントに対応していてよい。ブルートゥースプロトコルは、2001年2月22日にBluetooth Special Interest Group, Inc.により発行された「Specification of the Bluetooth System: Core, Version 1.1」記載されている。ブルートゥース規格のこれの前後のバージョンもサポートされてよい。
これまで幾らかの実施形態を記載してきたが、記載および例示した実施形態の代わりに、本発明の範囲から逸脱しない範囲で、様々な種類の代替的および/または均等実施形態または実装例を利用して同じ目的を達成することができる。本願はここで述べた実施形態の変形例または変更例を網羅することを意図している。故に、本発明の実施形態は、請求項およびその均等物によってのみ限定されることを明示する。
これまではビットフリップを、ハード復号器の例を利用して説明したが、ビットフリップはソフト復号器にも実装可能である。ソフト復号においては、ハード誤り位置に対応するビットを、排他的に反対の符号(sign)にフリップしてよい。例えば、LLRは、フリップされた値に対応する符号を有するように飽和され、または所望の大きさに設定されうる。読み出しデータLLRが(−9.2 +10.5 +13.2 +11.2 −3 −9 +16)を含み、第3および第4ビットがハード誤り位置に対応している場合、第3ビットをフリップして飽和させ、(−9.2 +10.5 −16 +11.2 −3 −9 +16)をブロック114の復号用に提供してよい。復号が成功するとブロック116でその値を出力し、失敗するとビットフリップを続行してよい。例えば、復号が失敗した場合、第4ビットをフリップして飽和させ、再度復号に回してよい。復号がさらに失敗した場合、第3および第4ビット両方をフリップして飽和させて、再度復号に回してよい。ハード誤り位置のビットフリップは、任意の値の組み合わせで任意の順序で行われてよい。(項目1)固体メモリデバイスのセルに関するハード誤りを特定する段階と、前記特定されたハード誤りを有する前記セルの位置を、前記セルに元々プログラミングされていたデータを復帰させる復号器に提供する段階と、前記復号器を利用して、前記セルに元々プログラミングされていた前記データを復帰させる段階と、を備える、方法。(項目2)前記セルに関する前記ハード誤りは、前記セルに元々プログラミングされていた前記データの復号に失敗したことに呼応して特定される、項目1に記載の方法。(項目3)前記セルに関する前記ハード誤りを特定する段階は、既知のデータで前記セルを再プログラミングする段階と、前記セルが既知のデータで再プログラミングされた後で、前記セルから読み出しデータを読み出す段階と、前記読み出しデータを前記既知のデータと比較する段階と、を有する、項目1に記載の方法。(項目4)前記読み出しデータが前記既知のデータと異なっている場合、前記セルがハード誤りを有するとして特定する段階をさらに備える、項目3に記載の方法。(項目5)前記既知のデータは、前記セルの復号に失敗する前記セルに元々プログラミングされていた前記データに関連する読み出しデータを含む、項目3に記載の方法。(項目6)前記再プログラミングする段階、前記読み出す段階、および前記読み出しデータを比較する段階は、繰り返し行われる、項目3に記載の方法。(項目7)前記再プログラミングする段階、前記読み出す段階、および前記読み出しデータを比較する段階は、各繰り返しについて異なる既知のデータを利用して行われる、項目6に記載の方法。(項目8)前記復号器を利用して前記データを復帰させる段階は、ソフト復号器またはハード復号器を利用する段階を有し、前記ソフト復号器または前記ハード復号器は、誤り訂正符号(ECC)を利用する、項目1に記載の方法。(項目9)前記復号器を利用して前記データを復帰させる段階は、消失復号を利用する段階を有する、項目1に記載の方法。(項目10)前記消失復号を利用する段階は、前記特定されたハード誤りを有する前記セルに対応する前記データ内のビットまたはシンボルを消失して、前記元々プログラミングされていたデータの前記復号による復帰を成功させる段階を含む、項目9に記載の方法。(項目11)前記復号器を利用して前記データを復帰させる段階は、ビットフリップを利用する段階を有する、項目1に記載の方法。(項目12)前記ビットフリップを利用する段階は、復号が成功するまで、前記特定されたハード誤りを有する前記セルに対応する異なるビット値の組み合わせを利用して前記セルに元々プログラミングされていた前記データを復号する段階を含む、項目11に記載の方法。
ブロック308、310、314、および316の処理は、ブロック316で復号が成功するまで、または、ブロック318で所定の再読み出し数を超えるまで、繰り返されてよい。1実施形態においては、ブロック308の再読み出し処理は、少なくとも2回行われる。このような再読み出し処理は、読み出すセルに通常利用される参照信号より高い、修正された参照信号(例えば電圧)を利用してデータを読み出すこと、および、通常利用される参照信号より低い修正された参照信号を利用してデータを読み出すことを含む。ブロック318では適切な任意の数の再読み出し回数を閾値として利用してよい。閾値を超えると、ブロック320で復号失敗が生じうる。(項目13)固体メモリデバイスのセルに格納されているデータを、前記データの読み出しに通常利用される参照信号とは異なる、修正された参照信号を利用して読み出す段階と、前記セルから読み出された前記データに基づいて、前記セルから読み出された前記データの少なくとも1つの値が消失用にマークされることを示す消失フラグを形成する段階と、前記消失フラグを利用して、前記セルから読み出された前記データを復号する段階と、を備える、方法。(項目14)前記セルに格納されているデータを読み出す段階は、前記セルに格納されている前記データの再読み出し処理であり、前記データを読み出す段階は、前記データの復号に失敗したことに呼応して行われる、項目13に記載の方法。(項目15)前記セルに格納されているデータを読み出す段階は、少なくとも2回行われ、通常利用される参照信号より高い、修正された参照信号を利用して前記データを読み出す段階と、通常利用される参照信号より低い、修正された参照信号を利用して前記データを読み出す段階と、を有する、項目13に記載の方法。(項目16)前記消失フラグを形成する段階は、前記通常利用される参照信号を利用して前記セルから読み出されたデータを、前記修正された参照信号を利用して前記セルから読み出された前記データと比較する段階と、通常利用される参照信号を利用して前記セルから読み出された前記少なくとも1つの値が、前記修正された参照信号を利用して前記セルから読み出された前記少なくとも1つの値とは異なる場合、前記少なくとも1つの値を消失するフラグを立てる段階と、を有する、項目13に記載の方法。(項目17)前記通常利用される参照信号より高い、修正された参照信号を利用して前記データを読み出す段階と、前記通常利用される参照信号より低い、修正された参照信号を利用して前記データを読み出す段階とは、多数回行われ、前記1以上の消失フラグを形成する段階は、前記少なくとも1つの値が前記固体メモリデバイスの大部分の復号原理が好む値で読み出される回数が、前記少なくとも1つの値が閾値分、別の値で読み出される回数より小さい場合、前記少なくとも1つの値を消失するフラグを立てる段階と、前記少なくとも1つの値が前記大部分の復号原理が好む前記値で読み出される回数が、前記少なくとも1つの値が別の値で読み出される回数より大きい場合、前記少なくとも1つの値を前記大部分の復号原理が好む前記値に設定する段階と、を有する、項目15に記載の方法。(項目18)前記消失フラグを利用して、前記セルから読み出された前記データを復号する段階は、消失復号をする段階を含む、項目13に記載の方法。(項目19)前記セルに格納されている前記データを読み出す段階で利用される各参照信号に対応する誤りの数を取得する段階と、最少誤り数に対応する前記参照信号を記録して将来の利用に備える段階と、をさらに備える、項目13に記載の方法。(項目20)前記復号されたデータを出力する段階をさらに備える、項目13に記載の方法。

Claims (20)

  1. 固体メモリデバイスのセルに関するハード誤りを特定する段階と、
    前記特定されたハード誤りを有する前記セルの位置を、前記セルに元々プログラミングされていたデータを復帰させる復号器に提供する段階と、
    前記復号器を利用して、前記セルに元々プログラミングされていた前記データを復帰させる段階と、を備える、方法。
  2. 前記セルに関する前記ハード誤りは、前記セルに元々プログラミングされていた前記データの復号に失敗したことに呼応して特定される、請求項1に記載の方法。
  3. 前記セルに関する前記ハード誤りを特定する段階は、
    既知のデータで前記セルを再プログラミングする段階と、
    前記セルが既知のデータで再プログラミングされた後で、前記セルから読み出しデータを読み出す段階と、
    前記読み出しデータを前記既知のデータと比較する段階と、を有する、請求項1に記載の方法。
  4. 前記読み出しデータが前記既知のデータと異なっている場合、前記セルがハード誤りを有するとして特定する段階をさらに備える、請求項3に記載の方法。
  5. 前記既知のデータは、前記セルの復号に失敗する前記セルに元々プログラミングされていた前記データに関連する読み出しデータを含む、請求項3に記載の方法。
  6. 前記再プログラミングする段階、前記読み出す段階、および前記読み出しデータを比較する段階は、繰り返し行われる、請求項3に記載の方法。
  7. 前記再プログラミングする段階、前記読み出す段階、および前記読み出しデータを比較する段階は、各繰り返しについて異なる既知のデータを利用して行われる、請求項6に記載の方法。
  8. 前記復号器を利用して前記データを復帰させる段階は、
    ソフト復号器またはハード復号器を利用する段階を有し、
    前記ソフト復号器または前記ハード復号器は、誤り訂正符号(ECC)を利用する、請求項1に記載の方法。
  9. 前記復号器を利用して前記データを復帰させる段階は、消失復号を利用する段階を有する、請求項1に記載の方法。
  10. 前記消失復号を利用する段階は、
    前記特定されたハード誤りを有する前記セルに対応する前記データ内のビットまたはシンボルを消失して、前記元々プログラミングされていたデータの前記復号による復帰を成功させる段階を含む、請求項9に記載の方法。
  11. 前記復号器を利用して前記データを復帰させる段階は、ビットフリップを利用する段階を有する、請求項1に記載の方法。
  12. 前記ビットフリップを利用する段階は、
    復号が成功するまで、前記特定されたハード誤りを有する前記セルに対応する異なるビット値の組み合わせを利用して前記セルに元々プログラミングされていた前記データを復号する段階を含む、請求項11に記載の方法。
  13. 固体メモリデバイスのセルに格納されているデータを、前記データの読み出しに通常利用される参照信号とは異なる、修正された参照信号を利用して読み出す段階と、
    前記セルから読み出された前記データに基づいて、前記セルから読み出された前記データの少なくとも1つの値が消失用にマークされることを示す消失フラグを形成する段階と、
    前記消失フラグを利用して、前記セルから読み出された前記データを復号する段階と、を備える、方法。
  14. 前記セルに格納されているデータを読み出す段階は、前記セルに格納されている前記データの再読み出し処理であり、
    前記データを読み出す段階は、前記データの復号に失敗したことに呼応して行われる、請求項13に記載の方法。
  15. 前記セルに格納されているデータを読み出す段階は、少なくとも2回行われ、
    前記通常利用される参照信号より高い、修正された参照信号を利用して前記データを読み出す段階と、
    前記通常利用される参照信号より低い、修正された参照信号を利用して前記データを読み出す段階と、を有する、請求項13に記載の方法。
  16. 前記消失フラグを形成する段階は、
    前記通常利用される参照信号を利用して前記セルから読み出されたデータを、前記修正された参照信号を利用して前記セルから読み出された前記データと比較する段階と、
    前記通常利用される参照信号を利用して前記セルから読み出された前記少なくとも1つの値が、前記修正された参照信号を利用して前記セルから読み出された前記少なくとも1つの値とは異なる場合、前記少なくとも1つの値を消失するフラグを立てる段階と、を有する、請求項13に記載の方法。
  17. 前記通常利用される参照信号より高い、修正された参照信号を利用して前記データを読み出す段階と、前記通常利用される参照信号より低い、修正された参照信号を利用して前記データを読み出す段階とは、多数回行われ、
    前記1以上の消失フラグを形成する段階は、
    前記少なくとも1つの値が前記固体メモリデバイスの大部分の復号原理が好む値で読み出される回数が、前記少なくとも1つの値が閾値分、別の値で読み出される回数より小さい場合、前記少なくとも1つの値を消失するフラグを立てる段階と、
    前記少なくとも1つの値が前記大部分の復号原理が好む前記値で読み出される回数が、前記少なくとも1つの値が別の値で読み出される回数より大きい場合、前記少なくとも1つの値を前記大部分の復号原理が好む前記値に設定する段階と、を有する、請求項15に記載の方法。
  18. 前記消失フラグを利用して、前記セルから読み出された前記データを復号する段階は、
    消失復号をする段階を含む、請求項13に記載の方法。
  19. 前記セルに格納されている前記データを読み出す段階で利用される各参照信号に対応する誤りの数を取得する段階と、
    最少誤り数に対応する前記参照信号を記録して将来の利用に備える段階と、をさらに備える、請求項13に記載の方法。
  20. 前記復号されたデータを出力する段階をさらに備える、請求項13に記載の方法。
JP2013058608A 2008-07-17 2013-03-21 固体メモリデバイスにおけるデータ復帰 Expired - Fee Related JP5582372B2 (ja)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US8154608P 2008-07-17 2008-07-17
US61/081,546 2008-07-17
US8851408P 2008-08-13 2008-08-13
US61/088,514 2008-08-13
US11815208P 2008-11-26 2008-11-26
US61/118,152 2008-11-26
US12/494,004 2009-06-29
US12/494,004 US8458536B2 (en) 2008-07-17 2009-06-29 Data recovery in solid state memory devices

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2009165075A Division JP5272212B2 (ja) 2008-07-17 2009-07-13 固体メモリデバイスにおけるデータ復帰

Publications (2)

Publication Number Publication Date
JP2013152737A true JP2013152737A (ja) 2013-08-08
JP5582372B2 JP5582372B2 (ja) 2014-09-03

Family

ID=41531338

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2009165075A Active JP5272212B2 (ja) 2008-07-17 2009-07-13 固体メモリデバイスにおけるデータ復帰
JP2013058608A Expired - Fee Related JP5582372B2 (ja) 2008-07-17 2013-03-21 固体メモリデバイスにおけるデータ復帰

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2009165075A Active JP5272212B2 (ja) 2008-07-17 2009-07-13 固体メモリデバイスにおけるデータ復帰

Country Status (3)

Country Link
US (2) US8458536B2 (ja)
JP (2) JP5272212B2 (ja)
CN (1) CN101789269B (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8458536B2 (en) 2008-07-17 2013-06-04 Marvell World Trade Ltd. Data recovery in solid state memory devices
KR101574208B1 (ko) * 2009-03-31 2015-12-07 삼성전자주식회사 불휘발성 메모리 장치, 그것을 포함하는 메모리 시스템, 그리고 그것의 동작 방법
KR101541040B1 (ko) * 2010-03-12 2015-08-03 엘에스아이 코포레이션 플래시 메모리들을 위한 ldpc 소거 디코딩
GB2494577B (en) * 2010-05-31 2013-11-20 Ibm Decoding of LDPC code
US8996967B2 (en) 2010-08-06 2015-03-31 Stmicroelectronics, Inc. Rendering data write errors detectable
US8745466B2 (en) * 2010-08-06 2014-06-03 Stmicroelectronics, Inc. Detecting data-write errors
US8638602B1 (en) 2010-09-10 2014-01-28 Western Digital Technologies, Inc. Background selection of voltage reference values for performing memory read operations
US8503237B1 (en) 2011-05-18 2013-08-06 Western Digital Technologies, Inc. System and method for data recovery in a solid state storage device
US8406053B1 (en) 2011-09-21 2013-03-26 Sandisk Technologies Inc. On chip dynamic read for non-volatile storage
US9009578B1 (en) * 2011-11-11 2015-04-14 Marvell International Ltd. Methodology for improved bit-flipping decoder in 1-read and 2-read scenarios
US8924815B2 (en) * 2011-11-18 2014-12-30 Sandisk Enterprise Ip Llc Systems, methods and devices for decoding codewords having multiple parity segments
FR2983665B1 (fr) * 2011-12-02 2014-06-20 Commissariat Energie Atomique Procede de generation d'un code correcteur lineaire maximise, procede et dispositif de decodage d'un tel code
US8640421B2 (en) 2012-03-27 2014-02-04 Energex Llc Wall system with self gauging trowel on membrane
US8879325B1 (en) * 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US9128710B2 (en) * 2012-06-05 2015-09-08 Sk Hynix Memory Solutions Inc. Power saving techniques that use a lower bound on bit errors
FR2992504A1 (fr) * 2012-06-26 2013-12-27 Commissariat Energie Atomique Dispositif et procede pour la correction d'erreurs dans un mot de code
US9036417B2 (en) 2012-09-06 2015-05-19 Sandisk Technologies Inc. On chip dynamic read level scan and error detection for nonvolatile storage
US8786972B2 (en) 2012-11-18 2014-07-22 HGST Netherlands B.V. Magnetic recording disk drive with method for recovery of data from failed data sectors
US8924824B1 (en) * 2013-03-12 2014-12-30 Western Digital Technologies, Inc. Soft-decision input generation for data storage systems
US8990668B2 (en) * 2013-03-14 2015-03-24 Western Digital Technologies, Inc. Decoding data stored in solid-state memory
US9548764B1 (en) * 2013-12-03 2017-01-17 Marvell International Ltd. Memory efficient decoders for low-density parity-check codes
US9641285B2 (en) 2014-03-06 2017-05-02 Samsung Electronics Co., Ltd. Ultra low power (ULP) decoder and decoding processing
EP2916460B1 (en) * 2014-03-06 2017-08-23 Samsung Electronics Co., Ltd Ultra low power consumption (ulp) decoder
US10200064B1 (en) 2014-03-18 2019-02-05 Marvell International Ltd. Systems and method for bit-flipping decoders with partial-column processing, ordering and scheduling
US10038456B1 (en) 2014-03-25 2018-07-31 Marvell International Ltd. Decoders with look ahead logic
KR102147970B1 (ko) 2014-08-05 2020-08-25 삼성전자주식회사 비휘발성 메모리 기반의 스토리지 디바이스의 복구 방법 및 상기 스토리지 디바이스를 포함하는 전자 시스템의 동작 방법
KR102149674B1 (ko) 2014-10-13 2020-09-01 삼성전자주식회사 에러 정정 디코더 및 에러 정정 디코더의 동작 방법
KR20170068681A (ko) * 2015-12-09 2017-06-20 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN105573676B (zh) * 2015-12-16 2019-02-15 浪潮(北京)电子信息产业有限公司 一种存储系统中验证数据一致性的方法
CN105893167A (zh) * 2016-03-28 2016-08-24 联想(北京)有限公司 一种信息处理方法及装置、电子设备
US9691492B1 (en) * 2016-09-29 2017-06-27 Intel Corporation Determination of demarcation voltage for managing drift in non-volatile memory devices
US10637508B2 (en) * 2017-11-03 2020-04-28 Board Of Trustees Of Michigan State University Optimal construction of regenerating code through rate-matching
US10951239B2 (en) * 2018-02-20 2021-03-16 Micron Technology, Inc. Performing a decoding operation to simulate switching a bit of an identified set of bits of a data block
JP2021111826A (ja) 2020-01-07 2021-08-02 キオクシア株式会社 復号装置及び復号方法
US11349495B2 (en) 2020-04-15 2022-05-31 Seagate Technology Llc Recovering from hard decoding errors by remapping log likelihood ratio values read from NAND memory cells
GB202018025D0 (en) * 2020-11-17 2020-12-30 Graphcore Ltd System and method for error correction
US11556416B2 (en) * 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07191914A (ja) * 1993-11-17 1995-07-28 Toshiba Corp データエラー訂正装置
JP2003100099A (ja) * 2001-09-25 2003-04-04 Toshiba Lsi System Support Kk 半導体回路システム
JP2007510253A (ja) * 2003-10-29 2007-04-19 サイファン・セミコンダクターズ・リミテッド 不揮発性メモリアレイの読み取り誤り検出のための方法、回路、及びシステム
WO2007132457A2 (en) * 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
WO2008042598A2 (en) * 2006-09-28 2008-04-10 Sandisk Corporation Involatile memory with soft-input,soft-output (siso) decoder, statistical unit and adaptive operation
JP2008108356A (ja) * 2006-10-25 2008-05-08 Toshiba Corp 不揮発性半導体記憶装置
WO2008117921A1 (en) * 2007-03-28 2008-10-02 Samsung Electronics Co., Ltd. Read level control apparatuses and methods

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5512514A (en) * 1978-07-07 1980-01-29 Mitsubishi Electric Corp Correction method for coding error
JPS5660956A (en) * 1979-10-24 1981-05-26 Fujitsu Ltd Error correction system
JPS5668997A (en) * 1979-11-02 1981-06-09 Fujitsu Ltd Error correction system
JPS57150196A (en) 1981-03-09 1982-09-16 Mitsubishi Electric Corp Storage device
JPS63141153A (ja) * 1986-12-03 1988-06-13 Nec Corp 半導体外部記憶装置
JPH03147041A (ja) * 1989-11-01 1991-06-24 Nec Corp エラー訂正システム
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5657332A (en) * 1992-05-20 1997-08-12 Sandisk Corporation Soft errors handling in EEPROM devices
US6212654B1 (en) * 1997-07-22 2001-04-03 Lucent Technologies Inc. Coded modulation for digital storage in analog memory devices
JP2000137651A (ja) * 1998-10-29 2000-05-16 Texas Instr Japan Ltd データ誤り訂正装置およびその方法
JP2000276366A (ja) 1999-03-29 2000-10-06 Nec Ic Microcomput Syst Ltd データ処理装置、そのデータ処理方法
JP4323707B2 (ja) 2000-10-25 2009-09-02 富士通マイクロエレクトロニクス株式会社 フラッシュメモリの欠陥管理方法
CN1353423A (zh) * 2000-11-03 2002-06-12 简篇 存储器自我测试的方法
US6574764B2 (en) * 2001-04-25 2003-06-03 Agilent Technologies, Inc. Algorithmically programmable memory tester with history FIFO's that aid in error analysis and recovery
US6392572B1 (en) 2001-05-11 2002-05-21 Qualcomm Incorporated Buffer architecture for a turbo decoder
US6885711B2 (en) 2001-06-27 2005-04-26 Qualcomm Inc Turbo decoder with multiple scale selections
US7036068B2 (en) * 2001-07-25 2006-04-25 Hewlett-Packard Development Company, L.P. Error correction coding and decoding in a solid-state storage device
US6973604B2 (en) * 2002-03-08 2005-12-06 Hewlett-Packard Development Company, L.P. Allocation of sparing resources in a magnetoresistive solid-state storage device
JP2004087028A (ja) * 2002-08-28 2004-03-18 Toshiba Corp ディスクドライブ及びデータ再生方法
JP4256198B2 (ja) * 2003-04-22 2009-04-22 株式会社東芝 データ記憶システム
EP1473739A1 (en) * 2003-04-29 2004-11-03 Dialog Semiconductor GmbH Flash memory with pre-detection for data loss
US7237074B2 (en) * 2003-06-13 2007-06-26 Sandisk Corporation Tracking cells for a memory system
US7900125B1 (en) * 2004-05-24 2011-03-01 Seagate Technology Llc Majority detection in error recovery
JP4626206B2 (ja) 2004-07-28 2011-02-02 パナソニック株式会社 受信装置、プログラム及び記録媒体
US7596738B2 (en) * 2004-11-17 2009-09-29 Sun Microsystems, Inc. Method and apparatus for classifying memory errors
GB2428496A (en) * 2005-07-15 2007-01-31 Global Silicon Ltd Error correction for flash memory
WO2007094055A1 (ja) * 2006-02-15 2007-08-23 Hitachi Ulsi Systems Co., Ltd. 誤り検出訂正回路及び半導体メモリ
EP1830269B1 (en) * 2006-03-02 2009-05-13 STMicroelectronics S.r.l. Reading method of a memory device with embedded error-correcting code and memory device with embedded error-correcting code
US7511646B2 (en) * 2006-05-15 2009-03-31 Apple Inc. Use of 8-bit or higher A/D for NAND cell value
US7836364B1 (en) * 2006-05-30 2010-11-16 Marvell International Ltd. Circuits, architectures, apparatuses, systems, methods, algorithms, software and firmware for using reserved cells to indicate defect positions
JP5095131B2 (ja) * 2006-05-31 2012-12-12 株式会社東芝 半導体記憶装置
US8046660B2 (en) * 2006-08-07 2011-10-25 Marvell World Trade Ltd. System and method for correcting errors in non-volatile memory using product codes
US7716538B2 (en) * 2006-09-27 2010-05-11 Sandisk Corporation Memory with cell population distribution assisted read margining
US7774688B1 (en) * 2006-10-11 2010-08-10 Marvell International Ltd. Hardware efficient decoding system for Bose, Ray-Chaudhuri, Hocquenghem (BCH) product codes
WO2008053472A2 (en) * 2006-10-30 2008-05-08 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US7904788B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of varying read threshold voltage in nonvolatile memory
KR100856129B1 (ko) 2006-12-29 2008-09-03 삼성전자주식회사 오정정 확률을 줄이는 에러 정정 회로, 그 방법 및 상기회로를 구비하는 반도체 메모리 장치
US7876621B2 (en) * 2007-04-23 2011-01-25 Sandisk Il Ltd. Adaptive dynamic reading of flash memories
JP2008300020A (ja) * 2007-06-04 2008-12-11 Toshiba Corp 再生装置
US7971123B2 (en) * 2007-07-02 2011-06-28 International Business Machines Corporation Multi-bit error correction scheme in multi-level memory storage system
US8185801B2 (en) * 2008-01-31 2012-05-22 International Business Machines Corporation System to improve error code decoding using historical information and associated methods
US8458536B2 (en) 2008-07-17 2013-06-04 Marvell World Trade Ltd. Data recovery in solid state memory devices
US8745466B2 (en) 2010-08-06 2014-06-03 Stmicroelectronics, Inc. Detecting data-write errors
US8638602B1 (en) * 2010-09-10 2014-01-28 Western Digital Technologies, Inc. Background selection of voltage reference values for performing memory read operations
US8503237B1 (en) 2011-05-18 2013-08-06 Western Digital Technologies, Inc. System and method for data recovery in a solid state storage device
US8406053B1 (en) 2011-09-21 2013-03-26 Sandisk Technologies Inc. On chip dynamic read for non-volatile storage
FR2983665B1 (fr) 2011-12-02 2014-06-20 Commissariat Energie Atomique Procede de generation d'un code correcteur lineaire maximise, procede et dispositif de decodage d'un tel code
FR2992504A1 (fr) 2012-06-26 2013-12-27 Commissariat Energie Atomique Dispositif et procede pour la correction d'erreurs dans un mot de code
US9036417B2 (en) 2012-09-06 2015-05-19 Sandisk Technologies Inc. On chip dynamic read level scan and error detection for nonvolatile storage

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07191914A (ja) * 1993-11-17 1995-07-28 Toshiba Corp データエラー訂正装置
JP2003100099A (ja) * 2001-09-25 2003-04-04 Toshiba Lsi System Support Kk 半導体回路システム
JP2007510253A (ja) * 2003-10-29 2007-04-19 サイファン・セミコンダクターズ・リミテッド 不揮発性メモリアレイの読み取り誤り検出のための方法、回路、及びシステム
WO2007132457A2 (en) * 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
WO2008042598A2 (en) * 2006-09-28 2008-04-10 Sandisk Corporation Involatile memory with soft-input,soft-output (siso) decoder, statistical unit and adaptive operation
JP2008108356A (ja) * 2006-10-25 2008-05-08 Toshiba Corp 不揮発性半導体記憶装置
WO2008117921A1 (en) * 2007-03-28 2008-10-02 Samsung Electronics Co., Ltd. Read level control apparatuses and methods

Also Published As

Publication number Publication date
JP5582372B2 (ja) 2014-09-03
CN101789269B (zh) 2014-09-24
JP2010092459A (ja) 2010-04-22
JP5272212B2 (ja) 2013-08-28
US20100017684A1 (en) 2010-01-21
US8458536B2 (en) 2013-06-04
US9032263B2 (en) 2015-05-12
US20130297985A1 (en) 2013-11-07
CN101789269A (zh) 2010-07-28

Similar Documents

Publication Publication Date Title
JP5272212B2 (ja) 固体メモリデバイスにおけるデータ復帰
US8145977B2 (en) Methods and apparatus for providing error correction to unwritten pages and for identifying unwritten pages in flash memory
US9170876B1 (en) Method and system for decoding encoded data stored in a non-volatile memory
US9990247B2 (en) Write mapping to mitigate hard errors via soft-decision decoding
US7613982B2 (en) Data processing apparatus and method for flash memory
US8479062B2 (en) Program disturb error logging and correction for flash memory
US10333558B2 (en) Decoding device and decoding method
US8321757B2 (en) Method and apparatus for error correction
US9208027B2 (en) Address error detection
US20150365106A1 (en) Deterministic read retry method for soft ldpc decoding in flash memories
US8316279B2 (en) Method of estimating and correcting errors in memory cells
TWI509624B (zh) 快閃記憶體裝置、記憶體控制器及快閃記憶體的控制方法
US8806295B2 (en) Mis-correction and no-correction rates for error control
KR20120011310A (ko) 기입 검증을 사용한 코드들의 에러-플로어 완화
US9419651B2 (en) Non-polynomial processing unit for soft-decision error correction coding
KR20130027138A (ko) 에러 정정 방법 및 이를 이용하는 메모리 장치
US20160283323A1 (en) Error detection using a logical address key
WO2020052672A1 (zh) Turbo乘积码的译码方法、装置、译码器及计算机存储介质
US20150170765A1 (en) Apparatus and method for decoding data
US20150074490A1 (en) Nonvolatile semiconductor memory device
TWI703572B (zh) 記憶體儲存裝置及其記憶體測試方法
US20220197554A1 (en) Matrix super parity for data storage
JP2004103049A (ja) 信号処理装置、信号処理方法、プログラム、および媒体

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140508

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140617

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140702

R150 Certificate of patent or registration of utility model

Ref document number: 5582372

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

LAPS Cancellation because of no payment of annual fees
R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371