JP2015138498A - フラッシュメモリの誤り訂正符号化装置および方法 - Google Patents
フラッシュメモリの誤り訂正符号化装置および方法 Download PDFInfo
- Publication number
- JP2015138498A JP2015138498A JP2014011252A JP2014011252A JP2015138498A JP 2015138498 A JP2015138498 A JP 2015138498A JP 2014011252 A JP2014011252 A JP 2014011252A JP 2014011252 A JP2014011252 A JP 2014011252A JP 2015138498 A JP2015138498 A JP 2015138498A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- error correction
- bits
- memory cell
- flash memory
- 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.)
- Pending
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
【課題】 フラッシュメモリの寿命を長期化させる誤り訂正符号化装置を提供する。
【解決手段】 複数のメモリセルを有するメモリブロックを備えたフラッシュメモリ2と、フラッシュメモリ2に書き込むデータに冗長ビットを付加して誤り訂正符号化処理を行う誤り訂正符号化部3と、メモリブロックのメモリの消耗度を測定し、メモリの消耗度が予め設定された第1の閾値を超えた場合に、メモリセルのマルチレベルセルとしての使用を維持するとともに、メモリブロックのメモリセルあたりに記憶するビット数をKからM(K>M、K及びMは2以上の自然数)に減少させるメモリセルビット管理部6とを備える。
【選択図】図1
【解決手段】 複数のメモリセルを有するメモリブロックを備えたフラッシュメモリ2と、フラッシュメモリ2に書き込むデータに冗長ビットを付加して誤り訂正符号化処理を行う誤り訂正符号化部3と、メモリブロックのメモリの消耗度を測定し、メモリの消耗度が予め設定された第1の閾値を超えた場合に、メモリセルのマルチレベルセルとしての使用を維持するとともに、メモリブロックのメモリセルあたりに記憶するビット数をKからM(K>M、K及びMは2以上の自然数)に減少させるメモリセルビット管理部6とを備える。
【選択図】図1
Description
本発明は、フラッシュメモリへのアクセスに対し、フラッシュメモリの寿命を長期化させる誤り訂正符号化装置および方法に関する。
従来のフラッシュメモリの誤り訂正符号化では、データを一時的に格納するバッファ領域と、最終的に格納する使用者領域とで区別し、バッファ領域にはSLC(Single Level Cell)を用い、使用者領域にはMLC(Multi Level Cell)を用いて記憶を行う方法が提案されている。(特許文献1)
この方法では、メモリのエラーが頻繁に生じるようになった場合には、使用者領域の一部をバッファ領域に、バッファ領域を使用できない領域に移行させ、バッファ領域のウェアレベル(Wear Level)の緩和を行っていた。
この方法では、メモリのエラーが頻繁に生じるようになった場合には、使用者領域の一部をバッファ領域に、バッファ領域を使用できない領域に移行させ、バッファ領域のウェアレベル(Wear Level)の緩和を行っていた。
また、あらかじめ、SLCの領域とMLCの領域を用意していて、データの特性に応じて、記憶させる領域を変更させる方法が提案されている。(特許文献2)
この方法では、データの内容に対するアクセス頻度に応じて、高いものはSLCの領域、低いものはMLCの領域へと入れ替えを行なうことでメモリの寿命を長期化していた。
この方法では、データの内容に対するアクセス頻度に応じて、高いものはSLCの領域、低いものはMLCの領域へと入れ替えを行なうことでメモリの寿命を長期化していた。
従来のフラッシュメモリの誤り訂正符号化では、メモリセルあたりのビット数を2以上の自然数としたMLCとしてフラッシュメモリを使用し、フラッシュメモリが劣化してきた際には、SLCとして使用している。このため、メモリセルの劣化が始まった場合に、すぐにSLCに切り替えた場合には記憶できるビット数が一度に大きく削減されてしまう問題があった。また、SLCの切り替えの閾値を高くした場合にはフラッシュメモリが早期に寿命を迎えてしまうという課題があった。
この発明は、上記のような課題を解消するためになされたもので、複数のメモリセルを有するメモリブロックを備えたフラッシュメモリと、前記フラッシュメモリに書き込むデータに冗長ビットを付加して誤り訂正符号化処理を行う誤り訂正符号化部と、前記メモリブロックのメモリの消耗度を測定し、前記メモリの消耗度が予め設定された第1の閾値を超えた場合に、前記メモリセルのマルチレベルセルとして使用を維持するとともに、前記メモリセルあたりに記憶するビット数をKからM(K>M、K及びMは2以上の自然数)に減少させるメモリセルビット管理部とを備えることを特徴とする誤り訂正符号化装置を提供する。
本発明は、フラッシュメモリの寿命を長期化させることができる。
実施の形態1.
図1は、この発明の一実施の形態におけるフラッシュメモリの誤り訂正符号化復号装置を示すブロック図である。図1において、フラッシュメモリコントローラ1はフラッシュメモリに対するデータの読み出しや書き込みなどを行う際の、誤り訂正処理及びメモリのアドレス生成等、フラッシュメモリ制御を行う。フラッシュメモリ2はフラッシュメモリコントローラ1にバスで接続され、使用者領域として用いられる。誤り訂正符号化部3はフラッシュメモリ2に書き込むデータに、冗長ビットを付加して誤り訂正符号化処理を行う。誤り訂正復号部4はフラッシュメモリ2から読み出したデータに対して、誤りがある場合に訂正処理を行なう。バッファメモリ5はフラッシュメモリ2から読み出しおよび書き込みするページ単位のデータを一時的に蓄える。メモリセルビット管理部6はフラッシュメモリ2の各メモリブロックに対する使用頻度およびメモリの消耗度(後述)を測定し、メモリブロックのメモリセルあたりのビット数の管理を行う。不良ブロック管理部7は不良ブロック位置の管理を行う。誤り訂正符号化としては、例えばBCH符号(Bose−Chaudhuri−Hocquenghem code)や、LDPC符号(Low−Density Parity−Check code)などを用いることができる。
図1は、この発明の一実施の形態におけるフラッシュメモリの誤り訂正符号化復号装置を示すブロック図である。図1において、フラッシュメモリコントローラ1はフラッシュメモリに対するデータの読み出しや書き込みなどを行う際の、誤り訂正処理及びメモリのアドレス生成等、フラッシュメモリ制御を行う。フラッシュメモリ2はフラッシュメモリコントローラ1にバスで接続され、使用者領域として用いられる。誤り訂正符号化部3はフラッシュメモリ2に書き込むデータに、冗長ビットを付加して誤り訂正符号化処理を行う。誤り訂正復号部4はフラッシュメモリ2から読み出したデータに対して、誤りがある場合に訂正処理を行なう。バッファメモリ5はフラッシュメモリ2から読み出しおよび書き込みするページ単位のデータを一時的に蓄える。メモリセルビット管理部6はフラッシュメモリ2の各メモリブロックに対する使用頻度およびメモリの消耗度(後述)を測定し、メモリブロックのメモリセルあたりのビット数の管理を行う。不良ブロック管理部7は不良ブロック位置の管理を行う。誤り訂正符号化としては、例えばBCH符号(Bose−Chaudhuri−Hocquenghem code)や、LDPC符号(Low−Density Parity−Check code)などを用いることができる。
図2は、メモリセルビット管理部6がメモリの管理を行っているメモリ管理テーブルの一例を示したものである。
メモリ管理テーブルは、メモリブロック毎に、メモリセルあたりに記憶するビット数を保持している(図ではKビット、Mビット、Qビットと表記)。また、メモリ管理テーブルは、メモリブロック毎に、メモリ消耗度の状態(後述)を保持している(図では特定の値を超えている場合は1、超えていない場合は0と表記)。
なお、メモリブロックは、フラッシュメモリに対する読み出しまたは書き込みを行う際の単位となるページを1もしくは複数集めたものである。
メモリ管理テーブル20は、初期状態のメモリ使用状況を示しており、この例では、最初はすべてのメモリブロック(#1〜#n)に関して、1メモリセルあたりKビット(Kは3以上の自然数)を記憶させている。
メモリ管理テーブルは、メモリブロック毎に、メモリセルあたりに記憶するビット数を保持している(図ではKビット、Mビット、Qビットと表記)。また、メモリ管理テーブルは、メモリブロック毎に、メモリ消耗度の状態(後述)を保持している(図では特定の値を超えている場合は1、超えていない場合は0と表記)。
なお、メモリブロックは、フラッシュメモリに対する読み出しまたは書き込みを行う際の単位となるページを1もしくは複数集めたものである。
メモリ管理テーブル20は、初期状態のメモリ使用状況を示しており、この例では、最初はすべてのメモリブロック(#1〜#n)に関して、1メモリセルあたりKビット(Kは3以上の自然数)を記憶させている。
メモリ管理テーブル21は、メモリブロック#2のメモリ消耗度が特定の閾値(第1の閾値)を超えた状態を示しており、メモリ管理テーブル22は、メモリブロック#2の1メモリセルあたりの記憶ビット数が変更され、1メモリセルあたりMビット(MはKより小さい2以上の自然数)を記憶する状態を示している。なお、メモリ消耗度は、1メモリセルあたりのビット数によって違うため、特定の閾値も1メモリあたりのビット数によって違う値をとる。
メモリ管理テーブル23は、1メモリセルあたりMビットを記憶する状態で使用していたメモリブロック#2のメモリ消耗状態が特定の閾値(第2の閾値)を超えてしまい、メモリブロック#2の1メモリセルあたりの記憶ビット数をさらに変更、ここでは1メモリセルあたりQビット(QはMより小さくかつ1以上の自然数)を記憶する状態を示している。
図には示していないが、上記のような状態遷移を経て、メモリブロック#2の1メモリセルあたりの記憶ビット数が1の状態で、再度メモリブロック#2のメモリ消耗度が特定の値を超えた場合には、不良ブロックとして不良ブロック管理部7で管理し、そのメモリブロックにはデータを書き込みできないようにする。
図には示していないが、上記のような状態遷移を経て、メモリブロック#2の1メモリセルあたりの記憶ビット数が1の状態で、再度メモリブロック#2のメモリ消耗度が特定の値を超えた場合には、不良ブロックとして不良ブロック管理部7で管理し、そのメモリブロックにはデータを書き込みできないようにする。
図3は、メモリセルあたりに記憶するビット数とメモリブロックを構成するページと誤り訂正符号のフォーマットとの関係の一例を示したものである。
誤り訂正符号のフォーマットは、入力されるデータに対し、一つの誤り訂正符号に割り当てられる情報ビット数と、情報ビットに誤り訂正を行うための冗長ビットを付加した符号長と、符号長のビット数の中で、訂正ができるビット数を表す訂正ビット数で構成される。なお、誤り訂正符号のフォーマットは、訂正ビット数が大きいほど、誤り訂正能力が高くなる。
図3において、1メモリセルのビット数がKビットでは、ページ構成31に示すように、1ページあたりN1個の誤り訂正符号で構成され、誤り訂正符号のフォーマット32が用いられる。1メモリセルのビット数がMに変更された場合、ページ構成33に示すように、1ページあたりN2個の誤り訂正符号で構成され、誤り訂正符号のフォーマット34が用いられる。同様に1メモリセルのビット数がQに変更された場合、ページ構成35に示すように、1ページあたりN3個の誤り訂正符号で構成され、誤り訂正符号のフォーマット36が用いられる。
なお、図3では一つのブロックに一つのページしかない構成で説明を行ったが、複数のページで一つのメモリブロックを構成してもよい。
誤り訂正符号のフォーマットは、入力されるデータに対し、一つの誤り訂正符号に割り当てられる情報ビット数と、情報ビットに誤り訂正を行うための冗長ビットを付加した符号長と、符号長のビット数の中で、訂正ができるビット数を表す訂正ビット数で構成される。なお、誤り訂正符号のフォーマットは、訂正ビット数が大きいほど、誤り訂正能力が高くなる。
図3において、1メモリセルのビット数がKビットでは、ページ構成31に示すように、1ページあたりN1個の誤り訂正符号で構成され、誤り訂正符号のフォーマット32が用いられる。1メモリセルのビット数がMに変更された場合、ページ構成33に示すように、1ページあたりN2個の誤り訂正符号で構成され、誤り訂正符号のフォーマット34が用いられる。同様に1メモリセルのビット数がQに変更された場合、ページ構成35に示すように、1ページあたりN3個の誤り訂正符号で構成され、誤り訂正符号のフォーマット36が用いられる。
なお、図3では一つのブロックに一つのページしかない構成で説明を行ったが、複数のページで一つのメモリブロックを構成してもよい。
次に、図4と図5を用いてフラッシュメモリコントローラ1の動作について説明する。
なお、ここでは、管理されているメモリの初期状態は、図2で説明した初期状態のメモリ管理テーブル20の状態であった場合を想定する。
なお、ここでは、管理されているメモリの初期状態は、図2で説明した初期状態のメモリ管理テーブル20の状態であった場合を想定する。
図4のメモリの書き込み操作では、まず、フラッシュメモリコントローラ1が受け取ったデータは、誤り訂正符号化部3に入力される(S401)。誤り訂正符号化部3は、書き込みを行いたいメモリブロックのフォーマットをメモリセルビット管理部6に問い合わせる。
メモリセルビット管理部6は、書き込みを行いたいメモリブロックのフォーマットを決定する。フォーマットを決定するにあたり、メモリセルビット管理部6は、メモリ管理テーブルを参照し、書き込みを行いたいブロックの消耗度が特定の閾値よりも低いか確認を行う(S402)。
ブロックの消耗度として、例えば、メモリセルビット管理部6が、そのブロックを初めて使用した時刻を記録しておき、そのブロックを使用した時間を用いることができる。この場合、予めブロックに対する使用が保証される時間もしくは、それよりも若干短い時間を特定の値とする。
ブロックの消耗度として、例えば、メモリセルビット管理部6が、そのブロックを初めて使用した時刻を記録しておき、そのブロックを使用した時間を用いることができる。この場合、予めブロックに対する使用が保証される時間もしくは、それよりも若干短い時間を特定の値とする。
書き込み処理を行なうメモリブロックの消耗度が低いとメモリセルビット管理部6が判定した場合(S402、YES)、例えば、図2の途中経過0のメモリ管理テーブル20のメモリブロック#2であった場合には、Kとなる。
次にメモリセルビット管理部6は、1メモリセルKビットの場合の誤り訂正符号のフォーマットを誤り訂正符号化部3に返す。上記の例だと、図3の中の1メモリセルKビットに対応する誤り訂正符号のフォーマット32が誤り訂正符号化部3に返される。
誤り訂正符号化部3は1メモリセルに記憶させる情報のビット数に応じた誤り訂正符号フォーマット、上記の例だと誤り訂正符号のフォーマット32を用いて、誤り訂正の符号化を行う(S407)。
次にメモリセルビット管理部6は、1メモリセルKビットの場合の誤り訂正符号のフォーマットを誤り訂正符号化部3に返す。上記の例だと、図3の中の1メモリセルKビットに対応する誤り訂正符号のフォーマット32が誤り訂正符号化部3に返される。
誤り訂正符号化部3は1メモリセルに記憶させる情報のビット数に応じた誤り訂正符号フォーマット、上記の例だと誤り訂正符号のフォーマット32を用いて、誤り訂正の符号化を行う(S407)。
メモリセルビット管理部6は、符号化されたメモリブロックの内容をバッファ5に書き込む(S408)。フラッシュメモリコントローラ1がフラッシュメモリ2に対して書き込みを行う際には、ページ単位で行われるのが一般的である。従って、メモリセルビット管理部6は、バッファに1ページ分のデータが書き込まれているか確認し(S406)、1ページ分のデータが揃っていた場合、1メモリセルのビット数、上記の例だとKを用いて、1ページ分のデータをフラッシュメモリ2に書き込む(S410)。このとき、不良ブロック管理部7で不良ブロックとなっている部分にはデータを書きこまないようにする。
S406にて、バッファに1ページ分のデータが書き込まれていない場合はフラッシュメモリへの書き込みは行わず、メモリの書き込み操作を終了する。
書き込み処理を行なうメモリブロックの消耗度が高い場合(S402、NO)、メモリセルビット管理部6は、1メモリセルに記憶させる情報のビット数を削減する(S403)。例えば、図2の途中経過1のメモリ管理テーブル21のメモリブロック#2であった場合、メモリ消耗状態が1であるため、メモリブロックの1メモリセルに記憶させる情報のビット数KをMとし、途中経過2のメモリ管理テーブル22のようにする。
次にメモリセルビット管理部6は、1メモリセルMビットの場合の誤り訂正符号のフォーマットを誤り訂正符号化部3に返す。上記の例だと、図3の中の1メモリセルMビットに対応する誤り訂正符号のフォーマット34が誤り訂正復号化部3に返される。
同様に、メモリセルビット管理部6は、消耗度が高いと判定されたメモリブロックの1メモリセルに記憶させる情報のビット数がMであった場合、Qとし、誤り訂正符号のフォーマットも誤り訂正符号フォーマット34から誤り訂正符号フォーマット36にする。
次にメモリセルビット管理部6は、1メモリセルMビットの場合の誤り訂正符号のフォーマットを誤り訂正符号化部3に返す。上記の例だと、図3の中の1メモリセルMビットに対応する誤り訂正符号のフォーマット34が誤り訂正復号化部3に返される。
同様に、メモリセルビット管理部6は、消耗度が高いと判定されたメモリブロックの1メモリセルに記憶させる情報のビット数がMであった場合、Qとし、誤り訂正符号のフォーマットも誤り訂正符号フォーマット34から誤り訂正符号フォーマット36にする。
なお、メモリセルビット管理部6は、1メモリセルに記憶させる情報のビット数が0となった場合、つまり、前記の例で言えば、消耗度が高いと判定されたメモリブロックの1メモリセルに記憶させる情報のビット数がMまたはQから0に削減された場合(S404、YES)そのメモリブロックを不良ブロックとし(S405)、新メモリブロックを割り当てる(S406)。
1メモリセルに記憶させる情報のビット数が0とならなかった場合(S404、NO)、誤り訂正符号化部3は、メモリセルビット管理部6から返された誤り訂正符号フォーマットを用いて、誤り訂正の符号化を行う(S407)。
次にメモリセルビット管理部6は、メモリブロックの内容をバッファ5に書き込みを行う(S408)。メモリセルビット管理部6は、バッファに1ページ分のデータが揃ったか確認を行い(S406)、1メモリセルのビット数を用いて、ページ単位でフラッシュメモリ2に書き込みを行う(S410)。このとき、不良ブロック管理部7で不良ブロックとなっている部分にはデータの書き込みを行わないようにする。
以上のように、メモリセルビット管理部6では、書き込み処理を行うたびに、該当するメモリブロックのメモリの消耗状態に応じて、該当するメモリブロックを構成するメモリセルに記憶させるビット数の削減を行う。
次に図5を用いてデータの読み出し処理を説明する。図5のメモリ読み出し操作では、誤り訂正復号部4が、フラッシュメモリ2から読み出しを行なうページのデータをバッファ5に読み出す(S501)。
誤り訂正復号部4は、フラッシュメモリ2から読出しを行う際、読み出すフラッシュメモリのメモリブロックのフォーマットをメモリセルビット管理部6に問い合わせる。
メモリセルビット管理部6は、メモリ管理テーブルを参照し、該当するメモリブロックの1メモリセルのビット数を確認する。例えば、図2の途中経過0のメモリ管理テーブル20のメモリブロック#2であった場合には、Kとなる。
次にメモリセルビット管理部6は、1メモリセルKビットの場合の誤り訂正符号のフォーマットを誤り訂正復号部4に返す。上記の例だと、図3の中の1メモリセルKビットに対応する誤り訂正符号のフォーマット32が誤り訂正復号部4に返される。
次にメモリセルビット管理部6は、バッファ5に読み出されたデータを、メモリセルあたりのビット数に応じて誤り訂正ブロックに分割する。
誤り訂正復号部4は、分割された誤り訂正ブロックに対し、誤り訂正処理を行ない、復号結果を出力する(S502)。
フラッシュメモリコントローラを上記のような構成にすることにより、最初は多くのビットをメモリに記憶させることができる。また、メモリの消耗が大きくなったときには、メモリ容量を犠牲にすることによって、フラッシュメモリとして長期間使用することができる効果がある。
実施の形態2.
本実施の形態では、メモリの消耗度を測定する基準としてメモリへ書き込みを行った回数を用いる場合について説明する。
図6は、実施の形態2におけるフラッシュメモリの誤り訂正符号化復号装置を示すブロック図である。図6において、書き込み回数カウント部8はそれぞれのメモリブロックへの書き込み回数をカウントし、メモリブロックへの書き込み回数からメモリセルビットを制御する。図6において、図1と同一の符号は、同一または相当する部分を表しており、書き込み回数カウント部8以外については、実施の形態1で用いた図1で記載したものと同じ動作をする。
本実施の形態では、メモリの消耗度を測定する基準としてメモリへ書き込みを行った回数を用いる場合について説明する。
図6は、実施の形態2におけるフラッシュメモリの誤り訂正符号化復号装置を示すブロック図である。図6において、書き込み回数カウント部8はそれぞれのメモリブロックへの書き込み回数をカウントし、メモリブロックへの書き込み回数からメモリセルビットを制御する。図6において、図1と同一の符号は、同一または相当する部分を表しており、書き込み回数カウント部8以外については、実施の形態1で用いた図1で記載したものと同じ動作をする。
次に、図7を用いてフラッシュメモリコントローラ1の動作について説明する。まず、メモリへの読み出し操作の動作については、実施の形態1と同じである。メモリへの書き込み操作の動作についても、S401からS410までは実施の形態1で述べた手順と同じであり、以下に実施の形態1で説明した動作との差異についてのみ説明する。
メモリセルビット管理部6は、バッファの内容をフラッシュメモリに書き込みを行ったのち(S410)、書き込み回数カウント部8で書き込みが行われたメモリブロックに対し、書き込みを行った回数を記録する(S701)。記録する方法は、新たに回数を管理するテーブルを作成しても、図2で示したメモリ管理テーブルに回数の項目を追加してもよい。
メモリセルビット管理部6は、書き込み回数カウント部8で書き込みを行った回数を消耗度として用い、フラッシュメモリが保証している書き込みの最大回数よりも低いか確認を行う(S402)ことにより、そのメモリブロックのフォーマットおよび、誤り訂正符号フォーマットを決定する(S403、S407)。
フラッシュメモリが保証している書き込みの最大回数は、メモリブロックを構成するメモリセルのビット数によって違い、例えば1ビットであれば100,000回、2ビットであれば10,000回、3ビットであれば1,000回とかである。また、最大回数とせず、70%の値としてもよい。
フラッシュメモリが保証している書き込みの最大回数は、メモリブロックを構成するメモリセルのビット数によって違い、例えば1ビットであれば100,000回、2ビットであれば10,000回、3ビットであれば1,000回とかである。また、最大回数とせず、70%の値としてもよい。
以上の構成により、簡易にメモリの消耗度を測定することができる。また、フラッシュメモリとして長期間使用することができる効果がある。
実施の形態3.
本実施の形態では、メモリの消耗度を測定する基準として誤り訂正を行ったときに検出された誤りビット数を用いる場合について説明する。
図8は、実施の形態3におけるフラッシュメモリの誤り訂正符号化復号装置を示すブロック図である。図8において、誤りビット管理部9は、メモリの読み出し処理を行なったときに誤り訂正復号処理をした誤り訂正ビット数を測定し、誤り訂正ビット数から該当するメモリセルビットを制御するものである。図8において、図1と同一の符号は、同一または相当する部分を表しており、誤りビット管理部9以外については、実施の形態1で用いた図1で記載したものと同じ動作をする。
本実施の形態では、メモリの消耗度を測定する基準として誤り訂正を行ったときに検出された誤りビット数を用いる場合について説明する。
図8は、実施の形態3におけるフラッシュメモリの誤り訂正符号化復号装置を示すブロック図である。図8において、誤りビット管理部9は、メモリの読み出し処理を行なったときに誤り訂正復号処理をした誤り訂正ビット数を測定し、誤り訂正ビット数から該当するメモリセルビットを制御するものである。図8において、図1と同一の符号は、同一または相当する部分を表しており、誤りビット管理部9以外については、実施の形態1で用いた図1で記載したものと同じ動作をする。
次に図9を用いてフラッシュメモリコントローラ1の動作について説明する。まず、メモリの読み出し操作の動作については、S501からS502までは実施の形態1で述べた手順と同じであり、以下に実施の形態1で説明した動作との差異についてのみ説明する。
メモリセルビット管理部6は、S502でメモリの読み出し処理を行ったときに1符号語あたりの誤り訂正復号処理を行った誤り訂正ビット数を測定し、その最大値を記録する(S901)。
メモリの書き込み操作の動作については、実施の形態1と同じであるが、先ほどS901で記録した誤り訂正ビット数の最大値を消耗度として用いる。この誤り訂正を行なったビット数の最大値があらかじめ定められた特定の閾値を越えた場合(S402)、メモリセルビット管理部6は、1メモリセルに記憶させる情報のビット数を変更する(S403)。以下、実施の形態1で述べた動作を実施する。この特定の閾値は、1としても良いし、書込み操作ができないと判定される直前、最後に書き込みができた際、誤り訂正を行ったビット数の最大値を予め統計調査しておき、設定してもよい。なお、実施の形態1で述べたメモリ消耗度の場合と同様、1メモリセルあたりのビット数によって誤り訂正ビット数の最大値が違う場合、特定の閾値も1メモリセルあたりのビット数によって違う設定としてもよい。
以上の構成により、誤り訂正ビットにより実際のメモリの消耗度に近い値を測定することができるため、フラッシュメモリとして長期間使用することができる効果がある。
上記の動作では、誤り訂正ビット数の測定方法として1符号あたりの誤り訂正ビット数の最大値により、該当するメモリブロックを構成するメモリセルのビット数を決定していたが、他の基準で該当するメモリブロックを構成するメモリセルのビット数を決定してもよい。
例えば、1ページあたりの誤り訂正ビット数が特定の閾値より大きな値であったの場合や、訂正不可となった符号が存在した場合に、次回から該当するメモリブロックにデータの書き込みを行ったときには、1メモリセルに記憶するビット数を削減してもよい。
また、本実施例では誤り訂正ビット数を消耗度として用いることにより、次回以降に書き込みを行う際にメモリセルに記憶させるビット数を決定していたが、実施の形態2で記載したメモリブロックへの書き込み回数と併用しても同様の効果を得ることができる。
実施の形態4.
これまで説明してきた実施の形態では、メモリセルあたりに記憶するビット数を削減したのに伴い、誤り訂正符号のフォーマットも変更した。
これまで説明してきた実施の形態では、メモリセルあたりに記憶するビット数を削減したのに伴い、誤り訂正符号のフォーマットも変更した。
本実施の形態では、メモリセルあたりに記憶するビット数が削減されても、誤り訂正符号として、同一の符号長、情報ビット数、訂正能力の符号を用いて、1ページを構成する符号の個数分だけを変える構成とする。図3の例で説明すると、本来、1メモリセルあたりに記憶するビット数が例えばKビットからMビットに変更された場合には誤り訂正符号フォーマット34を、MビットからQビットに変更された場合には誤り訂正符号フォーマット36を用いていたのに対し、如何なるビット数であろうと誤り訂正符号フォーマット32のみを用いる。
以上の構成により、フラッシュメモリコントローラ1内の誤り訂正符号化部3および誤り訂正符号化部4は、メモリセルあたりに記憶するビット数に関わらず、同一の誤り訂正符号のフォーマットで、ページフォーマット構成テーブルを構成することができる。これにより、フラッシュメモリコントローラ1の回路規模を小さくできる効果がある。
実施の形態5.
図10は、実施の形態5におけるフラッシュメモリの誤り訂正符号化復号装置の1ページあたりの誤り訂正符号の構成の一例を示したものである。本実施の形態では、1メモリセルあたりの記憶するビット数がKビットの場合とMビットの場合を例に説明する。
また、図3の例では、1メモリセルあたりに記憶する一つのビット数に対し誤り訂正符号フォーマットが一つしかなかったが、本実施の形態では、使用する誤り訂正符号としては誤り訂正能力のそれほど高くない符号、たとえば訂正ビット数が4の誤り訂正符号の誤り訂正符号フォーマット102、106と、誤り訂正能力の高い符号、たとえば訂正ビット数が16の誤り訂正符号の誤り訂正符号フォーマット104、108がある場合を例に説明する。
図10は、実施の形態5におけるフラッシュメモリの誤り訂正符号化復号装置の1ページあたりの誤り訂正符号の構成の一例を示したものである。本実施の形態では、1メモリセルあたりの記憶するビット数がKビットの場合とMビットの場合を例に説明する。
また、図3の例では、1メモリセルあたりに記憶する一つのビット数に対し誤り訂正符号フォーマットが一つしかなかったが、本実施の形態では、使用する誤り訂正符号としては誤り訂正能力のそれほど高くない符号、たとえば訂正ビット数が4の誤り訂正符号の誤り訂正符号フォーマット102、106と、誤り訂正能力の高い符号、たとえば訂正ビット数が16の誤り訂正符号の誤り訂正符号フォーマット104、108がある場合を例に説明する。
メモリセルビット管理部6は、最初はすべてのメモリブロックに関しては1メモリセルあたりKビットの情報を記憶させる。メモリセルビット管理部6は、そのとき使用する誤り訂正符号としては誤り訂正能力のそれほど高くない符号、たとえば訂正ビット数が4の誤り訂正符号の誤り訂正符号フォーマット102を用いて、符号化および復号処理を行なう。このとき、1ページあたりの誤り訂正符号の構成は、ページ構成101のようになる。
メモリが繰返し使用され、メモリブロックの消耗度が大きくなり、特定の閾値(第1の閾値)を超えたとき、メモリセルビット管理部6は、1メモリセルあたりに記憶させるビット数はKビットのままで、誤り訂正能力の高い符号、たとえば訂正ビット数が16の誤り訂正符号の誤り訂正符号フォーマット104を用いて、符号化および復号処理を行なう。このとき、1ページあたりの誤り訂正符号の構成は、ページ構成103のようになる。
次に、誤り訂正符号フォーマット104を用いた状態で、メモリの消耗度が特定の閾値(第3の閾値)を超えたとき、メモリセルビット管理部6は、1メモリセルあたりの記憶ビット数を削減して1メモリセルあたりMビット(M<K)の情報を記憶させる。そのとき使用する誤り訂正符号としては誤り訂正能力のそれほど高くない符号、たとえば訂正ビット数が4の誤り訂正符号の誤り訂正符号フォーマット106を用いて、符号化および復号処理を行なう。このとき、1ページあたりの誤り訂正符号の構成は、ページ構成105のようになる。
次に、メモリの消耗度が特定の閾値(第2の閾値)を超えたとき、メモリセルビット管理部6は、1メモリセルあたりに記憶させるビット数はMビットのままで、誤り訂正能力の高い符号、たとえば訂正ビット数が16の誤り訂正符号の誤り訂正符号フォーマット108を用いて、符号化および復号処理を行なう。このとき、1ページあたりの誤り訂正符号の構成は、ページ構成107のようになる。
第1の閾値、第2の閾値および第3の閾値、それぞれの値は、例えば、消耗度として書き込みを行う回数を用いていた場合であれば、メモリが保証している最大書き込み回数の70%としても良いし、消耗度として誤り訂正を行ったビット数の最大値を用いた場合であれば、システムが要求されているメモリに対する読み出しまたは書き込みの性能(時間)から計算して求めてもよい。
また、上記の実施の形態において、1メモリセルあたりに記憶しているビット数を削減(KからMに)したとき、誤り訂正符号の訂正能力を最初はそれほど高くない符号、たとえば訂正ビット数が4の誤り訂正符号の誤り訂正符号フォーマット106を使い、その後に誤り訂正能力の高い符号、たとえば訂正ビット数が16の誤り訂正符号の誤り訂正符号フォーマット108を用いて符号化を大きくしたが、誤り訂正符号フォーマット106を使わず、いきなり誤り訂正符号フォーマット108を用いてページ構成を変更しても同様の効果が得られる。
フラッシュメモリコントローラを上記のような構成にすることにより、最初は多くのビットをメモリに記憶させることができる。また、メモリの消耗が大きくなったときには、メモリ容量を犠牲にすることによって、フラッシュメモリとして長期間使用することができる効果がある。また、メモリがあまり消耗されていない初期段階では、大きな誤り訂正符号を用いる必要性が生じないため、メモリコントローラの消費電力を抑える効果がある。
1 フラッシュメモリコントローラ、2 フラッシュメモリ、3 誤り訂正符号化部、4 誤り訂正復号部、5 バッファメモリ、6 メモリセルビット管理部、7 不良ブロック管理部、8 書き込み回数カウント部、9 誤りビット数管理部、20 メモリ管理テーブル、21 メモリ管理テーブル、22 メモリ管理テーブル、23 メモリ管理テーブル、
31 ページ構成、32 誤り訂正符号のフォーマット、33 ページ構成、34 誤り訂正符号のフォーマット、35 ページ構成、36 誤り訂正符号のフォーマット、101 ページ構成、102 訂正ビット数が4の誤り訂正符号のフォーマット、103 ページ構成、104 訂正ビット数が16の誤り訂正符号のフォーマット、105 ページ構成、106 訂正ビット数が4の誤り訂正符号のフォーマット、107 ページ構成、108 訂正ビット数が16の誤り訂正符号のフォーマット
31 ページ構成、32 誤り訂正符号のフォーマット、33 ページ構成、34 誤り訂正符号のフォーマット、35 ページ構成、36 誤り訂正符号のフォーマット、101 ページ構成、102 訂正ビット数が4の誤り訂正符号のフォーマット、103 ページ構成、104 訂正ビット数が16の誤り訂正符号のフォーマット、105 ページ構成、106 訂正ビット数が4の誤り訂正符号のフォーマット、107 ページ構成、108 訂正ビット数が16の誤り訂正符号のフォーマット
Claims (6)
- 複数のメモリセルを有するメモリブロックを備えたフラッシュメモリと、
前記フラッシュメモリに書き込むデータに冗長ビットを付加して誤り訂正符号化処理を行う誤り訂正符号化部と、
前記メモリブロックのメモリの消耗度を測定し、前記メモリの消耗度が予め設定された第1の閾値を超えた場合に、前記メモリセルのマルチレベルセルとしての使用を維持するとともに、前記メモリセルあたりに記憶するビット数をKからM(K>M、K及びMは2以上の自然数)に減少させるメモリセルビット管理部とを備えることを特徴とする誤り訂正符号化装置。 - 前記フラッシュメモリから読み出したデータに対して誤りがある場合に訂正処理を行う誤り訂正復号部を備え、
前記メモリセルビット管理部は、前記メモリの消耗度が前記第1の閾値より消耗度が大きい第2の閾値を超えた場合には、前記メモリセルをシングルレベルセルに設定することを特徴とする請求項1に記載の誤り訂正符号化装置。 - 前記メモリの消耗度は、前記メモリブロックに、書き込みを行った回数であることを特徴とする請求項1または2に記載の誤り訂正符号化装置。
- 前記メモリの消耗度は、誤り訂正を行ったときに検出された誤りビット数であることを特徴とする請求項1または2に記載の誤り訂正符号化装置。
- 前記メモリブロックの前記メモリセルあたりの1つのビット数に対し、複数の誤り訂正能力が違う誤り訂正フォーマットを有し、
前記誤り訂正フォーマットの切り換えを行った後に、前記メモリの消耗度が予め設定された第3の閾値を超えた場合、前記メモリブロックのメモリセルあたりのビット数を削減することを特徴とする請求項1から4のいずれか一項に記載の誤り訂正符号化装置。 - 複数のメモリセルを含むメモリブロックを有し、1つの前記メモリセルに記憶可能な情報のビット数が変更可能なフラッシュメモリに書き込むデータを受け付けるステップと、
前記データが書き込まれる前記フラッシュメモリのメモリブロック毎に消耗度を判定し、前記消耗度が予め設定された閾値を超えた場合に前記メモリセルに記憶させる情報のビット数をKからM(K>M、K及びMは2以上の自然数)に減少させるステップと、
前記メモリセルに記憶させる情報のビット数に対応したフォーマットを使用して、前記データを誤り訂正符号化するステップと、
前記誤り訂正符号化された前記データを前記フラッシュメモリに書き込むステップとを備えたことを特徴とするフラッシュメモリの誤り訂正符号化方法
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014011252A JP2015138498A (ja) | 2014-01-24 | 2014-01-24 | フラッシュメモリの誤り訂正符号化装置および方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014011252A JP2015138498A (ja) | 2014-01-24 | 2014-01-24 | フラッシュメモリの誤り訂正符号化装置および方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015138498A true JP2015138498A (ja) | 2015-07-30 |
Family
ID=53769422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014011252A Pending JP2015138498A (ja) | 2014-01-24 | 2014-01-24 | フラッシュメモリの誤り訂正符号化装置および方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2015138498A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022550620A (ja) * | 2020-02-14 | 2022-12-02 | ウェスタン デジタル テクノロジーズ インコーポレーテッド | 耐久性を高めた記憶デバイス |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09288896A (ja) * | 1996-04-19 | 1997-11-04 | Toshiba Corp | 記憶システム |
JP2008123330A (ja) * | 2006-11-14 | 2008-05-29 | Toshiba Corp | 不揮発性半導体記憶装置 |
JP2009048680A (ja) * | 2007-08-15 | 2009-03-05 | Hitachi Ulsi Systems Co Ltd | 記憶装置 |
JP2011514595A (ja) * | 2008-02-29 | 2011-05-06 | サムスン エレクトロニクス カンパニー リミテッド | メモリセルに格納されるデータのビット数を決定する装置 |
US20120240012A1 (en) * | 2010-07-07 | 2012-09-20 | Stec, Inc. | Apparatus and method for multi-mode operation of a flash memory device |
JP2013542533A (ja) * | 2010-10-27 | 2013-11-21 | エルエスアイ コーポレーション | フラッシュメモリベースのデータ記憶のための順応ecc技術 |
-
2014
- 2014-01-24 JP JP2014011252A patent/JP2015138498A/ja active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09288896A (ja) * | 1996-04-19 | 1997-11-04 | Toshiba Corp | 記憶システム |
JP2008123330A (ja) * | 2006-11-14 | 2008-05-29 | Toshiba Corp | 不揮発性半導体記憶装置 |
JP2009048680A (ja) * | 2007-08-15 | 2009-03-05 | Hitachi Ulsi Systems Co Ltd | 記憶装置 |
JP2011514595A (ja) * | 2008-02-29 | 2011-05-06 | サムスン エレクトロニクス カンパニー リミテッド | メモリセルに格納されるデータのビット数を決定する装置 |
US20120240012A1 (en) * | 2010-07-07 | 2012-09-20 | Stec, Inc. | Apparatus and method for multi-mode operation of a flash memory device |
JP2013542533A (ja) * | 2010-10-27 | 2013-11-21 | エルエスアイ コーポレーション | フラッシュメモリベースのデータ記憶のための順応ecc技術 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022550620A (ja) * | 2020-02-14 | 2022-12-02 | ウェスタン デジタル テクノロジーズ インコーポレーテッド | 耐久性を高めた記憶デバイス |
JP7222148B2 (ja) | 2020-02-14 | 2023-02-14 | ウェスタン デジタル テクノロジーズ インコーポレーテッド | 耐久性を高めた記憶デバイス |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12034459B2 (en) | Memory controller, memory system, and memory control method | |
US11562787B2 (en) | Multi-state programming for memory devices | |
TWI455144B (zh) | 使用於快閃記憶體的控制方法與控制器 | |
US9583217B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US10191840B2 (en) | Mapping table updating method, memory control circuit unit and memory storage device | |
JP6960877B2 (ja) | メモリシステム | |
US20120254686A1 (en) | Non-volatile semiconductor memory devices and error correction methods | |
US20100251075A1 (en) | Memory controller and semiconductor memory apparatus | |
US11210163B2 (en) | Memory system and control method | |
US9274706B2 (en) | Data management method, memory control circuit unit and memory storage apparatus | |
US10756764B2 (en) | Memory system and control method | |
US20120066436A1 (en) | Method for performing data shaping, and associated memory device and controller thereof | |
US9304907B2 (en) | Data management method, memory control circuit unit and memory storage apparatus | |
CN102394114A (zh) | 具有自适应纠错能力的bch码纠错方法 | |
JP2020154728A (ja) | メモリシステム及びその制御方法 | |
US10546640B2 (en) | Data protecting method and memory storage device | |
JP2011141914A (ja) | Nand型フラッシュメモリの入出力制御方法及び装置 | |
JP2015138498A (ja) | フラッシュメモリの誤り訂正符号化装置および方法 | |
TWI537971B (zh) | Storage device and access method thereof | |
US20160071597A1 (en) | Storage device, memory controller and memory control method | |
US9792053B2 (en) | Controller for nonvolatile semiconductor memory | |
US20160034343A1 (en) | Data storing method, memory control circuit unit and memory storage device | |
CN117409845A (zh) | 分组管理方法、存储器存储装置及存储器控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160930 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170412 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170509 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20171107 |