JP5846589B2 - ソリッド・ステート・メモリ・デバイスにおける復号 - Google Patents

ソリッド・ステート・メモリ・デバイスにおける復号 Download PDF

Info

Publication number
JP5846589B2
JP5846589B2 JP2013530833A JP2013530833A JP5846589B2 JP 5846589 B2 JP5846589 B2 JP 5846589B2 JP 2013530833 A JP2013530833 A JP 2013530833A JP 2013530833 A JP2013530833 A JP 2013530833A JP 5846589 B2 JP5846589 B2 JP 5846589B2
Authority
JP
Japan
Prior art keywords
iterations
decoding
average number
memory device
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2013530833A
Other languages
English (en)
Other versions
JP2013546039A (ja
Inventor
ケルビーニ、ジョバンニ
イリアディス、イリアス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2013546039A publication Critical patent/JP2013546039A/ja
Application granted granted Critical
Publication of JP5846589B2 publication Critical patent/JP5846589B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding 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
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature

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)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Description

本発明は、一般に、フラッシュ・ベースのメモリ・デバイスなどのソリッド・ステート・メモリ・デバイスを含むストレージ・システム、及び、特にこうしたソリッド・ステート・メモリ・デバイスのための復号機構に焦点を当てた、こうしたソリッド・ステート・メモリ・デバイスを制御するための技術に関する。
ソリッド・ステート・メモリ・デバイスは、データを格納するための電子回路を用いる書き換え可能な不揮発性メモリ・デバイスを含む。現在、ソリッド・ステート・メモリ・デバイスは、ラップトップ又はデスクトップ用の大容量ストレージ用途などといった幾つかの場面において、ハード・ディスク・ドライブ及び光学ディスク・ドライブなどの従来のストレージ・デバイスに取って代わり始めている。ソリッド・ステート・メモリ・デバイスは、エンタープライズ・ストレージ・システムなどといった他の領域においても、従来のストレージ・デバイスに取って代わるための研究がなされている。これは、ソリッド・ステート・メモリ・デバイスが、可動部分がないことによる頑丈さが評価されていることに加えて、並外れた帯域幅及び優れたランダムI/O(入力/出力)性能を示すためである。
最先端のソリッド・ステート・ドライブ(SSD)―この用語はソリッド・ステート・メモリ・デバイスという用語と同義に用いられる―は、二値量子化を行って1ビットの情報をもたらすシングル・レベル・セル(SLC)を用いて、又は幾つかのレベルのうちの1つ、通常は4つ若しくは8つへの量子化を行って1ビットより多い情報をもたらすマルチ・レベル・セル(MLC)を用いて、具体化することができる。
誤り訂正符号(ECC)をソリッド・ステート・ドライブに適用して、データ取得プロセスに必要な信頼性を達成することができる。典型的には、その目的のために、リード・ソロモン(RS)符号又はボース・チョードリ・オッカンガム(BCH)符号が、硬判定復号(hard decoding)アルゴリズムと共に用いられる。硬判定復号アルゴリズムの主な問題は、メモリ・セルから読み戻された物理値に対して量子化が行われるときには常に、回復不能な情報の損失が起こることである。硬判定復号技術によって起こる情報の損失を克服するために、近年、ECCの軟判定復号(soft decoding)がSSD用に提案されてきた。軟判定復号技術は、多数の反復において符号語を復号することによって特徴付けられる。軟判定復号は、RS符号と比較して大きな符号化利得をもたらすことが知られている。しかし、反復復号は復号プロセスに付随する待ち時間を生じさせ、それがSSDの利用の応答時間に悪影響を与える場合がある。
特許文献1において、反復復号技術がソリッド・ステート・メモリ・デバイスに適用されており、この特許文献においては、デバイスは、符号器と、符号器によって符号化されたデータを格納するように適合されたマルチ・レベル・ソリッド・ステート不揮発性メモリ・アレイと、メモリ・アレイから取得されたデータを復号するように適合された復号器とを部分的に含む。メモリ・アレイは、フラッシュEEPROMアレイとすることができる。メモリ・ユニットは、変調器及び復調器を任意に含む。変調器によって変調されたデータは、メモリ・アレイに格納される。復調器は、メモリ・アレイから取得された変調されたデータを復調する。
特許文献2において、別の反復復号器が示されており、この特許文献においては、メモリ・デバイスを操作するための対応する方法は、誤り訂正符号(ECC)を用いてデータを符号化することと、符号化されたデータを第1のアナログ値としてメモリ・デバイスのそれぞれのアナログ・メモリ・セルに格納することとを含む。符号化されたデータを格納した後、符号化されたデータが格納されたメモリ・デバイスのそれぞれのメモリ・セルから第2のアナログ値が読み出される。第2のアナログ値のうちの少なくとも幾つかは、それぞれの第1のアナログ値と異なる。第2のアナログ値に含まれている歪みが推定される。誤り訂正メトリクスが、第2のアナログ値に関して、推定された歪みに応答して計算される。データを復元するために、第2のアナログ値は、ECC復号プロセスにおいて、誤り訂正メトリクスを用いて処理される。
国際公開第2007/084751号A2 米国特許出願公開第2009/0024905号A1
本発明は、ソリッド・ステート・メモリ・デバイスを制御するための方法を提供することを目的とする。
本発明の第1の態様の実施形態によると、ソリッド・ステート・メモリ・デバイスを制御するための方法であって、メモリ・デバイスのユニットに格納された符号語を誤り訂正反復復号プロセスによって復号するステップと、ユニットの符号語の復号に成功するために必要な平均反復回数を算定するステップと、平均反復回数を監視するステップとを含む方法が提供される。
実施形態においては、方法は、
平均反復回数を条件として、
ユニットが操作されるモードを変更すること、
損耗平均化ルーチンを適用すること、
ユニットをそれ以上操作しないようにすること、
ユニットに関するデータの損失を防ぐための尺度を適用すること、
復号プロセスにおいて用いられる1つ又は複数のパラメータを変更し、変更されたパラメータを用いて復号プロセスの実行を続けること
のうちの少なくとも1つの作業(アクティビティ)が作動することと、
平均反復回数を監視するステップは、平均反復回数を閾値と比較することと、平均反復回数が閾値を超えたときに少なくとも1つの作業が作動することとを含むことと、
平均反復回数が閾値を超えたときにユニットがマーク付けされることと、
復号プロセスにおいて、最大待ち時間及び最大反復回数の一方が定められ、その後に符号語を復号するための復号プロセスが最終的に終了し、平均反復回数が閾値を超えたときに、最大待ち時間又は最大反復回数をそれぞれ増加させることと、
最大ユーザ・ビット誤り率が、誤り訂正反復復号プロセスが適用された後の符号語の誤り率であるユーザ・ビット誤り率によって定められ、平均反復回数が閾値を超えたときには、最大ユーザ・ビット誤り率を増大させることと、
復号プロセスにおいて、メモリ・デバイスのセルに格納された物理値によって表された符号記号の事後確率を算定するための反復において、セルごとに利用可能な符号記号の数を超える量子化レベル数が適用されることと、
ユニットの平均反復回数は、ブロックからの所定の読出し回数についてユニットの符号語の復号に成功するために必要な反復回数を累算し、累算された反復回数を所定の読出し回数で割ることによって、算定されることと
所定の読出し回数に必要な時間が監視されることと、
メモリ・デバイスは多数のユニットを備え、平均反復回数はユニットごとに算定され、デバイスについての平均反復回数は、ユニットの各々の平均反復回数を累算し、累算された平均回数をユニットの数で割ることによって算定されることと、
デバイスは、単一のユニットを含むことと
の特徴のうちの1つ又は複数を含むことができる。
本発明の別の態様の実施形態によると、コンピュータ可読プログラム・コードが具体化されたコンピュータ可読媒体を含むコンピュータ・プログラム製品であって、コンピュータ可読プログラム・コードは、上記実施形態のいずれか1つによる方法を行うように構成されたコンピュータ可読プログラム・コードを含む、コンピュータ可読プログラム製品が提供される。
本発明のさらに別の態様の実施形態によると、ソリッド・ステート・メモリ・デバイスを制御するためのストレージ・コントローラであって、メモリ・デバイスのユニットに格納された符号語を誤り訂正反復復号プロセスによって復号するための軟判定復号器と、ユニットの符号語の復号に成功するために必要な平均反復回数を算定するための計算ユニットと、平均反復回数を監視するための監視ユニットとを備えるストレージ・コントローラが提供される。
実施形態においては、ストレージ・コントローラは、
軟判定復号器が、メモリ・デバイスのユニットに格納された多数の符号語を誤り訂正反復復号プロセスによって並列に復号するための多数の復号ユニットを含むことと、
軟判定復号器が、メモリ・デバイスのユニットに格納された符号語を誤り訂正反復復号プロセスによって復号するための単一の復号ユニットと、復号されることになる連続する符号語を格納するためのキューとを含むことと、
の特徴のうちの1つ又は複数を含むことができる。
本発明の別の態様の実施形態によると、ソリッド・ステート・メモリと、ソリッド・ステート・メモリを制御するための、本発明のストレージ・コントローラの態様によるストレージ・コントローラとを含むメモリ・デバイスが提供される
方法のステップは、方法の請求項の中に挙げられたものとは異なる順序で実行できることが理解される。こうした異なる順序もまた、現在挙げられているステップの順序と同様に、こうした請求項の範囲内に含まれるものとする。
方法の態様に関して説明された実施形態は、デバイス、コンピュータ・プログラム製品などといった他のカテゴリのいずれに関しても開示された実施形態とみなされ、逆も同様であるものとする。
本発明の実施形態によるソリッド・ステート・メモリ・デバイスを制御するための方法のフローチャートである。 本発明の実施形態によるソリッド・ステート・メモリ・デバイスを制御するための方法のフローチャートである。 図2の方法において用いられる種々のカウンタの例示的な状態を示す2つの表である。 復号プロセスにおける、生のビット誤り率と、ユーザ・ビット誤り率と、待ち時間/反復との間の関係を示す図である。 本発明の実施形態によるストレージ・デバイスのブロック図である。 本発明の実施形態によるメモリ・コントローラのブロック図である。 フラッシュ・ベースのメモリ・デバイスのメモリ空間の一部分の概略図である。
本発明及びその実施形態は、添付の図面と共に、現時点では好ましいがそれでもなお例示的である実施形態の詳細な説明を参照することによって、より十分に理解することができるであろう。
以下の説明への導入として、最初に、ソリッド・ステート・メモリ・デバイスが典型的にはストレージ・コントローラによって制御される方法に関して、本発明の一般的な態様が指摘される。メモリ・デバイスのユニットに格納された符号語は、誤り訂正反復復号プロセスによって復号される。ユニットの符号語の復号に成功するために必要な平均反復回数が算定される。こうした平均反復回数は、監視される。
この概念は、反復復号を可能にする適切な誤り訂正符号を用いる軟判定復号プロセスをメモリ・デバイスに格納された符号語に適用するときに、損耗という、ソリッド・ステート・メモリ・デバイスにおける全く異なる主題についての意味のある情報が復号操作から得られるという知見に基づく。
フラッシュ、及び相変化メモリ・デバイスなどの他のソリッド・ステート・メモリ・デバイスは、損耗という形のデバイスの物理特性のために、寿命が限られている。具体的には、フラッシュ・メモリ・デバイスは、ストレージの整合性が悪化し始めてデータを安全に読み出すことも書き込むこともできなくなるまでに、書込み−消去サイクルの回数が限られる。こうした、各ブロックが損耗しきる前にそのブロック上で行うことができる書込み−消去サイクルの最大数は、耐久度と呼ばれる。ブロックごとに著しく異なることがある一定のレベルの損耗をブロックが経験した後、性能が急速に低下する。耐久度は、10年のデータ保持期間を仮定すると、典型的には、SLCについては100000のオーダー、MLCについては10000のオーダーであることがあり、ここでデータ保持期間とは、訂正可能な誤りを伴う可能性があるデータをデバイスから読み出すことができる最大時間をいう。
さらに、ソリッド・ステート・メモリ・デバイスの損耗は、これらのデバイスの操作のされ方によって部分的に加速される。例えば、NANDフラッシュ・メモリは、ブロックのユニットと、ページのサブユニットとで構成される。多数のページがブロックを形成する。読出し及び書込み操作は、こうした操作の最小単位としてページに適用することができるが、消去操作は、ブロック全体にしか適用することができない。また、他のストレージ技術においては、古いデータは単に新しいデータで上書きすることができるが、フラッシュ技術は、新しいデータを消去されたブロックに書き込むことができる前に消去操作を必要とする。フラッシュ技術においては、消去操作は読出し又は書込み操作よりずっと長い時間がかかるという理由で、新たなデータ又は更新されたデータを古いデータが残る同じページに書き込む代わりに、空きページ・アロケータによって提供される或る空きページに書き込む、「アウト・オブ・プレース書込み」と呼ばれる書込み技術が適用される。古いデータを含むページは、無効なページである。或る時点において、「ガベージ・コレクション」と呼ばれるプロセスが、ブロックの全ての有効なページの内容を異なるブロックにある空きページに移動することによって、新たな書込みのためにブロックを空ける。その結果、対象のブロックは、最終的に無効なページのみを含み、消去することができる。このアウト・オブ・プレース書込み手続は、効果が「書込み増幅」と呼ばれる、幾つかの追加的な内部書込み操作を必要とし、書込み増幅が結果的にデバイスの損耗を増幅させる。ソリッド・ステート・メモリ・デバイスの損耗を監視することは、損耗しつくされたブロックによってデータが失われることを防ぐために重要である。
誤り訂正反復復号プロセスを適用するときに符号語の復号に必要な平均反復回数は、それぞれのユニットが示す損耗のレベルを表すことが見出だされた。言い換えると、符号語の復号に成功するために必要な平均反復回数は、ユニットの損耗の尺度となる。平均反復回数を監視する方法によって、ユニットの損耗を監視することができ、平均反復回数を条件として定められたアクションをとることができる。
通常の使用状況下での低い損耗レベルの場合には、ブロック/ユニット性能の良さが、復号の成功を宣言するために非常に少ない反復しか必要としないことにつながり、従って、復号待ち時間もほとんど体感されない。損耗又はブロックの最後の書込み操作以降の時間が増大するにつれて、性能は低下し、復号に成功するためにより多くの反復が必要となる。従って、ブロックに格納された符号語の復号に成功するための平均反復回数は、損耗レベルの尺度として採用される。
軟判定復号ではなく硬判定の形で硬判定復号が用いられる誤り訂正符号(ECC)用の復号アルゴリズムにおいては、符号記号(code symbol)を表現し符号記号に変換されることになる、メモリ・デバイスのセルに格納された物理値に対して、量子化が行われる。例えば、物理値がセルに格納された電圧である場合には、量子化レベルは、セルに符号化された符号記号によって想定される可能な二進値の1つを表わす一定の電圧とすることができる。従って、硬判定復号のための量子化レベルの数は、典型的には、符号記号によって想定される可能な二進値の数に等しい。例えば、4レベル・セルのフラッシュ・メモリ・デバイスにおいては、典型的には2つの二進符号記号が符号化され、硬判定のために4レベルの量子化器が用いられる。量子化によって得られた回復された符号記号列は、元の情報ビット列を表すことになる。例えば、リード・ソロモン(RS)又はボース・チョードリ・オッカンガム(BCH)符号が、一般に、フラッシュ・メモリにおける硬判定復号アルゴリズムと共に用いられる。
硬判定復号についての主な問題は、1つ又は複数の符号記号を表し得る物理値に対して硬判定量子化を行うときには常に、回復不能な情報の損失が起こることである。この問題を克服するために、ECCの軟判定復号を適用することができる。軟判定復号アルゴリズムにおいては、1つ又は複数の符号記号を表し得る物理値は、理想的には、最終的な判定が所与の少数の量子化レベルに関して行われるという硬判定符号の精神における事前の量子化がなされることなく、復号器に入力される。軟判定復号の実施に際して、物理値によって表される符号記号によって想定される可能な二進値の個数より多い、例えば8倍多い量子化レベル数で、量子化が適用される。従って、軟判定復号は、符号記号の数を大幅に増加させる量子化レベル数を用いることによって、どの符号記号二進値が物理値によって表されるかの判定に反復的に近付くことを特徴とする。或る部類の符号については、反復軟判定復号アルゴリズムが適用された場合には、達成可能な符号化利得がかなり増大する。反復軟判定復号スキームは、通常、2つの軟判定復号コンポーネント/論理の間におけるメッセージ渡し手続を適用し、それにより、各々のコンポーネントは、他方のコンポーネントからの軟判定情報を用いてより信頼できる判定を生ずる。軟判定復号プロセスを適用することによって、硬判定復号と比較して、回復不能な情報の損失を回避することができる。
このように、本発明の文脈において、軟判定復号は、メモリ・デバイスのセルに格納された物理値によって表される符号記号二進値を求めるための種々の反復において多数の量子化レベルを用いる復号プロセスをいう。こうしたプロセスにおいては、量子化レベル数は、セルごとに利用可能な符号記号によって想定される可能な二進値の個数を超える。量子化レベル数は、セルごとに利用可能な符号記号によって想定される可能な二進値の個数を少なくとも8倍超えることが好ましい。好ましい実施形態においては、ターボ符号又は低密度パリティ検査(LDPC)符号のための軟判定復号器が適用される。データをデバイスに書き込むときには、データは、軟判定復号器によって復号することができる対応する誤り訂正符号、好ましくはターボ符号又は低密度パリティ検査(LDPC)符号によって、符号化されることが好ましい。
ソリッド・ステート・メモリ・デバイスにおける損耗の問題を軽減するために、損耗レベルが異なるブロックに対する不均等な誤り保護が提案されてきた。これは、損耗のレベルが早期に得られるか又は平均反復回数に暗示され得るので、軟判定復号を用いて、提案された反復符号である同じ誤り訂正符号によって全てのブロックを扱うことができるという理由により、もはや不要となる。
平均反復回数を条件として、損耗平均化(ウェアレベリング)と呼ばれる、フラッシュ・コントローラによって行われる内部管理プロセスを適用することができる。このプロセスは、メモリ・デバイスの損耗の特徴に対処するものである。損耗平均化は、全ての利用可能なユニット間で書き込み−消去サイクルを均一にして、不均一な損耗を回避し、それによって全体の寿命を長くすることを目的とする、種々のデータ配置機能及びデータ移動機能を伴う。具体的には、損耗平均化機能は、新たなデータが書き込まれるべきブロックを選択することと、さらに、フラッシュ・メモリ内の格納されたデータを移動してサイクル計数の少ないブロックを開放し、損耗を一様にすることとをつかさどる。こうした損耗平均化プロセスは、識別された特定の平均反復回数又は平均反復回数の範囲によって作動するようにしてもよい。ユニットごとに書き込み−消去サイクルを計数することなどによって損耗を判断するための手段を別途確立することは、もはや必要ない。平均反復回数に暗示される損耗の尺度は、損耗平均化プロセスのきっかけとして及び/又は損耗推定入力として用いることができる。
要約すると、ターボ符号又はLDPC符号などの反復符号を用いてユニットに格納された符号語の軟判定復号のために必要な反復回数が監視される。通常の使用状況下での低い損耗レベルの場合には、ユニット性能の良さが、復号の成功を宣言するために非常に少ない反復しか必要としないことにつながり、従って、復号待ち時間もほとんど体感されない。損耗又はブロックの最後の書込み操作以降の時間が増大するにつれて、性能は低下し、復号に成功するためにより多くの反復が必要となる。従って、ブロックに格納された符号語の復号に成功するための平均反復回数は、損耗レベルの尺度として採用される。
図1は、本発明の実施形態による、ソリッド・ステート・ストレージ・デバイスを制御するための方法のフローチャートを示す。ステップ10において、例えばフラッシュ・ベースのメモリ・デバイスのブロックであるユニットに格納された符号語が、誤り訂正反復復号プロセスによって復号される。ステップ11において、ユニットの符号語の復号に成功するために必要な平均反復回数が、多数の読出しプロセスと同等のステップ10における多数の符号語の復号に基づいて算定される。ステップ12において、平均反復回数が監視されて閾値と比較される。平均反復回数が閾値より小さい場合には(いいえ)、ステップ11における要件に従って平均反復回数を構築できる十分な回数の読出しが行われるまで、プロセスはステップ10から新たに開始する。
ステップ12において、平均反復回数が閾値より大きい場合には(はい)、ステップ13において、1つ又は複数の作業を適用することができる。こうした作業は、
ユニットが操作されるモードを変更することと、
損耗平均化ルーチンを適用することと、
ユニットをそれ以上操作しないようにすることと、
ユニットに関するデータの損失を防ぐための尺度を開始することと、
復号プロセスにおいて用いられる1つ又は複数のパラメータを変更し、変更されたパラメータを用いて復号プロセスの実行を続けることと
のうちの1つ又は複数を含むことができる。上記のリストは、網羅的なものではなく、かつ、全ての異なる作業がデバイスに同時に施される必要もない。
好ましくは平均回数が閾値を超えたときの、平均反復回数を条件として開始される作業の特定の例は、次の通りとすることができる。
平均回数が超えた損耗平均化閾値に関して、現在のブロックを含む多数のブロックにわたる損耗の分布を釣り合わせるために、損耗平均化プロセスを開始することができる。例えば、平均反復回数及び対応する損耗平均化閾値が、現在のブロックにおいて比較的高い損耗レベルを示す場合には、到着する新たなデータはいずれも、より低い損耗レベルを示す異なるブロックに書き込まれるようにすることができる。例えば閾値を超えることによって作動する場合には、現在のブロック上では以後は読出し操作のみが許可され、書込み操作又は消去操作は許可されないことも、操作におけるモードとして理解することができる。
平均反復回数の監視の結果として操作のモードを変更することは、例えば、データの読出し、データの書込み、消去操作、符号化及び/又は復号操作、ガベージ・コレクション、他の管理的タスク等に影響することがある。要約すると、識別された損耗から出発し及び/又はその損耗を考慮して変更されることがある、現在のいずれの操作的プロセスも、操作のモードの変更の範囲内に含まれるものとされる。
例えば反復平均回数が非常に高い損耗レベルを示す停止閾値を超える場合には、例えば現在のブロックから有効なデータが喪失することを防ぐためにフェイルセーフ・ルーチンを適用した後で、現在のブロック上の全ての操作を停止することができ、ブロックはそれ以上用いられないことになる。
好ましい実施形態においては、上に掲げた作業のうちの幾つかを逐次的に又は並列に開始することができ、異なる作業についての閾値は、閾値の値が異なる場合がある。
図1における好ましい方法によると、平均反復回数が閾値を超えるブロックは、それ以上使用できないもの及び/又は信頼できないものとしてマーク付けされる。こうした場合において、即ちステップ14において、本ブロック上のいかなる操作も停止することができる。
例えば復号パラメータの変更などといった、停止操作以外の作業が好ましい選択である場合には、復号プロセスは、点線で示されるようにステップ10において継続することができ、ステップ11において新たな平均反復回数を算定するために、関連する復号を含む読出し操作の新たなサイクルが実行されるが、その際には変更された復号パラメータが適用される。
図1のフローチャートは、ブロックの損耗が増大するにつれて、セル性能が低下し、復号に成功するためにより多くの反復が必要となることを示す。復号に成功するために必要な平均反復回数が、セルが損耗していない初期段階における通常の操作に対して相対的に設定することができる閾値を超えたときには、そのブロックは、信頼できないものと宣言することができ、それ以上用いられない。
図2は、本発明の別の実施形態によるフローチャートを示し、ここにおいても、読出し要求の際に出力を生成する軟判定復号アルゴリズムによって必要とされる反復回数が監視される。
ブロック・レベルで―ブロックは、本方法が適用されるフラッシュ・メモリ・デバイスのユニットとすることができる―ステップ20において操作が開始し、ステップ21にまとめて示されるように、種々のカウンタ<k>、<r>、及び<i>がゼロに設定される。サイズ「w」の所定のウィンドウが導入され、ここで「w」をブロックにおける連続する読出しと考える。これは、ブロックごとのレジスタにおけるカウンタ<r>によって実装することができ、カウンタ<r>は、ブロックにおける各々の読出し操作の際に増加され、ステップ24において「r」が「w」に達したときに、ステップ21においてリセットされる。リセットの際に、ウィンドウ「w」のインデックスを表すカウンタ<k>は、ブロックごとのレジスタにおいて増加される。さらに別のカウンタ<i>は、ブロックごとのレジスタに実装され、ステップ22におけるブロックの読出し操作の際に結果を作り出すために必要な反復回数「m」に応じて、ステップ23において増加される。この意味で、カウンタ<i>は、種々の読出し操作をサポートする復号プロセスにおいて必要な反復回数を累算する。このカウンタ<i>は、ステップ21に示されるように、「r」が「w」に達したときにリセットされる。カウンタ<i>の値は、リセットされる前に、ブロックごとのレジスタにおける別のカウンタ位置<i_previous>に格納することができるが、このことは図2のフローチャートには示されない。従って、最初の「w」の読出しは、w_1で表される第1のウィンドウを形成し、次の「w」の読出しは、w_2で表される第2のウィンドウを形成し、以下同様である。その結果、ウィンドウw_kは、連続するwの読出しの列(k−1)×w+1,(k−1)×w+2,…,k×wを含む。「r」が「w」に達した後、必要な反復平均回数n_kは、ステップ25において、上記に基づいて次の通り計算される。
ウィンドウw_kにおける平均反復回数n_k: n_k=i/w
ここで、こうした平均反復回数n_kは、ステップ26において閾値「thres」と比較することによって監視される。平均反復回数n_kが閾値「thres」を上回る場合には(はい)、ステップ27においてプロセスは停止され、本実施形態においては、それぞれのブロックが使用不能としてマーク付けされる。必要に応じて、他の作業をステップ27と組み合わせて開始してもよい。
ステップ26において、平均反復回数n_kが閾値「thres」を下回る場合には、プロセスは、ステップ21において、「w」の読出しの新たなウィンドウk+1について再び開始し、これについて、平均反復回数が、ステップ25において算定され、ステップ26において監視される。
必要に応じて、平均反復回数n_kの算定と組み合わせて、次の通りに平均反復回数の変化率を計算することができる。
ウィンドウw_(k−1)における平均反復回数: n_(k−1)=i_previous/w
ウィンドウw_kにおける平均反復回数の変化量d_k: d_k=n_k−n_(k−1)
列d_kを用いて、デバイスの損耗の変化率を推定することができる。d_kが所定の閾値を超えた場合には、適切なアクションを追加的に取ることができる。
データ保持期間の問題は、別の実施形態に従って対処することもできる。データ保持期間とは、訂正可能な誤りを伴う可能性がある格納されたデータを読み出すことができる最大時間をいう。読出し問題は、損耗のためではなくデータが長期間更新されずに格納され続けたために、データが破損することによって起こる場合があることを思い出されたい。具体的には、上述の方法を参照すると、典型的なウィンドウは、復号のために行われた反復回数についての情報を伴うが時間の概念を伴わない、wの読出し操作を含む。保持期間を損耗と区別するために、対応するウィンドウの存続時間、即ちウィンドウがどれだけ長くアクティブであるかを示すための追加的なカウンタを準備することができる。ウィンドウの存続時間が保持期間閾値を超え、平均反復回数がその割り当てられた閾値を超えた場合には、こうしたブロックにおいて起こり得るデータ損失は、損耗ではなくデータ保持期間が原因であると仮定することができる。ウィンドウがどれだけ長くアクティブであるかを監視した結果として、他の又は追加的な手段、例えばウィンドウの存続時間が保持期間閾値を超えた場合にはブロックの有効なデータを再配置することを、実施することができる。
図2に示される手法は、いつメモリ・デバイス全体が損耗しきるかを検出するために拡張することもできる。1つの可能な実装形態が、以下に説明され、ブロック・レベルにおける平均反復回数の算定に類似する構成を取るが、カウンタはデバイスにおけるいずれの読出しプロセスの反復も計数するように実装されるという、デバイス・レベルへの移行がなされる。従って、デバイス・レベルでの反復回数は、デバイスごとのカウンタを通じて計数される。具体的には、サイズ「W」のウィンドウが導入され、ここでWをデバイスにおける連続する読出しと考える。これは、デバイスごとのレジスタにおけるカウンタ<R>によって実装することができ、カウンタ<R>は、デバイスにおける各々の読出し操作の際に増加され、「R」が「W」に達したときにリセットされる。リセットの際に、ウィンドウのインデックスを表す別のカウンタ<K>が、デバイスごとのレジスタにおいて増加される。さらに別のカウンタ<I>が、デバイスごとのレジスタに実装され、いずれかのブロックにおける読出し操作の際に結果を作り出すために必要な反復回数に応じて増加される。このカウンタ<I>は、「R」が「W」に達したときにリセットされる。カウンタ<I>の値は、リセットされる前に、デバイスごとのレジスタにおける別のカウンタ位置<I_previous>に格納することができる。従って、最初のWの読出しは、W_1で表される第1のウィンドウを形成し、次のWの読出しは、W_2で表される第2のウィンドウを形成し、以下同様である。その結果、ウィンドウW_Kは、連続するWの読出しの列(K−1)×W+1,(K−1)×W+2,…,K×Wを含む。必要な平均反復回数及びその変化率は、上記に基づいて次の通り計算される。
W_Kにおける平均反復回数N_K: N_K=I/W
W_(K−1)における平均反復回数: N_(K−1)=I_previous/W
W_Kにおける平均反復回数の変化量D_K: D_K=N_K−N_(K−1)
デバイス・レベルでの平均反復回数の算定は、ブロック・レベルでの算定に加えて、又はその代わりに、実装することができる。デバイス・レベルでの損耗を観察するに当たって、デバイス・レベルでの平均反復回数が閾値を超えた際に開始されるいずれの作業も、例えば、デバイスを損耗しきったものとしてマーク付けすること、並びに/又は、以後のさらなる書込み及び/若しくは消去操作がデバイスに適用されるのを防ぐことによって、デバイス特有のものとすることができる。
別の実施形態においては、平均反復回数の算定を、デバイスの各々のブロックに対して行うことができる。さらに、デバイス・レベルでの平均反復回数の算定の場合は、全てのブロックについて算定された平均反復回数を累算することができる。また、デバイスについての前記平均反復回数は、前記復号ユニットの各々の前記平均反復回数を累算し、前記累算された平均数を前記復号ユニットの数で割ることによって算定される。1つの実施形態においては、個々のブロックに対する操作は、その特定のブロックについての平均反復回数が閾値を超えた場合に停止又は修正することができ、デバイス全体に対する操作は、累算された反復回数が閾値を超えた場合に停止または修正することができ、その閾値は、ブロック・レベルの閾値と同じ値に設定することも、異なる値、具体的にはより小さい値に設定することもできる。デバイス全体に対する操作は、使用不能と宣言されたブロックの数が閾値を超えた場合に停止することもできる。
ブロックIDの例及びデバイスIDの例について、ブロックごと及びデバイスごとのレジスタの内容の典型的なスナップショットが、図3の表に示される。図2に関して導入されたカウンタに対応するカウンタk、r、i、K、R、Iについて、カウンタ値の例が示される。
図4は、生のビット誤り率がx軸に、待ち時間/反復がy軸に、ユーザ・ビット誤り率がz軸に表された3D図によって、本方法及び本デバイスのより広範囲の関係を示す。生のビット誤り率は、メモリに格納されたデータにおけるビット誤り率、即ち、誤り訂正が適用されない場合に格納された符号語が示すビット誤り率を特徴付けるものである。誤り訂正符号が適用されるという理由で、ビット誤り率は誤り訂正符号によって改善することができ、ユーザ・ビット誤り率は、誤り訂正符号化されたデータを復号した後でも依然として残るビット誤り率を表す。反復復号の手法を用いる符号が用いられるという理由で、待ち時間/復号は、符号語の復号に成功するために必要な時間又は符号語の復号に成功するために必要な反復回数のいずれかを表すものとすることができる。本図において、反復回数は、多数の復号にわたって算定される平均回数ではなく、個々の符号語を復号するために必要な回数を表すことに注意されたい。
本例の場合においては、ソリッド・ステート・メモリ・デバイスはフラッシュ・メモリ・デバイスであり、提案される方法の実施形態は、フラッシュ・メモリ・デバイスにおけるセルからのアナログ信号の読み戻しV(T)、即ち時間に対する電圧のサンプルを用いる。それぞれのブロックにおける損耗が増大するにつれて、生のビット誤り率、すなわち誤り訂正前に個々の記号判定に適用可能な誤り率も増大し、その結果、復号のために必要な反復回数が増加する。符号記号の復号に成功できない場合であってもデバイスが動作し続けられる限られた待ち時間を保つために、符号語を復号するために行われる反復の回数を制限することが好ましい。従って、許容される所与の待ち時間又は最大反復回数の場合には、損耗の増大のために、生のビット誤りが増加するにつれてユーザ・ビット誤り率が増大する。また、許容される所与の待ち時間(最大待ち時間)及び最大反復回数の一方が定められ、その後に符号語を復号するための復号プロセスが最終的に終了する。生のビット誤り率が増大したときには、反復回数を増加させ、従って復号待ち時間を増大させるのと引き換えに、特定のユーザ・ビット誤り率を維持できることに注意されたい。デバイスの寿命の終わりの頃には、符号語の復号に成功するための反復回数は、許容される最大反復回数に近い。その時点において、即ち、例えば平均反復回数が許容される最大反復回数より小さい第1の閾値を超えたときに、許容される最大反復回数は、より大きい値に設定することができ、従って、信頼性を維持するため、即ち特定のユーザ・ビット誤り率を維持するために、例外的に増加させることができる。第2のステップにおいて、平均反復回数が、好ましくは第1の閾値を超えるものとすることができる第2の閾値を超えたときに、ブロック又はデバイスにマーク付けし、その際に、それらを信頼できずもはや使用できないものとして宣言することができる。第2の閾値が最初の許容される最大反復回数に等しい値に設定された場合には、目標のユーザ・ビット誤り率が、許容される最大の復号反復回数内で平均して達成できないときに、ブロックを信頼できないものと宣言することができる。また、最大ユーザ・ビット誤り率が、記誤り訂正反復復号プロセスが適用された後の符号語のビット誤り率であるユーザ・ビット誤り率によって定められ、平均反復回数が増加するときに、最大ユーザ・ビット誤り率を増大させる。
図4においては、デバイスの寿命にわたって、対象となるブロックの損耗が増大し、それが、例えば生のビット誤り率がRB1からRB2に増大する結果をもたらす。生のビット誤り率RB1を伴う符号語の復号に成功するために必要な反復回数がIT1に制限される場合には、誤り訂正符号であるにもかかわらず訂正可能ではないビット誤りの尺度である、RB1及びIT1に関連するユーザ・ビット誤り率UB1は、UB2に増大することが、図から明らかになる。しかし、許容される最大反復回数ITMがIT1より大きい値を有する場合には、IT1を超えるがITMより小さい回数の反復を実行することによって、デバイスの操作のために指定された目標ユーザ・ビット誤り率とすることができるユーザ・ビット誤り率UB1に固定する機会がある。平均反復回数が閾値を超える場合には、最大反復回数は、例外的に、少なくともRB3より小さい生のビット誤り率について目標ユーザ・ビット誤り率がUB1を保つことができるように、ITMを超えるIT2に設定することを可能にする場合がある。言い換えると、図4に定性的に示されるように、ブロックの寿命と復号の待ち時間との間における種々のトレードオフを選択することが可能である。
図5は、本発明の実施形態によるメモリ・デバイスのブロック図を示す。メモリ・デバイス1は、ブロック/ページ・メモリ空間構造を伴うフラッシュ・ベースのソリッド・ステート・メモリ2を含む。一部のブロックが21として示されている。メモリ・コントローラ3は、フラッシュ・メモリ2の作業を制御し、従って、メモリはコンピュータ化されたメモリと表現することができる。メモリ・コントローラ3は、ストレージ・コントローラと表すこともできる。メモリ・コントローラ3は、具体的には、符号化及び復号を含む、データをメモリ2へ書き込み、メモリ2から読み出すように、並びにデータの読み出し及び書き込みに関する全ての管理タスクを実行するように、適合される。メモリ・コントローラ3は、さらに、データを格納するためにストレージ・デバイス1を用いるホスト4に接続される。従って、ホスト4は、ストレージ・デバイス1に対して読出し及び/又は書込みコマンドを発行する。
上述の実施形態のいずれか1つによる方法を実装するために、メモリ・コントローラ3は、図6に示されるように、好ましくはROM31といった不揮発性の書き換え不可能なストレージ媒体に格納されるコンピュータ・プログラム・コードを提供することが好ましい。メモリ・コントローラは、さらに、プログラム・コードをロードして入れるためのRAM32と、RAM32内のプログラム・コードを実行するための処理ユニット33とを提供する。処理ユニット33は、説明された方法による軟判定復号のための軟判定復号器331、幾つかの読み込みコマンドの復号プロセスに必要な平均反復回数を算定するための計算ユニット332、及び、内部において例えば平均反復回数が閾値と比較される監視ユニット333などといった機能ユニットを含む。処理ユニット33は、復号される符号語がキュー334によって供給される信号軟判定復号器を含む。さらに、メモリ・コントローラ3の構成要素間で通信するための内部通信システム34が提供され、フラッシュ・メモリと通信するためのインターフェース35が提供され、さらに、ホストとの任意の通信のための別のインターフェース36を提供することができる。
好ましい実施形態においては、LDPC符号が誤り訂正符号として実装され、軟判定復号器331におけるデータ取得のために反復軟判定復号が適用される。重要なパラメータは、復号プロセスに関連する待ち時間である。ブロックに格納された符号語の復号のための平均反復回数が監視される。受け入れ可能な損耗レベルの場合には、5000ビットまでの長さの符号語について、20回以内の反復で応答が行われることが期待される。各々の反復が1usで行われると仮定すると、応答時間は長くても20usとなり、これは適切なSSD操作として受け入れ可能な限度内である。長い待ち時間と引き換えに実装の複雑さが減少する構成である、反復復号のための単一の論理に加えて連続する読出し要求を格納するためのキューを伴う軟判定復号器331の上述の構成の代わりに、n個の符号語を一度に復号するために必要な論理を複製することによって反復復号を実装する構成とすることができ、その結果、読出し要求を並列に処理することができて、待ち時間が短くなる。
最後に、図7は、ブロック21内に編成されたフラッシュ・メモリの部分を示すものであり、ブロック21の一部のブロック131から138が明示的に示される。ページは、縦列のように図示されるブロックにおける横縞として示される。ブロック131から138のすべてのブロックは、ユーザ・データを保持するように適合されたデータ・ブロックである。本例において、ブロック133は、受け入れ可能な閾値を上回る損耗を示すことが決定されていると仮定する。その結果、図7において矢印60によって示されるように、そのブロックの有効なページは、別のブロック、すなわち本例においてはブロック135に複製され、そのブロックが、今度は、新たなデータ又は更新されたデータの書込みをサポートする。こうしたデータ保存の後、ブロック133は、もはや使用されていないものとしてマーク付けされる。
当業者により認識されるように、本発明の態様は、システム、方法又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとることができ、本明細書においては、これらは全て、一般的に「回路」、「モジュール」又は「システム」と呼ぶことがある。さらに、本発明の態様は、媒体内に具体化されたコンピュータ可読プログラム・コードを有する、1つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形態をとることができる。
1つ又は複数のコンピュータ可読媒体のいずれの組み合わせを用いることもできる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、電子的、磁気的、光学的、電磁気的、赤外線若しくは半導体のシステム、装置若しくはデバイス、又はこれらのいずれかの適切な組み合わせとすることができるが、これらに限定されるものではない。コンピュータ可読ストレージ媒体のより具体的な例(非網羅的なリスト)として、以下もの、即ち、1つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM)、光記憶装置、磁気記憶装置、又はこれらのいずれかの適切な組み合わせが挙げられる。本明細書の文脈においては、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって又はそれらに関連して用いるためのプログラムを収容又は格納することが可能ないずれかの有形媒体とすることができる。
コンピュータ可読信号媒体は、例えばベースバンドに、又は搬送波の一部として、コンピュータ可読プログラム・コードが組み入れられた伝搬データ信号を含むことができる。このような伝搬信号は、電磁気、光又はそれらのいずれかの適切な組み合わせを含むがこれらに限定されない、種々の形態のうちのいずれかをとることもできる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、かつ、命令実行システム、装置若しくはデバイスによって又はこれらと関連して用いるためのプログラムを通信、伝搬又搬送することができる、いずれかのコンピュータ可読媒体とすることができる。
コンピュータ可読媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、RF等、又はこれらのいずれかの適切な組み合わせを含むがこれらに限定されるものではない、いずれかの適切な媒体を用いて伝送することができる。
本発明の態様についての操作を実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++等のようなオブジェクト指向型プログラミング言語、及び「C」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語のいずれかの組み合わせで書くことができる。全体がユーザのコンピュータ上で実行される場合もあり、独立型ソフトウェア・パッケージとして、一部がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は全体が遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて)。
本発明の態様は、本明細書において、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて、マシンを製造し、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するための手段を生成するようになる。
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、その結果、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を製造するようにすることもできる。
コンピュータ・プログラム命令をコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、そのコンピュータ、他のプログラム可能装置、又は他のデバイス上で一連の動作ステップを行わせてコンピュータ実装プロセスを生成し、それにより、そのコンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実施するためのプロセスを提供するようにすることもできる。
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実行するための1つ又は複数の実行可能な命令を含む、モジュール、セグメント又はコードの一部を表すことができる。幾つかの代替的な実施において、ブロック内に記された機能は、図面内に記された順序とは異なる順序で行われることがあることにも留意すべきである。例えば、連続して示された2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックは、ときには逆の順序で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を行う専用ハードウェアベースのシステム、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
1:メモリ・デバイス
2:メモリ
21、131〜138:ブロック
3:メモリ・コントローラ
31:ROM
32:RAM
33:処理ユニット
331:軟判定復号器
332:計算ユニット
333:監視ユニット
334:キュー
34:内部通信システム
35:メモリと通信するためのインターフェース
36:ホストと通信するためのインターフェース
4:ホスト

Claims (20)

  1. ソリッド・ステート・メモリ・デバイスを制御するための方法であって、
    前記メモリ・デバイスのユニットに格納された符号語を誤り訂正反復復号プロセスによって復号するステップと、
    前記ユニットの符号語の復号に成功するために必要な平均反復回数を算定するステップと、
    前記平均反復回数を監視するステップと
    を含み、
    前記平均反復回数を監視するステップは、前記平均反復回数を閾値と比較することを含み、
    前記平均反復回数が前記閾値を超えたことに応じて、少なくとも1つの作業が作動し、前記少なくとも1つの作業は、前記ソリッド・ステート・メモリ・デバイスの寿命と前記復号との間におけるトレードオフを選択することを可能にする、
    前記方法。
  2. 前記平均反復回数が前記閾値を超えたことに応じて、
    前記ユニットが操作されるモードを変更すること、
    損耗平均化ルーチンを適用すること、
    前記ユニットをそれ以上操作しないようにすること、
    前記ユニットに関するデータの損失を防ぐこと、
    前記復号プロセスにおいて用いられる1つ又は複数のパラメータを変更し、前記変更されたパラメータを用いて前記復号プロセスの実行を続けること
    のうちの少なくとも1つの作業が作動する、請求項1に記載の方法。
  3. 前記平均反復回数が前記閾値を超えたときに、前記ユニットはマーク付けされる、請求項1又は2に記載の方法。
  4. 最大待ち時間及び最大反復回数の一方が定められ、その後に符号語を復号するための前記復号プロセスが最終的に終了し、
    前記平均反復回数が前記閾値を超えたときに、前記最大待ち時間又は前記最大反復回数をそれぞれ増加させる、
    請求項1〜3のいずれか一項に記載の方法。
  5. 最大ユーザ・ビット誤り率が、前記誤り訂正反復復号プロセスが適用された後の符号語のビット誤り率であるユーザ・ビット誤り率によって定められ、
    前記平均反復回数が増加するときに、前記最大ユーザ・ビット誤り率を増大させる、
    請求項1〜4のいずれか1項に記載の方法。
  6. 復号プロセスにおいて、メモリ・デバイスのセルに格納された物理値によって表された符号記号二進値の事後確率を算定するための反復において、セルごとに利用可能な符号記号の数を超える量子化レベル数が適用される、請求項1〜5のいずれか1項に記載の方法。
  7. ユニットの前記平均反復回数は、前記ユニットからの所定の読出し回数についてユニットの符号語の復号に成功するために必要な反復回数を累算し、前記累算された反復回数を前記所定の読出し回数で割ることによって算定される、請求項1〜6のいずれか1項に記載の方法。
  8. 前記所定の読出し回数に必要な時間が監視される、請求項6に記載の方法。
  9. 前記メモリ・デバイスは、複数の復号ユニットを備えており、
    前記平均反復回数は、前記複数の復号ユニットの復号ユニットごとに算定され、
    前記デバイスについての前記平均反復回数は、前記復号ユニットの各々の前記平均反復回数を累算し、前記累算された平均数を前記復号ユニットの数で割ることによって算定される、
    請求項1〜8のいずれか1項に記載の方法。
  10. 前記デバイスは単一の復号ユニットを含む、請求項1〜8のいずれか1項に記載の方法。
  11. 前記少なくとも1つの作業が、前記ソリッド・ステート・メモリ・デバイスの寿命を増加する、請求項1〜10のいずれか一項に記載の方法。
  12. 前記少なくとも1つの作業が、
    記ソリッド・ステート・メモリ・デバイスの寿命を増加する為に、低サイクル計数を有する前記ソリッド・ステート・メモリ・デバイスのブロックを選択して前記ソリッド・ステート・メモリ・デバイスの摩耗を一様にすること
    を含む、請求項1〜10のいずれか一項に記載の方法。
  13. 前記ユニットの符号語の復号に成功するために必要な平均反復回数を算定するステップが、前記復号プロセスにおいて必要とされる平均反復回数を累算することを含む、請求項1〜12のいずれか一項に記載の方法。
  14. コンピュータに、請求項1〜13のいずれか1項に記載の方法の各ステップを実行させる、コンピュータ・プログラム。
  15. ソリッド・ステート・メモリ・デバイスを制御するためのストレージ・コントローラであって、
    前記メモリ・デバイスのユニットに格納された符号語を誤り訂正反復復号プロセスによって復号するための復号器と、
    前記ユニットの符号語の復号に成功するために必要な平均反復回数を算定するための計算ユニットと、
    前記平均反復回数を監視するための監視ユニットと
    を備えており、
    前記平均反復回数を監視するステップは、前記平均反復回数を閾値と比較することを含み、
    前記平均反復回数が前記閾値を超えたことに応じて、少なくとも1つの作業が作動し、前記少なくとも1つの作業は、前記ソリッド・ステート・メモリ・デバイスの寿命と前記復号との間におけるトレードオフを選択することを可能にする、
    前記ストレージ・コントローラ。
  16. 前記復号器は、前記メモリ・デバイスの前記ユニットに格納された多数の符号語の各々を誤り訂正反復復号プロセスによって並列に復号するための多数の復号ユニットを含む、請求項15に記載のストレージ・コントローラ。
  17. 前記復号器は、前記メモリ・デバイスの前記ユニットに格納された符号語を誤り訂正反復復号プロセスによって復号するための単一の復号ユニットを含み、
    前記復号器によって復号されることになる連続する符号語を格納するためのキューが設けられた、
    請求項15に記載のストレージ・コントローラ。
  18. 前記ソリッド・ステート・メモリ・デバイスの寿命と前記復号との間におけるトレードオフを選択することを可能にすることが、前記ソリッド・ステート・メモリ・デバイスの寿命を増加することである、
    請求項15〜17のいずれか一項に記載のストレージ・コントローラ。
  19. 前記少なくとも1つの作業が、
    記ソリッド・ステート・メモリ・デバイスの寿命を増加する為に、低サイクル計数を有する前記ソリッド・ステート・メモリ・デバイスのブロックを選択して前記ソリッド・ステート・メモリ・デバイスの摩耗を一様にすること
    を含む、請求項15〜17のいずれか一項に記載のストレージ・コントローラ。
  20. メモリ・デバイスであって、
    ソリッド・ステート・メモリと、
    前記ソリッド・ステート・メモリを制御するための請求項15〜19のいずれか1項に記載のストレージ・コントローラと
    を備えている、前記メモリ・デバイス。
JP2013530833A 2010-09-29 2011-09-22 ソリッド・ステート・メモリ・デバイスにおける復号 Active JP5846589B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP10181705.4 2010-09-29
EP10181705 2010-09-29
PCT/IB2011/054164 WO2012042444A1 (en) 2010-09-29 2011-09-22 Decoding in solid state memory devices

Publications (2)

Publication Number Publication Date
JP2013546039A JP2013546039A (ja) 2013-12-26
JP5846589B2 true JP5846589B2 (ja) 2016-01-20

Family

ID=44789562

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013530833A Active JP5846589B2 (ja) 2010-09-29 2011-09-22 ソリッド・ステート・メモリ・デバイスにおける復号

Country Status (6)

Country Link
US (1) US9176814B2 (ja)
JP (1) JP5846589B2 (ja)
CN (1) CN103119563B (ja)
DE (1) DE112011103295B4 (ja)
GB (1) GB2498298B (ja)
WO (1) WO2012042444A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437668B2 (en) 2017-03-06 2019-10-08 Toshiba Memory Corporation Memory controller, memory system, and method for controlling memory system

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8832506B2 (en) * 2012-01-20 2014-09-09 International Business Machines Corporation Bit error rate based wear leveling for solid state drive memory
US8947941B2 (en) * 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US20130262942A1 (en) * 2012-03-27 2013-10-03 Yung-Chiang Chu Flash memory lifetime evaluation method
US9047214B1 (en) 2012-05-22 2015-06-02 Pmc-Sierra, Inc. System and method for tolerating a failed page in a flash device
US8996957B1 (en) 2012-05-22 2015-03-31 Pmc-Sierra, Inc. Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes
US8972824B1 (en) 2012-05-22 2015-03-03 Pmc-Sierra, Inc. Systems and methods for transparently varying error correction code strength in a flash drive
US9021336B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages
US9176812B1 (en) 2012-05-22 2015-11-03 Pmc-Sierra, Inc. Systems and methods for storing data in page stripes of a flash drive
US9183085B1 (en) * 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency
US9021337B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for adaptively selecting among different error correction coding schemes in a flash drive
US9021333B1 (en) 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for recovering data from failed portions of a flash drive
US8793556B1 (en) 2012-05-22 2014-07-29 Pmc-Sierra, Inc. Systems and methods for reclaiming flash blocks of a flash drive
US8788910B1 (en) 2012-05-22 2014-07-22 Pmc-Sierra, Inc. Systems and methods for low latency, high reliability error correction in a flash drive
US9041428B2 (en) 2013-01-15 2015-05-26 International Business Machines Corporation Placement of storage cells on an integrated circuit
US9201727B2 (en) 2013-01-15 2015-12-01 International Business Machines Corporation Error protection for a data bus
US20140201599A1 (en) * 2013-01-15 2014-07-17 International Business Machines Corporation Error protection for integrated circuits in an insensitive direction
US9021328B2 (en) 2013-01-15 2015-04-28 International Business Machines Corporation Shared error protection for register banks
US9043683B2 (en) 2013-01-23 2015-05-26 International Business Machines Corporation Error protection for integrated circuits
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9026867B1 (en) 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
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
JP6430740B2 (ja) * 2013-11-05 2018-11-28 エルエスアイ コーポレーション ソリッドステートメモリシステムにおけるレイテンシーベースのデータ再利用のシステム及び方法
KR102110767B1 (ko) 2013-12-24 2020-06-09 삼성전자 주식회사 메모리 컨트롤러 구동방법 및 메모리 컨트롤러
US20150244397A1 (en) * 2014-02-26 2015-08-27 Metanoia Communications Inc. Method Of Efficient FEC Decoder Scheduling And Receiver Pipeline Flow Control And Apparatus Using The Same
TWI550628B (zh) * 2014-07-16 2016-09-21 群聯電子股份有限公司 解碼方法、記憶體儲存裝置及記憶體控制電路單元
US10230401B2 (en) 2015-03-10 2019-03-12 Toshiba Memory Corporation Memory controller for a non-volatile memory, memory system and method
US9727416B2 (en) * 2015-07-01 2017-08-08 Xilinx, Inc. Variable code rate solid-state drive
US10075191B2 (en) * 2016-03-21 2018-09-11 Nandext Srl Method for decoding bits-by varying LLR values in a solid-state drive, and solid-state drive implementing the method
KR101871682B1 (ko) * 2017-02-02 2018-06-28 한밭대학교 산학협력단 페이지 단위의 ldpc 복호 반복 횟수 기록 및 마모도 모니터링을 통한 신뢰도 높은 웨어-레벨링 수행방법
KR101893064B1 (ko) * 2017-02-02 2018-08-30 한밭대학교 산학협력단 Ldpc 복호 반복 횟수 기록 및 모니터링을 통한 웨어-레벨링 신뢰도 향상 시스템 및 방법
US10289330B2 (en) * 2017-03-30 2019-05-14 Western Digital Technologies, Inc. Allocating shared memory among multiple tasks in a multiprocessor environment
JP6454397B1 (ja) * 2017-12-20 2019-01-16 Nttエレクトロニクス株式会社 誤り訂正装置、誤り訂正方法及び光通信システム
CN111049619A (zh) * 2018-10-12 2020-04-21 瑞昱半导体股份有限公司 解码装置及解码方法
US11082071B2 (en) 2019-06-24 2021-08-03 SK Hynix Inc. Quality of service (QoS) aware data storage decoder
CN111611101B (zh) * 2020-04-22 2023-09-29 珠海妙存科技有限公司 调整闪存读取数据吞吐率的方法及装置
US11929761B1 (en) 2022-10-07 2024-03-12 Seagate Technology Llc Low latency decoder

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10107649A (ja) 1996-09-30 1998-04-24 Sanyo Electric Co Ltd 符号誤り訂正/検出デコーダ
US20010052104A1 (en) * 2000-04-20 2001-12-13 Motorola, Inc. Iteration terminating using quality index criteria of turbo codes
US20030101406A1 (en) 2001-10-12 2003-05-29 Leilei Song Low complexity and low power FEC supporting high speed parallel decoding of syndrome-based FEC codes
US7210077B2 (en) 2004-01-29 2007-04-24 Hewlett-Packard Development Company, L.P. System and method for configuring a solid-state storage device with error correction coding
US7392458B2 (en) 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
US8055979B2 (en) 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
WO2007132457A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
US7533328B2 (en) 2006-07-04 2009-05-12 Sandisk Il, Ltd. Method of error correction in a multi-bit-per-cell flash memory
EP2052389A4 (en) 2006-08-05 2009-08-19 Benhov Gmbh Llc SEMICONDUCTOR STORAGE ELEMENT AND METHOD
TWI360126B (en) 2006-09-28 2012-03-11 Sandisk Corp Nonvolatile memory with adaptive operations and me
US7805663B2 (en) 2006-09-28 2010-09-28 Sandisk Corporation Methods of adapting operation of nonvolatile memory
JP5177991B2 (ja) 2006-10-25 2013-04-10 株式会社東芝 不揮発性半導体記憶装置
JP4925301B2 (ja) * 2007-02-07 2012-04-25 株式会社メガチップス 半導体メモリシステム
CN101803205B (zh) * 2008-08-15 2013-12-18 Lsi公司 近码字的ram列表解码
US8234556B2 (en) * 2008-12-30 2012-07-31 Intel Corporation Broadcast receiver and method for optimizing a scale factor for a log-likelihood mapper
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
US8301987B2 (en) * 2009-10-29 2012-10-30 Sandisk Il Ltd. System and method of decoding data with reduced power consumption
US8335949B2 (en) * 2009-11-06 2012-12-18 Trellisware Technologies, Inc. Tunable early-stopping for decoders

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437668B2 (en) 2017-03-06 2019-10-08 Toshiba Memory Corporation Memory controller, memory system, and method for controlling memory system

Also Published As

Publication number Publication date
GB201306562D0 (en) 2013-05-22
WO2012042444A1 (en) 2012-04-05
CN103119563A (zh) 2013-05-22
GB2498298A (en) 2013-07-10
DE112011103295T5 (de) 2013-07-18
GB2498298B (en) 2017-03-22
US9176814B2 (en) 2015-11-03
US20130179754A1 (en) 2013-07-11
CN103119563B (zh) 2016-03-23
DE112011103295B4 (de) 2023-12-07
JP2013546039A (ja) 2013-12-26

Similar Documents

Publication Publication Date Title
JP5846589B2 (ja) ソリッド・ステート・メモリ・デバイスにおける復号
KR102308935B1 (ko) 다수의 에러 정정 코드들을 통한 nand 플래시 제어기들에서의 에러 정정 코드(ecc) 선택
KR101995748B1 (ko) Nand 플래시 메모리를 위한 결함 관리 정책들
US10135465B2 (en) Error correction methods and apparatuses using first and second decoders
US11188416B2 (en) Enhanced block management for a memory sub-system
KR101483383B1 (ko) 메모리 품질 모니터 기반 보상 방법 및 장치
US9214963B1 (en) Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system
US20120096328A1 (en) Multi-write endurance and error control coding of non-volatile memories
US20110252289A1 (en) Adjusting storage device parameters based on reliability sensing
EP2299362A2 (en) Forward error correction for memories
TWI612527B (zh) 解碼方法、記憶體儲存裝置及記憶體控制電路單元
WO2013065085A1 (en) Nonvolatile storage system compensating prior probability for low-density parity check codes
US20140129904A1 (en) Error detection and correction apparatus, mismatch detection apparatus, memory system and error detection and correction method
JP2010237822A (ja) メモリコントローラおよび半導体記憶装置
US11550663B2 (en) Changing of error correction codes based on the wear of a memory sub-system
JP2019057752A (ja) メモリシステム
JP2019057812A (ja) メモリシステム
JP2019160014A (ja) メモリシステム
US20180351577A1 (en) Iteration-adaptive decoding for non-binary ldpc codes
US11740957B2 (en) Prioritization of error control operations at a memory sub-system
JP2008305451A (ja) フラッシュメモリの状態検出方法
KR101893064B1 (ko) Ldpc 복호 반복 횟수 기록 및 모니터링을 통한 웨어-레벨링 신뢰도 향상 시스템 및 방법
US11567828B2 (en) Asymmetric LLR generation using assist-read
WO2019147473A1 (en) Storing critical data at a memory system
TW202410043A (zh) 記憶體控制器及低密度同位元查核碼之位元翻轉方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140508

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150310

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150326

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150326

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20150326

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150327

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150629

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150916

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150916

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150928

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20151030

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20151030

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151117

R150 Certificate of patent or registration of utility model

Ref document number: 5846589

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150