(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-10
(45)【発行日】2022-02-21
(54)【発明の名称】メモリシステムおよびメモリシステムの制御方法
(51)【国際特許分類】
G11C 11/56 20060101AFI20220214BHJP
G11C 16/04 20060101ALI20220214BHJP
H01L 27/11526 20170101ALI20220214BHJP
【FI】
G11C11/56 220
G11C16/04 170
H01L27/11526
(21)【出願番号】P 2018172796
(22)【出願日】2018-09-14
【審査請求日】2021-03-18
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】関口 遼
(72)【発明者】
【氏名】柳川 新悟
(72)【発明者】
【氏名】黒澤 泰彦
(72)【発明者】
【氏名】赤井畑 瑛莉子
【審査官】堀田 和義
(56)【参考文献】
【文献】特開2010-40057(JP,A)
【文献】特表2007-500918(JP,A)
【文献】特開2012-203957(JP,A)
【文献】米国特許出願公開第2019/0267099(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 11/56
G11C 16/04
H01L 27/11526
(57)【特許請求の範囲】
【請求項1】
メモリセルトランジスタを備えるメモリセルアレイと、前記メモリセルトランジスタに格納された複数ビットのデータを前記メモリセルトランジスタのしきい値電圧と3以上の第1数の第1判定電圧の少なくとも一部との比較に基づいて取得するリード処理を実行する周辺回路と、を備える第1メモリと、
前記第1数の前記第1判定電圧のうちの前記第1数より少ない2以上の第2数の第2判定電圧の値に基づいて前記第2数の前記第2判定電圧の何れとも異なる第3判定電圧の値の推定値を演算する第1処理を実行し、前記第3判定電圧の値と前記第3判定電圧の値の推定値との差分値を演算する第2処理を実行する第1回路と、
前記第2処理によって得られた前記第3判定電圧にかかる差分値を記憶する第2メモリと、
を備えるメモリシステム。
【請求項2】
前記第1処理と同じ処理である第3処理を実行し、前記第3処理によって得られた前記第3判定電圧の値の推定値と前記第2メモリに記憶された前記第3判定電圧にかかる差分値とに基づいて前記第3判定電圧の値を演算する第4処理を実行する第2回路、
をさらに備える請求項1に記載のメモリシステム。
【請求項3】
前記第2メモリは、前記第3判定電圧にかかる差分値と、更に前記第2数の前記第2判定電圧の値と、を含む判定電圧情報を記憶する、
請求項2に記載のメモリシステム。
【請求項4】
前記第2回路は、前記第2メモリに記憶された前記判定電圧情報から前記第2数の前記第2判定電圧の値を取得して、取得した前記第2数の前記第2判定電圧の値を用いて前記第3処理を実行する、
請求項3に記載のメモリシステム。
【請求項5】
前記周辺回路に対して第1のリード処理の実行を指示し、前記第1のリード処理によって取得されたデータに対してエラー訂正を実行し、前記エラー訂正の結果に基づいて前記第1数の前記第1判定電圧の値を更新するメモリコントローラをさらに備え、
前記第1回路は、更新された前記第1数の前記第1判定電圧の値に基づいて前記第1処理および前記第2処理を実行することによって前記判定電圧情報を生成する、
請求項4に記載のメモリシステム。
【請求項6】
前記第1回路は、前記メモリコントローラの外部回路として、前記メモリコントローラの内部回路として、又は、前記第1メモリの内部回路として、構成され、
前記第2回路は、前記メモリコントローラの外部回路として、前記メモリコントローラの内部回路として、又は、前記第1メモリの内部回路として、構成される、
請求項5に記載のメモリシステム。
【請求項7】
前記第2回路は、前記第1のリード処理の後、前記第2メモリに記憶された前記判定電圧情報に基づいて前記第3処理および前記第4処理を実行することによって前記更新された前記第1数の前記第1判定電圧を復元し、
前記メモリコントローラは、前記復元された前記第1数の前記第1判定電圧を用いた第2のリード処理の実行を前記周辺回路に指示する、
請求項5又は請求項6に記載のメモリシステム。
【請求項8】
前記第2数は、2であり、
前記第2数の前記第2判定電圧の値は、前記第1数の前記第1判定電圧の値の最大値と最小値とである、
請求項1に記載のメモリシステム。
【請求項9】
前記第2数は、2であり、
前記第2数の前記第2判定電圧のは、前記第1数の前記第1判定電圧の値の最大値と最小値の次に大きい値とである、
請求項1に記載のメモリシステム。
【請求項10】
前記第1処理は、前記第2数の前記第2判定電圧の値の間の値を補間する処理または前記第2数の前記第2判定電圧の値の間より外の値を補外する処理を含む、
請求項1に記載のメモリシステム。
【請求項11】
メモリセルトランジスタに格納された複数ビットのデータを前記メモリセルトランジスタのしきい値電圧と3以上の第1数の第1判定電圧の少なくとも一部との比較に基づいて取得するリード処理を実行することと、
前記第1数の前記第1判定電圧のうちの前記第1数より少ない2以上の第2数の第2判定電圧の値に基づいて前記第2数の前記第2判定電圧の何れとも異なる第3判定電圧の値の推定値を演算する第1処理を実行することと、
前記第3判定電圧の値と前記第3判定電圧の値の推定値との差分値を演算する第2処理を実行することと、
前記第2処理によって得られた前記第3判定電圧にかかる差分値を第2メモリに格納することと、
を備えるメモリシステムの制御方法。
【請求項12】
前記差分値を格納することの後に、前記第1処理と同じ方法で、前記第2数の前記第2判定電圧の値に基づいて前記第3判定電圧の値の推定値を演算する第3処理を実行することと、
前記第3処理によって得られた前記第3判定電圧の値の推定値と前記第2メモリに記憶された前記第3判定電圧にかかる差分値とに基づいて前記第3判定電圧の値を演算する第4処理を実行することと、
をさらに備える請求項11に記載のメモリシステムの制御方法。
【請求項13】
前記差分値を格納することは、前記第3判定電圧にかかる差分値と、更に前記第2数の前記第2判定電圧の値と、を含む判定電圧情報を前記第2メモリに格納すること、
を含む請求項12に記載のメモリシステムの制御方法。
【請求項14】
前記第3処理を実行することは、前記第2メモリに格納された前記判定電圧情報から前記第2数の前記第2判定電圧の値を取得して、取得した前記第2数の前記第2判定電圧の値を用いて前記第3処理を実行すること、
を含む請求項13に記載のメモリシステムの制御方法。
【請求項15】
第1のリード処理の実行し、前記第1のリード処理によって取得されたデータに対してエラー訂正を実行し、前記エラー訂正の結果に基づいて前記第1数の前記第1判定電圧の値を更新することをさらに備え、
前記第1処理を実行することは、更新された前記第1数の前記第1判定電圧の値に基づいて前記第1処理を実行すること、
を含む請求項14に記載のメモリシステムの制御方法。
【請求項16】
前記第1のリード処理の後、前記第2メモリに記憶された前記判定電圧情報に基づいて前記第3処理および前記第4処理を実行することによって前記更新された前記第1数の前記第1判定電圧を復元することと、
前記復元された前記第1数の前記第1判定電圧を用いた第2のリード処理を実行することと、
をさらに備える請求項15に記載のメモリシステムの制御方法。
【請求項17】
前記第2数は、2であり、
前記第2数の前記第2判定電圧の値は、前記第1数の前記第1判定電圧の値の最大値と最小値とである、
請求項11に記載のメモリシステムの制御方法。
【請求項18】
前記第2数は、2であり、
前記第2数の前記第2判定電圧の値は、前記第1数の前記第1判定電圧の値の最大値と最小値の次に大きい値とである、
請求項11に記載のメモリシステムの制御方法。
【請求項19】
前記第1処理は、前記第2数の前記第2判定電圧の値の間の値を補間する処理または前記第2数の前記第2判定電圧の値の間より外の値を補外する処理を含む、
請求項11に記載のメモリシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本実施形態は、メモリシステムおよびメモリシステムの制御方法に関する。
【背景技術】
【0002】
従来、メモリセルトランジスタを有するメモリシステムが広く知られている。そのようなメモリシステムにおいては、メモリセルトランジスタのしきい値電圧と判定電圧との比較に基づいて、そのメモリセルトランジスタに保持されるデータの値が判定される、リード処理が実行される。
【0003】
しかしながら、メモリセルトランジスタのしきい値電圧は、使用状況に応じて変化し得る。これによって、データの誤判定(ビットエラー)が起こり得る。ビットエラーの発生に対する1つの対策として、メモリシステムは、判定電圧の設定値が変更可能に構成される。
【0004】
例えば、メモリシステムは、ビットエラーが発生した場合、当該ビットエラーによって化けたデータを、エラー訂正機能を用いて正しいデータに訂正する。エラー訂正機能を用いても正しいデータが得られない場合、メモリシステムは、エラー訂正機能を用いて正しいデータを得ることを可能とする判定電圧の値を求め、求めた値を判定電圧として設定してリード処理を実行することができる。
【0005】
エラー訂正機能を用いて正しいデータを得ることを可能とする判定電圧の値を保存して、次回のリード処理においてその保存された値が使用できれば、その判定電圧の値を求める処理の実行回数を低減できる。
【発明の概要】
【発明が解決しようとする課題】
【0006】
一つの実施形態は、判定電圧の値を効率的に保存することができるメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【0007】
一つの実施形態によれば、メモリシステムは、第1メモリと、第1回路と、第2メモリとを備える。第1メモリは、メモリセルトランジスタを備えるメモリセルアレイと、リード処理を実行する周辺回路とを備える。リード処理は、メモリセルトランジスタに格納された複数ビットのデータをメモリセルトランジスタのしきい値電圧と3以上の第1数の第1判定電圧の少なくとも一部との比較に基づいて取得する処理である。第1回路は、第1処理と第2処理とを実行する。第1処理は、第1数の第1判定電圧のうちの第1数より少ない2以上の第2数の第2判定電圧の値に基づいて第2数の第2判定電圧の何れとも異なる第3判定電圧の値の推定値を演算する処理である。第2処理は、第3判定電圧の値と第3判定電圧の値の推定値との差分値を演算する処理である。第2メモリは、第2処理によって得られた第3判定電圧にかかる差分値を記憶する。
【図面の簡単な説明】
【0008】
【
図1】
図1は、第1の実施形態のメモリシステムの構成例を示す図である。
【
図2】
図2は、第1の実施形態のメモリセルアレイに含まれる1個のブロックの構成例を示す回路図である。
【
図3】
図3は、第1の実施形態のメモリセルMTの取り得るしきい値電圧の分布を示す図である。
【
図4】
図4は、第1の実施形態の圧縮回路によって実行される第1処理および第2処理の具体例を説明するための図である。
【
図5】
図5は、第1の実施形態の展開回路によって実行される第3処理および第4処理の具体例を説明するための図である。
【
図6】
図6は、第1の実施形態のメモリシステムの主たる動作の概略を示すフローチャートである。
【
図7】
図7は、第1の実施形態の圧縮処理の手順の一例を説明するための図である。
【
図8】
図8は、第1の実施形態の展開処理の手順の一例を説明するための図である。
【
図9】
図9は、第2の実施形態の第1処理および第3処理の具体例を説明するための図である。
【
図10】
図10は、第5の実施形態の圧縮回路および展開回路の配置の一例を説明するための図である。
【
図11】
図11は、第5の実施形態の圧縮回路および展開回路の配置の別の一例を説明するための図である。
【
図12】
図12は、第5の実施形態の圧縮回路および展開回路の配置のさらに別の一例を説明するための図である。
【発明を実施するための形態】
【0009】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよびメモリシステムの制御方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【0010】
(第1の実施形態)
図1は、第1の実施形態のメモリシステムの構成例を示す図である。メモリシステム1は、ホスト2と所定の通信インタフェースで接続される。ホスト2は、例えばパーソナルコンピュータ、携帯情報端末、またはサーバなどが該当する。
【0011】
メモリシステム1は、ホスト2からアクセス要求(リード要求およびライト要求)を受信する。メモリシステム1は、ライト要求とともに、書き込み対象のデータを受信する。
【0012】
メモリシステム1は、メモリコントローラ10と、NAND型のフラッシュメモリ(NANDメモリ)20と、RAM(Random Access Memory)30と、を備えている。
【0013】
NANDメモリ20は、不揮発性のメモリであり、実施形態の第1メモリの一例である。NANDメモリ20は、周辺回路21およびメモリセルアレイ22を備える。
【0014】
メモリセルアレイ22は、それぞれが複数の不揮発性のメモリセルトランジスタ(メモリセル)の集合である複数のブロックを備える。ブロックに格納された全てのデータは、一括して消去される。
【0015】
周辺回路21は、例えば、ロウデコーダ、カラムデコーダ、センスアンプ、ラッチ回路、および電圧発生回路を含む。周辺回路21は、メモリコントローラ10からコマンドを受信すると、メモリセルアレイ22に対し、プログラム処理、リード処理、およびイレース処理のうちの当該コマンドに対応した処理を実行する。
【0016】
図2は、第1の実施形態のメモリセルアレイ22に含まれる1個のブロックの構成例を示す回路図である。図示するように、各ブロックは、X方向に沿って順に配列された(p+1)個のNANDストリングを備えている(p≧0)。(p+1)個のNANDストリングにそれぞれ含まれる選択トランジスタST1は、ドレインがビット線BL0~BLpに接続され、ゲートが選択ゲート線SGDに共通接続されている。また、選択トランジスタST2は、ソースがソース線SLに共通接続され、ゲートが選択ゲート線SGSに共通接続されている。
【0017】
各メモリセルMTは、半導体基板上に形成された積層ゲート構造を備えたMOSFET(Metal Oxide Semiconductor Field Effect Transistor)から構成される。積層ゲート構造は、半導体基板上にトンネル酸化膜を介在して形成されたフローティングゲート、及びフローティングゲート上にゲート間絶縁膜を介在して形成された制御ゲート電極を含んでいる。フローティングゲートに蓄えられる電子の数に応じてしきい値電圧が変化する。メモリセルMTは、しきい値電圧の違いに応じてデータを記憶する。即ち、メモリセルMTは、フローティングゲートに、データに応じた量の電荷を保持する。
【0018】
各NANDストリングにおいて、(q+1)個のメモリセルMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に、それぞれの電流経路が直列接続されるように配置されている(q≧0)。そして、最もドレイン側に位置するメモリセルMTから順に、制御ゲート電極がワード線WL0~WLqにそれぞれ接続されている。従って、ワード線WL0に接続されたメモリセルMTのドレインは選択トランジスタST1のソースに接続され、ワード線WLqに接続されたメモリセルMTのソースは選択トランジスタST2のドレインに接続されている。
【0019】
ワード線WL0~WLqは、ブロック内の各NANDストリング間で、メモリセルMTの制御ゲート電極を共通に接続している。つまり、ブロック内において同一行にあるメモリセルMTの制御ゲート電極は、同一のワード線WLに接続される。各メモリセルMTに1ビットの値を保持可能に構成される場合には、同一のワード線WLに接続される(p+1)個のメモリセルMTは1ページとして取り扱われ、このページごとにプログラム処理及びリード処理が行われる。
【0020】
各メモリセルMTには、複数ビットのデータが格納され得る。例えば、各メモリセルMTがn(n≧2)ビットのデータを格納可能な場合、ワード線当たりの記憶容量はnページ分のサイズに等しくなる。
【0021】
なお、各メモリセルMTに格納されるデータのビット数は、特定の数に限定されない。ここでは、各メモリセルMTに3ビットのデータが格納されるTLC(Triple Level Cell)と呼ばれる方式が採用された場合について説明する。
【0022】
図3は、第1の実施形態のメモリセルMTの取りうるしきい値電圧の分布を示す図である。本図において、横軸はしきい値電圧を表し、縦軸はメモリセル数を表す。
【0023】
メモリセルMTにデータが書き込まれた場合、各メモリセルのしきい値電圧が、分布Er、分布A、分布B、分布C、分布D、分布E、分布F、および分布Gの8つの分布のうちの何れかに含まれるように、各メモリセルMTのしきい値電圧が制御される。分布Er、分布A、分布B、分布C、分布D、分布E、分布F、および分布Gのそれぞれは、“111”、“110”、“100”、“000”、“010”、“011”、“001”、および“101”のうちの1つと1対1に対応付けられている。これによって、各メモリセルMTは、3ビットのデータを保持することができる。なお、各分布に対応付けられるデータはこれらに限定されない。
【0024】
分布ErはメモリセルMTのデータが消去された状態に対応する。即ち、周辺回路21によってイレース処理が実行された後のメモリセルMTのしきい値電圧は、分布Erに含まれる。メモリセルMTのしきい値電圧は、周辺回路21が実行するプログラム処理によって、分布Er内に維持されるか、または分布A~分布Gのうちのデータに対応した分布に至るまで上昇せしめられる。
【0025】
隣接する2つの分布間には、リード処理用の判定電圧が設定される。例えば、
図3に示されるように、分布Erと分布Aとの間に判定電圧VAが、分布Aと分布Bとの間に判定電圧VBが、分布Bと分布Cとの間に判定電圧VCが、分布Cと分布Dとの間に判定電圧VDが、分布Dと分布Eとの間に判定電圧VEが、分布Eと分布Fとの間に判定電圧VFが、分布Fと分布Gとの間に判定電圧VGが、設定される。
【0026】
リード処理においては、周辺回路21は、各メモリセルMTのしきい値電圧が属する分布を、当該しきい値電圧と判定電圧VA~VGとの比較に基づいて特定する。そして、周辺回路21は、特定した分布を当該分布に対応する値のデータにデコードして、デコードによって得られたデータをメモリコントローラ10に送信する。
【0027】
なお、3ビットのデータのうちの特定ビットのみがリード処理の対象の場合、周辺回路21は、判定電圧VA~VGのうちの一部のみを使用することによって特定ビットのデータを判定してもよい。つまり、周辺回路21は、メモリセルMTに格納されたデータを判定電圧VA~VGのうちの一部または全部を用いて判定することができる。
【0028】
ここで、前述したように、メモリセルMTのしきい値電圧は、使用状況に応じて変化し得る。しきい値電圧の分布の一部または全部が分布間の境界にあるべき判定電圧を越えた場合、データの誤判定が発生する。即ち、書き込まれたデータと異なるデータが読み出される、ビットエラーが発生する。
【0029】
メモリコントローラ10は、ビットエラーに対し、エラー訂正と、判定電圧のシフトと、で対処する。
【0030】
具体的には、メモリコントローラ10は、NANDメモリ20から取得したデータに対してエラー訂正を実行する。エラー訂正に失敗した場合、メモリコントローラ10は、判定電圧VA~VGの最適値を探索し、探索によって得られた判定電圧VA~VGの最適値を判定電圧VA~VGの新たな設定値として設定してリード処理をリトライする。
【0031】
ここで、判定電圧VA~VGの最適値は、ビットエラーの発生率を出来るだけ小さくすることができる判定電圧VA~VGの値である。判定電圧VA~VGの最適値は、必ずしも最適な値、例えばビットエラーの発生率を最小にするための値、でなくてもよい。本実施形態及び後述する実施形態では、ビットエラーの発生率を出来るだけ小さくすることができる判定電圧VA~VGの値が所定の方法で探索される。当該探索によって得られた判定電圧VA~VGの値を判定電圧VA~VGの最適値と定義する。
【0032】
メモリコントローラ10は、判定電圧VA~VGの最適値を判定電圧VA~VGの新たな設定値として設定してリトライされたリード処理によって得られたデータに対してエラー訂正を実行する。エラー訂正に成功した場合、メモリコントローラ10は、判定電圧VA~VGの新たな設定値をRAM30に設けられた管理領域31に保存し、次のリード処理を実行する際に、当該管理領域31に保存された判定電圧VA~VGの新たな設定値を利用する。
【0033】
これによって、判定電圧VA~VGの最適値を探索する処理の実行回数が低減され得る。例えば、メモリコントローラ10がメモリセルMTの同じ箇所に対して複数回のリード処理を実行する場合、探索された判定電圧VA~VGの最適値を取得して保存しておけば、当該複数回のリード処理のそれぞれにおいて探索を行う処理を省略できる。つまり、判定電圧VA~VGの最適値の探索に要する時間の分だけリード処理の実行速度を向上させることができる。
【0034】
なお、判定電圧VA~VGの最適値の探索方法は、特定の方法に限定されない。一例では、メモリコントローラ10は、ディストリビューションリードによって判定電圧VA~VGの最適値を探索することができる。ディストリビューションリードは、しきい値電圧の分布を測定する処理である。
【0035】
ディストリビューションリードでは、1つの判定電圧を用いて各メモリセルMTがオン状態であるかオフ状態であるかが判定される。判定電圧の値が所定の刻み幅ずつ変化せしめられながら複数回のリード処理が実行される。各リード処理では、オン状態またはオフ状態(所定状態)のメモリセルの数が、判定電圧として使用された値毎に取得される。そして、所定状態のメモリセルの数に基づいて、例えば
図3に示したような、8つのローブを有するしきい値電圧の分布が得られる。
【0036】
ディストリビューションリードによって8つのローブを有するしきい値電圧の分布が得られた場合、メモリセルの数が極小となる7つの電圧値が、判定電圧VA~VGの最適値として決定される。
【0037】
なお、ディストリビューションリードを実行する構成要素は、特定の構成要素に限定されない。例えば、メモリコントローラ10が、それぞれ判定電圧の値を少しずつ異ならせた複数回のリード処理を逐一、周辺回路21に指示して、当該複数回のリード処理のそれぞれから得られたデータに基づいて所定状態のメモリセルの数をカウントしてもよい。
【0038】
または、周辺回路21がディストリビューションリードを実行する機能を有する場合には、メモリコントローラ10は、周辺回路21にディストリビューションリードの実行を指示し、周辺回路21は、ディストリビューションリードによって得られたしきい値電圧の分布から判定電圧VA~VGの最適値を求め、求めた判定電圧VA~VGの最適値をメモリコントローラ10に送信してもよい。
【0039】
判定電圧VA~VGの最適値の探索方法は、ディストリビューションリードだけに限定されない。例えば、判定電圧VA~VGの値のそれぞれを少しずつ変えながら複数回のリード処理が実行され、当該複数回のリード処理のそれぞれにおいてビットエラーの数がカウントされ、当該複数回のリード処理のうちのビットエラーのカウント値が最小であったリード処理において使用された判定電圧VA~VGの値が、判定電圧VA~VGの最適値として決定されてもよい。
【0040】
図1に説明を戻す。
RAM30は、揮発性のメモリであり、実施形態の第2メモリの一例である。RAM30は、例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、またはこれらの組み合わせなどによって構成される。なお、揮発性メモリを構成するメモリの種類はこれらに限定されない。メモリシステム1は、RAM30の代わりに任意の種類のメモリを具備し得る。
【0041】
RAM30は、判定電圧の最適値が保存される領域である管理領域31を備える。
【0042】
前述したように、TLC方式の場合、7つの判定電圧VA~VGからなるセットが使用される。したがって、判定電圧の最適値をそのまま保存する場合、保存される情報のサイズが大きい。
【0043】
実施形態では、保存される情報のサイズを抑制するために、判定電圧の最適値は、圧縮された状態で管理領域31に保存される。そのための構成として、メモリシステム1は、圧縮回路40および展開回路50を備える。圧縮回路40および展開回路50のそれぞれは、CPU(Central Processing Unit)などのプロセッサであってもよいし、FPGA(field-programmable gate array)やASIC(application specific integrated circuit)などのハードウェア回路であってもよい。
【0044】
圧縮回路40は、実施形態の第1回路の一例である。圧縮回路40は、判定電圧VA~VGの最適値のうちの2つを基準値として選択し、基準値以外の5つの最適値のそれぞれについて推定値を演算する第1処理を実行する。判定電圧VA~VGのうちの最適値が基準値として選択される判定電圧は、予め設定されている。圧縮回路40は、基準値間の補間または基準値間の範囲外の補外によってそれぞれの推定値を演算する。圧縮回路40は、第1処理の後、基準値以外の5つの最適値のそれぞれについて最適値と推定値との差分値を演算する第2処理を実行する。
【0045】
図4は、第1の実施形態の圧縮回路40によって実行される第1処理および第2処理の具体例を説明するための図である。例えば、圧縮回路40は、
図4の(A)に示される判定電圧VA~VGの最適値のうちから、判定電圧VAの最適値および判定電圧VGの最適値を基準値として選択する(
図4の(B)参照)。
【0046】
そして、圧縮回路40は、第1処理を実行する。具体的には、圧縮回路40は、判定電圧VA~VGの最適値が等間隔に存在すると仮定して2つの基準値の間を補間することによって、判定電圧VB~VFの最適値の推定値を演算する(
図4の(C)参照)。つまり、この例では、圧縮回路40は、2つの基準値間の線形補間を実施することによって、判定電圧VB~VFの最適値の推定値を演算している。
【0047】
続いて、圧縮回路40は、第2処理を実行する。具体的には、圧縮回路40は、判定電圧VB~VFのそれぞれについて、最適値と推定値との差分値を演算する(
図4の(D)参照)。そして、圧縮回路40は、2つの基準値、即ち判定電圧VA、VGの最適値と、判定電圧VB~VFのそれぞれについて得られた、対応する推定値からの差分値を記録した情報を、1セットの判定電圧の最適値を示す情報(判定電圧情報32と表記する)として出力する。
【0048】
例えば、判定電圧VA~VGのそれぞれの値が0~511(9ビット)の範囲で設定可能であり、判定電圧VA~VGの最適値が{30,90,155,235,295,370,420}である場合を考える。
図4の例に従えば、判定電圧VAの最適値である30と、判定電圧VGの最適値である420と、のそれぞれが基準値として選択される。そして、30~420の範囲が6で除算されることによって、65が推定値の間隔として得られる。そして、判定電圧VB~VFの推定値が間隔65をあけて配置されることによって、{95,160,225,290,355}が判定電圧VB~VFの推定値として得られる。そして、判定電圧VB~VFのそれぞれについて最適値から推定値が減算されることによって、判定電圧VB~VFにかかる差分値{-5,-5,10,5,15}が得られる。そして、基準値である判定電圧VA,VGの最適値{30,420}と、判定電圧VB~VFにかかる差分値{-5,-5,10,5,15}とは、判定電圧情報32に記録されて、当該判定電圧情報32が出力される。
【0049】
判定電圧VA~VGのそれぞれの値が0~511(9ビット)の範囲で設定可能であるから、判定電圧VA~VGの最適値をそのまま保存しようとした場合、保存される情報のサイズは、63ビット(=7*9ビット)となる。これに対して、差分値のサイズは、5ビット以内に収まっている。よって、判定電圧VA~VGの最適値を示す判定電圧情報32のサイズを、43ビット(=2*9ビット+5*5ビット)に低減することが可能となる。
【0050】
このように、実施形態では、基準値を除く5つの最適値のそれぞれが、基準値に基づいて演算された推定値からの差分値として保存される。よって、判定電圧VA~VGの最適値を直値の形式で保存する場合に比べて、保存される情報のサイズを低減することが可能である。
【0051】
つまり、判定電圧VA~VGの最適値は、圧縮回路40によって、判定電圧VA~VGの最適値の直値よりもサイズが小さい判定電圧情報32に圧縮される。
【0052】
なお、差分値の保存に割り当てられたサイズが固定されていてもよいし、固定されていなくてもよい。上記の例によれば、判定電圧情報32のうちの判定電圧VB~VFのそれぞれにかかる差分値が保存されるサイズとして、固定された5ビットのサイズが用意されている。すなわち、判定電圧VB~VFにかかる差分値が{-5,-5,10,5,15}である場合、各差分値は、5ビットのサイズのデータとして判定電圧情報32に含まれる。なお、判定電圧VB~VFにかかる差分値の何れかが5ビットを超えた場合、圧縮回路40は、その差分値は、5ビットのサイズで表現可能な最大値や最小値(つまり5ビットで表現する範囲を-16から15までとするのであれば、最大値は15、最小値は-16)にクランプして保存してもよい。
【0053】
展開回路50は、実施形態の第2回路の一例である。展開回路50は、圧縮回路40とは逆の処理を実行することによって、判定電圧情報32から判定電圧VA~VGの最適値を復元する。つまり、展開回路50は、判定電圧情報32を判定電圧VA~VGの最適値の直値に展開する。
【0054】
具体的には、展開回路50は、管理領域31に保存された判定電圧情報32に含まれる2つの基準値を用いて第1処理と同じ処理である第3処理を実行することによって、基準値以外の5つの最適値のそれぞれについて推定値を演算する。第3処理の後、展開回路50は、当該判定電圧情報32に含まれる基準値以外の5つの最適値に対応した5つの差分値と、第3処理によって得られた5つの推定値に基づいて基準値以外の5つの最適値を演算する。
【0055】
図5は、第1の実施形態の展開回路50によって実行される第3処理および第4処理の具体例を説明するための図である。まず、展開回路50は、判定電圧情報32に含まれる判定電圧VAの最適値および判定電圧VGの最適値を基準値として取得する(
図5の(A)参照)。最適値が基準値として取得される判定電圧は、圧縮回路40が選択した判定電圧と同じである。
【0056】
続いて、展開回路50は、圧縮回路40と同様の方法で、判定電圧VB~VFの最適値の推定値を演算する(第3処理)。つまり、展開回路50は、判定電圧VA~VGの最適値が等間隔に存在すると仮定して2つの基準値の間を補間することによって、判定電圧VB~VFの最適値の推定値を演算する(
図5の(B)参照)。
【0057】
そして、展開回路50は、第4処理を実行する。具体的には、展開回路50は、判定電圧VB~VFのそれぞれについて、推定値と判定電圧情報32に含まれる差分値とに基づいて最適値を演算する(
図5の(C)参照)。これによって、展開回路50は、判定電圧VA~VGの最適値を得ることができる。展開回路50は、得られた判定電圧VA~VGの最適値を出力する。
【0058】
例えば、基準値である判定電圧VA,VGの最適値{30,420}と、判定電圧VB~VFにかかる差分値{-5,-5,10,5,15}とが記録された判定電圧情報32から判定電圧VA~VGの最適値を展開する場合を考える。展開の際においても、圧縮の場合と同様に、基準値{30,420}に基づく線形補間によって判定電圧VB~VFの推定値が演算される。これによって、圧縮の場合と同様の値{95,160、225,290,355}が判定電圧VB~VFの推定値として得られる。そして、{95,160、225,290,355}に差分値{-5,-5,10,5,15}が加算されることによって、判定電圧VA~VGの最適値の直値である{30,90,155,235,295,370,420}が得られる。
【0059】
なお、探索によって得られた判定電圧VA~VGの最適値は、リード処理のリトライにおいて判定電圧VA~VGの新しい設定値として使用される。当該リード処理のリトライによって読み出されたデータに対するエラー訂正に成功した後、設定値として使用された判定電圧VA~VGの最適値は、圧縮されて保存される。
【0060】
または、探索によって得られた判定電圧VA~VGの最適値は、まず、圧縮されて保存されてもよい。保存された判定電圧VA~VGの最適値は、再びリード処理が実行される際に展開されて、当該リード処理に使用されてもよい。
【0061】
以降の説明では、管理領域31に圧縮されて保存される判定電圧VA~VGの最適値を、判定電圧VA~VGの新しい設定値として使用された値か、または後に判定電圧VA~VGの新しい設定値として使用される値という意味で、判定電圧VA~VGの設定値、または、判定電圧VA~VGの新しい設定値、と表記する。
【0062】
管理領域31には、圧縮回路40によって生成された判定電圧情報32が保存される。展開回路50は、管理領域31に保存された判定電圧情報32を展開することによって、判定電圧VA~VGの最適値を得る。
【0063】
なお、管理領域31には、複数の判定電圧情報32が保存され得る。例えば、ブロック毎に1つのセットの判定電圧の設定値が適用されるようにメモリシステム1が構成されている場合には、管理領域31には、それぞれ適用されるブロックが異なる複数の判定電圧情報32が保存され得る。なお、1つのセットの判定電圧の設定値が適用される単位はブロックに限定されない。
【0064】
メモリコントローラ10は、ホスト2とNANDメモリ20との間のデータ転送を含めたメモリシステム1の制御を実行する。具体的には、メモリコントローラ10は、ホスト2からの要求又はメモリシステム1の内部要求に応じて、リード処理、プログラム処理、およびイレース処理のうちの何れかの処理を周辺回路21に指示する。
【0065】
また、メモリコントローラ10は、NANDメモリ20から読み出されたデータ(周辺回路21がリード処理によってメモリセルアレイ22から取得したデータ)に対してエラー訂正を実行することができる。
【0066】
例えば、メモリコントローラ10は、NANDメモリ20にデータを送る際に、当該データに対してエラー訂正のための符号化を実施する。つまり、メモリセルアレイ22には、符号化されたデータが書き込まれる。NANDメモリ20からデータが読み出された際には、メモリコントローラ10は、NANDメモリ20から読み出されたデータ(符号化されたデータ)を復号化することによって、当該データに含まれるビットエラーの検出を実施する。メモリコントローラ10は、ビットエラーが検出された場合には、ビットエラーによって化けたデータを正しいデータに訂正する。
【0067】
メモリコントローラ10による符号化/復号化の方式としては、任意の方式が採用され得る。例えば、BCH符号やLDPC(Low-Density Parity-Check)符号などがメモリコントローラ10による符号化/復号化の方式として採用され得る。メモリコントローラ10は、訂正能力が異なる複数の方式のエラー訂正機能を有していてもよい。
【0068】
なお、メモリコントローラ10は、1つのSoC(System-on-a-Chip)として構成されてもよいし、複数のチップによって構成されてもよい。メモリコントローラ10は、RAM30を内部に備えていてもよい。
【0069】
また、メモリコントローラ10は、プロセッサとともに、またはプロセッサに代えて、FPGAやASICを備えていてもよい。即ち、メモリコントローラ10は、ソフトウェア、ハードウェア、またはこれらの組み合わせによって構成され得る。
【0070】
次に、第1の実施形態のメモリシステム1の動作について説明する。
図6は、第1の実施形態のメモリシステム1の主たる動作の概略を示すフローチャートである。
【0071】
まず、メモリコントローラ10は、周辺回路21に指示してリード処理を実行する(S101)。S101の際に、メモリコントローラ10は、判定電圧VA~VGの値を指定してもよいし、指定しなくてもよい。周辺回路21は、メモリコントローラ10から指示された値または予め決められた値を判定電圧VA~VGとして使用する。
【0072】
周辺回路21がリード処理によってデータを取得すると、メモリコントローラ10は、当該データに対してエラー訂正を実行する(S102)。そして、メモリコントローラ10は、エラー訂正の結果に基づき、判定電圧の最適化を実行するか否かを判定する(S103)。
【0073】
S103の判定の基準は、特定の基準に限定されない。例えば、メモリコントローラ10は、エラー訂正が失敗した場合、判定電圧の最適化を実行すると判定し、エラー訂正が成功した場合、判定電圧の最適化を実行しないと判定してもよい。
【0074】
または、メモリコントローラ10は、複数セットの判定電圧の候補値を予め記憶しておき、各セットの判定電圧の候補値を順次、適用して複数回のリード処理を実行するよう、構成されてもよい。メモリコントローラ10は、当該複数回のリード処理の何れにおいてもエラー訂正に失敗した場合、判定電圧の最適化を実行すると判定し得る。メモリコントローラ10は、当該複数回のリード処理の何れかにおいてエラー訂正に成功した場合、判定電圧の最適化を実行しないと判定し得る。
【0075】
メモリコントローラ10は、判定電圧の最適化を実行すると判定した場合(S103、Yes)、探索を実行することによって、判定電圧VA~VGの新しい設定値を取得する(S104)。つまり、メモリコントローラ10は、ディストリビューションリードなどを実行することによって判定電圧VA~VGの最適値を求め、得られた判定電圧VA~VGの最適値を判定電圧VA~VGの新しい設定値とする。
【0076】
その後、メモリコントローラ10は、周辺回路21に指示してリード処理をリトライする(S105)。S105においては、メモリコントローラ10は、S104の処理によって得られた判定電圧VA~VGの新しい設定値を用いてリード処理を実行する。
【0077】
周辺回路21がS105のリード処理によってデータを取得すると、メモリコントローラ10は、当該データに対してエラー訂正を実行する(S106)。そして、メモリコントローラ10は、エラー訂正が成功したか否かを判定する(S107)。
【0078】
エラー訂正が成功した場合(S107、Yes)、圧縮回路40は、判定電圧VA~VGの新しい設定値を圧縮する(S108)。メモリコントローラ10は、圧縮回路40から出力される圧縮後の判定電圧VA~VGの新しい設定値を示す判定電圧情報32を、管理領域31に保存する(S109)。そして、リード処理が再び実行されるか否かが判定される(S110)。
【0079】
リード処理が再び実行されると判定された場合には(S110、Yes)、展開回路50は、管理領域31に保存された判定電圧情報32を展開して判定電圧VA~VGの設定値を得る(S111)。メモリコントローラ10は、周辺回路21に指示して展開によって得られた判定電圧VA~VGの新しい設定値を用いたリード処理を実行する(S112)。そして、S102に制御が移行する。
【0080】
判定電圧の更新を実行しないと判定された場合(S103、No)、エラー訂正に失敗した場合(S107、No)、あるいはリード処理を再び実行しない場合(S110、No)、メモリシステム1は動作を終了する。
【0081】
なお、
図6を用いて説明した動作は、一例である。圧縮回路40が圧縮処理を実行するタイミングやトリガ条件は上記の例に限定されない。また、展開回路50が展開処理を実行するタイミングやトリガ条件は上記の例に限定されない。
【0082】
図7は、第1の実施形態の圧縮処理の手順の一例を説明するための図である。
まず、圧縮回路40は、判定電圧VA~VGの設定値から、基準値を選択する(S201)。例えば圧縮回路40は、判定電圧VAの設定値と判定電圧VGの設定値とを基準値として選択する。
【0083】
続いて、圧縮回路40は、第1処理を実行する(S202)。即ち、圧縮回路40は、S201において選択された2つの基準値に基づいて、基準値を除く判定電圧の設定値(すなわち判定電圧VB~VFの設定値)の推定値を演算する。例えば圧縮回路40は、2つの基準値の間の範囲を線形補間することによって判定電圧VB~VFの設定値の推定値を演算する。
【0084】
続いて、圧縮回路40は、第2処理を実行する(S203)。即ち、圧縮回路40は、判定電圧VB~VFのそれぞれについて推定値と設定値との差分値を演算する。
【0085】
続いて、圧縮回路40は、2つの基準値(即ち判定電圧VAの設定値と判定電圧VGの設定値)と、判定電圧VB~VFのそれぞれについて演算された差分値と、からなるセットを判定電圧情報32として出力する(S204)。S204によって、圧縮処理が完了する。
【0086】
図8は、第1の実施形態の展開処理の手順の一例を説明するための図である。
まず、展開回路50は、判定電圧情報32から基準値と差分値を取得する(S301)。例えば、展開回路50は、判定電圧情報32に含まれる判定電圧VA,VGの設定値のそれぞれを基準値として取得し、判定電圧情報32に含まれる判定電圧VB~VFにかかる差分値を取得する。
【0087】
続いて、展開回路50は、第3処理を実行する(S302)。即ち、展開回路50は、S301において取得された2つの基準値に基づいて、基準値を除く判定電圧の設定値(すなわち判定電圧VB~VFの設定値)の推定値を演算する。例えば展開回路50は、2つの基準値の間の範囲を線形補間することによって判定電圧VB~VFの設定値の推定値を演算する。
【0088】
続いて、展開回路50は、第4処理を実行する(S303)。即ち、展開回路50は、判定電圧VB~VGのそれぞれについて差分値と推定値を加算することによって、基準値を除く判定電圧の設定値(すなわち判定電圧VB~VGの設定値)を演算する。
【0089】
そして、展開回路50は、基準値として取得した判定電圧VA,VGの設定値と、S303によって取得した判定電圧VB~VGの設定値と、をまとめて出力する(S304)。S304によって、展開処理が完了する。
【0090】
以上述べたように、第1の実施形態によれば、圧縮回路40は、判定電圧VA~VGの設定値のうちの2つの判定電圧VA,VGの設定値を基準値として使用して判定電圧VB~VFそれぞれについて設定値の推定値を演算する第1処理を実行する。その後、圧縮回路40は、判定電圧VB~VFのそれぞれについて、設定値と推定値との差分値を演算する第2処理を実行する。管理領域31には、判定電圧VB~VFのそれぞれについて、設定値ではなく差分値が保存される。
【0091】
この構成によって、判定電圧VB~VFのそれぞれについて、保存される情報のサイズを低減することが可能となる。即ち、判定電圧の設定値を効率的に保存することが可能となる。
【0092】
なお、基準値として選択された設定値は、直値の状態で判定電圧情報32に含まれている、として説明した。基準値として選択された設定値は、直値の状態ではなく、所定の値からの差分値として判定電圧情報32に含まれてもよい。
【0093】
さらに、第1の実施形態によれば、展開回路50は、判定電圧情報32に含まれる2つの判定電圧VA,VGの設定値を基準値として取得して、当該2つの基準値を用いて第1処理と同じ処理である第3処理を実行することによって、判定電圧VB~VFそれぞれについて設定値の推定値を演算する。その後、展開回路50は、判定電圧VB~VFのそれぞれについて、判定電圧情報32に含まれる判定電圧VB~VFにかかる差分値と第3処理によって得られた判定電圧VB~VFの設定値の推定値に基づき、判定電圧VB~VFのそれぞれについて設定値を演算する第4処理を実行する。
【0094】
展開処理において、判定電圧VB~VFのそれぞれについて、圧縮処理で使用された推定値と等しい値が使用される。よって、展開処理によって、判定電圧VB~VFのそれぞれについて、圧縮前の設定値と同じ値が得られる。つまり、判定電圧VB~VFの設定値に関してロスレスの圧縮・展開が可能となる。
【0095】
(第2の実施形態)
第1の実施形態では、判定電圧VA~VGの設定値のうちの判定電圧VA,VGの設定値がそれぞれ基準値として選択された。つまり、第1の実施形態では、判定電圧VA~VGの設定値のうちの最大値と最小値とが基準値として選択された。基準値の選択方法はこれに限定されない。
【0096】
図9は、第2の実施形態の第1処理および第3処理の具体例を説明するための図である。本図に示される例によれば、判定電圧VB,VGのそれぞれの設定値が基準値として選択される(
図9の(A)、(B)参照)。つまり、第2の実施形態では、判定電圧VA~VGの設定値のうちの最大値と最小値の次に大きい値とが基準値として選択される。
【0097】
そして、第1処理では、判定電圧VA~VGの設定値が等間隔に存在すると仮定して2つの基準値の間が補間されることによって、判定電圧VC~VFの設定値の推定値が演算される(
図9の(C)参照)。つまり、判定電圧VBの設定値と、判定電圧VGの設定値の間の範囲が線形補間されることによって、判定電圧VC~VFの設定値の推定値が演算されている。
【0098】
さらに、第1処理では、判定電圧VA~VGの設定値が等間隔に存在すると仮定して2つの基準値の間の範囲の負側に位置する判定電圧VAの設定値の推定値が演算される(
図9の(C)参照)。即ち、判定電圧VAの設定値の推定値は、判定電圧VBの設定値と、判定電圧VGの設定値の間の範囲外が補外されることによって演算されている。このとき、判定電圧VAの設定値の推定値が設定可能電圧の最小値未満となった場合は、設定可能電圧の最小値でクリップしても良い。
【0099】
そして、第2処理では、判定電圧VA、VC~VFのそれぞれについて、最適値と推定値との差分値が演算される(
図9の(D)参照)。そして、2つの基準値、即ち判定電圧VB、VGの最適値と、判定電圧VA、VC~VFのそれぞれについて得られた、対応する推定値からの差分値と、が判定電圧情報32に記録され、当該判定電圧情報32が出力される。
【0100】
例えば、判定電圧VA~VGのそれぞれの値が0~511(9ビット)の範囲で設定可能であり、判定電圧VA~VGの設定値が{30,90,155,235,295,370,420}である場合を考える。
図9の例では、第1処理において、判定電圧VBの設定値である90と、判定電圧VGの最適値である420と、が基準値として選択される。そして、90~420の範囲が5で除算されることによって、66が推定値の間隔として得られる。そして、判定電圧VC~VFの推定値が間隔66をあけて配置されることによって、{156,222,288,354}が判定電圧VC~VFの推定値として得られる。
【0101】
第1処理では、さらに、判定電圧VAの推定値が判定電圧VBの設定値90から負方向に間隔66をあけて配置されることによって、24が判定電圧VAの推定値として得られる。即ち、判定電圧VA、VC~VFの推定値は、{24,156,222,288,354}と求まる。
【0102】
第2処理においては、判定電圧VA、VC~VFのそれぞれについて差分値が演算され、{6,-1,13,7,16}が判定電圧VA、VC~VFにかかる差分値として得られる。
【0103】
そして、基準値である判定電圧VB,VGの設定値{90,420}と、判定電圧VA,VC~VFにかかる差分値{6,-1,13,7,16}とが、記録された判定電圧情報32が出力される。
【0104】
第3処理においては、判定電圧情報32から判定電圧VB,VGの設定値{90,420}が基準値として取得され、これらの基準値に基づく第1処理と同じ処理によって、判定電圧VA、VC~VFの推定値{24,156,222,288,354}が得られる。
【0105】
第3処理の後の第4処理においては、判定電圧VA、VC~VFの推定値{24,156,222,288,354}と判定電圧情報32に含まれる判定電圧VA、VC~VFにかかる差分値{6,-1,13,7,16}とが加算されることによって、判定電圧VA、VC~VFの設定値の直値である{30,155,235,295,370}が得られる。
【0106】
そして、判定電圧VB,VGの設定値{90,420}と判定電圧VA、VC~VFの設定値の直値である{30,155,235,295,370}とが判定電圧VA~VGの設定値として出力される。
【0107】
判定電圧VA~VGのそれぞれの値が0~511(9ビット)の範囲で設定可能であるから、判定電圧VA~VGの最適値をそのまま保存しようとした場合、保存される情報のサイズは、63ビット(=7*9ビット)となる。これに対して、第1の実施形態の場合と同様に、差分値のサイズは、5ビット以内に収まっている。よって、判定電圧VA~VGの最適値を示す判定電圧情報32のサイズを、43ビット(=2*9ビット+5*5ビット)に低減することが可能となる。
【0108】
このように、第2の実施形態では、判定電圧VA~VGの設定値のうちの判定電圧VB,VGの設定値のそれぞれが基準値として設定される。
【0109】
1セットの判定電圧VA~VGのうちの最小の値が設定される判定電圧である判定電圧VAは、消去された状態に対応する分布Erに最も近いことから、他の判定電圧と挙動が異なる場合がある。その場合、判定電圧VAの設定値を基準値として選択すると、基準値以外の設定値に関して、設定値と推定値との乖離量(差分値)が大きくなってしまう虞がある。設定値と推定値との乖離量(差分値)が大きくなると、差分値の保存に要するサイズが増大する。
【0110】
第2の実施形態では、判定電圧VAの設定値の代わりに判定電圧VBの設定値が基準値として選択されたことによって、設定値と推定値との乖離量(差分値)を抑制でき、これによって、差分値の保存に要するサイズが増大を防止することができる。
【0111】
なお、第2の実施形態では、判定電圧VA~VGの設定値のうちの判定電圧VB,VGの設定値のそれぞれが基準値として設定された例を説明した。基準値の選択方法は、これに限定されない。判定電圧VA~VGの設定値のうちの任意の2つが基準値として選択され得る。
【0112】
(第3の実施形態)
第2処理において実行される差分値の演算の方法は、第1、第2の実施形態において説明された方法だけに限定されない。第2処理では、例えば下記に説明する処理によって差分値が演算され得る。
【0113】
第2処理では、圧縮回路40は、基準値間の各設定値の差分値を、電圧値の昇順または降順の何れかの予め設定された順で演算する。そして、圧縮回路40は、基準値間又は外の各設定値の差分値を算出する際には、各設定値の差分値を、所定の方法で求めた補正量を用いて補正した後に出力する。ここで、圧縮回路40は、基準値間又は外の各設定値の差分値の演算を開始してから得られた設定値毎の差分値を積算して得られる値を補正量として使用する。
【0114】
例えば、第1の実施形態では、判定電圧VA~VGの設定値が{30,90,155,235,295,370,420}である場合、{95,160,225,290,355}が判定電圧VB~VFの設定値の推定値として得られ、{-5,-5,10,5,15}が判定電圧VB~VFにかかる差分値として得られる、として説明した。
【0115】
第3の実施形態では、例えばVB,VC,VD,VE,VFの順番で差分値が演算されると仮定した場合、圧縮回路40は、まず、判定電圧VBにかかる差分値を第1の実施形態と同様の方法で演算することで、-5を判定電圧VBにかかる差分値として得る。
【0116】
次に、圧縮回路40は、判定電圧VCの設定値と判定電圧VCの推定値との差分値を、判定電圧VBにかかる差分値である-5を補正量として補正し、補正によって得られた値を判定電圧VCにかかる差分値として得る。つまり、圧縮回路40は、判定電圧VCの設定値である155から判定電圧VCの推定値である160を減算し、減算によって得られた値である-5から補正量である-5を減算する。圧縮回路40は、補正量の減算によって得られた値である0を、判定電圧VCにかかる差分値として得る。
【0117】
次に、圧縮回路40は、判定電圧VBにかかる差分値である-5と判定電圧VCにかかる差分値である0との合計値である-5を補正量として使用することによって、判定電圧VDにかかる差分値を演算する。つまり、圧縮回路40は、判定電圧VDの設定値である235から判定電圧VDの推定値である225を減算し、減算によって得られた値である10から補正量である-5を減算する。圧縮回路40は、補正量の減算によって得られた値である15を、判定電圧VDにかかる差分値として得る。
【0118】
次に、圧縮回路40は、判定電圧VBにかかる差分値である-5と判定電圧VCにかかる差分値である0と判定電圧VDにかかる差分値である15の合計値である10を補正量として使用することによって、判定電圧VEにかかる差分値を演算する。つまり、圧縮回路40は、判定電圧VEの設定値である295から判定電圧VEの推定値である290を減算し、減算によって得られた値である5から補正量である10を減算する。圧縮回路40は、補正量の減算によって得られた値である-5を、判定電圧VEにかかる差分値として得る。
【0119】
次に、圧縮回路40は、判定電圧VBにかかる差分値である-5と判定電圧VCにかかる差分値である0と判定電圧VDにかかる差分値である15と判定電圧VEにかかる差分値である-5との合計値である5を補正量として使用することによって、判定電圧VFにかかる差分値を演算する。つまり、圧縮回路40は、判定電圧VFの設定値である370から判定電圧VEの推定値である355を減算し、減算によって得られた値である15から補正量である5を減算する。圧縮回路40は、補正量の減算によって得られた値である10を、判定電圧VFにかかる差分値として得る。
【0120】
つまり、圧縮回路40は、{-5,0,15,-5,10}を判定電圧VB~VFにかかる差分値として得ることができる。
【0121】
なお、この例では、VB,VC,VD,VE,VFの順で差分値が演算されると仮定した場合について説明した。電圧順とは逆の順、即ちVF,VE,VD,VC,VBの順で差分値が演算されてもよい。その場合には、圧縮回路40は、各差分値を演算する際に、その時点よりも前に演算された差分値の合計値を補正量として使用すればよい。
【0122】
展開回路50は、第4処理において、上記した第2処理とは逆の処理を実行する。
【0123】
具体的には、展開回路50は、電圧値の昇順または降順のうちの圧縮回路40が補正量の演算を行った順で、判定電圧VB~VFにかかる補正量を演算する。そして、展開回路50は、基準値間の各設定値を算出する際には、各設定値の差分値を、予め求めた補正量で補正した後に適用する。
【0124】
例えば、判定電圧VB~VFにかかる差分値が{-5,0,15,-5,10}であり、判定電圧VB~VFの設定値の推定値が{95,160,225,290,355}であり、判定電圧VB~VFにかかる差分値は電圧順に演算された場合を考える。
【0125】
展開回路50は、判定電圧VBにかかる差分値である-5を、判定電圧VCの設定値を演算する際の補正量として使用する。展開回路50は、判定電圧VBにかかる差分値である-5と判定電圧VCにかかる差分値である0との合計値である-5を、判定電圧VDの設定値を演算する際の補正量として使用する。展開回路50は、判定電圧VBにかかる差分値である-5と判定電圧VCにかかる差分値である0と判定電圧VDにかかる差分値である15との合計値である10を、判定電圧VEの設定値を演算する際の補正量として使用する。展開回路50は、判定電圧VBにかかる差分値である-5と判定電圧VCにかかる差分値である0と判定電圧VDにかかる差分値である15と判定電圧VEにかかる差分値である-5との合計値である5を、判定電圧VFの設定値を演算する際の補正量として使用する。
【0126】
展開回路50は、推定値に補正量と差分値を加算することによって、設定値を得る。
【0127】
展開回路50は、判定電圧VBの設定値と同様の方法で判定電圧VC~VFの設定値を演算する。但し、展開回路50は、{-5,10,5,15}を判定電圧VC~VFにかかる補正量として用いる。
【0128】
なお、判定電圧VA~VGの設定値が{30,90,155,235,295,370,420}であり、判定電圧VB~VFの設定値の推定値が{95,160,225,290,355}である場合、圧縮回路40は、{-5,0,15,-5,10}を判定電圧VB~VFにかかる差分値として得た。圧縮回路40は、判定電圧VB~VFにかかる差分値の符号ができるだけ同じ符号となるように、偶数番目または奇数番目の差分値に-1を乗算してもよい。例えば圧縮回路40は、判定電圧VC,VEの差分値に-1を加算する第2の補正を行い、得られた{-5,0,15,5,10}を判定電圧VB~VFにかかる差分値として出力してもよい。
【0129】
このように、推定値と設定値との差分値は、補正された後に保存されてもよい。
【0130】
(第4の実施形態)
第1~第3の実施形態では、一例として、各メモリセルMTに3ビットのデータが格納される場合について説明した。第1~第3の実施形態の技術は、各メモリセルMTに3以外の複数ビットのデータが格納される場合についても適用され得る。
【0131】
例えば、各メモリセルMTにNビット(Nは2以上の自然数)のデータが格納される場合、1セットの判定電圧は、2N-1個の判定電圧を含む。Nが2の場合、1セットの判定電圧は、3個の判定電圧を含む。Nは2以上であってよいので、判定電圧の数は、3以上となる。
【0132】
圧縮回路40は、2N-1個の判定電圧の設定値のうちの2つを基準値として選択し、2つの基準値間の範囲の補間や当該範囲の外の補外によって基準値以外の設定値の推定値を演算し、推定値と設定値との差分値を演算する。
【0133】
また、第1~第3の実施形態では、一例として、2つの判定電圧の設定値が基準値として選択される場合について説明した。3以上の設定値が基準値として選択されてもよい。圧縮回路40および展開回路50は、3以上の基準値を用いて補間あるいは補外によって、基準値以外の設定値の推定値を演算してもよい。
【0134】
なお、1セットの判定電圧の設定値のうち、差分値として保存される設定値の割合が多いほど、圧縮率を高めることができる。即ち、2つの判定電圧の設定値のみを基準値とすることで、最大の圧縮率を実現することができる。
【0135】
また、第1~第3の実施形態では、一例として、設定値が等間隔に存在するとの仮定に基づいて各推定値が演算された。設定値間の間隔が所定の比率であるとの仮定に基づいて各推定値が演算されてもよい。つまり、圧縮回路40や展開回路50は、基準値間を任意の比率で分割することによって基準値間の各設定値の推定値を演算してもよいし、基準値間の各設定値の間隔と異なる値を用いて外挿することによって基準値間の範囲外の設定値にかかる推定値を演算してもよい。推定値を演算するためのアルゴリズムや推定値を演算するための演算式は、任意に設計され得る。
【0136】
また、第1~第3の実施形態では、一例として、RAM30に設けられた管理領域31に判定電圧情報32が保存された。判定電圧情報32が保存される位置はRAM30に限定されない。判定電圧情報32は、NANDメモリ20に保存されてもよい。
【0137】
また、ホストが内蔵するメモリにデバイスが使用できる領域を設ける技術が知られている。その技術は、例えばUFS(Universal Flash Storage)規格の一つとして規格化されている。判定電圧情報32は、ホスト2が内蔵するメモリにアロケートされた、メモリシステム1が使用可能な領域に、判定電圧情報32を保存してもよい。
【0138】
また、第1~第3の実施形態では、一例として、メモリセルアレイ22がメモリセルMTが2次元的に配列された構成を有する場合について説明した。メモリセルアレイ22は、メモリセルMTが3次元的に配列された構成を有していてもよい。その場合には、例えば、導電膜と絶縁膜とが交互に積層された積層体が柱状の半導体柱で貫通され、導電膜と半導体柱とが交差する部分にメモリセルMTが設けられ得る。
【0139】
(第5の実施形態)
圧縮回路40および展開回路50は、メモリシステム1内の任意の構成要素に具備され得る。第5の実施形態では、
図10~12を参照して、圧縮回路40および展開回路50の配置の例を3つ説明する。
【0140】
図10に示される例によれば、メモリコントローラ10aは、RAM30とNANDメモリ20に接続されている。また、メモリコントローラ10は、ホスト2と接続されている。
【0141】
NANDメモリ20は、それぞれが周辺回路21およびメモリセルアレイ22を備えた複数のメモリチップ23を備えている。
【0142】
そして、圧縮回路40および展開回路50は、ともにメモリコントローラ10に設けられている。
【0143】
メモリコントローラ10は、判定電圧の最適値(設定値)の探索を実行し、得られた判定電圧の最適値(設定値)を、圧縮回路40によって圧縮する。そして、メモリコントローラ10は、圧縮によって得られた判定電圧情報32をRAM30内の管理領域31に保存する。
【0144】
メモリコントローラ10は、圧縮された判定電圧の設定値を使用する場合には、管理領域31から判定電圧情報32を読み出す。そして、メモリコントローラ10は、当該読み出した判定電圧情報32を展開回路50によって展開することによって、判定電圧の設定値を得る。メモリコントローラ10は、展開によって得られた判定電圧の設定値をメモリチップ23に送信し、展開によって得られた判定電圧の設定値を使用したリード処理を周辺回路21に指示する。
【0145】
図11に示される例は、展開回路50が各メモリチップ23aに設けられている点で
図10に示される例と異なっている。
図11に示される例によれば、メモリコントローラ10bは、自身が備える圧縮回路40によって判定電圧の設定値を圧縮し、圧縮によって得られた判定電圧情報32をRAM30内の管理領域31に保存する。
【0146】
メモリコントローラ10は、圧縮された判定電圧の設定値を使用する場合には、管理領域31から判定電圧情報32を読み出して、当該判定電圧情報32をメモリチップ23に送信する。メモリチップ23は、判定電圧情報32を受信すると、当該判定電圧情報32を自身が備える展開回路50によって判定電圧の設定値に展開し、展開によって得られた判定電圧の設定値を使用する。
【0147】
図12に示される例は、圧縮回路40および展開回路50がともに各メモリチップ23bに設けられている点で
図10に示される例と異なっている。
【0148】
図12に示される例によれば、例えば、周辺回路21は、メモリコントローラ10cからの指示に基づいて判定電圧の最適値を探索する処理を実施する。メモリチップ23は、得られた判定電圧の最適値を、自身が備える圧縮回路40によって圧縮し、圧縮によって得られた判定電圧情報32をメモリコントローラ10に送信する。メモリコントローラ10は、メモリチップ23から判定電圧情報32を受信すると、受信した判定電圧情報32をRAM30内の管理領域31に保存する。
【0149】
メモリコントローラ10は、圧縮された判定電圧の設定値を使用する場合には、管理領域31から判定電圧情報32を読み出して、当該判定電圧情報32をメモリチップ23に送信する。メモリチップ23は、判定電圧情報32を受信すると、当該判定電圧情報32を自身が備える展開回路50によって判定電圧の設定値に展開し、展開によって得られた判定電圧の設定値を使用する。
【0150】
このように、第1~第4の実施形態で説明した圧縮回路40や展開回路50は、任意に配置され得る。
【0151】
第1~第5の実施形態で説明したように、圧縮回路40は、複数の判定電圧の設定値のうちの2以上の判定電圧の設定値を基準値として使用して複数の判定電圧のそれぞれについて設定値の推定値を演算する第1処理を実行する。その後、圧縮回路40は、基準値と異なる判定電圧の設定値のそれぞれについて、設定値と推定値との差分値を演算する第2処理を実行する。管理領域31には、基準値と異なる判定電圧にかかる差分値が保存される。
【0152】
これによって、判定電圧の設定値を効率的に保存することが可能となる。
【0153】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0154】
1 メモリシステム、2 ホスト、10 メモリコントローラ、20 NANDメモリ、21 周辺回路、22 メモリセルアレイ、23 メモリチップ、31 管理領域、32 判定電圧情報、40 圧縮回路、50 展開回路。