JP2023119953A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2023119953A JP2023119953A JP2022023110A JP2022023110A JP2023119953A JP 2023119953 A JP2023119953 A JP 2023119953A JP 2022023110 A JP2022023110 A JP 2022023110A JP 2022023110 A JP2022023110 A JP 2022023110A JP 2023119953 A JP2023119953 A JP 2023119953A
- Authority
- JP
- Japan
- Prior art keywords
- data
- read
- cell unit
- memory
- shift amount
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 156
- 230000004044 response Effects 0.000 claims abstract description 8
- 238000012545 processing Methods 0.000 claims description 145
- 230000006866 deterioration Effects 0.000 abstract description 3
- 238000012937 correction Methods 0.000 description 54
- 238000007906 compression Methods 0.000 description 42
- 230000006835 compression Effects 0.000 description 38
- 238000010586 diagram Methods 0.000 description 28
- 238000001514 detection method Methods 0.000 description 24
- 238000009826 distribution Methods 0.000 description 14
- 239000000872 buffer Substances 0.000 description 6
- 230000010365 information processing Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 101100481703 Arabidopsis thaliana TMK2 gene Proteins 0.000 description 4
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 239000000470 constituent Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 101100481704 Arabidopsis thaliana TMK3 gene Proteins 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital 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/5621—Digital 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/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/32—Timing circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
【課題】書込みデータの信頼性悪化を抑制する。【解決手段】一実施形態のメモリシステムは、各々が複数のセルユニットを含む複数のブロックを含む不揮発性メモリと、メモリコントローラと、を備える。複数のセルユニットの各々は、複数のメモリセルを含む。メモリコントローラは、第1ブロック内の第1セルユニットへ第1データが書き込まれたことに応じて、第1ブロック内の第2セルユニットから第2データを読み出し、第2データが条件を満たす場合、第1ブロックに対するリフレッシュ処理を予約する。【選択図】図7
Description
実施形態は、メモリシステムに関する。
不揮発性メモリとしてのNAND型フラッシュメモリと、不揮発性メモリを制御するメモリコントローラと、を含むメモリシステムが知られている。メモリコントローラは、ホスト機器からの要求に応じて、不揮発性メモリにデータを書き込む。
書込みデータの信頼性悪化を抑制する。
実施形態のメモリシステムは、各々が複数のセルユニットを含む複数のブロックを含む不揮発性メモリと、メモリコントローラと、を備える。上記複数のセルユニットの各々は、複数のメモリセルを含む。上記メモリコントローラは、第1ブロック内の第1セルユニットへ第1データが書き込まれたことに応じて、上記第1ブロック内の第2セルユニットから第2データを読み出し、上記第2データが条件を満たす場合、上記第1ブロックに対するリフレッシュ処理を予約する。
以下、図面を参照して実施形態について説明する。なお、以下の説明において、同一の機能及び構成を有する構成要素については、共通する参照符号を付す。また、共通する参照符号を有する複数の構成要素を区別する場合、当該共通する参照符号に添え字を付して区別する。なお、複数の構成要素について特に区別を要さない場合、当該複数の構成要素には、共通する参照符号のみが付され、添え字は付さない。
1.第1実施形態
1.1 構成
1.1.1 情報処理システム
第1実施形態に係る情報処理システムの構成について説明する。
1.1 構成
1.1.1 情報処理システム
第1実施形態に係る情報処理システムの構成について説明する。
1.1.1 メモリシステム
図1は、第1実施形態に係る情報処理システムの構成を示すブロック図である。図1に示すように、情報処理システム1は、ホスト機器2及びメモリシステム3を含む。
図1は、第1実施形態に係る情報処理システムの構成を示すブロック図である。図1に示すように、情報処理システム1は、ホスト機器2及びメモリシステム3を含む。
ホスト機器2は、メモリシステム3を使用してデータを処理するデータ処理装置である。ホスト機器2は、例えば、パーソナルコンピュータ又はデータセンタ内のサーバである。
メモリシステム3は、ホスト機器2に接続されるように構成された記憶装置である。メモリシステム3は、例えば、SDTMカードのようなメモリカード、UFS(Universal Flash Storage)、SSD(Solid State Drive)である。メモリシステム3は、ホスト機器2からの要求(コマンド)に応じてデータのライト処理、リード処理、イレース処理を実行する。メモリシステム3は、内部処理としてライト処理、リード処理、及びイレース処理を実行してもよい。
1.1.2 メモリシステム
第1実施形態に係るメモリシステムの内部構成について説明する。
第1実施形態に係るメモリシステムの内部構成について説明する。
メモリシステム3は、不揮発性メモリ10、揮発性メモリ20、及びメモリコントローラ30を含む。
不揮発性メモリ10は、例えば、NANDフラッシュメモリである。不揮発性メモリ10は、複数のブロックBLK(BLK0~BLK3)を含む。各ブロックBLKは、各々が不揮発にデータを記憶する複数のメモリセルトランジスタを含む。各ブロックBLKは、例えば、データの消去単位である。
揮発性メモリ20は、例えば、DRAM(Dynamic Random Access Memory)である。揮発性メモリ20は、ブロック管理情報21及びシフト量情報22を記憶する。ブロック管理情報21及びシフト量情報22の詳細については、後述する。
メモリコントローラ30は、例えばSoC(System-on-a-Chip)のような集積回路で構成される。メモリコントローラ30は、ホスト機器2からの要求(ホスト要求)に基づいて、不揮発性メモリ10を制御する。
具体的には、例えば、メモリコントローラ30は、ホスト機器2からの書込み要求(ホスト書込み要求)に基づいて、書込みデータを不揮発性メモリ10に書き込む。また、メモリコントローラ30は、ホスト機器2からの読出し要求(ホスト読出し要求)に基づいて、読出しデータを不揮発性メモリ10から読み出す。そして、メモリコントローラ30は、読出しデータに基づくデータをホスト機器2に送信する。
1.1.3 メモリコントローラ
次に、引き続き図1を参照して、メモリコントローラ30の内部構成について説明する。メモリコントローラ30は、制御回路31、バッファメモリ32、ホストインタフェース回路(ホストI/F)33、ECC(Error Correction and Check)回路34、不揮発性メモリインタフェース回路(NVM I/F)35、及び揮発性メモリインタフェース回路(VM I/F)36を含む。以下に説明されるメモリコントローラ30の各部31-36の機能は、ハードウェア構成、又はハードウェア資源とファームウェアとの組合せ構成のいずれでも実現可能である。
次に、引き続き図1を参照して、メモリコントローラ30の内部構成について説明する。メモリコントローラ30は、制御回路31、バッファメモリ32、ホストインタフェース回路(ホストI/F)33、ECC(Error Correction and Check)回路34、不揮発性メモリインタフェース回路(NVM I/F)35、及び揮発性メモリインタフェース回路(VM I/F)36を含む。以下に説明されるメモリコントローラ30の各部31-36の機能は、ハードウェア構成、又はハードウェア資源とファームウェアとの組合せ構成のいずれでも実現可能である。
制御回路31は、メモリコントローラ30の全体を制御する回路である。制御回路31は、例えば、CPU(Central Processing Unit)のようなプロセッサ、及びROM(Read Only Memory)を含む。
バッファメモリ32は、例えば、SRAM(Static Random Access Memory)である。バッファメモリ32は、ホスト機器2と不揮発性メモリ10との間でデータをバッファリングする。バッファメモリ32は、書込みデータ、及び読出しデータを一時的に記憶する。
ホストインタフェース回路33は、メモリコントローラ30とホスト機器2との間の通信を司る。ホストインタフェース回路33は、ホストバスを介してホスト機器2と接続される。ホストバスは、例えば、SDTMインタフェース、SAS(Serial Attached SCSI (Small Computer System Interface))、SATA(Serial ATA (Advanced Technology Attachment))、又はPCIeTM(Peripheral Component Interconnect express)に準拠する。
ECC回路34は、不揮発性メモリ10に記憶されるデータに関するエラー検出処理及びエラー訂正処理を行う。すなわちデータの書き込み時には、ECC回路34は、書込みデータに誤り訂正符号を付与する。データのリード処理時には、ECC回路34は、読出しデータを復号し、フェイルビットの有無を検出する。フェイルビットとは、複数のメモリセルトランジスタから読み出されたデータ(ビット列)のうち、当該複数のメモリセルトランジスタに書き込まれたデータと異なるビットである。そしてフェイルビットが検出された際には、ECC回路34は、フェイルビットのカラムアドレスを特定し、エラー訂正する。
不揮発性メモリインタフェース回路35は、不揮発性メモリ10とメモリコントローラ30との間の通信を司る。不揮発性メモリインタフェース回路35は、メモリバスBUSを介して不揮発性メモリ10と接続される。メモリバスBUSは、例えば、SDR(single data rate)インタフェース、トグルDDR(double data rate)インタフェース、又はONFI(Open NAND flash interface)に準拠する。
揮発性メモリインタフェース回路36は、揮発性メモリ20とメモリコントローラ30との間の通信を司る。揮発性メモリ20とメモリコントローラ30との間を接続するバスは、例えば、DRAMインタフェース規格に準拠する。
1.1.4 メモリバス
次に、不揮発性メモリ10とメモリコントローラ30との間でやり取りされる信号の一例を説明する。図2は、第1実施形態に係るメモリバスで用いられる信号の一例を示すブロック図である。
次に、不揮発性メモリ10とメモリコントローラ30との間でやり取りされる信号の一例を説明する。図2は、第1実施形態に係るメモリバスで用いられる信号の一例を示すブロック図である。
メモリバスBUSで用いられる信号は、例えば、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、リードイネーブル信号REn、ライトプロテクト信号WPn、レディ・ビジー信号RBn、及び入出力信号I/Oを含む。本明細書において、信号の名称の末尾のnは、その信号が“L(Low)”レベルの場合にアサートされることを意味する。
チップイネーブル信号CEnは、不揮発性メモリ10をイネーブルにするための信号である。
コマンドラッチイネーブル信号CLE及びアドレスラッチイネーブル信号ALEは、不揮発性メモリ10への入力信号I/Oがそれぞれコマンド及びアドレスであることを不揮発性メモリ10に通知する信号である。
ライトイネーブル信号WEnは、入力信号I/Oを不揮発性メモリ10に取り込ませるための信号である。
リードイネーブル信号REnは、不揮発性メモリ10から出力信号I/Oを読み出すための信号である。
ライトプロテクト信号WPnは、データの書き込み及び消去の禁止を不揮発性メモリ10に指示するための信号である。
レディ・ビジー信号RBnは、不揮発性メモリ10がレディ状態であるか、それともビジー状態であるかを示す信号である。レディ状態は、不揮発性メモリ10がメモリコントローラ30からの命令を受信出来る状態である。ビジー状態は、不揮発性メモリ10がメモリコントローラ30からの命令を受信出来ない状態である。レディ・ビジー信号RBnは、“L”レベルがビジー状態を示す。
入出力信号I/Oは、例えば8ビットの信号である。入出力信号I/Oは、不揮発性メモリ10とメモリコントローラ30との間で送受信されるデータの実体である。入出力信号I/Oは、コマンド、アドレス、並びに書込みデータ及び読出しデータ等のデータを含む。
1.1.5 不揮発性メモリ
次に、不揮発性メモリ10の内部構成について説明する。図3は、第1実施形態に係る構成の一例を示す回路図である。図3では、一例として、ブロックBLK0の構成が示される。他のブロックBLK1~BLK3の構成は、ブロックBLK0の構成と同等である。ブロックBLK0は、例えば、4つのストリングユニットSU0~SU3を含む。なお、図3において、ストリングユニットSU2及びSU3の構成は簡略化して示される。
次に、不揮発性メモリ10の内部構成について説明する。図3は、第1実施形態に係る構成の一例を示す回路図である。図3では、一例として、ブロックBLK0の構成が示される。他のブロックBLK1~BLK3の構成は、ブロックBLK0の構成と同等である。ブロックBLK0は、例えば、4つのストリングユニットSU0~SU3を含む。なお、図3において、ストリングユニットSU2及びSU3の構成は簡略化して示される。
各ストリングユニットSUは、ビット線BL0~BLm(mは、1以上の整数)にそれぞれ関連付けられた複数のNANDストリングNSを含む。NANDストリングNSは、例えばメモリセルトランジスタMT0~MT7、並びに選択トランジスタST1及びST2を含む。
メモリセルトランジスタMTは、制御ゲート及び電荷蓄積層を含み、データを不揮発に記憶する。選択トランジスタST1及びST2のそれぞれは、各種処理時におけるストリングユニットSUの選択に使用される。
各NANDストリングNSにおいて、メモリセルトランジスタMT0~MT7は、直列接続される。直列接続されたメモリセルトランジスタMT0~MT7の一端と、関連付けられたビット線BLとの間には、選択トランジスタST1が接続される。直列接続されたメモリセルトランジスタMT0~MT7の他端には、選択トランジスタST2のドレインが接続される。選択トランジスタST2のソースには、ソース線SLが接続される。
同一のブロックBLKにおいて、ストリングユニットSU0~SU3に含まれた複数の選択トランジスタST1の各々のゲートは、選択ゲート線SGD0~SGD3にそれぞれ共通接続される。複数のメモリセルトランジスタMT0~MT7の各々の制御ゲートは、ワード線WL0~WL7にそれぞれ共通接続される。複数の選択トランジスタST2の各々のゲートは、選択ゲート線SGSに共通接続される。
ビット線BL0~BLmは、複数のブロックBLK0~BLK3で共有される。同じカラムアドレスに対応するNANDストリングNSには、同じビット線BLが接続される。ワード線WL0~WL7のそれぞれは、ブロックBLK0~BLK3の各々に設けられる。ソース線SLは、例えば、複数のブロックBLK0~BLK3で共有される。
1つのストリングユニットSU内で共通のワード線WLに接続された複数のメモリセルトランジスタMTの集合は、例えばセルユニットCUと称され、データの書込み単位として使用される。例えば、それぞれが1ビットデータを記憶するメモリセルトランジスタMTを含むセルユニットCUの記憶容量が、「1ページデータ」として定義される。つまり、1ページデータは、セルユニットCU内のメモリセルトランジスタMTの数に応じた列数を有する1ビットデータ列のデータ領域である。1ページデータは、例えば、データの読出し単位として使用される。セルユニットCUは、メモリセルトランジスタMTが記憶するビットデータ数に応じて2ページデータ以上の記憶容量を有し得る。
なお、以上で説明したブロックBLKの回路構成はあくまで一例であり、これに限定されない。例えば、不揮発性メモリ10に含まれるブロックBLKの個数は、任意の個数に設計され得る。各ブロックBLKが含むストリングユニットSUの個数は、任意の個数に設計され得る。各NANDストリングNSが含むメモリセルトランジスタMT並びに選択トランジスタST1及びST2の各々の個数は、それぞれ任意の個数に設計され得る。
本実施形態では、1つのメモリセルトランジスタMTが3ビットデータを記憶することができる。すなわち、本実施形態におけるメモリセルトランジスタMTは、3ビットのデータを記憶するTLC(Triple Level Cell)である。MLCのメモリセルトランジスタが記憶する3ビットデータを、下位ビットから順に下位(Lower)ビット、中位ビット(Middle)、及び上位(Upper)ビットと呼ぶ。また、同一のセルユニットCUに含まれるメモリセルトランジスタMTの記憶する下位ビットの集合を“下位ページ”と呼び、中位ビットの集合を“中位ページ”と呼び、上位ビットの集合を“上位ページ”と呼ぶ。
図4は、第1実施形態に係る複数のメモリセルトランジスタMTの閾値電圧分布の一例を示す模式図である。メモリセルトランジスタMTが3ビットのデータを記憶する場合、その閾値電圧の分布は8個に分けられる。この8個の閾値電圧分布を、閾値電圧が低いものから順に“Er”状態(ステート)、“A”状態、“B”状態、“C”状態、“D”状態、“E”状態、“F”状態、及び“G”状態と呼ぶ。
また、図4に示す電圧VA、VB、VC、VD、VE、VF、及びVGはそれぞれ、リード処理の際に隣り合う2つの状態を区別するために用いられる。電圧VREADは、リード処理時において非選択ワード線に印加される電圧である。メモリセルトランジスタMTは、ゲートに電圧VREADが印加されると記憶するデータに依らずにオン状態になる。これらの電圧値の関係は、VA<VB<VC<VD<VE<VF<VG<VREADである。
上述した閾値電圧分布のうち“Er”状態は、メモリセルトランジスタMTの消去状態に相当する。“Er”状態における閾値電圧は、電圧VA未満である。“A”状態における閾値電圧は、電圧VA以上且つ電圧VB未満である。“B”状態における閾値電圧は、電圧VB以上且つ電圧VC未満である。“C”状態における閾値電圧は、電圧VC以上且つ電圧VD未満である。“D”状態における閾値電圧は、電圧VD以上且つ電圧VE未満である。“E”状態における閾値電圧は、電圧VE以上且つ電圧VF未満である。“F”状態における閾値電圧は、電圧VF以上且つ電圧VG未満である。“G”状態における閾値電圧は、電圧VG以上且つ電圧VREAD未満である。
上述した8個の閾値電圧分布は、下位ビット、中位ビット、及び上位ビットを含む3ビット(3ページ)データを書き込むことで形成される。そして8個の閾値電圧分布が、それぞれ異なる3ビットのデータに対応する。本実施形態では、各状態に含まれるメモリセルトランジスタMTに対して、“上位ビット/中位ビット/下位ビット”に以下に示すようにデータを割り付ける。
“Er”状態に含まれるメモリセルトランジスタMTは、“111”データを記憶する。“A”状態に含まれるメモリセルトランジスタMTは、“110”データを記憶する。“B”状態に含まれるメモリセルトランジスタMTは、“100”データを記憶する。“C”状態に含まれるメモリセルトランジスタMTは、“000”データを記憶する。“D”状態に含まれるメモリセルトランジスタMTは、“010”データを記憶する。“E”状態に含まれるメモリセルトランジスタMTは、“011”データを記憶する。“F”状態に含まれるメモリセルトランジスタMTは、“001”データを記憶する。“G”状態に含まれるメモリセルトランジスタMTは、“101”データを記憶する。
下位ページ読出しは、“Er”状態と“A”状態とを区別する電圧VA、及び“D”状態と“E”状態とを区別する電圧VEを読出し電圧として用いる。
中位ページ読出しは、“A”状態と“B”状態とを区別する電圧VB、“C”状態と“D”状態とを区別する電圧VD、及び“E”状態と“F”状態とを区別する電圧VFを読出し電圧として用いる。
上位ページ読出しは、“B”状態と“C”状態とを区別する電圧VC、及び“F”状態と“G”状態とを区別する電圧VGを読出し電圧として用いる。
1.1.6 ブロック管理情報
次に、ブロック管理情報21の構成について説明する。図5は、第1実施形態に係るメモリシステムのブロック管理情報の構成の一例を示す図である。図5に示すように、ブロック管理情報21には、書き込まれたデータの信頼性に関する情報が、ブロックBLK毎に記憶される。信頼性に関する情報は、例えば、リフレッシュフラグ及び時間差フラグを含む。
次に、ブロック管理情報21の構成について説明する。図5は、第1実施形態に係るメモリシステムのブロック管理情報の構成の一例を示す図である。図5に示すように、ブロック管理情報21には、書き込まれたデータの信頼性に関する情報が、ブロックBLK毎に記憶される。信頼性に関する情報は、例えば、リフレッシュフラグ及び時間差フラグを含む。
リフレッシュフラグは、対象ブロックBLKに対するリフレッシュ処理の実行が予約されているか否かを示すフラグである。リフレッシュ処理は、例えば、対象ブロックBLKに書き込まれたデータを、他のブロックBLKに書き写す処理である。リフレッシュ処理は、例えば、対象ブロックBLKに書き込まれたデータの一部又は全部を、当該対象ブロックBLKに上書きする処理であってもよい。リフレッシュフラグが“true”の場合、対象ブロックBLKに対するリフレッシュ処理が予約されていることを示す。リフレッシュフラグが“false”の場合、対象ブロックBLKに対するリフレッシュ処理が予約されていないことを示す。
時間差フラグは、データが対象ブロックBLKに複数回のライト処理に分けて書き込まれた場合に、最初のライト処理から最後のライト処理までの間の時間が、最初に書き込まれたデータの信頼性を損ねる程度に長いか否かを示すフラグである。以下の説明では、あるブロックBLKにおいて最初のライト処理でデータが書き込まれてから最後のライト処理でデータが書き込まれるまでの間の時間差は、「ライト時間差」ともいう。時間差フラグが“true”の場合、対象ブロックBLKのライト時間差が、当該対象ブロックBLKの信頼性を損ねる程度に長いことを示す。時間差フラグが“false”の場合、対象ブロックBLKのライト時間差が、当該対象ブロックBLKの信頼性を損ねる程度に長くないことを示す。
図5の例では、ブロックBLK0に、リフレッシュフラグ及び時間差フラグとしていずれも“true”が記憶されている場合が示される。ブロックBLK1に、リフレッシュフラグ及び時間差フラグとして、それぞれ“true”及び“false”が記憶されている場合が示される。ブロックBLK2及びBLK3の各々に、リフレッシュフラグ及び時間差フラグとしていずれも“false”が記憶されている場合が示される。
1.1.7 シフト量情報
次に、シフト量情報22の構成について説明する。図6は、第1実施形態に係るメモリシステムのシフト量情報の構成を示す図である。図6に示すように、シフト量情報22には、読出し電圧VA~VGのそれぞれのデフォルト値からのシフト量ΔVAn~ΔVGnの組がnmax通り記憶される。ここで、数nmaxは、1以上の整数である。数nは、0以上の整数である。
次に、シフト量情報22の構成について説明する。図6は、第1実施形態に係るメモリシステムのシフト量情報の構成を示す図である。図6に示すように、シフト量情報22には、読出し電圧VA~VGのそれぞれのデフォルト値からのシフト量ΔVAn~ΔVGnの組がnmax通り記憶される。ここで、数nmaxは、1以上の整数である。数nは、0以上の整数である。
シフト量情報22は、リトライ処理において使用される。リトライ処理は、リード処理によって読み出されたデータに対するエラーの訂正に失敗した場合に、当該読出しデータに対するエラーの訂正を成功させるための新たなリード処理を実行する処理である。リトライ処理の詳細については、後述する。
1.2 動作
次に、第1実施形態に係るメモリシステムにおける動作について説明する。
次に、第1実施形態に係るメモリシステムにおける動作について説明する。
1.2.1 ブロック管理処理
図7は、第1実施形態に係るメモリシステムにおけるブロック管理処理の一例を示すフローチャートである。
図7は、第1実施形態に係るメモリシステムにおけるブロック管理処理の一例を示すフローチャートである。
ライト処理が実行されると(開始)、メモリコントローラ30は、管理対象のブロックBLK内の全ての領域へデータが書き込まれたか否かを判定する(S10)。
管理対象のブロックBLK内の全ての領域へデータが書き込まれた場合(S10;yes)、メモリコントローラ30は、管理対象のブロックBLK内で最初にデータが書き込まれた領域に対するリード処理を不揮発性メモリ10に実行させる(S11)。これにより、メモリコントローラ30は、管理対象のブロックBLK内で最初に書き込まれたデータを不揮発性メモリ10から受信する。
ここで、最初にデータが書き込まれた領域は、物理領域及びデータ領域のいずれでもよい。物理領域として定義される場合、最初にデータが書き込まれた領域は、例えば、1本のワード線WL及び1個のストリングユニットSUの組に関連づけられる1個のセルユニットCUであり得る。データ領域として定義される場合、最初にデータが書き込まれた領域は、例えば、1個のセルユニットCU内の1又は複数ページ分のデータ領域(すなわち、管理対象のブロックBLKで最初にデータが書き込まれた1又は複数のページ)であってもよい。
メモリコントローラ30は、S11の処理によって不揮発性メモリ10から受信したデータに基づき、フェイルビット数を算出する(S12)。具体的には、ECC回路34は、S11の処理によって不揮発性メモリ10から受信したデータに関するエラー検出処理を実行する。これにより、メモリコントローラ30は、管理対象のブロックBLK内の全ての領域へのライト処理が完了した際、最初にデータが書き込まれた領域からの読出しデータにどの程度のエラーが生じているかを把握することができる。
メモリコントローラ30は、S12の処理で算出されたフェイルビット数が閾値以上であるか否かを判定する(S13)。
フェイルビット数が閾値以上である場合、(S13;yes)、メモリコントローラ30は、揮発性メモリ20のブロック管理情報21にアクセスし、管理対象のブロックBLKの時間差フラグを“true”に設定する(S14)。
また、メモリコントローラ30は、揮発性メモリ20のブロック管理情報21にアクセスし、管理対象のブロックBLKのリフレッシュフラグを“true”に設定する(S15)。
管理対象のブロックBLK内にデータが書き込まれていない領域がある場合(S10;no)、フェイルビット数が閾値未満である場合(S13;no)、又はS14及びS15の処理が終了すると、ブロック管理処理は終了となる(終了)。
なお、ブロック管理処理の後、メモリコントローラ30は、例えば、所定のタイミングで、ブロック管理情報21にアクセスし、リフレッシュフラグが“true”に設定されたブロックBLKの有無を判定する。リフレッシュフラグが“true”に設定されたブロックBLKがある場合、メモリコントローラ30は、リフレッシュフラグが“true”に設定されたブロックBLKに対して、リフレッシュ処理を実行する。リフレッシュ処理の実行後、メモリコントローラ30は、リフレッシュ処理が実行されたブロックBLKに対応するリフレッシュフラグを“false”に設定する。このようなリフレッシュ処理の実行判定処理は、ブロック管理処理と同期して実行されてもよいし、非同期に実行されてもよい。
1.2.2 ホストリード処理
図8は、第1実施形態に係るメモリシステムにおけるホストリード処理を含む一連の処理の一例を示すフローチャートである。ホストリード処理とは、ホスト機器2からの要求(リード要求)に応じて実行されるリード処理である。
図8は、第1実施形態に係るメモリシステムにおけるホストリード処理を含む一連の処理の一例を示すフローチャートである。ホストリード処理とは、ホスト機器2からの要求(リード要求)に応じて実行されるリード処理である。
ホスト機器2からリード要求を受信すると(開始)、メモリコントローラ30は、読出し対象の領域に対するホストリード処理を不揮発性メモリ10に実行させる(S20)。これにより、メモリコントローラ30は、読出し対象の領域に書き込まれたデータを不揮発性メモリ10から受信する。
メモリコントローラ30のECC回路34は、S20のホストリード処理によって不揮発性メモリ10から受信したデータに関するエラー検出処理及びエラー訂正処理を実行する。そして、ECC回路34は、エラー検出処理及びエラー訂正処理によって、データに含まれるエラーの訂正が成功したか否かを判定する(S21)。
エラーの訂正に失敗した場合(S21;no)、メモリコントローラ30は、揮発性メモリ20のブロック管理情報21にアクセスし、読出し対象の領域を含むブロックBLKの時間差フラグが“false”であるか否かを判定する(S22)。
読出し対象の領域を含むブロックBLKの時間差フラグが“false”である場合(S22;yes)、メモリコントローラ30は、読出し対象の領域を含むブロックBLKに対する第1リトライ処理を実行する(S23)。
読出し対象の領域を含むブロックBLKの時間差フラグが“true”である場合(S22;no)、メモリコントローラ30は、読出し対象の領域を含むブロックBLKに対する第2リトライ処理を実行する(S24)。
第1リトライ処理及び第2リトライ処理では、例えば、S20のホストリード処理における読出し電圧とは異なる読出し電圧を使用した新たなリード処理が実行される。
エラーの訂正に成功した場合(S21;yes)、S23の第1リトライ処理の後、又はS24の第2リトライ処理の後、ホストリード処理を含む一連の処理は、終了となる(終了)。
1.2.3 第1リトライ処理
図9は、第1実施形態に係るメモリシステムにおける第1リトライ処理の一例を示すフローチャートである。図9に示されるS30~S39の処理は、図8におけるS23の処理に対応する。
図9は、第1実施形態に係るメモリシステムにおける第1リトライ処理の一例を示すフローチャートである。図9に示されるS30~S39の処理は、図8におけるS23の処理に対応する。
ホストリード処理においてエラーの訂正に失敗し、かつ読出し対象の領域を含むブロックBLKの時間差フラグが“false”である場合(開始)、メモリコントローラ30は、数nを0に初期化する(S30)。
メモリコントローラ30は、n番目のシフト量を用いて、読出し対象の領域に対するリード処理を不揮発性メモリ10に実行させる(S31)。
メモリコントローラ30のECC回路34は、S31のリード処理によって不揮発性メモリ10から受信したデータに関するエラー検出処理及びエラー訂正処理を実行する。そして、ECC回路34は、エラー検出処理及びエラー訂正処理によって、データに含まれるエラーの訂正が成功したか否かを判定する(S32)。
エラーの訂正に失敗した場合(S32;no)、メモリコントローラ30は、数nが数nmaxに到達したか否かを判定する(S33)。
数nが数nmaxに到達していない場合(S33;no)、メモリコントローラ30は、数nをインクリメントする(S34)。
S34の処理の後、メモリコントローラ30は、S34の処理によってインクリメントされたn番目のシフト量を用いて、読出し対象の領域に対するリード処理を不揮発性メモリ10に実行させる(S31)。このように、S32の処理においてエラーの訂正に成功するまで、又は数nが数nmaxに到達するまで、S31~S34の処理が繰り返される。
数nが数nmaxに到達した場合(S34;yes)、揮発性メモリ20のブロック管理情報21にアクセスし、読出し対象の領域を含むブロックBLKのリフレッシュフラグを“true”に設定する(S35)。
S35の処理の後、メモリコントローラ30は、Vthトラッキング処理を実行する(S36)。Vthトラッキング処理は、読出し対象の領域に対して互いに異なる読出し電圧を用いた複数回のリード処理を実行することによって読出し対象の領域における閾値電圧分布を推定し、当該推定された閾値電圧分布に基づいて読出し電圧を推定する処理である。
メモリコントローラ30は、読出し対象の領域に対して、S36のVthトラッキング処理によって推定された読出し電圧を用いたリード処理を不揮発性メモリ10に実行させる(S37)。
メモリコントローラ30のECC回路34は、S37のリード処理によって不揮発性メモリ10から受信したデータに関するエラー検出処理及びエラー訂正処理を実行する。そして、ECC回路34は、エラー検出処理及びエラー訂正処理によって、データに含まれるエラーの訂正が成功したか否かを判定する(S38)。
エラーの訂正に失敗した場合(S38;no)、メモリコントローラ30は、読出し対象の領域から読み出されるデータに含まれるエラーの訂正が不可であると判定する(S39)。
シフト量情報22内のシフト量、若しくはVthトラッキング処理によって推定された読出し電圧を用いたリード処理に基づくエラーの訂正に成功した場合(S32;yes若しくはS38;yes)、又はS39の処理の後、第1リトライ処理は終了となる(終了)。
1.2.4 第2リトライ処理
図10は、第1実施形態に係るメモリシステムにおける第2リトライ処理の一例を示すフローチャートである。図10に示されるS40~S43の処理は、図8におけるS24の処理に対応する。
図10は、第1実施形態に係るメモリシステムにおける第2リトライ処理の一例を示すフローチャートである。図10に示されるS40~S43の処理は、図8におけるS24の処理に対応する。
ホストリード処理においてエラーの訂正に失敗し、かつ読出し対象の領域を含むブロックBLKの時間差フラグが“true”である場合(開始)、メモリコントローラ30は、Vthトラッキング処理を実行する(S40)。
メモリコントローラ30は、読出し対象の領域に対して、S40のVthトラッキング処理によって推定された読出し電圧を用いたリード処理を不揮発性メモリ10に実行させる(S41)。
メモリコントローラ30のECC回路34は、S41のリード処理によって不揮発性メモリ10から受信したデータに関するエラー検出処理及びエラー訂正処理を実行する。そして、ECC回路34は、エラー検出処理及びエラー訂正処理によって、データに含まれるエラーの訂正が成功したか否かを判定する(S42)。
エラーの訂正に失敗した場合(S42;no)、メモリコントローラ30は、読出し対象の領域から読み出されるデータに含まれるエラーの訂正が不可であると判定する(S43)。
エラーの訂正に成功した場合(S42;yes)、又はS43の処理の後、第2リトライ処理は終了となる(終了)。
このように、第2リトライ処理では、第1リトライ処理のうち、シフト量情報22を用いたリード処理が省略される。これにより、メモリコントローラ30は、時間差フラグが“true”である場合には、時間差フラグが“false”である場合よりもリトライ処理を簡略化させることができる。
なお、メモリコントローラ30は、ブロック管理処理の場合と同様に、ホストリード処理の後に、リフレッシュフラグの実行判定処理を実行し得る。リフレッシュフラグの実行判定処理の詳細は、ブロック管理処理の際と同等であるため、説明を省略する。なお、フレッシュ処理の実行判定処理は、ホストリード処理と同期して実行されてもよいし、非同期に実行されてもよい。
1.3 第1実施形態に係る効果
フェイルビット数は、データが書き込まれた後の経過時間に応じて増加する傾向を有する。このため、ライト時間差が大きい場合、ブロックBLK内の全ての領域が書き込まれた際、最初にデータが書き込まれた領域から読み出されるデータには、最後にデータが書き込まれた領域から読み出されるデータに対して、有意に多いフェイルビット数が含まれている可能性があり、好ましくない。
フェイルビット数は、データが書き込まれた後の経過時間に応じて増加する傾向を有する。このため、ライト時間差が大きい場合、ブロックBLK内の全ての領域が書き込まれた際、最初にデータが書き込まれた領域から読み出されるデータには、最後にデータが書き込まれた領域から読み出されるデータに対して、有意に多いフェイルビット数が含まれている可能性があり、好ましくない。
第1実施形態によれば、メモリコントローラ30は、ブロックBLK内の全ての領域にデータが書き込まれたことに応じて、当該ブロックBLK内で最初にデータが書き込まれた領域からデータを読み出す。読み出されたデータに含まれるフェイルビット数が閾値以上の場合、メモリコントローラ30は、ブロックBLK内で最初にデータが書き込まれた時間と、最後にデータが書き込まれた時間との間に生じるライト時間差が有意に大きいと判定する。これにより、ライト時間差が大きいブロックBLKを検出することができる。
また、ライト時間差が有意に大きい場合には、当該ブロックBLKに対応するリフレッシュフラグを“true”に設定する。これにより、リフレッシュ処理が適宜実行される。このため、当該ブロックBLKのライト時間差を解消することができる。従って、書込みデータの信頼性悪化を抑制することができる。
また、ライト時間差が有意に大きい場合には、メモリコントローラ30は、当該ブロックBLKに対応する時間差フラグを更に“true”に設定する。これにより、ブロックBLK内の書込み順番が最初と最後の領域間で大きなライト時間差が生じているか否かの情報を、ブロックBLK毎に1ビットの情報で管理することができる。
また、ホストリード処理においてフェイルビットの訂正に失敗した場合、メモリコントローラ30は、時間差フラグに“true”が設定されているか否かに応じて、異なるリトライ処理を実行する。これにより、ライト時間差が有意に大きく、シフト量情報22に基づくリトライ処理ではエラー訂正処理が成功しないことが想定される場合には、シフト量情報22に基づくリード処理を実行することなく、速やかにVthトラッキング処理に移行することができる。このため、リトライ処理に要する時間を短縮することができる。
2. 第2実施形態
次に、第2実施形態に係るメモリシステムについて説明する。第2実施形態は、読出し電圧のシフト量をブロックBLK毎に管理する点において、第1実施形態と異なる。以下の説明では、第1実施形態と同等の構成及び動作については説明を省略し、第1実施形態と異なる構成及び動作について主に説明する。
次に、第2実施形態に係るメモリシステムについて説明する。第2実施形態は、読出し電圧のシフト量をブロックBLK毎に管理する点において、第1実施形態と異なる。以下の説明では、第1実施形態と同等の構成及び動作については説明を省略し、第1実施形態と異なる構成及び動作について主に説明する。
2.1 ブロック管理情報
図11は、第2実施形態に係るメモリシステムのブロック管理情報の構成の一例を示す図である。図11は、第1実施形態における図5に対応する。図11に示すように、ブロック管理情報21Aには、リフレッシュフラグ、及び時間差フラグに加えて、アンカーID、先頭ID、及び後尾IDがブロックBLK毎に記憶される。
図11は、第2実施形態に係るメモリシステムのブロック管理情報の構成の一例を示す図である。図11は、第1実施形態における図5に対応する。図11に示すように、ブロック管理情報21Aには、リフレッシュフラグ、及び時間差フラグに加えて、アンカーID、先頭ID、及び後尾IDがブロックBLK毎に記憶される。
アンカーID、先頭ID、及び後尾IDは、読出し電圧VA~VGのそれぞれのシフト量の組の圧縮値である。すなわち、1個のIDは、1組のシフト量=(ΔVA,ΔVB,ΔVC,ΔVD,ΔVE,ΔVF,ΔVG)に対応する。1組のシフト量は、シフト量算出処理によって算出される。また、1組のシフト量は、圧縮処理によって1個のIDに圧縮される。シフト量算出処理及び圧縮処理の詳細については、後述する。
アンカーIDは、管理対象のブロックBLKにおけるアンカー領域に対するシフト量算出処理によって算出されたシフト量の圧縮値である。アンカー領域とは、管理対象のブロックBLKを代表する領域である。アンカー領域と異なる読出し対象領域からデータを読み出す場合、メモリコントローラ30は、例えば、アンカーIDを1組のシフト量に展開した後、当該展開された1組のシフト量を読出し対象領域とアンカー領域との位置関係に応じて補正する。このように、メモリコントローラ30は、アンカーIDに基づき、当該アンカーIDに対応する管理対象のブロックBLK内の任意の領域における読出し電圧のシフト量を算出する機能を有する。なお、アンカー領域は、1個のセルユニットに対応していてもよい。アンカー領域は、セルユニットCU内の1又は複数ページに対応していてもよい。
先頭IDは、管理対象のブロックBLKにおいてデータが最初に書き込まれた領域(以下、「先頭領域」とも言う。)に対するシフト量算出処理によって算出されたシフト量の圧縮値である。メモリコントローラ30は、先頭IDに基づき、当該先頭IDに対応する管理対象のブロックBLK内の任意の領域における読出し電圧のシフト量を算出する機能を有していてもよい。なお、先頭領域は、1個のセルユニットに対応していてもよい。先頭領域は、セルユニットCU内の1又は複数ページに対応していてもよい。
後尾IDは、管理対象のブロックBLKにおいてデータが最後に書き込まれた領域(以下、「後尾領域」とも言う。)に対するシフト量算出処理によって算出されたシフト量の圧縮値である。メモリコントローラ30は、後尾IDに基づき、当該後尾IDに対応する管理対象のブロックBLK内の任意の領域における読出し電圧のシフト量を算出する機能を有していてもよい。なお、後尾領域は、1個のセルユニットに対応していてもよい。後尾領域は、セルユニットCU内の1又は複数ページに対応していてもよい。
図11の例では、ブロックBLK0にアンカーIDとして9が、先頭IDとして3が、後尾IDとして8がそれぞれ記憶されている場合が示される。ブロックBLK1、BLK2、及びBLK3には、アンカーIDとしてそれぞれ3、4、及び5が記憶されており、先頭ID及び後尾IDは記憶されていない場合が示される。
2.2 ブロック管理処理
図12は、第2実施形態に係るメモリシステムにおけるブロック管理処理の一例を示すフローチャートである。図12は、第1実施形態における図7に対応する。図12の例では、管理対象のブロックBLKに対応するアンカーIDが、ブロック管理情報21Aに予め記憶されているものとする。
図12は、第2実施形態に係るメモリシステムにおけるブロック管理処理の一例を示すフローチャートである。図12は、第1実施形態における図7に対応する。図12の例では、管理対象のブロックBLKに対応するアンカーIDが、ブロック管理情報21Aに予め記憶されているものとする。
ライト処理が実行されると(開始)、メモリコントローラ30は、管理対象のブロックBLK内の全ての領域へデータが書き込まれたか否かを判定する(S50)。
管理対象のブロックBLK内の全ての領域へデータが書き込まれた場合(S50;yes)、メモリコントローラ30は、アンカーIDに基づき、管理対象のブロックBLK内の先頭領域に対するリード処理を不揮発性メモリ10に実行させる(S51)。これにより、メモリコントローラ30は、管理対象のブロックBLK内で最初に書き込まれたデータを不揮発性メモリ10から受信する。
メモリコントローラ30は、S51の処理によって不揮発性メモリ10から受信したデータに基づき、フェイルビット数を算出する(S52)。具体的には、ECC回路34は、S51の処理によって不揮発性メモリ10から受信したデータに関するエラー検出処理を実行する。これにより、メモリコントローラ30は、管理対象のブロックBLK内の全ての領域へのライト処理が完了した際、先頭領域からの読出しデータにどの程度のエラーが生じているかを把握することができる。
メモリコントローラ30は、S52の処理で算出されたフェイルビット数が閾値以上であるか否かを判定する(S53)。
フェイルビット数が閾値以上である場合、(S53;yes)、メモリコントローラ30は、揮発性メモリ20のブロック管理情報21にアクセスし、管理対象のブロックBLKの時間差フラグを“true”に設定する(S54)。
また、メモリコントローラ30は、揮発性メモリ20のブロック管理情報21にアクセスし、管理対象のブロックBLKのリフレッシュフラグを“true”に設定する(S55)。
メモリコントローラ30は、S51のリード処理の結果に基づくシフト量算出処理を実行する。これにより、メモリコントローラ30は、管理対象のブロックBLK内の先頭領域に対する読出し電圧のシフト量(先頭シフト量)を算出する(S56)。
メモリコントローラ30は、S56のシフト量算出処理によって算出された先頭シフト量の圧縮処理を実行する。これにより、メモリコントローラ30は、先頭シフト量に基づく先頭IDを導出する(S57)。
更に、メモリコントローラ30は、アンカーIDに基づき、管理対象のブロックBLK内の後尾領域に対するリード処理を不揮発性メモリ10に実行させる(S58)。これにより、メモリコントローラ30は、管理対象のブロックBLK内で最後に書き込まれたデータを不揮発性メモリ10から受信する。
メモリコントローラ30は、S58のリード処理の結果に基づくシフト量算出処理を実行する。これにより、メモリコントローラ30は、管理対象のブロックBLK内の後尾領域に対する読出し電圧のシフト量(後尾シフト量)を算出する(S59)。
メモリコントローラ30は、S59のシフト量算出処理によって算出された後尾シフト量の圧縮処理を実行する。これにより、メモリコントローラ30は、後尾シフト量に基づく後尾IDを導出する(S60)。
メモリコントローラ30は、S57の圧縮処理によって導出された先頭ID、及びS60の圧縮処理によって導出された後尾IDを管理対象のブロックBLKに対応づけて、揮発性メモリ20のブロック管理情報21Aに記憶させる。
S61の処理の後、ブロック管理処理は終了となる(終了)。
2.3 シフト量算出処理
次に、S56及びS59のシフト量算出処理の詳細について説明する。以下では、読出し電圧のデフォルト値を使用して読み出されたデータに基づくシフト量算出処理について説明する。
次に、S56及びS59のシフト量算出処理の詳細について説明する。以下では、読出し電圧のデフォルト値を使用して読み出されたデータに基づくシフト量算出処理について説明する。
S51及びS58のリード処理の後、ECC回路34は、読み出されたデータに対して、エラー検出処理を実行する。これにより、メモリコントローラ30は、読出しデータのカラムアドレス毎に、訂正前のデータ列と、訂正後のデータ列と、を把握できる。このため、メモリコントローラ30は、読出しデータのカラムアドレス毎に、書き込まれた際の(真の)状態と、読み出された際の(誤りを含み得る)状態と、を把握できる。具体的には、例えば、メモリコントローラ30は、“A”状態として書き込まれたデータが“Er”状態として誤って読み出されたメモリセル数E12を把握できる。また、メモリコントローラ30は、“Er”状態として書き込まれたデータが“A”状態として誤って読み出されたメモリセル数E21を把握できる。
図13は、第2実施形態に係るメモリシステムにおけるシフト量算出処理の一例を示す図である。図13の例では、読出し電圧VAのシフト量を算出する場合が示される。図13において、“A”状態として書き込まれたデータが“Er”状態として誤って読み出されたメモリセル数E12は、図13(A)~図13(C)における領域(a)の面積に相当する。また、“Er”状態として書き込まれたデータが“A”状態として誤って読み出されたメモリセル数E21は、図13(A)~図13(C)における領域(b)の面積に相当する。
図13(A)では、読出し電圧VAが“Er”状態及び“A”状態に対応する2つの閾値電圧分布の交差する位置における閾値電圧VAoptと等しい場合が示される。図13(A)の場合、領域(a)の面積と、領域(b)の面積とは、等しくなる。この場合、“Er”状態と“A”状態との間で発生するフェイルビット数E(=E12+E21)は最小となることが期待される。このため、メモリコントローラ30は、読出し電圧VAが更新不要であると判定する。つまり、メモリコントローラ30は、“0”のシフト量ΔVAを算出する(ΔVA=0)。
図13(B)では、読出し電圧VAが“Er”状態及び“A”状態に対応する2つの閾値電圧分布の交差する位置における閾値電圧VAoptよりも高電圧側に位置する場合が示される。図13(B)の場合、領域(a)の面積は、領域(b)の面積よりも大きくなる。この場合、フェイルビット数Eは、図13(A)の場合のフェイルビット数Eよりも多くなり、好ましくない。このため、メモリコントローラ30は、読出し電圧VAを電圧VAoptに近づけるように、低電圧側にシフトさせる。つまり、メモリコントローラ30は、負のシフト量ΔVAを算出する(ΔVA<0)。
図13(C)では、読出し電圧VAが“Er”状態及び“A”状態に対応する2つの閾値電圧分布の交差する位置における閾値電圧VAoptよりも低電圧側に位置する場合が示される。図13(C)の場合、領域(a)の面積は、領域(b)の面積よりも小さくなる。この場合、フェイルビット数Eは、図13(A)の場合のフェイルビット数Eよりも多くなり、好ましくない。このため、メモリコントローラ30は、読出し電圧VAを電圧VAoptに近づけるように、高電圧側にシフトさせる。つまり、メモリコントローラ30は、正のシフト量ΔVAを算出する(ΔVA>0)。
なお、領域(a)の面積及び領域(b)の面積の差の絶対値は、読出し電圧VAが閾値電圧VAoptから離れるほど大きくなることが期待される。このため、メモリコントローラ30は、読出し電圧VAのシフト量ΔVAを、領域(a)の面積及び領域(b)の面積の比の大きさに応じて決定する。これにより、閾値電圧分布の重複の度合いに応じて適切なシフト量を決定することができ、閾値電圧VAoptに近づくようにシフト量ΔVAを算出することができる。
なお、図示は省略されるが、他の読出し電圧VB~VGについても、読出し電圧VAの場合と同様にシフト量ΔVB~ΔVGが算出される。
以上のように動作することにより、S56のシフト量算出処理では、先頭領域から読み出されたデータに基づく1組のシフト量が先頭シフト量として算出される。また、S59のシフト量算出処理では、後尾領域から読み出されたデータに基づく1組のシフト量が後尾シフト量として算出される。
なお、シフト量ΔVApreを読出し電圧VAのデフォルト値VA0に加えた値(VA0+ΔVApre)を使用して読み出されたデータに基づくシフト量算出処理では、シフト量ΔVApreは、以下のようなシフト量ΔVApostに更新される。すなわち、図13(A)のように、領域(a)の面積と領域(b)の面積とが等しい場合、シフト量ΔVAの更新は不要である。このため、シフト量ΔVApost=シフト量ΔVApreとなる。図13(B)のように、領域(a)の面積が領域(b)の面積よりも大きい場合、シフト量ΔVApostは、シフト量ΔVApreよりも低い値に更新される。図13(C)のように、領域(a)の面積が領域(b)の面積よりも小さい場合、シフト量ΔVApostは、シフト量ΔVApreよりも高い値に更新される。
2.4 圧縮処理
次に、S57及びS60の圧縮処理の詳細について説明する。
次に、S57及びS60の圧縮処理の詳細について説明する。
1組のシフト量は、k次元の特徴量によって特徴付けられる(kは、1以上の整数)。圧縮処理は、1組のシフト量を特徴付けるk次元の特徴量に基づき、1組のシフト量を圧縮値対応づける処理である。
図14は、第2実施形態に係るメモリシステムにおける圧縮処理で領域によって分類される複数の圧縮値の一例を示す図である。図14では、一例として、kが2の場合が示される。すなわち、1組のシフト量は、互いに交差するv1軸及びv2による2次元空間上にマッピングされる。そして、当該2次元空間上においてマッピングされる位置に応じて、1組のシフト量に圧縮値が割り当てられる。
図14の例では、c1未満の特徴量v1、及びa2以上の特徴量v2によって特徴付けられる1組のシフト量には、圧縮値1が割り当てられる。c1以上a1未満の特徴量v1、及びc2以上の特徴量v2によって特徴付けられる1組のシフト量には、圧縮値2が割り当てられる。a1以上の特徴量v1、及びb2以上の特徴量v2によって特徴付けられる1組のシフト量には、圧縮値3が割り当てられる。c1以上a1未満の特徴量v1、及びa2以上c2未満の特徴量v2によって特徴付けられる1組のシフト量には、圧縮値4が割り当てられる。a1以上b1未満の特徴量v1、及びd2以上b2未満の特徴量v2によって特徴付けられる1組のシフト量には、圧縮値5が割り当てられる。b1以上の特徴量v1、及びe2以上b2未満の特徴量v2によって特徴付けられる1組のシフト量には、圧縮値6が割り当てられる。a1未満の特徴量v1、及びa2未満の特徴量v2によって特徴付けられる1組のシフト量には、圧縮値7が割り当てられる。a1以上b1未満の特徴量v1、及びd2未満の特徴量v2によって特徴付けられる1組のシフト量には、圧縮値8が割り当てられる。b1以上の特徴量v1、及びe2未満の特徴量v2によって特徴付けられる1組のシフト量には、圧縮値9が割り当てられる。
ここで、数a1、b1、及びc1は、c1<a1<b1の大小関係を満たす。数a2、b2、c2、d2、及びe2は、e2<a2<d2<b2<c2の大小関係を満たす。
以上のような圧縮値の割り当ては、例えば、二分木を用いて分類される。図15は、第2実施形態に係るメモリシステムおける圧縮処理で二分木によって分類される複数の圧縮値の一例を示す図である。図15に示される二分木は、図14に示される圧縮値の割り当てに対応する。
図15に示すように、二分木は、例えば、8個のノードN1~N8、及び9個の終端ノードT1~T9を含む。ノードN1~N8がそれぞれ、特徴量に対する互いに異なる判定処理S70~S77に対応する。図15では、「特徴量XがY以上であるか否か」という判定処理が(X,Y)のように記号化されて示される。
すなわち、ノードN1において、メモリコントローラ30は、特徴量v1がa1以上であるか否かを判定する(S70)。
特徴量v1がa1未満である場合(S70;no)、メモリコントローラ30は、特徴量v2がa2以上であるか否かを判定する(S71)。
特徴量v2がa2未満の場合(S71;no)、メモリコントローラ30は、1組のシフト量の圧縮値が7であると判定する。
特徴量v2がa2以上である場合(S71;yes)、メモリコントローラ30は、特徴量v1がc1以上であるか否かを判定する(S72)。
特徴量v1がc1未満である場合(S72;no)、メモリコントローラ30は、1組のシフト量の圧縮値が1であると判定する。
特徴量v1がc1以上である場合(S72;yes)、メモリコントローラ30は、特徴量v2がc2以上であるか否かを判定する(S73)。
特徴量v2がc2未満である場合(S73;no)、メモリコントローラ30は、1組のシフト量の圧縮値が4であると判定する。
特徴量v2がc2以上である場合(S73;yes)、メモリコントローラ30は、1組のシフト量の圧縮値が2であると判定する。
特徴量v1がa1以上である場合(S70;yes)、メモリコントローラ30は、特徴量v2がb2以上であるか否かを判定する(S74)。
特徴量v2がb2以上の場合(S74;yes)、メモリコントローラ30は、1組のシフト量の圧縮値が3であると判定する。
特徴量v2がb2未満である場合(S74;no)、メモリコントローラ30は、特徴量v1がb1以上であるか否かを判定する(S75)。
特徴量v1がb1未満である場合(S75;no)、メモリコントローラ30は、特徴量v2がd2以上であるか否かを判定する(S76)。
特徴量v2がd2未満である場合(S76;no)、メモリコントローラ30は、1組のシフト量の圧縮値が8であると判定する。
特徴量v2がd2以上である場合(S76;yes)、メモリコントローラ30は、1組のシフト量の圧縮値が5であると判定する。
特徴量v1がb1以上である場合(S75;yes)、メモリコントローラ30は、特徴量v2がe2以上であるか否かを判定する(S77)。
特徴量v2がe2未満である場合(S77;no)、メモリコントローラ30は、1組のシフト量の圧縮値が9であると判定する。
特徴量v2がe2以上である場合(S77;yes)、メモリコントローラ30は、1組のシフト量の圧縮値が6であると判定する。
以上により、任意の組のシフト量を、圧縮値1~9のいずれかに割り当てることができる。
2.3 ホストリード処理
図16は、第2実施形態に係るメモリシステムにおけるホストリード処理を含む一連の処理の一例を示すフローチャートである。図16は、第1実施形態における図8に対応する。図16の例では、読出し対象のブロックBLKに対応するアンカーIDが、ブロック管理情報21Aに予め記憶されているものとする。
図16は、第2実施形態に係るメモリシステムにおけるホストリード処理を含む一連の処理の一例を示すフローチャートである。図16は、第1実施形態における図8に対応する。図16の例では、読出し対象のブロックBLKに対応するアンカーIDが、ブロック管理情報21Aに予め記憶されているものとする。
ホスト機器2からリード要求を受信すると(開始)、メモリコントローラ30は、アンカーIDに基づき、読出し対象の領域に対するホストリード処理を不揮発性メモリ10に実行させる(S80)。これにより、メモリコントローラ30は、読出し対象の領域に書き込まれたデータを不揮発性メモリ10から受信する。
メモリコントローラ30のECC回路34は、S80のホストリード処理によって不揮発性メモリ10から受信したデータに関するエラー検出処理及びエラー訂正処理を実行する。そして、ECC回路34は、エラー検出処理及びエラー訂正処理によって、データに含まれるエラーの訂正が成功したか否かを判定する(S81)。
エラーの訂正に失敗した場合(S81;no)、メモリコントローラ30は、揮発性メモリ20のブロック管理情報21にアクセスし、読出し対象の領域を含むブロックBLKの時間差フラグが“false”であるか否かを判定する(S82)。
読出し対象の領域を含むブロックBLKの時間差フラグが“false”である場合(S82;yes)、メモリコントローラ30は、読出し対象の領域を含むブロックBLKに対する第1リトライ処理を実行する(S83)。S83の第1リトライ処理は、図8におけるS23の第1リトライ処理と同等である。
読出し対象の領域を含むブロックBLKの時間差フラグが“true”である場合(S82;no)、メモリコントローラ30は、読出し対象の領域を含むブロックBLKに対する第2リトライ処理を実行する(S84)。S84の第2リトライ処理は、図8におけるS24の第2リトライ処理と異なる。
エラーの訂正に成功した場合(S81;yes)、S83の第1リトライ処理の後、又はS84の第2リトライ処理の後、ホストリード処理を含む一連の処理は、終了となる(終了)。
2.4 第2リトライ処理
次に、第2実施形態に係るメモリシステムにおける第2リトライ処理について説明する。
次に、第2実施形態に係るメモリシステムにおける第2リトライ処理について説明する。
2.4.1 フローチャート
図17は、第2実施形態に係るメモリシステムにおける第2リトライ処理の一例を示すフローチャートである。図17に示されるS90~S102の処理は、図16におけるS84の処理に対応する。図17の例では、読出し対象のブロックBLKに対応する先頭ID及び後尾IDが、ブロック管理情報21Aに予め記憶されているものとする。
図17は、第2実施形態に係るメモリシステムにおける第2リトライ処理の一例を示すフローチャートである。図17に示されるS90~S102の処理は、図16におけるS84の処理に対応する。図17の例では、読出し対象のブロックBLKに対応する先頭ID及び後尾IDが、ブロック管理情報21Aに予め記憶されているものとする。
ホストリード処理においてエラーの訂正に失敗し、かつ読出し対象の領域を含むブロックBLKの時間差フラグが“true”である場合(開始)、メモリコントローラ30は、読出し対象の領域がアンカー領域よりも先に書き込まれたか否かを判定する(S90)。
読出し対象の領域がアンカー領域よりも先に書き込まれた場合(S90;yes)、メモリコントローラ30は、先頭IDに基づき、読出し対象の領域に対するリード処理を不揮発性メモリ10に実行させる(S91)。これにより、メモリコントローラ30は、図16におけるS80のホストリード処理とは異なる読出し電圧を用いて、読出し対象の領域から読み出されたデータを不揮発性メモリ10から受信する。
メモリコントローラ30のECC回路34は、S91のリード処理によって不揮発性メモリ10から受信したデータに関するエラー検出処理及びエラー訂正処理を実行する。そして、ECC回路34は、エラー検出処理及びエラー訂正処理によって、データに含まれるエラーの訂正が成功したか否かを判定する(S92)。
エラーの訂正に失敗した場合(S92;no)、メモリコントローラ30は、アンカーID及び先頭IDに基づくID(第1中間ID)に基づき、読出し対象の領域に対するリード処理を不揮発性メモリ10に実行させる(S93)。これにより、メモリコントローラ30は、図16におけるS80のホストリード処理、及びS93のリード処理とは異なる読出し電圧を用いて、読出し対象の領域から読み出されたデータを不揮発性メモリ10から受信する。
メモリコントローラ30のECC回路34は、S93のリード処理によって不揮発性メモリ10から受信したデータに関するエラー検出処理及びエラー訂正処理を実行する。そして、ECC回路34は、エラー検出処理及びエラー訂正処理によって、データに含まれるエラーの訂正が成功したか否かを判定する(S94)。
先頭ID又は第1中間IDに基づく読出しデータのエラーの訂正に失敗した場合(S92;yes又はS94;yes)、第2リトライ処理は終了となる(終了)。
読出し対象の領域がアンカー領域よりも後に書き込まれた場合(S90;no)、メモリコントローラ30は、後尾IDに基づき、読出し対象の領域に対するリード処理を不揮発性メモリ10に実行させる(S95)。これにより、メモリコントローラ30は、図16におけるS80のホストリード処理とは異なる読出し電圧を用いて、読出し対象の領域から読み出されたデータを不揮発性メモリ10から受信する。
メモリコントローラ30のECC回路34は、S95のリード処理によって不揮発性メモリ10から受信したデータに関するエラー検出処理及びエラー訂正処理を実行する。そして、ECC回路34は、エラー検出処理及びエラー訂正処理によって、データに含まれるエラーの訂正が成功したか否かを判定する(S96)。
エラーの訂正に失敗した場合(S96;no)、メモリコントローラ30は、アンカーID及び後尾IDに基づくID(第2中間ID)に基づき、読出し対象の領域に対するリード処理を不揮発性メモリ10に実行させる(S97)。これにより、メモリコントローラ30は、図16におけるS80のホストリード処理、及びS95のリード処理とは異なる読出し電圧を用いて、読出し対象の領域から読み出されたデータを不揮発性メモリ10から受信する。
メモリコントローラ30のECC回路34は、S97のリード処理によって不揮発性メモリ10から受信したデータに関するエラー検出処理及びエラー訂正処理を実行する。そして、ECC回路34は、エラー検出処理及びエラー訂正処理によって、データに含まれるエラーの訂正が成功したか否かを判定する(S98)。
後尾ID又は第2中間IDに基づく読出しデータのエラーの訂正に失敗した場合(S96;yes又はS98;yes)、第2リトライ処理は終了となる(終了)。
先頭ID及び第1中間IDに基づく読出しデータのいずれのエラーの訂正にも失敗した場合(S92;no及びS94;no)、又は後尾ID及び第2中間IDに基づく読出しデータのいずれのエラーの訂正にも失敗した場合(S96;no及びS98;no)、メモリコントローラ30は、Vthトラッキング処理を実行する(S99)。
メモリコントローラ30は、読出し対象の領域に対して、S99のVthトラッキング処理によって推定された読出し電圧を用いたリード処理を不揮発性メモリ10に実行させる(S100)。
メモリコントローラ30のECC回路34は、S100のリード処理によって不揮発性メモリ10から受信したデータに関するエラー検出処理及びエラー訂正処理を実行する。そして、ECC回路34は、エラー検出処理及びエラー訂正処理によって、データに含まれるエラーの訂正が成功したか否かを判定する(S101)。
エラーの訂正に失敗した場合(S101;no)、メモリコントローラ30は、読出し対象の領域から読み出されるデータに含まれるエラーの訂正が不可であると判定する(S102)。
エラーの訂正に成功した場合(S101;yes)、又はS102の処理の後、第2リトライ処理は終了となる(終了)。
2.4.2 具体例
次に、第2リトライ処理の具体例について説明する。
次に、第2リトライ処理の具体例について説明する。
以下では、説明の便宜上、ワード線WLα及びストリングユニットSUβの組に対応するセルユニットCUを、CU(WLα,SUβ)と記載する。
以下に説明する第2リトライ処理では、ブロックBLK0内の領域が読出し対象領域となる場合を想定する。そして、ブロックBLK0におけるアンカー領域が、セルユニットCU(WL4,SU2)である場合を想定する。また、ブロックBLK0に対してライト処理が実行される順番は、セルユニットCU(WL0,SU0)、CU(WL0,SU1)、CU(WL0,SU2)、CU(WL0,SU3)、CU(WL1,SU0)、CU(WL1,SU1)、CU(WL1,SU2)、…のような順番である場合を想定する。この場合、ブロックBLK0における先頭領域は、セルユニットCU(WL0,SU0)である。また、ブロックBLK0における後尾領域は、セルユニットCU(WL7,SU3)である。
また、ブロックBLK0のアンカーID、先頭ID、及び後尾IDは、図11に示したブロック管理情報21Aの通り(つまり、アンカーID=9、先頭ID=3、及び後尾ID=8)であるものとする。
(第1例)
図18は、第2実施形態に係るメモリシステムにおける第2リトライ処理の第1例での読出し対象領域と、アンカー領域、先頭領域、及び後尾領域との関係を示す図である。図19は、第2実施形態に係るメモリシステムにおける第2リトライ処理の第1例で使用される中間IDと、アンカーID、先頭ID、及び後尾IDとの関係を示す図である。第1例は、読出し対象領域がセルユニットCU(WL2,SU1)である場合に対応する。
図18は、第2実施形態に係るメモリシステムにおける第2リトライ処理の第1例での読出し対象領域と、アンカー領域、先頭領域、及び後尾領域との関係を示す図である。図19は、第2実施形態に係るメモリシステムにおける第2リトライ処理の第1例で使用される中間IDと、アンカーID、先頭ID、及び後尾IDとの関係を示す図である。第1例は、読出し対象領域がセルユニットCU(WL2,SU1)である場合に対応する。
図18に示すように、読出し対象領域に対応するセルユニットCU(WL2,SU1)の書込み順番は、先頭領域に対応するセルユニットCU(WL0,SU0)と、アンカー領域に対応するセルユニットCU(WL4,SU2)との間である。これにより、読出し対象領域は、アンカー領域よりも先に書き込まれる。このため、メモリコントローラ30は、図17に示した第2リトライ処理において、S91~S94の処理を実行する。すなわち、先頭IDに基づいて読み出されたデータの訂正に失敗すると、メモリコントローラ30は、第1中間IDに基づくリード処理を不揮発性メモリ10に実行させる。
図19に示すように、メモリコントローラ30は、二分木における各種判定処理において、アンカーIDに達するフローと先頭IDに達するフローとの間に位置するフローによって到達する終端ノードに対応する圧縮値を、第1中間IDとする。具体的には、アンカーIDに対応する終端ノードT9は、ノードN1、N5、N6、及びN8を経由する。先頭IDに対応する終端ノードT3は、ノードN1、及びN5を経由する。このため、メモリコントローラ30は、第1中間IDに対応する終端ノードとして、終端ノードT9及びT3の間に位置するT6を選択する。
以上のように第1中間IDを選択することによって、アンカー領域からのリード処理に適したシフト量の特徴と、先頭領域からのリード処理に適したシフト量の特徴との中間の特徴を有するシフト量を選択することができる。
2.4.3 第2例
図20は、第2実施形態に係るメモリシステムにおける第2リトライ処理の第2例での読出し対象領域と、アンカー領域、先頭領域、及び後尾領域との関係を示す図である。図21は、第2実施形態に係るメモリシステムにおける第2リトライ処理の第2例で使用される中間IDと、アンカーID、先頭ID、及び後尾IDとの関係を示す図である。第2例は、読出し対象領域がセルユニットCU(WL6,SU1)である場合に対応する。
図20は、第2実施形態に係るメモリシステムにおける第2リトライ処理の第2例での読出し対象領域と、アンカー領域、先頭領域、及び後尾領域との関係を示す図である。図21は、第2実施形態に係るメモリシステムにおける第2リトライ処理の第2例で使用される中間IDと、アンカーID、先頭ID、及び後尾IDとの関係を示す図である。第2例は、読出し対象領域がセルユニットCU(WL6,SU1)である場合に対応する。
図20に示すように、読出し対象領域に対応するセルユニットCU(WL6,SU1)の書込み順番は、アンカー領域に対応するセルユニットCU(WL4,SU2)と、後尾領域に対応するセルユニットCU(WL7,SU3)との間である。これにより、読出し対象領域は、アンカー領域よりも後に書き込まれる。このため、メモリコントローラ30は、図17に示した第2リトライ処理において、S95~S98の処理を実行する。すなわち、後尾IDに基づいて読み出されたデータの訂正に失敗すると、メモリコントローラ30は、第2中間IDに基づくリード処理を不揮発性メモリ10に実行させる。
図21に示すように、メモリコントローラ30は、二分木における各種判定処理において、アンカーIDに達するフローと後尾IDに達するフローとの間に位置するフローによって到達する終端ノードに対応する圧縮値を、第2中間IDとする。具体的には、アンカーIDに対応する終端ノードT9は、ノードN1、N5、N6、及びN8を経由する。後尾IDに対応する終端ノードT8は、ノードN1、N5、N6、及びN7を経由する。このため、メモリコントローラ30は、第2中間IDに対応する終端ノードとして、終端ノードT9及びT8の間に位置するT5を選択する。
以上のように第2中間IDを選択することによって、アンカー領域からのリード処理に適したシフト量の特徴と、後尾領域からのリード処理に適したシフト量の特徴との中間の特徴を有するシフト量を選択することができる。
2.5 第2実施形態に係る効果
第2実施形態によれば、メモリコントローラ30は、時間差フラグに“true”が設定される場合、先頭領域から読み出されたデータに基づく補正量算出処理を実行し、先頭IDを導出する。そして、ホストリード処理において、アンカーIDに基づく読出しデータの訂正に失敗し、かつ読出し対象領域の書き込み順番がアンカー領域と先頭領域との間にある場合、先頭IDに基づくリード処理を実行する。これにより、ホストリード処理に適用されるシフト量の傾向を、先頭領域のシフト量の傾向に近づけることができる。このため、読出し対象領域にデータが書き込まれた時間がアンカー領域よりも先頭領域の方に近い場合に、読出し対象領域から読み出されるデータに含まれるフェイルビット数を低減させることができる。
第2実施形態によれば、メモリコントローラ30は、時間差フラグに“true”が設定される場合、先頭領域から読み出されたデータに基づく補正量算出処理を実行し、先頭IDを導出する。そして、ホストリード処理において、アンカーIDに基づく読出しデータの訂正に失敗し、かつ読出し対象領域の書き込み順番がアンカー領域と先頭領域との間にある場合、先頭IDに基づくリード処理を実行する。これにより、ホストリード処理に適用されるシフト量の傾向を、先頭領域のシフト量の傾向に近づけることができる。このため、読出し対象領域にデータが書き込まれた時間がアンカー領域よりも先頭領域の方に近い場合に、読出し対象領域から読み出されるデータに含まれるフェイルビット数を低減させることができる。
また、先頭IDに基づく読出しデータの訂正に失敗した場合、メモリコントローラ30は、先頭ID及びアンカーIDの中間の特徴を有する第1中間IDを導出する。これにより、ホストリード処理に適用されるシフト量の傾向を、先頭領域のシフト量とアンカー領域のシフト量との中間の傾向に近づけることができる。このため、読出し対象領域にデータが書き込まれた時間がアンカー領域にデータが書き込まれた時間と先頭領域にデータが書き込まれた時間との中間に近い場合に、読出し対象領域から読み出されるデータに含まれるフェイルビット数を低減させることができる。
また、ホストリード処理において、アンカーIDに基づく読出しデータの訂正に失敗し、かつ読出し対象領域の書き込み順番がアンカー領域と後尾領域との間にある場合、後尾IDに基づくリード処理を実行する。これにより、ホストリード処理に適用されるシフト量の傾向を、後尾領域のシフト量の傾向に近づけることができる。このため、読出し対象領域にデータが書き込まれた時間がアンカー領域よりも後尾領域の方に近い場合に、読出し対象領域から読み出されるデータに含まれるフェイルビット数を低減させることができる。
また、後尾IDに基づく読出しデータの訂正に失敗した場合、メモリコントローラ30は、後尾ID及びアンカーIDの中間の特徴を有する第2中間IDを導出する。これにより、ホストリード処理に適用されるシフト量の傾向を、後尾領域のシフト量とアンカー領域のシフト量との中間の傾向に近づけることができる。このため、読出し対象領域にデータが書き込まれた時間がアンカー領域にデータが書き込まれた時間と後尾領域にデータが書き込まれた時間との中間に近い場合に、読出し対象領域から読み出されるデータに含まれるフェイルビット数を低減させることができる。
3. その他
上述の第1実施形態及び第2実施形態は、上述の例に限られず、種々の変形が適用可能である。
上述の第1実施形態及び第2実施形態は、上述の例に限られず、種々の変形が適用可能である。
例えば、上述した第1実施形態及び第2実施形態では、1つのブロックBLKについて1つのアンカー領域及び1つのアンカーIDの組が割り当てられる場合について説明したが、これに限られない。例えば、アンカー領域及びアンカーIDの組は、1つのブロックBLKについて複数組が割り当てられてもよい。
また、上述の第1実施形態及び第2実施形態では、1つのメモリセルトランジスタMTに3ビットのデータを記憶可能な場合について説明したが、これに限られず、2ビット、4ビット、又は5ビット以上のデータを記憶可能な場合についても、同様に適用可能である。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
1…情報処理システム
2…ホスト機器
3…メモリシステム
10…不揮発性メモリ
20…揮発性メモリ
21,21A…ブロック管理情報
22…シフト量情報
30…メモリコントローラ
31…制御回路
32…バッファメモリ
33…ホストインタフェース回路
34…ECC回路
35…不揮発性メモリインタフェース回路
36…揮発性メモリインタフェース回路
2…ホスト機器
3…メモリシステム
10…不揮発性メモリ
20…揮発性メモリ
21,21A…ブロック管理情報
22…シフト量情報
30…メモリコントローラ
31…制御回路
32…バッファメモリ
33…ホストインタフェース回路
34…ECC回路
35…不揮発性メモリインタフェース回路
36…揮発性メモリインタフェース回路
Claims (16)
- 各々が複数のセルユニットを含む複数のブロックを含む不揮発性メモリと、ここで、前記複数のセルユニットの各々は、複数のメモリセルを含む、
メモリコントローラと、
を備え、
前記メモリコントローラは、
第1ブロック内の第1セルユニットへ第1データが書き込まれたことに応じて、前記第1ブロック内の第2セルユニットから第2データを読み出し、
前記第2データが条件を満たす場合、前記第1ブロックに対するリフレッシュ処理を予約する
ように構成された、メモリシステム。 - 前記複数のメモリセルの各々は、複数のビットデータを記憶するように構成され、
前記第2セルユニットは、前記複数のメモリセルの各々に記憶されるビットデータ数に対応する複数のデータ領域を有し、
前記メモリコントローラは、前記第1セルユニットへ前記第1データが書き込まれたことに応じて、前記第2セルユニットの前記複数のデータ領域のうちの少なくとも1つのデータ領域から前記第2データを読み出すように構成された、
請求項1記載のメモリシステム。 - 前記メモリコントローラは、前記第1セルユニットへ前記第1データが書き込まれたことに応じて、前記第2セルユニットの前記複数のデータ領域のうちの全てのデータ領域から前記第2データを読み出すように構成された、
請求項2記載のメモリシステム。 - 前記第2セルユニットは、前記第1ブロック内で最初にデータが書き込まれるセルユニットである、
請求項1記載のメモリシステム。 - 前記第1セルユニットは、前記第1ブロック内で最後にデータが書き込まれるセルユニットである、
請求項1記載のメモリシステム。 - 前記メモリコントローラは、前記第1ブロックに対する前記リフレッシュ処理において、前記第1ブロックに書き込まれたデータを第2ブロックに書き込むように構成された、
請求項1記載のメモリシステム。 - 前記メモリコントローラは、前記第1ブロックに対する前記リフレッシュ処理において、前記第1ブロックに書き込まれたデータの一部を前記第1ブロックに上書きするように構成された、
請求項1記載のメモリシステム。 - 前記条件は、前記第2データに含まれるフェイルビット数が閾値以上であることを含む、
請求項1記載のメモリシステム。 - 前記メモリコントローラは、
前記第1ブロック内の第3セルユニットから読み出した第3データに基づいて、前記第3セルユニットに適用される読出し電圧に関する第1シフト量を算出し、
前記第1ブロック内の第4セルユニットからのリード処理において、
前記第1シフト量に基づいて、前記第4セルユニットに適用される読出し電圧に関する第2シフト量を算出し、
前記第2シフト量に基づいて、前記第4セルユニットから第4データを読み出す
ように構成された、
請求項1記載のメモリシステム。 - 前記メモリコントローラは、前記第2データが条件を満たす場合、
前記第2データに基づいて、前記第2セルユニットに適用される読出し電圧に関する第3シフト量を算出し、
前記第4セルユニットからのリード処理において、前記第4データに含まれるフェイルビットの訂正に失敗した場合、
前記第3シフト量に基づいて、前記第4セルユニットに適用される読出し電圧に関する第4シフト量を算出し、
前記第4シフト量に基づいて、前記第4セルユニットから第5データを読み出す
ように構成された、請求項9記載のメモリシステム。 - 前記メモリコントローラは、前記第4セルユニットからのリード処理において、前記第5データに含まれるフェイルビットの訂正に失敗した場合、
前記第1シフト量及び前記第3シフト量に基づいて、前記第4セルユニットに適用される読出し電圧に関する第5シフト量を算出し、
前記第5シフト量に基づいて、前記第4セルユニットから第6データを読み出す
ように構成された、請求項10記載のメモリシステム。 - 前記メモリコントローラは、前記第4セルユニットの前記第1ブロックにおける書込み順番が前記第2セルユニットと前記第3セルユニットとの間にある場合、前記第4シフト量を算出し、前記第5データを読み出すように構成された、
請求項10記載のメモリシステム。 - 前記メモリコントローラは、前記第2データが条件を満たす場合、
前記第1シフト量に基づいて、前記第1セルユニットから第6データを読み出し、
前記第6データに基づいて、前記第1セルユニットに適用される読出し電圧に関する第6シフト量を算出し、
前記第4セルユニットからのリード処理において、前記第4データに含まれるフェイルビットの訂正に失敗した場合、
前記第6シフト量に基づいて、前記第4セルユニットに適用される読出し電圧に関する第7シフト量を算出し、
前記第7シフト量に基づいて、前記第4セルユニットから第7データを読み出す
ように構成された、請求項9記載のメモリシステム。 - 前記メモリコントローラは、前記第4セルユニットからのリード処理において、前記第7データに含まれるフェイルビットの訂正に失敗した場合、
前記第1シフト量及び前記第6シフト量に基づいて、前記第4セルユニットに適用される読出し電圧に関する第8シフト量を算出し、
前記第8シフト量に基づいて、前記第4セルユニットから第8データを読み出す
ように構成された、請求項13記載のメモリシステム。 - 前記メモリコントローラは、前記第4セルユニットの前記第1ブロックにおける書込み順番が前記第1セルユニットと前記第3セルユニットとの間にある場合、前記第7シフト量を算出し、前記第7データを読み出すように構成された、
請求項13記載のメモリシステム。 - 前記複数のブロックの各々は、データの消去単位である、
請求項1記載のメモリシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022023110A JP2023119953A (ja) | 2022-02-17 | 2022-02-17 | メモリシステム |
US17/942,541 US12001687B2 (en) | 2022-02-17 | 2022-09-12 | Memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022023110A JP2023119953A (ja) | 2022-02-17 | 2022-02-17 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023119953A true JP2023119953A (ja) | 2023-08-29 |
Family
ID=87558515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022023110A Pending JP2023119953A (ja) | 2022-02-17 | 2022-02-17 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US12001687B2 (ja) |
JP (1) | JP2023119953A (ja) |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010218637A (ja) * | 2009-03-17 | 2010-09-30 | Toshiba Corp | 半導体記憶装置およびその制御方法 |
US9627085B2 (en) | 2012-11-29 | 2017-04-18 | Silicon Motion Inc. | Refresh method for flash memory and related memory controller thereof |
US9858002B1 (en) | 2016-05-13 | 2018-01-02 | Seagate Technology Llc | Open block stability scanning |
JP6674361B2 (ja) * | 2016-09-29 | 2020-04-01 | キオクシア株式会社 | メモリシステム |
JP2018160065A (ja) * | 2017-03-22 | 2018-10-11 | 東芝メモリ株式会社 | メモリシステム |
JP2019164865A (ja) * | 2018-03-20 | 2019-09-26 | 東芝メモリ株式会社 | メモリシステム |
KR102567111B1 (ko) | 2018-08-02 | 2023-08-14 | 삼성전자주식회사 | 스토리지 디바이스 및 스토리지 디바이스의 동작 방법 |
JP2020038738A (ja) * | 2018-09-03 | 2020-03-12 | キオクシア株式会社 | 不揮発性メモリ及びメモリシステム |
JP2020155174A (ja) * | 2019-03-19 | 2020-09-24 | キオクシア株式会社 | メモリシステム |
JP7471883B2 (ja) * | 2020-03-19 | 2024-04-22 | キオクシア株式会社 | メモリシステム |
JP2022051363A (ja) * | 2020-09-18 | 2022-03-31 | キオクシア株式会社 | メモリシステム |
US11404127B1 (en) * | 2021-02-11 | 2022-08-02 | Sandisk Technologies Llc | Read refresh to improve power on data retention for a non-volatile memory |
-
2022
- 2022-02-17 JP JP2022023110A patent/JP2023119953A/ja active Pending
- 2022-09-12 US US17/942,541 patent/US12001687B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230259287A1 (en) | 2023-08-17 |
US12001687B2 (en) | 2024-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8069300B2 (en) | Solid state storage device controller with expansion mode | |
US9514830B2 (en) | Non-volatile memory device, memory system including the same, and method of operating the same | |
TWI759686B (zh) | 記憶體系統及用於控制該記憶體系統的方法 | |
US20130124944A1 (en) | Memory controller for nonvolatile memory device, memory system comprising memory controller, and related methods of operation | |
US10957406B2 (en) | Memory system that determines a type of stress of a memory device | |
US10803954B2 (en) | Memory system | |
JP7512136B2 (ja) | メモリシステム及び情報処理システム | |
US10936421B2 (en) | Memory system having storage device and memory controller and operating method thereof | |
JP2022051363A (ja) | メモリシステム | |
US11210209B2 (en) | Method for managing flash memory module and associated flash memory controller and electronic device | |
CN111128285B (zh) | 半导体存储装置 | |
JP2021039810A (ja) | メモリシステム | |
US11487655B2 (en) | Method for managing flash memory module and associated flash memory controller and electronic device based on timing of dummy read operations | |
US12001687B2 (en) | Memory system | |
CN115565585A (zh) | 储存装置、存储器装置及操作存储器装置的方法 | |
JP2021174564A (ja) | 半導体記憶装置 | |
US11594289B2 (en) | Semiconductor device, memory system and semiconductor memory device | |
US11810642B2 (en) | Memory device including defective column addresses stored in ascending order | |
US20240036730A1 (en) | Memory controller, memory system including the memory controller, and method of operating the same | |
EP4339954A1 (en) | Storage device including flash memory and block continuous-write operation method thereof | |
CN115831201A (zh) | 编程和验证非易失性存储器装置中的数据的设备和方法 | |
TW202205087A (zh) | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20230106 |