JP2023039459A - メモリシステムおよび方法 - Google Patents
メモリシステムおよび方法 Download PDFInfo
- Publication number
- JP2023039459A JP2023039459A JP2021146543A JP2021146543A JP2023039459A JP 2023039459 A JP2023039459 A JP 2023039459A JP 2021146543 A JP2021146543 A JP 2021146543A JP 2021146543 A JP2021146543 A JP 2021146543A JP 2023039459 A JP2023039459 A JP 2023039459A
- Authority
- JP
- Japan
- Prior art keywords
- blocks
- block
- data
- amount
- mode
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 191
- 238000000034 method Methods 0.000 title claims description 159
- 230000008569 process Effects 0.000 claims description 122
- 230000007423 decrease Effects 0.000 claims description 32
- 238000013518 transcription Methods 0.000 description 76
- 230000035897 transcription Effects 0.000 description 76
- 238000012545 processing Methods 0.000 description 39
- 230000007704 transition Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 25
- 101100348113 Mus musculus Neurod6 gene Proteins 0.000 description 22
- 230000002093 peripheral effect Effects 0.000 description 13
- 101100135611 Arabidopsis thaliana PAP12 gene Proteins 0.000 description 11
- 230000003247 decreasing effect Effects 0.000 description 10
- 238000012546 transfer Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 101100481702 Arabidopsis thaliana TMK1 gene Proteins 0.000 description 1
- 101100481704 Arabidopsis thaliana TMK3 gene Proteins 0.000 description 1
- 101150056203 SGS3 gene Proteins 0.000 description 1
- LPQOADBMXVRBNX-UHFFFAOYSA-N ac1ldcw0 Chemical compound Cl.C1CN(C)CCN1C1=C(F)C=C2C(=O)C(C(O)=O)=CN3CCSC1=C32 LPQOADBMXVRBNX-UHFFFAOYSA-N 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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
- 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/5628—Programming or writing circuits; Data input 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/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- 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/7206—Reconfiguration of flash memory system
-
- 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
- G11C2207/00—Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
- G11C2207/22—Control and timing of internal memory operations
- G11C2207/2236—Copy
-
- 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/5641—Multilevel memory having cells with different number of storage levels
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
- Memory System (AREA)
Abstract
【課題】できるだけ性能が高くなるように1つのメモリセルあたりにライトされる値のビット数を制御すること。
【解決手段】メモリシステムのコントローラは、フラッシュメモリが備える複数の第1ブロックのうち、複数の第2ブロックに対し、メモリセル当たりに第1の数のビットの値をライトし、複数の第3ブロックに対し、メモリセル当たりに第1の数より大きい第2の数のビットの値をライトする。コントローラは、ホスト装置からのデータを複数の第2のブロックにライトし、複数の第2ブロック内の有効データを複数の第3のブロックに転記する。コントローラは、ライトが完了した1以上の第3ブロックのそれぞれに対するライトが完了した順番と、ライトが完了した1以上の第3ブロックのそれぞれに格納されている有効データの量と、に基づいて複数の第1ブロックのうちの第2ブロックの数を制御する。
【選択図】図13
【解決手段】メモリシステムのコントローラは、フラッシュメモリが備える複数の第1ブロックのうち、複数の第2ブロックに対し、メモリセル当たりに第1の数のビットの値をライトし、複数の第3ブロックに対し、メモリセル当たりに第1の数より大きい第2の数のビットの値をライトする。コントローラは、ホスト装置からのデータを複数の第2のブロックにライトし、複数の第2ブロック内の有効データを複数の第3のブロックに転記する。コントローラは、ライトが完了した1以上の第3ブロックのそれぞれに対するライトが完了した順番と、ライトが完了した1以上の第3ブロックのそれぞれに格納されている有効データの量と、に基づいて複数の第1ブロックのうちの第2ブロックの数を制御する。
【選択図】図13
Description
本実施形態は、メモリシステムおよび方法に関する。
従来、1つのメモリセルあたりにライトされる値のビット数が可変のメモリシステムが知られている。
一つの実施形態は、できるだけ性能が高くなるように1つのメモリセルあたりにライトされる値のビット数を制御するメモリシステムおよび方法を提供することを目的とする。
一つの実施形態にかかるメモリシステムは、ホスト装置に接続可能である。前記メモリシステムは、複数の第1ブロックを備えるフラッシュメモリと、コントローラと、を備える。前記複数の第1ブロックのそれぞれは複数のメモリセルを備える。前記複数の第1ブロックのそれぞれは第1モードおよび第2モードのうちの記憶モードでライトが可能である。前記第1モードはメモリセル当たりに第1の数のビットの値がライトされるモードであり、前記第2モードはメモリセル当たりに第2の数のビットの値がライトされるモードである。前記第2の数は前記第1の数よりも大きい。前記コントローラは、前記複数の第1ブロックのうちの一部である複数の第2ブロックを前記第1モードで使用し、前記複数の第1ブロックのうちの他の一部である複数の第3ブロックを前記第2モードで使用する。前記コントローラは、前記ホスト装置からのデータを前記複数の第2ブロックに順次、ライトし、第1の転記処理と、第2の転記処理と、を実行する。前記第1の転記処理は、前記複数の第2ブロックのうちのライトが完了した1以上の第2ブロックから1つの第2ブロックを選択し、選択された前記第2ブロック内の全ての有効なデータを前記複数の第3ブロックに順次、ライトすることによって、選択された前記第2ブロックを再利用可能な状態にする処理である。前記第2の転記処理は、前記複数の第3ブロックのうちのライトが完了した1以上の第3ブロックから1つの第3ブロックを選択し、選択された前記第3ブロック内の全ての有効なデータを前記複数の第3ブロックのうちのライトが完了していない第3ブロックにライトすることによって、選択された前記第3ブロックを再利用可能な状態にする処理である。前記コントローラは、ライトが完了した前記1以上の第3ブロックのそれぞれに対するライトが完了した順番と、ライトが完了した前記1以上の第3ブロックのそれぞれに格納されている有効データの量と、に基づいて前記複数の第1ブロックのうちの第2ブロックの数を制御する。
以下に添付図面を参照して、実施形態にかかるメモリシステムおよび方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
(第1の実施形態)
図1は、第1の実施形態にかかるメモリシステム1の構成の一例を示す模式的な図である。
図1は、第1の実施形態にかかるメモリシステム1の構成の一例を示す模式的な図である。
メモリシステム1は、ホスト装置2と通信インタフェース3で接続される。ホスト装置2は、情報処理装置に具備されるプロセッサである。情報処理装置は、ラップトップ型のパーソナルコンピュータ、携帯電話、スマートフォン、ポータブル音楽プレーヤー、撮像装置、などのコンピュータである。メモリシステム1は、例えばSSD(Solid State Drive)である。通信インタフェース3の規格は、特定の規格に限定されない。
メモリシステム1は、ホスト装置2からアクセスコマンド(例えば、ライトコマンドまたはリードコマンド)を受信する。メモリシステム1は、ライトコマンドに応じて、ライトが要求されたユーザデータを記憶する。メモリシステム1は、リードコマンドに応じて、リードが要求されたユーザデータをホスト装置2に送信する。
なお、アクセスコマンドは、論理アドレスを含む。メモリシステム1は、ホスト装置2に論理的なアドレス空間を提供する。論理アドレスは、当該アドレス空間における位置を示す。ホスト装置2は、論理アドレスを用いることによって、ユーザデータをライトする位置またはユーザデータのリードを行う位置を指定する。つまり、論理アドレスは、ホスト装置2から指定される位置情報である。
メモリシステム1は、コントローラ100とNANDメモリ200とを備える。コントローラ100はメモリバス300によってNANDメモリ200に接続されている。NANDメモリ200は、不揮発性メモリの一例である。
コントローラ100は、NANDメモリ200の制御を実行する。
コントローラ100は、ホスト装置2からライトが要求されたデータをNANDメモリ200にライトしたり、ホスト装置2からリードが要求されたデータをNANDメモリ200からリードしてホスト装置2に送る。つまり、コントローラ100は、ホスト装置2とNANDメモリ200との間のデータ転送を実行する。
ホスト装置2からライトが要求されたデータを、ホスト装置2からの当該データの受信の後に初めてNANDメモリ200にライトすることを、ホストライト、と表記する。また、ホストライトによってNANDメモリ200にライトされるデータを、ホストデータと表記する。また、単位時間あたりにNANDメモリ200にライトされたホストデータの量を、ホストライト量と表記する。なお、ホストライト量および次に述べる転記ライト量を得るための単位時間は、設計者によって任意に設定され得る。
さらに、コントローラ100は、NANDメモリ200内でデータを転記する転記処理を実行する。転記処理は、ガベージコレクションとも称され得る。
転記処理は、NANDメモリ200からデータをリードする処理と、リードされたデータをNANDメモリ200にライトする処理と、を含む。転記処理の一環としてNANDメモリ200にデータをライトする処理を、転記ライトと表記する。また、転記ライトによってNANDメモリ200にライトされるデータを、転記データと表記する。また、単位時間当たりにNANDメモリ200にライトされた転記データの量を、転記ライト量と表記する。転記処理のさらに詳細な説明については後述される。
さらに、コントローラ100は、1つのメモリセルあたりにライトされる値のビット数の設定を変更することが可能である。1つのメモリセルあたりにライトされる値のビット数の設定を、記憶モード(memory mode)と表記する。取り得る記憶モード、および記憶モードの制御方法については後述する。
コントローラ100は、プロセッサ101、ホストインタフェース回路(ホストI/F)102、RAM(Random Access Memory)103、バッファメモリ104、メモリインタフェース回路(メモリI/F)105、および内部バス106を備える。プロセッサ101、ホストI/F102、RAM103、バッファメモリ104、およびメモリI/F105は、内部バス106に電気的に接続されている。
なお、コントローラ100は、SoC(System-on-a-Chip)として構成され得る。または、コントローラ100は、複数のチップによって構成され得る。RAM103またはバッファメモリ104は、コントローラ100の外部に配されていてもよい。
ホストI/F102は、ホスト装置2からアクセスコマンドおよびデータなどを受信する。また、ホストI/F102は、NANDメモリ200からリードされたデータおよびアクセスコマンドに対する応答などをホスト装置2へ送信する。
バッファメモリ104は、ホスト装置2とNANDメモリ200との間のデータ転送のためのバッファとして機能するメモリである。バッファメモリ104は、例えば、SRAM(Static Random Access Memory)またはSDRAM(Synchronous Dynamic Random Access Memory)などの揮発性メモリによって構成される。なお、バッファメモリ104を構成するメモリの種類はこれらに限定されない。バッファメモリ104は、任意の種類の不揮発性メモリによって構成されてもよい。
メモリI/F105は、データ等をNANDメモリ200にライトする処理およびNANDメモリ200からデータ等をリードする処理を、プロセッサ101からの指示に基づいて制御する。
プロセッサ101は、コンピュータプログラムを実行することができる回路である。プロセッサ101は、例えばCPU(Central Processing Unit)である。プロセッサ101は、予め所定位置(例えばNANDメモリ200)に格納されていたファームウェアプログラムに基づいてコントローラ100の各構成要素を統括的に制御し、これによって上記されたコントローラ100の種々の動作を実現する。
なお、プロセッサ101が実行する処理の一部または全部は、ハードウェア回路によって実行されてもよい。プロセッサ101が実行する処理の一部または全部は、FPGA(Field-Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)によって実行されてもよい。
RAM103は、プロセッサ101がキャッシュメモリまたはワーキングメモリとして使用することができるメモリである。RAM103は、DRAM(Dynamic Random Access Memory)、SRAM、またはこれらの組み合わせによって構成される。なお、RAM103を構成するメモリの種類はこれらに限定されない。
なお、コントローラ100は、これらの構成要素に替えて、またはこれらの構成要素に加えて、任意の構成要素を備え得る。例えば、コントローラ100は、NANDメモリ200にライトされるデータに対して符号化したり、NANDメモリ200からリードされたデータに対して復号化したりする回路を備えていてもよい。また、RAM103がバッファメモリとして使用され、バッファメモリ104が廃されてもよい。
NANDメモリ200は、ユーザデータ等を不揮発に記憶できるNAND型フラッシュメモリである。NANDメモリ200は、1以上のメモリチップ201によって構成される。ここでは、NANDメモリ200は、4つのメモリチップ201-0,201-1,201-2,201-3によって構成される。NANDメモリ200は、フラッシュメモリの一例である。
図2は、第1の実施形態にかかるメモリチップ201の構成の一例を示す模式的な図である。メモリチップ201は、周辺回路210およびメモリセルアレイ211を備える。
メモリセルアレイ211は、複数のブロックBLK(BLK0、BLK1、BLK2、…)を備える。各ブロックBLKは、複数のストリングユニットSU(SU0、SU1、SU2、…)を備える。各ストリングユニットSUは、複数の不揮発性メモリセルトランジスタを直列に接続したNANDストリングの集合体である。なお、ストリングユニットSU内のNANDストリング212の数は任意である。
周辺回路210は、例えば、ロウデコーダ、カラムデコーダ、センスアンプ、ラッチ回路、および電圧発生回路を含む。周辺回路210は、コントローラ100からの指示に応じて、メモリセルアレイ211に対し、当該指示に対応した動作を実行する。コントローラ100からの指示は、ライト、リード、およびイレースを含む。
図3は、第1の実施形態にかかるブロックBLKの回路構成を示す模式的な図である。なお、各ブロックBLKは、同一の構成を有している。ブロックBLKは、例えば4つのストリングユニットSU0~SU3を有する。各ストリングユニットSUは、複数のNANDストリング212を含む。
NANDストリング212の各々は、例えば64個のメモリセルトランジスタMT(MT0~MT63)および選択トランジスタST1、ST2を含んでいる。メモリセルトランジスタMTは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。そして64個のメモリセルトランジスタMT(MT0~MT63)は、選択トランジスタST1のソースと選択トランジスタST2のドレインとの間に直列接続されている。なお、メモリセルトランジスタMTは、電荷蓄積層に絶縁膜を用いたMONOS型であってもよいし、電荷蓄積層に導電膜を用いたFG型であってもよい。さらに、NANDストリング212内のメモリセルトランジスタMTの個数は64個に限定されない。
ストリングユニットSU0~SU3の各々における選択トランジスタST1のゲートは、各々の選択ゲート線SGD0~SGD3に接続される。これに対してストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、例えば選択ゲート線SGSに共通接続される。ストリングユニットSU0~SU3の各々における選択トランジスタST2のゲートは、ストリングユニットSU毎に異なる選択ゲート線SGS0~SGS3(不図示)に接続されてもよい。同一のブロックBLK内にある各メモリセルトランジスタMT0~MT63の制御ゲートは、各々のワード線WL0~WL63に共通接続される。
ストリングユニットSU内にある各NANDストリング212の選択トランジスタST1のドレインは、各々異なるビット線BL(BL0~BL(L-1)、但しLは2以上の自然数)に接続される。また、ビット線BLは、複数のブロックBLK間で各ストリングユニットSU内にある1つのNANDストリング212を共通に接続する。更に、各選択トランジスタST2のソースは、ソース線SLに共通に接続されている。
つまりストリングユニットSUは、各々が異なるビット線BLに接続され、且つ同一の選択ゲート線SGDに接続された複数のNANDストリング212の集合である。またブロックBLKは、ワード線WLを共通にする複数のストリングユニットSUの集合である。そしてメモリセルアレイ211は、少なくとも1のビット線BLを共通にする複数のブロックBLKの集合である。
周辺回路210によるライトおよびリードは、1つのストリングユニットSUにおける1つのワード線WLに接続されたメモリセルトランジスタMTに対して、一括して実行され得る。ライトおよびリードの際に、一括して選択されるメモリセルトランジスタMTの群をメモリセルグループMCGと表記する。そして、1つのメモリセルグループMCGにライトされる、あるいはリードされる1ビットのデータの集まりの単位をページと表記する。
周辺回路210によるイレースは、ブロックBLK単位で実行される。即ち、1つのブロックBLKに格納された全てのデータは、まとめてイレースされる。
なお、メモリセルアレイ211の構成は、図2および図3に示された構成に限定されない。例えば、メモリセルアレイ211は、NANDストリング212が2次元的に又は3次元的に配列された構成を有していてもよい。
メモリセルアレイ211に対するライトにおいては、周辺回路210は、ライト先のページを構成する各メモリセルトランジスタMTの電荷蓄積層に、データに対応した量の電荷を注入する。そして、メモリセルアレイ211からのリードにおいては、周辺回路210は、リード先のページを構成する各メモリセルトランジスタMTから、電荷蓄積層に蓄積された電荷量に応じたデータを読み出す。
各メモリセルトランジスタMTには、n(n≧1)ビットの値をライト可能である。nが1であるモードは、SLC(Single Level Cell)モードと称される。各メモリセルトランジスタMTにnビットの値がライトされる場合、メモリセルグループMCG当たりの記憶容量はnページ分のサイズに等しくなる。nが2であるモードは、MLC(Multi Level Cell)モードと称される。nが3であるモードは、TLC(Triple Level Cell)モードと称される。nが4であるモードは、QLC(Quad Level Cell)モードと称される。
各メモリセルトランジスタMTのしきい値電圧は、周辺回路210によって一定の範囲内でコントロールされる。しきい値電圧のコントローラブルな範囲は、2のn乗の数の区分に分割され、各区分にそれぞれ異なるnビットの値がアサインされる。
図4は、SLCモード、MLCモード、TLCモード、QLCモードのそれぞれのケースにおける第1の実施形態の区分を説明する図である。図4に示すように、しきい値電圧の範囲(コントローラブルな範囲)は、複数の区分4に分割される。
例えば、SLCモードでは、しきい値電圧の範囲は、2つの区分4aに分割される。MLCモードでは、しきい値電圧の範囲は、4つの区分4bに分割される。TLCモードでは、しきい値電圧の範囲は、8つの区分4cに分割される。QLCモードでは、しきい値電圧の範囲は、16個の区分4dに分割される。
1メモリセルに保持される値のビット数が多いほど、各区分4の範囲が狭い。各区分4には、対応するビット数の値がアサインされる。SLCモードでは、低電圧側の区分4aに“1”がアサインされ、高電圧側の区分4aに “0”がアサインされる。MLCモードでは、4つの区分4bには、電圧の順番に、それぞれ、“11”、“01”、“00”、“10”がアサインされる。TLCモードでは、8つの区分4cには、電圧の順番に、それぞれ、“111”、“101”、“001”、“011”、“010”、“110”、“100”、“000”がアサインされる。QLCモードでは、16個の区分4dには、電圧の順番に、それぞれ、“1111”、“1011”、“0011”、“0001”、“1001”、“1101”、“0101”、“0111”、“0110”、“1110”、“1010”、“1000”、“1100”、“0100”、“0000”、“0010”がアサインされる。なお、各区分4に対する値のアサイン方法はこれらの例に限定されない。
メモリセルアレイ211に対するライトにおいては、周辺回路210は、ライト先のページを構成する各メモリセルトランジスタMTの電荷蓄積層に、ライト対象の値がアサインされた区分4に対応した量の電荷を注入する。メモリセルアレイ211からのリードにおいては、周辺回路210は、リード先のページを構成する各メモリセルトランジスタMTのしきい値電圧が属する区分4を判断し、判断によって取得した区分4にアサインされた値を、リードデータとして出力する。
メモリセルアレイ211に対するイレースにおいては、周辺回路210は、メモリセルアレイ211の基板側にイレース電圧を印加する。そして、周辺回路210は、イレース対象のブロックBLKの全てのワード線WLを接地電位に導通させる。すると、選択されたブロックBLK内の各メモリセルトランジスタMTにおいては、電荷蓄積層に蓄えられていた電荷が放電される。その結果、選択されたブロックBLK内の各メモリセルトランジスタMTの状態は、データがイレースされたと見なされる状態(即ち最も低電圧側の区分4)に遷移する。
メモリシステム1は、記憶モードを設定したり変更したりすることが可能に構成される。より具体的には、プロセッサ101は、1つのメモリセルあたりに第1の数のビットの値をライトする第1モードと、1つのメモリセルあたりに第2の数(ただし第2の数は第1の数よりも大きい)のビットの値をライトする第2モードと、のうちから各ブロックBLKの記憶モードを設定したり変更したりする。以降の説明では、第1モードはSLCモードであり、第2モードはTLCモードであることとする。なお、第1モードおよび第2モードのそれぞれはこの例に限定されない。また、記憶モードが個別に設定される最小単位の記憶領域は、ブロックBLKに限定されない。例えば、複数のブロックBLKを含む論理的なブロックの単位で記憶モードが個別に設定されてもよい。
続いて、ブロックBLKの状態遷移について説明する。図5は、第1の実施形態にかかるブロックBLKの状態遷移の一例を示す図である。ハッチングされた矢印は、ブロックBLKの状態の遷移の方向を示しており、実線の矢印は、データの移動の方向を示している。
ブロックBLKの状態は、少なくとも、オープンブロック、アクティブブロック、およびフリーブロックを取り得る。以降、オープンブロックは、オープンブロックの状態にあるブロックBLKを意味する場合がある。また、アクティブロックは、アクティブロックの状態にあるブロックBLKを意味する場合がある。また、フリーブロックは、フリーブロックの状態にあるブロックBLKを意味する場合がある。
オープンブロックは、ライト中であってライトが完了していないブロックBLKである。即ち、オープンブロックは、データがライトされ得る領域を残した状態にあるブロックBLKである。
アクティブブロックは、ライトが完了したブロックBLKである。アクティブブロックは、まだ再利用できないブロックBLKでもある。ライトが完了したブロックBLKのうちの、有効なユーザデータが格納されているブロックBLKは、アクティブブロックとして管理される。再利用とは、オープンブロックに遷移させることをいう。
フリーブロックは、有効なデータが格納されていないブロックBLKである。フリーブロックは、再利用可能なブロックBLKである。
例えば、オープンブロックに1ブロックBLK分のデータがライトされた後、そのオープンブロックはアクティブブロックに遷移する。アクティブブロックに格納されているデータの状態は、有効な状態と無効な状態とのうちの何れかである。
アクティブブロックに或るデータ(第1のデータと表記する)が格納されている状態で、ホスト装置2から第1のデータが送られてきた際に指定された論理アドレス値と同一の論理アドレス値が指定されて第2のデータが送られてきた場合、コントローラ100は、オープンブロックの空のページに第2のデータをライトし、アクティブブロックに格納されている第1のデータを無効なデータとして管理する。よって、アクティブブロックに格納されているデータには、有効なデータと無効なデータとが混在し得る。
なお、ホスト装置2が、古いデータをメモリシステム1に送った際に指定した論理アドレス値と同一の論理アドレス値を指定して新しいデータを送ることを、リライトと表記する。
アクティブブロックは、転記処理によってフリーブロックに遷移する。転記処理は、アクティブブロックに格納されている有効なデータをオープンブロックに転記(transcribe)して、転記元のアクティブブロックに格納されている全てのデータを無効化する処理をいう。これによって、転記元のアクティブブロックはフリーブロックに遷移する。なお、転記は、転送、再配置(relocation)、または移動と換言することができる。
フリーブロックは、格納されているデータがイレースされた後、オープンブロックに遷移する。
なお、データが有効とは、そのデータが格納されている位置が何れかの論理アドレス値に対応付けられていることをいう。データが無効とは、そのデータが格納されている位置が何れの論理アドレス値にも対応付けられていないことをいう。また、「空の」状態とは、ここでは、無効なデータおよび有効なデータの何れも記憶されていない状態をいう。即ち、空のページは、データのライトが可能な空き領域である。なお、ブロックBLK内の位置と論理アドレス値との対応関係は、コントローラ100が維持および更新する。
ホストデータおよび転記データはともに共通のオープンブロックにライトされてもよい。または、ホストデータがライトされるオープンブロックと転記データがライトされるオープンブロックとが個別に用意されてもよい。ここでは一例として、ホストデータおよび転記データはともに共通のオープンブロックにライトされることとする。
一度もホストライトが実行されたことが無いメモリシステム1においては、オープンブロックを除く全てのブロックBLKがフリーブロックの状態にある。ホストライトが開始されると、オープンブロックからアクティブブロックへの遷移と、フリーブロックからオープンブロックへの遷移とが開始する。そのため、アクティブブロックの数が増え、フリーブロックの数が減る。フリーブロックが枯渇した場合、フリーブロックの数を許容される下限値、例えば1つ、以上に維持するために、転記処理が開始される。転記処理によって、アクティブブロックであったブロックBLKが新たなフリーブロックとなる。
第1の実施形態では、転記処理は、第1転記処理および第2転記処理を含む。図6は、第1の実施形態にかかる第1転記処理および第2転記処理を説明するための模式的な図である。
図6に示されるように、NANDメモリ200に備えられる複数のブロックBLKのうちの一部の複数のブロックBLKは、SLCモードで使用され、複数のブロックBLKのうちの他の複数のブロックBLKはTLCモードで使用される。SLCモードで使用されるブロックBLKを、SLCブロックと表記する。TLCモードで使用されるブロックBLKを、TLCブロックと表記する。
なお、NANDメモリ200に備えられる複数のブロックBLKは、複数の第1ブロックの一例である。SLCブロックの群は、複数の第2ブロックの一例である。TLCブロックの群は、複数の第3ブロックの一例である。
SLCブロックの群およびTLCブロックの群のそれぞれは、オープンブロックおよび1以上のフリーブロックを含む。SLCブロックの群およびTLCブロックの群のそれぞれにおいて、フリーブロックの数が許容される下限値以上に維持される。図6に示される例では、フリーブロックの数の許容される下限値は1であることとしている。
また、SLCブロックの群およびTLCブロックの群のそれぞれは、1以上のアクティブブロックを含み得る。
以降、オープンブロックの状態にあるSLCブロックを、SLCオープンブロック、と表記する。また、アクティブブロックの状態にあるSLCブロックを、SLCアクティブブロック、と表記する。また、フリーブロックの状態にあるSLCブロックを、SLCフリーブブロック、と表記する。また、オープンブロックの状態にあるTLCブロックを、TLCオープンブロック、と表記する。また、アクティブブロックの状態にあるTLCブロックを、TLCアクティブブロック、と表記する。また、フリーブロックの状態にあるTLCブロックを、TLCフリーブブロック、と表記する。
1つのメモリセルあたりに格納されるデータのビット数が少ないほど、データのライトおよびリードに要する時間が短い。つまり、SLCモードのほうが、TLCモードの場合よりもデータのライトが早く完了する。よって、ホスト装置2から見たメモリシステム1のスループットの向上を図るために、コントローラ100は、ホストデータを、SLCブロック、より詳細にはSLCオープンブロック、にライトする。
SLCオープンブロックがホストデータでいっぱいになると、SLCオープンブロックへのライトが完了と見なされる。SLCオープンブロックへのライトが完了するに応じて、当該SLCオープンブロックは、SLCアクティブブロックに遷移し、SLCフリーブロックのうちの1つが新たなSLCオープンブロックに遷移する。そして、SLCフリーブロックの数が許容される下限値、ここでは例えば1、に到達すると、何れかのSLCアクティブブロックが選択されて、選択されたSLCアクティブブロック内の有効データは、第1の転記処理によってTLCオープンブロックに移動せしめられる。選択されたSLCアクティブブロックは、SLCフリーブロックに遷移する。つまり、第1の転記処理は、SLCフリーブロックを生成するためにSLCアクティブブロックからTLCオープンブロックに有効データを移動させる処理である。
TLCオープンブロックが転記データでいっぱいになると、TLCオープンブロックへのライトが完了と見なされる。TLCオープンブロックへのライトが完了するに応じて、当該TLCオープンブロックは、TLCアクティブブロックに遷移し、TLCフリーブロックのうちの1つが新たなTLCオープンブロックに遷移する。そして、TLCフリーブロックの数が許容される下限値、ここでは例えば1、に到達すると、何れかのTLCアクティブブロックが選択されて、選択されたTLCアクティブブロック内の有効データは、第2の転記処理によってTLCオープンブロックに移動せしめられる。選択されたTLCアクティブブロックは、TLCフリーブロックに遷移する。つまり、第2の転記処理は、TLCフリーブロックを生成するためにTLCアクティブブロックからTLCオープンブロックに有効データを移動させる処理である。
第1の転記処理では、転記ライト量ができるだけ少なくなるように、格納されている有効データの量が出来るだけ少ないSLCアクティブブロックが、転記元のSLCアクティブブロックとして選択される。典型的には、格納されている有効データの量が最も少ないSLCアクティブブロックが、転記元のSLCアクティブブロックとして選択される。
同様に、第2の転記処理では、転記ライト量ができるだけ少なくなるように、格納されている有効データの量が出来るだけ少ないTLCアクティブブロックが、転記元のTLCアクティブブロックとして選択される。典型的には格納されている有効データの量が最も少ないTLCアクティブブロックが、転記元のTLCアクティブブロックとして選択される。
以降、ブロックBLK内のデータについて言及した場合には、当該データは有効データを意味することとする。同様に、転記処理によって転記されるデータについて言及した場合には、当該データは有効データを意味することとする。
転記処理、即ち第1の転記処理および第2の転記処理、の実行は、メモリシステム1の性能に影響する。例えば、転記処理の実行頻度が高いほど、転記処理に割かれるプロセッサ101またはバス(内部バス106およびメモリバス300)などのハードウェアリソースが増大し、これによってホスト装置2からみたスループットが低下する。また、転記処理の実行頻度が高いほど、NANDメモリ200に対するライト/イレースの実行回数が増大し、これによってNANDメモリ200の劣化速度が早くなる。また、NANDメモリ200が劣化するほど、NANDメモリ200に格納されたデータの信頼性が低下する。これらの理由により、転記処理の実行頻度を出来るだけ抑制することが要望される。
図6に示された動作によれば、SLCブロックにライトされたデータは、第1の転記処理によってTLCブロックに転記されるか、またはリライトによって無効化される。従って、第1の転記処理の実行頻度は、ホスト装置2からメモリシステム1に送られてくるデータのリライトの頻度によって影響される。ホスト装置2からメモリシステム1に送られてくるデータのリライトの頻度は、データ毎に異なる。短期間にリライトされる傾向があるデータの状態を、ホットと表記する。長期間リライトされない傾向があるデータの状態を、コールドと表記する。
例えば、SLCブロック内のホットデータが第1の転記処理の対象となる前に新たなリライトによって無効になるケースがある。SLCブロック内のデータが第1の転記処理の対象となる前に新たなリライトによって無効になるケースを、第1ケースと表記する。第1ケースが起こる頻度が高いほど、第1の転記処理の実行頻度が抑制される。
一方、SLCブロック内のコールドデータに関しては、第1ケースが起こる可能性が低い。つまり、SLCブロック内のコールドデータは、第1の転記処理によってTLCブロックに移動せしめられる可能性が高い。SLCブロック内のデータが第1の転記処理によってTLCブロックに移動せしめられるケースを、第2ケースと表記する。第2ケースが起こる頻度が高いほど、第1の転記処理の実行頻度が高くなる。
TLCブロック内のコールドデータは、新たなリライトによって無効になるまで、第2の転記処理の対象となり得る。そして、第2の転記処理の実行頻度は、TLCブロックの群の総容量に対するTLCブロックの群に格納されたコールドデータの総量の比率に応じて変動する。TLCブロックの群の総容量に対するTLCブロックの群に格納されたコールドデータの総量の比率が大きいほど、第2の転記処理の実行頻度が高くなる傾向がある。
SLCブロックの数を増加させれば、第1ケースが起こる頻度が高くなり、これによって第1の転記処理の実行頻度を低下させることができる。しかしながら、SLCブロックの数を増加させれば、増加したSLCブロックの容量の3倍の容量だけTLCブロックの群の総容量が減少する。TLCブロックの群の総容量の減少によって、TLCブロックの数に対するTLCブロックの群に格納されたコールドデータの総量の比率が大きくなり、その結果として、第2の転記処理の実行頻度が高くなる。
よって、SLCブロックの数が多すぎても転記処理の実行頻度を抑制できないし、SLCブロックの数が少なすぎても転記処理の実行頻度を抑制できない。つまり、転記処理の実行頻度を抑制するためには、SLCブロックの数を適切に設定する必要がある。
さらに、転記処理の実行頻度を抑制するためのSLCブロックの適切な数は、ホストデータに含まれるホットデータの量とコールドデータの量との関係にも依存する。
例えば、ホストデータに含まれるホットデータの割合が多い場合、ホストデータに含まれるホットデータの割合が少ない場合に比べて、SLCブロックの数を増加させることによる第1の転送処理の実行頻度の低下のメリットが大きく、かつ、TLCブロックの群の総容量の減少による第2の転送処理の実行頻度の増加のデメリットが小さい。よって、ホストデータに含まれるホットデータの割合が多い場合には、多めの数のブロックBLKをSLCブロックとして割り当てることによって、転送処理の実行頻度を効率的に抑制できる。
逆に、ホストデータに含まれるコールドデータの割合が多い場合、ホストデータに含まれるコールドデータの割合が少ない場合に比べて、SLCブロックの数を増加させることによる第1の転送処理の実行頻度の低下のメリットが小さく、かつ、TLCブロックの群の総容量の減少による第2の転送処理の実行頻度の増加のデメリットが大きい。よって、ホストデータに含まれるコールドデータの割合が多い場合、少なめの数のブロックBLKをSLCブロックとして割り当てることによって、転送処理の実行頻度を効率的に抑制できる。
第1の実施形態では、プロセッサ101は、ホストデータに含まれるホットデータの量とコールドデータの量の比率が変化した場合であっても転記処理の実行頻度が出来るだけ低くすることができるように、SLCブロックの数を制御する。以下に、SLCブロックの数の制御方法について説明する。ホストデータに含まれるホットデータの量とコールドデータの量の比率を、データ構成比(ratio of host data components)、と表記する。
データ構成比が一定の状態が所定時間継続した場合には、アクティブブロックに遷移した時刻が古いブロックBLKほど、格納されている有効データの量が少ない傾向がある。したがって、データ構成比が一定の状態が所定時間継続した場合には、アクティブブロックに遷移した時刻が最も古いTLCアクティブブロックが、第2の転記処理の転記元として選択される可能性が高い。
しかしながら、ホストデータに含まれるホットデータの割合が増加した場合、アクティブブロックに遷移した時刻が古いブロックBLKほど、格納されている有効データの量が少ないという傾向が崩れる。ホストデータに含まれるホットデータの割合が増加すると、リライトされる前に第1の転記処理によってTLCブロックに転記されるホットデータが増加する。TLCブロック中のホットデータは、当該TLCブロックがアクティブブロックに遷移してから比較的早いタイミングでリライトによって無効化される。よって、第1の転記処理によって多くのホットデータがライトされたTLCブロックでは、有効データの量が早い速度で減る。その結果、アクティブブロックに遷移した時刻が比較的新しいTLCブロックに格納された有効データの量が、アクティブブロックに遷移した時刻が古いTLCブロックに格納された有効データの量よりも少ないというケースが発生する。当該ケースを、第3のケースと表記する。
第3のケースが発生した場合、ホストデータに含まれるホットデータの割合が増加したと推定できる。よって、第1の実施形態では、第3のケースの発生の検出によって、ホストデータに含まれるホットデータの割合の増加が判断される。つまり、プロセッサ101は、第3のケースの発生が検出された場合、SLCブロックの数を増やす。プロセッサ101は、NANDメモリ200が備える複数のブロックBLKのうちのTLCブロックへの割り当て量を減らし、SLCブロックへの割り当て量を増やすことで、SLCブロックの数を増やす。
図7は、ホストデータに含まれるホットデータの割合の増加の第1の実施形態にかかる判断方法の一例を説明するための模式的な図である。本図に表示されたブロックBLK11~ブロックBLK18は、TLCブロックの群に含まれるアクティブブロック、即ちTLCアクティブブロックである。ブロックBLK11~ブロックBLK18は、アクティブブロックに遷移したタイミングの順番で配列されている。本図から、ブロックBLK11、ブロックBLK12、ブロックBLK13、ブロックBLK14、ブロックBLK15、ブロックBLK16、ブロックBLK17、およびブロックBLK18は、この順番でアクティブブロックに遷移したことが読み取れる。ブロックBLK11~ブロックBLK18を表す矩形のうちの斜線部の面積は、各ブロックBLKに格納されている有効データの量を表す。
プロセッサ101は、値Rth1を事前に設定する。値Rth1は2以上の整数である。値Rth1は、第3の数の一例である。値Rth1の設定方法は後述される。プロセッサ101は、最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量が最小のTLCアクティブブロックが存在するか否かを判断する。最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量が最小のTLCアクティブブロックが存在することは、第3のケースに該当する。よって、プロセッサ101は、最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量が最小のTLCアクティブブロックが存在する場合、SLCブロックの数を増加させる。最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量が最小のTLCアクティブブロックが存在しない場合、プロセッサ101は、SLCブロックの数を増加させない。
図7に示される例では、値Rth1は「3」である。そして、最も新しくアクティブブロックに遷移した3個のTLCアクティブブロック、即ちブロックBLK16~ブロックBLK18には、格納されている有効データの量が最小のTLCアクティブブロックであるブロックBLK17が含まれる。よって、プロセッサ101は、SLCブロックの数を増加させる。
ホットデータの割合が急激に増加した場合、図7に示される例のように、アクティブブロックに遷移した時刻が比較的新しいTLCブロックのうちに、格納された有効データの量が最小のTLCブロックが現れる。しかしながら、ホットデータの割合の増加の度合いが穏やかである場合、アクティブブロックに遷移した時刻が比較的新しいTLCブロックのうちに、格納された有効データの量が最小のTLCブロックが必ずしも現れるとは限らない。ホットデータの割合の増加の度合いが穏やかである場合であってもホットデータの割合の増加を判断できる方法を図8を用いて説明する。
図8は、ホストデータに含まれるホットデータの割合の増加の第1の実施形態にかかる判断方法の別の一例を説明するための模式的な図である。本図に表示されたブロックBLK21~ブロックBLK28は、TLCブロックの群に含まれるアクティブブロック、即ちTLCアクティブブロックである。ブロックBLK21~ブロックBLK28は、アクティブブロックに遷移したタイミングの順番で配列されている。本図から、ブロックBLK21、ブロックBLK22、ブロックBLK23、ブロックBLK24、ブロックBLK25、ブロックBLK26、ブロックBLK27、およびブロックBLK28は、この順番でアクティブブロックに遷移したことが読み取れる。ブロックBLK21~ブロックBLK28を表す矩形のうちの斜線部の面積は、各ブロックBLKに格納されている有効データの量を表す。
プロセッサ101は、値Rth1を事前に設定するとともに、値Ath1を事前に取得する。値Ath1は、第1のしきい値の一例である。値Ath1は、設計者によって設定された固定値であってもよいし、プロセッサ101が所定の演算に基づいて算出してもよい。プロセッサ101は、最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量が値Ath1に満たないTLCアクティブブロックが存在するか否かを判断する。最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量がたとえ最小でなくても比較的少ないTLCアクティブブロックが存在することは、第3のケースに該当する可能性がある。よって、最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量が値Ath1に満たないTLCアクティブブロックが存在する場合、プロセッサ101は、SLCブロックの数を増加させる。最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量が値Ath1に満たないTLCアクティブブロックが存在しない場合、プロセッサ101は、SLCブロックの数を増加させない。
図8に示される例では、値Rth1は「3」である。そして、最も新しくアクティブブロックに遷移した3個のTLCアクティブブロック、即ちブロックBLK26~ブロックBLK28には、格納されている有効データの量が値Ath1に満たないTLCアクティブブロックであるブロックBLK27が含まれる。よって、プロセッサ101は、SLCブロックの数を増加させる。
なお、最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量が値Ath1と等しいTLCアクティブブロックが存在する場合の処理は上記の例に限定されない。最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量が値Ath1以下のTLCアクティブブロックが存在する場合、プロセッサ101は、SLCブロックの数を増加させ、最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量が値Ath1以下のTLCアクティブブロックが存在しない場合、プロセッサ101は、SLCブロックの数を増加させなくてもよい。
ホストデータに含まれるコールドデータの割合が増加した場合、第2の転記処理によってTLCブロックに転記されるデータの量が増加する。すると、TLCブロックの群の総容量に対するTLCブロックの群に格納されたコールドデータの総量の比率が大きくなる。TLCブロックの群の総容量に対するTLCブロックの群に格納されたコールドデータの総量の比率が大きくなると、第2の転記処理の転記元、即ち格納されている有効データの量が最も少ないTLCアクティブブロック、に格納されている有効データの量が増加する。これによって、1つのTLCフリーブロックを生成するための転記ライト量が増加する。つまり、第2の転記処理の実行頻度が高くなる。
図9は、ホストデータに含まれるコールドデータの割合の増加の第1の実施形態にかかる判断方法の一例を説明するための模式的な図である。本図に表示されたブロックBLK31~ブロックBLK38は、TLCブロックの群に含まれるアクティブブロック、即ちTLCアクティブブロックである。ブロックBLK31~ブロックBLK38は、アクティブブロックに遷移したタイミングの順番で配列されている。本図から、ブロックBLK31、ブロックBLK32、ブロックBLK33、ブロックBLK34、ブロックBLK35、ブロックBLK36、ブロックBLK37、およびブロックBLK38は、この順番でアクティブブロックに遷移したことが読み取れる。ブロックBLK31~ブロックBLK38を表す矩形のうちの斜線部の面積は、各ブロックBLKに格納されている有効データの量を表す。
プロセッサ101は、値Ath2を事前に取得する。値Ath2は、第2のしきい値の一例である。値Ath2は、設計者によって設定された固定値であってもよいし、プロセッサ101が所定の演算に基づいて算出してもよい。プロセッサ101は、最も古くにアクティブブロックに遷移したTLCアクティブブロックに格納されている有効データの量が値Ath2以上か否かを判断する。
前述されたように、データ構成比が一定の状態が所定時間継続した場合には、アクティブブロックに遷移した時刻が古いブロックBLKほど、格納されている有効データの量が少ない傾向がある。そして、コールドデータの割合が多くなるほど、格納されている有効データの量が最も少ないTLCアクティブブロック、に格納されている有効データの量が多くなる。つまり、コールドデータの割合が増加した場合、最も古くにアクティブブロックに遷移したTLCアクティブブロックに格納されている有効データの量が増加する。この傾向に基づき、最も古くにアクティブブロックに遷移したTLCアクティブブロックに格納されている有効データの量が所定の値、この例では値Ath2、以上となったか否かに基づいて、コールドデータの割合の増加が判断される。
最も古くにアクティブブロックに遷移したTLCアクティブブロックに格納されている有効データの量が値Ath2以上である場合、コールドデータの割合が増加したと推測できる。そのような場合、プロセッサ101は、SLCブロックの数を減らす。プロセッサ101は、NANDメモリ200が備える複数のブロックBLKのうちのSLCブロックへの割り当て量を減らし、TLCブロックへの割り当て量を増やすことで、TLCブロックの数を増やす。
最も古くにアクティブブロックに遷移したTLCアクティブブロックに格納されている有効データの量が値Ath2に満たない場合、コールドデータの割合は増加していないと推測できる。そのような場合、プロセッサ101は、SLCブロックの数を減らさない。
図9に示される例では、最も古くにアクティブブロックに遷移したTLCアクティブブロックであるブロックBLK31に格納されている有効データの量が値Ath2を超えている。よって、プロセッサ101は、SLCブロックの数を減少させる。
なお、最も古くにアクティブブロックに遷移したTLCアクティブブロックに格納されている有効データの量が値Ath2と等しい場合の処理は上記の例に限定されない。最も古くにアクティブブロックに遷移したTLCアクティブブロックに格納されている有効データの量が値Ath2と等しい場合、プロセッサ101は、SLCブロックの数を減らさなくてもよい。
図9に示される例によれば、最も古くにアクティブブロックに遷移したTLCアクティブブロックのみがコールドデータの割合が増加したか否かの判断に使用された。比較的古くにアクティブブロックに遷移した2以上のTLCアクティブブロックを、コールドデータの割合が増加したか否かの判断に使用されてもよい。比較的古くにアクティブブロックに遷移した2以上のTLCアクティブブロックを、コールドデータの割合が増加したか否かの判断に使用する例を、図10を用いて説明する。
図10は、ホストデータに含まれるコールドデータの割合の増加の第1の実施形態にかかる判断方法の別の一例を説明するための模式的な図である。本図に表示されたブロックBLK41~ブロックBLK48は、TLCブロックの群に含まれるアクティブブロック、即ちTLCアクティブブロックである。ブロックBLK41~ブロックBLK48は、アクティブブロックに遷移したタイミングの順番で配列されている。本図から、ブロックBLK41、ブロックBLK42、ブロックBLK43、ブロックBLK44、ブロックBLK45、ブロックBLK46、ブロックBLK47、およびブロックBLK48は、この順番でアクティブブロックに遷移したことが読み取れる。ブロックBLK41~ブロックBLK48を表す矩形のうちの斜線部の面積は、各ブロックBLKに格納されている有効データの量を表す。
プロセッサ101は、値Ath2を事前に取得するとともに、値Rth2を事前に設定する。値Rth2は、2以上の整数である。値Rth2は第4の数の一例である。値Rth2の設定方法は後述される。プロセッサ101は、最も古くにアクティブブロックに遷移したRth2個のTLCアクティブブロックのうちに、格納されている有効データの量が値Ath2以上のTLCアクティブブロックが存在するか否かを判断する。最も古くにアクティブブロックに遷移したRth2個のTLCアクティブブロックのうちに、格納されている有効データの量が値Ath2以上のTLCアクティブブロックが存在する場合、プロセッサ101は、SLCブロックの数を減少させる。最も古くにアクティブブロックに遷移したRth2個のTLCアクティブブロックのうちに、格納されている有効データの量が値Ath2以上のTLCアクティブブロックが存在しない場合、プロセッサ101は、SLCブロックの数を減少させない。
なお、最も古くにアクティブブロックに遷移したRth2個のTLCアクティブブロックのうちに、格納されている有効データの量が値Ath2と等しいTLCアクティブブロックが存在する場合の処理は上記の例に限定されない。最も古くにアクティブブロックに遷移したRth2個のTLCアクティブブロックのうちに、格納されている有効データの量が値Ath2を超えるTLCアクティブブロックが存在する場合、プロセッサ101は、SLCブロックの数を減少させ、最も古くにアクティブブロックに遷移したRth2個のTLCアクティブブロックのうちに、格納されている有効データの量が値Ath2を超えるTLCアクティブブロックが存在しない場合、プロセッサ101は、SLCブロックの数を減少させなくてもよい。
このように、プロセッサ101は、各TLCアクティブブロックのアクティブブロックに遷移したタイミングの順番、即ちライトが完了した順番、と、各TLCアクティブブロックに格納されている有効データの量と、に基づいてSLCブロックの数の制御を行う。
続いて、第1の実施形態にかかるメモリシステム1の動作をフローチャートを用いて説明する。
図11は、第1の実施形態にかかる第1の転記処理の実行タイミングの一例を説明するフローチャートである。
コントローラ100は、ホストデータをSLCオープンブロックにライトする。まず、プロセッサ101は、SLCオープンブロックがホストデータでいっぱいになったか否かを判断する(S101)。SLCオープンブロックがホストデータでいっぱいになっていない場合(S101:No)、即ちSLCオープンブロックにライト可能な領域が残っている場合、S101の処理が再び実行される。
SLCオープンブロックがホストデータでいっぱいになった場合(S101:Yes)、即ちSLCオープンブロックにライト可能な領域が残っていない場合、プロセッサ101は、当該SLCオープンブロックをSLCアクティブブロックに遷移させ(S102)、SLCフリーブロックのうちの1つをSLCオープンブロックに遷移させる(S103)。
そして、プロセッサ101は、SLCフリーブロックの数が下限値に到達したか否かを判断する(S104)。SLCフリーブロックの数が下限値に到達していない場合(S104:No)、制御がS101に移行する。
SLCフリーブロックの数が下限値に到達した場合(S104:Yes)、コントローラ100は、第1の転記処理を実行する(S105)。コントローラ100は、少なくとも1つのSLCフリーブロックが生成されるまで第1の転記処理を実行する。
なお、第1の転記処理の実行タイミングは、図11に示された例に限定されない。コントローラ100は、図11に示された実行タイミングに加えて、ホスト装置2からのアクセスがない期間に第1の転記処理を実行してもよい。
図12は、第1の実施形態にかかる第2の転記処理の実行タイミングの一例を説明するフローチャートである。
コントローラ100は、第1の転記処理および第2の転記処理による転記データをTLCオープンブロックにライトする。まず、プロセッサ101は、TLCオープンブロックが転記データでいっぱいになったか否かを判断する(S201)。TLCオープンブロックが転記データでいっぱいになっていない場合(S201:No)、即ちTLCオープンブロックにライト可能な領域が残っている場合、S201の処理が再び実行される。
TLCオープンブロックが転記データでいっぱいになった場合(S201:Yes)、即ちTLCオープンブロックにライト可能な領域が残っていない場合、プロセッサ101は、当該TLCオープンブロックをTLCアクティブブロックに遷移させ(S202)、TLCフリーブロックのうちの1つをTLCオープンブロックに遷移させる(S203)。
そして、プロセッサ101は、TLCフリーブロックの数が下限値に到達したか否かを判断する(S204)。TLCフリーブロックの数が下限値に到達していない場合(S204:No)、制御がS201に移行する。
TLCフリーブロックの数が下限値に到達した場合(S204:Yes)、コントローラ100は、第2の転記処理を実行する(S205)。コントローラ100は、少なくとも1つのTLCフリーブロックが生成されるまで第2の転記処理を実行する。
なお、第2の転記処理の実行タイミングは、図12に示された例に限定されない。コントローラ100は、図12に示された実行タイミングに加えて、ホスト装置2からのアクセスがない期間に第2の転記処理を実行してもよい。
図13は、第1の実施形態にかかるSLCブロックの数の制御方法を説明するフローチャートである。なお、図13に示される制御方法の例では、図7に示された方法に基づいてSLCブロックの数を増加させるか否かが判断され、図10に示された方法に基づいてSLCブロックの数を減少させるか否かが判断されることとする。なお、図7に示された方法に替えて、図8に示された方法が採用可能である。また、図10に示された方法に替えて、図9に示された方法が採用可能である。
まず、プロセッサ101は、値Rth1,Rth2を設定する(S301)。
例えば、プロセッサ101は、TLCアクティブブロックの総数に0より大きく1より小さい定数を乗算することによって、値Rth1,Rth2のそれぞれを取得する。TLCアクティブブロックの総数に乗算される定数は、値Rth1,Rth2のそれぞれについて個別に用意されてもよいし、値Rth1,Rth2に共通に使用されてもよい。TLCアクティブブロックの総数に定数が乗算されて得られた値のうちの小数点以下の桁は、切り上げまたは切り捨てられる。
または、値Rth1,Rth2のそれぞれは固定値であってもよい。設計者は、値Rth1,Rth2のそれぞれを所定の領域(例えばNANDメモリ200)に予め格納する。S301においては、プロセッサ101は、値Rth1,Rth2のそれぞれをリードしてもよい。
続いて、プロセッサ101は、最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量が最小のTLCアクティブブロックが存在するか否かを判断する(S302)。
最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量が最小のTLCアクティブブロックが存在する場合(S302:Yes)、プロセッサ101は、SLCブロックの数を増加させる(S303)。
S303では、プロセッサ101は、SLCブロックの数を予め決められた数だけ増加させる。プロセッサ101は、例えば、予め決められた数のTLCフリーブロックをSLCフリーブロックに変更することによって、SLCブロックの数を増加させる。TLCフリーブロックが不足する場合には、プロセッサ101は、第2の転記処理を実行することで、予め決められた数のTLCフリーブロックを生成することができる。なお、SLCブロックの数の増加方法はこれに限定されない。1回のS303の処理によって増加されるSLCブロックの数は、固定されていてもよいし、可変であってもよい。
S303の処理の後、プロセッサ101は、S306の処理を実行する。S306の処理については後述される。
最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量が最小のTLCアクティブブロックが存在しない場合(S302:No)、プロセッサ101は、最も古くにアクティブブロックに遷移したRth2個のTLCアクティブブロックのうちに、格納されている有効データの量が値Ath2以上のTLCアクティブブロックが存在するか否かを判断する(S304)。
最も古くにアクティブブロックに遷移したRth2個のTLCアクティブブロックのうちに、格納されている有効データの量が値Ath2以上のTLCアクティブブロックが存在する場合(S304:Yes)、プロセッサ101は、SLCブロックの数を減少させる(S305)。
S305では、プロセッサ101は、SLCブロックの数を予め決められた数だけ減少させる。プロセッサ101は、例えば、予め決められた数のSLCフリーブロックをTLCフリーブロックに変更することによって、SLCブロックの数を減少させる。SLCフリーブロックが不足する場合には、プロセッサ101は、第1の転記処理を実行することで、予め決められた数のSLCフリーブロックを生成することができる。なお、SLCブロックの数の減少方法はこれに限定されない。1回のS305の処理によって減少されるSLCブロックの数は、固定されていてもよいし、可変であってもよい。
S303またはS305の後、プロセッサ101は、SLCブロックの数の変更後からのホストライト量が値Ath3に到達したか否かを判断する(S306)。
プロセッサ101は、各TLCアクティブブロックのアクティブブロックに遷移したタイミングの順番と、各TLCアクティブブロックに格納されている有効データの量と、に基づいてSLCブロックの数の制御を行う。しかしながら、SLCブロックの数の変更後からしばらくは、各TLCアクティブブロックのアクティブブロックに遷移したタイミングの順番と、各TLCアクティブブロックに格納されている有効データの量と、がSLCブロックの数の増減の判断に適さない状態が続く場合がある。よって、プロセッサ101は、SLCブロックの数を変更した後は、しばらくの期間、SLCブロックの数の増減の判断を停止(postpone)する。
S306は、SLCブロックの数の増減の判断を停止する処理に該当する。値Ath3は、SLCブロックの数の増減の判断を停止する期間をホストライト量によって規定するためのしきい値である。設計者は、任意の方法で値Ath3を設定することができる。なお、値Ath3は第1の量の一例である。
なお、SLCブロックの数の増減の判断を停止する期間の規定方法は、ホストライト量を用いた方法に限定されない。プロセッサ101は、SLCブロックの数の変更後からの経過時間が所定値に到達するまでSLCブロックの数の増減の判断を停止してもよい。
SLCブロックの数の変更後からのホストライト量が値Ath3に到達していない場合(S306:No)、プロセッサ101は、S306の判断処理を再び実行する。SLCブロックの数の変更後からのホストライト量が値Ath3に到達した場合(S306:Yes)、プロセッサ101は、S301の処理を実行する。
最も古くにアクティブブロックに遷移したRth2個のTLCアクティブブロックのうちに、格納されている有効データの量が値Ath2以上のTLCアクティブブロックが存在しない場合(S304:No)、プロセッサ101は、S302の処理を実行する。
なお、図13に示された例によれば、プロセッサ101は、SLCブロックの数を増加させるための判断(例えばS302の処理)の後に、SLCブロックの数を減少させるための判断(例えばS304の処理)を実行した。プロセッサ101は、SLCブロックの数を減少させるための判断(例えばS304の処理)を実行し、SLCブロックの数を減少させない場合に、SLCブロックの数を増加させるための判断(例えばS302の処理)を実行してもよい。このように、図13に示された各処理の順番は適宜変更されてもよい。
また、プロセッサ101は、SLCブロックの数を増加させるための判断(例えばS302の処理)を実行し、SLCブロックの数を減少させるための判断(例えばS304の処理)を実行し、SLCブロックの数を増加も減少もさせない場合、SLCブロックの数の増減の判断をしばらくの期間、停止してもよい。プロセッサ101は、SLCブロックの数を増減したか否かに関わらず、ホストライト量が値Ath3に到達するまで、次の判断を停止(postpone)してもよい。
以上述べたように、第1の実施形態によれば、コントローラ100は、各TLCアクティブブロックのアクティブブロックに遷移したタイミングの順番、即ちライトが完了した順番、と、各TLCアクティブブロックに格納されている有効データの量と、に基づいてSLCブロックの数を制御する。
よって、データ構成比が変化した場合であっても、SLCブロックの数を適切に変更することで、転記処理の実行頻度を効率的に抑制することが可能である。転記処理の実行頻度が抑制されると、メモリシステム1の性能が向上する。つまり、第1の実施形態によれば、メモリシステム1は、できるだけ性能が高くなるように1つのメモリセルあたりにライトされる値のビット数を制御することができる。
また、第1の実施形態によれば、コントローラ100は、例えば、TLCアクティブブロックのうちの最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量が最小のTLCアクティブブロックが存在する場合、SLCブロックの数を増加させる。
よって、ホストデータに含まれるホットデータの割合が増加した場合であっても、SLCブロックの数を適切に増加させることで転記処理の実行頻度を抑制することができる。
または、第1の実施形態によれば、コントローラ100は、例えば、TLCアクティブブロックのうちの最も新しくアクティブブロックに遷移したRth1個のTLCアクティブブロックのうちに、格納されている有効データの量がAth1に満たないTLCアクティブブロックが存在する場合、SLCブロックの数を増加させる。
よって、ホストデータに含まれるホットデータの割合が増加した場合であっても、SLCブロックの数を適切に増加させることで転記処理の実行頻度を抑制することができる。
また、第1の実施形態によれば、コントローラ100は、例えば、TLCアクティブブロックのうちの最も古くにアクティブブロックの遷移したTLCアクティブブロックに格納されている有効データの量がAth2を超える場合、SLCブロックの数を減少させる。
よって、ホストデータに含まれるコールドデータの割合が増加した場合であっても、SLCブロックの数を適切に減少させることで転記処理の実行頻度を抑制することができる。
または、第1の実施形態によれば、コントローラ100は、例えば、TLCアクティブブロックのうちの最も古くにアクティブブロックに遷移したRth2個のTLCアクティブブロックのうちに、格納されている有効データの量がAth2を超えるTLCアクティブブロックが存在する場合、SLCブロックの数を減少させる。
よって、ホストデータに含まれるコールドデータの割合が増加した場合であっても、SLCブロックの数を適切に減少させることで転記処理の実行頻度を抑制することができる。
また、第1の実施形態によれば、コントローラ100は、SLCブロックの数を増加または減少させた後からホストライト量がAth3に到達するまで、SLCブロックの数の増加の判断およびSLCブロックの数の減少の判断を停止し、これによって第2ブロックの数の制御を停止する。
よって、SLCブロックの数の増加の判断およびSLCブロックの数の減少の判断に適さない期間は、第2ブロックの数の制御を停止することが可能となる。
(第2の実施形態)
第2の実施形態では、ホストライト量と転記ライト量との比較に基づいてSLCブロックの数が制御される。以下に、第2の実施形態のメモリシステムについて説明する。なお、第2の実施形態のメモリシステムおよび当該メモリシステムが備える構成要素の機能は、SLCブロックの数の制御の機能を除いて第1の実施形態と同じである。以下では、メモリシステムおよび当該メモリシステムが備える構成要素には、第1の実施形態と同じ名称および符号を付すこととする。
第2の実施形態では、ホストライト量と転記ライト量との比較に基づいてSLCブロックの数が制御される。以下に、第2の実施形態のメモリシステムについて説明する。なお、第2の実施形態のメモリシステムおよび当該メモリシステムが備える構成要素の機能は、SLCブロックの数の制御の機能を除いて第1の実施形態と同じである。以下では、メモリシステムおよび当該メモリシステムが備える構成要素には、第1の実施形態と同じ名称および符号を付すこととする。
なお、第2の実施形態において、ホストライト量は、第1の量の一例である。転記ライト量は、第2の量の一例である。
図14は、第2の実施形態にかかるメモリシステム1においてホストデータに含まれるホットデータの割合が比較的多い場合のホストライト量と転記ライト量との関係の一例を説明するための模式的な図である。本図には、NANDメモリ200が備えるSLCブロックの群およびTLCブロックの群が表示されている。なお、SLCフリーブロックおよびTLCフリーブロックの表示は省略されている。白抜き矢印は、ホットデータの流れを示し、塗りつぶし矢印はコールドデータの流れを示す。
SLCオープンブロックには、ホットデータおよびコールドデータがライトされる。TLCオープンブロックには、コールドデータだけでなく、一部のホットデータが第1の転記処理によってライトされる。TLCブロックの群では、ホットデータは、第2の転記処理の対象とされる前にほとんどがリライトによって無効化される。よって、図14に示される例では、第2の転記処理では、コールドデータのみがTLCオープンブロックにライトされる。
ホストライト量が少ないほど、1つのSLCオープンブロックが設定されてから当該SLCオープンブロックがホストデータでいっぱいになるまで、より多くの時間がかかる。よって、ホストライト量が少ないほど、第1の転記処理の実行頻度が低い傾向がある。逆に、転記ライト量が少ないほど、1つのTLCオープンブロックが設定されてから当該TLCオープンブロックが転記データでいっぱいになるまで、より多くの時間がかかる。よって、転記ライト量が少ないほど、第2の転記処理の実行頻度が低い傾向がある。これらの傾向を鑑みると、ホストライト量と比較して転記ライト量が少ない場合、TLCブロックの数を減少させることができる余地があると考えることができる。
図14に示される例によれば、ホストライト量をW1と見なした場合、第1の転記処理による転記ライト量および第2の転記処理による転記ライト量はともに0.2×W1である。よって、転記ライト量、つまり第1の転記処理による転記ライト量および第2の転記処理による転記ライト量の合計は、0.4×W1であり、ホストライト量に比べて少ない。そのような場合、プロセッサ101は、SLCブロックの数を増加させる。
図15は、第2の実施形態にかかるメモリシステム1においてコールドデータの割合が比較的多い場合のホストライト量と転記ライト量との関係の一例を説明するための模式的な図である。本図には、NANDメモリ200が備えるSLCブロックの群およびTLCブロックの群が表示されている。なお、SLCフリーブロックおよびTLCフリーブロックの表示は省略されている。白抜き矢印は、ホットデータの流れを示し、塗りつぶし矢印はコールドデータの流れを示す。
図15に示される例によれば、ホストライト量をW2と見なした場合、第1の転記処理による転記ライト量は0.6×W2であり、第2の転記処理による転記ライト量は0.5×W2である。よって、転記ライト量は1.1×W2であり、ホストライト量に比べて多い。そのような場合、プロセッサ101は、SLCブロックの数を減少させる。
なお、図14および図15を用いて説明した例では、転記ライト量がホストライト量より少ない場合にはSLCブロックの数が増加せしめられ、転記ライト量がホストライト量より多い場合にはSLCブロックの数が減少せしめられた。転記ライト量がホストライト量と等しい場合の処理は任意である。転記ライト量がホストライト量と等しい場合、SLCブロックの数が増加せしめられてもよいし、SLCブロックの数が減少せしめられてもよいし、SLCブロックの数が変更されなくてもよい。
また、SLCブロックの数の増減の判断方法は、転記ライト量とホストライト量との間の単純比較によるものに限定されない。SLCブロックの数が細かく振動することを防止するために、プロセッサ101は、転記ライト量がホストライト量より少なく、かつ転記ライト量とホストライト量との差分の大きさが定数C1(ただしC1は正の実数)より大きい場合に、SLCブロックの数を増加させ、転記ライト量がホストライト量よりも多く、かつ転記ライト量とホストライト量との差分の大きさが定数C2(ただしC2は正の実数)より大きい場合に、SLCブロックの数を減少させてもよい。C2は、C1と同じであってもよいし異なっていてもよい。転記ライト量がホストライト量より少なく、かつ転記ライト量とホストライト量との差分の大きさが定数C1と等しい場合の処理は任意である。転記ライト量がホストライト量よりも多く、かつ転記ライト量とホストライト量との差分の大きさが定数C2と等しい場合の処理は任意である。定数C1は、第1の値の一例である。定数C2は、第2の値の一例である。
図16は、第2の実施形態にかかるSLCブロックの数の制御方法を説明するフローチャートである。なお、本図に示される例では、前述された定数C1およびC2を用いた比較によってSLCブロックの数が制御されることとする。
プロセッサ101は、ホストライト量および転記ライト量を監視している。プロセッサ101は、転記ライト量がホストライト量よりも少なく、かつ転記ライト量とホストライト量との差分の大きさが定数C1より大きいか否かを判断する(S401)。転記ライト量がホストライト量よりも少なく、かつ転記ライト量とホストライト量との差分の大きさが定数C1より大きい場合(S401:Yes)、プロセッサ101は、第1の実施形態のS303の処理と同様の処理によって、SLCブロックの数を増加させる(S402)。
転記ライト量がホストライト量よりも少なくないか、または転記ライト量とホストライト量との差分の大きさが定数C1より大きくない場合(S401:No)、プロセッサ101は、転記ライト量がホストライト量よりも多く、かつ転記ライト量とホストライト量との差分の大きさが定数C2より大きいか否かを判断する(S403)。転記ライト量がホストライト量よりも多く、かつ転記ライト量とホストライト量との差分の大きさが定数C2より大きい場合(S403:Yes)、プロセッサ101は、第1の実施形態のS305の処理と同様の処理によって、SLCブロックの数を減少させる(S404)。
転記ライト量がホストライト量よりも多くないか、または転記ライト量とホストライト量との差分の大きさが定数C2より大きくない場合(S403:No)、プロセッサ101は、S401の処理を実行する。
S402の処理またはS404の処理の後、プロセッサ101は、第1の実施形態のS306の処理と同様に、SLCブロックの数の変更後からのホストライト量が値Ath3に到達したか否かを判断する(S405)。SLCブロックの数の変更後からのホストライト量が値Ath3に到達していない場合(S405:No)、プロセッサ101は、S405の判断処理を再び実行する。SLCブロックの数の変更後からのホストライト量が値Ath3に到達した場合(S405:Yes)、プロセッサ101は、S401の処理を実行する。
なお、図16に示された例によれば、プロセッサ101は、SLCブロックの数を増加させるための判断(例えばS401の処理)の後に、SLCブロックの数を減少させるための判断(例えばS403の処理)を実行した。プロセッサ101は、SLCブロックの数を減少させるための判断(例えばS403の処理)を実行し、SLCブロックの数を減少させない場合に、SLCブロックの数を増加させるための判断(例えばS401の処理)を実行してもよい。このように、図16に示された各処理の順番は適宜変更されてもよい。
また、プロセッサ101は、SLCブロックの数を増加させるための判断(例えばS401の処理)を実行し、SLCブロックの数を減少させるための判断(例えばS403の処理)を実行し、SLCブロックの数を増加も減少もさせない場合、SLCブロックの数の増減の判断をしばらくの期間、停止してもよい。プロセッサ101は、SLCブロックの数を増減したか否かに関わらず、ホストライト量が値Ath3に到達するまで、次の判断を停止(postpone)してもよい。
以上述べたように、第2の実施形態によれば、コントローラ100は、ホストライト量と転記ライト量との比較に基づいてSLCブロックの数を制御する。
データ構成比が変化した場合、ホストライト量と転記ライト量との間の関係が変化し得る。上記の構成により、データ構成比が変化した場合であっても、SLCブロックの数を適切に変更することで、転記処理の実行頻度を効率的に抑制することが可能である。転記処理の実行頻度が抑制されると、メモリシステム1の性能が向上する。つまり、第2の実施形態によれば、メモリシステム1は、できるだけ性能が高くなるように1つのメモリセルあたりにライトされる値のビット数を制御することができる。
また、第2の実施形態によれば、コントローラ100は、例えば、転記ライト量がホストライト量よりも少ない場合、SLCブロックの数を増加させ、転記ライト量がホストライト量よりも多い場合、SLCブロックの数を減少させる。
よって、データ構成比が変化した場合であっても、SLCブロックの数を適切に変化させることで転記処理の実行頻度を抑制することができる。
また、第2の実施形態によれば、コントローラ100は、例えば、転記ライト量がホストライト量よりも少なく、かつ転記ライト量とホストライト量との差分の大きさが定数C1より大きい場合、SLCブロックの数を増加させる。コントローラ100は、転記ライト量がホストライト量よりも多く、かつ転記ライト量とホストライト量との差分の大きさが定数C2より大きい場合、SLCブロックの数を減少させる。
よって、データ構成比が変化した場合であっても、SLCブロックの数を適切に変化させることで転記処理の実行頻度を抑制することができる。また、SLCブロックの数が短期間で振動することを防止することができる。
また、第2の実施形態によれば、コントローラ100は、SLCブロックの数を増加または減少させた後からホストライト量がAth3に到達するまで、SLCブロックの数の増加の判断およびSLCブロックの数の減少の判断を停止し、これによって第2ブロックの数の制御を停止する。
よって、SLCブロックの数の増加の判断およびSLCブロックの数の減少の判断に適さない期間は、第2ブロックの数の制御を停止することが可能となる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 メモリシステム、2 ホスト装置、3 通信インタフェース、4,4a-4 区分、100 コントローラ、101 プロセッサ、102 ホストI/F、103 RAM、104 バッファメモリ、105 メモリI/F、106 内部バス、200 NANDメモリ、201 メモリチップ、210 周辺回路、211 メモリセルアレイ、212 NANDストリング、300 メモリバス。
Claims (12)
- ホスト装置に接続可能なメモリシステムであって、
複数の第1ブロックを備えるフラッシュメモリと、前記複数の第1ブロックのそれぞれは複数のメモリセルを備え、前記複数の第1ブロックのそれぞれは第1モードおよび第2モードのうちの記憶モードでライトが可能であり、前記第1モードはメモリセル当たりに第1の数のビットの値がライトされるモードであり、前記第2モードはメモリセル当たりに第2の数のビットの値がライトされるモードであり、前記第2の数は前記第1の数よりも大きく、
前記複数の第1ブロックのうちの一部である複数の第2ブロックを前記第1モードで使用し、
前記複数の第1ブロックのうちの他の一部である複数の第3ブロックを前記第2モードで使用し、
前記ホスト装置からのデータを前記複数の第2ブロックに順次、ライトし、
前記複数の第2ブロックのうちのライトが完了した1以上の第2ブロックから1つの第2ブロックを選択し、選択された前記第2ブロック内の全ての有効なデータを前記複数の第3ブロックに順次、ライトすることによって、選択された前記第2ブロックを再利用可能な状態にする第1の転記処理を実行し、
前記複数の第3ブロックのうちのライトが完了した1以上の第3ブロックから1つの第3ブロックを選択し、選択された前記第3ブロック内の全ての有効なデータを前記複数の第3ブロックのうちのライトが完了していない第3ブロックにライトすることによって、選択された前記第3ブロックを再利用可能な状態にする第2の転記処理を実行し、
ライトが完了した前記1以上の第3ブロックのそれぞれに対するライトが完了した順番と、ライトが完了した前記1以上の第3ブロックのそれぞれに格納されている有効データの量と、に基づいて前記複数の第1ブロックのうちの第2ブロックの数を制御する、
コントローラと、
を備えるメモリシステム。 - 前記コントローラは、ライトが完了した前記1以上の第3ブロックのうちの最も新しくライトが完了した第3の数の第3ブロックのうちに、前記1以上の第3ブロックのうちの格納されている有効データの量が最小の第3ブロックが存在する場合、前記複数の第1ブロックのうちの第2ブロックの数を増加させる、
請求項1に記載のメモリシステム。 - 前記コントローラは、ライトが完了した前記1以上の第3ブロックのうちの最も新しくライトが完了した第3の数の第3ブロックのうちに、格納されている有効データの量が第1のしきい値に満たない第3ブロックが存在する場合、前記複数の第1ブロックのうちの第2ブロックの数を増加させる、
請求項1に記載のメモリシステム。 - 前記コントローラは、ライトが完了した前記1以上の第3ブロックのうちの最も古くにライトが完了した第3ブロックに格納されている有効データの量が第2のしきい値を超える場合、前記複数の第1ブロックのうちの第2ブロックの数を減少させる、
請求項1または請求項2に記載のメモリシステム。 - 前記コントローラは、ライトが完了した前記1以上の第3ブロックのうちの最も古くにライトが完了した第4の数の第3ブロックのうちに、格納されている有効データの量が第2のしきい値を超える第3ブロックが存在する場合、前記複数の第1ブロックのうちの第2ブロックの数を減少させる、
請求項1または請求項2に記載のメモリシステム。 - 前記コントローラは、前記複数の第1ブロックのうちの第2ブロックの数を増加または減少させた後から前記複数の第2ブロックにライトされたデータの量が第1の量に到達するまで、前記第2ブロックの数の制御を停止する、
請求項2から請求項5の何れか一項に記載のメモリシステム。 - ホスト装置に接続可能なメモリシステムであって、
複数の第1ブロックを備えるフラッシュメモリと、前記複数の第1ブロックのそれぞれは複数のメモリセルを備え、前記複数の第1ブロックのそれぞれは第1モードおよび第2モードのうちの記憶モードでライトが可能であり、前記第1モードはメモリセル当たりに第1の数のビットの値がライトされるモードであり、前記第2モードはメモリセル当たりに第2の数のビットの値がライトされるモードであり、前記第2の数は前記第1の数よりも大きく、
前記複数の第1ブロックのうちの一部である複数の第2ブロックを前記第1モードで使用し、
前記複数の第1ブロックのうちの他の一部である複数の第3ブロックを前記第2モードで使用し、
前記ホスト装置からのデータを前記複数の第2ブロックに順次、ライトし、
前記複数の第2ブロックのうちのライトが完了した1以上の第2ブロックから1つの第2ブロックを選択し、選択された前記第2ブロック内の全ての有効なデータを前記複数の第3ブロックに順次、ライトすることによって、選択された前記第2ブロックを再利用可能な状態にする第1の転記処理を実行し、
前記複数の第3ブロックのうちのライトが完了した1以上の第3ブロックから1つの第3ブロックを選択し、選択された前記第3ブロック内の全ての有効なデータを前記複数の第3ブロックのうちのライトが完了していない第3ブロックにライトすることによって、選択された前記第3ブロックを再利用可能な状態にする第2の転記処理を実行し、
単位時間当たりに前記複数の第2ブロックにライトされたデータの量である第1のデータ量と、前記単位時間当たりに前記複数の第3ブロックにライトされたデータの量である第2のデータ量と、の比較に基づいて前記複数の第1ブロックのうちの第2ブロックの数を制御する、
コントローラと、
を備えるメモリシステム。 - 前記コントローラは、
前記第2のデータ量が前記第1のデータ量よりも少ない場合、前記複数の第1ブロックのうちの第2ブロックの数を増加させ、
前記第2のデータ量が前記第1のデータ量よりも多い場合、前記複数の第1ブロックのうちの第2ブロックの数を減少させる、
請求項7に記載のメモリシステム。 - 前記コントローラは、
前記第2のデータ量が前記第1のデータ量よりも少なく、かつ前記第2のデータ量と前記第1のデータ量との差分の大きさが第1の値より大きい場合、前記複数の第1ブロックのうちの第2ブロックの数を増加させ、
前記第2のデータ量が前記第1のデータ量よりも多く、かつ前記第2のデータ量と前記第1のデータ量との差分の大きさが第2の値より大きい場合、前記複数の第1ブロックのうちの第2ブロックの数を減少させる、
請求項7に記載のメモリシステム。 - 前記コントローラは、前記複数の第1ブロックのうちの第2ブロックの数を増加または減少させた後から前記複数の第2ブロックにライトされたデータの量が第1の量に到達するまで、前記第2ブロックの数の制御を停止する、
請求項8または請求項9に記載のメモリシステム。 - 複数の第1ブロックを備えるフラッシュメモリを備えるメモリシステムを制御する方法であって、前記複数の第1ブロックのそれぞれは複数のメモリセルを備え、前記複数の第1ブロックのそれぞれは第1モードおよび第2モードのうちの記憶モードでライトが可能であり、前記第1モードはメモリセル当たりに第1の数のビットの値がライトされるモードであり、前記第2モードはメモリセル当たりに第2の数のビットの値がライトされるモードであり、前記第2の数は前記第1の数よりも大きく、
前記複数の第1ブロックのうちの一部である複数の第2ブロックを前記第1モードで使用することと、
前記複数の第1ブロックのうちの他の一部である複数の第3ブロックを前記第2モードで使用することと、
ホスト装置からのデータを前記複数の第2ブロックに順次、ライトすることと、
前記複数の第2ブロックのうちのライトが完了した1以上の第2ブロックから1つの第2ブロックを選択し、選択された前記第2ブロック内の全ての有効なデータを前記複数の第3ブロックに順次、ライトすることによって、選択された前記第2ブロックを再利用可能な状態にする第1の転記処理を実行することと、
前記複数の第3ブロックのうちのライトが完了した1以上の第3ブロックから1つの第3ブロックを選択し、選択された前記第3ブロック内の全ての有効なデータを前記複数の第3ブロックのうちのライトが完了していない第3ブロックにライトすることによって、選択された前記第3ブロックを再利用可能な状態にする第2の転記処理を実行することと、
ライトが完了した前記1以上の第3ブロックのそれぞれに対するライトが完了した順番と、ライトが完了した前記1以上の第3ブロックのそれぞれに格納されている有効データの量と、に基づいて前記複数の第1ブロックのうちの第2ブロックの数を制御することと、
を含む方法。 - 複数の第1ブロックを備えるフラッシュメモリを備えるメモリシステムを制御する方法であって、前記複数の第1ブロックのそれぞれは複数のメモリセルを備え、前記複数の第1ブロックのそれぞれは第1モードおよび第2モードのうちの記憶モードでライトが可能であり、前記第1モードはメモリセル当たりに第1の数のビットの値がライトされるモードであり、前記第2モードはメモリセル当たりに第2の数のビットの値がライトされるモードであり、前記第2の数は前記第1の数よりも大きく、
前記複数の第1ブロックのうちの一部である複数の第2ブロックを前記第1モードで使用することと、
前記複数の第1ブロックのうちの他の一部である複数の第3ブロックを前記第2モードで使用することと、
ホスト装置からのデータを前記複数の第2ブロックに順次、ライトすることと、
前記複数の第2ブロックのうちのライトが完了した1以上の第2ブロックから1つの第2ブロックを選択し、選択された前記第2ブロック内の全ての有効なデータを前記複数の第3ブロックに順次、ライトすることによって、選択された前記第2ブロックを再利用可能な状態にする第1の転記処理を実行することと、
前記複数の第3ブロックのうちのライトが完了した1以上の第3ブロックから1つの第3ブロックを選択し、選択された前記第3ブロック内の全ての有効なデータを前記複数の第3ブロックのうちのライトが完了していない第3ブロックにライトすることによって、選択された前記第3ブロックを再利用可能な状態にする第2の転記処理を実行することと、
単位時間当たりに前記複数の第2ブロックにライトされたデータの量である第1のデータ量と、前記単位時間当たりに前記複数の第3ブロックにライトされたデータの量である第2のデータ量と、の比較に基づいて前記複数の第1ブロックのうちの第2ブロックの数を制御することと、
を含む方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021146543A JP2023039459A (ja) | 2021-09-09 | 2021-09-09 | メモリシステムおよび方法 |
US17/691,938 US11966606B2 (en) | 2021-09-09 | 2022-03-10 | Memory system and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021146543A JP2023039459A (ja) | 2021-09-09 | 2021-09-09 | メモリシステムおよび方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023039459A true JP2023039459A (ja) | 2023-03-22 |
Family
ID=85385063
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021146543A Pending JP2023039459A (ja) | 2021-09-09 | 2021-09-09 | メモリシステムおよび方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11966606B2 (ja) |
JP (1) | JP2023039459A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11017838B2 (en) * | 2016-08-04 | 2021-05-25 | Samsung Electronics Co., Ltd. | Nonvolatile memory devices |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5066241B2 (ja) * | 2010-09-24 | 2012-11-07 | 株式会社東芝 | メモリシステム |
US10204043B2 (en) | 2016-03-08 | 2019-02-12 | Toshiba Memory Corporation | Memory controller, method of controlling nonvolatile memory and memory system |
TWI653538B (zh) * | 2017-11-13 | 2019-03-11 | 慧榮科技股份有限公司 | 資料儲存裝置與記憶體裝置之資料處理方法 |
JP2019168937A (ja) | 2018-03-23 | 2019-10-03 | 東芝メモリ株式会社 | メモリシステム、制御方法及びコントローラ |
KR102516246B1 (ko) * | 2018-10-29 | 2023-03-30 | 마이크론 테크놀로지, 인크. | Slc 캐시 할당 |
JP2021026448A (ja) | 2019-08-02 | 2021-02-22 | 富士通株式会社 | 記憶部システム、記憶部制御装置および記憶部制御方法 |
KR102685013B1 (ko) * | 2019-11-11 | 2024-07-15 | 삼성전자주식회사 | 스토리지 장치 및 그 동작방법 |
US11188261B2 (en) * | 2019-11-18 | 2021-11-30 | International Business Machines Corporation | Memory controllers for solid-state storage devices |
KR20210144249A (ko) * | 2020-05-22 | 2021-11-30 | 에스케이하이닉스 주식회사 | 저장 장치 및 이의 동작 방법 |
US11403032B2 (en) * | 2020-09-10 | 2022-08-02 | Micron Technology, Inc. | Data transfer management within a memory device having multiple memory regions with different memory densities |
-
2021
- 2021-09-09 JP JP2021146543A patent/JP2023039459A/ja active Pending
-
2022
- 2022-03-10 US US17/691,938 patent/US11966606B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230075796A1 (en) | 2023-03-09 |
US11966606B2 (en) | 2024-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11880602B2 (en) | Data writing method and storage device | |
US10956060B2 (en) | Memory system dynamically allocating memory spaces and method of operating the same | |
US8364884B2 (en) | Memory system with a memory controller controlling parallelism of driving memories | |
US8332578B2 (en) | Method and system to improve the performance of a multi-level cell (MLC) NAND flash memory | |
US10740013B2 (en) | Non-volatile data-storage device with spare block pools using a block clearing method | |
US9870836B2 (en) | Memory system and method of controlling nonvolatile memory | |
JP3938309B2 (ja) | リードディスターブを緩和したフラッシュメモリ | |
US10229049B2 (en) | Storage system that performs host-initiated garbage collection | |
US8966163B2 (en) | Non-volatile memory device and method for programming the same | |
US20100082917A1 (en) | Solid state storage system and method of controlling solid state storage system using a multi-plane method and an interleaving method | |
US20170060439A1 (en) | Memory system that buffers data before writing to nonvolatile memory | |
JP2011118469A (ja) | メモリ管理装置およびメモリ管理方法 | |
KR20080075608A (ko) | 메모리 맵 테이블 서치 타임을 최소화 또는 줄일 수 있는방법 및 그에 따른 반도체 메모리 장치 | |
KR20110014923A (ko) | 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템 | |
US20170171106A1 (en) | Quality of service management method in fabric network and fabric network system using the same | |
CN111722792B (zh) | 存储器系统 | |
CN113590505B (zh) | 地址映射方法、固态硬盘控制器及固态硬盘 | |
JP7566676B2 (ja) | メモリシステム、および情報処理システム | |
JP2023039459A (ja) | メモリシステムおよび方法 | |
US20210034541A1 (en) | Memory system, memory control device, and memory control method | |
JP2024043939A (ja) | メモリシステム | |
JP2021071776A (ja) | メモリシステム | |
JP2024087408A (ja) | メモリシステム | |
JP2022047854A (ja) | メモリシステム | |
US11954357B2 (en) | Memory system and memory system control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240312 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20240930 |