JP2021190150A - メモリシステム及びメモリコントローラ - Google Patents
メモリシステム及びメモリコントローラ Download PDFInfo
- Publication number
- JP2021190150A JP2021190150A JP2020096428A JP2020096428A JP2021190150A JP 2021190150 A JP2021190150 A JP 2021190150A JP 2020096428 A JP2020096428 A JP 2020096428A JP 2020096428 A JP2020096428 A JP 2020096428A JP 2021190150 A JP2021190150 A JP 2021190150A
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- management information
- controller
- data latch
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
-
- 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
- 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/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits or methods to verify correct programming of nonvolatile memory cells
-
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/564—Miscellaneous aspects
- G11C2211/5642—Multilevel memory with buffers, latches, registers at input or output
-
- H—ELECTRICITY
- H10—SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
- H10B—ELECTRONIC MEMORY DEVICES
- H10B43/00—EEPROM devices comprising charge-trapping gate insulators
- H10B43/20—EEPROM devices comprising charge-trapping gate insulators characterised by three-dimensional arrangements, e.g. with cells on different height levels
- H10B43/23—EEPROM devices comprising charge-trapping gate insulators characterised by three-dimensional arrangements, e.g. with cells on different height levels with source and drain on different levels, e.g. with sloping channels
- H10B43/27—EEPROM devices comprising charge-trapping gate insulators characterised by three-dimensional arrangements, e.g. with cells on different height levels with source and drain on different levels, e.g. with sloping channels the channels comprising vertical portions, e.g. U-shaped channels
-
- H—ELECTRICITY
- H10—SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
- H10B—ELECTRONIC MEMORY DEVICES
- H10B69/00—Erasable-and-programmable ROM [EPROM] devices not provided for in groups H10B41/00 - H10B63/00, e.g. ultraviolet erasable-and-programmable ROM [UVEPROM] devices
Abstract
【課題】管理情報を格納するRAM領域を十分に有しないメモリコントローラにおいても管理情報を小さなレイテンシで読み出すことができるメモリシステムを提供する。【解決手段】メモリシステム1は、不揮発性のメモリセルアレイ110と、データの読み出し及び書き込みを制御するコントローラ200とを有する。カラムデコーダ140は、コントローラ200とメモリセルアレイ110との間でデータの入出力のために用いられるデータラッチ群XDLと、保持されたデータが、コントローラ200によりメモリセルアレイ110からデータが読み出されるときに、維持されるデータラッチ群ADLと、を有する。コントローラ200は、メモリセルアレイ110からのデータの読み出し処理を実行するとき又は実行をする前に、データの読み出しのために用いる管理情報MIを、データラッチ群ADLに格納する。【選択図】図1
Description
本発明の実施形態は、メモリシステム及びメモリコントローラに関する。
不揮発性メモリにおいて、データの読み出し等のときに使用される管理情報は、不揮発性メモリの一部の格納領域に格納され、メモリコントローラの管理するRAM領域にコピーされて、使用される。管理情報がRAM領域に格納されているので、メモリコントローラは、管理情報を高速に読み出して使用することができる。
管理情報のデータサイズが大きくなると、大きなデータサイズのRAM領域が必要となるが、メモリコントローラに十分なサイズのRAM領域を設けることが出来ない場合がある。
そこで、実施形態は、管理情報を格納するRAM領域を十分に有しないメモリコントローラにおいても管理情報を小さなレイテンシで読み出すことができるメモリシステム及びメモリコントローラを提供することを目的とする。
実施形態のメモリシステムは、記憶領域を有する不揮発性のメモリと、前記ページ単位での前記データの読み出し及び書き込みを制御するコントローラと、前記コントローラと前記メモリとの間で前記データの入出力のために用いられる第1のデータラッチ群と、保持されたデータが、前記コントローラにより前記メモリから前記データが読み出されるときに、維持される第2のデータラッチ群と、を有し、前記コントローラは、前記メモリからの前記データの読み出し処理を実行するとき又は実行をする前に、前記データの読み出しのために用いる管理情報を、前記第2のデータラッチ群に格納する。
以下、図面を参照して実施形態を説明する。
(第1実施形態)
第1実施形態に係るメモリシステムについて説明する。以下では、半導体記憶装置としてNAND型フラッシュメモリを備えたメモリシステムを例に挙げて説明する。
1.構成
[メモリシステムの全体構成]
まず、本実施形態に係るメモリシステムの大まかな全体構成について、図1を用いて説明する。
(第1実施形態)
第1実施形態に係るメモリシステムについて説明する。以下では、半導体記憶装置としてNAND型フラッシュメモリを備えたメモリシステムを例に挙げて説明する。
1.構成
[メモリシステムの全体構成]
まず、本実施形態に係るメモリシステムの大まかな全体構成について、図1を用いて説明する。
図1は、本実施形態に関わるメモリシステムの構成を説明するためのブロック図である。図示するようにメモリシステム1は、NAND型フラッシュメモリ100とメモリコントローラ(以下、単にコントローラともいう)200とを備えている。NAND型フラッシュメモリ100とコントローラ200とは、例えば1枚の基板上に形成された半導体装置であり、その半導体装置は、例としてはSDカードのようなメモリカードや、SSD(ソリッドステートドライブ)等に使用される。
不揮発性メモリであるNAND型フラッシュメモリ100は複数のメモリセルを備え、データを不揮発に記憶する。コントローラ200は、NANDバスによってNAND型フラッシュメモリ100に接続され、ホストバスによってホスト機器300に接続される。そしてコントローラ200は、NAND型フラッシュメモリ100を制御し、またホスト機器300から受信した要求に応答して、NAND型フラッシュメモリ100にアクセスするメモリコントローラである。ホスト機器300は、例えばデジタルカメラやパーソナルコンピュータ等であり、ホストバスは、例えばSDインターフェースに従ったバスである。NANDバスは、NANDインターフェースに従った信号の送受信を行うバスである。
NANDインターフェース(I/F)回路250を介して、NAND型フラッシュメモリ100とコントローラ200間で各種信号が送受信される。チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、及びリードイネーブル信号REnが、コントローラ200からNAND型フラッシュメモリ100へ供給される。レディ/ビジー信号RBnは、NAND型フラッシュメモリ100からコントローラ200へ供給される。入出力信号I/Oは、コントローラ200からNAND型フラッシュメモリ100間で送受信される。
チップイネーブル信号CEnは、NAND型フラッシュメモリ100をイネーブルにするための信号であり、lowレベルでアサートされる。コマンドラッチイネーブル信号CLE及びアドレスラッチイネーブル信号ALEは、入出力信号I/Oがそれぞれコマンド及びアドレスであることをNAND型フラッシュメモリ100に通知する信号である。ライトイネーブル信号WEnは、lowレベルでアサートされ、入出力信号I/OをNAND型フラッシュメモリ100に書き込むことをNAND型フラッシュメモリ100に通知する信号である。リードイネーブル信号REnも、lowレベルでアサートされ、NAND型フラッシュメモリ100からの読み出しデータを入出力信号I/Oに出力させるための信号である。レディ/ビジー信号RBnは、NAND型フラッシュメモリ100がレディ状態(コントローラ200からの命令を受信出来る状態)であるか、それともビジー状態(コントローラ200からの命令を受信出来ない状態)であるかを示す信号であり、lowレベルがビジー状態を示す。入出力信号I/Oは、例えば8ビットの信号である。そして入出力信号I/Oは、NAND型フラッシュメモリ100とコントローラ200との間で送受信されるデータの実体であり、コマンド、アドレス、書き込みデータ、及び読み出しデータ等である。
[コントローラの構成)
次に、コントローラ200の構成の詳細について説明する。図1に示すようにコントローラ200は、ホストインターフェース(I/F)回路210、内蔵メモリであるランダムアクセスメモリ(以下、RAMという)220、中央処理装置(CPU)を有するプロセッサ230、バッファメモリ240、NANDインターフェース回路250、及びECC(Error Checking and Correcting)回路260を備えた回路である。
[コントローラの構成)
次に、コントローラ200の構成の詳細について説明する。図1に示すようにコントローラ200は、ホストインターフェース(I/F)回路210、内蔵メモリであるランダムアクセスメモリ(以下、RAMという)220、中央処理装置(CPU)を有するプロセッサ230、バッファメモリ240、NANDインターフェース回路250、及びECC(Error Checking and Correcting)回路260を備えた回路である。
ホストインターフェース回路210は、ホストバスを介してホスト機器300と接続され、ホスト機器300から受信した要求及びデータを、それぞれプロセッサ230及びバッファメモリ240に転送する。またプロセッサ230のコマンドに応答して、バッファメモリ240内のデータをホスト機器300へ転送する。
RAM220は、例えばDRAMやSRAM等の半導体メモリであり、プロセッサ230の作業領域として使用される。そしてRAM220は、NAND型フラッシュメモリ100を管理するためのファームウェアや、管理情報MIを保持する。管理情報MIは、後述する、ルックアップテーブル(LUT)、シフトテーブル情報(TBL)等である。シフトテーブル情報TBLは、シフト情報を含む。シフト情報は、コントローラ200がデータの読み出し処理を実行するときに、データの読み出しレベルをシフトするための情報である。
プロセッサ230は、コントローラ200全体の動作を制御する。例えばプロセッサ230は、ホスト機器300からデータ要求を受信した際には、それに応答して、NANDインターフェース回路250に対して読み出しコマンドを発行する。ホスト機器300からのデータ書き込み要求及びデータ消去要求を受信した際も、プロセッサ230は、受信した要求に対応するコマンドをNANDインターフェース回路250に対して同様に発行する。また、プロセッサ230は、ウェアレベリング等、NAND型フラッシュメモリ100を管理するための様々な処理を実行する。
バッファメモリ240は、書き込みデータや読み出しデータを一時的に保持する。
NANDインターフェース回路250は、NANDバスを介してNAND型フラッシュメモリ100と接続され、NAND型フラッシュメモリ100との通信を司る。そしてNANDインターフェース回路250は、プロセッサ230から受信したコマンドに基づき、コマンド、データなどを含む種々の信号を、NAND型フラッシュメモリ100へ送信し、またNAND型フラッシュメモリ100から各種信号及びデータを受信する。
NANDインターフェース回路250は、プロセッサ230から受信したコマンドに基づき、チップイネーブル信号CEn、コマンドラッチイネーブル信号CLE、アドレスラッチイネーブル信号ALE、ライトイネーブル信号WEn、及びリードイネーブル信号REnをNAND型フラッシュメモリ100へ出力する。また、データの書き込み時には、NANDインターフェース回路250は、プロセッサ230で発行された書き込みコマンド、及びバッファメモリ240内の書き込みデータを、入出力信号I/OとしてNAND型フラッシュメモリ100へ転送する。更に、データの読み出し時には、NANDインターフェース回路250は、プロセッサ230で発行された読み出しコマンドを、入出力信号I/OとしてNAND型フラッシュメモリ100へ転送し、更にNAND型フラッシュメモリ100から読み出されたデータを入出力信号I/Oとして受信し、これをバッファメモリ240へ転送する。
ECC回路260は、NAND型フラッシュメモリ100に記憶されるデータに関するエラー検出及びエラー訂正処理を行う。すなわちECC回路260は、データの書き込み時にはエラー訂正符号を生成して、これを書き込みデータに付与し、データの読み出し時には、エラー訂正をしながらデータを復号する。
[NAND型フラッシュメモリの構成]
次に、NAND型フラッシュメモリ100の構成について説明する。図1に示すようにNAND型フラッシュメモリ100は、メモリセルアレイ110、ロウデコーダ120、ドライバ回路130、カラムデコーダ140、アドレスレジスタ150、コマンドレジスタ160、及びシーケンサ170を備える。
[NAND型フラッシュメモリの構成]
次に、NAND型フラッシュメモリ100の構成について説明する。図1に示すようにNAND型フラッシュメモリ100は、メモリセルアレイ110、ロウデコーダ120、ドライバ回路130、カラムデコーダ140、アドレスレジスタ150、コマンドレジスタ160、及びシーケンサ170を備える。
メモリセルアレイ110は、ロウ及びカラムに対応付けられた複数の不揮発性のメモリセルを含む複数のブロックBLKを備えている。図1では一例として4つのブロックBLK0〜BLK3が図示されている。そしてメモリセルアレイ110は、コントローラ200から与えられたデータを不揮発に記憶する。
ロウデコーダ120は、アドレスレジスタ150内のブロックアドレスBAに基づいてブロックBLK0〜BLK3のいずれかを選択し、更に選択したブロックBLKにおけるワード線WLを選択する。
ドライバ回路130は、アドレスレジスタ150内のページアドレスPAに基づいて、選択されたブロックBLKに対して、ロウデコーダ120を介して電圧を供給する。
カラムデコーダ140は、複数のデータラッチ回路及び複数のセンスアンプを含む。各センスアンプは、データの読み出し時には、メモリセルアレイ110から読み出されたデータをセンスし、必要な演算を行う。そして、カラムデコーダ140は、後述するデータラッチ回路XDLを介してこのデータDATをコントローラ200に出力する。カラムデコーダ140は、データの書き込み時には、コントローラ200から受信した書き込みデータDATを、データラッチ回路XDLにおいて受けた後に、メモリセルアレイ110に対する書き込み動作を実行する。
アドレスレジスタ150は、コントローラ200から受信したアドレスADDを保持する。このアドレスADDには、前述のブロックアドレスBAとページアドレスPAとが含まれる。コマンドレジスタ160は、コントローラ200から受信したコマンドCMDを保持する。
シーケンサ170は、コマンドレジスタ160に保持されたコマンドCMDに基づき、NAND型フラッシュメモリ100全体の動作を制御する。
次に、上記ブロックBLKの構成について図2を用いて説明する。図2は、本実施形態に関わるメモリセルアレイの構成を説明するための回路図である。図示するように、1つのブロックBLKは例えば4つのストリングユニットSU(SU0〜SU3)を含む。また各々のストリングユニットSUは、複数のNANDストリング6を含む。
NANDストリング6の各々は、例えば8個のメモリセルトランジスタMT(MT0〜MT7)及び2個の選択トランジスタST1、ST2を含んでいる。各メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。そして複数(例えば8個)のメモリセルトランジスタMTは、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されている。
ストリングユニットSU0〜SU3の各々における選択トランジスタST1のゲートは、それぞれセレクトゲート線SGD0〜SGD3に接続される。これに対してストリングユニットSU0〜SU3の各々における選択トランジスタST2のゲートは、例えばセレクトゲート線SGSに共通接続される。もちろん、ストリングユニットSU0〜SU3の各々における選択トランジスタST2のゲートは、ストリングユニット毎に異なるセレクトゲート線SGS0〜SGS3に接続されても良い。また、同一のブロックBLK内にあるメモリセルトランジスタMT0〜MT7の制御ゲートはそれぞれワード線WL0〜WL7に共通接続される。
また、メモリセルアレイ110内において同一列にある複数のNANDストリング6の選択トランジスタST1のドレインは、ビット線BL(BL0〜BL(K−1)、但しKは2以上の自然数)に共通接続される。すなわちビット線BLは、複数のブロックBLK間で複数のNANDストリング6を共通に接続する。更に、複数の選択トランジスタST2のソースは、ソース線SLに共通に接続されている。
つまり、各ストリングユニットSUは、互いに異なる複数のビット線BLに接続され、且つ同一のセレクトゲート線SGDに接続された複数のNANDストリング6を複数含む。また、各ブロックBLKは、各ワード線WLを共通にする複数のストリングユニットSUを複数含む。そしてメモリセルアレイ110は、各ビット線BLが共通に接続された複数のブロックBLKの集合体である。
図3は、1つのブロックBLKの一部領域の断面図である。図示するように、p型ウェル領域10上に、複数のNANDストリング6が形成されている。すなわち、p型ウェル領域10上には、セレクトゲート線SGSとして機能する例えば4層の配線層11、ワード線WL0〜WL7として機能する8層の配線層12、及びセレクトゲート線SGDとして機能する例えば4層の配線層13が、順次積層されている。積層された配線層間には、図示せぬ絶縁膜が形成されている。
そして、これらの配線層13、12、11を貫通してp型ウェル領域10に達するピラー状の導電体14が複数形成されている。各導電体14の側面には、ゲート絶縁膜15、電荷蓄積層(絶縁膜または導電膜)16、及びブロック絶縁膜17が順次形成され、これらによって複数のメモリセルトランジスタMT、並びに選択トランジスタST1及びST2が形成されている。各導電体14は、NANDストリング6の電流経路として機能し、各トランジスタのチャネルが形成される領域となる。そして各導電体14の上端は、ビット線BLとして機能する金属配線層18に接続される。
p型ウェル領域10の表面領域内には、n+ 型不純物拡散層19が形成されている。n+ 型不純物拡散層19上にはコンタクトプラグ20が形成され、コンタクトプラグ20は、ソース線SLとして機能する金属配線層21に接続される。更に、p型ウェル領域10の表面領域内には、p+ 型不純物拡散層22が形成されている。p+ 型不純物拡散層22上にはコンタクトプラグ23が形成され、コンタクトプラグ23は、ウェル配線CPWELLとして機能する金属配線層24に接続される。ウェル配線CPWELLは、p型ウェル領域10を介して導電体14に電位を印加するための配線である。
以上の構成が、図3を記載した紙面の奥行き方向に複数配列されており、奥行き方向に並ぶ複数のNANDストリング6の集合によってストリングユニットSUが形成される。
本例では、1つのメモリセルトランジスタMTが例えば3ビットデータを保持可能である。すなわち、NAND型フラッシュメモリ100は、いわゆるTLC(Triple Level Cell)方式の半導体記憶装置である。この3ビットデータを、下位ビットからそれぞれ下位(Lower)ビット、中位(Middle)ビット、及び上位(Upper)ビットと呼ぶことにする。そして、一つのストリングユニット中の同一のワード線WLに接続された複数のメモリセルトランジスタMTの保持する下位ビットの集合を下位ページと呼び、中位ビットの集合を中位ページと呼び、上位ビットの集合を上位ページと呼ぶ。一つのストリング中の一つのワード線に接続された複数のメモリセルトランジスタMTは、下位、中位及び上位ビットを保持する一つのページユニットを構成する。つまり、各ページユニットには、3ページが割り当てられる。よって、4つのストリングユニットSUを有しかつ各ストリングユニットSUが8本のワード線WLを含むブロックBLKの場合、各ブロックBLKは96ページ分の容量を有することになる。あるいは言い換えるならば、“ページ”とは、一つのストリングユニット中の同一ワード線WLに接続された複数のメモリセルトランジスタMTによって形成されるメモリ空間の一部、と定義することも出来る。データの書き込みは、ページユニット単位で行われ、データの読み出しは、このページ毎に行われる(この読み出し方法を、page−by−page readingと呼ぶ)。
またデータの消去は、ブロックBLK単位、またはブロックBLKよりも小さい単位で行うことが出来る。消去方法に関しては、例えば“NONVOLATILE SEMICONDUCTOR MEMORY DEVICE” という2011年9月18日に出願された米国特許出願13/235,389号に記載されている。また、“NON−VOLATILE SEMICONDUCTOR STORAGE DEVICE”という2010年1月27日に出願された米国特許出願12/694,690号に記載されている。更に、“NONVOLATILE SEMICONDUCTOR MEMORY DEVICE AND DATA ERASE METHOD THEREOF”という2012年5月30日に出願された米国特許出願13/483,610号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
更に、メモリセルアレイ110の構成についてはその他の構成であっても良い。すなわちメモリセルアレイ110の構成については、例えば、“THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY” という2009年3月19日に出願された米国特許出願12/407,403号に記載されている。また、“THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY”という2009年3月18日に出願された米国特許出願12/406,524号、“NON−VOLATILE SEMICONDUCTOR STORAGE DEVICE AND METHOD OF MANUFACTURING THE SAME” という201年3月25日に出願された米国特許出願12/679,991号、及び“SEMICONDUCTOR MEMORY AND METHOD FOR MANUFACTURING THE SAME” という2009年3月23日に出願された米国特許出願12/532,030号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
後述するように、メモリセルアレイ110の一部の格納領域(後述する管理情報格納領域MIA)には、後述する管理情報MIが格納される。
[カラムデコーダの構成)
次に、カラムデコーダ140の構成について図4を用いて説明する。図4は、第1実施形態に関わるカラムデコーダ140とストリングユニットSU0の回路図である。
[カラムデコーダの構成)
次に、カラムデコーダ140の構成について図4を用いて説明する。図4は、第1実施形態に関わるカラムデコーダ140とストリングユニットSU0の回路図である。
図示するようにカラムデコーダ140は、各々がビット線BL毎に設けられた複数のセンスユニットSAU(SAU0〜SAU(K−1))を備えている。
複数のセンスユニットSAUの各々は、センスアンプSA、演算部OP、並びに4つのデータラッチ回路(以下、単にデータラッチともいう)ADL、BDL、CDL及びXDLを備えている。各センスアンプSAは、さらに、データラッチSDLを含む。
各センスアンプSAは、対応するビット線BLに読み出されたデータをセンスし、また書き込みデータに応じてビット線BLに電圧を印加する。すなわちセンスアンプSAは、ビット線BLを直接的に制御するモジュールである。そしてセンスアンプSAには、読み出し時には例えばシーケンサ170によってストローブ信号STBが与えられる。センスアンプSAは、その内部にノードSEN及びデータラッチSDL(図4には図示せず)を含む。ノードSENは、選択ワード線WLに接続されたメモリセルトランジスタMTがオン状態となるかオフ状態となるかにより、その電位が変動する。そして、ストローブ信号STBがアサートされるタイミングおけるノードSENの電位に応じて、メモリセルトランジスタMTがオンしたかオフしたかが確定され、その結果が“0”または“1”データとして、内部のデータラッチ(データラッチSDL)に保持される。そして、内部のデータラッチSDLに保持されたデータは、更にデータラッチADL、BDL、CDL、及びXDLのいずれかにコピーされる。
データラッチADL、BDL、及びCDLは、書き込みデータを一時的に保持する。すなわち、データラッチADL、BDL、CDLは、コントローラ200によるNAND型フラッシュメモリ100へのデータの書き込みのために用いられる。演算部OPは、センスアンプSA、並びにデータラッチADL、BDL、CDL、及びXDLに保持されているデータにつき、否定(NOT)演算、論理和(OR)演算、論理積(AND)演算、排他的論理和(XOR)演算、否定排他的論理和(XNOR)演算など、種々の論理演算を行う。例えば演算部OPは、センスアンプSA内部の複数のデータラッチSDLからコピーされたデータについての演算を行うことで、ページデータを生成する。
これらのセンスアンプSA、データラッチADL、BDL、CDL、及び演算部OPは、互いにデータを送受信可能なようにバスによって接続されている。そしてこのバスは、更にデータラッチXDLに接続されている。
カラムデコーダ140におけるデータの入出力は、複数のデータラッチXDLを介して行われる。すなわち、コントローラ200から受信したデータは、複数のデータラッチXDLを介して、複数のデータラッチADL、BDL、及びCDL、または複数のセンスアンプSAに転送される。また複数のデータラッチADL、BDL、及びCDL、または複数のセンスアンプSAのデータは、複数のデータラッチXDLを介してコントローラ200へ送信される。そして複数のデータラッチXDLは、NAND型フラッシュメモリ100のキャッシュメモリとして機能する。従って、複数のデータラッチADL、BDL、及びCDLが使用中であったとしても、複数のデータラッチXDLが空いていれば、NAND型フラッシュメモリ100はレディ状態となることが出来る。
データの読み出し及び書き込みは、ページ単位で行われる。カラムデコーダ140は、各々が1ページ分のデータを格納する複数のデータラッチADL、BDL、CDL、XDL、SDLを有する。
以下、図4に示すように、1ページ分のデータを格納する複数のデータラッチXDLを、データラッチ群XDLといい、1ページ分のデータを格納する複数のデータラッチADLを、データラッチ群ADLといい、1ページ分のデータを格納する複数のデータラッチBDLを、データラッチ群BDLといい、1ページ分のデータを格納する複数のデータラッチCDLを、データラッチ群CDLといい、1ページ分のデータを格納する複数のデータラッチSDLを、データラッチ群SDLという。すなわち、カラムデコーダ140は、各々が1ページ分のデータを格納する、データラッチ群XDL、データラッチ群ADL、データラッチ群BDL、データラッチ群CDL及びデータラッチ群SDLを有する。
よって、データラッチ群XDLは、コントローラ200とNAND型フラッシュメモリ100との間でデータの入出力のために用いられる複数のデータラッチ回路を構成する。また、各データラッチ群ADL、BDL、CDLは、データがコントローラ200によりNAND型フラッシュメモリ100へ書き込まれるときに使用され、データの読み出し時には使用されない。各データラッチ群ADL、BDL、CDLでは、保持されたデータが、コントローラ200がNAND型フラッシュメモリ100からデータを読み出すときに、維持される。
[メモリセルトランジスタの保持データと閾値電圧]
メモリセルトランジスタMTの保持データ、閾値電圧、及び各データの読み出しレベル(すなわち読み出し電圧)につき、図5を用いて説明する。図5は、各メモリセルトランジスタMTの取り得るデータ、閾値電圧分布、及び読み出し時に用いる電圧について示したダイアグラムである。
[メモリセルトランジスタの保持データと閾値電圧]
メモリセルトランジスタMTの保持データ、閾値電圧、及び各データの読み出しレベル(すなわち読み出し電圧)につき、図5を用いて説明する。図5は、各メモリセルトランジスタMTの取り得るデータ、閾値電圧分布、及び読み出し時に用いる電圧について示したダイアグラムである。
前述のように、メモリセルトランジスタMTは閾値電圧に応じて8個の状態を取ることが出来る。この8個の状態を、閾値電圧の低いものから順に、“Er”状態、“A”状態、“B”状態、“C”状態、・・・“G”状態と呼ぶことにする。
“Er”状態のメモリセルトランジスタMTの閾値電圧は、電圧VA未満であり、データの消去状態に相当する。“A”状態のメモリセルトランジスタMTの閾値電圧は、電圧VA以上であり且つ電圧VB(>VA)未満である。“B”状態のメモリセルトランジスタMTの閾値電圧は、電圧VB以上であり且つ電圧VC(>VB)未満である。“C”状態のメモリセルトランジスタMTの閾値電圧は、電圧VC以上であり且つ電圧VD(>VC)未満である。“D”状態のメモリセルトランジスタMTの閾値電圧は、電圧VD以上であり且つ電圧VE(>VD)未満である。“E”状態のメモリセルトランジスタMTの閾値電圧は、電圧VE以上であり且つ電圧VF(>VE)未満である。“F”状態のメモリセルトランジスタMTの閾値電圧は、電圧VF以上であり且つ電圧VG(>VF)未満である。“G”状態のメモリセルトランジスタMTの閾値電圧は、電圧VG以上であり且つ電圧VREAD未満である。このように分布する8個の状態のうちで、“G”状態が、閾値電圧の最も高い状態である。なお、電圧VREADは、読み出し動作時において非選択ワード線WLに印加される電圧であり、保持データにかかわらずメモリセルトランジスタMTをオンさせる電圧である。電圧VA〜VGは、総称して電圧VCGRVとも言う。
また上記閾値電圧分布は、前述の下位ビット、中位ビット、及び上位ビットからなる3ビット(3ページ)データを書き込むことで実現される。すなわち、上記“Er”状態から“G”状態と、下位ビット、中位ビット、及び上位ビットとの関係は、次の通りである。
“Er”状態:“111”(“上位/中位/下位”の順で表記)
“A”状態 :“110”
“B”状態 :“100”
“C”状態 :“000”
“D”状態 :“010”
“E”状態 :“011”
“F”状態 :“001”
“G”状態 :“101”
このように、閾値電圧分布において隣り合う2つの状態に対応するデータ間では、3ビットのうちの1ビットのみが変化する。
“Er”状態:“111”(“上位/中位/下位”の順で表記)
“A”状態 :“110”
“B”状態 :“100”
“C”状態 :“000”
“D”状態 :“010”
“E”状態 :“011”
“F”状態 :“001”
“G”状態 :“101”
このように、閾値電圧分布において隣り合う2つの状態に対応するデータ間では、3ビットのうちの1ビットのみが変化する。
従って、下位ビットを読み出す際には、下位ビットの値(“0”又は“1”)が変化する境界に相当する電圧を用いれば良く、このような境界に相当する電圧を用いることは中位ビット及び上位ビットでも同様である。
すなわち、図5に示すように、下位ページ読み出しは、“Er”状態と“A”状態とを区別する電圧VA、及び“D”状態と“E”状態とを区別する電圧VEを読み出しレベルとして用いる。電圧VA及びVEを用いた読み出し動作を、それぞれ読み出し動作AR及びERと呼ぶ。
読み出し動作ARは、メモリセルトランジスタMTの閾値電圧が電圧VA未満か否かを判定する。つまり、読み出し動作ARにより、消去状態のメモリセルトランジスタMTが特定される。読み出し動作ERは、メモリセルトランジスタMTの閾値電圧が電圧VE未満か否かを判定する。
中位ページ読み出しは、“A”状態と“B”状態とを区別する電圧VB、“C”状態と“D”状態とを区別する電圧VD、及び“E”状態と“F”状態との間の電圧VFを読み出しレベルとして用いる。電圧VB、VD、及びVFを用いた読み出し動作を、それぞれ読み出し動作BR、DR、及びFRと呼ぶ。
読み出し動作BRは、メモリセルトランジスタMTの閾値電圧が電圧VB未満か否かを判定する。読み出し動作DRは、メモリセルトランジスタMTの閾値電圧が電圧VD未満か否かを判定する。読み出し動作FRは、メモリセルトランジスタMTの閾値電圧が電圧VF未満か否かを判定する。
そして上位ページ読み出しは、“B”状態と“C”状態とを区別する電圧VC、及び“F”状態と“G”状態とを区別する電圧VGを読み出しレベルとして用いる。電圧VC及びVGを用いた読み出し動作を、それぞれ読み出し動作CR及びGRと呼ぶ。
読み出し動作CRは、メモリセルトランジスタMTの閾値電圧が電圧VC未満か否かを判定する。読み出し動作GRは、メモリセルトランジスタMTの閾値電圧が電圧VG未満か否かを判定する。つまり、読み出し動作GRにより、“G”状態のメモリセルトランジスタMTが特定される。
[管理情報]
メモリシステム1では、管理情報MIが用いられる。管理情報MIは、後述する、シフトテーブル情報TBL、ヒストリデータHD、ルックアップテーブルLUT等である。管理情報MIは、NAND型フラッシュメモリ100に記憶される。管理情報MIは、電源オン時に、NAND型フラッシュメモリ100からコントローラ200のRAM220にコピーされて使用される。後述するように、管理情報MIの一部(本実施形態ではシフト情報)は、NAND型フラッシュメモリ100中の少なくとも1つのデータラッチ群に格納される。
[管理情報]
メモリシステム1では、管理情報MIが用いられる。管理情報MIは、後述する、シフトテーブル情報TBL、ヒストリデータHD、ルックアップテーブルLUT等である。管理情報MIは、NAND型フラッシュメモリ100に記憶される。管理情報MIは、電源オン時に、NAND型フラッシュメモリ100からコントローラ200のRAM220にコピーされて使用される。後述するように、管理情報MIの一部(本実施形態ではシフト情報)は、NAND型フラッシュメモリ100中の少なくとも1つのデータラッチ群に格納される。
また、管理情報MIは、メモリセルトランジスタMT当たり1ビットのデータを書き込む書き込みモード(以下、SLCモードという)でメモリセルアレイ110の所定の格納領域(以下、管理情報格納領域という)MIAに書き込まれる。上述したように、本実施形態では、ホストから書き込まれるユーザデータは、メモリセルトランジスタMT当たり、3ビットのデータであるが、管理情報MIは、メモリセルトランジスタMT当たり、1ビットのデータであり、SLCモードでメモリセルアレイ110の管理情報格納領域MIAに書き込まれる。
以上のように、NAND型フラッシュメモリ100は、不揮発性のメモリであるメモリセルアレイ110を有する。メモリセルアレイ110は、複数の物理ブロックを有し、複数の物理ブロックのそれぞれはページ単位でアクセス可能な記憶領域を有する。
そして、コントローラ200は、メモリセルアレイ110の複数の物理ブロックに対してページ単位でのデータの読み出し制御を行い、ページユニット単位でのデータの書き込み制御を行う。
2.動作
次に、メモリシステムの書き込み動作及び読み出し動作について説明する。
2.動作
次に、メモリシステムの書き込み動作及び読み出し動作について説明する。
上述したように、コントローラ200は、ホスト機器300からの要求に応じて、NAND型フラッシュメモリ100に各種信号及びデータを所定のシーケンスに従って出力することにより、NAND型フラッシュメモリ100からのデータの読み出し及びNAND型フラッシュメモリ100へのデータの書き込みを行う。
[データ書き込み時の動作]
図6は、データの書き込み時のコマンドシーケンスを示す図である。図7及び図8は、データの書き込み時のコマンドシーケンスの実行に伴う、5つのデータラッチ群におけるデータの格納状況の変化を説明するための図である。図7及び図8は、データラッチ群毎に、書き込まれるデータ数Kに応じたデータの格納状況を示している。よって、図7及び図8の各帯状の枠の横幅は、データ数Kに応じた長さを示している。Kは、NAND型フラッシュメモリ100に対するデータの一回の読み出し動作及び一回の書き込み動作におけるデータ量に対応する。後述する図10等においても、各帯状の枠の横幅は、データ数Kに応じた長さを示している。
[データ書き込み時の動作]
図6は、データの書き込み時のコマンドシーケンスを示す図である。図7及び図8は、データの書き込み時のコマンドシーケンスの実行に伴う、5つのデータラッチ群におけるデータの格納状況の変化を説明するための図である。図7及び図8は、データラッチ群毎に、書き込まれるデータ数Kに応じたデータの格納状況を示している。よって、図7及び図8の各帯状の枠の横幅は、データ数Kに応じた長さを示している。Kは、NAND型フラッシュメモリ100に対するデータの一回の読み出し動作及び一回の書き込み動作におけるデータ量に対応する。後述する図10等においても、各帯状の枠の横幅は、データ数Kに応じた長さを示している。
ここでは、データの書き込みは、下位ビット、中位ビット、及び上位ビットの3ページ分のデータがデータラッチ群ADL、BDL及びCDLに書き込まれた後、シーケンサ170によりメモリセルアレイ110へのデータの書き込みのためのプログラム動作が実行される。
各コマンドは、8ビットの入出力信号I/Oにより、コントローラ200からNAND型フラッシュメモリ100へ供給される。プログラム動作は、ページユニット毎に行われる。ここでは、下位ビット、中位ビット、上位ビットの順で、書き込みのためのコマンドシーケンスのコマンド等がコントローラ200からNAND型フラッシュメモリ100へ出力される。各コマンドシーケンスにおいて、コントローラ200は、最初の2つのコマンドサイクルで2つのコマンドを出力し、5つのアドレスサイクルで5つのアドレスを出力し、その後の複数のサイクルで複数のデータを出力し、その後の1サイクルで1つのコマンドを出力する。コントローラ200は、図6のコマンドシーケンスSQ1、SQ2、SQ3の順にコマンド、アドレス及びデータをNAND型フラッシュメモリ100へ出力する。
コマンドシーケンスSQ1に示すように、コントローラ200は、まず、下位ビットへの書き込み予約を行うコマンド“c11”を入出力信号I/Oに出力する。コマンド“c11”が入出力信号I/Oに出力されたとき、図7のLS1で示すように各データラッチ群には、データが何ら格納されていない。図7において、斜線は、データが何ら格納されていない状態、あるいはデータが不定の状態を示す。
コマンド“c11”に続いて、コントローラ200は、コマンド“c21”を入出力信号I/Oに出力する。コマンド“c21”により、データラッチ群XDLの全てのデータラッチXDLがリセットされる。ここで、リセットとは、データラッチ群XDLの各データラッチXDLの値が「1」になることである。コマンド“c21”により、図7のLS2で示すようにデータラッチ群XDLのデータは、リセットされている。図7において空白で示すように、全てのデータラッチXDLのデータは、「1」となっている状態となる。
コントローラ200は、コマンド“c21”に続いて、5つのアドレスを入出力信号I/Oに出力する。最初の2つのアドレス“CAL1”及び“CAL2”はカラムアドレスであり、残りの3つのアドレス“RAL1”、“RAL2”及び“RAL3”はロウアドレスである。
5つのアドレスに続いて、コントローラ200は、複数のデータ“DL0”、“DL1”、・・・、“DL(K−1)”を入出力信号I/Oに出力する。上述したように、Kは、データ数を示す。入出力信号I/Oの各データは、指定されたアドレスに対応するカラムデコーダ140のセンスユニットSAUのデータラッチXDLに格納される。
図7のLS3は、複数のデータ“DL0”から“DL(K−1)”までのデータのデータラッチ群XDLへの途中の格納状態を、細かな斜線で示している。図7のLS4は、複数のデータ“DL0”から“DL(K−1)”の全てのデータが、データラッチ群XDLに格納された状態を示している。
コントローラ200は、複数のデータに続いて、コマンド“c22”を入出力信号I/Oに出力する。コマンド“c22”は、データラッチ群XDLのデータを別のデータラッチ群にコピーさせるコマンドである。
コマンド“c11”とコマンド“c22”の組み合わせにより、データラッチ群XDLのデータは、データラッチ群ADLへコピーされる。シーケンサ170は、コマンド“c11”と“c22”に基づいて、データラッチ群XDLのデータをデータラッチ群ADLへコピーする処理を行う。
図6のコマンドシーケンスSQ1において、長い白い矢印のタイミングは、データラッチ群XDLからデータラッチ群ADLへのデータコピーの開始タイミングを示し、短い矢印のタイミングは、データラッチ群XDLからデータラッチ群ADLへのデータコピーの完了タイミングを示す。データラッチ群XDLからデータラッチ群ADLへのデータコピーの間、レディ/ビジー信号RBnは、lowとなる。図7のLS5は、データラッチ群XDLの全てのデータがデータラッチ群ADLにコピーされた状態を示している。
以上により、図6において下位ビットの書き込み予約コマンドシーケンスSQ1が終了し、次に、中位ビットの書き込み予約コマンドシーケンスSQ2が実行される。
コマンドシーケンスSQ2では、コマンドシーケンスSQ1と同様に、2つのコマンド”c12”とコマンド“c21”に続いて5つのアドレスを入出力信号I/Oに出力する。5つのアドレスに続いてコマンド“c22”が入出力信号I/Oに出力される。
コマンド”c12”とコマンド“c22”の組み合わせによりにより、データラッチ群XDLのデータは、データラッチ群BDLへコピーされる。シーケンサ170は、コマンド“c12”と“c22”に基づいて、データラッチ群XDLのデータをデータラッチ群BDLへコピー転送する処理を行う。
図6のコマンドシーケンスSQ2において、長い白い矢印のタイミングは、データラッチ群XDLからデータラッチ群BDLへのデータコピー転送の開始タイミングを示し、短い矢印のタイミングは、データラッチ群XDLからデータラッチ群BDLへのデータコピー転送の完了タイミングを示す。データラッチ群XDLからデータラッチ群BDLへのデータコピーの間、レディ/ビジー信号RBnは、lowとなる。
コマンドシーケンスSQ2の後、上位ビットの書き込み予約、及び下位/中位/上位ビットの書き込み実行のためのコマンドシーケンスSQ3が実行される。
コマンドシーケンスSQ3では、コマンドシーケンスSQ1と同様に、2つのコマンド”c13”とコマンド“c21”に続いて5つのアドレスを入出力信号I/Oに出力する。5つのアドレスに続いてコマンド“c23”が入出力信号I/Oに出力される。コマンド“c23”は、データラッチ群XDLのデータを別のデータラッチ群へコピーさせ、その後、書き込み動作を実行するコマンドである。
コマンド”c13”とコマンド“c23”の組み合わせによりにより、データラッチ群XDLのデータは、データラッチ群CDLへコピーされる。シーケンサ170は、コマンド“c13”と“c23”に基づいて、データラッチ群XDLのデータをデータラッチ群CDLへコピー転送する処理を行う。
図6のコマンドシーケンスSQ3において、長い白い矢印のタイミングは、データラッチ群XDLからデータラッチ群CDLへのデータコピー転送の開始タイミングを示し、短い矢印tsのタイミングは、データラッチ群XDLからデータラッチ群CDLへのデータコピー転送の完了タイミングを示す。データラッチ群XDLからデータラッチ群CDLへのデータコピーの間、レディ/ビジー信号RBnは、lowとなる。
なお、図6において、コマンド“c12”及び“c13”は、それぞれ中位ビット及び上位ビットへの書き込み予約を行うコマンドである。アドレス“CAM1”と“CAM2”は、中位ビットのカラムアドレスであり、アドレス“CAU1”と“CAU2”は、上位ビットのカラムアドレスである。アドレス“RAM1”、“RAM2”及び“RAM3”は、中位ビットのロウアドレスであり、アドレス“RAU1”、“RAU2”及び“RAU3”は、上位ビットのロウアドレスである。データ“DM0”、“DM1”、・・・、“DM(K−1)”は、中位ビットのデータであり、データ“DU0”、“DU1”、・・・、“DU(K−1)”は、上位ビットのデータである。
図7のLS6は、コマンドシーケンスSQ2におけるコマンドc21により、全てのデータラッチXDLがリセットされた状態を示す。図8のLS7は、複数のデータ“DM0”から“DM(K−1)”までのデータのデータラッチ群XDLへの途中の格納状態を、細かな縦線で示している。図8のLS8は、複数のデータ“DM0”から“DM(K−1)”の全てのデータが対応するデータラッチ群XDLに格納された状態を示している。
コマンドシーケンスSQ2におけるコマンド“c22”が出力されると、データラッチ群XDLのデータはデータラッチ群BDLへコピーされる。シーケンサ170は、コマンド“c12”と“c22”に基づいて、データラッチ群XDLのデータをデータラッチ群BDLへコピーする処理を行う。
コマンドシーケンスSQ3において、データの書き込み予約のコマンド“c13”及びデータラッチ群XDLのリセットのコマンド“c21”に続いて、データ“DU0”、“DU1”、・・・、“DU(K−1)”の出力が終了すると、コマンド“c23”がNAND型フラッシュメモリ100へ出力される。
コマンドシーケンスSQ3におけるコマンド“c23”が出力されると、データラッチ群XDLのデータはデータラッチ群CDLへコピー転送される。シーケンサ170は、コマンド“c13”と“c23”に基づいて、データラッチ群XDLのデータをデータラッチ群CDLへコピー転送する処理を行った後、ページユニット単位でのデータの書き込み、すなわちプログラム動作を開始する。シーケンサ170は、全てのデータラッチXDLのリセットをした後、プログラム動作を開始する。すなわち、その後、3つのデータラッチADL/BDL/CDLの3ページ分のデータを用いたメモリセルアレイ110への書き込み処理が実施される。
図8のLS9は、プログラム動作が開始される直前のデータラッチ群ADL、BDL、CDLに書き込みデータが格納された状態を示す。図8のLS9において、細かな横線により、複数のデータ“DU0”から“DU(K−1)”の全てのデータが対応するデータラッチ群CDLに格納された状態を示している。
図8のLS10は、プログラム動作後、各データラッチ群が「1」になっている状態を示している。図6では、プログラム動作は、タイミングtsで開始され、タイミングteで終了している。
データラッチ群XDLからデータラッチ群CDLへのデータコピーの開始から、プログラム動作の終了まで、レディ/ビジー信号RBnは、lowとなる。
[データ読み出し時の動作]
まず、予め設定された閾値電圧に基づくデータ読み出し(以下、ノーマルリードともいう)時の基本的動作について説明する。
1)ノーマルリードの基本的動作
図9は、データの読み出し時の基本的なコマンドシーケンスを示す図である。図10は、コマンドシーケンスの実行に伴う、5つのデータラッチにおけるデータの格納状況の変化を説明するための図である。
[データ読み出し時の動作]
まず、予め設定された閾値電圧に基づくデータ読み出し(以下、ノーマルリードともいう)時の基本的動作について説明する。
1)ノーマルリードの基本的動作
図9は、データの読み出し時の基本的なコマンドシーケンスを示す図である。図10は、コマンドシーケンスの実行に伴う、5つのデータラッチにおけるデータの格納状況の変化を説明するための図である。
コマンドシーケンスSQ4に示すように、コントローラ200は、下位、中位及び上位ビットのいずれかの読み出し予約を行うコマンド“c11”、“c12”若しくは“c13”を、入出力信号I/Oに出力する。
図9では、コマンド“c13”に続いて、コントローラ200は、コマンド“c31”を入出力信号I/Oに出力することが示されている。コントローラ200は、コマンド“c31”に続いて、5つのアドレスを入出力信号I/Oに出力する。
5つのアドレスに続いて、コントローラ200は、コマンド“c32”を入出力信号I/Oに出力する。コマンド“c32”は、データの読み出しの実行を指示するコマンドである。よって、シーケンサ170は、指定されたアドレスへのデータの読み出しを実行する。各データの読み出し結果は、まず各センスアンプSAに格納される。
コマンド“c32”が入出力信号I/Oに出力されたとき、図10のLS11で示すように各データラッチ群には、データが何ら格納されていない。その後、シーケンサ170がデータを読み出して、図10のLS12で細かな斜線で示すようにデータラッチ群SDLには、データが格納される。
NAND型フラッシュメモリ100は、コマンド“c32”を受信後、読み出し動作を実行するため、レディ/ビジー信号RBnは、lowとなる(白い長い矢印で示す)。
全てのデータがデータラッチ群SDLに格納された後、全てのデータがデータラッチ群XDLにコピーされる。全てのデータがデータラッチ群XDLにコピーされると、レディ/ビジー信号RBnは、highとなる(白い短い矢印で示す)。図10のLS13は、データラッチ群SDLのデータがデータラッチ群XDLにコピーされた状態を示している。
その後、コントローラ200は、NAND型フラッシュメモリ100のデータラッチ群XDLからデータを読み出す。
以上のようにして、コントローラ200は、NAND型フラッシュメモリ100からデータを読み出すことができる。
2)シフトリードの基本的動作
データの読み出し時、種々の要因でメモリセルトランジスタMTの閾値電圧が変動して、上述した予め設定した閾値電圧に対応した読み出しレベルによるデータ読み出し、すなわちノーマルリードでは、データを正しく読み出せない場合がある。そのような場合には、コントローラ200は、読み出しレベルを変更してデータの読み出し動作を行う。すなわち、ノーマルリードにおける閾値電圧(例えば、上述した電圧VB)に対応する読み出しレベルから、ある値(以下、シフト量ともいう)だけシフトさせた電圧(例えば電圧VBs)を、読み出しレベルに設定して、コントローラ200は、データの読み出し動作を行う。以下、このような読み出し動作を、シフトリードという。
2)シフトリードの基本的動作
データの読み出し時、種々の要因でメモリセルトランジスタMTの閾値電圧が変動して、上述した予め設定した閾値電圧に対応した読み出しレベルによるデータ読み出し、すなわちノーマルリードでは、データを正しく読み出せない場合がある。そのような場合には、コントローラ200は、読み出しレベルを変更してデータの読み出し動作を行う。すなわち、ノーマルリードにおける閾値電圧(例えば、上述した電圧VB)に対応する読み出しレベルから、ある値(以下、シフト量ともいう)だけシフトさせた電圧(例えば電圧VBs)を、読み出しレベルに設定して、コントローラ200は、データの読み出し動作を行う。以下、このような読み出し動作を、シフトリードという。
そのため、コントローラ200のRAM220には、シフトテーブル情報TBLとして、シフト量を決定するための複数(ここでは3つ)のシフトテーブルが格納されている。各シフトテーブルは、管理情報MIの一部である。管理情報MIは、NAND型フラッシュメモリ100のメモリセルアレイ110の管理情報格納領域MIAに格納されており、メモリシステム1の電源がオンされたときに、一般的には、RAM220に転送されて、プロセッサ230により参照されて使用される。
図11は、シフトテーブル情報TBLの1つのテーブルである、下位ページ用のシフトテーブルTBL1の例を示す図である。図12は、シフトテーブル情報TBL中の、中位ページのシフトテーブルTBL2の例を示す図である。図13は、シフトテーブル情報TBL中の、上位ページのシフトテーブルTBL3の例を示す図である。各シフトテーブルには、複数のインデックス番号に対応する複数のシフト量が設定されている。
さらに、コントローラ200は、例えばブロックBLK毎のシフト量を指定するデータ(以下、ヒストリデータという)に基づいて、シフト量を決定する。ヒストリデータHDは、例えば、テーブルデータであり、ブロックBLK毎のインデックス番号を含む。コントローラ200は、あるブロックBLKのデータの読み出しを行うとき、ヒストリデータHDから、対象ブロックBLKについて設定されたインデックス番号を読み出し、シフトテーブル情報TBLを参照して、その読み出したインデックス番号に対応するシフト量データを用いて、そのブロックBLKに対するシフトリードを行う。
ヒストリデータHDは、ブロックBLK単位でもよいし、各ブロックBLK内の下位/中位/上位ビット単位でもよいし、各ブロックBLK内のワード線WL単位でもよい。プロセッサ230は、読み出し対象アドレスから、読み出し対象ブロックBLKなどを特定することができる。
例えば、プロセッサ230は、ヒストリデータHDから、特定されたブロックBLKに対して設定されているインデックス番号を読み出す。プロセッサ230は、対応するシフトテーブルTBLを参照して、読み出したインデックス番号に対応するシフト量データを得て、そのシフト量データを予め設定された読み出しレベルに加算して、読み出しレベル(読み出し電圧)を算出する。その結果、プロセッサ230は、算出された読み出しレベルを用いて、そのブロックBLKからのデータを読み出すことができる。
ここでは、図11から図13に示すように、シフトテーブル情報TBLは、ページ毎に設定された3つのシフトテーブルを含む。図11の下位ページ用のシフトテーブルTBL1には、読み出し動作ARとER時の、複数(ここでは5つ)のレベルのシフト量が設定されている。図12の中位ページ用のシフトテーブルTBL2には、読み出し動作BR、DR及びFR時の、複数(ここでは5つ)のレベルのシフト量が設定されている。図13の上位ページ用のシフトテーブルTBL3には、読み出し動作CRとGR時の、複数(ここでは5つ)のレベルのシフト量が設定されている。
各シフトテーブルは、複数のインデックス番号を有し、インデックス番号毎のシフト量を有している。ここでは、インデックス番号が増加するにつれて、各読み出し動作におけるシフト量も増加している。
上述したように、シフト量は、例えばブロック単位で設けられたシフトテーブル情報TBLに設定され、シフトテーブル情報TBLの各シフトテーブルは、管理情報格納領域MIAからRAM220に転送される。
シフトリードは、予め設定された各状態に対応する閾値電圧に対応する読み出しレベルを用いたデータの読み出し(ノーマルリード)によりデータの読み出しができなかったときに行われる。よって、ノーマルリードによりデータの読み出しができなかったときに、再読み出しにおいてシフトリードが行われ、データの読み出しができたときには、ヒストリデータHDのインデックス番号が、更新される。結果として、ヒストリデータHDには、前回(最新)のデータ読み出し時のシフト量データを特定するインデックス番号が格納され、ノーマルリードでデータの読み出しができたときには、ヒストリデータHD中のインデックス番号は、例えば「0」に設定される。
図14は、ホストからの読み出し要求があったときの、コントローラ200とNAND型フラッシュメモリ100のデータの読み出しの処理の流れの例を示すフローチャートである。図14は、ページ毎のデータの読み出し処理を示す。コントローラ200は、ホスト機器300からのデータの読み出し要求に応じて、RAM220中のルックアップテーブルLUT(図1)を用いて、読み出し対象アドレス(すなわち、物理アドレス)を特定する(ステップ(以下、Sと略す)1)。
ホスト機器300からの読み出し要求は、読み出しデータのアドレスを論理アドレスにより指定している。コントローラ200は、論理アドレスとNAND型フラッシュメモリ100の物理アドレスとの対応関係情報をテーブル情報として、ルックアップテーブルLUTに保持している。S1では、コントローラ200は、読み出し要求を受信すると、そのルックアップテーブルLUTを参照して、読み出し要求に含まれる論理アドレスに対応する物理アドレスを特定する。
物理アドレスが特定されると、コントローラ200は、上述したヒストリデータHDを参照して読み出しレベルを算出する(S2)。ヒストリデータHDは、従来は、RAM220に格納されているが、本実施形態では、データの読み出し時には使用されないデータラッチ群に格納される。上述したように、ヒストリデータHDは、前回の読み出し時のシフト量のインデックス番号を格納している。シフトリード時は、ノーマルリード時に用いる予め設定された各状態に対応する読み出し電圧に、その記録されているインデックス番号のシフト量の電圧を加算して、その加算された電圧値が、読み出しレベルとして算出される。
なお、電源がオフされると、ルックアップテーブルLUT、シフトテーブル情報TBL及びヒストリデータHDは、NAND型フラッシュメモリ100のメモリセルアレイ110の管理情報格納領域MIAに記憶すなわち更新され、その後、電源がオンされると、NAND型フラッシュメモリ100から読み出されてRAM220又はデータラッチ群に格納される。
コントローラ200は、特定した物理アドレスと、S2で算出された読み出しレベルとに基づいて、読み出しコマンドをNAND型フラッシュメモリ100に発行する(S3)。
NAND型フラッシュメモリ100は、コントローラ200からの読み出しコマンドを受信すると、読み出しコマンドに基づいてデータの読み出しを行う(S4)。ヒストリデータHDに前回の読み出し時のインデックス番号が格納されていないときは(すなわちインデックス番号が0のときは)、ノーマルリードが実行される。ヒストリデータHDに前回の読み出し時のインデックス番号が格納されているときは、インデックス番号に対応するシフト量を用いたシフトリードが実行される。
読み出しの結果は、コントローラ200により取得される。コントローラ200は、データの読み出しができた、すなわちエラーがあってもECC回路260によりエラー訂正ができたかを判定する(S5)。
データの読み出しができたときは(S5:YES)、コントローラ200は、読み出したデータ(すなわち訂正処理後のデータ)をホスト機器300へ返す(S6)。
データの読み出しができなかったとき(すなわちエラー訂正ができなかったとき)は(S5:NO)、コントローラ200は、再読み出し処理を実行する(S7)。再読み出し処理では、各シフトテーブルのインデックス番号をインクリメントしてシフト量を変更しながら再読み出しが行われる。なお、シフト量を変更した再読み出しに代えて、Vthトラッキングにより読み出し電圧を判定して再読み出しを行うようにしてもよい。Vthトラッキングは、読み出し電圧を変化させたときにオンとなるメモリセル数(オンセル数)の変化に基づいて、データを正しく読み出せる読み出し電圧(いわゆる谷位置電圧)を決定する処理である。
シフトリードが再読み出し処理(S7)において行われ、再読み出し処理(S7)の後でエラー訂正が成功したか否かが判定される(S8)。エラー訂正が成功しなかった、すなわちデータの読み出しができなかったときは(S8:NO)、コントローラ200は、読み出しが出来なかったことを示すリードステータスエラーを、ホスト機器300へ返す(S10)。
シフトリードが再読み出し処理(S7)において行われ、エラー訂正が成功した、すなわちデータの読み出しができたときは、コントローラ200は、ヒストリデータHDを更新し(S9)、読み出したデータ(すなわち訂正処理後のデータ)をホスト機器300へ返す(S6)。
以上のように、データは、ヒストリデータHDとシフトテーブル情報TBLを用いながらNAND型フラッシュメモリ100から読み出される。
3)サスペンドリード時の基本的動作
プログラム動作の途中で、ホスト機器300から読み出し要求を受けると、コントローラ200は、NAND型フラッシュメモリ100のプログラム動作を一旦中断(以下、「サスペンド」ともいう)させ、読み出し動作を実行し、読み出し動作の実行後に、コントローラ200は、プログラム動作を再開(以下、「レジューム」ともいう)させる機能を有する。
3)サスペンドリード時の基本的動作
プログラム動作の途中で、ホスト機器300から読み出し要求を受けると、コントローラ200は、NAND型フラッシュメモリ100のプログラム動作を一旦中断(以下、「サスペンド」ともいう)させ、読み出し動作を実行し、読み出し動作の実行後に、コントローラ200は、プログラム動作を再開(以下、「レジューム」ともいう)させる機能を有する。
NAND型フラッシュメモリ100は、プログラム動作中に、読み出しコマンドを受けると、このようなプログラム動作を一旦サスペンドして、データの読み出しを実行し、その後プログラム動作のレジュームを行う。このような動作は、読み出し要求に対するレスポンスを速くするための動作であり、サスペンドリードという。
コントローラ200は、プログラム動作をサスペンドしたときのサスペンド情報を保持する所定のレジスタ(不図示)を含む。コントローラ200は、そのレジスタが保持するサスペンド情報に基づいて、プログラム動作をレジュームする。
図15は、サスペンドリード時のコマンドシーケンスを示す図である。
NAND型フラッシュメモリ100のプログラム動作中に、ホスト機器300から読み出し要求を受信すると、コマンドシーケンスSQ5に示すように、コントローラ200のプロセッサ230は、NAND型フラッシュメモリ100にプログラム動作を中断させるコマンド“c41”を出力し、サスペンド情報を所定のレジスタ(図示せず)に格納する。プログラム動作を中断した後、コントローラ200は、シーケンサ170に、読み出し動作を実行させる。
具体的には、コマンド“c41”が出力された後、図9に示したコマンド及びアドレスがコントローラ200からNAND型フラッシュメモリ100に供給されて、読み出されたデータがNAND型フラッシュメモリ100からコントローラ200に供給される。データの読み出しが終了すると、コントローラ200は、プログラム動作をレジュームするコマンド“c42”を出力し、シーケンサ170は、コマンド“c42”に応じてプログラム動作を再開する。
図16は、サスペンドリード時の5つのデータラッチにおけるデータの格納状態の変化を説明するための図である。図16のLS21は、プログラム動作中の各データラッチの状態を示し、データラッチ群ADL、BDL及びCDLには、書き込みデータが格納され、データラッチ群SDLには、ベリファイ用データが格納される。図16のLS22は、プログラム動作が中断して読み出し動作が開始される直前の各データラッチの状態を示している。
読み出し動作中は、図9及び図10で示したように、データラッチ群SDL、XDLが用いられる。図16のLS23は、シーケンサ170が全データを読み出して、細かなドットパターンで示すように、データラッチ群SDLに格納した状態を示す。LS24は、データラッチ群SDLのデータがデータラッチ群XDLにコピーされた状態を示している。よって、コントローラ200は、データラッチ群XDLからデータを読み出すことができる。
サスペンドリード時、3つのデータラッチ群ADL、BDL及びCDLのデータは変更されないので、プログラム動作がレジュームされたとき、シーケンサ170は、データラッチ群ADL、BDL及びCDLのデータをそのまま使用して、プログラム動作を再開することができる。プログラム動作が再開されたとき、データラッチ群SDL、ADL、BDL、CDL及びXDLの状態は、LS21と同じ状態になる。
4)管理情報の格納領域と定常状態
コントローラ200は、管理情報MIを用いて、NAND型フラッシュメモリ100に対するデータの書き込み動作及びデータの読み出し動作を実行する。管理情報MIは、例えば、NAND型フラッシュメモリ100に対する読み出し動作を行う時などにコントローラ200により用いられる情報であり、例えば、ルックアップテーブルLUT、シフトテーブル情報TBL、ヒストリデータHDなどのデータである。
4)管理情報の格納領域と定常状態
コントローラ200は、管理情報MIを用いて、NAND型フラッシュメモリ100に対するデータの書き込み動作及びデータの読み出し動作を実行する。管理情報MIは、例えば、NAND型フラッシュメモリ100に対する読み出し動作を行う時などにコントローラ200により用いられる情報であり、例えば、ルックアップテーブルLUT、シフトテーブル情報TBL、ヒストリデータHDなどのデータである。
一般的には、管理情報MIは、メモリシステム1の電源がオフからオンになったときに、NAND型フラッシュメモリ100のメモリセルアレイ110中の管理情報格納領域MIAから読み出されて、コントローラ200のRAM220にコピーされ、プロセッサ230により使用される。しかし、コントローラ200に大きなデータサイズのRAM220を設けることができない場合、ブロック数が増える等して、管理情報MIのデータサイズが大きくなると、RAM220に、管理情報MIの全てを格納することができない場合が発生する。
また、管理情報MIを格納するRAM220は、トラッキング処理、パトロール処理等においても多くのデータを一時的に格納するために使用されるため、RAM220には、十分な空き領域も必要となる。トラッキング処理、パトロール処理等により更新されたシフト情報も、メモリセルアレイ110中の管理情報格納領域MIAに記憶される。
さらに、メモリセルトランジスタMTに記憶するデータのビット数が増えたりしても、管理情報MIのデータサイズは、大きくなる。
しかし、NAND型フラッシュメモリ100は、用途によっては、データを一度書き込んだ後は、データの読み出しがほとんどの場合がある。例えば、データセンタなどでNAND型フラッシュメモリ100が用いられるときは、データを一度書き込んだ後は、データの読み出しの発生頻度の方が、データの書き込みの発生頻度よりも多い。
そこで、本実施形態では、管理情報MIの一部を、データの読み出し時には使用されないデータラッチ群に格納することにより、大きなサイズのRAM220をコントローラ200に設けることができなくても、コントローラ200が、管理情報MIを小さなレイテンシで読み出すことができるようにしている。すなわち、コントローラ200は、NAND型フラッシュメモリ100からのデータの読み出し処理を実行するとき又は実行をする前に、データの読み出しのために用いる管理情報MIを、複数のデータラッチ回路からなるデータラッチ群の1つに格納する。
なお、本実施形態では、データの読み出し時には使用されないデータラッチ群に格納する管理情報MIの一部のデータ量は、1ページに収まるデータ量であり、データラッチ群ADLに格納される。
以下、管理情報MIの一部がデータラッチ群ADLに格納された状態をデータラッチ群の定常状態という。
なお、以下の例では、シフトリード時に用いられるヒストリデータHDが、管理情報MIの一部としてデータラッチ群ADLに格納される場合について説明する。すなわち、図4において二点鎖線で示すデータラッチ群ADLに、ヒストリデータHDは、格納される。
ヒストリデータHDがデータラッチ群ADLに格納されるとき、ここではブロックBLK毎に使用されるシフト量データを示すインデックス番号が、シフト情報として、データラッチ群ADLに格納される。
そのため、コントローラ200では、読み出し対象アドレスのブロックBLKに対応するデータラッチ群ADLのカラムアドレスが格納された対応テーブルCTが生成されて、RAM220に格納される。プロセッサ230は、その対応テーブルCTを参照することにより、データラッチ群ADLから、読み出しデータのブロックBLKに対応するシフト情報(ここではインデックス番号)を取得してシフトリードを実行することができる。
本実施形態では、共に管理情報である、ルックアップテーブルLUT及びシフトテーブル情報TBLは、図1において、点線で示すように、RAM220に格納されているが、データの読み出しが行われるときに、コントローラ200は、データラッチ群ADLの中からヒストリデータHD中の対象アドレスのインデックス番号を読み出す。コントローラ200は、シフトテーブル情報TBLを参照し、読み出したインデックス番号から決定されたシフト量データを用いてシフトリードを行うことができる。
なお、管理情報MIであるヒストリデータHDがデータラッチ群ADLに格納されるとき、データラッチ群XDLにも併せて格納されるようにしてもよい。
管理情報MIを、メモリセルアレイ110中の管理情報格納領域MIAからデータラッチ群ADLに格納する手順について説明する。
まず、管理情報MIがデータラッチ群ADLに転送されて設定された定常状態とその定常状態化の処理の手順について説明する。定常状態化の処理は、ホスト機器300からの要求に応じてコントローラ200によりデータの読み出し処理が実行される前に行われる。図17から図19は、管理情報MIがデータラッチ群ADLに格納されるまでの管理情報MIの格納状態の変化を説明するための図である。図17から図19は、メモリセルアレイ110と、5つのデータラッチにおける管理情報MIの格納状態を示している。
管理情報MIの第1格納手順を説明する。図17のSS1は、初期状態(あるいはデータの書き込み後若しくはデータの消去後)において、管理情報MIが、メモリセルアレイ110の管理情報格納領域MIAに格納されていることを示している。プロセッサ230は、ホスト機器300からのデータの読み出し要求に備えて、管理情報格納領域MIAからSLCモードで管理情報MIの読み出しを実行することにより、管理情報MI(ここではヒストリデータHD)を、SS2において点線で示すように、データラッチ群SDLに格納し、さらに、データラッチ群XDLにコピーする。その後、SS3において点線で示すように、プロセッサ230は、その管理情報MIをデータラッチ群XDLからデータラッチ群ADLにコピーする。SS3が、定常状態を示すが、管理情報MIは、データラッチ群XDLにも格納されている。
以上のように、コントローラ200は、外部のホスト機器300からの要求に応じた読み出し処理が実行される前に、管理情報MIを、所定の格納領域、すなわち管理情報格納領域MIAから読み出して、データラッチ群ADLに格納する。
次に、管理情報MIの第2格納手順を説明する。図17のSS1と同じ図18のSS11の状態から、図18において点線で示すように、プロセッサ230は、ホスト機器300からのデータの読み出し要求に備えて、管理情報格納領域MIAからSLCモードで管理情報MIの読み出しを実行することにより、管理情報MIを、SS12において点線で示すように、データラッチ群SDLに格納する。その後、SS12において点線で示すように、プロセッサ230は、管理情報MIを、データラッチ群SDLからデータラッチ群ADLにコピーする。SS12が、管理情報MIの第2の定常状態を示す。
管理情報MIの第3格納手順を説明する。図18のSS12の状態から、SS13に示すように、プロセッサ230は、管理情報MIを、データラッチ群ADLからデータラッチ群XDLにコピーする。SS13が、管理情報MIの第3の定常状態を示す。
管理情報MIの第4格納手順を説明する。図17のSS1と同じ図19のSS21の状態から、図19において点線で示すように、プロセッサ230は、ホスト機器300からのデータの読み出し要求に備えて、管理情報格納領域MIAからSLCモードで管理情報MIの読み出しを実行することにより、管理情報MIを、SS22において点線で示すように、データラッチ群SDLに格納する。その後、SS22において点線で示すように、プロセッサ230は、管理情報MIを、データラッチ群SDLから2つのデータラッチ群ADLとXDLの両方にコピーする。SS22が、管理情報MIの第4の定常状態を示すが、管理情報MIは、データラッチ群XDLにも格納されている。
図20は、第1格納手順のコマンドシーケンスSQ11を示す図である。プロセッサ230は、初期状態になると(又はデータの書き込み後若しくはデータの消去後)、SLCモードで、管理情報格納領域MIAから管理情報MIの読み出しを実行するためのコマンド“c51”を出力する。コマンド“c51”に続いて、プロセッサ230は、コマンド“c31”を入出力信号I/Oに出力する。コントローラ200は、コマンド“c31”に続いて、5つのアドレスを入出力信号I/Oに出力する。5つのアドレスに続いて、コントローラ200は、コマンド“c32”を入出力信号I/Oに出力する。
コマンド“c32”は、データの読み出しの実行を指示するコマンドであるため、シーケンサ170は、指定されたアドレスへのデータの読み出しを実行する。データの読み出し結果は、まず複数のセンスアンプSAに格納された後に、データラッチ群XDLへコピーされる。
プロセッサ230は、データラッチ群XDLのデータをデータラッチ群ADLにコピーさせるコマンド“c52”を入出力信号I/Oに出力する。その結果、管理情報MIは、図17のSS3に示す定常状態で複数のセンスユニットSAUに格納される。
図21は、第2格納手順及び第3格納手順のコマンドシーケンスSQ12を示す図である。プロセッサ230は、初期状態になると(又はデータの書き込み後若しくはデータの消去後)、SLCモードで、管理情報格納領域MIAから管理情報MIの読み出しを実行するためのコマンド“c51”を出力する。コマンド“c51”に続いて、プロセッサ230は、コマンド“c53”と“c31”を入出力信号I/Oに出力する。コマンド“c53”は、読み出されてデータラッチ群SDLに格納された管理情報MIの、データラッチ群XDLではなくデータラッチ群ADLへのコピーを指示するコマンドである。コントローラ200は、コマンド“c31”に続いて、5つのアドレスを入出力信号I/Oに出力する。5つのアドレスに続いて、コントローラ200は、コマンド“c32”を入出力信号I/Oに出力する。
コマンド“c32”は、指定されたアドレスからのデータの読み出しを実行するコマンドであるため、シーケンサ170は、指定されたアドレスのデータの読み出しを実行し、読み出されたデータをデータラッチ群ADLに格納する。
以上のようにして、管理情報MIは、図18のSS12に示す定常状態で複数のセンスユニットSAUに格納される。
さらに、その後に、図21において点線で示すように、プロセッサ230は、複数のセンスアンプSAのデータラッチ群ADLのデータを、データラッチ群XDLにコピーさせるコマンド“c54”を入出力信号I/Oに出力することにより、図18のSS13に示す定常状態で、管理情報MIを複数のセンスユニットSAUに格納することができる。
図22は、第4格納手順のコマンドシーケンスSQ13を示す図である。プロセッサ230は、初期状態になると(又はデータの書き込み後若しくはデータの消去後)、SLCモードで、管理情報格納領域MIAから管理情報MIの読み出しを実行するためのコマンド“c51”を出力する。コマンド“c51”に続いて、プロセッサ230は、コマンド“c55”と“c31”を入出力信号I/Oに出力する。コマンド“c55”は、読み出されてデータラッチ群SDLに格納された管理情報MIの、データラッチ群XDL及びデータラッチ群ADLへのコピーを指示するコマンドである。コントローラ200は、コマンド“c31”に続いて、5つのアドレスを入出力信号I/Oに出力する。5つのアドレスに続いて、コントローラ200は、コマンド“c32”を入出力信号I/Oに出力する。
コマンド“c32”は、指定されたアドレスからのデータの読み出しを実行するコマンドであるため、シーケンサ170は、指定されたアドレスへのデータの読み出しを実行し、読み出されたデータをデータラッチ群ADLとXDLに格納する。
以上のようにして、管理情報MIは、図19のSS22に示す定常状態で複数のセンスユニットSAUに格納される。
次に、上述した定常状態におけるデータの読み出し動作について説明する。データの読み出し動作では、はじめに、管理情報MIに含まれるシフト量データの読み出し処理が行われる。
5)シフト量データの読み出しと設定
図23は、管理情報MIであるシフト情報(ここではインデックス番号)がデータラッチ群XDLから読み出される場合を説明するための図である。図24は、データの読み出し手順のコマンドシーケンスSQ14を示す図である。コマンドシーケンスに従って、データラッチ群ADLからのインデックス番号の読み出しが行われ、読み出されたインデックス番号に対応するシフト量を用いて、データの読み出しが行われる。ここでは、定常状態において、SS31に示すように、データラッチ群XDLにも管理情報MIであるシフト情報が予め格納されている場合を説明する。
5)シフト量データの読み出しと設定
図23は、管理情報MIであるシフト情報(ここではインデックス番号)がデータラッチ群XDLから読み出される場合を説明するための図である。図24は、データの読み出し手順のコマンドシーケンスSQ14を示す図である。コマンドシーケンスに従って、データラッチ群ADLからのインデックス番号の読み出しが行われ、読み出されたインデックス番号に対応するシフト量を用いて、データの読み出しが行われる。ここでは、定常状態において、SS31に示すように、データラッチ群XDLにも管理情報MIであるシフト情報が予め格納されている場合を説明する。
プロセッサ230は、レジスタリードコマンドであるコマンド“c56”を出力する。コマンド“c56”に続いて、コントローラ200は、5つのアドレスを入出力信号I/Oに出力する。ここでは、カラムアドレスのみが指定されるので、3つのロウアドレスは、無視される。アドレスに続いて、コントローラ200は、コマンド“c57”を入出力信号I/Oに出力する。
シーケンサ170は、指定されたカラムアドレスのデータラッチ群XDLのデータの読み出しを実行し、読み出されたデータ“info0”を出力する。データ“info0”は、読み出しデータに関わるシフト量データに対応するインデックス番号である。よって、図23のSS32に示すように、コントローラ200は、インデックス番号をデータラッチ群XDLから取得することができる。
プロセッサ230は、取得したデータ“info0”を用いてデータの読み出しを行う。プロセッサ230は、シフトテーブル情報TBLを参照して、取得したデータ“info0”に基づいてシフト量データを取得することができる。以上のように、コントローラ200は、読み出し処理の実行前に、データラッチ群ADLからデータラッチ群XDLへ管理情報MIを予めコピーしておく。そして、シフト量データは、データラッチ群XDLから取得される。
図24に示すように、プロセッサ230は、以降に実行される読み出しに用いられるシフト量をNAND型フラッシュメモリ100に設定するためのシフト量設定コマンド“c41”を入出力信号I/Oに出力すると共に、シフト量設定コマンド“c41”に続いてシフト量データを入出力信号I/Oに出力する。図24では、下位ページ用のシフト量データ“Shift A”と“Shift E”と“00” が出力されている。3つ目のデータは、無視される。中位ページ用のシフト量データであれば、3つのシフト量データが出力され、上位ページ用のシフト量データであれば、2つのシフト量データと、“00” が出力される。その結果、シフト量データがNAND型フラッシュメモリ100に設定される。
図25は、メモリセルアレイ110からデータが読み出される場合を説明するための図である。
図24に示すように、コントローラ200は、読み出しデータに対応する下位、中位及び上位ビットのいずれかの読み出し予約を行うコマンド“c11”、“c12”若しくは“c13”を、入出力信号I/Oに出力する。図24では、コマンド“c11”に続いて、コントローラ200は、コマンド“c31”を入出力信号I/Oに出力し、コマンド“c31”に続いて、5つのアドレスを入出力信号I/Oに出力する。
コントローラ200が、コマンド“c32”を入出力信号I/Oに出力すると、シーケンサ170は、設定されたシフト量を用いたシフトリードを実行する。データの読み出し結果は、まずデータラッチ群SDLに格納されてから、図25のSS33に示すように、データラッチ群XDLに格納される。その結果、コントローラ200は、データラッチ群XDLからユーザデータを取得することができる。図24において、長い白い矢印のタイミングは、レディ/ビジー信号RBnがlowであることを示し、短い矢印のタイミングは、レディ/ビジー信号RBnがhighであることを示す。
その後、コントローラ200は、一点鎖線で示すように、コマンド“c54”を入出力信号I/Oに出力し、図25のSS34に示すように、データラッチ群ADLの全データがデータラッチ群XDLにコピーされる。
6)読み出し処理の全体の流れ
次に、本実施形態に関わる、メモリシステム1におけるデータの読み出し処理の流れについて説明する。
6)読み出し処理の全体の流れ
次に、本実施形態に関わる、メモリシステム1におけるデータの読み出し処理の流れについて説明する。
図26は、コントローラ200とNAND型フラッシュメモリ100のデータの読み出しの処理の流れの例を示すフローチャートである。図26において、図14と同じ処理は、同じステップ番号を付して説明は簡略にする。図26は、ページ毎のデータの読み出し処理を示す。コントローラ200は、ホスト機器300からの読み出し要求を受けると、RAM220中のルックアップテーブルLUTを用いて、読み出し対象アドレス(すなわち、物理アドレス)を特定する(S1)。
物理アドレスが特定されると、コントローラ200は、上述した対応テーブルCTを参照して、ヒストリデータHD中の対象アドレスのシフト情報すなわちヒストリ値(ここではインデックス番号)が登録されているカラムアドレスのデータラッチ群XDLのデータを出力させるコマンドを出力する(S11)。そのコマンドに応じて、NAND型フラッシュメモリ100は、指定されたカラムアドレスのデータラッチ群XDLのデータ(すなわちインデックス番号)をコントローラ200へ返す処理を実行する(S12)。S11とS12の処理は、図24に示されている。
コントローラ200は、特定した物理アドレスと、取得したインデックス番号に対応するシフト量データとに基づいて、読み出しコマンドをNAND型フラッシュメモリ100に出力する(S3)。
NAND型フラッシュメモリ100は、コントローラ200からの読み出しコマンドを受信すると、読み出しコマンドに基づいてデータの読み出しを実行する(S4)。ヒストリデータHDに前回の読み出し時のインデックス番号が格納されていないときは、すなわちインデックス番号が0のときは、ノーマルリードが実行される。ヒストリデータHDに前回の読み出し時のインデックス番号が格納されているときは、そのインデックス番号に対応するシフト量を用いたシフトリードが実行される。
データの読み出しはページ単位で行われるので、データの読み出しの結果、図25のSS33で示されるように、1ページ分のデータがデータラッチ群XDLに格納される。
読み出しの結果は、コントローラ200により取得される。コントローラ200は、データの読み出しができた、すなわちエラーがあってもECC回路260によりエラー訂正ができたかを判定する(S5)。
データの読み出しができたときは(S5:YES)、コントローラ200は、読み出したデータをホスト機器300へ返す(S6)。
なお、データの読み出しにより、データラッチ群XDLの管理情報MIが消去されるので、データの読み出しができたときは(S5:YES)、コントローラ200は、さらに、定常状態にするために、図26において点線で示すように、データラッチ群ADLのデータをデータラッチ群XDLにコピーさせるコマンドを入出力信号I/Oに出力する(S13)。その結果、図25のSS34に示すように、シーケンサ170は、データラッチ群ADLのデータを、データラッチ群XDLにコピーする(S14)。
データの読み出しができなかったときは(S5:NO)、コントローラ200は、上述したような再読み出し処理を実行する(S7)。
S7では、上述した再読み出し処理が、シフトリード等をしながら行われ、コントローラ200は、エラー訂正が成功した、すなわちデータの読み出しができたかを判定する(S8)。エラー訂正が成功した、すなわちデータの読み出しができたときは(S8:YES)、コントローラ200は、エラー訂正処理されたデータをホスト機器300へ返す(S6)。
さらに、エラー訂正が成功した、すなわちデータの読み出しができたときは(S8:YES)、コントローラ200は、データラッチ群ADL,XDLを定常状態にするために、図26において点線で示すように、データラッチ群ADLのデータをデータラッチ群XDLにコピーさせるコマンド“c54”を入出力信号I/Oに出力する(S15)。その結果、シーケンサ170は、データラッチ群ADLのデータを、データラッチ群XDLにコピーする(S16)。
さらに、S15の後、コントローラ200は、再読み出しができたときのシフト量データに対応するインデックス番号を、対象アドレスに対応するカラムアドレスに上書き更新するためのコマンドを出力する(S17)。その結果、シーケンサ170は、データラッチ群XDL中の指定されたカラムアドレスのデータを、再読み出しができたときのシフト量データのインデックス番号で更新する(S18)。
さらに、S17の後、コントローラ200は、データラッチ群XDLのデータを、データラッチ群ADLにコピーするコマンドを出力する(S19)。その結果、シーケンサ170は、データラッチ群XDLのデータを、データラッチ群ADLにコピーする(S20)。
以上のように、コントローラ200は、S5及びS8において、エラー訂正が成功した場合(S5,S8:YES)、エラー訂正されたユーザデータをホスト機器300へ返すことができる(S6)。
また、コントローラ200は、S8において、エラー訂正が成功した場合は(S8:YES)、データラッチ群ADLの更新を行って、データラッチ群ADL及びXDLを、定常状態にすることに加えて、更新されたシフト情報(ここでは、シフト量データのインデックス番号)をメモリセルアレイ110の管理情報格納領域MIAに書き込む処理も実行する。
すなわち、コントローラ200は、再読み出し処理により管理情報MIが更新された場合、更新された管理情報MIを、NAND型フラッシュメモリ100に記憶する。図27は、更新されたシフト情報を管理情報格納領域MIAへ書き込む処理の流れの例を示すフローチャートである。
コントローラ200は、更新されたシフト情報のメモリセルアレイ110の管理情報格納領域MIAへの書き込みが必要か、言い換えるとS8において、エラー訂正が成功したかを判定する(S21)。コントローラ200は、更新されたシフト情報のメモリセルアレイ110の管理情報格納領域MIAへの書き込みが必要でないとき(S21:NO)、何もしない。
更新されたシフト情報のメモリセルアレイ110の管理情報格納領域MIAへの書き込みが必要であるとき(S21:YES)コントローラ200は、SLCモードで、更新されたシフト情報(ここではシフト量データに対応するインデックス番号)をメモリセルアレイ110の管理情報格納領域MIAに書き込む(S22)。すなわち、更新されたシフト情報は、不揮発性メモリであるメモリセルアレイ110に格納される。
よって、コントローラ200は、S5においてエラー訂正ができたときは、更新されたシフト情報を、不揮発性メモリであるメモリセルアレイ110に書き込まないが、S8においてエラー訂正ができたときは、更新されたシフト情報を、不揮発性メモリであるメモリセルアレイ110に書き込む。
図26に戻り、もしも、エラー訂正が成功しなかった、すなわちデータの読み出しができなかったときは(S8:NO)、コントローラ200は、読み出しが出来なかったことを示すリードステータスエラーを、ホスト機器300へ返す(S10)。
図28と図29は、図26のデータの読み出し処理と、図27の更新された管理情報の不揮発性メモリへの書き込み処理における、メモリセルアレイと5つのデータラッチ群におけるデータの格納状況の変化を説明するための図である。
図28のSS41は、図26のS14及びS16により、データラッチ群ADLのデータが、データラッチ群XDLにコピーされた状態を示す。
図28のSS42は、図26のS18により、データラッチ群XDL中の指定されたカラムアドレスのデータが、再読み出しができたときのシフト量データのインデックス番号で更新された状態を示す。
図29のSS43は、図26のS20により、データラッチ群XDLのデータが、データラッチ群ADLにコピーされた状態を示す。
図29のSS44は、図27のS21により、更新されたシフト量データのインデックス番号が、不揮発性メモリであるメモリセルアレイ110中の別アドレスに格納された状態を示す。
図30は、図28のSS42における、データラッチ群XDL中の指定されたカラムアドレスのデータの更新処理のためのコマンドシーケンスを示す図である。
コマンド“c61”は、データラッチ群XDL中の更新したいカラムアドレスを指定してデータ更新するためのコマンドである。コマンド“c61”に続く、2つのカラムアドレスにより、カラムアドレスが指定される。指定されたカラムアドレスの複数のデータラッチXDLにデータを書き込むだけであるため、ロウアドレスは、無視される。その後のデータ“info”は、更新データである。データ“info”が、出力されて、白い矢印で示すタイミングで処理は終了する。コマンド“c52”により、図29のS43に示すように、データラッチ群XDLのデータは、データラッチ群ADLへコピーされる。
図31は、図29のSS44における、メモリセルアレイ110への管理情報MIの書き込みのためのコマンドシーケンスを示す図である。
SLCモードを指定するコマンド“c51”は、書き込みモードがSLCであることを指定するコマンドである。コマンド“c61”に続いて、カラムアドレスとロウアドレスが指定される。コマンド“c61”は、データラッチ群XDL中の、指定されたカラムアドレスに対応するデータを更新するコマンドである。コマンド“c23”が出力されると、シーケンサ170は、データラッチ群XDLのデータをアドレスで指定された管理情報格納領域MIAに書き込む。その結果、図29のS44に示すように、更新されたシフト情報がメモリセルアレイ110に記憶される。
以上のようにして、シフト量データの更新が行われる。
次に、本実施形態における、サスペンドリード時の動作を説明する。
図32は、サスペンドリード時のコントローラ200の入出力信号I/Oの変化を示すコマンドシーケンスを示す図である。図33は、コマンドシーケンスの実行に伴う、複数のデータラッチ群におけるデータの格納状況の変化を説明するための図である。
コマンドシーケンスSQ17に示すように、サスペンドリードが行われるとき、コントローラ200は、所定のコマンド“c41”を出力して、プログラムすなわちデータの書き込みをサスペンドする。図33において、LS31は、プログラム中における複数のデータラッチ群において、データラッチ群ADL,BDL及びCDLには、書き込みのためのデータが格納されており、データラッチ群SDLには、ベリファイ電圧データが格納されていることを示している。LS32は、サスペンドしたときのプログラム中の複数のデータラッチ群の状態を示す。LS32では、データラッチ群SDL及びXDLには、有効なデータは、格納されていない。すなわち、それまではプログラムすなわちデータの書き込みが行われていたので、管理情報MIは、いずれのデータラッチ群にも格納されていない。よって、サスペンドリードが行われるとき、データの読み出しのための管理情報MIの取得が必要となる。図32において、長い白い矢印のタイミングは、レディ/ビジー信号RBnがlowであることを示し、短い矢印のタイミングは、レディ/ビジー信号RBnがhighであることを示す。
そのため、コントローラ200は、次に、SLCモードで管理情報MIの読み出しを実行するためのコマンド“c51”及び“c31”を出力する。コントローラ200は、コマンドに続いて、5つのアドレスと、アドレスに続くコマンド“c32”を入出力信号I/Oに出力する。コマンド“c32”により、管理情報MIは、データラッチ群SDLに格納された後に、データラッチ群XDLに格納される。
図33のLS33は、SLCモードで読み出された管理情報MIがデータラッチ群SDLに格納された状態を示し、LS34は、管理情報MIがデータラッチ群XDLに格納された状態を示す。
さらに、コマンド“c32”により、データラッチ群XDL中の指定されたカラムアドレスのデータの読み出しが実行される。シーケンサ170は、指定されたカラムアドレスのデータの読み出しを実行し、読み出されたデータ“info0”を出力する。
プロセッサ230は、取得したデータ“info0”を用いてデータの読み出しを行う。図33のLS35は、管理情報MI中、指定されたカラムアドレスのシフト量データのインデックス番号が、対応するデータラッチ群XDLから読み出された状態を示す。
プロセッサ230は、シフト量を設定するシフト量設定コマンド“c41”を入出力信号I/Oに出力すると共に、シフト量設定コマンド“c41”に続いてインデックス番号に基づいて選択したシフト量データを入出力信号I/Oに出力する。
その後、プロセッサ230は、下位、中位及び上位ビットのいずれかの読み出し予約を行うコマンド“c11”、“c12”若しくは“c13”及び“c31”を、入出力信号I/Oに出力し、その後アドレス及びコマンド“c32”を出力する。その結果、プロセッサ230は、データの読み出しを行うことができる。図33のLS36は、プロセッサ230がデータの読み出しを実行しているときの状態を示す。
サスペンドリードの最後に、プロセッサ230は、プログラムレジュームコマンド“c42”を出力する。
よって、サスペンドリード時にも、管理情報MIであるシフト情報をメモリセルアレイ110の管理情報格納領域MIAから読み出して、シフトリードを実行することができる。
なお、サスペンドリード時において、再読み出しによるシフト情報の変更があったときは、その変更のあったシフト情報(ここではインデックス番号)の、管理情報格納領域MIAへの書き込みが行われる。
以上のように、読み出し時には使用しないデータラッチ群ADLに管理情報MIの一部を格納するようにしたので、コントローラ200のRAMの容量に制限がある場合に管理情報MIが増えても、高速に管理情報を利用することができる。
上述したように、メモリセルトランジスタMTの記憶容量が増えると、例えば1つのメモリセルトランジスタMTに記憶できるビット数が、3ビットから4ビットに増えると、シフト量データも増え、コントローラ200のRAM220に格納できない場合が生じる。
NAND型フラッシュメモリ100によっては、一旦データを書き込んだ後は、データの読み出しがほとんどの場合もある。データの読み出し時に又は読み出し前に、データの書き込みに用いられるデータラッチ群ADL、BDL等は、使用されない。
そのような場合には、上述した実施形態によれば、管理情報MIであるシフト情報のヒストリデータHDのデータ量が増加しても、ヒストリデータHDをデータラッチ群ADLに格納することによって、コントローラ200のRAM220を用いなくてもよい。
なお、上述した実施形態では、管理情報であるシフト量データのヒストリデータHDは、データラッチ群ADLに格納したが、他のデータラッチ、例えばデータラッチ群BDL又はCDLに格納するようにしてもよい。
さらになお、上述した実施形態では、データラッチ群ADL等に格納される管理情報MIとして、シフトリード時に用いられるシフト情報を例に挙げているが、シフト情報以外の管理情報MIを、データラッチ群ADL等に格納するようにしてもよい。
以上のように、上述した実施形態によれば、管理情報を格納するRAM領域を十分に有しないメモリコントローラにおいても管理情報を小さなレイテンシで読み出すことができるメモリシステム及びメモリコントローラを提供することができる。
また、管理情報の一部を、データの読み出し時に使用されないデータラッチ群に格納するようにしたので、メモリコントローラ200はホスト機器300からの読み出し要求が続く限り、管理情報MIを小さなレイテンシで読み出すことができる。
(第2実施形態)
第1実施形態では、シフト情報などの管理情報MIは、NAND型フラッシュメモリ100の1つのデータラッチ群ADLに、すなわち1ページ分内に格納可能であったが、第2実施形態では、必要な管理情報MIが1ページ分を超える場合に、データラッチ群ADL以外のデータラッチ群BDLなども用いて、管理情報MIが2以上のデータラッチ群に格納される。
(第2実施形態)
第1実施形態では、シフト情報などの管理情報MIは、NAND型フラッシュメモリ100の1つのデータラッチ群ADLに、すなわち1ページ分内に格納可能であったが、第2実施形態では、必要な管理情報MIが1ページ分を超える場合に、データラッチ群ADL以外のデータラッチ群BDLなども用いて、管理情報MIが2以上のデータラッチ群に格納される。
第2実施形態のメモリシステムの構成は、第1実施形態のメモリシステムの構成と同じであるので、第2実施形態のメモリシステムにおいて、第1実施形態のメモリシステムの構成と同じ構成要素については同じ符号を用いて説明は省略し、第1実施形態のメモリシステムの構成と異なる構成についてのみ説明する。
図34は、本実施形態に関わる、電源オフ時などにおける管理情報格納領域MIAと複数のデータラッチ群のデータ格納状態を示す図である。
図34は、電源オフ時、データの書き込み(プログラム)後、又はデータの消去後の管理情報格納領域MIAと複数のデータラッチ群のデータ格納状態を示す。データラッチ群ADL、BDL、CDLの各々には、対応する物理ブロックの管理情報が格納される。
具体的には、ここでは、メモリセルアレイ110は、3000個のブロックBLKを有する。ブロック0〜999までの管理情報MIであるデータのシフト情報が、管理情報格納領域MIAの第1格納領域MIA0に格納される。ブロック1000〜1999までのデータのシフト情報が、管理情報格納領域MIAの第2格納領域MIA1に格納される。ブロック2000〜2999までのデータのシフト情報が、管理情報格納領域MIAの第3格納領域MIA2に格納される。
また、本実施形態では、各センスユニットSAUには、データラッチADL、BDL、CDL及びXDLを備えている。
図35は、本実施形態に関わる、定常状態における、メモリセルアレイ110と、複数のデータラッチ群における管理情報MIの格納状態を示している。
電源オン時、データの書き込み(プログラム)後、又はデータの消去後、コントローラ200は、第1実施形態で説明した各種コマンドをNAND型フラッシュメモリ100へ出力することにより、複数のデータラッチ群を、管理情報MIの一部が格納された定常状態にする。
定常状態では、第1格納領域MIA0に格納された管理情報MIは、データラッチ群ADLへコピーされ、第2格納領域MIA1に格納された管理情報MIは、データラッチ群BDLへコピーされ、第3格納領域MIA2に格納された管理情報MIは、データラッチ群CDLへコピーされる。
複数のデータラッチ群が定常状態になることにより、データの読み出しに対応することができる。
そして、読み出しデータの対象アドレスが判明したときに、その対象アドレスに関わるブロックBLKの管理情報MIのコピーを格納しているデータラッチ群から、管理情報MIは、データラッチ群XDLへコピーされる。
例えば、ブロックBLK0〜999内のデータの読み出し要求を受けたときには、コントローラ200は、データラッチ群ADLの格納領域のデータをデータラッチ群XDLに格納し、データラッチ群XDL中の対象アドレスで指定されたブロックBLKについてのシフト情報を用いて、データの読み出しを行うことができる。
複数のデータラッチ群を定常状態にする処理について簡単に説明する。
図36は、管理情報MIを読み出してデータラッチ群XDLへ格納する場合のデータの転送を説明するための図である。管理情報格納領域MIAの管理情報MIは、SS41に示すように、SLCモードで読み出されて、データラッチ群SDLを経由して、データラッチ群XDLに格納される。
図37は、SLCモードで読み出された管理情報MIを、データラッチ群XDLからデータラッチ群ADLからCDLのいずれかへコピーして、複数のデータラッチ群を定常状態化する方法を示す図である。SS42は、SLCモードで読み出された管理情報MIが、データラッチ群XDLからデータラッチ群ADLへコピーされる場合を示す。すなわち、管理情報MIは、SS41の状態からSS42の状態になる。S43は、SLCモードで読み出された管理情報MIが、データラッチ群XDLからデータラッチ群BDLへコピーされる場合を示す。すなわち、管理情報MIは、SS41の状態からSS43の状態になる。S44は、SLCモードで読み出された管理情報MIが、データラッチ群XDLからデータラッチ群CDLへコピーされる場合を示す。すなわち、管理情報MIは、SS41の状態からSS44の状態になる。
図38は、データラッチ群ADL、BDL及びCDLに格納された管理情報MIを、データラッチ群XDLにコピーして、複数のデータラッチ群を定常状態化する別の方法を示す図である。SS45は、管理情報MIが、データラッチ群ADLからデータラッチ群XDLへコピーされる場合を示す。SS46は、管理情報MIが、データラッチ群BDLからデータラッチ群XDLへコピーされる場合を示す。SS47は、管理情報MIが、データラッチ群CDLからデータラッチ群XDLへコピーされる場合を示す。
図37では、管理情報MIは、データラッチ群XDLに格納してからデータラッチ群ADL、BDL及びCDLのいずれかにコピーされているが、管理情報MIは、データラッチ群SDL経由して、データラッチ群ADL、BDL及びCDLのいずれかに直接的にコピーするようにしてもよい。
図39は、管理情報MIが、データラッチ群SDLを経由して、データラッチ群ADL、BDL及びCDLのいずれかに転送する場合を示す図である。SS48は、管理情報MIが、データラッチ群SDLからデータラッチ群ADLへ直接的にコピーされる場合を示す。SS49は、管理情報MIが、データラッチ群SDLからデータラッチ群BDLへ直接的にコピーされる場合を示す。SS50は、管理情報MIが、データラッチ群SDLからデータラッチ群CDLへ直接的にコピーされる場合を示す。
なお、図39に示すデータラッチ群ADL、BDL及びCDLいずれかから、データラッチ群XDLへコピーして、図38に示すように、管理情報MIをデータラッチ群XDLに格納するようにしてもよい。
図40は、本実施形態に関わる、複数のデータラッチ群を定常状態化するコマンドシーケンスSQ18を示す図である。図41は、管理情報MIが複数のデータラッチ群に格納されるまでの管理情報MIの格納状態の変化を説明するための図である。
図40に示すように、プロセッサ230は、SLCモードで、管理情報格納領域MIAから管理情報MIの読み出しを実行するためのコマンド“c51”を出力する。コマンド“c51”に続いて、プロセッサ230は、コマンド“c53”とコマンド“c31”を入出力信号I/Oに出力する。コントローラ200は、コマンド“c31”に続いて、5つのアドレスを入出力信号I/Oに出力する。5つのアドレスのうち3つのロウアドレスが、データ“info0”のアドレスを示す。5つのアドレスに続いて、コントローラ200は、コマンド“c32”を入出力信号I/Oに出力する。以上により、図41のSS51に示すように、第1格納領域MIA0の管理情報MIが、データラッチ群ADLに転送される。
その後、第2格納領域MIA1の管理情報MIをデータラッチ群BDLに転送するために、プロセッサ230は、SLCモードで、管理情報格納領域MIAから管理情報MIの読み出しを実行するためのコマンド“c51”と、コマンド“c51”に続いてコマンド“c71”とコマンド“c31”を入出力信号I/Oに出力する。コマンド“c71”は、管理情報MIの転送先をデータラッチ群XDLではなく、データラッチ群BDLに指定するコマンドである。コマンド“c71”の前にコマンド“c51”が出力されることにより、管理情報MIの転送先は、データラッチ群BDLとなる。コントローラ200は、コマンド“c31”に続いて、5つのアドレスを入出力信号I/Oに出力する。5つのアドレスのうち3つのロウアドレスが、データ“info1”のアドレスを示す。5つのアドレスに続いて、コントローラ200は、コマンド“c32”を入出力信号I/Oに出力する。以上により、図41のSS52に示すように、第2格納領域MIA1の管理情報MIが、データラッチ群BDLに転送される。
その後、第3格納領域MIA2の管理情報MIをデータラッチ群CDLに転送するためのコマンドとデータが入出力信号I/Oに出力される。プロセッサ230は、SLCモードで、管理情報格納領域MIAから管理情報MIの読み出しを実行するためのコマンド“c51”と、コマンド“c51”に続いてコマンド“c72”とコマンド“c31”を入出力信号I/Oに出力する。コマンド“c72”は、管理情報MIの転送先をデータラッチ群XDLではなく、データラッチ群CDLにするコマンドである。コマンド“c72”の前にコマンド“c51”が出力されることにより、管理情報MIの転送先は、データラッチ群CDLとなる。コントローラ200は、コマンド“c31”に続いて、5つのアドレスを入出力信号I/Oに出力する。5つのアドレスのうち3つのロウアドレスが、データ“info1”のアドレスを示す。5つのアドレスに続いて、コントローラ200は、コマンド“c32”を入出力信号I/Oに出力する。以上により、図41のSS53に示すように、第3格納領域MIA2の管理情報MIが、データラッチ群CDLに転送される。
図42は、本実施形態に関わる、複数のデータラッチ群を定常状態化する別のコマンドシーケンスSQ19を示す図である。図43は、管理情報MIが複数のデータラッチ群に格納されるまでの管理情報MIの格納状態の変化を説明するための図である。
図42に示すように、プロセッサ230は、SLCモードで、管理情報格納領域MIAから管理情報MIの読み出しを実行するためのコマンド“c51”を出力する。コマンド“c51”に続いて、プロセッサ230は、コマンド“c53”とコマンド“c31”を入出力信号I/Oに出力する。コントローラ200は、コマンド“c31”に続いて、5つのアドレスを入出力信号I/Oに出力する。5つのアドレスのうち3つのロウアドレスが、データ“info0”のアドレスを示す。5つのアドレスに続いて、コントローラ200は、コマンド“c32”を入出力信号I/Oに出力する。以上により、図43のSS54に示すように、第1格納領域MIA0の管理情報MIが、データラッチ群SDLを経由してデータラッチ群ADLに転送される。
なお、図43では、データラッチ群ADLのデータは、データラッチ群XDLにコピーされている。そのため、管理情報MIのデータラッチ群ADLへの転送後、データラッチ群ADLのデータをデータラッチ群XDLにコピーさせるコマンド“c54”が入出力信号I/Oに出力されている。
その後、第2格納領域MIA1の管理情報MIをデータラッチ群BDLに転送するために、プロセッサ230は、SLCモードで、管理情報格納領域MIAから管理情報MIの読み出しを実行するためのコマンド“c51”と、コマンド“c51”に続いてコマンド“c71”とコマンド“c31”を入出力信号I/Oに出力する。コントローラ200は、コマンド“c31”に続いて、5つのアドレスを入出力信号I/Oに出力する。5つのアドレスのうち3つのロウアドレスが、データ“info1”のアドレスを示す。5つのアドレスに続いて、コントローラ200は、コマンド“c32”を入出力信号I/Oに出力する。以上により、図43のSS55に示すように、第2格納領域MIA1の管理情報MIが、データラッチ群BDLに転送される。
その後、第3格納領域MIA2の管理情報MIをデータラッチ群CDLに転送するためのコマンドとデータが入出力信号I/Oに出力される。プロセッサ230は、SLCモードで、管理情報格納領域MIAから管理情報MIの読み出しを実行するためのコマンド“c51”と、コマンド“c51”に続いてコマンド“c72”とコマンド“c31”を入出力信号I/Oに出力する。コントローラ200は、コマンド“c31”に続いて、5つのアドレスを入出力信号I/Oに出力する。5つのアドレスのうち3つのロウアドレスが、データ“info2”のアドレスを示す。5つのアドレスに続いて、コントローラ200は、コマンド“c32”を入出力信号I/Oに出力する。以上により、図43のSS56に示すように、第3格納領域MIA2の管理情報MIが、データラッチ群CDLに転送される。
次に、複数のデータラッチ群の定常状態から、データの読み出しのための管理情報の取得シーケンスについて説明する。ここでは、例として、選択されたブロックBLKがブロック1000〜ブロックBLK1999に属し、その選択されたブロックBLKについての管理情報MIの読み出しの場合について説明する。
図44は、定常状態から管理情報MIを読み出すためのコマンドシーケンスを示す図である。図45は、管理情報MIの読み出し処理における、メモリセルアレイと5つのデータラッチ群におけるデータの格納状況の変化を説明するための図である。
図44に示すように、コマンドシーケンスSQ20では、最初に、データラッチ群BDLのデータをデータラッチ群XDLへコピーするコマンド“c73”が出力され、図45のSS57からSS58に示すように、データラッチ群BDLからデータラッチ群XDLにデータがコピーされる。
その後、コントローラ200は、コマンド“c56”と、5つのアドレスを出力し、コマンド“c57”を入出力信号I/Oに出力する。シーケンサ170は、指定されたカラムアドレスのデータラッチ群XDLのデータの読み出しを実行し、図45のSS59に示すように、読み出されたデータ“info”を出力することができる。
その後、コントローラ200は、読み出されたデータ(シフト情報)を用いて、データの読み出しシーケンスを実行することで、データの読み出しを行うことができる。
次に、管理情報MIの更新及び管理情報MIのメモリセルアレイ110への書き込み処理について説明する。
図46は、定常状態における管理情報MIの更新処理のコマンドシーケンスを示す図である。図47は、管理情報MIの更新処理における、メモリセルアレイと5つのデータラッチ群におけるデータの格納状況の変化を説明するための図である。ここでは、データラッチ群BDLの管理情報MIの更新について説明する。
更新処理のコマンドシーケンスSQ21では、最初にコマンド“c73”が出力され、図47のSS61からSS62に示すように、データラッチ群BDLからデータラッチ群XDLにデータがコピーされる。
その後、コントローラ200は、データラッチ群XDL中の指定されたカラムアドレスのデータを更新するコマンド“c61”と、5つのアドレスを入出力信号I/Oに出力すると、図47のSS63に示すように、データラッチ群XDLのデータの一部が更新される。
コントローラ200は、図46に示したコマンドシーケンスSQ21の後に、図31に示したコマンドを実行することによって、更新データが、メモリセルアレイ110に記憶される。
図48は、更新データのメモリセルアレイ110への書き込みにおけるデータの格納状況の変化を説明するための図である。図48に示すように、メモリセルアレイと5つのデータラッチ群におけるデータは、SS64からSS65の状態に変化する。
次に、3ページ分の管理情報MIをデータラッチ群ADL、BDL、CDLに格納した場合、データの読み出し動作について説明する。
ホスト機器300からの読み出し要求が、どのブロックBLKに対するものかが判明すると、コントローラ200は、読み出し要求に関わるブロックBLKの管理情報MIを、データラッチ群XDLに転送し、データラッチ群XDLから管理情報MIを取得してから、取得した管理情報MIを用いて読み出しコマンドを出力する。
図49は、データの読み出しを行うときに用いられる管理情報MIであるシフト情報の選択を説明するための図である。図50は、データの読み出しを行うときの5つのデータラッチ群の状態を示す図である。
定常状態では、読み出しデータのシフト量データがデータラッチ群XDLに存在しないので、ホスト機器300からの読み出し要求を受けてから、読み出しデータに関わる管理情報MI(例えばシフト情報)を格納しているデータラッチ群から、データラッチ群XDLの格納領域に、管理情報MIはコピーされる。
例えば、ブロックBLK0〜999中のブロックBLKnのm番目のワード線WLmのデータの読み出しが行われることが判定した後に、コントローラ200は、ブロックBLK0〜999中のブロックBLKnに対応する管理情報MIを格納しているデータラッチ群ADLのデータを、データラッチ群XDLにコピーし、データラッチ群XDLのデータ領域中の、ブロックBLKnのワード線WLmに対応するシフト情報を読み出す。読み出したシフト情報を用いて、コントローラ200は、データの読み出しをすることができる。
図50に示すように、データの読み出しが行われるとき、データラッチ群XDLは、読み出しデータの格納に使用される。ブロックBLKnのワード線WLmのユーザデータは、データラッチ群SDLに転送された後、データラッチ群XDLのデータ領域にコピーされ、コントローラ200は、データラッチ群XDLのデータ領域からデータを読み出すことができる。
なお、管理情報MIのデータラッチ群XDLへの転送は、ホスト機器300からの読み出し要求を受けてから行うのではなく、管理情報MIを、データラッチ群ADL、BDL、CDLのいずれかからデータラッチ群XDLに事前にしておいてもよい。
その場合、データラッチ群ADL、BDL、CDLの3つの内の1つのデータを、データラッチ群XDLへコピーしているので、3分の1の確率で、読み出しデータのシフト情報がデータラッチ群XDLに存在する。
図51は、コントローラ200とNAND型フラッシュメモリ100のデータの読み出しの処理の流れの例を示すフローチャートである。図51において、図14及び図26と同じ処理は、同じステップ番号を付して説明は簡略にする。
コントローラ200は、ホスト機器300からの読み出し要求に関わる対象アドレスを特定した後(S1)、対象アドレスのヒストリ値すなわちシフト情報が登録されているデータラッチ群を同定し、その同定したデータラッチ群のデータをデータラッチ群XDLへコピーするコマンドを出力する(S21)。
もしも、読み出しコマンドに関わる対象アドレスに関わるヒストリ値がデータラッチ群XDLに既に格納されているときは、この処理はスキップされる。しかし、読み出しコマンドに関わる対象アドレスに関わるヒストリ値がデータラッチ群XDLに格納されていないときは、S21の処理は、実行される。S21の実行の結果、NAND型フラッシュメモリ100内では、対象アドレスのヒストリ値すなわちシフト情報が登録されている複数のデータラッチ群から、データラッチ群XDLにデータがコピーされる(S22)。
S21の実行後あるいはS21のスキップ後、コントローラ200は、ヒストリデータHD中の対象アドレスのシフト情報すなわちヒストリ値(ここではインデックス番号)が登録されているカラムアドレスのデータラッチ群XDLのデータを出力させるコマンドを出力する(S11)。そのコマンドに応じて、NAND型フラッシュメモリ100は、指定されたカラムアドレスのデータラッチ群XDLのデータ(すなわちインデックス番号)をコントローラ200へ返す処理を実行する(S12)。
コントローラ200は、特定した物理アドレスと、取得したインデックス番号に対応するシフト量データとに基づいて、読み出しコマンドをNAND型フラッシュメモリ100に出力する(S3)。NAND型フラッシュメモリ100は、コントローラ200からの読み出しコマンドを受信すると、読み出しコマンドに基づいてデータの読み出しを実行する(S4)。
読み出しの結果は、コントローラ200により取得される。コントローラ200は、データの読み出しができた、すなわちエラーがあってもECC回路260によりエラー訂正ができたかを判定する(S5)。
データの読み出しができたときは(S5:YES)、コントローラ200は、読み出したデータをホスト機器300へ返す(S6)。
データの読み出しができなかったときは(S5:NO)、コントローラ200は、上述した再読み出し処理を実行する(S7)。
S7では、上述した再読み出し処理が、シフトリード等をしながら行われ、コントローラ200は、エラー訂正が成功した、すなわちデータの読み出しができたかを判定する(S8)。エラー訂正が成功した、すなわちデータの読み出しができたときは(S8:YES)、コントローラ200は、エラー訂正処理されたデータをホスト機器300へ返す(S6)。
さらに、再読み出し処理(S7)の後、エラー訂正が成功した、すなわちデータの読み出しができたときは(S8:YES)、コントローラ200は、対象アドレスのヒストリ値すなわちシフト情報が登録されているデータラッチ群のデータをデータラッチ群XDLにコピーさせるコマンドを入出力信号I/Oに出力する(S25)。その結果、シーケンサ170は、対象アドレスのヒストリ値すなわちシフト情報が登録されているデータラッチ群のデータを、データラッチ群XDLにコピーする(S26)。
さらに、S25の後、コントローラ200は、再読み出しができたときのシフト量データに対応するインデックス番号を、対象アドレスに対応するカラムアドレスに上書き更新するためのコマンドを出力する(S17)。その結果、シーケンサ170は、データラッチ群XDL中の指定されたカラムアドレスのデータを、再読み出しができたときのシフト量データのインデックス番号で更新する(S18)。
さらに、S17の後、コントローラ200は、更新したデータラッチ群XDLのデータを、対象アドレスのヒストリ値すなわちシフト情報が登録されているデータラッチ群にコピーするコマンドを出力する(S27)。その結果、シーケンサ170は、対象アドレスのヒストリ値すなわちシフト量が登録されているデータラッチ群のデータを、データラッチ群XDLからコピーする(S28)。
[パトロール処理]
また、NAND型フラッシュメモリ100では、時間経過に伴って記憶されたデータの劣化に対応するために、記憶されたデータを読み出して、読み出したデータの記憶状態を検査すなわちベリファイするパトロール処理が実行される。パトロール処理の結果、読み出しレベルの更新、すなわちシフト情報の更新が行われる。すなわち、コントローラ200は、メモリセルアレイ110に対してデータの記憶状態をベリファイするパトロール処理を実行したときは、パトロール処理の結果として更新された管理情報、ここではシフト情報を、メモリセルアレイ110に記憶する。
[パトロール処理]
また、NAND型フラッシュメモリ100では、時間経過に伴って記憶されたデータの劣化に対応するために、記憶されたデータを読み出して、読み出したデータの記憶状態を検査すなわちベリファイするパトロール処理が実行される。パトロール処理の結果、読み出しレベルの更新、すなわちシフト情報の更新が行われる。すなわち、コントローラ200は、メモリセルアレイ110に対してデータの記憶状態をベリファイするパトロール処理を実行したときは、パトロール処理の結果として更新された管理情報、ここではシフト情報を、メモリセルアレイ110に記憶する。
図52は、パトロール処理の流れの例を示すフローチャートである。パトロール処理は、所定の周期で、所定の条件下で実行される。ここでは、パトロール処理は、ブロックBLKの所定の対象領域(以下、パトロール対象領域という)毎に実行される。コントローラ200は、パトロール処理の対象のブロックBLKが選択され、そのブロックBLK内のパトロール対象領域が選択されて、パトロール処理が実行される。
コントローラ200は、まず、パトロール処理の対象ブロックBLKiのパトロール対象領域のインデックスjを設定する(S31)。
コントローラ200は、インデックスjのパトロール対象領域の対象アドレスaddrを設定し(S32)、対象アドレスaddrの読み出し時の所定の処理を実行する(S33)。S33は、対象ブロックBLK内の対象ブロックの全てに対して、所定の処理を実行するように、S32とS33は、繰り返される。
S31で設定されたパトロール対象領域への読み出し処理が終了すると、ブロックiのパトロール対象領域のインデックスjを1つインクリメントする。
コントローラ200は、パトロール処理を、各ブロックBLK内の複数のパトロール対象領域に対して、一つずつ、所定のタイミングで実行する。
図53は、パトロール処理における対象アドレスに対する読み出し時の所定の処理の流れの例を示すフローチャートである。
コントローラ200は、ブロックiの消去回数に対応するテーブルのインデックス番号のシフト量で対象アドレスのデータを読み出すすなわちシフトリードする(S35)。
コントローラ200は、ECCによるエラー訂正が成功したか否かを判定する(S36)。エラー訂正が成功したとき(S36:YES)、処理は、何もしない。エラー訂正が成功しなかったとき(S36:NO)、上記テーブルのインデックス番号が最後の番号未満であるかを判定する(S37)。
上記テーブルのインデックス番号が最後の番号未満であるとき(S37:YES)、コントローラ200は、当該ページのインデックス番号をインクリメントし(S38)、処理は、S35に戻り、S35とS36の処理を繰り返す。
上記テーブルのインデックス番号が最後の番号未満でないとき(S37:NO)、コントローラ200は、トラッキング処理などの他の処理を実行する(S39)。
図54から図57は、パトロール処理が行われたときにおけるメモリセルアレイ110及び複数のデータラッチ群の状態の変化を説明するための図である。
図54は、アイドル状態における管理情報格納領域MIAと複数のデータラッチ群のデータの格納状態を示す図である。アイドル状態では、書き込みも読み出しも行われていない。
図55及び図56は、パトロール処理が実行されるときの、5つのデータラッチ群におけるデータの格納状況の変化を説明するための図である。
ブロックBLK0〜BLK999のデータに対してパトロール処理を実行するために、コントローラ200は、データラッチ群ADLの格納領域のデータを、データラッチ群XDLの格納領域にコピーする。そして、図55のSS61に示すように、データラッチ群XDLのシフト情報を用いて、データの記憶状態の検査すなわちベリファイを実行する。図55のSS62に示すように、データの読み出しが行われるため、データラッチ群XDLの格納領域のデータは、読み出しに使用される。
コントローラ200は、検査が終了すると、検査結果から、シフト情報の更新が必要と判断された場合、図55のSS63に示すように、データラッチ群ADLのデータをデータラッチ群XDLにコピーする。
コントローラ200は、データラッチ群XDLにおける、シフト情報(例えばインデックス番号)を変更する。図56のSS64は、データラッチ群XDL中の一部のデータが書き換えられた状態を示す。コントローラ200は、図56のSS65に示すように、データラッチ群XDLのデータを、データラッチ群ADLにコピーする。
上述した処理を繰り返すことにより、ブロックBLK0〜BLK999のデータに対するパトロール処理が実行されると、SS66に示すように、データラッチ群XDL中のデータは、データラッチ群ADLにコピーされる。
図57は、ブロックBLK0〜BLK999のデータに関わる管理情報格納領域MIAと複数のデータラッチ群のデータの格納状態を示す図である。SS66の状態から、コントローラ200は、メモリセルアレイ110の管理情報格納領域MIAへの管理情報MIの書き込みを行う。図57は、例えば、ブロックBLK0〜BLK999のデータの4分の1についてのシフト情報の更新が行われた状態を示す。
なお、上述した例では、更新データは、データラッチ群XDLに格納された後に、データラッチ群ADLにコピーされているが、更新データをRAM220に一時的に格納し、RAM220からデータラッチ群ADLへ転送するようにしてもよい。
図58は、更新データをRAM220に格納している途中の状態を示す、メモリシステムの構成を説明するためのブロック図である。図59は、更新データをRAM220に格納し終わって、更新データをデータラッチ群ADLに転送する状態を示す、メモリシステムの構成を説明するためのブロック図である。
図58に示すように、更新データは、RAM220中の一部領域に格納される。RAM220に格納された更新データは、図59に示すように、コントローラ200からNAND型フラッシュメモリ100のデータラッチ群ADLに転送される。
以上のように、本実施形態によっても、第1実施形態と同様の効果を得ることができると共に、より多くの管理情報MIを小さなレイテンシで読み出すことができるメモリシステム及びメモリコントローラを提供することができる。
特に、更新データをRAM220に一時的に格納してから、データラッチ群ADLに転送する場合は、途中でプログラム動作が発生しても、RAM220のデータをメモリセルアレイ110へ待避させることなく、プログラム動作の終了後に、データラッチ群ADLへの更新データの転送を再開することができる。
(第3実施形態)
第1及び第2実施形態では、メモリシステムが1つのNAND型フラッシュメモリ100を有しているが、第3実施形態では、メモリシステムは、2つのNAND型フラッシュメモリ100を有し、かつ各NAND型フラッシュメモリ100の複数のデータラッチ群には、2つのメモリセルアレイ110中の2つの管理情報MIが格納される。
(第3実施形態)
第1及び第2実施形態では、メモリシステムが1つのNAND型フラッシュメモリ100を有しているが、第3実施形態では、メモリシステムは、2つのNAND型フラッシュメモリ100を有し、かつ各NAND型フラッシュメモリ100の複数のデータラッチ群には、2つのメモリセルアレイ110中の2つの管理情報MIが格納される。
第3実施形態のメモリシステムの構成は、第1実施形態のメモリシステムの構成と同じであるので、第3実施形態のメモリシステムにおいて、第1実施形態のメモリシステムの構成と同じ構成要素については同じ符号を用いて説明は省略し、第1実施形態のメモリシステムの構成と異なる構成についてのみ説明する。
図60〜図62は、2つのNAND型フラッシュメモリ100の2つの管理情報MIの格納状態の変化を説明するための図である。2つのNAND型フラッシュメモリ100の一方を、チップC0とし、他方をチップC1とする。すなわち、各チップC0、C1は、複数の物理ブロックを有し、複数の物理ブロックのそれぞれはページ単位でアクセス可能な記憶領域を有する、不揮発性のメモリとしてのメモリセルアレイ110を有する。本実施形態のメモリシステム1Aは、1つのコントローラ200と、2つのチップC0、C1を含む。コントローラ200は、チップC0及びC1各メモリに対してページ単位でのデータの読み出し及び書き込みを制御する。コントローラ200は、2つのチップC0、C1のいずれかの基板上に形成されてもよいし、別チップ上に形成されていてもよい。
図60は、2つのNAND型フラッシュメモリ100の2つの管理情報MIの格納状態を示す図である。図61は、チップC0がプログラム中であるときにおける、2つのNAND型フラッシュメモリ100の2つの管理情報MIの格納状態を示す図である。各チップC0、C1は、複数のデータラッチ群SDL、ADL、BDL、CDL、XDLを有する。
チップC0のメモリセルアレイ110の管理情報格納領域MIAC0には、チップC0とチップC1の両方の管理情報MIが格納されている。同様に、チップC1のメモリセルアレイ110の管理情報格納領域MIAC1にも、チップC0とチップC1の両方の管理情報MIが格納されている。
図60のSS71に示すように、チップC0において、チップC0の管理情報MIは、データラッチ群ADLと、データラッチ群BDLの半分とに格納され、チップC1の管理情報MIは、データラッチ群BDLの半分と、データラッチ群CDLとに格納される。
同様に、図60のSS72に示すように、チップC1においても、チップC0の管理情報MIは、データラッチ群ADLと、データラッチ群BDLの半分とに格納され、チップC1の管理情報MIは、データラッチ群BDLの半分と、データラッチ群CDLとに格納される。
すなわち、コントローラ200は、チップC0及びC1の各メモリセルアレイ110からのデータの読み出し処理を実行するとき又は実行をする前に、データの読み出しのために用いる管理情報MI(例えば、ヒストリデータHD)を、チップC0及びC1の両方のデータラッチ群ADL、BDL、CDLに格納する定常状態化処理を実行する。
このような構成において、一方のチップC0において、データの書き込みが行われているときすなわちプログラムが実行されているときに、コントローラ200は、そのチップC0に対する、データの読み出し要求を受ける場合がある。
このような場合、図61のSS73に示すように、チップC0のデータラッチ群ADL、BDL、CDLは、データの書き込みのために使用されるが、SS74に示すように、チップC1のデータラッチ群ADL、BDL、CDLのデータは、データの書き込みのために使用されず、チップC0とチップC1の管理情報MIを格納したままの状態である。
よって、チップC0に対してデータの書き込みが実行されているときに、チップC0に対するデータの読み出しを実行するときには、図62のSS76に示すように、チップC1のデータラッチ群ADLと、BDLの一部とに格納されている管理情報MI、ここではシフト情報を読み出しアドレスに対応するカラムアドレスに基づいて、データラッチ群XDLにコピーし、データラッチ群XDLから読み出すことができる。図62のSS76では、データラッチ群ADLに、読み出しアドレスに対応するシフト情報が格納されていたので、データラッチ群ADLのデータがデータラッチ群XDLにコピーされている。
すなわち、コントローラ200は、チップC0メモリセルアレイ110に対してデータの書き込み処理が実行の途中においてチップC0メモリセルアレイ110からのデータの読み出し処理を実行するときは、チップC1のデータラッチ群ADL、BDLから管理情報MIを読み出し、その読み出した管理情報MIを用いてチップC0のデータの読み出し処理を実行する。
よって、2つのチップが、互いの管理情報MIを互いに複数のデータラッチ群に格納することによって、コントローラ200は、図32で示したようなサスペンドリード処理時に、管理情報MIをメモリセルアレイ110中の管理情報格納領域MIAから読み出すためのコマンドシーケンスを実行することなく、管理情報MI、ここではシフト情報を他方のチップの複数のデータラッチ群から取得して、そのシフト情報を用いてデータの読み出しを行うことができる。すなわち、チップ間で管理情報を分散して格納するようにしたので、書き込みのサスペンド中に、SLCモードによる管理情報MIの読み出しを行う必要がない。
図63は、データの読み出し手順のコマンドシーケンスSQ31を示す図である。チップC0に対するプログラム動作が行われ、チップC0のデータラッチ群に管理情報MIが格納されていない場合、コントローラ200は、チップC1を選択するコマンド“c74”を入出力信号I/Oに出力し、チップC1を選択する。読み出しデータ用のシフト情報が、チップC1のデータラッチ群ADLにあるときは、コマンド“c54”を入出力信号I/Oに出力し、データラッチ群ADLの全データを、データラッチ群XDLにコピーすることが行われる。
その後は、レジスタリードコマンドであるコマンド“c56”を入出力信号I/Oに出力し、チップC1のデータラッチ群XDL中の指定されたカラムアドレスの先頭を指定して、シフト情報を読み出す。
その読み出したシフト情報をNAND型フラッシュメモリ100に出力した後に、データの読み出しコマンドが出力されて、データの読み出しが行われる。
以上のように、本実施形態によれば、第1実施形態と同様の効果を得ることができる。さらに、本実施形態の場合、あるチップに対するプログラム動作中に、そのチップへの読み出し要求があったときに、そのチップのメモリセルアレイ110中の管理情報格納領域MIAから管理情報MIを読み出す必要がないので、管理情報格納領域MIAから管理情報MIを読み出す時間分だけ、レイテンシを小さくすることができる。
(第4実施形態)
本実施形態は、コントローラチップとメモリチップが貼り合わされて、チップが積層されて構成されたメモリシステムに関する。
(第4実施形態)
本実施形態は、コントローラチップとメモリチップが貼り合わされて、チップが積層されて構成されたメモリシステムに関する。
第4実施形態のメモリシステムの構成は、第1実施形態のメモリシステムの構成と同じ構成要素を含むので、第4実施形態のメモリシステムにおいて、第1実施形態のメモリシステムの構成と同じ構成要素については同じ符号を用いて説明は省略し、第1実施形態のメモリシステムの構成と異なる構成についてのみ説明する。
1枚の基板上に、NAND型フラッシュメモリ100の回路と、コントローラ200の回路を形成した場合、コントローラ200の回路は、メモリセルアレイ110の製造プロセスに基づいて製造されるため、RAM220の領域のサイズを大きくすることができない場合がある。
そこで、本実施形態では、コントローラ200を搭載したチップと、メモリセルアレイ110を搭載したチップを、互いに別チップとしている。
図64は、本実施形態に関わるメモリシステム1Bの構成を説明するための組立図である。なお、ここでは、メモリセルアレイ110が搭載されたチップは、1枚で、コントローラ200を搭載したチップに積層されているが、メモリセルアレイ110が搭載されたチップを複数枚、コントローラ200を搭載したチップに積層してもよい。
メモリシステム1Bは、コントローラなどが搭載された第1チップ400と、メモリセルアレイ110などが搭載された第2チップ401とを有して構成され、第1チップ400と第2チップ401とが貼り合わせて構成されている。
第1チップ400は、プロセッサ230、RAM420、各種インターフェース回路等を含むコントローラ200、及び複数のセンスユニットSAUが搭載されたチップであり、これらの回路が、CMOS形成プロセスにより製造された半導体集積回路として第1チップ400上に形成されている。すなわち、第1チップ400は、第2チップ401と貼り合わせられ、複数の物理ブロックに対してページ単位でのデータの読み出し及び書き込みを制御するコントローラ200と、RAM420とを有する。後述するように、RAM420は、第2チップ401のメモリセルアレイ110からのデータの読み出し処理を実行するとき又は実行をする前に、データの読み出しのために用いる管理情報MI(例えば、ヒストリデータHD)が格納可能なRAM領域を有する。
一方、第2チップ401は、NAND型フラッシュメモリのコア部分であるメモリセルアレイ110が搭載されたチップであり、メモリセルアレイ110を製造するためのプロセスにより製造される。すなわち、第2チップ401は、複数の物理ブロックを有し、複数の物理ブロックのそれぞれはページ単位でアクセス可能な記憶領域を有する、不揮発性のメモリセルアレイ110を有する半導体チップである。メモリセルアレイ110を有する第2チップ401は、第1チップ400上に搭載されて貼り合わされる。
図64に示すように、第1チップ400には、コントローラ200などの各種回路が形成された周辺回路領域(PERI)と、複数のセンスユニットSAU及び演算回路YLOGが形成されたSA/YLOG領域と、RAM220が形成されたRAM領域を有する。さらに、第1チップ400には、第2チップ401との電気的接続のための複数のパッドが形成されている。複数のパッドは、複数のビット線BL用のパッドPD1と、複数のワード線WL用のパッドPD2と、制御信号等用のパッドPD3を含む。
第2チップ401には、メモリセルアレイ110が形成されたセルアレイ領域(Cell)を有する。さらに、第2チップ401にも、第1チップ400との電気的接続のための複数のパッドが形成されている。複数のパッドは、複数のビット線BL用のパッドPD1aと、複数のワード線WL用のパッドPD2aと、制御信号等用のパッドPD3aを含む。第1のチップ400の複数のパッドと第2チップ401複数のパッドとは、例えばボールバンプにより電気的に接続される。
第1チップ400の複数のパッドと第2チップ401の複数のパッドとがボールバンプを介して接続されるように、2枚のチップを貼り合わせることにより、メモリシステム1Aが製造される。さらに、貼り合わされた2枚のチップは、別の基板上に搭載されてワイヤボンディングされ、樹脂によりパッケージングされる。
従来は、コントローラ200も、NAND型フラッシュメモリ100と同じ基板上に形成されていたため、RAM220のためのRAM領域が広く取れなかったが、本実施形態の構成によれば、第2チップ401とは別の第1チップ400には、RAM220のためのRAM領域を広くすることができるので、管理情報MIのデータ量が多くなっても、RAM220に格納することができる。
RAM220に格納された管理情報MIはパトロール処理などにより更新されるため、管理情報MIは、所定の周期であるいは所定のタイミングで、メモリセルアレイ110の管理情報格納領域MIAへ記憶する処理が実行される。
図65は、第1チップ400による第2チップ401のデータの読み出しの処理の流れの例を示すフローチャートである。図65において、図14、図26及び図36と同じ処理は、同じステップ番号を付して説明は簡略にする。
第1チップ400のコントローラ200は、ホスト機器300からの読み出し要求に関わる対象アドレスを特定した後(S1)、対象アドレスのシフト情報が登録されているCMOSチップである第1チップ400から対象アドレスの管理情報MI(例えばシフト情報)を出力させる指示コマンドを出力する(S41)。すなわち、対象アドレスのヒストリ値すなわちシフト情報が登録されているRAM220から読み出し対象アドレスのシフト情報データを読み出すためのコマンドが出力される。RAM220は、指定されたアドレスの管理情報(シフト情報)をコントローラ200に出力する(S32)。
その後、データの読み出しが行われ、再読み出し後(S7)に、エラー訂正に成功したとき(S8:YES)は、第1チップ400上の管理情報MIの更新コマンドを出力する(S43)。第1チップ400内のRAM220では、コマンドで指定されたアドレスの管理情報(シフト情報)が更新される(S44)。
以上のように、本第4実施形態によれば、コントローラ200が搭載されたチップと、メモリセルアレイ110が搭載されたチップとを分けたので、RAM領域を大きく取れるので、十分な量の管理情報MIを格納する記憶領域を確保することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1、1A メモリシステム、6 ストリング、10 p型ウェル領域、11、12、13 配線層、14 導電体、15 ゲート絶縁膜、17 ブロック絶縁膜、18 金属配線層、19 n+ 型不純物拡散層、20 コンタクトプラグ、21 金属配線層、22 p+ 型不純物拡散層、23 コンタクトプラグ、24 金属配線層、100 NAND型フラッシュメモリ、110 メモリセルアレイ、120 ロウデコーダ、130 ドライバ回路、140 カラムデコーダ、150 アドレスレジスタ、160 コマンドレジスタ、170 シーケンサ、200 メモリコントローラ、210 ホストインターフェース回路、230 プロセッサ、240 バッファメモリ、250 NANDインターフェース回路、260 ECC回路、300 ホスト機器、400、401 チップ。
Claims (21)
- 記憶領域を有する不揮発性のメモリと、
前記データの読み出し及び書き込みを制御するコントローラと、
前記コントローラと前記メモリとの間で前記データの入出力のために用いられる第1のデータラッチ群と、
保持されたデータが、前記コントローラにより前記メモリから前記データが読み出されるときに、維持される第2のデータラッチ群と、
を有し、
前記コントローラは、前記メモリからの前記データの読み出し処理を実行するとき又は実行をする前に、前記データの読み出しのために用いる管理情報を、前記第2のデータラッチ群に格納する、メモリシステム。 - 前記コントローラは、前記読み出し処理の実行前に、前記第2のデータラッチ群から前記第1のデータラッチ群へ前記管理情報を予めコピーしておく、請求項1に記載のメモリシステム。
- 前記第2のデータラッチ群は、前記データが前記コントローラにより前記メモリへ書き込まれるときに使用される、請求項1に記載のメモリシステム。
- 前記管理情報は、前記メモリの所定の格納領域へ格納され、
前記コントローラは、外部からの要求に応じた前記読み出し処理が実行される前に、前記管理情報を、前記所定の格納領域から読み出して、前記第2のデータラッチ群に格納する、請求項1に記載のメモリシステム。 - 前記コントローラは、前記管理情報が更新された場合、更新された前記管理情報を、前記メモリに記憶する、請求項1に記載のメモリシステム。
- 前記第2のデータラッチ群は、複数ある、請求項1に記載のメモリシステム。
- 前記メモリは、複数の物理ブロックを有し、
前記複数の第2のデータラッチ群の各々は、対応する物理ブロックの前記管理情報を格納する、請求項6に記載のメモリシステム。 - 前記複数の物理ブロックのそれぞれは、ページ単位でアクセス可能な記憶領域を有する、請求項7に記載のメモリシステム。
- 前記管理情報は、前記コントローラが前記読み出し処理を実行するときに、前記データの読み出しレベルをシフトするためのシフト情報である、請求項1に記載のメモリシステム。
- 前記コントローラは、前記メモリに対して前記データの記憶状態をベリファイするパトロール処理を実行したときは、前記パトロール処理の結果として更新された前記シフト情報を、前記メモリに記憶する、請求項9に記載のメモリシステム。
- 記憶領域を有する不揮発性の第1メモリと、
記憶領域を有する不揮発性の第2メモリと、
前記第1及び前記第2のメモリに対して前記データの読み出し及び書き込みを制御するコントローラと、
前記コントローラと前記第1のメモリとの間で前記データの入出力のために用いられる第1のデータラッチ群と、
前記コントローラと前記第2のメモリとの間で前記データの入出力のために用いられる第2のデータラッチ群と、
保持されたデータが、前記コントローラにより前記第1のメモリから前記データが読み出されるときに、維持される第3のデータラッチ群と、
保持されたデータが、前記コントローラにより前記第2のメモリから前記データが読み出されるときに、維持される第4のデータラッチ群と、
を有し、
前記コントローラは、前記第1及び前記第2のメモリからの前記データの読み出し処理を実行するとき又は実行をする前に、前記データの読み出しのために用いる管理情報を、前記第3及び前記第4のデータラッチ群に格納する、メモリシステム。 - 前記コントローラは、前記第1のメモリに対して書き込み処理が実行の途中において前記第1のメモリからの前記データの読み出し処理を実行するときは、前記第4のデータラッチ群から前記管理情報を読み出し、前記管理情報を用いて前記データの読み出し処理を実行する、請求項11に記載の、メモリシステム。
- 記憶領域を有する不揮発性のメモリを有する第1の半導体チップと、
前記第1の半導体チップと貼り合わせられ、データの読み出し及び書き込みを制御するコントローラと、前記メモリからの前記データの読み出し処理を実行するとき又は実行をする前に、前記データの読み出しのために用いる管理情報を格納可能なRAM領域と、を有する第2の半導体チップと、
を有するメモリシステム。 - 記憶領域と、データの入出力のために用いられる第1のデータラッチ群と、前記データが読み出されるときに保持データが維持される第2のデータラッチ群と、を有する不揮発性のメモリに対する前記データの読み出し及び書き込みを制御するメモリコントローラであって、
前記メモリからの前記データの読み出し処理を実行するとき又は実行をする前に、前記データの読み出しのために用いる管理情報を、前記第2のデータラッチ群に格納する、メモリコントローラ。 - 前記コントローラは、前記読み出し処理の実行前に、前記第2のデータラッチ群から前記第1のデータラッチ群へ前記管理情報を予めコピーする、請求項14に記載のメモリコントローラ。
- 前記読み出し処理の実行前に、前記第2のデータラッチ群から前記第1のデータラッチ群へ前記管理情報を予めコピーしておく、請求項15に記載のメモリコントローラ。
- 前記管理情報は、前記メモリの所定の格納領域へ格納され、
外部からの要求に応じた前記読み出し処理が実行される前に、前記管理情報を、前記所定の格納領域から読み出して、前記第2のデータラッチ群に格納する、請求項15に記載のメモリコントローラ。 - 前記管理情報が更新された場合、更新された前記管理情報を、前記メモリに記憶する、請求項14に記載のメモリコントローラ。
- 前記メモリは、複数の物理ブロックを有し、
前記複数の第2のデータラッチ群の各々は、対応する物理ブロックの前記管理情報を格納する、請求項6に記載のメモリシステム。 - 第1の記憶領域を有する不揮発性の第1メモリと、第2の記憶領域を有する不揮発性の第2メモリと、前記第1のメモリとの間で前記データの入出力のために用いられる第1のデータラッチ群と、前記第2のメモリとの間で前記データの入出力のために用いられる第2のデータラッチ群と、前記第1のメモリから前記データが読み出されるときに第1の保持データが維持される第3のデータラッチ群と、前記第2のメモリから前記データが読み出されるときに第2の保持データが維持される第4のデータラッチ群と、を有し、前記第1のメモリ及び前記第2のメモリに対する前記データの読み出し及び書き込みを制御するメモリコントローラであって、
前記第1及び前記第2のメモリからの前記データの読み出し処理を実行するとき又は実行をする前に、前記データの読み出しのために用いる管理情報を、前記第3及び前記第4のデータラッチ群に格納する、メモリコントローラ。 - 前記第1のメモリに対して書き込み処理が実行の途中において前記第1のメモリからの前記データの読み出し処理を実行するときは、前記第4のデータラッチ群から前記管理情報を読み出し、前記管理情報を用いて前記データの読み出し処理を実行する、請求項20に記載の、メモリコントローラ。
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020096428A JP2021190150A (ja) | 2020-06-02 | 2020-06-02 | メモリシステム及びメモリコントローラ |
US17/117,937 US11545223B2 (en) | 2020-06-02 | 2020-12-10 | Memory system and memory controller |
TW111120837A TWI841977B (zh) | 2020-06-02 | 2020-12-22 | 記憶體的控制方法 |
TW109145481A TWI770734B (zh) | 2020-06-02 | 2020-12-22 | 記憶體系統及記憶體控制器 |
CN202110093276.9A CN113764018A (zh) | 2020-06-02 | 2021-01-25 | 存储器系统以及存储器控制器 |
US18/053,271 US11869601B2 (en) | 2020-06-02 | 2022-11-07 | Memory system and memory controller |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020096428A JP2021190150A (ja) | 2020-06-02 | 2020-06-02 | メモリシステム及びメモリコントローラ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021190150A true JP2021190150A (ja) | 2021-12-13 |
Family
ID=78705224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020096428A Pending JP2021190150A (ja) | 2020-06-02 | 2020-06-02 | メモリシステム及びメモリコントローラ |
Country Status (4)
Country | Link |
---|---|
US (2) | US11545223B2 (ja) |
JP (1) | JP2021190150A (ja) |
CN (1) | CN113764018A (ja) |
TW (1) | TWI770734B (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2021190150A (ja) * | 2020-06-02 | 2021-12-13 | キオクシア株式会社 | メモリシステム及びメモリコントローラ |
JP2022139171A (ja) * | 2021-03-11 | 2022-09-26 | キオクシア株式会社 | メモリシステム |
TWI807542B (zh) * | 2021-12-17 | 2023-07-01 | 華邦電子股份有限公司 | 記憶體系統 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7716180B2 (en) * | 2005-12-29 | 2010-05-11 | Amazon Technologies, Inc. | Distributed storage system with web services client interface |
TWI367490B (en) * | 2006-09-08 | 2012-07-01 | Sandisk Corp | Method of pseudo random and command driven bit compensation for the cycling effects in flash memory and apparatus therefor |
JP2008123330A (ja) * | 2006-11-14 | 2008-05-29 | Toshiba Corp | 不揮発性半導体記憶装置 |
JP5142692B2 (ja) | 2007-12-11 | 2013-02-13 | 株式会社東芝 | 不揮発性半導体記憶装置 |
JP2009238874A (ja) | 2008-03-26 | 2009-10-15 | Toshiba Corp | 半導体メモリ及びその製造方法 |
JP5283960B2 (ja) | 2008-04-23 | 2013-09-04 | 株式会社東芝 | 三次元積層不揮発性半導体メモリ |
JP2009266944A (ja) | 2008-04-23 | 2009-11-12 | Toshiba Corp | 三次元積層不揮発性半導体メモリ |
JP2010199235A (ja) | 2009-02-24 | 2010-09-09 | Toshiba Corp | 不揮発性半導体記憶装置 |
KR101736792B1 (ko) | 2010-09-20 | 2017-05-18 | 삼성전자주식회사 | 플래시 메모리 및 그것의 셀프 인터리빙 방법 |
JP2012069205A (ja) | 2010-09-22 | 2012-04-05 | Toshiba Corp | 不揮発性半導体記憶装置 |
JP2012252740A (ja) | 2011-06-02 | 2012-12-20 | Toshiba Corp | 不揮発性半導体記憶装置 |
US8406053B1 (en) | 2011-09-21 | 2013-03-26 | Sandisk Technologies Inc. | On chip dynamic read for non-volatile storage |
US8630118B2 (en) * | 2011-11-09 | 2014-01-14 | Sandisk Technologies Inc. | Defective word line detection |
KR101878455B1 (ko) | 2011-11-18 | 2018-07-16 | 삼성전자주식회사 | 비휘발성 메모리 장치의 데이터 독출 방법 및 구동 방법 |
KR20130057086A (ko) * | 2011-11-23 | 2013-05-31 | 삼성전자주식회사 | 비휘발성 메모리 장치의 프로그램 방법 |
US8902657B2 (en) * | 2012-09-07 | 2014-12-02 | Kabushiki Kaisha Toshiba | Semiconductor memory device and controller |
JP2014167842A (ja) * | 2013-02-28 | 2014-09-11 | Toshiba Corp | 半導体記憶装置及びそのコントローラ |
JP2014102867A (ja) * | 2012-11-20 | 2014-06-05 | Toshiba Corp | 半導体記憶装置及びその制御方法 |
KR102175039B1 (ko) * | 2013-06-25 | 2020-11-05 | 삼성전자주식회사 | 불휘발성 메모리 장치의 데이터 기입 방법 |
EP3038110B1 (en) * | 2013-08-22 | 2018-10-10 | Renesas Electronics Corporation | Semiconductor device which masks storage data of twin cells and outputs same |
CN108108311A (zh) * | 2013-12-12 | 2018-06-01 | 株式会社日立制作所 | 存储装置及存储装置的控制方法 |
CN105283919B (zh) * | 2014-03-31 | 2020-08-28 | 瑞萨电子株式会社 | 半导体装置 |
JP6674361B2 (ja) * | 2016-09-29 | 2020-04-01 | キオクシア株式会社 | メモリシステム |
JP2019053806A (ja) | 2017-09-15 | 2019-04-04 | 東芝メモリ株式会社 | メモリシステム、及びメモリシステムの制御方法 |
JP2019164865A (ja) | 2018-03-20 | 2019-09-26 | 東芝メモリ株式会社 | メモリシステム |
JP2020144668A (ja) * | 2019-03-07 | 2020-09-10 | キオクシア株式会社 | メモリシステム |
JP2021190150A (ja) * | 2020-06-02 | 2021-12-13 | キオクシア株式会社 | メモリシステム及びメモリコントローラ |
-
2020
- 2020-06-02 JP JP2020096428A patent/JP2021190150A/ja active Pending
- 2020-12-10 US US17/117,937 patent/US11545223B2/en active Active
- 2020-12-22 TW TW109145481A patent/TWI770734B/zh active
-
2021
- 2021-01-25 CN CN202110093276.9A patent/CN113764018A/zh active Pending
-
2022
- 2022-11-07 US US18/053,271 patent/US11869601B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
TW202147118A (zh) | 2021-12-16 |
US20210375372A1 (en) | 2021-12-02 |
TWI770734B (zh) | 2022-07-11 |
US11869601B2 (en) | 2024-01-09 |
US11545223B2 (en) | 2023-01-03 |
CN113764018A (zh) | 2021-12-07 |
US20230088099A1 (en) | 2023-03-23 |
TW202236095A (zh) | 2022-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11763893B2 (en) | Memory system | |
JP6297201B2 (ja) | 半導体記憶装置 | |
US10324788B2 (en) | Memory system | |
US20190267100A1 (en) | Memory system | |
JP2020038738A (ja) | 不揮発性メモリ及びメモリシステム | |
US11869601B2 (en) | Memory system and memory controller | |
JP2004086991A (ja) | 不揮発性記憶装置 | |
TWI388982B (zh) | 包含具有電荷累積層及控制閘極之記憶胞的半導體記憶裝置及記憶系統 | |
JP2006073141A (ja) | 記憶システム及びそのデータコピー方法 | |
JP7128088B2 (ja) | メモリシステム | |
US11699486B2 (en) | Semiconductor memory device to hold 5-bits of data per memory cell | |
US9548127B1 (en) | Memory system | |
US20190391758A1 (en) | Semiconductor memory device | |
KR20190012771A (ko) | 컨트롤러 및 그 동작 방법 | |
JP2019053798A (ja) | 半導体記憶装置 | |
JP2019139824A (ja) | メモリシステム | |
JP2010277672A (ja) | 多値nandフラッシュメモリ | |
JP2020181624A (ja) | 半導体記憶装置及びメモリシステム | |
JP2021128810A (ja) | 半導体記憶媒体及びメモリシステム | |
JP4661191B2 (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2007179479A (ja) | メモリコントローラおよびフラッシュメモリシステム | |
JP2021039810A (ja) | メモリシステム | |
TW202117721A (zh) | 記憶體系統 | |
JP5010444B2 (ja) | 半導体記憶装置およびその駆動方法 | |
JP2019160379A (ja) | 半導体記憶装置及びメモリシステム |