(57)【特許請求の範囲】
【請求項１】
ソリッド・ステート・メモリ・デバイスを制御するための方法であって、
前記メモリ・デバイスのユニットに格納された符号語を誤り訂正反復復号プロセスによって復号するステップと、
前記ユニットの符号語の復号に成功するために必要な平均反復回数を算定するステップと、
前記平均反復回数を監視するステップと
を含み、
前記平均反復回数を監視するステップは、前記平均反復回数を閾値と比較することを含み、
前記平均反復回数が前記閾値を超えたことに応じて、少なくとも１つの作業が作動し、前記少なくとも１つの作業は、前記ソリッド・ステート・メモリ・デバイスの寿命と前記復号との間におけるトレードオフを選択することを可能にする、
前記方法。
【請求項２】
前記平均反復回数が前記閾値を超えたことに応じて、
前記ユニットが操作されるモードを変更すること、
損耗平均化ルーチンを適用すること、
前記ユニットをそれ以上操作しないようにすること、
前記ユニットに関するデータの損失を防ぐこと、
前記復号プロセスにおいて用いられる１つ又は複数のパラメータを変更し、前記変更されたパラメータを用いて前記復号プロセスの実行を続けること
のうちの少なくとも１つの作業が作動する、請求項１に記載の方法。
【請求項３】
前記平均反復回数が前記閾値を超えたときに、前記ユニットはマーク付けされる、請求項１又は２に記載の方法。
【請求項４】
最大待ち時間及び最大反復回数の一方が定められ、その後に符号語を復号するための前記復号プロセスが最終的に終了し、
前記平均反復回数が前記閾値を超えたときに、前記最大待ち時間又は前記最大反復回数をそれぞれ増加させる、
請求項１〜３のいずれか一項に記載の方法。
【請求項５】
最大ユーザ・ビット誤り率が、前記誤り訂正反復復号プロセスが適用された後の符号語のビット誤り率であるユーザ・ビット誤り率によって定められ、
前記平均反復回数が増加するときに、前記最大ユーザ・ビット誤り率を増大させる、
請求項１〜４のいずれか１項に記載の方法。
【請求項６】
復号プロセスにおいて、メモリ・デバイスのセルに格納された物理値によって表された符号記号二進値の事後確率を算定するための反復において、セルごとに利用可能な符号記号の数を超える量子化レベル数が適用される、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
ユニットの前記平均反復回数は、前記ユニットからの所定の読出し回数についてユニットの符号語の復号に成功するために必要な反復回数を累算し、前記累算された反復回数を前記所定の読出し回数で割ることによって算定される、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記所定の読出し回数に必要な時間が監視される、請求項６に記載の方法。
【請求項９】
前記メモリ・デバイスは、複数の復号ユニットを備えており、
前記平均反復回数は、前記複数の復号ユニットの復号ユニットごとに算定され、
前記デバイスについての前記平均反復回数は、前記復号ユニットの各々の前記平均反復回数を累算し、前記累算された平均数を前記復号ユニットの数で割ることによって算定される、
請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
前記デバイスは単一の復号ユニットを含む、請求項１〜８のいずれか１項に記載の方法。
【請求項１１】
前記少なくとも１つの作業が、前記ソリッド・ステート・メモリ・デバイスの寿命を増加する、請求項１〜１０のいずれか一項に記載の方法。
【請求項１２】
前記少なくとも１つの作業が、
前記ソリッド・ステート・メモリ・デバイスの寿命を増加する為に、低サイクル計数を有する前記ソリッド・ステート・メモリ・デバイスのブロックを選択して前記ソリッド・ステート・メモリ・デバイスの摩耗を一様にすること
を含む、請求項１〜１０のいずれか一項に記載の方法。
【請求項１３】
前記ユニットの符号語の復号に成功するために必要な平均反復回数を算定するステップが、前記復号プロセスにおいて必要とされる平均反復回数を累算することを含む、請求項１〜１２のいずれか一項に記載の方法。
【請求項１４】
コンピュータに、請求項１〜１３のいずれか１項に記載の方法の各ステップを実行させる、コンピュータ・プログラム。
【請求項１５】
ソリッド・ステート・メモリ・デバイスを制御するためのストレージ・コントローラであって、
前記メモリ・デバイスのユニットに格納された符号語を誤り訂正反復復号プロセスによって復号するための復号器と、
前記ユニットの符号語の復号に成功するために必要な平均反復回数を算定するための計算ユニットと、
前記平均反復回数を監視するための監視ユニットと
を備えており、
前記平均反復回数を監視するステップは、前記平均反復回数を閾値と比較することを含み、
前記平均反復回数が前記閾値を超えたことに応じて、少なくとも１つの作業が作動し、前記少なくとも１つの作業は、前記ソリッド・ステート・メモリ・デバイスの寿命と前記復号との間におけるトレードオフを選択することを可能にする、
前記ストレージ・コントローラ。
【請求項１６】
前記復号器は、前記メモリ・デバイスの前記ユニットに格納された多数の符号語の各々を誤り訂正反復復号プロセスによって並列に復号するための多数の復号ユニットを含む、請求項１５に記載のストレージ・コントローラ。
【請求項１７】
前記復号器は、前記メモリ・デバイスの前記ユニットに格納された符号語を誤り訂正反復復号プロセスによって復号するための単一の復号ユニットを含み、
前記復号器によって復号されることになる連続する符号語を格納するためのキューが設けられた、
請求項１５に記載のストレージ・コントローラ。
【請求項１８】
前記ソリッド・ステート・メモリ・デバイスの寿命と前記復号との間におけるトレードオフを選択することを可能にすることが、前記ソリッド・ステート・メモリ・デバイスの寿命を増加することである、
請求項１５〜１７のいずれか一項に記載のストレージ・コントローラ。
【請求項１９】
前記少なくとも１つの作業が、
前記ソリッド・ステート・メモリ・デバイスの寿命を増加する為に、低サイクル計数を有する前記ソリッド・ステート・メモリ・デバイスのブロックを選択して前記ソリッド・ステート・メモリ・デバイスの摩耗を一様にすること
を含む、請求項１５〜１７のいずれか一項に記載のストレージ・コントローラ。
【請求項２０】
メモリ・デバイスであって、
ソリッド・ステート・メモリと、
前記ソリッド・ステート・メモリを制御するための請求項１５〜１９のいずれか１項に記載のストレージ・コントローラと
を備えている、前記メモリ・デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、フラッシュ・ベースのメモリ・デバイスなどのソリッド・ステート・メモリ・デバイスを含むストレージ・システム、及び、特にこうしたソリッド・ステート・メモリ・デバイスのための復号機構に焦点を当てた、こうしたソリッド・ステート・メモリ・デバイスを制御するための技術に関する。
【背景技術】
【０００２】
ソリッド・ステート・メモリ・デバイスは、データを格納するための電子回路を用いる書き換え可能な不揮発性メモリ・デバイスを含む。現在、ソリッド・ステート・メモリ・デバイスは、ラップトップ又はデスクトップ用の大容量ストレージ用途などといった幾つかの場面において、ハード・ディスク・ドライブ及び光学ディスク・ドライブなどの従来のストレージ・デバイスに取って代わり始めている。ソリッド・ステート・メモリ・デバイスは、エンタープライズ・ストレージ・システムなどといった他の領域においても、従来のストレージ・デバイスに取って代わるための研究がなされている。これは、ソリッド・ステート・メモリ・デバイスが、可動部分がないことによる頑丈さが評価されていることに加えて、並外れた帯域幅及び優れたランダムＩ／Ｏ（入力／出力）性能を示すためである。
【０００３】
最先端のソリッド・ステート・ドライブ（ＳＳＤ）―この用語はソリッド・ステート・メモリ・デバイスという用語と同義に用いられる―は、二値量子化を行って１ビットの情報をもたらすシングル・レベル・セル（ＳＬＣ）を用いて、又は幾つかのレベルのうちの１つ、通常は４つ若しくは８つへの量子化を行って１ビットより多い情報をもたらすマルチ・レベル・セル（ＭＬＣ）を用いて、具体化することができる。
【０００４】
誤り訂正符号（ＥＣＣ）をソリッド・ステート・ドライブに適用して、データ取得プロセスに必要な信頼性を達成することができる。典型的には、その目的のために、リード・ソロモン（ＲＳ）符号又はボース・チョードリ・オッカンガム（ＢＣＨ）符号が、硬判定復号（hard decoding）アルゴリズムと共に用いられる。硬判定復号アルゴリズムの主な問題は、メモリ・セルから読み戻された物理値に対して量子化が行われるときには常に、回復不能な情報の損失が起こることである。硬判定復号技術によって起こる情報の損失を克服するために、近年、ＥＣＣの軟判定復号（soft decoding）がＳＳＤ用に提案されてきた。軟判定復号技術は、多数の反復において符号語を復号することによって特徴付けられる。軟判定復号は、ＲＳ符号と比較して大きな符号化利得をもたらすことが知られている。しかし、反復復号は復号プロセスに付随する待ち時間を生じさせ、それがＳＳＤの利用の応答時間に悪影響を与える場合がある。
【０００５】
特許文献１において、反復復号技術がソリッド・ステート・メモリ・デバイスに適用されており、この特許文献においては、デバイスは、符号器と、符号器によって符号化されたデータを格納するように適合されたマルチ・レベル・ソリッド・ステート不揮発性メモリ・アレイと、メモリ・アレイから取得されたデータを復号するように適合された復号器とを部分的に含む。メモリ・アレイは、フラッシュＥＥＰＲＯＭアレイとすることができる。メモリ・ユニットは、変調器及び復調器を任意に含む。変調器によって変調されたデータは、メモリ・アレイに格納される。復調器は、メモリ・アレイから取得された変調されたデータを復調する。
【０００６】
特許文献２において、別の反復復号器が示されており、この特許文献においては、メモリ・デバイスを操作するための対応する方法は、誤り訂正符号（ＥＣＣ）を用いてデータを符号化することと、符号化されたデータを第１のアナログ値としてメモリ・デバイスのそれぞれのアナログ・メモリ・セルに格納することとを含む。符号化されたデータを格納した後、符号化されたデータが格納されたメモリ・デバイスのそれぞれのメモリ・セルから第２のアナログ値が読み出される。第２のアナログ値のうちの少なくとも幾つかは、それぞれの第１のアナログ値と異なる。第２のアナログ値に含まれている歪みが推定される。誤り訂正メトリクスが、第２のアナログ値に関して、推定された歪みに応答して計算される。データを復元するために、第２のアナログ値は、ＥＣＣ復号プロセスにおいて、誤り訂正メトリクスを用いて処理される。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】国際公開第２００７／０８４７５１号Ａ２
【特許文献２】米国特許出願公開第２００９／００２４９０５号Ａ１
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、ソリッド・ステート・メモリ・デバイスを制御するための方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の第１の態様の実施形態によると、ソリッド・ステート・メモリ・デバイスを制御するための方法であって、メモリ・デバイスのユニットに格納された符号語を誤り訂正反復復号プロセスによって復号するステップと、ユニットの符号語の復号に成功するために必要な平均反復回数を算定するステップと、平均反復回数を監視するステップとを含む方法が提供される。
【００１０】
実施形態においては、方法は、
平均反復回数を条件として、
ユニットが操作されるモードを変更すること、
損耗平均化ルーチンを適用すること、
ユニットをそれ以上操作しないようにすること、
ユニットに関するデータの損失を防ぐための尺度を適用すること、
復号プロセスにおいて用いられる１つ又は複数のパラメータを変更し、変更されたパラメータを用いて復号プロセスの実行を続けること
のうちの少なくとも１つの作業（アクティビティ）が作動することと、
平均反復回数を監視するステップは、平均反復回数を閾値と比較することと、平均反復回数が閾値を超えたときに少なくとも１つの作業が作動することとを含むことと、
平均反復回数が閾値を超えたときにユニットがマーク付けされることと、
復号プロセスにおいて、最大待ち時間及び最大反復回数の一方が定められ、その後に符号語を復号するための復号プロセスが最終的に終了し、平均反復回数が閾値を超えたときに、最大待ち時間又は最大反復回数をそれぞれ増加させることと、
最大ユーザ・ビット誤り率が、誤り訂正反復復号プロセスが適用された後の符号語の誤り率であるユーザ・ビット誤り率によって定められ、平均反復回数が閾値を超えたときには、最大ユーザ・ビット誤り率を増大させることと、
復号プロセスにおいて、メモリ・デバイスのセルに格納された物理値によって表された符号記号の事後確率を算定するための反復において、セルごとに利用可能な符号記号の数を超える量子化レベル数が適用されることと、
ユニットの平均反復回数は、ブロックからの所定の読出し回数についてユニットの符号語の復号に成功するために必要な反復回数を累算し、累算された反復回数を所定の読出し回数で割ることによって、算定されることと
所定の読出し回数に必要な時間が監視されることと、
メモリ・デバイスは多数のユニットを備え、平均反復回数はユニットごとに算定され、デバイスについての平均反復回数は、ユニットの各々の平均反復回数を累算し、累算された平均回数をユニットの数で割ることによって算定されることと、
デバイスは、単一のユニットを含むことと
の特徴のうちの１つ又は複数を含むことができる。
【００１１】
本発明の別の態様の実施形態によると、コンピュータ可読プログラム・コードが具体化されたコンピュータ可読媒体を含むコンピュータ・プログラム製品であって、コンピュータ可読プログラム・コードは、上記実施形態のいずれか１つによる方法を行うように構成されたコンピュータ可読プログラム・コードを含む、コンピュータ可読プログラム製品が提供される。
【００１２】
本発明のさらに別の態様の実施形態によると、ソリッド・ステート・メモリ・デバイスを制御するためのストレージ・コントローラであって、メモリ・デバイスのユニットに格納された符号語を誤り訂正反復復号プロセスによって復号するための軟判定復号器と、ユニットの符号語の復号に成功するために必要な平均反復回数を算定するための計算ユニットと、平均反復回数を監視するための監視ユニットとを備えるストレージ・コントローラが提供される。
【００１３】
実施形態においては、ストレージ・コントローラは、
軟判定復号器が、メモリ・デバイスのユニットに格納された多数の符号語を誤り訂正反復復号プロセスによって並列に復号するための多数の復号ユニットを含むことと、
軟判定復号器が、メモリ・デバイスのユニットに格納された符号語を誤り訂正反復復号プロセスによって復号するための単一の復号ユニットと、復号されることになる連続する符号語を格納するためのキューとを含むことと、
の特徴のうちの１つ又は複数を含むことができる。
【００１４】
本発明の別の態様の実施形態によると、ソリッド・ステート・メモリと、ソリッド・ステート・メモリを制御するための、本発明のストレージ・コントローラの態様によるストレージ・コントローラとを含むメモリ・デバイスが提供される
【００１５】
方法のステップは、方法の請求項の中に挙げられたものとは異なる順序で実行できることが理解される。こうした異なる順序もまた、現在挙げられているステップの順序と同様に、こうした請求項の範囲内に含まれるものとする。
【００１６】
方法の態様に関して説明された実施形態は、デバイス、コンピュータ・プログラム製品などといった他のカテゴリのいずれに関しても開示された実施形態とみなされ、逆も同様であるものとする。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態によるソリッド・ステート・メモリ・デバイスを制御するための方法のフローチャートである。
【図２】本発明の実施形態によるソリッド・ステート・メモリ・デバイスを制御するための方法のフローチャートである。
【図３】図２の方法において用いられる種々のカウンタの例示的な状態を示す２つの表である。
【図４】復号プロセスにおける、生のビット誤り率と、ユーザ・ビット誤り率と、待ち時間／反復との間の関係を示す図である。
【図５】本発明の実施形態によるストレージ・デバイスのブロック図である。
【図６】本発明の実施形態によるメモリ・コントローラのブロック図である。
【図７】フラッシュ・ベースのメモリ・デバイスのメモリ空間の一部分の概略図である。
【発明を実施するための形態】
【００１８】
本発明及びその実施形態は、添付の図面と共に、現時点では好ましいがそれでもなお例示的である実施形態の詳細な説明を参照することによって、より十分に理解することができるであろう。
【００１９】
以下の説明への導入として、最初に、ソリッド・ステート・メモリ・デバイスが典型的にはストレージ・コントローラによって制御される方法に関して、本発明の一般的な態様が指摘される。メモリ・デバイスのユニットに格納された符号語は、誤り訂正反復復号プロセスによって復号される。ユニットの符号語の復号に成功するために必要な平均反復回数が算定される。こうした平均反復回数は、監視される。
【００２０】
この概念は、反復復号を可能にする適切な誤り訂正符号を用いる軟判定復号プロセスをメモリ・デバイスに格納された符号語に適用するときに、損耗という、ソリッド・ステート・メモリ・デバイスにおける全く異なる主題についての意味のある情報が復号操作から得られるという知見に基づく。
【００２１】
フラッシュ、及び相変化メモリ・デバイスなどの他のソリッド・ステート・メモリ・デバイスは、損耗という形のデバイスの物理特性のために、寿命が限られている。具体的には、フラッシュ・メモリ・デバイスは、ストレージの整合性が悪化し始めてデータを安全に読み出すことも書き込むこともできなくなるまでに、書込み−消去サイクルの回数が限られる。こうした、各ブロックが損耗しきる前にそのブロック上で行うことができる書込み−消去サイクルの最大数は、耐久度と呼ばれる。ブロックごとに著しく異なることがある一定のレベルの損耗をブロックが経験した後、性能が急速に低下する。耐久度は、１０年のデータ保持期間を仮定すると、典型的には、ＳＬＣについては１０００００のオーダー、ＭＬＣについては１００００のオーダーであることがあり、ここでデータ保持期間とは、訂正可能な誤りを伴う可能性があるデータをデバイスから読み出すことができる最大時間をいう。
【００２２】
さらに、ソリッド・ステート・メモリ・デバイスの損耗は、これらのデバイスの操作のされ方によって部分的に加速される。例えば、ＮＡＮＤフラッシュ・メモリは、ブロックのユニットと、ページのサブユニットとで構成される。多数のページがブロックを形成する。読出し及び書込み操作は、こうした操作の最小単位としてページに適用することができるが、消去操作は、ブロック全体にしか適用することができない。また、他のストレージ技術においては、古いデータは単に新しいデータで上書きすることができるが、フラッシュ技術は、新しいデータを消去されたブロックに書き込むことができる前に消去操作を必要とする。フラッシュ技術においては、消去操作は読出し又は書込み操作よりずっと長い時間がかかるという理由で、新たなデータ又は更新されたデータを古いデータが残る同じページに書き込む代わりに、空きページ・アロケータによって提供される或る空きページに書き込む、「アウト・オブ・プレース書込み」と呼ばれる書込み技術が適用される。古いデータを含むページは、無効なページである。或る時点において、「ガベージ・コレクション」と呼ばれるプロセスが、ブロックの全ての有効なページの内容を異なるブロックにある空きページに移動することによって、新たな書込みのためにブロックを空ける。その結果、対象のブロックは、最終的に無効なページのみを含み、消去することができる。このアウト・オブ・プレース書込み手続は、効果が「書込み増幅」と呼ばれる、幾つかの追加的な内部書込み操作を必要とし、書込み増幅が結果的にデバイスの損耗を増幅させる。ソリッド・ステート・メモリ・デバイスの損耗を監視することは、損耗しつくされたブロックによってデータが失われることを防ぐために重要である。
【００２３】
誤り訂正反復復号プロセスを適用するときに符号語の復号に必要な平均反復回数は、それぞれのユニットが示す損耗のレベルを表すことが見出だされた。言い換えると、符号語の復号に成功するために必要な平均反復回数は、ユニットの損耗の尺度となる。平均反復回数を監視する方法によって、ユニットの損耗を監視することができ、平均反復回数を条件として定められたアクションをとることができる。
【００２４】
通常の使用状況下での低い損耗レベルの場合には、ブロック／ユニット性能の良さが、復号の成功を宣言するために非常に少ない反復しか必要としないことにつながり、従って、復号待ち時間もほとんど体感されない。損耗又はブロックの最後の書込み操作以降の時間が増大するにつれて、性能は低下し、復号に成功するためにより多くの反復が必要となる。従って、ブロックに格納された符号語の復号に成功するための平均反復回数は、損耗レベルの尺度として採用される。
【００２５】
軟判定復号ではなく硬判定の形で硬判定復号が用いられる誤り訂正符号（ＥＣＣ）用の復号アルゴリズムにおいては、符号記号（code symbol）を表現し符号記号に変換されることになる、メモリ・デバイスのセルに格納された物理値に対して、量子化が行われる。例えば、物理値がセルに格納された電圧である場合には、量子化レベルは、セルに符号化された符号記号によって想定される可能な二進値の１つを表わす一定の電圧とすることができる。従って、硬判定復号のための量子化レベルの数は、典型的には、符号記号によって想定される可能な二進値の数に等しい。例えば、４レベル・セルのフラッシュ・メモリ・デバイスにおいては、典型的には２つの二進符号記号が符号化され、硬判定のために４レベルの量子化器が用いられる。量子化によって得られた回復された符号記号列は、元の情報ビット列を表すことになる。例えば、リード・ソロモン（ＲＳ）又はボース・チョードリ・オッカンガム（ＢＣＨ）符号が、一般に、フラッシュ・メモリにおける硬判定復号アルゴリズムと共に用いられる。
【００２６】
硬判定復号についての主な問題は、１つ又は複数の符号記号を表し得る物理値に対して硬判定量子化を行うときには常に、回復不能な情報の損失が起こることである。この問題を克服するために、ＥＣＣの軟判定復号を適用することができる。軟判定復号アルゴリズムにおいては、１つ又は複数の符号記号を表し得る物理値は、理想的には、最終的な判定が所与の少数の量子化レベルに関して行われるという硬判定符号の精神における事前の量子化がなされることなく、復号器に入力される。軟判定復号の実施に際して、物理値によって表される符号記号によって想定される可能な二進値の個数より多い、例えば８倍多い量子化レベル数で、量子化が適用される。従って、軟判定復号は、符号記号の数を大幅に増加させる量子化レベル数を用いることによって、どの符号記号二進値が物理値によって表されるかの判定に反復的に近付くことを特徴とする。或る部類の符号については、反復軟判定復号アルゴリズムが適用された場合には、達成可能な符号化利得がかなり増大する。反復軟判定復号スキームは、通常、２つの軟判定復号コンポーネント／論理の間におけるメッセージ渡し手続を適用し、それにより、各々のコンポーネントは、他方のコンポーネントからの軟判定情報を用いてより信頼できる判定を生ずる。軟判定復号プロセスを適用することによって、硬判定復号と比較して、回復不能な情報の損失を回避することができる。
【００２７】
このように、本発明の文脈において、軟判定復号は、メモリ・デバイスのセルに格納された物理値によって表される符号記号二進値を求めるための種々の反復において多数の量子化レベルを用いる復号プロセスをいう。こうしたプロセスにおいては、量子化レベル数は、セルごとに利用可能な符号記号によって想定される可能な二進値の個数を超える。量子化レベル数は、セルごとに利用可能な符号記号によって想定される可能な二進値の個数を少なくとも８倍超えることが好ましい。好ましい実施形態においては、ターボ符号又は低密度パリティ検査（ＬＤＰＣ）符号のための軟判定復号器が適用される。データをデバイスに書き込むときには、データは、軟判定復号器によって復号することができる対応する誤り訂正符号、好ましくはターボ符号又は低密度パリティ検査（ＬＤＰＣ）符号によって、符号化されることが好ましい。
【００２８】
ソリッド・ステート・メモリ・デバイスにおける損耗の問題を軽減するために、損耗レベルが異なるブロックに対する不均等な誤り保護が提案されてきた。これは、損耗のレベルが早期に得られるか又は平均反復回数に暗示され得るので、軟判定復号を用いて、提案された反復符号である同じ誤り訂正符号によって全てのブロックを扱うことができるという理由により、もはや不要となる。
【００２９】
平均反復回数を条件として、損耗平均化（ウェアレベリング）と呼ばれる、フラッシュ・コントローラによって行われる内部管理プロセスを適用することができる。このプロセスは、メモリ・デバイスの損耗の特徴に対処するものである。損耗平均化は、全ての利用可能なユニット間で書き込み−消去サイクルを均一にして、不均一な損耗を回避し、それによって全体の寿命を長くすることを目的とする、種々のデータ配置機能及びデータ移動機能を伴う。具体的には、損耗平均化機能は、新たなデータが書き込まれるべきブロックを選択することと、さらに、フラッシュ・メモリ内の格納されたデータを移動してサイクル計数の少ないブロックを開放し、損耗を一様にすることとをつかさどる。こうした損耗平均化プロセスは、識別された特定の平均反復回数又は平均反復回数の範囲によって作動するようにしてもよい。ユニットごとに書き込み−消去サイクルを計数することなどによって損耗を判断するための手段を別途確立することは、もはや必要ない。平均反復回数に暗示される損耗の尺度は、損耗平均化プロセスのきっかけとして及び／又は損耗推定入力として用いることができる。
【００３０】
要約すると、ターボ符号又はＬＤＰＣ符号などの反復符号を用いてユニットに格納された符号語の軟判定復号のために必要な反復回数が監視される。通常の使用状況下での低い損耗レベルの場合には、ユニット性能の良さが、復号の成功を宣言するために非常に少ない反復しか必要としないことにつながり、従って、復号待ち時間もほとんど体感されない。損耗又はブロックの最後の書込み操作以降の時間が増大するにつれて、性能は低下し、復号に成功するためにより多くの反復が必要となる。従って、ブロックに格納された符号語の復号に成功するための平均反復回数は、損耗レベルの尺度として採用される。
【００３１】
図１は、本発明の実施形態による、ソリッド・ステート・ストレージ・デバイスを制御するための方法のフローチャートを示す。ステップ１０において、例えばフラッシュ・ベースのメモリ・デバイスのブロックであるユニットに格納された符号語が、誤り訂正反復復号プロセスによって復号される。ステップ１１において、ユニットの符号語の復号に成功するために必要な平均反復回数が、多数の読出しプロセスと同等のステップ１０における多数の符号語の復号に基づいて算定される。ステップ１２において、平均反復回数が監視されて閾値と比較される。平均反復回数が閾値より小さい場合には（いいえ）、ステップ１１における要件に従って平均反復回数を構築できる十分な回数の読出しが行われるまで、プロセスはステップ１０から新たに開始する。
【００３２】
ステップ１２において、平均反復回数が閾値より大きい場合には（はい）、ステップ１３において、１つ又は複数の作業を適用することができる。こうした作業は、
ユニットが操作されるモードを変更することと、
損耗平均化ルーチンを適用することと、
ユニットをそれ以上操作しないようにすることと、
ユニットに関するデータの損失を防ぐための尺度を開始することと、
復号プロセスにおいて用いられる１つ又は複数のパラメータを変更し、変更されたパラメータを用いて復号プロセスの実行を続けることと
のうちの１つ又は複数を含むことができる。上記のリストは、網羅的なものではなく、かつ、全ての異なる作業がデバイスに同時に施される必要もない。
【００３３】
好ましくは平均回数が閾値を超えたときの、平均反復回数を条件として開始される作業の特定の例は、次の通りとすることができる。
【００３４】
平均回数が超えた損耗平均化閾値に関して、現在のブロックを含む多数のブロックにわたる損耗の分布を釣り合わせるために、損耗平均化プロセスを開始することができる。例えば、平均反復回数及び対応する損耗平均化閾値が、現在のブロックにおいて比較的高い損耗レベルを示す場合には、到着する新たなデータはいずれも、より低い損耗レベルを示す異なるブロックに書き込まれるようにすることができる。例えば閾値を超えることによって作動する場合には、現在のブロック上では以後は読出し操作のみが許可され、書込み操作又は消去操作は許可されないことも、操作におけるモードとして理解することができる。
【００３５】
平均反復回数の監視の結果として操作のモードを変更することは、例えば、データの読出し、データの書込み、消去操作、符号化及び／又は復号操作、ガベージ・コレクション、他の管理的タスク等に影響することがある。要約すると、識別された損耗から出発し及び／又はその損耗を考慮して変更されることがある、現在のいずれの操作的プロセスも、操作のモードの変更の範囲内に含まれるものとされる。
【００３６】
例えば反復平均回数が非常に高い損耗レベルを示す停止閾値を超える場合には、例えば現在のブロックから有効なデータが喪失することを防ぐためにフェイルセーフ・ルーチンを適用した後で、現在のブロック上の全ての操作を停止することができ、ブロックはそれ以上用いられないことになる。
【００３７】
好ましい実施形態においては、上に掲げた作業のうちの幾つかを逐次的に又は並列に開始することができ、異なる作業についての閾値は、閾値の値が異なる場合がある。
【００３８】
図１における好ましい方法によると、平均反復回数が閾値を超えるブロックは、それ以上使用できないもの及び／又は信頼できないものとしてマーク付けされる。こうした場合において、即ちステップ１４において、本ブロック上のいかなる操作も停止することができる。
【００３９】
例えば復号パラメータの変更などといった、停止操作以外の作業が好ましい選択である場合には、復号プロセスは、点線で示されるようにステップ１０において継続することができ、ステップ１１において新たな平均反復回数を算定するために、関連する復号を含む読出し操作の新たなサイクルが実行されるが、その際には変更された復号パラメータが適用される。
【００４０】
図１のフローチャートは、ブロックの損耗が増大するにつれて、セル性能が低下し、復号に成功するためにより多くの反復が必要となることを示す。復号に成功するために必要な平均反復回数が、セルが損耗していない初期段階における通常の操作に対して相対的に設定することができる閾値を超えたときには、そのブロックは、信頼できないものと宣言することができ、それ以上用いられない。
【００４１】
図２は、本発明の別の実施形態によるフローチャートを示し、ここにおいても、読出し要求の際に出力を生成する軟判定復号アルゴリズムによって必要とされる反復回数が監視される。
【００４２】
ブロック・レベルで―ブロックは、本方法が適用されるフラッシュ・メモリ・デバイスのユニットとすることができる―ステップ２０において操作が開始し、ステップ２１にまとめて示されるように、種々のカウンタ＜ｋ＞、＜ｒ＞、及び＜ｉ＞がゼロに設定される。サイズ「ｗ」の所定のウィンドウが導入され、ここで「ｗ」をブロックにおける連続する読出しと考える。これは、ブロックごとのレジスタにおけるカウンタ＜ｒ＞によって実装することができ、カウンタ＜ｒ＞は、ブロックにおける各々の読出し操作の際に増加され、ステップ２４において「ｒ」が「ｗ」に達したときに、ステップ２１においてリセットされる。リセットの際に、ウィンドウ「ｗ」のインデックスを表すカウンタ＜ｋ＞は、ブロックごとのレジスタにおいて増加される。さらに別のカウンタ＜ｉ＞は、ブロックごとのレジスタに実装され、ステップ２２におけるブロックの読出し操作の際に結果を作り出すために必要な反復回数「ｍ」に応じて、ステップ２３において増加される。この意味で、カウンタ＜ｉ＞は、種々の読出し操作をサポートする復号プロセスにおいて必要な反復回数を累算する。このカウンタ＜ｉ＞は、ステップ２１に示されるように、「ｒ」が「ｗ」に達したときにリセットされる。カウンタ＜ｉ＞の値は、リセットされる前に、ブロックごとのレジスタにおける別のカウンタ位置＜ｉ＿ｐｒｅｖｉｏｕｓ＞に格納することができるが、このことは図２のフローチャートには示されない。従って、最初の「ｗ」の読出しは、ｗ＿１で表される第１のウィンドウを形成し、次の「ｗ」の読出しは、ｗ＿２で表される第２のウィンドウを形成し、以下同様である。その結果、ウィンドウｗ＿ｋは、連続するｗの読出しの列（ｋ−１）×ｗ＋１，（ｋ−１）×ｗ＋２，…，ｋ×ｗを含む。「ｒ」が「ｗ」に達した後、必要な反復平均回数ｎ＿ｋは、ステップ２５において、上記に基づいて次の通り計算される。
【００４３】
ウィンドウｗ＿ｋにおける平均反復回数ｎ＿ｋ：  ｎ＿ｋ＝ｉ／ｗ
【００４４】
ここで、こうした平均反復回数ｎ＿ｋは、ステップ２６において閾値「ｔｈｒｅｓ」と比較することによって監視される。平均反復回数ｎ＿ｋが閾値「ｔｈｒｅｓ」を上回る場合には（はい）、ステップ２７においてプロセスは停止され、本実施形態においては、それぞれのブロックが使用不能としてマーク付けされる。必要に応じて、他の作業をステップ２７と組み合わせて開始してもよい。
【００４５】
ステップ２６において、平均反復回数ｎ＿ｋが閾値「ｔｈｒｅｓ」を下回る場合には、プロセスは、ステップ２１において、「ｗ」の読出しの新たなウィンドウｋ＋１について再び開始し、これについて、平均反復回数が、ステップ２５において算定され、ステップ２６において監視される。
【００４６】
必要に応じて、平均反復回数ｎ＿ｋの算定と組み合わせて、次の通りに平均反復回数の変化率を計算することができる。
ウィンドウｗ＿（ｋ−１）における平均反復回数：  ｎ＿（ｋ−１）＝ｉ＿ｐｒｅｖｉｏｕｓ／ｗ
ウィンドウｗ＿ｋにおける平均反復回数の変化量ｄ＿ｋ：  ｄ＿ｋ＝ｎ＿ｋ−ｎ＿（ｋ−１）
列ｄ＿ｋを用いて、デバイスの損耗の変化率を推定することができる。ｄ＿ｋが所定の閾値を超えた場合には、適切なアクションを追加的に取ることができる。
【００４７】
データ保持期間の問題は、別の実施形態に従って対処することもできる。データ保持期間とは、訂正可能な誤りを伴う可能性がある格納されたデータを読み出すことができる最大時間をいう。読出し問題は、損耗のためではなくデータが長期間更新されずに格納され続けたために、データが破損することによって起こる場合があることを思い出されたい。具体的には、上述の方法を参照すると、典型的なウィンドウは、復号のために行われた反復回数についての情報を伴うが時間の概念を伴わない、ｗの読出し操作を含む。保持期間を損耗と区別するために、対応するウィンドウの存続時間、即ちウィンドウがどれだけ長くアクティブであるかを示すための追加的なカウンタを準備することができる。ウィンドウの存続時間が保持期間閾値を超え、平均反復回数がその割り当てられた閾値を超えた場合には、こうしたブロックにおいて起こり得るデータ損失は、損耗ではなくデータ保持期間が原因であると仮定することができる。ウィンドウがどれだけ長くアクティブであるかを監視した結果として、他の又は追加的な手段、例えばウィンドウの存続時間が保持期間閾値を超えた場合にはブロックの有効なデータを再配置することを、実施することができる。
【００４８】
図２に示される手法は、いつメモリ・デバイス全体が損耗しきるかを検出するために拡張することもできる。１つの可能な実装形態が、以下に説明され、ブロック・レベルにおける平均反復回数の算定に類似する構成を取るが、カウンタはデバイスにおけるいずれの読出しプロセスの反復も計数するように実装されるという、デバイス・レベルへの移行がなされる。従って、デバイス・レベルでの反復回数は、デバイスごとのカウンタを通じて計数される。具体的には、サイズ「Ｗ」のウィンドウが導入され、ここでＷをデバイスにおける連続する読出しと考える。これは、デバイスごとのレジスタにおけるカウンタ＜Ｒ＞によって実装することができ、カウンタ＜Ｒ＞は、デバイスにおける各々の読出し操作の際に増加され、「Ｒ」が「Ｗ」に達したときにリセットされる。リセットの際に、ウィンドウのインデックスを表す別のカウンタ＜Ｋ＞が、デバイスごとのレジスタにおいて増加される。さらに別のカウンタ＜Ｉ＞が、デバイスごとのレジスタに実装され、いずれかのブロックにおける読出し操作の際に結果を作り出すために必要な反復回数に応じて増加される。このカウンタ＜Ｉ＞は、「Ｒ」が「Ｗ」に達したときにリセットされる。カウンタ＜Ｉ＞の値は、リセットされる前に、デバイスごとのレジスタにおける別のカウンタ位置＜Ｉ＿ｐｒｅｖｉｏｕｓ＞に格納することができる。従って、最初のＷの読出しは、Ｗ＿１で表される第１のウィンドウを形成し、次のＷの読出しは、Ｗ＿２で表される第２のウィンドウを形成し、以下同様である。その結果、ウィンドウＷ＿Ｋは、連続するＷの読出しの列（Ｋ−１）×Ｗ＋１，（Ｋ−１）×Ｗ＋２，…，Ｋ×Ｗを含む。必要な平均反復回数及びその変化率は、上記に基づいて次の通り計算される。
【００４９】
Ｗ＿Ｋにおける平均反復回数Ｎ＿Ｋ：  Ｎ＿Ｋ＝Ｉ／Ｗ
Ｗ＿（Ｋ−１）における平均反復回数：  Ｎ＿（Ｋ−１）＝Ｉ＿ｐｒｅｖｉｏｕｓ／Ｗ
Ｗ＿Ｋにおける平均反復回数の変化量Ｄ＿Ｋ：  Ｄ＿Ｋ＝Ｎ＿Ｋ−Ｎ＿（Ｋ−１）
【００５０】
デバイス・レベルでの平均反復回数の算定は、ブロック・レベルでの算定に加えて、又はその代わりに、実装することができる。デバイス・レベルでの損耗を観察するに当たって、デバイス・レベルでの平均反復回数が閾値を超えた際に開始されるいずれの作業も、例えば、デバイスを損耗しきったものとしてマーク付けすること、並びに／又は、以後のさらなる書込み及び／若しくは消去操作がデバイスに適用されるのを防ぐことによって、デバイス特有のものとすることができる。
【００５１】
別の実施形態においては、平均反復回数の算定を、デバイスの各々のブロックに対して行うことができる。さらに、デバイス・レベルでの平均反復回数の算定の場合は、全てのブロックについて算定された平均反復回数を累算することができる。また、デバイスについての前記平均反復回数は、前記復号ユニットの各々の前記平均反復回数を累算し、前記累算された平均数を前記復号ユニットの数で割ることによって算定される。１つの実施形態においては、個々のブロックに対する操作は、その特定のブロックについての平均反復回数が閾値を超えた場合に停止又は修正することができ、デバイス全体に対する操作は、累算された反復回数が閾値を超えた場合に停止または修正することができ、その閾値は、ブロック・レベルの閾値と同じ値に設定することも、異なる値、具体的にはより小さい値に設定することもできる。デバイス全体に対する操作は、使用不能と宣言されたブロックの数が閾値を超えた場合に停止することもできる。
【００５２】
ブロックＩＤの例及びデバイスＩＤの例について、ブロックごと及びデバイスごとのレジスタの内容の典型的なスナップショットが、図３の表に示される。図２に関して導入されたカウンタに対応するカウンタｋ、ｒ、ｉ、Ｋ、Ｒ、Ｉについて、カウンタ値の例が示される。
【００５３】
図４は、生のビット誤り率がｘ軸に、待ち時間／反復がｙ軸に、ユーザ・ビット誤り率がｚ軸に表された３Ｄ図によって、本方法及び本デバイスのより広範囲の関係を示す。生のビット誤り率は、メモリに格納されたデータにおけるビット誤り率、即ち、誤り訂正が適用されない場合に格納された符号語が示すビット誤り率を特徴付けるものである。誤り訂正符号が適用されるという理由で、ビット誤り率は誤り訂正符号によって改善することができ、ユーザ・ビット誤り率は、誤り訂正符号化されたデータを復号した後でも依然として残るビット誤り率を表す。反復復号の手法を用いる符号が用いられるという理由で、待ち時間／復号は、符号語の復号に成功するために必要な時間又は符号語の復号に成功するために必要な反復回数のいずれかを表すものとすることができる。本図において、反復回数は、多数の復号にわたって算定される平均回数ではなく、個々の符号語を復号するために必要な回数を表すことに注意されたい。
【００５４】
本例の場合においては、ソリッド・ステート・メモリ・デバイスはフラッシュ・メモリ・デバイスであり、提案される方法の実施形態は、フラッシュ・メモリ・デバイスにおけるセルからのアナログ信号の読み戻しＶ（Ｔ）、即ち時間に対する電圧のサンプルを用いる。それぞれのブロックにおける損耗が増大するにつれて、生のビット誤り率、すなわち誤り訂正前に個々の記号判定に適用可能な誤り率も増大し、その結果、復号のために必要な反復回数が増加する。符号記号の復号に成功できない場合であってもデバイスが動作し続けられる限られた待ち時間を保つために、符号語を復号するために行われる反復の回数を制限することが好ましい。従って、許容される所与の待ち時間又は最大反復回数の場合には、損耗の増大のために、生のビット誤りが増加するにつれてユーザ・ビット誤り率が増大する。また、許容される所与の待ち時間（最大待ち時間）及び最大反復回数の一方が定められ、その後に符号語を復号するための復号プロセスが最終的に終了する。生のビット誤り率が増大したときには、反復回数を増加させ、従って復号待ち時間を増大させるのと引き換えに、特定のユーザ・ビット誤り率を維持できることに注意されたい。デバイスの寿命の終わりの頃には、符号語の復号に成功するための反復回数は、許容される最大反復回数に近い。その時点において、即ち、例えば平均反復回数が許容される最大反復回数より小さい第１の閾値を超えたときに、許容される最大反復回数は、より大きい値に設定することができ、従って、信頼性を維持するため、即ち特定のユーザ・ビット誤り率を維持するために、例外的に増加させることができる。第２のステップにおいて、平均反復回数が、好ましくは第１の閾値を超えるものとすることができる第２の閾値を超えたときに、ブロック又はデバイスにマーク付けし、その際に、それらを信頼できずもはや使用できないものとして宣言することができる。第２の閾値が最初の許容される最大反復回数に等しい値に設定された場合には、目標のユーザ・ビット誤り率が、許容される最大の復号反復回数内で平均して達成できないときに、ブロックを信頼できないものと宣言することができる。また、最大ユーザ・ビット誤り率が、記誤り訂正反復復号プロセスが適用された後の符号語のビット誤り率であるユーザ・ビット誤り率によって定められ、平均反復回数が増加するときに、最大ユーザ・ビット誤り率を増大させる。
【００５５】
図４においては、デバイスの寿命にわたって、対象となるブロックの損耗が増大し、それが、例えば生のビット誤り率がＲＢ１からＲＢ２に増大する結果をもたらす。生のビット誤り率ＲＢ１を伴う符号語の復号に成功するために必要な反復回数がＩＴ１に制限される場合には、誤り訂正符号であるにもかかわらず訂正可能ではないビット誤りの尺度である、ＲＢ１及びＩＴ１に関連するユーザ・ビット誤り率ＵＢ１は、ＵＢ２に増大することが、図から明らかになる。しかし、許容される最大反復回数ＩＴＭがＩＴ１より大きい値を有する場合には、ＩＴ１を超えるがＩＴＭより小さい回数の反復を実行することによって、デバイスの操作のために指定された目標ユーザ・ビット誤り率とすることができるユーザ・ビット誤り率ＵＢ１に固定する機会がある。平均反復回数が閾値を超える場合には、最大反復回数は、例外的に、少なくともＲＢ３より小さい生のビット誤り率について目標ユーザ・ビット誤り率がＵＢ１を保つことができるように、ＩＴＭを超えるＩＴ２に設定することを可能にする場合がある。言い換えると、図４に定性的に示されるように、ブロックの寿命と復号の待ち時間との間における種々のトレードオフを選択することが可能である。
【００５６】
図５は、本発明の実施形態によるメモリ・デバイスのブロック図を示す。メモリ・デバイス１は、ブロック／ページ・メモリ空間構造を伴うフラッシュ・ベースのソリッド・ステート・メモリ２を含む。一部のブロックが２１として示されている。メモリ・コントローラ３は、フラッシュ・メモリ２の作業を制御し、従って、メモリはコンピュータ化されたメモリと表現することができる。メモリ・コントローラ３は、ストレージ・コントローラと表すこともできる。メモリ・コントローラ３は、具体的には、符号化及び復号を含む、データをメモリ２へ書き込み、メモリ２から読み出すように、並びにデータの読み出し及び書き込みに関する全ての管理タスクを実行するように、適合される。メモリ・コントローラ３は、さらに、データを格納するためにストレージ・デバイス１を用いるホスト４に接続される。従って、ホスト４は、ストレージ・デバイス１に対して読出し及び／又は書込みコマンドを発行する。
【００５７】
上述の実施形態のいずれか１つによる方法を実装するために、メモリ・コントローラ３は、図６に示されるように、好ましくはＲＯＭ３１といった不揮発性の書き換え不可能なストレージ媒体に格納されるコンピュータ・プログラム・コードを提供することが好ましい。メモリ・コントローラは、さらに、プログラム・コードをロードして入れるためのＲＡＭ３２と、ＲＡＭ３２内のプログラム・コードを実行するための処理ユニット３３とを提供する。処理ユニット３３は、説明された方法による軟判定復号のための軟判定復号器３３１、幾つかの読み込みコマンドの復号プロセスに必要な平均反復回数を算定するための計算ユニット３３２、及び、内部において例えば平均反復回数が閾値と比較される監視ユニット３３３などといった機能ユニットを含む。処理ユニット３３は、復号される符号語がキュー３３４によって供給される信号軟判定復号器を含む。さらに、メモリ・コントローラ３の構成要素間で通信するための内部通信システム３４が提供され、フラッシュ・メモリと通信するためのインターフェース３５が提供され、さらに、ホストとの任意の通信のための別のインターフェース３６を提供することができる。
【００５８】
好ましい実施形態においては、ＬＤＰＣ符号が誤り訂正符号として実装され、軟判定復号器３３１におけるデータ取得のために反復軟判定復号が適用される。重要なパラメータは、復号プロセスに関連する待ち時間である。ブロックに格納された符号語の復号のための平均反復回数が監視される。受け入れ可能な損耗レベルの場合には、５０００ビットまでの長さの符号語について、２０回以内の反復で応答が行われることが期待される。各々の反復が１ｕｓで行われると仮定すると、応答時間は長くても２０ｕｓとなり、これは適切なＳＳＤ操作として受け入れ可能な限度内である。長い待ち時間と引き換えに実装の複雑さが減少する構成である、反復復号のための単一の論理に加えて連続する読出し要求を格納するためのキューを伴う軟判定復号器３３１の上述の構成の代わりに、ｎ個の符号語を一度に復号するために必要な論理を複製することによって反復復号を実装する構成とすることができ、その結果、読出し要求を並列に処理することができて、待ち時間が短くなる。
【００５９】
最後に、図７は、ブロック２１内に編成されたフラッシュ・メモリの部分を示すものであり、ブロック２１の一部のブロック１３１から１３８が明示的に示される。ページは、縦列のように図示されるブロックにおける横縞として示される。ブロック１３１から１３８のすべてのブロックは、ユーザ・データを保持するように適合されたデータ・ブロックである。本例において、ブロック１３３は、受け入れ可能な閾値を上回る損耗を示すことが決定されていると仮定する。その結果、図７において矢印６０によって示されるように、そのブロックの有効なページは、別のブロック、すなわち本例においてはブロック１３５に複製され、そのブロックが、今度は、新たなデータ又は更新されたデータの書込みをサポートする。こうしたデータ保存の後、ブロック１３３は、もはや使用されていないものとしてマーク付けされる。
【００６０】
当業者により認識されるように、本発明の態様は、システム、方法又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとることができ、本明細書においては、これらは全て、一般的に「回路」、「モジュール」又は「システム」と呼ぶことがある。さらに、本発明の態様は、媒体内に具体化されたコンピュータ可読プログラム・コードを有する、１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形態をとることができる。
【００６１】
１つ又は複数のコンピュータ可読媒体のいずれの組み合わせを用いることもできる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、電子的、磁気的、光学的、電磁気的、赤外線若しくは半導体のシステム、装置若しくはデバイス、又はこれらのいずれかの適切な組み合わせとすることができるが、これらに限定されるものではない。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）として、以下もの、即ち、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能なプログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又はこれらのいずれかの適切な組み合わせが挙げられる。本明細書の文脈においては、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって又はそれらに関連して用いるためのプログラムを収容又は格納することが可能ないずれかの有形媒体とすることができる。
【００６２】
コンピュータ可読信号媒体は、例えばベースバンドに、又は搬送波の一部として、コンピュータ可読プログラム・コードが組み入れられた伝搬データ信号を含むことができる。このような伝搬信号は、電磁気、光又はそれらのいずれかの適切な組み合わせを含むがこれらに限定されない、種々の形態のうちのいずれかをとることもできる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、かつ、命令実行システム、装置若しくはデバイスによって又はこれらと関連して用いるためのプログラムを通信、伝搬又搬送することができる、いずれかのコンピュータ可読媒体とすることができる。
【００６３】
コンピュータ可読媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦ等、又はこれらのいずれかの適切な組み合わせを含むがこれらに限定されるものではない、いずれかの適切な媒体を用いて伝送することができる。
【００６４】
本発明の態様についての操作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のようなオブジェクト指向型プログラミング言語、及び「Ｃ」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語のいずれかの組み合わせで書くことができる。全体がユーザのコンピュータ上で実行される場合もあり、独立型ソフトウェア・パッケージとして、一部がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は全体が遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。
【００６５】
本発明の態様は、本明細書において、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて、マシンを製造し、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するための手段を生成するようになる。
【００６６】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、その結果、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を製造するようにすることもできる。
【００６７】
コンピュータ・プログラム命令をコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、そのコンピュータ、他のプログラム可能装置、又は他のデバイス上で一連の動作ステップを行わせてコンピュータ実装プロセスを生成し、それにより、そのコンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実施するためのプロセスを提供するようにすることもできる。
【００６８】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実行するための１つ又は複数の実行可能な命令を含む、モジュール、セグメント又はコードの一部を表すことができる。幾つかの代替的な実施において、ブロック内に記された機能は、図面内に記された順序とは異なる順序で行われることがあることにも留意すべきである。例えば、連続して示された２つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックは、ときには逆の順序で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、並びにブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を行う専用ハードウェアベースのシステム、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
【符号の説明】
【００６９】
１：メモリ・デバイス
２：メモリ
２１、１３１〜１３８：ブロック
３：メモリ・コントローラ
３１：ＲＯＭ
３２：ＲＡＭ
３３：処理ユニット
３３１：軟判定復号器
３３２：計算ユニット
３３３：監視ユニット
３３４：キュー
３４：内部通信システム
３５：メモリと通信するためのインターフェース
３６：ホストと通信するためのインターフェース
４：ホスト
【図１】
0005846589.tif 000002
【図２】
0005846589.tif 000003
【図３】
0005846589.tif 000004
【図４】
0005846589.tif 000005
【図５】
0005846589.tif 000006
【図６】
0005846589.tif 000007
【図７】
0005846589.tif 000008