JP2021071776A - メモリシステム - Google Patents
メモリシステム Download PDFInfo
- Publication number
- JP2021071776A JP2021071776A JP2019196427A JP2019196427A JP2021071776A JP 2021071776 A JP2021071776 A JP 2021071776A JP 2019196427 A JP2019196427 A JP 2019196427A JP 2019196427 A JP2019196427 A JP 2019196427A JP 2021071776 A JP2021071776 A JP 2021071776A
- Authority
- JP
- Japan
- Prior art keywords
- unit
- data
- read
- memory system
- value
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- 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/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
- 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
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
- G11C16/3427—Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written
-
- 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/349—Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
-
- 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
- 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/5671—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 trapping in an insulator
-
- 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
Abstract
【課題】メモリデバイスの特性を向上するメモリシステムを提供する。【解決手段】メモリシステム(SYM)は、メモリセルアレイを有するメモリデバイス(フラッシュメモリ)1−1〜1−Nと、コントローラ7とを含む。メモリセルアレイは、複数の第1の単位と、前記複数の第1の単位を含む少なくとも1つの第2の単位とを含む。コントローラは、複数の第1の単位における第1の読み出し回数をそれぞれカウントし、複数の第1の単位のうちの1つの第1の単位の、第1の読み出し回数が第1の値に達している場合に、1つの第1の単位を含む第2の単位に対する第2の回数を更新する。コントローラは、第2の回数が第2の値に達している場合に、第2の単位に含まれる少なくとも1つの第1の単位に記憶されているデータを書き換えるか否か判断する。【選択図】図1
Description
実施形態は、メモリシステムに関する。
NAND型フラッシュメモリを用いたメモリシステムが、知られている。
メモリシステムの性能を向上する。
実施形態のメモリシステムは、複数の第1の単位と、前記複数の第1の単位を含む少なくとも1つの第2の単位と、を含むメモリセルアレイを有するメモリデバイスと、前記複数の第1の単位における第1の読み出し回数をそれぞれカウントし、前記複数の第1の単位のうちの1つの第1の単位の、前記第1の読み出し回数が第1の値に達している場合に、前記1つの第1の単位を含む前記第2の単位に対する第2の回数を更新し、前記第2の回数が第2の値に達している場合に、前記第2の単位に含まれる少なくとも1つの前記第1の単位に記憶されているデータを書き換えるか否か判断するコントローラと、を含む。
図1乃至図24を参照して、実施形態のメモリシステム及びその制御方法について、説明する。
以下、図面を参照しながら、各実施形態について詳細に説明する。以下の説明において、同一の機能及び構成を有する要素については、同一符号を付す。
また、以下の各実施形態において、末尾に区別化のための数字/英字を伴った参照符号を付された構成要素(例えば、ワード線WLやビット線BL、各種の電圧及び信号など)が、相互に区別されなくとも良い場合、末尾の数字/英字が省略された記載(参照符号)が用いられる。
また、以下の各実施形態において、末尾に区別化のための数字/英字を伴った参照符号を付された構成要素(例えば、ワード線WLやビット線BL、各種の電圧及び信号など)が、相互に区別されなくとも良い場合、末尾の数字/英字が省略された記載(参照符号)が用いられる。
(1)第1の実施形態
図1乃至図12を参照して、第1の実施形態のメモリシステム及びその制御方法について説明する。
図1乃至図12を参照して、第1の実施形態のメモリシステム及びその制御方法について説明する。
(a)構成例
図1乃至図6を参照して、本実施形態のメモリシステムの構成例について説明する。
図1乃至図6を参照して、本実施形態のメモリシステムの構成例について説明する。
図1は、本実施形態のメモリシステムの構成例を示すブロック図である。
本実施形態のメモリシステムSYMは、ホストデバイス9に電気的に接続される。
メモリシステムSYMは、ホストデバイス9からのコマンド(以下では、ホストコマンドとよばれる)に応じて、データの転送及びデータの記憶などを行う。
メモリシステムSYMは、ホストデバイス9からのコマンド(以下では、ホストコマンドとよばれる)に応じて、データの転送及びデータの記憶などを行う。
本実施形態のメモリシステムSYMは、1つ以上(N個、Nは1以上の自然数)のメモリデバイス1と、コントローラ7とを含む。
コントローラ7は、ホストデバイス9からのホストコマンドに応じて、メモリデバイス1に対するデータの書き込み(書き込み動作)、メモリデバイス1からのデータの読み出し(読み出し動作)、及び、メモリデバイス1内のデータの消去(消去動作)を命令する。コントローラ7は、メモリデバイス1内のデータを管理する。
コントローラ7の内部構成は、後述される。
コントローラ7の内部構成は、後述される。
メモリデバイス1は、データを記憶する。
<メモリデバイスの構成例>
図2は、本実施形態のメモリシステムにおける、メモリデバイスの構成例を示すブロック図である。
図2は、本実施形態のメモリシステムにおける、メモリデバイスの構成例を示すブロック図である。
図2に示されるように、メモリデバイス1は、入出力回路10、ロジック制御回路11、ステータスレジスタ12、アドレスレジスタ13、コマンドレジスタ14、シーケンサ15、レディ/ビジー回路16、電圧生成回路17、メモリセルアレイ18、ロウデコーダ19、センスアンプ20、データレジスタ21及びカラムデコーダ22などを含む。
入出力回路10は、信号IO(IO0〜IO7)の入出力を制御する。
入出力回路10は、コントローラ7からのデータ(書き込みデータ)DATを、データレジスタ21に送る。入出力回路10は、コントローラ7からのアドレスADDをアドレスレジスタ13に送る。入出力回路10は、コントローラ7からのコマンド(以下では、コントローラコマンドともよばれる)CMDをコマンドレジスタ14に送る。入出力回路10は、ステータスレジスタ12からのステータス情報を、コントローラ7に送る。入出力回路10は、データレジスタ21からのデータ(読み出しデータ)DATを、コントローラ7に送る。入出力回路10は、アドレスレジスタ13からのアドレスADDをコントローラ7に送る。
入出力回路10は、コントローラ7からのデータ(書き込みデータ)DATを、データレジスタ21に送る。入出力回路10は、コントローラ7からのアドレスADDをアドレスレジスタ13に送る。入出力回路10は、コントローラ7からのコマンド(以下では、コントローラコマンドともよばれる)CMDをコマンドレジスタ14に送る。入出力回路10は、ステータスレジスタ12からのステータス情報を、コントローラ7に送る。入出力回路10は、データレジスタ21からのデータ(読み出しデータ)DATを、コントローラ7に送る。入出力回路10は、アドレスレジスタ13からのアドレスADDをコントローラ7に送る。
ロジック制御回路11は、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、及びリードイネーブル信号REnを、コントローラ7から受け取る。ロジック制御回路11は、受け取った信号に応じて、入出力回路10及びシーケンサ15を制御する。
ステータスレジスタ12は、例えば、データの書き込み、読み出し、及び消去におけるステータス情報を一時的に保持する。コントローラ7が、ステータス情報を取得して、動作が正常に終了したか否か判定する。
アドレスレジスタ13は、入出力回路10を介してコントローラ7から受信したアドレスADDを一時的に保持する。アドレスレジスタ13は、ロウアドレスRAをロウデコーダ19へ転送し、カラムアドレスCAをカラムデコーダ22に転送する。
コマンドレジスタ14は、入出力回路10を介して受け取ったコントローラコマンドCMDを一時的に保持する。コマンドレジスタ14は、コントローラコマンドCMDを、シーケンサ15に転送する。
シーケンサ15は、メモリデバイス1全体の動作を制御する。シーケンサ15は、コントローラコマンドCMDに応じて、例えば、ステータスレジスタ12、レディ/ビジー回路16、電圧生成回路17、ロウデコーダ19、センスアンプ20、データレジスタ21、及びカラムデコーダ22などを制御する。これによって、シーケンサ15は、書き込み動作、読み出し動作及び消去動作などを実行する。
レディ/ビジー回路16は、メモリデバイス1の動作状況に応じて、レディ/ビジー信号R/Bnの信号レベルを制御する。レディ/ビジー回路16は、レディ/ビジー信号R/Bnをコントローラ7に送る。
電圧生成回路17は、シーケンサ15の制御に応じて、書き込み動作、読み出し動作、及び消去動作に用いられる電圧を生成する。電圧生成回路17は、この生成した電圧を、例えば、メモリセルアレイ18、ロウデコーダ19、及びセンスアンプ20等に供給する。ロウデコーダ19及びセンスアンプ20は、電圧生成回路17より供給された電圧をメモリセルアレイ18内のメモリセルに印加する。
メモリセルアレイ18は、複数の物理ブロックPBを含む。各物理ブロックPBは、ロウ及びカラムに対応付けられたメモリセル(以下では、メモリセルトランジスタとも表記される)を含む。
ロウデコーダ19は、ロウアドレスRAをデコードする。ロウデコーダ19は、デコード結果に基づいて、物理ブロックPB及びワード線などの活性化/非活性化(選択/非選択)を制御する。ロウデコーダ19は、動作のための電圧を、メモリセルアレイ18(物理ブロックPB)に印加する。
センスアンプ(センスアンプモジュール)20は、読み出し動作時に、メモリセルアレイ18から出力された信号をセンスする。センスされた信号に基づいて、データが判別される。このデータが、読み出しデータとして用いられる。センスアンプ20は、読み出しデータをデータレジスタ21に送る。センスアンプ20は、書き込み動作時に、書き込みデータに基づいて、メモリセルアレイ18のビット線BLの電位を制御する。
例えば、センスアンプ20は、複数のセンスアンプ回路を含む。1つのセンスアンプ回路は、対応する1又は複数のビット線に接続されている。
例えば、センスアンプ20は、複数のセンスアンプ回路を含む。1つのセンスアンプ回路は、対応する1又は複数のビット線に接続されている。
データレジスタ21は、書き込みデータ及び読み出しデータを保持する。書き込み動作において、データレジスタ21は、入出力回路10から受け取った書き込みデータを、センスアンプ20に送る。読み出し動作において、データレジスタ21は、センスアンプ20から受け取った読み出しデータRDを、入出力回路10に送る。
カラムデコーダ22は、カラムアドレスCAをデコードする。カラムデコーダ22は、デコード結果に応じて、センスアンプ20及びデータレジスタ21を制御する。
例えば、本実施形態のメモリシステムにおいて、メモリデバイス1は、NAND型フラッシュメモリ(以下では、単に、フラッシュメモリとも表記される)である。ただし、メモリデバイス1は、MRAM(Magnetoresistive random access memory)、PCM(Phase change memory)、ReRAM(Resistive random access memory)及びFeRAM(Ferroelectric random access memory)など、NAND型フラッシュメモリ以外のメモリでもよい。
図3は、本実施形態のNAND型フラッシュメモリにおける、メモリセルアレイの構成の一例を示す模式的な回路図である。
図3に示されるように、メモリセルアレイ18において、1つの物理ブロックPBは、例えば、4つのストリングユニットSU(SU0〜SU3)を含む。各ストリングユニットSUは、複数のNANDストリングNSを含む。NANDストリングNSの各々は、例えば、複数(例えば、m個)のメモリセルMC、及び、2つのセレクトトランジスタST1,ST2を含んでいる。NANDストリングNS内のセレクトトランジスタST1,ST2の個数は、任意であり、セレクトトランジスタST1,ST2のそれぞれは、1つ以上あればよい。mは、1以上の整数である。
メモリセルMCは、制御ゲートと電荷蓄積層とを有する。これによって、メモリセルMCは、データを不揮発に保持する。メモリセルMCは、電荷蓄積層に絶縁層(例えば、窒化シリコン膜)を用いたチャージトラップ型であってもよいし、電荷蓄積層に導電層(例えば、シリコン膜)を用いたフローティングゲート型であってもよい。
複数のメモリセルMCは、セレクトトランジスタST1のソースとセレクトトランジスタST2のドレインとの間に直列接続されている。複数のメモリセルMCの電流経路は、2つのセレクトトランジスタST1,ST2間で直列に接続される。NANDストリングNS内における最もドレイン側のメモリセルMCの電流経路の端子(例えば、ドレイン)は、セレクトトランジスタST1のソースに接続される。NANDストリングNS内における最もソース側のメモリセルMCの電流経路の端子(例えば、ソース)は、セレクトトランジスタST2のドレインに接続されている。
各ストリングユニットSU0〜SU3において、セレクトトランジスタST1のゲートは、ドレイン側セレクトゲート線SGD0〜SGD3のうち対応する1つに接続される。各ストリングユニットSU0〜SU3において、複数のセレクトトランジスタST2のゲートは、1つのソース側セレクトゲート線SGSに共通に接続される。尚、各ストリングユニットSU0〜SU3に対して、互いに独立の1つのセレクトゲート線SGSが接続されてもよい。
ブロックPB内のあるメモリセルMCの制御ゲートは、複数のワード線WL0〜WL(m−1)のうち対応する1つに接続される。
ストリングユニットSU内の各NANDストリングNSのセレクトトランジスタST1のドレインは、それぞれ異なるビット線BL0〜BL(n−1)に接続される。nは、1以上の整数である。各ビット線BLは、複数のブロックPB間で各ストリングユニットSU内の1つのNANDストリングNSに共通に接続される。
複数のセレクトトランジスタST2のソースは、ソース線SLに共通に接続されている。例えば、ブロックPB内の複数のストリングユニットSUは、共通のソース線SLに接続されている。
ストリングユニットSUは、異なるビット線BLに接続され、且つ、同一のセレクトゲート線SGDに接続されたNANDストリングNSの集合体である。ブロックPBは、ワード線WLを共通にする複数のストリングユニットSUの集合体である。メモリセルアレイ18は、ビット線BLを共通にする複数のブロックPBの集合体である。
データの書き込み及び読み出しは、複数のストリングユニットSUのうち選択された1つにおける、いずれか1つのワード線WLに接続された複数のメモリセルMCに対して、一括に実行される。以下において、データの書き込み及び読み出しの際、一括して選択される複数のメモリセルMCを含む群は、メモリセルグループとよばれる。1つのメモリセルグループに含まれる複数のメモリセルのそれぞれに書き込まれる、又は、1つのメモリセルグループに含まれる複数のメモリセルのそれぞれから読み出される1ビットのデータの集まりは、ページとよばれる。1つのメモリセルグループに対して、1つ以上のページが割り付けられる。
データの消去は、物理ブロックPB単位で実行される。但し、データの消去は、物理ブロックPBよりも小さい単位で実行されてもよい。
データの消去は、物理ブロックPB単位で実行される。但し、データの消去は、物理ブロックPBよりも小さい単位で実行されてもよい。
尚、NAND型フラッシュメモリ1は、プレーンPLNとよばれる制御単位を含む場合がある。1つのプレーンPLNは、例えば、メモリセルアレイ18、ロウデコーダ19、センスアンプ20、データレジスタ21、カラムデコーダ22などを含む。図2のNAND型フラッシュメモリ1の例において、1つのプレーンPLNのみが示されている。NAND型フラッシュメモリ1は、2以上のプレーンPLNを含んでもよい。NAND型フラッシュメモリ1が複数のプレーンPLNを有する場合、各プレーンPLNは、シーケンサ15の制御によって、異なるタイミングで、異なる動作を実行できる。
図4は、本実施形態のフラッシュメモリのメモリセルアレイ18の断面構造の一例を示す断面図である。
図4に示されるように、メモリセルアレイ18は、層間絶縁膜(図示せず)を介してZ方向における半導体基板SUBの上方に設けられている。メモリセルアレイ18は、例えば、複数の導電層41〜45、及び、複数のメモリピラーMPを含む。
導電層41は、Z方向における半導体基板SUBの上方に設けられる。例えば、導電層41は、半導体基板SUBの表面に平行なXY平面に沿って広がった板状の形状を有する。導電層41は、メモリセルアレイ18のソース線SLとして使用される。導電層41は、例えば、シリコン(Si)を含んでいる。
Z方向における導電層41の上方に、絶縁層(図示せず)を介して、導電層42が設けられる。例えば、導電層42は、XY平面に沿って広がった板状の形状を有する。導電層42は、セレクトゲート線SGSとして使用される。導電層42は、例えばシリコン(Si)を含んでいる。
導電層42の上方において、絶縁層(図示せず)と導電層43とがZ方向に交互に積層される。例えば、複数の導電層43の各々は、XY平面に沿って広がった板状の形状を有する。積層された複数の導電層43は、半導体基板SUB側から順に、それぞれワード線WL0〜WL(m−1)として使用される。導電層43は、例えば、タングステン(W)を含んでいる。
積層された複数の導電層43のうち最上層の導電層43の上方に、絶縁層(図示せず)を介して、導電層44が設けられる。導電層44は、例えば、XY平面に沿って広がった板状の形状を有する。導電層44は、セレクトゲート線SGDとして使用される。導電層44は、例えば、タングステン(W)を含んでいる。
Z方向における導電層44の上方に、絶縁層(図示せず)を介して導電層45が設けられる。例えば、導電層45は、Y方向に沿って延在するライン状の形状を有する。導電層45は、ビット線BLとして使用される。上述のように、ビット線BLとしての複数の導電層45は、X方向に沿って配列されている。導電層45は、例えば、銅(Cu)を含んでいる。
メモリピラーMPは、Z方向に沿って延在する柱状の構造を有する。メモリピラーMPは、例えば、導電層42〜44を貫通している。メモリピラーMPの上端は、例えば、導電層44が設けられた領域(Z方向における位置/高さ)と導電層45が設けられた領域(Z方向における位置/高さ)との間に設けられている。メモリピラーMPの下端は、例えば、導電層41が設けられた領域内に設けられている。
メモリピラーMPは、例えば、コア層50、半導体層51、及び積層膜52を含んでいる。
コア層50は、Z方向に沿って延在した柱状の構造を有する。コア層50の上端は、例えば、導電層44が設けられた領域(位置/高さ)よりも上方の領域内に設けられている。コア層50の下端は、例えば、導電層41が設けられた領域内に設けられている。コア層50は、例えば、酸化シリコン(SiO2)等の絶縁体を含んでいる。
半導体層51は、コア層50を覆う。半導体層51は、例えば、メモリピラーMPの側面(XY平面にほぼ垂直な面)において、導電層41と直接接触している。半導体層51は、例えば、シリコン(Si)を含む。
積層膜52は、導電層41と半導体層51とが接触している部分を除いて、半導体層51の側面及び底面を覆っている。積層膜52は、トンネル絶縁層、電荷蓄積層及びブロック絶縁層を含む。電荷蓄積層は、トンネル絶縁層とブロック絶縁層との間に設けられている。トンネル絶縁層は、電荷蓄積層と半導体層51との間に設けられている。ブロック絶縁層は、電荷蓄積層と導電層43の間、電荷蓄積層と導電層42との間、及び、電荷蓄積層と導電層44との間に設けられている。
積層膜52は、導電層41と半導体層51とが接触している部分を除いて、半導体層51の側面及び底面を覆っている。積層膜52は、トンネル絶縁層、電荷蓄積層及びブロック絶縁層を含む。電荷蓄積層は、トンネル絶縁層とブロック絶縁層との間に設けられている。トンネル絶縁層は、電荷蓄積層と半導体層51との間に設けられている。ブロック絶縁層は、電荷蓄積層と導電層43の間、電荷蓄積層と導電層42との間、及び、電荷蓄積層と導電層44との間に設けられている。
図2乃至図4は一例であって、本実施形態における、NAND型フラッシュメモリのメモリセルアレイの回路構成及び構造は、図2乃至図4の例に限定されない。
<コントローラの構成例>
図1に示されるように、コントローラ7は、ホストインターフェイス回路70、プロセッサ(CPU)71、ROM72、バッファメモリ73、RAM74、ECC回路75、1つ以上(N個、Nは1以上の自然数)のメモリインターフェイス回路79、カウント回路80などを含む。
尚、コントローラ7の後述の各機能は、ファームウェアによって実現されてもよいし、ハードウェアによって実現されてもよい。
コントローラ7は、例えば、SoC(System on a chip)によって構成されてもよい。
図1に示されるように、コントローラ7は、ホストインターフェイス回路70、プロセッサ(CPU)71、ROM72、バッファメモリ73、RAM74、ECC回路75、1つ以上(N個、Nは1以上の自然数)のメモリインターフェイス回路79、カウント回路80などを含む。
尚、コントローラ7の後述の各機能は、ファームウェアによって実現されてもよいし、ハードウェアによって実現されてもよい。
コントローラ7は、例えば、SoC(System on a chip)によって構成されてもよい。
プロセッサ71は、コントローラ7全体の動作を制御する。
例えば、プロセッサ71は、ホストデバイス9からの要求(ホストコマンド)に応答してコントローラコマンドを発行する。プロセッサ71は、発行したコントローラコマンドをメモリインターフェイス回路79に送る。
プロセッサ71は、ウェアレベリング等、NAND型フラッシュメモリ1を管理するための様々な処理を実行できる。プロセッサ71の判断基準に基づいて、コントローラ7が、ガベージコレクションなどを実行し、NAND型フラッシュメモリ1に消去動作を命令できる。
例えば、プロセッサ71は、ホストデバイス9からの要求(ホストコマンド)に応答してコントローラコマンドを発行する。プロセッサ71は、発行したコントローラコマンドをメモリインターフェイス回路79に送る。
プロセッサ71は、ウェアレベリング等、NAND型フラッシュメモリ1を管理するための様々な処理を実行できる。プロセッサ71の判断基準に基づいて、コントローラ7が、ガベージコレクションなどを実行し、NAND型フラッシュメモリ1に消去動作を命令できる。
ROM72は、メモリシステムSYMの制御プログラム(ファームウェア)及び複数の設定情報などを記憶する。
バッファメモリ73は、メモリシステムSYMとホストデバイス9との間のデータの転送時に、ホストデバイス9からのデータ、及び、NAND型フラッシュメモリ1からのデータを一時的に保持する。また、バッファメモリ73は、コントローラ7内で生成されるデータを、一時的に保持する。例えば、バッファメモリ73は、DRAM(Dynamic Random Access Memory)又はSRAM(Static Random Access Memory)である。
RAM74は、プロセッサ71の作業領域として使用される記憶領域である。RAM74は、例えば、SRAM又はDRAMである。
例えば、RAM74内に、NAND型フラッシュメモリ1を管理するためのパラメータ、各種の管理テーブル等が、ロードされる。例えば、RAM74は、ホストデバイス9から受け取った命令の待ち行列(コマンドキュー)を保持する。RAM74は、例えば、アドレス変換テーブルを保持する。アドレス変換テーブルは、ホストデバイス9が指定するデータの格納場所である論理アドレスと、実際にNAND型フラッシュメモリ1に書き込まれるデータの格納場所である物理アドレスとの対応関係を表したテーブルである。アドレス変換テーブルは、例えば、NAND型フラッシュメモリ1内に格納される。アドレス変換テーブルは、メモリシステムSYMの起動時に、NAND型フラッシュメモリ1から読み出されて、RAM74にロードされる。
論理アドレスは、ホストデバイス9から指定されるアドレスを元に得られる、データの論理的な格納位置である。物理アドレスはフラッシュメモリ(メモリデバイス)1内の、データの物理的な格納位置である。アドレス変換テーブルは、論理アドレスを入力として、物理アドレスを出力する。
論理ブロックLBが、データの管理及び動作の制御のための管理単位として、用いられてもよい。論理ブロックLBは、1つ以上の物理ブロックPBを含む論理的(仮想的)な管理単位である。論理ブロックLBは、物理ブロックPBより大きい管理単位(上位の管理単位)である。
ECC回路75は、読み出しデータにおけるエラー検出及びエラー訂正を行う。以下では、コントローラ7のECC回路75によって実行されるエラー検出及びエラー訂正は、ECC処理とよばれる。データの書き込み時に、ECC回路75は、ホストデバイス9からのデータに基づいてパリティを生成する。このデータとパリティとが、NAND型フラッシュメモリ1に書き込まれる。データの読み出し時に、ECC回路75は、読み出されたデータとパリティに基づきシンドロームを生成し、読み出されたデータ内のエラーの有無を判断する。エラーがデータ内に含まれる場合、ECC回路75は、データ内におけるエラーの位置を特定し、エラーを訂正する。以下では、読み出されたデータ内のエラーを、フェイルビットとも称する。
ECC回路75において、訂正可能なエラービット数は、例えばパリティビット数によって決まる。訂正可能なエラービット数を超えるエラービットが、読み出されたデータ内に含まれる場合、エラーの訂正ができず、データの読み出しは失敗する。ECC回路75は、LDPC(Low density parity check)のような最尤復号を行ってもよい。
ホストインターフェイス回路70は、ホストデバイス9に、無線通信又は有線通信を介して接続される。ホストインターフェイス回路70は、メモリシステムSYMとホストデバイス9との間の通信を行う。例えば、ホストインターフェイス回路70は、メモリシステムSYMとホストデバイス9との間で、データ、ホストコマンド及び論理アドレスの転送を制御する。ホストインターフェイス回路70は、例えば、SATA(Serial Advanced Technology Attachment)、SAS(Serial Attached SCSI)、PCIe(PCI Express)(登録商標)等の通信インターフェイス規格をサポートする。ホストデバイス9は、例えば、SATA、SAS、PCIe等のインターフェイスに準拠するコンピュータ等である。
メモリインターフェイス回路79は、対応するNAND型フラッシュメモリ1に接続される。1つのメモリインターフェイス回路79に、複数のNAND型フラッシュメモリ1が接続されていてもよい。メモリインターフェイス回路79は、コントローラ7とNAND型フラッシュメモリ1との間の通信を行う。メモリインターフェイス回路79は、NANDインターフェイス規格に基づいて構成されている。複数のNAND型フラッシュメモリ1は、自身が接続されているメモリインターフェイス回路79によって、並列に制御される。
カウント回路80は、NAND型フラッシュメモリ1における各種の動作の実行回数を、カウントする。例えば、カウント回路80は、NAND型フラッシュメモリ1で実行される読み出し動作の回数をカウントする。
カウント回路80による動作のカウント結果に基づいて、プロセッサ71は、NAND型フラッシュメモリ1内のデータの信頼性などを管理する。
コントローラ7及びNAND型フラッシュメモリ1を含むメモリシステムSYMは、SDTMカードのようなメモリカードや、SSD(solid state drive)等である。
<データとメモリセルのしきい値電圧との関係>
図5は、フラッシュメモリにおけるデータとメモリセルのしきい値電圧の分布との関係を示す図である。
図5は、フラッシュメモリにおけるデータとメモリセルのしきい値電圧の分布との関係を示す図である。
図5において、メモリセルのしきい値電圧の分布及び読み出し電圧の関係が、示されている。図5において、縦軸はメモリセルの個数に対応し、横軸はメモリセルのしきい値電圧Vthに対応している。
図5は、1つのメモリセルが記憶するデータに対応する複数のしきい値電圧の分布を表している。以下において、書き込み方式の一例として、1つのメモリセルMCに1ビットデータを記憶させるSLC(Single Level Cell)方式と、1つのメモリセルMCに2ビットデータを記憶させるMLC(Multi Level Cell)方式とについて、それぞれ説明する。
SLC方式の場合、2つのしきい値電圧が、メモリセルMCに対して設定される。この2つのしきい値電圧は、しきい値電圧の低いものから順に“ER”レベル(または“ER”ステート)、“A”レベル(または“A”ステート)とよばれる。SLC方式において、例えば、“1”データが“ER”レベルに割り当てられ、“0”データが“A”レベルに割り当てられる。
MLC方式の場合、4つのしきい値電圧が、メモリセルMCに対して設定される。この4つのしきい値電圧は、しきい値電圧の低いものから順に“ER”レベル、“A”レベル、“B”レベル(又は“B”ステート)、“C”レベル(または“C”ステート)とよばれる。MLC方式において、例えば“ER”レベル、“A”レベル、“B”レベル、及び“C”レベルにそれぞれ“11(Lower/Upper)”データ、“01”データ、“00”データ、及び“10”データが割り当てられる。
図5のしきい値電圧分布において、隣り合うしきい値電圧分布の間にそれぞれ読み出し電圧(読み出しレベル)が設定される。
例えば、読み出し電圧ARは、“ER”レベルの分布における最大のしきい値電圧と“A”レベルの分布における最小のしきい値電圧との間に設定されている。読み出し電圧ARは、メモリセルMCのしきい値電圧が“ER”レベルのしきい値電圧分布に含まれるのか“A”レベル以上のしきい値電圧分布に含まれるのかを判断する動作に使用される。メモリセルMCに読み出し電圧ARが印加されると、“ER”レベルに対応するメモリセルはオン状態になり、“A”レベル、“B”レベル、及び“C”レベルに対応するメモリセルはオフ状態になる。
読み出し電圧BRは、“A”レベルのしきい値電圧分布と“B”レベルのしきい値電圧分布との間に設定され、読み出し電圧CRは、“B”レベルのしきい値電圧分布と“C”レベルのしきい値電圧分布との間に設定される。メモリセルMCに読み出し電圧BRが印加されると、“ER”及び“A”レベルに対応するメモリセルがオン状態になり、“B”レベル及び“C”レベルに対応するメモリセルがオフ状態になる。メモリセルMCに読み出し電圧CRが印加されると、“ER”レベル、“A”レベル、及び“B”レベルに対応するメモリセルがオン状態になり、“C”レベルに対応するメモリセルがオフ状態になる。
読み出しパス電圧(非選択電圧)VREADが、読み出し動作時に非選択ワード線に印加される電圧として、設定される。読み出しパス電圧VREADの電圧値は、最も高いしきい値電圧分布における最大のしきい値電圧よりも高い。読み出しパス電圧VREADがゲートに印加されたメモリセルMCは、記憶するデータに依らずにオン状態になる。
尚、以上で説明した1つのメモリセルMCに記憶するデータのビット数と、メモリセルMCのしきい値電圧に対するデータの割り当てとは、一例である。例えば、3ビット以上のデータが1つのメモリセルMCに記憶されてもよい。上記と異なるデータがしきい値電圧に対して割り当てられてもよい。
各読み出し電圧及び読み出しパス電圧は、各方式で同じ電圧値に設定されてもよいし、異なる電圧値に設定されてもよい。例えば、図5に示されるように、MLC方式における読み出しパス電圧VREADの電圧値は、SLC方式における読み出しパス電圧VREADの電圧値よりも高く設定されてもよい。これと同様に、例えば1つのメモリセルMCに3ビットデータを記憶させるTLC(Triple Level Cell)方式における読み出しパス電圧VREADの電圧値は、MLC方式における読み出しパス電圧VREADの電圧値よりも高く設定されてもよい。1つのメモリセルに4ビットデータを記憶させるQLC(Quadruple-Level Cell)方式における読み出しパス電圧VREADの電圧値は、TLC方式における読み出しパス電圧VREADの電圧値よりも高く設定されてもよい。
読み出し動作において、メモリセルMCに対する読み出し電圧及び読み出しパス電圧の印加によって、メモリセルMCのしきい値電圧が意図せずに上昇することがある。本実施形態において、読み出し動作によって生じるメモリセルのしきい値電圧の意図しない上昇は、読み出しディスターブ(Read Disturb)とよばれる。以下において、読み出しディスターブは、“RD”とも表記される。
読み出しディスターブの影響が小さい場合、コントローラ7は、読み出したデータに対してECC処理を行い、エラーを訂正し得る。本実施形態において、読み出しディスターブに起因する読み出しデータのエラーは、読み出しディスターブエラー(又は、読み出しディスターブによるエラー)とよばれる。読み出しディスターブの影響が大きい場合、コントローラ7は、読み出したデータに対してECC処理を行っても、エラーが訂正できない場合がある。
コントローラ7は、読み出しディスターブによるエラーを未然に防ぐために、データの書き換えを実行する。このデータの書き替え処理は、読み出し回数を読み出しディスターブへの影響量とみなすことで、実現されている。
以下では、データの書き換えは、リフレッシュ動作ともよばれる。リフレッシュ動作は、フラッシュメモリ1におけるデータのコピー又はエラーが訂正されたデータの書き込みを行う動作である。
コントローラ7は、フラッシュメモリ1が実行した読み出し動作の回数に基づいて、リフレッシュ動作の実行の要否(実行のタイミングを含む)を判断する。
カウント回路80が、メモリセルアレイ18内に設定された複数の管理単位ごとの読み出し動作の実行回数(以下では、読み出し回数とも表記する)をカウントする。
以下では、データの書き換えは、リフレッシュ動作ともよばれる。リフレッシュ動作は、フラッシュメモリ1におけるデータのコピー又はエラーが訂正されたデータの書き込みを行う動作である。
コントローラ7は、フラッシュメモリ1が実行した読み出し動作の回数に基づいて、リフレッシュ動作の実行の要否(実行のタイミングを含む)を判断する。
カウント回路80が、メモリセルアレイ18内に設定された複数の管理単位ごとの読み出し動作の実行回数(以下では、読み出し回数とも表記する)をカウントする。
本実施形態のメモリシステムにおいて、カウント回路80は、以下の構成を有する。
<カウント回路の構成例>
図6を参照して、本実施形態のメモリシステムにおける、コントローラ7のカウント回路の構成例について、説明する。
図6を参照して、本実施形態のメモリシステムにおける、コントローラ7のカウント回路の構成例について、説明する。
図6は、本実施形態のメモリシステムにおける、コントローラ7のカウント回路の構成を示す図である。
図6に示されるように、本実施形態のメモリシステムにおいて、NAND型フラッシュメモリ1は、複数(例えば、K個、Kは1以上の自然数)の論理ブロックLBと、複数(例えば、M個、Mは1以上の自然数)の物理ブロックPBとを含む。
論理ブロックLBは、メモリセルアレイ18に対して、設定される。
ある個数(N個、Nは1以上及びM以下の自然数)の物理ブロックPBが、各論理ブロックLBに割り付けられる。各論理ブロックLBに割り付けられる物理ブロックPBの数は、同じでもよいし、異なってもよい。
ある個数(N個、Nは1以上及びM以下の自然数)の物理ブロックPBが、各論理ブロックLBに割り付けられる。各論理ブロックLBに割り付けられる物理ブロックPBの数は、同じでもよいし、異なってもよい。
本実施形態において、カウント回路80は、NAND型フラッシュメモリ1の読み出し回数をカウントし、カウント結果(以下では、カウント情報ともよばれる)を保持する。
カウント回路80は、論理ブロックLB単位の読み出し回数、及び、物理ブロックPB単位の読み出し回数を、カウントする。
コントローラ7は、カウント回路80内のカウント情報に基づいて、フラッシュメモリ1に対するリフレッシュ動作の要否を判断する。コントローラ7は、リフレッシュ動作を実行すべきと判断した場合に、フラッシュメモリ1に対するリフレッシュ動作を実行する。コントローラ7は、リフレッシュ動作によって、フラッシュメモリ1から一部のデータを読み出し、読み出したデータにECC処理を施したデータをフラッシュメモリ1に書き込む。このときに、読み出し及び書き込みデータは、1物理ブロック分のデータでもよいし、1論理ブロック分のデータでもよい。
本実施形態において、カウント回路80は、図6に示されるように、第1のカウンタ810と第2のカウンタ820とを含む階層構造を有する。
第1のカウンタ810は、実行された読み出し動作の回数を物理ブロックPBごとにカウントする。第1のカウンタ810は、読み出し回数の値(以下では、カウント値ともよばれる)を保持する。第1のカウンタ810は、第1の格納容量を有する。
第1のカウンタ810は、複数の物理ブロックPBにそれぞれ対応するように、複数のカウントレジスタ811を有する。カウントレジスタ811の数は、NAND型フラッシュメモリ1の物理ブロックPBの数と同じである。
各カウントレジスタ811は、第1のデータサイズ(例えばデータ長)L1のデータを、読み出し回数として保持できる。例えば、各カウントレジスタ811は、1ビットのデータサイズL1を有するデータを、対応する物理ブロックPBの読み出し回数として格納できる。この場合、第1の格納容量は、1×Mビットで示される。
第1のカウンタ810は、複数のカウンタグループCX(CX#0,CX#1,・・・,CX#K−1)を含んでもよい。各カウンタグループCXは、フラッシュメモリ1内に設定された各論理ブロックLB(LB#0,LB#1,・・・,LB#k−1)に関連付けられる。カウンタグループCXの数は、論理ブロックLBの数と同じである。各カウンタグループCXは、各論理ブロックLBに属する複数の物理ブロックPBに対応する複数のカウントレジスタ811から構成される。例えば、カウンタグループCX#m(mは、0以上の整数)は、論理ブロックLB#mに対応する。
第1のカウンタ810は、複数の論理ブロックLBにそれぞれ関するエントリENTを有する。1つのエントリENTは、複数の物理ブロックにそれぞれ対応する複数のカウントレジスタ811の値から構成されるデータである。以下において、カウントレジスタ811に格納されるデータ(物理ブロックPBに関するエントリ)は、エントリユニットとよばれる。1つのエントリENTは、複数のエントリユニットから構成される。1つのエントリENTは、1つのカウンタグループCXを用いて示されるデータに対応する。
第1のカウンタ810は、複数の論理ブロックLBにそれぞれ関するエントリENTを有する。1つのエントリENTは、複数の物理ブロックにそれぞれ対応する複数のカウントレジスタ811の値から構成されるデータである。以下において、カウントレジスタ811に格納されるデータ(物理ブロックPBに関するエントリ)は、エントリユニットとよばれる。1つのエントリENTは、複数のエントリユニットから構成される。1つのエントリENTは、1つのカウンタグループCXを用いて示されるデータに対応する。
第2のカウンタ820は、実行された読み出し動作の回数を論理ブロックLBごとにカウントする。第2のカウンタ820は、読み出し回数(カウント値)を保持する。第2のカウンタ820は、第2の格納容量を有する。第2の格納容量は、第1の格納容量以下である。
例えば、第2のカウンタ820は、複数の論理ブロックLBにそれぞれ対応するように、複数のカウントレジスタ821を有する。カウントレジスタ821の数は、論理ブロックLBの数と同じである。
各カウントレジスタ821は、第2のデータサイズ(例えばデータ長)L2のデータを、読み出し回数として保持できる。例えば、各カウントレジスタ821は、32ビットのデータサイズを有するデータを、対応する論理ブロックLBの読み出し回数として格納できる。この場合、第2の格納容量は、32×Kビットで示される。
第2のカウンタ820における論理ブロックLBに関するエントリは、対応するカウントレジスタ(エントリ)821の値から構成されるデータである。
第2のカウンタ820における論理ブロックLBに関するエントリは、対応するカウントレジスタ(エントリ)821の値から構成されるデータである。
第1のカウンタ810のあるカウンタグループCXを構成するあるカウンタレジスタ811のカウント値があるしきい値に到達してオーバーフローした場合(又は、オーバーフローしたと判定された場合)に、第2のカウンタ820のカウント値が、更新される。この時、第2のカウンタ820のカウント値は、オーバーフローする前の第1のカウンタ810の値(すなわち、上述のあるしきい値)に基づいて、更新される。例えば、そのカウンタグループCXに対応するカウントレジスタ821が保持しているカウント値(これは、ある論理ブロックLBに属する複数の物理ブロックPBの読み出し回数の集合に相当し得る)が、カウンタグループCXのカウント値のオーバーフローに伴って、カウントアップされる。
例えば、カウント回路80の動作は、プロセッサ71によって制御される。プロセッサ71は、複数のしきい値を保持している。しきい値は、カウンタ810,820の制御、及び、リフレッシュ動作の実行の判断基準として用いられる。尚、カウンタ810,820のしきい値(後述のしきい値ThrP,ThrL)は、読み出しディスターブ特性に応じて、メモリシステムSYMの使用前又は使用中に設定される。
尚、カウント回路80は、第1及び第2のカウンタ810,820の動作を制御する制御回路を有していてもよい。カウント回路80は、プロセッサ71内の回路でもよい。カウント回路80と実質的に同じ機能が、ソフトウェア(プログラム)として、コントローラ7内に提供され、プロセッサ71によって実現されてもよい。
以下において、読み出し回数のカウント対象となる単位(例えば、制御単位、管理単位、アクセス単位)は、RDカウントターゲットユニット(又は、単に、カウントターゲットユニット)とよばれる。本実施形態において、論理ブロックLB及び物理ブロックPBが、RDカウントターゲットユニットである。
以下において、第1のカウンタ810は、Fineカウンタ810とよばれ、第2のカウンタ820は、Coarseカウンタ820とよばれる。
(b)動作例
図7乃至図10を参照して、本実施形態のメモリシステムの動作例について説明する。
図7乃至図10を参照して、本実施形態のメモリシステムの動作例について説明する。
図7は、本実施形態のメモリシステムの動作例を説明するためのフローチャートである。図8乃至図10は、本実施形態のメモリシステムの動作例を説明するための模式図である。本実施形態のメモリシステムの動作例の説明のために、図1乃至図6も、適宜参照される。
<S200>
図7に示されるように、ホストデバイス9は、メモリシステムSYM内に、データの読み出しに関するホストコマンドを発行し、コントローラ7にデータの読み出しを命令する。ホストデバイス9は、読み出すべきデータの論理アドレスをコントローラ7に送る。
図7に示されるように、ホストデバイス9は、メモリシステムSYM内に、データの読み出しに関するホストコマンドを発行し、コントローラ7にデータの読み出しを命令する。ホストデバイス9は、読み出すべきデータの論理アドレスをコントローラ7に送る。
コントローラ7は、ホストデバイス9からのホストコマンドに基づいて、データの読み出しのためのコントローラコマンド(以下では、読み出しコマンドとよばれる)CMDを発行する。
コントローラ7は、ホストデバイス9から受信した論理アドレスに基づいて、所望のデータが記憶されたNAND型フラッシュメモリ1の物理アドレスを取得する。プロセッサ71は、RAM71内の管理テーブルを参照し、当該データが所属する論理ブロックのアドレス、及び、当該データが所属する物理ブロックのアドレスを取得する。例えば、論理アドレスに基づいて、論理ブロック(以下では、選択論理ブロックとよばれる)LB<i>(iは0以上の自然数)の番号、複数の物理ブロックPBのうち対応する物理ブロック(以下では、選択物理ブロックとよばれる)PB<j>(jは0以上の自然数)の番号が、取得される。
コントローラ7は、読み出しコマンドCMDと物理アドレスADDとを、フラッシュメモリ1に送る。
フラッシュメモリ1は、読み出しコマンドCMD及び物理アドレスADDを受け取る。フラッシュメモリ1は、読み出しコマンドCMDに基づいて、物理アドレスADDに対応する選択物理ブロックPB内の領域(以下では、読み出し領域とよばれる)に対して、読み出し動作を実行する(S100)。
フラッシュメモリ1は、読み出し動作によって読み出されたデータを、コントローラ7に送る(S101)。コントローラ7は、受け取ったデータを、ホストデバイス9に送る。
<S201>
コントローラ7において、読み出し回数のカウント動作が、例えばフラッシュメモリ1の読み出し動作に並行して、カウント回路80によって実行される。
コントローラ7において、読み出し回数のカウント動作が、例えばフラッシュメモリ1の読み出し動作に並行して、カウント回路80によって実行される。
図8の(a)及び(b)に示されるように、プロセッサ71は、選択論理ブロックLB<i>の選択物理ブロックPB<j>に対応するFineカウンタ810のカウントレジスタ811ijの値を、更新(例えば、カウントアップ)する。
Fineカウンタ810において、対応するカウントレジスタ811ij内に格納されている値に、“1”が加算される。カウントレジスタ811ij内の値が“0”である場合、カウントレジスタ811ijの値は、0から1に変わる。
Fineカウンタ810において、対応するカウントレジスタ811ij内に格納されている値に、“1”が加算される。カウントレジスタ811ij内の値が“0”である場合、カウントレジスタ811ijの値は、0から1に変わる。
図8の(a)及び(b)に示されるように、選択論理ブロックLB<i>に対応するカウントグループCXiにおいて、選択物理ブロックPB<j>に対応するカウントレジスタ811ijの値にオーバーフローが発生していない場合、カウントレジスタ811ijの値が、“1”に維持される。この場合において、選択論理ブロックLB<i>に対応するCoarseカウンタ821iの値は、更新されない。
図9は、次の読み出し領域が、論理ブロックLB<i>に属する物理ブロックPB<a>である場合のFineカウンタの状態を示す模式図である。
図9の(a)及び(b)に示されるように、読み出し動作が物理ブロックPB<j>と同じ論理ブロックLB<i>に属する物理ブロックPB<a>に対して実行されたとしても、読み出し動作の対象となった物理ブロックPB<a>に対応するカウントレジスタ811iaの値に、オーバーフローが発生しなければ、Coarseカウンタ821iの値は、更新されない。
<S202>
プロセッサ71は、選択論理ブロックLBの選択物理ブロックPBに対応するカウントレジスタ811の値が、物理ブロックPBの読み出し回数に関するしきい値ThrPに達しているか否か、判断する。
プロセッサ71は、選択論理ブロックLBの選択物理ブロックPBに対応するカウントレジスタ811の値が、物理ブロックPBの読み出し回数に関するしきい値ThrPに達しているか否か、判断する。
カウントレジスタ811の値がしきい値ThrPに達していない場合(図7のS202のFalseの場合)、プロセッサ71は、発行された読み出しコマンドに対応するカウント回路80の処理を、終了する。
図10は、次の読み出し領域が、論理ブロックLB<i>に属する物理ブロックPB<j>である場合のFineカウンタの状態を示す模式図である。
図10の(a)に示されるように、論理ブロックLB<i>に属する物理ブロックPB<0>,PB<b>に対して読み出し動作が実行された場合、対応するカウントレジスタ811の値が、それぞれ更新される。
この後、論理ブロックLB<i>に属する物理ブロックPB<j>が、読み出し動作の対象として選択された場合を想定する。
ここで、カウントレジスタ811ijの値がしきい値ThrPに達している場合(図7のS202のTrueの場合)、プロセッサ71は、そのカウントレジスタ811ijの値がオーバーフローしていると、判断する。
この後、論理ブロックLB<i>に属する物理ブロックPB<j>が、読み出し動作の対象として選択された場合を想定する。
ここで、カウントレジスタ811ijの値がしきい値ThrPに達している場合(図7のS202のTrueの場合)、プロセッサ71は、そのカウントレジスタ811ijの値がオーバーフローしていると、判断する。
<S203>
図10の(b)に示されるように、カウントレジスタ811ijの値がしきい値ThrPに達している場合、プロセッサ71は、Fineカウンタ810の選択論理ブロックLB<i>の選択物理ブロックPB<j>に対応するカウントレジスタ811ijの値を、リセットする。
図10の(b)に示されるように、カウントレジスタ811ijの値がしきい値ThrPに達している場合、プロセッサ71は、Fineカウンタ810の選択論理ブロックLB<i>の選択物理ブロックPB<j>に対応するカウントレジスタ811ijの値を、リセットする。
また、図10の(c)に示されるように、プロセッサ71は、カウントレジスタ811ijのリセットとともに、選択論理ブロックLB<i>に対応する他のカウントレジスタ811の値を、リセットする。
これによって、Fineカウンタ810において、選択論理ブロックLB<i>に対応するカウンタグループCXiの各カウントレジスタ811内の値は、“0”に設定される。
これによって、Fineカウンタ810において、選択論理ブロックLB<i>に対応するカウンタグループCXiの各カウントレジスタ811内の値は、“0”に設定される。
カウントレジスタ811のリセットの後、プロセッサ71は、カウントレジスタ811ijの値を、“1”に設定する。
<S204>
プロセッサ71は、Coarseカウンタ821の選択論理ブロックLB<i>に対応するカウントレジスタ821iの値を、“ThrP−1”分だけカウントアップする。しきい値ThrPの値が“2”である場合、“1(=2−1)”が、カウントレジスタ821iの値(ここでは、0)に加算される。
プロセッサ71は、Coarseカウンタ821の選択論理ブロックLB<i>に対応するカウントレジスタ821iの値を、“ThrP−1”分だけカウントアップする。しきい値ThrPの値が“2”である場合、“1(=2−1)”が、カウントレジスタ821iの値(ここでは、0)に加算される。
尚、Fineカウンタ810の値がしきい値ThrPに達した場合に、カウントレジスタ821の値が“ThrP”の値(例えば“2”)の分だけカウントアップされてもよい。
<S205>
プロセッサ71は、Coarseカウンタ820のカウントレジスタ821iのカウントアップされた値が、論理ブロックLBの読み出し回数に関するしきい値ThrLに達したか否か判断する。
カウントレジスタ821iの値がしきい値ThrLに達していない場合(図7のS205のFalseの場合)、プロセッサ71は、発行された読み出しコマンドに対応するカウント回路80の処理を、終了する。
プロセッサ71は、Coarseカウンタ820のカウントレジスタ821iのカウントアップされた値が、論理ブロックLBの読み出し回数に関するしきい値ThrLに達したか否か判断する。
カウントレジスタ821iの値がしきい値ThrLに達していない場合(図7のS205のFalseの場合)、プロセッサ71は、発行された読み出しコマンドに対応するカウント回路80の処理を、終了する。
<S206>
カウントレジスタ821iの値がしきい値ThrLに達している場合(図7のS205のTrueの場合)、プロセッサ71は、カウントレジスタ821iの値がしきい値ThrLに達した選択論理ブロックLB<i>に対して、しきい値突破処理を実行する。本実施形態におけるしきい値突破処理は、カウンタ820における読み出し回数のカウント値がしきい値以上になった場合に、データのコピー及び/又は訂正データの再書き込み(すなわち上述のリフレッシュ動作)を実行するか否かを判断するための処理である。
しきい値突破処理及びリフレッシュ動作は、ホストデバイス9からのホストコマンドなしに、コントローラ7とフラッシュメモリ1との間で、実行される。
コントローラ7は、フラッシュメモリ1に対して、以下のようなしきい値突破処理を、実行させる。
カウントレジスタ821iの値がしきい値ThrLに達している場合(図7のS205のTrueの場合)、プロセッサ71は、カウントレジスタ821iの値がしきい値ThrLに達した選択論理ブロックLB<i>に対して、しきい値突破処理を実行する。本実施形態におけるしきい値突破処理は、カウンタ820における読み出し回数のカウント値がしきい値以上になった場合に、データのコピー及び/又は訂正データの再書き込み(すなわち上述のリフレッシュ動作)を実行するか否かを判断するための処理である。
しきい値突破処理及びリフレッシュ動作は、ホストデバイス9からのホストコマンドなしに、コントローラ7とフラッシュメモリ1との間で、実行される。
コントローラ7は、フラッシュメモリ1に対して、以下のようなしきい値突破処理を、実行させる。
以下において、図11及び図12を参照して、本実施形態のメモリシステムにおけるしきい値突破処理及びリフレッシュ動作について、説明する。
<しきい値突破処理>
図11は、本実施形態のメモリシステムにおける、しきい値突破処理及びリフレッシュ動作の一例を示すフローチャートである。
<しきい値突破処理>
図11は、本実施形態のメモリシステムにおける、しきい値突破処理及びリフレッシュ動作の一例を示すフローチャートである。
図11に示されるように、しきい値突破処理において、本実施形態のメモリシステムSYMは、例えばフェイルビット数に基づいてデータの書き換え(リフレッシュ動作)の有無を、判断する。
<S500>
例えば、階層化された複数のカウンタによる読み出し回数の判断結果(図7のS205)に基づいてしきい値突破処理の実行が決定された場合、コントローラ7は、しきい値以上のカウント値を有するCoarseカウンタ821のエントリに属するある物理ブロックの、先頭のアドレスのワード線に対して読み出し動作を実行するように、読み出しコマンドを発行する。読み出しコマンド及びアドレスが、フラッシュメモリ1に送られる。
例えば、階層化された複数のカウンタによる読み出し回数の判断結果(図7のS205)に基づいてしきい値突破処理の実行が決定された場合、コントローラ7は、しきい値以上のカウント値を有するCoarseカウンタ821のエントリに属するある物理ブロックの、先頭のアドレスのワード線に対して読み出し動作を実行するように、読み出しコマンドを発行する。読み出しコマンド及びアドレスが、フラッシュメモリ1に送られる。
<S501>
フラッシュメモリ1は、読み出しコマンド及びアドレスに基づいて、選択された物理ブロックPBの選択ワード線WLに対する読み出しを実行する。以下において、しきい値突破処理時における読み出し動作(リフレッシュ動作のための読み出し動作)は、スキャンリードともよばれる。
フラッシュメモリ1は、読み出されたデータを、コントローラ7に転送する。
フラッシュメモリ1は、読み出しコマンド及びアドレスに基づいて、選択された物理ブロックPBの選択ワード線WLに対する読み出しを実行する。以下において、しきい値突破処理時における読み出し動作(リフレッシュ動作のための読み出し動作)は、スキャンリードともよばれる。
フラッシュメモリ1は、読み出されたデータを、コントローラ7に転送する。
<S502>
コントローラ7は、読み出されたデータに対してECC処理を行い、フェイルビットをカウントする。これによって、コントローラ7は、読み出されたデータのフェイルビット数を取得する。
コントローラ7は、読み出されたデータに対してECC処理を行い、フェイルビットをカウントする。これによって、コントローラ7は、読み出されたデータのフェイルビット数を取得する。
<S503>
コントローラ7は、読み出されたデータのフェイルビット数が、フェイルビット数に対して設定されたしきい値(以下では、フェイルビットしきい値とよばれる)ThrFBC以上であるか否か判定する。
コントローラ7は、読み出されたデータのフェイルビット数が、フェイルビット数に対して設定されたしきい値(以下では、フェイルビットしきい値とよばれる)ThrFBC以上であるか否か判定する。
<S504>
フェイルビット数がフェイルビットしきい値ThrFBC以上である場合(図11のS503のTrue)、コントローラ7は、該当する物理ブロックPBに対するリフレッシュ処理を実行する。
フェイルビット数がフェイルビットしきい値ThrFBC以上である場合(図11のS503のTrue)、コントローラ7は、該当する物理ブロックPBに対するリフレッシュ処理を実行する。
該当する物理ブロックPBに対するリフレッシュ処理において、コントローラ7は、リフレッシュ処理の対象の物理ブロックPB内の全てのデータを、リフレッシュ処理の対象の物理ブロックPBとは異なる他の物理ブロックPBへコピーする。以下では、リフレッシュ処理の対象の物理ブロックPBは、リフレッシュ対象ブロックとよばれる。
データのコピーは、以下のように、コントローラ7によって実行される。
コントローラ7は、リフレッシュ対象ブロック内のデータをワード線単位で読み出す。コントローラ7は、読み出されたデータに対するECC処理によるエラーの訂正を施す。データのエラーが訂正されるまで、各種のエラー訂正処理が実行される。コントローラ7は、ECC処理が施されたデータを、リフレッシュ対象ブロックとは異なる他の物理ブロックへ書き込む。コントローラ7は、読み出し動作、読み出しデータに対するECC処理、及び、ECC処理されたデータの他の物理ブロックPBへの書き込み、を含むデータのコピー処理を、リフレッシュ対象ブロック内の全てのワード線に対して実行する。
コントローラ7は、リフレッシュ対象ブロック内のデータをワード線単位で読み出す。コントローラ7は、読み出されたデータに対するECC処理によるエラーの訂正を施す。データのエラーが訂正されるまで、各種のエラー訂正処理が実行される。コントローラ7は、ECC処理が施されたデータを、リフレッシュ対象ブロックとは異なる他の物理ブロックへ書き込む。コントローラ7は、読み出し動作、読み出しデータに対するECC処理、及び、ECC処理されたデータの他の物理ブロックPBへの書き込み、を含むデータのコピー処理を、リフレッシュ対象ブロック内の全てのワード線に対して実行する。
コントローラ7は、フラッシュメモリ1におけるリフレッシュ動作の完了後、しきい値突破処理を終了する。
<S505>
フェイルビット数がしきい値ThrFBCより少ない場合(図11のS503のFalse)、コントローラ7は、選択物理ブロックPBの終端アドレスのワード線WLまで、読み出し動作が完了したか否か判定する。
フェイルビット数がしきい値ThrFBCより少ない場合(図11のS503のFalse)、コントローラ7は、選択物理ブロックPBの終端アドレスのワード線WLまで、読み出し動作が完了したか否か判定する。
選択物理ブロックPBの終端アドレスのワード線WLまでの読み出し動作が完了している場合(図11のS505のTrue)、コントローラ7は、しきい値突破処理を終了する。
<S506>
選択物理ブロックPBの終端アドレスのワード線WLまでの読み出し動作が完了していない場合(図11のS505のFalse)、コントローラ7は、該当する物理ブロックPBの未選択のワード線WL(しきい値突破処理における読み出し動作が実行されていないワード線WL)に対する読み出し動作が実行されるように、読み出しコマンドを発行する。
選択物理ブロックPBの終端アドレスのワード線WLまでの読み出し動作が完了していない場合(図11のS505のFalse)、コントローラ7は、該当する物理ブロックPBの未選択のワード線WL(しきい値突破処理における読み出し動作が実行されていないワード線WL)に対する読み出し動作が実行されるように、読み出しコマンドを発行する。
この後、コントローラ7は、リフレッシュ処理の完了、又は、該当する物理ブロックPBの終端アドレスのワード線WLまでの読み出しの完了まで、上述のS501からS506までの処理を繰り返し実行する。
以上のように、本実施形態のメモリシステムは、しきい値突破処理を実行できる。
尚、図11の例において、コントローラ7は、Coarseカウンタ821のエントリに属する全ての物理ブロックPBに対して、S500からS506の処理を実行する。
本実施形態のメモリシステムにおいて、しきい値突破処理は、図12のような処理によって、実行されてもよい。
図12は、本実施形態のメモリシステムにおける、しきい値突破処理及びリフレッシュ動作の別の一例を示すフローチャートである。
図12に示されるように本実施形態のメモリシステムSYMは、しきい値突破処理において、ECC処理によるエラー訂正の成否に基づいてデータのコピーの実行の有無を判断してもよい。例えば、メモリシステムSYMが、訂正能力の異なる複数のECC処理を行うことができる場合は、段階的にECC処理を行い、データのコピーが実行される。この場合において、訂正能力の低い高速なECC処理によってエラー訂正できるかどうかによって、データのコピーの実行の有無が判断される。リフレッシュ処理においては、訂正能力の高いECC処理が実行される。
<S510,S511>
図11の例と同様に、コントローラ7がフラッシュメモリ1に読み出しコマンド及びアドレスを発行した後、フラッシュメモリ1は、読み出しコマンドに基づいて、選択ブロックPB内の選択ワード線WLに対して読み出し動作を実行する。
図11の例と同様に、コントローラ7がフラッシュメモリ1に読み出しコマンド及びアドレスを発行した後、フラッシュメモリ1は、読み出しコマンドに基づいて、選択ブロックPB内の選択ワード線WLに対して読み出し動作を実行する。
フラッシュメモリ1は、読み出されたデータを、コントローラ7に転送する。
<S512>
コントローラ7は、読み出されたデータに対してECC処理を実行する。
コントローラ7は、読み出されたデータに対してECC処理を実行する。
<S513>
コントローラ7は、ECC処理により、データ内のエラーが訂正されたか否か判断する。
コントローラ7は、ECC処理により、データ内のエラーが訂正されたか否か判断する。
<S514>
データ内のエラーが訂正できなかった場合(図12のS513のFalse)、コントローラ7は、図11の例のステップS504と同様に、該当するブロックに対するリフレッシュ動作を実行する。リフレッシュ動作の完了後、コントローラ7は、しきい値突破処理を終了する。
データ内のエラーが訂正できなかった場合(図12のS513のFalse)、コントローラ7は、図11の例のステップS504と同様に、該当するブロックに対するリフレッシュ動作を実行する。リフレッシュ動作の完了後、コントローラ7は、しきい値突破処理を終了する。
<S515>
ECC処理によってデータ内のエラーが訂正できた場合(図12のS513のTrue)、コントローラ7は、該当する物理ブロックPBの終端アドレスのワード線WLまで、読み出し動作が完了したか否か判定する。
ECC処理によってデータ内のエラーが訂正できた場合(図12のS513のTrue)、コントローラ7は、該当する物理ブロックPBの終端アドレスのワード線WLまで、読み出し動作が完了したか否か判定する。
選択物理ブロックPB内の終端アドレスのワード線WLまでの読み出し動作が完了している場合(図12のS515のTrue)、コントローラ7は、しきい値突破処理を終了する。
<S516>
選択物理ブロックPB内の終端アドレスのワード線WLまでの読み出し動作が完了していない場合(図12のS515のFalse)、コントローラ7は、図11の例と同様に、しきい値突破処理における該当する物理ブロックPBの読み出し動作が実行されていないワード線WLに対するデータの読み出しが実行されるように、読み出しコマンドを発行する。
選択物理ブロックPB内の終端アドレスのワード線WLまでの読み出し動作が完了していない場合(図12のS515のFalse)、コントローラ7は、図11の例と同様に、しきい値突破処理における該当する物理ブロックPBの読み出し動作が実行されていないワード線WLに対するデータの読み出しが実行されるように、読み出しコマンドを発行する。
この後、コントローラ7は、リフレッシュ処理の完了、又は、該当する物理ブロックPBの終端アドレスのワード線WLまでの読み出しの完了まで、上述のS511〜S516までの処理を繰り返し実行する。
尚、図12の例において、コントローラ7は、図11の例と同様に、Coarseカウンタ821のエントリに属する全ての物理ブロックPBに対して、S510からS516の処理を実行する。
以上のように、本実施形態のメモリシステムは、しきい値突破処理を実行できる。
尚、本実施形態のメモリシステムにおいて、リフレッシュ動作は、図11のフェイルビットカウント数及び図12のECC処理によるエラー訂正の可否の判断無しに、実行されてもよい。
また、本実施形態のメモリシステムにおいて、データのコピー又はデータの再書き込みを含むリフレッシュ動作は、選択論理ブロック内の任意の物理ブロックに対して、実行されてもよい。
また、本実施形態のメモリシステムにおいて、データのコピー又はデータの再書き込みを含むリフレッシュ動作は、選択論理ブロック内の任意の物理ブロックに対して、実行されてもよい。
本実施形態のメモリシステムにおけるフラッシュメモリの書き込み動作及び消去動作は、周知の技術を用いて実行できる。それゆえ、本実施形態において、メモリシステムにおけるフラッシュメモリの書き込み動作及び消去動作の詳細な説明は省略される。
(c)まとめ
本実施形態のメモリシステムは、メモリデバイス(例えば、NAND型フラッシュメモリ)1の読み出し動作の実行回数をカウントするためのカウント回路80を、コントローラ7内に有する。
本実施形態のメモリシステムは、メモリデバイス(例えば、NAND型フラッシュメモリ)1の読み出し動作の実行回数をカウントするためのカウント回路80を、コントローラ7内に有する。
本実施形態において、カウント回路80は、2つのカウンタを有する。
一方のカウンタ810は、第1の単位(例えば、物理ブロック単位)で読み出し動作の実行回数を、カウント及び保持する。
他方のカウンタ820は、第1の単位より大きい第2の単位(例えば、論理ブロック単位)で読み出し動作の実行回数を、カウント及び保持する。
一方のカウンタ810は、第1の単位(例えば、物理ブロック単位)で読み出し動作の実行回数を、カウント及び保持する。
他方のカウンタ820は、第1の単位より大きい第2の単位(例えば、論理ブロック単位)で読み出し動作の実行回数を、カウント及び保持する。
これらの2つのカウンタ810,820は、階層化されている。
カウンタ810内におけるカウント値のオーバーフローの発生(しきい値への到達)に応じて、カウンタ820のカウント値が、更新される。カウンタ820のカウント値が、しきい値に到達した場合に、NAND型フラッシュメモリ1内のデータの信頼性を保証するための各種の動作(例えば、データの読み出し、データのコピー、及びデータに対するECC処理など)が、実行される。
カウンタ810内におけるカウント値のオーバーフローの発生(しきい値への到達)に応じて、カウンタ820のカウント値が、更新される。カウンタ820のカウント値が、しきい値に到達した場合に、NAND型フラッシュメモリ1内のデータの信頼性を保証するための各種の動作(例えば、データの読み出し、データのコピー、及びデータに対するECC処理など)が、実行される。
これによって、本実施形態のメモリシステムは、読み出しディスターブの影響を抑制でき、高い信頼性のデータを提供できる。
また、本実施形態のメモリシステムは、読み出しディスターブの影響を監視するスキャンリードの回数を削減できる。
さらには、本実施形態のメモリシステムは、読み出しディスターブの影響を抑制しつつ及びデータの信頼性を保証しつつ、カウント回路の面積の増大を抑制できる。この結果として、本実施形態のメモリシステムの製造コストは低減される。
また、本実施形態のメモリシステムは、読み出しディスターブの影響を監視するスキャンリードの回数を削減できる。
さらには、本実施形態のメモリシステムは、読み出しディスターブの影響を抑制しつつ及びデータの信頼性を保証しつつ、カウント回路の面積の増大を抑制できる。この結果として、本実施形態のメモリシステムの製造コストは低減される。
以上のように、本実施形態のメモリシステムは、性能を向上できる。
(2)第2の実施形態
図13乃至図16を参照して、第2の実施形態のメモリシステム及びその制御方法について説明する。
図13乃至図16を参照して、第2の実施形態のメモリシステム及びその制御方法について説明する。
(a)構成例
図13を参照して、本実施形態のメモリシステムの構成例について説明する。
図13を参照して、本実施形態のメモリシステムの構成例について説明する。
図13は、本実施形態のメモリシステムの構成例を説明するためのブロック図である。
図13において、本実施形態のメモリシステムにおける、コントローラのカウント回路の構成例が示されている。
図13において、本実施形態のメモリシステムにおける、コントローラのカウント回路の構成例が示されている。
図13のカウント回路80は、第1のカウンタ810AとCoarseカウンタ820とを含む。第1のカウンタ810Aは、一部の論理ブロックLBを対象として、読み出し回数を保持する。本実施形態において、一部の論理ブロックを対象として読み出し回数を保持するカウンタ810Aは、トランジェントカウンタ810Aとよばれる。
トランジェントカウンタ810Aは、記憶領域(例えば、レジスタ、SRAM又はDRAM)A1,A2を、有する。
トランジェントカウンタ810Aにおいて、複数の論理ブロックLBに関するインデックス(例えば、論理ブロックLBの識別番号)が、記憶領域A1内に格納される。トランジェントカウンタ810Aにおいて、各論理ブロックLBに属する複数の物理ブロックPBの読み出し回数が、記憶領域A2内に格納される。
トランジェントカウンタ810Aにおいて、複数の論理ブロックLBに関するインデックス(例えば、論理ブロックLBの識別番号)が、記憶領域A1内に格納される。トランジェントカウンタ810Aにおいて、各論理ブロックLBに属する複数の物理ブロックPBの読み出し回数が、記憶領域A2内に格納される。
例えば、論理ブロックLBの識別番号(インデックス)は、データサイズL3のデータで、記憶領域A1内のレジスタに保持される。物理ブロックPBの読み出し回数は、データサイズL1のデータで、記憶領域A2内のレジスタ(カウントレジスタ)811に保持される。
トランジェントカウンタ810Aは、図13に示すように、複数(L個、LはKより小さい自然数)のエントリENTを保持する。本実施形態において、各エントリENTは、論理ブロックLBに関するインデックスと、その論理ブロックLBに属する複数の物理ブロックPBのそれぞれの読み出し回数と、を含むデータである。
トランジェントカウンタ810Aは、カウンタグループCXの入れ替えを動的に実行する。例えば、トランジェントカウンタ810Aにおいて、エントリENTの追い出しのアルゴリズムは、FIFO(First-In First-Out)方式である。
本実施形態において、トランジェントカウンタ810Aは、上述のFineカウンタとして用いられる。本実施形態において、Coarseカウンタ820は、上述の例(例えば、図6)と実質的に同じ構成を有する。
(b)動作例
図14乃至図16を参照して、本実施形態のメモリシステムの動作例について、説明する。尚、本実施形態のメモリシステムの動作の説明のために、図1乃至図13も、適宜参照される。
図14乃至図16を参照して、本実施形態のメモリシステムの動作例について、説明する。尚、本実施形態のメモリシステムの動作の説明のために、図1乃至図13も、適宜参照される。
図14は、本実施形態のメモリシステムの動作例を説明するためのフローチャートである。図15及び図16は、本実施形態のメモリシステムの動作例を説明するための模式図である。以下において、トランジェントカウンタ810Aが、2つのエントリ(ENT1、ENT2)を保持する場合について、説明される。但し、カウント回路80のトランジェントカウンタ810Aのエントリ数は、限定されない。
<S300>
図14に示されるように、コントローラ7は、第1の実施形態と同様に、ホストデバイス9からのホストコマンドに応じて、読み出しコマンドCMD及びアドレスADDをフラッシュメモリ1に転送する。フラッシュメモリ1は、アドレスADDに示される選択論理ブロックLB<i>の選択物理ブロックPB<j>に対して、読み出し動作を実行する(S100)。フラッシュメモリ1は、読み出したデータを、コントローラ7へ転送する(S101)。
図14に示されるように、コントローラ7は、第1の実施形態と同様に、ホストデバイス9からのホストコマンドに応じて、読み出しコマンドCMD及びアドレスADDをフラッシュメモリ1に転送する。フラッシュメモリ1は、アドレスADDに示される選択論理ブロックLB<i>の選択物理ブロックPB<j>に対して、読み出し動作を実行する(S100)。フラッシュメモリ1は、読み出したデータを、コントローラ7へ転送する(S101)。
<S301>
プロセッサ71は、トランジェントカウンタ810Aのエントリに、選択論理ブロックLB<i>に対応するエントリが無いか否か判断する。
プロセッサ71は、トランジェントカウンタ810Aのエントリに、選択論理ブロックLB<i>に対応するエントリが無いか否か判断する。
選択論理ブロックLB<i>に対応するエントリが、トランジェントカウンタ810A内に有る場合(図14のS301のFalse)、プロセッサ71は、図14のS305の処理を実行する。
選択論理ブロックLB<i>に対応するエントリが、トランジェントカウンタ810A内に無い場合(図14のS301のTrue)、プロセッサ71は、図14のS302の処理を実行する。
選択論理ブロックLB<i>に対応するエントリが、トランジェントカウンタ810A内に無い場合(図14のS301のTrue)、プロセッサ71は、図14のS302の処理を実行する。
<S302>
選択論理ブロックLB<i>に対応するエントリが、トランジェントカウンタ810A内に無い場合において、プロセッサ71は、トランジェントカウンタ810A内に保持されているエントリの個数が、あらかじめ設定された所定の個数に達しているか否か判断する。
選択論理ブロックLB<i>に対応するエントリが、トランジェントカウンタ810A内に無い場合において、プロセッサ71は、トランジェントカウンタ810A内に保持されているエントリの個数が、あらかじめ設定された所定の個数に達しているか否か判断する。
トランジェントカウンタ810A内のエントリの個数が所定の数(例えば、2)に達していない場合(S302のFalseの場合)、プロセッサ71は、図14のS304の処理を実行する。
トランジェントカウンタ810A内のエントリの個数が所定の値に達している場合(S302のTrueの場合)、プロセッサ71は、図14のS303の処理を実行する。
トランジェントカウンタ810A内のエントリの個数が所定の値に達している場合(S302のTrueの場合)、プロセッサ71は、図14のS303の処理を実行する。
<S303>
S302のTrueの場合について、図15を参照して説明する。図15(a)では、現在のカウント対象の読み出し動作より以前に実行された読み出し動作に応じたカウント処理に応じて、トランジェントカウンタ810Aの全てのエントリENTが使用され、トランジェントカウンタ810AのエントリENTが所定の個数に達している場合が想定されている。
S302のTrueの場合について、図15を参照して説明する。図15(a)では、現在のカウント対象の読み出し動作より以前に実行された読み出し動作に応じたカウント処理に応じて、トランジェントカウンタ810Aの全てのエントリENTが使用され、トランジェントカウンタ810AのエントリENTが所定の個数に達している場合が想定されている。
トランジェントカウンタ810AのエントリENT(ENT1,ENT2)の個数が所定の数(ここでは、“2”)に達している場合、プロセッサ71は、トランジェントカウンタ810Aの複数のエントリENT1,ENT2のうち最も古く更新されたエントリL−old(ここでは、エントリENT1に格納されている論理ブロック番号LB<x1>に該当するカウンタグループとする)を、選択する。
プロセッサ71は、トランジェントカウンタ810AのエントリL−oldにおける、選択論理ブロックLB<x1>の各物理ブロックPBのカウント数のうちの最大値(ここでは、1)を“fCmax”とする。
プロセッサ71は、トランジェントカウンタ810AのエントリL−oldにおける、選択論理ブロックLB<x1>の各物理ブロックPBのカウント数のうちの最大値(ここでは、1)を“fCmax”とする。
Coarseカウンタ820は、図15の(b)に示されるように、Coarseカウンタ820の選択論理ブロックLB<x1>に対応するカウンタ821iの値を、“fCmax”分だけ加算した値に変更する(ここでは、10から11)。
プロセッサ71は、最も古く更新されたエントリL−oldを、トランジェントカウンタ810A内から追い出す(消去する)。図15の(c)において、コントローラ7によるエントリL−oldの追い出しの結果、トランジェントカウンタ810AのエントリENT1に空き領域が生じる。
例えば、非選択の論理ブロックLB<x2>に関するエントリENT2において、その論理ブロックLB<x2>に属する各物理ブロックPBの読み出し回数の値fCは、維持される。
例えば、非選択の論理ブロックLB<x2>に関するエントリENT2において、その論理ブロックLB<x2>に属する各物理ブロックPBの読み出し回数の値fCは、維持される。
<S304>
図16の(a)に示されるように、トランジェントカウンタ810Aのエントリ数が所定の数に達していない場合(S302のFalseの場合)、又は、トランジェントカウンタ810A内の最古のエントリL−oldの追い出しの後(S302のTrueの場合)、プロセッサ71は、選択論理ブロックLB<i>に対応するエントリを、トランジェントカウンタ810Aの空き領域に追加する。
図16の(a)に示されるように、トランジェントカウンタ810Aのエントリ数が所定の数に達していない場合(S302のFalseの場合)、又は、トランジェントカウンタ810A内の最古のエントリL−oldの追い出しの後(S302のTrueの場合)、プロセッサ71は、選択論理ブロックLB<i>に対応するエントリを、トランジェントカウンタ810Aの空き領域に追加する。
このように、トランジェントカウンタ810A内のデータは、読み出し動作の対象となる論理ブロックの変更に応じて、ある論理ブロックに関する読み出し回数のデータから他の論理ブロックの読み出し回数のデータへ切り替えられる。
<S305>
図16の(b)に示されるように、プロセッサ71は、選択論理ブロックLB<i>に属する選択物理ブロックPB<j>に対応するトランジェントカウンタ810Aのエントリユニットに、読み出し回数に応じた値を設定する。すなわち、選択論理ブロックLB<i>の物理ブロックPB<j>に関して、読み出し回数に応じた値fCijが、カウントレジスタ811ijに設定される。ここで、図16の(a)及び(b)のように、論理ブロックLB<i>に属する物理ブロックPB<j>に対して読み出し動作が実行されたため、カウントレジスタ811ijに、“1”が設定される。
図16の(b)に示されるように、プロセッサ71は、選択論理ブロックLB<i>に属する選択物理ブロックPB<j>に対応するトランジェントカウンタ810Aのエントリユニットに、読み出し回数に応じた値を設定する。すなわち、選択論理ブロックLB<i>の物理ブロックPB<j>に関して、読み出し回数に応じた値fCijが、カウントレジスタ811ijに設定される。ここで、図16の(a)及び(b)のように、論理ブロックLB<i>に属する物理ブロックPB<j>に対して読み出し動作が実行されたため、カウントレジスタ811ijに、“1”が設定される。
<S306>
読み出し動作及びカウント処理を経て、プロセッサ71は、選択論理ブロックLB<i>の選択物理ブロックPB<j>に関して、トランジェントカウンタ810Aの対応するエントリENTのいずれかのカウントレジスタ811の値が、しきい値ThrP(例えば“2”)に達したか否か判断する。
読み出し動作及びカウント処理を経て、プロセッサ71は、選択論理ブロックLB<i>の選択物理ブロックPB<j>に関して、トランジェントカウンタ810Aの対応するエントリENTのいずれかのカウントレジスタ811の値が、しきい値ThrP(例えば“2”)に達したか否か判断する。
エントリENTのいずれかのカウントレジスタ811の値がしきい値ThrPに達していない場合(S306のFalseの場合)、プロセッサ71は、処理を終了する。
例えば、図17の(a)に示されるように、選択論理ブロックLB<i>の選択物理ブロックPB<j>に対して読み出し動作が実行された場合、対応するカウントレジスタ811ijの値は、“1”から“2”に更新される。
この場合のように、エントリENTのいずれかのカウントレジスタ811の値がしきい値ThrPに達している場合(S306のTrueの場合)、プロセッサ71は、そのエントリENTのいずれかのカウントレジスタ811の値はオーバーフロー状態であると判断する。プロセッサ71は、図14のS307の処理を実行する。
この場合のように、エントリENTのいずれかのカウントレジスタ811の値がしきい値ThrPに達している場合(S306のTrueの場合)、プロセッサ71は、そのエントリENTのいずれかのカウントレジスタ811の値はオーバーフロー状態であると判断する。プロセッサ71は、図14のS307の処理を実行する。
<S307>
図17の(b)に示されるように、プロセッサ71は、トランジェントカウンタ810Aの選択論理ブロックLB<i>に対応するエントリENTの各カウントレジスタ811の値を、リセットする。これによって、選択論理ブロックLB<i>に対応するエントリENT1のカウントレジスタ811ijの値は、“0”に設定される。
図17の(c)に示されるように、プロセッサ71は、エントリENT1の各カウントレジスタ811のリセットの後、選択論理ブロックLB<i>の選択物理ブロックPB<j>に対応するエントリユニット(カウントレジスタ811ij)の値を、“1”に設定する。
図17の(b)に示されるように、プロセッサ71は、トランジェントカウンタ810Aの選択論理ブロックLB<i>に対応するエントリENTの各カウントレジスタ811の値を、リセットする。これによって、選択論理ブロックLB<i>に対応するエントリENT1のカウントレジスタ811ijの値は、“0”に設定される。
図17の(c)に示されるように、プロセッサ71は、エントリENT1の各カウントレジスタ811のリセットの後、選択論理ブロックLB<i>の選択物理ブロックPB<j>に対応するエントリユニット(カウントレジスタ811ij)の値を、“1”に設定する。
<S308>
上述の図10の例と同様に、プロセッサ71は、Coarseカウンタ820の選択論理ブロックLB<i>に対応するカウントレジスタ821iの値を、“ThrP−1”分だけ増加させる(例えばカウントアップする)。
図17の(c)の例において、カウントレジスタ821iの値は、“2”に設定される。
上述の図10の例と同様に、プロセッサ71は、Coarseカウンタ820の選択論理ブロックLB<i>に対応するカウントレジスタ821iの値を、“ThrP−1”分だけ増加させる(例えばカウントアップする)。
図17の(c)の例において、カウントレジスタ821iの値は、“2”に設定される。
<S309>
プロセッサ71は、カウンタ820の選択論理ブロック<i>に対応するカウントレジスタ821iの値が、しきい値“ThrL”に達しているか否か判断する。
プロセッサ71は、カウンタ820の選択論理ブロック<i>に対応するカウントレジスタ821iの値が、しきい値“ThrL”に達しているか否か判断する。
カウントレジスタ821iの値がThrLに達していない場合(S309のFalseの場合)、コントローラ7は、カウント処理を終了する。
カウントレジスタ821iの値がしきい値ThrLに達している場合(S309のTrueの場合)、コントローラ7は、カウントレジスタ821iの値がオーバーフロー状態であると判断する。この場合において、コントローラ7は、図14のS310の処理を実行する。
カウントレジスタ821iの値がしきい値ThrLに達している場合(S309のTrueの場合)、コントローラ7は、カウントレジスタ821iの値がオーバーフロー状態であると判断する。この場合において、コントローラ7は、図14のS310の処理を実行する。
<S310>
コントローラ7は、選択論理ブロックLB<i>に対して、上述のしきい値突破処理(図11又は図12参照)を実行する。
コントローラ7は、選択論理ブロックLB<i>に対して、上述のしきい値突破処理(図11又は図12参照)を実行する。
以上のように、本実施形態のメモリシステムにおいて、読み出し動作、カウント動作、及び、しきい値突破処理が完了する。
(c)まとめ
本実施形態のメモリシステムにおいて、コントローラは、読み出し動作の対象となる論理ブロックの変更に応じて、カウント回路内に保持されるデータを、ある論理ブロックに属する物理ブロックに関するデータから、読み出し対象となる論理ブロックに属する物理ブロックに関するデータに動的に変える。
本実施形態のメモリシステムにおいて、コントローラは、読み出し動作の対象となる論理ブロックの変更に応じて、カウント回路内に保持されるデータを、ある論理ブロックに属する物理ブロックに関するデータから、読み出し対象となる論理ブロックに属する物理ブロックに関するデータに動的に変える。
本実施形態のメモリシステムのように、Fineカウンタによってカウントされる対象の論理ブロックの数が制限され、カウントされる対象の論理ブロックが動的に変更される場合であっても、論理ブロックに属する複数の物理ブロックのそれぞれで実行された読み出し動作の回数を、カウントできる。
カウンタで読み出し回数が集計される論理ブロックの数が削減されることによって、本実施形態のメモリシステムは、物理ブロックの読み出し回数をカウントするカウンタの面積を縮小できる。
以上のように、本実施形態のメモリシステムは、第1の実施形態のメモリシステムと同様の効果を得ることができる。
(3) 第3の実施形態
図18及び図19を参照して、第3の実施形態のメモリシステム及びその制御方法について、説明する。
図18及び図19は、本実施形態のメモリシステムにおける、トランジェントカウンタからのエントリの追い出しを説明するための模式図である。
図18及び図19を参照して、第3の実施形態のメモリシステム及びその制御方法について、説明する。
図18及び図19は、本実施形態のメモリシステムにおける、トランジェントカウンタからのエントリの追い出しを説明するための模式図である。
第2の実施形態において、FIFO方式が、カウント回路80のトランジェントカウンタ810Aからのエントリの追い出しアルゴリズムに用いられた例が示されている。
但し、FIFO方式以外のアルゴリズムが、トランジェントカウンタ810Aからのエントリの追い出しに適用されてもよい。
但し、FIFO方式以外のアルゴリズムが、トランジェントカウンタ810Aからのエントリの追い出しに適用されてもよい。
例えば、LRU(Least Recently Used)方式が、トランジェントカウンタ810Aからのエントリの追い出しアルゴリズムに適用されてもよい。
LRU方式を用いたトランジェントカウンタ810Aからのエントリの追い出しにおいて、プロセッサ71は、トランジェントカウンタ810Aの複数のエントリENTのうち、使われていない期間が最も長い論理ブロックLBに対応するエントリENTを、追い出す。
図18に示されるように、例えば、トランジェントカウンタ810Aの各エントリENTにおいて、エントリENTの最後に参照された時刻が、あるデータサイズLaを有する時刻データTDとして、エントリENTの読み出し回数fCのデータに付加されている。
プロセッサ71(又はカウント回路80)は、時刻データTDの参照結果に基づいて、複数のエントリのうち使われていない期間が最も長いエントリに対して、追い出し処理を実行する。
これによって、トランジェントカウンタ810Aにおいて、LRU方式を用いたエントリENTの追い出し処理が完了する。
これによって、トランジェントカウンタ810Aにおいて、LRU方式を用いたエントリENTの追い出し処理が完了する。
尚、最後に参照された時刻の時刻データTDに基づくエントリENTの使用履歴の情報が、RAM74に格納されてもよい。この場合、データの追い出し時において、プロセッサ71は、RAM74内のエントリの使用履歴の情報を参照する。
別な例としては、トランジェントカウンタ810Aからのエントリの追い出しアルゴリズムとして、カウンタ810A,820によって集計される値と実際の読み出し回数との乖離を減らすように、エントリをトランジェントカウンタ810Aから追い出す方式が用いられてもよい。
図19に示されるように、本例において、各カウンタグループCXの複数のカウントレジスタ811の値のうちの最大値“fCmax”(図19の点線の丸で囲まれた値)と、各カウンタグループCXのカウントレジスタの値の差との和に応じて、データの追い出し対象となるエントリが決定されてもよい。
トランジェントカウンタ810Aの物理ブロックPBに対応するエントリユニット毎に、最大値fCmaxとエントリユニット(各物理ブロックPBの読み出し回数)の値との差の合計値(和)が、計算される。
インデックス#aの論理ブロックLBの各エントリユニットの値と、これらのエントリユニットのうちの最大値(“2”)との差は、“1”、“0”、“1”及び“1”となる。これらの差の合計値Δaは、“3”である。
インデックス#bの論理ブロックLBの各エントリユニットの値と、これらのエントリユニットのうちの最大値(“3”)との差は、“1”、“0”、“1”及び“0”となる。これらの差の合計値Δbは、“2”である。
インデックス#cの論理ブロックLBの各エントリユニットの値と、これらのエントリユニットのうちの最大値(“2”)との差は、“1”、“1”、“0”及び“1”となる。これらの差の合計値Δcは、“3”である。
インデックス#dの論理ブロックLBの各エントリユニットの値と、これらのエントリユニットのうちの最大値(“2”)との差は、“1”、“0”、“1”及び“1”となる。これらの差の合計値Δdは、“3”である。
インデックス#aの論理ブロックLBの各エントリユニットの値と、これらのエントリユニットのうちの最大値(“2”)との差は、“1”、“0”、“1”及び“1”となる。これらの差の合計値Δaは、“3”である。
インデックス#bの論理ブロックLBの各エントリユニットの値と、これらのエントリユニットのうちの最大値(“3”)との差は、“1”、“0”、“1”及び“0”となる。これらの差の合計値Δbは、“2”である。
インデックス#cの論理ブロックLBの各エントリユニットの値と、これらのエントリユニットのうちの最大値(“2”)との差は、“1”、“1”、“0”及び“1”となる。これらの差の合計値Δcは、“3”である。
インデックス#dの論理ブロックLBの各エントリユニットの値と、これらのエントリユニットのうちの最大値(“2”)との差は、“1”、“0”、“1”及び“1”となる。これらの差の合計値Δdは、“3”である。
プロセッサ71(又はカウント回路80)は、複数の合計値Δa,Δb,Δc,Δdの値を比較する。プロセッサ71は、比較結果に基づいて、複数の合計値Δa,Δb,Δc,Δdのうち最小値を有するエントリENTを、トランジェントカウンタ810Aから追い出す。図19の例では、インデックス#bを有する論理ブロックLBに対応するエントリENTが、追い出される。
尚、複数のエントリENTのそれぞれの合計値Δa,Δb,Δc,Δdのうちの2つ以上が同じ値となる場合が生じ得る。
最小の合計値が複数ある場合、プロセッサ71は、最小値を有する複数のエントリENTにおいて、各エントリENTに含まれる複数のエントリユニット(カウントレジスタ811)のそれぞれの値を、比較する。プロセッサ71は、比較結果に基づいて、最大値を有するエントリユニットを含むエントリENTを、トランジェントカウンタ810Aから追い出す。
最小の合計値が複数ある場合、プロセッサ71は、最小値を有する複数のエントリENTにおいて、各エントリENTに含まれる複数のエントリユニット(カウントレジスタ811)のそれぞれの値を、比較する。プロセッサ71は、比較結果に基づいて、最大値を有するエントリユニットを含むエントリENTを、トランジェントカウンタ810Aから追い出す。
さらに、複数のエントリENTが最小値の合計値を有し、且つ、複数のエントリENTに含まれる複数のエントリユニットの値が最大値を有する場合、FIFO方式又はLRU方式のアルゴリズムに基づいて、それらの複数のエントリENTのうちの、追い出されるエントリを決定してもよい。
トランジェントカウンタ810Aのエントリに対する追い出し処理が、本実施形態のように実行される場合においても、本実施形態のメモリシステムは、上述の実施形態の同様の効果を得ることができる。
(4) 第4の実施形態
第4の実施形態のメモリシステム及びその制御方法について説明する。
本実施形態において、メモリシステム内のカウント回路80のリセット処理について説明する。
第4の実施形態のメモリシステム及びその制御方法について説明する。
本実施形態において、メモリシステム内のカウント回路80のリセット処理について説明する。
カウント回路のカウンタ810,820のリセット処理は、しきい値突破処理時、及び、エントリに対応する論理ブロックLB/物理ブロックPBに対する消去動作時において、実行される。
しきい値突破処理時のカウンタ810,820のリセット処理において、プロセッサ71は、しきい値突破処理(例えば、物理ブロックPB全体からのデータの読み出し)の実行の直前又は実行後に、対応する1つのエントリに対してリセット処理を実行する。但し、しきい値突破処理時において、カウンタ810,820のリセット処理は、実行されなくともよい。
消去動作時のカウンタ810,820のリセット処理において、プロセッサ71は、物理ブロックPBに対する消去動作、又は、論理ブロックLBに属する複数の物理ブロックPBに対する消去動作に応じて、リセット処理を実行する。
物理ブロックPBに対する消去動作が実行された場合、Fineカウンタ810のエントリ(エントリユニット)がリセットされる。この場合において、消去動作が実行された物理ブロックPBに対応するFineカウンタ810内のエントリユニット(カウントレジスタ)のみが、リセットされる。
論理ブロックLBに対する消去動作が実行された場合、Fineカウンタ810のエントリ及びCoarseカウンタ820のエントリが、リセットされる。この場合において、消去動作が実行された論理ブロックLBに属する複数の物理ブロックPBに対応するFineカウンタ810内のエントリユニット、及び、消去動作が実行された論理ブロックLBに対応するCoarseカウンタ820内のエントリが、リセットされる。
以上のように、上述の実施形態のメモリシステムにおいて、カウント回路のリセット処理が、実行され得る。
(5) 第5の実施形態
図20及び図21を参照して、第5の実施形態のメモリシステム及びその制御方法について、説明する。
図20及び図21は、本実施形態のメモリシステムを説明するための模式図である。
図20及び図21を参照して、第5の実施形態のメモリシステム及びその制御方法について、説明する。
図20及び図21は、本実施形態のメモリシステムを説明するための模式図である。
上述の実施形態において、しきい値突破処理は、Coarseカウンタ820の保持する値がしきい値に達した場合に、実行されている。
但し、しきい値突破処理は、以下のような、タイミングで、実行されてもよい。
但し、しきい値突破処理は、以下のような、タイミングで、実行されてもよい。
例えば、図20に示されるように、Fineカウンタ810のあるエントリ#qにおいて、カウントレジスタ(エントリユニット)811yの値fCxが、しきい値ThrAに達した場合に、プロセッサ71は、しきい値突破処理を、そのカウントレジスタ811yに対応する論理ブロックLB(LB#q)内の複数の物理ブロックPBに対して実行する。
別な例としては、図21に示されるように、プロセッサ71は、あるエントリ#qに関して、カウンタ810のカウントレジスタ811zの値fCxxとカウンタ820のカウントレジスタ821zの値fCyとの合計値を計算する。値fCxxと値fCyとの合計値が、しきい値ThrB以上になった場合に、プロセッサ71は、しきい値突破処理を、カウンタ810,820に対応する論理ブロックLBの複数の物理ブロックPBに対して実行してもよい。
複数のカウントレジスタ811の値と,カウントレジスタ821の値(例えば、複数のカウントレジスタ811の値と、カウントレジスタ821の値との合計値)に基づいて、しきい値突破処理の開始が判断されてもよい。
以上のように、上述の実施形態のメモリシステムにおいて、しきい値突破処理が実行され得る。
(6) 第6の実施形態
第6の実施形態のメモリシステム及びその制御方法について説明する。
第6の実施形態のメモリシステム及びその制御方法について説明する。
上述の実施形態において、Fineカウンタ810に格納された値がしきい値以上となってオーバーフローした場合に、Coarseカウンタの値が更新される例が示されている。そのため、Fineカウンタによって集計される値がCoarseカウンタに反映されるまでに、わずかな遅延が生じる場合がある。
これに対して、カウンタ810,820の値の更新は、以下のように、実行されてもよい。
これに対して、カウンタ810,820の値の更新は、以下のように、実行されてもよい。
Fineカウンタ810とCoarseカウンタ820との間に生じる遅延を削減するには、Fineカウンタ810内の各カウンタグループCXの複数のカウンタレジスタ811の最大値が認識できれば良い。
Fineカウンタ810の更新時において、カウンタグループCXの複数のカウントレジスタ811の値のうち最大値が更新された時に、Coarseカウンタ820の値が更新されれば、Fineカウンタ810の更新とCoarseカウンタ820の更新との間の遅延は小さくできる。
以上のように、上述の実施形態のメモリシステムにおいて、カウンタの更新処理が実行され得る。
(7) 第7の実施形態
図22を参照して、第7の実施形態のメモリシステム及びその制御方法について説明する。
図22を参照して、第7の実施形態のメモリシステム及びその制御方法について説明する。
上述の実施形態において、メモリシステムの論理ブロック及び物理ブロックが、カウントターゲットユニットに用いられている。
但し、カウントターゲットユニットは、他の論理アドレス及び他の物理アドレスに基づく単位で構成されてもよい。
但し、カウントターゲットユニットは、他の論理アドレス及び他の物理アドレスに基づく単位で構成されてもよい。
例えば、カウントターゲットユニットは、物理ワード線及び/又は論理ワード線を用いて、構成されてもよい。論理ワード線LWLは、論理ブロックLBより小さい管理単位であり、物理ワード線PWLより大きい管理単位である。論理ブロックLBは、複数の論理ワード線LWLを含む。各論理ワード線LWLは、複数の物理ワード線PWLを含む。
本実施形態のメモリシステムにおいて、データの管理の最小単位は、例えばクラスタである。それゆえ、読み出し動作の実行回数が、クラスタ毎にカウントされてもよい。
また、上述の実施形態において、2つのカウンタで読み出し動作の実行回数がカウントされる例が示されている。
但し、3つ以上のカウンタが、階層化されてもよい。
但し、3つ以上のカウンタが、階層化されてもよい。
図22は、本実施形態のメモリシステムのカウント回路の構成例を示す図である。
図22において、カウント回路80は、階層化された3つのカウンタ810,820,830を含む。
カウンタ810は、物理ワード線WL毎の読み出し回数をカウントする。カウンタ830は論理ワード線LWL毎の読み出し回数をカウントする。カウンタ820は、論理ブロックLB毎の読み出し回数をカウントする。
カウンタ830は、複数のカウントレジスタ831を有する。複数のカウントレジスタ831の各々は、複数の論理ワード線LWLのうち対応する1つに関連付けられている。例えば、各論理ブロックLBに対応するように、カウンタグループCYがカウンタ830内に設定されている。カウンタグループCYは、同じ論理ブロックLBに属する複数の論理ワード線LWLに対応する複数のカウントレジスタ831を含む。
エントリ及びエントリユニットのカウント値は、例えば、物理ブロックPBの読み出し回数、論理ワード線LWLの読み出し回数、及び論理ブロックLBの読み出し回数の順序で、各カウントターゲットユニットのしきい値に応じて、各カウンタ810,830,820において更新される。但し、カウント値の更新は、各カウンタ810,830,820で実質的に同時に実行されてもよい。
このように、実施形態のメモリシステムは、階層化された3つ以上のカウンタを含むカウント回路を用いて、3つ以上の互いに異なるカウントターゲットユニットの読み出し回数をカウントできる。
(8) 第8の実施形態
図23及び図24を参照して、第8の実施形態のメモリシステムについて説明する。
図23及び図24を参照して、第8の実施形態のメモリシステムについて説明する。
上述の実施形態において、各カウントターゲットユニットに対して設定されたしきい値及び/又は読み出し回数の増加量は、カウントターゲットユニットの使用状況に応じて制御されてもよい。
図23は、本実施形態のメモリシステムを説明するための模式図である。
図23に示されるように、各物理ブロックPBの書き込み/消去(P/E)サイクル数が、RAM74内の管理テーブル(以下では、P/Eサイクル管理テーブルともよばれる)TBLxに格納されている。例えば、インデックス#fの物理ブロックPBにおいて、書き込み/消去サイクル数は“C1”である。インデックス#gの物理ブロックPBにおいて、書き込み/消去サイクル数は“C2”である。
ここで、プログラム/消去サイクル数に関するしきい値ThrP/Eは“C1”より大きく、“C2”より小さいとする。
プログラム/消去サイクル数の多い物理ブロック(すなわち、使用頻度の高い物理ブロック)において、メモリセルのトンネル絶縁膜の劣化が生じる傾向がある。このため、読み出しディスターブが生じやすい。
読み出しディスターブの影響の大きさを加味して、プロセッサ71は、プログラム/消去サイクル数が多い物理ブロックPB(BLK#g)を含む論理ブロックLBに対する読み出し回数のしきい値Thr2を、プログラム/消去サイクル数が少ない物理ブロック(BLK#f)を含む論理ブロックLBに対する読み出し回数のしきい値Thr1より小さい値に設定する。
すなわち、物理ブロック#fのプログラム/消去サイクル数がC1である場合、プログラム/消去サイクル数C1はしきい値ThrP/Eより小さいので、しきい値突破処理のしきい値は“Thr1”として設定される。また、物理ブロック#gのプログラム/消去サイクル数がC2である場合、プログラム/消去サイクル数C2はしきい値ThrP/Eより大きいので、しきい値突破処理のしきい値は、“Thr1”より小さい“Thr2”として設定される。
これによって、本実施形態のメモリシステムは、使用頻度の高い物理ブロックPBにおける読み出しディスターブの影響を軽減できる。
設定されたプログラム/消去サイクル数に関するしきい値に対する大小関係に基づいて、読み出し回数に関するしきい値が設定されてもよい。
プログラム/消去サイクル数は、論理ブロック単位でカウントされてもよい。
プログラム/消去サイクル数は、論理ブロック単位でカウントされてもよい。
(9)第9の実施形態
図24は、本実施形態のメモリシステムを説明するための模式図である。
図24は、本実施形態のメモリシステムを説明するための模式図である。
カウントターゲットユニットに関する読み出し回数の増加量は、1より大きい値に設定されてもよい。
未書き込み領域を含む物理ブロック(以下では、オープンブロックとよばれる)は、未書き込み領域を含まない物理ブロック(以下では、クローズブロックとよばれる)より、読み出しディスターブが生じやすい場合がある。
未書き込み領域は、その領域内の1つ以上のワード線に関して、当該ワード線に接続されたメモリセルの全てが消去状態である領域である。
未書き込み領域は、その領域内の1つ以上のワード線に関して、当該ワード線に接続されたメモリセルの全てが消去状態である領域である。
本実施形態において、オープンブロックに対応するFineカウンタ810における読み出し回数の増加量は、クローズブロックの読み出し回数の増加量より大きくされる。
図24に示されるように、物理ブロック内の物理ワード線単位の書き込み状況が、RAM74内のテーブル(以下では、オープンブロックリストとよばれる)TBLyに格納されている。図24において、ハッチングが付された領域WAは書き込み領域に対応し、白抜きで示される領域NWAは未書き込み領域に対応する。
例えば、識別番号#BLKfの物理ブロックPBは、未書き込み領域を含まずに、書き込み領域WAのみで満たされているクローズブロックである。識別番号#BLKgの物理ブロックPBは、未書き込み領域NWAを含むオープンブロックである。この時、識別番号#BLKgはオープンブロックリストTBLyに含まれ、識別番号#BLKfはオープンブロックリストTBLyに含まれない。
例えば、識別番号#BLKfの物理ブロックPBは、未書き込み領域を含まずに、書き込み領域WAのみで満たされているクローズブロックである。識別番号#BLKgの物理ブロックPBは、未書き込み領域NWAを含むオープンブロックである。この時、識別番号#BLKgはオープンブロックリストTBLyに含まれ、識別番号#BLKfはオープンブロックリストTBLyに含まれない。
クローズブロックに対して読み出し動作が実行された場合において、プロセッサ71は、識別番号がオープンブロックリストTBLyに含まれているか否かに基づいて、クローズブロックに対応するエントリユニット(カウンタレジスタ)の読み出し回数Pに、“1”を加算する。
オープンブロックに対して読み出し動作が実行された場合において、プロセッサ71は、識別番号がオープンブロックリストTBLyに含まれているか否かに基づいて、オープンブロックに対応するエントリユニットの読み出し回数Qに、“1”より大きい値(例えば、“2”)を加算する。
これによって、本実施形態のメモリシステムは、未書き込み領域NWAを含む物理ブロックPBにおける読み出しディスターブの影響を軽減できる。
(10) その他
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1:メモリデバイス、2:コントローラ、71:プロセッサ、80:カウント回路、810,810A,820,830:カウンタ。
Claims (14)
- 複数の第1の単位と、前記複数の第1の単位を含む少なくとも1つの第2の単位と、を含むメモリセルアレイを有するメモリデバイスと、
前記複数の第1の単位における第1の読み出し回数をそれぞれカウントし、前記複数の第1の単位のうちの1つの第1の単位の、前記第1の読み出し回数が第1の値に達している場合に、前記1つの第1の単位を含む前記第2の単位に対する第2の回数を更新し、前記第2の回数が第2の値に達している場合に、前記第2の単位に含まれる少なくとも1つの前記第1の単位に記憶されているデータを書き換えるか否か判断するコントローラと、
を具備するメモリシステム。 - 前記コントローラは、
前記第1の読み出し回数をカウントする第1のカウンタと、
前記第2の回数をカウントする第2のカウンタと、
を含む、
請求項1に記載のメモリシステム。 - 前記コントローラは、
前記第1の単位の個数と同数の前記第1のカウンタを有し、
前記第2の単位の個数と同数の前記第2のカウンタを有する、
請求項2に記載のメモリシステム。 - 前記コントローラは、
前記複数の第1の単位の個数よりも少ない前記第1のカウンタを有し、
前記コントローラは、
前記複数の第1の単位のうち、読み出し対象となる第1の単位を動的に選択したことに応じて、前記第1のカウンタによる前記第1の読み出し回数のカウント対象となる前記第1の単位を動的に変更する、
請求項2に記載のメモリシステム。 - 前記コントローラは、前記第1の読み出し回数に関する第1のデータと、前記第1のデータが参照された時間を示す第2のデータと、を保持し、
前記コントローラは、前記第2のデータに応じて、前記第1のカウンタによる前記第1の読み出し回数のカウント対象となる前記第1の単位を動的に変更する、
請求項4に記載のメモリシステム。 - 前記複数の第1の単位の中から選択された前記第1の単位に消去動作が実行された時に、前記選択された第1の単位に対応する前記第1の読み出し回数の値がリセットされる、
請求項5に記載のメモリシステム。 - 前記第1の読み出し回数は、第1のデータサイズで示され、
前記第2の回数は、第2のデータサイズで示される、
請求項1乃至6のうちいずれか1項に記載のメモリシステム。 - 前記メモリデバイスは、前記メモリセルアレイ内に、1つ以上の物理ブロックを有し、
前記第1の単位は、前記物理ブロックに対応し、
前記第2の単位は、前記物理ブロックを複数含む論理ブロックに対応する、
請求項1乃至7のうちいずれか1項に記載のメモリシステム。 - 前記メモリセルアレイは、複数の第2の単位を含む第3の単位を少なくとも1つ含み、
前記コントローラはさらに、
前記複数の第2の単位のうちの1つの第2の単位の、第2の読み出し回数が第3の値に達している場合に、前記1つの第2の単位を含む前記第3の単位に対する第3の回数を更新し、
前記第3の回数が第4の値に達している場合に、前記第3の単位に含まれる少なくとも1つの前記第2の単位に記憶されているデータを書き換えるか否か判断する
請求項1乃至8のうちいずれか1項に記載のメモリシステム。 - 前記メモリデバイスは、前記メモリセルアレイ内に、1つ以上の物理ブロックを有し、前記1つ以上の物理ブロックのそれぞれは、複数の物理ワード線を有し、
前記第1の単位は、前記物理ワード線に対応し、
前記第2の単位は、前記物理ワード線を複数含む論理ワード線に対応する、
請求項9に記載のメモリシステム。 - 前記メモリデバイスは、前記メモリセルアレイ内に、1つ以上の物理ブロックを有し、前記1つ以上の物理ブロックのそれぞれは、複数の物理ワード線を有し、
前記第1の単位は、前記物理ワード線に対応し、
前記第2の単位は、前記物理ワード線を複数含む論理ワード線に対応し、
前記第3の単位は、前記論理ワード線を複数含む論理ブロックに対応する、
請求項9に記載のメモリシステム。 - 前記第1の値及び第2の値の少なくとも一方は、前記複数の第1の単位に対する消去回数に応じて変更される、
請求項1乃至11のうちいずれか1項に記載のメモリシステム。 - 前記複数の第1の単位のうちデータの未書き込み領域を含む第1の単位に対して読み出し動作が行われた場合の前記第1の読み出し回数の増加量は、前記複数の第1の単位のうちデータの未書き込み領域を含まない第1の単位に対して読み出し動作が行われた場合の前記第1の読み出し回数の増加量より大きい、
請求項1乃至12のうちいずれか1項に記載のメモリシステム。 - 複数の第1の単位と、前記複数の第1の単位を含む少なくとも1つの第2の単位と、を含むメモリセルアレイを有するメモリデバイスと、
前記複数の第1の単位における第1の読み出し回数をそれぞれカウントし、前記複数の第1の単位のうちの1つの第1の単位の、前記第1の読み出し回数が第1の値に達している場合に、前記1つの第1の単位を含む前記第2の単位に対する第2の回数を更新し、前記第1の読み出し回数と前記第2の回数との合計値が第2の値に達している場合に、前記第2の単位に含まれる少なくとも1つの前記第1の単位に記憶されているデータを書き換えるか否か判断するコントローラと、
を具備するメモリシステム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019196427A JP2021071776A (ja) | 2019-10-29 | 2019-10-29 | メモリシステム |
US17/002,173 US11422746B2 (en) | 2019-10-29 | 2020-08-25 | Memory system having memory device and controller |
US17/858,294 US11693603B2 (en) | 2019-10-29 | 2022-07-06 | Memory system managing number of read operations using two counters |
US18/318,078 US20230280943A1 (en) | 2019-10-29 | 2023-05-16 | Memory system managing number of read operations using two counters |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019196427A JP2021071776A (ja) | 2019-10-29 | 2019-10-29 | メモリシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021071776A true JP2021071776A (ja) | 2021-05-06 |
Family
ID=75586779
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019196427A Pending JP2021071776A (ja) | 2019-10-29 | 2019-10-29 | メモリシステム |
Country Status (2)
Country | Link |
---|---|
US (3) | US11422746B2 (ja) |
JP (1) | JP2021071776A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200141304A (ko) * | 2019-06-10 | 2020-12-18 | 에스케이하이닉스 주식회사 | 반도체 장치 및 반도체 장치의 동작 방법 |
US11579797B2 (en) * | 2021-04-29 | 2023-02-14 | Micron Technology, Inc. | Memory sub-system refresh |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9176800B2 (en) | 2011-08-31 | 2015-11-03 | Micron Technology, Inc. | Memory refresh methods and apparatuses |
US9230689B2 (en) | 2014-03-17 | 2016-01-05 | Sandisk Technologies Inc. | Finding read disturbs on non-volatile memories |
US9530517B2 (en) | 2015-05-20 | 2016-12-27 | Sandisk Technologies Llc | Read disturb detection in open blocks |
KR102391514B1 (ko) * | 2015-11-04 | 2022-04-27 | 삼성전자주식회사 | 메모리 장치 및 메모리 장치의 동작 방법 |
TWI584289B (zh) * | 2016-01-20 | 2017-05-21 | 大心電子(英屬維京群島)股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
JP2020035504A (ja) * | 2018-08-30 | 2020-03-05 | キオクシア株式会社 | メモリシステム |
JP7158965B2 (ja) * | 2018-09-14 | 2022-10-24 | キオクシア株式会社 | メモリシステム |
-
2019
- 2019-10-29 JP JP2019196427A patent/JP2021071776A/ja active Pending
-
2020
- 2020-08-25 US US17/002,173 patent/US11422746B2/en active Active
-
2022
- 2022-07-06 US US17/858,294 patent/US11693603B2/en active Active
-
2023
- 2023-05-16 US US18/318,078 patent/US20230280943A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11693603B2 (en) | 2023-07-04 |
US20230280943A1 (en) | 2023-09-07 |
US11422746B2 (en) | 2022-08-23 |
US20220342606A1 (en) | 2022-10-27 |
US20210124529A1 (en) | 2021-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11507500B2 (en) | Storage system having a host directly manage physical data locations of storage device | |
JP5728672B2 (ja) | ハイブリッドメモリ管理 | |
US10324788B2 (en) | Memory system | |
KR20200063257A (ko) | 동적 l2p 캐시 | |
US20180107391A1 (en) | Storage system having a host that manages physical data locations of storage device | |
US20230280943A1 (en) | Memory system managing number of read operations using two counters | |
US10410738B2 (en) | Memory system and control method | |
US11262939B2 (en) | Memory system, memory controller, and operation method | |
US9798475B2 (en) | Memory system and method of controlling nonvolatile memory | |
KR20080075608A (ko) | 메모리 맵 테이블 서치 타임을 최소화 또는 줄일 수 있는방법 및 그에 따른 반도체 메모리 장치 | |
US11163494B2 (en) | Memory system, memory controller and operating method | |
US11842073B2 (en) | Memory controller and operating method thereof | |
CN111858390A (zh) | 存储器系统和操作存储器系统的方法 | |
US11409470B2 (en) | Memory system, memory controller, and method of operating memory system | |
US20210034541A1 (en) | Memory system, memory control device, and memory control method | |
US20230221895A1 (en) | Memory system and operating method of memory system storing doorbell information in the buffer memory | |
KR20210012123A (ko) | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 | |
CN112783435A (zh) | 存储设备和操作存储设备的方法 | |
US20240143192A1 (en) | Memory system and operating method thereof | |
US11461232B2 (en) | Memory system and operating method of memory system | |
US11636007B2 (en) | Memory system and operating method thereof for flushing data in data cache with parity | |
US11709610B2 (en) | Memory system, memory controller and operating method | |
US11307807B2 (en) | Memory system, memory controller, and method for operating memory system for determining read biases for read retry operation | |
US11544204B2 (en) | Memory system, memory controller and method for operating memory controller | |
TW202316265A (zh) | 記憶體系統及記憶體系統的操作方法 |