(57)【要約】【課題】メモリセルからの書き込みレベルをより高精度に推定可能とする。【解決手段】メモリシステムは、不揮発性メモリと、メモリコントローラと、を備える。不揮発性メモリは、複数の書き込みレベルのうち書き込みデータに対応する書き込みレベルとなる閾値電圧が設定される。メモリコントローラは、読み出し対象となる複数のメモリセルに対して、書き込みに用いる電圧よりも小さい第１電圧を印加させる。メモリコントローラは、複数のメモリセルから、第１電圧が印加される前の複数の第１読み出しデータと、第１電圧が印加された後の複数の第２読み出しデータと、を検知する。メモリコントローラは、第１読み出しデータと第２読み出しデータとに基づいて、書き込みデータに対応する書き込みレベルを推定する。【選択図】図２
2019160355.tif 000002
【特許請求の範囲】
【請求項１】
複数の書き込みレベルのうち書き込みデータに対応する書き込みレベルとなる閾値電圧が設定された、読み出し対象となる複数のメモリセルと、
複数の前記メモリセルに対して、書き込みに用いる電圧よりも小さい第１電圧を印加させ、
複数の前記メモリセルから、前記第１電圧が印加される前の複数の第１読み出しデータと、前記第１電圧が印加された後の複数の第２読み出しデータと、を検知し、
前記第１読み出しデータと前記第２読み出しデータとに基づいて、前記書き込みデータに対応する書き込みレベルを推定する、
メモリコントローラと、
を備えるメモリシステム。
【請求項２】
前記メモリコントローラは、前記第１読み出しデータと前記第２読み出しデータとにより定まる特徴空間上の点を複数の書き込みレベルに分離する境界線を推定し、推定された前記境界線に基づいて前記書き込みデータに対応する書き込みレベルを推定する、
請求項１に記載のメモリシステム。
【請求項３】
複数の前記第１読み出しデータは、前記第１電圧が印加される前の複数の前記メモリセルの閾値電圧を示す複数の第１閾値電圧であり、
複数の前記第２読み出しデータは、前記第１電圧が印加された後の複数の前記メモリセルの閾値電圧を示す複数の第２閾値電圧である、
請求項２に記載のメモリシステム。
【請求項４】
複数の前記メモリセルは、書き込み時点からの経時変化により閾値電圧が変動する特性を有し、
前記メモリコントローラは、前記第１閾値電圧と前記第２閾値電圧との差分が大きいほど経時変化による閾値電圧の変動も大きいという前提に基づき、前記境界線を推定する、
請求項３に記載のメモリシステム。
【請求項５】
前記メモリコントローラは、前記特徴空間上の点を複数の書き込みレベルにクラスタリングすることにより、前記境界線を推定する、
請求項３に記載のメモリシステム。
【請求項６】
複数の前記第１読み出しデータは、前記第１電圧が印加される前の複数の前記メモリセルから、Ｍ種類（Ｍは２以上の整数）の読み出し電圧を用いて読み出されたＭ個のデータであり、
複数の前記第２読み出しデータは、前記第１電圧が印加された後の複数の前記メモリセルから、Ｎ種類（Ｎは２以上の整数）の読み出し電圧を用いて読み出されたＮ個のデータである、
請求項１に記載のメモリシステム。
【請求項７】
前記第１読み出しデータおよび前記第２読み出しデータは、読み出し電圧に対する大小に応じたビット値を示すデータであり、
前記メモリコントローラは、Ｍ個の前記第１読み出しデータとＮ個の前記第２読み出しデータとの間のビット演算の結果に基づいて、複数の前記メモリセルを分類する（Ｍ＋１）個のクラスそれぞれに対して用いる（Ｍ＋１）個の読み出し電圧を決定し、決定した読み出し電圧により、前記書き込みデータに対応する書き込みレベルを推定する、
請求項６に記載のメモリシステム。
【請求項８】
前記メモリコントローラは、ビット演算の結果を入力し、前記第１読み出しデータと前記第２読み出しデータとにより定まる特徴空間上の点を複数の書き込みレベルに分離する境界線を出力する関数を用いて前記境界線を推定し、推定された境界線に基づいて、前記（Ｍ＋１）個の読み出し電圧を決定する、
請求項７に記載のメモリシステム。
【請求項９】
前記メモリコントローラは、ビット演算の結果と、読み出し電圧との関係を予め学習したモデルに基づいて、前記（Ｍ＋１）個の読み出し電圧を決定する、
請求項７に記載のメモリシステム。
【請求項１０】
前記第１電圧は、複数の前記メモリセルを含むワードラインと異なるワードラインから書き込みデータを読み出すときに印加される電圧である、
請求項１に記載のメモリシステム。
【請求項１１】
複数の書き込みレベルのうち書き込みデータに対応する書き込みレベルとなる閾値電圧が設定された、読み出し対象となる複数のメモリセルに対して、書き込みに用いる電圧よりも小さい第１電圧を印加させる読み出し制御ステップと、
複数の前記メモリセルから、前記第１電圧が印加される前の複数の第１読み出しデータと、前記第１電圧が印加された後の複数の第２読み出しデータと、を検知する検知ステップと、
前記第１読み出しデータと前記第２読み出しデータとに基づいて、前記書き込みデータに対応する書き込みレベルを推定する推定ステップと、
を含む読み出し方法。
【請求項１２】
コンピュータに、
複数の書き込みレベルのうち書き込みデータに対応する書き込みレベルとなる閾値電圧が設定された、読み出し対象となる複数のメモリセルに対して、書き込みに用いる電圧よりも小さい第１電圧を印加させる読み出し制御ステップと、
複数の前記メモリセルから、前記第１電圧が印加される前の複数の第１読み出しデータと、前記第１電圧が印加された後の複数の第２読み出しデータと、を検知する検知ステップと、
前記第１読み出しデータと前記第２読み出しデータとに基づいて、前記書き込みデータに対応する書き込みレベルを推定する推定ステップと、
を実行させるためのプログラム。
【請求項１３】
複数の書き込みレベルのうち書き込みデータに対応する書き込みレベルとなる閾値電圧が設定された、読み出し対象となる複数のメモリセルに対して、書き込みに用いる電圧よりも小さい第１電圧を印加させ、
複数の前記メモリセルから、前記第１電圧が印加される前の複数の第１読み出しデータと、前記第１電圧が印加された後の複数の第２読み出しデータと、を検知し、
前記第１読み出しデータと前記第２読み出しデータとに基づいて、前記書き込みデータに対応する書き込みレベルを推定する、
メモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステム、読み出し方法、プログラムおよびメモリコントローラに関する。
【背景技術】
【０００２】
ＳＳＤ（Solid  State  Drive）やメモリカードに使われるＮＡＮＤフラッシュメモリの記憶密度の向上に伴い、その信頼性が問題になっている。信頼性を左右する要因は、メモリセル内に蓄積できる電荷量、周囲のメモリセルとの干渉による電荷量の変動、読み出しに伴う電荷抜け、および、電荷量の経時変化など多岐にわたる。
【０００３】
電荷量の変動等による読み出しエラーを低減するために、電圧を印加することにより電荷蓄積層に電荷を注入する技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１３／０９９３８７号
【非特許文献】
【０００５】
【非特許文献１】S.  Tanakamaru  et  al.,  "Error-Prediction  LDPC  and  Error-Recovery  Schemes  for  Highly  Reliable  Solid-State  Drives  （SSDs）",  IEEE  J.  Solid-State  Circuits,  Vol.48,  No.  11,  Nov.  2013
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来技術では、例えばメモリセルごとの電荷抜けの程度の個体差を考慮していないため、メモリセルからの書き込みレベルを高精度に推定できない場合があった。
【課題を解決するための手段】
【０００７】
実施形態のメモリシステムは、不揮発性メモリと、メモリコントローラと、を備える。不揮発性メモリは、複数の書き込みレベルのうち書き込みデータに対応する書き込みレベルとなる閾値電圧が設定される。メモリコントローラは、読み出し対象となる複数のメモリセルに対して、書き込みに用いる電圧よりも小さい第１電圧を印加させる。メモリコントローラは、複数のメモリセルから、第１電圧が印加される前の複数の第１読み出しデータと、第１電圧が印加された後の複数の第２読み出しデータと、を検知する。メモリコントローラは、第１読み出しデータと第２読み出しデータとに基づいて、書き込みデータに対応する書き込みレベルを推定する。
【図面の簡単な説明】
【０００８】
【図１】メモリシステムの構成例を示すブロック図。
【図２】読み出し部の構成例を示すブロック図。
【図３】不揮発性メモリのメモリアレイの構造を説明する図。
【図４】不揮発性メモリのメモリセルの構造例を示す断面図。
【図５】メモリセルの閾値電圧分布の例を示す図。
【図６】メモリセルの閾値電圧分布の例を示す図。
【図７】メモリセルの閾値電圧分布の例を示す図。
【図８】推定部の構成例を示すブロック図。
【図９】第１の実施形態における推定処理の示すフローチャート。
【図１０】第２の実施形態における閾値電圧分布の例を示す図。
【図１１】第２の実施形態における閾値電圧分布の例を示す図。
【図１２】第２の実施形態における読み出し部の構成例を示すブロック図。
【図１３】第２の実施形態における推定部の構成例を示すブロック図。
【図１４】第２の実施形態における推定処理のフローチャート。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照しながら、実施形態のメモリシステム、読み出し方法、プログラム、およびメモリコントローラについて詳細に説明する。なお、以下の説明において、同様の機能を持つ構成要素については同一の符号を付して、重複した説明を適宜省略する。
【００１０】
上述のように、ＮＡＮＤフラッシュメモリなどの不揮発性メモリの信頼性には、様々な要因が影響する。例えば、微細化によって電荷のやり取りを行うトンネル層の膜厚が小さくなれば、電荷蓄積層（チャージトラップ層）に溜め込まれた電荷が時間とともに失われやすくなる。その結果データの保持性能（データリテンション：Data  Retention）が低下する。このように、不揮発性メモリの各メモリセルは、書き込み時点からの経時変化により閾値電圧が変動する特性を有する。メモリセル内に保持された電荷量が変動した場合、書き込んだデータと読み出したデータとの間に不一致が生じ、結果的に読み出しエラー（ビットエラー）が発生する。
【００１１】
フラッシュメモリの信頼性を高める手法として、メモリセルに蓄積された電荷量が変動した際に、制御ゲートと基板間に予め定められた電圧を印加することで、電荷蓄積層に電荷を注入し、発生していたビットエラーを低減する手法が提案されている。しかし、このような手法でビットエラーを十分に低減するためには電荷の注入のために電圧を数百回のパルスとして印加する必要があるという実験結果が示されている。このことは、十分なビットエラー低減のためには多大な処理時間が必要であることを示している。従って、制限された時間内ではビットエラーの低減が十分に行えない。
【００１２】
（第１の実施形態）
第１の実施形態に係るメモリシステムは、データリテンションによって電荷が抜けやすいメモリセルはリードディスターブ（Ｒｅａｄ  Ｄｉｓｔｕｒｂ）の影響を受けやすいという関係を用いて、メモリセルに書き込まれた書き込みデータのレベル（書き込みレベル）を推定する。電荷抜けの程度の個体差を考慮できるため、メモリセルからの書き込みレベルをより高精度に推定可能となる。
【００１３】
図１は、本実施形態に係るメモリコントローラを備えるメモリシステム１の構成例を示すブロック図である。図１に示すメモリシステム１は、不揮発性メモリ２とコントローラ３とを備え、ホストＣＰＵ４からの命令に従って動作する。不揮発性メモリ２は、例えばＮＡＮＤフラッシュメモリである。
【００１４】
ホストＣＰＵ４からメモリシステム１への書き込み命令や読み出し命令は、コントローラ３に送られる。コントローラ３は、ホストＣＰＵ４からの命令に従って不揮発性メモリ２を制御し、不揮発性メモリ２にデータを書き込んだり、不揮発性メモリ２からデータを読み出したりする。なお、図１では不揮発性メモリ２とコントローラ３とが１対１に対応している例を示しているが、コントローラ３が複数の不揮発性メモリ２を制御する構成であってもよい。
【００１５】
コントローラ３は、不揮発性メモリコントローラ５とホストコントローラ６とを備える。コントローラ３またはコントローラ３内の不揮発性メモリコントローラ５が、本実施形態に係るメモリコントローラに相当する。
【００１６】
ホストコントローラ６は、ホストＣＰＵ４から発行される命令に従ってデータの送受信を行う。具体的には、ホストコントローラ６では、ホストＣＰＵ４が指し示すアドレス情報（一般にＬＢＡ：Logical  Block  Addressと呼ばれる）を不揮発性メモリ２の物理アドレス空間に変換するような処理が行われる。
【００１７】
一方、不揮発性メモリコントローラ５は、ホストコントローラ６から送られる信号に基づいて、不揮発性メモリ２を制御する。具体的には、不揮発性メモリコントローラ５は、不揮発性メモリ２に対し、コマンドおよびアドレスを送出して、データの書き込みや読み出しを行う。
【００１８】
不揮発性メモリコントローラ５は、書き込み部１０と、読み出し部２０と、ＥＣＣ（Error  Correction  Code）処理部３０とを備える。
【００１９】
書き込み部１０は、不揮発性メモリ２に対してコマンドやアドレス情報を送出したり、書き込むべきデータを送出したりすることにより、不揮発性メモリ２に対してデータを書き込む。ホストＣＰＵ４から書き込みデータとして送られてきたデータは、ＥＣＣ処理部３０にてエラー訂正符号が付加され、不揮発性メモリ２へ書き込むべきデータに変換される。なお、エラー訂正符号を付加した後に不揮発性メモリ２の個々のメモリセルの書き換えストレスを平準化するためにデータを乱数化するような処理が付加されてもよい。
【００２０】
不揮発性メモリ２に対するデータの書き込みは、アドレス情報により指定されたメモリセル群の個々のメモリセルの閾値電圧を、そのデータ（以下、「書き込みデータ」と呼ぶ）に対応した電圧レベルに設定することにより行われる。すなわち、書き込みデータは、メモリセル群の個々のメモリセルの閾値電圧に応じて記憶される。
【００２１】
読み出し部２０は、不揮発性メモリ２に対してコマンドやアドレス情報を送出することにより、不揮発性メモリ２からデータを読み出す。不揮発性メモリ２から読み出したデータは、ＥＣＣ処理部３０にてエラー訂正が行われる。
【００２２】
不揮発性メモリ２からのデータの読み出しは、アドレス情報により指定された書き込みデータが書き込まれたメモリセル群の個々のメモリセルの閾値電圧を検知することにより行われる。不揮発性メモリ２のメモリセルの閾値電圧は様々な要因により変動するが、本実施形態では、書き込みデータが書き込まれたメモリセル群の個々のメモリセルについて、読み出し時に２種類の閾値電圧を検知して書き込みデータを推定することによりエラーを良好に抑制できるようにしている。
【００２３】
図２は、本実施形態における読み出し部２０の構成例を示すブロック図である。読み出し部２０は、読み出し制御部２１と、検知部２２と、推定部２３とを備える。
【００２４】
読み出し制御部２１は、書き込みデータが書き込まれた不揮発性メモリ２のメモリセル群の中から読み出しの対象とするメモリセル（以下、「読み出し対象メモリセル」と呼ぶ）選択し、閾値電圧を取得するための制御コマンドと、所定の電圧を印加するための制御コマンドを不揮発性メモリ２に対して送出する。
【００２５】
所定の電圧を印加するための制御コマンドは、読み出し対象メモリセルに対して、リードディスターブと同様の現象を生じさせるための電圧（第１電圧）を印加するための制御コマンドである。例えば読み出し制御部２１は、読み出し対象メモリセルと同一のメモリアレイに含まれる、他のワードラインの読み出しコマンドを複数回発行する。これにより、読み出し対象メモリセルに対してパス電圧を印加させ、リードディスターブに起因する閾値電圧の変動を発生させることができる。
【００２６】
パス電圧は、例えば読み出し対象メモリセルを含むワードライン以外のワードラインに対して、メモリセルが必ずオン状態になるように定められた電圧である。パス電圧は、所定の電圧（第１電圧）の一例である。第１電圧は、書き込みに用いる電圧（例えば１０Ｖ）よりも小さい、パス電圧と同程度の電圧（例えば６〜７Ｖ）としてもよい。
【００２７】
リードディスターブの本質は、制御ゲート５５に書き込み電圧よりも低い電圧をかけることでチャネル５１からチャージトラップ層５３にトンネル層５２の状態に依存して変化するわずかな電荷を注入し、閾値電圧を変動させることにある。従って、リードディスターブの代わりに不揮発性メモリ２に専用の機能を設けるなどの工夫により、何らかの形で制御ゲート５５に所定の電圧を一定時間印加できればよい。閾値電圧を変動させることができればよいため、所定の電圧は正の電圧であっても、負の電圧であってもよい。以降では、リードディスターブと同様の現象とリードディスターブを区別せず、リードディスターブと表現するものとする。
【００２８】
検知部２２は、読み出し対象メモリセルから、第１電圧が印加される前の読み出しデータ（第１読み出しデータ、および、第１電圧が印加された後の読み出しデータ（第２読み出しデータ）を検知する。読み出しデータは、メモリセルから読み出されるデータであり、本実施形態ではメモリセルの閾値電圧である。例えば検知部２２は、読み出し制御部２１により送出された制御コマンドに応じて、複数の読み出し対象メモリセルから、第１電圧が印加される前の閾値電圧ＶｔｈＡ（第１閾値電圧）を複数検知し、第１電圧を印加した後の閾値電圧ＶｔｈＢ（第２閾値電圧）を複数検知する。
【００２９】
推定部２３は、検知部２２により検知された複数の閾値電圧ＶｔｈＡおよび複数の閾値電圧ＶｔｈＢに基づいて、読み出し対象メモリセルに書き込まれた書き込みデータに対応する書き込みレベルを推定する。例えば推定部２３は、閾値電圧ＶｔｈＡと閾値電圧ＶｔｈＢとにより定まる特徴空間上の点を複数の書き込みレベルに分離する境界線を推定し、推定された境界線に基づいて書き込みデータに対応する書き込みレベルを推定する。推定部２３による推定処理の詳細は後述する。
【００３０】
推定部２３は、推定した書き込みレベルに対応する書き込みデータを推定して出力してもよい。推定部２３は、軟判定エラー訂正に用いられる対数尤度比（Log  Likelihood  Ratio）を書き込みレベルとして推定してもよい。例えば推定部２３は、メモリセルの閾値電圧から大雄尤度比を求める手法を、２次元の特徴空間上に拡張することにより対数尤度比を求めることが可能である。
【００３１】
なお、読み出し制御部２１が送出した読み出し対象メモリセルに対する最初の読み出しコマンドによって取得される読み出しデータについて、ＥＣＣ処理部３０によりエラー訂正を実施した結果、すべての読み出しデータがエラー訂正可能だった場合には、検知部２２および推定部２３における処理は省略される。エラー訂正に失敗した場合には、検知部２２および推定部２３により書き込みデータの推定処理が行われ、推定された書き込みデータについてＥＣＣ処理部３０においてエラー訂正処理が実行されることで、書き込みデータが再現される。
【００３２】
コントローラ３または不揮発性メモリコントローラ５がＥＣＣ処理部３０を備えない構成の場合（例えば、検知部２２および推定部２３の機能を不揮発性メモリ２内に備える構成の場合など）、エラー訂正の結果によらずに検知部２２および推定部２３による処理を実行してもよい。
【００３３】
不揮発性メモリ２は、コントロール部７と、データバッファ８と、メモリアレイ９とを備える。コントロール部７は、コントローラ３から発行されるコマンドやアドレス情報を解釈し、データバッファ８やメモリアレイ９を制御する。書き込みデータはデータバッファ８で一時的に蓄えられた後に、メモリアレイ９に書き込まれる。読み出しの場合には、メモリアレイ９から読み出されたデータがデータバッファ８で一時的に保存され、コントローラ３に順次送られる。
【００３４】
図３は、不揮発性メモリ２のメモリアレイ９の構造を説明する図である。メモリアレイ９は、図３に示すように、複数のトランジスタ１２２（各トランジスタが「メモリセル」と呼ばれる）を直列に並べたＮＡＮＤストリングと呼ばれる回路１２３が複数集まって構成される。１つのＮＡＮＤストリングに接続された配線をビットライン（ＢＬ）と呼ぶ。複数のビットラインの同一位置にあるトランジスタのゲート電極は、ワードライン（ＷＬ）と呼ばれる線で互いに接続されている。
【００３５】
図３ではＢＬ１〜ＢＬ４の４つのビットラインと、ＷＬ１〜ＷＬ６の６つのワードラインのみを図示しているが、実際にはビットラインおよびワードラインはより多く存在し、多数のメモリセルがアレイ状に配置された構成となっている。このアレイ全体をブロック１２１と呼ぶ。通常、不揮発性メモリ２内には複数のブロックが存在する。
【００３６】
不揮発性メモリ２では、１つの閾値電圧が可変のメモリセル（トランジスタ）に対し１ビット〜４ビット程度のデータ（書き込みデータ）が記録される。１つのメモリセルに１ビットだけが記録される不揮発性メモリをＳＬＣ（Single  Level  Cell）と呼ぶ。また、２ビットの場合はＭＬＣ（Multi  Level  Cell）、３ビットの場合はＴＬＣ（Triple  Level  Cell）、４ビットの場合はＱＬＣ（Quad  Level  Cell）と呼ぶ。１つのワードラインに接続されているメモリセルに記録された１ビットのデータをまとめてページと呼ぶ。すなわち、１つのワードラインに接続されたメモリセル群には、１ページ〜４ページ分のデータが記録される。
【００３７】
データは、メモリセル（トランジスタ）の閾値電圧によって書き込まれる。読み出す際には、読み出し対象となるデータが書き込まれたメモリセル群に対応するワードラインに適切な電圧（この電圧は「読み出し電圧」と呼ばれる）が印加され、残りのワードラインについてはメモリセルが必ずオン状態になるような所定の電圧（パス電圧）が印加される。検知部２２は、読み出し対象となるデータが書き込まれたメモリセル群の個々のメモリセル（トランジスタ）の閾値電圧が、印加された読み出し電圧よりも高いか低いかを検知する。
【００３８】
ＳＬＣ以外のメモリセルでは、読み出し電圧を複数定義してそれぞれ１回ずつ検知することにより書き込まれたデータを取得する。このようにして読み出されたデータについてＥＣＣ処理部３０によってエラー訂正を行い、データが正しく訂正できれば読み出し処理はこれで完了する。
【００３９】
一方、前述のように蓄積された電荷量が変動しメモリセルの閾値電圧が変化した場合には、ＥＣＣ処理部３０によるエラー訂正処理が失敗することがある。このような場合には、読み出し部２０は、読み出し電圧を微小に変化させながら検知処理を繰り返し、各々のメモリセルの閾値電圧を求める。
【００４０】
図４は、不揮発性メモリ２のメモリセルの構造例を示す断面図である。図４に示すメモリセルの構造をチャージトラップ型と呼ぶ。チャージトラップ型のメモリセルは、チャネル５１と、トンネル層５２と、チャージトラップ層５３と、絶縁層５４と、制御ゲート５５とがこの順に積層された構造となっている。チャネル５１は、例えば２次元型の不揮発性メモリの場合は、トンネル層５２などを積層する基板などである。
【００４１】
この構造では、チャージトラップ層５３に形成される欠陥に電荷がトラップされることによって、メモリセルの閾値電圧が変化する。書き込みのため電荷をトラップさせたり、消去のためトラップされた電荷をデトラップさせたりするためには、制御ゲート５５とチャネル５１との間に高い電圧パルスが与えられる。この電圧パルスの回数を増減することにより、チャージトラップ層５３にトラップされる電荷の量、すなわちメモリセルの閾値電圧が制御できる。
【００４２】
例えば、ＴＬＣの不揮発性メモリでは、初期状態である消去レベル（閾値電圧が最も低い状態）に加え、書き込み電圧パルスによって７個の異なる閾値電圧を書き込むことで８種類の書き込みレベルが形成される。１回の書き込み電圧パルスによって変動する閾値電圧は、メモリセルによって多少ばらつく。このため、書き込んだ閾値電圧には、たとえ同じ書き込みレベルであってもばらつきが生じる。一般に同一の書き込みレベルにおける閾値電圧分布は概ね正規分布で近似できる。すなわち、書き込み直後ではメモリセルの閾値電圧分布は図５に示すような分布となる。図５において、８個の書き込みレベルはそれぞれＥｒ、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、および、Ｇと表現されている。このように、各メモリセルには、複数の書き込みレベルのうち書き込みデータに対応する書き込みレベルとなる閾値電圧が設定される。
【００４３】
各メモリセルの閾値電圧は様々な要因で変動する。例えば、セル間干渉（ＣＣＩ：Cell-to-Cell  Interference）と呼ばれる現象は、隣接するメモリセル間の距離が近いことにより、書き込み対象のメモリセルに加えて、隣接するセルとの間に寄生容量が生じ、データ書き込み時に隣接するセルの閾値電圧にノイズが乗る現象である。
【００４４】
リードディスターブと呼ばれる現象は、読み出し時に読み出し対象のメモリセル以外のワードラインに対して高いパス電圧をかけることにより、チャネル５１からチャージトラップ層５３へ電荷がわずかに注入され、閾値電圧が変動する現象である。
【００４５】
プログラムディスターブ（Program  Disturb）およびパスディスターブ（Pass  Disturb）と呼ばれる現象は、書き込み時に他のメモリセルでも制御ゲート５５とチャネル５１との間の電圧が高まることで、チャージトラップ層５３に意図しない電荷の注入が発生する現象である。さらに、チャージトラップ層５３にトラップされた電荷が、長時間かけてチャネル５１へ抜けていく現象も発生する。すなわち、メモリセルがデータを保持できる時間には限界があり、このデータの保持性能のことをデータリテンションと呼ぶ。
【００４６】
データリテンションに関わる電荷抜けの現象には、隣接するメモリセル方向（図４における水平方向）へ電荷が移動する場合と、チャネル５１の方向（図４における垂直方向）に電荷が移動する場合とがある。本実施形態においては、これらのうちチャネル方向に電荷が移動する電荷抜けについて着目する。後述するように、電荷抜けにはメモリセルごとにばらつきが存在するため、時間とともに異なる書き込みレベルのメモリセルの閾値電圧が混ざり合ってくる。従って、ある読み出し電圧でメモリセルの閾値電圧を分類しただけでは、正確に書き込みレベルを再現することができなくなっていき、エラーの発生頻度が高まっていく。
【００４７】
データリテンションに関わる電荷抜けは、Ｆ−Ｎ（Fowler-Nordheim）トンネリングと呼ばれる物理現象によって説明される。チャージトラップ層５３に電子が蓄積されていると、チャージトラップ層５３からチャネル５１へ負の電位差が発生する。このとき、双方の間にあるトンネル層によって形成されるエネルギー障壁の形状が電位差によって歪み、その厚みが薄くなる。その結果、チャージトラップ層５３に存在する電荷がエネルギー障壁を透過してチャネル５１に抜けるトンネル現象の確率が高まる。
【００４８】
一方、前述したリードディスターブによる電荷抜けも同様にＦ−Ｎトンネリングによって説明できる。制御ゲート５５に正のパス電圧が印加されると、制御ゲート５５からチャネル５１へ正の電位差が発生する。これにより、チャージトラップ層５３からチャネル５１方向にも正の電位差が生じる。その結果、前述の電荷抜けとは逆にチャネル方向からチャージトラップ層５３へ電荷が透過するトンネル現象の確率が高まり、チャージトラップ層５３に電荷が蓄積されていく。
【００４９】
Ｆ−Ｎトンネリングによって発生するトンネル電流は、以上のように電圧を印加した結果エネルギー障壁にかかる電界の大きさに依存する。従って、トンネル層の膜厚が薄いほどトンネル電流は増加する。また、書き換えストレスによってトンネル層内に発生する欠陥が増えると、欠陥を介したトンネリング現象（Trap-assisted  Tunneling）が増えるためにトンネル電流が増加する。個々のメモリセルには、トンネル層の膜厚やトンネル層の欠陥の量や配置にばらつきがある。このため、Ｆ−Ｎトンネリングのしやすさ、すなわちデータリテンションやリードディスターブによる閾値電圧変動のしやすさには、ばらつきが発生する。一方で、データリテンションによって電荷が抜けやすいメモリセルはリードディスターブの影響を受けやすいという関係性も存在する。
【００５０】
このような関係性を利用し、リードディスターブによる閾値電圧の変動量を考慮することにより、データリテンションによって変動した閾値電圧から、より正確な書き込みレベルを推定することが可能となる。具体的には、読み出し制御部２１は、最初に、読み出し対象メモリセルに対して読み出しコマンドを発行する。検知部２２は、読み出し対象メモリセルの閾値電圧ＶｔｈＡを取得する。その後、読み出し制御部２１は、同一メモリアレイの異なるワードラインの読み出しコマンドを複数回発行する。これにより、読み出し対象メモリセルに対してパス電圧を印加させ、リードディスターブに起因するわずかな閾値電圧変動を発生させる。次に読み出し制御部２１は、再度、読み出し対象メモリセルに対し読み出しコマンドを発行する。検知部２２は、読み出し対象メモリセルの閾値電圧ＶｔｈＢを取得する。推定部２３は、この２つの閾値電圧を用いて書き込みレベルを推定する。
【００５１】
以上の処理を、図６および図７を用いてより具体的に説明する。図６は、不揮発性メモリ２に対して書き込みを行った直後の書き込みレベルごとの閾値電圧（Ｖｔｈ）と、リードディスターブによる閾値電圧の変動量（ΔＶｔｈＲＤ）との関係を表した図である。閾値電圧の変動量ΔＶｔｈＲＤは、閾値電圧ＶｔｈＢと閾値電圧ＶｔｈＡの差分である。図７は、不揮発性メモリ２に対する書き込みから時間が経過した後の閾値電圧（Ｖｔｈ）と閾値電圧の変動量（ΔＶｔｈＲＤ）との関係を表した図である。
【００５２】
書き込み直後では、データリテンションの影響を受けていないため、各書き込みレベルの分布を分ける境界線は、ΔＶｔｈＲＤの軸と平行となる。一方、書き込みから時間が経過すると、図７に示すように、各書き込みレベルの分布を分ける境界線が傾く。電荷が抜けやすいセルと抜けにくいセルとの間で、データリテンションによる閾値電圧の変動量が異なるためである。この境界線を読み出し対象メモリセルの統計的な性質から求めることで、書き込みレベルを推定することができる。
【００５３】
すなわち推定部２３は、閾値電圧ＶｔｈＡと閾値電圧ＶｔｈＢとの差分が大きいほど経時変化による閾値電圧の変動も大きいという前提に基づき、境界線を推定する。例えば推定部２３は、特徴空間上の点を複数の書き込みレベルにクラスタリングすることにより、境界線を推定する。そして推定部２３は、閾値電圧がいずれの書き込みレベルの分布に含まれるかを境界線に基づき判定することにより、各メモリセルの書き込みレベルを推定する。
【００５４】
次に、推定部２３の詳細な機能構成例について説明する。図８は、推定部２３の詳細な構成の一例を示したブロック図である。図８に示すように、推定部２３は、減算部１１１と、境界推定部１１２と、分類部１１３と、を含む。
【００５５】
減算部１１１は、例えば以下の（１）式に従い、閾値電圧ＶｔｈＢから閾値電圧ＶｔｈＡを減算し、閾値電圧の変動量ΔＶｔｈＲＤを算出する。ΔＶｔｈＲＤは、図６および図７で示したグラフの縦軸に相当し、ＶｔｈＡは図６および図７で示したグラフの横軸に相当する。
ΔＶｔｈＲＤ＝ＶｔｈＢ−ＶｔｈＡ  ・・・（１）
【００５６】
境界推定部１１２は、閾値電圧ＶｔｈＡと、閾値電圧の変動量ΔＶｔｈＲＤとにより定まる特徴空間（２次元特徴空間）上で、複数の書き込みレベルに対応する点の分布を分ける境界線を推定する。例えば境界推定部１１２は、この特徴空間に、各メモリセルの閾値電圧ＶｔｈＡと、閾値電圧の変動量ΔＶｔｈＲＤとを写像し、図６および図７に示すような閾値電圧の分布を算出する。特徴空間上には、異なる書き込みレベルごとに異なる分布形状および平均値を持った複数の集合が形成される。
【００５７】
これらの集合は、閾値電圧ＶｔｈＡおよび閾値電圧の変動量ΔＶｔｈＲＤの組み合わせごとの度数を示す分布である。例えば図６および図７では、紙面の上方にピークを有する山状の度数の分布になると解釈することもできる。境界推定部１１２は、複数の集合を最適に分割できる線を求めることで、隣接する書き込みレベルを分ける境界線（識別線）を求めることができる。
【００５８】
境界線は、例えばクラスタリングと呼ばれる技術を用いることで求めることができる。クラスタリングの手法として代表的なＫ−Ｍｅａｎｓ法を用いる場合、境界推定部１１２は、各書き込みレベルの初期代表ベクトルを特徴空間上に設定し、各メモリセルを代表ベクトルとの距離（例えばマハラノビス距離）が最小となるようにグルーピングする処理と、書き込みレベルの代表ベクトルを更新する処理を反復的に繰り返すことで、隣接する書き込みレベル間の境界線を求めることができる。境界線を求める手法は、Ｋ−Ｍｅａｎｓ法に限られないし、クラスタリング以外の手法を用いてもよい。
【００５９】
境界推定部１１２は、メモリセルをΔＶｔｈＲＤの大小によって２以上のグループに分離し、それぞれのグループにおいて、ＶｔｈＡ軸上で分布の谷を探索し、求められた複数の谷を結ぶ直線を境界線としてもよい。
【００６０】
分類部１１３は、推定された境界線により分割されるいずれの集合に分類されるかを判定することにより、各メモリセルの書き込みレベル（推定書き込みレベル）を推定する。
【００６１】
例えば境界推定部１１２でＫ−Ｍｅａｎｓ法のようなクラスタリングが行われた場合には、分類部１１３は、境界推定部１１２で推定された各メモリセルの推定書き込みレベル（分類されたクラスタリングに対応する推定書き込みレベル）をそのまま出力する。境界推定部１１２が境界線だけを求めた場合には、分類部１１３は、境界推定部１１２で求めた境界線の情報に加え、各メモリセルの閾値電圧ＶｔｈＡとΔＶｔｈＲＤとを用いて、各メモリセルが位置する特徴空間内の座標が、いずれの境界線の間にあるかを判定することにより、書き込みレベルを推定する。
【００６２】
次に、このように構成された第１の実施形態に係るメモリコントローラによる書き込みレベルの推定処理について図９を用いて説明する。図９は、第１の実施形態における推定処理の一例を示すフローチャートである。推定処理は、上述のように、例えばエラー訂正に失敗した場合に実行される処理である。
【００６３】
まず、検知部２２は、読み出し制御部２１により送出された制御コマンドに応じて、複数の読み出し対象メモリセルから、閾値電圧ＶｔｈＡを取得する（ステップＳ１０１）。読み出し制御部２１は、リードディスターブを発生させる制御コマンドを発行し、読み出し対象メモリセルの閾値電圧を変動させる（ステップＳ１０２）。検知部２２は、変動された読み出し対象メモリセルの閾値電圧を閾値電圧ＶｔｈＢとして取得する（ステップＳ１０３）。減算部１１１は、それぞれのメモリセルについて、閾値電圧の変動量ΔＶｔｈＲＤを上述の（１）式に従って計算する（ステップＳ１０４）。
【００６４】
境界推定部１１２は、各メモリセルのΔＶｔｈＲＤとＶｔｈＡを、この２つの軸で張られる特徴空間上に写像する（ステップＳ１０５）。境界推定部１１２は、特徴空間上に形成される複数の集合を最適に分割できる線を求めることで、隣接する書き込みレベルを分離する、特徴空間上の境界線を推定する（ステップＳ１０６）。分類部１１３は、各メモリセルがどの書き込みレベルで書き込まれたかを、推定された境界線に基づいて推定する（ステップＳ１０７）。
【００６５】
以上のような処理をすべてのデータ領域に存在するメモリセルについて行うことにより、データリテンションによって発生したエラーを低減し書き込み時のデータを再現することができる。
【００６６】
以上、具体的な例を挙げながら詳細に説明したように、本実施形態では、不揮発性メモリコントローラ５が、データの読み出し時に、リードディスターブによる閾値電圧の変動量を測定し、各メモリセルの当該変動量および閾値電圧の双方を用いて書き込みレベルを推定する。従って、リードディスターブを発生させた後の閾値電圧の分布だけを用いて書き込みレベルを推定する場合に比べ、リードディスターブを発生させる回数が同じであればより高い精度で推定することができる。言い換えれば、リードディスターブを発生させる回数がより少ない場合であっても、より高い精度で書き込みレベルを推定することが可能となる。このため、処理速度の向上とエラーの低減とを両立することができる。
【００６７】
なお、上述の例では、境界線を求める手法としてＫ−Ｍｅａｎｓ法やΔＶｔｈＲＤ軸において分類した２つのメモリセル群の分布の谷を結ぶ例を示したが、本実施形態ではその他の手法に基づく境界線の推定を行うことも可能である。例えば、複数の境界線が近い傾きとなる傾向を利用し、各境界線の傾きの平均値からのずれを正則化項として利用することで、各境界線をロバストに推定することも可能である。
【００６８】
また、本実施形態では特徴空間を閾値電圧ＶｔｈＡ、および、閾値電圧ＶｔｈＡと閾値電圧ＶｔｈＢとの差分（閾値電圧の変動量ΔＶｔｈＲＤ）によって定義したが、閾値電圧ＶｔｈＡおよび閾値電圧ＶｔｈＢの２つを軸とした特徴空間を用いてもよい。このような特徴空間によっても、前述の手順によって書き込みレベルを推定することが可能である。
【００６９】
（第２の実施形態）
第１の実施形態では、電圧印加の前後それぞれについて各メモリセルの閾値電圧が求められた後、各書き込みレベルを分離する境界線が求められる。第２の実施形態は、より少ない読み出し回数により境界線を求める方法に関する。読み出し回数を削減するために、本実施形態では特徴空間として第１の実施形態で述べたＶｔｈＡとＶｔｈＢの２つを軸とする空間を考える。各書き込みレベルは、書き込み直後には図１０のように傾き１の直線上に分布する。書き込みから時間が経過すると、変動しやすいメモリセルの閾値電圧が低下するため、図１１のように各分布の傾きが低下していく。
【００７０】
具体的には、本実施形態では、書き込みレベルを分離する境界線として、所定の関数（例えば直線、２次関数、楕円等）で表される境界線を仮定する。推定部は、電圧を印加する前後の複数の読み出しデータから関数のパラメータを導出することで、境界線を求める。例えば境界線を直線で表した場合、書き込み直後は図１０の一点鎖線のように傾きが−１付近の直線が境界線となるが、書き込みから時間が経った図１１の場合には境界線の傾きはより寝た形状となる。以下、説明を簡単に行うために、２つの書き込みレベルの境界線を求める場合に限定して説明する。３以上の書き込みレベルの境界線を求める場合にも同様の手法を適用できる。
【００７１】
図１２は、本実施形態における読み出し部２０−２の構成例を示すブロック図である。  なお、本実施形態のメモリシステムは、読み出し部２０−２以外の構成は図１と同様であるため詳細な説明は省略する。図１２に示すように、読み出し部２０−２は、読み出し制御部２１−２と、検知部２２−２と、推定部２３−２とを備える。
【００７２】
読み出し制御部２１−２は、所定の電圧（第１電圧）を印加する前に、所定のＭ種類（Ｍは２以上の整数）の読み出し電圧により読み出しを行うためのコマンドを発行する。また、読み出し制御部２１−２は、所定の電圧を印加した後に、所定のＮ種類（Ｎは２以上の整数）の読み出し電圧により読み出しを行うためのコマンドを発行する。ＭおよびＮの値が大きいほど推定の精度は高まるが、読み出し回数が増えるため、処理時間が増加する。従って、処理速度の要求などに応じて適当なＭおよびＮの値を定めればよい。
【００７３】
検知部２２−２は、読み出し制御部２１−２が発行したコマンドによる読み出し結果（読み出しデータ）を検知する。本実施形態の読み出しデータは、例えば、印加した読み出し電圧に対する大小に応じて定められるビット値（「１」または「０」）である。Ｍ種類の読み出し電圧により、Ｍ個の読み出し結果ＲｅｓｕｌｔＡが検知され、Ｎ種類の読み出し電圧により、Ｎ個の読み出し結果ＲｅｓｕｌｔＢが検知される。なお、Ｍ種類の読み出し電圧のそれぞれに対する読み出し結果は、複数の読み出し対象メモリセルに対応する複数のビット値を含む。
【００７４】
推定部２３−２は、検知部２２−２により検知された、Ｍ個の読み出し結果ＲｅｓｕｌｔＡ、および、Ｎ個の読み出し結果ＲｅｓｕｌｔＢに基づいて、読み出し対象メモリセルに書き込まれた書き込みデータに対応する書き込みレベルを推定する。
【００７５】
例えば推定部２３−２は、Ｍ個の読み出し結果ＲｅｓｕｌｔＡと、Ｎ個の読み出し結果ＲｅｓｕｌｔＢとの間のビット演算の結果に基づいて、複数のメモリセルを分類する（Ｍ＋１）個のクラスそれぞれに対して用いる（Ｍ＋１）個の読み出し電圧を決定する。そして推定部２３−２は、決定した読み出し電圧により、書き込みデータに対応する書き込みレベルを推定する。
【００７６】
図１３は、推定部２３−２の詳細な構成の一例を示したブロック図である。図１３に示すように、推定部２３−２は、ＡＮＤ演算部２０１と、ビットカウント部２０２と、境界推定部２０３と、決定部２０４と、マージ部２０５と、を含む。
【００７７】
ＡＮＤ演算部２０１は、所定の電圧を印加する前後の複数の読み出し結果の各組み合わせについて、ビットごと（メモリセルごと）のＡＮＤ演算を行う。ビットカウント部２０２は、各組み合わせについて、ＡＮＤ演算の結果が「１」となるビットの数をカウントする。
【００７８】
例えば、電圧印加の前後にそれぞれ２回（Ｍ＝２、Ｎ＝２）の読み出しを行う場合、電圧印加前の２回の読み出し結果であるＲｅｓｕｌｔＡ１、ＲｅｓｕｌｔＡ２と、電圧印加後の２回の読み出し結果であるＲｅｓｕｌｔＢ１、ＲｅｓｕｌｔＢ２と、の間で、以下の４つの組み合わせのＡＮＤ演算結果が生成できる。ビットカウント部２０２は、４つの組み合わせそれぞれに対応する、４のカウント値を算出する。
（Ｃ１）ＲｅｓｕｌｔＡ１  ＆  ＲｅｓｕｌｔＢ１
（Ｃ２）ＲｅｓｕｌｔＡ１  ＆  ＲｅｓｕｌｔＢ２
（Ｃ３）ＲｅｓｕｌｔＡ２  ＆  ＲｅｓｕｌｔＢ１
（Ｃ４）ＲｅｓｕｌｔＡ２  ＆  ＲｅｓｕｌｔＢ２
【００７９】
境界推定部２０３は、読み出し結果ＲｅｓｕｌｔＡと、読み出し結果ＲｅｓｕｌｔＢとにより定まる特徴空間（ＶｔｈＡとＶｔｈＢを軸とする２次元特徴空間）上で、複数の書き込みレベルに対応する点の分布を分ける境界線を推定する。例えば境界推定部２０３は、ビット演算の結果であるカウント値を入力し、境界線のパラメータを出力する関数を用いて、境界線を推定する。
【００８０】
例えば境界線として直線を仮定する場合、パラメータは「傾き」と「オフセット」の２つである。この場合、これら２つのパラメータそれぞれについて対応する関数を用意し、カウント値を入力することで、境界線の「傾き」と「オフセット」を取得する。パラメータを算出する関数は、例えば１次または多次の多項式等であってよい。多項式の係数は、電圧印加前後の読み出し回数や位置、ＮＡＮＤデバイスの特性等に応じ、予め定められた値であってよい。
【００８１】
決定部２０４は、推定された境界線に基づいて、読み出しに用いる（Ｍ＋１）個の読み出し電圧を決定する。前述のＭ＝２の例において２回の読み出し電圧をそれぞれＶＡ１、ＶＡ２としたとき、各メモリセルはその閾値電圧がＶＡ１未満、ＶＡ１〜ＶＡ２、ＶＡ２以上の３クラスに分けることができる。このように本実施形態では、電圧印加前にＭ種類の読み出し電圧により読み出しを行っているため、この読み出し結果から、各メモリセルを（Ｍ＋１）種類のクラスに分類することができる。決定部２０４は、この（Ｍ＋１）種類のクラスのそれぞれについて、推定された境界線に基づき読み出し電圧を決定する。Ｍ＝２の例では、ＶＡ１未満のクラスについては、特徴空間上における境界線とＶｔｈＡ＝ＶＡ１なる直線の交点のＶｔｈＢ軸座標、ＶＡ１〜ＶＡ２のクラスについては、特徴空間上における境界線とＶｔｈＡ＝（ＶＡ１＋ＶＡ２）／２なる直線の交点のＶｔｈＢ軸座標、ＶＡ２以上のクラスについては特徴空間上における境界線とＶｔｈＡ＝ＶＡ２なる直線の交点のＶｔｈＢ軸座標が読み出し電圧となる。
【００８２】
読み出し制御部２１−２は、決定部２０４により決定された読み出し電圧により読み出しを行うコマンドを発行する。これにより、（Ｍ＋１）種類のクラスに対応する、（Ｍ＋１）個の読み出し結果ＲｅｓｕｌｔＣが得られる。
【００８３】
マージ部２０５は、読み出し結果ＲｅｓｕｌｔＣを（Ｍ＋１）種類のクラスごとにマージした読み出し結果（補正した読み出し結果）を生成して出力する。
【００８４】
次に、このように構成された第２の実施形態における推定処理について図１４を用いて説明する。図１４は、第２の実施形態における推定処理の一例を示すフローチャートである。
【００８５】
読み出し制御部２１−２は、Ｍ種類の読み出し電圧によりデータ（読み出し結果ＲｅｓｕｌｔＡ）を読み出すためのコマンドを発行する。検知部２２−２は、このコマンドに応じて、Ｍ個の読み出し結果ＲｅｓｕｌｔＡを取得する（ステップＳ２０１）。
【００８６】
読み出し制御部２１は、リードディスターブを発生させる制御コマンドを発行し、読み出し対象メモリセルの閾値電圧を変動させる（ステップＳ２０２）。
【００８７】
読み出し制御部２１−２は、さらにＮ種類の読み出し電圧によりデータ（読み出し結果ＲｅｓｕｌｔＢ）を読み出すためのコマンドを発行する。検知部２２−２は、このコマンドに応じて、Ｎ個の読み出し結果ＲｅｓｕｌｔＢを取得する（ステップＳ２０３）。
【００８８】
ＡＮＤ演算部２０１は、電圧印加の前後の読み出し結果の各組み合わせについて、ビットごと（メモリセルごと）のＡＮＤ演算を行う。ビットカウント部２０２は、ＡＮＤ演算の結果が「１」となるビットの個数をカウントする（ステップＳ２０４）。
【００８９】
境界推定部２０３は、得られたカウント値を予め設定した関数に入力することで、境界線のパラメータを算出する（ステップＳ２０５）。決定部２０４は、求められた境界線に基づき、（Ｍ＋１）個の読み出し電圧を決定する（ステップＳ２０６）。
【００９０】
読み出し制御部２１−２は、決定された読み出し電圧によりデータ（読み出し結果ＲｅｓｕｌｔＣ）を読み出すためのコマンドを発行する。検知部２２−２は、このコマンドに応じて、（Ｍ＋１）個の読み出し結果ＲｅｓｕｌｔＣを取得する（ステップＳ２０７）。
【００９１】
マージ部２０５は、読み出し結果ＲｅｓｕｌｔＣを（Ｍ＋１）種類のクラスごとにマージし、マージした読み出し結果を推定した書き込みレベルとして出力する（ステップＳ２０８）。
【００９２】
なお、上述の例では、境界線を求めた後にクラスごとの読み出し電圧を求める例を示したが、この処理をまとめビットカウントから直接読み出し電圧を求めることも可能である。例えば、ビットカウント部２０２で求められた各クラスのビットカウント値と、適切な読み出し電圧の関係性を予め学習したモデルを作成しておく。推定部２３−２は、このモデルを活用することで読み出し電圧を求めることができる。
【００９３】
このように、第２の実施形態に係るメモリコントローラでは、より少ない読み出し回数で境界線を求めることができる。従って、処理速度をさらに向上させることができる。
【００９４】
（変形例１）
これまでは各処理をコントローラ３が実施する例について説明した。コントローラ３で実施する処理のうち少なくとも一部の処理は、不揮発性メモリ２上で実施してもよい。
【００９５】
またコントローラ３で実施する処理のうち少なくとも一部を、メモリシステム１の外部の装置（例えば、ホストＣＰＵ４、および、クラウド環境上に構築されたサーバ装置など）で実施してもよい。このように、コントローラ３が備える機能は、コントローラ３、不揮発性メモリ２、および、ホストＣＰＵ４などの少なくとも一部を含む記憶システムが備えるように構成することができる。
【００９６】
（補足説明）
上述の不揮発性メモリコントローラ（コントローラ）に含まれる書き込み部、読み出し部（読み出し制御部、検知部、推定部）、およびＥＣＣ処理部は、例えば、１または複数のプロセッサにより実現される。例えば上記各部は、ＣＰＵ（Central  Processing  Unit）などのプロセッサにプログラムを実行させること、すなわちソフトウェアにより実現してもよい。また、上記各部は、専用のＩＣ（Integrated  Circuit）、すなわちハードウェアにより実現してもよい。また、上記各部は、ソフトウェアおよびハードウェアを併用して実現してもよい。複数のプロセッサを用いる場合、各プロセッサは、上記各部のうち１つを実現してもよいし、上記各部のうち２以上を実現してもよい。
【００９７】
以上説明したとおり、第１から第２の実施形態によれば、トンネル層の膜厚および書き換えストレスの影響によりメモリセルごとにエラーレートのばらつきがあるような不揮発性メモリに対しても、書き込みレベルを高精度に推定可能となる。
【００９８】
第１または第２の実施形態に係るメモリコントローラで実行されるプログラムは、ＲＯＭ等に予め組み込まれて提供される。
【００９９】
第１または第２の実施形態に係るメモリコントローラで実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供されるように構成してもよい。
【０１００】
さらに、第１または第２の実施形態に係るメモリコントローラで実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第１または第２の実施形態に係るメモリコントローラで実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１０１】
第１または第２の実施形態に係るメモリコントローラで実行されるプログラムは、コンピュータを上述したメモリコントローラの各部として機能させうる。このコンピュータは、ＣＰＵがコンピュータ読取可能な記憶媒体からプログラムを主記憶装置上に読み出して実行することができる。
【０１０２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０３】
１  メモリシステム
２  不揮発性メモリ
３  コントローラ
５  不揮発性メモリコントローラ
１０  書き込み部
２０、２０−２  読み出し部
２１、２１−２  読み出し制御部
２２、２２−２  検知部
２３、２３−２  推定部
【図１】
2019160355.tif 000003
【図２】
2019160355.tif 000004
【図３】
2019160355.tif 000005
【図４】
2019160355.tif 000006
【図５】
2019160355.tif 000007
【図６】
2019160355.tif 000008
【図７】
2019160355.tif 000009
【図８】
2019160355.tif 000010
【図９】
2019160355.tif 000011
【図１０】
2019160355.tif 000012
【図１１】
2019160355.tif 000013
【図１２】
2019160355.tif 000014
【図１３】
2019160355.tif 000015
【図１４】
2019160355.tif 000016