JP2019168937A - メモリシステム、制御方法及びコントローラ - Google Patents
メモリシステム、制御方法及びコントローラ Download PDFInfo
- Publication number
- JP2019168937A JP2019168937A JP2018056374A JP2018056374A JP2019168937A JP 2019168937 A JP2019168937 A JP 2019168937A JP 2018056374 A JP2018056374 A JP 2018056374A JP 2018056374 A JP2018056374 A JP 2018056374A JP 2019168937 A JP2019168937 A JP 2019168937A
- Authority
- JP
- Japan
- Prior art keywords
- block
- data
- sub
- written
- blocks
- 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
Images
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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- 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/1048—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 using arrangements adapted for a specific error detection or correction feature
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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
- 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/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
- 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
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/02—Arrangements for writing information into, or reading information out from, a digital store with means for avoiding parasitic signals
-
- 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/0409—Online test
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)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
【課題】 信頼性の高いメモリシステムを提供すること。
【解決手段】 実施形態によれば、メモリシステムは、複数のブロックからなり、前記複数のブロックのそれぞれは1以上のサブブロックからなり、前記1以上のサブブロックのそれぞれは複数の不揮発性メモリセルからなるメモリと、前記メモリに電気的に接続されるコントローラからなる。前記コントローラは、サブブロック毎のリード頻度を求めるカウント手段と、サブブロック毎のリード頻度が同じ又は類似するサブブロックのデータが1つのブロックに書き込まれるように、前記1以上のサブブロックに書き込まれているデータの移動を実行する制御手段と、を具備する。
【選択図】図4
【解決手段】 実施形態によれば、メモリシステムは、複数のブロックからなり、前記複数のブロックのそれぞれは1以上のサブブロックからなり、前記1以上のサブブロックのそれぞれは複数の不揮発性メモリセルからなるメモリと、前記メモリに電気的に接続されるコントローラからなる。前記コントローラは、サブブロック毎のリード頻度を求めるカウント手段と、サブブロック毎のリード頻度が同じ又は類似するサブブロックのデータが1つのブロックに書き込まれるように、前記1以上のサブブロックに書き込まれているデータの移動を実行する制御手段と、を具備する。
【選択図】図4
Description
本発明の実施形態はメモリシステム、制御方法及びコントローラに関する。
SSD(Solid State Drive)と呼ばれる、不揮発性半導体メモリを用いたメモリシステムが開発されている。
不揮発性半導体メモリを用いるメモリシステムにおいては、メモリセルサイズの微細化が望まれているが、微細化によりメモリセルが記憶しているデータの信頼性が低下することがある。
本発明の目的は信頼性の高いメモリシステム、制御方法及びコントローラを提供することである。
実施形態によれば、メモリシステムは、複数のブロックからなり、前記複数のブロックのそれぞれは1以上のサブブロックからなり、前記1以上のサブブロックのそれぞれは複数の不揮発性メモリセルからなるメモリと、前記メモリに電気的に接続されるコントローラからなる。前記コントローラは、サブブロック毎のリード頻度を求めるカウント手段と、サブブロック毎のリード頻度が同じ又は類似するサブブロックのデータが1つのブロックに書き込まれるように、前記1以上のサブブロックに書き込まれているデータの移動を実行する制御手段と、を具備する。
以下、実施の形態について図面を参照して説明する。なお、開示はあくまで一例にすぎず、以下の実施形態に記載した内容により発明が限定されるものではない。当業者が容易に想到し得る変形は、当然に開示の範囲に含まれる。説明をより明確にするため、図面において、各部分のサイズ、形状等を実際の実施態様に対して変更して模式的に表す場合もある。複数の図面において、対応する要素には同じ参照数字を付して、詳細な説明を省略する場合もある。
[第1実施形態]
第1実施形態に係るメモリシステムについて説明する。第1実施形態では、不揮発性半導体メモリとしてNAND型フラッシュメモリを用いるが、他の不揮発性半導体メモリを用いてもよい。
第1実施形態に係るメモリシステムについて説明する。第1実施形態では、不揮発性半導体メモリとしてNAND型フラッシュメモリを用いるが、他の不揮発性半導体メモリを用いてもよい。
図1を参照して、実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
情報処理システム1は、ホストデバイス(以下、ホストと称する)2と、メモリシステム3とを含む。メモリシステム3は、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。メモリシステム3は、不揮発性半導体メモリ、例えばNAND型フラッシュメモリを備えたソリッドステートドライブ(SSD)として実現されている。以下、メモリシステム3をSSD3と称する。
ホスト2は、SSD3にアクセスする情報処理装置(コンピューティングデバイスとも称する)である。ホスト2は、大量且つ多様なデータをSSD3に保存するサーバ(ストレージサーバとも称する)であってもよいし、パーソナルコンピュータであってもよい。
SSD3は、ホスト2として機能する情報処理装置のメインストレージとして使用され得る。SSD3は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とSSD3とを電気的に相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)、Fibre channel、NVM Express(NVMe)(登録商標)等が使用され得る。
SSD3は、コントローラ4およびNAND型フラッシュメモリ5を備える。コントローラ4は、System−on−a−chip(SoC)のような回路によって実現され得る。SSD3は、揮発性メモリであるランダムアクセスメモリ、例えばDRAM6を備えていてもよい。DRAM6は、コントローラ4の外部に設けられていてもよい。あるいは、SRAMのようなランダムアクセスメモリがコントローラ4に内蔵されていてもよい。
DRAM6等のランダムアクセスメモリには、NAND型フラッシュメモリ5に書き込まれるデータを一時的に格納するためのバッファ領域であるライトバッファ61と、システム管理情報63の格納領域が設けられてもよい。システム管理情報63は、アドレス変換テーブル(論理アドレス/物理アドレス変換テーブルとも称する)として機能するルックアップテーブル(LUTと称する)62のキャッシュ領域と、SSD3の処理中に用いられる各種の値や各種のテーブル(例えばリード回数テーブル66等)の格納領域が設けられてもよい。
LUT62は、メモリシステムの論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間のマッピングを管理する。
リード回数テーブル66はブロック毎又はブロックより細かい単位、例えばページ毎等のメモリセルのリード回数を記憶する。リード回数はブロックからデータが消去されると、0に戻る。なお、リード回数とリード頻度は等価であるので、リード回数の代わりにリード頻度を用いてもよい。
NAND型フラッシュメモリ5は、複数のNAND型フラッシュメモリチップ(すなわち、複数のNAND型フラッシュメモリダイ)を含んでいてもよい。各チップは、メモリセル当たりに1ビット又は複数ビットを格納可能に構成されたフラッシュメモリとして実現されている。
メモリセル当たりに複数ビットを格納可能に構成されたフラッシュメモリの例には、メモリセル当たりに2ビットのデータを格納可能なマルチレベルセル(Multi-Level Cell(MLC)、あるいはFour-Level Cell(4LCと称する))フラッシュメモリ、メモリセル当たりに3ビットのデータを格納可能なトリプルレベルセル(Triple-Level Cell(TLCと称する)、あるいはEight-Level Cell(8LCと称する))フラッシュメモリ、メモリセル当たりに4ビットのデータを格納可能なクワッドレベルセル(Quad-Level Cell(QLCと称する)、あるいはSixteen-Level Cell(16LCと称する))フラッシュメモリ、等が含まれる。メモリセル当たりに1ビットを格納するように構成されたフラッシュメモリは、シングルレベルセル(Single-Level Cell(SLC又は2LCと称する))フラッシュメモリと称される。
NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。このNAND型フラッシュメモリ5は、二次元構造のNAND型フラッシュメモリであってもよいし、三次元構造のNAND型フラッシュメモリであってもよい。
NAND型フラッシュメモリ5のメモリセルアレイは、複数のブロック(BLとも称する)#0〜#(m−1)を含む。ブロック#0〜#(m−1)のそれぞれは複数のページ(ここではページ#0〜#(n−1))を含む。ブロック#0〜#(m−1)のそれぞれは、最小の消去単位として機能する。ブロックは、「消去ブロック」、または「物理ブロック」と称されることもある。ページ#0〜#(n−1)のそれぞれは、同一ワード線に接続された複数のメモリセルを含む。ページ#0〜#(n−1)は、データ書き込み動作およびデータ読み出し動作の単位である。なお、ワード線をデータ書き込み動作およびデータ読み出し動作の単位としてもよい。
ブロック#0〜#(m−1)のそれぞれに対して許容できるプログラム/消去サイクル(P/Eサイクルと称する)の最大数は限られている。あるブロックの1回のP/Eサイクルは、このブロック内の全てのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作(プログラム動作とも称する)とを含む。
NAND型フラッシュメモリ5は、メモリセル当たりに1ビットのデータが格納されるSLCモード、メモリセル当たりに2ビットのデータが格納されるMLCモード、メモリセル当たりに3ビットのデータが格納されるTLCモード、メモリセル当たりに4ビットのデータ格納されるQLCモードのいずれかで、書き込み動作を実行することができる。
NAND型フラッシュメモリ5に含まれる複数のブロックは、例えば、SLC専用ブロックグループとTLC/QLC共用ブロックグループのいずれかに属するブロックとして構成してもよい。SLC専用ブロックグループに属するブロックには、データがSLCモードで書き込まれる。TLC/QLC共用ブロックグループに属するブロックには、データがTLCモードまたはQLCモードで書き込まれる。複数のブロックのそれぞれについて、どのモードで書き込み動作が実行されるかは、固定されているのではなく、動的に変更されてもよい。例えば、あるときはSLCモードで書き込まれ、他のときは他のモード、例えばMLCモードで書き込まれてもよい。書き込みモードの変更は、SLCモードとMLCモードの間に限らず、SLCモード、MLCモード、TLCモード、QLCモードの全ての間の変更も含まれる。
NAND型フラッシュメモリ5は、メモリセル当たりに2ビットを格納可能なMLCフラッシュメモリあるいは4LCフラッシュメモリとして実現されていてもよい。
この場合、2ページ分のデータ(下位ページデータおよび上位ページデータ)が、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに2ビットを書き込むことができる。このMLCフラッシュメモリ内の任意の領域(例えば1つ以上の任意のブロック)は、メモリセル当たりに1ビットのみを格納可能な領域、すなわちSLC領域として使用することができる。
このSLC領域にデータを書き込む書き込み動作においては、1ページ分のデータ(すなわち、下位ページデータ)のみが同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、SLC領域として使用される各ブロックにおいては、SLCフラッシュメモリ内の各ブロック(すなわち、SLCブロック)と同様に、メモリセル当たりに1ビットのみを書き込むことができる。この結果、SLC領域として使用される各ブロックは、擬似的なSLCブロックとして機能する。
あるいは、NAND型フラッシュメモリ5は、メモリセル当たりに3ビットを格納可能なTLCフラッシュメモリあるいは8LCフラッシュメモリ)であってもよい。
この場合、3ページ分のデータ(すなわち、下位ページデータ、ミドルページデータ、および上位ページデータ)が、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに3ビットを書き込むことができる。このTLCフラッシュメモリ内の任意の領域(例えば1つ以上の任意のブロック)は、上述のSLC領域として使用されてもよいし、メモリセル当たりに2ビットを格納可能なMLC領域として使用されてもよい。MLC領域においては、2ページ分のデータのみが同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、MLC領域においては、メモリセル当たりに2ビットのみを書き込むことができる。なお、SLC領域/MLC領域は、ブロックよりも小さい単位(例えばワード線の単位、ブロック内の複数のワード線の集合の単位)で設定されてもよい。
あるいは、NAND型フラッシュメモリ5は、メモリセル当たりに4ビットを格納可能なQLCフラッシュメモリあるいは16LCフラッシュメモリであってもよい。
この場合、4ページ分のデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、メモリセル当たりに4ビットを書き込むことができる。このQLCフラッシュメモリ内の任意の領域(例えば1つ以上の任意のブロック)は、上述のSLC領域として使用されてもよいし、上述のMLC領域として使用されてもよいし、あるいは、メモリセル当たりに3ビットを格納可能なTLC領域として使用されてもよい。TLC領域においては、3ページ分のデータのみが、同一ワード線に接続された複数のメモリセルに書き込まれる。これにより、TLC領域においては、メモリセル当たりに3ビットを書き込むことができる。なお、SLC領域/MLC領域/TLC領域は、ブロックよりも小さい単位(例えばワード線の単位、ブロック内の複数のワード線の集合の単位)で設定されてもよい。
各書き込みモードにおけるメモリセル当たりのデータ密度は、SLCモードでは2値であり、MLCモードでは4値であり、TLCモードでは8値であり、QLCモードでは16値である。1本のワードラインに接続されるメモリセルにSLCモードで1ページのデータが格納されるとすると、MLCモードでは2ページ、TLCモードでは3ページ、QLCモードでは4ページのデータが格納可能である。NAND型フラッシュメモリ5に対するデータの読み出し速度および書き込み速度は、データ密度が高いほど遅く、データ密度が低いほど速い。したがって、これら4つのモードでは、QLCモードにおけるデータの読み出しおよび書き込みが最も遅く、SLCモードにおける読み出しおよび書き込みが最も速い。
NAND型フラッシュメモリ5の寿命(例えば許容されるP/Eサイクル数)は、常に同じデータ密度(ここでは、セル毎のビット数とする)で使い続けるとすると、データ密度が高いほど短く、データ密度が低いほど長い。なお、許容されるP/Eサイクル数はSLCモードが一番多く、MLCモード、TLCモード、QLCモードになるにつれて少なくなる。つまり、メモリセルの閾値電圧分布に着目すると、データ密度が低いほど、隣りあう状態に対応する閾値電圧分布間のマージンを広くとれ、データ密度が高いほど、閾値電圧分布間のマージンは狭くなる。マージンが広いと、たとえメモリセルに加わるストレスによってこのメモリセルセルの閾値電圧が変動しても、このメモリセルのデータが誤ったデータとして読み出されてしまう確率の上昇を抑えることを可能にする。
なお、NAND型フラッシュメモリ5は、メモリセル当たりに5ビット以上を格納可能に構成されていてもよい。この場合においても、NAND型フラッシュメモリ5内の任意の領域は、メモリセル当たりに4ビット以下のデータのみが書き込まれる領域として使用され得る。
各書き込みモードに応じたSSD3の記憶容量の例を説明する。NAND型フラッシュメモリ5に含まれる複数のNAND型フラッシュメモリチップが、メモリセル当たりに4ビットを格納可能に構成されたQLCフラッシュメモリとして実現されているとする。NAND型フラッシュメモリ5にQLCモードでデータが書き込まれる場合、SSD3の記憶容量は例えば512GBである。バッドブロック等が無い最適な条件下では、NAND型フラッシュメモリ5にTLCモードでデータが書き込まれる場合のSSD3の記憶容量は384GBであり、MLCモードでデータが書き込まれる場合のSSD3の記憶容量は256GBであり、SLCモードでデータが書き込まれる場合のSSD3の記憶容量は128GBである。このように、データがいずれの書き込みモードで書き込まれるかによって、NAND型フラッシュメモリ5の記憶容量、ひいてはSSD3の記憶容量は異なる。
コントローラ4は、Toggle DDR、Open NAND Flash Interface(ONFI)のようなNANDインタフェース13を介して、NAND型フラッシュメモリ5に電気的に接続されている。NANDインタフェース13は、NAND型フラッシュメモリ5を制御するように構成されたNAND制御回路として機能する。NANDインタフェース13は、複数のチャンネルを介して、NAND型フラッシュメモリ5内の複数のチップにそれぞれ電気的に接続されていてもよい。
コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして機能する。
コントローラ4は、NAND型フラッシュメモリ5のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能してもよい。このFTLによって実行されるデータ管理には、(1)メモリシステムの論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)ワード線単位のリード/ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。論理アドレスは、SSD3をアドレス指定するためにホスト2によって使用されるアドレスである。この論理アドレスとしては論理ブロックアドレス(LBA)を使用してもよい。
論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブルとして機能するルックアップテーブル62を用いて実行される。コントローラ4は、ルックアップテーブル62を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを所定の管理サイズ単位で管理する。ある論理アドレスに対応する物理アドレスは、この論理アドレスのデータがライトされたNAND型フラッシュメモリ5内の物理記憶位置を示す。ルックアップテーブル62は、SSD3の電源オン時にNAND型フラッシュメモリ5からDRAM6にロードされてもよい。
1つのワード線へのデータ書き込みは、1回のP/Eサイクル当たり1回のみ可能である。このため、コントローラ4は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ4は、ルックアップテーブル62を更新して、この論理アドレスをこの別の物理記憶位置に関連付けると共に、以前のデータを無効化する。以下では、ルックアップテーブル62から参照されているデータ(すなわち論理アドレスと紐付けられているデータ)を有効データと称する。また、どの論理アドレスとも紐付けられていないデータを無効データと称する。有効データは、後にホスト2からリードされる可能性があるデータである。無効データは、もはやホスト2からリードされる可能性が無いデータである。
ブロック管理には、バッドブロックの管理、ウェアレベリング、ガベージコレクション、等が含まれる。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14等を含んでもよい。これらホストインタフェース11、CPU12、NANDインタフェース13、DRAMインタフェース14は、バス10を介して相互接続されていてもよい。
ホストインタフェース11は、ホスト2から様々なコマンド、例えばI/Oコマンド、各種制御コマンド、等を受信する回路として機能する。I/Oコマンドには、ライトコマンド、リードコマンド等が含まれ得る。
DRAMインタフェース14は、DRAM6の電気的なアクセスを制御するように構成されたDRAMコントローラとして機能する。DRAM6の記憶領域は、ライトバッファ61、ルックアップテーブル62、システム管理情報63等を格納するために利用される。
CPU12は、ホストインタフェース11、NANDインタフェース13、およびDRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、図示しないROM等に格納されている制御プログラム(ファームウェア)を実行することによって様々な処理を行う。このCPU12は、上述のFTL処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12の動作は、CPU12によって実行される上述のファームウェアによって制御される。なお、FTL処理およびコマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行してもよい。
CPU12は、モード切替部121、リード制御部122、ライト制御部123、ガベージコレクション(GC)制御部(GC制御部と称する)124、リフレッシュ制御部125として機能することができる。なお、モード切替部121、リード制御部122、ライト制御部123、GC制御部124、リフレッシュ制御部125の一部または全部も、コントローラ4内の専用ハードウェアによって実現してもよい。
モード切替部121は、ホスト2から受信されるデータ(書き込みデータ)をNAND型フラッシュメモリ5に書き込むための書き込みモードを、リード回数テーブル66が記憶するリード回数に応じて制御することができる。この書き込みモードの制御は、ガベージコレクション動作によりNAND型フラッシュメモリ5にデータを書き込む際にも実行される。書き込み方法は、リードディスターブストレスの影響を低減できる第1方法と、それ以外の第2方法を含む。第1方法、第2方法の詳細は後述する。
ライト制御部123は、書き込みデータを誤り訂正符号化し、符号化データをNAND型フラッシュメモリ5に書き込む。
リード制御部122は、NAND型フラッシュメモリ5から読み出したデータに誤り訂正復号し、読み出したデータの誤りを訂正できる。
誤り訂正符号化及び誤り訂正復号はコントローラ4内の専用ハードウェアによって実現してもよい。
GC制御部124は適宜なタイミングでガベージコレクション(コンパクションとも称する)を実行する。
リフレッシュ制御部125は、NAND型フラッシュメモリ5の各ブロック#0〜#m−1のリフレッシュ動作を、リード回数テーブル66が記憶する回数に応じて制御することができる。リフレッシュ動作の詳細は後述する。
[リードディスターブストレス]
NAND型フラッシュメモリ5のメモリセルが記憶しているデータの信頼性がメモリセルサイズの微細化により低下することを説明する。微細化により、1つのメモリセルに記憶される電子の数が減少すると、隣接メモリセル間の干渉ノイズの影響が相対的に増大する。そのため、一つのメモリセルからデータを読み出す際にその周辺のメモリセルにストレスがかかり、記録したデータが失われていく可能性がある。データリードはワード線とビット線により選択されたメモリセルに対して行われるが、選択されたメモリセルだけではなく非選択のメモリセルの一部(選択セルの周辺のメモリセル)にも閾値を超える電圧が印加される。そのため、選択セルの周辺のメモリセルでも弱い書き込み状態となり、浮遊ゲート内の電子の数が増加し、閾値電圧が高くなるように変化するリードディスターブという現象が生じる。特定のメモリセルに対するデータリードが繰り返されると、周辺のメモリセルがリードディスターブストレスを受け、その閾値電圧が変化し、周辺のメモリセルからデータを正常に読み出せなくなる。リードディスターブ現象により、フラッシュメモリのビットエラー率(BERと称する)が増加するので、メモリシステムの信頼性が低下する。
NAND型フラッシュメモリ5のメモリセルが記憶しているデータの信頼性がメモリセルサイズの微細化により低下することを説明する。微細化により、1つのメモリセルに記憶される電子の数が減少すると、隣接メモリセル間の干渉ノイズの影響が相対的に増大する。そのため、一つのメモリセルからデータを読み出す際にその周辺のメモリセルにストレスがかかり、記録したデータが失われていく可能性がある。データリードはワード線とビット線により選択されたメモリセルに対して行われるが、選択されたメモリセルだけではなく非選択のメモリセルの一部(選択セルの周辺のメモリセル)にも閾値を超える電圧が印加される。そのため、選択セルの周辺のメモリセルでも弱い書き込み状態となり、浮遊ゲート内の電子の数が増加し、閾値電圧が高くなるように変化するリードディスターブという現象が生じる。特定のメモリセルに対するデータリードが繰り返されると、周辺のメモリセルがリードディスターブストレスを受け、その閾値電圧が変化し、周辺のメモリセルからデータを正常に読み出せなくなる。リードディスターブ現象により、フラッシュメモリのビットエラー率(BERと称する)が増加するので、メモリシステムの信頼性が低下する。
リード対象のワード線に接続されるメモリセルはリードディスターブストレスを殆ど受けず、リード対象のワード線に隣接する2本のワード線に接続されるメモリセルがリードディスターブストレスを最も多く受けることがある。これらの3本以外のワード線は一様にリードディスターブストレスを受ける。なお、リードディスターブストレスは1つのブロック内に限定され、他のブロックのメモリセルには及ばない。このように、リードディスターブストレスの影響は、リード対象のワード線に接続されているメモリセルと、リード対象のワード線に隣接する2本のワード線に接続されているメモリセルと、これら以外のワード線に接続されているメモリセルとで異なる場合、何らかの対策が必要である。
例えば、n番目のワード線に接続されるメモリセルについてのみリードが10k回行われた(他のワード線に接続されるメモリセルについてのリードは行われなかった)とする。kは1000を示す。あるブロック内のあるメモリセルについてのリードによりそのブロック内の全てのメモリセルがリードディスターブストレスを受ける。しかし、n番目のワード線に接続されるメモリセルは、リードディスターブストレスを最も弱く受ける。(n−1)番目、(n+1)番目のワード線に接続されるメモリセルは、リードディスターブストレスを最も強く受ける。この結果、リード対象のn番目のワード線に接続されるメモリセルのBERが最も低く、リード対象のn番目のワード線に隣接する(n−1)番目、(n+1)番目の2本のワード線に接続されるメモリセルのBERが最も高く、これら以外のワード線に接続されるメモリセルのBERはリード対象のワード線に接続されるメモリセルのBERよりやや高くなる。
[第1のリードディスターブストレス対策]
このようにリードディスターブストレスはリード回数に応じているので、リード回数に基づいてリードディスターブストレスの影響を判断できる。あるブロックが受けたリードディスターブストレスの影響は、当該ブロックをリフレッシュすることによりリセットすることができる。リフレッシュ制御部125によるリフレッシュ動作を説明する。
このようにリードディスターブストレスはリード回数に応じているので、リード回数に基づいてリードディスターブストレスの影響を判断できる。あるブロックが受けたリードディスターブストレスの影響は、当該ブロックをリフレッシュすることによりリセットすることができる。リフレッシュ制御部125によるリフレッシュ動作を説明する。
リフレッシュ制御部125は、リードディスターブストレスの影響を受けたブロックのデータを他のブロックにコピーした後、リードディスターブストレスの影響を受けたブロックのデータを消去する。このコピーと消去を併せて移動と称する。ただし、消去は実際に物理的に消去されることに限らず、当該ブロック内のデータが論理的に無効化されることでもよい。例えば、ユーザデータについては、アドレス変換テーブルを更新することによって、リフレッシュ対象ブロック内のデータがアドレス変換テーブルから参照されなくなった時に移動完了とみなすことができる。当該ブロック内のデータの消去(すなわち、当該ブロックに対するイレーズ処理)はその後の任意のタイミングで実施すればよい。データのコピー先の他のブロックが無い場合、リフレッシュ制御部125は、NAND型フラッシュメモリ5内のブロックの中から有効データを含まないフリーブロックを探す。もしも、フリーブロックが無い場合は、GC制御部124はガベージコレクションを実行し、フリーブロックを生成させる。フリーブロック内のデータが消去されて書き込み先ブロックとして割り当てられ、書き込み先ブロックがデータのコピー先のブロックとされる。
第1の対策では、DRAM6のシステム管理情報63内のリード回数テーブル66が利用される。リード制御部122はメモリセルのリード回数をブロック毎に集計したブロック毎のリード回数をリード回数テーブル66に記憶させる。リード回数テーブル66の一例を図2(a)に示す。
リフレッシュ制御部125の処理の一例を図2(b)に示したフローチャートを参照して説明する。リフレッシュ制御部125はリード回数テーブル66を適時参照し(ステップS102)、ステップS104でブロックのリード回数が基準回数を超えたブロックがあるか否かを判定する。リード回数の増加によりリードディスターブストレスの影響を受けた記憶データの信頼性が低下するので、基準回数は記憶データの信頼性が許容レベル以下まで低下する直前のリード回数である。このようなブロックが存在しないと判定される場合、処理はステップS102に戻る。基準回数は100k等でもよい。ブロック#1のリード回数は100kなので、ブロック#1内のいずれかのメモリセルについて次回のリードが行われると、ブロック#1のリード回数は100k+1となり、ステップS104の判定基準回数(100k)を超える。
ステップS104でブロックのリード回数が判定基準回数(100k)を超えるブロックが存在すると判定する場合、リフレッシュ制御部125はステップS106でそのようなブロックをリフレッシュする。
上述したように、いずれかのブロック、例えばブロック#1のリード回数が基準回数を超える場合、ブロック#1のデータは他のブロックに移動され、ブロック#1のデータは消去される。このように、リードディスターブストレスを受けたブロックは、リードディスターブストレスの影響により信頼性が許容レベル以下まで低下する前にリフレッシュされるので、リードディスターブストレスの影響がリセットされる。ブロック#1のデータの移動先である書き込み先ブロックはデータが消去済みのブロックであるので、リード回数は0であり、データは移動先のブロックで信頼性良く保持される。
第1の対策によれば、リフレッシュによりリードディスターブストレスの影響が取り除かれるので、記憶データの信頼性が低下することが防止される。
[第2のリードディスターブストレス対策]
第2のリードディスターブストレス対策のリフレッシュ制御部125の処理の一例を図3に示したフローチャートを参照して説明する。
第2のリードディスターブストレス対策のリフレッシュ制御部125の処理の一例を図3に示したフローチャートを参照して説明する。
図2(b)に示した第1の対策と同様に、リフレッシュ制御部125はリード回数テーブル66を適時参照し(ステップS102)、ステップS104でブロックのリード回数が基準回数を超えたブロックがあるか否かを判定する。このようなブロックが存在しないと判定される場合、処理はステップS102に戻る。
このようなブロックが存在すると判定する場合、第1の対策とは異なり、リフレッシュ制御部125はリフレッシュを直ぐには開始せず、NAND型フラッシュメモリ5の記憶データがどの程度誤っているかを示す指標、例えばビットエラー率(BER)を調べる。そのため、ステップS122で、リフレッシュ制御部125は当該ブロックの全ページをスキャンリードする。スキャンリードとは、ページ毎にデータをリードし、ページ毎の誤りビット数を求めるものである。リードの際、誤り検出と訂正が行われるので、ページ毎の誤りビット数が求められる。ページ毎の誤りビット数とBERとは関係があるので、誤りビット数を閾値と比較することにより、BERが閾値を超えたか否かが判定できる。スキャンリード中に誤りビット数が基準値を超えるページが存在することが分かると、スキャンリードは打ち切られ、リフレッシュが実行される。実際の誤りビット数のカウントは誤り訂正符号化により保護されているデータサイズになり、ページ単位のカウントに限定されない。
リフレッシュ制御部125はステップS124で、各ページの誤りビット数を基準数と比較し、誤りビット数が基準数を超えたページがあるか否かを判定する。全てのページの誤りビット数が基準数を超えないと判定される場合、処理はステップS102に戻る。ことき、当該ブロックに対してステップS104で用いられる基準回数を変更(例えば、元の基準回数よりは大きく、元の基準回数の2倍よりは小さい値に変更)してもよい。これは、そのブロックが受けたリードディスターブストレスの影響は少ないと考えられるからである。
リフレッシュ制御部125は誤りビット数が基準数を超えていることを検出すると、当該ブロックはリードディスターブストレスを受けて記憶データの信頼性が低下したと判断できるので、リフレッシュを開始する。誤りビット数が基準数を超えたページが1つでもあると判定する場合、リフレッシュ制御部125はステップS106で当該ブロックをリフレッシュする。
第1の対策では、あるブロックのリード回数が基準回数を超えると、当該ブロックがリフレッシュされるが、第2のリードディスターブストレス対策では、あるブロックのリード回数が基準回数を超えても、ブロック内の少なくとも1ページの誤りビット数が基準数を超えない場合、当該ブロックはリフレッシュされない。すなわち、第2のリードディスターブストレス対策の方がリフレッシュの実行頻度は低い。リフレッシュ又はスキャンリードの実行中はホスト2がSSD3にアクセスできないので、これらの動作はSSD3の性能(スループットやQuality of Service(QoS))を低下させる。
また、リフレッシュはデータの消去を伴うので、リフレッシュが頻繁に行われると、P/Eサイクル数が増加する。そのため、NAND型フラッシュメモリ5のP/Eサイクル数がNAND型フラッシュメモリ5で保証されているP/Eサイクルの最大数を超えてしまう恐れがある。これはメモリシステムの寿命を短くすることにつながる。
第2のリードディスターブストレス対策はリフレッシュの実行頻度が低いので、第1の対策に比べてSSD3の性能が低下せず、かつ寿命が短縮せずに、信頼性を維持することができる。
[第3のリードディスターブストレス対策]
上述したようにリードディスターブ対策としてのリフレッシュ又はリフレッシュの実施の判断のためのスキャンリードはSSD3の性能を低下させる、又はSSD3の寿命を短くすることになる。次に、リフレッシュやスキャンリードの頻度を抑える他の例を説明する。リードディスターブストレスは、特定のワード線に接続されるメモリセルについてのリードが集中的になされることが原因であり、リード回数が少ないメモリセルの周辺のメモリセルはリードディスターブストレスの影響を受けにくい。しかし、一部のメモリセルがリードディスターブストレスを受けても、第1、第2の対策では、ブロック全体がリフレッシュされる。そのため、リードが多数回行われるメモリセルが多数のブロックに分散している場合、多数のブロックがリフレッシュされる。
上述したようにリードディスターブ対策としてのリフレッシュ又はリフレッシュの実施の判断のためのスキャンリードはSSD3の性能を低下させる、又はSSD3の寿命を短くすることになる。次に、リフレッシュやスキャンリードの頻度を抑える他の例を説明する。リードディスターブストレスは、特定のワード線に接続されるメモリセルについてのリードが集中的になされることが原因であり、リード回数が少ないメモリセルの周辺のメモリセルはリードディスターブストレスの影響を受けにくい。しかし、一部のメモリセルがリードディスターブストレスを受けても、第1、第2の対策では、ブロック全体がリフレッシュされる。そのため、リードが多数回行われるメモリセルが多数のブロックに分散している場合、多数のブロックがリフレッシュされる。
第3の対策では、リード頻度が同程度のメモリセルに書かれていたデータが同じブロックに纏められるようにデータが移動される。これにより、一部のメモリセルのみがリードディスターブストレスを受けることによるブロック全体のリフレッシュが防止される。リフレッシュによる書き換え回数の増加を抑制することができ、リードディスターブストレスが起因のリフレッシュによる寿命低下を抑制することができ、信頼性の低下を抑制することができる。また、リフレッシュの頻度が低下するので、ホスト2によるSSD3へのアクセスがリフレッシュにより妨げられる頻度が低下し、性能の低下率を下げることができる。
図4は第3の対策の原理を示す図である。NAND型フラッシュメモリ5は5個のブロック#0〜#4からなり、各ブロックはそれより細かい単位、例えば5個のページ#0〜#4からなるとする。ここでは、リード回数テーブル66はメモリセルのリード回数をブロック毎、ページ毎に集計したリード回数を記憶する。
図4(a)に示すように、5個のブロック#0〜#4のそれぞれはリード回数が異なるページを含み、リード回数が多いページが5個のブロック#0〜#4に均等に分散しているとする。ブロック#0ではページ#1のリード回数が100kで、残りのページのリード回数が0kである。同様に、ブロック#1ではページ#0のリード回数が100kで、ブロック#2ではページ#3のリード回数が100kで、ブロック#3ではページ#0のリード回数が100kで、ブロック#4ではページ#4のリード回数が100kで、残りのページのリード回数が0kである。
この状況で第2のリードディスターブストレス対策が実施されるとする。図3のステップS104の基準回数は100kであるとする。図3のステップS124の誤りビット数の基準数は、1ワード線が隣接ワード線の100k回のリードによるリードディスターブストレスを受けた時の誤りビット数とする。NAND型フラッシュメモリ5がSLCフラッシュメモリの場合は、1本のワード線に接続されたメモリセルに1ページ分のデータが書き込まれ、NAND型フラッシュメモリ5がSLCフラッシュメモリ以外の場合は、1本のワード線に接続されたメモリセルに複数のページ分のデータが書き込まれる。ここでは、NAND型フラッシュメモリ5がSLCフラッシュメモリであるとする。そのため、図3のステップS124の判定基準は、ページの誤りビット数がリード回数が100k回に達した時に相当する値にまで悪化することである。
図4(a)に示すように、5個のブロックのリード回数の累計が500kに達したNAND型フラッシュメモリ5では、この後数回のリードが実行されると、5個のブロック#0〜#4のいずれかのページのリード回数が100k+1となり、ステップS104の判定がイエスとなり、ステップS122でスキャンリードが実行される。ページのリード回数が100k+1であるので、ステップS124の判定もイエスとなり、リフレッシュも実行される。数回のリードにより、5個のブロック#0〜#4全てがリフレッシュされる。すなわち、第2のリードディスターブストレス対策が実施されたNAND型フラッシュメモリ5は500k+数回のリードの間に5回リフレッシュされる。
図4(b)は、図4(a)に示す状態のNAND型フラッシュメモリ5について第3の対策を実施する場合のページ毎のリード回数を示す。図4(a)では、リード回数が100kであるページが5個あるので、リード回数の多い5個のページのデータが1つのブロックに移動され、リード回数が100kであるデータが1つのブロックに纏められる。すなわち、ブロック#0のページ#1のデータと、ブロック#1のページ#0のデータと、ブロック#2のページ#3のデータと、ブロック#3のページ#0のデータと、ブロック#4のページ#4のデータがブロック#2に移動される。これにより、ブロック#2の5個のページに記憶されているデータのリード回数は全て100kとなる。この例では、他のブロック#0、#1、#3、#4の5個のページに記憶されているデータのリード回数は全て0kとなる。
図4(b)に示すように、5個のブロックのリード回数の累計が500kに達したNAND型フラッシュメモリ5では、この後数回のリードが実行されると、ブロック#2のいずれかのページのリード回数が100k+1となり、ステップS104の判定がイエスとなり、ステップS122でスキャンリードが実行される。ページのリード回数が100k+1であるので、ステップS124の判定もイエスとなり、リフレッシュも実行される。しかし、ブロック#2以外のブロックでは数回のリードが実行されても、スキャンリードとリフレッシュが実行されない。ブロック#2以外のブロックではこの後100k回のリードが実行されると、スキャンリードとリフレッシュが実行される。すなわち、第3の対策が実施されたNAND型フラッシュメモリ5は500k+数回のリードの間にスキャンリードとリフレッシュが1回しか実行されない。
あるブロックに纏められるデータの単位はページに限らず、より大きい単位又はより小さい単位でもよい。NAND型フラッシュメモリ5がSLCフラッシュメモリ以外の場合、1本のワード線に接続されたメモリセルに複数ページ分のデータが書き込まれる。図5に示すように、1ブロックは多数のワード線(WL)#0、…を含み、1ワード線は多数のページ(Page)#0、…を含み、1ページは複数のクラスタを含む。各クラスタは1個(以下)の論理アドレス範囲に関連づけられたデータを含む。
図6は、第3の対策において、リード回数が同程度のワード線に関するデータを同一ブロックに纏める一例を示す。各ブロックは48本のワード線からなるとする。この場合は、システム管理情報63内のリード回数テーブル66の代わりにメモリセルのリード回数をブロック毎、ワード線毎に集計した図7に示すようなブロック/ワード線/リード回数テーブル66Aが用いられる。
リードディスターブストレスの影響は、リードされたワード線#nの隣接ワード線#(n−1)、#(n+1)で最も強く、ワード線#nで最も弱く、その他のワード線では一様である。ここでは、隣接ワード線によるリードディスターブを100k回受けたときに、スキャンリードが必要になるとする。たとえば、リード回数を管理する管理単位がブロック単位の場合と管理単位がワード線単位の場合とを考える。1ブロックが5ワード線からなり、アクセスパターンはブロック内の5つのワード線が20k回リードされると想定する。管理単位がブロック単位の場合、スキャンリードを開始するためのリード回数の基準回数は100k回として設定する。このとき、ブロック内のどのワード線がアクセスされてもリードカウンタが増加するため、5×20k回でリード回数は100k回となり、スキャンリードが開始される。一方、管理単位がワード線単位の場合、スキャンリードを開始するリード回数の基準回数は50k回とする。このとき、ワード線毎にリードカウンタが増加するため、ワード線毎のリード回数は20k回であり、スキャンリードは開始しない。なお、管理単位がワード線単位の場合、スキャンリードを開始するリード回数の基準回数を50k回としているのは、あるワード線#kについて、隣接するワード線#(k−1)で50k回、ひとつの隣接するワード線#(k+1)で50k回のリードが行われたときに、ワード線#kで100k回分のリードディスターブを受けることがあるからである
しかし、ワード線単位でリード回数を管理すると、カウンタのためのメモリ量が増えるので、メモリ量削減のためには、ブロック単位でリード回数を観測・管理してもよい。その場合、ブロック単位のリード回数に基づいてリード回数が多いワード線が存在しそうな疑わしいブロックを抽出する。これらの疑わしいブロックについては、ブロック内のワード線単位でリード回数を観測・管理する。さらに、ワード線単位のリード回数に基づいてリード回数が多いページが存在しそうな疑わしいワード線を抽出し、これらの疑わしいワード線については、ワード線内のページ単位でリード回数を観測・管理してもよい。さらに、ページ単位のリード回数に基づいてリード回数が多いクラスタが存在しそうな疑わしいページを抽出し、これらの疑わしいページについては、ページ内のクラスタ単位でリード回数を観測・管理してもよい。なお、1ページより細かい物理アドレス空間上の概念であるクラスタに対応する論理アドレス空間上の概念として論理アドレス(LBA)範囲がある。ページ単位のリード回数に基づいてリード回数が多いクラスタが存在しそうな疑わしいブロックを抽出し、これらの疑わしいブロックについては、当該ブロックに含まれるクラスタそれぞれに関連付けられたLBA範囲の単位でリード回数を観測・管理してもよい。なお、リード回数を観測・管理するLBA範囲は、クラスタ相当のサイズ(例えば、4KB)でなくともよい。
しかし、ワード線単位でリード回数を管理すると、カウンタのためのメモリ量が増えるので、メモリ量削減のためには、ブロック単位でリード回数を観測・管理してもよい。その場合、ブロック単位のリード回数に基づいてリード回数が多いワード線が存在しそうな疑わしいブロックを抽出する。これらの疑わしいブロックについては、ブロック内のワード線単位でリード回数を観測・管理する。さらに、ワード線単位のリード回数に基づいてリード回数が多いページが存在しそうな疑わしいワード線を抽出し、これらの疑わしいワード線については、ワード線内のページ単位でリード回数を観測・管理してもよい。さらに、ページ単位のリード回数に基づいてリード回数が多いクラスタが存在しそうな疑わしいページを抽出し、これらの疑わしいページについては、ページ内のクラスタ単位でリード回数を観測・管理してもよい。なお、1ページより細かい物理アドレス空間上の概念であるクラスタに対応する論理アドレス空間上の概念として論理アドレス(LBA)範囲がある。ページ単位のリード回数に基づいてリード回数が多いクラスタが存在しそうな疑わしいブロックを抽出し、これらの疑わしいブロックについては、当該ブロックに含まれるクラスタそれぞれに関連付けられたLBA範囲の単位でリード回数を観測・管理してもよい。なお、リード回数を観測・管理するLBA範囲は、クラスタ相当のサイズ(例えば、4KB)でなくともよい。
図8は、第3の対策において、リード回数が同程度のページに関するデータを同一ブロックに纏める一例を示す。各ブロックは564個のページからなるとする。システム管理情報63内のリード回数テーブル66の代わりにメモリセルのリード回数をブロック毎、ページ毎に集計したブロック/ページ/リード回数テーブル(図示せず)が用いられる。
図9は、第3の対策において、リード回数が同程度のクラスタに関するデータを同一ブロックに纏める一例を示す。上述したようにクラスタは1ページより細かい物理アドレス空間上の概念である。論理アドレス(LBA)範囲は論理アドレス空間上の概念である。1クラスタに対応付けられるLBA範囲があり、1LBA範囲は例えば4KBのデータを格納する。各ブロックは2256個のクラスタあるいはLBA範囲からなるとする。システム管理情報63内のリード回数テーブル66の代わりにメモリセルのリード回数をブロック毎、クラスタあるいはLBA範囲毎に集計したブロック/クラスタ/LBA範囲/リード回数テーブル(図示せず)が用いられる。
図6、図8、又は図9に示すような第3の対策を実行するリフレッシュ制御部125の処理の一例を、図10に示すフローチャートを参照して説明する。リード頻度が同程度のメモリセルに書かれていたデータを同じブロックに纏めるためのデータ移動のタイミングは任意に決められるが、ここではガベージコレクションの際にデータ移動が行われるとする。
第1、第2の対策と同様に、リフレッシュ制御部125はリード回数テーブル66を適時参照し(ステップS102)、ステップS104でブロックのリード回数が基準回数を超えたブロックがあるか否かを判定する。このようなブロックが存在しないと判定される場合、処理はステップS102に戻る。
このようなブロックが存在すると判定する場合、リフレッシュ制御部125はステップS132で当該ブロックを監視対象ブロックとする。監視対象ブロックについてのリード回数の管理単位は、非監視対象ブロックについての管理単位より小さくてもよい。例えば、非監視対象ブロックでは、リード回数テーブル66において、ブロック単位でリード回数を観測し、監視対象ブロックでは、リード回数テーブル66において、ブロック単位よりも小さい単位(例えばサブブロック単位)でリード回数を観測する。これにより、当該ブロックに含まれる全データのうち、どのサブブロックに含まれるデータのリード回数が、ほかのサブブロックに含まれるデータのリード回数よりも多いか判断する。複数のブロックが監視対象ブロックとされ得る。監視対象ブロックがフリーブロックになるとき、監視対象ブロックは非監視対象ブロックへと遷移する。GC制御部124はステップS134でガベージコレクションの開始タイミングであるか否か判定する。GC制御部124はフリーブロック数が閾値未満である場合にガベージコレクションの開始タイミングであると判別してもよい。
GC制御部124は、ガベージコレクションの開始タイミングであると判定する場合、ステップS138で、GC制御部124は、ガベージコレクションの実行中に、監視対象ブロックの中のリード頻度(リード頻度は、例えばリード回数から判断される、あるいはLBA範囲毎にホストから通知される)が同程度のワード線(又はページ又はクラスタ又はLBA範囲)のデータを1つの書き込み先ブロックに移動する。その後、リフレッシュ制御部125は、ステップS104に戻り、ブロックのリード回数の判定を再度行う。図4に示したように、リード回数が同定度のデータを同一のブロックに纏めることにより、スキャンリードとリフレッシュの実行頻度が低下する。
GC制御部124は、ステップS134でガベージコレクションの開始タイミングでないと判定する場合、リフレッシュ制御部125は、ステップS142で全ての監視対象ブロックの全ページをスキャンリードし、ページ毎の誤りビット数を調べる。リフレッシュ制御部125は、ステップS144で誤りビット数が基準数を超えたページを含むブロックがあるか否かを判定する。そのようなブロックがないと判定される場合、処理はステップS102に戻る。リフレッシュ制御部125は、そのようなブロックがあると判定し場合、ステップS106で当該ブロックをリフレッシュする。
次に、ガベージコレクション以外の時のデータ移動を説明する。データ移動のためには、ブロックがどの程度リードディスターブストレスの影響を受けているかを調べ、リードディスターブストレスの影響を受けていそうなブロックを監視対象ブロックに指定しておく必要がある。図11、図12を参照して、監視対象ブロックの指定方法の2つの例を説明する。図11、図12の処理は適宜なタイミングで繰り返し実行されている。
図11の例では、リフレッシュ制御部125は、ステップS202で、リード回数テーブル66を適時参照し、ステップS204で、非監視対象ブロックの中でリード回数が基準回数Xを超えたブロックがあるか否かを判定する。非監視対象ブロックとは監視対象ブロック以外のブロックであってデータを保持している全てのブロックである。このようなブロックが存在しないと判定される場合、処理はステップS202に戻る。基準回数Xはスキャンリードを開始する条件であり、ブロック、サブブロック(ワード線、ページ、クラスタ等)等の管理単位により異なる値を用いてもよい。例えば、管理単位がワード線の場合は基準回数Xa、管理単位がページの場合は基準回数Xbとされる。
このようなブロックが存在すると判定する場合、リフレッシュ制御部125は、ステップS206で、そのブロックの全ページをスキャンリードし、ページ毎の誤りビット数を求める。リフレッシュ制御部125は、ステップS208で、各ページの誤りビット数を基準数と比較し、誤りビット数が基準数を超えたページがあるか否かを判定する。全てのページの誤りビット数が基準数を超えないと判定される場合、リフレッシュ制御部125は、ステップS210で、当該ブロックを監視対象ブロックに指定する。この後、処理はステップS202に戻る。このとき、当該ブロックに対してステップS204で用いられる基準回数Xを変更(例えば、元のXよりは大きく、元のXの2倍よりは小さい値に変更)してもよい。
誤りビット数が基準数を超えたページがあると判定される場合、リフレッシュ制御部125は、ステップS212で、当該ブロックをリフレッシュする。すなわち、当該ブロックのデータを書き込み先ブロックに移動する。リフレッシュ制御部125は、ステップS214で、リフレッシュによる当該ブロックのデータの書き込み先ブロックを監視対象ブロックに指定する。この後、処理はステップS202に戻る。
図11に示す判断基準を満たすブロック以外に図12に示す判断基準を満たすブロックも監視対象ブロックとして指定される。図12の例では、リフレッシュ制御部125は、ステップS302で、リード回数テーブル66を参照し、ステップS304で、監視対象ブロックの中でリード回数が基準回数Yを超えたブロックがあるか否かを判定する。このようなブロックが存在しないと判定される場合、処理はステップS302に戻る。なお、非監視対象ブロックについてもブロック未満の単位でリード回数を観測する場合は、非監視対象ブロックについてもステップS304およびその後のステップの処理の対象としてもよい。
このようなブロックが存在すると判定する場合、リフレッシュ制御部125は、ステップS306で、そのブロックの全ページをスキャンリードし、ページ毎の誤りビット数を求める。リフレッシュ制御部125は、ステップS308で、各ページの誤りビット数を基準数と比較し、誤りビット数が基準数を超えたページがあるか否かを判定する。全てのページの誤りビット数が基準数を超えないと判定される場合、処理はステップS302に戻る。このとき、当該ブロックに対してステップS304で用いられる基準回数Yを変更(例えば、元のYよりは大きく、元のYの2倍よりは小さい値に変更)してもよい。
誤りビット数が基準数を超えたページがあると判定される場合、リフレッシュ制御部125は、ステップS310で、当該ブロック(リフレッシュ対象ブロック)を移動元ブロックとして選定し、移動元ブロックに含まれる各サブブロックのデータを、各サブブロックのリード頻度に応じて選択した移動先ブロックに移動させる。移動元ブロックには、リフレッシュ対象ブロックのほか、さらに、監視対象ブロックのうち、後述する条件(たとえば、リード頻度が高いページを最も多く含む)を満たすようなブロックが含まれる。リフレッシュ制御部125は、ステップS312で、リード頻度が高いサブブロックのデータの移動先ブロックを監視対象ブロックに指定する。
図13〜図18を参照してリード頻度が異なるデータをリード頻度毎に1つのブロックに纏める処理の例を説明する。図14〜図18はデータ移動の際の移動元ブロック(移動対象ブロックと称することもある)と移動先ブロックを説明するための図であり、図13はデータ移動処理を示すフローチャートである。図13ではデータ移動のタイミングは、ガベージコレクション時ではなく、スキャンリードの結果、誤りビット数が基準数を超えたページが存在するリフレッシュ対象ブロックが検出された時である。図14のブロック#0がリフレッシュ対象ブロックとして検出されたとする。ここでは、移動するデータの単位はページとする。そのため、リード回数テーブル66はブロック/ページ/リード回数テーブルとされる。データの移動先である書き込み先ブロックはリード頻度が高いページのデータの移動先ブロックと、それ以外のデータの移動先ブロックに分かれている。
図13に示すように、第1、第2の対策と同様に、リフレッシュ制御部125はリード回数テーブル66を適時参照し(ステップS102)、ステップS104でブロックのリード回数が基準回数を超えたブロックがあるか否かを判定する。このようなブロックが存在しないと判定される場合、処理はステップS102に戻る。
このようなブロックが存在すると判定する場合、リフレッシュ制御部125はステップS152でブロック/ページ/リード回数テーブルを参照して全監視対象ブロックの中の全ページのリード回数からリード頻度を調べ、リフレッシュ対象ブロックとリード頻度の高いページを多く含む監視対象ブロックを移動元ブロックとして選定する。図11、図12の処理により、図14に示すブロック#0〜#4が移動元ブロックとして選定されたとする。ステップS152の実行後、ブロックの各ページのリード頻度は図14に示すような状態になっているとする。リード頻度はいくつか、例えば高頻度とそれ以外に分類される。リード頻度が高いページの数は、ブロック#0では4、ブロック#1では2、ブロック#2では1、ブロック#3では2、ブロック#4では3である。
リフレッシュ制御部125はステップS154でリフレッシュ対象ブロック(ここでは、#0)を最初に処理する移動元ブロックとして、移動元ブロックの全ページのデータを各ページのリード頻度に応じた移動先ブロックへ移動する。図14の状態では、ブロック#0のリード頻度が高い4ページのデータがブロック#100に移動され、ブロック#0のリード頻度が低い6ページのデータがブロック#101に移動される。移動後の状態を図15に示す。
リフレッシュ制御部125はステップS156で移動元ブロックにデータが残っているか否かを判定する。図15の状態では、ブロック#1〜#4にデータが残っている。リフレッシュ制御部125は移動元ブロックにデータが残っていると判定する場合、ステップS158で移動先ブロック#100、#101、#102、#103はデータが書かれていない消去済みページを含むか否かを判定する。リフレッシュ制御部125は移動先ブロックが消去済みページを含まないと判定する場合、ステップS162を実行する。
リフレッシュ制御部125は、移動先ブロックが消去済みページを含むと判定する場合、ステップS154を再度実行し、監視対象ブロックの中から選択された移動元ブロックのデータを移動先ブロックに移動する。図15の状態では、ブロック#4が移動元ブロックとされる。移動元ブロック#4のリード頻度が高い3ページのデータがブロック#100に移動され、ブロック#4のリード頻度が低い7ページのデータがブロック#101、#102に移動される。移動後の状態を図16に示す。なお、ステップS154の実行時に必ずしも全てのページのデータを移動する必要はない。例えば、リード頻度が高くないデータは移動しなくてもよい。また、ステップS154の2回目以降の実行時にリード頻度が高くないページのデータは移動しなくてもよい。
リフレッシュ制御部125はステップS156で移動元ブロックにデータが残っているか否かを判定する。図16の状態では、ブロック#1〜#3にデータが残っており、移動先ブロックは消去済みページを含むので、リフレッシュ制御部125はステップS154を再度実行し、移動元ブロックのデータを移動先ブロックに移動する。図16の状態では、ブロック#1が移動元ブロックとされる。移動元ブロック#1のリード頻度が高い2ページのデータがブロック#100に移動され、ブロック#1のリード頻度が低い8ページのデータがブロック#102、#103に移動される。移動後の状態を図17に示す。
リフレッシュ制御部125はステップS156で移動元ブロックにデータが残っているか否かを判定する。図17の状態では、ブロック#2、#3にデータが残っており、移動先ブロックは消去済みページを含むので、リフレッシュ制御部125はステップS154を再度実行し、移動元ブロックのデータを移動先ブロックに移動する。図17の状態では、ブロック#3が移動元ブロックとされる。頻度が高いデータ用の移動先ブロック#100の残りページ数は1なので、ブロック#3のリード頻度が高い2ページのデータが高頻度用の移動先ブロック#100と低頻度用の移動先ブロック#103に移動され、ブロック#3のリード頻度が低い8ページのデータが低頻度用の移動先ブロック#103に移動される。移動後の状態を図18に示す。
図18の状態では、移動元ブロック#2にデータが残っているが、移動先ブロック(ここでは、移動先ブロックとして1ブロックが用意されていると想定する)の全ページにはデータが書かれているので、ステップS158の判定がノーとなり、リフレッシュ制御部125はステップS154を実行せず、ステップS162を実行する。すなわち、ブロック#2に関するデータ移動は終了する。
リフレッシュ制御部125はステップS162でリード回数が基準回数を超えたブロックがあるか否かを判定する。このようなブロックが存在しないと判定される場合、処理はステップS102に戻る。
このようなブロックが存在すると判定する場合、リフレッシュ制御部125はステップS164で、当該ブロックの全ページをスキャンリードする。リフレッシュ制御部125はステップS166で、各ページの誤りビット数を基準数と比較し、誤りビット数が基準数を超えたページがあるか否かを判定する。全てのページの誤りビット数が基準数を超えないと判定される場合、処理はステップS102に戻る。
誤りビット数が基準数を超えたページが1つでもあると判定する場合、リフレッシュ制御部125はステップS168で当該ブロックをリフレッシュする。
このようなデータ移動により、ステップS168のリフレッシュの実行頻度が低下し、寿命が短くなることなく、かつ性能が低下することなく、データの信頼性を保つことができる。
図14〜図18の説明では、リフレッシュ対象ブロック以外ではリード頻度が高いページが最も多いブロックを移動対象ブロックとしているが、この変形例を図19、図20を参照して説明する。図17ではブロック#2、#3のうちリード頻度が高いページが最も多いブロック#3を移動対象ブロックとしているが、高頻度用の移動先ブロック#100のページの書き込み状況を考慮して移動対象ブロックを決めてもよい。図19は図17と同じブロックの書き込み状態を示すが、高頻度用の移動先ブロック#100で消去済みページは1ページしか残っていないので、リード頻度が高いページを2ページ含むブロック#3ではなくリード頻度が高いページを1ページしか含まないブロック#2が移動対象ブロックとされる。ブロック#2のリード頻度が高い1ページのデータがブロック#100に移動される。移動後の状態を図20に示す。
以上説明したように、第3の対策によれば、ブロック内の一部のデータが集中してリードされるのではなくブロック内の全部のデータが略均等にリードされるので、リフレッシュの頻度が減少する。また、複数のブロックのリード回数が略均等に増加するのではなく一部のブロックのみのリード回数が増加するので、スキャンリードの実行頻度も減少する。
[第4のリードディスターブストレス対策]
第2、第3のリードディスターブストレス対策では、ブロックのリード回数と基準回数との比較による判定に加えて、NAND型フラッシュメモリ5の記憶データがどの程度誤っているかを示す指標と基準値との比較による判定に基づいてリフレッシュを実行するか否かが決定される。すなわち、NAND型フラッシュメモリ5の記憶データの信頼性が高ければ、リフレッシュは実行されない可能性が高い。そのため、NAND型フラッシュメモリ5にデータを書き込む際、記憶データの信頼性が高い、リードディスターブストレスの影響を低減できる書き込み方法を用いることにより、リフレッシュの実行頻度を低下させることができる。記憶データの信頼性が高い書き込み方法を全てのデータに用いても良いが、このような書き込み方法は時間が掛かる等の問題があるので、リード頻度が高いデータについて記憶データの信頼性が高い書き込み方法を用い、他のデータについては通常の書き込み方法を用いてもよい。
第2、第3のリードディスターブストレス対策では、ブロックのリード回数と基準回数との比較による判定に加えて、NAND型フラッシュメモリ5の記憶データがどの程度誤っているかを示す指標と基準値との比較による判定に基づいてリフレッシュを実行するか否かが決定される。すなわち、NAND型フラッシュメモリ5の記憶データの信頼性が高ければ、リフレッシュは実行されない可能性が高い。そのため、NAND型フラッシュメモリ5にデータを書き込む際、記憶データの信頼性が高い、リードディスターブストレスの影響を低減できる書き込み方法を用いることにより、リフレッシュの実行頻度を低下させることができる。記憶データの信頼性が高い書き込み方法を全てのデータに用いても良いが、このような書き込み方法は時間が掛かる等の問題があるので、リード頻度が高いデータについて記憶データの信頼性が高い書き込み方法を用い、他のデータについては通常の書き込み方法を用いてもよい。
記憶データの信頼性が高い書き込み方法の例を説明する。
図21は比較例としてのTLCフラッシュメモリにおけるメモリセルトランジスタの閾値電圧分布を示すグラフである。メモリセルトランジスタは閾値電圧に応じて3ビットのデータを保持出来る。3ビットで表現されるデータを、閾値電圧の低いものから順に“Er”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、“G”ステートと呼ぶ。“Er”ステート、“A”ステート、“B”ステート、“C”ステート、“D”ステート、“E”ステート、“F”ステート、“G”ステートはそれぞれ3ビットのデータ“111”,“110”,“100”,“000”,“010”,“011”,“001”,“101”に対応する。各ビットのデータが各ページに記憶される。図21(a)はリードディスターブストレスを受けていない状態の閾値電圧分布を示す。各ステートの閾値電圧分布の波形はほぼ左右対称である。なお、隣り合う2つの波形は接続している必要はなく、離れていて2つの波形の間に空白部が存在してもよい。リードディスターブストレスを受けると、メモリセルの閾値電圧は高くなるので、図21(b)に破線で示すように、閾値電圧分布の上裾部分(高い閾値電圧部分)が高電圧側に伸び、閾値電圧分布はほぼ左右対称の波形から高い電圧部分の波形が隣接する波形に重なるような左右非対称の波形に変化する。波形の変化はステート毎に異なり、中心電圧が低いステートほど大きく変化し、中心電圧が低いステートの波形は隣接するステートの波形により多く重なる。閾値分布の波形が重なる部分ではデータを正しくリードすることができず、データの信頼性が低下する。そのため、閾値電圧分布の中心電圧が低いステート程、データの信頼性が低下する。
このようにリードディスターブストレスによりデータの信頼性が低下する原因は、閾値電圧分布の波形がずれて隣接する閾値電圧分布の波形と重なるからである。そのため、図22(a)に示すように、閾値電圧分布の波形が細くなるようにデータを書き込むと、図22(b)に示すように、リードディスターブストレスを受けてメモリセルの閾値が変化し、閾値電圧分布の波形がずれても、隣接する波形と殆ど重ならず、記憶データの信頼性が低下することがない。図22(a)の破線は、図21(a)に示す通常の閾値電圧分布を示す。
NAND型フラッシュメモリセルへのデータの書き込みでは、メモリセルにプログラム電圧が印加されることで、メモリセルの閾値電圧が上昇する。目標ステート内の閾値電圧分布の下裾(最も低い閾値電圧)がプログラムベリファイ基準電圧を超えるか否かが判定される。超えない場合、プログラム電圧が少し増加される。閾値電圧分布の下裾がプログラムベリファイ基準電圧を超えるまでプログラム電圧が少しずつ増加される。
ここで、プログラム電圧の増加ステップを小さくすると、閾値電圧分布の下裾がプログラムベリファイ基準電圧を超えるまでのプログラム電圧の印加回数が増加する。このような書き込み方法によれば、書き込み時間は増えるが、閾値電圧分布の波形を細くすることができる。データの書き込みにおいては、プログラム電圧の初期値initial VPGMがメモリセルに印加され、最初にある程度大きな電荷が浮遊ゲートに与えられ、閾値電圧がある程度高い電圧まで上昇する。その後、プログラム電圧が小さい電圧delta VPGMだけ増加した状態でメモリセルに印加され、徐々に電荷が与えられ、閾値電圧が目的の電圧まで上昇される。図23は図21(a)に示す閾値電圧分布を実現する通常書き込みと、図22(a)に示す閾値電圧分布を実現する高信頼書き込みのプログラム電圧の違いを示す。高信頼書き込みにおけるプログラム電圧の初期値initial VPGM2は通常書き込みにおけるプログラム電圧の初期値initial VPGM1より低い。高信頼書き込みにおけるプログラム電圧の増加分delta VPGM2は通常書き込みにおけるプログラム電圧の増加分delta VPGM1より小さい。このようにプログラム電圧の初期値initial VPGM2、プログラム電圧の増加分delta VPGM2を通常書き込みにおけるそれらよりも小さくして少しずつ電荷を注入すると、注入回数は増える(プログラム時間は増加する)が、メモリセル間の電荷注入量のばらつきを小さく、すなわち閾値電圧分布の波形を細くすることができ、信頼性を向上することができる。なお、プログラム電圧の初期値initial VPGM2とプログラム電圧の増加分delta VPGM2の両方を通常書き込みにおけるそれらよりも小さくすることに限らず、プログラム電圧の初期値initial VPGM2、プログラム電圧の増加分delta VPGM2の一方のみを通常書き込みにおけるそれらよりも小さくしてもよい。
リード頻度が高いデータを図22(a)に示した書き込み方法により書き込み、それ以外のデータを図21に示した書き込み方法により書き込んでもよい。
図24(a)の破線は、図21(a)に示す通常の閾値電圧分布を示す。図21(b)に示すように、リードディスターブストレスを受けて閾値分布波形の上裾が変化する程度は、中心電圧が低いステートの波形ほど大きく変化し、中心電圧が低いステートの波形は隣接するステートの波形により多く重なる。そのため、中心電圧が低いステートの波形ほどずらし量を多くすると、リードディスターブストレスを受ける場合の閾値分布波形の重なり量が少なくなり、高信頼書き込みが実現される。プログラムベリファイ基準電圧をステート毎について適切な位置に設定することにより、図24(a)の実線に示すように、低電位のステート間ほどマージンが広くなるよう、隣接するステート間のプログラムベリファイ基準電圧の差が大きくなるようにデータを書き込む。例えば、図24(a)の実線に示す高信頼書き込みにおける“Er”ステートと“A”ステートの間のプログラムベリファイ基準電圧AV2と“A”ステートと“B”ステートの間のプログラムベリファイ基準電圧BV2の差は、図24(a)の破線に示す通常書き込みにおける“Er”ステートと“A”ステートの間のプログラムベリファイ基準電圧AV1と“A”ステートと“B”ステートの間のプログラムベリファイ基準電圧BV1の差より大きい。
このようなプログラムベリファイ基準電圧を用いてデータを書き込むと、図24(b)に示すように、リードディスターブストレスを受けてメモリセルの閾値が変化し、ステート毎の閾値電圧分布の波形がずれても、隣接する波形との重なりが図21(b)に比べて少なくなる。例えば、図24(b)において“Er”ステート波形と“A”ステート波形の交点は図21(b)に比べて頻度方向において下がっている。従って、図24(b)の誤りビット数は図21(b)に比べて少なくなる。なお、“E”ステート波形、“F”ステート波形、“G”ステート波形の交点に関しては、図24(b)の方が図21(b)に比べて頻度方向において上がっている。しかし、リフレッシュ開始の条件を決定するのは、誤りビット数が多いブロックであるので、全ステートの閾値分布を平均化することにより、リフレッシュ頻度を下げることができる。これにより、ステート毎の誤りビット数の偏りが緩和される。
リード頻度が高いデータを図24(a)に実線で示したプログラムベリファイ基準電圧を用いた高信頼書き込み方法により書き込み、それ以外のデータを図24(a)に破線で示したプログラムベリファイ基準電圧を用いた通常書き込み方法により書き込んでもよい。
図22と図24の書き込み方法を併用してもよい。すなわち、閾値電圧分布の波形を細くするとともに、分布自体を高電圧側にシフトするようにデータを書き込んでもよい。
図示しないが、記憶データの信頼性が高い書き込み方法の他の例は1つの不揮発性メモリセルが保持するデータのビット数を少なくすることがある。例えば、モード切替部121はNAND型フラッシュメモリ5がMLC/TLC/QLCフラッシュメモリである場合、書き込みモードをSLCモードとMLC/TLC/QLCモードとに切替えることができる。モード切替部121はNAND型フラッシュメモリ5がTLC/QLCフラッシュメモリである場合、書き込みモードをSLCモードとMLCモードとTLC/QLCモードとに切替えることができる。モード切替部121はNAND型フラッシュメモリ5がQLCフラッシュメモリである場合、書き込みモードをSLCモードとMLCモードとTLCモードとQLCモードとに切替えることができる。
リード頻度が高いデータを1つの不揮発性メモリセルが保持するデータのビット数が少ないモードにより書き込み、それ以外のデータを1つの不揮発性メモリセルが保持するデータのビット数が多いモードにより書き込んでもよい。例えば、リード頻度が高いデータをMLCモードあるいはTLCモードで書き込み、それ以外のデータをTLC/QLCモードあるいはQLCモードで書き込んでもよい。
図示しないが、記憶データの信頼性が高い書き込み方法の他の例は訂正能力が高いECC(Error Correction Code)を用いて書き込む方法である。リード制御部122とライト制御部123が備えるECCは訂正能力を可変とすることができる。リード頻度が高いデータを訂正能力の高いECCを使って書き込み、それ以外のデータを訂正能力がより低いECCを使って書き込んでもよい。
図25、図26を参照してリード頻度に応じたデータの書き込み法の選択の例を示す。図25、図26はブロックの状態遷移を表す。消去済みブロックにデータが書き込まれると、書き込み済みブロックとなる。図25では、リード頻度が高いと判断されたデータが書き込まれる消去済みブロックとそれ以外のデータが書き込まれる消去済みブロックは別々、かつ固定されている。図26では、1つの消去済みブロックをリード頻度が高いデータを書き込むための書き込み先ブロック又はそれ以外のデータを書き込むための書き込み先ブロックとして使用することが可能な例を示す。
書き込みにはホスト2からのデータを書き込むホスト書き込みと、ガベージコレクションによる書き込みがある。ホスト書き込みの場合は、ライトコマンド発行時にホストからデータとともにリード頻度に関する情報がコントローラ4に供給されてもよい。ガベージコレクション書き込みの場合は、ワード線、ページ、クラスタ、LBA範囲毎のリード回数からデータのリード頻度を求めることができる。なお、リード頻度に関する情報は、ライトコマンド発行時以外に、LBA範囲と紐付ける形でホストからコントローラ4に予め通知してもよい。このとき、ホストから通知されるLBA範囲は、クラスタ単位(4KB)のサイズでなくてもよい。
リード頻度が高いと判断されたデータは、記憶データの信頼性が高い書き込み方法により書き込まれ、それ以外のデータはその他の書き込み方法により書き込まれてもよい。リード頻度が高いと判断されたデータの書き込み方法は、1つの不揮発性メモリセルが保持するデータのビット数が少ない書き込みモード(例えばSLCモード)、誤り訂正能力の高いECCを用いる書き込み方法、図22(a)の実線に示すように、ステート毎の閾値電圧分布の波形が通常より細い書き込み方法、図24(a)の実線に示すように、ステート毎の閾値電圧分布の波形において低電位のステート間ほど通常よりマージンが広くなるよう、隣接するステート間のプログラムベリファイ基準電圧の差が大きくなるように書き込む方法の全て、あるいはいずれか1つ又は2つとしてもよく、それ以外のデータの書き込み方法は1つの不揮発性メモリセルが保持するデータのビット数が多い書き込みモード(例えばMLC/TLC/QLCモード)、誤り訂正能力の低いECCを用いる書き込み方法としてもよい。
第4の対策(誤り訂正能力の高いECCを用いる以外の対策)によれば、NAND型フラッシュメモリ5のデータのBERの悪化(誤りビット数の増加)が抑えられる、または特定ページのみBERが高くなることが防止され、その結果、スキャンリードの結果リフレッシュを行うと判断される可能性が低くなり、リフレッシュの実行頻度を低下させることができる。誤り訂正能力の高いECCを用いる場合は通常の誤り訂正能力のECCを用いる場合に比べて高いBER(多くの誤りビット数)まで訂正することができるため、通常の誤り訂正能力のECCを用いる場合に比べてスキャンリードを開始するためのリード回数の基準回数を大きく設定することができ、また、スキャンリードの結果リフレッシュが必要であると判断する基準が緩和されるため、スキャンリードの頻度やリフレッシュの頻度が低下する。すなわち、誤り訂正能力の高いECCを用いる場合は、訂正失敗確率の悪化が防止され、スキャンリードの結果リフレッシュを行うと判断される可能性が低くなり、リフレッシュの実行頻度を低下させることができる。
[第5のリードディスターブストレス対策]
第5の対策として第3、第4の対策の組み合わせを説明する。すなわち、リード頻度が同じ程度のデータを1つの書き込み先一ブロックに移動する際、リード頻度に応じて書き込み方法を選択してもよい。第4の対策を行っても、リードディスターブストレスの影響によるBERの悪化(誤りビット数の増加)は発生する。第4の対策によって、リードディスターブストレスによるBERの増加量が抑えられる、または特定ページのみBERが高くなることが防止され、その結果、リフレッシュ頻度が低下される。
第5の対策として第3、第4の対策の組み合わせを説明する。すなわち、リード頻度が同じ程度のデータを1つの書き込み先一ブロックに移動する際、リード頻度に応じて書き込み方法を選択してもよい。第4の対策を行っても、リードディスターブストレスの影響によるBERの悪化(誤りビット数の増加)は発生する。第4の対策によって、リードディスターブストレスによるBERの増加量が抑えられる、または特定ページのみBERが高くなることが防止され、その結果、リフレッシュ頻度が低下される。
図27は第5の対策の原理を示す図である。NAND型フラッシュメモリ5は5個のブロック#0〜#4からなり、各ブロックは5個のページ#0〜#4からなるとする。ここでは、リード回数テーブル66はメモリセルのリード回数をブロック毎、ページ毎に集計したリード回数を記憶する。
図27(a)に示すように、5個のブロック#0〜#4のそれぞれはリード回数が異なるページを含み、リード回数が多いページが5個のブロック#0〜#4に均等に分散しているとする。ブロック#0ではページ#1のリード回数が98kで、残りのページのリード回数は0.5k以下である。同様に、ブロック#1ではページ#0のリード回数が80kで、残りのページのリード回数は5k以下である。ブロック#2ではページ#3のリード回数が83.5kで、残りのページのリード回数は10k以下である。ブロック#3ではページ#0のリード回数が74kで、残りのページのリード回数は1k以下である。ブロック#4ではページ#4のリード回数が60kで、残りのページのリード回数は10k以下である。
図27(b)は、図27(a)に示す状態のNAND型フラッシュメモリ5について第5の対策を実施する場合のページ毎のリード回数を示す。図27(a)に示す各ブロックに含まれていたリード回数が最も多いページのデータがブロック#2に纏められ、リード回数が次に多いページのデータがブロック#4に纏められ、以下同様に、同程度のリード回数のページのデータが同じブロック#0、#1、#3に纏められる。
リード回数が最も多いページのデータがブロック#2に書き込まれる際は、データの信頼性の高い3つの書き込み方法が併用され、リード回数が次に多いページのデータがブロック#4に書き込まれる際は、データの信頼性の高い2つの書き込み方法が併用され、リード回数が3番目に多いページのデータがブロック#1に書き込まれる際は、データの信頼性の高い1つの書き込み方法が用いられてもよい。それ以外のブロックに書き込まれる際は、データの信頼性の高い書き込み方法以外の通常の書き込み方法が用いられてもよい。
図28、図27を参照してリード頻度が同じ程度のデータをリード頻度に応じた書き込み方法により1つの書き込み先ブロックに移動する第5の対策の一例を示す。図28では、リード頻度が高いと判断されたデータが書き込まれる消去済みブロックと、リード頻度が低いと判断されたデータが書き込まれる消去済みブロックと、リード頻度が中程度と判断されたデータが書き込まれる消去済みブロックは別々、かつ固定されている。図27では、1つの消去済みブロックを、リード頻度が高いと判断されたデータを書き込むための書き込み先ブロック、リード頻度が低いと判断されたデータを書き込むための書き込み先ブロック又はリード頻度が中程度と判断されたデータを書き込むための書き込み先ブロックとして使用することが可能な例を示す。
書き込みにはホスト2からのデータを書き込むホスト書き込みと、ガベージコレクションによる書き込みがある。ホスト書き込みの場合は、ライトコマンド発行時にホストからデータとともにリード頻度に関する情報がコントローラ4に供給されてもよい。ガベージコレクション書き込みの場合は、ワード線、ページ、クラスタ、LBA範囲毎のリード回数からデータのリード頻度を求めることができる。なお、リード頻度に関する情報は、ライトコマンド発行時以外に、LBA範囲と紐付ける形でホストからコントローラ4に予め通知してもよい。このとき、ホストから通知されるLBA範囲は、クラスタ単位(4KB)のサイズでなくてもよい。
リード頻度が高いと判断されたデータは、記憶データの信頼性が高い書き込み方法により書き込まれ、リード頻度が中程度と判断されたデータは、記憶データの信頼性がやや高い書き込み方法により書き込まれ、リード頻度が低いと判断されたデータは、その他の書き込み方法により書き込まれてもよい。リード頻度が高いと判断されたデータの書き込み方法は、SLC書き込みモード、誤り訂正能力の高いECCを用いる書き込み方法及び閾値電圧分布が細い書き込み方法としてもよく、リード頻度が中程度と判断されたデータの書き込み方法は、MLC書き込みモード及び誤り訂正能力の中程度のECCを用いる書き込み方法としてもよく、リード頻度が低いと判断されたデータの書き込み方法は、TLC書き込みモードとしてもよい。
第5の対策によれば、リード頻度が同じ程度のデータを1つの書き込み先ブロックに移動することにより、全部のブロックがリード回数の多いブロックとリード回数の少ないブロックに大別される。このため、リード回数の少ないブロックはスキャンリードの実行頻度が低下する。また、各ブロック内のデータが略均等にリードされるため、リフレッシュの実行頻度も低下する。
データ移動の際リード頻度が高いメモリセルのデータをデータの信頼性の高い書き込み方法を用いて書き込むことにより、スキャンリードとリフレッシュの実行開始のための判断基準を適切に設定することができ、スキャンリードとリフレッシュの実行頻度を低下することができる。そのため、スキャンリードとリフレッシュによる性能低下と、リフレッシュによる寿命の低下を防止することができる。
訂正能力の高いECCを用いると、リフレッシュ開始の条件である誤りビット数を大きい数とすることにより、リフレッシュの実行頻度を下げることができる。
本実施形態の処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
4…コントローラ、5…NAND型フラッシュメモリ、6…DRAM、66…リード回数テーブル、125…リフレッシュ制御部。
Claims (19)
- 複数のブロックからなり、前記複数のブロックのそれぞれは1以上のサブブロックからなり、前記1以上のサブブロックのそれぞれは複数の不揮発性メモリセルからなるメモリと、前記メモリに電気的に接続されるコントローラからなるメモリシステムであって、
前記コントローラは、
サブブロック毎のリード頻度を求めるカウント手段と、
サブブロック毎のリード頻度が同じ又は類似するサブブロックのデータが1つのブロックに書き込まれるように、前記1以上のサブブロックに書き込まれているデータの移動を実行する制御手段と、
を具備するメモリシステム。 - 前記カウント手段は、ブロック毎のリード頻度をさらに求め、
前記制御手段は、
前記複数のブロックの中の第1ブロックのリード頻度が第1頻度を超える場合、前記第1ブロックに含まれる1以上のサブブロック毎にサブブロックに書き込まれているデータの誤り率を検出し、
前記誤り率が第1率を超えるサブブロックが1つでも存在する場合、前記第1ブロックに含まれる1以上のサブブロックに含まれるデータに関するデータの移動を実行し、
前記誤り率が第1率を超えるサブブロックが1つも存在しない場合、前記第1ブロックに含まれる1以上のサブブロックに含まれるデータに関するデータの移動を実行しない請求項1記載のメモリシステム。 - 前記制御手段は、
前記第1ブロックに含まれる第1サブブロックのリード頻度が前記第1頻度を超える場合、前記第1サブブロックに書き込まれているデータを第2ブロックに書き込み、
前記第1ブロックに含まれる第2サブブロックのリード頻度が前記第1頻度を超えない場合、前記第2サブブロックに書き込まれているデータを第3ブロックに書き込む請求項2記載のメモリシステム。 - 前記制御手段は、
前記第1サブブロックに書き込まれているデータを前記第2ブロックに第1方式で書き込み、
前記第2サブブロックに書き込まれているデータを前記第3ブロックに第2方式で書き込み、
前記第1方式でデータが書き込まれた1つの不揮発性メモリセルが保持するデータのビット数は前記第2方式でデータが書き込まれた1つの不揮発性メモリセルが保持するデータのビット数より少ない請求項3記載のメモリシステム。 - 前記制御手段は、
前記第1サブブロックに書き込まれているデータを前記第2ブロックに第1能力を超える誤り訂正能力の誤り訂正符号化を用いて書き込み、
前記第2サブブロックに書き込まれているデータを前記第3ブロックに第1能力を超えない誤り訂正能力の誤り訂正符号化を用いて書き込む請求項3記載のメモリシステム。 - 前記制御手段は、
前記第1サブブロックに書き込まれているデータを複数の不揮発性メモリセルの閾値電圧分布が第1のばらつきを持つように前記第2ブロックに書き込み、
前記第2サブブロックに書き込まれているデータを複数の不揮発性メモリセルの閾値電圧分布が第2のばらつきを持つように前記第3ブロックに書き込み、
前記第1のばらつきは前記第2のばらつきより小さい請求項3記載のメモリシステム。 - 前記制御手段は、
前記第1サブブロックに書き込まれているデータを前記第2ブロックに第1方式で書き込み、
前記第2サブブロックに書き込まれているデータを前記第3ブロックに第2方式で書き込み、
前記第1方式で書き込まれたデータの各値に対応する不揮発性メモリセルの閾値電圧分布は前記第2方式で書き込まれたデータの各値に対応する不揮発性メモリセルの閾値電圧分布より高い電圧側である請求項3記載のメモリシステム。 - ガベージコレクションを実行するガベージコレクション手段をさらに具備し、
前記制御手段は、
前記ガベージコレクションによって前記データの移動を実行する請求項1記載のメモリシステム。 - 前記複数のサブブロックのそれぞれは、1つのワード線に接続されるメモリセル群、複数のワード線に接続されるメモリセル群、又は論理アドレス範囲で指定されるデータを格納するメモリセル群を含む請求項1記載のメモリシステム。
- 複数のブロックからなり、前記複数のブロックのそれぞれは1以上のサブブロックからなり、前記1以上のサブブロックのそれぞれは複数の不揮発性メモリセルからなるメモリと、前記メモリに電気的に接続されるコントローラからなるメモリシステムの制御方法であって、
前記コントローラはサブブロック毎のリード頻度を求め、
前記コントローラはサブブロック毎のリード頻度が同じ又は類似するサブブロックのデータが1つのブロックに書き込まれるように、前記1以上のサブブロックに書き込まれているデータの移動を実行する制御方法。 - 前記コントローラは、ブロック毎のリード頻度をさらに求め、
前記コントローラは、前記複数のブロックの中の第1ブロックのリード頻度が第1頻度を超える場合、前記第1ブロックに含まれる1以上のサブブロック毎にサブブロックに書き込まれているデータの誤り率をさらに検出し、
前記コントローラは、
前記誤り率が第1率を超えるサブブロックが1つでも存在する場合、前記第1ブロックに含まれる1以上のサブブロックに含まれるデータに関するデータの移動を実行し、
前記誤り率が第1率を超えるサブブロックが1つも存在しない場合、前記第1ブロックに含まれる1以上のサブブロックに含まれるデータに関するデータの移動を実行しない請求項10記載の制御方法。 - 前記コントローラは、
前記第1ブロックに含まれる第1サブブロックのリード頻度が前記第1頻度を超える場合、前記第1サブブロックに書き込まれているデータを第2ブロックに書き込み、
前記第1ブロックに含まれる第2サブブロックのリード頻度が前記第1頻度を超えない場合、前記第2サブブロックに書き込まれているデータを第3ブロックに書き込む請求項11記載の制御方法。 - 前記コントローラは、
前記第1サブブロックに書き込まれているデータを前記第2ブロックに第1方式で書き込み、
前記第2サブブロックに書き込まれているデータを前記第3ブロックに第2方式で書き込み、
前記第1方式でデータが書き込まれた1つの不揮発性メモリセルが保持するデータのビット数は前記第2方式でデータが書き込まれた1つの不揮発性メモリセルが保持するデータのビット数より少ない請求項12記載の制御方法。 - 前記コントローラは、
前記第1サブブロックに書き込まれているデータを前記第2ブロックに第1能力を超える誤り訂正能力の誤り訂正符号化を用いて書き込み、
前記第2サブブロックに書き込まれているデータを前記第3ブロックに第1能力を超えない誤り訂正能力の誤り訂正符号化を用いて書き込む請求項12記載の制御方法。 - 前記コントローラは、
前記第1サブブロックに書き込まれているデータを複数の不揮発性メモリセルの閾値電圧分布が第1のばらつきを持つように前記第2ブロックに書き込み、
前記第2サブブロックに書き込まれているデータを複数の不揮発性メモリセルの閾値電圧分布が第2のばらつきを持つように前記第3ブロックに書き込み、
前記第1のばらつきは前記第2のばらつきより小さい請求項12記載の制御方法。 - 前記コントローラは、
前記第1サブブロックに書き込まれているデータを前記第2ブロックに第1方式で書き込み、
前記第2サブブロックに書き込まれているデータを前記第3ブロックに第2方式で書き込み、
前記第1方式で書き込まれたデータの各値に対応する不揮発性メモリセルの閾値電圧分布は前記第2方式で書き込まれたデータの各値に対応する不揮発性メモリセルの閾値電圧分布より高い電圧側である請求項12記載の制御方法。 - 前記コントローラは、ガベージコレクションをさらに実行し、
前記コントローラは、前記ガベージコレクションによって前記データの移動を実行する請求項10記載の制御方法。 - 前記複数のサブブロックのそれぞれは、1つのワード線に接続されるメモリセル群、複数のワード線に接続されるメモリセル群、又は論理アドレス範囲で指定されるデータを格納するメモリセル群を含む請求項10記載の制御方法。
- 複数のブロックからなり、前記複数のブロックのそれぞれは1以上のサブブロックからなり、前記1以上のサブブロックのそれぞれは複数の不揮発性メモリセルからなるメモリに電気的に接続されるコントローラであって、
サブブロック毎のリード頻度を求めるカウント手段と、
サブブロック毎のリード頻度が同じ又は類似するサブブロックのデータが1つのブロックに書き込まれるように、前記1以上のサブブロックに書き込まれているデータの移動を実行する制御手段と、
を具備するコントローラ。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018056374A JP2019168937A (ja) | 2018-03-23 | 2018-03-23 | メモリシステム、制御方法及びコントローラ |
US16/212,730 US10831395B2 (en) | 2018-03-23 | 2018-12-07 | Memory system, control method, and control device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018056374A JP2019168937A (ja) | 2018-03-23 | 2018-03-23 | メモリシステム、制御方法及びコントローラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019168937A true JP2019168937A (ja) | 2019-10-03 |
Family
ID=67983615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018056374A Pending JP2019168937A (ja) | 2018-03-23 | 2018-03-23 | メモリシステム、制御方法及びコントローラ |
Country Status (2)
Country | Link |
---|---|
US (1) | US10831395B2 (ja) |
JP (1) | JP2019168937A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11966606B2 (en) | 2021-09-09 | 2024-04-23 | Kioxia Corporation | Memory system and method |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10839922B2 (en) * | 2018-05-26 | 2020-11-17 | Sandisk Technologies Llc | Memory disturb detection |
US10901622B2 (en) * | 2018-12-28 | 2021-01-26 | Micron Technology, Inc. | Adjustable NAND write performance |
KR102733890B1 (ko) * | 2019-03-25 | 2024-11-26 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
US11079952B2 (en) * | 2019-03-28 | 2021-08-03 | SK Hynix Inc. | Data storage device performing scan operations on memory regions to move data and operation method thereof |
US11347403B2 (en) * | 2019-09-04 | 2022-05-31 | Seagate Technolagy LLC | Extending the life of a solid state drive by using MLC flash blocks in SLC mode |
KR102681181B1 (ko) * | 2019-10-01 | 2024-07-04 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
CN113467706A (zh) | 2020-03-30 | 2021-10-01 | 华为技术有限公司 | 一种固态硬盘管理方法及固态硬盘 |
US11275687B2 (en) * | 2020-07-07 | 2022-03-15 | Micron Technology, Inc. | Memory cache management based on storage capacity for parallel independent threads |
US11797531B2 (en) * | 2020-08-04 | 2023-10-24 | Micron Technology, Inc. | Acceleration of data queries in memory |
CN116134519A (zh) * | 2020-08-07 | 2023-05-16 | 美光科技公司 | 存储器装置中的平衡的三层级读取干扰管理 |
KR20220049109A (ko) * | 2020-10-14 | 2022-04-21 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US11768937B1 (en) * | 2020-11-30 | 2023-09-26 | Amazon Technologies, Inc. | Hash based flexible threat scanning engine |
US20220222008A1 (en) * | 2021-01-14 | 2022-07-14 | Silicon Motion, Inc. | Method for managing flash memory module and associated flash memory controller and memory device |
KR20220103340A (ko) * | 2021-01-15 | 2022-07-22 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
KR20220113159A (ko) * | 2021-02-05 | 2022-08-12 | 에스케이하이닉스 주식회사 | 저장 장치 및 그 동작 방법 |
JP2022146531A (ja) * | 2021-03-22 | 2022-10-05 | キオクシア株式会社 | メモリシステム |
US11579797B2 (en) | 2021-04-29 | 2023-02-14 | Micron Technology, Inc. | Memory sub-system refresh |
US11922020B2 (en) * | 2022-01-20 | 2024-03-05 | Dell Products L.P. | Read-disturb-based read temperature information persistence system |
US11929135B2 (en) | 2022-01-22 | 2024-03-12 | Dell Products L.P. | Read disturb information determination system |
US11676671B1 (en) * | 2022-01-22 | 2023-06-13 | Dell Products L.P. | Amplification-based read disturb information determination system |
US12282687B2 (en) * | 2022-06-09 | 2025-04-22 | Micron Technology, Inc. | Prioritization of background media management operations in memory systems |
US12260101B2 (en) | 2022-10-21 | 2025-03-25 | Micron Technology, Inc. | Read source determination |
CN117636967B (zh) * | 2024-01-25 | 2024-04-30 | 合肥兆芯电子有限公司 | 存储器控制方法、存储器存储装置及存储器控制电路单元 |
CN119088323B (zh) * | 2024-11-05 | 2025-04-01 | 珠海妙存科技有限公司 | 闪存介质的数据稳定性增强方法及其相关设备 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5629391B2 (ja) | 1973-05-23 | 1981-07-08 | ||
JPS5349256Y2 (ja) | 1973-06-13 | 1978-11-25 | ||
JP2008287404A (ja) | 2007-05-16 | 2008-11-27 | Hitachi Ltd | 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法 |
EP2077559B1 (en) | 2007-12-27 | 2012-11-07 | Hagiwara Solutions Co., Ltd. | Refresh method of a flash memory |
JP5349256B2 (ja) | 2009-11-06 | 2013-11-20 | 株式会社東芝 | メモリシステム |
EP2659489A1 (en) | 2011-04-28 | 2013-11-06 | Hitachi, Ltd. | Semiconductor storage apparatus and method for controlling semiconductor storage apparatus |
US9141534B2 (en) | 2012-12-14 | 2015-09-22 | Sandisk Technologies Inc. | Tracking read accesses to regions of non-volatile memory |
US9760478B2 (en) * | 2014-12-02 | 2017-09-12 | Macronix International Co., Ltd. | Read leveling method and memory device using the same |
US9552885B2 (en) * | 2014-12-10 | 2017-01-24 | Sandisk Technologies Llc | Partial block erase for open block reading in non-volatile memory |
US10002073B2 (en) * | 2015-11-06 | 2018-06-19 | SK Hynix Inc. | Selective data recycling in non-volatile memory |
US10283215B2 (en) * | 2016-07-28 | 2019-05-07 | Ip Gem Group, Llc | Nonvolatile memory system with background reference positioning and local reference positioning |
KR102696971B1 (ko) * | 2016-09-06 | 2024-08-21 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치의 액세스 방법 |
US10373695B2 (en) * | 2016-12-30 | 2019-08-06 | Western Digital Technologies, Inc. | Methods and apparatus for read disturb detection and handling |
-
2018
- 2018-03-23 JP JP2018056374A patent/JP2019168937A/ja active Pending
- 2018-12-07 US US16/212,730 patent/US10831395B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11966606B2 (en) | 2021-09-09 | 2024-04-23 | Kioxia Corporation | Memory system and method |
Also Published As
Publication number | Publication date |
---|---|
US10831395B2 (en) | 2020-11-10 |
US20190294358A1 (en) | 2019-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2019168937A (ja) | メモリシステム、制御方法及びコントローラ | |
US12094545B2 (en) | Techniques for preventing read disturb in NAND memory | |
US8638602B1 (en) | Background selection of voltage reference values for performing memory read operations | |
US9715939B2 (en) | Low read data storage management | |
CN107608628B (zh) | 闪存控制器 | |
KR100912612B1 (ko) | 향상된 신뢰도 및 성능을 갖는 멀티 비트 셀 플래시 메모리관리 방법 | |
US9208871B2 (en) | Implementing enhanced data read for multi-level cell (MLC) memory using threshold voltage-drift or resistance drift tolerant moving baseline memory data encoding | |
KR101556779B1 (ko) | 저장 장치의 액세스 방법 | |
TWI566252B (zh) | 非揮發性記憶體裝置進行耗損管理之方法 | |
US9189313B2 (en) | Memory system having NAND-type flash memory and memory controller with shift read controller and threshold voltage comparison module | |
KR102546229B1 (ko) | 리드 리클레임 동작 시에 버퍼 메모리를 이용하는 스토리지 장치 | |
US20110066899A1 (en) | Nonvolatile memory system and related method of performing erase refresh operation | |
US9639463B1 (en) | Heuristic aware garbage collection scheme in storage systems | |
US20130198436A1 (en) | Implementing enhanced data partial-erase for multi-level cell (mlc) memory using threshold voltage-drift or resistance drift tolerant moving baseline memory data encoding | |
KR20170020884A (ko) | 서브-블록 가비지 컬렉션 | |
CN110827907A (zh) | 包括非易失性存储器器件的储存设备及其操作方法 | |
KR101468432B1 (ko) | 제어된 스크럽 데이터 판독에 의해 트리거되는 플래시 메모리 리프레시 기술 | |
US9235509B1 (en) | Write amplification reduction by delaying read access to data written during garbage collection | |
US9779823B2 (en) | Secure erase of non-volatile memory | |
US20130194864A1 (en) | Implementing enhanced data write for multi-level cell (mlc) memory using threshold voltage-drift or resistance drift tolerant moving baseline memory data encoding | |
Margaglia et al. | Improving MLC flash performance and endurance with extended P/E cycles | |
US20230214133A1 (en) | Selectively programming retired wordlines of a memory device | |
US8732391B2 (en) | Obsolete block management for data retention in nonvolatile memory | |
US20210034541A1 (en) | Memory system, memory control device, and memory control method | |
KR20120070408A (ko) | 블록을 관리하는 비휘발성 메모리 장치의 제어 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20180830 |