(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-28
(45)【発行日】2023-08-07
(54)【発明の名称】メモリシステムおよびガベッジコレクション制御方法
(51)【国際特許分類】
G06F 12/02 20060101AFI20230731BHJP
G06F 12/00 20060101ALI20230731BHJP
【FI】
G06F12/02 530C
G06F12/00 597U
(21)【出願番号】P 2019163806
(22)【出願日】2019-09-09
【審査請求日】2022-03-09
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】増尾 容子
(72)【発明者】
【氏名】光増 洋右
(72)【発明者】
【氏名】橘内 和也
【審査官】北村 学
(56)【参考文献】
【文献】特表2013-541743(JP,A)
【文献】特開2018-160194(JP,A)
【文献】特開2019-049928(JP,A)
【文献】特開2019-049949(JP,A)
【文献】特開2019-106174(JP,A)
【文献】国際公開第2008/123406(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/00 - 12/06
(57)【特許請求の範囲】
【請求項1】
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリへのデータの書き込みまたは前記不揮発性メモリからのデータの読み出しを制御するコントローラとを具備し、
前記コントローラは、
N個(Nは2以上の自然数)のブロック中の有効なデータをN個未満のブロックに移動させて1以上のフリーブロックを作成する第1処理を実行する第1処理部と、
M個(Mは1以上の自然数)のブロック中のリフレッシュを必要とするデータを含む有効なデータをM個以下のブロックに移動させる第2処理を実行する第2処理部と、
前記第1処理の実行中、前記N個のブロックから読みだした有効なデータのエラーを訂正する時間
が所定時間より長いと判断された場合、前記第1処理を中断させ、有効なデータの移動元のブロックとして選択されているブロックを前記第2処理の候補へ切り替える制御部と、
を具備するメモリシステム。
【請求項2】
有効なデータの移動元のブロックまたは移動先のブロックとして同一のブロックが前記第1処理と前記第2処理との双方に重複して選択されないように、有効なデータの移動元のブロックの候補および移動先のブロックの候補が前記第1処理部と前記第2処理部とで重複しないよう管理される請求項1に記載のメモリシステム。
【請求項3】
前記第1処理部は、前記第1処理の実行周期を、ホスト装置からの要求に応じたデータの書き込みと、前記第1処理のためのデータの書き込みと、の実行比率で調整する請求項1または2に記載のメモリシステム。
【請求項4】
前記第1処理部は、有効なデータの全体に占める割合が小さいブロックを、有効なデータの移動元のブロックの候補として選択する請求項1~3のいずれか1項に記載のメモリシステム。
【請求項5】
前記第2処理部は、ホスト装置からの要求に応じたデータの書き込みとは独立して、前記リフレッシュを必要とするデータが存在するブロックの数に基づき、前記第2処理の実行周期を調整する請求項1に記載のメモリシステム。
【請求項6】
前記第2処理部は、一定期間を超えて利用されていない有効なデータが存在するブロックまたは前記リフレッシュが必要となったブロックを、有効なデータの移動元のブロックの候補として選択する請求項1~
5のいずれか1項に記載のメモリシステム。
【請求項7】
前記不揮発性メモリは、複数の不揮発性メモリチップを含み、
前記制御部は、前記不揮発性メモリにおいて不揮発性メモリチップ単位で使用不可となる事象が発生した場合、前記
選択されているブロックの
前記第2処理の候補への切り替えを抑止する請求項1に記載のメモリシステム。
【請求項8】
前記制御部は、フリーブロック数が一定未満である場合、前記
選択されているブロックの
前記第2処理の候補への切り替えを抑止する請求項1に記載のメモリシステム。
【請求項9】
前記第2処理部は、前記切り替えられたブロック及び候補として選択済みのブロックのうち、有効なデータを含むブロックの中から、前記有効なデータの全体に占める割合が小さい順に、前記第2処理の対象のブロックを選択するように管理する請求項1に記載のメモリシステム。
【請求項10】
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリへのデータの書き込みまたは前記不揮発性メモリからのデータの読み出しを制御するコントローラとを具備し、
前記コントローラは、
N個(Nは2以上の自然数)のブロック中の有効なデータをN個未満のブロックに移動させて1以上のフリーブロックを作成する第1処理を実行する第1処理部と、
M個(Mは1以上の自然数)のブロック中のリフレッシュを必要とするデータを含む有効なデータをM個以下のブロックに移動させる第2処理を実行する第2処理部と、
を具備し、
前記第1処理部は第3処理部及び第4処理部を含み、前記第3処理部は、第1周期で前記第1処理を実行し、前記第4処理部は、前記第1周期よりも長い第2周期で前記第1処理を実行し、
前記第3処理部が前記第1周期で前記第1処理の実行中、データの読み出し時にエラーが発生した場合、当該第1処理を中断させ、有効なデータの移動元のブロックとして選択されているブロックを、前記第4処理部が前記第2周期で実行する前記第1処理の候補へ振り替える制御部をさらに具備する、
メモリシステム。
【請求項11】
前記制御部は、前記第2処理の候補であるリフレッシュを必要とするデータが存在するブロックの数が閾値以上存在し、かつ、前記第1処理の候補とすべき有効なデータの全体に占める割合が閾値よりも小さいブロックが存在しない場合、前記リフレッシュを必要とするデータが存在するブロックを、前記第2処理の候補から前記第1処理の候補へ切り替える請求項1または
10に記載のメモリシステム。
【請求項12】
前記制御部は、フリーブロック数が一定未満であり、かつ、前記第1処理の候補とすべき有効なデータの全体に占める割合が閾値よりも小さいブロックが存在しない場合、前記第2処理の候補であるリフレッシュを必要とするデータが存在するブロックを、前記第2処理の候補から前記第1処理の候補へ切り替える請求項1または
10に記載のメモリシステム。
【請求項13】
前記不揮発性メモリは、複数の不揮発性メモリチップを含み、
前記制御部は、不揮発性メモリチップ単位で使用不可となる事象の発生に伴って有効なデータのリフレッシュが必要となったブロックを、前記第2処理の候補から前記第1処理の候補へ切り替える対象から除外する請求項
12に記載のメモリシステム。
【請求項14】
前記第1処理部は、前記第2処理の候補となり得るブロックの中から有効なデータの全体に占める割合が小さい順に前記第1処理の対象のブロックとして選択する請求項
11~13のいずれか1項に記載のメモリシステム。
【請求項15】
複数のブロックを含む不揮発性メモリを有するメモリシステムのガベッジコレクション制御方法であって、
N個(Nは2以上の自然数)のブロック中の有効なデータをN個未満のブロックに移動させて1以上のフリーブロックを作成する第1処理を実行することと、
M個(Mは1以上の自然数)のブロック中のリフレッシュを必要とするデータを含む有効なデータをM個以下のブロックに移動させる第2処理を実行することと、
前記第1処理の実行中、前記N個のブロックから読みだした有効なデータのエラーを訂正する時間
が所定時間より長いと判断された場合、前記第1処理を中断させ、有効なデータの移動元のブロックとして選択されているブロックを前記第2処理の候補へ切り替えることと、
を具備するガベッジコレクション制御方法。
【請求項16】
複数のブロックを含む不揮発性メモリを有するメモリシステムのガベッジコレクション制御方法であって、
N個(Nは2以上の自然数)のブロック中の有効なデータをN個未満のブロックに移動させて1以上のフリーブロックを作成する第1処理を実行することと、
M個(Mは1以上の自然数)のブロック中のリフレッシュを必要とするデータを含む有効なデータをM個以下のブロックに移動させる第2処理を実行することと、
を具備し、
前記第1処理は第3処理及び第4処理を含み、前記第3処理は、第1周期で前記第1処理を実行する処理であり、前記第4処理は、前記第1周期よりも長い第2周期で前記第1処理を実行する処理であり、
前記第3処理における前記第1周期で前記第1処理の実行中、データの読み出し時にエラーが発生した場合、当該第1処理を中断させ、有効なデータの移動元のブロックとして選択されているブロックを、前記第4処理における前記第2周期で実行する前記第1処理の候補へ振り替えることをさらに具備するガベッジコレクション制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムおよびガベッジコレクション制御方法に関する。
【背景技術】
【0002】
NAND型フラッシュメモリ(NANDメモリ)を搭載するSSD(solid state drive)などのメモリシステムでは、NANDメモリ上の不要となった(無効な)データが残存する記憶領域を再利用するためのガベッジコレクションと称される処理が必要となる。ガベッジコレクションは、コンパクションとも称される。
【0003】
また、この種のメモリシステムでは、リフレッシュと称される、NANDメモリ上の有効なデータを格納し直す処理も必要である。具体的には、リフレッシュは、有効なデータをNANDメモリ内において移動させる処理を含む。
【0004】
ガベッジコレクションは、リフレッシュと同様、NANDメモリ上の有効なデータをNANDメモリ内において移動させる処理を含む。したがって、リフレッシュのために移動させるべきデータを、ガベッジコレクションのために移動させるべきデータの一部として混在させて、リフレッシュのためのデータの移動を、ガベッジコレクション内において実行することも考えられる。つまり、リフレッシュをガベッジコレクションに組み入れることも考えられる。
【0005】
しかしながら、リフレッシュを兼ねてガベッジコレクションを実行する場合、リフレッシュを必要とするデータの発生状況によっては、ホスト装置からの要求に応じたデータの書き込みに対するガベッジコレクションのためのデータの書き込みの比が大きくなり、メモリシステムの性能を短期的ではあっても低下させてしまうおそれがある。
【先行技術文献】
【特許文献】
【0006】
【文献】米国特許出願公開第2018/0275911号明細書
【文献】米国特許出願公開第2012/0066438号明細書
【文献】米国特許出願公開第2017/0329532号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明が解決しようとする課題は、ガベッジコレクションを効率的に実行することができるメモリシステムおよびガベッジコレクション制御方法を提供することである。
【課題を解決するための手段】
【0008】
実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラと、を具備する。不揮発性メモリは、複数のブロックを含む。コントローラは、前記不揮発性メモリへのデータの書き込みまたは前記不揮発性メモリからのデータの読み出しを制御する。コントローラは、第1処理部と、第2処理部と、制御部と、を具備する。第1処理部は、N個(Nは2以上の自然数)のブロック中の有効なデータをN個未満のブロックに移動させて1以上のフリーブロックを作成する第1処理を実行する。第2処理部は、M個(Mは1以上の自然数)のブロック中のリフレッシュを必要とするデータを含む有効なデータをM個以下のブロックに移動させる第2処理を実行する。制御部は、第1処理の実行中、N個のブロックから読みだした有効なデータのエラーを訂正する時間が所定時間より長いと判断された場合、第1処理を中断させ、有効なデータの移動元のブロックとして選択されているブロックを第2処理の候補へ切り替える。
【図面の簡単な説明】
【0009】
【
図1】実施形態のメモリシステムの一構成例を示す図。
【
図2】実施形態のメモリシステムが搭載するNAND型フラッシュメモリに含まれるNAND型フラッシュメモリダイの一構成例を示す図。
【
図3】実施形態のメモリシステムにおいてNAND型フラッシュメモリに関して管理される論理ブロックの一構成例を示す図。
【
図4】実施形態のメモリシステムにおいてフリーブロックの確保を目的として実行されるガベッジコレクションの概要を説明するための図。
【
図5】実施形態のメモリシステムにおいて実行されるリフレッシュ目的のガベッジコレクションの概要を説明するための図。
【
図6】実施形態のメモリシステムのリフレッシュ・ガベッジコレクション切替判定部によるブロックの切り替えの概要を説明するための図。
【
図7】実施形態のメモリシステムのリフレッシュ・ガベッジコレクション切替判定部によるブロックの切り替えの効果を説明するための図。
【
図8】実施形態のメモリシステムのリフレッシュ・ガベッジコレクション切替判定部の処理の流れを示すフローチャート。
【
図9】実施形態のメモリシステムのフリーブロックの確保を目的として実行されるべきガベッジコレクションがリフレッシュ目的で実行される場合における処理の流れを示すフローチャート。
【発明を実施するための形態】
【0010】
以下、実施の形態について、図面を参照して説明する。
【0011】
図1は、本実施形態のメモリシステム1の一構成例を示す図である。ここでは、メモリシステム1は、SSDとして実現されていることを想定する。
【0012】
SSDであるメモリシステム1は、たとえばSoC(system on a chip)などの半導体集積回路として構成されるコントローラ100と、NAND型フラッシュメモリ(NANDメモリ)200とを有する。
【0013】
コントローラ100は、ホストインターフェース部110と、制御部120と、たとえばSRAMなどであるデータバッファ130と、NANDインターフェース部140とを有する。なお、データバッファ130は、コントローラ100の外部にたとえばDRAMなどとして設けられるものであってもよい。
【0014】
ホストインターフェース部110は、メモリシステム1とホスト2とを接続する回路を含むデバイスであり、たとえばPCIe(登録商標)に準拠した通信を実行する。ホストインターフェース部110は、ホスト2からコマンドを受信する。
【0015】
制御部120は、ホストインターフェース部110を介して接続されるホスト2からコマンドを受信し、そのコマンドに対応する処理を実行して、その処理結果をホスト2へ送信する。ホスト2から受信するコマンドは、データの書き込みを要求するライトコマンドやデータの読み出しを要求するリードコマンドなどを含む。具体的には、制御部120は、データバッファ130を一時的なデータの格納領域として使用しながら、NANDメモリ200へのデータの書き込みやNANDメモリ200からのデータの読み出しを実行する。
【0016】
制御部120は、たとえばCPUなどのプロセッサを含んで構成され、たとえばNANDメモリ200に格納されているファームウェア(プログラム)を実行することによって、ブロック管理部121、書き込み/読み出し制御部122、リフレッシュ・ガベッジコレクション切替判定部123、リフレッシュ制御部124、ガベッジコレクション制御部125、エラー訂正処理部126といった各種処理部を実現する。これら各種処理部の一部または全部は、プログラムをCPUが実行することによってソフトウェア的に実現することに代えて、たとえば電子回路などによってハードウェア的に実現するものであってもよい。
【0017】
各種処理部がソフトウェア的に実現される場合、制御部120は、複数のCPUで各処理部の複数の処理を並列に実行するようにしてもよいし、1つのCPUで各処理部の複数の処理を時分割で実行するようにしてもよい。さらには、複数のCPUそれぞれで各処理部の複数の処理を時分割で並列に実行するようにしてもよい。つまり、メモリシステム1上において、たとえばリフレッシュ制御部124とガベッジコレクション制御部125とは並列に動作し得る。
【0018】
ブロック管理部121は、NANDメモリ200に含まれる複数の物理ブロックの内の一部のブロックにより拡張的な論理ブロックを構築する。また、ブロック管理部121は、論理ブロックに関する情報(ブロック情報)の管理や、書き込み/読み出し制御部122、リフレッシュ制御部124、ガベッジコレクション制御部125などへの論理ブロックの供給を行う。
【0019】
ここで、
図1に加えて、
図2および
図3を併せて参照して、ブロック管理部121によって管理される論理ブロックについて説明する。
【0020】
図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メモリダイと通信するための通信線(メモリバス)を含む。
【0021】
たとえば各チャンネル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メモリダイを並列動作させることができる。
【0022】
図2は、NANDメモリダイの一構成例を示す図である。
【0023】
図2に示すように、NANDメモリダイは、各々が複数のページを含む複数の物理ブロックを含む。データの書き込みおよびデータの読み出しは、ページ単位で処理される。一方、データの消去は、物理ブロック単位で処理される。データを書き込み済みのページへのデータの上書きは行われず、そのため、データの更新は、あるページ上の元のデータを無効化し、新たなデータを他のページへ書き込むことによって行われる。よって、ある物理ブロックが、その大部分を不要となったデータ(無効なデータ)で占められるという状態が発生し得る。物理ブロックの不良ページを除きデータを記憶可能な有効領域に占める有効なデータの割合は、有効クラスタ率などと称される。また、主に、この有効クラスタ率の小さい物理ブロックを対象として実行され、不要となったデータが残存する領域を再利用するための処理は、ガベッジコレクション又はコンパクションなどと称される。ガベッジコレクションの詳細については後述する。
【0024】
図3は、ブロック管理部121によって管理される論理ブロックの一構成例を示す図である。
【0025】
ブロック管理部121は、各々が複数の物理ブロックを含む複数の論理ブロックを管理する。そして、メモリシステム1においては、この論理ブロックの単位で少なくともデータの消去が実行されるものとする。
【0026】
ブロック管理部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によって管理される論理ブロックを意図しているものとする。
【0027】
図1に戻り、制御部120における各処理部の説明を続ける。
【0028】
書き込み/読み出し制御部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へ送信される。
【0029】
また、書き込み/読み出し制御部122は、ブロック管理部121からブロックの供給を受けて、NANDメモリ200へのデータの書き込みを実行する。ブロック管理部121は、ブロック情報として、各ブロックの使用有無、ブロックの総数、未使用状態のブロックの数などを管理する。なお、未使用状態のブロックとは、一度も使用されたことのないブロックを意図するものではなく、データが消去されて再利用可能なブロックを意図している。もちろん、一度も使用されたことのないブロックも未使用状態のブロックに含まれる。以下、未使用状態のブロックをフリーブロックと称する。
【0030】
リフレッシュ・ガベッジコレクション切替判定部123は、リフレッシュ制御部124が実行するガベッジコレクションまたはガベッジコレクション制御部125が実行するガベッジコレクションについて、有効なデータを含み移動元として適用されているブロックを、一定の条件下で、一方の処理から他方の処理へ切り替える処理を実行する。リフレッシュ・ガベッジコレクション切替判定部123の詳細については後述する。
【0031】
リフレッシュ制御部124は、たとえばコールドデータと称される長期間使用されていない(アクセスされていない)データの保全や、NANDメモリ200の特性に応じたエラーに起因するデータの回復のためのリフレッシュ目的のガベッジコレクションを実行する。一方、ガベッジコレクション制御部125は、フリーブロックの確保を目的とするガベッジコレクションを実行する。つまり、本実施形態にかかるメモリシステム1は、目的を異にする2系統のガベッジコレクションを各々実行することのできる機構を有している。換言すれば、本実施形態にかかるメモリシステム1は、リフレッシュ目的のガベッジコレクションと、フリーブロックの確保を目的とするガベッジコレクションとを独立的に実行するために、リフレッシュ制御部124と、ガベッジコレクション制御部125とを有している。なお、コールドデータに対して、たとえば一定期間内に使用されている(アクセスされている)データは、ホットデータなどと称される。
【0032】
ここで、
図4および
図5を参照して、本実施形態にかかるメモリシステム1において各々実行される2系統のガベッジコレクションの概要について説明する。
【0033】
図4は、ガベッジコレクション制御部125によってフリーブロックの確保を目的として実行されるガベッジコレクションの概要を説明するための図である。
【0034】
図4においては、1つのブロックが9つのページで構成されているものとしている。
図4(A)のブロックx1、ブロックx2、ブロックx3の3つのブロックは、ガベッジコレクション制御部125が、有効なデータの移動元として選択したブロックである。一方、
図4(B)のブロックy1、ブロックy2の2つのブロックは、ガベッジコレクション制御部125が、有効なデータの移動先としてブロック管理部121から供給を受けたブロックである。また、
図4(A)の各ブロックの符号a1で示される模様のハッチングが施されたページは、有効なデータが格納されているページであり、一方、符号a2で示される模様のハッチングが施されたページは、不要となったデータが残存するページである。
【0035】
ガベッジコレクション制御部125は、有効なデータの移動元の候補としていずれかのブロックを選択し、そのブロックをブロック管理部121へ通知する。リフレッシュ目的のガベッジコレクションを実行するリフレッシュ制御部124は、ブロック管理部121からの通知により、有効なデータの移動元としていずれかのブロックを候補として選択する。ブロック管理部121は、ブロック情報として、ガベッジコレクション制御部125によって有効なデータの移動元の候補として選択されているブロックと、リフレッシュ制御部124によって有効なデータの移動元の候補として選択されているブロックとを管理する。ブロック管理部121は、有効なデータの移動先とするブロックを、ガベッジコレクション制御部125及びリフレッシュ制御部124に供給する。ガベッジコレクション制御部125は、移動元の候補のブロックの状態をブロック管理部121より取得する。そのブロックがリフレッシュ制御部124によって既に候補として選択されていた場合、ガベッジコレクション制御部125は、当該ブロックを候補から外し、有効なデータの移動元の候補とする他のブロックを改めて選択する。これにより、同一のブロックが、ガベッジコレクション制御部125とリフレッシュ制御部124との双方から有効なデータの移動元として選択されることが防止される。
【0036】
なお、ブロック管理部121は、ブロック情報として、各ブロックの有効クラスタ率を管理する。そこで、ガベッジコレクション制御部125は、ブロック管理部121と連携して、有効クラスタ率の小さい順に、有効なデータの移動元の候補とするブロックを選択する。
【0037】
また、ガベッジコレクション制御部125とリフレッシュ制御部124とは、有効なデータの移動先とするブロックの供給をブロック管理部121から受けるので、同一のブロックが、ガベッジコレクション制御部125とリフレッシュ制御部124との双方から有効なデータの移動先として適用されることも防止される。
【0038】
つまり、本実施形態にかかるメモリシステム1においては、同一のブロックが有効なデータの移動元のブロックまたは移動先のブロックとしてガベッジコレクション制御部125とリフレッシュ制御部124との双方に重複して適用されないように、有効なデータの移動元のブロックの候補および移動先のブロックの候補がガベッジコレクション制御部125とリフレッシュ制御部124とで分けて管理される。
【0039】
図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ページが無駄になっている。無駄になっているページ数は、ブロック内のページ数を超えている。
【0040】
ガベッジコレクション制御部125は、有効なデータの移動元として選択したブロック内の有効なデータのみを、有効なデータの移動先としてブロック管理部121から供給を受けたブロックに書き込む。この移動のためのデータの書き込みは、計14ページ、つまり2ブロックに収まる。したがって、元の3ブロックとの間で差し引き1つのフリーブロックが作成されることになる。
【0041】
一方、
図5は、リフレッシュ制御部124によって実行されるリフレッシュ目的のガベッジコレクションの概要を説明するための図である。
【0042】
図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)。
【0043】
リフレッシュを必要とするデータ、つまり、NANDメモリ200内での書直しを行う必要のあるデータとは、コールドデータなどと称される長期間使用されていないデータ(読み出しが行われていないデータ)や、たとえばNANDメモリ200の特性によりハードウェア的に発生したエラーによって回復させることが必要となったデータなどである。リフレッシュは、それらのデータを含むブロックから別のブロックへ丸ごとデータを移動させることによっても達成できるが、メモリシステム1では、リフレッシュ制御部124が、それらのデータを含むブロックを、有効なデータの移動元として選択して、リフレッシュを兼ねたリフレッシュ目的のガベッジコレクションを実行する。
【0044】
リフレッシュを必要とするデータを含むブロックは、ブロック情報によりブロック管理部121によって管理されている。リフレッシュ制御部124は、ブロック管理部121と連携して、リフレッシュを必要とするデータを含むブロックであって、有効なデータの移動元とするブロックを取得する。
【0045】
これにより、ガベッジコレクション制御部125による複数のフリーブロックの確保を目的とするガベッジコレクションと同様、移動元の3つのブロック中のリフレッシュを必要とするデータを含む有効なデータが移動先の2つのブロックへ書き直されるので、1つのフリーブロックが作成されることになる。(B)の各ブロックの符号b2で示される模様のハッチングが施されたページは、書き直しによりリフレッシュが実施された有効なデータが格納されるページである(A6、B4、C8)。
【0046】
なお、
図5では、1つのフリーブロックが作成される例を示しているが、リフレッシュ目的のガベッジコレクションにおいては、移動元のブロックが有効クラスタ率の小さいブロックとは限らないので、フリーブロックが作成されない場合も発生し得る。つまり、リフレッシュ目的のガベッジコレクションは、結果的にフリーブロックが作成
され得るものであって、フリーブロックの作成を目的とするものではない。
【0047】
リフレッシュ制御部124は、たとえばNANDメモリ200からの読み出し時にエラー(データ誤り)が発生したデータについて、そのエラーの訂正(誤り訂正)をエラー訂正処理部126に要求する。エラー訂正処理部126は、たとえばECC(error correcting code)符号を用いたエラー訂正を実行する。エラー訂正において、訂正時間と訂正能力とにはトレードオフがあるため、エラー訂正処理部126は、ECC符号を用いたエラー訂正を、訂正時間及び訂正能力に応じて、L1訂正→L2訂正→L3訂正の3段階で行うものとする。たとえば、エラー訂正処理部126は、まず、訂正時間は短いが訂正能力は低いL1訂正を実行し、訂正できなかった場合、次に、L1訂正との比較で訂正時間は長いが訂正能力は高いL2訂正を実行する。それでも訂正できなかった場合、エラー訂正処理部126は、L2訂正との比較で訂正時間は長いが訂正能力は高いL3訂正を実行する。
【0048】
ガベッジコレクション制御部125によるガベッジコレクションにおいても、移動元のブロックからのデータの読み出し時にエラーが発生する場合がある。ガベッジコレクション制御部125も、そのエラーの訂正をエラー訂正処理部126に要求する。
【0049】
リフレッシュ制御部124とガベッジコレクション制御部125とは、データバッファ130をワークエリアとして使用しながらガベッジコレクションを実行する。
図1に示すデータバッファ130内のガベッジコレクションバッファ133とガベッジコレクションバッファ134とは、リフレッシュ制御部124とガベッジコレクション制御部125とに対して各々確保される領域である。
【0050】
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からのデータの読み出しを実行する。
【0051】
次に、メモリシステム1における、ガベッジコレクション制御部125によるフリーブロックの確保を目的とするガベッジコレクションの実行周期と、リフレッシュ制御部124によるリフレッシュ目的のガベッジコレクションの実行周期とについて説明する。
【0052】
前述したように、ブロック管理部121は、少なくともブロックの総数及びフリーブロックの数をブロック情報として管理している。ガベッジコレクション制御部125は、たとえばブロックの総数に占めるフリーブロックの数またはその割合に基づき、フリーブロックの確保を目的とするガベッジコレクションの実行周期を制御する。より詳しくは、ガベッジコレクション制御部125は、フリーブロックの数が少なくなる程、短い周期でガベッジコレクションを実行するように実行周期を調整する。
【0053】
ガベッジコレクション制御部125は、この実行周期を、書き込み/読み出し制御部122によって実行される、ホスト2からの要求に応じたデータの書き込み(以下、ホスト書き込み、とも称する)とガベッジコレクションのためのデータの書き込み(以下、GC書き込み、とも称する)との比率で調整する。つまり、ガベッジコレクション制御部125は、GC書き込みによってホスト書き込みが許容範囲を超えて停滞しないように、ガベッジコレクションの実行周期を調整する。
【0054】
ホスト書き込みと、GC書き込みとの比率は、たとえばギア比などと称される。ここでは、ホスト書き込みに対して、GC書き込みの割合を高くすることを、ギア比を上げると称する。単位期間当たりのホスト書き込みの回数をA、GC書き込みの回数をBとすると、ギア比はA:Bと表すことができる。ガベッジコレクション制御部125は、フリーブロックの数が少なくなる程、Bの値が大きくなるようにギア比を調整することで、ガベッジコレクションの実行周期を調整する。
【0055】
ギア比をA:Bとすると、ホスト書き込みでA個の移動先のブロックが消費された際、GC書き込みではB個の移動先のブロックが消費されているので、ガベッジコレクション制御部125は、A+B個またはその倍数のフリーブロックを作成するようにガベッジコレクションを実行する。
【0056】
また、フリーブロックの数が十分存在し、さらなる作成が不要な場合や、有効クラスタ率の小さいブロックが存在せず、フリーブロックを効率的に作成することが期待できない場合などにおいて、ガベッジコレクション制御部125は、ガベッジコレクションを停止してもよい。
【0057】
なお、1系統でガベッジコレクションを実行する場合、たとえば、リフレッシュを兼ねてガベッジコレクションを実行する場合、ギア比をA:(B+C)として実行周期が調整される。ここでCは、リフレッシュ目的のためのデータの書き込み回数である。
【0058】
一方、リフレッシュ制御部124は、たとえばリフレッシュを必要とするデータを含むブロックの数またはリフレッシュ対象とすべきブロックを生み出す要因となったエラーの重度に基づき、ガベッジコレクションの実行周期を制御する。より詳しくは、リフレッシュ制御部124は、リフレッシュ対象のブロックの数が多い程、あるいは、エラーの重度が高い程、短い周期でガベッジコレクションを実行するように実行周期を調整する。エラーの重度の高低は、たとえばエラーの種類などに応じて決定される。リフレッシュ対象となっているブロックについては、そのエラーの重度が、リフレッシュ制御部124によって管理されている。
【0059】
リフレッシュ制御部124は、ギア比によってガベッジコレクションの実行周期を調整するガベッジコレクション制御部125とは異なり、ホスト書き込みとは無関係に、ガベッジコレクションの実行周期を調整する。ガベッジコレクション制御部125によるガベッジコレクションでは、ギア比によって実行周期が調整されるので、ホスト2からのライト要求が無くなった場合に、ガベッジコレクションの書き込みが進まなくなることがある。しかしながら、リフレッシュでは、たとえば、NANDメモリダイ(不揮発性メモリチップ)単位で使用不可となるエラー(以下、チップ単位エラー、とも称する)が発生した場合、ホスト書き込みとは独立して、そのNANDメモリダイに記録されているデータの回復を所定時間内に完了させることができる。
【0060】
リフレッシュ制御部124は、ブロック管理部121からの通知により、リフレッシュが必要なデータを含むブロックを取得する。つまり、リフレッシュ制御部124は、ブロック管理部121からの通知に応じて、リフレッシュを兼ねたリフレッシュ目的のガベッジコレクションを実行する。
【0061】
このように、本実施形態にかかるメモリシステム1は、リフレッシュ制御部124と、ガベッジコレクション制御部125とを有し、リフレッシュ目的のガベッジコレクションと、フリーブロックの確保を目的とするガベッジコレクションとを独立的に実行する。
【0062】
1系統でガベッジコレクションを実行する場合、つまり、リフレッシュを兼ねてガベッジコレクションを実行する場合、たとえば、ホットデータとコールドデータとが混在するブロックが大量にできると、有効クラスタ率が平均的に低くならないことがある。これに伴い、フリーブロックの作成効率が低下し、ホスト2からの要求に応じたライト性能が低下するという問題が発生し得る。より詳しくは、そのような状況下において、コールドデータを含む有効クラスタ率の小さくないブロックがガベッジコレクションの対象として数多く選ばれる機会が多くなり、フリーブロックの作成効率の低下に伴って、ホスト2からの要求に応じたライト性能を低下させる可能性がある。
【0063】
これに対して、本実施形態にかかるメモリシステム1においては、リフレッシュ目的のガベッジコレクションと、フリーブロックの確保を目的とするガベッジコレクションとが2系統で独立的に実行されるので、前述のような状況下においても、フリーブロックの作成効率を低下させることなく、たとえば複数のブロック上のコールドデータを1つのブロックへ集めることなどが可能である。
【0064】
また、1系統でガベッジコレクションを実行する場合においては、リフレッシュのためのデータの書き込みもギア比で調整されることになる。したがって、たとえば、チップ単位エラーが発生した場合、そのNANDメモリダイに記録されているデータの回復を、要求される所定時間内に完了できない可能性がある。
【0065】
これに対して、本実施形態にかかるメモリシステム1においては、リフレッシュ目的のガベッジコレクションの実行周期が、ホスト書き込みとは無関係に、リフレッシュを必要とするデータを含むブロックの数や、リフレッシュ対象とすべきブロックを生み出す要因となったNANDメモリ200が発生させたエラーの重度に基づいて調整される。このため、前述のようなチップ単位エラーが発生した場合には、ホスト書き込みとは独立して、そのNANDメモリダイに記録されているデータの回復を所定時間内に完了させることなどが可能である。
【0066】
さらには、本実施形態にかかるメモリシステム1は、リフレッシュ目的のガベッジコレクションと、フリーブロックの確保を目的とするガベッジコレクションとを2系統で独立的に実行するので、たとえばフリーブロックの作成が不要な状況下においては、フリーブロックの確保を目的とするガベッジコレクションを停止して、ホストライトを独立的に実行することもできる。
【0067】
1系統でガベッジコレクションを実行する場合においては、仮に、前述のような状況下ではガベッジコレクションを停止するようにしても、リフレッシュが必要なブロックが発生すると、そのブロックと、有効クラスタ率の小さいブロックとが選択されて、フリーブロックを生成するためのガベッジコレクションが実行され得る。
【0068】
これに対して、本実施形態にかかるメモリシステム1においては、フリーブロックの確保を目的とするガベッジコレクションを停止したまま、リフレッシュ目的のガベッジコレクションが、必要以上のフリーブロックを生成することなく、リフレッシュが必要なブロック内の有効なデータをフリーブロックに移動させるといったことが可能である。
【0069】
なお、
図1では、リフレッシュ制御部124とガベッジコレクション制御部125とを1つずつ示しているが、これらの一方または両方が2以上存在していてもよい。
【0070】
次に、リフレッシュ・ガベッジコレクション切替判定部123について説明する。
図6は、リフレッシュ・ガベッジコレクション切替判定部123が、ガベッジコレクション制御部125が実行するフリーブロックの確保を目的としたガベッジコレクションにおいて有効なデータの移動元の候補として選択されているブロックを、リフレッシュ制御部124が実行するリフレッシュ目的のガベッジコレクションにおける移動元の候補に切り替える一例を示す図である。
【0071】
ガベッジコレクション制御部125は、ブロック管理部121と連携して、同一のブロックがリフレッシュ制御部124との間で重複して適用されないように、移動元候補(c1)のブロック(c11_1,c11_2,c11_3,c11_4、…)、及び、移動先候補(c2)のブロック(c12_1,c12_2,…)を選択して管理する。
【0072】
リフレッシュ制御部124も、ブロック管理部121と連携して、同一のブロックがガベッジコレクション制御部125との間で重複して適用されないように、移動元候補(c3)のブロック(c13_1,…)を選択して管理し、また、移動先候補(c4)のブロック(c14_1,c14_2,…)を選択して管理する。
【0073】
前述したように、ガベッジコレクション制御部125によるガベッジコレクションにおいても、移動元のブロックからのデータの読み出し時にエラーが発生する場合がある。ガベッジコレクション制御部125は、そのエラーの訂正をエラー訂正処理部126に要求する。また、前述したように、エラー訂正処理部126は、ECC符号を用いたエラー訂正を、訂正時間の短い順に、L1訂正→L2訂正→L3訂正の3段階で行う。
【0074】
ここで、ガベッジコレクション制御部125によるブロックc11_3内の有効なデータの読み出し時に、複数の(少なくとも1以上)ページのデータについてエラーが発生したものと想定する。ブロックc11_3内の符号b2で示される模様のハッチングが施されたページは、データの読み出し時にエラーが発生したページである。そして、これらのエラーが、いずれも、訂正時間が相対的に長いL2訂正又はL3訂正を必要とするものであったと想定する。この場合、ガベッジコレクション制御部125によって実行されるフリーブロックの確保を目的とするガベッジコレクションの書き込みに時間がかかり、その結果、ホスト書き込みを停滞させる可能性がある。
【0075】
そこで、本実施形態にかかるメモリシステム1においては、リフレッシュ・ガベッジコレクション切替判定部123の制御の下、このようなブロック(c11_3)を、ガベッジコレクション制御部125の移動元候補(c1)からリフレッシュ制御部124の移動元候補(c3)へ切り替える(c11_3→c13_2)。
【0076】
エラー訂正処理部126は、たとえば、L1訂正及びL2訂正で訂正できずにL3訂正に入る場合や、同一ブロックでL3訂正が連続して発生した場合などに、その旨をリフレッシュ・ガベッジコレクション切替判定部123に通知する。通知を受けたリフレッシュ・ガベッジコレクション切替判定部123は、そのブロックを管理する。エラー訂正処理部126がリフレッシュ・ガベッジコレクション切替判定部123へ通知を行う条件は、L1訂正及びL2訂正で訂正できずにL3訂正に入る場合や、同一ブロックでL3訂正が連続して発生した場合のほか、様々な事象を適用し得る。
【0077】
この通知を受けたリフレッシュ・ガベッジコレクション切替判定部123は、そのブロックがガベッジコレクション制御部125によって使用されていることを判定することができるので、ガベッジコレクション制御部125へガベッジコレクションの停止を指示する。ガベッジコレクション制御部125は、この指示を受けると、ガベッジコレクションを停止し、処理中であったブロックを移動元候補から外す。また、リフレッシュ・ガベッジコレクション切替判定部123は、リフレッシュ制御部124に対して、エラー訂正処理部126からの通知されたブロックを移動元候補に入れることを指示する。つまり、リフレッシュ・ガベッジコレクション切替判定部123は、ガベッジコレクション制御部125からリフレッシュ制御部124へのブロックの切り替えを実行する。また、リフレッシュ・ガベッジコレクション切替判定部123は、エラー訂正処理部126へエラー訂正を要求しないようにガベッジコレクション制御部125を制御する。この制御は、ガベッジコレクション制御部125によって既にNANDインターフェース部140経由でNANDメモリ200へデータの読み出しが要求されている当該ブロック内のデータについて、さらにエラーが発生する可能性があることに対応するものである。
【0078】
リフレッシュ・ガベッジコレクション切替判定部123は、ガベッジコレクション制御部125がガベッジコレクションを停止した後、リフレッシュ制御部124へのブロックの切り替えが完了したら、ガベッジコレクション制御部125へガベッジコレクションの再開を指示し、かつ、ガベッジコレクション制御部125に対する、エラー訂正処理部126へエラー訂正を要求しないようにする制御を終了する。ガベッジコレクション制御部125は、移動元候補から外したブロックに代えて、移動元候補とするブロックを選び直して、ガベッジコレクションを再開する。
【0079】
図7を参照して、リフレッシュ・ガベッジコレクション切替判定部123によるガベッジコレクション制御部125からリフレッシュ制御部124へのブロックの切り替えの効果について説明する。
【0080】
図7(A)は、ガベッジコレクション制御部125による処理の流れを示している。符号d1で示されるハッチングの区間(HW)は、ホスト書き込みの実行を示し、符号d2で示されるハッチングの区間(GR)は、ガベッジコレクションのためのデータの読み出しの実行を示し、符号d3で示されるハッチングの区間(GW)は、GC書き込みの実行を示している。
【0081】
一方、
図7(B)は、リフレッシュ制御部124による処理の流れを示している。符号d2で示される区間は、
図7(A)と同様であり、符号d4で示される区間は、エラーが発生したデータの回復、つまりエラー訂正の実行を示している。リフレッシュ制御部124によるガベッジコレクションのほとんどを占めるエラー訂正の期間中は、NANDインターフェース部140が関与しないため、ホスト書き込みや、ガベッジコレクションのためのデータの読み出しおよびデータの書き込みを邪魔することがない。
【0082】
しかし、1系統でガベッジコレクションを実行する場合、移動元ブロックからのデータの読み出し時にエラーが発生し、かつ、その訂正に時間がかかってしまうと、その訂正を含む移動先ブロックへのデータの書き込み完了まで、ホスト書き込みが停滞する。一方、本実施形態にかかるメモリシステム1では、訂正に時間がかかるデータを含むブロックを、ガベッジコレクション制御部125からリフレッシュ制御部124へ切り替える機能を備える。このため、ホスト書き込みが停滞することを防止でき、かつ、フリーブロックの確保を目的とするガベッジコレクションを所定時間内に完了させることができる。
【0083】
さらに、リフレッシュ・ガベッジコレクション切替判定部123は、一定の条件下において、ガベッジコレクション制御部125からリフレッシュ制御部124へのブロックの切り替えを抑止する機能を備える。具体的には、たとえば、チップ単位エラーが発生した場合や、フリーブロック数が一定数未満の場合、ガベッジコレクション制御部125からリフレッシュ制御部124へのブロックの切り替えを抑止する。
【0084】
この機能により、前者については、使用不可となったNANDメモリダイ(不揮発性メモリチップ)上のデータの回復が、別途発生したエラーによって遅延することを防止することができる。また、後者については、短期的には、ホスト書き込みに優先して、フリーブロックを速やかに生成し、ライト性能を維持することができる。
【0085】
また、ガベッジコレクション制御部125からリフレッシュ制御部124へのブロックの切り替えを抑止する状況となった場合、リフレッシュ・ガベッジコレクション切替判定部123は、エラー訂正処理部126に対して、たとえば、同一ブロックや同一ページでL3訂正が連続して発生しても、エラー訂正を中断することなく、エラー訂正を継続して行うことを指示する。
【0086】
図8は、リフレッシュ・ガベッジコレクション切替判定部123による処理の流れを示すフローチャートである。
【0087】
リフレッシュ・ガベッジコレクション切替判定部123は、ガベッジコレクション制御部125によるガベッジコレクションで閾値以上のエラーが発生した場合(S101:Yes)、NANDメモリダイ(不揮発性メモリチップ)単位で使用不可となる事象が発生しているか、または、フリーブロック数が一定数未満であるかを判定する(S102)。ガベッジコレクション制御部125によるガベッジコレクションで閾値以上のエラーが発生していない場合(S101:No)、あるいは、NANDメモリダイ(不揮発性メモリチップ)単位で使用不可となる事象が発生しているか、または、フリーブロック数が一定数未満である場合(S102:Yes)、処理は終了する。
【0088】
NANDメモリダイ(不揮発性メモリチップ)単位で使用不可となる事象が発生しておらず、かつ、フリーブロック数が一定数以上である場合(S102:No)、リフレッシュ・ガベッジコレクション切替判定部123は、ガベッジコレクション制御部125に対して、ガベッジコレクションの停止を通知する(S103)。リフレッシュ・ガベッジコレクション切替判定部123は、閾値以上のエラーが発生したブロックをリフレッシュ制御部124に通知する(S104)これにより、当該ブロックは、リフレッシュ制御部124によるガベッジコレクションの対象に切り替えられる。続いて、リフレッシュ・ガベッジコレクション切替判定部123は、ガベッジコレクション制御部125に対して、ガベッジコレクションの再開を通知する(S105)。
【0089】
このように、リフレッシュ・ガベッジコレクション切替判定部123を有する本実施形態にかかるメモリシステム1においては、フリーブロックの確保を目的とするガベッジコレクションにおいて、あるブロック内のデータの読み出し時にエラーが発生し、かつ、その対処に時間を要する場合、そのブロックを、リフレッシュ目的のガベッジコレクションへ切り替えることができる。このため、フリーブロックの確保を目的とするガベッジコレクションを所定時間内に完了することができ、また、ホスト書き込みを停滞させることを防止できる。
【0090】
また、たとえば、チップ単位エラーが発生した場合や、フリーブロック数が一定数未満の場合など、一定の条件下においては、フリーブロックの確保を目的とするガベッジコレクションからリフレッシュ目的のガベッジコレクションへのブロックの切り替えを抑止する。これにより、リフレッシュ目的のガベッジコレクションを、使用不可となったNANDメモリダイ(不揮発性メモリチップ)上のデータの回復に専念させることや、ホスト書き込みに優先して、フリーブロックを速やかに生成することなどが可能となる。
【0091】
ところで、前述したように、リフレッシュ制御部124とガベッジコレクション制御部125とについては、これらの一方または両方が2以上存在していてもよい。たとえばガベッジコレクション制御部125が2つ存在する場合、それらの実行周期を異ならせて、実行周期が短い方のガベッジコレクションでデータの読み出し時にエラーが発生した場合、そのブロックを、リフレッシュ制御部124ではなく、もう一方の実行周期が長い方のガベッジコレクションに切り替えるようにしてもよい。
【0092】
ガベッジコレクション制御部125からリフレッシュ制御部124へのブロックの切り替えにおいて、リフレッシュ制御部124が保全目的で書き直ししようとしているコールドデータと、ガベッジコレクション制御部125から切り替えられたブロック内のホットデータとが混在するデメリットが生じ得る。
【0093】
これに対して、実行周期が短い方のガベッジコレクションから実行周期が長い方のガベッジコレクションへのブロックの切り替えをすることにより、このようなデメリットが生じることをより防止することができる。
【0094】
また、リフレッシュ・ガベッジコレクション切替判定部123は、さらに、リフレッシュ制御部124からガベッジコレクション制御部125へブロックを切り替える機能を有してもよい。
【0095】
リフレッシュ・ガベッジコレクション切替判定部123は、たとえば、リフレッシュが必要なブロックが多数発生し、かつ、(リフレッシュが必要なブロック以外の)有効クラスタ率の小さいブロックがなくなった場合、リフレッシュ制御部124からガベッジコレクション制御部125へのブロックの切り替えを実行する。具体的には、リフレッシュ・ガベッジコレクション切替判定部123は、リフレッシュ制御部124によって既にリフレッシュ対象の候補として選択されているブロックも含めて、候補とするブロックを選択し、ガベッジコレクション制御部125に対して、ガベッジコレクションを実行することを指示する。
【0096】
前述したように、ガベッジコレクション制御部125は、たとえばフリーブロックの数が十分存在するような場合、ガベッジコレクションを停止してもよい。つまり、ガベッジコレクション制御部125は、たとえばフリーブロックの数が十分存在し、ガベッジコレクションを停止することが禁止される条件(フリーブロックの数が一定数未満など)が満たされない場合に限り、ガベッジコレクションを停止してリフレッシュに切り替えることができる。一方、ガベッジコレクションの停止が禁止される条件下では、ガベッジコレクション制御部125は、フリーブロックの確保を目的としたガベッジコレクションを継続する。
【0097】
すなわち、ガベッジコレクションを停止することが禁止される条件が満たされ、フリーブロックの確保を目的としたガベッジコレクションを継続している間、ガベッジコレクション制御部125は、リフレッシュ・ガベッジコレクション切替判定部123からの指示を受けると、リフレッシュが必要なブロックを候補に混ぜて、そのブロックのリフレッシュを兼ねたリフレッシュ目的のガベッジコレクションを実行し得る。
【0098】
図9は、リフレッシュ制御部124によって既にリフレッシュ対象の候補として選択されているブロックも含めて、候補とするブロックを選択し、ガベッジコレクションを実行する旨の指示をリフレッシュ・ガベッジコレクション切替判定部123から受けた場合におけるガベッジコレクション制御部125の処理の流れを示すフローチャートである。
【0099】
ガベッジコレクション制御部125は、ガベッジコレクションの移動元ブロックを検索して選択する(S201)。ガベッジコレクション制御部125は、選択したブロックが、リフレッシュ制御部124によるガベッジコレクションの移動元ブロックの候補として登録されているか否かを判定する(S202)。
【0100】
登録されている場合(S202:YES)、ガベッジコレクション制御部125は、NANDメモリダイ(不揮発性メモリチップ)単位で使用不可となる事象が発生しているか、または、フリーブロック数が一定数未満であるかを判定する(S203)。NANDメモリダイ(不揮発性メモリチップ)単位で使用不可となる事象が発生しているか、または、フリーブロック数が一定数未満である場合(S203:YES)、ガベッジコレクション制御部125は、ブロック管理部121経由で当該ブロックをリフレッシュ制御部124の候補から外し(S204)、自身の移動元ブロックとして登録する(S205)。
【0101】
一方、不揮発性メモリチップ)単位で使用不可となる事象が発生しておらず、かつ、フリーブロック数が一定数以上である場合(S203:No)、リフレッシュを必要とするブロックを候補として混ぜてガベッジコレクションを実行する必要がないため、処理はS201へ戻り、ガベッジコレクション制御部125は、移動元ブロックを選び直す。また、選択したブロックが、リフレッシュ制御部124によるガベッジコレクションの移動元ブロックとして登録されていない場合には(S202:No)、ガベッジコレクション制御部125は、ガベッジコレクションを停止することが禁止される条件が満たされているか否かに関わらず、そのブロックを自身の移動元ブロックとして登録する(S205)。
【0102】
なお、リフレッシュ・ガベッジコレクション切替判定部123から、リフレッシュ対象のブロックも含めたガベッジコレクションの実行の指示を受けた場合においては、ガベッジコレクション制御部125は、たとえば、エラーが発生したデータを含むブロックについては、その対処に時間が費やされない順にブロックを選択し、または、有効クラスタ率の小さい順にブロックを選択することが好ましい。前者は、ホスト書き込みが停滞することを抑止し、後者は、フリーブロックの作成効率を向上させる。
【0103】
以上のように、本実施形態のメモリシステム1は、リフレッシュ目的のガベッジコレクションを実行するリフレッシュ制御部124と、フリーブロックの確保を目的とするガベッジコレクションを実行するガベッジコレクション制御部125とを有し、かつ、リフレッシュ制御部124が移動元の候補とするブロックと、ガベッジコレクション制御部125が移動元の候補とするブロックとを適宜に切り替え、また、この切り替えを適応的に抑止するリフレッシュ・ガベッジコレクション切替判定部123とを有するので、ガベッジコレクションを効率的に実行することができる。
【0104】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0105】
1…メモリシステム、2…ホスト、100…コントローラ、110…ホストインターフェース部、120…制御部、121…ブロック管理部、122…書き込み/読み出し制御部、123…リフレッシュ・ガベッジコレクション切替判定部、124…リフレッシュ制御部、125…ガベッジコレクション制御部、126…エラー訂正処理部、130…データバッファ、131…ライトバッファ、132…リードバッファ、133,134…ガベッジコレクションバッファ、140…NANDインターフェース部、200…NAND型フラッシュメモリ。