(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024135043
(43)【公開日】2024-10-04
(54)【発明の名称】メモリシステム及びリード方法
(51)【国際特許分類】
G06F 12/00 20060101AFI20240927BHJP
G11C 16/08 20060101ALI20240927BHJP
G11C 16/26 20060101ALI20240927BHJP
G11C 16/04 20060101ALI20240927BHJP
G06F 11/14 20060101ALI20240927BHJP
【FI】
G06F12/00 560A
G11C16/08 120
G11C16/26 100
G11C16/04 170
G06F12/00 597U
G06F11/14 610
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023045538
(22)【出願日】2023-03-22
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】島田 克行
(72)【発明者】
【氏名】小松 裕樹
(72)【発明者】
【氏名】牛島 康之
【テーマコード(参考)】
5B160
5B225
【Fターム(参考)】
5B160CB00
5B160NA01
5B225BA01
5B225BA19
5B225DA10
5B225EA05
5B225FA01
(57)【要約】
【課題】リード性能を向上することができるメモリシステム及びリード方法を提供すること。
【解決手段】実施形態に係るメモリシステムは、複数ビットのデータを記憶するように構成されたメモリセルを備える不揮発性メモリと、コントローラを具備する。データをリードするための第1数の読み出し電圧の初期値が決められている。コントローラは、第1数より多い第2数の電圧を不揮発性メモリに順次印加してオン又はオフとなるメモリセルの数である第2数のビットカウントを順次求め、第2数のビットカウントの夫々について隣接するビットカウントに対する差である第2数の差分ビットカウントを求め、第2数の差分ビットカウントの中から第1数の読み出し電圧の中の第1読み出し電圧の初期値に対応する差分ビットカウントを含む第2数より少ない第3数の差分ビットカウントを求め、第3数の差分ビットカウントに基づいて第1数の読み出し電圧の最適値を推定する。
【選択図】
図9
【特許請求の範囲】
【請求項1】
夫々が複数ビットのデータを記憶するように構成された複数のメモリセルを備える不揮発性メモリと、
前記不揮発性メモリに電気的に接続されるコントローラと、を具備し、
前記データをリードするための第1数の読み出し電圧の初期値が決められており、
前記コントローラは、
前記第1数より多い第2数の電圧を前記不揮発性メモリに順次印加し、オン又はオフとなるメモリセルの数である第2数のビットカウントを順次求め、
前記第2数のビットカウントの夫々について隣接するビットカウントに対する差である前記第2数の差分ビットカウントを求め、
前記第2数の差分ビットカウントの中から前記第1数の読み出し電圧の中の第1読み出し電圧の初期値に対応する差分ビットカウントを含む前記第2数より少ない第3数の差分ビットカウントを求め、
前記第3数の差分ビットカウントに基づいて前記第1数の読み出し電圧の最適値を推定する、メモリシステム。
【請求項2】
前記コントローラは、前記第2数の差分ビットカウントを求めた後、隣接する差分ビットカウント間に新たな差分ビットカウントを補間する、請求項1記載のメモリシステム。
【請求項3】
前記コントローラは、前記第2数のビットカウントを求めた後、隣接するビットカウント間に新たなビットカウントを補間する、請求項1記載のメモリシステム。
【請求項4】
前記コントローラは、前記第2数の差分ビットカウントの複数の極大値を検出し、前記第1読み出し電圧の初期値より低電圧側で最も高い電圧に対応する極大値と前記第1読み出し電圧の初期値より高電圧側で最も低い電圧に対応する極大値との間の複数の差分ビットカウントを前記第3数の差分ビットカウントとして求める、請求項1記載のメモリシステム。
【請求項5】
前記コントローラは、前記第2数の差分ビットカウントを入力し、前記第3数の差分ビットカウントを出力する推定部を具備し、
前記推定部は、ニューラルネットワークにおける行列演算回路を具備する、請求項1記載のメモリシステム。
【請求項6】
前記コントローラは、総ビットカウントに対する前記ビットカウントの比に基づいて前記第1数の読み出し電圧に夫々対応する前記第1数のビットカウントを求め、
前記第1数のビットカウントの中の第1ビットカウントと、前記第1ビットカウントより高い電圧側の第1所定数の差分ビットカウントと、前記第1ビットカウントより低い電圧側の第2所定数の差分ビットカウントを前記第3数の差分ビットカウントとして求める、請求項1記載のメモリシステム。
【請求項7】
前記コントローラは、前記第3数の差分ビットカウント及び前記不揮発性メモリの固有情報に基づいて前記第1数の読み出し電圧の最適値を推定する、請求項1記載のメモリシステム。
【請求項8】
前記コントローラは、
前記第1数の読み出し電圧の最適値を、推定精度の高い順に順次推定し、
前記第3数の差分ビットカウントに基づいて第1読み出し電圧の第1最適値を推定し、
前記第3数の差分ビットカウントと前記第1最適値に基づいて、又は前記第3数より1つ少ない数の差分ビットカウントと前記第1最適値に基づいて、第2読み出し電圧の第2最適値を推定する、請求項1記載のメモリシステム。
【請求項9】
前記コントローラは、
前記第1数の読み出し電圧の最適値を、推定精度の高い順に順次推定し、
前記第3数の差分ビットカウントに基づいて第1読み出し電圧の第1最適値を推定し、
前記第3数の差分ビットカウントと前記第1最適値に基づいて第2読み出し電圧の第2最適値を推定し、
前記第3数の差分ビットカウントと前記第2最適値に基づいて第3読み出し電圧の第2最適値を推定する、請求項1記載のメモリシステム。
【請求項10】
夫々が複数ビットのデータを記憶するように構成された複数のメモリセルを備える不揮発性メモリを具備し、
前記データをリードするための第1数の読み出し電圧の初期値が決められているメモリシステムのリード方法であって、
前記第1数より多い第2数の電圧を前記不揮発性メモリに順次印加し、オン又はオフとなるメモリセルの数である第2数のビットカウントを順次求め、
前記第2数のビットカウントの夫々について隣接するビットカウントに対する差である前記第2数の差分ビットカウントを求め、
前記第2数の差分ビットカウントの中から前記第1数の読み出し電圧の中の第1読み出し電圧の初期値に対応する差分ビットカウントを含む前記第2数より少ない第3数の差分ビットカウントを求め、
前記第3数の差分ビットカウントに基づいて前記第1数の読み出し電圧の最適値を推定する、リード方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステム及びリード方法に関する。
【背景技術】
【0002】
メモリシステムは、複数のメモリセルを有するメモリデバイスを備える。メモリデバイスからのデータのリードの際、読み出し対象のメモリセルに接続されたワード線に読み出し電圧が印加される。読み出し電圧が適正ではない場合、リードしたデータの誤りが多くなる。この場合、エラー訂正やリトライリードを実行するためレイテンシが増加し、リード性能が低下する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2020-144958号公報
【特許文献2】特開2021-44034号公報
【特許文献3】特開2014-154169号公報
【特許文献4】米国特許第9069659号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の目的は、リード性能を向上することができるメモリシステム及びリード方法を提供することである。
【課題を解決するための手段】
【0005】
実施形態に係るメモリシステムは、夫々が複数ビットのデータを記憶するように構成された複数のメモリセルを備える不揮発性メモリと、前記不揮発性メモリに電気的に接続されるコントローラと、を具備する。前記データをリードするための第1数の読み出し電圧の初期値が決められている。前記コントローラは、前記第1数より多い第2数の電圧を前記不揮発性メモリに順次印加してオン又はオフとなるメモリセルの数である第2数のビットカウントを順次求め、前記第2数のビットカウントの夫々について隣接するビットカウントに対する差である前記第2数の差分ビットカウントを求め、前記第2数の差分ビットカウントの中から前記第1数の読み出し電圧の中の第1読み出し電圧の初期値に対応する差分ビットカウントを含む前記第2数より少ない第3数の差分ビットカウントを求め、前記第3数の差分ビットカウントに基づいて前記第1数の読み出し電圧の最適値を推定する。
【図面の簡単な説明】
【0006】
【
図1】実施形態に係るメモリシステムを含む情報処理システムの一例を説明するためのブロック図。
【
図2】実施形態に係るメモリシステムに含まれるメモリチップの一例を説明するためのブロック図。
【
図3】実施形態に係るメモリチップのメモリセルアレイの一例を説明するための回路図。
【
図4】実施形態に係る多値化メモリセルの閾値分布の一例を説明するための図。
【
図5】実施形態に係る読み出し電圧情報の一例を説明するための図。
【
図6】実施形態に係る読み出し電圧情報の中の既定値テーブルの一例を説明するための図。
【
図7】実施形態に係る読み出し電圧情報の中の最適値テーブルの一例を説明するための図。
【
図8】実施形態に係る最適電圧推定モジュールの構成の一例を説明するための図である。
【
図9】実施形態に係る最適電圧推定モジュールの処理の一例を説明するためのフローチャートである。
【
図10】実施形態に係るリファレンスリードの一例を説明するための図である。
【
図11】実施形態に係るビットカウント列の第1例を説明するための図である。
【
図12】実施形態に係る差分ビットカウント列の一例を説明するための図である。
【
図13】実施形態に係る差分ビットカウント列の絞り込みの一例を説明するための図である。
【
図14】実施形態に係る絞り込み差分ビットカウント列の一例を説明するための図である。
【
図15】実施形態に係る推定器が推定した最適値を説明するための図である。
【
図16】実施形態に係る差分ビットカウント列の第2例を説明するための図である。
【
図17】実施形態に係る差分ビットカウント列の第3例を説明するための図である。
【
図18】絞り込み差分ビットカウント列の例を説明するための図である。
【
図19】第2実施形態に係る最適電圧推定の一例を説明するためのフローチャートである。
【
図20】第2実施形態に係る最適電圧推定の第1応用例説明するための図である。
【
図21】第2実施形態に係る最適電圧推定の第2応用例説明するための図である。
【
図22】第2実施形態に係る最適電圧推定の第3応用例説明するための図である。
【発明を実施するための形態】
【0007】
以下、図面を参照して、実施形態を説明する。以下の説明は、実施形態の技術的思想を具体化するための装置や方法を例示するものであって、実施形態の技術的思想は、以下に説明する構成要素の構造、形状、配置、材質等に限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各要素のサイズ、厚み、平面寸法又は形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、互いの寸法の関係や比率が異なる要素が含まれることもある。複数の図面において、対応する要素には同じ参照数字を付して重複する説明を省略する場合もある。いくつかの要素に複数の呼称を付す場合があるが、これら呼称の例はあくまで例示であり、これらの要素に他の呼称を付すことを否定するものではない。また、複数の呼称が付されていない要素についても、他の呼称を付すことを否定するものではない。なお、以下の説明において、「接続」は直接接続のみならず、他の要素を介した接続を含む場合もある。
【0008】
実施形態の説明の前に用語の定義を説明する。
【0009】
(データリード)
メモリに書き込まれたデータを読み出すこと(リード)である。メモリの1つの読み出し単位に対して行うリードである。メモリの1つの読み出し単位の例は、複数の多値化メモリセルの行(row)である。
【0010】
(リファレンスリード)
多値化メモリセルの閾値分布の情報を得るために複数の異なる電圧をメモリの1つの読み出し単位に印加し、それぞれに対するビットカウントを得る処理である。複数の異なる電圧の代わりに、1つの電圧を印加してもよい。その場合、先頭に0を付加することにより、長さ1のビットカウント列及び差分ビットカウント列が得られる。リファレンスリードは、リードの中で閾値電圧推定の前処理として実施されるリードである。
【0011】
(ビットカウント)
ある読み出し電圧を用いて1つの読み出し単位にリードを行ったときに、オンになるメモリセル数をカウントしたものである。実装によっては、オフになるメモリセル数をカウントしたものでもよい。
【0012】
(差分ビットカウント)
複数の異なる電圧に対するビットカウントの集合であるビットカウント列において、隣接する2つのビットカウントの差分である。
【0013】
(誤りビットカウント)
データリードの際、閾値分布の乱れなどにより誤った値として読み出されたビットカウントである。閾値分布の乱れは、データ書き込み後に多値化メモリセルに蓄えられる電荷量が変動することにより生じる。本来オンになるべきであったのにオフとして検出されたセル数と、本来オフになるべきであったのにオンとして検出されたセル数の合計である。誤りビットカウントが大きくなると、正しいデータを復号できなくなることがある。
【0014】
(最適読み出し電圧)
データリードの際に、誤りビットカウントを最も小さくする読み出し電圧である。単に、最適値と称されることもある。
【0015】
(レベル)
多値化メモリセルの状態のことである。1つのメモリセルが3ビットのデータを記憶する多値メモリでは、メモリセルは8個の状態を取り得るので、8個のレベルが存在する。
【0016】
(ステート)
多値化メモリセルのレベルを特定する閾値電圧である。1つのメモリセルが3ビットのデータを記憶する多値メモリでは、8個のレベルを特定する8個のステートが存在する。
【0017】
(第1実施形態)
図1は、第1実施形態に係るメモリシステムを含む情報処理システム10の一例を説明するためのブロック図である。情報処理システム10は、ホスト装置14とメモリシステム12を有する。メモリシステム12は、ホスト装置14にケーブル、コネクタ、ソケット又はネットワークを介して接続される。メモリシステム12は、ホスト装置14が備えるプリント配線基板に、例えば半田ボールを介して実装されてもよい。
【0018】
ホスト装置14は、メモリシステム12を制御するように構成された情報処理装置である。ホスト装置14は、例えば、サーバ装置、パーソナルコンピュータ、車載装置、又はモバイル型の情報処理装置などである。ホスト装置14は、メモリシステム12に対するアクセス要求を発行することができる。アクセス要求は、読み出し要求(リード要求とも称される)及び書き込み要求(ライト要求とも称される)を含む。本明細書では、読み出しはリードとも称され、書き込みはライトとも称される。
【0019】
メモリシステム12は、メモリコントローラ20と、NAND型フラッシュメモリ(以下,NANDメモリと称される)40とを備える。メモリシステム12は、例えば、SSD(Solid State Drive)又はUFS(Universal Flash Storage)デバイスである。NANDメモリ40は不揮発性メモリの一例である。NANDメモリ40の代わりに、他の不揮発性メモリが用いられてもよい。不揮発性メモリの他の例は、NOR型フラッシュメモリ、MRAM(Magneto-resistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)である。
【0020】
メモリコントローラ20は、ホスト装置インターフェースコントローラ(ホストI/Fコントローラ)22、RAM(Random Access Memory)24、ROM(Read Only Memory)26、CPU(Central Processing Unit)28、ECC(Error Correcting Code)回路30、NANDコントローラ32、及び推定器38を含む。ホスト装置I/Fコントローラ22、RAM24、ROM26、CPU28、ECC回路30、NANDコントローラ32、及び推定器38は、バス34に接続される。メモリコントローラ20は、上記の構成要素が1個のチップに纏められたSystem on aChip(SoC)で構成されてもよい。これらの構成要素の一部は、メモリコントローラ20の外部に設けられてもよい。
【0021】
ホストI/Fコントローラ22は、CPU28による制御の下で、ホスト装置14とメモリシステム12との間の通信インターフェースの制御、及びホスト装置14とRAM24との間のデータ転送の制御を実行する。ホスト装置14とメモリシステム12との間の通信インターフェースの例は、SCSI(Small Computer System Interface)、SAS(Serial Attached SCSI)、ATA(AT Attachment)、SATA(Serial ATA)、PCIe(PCI Express)(TM)、Ethernet(TM)、Fibre channel、NVMe(NVM Express)(TM)、USB(Universal Serial Bus)(TM)、UART(Universal Asynchronous Receiver/Transmitter)(TM)である。
【0022】
RAM24の例は、DRAM(Dynamic Random Access Memory)又はSRAM(Static Random Access Memory)などであるが、これらに限定されない。
【0023】
RAM24は、ホスト装置14とNANDメモリ40との間のデータ転送のためのバッファとして機能する。RAM24は、CPU28にワークエリアを提供する。RAM24には、メモリシステム12の動作時に、ROM26に記憶されているファームウェア(プログラム)がロードされる。
【0024】
本実施形態では、メモリシステム12の動作時に、読み出し電圧情報36bがNANDメモリ40から読み出され、読み出し電圧情報36aとしてRAM24に記憶される。読み出し電圧情報36aは、NANDメモリ40に対するリードにおける読み出し電圧に関する。読み出し電圧情報36aは、メモリシステム12の電源がオフする際、NANDメモリ40に読み出し電圧情報36bとして記憶され、不揮発化される。読み出し電圧情報36aについての詳細は後述する。
【0025】
CPU28は、ハードウェアプロセッサの一例である。CPU28は、RAM24にロードされたファームウェアを実行することで、メモリコントローラ20を制御する。CPU28は、以下に説明するデータのライト、リード、及び消去などの動作を制御する。さらに、CPU28は、ファームウェアの実行により実装される最適電圧推定モジュール28aを備える。なお、動作毎に複数のCPU28が設けられてもよい。
【0026】
ECC回路30は、NANDメモリ40へのライト対象データ(書き込みデータ、又はライトデータとも称される)に対してエラー訂正のための符号化を行う。ECC回路30は、NANDメモリ40から読み出されたデータ(読み出しデータ、又はリードデータとも称される)に含まれるエラーを検出する。ECC回路30は、NANDメモリ40から読み出されたデータにエラーが含まれる場合、ライト時に付与したエラー訂正符号に基づき、リードデータに対してエラー訂正を実行する。
【0027】
NANDコントローラ32は、CPU28の制御の下で、RAM24とNANDメモリ40との間のデータ転送の制御を実行する。NANDコントローラ32とNANDメモリ40との間のデータ転送で使用される規格の例は、Toggle DDR又はONFI(Open NAND Flash Interface)である。
【0028】
メモリコントローラ20とNANDメモリ40とは、複数、例えば2個のチャネルCh0、Ch1で接続される。チャネルの数は、複数に限らず、1個でもよい。さらに、複数の場合、チャンネルの数は3個以上でもよい。NANDコントローラ32は、チャネルCh0、Ch1を介したデータ転送を制御する。
【0029】
NANDメモリ40は、複数、例えば4つのメモリチップ42a、42b、42c、42dを有する。チャネルCh0には、2つのメモリチップ42a、42bが接続される。チャネルCh1には、2つのメモリチップ42c、42dが接続される。各チャネルに、3つ以上のメモリチップが接続されてもよい。
【0030】
最適電圧推定モジュール28aは、メモリシステム12の動作時に、NANDメモリ40からデータを読み出す際に用いられる読み出し電圧の最適値を推定し、推定した最適値に基づき読み出し電圧情報36aを更新する。
【0031】
推定器38は、最適電圧推定モジュール28aによる最適値の推定を高速化するために使われるハードウェアモジュールである。推定器38の例は、ディープ学習ニューラルネットワーク(DNN)における行列演算を実行する演算回路である。DNNのパラメータは、ROM26に格納されてもよい。しかし、メモリコントローラ20は推定器38を備えることなく、CPU28においてファームウェアの実行により実装される推定モジュールを備えてもよいし、最適電圧推定モジュール28aが推定器38の機能を備えてもよい。
【0032】
図2は、メモリチップ42aの一例を説明するためのブロック図である。他のメモリチップ42b、42c、42dも同様に構成される。
【0033】
メモリチップ42aは、入出力信号処理回路(I/O信号処理回路)110、制御信号処理回路111、チップ制御回路112、コマンドレジスタ113、アドレスレジスタ114、レディー/ビジー(RY/BY)生成回路120、メモリセルアレイ118、カラムデコーダ115、データレジスタ116、センスアンプ117、及びロウデコーダ119を有する。
【0034】
メモリチップ42aとNANDコントローラ32とを接続するチャネルCh0は、入出力(I/O)信号線、制御信号線、レディー/ビジー(RY/BY)信号線を含む。I/O信号線は、I/O信号処理回路110に接続される。I/O信号線は、データ、アドレス、各種指示、及び各種応答を伝送する。メモリコントローラ20は、I/O信号線を介して、読み出し指示(リード指示とも称される)、書き込み指示(ライト指示とも称される)、及び消去指示をメモリチップ42aに送信する。
【0035】
制御信号線は、チップイネーブル(CE)信号線、コマンドラッチイネーブル(CLE)信号線、アドレスラッチイネーブル(ALE)信号線、ライトイネーブル(WE)信号線、リードイネーブル(RE)信号線などを含む。制御信号線は、制御信号処理回路111に接続される。CE信号線は、対象のメモリチップが選択中か否かを示す信号を伝送する。CLE信号線は、I/O信号線を用いて送られる信号がコマンドであるか否かを示す信号を転送する。ALE信号線は、I/O信号線を用いて送られる信号がアドレスであるか否かを示す信号を転送する。WE信号線は、I/O信号線の信号をメモリチップ42aに取り込ませるための信号を伝送する。RE信号線は、メモリチップ42aからの信号をI/O信号線に出力させるための信号を伝送する。
【0036】
RY/BY信号線は、RY/BY生成回路120に接続される。RY/BY信号線は、NANDメモリ40が動作中か否かを示す信号を伝送する。RY/BY信号線を伝送する信号は、例えば、論理値Hレベルで非動作中に対応したレディー状態(RY)を示し、論理値Lレベルで動作中に対応したビジー状態(BY)を示す。
【0037】
I/O信号処理回路110は、メモリチップ42aとNANDコントローラ32との間でI/O信号を送受信するためのバッファ回路である。I/O信号処理回路110がラッチしたコマンドは、コマンドレジスタ113に振り分けられて格納される。I/O信号処理回路110がラッチしたアクセス先を指定するアドレスは、アドレスレジスタ114に振り分けられて格納される。I/O信号処理回路110がラッチしたデータは、データレジスタ116に振り分けられて格納される。I/O信号処理回路110は、データレジスタ116からデータを受け付ける。
【0038】
アドレスレジスタ114に格納されたアドレスは、チップ番号、ロウアドレス、及びカラムアドレスを含む。チップ番号は、メモリチップ42aを特定するための識別情報である。チップ番号、ロウアドレス、及びカラムアドレスは、チップ制御回路112、ロウデコーダ119、及びカラムデコーダ115に読み出される。
【0039】
制御信号処理回路111は、制御信号を受け付け、受け付けた制御信号に基づいて、I/O信号処理回路110が受け付けたI/O信号の格納先のレジスタの振り分けを実行する。また、制御信号処理回路111は、受け付けた制御信号をチップ制御回路112に転送する。
【0040】
チップ制御回路112は、制御信号処理回路111を介して受信する各種制御信号に基づいて状態遷移する回路である。チップ制御回路112は、メモリチップ42aの動作を制御する。RY/BY生成回路120は、チップ制御回路112による制御の下でRY/BY信号線を伝送する信号の状態をレディー状態(RY)とビジー状態(BY)との間で遷移させる。
【0041】
センスアンプ117は、リードにおいて、メモリセルアレイ118に含まれるメモリセルMT(
図3参照)の状態をセンスし、センスした状態に基づいてリードデータを生成する。センスアンプ117は、生成したリードデータをデータレジスタ116に格納する。データレジスタ116に格納されたリードデータは、データ線を通じてI/O信号処理回路110に送られ、I/O信号処理回路110からメモリコントローラ20へ転送される。
【0042】
メモリセルアレイ118は、データを記憶する複数のメモリセルMTを有する。メモリセルアレイ118は、複数の物理ブロックBLK(
図3参照)を有する。各物理ブロックBLKは、複数のメモリセルMTを含むメモリセルグループである。物理ブロックBLKは、データ消去の最小単位である。すなわち、1個の物理ブロックBLKに記憶されている全てのデータは、一括して消去される。以下では、物理ブロックは単にブロックと称される。
【0043】
図3は、メモリセルアレイ118の一例を説明するための回路図である。メモリセルアレイ118は、複数のブロックBLK0、BLK1、…を有する。メモリセルアレイ118は、数百から数千のブロックBLKを有する。メモリセルアレイ118は、例えば、複数のメモリセルMTが立体状に配置されたいわゆる三次元構造のNANDメモリである。NANDメモリの構造は、三次元構造に限らない。メモリセルアレイ118は、複数のメモリセルMTが平面に配置されたいわゆる二次元構造のNANDメモリであってもよい。
【0044】
図3に示すように、m本のビット線BL0~BLm-1の各々は、ブロックBLK0、BLK1、…において、複数、例えば4つのストリングSTRと接続される。mは2以上の整数である。ストリングSTRは、1個の第1選択ゲートトランジスタST(ST0、又はST1~STm-1)、複数のメモリセルMT(MT0~MT7)、及び1個の第2選択ゲートトランジスタDT(DT0、又はDT1~DTm-1)を含む。第1選択ゲートトランジスタST0(又はST1~STm-1)、複数のメモリセルMT0~MT7、及び1個の第2選択ゲートトランジスタDT0(又はDT1~DTm-1)は、それぞれこの順で、ソース線CELSRCと1個のビット線BL0(又はBL1~BLm-1)との間に直列に接続される。m個のストリングSTR0~STRm-1は、相違する複数のビット線BL0~BLm-1それぞれに接続される。共通の第2選択ゲート線(ドレイン側選択ゲート線)SGDLに接続されるm個のストリングSTR0~STRm-1は、1個のストリングユニットSUを構成する。各ブロックBLK0、BLK1、…は、複数、例えば4つのストリングユニットSU0~SU3を含む。共通のワード線WL0~WL7及び共通の第1選択ゲート線(ソース側選択ゲート線)SGSLが、4つのストリングユニットSU0~SU3それぞれに接続される。
【0045】
ストリングユニットSU0~SU3のそれぞれにおいて、第1選択ゲートトランジスタST0~STm-1の制御ゲート電極は、共通の第1選択ゲート線(ソース側選択ゲート線)SGSLに接続される。第1選択ゲート線SGSLは、第1選択ゲートトランジスタST0~STm-1の制御ゲート電極を制御する信号線である。第1選択ゲートトランジスタST0~STm-1は、第1選択ゲート線SGSLを通じて印加される電圧に基づき、複数のメモリセルMT0~MT7とソース線CELSRCとの間を選択的に接続する。異なる4つの第1選択ゲート線SGSLが、ストリングユニットSU0~SU3にそれぞれ接続されてもよい。
【0046】
ストリングユニットSU0~SU3のそれぞれにおいて、第2選択ゲートトランジスタDT0~DTm-1の制御ゲート電極は、対応する第2選択ゲート線(ドレイン側選択ゲート線)SGDL0~SGDL3にそれぞれ接続される。第2選択ゲート線SGDL0~SDGL3は、対応する第2選択ゲートトランジスタDT0~DTm-1の制御ゲート電極をそれぞれ制御する信号線である。第2選択ゲートトランジスタDT0~DTm-1は、対応する第2選択ゲート線SGDL0~SGDL3を通じてそれぞれ印加される電圧に基づき、複数のメモリセルMT0~MT7とビット線BL0~BLm-1との間を選択的に接続する。
【0047】
メモリセルMTは、積層ゲート構造を有したMOSFET(Metal Oxide Semiconductor Field Effect Transistor)で構成される。積層ゲート構造は、トンネル酸化膜を介在して形成されたフローティングゲートと、フローティングゲート上にゲート絶縁膜を介在して形成された制御ゲート電極とを含む。フローティングゲートに蓄えられる電荷の数(電荷量)に応じてメモリセルMTの閾値電圧が変化する。メモリセルMTは、書き込み時にはフローティングゲートに正の電荷が注入され、消去時にはフローティングゲートから正の電荷が引き抜かれる。メモリセルMTには、2つ以上のデータ値のうちいずれか1つが書き込まれ得る。メモリセルMTは、閾値電圧の違いに応じて2つ以上のデータ値のうちの1つを不揮発に記憶する。
【0048】
各ブロックBLK0、BLK1、…において、各メモリセルMT0~MT7の制御ゲート電極は、対応するワード線WL0~WL7にそれぞれ接続される。ワード線WL0~WL7は、メモリセルアレイ118においてX方向に並ぶ一行のメモリセルMTを選択するための制御信号線である。ワード線WL0~WL7は、一行に並ぶこれら一群のメモリセルMTに共通に接続される。メモリセルMT0~MT7は、ワード線WL0~WL7とビット線BL0~BLm-1との交差部にそれぞれ設けられる。読み出し又は書き込みが行われるメモリセルMTに接続されたワード線WL(以下、選択ワード線WLとも称される)に、読み出し電圧又は書き込み電圧を印加することで、メモリセルMTの読み出し又は書き込みが可能となる。
【0049】
各ブロックBLK0、BLK1、…において、4つのストリングユニットSU0~SU3それぞれのメモリセルMT0~MT7には、同じアドレスに対応するワード線WL0~WL7が共通に接続される。1つのストリングユニットSUにおいて、1つのワード線WLを共有する複数のメモリセルMTの組は、セルユニットCUと称される。1個のセルユニットCUに含まれる複数のメモリセルMTは、一括してデータが書き込まれ、また一括してデータが読み出される。1個のセルユニットCUの記憶空間は、1個又は複数のページを含む。
【0050】
メモリシステム12では、各メモリセルMTは単数ビット又は複数ビットの値を記憶可能に構成され得る。複数ビットの値を記憶可能に構成されるメモリセルMTは、多値化メモリセルと称される。各メモリセルMTがnビットの値を記憶可能な場合、ワード線WL当たりの記憶容量は、nページ分のサイズに等しくなる。nは1以上の整数である。ここでは一例として、メモリセルMTが3ビットの値を記憶するトリプルレベルセル(TLC)モードで動作する場合について説明する。なお、メモリセルMTが1ビットの値を記憶する動作モードはシングルレベルセル(SLC)モードと称し、メモリセルMTが2ビットの値を記憶する動作モードはマルチレベルセル(MLC)モードと称し、メモリセルMTが4ビットの値を記憶する動作モードはクアッドレベルセル(QLC)モードと称される。実施形態は、メモリセルMTが5ビット以上の値を記憶する動作モードにも適用可能である。
【0051】
TLCモードでは、1個のセルユニットCUに3ページ分のデータが記憶され得る。1個のセルユニットCUによって構成される3つのページのうち、先に書き込みがなされるページをロアーページ、ロアーページの後に書き込みがなされるページをミドルページ、ミドルページの後に書き込みがなされるページをアッパーページと称される。なお、1個のセルユニットCUによって構成される複数のページの一部又は全てのページに対して一括にプログラム(すなわち書き込み)が実行されるモードがあってもよい。
【0052】
図4は、多値化メモリセルの閾値分布の一例を説明するための図である。以下の説明では、メモリセルアレイ118に含まれるメモリセルは、TLCモードで動作する多値化メモリセルであるとする。
図4において、横軸は、メモリセルの閾値電圧を表し、縦軸は、或るビット値(データ値)を示すメモリセルの数を表す。メモリセルの閾値電圧は、メモリセルに記憶されるデータに応じた値を有する。メモリセルがTLCモードで動作する場合、メモリセルの閾値電圧は8個の分布を含む。閾値電圧はメモリセルに蓄えられる電荷量に応じており、メモリセルは電荷量に応じてデータを記憶する。すなわち、閾値電圧分布はメモリセルの状態を示す。以下、閾値電圧分布をレベルとも称する。
【0053】
TLCモードで動作するメモリセルは、アッパーページに属するデータxと、ミドルページに属するデータyと、ロアーページに属するデータzとで定義される8値データxyzを記憶可能である。データx、データy、及びデータzの値は、“0”又は“1”である。
【0054】
メモリセルの閾値電圧は、8個のレベルのいずれかに属するように制御される。レベルと8値データxyzのデータ値との対応は、予め決められている。各レベルには
図4に示すデータ値が割り当てられる。なお、レベルとデータ値との対応は、上記に限定されない。
【0055】
例えば、最も低い閾値電圧範囲のレベルErには、データ値“111”が割り当てられる。2番目に低い閾値電圧範囲のレベルAには、データ値“110”が割り当てられる。3番目に低い閾値電圧のレベルBには、データ値“100”が割り当てられる。4番目に低い閾値電圧のレベルCには、データ値“000”が割り当てられる。5番目に低い閾値電圧のレベルDには、データ値“010”が割り当てられる。6番目に低い閾値電圧のレベルEには、データ値“011”が割り当てられる。7番目に低い(2番目に高い)閾値電圧のレベルFには、データ値“001”が割り当てられる。最も高い閾値電圧のレベルGには、データ値“101”が割り当てられる。
【0056】
メモリセルの状態がレベルEr、Aのいずれであるかを区別する読み出し電圧は、ステートA(SA)と称される。メモリセルの状態がレベルA、Bのいずれであるかを区別する閾値電圧は、ステートB(SB)と称される。メモリセルの状態がレベルB、Cのいずれであるかを区別する閾値電圧は、ステートC(SC)と称される。メモリセルの状態がレベルC、Dのいずれであるかを区別する閾値電圧は、ステートD(SD)と称される。メモリセルの状態がレベルD、Eのいずれであるかを区別する閾値電圧は、ステートE(SE)と称される。メモリセルの状態がレベルE、Fのいずれであるかを区別する閾値電圧は、ステートF(SF)と称される。メモリセルの状態がレベルF、Gのいずれであるかを区別する閾値電圧は、ステートG(SG)と称される。
【0057】
NANDメモリ40のロウデコーダ119、カラムデコーダ115、データレジスタ116、及びセンスアンプ117について、
図2も用いて補足的に説明する。ロウデコーダ119、カラムデコーダ115、データレジスタ116、及びセンスアンプ117は、メモリセルアレイ118に対する周辺回路の一部である。周辺回路は、チップ制御回路112による制御に基づいてメモリセルアレイ118に対する読み出し、書き込み、及び消去のアクセスを実行する。
【0058】
ライトにおいて、カラムデコーダ115は、カラムアドレスに対応したビット線BLを選択し活性化する。センスアンプ117は、カラムデコーダ115により選択されたビット線BLの電位を0ボルトとする。ロウデコーダ119は、ロウアドレスに対応して選択されたワード線WLに、プログラミングパルスを印加する。プログラミングパルスの一例は、1サイクル毎に電圧が徐々に高くなるパルスである。これにより、選択されたビット線BLと選択されたワード線WLとの交差部に位置するメモリセルのフローティングゲートに電荷が注入され、その結果、フローティングゲートの閾値電圧が上昇する。センスアンプ117は、プログラミングパルスの1サイクル毎に、書き込み対象のメモリセルの閾値電圧がデータレジスタ116に格納されているデータに応じた電圧に到達したか否かを確認する。センスアンプ117による確認結果に応じて、メモリセルの閾値電圧が書き込むデータ値に応じた電圧に到達するまで、ロウデコーダ119はプログラミングパルスの印加を継続する。
【0059】
一方で、リードにおいて、センスアンプ117は、ビット線BLに電源電位Vccをプリチャージする。ロウデコーダ119は、選択ワード線WLに、データ値“111”、”110”、“100”、“000”、“010”、“011”、“001”、“101”が割り当てられるメモリセルのレベルを特定するための複数の読み出し電圧を順次印加する。各読み出し電圧の値は、リードしたデータの誤りビットカウントがECC回路30により訂正できる誤りビットカウント未満となり、リードエラーが生じないような電圧値(最適値とも称される)である。読み出し電圧の最適値は、NANDメモリ40が備えるメモリセルの閾値電圧に依存する。メモリシステム12の出荷前に、NANDメモリ40が備えるメモリセルの閾値電圧が調べられ、閾値電圧に応じた最適値(すなわち、SA~SG)が読み出し電圧の既定値(デフォルト値とも称される)として決定される。既定値は読み出し電圧情報36aに含まれる。メモリコントローラ20は、既定値をNANDメモリ40に伝え、NANDメモリ40に適正な読み出し電圧を生成させる。読み出し電圧値は、周辺回路に含まれるD/A変換器の変換単位(dac)で表される。dacは、D/A変換器の印加電圧の設定を行うNANDメモリ40内部の回路の設定値の単位である。D/A変換器は、メモリコントローラ20から送信されたデジタル電圧値をアナログ電圧へ変換する。
【0060】
なお、ロウデコーダ119は、非選択のワード線WLには転送電位の電圧を印加し、非選択のワード線WLに属するメモリセルを導通状態にしておく。センスアンプ117は、プリチャージにより蓄えられた電荷が、どの読み出し電圧が印加されたときにソース線CELSRCに流出したかを検知することによって、対象のメモリセルに記憶されているデータ値を判定する。読み出し電圧以上の閾値電圧を有するメモリセルは、制御ゲート電極において読み出し電圧を受け取ってもオフを維持する。一方、読み出し電圧未満の閾値電圧を有するメモリセルは、制御ゲート電極において読み出し電圧を受け取っていると、オンしている。
【0061】
図4に示すように、SA未満の閾値電圧を有するメモリセルの状態は、レベルErであると判断される。SB未満(且つSA以上)の閾値電圧を有するメモリセルの状態は、レベルAであると判断される。隣接する2つのレベルの間のステート未満の閾値電圧を有するメモリセルの状態は、2つのレベルのうち閾値電圧が低いレベルであると判断される。
【0062】
メモリセルの閾値電圧は、プログラムディスターブ、リードディスターブ、又はデータリテンションなどのストレスの影響で変化する。
【0063】
メモリセルにチャージされている電荷量が変化すると、読み出し電圧の最適値も変化する。この場合、出荷前に調べた閾値分布に応じて最適値として決定した既定値の読み出し電圧でリードを実行すると、誤りビットカウントが増加する。誤りビットカウントがECC回路30により訂正できる誤りビットカウント以上の場合、メモリコントローラ20はリードエラーを検出する。メモリコントローラ20は、リードエラーを検出すると、読み出し電圧値をシフトさせてリトライリード(Retry Read)を実行するようにNANDメモリ40に指示する。メモリコントローラ20は、リードエラーが検出されなくなるまで、リトライリードを実行するようにNANDメモリ40に指示する。誤りビットカウントが多いと、エラー訂正やリトライリードを実行するためレイテンシが増加し、リード性能が低下する。
【0064】
リトライリードを所定回数実行しても、リードエラーが検出される場合、リード失敗とし、エラー処理が実行される。
【0065】
メモリコントローラ20は、SA~SG毎に、既定値を管理するととともに、電荷量の変化に対応して変化した最適値を管理する。
【0066】
図5は、RAM24に記憶される読み出し電圧情報36aの一例を説明するための図である。読み出し電圧情報36aは、既定値テーブル50と最適値テーブル52を含む。
【0067】
図6は、既定値テーブル50の一例を説明するための図である。メモリシステム12の出荷前に、製造者によりメモリセル毎の閾値分布が調べられる。隣接する2つの閾値分布の交わる点の電圧が既定値VA0~VG0とされる。既定値テーブル50は、7つのSA~SGそれぞれの既定値VA0~VG0を記憶する。
図6は、1つのメモリセルの既定値を示す。複数のメモリセルの夫々に対して既知値テーブル50が設けられている。または、複数のメモリセルを単位として既定値テーブル50が設けられてもよい。
【0068】
図7は、最適値テーブル52の一例を説明するための図である。メモリセルにチャージされている電荷量が変化すると、出荷前に決定した既定値でリードを実行すると、誤りビットカウントが増加する。多値化セルにおいて、誤りビットカウントを抑えるためには、ステートの最適値を正しく調べることが重要である。メモリシステム12の出荷後、最適電圧推定モジュール28aがメモリセル毎の閾値分布を調べ、推定器38が7つのSA~SGそれぞれの読み出し電圧の最適値VAs~VGsを推定する。最適値テーブル52は、7つのSA~SGそれぞれの最適値VAs~VGsを記憶する。
図7は、1つのメモリセルの最適値を示す。複数のメモリセルの夫々に対して最適値テーブル52が設けられている。または、複数のメモリセルを単位として最適値テーブル52が設けられてもよい。
【0069】
図8は、最適電圧推定モジュール28aの構成の一例を説明するための図である。最適電圧推定モジュール28aは、リファレンスリード実行部60、リファレンスリード結果処理部62、及び差分ビットカウント列絞り込み部64を備える。差分ビットカウント列絞り込み部64の出力信号は推定器38に入力される。以下、差分ビットカウント列絞り込み部64は、単に絞り込み部64とも称される
図9は、最適電圧推定モジュール28aの処理の一例を説明するためのフローチャートである。メモリセルの読み出し電圧であるSA~SGの最適値は、時間の経過とともに変化し、適正な読み出し電圧が変化することがある。最適電圧推定モジュール28aは、推定器38を用いて、適時、SA~SGの最適値、すなわち読み出し電圧の最適値を推定し、最適値テーブル52を更新する。
【0070】
最適値テーブル52の更新するタイミングになると、あるいはメモリシステム12がホスト装置14から最適値の更新を指示するコマンド受信すると、リファレンスリード実行部60はリファレンスリードを実行する(S12)。具体的には、リファレンスリード実行部60は、1つのローのメモリセルに対してある電圧を印加して、ビットカウントを求める。リファレンスリード実行部60は、印加電圧を変更して、ビットカウントを再び求める。リファレンスリード実行部60は、上記処理を繰り返して、複数の印加電圧に対する複数のビットカウント、すなわちビットカウント列を求める。リファレンスリード実行部60は、ビットカウント列を、印加した電圧を特定する値とともにRAM24に書き込む。
【0071】
リファレンスリードを実行する電圧の間隔は、各レベルについて10数回程度のリファレンスリードが実行されるように設定される。
【0072】
図10は、リファレンスリードの一例を説明するための図である。
図10において、横軸は、リファレンスリードにおいてメモリセルに印加される電圧に対応する読み出し電圧を表し、縦軸は、或るビット値(データ値)を示すメモリセルの数を表す。
図10の横軸の読み出し電圧は、
図4の横軸の閾値電圧に対応する。
図11~
図15の横軸についても同様である。縦線(破線)がリードを行った電圧を示す。太線は、レベルEr~レベルGの閾値分布が重ねられた合成閾値分布を示す。合成閾値分布の谷(極小値)の電圧はステートに対応する。最適電圧推定モジュール28aは、各レベルの閾値分布を測定することは出来ないので、合成閾値分布の谷を求めることはできない。しかし、後述するように、差分ビットカウント列は合成閾値分布と見做すことができる。そのため、最適電圧推定モジュール28aは、差分ビットカウント列からステートの最適値を推定する。
【0073】
図11は、ビットカウント列の一例を説明するための図である。リファレンスリード実行部60は、各電圧に対してオンになるメモリ数をカウントして、ビットカウント列を求める。或るステートより高い読み出し電圧がメモリセルに印加されると、この或るステートより低い閾値電圧のメモリセルはオンとなる。そのため、読み出し電圧が増加するとオンとなるメモリセルの数は増加していく。メモリセルの閾値電圧が集中して分布する電圧範囲では読み出し電圧の増大に伴ってオンとなるメモリセル数が多いため、差分ビットカウントの値は大きくなる。逆に、メモリセルの閾値電圧がわずかに分布する電圧範囲では読み出し電圧の増大に伴ってオンとなるメモリセル数は比較的少ないため、差分ビットカウントの値も小さい。そのため、ビットカウントの差分を計算することはメモリセルの閾値電圧の分布を捉えることに有効である。リファレンスリード実行部60は、ビットカウント列をリファレンスリード結果処理部62に送信する。
【0074】
図9に示すように、リファレンスリード結果処理部62は、ビットカウントの差分からなる差分ビットカウント列を求める(S14)。差分ビットカウント列の求め方の一例は、隣接する2つの電圧に対応する2つのビットカウントの差を計算することである。リファレンスリード結果処理部62は、各ビットカウントについて、低電圧側で最も近いビットカウントとの差分ビットカウントを計算する。リファレンスリード結果処理部62は、各ビットカウントについて計算した複数の差分ビットカウント、すなわち差分ビットカウント列を求める。
【0075】
図12は、差分ビットカウント列の一例を説明するための図である。リファレンスリードを実行する電圧の間隔が狭く設定されている場合、差分ビットカウント列は、
図10に示すレベルEr~レベルGの閾値分布が重ねられた合成閾値分布に略等しい。リファレンスリード結果処理部62は、差分ビットカウント列を絞り込み部64に送信する。
【0076】
図9に示すように、絞り込み部64は、差分ビットカウント同士の大小関係などに基づき、差分ビットカウント列から、推定したいステートに関する所定個数の差分ビットカウントを抽出し、抽出した差分ビットカウントからなる絞り込み差分ビットカウント列を求める(S16)。所定個数は、1以上の任意の整数である。所定個数は、推定したいステートによって、異なる個数としてもよい。例えば、ステートCの最適値を推定する際は、所定個数を3個とし、ステートDの最適値を推定する際は、所定個数を4個とし、ステートA、Gの最適値を推定する際は、所定個数を6個としてもよい。
【0077】
差分ビットカウント列の絞り込みの第1例では、絞り込み部64は、差分ビットカウント列の中のピーク(極大値)の差分ビットカウントを検出する。絞り込み部64は、隣接する2つのピークの差分ビットカウント間の差分ビットカウントを抽出する。絞り込み部64は、抽出した差分ビットカウントからなる絞り込み差分ビットカウント列を生成する。
【0078】
ステートの最適値は、差分ビットカウント列の谷の差分ビットカウントの電圧に相当する。隣接するピークの間には谷が存在するので、2つのピークの差分ビットカウント間の差分ビットカウントからなる絞り込み差分ビットカウント列は谷の差分ビットカウントを含む。2つのピーク間の差分ビットカウント列(絞り込み差分ビットカウント列)を推定器38に入力すると、推定器38が谷を検出する精度が上がり、ステートの最適値を推定する精度が上がる。
【0079】
ピークを検出するために、絞り込み部64は、3つの隣接する差分ビットカウントの大小関係を調べる。3つの差分ビットカウントの電圧の中の中間の電圧に対応する差分ビットカウントが、最も低い電圧に対応する差分ビットカウントより大きく、中間の電圧に対応する差分ビットカウントが、最も高い電圧に対応する差分ビットカウントより大きい場合、絞り込み部64は、中間の電圧に対応する差分ビットカウントをピークとする。絞り込み部64は、3つの差分ビットカウントの組み合わせをずらしながら、3つの差分ビットカウントの大小関係を順次調べる。これにより、絞り込み部64は、差分ビットカウント列の中の7個のピークを検出する。
【0080】
図13は、絞り込み部64による絞り込みの第1例を説明するための図である。絞り込み部64は、差分ビットカウントの7個のピーク(
図13において黒丸で表示)を検出する。
【0081】
図14は、絞り込み部64による絞り込み結果の一例を説明するための図である。絞り込み部64は、或るステートの最適値を推定する際は、或るステートの既定値より高電圧側で最も低い電圧に対応する差分ビットカウントのピークと或るステートの既定値より低電圧側で最も高い電圧に対応する差分ビットカウントのピークとの間に位置する複数の差分ビットカウントを抽出する。絞り込み部64は、抽出した複数の差分ビットカウントからなる或るステートの絞り込み差分ビットカウント列を求める。絞り込み部64は、7個のステートに関する絞り込み差分ビットカウント列を推定器38に送信する。
【0082】
図9に示すように、推定器38の推定の第1例は、絞り込み差分ビットカウント列のみを用いて、ステートの最適値を推定することである。推定器38は、あるステートに関する絞り込み差分ビットカウント列に基づいてあるステートの最適値を推定する(S18)。
【0083】
推定器38は、絞り込み差分ビットカウント列に対するステートの最適値を出力するDNN(ディープニューラルネットワーク)でもよい。DNNは、絞り込み差分ビットカウント列に対して係数行列を掛け算する行列演算回路を有する。
図14に示すように、絞り込み差分ビットカウント列が5個の差分ビットカウントを含む場合、推定器38は、例えば、1×5の差分ビットカウント列[1253,1156,984,962,1056]に5×1の係数行列を掛け算してステートの最適値を推定する。種々のサイズの差分ビットカウント列に使われる係数行列はROM26に格納されている。DNNの重み係数や活性化関数はROM26に格納されている。
【0084】
図15は、推定器38が推定したステートの最適値を説明するための図である。推定器38は、絞り込み差分ビットカウント列に基づいて、差分ビットカウント列の谷に対応する電圧を求めることができる。
【0085】
(第1実施形態の変形例)
次に、第1実施形態に係る最適電圧推定処理の各処理の変形例を説明する。
【0086】
差分ビットカウント列の求め方の他の2例を説明する。
【0087】
差分ビットカウント列の求め方の第2例では、リファレンスリード結果処理部62は、第1例に従って差分ビットカウント列を求めた後、差分ビットカウント列に対して任意のフィッティング手法を適用する。具体的には、リファレンスリード結果処理部62は、測定した差分ビットカウントの間に新たな差分ビットカウントを補間する。
【0088】
図16は、リファレンスリード結果処理部62の差分ビットカウント列を求める第2例を説明するための図である。
図16(a)は、リファレンスリードの一例を説明するための図である。
図16(b)は、ビットカウント列の一例を説明するための図である。
図16(c)は、補間前の差分ビットカウント列の一例を説明するための図である。
図16(d)は、補間後の差分ビットカウント列の一例を説明するための図である。
図16(a)~
図16(d)の横軸が示すものは、
図10のそれと同じである。
【0089】
ここでは、リファレンスリードにおける印加電圧の候補を低い方から順番にV0,V1,V2,V3,…とする。リファレンスリードは、4個の印加電圧の候補毎に1回実行されるとする。リファレンスリードを実行した電圧をV0,V4,V8,V12,V16,…とする。すなわち、ビットカウント列と差分ビットカウント列に対応する電圧はV0,V4,V8,V12,V16,…である。リファレンスリード結果処理部62は、差分ビットカウント列に補間処理を行い、電圧V0,V2,V4,V6,V8,V10,V12,V14,V16,…に対応する差分ビットカウント列を求める。すなわち、差分ビットカウント列は、2個の実行電圧の候補毎に求められる。
【0090】
リファレンスリードを実行する電圧の数が多いと、リファレンスリードの実行時間が長くなる。リファレンスリード結果処理部62が第2例に従って動作する場合、リファレンスリードを実行する電圧の数は第1例に比べて少ない。
図16(a)に示すリファレンスリードを実行する電圧の間隔は、
図10に示すリファレンスリードを実行する電圧の間隔より長い。リファレンスリードを実行する電圧の間隔を長くすると、リファレンスリードの実行回数は減少し、実行時間は短くなる。しかし、リファレンスリードを実行する電圧の間隔を長くすると、
図16(b)に示すビットカウント列の間隔と、
図16(c)に示す差分ビットカウント列の間隔も長くなり、最適電圧の推定精度に悪影響を与える可能性がある。
【0091】
リファレンスリード結果処理部62は、差分ビットカウント列に対して任意のフィッティング手法を適用する。より具体的には、リファレンスリード結果処理部62は、測定した差分ビットカウントの間に新たな差分ビットカウントを補間し、リファレンスリードを実行した電圧より多くの電圧に対する差分ビットカウントからなる差分ビットカウント列(
図16(d))を求める。これにより、推定精度を低下することなく、推定時間を短くすることができる。
【0092】
差分ビットカウント列の求め方の他の3例を説明する。差分ビットカウント列の求め方の第3例では、リファレンスリード結果処理部62は、ビットカウント列に対して任意のフィッティング手法を適用する。具体的には、リファレンスリード結果処理部62は、測定したビットカウントの間に新たなビットカウントを補間し、リファレンスリードを実行した電圧より多くの電圧に対するビットカウントからなるビットカウント列を求める。この後、リファレンスリード結果処理部62は、第1例又は第2例に従って差分ビットカウント列を求め、リファレンスリードを実行した電圧より多くの電圧に対する差分ビットカウントからなる差分ビットカウント列を求める。
【0093】
図17は、リファレンスリード結果処理部62の差分ビットカウント列を求める第3例を説明するための図である。
図17(a)は、リファレンスリードの一例を説明するための図である。
図17(b)は、補間前のビットカウント列の一例を説明するための図である。
図17(c)は、補間後のビットカウント列の一例を説明するための図である。
図17(d)は、差分ビットカウント列の一例を説明するための図である。
図17(a)~
図17(d)の横軸が示すものは、
図10のそれと同じである。
【0094】
第3例によっても、推定精度を低下することなく、推定時間を短くすることができる。
【0095】
絞り込み部64による差分ビットカウント列の絞り込みの他の例を説明する。他の例は、推定器を利用する例である。絞り込み部64は、差分ビットカウントからステートの最適値を求める推定器38と同様な絞り込み推定器を用いて、差分ビットカウント列から所定個数の要素からなる差分ビットカウント列を求めてもよい。
【0096】
図18は、差分ビットカウント列の絞り込みの他の例を説明するための図である。絞り込み推定器は、求めたいステートの既定値を中心とした左右の差分ビットカウントのヒストグラム情報に基づいて絞り込み範囲を決定する。
【0097】
図18(a)はメモリセルの閾値分布の一例を説明するための図である。
図18(b)は、全レベルの閾値分布が重ねられた合成閾値分布と差分ビットカウント(丸印)を示す。
図18(c)は、リファレンスリード実行部60から出力されるビットカウント列の一例を説明するための図である。
図18(a)~
図18(c)の横軸が示すものは、
図10のそれと同じである。絞り込み推定器は、ビットカウントが総ビットカウント(メモリセル数)の1/8、2/8、3/8、4/8、5/8、6/8、7/8それぞれに最も近いビットカウントを求める。リファレンスリードの対象となる複数のメモリセルにおいて、各レベルに属するメモリセル数がおおよそ均等であるので、絞り込み推定器は、それらに夫々対応する7個の電圧を7個のステートの仮の最適値とする。絞り込み推定器は、1つのステートの仮の最適値を中心として、読み出し電圧の大きい側と小さい側それぞれに所定個の差分ビットカウントを選択する。所定個を5個とすると、合計11個の差分ビットカウントが選択される。
図18(c)では、総ビットカウントの6/8に最も近いビットカウントに対応する電圧を、レベルE、Fを区別するステートFの仮の最適値とする。
【0098】
以上説明したように、第2例によれば、絞り込み部64は、差分ビットカウント列のピークを検出することなく、最適値の推定に有用な絞り込み差分ビットカウント列を求めることができる。
【0099】
ステートの最適値の推定の他の例を説明する。推定の第2例によれば、絞り込み部64が絞り込み差分ビットカウント列を推定器38に入力するとともに、CPU28は、NANDメモリ40に固有の情報も推定器38に入力する。固有情報の例は、CPU28が管理している読み出し対象単位のWE(ライト/イレーズ)サイクル数、読み出し対象単位が含まれるメモリチップのロット情報、メモリチップのウェハー内の座標、温度である。
【0100】
これにより、推定器38の推定精度が向上する。
【0101】
第1実施形態によれば、複数の電圧に対するビットカウント列が求められ、ビットカウント列から合成閾値分布に相当する差分ビットカウント列が求められる。差分ビットカウント列の中の推定したいステートに対応する谷を含む範囲が抽出され、絞り込み差分ビットカウント列が求められる。絞り込み差分ビットカウント列は最適値に対応する谷を含むので、絞り込み差分ビットカウント列に基づいて、ステートの最適値が高精度で推定される。すなわち、第1実施形態によれば、リード性能を向上することができる。
【0102】
(第2実施形態)
第2実施形態の構成は、第1実施形態と同じであるので、詳細な説明は省略する。第2実施形態に係る最適電圧推定処理は第1実施形態と異なる。第1実施形態では、各ステートの最適値を任意の順で推定した。各ステートの最適値の推定の精度は、一律ではない。閾値分布の乱れの影響が大きいレベルを識別するステートは変動し易く、推定精度が悪い。例えば、複数のレベルの集合の端にあるレベルEr、Aを区別するステートAや、レベルF、Gを区別するステートGは、閾値分布の乱れの影響を受けやすいので、推定精度は低い。例えば、複数のレベルの集合の中央にあるステートDは最も推定精度が高い。メモリシステム12の出荷前に、各ステートの推定の精度が調べられる。例えば、ステートDが最も推定精度が高く、以下ステートC、E、B、F、G、Aの順で推定精度が低下する。推定精度の順を示す推定順序情報[SD,SC,SE,SB,SF,SG,SA]は、ROM26に格納される。
【0103】
第2実施形態に係る推定器38は、推定順序情報に従った順で最適電圧を推定する。
【0104】
図19は、第2実施形態に係る最適電圧推定モジュール28aの処理の一例を説明するためのフローチャートである。
【0105】
最適値テーブル52の更新するタイミングになると、あるいはメモリシステム12がホスト装置14から更新を指示するコマンド受信すると、最適電圧推定モジュール28aは、ループインデックスiを1とし、最適値配列SI(初期値=[0,0,0,0,0,0,0])を生成する(S52)。最適値配列SIは、ステートD、C、E、B、F、G、Aの最適値の配列である。
【0106】
最適電圧推定モジュール28aは、ループインデックスiが8未満であるか否かを判定する(S54)。
【0107】
ループインデックスiが8である場合(S54:NO)、最適電圧推定モジュール28aは動作を終了する。
【0108】
ループインデックスiが8未満である場合(S54:YES)、最適電圧推定モジュール28aは、リファレンスリード実行部60を動作させる。リファレンスリード実行部60は、第1実施形態と同様に、リファレンスリードを実行する(S56)。
【0109】
リファレンスリード結果処理部62は、第1実施形態と同様に、差分ビットカウント列を求める(S58)。
【0110】
絞り込み部64は、推定順序情報のi番目のステートの最適値を推定するために、差分ビットカウント列から所定個数n(nは1以上の正整数)の差分ビットカウントを抽出し、抽出した差分ビットカウントからなる絞り込み差分ビットカウント列Ri=(r1,r2,…rn)を求める(S60)。
【0111】
推定器38は、絞り込み差分ビットカウント列Riと最適値配列SIに基づいて、第1実施形態と同様に、i番目のステートの最適値Biを推定する(S62)。
【0112】
最適電圧推定モジュール28aは、推定器38が推定した最適値Biを最適値配列SIのi番目の要素とし、最適値配列SIを更新するとともに、ループインデックスiを1つ増加する(S64)。
【0113】
その後、最適電圧推定モジュール28aは、ループインデックスiが8未満であるか否かを判定する(S54)。
【0114】
図20は、
図19のフローチャートに従う動作の第1例を説明するための図である。図示の便宜上、絞り込み差分ビットカウント列の差分ビットカウント数は5個であるとする。推定器38は、推定するステート毎に備えられているとする。
【0115】
先ず、ステートDの最適値の推定が行なわれる。最適電圧推定モジュール28aは、ステートDの推定のための絞り込み差分ビットカウント列R1をステートD用の推定器38dに入力する。推定器38dは、差分ビットカウント列R1(5個の差分ビットカウント)に基づいてステートDの最適値B1を求める。推定器38dは、ステートDの最適値B1を最適電圧推定モジュール28aに送信する。最適電圧推定モジュール28aは、ステートDの最適値B1を最適値配列SIに書き込む(SI=[B1,0,0,0,0,0,0])。
【0116】
次に、ステートCの最適値の推定が行なわれる。最適電圧推定モジュール28aは、ステートCの推定のための絞り込み差分ビットカウント列R2及び最適値配列SI(=[B1,0,0,0,0,0,0])をステートC用の推定器38cに入力する。推定器38cは、絞り込み差分ビットカウント列R2とステートDの最適値B1の6個の入力データに基づいてステートCの最適値B2を求める。推定器38cは、ステートCの最適値B2を最適電圧推定モジュール28aに送信する。最適電圧推定モジュール28aは、ステートCの最適値B2を最適値配列SIに書き込む(SI=[B1,B2,0,0,0,0,0])。
【0117】
次に、ステートEの最適値の推定が行なわれる。最適電圧推定モジュール28aは、ステートEの推定のための絞り込み差分ビットカウント列R3及び最適値配列SI(=[B1,B2,0,0,0,0,0])をステートE用の推定器38eに入力する。推定器38eは、絞り込み差分ビットカウント列R3とステートDの最適値B1とステートCの最適値B2との7個の入力データに基づいてステートEの最適値B3を求める。推定器38cは、ステートEの最適値B3を最適電圧推定モジュール28aに送信する。最適電圧推定モジュール28aは、ステートEの最適値B3を最適値配列SIに書き込む(SI=[B1,B2,B3,0,0,0,0])。
【0118】
以下、同様に、ステートB、F、Gの最適値が求められる。ステートGの最適値B6が求められると、最適値配列SIは[B1,B2,B3,B4,B5,B6,0]となる。
【0119】
最後に、ステートAの最適値の推定が行なわれる。最適電圧推定モジュール28aは、ステートAの推定のための絞り込み差分ビットカウント列R7及び最適値配列SI(=[B1,B2,B3,B4,B5,B6,0])をステートA用の推定器38aに入力する。推定器38aは、絞り込み差分ビットカウント列R7、ステートDの最適値B1、ステートCの最適値B2、ステートEの最適値B3、ステートBの最適値B4、ステートFの最適値B5、及びステートGの最適値B6の11個の入力データに基づいてステートAの最適値B7を求める。
【0120】
ステートの最適値の推定の順序は、推定精度の高い順である。各ステートの推定器38には、既に推定されたステートの最適値が全て入力される。推定器38の入力データの個数は、ステートの推定精度が低下するにつれて増加する。そのため、推定器38は、閾値分布の乱れの影響が大きいレベルを識別するステートも精度良く推定することができる。
【0121】
図21は、
図19のフローチャートに従う動作の第2例を説明するための図である。第1例(
図20)では、各ステートの推定器38には、既に推定されたステートの最適値が全て入力される。各ステートの推定器38には、同じ個数(
図20の例では5個)の差分ビットカウントからなる絞り込み差分ビットカウント列も入力される。そのため、各ステートの推定器38に入力されるデータの個数は、最適値配列SIに書き込まれた最適値の数が増えると、1個ずつ増加する。第2例は、最適値配列SIに書き込まれた最適値の数が増えても、推定器38に入力されるデータの数は増加しない。
【0122】
第2例では、先ず、ステートDの最適値の推定が、
図20に示した第1例と同様にして行なわれる。最適電圧推定モジュール28aは、ステートDの最適値B1を最適値配列SIに書き込む(SI=[B1,0,0,0,0,0,0])。
【0123】
次に、ステートCの最適値の推定が行なわれる。最適電圧推定モジュール28aは、ステートCの推定のための絞り込み差分ビットカウント列R2及び最適値配列SI(=[B1,0,0,0,0,0,0])をステートC用の推定器38cに入力する。最適電圧推定モジュール28aは、最適値配列SIの最適値の数が増加するにつれて、ステートの推定のための絞り込み差分ビットカウント列の差分ビットカウント数を減少させる。ステートCの推定のための絞り込み差分ビットカウント列R2の差分ビットカウント数は、ステートDの推定のための絞り込み差分ビットカウント列R1の差分ビットカウント数より1個少ない4個である。推定器38cは、絞り込み差分ビットカウント列R2とステートDの最適値B1の5個の入力データに基づいてステートCの最適値B2を求める。推定器38cは、ステートCの最適値B2を最適電圧推定モジュール28aに送信する。最適電圧推定モジュール28aは、ステートCの最適値B2を最適値配列SIに書き込む(SI=[B1,B2,0,0,0,0,0])。
【0124】
次に、ステートEの最適値の推定が行なわれる。最適電圧推定モジュール28aは、ステートEの推定のための絞り込み差分ビットカウント列R3及び最適値配列SI(=[B1,B2,0,0,0,0,0])をステートE用の推定器38eに入力する。ステートEの推定のための絞り込み差分ビットカウント列R3の差分ビットカウント数は3である。推定器38eは、絞り込み差分ビットカウント列R3とステートDの最適値B1とステートCの最適値B2との5個の入力データに基づいてステートEの最適値B3を求める。推定器38eは、ステートEの最適値B3を最適電圧推定モジュール28aに送信する。最適電圧推定モジュール28aは、ステートEの最適値B3を最適値配列SIに書き込む(SI=[B1,B2,B3,0,0,0,0])。
【0125】
以下、同様に、ステートB、F、Gの最適値が求められる。ステートGの最適値B6が求められると、最適値配列SIは[B1,B2,B3,B4,B5,B6,0]となる。
【0126】
最後に、ステートAの最適値の推定が行なわれる。最適電圧推定モジュール28aは、最適値配列SI(=[B1,B2,B3,B4,B5,B6,0])をステートA用の推定器38aに入力する。最適電圧推定モジュール28aは、ステートEの推定のための絞り込み差分ビットカウント列は作成しない。推定器38aは、ステートDの最適値B1、ステートCの最適値B2、ステートEの最適値B3、ステートBの最適値B4、ステートFの最適値B5、及びステートGの最適値B6の6個の入力データに基づいてステートAの最適値B7を求める。
【0127】
第2例では、最適電圧推定モジュール28aは、最適値配列SIの最適値数が増えると、絞り込み差分ビットカウント列の差分ビットカウント数を減少させる。このため、推定するステート数が増えても、推定器38の入力個数が増加することが無い。なお、推定器38aに6個の最適値が入力されているが、最初に推定されたステートDの最適値B1を入力せず、常に5個の最適値が入力されるように構成してもよい。
【0128】
図22は、
図19のフローチャートに従う動作の第3例を説明するための図である。第1例(
図20)では、各ステートの推定器38には、既に推定されたステートの最適値が全て入力される。第3例では、既に推定されたステートの最適値が必ず後の推定に使われるとは限らない。第3例では、各推定器38に入力される絞り込み差分ビットカウント列の差分ビットカウント数は一定とするが、第2例のように推定したステートの数が増えるにつれて減少させてもよい。
【0129】
先ず、ステートDの最適値の推定が、
図20に示した第1例と同様にして行なわれる。最適電圧推定モジュール28aは、ステートDの最適値B1を最適値配列SIに書き込む(SI=[B1,0,0,0,0,0,0])。
【0130】
次に、ステートCの最適値の推定が行なわれる。最適電圧推定モジュール28aは、ステートCの推定のための絞り込み差分ビットカウント列R2及び最適値配列SI(=[B1,0,0,0,0,0,0])をステートC用の推定器38cに入力する。推定器38cは、絞り込み差分ビットカウント列R2とステートDの最適値B1の6個の入力データに基づいてステートCの最適値B2を求める。推定器38cは、ステートCの最適値B2を最適電圧推定モジュール28aに送信する。最適電圧推定モジュール28aは、ステートCの最適値B2を最適値配列SIに書き込まない(SI=[B1,0,0,0,0,0,0])。
【0131】
次に、ステートEの最適値の推定が行なわれる。最適電圧推定モジュール28aは、ステートEの推定のための絞り込み差分ビットカウント列R3及び最適値配列SI(=[B1,0,0,0,0,0,0])をステートE用の推定器38eに入力する。推定器38eは、絞り込み差分ビットカウント列R3とステートDの最適値B1の6個の入力データに基づいてステートEの最適値B3を求める。推定器38cは、ステートEの最適値B3を最適電圧推定モジュール28aに送信する。最適電圧推定モジュール28aは、ステートEの最適値B3を最適値配列SIに書き込む(SI=[B1,0,B3,0,0,0,0])。
【0132】
以下、同様に、ステートB、F、Gの最適値が求められる。ステートB、F、Gの最適値S4,S5,S6の中のいくつか、あるいは全てが最適値配列SIに書き込まれる。ステートGの最適値B6が求められた後、最適値配列SIは[B1,0,B3,B4,B5,0,0]であるとする。
【0133】
最後に、ステートAの最適値の推定が行なわれる。最適電圧推定モジュール28aは、ステートAの推定のための絞り込み差分ビットカウント列R7及び最適値配列SI(=[B1,0,B3,B4,B5,0,0])をステートA用の推定器38aに入力する。推定器38aは、絞り込み差分ビットカウント列R7、ステートDの最適値B1、ステートEの最適値B3、ステートBの最適値B4、ステートFの最適値B5の9個の入力データに基づいてステートAの最適値B7を求める。
【0134】
以上説明したように、第2実施形態によれば、推定器38は、絞り込み差分ビットカウント列に加えて、あるいは代えて既に推定したステートの最適値に基づいて最適値を推定するので、ステートの最適値を高精度で推定することができる。
【0135】
第2実施形態も、第1実施形態の変形例が適用可能である。例えば、
図16乃至
図18に示す変形例は、第2実施形態にも適用可能である。
【0136】
本発明の実施形態によれば、以下のメモリシステム又はリード方法が提供される。
【0137】
(1)夫々が複数ビットのデータを記憶するように構成された複数のメモリセルを備える不揮発性メモリと、
前記不揮発性メモリに電気的に接続されるコントローラと、を具備し、
前記データをリードするための第1数の読み出し電圧の初期値が決められており、
前記コントローラは、
前記第1数より多い第2数の電圧を前記不揮発性メモリに順次印加し、オン又はオフとなるメモリセルの数である第2数のビットカウントを順次求め、
前記第2数のビットカウントの夫々について隣接するビットカウントに対する差である前記第2数の差分ビットカウントを求め、
前記第2数の差分ビットカウントの中から前記第1数の読み出し電圧の中の第1読み出し電圧の初期値に対応する差分ビットカウントを含む前記第2数より少ない第3数の差分ビットカウントを求め、
前記第3数の差分ビットカウントに基づいて前記第1数の読み出し電圧の最適値を推定する、メモリシステム。
【0138】
(2)前記コントローラは、前記第2数の差分ビットカウントを求めた後、隣接する差分ビットカウント間に新たな差分ビットカウントを補間する、(1)記載のメモリシステム。
【0139】
(3)前記コントローラは、前記第2数のビットカウントを求めた後、隣接するビットカウント間に新たなビットカウントを補間する、(1)記載のメモリシステム。
【0140】
(4)前記コントローラは、前記第2数の差分ビットカウントの複数の極大値を検出し、前記第1読み出し電圧の初期値より低電圧側で最も高い電圧に対応する極大値と前記第1読み出し電圧の初期値より高電圧側で最も低い電圧に対応する極大値との間の複数の差分ビットカウントを前記第3数の差分ビットカウントとして求める、(1)乃至(3)のいずれかに記載のメモリシステム。
【0141】
(5)前記コントローラは、前記第2数の差分ビットカウントの中の連続する第1差分ビットカウント、第2差分ビットカウント、及び第3差分ビットカウントについて、前記第2差分ビットカウントが前記第1差分ビットカウントと前記第3差分ビットカウントより大きい場合、前記第2差分ビットカウントを極大値として検出する、(4)記載のメモリシステム。
【0142】
(6)前記コントローラは、前記第2数の差分ビットカウントを入力し、前記第3数の差分ビットカウントを出力する推定部を具備し、
前記推定部は、ニューラルネットワークにおける行列演算回路を具備する、(1)乃至(5)のいずれかに記載のメモリシステム。
【0143】
(7)前記コントローラは、総ビットカウントに対する前記ビットカウントの比に基づいて前記第1数の読み出し電圧に夫々対応する前記第1数のビットカウントを求め、
前記第1数のビットカウントの中の第1ビットカウントと、前記第1ビットカウントより高い電圧側の第1所定数の差分ビットカウントと、前記第1ビットカウントより低い電圧側の第2所定数の差分ビットカウントを前記第3数の差分ビットカウントとして求める、(1)乃至(6)のいずれかに記載のメモリシステム。
【0144】
(8)前記コントローラは、前記第3数の差分ビットカウント及び前記不揮発性メモリの固有情報に基づいて前記第1数の読み出し電圧の最適値を推定する、(1)乃至(6)のいずれかに記載のメモリシステム。
【0145】
(9)前記固有情報は、前記メモリセルのライト/イレーズサイクル数、前記不揮発性メモリのロット情報、前記不揮発性メモリのウェハー内の座標、前記不揮発性メモリの温度を含む、(8)記載のメモリシステム。
【0146】
(10)前記コントローラは、
前記第1数の読み出し電圧の最適値を、推定精度の高い順に順次推定し、
前記第3数の差分ビットカウントに基づいて第1読み出し電圧の第1最適値を推定し、
前記第3数の差分ビットカウントと前記第1最適値に基づいて第2読み出し電圧の第2最適値を推定する、(1)乃至(9)のいずれかに記載のメモリシステム。
【0147】
(11)前記コントローラは、
前記第1数の読み出し電圧の最適値を、推定精度の高い順に順次推定し、
前記第3数の差分ビットカウントに基づいて第1読み出し電圧の第1最適値を推定し、
前記第3数より1つ少ない数の差分ビットカウントと前記第1最適値に基づいて第2読み出し電圧の第2最適値を推定する、(1)乃至(9)のいずれかに記載のメモリシステム。
【0148】
(12)前記コントローラは、
前記第1数の読み出し電圧の最適値を、推定精度の高い順に順次推定し、
前記第3数の差分ビットカウントに基づいて第1読み出し電圧の第1最適値を推定し、
前記第3数の差分ビットカウントと前記第1最適値に基づいて第2読み出し電圧の第2最適値を推定し、
前記第3数の差分ビットカウントと前記第2最適値に基づいて第3読み出し電圧の第2最適値を推定する、(1)乃至(9)のいずれかに記載のメモリシステム。
【0149】
(13)夫々が複数ビットのデータを記憶するように構成された複数のメモリセルを備える不揮発性メモリを具備し、
前記データをリードするための第1数の読み出し電圧の初期値が決められているメモリシステムのリード方法であって、
前記第1数より多い第2数の電圧を前記不揮発性メモリに順次印加し、オン又はオフとなるメモリセルの数である第2数のビットカウントを順次求め、
前記第2数のビットカウントの夫々について隣接するビットカウントに対する差である前記第2数の差分ビットカウントを求め、
前記第2数の差分ビットカウントの中から前記第1数の読み出し電圧の中の第1読み出し電圧の初期値に対応する差分ビットカウントを含む前記第2数より少ない第3数の差分ビットカウントを求め、
前記第3数の差分ビットカウントに基づいて前記第1数の読み出し電圧の最適値を推定する、リード方法。
【0150】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を生成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【0151】
12…メモリシステム、20…メモリコントローラ、24…RAM、28…CPU、28a…最適電圧推定モジュール、32…NANDコントローラ、36…読み出し電圧情報、38…推定器