(57)【要約】【課題】判定電圧の値を効率的に保存することができるメモリシステムを得ること。【解決手段】メモリシステムは、第１メモリと、第１回路と、第２メモリを備える。第１メモリは、メモリセルトランジスタに格納されたデータをメモリセルトランジスタのしきい値電圧と３以上の第１数の第１判定電圧との比較に基づいて取得するリード処理を実行する周辺回路を備える。第１回路は、第１処理と第２処理を実行する。第１処理は、第１数の第１判定電圧のうちの２以上の第２数の第２判定電圧の値に基づいて、第２数の第２判定電圧の何れとも異なる第３判定電圧の値の推定値を演算する処理である。第２処理は、第３判定電圧の値と第３判定電圧の値の推定値との差分値を演算する処理である。第２メモリは、第２処理によって得られた第３判定電圧にかかる差分値を記憶する。【選択図】図４
2020047319.tif 000002
【特許請求の範囲】
【請求項１】
メモリセルトランジスタを備えるメモリセルアレイと、前記メモリセルトランジスタに格納された複数ビットのデータを前記メモリセルトランジスタのしきい値電圧と３以上の第１数の第１判定電圧の少なくとも一部との比較に基づいて取得するリード処理を実行する周辺回路と、を備える第１メモリと、
前記第１数の前記第１判定電圧のうちの前記第１数より少ない２以上の第２数の第２判定電圧の値に基づいて前記第２数の前記第２判定電圧の何れとも異なる第３判定電圧の値の推定値を演算する第１処理を実行し、前記第３判定電圧の値と前記第３判定電圧の値の推定値との差分値を演算する第２処理を実行する第１回路と、
前記第２処理によって得られた前記第３判定電圧にかかる差分値を記憶する第２メモリと、
を備えるメモリシステム。
【請求項２】
前記第１処理と同じ処理である第３処理を実行し、前記第３処理によって得られた前記第３判定電圧の値の推定値と前記第２メモリに記憶された前記第３判定電圧にかかる差分値とに基づいて前記第３判定電圧の値を演算する第４処理を実行する第２回路、
をさらに備える請求項１に記載のメモリシステム。
【請求項３】
前記第２メモリは、前記第３判定電圧にかかる差分値と、更に前記第２数の前記第２判定電圧の値と、を含む判定電圧情報を記憶する、
請求項２に記載のメモリシステム。
【請求項４】
前記第２回路は、前記第２メモリに記憶された前記判定電圧情報から前記第２数の前記第２判定電圧の値を取得して、取得した前記第２数の前記第２判定電圧の値を用いて前記第３処理を実行する、
請求項３に記載のメモリシステム。
【請求項５】
前記周辺回路に対して第１のリード処理の実行を指示し、前記第１のリード処理によって取得されたデータに対してエラー訂正を実行し、前記エラー訂正の結果に基づいて前記第１数の前記第１判定電圧の値を更新するメモリコントローラをさらに備え、
前記第１回路は、更新された前記第１数の前記第１判定電圧の値に基づいて前記第１処理および前記第２処理を実行することによって前記判定電圧情報を生成する、
請求項４に記載のメモリシステム。
【請求項６】
前記第１回路は、前記メモリコントローラの外部回路として、前記メモリコントローラの内部回路として、又は、前記第１メモリの内部回路として、構成され、
前記第２回路は、前記メモリコントローラの外部回路として、前記メモリコントローラの内部回路として、又は、前記第１メモリの内部回路として、構成される、
請求項５に記載のメモリシステム。
【請求項７】
前記第２回路は、前記第１のリード処理の後、前記第２メモリに記憶された前記判定電圧情報に基づいて前記第３処理および前記第４処理を実行することによって前記更新された前記第１数の前記第１判定電圧を復元し、
前記メモリコントローラは、前記復元された前記第１数の前記第１判定電圧を用いた第２のリード処理の実行を前記周辺回路に指示する、
請求項５又は請求項６に記載のメモリシステム。
【請求項８】
前記第２数は、２であり、
前記第２数の前記第２判定電圧の値は、前記第１数の前記第１判定電圧の値の最大値と最小値とである、
請求項１に記載のメモリシステム。
【請求項９】
前記第２数は、２であり、
前記第２数の前記第２判定電圧のは、前記第１数の前記第１判定電圧の値の最大値と最小値の次に大きい値とである、
請求項１に記載のメモリシステム。
【請求項１０】
前記第１処理は、前記第２数の前記第２判定電圧の値の間の値を補間する処理または前記第２数の前記第２判定電圧の値の間より外の値を補外する処理を含む、
請求項１に記載のメモリシステム。
【請求項１１】
メモリセルトランジスタに格納された複数ビットのデータを前記メモリセルトランジスタのしきい値電圧と３以上の第１数の第１判定電圧の少なくとも一部との比較に基づいて取得するリード処理を実行することと、
前記第１数の前記第１判定電圧のうちの前記第１数より少ない２以上の第２数の第２判定電圧の値に基づいて前記第２数の前記第２判定電圧の何れとも異なる第３判定電圧の値の推定値を演算する第１処理を実行することと、
前記第３判定電圧の値と前記第３判定電圧の値の推定値との差分値を演算する第２処理を実行することと、
前記第２処理によって得られた前記第３判定電圧にかかる差分値を第２メモリに格納することと、
を備えるメモリシステムの制御方法。
【請求項１２】
前記差分値を格納することの後に、前記第１処理と同じ方法で、前記第２数の前記第２判定電圧の値に基づいて前記第３判定電圧の値の推定値を演算する第３処理を実行することと、
前記第３処理によって得られた前記第３判定電圧の値の推定値と前記第２メモリに記憶された前記第３判定電圧にかかる差分値とに基づいて前記第３判定電圧の値を演算する第４処理を実行することと、
をさらに備える請求項１１に記載のメモリシステムの制御方法。
【請求項１３】
前記差分値を格納することは、前記第３判定電圧にかかる差分値と、更に前記第２数の前記第２判定電圧の値と、を含む判定電圧情報を前記第２メモリに格納すること、
を含む請求項１２に記載のメモリシステムの制御方法。
【請求項１４】
前記第３処理を実行することは、前記第２メモリに格納された前記判定電圧情報から前記第２数の前記第２判定電圧の値を取得して、取得した前記第２数の前記第２判定電圧の値を用いて前記第３処理を実行すること、
を含む請求項１３に記載のメモリシステムの制御方法。
【請求項１５】
第１のリード処理の実行し、前記第１のリード処理によって取得されたデータに対してエラー訂正を実行し、前記エラー訂正の結果に基づいて前記第１数の前記第１判定電圧の値を更新することをさらに備え、
前記第１処理を実行することは、更新された前記第１数の前記第１判定電圧の値に基づいて前記第１処理を実行すること、
を含む請求項１４に記載のメモリシステムの制御方法。
【請求項１６】
前記第１のリード処理の後、前記第２メモリに記憶された前記判定電圧情報に基づいて前記第３処理および前記第４処理を実行することによって前記更新された前記第１数の前記第１判定電圧を復元することと、
前記復元された前記第１数の前記第１判定電圧を用いた第２のリード処理を実行することと、
をさらに備える請求項１５に記載のメモリシステムの制御方法。
【請求項１７】
前記第２数は、２であり、
前記第２数の前記第２判定電圧の値は、前記第１数の前記第１判定電圧の値の最大値と最小値とである、
請求項１１に記載のメモリシステムの制御方法。
【請求項１８】
前記第２数は、２であり、
前記第２数の前記第２判定電圧の値は、前記第１数の前記第１判定電圧の値の最大値と最小値の次に大きい値とである、
請求項１１に記載のメモリシステムの制御方法。
【請求項１９】
前記第１処理は、前記第２数の前記第２判定電圧の値の間の値を補間する処理または前記第２数の前記第２判定電圧の値の間より外の値を補外する処理を含む、
請求項１１に記載のメモリシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステムおよびメモリシステムの制御方法に関する。
【背景技術】
【０００２】
従来、メモリセルトランジスタを有するメモリシステムが広く知られている。そのようなメモリシステムにおいては、メモリセルトランジスタのしきい値電圧と判定電圧との比較に基づいて、そのメモリセルトランジスタに保持されるデータの値が判定される、リード処理が実行される。
【０００３】
しかしながら、メモリセルトランジスタのしきい値電圧は、使用状況に応じて変化し得る。これによって、データの誤判定（ビットエラー）が起こり得る。ビットエラーの発生に対する１つの対策として、メモリシステムは、判定電圧の設定値が変更可能に構成される。
【０００４】
例えば、メモリシステムは、ビットエラーが発生した場合、当該ビットエラーによって化けたデータを、エラー訂正機能を用いて正しいデータに訂正する。エラー訂正機能を用いても正しいデータが得られない場合、メモリシステムは、エラー訂正機能を用いて正しいデータを得ることを可能とする判定電圧の値を求め、求めた値を判定電圧として設定してリード処理を実行することができる。
【０００５】
エラー訂正機能を用いて正しいデータを得ることを可能とする判定電圧の値を保存して、次回のリード処理においてその保存された値が使用できれば、その判定電圧の値を求める処理の実行回数を低減できる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一つの実施形態は、判定電圧の値を効率的に保存することができるメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
一つの実施形態によれば、メモリシステムは、第１メモリと、第１回路と、第２メモリとを備える。第１メモリは、メモリセルトランジスタを備えるメモリセルアレイと、リード処理を実行する周辺回路とを備える。リード処理は、メモリセルトランジスタに格納された複数ビットのデータをメモリセルトランジスタのしきい値電圧と３以上の第１数の第１判定電圧の少なくとも一部との比較に基づいて取得する処理である。第１回路は、第１処理と第２処理とを実行する。第１処理は、第１数の第１判定電圧のうちの第１数より少ない２以上の第２数の第２判定電圧の値に基づいて第２数の第２判定電圧の何れとも異なる第３判定電圧の値の推定値を演算する処理である。第２処理は、第３判定電圧の値と第３判定電圧の値の推定値との差分値を演算する処理である。第２メモリは、第２処理によって得られた第３判定電圧にかかる差分値を記憶する。
【図面の簡単な説明】
【０００８】
【図１】図１は、第１の実施形態のメモリシステムの構成例を示す図である。
【図２】図２は、第１の実施形態のメモリセルアレイに含まれる１個のブロックの構成例を示す回路図である。
【図３】図３は、第１の実施形態のメモリセルＭＴの取り得るしきい値電圧の分布を示す図である。
【図４】図４は、第１の実施形態の圧縮回路によって実行される第１処理および第２処理の具体例を説明するための図である。
【図５】図５は、第１の実施形態の展開回路によって実行される第３処理および第４処理の具体例を説明するための図である。
【図６】図６は、第１の実施形態のメモリシステムの主たる動作の概略を示すフローチャートである。
【図７】図７は、第１の実施形態の圧縮処理の手順の一例を説明するための図である。
【図８】図８は、第１の実施形態の展開処理の手順の一例を説明するための図である。
【図９】図９は、第２の実施形態の第１処理および第３処理の具体例を説明するための図である。
【図１０】図１０は、第５の実施形態の圧縮回路および展開回路の配置の一例を説明するための図である。
【図１１】図１１は、第５の実施形態の圧縮回路および展開回路の配置の別の一例を説明するための図である。
【図１２】図１２は、第５の実施形態の圧縮回路および展開回路の配置のさらに別の一例を説明するための図である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよびメモリシステムの制御方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【００１０】
（第１の実施形態）
図１は、第１の実施形態のメモリシステムの構成例を示す図である。メモリシステム１は、ホスト２と所定の通信インタフェースで接続される。ホスト２は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。
【００１１】
メモリシステム１は、ホスト２からアクセス要求（リード要求およびライト要求）を受信する。メモリシステム１は、ライト要求とともに、書き込み対象のデータを受信する。
【００１２】
メモリシステム１は、メモリコントローラ１０と、ＮＡＮＤ型のフラッシュメモリ（ＮＡＮＤメモリ）２０と、ＲＡＭ（Random  Access  Memory）３０と、を備えている。
【００１３】
ＮＡＮＤメモリ２０は、不揮発性のメモリであり、実施形態の第１メモリの一例である。ＮＡＮＤメモリ２０は、周辺回路２１およびメモリセルアレイ２２を備える。
【００１４】
メモリセルアレイ２２は、それぞれが複数の不揮発性のメモリセルトランジスタ（メモリセル）の集合である複数のブロックを備える。ブロックに格納された全てのデータは、一括して消去される。
【００１５】
周辺回路２１は、例えば、ロウデコーダ、カラムデコーダ、センスアンプ、ラッチ回路、および電圧発生回路を含む。周辺回路２１は、メモリコントローラ１０からコマンドを受信すると、メモリセルアレイ２２に対し、プログラム処理、リード処理、およびイレース処理のうちの当該コマンドに対応した処理を実行する。
【００１６】
図２は、第１の実施形態のメモリセルアレイ２２に含まれる１個のブロックの構成例を示す回路図である。図示するように、各ブロックは、Ｘ方向に沿って順に配列された（ｐ＋１）個のＮＡＮＤストリングを備えている（ｐ≧０）。（ｐ＋１）個のＮＡＮＤストリングにそれぞれ含まれる選択トランジスタＳＴ１は、ドレインがビット線ＢＬ０〜ＢＬｐに接続され、ゲートが選択ゲート線ＳＧＤに共通接続されている。また、選択トランジスタＳＴ２は、ソースがソース線ＳＬに共通接続され、ゲートが選択ゲート線ＳＧＳに共通接続されている。
【００１７】
各メモリセルＭＴは、半導体基板上に形成された積層ゲート構造を備えたＭＯＳＦＥＴ（Metal  Oxide  Semiconductor  Field  Effect  Transistor）から構成される。積層ゲート構造は、半導体基板上にトンネル酸化膜を介在して形成されたフローティングゲート、及びフローティングゲート上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。フローティングゲートに蓄えられる電子の数に応じてしきい値電圧が変化する。メモリセルＭＴは、しきい値電圧の違いに応じてデータを記憶する。即ち、メモリセルＭＴは、フローティングゲートに、データに応じた量の電荷を保持する。
【００１８】
各ＮＡＮＤストリングにおいて、（ｑ＋１）個のメモリセルＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている（ｑ≧０）。そして、最もドレイン側に位置するメモリセルＭＴから順に、制御ゲート電極がワード線ＷＬ０〜ＷＬｑにそれぞれ接続されている。従って、ワード線ＷＬ０に接続されたメモリセルＭＴのドレインは選択トランジスタＳＴ１のソースに接続され、ワード線ＷＬｑに接続されたメモリセルＭＴのソースは選択トランジスタＳＴ２のドレインに接続されている。
【００１９】
ワード線ＷＬ０〜ＷＬｑは、ブロック内の各ＮＡＮＤストリング間で、メモリセルＭＴの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルＭＴの制御ゲート電極は、同一のワード線ＷＬに接続される。各メモリセルＭＴに１ビットの値を保持可能に構成される場合には、同一のワード線ＷＬに接続される（ｐ＋１）個のメモリセルＭＴは１ページとして取り扱われ、このページごとにプログラム処理及びリード処理が行われる。
【００２０】
各メモリセルＭＴには、複数ビットのデータが格納され得る。例えば、各メモリセルＭＴがｎ（ｎ≧２）ビットのデータを格納可能な場合、ワード線当たりの記憶容量はｎページ分のサイズに等しくなる。
【００２１】
なお、各メモリセルＭＴに格納されるデータのビット数は、特定の数に限定されない。ここでは、各メモリセルＭＴに３ビットのデータが格納されるＴＬＣ（Triple  Level  Cell）と呼ばれる方式が採用された場合について説明する。
【００２２】
図３は、第１の実施形態のメモリセルＭＴの取りうるしきい値電圧の分布を示す図である。本図において、横軸はしきい値電圧を表し、縦軸はメモリセル数を表す。
【００２３】
メモリセルＭＴにデータが書き込まれた場合、各メモリセルのしきい値電圧が、分布Ｅｒ、分布Ａ、分布Ｂ、分布Ｃ、分布Ｄ、分布Ｅ、分布Ｆ、および分布Ｇの８つの分布のうちの何れかに含まれるように、各メモリセルＭＴのしきい値電圧が制御される。分布Ｅｒ、分布Ａ、分布Ｂ、分布Ｃ、分布Ｄ、分布Ｅ、分布Ｆ、および分布Ｇのそれぞれは、“１１１”、“１１０”、“１００”、“０００”、“０１０”、“０１１”、“００１”、および“１０１”のうちの１つと１対１に対応付けられている。これによって、各メモリセルＭＴは、３ビットのデータを保持することができる。なお、各分布に対応付けられるデータはこれらに限定されない。
【００２４】
分布ＥｒはメモリセルＭＴのデータが消去された状態に対応する。即ち、周辺回路２１によってイレース処理が実行された後のメモリセルＭＴのしきい値電圧は、分布Ｅｒに含まれる。メモリセルＭＴのしきい値電圧は、周辺回路２１が実行するプログラム処理によって、分布Ｅｒ内に維持されるか、または分布Ａ〜分布Ｇのうちのデータに対応した分布に至るまで上昇せしめられる。
【００２５】
隣接する２つの分布間には、リード処理用の判定電圧が設定される。例えば、図３に示されるように、分布Ｅｒと分布Ａとの間に判定電圧ＶＡが、分布Ａと分布Ｂとの間に判定電圧ＶＢが、分布Ｂと分布Ｃとの間に判定電圧ＶＣが、分布Ｃと分布Ｄとの間に判定電圧ＶＤが、分布Ｄと分布Ｅとの間に判定電圧ＶＥが、分布Ｅと分布Ｆとの間に判定電圧ＶＦが、分布Ｆと分布Ｇとの間に判定電圧ＶＧが、設定される。
【００２６】
リード処理においては、周辺回路２１は、各メモリセルＭＴのしきい値電圧が属する分布を、当該しきい値電圧と判定電圧ＶＡ〜ＶＧとの比較に基づいて特定する。そして、周辺回路２１は、特定した分布を当該分布に対応する値のデータにデコードして、デコードによって得られたデータをメモリコントローラ１０に送信する。
【００２７】
なお、３ビットのデータのうちの特定ビットのみがリード処理の対象の場合、周辺回路２１は、判定電圧ＶＡ〜ＶＧのうちの一部のみを使用することによって特定ビットのデータを判定してもよい。つまり、周辺回路２１は、メモリセルＭＴに格納されたデータを判定電圧ＶＡ〜ＶＧのうちの一部または全部を用いて判定することができる。
【００２８】
ここで、前述したように、メモリセルＭＴのしきい値電圧は、使用状況に応じて変化し得る。しきい値電圧の分布の一部または全部が分布間の境界にあるべき判定電圧を越えた場合、データの誤判定が発生する。即ち、書き込まれたデータと異なるデータが読み出される、ビットエラーが発生する。
【００２９】
メモリコントローラ１０は、ビットエラーに対し、エラー訂正と、判定電圧のシフトと、で対処する。
【００３０】
具体的には、メモリコントローラ１０は、ＮＡＮＤメモリ２０から取得したデータに対してエラー訂正を実行する。エラー訂正に失敗した場合、メモリコントローラ１０は、判定電圧ＶＡ〜ＶＧの最適値を探索し、探索によって得られた判定電圧ＶＡ〜ＶＧの最適値を判定電圧ＶＡ〜ＶＧの新たな設定値として設定してリード処理をリトライする。
【００３１】
ここで、判定電圧ＶＡ〜ＶＧの最適値は、ビットエラーの発生率を出来るだけ小さくすることができる判定電圧ＶＡ〜ＶＧの値である。判定電圧ＶＡ〜ＶＧの最適値は、必ずしも最適な値、例えばビットエラーの発生率を最小にするための値、でなくてもよい。本実施形態及び後述する実施形態では、ビットエラーの発生率を出来るだけ小さくすることができる判定電圧ＶＡ〜ＶＧの値が所定の方法で探索される。当該探索によって得られた判定電圧ＶＡ〜ＶＧの値を判定電圧ＶＡ〜ＶＧの最適値と定義する。
【００３２】
メモリコントローラ１０は、判定電圧ＶＡ〜ＶＧの最適値を判定電圧ＶＡ〜ＶＧの新たな設定値として設定してリトライされたリード処理によって得られたデータに対してエラー訂正を実行する。エラー訂正に成功した場合、メモリコントローラ１０は、判定電圧ＶＡ〜ＶＧの新たな設定値をＲＡＭ３０に設けられた管理領域３１に保存し、次のリード処理を実行する際に、当該管理領域３１に保存された判定電圧ＶＡ〜ＶＧの新たな設定値を利用する。
【００３３】
これによって、判定電圧ＶＡ〜ＶＧの最適値を探索する処理の実行回数が低減され得る。例えば、メモリコントローラ１０がメモリセルＭＴの同じ箇所に対して複数回のリード処理を実行する場合、探索された判定電圧ＶＡ〜ＶＧの最適値を取得して保存しておけば、当該複数回のリード処理のそれぞれにおいて探索を行う処理を省略できる。つまり、判定電圧ＶＡ〜ＶＧの最適値の探索に要する時間の分だけリード処理の実行速度を向上させることができる。
【００３４】
なお、判定電圧ＶＡ〜ＶＧの最適値の探索方法は、特定の方法に限定されない。一例では、メモリコントローラ１０は、ディストリビューションリードによって判定電圧ＶＡ〜ＶＧの最適値を探索することができる。ディストリビューションリードは、しきい値電圧の分布を測定する処理である。
【００３５】
ディストリビューションリードでは、１つの判定電圧を用いて各メモリセルＭＴがオン状態であるかオフ状態であるかが判定される。判定電圧の値が所定の刻み幅ずつ変化せしめられながら複数回のリード処理が実行される。各リード処理では、オン状態またはオフ状態（所定状態）のメモリセルの数が、判定電圧として使用された値毎に取得される。そして、所定状態のメモリセルの数に基づいて、例えば図３に示したような、８つのローブを有するしきい値電圧の分布が得られる。
【００３６】
ディストリビューションリードによって８つのローブを有するしきい値電圧の分布が得られた場合、メモリセルの数が極小となる７つの電圧値が、判定電圧ＶＡ〜ＶＧの最適値として決定される。
【００３７】
なお、ディストリビューションリードを実行する構成要素は、特定の構成要素に限定されない。例えば、メモリコントローラ１０が、それぞれ判定電圧の値を少しずつ異ならせた複数回のリード処理を逐一、周辺回路２１に指示して、当該複数回のリード処理のそれぞれから得られたデータに基づいて所定状態のメモリセルの数をカウントしてもよい。
【００３８】
または、周辺回路２１がディストリビューションリードを実行する機能を有する場合には、メモリコントローラ１０は、周辺回路２１にディストリビューションリードの実行を指示し、周辺回路２１は、ディストリビューションリードによって得られたしきい値電圧の分布から判定電圧ＶＡ〜ＶＧの最適値を求め、求めた判定電圧ＶＡ〜ＶＧの最適値をメモリコントローラ１０に送信してもよい。
【００３９】
判定電圧ＶＡ〜ＶＧの最適値の探索方法は、ディストリビューションリードだけに限定されない。例えば、判定電圧ＶＡ〜ＶＧの値のそれぞれを少しずつ変えながら複数回のリード処理が実行され、当該複数回のリード処理のそれぞれにおいてビットエラーの数がカウントされ、当該複数回のリード処理のうちのビットエラーのカウント値が最小であったリード処理において使用された判定電圧ＶＡ〜ＶＧの値が、判定電圧ＶＡ〜ＶＧの最適値として決定されてもよい。
【００４０】
図１に説明を戻す。
ＲＡＭ３０は、揮発性のメモリであり、実施形態の第２メモリの一例である。ＲＡＭ３０は、例えば、ＤＲＡＭ（Dynamic  Random  Access  Memory）、ＳＲＡＭ（Static  Random  Access  Memory）、またはこれらの組み合わせなどによって構成される。なお、揮発性メモリを構成するメモリの種類はこれらに限定されない。メモリシステム１は、ＲＡＭ３０の代わりに任意の種類のメモリを具備し得る。
【００４１】
ＲＡＭ３０は、判定電圧の最適値が保存される領域である管理領域３１を備える。
【００４２】
前述したように、ＴＬＣ方式の場合、７つの判定電圧ＶＡ〜ＶＧからなるセットが使用される。したがって、判定電圧の最適値をそのまま保存する場合、保存される情報のサイズが大きい。
【００４３】
実施形態では、保存される情報のサイズを抑制するために、判定電圧の最適値は、圧縮された状態で管理領域３１に保存される。そのための構成として、メモリシステム１は、圧縮回路４０および展開回路５０を備える。圧縮回路４０および展開回路５０のそれぞれは、ＣＰＵ（Central  Processing  Unit）などのプロセッサであってもよいし、ＦＰＧＡ（field-programmable  gate  array）やＡＳＩＣ（application  specific  integrated  circuit）などのハードウェア回路であってもよい。
【００４４】
圧縮回路４０は、実施形態の第１回路の一例である。圧縮回路４０は、判定電圧ＶＡ〜ＶＧの最適値のうちの２つを基準値として選択し、基準値以外の５つの最適値のそれぞれについて推定値を演算する第１処理を実行する。判定電圧ＶＡ〜ＶＧのうちの最適値が基準値として選択される判定電圧は、予め設定されている。圧縮回路４０は、基準値間の補間または基準値間の範囲外の補外によってそれぞれの推定値を演算する。圧縮回路４０は、第１処理の後、基準値以外の５つの最適値のそれぞれについて最適値と推定値との差分値を演算する第２処理を実行する。
【００４５】
図４は、第１の実施形態の圧縮回路４０によって実行される第１処理および第２処理の具体例を説明するための図である。例えば、圧縮回路４０は、図４の（Ａ）に示される判定電圧ＶＡ〜ＶＧの最適値のうちから、判定電圧ＶＡの最適値および判定電圧ＶＧの最適値を基準値として選択する（図４の（Ｂ）参照）。
【００４６】
そして、圧縮回路４０は、第１処理を実行する。具体的には、圧縮回路４０は、判定電圧ＶＡ〜ＶＧの最適値が等間隔に存在すると仮定して２つの基準値の間を補間することによって、判定電圧ＶＢ〜ＶＦの最適値の推定値を演算する（図４の（Ｃ）参照）。つまり、この例では、圧縮回路４０は、２つの基準値間の線形補間を実施することによって、判定電圧ＶＢ〜ＶＦの最適値の推定値を演算している。
【００４７】
続いて、圧縮回路４０は、第２処理を実行する。具体的には、圧縮回路４０は、判定電圧ＶＢ〜ＶＦのそれぞれについて、最適値と推定値との差分値を演算する（図４の（Ｄ）参照）。そして、圧縮回路４０は、２つの基準値、即ち判定電圧ＶＡ、ＶＧの最適値と、判定電圧ＶＢ〜ＶＦのそれぞれについて得られた、対応する推定値からの差分値を記録した情報を、１セットの判定電圧の最適値を示す情報（判定電圧情報３２と表記する）として出力する。
【００４８】
例えば、判定電圧ＶＡ〜ＶＧのそれぞれの値が０〜５１１（９ビット）の範囲で設定可能であり、判定電圧ＶＡ〜ＶＧの最適値が｛３０，９０，１５５，２３５，２９５，３７０，４２０｝である場合を考える。図４の例に従えば、判定電圧ＶＡの最適値である３０と、判定電圧ＶＧの最適値である４２０と、のそれぞれが基準値として選択される。そして、３０〜４２０の範囲が６で除算されることによって、６５が推定値の間隔として得られる。そして、判定電圧ＶＢ〜ＶＦの推定値が間隔６５をあけて配置されることによって、｛９５，１６０，２２５，２９０，３５５｝が判定電圧ＶＢ〜ＶＦの推定値として得られる。そして、判定電圧ＶＢ〜ＶＦのそれぞれについて最適値から推定値が減算されることによって、判定電圧ＶＢ〜ＶＦにかかる差分値｛−５，−５，１０，５，１５｝が得られる。そして、基準値である判定電圧ＶＡ，ＶＧの最適値｛３０，４２０｝と、判定電圧ＶＢ〜ＶＦにかかる差分値｛−５，−５，１０，５，１５｝とは、判定電圧情報３２に記録されて、当該判定電圧情報３２が出力される。
【００４９】
判定電圧ＶＡ〜ＶＧのそれぞれの値が０〜５１１（９ビット）の範囲で設定可能であるから、判定電圧ＶＡ〜ＶＧの最適値をそのまま保存しようとした場合、保存される情報のサイズは、６３ビット（＝７＊９ビット）となる。これに対して、差分値のサイズは、５ビット以内に収まっている。よって、判定電圧ＶＡ〜ＶＧの最適値を示す判定電圧情報３２のサイズを、４３ビット（＝２＊９ビット＋５＊５ビット）に低減することが可能となる。
【００５０】
このように、実施形態では、基準値を除く５つの最適値のそれぞれが、基準値に基づいて演算された推定値からの差分値として保存される。よって、判定電圧ＶＡ〜ＶＧの最適値を直値の形式で保存する場合に比べて、保存される情報のサイズを低減することが可能である。
【００５１】
つまり、判定電圧ＶＡ〜ＶＧの最適値は、圧縮回路４０によって、判定電圧ＶＡ〜ＶＧの最適値の直値よりもサイズが小さい判定電圧情報３２に圧縮される。
【００５２】
なお、差分値の保存に割り当てられたサイズが固定されていてもよいし、固定されていなくてもよい。上記の例によれば、判定電圧情報３２のうちの判定電圧ＶＢ〜ＶＦのそれぞれにかかる差分値が保存されるサイズとして、固定された５ビットのサイズが用意されている。すなわち、判定電圧ＶＢ〜ＶＦにかかる差分値が｛−５，−５，１０，５，１５｝である場合、各差分値は、５ビットのサイズのデータとして判定電圧情報３２に含まれる。なお、判定電圧ＶＢ〜ＶＦにかかる差分値の何れかが５ビットを超えた場合、圧縮回路４０は、その差分値は、５ビットのサイズで表現可能な最大値や最小値（つまり５ビットで表現する範囲を−１６から１５までとするのであれば、最大値は１５、最小値は−１６）にクランプして保存してもよい。
【００５３】
展開回路５０は、実施形態の第２回路の一例である。展開回路５０は、圧縮回路４０とは逆の処理を実行することによって、判定電圧情報３２から判定電圧ＶＡ〜ＶＧの最適値を復元する。つまり、展開回路５０は、判定電圧情報３２を判定電圧ＶＡ〜ＶＧの最適値の直値に展開する。
【００５４】
具体的には、展開回路５０は、管理領域３１に保存された判定電圧情報３２に含まれる２つの基準値を用いて第１処理と同じ処理である第３処理を実行することによって、基準値以外の５つの最適値のそれぞれについて推定値を演算する。第３処理の後、展開回路５０は、当該判定電圧情報３２に含まれる基準値以外の５つの最適値に対応した５つの差分値と、第３処理によって得られた５つの推定値に基づいて基準値以外の５つの最適値を演算する。
【００５５】
図５は、第１の実施形態の展開回路５０によって実行される第３処理および第４処理の具体例を説明するための図である。まず、展開回路５０は、判定電圧情報３２に含まれる判定電圧ＶＡの最適値および判定電圧ＶＧの最適値を基準値として取得する（図５の（Ａ）参照）。最適値が基準値として取得される判定電圧は、圧縮回路４０が選択した判定電圧と同じである。
【００５６】
続いて、展開回路５０は、圧縮回路４０と同様の方法で、判定電圧ＶＢ〜ＶＦの最適値の推定値を演算する（第３処理）。つまり、展開回路５０は、判定電圧ＶＡ〜ＶＧの最適値が等間隔に存在すると仮定して２つの基準値の間を補間することによって、判定電圧ＶＢ〜ＶＦの最適値の推定値を演算する（図５の（Ｂ）参照）。
【００５７】
そして、展開回路５０は、第４処理を実行する。具体的には、展開回路５０は、判定電圧ＶＢ〜ＶＦのそれぞれについて、推定値と判定電圧情報３２に含まれる差分値とに基づいて最適値を演算する（図５の（Ｃ）参照）。これによって、展開回路５０は、判定電圧ＶＡ〜ＶＧの最適値を得ることができる。展開回路５０は、得られた判定電圧ＶＡ〜ＶＧの最適値を出力する。
【００５８】
例えば、基準値である判定電圧ＶＡ，ＶＧの最適値｛３０，４２０｝と、判定電圧ＶＢ〜ＶＦにかかる差分値｛−５，−５，１０，５，１５｝とが記録された判定電圧情報３２から判定電圧ＶＡ〜ＶＧの最適値を展開する場合を考える。展開の際においても、圧縮の場合と同様に、基準値｛３０，４２０｝に基づく線形補間によって判定電圧ＶＢ〜ＶＦの推定値が演算される。これによって、圧縮の場合と同様の値｛９５，１６０、２２５，２９０，３５５｝が判定電圧ＶＢ〜ＶＦの推定値として得られる。そして、｛９５，１６０、２２５，２９０，３５５｝に差分値｛−５，−５，１０，５，１５｝が加算されることによって、判定電圧ＶＡ〜ＶＧの最適値の直値である｛３０，９０，１５５，２３５，２９５，３７０，４２０｝が得られる。
【００５９】
なお、探索によって得られた判定電圧ＶＡ〜ＶＧの最適値は、リード処理のリトライにおいて判定電圧ＶＡ〜ＶＧの新しい設定値として使用される。当該リード処理のリトライによって読み出されたデータに対するエラー訂正に成功した後、設定値として使用された判定電圧ＶＡ〜ＶＧの最適値は、圧縮されて保存される。
【００６０】
または、探索によって得られた判定電圧ＶＡ〜ＶＧの最適値は、まず、圧縮されて保存されてもよい。保存された判定電圧ＶＡ〜ＶＧの最適値は、再びリード処理が実行される際に展開されて、当該リード処理に使用されてもよい。
【００６１】
以降の説明では、管理領域３１に圧縮されて保存される判定電圧ＶＡ〜ＶＧの最適値を、判定電圧ＶＡ〜ＶＧの新しい設定値として使用された値か、または後に判定電圧ＶＡ〜ＶＧの新しい設定値として使用される値という意味で、判定電圧ＶＡ〜ＶＧの設定値、または、判定電圧ＶＡ〜ＶＧの新しい設定値、と表記する。
【００６２】
管理領域３１には、圧縮回路４０によって生成された判定電圧情報３２が保存される。展開回路５０は、管理領域３１に保存された判定電圧情報３２を展開することによって、判定電圧ＶＡ〜ＶＧの最適値を得る。
【００６３】
なお、管理領域３１には、複数の判定電圧情報３２が保存され得る。例えば、ブロック毎に１つのセットの判定電圧の設定値が適用されるようにメモリシステム１が構成されている場合には、管理領域３１には、それぞれ適用されるブロックが異なる複数の判定電圧情報３２が保存され得る。なお、１つのセットの判定電圧の設定値が適用される単位はブロックに限定されない。
【００６４】
メモリコントローラ１０は、ホスト２とＮＡＮＤメモリ２０との間のデータ転送を含めたメモリシステム１の制御を実行する。具体的には、メモリコントローラ１０は、ホスト２からの要求又はメモリシステム１の内部要求に応じて、リード処理、プログラム処理、およびイレース処理のうちの何れかの処理を周辺回路２１に指示する。
【００６５】
また、メモリコントローラ１０は、ＮＡＮＤメモリ２０から読み出されたデータ（周辺回路２１がリード処理によってメモリセルアレイ２２から取得したデータ）に対してエラー訂正を実行することができる。
【００６６】
例えば、メモリコントローラ１０は、ＮＡＮＤメモリ２０にデータを送る際に、当該データに対してエラー訂正のための符号化を実施する。つまり、メモリセルアレイ２２には、符号化されたデータが書き込まれる。ＮＡＮＤメモリ２０からデータが読み出された際には、メモリコントローラ１０は、ＮＡＮＤメモリ２０から読み出されたデータ（符号化されたデータ）を復号化することによって、当該データに含まれるビットエラーの検出を実施する。メモリコントローラ１０は、ビットエラーが検出された場合には、ビットエラーによって化けたデータを正しいデータに訂正する。
【００６７】
メモリコントローラ１０による符号化／復号化の方式としては、任意の方式が採用され得る。例えば、ＢＣＨ符号やＬＤＰＣ(Low-Density  Parity-Check)符号などがメモリコントローラ１０による符号化／復号化の方式として採用され得る。メモリコントローラ１０は、訂正能力が異なる複数の方式のエラー訂正機能を有していてもよい。
【００６８】
なお、メモリコントローラ１０は、１つのＳｏＣ（System-on-a-Chip）として構成されてもよいし、複数のチップによって構成されてもよい。メモリコントローラ１０は、ＲＡＭ３０を内部に備えていてもよい。
【００６９】
また、メモリコントローラ１０は、プロセッサとともに、またはプロセッサに代えて、ＦＰＧＡやＡＳＩＣを備えていてもよい。即ち、メモリコントローラ１０は、ソフトウェア、ハードウェア、またはこれらの組み合わせによって構成され得る。
【００７０】
次に、第１の実施形態のメモリシステム１の動作について説明する。図６は、第１の実施形態のメモリシステム１の主たる動作の概略を示すフローチャートである。
【００７１】
まず、メモリコントローラ１０は、周辺回路２１に指示してリード処理を実行する（Ｓ１０１）。Ｓ１０１の際に、メモリコントローラ１０は、判定電圧ＶＡ〜ＶＧの値を指定してもよいし、指定しなくてもよい。周辺回路２１は、メモリコントローラ１０から指示された値または予め決められた値を判定電圧ＶＡ〜ＶＧとして使用する。
【００７２】
周辺回路２１がリード処理によってデータを取得すると、メモリコントローラ１０は、当該データに対してエラー訂正を実行する（Ｓ１０２）。そして、メモリコントローラ１０は、エラー訂正の結果に基づき、判定電圧の最適化を実行するか否かを判定する（Ｓ１０３）。
【００７３】
Ｓ１０３の判定の基準は、特定の基準に限定されない。例えば、メモリコントローラ１０は、エラー訂正が失敗した場合、判定電圧の最適化を実行すると判定し、エラー訂正が成功した場合、判定電圧の最適化を実行しないと判定してもよい。
【００７４】
または、メモリコントローラ１０は、複数セットの判定電圧の候補値を予め記憶しておき、各セットの判定電圧の候補値を順次、適用して複数回のリード処理を実行するよう、構成されてもよい。メモリコントローラ１０は、当該複数回のリード処理の何れにおいてもエラー訂正に失敗した場合、判定電圧の最適化を実行すると判定し得る。メモリコントローラ１０は、当該複数回のリード処理の何れかにおいてエラー訂正に成功した場合、判定電圧の最適化を実行しないと判定し得る。
【００７５】
メモリコントローラ１０は、判定電圧の最適化を実行すると判定した場合（Ｓ１０３、Ｙｅｓ）、探索を実行することによって、判定電圧ＶＡ〜ＶＧの新しい設定値を取得する（Ｓ１０４）。つまり、メモリコントローラ１０は、ディストリビューションリードなどを実行することによって判定電圧ＶＡ〜ＶＧの最適値を求め、得られた判定電圧ＶＡ〜ＶＧの最適値を判定電圧ＶＡ〜ＶＧの新しい設定値とする。
【００７６】
その後、メモリコントローラ１０は、周辺回路２１に指示してリード処理をリトライする（Ｓ１０５）。Ｓ１０５においては、メモリコントローラ１０は、Ｓ１０４の処理によって得られた判定電圧ＶＡ〜ＶＧの新しい設定値を用いてリード処理を実行する。
【００７７】
周辺回路２１がＳ１０５のリード処理によってデータを取得すると、メモリコントローラ１０は、当該データに対してエラー訂正を実行する（Ｓ１０６）。そして、メモリコントローラ１０は、エラー訂正が成功したか否かを判定する（Ｓ１０７）。
【００７８】
エラー訂正が成功した場合（Ｓ１０７、Ｙｅｓ）、圧縮回路４０は、判定電圧ＶＡ〜ＶＧの新しい設定値を圧縮する（Ｓ１０８）。メモリコントローラ１０は、圧縮回路４０から出力される圧縮後の判定電圧ＶＡ〜ＶＧの新しい設定値を示す判定電圧情報３２を、管理領域３１に保存する（Ｓ１０９）。そして、リード処理が再び実行されるか否かが判定される（Ｓ１１０）。
【００７９】
リード処理が再び実行されると判定された場合には（Ｓ１１０、Ｙｅｓ）、展開回路５０は、管理領域３１に保存された判定電圧情報３２を展開して判定電圧ＶＡ〜ＶＧの設定値を得る（Ｓ１１１）。メモリコントローラ１０は、周辺回路２１に指示して展開によって得られた判定電圧ＶＡ〜ＶＧの新しい設定値を用いたリード処理を実行する（Ｓ１１２）。そして、Ｓ１０２に制御が移行する。
【００８０】
判定電圧の更新を実行しないと判定された場合（Ｓ１０３、Ｎｏ）、エラー訂正に失敗した場合（Ｓ１０７、Ｎｏ）、あるいはリード処理を再び実行しない場合（Ｓ１１０、Ｎｏ）、メモリシステム１は動作を終了する。
【００８１】
なお、図６を用いて説明した動作は、一例である。圧縮回路４０が圧縮処理を実行するタイミングやトリガ条件は上記の例に限定されない。また、展開回路５０が展開処理を実行するタイミングやトリガ条件は上記の例に限定されない。
【００８２】
図７は、第１の実施形態の圧縮処理の手順の一例を説明するための図である。
まず、圧縮回路４０は、判定電圧ＶＡ〜ＶＧの設定値から、基準値を選択する（Ｓ２０１）。例えば圧縮回路４０は、判定電圧ＶＡの設定値と判定電圧ＶＧの設定値とを基準値として選択する。
【００８３】
続いて、圧縮回路４０は、第１処理を実行する（Ｓ２０２）。即ち、圧縮回路４０は、Ｓ２０１において選択された２つの基準値に基づいて、基準値を除く判定電圧の設定値（すなわち判定電圧ＶＢ〜ＶＦの設定値）の推定値を演算する。例えば圧縮回路４０は、２つの基準値の間の範囲を線形補間することによって判定電圧ＶＢ〜ＶＦの設定値の推定値を演算する。
【００８４】
続いて、圧縮回路４０は、第２処理を実行する（Ｓ２０３）。即ち、圧縮回路４０は、判定電圧ＶＢ〜ＶＦのそれぞれについて推定値と設定値との差分値を演算する。
【００８５】
続いて、圧縮回路４０は、２つの基準値（即ち判定電圧ＶＡの設定値と判定電圧ＶＧの設定値）と、判定電圧ＶＢ〜ＶＦのそれぞれについて演算された差分値と、からなるセットを判定電圧情報３２として出力する（Ｓ２０４）。Ｓ２０４によって、圧縮処理が完了する。
【００８６】
図８は、第１の実施形態の展開処理の手順の一例を説明するための図である。
まず、展開回路５０は、判定電圧情報３２から基準値と差分値を取得する（Ｓ３０１）。例えば、展開回路５０は、判定電圧情報３２に含まれる判定電圧ＶＡ，ＶＧの設定値のそれぞれを基準値として取得し、判定電圧情報３２に含まれる判定電圧ＶＢ〜ＶＦにかかる差分値を取得する。
【００８７】
続いて、展開回路５０は、第３処理を実行する（Ｓ３０２）。即ち、展開回路５０は、Ｓ３０１において取得された２つの基準値に基づいて、基準値を除く判定電圧の設定値（すなわち判定電圧ＶＢ〜ＶＦの設定値）の推定値を演算する。例えば展開回路５０は、２つの基準値の間の範囲を線形補間することによって判定電圧ＶＢ〜ＶＦの設定値の推定値を演算する。
【００８８】
続いて、展開回路５０は、第４処理を実行する（Ｓ３０３）。即ち、展開回路５０は、判定電圧ＶＢ〜ＶＧのそれぞれについて差分値と推定値を加算することによって、基準値を除く判定電圧の設定値（すなわち判定電圧ＶＢ〜ＶＧの設定値）を演算する。
【００８９】
そして、展開回路５０は、基準値として取得した判定電圧ＶＡ，ＶＧの設定値と、Ｓ３０３によって取得した判定電圧ＶＢ〜ＶＧの設定値と、をまとめて出力する（Ｓ３０４）。Ｓ３０４によって、展開処理が完了する。
【００９０】
以上述べたように、第１の実施形態によれば、圧縮回路４０は、判定電圧ＶＡ〜ＶＧの設定値のうちの２つの判定電圧ＶＡ，ＶＧの設定値を基準値として使用して判定電圧ＶＢ〜ＶＦそれぞれについて設定値の推定値を演算する第１処理を実行する。その後、圧縮回路４０は、判定電圧ＶＢ〜ＶＦのそれぞれについて、設定値と推定値との差分値を演算する第２処理を実行する。管理領域３１には、判定電圧ＶＢ〜ＶＦのそれぞれについて、設定値ではなく差分値が保存される。
【００９１】
この構成によって、判定電圧ＶＢ〜ＶＦのそれぞれについて、保存される情報のサイズを低減することが可能となる。即ち、判定電圧の設定値を効率的に保存することが可能となる。
【００９２】
なお、基準値として選択された設定値は、直値の状態で判定電圧情報３２に含まれている、として説明した。基準値として選択された設定値は、直値の状態ではなく、所定の値からの差分値として判定電圧情報３２に含まれてもよい。
【００９３】
さらに、第１の実施形態によれば、展開回路５０は、判定電圧情報３２に含まれる２つの判定電圧ＶＡ，ＶＧの設定値を基準値として取得して、当該２つの基準値を用いて第１処理と同じ処理である第３処理を実行することによって、判定電圧ＶＢ〜ＶＦそれぞれについて設定値の推定値を演算する。その後、展開回路５０は、判定電圧ＶＢ〜ＶＦのそれぞれについて、判定電圧情報３２に含まれる判定電圧ＶＢ〜ＶＦにかかる差分値と第３処理によって得られた判定電圧ＶＢ〜ＶＦの設定値の推定値に基づき、判定電圧ＶＢ〜ＶＦのそれぞれについて設定値を演算する第４処理を実行する。
【００９４】
展開処理において、判定電圧ＶＢ〜ＶＦのそれぞれについて、圧縮処理で使用された推定値と等しい値が使用される。よって、展開処理によって、判定電圧ＶＢ〜ＶＦのそれぞれについて、圧縮前の設定値と同じ値が得られる。つまり、判定電圧ＶＢ〜ＶＦの設定値に関してロスレスの圧縮・展開が可能となる。
【００９５】
（第２の実施形態）
第１の実施形態では、判定電圧ＶＡ〜ＶＧの設定値のうちの判定電圧ＶＡ，ＶＧの設定値がそれぞれ基準値として選択された。つまり、第１の実施形態では、判定電圧ＶＡ〜ＶＧの設定値のうちの最大値と最小値とが基準値として選択された。基準値の選択方法はこれに限定されない。
【００９６】
図９は、第２の実施形態の第１処理および第３処理の具体例を説明するための図である。本図に示される例によれば、判定電圧ＶＢ，ＶＧのそれぞれの設定値が基準値として選択される（図９の（Ａ）、（Ｂ）参照）。つまり、第２の実施形態では、判定電圧ＶＡ〜ＶＧの設定値のうちの最大値と最小値の次に大きい値とが基準値として選択される。
【００９７】
そして、第１処理では、判定電圧ＶＡ〜ＶＧの設定値が等間隔に存在すると仮定して２つの基準値の間が補間されることによって、判定電圧ＶＣ〜ＶＦの設定値の推定値が演算される（図９の（Ｃ）参照）。つまり、判定電圧ＶＢの設定値と、判定電圧ＶＧの設定値の間の範囲が線形補間されることによって、判定電圧ＶＣ〜ＶＦの設定値の推定値が演算されている。
【００９８】
さらに、第１処理では、判定電圧ＶＡ〜ＶＧの設定値が等間隔に存在すると仮定して２つの基準値の間の範囲の負側に位置する判定電圧ＶＡの設定値の推定値が演算される（図９の（Ｃ）参照）。即ち、判定電圧ＶＡの設定値の推定値は、判定電圧ＶＢの設定値と、判定電圧ＶＧの設定値の間の範囲外が補外されることによって演算されている。このとき、判定電圧ＶＡの設定値の推定値が設定可能電圧の最小値未満となった場合は、設定可能電圧の最小値でクリップしても良い。
【００９９】
そして、第２処理では、判定電圧ＶＡ、ＶＣ〜ＶＦのそれぞれについて、最適値と推定値との差分値が演算される（図９の（Ｄ）参照）。そして、２つの基準値、即ち判定電圧ＶＢ、ＶＧの最適値と、判定電圧ＶＡ、ＶＣ〜ＶＦのそれぞれについて得られた、対応する推定値からの差分値と、が判定電圧情報３２に記録され、当該判定電圧情報３２が出力される。
【０１００】
例えば、判定電圧ＶＡ〜ＶＧのそれぞれの値が０〜５１１（９ビット）の範囲で設定可能であり、判定電圧ＶＡ〜ＶＧの設定値が｛３０，９０，１５５，２３５，２９５，３７０，４２０｝である場合を考える。図９の例では、第１処理において、判定電圧ＶＢの設定値である９０と、判定電圧ＶＧの最適値である４２０と、が基準値として選択される。そして、９０〜４２０の範囲が５で除算されることによって、６６が推定値の間隔として得られる。そして、判定電圧ＶＣ〜ＶＦの推定値が間隔６６をあけて配置されることによって、｛１５６，２２２，２８８，３５４｝が判定電圧ＶＣ〜ＶＦの推定値として得られる。
【０１０１】
第１処理では、さらに、判定電圧ＶＡの推定値が判定電圧ＶＢの設定値９０から負方向に間隔６６をあけて配置されることによって、２４が判定電圧ＶＡの推定値として得られる。即ち、判定電圧ＶＡ、ＶＣ〜ＶＦの推定値は、｛２４，１５６，２２２，２８８，３５４｝と求まる。
【０１０２】
第２処理においては、判定電圧ＶＡ、ＶＣ〜ＶＦのそれぞれについて差分値が演算され、｛６，−１，１３，７，１６｝が判定電圧ＶＡ、ＶＣ〜ＶＦにかかる差分値として得られる。
【０１０３】
そして、基準値である判定電圧ＶＢ，ＶＧの設定値｛９０，４２０｝と、判定電圧ＶＡ，ＶＣ〜ＶＦにかかる差分値｛６，−１，１３，７，１６｝とが、記録された判定電圧情報３２が出力される。
【０１０４】
第３処理においては、判定電圧情報３２から判定電圧ＶＢ，ＶＧの設定値｛９０，４２０｝が基準値として取得され、これらの基準値に基づく第１処理と同じ処理によって、判定電圧ＶＡ、ＶＣ〜ＶＦの推定値｛２４，１５６，２２２，２８８，３５４｝が得られる。
【０１０５】
第３処理の後の第４処理においては、判定電圧ＶＡ、ＶＣ〜ＶＦの推定値｛２４，１５６，２２２，２８８，３５４｝と判定電圧情報３２に含まれる判定電圧ＶＡ、ＶＣ〜ＶＦにかかる差分値｛６，−１，１３，７，１６｝とが加算されることによって、判定電圧ＶＡ、ＶＣ〜ＶＦの設定値の直値である｛３０，１５５，２３５，２９５，３７０｝が得られる。
【０１０６】
そして、判定電圧ＶＢ，ＶＧの設定値｛９０，４２０｝と判定電圧ＶＡ、ＶＣ〜ＶＦの設定値の直値である｛３０，１５５，２３５，２９５，３７０｝とが判定電圧ＶＡ〜ＶＧの設定値として出力される。
【０１０７】
判定電圧ＶＡ〜ＶＧのそれぞれの値が０〜５１１（９ビット）の範囲で設定可能であるから、判定電圧ＶＡ〜ＶＧの最適値をそのまま保存しようとした場合、保存される情報のサイズは、６３ビット（＝７＊９ビット）となる。これに対して、第１の実施形態の場合と同様に、差分値のサイズは、５ビット以内に収まっている。よって、判定電圧ＶＡ〜ＶＧの最適値を示す判定電圧情報３２のサイズを、４３ビット（＝２＊９ビット＋５＊５ビット）に低減することが可能となる。
【０１０８】
このように、第２の実施形態では、判定電圧ＶＡ〜ＶＧの設定値のうちの判定電圧ＶＢ，ＶＧの設定値のそれぞれが基準値として設定される。
【０１０９】
１セットの判定電圧ＶＡ〜ＶＧのうちの最小の値が設定される判定電圧である判定電圧ＶＡは、消去された状態に対応する分布Ｅｒに最も近いことから、他の判定電圧と挙動が異なる場合がある。その場合、判定電圧ＶＡの設定値を基準値として選択すると、基準値以外の設定値に関して、設定値と推定値との乖離量（差分値）が大きくなってしまう虞がある。設定値と推定値との乖離量（差分値）が大きくなると、差分値の保存に要するサイズが増大する。
【０１１０】
第２の実施形態では、判定電圧ＶＡの設定値の代わりに判定電圧ＶＢの設定値が基準値として選択されたことによって、設定値と推定値との乖離量（差分値）を抑制でき、これによって、差分値の保存に要するサイズが増大を防止することができる。
【０１１１】
なお、第２の実施形態では、判定電圧ＶＡ〜ＶＧの設定値のうちの判定電圧ＶＢ，ＶＧの設定値のそれぞれが基準値として設定された例を説明した。基準値の選択方法は、これに限定されない。判定電圧ＶＡ〜ＶＧの設定値のうちの任意の２つが基準値として選択され得る。
【０１１２】
（第３の実施形態）
第２処理において実行される差分値の演算の方法は、第１、第２の実施形態において説明された方法だけに限定されない。第２処理では、例えば下記に説明する処理によって差分値が演算され得る。
【０１１３】
第２処理では、圧縮回路４０は、基準値間の各設定値の差分値を、電圧値の昇順または降順の何れかの予め設定された順で演算する。そして、圧縮回路４０は、基準値間又は外の各設定値の差分値を算出する際には、各設定値の差分値を、所定の方法で求めた補正量を用いて補正した後に出力する。ここで、圧縮回路４０は、基準値間又は外の各設定値の差分値の演算を開始してから得られた設定値毎の差分値を積算して得られる値を補正量として使用する。
【０１１４】
例えば、第１の実施形態では、判定電圧ＶＡ〜ＶＧの設定値が｛３０，９０，１５５，２３５，２９５，３７０，４２０｝である場合、｛９５，１６０，２２５，２９０，３５５｝が判定電圧ＶＢ〜ＶＦの設定値の推定値として得られ、｛−５，−５，１０，５，１５｝が判定電圧ＶＢ〜ＶＦにかかる差分値として得られる、として説明した。
【０１１５】
第３の実施形態では、例えばＶＢ，ＶＣ，ＶＤ，ＶＥ，ＶＦの順番で差分値が演算されると仮定した場合、圧縮回路４０は、まず、判定電圧ＶＢにかかる差分値を第１の実施形態と同様の方法で演算することで、−５を判定電圧ＶＢにかかる差分値として得る。
【０１１６】
次に、圧縮回路４０は、判定電圧ＶＣの設定値と判定電圧ＶＣの推定値との差分値を、判定電圧ＶＢにかかる差分値である−５を補正量として補正し、補正によって得られた値を判定電圧ＶＣにかかる差分値として得る。つまり、圧縮回路４０は、判定電圧ＶＣの設定値である１５５から判定電圧ＶＣの推定値である１６０を減算し、減算によって得られた値である−５から補正量である−５を減算する。圧縮回路４０は、補正量の減算によって得られた値である０を、判定電圧ＶＣにかかる差分値として得る。
【０１１７】
次に、圧縮回路４０は、判定電圧ＶＢにかかる差分値である−５と判定電圧ＶＣにかかる差分値である０との合計値である−５を補正量として使用することによって、判定電圧ＶＤにかかる差分値を演算する。つまり、圧縮回路４０は、判定電圧ＶＤの設定値である２３５から判定電圧ＶＤの推定値である２２５を減算し、減算によって得られた値である１０から補正量である−５を減算する。圧縮回路４０は、補正量の減算によって得られた値である１５を、判定電圧ＶＤにかかる差分値として得る。 
【０１１８】
次に、圧縮回路４０は、判定電圧ＶＢにかかる差分値である−５と判定電圧ＶＣにかかる差分値である０と判定電圧ＶＤにかかる差分値である１５の合計値である１０を補正量として使用することによって、判定電圧ＶＥにかかる差分値を演算する。つまり、圧縮回路４０は、判定電圧ＶＥの設定値である２９５から判定電圧ＶＥの推定値である２９０を減算し、減算によって得られた値である５から補正量である１０を減算する。圧縮回路４０は、補正量の減算によって得られた値である−５を、判定電圧ＶＥにかかる差分値として得る。
【０１１９】
次に、圧縮回路４０は、判定電圧ＶＢにかかる差分値である−５と判定電圧ＶＣにかかる差分値である０と判定電圧ＶＤにかかる差分値である１５と判定電圧ＶＥにかかる差分値である−５との合計値である５を補正量として使用することによって、判定電圧ＶＦにかかる差分値を演算する。つまり、圧縮回路４０は、判定電圧ＶＦの設定値である３７０から判定電圧ＶＥの推定値である３５５を減算し、減算によって得られた値である１５から補正量である５を減算する。圧縮回路４０は、補正量の減算によって得られた値である１０を、判定電圧ＶＦにかかる差分値として得る。
【０１２０】
つまり、圧縮回路４０は、｛−５，０，１５，−５，１０｝を判定電圧ＶＢ〜ＶＦにかかる差分値として得ることができる。
【０１２１】
なお、この例では、ＶＢ，ＶＣ，ＶＤ，ＶＥ，ＶＦの順で差分値が演算されると仮定した場合について説明した。電圧順とは逆の順、即ちＶＦ，ＶＥ，ＶＤ，ＶＣ，ＶＢの順で差分値が演算されてもよい。その場合には、圧縮回路４０は、各差分値を演算する際に、その時点よりも前に演算された差分値の合計値を補正量として使用すればよい。
【０１２２】
展開回路５０は、第４処理において、上記した第２処理とは逆の処理を実行する。
【０１２３】
具体的には、展開回路５０は、電圧値の昇順または降順のうちの圧縮回路４０が補正量の演算を行った順で、判定電圧ＶＢ〜ＶＦにかかる補正量を演算する。そして、展開回路５０は、基準値間の各設定値を算出する際には、各設定値の差分値を、予め求めた補正量で補正した後に適用する。
【０１２４】
例えば、判定電圧ＶＢ〜ＶＦにかかる差分値が｛−５，０，１５，−５，１０｝であり、判定電圧ＶＢ〜ＶＦの設定値の推定値が｛９５，１６０，２２５，２９０，３５５｝であり、判定電圧ＶＢ〜ＶＦにかかる差分値は電圧順に演算された場合を考える。
【０１２５】
展開回路５０は、判定電圧ＶＢにかかる差分値である−５を、判定電圧ＶＣの設定値を演算する際の補正量として使用する。展開回路５０は、判定電圧ＶＢにかかる差分値である−５と判定電圧ＶＣにかかる差分値である０との合計値である−５を、判定電圧ＶＤの設定値を演算する際の補正量として使用する。展開回路５０は、判定電圧ＶＢにかかる差分値である−５と判定電圧ＶＣにかかる差分値である０と判定電圧ＶＤにかかる差分値である１５との合計値である１０を、判定電圧ＶＥの設定値を演算する際の補正量として使用する。展開回路５０は、判定電圧ＶＢにかかる差分値である−５と判定電圧ＶＣにかかる差分値である０と判定電圧ＶＤにかかる差分値である１５と判定電圧ＶＥにかかる差分値である−５との合計値である５を、判定電圧ＶＦの設定値を演算する際の補正量として使用する。
【０１２６】
展開回路５０は、推定値に補正量と差分値を加算することによって、設定値を得る。
【０１２７】
展開回路５０は、判定電圧ＶＢの設定値と同様の方法で判定電圧ＶＣ〜ＶＦの設定値を演算する。但し、展開回路５０は、｛−５，１０，５，１５｝を判定電圧ＶＣ〜ＶＦにかかる補正量として用いる。
【０１２８】
なお、判定電圧ＶＡ〜ＶＧの設定値が｛３０，９０，１５５，２３５，２９５，３７０，４２０｝であり、判定電圧ＶＢ〜ＶＦの設定値の推定値が｛９５，１６０，２２５，２９０，３５５｝である場合、圧縮回路４０は、｛−５，０，１５，−５，１０｝を判定電圧ＶＢ〜ＶＦにかかる差分値として得た。圧縮回路４０は、判定電圧ＶＢ〜ＶＦにかかる差分値の符号ができるだけ同じ符号となるように、偶数番目または奇数番目の差分値に−１を乗算してもよい。例えば圧縮回路４０は、判定電圧ＶＣ，ＶＥの差分値に−１を加算する第２の補正を行い、得られた｛−５，０，１５，５，１０｝を判定電圧ＶＢ〜ＶＦにかかる差分値として出力してもよい。
【０１２９】
このように、推定値と設定値との差分値は、補正された後に保存されてもよい。
【０１３０】
（第４の実施形態）
第１〜第３の実施形態では、一例として、各メモリセルＭＴに３ビットのデータが格納される場合について説明した。第１〜第３の実施形態の技術は、各メモリセルＭＴに３以外の複数ビットのデータが格納される場合についても適用され得る。
【０１３１】
例えば、各メモリセルＭＴにＮビット（Ｎは２以上の自然数）のデータが格納される場合、１セットの判定電圧は、２Ｎ−１個の判定電圧を含む。Ｎが２の場合、１セットの判定電圧は、３個の判定電圧を含む。Ｎは２以上であってよいので、判定電圧の数は、３以上となる。
【０１３２】
圧縮回路４０は、２Ｎ−１個の判定電圧の設定値のうちの２つを基準値として選択し、２つの基準値間の範囲の補間や当該範囲の外の補外によって基準値以外の設定値の推定値を演算し、推定値と設定値との差分値を演算する。
【０１３３】
また、第１〜第３の実施形態では、一例として、２つの判定電圧の設定値が基準値として選択される場合について説明した。３以上の設定値が基準値として選択されてもよい。圧縮回路４０および展開回路５０は、３以上の基準値を用いて補間あるいは補外によって、基準値以外の設定値の推定値を演算してもよい。
【０１３４】
なお、１セットの判定電圧の設定値のうち、差分値として保存される設定値の割合が多いほど、圧縮率を高めることができる。即ち、２つの判定電圧の設定値のみを基準値とすることで、最大の圧縮率を実現することができる。
【０１３５】
また、第１〜第３の実施形態では、一例として、設定値が等間隔に存在するとの仮定に基づいて各推定値が演算された。設定値間の間隔が所定の比率であるとの仮定に基づいて各推定値が演算されてもよい。つまり、圧縮回路４０や展開回路５０は、基準値間を任意の比率で分割することによって基準値間の各設定値の推定値を演算してもよいし、基準値間の各設定値の間隔と異なる値を用いて外挿することによって基準値間の範囲外の設定値にかかる推定値を演算してもよい。推定値を演算するためのアルゴリズムや推定値を演算するための演算式は、任意に設計され得る。
【０１３６】
また、第１〜第３の実施形態では、一例として、ＲＡＭ３０に設けられた管理領域３１に判定電圧情報３２が保存された。判定電圧情報３２が保存される位置はＲＡＭ３０に限定されない。判定電圧情報３２は、ＮＡＮＤメモリ２０に保存されてもよい。
【０１３７】
また、ホストが内蔵するメモリにデバイスが使用できる領域を設ける技術が知られている。その技術は、例えばＵＦＳ（Universal  Flash  Storage）規格の一つとして規格化されている。判定電圧情報３２は、ホスト２が内蔵するメモリにアロケートされた、メモリシステム１が使用可能な領域に、判定電圧情報３２を保存してもよい。
【０１３８】
また、第１〜第３の実施形態では、一例として、メモリセルアレイ２２がメモリセルＭＴが２次元的に配列された構成を有する場合について説明した。メモリセルアレイ２２は、メモリセルＭＴが３次元的に配列された構成を有していてもよい。その場合には、例えば、導電膜と絶縁膜とが交互に積層された積層体が柱状の半導体柱で貫通され、導電膜と半導体柱とが交差する部分にメモリセルＭＴが設けられ得る。
【０１３９】
（第５の実施形態）
圧縮回路４０および展開回路５０は、メモリシステム１内の任意の構成要素に具備され得る。第５の実施形態では、図１０〜１２を参照して、圧縮回路４０および展開回路５０の配置の例を３つ説明する。
【０１４０】
図１０に示される例によれば、メモリコントローラ１０ａは、ＲＡＭ３０とＮＡＮＤメモリ２０に接続されている。また、メモリコントローラ１０は、ホスト２と接続されている。
【０１４１】
ＮＡＮＤメモリ２０は、それぞれが周辺回路２１およびメモリセルアレイ２２を備えた複数のメモリチップ２３を備えている。
【０１４２】
そして、圧縮回路４０および展開回路５０は、ともにメモリコントローラ１０に設けられている。
【０１４３】
メモリコントローラ１０は、判定電圧の最適値（設定値）の探索を実行し、得られた判定電圧の最適値（設定値）を、圧縮回路４０によって圧縮する。そして、メモリコントローラ１０は、圧縮によって得られた判定電圧情報３２をＲＡＭ３０内の管理領域３１に保存する。
【０１４４】
メモリコントローラ１０は、圧縮された判定電圧の設定値を使用する場合には、管理領域３１から判定電圧情報３２を読み出す。そして、メモリコントローラ１０は、当該読み出した判定電圧情報３２を展開回路５０によって展開することによって、判定電圧の設定値を得る。メモリコントローラ１０は、展開によって得られた判定電圧の設定値をメモリチップ２３に送信し、展開によって得られた判定電圧の設定値を使用したリード処理を周辺回路２１に指示する。
【０１４５】
図１１に示される例は、展開回路５０が各メモリチップ２３ａに設けられている点で図１０に示される例と異なっている。図１１に示される例によれば、メモリコントローラ１０ｂは、自身が備える圧縮回路４０によって判定電圧の設定値を圧縮し、圧縮によって得られた判定電圧情報３２をＲＡＭ３０内の管理領域３１に保存する。
【０１４６】
メモリコントローラ１０は、圧縮された判定電圧の設定値を使用する場合には、管理領域３１から判定電圧情報３２を読み出して、当該判定電圧情報３２をメモリチップ２３に送信する。メモリチップ２３は、判定電圧情報３２を受信すると、当該判定電圧情報３２を自身が備える展開回路５０によって判定電圧の設定値に展開し、展開によって得られた判定電圧の設定値を使用する。
【０１４７】
図１２に示される例は、圧縮回路４０および展開回路５０がともに各メモリチップ２３ｂに設けられている点で図１０に示される例と異なっている。
【０１４８】
図１２に示される例によれば、例えば、周辺回路２１は、メモリコントローラ１０ｃからの指示に基づいて判定電圧の最適値を探索する処理を実施する。メモリチップ２３は、得られた判定電圧の最適値を、自身が備える圧縮回路４０によって圧縮し、圧縮によって得られた判定電圧情報３２をメモリコントローラ１０に送信する。メモリコントローラ１０は、メモリチップ２３から判定電圧情報３２を受信すると、受信した判定電圧情報３２をＲＡＭ３０内の管理領域３１に保存する。
【０１４９】
メモリコントローラ１０は、圧縮された判定電圧の設定値を使用する場合には、管理領域３１から判定電圧情報３２を読み出して、当該判定電圧情報３２をメモリチップ２３に送信する。メモリチップ２３は、判定電圧情報３２を受信すると、当該判定電圧情報３２を自身が備える展開回路５０によって判定電圧の設定値に展開し、展開によって得られた判定電圧の設定値を使用する。
【０１５０】
このように、第１〜第４の実施形態で説明した圧縮回路４０や展開回路５０は、任意に配置され得る。
【０１５１】
第１〜第５の実施形態で説明したように、圧縮回路４０は、複数の判定電圧の設定値のうちの２以上の判定電圧の設定値を基準値として使用して複数の判定電圧のそれぞれについて設定値の推定値を演算する第１処理を実行する。その後、圧縮回路４０は、基準値と異なる判定電圧の設定値のそれぞれについて、設定値と推定値との差分値を演算する第２処理を実行する。管理領域３１には、基準値と異なる判定電圧にかかる差分値が保存される。
【０１５２】
これによって、判定電圧の設定値を効率的に保存することが可能となる。
【０１５３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１５４】
１  メモリシステム、２  ホスト、１０  メモリコントローラ、２０  ＮＡＮＤメモリ、２１  周辺回路、２２  メモリセルアレイ、２３  メモリチップ、３１  管理領域、３２  判定電圧情報、４０  圧縮回路、５０  展開回路。
【図１】
2020047319.tif 000003
【図２】
2020047319.tif 000004
【図３】
2020047319.tif 000005
【図４】
2020047319.tif 000006
【図５】
2020047319.tif 000007
【図６】
2020047319.tif 000008
【図７】
2020047319.tif 000009
【図８】
2020047319.tif 000010
【図９】
2020047319.tif 000011
【図１０】
2020047319.tif 000012
【図１１】
2020047319.tif 000013
【図１２】
2020047319.tif 000014