(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-05
(45)【発行日】2024-04-15
(54)【発明の名称】メモリシステムおよびガベッジコレクション制御方法
(51)【国際特許分類】
G06F 12/02 20060101AFI20240408BHJP
G06F 12/00 20060101ALI20240408BHJP
【FI】
G06F12/02 530C
G06F12/00 597U
(21)【出願番号】P 2019190255
(22)【出願日】2019-10-17
【審査請求日】2022-09-12
【前置審査】
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】100176599
【氏名又は名称】高橋 拓也
(74)【代理人】
【識別番号】100205095
【氏名又は名称】小林 啓一
(74)【代理人】
【識別番号】100208775
【氏名又は名称】栗田 雅章
(72)【発明者】
【氏名】増尾 容子
(72)【発明者】
【氏名】光増 洋右
【審査官】北村 学
(56)【参考文献】
【文献】特開2016-136393(JP,A)
【文献】特開2011-192260(JP,A)
【文献】特開2018-156600(JP,A)
【文献】米国特許出願公開第2017/0285945(US,A1)
【文献】米国特許第08583783(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/00 - 12/06
(57)【特許請求の範囲】
【請求項1】
複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに対する、データの書き込み、前記不揮発性メモリからのデータの
読み出し、及びN個(Nは2以上の自然数)のブロックから読み出した有効なデータをN
個未満のブロックに書き込んで1以上のフリーブロックを作成するガベッジコレクション
を制御するコントローラと、を具備し、
前記コントローラは、
前記不揮発性メモリ内に残存するデータの書き込み可能容量に応じて、ホスト装置から
の要求に応じたデータの書き込みと、前記ガベッジコレクションのためのデータの書き込
みと、の実行比率を算出し、
算出された最新の実行比率を含み、算出されたM(Mは2以上の自然数)世代分の実行
比率から平均実行比率を算出し、
前記不揮発性メモリ内に残存するデータの書き込み可能容量が第1閾値以上、かつ、前
記第1閾値より大きい第2閾値未満の場合、前記算出された平均実行比率を適用して前記
ガベッジコレクションの実行周期を調整し、前記不揮発性メモリ内に残存するデータの書
き込み可能容量が前記第1閾値未満または前記第2閾値以上の場合、前記算出された最新
の実行比率を適用して前記ガベッジコレクションの実行周期を調整する、
メモリシステム。
【請求項2】
前記不揮発性メモリ内に残存するデータの書き込み可能容量が前記第1閾値未満の場合
、前記コントローラは、前記ホスト装置からの要求に応じたデータの書き込みよりも前記
ガベッジコレクションのためのデータの書き込みを優先する、
請求項1に記載のメモリシステム。
【請求項3】
前記不揮発性メモリ内に残存するデータの書き込み可能容量が前記第2閾値以上の場合
、前記コントローラは、前記ガベッジコレクションのためのデータの書き込みを停止する
、
請求項1または2に記載のメモリシステム。
【請求項4】
前記不揮発性メモリに含まれる前記複数のブロックの総容量は、前記ホスト装置に対し
て前記メモリシステムが提供する記憶領域の容量よりも大きく、
前記コントローラは、前記メモリシステムが提供する記憶領域の容量に対する前記複数
のブロック中の使用可能なブロックの総容量の比に応じて、前記第1閾値を変更可能であ
る、
請求項2または3に記載のメモリシステム。
【請求項5】
前記コントローラは、前記メモリシステムが提供する記憶領域の容量に対する前記複数
のブロック中の使用可能なブロックの総容量の比の値が大きい程、前記第1閾値を小さな
値になるよう変更する請求項4に記載のメモリシステム。
【請求項6】
前記コントローラは、前記算出されたM世代分の実行比率を記憶し、
前記不揮発性メモリ内に残存するデータの書き込み可能容量が前記第1閾値未満または
前記第2閾値以上となった場合、前記記憶したM世代分の実行比率を破棄する請求項2~
5のいずれか1項に記載のメモリシステム。
【請求項7】
前記コントローラは、前記ガベッジコレクションの実行周期の調整に対して前記算出さ
れた平均実行比率を適用すべき状態から前記算出された最新の実行比率を適用すべき状態
への移行時、前記算出された平均実行比率と前記算出された最新の実行比率との間の値の
比率を適用して前記ガベッジコレクションの実行周期を調整する請求項2~6のいずれか
1項に記載のメモリシステム。
【請求項8】
複数のブロックを含む不揮発性メモリを有するメモリシステムによって実行されるガベ
ッジコレクション制御方法であって、
前記不揮発性メモリ内に残存するデータの書き込み可能容量に応じて、前記不揮発性メ
モリに対する、ホスト装置からの要求に応じたデータの書き込みと、N個(Nは2以上の
自然数)のブロックから読み出した有効なデータをN個未満のブロックに書き込んで1以
上のフリーブロックを作成するガベッジコレクションのためのデータの書き込みと、の実
行比率を算出することと、
前記算出された最新の実行比率を含み、前記算出されたM(Mは2以上の自然数)世代
分の実行比率から平均実行比率を算出することと、
前記不揮発性メモリ内に残存するデータの書き込み可能容量が第1閾値以上、かつ、前
記第1閾値より大きい第2閾値未満の場合、前記算出された平均実行比率を適用して前記
ガベッジコレクションの実行周期を調整し、前記不揮発性メモリ内に残存するデータの書
き込み可能容量が前記第1閾値未満または前記第2閾値以上の場合、前記算出された最新
の実行比率を適用して前記ガベッジコレクションの実行周期を調整することと、
を具備するガベッジコレクション制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステムおよびガベッジコレクション制御方法に関する。
【背景技術】
【0002】
NAND型フラッシュメモリ(NANDメモリ)を搭載するSSD(solid state drive)などのメモリシステムでは、NANDメモリ上の不要となった(無効な)データが残存する記憶領域を再利用するためのガベッジコレクションと称される処理が必要となる。ガベッジコレクションは、コンパクションとも称される。
【0003】
ガベッジコレクションの実行周期は、たとえば、ホストからの要求に応じたデータの書き込みと、ガベッジコレクションのためのデータの書き込みとの比率で調整される。この比率は、ギア比などと称される。また、ギア比は、NANDメモリ内に残存するデータの書き込み可能容量に応じても算出され得る。
【0004】
しかし、データの書き込み可能容量が大きく変化し得るランダムライトの実行中、ギア比の変動が繰り返し発生するおそれがある。当該ギア比の変動に連動して、IOPS(input/output per second)がばらついてしまうおそれある。IOPSは、メモリシステムの性能に対応する指標であり、1秒間に処理できる、ホストからのリードコマンド又はライトコマンドの数を示す値である。
【先行技術文献】
【特許文献】
【0005】
【文献】米国特許第10324833号明細書
【文献】米国特許第10303371号明細書
【文献】特開2013-200726号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明が解決しようとする課題は、書き込み性能を安定化することができるメモリシステムおよびガベッジコレクション制御方法を提供することである。
【課題を解決するための手段】
【0007】
実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラと、を具備する。不揮発性メモリは、複数のブロックを含む。コントローラは、不揮発性メモリに対する、データの書き込み、不揮発性メモリからのデータの読み出し、及びN個(Nは2以上の自然数)のブロックから読み出した有効なデータをN個未満のブロックに書き込んで1以上のフリーブロックを作成するガベッジコレクションを制御する。コントローラは、不揮発性メモリ内に残存するデータの書き込み可能容量に応じて、ホスト装置からの要求に応じたデータの書き込みと、ガベッジコレクションのためのデータの書き込みと、の実行比率を算出し、算出された最新の実行比率を含み、算出されたM(Mは2以上の自然数)世代分の実行比率から平均実行比率を算出し、不揮発性メモリ内に残存するデータの書き込み可能容量が第1閾値以上、かつ、前記第1閾値より大きい第2閾値未満の場合、算出された平均実行比率を適用してガベッジコレクションの実行周期を調整し、前記不揮発性メモリ内に残存するデータの書き込み可能容量が前記第1閾値未満または前記第2閾値以上の場合、算出された最新の実行比率を適用してガベッジコレクションの実行周期を調整する。
【図面の簡単な説明】
【0008】
【
図1】実施形態のメモリシステムの一構成例を示す図。
【
図2】実施形態のメモリシステムが搭載するNAND型フラッシュメモリに含まれるNAND型フラッシュメモリダイの一構成例を示す図。
【
図3】実施形態のメモリシステムにおいてNAND型フラッシュメモリに関して管理される論理ブロックの一構成例を示す図。
【
図4】実施形態のメモリシステムにおいてフリーブロックの確保を目的として実行されるガベッジコレクションの概要を説明するための図。
【
図5】実施形態のメモリシステムにおいてギア比の算出に用いられるグラフの一例を示す図。
【
図6】実施形態のメモリシステムにおいてランダムライト実行中におけるギア比の変動および当該ギア比の変動に連動したIOPSのばらつきの一例を示す図。
【
図7】実施形態のメモリシステムのランダムライト実行中におけるギア比の遷移およびIOPSの遷移の一例を示す図。
【
図8】実施形態のメモリシステムにおいて実行されるギア比決定処理の流れを示すフローチャート。
【発明を実施するための形態】
【0009】
以下、実施の形態について、図面を参照して説明する。
【0010】
図1は、本実施形態のメモリシステム1の一構成例を示す図である。ここでは、メモリシステム1は、SSDとして実現される例を示す。
【0011】
SSDであるメモリシステム1は、たとえばSoC(system on a chip)などの半導体集積回路として構成されるコントローラ100と、NAND型フラッシュメモリ(NANDメモリ)200とを有する。
【0012】
コントローラ100は、ホストインターフェース部110と、制御部120と、たとえばSRAMなどであるデータバッファ130と、NANDインターフェース部140とを有する。なお、データバッファ130は、コントローラ100の外部にたとえばSDRAMなどとして設けられてもよい。
【0013】
ホストインターフェース部110は、メモリシステム1とホスト2とを接続する回路を含むデバイスであり、たとえばPCIe(登録商標)に準拠した通信を実行する。ホストインターフェース部110は、ホスト2からコマンドを受信する。
【0014】
制御部120は、ホストインターフェース部110を介して接続されるホスト2からコマンドを受信し、そのコマンドに対応する処理を実行して、その処理結果をホスト2へ送信する。ホスト2から受信するコマンドは、データの書き込みを要求するライトコマンドやデータの読み出しを要求するリードコマンドを含む。具体的には、制御部120は、データバッファ130を一時的なデータの格納領域として使用しながら、NANDメモリ200へのデータの書き込みやNANDメモリ200からのデータの読み出しを実行する。
【0015】
制御部120は、たとえばCPUなどのプロセッサを含んで構成される。たとえばNANDメモリ200に格納されているファームウェア(プログラム)を実行することによって、制御部120は、ブロック管理部121、書き込み/読み出し制御部122、ガベッジコレクション制御部123といった各種処理部を実現する。これら各種処理部の一部または全部は、プログラムをCPUが実行することによってソフトウェア的に実現することに代えて、たとえば電子回路などによってハードウェア的に実現するものであってもよい。
【0016】
各種処理部がソフトウェア的に実現される場合、制御部120は、複数のCPUで各処理部の複数の処理を並列に実行するようにしてもよいし、1つのCPUで各処理部の複数の処理を時分割で実行するようにしてもよい。さらには、複数のCPUそれぞれで各処理部の複数の処理を時分割で並列に実行するようにしてもよい。
【0017】
ブロック管理部121は、NANDメモリ200に含まれる複数の物理ブロックの内の一部の物理ブロックにより拡張的な管理単位である論理ブロックを構築する。以下、単に「ブロック」とある場合は、論理ブロックを示す。また、ブロック管理部121は、論理ブロックに関する情報(ブロック情報)の管理や、書き込み/読み出し制御部122、ガベッジコレクション制御部123などへの論理ブロックの供給を行う。
【0018】
ここで、
図1に加えて、
図2および
図3を併せて参照して、ブロック管理部121によって管理される論理ブロックについて説明する。
【0019】
図1に示すように、NANDメモリ200は、複数のNAND型フラッシュメモリダイ(NANDメモリダイ)NAND#0~#71を含む。NANDメモリダイは、複数の物理ブロックを含み不揮発にデータを記憶可能なメモリセルアレイと当該メモリセルアレイを制御する周辺回路とを含む。個々のNANDメモリダイは独立して動作可能である。つまり、NANDメモリダイは、並列動作単位として機能する。NANDメモリダイは、NAND型フラッシュメモリチップや不揮発性メモリチップなどとも称される。NANDメモリダイは、複数のチャンネル(たとえば18個のチャンネルCh.0~Ch.17)の各々に同数ずつ(たとえば1チャンネル当たり4個ずつ)接続され得る。各チャンネルCh.0~Ch.17は、NANDインターフェース部140の複数のNANDコントローラ141_0~141_17が各NANDメモリダイと通信するための通信線(メモリバス)を含む。
【0020】
たとえば各チャンネルCh.0~Ch.17に並列に18個ずつ接続される、NANDメモリダイ#0~#17、NANDメモリダイ#18~#35、NANDメモリダイ#36~#53、NANDメモリダイ#54~#71は、それぞれがバンク(Bank0~3)として編成されてもよい。バンクは、複数のNANDメモリダイをバンクインタリーブによって並列動作させるための単位として機能する。
図1に示す構成例においては、18のチャンネルCh.0~Ch.17により、4つのバンクを使用したバンクインタリーブによって、最大72個のNANDメモリダイを並列動作させることができる。
【0021】
図2は、NANDメモリダイの一構成例を示す図である。
【0022】
図2に示すように、NANDメモリダイは、各々が複数の物理ページを含む複数の物理ブロックを含む。以下、単に「ページ」とある場合は、物理ページを示す。データの書き込みおよびデータの読み出しは、ページ単位で処理される。一方、データの消去は、物理ブロック単位で処理される。データを書き込み済みのページへのデータの上書きは行われない。そのため、データの更新は、あるページ上の元のデータを無効化し、新たなデータを他のページへ書き込むことによって行われる。よって、ある物理ブロックが、その大部分が不要となったデータ(無効なデータ)で占められるという状態が発生し得る。物理ブロックにおいて不良ページを除くデータを記憶可能な有効領域に占める有効なデータの割合は、有効クラスタ率などと称される。また、主に、この有効クラスタ率の小さい物理ブロックを対象として、不要となったデータが残存する領域を再利用するための処理は、ガベッジコレクション又はコンパクションなどと称される。ガベッジコレクションの詳細については後述する。
【0023】
図3は、ブロック管理部121によって管理される論理ブロックの一構成例を示す図である。
【0024】
ブロック管理部121は、各々が複数の物理ブロックを含む複数の論理ブロックを管理する。メモリシステム1においては、この論理ブロックの単位で少なくともデータの消去が実行されるものとする。
【0025】
ブロック管理部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個の物理ブロックを含む論理ブロックを管理するようにしてもよい。
【0026】
図1に戻り、制御部120における各処理部の説明を続ける。
【0027】
書き込み/読み出し制御部122は、ホスト2から要求されたNANDメモリ200へのデータの書き込みまたはNANDメモリ200からのデータの読み出しを実行する。より詳しくは、書き込み/読み出し制御部122は、データの書き込みの場合、ホストインターフェース部110経由で受信しデータバッファ130内の書き込みバッファ(WB)領域131に格納される書き込みデータのNANDメモリ200への書き込みをNANDインターフェース部140の各NANDコントローラ141_1~141_17の何れかに指示する。データの読み出しの場合、書き込み/読み出し制御部122は、NANDメモリ200からの読み出しデータの読み出しをNANDインターフェース部140の各NANDコントローラ141_1~141_17の何れかに指示する。読み出されたデータは、データバッファ130内に一時的に格納され、ホストインターフェース部110経由でホスト2へ送信される。
【0028】
また、書き込み/読み出し制御部122は、ブロック管理部121からブロックの供給を受けて、NANDメモリ200へのデータの書き込みを実行する。ブロック管理部121は、ブロック情報として、各ブロックの使用有無、ブロックの総数、未使用状態のブロックの数などを管理する。なお、未使用状態のブロックとは、一度も使用されたことのないブロックを意図するものではなく、データが消去されることで再利用可能なブロックを意図している。もちろん、一度も使用されたことのないブロックも未使用状態のブロックに含まれる。以下、未使用状態のブロックをフリーブロックと称する。
【0029】
ガベッジコレクション制御部123は、フリーブロックの確保を目的とするガベッジコレクションを実行する。ガベッジコレクション制御部123は、通常ギア比算出部1231、ギア比履歴管理部1232、平均ギア比算出部1233、ギア比判定部1234を有している。ガベッジコレクション制御部123が有する、これら各処理部の詳細については後述する。
【0030】
ここで、
図4を参照して、ガベッジコレクション制御部123によって実行されるガベッジコレクションの概要について説明する。
【0031】
図4においては、1つのブロックが9つのページで構成されているものとしている。
図4(A)のブロックα1、ブロックα2、ブロックα3の3つのブロックは、ガベッジコレクション制御部123が、有効なデータの移動元として選択したブロックである。一方、
図4(B)のブロックβ1、ブロックβ2の2つのブロックは、ガベッジコレクション制御部123が、有効なデータの移動先としてブロック管理部121から供給を受けたブロックである。また、
図4(A)の各ブロックの符号a1で示される模様のハッチングが施されたページは、有効なデータが格納されているページであり、一方、符号a2で示される模様のハッチングが施されたページは、不要となったデータが残存するページである。
【0032】
ガベッジコレクション制御部123は、有効なデータの移動元の候補としていずれかのブロックを選択する。また、ブロック管理部121は、有効なデータの移動先とするブロックを、ガベッジコレクション制御部123に供給する。
【0033】
なお、ブロック管理部121は、ブロック情報として、各ブロックの有効クラスタ率を管理する。そこで、ガベッジコレクション制御部123は、ブロック管理部121と連携して、有効クラスタ率の小さい順に、有効なデータの移動元の候補とするブロックを選択する。
【0034】
図4に示す例では、有効なデータが格納されているページが、ブロックα1には5ページ(A1、A2、A6、A7、A9)、ブロックα2には6ページ(B2、B3、B4、B5、B8、B9)、ブロックα3には3ページ(C2、C7、C8)、それぞれ存在している。つまり、3ブロックで計14ページ存在している。換言すれば、3ブロックで13ページが無駄になっている。無駄になっているページ数は、1ブロック内のページ数を超えている。
【0035】
ガベッジコレクション制御部123は、有効なデータの移動元として選択したブロック内の有効なデータのみを、有効なデータの移動先としてブロック管理部121から供給を受けたブロックに書き込む。この移動のためのデータの書き込みは、計14ページ、つまり2ブロックに収まる。したがって、元の3ブロックとの間で差し引き1つのフリーブロックが作成されることになる。
【0036】
ガベッジコレクション制御部123は、データバッファ130をワークエリアとして使用しながらガベッジコレクションを実行する。
図1に示すデータバッファ130内のガベッジコレクションバッファ(GB)領域132は、ガベッジコレクション制御部123に対して確保される領域である。
【0037】
NANDインターフェース部140は、NANDメモリ200と通信するためのデバイスであり、前述の各チャンネルCh.0~Ch.17と一対に設けられる複数のNANDコントローラ141_0~141_17を有する。制御部120、より詳しくは、書き込み/読み出し制御部122とガベッジコレクション制御部123とは、NANDインターフェース部140のNANDコントローラ141_0~141_17を制御して、NANDメモリ200へのデータの書き込みやNANDメモリ200からのデータの読み出しを実行する。
【0038】
次に、ガベッジコレクション制御部123によるガベッジコレクションの実行周期について説明する。
【0039】
前述したように、ブロック管理部121は、少なくともブロックの総数及びフリーブロックの数をブロック情報として管理している。ガベッジコレクション制御部123は、たとえばブロックの総数に占めるフリーブロックの数またはその割合に基づき、フリーブロックの確保を目的とするガベッジコレクションの実行周期を制御する。より詳しくは、ガベッジコレクション制御部123は、フリーブロックの数が少なくなる程、短い周期でガベッジコレクションを実行するように実行周期を調整する。
【0040】
ガベッジコレクション制御部123は、この実行周期を、書き込み/読み出し制御部122によって実行される、ホスト2からの要求に応じたデータの書き込み(以下、ホスト書き込み、とも称する)とガベッジコレクションのためのデータの書き込み(以下、GC書き込み、とも称する)との比率で調整する。つまり、ガベッジコレクション制御部123は、GC書き込みによってホスト書き込みが許容範囲を超えて停滞しないように、ガベッジコレクションの実行周期を調整する。
【0041】
ホスト書き込みと、GC書き込みとの比率は、たとえばギア比などと称される。ここでは、ホスト書き込みに対して、GC書き込みの割合を高くすることを、ギア比を上げると称する。単位期間当たりのホスト書き込みの回数をA、GC書き込みの回数をBとすると、ギア比はA:Bと表すことができる。ガベッジコレクション制御部123は、フリーブロックの数が少なくなる程、Bの値が大きくなるようにギア比を調整することで、ガベッジコレクションの実行周期を調整する。
【0042】
ギア比をA:Bとすると、ホスト書き込みでA個の移動先のブロックが消費される際、GC書き込みではB個の移動先のブロックが消費される。この場合、ガベッジコレクション制御部123は、少なくともA+B個またはその倍数のフリーブロックを作成するようにガベッジコレクションを実行すればよい。
【0043】
また、フリーブロックの数が十分存在し、さらなる作成が不要な場合や、有効クラスタ率の小さいブロックが存在せず、フリーブロックを効率的に作成することが期待できない場合などにおいて、ガベッジコレクション制御部123は、ガベッジコレクションを停止してもよい。
【0044】
図5は、ギア比の算出に用いられるグラフの一例を示す図である。
【0045】
図5において、縦軸はギア比を表し、横軸はNANDメモリ200内に残存するデータの書き込み可能容量を表している。データの書き込み可能容量は、フリーブロックの数としてもよいし、ブロックよりも粒度を細かくして、空きページ(データを書き込み可能であるが未書き込みのページ)の数としてもよい。ここでは、データの書き込み可能容量は、フリーブロックの数とする例を説明する。
【0046】
ギア比の「100:N0」、「100:Na」、「100:Nb」、「100:Nc」は、100回のホスト書き込みに対して、それぞれ、N0回、Na回、Nb回、Nc回のGC書き込みを行うことを示している(N0<Na<Nb<Nc)。また、「0:X」は、ホスト書き込みを停止してGC書き込みを行うことを示している。「Y:0」は、ガベッジコレクションを停止することを示している。
【0047】
データの書き込み可能容量を表す横軸上の「Thresh_0」、「Thresh_1」、「Thresh_2L」、「Thresh_2H」、「Thresh_3」は、データの書き込み可能容量からギア比を導き出すために設けられる複数の閾値である。
【0048】
たとえば、データの書き込み可能容量が「Thresh_3」より大きい場合、ガベッジコレクションは停止する(ギア比「Y:0」)。一方、データの書き込み可能容量が「Thresh_0」未満の場合は、ギア比は「0:X」となる。また、データの書き込み可能容量が「Thresh_0」~「Thresh_1」の場合は、ギア比は「100:Nc」となる。さらに、データの書き込み可能容量が「Thresh_3」の場合は、ギア比は「100:N0」となる。
【0049】
データの書き込み可能容量が「Thresh_1」~「Thresh_3」の場合は、たとえば、データの書き込み可能容量が「Thresh_2L」の場合のギア比は「100:Nb」であることと、データの書き込み可能容量が「Thresh_2H」の場合のギア比は「100:Na」であることが定められる。「Thresh_1」~「Thresh_2L」の間、「Thresh_2L」~「Thresh_2H」の間、「Thresh_2H」~「Thresh_3」の間は、それぞれ、各範囲の両端のギア比を結ぶ直線で補完されて各ギア比が導き出される。なお、ここでは、「Thresh_1」と「Thresh_3」との間に「Thresh_2L」と「Thresh_2H」とを設ける例を示したが、これは単なる一例であって、これに限らず、データの書き込み可能容量からギア比を導き出すための閾値の設定は、「Thresh_1」と「Thresh_3」との間に3個以上定義するなど、様々に変形することが可能である。
【0050】
以上のような、NANDメモリ200内に残存するデータの書き込み可能容量に基づいたギア比の算出は、本実施形態のメモリシステム1においては、ガベッジコレクション制御部123が備える通常ギア比算出部1231が実行する。通常ギア比算出部1231は、たとえば、フリーブロック数が変動したことに応じて当該ギア比の算出を実行する。通常ギア比算出部1231は、所定時間間隔で定期的に当該ギア比の算出を実行してもよい。当該通常ギア比算出部1231を含むガベッジコレクション制御部123は、フリーブロックの数、つまり、NANDメモリ200内に残存するデータの書き込み可能容量を、ブロック管理部121から取得する。
【0051】
ところで、ランダムライトの実行中は、フリーブロックの消費と、(データの無効化が多数のブロック内において発生することなどに起因する)フリーブロックの作成とが発生し易く、つまりは、フリーブロック数が変動し易い。従って、ギア比の変動が頻繁に発生し、当該ギア比の変動に連動して、IOPSがばらついてしまうおそれある。
図6は、ランダムライト実行中におけるギア比の変動および当該ギア比の変動に連動したIOPSのばらつきの一例を示す図である。
【0052】
図6(A)は、ギア比の遷移を示し、
図6(B)は、IOPSの遷移を示している。そして、
図6(B)における符号a1は、IOPSのばらつきが顕著に現れている箇所を示している。メモリシステム1は、このようなばらつきが発生せず、ライト性能が安定していることが好ましい。そこで、本実施形態に係るメモリシステム1は、ギア比の変動を平準化することができる仕組みを備えたものであり、以下、この点について詳述する。
【0053】
図1を用いて前述したように、ガベッジコレクション制御部123は、通常ギア比算出部1231、ギア比履歴管理部1232、平均ギア比算出部1233、ギア比判定部1234を有している。また、前述したように、通常ギア比算出部1231は、NANDメモリ200内に残存するデータの書き込み可能容量に基づき、ホスト書き込みとGC書き込みとの比率であるギア比を算出する。
【0054】
ギア比履歴管理部1232は、通常ギア比算出部1231で算出されたギア比を最大M個分記録する。換言すれば、ギア比履歴管理部1232は、通常ギア比算出部1231で算出されたギア比を最大M世代分管理する。通常ギア比算出部1231でギア比が算出された際、既にM世代分のギア比を管理している場合、ギア比履歴管理部1232は、最も古いギア比を破棄し、当該算出された最新のギア比を記録する。また、ギア比履歴管理部1232は、後述する所定の状況下(第2状態の場合)において、管理する最大M世代分のギア比をすべて破棄する。
【0055】
平均ギア比算出部1233は、通常ギア比算出部1231でギア比が算出された場合であって、かつ、ギア比履歴管理部1232によるギア比の管理世代数がM世代分に達している場合、通常ギア比算出部1231で算出された最新のギア比を含む、ギア比履歴管理部1232で管理されるM世代分以下のギア比を使って、これらの平均である平均ギア比を算出する。以下、平均ギア比算出部1233で算出される平均ギア比と明確に区別するために、通常ギア比算出部1231で算出されるギア比を通常ギア比と称することがある。なお、ここでは、ギア比の管理世代数がM世代分に達している場合に、平均ギア比の算出を実行することとしているが、L(Lは2以上かつM未満の自然数)世代以上のギア比が管理されているならば、平均ギア比の算出を実行するようにしてもよい。
【0056】
ギア比判定部1234は、たとえば、フリーブロック数などのNANDメモリ200に残存するデータの書き込み可能容量に応じて、通常ギア比算出部1231で算出された最新の通常ギア比と、平均ギア比算出部1233で算出された平均ギア比とのいずれを適用すべきかを判定する。
【0057】
たとえば、ギア比判定部1234は、データの書き込み可能容量が、
図5に示した「Thresh_1」以上、かつ、「Thresh_3」未満の場合、平均ギア比算出部1233で算出された平均ギア比を適用することを決定し、ギア比の変動の緩和を図る。つまり、性能安定化を図る。ここで、データの書き込み可能容量をKとし、「Thresh_1」≦K<「Thresh_3」の平均ギア比が適用されるべき状態を第1状態と称する。一方、K<「Thresh_1」やK≧「Thresh_3」の平均ギア比は非適用とすべき状態、即ち、通常ギア比が適用されるべき状態を第2状態と称する。また、ギア比の変動の緩和を図ることを、ギア比の平準化とも称する。なお、ギア比履歴管理部1232によってM世代分のギア比が管理されていない場合には、ギア比判定部1234は、通常ギア比算出部1231で算出された最新の通常ギア比を適用することを決定してもよい。
【0058】
データの書き込み可能容量が「Thresh_1」未満(K<「Thresh_1」)の第2状態の場合、性能安定化よりも装置(メモリシステム1であるSSD)故障回避を優先すべき状態であるため、ギア比判定部1234は、通常ギア比算出部1231で算出された最新の通常ギア比を適用することを決定する。この状況下においては、通常ギア比算出部1231は、キア比として「0:X」を算出するので、メモリシステム1は、ホスト書き込みを停止し、GC書き込みを優先的に行う。また、第2状態となることに応じて、ギア比判定部1234は、ギア比履歴管理部1232に対して、管理する最大M世代分のギア比をすべて破棄することを指示する。
【0059】
また、データの書き込み可能容量が「Thresh_3」以上(K≧「Thresh_3」)の第2状態の場合も、ギア比判定部1234は、通常ギア比算出部1231で算出された最新の通常ギア比を適用することを決定する。K≧「Thresh_3」の状態は、フリーブロックの数が十分に存在し、さらなる作成が不要な状態である。この状況下においては、通常ギア比算出部1231は、ガベッジコレクションの停止を意味するギア比「0」を算出する。つまり、ギア比判定部1234は、K≧「Thresh_3」の場合、通常ギア比を採用することで、無駄なガベッジコレクションが行われないよう、即座にバックグラウンドのガベッジコレクションを停止させる。無駄なGC書き込みをなくすことで、メモリシステム1であるSSDの性能向上と延命効果とが期待できる。なお、この場合も、ギア比判定部1234は、ギア比履歴管理部1232に対して、管理する最大M世代分のギア比をすべて破棄することを指示する。
【0060】
前述したように、ギア比判定部1234は、「Thresh_1」≦K<「Thresh_3」の第1状態の場合であっても、ギア比履歴管理部1232によってM世代分のギア比が管理されていない場合には、通常ギア比算出部1231で算出された最新の通常ギア比を適用することを決定する。M世代分に満たなくとも、L世代分以上のギア比が管理されているならば、平均ギア比の算出を実行するとした場合においては、L世代分未満のギア比しか管理されていなければ、ギア比判定部1234は、通常ギア比算出部1231で算出された最新の通常ギア比を適用することを決定する。ギア比履歴管理部1232は、第2状態を挟んだ前回の第1状態時のギア比を破棄し、これらを管理しない。また、所定数(MまたはL)未満の少数の通常ギア比から算出される平均ギア比を採用することもない。これにより、ギア比の変動の平準化を適切に図ることができる。
【0061】
図7は、本実施形態に係るメモリシステム1のランダムライト実行中におけるギア比の遷移およびIOPSの遷移の一例を示す図である。
【0062】
図7(A)には、本実施形態に係るメモリシステム1のランダムライト実行中におけるギア比(平準化後のギア比)の遷移を、
図6(A)に示したギア比(従来ギア比)の遷移と併せて示している。一方、
図7(B)には、本実施形態に係るメモリシステム1のランダムライト実行中におけるIOPSの遷移を示している。
【0063】
図7(A)で表されているように、本実施形態に係るメモリシステム1では、ランダムライト実行中におけるギア比の変動が平準化され、これに伴い、
図7(B)で表されているように、IOPSのばらつきが発生せず、ライト性能が安定する。
【0064】
このように、ガベッジコレクション制御部123が、通常ギア比算出部1231に加えて、ギア比履歴管理部1232、平均ギア比算出部1233、ギア比判定部1234を有する、本実施形態に係るメモリシステム1においては、書き込み性能を安定化することができる。
【0065】
図8は、本実施形態に係るメモリシステム1のガベッジコレクション制御部123によって実行されるギア比決定処理の流れを示すフローチャートである。このギア比決定処理は、たとえば、フリーブロック数が変動(減少)したタイミングや、所定時間間隔で定期的に実行される。
【0066】
通常ギア比算出部1231は、NANDメモリ200に残存するデータの書き込み可能容量に基づき、ホスト2からの要求に応じたデータの書き込みと、ガベッジコレクションのためのデータの書き込みとの比率である通常ギア比を算出する(S1)。通常ギア比は、ガベッジコレクションの実行周期を調整するために適用され得る。
【0067】
データの書き込み可能容量がたとえば「Thresh_1」≦K<「Thresh_3」(
図5参照)の第1状態の場合(S2:Yes)、ギア比履歴管理部1232は、通常ギア比算出部1231で算出された通常ギア比を履歴として登録する(S3)。ギア比履歴管理部1232は、最大M個のギア比を登録可能であり、ギア比の登録数がM個に達した後は、最も古いギア比を破棄して最新のギア比を登録することを繰り返す。
【0068】
ギア比履歴管理部1232がM個のギア比を登録済みの場合(S4:Yes)、平均ギア比算出部1233は、当該M個のギア比から平均ギア比を算出する(S5)。すなわち、第1状態の場合(S2:Yes)であって、M個のギア比が登録済みの場合(S4:Yes)、ギア比判定部1234は、ガベッジコレクションの実行周期を調整するためのギア比として、平均ギア比算出部1233で算出された平均ギア比を適用することを決定する(S6)。
【0069】
一方、K<「Thresh_1」やK≧「Thresh_3」など(
図5参照)の第2状態の場合(S2:No)、ギア比履歴管理部1232は、履歴として登録済みの通常ギア比をすべて削除する(S7)。また、この場合、ギア比判定部1234は、ガベッジコレクションの実行周期を調整するためのギア比として、通常ギア比算出部1231で算出された通常ギア比を適用することを決定する(S8)。
【0070】
ギア比判定部1234は、第1状態の場合(S2:Yes)であって、ギア比履歴管理部1232が登録済みの通常ギア比がM個に満たない場合(S4:No)においても、ガベッジコレクションの実行周期を調整するためのギア比として、通常ギア比算出部1231で算出された通常ギア比を適用することを決定する(S8)。
【0071】
以上のように、本実施形態に係るメモリシステム1は、データの書き込み可能容量が特定の範囲にある場合、通常ギア比を所定の世代分記録して、当該蓄積した所定の世代分の通常ギア比から平均ギア比を算出し、当該算出した平均ギア比をガベッジコレクションの実行周期を調整するためのギア比として適用する。これにより、本実施形態に係るメモリシステム1は、ランダムライト実行中におけるギア比の変動を平準化し、IOPSのばらつきを発生させずに、ライト性能を安定させることを実現する。
【0072】
ところで、SSDでは、たとえばフリーブロックの数が少ないことによりライト性能が低下するといったことを防止するために、オーバープロビジョニングなどと称される、公称値よりも多くの容量のNANDメモリを搭載することがある。オーバープロビジョニングは、たとえば経年劣化によってNANDメモリ内で部分的な障害が発生し始めても、極力、公称値を保ち続けるという効果も奏する。
【0073】
本実施形態に係るメモリシステム1が、公称値、つまり、ホスト2へ提供する記憶領域の容量よりも大きい容量のNANDメモリ200を搭載している場合、ガベッジコレクション制御部123は、ホスト2へ提供する記憶領域の容量に対するNANDメモリ200中の使用可能な記憶領域の総容量の比である余裕率に応じて、第1状態か否かを判定するための閾値を適用的に変更することができる。ここで、使用可能な記憶領域とは、フリーブロックを意味しているのではなく、障害を発生してなく、データの書き込み、読み出し、消去などの通常動作が可能なブロックを意味している。
【0074】
より詳しくは、ギア比判定部1234は、余裕率が大きい程、
図5における「Thresh_1」を「Thresh_0」側へ変更して、平均ギア比の適用範囲(Thresh_1~Thresh_3)を拡大し、余裕率が小さくなっていくにつれて、「Thresh_1」を「Thresh_3」側へ変更して、平均ギア比の適用範囲を制限する。
【0075】
これにより、本実施形態に係るメモリシステム1は、より実際の記憶領域の状況に応じて、ランダムライト実行中におけるギア比の変動を平準化することができる。
【0076】
また、ギア比判定部1234は、平均ギア比を適用すべき状況から通常ギア比を適用すべき状況への移行時、通常ギア比を即時的に適用するのではなく、平均ギア比から通常ギア比まで段階的に変更するようにしてもよい。具体的には、たとえばデータの書き込み可能容量が「Thresh_3」以上となった場合、ガベッジコレクションを即時に停止させる(ギア比「Y:0」)のではなく、ギア比を「100:Na」から「Y:0」側へ段階的に変更してもよい。
【0077】
これにより、本実施形態に係るメモリシステム1は、ランダムライト実行中におけるギア比の変動の平準化だけでなく、ギア比の急激な変動を抑止することができる。
【0078】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0079】
1…メモリシステム、2…ホスト、100…コントローラ、110…ホストインターフェース部、120…制御部、121…ブロック管理部、122…書き込み/読み出し制御部、123…ガベッジコレクション制御部、130…データバッファ、131…書き込みバッファ(WB)領域、132…ガベッジコレクションバッファ(GB)領域、140…NANDインターフェース部、200…NAND型フラッシュメモリ、1231…通常ギア比算出部、1232…ギア比履歴管理部、1233…平均ギア比算出部、1234…ギア比判定部1234。