JP2021149997A - メモリシステム - Google Patents

メモリシステム Download PDF

Info

Publication number
JP2021149997A
JP2021149997A JP2020051579A JP2020051579A JP2021149997A JP 2021149997 A JP2021149997 A JP 2021149997A JP 2020051579 A JP2020051579 A JP 2020051579A JP 2020051579 A JP2020051579 A JP 2020051579A JP 2021149997 A JP2021149997 A JP 2021149997A
Authority
JP
Japan
Prior art keywords
voltage
value
memory
state
memory controller
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2020051579A
Other languages
English (en)
Inventor
万里江 高田
Marie Takada
万里江 高田
政信 白川
Masanobu Shirakawa
政信 白川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2020051579A priority Critical patent/JP2021149997A/ja
Priority to US17/005,273 priority patent/US11322210B2/en
Publication of JP2021149997A publication Critical patent/JP2021149997A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3404Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/30Power supply circuits

Abstract

【課題】メモリシステムの性能を向上する。【解決手段】実施形態のメモリシステムは、複数のメモリセルを含む半導体メモリと、前記半導体メモリに対して、書き込み動作及び読み出し動作を命令するメモリコントローラと、備え、前記メモリコントローラは、第1の電圧を用いた第1の書き込み動作を、前記半導体メモリに実行させ、前記読み出し動作において、前記複数のメモリセルのうち閾値電圧が記憶すべきデータに対応する電圧値より高い閾値電圧を有する第1のメモリセルを検出し、前記第1のメモリセルの検出結果に基づいて、前記第1の書き込み動作の後の第2の書き込み動作に用いられる第2の電圧を設定する。【選択図】図5

Description

実施形態は、メモリシステムに関する。
半導体記憶装置としてのNAND型フラッシュメモリと、半導体記憶装置を制御するメモリコントローラと、を含むメモリシステムが知られている。
米国特許出願公開第2018/90212号明細書 特開2015−133161号公報
高性能のメモリシステムを提供する。
実施形態のメモリシステムは、複数のメモリセルを含む半導体記憶装置と、前記半導体記憶装置に対して、書き込み動作及び読み出し動作を命令するメモリコントローラと、備え、前記メモリコントローラは、第1の電圧を用いた第1の書き込み動作を、前記半導体記憶装置に実行させ、前記読み出し動作において、前記複数のメモリセルのうち閾値電圧が記憶すべきデータに対応する電圧値より高い閾値電圧を有する第1のメモリセルを検出し、前記第1のメモリセルの検出結果に基づいて、前記第1の書き込み動作の後の第2の書き込み動作に用いられる第2の電圧を設定する、
第1の実施形態のメモリシステムの構成を説明するためのブロック図。 第1の実施形態のメモリシステムの構成例を説明するためのブロック図。 第1の実施形態のメモリシステムの構成例を説明するための等価回路図。 第1の実施形態のメモリシステムの構成例を説明するための模式的断面図。 第1の実施形態のメモリシステムの構成例を説明するための図。 第1の実施形態のメモリシステムの構成例を説明するための図。 第1の実施形態のメモリシステムの構成例を説明するための図。 第1の実施形態のメモリシステムの構成例を説明するための図。 第1の実施形態のメモリシステムの動作例を説明するためのブロック図。 第1の実施形態のメモリシステムの動作例を説明するための模式図。 第1の実施形態のメモリシステムの動作例を示すフローチャート。 第1の実施形態のメモリシステムの動作例を示すフローチャート。 第1の実施形態のメモリシステムの動作例を説明するための模式図。 第1の実施形態のメモリシステムの動作例を説明するための模式図。 第1の実施形態のメモリシステムの動作例を説明するための模式図。 第1の実施形態のメモリシステムの動作例を示すフローチャート。 第1の実施形態のメモリシステムの動作例を示すフローチャート。 第1の実施形態のメモリシステムの動作例を説明するための模式図。 第1の実施形態のメモリシステムの動作例を説明するための模式図。 第1の実施形態のメモリシステムの動作例を示すフローチャート。 第2の実施形態のメモリシステムの動作例を示すフローチャート。 第2の実施形態のメモリシステムの動作例を示すフローチャート。 第2の実施形態のメモリシステムの動作例を説明するための模式図。 第2の実施形態のメモリシステムの動作例を説明するための模式図。 第2の実施形態のメモリシステムの動作例を説明するための模式図。 第2の実施形態のメモリシステムの動作例を示すフローチャート。 第3の実施形態のメモリシステムを説明するための図 第3の実施形態のメモリシステムの動作例を示すフローチャート。 第3の実施形態のメモリシステムの動作例を示すフローチャート。 第3の実施形態のメモリシステムの動作例を示すフローチャート。 第4の実施形態のメモリシステムを説明するための図 第4の実施形態のメモリシステムの動作例を示すフローチャート。 第4の実施形態のメモリシステムの動作例を示すフローチャート。 第4の実施形態のメモリシステムの動作例を示すフローチャート。 第5の実施形態のメモリシステムの動作例を示すフローチャート。 実施形態のメモリシステムの変形例を示すフローチャート。 実施形態のメモリシステムの変形例を示すフローチャート。 実施形態のメモリシステムの変形例を示すフローチャート。 実施形態のメモリシステムの変形例を示すフローチャート。 実施形態のメモリシステムの変形例を示すフローチャート。 実施形態のメモリシステムの変形例を示すフローチャート。
以下、図面を参照して実施形態について説明する。尚、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。また、共通する参照符号を有する複数の構成要素を区別する場合、共通する参照符号に添え字を付して区別する。尚、複数の構成要素について特に区別を要さない場合、当該複数の構成要素には、共通する参照符号のみが付され、添え字は付さない。
[実施形態]
(1)第1の実施形態
図1乃至図20を参照して、第1の実施形態のメモリシステム及びその制御方法について説明する。
(a) 構成
(a−1)メモリシステム
第1実施形態に係るメモリシステムの構成について、図1を用いて説明する。
図1に示すように、メモリシステム1は、メモリコントローラ100及びNANDパッケージ群200を含む。メモリコントローラ100とNANDパッケージ群200とは、例えばそれらの組み合わせにより一つのストレージデバイスを構成してもよい。例えば、SDTMカードのようなメモリカード又はSSD(solid state drive)等が、ストレージデバイスとして提供され得る。
メモリコントローラ100は、ホストバスによってホストデバイス2に接続される。
ホストデバイス2は、例えば、デジタルカメラ、パーソナルコンピュータ、スマートフォン、フューチャーフォン、ゲーム機器、無人航空機、又は、サーバ等である。ホストバスは、例えばSDTMインターフェース、SAS(Serial attached SCSI(small computer system interface))、SATA(Serial ATA(advanced technology attachment))、PCIe(Peripheral component interconnect express)、又はNVMe(Non‐volatile memory express)に従ったバスである。尚、メモリコントローラ100は、無線通信によって、ホストデバイス2に接続されてもよい。
メモリコントローラ100は、NANDパッケージ群200を制御する。メモリコントローラ100は、ホストデバイス2から受けた命令に応答して、NANDパッケージ群200にアクセスする。
メモリコントローラ100は、ある規格(又は仕様)に基づいたデータ転送方式のバスによって、NANDパッケージ群200に接続される。
NANDパッケージ群200は、半導体記憶装置(例えば、不揮発性半導体記憶装置)である。NANDパッケージ群200は、複数のチャネルCH(CH0、CH1、…)を含む。複数のチャネルCHの各々は、対応するバスによって、メモリコントローラ100に対して個別に接続される。NANDパッケージ群200内のチャネル数は、任意の数が適用可能である。
複数のチャネルCHの各々は、複数のチップCP(CP0,CP1,…)を含む。複数のチップCPの各々は、例えば、NANDフラッシュメモリ(不揮発性半導体メモリデバイス)10としての機能を有する。尚、チャネルCH内のチップ数は、任意の数が適用可能である。この構成は、図示されない他のチャネルCHにおいても同様である。NANDフラッシュメモリ10(チップCP)の構成については、後述する。
尚、以下において、NANDフラッシュメモリ10は、簡略化のために、フラッシュメモリ10と表記する場合もある。
(a−2) メモリコントローラの構成
図1を用いて、メモリコントローラ100の構成の詳細について説明する。
メモリコントローラ(例えば、NANDコントローラともよばれる)100は、ホストインターフェース回路110、メモリ120、プロセッサ(CPU)130、バッファメモリ140、NANDインターフェース回路150、ECC回路160、NANDコントローラ群170、及び電圧補正回路180などを含む。
メモリコントローラ100は、例えば、SoC(System on a chip)である。尚、以下に説明されるメモリコントローラ100の各部110〜170の機能は、ハードウェア、又は、ハードウェアとファームウェア(ソフトウェア)との組合せによって、実現可能である。電圧補正回路180は、特に記載する場合を除き、ファームウェアとは独立して機能し得るハードウェア構成によって実現可能であるものとする。
ホストインターフェース回路110は、ホストバスを介してホストデバイス2と接続される。ホストインターフェース回路110は、ホストデバイス2から受信した命令及びデータを、それぞれプロセッサ130及びバッファメモリ140に転送する。またプロセッサ130の命令に応答して、バッファメモリ140内のデータをホストデバイス2へ転送する。
メモリ(例えば、RAM)120は、プロセッサ130の作業領域(ワークメモリ)として使用される。メモリ120は、NANDパッケージ群200を管理するためのファームウェア、後述する電圧情報テーブルTBLのような各種のテーブルTBL,TBLz等を保持する。メモリ120は、例えばDRAM又はSRAM等のメモリデバイス(例えば、揮発性半導体メモリデバイス)である。
プロセッサ130は、メモリコントローラ100全体の動作を制御する。
例えば、プロセッサ130は、ホストデバイス2からの書き込み命令を受けた場合、書き込み命令に応答して、NANDコントローラ群170を制御し、書き込み命令をNANDコントローラ群170に発行させる。プロセッサ130は、ホストデバイス2からの読み出し命令を受けた場合、読み出し命令に応答して、NANDコントローラ群170を制御して、読み出し命令をNANDコントローラ群170に発行される。以下において、ホストデバイス2からの指示に基づく読み出し処理は、ホストリード処理ともよばれる。プロセッサ130は、ホストデバイス2からの消去命令を受けた場合、消去命令に応答して、NANDコントローラ群170を制御し、消去命令をNANDコントローラ群170に発行される。
プロセッサ130は、ホストデバイス2からの命令に依らずに、NANDコントローラ群170を制御して、NANDパッケージ群200を管理するための様々な内部処理を実行させることができる。例えば、プロセッサ130は、メモリシステム1内における内部処理を、NANDコントローラ群170及びNANDパッケージ群200に実行させ得る。
バッファメモリ140は、書き込みデータ、読み出しデータ、及びECC回路160によって誤り訂正された読み出しデータ(以下では、期待データともよばれる)を、一時的に保持する。
NANDインターフェース回路150は、NANDバスを介してNANDパッケージ群200に接続される。NANDインターフェース回路150は、NANDコントローラ群170とNANDパッケージ群200との間の通信を制御する。NANDインターフェース回路150は、プロセッサ130からの命令に基づき、後述するNANDインターフェースに基づく各種信号を、NANDパッケージ群200に送る、及びNANDパッケージ群200から受ける。
ECC回路160は、NANDパッケージ群200に記憶されるデータに関する誤り検出処理及び誤り訂正処理を行う。
ECC回路160は、データの書き込み時に、誤り訂正符号を生成し、生成した誤り訂正符号を書き込みデータに付与する。ECC回路160は、データの読み出し処理時に、誤り訂正符号を復号し、誤りビットの有無を検出する。ECC回路160は、誤りビットが読み出しデータから検出された際に、その誤りビットの位置を特定し、特定された誤りを訂正する。
以下において、このようなECC回路160によって実行されるデータ内の誤りの検出及び訂正は、ECC処理とよばれる。
誤り訂正の方法は、例えば、硬判定復号(Hard bit decoding)及び軟判定復号(Soft bit decoding)を含む。硬判定復号に用いられる硬判定復号符号としては、例えば、BCH(Bose‐Chaudhuri‐Hocquenghem)符号やRS(Reed‐Solomon)符号等が、用いられ得る。軟判定復号に用いられる軟判定復号符号としては、例えば、LDPC(Low Density Parity Check)符号等が、用いられ得る。
NANDコントローラ群170は、プロセッサ130からの命令に基づき、NANDパッケージ群200との間で送受信されるコマンド及びアドレス等を生成する。NANDコントローラ群170は、例えば、ホストデバイス2からのデータの読み出し命令に応じて、NANDインターフェースに基づく読み出しコマンドをNANDパッケージ群200に対して発行する。
NANDコントローラ群170は、例えば、ホストデバイス2からの命令に依らず、NANDインターフェースに基づく読み出しコマンドをNANDパッケージ群200に対して発行し得る。
NANDコントローラ群170は、複数のNANDコントローラ171,172,…を含む。NANDコントローラ171,172,…はそれぞれ、NANDパッケージ群200内のチャネルCH0、CH1、…に対応して設けられる。NANDコントローラ171,172,…のそれぞれ、対応するチャネルCH0,CH1,…との間の通信を制御するように構成される。
電圧補正回路180は、NANDパッケージ群200内のNANDフラッシュメモリに用いられる複数の電圧の補正量(シフト量)を算出するように構成される。本実施形態において、電圧補正回路180は、書き込み動作に用いられる各種の電圧の補正量を、計算できる。
電圧補正回路180は、例えば、NANDパッケージ群200からの読み出しデータ(以下では、誤り訂正前読み出しデータとよばれる)を受ける。電圧補正回路180は、ECC回路160から誤り訂正後読み出しデータを受ける。誤り訂正後読み出しデータは、ECC回路160によって読み出しデータに対して誤り訂正処理を施した後のデータである。電圧補正回路180は、誤り訂正前読み出しデータ及び誤り訂正後読み出しデータに基づき、電圧の補正量を算出し、算出した補正量をメモリ120に転送して保持させる。例えば、電圧補正回路180は、プログラム電圧の初期値IVPGMの補正量、ステップ電圧dVPGMの補正量を、算出できる。電圧補正回路180の構成の詳細については、後述する。
以上の構成を用いて、メモリコントローラ100は、NANDパッケージ群200(NANDフラッシュメモリ10)に、書き込み動作、読み出し動作、消去動作及びパトロール動作などを命令する。パトロール動作は、ホストデバイス2からの命令なしに、あるサイクルでフラッシュメモリ10に実行される動作である。パトロール動作は、少なくとも読み出し動作及びECC処理を含む。
(a−3) NANDフラッシュメモリの構成
図2を参照して、NANDフラッシュメモリのチップの構成について、説明する。図2において、メモリコントローラ100とチャネルCH0との接続関係と、チャネルCH0内の1つのチップCP0の構成と、が一例として示される。
メモリコントローラ100とチャネルCH0との接続関係について説明する。尚、メモリコントローラ100と他のチャネルCH1等との接続関係は、メモリコントローラ100とチャネルCH0との接続関係と実質的に同じであるため、説明を省略する。
図2に示すように、チャネルCH0内の各チップ10は、メモリコントローラ100とNANDバスを介して接続される。各チップCPは、NANDインターフェースに基づく信号を、送る及び受ける。
NANDインターフェースの信号の具体例は、チップイネーブル信号CEn(CE0n、CE1n、…)、アドレスラッチイネーブル信号ALE、コマンドラッチイネーブル信号CLE、ライトイネーブル信号WEn、リードイネーブル信号REn、レディ・ビジー信号RBn(RB0n、RB1n、…)、及び入出力信号DQである。
信号CE0n,CE1n,…のそれぞれは、対応するチップ10−0,10−1,…に個別に入力される。信号RBn0,RBn1,…のそれぞれは、対応するチップ10から個別に出力される。信号ALE,CLE,WEn,REn,DQは、同一のチャネルCH0内の各チップCPに対して共通して入力される。
信号CE0n,CE1n,…のそれぞれは、対応するチップ10−0,10−1,…をイネーブルにするための信号である。信号CLEは、各チップCPへの入力信号DQがコマンドであることを各チップCPに通知する信号である。信号ALEは、各チップ10への入力信号DQがアドレスであることを各チップ10に通知する信号である。信号WEnは、入力信号DQを各チップ10に取り込ませるための信号である。信号REnは、各チップCPから出力信号DQを読み出すための信号である。レディ/ビジー信号RB0n,RB1n,…のそれぞれは、対応するチップ10−0,10−1,…がレディ状態(メモリコントローラ100からの命令を受信出来る状態)であるか、ビジー状態(メモリコントローラ100からの命令を受信出来ない状態)であるかを示す信号である。チップ10がビジー状態である場合、レディ/ビジー信号RBの信号レベルは、“L”レベルに設定される。
入出力信号DQは、例えば8ビットの信号セットである。入出力信号DQは、各チップ10とメモリコントローラ100との間で送受信されるデータである。入出力信号DQは、コマンドCMD、アドレスADD、書き込みデータ及び読み出しデータである。
これによって、メモリコントローラ100は、チャネルCH間で独立して並行に、チャネルCH内の任意の1つのチップ(NANDフラッシュメモリ)10と通信することができる。
<NANDフラッシュメモリの内部構成>
ここで、NANDフラッシュメモリ10の構成について説明する。尚、他のチップCP1のNANDフラッシュメモリ10の構成は、チップCP0のNANDフラッシュメモリの構成と実質的に同じであるため、説明を省略する。
図2に示されるように、NANDフラッシュメモリ(以下では、単にフラッシュメモリとも表記する)10は、メモリセルアレイ11、ロウデコーダ12、ドライバ13、センスアンプモジュール14、アドレスレジスタ15、コマンドレジスタ16、及びシーケンサ17などを含む。
メモリセルアレイ11は、メモリコントローラ100からのデータを記憶する。メモリセルアレイ11は、複数のブロックBLKを含む。各ブロックBLKは、ロウ及びカラムに対応付けられた複数のメモリセルを含む。図2の例において、4つのブロックBLK0〜BLK3が図示されている。
ロウデコーダ12は、アドレスレジスタ15内のブロックアドレスBAに基づいてブロックBLK0〜BLK3のいずれか1つを選択する。ロウデコーダ12は、選択したブロックBLK内の複数のワード線のうち1つを選択する。
ドライバ13は、アドレスレジスタ15内のページアドレスPAに基づいて、選択されたブロックBLKに対して、ロウデコーダ12を介して電圧を供給する。
センスアンプモジュール14は、データの読み出し時に、メモリセルアレイ11内のメモリセルの閾値電圧に応じた信号をセンスする。これによって、センスアンプモジュール14は、データを読み出す。この読み出したデータDATをメモリコントローラ100に出力する。データの書き込み時には、メモリコントローラ100からの書き込みデータDATを、メモリセルアレイ11に転送する。
アドレスレジスタ15は、メモリコントローラ100からのアドレスADDを保持する。このアドレスADDには、上述のブロックアドレスBAとページアドレスPAとが含まれる。
コマンドレジスタ16は、メモリコントローラ100から受信したコマンドCMDを保持する。
シーケンサ17は、コマンドレジスタ16に保持されたコマンドCMDに基づき、チップCP0全体の動作を制御する。
<ブロックの構成>
図3を用いて、ブロックBLKの構成について、説明する。図3は、いずれかのブロックBLKの回路図である。
図3に示すように、ブロックBLKは、複数(例えば4つ)のストリングユニットSU(SU0〜SU3)を含む。そして各々のストリングユニットSUは、複数のNANDストリングNSを含む。メモリセルアレイ11内のブロック数、ブロックBLK内のストリングユニット数、及びストリングユニットSU内のNANDストリング数は任意である。
NANDストリングNSの各々は、複数(例えば、64個)のメモリセルMT(MT0〜MT63)及びセレクトトランジスタST1,ST2を含んでいる。メモリセルMTは、セレクトトランジスタST1のソースとセレクトトランジスタST2のドレインとの間に直列接続されている。
メモリセルMTは、データを不揮発に保持する。メモリセル(メモリセルトランジスタともよばれる)MTは、制御ゲートと電荷蓄積層とを有する電界効果トランジスタである。
ストリングユニットSU0〜SU3の各々におけるセレクトトランジスタST1のゲートは、対応するセレクトゲート線SGD0〜SGD3にそれぞれ接続される。これに対してストリングユニットSU0〜SU3の各々におけるセレクトトランジスタST2のゲートは、例えばセレクトゲート線SGSに共通接続される。セレクトトランジスタST2のゲートは、ストリングユニットSU0〜SU3毎に異なるセレクトゲート線に接続されても良い。
同一のブロックBLK内にあるメモリセルMT0〜MT63の制御ゲートは、対応するワード線WL0〜WL63にそれぞれ接続される。
メモリセルアレイ11内において同一カラムにあるNANDストリングNSのセレクトトランジスタST1のドレインは、ビット線BL(BL0〜BL(m−1)、但しmは2以上の自然数)に接続される。ビット線BLは、複数のブロックBLK間で同一列にあるNANDストリングNSを共通に接続する。複数のセレクトトランジスタST2のソースは、ソース線SLに共通に接続されている。
ストリングユニットSUは、異なるビット線BLに接続され、かつ同一のセレクトゲート線SGDに接続されたNANDストリングNSの集合体である。以下において、ストリングユニットSUのうち、同一のワード線WLに共通接続されたメモリセルMTの集合(メモリセル群)は、セルユニットCU(又はメモリグループ)ともよばれる。ブロックBLKは、ワード線WLを共通にする複数のストリングユニットSUの集合体である。メモリセルアレイ11は、ビット線BLを共通にする複数のブロックBLKの集合体である。
図4は、ブロックBLKの一部領域の断面図である。図4に示すように、p型ウェル領域20上に、複数のNANDストリングNSが形成されている。p型ウェル領域20上に、セレクトゲート線SGSとして機能する複数(例えば、4層)の導電層21、ワード線WL0〜WL63として機能する複数(例えば、64層)の導電層22、及びセレクトゲート線SGDとして機能する複数(例えば、4層)の導電層23が、順次積層されている。積層された導電層間には、絶縁層(図示せず)が設けられている。
ピラー24が、導電層23,22,21を含む積層体内に設けられている。ピラー24は、導電層23,22,21を通過して、p型ウェル領域20に達する。ピラー24は、半導体(半導体層)を含む。ピラー24の側面上に、ゲート絶縁膜25、電荷蓄積層(絶縁膜又は導電膜)26、及びブロック絶縁膜27が順次形成される。
これによって、メモリセルMT及びセレクトトランジスタST1,T2が、ピラー24が各層21〜23に対向する位置に、それぞれ設けられる。
ピラー24は、NANDストリングNSの電流経路として機能する。ピラー24は、各トランジスタのチャネルが形成される領域となる。ピラー24の上端は、ビット線BLとして機能する金属配線層28に接続される。
p型ウェル領域20の表面領域内に、n型不純物拡散層29が設けられている。n型不純物拡散層29上に、コンタクトプラグ30が設けられている。コンタクトプラグ30は、ソース線SLとして機能する金属配線31に接続される。p型ウェル領域20の表面領域内に、p型不純物拡散層32が設けられている。p型不純物拡散層32上に、コンタクトプラグ33が設けられている。コンタクトプラグ33は、ウェル配線CPWELLとして機能する金属配線34に接続される。ウェル配線CPWELLは、p型ウェル領域20を介してピラー24に電位を印加するための配線である。
以上の構成が、図4を記載した紙面の奥行き方向(又は手前方向)に複数配列されている。奥行き方向に並ぶ複数のNANDストリングNSの集合によってストリングユニットSUが構成される。
メモリセルアレイ11の構成は、他の構成でもよい。例えば、メモリセルアレイ11の他の構成は、“THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY”という2009年3月19日に出願された米国特許出願12/407,403号に記載されている。メモリセルアレイ11の他の構成は、“THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY”という2009年3月18日に出願された米国特許出願12/406,524号、“NON‐VOLATILE SEMICONDUCTOR STORAGE DEVICE AND METHOD OF MANUFACTURING THE SAME”という2010年3月25日に出願された米国特許出願12/679,991号、及び“SEMICONDUCTOR MEMORY AND METHOD FOR MANUFACTURING SAME”という2009年3月23日に出願された米国特許出願12/532,030号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
図5を参照して、メモリセルMTが記憶するデータとメモリセルMTの閾値電圧分布との関係について、説明する。
本例では、1つのメモリセルMTが例えば3ビットデータを保持可能である。以下において、この3ビットデータは、下位のビットから下位(Lower)ビット、中位(Middle)ビット及び上位(Upper)ビットとよばれる。同一のセルユニットCUに属するメモリセルの保持する下位ビットの集合を下位ページ(又は下位データ)とよび、中位ビットの集合を中位ページ(又は中位データ)とよび、上位ビットの集合を上位ページ(又は上位データ)とよぶ。
例えば、1つのストリングユニットSU内における1本のワード線WL(1つのセルユニットCU)には3ページが割当てられる。あるいは言い換えるならば、「ページ」とは、セルユニットCUに形成されるメモリ空間の一部、と定義することもできる。データの書き込み及び読み出しは、このページ毎又はセルユニットCU毎に行っても良い。
図5の(a)は、各メモリセルMTの取り得るデータ、閾値電圧分布、及びデータの読み出し時に用いる電圧について示したダイアグラムである。
図5の(a)に示されるように、メモリセルMTが3ビットデータを保持可能である場合、メモリセルMTは、閾値電圧に応じて8個の状態を取ることができる。この8個の状態は、閾値電圧の低いものから順に、“Er”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、及び“G”ステートとよばれる。
“Er”ステートのメモリセルMTの閾値電圧は、電圧VAR未満であり、データの消去状態に相当する。“A”ステートのメモリセルMTの閾値電圧は、電圧VAR以上であり且つ電圧VBR(>VAR)未満である。“B”ステートのメモリセルMTの閾値電圧は、電圧VBR以上であり且つ電圧VCR(>VBR)未満である。“C”ステートのメモリセルMTの閾値電圧は、電圧VCR以上であり且つ電圧VDR(>VCR)未満である。“D”ステートのメモリセルMTの閾値電圧は、電圧VDR以上であり且つ電圧VER(>VDR)未満である。“E”ステートのメモリセルMTの閾値電圧は、電圧VER以上であり且つ電圧VFR(>VER)未満である。“F”ステートのメモリセルMTの閾値電圧は、電圧VFR以上であり且つ電圧VGR(>VFR)未満である。“G”ステートのメモリセルMTの閾値電圧は、電圧VGR以上であり且つ電圧VREAD(>VGR)未満である。
このように分布する8個のステートのうち、“G”ステートが、閾値電圧の最も高い状態である。各ステートは、対応するデータに関連付けられた電圧値の範囲を有する。“A”から“G”までのステートは、プログラムステートとよばれる。
以下では、電圧VAR〜VGRの各々は、判定レベル又は読み出しレベルともよばれる。電圧VAR〜VGRは、総称して電圧VCGRともよばれる。
電圧VREADは、例えば、読み出し動作時において読み出し対象でないワード線(非選択ワード線)WLに印加される電圧である。電圧VREADがメモリセルMTに印加された場合、メモリセルMTの保持データにかかわらずメモリセルMTは、オンする。
データの書き込みの検証のために、電圧VAV〜VGRが、各ステートに対して設けられている。電圧VAVは、読み出しレベルVARより高く、“A”ステートの所望の閾値電圧分布の下限値以下である。電圧VBVは、読み出しレベルVBRより高く、“B”ステートの所望の閾値電圧分布の下限値以下である。電圧VCVは、読み出しレベルVCRより高く、“C”ステートの所望の閾値電圧分布の下限値以下である。電圧VDVは、読み出しレベルVDRより高く、“D”ステートの所望の閾値電圧分布の下限値以下である。電圧VEVは、読み出しレベルVERより高く、“E”ステートの所望の閾値電圧分布の下限値以下である。電圧VFVは、読み出しレベルVFRより高く、“F”ステートの所望の閾値電圧分布の下限値以下である。電圧VGVは、読み出しレベルVGRより高く、“G”ステートの所望の閾値電圧分布の下限値以下である。
以下では、電圧VAV〜VGVの各々は、ベリファイレベルともよばれる。
閾値電圧分布は、前述の下位ビット(lowerビット)、中位ビット(middleビット)及び上位ビット(upperビット)を含む3ビット(3ページ)のデータを、メモリセルアレイ内のメモリセルMTに書き込むことで実現される。閾値電圧の状態と下位/中位/上位ビットとの関係の一例は、次の通りである。
“Er”ステート:“111”(“上位/中位/下位”の順で表記)
“A”ステート:“110”
“B”ステート:“100”
“C”ステート:“000”
“D”ステート:“010”
“E”ステート:“011”
“F”ステート:“001”
“G”ステート:“101”
このように、閾値電圧分布において隣り合う2つの状態に対応するデータ間では、3ビットのうちの1ビットのみが変化する。
下位ビットの読み出しは、下位ビットの値(“0”又は“1”)が変化する境界に相当する電圧を用いればよい。上位ビットの読み出しは、上位ビットの値が変化する境界に相当する電圧を用いればよい。中位ビットの読み出しは、中位ビットの値が変化する境界に相当する電圧を用いればよい。
図5の(a)に示されるように、下位ページの読み出しは、“Er”ステートと“A”ステートとを区別する電圧VAR、及び“D”ステートと“E”ステートとを区別する電圧VERを、読み出し電圧に用いて、実行される。
中位ページの読み出しは、“A”ステートと“B”ステートとを区別する電圧VBR、“C”ステートと“D”ステートとを区別する電圧VDR、及び“E”ステートと“F”ステートとを区別する電圧VFRを、読み出し電圧に用いて、実行される。
上位ページの読み出しは、“B”ステートと“C”ステートとを区別する電圧VCR、及び“F”ステートと“G”ステートとを区別する電圧VGRを、読み出し電圧に用いて、実行される。
電圧VARを用いた読み出しにより、消去状態のメモリセルMTが特定される。
以下において、電圧VARを用いた読み出し(判定)は、AR読み出しともよばれる。これと同様に、各電圧VBR,VCR,VDR,VER,VFR,VGRを用いた読み出しは、BR読み出し、CR読み出し、DR読み出し、ER読み出し、FR読み出し及びGR読み出しと、それぞれよばれる。
図5の(b)は、メモリセルの閾値電圧分布の状態を説明するためのダイアグラムである。
データを書き込んだ後に時間が経過すると、メモリセル間の干渉により閾値分布(ステート)がシフトするエラー(以下では、データリテンションエラーとよばれる)が生じる。フラッシュメモリの書き込み動作中及び読み出し動作中において、意図しない閾値分布のシフト及び閾値電圧の変動(以下では、プログラムディスターブ及びリードディスターブとそれぞれよばれる)が、生じ得る。
メモリセルアレイ内における複数のメモリセルの特性は、ばらつく傾向を有する。
例えば、或る値のプログラム電圧に対するメモリセルMTの閾値電圧の変動量(書き込み速度)は、ばらつく。このばらつきに起因して、或る値のプログラム電圧の印加時に、複数の書き込み対象のメモリセルにおいて、ある閾値電圧に達したメモリセルとある閾値電圧に達していないメモリセルとが混在する。
このため、プログラム動作において、メモリセルの閾値電圧が書き込むべきデータに対応するステートより上位のステートにシフトするエラー(以下では、オーバープログラムとよばれる)が、生じる可能性がある。
このような種々の変動要因に伴う閾値分布が変化すると、隣り合う閾値分布が重なってしまうことがある。
隣り合う閾値分布が重なることにより、上記の電圧VAR,VBR,VCR,・・・,VFR,VGRを用いた読み出し動作では、データを、分布が重なった領域999内に閾値電圧を有するメモリセルから正しく読み出せないことがある。
例えば、“A”ステートの閾値分布と“B”ステートの閾値分布とが重なった場合、“A”ステートの閾値分布のメモリセルのうち電圧VBRよりも閾値電圧が大きいメモリセルは、“B”ステートと誤って読み出される可能性があり、“B”ステートの閾値分布のメモリセルのうち電圧VBRよりも閾値電圧が小さいメモリセルは、“A”ステートと誤って読み出される可能性がある。このように、誤って読み出されたビットの数(フェイルビット数)が、ECC回路160の訂正可能ビット数を超えた場合、メモリコントローラ100は、フラッシュメモリ10からの正しいデータの読み出しに失敗する。
図6を参照して、本実施形態のメモリシステムの概要を、説明する。
図6は、隣り合うステート間の境界近傍の領域を模式的に説明するための模式図である。
図6の(a)乃至(c)に示されるように、ある判定レベルVZZを境界に隣り合うあるステートQ0とステートQ1に関して、変動要因によって記憶すべきデータに対応するステートから他方のステートにシフトしたメモリセルが、判定レベルVZZの近傍の領域において、存在する。
閾値電圧があるステートQ0に対応する値から上位のステートQ1に対応する値に変化したメモリセルは、以下では、“Q0toQ1”セルと表記する。
閾値電圧があるステートQ1に対応する値から下位のステートQ0に対応する値に変化したメモリセルは、以下では、“Q1toQ0”セルと表記する。
図6の(a)に示されるように、“Q0toQ1”セルは、判定レベルVZZより大きい閾値電圧の領域901a内に存在し、“Q1toQ0”セルは、判定レベルVZZ以下の閾値電圧の領域900a内に存在する。例えば、“Q0toQ1”セルは、過剰なプログラム電圧によってオーバープログラムが生じたメモリセルである。例えば、“Q1toQ0”セルは、データ保持状態時に閾値電圧の低下が生じたメモリセルである。
メモリコントローラ100は、ECC処理前の読み出しデータ及びECC処理後の読み出しデータを用いた計算処理によって、“Q0toQ1”セル及び“Q1toQ0”セルをそれぞれ検出できる。メモリコントローラ100は、この検出結果によって、“Q0toQ1”セルの個数及び“Q1toQ0”セルの個数を、カウントできる。
本実施形態のメモリシステムは、書き込み動作に用いられる書き込み方式に関して特定のステート間で生じる“Q0toQ1”セル及び“Q1toQ0”セルの個数に着目することで、初期プログラム電圧IVPGMの大きさの妥当性、及び、ステップアップ電圧の大きさの妥当性を、判断できる。
例えば、リードディスターブ及び(又は)リテンションエラーの影響が実質的に無いデータの書き込みの完了直後において、図6の(a)のように、実行される書き込み方式に対して特定のステート間における“Q0toQ1”セルの個数が、“Q1toQ0”セルの個数よりも多い場合、プログラム電圧の大きさが、書き込み動作時のメモリセルの特性に対して過剰であると予測される。
ある書き込み方式において、“A”ステートに関連付けられたデータが書き込まれるメモリセルに関して、閾値電圧が“A”ステートに応じた値から“B”ステートに応じた値へシフトしているメモリセルの発生数、及び、閾値電圧が“B”ステートに応じた値から“A”ステートに応じた値へシフトしているメモリセルの発生数は、プログラム電圧内の初期プログラム電圧IVPGMの大きさに相関する。
本実施形態のメモリシステムは、“A”ステートから“B”ステートへ閾値電圧がシフトしたメモリセルの発生数に基づいて初期プログラム電圧IVPGMの電圧値を適正化することで、書き込み動作を高速化する。
ある書き込み方式において、“B”ステート以上の各ステートに関連付けられたデータが書き込まれるメモリセルに関して、閾値電圧が記憶すべきデータのステートに応じた値から上位のステートに応じた値へシフトしているメモリセルの発生数、及び、閾値電圧が記憶すべきデータのステートに応じた値から下位のステートに応じた値へシフトしているメモリセルの発生数は、プログラム電圧内のステップアップ電圧の大きさに相関する。
それゆえ、本実施形態のメモリシステムは、記憶すべきデータに対応するステートより上位のステートにシフトしたメモリセルの発生数に基づいてステップアップ電圧dVPGMの電圧値を適正化することで、書き込み動作を高速化する。
一方、図6の(b)のように、実行される書き込み方式に対して特定のステート間における“Q0toQ1”セルの個数がある基準値よりも少ない場合(例えば、ECC処理によって訂正可能な個数よりも十分小さい場合)、プログラム電圧の大きさが、書き込み動作時のメモリセルの特性に対して高くないと予測される。
例えば、“A”ステートに関連付けられたデータが書き込まれるメモリセルに関して、閾値電圧が“A”ステートに応じた値から“B”ステートに応じた値へシフトしているメモリセルの発生数が、閾値電圧が“B”ステートに応じた値から“A”ステートに応じた値へシフトしているメモリセルの発生数より少ない場合、メモリコントローラ100は、初期プログラム電圧IVPGMの電圧値を増加するように、電圧IVPGMの電圧値を設定する。
このように、本実施形態のメモリシステムは、メモリセルの閾値電圧のシフトの大きさに応じて書き込み動作に用いられる電圧IVPGM,dVPGMの大きさを制御(補正、調整)することで、書き込み動作のための期間を短縮できる。
尚、本実施形態のメモリシステムにおいて、読み出しレベルの電圧値は、デフォルト値でもよいし、シフトされてもよい。
本実施形態のメモリシステムは、ECC処理の結果(例えば、誤り訂正前読み出しデータ及び誤り訂正後読み出しデータ)を用いて、記憶すべきデータに対応するステート(閾値電圧の範囲)から他のステートへシフトしたメモリセルの発生数を検出及びカウントできる。
本実施形態のメモリシステムは、ある書き込み動作時における記憶すべきデータに対応するステート(閾値電圧の範囲)から他のステートへシフトしたメモリセルの発生数に応じて、次の書き込み動作に用いられる電圧の大きさを、制御する。
他のステートへシフトしたメモリセル(“Q0toQ1”セル)の発生数がある基準値より小さい場合、メモリコントローラ100は、書き込み動作に用いられるプログラム電圧及びステップアップ電圧のうち少なくとも一方の電圧値を増加(又は維持)する。
他のステートへシフトしたメモリセル(“Q0toQ1”)の発生数がある基準値以上である場合、メモリコントローラ100は、書き込み動作に用いられる初期プログラム電圧及びステップアップ電圧のうち少なくとも一方の電圧値を低減する。
メモリコントローラ100は、このような書き込み動作に用いられる電圧の増加又は減少に関する情報を、電圧情報テーブルに保存する。
メモリコントローラ100は、電圧情報テーブル内の情報を、フラッシュメモリ10に通知できる。これによって、判定処理後の書き込み動作において、初期プログラム電圧及びステップアップ電圧が、電圧情報テーブル内の情報に基づいて、設定される。
これによって、本実施形態のメモリシステムは、メモリセルMTの閾値電圧の意図しない変動を考慮して設定された各種の電圧に関する情報を含むテーブルを用いて、各種の動作を実行する。
この結果として、本実施形態のメモリシステムは、性能の向上を図ることができる。
(a−5) 電圧情報テーブルの構成
図7を参照して、本実施形態のメモリシステムにおける、電圧情報テーブルについて説明する。上述のように、メモリコントローラ100は、例えば、メモリ120内に電圧情報テーブルTBLを保持する。
図7は、本実施形態のメモリシステムの電圧情報テーブルの一例を示す概念図である。
本実施形態において、電圧情報テーブルは、書き込み動作に用いられる各種の電圧に関する情報を、含む。
図7に示されるように、電圧情報テーブルTBLは、例えば、書き込み動作に用いられるプログラム電圧の初期値(以下では、初期プログラム電圧とよばれる)IVPGM、及び、書き込み動作に用いられるステップ電圧dVPGMなどの情報を含む。
図8は、本実施形態のメモリシステムの書き込み動作時に用いられる各種の電圧を説明するための模式図である。
書き込み動作時において、選択されたフラッシュメモリ10内のシーケンサ17は、メモリコントローラ100からの書き込みコマンドに応答して、選択アドレスに示されるブロック、ワード線及びストリングユニットに対して、様々な電圧を印加する。
NANDフラッシュメモリの書き込み動作時において、複数の書き込みループが、実行される。各書き込みループは、プログラム処理及びベリファイ処理を含む。
プログラム処理時において、選択ワード線に接続された複数のメモリセルは、データの書き込みの完了/未完了に応じて、書き込み可能状態又は書き込み禁止状態に設定される。
1回目の書き込みループのプログラム処理時において、プログラム電圧VPGMとして、初期プログラム電圧IVPGMが、選択ワード線に印加される。
例えば、初期プログラム電圧IVPGMは、電圧値V1を有する。
1回目の書き込みループにおいて、プログラム処理の後、ベリファイ処理が実行される。ベリファイ処理において、ベリファイ電圧Vvfyが、選択ワード線に印加される。ベリファイ動作によって、選択セルが、書き込むべきデータに対応した閾値電圧に達したか否か検証される。ベリファイ電圧の印加によって、選択セルがオンしたか否かが、検知される。これよって、選択セルが、書き込むべきデータに対応するステートに達したか否か判定される
ベリファイ動作においてオン状態の選択セルの閾値電圧は、書き込むべきデータに対応する値に達していない。選択セルの閾値電圧が書き込むべきデータに対応するステートに達していない場合、その選択セルは、書き込み可能状態に設定される。
ベリファイ動作においてオフ状態の選択セルの閾値電圧は、書き込むべきデータに対応する値に達している。選択セルの閾値電圧が書き込むべきデータに対応するステートに達した場合、以降の書き込みループにおいて、その選択セルは、書き込み禁止状態に設定される。
書き込みループの進行とともに、プログラム電圧VPGMの電圧値は、書き込みループ毎にステップアップされる。2回目の書き込みループ以降のプログラム電圧は、初期プログラム電圧に書き込みループの回数に応じた大きさを有するステップアップ電圧dVPGMが加算された値を有する。ステップアップ電圧dVPGMは、電圧値V2を有する。
例えば、2回目の書き込みループのプログラム処理時において、プログラム電圧VPGMの電圧値は、初期プログラム電圧IVPGMの電圧値とステップアップ電圧dVPGMの電圧値との合計の値を有する。
2回目以降の書き込みループにおいて、書き込みループの回数が1つ増えるたびに、ステップアップ電圧dVPGMに対応する電圧値が、初期プログラム電圧に順次加算される。j回目(jは、1以上の整数)の書き込みループにおけるプログラム電圧VPGMは、“IVPGM+(j−1)×dVPGM”と示される。
例えば、書き込みループの進行とともに、ベリファイ電圧Vvfyの電圧値は、変更される。
初期プログラム電圧IVPGM及びステップアップ電圧dVPGMの大きさは、書き込み動作時におけるオーバープログラムの発生に影響し得る。
初期プログラム電圧IVPGM及びステップアップ電圧dVPGMの大きさ(電圧値V1,V2)の情報として、例えば、DAC(Digital to Analogue Converter)値が、設定されている。
初期プログラム電圧IVPGM及びステップアップ電圧dVPGMに関する情報(例えば、DAC値)は、例えば、チャネルCH毎、チップCP(NANDフラッシュメモリ10)毎、ブロックBLK毎、ワード線WL毎、及びストリングユニットSU毎に個別に設定され得る。
尚、テーブルTBL内に、読み出し動作に用いられる電圧VAR〜VGRのシフト量が、保持されていてもよい。または、電圧VAR〜VGRのシフト量が保持されたテーブルが、別途に設けられてもよい。テーブル内の情報に基づいて、読み出し電圧の電圧値が、設定される。これによって、本実施形態のメモリシステムは、より信頼性の高い読み出し動作を実現できる。
本実施形態において、電圧情報テーブルTBLは、プログラム電圧の初期値(初期プログラム電圧)IVPGMに関するDAC値及びステップアップ電圧dVPGMの電圧値に関するDAC値を、含む。
本実施形態において、メモリコントローラ100は、読み出し動作の結果及びECC処理の結果に基づいて、電圧IVPGM及び電圧dVPGMに関するDAC値を決定する。
初期プログラム電圧及びステップアップ電圧の電圧値のそれぞれに関して、デフォルト値からのシフト量を示す情報が、チャネルCH毎、チップCP(NANDフラッシュメモリ10)毎、ブロックBLK毎、ワード線WL毎、及びストリングユニットSU毎に、電圧情報テーブルTBL内に保持されている
本例において、テーブルTBLに関して、“00”の状態のDAC値は、メモリコントローラ100が書き込み電圧に関する情報を保持していないことを、示す。メモリコントローラ100は、テーブルTBL内のDAC値が“00”である場合において、フラッシュメモリ10に対して、電圧値の設定に関する指示を行わない。この場合において、フラッシュメモリ10は、フラッシュメモリ10内の情報に基づいて、初期プログラム電圧及びステップアップ電圧の電圧値を、デフォルト値に設定する。
初期プログラム電圧IVPGM及びステップアップ電圧dVPGMの電圧値におけるデフォルト値からのシフト量は、例えばメモリコントローラ100によって、算出される。算出された値は、メモリ120内の電圧情報テーブルに保持される。このように、テーブルTBL内の値は、動作に応じて、随時更新される。
メモリコントローラ100は、電圧情報テーブル内の情報を、フラッシュメモリ10に通知できる。フラッシュメモリ10は、通知された情報に基づいて、初期プログラム電圧の電圧値及びステップアップ電圧の電圧値を、設定する。
(1a−6) 電圧情報テーブルの構成
図9は、電圧補正回路180の内部構成の一例を示す模式図である。
図9に示されるように、電圧補正回路180は、メモリ回路181、計算回路182、検出回路183、カウンタ回路184、判定回路185などを含む。
メモリ回路181は、誤り訂正前読み出しデータ及び誤り訂正後読み出しデータを一時的に保持する。
計算回路182は、誤り訂正前読み出しデータ及び誤り訂正後読み出しデータに対して、各種の計算処理を施す。
検出回路183は、計算結果に基づいて、カウント及び判定の対象のメモリセルを検出(サンプリング)する。
カウンタ回路184は、ビットカウンタ、アップカウンタUC及びダウンカウンタDCなどの複数のカウンタを含む。例えば、ビットカウンタBCは、読み出し動作の結果及びECC処理の結果などに基づいて、オーバープログラム状態のメモリセル(以下では、オーバープログラムセルともよばれる)の個数、過消去状態のメモリセルの個数、又は、消去不足状態のメモリセルの個数などを、カウントできる。アップカウンタUC及びダウンカウンタDCは、メモリコントローラ100又は判定回路192による各種の判定処理の結果、又は、各種の処理の実行結果を、カウント値として保持できる。
判定回路185は、基準値とカウンタ値とを用いて、各種の判定処理を実行する。
基準値は、NANDフラッシュメモリに対する実験結果、各種のシミュレーションなどによって、あらかじめ設定される。尚、基準値は、メモリシステムの使用状態又は経時変化などに応じて、メモリシステムの使用中に変更されてもよい。
メモリコントローラ100は、電圧補正回路180を用いて各種の処理を実行する。電圧補正回路180による各種の処理によって、電圧情報テーブル内の情報が、設定される。
メモリコントローラ100は、電圧情報テーブルを参照することにより、書き込み対象のメモリセルMTの書き込み動作に用いられる初期プログラム電圧及びステップアップ値を決定する。
(1b) 動作例
図10乃至図20を参照して、本実施形態のメモリシステムの動作例について説明する。
(1b−1) データの書き込み方式
図10を参照して、本実施形態のメモリシステムの書き込み動作に用いられるデータの書き込み方式について、説明する。
図10は、本実施形態において、NANDフラッシュメモリ10の書き込み方式の一例を説明するための模式図である。
図10において、フルシーケンス方式の書き込み動作が、模式的に示される。
フルシーケンス方式の書き込み動作において、メモリセルの閾値電圧は、書き込むべきデータに応じて、下位のステートから上位のステートに向かって、シフトされる。
図10の(a)に示されるように、プログラム電圧の印加前において、選択領域内の全てのメモリセルのステートは、“Er”ステート(消去状態)に設定されている。
“Er”ステートのメモリセルのうち、“A”、“B”、…、“G”ステートに対応するデータが書き込まれるメモリセルの閾値電圧は、プログラム電圧の印加(電荷蓄積層に対する電荷の注入)によって、より高いレベルにシフトされる。
図10の(b)に示されるように、ある回数の書き込みループの実行によって、複数の選択セルの閾値電圧は、“A”ステートに対応する電圧値に達する。例えば、複数の選択セルの閾値電圧は、電圧VAR以上となる。
図10の(c)に示されるように、“A”ステートに対応する電圧値以上の閾値電圧を有する複数のメモリセルのうち、“B”、“C”、…、“G”ステートに対応するデータが書き込まれるメモリセルの閾値電圧は、プログラム電圧の印加によって、さらに高いレベルにシフトされる。ここで、“A”ステートに対応するデータが書き込まれるメモリセルは、プログラム禁止状態に設定される。これよって、“A”ステートに対応するデータの書き込みが、完了する。
“B”〜“G”ステートのデータのプログラムが、対応するメモリセルに対して、引き続き実行される。
図10の(d)に示されるように、“B”ステート、“C”ステート、及び“D”ステートのように、下位のステートに対応するデータから順次、データのプログラムが完了する。
図10の(e)に示されるように、電圧VFR以上のメモリセルに対するプログラム動作によって、“G”ステートのデータが、書き込まれる。
このように、“A”ステートから“G”ステートまでのデータが、メモリセルアレイ内のセルユニットに、書き込まれる。
これによって、フルシーケンス方式による書き込み動作が、完了する。
フルシーケンス方式の書き込み動作において、プログラム電圧VPGMの電圧値は、図8のように、書き込みループの回数に応じて、初期プログラム電圧IVPGMの電圧値からステップアップ電圧dVPGMの電圧値分ずつ増加する。
図10の(f)は、書き込み動作に用いられる電圧の設定に考慮すべき閾値電圧の変動を説明するための模式図である。
フルシーケンス方式の書き込み動作において、書き込み動作の1回目の書き込み電圧の印加時において、“Er”ステートから“A”及び“B”ステートに向かって、メモリセルの閾値電圧が、プログラム電圧の印加によって上昇される。
図10の(f)に示されるように、本書き込み方式において、初期プログラム電圧IVPGMの大きさは、“A”ステートに対応する値(電圧値)から“B”ステートへ対応する値へ閾値電圧が変動したメモリセル(以下では、“AtoB”セルともよばれる)の発生数81に応じて、設定されることが好ましい。
“AtoB”セルは、オーバープログラム状態のメモリセルである。
上述のように、“AtoB”セルのような、オーバープログラム状態のメモリセルMTは、メモリセルMTの閾値電圧が書き込むべきデータに関連付けられた電圧値(ステート)より高い電圧値になっている。
1回目のプログラム電圧の印加時に“Er”ステートの分布から複数のステートのうちメモリセルの閾値電圧が最も低いステート(プログラムレベル)に可能な限り少ないパルス(プログラム電圧)の印加回数で到達すること、及び、2番目に低いステートに到達するメモリセルの個数がゼロである又は極めて少ないこと、が、初期プログラム電圧の電圧値に求められる。
以下において、1回のパルスの印加で2番目に低いステートに到達してしまうメモリセルが生じる状態は、1パルスオーバープログラムとする。
例えば、書き込み動作がフルシーケンス方式で実行される場合、最も低い書き込みレベルは“A”ステートであり、2番目に低い書き込みレベルは“B”ステートである。
フルシーケンス方式の書き込み動作において、メモリセルの閾値電圧は、ステップアップ電圧を順次加えながら、下位のステートから上位のステートへ上昇される。
各ステートにおける閾値電圧の分布の広がり(分布幅)は、ステップアップ電圧dVPGMの大きさと相関関係を有する。一般的な傾向として、ステップアップ電圧dVPGMの電圧値が小さい場合、閾値電圧の分布幅は狭く、ステップアップ電圧dVPGMの電圧値が大きい場合、閾値電圧の分布幅は広くなる。
書き込み動作において、各ステートの閾値電圧分布の下限値は、ベリファイ動作のベリファイレベルによって決まっている。
ステップアップ電圧の電圧値の妥当性は、設定されるべきステートより上位のステートにシフトしたメモリセルの個数に応じて、判断され得る。
上述のように、初期プログラム電圧の電圧値の妥当性の判断に、最も低いステートのオーバープログラムセルが、用いられる。そのため、ステップアップ電圧dVPGMの電圧値の妥当性は、下位から2番目のステート以上のステートで発生したオーバープログラムセルの個数に基づいて、判断されることが望ましい。
例えば、本書き込み方式において、ステップアップ電圧dVPGMの大きさは、図10の(f)における、“B”ステートに対応する値(電圧値)から“C”ステートへ対応する値へ閾値電圧が変動したメモリセル(以下では、“BtoC”セルともよばれる)の発生数82、“C”ステートに対応する値から“D”ステートへ対応する値へ閾値電圧が変動したメモリセル(以下では、“CtoD”セルともよばれる)の発生数83、“D”ステートに対応する値から“E”ステートへ対応する値へ閾値電圧が変動したメモリセル(以下では、“DtoE”セルともよばれる)の発生数84、“E”ステートに対応する値から“F”ステートへ対応する値へ閾値電圧が変動したメモリセル(以下では、“EtoF”セルともよばれる)の発生数85、及び、“F”ステートに対応する値から“G”ステートへ対応する値へ閾値電圧が変動したメモリセル(以下では、“FtoG”セルともよばれる)の発生数86に応じて、設定されることが好ましい。
以下において、記憶すべきデータに対応するステートから他のステートへ閾値電圧が意図せずにシフトしたメモリセル(エラーセル)は、総称して、ステートシフトセルとよばれる。
本実施形態のメモリシステムは、パトロール動作の読み出し動作及びECC処理の結果に基づいて、フルシーケンス方式の書き込み動作に用いられる初期プログラム電圧IVPGMの設定処理及びステップアップ電圧dVPGMの設定処理をそれぞれ実行できる。
上述のように、パトロール動作は、ホストデバイス2からの要求無しに、メモリコントローラ100の判断で実行される読み出し動作を含む。
例えば、パトロール動作によって、読み出し動作及びECC処理が、アクセスの少ないアドレス(例えば、ブロック)に対して、定期的に行われる。パトロール動作の結果に応じて、フラッシュメモリ10内のデータのリフレッシュ(データの引っ越し)が実行される。
本実施形態のメモリシステムのパトロール動作において、例えば、TLCを用いたフラッシュメモリにおける下位/中位/上位ページの読み出し動作の結果に基づいて、“AtoB”セルのような、3ビットのデータを保持するメモリセルで生じ得る1ビットのシフトエラーが、特定できる。
あるメモリシステムにおける初期プログラム電圧IVPGM及びステップアップ電圧dVPGMの適した電圧値は、メモリセルの書き換え回数に応じて、変化する。
本実施形態のメモリシステムは、パトロール動作における各種の処理の結果に基づいて、メモリセルの特性の変化に追従して、適した値に設定できる。
(1b−2) パトロール動作における初期プログラム電圧の設定
図11を参照して、本実施形態のメモリシステムの動作例について、説明する。
図11は、本実施形態のメモリシステムのパトロール動作における初期プログラム電圧IVPGMの適正化処理を説明するためのフローチャートである。
<ステップS1>
メモリシステム(NANDフラッシュメモリ10)の使用の開始後(例えば、メモリシステムの電源の投入後)、ステップS1において、ホストデバイス2からのコマンドに応答して、メモリシステムは、書き込み動作及び読み出し動作を実行する。
例えば、メモリシステムの使用の開始から最初のパトロール処理の前までの書き込み動作において、初期プログラム電圧IVPGM及びステップアップ電圧dVPGMは、デフォルトの電圧値IVPGMd,dVPGMdに設定されている。
また、メモリシステムの使用の開始から最初の読み出し動作において、デフォルト電圧値の読み出し電圧が、用いられる。
例えば、読み出し動作及びECC動作の結果に基づいて、読み出し電圧の補正量が決定されてもよい。これによって、読み出し電圧の適正化処理が実行される。
<ステップS2>
メモリシステムの使用の開始からある期間が経過した後、メモリコントローラ100は、NANDパッケージ群200に対して、パトロール動作を実行する。
<ステップS3>
パトロール動作時において、メモリコントローラ100は、ホストデバイス2からの指示(ホストコマンド)無しに、読み出しコマンドを、NANDパッケージ群200内の1以上のフラッシュメモリ10に送る。
メモリコントローラ100からの読み出しコマンドに応じて、フラッシュメモリ10は、読み出し動作を実行する。フラッシュメモリ10は、パトロール動作の対象のページを含むセルユニットCUの全てのページに対する読み出し動作を、実行する。例えば、この読み出し動作によって、1つのストリングユニット内の1本のワード線に割り当てられている下位ページ、中位ページ及び上位ページのデータが、読み出される。
フラッシュメモリ10は、読み出しデータを、メモリコントローラ100に送る。
<ステップS4>
読み出されたデータに対して、ECC処理が実行される。
ステップS4において、メモリコントローラ100は、フラッシュメモリ10からの読み出しデータ(誤り訂正前読み出しデータ)に対して、エラーの検出をECC回路によって実行する。
<ステップS5>
ステップS6において、メモリコントローラ100は、検出されたエラーが訂正可能であるか否か判定する。
<ステップS6−0>
メモリコントローラ100は、エラーの訂正が不可能である場合(ステップS6のNoの場合)、リトライシーケンスが実行される。
ステップS6−0において、メモリコントローラ100は、リトライシーケンスにおける再度のデータ読み出しを試みる。例えば、メモリコントローラ100は、所定のアルゴリズムにしたがって読み出し電圧を変化させたシフトリード処理を行う。メモリコントローラ100は、シフトリード処理によって読み出されたデータの誤りの検出(及び訂正)を試みる。
尚、所定の回数のリトライシーケンスが実行されてもエラーの訂正が可能とならない場合、図11の処理が終了されてもよい。
<ステップS6−1>
エラーの訂正が可能である場合(ステップS5のYesの場合)、ステップS6−1において、誤り訂正後読み出しデータ(期待値データ)が、ECC回路160によるエラーの訂正によって生成される。
<ステップS7>
メモリコントローラ100は、実行中のパトロール動作が、パトロール動作の対象(例えば、ページ)に対する書き込み動作後の最初のパトロール動作であるか否か判定する。
実行中のパトロール動作が、パトロール動作の対象における書き込み動作後の2回目以降のパトロール動作であった場合(ステップS7のNoの場合)、本実施形態のメモリシステムにおける書き込み動作に用いられる初期プログラム電圧の適正化処理を、終了する。
実行中のパトロール動作が、パトロール動作の対象における書き込み動作後の最初のパトロール動作であった場合(ステップS7のYesの場合)、ステップS8の処理が実行される。
初期プログラム電圧(及びステップアップ電圧)の適正化処理のために、書き込み動作後の最初のパトロール動作におけるエラーの検出及びエラーの訂正の結果が用いられるのは、以下の理由による。
書き込み動作後、メモリセルは、時間が経過するにつれて、様々なストレスを受ける。例えば、あるブロックに対して、多数の読み出し命令が発行された場合、たとえ初期プログラム電圧の電圧値が適切であったとしても、“AtoB”セルの数が、読み出しディスターブの影響で、増大する可能性がある。また、ステップアップ電圧dVPGMの電圧値が妥当であったとしても、読み出しディスターブによって、“BtoC”セル及び“CtoD”セルなどの数も増える。
例えば、過大な電圧値の初期プログラム電圧IVPGMの印加によって書き込み動作時に多数の“AtoB”セルが発生しても、時間の経過によるメモリセルのデータリテンション(閾値電圧の低下)に起因して、“AtoB”セルが“A”ステートに対応する閾値電圧を有するセルに変わる可能性がある。
それゆえ、メモリセルの閾値電圧(電荷の蓄積状態)の検査は、書き込み動作の実行から時間を空けずに実行されることが好ましい。
したがって、初期プログラム電圧の電圧値(及びステップアップ電圧の電圧値)をより適切な値に設定するための処理は、ある頻度(サイクル)で実行される複数のパトロール動作において書き込み動作後の最初のパトロール時に実行されることが望ましい。
尚、初期プログラム電圧(及びステップアップ電圧)の電圧値の適正化処理は、電圧の適正化処理のための専用の読み出しシーケンスを用いずに、パトロール動作のようなメモリコントローラ100の自律的な処理の結果を用いて、実行される。
これによって、メモリシステムに対する大きな負荷が、初期プログラム電圧の電圧値の適正化処理に起因して、メモリシステム内に発生するのを抑制できる。
<ステップS8>
実行中のパトロール動作が、パトロール動作の対象における書き込み動作後の最初のパトロール動作であった場合、ステップS8において、メモリコントローラ100は、ECC処理の結果に基づいて、書き込み動作に用いられる各種の電圧を調整及び設定するための計算処理を実行する。
例えば、メモリコントローラ100は、読み出し動作の結果及びECC処理の結果を用いた計算処理によって、ビットシフトテーブルTBLzを作成する。ビットシフトテーブルTBLzは、閾値電圧が書き込まれるべきデータに関連付けられたステートから他のステートへシフトしているメモリセルの検出結果及び個数などの情報を含むテーブルである。
作成されたビットシフトテーブルTBLzは、例えば、メモリ120内に格納される。
<ステップS9>
メモリコントローラ100は、計算処理の結果に基づいて、“A”ステートに対応する電圧値から“B”ステートに対応する電圧値へ閾値電圧がシフトしたメモリセル(“AtoB”セル)を、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、“AtoB”セルの個数をカウントする。
<ステップS10>
ステップS10において、メモリコントローラ100は、記憶すべきデータに対応するステートより上位のステートへ閾値電圧がシフトしたメモリセルの検出結果に基づいて、初期プログラム電圧IVPGMの電圧値の設定処理を実行する。
これによって、初期プログラム電圧IVPGMの電圧値が、より適した値に設定される。
例えば、“AtoB”セルの発生数がある基準値より小さい場合、メモリコントローラ100は、初期プログラム電圧IVPGMを増加するように、情報(例えば、DAC値)を設定する。例えば、“AtoB”セルの発生数がある基準値以上である場合、メモリコントローラ100は、初期プログラム電圧IVPGMを減少するように、情報(DAC値)を設定する。
<ステップS11>
ステップS11において、メモリコントローラ100は、初期プログラム電圧の設定処理の結果に基づいて、テーブルTBL内に保持されている初期プログラム電圧の電圧値を示す値を、ステップS10の処理によって新たに設定された初期プログラム電圧IVPGMの電圧値を示す値に更新する。
メモリコントローラ100は、初期プログラム電圧IVPGMの適正化処理の後に実行される書き込み動作(例えば、次回の書き込み動作)時に、更新された電圧情報テーブルTBLの情報をフラッシュメモリ10に通知する。
以上のように、本実施形態において、図11の処理によって、初期プログラム電圧IVPGMの大きさが、より適した値に設定(調整、補正)される。尚、上述の処理に応じて、初期プログラム電圧の大きさが、デフォルト値に維持される場合もある。
以上のように、本実施形態のメモリシステムにおいて、パトロール動作は、あるメモリ空間に対する読み出し動作及びECC処理に加えて、ECC処理の結果に基づく計算処理(ステップS8)、オーバープログラム状態のメモリセルの検出(ステップS9)、初期プログラム電圧の設定(S10)及び電圧情報テーブルの更新(ステップS11)を含む。但し、ステップS8〜S10までの処理は、パトロール動作とは別の動作(シーケンス)として、扱われてもよい。
[具体例]
図12乃至図15を参照して、本実施形態のメモリシステムのパトロール動作における、初期プログラム電圧の設定方法(例えば、電圧値の適正化処理)のより具体的な一例について説明する。
図12は、本実施形態のメモリシステムにおける、パトロール動作におけるオーバープログラムセルの検出結果を用いた処理シーケンスの具体例を説明するためのフローチャートである。図12において、図11のフローチャートのステップS8〜S11の処理の例が、示されている。
図13は、本実施形態のメモリシステムにおける、初期プログラム電圧の設定処理時の各種のパラメータの推移を示す模式図である。図13において、後述の着目領域内のメモリセルの個数、アップカウンタ値、ダウンカウンタ値及び初期プロラム電圧の電圧値と時間(書き込み動作の回数)との関係をそれぞれ示すグラフが示されている。
図14及び図15は、本実施形態のメモリシステムにおける、初期プログラム電圧の設定処理における、テーブル内の各値の推移を示す模式図である。
図12乃至図15の例において、チップIDが“0”、ブロック番号が“0”、ワード線番号が“0”、ストリングユニット番号が“0”である制御単位(データの書き込み/読み出しのためのアクセス単位)における、初期プログラム電圧IVPGMの設定処理について、説明する。
フルシーケンスの書き込み方式において、初期プログラム電圧の設定処理時、“A”ステートの分布と“B”ステートの分布との間で、オーバープログラム領域(“AtoB”セルが存在する領域)が、生じ得る。プログラム動作によって生じるオーバープログラム領域が、着目領域として扱われる。着目領域内のメモリセル数が、各種の電圧(ここでは、初期プログラム電圧)の設定を変更するための指標として、カウント対象となる。
本実施形態において、メモリシステムの使用開始後、初期プログラム電圧IVPGMの電圧値は、オーバープログラムの発生状況(オーバープログラム状態のメモリセル数)に応じて、以下のように、設定される。
<メモリシステムの初期状態>
図14の(a)は、初期プログラム電圧の設定に関するテーブルの初期状態を示している。図14の(a)に示されるように、NANDフラッシュメモリの初期状態(メモリシステムの使用開始)時(例えば、メモリシステムの出荷時の状態)において、初期プログラム電圧IVPGMの電圧値IVPGMoffsetは、デフォルト値Vdefに設定されている。電圧値IVPGMoffsetは、“00”の情報で、テーブルTBL内に示されている。
アップカウンタのカウンタ値(以下では、アップカウンタ値とよばれる)及びダウンカウンタのカウンタ値(以下では、ダウンカウンタ値とよばれる)のそれぞれは、“0”に設定されている。
<時刻t1>
例えば、時刻t1(メモリシステムの使用の開始からある設定条件の書き込み動作後の最初のパトロール動作の実行前の期間内の或る時刻)において、書き込み動作は、図14の(a)のパラメータに基づいて、デフォルト値の初期プログラム電圧IVPGMを用いて、実行される(図11のステップS1)。
時刻t1における書き込み動作(1回目の書き込み動作)の後において、この書き込み動作後の最初のパトロール動作が実行される(図11のステップS2)。このパトロール動作のECC処理(エラーの検出S4及びエラー訂正S6−1)の結果に基づいて、メモリコントローラ100は、電圧情報テーブルを更新するための処理を実行する。
1回目の書き込み動作後(時刻t1における書き込み動作後)の最初のパトロール動作のECC処理の結果に基づいて、計算処理(例えば、ビットシフトテーブルTBLzの作成)及び“AtoB”セルの検出が、実行される。例えば、パトロール動作で検出された“AtoB”セルの個数は、判定値C0以下である。
パトロール動作によって得られた結果を用いて、図12の処理フローが実行される。
<ステップS100>
ステップS100において、メモリコントローラ100は、アップカウンタ値が基準値C1(例えば“2”)以上であるか否か、判定する。時刻t1の書き込み動作において、アップカウンタ値は、基準値C1より小さい(ステップS100のNo)。
それゆえ、処理は、ステップS100の後、ステップS101に進む。
<ステップS101>
ステップS101において、メモリコントローラ100は、着目領域(ここでは、“AtoB”のオーバーラップ領域)内のメモリセル数が、基準値C0より大きいか否か判定する。時刻t1の書き込み動作において、“AtoB”セルの数は、基準値C0以下である(ステップS101のNo)。
それゆえ、処理は、ステップS101の判定が“No”である場合、ステップS102に進む。
<ステップS102>
ステップS102において、ステップS101の判定結果に基づいて、メモリコントローラ100は、初期プログラム電圧IVPGMの電圧値IVPGMoffsetのDAC値を、所定の値“N1(例えば、4)”だけ上げる。
メモリコントローラ100は、ステップS101の判定結果を反映するために、テーブルTBLを更新する。
図14の(b)に示されるように、メモリコントローラ100は、テーブルTBLの初期プログラム電圧IVPGMの電圧値IVPGMoffsetの項目内に、“4”を書き込む。これによって、テーブルTBL内の電圧値IVPGMoffsetのDAC値が、“00”から“4”に変更される。
これによって、時刻t1で実行された書き込み動作後のパトロール動作の結果に基づく処理は、終了する。
時刻t1における書き込み動作の結果に対するテーブルTBLの更新後において、書き込み動作は、“4”のDAC値に対応する電圧値IVPGMoffsetの初期プログラム電圧IVPGMを用いて、実行される。
<時刻t2>
時刻t2において、図14の(b)に示されるテーブルTBLに基づいた書き込み動作(例えば、2回目の書き込み動作)が、実行される。時刻t2における書き込み動作は、図14の(b)の情報に基づく初期プログラム電圧IVPGMを用いて、実行される。
この後、パトロール動作(例えば、時刻t2における書き込み動作後の最初のパトロール動作)が、或るタイミングで実行される。
時刻t2における書き込み動作の後、パトロール動作が、実行される。このパトロール動作は、時刻t2における書き込み動作後の最初のパトロール動作である。
パトロール動作におけるECC処理、計算処理及び“AtoB”セルの検出結果に基づいて、図12の処理が実行される。
図13に示されるように、時刻t2における書き込み動作後のパトロール動作の結果は、時刻t1における書き込み動作後のパトロール動作の結果と実質的に同じである。
それゆえ、メモリコントローラ100は、ステップS100,S101の後、ステップS102の処理を実行する。メモリコントローラ100は、テーブルTBL内の電圧値IVPGMoffsetのDAC値を、値N1分だけ上げる。図14の(c)に示されるように、電圧値IVPGMoffsetのDAC値は、値N1の加算によって、“4”から“8”に変更される。
このように、メモリコントローラ100は、時刻t2の書き込み動作後の最初のパトロール動作の結果に基づいて、テーブルTBLを、更新する。
時刻t2の書き込み動作の結果に対応するテーブルTBLの更新後において、書き込み動作は、“8”のDAC値に対応する電圧値IVPGMoffsetの初期プログラム電圧IVPGMを用いて、実行される。
<時刻t3>
時刻t3において、図14の(c)のテーブルTBLに基づいた電圧値を有する初期プログラム電圧IVPGMを用いて、時刻t3における書き込み動作後の最初の書き込み動作(例えば、3回目の書き込み動作)が、実行される。この後、パトロール動作(例えば、時刻t2の書き込み動作に対応するテーブルTBLの更新後の最初のパトロール動作)が、実行される。
時刻t3の書き込み動作後のパトロール動作におけるECC処理、計算処理及び“AtoB”セルの検出結果に基づいて、図12の処理が実行される。
時刻t1(及び時刻t2)のパトロール動作に対する処理と同様に、メモリコントローラ100は、テーブルTBL内の電圧値IVPGMoffsetのDAC値を、値N1だけ上げる。これによって、図14の(d)に示されるように、電圧値IVPGMoffsetのDAC値は、“8”から“12”に変更される。
このように、テーブルTBLは、時刻t3の書き込み動作に対するパトロール動作における各種の処理の結果に基づいて、更新される。
時刻t3の書き込み動作の結果に対するテーブルTBLの更新後において、書き込み動作は、“12”のDAC値に対応する電圧値IVPGMoffsetの初期プログラム電圧IVPGMを用いて、実行される。
<時刻t4>
時刻t4において、書き込み動作が、図14の(d)のテーブルTBLに基づいた電圧値を有する初期プログラム電圧IVPGMを用いて、実行される。
時刻t4における書き込み動作(例えば、4回目の書き込み動作)の後、時刻t4の書き込み動作後の最初のパトロール動作(例えば、時刻t3の書き込み動作に対応するテーブルTBLの更新後の最初のパトロール動作)が、実行される。
このパトロール動作におけるECC処理、計算処理及び検出処理の結果に基づいて、図12の処理が実行される。
時刻t4の書き込み動作に対するパトロール動作の“AtoB”セルの検出結果において、図13に示されるように、“AtoB”セルの数が、基準値C0より大きくなる。
この場合において、ステップS101において、処理は、ステップS103に進む。
<ステップS103>
“AtoB”セルの数が基準値C0より大きい場合(ステップS101のYesの場合)、メモリコントローラ100は、アップカウンタの値を更新する。これによって、アップカウンタ値は、増加する。
例えば、アップカウンタ値は、メモリコントローラ100によって、インクリメントされる。図14の(e)に示されるように、アップカウンタ値は、“0”から“1”に増加する。例えば、アップカウンタ値の増加は、現在の初期プログラム電圧IVPGMを用いたプログラム動作による着目領域内のメモリセル(ここでは、“AtoB”セル)の個数が、増加している。これは、ECC処理の訂正能力に対して十分なマージンがあるものの、現在の初期プログラム電圧IVPGMの電圧値が上限値に近くなっていることを示す。
<ステップS104>
ステップS104において、アップカウンタ値のインクリメントの後、メモリコントローラ100は、インクリメントされたアップカウンタ値が基準値C1以上であるか否か判定する。
図13の時刻t4において、アップカウンタ値は、基準値C1より小さい。この場合において、図12の処理は、ステップS104からステップS105へ進む。
<ステップS105>
アップカウンタ値が基準値C1より小さい場合(ステップS104のNoの場合)、メモリコントローラ100は、初期プログラム電圧IVPGMの電圧値IVPGMoffsetのDAC値を、所定の値“N2”だけ上げる。例えば、値N2は、値N1の半分の大きさ程度に設定される。本例において、値N2は、“2”に設定される。
図14の(e)に示されるように、電圧値IVPGMoffsetのDAC値は、値N2の加算によって、“12”から“14”に変更される。
このように、メモリコントローラ100は、時刻t3のパトロール動作における各種の処理の結果に基づいて、テーブルTBLを、更新する。
時刻t4の書き込み動作の結果に対するテーブルTBLの更新後において、書き込み動作は、“14”のDAC値に対応する電圧値IVPGMoffsetの初期プログラム電圧IVPGMを用いて、実行される。
<時刻t5>
時刻t5において、書き込み動作が、図14の(e)のテーブルTBLに基づいた電圧値を有する初期プログラム電圧IVPGMを用いて、実行される。
時刻t5における書き込み動作(例えば、5回目の書き込み動作)の後、時刻t5の書き込み動作後の最初のパトロール動作(例えば、時刻t4におけるテーブルTBLの更新後の最初のパトロール動作)が、実行される。
このパトロール動作のECC処理、計算処理及び検出処理の結果に基づいて、図12の処理が実行される。
時刻t5の書き込み動作後の最初のパトロール動作の“AtoB”セルの検出結果において、図13に示されるように、“AtoB”セルの数が基準値C0より大きいため、アップカウンタ値が、インクリメントされる。これによって、図14の(f)に示されるように、アップカウンタ値は、“1”から“2”に増加する。
アップカウンタ値の更新の後、ステップS104において、更新後のアップカウンタ値が基準値C1以上であるか否か判定される。時刻t5の書き込み動作に対して、更新後のアップカウンタ値は、基準値C1(ここでは、“2”)以上である。
それゆえ、図12の処理は、ステップS104からステップS106へ進む。
基準値C1以上のアップカウンタ値は、プログラム電圧の電圧値が時刻t5の書き込み動作時におけるメモリセルの特性に対して過剰であることを示す。
<ステップS106>
アップカウンタ値が基準値C1以上である場合(ステップS104のYesの場合)、メモリコントローラ100は、初期プログラム電圧IVPGMの電圧値IVPGMoffsetのDAC値を、所定の値“N3”だけ下げる。例えば、値N3の絶対値は、値N1の絶対値より大きい。本実施形態において、値N3は、“6”に設定される。
図14の(f)に示されるように、メモリコントローラ100は、電圧値IVPGMoffsetのDAC値を、“14”から“8”に下げる。この減算処理によって、テーブルTBL内の電圧値IVPGMoffsetのDAC値が、変更される。
メモリコントローラ100は、時刻t5の書き込み動作に対する最初のパトロール動作における各種の処理の結果に基づいて、テーブルTBLを、更新する。
時刻t5の書き込み動作に対応したテーブルTBLの更新後において、書き込み動作は、“8”のDAC値に対応する電圧値IVPGMoffsetの初期プログラム電圧IVPGMを用いて、実行される。
<時刻t6>
時刻t6において、書き込み動作が、図14の(f)のテーブルTBLに基づいた電圧値を有する初期プログラム電圧IVPGMを用いて、実行される。
この後、時刻t6における書き込み動作(例えば、6回目の書き込み動作)の後の最初のパトロール動作(例えば、時刻t6におけるテーブルTBLの更新後の最初のパトロール動作)が、実行される。
このパトロール動作におけるECC処理、計算処理及び検出処理の結果に基づいて、図12の処理が実行される。
上述のように、時刻t6の書き込み動作に対して、アップカウンタ値は、基準値C1(=2)以上である。それゆえ、ステップS100の判定処理において、処理は、ステップS100からステップS110に進む。
<S110>
ステップS110において、メモリコントローラ100は、“A”ステートと“B”ステートとの間の着目領域内の“AtoB”セルの個数が、基準値C0より大きいか否か判定する。
図13に示されるように、時刻t6の書き込み動作において、“AtoB”セルの個数は、低減された初期プログラム電圧IVPGMGMの使用により、時刻t5の書き込み動作における“AtoB”セルの個数より小さくなる。例えば、時刻t6の書き込み動作における“AtoB”セルの個数は、基準値C0より小さい。
この場合(ステップS110のNoの場合)において、メモリコントローラ100は、処理を終了する。
それゆえ、図15の(a)に示されるように、テーブル内の各情報(例えば、初期プログラム電圧のDAC値)は、時刻t6における書き込み動作に用いられた図14の(f)の情報(パラメータ)からの更新無しに、維持される。
この結果として、時刻t6後において、書き込み動作は、“8”のDAC値に対応する電圧値IVPGMoffsetの初期プログラム電圧IVPGMを用いて、実行される。
<時刻tn>
時刻tnにおいて、書き込み動作が、図15の(a)のテーブルTBLに基づいた電圧値を有する初期プログラム電圧IVPGMを用いて、実行される。この書き込み動作は、“8”のDAC値に対応する電圧値IVPGMoffsetの初期プログラム電圧IVPGMを用いて、実行される。この後、時刻tnの書き込み動作後の最初のパトロール動作が、実行される。
このパトロール動作におけるECC処理、計算処理及び検出処理の結果に基づいて、図12の処理が実行される。
時刻tnの書き込み動作後のパトロール動作において、図13に示されるように、アップカウンタ値は、基準値C1に達している(ステップS100のYes)。“AtoB”セルの個数は基準値C0より大きい。
この場合において(ステップS100のYes及びステップS110のYesの場合)、メモリコントローラ100は、ステップS111の処理を実行する。
<ステップS111>
メモリコントローラ100は、ダウンカウンタの値を更新する。これによって、ダウンカウンタ値は、増加する。例えば、ダウンカウンタ値は、メモリコントローラ100によって、インクリメントされる。図15の(b)に示されるように、ダウンカウンタ値は、“0”から“1”に増加する。
<ステップS112>
ステップS112において、ダウンカウンタ値のインクリメントの後、メモリコントローラ100は、インクリメントされたダウンカウンタ値が基準値C2以上であるか否か判定する。
図13の時刻tnの書き込み動作において、ダウンカウンタ値は、基準値C2より小さい。この場合(ステップS112のNoの場合)において、図12の処理は、ステップS112の後、終了する。
テーブルTBL内の電圧値IVPGMoffset(DAC値)は、維持される。それゆえ、時刻tn後において、書き込み動作は、図15の(b)のテーブルTBLに示されるように、“8”のDAC値に対応する電圧値IVPGMoffsetの初期プログラム電圧IVPGMを用いて、実行される。
<時刻tn+1>
時刻tn+1において、書き込み動作が、図15の(b)のテーブルTBLに基づいた電圧値を有する初期プログラム電圧IVPGMを用いて、実行される。この後、時刻tn+1の書き込み動作後における最初のパトロール動作が、実行される。
このパトロール動作におけるECC処理及び計算処理の結果に基づいて、図12の処理が実行される。
図13に示されるように、時刻tn+1の書き込み動作に対するパトロール動作において、アップカウンタ値は基準値C1以上であり、“AtoB”セルの個数は基準値C0より小さい。
それゆえ、メモリコントローラ100は、ステップS100及びステップS110の判定処理を経て、図12の処理を終了する。
この結果として、図15の(c)に示されるように、テーブルTBL内の初期プログラム電圧IVPGMoffsetのDAC値は、維持される。
<時刻tn+2>
時刻tn+2において、書き込み動作が、図15の(c)のテーブルTBLに基づいた電圧値を有する初期プログラム電圧IVPGMを用いて、実行される。書き込み動作後の最初のパトロール動作が、実行される。
図13に示されるように、時刻tn+2の書き込み動作に対するパトロール動作におけるECC処理、計算処理及び検出処理の結果において、“AtoB”セルの個数は、基準値C0より大きい。
それゆえ、メモリコントローラ100は、ステップS100,S110の処理の後、ダウンカウンタ値を更新する。
これによって、図15の(d)に示されるように、ダウンカウンタ値は、“1”から“2”にインクリメントされる。
ステップS112において、インクリメントされたダウンカウンタ値は、基準値C2(ここでは、“3”)より小さい。
この場合において、メモリコントローラ100は、図12の処理を終了する。
この結果として、テーブルTBL内の初期プログラム電圧IVPGMoffsetのDAC値は、維持される。
<時刻tn+3>
時刻tn+3において、書き込み動作が、図15の(d)のテーブルTBLに基づいた電圧値を有する初期プログラム電圧IVPGMを用いて、実行される。この後、時刻tn+3の書き込み動作後の最初のパトロール動作が、実行される。
このパトロール動作におけるECC処理、計算処理及び検出処理の結果に基づいて、図12の処理が実行される。
図13に示されるように、時刻tn+3の書き込み動作に対するパトロール動作のECC処理及び計算処理/検出処理の結果において、“AtoB”セルの個数は、基準値C0より大きい。
それゆえ、メモリコントローラ100は、ステップS100,S110の判定処理の後、ダウンカウンタ値をインクリメントする。これによって、図15の(e)に示されるように、ダウンカウンタ値は、“2”から“3”に増加する。
ステップS113において、メモリコントローラ100は、現在のダウンカウンタ値が基準値C2以上であるか否か判定する。ここで、“3”に設定されたダウンカウンタ値は、基準値C2(“3”)以上である。基準値C2以上のダウンカウンタ値は、時刻tn+3において実行された書き込み動作時におけるメモリセルの特性を考慮した場合、初期プログラム電圧IVPGMを低下させたほうが好ましいことを示す。
この場合(ステップS112のYesの場合)において、メモリコントローラ100は、ステップS113の処理を実行する。
<ステップS113>
ステップS113において、ダウンカウンタ値が基準値C2以上である場合、メモリコントローラ100は、初期プログラム電圧IVPGMの電圧値IVPGMoffsetのDAC値を、所定の値“N4”だけ下げる。例えば、値N4は、値N1以下である。本実施形態において、値N4は、“1”に設定される。
図15の(e)に示されるように、メモリコントローラ100は、電圧値IVPGMoffsetのDAC値を、“8”から“7”に下げる。この減算処理に応じて、テーブルTBL内の電圧値IVPGMoffsetのDAC値が、変更される。
尚、ステップS113における電圧値IVPGMoffsetのDAC値の変更の後、ダウンカウンタ値は、“0”にリセットされてもよい。
このように、メモリコントローラ100は、時刻tn+3の書き込み動作に対するパトロール動作における各種の処理の結果に基づいて、テーブルTBLを、更新する。
この結果として、時刻tn+3後において、書き込み動作は、図15の(e)に示される電圧情報テーブルTBLに基づいて、“7”のDAC値に対応する電圧値IVPGMoffsetの初期プログラム電圧IVPGMを用いて、実行される。
以上のように、本実施形態のメモリシステムにおいて、初期プログラム電圧の設定処理(例えば、初期プログラム電圧の適正化処理)が、完了する。
一般に、NAND型フラッシュメモリは、初期プログラム電圧IVPGMの電圧値が上限値より低い値に設定された状態で、出荷される。
本実施形態において、例えば、初期プログラム電圧の設定の第1のステージ(例えば、時刻t1から時刻t5の期間)において、この初期プログラム電圧が、可能な限り上限値の近傍に達するように、オーバープログラム状態のメモリセルの検出結果を用いて設定される。
また、メモリシステムの使用期間の経過に伴って書き込み回数が増加すると、NAND型フラッシュメモリのメモリセルは、データの書き込みが比較的容易になる(例えば、書き込み速度が速くなる)という特性を有する。このため、上限値の近傍の電圧値の初期プログラム電圧の使用が継続されると、オーバープログラムが発生しやすくなる。
本実施形態において、初期プログラム電圧の設定の第2のステージ(例えば、時刻tnから時刻tn+4の期間)において、オーバープログラムのメモリセルの検出結果によって、初期プログラム電圧の電圧値が、第1のステージで設定された電圧値より低い電圧値に再設定される。
これによって、本実施形態において、フルシーケンス方式の書き込み動作に用いられる初期プログラム電圧IVPGMが、メモリシステム(NANDフラッシュメモリ)の使用状況に応じて、より適した電圧値に設定される。この結果として、書き込み動作時において、オーバープログラムが低減される。
(1b−3) パトロール動作におけるステップアップ電圧の設定
図16を参照して、本実施形態のメモリシステムのパトロール動作におけるステップアップ電圧dVPGMの設定方法(電圧値の適正化処理)を説明するためのフローチャートである。
図16に示されるように、図11に示される例と同様に、ステップS1からステップS8までの処理が実行される。
<ステップS12−1〜S12−5>
ステップS8の計算処理の後、計算処理の結果(例えば、ビットシフトテーブルTBLz)に基づいて、記憶すべきデータに対応したステートから上位のステートに閾値電圧がシフトしたメモリセルが、検出される。
ステップS12−1において、メモリコントローラ100は、“B”ステートから“C”ステートへ閾値電圧がシフトしたメモリセル(以下では、“BtoC”セルともよばれる)を、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、“B”ステートから“C”ステートへシフトしたメモリセルの個数をカウントする。
ステップS12−2において、メモリコントローラ100は、“C”ステートから“D”ステートへ閾値電圧がシフトしたメモリセル(以下では、“CtoD”セルともよばれる)を、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、ビットシフトテーブルTBLz内の“C”ステートから“D”ステートへシフトしたメモリセルの個数をカウントする。
ステップS12−3において、メモリコントローラ100は、“D”ステートから“E”ステートへ閾値電圧がシフトしたメモリセル(以下では、“DtoE”セルともよばれる)を、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、ビットシフトテーブルTBLz内の“D”ステートから“E”ステートへシフトしたメモリセルの個数をカウントする。
ステップS12−4において、メモリコントローラ100は、“E”ステートから“F”ステートへ閾値電圧がシフトしたメモリセル(以下では、“EtoF”セルともよばれる)を、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、ビットシフトテーブルTBLz内の“E”ステートから“F”ステートへシフトしたメモリセルの個数をカウントする。
ステップS12−5において、メモリコントローラ100は、“F”ステートから“G”ステートへ閾値電圧がシフトしたメモリセル(以下では、“FtoG”セルともよばれる)を、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、ビットシフトテーブルTBLz内の“F”ステートから“G”ステートへシフトしたメモリセルの個数をカウントする。
<ステップS13>
ステップS13において、メモリコントローラ100は、上位のステートへ閾値電圧がシフトしたメモリセルの検出結果に基づいて、ステップアップ電圧dVPGMの電圧値の設定処理を実行する。
これによって、ステップアップ電圧dVPGMの電圧値が、より適した値に設定される。
例えば、“BtoC”セルの発生数、“CtoD”セルの発生数、“DtoE”セルの発生数、“EtoF”セルの発生数及び“FtoG”セルの発生数の合計がある基準値より小さい場合、メモリコントローラ100は、ステップアップ電圧dVPGMの電圧値を維持又は増加するように、情報(例えば、DAC値)を設定する。例えば、“BtoC”セル〜“FtoG”セルの発生数の合計がある基準値以上である場合、メモリコントローラ100は、ステップアップ電圧dVPGMの電圧値を減少するように、情報(DAC値)を設定する。
<ステップS14>
ステップS14において、メモリコントローラ100は、ステップアップ電圧の設定処理の結果に基づいて、電圧情報テーブルTBL内の値を、設定されたステップアップ電圧dVPGMの電圧値を示す値に更新する。
メモリコントローラ100は、あるタイミングで、更新された電圧情報テーブルTBLの情報(値)をフラッシュメモリ10に通知する。
以上のように、本実施形態において、図16の処理によって、ステップアップ電圧dVPGMの大きさが、より適した値に設定(調整、補正)される。尚、上述の処理に応じて、ステップアップ電圧dVPGMの大きさが、デフォルト値に維持される場合もある。
以上のように、本実施形態のメモリシステムにおいて、パトロール動作は、あるメモリ空間に対する読み出し動作及びECC処理に加えて、ECC処理の結果に基づく計算処理(ステップS8)、オーバープログラム状態のメモリセルの検出(ステップS12−1〜S12−5)、ステップアップ電圧の設定(S13)及び電圧情報テーブルの更新(ステップS14)を含む。但し、ステップS8〜S14までの処理は、パトロール動作とは別の動作(シーケンス)として、扱われてもよい。
[具体例]
図17乃至図19を参照して、本実施形態のメモリシステムのパトロール動作におけるステップアップ電圧の設定方法(例えば、電圧値の適正化処理)のより具体的な一例について説明する。
図17は、本実施形態のメモリシステムのパトロール動作で実行されるにおける着目領域内のメモリセル(例えば、オーバープログラムセル)の検出結果を用いた処理シーケンスの具体例を説明するためのフローチャートである。
図18は、本実施形態のメモリシステムにおける、ステップアップ電圧の設定処理時の各種のパラメータの推移を示す模式図である。図18において、あるステート間で分布がオーバーラップした領域内のメモリセルの個数、ダウンカウンタ値及びステップアップ電圧の電圧値と時間との関係をそれぞれ示すグラフが示されている。
図19は、本実施形態のメモリシステムにおける、ステップアップ電圧の設定処理における、テーブル内の各値の推移を示す模式図である。
図17乃至図19の例において、チップIDが“0”、ブロック番号が“0”、ワード線番号が“0”、ストリングユニット番号が“0”である制御単位(データの書き込み/読み出しのためのアクセス単位)における、ステップアップ電圧dVPGMの設定処理について、説明する。
ステップアップ電圧の設定処理において、“B”から“G”ステートに関して隣り合うステートの分布間のオーバープログラム領域のそれぞれが、着目領域となる。
メモリシステムの使用開始後(例えば、メモリシステムに対する電源投入後)、ステップアップ電圧dVPGMの電圧値は、オーバープログラムの発生状況(オーバープログラム状態のメモリセル数)に応じて、以下のように、設定される。
<メモリシステムの初期状態時>
図19の(a)は、ステップアップ電圧の設定に関するテーブルの初期状態を示している。メモリシステムの初期状態において、ステップアップ電圧dVPGMの電圧値は、デフォルト値(dVPGM0)に設定されている。
それゆえ、メモリシステムの使用開始(例えば、メモリシステムの出荷時の状態)から書き込み動作後の最初のパトロール動作の実行前の期間の或る時刻において、書き込み動作は、デフォルト値のステップアップ電圧dVPGMを用いて、実行される。
メモリシステムの使用開始後、書き込み動作が、実行される。
<時刻t1>
時刻t1において、デフォルト値dVPGM0のステップアップ電圧dVPGMを用いた書き込み動作が実行される。この後、時刻t1の書き込み動作後の最初のパトロール動作が、或るタイミングで実行される。パトロール動作において、ステップアップ電圧の設定に関するオーバープログラム領域(着目領域)内のメモリセルが、検出される。例えば、メモリコントローラ100は、パトロール動作における全てのページの読み出し結果及びECC処理の結果に基づいて、“BtoC”セル、“CtoD”セル、“DtoE”セル、“EtoF”セル及び“FtoG”セルを検出する。メモリコントローラ100は、BtoC”セル、“CtoD”セル、“DtoE”セル、“EtoF”セル及び“FtoG”セルの個数を、作成されたビットシフトテーブルTBLzを用いて、カウントする。
<ステップS200>
図17のステップS200において、メモリコントローラ100は、これらのオーバープログラムセルの個数が基準値C0aより大きいか否か判定する。
図18に示されるように、時刻t1における、“BtoC”セル、“CtoD”セル、“DtoE”セル、“EtoF”セル及び“FtoG”セル(以下では、単に、着目セルとも表記する)の合計の個数は、基準値C0aより小さい。
この場合(ステップS200のNoの場合)において、メモリコントローラ100は、テーブルの更新無しに、図17の処理を終了する。
この結果として、図19の(b)に示されるように、ステップアップ電圧dVPGMは、デフォルト値dVPGM0に維持される。
<時刻t2>
時刻t2において、書き込み動作が、図19の(b)のテーブルTBLに基づいた電圧値を有するステップアップ電圧dVPGMを用いて、実行される。この後、時刻t2の書き込み動作の後の最初のパトロール動作が、実行される。
図18に示されるように、時刻t2の書き込み動作後の最初のパトロール動作のECC処理及び計算処理において、検出された“BtoC”〜“FtoG”セルの合計数は、基準値C0a以下である。
それゆえ、メモリコントローラ100は、ステップS200の処理の後、ステップアップ電圧dVPGMの電圧値の変更(テーブルの更新)なしに、図17の処理を終了する。
時刻t2以降の“BtoC”〜“FtoG”セルの合計数が基準値C0aより大きくなるまでの期間において、メモリコントローラ100は、テーブルTBL内のステップアップ電圧dVPGMの電圧値の更新無しに、図17の処理を終了する。
それゆえ、本実施形態のメモリシステムにおいて、“BtoC”〜“FtoG”セルの合計数が基準値C0a以下の期間において、デフォルト値dVPGM0のステップアップ電圧dVPGMを用いた書き込み動作が、実行される。
<時刻tm>
時刻tmにおいて、書き込み動作が、図19の(b)のテーブルTBLに基づいた電圧値を有するステップアップ電圧dVPGMを用いて、実行される。時刻tmの書き込み動作の後における最初のパトロール動作が、時刻tm後の或るタイミングで実行される。
図18に示されるように、時刻tmの書き込み動作に対するパトロール動作におけるECC処理、計算処理及び処理の結果において、“BtoC”〜“FtoG”セル(着目セル)の合計数が、基準値C0aより大きくなる。
この場合(ステップS200のYesの場合)において、処理は、ステップS200からステップS201へ進む。
着目セルの数が基準値C0aより大きい場合、メモリコントローラ100は、ステップS201の処理を実行する。
メモリコントローラ100は、ダウンカウンタの値を更新する。これによって、ダウンカウンタ値は、増加する。
例えば、ダウンカウンタ値は、メモリコントローラ100によって、インクリメントされる。図19の(c)に示されるように、ダウンカウンタ値は、“0”から“1”に増加する。
<ステップS202>
ステップS202において、ダウンカウンタ値のインクリメントの後、メモリコントローラ100は、インクリメントされたダウンカウンタ値が基準値C2a以上であるか否か判定する。
図18に示されるように、時刻tmの書き込み動作に対応するパトロール動作において、ダウンカウンタ値は、基準値C2a(例えば、C2a=“3”)より小さい。
この場合(ステップS202のNoの場合)において、メモリコントローラ100は、ステップアップ電圧の更新無しに、時刻tmの書き込み動作の結果に対する図17の処理を終了する。
この結果として、図19の(c)に示されるように、ステップアップ電圧dVPGMは、デフォルト値dVPGM0に維持される。時刻tmの書き込み動作に対する最初のパトロール動作後において、書き込み動作に用いられるステップアップ電圧dVPGMは、図19の(c)のテーブルTBL内のパラメータに基づいて、設定される。
<時刻tm+1>
時刻tm+1において、書き込み動作が、図19の(c)のテーブルTBLに基づいた電圧値を有するステップアップ電圧dVPGMを用いて、実行される。この後、時刻tm+1の書き込み動作後の最初のパトロール動作が、実行される。
図18に示されるように、時刻tm+1におけるパトロール動作におけるECC処理、計算処理及び検出処理の結果において、着目セルの合計数は、基準値C0a以下である。
この場合(ステップS200のNoの場合)において、メモリコントローラ100は、時刻tm+1における図17の処理を終了する。
この結果として、テーブルTBL内のステップアップ電圧dVPGMの値及びダウンカウンタ値の値は、更新無しに、維持される。
それゆえ、ステップアップ電圧dVPGMの値は、デフォルト値dVPGM0に維持される。
<時刻tm+2>
時刻tm+2において、書き込み動作が、図19の(c)のテーブルTBLに基づいた電圧値を有するステップアップ電圧dVPGMを用いて、実行される。この後、時刻tm+2の書き込み動作後の最初のパトロール動作が、実行される。
図18に示されるように、時刻tm+2の書き込み動作に対するパトロール動作におけるECC処理、計算処理及び検出処理の結果において、着目セルの合計数は、基準値C0aより大きい。
それゆえ、メモリコントローラ100は、ダウンカウンタ値を更新する。例えば、ダウンカウンタ値は、インクリメントされる。図19の(d)に示されるように、ダウンカウンタ値は、“1”から“2”に増加する。
この後、ステップS202において、メモリコントローラ100は、更新されたダウンカウンタ値が基準値C2a以上であるか否か判定する。
図18に示されるように、時刻tm+2において、ダウンカウンタ値は基準値C2aより小さい。
それゆえ、メモリコントローラ100は、時刻tm+2の書き込み動作の結果に対する図17の処理を、終了する。
<時刻tm+3>
時刻tm+3において、書き込み動作が、図19の(d)のテーブルTBLに基づいた電圧値を有するステップアップ電圧dVPGMを用いて、実行される。時刻tm+3以降の書き込み動作後の最初のパトロール動作が、実行される。
図18に示されるように、時刻tm+3の書き込み動作に対するパトロール動作におけるECC処理、計算処理及び検出処理の結果において、着目セルの合計数は、基準値C0aより大きい。
それゆえ、ダウンカウンタ値は、メモリコントローラ100によるインクリメントによって、更新される。図19の(e)に示されるように、ダウンカウンタ値は、“2”から“3”に増加する。
この後、ステップS202において、更新されたダウンカウンタ値が、基準値C2a以上であるか否か判定される。
図18に示されるように、時刻tm+3において、ダウンカウンタ値は基準値C2a以上になる。時刻tm+3におけるステップS200及びステップS202の判定結果は、現在設定されているステップアップ電圧の大きさが現在(例えば、時刻tm+3の書き込み動作時)のメモリセルの特性に対して過大であることを、示している。
この場合(ステップS202のYesの場合)において、メモリコントローラ100は、ステップアップ電圧dVPGMの電圧値のDAC値を、所定の値だけ下げる。
図19の(e)に示されるように、ステップアップ電圧dVPGMの電圧値は、電圧値dVPGM0から電圧値dVPGM1に変更される。電圧dVPGM1は、電圧dVPGM0より小さい。
このように、メモリコントローラ100は、パトロール動作における各種の処理の結果に基づいて、ステップアップ電圧の大きさを低下させる。
これによって、メモリコントローラ100は、時刻tm+3のパトロール動作における各種の処理の結果に基づいて、ステップアップ電圧dVPGMの情報に関するテーブルTBLを更新する。テーブル内のステップアップ電圧dVPGMに関するパラメータは、図19の(e)に示されるように、設定される。尚、テーブルTBL内のダウンカウンタ値は、“0”にリセットされてもよい。
この後、メモリコントローラ100は、時刻tm+3の書き込み動作に対する図17の処理を終了する。
時刻tm+3におけるテーブルTBLの更新後において、書き込み動作は、図19の(e)のテーブルTBLに基づいて、デフォルト値より低いステップアップ電圧dVPGM(dVPGM1)を用いて、実行される。
この後、図17乃至図19の処理と実質的に同じ処理が、メモリシステムの使用の経過とともに、実行される。
以上のように、本実施形態のメモリシステムにおいて、ステップアップ電圧の設定処理(例えば、ステップアップ電圧の適正化処理)が、完了する。
これによって、本実施形態において、フルシーケンス方式の書き込み動作に用いられる初期プログラム電圧IVPGMが、より適した電圧値に設定される。
この結果として、本実施形態のメモリシステムは、フラッシュメモリにおける書き込みループの回数を削減できる。
また、本実施形態のメモリシステムは、書き込み動作時において、メモリセルの特性に対して過剰な電圧によるオーバープログラムが低減される。
(1b−4) 適用例
図20を参照して、本実施形態のメモリシステムの適用例について、を説明する。
上述のように、パトロール動作において、全ページに対するデータの読み出しが実行される。全ページのデータの読み出し結果及び読み出しデータに対するECC処理の結果を用いて、プログラム電圧の初期プログラム電圧IVPGM及びステップアップ電圧dVPGMの適正化処理が、実行される。
それゆえ、以下のように、本実施形態における初期プログラム電圧IVPGMの適正化処理とステップアップ電圧dVPGMの適正化処理は、連続した処理として、実行できる。
図20は、本実施形態のメモリシステムの適用例を説明するためのフローチャートである。
図20に示されるように、図11(及び図16)のステップS1〜S8の処理に同様に、ステップS1からステップS8までの処理において、書き込み動作後の最初のパトロール動作が実行される。この最初のパトロール動作において、フラッシュメモリ10のパトロール対象(例えば、セルユニット内の全てのページ)から、データが読み出される。読み出されたデータに対して、エラーの検出及び訂正が、実行される。
ステップS8の計算処理が、誤り訂正前読み出しデータ及び誤り訂正後読み出しデータを用いて実行される。例えば、この計算処理の結果に基づいて、ビットシフトテーブルTBLzが、作成される。
計算処理の後、ステップS9において、メモリコントローラ100は、計算処理の結果に基づいて、“ErtoA”セルを検出する。例えば、メモリコントローラ100は、“ErtoA”セルの個数をカウントする。
ステップS10において、メモリコントローラ100は、“AtoB”セルの検出結果に基づいて、初期プログラム電圧IVPGMの電圧の適正化処理を実行する。
これによって、初期プログラム電圧IVPGMの電圧値が、取得される。
この後、ステップS12−1からステップS12−5のように、メモリコントローラ100は、計算処理の結果に基づいて、“BtoC”セル、“CtoD”セル、“DtoE”セル、“EtoF”セル及び“FtoG”セルを検出する。例えば、それらのメモリセルの個数(オーバープログラムセル)が、カウントされる。
ステップS13において、メモリコントローラは、ステップS12−1〜S12−5におけるセルの検出結果に基づいて、ステップアップ電圧dVPGMの電圧の適正化処理を実行する。
これによって、ステップアップ電圧dVPGMの電圧値が、取得される。
本来記憶すべきデータに対応するステートから1つ上位のステートに閾値電圧がシフトしたメモリセルの個数が、カウントされる。
この結果に基づいて、ステップアップ電圧dVPGMの電圧値が、設定される。
ステップS14において、メモリコントローラ100は、初期プログラム電圧の設定処理の結果及びステップアップ電圧の設定処理の結果に基づいて、電圧情報テーブルTBL内の値を、設定された電圧IVPGM,dVPGMの電圧値を示す値に更新する。
例えば、初期プログラム電圧の設定時及びステップアップ電圧の設定時に、図12及び図17の処理が、それぞれ実行されてもよい。
以上のように、本実施形態のメモリシステムは、1つの処理シーケンスで、プログラム電圧及びステップアップ電圧の適正化処理を、実行できる。
(d) まとめ
以上のように、本実施形態のメモリシステムは、データの読み出しの結果及びECC処理の結果に応じて、書き込み動作に用いられる複数の電圧(例えば、初期プログラム電圧及びステップアップ電圧の少なくとも一方)を、調整及び設定する。例えば、本実施形態のメモリシステムは、フラッシュメモリの現在のメモリセルの特性(例えば、メモリセルの書き込み速度)に応じて、書き込み動作に用いられる複数の電圧を、より適した値に設定する。
これによって、本実施形態のメモリシステムは、フラッシュメモリの書き込み動作中の書き込みループの回数を、削減できる。
この結果として、本実施形態のメモリシステムは、書き込み動作を高速化できる。
また、本実施形態のメモリシステムは、フラッシュメモリの特性の変化(例えば、経時変化又は使用による劣化)に応じた電圧を設定できる。これによって、本実施形態のメモリシステムは、例えば、メモリセルの特性に対して過大なプログラム電圧に起因するオーバープログラムのように、メモリセルの閾値電圧が意図しない値(ステート)になるのを、抑制できる。
この結果として、本実施形態のメモリシステムは、データの信頼性を改善できる。
以上のように、本実施形態のメモリシステムは、高性能なメモリシステムを提供できる。
(2) 第2の実施形態
図21乃至図26を参照して、第2の実施形態のメモリシステム及びその制御方法について、説明する。
書き込み動作に用いられる各種の電圧に加えて、消去動作に用いられる電圧が、ステートがシフトしたメモリセルの個数に応じて、決定されてもよい。
以下に、読み出し動作及びECC処理の結果に基づく消去動作に用いられる電圧の設定方法(適正化処理)について、説明する。
図21は、本実施形態のメモリシステムの動作例における、パトロール動作における消去電圧の設定方法を説明するためのフローチャートである。
図21に示されるように、第1の実施形態の処理フロー(例えば、図11の処理フロー)ように、初期プログラム電圧IVPGMの電圧値及びステップアップ電圧dVPGMの電圧値が、パトロール動作の読み出し動作の結果及びECC処理の結果に基づいて、それぞれ決定される。
この後、ステップS20,S21のように、消去動作に用いられる電圧の設定処理(例えば、初期消去電圧の適正化処理)が、実行される。
<ステップS20>
初期消去電圧の設定処理において、“Er”ステートの分布と“A”ステートの分布との間のオーバープログラム領域(“ErtoA”セルが存在する領域)が、初期消去電圧IVERAの設定のための着目領域(以下では、消去不足領域ともよばれる)となる。
ステップS20において、メモリコントローラ100は、“Er”ステートに対応する値から“A”ステートに対応する値へ閾値電圧がシフトしたメモリセル(“ErtoA”セル)を、検出する。例えば、メモリコントローラ100は、“ErtoA”セルの個数をカウントする。
<ステップS21>
メモリコントローラ100は、“ErtoA”セルの検出結果(“ErtoA”セルの個数)に基づいて、初期消去電圧IVERAの電圧値を決定する。
この後、ステップS90において、メモリコントローラ100は、初期プログラム電圧IVPGMの電圧値及びステップアップ電圧dVPGMの電圧値とともに、初期消去電圧IVERAの電圧値に関して、電圧情報テーブルTBL内の値を更新する。
このように、本実施形態のメモリシステムは、消去動作に用いられる電圧(例えば、初期消去電圧)の適正化処理を実行できる。
尚、本実施形態において、初期プログラム電圧IVPGM及びステップアップ電圧dVPGMの設定処理を実行せずに、初期消去電圧の設定処理のみが、パトロール動作における読み出し動作の結果及びECC処理の結果に基づいて、実行されてもよい。
[具体例]
図22乃至図25を参照して、本実施形態のメモリシステムにおける、パトロール動作における消去電圧の設定方法(例えば、電圧値の適正化処理)のより具体的な一例について説明する。
図22は、本実施形態のメモリシステムのパトロール動作における消去不良のメモリセルの検出結果を用いた処理シーケンスの具体例を説明するためのフローチャートである。
図23は、本実施形態のメモリシステムにおける、消去電圧の設定処理時の各種のパラメータの推移を示す模式図である。図23において、“Er”ステートと“A”ステートとに関する着目領域内のメモリセルの個数、アップカウンタ値、ダウンカウンタ値及び消去電圧の電圧値と時間との関係をそれぞれ示すグラフが示されている。
図24及び図25は、本実施形態のメモリシステムにおける、消去電圧の設定処理における、電圧情報テーブル内の各値の推移を示す模式図である。
図22乃至図25の例において、チップIDが“0”及びブロック番号が“0”の制御単位における、初期消去電圧IVERAの設定処理について、説明する。尚、ここでは、ワード線番号が“0”、ストリングユニット番号が“0”である制御単位から、初期消去電圧IVERAの値が、計算される。但し、ワード線番号及びストリングユニット番号は、上記の値に限定されない。
上述のように、初期消去電圧の設定処理において、“ErtoA”セルが存在する消去不足領域が、初期消去電圧IVERAの設定のための着目領域となる。
本例において、メモリシステムの使用開始後、初期消去電圧IVERAの電圧値は、“ErtoA”セルの発生状況(“ErtoA”状態のメモリセル数)に応じて、以下のように、設定される。
<メモリシステムの初期状態>
図24の(a)は、消去電圧の設定に関するテーブルの初期状態を示している。図24の(a)に示されるように、NANDフラッシュメモリの初期状態(メモリシステムの初期状態)において、電圧値IVERAoffsetは、“00”の情報で、消去電圧情報テーブルTBL−ERA内に示されている。メモリコントローラ100は、初期消去電圧IVERAの電圧値に関する設定情報を保持していない。初期消去電圧IVERAの電圧値IVERAoffsetは、デフォルト値に設定されている。フラッシュメモリ10は、デフォルト値の初期消去電圧IVERAを用いて、消去動作を実行する。
アップカウンタのカウンタ値及びダウンカウンタのカウンタ値のそれぞれは、“0”に設定されている。
メモリシステムの使用開始後、消去動作及び書き込み動作が、実行される。
本実施形態において、メモリシステムは、メモリシステムの使用開始後から或る時刻までの期間内において、デフォルト値を有する初期消去電圧IVERAを用いて、NANDフラッシュメモリに対する消去動作を実行する。消去動作の後、書き込み動作が実行される。
<時刻t1>
メモリシステムの使用開始から或る時刻t1において、書き込み動作(例えば、メモリシステムの使用開始から最初の書き込み動作)が、図24の(a)の電圧情報テーブルの設定条件に基づく消去動作の後、実行される。時刻t1における消去動作/書き込み動作の後の或るタイミングで、時刻t1における書き込み動作後の最初のパトロール動作が、実行される(図21のステップS2)。パトロール動作に基づいて、計算処理及び“ErtoA”セルの検出が、実行される(図21のステップS8,S20)。これによって、着目領域(消去不足領域)内の“ErtoA”セルの個数が、カウントされる。例えば、時刻t1のパトロール動作で検出された“ErtoA”セルの個数は、判定値CE0より小さい。
パトロール動作によって得られた結果を用いて、図22の処理フローが実行される。
<ステップS300>
ステップS300において、メモリコントローラ100は、ダウンカウンタ値が基準値CE2(例えば“2”)より小さいか否か、判定する。時刻t1において、図23及び図24の(a)に示されるように、ダウンカウンタ値は、基準値CE2より小さい。
ステップS300の判定結果が“Yes”である場合、処理は、ステップS300の後、ステップS301に進む。
<ステップS301>
ステップS301において、メモリコントローラ100は、着目領域(ここでは、“ErtoA”セルの領域)内のメモリセル数が、基準値CE0より大きいか否か判定する。メモリシステムの初期状態において、“ErtoA”セルの数は、基準値CE0以下である。これは、現在の消去電圧の条件でメモリセルが過消去状態になる傾向であることを、示している。この場合において、初期消去電圧IVERAの大きさを小さくすることが可能である。
ステップS301の判定結果が“No”である場合、処理は、ステップS301の後、ステップS302に進む。
<ステップS302>
ステップS302において、ステップS301の判定結果に基づいて、メモリコントローラ100は、初期消去電圧IVERAの電圧値IVERAoffsetのDAC値を、所定の値“N5(例えば、4)”だけ下げる。
メモリコントローラ100は、ステップS301の判定結果を反映するために、電圧情報テーブルTBL−ERAを更新する。
図24の(b)に示されるように、メモリコントローラ100は、テーブルTBLの初期消去電圧IVERAの電圧値IVERAoffsetの項目内に、“−4”を書き込む。これによって、テーブルTBL内の値IVERAoffsetのDAC値が、“00”から“−4”に変更される。
これによって、時刻t1の書き込み動作に対するパトロール動作の結果に基づく処理は、終了する。
時刻t1の書き込み動作及びパトロール動作における各種の処理の結果に基づいたテーブルTBLの更新後において、消去動作は、図24の(b)のテーブルTBLのパラメータのように“−4”のDAC値に対応する電圧値IVERAoffsetの初期消去電圧IVERAを用いて、実行される。このように、初期消去電圧IVERAの電圧値が、小さくされる。
<時刻t2>
時刻t2において、図24の(b)のテーブルTBLに基づいた電圧値を有する初期消去電圧を用いて、消去動作及び書き込み動作(例えば、2回目の消去動作/書き込み動作)が実行される。この後、時刻t2の消去動作/書き込み動作後における最初のパトロール動作(例えば、時刻t1におけるテーブルTBLの更新後の最初のパトロール動作)が、実行される。
時刻t2の消去動作/書き込み動作後のパトロール動作における計算処理及び“ErtoA”セルの検出結果に基づいて、図22の処理が実行される。
図23に示されるように、時刻t2の消去動作/書き込み動作に対するパトロール動作における各種の処理の結果は、時刻t1の消去動作/書き込み動作のパトロール動作における各種の処理の結果と同様である。
それゆえ、メモリコントローラ100は、ステップS300,S301の後、ステップS302の処理を実行する。メモリコントローラ100は、テーブルTBL内の電圧値IVERAoffsetのDAC値を、値N5分だけ下げる。図24の(c)に示されるように、電圧値IVERAoffsetのDAC値は、“−4”から“−8”に変更される。
このように、メモリコントローラ100は、時刻t2の消去動作/書き込み動作に対するパトロール動作における各種の処理の結果に基づいて、テーブルTBLを、更新する。
時刻t2の書き込み動作及びパトロール動作における各種の処理の結果に基づくテーブルTBLの更新後において、消去動作は、図24の(c)のテーブルTBLのパラメータのように“−8”のDAC値に対応する電圧値IVERAoffsetの初期消去電圧IVERAを用いて、実行される。
<時刻t3>
時刻t3において、図24の(c)のテーブルTBLに基づいた電圧値を有する消去電圧を用いて、消去動作/書き込み動作(例えば、3回目の消去動作/書き込み動作)が実行される。この後、時刻t3の消去動作/書き込み動作後における最初のパトロール動作(例えば、時刻t2におけるテーブルTBLの更新後の最初のパトロール動作)が、実行される。
時刻t3の消去動作/書き込み動作に対するパトロール動作における計算処理及び“ErtoA”セルの検出結果に基づいて、図22の処理が実行される。
時刻t2の消去動作/書き込み動作に対するパトロール動作時の処理と同様に、メモリコントローラ100は、テーブルTBL内の電圧値IVERAoffsetのDAC値を、値N5だけ下げる。これによって、図24の(d)に示されるように、電圧値IVERAoffsetのDAC値は、“−8”から“−12”に変更される。
このように、テーブルTBLは、時刻t3の消去動作/書き込み動作に対するパトロール動作における各種の処理の結果に基づいて、更新される。
時刻t3の書き込み動作及びパトロール動作における各種の処理の結果に基づくテーブルTBLの更新後において、消去動作は、図24の(d)のテーブルTBLのパラメータのように“−12”のDAC値に対応する電圧値IVERAoffsetの初期消去電圧IVERAを用いて、実行される。
<時刻t4>
時刻t4において、図24の(b)のテーブルTBLに基づいた電圧値を有する初期消去電圧を用いて、消去動作/書き込み動作(例えば、4回目の消去動作/書き込み動作)が実行される。この後、時刻t4の消去動作/書き込み動作後における最初のパトロール動作(例えば、時刻t3におけるテーブルTBLの更新後の最初のパトロール動作)が、実行される。
このパトロール動作における各種の処理の結果に基づいて、図22の処理が実行される。
例えば、時刻t4の消去動作/書き込み動作に対するパトロール動作の“ErtoA”セルの検出結果において、図23に示されるように、“ErtoA”セルの数が、基準値CE0より大きくなる。
この場合において、処理は、ステップS301からステップS303に進む。
<ステップS303>
“ErtoA”セルの数が基準値CE0より大きい場合(ステップS301のYesの場合)、ステップS303において、メモリコントローラ100は、ダウンカウンタの値を更新する。これによって、ダウンカウンタ値は、増加する。ダウンカウンタ値の増加は、消去電圧IVERAの大きさが下限値に近づいてきたことを示す。
例えば、ダウンカウンタ値は、メモリコントローラ100によって、インクリメントされる。図24の(e)に示されるように、ダウンカウンタ値は、“0”から“1”に増加する。
<ステップS304>
ステップS304において、ダウンカウンタ値の増加の後、メモリコントローラ100は、増加されたダウンカウンタ値が基準値CE2以上であるか否か判定する。
図23の時刻t4において、ダウンカウンタ値は、基準値CE2より小さい。この場合において、図22の処理は、ステップS304からステップS305へ進む。
<ステップS305>
ダウンカウンタ値が基準値CE2より小さい場合(ステップS304のNoの場合)、メモリコントローラ100は、初期消去電圧IVERAの電圧値IVERAoffsetのDAC値を、所定の値“N6”だけ下げる。例えば、値N6は、値N5の半分の大きさ程度に設定される。本例において、値N6は、“−2”に設定される。
図24の(e)に示されるように、電圧値IVERAoffsetのDAC値は、 “−12”から“−14”に変更される。
このように、メモリコントローラ100は、時刻t4の消去動作/書き込み動作に対するパトロール動作における各種の処理の結果に基づいて、電圧情報テーブルTBLを、更新する。
時刻t4の書き込み動作及びパトロール動作における各種の処理の結果に基づくテーブルTBLの更新後において、消去動作は、図24の(e)のテーブルTBLのパラメータのように、“−14”のDAC値に対応する電圧値IVERAoffsetの初期消去電圧IVERAを用いて、実行される。
<時刻t5>
時刻t5において、図24の(e)のテーブルTBLに基づいた電圧値を有する初期消去電圧を用いて、消去動作/書き込み動作(例えば、5回目の消去動作/書き込み動作)が実行される。この後、時刻t5の消去動作/書き込み動作後の最初のパトロール動作(例えば、時刻t4におけるテーブルTBLの更新後の最初のパトロール動作)が、実行される。
パトロール動作におけるECC処理、計算処理及び“ErtoA”セルの検出結果に基づいて、図22の処理が実行される。
時刻t5の消去動作/書き込み動作に対するパトロール動作の“ErtoA”セルの検出結果において、図23に示されるように、“ErtoA”セルの数が基準値CE0より大きい。このため、ダウンカウンタ値が、インクリメントされる。これによって、図24の(f)に示されるように、ダウンカウンタ値は、“1”から“2”に増加する。
ダウンカウンタ値の更新の後、ステップS304において、更新後のダウンカウンタ値が基準値CE2以上であるか否か判定される。時刻t5において、更新後のダウンカウンタ値は、基準値CE2(ここでは、“2”)以上である。
それゆえ、図22の処理は、ステップS304からステップS306へ進む。
<ステップS306>
ステップS304における判定結果が更新後のダウンカウンタ値が基準値CE2以上となることは、初期消去電圧IVERAの大きさが、現在(時刻t5の消去動作/書き込み動作の時点)のメモリセルの特性に対して、低すぎることを示す。それゆえ、現在の設定値の初期消去電圧IVERAを用いて消去動作が実行された場合、消去不足のメモリセルの個数が過剰である可能性がある。
したがって、ダウンカウンタ値が基準値CE2以上である場合(ステップS304のYesの場合)、ステップS306において、メモリコントローラ100は、初期消去電圧IVERAの電圧値IVERAoffsetのDAC値を、所定の値“N7”だけ上げる。例えば、値N7の絶対値は、値N5の絶対値より大きい。本実施形態において、値N7は、“6”に設定される。
図24の(f)に示されるように、メモリコントローラ100は、電圧値IVERAoffsetのDAC値を、“−14”から“−8”に上げる。この処理によって、テーブルTBL内の電圧値IVERAoffsetのDAC値が、変更される。
このように、メモリコントローラ100は、時刻t5の消去動作/書き込み動作に対するパトロール動作における各種の処理の結果に基づいて、テーブルTBLを、更新する。
時刻t5における書き込み動作及びパトロール動作における各種の処理の結果に基づくテーブルTBLの更新後において、消去動作は、図24の(f)のテーブルTBLのパラメータのように、“−8”のDAC値に対応する電圧値IVERAoffsetの初期消去電圧IVERAを用いて、実行される。このように、初期消去電圧IVERAの電圧値が、大きくされる。
<時刻t6>
時刻t6において、図24の(f)のテーブルTBLに基づいた電圧値を有する初期消去電圧を用いて、消去動作/書き込み動作(例えば、6回目の消去動作/書き込み動作)が実行される。この後、時刻t6の消去動作/書き込み動作後の最初のパトロール動作(例えば、時刻t5におけるテーブルTBLの更新後の最初のパトロール動作)が、或るタイミングで実行される。
上述のように、時刻t6の消去動作/書き込み動作に対するパトロール動作における各種の処理の結果において、ダウンカウンタ値は、基準値CE2(=2)以上である。ステップS300の判定処理において、処理は、ステップS300からステップS310に進む。
<S310>
図22のステップS310において、メモリコントローラ100は、着目領域内の“ErtoA”セルの個数が、基準値CE0より大きいか否か判定する。
図23に示されるように、時刻t6の消去動作/書き込み動作において、“ErtoA”セルの個数は、低減された初期消去電圧IVERAの使用により、時刻t5の消去動作/書き込み動作における“ErtoA”セルの個数より少なくなる。例えば、時刻t6における“ErtoA”セルの個数は、基準値CE0より小さい。
ステップS310の判定結果が“No”である場合において、メモリコントローラ100は、図22の処理を終了する。
それゆえ、図25の(a)に示されるように、電圧情報テーブルTBL内の各情報(例えば、初期消去電圧のDAC値)は、時刻t5の消去動作/書き込み動作における設定からの更新無しに、維持される。
この結果として、時刻t6の消去動作/書き込み動作に対するパトロール動作後において、消去動作は、図25の(a)のテーブルTBLのパラメータのように、“−8”のDAC値に対応する電圧値IVERAoffsetを用いて、実行される。
<時刻tp>
時刻tpにおいて、図24の(f)のテーブルTBLに基づいて、“−8”のDAC値に対応する電圧値IVERAoffsetの初期消去電圧IVERAを用いて消去動作が実行された後、書き込み動作が実行される。この後、その消去動作/書き込み動作後の最初のパトロール動作が、実行される。
時刻tpの消去動作/書き込み動作に対するパトロール動作において、図23に示されるように、ダウンカウンタ値は、基準値CE2に達している(ステップS300のNo)。時刻tpの消去動作/書き込み動作において、“ErtoA”セルの個数は、基準値CE0より大きい。
この場合において(ステップ300のNo及びステップS310のYesの場合)、メモリコントローラ100は、図22のステップS311の処理を実行する。
<ステップS311>
ステップS311において、メモリコントローラ100は、アップカウンタの値を更新する。これによって、アップカウンタ値は、増加する。例えば、アップカウンタ値は、メモリコントローラ100によって、インクリメントされる。図25の(b)に示されるように、アップカウンタ値は、“0”から“1”に増加する。
<ステップS312>
ステップS312において、アップカウンタ値のインクリメントの後、メモリコントローラ100は、インクリメントされたアップカウンタ値が基準値CE1以上であるか否か判定する。
時刻tpにおいて、アップカウンタ値は、基準値CE1より小さい。この場合(ステップS112のNoの場合)において、図22の処理は、ステップS312の後、終了する。
テーブルTBL内の電圧値IVERAoffsetのパラメータ(DAC値)は、維持される。それゆえ、時刻tpの消去動作/書き込み動作に対するパトロール動作後において、消去動作は、図25の(b)のテーブルTBLのパラメータのように、“−8”のDAC値に対応する電圧値IVERAoffsetの初期消去電圧IVERAを用いて、実行される。
<時刻tp+1>
時刻tp+1において、消去動作/書き込み動作が、図25の(b)の電圧情報テーブルTBLに基づいた電圧値を有する初期消去電圧を用いて、実行される。この後、時刻tp+1の消去動作/書き込み動作後における最初のパトロール動作が、或るタイミングで実行される。
図23に示されるように、時刻tp+1の消去動作/書き込み動作後における最初のパトロール動作における各種の処理の結果において、ダウンカウンタ値は基準値CE2以上であり、“ErtoA”セルの個数は基準値CE0より小さい。それゆえ、メモリコントローラ100は、ステップS300及びステップS310の判定処理を経て、図22の処理を終了する。
この結果として、図25の(c)に示されるように、電圧情報テーブルTBL内の初期消去電圧IVERAoffsetのDAC値は、維持される。
<時刻tp+2>
時刻tp+2において、図24の(f)の電圧情報テーブルTBLに基づいた電圧値を有する初期消去電圧を用いて、消去動作/書き込み動作が、実行される。この後、消去動作/書き込み動作後の最初のパトロール動作が、実行される。
図23に示されるように、時刻tp+2の消去動作/書き込み動作に対するパトロール動作において、“ErtoA”セルの個数は、基準値CE0より大きい。
それゆえ、メモリコントローラ100は、ステップS300,S310の処理の後、アップカウンタ値を更新する。
これによって、図25の(d)に示されるように、アップカウンタ値は、“1”から“2”にインクリメントされる。
ステップS312において、インクリメントされたアップカウンタ値は、基準値CE1(ここでは、“3”)より小さい。
それゆえ、メモリコントローラ100は、図22の処理を終了する。
電圧情報テーブルTBLの更新後において、図25の(d)に示されるように、テーブルTBL内の初期消去電圧IVERAoffsetのDAC値は、維持される。時刻tp+2の消去動作/書き込み動作に対するパトロール動作後において、消去動作は、図25の(d)のテーブルTBLのパラメータのように、“−8”のDAC値に対応する電圧値IVERAoffsetの初期消去電圧IVERAを用いて、実行される。
<時刻tp+3>
時刻tp+3において、図25の(d)の電圧情報テーブルTBLに基づいた電圧値を有する初期消去電圧を用いて、消去動作/書き込み動作(例えば、6回目の消去動作/書き込み動作)が実行される。この後、時刻tp+3の消去動作/書き込み動作後の最初のパトロール動作が、実行される。
図23に示されるように、時刻tp+3の消去動作/書き込み動作における“ErtoA”セルの個数は、基準値CE0より大きい。
それゆえ、メモリコントローラ100は、ステップS300,S310の判定処理の後、図22のステップS311において、アップカウンタ値をインクリメントする。これによって、図25の(e)に示されるように、アップカウンタ値は、“2”から“3”に増加する。
ステップS312において、メモリコントローラ100は、現在のアップカウンタ値が基準値CE1以上であるか否か判定する。ここで、時刻tp+3の消去動作/書き込み動作の結果において、“3”に設定されたアップカウンタ値は、基準値CE1(ここでは“3”)以上である。
この場合(ステップS312のYesの場合)において、メモリコントローラ100は、ステップS313の処理を実行する。
アップカウンタ値が基準値CE1以上である場合、初期消去電圧IVERAの電圧値が、時刻tp+3の時点におけるメモリセルの特性に対して不足していることを示す。
<ステップS313>
ステップ313において、アップカウンタ値が基準値CE1以上である場合、メモリコントローラ100は、初期消去電圧IVERAの電圧値IVERAoffsetのDAC値を、所定の値“N8”だけ上げる。例えば、値N8は、値N7以下である。本実施形態において、値N8は、“1”に設定される。
図25の(e)に示されるように、メモリコントローラ100は、電圧値IVERAoffsetのDAC値を、“−8”から“−7”に上げる。このように、テーブルTBL内の電圧値IVERAoffsetのDAC値が、変更される。
尚、ステップS313における電圧値IVERAoffsetのDAC値の変更の後、アップカウンタ値は“0”にリセットされてもよい。
このように、メモリコントローラ100は、時刻tp+3の消去動作/書き込み動作後の最初のパトロール動作における各種の処理の結果に基づいて、電圧情報テーブルTBLを、更新する。
この結果として、時刻tp+3の消去動作/書き込み動作に対するパトロール動作(及び消去電圧の設定処理)後において、消去動作は、図25の(e)の電圧情報テーブルTBLのパラメータのように、“−7”のDAC値に対応する電圧値IVERAoffsetの初期消去電圧IVERAを用いて、実行される。このように、初期消去電圧IVERAの電圧値が、大きくされる。
この後、図22乃至図25の処理と実質的に同じ処理が、メモリシステムの使用の経過とともに、実行される。
図26は、本実施形態のメモリシステムの消去電圧の設定方法の変形例を示すフローチャートである。
図26に示されるように、消去電圧(例えば、初期消去電圧)の設定(適正化)のみが、初期プログラム電圧及びステップアップ電圧の少なくとも一方の設定処理なしに、パトロール動作における各種の処理の結果に基づいて、実行されてもよい。
本実施形態のメモリシステムにおいて、パトロール動作は、あるメモリ空間に対する読み出し動作及びECC処理に加えて、ECC処理の結果に基づく計算処理(ステップS8)、メモリセルの検出処理(ステップS9,S12−1〜S12−5,S20)、初期消去電圧の設定(ステップS21)及び電圧情報テーブルの更新(ステップS90)を含む。但し、ステップS8〜S90までの処理は、パトロール動作とは別の動作(シーケンス)として、扱われてもよい。
以上のように、本実施形態のメモリシステムは、パトロール動作の各種の処理の結果に基づいて、消去電圧の電圧値を適正化できる。
したがって、本実施形態のメモリシステムは、高性能化が図られる。
(3) 第3の実施形態
図27乃至図30を参照して、第3の実施形態のメモリシステム及びその制御方法について、説明する。
上述の実施形態において、Aステートに対応するデータ、Bステートに対応するデータ、・・・、Fステートに対応するデータ、及びGステートに対応するデータに対する一括の書き込み動作が実行される例(フルシーケンス方式)が、示される。
但し、NAND型フラッシュメモリに用いられる書き込み動作は、フルシーケンス方式に限定されない。
例えば、Foggy−Fine方式の書き込み動作が、NAND型フラッシュメモリの書き込み動作に用いられてもよい。
図27は、Foggy−Fine方式の書き込み動作を説明するための模式図である。
Foggy−Fine方式の書き込み動作において、FoggyプログラムとFineプログラムとが、実行される。以下において、Foggyプログラムが実行される段階は、Foggyステージとよばれ、Fineプログラムが実行される段階は、Fineステージとよばれる。
図27の(a)に示されるように、Foggyプログラム(Foggyステージ)において、2つの独立した閾値電圧分布801,802が、“Er”ステートのメモリセルに対するプログラム電圧の印加によって、形成される。
例えば、分布801は、“Er”ステートのメモリセル及び“A”ステートに対応するデータが書き込まれるメモリセルを含む分布である。
分布802は、“B”ステートから“G”ステートにそれぞれ対応するデータが書き込まれるメモリセルを含む分布である。
図27の(b)に示されるように、Fineプログラム(Fineステージ)において、8つのステートにそれぞれ対応するように、データの書き込み(プログラム電圧の印加)が実行される。例えば、図8の例と同様に、下位のステートから上位のステートへのプログラム動作が、ステップアップ電圧が初期プログラム電圧に順次加算されながら、実行される。
Foggy−Fine方式の書き込み動作において、“A”ステートの分布が分布801から形成され、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート及び“G”ステートの分布が、分布802から形成される。
これによって、メモリセルの閾値電圧が、書き込むべきデータに対応する電圧値に、達する。
このように、Foggy−Fine方式の書き込み動作は、メモリセルの閾値電圧がラフなプログラム状態からデータに対応したプログラム状態に移行するように、2つの段階(ステージ)に分けてデータの書き込みを行うプログラム方式である。
図27の(c)は、書き込み動作に用いられる電圧の設定に考慮すべき閾値電圧の変動を説明するための模式図である。
Foggy−Fine方式の書き込み動作において、書き込み動作のFineステージにおいて、分布801から“A”ステートに向かって、及び、分布802から“B”、“C”、“D”、“F”及び“G”ステートに向かって、メモリセルの閾値電圧が、プログラム電圧の印加によって上昇される。Fineステージの開始から最初の数回の書き込みループにおいて、プログラム電圧の電圧値は、ステップアップ電圧の加算量が小さいため、初期プログラム電圧の大きさに依存する。
本書き込み方式において、Fineステージの初期プログラム電圧IVPGM(以下では、“IVPGMb”とも表記する)の大きさは、“A”ステートに対応する値(電圧値)から“B”ステートへ対応する値へ閾値電圧が変動したメモリセル(“AtoB”セル)の発生数91に応じて設定されることが好ましい。
また、Foggyステージの初期プログラム電圧IVPGM(以下では、“IVPGMa”とも表記する)の大きさは、“B”ステートに対応する値から“C”ステートへ対応する値へ閾値電圧が変動したメモリセル(“BtoC”セル)の発生数92に応じて、設定されることが好ましい。
Foggy−Fine方式の書き込み動作において、ステップアップ電圧の電圧値は、“CtoD”セル、“DtoE”セル、“EtoF”セル及び“FtoG”セルの発生数に応じて、設定されることが好ましい。
(3a)動作例
図28を参照して、本実施形態のメモリシステムの動作例について、説明する。
図28は、本実施形態における、Foggy−Fine方式の書き込み動作に用いられる初期プログラム電圧の設定処理を説明するためのフローチャートである。
<ステップS1〜S8>
図28に示されるように、上述の実施形態と同様に、メモリシステムの使用の開始後、デフォルトのプログラム電圧を用いて、Foggy−Fine方式の書き込み動作が、NANDフラッシュメモリ10内の選択領域に対して実行される(ステップS1)。
ある期間の経過の後、メモリコントローラ100は、パトロール動作を実行する(ステップS2)。例えば、パトロール動作の対象に属する全てのページ(例えば、ストリングユニットの全てのページ)のデータが、読み出される(ステップS3)。
ECC処理が、全てのページの読み出しデータに対して実行される(ステップS4,S5,S6)。これによって、訂正後読み出しデータが、生成される。
メモリコントローラ100は、実行中のパトロール動作が、書き込み動作後の最初のパトロール動作であるか否か、判定する(ステップS7)。
実行中のパトロール動作が、書き込み動作後の最初のパトロール動作である場合、計算処理が、訂正前読み出しデータ及び訂正後読み出しデータを用いて、実行される(ステップS8)。これによって、ビットシフトテーブルTBLzが、作成される。
<ステップS9−1A>
ステップS9−1Aにおいて、本実施形態において、メモリコントローラ100は、“B”ステートから“C”ステートへシフトしたメモリセル(“BtoC”セル)を、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、“BtoC”セルの個数をカウントする。
<ステップS10−1A>
ステップS10−1Aにおいて、メモリコントローラ100は、ステップS9−1Aから得られた検出結果を用いて、Foggy−Fine方式の書き込み動作におけるFoggyステージ(Foggyプログラム)の初期プログラム電圧IVPGMaの電圧値の設定処理(例えば、電圧値の適正化処理)を実行する。
メモリコントローラ100は、ステップS9−1Aの処理によって得られた検出結果(例えば、カウント数)に基づいて、Foggyステージの初期プログラム電圧IVPGMaの電圧値を取得する。
Foggy−Fine方式の書き込み動作において、Foggyステージの初期プログラム電圧IVPGMaの値は、“B”ステートのデータが書き込まれるメモリセルの閾値電圧に作用する。それゆえ、本実施形態のメモリシステムは、Foggyステージの初期プログラム電圧IPGMaに関して、ステップS9−1Aにおける“B”ステートから“C”ステートへシフトするエラーの度合い(例えば、“BtoC”セルの個数)に着目した計算処理に基づいて、初期プログラム電圧IVPGMaにおけるより適した電圧値を設定できる。
これによって、Foggy−Fine方式の書き込み動作におけるFoggyステージの初期プログラム電圧IVPGMaの電圧値は、より適した値に設定される。
<ステップS9−2A>
ステップS9−2Aにおいて、本実施形態において、メモリコントローラ100は、“A”ステートから“B”ステートへシフトしたメモリセル(“AtoB”セル)を、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、“AtoB”セルの個数をカウントする。
<ステップS10−2A>
ステップS10−2Aにおいて、メモリコントローラ100は、ステップS9−2Aから得られた検出結果を用いて、Foggy−Fine方式の書き込み動作におけるFineステージ(Fineプログラム)の初期プログラム電圧IVPGMbの電圧値の設定処理(例えば、電圧値の適正化処理)を実行する。
メモリコントローラ100は、ステップS9−2Aの処理によって得られた検出結果(例えば、カウント数)に基づいて、Foggyステージの初期プログラム電圧IVPGMbの電圧値を取得する。
Foggy−Fine方式の書き込み動作において、Fineステージの初期プログラム電圧IVPGMbの値は、“A”ステートのデータが書き込まれるメモリセルの閾値電圧に作用する。それゆえ、本実施形態のメモリシステムは、ステップS9−2Aにおける“A”ステートから“B”ステートへシフトするエラーの度合い(例えば、“AtoB”セルの個数)に着目した計算処理に基づいて、Fineステージの初期プログラム電圧IVPGMbにおけるより適した電圧値を設定できる。
これによって、Foggy−Fine方式の書き込み動作におけるFineステージの初期プログラム電圧IVPGMbの電圧値は、より適した値に設定される。
例えば、本実施形態において、初期プログラム電圧の設定処理に続いて、ステップアップ電圧の設定処理が実行される。
<ステップS12−1A>
ステップS12−1Aにおいて、メモリコントローラ100は、“C”ステートから“D”ステートへシフトしたメモリセル(“CtoD”セル)を、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、“CtoD”セルの個数をカウントする。
<ステップS12−2A>
ステップS12−1Aにおいて、メモリコントローラ100は、“D”ステートから“E”ステートへシフトしたメモリセル(“DtoE”セル)を、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、“DtoE”セルの個数をカウントする。
<ステップS12−3A>
ステップS12−3Aにおいて、メモリコントローラ100は、“E”ステートから“F”ステートへシフトしたメモリセル(“EtoF”セル)を、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、“EtoF”セルの個数をカウントする。
<ステップS12−4A>
ステップS12−4Aにおいて、メモリコントローラ100は、“F”ステートから“G”ステートへシフトしたメモリセル(“FtoG”セル)を、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、“FtoG”セルの個数をカウントする。
<ステップS13>
ステップS13において、メモリコントローラ100は、ステップアップ電圧の設定処理を実行する。
メモリコントローラ100は、ステップS12−1AからステップS12−4Aまでの処理によって得られた検出結果(例えば、カウント数)に基づいて、ステップアップ電圧dVPGMの電圧値を取得する。
例えば、“CtoD”セルの発生数、“DtoE”セルの発生数、“EtoF”セルの発生数及び“FtoG”セルの発生数の合計がある基準値より小さい場合、メモリコントローラ100は、ステップアップ電圧dVPGMの電圧値を維持又は増加するように、情報(例えば、DAC値)を設定する。例えば、“CtoD”セル〜“FtoG”セルの発生数の合計がある基準値以上である場合、メモリコントローラ100は、ステップアップ電圧dVPGMの電圧値を減少するように、情報(DAC値)を設定する。
これによって、Foggy−Fine方式の書き込み動作に用いられるステップアップ電圧dVPGMは、より適した電圧値に設定される。
Foggy−Fine方式の書き込み動作を実行するメモリシステムにおいて、フルシーケンス方式の書き込み動作を実行するメモリシステムと同様に、読み出し動作の結果及びECC処理の結果に基づいて、消去電圧に用いられる電圧が、決定されてもよい。
図28のステップS20,S21に示されるように、ステップS13におけるステップアップ電圧dVPGMの電圧値の設定処理の後、消去動作に用いられる電圧の設定処理(例えば、初期消去電圧IVERAの適正化処理)が実行される。
ステップS20,S21において、メモリコントローラ100は、“ErtoA”セルの検出結果(“ErtoA”セルの個数)に基づいて、初期消去電圧IVERAの電圧値を決定する。
この後、ステップS90において、メモリコントローラ100は、初期プログラム電圧IVPGMの電圧値及びステップアップ電圧dVPGMの電圧値とともに、初期消去電圧IVERAの電圧値に関して、電圧情報テーブルTBL内の値を更新する。
このように、本実施形態のメモリシステムにおいて、書き込み動作及び消去動作に用いられる各種の電圧が、より適した値に設定される。
図29及び図30を用いて、本実施形態のフラッシュメモリの変形例について、説明する。
Foggy−Fine方式の書き込み動作の初期プログラム電圧IVPGMa,IVPGMb及びステップ電圧dVPGMは、それぞれ異なる処理で、決定されてもよい。
図29は、本実施形態における、Foggy−Fine方式の書き込み動作に用いられる初期プログラム電圧の設定処理を説明するためのフローチャートである。
図29の処理フローは、Foggy−Fine方式の書き込み動作後の最初のパトロール動作時において、ステップアップ電圧の設定処理を実行せずに、初期プログラム電圧の設定処理のみを実行する処理フローを示している。
図29に示されるように、パトロール動作の読み出し動作の結果及びECC処理の結果に基づいて、計算処理が実行される(ステップS8)。“BtoC”セル及び“AtoB”セルの検出結果(カウントされたメモリセル数)に基づいて、Foggyステージの初期プログラム電圧IVPGMa、Fineステージの初期プログラム電圧IVPGMbの電圧値が、それぞれ設定される(ステップS9−1A,S9−2A,S10−1A,S10−2A)。電圧情報テーブルTBLの値が、設定された各初期プログラム電圧IVPGMa,IVPGMbに応じた値に、更新される(ステップS90)。
これによって、初期プログラム電圧IVPGMの電圧値は、より適した値に設定される。
図30は、本実施形態において、Foggy−Fine方式の書き込み動作を用いたNAND型フラッシュメモリにおけるステップアップ電圧の初期値の設定を説明するためのフローチャートである。
図30の処理フローは、Foggy−Fine方式の書き込み動作後の最初のパトロール動作時において、初期プログラム電圧の設定処理を実行せずに、ステップアップ電圧の設定処理のみを実行する処理フローを示している。
図30に示されるように、ステップS8の計算処理の後、“CtoD”セル、“DtoE”セル、“EtoF”セル及び“FtoG”セルが、検出される(ステップS12−2A〜S12−4A)。
“CtoD”セル、“DtoE”セル、“EtoF”セル及び“FtoG”セルの検出結果(カウントされたメモリセル数)に基づいて、ステップアップ電圧dVPGMの電圧値が、設定される(ステップS13)。電圧情報テーブルTBLの値が、設定されたステップアップ電圧dVPGMに応じた値に、更新される(ステップS90)。
これによって、ステップアップ電圧dVPGMの電圧値は、より適した値に設定される。
尚、本実施形態において、Foggy−Fine方式の書き込み動作を用いたNAND型フラッシュメモリにおいて、初期プログラム電圧IVPGMa,IVPGMbM及びステップアップ電圧dVPGMは、上述の図12及び図17の処理と実質的に同じ動作によって、実行されてもよい。
Foggy−Fine方式の書き込み動作を用いたNAND型フラッシュメモリにおける消去電圧の初期値の設定が、初期プログラム電圧IVPGMa,IVPGMb及びステップ電圧dVPGMの設定処理無しに、実行されてもよい。
本実施形態のメモリシステムにおいて、パトロール動作は、あるメモリ空間に対する読み出し動作及びECC処理に加えて、ECC処理の結果に基づく計算処理(ステップS8)、検出処理(S9−1A,S9−2A,S12−1A〜S12−4A)、各種の電圧の設定(S10−1A,S10−2A,S13,S21)及び電圧情報テーブルの更新(ステップS90)を含む。但し、ステップS8〜S90までの処理は、パトロール動作とは別の動作(シーケンス)として、扱われてもよい。
以上のように、本実施形態のメモリシステムは、上述の実施形態のメモリシステムの効果と実質的に同じ効果を得ることができる。
(4) 第4の実施形態
図31乃至図34を参照して、第4の実施形態のメモリシステム及びその制御方法について、説明する。
本実施形態において、LM−Fine方式の書き込み動作が、NAND型フラッシュメモリの書き込み動作に用いられる。
LM−Fine方式の書き込み動作は、Foggy−Fine方式の書き込み動作と同様に、2つのステージに分けてデータの書き込みを行うプログラム方式である。
図31は、LM−Fine方式の書き込み動作を説明するための模式図である。
LM−Fine方式の書き込み動作において、LMプログラムとFineプログラムとが、実行される。以下において、LMプログラムが実行される段階は、LMステージとよばれ、Fineプログラムが実行される段階は、Fineステージとよばれる。
図31の(a)に示されるように、LMプログラム(LMステージ)において、2つの独立した閾値電圧分布811,812が、“Er”ステートのメモリセルに対するプログラム電圧の印加によって、形成される。
例えば、分布811は、“Er”ステートから“C”ステートにそれぞれ対応するデータが書き込まれるメモリセルを含む分布である。
分布812は、“D”ステートから“G”ステートにそれぞれ対応するデータが書き込まれるメモリセルを含む分布である。
図31の(b)に示されるように、Fineプログラム(Fineステージ)において、8つのステートにそれぞれ対応するように、データの書き込み(プログラム電圧の印加)が実行される。例えば、図8の例と同様に、下位のステートから上位のステートへのプログラム動作が、ステップアップ電圧が初期プログラム電圧に順次加算されながら、実行される。
LM−Fine方式の書き込み動作において、Fineプログラムによって、“Er”ステート、“A”ステート、“B”ステート及び“C”ステートの分布のそれぞれが、分布811から形成され、“D”ステート、“E”ステート、“F”ステート及び“G”ステートの分布のそれぞれが、分布812から形成される。
これによって、メモリセルの閾値電圧が書き込むべきデータに対応する電圧値に、達する。
図31の(c)は、書き込み動作に用いられる電圧の設定に考慮すべき閾値電圧の変動を説明するための模式図である。
LM−Fine方式の書き込み動作において、書き込み動作のFineステージにおいて、分布811から“A”、“B”及び“C”ステートに向かって及び分布812から“E”、“F”及び“G”ステートに向かって、メモリセルの閾値電圧が、プログラム電圧の印加によって上昇される。Fineステージの開始から最初の数回の書き込みループにおいて、プログラム電圧の電圧値は、ステップアップ電圧の加算量が小さいため、初期プログラム電圧の大きさに依存する。
それゆえ、本書き込み方式において、Fineステージ(Fineプログラム)の初期プログラム電圧IVPGM(以下では、“IVPGMd”とも表記する)の大きさは、“A”ステートに対応する値(電圧値)から“B”ステートへ対応する値へ閾値電圧が変動したメモリセル(“AtoB”セル)の発生数93に応じて設定されることが好ましい。
また、LMステージ(LMプログラム)の初期プログラム電圧IVPGM(以下では、“IVPGMc”とも表記する)の大きさは、“D”ステートに対応する値から“E”ステートへ対応する値へ閾値電圧が変動したメモリセル(“DtoE”セル)の発生数94に応じて、設定されることが好ましい。
LM−Fine方式の書き込み動作において、ステップアップ電圧dVPGMの電圧値は、“BtoC”セル、“CtoD”セル、“EtoF”セル及び“FtoG”セルの発生数に応じて、設定されることが好ましい。
(4a)動作例
図32を参照して、本実施形態のメモリシステムの動作例について、説明する。
<ステップS1〜S8>
図32に示されるように、上述の実施形態と同様に、メモリシステムの使用の開始後、デフォルトのプログラム電圧を用いて、LM−Fine方式の書き込み動作が、NANDフラッシュメモリ10内の選択領域に対して実行される(ステップS1)。
ある期間の経過の後、メモリコントローラ100は、パトロール動作を実行する(ステップS2)。パトロール動作の対象に属する全てのページ(例えば、ストリングユニット内の全てのページ)に対して、データの読み出しが実行される(ステップS3)。
ECC処理が、全てのページの読み出しデータに対して実行される(ステップS4,S5,S6)。これによって、誤り訂正後読み出しデータが、生成される。
メモリコントローラ100は、実行中のパトロール動作が、書き込み動作後の最初のパトロール動作であるか否か、判定する(ステップS7)。
実行中のパトロール動作が、書き込み動作後の最初のパトロール動作である場合、計算処理が、訂正前読み出しデータ及び訂正後読み出しデータを用いて、実行される(ステップS8)。これによって、ビットシフトテーブルTBLzが、作成される。
<ステップS9−1B>
ステップS9−1Bにおいて、本実施形態において、メモリコントローラ100は、“D”ステートから“E”ステートへシフトしたメモリセル(“DtoE”セル)を、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、“DtoE”セルの個数をカウントする。
<ステップS10−1B>
ステップS10−1Bにおいて、メモリコントローラ100は、ステップS9−1Bから得られた検出結果を用いて、LM−Fine方式の書き込み動作におけるLMステージ(LMプログラム)の初期プログラム電圧IVPGMcの電圧値の設定処理(例えば、電圧値の適正化処理)を実行する。
メモリコントローラ100は、ステップS9−1Bの処理によって得られた検出結果(例えば、カウント数)に基づいて、LMステージの初期プログラム電圧IVPGMcの電圧値を取得する。
LM−Fine方式の書き込み動作において、LMステージの初期プログラム電圧IVPGMcの電圧値は、“D”ステートに対応するデータが書き込まれるメモリセルの閾値電圧に作用する。それゆえ、本実施形態のメモリシステムは、ステップS9−1Bにおける“D”ステートから“E”ステートへシフトするエラーの度合い(“DtoE”セルの個数)に着目した計算処理に基づいて、初期プログラム電圧IVPGMcにおけるより適した電圧値を設定できる。
これによって、LM−Fine方式の書き込み動作に用いられるLMステージの初期プログラム電圧IVPGMcの電圧値は、より適した値に設定される。
<ステップS9−2B>
ステップS9−2Bにおいて、本実施形態において、メモリコントローラ100は、“A”ステートから“B”ステートへシフトしたメモリセル(“AtoB”セル)を、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、“AtoB”セルの個数をカウントする。
<ステップS10−2B>
ステップS10−2Bにおいて、メモリコントローラ100は、ステップS9−2Bから得られた検出結果を用いて、LM−Fine方式の書き込み動作におけるFineステージ(Fineプログラム)の初期プログラム電圧IVPGMdの電圧値の設定処理(例えば、電圧値の適正化処理)を実行する。
メモリコントローラ100は、ステップS9−2Bの処理によって得られた検出結果(例えば、カウント数)に基づいて、初期プログラム電圧IVPGMdの電圧値を取得する。
LM−Fine方式の書き込み動作において、Fineステージにおける初期プログラム電圧IVPGMdの電圧値は、“A”ステートに対応するデータが書き込まれるメモリセルの閾値電圧に作用する。それゆえ、本実施形態のメモリシステムは、ステップS9−2Bにおける“A”ステートから“B”ステートへシフトするエラーの度合い(“AtoB”セルの個数)に着目した計算処理に基づいて、初期プログラム電圧IVPGMdにおけるより適した電圧値を設定できる。
これによって、LM−Fine方式の書き込み動作に用いられるFineステージの初期プログラム電圧IVPGMdの電圧値は、より適した値に設定される。
例えば、本実施形態において、初期プログラム電圧の設定処理に続いて、ステップアップ電圧の設定処理が実行される。
<ステップS12−1B>
ステップS12−1Bにおいて、メモリコントローラ100は、“BtoC”セルを、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、“BtoC”セルの個数をカウントする。
<ステップS12−2B>
ステップS12−2Bにおいて、メモリコントローラ100は、“CtoD”セルを、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、“CtoD”セルの個数をカウントする。
<ステップS12−3B>
ステップS12−3Bにおいて、メモリコントローラ100は、“EtoF”セルを、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、“EtoF”セルの個数をカウントする。
<ステップS12−4B>
ステップS12−4Bにおいて、メモリコントローラ100は、“FtoG”セルを、ビットシフトテーブルTBLzを用いて検出する。例えば、メモリコントローラ100は、“FtoG”セルの個数をカウントする。
<ステップS13>
ステップS13において、メモリコントローラ100は、ステップアップ電圧の設定処理を実行する。
メモリコントローラ100は、ステップS12−1BからステップS12−4Bまでの処理によって得られた検出結果(例えば、カウント数)に基づいて、ステップアップ電圧dVPGMの電圧値を取得する。
これによって、LM−Fine方式の書き込み動作に用いられるステップアップ電圧dVPGMは、より適した電圧値に設定される。
LM−Fine方式の書き込み動作を実行するNANDフラッシュメモリを含むメモリシステムにおいて、上述の実施形態と同様に、読み出し動作の結果及びECC処理の結果に基づいて、消去電圧に用いられる電圧が、決定されてもよい。
図32のステップS20,S21に示されるように、ステップS13のステップアップ電圧dVPGMの電圧値の設定処理の後、消去動作に用いられる電圧の設定処理(例えば、初期消去電圧IVERAの適正化処理)が実行される。
ステップS20,S21において、メモリコントローラ100は、“ErtoA”セルの検出結果(“ErtoA”セルの個数)に基づいて、初期消去電圧IVERAの電圧値を決定する。
この後、ステップS90において、メモリコントローラ100は、初期プログラム電圧IVPGMの電圧値及びステップアップ電圧dVPGMの電圧値とともに、初期消去電圧IVERAの電圧値に関して、電圧情報テーブルTBL内の値を更新する。
このように、本実施形態のメモリシステムにおいて、書き込み動作及び消去動作に用いられる各種の電圧が、より適した値に設定される。
図33及び図34を用いて、本実施形態のメモリシステムの変形例について説明する。 LM−Fine方式の書き込み動作の初期プログラム電圧IVPGMc,IVPGMd及びステップ電圧dVPGMは、それぞれ異なる処理で、決定されてもよい。
図33は、本実施形態における、LM−Fine方式の書き込み動作に用いられる初期プログラム電圧の設定処理を説明するためのフローチャートである。
図33の処理フローは、LM−Fine方式の書き込み動作後の最初のパトロール動作時において、ステップアップ電圧の設定処理を実行せずに、初期プログラム電圧の設定処理のみを実行する処理フローを示している。
図33に示されるように、パトロール動作の読み出し動作の結果及びECC処理の結果に基づいて、計算処理が実行される(ステップS8)。この後、“DtoE”及び“AtoB”セルの検出結果(カウントされたメモリセル数)に基づいて、LMステージの初期プログラム電圧IVPGMcの電圧値及びFineステージの初期プログラム電圧IVPGMdの電圧値が、それぞれ設定される(ステップS9−1B,S9−2B,S10−1B,S10−2B)。電圧情報テーブルTBLの値が、設定された初期プログラム電圧IVPGMc,IVPGMdに応じた値に、更新される(ステップS90)。
これによって、初期プログラム電圧IVPGMの電圧値は、より適した値に設定される。
図34は、本実施形態において、LM−Fine方式の書き込み動作を用いたNAND型フラッシュメモリにおけるステップアップ電圧の初期値の設定を説明するためのフローチャートである。
図34の処理フローは、LM−Fine方式の書き込み動作後の最初のパトロール動作時において、初期プログラム電圧の設定処理を実行せずに、ステップアップ電圧の設定処理を実行のみを実行する処理フローを示している。
図34に示されるように、ステップS8の計算処理の後、“BtoC”セル、“CtoD”セル、“EtoF”セル及び“FtoG”セルが、検出される(ステップS12−1B〜S12−4B)。
“BtoC”セル、“CtoD”セル、“EtoF”セル及び“FtoG”セルの検出結果(カウントされたメモリセル数)に基づいて、ステップアップ電圧dVPGMの電圧値が、設定される(ステップS13)。電圧情報テーブルTBLの値が、設定されたステップアップ電圧dVPGMに応じた値に、更新される(ステップS90)。
例えば、“BtoC”セルの発生数、“CtoD”セルの発生数、“EtoF”セルの発生数及び“FtoG”セルの発生数の合計がある基準値より小さい場合、メモリコントローラ100は、ステップアップ電圧dVPGMの電圧値を維持又は増加するように、情報(例えば、DAC値)を設定する。例えば、“BtoC”セル、“CtoD”セル、“EtoF”セル及び“FtoG”セルの発生数の合計がある基準値以上である場合、メモリコントローラ100は、ステップアップ電圧dVPGMの電圧値を減少するように、情報(DAC値)を設定する。
これによって、ステップアップ電圧dVPGMの電圧値は、より適した値に設定される。
尚、本実施形態において、LM−Fine方式の書き込み動作を用いたNAND型フラッシュメモリにおいて、初期プログラム電圧IVPGM及びステップアップ電圧dVPGMは、上述の図12及び図17の処理と実質的に同じ動作によって、実行されてもよい。
LM−Fine方式の書き込み動作を用いたNAND型フラッシュメモリにおける消去電圧の初期値の設定が、初期プログラム電圧IVPGM及びステップ電圧dVPGMの設定処理無しに、実行されてもよい。
以上のように、本実施形態のメモリシステムにおいて、パトロール動作は、あるメモリ空間に対する読み出し動作及びECC処理に加えて、ECC処理の結果に基づく計算処理(ステップS8)、検出処理(S9−1A,S9−2B,S12−1B〜S12−4B)、各種の電圧の設定(S10−1B,S10−2B,S13,S21)及び電圧情報テーブルの更新(ステップS90)を含む。但し、ステップS8〜S90までの処理は、パトロール動作とは別の動作(シーケンス)として、扱われてもよい。
以上のように、本実施形態のメモリシステムは、上述の実施形態のメモリシステムの効果と実質的に同じ効果を得ることができる。
(5) 第5の実施形態
図35を参照して、第5の実施形態のメモリシステム及びその制御方法について、説明する。
上述の実施形態において、パトロール動作における読み出し動作の結果に基づいて、フラッシュメモリの動作に用いられる各種の電圧に対する適正化処理が実行されている。
但し、メモリシステムの仕様又はユーザの設定に応じて、コントローラがパトロールを実行しない場合がある。このようなメモリシステムは、読み出し動作の結果を用いて、フラッシュメモリの動作に用いられる各種の電圧の適正化処理を、実行できる。
以下において、ホストデバイス2からの指示(要求)による読み出し動作(ホストリード)の結果に基づいて、消去電圧の適正化処理を行う例について、説明する。
(5a)動作例
図35を参照して、本実施形態のメモリシステムにおけるホストリードの結果に基づいた消去電圧の設定処理について説明する。
図35は、本実施形態のメモリシステムの変形例の一例を示すフローチャートである。
図35に示されるように、本実施形態において、NANDフラッシュメモリ10に対する書き込み動作及び読み出し動作が、実行される(ステップS1)。
<ステップS2L>
ステップS2Lにおいて、読み出し動作時、メモリコントローラ100は、コマンドに応答してこれから実行される読み出し動作が、書き込み動作後の最初の下位ページの読み出しか否か判定する。実行される読み出し動作が、書き込み動作後の最初の下位ページの読み出しではない場合(ステップS2Lの“No”の場合)、本例のフローは終了する。
<ステップS3−1L>
実行される読み出し動作が書き込み動作後の最初の下位ページの読み出しである場合(ステップS2Lの“Yes”の場合)、フラッシュメモリ10は、下位ページの読み出しを選択アドレスに対して実行する。
<ステップS3−2>
ステップS3−2において、メモリコントローラ100は、下位ページの読み出しの後、選択アドレス(選択ワード線に属するメモリセル)に対する電圧VCRを用いたシングルステートリード(以下では、CR読み出しともよぶ)を、下位ページの読み出しを実行したフラッシュメモリ10に実行させる。これによって、下位ページの読み出しにおける選択セルが、電圧VCRでオンしたか否か判定される。
CR読み出しの後、メモリコントローラ100は、上述の実施形態と同様に、ECC処理(ステップS4,S5,S6−1)及び計算処理(ステップS8)(及びリトライシーケンス)を、実行する。
<ステップS20>
ステップS20において、メモリコントローラ100は、下位ページ読み出し、CR読み出しの結果及びECC処理の結果を用いた計算処理の結果に基づいて、“ErtoA”セルの検出及びカウントを実行する。
<ステップS21>
ステップS21において、メモリコントローラ100は、“ErtoA”セルの検出結果に基づいて、初期消去電圧IVERAの設定(初期消去電圧IVERAの適正化処理)を実行する。
この後、メモリコントローラ100は、初期消去電圧IVERAの設定の結果を、電圧情報テーブルTBLに書き込む。これによって、電圧情報テーブルTBLが、更新される(ステップS90)。
以上のように、本実施形態によれば、ホストリードによる1つのページの読み出し結果を用いて、消去動作に用いられる電圧(例えば、初期消去電圧)をより適した値に設定できる。
したがって、本実施形態のメモリシステムは、上述の実施形態と同様の結果を得ることができる。
(6) 変形例
図36乃至図41を参照して、実施形態のメモリシステムの変形例について説明する。
上述のように、パトロール動作を実行しないメモリシステムにおいて、ホストリード時における読み出し動作の結果及びECC処理の結果に基づいて、ステートシフトセルが検出されてもよい。これによって得られた結果に対する計算処理によって、上述の実施形態のように、初期プログラム電圧及びステップアップ電圧の大きさが、より適した値に設定されてもよい。
(6a)“AtoB”セルの検出
図36は、本実施形態のメモリシステムの変形例の一例を示すフローチャートである。
図36に示されるように、本実施形態において、NANDフラッシュメモリ10に対する書き込み動作及び読み出し動作が、実行される(ステップS1)。
<ステップS2M>
ステップS2Mにおいて、読み出し動作時、メモリコントローラ100は、コマンドに応答してこれから実行される読み出し動作が、書き込み動作後の最初の中位ページの読み出しか否か判定する。実行される読み出し動作が、書き込み動作後の最初の中位ページの読み出しではない場合(ステップS2Mの“No”の場合)、本例のフローは終了する。 <ステップS3−1M>
実行される読み出し動作が書き込み動作後の最初の中位ページの読み出しである場合(ステップS2Mの“Yes”の場合)、ステップS3−1Mにおいて、フラッシュメモリ10は、中位ページの読み出しを選択アドレスに対して実行する。
<ステップS3−2>
ステップS3−2において、メモリコントローラ100は、中位ページの読み出しの後、選択アドレスに対する電圧VCRを用いたシングルステートリード(CR読み出し)を、中位ページの読み出しを実行したフラッシュメモリ10に実行させる。これによって、中位ページの読み出しにおける選択セルが、電圧VCRでオンしたか否か判定される。
CR読み出しの後、メモリコントローラ100は、上述の実施形態と同様に、ECC処理(ステップS4〜S6−1)及び計算処理(ステップS8)(及びリトライシーケンス)を、実行する。
<ステップS20A>
ステップS20Aにおいて、メモリコントローラ100は、中位ページ読み出し、CR読み出しの結果及びECC処理の結果を用いた計算処理の結果に基づいて、“AtoB”セルの検出及びカウントを実行する。
<ステップS80>
ステップS80において、メモリコントローラ100は、“AtoB”セルの検出及びカウントを、メモリ又は管理テーブルに格納する。
<ステップS81>
ステップS81において、メモリコントローラ100は、“AtoB”セルの検出結果及び他のステートに関するステートシフトセル(“BtoC”セル〜“FtoG”セル)の検出結果SSに基づいて、初期プログラム電圧IVPGM及びステップアップ電圧dVPGMのうち少なくとも一方の設定(電圧値の適正化処理)を実行する。
この後、メモリコントローラ100は、電圧の設定の結果を、電圧情報テーブルTBLに書き込む。これによって、電圧情報テーブルTBLが、更新される(ステップS90)。
(6b)“BtoC”セルの検出
図37は、本実施形態のメモリシステムの変形例の一例を示すフローチャートである。
図37に示されるように、本実施形態において、NANDフラッシュメモリ10に対する書き込み動作及び読み出し動作が、実行される(ステップS1)。
<ステップS2U>
ステップS2Uにおいて、読み出し動作時、メモリコントローラ100は、コマンドに応答してこれから実行される読み出し動作が、書き込み動作後の最初の上位ページの読み出しか否か判定する。実行される読み出し動作が、書き込み動作後の最初の上位ページの読み出しではない場合(ステップS2Uの“No”の場合)、本例のフローは終了する。 <ステップS3−1U>
実行される読み出し動作が書き込み動作後の最初の上位ページの読み出しである場合(ステップS2Uの“Yes”の場合)、フラッシュメモリ10は、上位ページの読み出しを選択アドレスに対して実行する。
<ステップS3−3>
ステップS3−3において、メモリコントローラ100は、上位ページの読み出しの後、選択アドレスに対する電圧VERを用いたシングルステートリード(ER読み出し)を、上位ページの読み出しを実行したフラッシュメモリ10に実行させる。これによって、上位ページの読み出しにおける選択セルが、電圧VERでオンしたか否か判定される。
ER読み出しの後、メモリコントローラ100は、上述の実施形態と同様に、ECC処理(ステップS4〜S6−1)及び計算処理(ステップS8)(及びリトライシーケンス)を、実行する。
<ステップS20B>
ステップS20Bにおいて、メモリコントローラ100は、上位ページ読み出し、ER読み出しの結果及びECC処理の結果を用いた計算処理の結果に基づいて、“BtoC”セルの検出及びカウントを実行する。
<ステップS80>
ステップS80において、メモリコントローラ100は、“BtoC”セルの検出及びカウントを、メモリ又は管理テーブルに格納する。
<ステップS81>
ステップS80において、メモリコントローラ100は、“BtoC”セルの検出結果及び他のステートに関するステートシフトセルに基づいて、初期プログラム電圧及びステップアップ電圧のうち少なくとも一方の設定(電圧値の適正化処理)を実行する。
この後、メモリコントローラ100は、電圧の設定の結果を、電圧情報テーブルTBLに書き込む。これによって、電圧情報テーブルTBLが、更新される(ステップS90)。
(6c)“CtoD”セルの検出
図38は、本実施形態のメモリシステムの変形例の一例を示すフローチャートである。
図38に示されるように、“CtoD”セルの検出は、“AtoB”セルの検出と同様に、中位ページの読み出し時に実行される(ステップS2M,S3−1M)。
中位ページの読み出しの後、メモリコントローラ100は、フラッシュメモリ10に、CR読み出しを実行させる(ステップS3−2)。
ステップS3−3において、メモリコントローラ100は、CR読み出しの後、電圧VERを用いたシングルステートリード(ER読み出し)を、フラッシュメモリ10に実行させる。
上述のように、メモリコントローラ100は、中位ページの読み出し結果(及びER読み出しの結果)に対して、ECC処理及び計算処理を実行する。(ステップS4〜S8)
これによって、“CtoD”セルが検出及びカウントされる(ステップS20C)。例えば、“CtoD”セルの検出結果及びカウント数は、一時的に保存される(ステップS80)。
この後、メモリコントローラ100は、“CtoD”セルの検出結果と他のステートシフトセルの検出結果とを用いて、初期プログラム電圧及びステップアップ電圧のうち少なくとも一方の設定(電圧値の適正化処理)を実行する(ステップS81)。
メモリコントローラ100は、電圧の設定の結果を、電圧情報テーブルTBLに書き込む。これによって、電圧情報テーブルTBLが、更新される(ステップS90)。
(6d)“DtoE”セルの検出
図39は、本実施形態のメモリシステムの変形例の一例を示すフローチャートである。
図39に示されるように、“DtoE”セルの検出は、“ErtoA”セルの検出と同様に、下位ページの読み出し時に実行される(ステップS2L,S3−1L)。
下位ページの読み出しの後、メモリコントローラ100は、フラッシュメモリ10に、CR読み出しを実行させる(ステップS3−2)。
上述のように、メモリコントローラ100は、下位ページの読み出し結果(及びCR読み出しの結果)に対して、ECC処理(ステップS4〜S6−1)及び計算処理(ステップS8)を実行する。
これによって、“DtoE”セルが検出及びカウントされる(ステップS20D)。例えば、“DtoE”セルの検出結果及びカウント数は、一時的に保存される(ステップS80)。
この後、メモリコントローラ100は、“DtoE”の検出結果と他のステートシフトセルの検出結果とを用いて、初期プログラム電圧及びステップアップ電圧のうち少なくとも一方の設定(電圧値の適正化処理)を実行する(ステップS81)。
メモリコントローラ100は、電圧の設定の結果を、電圧情報テーブルTBLに書き込む。これによって、電圧情報テーブルTBLが、更新される(ステップS90)。
(6e)“EtoF”セルの検出
図40は、本実施形態のメモリシステムの変形例の一例を示すフローチャートである。
図40に示されるように、“EtoF”セルの検出は、“AtoB”セルの検出と同様に、中位ページの読み出し時に実行される(ステップS2M,S3−1M)。
中位ページの読み出しの後、メモリコントローラ100は、フラッシュメモリ10に、ER読み出しを実行させる(ステップS3−3)。
上述のように、メモリコントローラ100は、中位ページの読み出し結果(及びER読み出しの結果)に対して、ECC処理(ステップS4〜S6−1)及び計算処理(ステップS8)を実行する。
これによって、“EtoF”セルが検出及びカウントされる(ステップS20E)。例えば、“EtoF”セルの検出結果及びカウント数は、一時的に保存される(ステップS80)。
この後、メモリコントローラ100は、“EtoF”セルの検出結果と他のステートシフトセルの検出結果とを用いて、初期プログラム電圧及びステップアップ電圧のうち少なくとも一方の設定(電圧値の適正化処理)を実行する(ステップS81)。
メモリコントローラ100は、電圧の設定の結果を、電圧情報テーブルTBLに書き込む。これによって、電圧情報テーブルTBLが、更新される(ステップS90)。
(6f)“FtoG”セルの検出
図41は、本実施形態のメモリシステムの変形例の一例を示すフローチャートである。
図41に示されるように、“FtoG”セルの検出は、“BtoC”セルの検出と同様に、上位ページの読み出し時に実行される(ステップS2U,S3−1U)。
上位ページの読み出しの後、メモリコントローラ100は、フラッシュメモリ10に、ER読み出しを実行させる(ステップS3−3)。
上述のように、メモリコントローラ100は、上位ページの読み出し結果(及びER読み出しの結果)に対して、ECC処理(ステップS4〜S6−1)及び計算処理(ステップS8)を実行する。
これによって、“FtoG”セルが検出及びカウントされる(ステップS20F)。例えば、“FtoG”セルの検出結果及びカウント数は、一時的に保存される(ステップS80)。
この後、メモリコントローラ100は、“FtoG”セルの検出結果と他のステートシフトセルの検出結果とを用いて、初期プログラム電圧及びステップアップ電圧のうち少なくとも一方の設定(電圧値の適正化処理)を実行する(ステップS81)。
メモリコントローラ100は、電圧の設定の結果を、電圧情報テーブルTBLに書き込む。これによって、電圧情報テーブルが、更新される(ステップS90)。
(6g)まとめ
以上のように、本実施形態のメモリシステムの変形例は、パトロール動作以外の読み出し動作(例えば、ホストリード)の結果を用いて、書き込み動作に用いられる複数の電圧を設定できる。
したがって、本実施形態のメモリシステムは、上述の実施形態と同様の効果を得ることができる。
(7)その他
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
1…メモリシステム、2…ホストデバイス、11…メモリセルアレイ、12…ロウデコーダ、13…ドライバ、14…センスアンプモジュール、17…シーケンサ、100…メモリコントローラ、120…メモリ、130…プロセッサ、140…バッファメモリ、150…NANDインターフェース回路、160…ECC回路、170…NANDコントローラ群、200…NANDパッケージ群。

Claims (8)

  1. 複数のメモリセルを含む半導体記憶装置と、
    前記半導体記憶装置に対して、書き込み動作及び読み出し動作を命令するメモリコントローラと、
    を具備し、
    前記メモリコントローラは、
    第1の電圧を用いた第1の書き込み動作を、前記半導体記憶装置に実行させ、
    前記読み出し動作において、前記複数のメモリセルのうち閾値電圧が記憶すべきデータに対応する電圧値より高い閾値電圧を有する第1のメモリセルを検出し、
    前記第1のメモリセルの検出結果に基づいて、前記第1の書き込み動作の後の第2の書き込み動作に用いられる第2の電圧を設定する、
    メモリシステム。
  2. 前記第1のメモリセルの検出結果は、前記第1のメモリセルの個数であり、
    前記個数が、第1の基準値より小さい場合、前記メモリコントローラは、前記第2の電圧を前記第1の電圧より高くし、
    前記個数が、前記第1の基準値以上である場合、前記メモリコントローラは、前記第2の電圧を前記第1の電圧より低くする、
    請求項1に記載のメモリシステム。
  3. 前記第1の電圧及び前記第2の電圧のそれぞれは、初期プログラム電圧である、
    請求項1又は2記載のメモリシステム。
  4. 前記第1の電圧及び前記第2の電圧のそれぞれは、初期プログラム電圧に加算されるステップアップ電圧の電圧値である、
    請求項1又は3に記載のメモリシステム。
  5. 前記メモリコントローラは、消去動作を、前記半導体記憶装置に命令し、
    前記メモリコントローラは、前記読み出し動作の結果に基づいて、前記消去動作に用いられる第3の電圧を、設定する、
    請求項1乃至4のうちいずれか1項に記載のメモリシステム。
  6. 前記読み出し動作は、前記半導体記憶装置に対するパトロール動作時に実行される、
    請求項1乃至5のうちいずれか1項に記載のメモリシステム。
  7. 前記読み出し動作は、ホストデバイスからの指示に基づいて、実行される、
    請求項1乃至5のうちいずれか1項に記載のメモリシステム。
  8. 前記第2の書き込み動作は、前記検出された第1のメモリセルを含むメモリセル群に対する第1の書き込み動作の後に実行される書き込み動作である、
    請求項1乃至7のうちいずれか1項に記載のメモリシステム。
JP2020051579A 2020-03-23 2020-03-23 メモリシステム Pending JP2021149997A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020051579A JP2021149997A (ja) 2020-03-23 2020-03-23 メモリシステム
US17/005,273 US11322210B2 (en) 2020-03-23 2020-08-27 Memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020051579A JP2021149997A (ja) 2020-03-23 2020-03-23 メモリシステム

Publications (1)

Publication Number Publication Date
JP2021149997A true JP2021149997A (ja) 2021-09-27

Family

ID=77746692

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020051579A Pending JP2021149997A (ja) 2020-03-23 2020-03-23 メモリシステム

Country Status (2)

Country Link
US (1) US11322210B2 (ja)
JP (1) JP2021149997A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11450392B2 (en) 2019-12-17 2022-09-20 Micron Technology, Inc. Selective read disturb sampling
US11393534B2 (en) * 2020-05-28 2022-07-19 Micron Technology, Inc. Adjustment of a starting voltage corresponding to a program operation in a memory sub-system

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1785998A1 (en) 2004-08-30 2007-05-16 Spansion LLC Semiconductor device, semiconductor device testing method, and data writing method
US7852683B2 (en) 2008-07-02 2010-12-14 Sandisk Corporation Correcting for over programming non-volatile storage
KR101855169B1 (ko) * 2011-10-13 2018-05-09 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치의 프로그램 방법, 불휘발성 메모리 장치를 포함하는 메모리 시스템
JP2015133161A (ja) 2014-01-14 2015-07-23 株式会社東芝 半導体記憶装置
JP6659494B2 (ja) 2016-08-19 2020-03-04 キオクシア株式会社 半導体記憶装置及びメモリシステム
JP2018147535A (ja) * 2017-03-07 2018-09-20 東芝メモリ株式会社 半導体記憶装置及びメモリシステム
US10249382B2 (en) 2017-08-22 2019-04-02 Sandisk Technologies Llc Determination of fast to program word lines in non-volatile memory

Also Published As

Publication number Publication date
US11322210B2 (en) 2022-05-03
US20210295931A1 (en) 2021-09-23

Similar Documents

Publication Publication Date Title
US11004523B2 (en) Nonvolatile memory and memory system
US10573394B2 (en) Memory system
KR102609130B1 (ko) 읽기 전압 서치 유닛을 포함하는 데이터 저장 장치
US9588714B2 (en) Method of operating memory controller and data storage device including memory controller
JP5364750B2 (ja) メモリシステム、及び不揮発性メモリデバイスの制御方法
US10643715B2 (en) Semiconductor memory device and memory system configured to perform tracking read on first memory cells followed by shift read on second memory cells using read voltage correction value determined during the tracking read
US20180074896A1 (en) Memory system
KR101464256B1 (ko) 온도 센서를 포함하는 메모리 시스템
JP2012203957A (ja) メモリシステム
KR101967368B1 (ko) 반도체 메모리 장치 및 이의 동작 방법
KR20120030281A (ko) 플래시 메모리 장치, 및 그의 프로그램 검증 방법
KR102284658B1 (ko) 비휘발성 메모리 장치, 이를 포함하는 메모리 시스템 및 상기 비휘발성 메모리 장치의 동작 방법
US10860251B2 (en) Semiconductor memory device
US11790993B2 (en) Memory system having a non-volatile memory and a controller configured to switch a mode for controlling an access operation to the non-volatile memory
JP2017054561A (ja) 半導体記憶装置及びメモリシステム
US10803954B2 (en) Memory system
KR102267046B1 (ko) 스토리지 장치 및 배드 블록 지정 방법
JP2019169211A (ja) メモリシステム
US20140185381A1 (en) Semiconductor apparatus and method of operating the same
US10957405B2 (en) Memory system configured to update write voltage applied to memory cells based on number of write or erase operations
JP2016058125A (ja) メモリシステム及びコントローラ
KR20150107575A (ko) 반도체 기억장치 및 nand 플래시 메모리의 프로그램 방법
JP2022146585A (ja) メモリシステム
JP2020107376A (ja) メモリシステム
JP2021149997A (ja) メモリシステム