(57)【要約】【課題】  フラッシュメモリの寿命を長期化させる誤り訂正符号化装置を提供する。【解決手段】  複数のメモリセルを有するメモリブロックを備えたフラッシュメモリ２と、フラッシュメモリ２に書き込むデータに冗長ビットを付加して誤り訂正符号化処理を行う誤り訂正符号化部３と、メモリブロックのメモリの消耗度を測定し、メモリの消耗度が予め設定された第１の閾値を超えた場合に、メモリセルのマルチレベルセルとしての使用を維持するとともに、メモリブロックのメモリセルあたりに記憶するビット数をＫからＭ（Ｋ＞Ｍ、Ｋ及びＭは２以上の自然数）に減少させるメモリセルビット管理部６とを備える。【選択図】図１
2015138498.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリセルを有するメモリブロックを備えたフラッシュメモリと、
前記フラッシュメモリに書き込むデータに冗長ビットを付加して誤り訂正符号化処理を行う誤り訂正符号化部と、
前記メモリブロックのメモリの消耗度を測定し、前記メモリの消耗度が予め設定された第１の閾値を超えた場合に、前記メモリセルのマルチレベルセルとしての使用を維持するとともに、前記メモリセルあたりに記憶するビット数をＫからＭ（Ｋ＞Ｍ、Ｋ及びＭは２以上の自然数）に減少させるメモリセルビット管理部とを備えることを特徴とする誤り訂正符号化装置。
【請求項２】
前記フラッシュメモリから読み出したデータに対して誤りがある場合に訂正処理を行う誤り訂正復号部を備え、
前記メモリセルビット管理部は、前記メモリの消耗度が前記第１の閾値より消耗度が大きい第２の閾値を超えた場合には、前記メモリセルをシングルレベルセルに設定することを特徴とする請求項１に記載の誤り訂正符号化装置。
【請求項３】
前記メモリの消耗度は、前記メモリブロックに、書き込みを行った回数であることを特徴とする請求項１または２に記載の誤り訂正符号化装置。
【請求項４】
前記メモリの消耗度は、誤り訂正を行ったときに検出された誤りビット数であることを特徴とする請求項１または２に記載の誤り訂正符号化装置。
【請求項５】
前記メモリブロックの前記メモリセルあたりの１つのビット数に対し、複数の誤り訂正能力が違う誤り訂正フォーマットを有し、
前記誤り訂正フォーマットの切り換えを行った後に、前記メモリの消耗度が予め設定された第３の閾値を超えた場合、前記メモリブロックのメモリセルあたりのビット数を削減することを特徴とする請求項１から４のいずれか一項に記載の誤り訂正符号化装置。
【請求項６】
複数のメモリセルを含むメモリブロックを有し、１つの前記メモリセルに記憶可能な情報のビット数が変更可能なフラッシュメモリに書き込むデータを受け付けるステップと、
前記データが書き込まれる前記フラッシュメモリのメモリブロック毎に消耗度を判定し、前記消耗度が予め設定された閾値を超えた場合に前記メモリセルに記憶させる情報のビット数をＫからＭ（Ｋ＞Ｍ、Ｋ及びＭは２以上の自然数）に減少させるステップと、
前記メモリセルに記憶させる情報のビット数に対応したフォーマットを使用して、前記データを誤り訂正符号化するステップと、
前記誤り訂正符号化された前記データを前記フラッシュメモリに書き込むステップとを備えたことを特徴とするフラッシュメモリの誤り訂正符号化方法
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリへのアクセスに対し、フラッシュメモリの寿命を長期化させる誤り訂正符号化装置および方法に関する。
【背景技術】
【０００２】
従来のフラッシュメモリの誤り訂正符号化では、データを一時的に格納するバッファ領域と、最終的に格納する使用者領域とで区別し、バッファ領域にはＳＬＣ（Ｓｉｎｇｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）を用い、使用者領域にはＭＬＣ（Ｍｕｌｔｉ  Ｌｅｖｅｌ  Ｃｅｌｌ）を用いて記憶を行う方法が提案されている。（特許文献１）
この方法では、メモリのエラーが頻繁に生じるようになった場合には、使用者領域の一部をバッファ領域に、バッファ領域を使用できない領域に移行させ、バッファ領域のウェアレベル（Ｗｅａｒ  Ｌｅｖｅｌ）の緩和を行っていた。
【０００３】
また、あらかじめ、ＳＬＣの領域とＭＬＣの領域を用意していて、データの特性に応じて、記憶させる領域を変更させる方法が提案されている。（特許文献２）
この方法では、データの内容に対するアクセス頻度に応じて、高いものはＳＬＣの領域、低いものはＭＬＣの領域へと入れ替えを行なうことでメモリの寿命を長期化していた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１１４６７９号公報
【０００５】
【特許文献２】特開２０１１−１８６５５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来のフラッシュメモリの誤り訂正符号化では、メモリセルあたりのビット数を２以上の自然数としたＭＬＣとしてフラッシュメモリを使用し、フラッシュメモリが劣化してきた際には、ＳＬＣとして使用している。このため、メモリセルの劣化が始まった場合に、すぐにＳＬＣに切り替えた場合には記憶できるビット数が一度に大きく削減されてしまう問題があった。また、ＳＬＣの切り替えの閾値を高くした場合にはフラッシュメモリが早期に寿命を迎えてしまうという課題があった。
【課題を解決するための手段】
【０００７】
この発明は、上記のような課題を解消するためになされたもので、複数のメモリセルを有するメモリブロックを備えたフラッシュメモリと、前記フラッシュメモリに書き込むデータに冗長ビットを付加して誤り訂正符号化処理を行う誤り訂正符号化部と、前記メモリブロックのメモリの消耗度を測定し、前記メモリの消耗度が予め設定された第１の閾値を超えた場合に、前記メモリセルのマルチレベルセルとして使用を維持するとともに、前記メモリセルあたりに記憶するビット数をＫからＭ（Ｋ＞Ｍ、Ｋ及びＭは２以上の自然数）に減少させるメモリセルビット管理部とを備えることを特徴とする誤り訂正符号化装置を提供する。
【発明の効果】
【０００８】
本発明は、フラッシュメモリの寿命を長期化させることができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係るフラッシュメモリの誤り訂正符号化復号装置の構成を示すブロック図である。
【図２】実施の形態１に係るメモリセルビット管理部がメモリの管理を行っている様子の一例を示した図である。
【図３】実施の形態１に係るメモリセルあたりの記憶するビット数とメモリブロックを構成するページと誤り訂正符号のフォーマットを示した図である。
【図４】実施の形態１に係るメモリの書き込み操作時のフラッシュメモリコントローラの動作を示すフローチャートである。
【図５】実施の形態１に係るメモリの読み出し操作時のフラッシュメモリコントローラの動作を示すフローチャートである。
【図６】実施の形態２におけるフラッシュメモリの誤り訂正符号化復号装置の構成を示すブロック図。
【図７】実施の形態２におけるフラッシュメモリコントローラ１の動作を示すフローチャートである。
【図８】実施の形態３におけるフラッシュメモリの誤り訂正符号化復号装置の構成を示すブロック図。
【図９】実施の形態３におけるフラッシュメモリコントローラ１の動作を示すフローチャートである。
【図１０】実施の形態５におけるフラッシュメモリの誤り訂正符号化復号装置の１ページあたりの誤り訂正符号の構成の一例を示した図である。
【発明を実施するための形態】
【００１０】
実施の形態１．
図１は、この発明の一実施の形態におけるフラッシュメモリの誤り訂正符号化復号装置を示すブロック図である。図１において、フラッシュメモリコントローラ１はフラッシュメモリに対するデータの読み出しや書き込みなどを行う際の、誤り訂正処理及びメモリのアドレス生成等、フラッシュメモリ制御を行う。フラッシュメモリ２はフラッシュメモリコントローラ１にバスで接続され、使用者領域として用いられる。誤り訂正符号化部３はフラッシュメモリ２に書き込むデータに、冗長ビットを付加して誤り訂正符号化処理を行う。誤り訂正復号部４はフラッシュメモリ２から読み出したデータに対して、誤りがある場合に訂正処理を行なう。バッファメモリ５はフラッシュメモリ２から読み出しおよび書き込みするページ単位のデータを一時的に蓄える。メモリセルビット管理部６はフラッシュメモリ２の各メモリブロックに対する使用頻度およびメモリの消耗度（後述）を測定し、メモリブロックのメモリセルあたりのビット数の管理を行う。不良ブロック管理部７は不良ブロック位置の管理を行う。誤り訂正符号化としては、例えばＢＣＨ符号（Ｂｏｓｅ−Ｃｈａｕｄｈｕｒｉ−Ｈｏｃｑｕｅｎｇｈｅｍ  ｃｏｄｅ）や、ＬＤＰＣ符号（Ｌｏｗ−Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ−Ｃｈｅｃｋ  ｃｏｄｅ）などを用いることができる。
【００１１】
図２は、メモリセルビット管理部６がメモリの管理を行っているメモリ管理テーブルの一例を示したものである。
メモリ管理テーブルは、メモリブロック毎に、メモリセルあたりに記憶するビット数を保持している（図ではＫビット、Ｍビット、Ｑビットと表記）。また、メモリ管理テーブルは、メモリブロック毎に、メモリ消耗度の状態（後述）を保持している（図では特定の値を超えている場合は１、超えていない場合は０と表記）。
なお、メモリブロックは、フラッシュメモリに対する読み出しまたは書き込みを行う際の単位となるページを１もしくは複数集めたものである。
メモリ管理テーブル２０は、初期状態のメモリ使用状況を示しており、この例では、最初はすべてのメモリブロック（＃１〜＃ｎ）に関して、１メモリセルあたりＫビット（Ｋは３以上の自然数）を記憶させている。
【００１２】
メモリ管理テーブル２１は、メモリブロック＃２のメモリ消耗度が特定の閾値（第１の閾値）を超えた状態を示しており、メモリ管理テーブル２２は、メモリブロック＃２の１メモリセルあたりの記憶ビット数が変更され、１メモリセルあたりＭビット（ＭはＫより小さい２以上の自然数）を記憶する状態を示している。なお、メモリ消耗度は、１メモリセルあたりのビット数によって違うため、特定の閾値も１メモリあたりのビット数によって違う値をとる。
【００１３】
メモリ管理テーブル２３は、１メモリセルあたりＭビットを記憶する状態で使用していたメモリブロック＃２のメモリ消耗状態が特定の閾値（第２の閾値）を超えてしまい、メモリブロック＃２の１メモリセルあたりの記憶ビット数をさらに変更、ここでは１メモリセルあたりＱビット（ＱはＭより小さくかつ１以上の自然数）を記憶する状態を示している。
図には示していないが、上記のような状態遷移を経て、メモリブロック＃２の１メモリセルあたりの記憶ビット数が１の状態で、再度メモリブロック＃２のメモリ消耗度が特定の値を超えた場合には、不良ブロックとして不良ブロック管理部７で管理し、そのメモリブロックにはデータを書き込みできないようにする。
【００１４】
図３は、メモリセルあたりに記憶するビット数とメモリブロックを構成するページと誤り訂正符号のフォーマットとの関係の一例を示したものである。
誤り訂正符号のフォーマットは、入力されるデータに対し、一つの誤り訂正符号に割り当てられる情報ビット数と、情報ビットに誤り訂正を行うための冗長ビットを付加した符号長と、符号長のビット数の中で、訂正ができるビット数を表す訂正ビット数で構成される。なお、誤り訂正符号のフォーマットは、訂正ビット数が大きいほど、誤り訂正能力が高くなる。
図３において、１メモリセルのビット数がＫビットでは、ページ構成３１に示すように、１ページあたりＮ１個の誤り訂正符号で構成され、誤り訂正符号のフォーマット３２が用いられる。１メモリセルのビット数がＭに変更された場合、ページ構成３３に示すように、１ページあたりＮ２個の誤り訂正符号で構成され、誤り訂正符号のフォーマット３４が用いられる。同様に１メモリセルのビット数がＱに変更された場合、ページ構成３５に示すように、１ページあたりＮ３個の誤り訂正符号で構成され、誤り訂正符号のフォーマット３６が用いられる。
なお、図３では一つのブロックに一つのページしかない構成で説明を行ったが、複数のページで一つのメモリブロックを構成してもよい。
【００１５】
次に、図４と図５を用いてフラッシュメモリコントローラ１の動作について説明する。
なお、ここでは、管理されているメモリの初期状態は、図２で説明した初期状態のメモリ管理テーブル２０の状態であった場合を想定する。
【００１６】
図４のメモリの書き込み操作では、まず、フラッシュメモリコントローラ１が受け取ったデータは、誤り訂正符号化部３に入力される（Ｓ４０１）。誤り訂正符号化部３は、書き込みを行いたいメモリブロックのフォーマットをメモリセルビット管理部６に問い合わせる。
【００１７】
メモリセルビット管理部６は、書き込みを行いたいメモリブロックのフォーマットを決定する。フォーマットを決定するにあたり、メモリセルビット管理部６は、メモリ管理テーブルを参照し、書き込みを行いたいブロックの消耗度が特定の閾値よりも低いか確認を行う（Ｓ４０２）。
ブロックの消耗度として、例えば、メモリセルビット管理部６が、そのブロックを初めて使用した時刻を記録しておき、そのブロックを使用した時間を用いることができる。この場合、予めブロックに対する使用が保証される時間もしくは、それよりも若干短い時間を特定の値とする。
【００１８】
書き込み処理を行なうメモリブロックの消耗度が低いとメモリセルビット管理部６が判定した場合（Ｓ４０２、ＹＥＳ）、例えば、図２の途中経過０のメモリ管理テーブル２０のメモリブロック＃２であった場合には、Ｋとなる。
次にメモリセルビット管理部６は、１メモリセルＫビットの場合の誤り訂正符号のフォーマットを誤り訂正符号化部３に返す。上記の例だと、図３の中の１メモリセルＫビットに対応する誤り訂正符号のフォーマット３２が誤り訂正符号化部３に返される。
誤り訂正符号化部３は１メモリセルに記憶させる情報のビット数に応じた誤り訂正符号フォーマット、上記の例だと誤り訂正符号のフォーマット３２を用いて、誤り訂正の符号化を行う（Ｓ４０７）。
【００１９】
メモリセルビット管理部６は、符号化されたメモリブロックの内容をバッファ５に書き込む（Ｓ４０８）。フラッシュメモリコントローラ１がフラッシュメモリ２に対して書き込みを行う際には、ページ単位で行われるのが一般的である。従って、メモリセルビット管理部６は、バッファに１ページ分のデータが書き込まれているか確認し（Ｓ４０６）、１ページ分のデータが揃っていた場合、１メモリセルのビット数、上記の例だとＫを用いて、１ページ分のデータをフラッシュメモリ２に書き込む（Ｓ４１０）。このとき、不良ブロック管理部７で不良ブロックとなっている部分にはデータを書きこまないようにする。
【００２０】
Ｓ４０６にて、バッファに１ページ分のデータが書き込まれていない場合はフラッシュメモリへの書き込みは行わず、メモリの書き込み操作を終了する。
【００２１】
書き込み処理を行なうメモリブロックの消耗度が高い場合（Ｓ４０２、ＮＯ）、メモリセルビット管理部６は、１メモリセルに記憶させる情報のビット数を削減する（Ｓ４０３）。例えば、図２の途中経過１のメモリ管理テーブル２１のメモリブロック＃２であった場合、メモリ消耗状態が１であるため、メモリブロックの１メモリセルに記憶させる情報のビット数ＫをＭとし、途中経過２のメモリ管理テーブル２２のようにする。
次にメモリセルビット管理部６は、１メモリセルＭビットの場合の誤り訂正符号のフォーマットを誤り訂正符号化部３に返す。上記の例だと、図３の中の１メモリセルＭビットに対応する誤り訂正符号のフォーマット３４が誤り訂正復号化部３に返される。
同様に、メモリセルビット管理部６は、消耗度が高いと判定されたメモリブロックの１メモリセルに記憶させる情報のビット数がＭであった場合、Ｑとし、誤り訂正符号のフォーマットも誤り訂正符号フォーマット３４から誤り訂正符号フォーマット３６にする。
【００２２】
なお、メモリセルビット管理部６は、１メモリセルに記憶させる情報のビット数が０となった場合、つまり、前記の例で言えば、消耗度が高いと判定されたメモリブロックの１メモリセルに記憶させる情報のビット数がＭまたはＱから０に削減された場合（Ｓ４０４、ＹＥＳ）そのメモリブロックを不良ブロックとし（Ｓ４０５）、新メモリブロックを割り当てる（Ｓ４０６）。
【００２３】
１メモリセルに記憶させる情報のビット数が０とならなかった場合（Ｓ４０４、ＮＯ）、誤り訂正符号化部３は、メモリセルビット管理部６から返された誤り訂正符号フォーマットを用いて、誤り訂正の符号化を行う（Ｓ４０７）。
【００２４】
次にメモリセルビット管理部６は、メモリブロックの内容をバッファ５に書き込みを行う（Ｓ４０８）。メモリセルビット管理部６は、バッファに１ページ分のデータが揃ったか確認を行い（Ｓ４０６）、１メモリセルのビット数を用いて、ページ単位でフラッシュメモリ２に書き込みを行う（Ｓ４１０）。このとき、不良ブロック管理部７で不良ブロックとなっている部分にはデータの書き込みを行わないようにする。
【００２５】
以上のように、メモリセルビット管理部６では、書き込み処理を行うたびに、該当するメモリブロックのメモリの消耗状態に応じて、該当するメモリブロックを構成するメモリセルに記憶させるビット数の削減を行う。
【００２６】
次に図５を用いてデータの読み出し処理を説明する。図５のメモリ読み出し操作では、誤り訂正復号部４が、フラッシュメモリ２から読み出しを行なうページのデータをバッファ５に読み出す（Ｓ５０１）。
【００２７】
誤り訂正復号部４は、フラッシュメモリ２から読出しを行う際、読み出すフラッシュメモリのメモリブロックのフォーマットをメモリセルビット管理部６に問い合わせる。
【００２８】
メモリセルビット管理部６は、メモリ管理テーブルを参照し、該当するメモリブロックの１メモリセルのビット数を確認する。例えば、図２の途中経過０のメモリ管理テーブル２０のメモリブロック＃２であった場合には、Ｋとなる。
【００２９】
次にメモリセルビット管理部６は、１メモリセルＫビットの場合の誤り訂正符号のフォーマットを誤り訂正復号部４に返す。上記の例だと、図３の中の１メモリセルＫビットに対応する誤り訂正符号のフォーマット３２が誤り訂正復号部４に返される。
【００３０】
次にメモリセルビット管理部６は、バッファ５に読み出されたデータを、メモリセルあたりのビット数に応じて誤り訂正ブロックに分割する。
【００３１】
誤り訂正復号部４は、分割された誤り訂正ブロックに対し、誤り訂正処理を行ない、復号結果を出力する（Ｓ５０２）。
【００３２】
フラッシュメモリコントローラを上記のような構成にすることにより、最初は多くのビットをメモリに記憶させることができる。また、メモリの消耗が大きくなったときには、メモリ容量を犠牲にすることによって、フラッシュメモリとして長期間使用することができる効果がある。
【００３３】
実施の形態２．
本実施の形態では、メモリの消耗度を測定する基準としてメモリへ書き込みを行った回数を用いる場合について説明する。
図６は、実施の形態２におけるフラッシュメモリの誤り訂正符号化復号装置を示すブロック図である。図６において、書き込み回数カウント部８はそれぞれのメモリブロックへの書き込み回数をカウントし、メモリブロックへの書き込み回数からメモリセルビットを制御する。図６において、図１と同一の符号は、同一または相当する部分を表しており、書き込み回数カウント部８以外については、実施の形態１で用いた図１で記載したものと同じ動作をする。
【００３４】
次に、図７を用いてフラッシュメモリコントローラ１の動作について説明する。まず、メモリへの読み出し操作の動作については、実施の形態１と同じである。メモリへの書き込み操作の動作についても、Ｓ４０１からＳ４１０までは実施の形態１で述べた手順と同じであり、以下に実施の形態１で説明した動作との差異についてのみ説明する。
【００３５】
メモリセルビット管理部６は、バッファの内容をフラッシュメモリに書き込みを行ったのち（Ｓ４１０）、書き込み回数カウント部８で書き込みが行われたメモリブロックに対し、書き込みを行った回数を記録する（Ｓ７０１）。記録する方法は、新たに回数を管理するテーブルを作成しても、図２で示したメモリ管理テーブルに回数の項目を追加してもよい。
【００３６】
メモリセルビット管理部６は、書き込み回数カウント部８で書き込みを行った回数を消耗度として用い、フラッシュメモリが保証している書き込みの最大回数よりも低いか確認を行う（Ｓ４０２）ことにより、そのメモリブロックのフォーマットおよび、誤り訂正符号フォーマットを決定する（Ｓ４０３、Ｓ４０７）。
フラッシュメモリが保証している書き込みの最大回数は、メモリブロックを構成するメモリセルのビット数によって違い、例えば１ビットであれば１００，０００回、２ビットであれば１０，０００回、３ビットであれば１，０００回とかである。また、最大回数とせず、７０％の値としてもよい。
【００３７】
以上の構成により、簡易にメモリの消耗度を測定することができる。また、フラッシュメモリとして長期間使用することができる効果がある。
【００３８】
実施の形態３．
本実施の形態では、メモリの消耗度を測定する基準として誤り訂正を行ったときに検出された誤りビット数を用いる場合について説明する。
図８は、実施の形態３におけるフラッシュメモリの誤り訂正符号化復号装置を示すブロック図である。図８において、誤りビット管理部９は、メモリの読み出し処理を行なったときに誤り訂正復号処理をした誤り訂正ビット数を測定し、誤り訂正ビット数から該当するメモリセルビットを制御するものである。図８において、図１と同一の符号は、同一または相当する部分を表しており、誤りビット管理部９以外については、実施の形態１で用いた図１で記載したものと同じ動作をする。
【００３９】
次に図９を用いてフラッシュメモリコントローラ１の動作について説明する。まず、メモリの読み出し操作の動作については、Ｓ５０１からＳ５０２までは実施の形態１で述べた手順と同じであり、以下に実施の形態１で説明した動作との差異についてのみ説明する。
【００４０】
メモリセルビット管理部６は、Ｓ５０２でメモリの読み出し処理を行ったときに１符号語あたりの誤り訂正復号処理を行った誤り訂正ビット数を測定し、その最大値を記録する（Ｓ９０１）。
【００４１】
メモリの書き込み操作の動作については、実施の形態１と同じであるが、先ほどＳ９０１で記録した誤り訂正ビット数の最大値を消耗度として用いる。この誤り訂正を行なったビット数の最大値があらかじめ定められた特定の閾値を越えた場合（Ｓ４０２）、メモリセルビット管理部６は、１メモリセルに記憶させる情報のビット数を変更する（Ｓ４０３）。以下、実施の形態１で述べた動作を実施する。この特定の閾値は、１としても良いし、書込み操作ができないと判定される直前、最後に書き込みができた際、誤り訂正を行ったビット数の最大値を予め統計調査しておき、設定してもよい。なお、実施の形態１で述べたメモリ消耗度の場合と同様、１メモリセルあたりのビット数によって誤り訂正ビット数の最大値が違う場合、特定の閾値も１メモリセルあたりのビット数によって違う設定としてもよい。
【００４２】
以上の構成により、誤り訂正ビットにより実際のメモリの消耗度に近い値を測定することができるため、フラッシュメモリとして長期間使用することができる効果がある。
【００４３】
上記の動作では、誤り訂正ビット数の測定方法として１符号あたりの誤り訂正ビット数の最大値により、該当するメモリブロックを構成するメモリセルのビット数を決定していたが、他の基準で該当するメモリブロックを構成するメモリセルのビット数を決定してもよい。
【００４４】
例えば、１ページあたりの誤り訂正ビット数が特定の閾値より大きな値であったの場合や、訂正不可となった符号が存在した場合に、次回から該当するメモリブロックにデータの書き込みを行ったときには、１メモリセルに記憶するビット数を削減してもよい。
【００４５】
また、本実施例では誤り訂正ビット数を消耗度として用いることにより、次回以降に書き込みを行う際にメモリセルに記憶させるビット数を決定していたが、実施の形態２で記載したメモリブロックへの書き込み回数と併用しても同様の効果を得ることができる。
【００４６】
実施の形態４．
これまで説明してきた実施の形態では、メモリセルあたりに記憶するビット数を削減したのに伴い、誤り訂正符号のフォーマットも変更した。
【００４７】
本実施の形態では、メモリセルあたりに記憶するビット数が削減されても、誤り訂正符号として、同一の符号長、情報ビット数、訂正能力の符号を用いて、１ページを構成する符号の個数分だけを変える構成とする。図３の例で説明すると、本来、１メモリセルあたりに記憶するビット数が例えばＫビットからＭビットに変更された場合には誤り訂正符号フォーマット３４を、ＭビットからＱビットに変更された場合には誤り訂正符号フォーマット３６を用いていたのに対し、如何なるビット数であろうと誤り訂正符号フォーマット３２のみを用いる。
【００４８】
以上の構成により、フラッシュメモリコントローラ１内の誤り訂正符号化部３および誤り訂正符号化部４は、メモリセルあたりに記憶するビット数に関わらず、同一の誤り訂正符号のフォーマットで、ページフォーマット構成テーブルを構成することができる。これにより、フラッシュメモリコントローラ１の回路規模を小さくできる効果がある。
【００４９】
実施の形態５．
図１０は、実施の形態５におけるフラッシュメモリの誤り訂正符号化復号装置の１ページあたりの誤り訂正符号の構成の一例を示したものである。本実施の形態では、１メモリセルあたりの記憶するビット数がＫビットの場合とＭビットの場合を例に説明する。
また、図３の例では、１メモリセルあたりに記憶する一つのビット数に対し誤り訂正符号フォーマットが一つしかなかったが、本実施の形態では、使用する誤り訂正符号としては誤り訂正能力のそれほど高くない符号、たとえば訂正ビット数が４の誤り訂正符号の誤り訂正符号フォーマット１０２、１０６と、誤り訂正能力の高い符号、たとえば訂正ビット数が１６の誤り訂正符号の誤り訂正符号フォーマット１０４、１０８がある場合を例に説明する。
【００５０】
メモリセルビット管理部６は、最初はすべてのメモリブロックに関しては１メモリセルあたりＫビットの情報を記憶させる。メモリセルビット管理部６は、そのとき使用する誤り訂正符号としては誤り訂正能力のそれほど高くない符号、たとえば訂正ビット数が４の誤り訂正符号の誤り訂正符号フォーマット１０２を用いて、符号化および復号処理を行なう。このとき、１ページあたりの誤り訂正符号の構成は、ページ構成１０１のようになる。
【００５１】
メモリが繰返し使用され、メモリブロックの消耗度が大きくなり、特定の閾値（第１の閾値）を超えたとき、メモリセルビット管理部６は、１メモリセルあたりに記憶させるビット数はＫビットのままで、誤り訂正能力の高い符号、たとえば訂正ビット数が１６の誤り訂正符号の誤り訂正符号フォーマット１０４を用いて、符号化および復号処理を行なう。このとき、１ページあたりの誤り訂正符号の構成は、ページ構成１０３のようになる。
【００５２】
次に、誤り訂正符号フォーマット１０４を用いた状態で、メモリの消耗度が特定の閾値（第３の閾値）を超えたとき、メモリセルビット管理部６は、１メモリセルあたりの記憶ビット数を削減して１メモリセルあたりＭビット（Ｍ＜Ｋ）の情報を記憶させる。そのとき使用する誤り訂正符号としては誤り訂正能力のそれほど高くない符号、たとえば訂正ビット数が４の誤り訂正符号の誤り訂正符号フォーマット１０６を用いて、符号化および復号処理を行なう。このとき、１ページあたりの誤り訂正符号の構成は、ページ構成１０５のようになる。
【００５３】
次に、メモリの消耗度が特定の閾値（第２の閾値）を超えたとき、メモリセルビット管理部６は、１メモリセルあたりに記憶させるビット数はＭビットのままで、誤り訂正能力の高い符号、たとえば訂正ビット数が１６の誤り訂正符号の誤り訂正符号フォーマット１０８を用いて、符号化および復号処理を行なう。このとき、１ページあたりの誤り訂正符号の構成は、ページ構成１０７のようになる。
【００５４】
第１の閾値、第２の閾値および第３の閾値、それぞれの値は、例えば、消耗度として書き込みを行う回数を用いていた場合であれば、メモリが保証している最大書き込み回数の７０％としても良いし、消耗度として誤り訂正を行ったビット数の最大値を用いた場合であれば、システムが要求されているメモリに対する読み出しまたは書き込みの性能（時間）から計算して求めてもよい。
【００５５】
また、上記の実施の形態において、１メモリセルあたりに記憶しているビット数を削減（ＫからＭに）したとき、誤り訂正符号の訂正能力を最初はそれほど高くない符号、たとえば訂正ビット数が４の誤り訂正符号の誤り訂正符号フォーマット１０６を使い、その後に誤り訂正能力の高い符号、たとえば訂正ビット数が１６の誤り訂正符号の誤り訂正符号フォーマット１０８を用いて符号化を大きくしたが、誤り訂正符号フォーマット１０６を使わず、いきなり誤り訂正符号フォーマット１０８を用いてページ構成を変更しても同様の効果が得られる。
【００５６】
フラッシュメモリコントローラを上記のような構成にすることにより、最初は多くのビットをメモリに記憶させることができる。また、メモリの消耗が大きくなったときには、メモリ容量を犠牲にすることによって、フラッシュメモリとして長期間使用することができる効果がある。また、メモリがあまり消耗されていない初期段階では、大きな誤り訂正符号を用いる必要性が生じないため、メモリコントローラの消費電力を抑える効果がある。
【符号の説明】
【００５７】
１  フラッシュメモリコントローラ、２  フラッシュメモリ、３  誤り訂正符号化部、４  誤り訂正復号部、５  バッファメモリ、６  メモリセルビット管理部、７  不良ブロック管理部、８  書き込み回数カウント部、９  誤りビット数管理部、２０  メモリ管理テーブル、２１  メモリ管理テーブル、２２  メモリ管理テーブル、２３  メモリ管理テーブル、
３１  ページ構成、３２  誤り訂正符号のフォーマット、３３  ページ構成、３４  誤り訂正符号のフォーマット、３５  ページ構成、３６  誤り訂正符号のフォーマット、１０１  ページ構成、１０２  訂正ビット数が４の誤り訂正符号のフォーマット、１０３  ページ構成、１０４  訂正ビット数が１６の誤り訂正符号のフォーマット、１０５  ページ構成、１０６  訂正ビット数が４の誤り訂正符号のフォーマット、１０７  ページ構成、１０８  訂正ビット数が１６の誤り訂正符号のフォーマット
【図１】
2015138498.tif 000003
【図２】
2015138498.tif 000004
【図３】
2015138498.tif 000005
【図４】
2015138498.tif 000006
【図５】
2015138498.tif 000007
【図６】
2015138498.tif 000008
【図７】
2015138498.tif 000009
【図８】
2015138498.tif 000010
【図９】
2015138498.tif 000011
【図１０】
2015138498.tif 000012