JP2011525655A - ソリッドステートメモリの消去カウントにしたがってエラー修正をする方法および装置 - Google Patents
ソリッドステートメモリの消去カウントにしたがってエラー修正をする方法および装置 Download PDFInfo
- Publication number
- JP2011525655A JP2011525655A JP2011514152A JP2011514152A JP2011525655A JP 2011525655 A JP2011525655 A JP 2011525655A JP 2011514152 A JP2011514152 A JP 2011514152A JP 2011514152 A JP2011514152 A JP 2011514152A JP 2011525655 A JP2011525655 A JP 2011525655A
- Authority
- JP
- Japan
- Prior art keywords
- decoder
- data
- error correction
- mode
- attempt
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 192
- 238000012937 correction Methods 0.000 title claims abstract description 133
- 238000000034 method Methods 0.000 title claims abstract description 98
- 239000007787 solid Substances 0.000 title claims abstract description 54
- 230000007704 transition Effects 0.000 claims abstract description 32
- 238000013500 data storage Methods 0.000 claims description 17
- 230000003252 repetitive effect Effects 0.000 claims description 2
- 230000008878 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 18
- 230000005055 memory storage Effects 0.000 description 14
- 230000002093 peripheral effect Effects 0.000 description 11
- 210000004027 cell Anatomy 0.000 description 10
- 238000013459 approach Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000009897 systematic effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 210000000352 storage cell Anatomy 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- ADTDNFFHPRZSOT-PVFUSPOPSA-N ram-330 Chemical compound C([C@H]1N(CC2)C)C3=CC=C(OC)C(OC)=C3[C@]32[C@@]1(O)CC[C@@H](OC(=O)OCC)C3 ADTDNFFHPRZSOT-PVFUSPOPSA-N 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/14—Implementation of control logic, e.g. test mode decoders
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)
Abstract
Description
本願は、本願発明者により2008年6月24日に出願された米国仮特許出願第61/075,065号(特許文献1)の利益を主張する。
フラッシュ形のフローティングゲートトランジスタまたはセルで構成されたフラッシュメモリは、機能性と性能においてEEPROMメモリと同様の不揮発性メモリである。フラッシュメモリは、ある制限を伴って動作するものの比較的安価であることが利点である。フラッシュメモリは、最初に全体のメモリ部を消去せずに、前に書き込まれた位置に書き直すことができない。すなわち、フラッシュセルを再びプログラムすることができるようになる前に、フラッシュセルを消去しなければならない(例えば、「1」にプログラムする)。フラッシュメモリは通常消去ブロックと呼ばれるセルの比較的大きいグループを消去することができるだけである(例えば、多くの現在の市販のデバイスのサイズは16KBから2MBであるが、より高い容量を有するデバイスが商業的に利用可能になる場合には、消去ブロックのサイズが将来増加すると予想されている)。
フラッシュメモリおよび他のメモリ(例えば、磁気メモリ、光記憶、および揮発性メモリ)も同様に、これらのメモリに関する1つの顕著な特徴は、これらのメモリが「壊乱媒体」であるということであって、データがメモリから読み戻されるときに、1つ以上の情報ビットが「反転された」状態でメモリから読み出されてしまうかもしれないので、1つ以上のエラーがメモリに書き込まれているオリジナルのデータに時々取り込まれてしまうことである。
この現象を克服し、実際のアプリケーションでNANDタイプのメモリを使用可能にするために、これらのメモリに関連してエラー修正コード(ECC)を使用することは慣用技術である。
フラッシュメモリデバイスおよびフラッシュメモリ以外のソリッドステートメモリを含むストレージデバイスにおけるエラー修正を扱うための改善された技術と装置に対する継続した必要性が求められている。
図1A(従来技術)は、フラッシュメモリストレージデバイス260(従来技術)のブロック図である。フラッシュメモリストレージデバイスは、フラッシュメモリ270と、フラッシュメモリ270に対してデータを読み出し、かつデータを書き込むように動作可能なフラッシュコントローラ280とを含む。「プログラム」、「プログラミング」、「プログラムされた」、および「プログラム可能な」という用語は、フラッシュメモリでのデータの保存を指示するためにそれぞれ「書き込む」、「書き込み」、「書き込まれた」、および「書き込み可能な」という用語と共に本願明細書において互換性を持って使用される。
フラッシュメモリストレージデバイスの1つの実施形態が「周辺フラッシュストレージデバイス」である。周辺フラッシュストレージデバイスは、USBフラッシュドライブ(UFD)、PCカード、デジタルカメラ、ならびに音楽プレーヤ、ハンドヘルドおよびパームトップコンピュータ、および携帯電話と共に使用される小形形状のストレージカードなどのフォームファクタにおけるコンピュータの技術分野において周知である。
周辺フラッシュメモリストレージデバイス260*は、ホストデバイス310から分離されたデバイスとして図に示されているが、いくつかの実装形態では、フラッシュメモリストレージデバイス260*は、ホストデバイス310のハウジングの中に配置され得ることが理解できるはずである。
1つの実施形態では、フラッシュメモリストレージデバイス260*はホストデバイス310に対するデータの読み出しとデータの書き込みサービスを提供する。フラッシュメモリストレージデバイス260*によって受け取られたホストデバイス310からのデータは、フラッシュコントローラ280によってフラッシュメモリ270に書き込まれる。さらに、フラッシュメモリストレージで受け取られた「データ読み出し」要求に対応して、フラッシュコントローラ280はフラッシュメモリ270からデータを読み出す。
「読み出し時」または読み出し後のいつでも読み出しデータ中のエラーを修正できる。エラー修正は、少なくとも一部をフラッシュコントローラ280により、少なくとも一部をホストデバイス310(例えば、ホスト側プロセッサ320によるRAM330内の実行可能コード340の実行またはいかなる他の方法)により行うことができ、またその他の位置やその他の方法でも行うことができる。
当業者であれば、図1A〜1Bに示されているフラッシュメモリデバイスが、まさに1つの類の周辺不揮発性ストレージメモリデバイスであり、他のメモリデバイスが、光記憶や磁気抵抗のランダムアクセスメモリ(MRAM)のような他のタイプのソリッドステートメモリを含むことができることが理解できるはずである。
エラー修正を扱うための方法が今回初めて開示され、この方法は、a)ソリッドステートメモリの少なくとも1つのブロックのための消去カウントを維持することと、b)関連する消去カウントを有するメモリブロックのうちの1つからデータを読み出すことと、c)メモリブロックの関連する消去カウントにしたがって、i)第1のデコーダと第2のデコーダのうちの1つを選択することと、ii)第1のデコーダモードと第2のデコーダモードのうちの1つを選択することのうちの少なくとも1つを実行することと、d)選択されたデコーダまたは選択されたモードだけを使用して読み出しデータ中のエラーを修正することと、を含む。
いくつかの実施形態では、ソリッドステートメモリは、フラッシュメモリである。
いくつかの実施形態では、維持すること、読み出すこと、実行すること、および修正することのうちの少なくとも1つが、ソリッドステートメモリが存するストレージデバイスのデバイスコントローラによって実行される。
いくつかの実施形態では、ストレージデバイスをデバイス間インターフェイスを介して動作可能にホストデバイスと結合し、前述した方法が、e)エラー修正済みデータをストレージデバイスからホストデバイスに送信することをさらに含む。
いくつかの実施形態では、維持すること、読み出すこと、1つ以上の決定すること、および修正することのうちの少なくとも1つが、ソリッドステートメモリが存するストレージデバイスのデバイスコントローラによって実行される。
いくつかの実施形態では、i)前述した方法が、リソースバジェットを決定することを含み、ii)第2の試行が、少なくとも第1の試行によるリソースバジェットの消耗に依存する。
いくつかの実施形態では、少なくとも1つのエラー修正パラメータが、i)複数のデコーダからデコーダを選択する選択パラメータ(例えば、デコーダの「重み」または「デコーダの速度」を説明するパラメータ)と、ii)特定のデコーダのために複数のデコーダモードからデコーダモードを選択するデコーダモードパラメータ(例えば、デコーダの「重み」またはデコーダモードの「速度」を説明するパラメータ)と、iii)読み出しデータのためのビット確率値と、iv)ソフトビット数と、v)デコーダバス幅と、からなるグループから選択される。
いくつかの実施形態では、モード遷移条件が、i)タイムアウト条件と、ii)繰り返し条件数と、iii)CPUサイクル条件数と、からなるグループから選択される。
いくつかの実施形態では、エラー修正試行リソースバジェットが、i)時間バジェットと、ii)CPUサイクルバジェットと、iii)繰り返しバジェットと、からなるグループから選択される。
いくつかの実施形態では、維持すること、読み出すこと、決定すること、および1つ以上の試行のうちの少なくとも1つが、ソリッドステートメモリが存するストレージデバイスのデバイスコントローラによって実行される。
いくつかの実施形態では、i)前述した方法が、データのために読み出されるソフトビット数を決定し、データのためにソフトビット数を読み出すことを含み、ii)試行することは、少なくとも読み出しソフトビットを使用してデータ中のエラー修正を試行することを含む。
いくつかの実施形態では、i)前述した方法は、デコーダバス幅のサイズを選択することを含み、ii)試行することは、選択されたデコーダバス幅のサイズを使用してデータ中のエラー修正を試行することを含む。
いくつかの実施形態では、維持すること、1つ以上の読み出すこと、決定すること、選択すること、および試行することのうちの少なくとも1つが、ソリッドステートメモリが存するストレージデバイスのデバイスコントローラによって実行される。
どんな特定の理論によっても拘束されることを願わず、ソリッドステートメモリ(例えば、フラッシュメモリ、MRAMまたはいかなる他のタイプのソリッドステートメモリ)が複数回消去されるときには、このことが記憶媒体としてメモリの品質を下げ得ることに留意するべきである。そういうものとして、比較的「大きい」回数データが消去されたソリッドステートメモリ(またはその区分)は、比較的「小さい」回数データが消去されたソリッドステートメモリ(またはその区分)よりも、「より質が悪い」または「より信頼性が低い」かまたは「より壊乱的」な記憶媒体であるかもれない。
データが読み出される1つのブロックの消去カウントにしたがって、メモリから読み出されたデータのためのECCデコーディングを行ういくつかの技法をここで説明する。データが「高い消去カウント」を有するブロックから読み出される場合、メモリブロックが記憶媒体として比較的「より信頼性が低い」ことを示すことができる。そういうものとして、「より信頼性が低い」メモリブロックから読み戻されたデータは、比較的「大きい」エラー回数を含むかもれない。この場合、比較的「大きな数」のエラーを有するデータ中のエラー修正に適切な「悲観的」な技法が使用できる。逆に、データが「低い消去カウント」を有するブロックから読み出される場合、ブロックが記憶媒体として「より信頼性が高い」ことを示すことができ、比較的「小さい数」のエラーを有するデータ中のエラー修正に適切な「楽観的」な技法が使用できる。
この第2の技法にしたがって、比較的「高い」消去カウントを有するブロックからデータが読み出される場合には、悲観的なアプローチが取られるべきであって、より軽い重みまたはより速い(が、信頼性が低い)デコーダ(またはモード)を使用してエラーをデコードするのを試行するステップを「悲観的に」スキップすることは有利であることがここで開示されている。この場合、この「悲観的な」アプローチは、どんな試行でもとにかく失敗しそうな軽い重みおよび/または速いデコーダを使用させられないところで、時間の節約および/またはコンピュータリソースを節約するのに役立つかもしれない。逆に、比較的「低い」消去カウントを有するブロックからデータが読み出されるならば、軽い重みおよび/または速いデコーダがより失敗しそうにないと想定されるかもしれない。このように、データがこの「より低い」消去カウントに対応しているブロックから読み出される場合、より軽い重みおよび/またはより速いデコーダが失敗するかもしれないという「リスクを取ること」に対して有利であるかもしれない。したがって、データがこの「より低い」消去カウントに対応しているブロックから読み出される場合、「より信頼性の高い」より重い重みおよび/またはより遅いデコーダ(またはモード)を試行する前に、より軽い重みおよび/またはより速いデコーダ(またはモード)を使用してデータをデコードするのを試行することは有利であるかもしれない。
このように、この消去カウントが比較的「高い」場合、「悲観的」なアプローチが取られるかもしれず、ゼロまたは「小さい」数のソフトビットを使用した繰り返しが、これらの繰り返しが成功しそうにない(すなわち、データが多くのエラーを含んでいそうであり、このようにより多くのソフトビットが「ノイジー」データ中でエラーを修正する必要がありそうである)という前提でスキップされるかもしれない(し、もしくは失敗した後に、相対的に「大きい」数のソフトビットが読み出されるかもしれない)。
当業者であれば、ここで開示されたエラー修正の技法がメモリから読み出されたデータにおけるエラーを修正するためのいかなる他の技法とも組み合わせることができることが理解できるはずである。
図面についての説明の前に、フラッシュメモリにおけるECC使用の概要を提示し、(次の2つのセクションで)様々な用語の定義を提供する。
フラッシュメモリにおけるECC使用の概要は、以下に提示され、以下のステップを含む。
(1)メモリにデータを書き込む前に、後で誤り検出・修正に使用される、追加の(すなわち、冗長な)ビットを計算するためにECCアルゴリズムがデータに適用される。これらの冗長ビットはしばしば「パリティビット」または「パリティ」と呼ばれる。ECCモジュールとパリティ出力へのそのモジュールによるデータ入力の組み合わせは符号語と呼ばれる。ECCモジュールへの入力データの各々異なる値は符号語の異なる処理結果をもたらす。
(2)符号語全体(すなわち、オリジナルのデータとパリティ)はフラッシュメモリに記録される。NANDタイプのフラッシュメモリの実際のサイズはオリジナルデータのサイズよりも大きく、またメモリはパリティにも対応するように設計されていることに留意するべきである。
(3)データがメモリから取り出されるときに、符号語全体が再度読み出され、また検出、修正することが可能な「ビットフリップ」(すなわち、エラー)データおよびパリティにECCアルゴルズムが適用される。
共用のアルゴリズムは、リード−ソロモン、BCH、ハミング、および多くの他のものを含む。それぞれのECCアルゴリズムは、2つの部分、すなわちデータビットを受信しパリティビットを生成する部分(もしくは符号語を生成するのと同等)と、符号語を受信し修正済みデータビットを生成する部分とで構成される。第1の部分が「エンコーダ」と呼ばれて、書き込み中に使用され、第二の部分が「デコーダ」と呼ばれて、読み出し中に使用される。ハードウェアまたはソフトウェアのいずれかでそれぞれの2つの部分をインプリメントすることもできるし、また一方の部分をハードウェアでインプリメントし、もう一方の部分をソフトウェアでインプリメントすることも可能である。また、それぞれの部分がハードウェアとソフトウェアとの組み合わせでインプリメントすることも可能である。
2種類のECCが実際にあることに留意するべきである。前に説明したECCの種類は「システム的」なECCと呼ばれ、データビットのアイデンティティは符号語で保持される。「非システム的」なECCでは、データビットは元のデータビットのアイデンティティが保持されない符号語に変換される。
フラッシュメモリシステムで使用されるべきECCアルゴリズムとして、BCHのようなアルゴリズムを選択することが唯一選択されたソリューションを定義するものではない。どのようなECCアルゴリズムであっても実際にはただ一つのアルゴリズムではなく、アルゴリズムのファミリー(一群)である。同じファミリーの中のアルゴリズムがその中でそれらが保護できるデータビットの量は異なる。2つのアルゴリズムが通常非常に類似し、かつ同じ原理で動作するものであったとしても、100のデータビットを保護する必要があるアルゴリズムは、1万のデータビットを保護する必要があるアルゴリズムと同じではない。
a.特定のメモリ信頼性において、出力信頼性が良ければ良いほど(修正可能なエラーの数がより大きいのと同等)コードのレートがより低くなる(システム的なECCにおいて、より多くのパリティビットが必要であることと同等)。
b.特定のメモリ信頼性において、出力信頼性が良ければ良いほどデコーダはより複雑になる。
c.特定のレベルの出力信頼性において、コードのレートが高ければ高いほどデコーダはより複雑になる。
d.特定のレベルの出力信頼度において、コードのレートが高ければ高いほどデコーディングはより遅くなる。
利便上、ここで記述される文脈の中で様々な用語が提示されている。本願における明細書の色々なところで、定義が明確または暗黙に提供されている範囲にわたり、そのような定義が関連する技術のその技術により定義された用語の語法とで一貫性を持つべきであることが理解されるはずである。さらに、そのような定義はそのような用語の語法と一致した可能な限り広い意味で解釈されるべきある。
ソリッドステートメモリのあるタイプは「壊乱媒体」である(例えば、フラッシュメモリ、光記憶、またはMRAM)ので、時々1つ以上のエラーがメモリに書き込まれる「オリジナル」のデータに取り込まれてしまい、データ(すなわち、オリジナルデータの表示)がメモリから読み戻されるときに1情報ビット以上が「フリップ」されてしまう。
メモリの特定のブロックのための「消去カウント」は、ソリッドステートメモリのブロックが今までに何回消去されたかを示すカウンタである。メモリのブロックが消去されるときはいつでもこの消去カウントが増加されることになるかもしれない。前に言及したように、ブロックが比較的「大きい」消去カウントを有する場合には、ブロックがエラーを起こしがちな比較的「プア」な記憶媒体であることを示すかもしれない。
その全体が本願明細書において参照により援用されている、Lofgren らによる米国特許第6,230,233号(特許文献2)、Wells による米国特許第5,341,339号(特許文献3)、Jou らによる米国特許第5,568,423号(特許文献4)、Assar らによる米国特許第5,388,083号(特許文献5)、Harariによる米国特許第5,712,819号(特許文献6)、Harariによる米国特許第6,570,790号(特許文献7)、Harariによる米国特許第5,963,480号(特許文献8)、Chang らによる米国特許第6,831,865号(特許文献9)に開示された技法を含むが、これらに限定されないどのような技法も消去カウントを維持するために使用できる。
前に言及したように、エラーを修正するために「デコーダ」を使用でき、オリジナルのデータを符号語の表示から復元するためにも使用できる。いくつかの実施形態では、「より軽い重み」デコーダと「より重い重み」デコーダを含む、複数のデコーダを伴っている。
用語「より重い重み」と「より軽い重み」は、2つのデコーダおよび/または単一のデコーダの2つのモードを比較するのに使用される。「より重い重み」デコーダ(単一のデコーダのより重い重みモード)は、(i)「より軽い重み」対照物(デコーダ)より多くの電流を消費し、かつ/または(ii)「より軽い重み」対照物より多くのメモリ(デコーダ自体のコンピュータ実行可能コードのためのメモリおよび/またはエラー修正時の計算の「中間結果」を保存するためのメモリのいずれか)を必要とし、かつ/または(iii)「より軽い重み」対照物より多くのコンピュータによる動作を必要とする。
ステップS411では、消去カウントは少なくとも1つのメモリブロックのために維持される。前に言及したように、どのような場所および/またはどのような方法でも消去カウントを維持できる。1つの非限定的な例では、消去カウントはフラッシュコントローラ280によって維持される。1つの非限定的な例では、消去カウントはデータ構造内に維持される(例えば、不揮発性メモリに保存される。)例えば、データ構造はウェアレベリングの目的にも使用される。ステップS423では、データはメモリブロックの1つ以上から読み戻される。データが読み出される1つ以上のメモリブロックの消去カウントを、例えば、適切なデータ構造における「ルックアップ」に作用することによって決定できる。
以下の特性を有する2つのデコーダ(または2つの異なったモードで動作可能な1つのデコーダ)を検討する。
a.第1のデコーダ(またはデコーダモード)は、より速いおよび/または「より軽い重み」のものであるが、一方では、デコーディングプロセスの結果を生成するのを成功するように保証されてはいない。
b.第2のデコーダ(またはデコーダモード)は、より遅いおよび/または「より重い重み」のものであるが、いつもデコーディングプロセスの正しい結果を生成するように保証される(または少なくともデコーディングプロセスの正しい結果をより生成しそうである)。
通常、データのエラー数が高ければ高いほど、最初のデコーダはより頻繁に失敗する。残念ながら、メモリからデータを読み戻すときに、読み戻したデータ中にいくつのエラーがあるのかはいつも先験的に知られているというわけではない。このように、「より重い重み」デコーダ(または単一のデコーダのより重い重みモード)が必要であるかどうか、あるいは「より軽い重み」デコーダで十分であるかどうかがいつも知られているというわけではない。
ステップS619では、選択されたデコーダのみを使用し、選択されていない「排除された」デコーダを使用せずに、エラーは修正される。
ステップS629では、選択されたデコーダモードのみを使用し、選択されていない「排除された」デコーダモードを使用せずに、エラーは修正される。
ステップS651では、データが読み出されるブロックの消去カウントにしたがってより軽い重みデコーダ(すなわち、複数の候補デコーダ内のデコーダ)を使用してエラー修正の試行を行うかどうかの決定が行われる。
データが読み出されるソリッドステートメモリのブロックの消去カウントが比較的「低い」場合、読み戻しているデータが良い「品質」でありそうなことを示し、比較的「楽観的」なエラー修正ストラテジーを採用できる。このように、このシナリオでは、ステップS655でより軽い重みデコーダを使用してエラー修正の試行が行われる。より軽い重みデコーダが成功した場合(ステップS659を参照する)には、より重い重みデコーダを使用してエラー修正の試行を行う必要はない(ステップS667を参照する)。より軽い重みデコーダがエラー修正に失敗したのであれば、次により重い重みデコーダを使用してエラー修正の試行がS663で行われる。
さらに、ステップS651を参照すると、データが読み出されるブロックの消去カウントが比較的「高い」場合、読み戻しているデータが「プア」な品質でありそうであり、比較的「悲観的」なエラー修正ストラテジーを採用できることを示していることを言及している。このシナリオでは、ステップS665をスキップして、より軽い重みデコーダよりもむしろより重い重みデコーダを使用してエラー修正の試行を行うこと(ステップS663で)が可能である。
ステップS851では、消去カウントにしたがって、より速いデコーダ(すなわち、複数の候補デコーダ内のデコーダ)を使用してエラー修正の試行を行うかどうかを決定する。
消去カウントが「低く」、比較的「楽観的」なエラー修正ストラテジーが採用される場合には、ステップS855でより速いデコーダを使用してエラー修正の試行を行うことができる。より速いデコーダが成功した場合(ステップS859を参照する)には、より遅いデコーダを使用してエラー修正の試行を行う必要はない(ステップS867を参照する)。より速いデコーダがエラー修正に失敗したのであれば、次により遅いデコーダを使用してエラー修正の試行がS863で行われる。
さらに、ステップS851を参照すると、消去カウントが「高く」、比較的「悲観的」なエラー修正ストラテジーが採用される場合、ステップS865をスキップして、より速いデコーダよりもむしろより遅いデコーダを使用してエラー修正の試行を(ステップS863で)行うことが可能であることを言及している。
ステップS671では、ブロックの消去カウントにしたがって、より軽い重みモード(すなわち、特定のデコーダの複数の候補デコーダモード内のデコーダ)を使用してエラー修正の試行を行うかどうかを決定する。
消去カウントが「低く」、比較的「楽観的」なエラー修正ストラテジーが採用される場合には、ステップS675で、より軽い重みモードを使用してエラー修正の試行を行うことができる。より軽い重みモードが成功した場合(ステップS679を参照する)には、より重い重みモードを使用してエラー修正の試行を行う必要はない(ステップS687を参照する)。より軽い重みモードがエラー修正に失敗したのであれば、次により重い重みモードを使用してエラー修正の試行がS683で行われる。
さらに、ステップS671を参照すると、消去カウントが「高く」、比較的「悲観的」なエラー修正ストラテジーが採用される場合には、ステップS675をスキップして、より軽い重みモードよりもむしろより重い重みモードを使用してエラー修正の試行を(ステップS683で)行うことが可能であることを言及している。
ステップS871では、メモリブロックの消去カウントの結果にしたがって、より速いデコーダモード(すなわち、複数の候補デコーダモード内のデコーダ)を使用してエラー修正の試行を行うかどうかを決定する。消去カウントが「低く」、比較的「楽観的」なエラー修正ストラテジーが採用される場合には、ステップS875で、より速いデコーダモードを使用してエラー修正の試行を行うことができる。より速いデコーダモードが成功した場合(ステップS879を参照する)には、より遅いデコーダモードを使用してエラー修正の試行を行う必要はない(ステップS887を参照する)。より速いデコーダモードがエラー修正に失敗したのであれば、より遅いデコーダモードを使用してエラー修正の試行がS883で行われる。
さらに、ステップS871を参照すると、消去カウントが「高く」、比較的「悲観的」なエラー修正ストラテジーが採用される場合には、ステップS865をスキップして、より速いデコーダモードよりもむしろより遅いデコーダモードを使用してエラー修正の試行を(ステップS863で)行うことが望ましいかもしれないことを言及している。
図4A〜4Bは、以下の技法のブロック図である。すなわち、(i)(ステップS519で)エラー修正の第1の試行が行われ、(ii)何らかの時点で、第1の試行がエラー修正に成功しなかった場合、(ステップS539で)第1の試行を中止して、エラー修正の第2の試行が行われる。図4A〜4Bは、第1の試行が失敗であったと見なされて中止された場合を決定するためのポリシーを確立し実行することに関する。この決定は些細なことではない。(ステップS519で)エラー修正の第1の試行が「時期尚早」に失敗であると見なされた場合、不必要に遅いエラー修正プロセスおよび/またはリソース消費をもたらすかもしれない。なぜならば、第1の試行が行われたときにその過程を実行することが容認されていれば、成功した/満足したであろう場合に、エラー修正の1つ以上の「余分/不要」な試行が行われてしまうからである。その一方で、第2の試行への遷移が不必要に遅れて「あまりにも余分」な時間/リソースが第1の試行を行うのに費やされた場合、また不必要に遅いエラー修正プロセスおよび/またはリソース消費をもたらすことになるかもしれない。
図4A〜4Bでは、第1の試行は、ステップS515で確立されたエラー修正パラメータの「第1のセット」を使用して、ステップS519で行われ、また第2の試行は、ステップS535で確立されたエラー修正パラメータの「第2のセット」を使用して、ステップS539で行われる。図4Aと図4Bの両方とも、第1の試行がステップS523で成功であると決定された場合には、ステップS539で追加の試行を行う必要はない(ステップS527を参照する)。
メモリブロックの消去カウントが「低い」場合、次に第1の試行が成功するという比較的「高い」見込みがあるという仮定にしたがって、楽観的アプローチを採用できる。このように、この場合には、ステップS511で決定する「モード遷移条件」は、比較的「速い」かまたは「軽い」エラーを修正する試行を開始するために比較的「寛容な」ものであるかもしれない(試行がどの程度「速い」か「遅い」か「重い重み」か「軽い重み」かはステップS515および/またはステップS535で少なくとも一部は確定できる)。逆に、消去カウントが「高い」場合、次に悲観的なアプローチが採用されるかもしれず、これらの初期の試行がとにかく失敗するという高い可能性があると仮定されるので、ステップS511で決定する「モード遷移条件」は比較的「速い」かまたは「軽い」エラー修正試行を開始するために「よりけちな」ものであるかもしれない。
このように、異なった実施形態では、「モード遷移」が以下のように言及される。すなわち、(i)特定のデコーダのより軽いモードからより重いモードに移行するか、あるいは(ii)複数のデコーダから選択された第1のデコーダが使用される第1の「モード」から、複数のデコーダから選択された第2のデコーダが使用される第2の「モード」に移行するか、あるいは(iii)ソフトデコーダに関して、ビット確率値の第1のセットに関連している第1のモードから、ビット確率値の第2のセットに関連している第2のモードに移行するか、あるいは(iv)ソフトビットの第1の数(すなわち、非負整数)が使用される第1のモードから、ソフトビットの第2の数が使用される第2のモードに移行し、また(v)第1のデコーダバス幅を有する第1のモードから、第2のデコーダバス幅を有する第2のモードに移行する(図6Bを参照する)。
この提供されたリストは、例示であって、完全なリストではないことが理解されるべきである。
図5A〜5Bは、エラー修正のために読み出されるソフトビット数を決定するための技法に関する(図5A〜5Bに言及した前述した議論も参照する)。図5AのステップS419で、エラー修正のために初期の試行用に読み出されるソフトビット数が決定される。このソフトビット数は、エラー修正されるべきデータが(ステップS423で)読み出される1つ以上の対象メモリブロック(ステップS415で決定されている)に関連している消去カウントにしたがって決定される。
ステップS427で、決定されたソフトビット数が読み出され、またステップS431で、ソフトビットを使用してデータ(すなわち、ステップS423で読み出されたデータ)中のエラー修正の試行が行われる。試行が成功している場合(ステップS439を参照する)には、エラー修正プロセスを持続させる必要はない(ステップS443を参照する)。試行が成功しなかった場合には、ステップS435で1つ以上の追加のソフトビットを読み出すことができる。
図5Aにおけるステップの順番(および本願の開示によって示されているすべての図)は限定的ではないことに留意するべきである。例えば、ステップS423のソリッドステートメモリの対象ブロックからのデータ読み出しを、ステップS419の決定の前に行うこともできる。
ステップS477で、ソフトビット数(すなわち、ステップS473で決定されている)が読み出される。これらのソフトビットはステップS431で使用される。
図6Aは、データが読み出されるメモリのブロックの消去カウントにしたがってエラーを修正するための技法のフローチャートである。
ソフトデコーダは、符号語の各ビットに確率を割り当てて(例えば、ビットの値が1であり0ではないという確率)、また他のビットの現在の確率にしたがってそれぞれのビットが変更される確率のそれぞれの複数の繰り返しを実行することによって動作する。
ソフトデコーダではないどんなデコーダもここで「代数的なデコーダ」と呼ばれる。
このことは、図6Aに表を用いて示されている。ステップS751で、データが読み出されるブロックの消去カウントにしたがって、デコーダバス幅が選択される。ステップS755で、選択されたデコーダバス幅の値にしたがって、エラーが修正される。
図6BのステップのS411、S423、およびS751は、図6Aと同じである。
ステップS775で、ステップS751で選択された、選択されたデコーダバス幅を使用してエラー修正の試行が行われる。この試行が成功した場合(ステップS779を参照する)には、エラー修正プロセスを持続させる必要はない(ステップS787を参照する)。そうでなければ、この試行が成功しなかった場合(ステップS783を参照する)に、新しいデコーダバス幅が選択され、エラー修正の新しい試行が行われる。
ここで開示されたいかなる技法も「デバイス側」上にまたは「ホスト側」上でインプリメントすることができることに留意するべきである。1つの特定の実施形態で、ここで開示されたいかなるステップまたはそのようなステップの組み合わせも(消去カウントを維持するステップ、データまたはソフトビットを読み出すステップ、エラーを修正するステップ、エラー修正の試行を行うステップ、デコーダまたはモードまたはソフトビット数を選択するステップ、特定のデコーダまたはデコーダモードを使用するかどうかを決定するステップ、デコーダバス幅を選択するステップ、遷移条件またはリソースバジェットを決定するかまたは実施するステップなどのステップを含むが、それらに限定されるものではない)、フラッシュデバイス260(またはソリッドステートメモリを含むその他のデータストレージデバイスでも)のデバイスコントローラ280によって実行することができる。例えば、周辺ストレージデバイス260*のデバイスコントローラによって実行してもよい。
本発明の実施形態は、開示されたいかなる技法をもインプリメントするための装置またはコンピュータ媒体を提供する。
本願明細書で引用されたすべての参考文献は、その全体が参照により援用されている。参考文献からの引用がこの参考文献が従来技術であるという認容を構成するものではない。
前に説明した実施形態のいずれもが、図に関連して前に説明した操作をインプリメントするための、コンピュータ可読媒体上の、命令および/またはデータを、受信したり、送信したり、あるいは保存したりすることをさらに含むことができることにさらに留意するべきである。一般的には、コンピュータ可読媒体は、ストレージメディアまたは磁気、フラッシュまたは光学メディアなどのメモリメディア、例えばディスクまたはCD−ROM、RAM/ROMなどの揮発性または不揮発性メディアを含むことができ、またネットワークおよび/またはワイヤレスリンクなどの通信媒体を通して転送される、電気信号、電磁気信号またはデジタル信号などの伝送メディアまたは信号を含むことができる。
Claims (21)
- エラー修正を扱うための方法であって、
a)ソリッドステートメモリの少なくとも1つのブロックのための消去カウントを維持するステップと、
b)関連する消去カウントを有するメモリブロックのうちの1つからデータを読み出すステップと、
c)メモリブロックの関連する消去カウントにしたがって、
i)第1のデコーダと第2のデコーダのうちの1つを選択するステップと、
ii)第1のデコーダモードと第2のデコーダモードのうちの1つを選択するステップのうちの少なくとも1つのステップを実行するステップと、
d)選択されたデコーダまたは選択されたモードだけを使用して読み出しデータ中のエラーを修正するステップと、
を含む方法。 - 請求項1記載の方法において、
ソリッドステートメモリが、フラッシュメモリである方法。 - 請求項1記載の方法において、
前記維持するステップ、読み出すステップ、実行するステップ、および修正するステップのうちの少なくとも1つが、ソリッドステートメモリが存するストレージデバイスのデバイスコントローラによって実行される方法。 - 請求項3記載の方法において、
ストレージデバイスをデバイス間インターフェイスを介して動作可能にホストデバイスと結合し、前記方法が、
e)エラー修正済みデータをストレージデバイスからホストデバイスに送信するステップをさらに含む方法。 - エラー修正を扱うための方法であって、
a)ソリッドステートメモリの少なくとも1つのブロックのための消去カウントを維持するステップと、
b)関連する消去カウントを有するメモリブロックのうちの1つからデータを読み出すステップと、
c)関連する消去カウントにしたがって、
i)決定するステップであって、
A)より軽い重みデコーダを使用してエラー修正を試行するか、あるいは
B)より軽い重みデコーダよりも重いより重い重みデコーダだけを使用してエラー修正を試行するかのいずれかを決定するステップと、
ii)決定するステップであって、
A)より速いデコーダを使用してエラー修正を試行するか、あるいは
B)より速いデコーダよりも遅いより遅いデコーダだけを使用してエラー修正を試行するかのいずれかを決定するステップと、
iii)決定するステップであって、
A)特定のデコーダのより軽い重みモードを使用してエラー修正を試行するか、あるいは
B)より軽い重みモードよりも重い、特定のデコーダのより重い重みモードだけを使用してエラー修正を試行するかのいずれかを決定するステップと、
iv)決定するステップであって、
A)特定のデコーダのより速いモードを使用してエラー修正を試行するか、あるいは
B)より速いモードよりも遅い、特定のデコーダのより遅いモードだけを使用してエラー修正を試行するかのいずれかを決定するステップのうちの少なくとも1つを実行するステップと、
d)前記決定するステップのうちの少なくとも1つにしたがって、読み出しデータ中のエラーを修正するステップと、
を含む方法。 - 請求項5記載の方法において、
前記維持するステップ、読み出すステップ、1つ以上の決定するステップ、および修正するステップのうちの少なくとも1つが、ソリッドステートメモリが存するストレージデバイスのデバイスコントローラによって実行される方法。 - エラー修正を扱うための方法であって、
a)ソリッドステートメモリの少なくとも1つのブロックのための消去カウントを維持するステップと、
b)関連する消去カウントを有するメモリブロックのうちの1つからデータを読み出すステップと、
c)関連する消去カウントにしたがって、
i)モード遷移条件と、
ii)エラー修正試行リソースバジェットのうちの少なくとも1つを決定するステップと、
d)エラー修正パラメータの第1のセットを使用して読み出しデータ中のエラーを修正する第1の試行を行うステップと、
e)エラーを修正する第1の試行が失敗した場合、エラー修正パラメータの第2のセットを使用して読み出しデータ中のエラーを修正する第2の試行を行うステップであって、前記第2の試行が、
i)第1の試行によるモード遷移条件のトリガと、
ii)第1の試行によるリソースバジェットの消耗のうちの少なくとも1つに依存する、第2の試行を行うステップと、
を含む方法。 - 請求項7記載の方法において、
i)前記方法が、モード遷移条件を決定するステップを含み、
ii)第2の試行が、少なくとも第1の試行によるモード遷移条件のトリガに依存する方法。 - 請求項7記載の方法において、
i)前記方法が、リソースバジェットを決定するステップを含み、
ii)第2の試行が、少なくとも第1の試行によるリソースバジェットの消耗に依存する方法。 - 請求項7記載の方法において、
少なくとも1つのエラー修正パラメータが、
i)複数のデコーダからデコーダを選択する選択パラメータと、
ii)特定のデコーダのために複数のデコーダモードからデコーダモードを選択するデコーダモードパラメータと、
iii)読み出しデータのためのビット確率値と、
iv)ソフトビット数と、
v)デコーダバス幅と、からなるグループから選択される方法。 - 請求項7記載の方法において、
モード遷移条件が、
i)タイムアウト条件と、
ii)繰り返し条件数と、
iii)CPUサイクル条件数と、からなるグループから選択される方法。 - 請求項7記載の方法において、
エラー修正試行リソースバジェットが、
i)時間バジェットと、
ii)CPUサイクルバジェットと、
iii)繰り返しバジェットと、からなるグループから選択される方法。 - 請求項7記載の方法において、
前記維持するステップ、読み出すステップ、決定するステップ、および1つ以上の試行のうちの少なくとも1つが、ソリッドステートメモリが存するストレージデバイスのデバイスコントローラによって実行される方法。 - エラー修正を扱うための方法であって、
a)ソリッドステートメモリの少なくともつの1ブロックのための消去カウントを維持するステップと、
b)関連する消去カウントを有するメモリブロックのうちの1つからデータを読み出すステップと、
c)関連する消去カウントにしたがって、
i)データのために読み出されるソフトビット数を決定するステップと、
ii)デコーダバス幅のサイズを選択するステップのうちの少なくとも1つを実行するステップと、
d)ソフトビット数が決定された場合、データのためにソフトビット数を読み出すステップと、
e)データ中のエラー修正を試行するステップであって、
i)選択されたデコーダバス幅のサイズと、
ii)読み出しソフトビットのうちの少なくとも1つを使用してエラー修正を試行するステップと、
を含む方法。 - 請求項14記載の方法において、
i)前記方法が、データのために読み出されるソフトビット数を決定し、データのためにソフトビット数を読み出すステップを含み、
ii)前記試行するステップが、少なくとも読み出しソフトビットを使用してデータ中のエラー修正を試行するステップを含む方法。 - 請求項14記載の方法において、
i)前記方法が、デコーダバス幅のサイズを選択するステップを含み、
ii)前記試行するステップが、選択されたデコーダバス幅のサイズを使用してデータ中のエラー修正を試行するステップを含む方法。 - 請求項14記載の方法において、
前記維持するステップ、1つ以上の読み出すステップ、決定するステップ、選択するステップ、および試行するステップのうちの少なくとも1つが、ソリッドステートメモリが存するストレージデバイスのデバイスコントローラによって実行される方法。 - データストレージデバイスであって、
a)ソリッドステートメモリと、
b)デバイスコントローラであって、
i)ソリッドステートメモリの少なくとも1つのブロックのための消去カウントを維持し、
ii)関連する消去カウントを有するメモリブロックのうちの1つからデータを読み出し、
iii)メモリブロックの関連する消去カウントにしたがって、
A)第1のデコーダと第2のデコーダのうちの1つを選択することと、
B)第1のデコーダモードと第2のデコーダモードのうちの1つを選択することのうちの少なくとも1つを実行し、かつ
iv)選択されたデコーダまたは選択されたモードだけを使用して読み出しデータ中のエラーを修正するように動作可能なデバイスコントローラと、
を備えるデータストレージデバイス。 - データストレージデバイスであって、
a)ソリッドステートメモリと、
b)コントローラであって、
i)ソリッドステートメモリの少なくとも1つのブロックのための消去カウントを維持し、
ii)関連する消去カウントを有するメモリブロックのうちの1つからデータを読み出し、
iii)関連する消去カウントにしたがって、
A)決定することであって、
I)より軽い重みデコーダを使用してエラー修正を試行するか、あるいは
II)より軽い重みデコーダよりも重いより重い重みデコーダだけを使用してエラー修正を試行するかのいずれかを決定することと、
B)決定することであって、
I)より速いデコーダを使用してエラー修正を試行するか、あるいは
II)より速いデコーダよりも遅いより遅いデコーダだけを使用してエラー修正を試行するかのいずれかを決定することと、
C)決定することであって、
I)特定のデコーダのより軽い重みモードを使用してエラー修正を試行するか、あるいは
II)より軽い重みモードよりも重い、特定のデコーダのより重い重みモードだけを使用してエラー修正を試行するかのいずれかを決定することと、
D)決定することであって、
I)特定のデコーダのより速いモードを使用してエラー修正を試行するか、あるいは
II)より速いモードよりも遅い、特定のデコーダのより遅いモードだけを使用してエラー修正を試行するかのいずれかを決定することのうちの少なくとも1つを実行し、かつ
iv)前記決定することのうちの少なくとも1つにしたがって、読み出しデータ中のエラーを修正するように動作可能なコントローラと、
を備えるデータストレージデバイス。 - データストレージデバイスであって、
a)ソリッドステートメモリと、
b)デバイスコントローラであって、
i)ソリッドステートメモリの少なくとも1つのブロックのための消去カウントを維持し、
ii)関連する消去カウントを有するメモリブロックのうちの1つからデータを読み出し、
iii)関連する消去カウントにしたがって、
A)モード遷移条件と、
B)エラー修正試行リソースバジェットのうちの少なくとも1つを決定し、
iv)エラー修正パラメータの第1のセットを使用して読み出しデータ中のエラーを修正する第1の試行を行い、かつ
v)エラーを修正する第1の試行が失敗した場合、エラー修正パラメータの第2のセットを使用して読み出しデータ中のエラーを修正する第2の試行を行い、前記第2の試行が、
A)第1の試行によるモード遷移条件のトリガと、
B)第1の試行によるリソースバジェットの消耗のうちの少なくとも1つに依存するように動作可能なデバイスコントローラと、
を備えるデータストレージデバイス。 - データストレージデバイスであって、
a)ソリッドステートメモリと、
b)デバイスコントローラであって、
i)ソリッドステートメモリの少なくとも1つのブロックのための消去カウントを維持し、
ii)関連する消去カウントを有するメモリブロックのうちの1つからデータを読み出し、
iii)関連する消去カウントにしたがって、
A)データのために読み出されるソフトビット数を決定することと、
B)デコーダバス幅のサイズを選択することのうちの少なくとも1つを実行し、
iv)ソフトビット数が決定された場合、データのためにソフトビット数を読み出し、かつ
v)データ中のエラー修正を試行することであって、
A)選択されたデコーダバス幅のサイズと、
B)読み出しソフトビットのうちの少なくとも1つを使用してエラー修正を試行するように動作可能なデバイスコントローラと、
を備えるデータストレージデバイス。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US7506508P | 2008-06-24 | 2008-06-24 | |
US61/075,065 | 2008-06-24 | ||
PCT/IB2009/051856 WO2009156877A1 (en) | 2008-06-24 | 2009-05-06 | Method and apparatus for error correction according to erase counts of a solid-state memory |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011525655A true JP2011525655A (ja) | 2011-09-22 |
JP5887589B2 JP5887589B2 (ja) | 2016-03-16 |
Family
ID=40908957
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011514152A Active JP5887589B2 (ja) | 2008-06-24 | 2009-05-06 | ソリッドステートメモリの消去カウントにしたがってエラー修正をする方法および装置 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8464134B2 (ja) |
EP (1) | EP2294510B1 (ja) |
JP (1) | JP5887589B2 (ja) |
KR (1) | KR20110036816A (ja) |
CN (1) | CN102099793B (ja) |
AT (1) | ATE539403T1 (ja) |
TW (1) | TW201001426A (ja) |
WO (1) | WO2009156877A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015172992A (ja) * | 2011-01-20 | 2015-10-01 | マイクロン テクノロジー, インク. | 特定のデータ量子化のメモリからの出力 |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8131912B2 (en) * | 2007-09-27 | 2012-03-06 | Kabushiki Kaisha Toshiba | Memory system |
US8386868B2 (en) * | 2008-04-16 | 2013-02-26 | Sandisk Il, Ltd. | Using programming-time information to support error correction |
EP2545554A4 (en) | 2010-03-12 | 2015-03-11 | Lsi Corp | LDPC CLEARANCE DECODING FOR FLASH MEMORY |
US8527840B2 (en) * | 2010-04-06 | 2013-09-03 | Densbits Technologies Ltd. | System and method for restoring damaged data programmed on a flash device |
TWI455132B (zh) * | 2010-06-23 | 2014-10-01 | Phison Electronics Corp | 資料讀取方法、控制電路與記憶體控制器 |
US8650437B2 (en) * | 2010-06-29 | 2014-02-11 | International Business Machines Corporation | Computer system and method of protection for the system's marking store |
US8862902B2 (en) * | 2011-04-29 | 2014-10-14 | Seagate Technology Llc | Cascaded data encryption dependent on attributes of physical memory |
US8719531B2 (en) * | 2011-06-14 | 2014-05-06 | Western Digital Technologies, Inc. | System and method for performing data retention that incorporates environmental conditions |
EP2549482B1 (en) * | 2011-07-22 | 2018-05-23 | SanDisk Technologies LLC | Apparatus, system and method for determining a configuration parameter for solid-state storage media |
KR101830808B1 (ko) * | 2011-11-04 | 2018-02-22 | 삼성전자주식회사 | 메모리 시스템 및 그것의 데이터 저장 방법 |
US8924815B2 (en) * | 2011-11-18 | 2014-12-30 | Sandisk Enterprise Ip Llc | Systems, methods and devices for decoding codewords having multiple parity segments |
US8787079B2 (en) * | 2012-05-07 | 2014-07-22 | Sandisk Technologies Inc. | Reading data from multi-level cell memory |
KR102123946B1 (ko) | 2012-12-28 | 2020-06-17 | 삼성전자주식회사 | 멀티 레벨 셀 메모리 장치 및 그것의 동작방법 |
US9117533B2 (en) * | 2013-03-13 | 2015-08-25 | Sandisk Technologies Inc. | Tracking erase operations to regions of non-volatile memory |
KR102168096B1 (ko) | 2013-03-15 | 2020-10-20 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법 |
US9424179B2 (en) * | 2013-10-17 | 2016-08-23 | Seagate Technology Llc | Systems and methods for latency based data recycling in a solid state memory system |
US8874835B1 (en) | 2014-01-16 | 2014-10-28 | Pure Storage, Inc. | Data placement based on data properties in a tiered storage device system |
US9419655B2 (en) * | 2014-04-04 | 2016-08-16 | Seagate Technology Llc | Error correction code (ECC) selection using probability density functions of error correction capability in storage controllers with multiple error correction codes |
KR102149668B1 (ko) * | 2014-04-22 | 2020-08-31 | 삼성전자주식회사 | 비휘발성 메모리 장치의 데이터 디코딩 방법 |
US9082512B1 (en) * | 2014-08-07 | 2015-07-14 | Pure Storage, Inc. | Die-level monitoring in a storage cluster |
US9595979B2 (en) * | 2015-01-20 | 2017-03-14 | International Business Machines Corporation | Multiple erasure codes for distributed storage |
JP6486723B2 (ja) * | 2015-01-21 | 2019-03-20 | 東芝メモリ株式会社 | メモリシステムおよび処理装置 |
CN104810056A (zh) * | 2015-03-05 | 2015-07-29 | 华南理工大学 | 一种基于自适应ldpc码的nand闪存差错控制器 |
KR102347418B1 (ko) * | 2015-09-25 | 2022-01-06 | 에스케이하이닉스 주식회사 | 데이터 처리 장치 및 그것의 동작 방법 |
US11515897B2 (en) | 2015-05-29 | 2022-11-29 | SK Hynix Inc. | Data storage device |
KR102285940B1 (ko) | 2015-05-29 | 2021-08-05 | 에스케이하이닉스 주식회사 | 데이터 처리 회로, 데이터 처리 회로를 포함하는 데이터 저장 장치 및 그것의 동작 방법 |
US11611359B2 (en) | 2015-05-29 | 2023-03-21 | SK Hynix Inc. | Data storage device |
US9904594B2 (en) * | 2016-04-15 | 2018-02-27 | Micron Technology, Inc. | Monitoring error correction operations performed in memory |
CN107452421B (zh) * | 2016-05-31 | 2020-06-16 | 建兴储存科技(广州)有限公司 | 固态储存装置及其状态预测方法 |
US10055159B2 (en) * | 2016-06-20 | 2018-08-21 | Samsung Electronics Co., Ltd. | Morphic storage device |
US9672905B1 (en) | 2016-07-22 | 2017-06-06 | Pure Storage, Inc. | Optimize data protection layouts based on distributed flash wear leveling |
US10338983B2 (en) * | 2016-12-30 | 2019-07-02 | EMC IP Holding Company LLC | Method and system for online program/erase count estimation |
JP2018147231A (ja) | 2017-03-06 | 2018-09-20 | 東芝メモリ株式会社 | メモリコントローラ、メモリシステムおよびメモリシステムの制御方法 |
KR20190022987A (ko) | 2017-08-25 | 2019-03-07 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US10936205B2 (en) | 2017-10-05 | 2021-03-02 | International Business Machines Corporation | Techniques for retention and read-disturb aware health binning |
US10824352B2 (en) | 2017-12-06 | 2020-11-03 | International Business Machines Corporation | Reducing unnecessary calibration of a memory unit for which the error count margin has been exceeded |
KR102623234B1 (ko) * | 2018-08-14 | 2024-01-11 | 삼성전자주식회사 | 스토리지 장치 및 그것의 동작 방법 |
US10699791B2 (en) | 2018-08-24 | 2020-06-30 | International Business Machines Corporation | Adaptive read voltage threshold calibration in non-volatile memory |
KR102559549B1 (ko) | 2018-09-12 | 2023-07-26 | 에스케이하이닉스 주식회사 | 메모리 시스템에서의 블록 상태를 관리하는 방법 및 장치 |
JP2020149123A (ja) * | 2019-03-11 | 2020-09-17 | キオクシア株式会社 | メモリシステム、及びメモリシステムの制御方法 |
US11088711B2 (en) | 2019-07-08 | 2021-08-10 | Winbond Electronics Corp. | Memory apparatus and data accessing method thereof |
TWI723515B (zh) * | 2019-08-29 | 2021-04-01 | 華邦電子股份有限公司 | 記憶體裝置及其資料存取方法 |
US11157179B2 (en) | 2019-12-03 | 2021-10-26 | Pure Storage, Inc. | Dynamic allocation of blocks of a storage device based on power loss protection |
KR20220092021A (ko) * | 2020-12-24 | 2022-07-01 | 삼성전자주식회사 | 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템 |
JP2023079292A (ja) * | 2021-11-29 | 2023-06-08 | ラピステクノロジー株式会社 | 半導体記憶装置、データ書込方法及び半導体記憶装置の製造方法 |
KR20240059345A (ko) * | 2022-10-27 | 2024-05-07 | 삼성전자주식회사 | Ecc 디코더 및 이를 포함하는 메모리 컨트롤러 |
CN116591623B (zh) * | 2023-07-14 | 2023-09-15 | 西南石油大学 | 基于图像识别的钻井用防跑浆预警系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07264077A (ja) * | 1994-03-18 | 1995-10-13 | Canon Inc | 誤り検出訂正回路 |
US20040083333A1 (en) * | 2002-10-28 | 2004-04-29 | Sandisk Corporation | Hybrid implementation for error correction codes within a non-volatile memory system |
WO2006013529A1 (en) * | 2004-08-02 | 2006-02-09 | Koninklijke Philips Electronics N.V. | Data storage and replay apparatus |
WO2007057885A2 (en) * | 2005-11-15 | 2007-05-24 | Ramot At Tel-Aviv University Ltd. | Method and device for multi phase error-correction |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5268870A (en) | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Flash EEPROM system and intelligent programming and erasing methods therefor |
US5268319A (en) | 1988-06-08 | 1993-12-07 | Eliyahou Harari | Highly compact EPROM and flash EEPROM devices |
US6166650A (en) * | 1991-05-29 | 2000-12-26 | Microchip Technology, Inc. | Secure self learning system |
US6230233B1 (en) | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
US5341339A (en) | 1992-10-30 | 1994-08-23 | Intel Corporation | Method for wear leveling in a flash EEPROM memory |
US5388083A (en) | 1993-03-26 | 1995-02-07 | Cirrus Logic, Inc. | Flash memory mass storage architecture |
US5533035A (en) * | 1993-06-16 | 1996-07-02 | Hal Computer Systems, Inc. | Error detection and correction method and apparatus |
US5568423A (en) | 1995-04-14 | 1996-10-22 | Unisys Corporation | Flash memory wear leveling system providing immediate direct access to microprocessor |
US6941505B2 (en) * | 2000-09-12 | 2005-09-06 | Hitachi, Ltd. | Data processing system and data processing method |
US6831865B2 (en) | 2002-10-28 | 2004-12-14 | Sandisk Corporation | Maintaining erase counts in non-volatile storage systems |
US7900125B1 (en) * | 2004-05-24 | 2011-03-01 | Seagate Technology Llc | Majority detection in error recovery |
KR100688549B1 (ko) * | 2005-05-24 | 2007-03-02 | 삼성전자주식회사 | 비휘발성 메모리를 지원하는 온더플라이 bcc 코덱시스템 및 방법 |
US8156403B2 (en) | 2006-05-12 | 2012-04-10 | Anobit Technologies Ltd. | Combined distortion estimation and error correction coding for memory devices |
US8042029B2 (en) * | 2006-05-21 | 2011-10-18 | Ramot At Tel Aviv University Ltd. | Error correction decoding by trial and error |
US8069397B2 (en) * | 2006-07-10 | 2011-11-29 | Broadcom Corporation | Use of ECC with iterative decoding for iterative and non-iterative decoding in a read channel for a disk drive |
WO2008053472A2 (en) | 2006-10-30 | 2008-05-08 | Anobit Technologies Ltd. | Reading memory cells using multiple thresholds |
US8151163B2 (en) | 2006-12-03 | 2012-04-03 | Anobit Technologies Ltd. | Automatic defect management in memory devices |
US8095851B2 (en) * | 2007-09-06 | 2012-01-10 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
US8429492B2 (en) * | 2007-11-30 | 2013-04-23 | Marvell World Trade Ltd. | Error correcting code predication system and method |
US9152496B2 (en) * | 2007-12-21 | 2015-10-06 | Cypress Semiconductor Corporation | High performance flash channel interface |
US8386868B2 (en) * | 2008-04-16 | 2013-02-26 | Sandisk Il, Ltd. | Using programming-time information to support error correction |
US8407559B2 (en) * | 2008-06-20 | 2013-03-26 | Marvell World Trade Ltd. | Monitoring memory |
-
2009
- 2009-05-06 US US12/436,155 patent/US8464134B2/en active Active
- 2009-05-06 EP EP09769687A patent/EP2294510B1/en not_active Not-in-force
- 2009-05-06 CN CN2009801283838A patent/CN102099793B/zh active Active
- 2009-05-06 AT AT09769687T patent/ATE539403T1/de active
- 2009-05-06 WO PCT/IB2009/051856 patent/WO2009156877A1/en active Application Filing
- 2009-05-06 JP JP2011514152A patent/JP5887589B2/ja active Active
- 2009-05-06 KR KR1020117001643A patent/KR20110036816A/ko not_active Application Discontinuation
- 2009-05-20 TW TW098116755A patent/TW201001426A/zh unknown
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07264077A (ja) * | 1994-03-18 | 1995-10-13 | Canon Inc | 誤り検出訂正回路 |
US20040083333A1 (en) * | 2002-10-28 | 2004-04-29 | Sandisk Corporation | Hybrid implementation for error correction codes within a non-volatile memory system |
EP1424631A1 (en) * | 2002-10-28 | 2004-06-02 | SanDisk Corporation | Hybrid implementation for error correction codes within a non-volatile memory system |
JP2004164634A (ja) * | 2002-10-28 | 2004-06-10 | Sandisk Corp | 不揮発性メモリシステム内のエラー訂正コードのためのハイブリッド実装 |
WO2006013529A1 (en) * | 2004-08-02 | 2006-02-09 | Koninklijke Philips Electronics N.V. | Data storage and replay apparatus |
JP2008508632A (ja) * | 2004-08-02 | 2008-03-21 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | データ記憶及び再生装置 |
WO2007057885A2 (en) * | 2005-11-15 | 2007-05-24 | Ramot At Tel-Aviv University Ltd. | Method and device for multi phase error-correction |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015172992A (ja) * | 2011-01-20 | 2015-10-01 | マイクロン テクノロジー, インク. | 特定のデータ量子化のメモリからの出力 |
US9395927B2 (en) | 2011-01-20 | 2016-07-19 | Micron Technology, Inc. | Outputting a particular data quantization from memory |
Also Published As
Publication number | Publication date |
---|---|
TW201001426A (en) | 2010-01-01 |
JP5887589B2 (ja) | 2016-03-16 |
ATE539403T1 (de) | 2012-01-15 |
CN102099793A (zh) | 2011-06-15 |
WO2009156877A1 (en) | 2009-12-30 |
CN102099793B (zh) | 2013-10-16 |
US20090319859A1 (en) | 2009-12-24 |
KR20110036816A (ko) | 2011-04-11 |
EP2294510B1 (en) | 2011-12-28 |
US8464134B2 (en) | 2013-06-11 |
EP2294510A1 (en) | 2011-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5887589B2 (ja) | ソリッドステートメモリの消去カウントにしたがってエラー修正をする方法および装置 | |
CN109582217B (zh) | 数据储存装置与将数据写入存储器装置的方法 | |
US9817725B2 (en) | Flash memory controller, data storage device, and flash memory control method with volatile storage restoration | |
US8175012B2 (en) | Decoding/encoding method for booting from a NAND flash and system thereof | |
EP3072134B1 (en) | Defect management policies for nand flash memory | |
EP2438521B1 (en) | Object oriented memory in solid state devices | |
KR101623119B1 (ko) | 솔리드 스테이트 드라이브의 에러 제어 방법 | |
US8321757B2 (en) | Method and apparatus for error correction | |
US9583217B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
KR101614556B1 (ko) | 에러 정정을 처리하는 방법과, 이의 방법을 사용하는 데이터 저장 디바이스, 호스트 디바이스, 컴퓨터 프로그램을 저장하는 컴퓨터-판독가능한 매체 및 메모리용 제어기 | |
CN106558332B (zh) | 数据处理器件及其操作方法 | |
JP2019502987A (ja) | 不揮発性メモリ・システムにおけるマルチページ障害の回復 | |
US11521701B2 (en) | Memory controller with read error handling | |
CN111712804B (zh) | 使用数据块的可变逻辑到物理关联的增强错误校正码能力 | |
CN110347530A (zh) | 数据存储装置及其操作方法 | |
CN113867995A (zh) | 处理坏块的存储器系统及其操作方法 | |
TW201131572A (en) | Solid state storage system for controlling reserved area and method of controlling the same | |
CN113360083A (zh) | 用于在存储器系统中控制映射数据的装置和方法 | |
US20170286219A1 (en) | Data storage device and operating method thereof | |
CN113467986A (zh) | 用于修复存储器系统中数据错误的设备和方法 | |
TWI536749B (zh) | 解碼方法、記憶體儲存裝置與記憶體控制電路單元 | |
CN114579040A (zh) | 用于保持在存储器系统中存储的数据的设备和方法 | |
TW202125259A (zh) | 資料讀取方法、儲存控制器與儲存裝置 | |
CN117174132A (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120427 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130703 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130827 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20131122 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20131129 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20131205 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140701 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20140918 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20140926 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20141009 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20150331 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150731 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150731 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20150914 |
|
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: 20151117 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20151215 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20151215 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20151215 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5887589 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
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 |
|
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 |