JP5113066B2 - Mbcフラッシュメモリにおけるエラー訂正の方法 - Google Patents

Mbcフラッシュメモリにおけるエラー訂正の方法 Download PDF

Info

Publication number
JP5113066B2
JP5113066B2 JP2008535181A JP2008535181A JP5113066B2 JP 5113066 B2 JP5113066 B2 JP 5113066B2 JP 2008535181 A JP2008535181 A JP 2008535181A JP 2008535181 A JP2008535181 A JP 2008535181A JP 5113066 B2 JP5113066 B2 JP 5113066B2
Authority
JP
Japan
Prior art keywords
flash memory
bits
bit
error correction
logical pages
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.)
Expired - Fee Related
Application number
JP2008535181A
Other languages
English (en)
Other versions
JP2009512055A (ja
Inventor
リツィン、シモン
アルロド、イダン
シャロン、エラン
ムリン、マーク
ラッセル、メナケム
Original Assignee
ラマト アット テル アビブ ユニバーシティ リミテッド
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 ラマト アット テル アビブ ユニバーシティ リミテッド filed Critical ラマト アット テル アビブ ユニバーシティ リミテッド
Publication of JP2009512055A publication Critical patent/JP2009512055A/ja
Application granted granted Critical
Publication of JP5113066B2 publication Critical patent/JP5113066B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Detection And Correction Of Errors (AREA)

Description

本発明は、デジタルデータのエラー訂正に関し、より詳しくは、セルにつき複数のビットを記憶するフラッシュメモリ・デバイスのためのエラー訂正方法に関する。
フラッシュメモリ・デバイスは、長年知られている。典型的に、フラッシュメモリ内の各セルは、1ビットの情報を記憶する。伝統的に、ビットを記憶する方法は、セルの二つの状態をサポートすることであった。一方の状態が論理「0」を表し、他方の状態が論理「1」を表す。フラッシュメモリ・セルにおいては、セルのチャネル(セルのトランジスタのソースおよびドレイン素子を結合する領域)上方にフローティングゲートを設け、このフローティングゲート内に蓄えられる充電量に対して二つの有効な状態を得ることによって、二つの状態を実現している。典型的に、一方の状態は、フローティングゲートがゼロ電荷であり、消去後のセルの、書き込まれていない初期状態である(一般的に、「1」状態を表す、と定義する)。他方の状態は、フローティングゲートがいくらかの量の陰電荷を持つ(一般的に、状態「0」を表すと定義する)。ゲート内に陰電荷があることによって、セルのトランジスタのスレショルド電圧(すなわち、トランジスタを導通状態にするためにトランジスタの制御ゲートへ印加しなければならない電圧)が高くなる。さて、記憶ビットを読み出すことは、セルのスレショルド電圧をチェックすることによって可能である。スレショルド電圧が高い状態にあるなら、ビット値は「0」であり、スレショルド電圧が低い状態にあるなら、ビット値は「1」である。実は、セルのスレショルド電圧を正確に読み取る必要は全くない。必要なすべては、セルが現在、二つの状態のいずれにあるのかを、正しく識別することである。その目的では、二つの状態の中央にある基準電圧値に対して比較し、セルのスレショルド電圧がこの基準値よりも低いか、あるいは高いかを判定するだけで十分である。
図1Aは、これがどのように作用するのかを視覚的に示す。詳細には、図1Aは、かなりの個体数のセルのスレショルド電圧の分布を示す。フラッシュメモリのセルは、それらの特性および作用が、(例えば、不純物濃度の小さな差異、または、けい素構造の欠陥等が原因となって)必ずしも同一ではないため、すべてのセルに対して同じプログラミング・オペレーションを適用しても、セルの全てが、必ずしも同じスレショルド電圧を持つようになるというわけではない。(なお、歴史的理由により、データをフラッシュメモリに書き込むことは、一般的に、フラッシュメモリを「プログラムする」と呼ぶ。)であるから、スレショルド電圧は、図1Aに示す状態に類似して分散する。値「1」を記憶しているセルは、典型的に、負のスレッショルド電圧を持つため、大部分のセルは、図1Aの左側のピークで示す値の近くのスレショルド電圧を持ち、少数のセルが、より低い、あるいは高いスレショルド電圧を持つ。同様に、値「0」を記憶しているセルは、典型的に、正のスレッショルド電圧を持つため、大部分のセルは、図1Aの右側のピークで示す値の近くのスレショルド電圧を持ち、少数のセルが、より低い、あるいは高いスレショルド電圧を持つ。
近年、因習的に「マルチ・レベル・セル」または略してMLCと呼ぶ技術を用いる新しい種類のフラッシュメモリが市場に出ている。(この名称は、以前の種類のフラッシュ・セルも複数レベルを持つので、まぎらわしい。上述のように、それらは二つのレベルを持つ。したがって、フラッシュ・セルの二つの種類を、本文では「シングル・ビット・セル」(SBC)および「マルチ・ビット・セル」(MBC)と称する。)MBCフラッシュがもたらした改善は、各セルに2ビット以上を記憶することである。単一セルが2ビットの情報を記憶するためには、セルが、四つの異なる状態の一つであらねばならない。セルの「状態」は、そのスレショルド電圧が表すため、2ビットのMBCセルは、そのスレショルド電圧に対して、四つの異なる有効な範囲をサポートすべきであることは明らかである。 図1Bは、典型的な2ビットMBCセルにおけるスレショルド電圧の分布を示す。予想通り、図1Bには、各々が一つの状態に対応する四つのピークがある。SBCケースに関しては、各状態は、実は一つの範囲であり、単一数ではない。セルの内容を読み出すときに保証すべきすべては、セルのスレショルド電圧がある範囲を正しく識別することである。MBCフラッシュメモリの従来の技術による例としては、ハラリ氏の米国特許第5,434,825号がある。
同様に、単一のセルが3ビットの情報を記憶するためには、セルは、8つの異なる状態の一つになることができなければならない。このため、3ビットMBCセルは、そのスレショルド電圧に対して、8つの異なる有効な範囲をサポートすべきである。図1Cは、典型的な3ビットMBCセルのスレショルド電圧分布を示す。予想通り、図1Cには、各々が一つの状態に対応する8つのピークがある。図1Dは、4ビットMBCセルのスレショルド電圧分布を示す。これらの16の状態を表すには、16のスレショルド電圧範囲が必要である。
MBCセルにおける2ビットを、四つの状態を介してコード化するとき、図1Bの(典型的に、負のスレッショルド電圧を持つ)左端の状態によって、両ビットが値「1」を持つケースを表すのが一般的である。(下記の考察においては、以下の表記を用いる。セルの二つのビットを「下位ビット」および「上位ビット」と呼ぶ。ビットの明示値は、下位ビット値を右側に[「上位ビット」「下位ビット」]の形式で書く。したがって、下位ビットが「0」で、かつ上位ビットが「1」であるケースは、「10」と書く。この用語および表記の選択は、任意であり、他の名称および符号化が可能であることは理解すべきである)この表記法を用いると、左端の状態は、「11」のケースを表す。他の三つの状態には、典型的に、左から右へ順に、「10」、「00」、「01」と割り当てる。このエンコーディングを用いたMBCのNANDフラッシュメモリの実施例としては、チェン氏の米国特許第6,522,580号がある。この特許は、すべての目的において参照によって本文に完全に記述したように含むものとする。チェン氏の特許を表す、特に 図8を参照すること。また、タナカ氏の米国特許第6,643,188号も、MBCのNANDフラッシュメモリにおける類似の実施例である。しかし、図7を参照すると、ビット・エンコーディングへの状態の割り当てが、次のように異なっている。「11」、「10」、「01」、「00」。チェン氏のエンコーディングは、図1Bに図解したものである。
さて、上記の用語および表記を、以下のように、1セルにつき2ビットを超えるケースにまで拡張する。最も左の書き込みのない状態は、「オール1」(「1...1」)を表し、ストリング「1...10」は、セルの最下位ビットのみが「0」へ書き込まれたケースを表し、そしてストリング「01...1」は、セルの最上位ビットのみが「0」へ書き込まれたケースを表す。
MBCセルの内容を読み出すときは、セルのスレショルド電圧がある範囲を正しく識別しなければならない。この場合にのみ、一つの基準電圧だけに比較することによって、これが必ずしも達成できるとは限らず、複数の比較が必要となることもある。例えば、図1Bに図解したケースでは、下位ビットを読み出すには、まず、セルのスレショルド電圧を参照比較電圧V1に比較し、それから、その比較結果に応じて、ゼロ参照比較電圧あるいは参照比較電圧V2に比較する。代替的に、スレショルド電圧をゼロ基準電圧および参照比較電圧V2へ無条件に比較することによって、下位ビットは読み出せるが、この場合も2回の比較が必要である。1セルにつき2ビットを超えるケースでは、より多くの比較が必要となることもある。
単一のMBCセルのビットのすべては、同じフラッシュ・ページに属していてもよいし、あるいは異なるページに割り当てられてもよい。例えば、4−ビットセルでは、最下位ビットが0ページ内にあり、次のビットが1ページ内にあり、その次のビットが2ページ内にあり、そして最上位ビットが3ページ内にある(ページは、フラッシュメモリ内に別々に書き込むことが可能な、データの最小単位である)。両方法が使用されているが、本発明は、主に「自身のページ内の各ビット」アプローチに対して意図したものである。
ラッサー氏の米国特許出願第11/035,807号は、セルにつき複数のビットを記憶するフラッシュメモリ・セル内にビットをエンコードする方法を扱っている。ラッサー氏の米国特許出願第11/061,634号およびムリン氏の米国特許出願第11/078,478号は、マルチビット・フラッシュ・セルの異なる論理ページに渡るエラー分布の問題に対する、それらのビット・エンコーディング方法の影響を扱っている。詳しくは、ラッサー氏の’634は、ビット・エンコーディングの論理から物理へのマッピングを用いることによって、データのユーザから見た、また、エラー訂正コード(ECC)回路が扱う、異なる論理ページに渡ったエラー分布を均一化するための方法を開示している。他方、ムリン氏は、物理ビット・ページ間への論理ページのインターリービングを用いることによって、データのユーザから見た、またECC回路が扱う、異なる論理ページに渡ったエラー分布を均一化するための方法を開示している。これら三つの、すべての従来の技術による特許出願は、すべての目的に対して、参照により本文に完全に記述したものとみなす。
ラッサー氏の’634およびムリン氏のものの両方は、ECC回路の設計対象とすべきエラー率を減少させるという同じ目標を持つ。両出願に提示された例では、4論理ページのデータを、各々15,000ビットで記憶するために、15,000個の4ビットMBCフラッシュ・メモリ・セルのグループを使用している。推定セル・エラー率は、1,000分の1であり、生じるビット・エラーの最適数は15であるため、1論理ページ内の最適平均ビット・エラーは、3.75である。この例は、提案の新考案を用いない限り、ある特定な論理ページが、かなり高いビット・エラー率を示すこともあり得ることを示している。この例では6ビット・エラーである。これは、セル内に記憶したすべてのビットに渡るビット・エラーの全体的な平均は、比較的に低くとも(60,000分の15、あるいは4,000分の1)、特別な処置をとらない限り、論理ページ内のエラーを訂正するECC回路は、比較的高い平均ビット・エラー率(その例では、15,000分の6、あるいは2,500分の1)を処理できるように設計しなければならないことを意味する。
したがって、現在既知である方法の、上述のような欠点を克服する、MBCフラッシュメモリのためのエラー訂正方法の必要性が広く認識される、また、そのような方法を得ることは非常に有利である。
[定義]
「論理ページ」は、単一のコマンドによって記憶される、外部から記憶システムへの最小データ塊である。例えば、同じセルの複数のビットが、異なるページに属する、1セルにつき2ビットのMBC・NANDフラッシュ・デバイスでは、一グループのセルの書き込みは、まず、そのグループ内のセルの第一ビットに対して最初の「ページ書き込み」コマンドを送信し、それからそのグループ内のセルの第二のビットに対して第二の「ページ書き込み」コマンドを送信することによって行う。第一のコマンドで設けるデータ・ビットは、第一の論理ページを構成し、第二のコマンドで設けるデータ・ビットは、第二の論理ページを構成する。
ムリン氏のように、一つの「ビット・ページ」は、それらのグループのセルにおける同じビット位置を占有するすべてのビットの集合であり、その集合は、一つのコマンドで一緒に書き込まれる。例えば、論理ページにおけるビット数が、物理ページにおけるセル数と同じであるならば、物理ページにおけるすべてのセルの最上位(あるいは最下位)ビットの集合は、一つのビット・ページを構成する。前の例では、セルの第一のビットとして記憶したすべてのビットは、単一ビット・ページを構成する。ほとんどのシステムにおいては、論理ページと、論理ページを記憶するビット・ページとの間には、一対一の対応がある。しかし、ムリン氏においては、そのような対応が必須ではないことが分かる。ムリン氏の方法では、論理ページは、複数のビット・ページに渡ってインターリーブされる。
本発明は、ECC回路の設計目的であるビット・エラー率を最小にするという同じ問題に対して、異なるアプローチを用いる。ラッサー’634およびムリンの両方は、この問題を解決するために、同じ基本的なアプローチを共有している。両方とも、一度に単一の論理ページに関して処理を行うECC回路に依存している。上記の例の条件では、ECCは、一度に、15,000ビットのデータ塊を訂正する。そのようなデータ塊の各々は、それ自身のECCパリティ・ビットが付随している。データ・ビットと、それらの関連ECCパリティ・ビットとの結合を、ECC技術の用語では「コード・ワード」と呼ぶ。コード・ワードにおけるビットの総数に対するデータ・ビット数の比率は、ECCスキームの「率」と呼ぶ。高率であればあるほど、データ・ビットを保護するために「無駄になる」記憶ビットが少ないので、最適である。もちろん、データの予想ビット・エラー率が高ければ高いほど、ECCパリティ・ビットには、より多くのビットを割り当てるべきであり、ECC率は低くなる。
本発明の革新性は、ECC回路が、一度に単一論理ページに対してではなく、セル内に記憶したすべてのビットに対して、または少なくとも複数の論理ページのビットに対して、一つの大きな塊として処理を行うことにある。上記の例の条件では、ECCは、各々60,000ビットのデータ塊を訂正する。これらの60,000のデータ・ビットには、より大きなデータ塊の訂正を可能とする対応ECCパリティ・ビットが付随する。
上記の例において同じセルを共有するすべての論理ページのデータ・ビットを含む大塊データ・ビットの予想ビット・エラー率は、60,000分の15または4,000分の1である。これは、ラッサー’634およびムリンの方法によって達成できる最適平均に等しいが、コード・マッピングあるいはインターリービングの余分な複雑さがない。これが、偶然の一致ではなく、方法の普遍的な特性であることは容易に理解できる。ページサイズやエラー分布プロフィールに関わらず、セル内のすべてのビットを、それらすべてを一つのコード・ワードとして扱って、一つの塊として処理するECCスキームを用いると、予想平均ビット・エラー率は、常に、ラッサー’634およびムリンによって達成可能な最適値である。
より大きなコード・ワードを処理するECCスキームは、より複雑な回路を必要とすることは事実である。しかし、これは、エラー訂正論における周知の結果で補償できる。それによれば、処理するコード・ワードが大きければ大きいほど、同じビット・エラー率に対して達成可能なコード率は、より高い。換言すれば、より長いECCコード・ワードを用いることによって、フラッシュメモリ内に記憶しなければならないECCパリティ・ビットの数、そしてそれゆえにエラー訂正のために「浪費される」記憶スペースの量は、より小さくなる。これは、通常、余分なECC回路を補償する以上のものである。
論理ページの各々を、単独で、異なるコード率を用いて異なるECCスキームによって処理するならば、すべての論理ページに対するパリティ・ビットの全数は、本発明の大きなコード・ワードを用いる場合よりも、パリティ・ビットの数をより小さくできる、との議論もあるであろう。そのとおりである。エラー率が低い論理ページのいくつかは、必要なパリティ・ビットが少数でよいことは知られている。しかし、その議論は、コスト高な、論理ページ毎に一つの、複数のECCモジュールを実行する必要性を無視している。代替的に、一つのECCモジュールを、すべての論理ページに対して用いて、一つずつ訂正することもできるが、その場合、実行されるモジュールは、最高エラー率で論理ページを訂正することが可能な、低いコード率を用いるものでなければならない。であるから、今回も、本発明の方法の方が優れている。
したがって、本発明によれば、マルチ・ビット・パー・セル・フラッシュメモリ内にデータを記憶するための、次のステップを含む方法が提供される。(a)データ・ビットの複数の論理ページに対して、エラー訂正パリティ・ビットを計算するステップ。この場合、エラー訂正パリティ・ビットの少なくとも一つが、論理ページの少なくとも二つに連帯的に適用される。そして(b)データ・ビットおよびエラー訂正パリティ・ビットでMBCフラッシュメモリをプログラムするステップ。この場合、MBCフラッシュメモリの少なくとも一つのセルが、少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページの複数からのデータ・ビットでプログラムされる。
さらに、複数の論理ページのデータ・ビットで、そしてデータ・ビットに対して計算されるエラー訂正パリティ・ビットでプログラムされるMBCフラッシュメモリであって、かつ、少なくとも一つのエラー訂正パリティ・ビットが、少なくとも二つの論理ページに連帯的に適用され、そしてMBCフラッシュメモリの少なくとも一つのセルが、少なくとも一つの連帯エラー訂正ビットが適用される少なくとも二つの論理ページの複数からのデータ・ビットでプログラムされるMBCフラッシュメモリにおいて、本発明によれば、データ・ビットを復旧するための、次のステップを含む方法が提供される。(a)MBCフラッシュメモリから、(i)少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのデータ・ビット、そして(ii)少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのいずれかに適用されるエラー訂正パリティ・ビットを読み出すステップ。そして(b)MBCフラッシュメモリから読み出されるエラー訂正パリティ・ビットに従って、MBCフラッシュメモリから読み出されるデータ・ビットを訂正するステップ。
さらに、本発明によれば、MBCフラッシュメモリのためのコントローラが提供される。このコントローラは、データ・ビットに対してエラー訂正パリティ・ビットを計算することを含むステップによって、MBCフラッシュメモリ内に複数の論理ページのデータ・ビットを記憶するよう作動可能である。この場合、少なくとも一つのエラー訂正パリティ・ビットが、論理ページの少なくとも二つに連帯的に適用され、そして、少なくとも一つの連帯エラー訂正パリティ・ビットは、適用される少なくとも二つの論理ページの複数からのデータ・ビットが、MBCフラッシュメモリの少なくとも一つのセルの各々に一緒に記憶される。
さらに、本発明によれば、コンピュータで読み取り可能なコードを持つ、コンピュータで読み取り可能な記憶メディアが提供される。コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化されて、MBCフラッシュメモリを管理するためのものである。コンピュータで読み取り可能なコードは、以下を含む。(a)MBCフラッシュメモリ内に記憶すべきデータ・ビットの複数の論理ページに対して、エラー訂正パリティ・ビットを計算するためのプログラム・コード。この場合、エラー訂正パリティ・ビットの少なくとも一つが、論理ページの少なくとも二つに連帯的に適用される。そして(b)データ・ビットおよびエラー訂正パリティ・ビットでMBCフラッシュメモリをプログラムするためのプログラム・コード。この場合、MBCフラッシュメモリの少なくとも一つのセルが、少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページの複数からのデータ・ビットでプログラムされる。
さらに、複数の論理ページのデータ・ビットで、そして前記データ・ビットに対して計算されるエラー訂正パリティ・ビットでプログラムされるマルチ・ビット・パー・セル(MBC)フラッシュメモリであって、かつ、少なくとも一つのエラー訂正パリティ・ビットが、少なくとも二つの論理ページに連帯的に適用され、そしてMBCフラッシュメモリの少なくとも一つのセルが、少なくとも一つの連帯エラー訂正ビットが適用される少なくとも二つの論理ページの複数からのデータ・ビットでプログラムされるMBCフラッシュメモリにおいて、本発明によれば、コンピュータで読み取り可能なコードを持つ、コンピュータで読み取り可能な記憶メディアが提供される。コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、以下のものを含む。(a)MBCフラッシュメモリから、(i)少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのデータ・ビット、そして(ii)少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのいずれかに適用されるエラー訂正パリティ・ビットを読み出すためのプログラム・コード。そして(b)MBCフラッシュメモリから読み出されるエラー訂正パリティ・ビットに従って、MBCフラッシュメモリから読み出されるデータ・ビットを訂正するためのプログラム・コード。
さらに、本発明によれば、MBCフラッシュメモリにデータを記憶するための、次のステップを含む方法が提供される。(a)データ・ビットの複数の論理ページの少なくとも二つに対して、連帯ECCコード・ワードを計算するステップ。そして(b)連帯ECCコード・ワードでMBCフラッシュメモリをプログラムするステップ。
さらに、データ・ビットの複数の論理ページの少なくとも二つに対して計算される連帯ECCコード・ワードでプログラムされるMBCフラッシュメモリにおいて、本発明によれば、データ・ビットを復旧するための、次のステップを含む方法が提供される。(a)フラッシュメモリから連帯ECCコード・ワードを読み出すステップ、そして(b)フラッシュメモリから読み出される連帯ECCコード・ワードから、連帯ECCコード・ワードが計算された少なくとも二つの論理ページのデータ・ビットを復旧するステップ。
さらに、本発明によれば、MBCフラッシュメモリのためのコントローラが提供される。このコントローラは、論理ページの少なくとも二つに対して連帯ECCコード・ワードを計算することを含むステップによって、MBCフラッシュメモリ内に複数の論理ページのデータ・ビットを記憶するよう作動可能である。
さらに、本発明によれば、コンピュータで読み取り可能なコードを持つ、コンピュータで読み取り可能な記憶メディアが提供される。コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、MBCフラッシュメモリを管理するためのものであり、以下のものを含む。(a)MBCフラッシュメモリ内に記憶すべきデータ・ビットの複数の論理ページの少なくとも二つに対して連帯ECCコード・ワードを計算するためのプログラム・コード。そして(b)連帯ECCコード・ワードでMBCフラッシュメモリをプログラムするためのプログラム・コード。
さらに、データ・ビットの複数の論理ページの少なくとも二つに対して計算される連帯ECCコード・ワードでプログラムされるMBCフラッシュメモリにおいて、本発明によれば、コンピュータで読み取り可能なコードを持つ、コンピュータで読み取り可能な記憶メディアが提供される。コンピュータで読み取り可能なコードは、コンピュータで読み取り可能な記憶メディア上に具現化され、以下のものを含む。(a)フラッシュメモリから連帯ECCコード・ワードを読み出すためのプログラム・コード。そして(b)フラッシュメモリから読み出される連帯ECCコード・ワードから、連帯ECCコード・ワードが計算された少なくとも二つの論理ページのデータ・ビットを復旧するためのプログラム・コード。
本発明の第一の基本的な方法によれば、MBCフラッシュメモリ内にデータ・ビットの複数の論理ページが記憶されるとき、データ・ビットに対してエラー訂正パリティ・ビットが計算されるが、このとき、エラー訂正パリティ・ビットの少なくとも一つが、論理ページの少なくとも二つに適用される。エラー訂正パリティ・ビットが論理ページ「に適用される」は、エラー訂正パリティ・ビットが、その論理ページのデータから計算され、そして、その論理ページのデータ訂正に用いられなければならないということを意味する。添付の請求項においては、二つ以上の論理ページに適用されるそのようなエラー訂正パリティ・ビットを、「連帯」エラー訂正パリティ・ビットと呼ぶ。それから、MBCフラッシュメモリが、データ・ビットで、そしてエラー訂正パリティ・ビットでプログラムされる。このとき、MBCフラッシュメモリの少なくとも一つのセルが、単数あるいは複数の連帯エラー訂正パリティ・ビットが適用される論理ページの複数からのデータ・ビットでプログラムされる。換言すれば、データ・ビットでプログラムされるMBCフラッシュメモリのすべてのセルが、一つの論理ページのみからのデータ・ビットでプログラムされるというわけではない。
すべてのエラー訂正パリティ・ビットが、すべての論理ページに適用されることが好ましい。択一的に、三つ以上の論理ページがある場合、エラー訂正ビットは、論理ページのすべてに対してではなく、論理ページの少なくとも二つに対して連帯的に計算される。また、択一的に、いくつかのエラー訂正パリティ・ビットのみが、複数の論理ページに適用され、他のエラー訂正パリティ・ビットが、単一の論理ページにのみ適用される。
データ・ビットおよびエラー訂正パリティ・ビットでプログラムされるフラッシュメモリの各セルが、複数の論理ページ内に存在する論理ページと同じくらい多くのビットでプログラムされることが好ましい。また、プログラミングの後、フラッシュメモリから、単数あるいは複数のエラー訂正パリティ・ビットが適用される二つ以上の論理ページのデータ・ビットを、もしそれらの二つ以上の論理ページに適用される連帯エラー訂正パリティ・ビットや他のエラー訂正パリティ・ビットがあるならば、それらと共に読み出すことが好ましい。通常、すべてのエラー訂正ビットは、それらの二つ以上の論理ページに適用されるが、エラー訂正パリティ・ビットのいくつか、あるいはほとんどが、(三つ以上の論理ページが存在するとき)それらの論理ページのいくつかのみに、または、それらの論理ページの一つだけに適用されることもあり得る。それから、フラッシュメモリから読み出されるデータ・ビットが、フラッシュメモリから読み出されるエラー訂正パリティ・ビットに従って訂正される。
本発明の第二の基本的な方法によれば、データ・ビットの複数の論理ページがMBCフラッシュメモリ内に記憶されるとき、論理ページの少なくとも二つに対して連帯ECCコード・ワードが計算される。ECCは、体系的でも、あるいは非体系的でもよい。この場合、MBCフラッシュメモリは、連帯ECCコード・ワードでプログラムされる。
本方法のいくつかの実施例では、複数の論理ページは、三つ以上の論理ページを含み、そしてコード・ワードは、論理ページのすべてよりも少数の論理ページに対して計算される。
連帯ECCコード・ワードのビットでプログラムされるフラッシュメモリの各セルが、連帯ECCコード・ワードが計算された論理ページが存在すると同じくらい多くの、連帯ECCコード・ワードのビットでプログラムされることが好ましい。択一的に、連帯ECCコード・ワードのビットでプログラムされるフラッシュメモリの各セルは、複数の論理ページ内に存在する論理ページと同数の、連帯ECCコード・ワードのビットでプログラムされる。
プログラミングの後、フラッシュメモリから連帯ECCコード・ワードを読み出し、それから、フラッシュメモリから読み出される連帯ECCコード・ワードから、連帯ECCコード・ワードが計算された論理ページのデータ・ビットを復旧することが好ましい。
また、本発明の範囲は、本発明の方法の一つに従ってMBCメモリを管理するコントローラ、コントローラおよびMBCメモリを含むメモリ・デバイス、そして本発明の方法の一つに従ってメモリを管理するためのコンピュータで読み取り可能なコードを具象化したコンピュータで読み取り可能な記憶メディアを含む。コントローラは、コントローラによって実行される本発明の方法に従って、メモリ・デバイスのホストへ、MBCメモリ内に記憶されたデータ・ビットを提供するよう作動可能であることが好ましい。
本発明は、マルチビット・パー・セル・メモリにおけるエラー訂正の方法に関する。
本発明によるMBCエラー訂正の原理および作用は、図面とその説明文を参照することによって、よりよく理解できる。
(ラッサー氏の’634およびムリン氏の方法等の)すべての従来の技術による方法においては、一グループのMBCセル内に記憶すべきデータは、外部から複数の論理ページとして記憶システムへ提供され、それから、ECCパリティ・ビットが論理ページごとに別々に計算される。さらに、そのようなほとんどのシステムでは、論理ページのすべてのデータ・ビットおよびその同じページの対応するパリティ・ビットが、同じビット・ページ内に記憶される。ムリン氏の方法は、インターリービング・スキームによって、論理ページのビットが複数のビット・ページ内に点在することになるので、この第二の観察に関しては例外である。しかし、ムリンでさえも、論理ページのパリティ・ビットが、その論理ページのデータ・ビットのみに依存するという第一の観察には従っている。本発明の方法によれば、こんなことは、もはやない。いくつかの、またはすべてのパリティ・ビットは、複数の論理ページからのデータ・ビットの機能であり、単一ページからのものではない。これは、すべてのビットを一つの長いコード・ワードとして扱うことの結果である。
書き込みプロセスのこの特徴の帰結(すなわち、いくつかの、またはすべてのパリティ・ビットが、複数の論理ページからのデータ・ビットの機能であるということ)は、読み取りおよびエラー訂正プロセスにおけるパリティ・ビットの使い方である。(ラッサー’634およびムリンを含む)すべての従来の技術によるシステムでは、特定なパリティ・ビットは、一つの論理ページを訂正するのみに用いられる。これは、合理的な予測である。各パリティ・ビットは、当初、単一の論理ページのデータ・ビットのみを用いて計算しているので、そのパリティ・ビットは、他の論理ページ内のデータ・ビットに関する情報を全く表さないから、それを計算した基礎の単一論理ページを訂正することにのみ使用すべきである。本発明の方法の場合は、このようなことはない。いくつかのパリティ・ビットは、複数の論理ページからのデータに基づいて計算される、その結果、それらのビットは、それらの複数の論理ページの訂正を行う際に直接的に用いてもよい。
バン氏らの米国特許出願第10/867,645号は、これに関連した問題を扱っている。バン氏らの方法によれば、他のすべての従来の技術の場合のように、各論理ページは、対応する論理ページのデータ・ビットのみに基づいて計算された、それ自身のECCパリティ・ビットを持つ。しかし、バン氏らは、同じグループのセルからなる訂正された論理ページが、限られた様式で互いに影響を及ぼすことを可能としたことで、他の従来の技術とは異なっている。特定なビット・ページのビットにエラーが検出されて、それが訂正された場合、同じセルのより有効なビット・ページの対応するビットに対して、いくらかの訂正を適用してもよい。しかし、これは、本発明による方法の開示には達していない。バン氏らの方法では、パリティ・ビットは、複数の論理ページのECC計算に全く直接的に影響しない。もう一つの論理ページへの唯一の限られた影響は、ECC計算の範囲外にある高度な物理的な配慮を介した間接的なものである。
本発明の方法のもう一つの含意は、データ・ビットおよびパリティ・ビットを含むセル・グループ内に記憶したビットのすべてが、採用のECCスキームの一つの長いコード・ワードとして処理されることである。どの特定なECCスキームを用いるかは重要ではない。問題となるのは、同じグループのセルに存在するすべての論理ページは、ECCの観点から、一つの実体として一緒に処理されることである。上記に説明したように、最適ビット・エラー率を提供することに加えて、このアプローチは、また、データ・ビットに対するパリティ・ビットの割合が減少した、より効率的なエラー訂正を提供する。
本発明の方法の範囲は、また、同じグループのセル内に存在する論理ページのサブセットのみが、連帯コード・ワードとして処理される、より一般化したケースを含む。例えば、セルにつき4ビットのMBCフラッシュメモリにおいては、論理ページを、各々二つの論理ページの二つのグループとして、または三つの論理ページに一つの単一論理ページを加えた一つのグループとして、または、さらに、二つの論理ページに二つの単一論理ページを加えた一つのグループとしてグループ化してもよい。本発明の方法は、同じセルを共有する少なくとも二つの論理ページが、同じセルを共有する他の論理ページが如何に処理されるかに関わらず、ECCスキームによって一つのコード・ワードとして一緒に処理されるどのケースをも含むと理解すべきである。
さて、図面を参照する。図2Aおよび2Bは、本発明の方法の適用前後における、MBCフラッシュメモリの(説明の目的で、非常に小さな)ブロックを、表として示す。図2Aおよび2Bの各々における表の各列は、ブロックの一つのセルを表す、そして各行は、ビット・エンコーディングの有効係数を表す。一番上の行は最上位ビットを表し、第二の行は次に有効なビットを表し、第三の行は、最下位のすぐ上の有効ビットを表し、そして最後の行は、最下位ビットを表す。各表の各エントリは、対応するメモリ・セル内の対応する有効係数のビットが表す、ビットのソース論理ページを示す。データ・ビットを記憶するメモリ・セルには、陰影が施されていない。ECCビットを記憶するメモリ・セルには、陰影がついている。
初期状態で、各々が10ビットを持つ、データのための四つの論理ページが、メモリ・ブロック内に記憶されている。第一の論理ページのビットは、データ・セルの最下位ビットとしてコード化されている。第二の論理ページのビットは、データ・セルの下から二番目のビットとしてコード化されている。第三の論理ページのビットは、データ・セルの上から二番目のビットとしてコード化されている。第四の論理ページのビットは、データ・セルの最上位ビットとしてコード化されている。例えば、第一の論理ページの第一のビットが「1」で、第二の論理ページの第一のビットが「0」で、第三の論理ページの第一のビットが「0」で、そして第四の論理ページの最初のビットが「1」であるならば、図1Dに示すビット・エンコーディング・スキームを用いて、第一の(左端の)セルは、左から五番目の電圧帯域へプログラムする。この時点で、ECCセルは、まだプログラムされていない。
それから、本発明の方法を用いて、これらのデータ・ビットを、第一および第二の論理ページに対する一つのコード・ワード、そして第三および第四の論理ページに対するもう一つのコード・ワードの、二つの28ビット・コード・ワードへ変換する。 図2Bで示すように、第一のコード・ワードのECCビットは、ECCセルの最下位ビット、そして下から二番目のビット内にコード化し、第二のコード・ワードのECCビットは、ECCセルの上から二番目のビット、そして最上位ビット内にコード化する。
ここまで、本発明を、「体系的」な、エラー訂正スキームに関連させて提示してきた。体系的なエラー訂正コーディングは、元のデータ・ビットがエンコーディング・プロセスで維持され、記憶ビット内で識別可能であるという事実を特徴とする。換言すれば、エラー訂正メカニズムは、元のデータ・ビットを取り、それらにいくつかのパリティ・ビットを付加し、データ・ビットおよびパリティ・ビットの両方を記憶する。後に記憶ビットを読み取るとき、データ・ビットおよびパリティ・ビットの両方を読み出すが、パリティ・ビットは、読み取ったデータ・ビットでのエラーの訂正を可能にするため、元のデータ・ビットを生成できる。
しかし、本発明は、非体系的なエラー訂正コードにも等しく適用できる。そのようなコードでは、元のデータ・ビットは維持されず、また記憶されることもない。その代わり、エンコーディング・プロセスは、元のデータ・ビットを、より大きなグループのビット(本文では「保護データ・ビット」と呼ぶ)へ変換し、この変換後のものを記憶する。体系的なエラー・コードにおけるデータ・ビットと関連ECCパリティ・ビットとの結合のように、非体系的なエラー・コードの保護データ・ビットも、本文では、元のデータ・ビットに対応するコード・ワードであると考える。記憶された保護データ・ビットを読み出すとき、保護データ・ビットにエラーがあるとしても、元のデータ・ビットを再生する。非体系的なコードの特徴を定義するものは、特定な元データ・ビットと特定な記憶ビットとの間に直接的な対応がない、ということである。元データ・ビットは、複数の記憶ビット内に「点在する」。そして、それらの複数の記憶ビットの組み合わせのみが、元のビット値を表す。
図3Aおよび3Bは、図2Aおよび2Bに対応するが、体系的なECCの代わりに非体系的なECCを用いる。図3Aは、図2Aと同一である。図3Bは、本発明の非体系的なECCエンコーディング後、データ・ビットとECCビットとの間で有意義な識別が不可能であることを示す。第一のコード・ワードのすべてのビットは、データ・セルおよびECCセルの両方の、最下位ビットおよび下から二番目のビット内にコード化され、そして第二のコード・ワードのすべてのビットは、データ・セルおよびECCセルの両方の、上から二番目のビットおよび最上位ビットでコード化される。
図4は、ホスト30に接続した、本発明によるフラッシュメモリ・デバイス20の高度なブロック図である。図4は、バン氏の米国特許第5,404,485号を示す図1を適応させたものである。なお、この特許は、すべての目的において参照によって本文に完全に記述したように含むものとする。フラッシュメモリ・デバイス20は、フラッシュメモリ24、コントローラ22およびランダムアクセスメモリ(RAM)26を含む。米国特許第5,404,485号の「フラッシュコントロール14」に対応するコントローラ22は、米国特許第5,404,485号で説明されているように、RAM26の助けを借りてフラッシュメモリ24を管理する。コントローラ22は、また、上述のエラー訂正で、データを、フラッシュメモリ24の1セルにつき2ビット以上でコード化する。
図5は、本発明による、択一的なデータ記憶システム50を表す高度な部分ブロック図である。データ記憶システム50は、プロセッサ52と、四つのメモリ・デバイス、すなわちRAM54、ブートROM56、大容量記憶デバイス(ハードディスク)58およびフラッシュメモリ・デバイス40を含む。これらすべては、共通バス60を介して通信する。フラッシュメモリ・デバイス20のように、フラッシュメモリ・デバイス40は、フラッシュメモリ42を含むが、フラッシュメモリ・デバイス20とは異なり、フラッシュメモリ・デバイス40は、それ自身のコントローラやRAMを持たない。その代わり、プロセッサ52は、ソフトウェア・ドライバを実行することによって、コントローラ22をエミュレートする。このドライバは、例えば、イスラエル、クファル・サバのMシステムズ・フラッシュディスク・パイオニア社のTrueFFSドライバ等の方式で、米国特許第5,404,485号の方法を実現し、また、上述のようにデータを、フラッシュメモリ42の1セルにつき2ビット以上でコード化する。フラッシュメモリ・デバイス40は、また、プロセッサ52がフラッシュメモリ42と通信することを可能にするバス・インターフェイス44を含む。
プロセッサ52が、フラッシュメモリ42を管理するために実行するソフトウェア・ドライバのコードは、大容量記憶デバイス58内に記憶されており、実行の際にRAM54へ移される。このように、大容量記憶デバイス58は、本発明の原理によるフラッシュメモリ42を管理するための、コンピュータで読み込み可能なコードを埋め込んだ、コンピュータで読み取り可能なコード記憶メディアの例である。
本発明を限られた数の実施例に関して説明したが、本発明の多くの変形、修正、そして他の応用が可能であることは明らかである。
本発明を、例としてのみ、添付の図面を参照して説明する。
1ビット・フラッシュ・セル、2ビット・フラッシュ・セル、3ビット・フラッシュ・セルおよび4ビット・フラッシュ・セルのスレショルド電圧分布を示す。 1ビット・フラッシュ・セル、2ビット・フラッシュ・セル、3ビット・フラッシュ・セルおよび4ビット・フラッシュ・セルのスレショルド電圧分布を示す。 1ビット・フラッシュ・セル、2ビット・フラッシュ・セル、3ビット・フラッシュ・セルおよび4ビット・フラッシュ・セルのスレショルド電圧分布を示す。 1ビット・フラッシュ・セル、2ビット・フラッシュ・セル、3ビット・フラッシュ・セルおよび4ビット・フラッシュ・セルのスレショルド電圧分布を示す。 2論理ページに及ぶ、体系的なECCコード・ワードを例示する。 2論理ページに及ぶ、体系的なECCコード・ワードを例示する。 2論理ページに及ぶ、非体系的なECCコード・ワードを例示する。 2論理ページに及ぶ、非体系的なECCコード・ワードを例示する。 本発明におけるフラッシュメモリ・デバイスの高度なブロック図である。 本発明におけるデータ記憶システムの、高度な部分ブロック図である。

Claims (10)

  1. マルチ・ビット・パー・セル(MBC)フラッシュメモリ内にデータを記憶するための方法であって、
    (a)データ・ビットの複数の論理ページに対してエラー訂正パリティ・ビットを計算するステップ、この場合、前記エラー訂正パリティ・ビットの少なくとも一つが、前記論理ページの少なくとも二つに連帯的に適用され、そして
    (b)前記データ・ビットおよび前記エラー訂正パリティ・ビットでMBCフラッシュメモリをプログラムするステップからなり、MBCフラッシュメモリの少なくとも一つのセルが、前記少なくとも一つの連帯エラー訂正パリティ・ビットが適用される前記少なくとも二つの論理ページの複数からのデータ・ビットでプログラムされる、方法。
  2. すべての前記エラー訂正パリティ・ビットが、すべての前記論理ページに適用される、請求項1の方法。
  3. 前記複数が、二つより多い前記論理ページを含み、そして前記計算が、少なくとも二つの前記論理ページに対して、しかし、すべてよりも少ない個数の前記論理ページに対して前記エラー訂正パリティ・ビットを連帯的に計算することを含む、請求項1の方法。
  4. 前記ビットでプログラムされる前記フラッシュメモリの各セルが、前記複数の論理ページ内に論理ページが存在すると同じだけ多くの前記ビットでプログラムされる、請求項1の方法。
  5. 複数の論理ページのデータ・ビット、そしてデータ・ビットに対して計算されるエラー訂正パリティ・ビットでプログラムされるマルチ・ビット・パー・セル(MBC)フラッシュメモリであって、少なくとも一つのエラー訂正パリティ・ビットが、少なくとも二つの論理ページに連帯的に適用され、そしてMBCフラッシュメモリの少なくとも一つのセルが、少なくとも一つの連帯エラー訂正ビットが適用される少なくとも二つの論理ページの複数からのデータ・ビットでプログラムされるMBCフラッシュメモリにおいて、
    データ・ビットを復旧させる方法であって、
    (a)MBCフラッシュメモリから、
    (i)少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのデータ・ビット、そして
    (ii)少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのいずれかに適用されるエラー訂正パリティ・ビットを読み出すステップ、そして
    (b)MBCフラッシュメモリから読み出されるエラー訂正パリティ・ビットに従って、MBCフラッシュメモリから読み出されるデータ・ビットを訂正するステップからなる、方法。
  6. マルチ・ビット・パー・セル(MBC)フラッシュメモリのためのコントローラであって、MBCフラッシュメモリ内に、複数の論理ページのデータ・ビットを、それらデータ・ビットに対してエラー訂正パリティ・ビットを計算することを含むステップによって記憶するよう作動可能であり、少なくとも一つのエラー訂正パリティ・ビットが、少なくとも二つの論理ページに連帯的に適用され、そして、少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページの複数からのデータ・ビットが、MBCフラッシュメモリの少なくとも一つのセルの各々に一緒に記憶される、コントローラ。
  7. コントローラが、コントローラおよびMBCフラッシュメモリを含むメモリ・デバイスのホストへ、
    (a)MBCフラッシュメモリから、
    (i)少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのデータ・ビット、そして
    (ii)少なくとも一つの連帯エラー訂正パリティ・ビットが適用される少なくとも二つの論理ページのいずれかに適用されるエラー訂正パリティ・ビットを読み出すこと、そして
    (b)MBCフラッシュメモリから読み出されるエラー訂正パリティ・ビットに従って、MBCフラッシュメモリから読み出されるデータ・ビットを訂正することを含むステップによって、データ・ビットを提供するよう作動可能である、請求項6のコントローラ。
  8. (a)請求項6のコントローラ、そして
    (b)請求項6のコントローラによって制御されるMBCフラッシュメモリからなる、メモリ・デバイス。
  9. マルチ・ビット・パー・セル(MBC)フラッシュメモリにデータを記憶する方法であって、
    (a)複数の論理ページの少なくとも二つに対して、連帯エラー訂正コード(ECC)コード・ワードを計算するステップと、
    b)前記連帯ECCコード・ワードでMBCフラッシュメモリをプログラムするステップと、
    を備え、
    前記連帯ECCコード・ワードでプログラムされるMBCフラッシュメモリの各セルが、前記連帯ECCコード・ワードが計算された前記論理ページのビット数と等しい、前記連帯ECCコード・ワードのビット数でプログラムされる、方法。
  10. マルチ・ビット・パー・セル(MBC)フラッシュメモリにデータを記憶する方法であって、
    (a)複数の論理ページの少なくとも二つに対して、連帯エラー訂正コード(ECC)コード・ワードを計算するステップと、
    (b)前記連帯ECCコード・ワードでMBCフラッシュメモリをプログラムするステップと、
    を備え、
    前記連帯ECCコード・ワードでプログラムされる前記フラッシュメモリの各セルが、前記複数の論理ページのビット数と等しいビット数でプログラムされる、方法。
JP2008535181A 2005-10-13 2006-10-04 Mbcフラッシュメモリにおけるエラー訂正の方法 Expired - Fee Related JP5113066B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US72586205P 2005-10-13 2005-10-13
US60/725,862 2005-10-13
US11/329,075 US7681109B2 (en) 2005-10-13 2006-01-11 Method of error correction in MBC flash memory
US11/329,075 2006-01-11
PCT/IL2006/001159 WO2007043042A2 (en) 2005-10-13 2006-10-04 Method of error correction in mbc flash memory

Publications (2)

Publication Number Publication Date
JP2009512055A JP2009512055A (ja) 2009-03-19
JP5113066B2 true JP5113066B2 (ja) 2013-01-09

Family

ID=37943213

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008535181A Expired - Fee Related JP5113066B2 (ja) 2005-10-13 2006-10-04 Mbcフラッシュメモリにおけるエラー訂正の方法

Country Status (8)

Country Link
US (2) US7681109B2 (ja)
EP (2) EP2287740B1 (ja)
JP (1) JP5113066B2 (ja)
KR (1) KR100987632B1 (ja)
CN (1) CN101536109B (ja)
AT (1) ATE489675T1 (ja)
DE (1) DE602006018497D1 (ja)
WO (1) WO2007043042A2 (ja)

Families Citing this family (247)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006302345A (ja) * 2005-04-15 2006-11-02 Sony Corp データ処理装置、データ再生装置、データ処理方法及びプログラム
WO2007023674A1 (ja) * 2005-08-22 2007-03-01 Matsushita Electric Industrial Co., Ltd. メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びデータ書き込み方法
US7681109B2 (en) * 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
US7526715B2 (en) * 2005-10-17 2009-04-28 Ramot At Tel Aviv University Ltd. Probabilistic error correction in multi-bit-per-cell flash memory
US8848442B2 (en) * 2006-03-06 2014-09-30 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
US7388781B2 (en) * 2006-03-06 2008-06-17 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
WO2007132457A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
US7697326B2 (en) * 2006-05-12 2010-04-13 Anobit Technologies Ltd. Reducing programming error in memory devices
CN103208309B (zh) 2006-05-12 2016-03-09 苹果公司 存储设备中的失真估计和消除
WO2007132456A2 (en) * 2006-05-12 2007-11-22 Anobit Technologies Ltd. Memory device with adaptive capacity
US7840875B2 (en) * 2006-05-15 2010-11-23 Sandisk Corporation Convolutional coding methods for nonvolatile memory
WO2008026203A2 (en) 2006-08-27 2008-03-06 Anobit Technologies Estimation of non-linear distortion in memory devices
US7904783B2 (en) * 2006-09-28 2011-03-08 Sandisk Corporation Soft-input soft-output decoder for nonvolatile memory
US7805663B2 (en) * 2006-09-28 2010-09-28 Sandisk Corporation Methods of adapting operation of nonvolatile memory
US7818653B2 (en) 2006-09-28 2010-10-19 Sandisk Corporation Methods of soft-input soft-output decoding for nonvolatile memory
JP2008090433A (ja) * 2006-09-29 2008-04-17 Toshiba Corp メモリコントローラ、メモリシステム及びデータ転送方法
US7821826B2 (en) 2006-10-30 2010-10-26 Anobit Technologies, Ltd. Memory cell readout using successive approximation
WO2008053472A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US7904780B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of modulating error correction coding
US8001441B2 (en) * 2006-11-03 2011-08-16 Sandisk Technologies Inc. Nonvolatile memory with modulated error correction coding
US7904788B2 (en) * 2006-11-03 2011-03-08 Sandisk Corporation Methods of varying read threshold voltage in nonvolatile memory
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US7593263B2 (en) * 2006-12-17 2009-09-22 Anobit Technologies Ltd. Memory device with reduced reading latency
US7900102B2 (en) * 2006-12-17 2011-03-01 Anobit Technologies Ltd. High-speed programming of memory devices
KR100872186B1 (ko) * 2007-01-04 2008-12-09 삼성전자주식회사 상이한 에러 제어 스킴을 갖는 하이브리드 플래시 메모리장치 및 그것을 포함한 메모리 시스템
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
US7751240B2 (en) 2007-01-24 2010-07-06 Anobit Technologies Ltd. Memory device with negative thresholds
KR100888695B1 (ko) * 2007-02-27 2009-03-16 삼성전자주식회사 과표본화 읽기 동작을 수행하는 플래시 메모리 장치 및그것의 데이터 독출 방법
WO2008111058A2 (en) 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US7966550B2 (en) * 2007-03-31 2011-06-21 Sandisk Technologies Inc. Soft bit data transmission for error correction control in non-volatile memory
US7966546B2 (en) * 2007-03-31 2011-06-21 Sandisk Technologies Inc. Non-volatile memory with soft bit data transmission for error correction control
US7975209B2 (en) * 2007-03-31 2011-07-05 Sandisk Technologies Inc. Non-volatile memory with guided simulated annealing error correction control
US7971127B2 (en) * 2007-03-31 2011-06-28 Sandisk Technologies Inc. Guided simulated annealing in non-volatile memory error correction control
US8001320B2 (en) * 2007-04-22 2011-08-16 Anobit Technologies Ltd. Command interface for memory devices
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US8234545B2 (en) * 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
US8073648B2 (en) * 2007-05-14 2011-12-06 Sandisk Il Ltd. Measuring threshold voltage distribution in memory using an aggregate characteristic
US7747903B2 (en) 2007-07-09 2010-06-29 Micron Technology, Inc. Error correction for memory
US7925936B1 (en) 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
US7545673B2 (en) * 2007-09-25 2009-06-09 Sandisk Il Ltd. Using MLC flash as SLC by writing dummy data
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
US8068360B2 (en) * 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
WO2009050703A2 (en) 2007-10-19 2009-04-23 Anobit Technologies Data storage in analog memory cell arrays having erase failures
WO2009063450A2 (en) 2007-11-13 2009-05-22 Anobit Technologies Optimized selection of memory units in multi-unit memory devices
US7613045B2 (en) * 2007-11-26 2009-11-03 Sandisk Il, Ltd. Operation sequence and commands for measuring threshold voltage distribution in memory
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US8209588B2 (en) * 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8456905B2 (en) 2007-12-16 2013-06-04 Apple Inc. Efficient data storage in multi-plane memory devices
US8085586B2 (en) 2007-12-27 2011-12-27 Anobit Technologies Ltd. Wear level estimation in analog memory cells
JP5150245B2 (ja) 2007-12-27 2013-02-20 株式会社東芝 半導体記憶装置
US8301912B2 (en) 2007-12-31 2012-10-30 Sandisk Technologies Inc. System, method and memory device providing data scrambling compatible with on-chip copy operation
KR101386489B1 (ko) * 2008-01-14 2014-04-21 삼성전자주식회사 메모리 장치 및 멀티 비트 프로그래밍 방법
US8156398B2 (en) * 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US8266495B2 (en) * 2008-02-20 2012-09-11 Marvell World Trade Ltd. Systems and methods for performing concatenated error correction
US7924587B2 (en) 2008-02-21 2011-04-12 Anobit Technologies Ltd. Programming of analog memory cells using a single programming pulse per state transition
US7864573B2 (en) 2008-02-24 2011-01-04 Anobit Technologies Ltd. Programming analog memory cells for reduced variance after retention
US8230300B2 (en) * 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8724381B2 (en) 2008-03-11 2014-05-13 Agere Systems Llc Methods and apparatus for storing data in a multi-level cell flash memory device with cross-page sectors, multi-page coding and per-page coding
US8059457B2 (en) 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US20090282267A1 (en) * 2008-05-09 2009-11-12 Ori Stern Partial scrambling to reduce correlation
US7729166B2 (en) * 2008-07-02 2010-06-01 Mosaid Technologies Incorporated Multiple-bit per cell (MBC) non-volatile memory apparatus and system having polarity control and method of programming same
US7924613B1 (en) 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
KR101541736B1 (ko) * 2008-09-22 2015-08-04 삼성전자주식회사 멀티-레벨 셀 플래시 메모리 장치에서의 lsb 페이지 복구 방법
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8261159B1 (en) 2008-10-30 2012-09-04 Apple, Inc. Data scrambling schemes for memory devices
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
CO6170067A1 (es) * 2008-12-12 2010-06-18 Ecopetrol Sa Unidad de drenaje auto-sellante para separacion de fluidos inmiscibles de diferente densidad
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8174857B1 (en) 2008-12-31 2012-05-08 Anobit Technologies Ltd. Efficient readout schemes for analog memory cell devices using multiple read threshold sets
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
KR20100098969A (ko) * 2009-03-02 2010-09-10 삼성전자주식회사 에러 정정 코드들의 신뢰성을 향상시킬 수 반도체 장치, 이를 포함하는 반도체 시스템, 및 에러 정정 코드 처리 방법
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
TWI508089B (zh) * 2009-06-29 2015-11-11 A Data Technology Co Ltd 電子儲存裝置及其資料修復方法
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8743629B2 (en) 2009-08-31 2014-06-03 Sandisk Il Ltd. Preloading data into a flash storage device
US8074013B2 (en) 2009-09-21 2011-12-06 Skymedi Corporation Uniform coding system for a flash memory
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
EP2513795B1 (en) 2009-12-16 2014-03-12 SanDisk IL Ltd Auxiliary parity bits for data written in multi-level cells
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8677203B1 (en) 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
TW201129565A (en) * 2010-01-12 2011-09-01 Hoffmann La Roche Tricyclic heterocyclic compounds, compositions and methods of use thereof
WO2011092532A1 (en) 2010-01-28 2011-08-04 Sandisk Il Ltd. Sliding-window error correction
KR101598382B1 (ko) * 2010-03-02 2016-03-02 삼성전자주식회사 상태 기반 불휘발성 메모리 장치 및 그것의 에러 정정 방법
US8935595B2 (en) 2010-03-12 2015-01-13 Lsi Corporation LDPC erasure decoding for flash memories
CN102208212B (zh) * 2010-03-30 2014-10-22 群联电子股份有限公司 错误校正方法、存储器控制器与存储器储存系统
US8775913B2 (en) 2010-03-31 2014-07-08 Lsi Corporation Methods and apparatus for computing soft data or log likelihood ratios for received values in communication or storage systems
US8504885B2 (en) 2010-03-31 2013-08-06 Lsi Corporation Methods and apparatus for approximating a probability density function or distribution for a received value in communication or storage systems
US8429500B2 (en) 2010-03-31 2013-04-23 Lsi Corporation Methods and apparatus for computing a probability value of a received value in communication or storage systems
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8839053B2 (en) 2010-05-27 2014-09-16 Microsoft Corporation Error correcting pointers for non-volatile storage
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8645794B1 (en) 2010-07-31 2014-02-04 Apple Inc. Data storage in analog memory cells using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
US8560919B2 (en) 2010-10-22 2013-10-15 Sandisk Technologies Inc. System and method of interleaving data according to an adjustable parameter
WO2012075200A2 (en) 2010-12-01 2012-06-07 Sandforce, Inc. Dynamic higher-level redundancy mode management with independent silicon elements
US9727414B2 (en) 2010-12-01 2017-08-08 Seagate Technology Llc Fractional redundant array of silicon independent elements
US8719663B2 (en) 2010-12-12 2014-05-06 Lsi Corporation Cross-decoding for non-volatile storage
US8498152B2 (en) 2010-12-23 2013-07-30 Sandisk Il Ltd. Non-volatile memory and methods with soft-bit reads while reading hard bits with compensation for coupling
US8099652B1 (en) * 2010-12-23 2012-01-17 Sandisk Corporation Non-volatile memory and methods with reading soft bits in non uniform schemes
US8782495B2 (en) * 2010-12-23 2014-07-15 Sandisk Il Ltd Non-volatile memory and methods with asymmetric soft read points around hard read points
US9292377B2 (en) 2011-01-04 2016-03-22 Seagate Technology Llc Detection and decoding in flash memories using correlation of neighboring bits and probability based reliability values
US9898361B2 (en) 2011-01-04 2018-02-20 Seagate Technology Llc Multi-tier detection and decoding in flash memories
KR101454807B1 (ko) * 2011-01-18 2014-11-04 엘에스아이 코포레이션 상위-레벨 리던던시 정보 계산
KR20120086939A (ko) * 2011-01-27 2012-08-06 에스케이하이닉스 주식회사 반도체 시스템 및 데이터 프로그래밍 방법
US8825945B2 (en) 2011-01-31 2014-09-02 Marvell World Trade Ltd. Mapping different portions of data to different pages of multi-level non-volatile memory
US9502117B2 (en) 2011-03-14 2016-11-22 Seagate Technology Llc Cell-level statistics collection for detection and decoding in flash memories
US20130024735A1 (en) * 2011-07-19 2013-01-24 Ocz Technology Group Inc. Solid-state memory-based storage method and device with low error rate
US9318166B2 (en) 2011-07-22 2016-04-19 SanDisk Technologies, Inc. Systems and methods of storing data
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
JP2013089082A (ja) 2011-10-19 2013-05-13 Toshiba Corp メモリコントローラ、半導体記憶システムおよびメモリ制御方法
US9026887B2 (en) 2012-03-15 2015-05-05 Micron Technology, Inc. Physical page, logical page, and codeword correspondence
US8839073B2 (en) 2012-05-04 2014-09-16 Lsi Corporation Zero-one balance management in a solid-state disk controller
US8856611B2 (en) 2012-08-04 2014-10-07 Lsi Corporation Soft-decision compensation for flash channel variation
US20140026003A1 (en) * 2012-07-23 2014-01-23 Zhengang Chen Flash memory read error rate reduction
US8924820B2 (en) * 2012-07-27 2014-12-30 Kabushiki Kaisha Toshiba Memory controller, semiconductor memory system, and memory control method
US8856431B2 (en) 2012-08-02 2014-10-07 Lsi Corporation Mixed granularity higher-level redundancy for non-volatile memory
US9239754B2 (en) 2012-08-04 2016-01-19 Seagate Technology Llc Single read based soft-decision decoding of non-volatile memory
US9009566B2 (en) * 2012-09-12 2015-04-14 Macronix International Co., Ltd. Outputting information of ECC corrected bits
US9361167B2 (en) 2012-10-24 2016-06-07 SanDisk Technologies, Inc. Bit error rate estimation for wear leveling and for block selection based on data type
US9032244B2 (en) 2012-11-16 2015-05-12 Microsoft Technology Licensing, Llc Memory segment remapping to address fragmentation
US9076545B2 (en) 2013-01-17 2015-07-07 Sandisk Tecnologies Inc. Dynamic adjustment of read voltage levels based on memory cell threshold voltage distribution
US9619318B2 (en) * 2013-02-22 2017-04-11 Intel Deutschland Gmbh Memory circuits, method for accessing a memory and method for repairing a memory
TWI533316B (zh) * 2013-03-18 2016-05-11 慧榮科技股份有限公司 錯誤修正方法以及記憶體裝置
TWI512732B (zh) * 2013-08-30 2015-12-11 Phison Electronics Corp 解碼方法、記憶體儲存裝置與非揮發性記憶體模組
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9406377B2 (en) 2014-12-08 2016-08-02 Sandisk Technologies Llc Rewritable multibit non-volatile memory with soft decode optimization
US10394489B2 (en) 2015-01-21 2019-08-27 Technion Research & Development Foundation Ltd. Reusable memory devices with WOM codes
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US9946594B2 (en) 2015-08-19 2018-04-17 International Business Machines Corporation Validation bits and offsets to represent logical pages split between data containers
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US10445199B2 (en) * 2016-12-22 2019-10-15 Western Digital Technologies, Inc. Bad page management in storage devices
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
CN108572786B (zh) * 2017-03-09 2021-06-29 上海宝存信息科技有限公司 避免读取扰动的数据搬移方法以及使用该方法的装置
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
CN108388483A (zh) * 2018-03-10 2018-08-10 北京联想核芯科技有限公司 配置码率的方法、装置及计算机可读存储介质
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US12079494B2 (en) 2018-04-27 2024-09-03 Pure Storage, Inc. Optimizing storage system upgrades to preserve resources
CN112262436B (zh) * 2018-05-08 2024-06-07 美光科技公司 用于读取错误恢复的系统和方法
US12067274B2 (en) 2018-09-06 2024-08-20 Pure Storage, Inc. Writing segments and erase blocks based on ordering
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US11334254B2 (en) 2019-03-29 2022-05-17 Pure Storage, Inc. Reliability based flash page sizing
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11342044B2 (en) 2019-05-28 2022-05-24 Nuvoton Technology Corporation System and method for prioritization of bit error correction attempts
US11475170B2 (en) 2019-05-28 2022-10-18 Nuvoton Technology Corporation System and method for correction of memory errors
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US12056365B2 (en) 2020-04-24 2024-08-06 Pure Storage, Inc. Resiliency for a storage system
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US12061814B2 (en) 2021-01-25 2024-08-13 Pure Storage, Inc. Using data similarity to select segments for garbage collection
US11481271B2 (en) 2021-03-16 2022-10-25 Western Digital Technologies, Inc. Storage system and method for using subcodes and convolutional-based LDPC interleaved coding schemes with read threshold calibration support
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
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
WO2024112355A1 (en) * 2022-11-22 2024-05-30 Silicon Storage Technology, Inc. Grouping and error correction for non-volatile memory cells

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3580705A (en) 1968-10-02 1971-05-25 Atomic Energy Commission Selective stripping of plutonium from organic extracts
US4713816A (en) 1986-02-25 1987-12-15 U.S. Philips Corporation Three module memory system constructed with symbol-wide memory chips and having an error protection feature, each symbol consisting of 2I+1 bits
US4802170A (en) * 1987-04-29 1989-01-31 Matrox Electronics Systems Limited Error disbursing format for digital information and method for organizing same
NL8701996A (nl) * 1987-08-26 1989-03-16 Philips Nv Halfgeleidergeheugen voorzien van een medegeintegreerde foutkorrektie-inrichting, en geintegreerde schakeling voorzien van zo een halfgeleidergeheugen.
US5268870A (en) 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
EP0392895B1 (en) * 1989-04-13 1995-12-13 Sundisk Corporation Flash EEprom system
US5438573A (en) * 1991-09-13 1995-08-01 Sundisk Corporation Flash EEPROM array data and header file structure
JP3095542B2 (ja) 1992-09-11 2000-10-03 株式会社東芝 ポリシラン配向膜の製造方法
JPH06240527A (ja) 1993-02-15 1994-08-30 Unitika Ltd 高伸縮性スパンライク先染糸の製造方法
US5459850A (en) * 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5603001A (en) * 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
JPH07302175A (ja) * 1994-05-09 1995-11-14 Toshiba Corp 半導体ディスク装置
US5673224A (en) * 1996-02-23 1997-09-30 Micron Quantum Devices, Inc. Segmented non-volatile memory array with multiple sources with improved word line control circuitry
US5903495A (en) * 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
JP3200012B2 (ja) * 1996-04-19 2001-08-20 株式会社東芝 記憶システム
JPH109958A (ja) 1996-04-23 1998-01-16 Horiba Ltd 低放射率測定用非接触温度計のアダプター
JP4079506B2 (ja) * 1997-08-08 2008-04-23 株式会社東芝 不揮発性半導体メモリシステムの制御方法
JPH11212876A (ja) * 1998-01-21 1999-08-06 Sony Corp 符号化方法およびそれを利用したメモリ装置
US6732322B1 (en) * 1998-01-21 2004-05-04 Sony Corporation Encoding method and memory device
US6366713B1 (en) * 1998-09-04 2002-04-02 Tellabs Operations, Inc. Strictly non-blocking optical switch core having optimized switching architecture based on reciprocity conditions
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US6041001A (en) * 1999-02-25 2000-03-21 Lexar Media, Inc. Method of increasing data reliability of a flash memory device without compromising compatibility
US6163405A (en) 1999-04-15 2000-12-19 Industrial Technology Research Institute Structure of a reflection-type light diffuser in a LCD
US6532556B1 (en) * 2000-01-27 2003-03-11 Multi Level Memory Technology Data management for multi-bit-per-cell memories
US6363008B1 (en) * 2000-02-17 2002-03-26 Multi Level Memory Technology Multi-bit-cell non-volatile memory with maximized data capacity
US6732332B1 (en) * 2000-08-28 2004-05-04 Und Aerospace Foundation Automated web site creation system
JP4641338B2 (ja) * 2000-08-29 2011-03-02 ルネサスエレクトロニクス株式会社 不揮発性半導体記憶装置及びシステム
US6725342B1 (en) * 2000-09-26 2004-04-20 Intel Corporation Non-volatile mass storage cache coherency apparatus
JP4323707B2 (ja) * 2000-10-25 2009-09-02 富士通マイクロエレクトロニクス株式会社 フラッシュメモリの欠陥管理方法
US6785767B2 (en) * 2000-12-26 2004-08-31 Intel Corporation Hybrid mass storage system and method with two different types of storage medium
US6587372B2 (en) * 2001-01-11 2003-07-01 Micron Technology, Inc. Memory device with multi-level storage cells and apparatuses, systems and methods including same
US6466476B1 (en) * 2001-01-18 2002-10-15 Multi Level Memory Technology Data coding for multi-bit-per-cell memories having variable numbers of bits per memory cell
JP3631463B2 (ja) 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
US6990623B2 (en) * 2001-05-16 2006-01-24 Fujitsu Limited Method for error detection/correction of multilevel cell memory and multilevel cell memory having error detection/correction function
JP2003036693A (ja) * 2001-05-16 2003-02-07 Fujitsu Ltd 多値半導体メモリの誤り検出・訂正方法および誤り検出・訂正機能を有する多値半導体メモリ
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
JP4437519B2 (ja) * 2001-08-23 2010-03-24 スパンション エルエルシー 多値セルメモリ用のメモリコントローラ
US7219271B2 (en) * 2001-12-14 2007-05-15 Sandisk 3D Llc Memory device and method for redundancy/self-repair
US7171594B2 (en) * 2002-03-06 2007-01-30 Hewlett-Packard Development Company, L.P. Pausing a transfer of data
AU2003227230A1 (en) * 2002-04-04 2003-10-20 Sharp Kabushiki Kaisha Semiconductor laser device
JP4129381B2 (ja) * 2002-09-25 2008-08-06 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
US6791880B1 (en) * 2003-05-06 2004-09-14 Fasl, Llc Non-volatile memory read circuit with end of life simulation
MY147104A (en) * 2003-08-18 2012-10-31 Sony Corp Data recording/reproducing device, data recording/reproducing method, program, and recording medium
JP2005078721A (ja) * 2003-09-01 2005-03-24 Nippon Telegr & Teleph Corp <Ntt> 誤り訂正方法およびメモリ回路
KR101129060B1 (ko) 2003-10-30 2012-04-12 파나소닉 주식회사 표시장치, 표시방법, 프로그램 및 기록매체
US20050213393A1 (en) * 2004-03-14 2005-09-29 M-Systems Flash Disk Pioneers, Ltd. States encoding in multi-bit flash cells for optimizing error rate
US7322002B2 (en) * 2004-05-26 2008-01-22 Micron Technology, Inc. Erasure pointer error correction
US7277336B2 (en) * 2004-12-28 2007-10-02 Sandisk 3D Llc Method and apparatus for improving yield in semiconductor devices by guaranteeing health of redundancy information
US7681109B2 (en) * 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory

Also Published As

Publication number Publication date
KR20080076902A (ko) 2008-08-20
EP1934854B1 (en) 2010-11-24
DE602006018497D1 (de) 2011-01-05
EP2287740B1 (en) 2013-01-16
US20070089034A1 (en) 2007-04-19
CN101536109A (zh) 2009-09-16
CN101536109B (zh) 2013-12-11
US20090070657A1 (en) 2009-03-12
US7681109B2 (en) 2010-03-16
WO2007043042A3 (en) 2008-12-31
WO2007043042A2 (en) 2007-04-19
US8261157B2 (en) 2012-09-04
EP1934854A2 (en) 2008-06-25
EP1934854A4 (en) 2009-09-30
EP2287740A1 (en) 2011-02-23
KR100987632B1 (ko) 2010-10-13
ATE489675T1 (de) 2010-12-15
JP2009512055A (ja) 2009-03-19

Similar Documents

Publication Publication Date Title
JP5113066B2 (ja) Mbcフラッシュメモリにおけるエラー訂正の方法
US8990658B2 (en) Probabilistic error correction in multi-bit-per-cell flash memory
EP1952290B1 (en) Probabilistic error correction in multi-bit-per-cell flash memory
US8136014B2 (en) Non-volatile semiconductor memory device
US7533328B2 (en) Method of error correction in a multi-bit-per-cell flash memory
US8112689B2 (en) ECC controller for use in flash memory device and memory system including the same
US7990765B2 (en) Least significant bit page recovery method used in multi-level cell flash memory device
US9639419B2 (en) Read voltage level estimating method, memory storage device and memory control circuit unit
US11211950B2 (en) Decoding device and decoding method
KR20090101887A (ko) 치환 변환을 사용하여 플래시 메모리 내의 에러를 피하는 방법
KR20110028228A (ko) 다중레벨 플래시 메모리의 에러정정
US20150161001A1 (en) Misprogramming prevention in solid-state memory
IL196239A (en) Method of error correction in a multi-bit-per-cell flash memory

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110412

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110506

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110801

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110808

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110825

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120323

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120720

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120727

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121011

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151019

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees