(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022050898
(43)【公開日】2022-03-31
(54)【発明の名称】メモリシステムおよびメモリシステムの制御方法
(51)【国際特許分類】
G06F 12/00 20060101AFI20220324BHJP
G11C 16/04 20060101ALI20220324BHJP
G11C 16/34 20060101ALI20220324BHJP
【FI】
G06F12/00 597U
G11C16/04 170
G11C16/34 113
G11C16/34 163
G06F12/00 550Z
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2020157074
(22)【出願日】2020-09-18
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001634
【氏名又は名称】特許業務法人 志賀国際特許事務所
(72)【発明者】
【氏名】小松 裕樹
(72)【発明者】
【氏名】島田 克行
【テーマコード(参考)】
5B160
5B225
【Fターム(参考)】
5B160NA01
5B225BA01
5B225CA19
5B225CA27
5B225DA10
5B225DD05
5B225DE07
5B225DE08
5B225EA05
5B225EA07
5B225EH04
5B225FA01
(57)【要約】
【課題】データの読み出しに関する特性の向上を図ることができるメモリシステムおよびメモリシステムの制御方法を提供することである。
【解決手段】実施形態のメモリシステムは、メモリと、コントローラと、を持つ。前記メモリは、第1メモリセル及び第2メモリセルを少なくとも含む。前記コントローラは、前記第1メモリセルがストレスを受けていない場合の前記第1メモリセルからのデータの読み出しに用いられる読み出ししきい値に対する前記第1メモリセルが前記ストレスを受けた場合の前記第1メモリセルからのデータの読み出しに用いられる読み出ししきい値の変化量に基づいて、前記ストレスの候補のうち、前記第1メモリセルが受けた前記ストレスの種類及び前記第2メモリセルが受けたストレスの種類の少なくとも一方を判定する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第1メモリセル及び第2メモリセルを少なくとも含むメモリと、
前記第1メモリセルがストレスを受けていない場合の前記第1メモリセルからのデータの読み出しに用いられる読み出ししきい値に対する前記第1メモリセルが前記ストレスを受けた場合の前記第1メモリセルからのデータの読み出しに用いられる読み出ししきい値の変化量に基づいて、前記ストレスの候補のうち、前記第1メモリセルが受けた前記ストレスの種類及び前記第2メモリセルが受けたストレスの種類の少なくとも一方を判定するコントローラと、
を備えるメモリシステム。
【請求項2】
前記コントローラは、
前記ストレスと前記変化量との関係を示す関数を用いて前記第1メモリセルが受けた前記ストレスの種類及び前記第2メモリセルが受けた前記ストレスの種類の少なくとも一方を判定する、
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、
前記変化量と前記第1メモリセルが前記ストレスを受けた場合の前記第1メモリセルから読み出したデータのエラーに関する値とに基づいて、前記第1メモリセルが受けた前記ストレスの種類及び前記第2メモリセルが受けた前記ストレスの種類の少なくとも一方を判定する、
請求項1または請求項2に記載のメモリシステム。
【請求項4】
前記コントローラは、
前記変化量と前記第1メモリセルのプログラム・イレースサイクル数とに基づいて、前記第1メモリセルのストレスの種類及び前記第2メモリセルのストレスの種類を判定する、
請求項1から請求項3の何れか一項に記載のメモリシステム。
【請求項5】
前記コントローラは、
前記第1メモリセルを含む複数のメモリセルに対してしきい値電圧トラッキングを行うことにより前記読み出ししきい値の変化量を取得する、
請求項1から請求項4の何れか一項に記載のメモリシステム。
【請求項6】
前記メモリは、前記第1メモリセルを含む複数のメモリセルを有する第1ブロック及び前記第2メモリセルを含む複数のメモリセルを有し前記第1ブロックと異なる第2ブロックを備え、
前記コントローラは、
前記第1ブロックにおける読み出ししきい値の変化量に基づいて、前記第2ブロックにおける読み出ししきい値を変更し、
前記第2ブロックが有する前記複数のメモリセルに対するストレスの種類を判定する、
請求項1から請求項5の何れか一項に記載のメモリシステム。
【請求項7】
前記メモリは、複数のメモリセルを含むブロック及び前記複数のメモリセルの何れかに接続されるワード線を備え、
前記コントローラは、
前記第1メモリセルが受けた前記ストレスの種類及び前記第2メモリセルが受けたストレスの種類の少なくとも一方を、前記ワード線ごと、または、前記ブロックごとに判定する、
請求項1から請求項6の何れか一項に記載のメモリシステム。
【請求項8】
前記コントローラは、
前記判定したストレスの種類に応じた補正値を用いて、前記第1メモリセルの読み出ししきい値を補正する、請求項1から請求項7の何れか一項に記載のメモリシステム。
【請求項9】
第1メモリセル及び第2メモリセルを少なくとも含むメモリを備えるメモリシステムの制御方法であって、第1メモリセルにストレスが掛けられた場合の前記第1メモリセルの読み出ししきい値の変化に基づいて、前記第1メモリセルのストレスの種類及び前記第1メモリセルとは異なる第2メモリセルのストレスの種類の少なくとも一方を判定すること、
を含むメモリシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムおよびメモリシステムの制御方法に関する。
【背景技術】
【0002】
複数のメモリセルを有するNANDフラッシュメモリを備えるメモリシステムが知られている。このようなメモリシステムにおいてデータを読み出す動作は、読み出し対象のメモリセルに接続されたワード線に判定電圧を印加することで行われる。このとき、判定電圧の値が適切でないと、データの誤判定が多くなる場合がある。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許第9251909号明細書
【特許文献2】米国特許第2019/0348133号明細書
【特許文献3】米国特許第2018/0268891号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明が解決しようとする課題は、データの読み出しに関する特性の向上を図ることができるメモリシステムおよびメモリシステムの制御方法を提供することである。
【課題を解決するための手段】
【0005】
実施形態のメモリシステムは、メモリと、コントローラと、を持つ。前記メモリは、第1メモリセル及び第2メモリセルを少なくとも含む。前記コントローラは、前記第1メモリセルがストレスを受けていない場合の前記第1メモリセルからのデータの読み出しに用いられる読み出ししきい値に対する前記第1メモリセルが前記ストレスを受けた場合の前記第1メモリセルからのデータの読み出しに用いられる読み出ししきい値の変化量に基づいて、前記ストレスの候補のうち、前記第1メモリセルが受けた前記ストレスの種類及び前記第2メモリセルが受けたストレスの種類の少なくとも一方を判定する。
【図面の簡単な説明】
【0006】
【
図1】第1の実施形態のメモリシステムの構成を示すブロック図。
【
図2】第1の実施形態のメモリチップの構成を示すブロック図。
【
図3】第1の実施形態のメモリセルアレイの構成の一部の例を示す図。
【
図4】第1の実施形態のメモリセルのしきい値分布を示す図。
【
図5】第1の実施形態のしきい値分布に対応するデータを示す図。
【
図6】第1の実施形態のNANDコントローラの構成を示す図。
【
図7】第1の実施形態のメモリシステムが行う処理の概要を示す第1の図。
【
図8】第1の実施形態のデータベースの一例を示す図。
【
図9】第1の実施形態のデータテーブルの一例を示す図。
【
図10】第1の実施形態のメモリシステムが行う処理の概要を示す第2の図。
【
図11】第1の実施形態の分類部の処理フローを示す図。
【
図12】第1の実施形態の補正部の処理フローを示す図。
【
図13】第2の実施形態のNANDコントローラの構成を示す図。
【
図14】第2の実施形態のメモリシステムが行う処理の概要を示す図。
【
図15】第2の実施形態の基準電圧情報の一例を示す図。
【
図16】第2の実施形態のグループとブロックとの関係を示す図。
【
図17】第2の実施形態の共通差分値情報の一例を示す図。
【
図18】第2の実施形態のブロック管理情報の一例を示す図。
【
図19】第2の実施形態のロウ差分値情報の一例を示す図。
【
図20】第2の実施形態のディファレンスブロックに含まれる1つのワード線に印加される判定電圧の取得方法を示す図。
【
図21】第3の実施形態のメモリシステムの構成を示すブロック図。
【
図22】第3の実施形態のブロック差分値の管理方法を概念的に示す図。
【発明を実施するための形態】
【0007】
以下、実施形態のメモリシステムおよびメモリシステムの制御方法を、図面を参照して説明する。以下の説明では、同一または類似の機能を有する構成に同一の符号を付す。そして、それら構成の重複する説明は省略する場合がある。本明細書で「XXに基づく」とは、「少なくともXXに基づく」ことを意味し、XXに加えて別の要素に基づく場合も含む。また「XXに基づく」とは、XXを直接に用いる場合に限定されず、XXに対して演算や加工が行われたものに基づく場合も含む。「XX」は、任意の要素(例えば任意の情報)である。
【0008】
本明細書では「読み出し」を「リード」と称する場合があり、「書き込み」を「ライト」と称する場合がある。また本明細書で「書き込む」、「記憶する」、「保存する」は互いに同じ意味で用いられることがある。このためこれら用語は互いに読み替え可能である。本明細書で「接続」とは、機械的な接続に限定されず、電気的な接続を含む。本明細書で「取得」とは、外部から情報を得る場合に限定されず、自ら算出する場合も含む。本明細書では「ビット線ごと」、「ビット線単位」は、「ロウ(row)ごと」、「ロウ(row)単位」と互いに読み替え可能であり、ワード線ストリングチャンクWLSCごと(単位)、すなわちページごと(単位)で処理が行われる場合に用いられる。本明細書では「判定電圧」は、「(読み出し)しきい値」と互いに読み替え可能である。
【0009】
メモリを備えるメモリシステムでは、プログラムディスターブ(Program Disturb)、リードディスターブ(Read Disturb)、またはデータリテンション(Data Retention)などのストレスの影響で、メモリからデータを読み出すために使用される判定電圧の適正値が変化する。プログラムディスターブとは、データの書き込み動作時に、データの書き込み対象のメモリセルとは異なるメモリセル(以下「非書き込み対象メモリセル」と称する)に電界が生じ、その電界の影響で非書き込み対象メモリセルが保持する電荷の量が変化する(例えば電荷が増える)ことを意味する。リードディスターブとは、データの読み出し動作時に、データの読み出し対象のメモリセルとは異なるメモリセル(以下「非読み出し対象メモリセル」と称する)に電界が生じ、その電界の影響で非読み出し対象メモリセルが保持する電荷の量が変化する(例えば電荷が増える)ことを意味する。データリテンションとは、経時的な影響でメモリセルが保持する電荷の量が変化する(例えば電荷が減る)ことを意味する。すなわち、ストレスは、メモリセルの記憶状態の変化(メモリセルが保持する電荷の量の変化)に相当する。なお、「適正値」とは、最適値に限定されず、読み出しエラーが生じない値であればよい。
【0010】
そこで、実施形態のメモリシステムは、ある物理ブロックにおけるメモリセルの記憶状態の変化(例えば、判定電圧の変化)からストレスを推定する。そして、メモリシステムは、推定したストレスに従って判定電圧を補正する。
【0011】
(第1の実施形態)
<1.メモリシステムの全体構成>
図1は、第1の実施形態のメモリシステム1の構成を示すブロック図である。メモリシステム1は、ホスト装置2と接続可能に構成される。ホスト装置2は、例えば、サーバ装置、パーソナルコンピュータ、またはモバイル型の情報処理装置などである。メモリシステム1は、ホスト装置2の外部記憶装置として機能する。ホスト装置2は、メモリシステム1に対するアクセス要求(リード要求およびライト要求)を発行することができる。
【0012】
メモリシステム1は、メモリコントローラ10と、NANDメモリ20とを備える。メモリコントローラ10とNANDメモリ20とは、複数のチャネルで接続される。メモリコントローラ10は、「コントローラ」の一例である。NANDメモリ20は、「メモリ装置」の一例である。
【0013】
メモリコントローラ10は、ホストインターフェースコントローラ(ホストI/Fコントローラ)11、RAM(Random Access Memory)12、ROM(Read Only Memory)13、CPU(Central Processing Unit)14、ECC(Error Correcting Code)回路15、およびNANDコントローラ16を含む。これらの機能部は、バスで互いに接続されている。例えば、メモリコントローラ10は、これら構成が1つのチップに纏められたSoC(System on a Chip)で構成されている。ただし、これらの機能部の一部は、メモリコントローラ10の外部に設けられてもよい。
【0014】
ホストI/Fコントローラ11は、CPU14による制御の下で、ホスト装置2とメモリシステム1との間の通信インターフェースの制御、およびホスト装置2とRAM12との間のデータ転送の制御を実行する。
【0015】
RAM12は、例えば、SDRAM(Synchronous Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)などであるが、これらに限定されない。RAM12は、ホスト装置2とNANDメモリ20との間のデータ転送のためのバッファとして機能する。また、RAM12は、CPU14にワークエリアを提供する。RAM12には、メモリシステム1の動作時に、ROM13に記憶されているファームウェア(プログラム)がロードされる。
【0016】
本実施形態では、メモリシステム1の動作時に、例えばNANDメモリ20内の何れかのメモリチップ21に記憶されている判定電圧情報100が、RAM12にロードされる。判定電圧情報100は、NANDメモリ20に対する読み出し動作において、後述する各ワード線WLに印加する判定電圧の値の決定に用いられる設定情報である。判定電圧情報100は、基準電圧情報110と、補正量情報120とを含む。判定電圧情報100については、詳しく後述する。
【0017】
本実施形態では、メモリコントローラ10は、判定電圧情報100に基づいて各ワード線WLに印加する判定電圧の値を算出し、算出した値の判定電圧を印加することをNANDメモリ20に指示する。なお、メモリコントローラ10によって判定電圧の値が算出されるのではなく、判定電圧の基準値がNANDメモリ20に記憶されるとともに、受けたストレスの種類に応じて基準値に対する差分値(後述するグループ差分値、ブロック差分値など)がメモリコントローラ10からNANDメモリ20に指示され、NANDメモリ20によって判定電圧の値が算出されて印加される。
【0018】
CPU14は、ハードウェアプロセッサの一例である。CPU14は、例えばRAM12にロードされたファームウェアを実行することで、メモリコントローラ10を制御する。例えば、CPU14は、以下に説明するようにNANDメモリ20に対するデータの書き込み、読み出し、および消去に関する動作を制御する。なお、複数のCPU14が設けられ、動作毎に何れかのCPU14が割り当てられてもよい。
【0019】
ECC回路15は、NANDメモリ20への書き込み対象のデータ(以下、「書き込みデータ」とも称する)に対してエラー訂正のための符号化を行う。ECC回路15は、NANDメモリ20から読み出されたデータ(以下、「読み出しデータ」とも称する)にエラーが含まれる場合、書き込み動作時に付与したエラー訂正符号に基づき、読み出しデータに対してエラー訂正を実行する。
【0020】
NANDコントローラ16は、各チャネル(ch.0,ch.1)を制御する。NANDコントローラ16は、CPU14による制御の下で、RAM12とNANDメモリ20との間のデータ転送の制御を実行する。
【0021】
NANDメモリ20は、複数(ここでは4つ)の、不揮発性半導体メモリとしてのメモリチップ21を有する。本実施形態では、メモリコントローラ10は、2つのチャネル(ch.0,ch.1)を有する。メモリコントローラ10は、1つまたは3つ以上のチャネルを有してもよい。
図1に示す例では、各チャネルには、2つのメモリチップ21が接続されている。なお、各チャネルに、3以上のメモリチップ21が接続されてもよい。
【0022】
各チャネルは、I/O信号線、制御信号線、CE(チップイネーブル)信号線、RY(レディー)/BY(ビジー)信号線を含む。I/O信号線は、データ、アドレス、および各種指示(コマンド)を伝送する。メモリコントローラ10は、I/O信号線を介して、読み出し指示、書き込み指示、および消去指示をメモリチップ21に送信する。制御信号線は、WE(ライトイネーブル)信号線、RE(リードイネーブル)信号線、CLE(コマンドラッチイネーブル)信号線、ALE(アドレスラッチイネーブル)信号線、WP(ライトプロテクト)信号線などを含む。CE信号線は、メモリチップが選択中であることを示す信号を伝送する。RY/BY信号線は、NANDメモリ20が動作中か否かを信号のレベルで示し、例えば、Hレベルで非動作中に対応したレディー状態(RY)を示し、Lレベルで動作中に対応したビジー状態(BY)を示す。
【0023】
<2.メモリチップの構成>
図2は、メモリチップ21の構成を示すブロック図である。メモリチップ21は、例えば、I/O信号処理回路31、制御信号処理回路32、チップ制御回路33、RY/BY生成回路34、コマンドレジスタ35、アドレスレジスタ36、ロウデコーダ37、カラムデコーダ38、データレジスタ39、センスアンプ40、およびメモリセルアレイ41を有する。
【0024】
I/O信号処理回路31は、メモリコントローラ10とメモリチップ21との間でI/O信号を送受信するためのバッファ回路である。I/O信号処理回路31がラッチしたコマンド、アクセス先を指定するアドレス、およびデータは、それぞれ、コマンドレジスタ35、アドレスレジスタ36、およびデータレジスタ39に振り分けられて格納される。
【0025】
アドレスレジスタ36に格納されたアドレスは、チップ番号、ロウアドレス、およびカラムアドレスを含む。チップ番号は、メモリチップ21を区別するための識別情報である。チップ番号、ロウアドレス、およびカラムアドレスは、それぞれ、チップ制御回路33、ロウデコーダ37、およびカラムデコーダ38に読み出される。
【0026】
制御信号処理回路32は、制御信号を受け付け、受け付けた制御信号に基づいて、I/O信号処理回路31が受け付けたI/O信号の格納先のレジスタの振り分けを実行する。また、制御信号処理回路32は、受け付けた制御信号をチップ制御回路33に転送する。
【0027】
チップ制御回路33は、制御信号処理回路32を介して受信する各種制御信号に基づいて状態遷移する回路である。チップ制御回路33は、メモリチップ21の動作を制御する。RY/BY生成回路34は、チップ制御回路33による制御の下でRY/BY信号線の状態をレディー状態(RY)とビジー状態(BY)との間で遷移させる。
【0028】
センスアンプ40は、読み出し動作において、メモリセルアレイ41に含まれるメモリセルMT(
図3参照)の状態をセンスし、センスされた状態に基づいて読み出しデータを生成する。センスアンプ40は、生成した読み出しデータをデータレジスタ39に格納する。データレジスタ39に格納された読み出しデータは、データ線を通じてI/O信号処理回路31に送られ、I/O信号処理回路31からメモリコントローラ10へ転送される。
【0029】
メモリセルアレイ41は、複数のメモリセルMTを有し、データを記憶する。詳しく述べると、メモリセルアレイ41は、複数の物理ブロックBLK(
図3参照)を有する。各物理ブロックBLKは、複数のメモリセルMTを含む。物理ブロックBLKは、データ消去の最小単位である。すなわち、1つの物理ブロックBLKに記憶されている全てのデータは、一括して消去される。以下では、「物理ブロック」を単に「ブロック」と称する。
【0030】
<3.メモリセルアレイの構成>
図3は、メモリセルアレイ41の構成の一部の例を示す図である。メモリセルアレイ41は、例えば、複数のメモリセルMTが立体状に配置されたいわゆる三次元構造のNANDメモリである。メモリセルアレイ41は、複数のブロックBLK(BLK0,BLK1,…)を有する。例えば、メモリセルアレイ41は、数百から数千のブロックBLKを有する。
【0031】
図3に示すように、m(mは自然数)本のビット線BL(BL0~BLm-1)の各々は、各ブロックBLKにおいて、複数(例えば4つ)のストリングSTRと接続されている。各ストリングSTRは、1つの第1選択ゲートトランジスタST(ST0~ST3)、複数のメモリセルMT(MT0~MT15)、および1つの第2選択ゲートトランジスタDT(DT0~DT3)を含む。第1選択ゲートトランジスタST、複数のメモリセルMT、および第2選択ゲートトランジスタDTは、この順で、ソース線CELSRCと1つのビット線BLとの間に直列に接続されている。相違する複数のビット線BL(BL0~BLm-1)とそれぞれ接続された複数(m個)のストリングSTRは、1つのストリングユニットSUを構成する。各ブロックBLKは、複数(例えば4つ)のストリングユニットSU(SU0~SU3)を含む。
【0032】
第1選択ゲートトランジスタSTの制御ゲート電極は、第1選択ゲート線(ソース側選択ゲート線)SGSLに接続されている。第1選択ゲート線SGSLは、第1選択ゲートトランジスタSTの制御ゲート電極を制御する制御信号線である。第1選択ゲートトランジスタSTは、第1選択ゲート線SGSLを通じて印加される電圧に基づき、複数のメモリセルMTとソース線CELSRCとの間を選択的に接続する。第1選択ゲート線SGSLは、ストリングユニットSU(SU0~SU3)毎に独立して接続されてもよい。
【0033】
第2選択ゲートトランジスタDTの制御ゲート電極は、第2選択ゲート線(ドレイン側選択ゲート線)SGDL(SGDL0~SGDL3)に接続されている。第2選択ゲート線SGDLは、第2選択ゲートトランジスタDTの制御ゲート電極を制御する制御信号線である。第2選択ゲートトランジスタDTは、第2選択ゲート線SGDLを通じて印加される電圧に基づき、複数のメモリセルMTとビット線BLとの間を選択的に接続する。
【0034】
各メモリセル(メモリセルトランジスタ)MTは、積層ゲート構造を有したMOSFET(Metal Oxide Semiconductor Field Effect Transistor)で構成される。積層ゲート構造は、例えば、トンネル酸化膜を介在して形成されたフローティングゲートと、フローティングゲート上にゲート絶縁膜を介在して形成された制御ゲート電極とを含む。フローティングゲートに蓄えられる電荷の数に応じてメモリセルMTのしきい値電圧が変化する。メモリセルMTは、書き込みによりフローティングゲートに正の電荷が注入され、消去のためにフローティングゲートから正の電荷が引き抜かれる。各メモリセルMTは、2つ以上のデータ値のうちいずれか1つが書き込まれ得る。各メモリセルMTは、しきい値電圧の違いに応じて1つ以上のデータ値のなかの1つを不揮発に記憶する。
【0035】
各ブロックBLKにおいて、各メモリセルMTの制御ゲート電極は、それぞれに対応するワード線WLに接続されている。例えば、メモリセルMT0~MT15の制御ゲート電極には、ワード線WL0~WL15がそれぞれ接続されている。各ワード線WLは、メモリセルアレイ41において1列(1つのロウ(row))に並ぶ1群のメモリセルMTを選択するための制御信号線であり、それら1列に並ぶ1群のメモリセルMTに共通に接続されている。各メモリセルMTは、ワード線WLとビット線BL(BL0~BLm-1)との交差部に設けられている。読み出しまたは書き込みが行われるメモリセルMTに接続されたワード線WL(以下、「選択ワード線WL」とも称する)に、ある電圧を印加することで、メモリセルMTの読み出しまたは書き込みが可能になる。なお、メモリセルMTの読み出しおよび書き込みについては後ほど説明する。
【0036】
各ブロックBLKにおいて、相違するストリングSTRに含まれる複数のメモリセルMTには、同じアドレスに対応するワード線WLが共通に接続されている。ワード線WLを共有する複数のメモリセルMTの組は、セルユニットCUと称される。1つのセルユニットCUに含まれる複数のメモリセルMTは、一括してデータが書き込まれ、また一括してデータが読み出される。1つのセルユニットCUの記憶空間は、1つまたは複数のページを含む。
【0037】
メモリシステム1は、各メモリセルMTに複数ビットの値を記憶可能に構成され得る。例えば、各メモリセルMTがn(n≧2)ビットの値を記憶可能な場合、ワード線WL当たりの記憶容量は、nページ分のサイズに等しくなる。ここでは一例として、各メモリセルMTが4ビットの値を記憶するクアッドレベルセル(QLC)モードで動作する場合について説明する。
【0038】
クアッドレベルセル(QLC)モードでは、各ワード線WLに4ページ分のデータが記憶され得る。1つのワード線WLによって構成される4つのページのうち、先に書き込みがなされるページをロアーページ、ロアーページの後に書き込みがなされるページをミドルページ、ミドルページの後に書き込みがなされるページをアッパーページと称する。最後にアッパーページの後に書き込みがなされるページをトップページと称する。なお、1つのワード線WLによって構成される複数のページの一部または全てのページに対して一括にプログラム(すなわち書き込み)が実行されるモードがあってもよい。
【0039】
<4.メモリセルのしきい値分布>
図4は、メモリセルMTのしきい値分布を示す図である。
図5は、
図4に示すしきい値分布に対応するデータを示す図である。
図4において、横軸は、メモリセルMTのしきい値電圧を表し、縦軸は、あるビット値(データ値)を示すメモリセルMTの数を表す。各メモリセルMTがクアッドレベルセル(QLC)モードで動作する場合、メモリセルMTのしきい値分布は、
図4に示すように16のロブ(Lob)を含む。
【0040】
クアッドレベルセル(QLC)モードによれば、各メモリセルMTは、トップページに属するデータ“w”、アッパーページに属するデータ“x”と、ミドルページに属するデータ“y”と、ロアーページに属するデータ“z”とで定義される16値データ“wxyz”を記憶可能である。データ“w”、データ“x”、データ“y”、およびデータ“z”の値は、符号“0”または符号“1”である。
【0041】
各メモリセルMTのしきい値電圧は、分布Er、分布A、分布B、分布C、分布D、分布E、分布F、分布G、分布H、分布I、分布J、分布K、分布L、分布M、分布N、分布Oの16のグループのいずれかに属するように制御される。
図5に示すように、各分布と16値データ“wxyz”のデータ値との対応は、予め設定される。例えば、分布Erにはデータ値“1111”が割り当てられる。分布Aにはデータ値“1110”が割り当てられる。分布B~Oには
図5に示す各データ値が割り当てられる。なお、各分布とデータ値との対応は、上記に限定されない。
【0042】
ここで、NANDメモリ20のロウデコーダ37、カラムデコーダ38、データレジスタ39、およびセンスアンプ40について、
図2も用いて補足的に説明する。ロウデコーダ37、カラムデコーダ38、データレジスタ39、およびセンスアンプ40は、メモリセルアレイ41に対する周辺回路の一部である。周辺回路は、チップ制御回路33による制御に基づいてメモリセルアレイ41に対するアクセス(読み出し、書き込み、および消去)を実行する。
【0043】
例えば書き込み動作において、カラムデコーダ38は、カラムアドレスに対応したビット線BLを選択して活性化する。センスアンプ40は、カラムデコーダ38により選択されたビット線BLの電位を0ボルトとする。ロウデコーダ37は、ロウアドレスに対応したワード線WLに、プログラミングパルス(すなわち、1サイクル毎に電圧が徐々に高くなるパルス)を印加する。これにより、選択されたビット線BLと選択されたワード線WLとの交差部に位置するメモリセルMTのフローティングゲートに電荷が注入され、その結果、フローティングゲートのしきい値電圧が上昇する。センスアンプ40は、プログラミングパルスの1サイクル毎に、書き込み対象のメモリセルMTのしきい値電圧がデータレジスタ39に格納されているデータに応じた電圧に到達したか否かを確認する。センスアンプ40による確認結果に応じて、メモリセルMTのしきい値電圧が、書き込むデータ値に応じた電圧に到達するまで、ロウデコーダ37はプログラミングパルスの印加を継続する。
【0044】
一方で、読み出し動作において、センスアンプ40は、ビット線BLに電源電位Vccをプリチャージする。ロウデコーダ37は、選択ワード線WLにデータ値(“1111”、“1110”、“1010”、“1000”、“1001”、“0001”、“0000”、“0010”、“0110”、“0100”、“1100”、“1101”、“0101”、“0111”、“0011”、“1011”)毎の分布を特定するための複数種類の判定電位(しきい値判定電圧、リード電圧)を順次印加する。なお、ロウデコーダ37は、非選択のワード線WLには転送電位を印加し、非選択のワード線WLに属するメモリセルMTを導通状態にしておく。センスアンプ40は、プリチャージにより蓄えられた電荷がどの判定電圧が印加されたときにソース線CELSRCに流出したかを検知することによって対象のメモリセルMTに記憶されているデータ値を判定する。
【0045】
例えば、
図4に示すように、分布Erと分布Aとの間に判定電圧VAが設定される場合、判定電圧VA未満のしきい値電圧を有するメモリセルMTは、分布Erにあると判断される。また、分布Aと分布Bとの間に判定電圧VBが設定される場合、判定電圧VB未満のしきい値電圧を有するメモリセルMTは、分布Aにあると判断される。同様に、
図4に示すように、隣接する2つの分布間に判定電圧が設定され、この判定電圧未満のしきい値電圧を有するメモリセルMTは、2つの分布のうちしきい値電圧が低い分布にあると判断される。以下では、判定電圧VA~VOを区別しない場合は、単に「判定電圧V」と称する。
【0046】
なお、分布とデータ値との対応は、上述の
図4に示すものに限定されない。それぞれのデータ値が異なっていれば、しきい値電圧の低い順にどのようなデータ値の順でそれらのデータ値が分布していてもよい。例えば、データ値“1011”、“0011”、“0111”、“0101”、“1101”、“1100”、“0100”、“0110”、“0010”、“0000”、“0001”、“1001”、“1000”、“1010”、“1110”、“1111”がしきい値電圧の低い順に分布する。そして、ロウデコーダ37は、選択ワード線WLにデータ値(“1011”、“0011”、“0111”、“0101”、“1101”、“1100”、“0100”、“0110”、“0010”、“0000”、“0001”、“1001”、“1000”、“1010”、“1110”、“1111”)毎の分布を特定するための複数種類の判定電位(しきい値判定電圧、リード電圧)を順次印加してもよい。
【0047】
<5.判定電圧の管理>
次に、判定電圧Vの管理について説明する。判定電圧Vの適正値は、ブロックBLK毎に異なり、また同じブロックBLK内でもワード線WL毎によって異なる。さらに、判定電圧Vの適正値は、プログラムディスターブ、リードディスターブ、またはデータリテンションなどのストレスの影響で変化する。このため、最新の適正値を反映した判定電圧Vの設定情報は、ワード線WL毎に個別に保存される。
【0048】
本実施形態では、複数のワード線WLごとに、後述する処理によってストレスを推定し、推定したストレスに対応する判定電圧Vの設定情報を圧縮することで、判定電圧Vの設定情報を比較的小さな記憶容量で記憶することを可能としている。
【0049】
例えば、本実施形態では、判定電圧Vの設定情報の圧縮は、MMCVQ(Modified Median-Cut Vector Quantization)アルゴリズムを用いて実現される(米国特許第9431118号明細書、米国特許第8879325号明細書参照)。例えば、判定電圧Vの設定情報の圧縮は、データベースT内のすべての判定電圧Vを含む多次元空間(nD)の第1パーティションを実行する段階から開始される。判定電圧Vのそれぞれは、多次元空間における点として表される。この段階は、ツリーV1の最初のノードをV1={Tk;k=1:P}として定義することを含み、決定点基準(基準I)に従ってデータベースTの決定領域に対して決定点を計算することを含む。また、この段階には、インデックスIが1にリセットされることも含まれ得る。次に、1からM-1までのインデックスiに対して複数の反復を実行する段階が続く。複数の反復を実行する段階には、インデックスiがMに等しいかどうかを尋ねる段階と、インデックスiを1増やす段階とが含まれる。複数の反復を実行する段階では、まず、いくつかの決定領域基準(基準II)に従って、切断のために決定領域を選択する。この決定領域はVjと表される。なお、jは1以上I以下の値をとる。次に、決定領域Vjを次元qで切断する。qは1以上15以下の値をとる。これは、第q次元における決定領域クラスタ点の分割点(基準IV)で、最良の分割次元(基準III)をもたらす。次に、切断により得られた2つの新たな領域(多次元空間のサブセット)をU1及びU2として示す。ここで、Vi+1=U1、Vi+2=U2である。次に、決定点基準Iに続く決定点を新しい決定領域について計算する。そして、次の段階としては、決定領域のリストからVjを除去すること、および、すべての決定領域のインデックスをj+1からiに減少させることが含まれ得る。基準Iは、少なくとも1つの平均外、中央値、特定の次元の平均または中央値と長辺の端の間のある点、またはその他の定義にすることができる。基準IIは、決定領域内のポイント数、決定領域のボリューム、決定領域内のポイントのエラーの総数、最大値または平均数、決定領域内のポイントに対するエラーの総数の増加、決定領域内のポイントのビットあたりの最大エラー数の増加、または上記の任意の組み合わせの少なくとも1つである。基準は、反復インデックスによっても異なる。基準IIIは、基準IIに対して定義されたオプションのうち少なくとも1つである。アルゴリズムの出力は、M個の決定レベル(それぞれの決定領域内のクラスタの中央値)の配列と2M-1ノードのツリー構造である。MMCVQアルゴリズムでは、各段階でノードVjが2つの新しいノードViおよびVi+1にカットされる。この処理は、2M-1ノードの完全なバイナリツリーで終了する。M=2<N>を選択すると、ツリー内のノードの数は2<N+1>-1となる。ツリーは完全な(バランスのとれた)ツリーではないため、その深さはN+1によって制限されない。しかしながら、基準の適切な選択によって、深さが2×(N+1)より大きくないことが保証され得る。なお、ツリーは、2<N+1>-1ではなく、2<N>-1ノードの完全なバイナリツリーにさらに圧縮されてもよい。つまり、MMCVQアルゴリズムを用いて実現される判定電圧Vの設定情報の圧縮は、フラッシュメモリデバイスのあるロウ(row)に対応する記憶領域からデータを読み出す場合に用いる複数の多次元しきい値のストレスによるシフト値を圧縮するものである。ワード線ストリングチャンクWLSCは、複数のロウに対応するビット線が接続されてい記憶領域である。なお、MMCVQで得たシフト値のパターンを記録したテーブルをCodebookと呼ぶ。
【0050】
<6.分類部の処理>
<6.1 分類部の学習>
第1の実施形態によるメモリシステム1は、ストレスを受けた後の判定電圧Vの分布に基づいて、ストレスがリードディスターブであるか、データリテンションであるか、または、どちらでもないかをワード線単位で判定し、判定したストレスに従って判定電圧Vを補正する。なお、受けたストレスがリードディスターブとデータリテンションのどちらでもないというのは、リードディスターブ及びデータリテンションを含み得る複数のストレスを受けている、または、リードディスターブとデータリテンションのどちらでもない1つまたは複数のストレスを受けていることであり、以下、「ノーマル」ということがある。
図6は、NANDコントローラ16の機能的な構成を示す図である。第1の実施形態によるNANDコントローラ16は、
図6に示すように、テーブル生成部16a、分類部16bと、補正部16cと、を備える。分類部16bは、演算部16b1を備える。テーブル生成部16a、分類部16b、および補正部16cは、NANDコントローラ16がファームウェアなどのプログラムを実行することによって実現される。テーブル生成部16aは、データベース及びデータテーブルを生成する。補正部16cは、ストレスを受けた後の判定電圧Vを補正する。なお、データベースを用いて学習を行うフェーズをオフライン処理、実際のNANDメモリ20の読み出しに学習モデルを適用するフェーズをオンライン処理と呼ぶ。ここでは、テーブル生成部16a及び分類部16bの処理について説明し、補正部16cが行う処理については後述する。
【0051】
分類部16bは、ストレスの種別を判定する。すなわち、分類部16bは、ストレスがリードディスターブであるか、データリテンションであるか、または、どちらでもないかをワード線単位で判定する。分類部16bは、例えば、ロジスティック回帰やSVM(Support Vector Machine、サポートベクターマシン)などのアルゴリズムに基づいてストレスのクラス分けを行う。
【0052】
例えば、分類部16bは、SVMのモデルを用いる場合、教師あり学習によって生成される。具体的には、教師データとして、判定電圧Vのシフト値を入力xとし、その入力xに対してメモリシステムが実際に受けた過去のストレスをラベル(リードディスターブ、データリテンション、どちらでもないの3つ)付きの出力yとして、入力xと出力yとの組み合わせを複数用意する。そして、各入力xをモデルに入力した場合に、その入力xに対応する出力yが出力されるようにモデルにおけるパラメータを決定する。このようにパラメータが決定されたモデルが、分類部16bの学習済みモデルである。
【0053】
また、例えば、分類部16bによるクラス分けが、ロジスティック回帰のアルゴリズムを用いて実現される場合、ストレスを分類するための識別関数を次の式(1)のように表すことができる。分類部16bの演算部16b1は、式(1)を演算する。
【0054】
【0055】
pは、出力があるストレスであり得る確率である。xは入力である。α及びβはパラメータである。iはワード線ストリングチャンクWLSCの番号である。なお、iは、1に固定する、すなわち、各ワード線ストリングチャンクWLSCを同一のものとして扱ってもよい。また、xは、各ワード線ストリングチャンクWLSCの番号iごとに、ワード線ストリングチャンクWLSC間の距離を入力してもよい。ワード線ストリングチャンクWLSC間の距離とは、注目するワード線ストリングチャンクWLSCについて物理的に最も近いワード線ストリングチャンクWLSCとの距離のことである。例えば、ワード線ストリングチャンクWLSC0については、ワード線ストリングチャンクWLSC0とワード線ストリングチャンクWLSC100、および、ワード線ストリングチャンクWLSC0とワード線ストリングチャンクWLSC1のうち、物理的に近い方の距離となる。この場合、ワード線ストリングチャンクWLSCからNANDコントローラ16までの距離が考慮されるため、この距離を考慮しない場合に比べて、分類部16bが出力するストレスの判定精度が向上する。
【0056】
ここで、NANDメモリ20の各メモリセルMTがクアッドレベルセル(QLC)モードで動作する場合を例にして、分類部16bの教師あり学習について
図7~
図9を参照して説明する。
図7は、学習済みの分類部16bを生成する処理の概要を示す図である。まず、複数のさまざまなストレスと、ロウ(row)と、判定電圧Vとの組み合わせがデータベースDB1に記録される。
図8は、データベースDB1の一例を示す図である。データベースDB1は、ワード線単位で、複数のNANDメモリ20に対して実際に受けたストレス(すなわち、データリテンション、リードディスターブ)、そのストレスを受けた後の判定電圧V、及び、ストレスを一切受けていない初期の判定電圧Vを少なくとも含む。
図8において、“chip”は、メモリを構成する各メモリチップ21に付与された番号を示す。“Block”は、各“chip”に含まれるブロックに付与された番号を示す。“WLSC”は、ワード線ストリングチャンクを示す。“DR”は、データリテンションを示す。“P/E”は、プログラム・イレースサイクル数を示す。“RD”は、リードディスターブを示す。“Initial Vth”は、初期の読み出ししきい値を示す。“Actual Vth”は、そのデータを読み取った時点における読み出ししきい値を示す。“Level”は、読み出ししきい値に対応して付与されているレベルを示す。ストレスを受けた後の判定電圧V(すなわち、ストレスを受ける前からストレスを受けた後への読み出ししきい値のシフト値に等価)は、QT(Quick Training)やFull Level Trackingなどの各種トラッキング技術を用いて取得したシフト値から推定すればよい。なお、QTは、サンプルリードで取得した電荷量と、予め機械学習で生成したパラメータとの行列演算によって、読み出ししきい値を高精度に推定する技術である(米国特許第9069659号明細書を参照)。また、Full Level Trackingは、初期設定の読み出し電圧から少しずつ電圧をずらしたサンプルリードを多数行い、取得した電荷量の情報から電荷分布を推定する技術である。
【0057】
具体的には、テーブル生成部16aは、NANDメモリ20があるストレスを受ける度に、受けたストレスの種類とそのストレスを受けた後の判定電圧Vとをヒストリーテーブル(History Table)としてデータベースDB1に記録する。すなわち、テーブル生成部16aは、データベースDB1を生成する。テーブル生成部16aは、データベースDB1におけるロウ(row)ごと(
図8においてWLSCと記載)の判定電圧Vの代表値(例えば、平均値)を用いてロウ(row)ごとの判定電圧Vの初期値からの差分を補正するための補正用パラメータを示すデータテーブルTBL1を生成する。
図9は、データテーブルTBL1の一例を示す図である。
図9では、ロウ(row)の値はワード線ストリングチャンクWLSCの値として示されている。すなわち
図9において、0~383のロウ(row)が、0~383のワード線ストリングチャンクWLSCとして示されている。データテーブルTBL1では、WLSCそれぞれについて、判定電圧VA~VOそれぞれの代表値(例えば、平均値)を基準とした補正値が示されている。すなわち、
図9は、判定電圧Vの基準値(初期値)からの差分を示している。
【0058】
また、テーブル生成部16aは、データベースDB1からデータリテンション用のデータベースDB2及びリードディスターブ用のデータベースDB3を生成する。データリテンション用とは、データリテンションのストレスを受けたときのデータのみを含むということである。リードディスターブ用とは、リードディスターブのストレスを受けたときのデータのみを含むということである。例えば、テーブル生成部16aは、データベースDB1をフィルタリングして、データベースDB2と、データベースDB3とを生成する。すなわち、テーブル生成部16aは、データリテンションに関連するデータと、リードディスターブに関連するデータとに分けることによって、データベースDB2と、データベースDB3とを生成する。そして、テーブル生成部16aは、データベースDB1からデータテーブルTBL1を生成したのと同様の方法で、データベースDB2からデータリテンション用のデータテーブルTBL2を生成する。また、テーブル生成部16aは、データベースDB3からリードディスターブ用のデータテーブルTBL3を生成する。
【0059】
オフライン処理において、分類部16bは、さまざまなストレスに対して蓄積されたデータベースDB1から、実際に受けたストレスと、ストレスを受ける前の判定電圧Vからそのストレスを受けた後の判定電圧Vへのシフト値とをラベル付きデータとして取得し、そのシフト値を入力データ、実際に受けたストレスを出力データとして取得する。分類部16bは、受けたシフト値を、前述した式(1)を用いた演算部16b1に入力する。そして、分類部16bは、入力データ(シフト値)に対応する出力データ(ストレス)となるように、式(1)におけるパラメータα及びβの値を決定して演算部16b1に保存する。このように、実際に受けたストレスと、そのストレスに対応するシフト値とに基づいて、パラメータα及びβを決定することにより、学習済みモデル、すなわち学習済みの分類部16bが実現される。
【0060】
なお、教師あり学習のモデルは、ロジスティック回帰に限定されない。例えば、SVMのアルゴリズムを用いる場合、識別関数は次の式(2)のように表すことができる。
【0061】
【0062】
ロジスティック回帰のアルゴリズムを用いる場合と同様に、式(2)において、xは入力である。α及びβはパラメータである。なお、SVMのアルゴリズムを用いた分類部16bとロジスティック回帰のアルゴリズムを用いた分類部16bとの違いは、識別関数のみであり、パラメータの生成ルーチンやストレスを分類するための学習済みの分類部16bの実現方法(学習済みモデルの生成方法)は同様である。なお、学習済みモデル、すなわち、学習済みの分類部16bは、メモリコントローラ10に実装可能なものであれば、どのようなものであってもよい。
【0063】
<6.2 学習済みの分類部によるストレスの分類>
次に、学習済みの分類部16bによるストレスの分類について、
図10及び
図11を参照して説明する。
図10は、学習済みの分類部16bを用いてストレスを分類し、分類結果に基づいて読み出ししきい値を補正する処理の概要を示す図である。
図11は、ストレスの分類を行う処理フローを示す図である。ここで説明する処理は、学習済みの分類部16bによるオンライン処理である。
【0064】
オンライン処理において、分類部16bに、判定電圧Vのシフト値(すなわち、ストレスを受ける前の初期の読み出ししきい値からストレスを受けた後の読み出ししきい値へのシフト値)xが入力される。例えば、各メモリセルMTがクアッドレベルセル(QLC)モードで動作する場合、式(1)におけるkは15となる。そして、分類部16bに、入力データとして、x
1,i~x
15,iが入力される。すなわち、
図11に示すように、分類部16bは、入力xを受ける(S1)。分類部16bは、受けた入力に応じてストレスを分類する(S2)。例えば、各メモリセルMTがクアッドレベルセル(QLC)モードで動作する場合、分類部16bは、入力されたx
1,i~x
15,iに応じて、出力データとして、リードディスターブ、データリテンション、または、ノーマルを出力する。これらに対応する処理は、
図10において、次のように示される。
図10において、演算部16b1である“Stress Classifier”が“Input Data”を受けることにより上記S1の処理が行われる。そして、その“Stress Classifier”が上述のS2の処理を行い、出力データとして、リードディスターブ、データリテンション、または、ノーマルを出力する。
【0065】
<7.補正部の処理>
次に、補正部16cによる読み出ししきい値の補正について、
図10及び
図12を参照して説明する。
図12は、分類部16bによるストレスの分類結果に基づいて読み出ししきい値を補正する処理フローを示す図である。
【0066】
オンライン処理において、補正部16cは、分類部16bによるストレスの分類結果を判定し(S11)、その判定に基づいて、読み出ししきい値を補正する。例えば、分類部16bがストレスの分類結果としてノーマルを出力した場合、補正部16cは、分類結果がノーマルと判定し(S11において“ノーマル”)、ノーマルに対応するデータテーブルTBL1を選択し、選択したデータテーブルTBL1が示すシフト値を用いて読み出ししきい値を補正する(S12)。また、分類部16bがストレスの分類結果としてデータリテンションを出力した場合、補正部16cは、分類結果がデータリテンションと判定し(S11において“DR”)、データリテンションに対応するデータテーブルTBL2を選択し、選択したデータテーブルTBL2が示すシフト値を用いて読み出ししきい値を補正する(S13)。また、分類部16bがストレスの分類結果としてリードディスターブを出力した場合、補正部16cは、分類結果がリードディスターブと判定し(S11において“RD”)、リードディスターブに対応するデータテーブルTBL3を選択し、選択したデータテーブルTBL3が示すシフト値を用いて読み出ししきい値を補正する(S14)。そして、上述したMMCVQアルゴリズムを用いて実現される判定電圧Vの設定情報の圧縮が行われる。これらに対応する処理は、
図10において、次のように示される。
図10において、“Stress Classifier”により上記S11の処理が行われる。そして、分類結果がノーマルと判定された場合、データテーブルTBL1である“Normal TABLE”で示されるシフト値を用いて読み出ししきい値が補正される。また、分類結果がデータリテンションと判定された場合、データテーブルTBL2である“TABLE for DR”で示されるシフト値を用いて読み出ししきい値が補正される。また、分類結果がリードディスターブと判定された場合、データテーブルTBL3である“TABLE for RD”で示されるシフト値を用いて読み出ししきい値が補正される。そして、
図10に示す“Vth Shift Compress”17により上述した判定電圧Vの設定情報の圧縮が行われる。
【0067】
<8.利点>
以上、第1の実施形態によるメモリシステム1について説明した。メモリシステム1において、分類部16bは、ストレスを受ける前の初期の読み出ししきい値からストレスを受けた後の読み出ししきい値へのシフト値に基づいて決定されたパラメータを有する学習済みモデルを備える。また分類部16bは、この学習済みモデルに入力されるシフト値に基づいて、ストレスを分類する。補正部16cは、分類部16bによる分類結果に応じた補正値を用いて、ストレスを受けた後の読み出ししきい値を補正する。このように構成されたメモリシステム1は、ストレスの種別を分類した上で、そのストレスに応じた補正値で読み出ししきい値を補正できるため、ストレスの種別を分類しない、例えば、ノーマルのデータテーブルTBL1のみを用いてストレスを受けた後の読み出ししきい値を補正する場合に比べてより高精度に読み出ししきい値を補正することができる。
【0068】
(第1の実施形態の第1変形例)
上述の第1の実施形態によるメモリシステム1では、分類部16bは、実際に受けたストレスをラベル付きの出力データとし、ストレスを受ける前の判定電圧Vからそのストレスを受けた後の判定電圧Vへのシフト値をラベル付きの入力データとして教師あり学習し、パラメータα及びβを決定することによって、学習済みの分類部として実現されるものである。第1の実施形態の第1変形例では、分類部16bは、実際に受けたストレスをラベル付きの出力データとし、ストレスを受ける前の判定電圧Vからそのストレスを受けた後の判定電圧Vへのシフト値に加え、例えば、プログラム・イレースサイクル数(以下、「P/Eサイクル数」とも称する)に応じたしきい値をラベル付きの入力データとして教師あり学習し、パラメータα及びβを決定することによって、学習済みの分類部として実現してもよい。P/Eサイクル数とは、データを書き込むときに、記憶された既存のデータを消去する処理を行った回数である。この場合、P/Eサイクル数を用いずに教師あり学習した場合に比べて、しきい値に影響を与える要素の一つであるP/Eサイクル数も考慮されるため、分類部16bが出力するストレスがリードディスターブであるか、データリテンションであるか、または、どちらでもないかの判定精度が向上する。
【0069】
(第1の実施形態の第2変形例)
第1の実施形態の第2変形例では、分類部16bは、実際に受けたストレスをラベル付きの出力データとし、ストレスを受ける前の判定電圧Vからそのストレスを受けた後の判定電圧Vへのシフト値に加え、例えば、読み出したデータのエラーの割合を示すビットエラー率(Bit Error Rate)をラベル付きの入力データとして教師あり学習し、パラメータα及びβを決定することによって、学習済みの分類部として実現してもよい。この場合、識別関数として、例えば次の式(3)を用いるものであってよい。
【0070】
【0071】
ここで、wは重みである。この場合、ビットエラー率を用いずに教師あり学習した場合に比べて、ビットエラー率が重みwとして考慮されるため、分類部16bが出力するストレスがリードディスターブであるか、データリテンションであるか、または、どちらでもないかの判定精度が向上する。なお、ビットエラー率の代わりにエラービット数を用いてもよい。
【0072】
(第2の実施形態)
第1の実施形態によるメモリシステム1は、ストレスがリードディスターブであるか、データリテンションであるか、または、どちらでもないかを判定するシステムである。それに対して、第2の実施形態によるメモリシステム1aは、第1の実施形態によるメモリシステム1と同様に、ビットエラー率を用いてデータリテンションのストレスを受けた時間を判定するものであり、判定したストレスの強度も同時に推定するシステムである。なお、ストレスの強度とは、どの程度の強さのストレスを受けたかを数値として表すものである。ストレスの強度は、ストレスを受けた経過時間が長ければ長いほど数値が大きくなり、強いストレスを受けたことを示す。メモリシステム1aは、NANDコントローラ161を備える。
図13は、第2の実施形態のメモリシステム1aに備えられるNANDコントローラ161の機能的な構成を示す図である。NANDコントローラ161は、
図13に示すように、テーブル生成部16a1、分類部16b2、補正部16cを備える。分類部16b2は、演算部16b1を備える。
【0073】
<9.分類部の学習>
図14は、学習済みの分類部16b2を生成する場合にメモリシステム1aが行う処理の概要を示す図である。まず、複数のさまざまなストレスと、ロウ(row)と、判定電圧VA~VOのシフト値との組み合わせが、経過時間と共にデータベースDB1に記録される。なお、
図14に示されるデータテーブルTBLは、
図8に示すデータベースDB1の一部のデータから生成される。
【0074】
データベースDB1およびデータテーブルTBLは、テーブル生成部16a1によって生成される。テーブル生成部16a1は、第1の実施形態によるテーブル生成部16aと同様に、データベースDB1を生成する。そして、テーブル生成部16a1は、データベースDB1におけるデータリテンションについて、初期の読み出ししきい値とその後にデータを読み取った時点における読み出ししきい値との差分をとることにりデータテーブルTBLを生成する。
以降、テーブル生成部16a1は、第1の実施形態によるテーブル生成部16aと同様に、データベースDB1におけるロウ(row)ごとの判定電圧Vの代表値(例えば、平均値)を用いてロウ(row)ごとの判定電圧Vの初期値からの差分を補正するための補正用パラメータを示すデータテーブルTBL1を生成する。また、テーブル生成部16a1は、第1の実施形態によるテーブル生成部16aと同様に、データベースDB1からデータリテンション用のデータベースDB2及びリードディスターブ用のデータベースDB3を生成する。
【0075】
オフライン処理において、分類部16b2は、さまざまなストレスに対して蓄積されたデータベースDB1から、実際に受けたストレスと、ストレスを受ける前の判定電圧Vからそのストレスを受けた後の判定電圧VA~VOへのシフト値とをラベル付きデータとして取得し、そのシフト値を入力データ、実際にデータリテンションのストレスを受けた経過時間を出力データとして取得する。分類部16b2は、学習時において、受けたシフト値を、前述した式(1)を用いて演算部16b1に入力する。そして、分類部16b2は、入力データ(シフト値)に対応する出力データ(データリテンションの時間)が出力となるように、式(1)におけるパラメータα及びβの値を決定して演算部16b1に保存する。このように、実際にデータリテンションのストレスを受けた時間と、その時間に対応するシフト値とをさらに考慮して、パラメータα及びβを決定することにより、学習済みモデル、すなわち学習済みの分類部16b2が実現される。なお、オンライン処理において、分類部16b2は、第1の実施形態による分類部16bと同様に、ストレスの分類を行っている。また、補正部16cは、第1の実施形態による補正部16cと同様に、分類部16b2による分類結果に応じた補正値を用いて、ストレスを受けた後の読み出ししきい値を補正している。この場合、データリテンションの時間と判定電圧VA~VOへのシフト値とを用いて教師あり学習を行う。この学習済みモデルにより、オンライン処理において、分類部16b2は、入力データであるシフト値から、ストレスがリードディスターブであるか、データリテンションであるか、または、どちらでもないかを判定することができ、さらに、データリテンションのストレスに対してそのストレスを受けた経過時間、すなわちストレスの強度を判定することができる。
【0076】
<10.利点>
以上、第2の実施形態によるメモリシステム1aについて説明した。メモリシステム1aにおいて、分類部16b2は、データリテンションのストレスを受けた時間と判定電圧VA~VOへのシフト値とを用いて教師あり学習し、学習済みの分類部として実現される。これにより、分類部16b2は、ストレスがリードディスターブであるか、データリテンションであるか、または、どちらでもないかを判定することができ、さらに、データリテンションのストレスに対してそのストレスを受けた時間を判定することができる。また、一般的には、データリテンションのストレスを受けた時間の判定にはカウンタなどによる時間計測の機能が必要になる。しかしながら、この分類部16b2によりデータリテンションを判定する場合にはそのカウンタが不要である。
【0077】
(第2の実施形態の変形例)
上述の第2の実施形態によるメモリシステム1aでは、分類部16b2は、第1の実施形態によるメモリシステム1と同様に、ビットエラー率を用いてデータリテンションのストレスを受けた時間を判定するものである。第2の実施形態の変形例では、分類部16bは、ビットエラー率を用いて複数のストレスの組み合わせを判定してもよい。リードディスターブのストレスを受けた場合の読み出ししきい値のシフト値の分布は、データリテンションのストレスを受けた場合の読み出ししきい値のシフト値の分布に比べてプラス側に高くなることがある。そのため、リードディスターブのストレスとデータリテンションのストレスの両方をメモリが受けた場合、読み出ししきい値がどちらのストレスにも対応できずビットエラー率が高くなることが考えられる。そこで、この考えに基づいて、分類部16bは、ストレスの判定にビットエラー率を使用し、ビットエラー率が高い場合に複数のストレスを受けている可能性が高く、またビットエラー率が低い場合には1つのストレスしか受けていない可能性が高いと判定する。この場合、複数のストレスを受けているか、1つのストレスしか受けていないかが考慮されるため、分類部16bが出力するストレスがリードディスターブであるか、データリテンションであるか、または、どちらでもないかの判定精度が向上する。
【0078】
(第2の実施形態の第2変形例)
第2の実施形態の第2変形例では、分類部16bは、P/Eサイクル数に関するしきい値をラベル付きの入力データとして教師あり学習し、パラメータを決定することによって、学習済みの分類部として実現してもよい。この場合、P/Eサイクル数を用いずに教師あり学習した場合に比べて、ストレスとしてP/Eサイクル数も考慮されるため、分類部16bが出力するストレスがリードディスターブであるか、データリテンションであるか、または、どちらでもないかの判定精度、およびストレスを受けた時間の判定精度が向上する。
【0079】
(第3の実施形態)
第1の実施形態及び第2の実施形態によるメモリシステム1bは、ワード線ごとにストレスの種類を判定し、判定結果に基づいて判定電圧Vを補正するものである。それに対して、第3の実施形態によるメモリシステム1bは、ブロックごとにストレスの種類を判定し、判定結果に基づいて判定電圧Vを補正するものである。なお、第3の実施形態において想定するストレスは、データリテンション、リードディスターブ、温度較差CT(すなわち、リード時の温度とライト時の温度の差)のようなある纏まった記憶領域が受けるストレスである。
【0080】
<11.リファレンスブロックの判定電圧の管理>
第3の実施形態におけるリファレンスブロックRBの判定電圧Vの管理方法について説明する。リファレンスブロックRBは、後述する各グループGにおいて、判定電圧Vの管理の基準となるブロックである。リファレンスブロックRBの判定電圧Vは、例えば、判定電圧Vのデフォルトの基準値VAD~VODに対する差分値を用いて管理される。
【0081】
図15は、判定電圧情報100(
図1参照)に含まれる基準電圧情報110の一例を示す図である。
図15において、VAD~VODの値は、それぞれ、判定電圧VA~VOの基準値(例えば初期設定値)を示す。各値は、判定電圧VA~VOの基準値を示す値であり、相対的なレベルで示されたものである。基準電圧情報110は、例えば、複数のメモリチップ21に対して共通に(同じ値が)設定されている。なお、基準電圧情報110は、メモリチップ21毎に個別に設けられてもよく、プレーンP毎に個別に設けられてもよく、グループG毎に個別に設けられてもよい。グループGは、メモリセルアレイ41における1つのプレーンPに、複数設定される。プレーンPは、例えば、メモリセルアレイ41において1つのチャネルを通じて連続してアクセス可能な領域である。
図16は、グループGとブロックBLKとの関係を示す図である。各グループGは、
図16に示すように、複数のブロックBLKを含む。各グループGに含まれる複数のブロックBLKは、1つのリファレンスブロック(Reference Block)RBと、残りの複数のディファレンスブロック(Difference Block)DBとに分けられる。そして、各ディファレンスブロックDBの各判定電圧V(VA~VO)は、リファレンスブロックRBの各判定電圧V(VA~VO)に紐付けられて管理および更新される。
【0082】
図17は、判定電圧情報100(
図1参照)の補正量情報120に含まれる共通差分値情報121の一例を示す図である。共通差分値情報121は、ある基準値(例えば初期値)に対する判定電圧Vの差分値(補正量、シフト量)ΔVの候補を表す。例えば、共通差分値情報121は、判定電圧Vのデフォルトの基準値VAD~VOD(または後述するようにリファレンスブロックRBの判定電圧V)に対する判定電圧Vの差分値ΔVの候補を表す。
図17におけるA~Oの値は、それぞれ、判定電圧VA~VOに対応する差分値を示す。これら差分値は、例えば、判定電圧VA~VOの基準値VAD~VOD(または別の値)に対して加算されることで、判定電圧VA~VOの値を補正することに用いられる。共通差分値情報121に含まれる差分値は、適用対象のブロックBLKに含まれる全てのワード線WLに対して共通に用いられる。これら差分値の各々を示すビット数は、例えば、基準電圧情報110に含まれる判定電圧Vの基準値VAD~VODを示すビット数よりも少ない。
【0083】
ここで、本実施形態の共通差分値情報121は、必ずしも、判定電圧VA~VOを判定電圧VA~VOの最適値と一致させることができる差分値ではない。共通差分値情報121は、判定電圧VA~VOに生じる主なズレのパターン(以下では、「シフトパターン」とも称する)をモデル化したものである。本実施形態では、判定電圧VA~VOに生じる主なシフトパターンとして、n個(nは自然数)のシフトパターンが事前に求められて候補として登録されている。これらシフトパターンは、例えば種々の数学的手法、機械学習、または実験/シミュレーションによって事前に求めることができる。例えば、これらシフトパターンは、複数のブロックBLKに対してデータの読み出し動作を事前に行い、そのときの判定電圧Vとビットエラー率とを記録したデータベースにMMCVQアルゴリズムを適用することで得ることができる。
【0084】
以下では説明の便宜上、共通差分値情報121を「コードブック(Codebook )121」と称する。コードブック121は、判定電圧VA~VOに対応した差分値の組み合わせ(シフトパターン)と、コードブックインデックス(Codebook index)と呼ばれる識別番号とが対応付けられて登録されたテーブルである。メモリコントローラ10は、コードブックインデックスを指定することで、判定電圧VA~VOに対応した差分値の組み合わせを取得することができる。本実施形態では、コードブック121に登録されているシフトパターンは、65536個である。このため、メモリコントローラ10は、16ビットのデータで判定電圧VA~VOに対応した差分値の種々の組み合わせを取得することができる。
【0085】
第3の実施形態では、コードブック121は、例えば、複数のメモリチップ21に対して共通に設けられている。なお、コードブック121は、メモリチップ21毎に個別に設けられてもよく、プレーンP毎に個別に設けられてもよい。なお、どのリファレンスブロックRB(すなわちどのブロックBLK)が、どのコードブックインデックスと対応付けられているかは、後述するブロック管理情報123(
図18参照)に登録されて管理される。
【0086】
図18は、判定電圧情報100(
図1参照)の補正量情報120に含まれるブロック管理情報123の一例を示す図である。ブロック管理情報123では、各ブロックBLK(リファレンスブロックRBおよびディファレンスブロックDB)が、自ブロックBLKが属するグループGのグループインデックス(Group Index)と対応付けられて登録されている。このため、メモリコントローラ10は、ブロック管理情報123を参照することで、対象のディファレンスブロックDBと同じグループGに含まれるリファレンスブロックRBを特定することができる。
【0087】
図19は、判定電圧情報100(
図1参照)の補正量情報120に含まれるロウ差分値情報122の一例を示す図である。ロウ差分値情報122は、各ブロックBLKにおける複数のワード線WLそれぞれに関する判定電圧Vの差分値(補正量、シフト量)ΔVを表す。
図19におけるA~Oの値は、それぞれ、判定電圧VA~VOに対応する差分値を示す。これら差分値は、例えば、コードブック121を用いて取得された各ブロックBLKの判定電圧VA~VOに対して加算されることで、各ワード線WLに関して判定電圧VA~VOの値を補正することに用いられる。
【0088】
ここで、ロウ差分値情報122は、各ブロックBLK内でワード線WL毎に生じる判定電圧VA~VOの主なズレのパターン(以下では区別のため「オフセットパターン」とも称する)をモデル化したものである。第3の実施形態において、このオフセットパターンをモデル化したものは、第1または第2の実施形態による分類部16bである。例えば、テーブル生成部16aは、第1の実施形態においてワード線について説明した方法と同様の方法でブロックについてのデータベースDB1~DB3及びデータテーブルTBL1~TBL3を生成する。また、第1または第2の実施形態においてワード線ごとに分類部16bを教師あり学習することに代えて、第3の実施形態による分類部16bは、ブロックごとに教師あり学習を行う。オフセットパターンは、このブロックごとに教師あり学習を行った学習済みの分類部16bに判定電圧Vを入力することにより、ストレスの種類を判定する。そして、補正部16cは、分類部16bの判定結果に応じたデータテーブルTBL2またはデータテーブルTBL3を用いてオフセットパターンを補正すればよい。
【0089】
第3の実施形態では、ロウ差分値情報122は、判定電圧VA~VOに対応した補正量(補正値)の組み合わせ(オフセットパターン)と、ロウインデックス(Row index)と呼ばれる識別番号とが対応付けられて登録されたテーブルである。メモリコントローラ10は、対象となるワード線WLに対応するロウインデックスを指定することで、判定電圧VA~VOに対応した差分値の組み合わせを取得することができる。本実施形態では、ロウ差分値情報122に登録されているオフセットパターンは、m個(mは自然数)である。このため、メモリコントローラ10は、16ビットのデータで判定電圧VA~VOに対応した差分値の種々の組み合わせを取得することができる。
【0090】
ここで、ロウ差分値情報122は、補正の基準点となる基準ロウ(基準ワード線WL)を持つ。
図19に示す例では、ロウインデックス127が基準ロウに対応する。上述したコードブック121に登録されたシフトパターンは、基準ロウに対応するシフトパターンである。このため、各ワード線WLに対応する判定電圧Vは、コードブック121に登録された差分値に対して、ロウ差分値情報122に登録された差分値をさらに加算することで取得される。
【0091】
本実施形態では、ロウ差分値情報122は、例えば、複数のメモリチップ21に対して共通に設けられている。ロウ差分値情報122は、メモリチップ21毎に個別に設けられてもよく、プレーンP毎に個別に設けられてもよく、グループG毎に個別に設けられてもよく、ブロックBLK毎に個別に設けられてもよい。なお、ロウ差分値情報122では、ロウインデックスは、例えばワード線WLの識別番号(以下、「ワード線番号」とも称する)に対応している。言い換えると、ロウ差分値情報122において、複数のオフセットパターンは、ワード線番号の順に機械的に並べられて登録されている。このため、あるワード線WLのワード線番号に基づいて、当該ワード線WLに対応するオフセットパターンを取得することができる。なおこれに代えて、どのワード線WLが、どのロウインデックスと対応付けられているかは、補正量情報120に含まれる不図示の管理情報に登録されて管理されてもよい。
【0092】
図20は、グループG0のリファレンスブロックRBのワード線WL0に印加される判定電圧VA~VOを取得する方法を示す図である。
図20に示す例は、グループG0のリファレンスブロックRBがコードブックインデックスnと対応付けられて登録され、ワード線WL0がロウインデックス0と対応付けられて登録されている例である。
【0093】
この場合、メモリコントローラ10は、基準電圧情報110を参照することで得られる基準値[25,84,138,195,258,322,392,・・・,1022]に、コードブック121を参照してコードブックインデックスmを指定することで得られる差分値[2,-5,-7,-10,-12,-14,-17,・・・,-23]を加算し、さらに、ロウ差分値情報122を参照してロウインデックス0を指定することで得られる差分値[10,12,12,12,15,16,11,・・・,20]を加算する。これにより、メモリコントローラ10は、[37,91,143,197,261,324,386,・・・,1019]で表される判定電圧VA~VOを取得する。
【0094】
図21は、第3の実施形態のメモリシステム1bの構成を示すブロック図である。第3の実施形態では、判定電圧情報100Aは、判定電圧関係情報125を含む。判定電圧関係情報125については後述する。
【0095】
図22は、第3の実施形態におけるブロック差分値の管理方法を概念的に示す図である。リファレンスブロックRBの判定電圧VとディファレンスブロックDBの判定電圧Vとの差分値をVxとすると、各ブロックBLKの判定電圧の変化量Vyを次の式(4)で表すことができる。
【0096】
【0097】
ここで、αとβは、ハイパーパラメータであり、実際に複数のブロックBLK間の判定電圧Vの差分を記録したデータベースに基づく機械学習により計算され得る。すなわち、
図22に示すように、ブロックBLK0をリファレンスブロックRBとすると、ブロックBLK1~BLK(N-1)の複数のディファレンスブロックDBの判定電圧Vは、各ディファレンスブロックDBに対する読み出し動作(しきい値電圧トラッキング)を行うことなく、上述した式(1)における判定電圧について式(4)が示す変化量Vyを考慮することによって推定することができる。しきい値電圧トラッキングは、メモリセルMTのしきい値分布における谷の位置を検索する処理である。具体的には、しきい値電圧トラッキングでは、リード電圧を所定のステップ幅でシフトさせながら繰り返し読み出しを行うシフトリードが行われ、メモリセルMTのしきい値分布が求められる。
【0098】
詳しく述べると、まず、メモリコントローラ10は、あるブロックBLK(リファレンスブロックRBでもよく、ディファレンスブロックDBでもよい)の読み出し動作でエラービット数またはビットエラー率がしきい値以上である場合(例えば、エラービット数がECC回路15の訂正能力を超えた場合)、リードエラー(Read Error)と判定する。この判定により、メモリコントローラ10は、このあるブロックBLKを含むグループGにおけるリファレンスブロックRBに対するしきい値電圧トラッキング(Vth Tracking)を行い、判定電圧Vの適正値を検出する。このようにして得られたデータにラベルを付けて、判定電圧Vに対応したストレスとしてデータリテンション、温度較差CT、または、ノーマルが出力されるように、前述と同様に、分類部16bについてブロック単位で教師あり学習を行い、学習済みの分類部を実現する。
【0099】
このように実現された学習済みの分類部16bにブロックごとの判定電圧Vが入力されると、学習済みの分類部16bは判定電圧に応じたストレスの種類を判定できる。そして、補正部16cは、分類部16bが判定したストレスに対応するデータテーブルTBL2またはデータテーブルTBL3を用いてブロック単位でリファレンスブロックRBの判定電圧Vを補正する。
【0100】
次に、メモリコントローラ10は、判定電圧関係情報125(
図21参照)を用いて、新しく求められたリファレンスブロックRBの判定電圧Vの適正値に基づいて、同じグループG内の各ディファレンスブロックDBの判定電圧Vの適正値を導出する。ここで、判定電圧関係情報125は、リファレンスブロックRBの判定電圧Vの適正値と、各ディファレンスブロックDBの判定電圧Vの適正値との関係が機械学習により求められた情報である。例えば、判定電圧関係情報125は、上述した式(1)と、各ディファレンスブロックDBに関するハイパーパラメータα,βとを含む。
【0101】
メモリコントローラ10は、上述した式(1)からリファレンスブロックRBが受けているストレスを判定する。メモリコントローラ10は、その判定結果からそのストレスを受けているディファレンスブロックDBの判定転圧Vの適正値を求めるハイパーパラメータα, βを決定する。すなわち、メモリコントローラ10は、新しく求められたリファレンスブロックRBの判定電圧Vと、式(1)と、ハイパーパラメータα,βとに基づき、各ディファレンスブロックDBの判定電圧Vの適正値を算出する。そして、メモリコントローラ10は、算出された判定電圧Vを用いて各ディファレンスブロックDBに対する読み出し動作を行う。
【0102】
各ディファレンスブロックDBに対するデータの読み出しが正常に行われた場合(エラービット数またはビットエラー率がしきい値未満である場合)、メモリコントローラ10は、算出された判定電圧Vに基づいてディファレンスブロックDBのブロック差分値を更新する。
【0103】
具体的には、メモリコントローラ10は、特定ディファレンスブロックDBの1つのワード線WLに対して判定電圧Vの適正値を検出するためのしきい値電圧トラッキングを行う。メモリコントローラ10は、求められたメモリセルMTのしきい値分布に基づき、判定電圧Vの適正値(基準値VAD~VODからのシフト量)を取得する。
【0104】
次に、メモリコントローラ10は、ロウ差分値情報122を参照し、しきい値電圧トラッキングを行ったワード線WLのロウインデックスに対応するロウ差分値を取得する。次に、メモリコントローラ10は、取得したシフト量からロウ差分値を減算する。これにより、しきい値電圧トラッキングが行われたブロックBLKのシフト量が取得される。
【0105】
次に、メモリコントローラ10は、コードブック121を参照し、特定ディファレンスブロックDBと同じグループGのリファレンスブロックRBの差分値(グループ差分値)を取得する。そして、メモリコントローラ10は、取得したシフト量からグループ差分値を減算する。これにより、メモリコントローラ10は、リファレンスブロックRBに対する特定ディファレンスブロックDBの適切な差分値(ブロック差分値)を取得する。
【0106】
次に、メモリコントローラ10は、コードブック121に登録されている65536個のシフトパターンの中から、取得したブロック差分値に近似するシフトパターンを新しく選出し、そのシフトパターンに対応するコードブックインデックスを特定する。そして、メモリコントローラ10は、ブロック管理情報123において、特定ディファレンスブロックDBのコードブックインデックスを、新しく特定されたコードブックインデックスに置き換える。これにより、リファレンスブロックRBの差分値を変更せず、特定ディファレンスブロックDBの差分値が変更される。
なお、第3の実施形態によるメモリコントローラ10は、分類部の一例、補正部の一例、および処理部の一例である。
【0107】
<12.利点>
以上、第3の実施形態によるメモリシステム1bについて説明した。メモリシステム1bにおいて、分類部16bは、データリテンション、温度較差CT、シフト値を用いて教師あり学習を行い学習済みの分類部を実現する。そして、分類部16bは、ブロック単位でストレスを推定する。これにより、分類部16bは、ストレスがデータリテンションであるか、温度較差CTであるか、または、どちらでもないかを判定することができる。その結果、ブロック単位でストレスの種類を判定することができ、判定したストレスに対応する補正値を用いてブロックごとに判定電圧Vを補正することができる。
【0108】
以上、いくつかの実施形態および変形例について説明したが、実施形態は上記例に限定されない。上述した実施形態および変形例は、互いに組み合わされて実現されてもよい。メモリコントローラ10の機能の一部または全部は、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)、またはFPGA(Field Programmable Gate Array)などのハードウェア(回路部;circuitryを含む)によって実現されてもよい。また、本明細書における「第1」、「第2」などの序数は、説明の便宜上のものであり、順序を入れ替えて付け直されてもよい。
【0109】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0110】
1、1a、1b…メモリシステム、10…メモリコントローラ(コントローラ)、16、161…NANDコントローラ、16a、16a1…テーブル生成部、16b、16b2…分類部、16b1…演算部、16c…補正部、20…NANDメモリ(メモリ装置)、21…メモリチップ、100…判定電圧情報、110…基準電圧情報、121…コードブック(共通差分値情報)、122…ロウ差分値情報、125…判定電圧関係情報、BLK…物理ブロック、MT…メモリセル、WL…ワード線。