(57)【特許請求の範囲】
【請求項１】
複数の不揮発性メモリセルを有する不揮発性メモリにデータを書き込むときには、書き込むべきデータを対数尤度率を用いた演算により復号可能な所定の符号に符号化すると共に該符号化された符号化データが前記不揮発性メモリに記憶されるよう前記不揮発性メモリを制御し、前記不揮発性メモリからデータを読み出すときには、前記不揮発性メモリから予め定められた所定サイズの符号化データが読み出されるよう前記不揮発性メモリを制御すると共に前記対数尤度率を用いた演算により前記符号化データを復号するメモリコントローラであって、
前記不揮発性メモリから予め定められた所定サイズの符号化データが読み出されたときには、前記読み出された所定サイズのデータの全ビット数に対する前記読み出された所定のサイズのデータのうちビット反転エラーが生じているビット数の割合であるビットエラー率を算出するビットエラー率算出部と、
前記算出されたビットエラー率と、前記読み出された前記所定サイズのデータのうちの１ビットが記憶されている前記不揮発性メモリセルであるターゲットセルのデータと、前記ターゲットセルの所定範囲の前記不揮発性メモリセルのデータと、に基づいて前記ターゲットセルにビットエラーが生じる確率の推定値である推定セルエラー確率を設定する推定セルエラー確率設定処理を、前記読み出された前記所定サイズのデータの全ビットに対して実行する推定セルエラー確率設定部と、
前記設定された推定セルエラー確率を用いて前記読み出された前記所定サイズのデータの全ビットについて前記対数尤度率を設定する対数尤度率設定部と、
を備えるメモリコントローラ。
【請求項２】
請求項１記載のメモリコントローラであって、
前記推定セルエラー確率設定処理は、前記算出されたビットエラー率を用いて前記不揮発性メモリにデータを読み書きせずに保持を継続している時間の推定値である推定リテンション時間を設定し、該設定した推定リテンション時間と、前記ターゲットセルのデータと、前記ターゲットセルの前記所定範囲の不揮発性メモリセルのデータと、を用いて前記推定セルエラー確率を設定する処理である
メモリコントローラ。
【請求項３】
請求項２記載のメモリコントローラであって、
前記ビットエラー率と前記推定リテンション時間との関係として予め定められた第１テーブルを記憶する第１テーブル記憶部と、
前記推定リテンション時間と、前記ターゲットセルのデータと、前記ターゲットセルの前記所定範囲の不揮発性メモリセルのデータと、前記推定セルエラー確率との関係として予め定められた第２テーブルを記憶する第２テーブル記憶部と、
を備え、
前記推定セルエラー確率設定処理は、前記算出されたビットエラー率と前記第１テーブルとを用いて前記推定リテンション時間を設定し、前記設定した推定リテンション時間と、前記ターゲットセルのデータと、前記ターゲットセルの前記所定範囲の不揮発性メモリセルのデータと、前記第２テーブルと、を用いて前記推定セルエラー確率を設定する処理である
メモリコントローラ。
【請求項４】
請求項３記載のメモリコントローラであって、
前記不揮発性メモリに記憶されているデータを消去した回数である書き換え回数を計数する書き換え回数計数部を備え、
前記推定セルエラー確率設定処理は、前記計数された書き換え回数と、前記設定した推定リテンション時間と、前記ターゲットセルのデータと、前記ターゲットセルの前記所定範囲の不揮発性メモリセルのデータと、を用いて前記推定セルエラー確率を設定する処理である
メモリコントローラ。
【請求項５】
請求項４記載のメモリコントローラであって、
前記第２テーブルは、前記書き換え回数と、前記推定リテンション時間と、前記ターゲットセルのデータと、前記ターゲットセルの前記所定範囲の不揮発性メモリセルのデータと、前記推定セルエラー確率との関係として予め定められたテーブルであり、
前記推定セルエラー確率設定処理は、前記計数された書き換え回数と、前記設定した推定リテンション時間と、前記ターゲットセルのデータと、前記ターゲットセルの前記所定範囲の不揮発性メモリセルのデータと、前記設定した推定リテンション時間と、前記第２テーブルと、を用いて前記推定セルエラー確率を設定する処理である
メモリコントローラ。
【請求項６】
請求項４または５記載のメモリコントローラであって、
前記第１テーブルは、前記ビットエラー率と前記推定リテンション時間と前記書き換え回数との関係として予め定められたテーブルであり、
前記推定セルエラー確率設定処理は、前記算出されたビットエラー率と、前記書き換え回数と、前記第１テーブルと、を用いて前記推定リテンション時間を設定する処理である
メモリコントローラ。
【請求項７】
請求項１ないし６のいずれか１つの請求項に記載のメモリコントローラであって、
前記ビットエラー率算出部は、前記不揮発性メモリにデータを書き込むときには、書き込むべきデータを前記所定の符号に符号化する前に前記書き込むべきデータのうち前記所定サイズのデータにおける前記不揮発性メモリが記憶しているデータのうち”１”または”０”のデータのビット数を符号化前ビット数として記憶しておき、前記不揮発性メモリから前記所定サイズのデータが読み出されたときには、前記読み出されたデータの”１”または”０”のデータのビット数と前記符号化前ビット数を用いて前記ビットエラー率を算出する
メモリコントローラ。
【請求項８】
請求項１ないし７のいずれか１つの請求項に記載のメモリコントローラであって、
前記不揮発性メモリは、フラッシュメモリであり、
前記所定サイズは、前記フラッシュメモリの１ページ分のデータである
メモリコントローラ。
【請求項９】
請求項８記載のメモリコントローラであって、
前記不揮発性メモリは、１つの前記不揮発性メモリセルに２ビットのデータを記憶可能な前記不揮発性メモリセルを有するＮＡＮＤ型フラッシュメモリであり、
前記ビットエラー率算出部は、前記不揮発性メモリセルが保持するデータのうち上位ページを閾値電圧の低いほうから１００１、下位ページを閾値電圧の低いほうから１１００と定義したときに前記下位ページの１が０になるエラーを前記ビットエラー率として算出する処理である
メモリコントローラ。
【請求項１０】
請求項１ないし９のいずれか１つの請求項に記載のメモリコントローラであって、
前期所定の符号は、低密度パリティ検査符号である
メモリコントローラ。
【請求項１１】
データを記憶可能なデータ記憶装置であって、
請求項１ないし１０のいずれか１つの請求項に記載のメモリコントローラと、
前記不揮発性メモリと、
を備えるデータ記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラおよびデータ記憶装置に関し、詳しくは、複数の不揮発性メモリセルを有する不揮発性メモリにデータを書き込むときには、書き込むべきデータを対数尤度率を用いた演算により復号可能な所定の符号に符号化すると共に該符号化された符号化データが前記不揮発性メモリに記憶されるよう前記不揮発性メモリを制御し、前記不揮発性メモリからデータを読み出すときには、前記不揮発性メモリから予め定められた所定サイズの符号化データが読み出されるよう前記不揮発性メモリを制御すると共に前記対数尤度率を用いた確率に基づく反復処理により前記符号化データを復号するメモリコントローラおよびこれを備えるデータ記憶装置に関する。
【背景技術】
【０００２】
従来、この種のメモリコントローラとしては、フラッシュメモリから出力されるデータに対して誤り訂正を行なってホスト装置に出力するものが提案されている（例えば、非特許文献１参照）。このコントローラでは、データの誤り訂正を行なうことにより、より信頼性の高いデータを出力することができる。こうした誤り訂正に用いられる誤り訂正符号（Error Correcting Code)としては、ＬＤＰＣ（Low Density Prity Check）符号が提案されている（例えば、非特許文献２参照）。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】「これだけは知っておきたいＮＡＮＤフラッシュ・メモリの基礎」，半導体ストレージ２０１２，日経ＢＰ社，２０１１年７月２９日，ｐ．６８−ｐ．７９
【非特許文献２】「信号処理技術によりＳＳＤの信頼性を大幅に向上」，半導体ストレージ２０１２，日経ＢＰ社，２０１１年７月２９日，ｐ．５８−ｐ．６７
【発明の概要】
【０００４】
一般に、上述のメモリコントローラにおいて、ＥＣＣとしてＬＤＰＣ符号を用いる場合、符号化された符号化データを復号する手法として、訂正能力をあげるために、sum-product復号法など、軟値であるデータの確からしさを示す対数尤度比（Log Likelihood Ratio，ＬＬＲ）を用いて再帰的な繰り返し演算を行なう手法が用いられている。このとき、縦軸にフラッシュメモリセルの数、横軸に閾値電圧をとったグラフにおける閾値電圧の分布を予め想定しておき、想定した閾値電圧の分布とフラッシュメモリからデータを読み出す際にワード線に印加する電圧である参照電圧とを用いてＬＬＲの初期値を設定している。しかしながら、想定した閾値電圧の分布が実際の閾値電圧の分布とかけ離れたものになると、繰り返し演算の繰り返し回数が増大したり、誤訂正するなど不都合が生じる場合がある。こうした不都合を極力回避する手法として、参照電圧の数を増やして参照電圧毎にフラッシュメモリから読み出したデータを用いる手法が考えられるが、この手法では、フラッシュメモリからのデータの読み出し回数が多くなったり、演算処理に費やす時間が増大してしまう。特に、１つのフラッシュメモリセルに２ビット以上のデータを記憶する多ビットセルにおいては、参照電圧の増大が顕著となり、処理時間が増大してしまう。したがって、誤訂正を抑制しながら誤り訂正能力を向上させつつ、処理時間の増大を抑制する方法が望まれている。
【０００５】
本発明のメモリコントローラおよびデータ記憶装置は、誤り訂正能力を向上させつつ、処理時間の増大を抑制することを主目的とする。
【０００６】
本発明のメモリコントローラおよびデータ記憶装置は、上述の主目的を達成するために以下の手段を採った。
【０００７】
本発明のメモリコントローラは、
複数の不揮発性メモリセルを有する不揮発性メモリにデータを書き込むときには、書き込むべきデータを対数尤度率を用いた演算により復号可能な所定の符号に符号化すると共に該符号化された符号化データが前記不揮発性メモリに記憶されるよう前記不揮発性メモリを制御し、前記不揮発性メモリからデータを読み出すときには、前記不揮発性メモリから予め定められた所定サイズの符号化データが読み出されるよう前記不揮発性メモリを制御すると共に前記対数尤度率を用いた演算により前記符号化データを復号するメモリコントローラであって、
前記不揮発性メモリから予め定められた所定サイズの符号化データが読み出されたときには、前記読み出された所定サイズのデータの全ビット数に対する前記読み出された所定のサイズのデータのうちビット反転エラーが生じているビット数の割合であるビットエラー率を算出するビットエラー率算出部と、
前記算出されたビットエラー率と、前記読み出された前記所定サイズのデータのうちの１ビットが記憶されている前記不揮発性メモリセルであるターゲットセルのデータと、前記ターゲットセルの前記所定範囲の不揮発性メモリセルのデータと、に基づいてて前記ターゲットセルにビットエラーが生じる確率の推定値である推定セルエラー率を設定する推定セルエラー確率設定処理を、前記読み出された前記所定サイズのデータの全ビットに対して実行する推定セルエラー確率設定部と、
前記設定された推定セルエラー確率を用いて前記読み出された前記所定サイズのデータの全ビットについて前記対数尤度率を設定する対数尤度率設定部と、
を備えることを要旨とする。
【０００８】
この本発明のメモリコントローラでは、不揮発性メモリからデータを読み出すときには、不揮発性メモリから予め定められた所定サイズの符号化データが読み出されるよう不揮発性メモリを制御する。不揮発性メモリから予め定められた所定サイズの符号化データが読み出されたときには、読み出された所定サイズのデータの全ビット数に対する読み出された所定のサイズのデータのうちビット反転エラーが生じているビット数の割合であるビットエラー率を算出し、算出されたビットエラー率と、読み出された所定サイズのデータのうちの１ビットが記憶されている不揮発性メモリセルであるターゲットセルのデータと、ターゲットセルの所定範囲の不揮発性メモリセルのデータと、に基づいてターゲットセルにビットエラーが生じる確率の推定値である推定セルエラー確率を設定し、読み出された所定サイズのデータの全ビットに対して実行し、設定された推定セルエラー確率を用いて読み出された所定サイズのデータの全ビットについて対数尤度率を設定し、こうして設定した対数尤度率を用いた確率に基づく反復処理により符号化データを復号する。不揮発性メモリセルのデータは、そのメモリセルの周囲にある他のメモリセルがどのようなデータを記憶しているかによって影響を受けるため、周囲のメモリセルのデータにより着目するメモリセルのデータにビットエラーが生じる確率であるセルエラー率が変動する。したがって、算出されたビットエラー率と、ターゲットセルのデータと、ターゲットセルの所定範囲の不揮発性メモリセルのデータと、に基づいて推定セルエラー確率を設定し、設定した推定セルエラー確率を用いて読み出された所定サイズのデータの全ビットについて対数尤度率を設定することにより、より実際の不揮発性メモリセルの状態を反映した対数尤度率を設定することができるから、予め想定した閾値電圧の分布を用いて対数尤度率を設定するものに比して、訂正能力の向上を図ることができる。また、参照電圧の数を増やして参照電圧毎にフラッシュメモリからデータを読み出すものに比して、データの読み出し回数の増大を抑制することができ、処理時間の増大を抑制することができる。これにより、誤り訂正能力を向上させつつ、処理時間の増大を抑制することができる。
【０００９】
こうした本発明のメモリコントローラにおいて、前記推定セルエラー確率設定処理は、前記算出されたビットエラー率を用いて前記不揮発性メモリにデータを読み書きせずに保持を継続している時間の推定値である推定リテンション時間を設定し、該設定した推定リテンション時間と、前記ターゲットセルのデータと、前記ターゲットセルの前記所定範囲の不揮発性メモリセルのデータと、を用いて前記推定セルエラー確率を設定する処理であるものとすることもできる。不揮発性メモリでは、データを読み書きせずに保持を継続している時間が長いほどビットエラー率が高くなる傾向となる。したがって、不揮発性メモリにデータを読み書きせずに保持を継続している時間の推定値である推定リテンション時間を設定し、設定した推定リテンション時間と、ターゲットセルのデータと、ターゲットセルの所定範囲の不揮発性メモリセルのデータと、を用いて推定セルエラー確率を設定することにより、より精度よく推定セルエラー確率を設定することができる。これにより、対数尤度率をより精度よく設定することができ、誤り訂正能力をより向上させることができる。この場合において、前記ビットエラー率と前記推定リテンション時間との関係として予め定められた第１テーブルを記憶する第１テーブル記憶部と、前記推定リテンション時間と、前記ターゲットセルのデータと、前記ターゲットセルの前記所定範囲の不揮発性メモリセルのデータと、前記推定セルエラー確率との関係として予め定められた第２テーブルを記憶する第２テーブル記憶部と、を備え、前記推定セルエラー確率設定処理は、前記算出されたビットエラー率と前記第１テーブルとを用いて前記推定リテンション時間を設定し、前記設定した推定リテンション時間と、前記ターゲットセルのデータと、前記ターゲットセルの前記所定範囲の不揮発性メモリセルのデータと、前記第２テーブルと、を用いて前記推定セルエラー確率を設定する処理であるものとすることもできる。
【００１０】
設定した推定リテンション時間と、ターゲットセルのデータと、ターゲットセルの所定範囲の不揮発性メモリセルのデータと、を用いて推定セルエラー確率を設定する態様の本発明のメモリコントローラにおいて、前記不揮発性メモリに記憶されているデータを消去した回数である書き換え回数を計数する書き換え回数計数部を備え、前記推定セルエラー確率設定処理は、前記計数された書き換え回数と、前記設定した推定リテンション時間と、前記ターゲットセルのデータと、前記ターゲットセルの前記所定範囲の不揮発性メモリセルのデータと、を用いて前記推定セルエラー確率を設定する処理であるものとすることもできる。不揮発性メモリでは、書き換え回数が多くなるほどあるメモリセルにビットエラーが生じる確率が高くなると考えられる。したがって、書き換え回数を計数し、計数された書き換え回数と、設定した推定リテンション時間と、ターゲットセルのデータと、ターゲットセルの所定範囲の不揮発性メモリセルのデータと、を用いて推定セルエラー確率を設定することにより、より精度よく推定セルエラー確率を設定することができる。これにより、対数尤度率をより精度よく設定することができ、誤り訂正能力をより向上させることができる。この場合において、前記第２テーブルは、前記書き換え回数と、前記推定リテンション時間と、前記ターゲットセルのデータと、前記ターゲットセルの前記所定範囲の不揮発性メモリセルのデータと、前記推定セルエラー確率との関係として予め定められたテーブルであり、前記推定セルエラー確率設定処理は、前記計数された書き換え回数と、前記設定した推定リテンション時間と、前記ターゲットセルのデータと、前記ターゲットセルの前記所定範囲の不揮発性メモリセルのデータと、前記第２テーブルと、を用いて前記推定セルエラー確率を設定する処理であるものとすることもできるし、前記第１テーブルは、前記ビットエラー率と前記推定リテンション時間と前記書き換え回数との関係として予め定められたテーブルであり、前記推定セルエラー確率設定処理は、前記算出されたビットエラー率と、前記書き換え回数と、前記第１テーブルと、を用いて前記推定リテンション時間を設定する処理であるものとすることもできる。
【００１１】
また、本発明のメモリコントローラにおいて、前記ビットエラー率算出部は、前記不揮発性メモリにデータを書き込むときには、書き込むべきデータを前記所定の符号に符号化する前に前記書き込むべきデータのうち前記所定サイズのデータにおける前記不揮発性メモリが記憶しているデータのうち”１”または”０”のデータのビット数を符号化前ビット数として記憶しておき、前記不揮発性メモリから前記所定サイズのデータが読み出されたときには、前記読み出されたデータの”１”または”０”のデータのビット数と前記符号化前ビット数を用いて前記ビットエラー率を算出するものとすることもできる。
【００１２】
さらに、本発明のメモリコントローラにおいて、前記不揮発性メモリは、フラッシュメモリであり、前記所定サイズは、前記フラッシュメモリの１ページ分のデータであるものとすることもできる。この場合において、前記不揮発性メモリは、１つの不揮発性メモリセルに２ビットのデータを記憶するよう制御されるＮＡＮＤ型フラッシュメモリであり、前記ビットエラー率算出部は、前記不揮発性メモリセルが保持するデータのうち上位ページを閾値電圧の低いほうから１００１、下位ページを閾値電圧の低いほうから１１００と定義したときに前記下位ページの１が０になるエラーを前記ビットエラー率として算出するものとすることもできるし、前記不揮発性メモリは、１つの不揮発性メモリセルに２ビットのデータを記憶するよう制御されるＮＡＮＤ型フラッシュメモリであり、前記ビットエラー率算出部は、前記不揮発性メモリセルが保持するデータのうち上位ページを閾値電圧の低いほうから１００１、下位ページを閾値電圧の低いほうから１１００と定義したときに前記下位ページの０が１になるエラーを前記ビットエラー率として算出するものとすることもできる。
【００１３】
そして、本発明のメモリコントローラにおいて、前記所定の符号は、低密度パリティ検査符号であるものとすることもできる。
【００１４】
本発明のデータ記憶装置は、
データを記憶可能な記憶装置であって、
上述したいずれかの態様の本発明のメモリコントローラ、即ち、基本的には、複数の不揮発性メモリセルを有する不揮発性メモリにデータを書き込むときには、書き込むべきデータを対数尤度率を用いた演算により復号可能な所定の符号に符号化すると共に該符号化された符号化データが前記不揮発性メモリに記憶されるよう前記不揮発性メモリを制御し、前記不揮発性メモリからデータを読み出すときには、前記不揮発性メモリから予め定められた所定サイズの符号化データが読み出されるよう前記不揮発性メモリを制御すると共に前記対数尤度率を用いた演算により前記符号化データを復号するメモリコントローラであって、
前記不揮発性メモリから予め定められた所定サイズの符号化データが読み出されたときには、前記読み出された所定サイズのデータの全ビット数に対する前記読み出された所定のサイズのデータのうちビット反転エラーが生じているビット数の割合であるビットエラー率を算出するビットエラー率算出部と、前記算出されたビットエラー率と、前記読み出された前記所定サイズのデータのうちの１ビットが記憶されている前記不揮発性メモリセルであるターゲットセルのデータと、前記ターゲットセルの前記所定範囲の不揮発性メモリセルのデータと、に基づいてて前記ターゲットセルにビットエラーが生じる確率の推定値である推定セルエラー率を設定する推定セルエラー確率設定処理を、前記読み出された前記所定サイズのデータの全ビットに対して実行する推定セルエラー確率設定部と、前記設定された推定セルエラー確率を用いて前記読み出された前記所定サイズのデータの全ビットについて前記対数尤度率を設定する対数尤度率設定部と、を備えるメモリコントローラと、
前記不揮発性メモリと、
を備えることを要旨とする。
【００１５】
この本発明のデータ記憶装置では、上述したいずれかの態様の本発明のメモリコントローラを備えているから、本発明のメモリコントローラが奏する効果、例えば、誤り訂正能力を向上させつつ、処理時間の増大を抑制することができる効果などと同様の効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施例としてのメモリコントローラ３０が搭載され、パーソナルコンピュータなどのホスト装置１０からのデータを記憶するＳＳＤ（Solid State Drive）２０の構成の概略を示す説明図である。
【図２】フラッシュメモリセルアレイ２４の構成の概略を示す説明図である。
【図３】フラッシュメモリセル２４ａに記憶するデータを説明するための説明図である。
【図４】ホスト装置１０からのデータをフラッシュメモリ２２に書き込む際にメモリコントローラ３０において実行される書き込み処理の一例を示すフローチャートである。
【図５】ＬＬＲ設定ユニット３４により実行される上位ページＬＬＲｕ，下位ページＬＬＲｌを設定するためのＬＬＲ設定処理の一例を示すフローチャートである。
【図６】推定リテンション時間設定テーブル４０ａの一例を示す説明図である。
【図７】ＥＰテーブル４０ｃの一例を示す説明図である。
【図８】セルエラー率ＣＥＲｌ，ＣＥＲｕの設定の様子を説明するための説明図である。
【図９】レフトセルのデータが”１１”，”０１”，”００”，”１０”のときのセルエラー率ＣＥＲ、ライトセルのデータが”１１”，”０１”，”００”，”１０”のときのセルエラー率ＣＥＲ、アッパーセルのデータが”１１”，”０１”，”００”，”１０”のときのセルエラー率ＣＥＲをｂ１〜ｂ１６としたときの図７に例示したＥＰテーブル４０ｃの一例を示す説明図である。
【発明を実施するための形態】
【００１７】
次に、本発明を実施するための形態を実施例を用いて説明する。
【００１８】
図１は、本発明の実施例としてのメモリコントローラ３０が搭載され、パーソナルコンピュータなどのホスト装置１０からのデータを記憶するＳＳＤ（Solid State Drive）２０の構成の概略を示す説明図である。ＳＳＤ２０は、各種アプリケーションプログラムや各種データを記憶する大容量のデータ記憶装置として構成されており、ＮＡＮＤ型フラッシュメモリとして構成されたフラッシュメモリ２２と、フラッシュメモリ２２を制御するメモリコントローラ３０と、から構成されている。
【００１９】
フラッシュメモリ２２は、図２に示すように、フローティングゲートへの電子注入やフローティングゲートからの電子の引き抜きにより閾値電圧が変化するフラッシュメモリセル２４ａを複数有するフラッシュメモリセルアレイ２４を備えるＮＡＮＤ型フラッシュメモリとして構成されており、フラッシュメモリセルアレイ２４の他にロウデコーダ，カラムデコーダ，センスアンプなど（いずれも図示せず）を備える。フラッシュメモリ２２では、ページ単位（実施例では、８Ｋバイトなど）でデータを書き込んだり読み出したりして、複数ページからなるブロック単位（実施例では、１Ｍバイトなど）で記憶しているデータを消去する。フラッシュメモリ２２は、フラッシュメモリセル２４ａへ、図３に例示するように、閾値電圧の低い順に”１１”，”０１”，”００”，”１０”の２ビットのデータを記憶する多値メモリとして動作するよう制御される。実施例では、前述した順番に記載したときに左側のビット列”１００１”を上位ページとして、右側のビット列”１１００”下位ページとする。
【００２０】
メモリコントローラ３０は、トランジスタ等の複数の論理素子からなる論理回路として構成されており、ホスト装置１０から１ページずつデータを入力して入力した１ページ分のデータについて下位ページのデータの”１”の数を計数すると共に計数した結果を入力データに付加して出力するＮ１カウンタ３１と、Ｎ１カウンタ３１からのデータを検査行列Ｈを用いて低密度パリティ検査（Low Density Prity Check、ＬＤＰＣ）符号に符号化して符号化した符号化データがフラッシュメモリ２２に記憶されるようフラッシュメモリ２２を制御するＬＤＰＣエンコーダ３２と、フラッシュメモリ２２から１ページ分のデータが読み出されるようフラッシュメモリ２２を制御すると共に上位ページの対数尤度比（Log Likelihood Ratio，ＬＬＲ）である上位ページＬＬＲｕと下位ページのＬＬＲである下位ページＬＬＲｌを設定するＬＬＲ設定ユニット３４と、設定した上位ページＬＬＲｕ，下位ページＬＬＲｌを用いてフラッシュメモリ２２から読み出されたデータに対してエラー訂正を行なうと共に復号してホスト装置１０に出力するＬＤＰＣデコーダ３６と、フラッシュメモリ２２の各ページのデータの消去回数である書き換え回数Ｗ／Ｅを計数するＷ／Ｅカウンタ３８と、ＬＬＲ設定ユニット３４における上位ページＬＬＲｕ，下位ページＬＬＲｌの設定に用いる推定リテンション時間（Ｔｒｅｔ）設定テーブル４０ａとＷ／Ｅカウンタ３８で計数された書き換え回数Ｗ／Ｅを記憶するＷ／Ｅテーブル４０ｂとＥＰテーブル４０ｃを記憶する記憶ユニット４０と、を備える。ＬＬＲ設定ユニット３４における上位ページＬＬＲｕ，下位ページＬＬＲｌの設定処理や記憶ユニット４０に記憶されている推定リテンション時間設定テーブル４０ａ，ＥＰテーブル４０ｃの詳細については後述する。
【００２１】
ＬＤＰＣデコーダ３６は、周知のsum-product復号法により設定した上位ページＬＬＲｕ，下位ページＬＬＲｌを用いてフラッシュメモリ２２から読み出されたデータに対してエラー訂正を行なうと共に復号してホスト装置１０に出力する。sum-product復号法では、上位ページＬＬＲｕ，下位ページＬＬＲｌを用いて一時推定語ｃを算出し（ステップＳ１）、データを符号化する際に用いた検査行列Ｈを用いて下記の式（１）が成立するか否かを調べ（ステップＳ２）、式（１）が成立する場合には一時推定語ｃを復号したデータとして出力し、式（１）が成立しない場合には、上位ページＬＬＲｕ，下位ページＬＬＲｌを更新して（ステップＳ３）予め設定された繰り返し回数が経過するか式（１）が成立するまでステップＳ１〜Ｓ３の処理を繰り返す。こうしたsum-product復号法は周知であるので、より詳細な説明については省略する。
【００２２】
c・HT=0 (1)
【００２３】
続いて、こうして構成されたＳＳＤ２０のメモリコントローラ３０において、ホスト装置１０からのデータをフラッシュメモリ２２に書き込んだり、フラッシュメモリ２２からデータを読み出してホスト装置１０に出力する際の動作について説明する。
【００２４】
図４は、ホスト装置１０からのデータをフラッシュメモリ２２に書き込む際にメモリコントローラ３０において実行される書き込み処理の一例を示すフローチャートである。ホスト装置１０からフラッシュメモリ２２へのデータの書き込みを要求する書き込み要求信号が入力されると、書き込み要求信号を入力されたメモリコントローラ３０のＮ１カウンタ３１は、ホスト装置１０から１ページずつデータを入力し（ステップＳ１００）、１ページ分の入力データについて下位ページのデータの”１”のビット数Ｎｉを計数し（ステップＳ１１０）、計数した結果を入力データに付加してＬＤＰＣエンコーダ３２に出力する。Ｎ１カウンタ３１から出力されたデータが入力されたＬＤＰＣエンコーダ３２は、入力されたデータをＬＤＰＣ符号に符号化し（ステップＳ１２０）、符号化した符号化データがフラッシュメモリ２２に書き込まれるようフラッシュメモリ２２を制御する（ステップＳ１３０）。こうした処理により、ホスト装置１０からの入力データに下位ページの”１”の個数を計数した計数結果を付加したデータがＬＤＰＣ符号に符号化されてフラッシュメモリ２２に書き込まれる。
【００２５】
続いて、フラッシュメモリ２２からデータを読み出してホスト装置１０に出力する際の動作について説明する。ホスト装置１０からメモリコントローラ３０へフラッシュメモリ２２へのデータの読み出しを要求する読み出し要求信号が入力されると、読み出し要求信号が入力されたフラッシュメモリ２２のＬＬＲ設定ユニット３４は、フラッシュメモリ２２から１ページ分のデータが読み出されるようフラッシュメモリ２２を制御すると共に上位ページＬＬＲｕ，下位ページＬＬＲｌを設定し、フラッシュメモリ２２から読み出したデータと上位ページＬＬＲｕ，下位ページＬＬＲｌとをＬＤＰＣデコーダ３６に出力する。フラッシュメモリ２２から読み出したデータと上位ページＬＬＲｕ，下位ページＬＬＲｌの初期値とを入力されたＬＤＰＣデコーダ３６は、上位ページＬＬＲｕ，下位ページＬＬＲｌを用いたsum-product復号法により読み出されたデータに対してエラー訂正を行なうと共に復号して、復号したデータをホスト装置１０に出力する。こうした処理により、フラッシュメモリ２２からのデータに対してエラー訂正を行なうことができ、データの信頼性を向上させることができる。
【００２６】
ここで、ＬＬＲ設定ユニット３４における上位ページＬＬＲｕ，下位ページＬＬＲｌの設定処理の詳細について説明する。図５は、ＬＬＲ設定ユニット３４により実行される上位ページＬＬＲｕ，下位ページＬＬＲｌを設定するためのＬＬＲ設定処理の一例を示すフローチャートである。フラッシュメモリ２２から１ページ分のデータが読み出されると、ＬＬＲ設定ユニット３４は、読み出したデータの下位ページの”１”のビット数Ｎ１ｍを計数し（ステップＳ２００）、下位ページの”１”のビット数Ｎ１ｍと符号化前のデータに含まれていた”１”のビット数Ｎｉと１ページ分のデータのビット数Ｎｐとを用いて式（２）によりフラッシュメモリ２２から１ページ分のデータのビットエラー率ＢＥＲを算出する（ステップＳ２１０）。ここで、下位ページの”１”のビット数Ｎ１ｍと符号化前のデータに含まれていた”１”のビット数Ｎｉとを用いてビットエラー率ＢＥＲを推定するのは、フラッシュメモリ２２のデータを読み書きせずに保持を継続している際に生じるビットエラーであるリテンションエラーではフラッシュメモリセル２４ａの閾値電圧が低くなるエラーが生じるため、下位ページの”０”が”１”になるエラーを調べることにより、閾値電圧が低くなったか否かを調べることができるからである。
【００２７】
BER=|N1m-Ni|/Np (2)
【００２８】
こうしてビットエラー率ＢＥＲを算出したら、算出したビットエラー率ＢＥＲと書き換え回数Ｗ／Ｅとに基づいてフラッシュメモリ２２のデータを読み書きせずに保持を継続している時間の推定値である推定リテンション時間Ｔｒｅｔを設定する（ステップＳ２２０）。推定リテンション時間Ｔｒｅｔの設定は、ビットエラー率ＢＥＲとリテンション時間Ｔｒｅｆと書き換え回数Ｗ／Ｅとの関係を予め定めて推定リテンション時間設定テーブル４０ａとして記憶ユニット４０に記憶しておき、ビットエラー率ＢＥＲと書き換え回数Ｗ／Ｅとを与えて対応するリテンション時間をマップから導出することにより行なわれるものとした。推定リテンション時間設定テーブル４０ａの一例を図６に示す。
【００２９】
こうして推定リテンション時間Ｔｒｅｔを設定したら、次に、フラッシュメモリから読み出した１ページのデータを記憶する複数のフラッシュメモリセル２４ａのうちの１つのセルであるターゲットセルのデータＤａｔａｔａｇと、ターゲットセルを囲む４つのフラッシュメモリセルであるレフトセル、ライトセル、アッパーセル、ローワーセルのそれぞれのデータＤａｔａａｄｊ（４）と、推定リテンション時間Ｔｒｅｔと、書き換え回数Ｗ／Ｅとを用いて、ターゲットセルにビットエラーが生じる確率の推定値である推定セルエラー率ＣＥＲｅｓｔを設定する（ステップＳ２３０）。推定セルセラー率ＣＥＲｅｓｔの設定は、データＤａｔａｔａｇ，Ｄａｔａａｄｊ（４）と、データＤａｔａｔａｇ，Ｄａｔａａｄｊ（４）と、推定リテンション時間Ｔｒｅｔと、書き換え回数Ｗ／Ｅと、セルエラー率ＣＥＲとの関係を予めＥＰテーブルとして記憶ユニット４０に記憶しておき、データＤａｔａｔａｇ，Ｄａｔａａｄｊ（４）と、推定リテンション時間Ｔｒｅｔと、書き換え回数Ｗ／Ｅとを与えて対応するレフトセル、ライトセル、アッパーセル、ローワーセルのセルエラー率ＣＥＲをそれぞれマップから導出し、レフトセル、ライトセル、アッパーセル、ローワーセルのセルエラー率ＣＥＲの和を値４で除することにより、導出するものとした。ＥＰテーブルの一例を図７に例示する。図７には、データＤａｔａｔａｇが”０１”、書き換え回数Ｗ／Ｅが２０００回のときの、レフトセル、ライトセル、アッパーセル、ローワーセルのデータ（データＤａｔａａｄｊ（４））と、セルエラー率ＣＥＲとが例示されている。例えば、レフトセル、ライトセル、アッパーセル、ローワーセルのデータのデータがすべて”０１”であるとき（図中、黒塗りの棒グラフのとき）の、レフトセル、ライトセル、アッパーセル、ローワーセルのセルエラー率ＣＥＲは、それぞれ値０．００１５，０．００１５，０．００１２，０．００１３だから、推定セルエラー率ＣＥＲｅｓｔは、次式（３）で計算することができる。ＥＰテーブルは、図７に例示した図を各データＤａｔａｔａｇ，Ｄａｔａａｄｊ（４），各書き換え回数Ｗ／Ｅ毎に用意するものとする。
【００３０】
CERest=(0.0015+0.0015+0.0012+0.0013)/4    (3)
【００３１】
こうして推定セルエラー率ＣＥＲｅｓｔを設定したら、続いて、推定セルエラー率ＣＥＲｅｓｔを用いて下位ページのセルエラー率ＣＥＲｌおよび上位ページのセルエラー率ＣＥＲｕを設定する（ステップＳ２４０）。図８は、セルエラー率ＣＥＲｌ，セルエラー率ＣＥＲｕの設定の様子を説明するための説明図である。実施例の２ビットのフラッシュメモリセルでは、閾値電圧Ｖｔｈが低くなる方向のエラーが生じると、下位ページのデータのデータの”１”の個数が増加し、閾値電圧Ｖｔｈが高くなる方向のエラーが生じると、下位ページの”０”のデータの個数が増加すると考えられる。
【００３２】
データを読み書きせずに保持を継続するエラーであるデータリテンションエラーでは、閾値電圧Ｖｔｈが低くなる方向にエラーが起こると考えられる。したがって、フラッシュメモリに記憶された下位ページの”１”のビット数Ｎ１ｍより符号化前の下位ページの”１”のビット数Ｎｉが多い場合には、書き込み非選択のフラッシュメモリセルのチャネルで発生するホットエレクトロンがフラッシュメモリセルのフローティイングゲートに注入されることにより生じるプログラムディスターブエラーよりデータリテンションエラーが支配的であり、閾値電圧Ｖｔｈが低くなると考えられる。したがって、データＤａｔａｔａｇが”０１”のときには、符号化前に”００”だったデータが”０１”となるエラー、つまり、下位ページのセルエラーが支配的であると考え、推定セルエラー率ＣＥＲｅｓｔを下位ページのセルエラー率ＣＥＲｌに設定し、上位ページのセルエラー率ＣＥＲｕには、例えば１０-7等の予め実験や解析などで求めた値を適宜設定する。また、データＤａｔａｔａｇが”１１”のときには、符号化前に”０１”だったデータが”１１”となるエラー、つまり、上位ページのセルエラーが支配的であると考えて、推定セルエラー率ＣＥＲｅｓｔを上位ページのセルエラー率ＣＥＲｕに設定し、下位ページのセルエラー率ＣＥＲｌには例えば１０-7等の予め実験や解析などで求めた値を適宜設定する。
【００３３】
プログラムディスターブエラーでは、閾値電圧Ｖｔｈが高くなる方向にエラーが起こると考えられる。したがって、フラッシュメモリに記憶された下位ページの”１”のビット数Ｎ１ｍより符号化前のデータに含まれていた”１”のデータのビット数Ｎｉより少ない場合には、データリテンションエラーよりプログラムディスターブエラーが支配的であると考えられる。データＤａｔａｔａｇが”０１”のときには、符号化前に”１１”だったデータが”０１”となるエラー、つまり、上位ページのセルエラーが支配的であると考えて、推定セルエラー率ＣＥＲｅｓｔを上位ページのセルエラー率ＣＥＲｕに設定し、こうして設定した上位ページのセルエラー率ＣＥＲｕに係数αを乗じた値を下位ページのセルエラー率ＣＥＲｌに設定する。また、データＤａｔａｔａｇが”００”のときには、符号化前に”１０”だったデータが”００”となるエラー、つまり、下位ぺージのセルエラーが支配的であると考えて、推定セルエラー率ＣＥＲｅｓｔを下位ページのセルエラー率ＣＥＲｌに設定し、こうして設定した下位ページのセルエラー率ＣＥＲｌに係数αを乗じた値を上位ページのセルエラー率ＣＥＲｕに設定する。このように、フラッシュメモリに記憶された下位ページの”１”のビット数Ｎ１ｍ，符号化前のデータに含まれていた”１”のデビット数Ｎｉ，データＤａｔａｔａｇ，Ｄａｔａａｄｊに基づいてセルエラー率ＣＥＲｕ，ＣＥＲｌを設定することができる。
【００３４】
こうしてセルエラー率ＣＥＲｕ，ＣＥＲｌを設定したら、データＤａｔａｔａｇとセルエラー率ＣＥＲｕ，ＣＥＲｌとデータが”０”のときに用いる次式（４）とデータが”１”のときに用いる式（５）に基づいて上位ページＬＬＲｕ，下位ページＬＬＲｌを設定し（ステップＳ２５０）、データに含まれる全ビットに対してステップＳ２３０〜Ｓ２５０の処理を実行して（ステップＳ２６０）、本ルーチンを終了する。例えば、データＤａｔａｔａｇが”００”のときには、式（４）を適用した式（６）（７）により上位ページＬＬＲｕ，下位ページＬＬＲｌを設定する。また、例えば、データＤａｔａｔａｇが”０１”のときには、式（４）を適用した式（６）により上位ページＬＬＲｕを設定し、式（５）を適用した式（８）により下位ページＬＬＲｌを設定する。一般に、フラッシュメモリセルのデータは、そのセルの周囲にある他のメモリセルがどのようなデータを記憶しているかによって影響を受けるため、周囲のメモリセルのデータにより着目するメモリセルのデータのセルエラー率が変動すると考えられる。実施例では、算出されたビットエラー率ＢＥＲから求められる推定リテンション時間Ｔｒｅｔと、書き換え回数ＮＷ／Ｅと、ターゲットセルのデータＤａｔａｔａｇと、ターゲットセルの周囲のメモリセルのデータＤａｔａａｄｊと、に基づいて推定セルエラー率ＣＥＲｅｓｔを設定し、設定した推定セルエラー率ＣＥＲｅｓｔを用いて読み出された１ページ分のデータの全ビットについて上位ページＬＬＲｕ，下位ページＬＬＲｌを設定することにより、より実際のフラッシュメモリセル２４ａの状態を反映した上位ページＬＬＲｕ，下位ページＬＬＲｌを設定することができるから、予め想定した閾値電圧の分布を用いて上位ページＬＬＲｕ，下位ページＬＬＲｌを設定するものに比して、訂正能力の向上を図ることができる。また、より実際のフラッシュメモリセル２４ａの状態を反映した上位ページＬＬＲｕ，下位ページＬＬＲｌを設定することができるから、フラッシュメモリからデータを読み出す際に参照する電圧の数を増やす必要がないため、データの読み出し回数の増大を抑制することができ、処理時間の増大を抑制することができる。これにより、誤り訂正能力を向上させつつ、処理時間の増大を抑制することができる。
【００３５】
LLR(0)=log((1-CER)/CER) (4)
LLR(1)=log(CER/(1-CER)) (5)
LLRu=log((1-CERu)/CERu) (6)
LLRl=log((1-CERl)/CERl) (7)
LLRl=log(CERl/(1-CERl)) (8)
【００３６】
以上説明した実施例のＳＳＤ２０によれば、算出されたビットエラー率ＢＥＲから求められる推定リテンション時間Ｔｒｅｔと、書き換え回数ＮＷ／Ｅと、ターゲットセルのデータＤａｔａｔａｇと、ターゲットセルの周囲のメモリセルのデータＤａｔａａｄｊと、に基づいて推定セルエラー率ＣＥＲｅｓｔを設定し、設定した推定セルエラー率ＣＥＲｅｓｔを用いて読み出された１ページ分のデータの全ビットについて上位ページＬＬＲｕ，下位ページＬＬＲｌを設定し、こうして設定した上位ページＬＬＲｕ，下位ページＬＬＲｌを用いてフラッシュメモリ２２から読み出したデータについてエラー訂正を行なって復号するから、誤り訂正能力を向上させつつ、処理時間の増大を抑制することができる。
【００３７】
実施例のＳＳＤ２０では、図５のＬＬＲ設定処理ルーチンのステップＳ２２０において、ビットエラー率ＢＥＲと書き換え回数ＮＷ／Ｅとを考慮して、ビットエラー率ＢＥＲと書き換え回数ＮＷ／Ｅと図６に例示した推定リテンション時間設定テーブル４０ａとを用いて推定リテンション時間Ｔｒｅｔを設定するものとしたが、書き換え回数ＮＷ／Ｅを考慮しないものとして、推定リテンション時間設定テーブル４０ａをビットエラー率ＢＥＲと書き換え回数ＮＷ／Ｅとの関係を予め定めたものとして、ビットエラー率ＢＥＲと推定リテンション時間設定テーブル４０ａから推定リテンション時間Ｔｒｅｔを求めるものとしてもよい。
【００３８】
実施例のＳＳＤ２０では、図５のＬＬＲ設定処理ルーチンのステップＳ２１０において、読み出した１ページ分のデータについてビットエラー率ＢＥＲを算出するものとしたが、複数ビットのデータについてビットエラー率ＢＥＲを算出するものとすればよいから、例えば、１ページ以上のデータについてビットエラー率ＢＥＲを算出するものとしてもよいし、１ページ未満のデータについてビットエラー率ＢＥＲを算出するものとしてもよい。   
【００３９】
実施例のＳＳＤ２０では、図４の書き込み処理ルーチンのステップＳ１１０の処理で、入力データに含まれる”１”のデータのビット数Ｎｉを計数し、図５のＬＬＲ設定処理ルーチンのステップＳ２００，Ｓ２１０の処理で、読み出したデータの下位ページの”１”のビット数Ｎ１ｍを計数し、下位ページの”１”のビット数Ｎ１ｍと符号化前のデータに含まれていた”１”のビット数Ｎｉと１ページ分のデータのビット数Ｎｐとを用いてビットエラー率ＢＥＲを算出するものとしたが、ステップＳ１１０の処理で入力データに含まれる”０”のデータのビット数を計数し、図５のＬＬＲ設定処理ルーチンのステップＳ２００，Ｓ２１０の処理で、読み出したデータの下位ページの”０”のビット数を計数し、下位ページの”０”のビット数と符号化前のデータに含まれていた”０”のビット数と１ページ分のデータのビット数Ｎｐとを用いてビットエラー率ＢＥＲを算出するものとしてもよい。この場合、メモリセルの閾値電圧が増加して下位ページが”１”から”０”になるエラー、例えば、プログラムディスターブエラーによるビットエラー率を算出することができる。
【００４０】
実施例のＳＳＤ２０では、図５のＬＬＲ設定処理ルーチンのステップＳ２３０において、データＤａｔａｔａｇ，Ｄａｔａａｄｊ（４）と、推定リテンション時間Ｔｒｅｔと、書き換え回数Ｗ／Ｅとを考慮して、データＤａｔａｔａｇ，Ｄａｔａａｄｊ（４）と、推定リテンション時間Ｔｒｅｔと、書き換え回数Ｗ／Ｅと、ＥＰテーブルとを用いて推定セルエラー率ＣＥＲｅｓｔを設定するものとしたが、書き換え回数Ｗ／Ｅを考慮しないものとして、ＥＰテーブルをデータＤａｔａｔａｇ，Ｄａｔａａｄｊ（４）と推定リテンション時間Ｔｒｅｔと推定セルエラー率ＣＥＲｅｓｔとの関係を予め定めたものとして、ＥＰテーブルとデータＤａｔａｔａｇ，Ｄａｔａａｄｊ（４）と推定リテンション時間Ｔｒｅｔとを用いて推定セルエラー率ＣＥＲｅｓｔを設定するものとしてもよい。
【００４１】
実施例のＳＳＤ２０では、図５のＬＬＲ設定処理ルーチンのステップＳ２２０，Ｓ２３０において、推定リテンション時間Ｔｒｅｔを設定し、推定リテンション時間Ｔｒｅｔを用いて推定セルエラー率ＣＥＲｅｓｔを設定するものとしたが、ステップＳ２２０の処理を実行せずにステップＳ２３０において推定リテンション時間に代えてビットエラー率ＢＥＲを用いて推定セルエラー率ＣＥＲｅｓｔを設定するものとしても構わない。
【００４２】
実施例のＳＳＤ２０では、図５のＬＬＲ設定処理ルーチンのステップＳ２３０において、ターゲットセルを囲む４つのフラッシュメモリセルであるレフトセル、ライトセル、アッパーセル、ローワーセルのデータＤａｔａａｄｊ（４）を考慮して推定セルエラー率ＣＥＲｅｓｔを設定するものとしたが、ターゲットセルを囲む所定の範囲のフラッシュメモリセルを考慮すればよいから、例えば、ターゲットセルの周囲の８つのメモリセルや、ターゲットセルの２列分、即ち、２４個のフラッシュメモリセルを考慮するものとしてもよい。
【００４３】
実施例のＳＳＤ２０では、推定セルエラー率ＣＥＲｅｓｔを上述した式（３）で計算するものとしたが、例えば、レフトセル、ライトセル、アッパーセル、ローワーセルのセルエラー率ＣＥＲにそれぞれ重み付け計数を乗じて足して計算するものなど、各セルの寄与を考慮して適宜計算するものとしても構わない。また、推定エラー率ＣＥＲｅｓｔを次式（９）を用いて計算するものとしても構わない。式（９）中のｂ１〜ｂ１６は、図９に示すように、図７に例示したＥＰテーブル４０ｃにおいて、レフトセルのデータが”１１”，”０１”，”００”，”１０”のときのセルエラー率ＣＥＲ、ライトセルのデータが”１１”，”０１”，”００”，”１０”のときのセルエラー率ＣＥＲ、アッパーセルのデータが”１１”，”０１”，”００”，”１０”のときのセルエラー率ＣＥＲをそれぞれ示している。
【００４４】
【数１】
0005943395.tif 000002
【００４５】
実施例のＳＳＤ２０では、上位ページのセルエラー率ＣＥＲｕを例えば１０-7等の予め実験や解析などで求めた値を設定するものとしたが、例えば、下位ページのセルエラー率ＣＥＲｌを用いて設定するものなど如何なる方法で設定してもよい。
【００４６】
実施例のＳＳＤ２０では、ＬＤＰＣ符号に符号化されたデータを復号する際にsum-product法を用いて復号するものとしたが、復号する手法としては、例えば、mini-sumu法など対数尤度率（ＬＬＲ）を用いた演算により復号する手法としてもよい。
【００４７】
実施例のＳＳＤ２０では、フラッシュメモリ２２は１つのフラッシュメモリセル２４ａに２ビットのデータが記憶されるよう制御されるメモリであるものとしたが、１つのフラッシュメモリセル２４ａに１ビットのデータが記憶されるよう制御されるメモリであるものとしてもよいし、１つのフラッシュメモリセル２４ａに２ビットより多いビット数のデータが記憶されるよう制御されるメモリであるものとしてもよい。
【００４８】
実施例のＳＳＤ２０では、入力されたデータをＬＤＰＣ符号に符号化するものとしたが、エラー訂正符号としては、ＬＤＰＣ符号に限定されるものではなく、入力されたデータをＬＬＲを用いた演算により復号可能なエラー訂正符号であれば如何なるものとしても構わない。
【００４９】
実施例のＳＳＤ２０では、ＮＡＮＤ型のフラッシュメモリ２２が搭載されているものとしたが、ＳＳＤ２０に搭載されているのはＮＡＮＤ型のフラッシュメモリ２２に限定されるものではなく、例えば、ＮＯＲ型のフラッシュメモリや抵抗変化型メモリなど、電源の供給を停止した後もデータを保持する不揮発性メモリであれば如何なるものに用いるものとしても構わない。
【００５０】
実施例では、本発明のメモリコントローラがＳＳＤに搭載されているものとしたが、メモリコントローラがパーソナルコンピュータに搭載されるものとしてパーソナルコンピュータに挿入されたＵＳＢメモリを制御するものとしても構わない。
【００５１】
実施例では、本発明のメモリコントローラをＳＳＤに適用する場合を例示したが、適用する対象についてはＳＳＤに限定されるものではなく、データを記憶可能な記憶装置であれば如何なるものに用いても構わない。
【００５２】
実施例の主要な要素と発明の概要の欄に記載した発明の主要な要素との対応関係について説明する。メモリコントローラにおいては、実施例では、図４の書き込み処理ルーチンのステップＳ１１０および図５のＬＬＲ設定処理ルーチンのステップＳ２００，Ｓ２１０の処理を実行するＮ１カウンタ３１およびＬＬＲ設定ユニット３４とが「ビットエラー率算出部」に相当し、図５のＬＬＲ設定処理ルーチンのステップＳ２２０〜Ｓ２４０の処理を実行するＬＬＲ設定ユニット３４が「推定セルエラー確率設定部」に相当し、図５のＬＬＲ設定処理ルーチンのステップＳ２５０の処理を実行するＬＬＲ設定ユニット３４が「対数尤度率設定部」に相当する。また、データ記憶装置においては、実施例では、メモリコントローラ３０が「メモリコントローラ」に相当し、フラッシュメモリ２２が「不揮発性メモリ」に相当する。
【００５３】
なお、実施例の主要な要素と発明の概要の欄に記載した発明の主要な要素との対応関係は、実施例が発明の概要の欄に記載した発明を実施するための形態を具体的に説明するための一例であることから、発明の概要の欄に記載した発明の要素を限定するものではない。即ち、発明の概要の欄に記載した発明についての解釈はその欄の記載に基づいて行なわれるべきものであり、実施例は発明の概要の欄に記載した発明の具体的な一例に過ぎないものである。
【００５４】
以上、本発明を実施するための形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において、種々なる形態で実施し得ることは勿論である。
【産業上の利用可能性】
【００５５】
本発明は、メモリコントローラやデータ記憶装置の製造産業などに利用可能である。
【図１】
0005943395.tif 000003
【図２】
0005943395.tif 000004
【図３】
0005943395.tif 000005
【図４】
0005943395.tif 000006
【図５】
0005943395.tif 000007
【図６】
0005943395.tif 000008
【図７】
0005943395.tif 000009
【図８】
0005943395.tif 000010
【図９】
0005943395.tif 000011