IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 東芝メモリ株式会社の特許一覧

<>
  • 特開-メモリシステムおよび制御方法 図1
  • 特開-メモリシステムおよび制御方法 図2
  • 特開-メモリシステムおよび制御方法 図3
  • 特開-メモリシステムおよび制御方法 図4
  • 特開-メモリシステムおよび制御方法 図5
  • 特開-メモリシステムおよび制御方法 図6
  • 特開-メモリシステムおよび制御方法 図7
  • 特開-メモリシステムおよび制御方法 図8
  • 特開-メモリシステムおよび制御方法 図9
  • 特開-メモリシステムおよび制御方法 図10
  • 特開-メモリシステムおよび制御方法 図11
  • 特開-メモリシステムおよび制御方法 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025020895
(43)【公開日】2025-02-13
(54)【発明の名称】メモリシステムおよび制御方法
(51)【国際特許分類】
   G06F 12/02 20060101AFI20250205BHJP
【FI】
G06F12/02 530C
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023124524
(22)【出願日】2023-07-31
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】長原 禎
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA10
5B160AA14
(57)【要約】
【課題】好適にGC動作を実行できるメモリシステムおよび制御方法を実現する。
【解決手段】コントローラは、ガベージコレクション動作を実行する際、ライトアンプリフィケーションを算出する。コントローラは、少なくとも有効データを格納している第1ブロックの数が増加するにつれて増加する第1閾値を算出する。コントローラは、ライトアンプリフィケーションがライトアンプリフィケーションの目標値よりも小さい場合に、第1閾値がより大きい値になるように第1閾値を調整し、ライトアンプリフィケーションが目標値よりも大きい場合に、第1閾値がより小さい値になるように第1閾値を調整する。コントローラは、前記第1ブロックのうち、有効データ率が第1閾値よりも小さいブロックの各々を選択する。コントローラは、選択したブロックの各々に格納されている有効データをコピー先ブロックにコピーする。
【選択図】図6
【特許請求の範囲】
【請求項1】
ホストに接続可能なメモリシステムであって、
それぞれがデータ消去動作の単位である複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリを制御し、且つ前記不揮発性メモリに対するガベージコレクション動作を実行するように構成されたコントローラと、を具備し、
前記コントローラは、
前記ガベージコレクション動作を実行する際、
前記ホストからの要求に基づいて前記不揮発性メモリに書き込まれたデータの総量に対する、前記不揮発性メモリに書き込まれたデータの総量の割合を示すライトアンプリフィケーションを算出し、
少なくとも有効データを格納している第1ブロックの個数に基づき、前記第1ブロックの数が増加するにつれて増加する第1閾値を算出し、
前記算出されたライトアンプリフィケーションが前記ライトアンプリフィケーションの目標値よりも小さい場合、前記第1閾値がより大きい値になるように前記第1閾値を調整し、前記算出されたライトアンプリフィケーションが前記目標値よりも大きい場合、前記第1閾値がより小さい値になるように前記第1閾値を調整し、
前記第1ブロックの各々について、一つのブロックに格納可能なデータの総量に対する有効データの総量の割合を示す有効データ率を特定し、
前記第1ブロックのうち、前記有効データ率が前記第1閾値よりも小さいブロックの各々を選択し、
前記選択したブロックの各々に格納されている有効データをコピー先ブロックにコピーすることによって、前記選択したブロックの各々をフリーブロックにするように構成されている、
メモリシステム。
【請求項2】
前記コントローラは、
前記ガベージコレクション動作において、
前記コピーが完了した前記選択したブロックの各々に対して、データ消去動作を実行する、
ように構成されている、
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、
前記メモリシステムをアイドル状態に遷移させたとき、
前記ガベージコレクション動作を実行するように構成されている、
請求項1に記載のメモリシステム。
【請求項4】
前記コントローラは、
前記メモリシステムを前記アイドル状態に遷移させたとき、
前記第1ブロックの数が第1範囲内にある場合に、前記ガベージコレクション動作を実行し、
前記第1ブロックの数が前記第1範囲にない場合、前記ガベージコレクション動作を実行しないように構成されている、
請求項3に記載のメモリシステム。
【請求項5】
前記コントローラは、
前記複数のブロックのうち、フリーブロックの数が第2閾値以下になったことに応じて、前記ガベージコレクション動作とは異なるガベージコレクション動作を開始し、
前記異なるガベージコレクション動作を実行する際、
前記第1ブロックのうち、前記有効データ率が低いブロックを選択し、
前記選択したブロックに格納されている有効データをコピー先ブロックにコピーするように構成されている、
請求項1に記載のメモリシステム。
【請求項6】
前記コントローラは、
前記不揮発性メモリから管理情報を読み出し、
前記管理情報に含まれている、前記不揮発性メモリに書き込まれたデータの総量を使用して、前記ライトアンプリフィケーションを算出するように構成されている、
請求項1に記載のメモリシステム。
【請求項7】
前記コントローラは、
1以上の数を指数とする前記第1ブロックの数の累乗を、前記1以上の数を指数とする前記複数のブロックの数の累乗で除した数に、前記ライトアンプリフィケーションを乗じることによって算出された値に基づいて、前記第1閾値を算出するように構成されている、
請求項1に記載のメモリシステム。
【請求項8】
前記コントローラは、
前記算出されたライトアンプリフィケーションが目標値よりも小さい場合、
前記算出された第1閾値から、第2の値を減算することによって、前記第1閾値をより小さい値になるように調整し、
前記算出された書き込み効率値が前記目標値よりも大きい場合、
前記算出された第1閾値に、第3の値を加算することによって、前記第1閾値をより大きい値になるように調整するように構成されている、
請求項1に記載のメモリシステム。
【請求項9】
前記第2の値と、前記第3の値とは、等しい値である、
請求項8に記載のメモリシステム。
【請求項10】
それぞれが消去動作の単位である複数のブロックを含む不揮発性メモリを制御する制御方法であって、
前記不揮発性メモリに対するガベージコレクション動作を実行することを具備し、
前記ガベージコレクション動作の実行は、
ホストからの要求に基づいて前記不揮発性メモリに書き込まれたデータの総量に対する、前記不揮発性メモリに書き込まれたデータの総量の割合を示すライトアンプリフィケーションを算出することと、
少なくとも有効データを格納している第1ブロックの個数に基づき、前記第1ブロックの数が増加するにつれて増加する第1閾値を算出することと、
前記算出されたライトアンプリフィケーションが前記ライトアンプリフィケーションの目標値よりも小さい場合、前記第1閾値がより大きい値になるように前記第1閾値を調整し、前記算出されたライトアンプリフィケーションが前記目標値よりも大きい場合、前記第1閾値がより小さい値になるように前記第1閾値を調整することと、
前記第1ブロックの各々について、一つのブロックに格納可能なデータの総量に対する有効データの量の割合を示す有効データ率を特定することと、
前記第1ブロックのうち、前記有効データ率が前記第1閾値よりも小さいブロックの各々を選択することと、
前記選択したブロックの各々に格納されている有効データをコピー先ブロックにコピーすることによって、前記選択したブロックの各々をフリーブロックにすることと
を含む、
制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、不揮発性メモリを含むメモリシステムおよび不揮発性メモリを制御する制御方法に関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。
【0003】
NAND型フラッシュメモリは、データ消去動作の最小単位であるブロックを複数含む。メモリシステムのコントローラは、データの書き込みに利用可能なフリーブロックの数を回復するために、ガベージコレクション(GC)動作を実行する。
【0004】
GC動作が実行される頻度が高すぎる場合(または一度のGC動作で作られるべきフリーブロックの数が多すぎる場合)、ライトアンプリフィケーションの悪化によりメモリシステムの寿命が短くなる場合がある。一方、GC動作の頻度が低すぎる場合(または一度のGC動作で作られるべきフリーブロックの数が少なすぎる場合)、フリーブロックの不足により、ホストから受信されたライトコマンドの処理を即座に開始できず、これによってメモリシステムの性能の低下が引き起こされる場合がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2012-33002号公報
【特許文献2】特開2019-212099号公報
【特許文献3】特開2017-111476号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明の実施形態が解決しようとする課題は、好適にGC動作を実行することができるメモリシステムおよび制御方法を提供することである。
【課題を解決するための手段】
【0007】
実施形態によれば、ホストに接続可能なメモリシステムは、不揮発性メモリと、コントローラとを具備する。前記不揮発性メモリは、それぞれがデータ消去動作の単位である複数のブロックを含む。前記コントローラは、前記不揮発性メモリを制御し、且つ前記不揮発性メモリに対するガベージコレクション動作を実行するように構成される。前記コントローラは、前記ガベージコレクション動作を実行する際、前記ホストからの要求に基づいて前記不揮発性メモリに書き込まれたデータの総量に対する、前記不揮発性メモリに書き込まれたデータの総量の割合を示すライトアンプリフィケーションを算出する。前記コントローラは、少なくとも有効データを格納している第1ブロックの個数に基づき、前記第1ブロックの数が増加するにつれて増加する第1閾値を算出する。前記コントローラは、前記算出されたライトアンプリフィケーションが前記ライトアンプリフィケーションの目標値よりも小さい場合、前記第1閾値がより大きい値になるように前記第1閾値を調整し、前記算出されたライトアンプリフィケーションが前記目標値よりも大きい場合、前記第1閾値がより小さい値になるように前記第1閾値を調整する。前記コントローラは、前記第1ブロックの各々について、一つのブロックに格納可能なデータの総量に対する有効データの総量の割合を示す有効データ率を特定する。前記コントローラは、前記第1ブロックのうち、前記有効データ率が前記第1閾値よりも小さいブロックの各々を選択する。前記コントローラは、前記選択したブロックの各々に格納されている有効データをコピー先ブロックにコピーすることによって、前記選択したブロックの各々をフリーブロックにする。
【図面の簡単な説明】
【0008】
図1】実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図。
図2】実施形態に係るメモリシステムに含まれるNAND型フラッシュメモリの構成例を示すブロック図。
図3】実施形態に係るメモリシステムに含まれるDRAMの構成例を示すブロック図。
図4】実施形態に係るメモリシステムのコントローラに含まれるCPUの機能構成例を示すブロック図。
図5】実施形態に係るメモリシステムにおいて実行される書き込み動作と、ガベージコレクション動作の例を示す図。
図6】実施形態に係るメモリシステムにおける第1閾値とアクティブブロックの数との間の関係について示す図。
図7】実施形態に係るメモリシステムにおける、ライトアンプリフィケーション(WAF)がWAF目標値と等しい場合の、第1閾値とアクティブブロックの数との間の関係について示す図。
図8】実施形態に係るメモリシステムにおける、WAFがWAF目標値よりも小さい場合の、第1閾値とアクティブブロックの数との間の関係について示す図。
図9】実施形態に係るメモリシステムにおける、WAFがWAF目標値よりも大きい場合の、第1閾値とアクティブブロックの数との間の関係について示す図。
図10】実施形態に係るメモリシステムにおいて実行されるアイドル状態遷移動作の手順を示すフローチャート。
図11】実施形態に係るメモリシステムにおいて実行されるガベージコレクション動作の手順を示すフローチャート。
図12】実施形態に係るメモリシステムにおいて実行されるWAF算出動作の手順を示すフローチャート。
【発明を実施するための形態】
【0009】
以下、図面を参照して、実施形態を説明する。
図1は、実施形態に係るメモリシステム3を含む情報処理システム1の構成例を示すブロック図である。実施形態に係るメモリシステム3は、不揮発性メモリを含むストレージデバイスである。
【0010】
情報処理システム1は、ホスト(ホストデバイス)2と、メモリシステム3とを含む。ホスト2と、メモリシステム3とは、バス7を介して接続可能である。
【0011】
ホスト2は、情報処理装置である。ホスト2は、例えば、パーソナルコンピュータ、サーバコンピュータ、または携帯端末である。ホスト2は、メモリシステム3にアクセスする。具体的には、ホスト2は、データを不揮発性メモリに書き込むことを要求するためのコマンドであるライトコマンドをメモリシステム3に送信する。ホスト2は、データを不揮発性メモリから読み出すことを要求するためのコマンドであるリードコマンドをメモリシステム3に送信する。また、ホスト2は、データを無効化することを要求するためのコマンドである無効化コマンドをメモリシステム3に送信する。無効化コマンドの一例は、アンマップコマンドやトリムコマンドである。
【0012】
メモリシステム3は、ホスト2に接続可能な半導体ストレージデバイスである。メモリシステム3は、例えば、エンベデッドマルチメディアカード(eMMC)、ソリッドステートデバイス(SSD)などによって実現される。メモリシステム3は、例えば、不揮発性メモリの一例であるNAND型フラッシュメモリ5を含む。メモリシステム3は、不揮発性メモリにデータを書き込む。そして、メモリシステム3は、不揮発性メモリからデータを読み出す。
【0013】
メモリシステム3とホスト2との間の通信は、バス7を介して実行される。バス7は、主として、ホスト2からメモリシステム3へのデータおよび入出力コマンド(I/Oコマンド)の送信、およびメモリシステム3からホスト2へのデータおよび応答の送信のために使用される。I/Oコマンドは、不揮発性メモリに対するデータの書き込みまたは読み出しを行うためのコマンドである。I/Oコマンドとしては、例えば、不揮発性メモリへのデータの書き込みを要求するためのライトコマンド、不揮発性メモリからのデータの読み出しを要求するためのリードコマンドがある。
【0014】
次に、メモリシステム3の内部構成について説明する。メモリシステム3は、コントローラ4と、NAND型フラッシュメモリ5と、を含む。メモリシステム3は、さらに、ダイナミックランダムアクセスメモリ(DRAM)6を含んでいてもよい。
【0015】
コントローラ4は、メモリコントローラである。コントローラ4は、例えば、System-on-a-Chip(SoC)のような制御回路である。コントローラ4は、NAND型フラッシュメモリ5およびDRAM6の各々に電気的に接続されている。コントローラ4は、ホスト2から受信される様々なコマンドを処理する。コントローラ4は、ライトコマンドを処理することによって、NAND型フラッシュメモリ5へのデータの書き込み動作を実行する。コントローラ4は、リードコマンドを処理することによって、NAND型フラッシュメモリ5からのデータの読み出し動作を実行する。ホスト2からのアクセスが無い時間が一定時間に達すると、コントローラ4は、メモリシステム3をアイドル状態に遷移させる。あるいは、コントローラ4は、ホスト2からの要求に基づいて、メモリシステム3をアイドル状態に遷移させる。アイドル状態にあるメモリシステム3は、ホスト2からの要求を待っている状態である。例えば、メモリシステム3は、アイドル状態の間、メモリシステム3内の消費電力を低下させる。あるいは、メモリシステム3は、アイドル状態の間に、例えば、ガベージコレクション動作などを実行し得る。
【0016】
また、コントローラ4は、DRAM6と通信可能に接続されている。コントローラ4は、DRAM6へのデータの書き込みと、DRAM6からのデータの読み出しとを実行する。
【0017】
NAND型フラッシュメモリ5は、不揮発性のメモリである。NAND型フラッシュメモリ5は、例えば、3次元構造のフラッシュメモリである。NAND型フラッシュメモリ5は、メモリセルアレイ50を含む。メモリセルアレイ50は、マトリクス状に配置された複数のメモリセルを含む。NAND型フラッシュメモリ5内のメモリセルアレイ50は、複数のブロックBLK0~BLKx-1を含む。ブロックBLK0~BLKx-1の各々は、データを消去するデータ消去動作の単位である。データ消去動作は、イレーズ動作、または単に消去動作とも称される。ブロックBLK0~BLKx-1の各々は、物理ブロック、フラッシュブロック、またはメモリブロックとも称される。
【0018】
ブロックBLK0~BLKx-1の各々は、複数のページ(ここではページP0~Py-1)を含む。各ページは、同一ワード線に接続された複数のメモリセルを含む。ページP0~Py-1の各々は、データ書き込み動作およびデータ読み出し動作の単位である。
【0019】
ブロックBLK0~BLKx-1のうちのいくつかのブロックは、例えば、トリプルレベルセルブロック(TLCブロック)として使用され得る。各TLCブロックにデータを書き込む動作においては、メモリセル当たりに3ビットのデータを書き込むことにより、3ページ分のデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。
【0020】
また、ブロックBLK0~BLKx-1のうちの他のブロックの各々は、例えば、シングルレベルセルブロック(SLCブロック)として使用され得る。各SLCブロックにデータを書き込む動作においては、メモリセル当たりに1ビットのデータを書き込むことにより、1ページ分のデータが、同一ワード線に接続された複数のメモリセルに書き込まれる。
【0021】
SLCブロックのメモリセル当たりの記憶密度は1ビット(すなわち、ワード線あたり1ページ)であり、TLCブロックにおけるメモリセル当たりの記憶密度は3ビット(すなわち、ワード線あたり3ページ)である。そのため、SLCブロックとTLCブロックとの個数が同じであっても、TLCブロックを使用することによって記憶することができるデータの量は、SLCブロックを使用した場合に記憶することができるデータの総量の3倍である。つまり、SLCブロックにデータを記憶するよりもTLCブロックに優先的にデータを記憶することによって、メモリシステム3のリソースを有効に活用することができる。
【0022】
一方、NAND型フラッシュメモリ5に対するデータの書き込み速度および読み出し速度は、記憶密度が高いほど遅く、記憶密度が低いほど速い。したがって、TLCブロックに対するデータの読み出しおよび書き込みに要する時間は、SLCブロックに対するデータの読み出しおよび書き込みに要する時間よりも長くなる。
【0023】
そのため、メモリシステム3では、ホスト2から受信されたライトコマンドに関連付けられたデータをSLCブロックに書き込むことによって、TLCブロックにデータを書き込む場合よりも、ライトコマンドを速く処理することができる。その後、SLCブロックに格納されているデータをTLCブロックにコピーすることによって、メモリシステム3のリソースを有効に活用することができる。
【0024】
しかし、このコピー動作は、ホスト2によって要求されたデータの書き込み動作以外に、NAND型フラッシュメモリ5に対するデータ書き込み動作を生じさせる。そのため、このコピー動作によって、メモリシステム3におけるライトアンプリフィケーション(WAF)を悪化させることになり、この結果、NAND型フラッシュメモリ5の寿命を短縮させることになる。ライトアンプリフィケーションは、書き込み効率値とも称される。ライトアンプリフィケーションは、ホスト2からの要求に基づいてNAND型フラッシュメモリ5に書き込まれたデータの総量に対する、NAND型フラッシュメモリ5に書き込まれたデータの総量の割合を示す。
【0025】
以降では、同一ワード線に接続された複数のメモリセルに対して3ページ分のデータを書き込むモードを第1書き込みモードと称し、同一ワード線に接続された複数のメモリセルに対して1ページ分のデータを書き込むモードを第2書き込みモードと称する。第1書き込みモードは、TLCモードとも称される。第2書き込みモードは、SLCモードとも称される。NAND型フラッシュメモリ5に含まれる複数のブロックそれぞれは、例えば、第1書き込みモード専用のブロックあるいは第2書き込みモード専用のブロックのいずれかである。
【0026】
DRAM6は、揮発性のメモリである。DRAM6の記憶領域の一部は、例えば、メモリシステム3を管理するために使用される情報を一時的に記憶するために使用される。また、DRAM6の記憶領域の他の一部は、ホスト2から受信したライトデータ、またはNAND型フラッシュメモリ5から読み出されたリードデータを一時的に記憶するために使用され得る。
【0027】
次に、コントローラ4の内部構成の例について説明する。コントローラ4は、ホストインタフェース(ホストI/F)41と、CPU42と、ダイレクトメモリアクセスコントローラ(DMAC)43と、スタティックRAM(SRAM)44と、NANDインタフェース(NAND I/F)45と、ECCエンコード/デコード回路46、DRAMインタフェース(DRAM I/F)47とを含む。これらの各部は、内部バス40に接続されている。
【0028】
ホストインタフェース41は、ホスト2との通信を実行するインタフェース回路である。ホストインタフェース41は、例えば、ホスト2からI/Oコマンドおよびデータを受信する。また、ホストインタフェース41は、データおよび応答をホスト2に送信する。
【0029】
CPU42は、プロセッサである。CPU42は、ホストインタフェース41、DMAC43、SRAM44、NANDインタフェース45、ECCエンコード/デコード回路46、およびDRAMインタフェース47を制御する。CPU42は、NAND型フラッシュメモリ5または図示しないROMに格納されている制御プログラム(ファームウェア)を、SRAM44またはDRAM7にロードする。CPU42は、この制御プログラム(ファームウェア)を実行することによって様々な処理を行う。
【0030】
CPU42は、例えば、フラッシュトランスレーション層(FTL)として、NAND型フラッシュメモリ5に記憶されたデータの管理およびNAND型フラッシュメモリ5に含まれるブロックの管理を実行する。NAND型フラッシュメモリ5に記憶されたデータの管理とは、例えば、論理アドレスそれぞれと物理アドレスそれぞれとの間の対応関係を示す情報であるマッピング情報の管理である。論理アドレスは、メモリシステム3をアクセスするためにホスト2によって使用されるアドレスである。論理アドレスは、例えば、LBA(Logical Block Address)である。物理アドレスは、NAND型フラッシュメモリ5における物理的な記憶位置を示すアドレスである。NAND型フラッシュメモリ5において、ブロックの1つのページへのデータ書き込みは、ブロックに対するプログラム/イレーズサイクル当たり1回のみ可能である。このため、コントローラ4は、ある論理アドレスに対応する更新データを、この論理アドレスに対応する以前のデータが格納されている記憶位置ではなく、別の記憶位置に書き込む。このため、CPU42は、論理アドレスと物理アドレスとの間のマッピングを論理物理アドレス変換テーブル(logical-to-physical address translation table:L2Pテーブル)61を使用して管理する。NAND型フラッシュメモリ5に記憶されているデータのうち、論理アドレスにマッピングされている物理アドレスによって示される記憶位置に記憶されているデータは、有効データである。一方、どの論理アドレスにもマッピングされていない物理アドレスによって示される記憶位置に記憶されているデータは、無効データである。CPU42は、少なくとも有効データを記憶しているブロックをアクティブブロックとして管理する。また、CPU42は、有効データを記憶していないブロックをフリーブロックとして管理する。
【0031】
また、NAND型フラッシュメモリ5に含まれるブロックの管理において、例えば、ガベージコレクション動作が実行される。ガベージコレクション動作において、CPU42は、特定のアクティブブロックをガベージコレクション対象のブロックとして選択する。ガベージコレクション対象のブロックは、コピー元ブロックと称される。CPU42は、選択されたブロックに格納されているブロックに記憶されている有効データのみを抽出して、コピー先ブロックにコピーする。これにより、選択されたガベージコレクション対象のブロックに記憶されていたデータは、全て無効データとなる。よって、選択されたブロックは、フリーブロックとなる。そして、CPU42は、フリーブロックとなったブロックに対するデータ消去動作を実行する。つまり、CPU42は、ガベージコレクション動作を実行することによって、メモリシステム3におけるフリーブロックの数を回復することができる。
【0032】
DMAC43は、ダイレクトメモリアクセス(DMA)を実行する回路である。DMAC43は、ホスト2のメモリ(不図示)とSRAM44またはDRAM6との間のデータ転送を実行する。
【0033】
SRAM44は、揮発性のメモリである。SRAM44の記憶領域の一部は、例えば、ホスト2から受信したライトデータを一時的に記憶するライトバッファとして使用され得る。また、SRAM44の記憶領域の一部は、例えば、NAND型フラッシュメモリ5から読み出されたデータを一時的に記憶するリードバッファとしても使用され得る。SRAM44は、例えば、DRAM6と比べて、データの書き込みおよび読み出しの速度が速い。そのため、SRAM44の記憶領域の一部には、DRAM6に格納されている情報のうち、使用頻度の高い情報が一時的に格納されていてもよい。
【0034】
NANDインタフェース45は、NAND型フラッシュメモリ5へのアクセスを実行するインタフェース回路である。
【0035】
NANDインタフェース45は、NAND型フラッシュメモリ5を制御する回路である。NAND型フラッシュメモリ5が複数のNAND型フラッシュダイから構成されている場合、NANDインタフェース45は、複数のチャンネルを介してこれら複数のNAND型フラッシュメモリダイそれぞれと接続されていてもよい。
【0036】
ECCエンコード/デコード回路46は、データのエンコードと、データのデコードとを実行する回路である。ECCエンコード/デコード回路46は、NAND型フラッシュメモリ5にデータを書き込む際に、エンコード処理を実行する。エンコード処理において、ECCエンコード/デコード回路46は、書き込むべきデータにエラー訂正コード(ECC)を冗長コードとして付加する。ECCエンコード/デコード回路46は、NAND型フラッシュメモリ5からデータがリードされた際に、デコード処理を実行する。デコード処理において、ECCエンコード/デコード回路46は、NAND型フラッシュメモリ5から読み出されたデータに付加されたECCを使用して、このデータの誤り訂正処理を行う。
【0037】
DRAMインタフェース47は、DRAM6を制御する回路である。DRAMインタフェース47は、DRAM6にデータを格納し、またDRAM6に格納されているデータを読み出す。
【0038】
次に、NAND型フラッシュメモリ5の構成例について説明する。図2は、実施形態に係るメモリシステム3に含まれるNAND型フラッシュメモリ5の構成例を示すブロック図である。NAND型フラッシュメモリ5の記憶領域の一部は、ユーザデータ51と、システムデータ52とを記憶するために使用される。
【0039】
ユーザデータ51は、ホスト2から受信されたライトコマンドに基づいて、NAND型フラッシュメモリ5に書き込まれたデータである。NAND型フラッシュメモリ5に記憶されているユーザデータは、有効データと、無効データとに大別される。有効データは、論理アドレスに関連付けられている物理アドレスによって示される、NAND型フラッシュメモリ5における記憶位置に格納されているデータである。有効データは、後にホスト2からリードされる可能性があるデータである。無効データは、論理アドレスに関連付けられていない物理アドレスによって示される、NAND型フラッシュメモリ5における記憶位置に格納されているデータである。無効データは、もはやホスト2からリードされる可能性が無いデータである。
【0040】
システムデータ52は、メモリシステム3の管理のために使用されるデータである。システムデータ52は、管理情報とも称される。システムデータ52は、ヘルスデータを含む。ヘルスデータは、例えば、スマートヘルス情報と称される。ヘルスデータは、NAND型フラッシュメモリ5に書き込まれたデータの総量を示す情報を含む。
【0041】
次に、DRAM6の構成例について説明する。図3は、実施形態に係るメモリシステム3に含まれるDRAM6の構成例を示すブロック図である。DRAM6の記憶領域の一部は、L2Pテーブル61と、アクティブブロックリスト62と、フリーブロックリスト63とを記憶するために使用される。
【0042】
L2Pテーブル61は、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングをクラスタのような所定のサイズ毎に管理する。
【0043】
アクティブブロックリスト62は、少なくとも有効データを格納しているブロックであるアクティブブロックを管理するリストである。また、アクティブブロックリスト62は、アクティブブロックごとに、一つのブロックに格納可能なデータの総量に対する有効データの総量の割合を示す有効データ率を管理し得る。アクティブブロックリスト62は、アクティブブロックの各々の有効データ率を保持していてもよい。アクティブブロックの各々の有効データ率は、DRAM6のアクティブブロックリスト62で保持される代わりに、SRAM44において保持されていてもよい。アクティブブロックの各々の有効データ率が管理されている場合、コントローラ4は、データの書き換えが発生する度に、データが書き替えられたアクティブブロックの各々の有効データ率を更新する。あるいは、アクティブブロックの各々の有効データ率は、ガベージコレクション動作の度に、コントローラ4によって算出されていてもよい。
【0044】
フリーブロックリスト63は、有効データを格納していないブロックであるフリーブロックを管理するリストである。
【0045】
次に、CPU42の機能構成例について説明する。図4は、実施形態に係るメモリシステム3のコントローラ4に含まれるCPU42の機能構成例を示すブロック図である。CPU42は、ライト制御部421と、ライトアンプリフィケーション(WAF)算出部422と、ガベージコレクション(GC)制御部423とを含む。ライト制御部421、WAF算出部422、およびGC制御部423による処理は、CPU42がファームウェアを実行することによって処理されてもよいし、あるいは、専用のハードウェアによって処理されてもよい。
【0046】
ライト制御部421は、NAND型フラッシュメモリ5へのデータの書き込み動作を制御する。ライト制御部421は、NAND型フラッシュメモリ5にデータを書き込むための指示であるプログラムコマンドを生成し、生成したプログラムコマンドをNANDインタフェース45に発行する。ライト制御部421は、NAND型フラッシュメモリ5へのデータの書き込みが可能になったことに応じて、プログラムコマンドを生成する。
【0047】
ライト制御部421は、ホストインタフェース41を介して、ライトコマンドを受信する。ライトコマンドは、NAND型フラッシュメモリ5に書き込まれるべきライトデータに対応する論理アドレスと、ライトデータのサイズとを少なくとも指定する。ライト制御部421は、受信したライトコマンドに関連付けられたライトデータをホスト2から受信し、受信したライトデータをライトバッファ441に格納する。そして、ライトバッファ441に格納されている有効データの総量が最小書き込みサイズに達したことに応じて、ライト制御部421は、ライトデータが書き込まれる書き込み先ブロックにおける書き込み先記憶位置を決定し、書き込み先記憶位置にライトデータを書き込むためのプログラムコマンドを生成する。プログラムコマンドは、書き込み先記憶位置を示す物理アドレスと、書き込まれるべきユーザデータが格納されているライトバッファ441上の記憶位置を示すアドレスとを指定する。ライト制御部421は、生成したプログラムコマンドを図示しないコマンドキューおよびNANDインタフェース45を介して、NAND型フラッシュメモリ5に発行する。このようにして、ライト制御部421は、ライトコマンドに関連付けられたライトデータを書き込み先ブロック内の書き込み先記憶位置に書き込む。
【0048】
また、ライト制御部421は、メモリシステム3の状況に基づいて、データ書き込み動作において使用される書き込みモードを選択する。例えば、ライト制御部421は、メモリシステム3におけるフリーブロックの個数が閾値よりも大きい場合、ライト制御部421は、第2書き込みモードを選択する。この場合、ライト制御部421は、1ページ分のユーザデータがライトバッファ441に準備されたときに、プログラムコマンドを生成する。また、例えば、ライト制御部421は、メモリシステム3におけるフリーブロックの個数が、閾値以下である場合、ライト制御部421は、第1書き込みモードを選択する。この場合、ライト制御部421は、3ページ分のユーザデータがライトバッファ441に準備されたときに、プログラムコマンドを生成する。3ページ分のユーザデータをNAND型フラッシュメモリ5に書き込むためのプログラムコマンドは、一度に送信されてもよいし、複数回に分けて送信されてもよい。
【0049】
また、NAND型フラッシュメモリ5に書き込まれたデータを読み出すためのデータ読み出し動作は、不図示のリード制御部によって制御される。リード制御部は、ホスト2から受信されたリードコマンドに基づいて、データ読み出し動作を実行する。このとき、リード制御部は、NANDインタフェース45を介してNAND型フラッシュメモリ5に送信されるべき、リードコマンドを生成する。
【0050】
WAF算出部422は、ライトアンプリフィケーションを算出する。WAF算出部422は、ガベージコレクション動作が開始されたことに応じて、ライトアンプリフィケーション算出動作を開始する。
【0051】
WAF算出部422は、まず、NAND型フラッシュメモリ5からヘルスデータを読み出す。WAF算出部422は、読み出したヘルスデータから、NAND型フラッシュメモリ5に書き込まれたデータの総量を取得する。さらに、WAF算出部422は、例えば、読み出したヘルスデータから、ホスト2から受信されたライトコマンドに基づいてNAND型フラッシュメモリ5に書き込まれたデータの総量を取得する。WAF算出部422は、読み出したヘルスデータから取得した、NAND型フラッシュメモリ5に書き込まれたデータの総量を使用して、ホスト2から受信されたライトコマンドに基づいてNAND型フラッシュメモリ5に書き込まれたデータの総量を算出してもよい。
【0052】
GC制御部423は、ガベージコレクション動作を制御する。GC制御部423は、メモリシステム3におけるアクティブブロックの数(あるいはフリーブロックの数)に応じて、2種類のガベージコレクション動作(第1ガベージコレクション動作、あるいは第2ガベージコレクション動作)を実行する。
【0053】
GC制御部423は、メモリシステム3がアイドル状態に遷移すると、メモリシステム3におけるアクティブブロックの個数が第1範囲内であるか否かを判定する。第1範囲は、例えば、nmin以上且つnmax未満の範囲である。nminおよびnmaxは、いずれも自然数であり、nminはnmaxよりも小さい値である。GC制御部423は、アクティブブロックの個数が第1範囲内である場合、第1ガベージコレクション動作を実行する。第1ガベージコレクション動作を開始すると、GC制御部423は、WAF算出部422にWAFを算出させる。そして、GC制御部423は、メモリシステム3におけるアクティブブロックの数が増加するにつれて増加する第1閾値を算出する。第1閾値は、Vcthとも称される。具体的には、Vcthは、1以上の数を指数とするアクティブブロックの数の累乗を、1以上の数を指数とする複数のブロックの数の累乗で除した数に、WAFを乗じた値に基づいた百分率である。GC制御部423は、算出された閾値と、メモリシステム3におけるアクティブブロックの各々の有効データ率とを比較する。GC制御部423は、アクティブブロックのうち、有効データ率がVcthよりも小さいブロックの各々を選択する。そして、GC制御部423は、選択したブロックそれぞれに格納されている有効データをコピー先ブロックにコピーすることによって、選択したブロックの各々をフリーブロックにする。
【0054】
また、GC制御部423は、メモリシステム3におけるフリーブロックの数が閾値を下回ると、第1ガベージコレクションとは異なる、第2ガベージコレクション動作を実行する。GC制御部423は、例えば、回復されるべきフリーブロックの数を設定する。GC制御部423は、例えば、アクティブブロックのうち、有効データ率が低いブロックから順に選択する。GC制御部423は、選択したブロックそれぞれに格納されている有効データをコピー先ブロックにコピーすることによって、選択したブロックそれぞれをフリーブロックにする。ただし、GC制御部423は、設定された個数だけフリーブロックの数が回復されるまで、第2ガベージコレクション動作を続ける。
【0055】
以降では、第1ガベージコレクション動作を単にガベージコレクション動作と称し、第2ガベージコレクション動作を他のガベージコレクションと称する。
【0056】
次に、データ書き込み動作とガベージコレクション動作とにおけるデータの流れについて説明する。図5は、実施形態に係るメモリシステムにおいて実行される書き込み動作と、ガベージコレクション動作の例を示す図である。
【0057】
まず、データ書き込み動作について説明する。ライト制御部421は、ホスト2から受信されたライトコマンドに関連付けられたユーザデータを受信し、受信されたユーザデータをライトバッファ441に一時的に格納する。そして、ライト制御部421は、格納されたユーザデータを書き込み先ブロックに書き込む。書き込みが完了すると、コントローラ4は、処理が完了したライトコマンドに対応する完了応答をホスト2に送信する。
【0058】
ユーザデータが書き込まれることによって、書き込み先ブロックが新たなユーザデータを書き込むことができないフル状態になると、コントローラ4は、このブロックの書き込み先ブロックへの割り当てを解除して、アクティブブロックリスト62に登録する。あるいは、書き込み先ブロックに割り当てられたときに、このブロックは、アクティブブロックリスト62に登録されていてもよい。
【0059】
新たなデータ書き込み動作が生じたときに書き込み先ブロックにブロックが割り当てられていない場合、ライト制御部421は、フリーブロックリスト63から任意のブロックを選択し、書き込み先ブロックに割り当てる。このとき、ライト制御部421は、フリーブロックの各々のプログラム/イレーズサイクルを参照してもよい。例えば、ライト制御部421は、プログラム/イレーズサイクルの進みが遅いブロックである、比較的寿命が長いブロックを選択して、書き込み先ブロックとして割り当てる。
【0060】
次いで、ガベージコレクション動作について説明する。
【0061】
GC制御部423は、アクティブブロックリスト62に登録されているアクティブブロックのうち、有効データ率がVcthよりも小さいという条件を満たすブロックを全て、ガベージコレクション対象ブロックとして選択する。GC制御部423は、例えば、ガベージコレクション動作において、アクティブブロックの各々の有効データ率を算出することによって、アクティブブロックの各々の有効データ率を特定する。あるいは、GC制御部423は、メモリシステム3において管理されているアクティブブロックの各々の有効データ率を参照することによって、有効データ率を特定する。
【0062】
条件を満たすブロックが存在しなかった場合、GC制御部423は、ガベージコレクション動作を終了する。
【0063】
条件を満たす一つ以上のブロックが存在する場合、GC制御部423は、条件を満たす一つ以上のブロックの各々を、一つ以上のガベージコレクション対象ブロックとして選択する。選択されたブロックは、コピー元ブロックとして割り当てられる。また、コピー先ブロックに割り当てられているブロックが無い場合、GC制御部423は、フリーブロックリスト63から一つ以上のフリーブロックを選択して、コピー先ブロックとして割り当てる。
【0064】
そして、GC制御部423は、ガベージコレクション対象ブロックに格納されている有効データをコピー先ブロックにコピーする。これによって、ガベージコレクション対象ブロックに格納されている有効データは、無効データとなる。そして、格納されているデータが全て無効データとなったガベージコレクション対象ブロックは、データ消去動作が実行された後、フリーブロックリスト63に返却される。また、ブロックに対するデータ消去動作は、フリーブロックリスト63に登録されているブロックが、書き込み先ブロックあるいはコピー先ブロックとして割り当てられる直前に実行されてもよい。
【0065】
データがコピーされることによって、フル状態になったコピー先ブロックは、コピー先ブロックへの割り当てを解除され、アクティブブロックリスト62に登録される。あるいは、このブロックは、コピー先ブロックとして割り当てられた際に、アクティブブロックリスト62に登録されていてもよい。
【0066】
コピー先ブロックへの有効データのコピーの際には、例えば、コントローラ4は、TLCモードを使用して、コピー先ブロックにデータが書き込まれる。この場合、コピー先ブロックに割り当てられるブロックは、TLCモードに対応するブロックが選択される。このとき、コピー元ブロックに格納されている有効データがSLCモードを使用して書き込まれていたデータであった場合、コントローラ4は、TLCモードでコピー先ブロックにデータをコピーすることによって、このデータを格納するために使用されるブロックの数を減らすことができる。
【0067】
しかし、ガベージコレクション動作に基づいたコピー先ブロックへのデータのコピーは、ホスト2からの要求に基づいたNAND型フラッシュメモリ5へのデータの書き込み以外の、NAND型フラッシュメモリ5へのデータの書き込みである。そのため、ガベージコレクション動作に基づいたデータのコピーが実行されることによって、メモリシステム3のWAFは、増加する。
【0068】
次に、ガベージコレクション動作において使用される閾値であるVcthについて説明する。図6は、実施形態に係るメモリシステムにおける第1閾値とアクティブブロックの数との間の関係について示す図である。
【0069】
図6において示されるグラフの縦軸は、ガベージコレクション動作において使用される閾値(Vcthと称する)を示す。また、横軸は、メモリシステム3におけるアクティブブロックの数であるnを示す。Vcthは、以下の式1によって算出される。
Vcth=100×z×WAF×(n-nmin/(N-nmin…式1
式1におけるWAFは、メモリシステム3の現在のライトアンプリフィケーションである。
【0070】
Nは、メモリシステム3において管理されるブロックの総数を示す。ブロックの総数であるNは、アクティブブロックの数と、フリーブロックの数との合計である。すなわち、ブロックの総数であるNからアクティブブロックの数であるnを減算した数は、フリーブロックの数を表すことになる。
【0071】
minは、ガベージコレクション開始閾値であり、第1範囲の下端の値を示す。
【0072】
maxは、ガベージコレクション終了閾値であり、第1範囲の上端の値を示す。
【0073】
リリースサイズは、第1範囲に対応するブロックの数を示す。リリースサイズは、N-(nmin+オフセット+GC threshold)によって表され得る。オフセットは、アクティブブロックの数がnmaxを超えた後、他のガベージコレクション動作が開始されるまでの猶予である。オフセットは、設定されていなくともよい(例えば、0であってもよい)。GC thresholdは、他のガベージコレクション動作が開始されるか否かを判定するために使用される閾値である。GC制御部423は、メモリシステム3におけるフリーブロックの数がGC threshold以下になったことに応じて、他のガベージコレクション動作を実行する。
【0074】
zは、正規化値である。Vcthが、百分率の値に収まるように予め設定された値である。zは、例えば、メモリシステム3の動作中で、固定された値である。
【0075】
xは、1以上の数である。xは、例えば、2あるいは3などの値に設定される。
【0076】
βは、フリーブロック供給制御変数である。βは、WAFの値に応じて、Vcthを調整するために使用される値である。βは、例えば、20%である。また、Vcthをより大きい値に調整するために使用されるフリーブロック供給制御変数と、Vcthをより小さい値に調整するために使用されるフリーブロック供給制御変数とを異なる値に設定してもよい。
【0077】
アクティブブロックの数であるnが、0以上nmax+オフセット未満までの間、コントローラ4のライト制御部421は、SLCモードを使用して、NAND型フラッシュメモリ5へのデータの書き込みを実行する。SLCモードを使用して書き込み動作を実行している間、メモリシステム3は、ホスト2から受信されたライトコマンドを比較的低いレイテンシで処理することができる。
【0078】
アクティブブロックの数であるnが、nmax+オフセット以上になると、コントローラ4のライト制御部421は、TLCモードを使用して、NAND型フラッシュメモリ5へのデータの書き込みを実行する。TLCモードを使用して書き込み動作を実行している間、メモリシステム3は、SLCモードを使用して書き込み動作を実行していた場合と比べて、ホスト2から受信されたライトコマンドを比較的高いレイテンシで処理することになる。
【0079】
また、フリーブロックの数がGC thresholdを下回っているとき、GC制御部423は、他のガベージコレクション動作を実行する。アクティブブロックの数がnmax+オフセット以上であるとき、フリーブロックの数はGC threshold以下となるため、コントローラ4は、NAND型フラッシュメモリ5へのデータの書き込みにTLCモードを使用するとき、他のガベージコレクション動作を実行する。GC制御部423は、フリーブロックの数がGC thresholdを下回っており、且つ閾値以上である間、バックグラウンドで他のガベージコレクション動作を実行する。つまり、GC制御部423は、ホスト2から受信されたライトコマンドに基づいたデータ書き込みが実行されていないときに、他のガベージコレクション動作を実行する。この閾値が、GC thresholdよりも小さい値である。
【0080】
また、アクティブブロックの数であるnがnmax+オフセット以上であり、且つフリーブロックの数が閾値未満である間、コントローラ4のGC制御部423は、フォアグラウンドで他のガベージコレクション動作を実行する。この間、メモリシステム3は、ホスト2から受信されたライトコマンドに基づいた書き込み動作と並行して、他のガベージコレクション動作を実行する。そのため、メモリシステム3は、単にTLCモードで書き込み動作を実行している間と比べて、さらに高いレイテンシで、ホスト2から受信されたライトコマンドを処理することになる。
【0081】
そして、アクティブブロックの数であるnが、リリースサイズに対応する第1範囲内にある間、コントローラ4のGC制御部423は、メモリシステム3がアイドル状態に遷移する度に、ガベージコレクション動作を実行する。
【0082】
このとき、コントローラ4のWAF算出部422は、メモリシステム3におけるWAFを算出する。そして、コントローラ4は、算出したWAFと、メモリシステム3におけるアクティブブロックの数nとを使用して、Vcthを算出する。
【0083】
ガベージコレクション動作において、GC制御部423は、有効データ率がVcth以下であるブロックの各々を、ガベージコレクション対象ブロックとして選択する。そのため、算出されたVcthの値が大きいほど、多くのアクティブブロックがガベージコレクション対象ブロックとして選択されることになる。
【0084】
図6のグラフに描かれている曲線は、WAF=WAF目標値における、Vcth=100×z×WAF×(n-nmin/(N-nminによって表される曲線である。ここで、nは、第1範囲内の値である。つまり、nは、nmin以上であり、且つnmax以下である。また、xが1以上の数であるため、Vcthの値は、アクティブブロックの数であるnが大きくなるにつれて、より大きい値になる。
【0085】
このことから、メモリシステム3におけるアクティブブロックの数が少ない間は、有効データ率の低いブロックが、コピー元ブロックとして選択される。そして、アクティブブロックの数が増えるにつれて、有効データ率の高いブロックが、コピー元ブロックとして選択されるようになる。つまり、ガベージコレクション動作において、コピーされる有効データの割合が低いブロックから、コピー元ブロックとして選択され、フリーブロックとなる。
【0086】
GC制御部423は、図6において、Vcth=50%を算出する。
【0087】
そして、GC制御部423は、WAFの値と、WAF目標値とを比較して、算出したVcthを調整する。WAFがWAF目標値と等しい場合、GC制御部423は、Vcth=50%のまま、以降のガベージコレクション動作を実行する。
【0088】
WAFの値がWAF目標値よりも小さい場合、GC制御部423は、算出されたVcthにβを加算する。例えば、Vcthは、70%(=50%+20%)になる。これによって、βが加算されていないVcthを使用した場合と比べて、コピー元ブロックとして選択されるブロックの個数は、増加し得る。このとき、メモリシステム3のWAFがWAF目標値よりも小さいため、コピーされるデータの総量が増加することは許容される。
【0089】
また、WAFの値がWAF目標値よりも大きい場合、GC制御部423は、算出されたVcthからβを減算する。例えば、Vcthは、30%(=50%-20%)になる。これによって、コピー元ブロックとして選択されるブロックの個数は、減少し得る。これにより、コピーされるデータの総量が減少するため、メモリシステム3のWAFは、増加が抑制され、WAF目標値に近づきやすくなる。
【0090】
これにより、メモリシステム3のWAFがWAF目標値よりも小さい場合には、WAFが増加されやすくなるようにVcthが調整される。そして、WAFがWAF目標値よりも大きい場合には、WAFの増加が抑制されるようにVcthが調整される。よって、コントローラ4は、Vcthを調整することによって、WAFがWAF目標値から外れないように制御することができる。
【0091】
ここでは、Vcthを調整する方法として、Vcthにβを加算する、あるいはVcthからβを減算する手法について説明したが、Vcthは、他の手法で調整されてもよい。例えば、Vcthに1よりも大きい数を乗じることによってVcthを増加させ、Vcthに0より大きく且つ1未満の数を乗ずることによってVcthを減少させてもよい。
【0092】
次に、WAFと、WAF目標値とを比較した結果のケースごとに、Vcthについて説明する。図7は、実施形態に係るメモリシステムにおける、WAFが目標値と等しい場合の、第1閾値とアクティブブロックの数との間の関係について示す図である。ここで、メモリシステム3におけるアクティブブロックの数は、n1である。
【0093】
WAFがWAF目標値と等しいため、図7では、図6と同じ曲線が描かれている。ここで、アクティブブロックの数がn1であるとき、50%を示すVcthが算出される。
【0094】
このとき、WAFがWAF目標値と等しいため、GC制御部423は、算出されたVcthを使用して、ガベージコレクション対象ブロックを選択する。つまり、有効データ率が50%よりも小さいブロックのそれぞれを、ガベージコレクション対象ブロックとして選択する。そして、GC制御部423は、選択されたブロックの各々に格納されている有効データをコピー先ブロックにコピーする。
【0095】
このように、WAFがWAF目標値と等しい場合、コントローラ4は、ガベージコレクション動作によってコピーされるデータの総量を増やす必要もなく、且つ増加を抑制する必要もない。そのため、コントローラ4は、Vcthを調整せず、算出されたVcthをそのまま使用して、ガベージコレクション対象ブロックを選択する。
【0096】
次に、WAFがWAF目標値よりも小さい場合について説明する。図8は、実施形態に係るメモリシステムにおける、WAFが目標値よりも小さい場合の、第1閾値とアクティブブロックの数との間の関係について示す図である。ここで、メモリシステム3におけるアクティブブロックの数は、n2である。
【0097】
図8において、WAFがWAF目標値と等しいときのVcthを示す曲線が点線で示されている。また、WAFがWAF目標値よりも小さいときのVcthを示す曲線が実線で示されている。Vcthは、WAFに比例している。そのため、アクティブブロックの数が同じである場合、WAFが小さいほど、算出されるVcthの値は、より小さい値になる。
【0098】
ここで、アクティブブロックの数がn2であるとき、10%を示すVcthが算出される。
【0099】
このとき、GC制御部423は、WAFがWAF目標値よりも小さいため、Vcthをより大きい値にするように調整する。具体的には、GC制御部423は、算出されたVcthに、20%加算する。調整後のVcthは、30%(=10%+20%)である。
【0100】
そして、GC制御部423は、調整後のVcthを使用して、ガベージコレクション対象ブロックを選択する。つまり、GC制御部423は、アクティブブロックのうち、有効データ率が30%よりも小さいブロックそれぞれを、ガベージコレクション対象ブロックとして選択する。
【0101】
このように、コントローラ4は、WAFがWAF目標値よりも小さい場合、Vcthがより大きい値になるように調整する。これにより、コントローラ4は、調整前のVcthを使用した場合よりもガベージコレクション対象ブロックとして選択されるブロックが多くなるようにする。このことは、WAFがWAF目標値よりも小さいために、コピーされるデータの総量が増加することを許容することができるためである。
【0102】
次に、WAFがWAF目標値よりも大きい場合について説明する。図9は、実施形態に係るメモリシステムにおける、WAFが目標値よりも大きい場合の、第1閾値とアクティブブロックの数との間の関係について示す図である。ここで、メモリシステム3におけるアクティブブロックの数は、n3である。
【0103】
図9には、WAFがWAF目標値と等しいときのVcthを示す曲線が点線で示されている。また、WAFがWAF目標値よりも大きいときのVcthを示す曲線が実線で示されている。Vcthは、WAFに比例している。そのため、アクティブブロックの数が同じである場合、WAFが大きいほど、Vcthの値も大きくなる。
【0104】
ここで、アクティブブロックの数がn3であるとき、70%を示すVcthが算出される。
【0105】
このとき、GC制御部423は、WAFがWAF目標値よりも大きいため、Vcthをより小さい値にするように調整する。具体的には、GC制御部423は、算出されたVcthに、20%減算する。調整後のVcthは、50%(=70%-20%)である。
【0106】
そして、GC制御部423は、調整後のVcthを使用して、ガベージコレクション対象ブロックを選択する。つまり、GC制御部423は、アクティブブロックのうち、有効データ率が50%よりも小さいブロックそれぞれを、ガベージコレクション対象ブロックとして選択する。
【0107】
このように、コントローラ4は、WAFがWAF目標値よりも大きい場合、Vcthがより小さい値になるように調整する。これにより、コントローラ4は、調整前のVcthを使用した場合よりもガベージコレクション対象ブロックとして選択されるブロックの数が少なくなるようにする。そして、コピー元ブロックとして選択されるブロックの数を少なくすることで、WAFの増加を抑制することができる。
【0108】
次に、アイドル状態遷移動作について説明する。図10は、実施形態に係るメモリシステムにおいて実行されるアイドル状態遷移動作の手順を示すフローチャートである。コントローラ4は、例えば、一定時間の間、ホスト2からI/Oコマンドを受信していないことに応じて、メモリシステム3をアイドル状態に遷移させるためのアイドル状態遷移動作を開始する。
【0109】
コントローラ4は、メモリシステム3をアイドル状態に遷移させる(ステップS101)。
【0110】
コントローラ4は、メモリシステム3におけるアクティブブロックの数が第1範囲内にあるか否かを判定する(ステップS102)。
【0111】
アクティブブロックの数が第1範囲内にない場合(S102でNo)、コントローラ4は、アイドル状態遷移動作を終了する。
【0112】
アクティブブロックの数が第1範囲内にある場合(S102でYes)、コントローラ4は、ガベージコレクション動作を実行する(ステップS103)。
【0113】
このように、コントローラ4は、メモリシステム3がアイドル状態に遷移する度に、ガベージコレクション動作を実行するか否かを判定する。
【0114】
次に、図10のS103におけるガベージコレクション動作の詳細について説明する。図11は、実施形態に係るメモリシステムにおいて実行されるガベージコレクション動作の手順を示すフローチャートである。コントローラ4は、メモリシステム3がアイドル状態に遷移したときに、アクティブブロックの数が第1範囲内にある場合(図10のS102でYes)、ガベージコレクション動作を開始する。
【0115】
コントローラ4は、メモリシステム3におけるライトアンプリフィケーション(WAF)を算出する(ステップS201)。
【0116】
コントローラ4は、S201で算出したWAFおよびメモリシステム3におけるアクティブブロックの数を使用して、Vcthを算出する(ステップS202)。
【0117】
コントローラ4は、S201で算出したWAFと、WAF目標値と比較する(ステップS203)。WAF目標値は、予め設定された値である。
【0118】
算出したWAFがWAF目標値よりも小さい場合(S203でWAF<WAF目標値)は、コントローラ4は、S202で算出したVcthを増加させるように調整する(ステップS204)。例えば、コントローラ4は、Vcthにβを加算する。
【0119】
算出したWAFがWAF目標値よりも大きい場合(S203でWAF>WAF目標値)、コントローラ4は、S202で算出したVcthを減少させるように調整する(ステップS205)。例えば、コントローラ4は、Vcthからβを減算する。
【0120】
また、算出したWAFがWAF目標値と等しい場合、コントローラ4は、S202で算出したVcthをそのまま使用する。
【0121】
コントローラ4は、各アクティブブロックの有効データ率を取得する(ステップS206)。例えば、コントローラ4は、アクティブブロックリスト62を参照して、アクティブブロックそれぞれの有効データ率を特定する。あるいは、コントローラ4は、アクティブブロックの各々を参照して、有効データ率を算出する。
【0122】
コントローラ4は、S206で取得した有効データ率に基づいて、有効データ率がVcthを下回っているアクティブブロックが存在するか否かを判定する(ステップS207)。
【0123】
有効データ率がVcthを下回っているアクティブブロックが存在しない場合(S207でNo)、コントローラ4は、ガベージコレクション動作を終了する。
【0124】
有効データ率がVcthを下回っているアクティブブロックが存在する場合(S207でYes)、コントローラ4は、有効データ率がVcthを下回っているアクティブブロックの各々を、ガベージコレクション対象ブロックとして選択する(ステップS208)。
【0125】
コントローラ4は、S208で選択したブロックの各々に格納されている有効データを、コピー先ブロックにコピーする(ステップS209)。これにより、S208で選択したブロックの各々は、有効データを格納していないフリーブロックになる。
【0126】
これにより、コントローラ4は、メモリシステム3のWAFと、アクティブブロックの数とに基づいて、Vcthを算出する。そして、コントローラ4は、WAFと、WAF目標値との比較結果に基づいて、Vcthの値を調整する。コントローラ4は、このVcthを使用して、ガベージコレクション対象ブロックを選択する。これによって、コントローラ4は、メモリシステム3のWAFと、アクティブブロックの数とに応じて、ガベージコレクション動作によってコピーされるデータの量を制御することができる。
【0127】
次に、図11のS201におけるWAFを算出する動作の詳細について説明する。図12は、実施形態に係るメモリシステムにおいて実行されるWAF算出動作の手順を示すフローチャートである。コントローラ4は、ガベージコレクション動作を開始する際に、WAF算出動作を開始する。
【0128】
コントローラ4は、NAND型フラッシュメモリ5からヘルスデータを読み出す(ステップS301)。
【0129】
コントローラ4は、S301で読み出したヘルスデータに含まれる、NAND型フラッシュメモリ5に書き込まれたデータの総量に基づいて、WAFを算出する(ステップS302)。具体的には、コントローラ4は、ホスト2からの要求に基づいてNAND型フラッシュメモリ5に書き込まれたデータの総量を、NAND型フラッシュメモリ5に書き込まれたデータの総量で除することによって、WAFを算出する。ホスト2からの要求に基づいてNAND型フラッシュメモリ5に書き込まれたデータの総量は、例えば、S301で読み出されたヘルスデータに含まれていてもよい。
【0130】
これにより、コントローラ4は、ガベージコレクション動作を実行する際に、メモリシステム3のWAFを算出する。
【0131】
以上説明したように、実施形態によれば、コントローラ4は、メモリシステム3がアイドル状態に遷移したときに、アクティブブロックの数が第1範囲内にある場合、ガベージコレクション動作を開始する。コントローラ4は、ガベージコレクション動作を開始すると、WAFと、Vcthとを算出する。そして、コントローラ4は、算出したWAFとWAF目標値との比較結果に基づいて、算出したVcthを調整する。コントローラ4は、アクティブブロックのうち、有効データ率がこのVcthよりも小さいブロックの各々を選択し、選択したブロックの各々に格納されている有効データをコピーすることによって、選択したブロックをフリーブロックにする。これにより、コントローラ4は、メモリシステム3のWAFおよびアクティブブロックの数に基づいて、ガベージコレクション動作を好適に実行することができる。例えば、Vcthが30%である場合、コントローラ4は、有効データ率が30%よりも小さいブロックだけを選択し、選択したブロックに格納されている有効データをコピーすることによって、選択したブロックをフリーブロックにする。これにより、コピーされるデータの量が抑制され、WAFの増加を抑制できる。
【0132】
具体的には、Vcthが第1範囲内にあるアクティブブロックの数の指数関数であるため、コントローラ4は、アクティブブロックの数が増えるほど、より多くのブロックがガベージコレクション対象のブロックとして選択されることになる。そのため、コントローラ4は、アクティブブロックの数が多いほど、よりフリーブロックの数を回復するようにガベージコレクション動作を制御することができる。
【0133】
また、コントローラ4は、メモリシステム3のWAFがWAF目標値よりも小さい場合にVcthがより大きい値になるように調整する。これにより、コントローラ4は、ガベージコレクション動作によるフリーブロックの供給数を増加させることができる。また、コントローラ4は、より多くのデータをコピーすることになるためにWAFを増加させて、WAFをWAF目標値に近づけることができる。
【0134】
またさらに、コントローラ4は、WAFがWAF目標値よりも大きい場合にVcthがより小さい値になるように調整する。これにより、コントローラ4は、ガベージコレクション動作によるフリーブロックの供給数を抑制することができる。また、コントローラ4は、コピーするデータの量を減らすことができ、WAFをWAF目標値に近づけることができる。
【0135】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、更新を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0136】
1…情報処理システム、2…ホスト、3…メモリシステム、4…コントローラ、5…NAND型フラッシュメモリ、6…DRAM、7…バス、40…内部バス、41…ホストインタフェース、42…CPU、43…DMAC、44…SRAM、45…NANDインタフェース、46…ECCエンコード/デコード回路、47…DRAMインタフェース、50…メモリセルアレイ、51…ユーザデータ、52…システムデータ、61…L2Pテーブル、62…アクティブブロックリスト、63…フリーブロックリスト、421…ライト制御部、422…WAF算出部、423…GC制御部、441…ライトバッファ。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12