JP2021043580A - メモリシステムおよびガベッジコレクション制御方法 - Google Patents

メモリシステムおよびガベッジコレクション制御方法 Download PDF

Info

Publication number
JP2021043580A
JP2021043580A JP2019163806A JP2019163806A JP2021043580A JP 2021043580 A JP2021043580 A JP 2021043580A JP 2019163806 A JP2019163806 A JP 2019163806A JP 2019163806 A JP2019163806 A JP 2019163806A JP 2021043580 A JP2021043580 A JP 2021043580A
Authority
JP
Japan
Prior art keywords
block
blocks
data
garbage collection
processing unit
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.)
Granted
Application number
JP2019163806A
Other languages
English (en)
Other versions
JP7321851B2 (ja
Inventor
容子 増尾
Yoko Masuo
容子 増尾
洋右 光増
Hirou Mitsumasu
洋右 光増
和也 橘内
Kazuya Kitsunai
和也 橘内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kioxia Corp filed Critical Kioxia Corp
Priority to JP2019163806A priority Critical patent/JP7321851B2/ja
Priority to US16/787,133 priority patent/US11182287B2/en
Publication of JP2021043580A publication Critical patent/JP2021043580A/ja
Application granted granted Critical
Publication of JP7321851B2 publication Critical patent/JP7321851B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

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)
  • Memory System (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】ガベッジコレクションを効率的に実行することができるメモリシステムを提供する。【解決手段】実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラとを具備する。コントローラは、第1処理部と、第2処理部とを具備する。第1処理部は、N個(Nは2以上の自然数)のブロック中の有効なデータをN個未満のブロックに移動させて1以上のフリーブロックを作成する第1処理を実行する。第2処理部は、M個(Mは1以上の自然数)のブロック中のリフレッシュを必要とするデータを含む有効なデータをM個以下のブロックに移動させる第2処理を実行する。【選択図】図1

Description

本発明の実施形態は、メモリシステムおよびガベッジコレクション制御方法に関する。
NAND型フラッシュメモリ(NANDメモリ)を搭載するSSD(solid state drive)などのメモリシステムでは、NANDメモリ上の不要となった(無効な)データが残存する記憶領域を再利用するためのガベッジコレクションと称される処理が必要となる。ガベッジコレクションは、コンパクションとも称される。
また、この種のメモリシステムでは、リフレッシュと称される、NANDメモリ上の有効なデータを格納し直す処理も必要である。具体的には、リフレッシュは、有効なデータをNANDメモリ内において移動させる処理を含む。
ガベッジコレクションは、リフレッシュと同様、NANDメモリ上の有効なデータをNANDメモリ内において移動させる処理を含む。したがって、リフレッシュのために移動させるべきデータを、ガベッジコレクションのために移動させるべきデータの一部として混在させて、リフレッシュのためのデータの移動を、ガベッジコレクション内において実行することも考えられる。つまり、リフレッシュをガベッジコレクションに組み入れることも考えられる。
しかしながら、リフレッシュを兼ねてガベッジコレクションを実行する場合、リフレッシュを必要とするデータの発生状況によっては、ホスト装置からの要求に応じたデータの書き込みに対するガベッジコレクションのためのデータの書き込みの比が大きくなり、メモリシステムの性能を短期的ではあっても低下させてしまうおそれがある。
米国特許出願公開第2018/0275911号明細書 米国特許出願公開第2012/0066438号明細書 米国特許出願公開第2017/0329532号明細書
本発明が解決しようとする課題は、ガベッジコレクションを効率的に実行することができるメモリシステムおよびガベッジコレクション制御方法を提供することである。
実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラと、を具備する。不揮発性メモリは、複数のブロックを含む。コントローラは、前記不揮発性メモリへのデータの書き込みまたは前記不揮発性メモリからのデータの読み出しを制御する。コントローラは、第1処理部と、第2処理部と、を具備する。第1処理部は、N個(Nは2以上の自然数)のブロック中の有効なデータをN個未満のブロックに移動させて1以上のフリーブロックを作成する第1処理を実行する。第2処理部は、M個(Mは1以上の自然数)のブロック中のリフレッシュを必要とするデータを含む有効なデータをM個以下のブロックに移動させる第2処理を実行する。
実施形態のメモリシステムの一構成例を示す図。 実施形態のメモリシステムが搭載するNAND型フラッシュメモリに含まれるNAND型フラッシュメモリダイの一構成例を示す図。 実施形態のメモリシステムにおいてNAND型フラッシュメモリに関して管理される論理ブロックの一構成例を示す図。 実施形態のメモリシステムにおいてフリーブロックの確保を目的として実行されるガベッジコレクションの概要を説明するための図。 実施形態のメモリシステムにおいて実行されるリフレッシュ目的のガベッジコレクションの概要を説明するための図。 実施形態のメモリシステムのリフレッシュ・ガベッジコレクション切替判定部によるブロックの切り替えの概要を説明するための図。 実施形態のメモリシステムのリフレッシュ・ガベッジコレクション切替判定部によるブロックの切り替えの効果を説明するための図。 実施形態のメモリシステムのリフレッシュ・ガベッジコレクション切替判定部の処理の流れを示すフローチャート。 実施形態のメモリシステムのフリーブロックの確保を目的として実行されるべきガベッジコレクションがリフレッシュ目的で実行される場合における処理の流れを示すフローチャート。
以下、実施の形態について、図面を参照して説明する。
図1は、本実施形態のメモリシステム1の一構成例を示す図である。ここでは、メモリシステム1は、SSDとして実現されていることを想定する。
SSDであるメモリシステム1は、たとえばSoC(system on a chip)などの半導体集積回路として構成されるコントローラ100と、NAND型フラッシュメモリ(NANDメモリ)200とを有する。
コントローラ100は、ホストインターフェース部110と、制御部120と、たとえばSRAMなどであるデータバッファ130と、NANDインターフェース部140とを有する。なお、データバッファ130は、コントローラ100の外部にたとえばDRAMなどとして設けられるものであってもよい。
ホストインターフェース部110は、メモリシステム1とホスト2とを接続する回路を含むデバイスであり、たとえばPCIe(登録商標)に準拠した通信を実行する。ホストインターフェース部110は、ホスト2からコマンドを受信する。
制御部120は、ホストインターフェース部110を介して接続されるホスト2からコマンドを受信し、そのコマンドに対応する処理を実行して、その処理結果をホスト2へ送信する。ホスト2から受信するコマンドは、データの書き込みを要求するライトコマンドやデータの読み出しを要求するリードコマンドなどを含む。具体的には、制御部120は、データバッファ130を一時的なデータの格納領域として使用しながら、NANDメモリ200へのデータの書き込みやNANDメモリ200からのデータの読み出しを実行する。
制御部120は、たとえばCPUなどのプロセッサを含んで構成され、たとえばNANDメモリ200に格納されているファームウェア(プログラム)を実行することによって、ブロック管理部121、書き込み/読み出し制御部122、リフレッシュ・ガベッジコレクション切替判定部123、リフレッシュ制御部124、ガベッジコレクション制御部125、エラー訂正処理部126といった各種処理部を実現する。これら各種処理部の一部または全部は、プログラムをCPUが実行することによってソフトウェア的に実現することに代えて、たとえば電子回路などによってハードウェア的に実現するものであってもよい。
各種処理部がソフトウェア的に実現される場合、制御部120は、複数のCPUで各処理部の複数の処理を並列に実行するようにしてもよいし、1つのCPUで各処理部の複数の処理を時分割で実行するようにしてもよい。さらには、複数のCPUそれぞれで各処理部の複数の処理を時分割で並列に実行するようにしてもよい。つまり、メモリシステム1上において、たとえばリフレッシュ制御部124とガベッジコレクション制御部125とは並列に動作し得る。
ブロック管理部121は、NANDメモリ200に含まれる複数の物理ブロックの内の一部のブロックにより拡張的な論理ブロックを構築する。また、ブロック管理部121は、論理ブロックに関する情報(ブロック情報)の管理や、書き込み/読み出し制御部122、リフレッシュ制御部124、ガベッジコレクション制御部125などへの論理ブロックの供給を行う。
ここで、図1に加えて、図2および図3を併せて参照して、ブロック管理部121によって管理される論理ブロックについて説明する。
図1に示すように、NANDメモリ200は、複数のNAND型フラッシュメモリダイ(NANDメモリダイ)NAND#xxを含む。NANDメモリダイは、複数の物理ブロックを含み不揮発にデータを記憶可能なメモリセルアレイと当該メモリセルアレイを制御する周辺回路とを含む。個々のNANDメモリダイは独立して動作可能である。つまり、NANDメモリダイは、並列動作単位として機能する。NANDメモリダイは、NAND型フラッシュメモリチップや不揮発性メモリチップなどとも称される。NANDメモリダイは、複数のチャンネル(たとえば18個のチャンネルCh.0〜Ch.17)の各々に同数ずつ(たとえば1チャンネル当たり4個ずつ)接続され得る。各チャンネルCh.0〜Ch.17は、NANDインターフェース部140の複数のNANDコントローラ141_1〜141_17が各NANDメモリダイと通信するための通信線(メモリバス)を含む。
たとえば各チャンネルCh.0〜Ch.17に並列に18個ずつ接続される、NANDメモリダイ#0〜#17、NANDメモリダイ#18〜#35、NANDメモリダイ#36〜#53、NANDメモリダイ#54〜#71は、それぞれがバンク(Bank0〜3)として編成されてもよい。バンクは、複数のNANDメモリダイをバンクインタリーブによって並列動作させるための単位として機能する。図1に示す構成例においては、18のチャンネルにより、4つのバンクを使用したバンクインタリーブによって、最大72個のNANDメモリダイを並列動作させることができる。
図2は、NANDメモリダイの一構成例を示す図である。
図2に示すように、NANDメモリダイは、各々が複数のページを含む複数の物理ブロックを含む。データの書き込みおよびデータの読み出しは、ページ単位で処理される。一方、データの消去は、物理ブロック単位で処理される。データを書き込み済みのページへのデータの上書きは行われず、そのため、データの更新は、あるページ上の元のデータを無効化し、新たなデータを他のページへ書き込むことによって行われる。よって、ある物理ブロックが、その大部分を不要となったデータ(無効なデータ)で占められるという状態が発生し得る。物理ブロックの不良ページを除きデータを記憶可能な有効領域に占める有効なデータの割合は、有効クラスタ率などと称される。また、主に、この有効クラスタ率の小さい物理ブロックを対象として実行され、不要となったデータが残存する領域を再利用するための処理は、ガベッジコレクション又はコンパクションなどと称される。ガベッジコレクションの詳細については後述する。
図3は、ブロック管理部121によって管理される論理ブロックの一構成例を示す図である。
ブロック管理部121は、各々が複数の物理ブロックを含む複数の論理ブロックを管理する。そして、メモリシステム1においては、この論理ブロックの単位で少なくともデータの消去が実行されるものとする。
ブロック管理部121は、たとえば、NANDメモリダイ#0〜#71から1つずつ物理ブロックを選択し、計72個の物理ブロックを含む論理ブロックを管理する。18のチャンネルおよび4つのバンクインタリーブによって、NANDメモリダイ#0〜#71を並列動作させることができるので、たとえば1つの論理ブロックへのデータの書き込みを72ページずつ実行していくことができる。なお、ブロック管理部121は、72個よりも少ない数(たとえば36個や18個など)のNANDメモリダイから物理ブロックを1つずつ選択して論理ブロックを管理するようにしてもよい。1つの論理ブロックに関するNANDメモリダイの組み合わせは、チャンネルやバンクが異なるもの同士となることが好ましい。各NANDメモリダイがマルチプレーン(例えば2プレーン)構成を有している場合には、ブロック管理部121は、たとえば、NANDメモリダイ#0〜#71に対応する144個のプレーンから1つずつ物理ブロックを選択し、計144個の物理ブロックを含む論理ブロックを管理するようにしてもよい。以下、単にブロックという場合、ブロック管理部121によって管理される論理ブロックを意図しているものとする。
図1に戻り、制御部120における各処理部の説明を続ける。
書き込み/読み出し制御部122は、ホスト2から要求されたNANDメモリ200へのデータの書き込みまたはNANDメモリ200からのデータの読み出しを実行する。より詳しくは、書き込み/読み出し制御部122は、データの書き込みの場合、ホストインターフェース部110経由で受信しデータバッファ130内のライトバッファ131に格納される書き込みデータのNANDメモリ200への書き込みをNANDインターフェース部140の各NANDコントローラ141_1〜141_17の何れかに指示する。データの読み出しの場合、書き込み/読み出し制御部122は、NANDメモリ200からの読み出しデータの読み出しをNANDインターフェース部140の各NANDコントローラ141_1〜141_17の何れかに指示する。読み出されたデータは、データバッファ130内のリードバッファ132に一時的に格納され、ホストインターフェース部110経由でホスト2へ送信される。
また、書き込み/読み出し制御部122は、ブロック管理部121からブロックの供給を受けて、NANDメモリ200へのデータの書き込みを実行する。ブロック管理部121は、ブロック情報として、各ブロックの使用有無、ブロックの総数、未使用状態のブロックの数などを管理する。なお、未使用状態のブロックとは、一度も使用されたことのないブロックを意図するものではなく、データが消去されて再利用可能なブロックを意図している。もちろん、一度も使用されたことのないブロックも未使用状態のブロックに含まれる。以下、未使用状態のブロックをフリーブロックと称する。
リフレッシュ・ガベッジコレクション切替判定部123は、リフレッシュ制御部124が実行するガベッジコレクションまたはガベッジコレクション制御部125が実行するガベッジコレクションについて、有効なデータを含み移動元として適用されているブロックを、一定の条件下で、一方の処理から他方の処理へ切り替える処理を実行する。リフレッシュ・ガベッジコレクション切替判定部123の詳細については後述する。
リフレッシュ制御部124は、たとえばコールドデータと称される長期間使用されていない(アクセスされていない)データの保全や、NANDメモリ200の特性に応じたエラーに起因するデータの回復のためのリフレッシュ目的のガベッジコレクションを実行する。一方、ガベッジコレクション制御部125は、フリーブロックの確保を目的とするガベッジコレクションを実行する。つまり、本実施形態にかかるメモリシステム1は、目的を異にする2系統のガベッジコレクションを各々実行することのできる機構を有している。換言すれば、本実施形態にかかるメモリシステム1は、リフレッシュ目的のガベッジコレクションと、フリーブロックの確保を目的とするガベッジコレクションとを独立的に実行するために、リフレッシュ制御部124と、ガベッジコレクション制御部125とを有している。なお、コールドデータに対して、たとえば一定期間内に使用されている(アクセスされている)データは、ホットデータなどと称される。
ここで、図4および図5を参照して、本実施形態にかかるメモリシステム1において各々実行される2系統のガベッジコレクションの概要について説明する。
図4は、ガベッジコレクション制御部125によってフリーブロックの確保を目的として実行されるガベッジコレクションの概要を説明するための図である。
図4においては、1つのブロックが9つのページで構成されているものとしている。図4(A)のブロックx1、ブロックx2、ブロックx3の3つのブロックは、ガベッジコレクション制御部125が、有効なデータの移動元として選択したブロックである。一方、図4(B)のブロックy1、ブロックy2の2つのブロックは、ガベッジコレクション制御部125が、有効なデータの移動先としてブロック管理部121から供給を受けたブロックである。また、図4(A)の各ブロックの符号a1で示される模様のハッチングが施されたページは、有効なデータが格納されているページであり、一方、符号a2で示される模様のハッチングが施されたページは、不要となったデータが残存するページである。
ガベッジコレクション制御部125は、有効なデータの移動元の候補としていずれかのブロックを選択し、そのブロックをブロック管理部121へ通知する。リフレッシュ目的のガベッジコレクションを実行するリフレッシュ制御部124は、ブロック管理部121からの通知により、有効なデータの移動元としていずれかのブロックを候補として選択する。ブロック管理部121は、ブロック情報として、ガベッジコレクション制御部125によって有効なデータの移動元の候補として選択されているブロックと、リフレッシュ制御部124によって有効なデータの移動元の候補として選択されているブロックとを管理する。ブロック管理部121は、有効なデータの移動先とするブロックを、ガベッジコレクション制御部125及びリフレッシュ制御部124に供給する。ガベッジコレクション制御部125は、移動元の候補のブロックの状態をブロック管理部121より取得する。そのブロックがリフレッシュ制御部124によって既に候補として選択されていた場合、ガベッジコレクション制御部125は、当該ブロックを候補から外し、有効なデータの移動元の候補とする他のブロックを改めて選択する。これにより、同一のブロックが、ガベッジコレクション制御部125とリフレッシュ制御部124との双方から有効なデータの移動元として選択されることが防止される。
なお、ブロック管理部121は、ブロック情報として、各ブロックの有効クラスタ率を管理する。そこで、ガベッジコレクション制御部125は、ブロック管理部121と連携して、有効クラスタ率の小さい順に、有効なデータの移動元の候補とするブロックを選択する。
また、ガベッジコレクション制御部125とリフレッシュ制御部124とは、有効なデータの移動先とするブロックの供給をブロック管理部121から受けるので、同一のブロックが、ガベッジコレクション制御部125とリフレッシュ制御部124との双方から有効なデータの移動先として適用されることも防止される。
つまり、本実施形態にかかるメモリシステム1においては、同一のブロックが有効なデータの移動元のブロックまたは移動先のブロックとしてガベッジコレクション制御部125とリフレッシュ制御部124との双方に重複して適用されないように、有効なデータの移動元のブロックの候補および移動先のブロックの候補がガベッジコレクション制御部125とリフレッシュ制御部124とで分けて管理される。
図4に示す例では、有効なデータが格納されているページが、ブロックx1には5ページ(A1、A2、A6、A7、A9)、ブロックx2には6ページ(B2、B3、B4、B5、B8、B9)、ブロックx3には3ページ(C2、C7、C8)、それぞれ存在している。つまり、3ブロックで計14ページ存在している。換言すれば、3ブロックで13ページが無駄になっている。無駄になっているページ数は、ブロック内のページ数を超えている。
ガベッジコレクション制御部125は、有効なデータの移動元として選択したブロック内の有効なデータのみを、有効なデータの移動先としてブロック管理部121から供給を受けたブロックに書き込む。この移動のためのデータの書き込みは、計14ページ、つまり2ブロックに収まる。したがって、元の3ブロックとの間で差し引き1つのフリーブロックが作成されることになる。
一方、図5は、リフレッシュ制御部124によって実行されるリフレッシュ目的のガベッジコレクションの概要を説明するための図である。
図5においても、1つのブロックが9つのページで構成されているものとしている。図5(A)のブロックx1、ブロックx2、ブロックx3の3つのブロックは、リフレッシュ制御部124が、有効なデータの移動元として選択したブロックである。一方、図5(B)のブロックy1、ブロックy2の2つのブロックは、リフレッシュ制御部124が、有効なデータの移動先としてブロック管理部121から供給を受けたブロックである。また、図5(A)の各ブロックの符号a1で示される模様のハッチングが施されたページは、リフレッシュを必要としていない、有効なデータが格納されているページであり、符号a2で示される模様のハッチングが施されたページは、不要となったデータが残存するページである。また、図5(A)の各ブロックの符号b1で示される模様のハッチングが施されたページは、リフレッシュを必要とする、有効なデータが格納されるページである(A6、B4、C8)。
リフレッシュを必要とするデータ、つまり、NANDメモリ200内での書直しを行う必要のあるデータとは、コールドデータなどと称される長期間使用されていないデータ(読み出しが行われていないデータ)や、たとえばNANDメモリ200の特性によりハードウェア的に発生したエラーによって回復させることが必要となったデータなどである。リフレッシュは、それらのデータを含むブロックから別のブロックへ丸ごとデータを移動させることによっても達成できるが、メモリシステム1では、リフレッシュ制御部124が、それらのデータを含むブロックを、有効なデータの移動元として選択して、リフレッシュを兼ねたリフレッシュ目的のガベッジコレクションを実行する。
リフレッシュを必要とするデータを含むブロックは、ブロック情報によりブロック管理部121によって管理されている。リフレッシュ制御部124は、ブロック管理部121と連携して、リフレッシュを必要とするデータを含むブロックであって、有効なデータの移動元とするブロックを取得する。
これにより、ガベッジコレクション制御部125による複数のフリーブロックの確保を目的とするガベッジコレクションと同様、移動元の3つのブロック中のリフレッシュを必要とするデータを含む有効なデータが移動先の2つのブロックへ書き直されるので、1つのフリーブロックが作成されることになる。(B)の各ブロックの符号b2で示される模様のハッチングが施されたページは、書き直しによりリフレッシュが実施された有効なデータが格納されるページである(A6、B4、C8)。
なお、図5では、1つのフリーブロックが作成される例を示しているが、リフレッシュ目的のガベッジコレクションにおいては、移動元のブロックが有効クラスタ率の小さいブロックとは限らないので、フリーブロックが作成されない場合も発生し得る。つまり、リフレッシュ目的のガベッジコレクションは、結果的にフリーブロックが作成され得るものであって、フリーブロックの作成を目的とするものではない。
リフレッシュ制御部124は、たとえばNANDメモリ200からの読み出し時にエラー(データ誤り)が発生したデータについて、そのエラーの訂正(誤り訂正)をエラー訂正処理部126に要求する。エラー訂正処理部126は、たとえばECC(error correcting code)符号を用いたエラー訂正を実行する。エラー訂正において、訂正時間と訂正能力とにはトレードオフがあるため、エラー訂正処理部126は、ECC符号を用いたエラー訂正を、訂正時間及び訂正能力に応じて、L1訂正→L2訂正→L3訂正の3段階で行うものとする。たとえば、エラー訂正処理部126は、まず、訂正時間は短いが訂正能力は低いL1訂正を実行し、訂正できなかった場合、次に、L1訂正との比較で訂正時間は長いが訂正能力は高いL2訂正を実行する。それでも訂正できなかった場合、エラー訂正処理部126は、L2訂正との比較で訂正時間は長いが訂正能力は高いL3訂正を実行する。
ガベッジコレクション制御部125によるガベッジコレクションにおいても、移動元のブロックからのデータの読み出し時にエラーが発生する場合がある。ガベッジコレクション制御部125も、そのエラーの訂正をエラー訂正処理部126に要求する。
リフレッシュ制御部124とガベッジコレクション制御部125とは、データバッファ130をワークエリアとして使用しながらガベッジコレクションを実行する。図1に示すデータバッファ130内のガベッジコレクションバッファ133とガベッジコレクションバッファ134とは、リフレッシュ制御部124とガベッジコレクション制御部125とに対して各々確保される領域である。
NANDインターフェース部140は、NANDメモリ200との間で通信するためのデバイスであり、前述の各チャンネルCh.0〜Ch.17と一対に設けられる複数のNANDコントローラ141_0〜141_17を有する。制御部120、より詳しくは、書き込み/読み出し制御部122、リフレッシュ制御部124、およびガベッジコレクション制御部125は、NANDインターフェース部140のNANDコントローラ141_0〜141_17を制御して、NANDメモリ200へのデータの書き込みやNANDメモリ200からのデータの読み出しを実行する。
次に、メモリシステム1における、ガベッジコレクション制御部125によるフリーブロックの確保を目的とするガベッジコレクションの実行周期と、リフレッシュ制御部124によるリフレッシュ目的のガベッジコレクションの実行周期とについて説明する。
前述したように、ブロック管理部121は、少なくともブロックの総数及びフリーブロックの数をブロック情報として管理している。ガベッジコレクション制御部125は、たとえばブロックの総数に占めるフリーブロックの数またはその割合に基づき、フリーブロックの確保を目的とするガベッジコレクションの実行周期を制御する。より詳しくは、ガベッジコレクション制御部125は、フリーブロックの数が少なくなる程、短い周期でガベッジコレクションを実行するように実行周期を調整する。
ガベッジコレクション制御部125は、この実行周期を、書き込み/読み出し制御部122によって実行される、ホスト2からの要求に応じたデータの書き込み(以下、ホスト書き込み、とも称する)とガベッジコレクションのためのデータの書き込み(以下、GC書き込み、とも称する)との比率で調整する。つまり、ガベッジコレクション制御部125は、GC書き込みによってホスト書き込みが許容範囲を超えて停滞しないように、ガベッジコレクションの実行周期を調整する。
ホスト書き込みと、GC書き込みとの比率は、たとえばギア比などと称される。ここでは、ホスト書き込みに対して、GC書き込みの割合を高くすることを、ギア比を上げると称する。単位期間当たりのホスト書き込みの回数をA、GC書き込みの回数をBとすると、ギア比はA:Bと表すことができる。ガベッジコレクション制御部125は、フリーブロックの数が少なくなる程、Bの値が大きくなるようにギア比を調整することで、ガベッジコレクションの実行周期を調整する。
ギア比をA:Bとすると、ホスト書き込みでA個の移動先のブロックが消費された際、GC書き込みではB個の移動先のブロックが消費されているので、ガベッジコレクション制御部125は、A+B個またはその倍数のフリーブロックを作成するようにガベッジコレクションを実行する。
また、フリーブロックの数が十分存在し、さらなる作成が不要な場合や、有効クラスタ率の小さいブロックが存在せず、フリーブロックを効率的に作成することが期待できない場合などにおいて、ガベッジコレクション制御部125は、ガベッジコレクションを停止してもよい。
なお、1系統でガベッジコレクションを実行する場合、たとえば、リフレッシュを兼ねてガベッジコレクションを実行する場合、ギア比をA:(B+C)として実行周期が調整される。ここでCは、リフレッシュ目的のためのデータの書き込み回数である。
一方、リフレッシュ制御部124は、たとえばリフレッシュを必要とするデータを含むブロックの数またはリフレッシュ対象とすべきブロックを生み出す要因となったエラーの重度に基づき、ガベッジコレクションの実行周期を制御する。より詳しくは、リフレッシュ制御部124は、リフレッシュ対象のブロックの数が多い程、あるいは、エラーの重度が高い程、短い周期でガベッジコレクションを実行するように実行周期を調整する。エラーの重度の高低は、たとえばエラーの種類などに応じて決定される。リフレッシュ対象となっているブロックについては、そのエラーの重度が、リフレッシュ制御部124によって管理されている。
リフレッシュ制御部124は、ギア比によってガベッジコレクションの実行周期を調整するガベッジコレクション制御部125とは異なり、ホスト書き込みとは無関係に、ガベッジコレクションの実行周期を調整する。ガベッジコレクション制御部125によるガベッジコレクションでは、ギア比によって実行周期が調整されるので、ホスト2からのライト要求が無くなった場合に、ガベッジコレクションの書き込みが進まなくなることがある。しかしながら、リフレッシュでは、たとえば、NANDメモリダイ(不揮発性メモリチップ)単位で使用不可となるエラー(以下、チップ単位エラー、とも称する)が発生した場合、ホスト書き込みとは独立して、そのNANDメモリダイに記録されているデータの回復を所定時間内に完了させることができる。
リフレッシュ制御部124は、ブロック管理部121からの通知により、リフレッシュが必要なデータを含むブロックを取得する。つまり、リフレッシュ制御部124は、ブロック管理部121からの通知に応じて、リフレッシュを兼ねたリフレッシュ目的のガベッジコレクションを実行する。
このように、本実施形態にかかるメモリシステム1は、リフレッシュ制御部124と、ガベッジコレクション制御部125とを有し、リフレッシュ目的のガベッジコレクションと、フリーブロックの確保を目的とするガベッジコレクションとを独立的に実行する。
1系統でガベッジコレクションを実行する場合、つまり、リフレッシュを兼ねてガベッジコレクションを実行する場合、たとえば、ホットデータとコールドデータとが混在するブロックが大量にできると、有効クラスタ率が平均的に低くならないことがある。これに伴い、フリーブロックの作成効率が低下し、ホスト2からの要求に応じたライト性能が低下するという問題が発生し得る。より詳しくは、そのような状況下において、コールドデータを含む有効クラスタ率の小さくないブロックがガベッジコレクションの対象として数多く選ばれる機会が多くなり、フリーブロックの作成効率の低下に伴って、ホスト2からの要求に応じたライト性能を低下させる可能性がある。
これに対して、本実施形態にかかるメモリシステム1においては、リフレッシュ目的のガベッジコレクションと、フリーブロックの確保を目的とするガベッジコレクションとが2系統で独立的に実行されるので、前述のような状況下においても、フリーブロックの作成効率を低下させることなく、たとえば複数のブロック上のコールドデータを1つのブロックへ集めることなどが可能である。
また、1系統でガベッジコレクションを実行する場合においては、リフレッシュのためのデータの書き込みもギア比で調整されることになる。したがって、たとえば、チップ単位エラーが発生した場合、そのNANDメモリダイに記録されているデータの回復を、要求される所定時間内に完了できない可能性がある。
これに対して、本実施形態にかかるメモリシステム1においては、リフレッシュ目的のガベッジコレクションの実行周期が、ホスト書き込みとは無関係に、リフレッシュを必要とするデータを含むブロックの数や、リフレッシュ対象とすべきブロックを生み出す要因となったNANDメモリ200が発生させたエラーの重度に基づいて調整される。このため、前述のようなチップ単位エラーが発生した場合には、ホスト書き込みとは独立して、そのNANDメモリダイに記録されているデータの回復を所定時間内に完了させることなどが可能である。
さらには、本実施形態にかかるメモリシステム1は、リフレッシュ目的のガベッジコレクションと、フリーブロックの確保を目的とするガベッジコレクションとを2系統で独立的に実行するので、たとえばフリーブロックの作成が不要な状況下においては、フリーブロックの確保を目的とするガベッジコレクションを停止して、ホストライトを独立的に実行することもできる。
1系統でガベッジコレクションを実行する場合においては、仮に、前述のような状況下ではガベッジコレクションを停止するようにしても、リフレッシュが必要なブロックが発生すると、そのブロックと、有効クラスタ率の小さいブロックとが選択されて、フリーブロックを生成するためのガベッジコレクションが実行され得る。
これに対して、本実施形態にかかるメモリシステム1においては、フリーブロックの確保を目的とするガベッジコレクションを停止したまま、リフレッシュ目的のガベッジコレクションが、必要以上のフリーブロックを生成することなく、リフレッシュが必要なブロック内の有効なデータをフリーブロックに移動させるといったことが可能である。
なお、図1では、リフレッシュ制御部124とガベッジコレクション制御部125とを1つずつ示しているが、これらの一方または両方が2以上存在していてもよい。
次に、リフレッシュ・ガベッジコレクション切替判定部123について説明する。図6は、リフレッシュ・ガベッジコレクション切替判定部123が、ガベッジコレクション制御部125が実行するフリーブロックの確保を目的としたガベッジコレクションにおいて有効なデータの移動元の候補として選択されているブロックを、リフレッシュ制御部124が実行するリフレッシュ目的のガベッジコレクションにおける移動元の候補に切り替える一例を示す図である。
ガベッジコレクション制御部125は、ブロック管理部121と連携して、同一のブロックがリフレッシュ制御部124との間で重複して適用されないように、移動元候補(c1)のブロック(c11_1,c11_2,c11_3,c11_4、…)、及び、移動先候補(c2)のブロック(c12_1,c12_2,…)を選択して管理する。
リフレッシュ制御部124も、ブロック管理部121と連携して、同一のブロックがガベッジコレクション制御部125との間で重複して適用されないように、移動元候補(c3)のブロック(c13_1,…)を選択して管理し、また、移動先候補(c4)のブロック(c14_1,c14_2,…)を選択して管理する。
前述したように、ガベッジコレクション制御部125によるガベッジコレクションにおいても、移動元のブロックからのデータの読み出し時にエラーが発生する場合がある。ガベッジコレクション制御部125は、そのエラーの訂正をエラー訂正処理部126に要求する。また、前述したように、エラー訂正処理部126は、ECC符号を用いたエラー訂正を、訂正時間の短い順に、L1訂正→L2訂正→L3訂正の3段階で行う。
ここで、ガベッジコレクション制御部125によるブロックc11_3内の有効なデータの読み出し時に、複数の(少なくとも1以上)ページのデータについてエラーが発生したものと想定する。ブロックc11_3内の符号b2で示される模様のハッチングが施されたページは、データの読み出し時にエラーが発生したページである。そして、これらのエラーが、いずれも、訂正時間が相対的に長いL2訂正又はL3訂正を必要とするものであったと想定する。この場合、ガベッジコレクション制御部125によって実行されるフリーブロックの確保を目的とするガベッジコレクションの書き込みに時間がかかり、その結果、ホスト書き込みを停滞させる可能性がある。
そこで、本実施形態にかかるメモリシステム1においては、リフレッシュ・ガベッジコレクション切替判定部123の制御の下、このようなブロック(c11_3)を、ガベッジコレクション制御部125の移動元候補(c1)からリフレッシュ制御部124の移動元候補(c3)へ切り替える(c11_3→c13_2)。
エラー訂正処理部126は、たとえば、L1訂正及びL2訂正で訂正できずにL3訂正に入る場合や、同一ブロックでL3訂正が連続して発生した場合などに、その旨をリフレッシュ・ガベッジコレクション切替判定部123に通知する。通知を受けたリフレッシュ・ガベッジコレクション切替判定部123は、そのブロックを管理する。エラー訂正処理部126がリフレッシュ・ガベッジコレクション切替判定部123へ通知を行う条件は、L1訂正及びL2訂正で訂正できずにL3訂正に入る場合や、同一ブロックでL3訂正が連続して発生した場合のほか、様々な事象を適用し得る。
この通知を受けたリフレッシュ・ガベッジコレクション切替判定部123は、そのブロックがガベッジコレクション制御部125によって使用されていることを判定することができるので、ガベッジコレクション制御部125へガベッジコレクションの停止を指示する。ガベッジコレクション制御部125は、この指示を受けると、ガベッジコレクションを停止し、処理中であったブロックを移動元候補から外す。また、リフレッシュ・ガベッジコレクション切替判定部123は、リフレッシュ制御部124に対して、エラー訂正処理部126からの通知されたブロックを移動元候補に入れることを指示する。つまり、リフレッシュ・ガベッジコレクション切替判定部123は、ガベッジコレクション制御部125からリフレッシュ制御部124へのブロックの切り替えを実行する。また、リフレッシュ・ガベッジコレクション切替判定部123は、エラー訂正処理部126へエラー訂正を要求しないようにガベッジコレクション制御部125を制御する。この制御は、ガベッジコレクション制御部125によって既にNANDインターフェース部140経由でNANDメモリ200へデータの読み出しが要求されている当該ブロック内のデータについて、さらにエラーが発生する可能性があることに対応するものである。
リフレッシュ・ガベッジコレクション切替判定部123は、ガベッジコレクション制御部125がガベッジコレクションを停止した後、リフレッシュ制御部124へのブロックの切り替えが完了したら、ガベッジコレクション制御部125へガベッジコレクションの再開を指示し、かつ、ガベッジコレクション制御部125に対する、エラー訂正処理部126へエラー訂正を要求しないようにする制御を終了する。ガベッジコレクション制御部125は、移動元候補から外したブロックに代えて、移動元候補とするブロックを選び直して、ガベッジコレクションを再開する。
図7を参照して、リフレッシュ・ガベッジコレクション切替判定部123によるガベッジコレクション制御部125からリフレッシュ制御部124へのブロックの切り替えの効果について説明する。
図7(A)は、ガベッジコレクション制御部125による処理の流れを示している。符号d1で示されるハッチングの区間(HW)は、ホスト書き込みの実行を示し、符号d2で示されるハッチングの区間(GR)は、ガベッジコレクションのためのデータの読み出しの実行を示し、符号d3で示されるハッチングの区間(GW)は、GC書き込みの実行を示している。
一方、図7(B)は、リフレッシュ制御部124による処理の流れを示している。符号d2で示される区間は、図7(A)と同様であり、符号d4で示される区間は、エラーが発生したデータの回復、つまりエラー訂正の実行を示している。リフレッシュ制御部124によるガベッジコレクションのほとんどを占めるエラー訂正の期間中は、NANDインターフェース部140が関与しないため、ホスト書き込みや、ガベッジコレクションのためのデータの読み出しおよびデータの書き込みを邪魔することがない。
しかし、1系統でガベッジコレクションを実行する場合、移動元ブロックからのデータの読み出し時にエラーが発生し、かつ、その訂正に時間がかかってしまうと、その訂正を含む移動先ブロックへのデータの書き込み完了まで、ホスト書き込みが停滞する。一方、本実施形態にかかるメモリシステム1では、訂正に時間がかかるデータを含むブロックを、ガベッジコレクション制御部125からリフレッシュ制御部124へ切り替える機能を備える。このため、ホスト書き込みが停滞することを防止でき、かつ、フリーブロックの確保を目的とするガベッジコレクションを所定時間内に完了させることができる。
さらに、リフレッシュ・ガベッジコレクション切替判定部123は、一定の条件下において、ガベッジコレクション制御部125からリフレッシュ制御部124へのブロックの切り替えを抑止する機能を備える。具体的には、たとえば、チップ単位エラーが発生した場合や、フリーブロック数が一定数未満の場合、ガベッジコレクション制御部125からリフレッシュ制御部124へのブロックの切り替えを抑止する。
この機能により、前者については、使用不可となったNANDメモリダイ(不揮発性メモリチップ)上のデータの回復が、別途発生したエラーによって遅延することを防止することができる。また、後者については、短期的には、ホスト書き込みに優先して、フリーブロックを速やかに生成し、ライト性能を維持することができる。
また、ガベッジコレクション制御部125からリフレッシュ制御部124へのブロックの切り替えを抑止する状況となった場合、リフレッシュ・ガベッジコレクション切替判定部123は、エラー訂正処理部126に対して、たとえば、同一ブロックや同一ページでL3訂正が連続して発生しても、エラー訂正を中断することなく、エラー訂正を継続して行うことを指示する。
図8は、リフレッシュ・ガベッジコレクション切替判定部123による処理の流れを示すフローチャートである。
リフレッシュ・ガベッジコレクション切替判定部123は、ガベッジコレクション制御部125によるガベッジコレクションで閾値以上のエラーが発生した場合(S101:Yes)、NANDメモリダイ(不揮発性メモリチップ)単位で使用不可となる事象が発生しているか、または、フリーブロック数が一定数未満であるかを判定する(S102)。ガベッジコレクション制御部125によるガベッジコレクションで閾値以上のエラーが発生していない場合(S101:No)、あるいは、NANDメモリダイ(不揮発性メモリチップ)単位で使用不可となる事象が発生しているか、または、フリーブロック数が一定数未満である場合(S102:Yes)、処理は終了する。
NANDメモリダイ(不揮発性メモリチップ)単位で使用不可となる事象が発生しておらず、かつ、フリーブロック数が一定数以上である場合(S102:No)、リフレッシュ・ガベッジコレクション切替判定部123は、ガベッジコレクション制御部125に対して、ガベッジコレクションの停止を通知する(S103)。リフレッシュ・ガベッジコレクション切替判定部123は、閾値以上のエラーが発生したブロックをリフレッシュ制御部124に通知する(S104)これにより、当該ブロックは、リフレッシュ制御部124によるガベッジコレクションの対象に切り替えられる。続いて、リフレッシュ・ガベッジコレクション切替判定部123は、ガベッジコレクション制御部125に対して、ガベッジコレクションの再開を通知する(S105)。
このように、リフレッシュ・ガベッジコレクション切替判定部123を有する本実施形態にかかるメモリシステム1においては、フリーブロックの確保を目的とするガベッジコレクションにおいて、あるブロック内のデータの読み出し時にエラーが発生し、かつ、その対処に時間を要する場合、そのブロックを、リフレッシュ目的のガベッジコレクションへ切り替えることができる。このため、フリーブロックの確保を目的とするガベッジコレクションを所定時間内に完了することができ、また、ホスト書き込みを停滞させることを防止できる。
また、たとえば、チップ単位エラーが発生した場合や、フリーブロック数が一定数未満の場合など、一定の条件下においては、フリーブロックの確保を目的とするガベッジコレクションからリフレッシュ目的のガベッジコレクションへのブロックの切り替えを抑止する。これにより、リフレッシュ目的のガベッジコレクションを、使用不可となったNANDメモリダイ(不揮発性メモリチップ)上のデータの回復に専念させることや、ホスト書き込みに優先して、フリーブロックを速やかに生成することなどが可能となる。
ところで、前述したように、リフレッシュ制御部124とガベッジコレクション制御部125とについては、これらの一方または両方が2以上存在していてもよい。たとえばガベッジコレクション制御部125が2つ存在する場合、それらの実行周期を異ならせて、実行周期が短い方のガベッジコレクションでデータの読み出し時にエラーが発生した場合、そのブロックを、リフレッシュ制御部124ではなく、もう一方の実行周期が長い方のガベッジコレクションに切り替えるようにしてもよい。
ガベッジコレクション制御部125からリフレッシュ制御部124へのブロックの切り替えにおいて、リフレッシュ制御部124が保全目的で書き直ししようとしているコールドデータと、ガベッジコレクション制御部125から切り替えられたブロック内のホットデータとが混在するデメリットが生じ得る。
これに対して、実行周期が短い方のガベッジコレクションから実行周期が長い方のガベッジコレクションへのブロックの切り替えをすることにより、このようなデメリットが生じることをより防止することができる。
また、リフレッシュ・ガベッジコレクション切替判定部123は、さらに、リフレッシュ制御部124からガベッジコレクション制御部125へブロックを切り替える機能を有してもよい。
リフレッシュ・ガベッジコレクション切替判定部123は、たとえば、リフレッシュが必要なブロックが多数発生し、かつ、(リフレッシュが必要なブロック以外の)有効クラスタ率の小さいブロックがなくなった場合、リフレッシュ制御部124からガベッジコレクション制御部125へのブロックの切り替えを実行する。具体的には、リフレッシュ・ガベッジコレクション切替判定部123は、リフレッシュ制御部124によって既にリフレッシュ対象の候補として選択されているブロックも含めて、候補とするブロックを選択し、ガベッジコレクション制御部125に対して、ガベッジコレクションを実行することを指示する。
前述したように、ガベッジコレクション制御部125は、たとえばフリーブロックの数が十分存在するような場合、ガベッジコレクションを停止してもよい。つまり、ガベッジコレクション制御部125は、たとえばフリーブロックの数が十分存在し、ガベッジコレクションを停止することが禁止される条件(フリーブロックの数が一定数未満など)が満たされない場合に限り、ガベッジコレクションを停止してリフレッシュに切り替えることができる。一方、ガベッジコレクションの停止が禁止される条件下では、ガベッジコレクション制御部125は、フリーブロックの確保を目的としたガベッジコレクションを継続する。
すなわち、ガベッジコレクションを停止することが禁止される条件が満たされ、フリーブロックの確保を目的としたガベッジコレクションを継続している間、ガベッジコレクション制御部125は、リフレッシュ・ガベッジコレクション切替判定部123からの指示を受けると、リフレッシュが必要なブロックを候補に混ぜて、そのブロックのリフレッシュを兼ねたリフレッシュ目的のガベッジコレクションを実行し得る。
図9は、リフレッシュ制御部124によって既にリフレッシュ対象の候補として選択されているブロックも含めて、候補とするブロックを選択し、ガベッジコレクションを実行する旨の指示をリフレッシュ・ガベッジコレクション切替判定部123から受けた場合におけるガベッジコレクション制御部125の処理の流れを示すフローチャートである。
ガベッジコレクション制御部125は、ガベッジコレクションの移動元ブロックを検索して選択する(S201)。ガベッジコレクション制御部125は、選択したブロックが、リフレッシュ制御部124によるガベッジコレクションの移動元ブロックの候補として登録されているか否かを判定する(S202)。
登録されている場合(S202:YES)、ガベッジコレクション制御部125は、NANDメモリダイ(不揮発性メモリチップ)単位で使用不可となる事象が発生しているか、または、フリーブロック数が一定数未満であるかを判定する(S203)。NANDメモリダイ(不揮発性メモリチップ)単位で使用不可となる事象が発生しているか、または、フリーブロック数が一定数未満である場合(S203:YES)、ガベッジコレクション制御部125は、ブロック管理部121経由で当該ブロックをリフレッシュ制御部124の候補から外し(S204)、自身の移動元ブロックとして登録する(S205)。
一方、不揮発性メモリチップ)単位で使用不可となる事象が発生しておらず、かつ、フリーブロック数が一定数以上である場合(S203:No)、リフレッシュを必要とするブロックを候補として混ぜてガベッジコレクションを実行する必要がないため、処理はS201へ戻り、ガベッジコレクション制御部125は、移動元ブロックを選び直す。また、選択したブロックが、リフレッシュ制御部124によるガベッジコレクションの移動元ブロックとして登録されていない場合には(S202:No)、ガベッジコレクション制御部125は、ガベッジコレクションを停止することが禁止される条件が満たされているか否かに関わらず、そのブロックを自身の移動元ブロックとして登録する(S205)。
なお、リフレッシュ・ガベッジコレクション切替判定部123から、リフレッシュ対象のブロックも含めたガベッジコレクションの実行の指示を受けた場合においては、ガベッジコレクション制御部125は、たとえば、エラーが発生したデータを含むブロックについては、その対処に時間が費やされない順にブロックを選択し、または、有効クラスタ率の小さい順にブロックを選択することが好ましい。前者は、ホスト書き込みが停滞することを抑止し、後者は、フリーブロックの作成効率を向上させる。
以上のように、本実施形態のメモリシステム1は、リフレッシュ目的のガベッジコレクションを実行するリフレッシュ制御部124と、フリーブロックの確保を目的とするガベッジコレクションを実行するガベッジコレクション制御部125とを有し、かつ、リフレッシュ制御部124が移動元の候補とするブロックと、ガベッジコレクション制御部125が移動元の候補とするブロックとを適宜に切り替え、また、この切り替えを適応的に抑止するリフレッシュ・ガベッジコレクション切替判定部123とを有するので、ガベッジコレクションを効率的に実行することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…メモリシステム、2…ホスト、100…コントローラ、110…ホストインターフェース部、120…制御部、121…ブロック管理部、122…書き込み/読み出し制御部、123…リフレッシュ・ガベッジコレクション切替判定部、124…リフレッシュ制御部、125…ガベッジコレクション制御部、126…エラー訂正処理部、130…データバッファ、131…ライトバッファ、132…リードバッファ、133,134…ガベッジコレクションバッファ、140…NANDインターフェース部、200…NAND型フラッシュメモリ。

Claims (19)

  1. 複数のブロックを含む不揮発性メモリと、
    前記不揮発性メモリへのデータの書き込みまたは前記不揮発性メモリからのデータの読み出しを制御するコントローラとを具備し、
    前記コントローラは、
    N個(Nは2以上の自然数)のブロック中の有効なデータをN個未満のブロックに移動させて1以上のフリーブロックを作成する第1処理を実行する第1処理部と、
    M個(Mは1以上の自然数)のブロック中のリフレッシュを必要とするデータを含む有効なデータをM個以下のブロックに移動させる第2処理を実行する第2処理部と、
    を具備するメモリシステム。
  2. 前記第1処理部と前記第2処理部とは並列動作可能であり、有効なデータの移動元のブロックまたは移動先のブロックとして同一のブロックが前記第1処理と前記第2処理との双方に重複して選択されないように、有効なデータの移動元のブロックの候補および移動先のブロックの候補が前記第1処理部と前記第2処理部とで独立して管理される請求項1に記載のメモリシステム。
  3. 前記第1処理部は、前記第1処理の実行周期を、ホスト装置からの要求に応じたデータの書き込みと、前記第1処理のためのデータの書き込みと、の実行比率で調整する請求項1または2に記載のメモリシステム。
  4. 前記第1処理部は、有効なデータの全体に占める割合が小さいブロックを、有効なデータの移動元のブロックの候補として選択する請求項1〜3のいずれか1項に記載のメモリシステム。
  5. 前記第2処理部は、ホスト装置からの要求に応じたデータの書き込みとは独立して、前記リフレッシュを必要とするデータが存在するブロックの数に基づき、前記第2処理の実行周期を調整する請求項1に記載のメモリシステム。
  6. 前記第2処理部は、ホスト装置からの要求に応じたデータの書き込みとは独立して、前記リフレッシュを必要とするエラーの重度又は前記リフレッシュを必要とするブロック量に基づき、前記第2処理の実行周期を調整する請求項1に記載のメモリシステム。
  7. 前記第2処理部は、一定期間を超えて利用されていない有効なデータが存在するブロックまたは前記リフレッシュが必要となったブロックを、有効なデータの移動元のブロックの候補として選択する請求項1〜6のいずれか1項に記載のメモリシステム。
  8. 前記第1処理の実行中、条件が満たされた場合、前記第1処理を中断させ、有効なデータの移動元のブロックとして選択されているブロックを前記第2処理の候補へ切り替える制御部をさらに具備する請求項1〜7のいずれか1項に記載のメモリシステム。
  9. 前記不揮発性メモリは、複数の不揮発性メモリチップを含み、
    前記条件は、前記不揮発性メモリにおいて不揮発性メモリチップ単位で使用不可となる事象が発生することを含む請求項8に記載のメモリシステム。
  10. 前記条件は、フリーブロック数が一定未満であることを含む請求項8に記載のメモリシステム。
  11. 前記第2処理部は、前記切り替えられたブロック及び候補として選択済みのブロックのうち、誤り訂正が必要なデータを含むブロックの中から、前記誤り訂正が必要なデータのデータ誤りの重度順に、前記第2処理の対象のブロックを選択するように管理する請求項8に記載のメモリシステム。
  12. 前記第2処理部は、前記切り替えられたブロック及び候補として選択済みのブロックのうち、有効なデータを含むブロックの中から、前記有効なデータの全体に占める割合が小さい順に、前記第2処理の対象のブロックを選択するように管理する請求項8に記載のメモリシステム。
  13. 前記第1処理部は第3処理部及び第4処理部を含み、前記第3処理部は、第1周期で前記第1処理を実行し、前記第4処理部は、前記第1周期よりも長い第2周期で前記第1処理を実行し、
    前記第3処理部が前記第1周期で前記第1処理の実行中、条件が満たされた場合、当該第1処理を中断させ、有効なデータの移動元のブロックとして選択されているブロックを、前記第4処理部が前記第2周期で実行する前記第1処理の候補へ振り替える制御部をさらに具備する請求項1〜7のいずれか1項に記載のメモリシステム。
  14. 前記制御部は、前記第2処理の候補であるリフレッシュを必要とするデータが存在するブロックの数が閾値以上存在し、かつ、前記第1処理の候補とすべき有効なデータの全体に占める割合が閾値よりも小さいブロックが存在しない場合、前記リフレッシュを必要とするデータが存在するブロックを、前記第2処理の候補から前記第1処理の候補へ切り替える請求項8または13に記載のメモリシステム。
  15. 前記制御部は、フリーブロック数が一定未満であり、かつ、前記第1処理の候補とすべき有効なデータの全体に占める割合が閾値よりも小さいブロックが存在しない場合、前記第2処理の候補であるリフレッシュを必要とするデータが存在するブロックを、前記第2処理の候補から前記第1処理の候補へ切り替える請求項8または13に記載のメモリシステム。
  16. 前記不揮発性メモリは、複数の不揮発性メモリチップを含み、
    前記制御部は、不揮発性メモリチップ単位で使用不可となる事象の発生に伴って有効なデータのリフレッシュが必要となったブロックを、前記第2処理の候補から前記第1処理の候補へ切り替える対象から除外する請求項15に記載のメモリシステム。
  17. 前記第1処理部は、前記第2処理の候補となり得る誤り訂正が必要なデータを含むブロックの中からデータ誤りの重度が低い順に前記第1処理の対象のブロックとして選択する請求項14〜16のいずれか1項に記載のメモリシステム。
  18. 前記第1処理部は、前記第2処理の候補となり得るブロックの中から有効なデータの全体に占める割合が小さい順に前記第1処理の対象のブロックとして選択する請求項14〜16のいずれか1項に記載のメモリシステム。
  19. 複数のブロックを含む不揮発性メモリを有するメモリシステムのガベッジコレクション制御方法であって、
    N個(Nは2以上の自然数)のブロック中の有効なデータをN個未満のブロックに移動させて1以上のフリーブロックを作成する第1処理を実行することと、
    M個(Mは1以上の自然数)のブロック中のリフレッシュを必要とするデータを含む有効なデータをM個以下のブロックに移動させる第2処理を実行することと、
    を具備するガベッジコレクション制御方法。
JP2019163806A 2019-09-09 2019-09-09 メモリシステムおよびガベッジコレクション制御方法 Active JP7321851B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2019163806A JP7321851B2 (ja) 2019-09-09 2019-09-09 メモリシステムおよびガベッジコレクション制御方法
US16/787,133 US11182287B2 (en) 2019-09-09 2020-02-11 Memory system and garbage collection control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019163806A JP7321851B2 (ja) 2019-09-09 2019-09-09 メモリシステムおよびガベッジコレクション制御方法

Publications (2)

Publication Number Publication Date
JP2021043580A true JP2021043580A (ja) 2021-03-18
JP7321851B2 JP7321851B2 (ja) 2023-08-07

Family

ID=74849470

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019163806A Active JP7321851B2 (ja) 2019-09-09 2019-09-09 メモリシステムおよびガベッジコレクション制御方法

Country Status (2)

Country Link
US (1) US11182287B2 (ja)
JP (1) JP7321851B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI790383B (zh) * 2019-06-19 2023-01-21 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
US11556420B2 (en) * 2021-04-06 2023-01-17 Macronix International Co., Ltd. Managing error correction coding in memory systems
EP4123969A1 (en) * 2021-07-19 2023-01-25 Ratier-Figeac SAS Rescheduling mechanism for asynchronous devices
KR20230023477A (ko) * 2021-08-10 2023-02-17 에스케이하이닉스 주식회사 메모리 시스템 및 그 동작 방법
US20240069735A1 (en) * 2022-08-29 2024-02-29 Micron Technology, Inc. Memory block erase protocol

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008123406A1 (ja) * 2007-03-28 2008-10-16 Nodc Incorporated データ駆動型処理装置及びその順序合流制御装置
JP2013541743A (ja) * 2011-02-02 2013-11-14 株式会社日立製作所 ストレージシステムおよびそのデータ制御方法
JP2018160194A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステムおよび方法
JP2019049949A (ja) * 2017-09-12 2019-03-28 東芝メモリ株式会社 ストレージデバイス
JP2019049928A (ja) * 2017-09-12 2019-03-28 日立オートモティブシステムズ株式会社 電子制御装置及び電子制御装置の制御方法
JP2019106174A (ja) * 2017-12-14 2019-06-27 インテル・コーポレーション 記憶デバイスにおけるシステムタイムスタンプを用いたバックグラウンドデータ・リフレッシュ

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120028581A (ko) * 2010-09-15 2012-03-23 삼성전자주식회사 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 장치들
JP2016122227A (ja) 2014-12-24 2016-07-07 株式会社東芝 メモリシステムおよび情報処理システム
US10254969B2 (en) 2016-05-13 2019-04-09 Seagate Technology Llc Data refresh in flash memory
US10579471B2 (en) * 2017-03-02 2020-03-03 Toshiba Memory Corporation Storage device and error correction method for storage device

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008123406A1 (ja) * 2007-03-28 2008-10-16 Nodc Incorporated データ駆動型処理装置及びその順序合流制御装置
JP2013541743A (ja) * 2011-02-02 2013-11-14 株式会社日立製作所 ストレージシステムおよびそのデータ制御方法
JP2018160194A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステムおよび方法
JP2019049949A (ja) * 2017-09-12 2019-03-28 東芝メモリ株式会社 ストレージデバイス
JP2019049928A (ja) * 2017-09-12 2019-03-28 日立オートモティブシステムズ株式会社 電子制御装置及び電子制御装置の制御方法
JP2019106174A (ja) * 2017-12-14 2019-06-27 インテル・コーポレーション 記憶デバイスにおけるシステムタイムスタンプを用いたバックグラウンドデータ・リフレッシュ

Also Published As

Publication number Publication date
JP7321851B2 (ja) 2023-08-07
US11182287B2 (en) 2021-11-23
US20210073118A1 (en) 2021-03-11

Similar Documents

Publication Publication Date Title
JP7321851B2 (ja) メモリシステムおよびガベッジコレクション制御方法
US11693463B2 (en) Memory system and controller
US8463986B2 (en) Memory system and method of controlling memory system
CN102713866B (zh) 减少基于闪存的存储系统中的存取争用
US10884630B2 (en) Storage system
JP4844639B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP5010505B2 (ja) メモリシステム
US20100161885A1 (en) Semiconductor storage device and storage controlling method
US10599345B2 (en) Memory device that writes data into a block based on time passage since erasure of data from the block
JP4930555B2 (ja) 制御装置、制御方法およびストレージシステム
US20140075099A1 (en) Control method and memory system of non-volatile semiconductor memory
US20200110662A1 (en) Error-handling method, associated data storage device and controller thereof
JP2013016147A (ja) メモリコントローラ及び不揮発性記憶装置
JP2011070365A (ja) メモリシステム
JP2023044518A (ja) メモリシステムおよび方法
JP2011186555A (ja) メモリ管理装置及び方法
JP2019086974A (ja) ストレージシステム及びその制御方法
JP2013069047A (ja) メモリシステム
TWI718516B (zh) 用於快閃記憶體中保護已抹除區塊的寫入管理機制
US20220405008A1 (en) Memory system and refresh control method
JP2013196155A (ja) メモリシステム
JP6260395B2 (ja) メモリコントローラ、メモリシステム及びメモリ制御方法
TWI771854B (zh) 用於快閃記憶體中保護已抹除區塊的寫入管理機制
WO2023084729A1 (ja) メモリコントローラおよびフラッシュメモリシステム
JP2021068129A (ja) メモリコントローラ及びフラッシュメモリシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230131

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230403

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230418

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230614

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230627

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230726

R151 Written notification of patent or utility model registration

Ref document number: 7321851

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151