(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024085796
(43)【公開日】2024-06-27
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
G06F 12/00 20060101AFI20240620BHJP
【FI】
G06F12/00 550Z
G06F12/00 597U
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022200531
(22)【出願日】2022-12-15
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】田中 憲
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160NA03
(57)【要約】
【課題】消去回数を平準化するための処理量を動的に制御できるメモリシステムを実現する。
【解決手段】コントローラは、最大消去回数と最小消去回数との間の第1の差が第1の閾値よりも大きく且つ第2の閾値以下である場合、コピー動作を第1のモードに設定し、第1の差が第2の閾値よりも大きい場合、コピー動作を第2のモードに設定する。コントローラは、第1のモードにおいて、第1書き込み量に対する第2書き込み量の割合が、第1の割合になるように前記コピー動作を実行する。第1書き込み量は、前記ホストから受信されるライトコマンドに基づいて不揮発性メモリに書き込まれるデータの量であり、第2書き込み量は、コピー動作によって不揮発性メモリにコピーされるデータの量である。コントローラは、第2のモードにおいて、前記割合が第1の割合よりも大きい第2の割合になるように、コピー動作を実行する。
【選択図】
図8
【特許請求の範囲】
【請求項1】
ホストに接続可能なメモリシステムであって、
各々がデータ消去動作の単位である複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、有効データが格納されているブロックのうち、最も消去回数が少ない第1のブロックに格納されている有効データを、有効データが格納されておらず且つ前記第1のブロックよりも消去回数の多い第2のブロックにコピーするコピー動作を実行するように構成されたコントローラと、を具備し、
前記コントローラは、
前記複数のブロックそれぞれの消去回数のうちの最大消去回数と最小消去回数との間の第1の差を、第1の閾値および前記第1の閾値より大きい第2の閾値の各々と比較し、
前記第1の差が前記第1の閾値よりも大きく且つ前記第2の閾値以下である場合、前記コピー動作を第1のモードに設定し、
前記第1の差が前記第2の閾値よりも大きい場合、前記コピー動作を第2のモードに設定し、
前記第1のモードにおいて、
第1書き込み量に対する第2書き込み量の割合が、第1の割合になるように前記コピー動作を実行し、
前記第1書き込み量は、前記ホストから受信されるライトコマンドに基づいて前記不揮発性メモリに書き込まれるデータの量であり、前記第2書き込み量は、前記コピー動作によって前記不揮発性メモリにコピーされるデータの量であり、
前記第2のモードにおいて、
前記割合が前記第1の割合よりも大きい第2の割合になるように、前記コピー動作を実行するように構成される、
メモリシステム。
【請求項2】
前記コントローラは、
前記第1のモードにおいて、
前記第1書き込み量の累積値が第3の閾値を上回った場合、前記コピー動作を実行し、
前記コピー動作を実行した後に前記累積値を初期値にリセットし、
前記第2のモードにおいて、
前記累積値が前記第3の閾値よりも小さい第4の閾値を上回った場合、前記コピー動作を実行し、
前記コピー動作を実行した後に前記累積値を前記初期値にリセットするように構成される、
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、
前記第1のモードにおいて、
前記累積値が前記第3の閾値を上回った場合、前記コピー動作を実行して第1の量のデータをコピーし、
前記第2のモードにおいて、
前記累積値が前記第4の閾値を上回った場合、前記コピー動作を実行して前記第1の量のデータをコピーするように構成される、
請求項2に記載のメモリシステム。
【請求項4】
前記コントローラは、
前記第1のモードにおいて、
前記第1書き込み量の累積値が第3の閾値を上回った場合、前記コピー動作を実行して第1の量のデータをコピーし、
前記コピー動作を実行した後に前記累積値をリセットし、
前記第2のモードにおいて、
前記累積値が前記第3の閾値を上回った場合、前記コピー動作を実行して前記第1の量よりも多い第2の量のデータをコピーし、
前記コピー動作を実行した後に前記累積値をリセットするように構成される、
請求項1に記載のメモリシステム。
【請求項5】
前記コントローラは、
有効データが格納されていないブロックに対するデータ消去動作を実行し、前記データ消去動作が実行されたブロックを、前記ホストから受信されたデータが書き込まれるべき書き込み先ブロックとして割り当て、
前記データ消去動作の実行に応じ、
前記最大消去回数と前記最小消去回数との間の前記第1の差を取得し、
前記取得した第1の差を前記第1の閾値および前記第2の閾値の各々と比較するように構成される、
請求項1に記載のメモリシステム。
【請求項6】
ホストに接続可能なメモリシステムであって、
各々がデータ消去動作の単位である複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続され、有効データが格納されているブロックのうち、最も消去回数が少ない第1のブロックに格納されている有効データを、有効データが格納されておらず且つ前記第1のブロックよりも消去回数が大きい第2のブロックにコピーするコピー動作を実行するように構成されたコントローラと、を具備し、
前記コントローラは、
前記複数のブロックそれぞれの消去回数のうちの最大消去回数と最小消去回数との間の第1の差を、第1の閾値と比較し、
前記最大消去回数あるいは前記最小消去回数のいずれか一方と、前記複数のブロックそれぞれの消去回数の平均値との間の第2の差を、第5の閾値と比較し
前記第1の差が前記第1の閾値よりも大きく、且つ前記第2の差が前記第5の閾値以下である場合、前記コピー動作を第1のモードに設定し、
前記第1の差が前記第1の閾値よりも大きく、且つ前記第2の差が前記第5の閾値よりも大きい場合、前記コピー動作を第2のモードに設定し、
前記第1のモードにおいて、
第1書き込み量に対する第2書き込み量の割合が、第1の割合になるように前記コピー動作を実行し、
前記第1書き込み量は、前記ホストから受信されるライトコマンドに基づいて前記不揮発性メモリに書き込まれるデータの量であり、前記第2書き込み量は、前記コピー動作によって前記不揮発性メモリにコピーされるデータの量であり、
前記第2のモードにおいて、
前記割合が前記第1の割合よりも大きい第2の割合になるように、前記コピー動作を実行するように構成される、
メモリシステム。
【請求項7】
前記コントローラは、
前記第1のモードにおいて、
前記第1書き込み量の累積値が第3の閾値を上回った場合、前記コピー動作を実行し、
前記コピー動作を実行した後に前記累積値をリセットし、
前記第2のモードにおいて、
前記累積値が前記第3の閾値よりも小さい第4の閾値を上回った場合、前記コピー動作を実行し、
前記コピー動作を実行した後に前記累積値をリセットするように構成される、
請求項6に記載のメモリシステム。
【請求項8】
前記コントローラは、
前記第1のモードにおいて、
前記累積値が前記第3の閾値を上回った場合、前記コピー動作を実行して第1の量のデータをコピーし、
前記第2のモードにおいて、
前記累積値が前記第4の閾値を上回った場合、前記コピー動作を実行して前記第1の量のデータをコピーするように構成される、
請求項7に記載のメモリシステム。
【請求項9】
前記コントローラは、
前記第1のモードにおいて、
前記第1書き込み量の累積値が第3の閾値を上回った場合、前記コピー動作を実行して第1の量のデータをコピーし、
前記コピー動作を実行した後に前記累積値をリセットし、
前記第2のモードにおいて、
前記累積値が前記第3の閾値を上回った場合、前記コピー動作を実行して前記第1の量よりも多い第2の量のデータをコピーし、
前記コピー動作を実行した後に前記累積値をリセットするように構成される、
請求項6に記載のメモリシステム。
【請求項10】
前記コントローラは、
有効データが格納されていないブロックに対するデータ消去動作を実行し、前記データ消去動作が実行されたブロックを、前記ホストから受信されたデータが書き込まれるべき書き込み先ブロックとして割り当て、
前記データ消去動作の実行に応じ、
前記最大消去回数と前記最小消去回数との間の前記第1の差と、前記複数のブロックそれぞれの消去回数の平均値と、前記最大消去回数あるいは前記最小消去回数のいずれか一方との間の第2の差とを取得し、
前記取得した第1の差を前記第1の閾値と比較し、
前記取得した第2の差を前記第5の閾値と比較するように構成される、
請求項6に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。不揮発性メモリでは、データの書き込みはページの単位で実行される。一方、データの消去は、複数のページを含むブロックの単位で実行される。メモリシステムの寿命を過度に短縮させないために、複数のブロックの消去回数を平準化するための処理量を動的に制御できる技術が必要とされている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2015-191294号公報
【特許文献2】特許第4790007号公報
【特許文献3】米国特許第10,997,069号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の一実施形態が解決しようとする課題は、消去回数を平準化するための処理量を動的に制御できるメモリシステムを提供することである。
【課題を解決するための手段】
【0005】
実施形態によれば、メモリシステムは、ホストに接続可能である。前記メモリシステムは、不揮発性メモリと、コントローラとを具備する。前記不揮発性メモリは、各々がデータ消去動作の単位である複数のブロックを含む。コントローラは、前記不揮発性メモリに電気的に接続され、有効データが格納されているブロックのうち、最も消去回数が少ない第1のブロックに格納されている有効データを、有効データが格納されておらず且つ前記第1のブロックよりも消去回数の多い第2のブロックにコピーするコピー動作を実行するように構成されている。前記コントローラは、前記複数のブロックそれぞれの消去回数のうちの最大消去回数と最小消去回数との間の第1の差を、第1の閾値および前記第1の閾値より大きい第2の閾値の各々と比較する。前記コントローラは、前記第1の差が前記第1の閾値よりも大きく且つ前記第2の閾値以下である場合、前記コピー動作を第1のモードに設定する。前記コントローラは、前記第1の差が前記第2の閾値よりも大きい場合、前記コピー動作を第2のモードに設定する。前記コントローラは、前記第1のモードにおいて、第1書き込み量に対する第2書き込み量の割合が、第1の割合になるように前記コピー動作を実行する。前記第1書き込み量は、前記ホストから受信されるライトコマンドに基づいて前記不揮発性メモリに書き込まれるデータの量であり、前記第2書き込み量は、前記コピー動作によって前記不揮発性メモリにコピーされるデータの量である。前記コントローラは、前記第2のモードにおいて、前記割合が前記第1の割合よりも大きい第2の割合になるように、前記コピー動作を実行する。
【図面の簡単な説明】
【0006】
【
図1】第1実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図。
【
図2】第1実施形態に係るメモリシステムの不揮発性メモリに含まれる複数のメモリダイの各々の構成例を示すブロック図。
【
図3】第1実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の例を示す図。
【
図4】第1実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作で使用される各設定値を示す図。
【
図5】第1実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作が通常モードに設定される場合におけるブロックの消去回数の分布を示す図。
【
図6】第1実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作が加速モードに設定される場合におけるブロックの消去回数の分布を示す図。
【
図7】比較例に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順を示すシーケンス図。
【
図8】第1実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順を示すシーケンス図。
【
図9A】第1実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順の一部分を示すフローチャート。
【
図9B】第1実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順の他の部分を示すフローチャート。
【
図10】第2実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作で使用される各設定値を示す図。
【
図11】第2実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順を示すシーケンス図。
【
図12A】第2実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順の一部分を示すフローチャート。
【
図12B】第2実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順の他の部分を示すフローチャート。
【
図13】第3実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作で使用される各設定値を示す図。
【
図14】第3実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作が通常モードに設定される第1の場合におけるブロックの消去回数の分布を示す図。
【
図15】第3実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作が通常モードに設定される第2の場合におけるブロックの消去回数の分布を示す図。
【
図16】第3実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作が加速モードに設定される場合におけるブロックの消去回数の分布を示す図。
【
図17】第3実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順を示すシーケンス図。
【
図18A】第3実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順の一部分を示すフローチャート。
【
図18B】第3実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順の他の部分を示すフローチャート。
【
図19】第4実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作で使用される各設定値を示す図。
【
図20】第4実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順を示すシーケンス図。
【
図21A】第4実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順の一部分を示すフローチャート。
【
図21B】第4実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順の他の部分を示すフローチャート。
【発明を実施するための形態】
【0007】
以下、図面を参照して、各実施形態を説明する。
【0008】
以下では、各実施形態に係るメモリシステムがソリッドステートドライブ(SSD)として実現されている場合を想定する。また、メモリシステムは、ユニバーサルフラッシュストレージメモリ(UFSメモリ)として実現されていてもよく、その場合は下記の実施形態のSSDをUFSメモリと読み替え可能である。
【0009】
(第1実施形態)
図1は、第1実施形態に係るメモリシステムを含む情報処理システム1の構成例を示すブロック図である。情報処理システム1は、ホスト(ホストデバイス)2と、SSD3とを含む。ホスト2と、SSD3とは、バス7を介して接続可能である。
【0010】
ホスト2は、情報処理装置である。ホスト2は、例えば、パーソナルコンピュータ、サーバコンピュータ、または携帯端末である。ホスト2は、SSD3にアクセスする。具体的には、ホスト2は、データを書き込むためのコマンドであるライトコマンドをSSD3に送信する。また、ホスト2は、データを読み出すためのコマンドであるリードコマンドをSSD3に送信する。
【0011】
SSD3は、ホスト2に接続可能なストレージデバイスである。SSD3は、不揮発性メモリを含む。SSD3は、不揮発性メモリにデータを書き込む。また、SSD3は、不揮発性メモリからデータを読み出す。
【0012】
ホスト2とメモリシステム3との間の通信は、バス7を介して実行される。バス7は、例えば、PCI expressTM(PCIeTM)バスである。ホスト2は、バス7を介して、データおよび入出力(I/O)コマンドをSSD3に送信する。また、SSD3は、バス7を介して、データおよび応答をホスト2に送信する。I/Oコマンドは、不揮発性メモリへのデータの書き込み、または不揮発性メモリからのデータの読み出しを行うためのコマンドである。I/Oコマンドは、例えば、ライトコマンド、またはリードコマンドである。
【0013】
ホスト2とメモリシステム3を接続するための論理インタフェースの規格としては、例えば、NVM ExpressTM(NVMeTM)規格、またはSerial Attached SCSI(SAS)規格が使用される。
【0014】
次に、ホスト2の構成について説明する。
【0015】
ホスト2は、プロセッサ21と、メモリ22とを含む。プロセッサ21およびメモリ22は、内部バス20を介して相互接続される。
【0016】
プロセッサ21は、例えばCPU(Central Processing Unit)である。プロセッサ21は、メモリ22にロードされるソフトウェア(ホストソフトウェア)を実行する。ホストソフトウェアは、SSD3、または、ホスト2に設けられたまたは接続された別のストレージデバイスから、メモリ22にロードされる。ホストソフトウェアは、オペレーティングシステム、ファイルシステム、デバイスドライバ、アプリケーションプログラムなどを含む。
【0017】
メモリ22は、例えば揮発性のメモリである。メモリ22は、メインメモリ、システムメモリ、またはホストメモリとも称される。メモリ22は、例えば、DRAM(Dynamic Random Access Memory)のようなランダムアクセスメモリである。メモリ22の記憶領域の一部は、データバッファとして使用される。データバッファには、SSD3に書き込まれるべきライトデータまたはSSD3から転送されたリードデータが格納される。
【0018】
次に、メモリシステム3の内部構成について説明する。以下では、メモリシステム3内の不揮発性メモリがNAND型フラッシュメモリとして実現されている場合を想定する。
【0019】
メモリシステム3は、コントローラ4と、NAND型フラッシュメモリ(以下、単にNANDメモリと称する)5とを含む。また、SSD3は、ランダムアクセスメモリ、例えば、ダイナミックランダムアクセスメモリ(DRAM)6をさらに含んでいてもよい。
【0020】
コントローラ4は、メモリコントローラである。コントローラ4は、例えば、System-on-a-Chip(SoC)のような制御回路である。コントローラ4は、NANDメモリ5に電気的に接続されている。コントローラ4は、NANDメモリ5へのデータの書き込みと、NANDメモリ5からのデータの読み出しとを実行する。コントローラ4とNANDメモリ5とを接続する物理インタフェースとしては、例えば、Toggle NANDフラッシュインタフェース、またはオープンNANDフラッシュインタフェース(ONFI)が使用される。コントローラ4の各部の機能は、専用ハードウェア、プログラムを実行するプロセッサ、またはこれらの組み合わせにより実現され得る。また、コントローラ4は、DRAM6と通信可能に接続されている。コントローラ4は、DRAM6へのデータの書き込みと、DRAM6からのデータの読み出しとを実行する。また、コントローラ4は、バス7を介して、ホスト2との通信を実行する。
【0021】
NANDメモリ5は、不揮発性のメモリである。NANDメモリ5は、例えば、二次元構造のフラッシュメモリ、または三次元構造のフラッシュメモリである。NANDメモリ5は、例えば、複数のメモリダイを含む。メモリダイは、メモリチップとも称される。複数のメモリダイの各々は、NAND型フラッシュメモリダイとして実現される。以下では、メモリダイをNANDダイと称する。
図1において、NANDメモリ5が、32個のNANDダイ#0~#31を含む場合が例として示されている。NANDダイ#0~#31の各々は、複数のブロックを含む。複数のブロックの各々は、データ消去動作の最小単位である。データ消去動作は、NANDメモリ5に記憶されたデータを消去する動作である。
【0022】
DRAM6は、揮発性メモリである。DRAM6は、例えば、ライトバッファ(WB)61として用いられる記憶領域と、論理物理アドレス変換テーブル(logical-to-physical address translation table:L2Pテーブル)62を記憶する記憶領域と、フリーブロックリスト63を記憶する記憶領域と、アクティブブロックリスト64を記憶する記憶領域とを含む。WB61は、ホスト2から受信されたライトデータを一時的に記憶する記憶領域である。L2Pテーブル62は、マッピング情報を格納するテーブルである。マッピング情報は、論理アドレスそれぞれとNANDメモリ5の物理アドレスそれぞれとの間のマッピングを所定の管理サイズの単位で示す情報である。論理アドレスは、SSD3をアクセスするためにホスト2によって使用されるアドレスである。論理アドレスとしては、例えば、論理ブロックアドレス(LBA)が使用される。物理アドレスは、NANDメモリ5内の記憶位置を示すアドレスである。フリーブロックリスト63は、フリーブロックを管理するリストである。フリーブロックは、有効データを格納していないブロックであり、フリーブロックに格納されているデータは、無効データのみである。有効データは、論理アドレスにマッピングされた物理アドレスが示す記憶領域に格納されているデータである。無効データは、論理アドレスにマッピングされていない物理アドレスが示す記憶領域に格納されているデータである。つまり、無効データは、ホスト2によって読み出されることが無いデータである。アクティブブロックリスト64は、アクティブブロックを管理するリストである。アクティブブロックは、少なくとも有効データを格納しているブロックである。
【0023】
次に、コントローラ4の内部構成を説明する。コントローラ4は、例えば、ホストインタフェース回路(ホストI/F)41と、スタティックRAM(SRAM)42と、CPU43と、誤り訂正回路44と、NANDインタフェース回路(NAND I/F)45と、DRAMインタフェース回路(DRAM I/F)46とを含む。これらホストインタフェース回路41と、SRAM42と、CPU43と、誤り訂正回路44と、NANDインタフェース回路45と、DRAMインタフェース回路46とは、内部バス40を介して相互接続される。
【0024】
ホストインタフェース回路41は、ハードウェアインタフェース回路である。ホストインタフェース回路41は、ホスト2との通信を実行する。
【0025】
SRAM42は、揮発性メモリである。SRAM42の記憶領域は、CPU43の作業領域として使用される。SRAM42は、例えば、複数のブロックの各々の消去回数を示す情報を記憶する記憶領域と、NANDメモリ5に含まれる複数のブロックの消去回数を平準化するためのコピー動作に使用される設定値を記憶する記憶領域とを含む。以下では、消去回数を平準化するためのコピー動作は、消耗平準化(ウェアレベリング)コピー動作と称する。
【0026】
CPU43は、プロセッサである。CPU43は、ホストインタフェース回路41、SRAM42、誤り訂正回路44、NANDインタフェース回路45、およびDRAMインタフェース回路46を制御する。CPU43は、図示しないROMまたはNANDメモリ5から制御プログラム(ファームウェア)をSRAM42にロードする。CPU43は、制御プログラム(ファームウェア)を実行することによって様々な処理を行う。なお、ファームウェアは、DRAM6にロードされてもよい。
【0027】
CPU43は、例えば、フラッシュトランスレーション層(FTL)として、NANDメモリ5に記憶されたデータの管理と、NANDメモリ5に含まれるブロックの管理とを実行する。NANDメモリ5に記憶されたデータの管理は、例えば、論理アドレスそれぞれと物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理を含む。CPU43は、L2Pテーブル62を使用して、マッピング情報を管理する。また、NANDメモリ5に含まれるブロックの管理とは、例えば、ウェアレベリングと、ガベージコレクションと、NANDメモリ5に含まれる不良ブロック(バッドブロック)の管理とを含む。
【0028】
ウェアレベリングは、NANDメモリ5に含まれるブロックそれぞれの消去回数を平準化する処理である。ウェアレベリングは、NANDメモリ5に含まれるブロックそれぞれに対して実行されたデータ消去動作の回数を監視し、ブロックのデータ消去動作の回数を平準化させる。そのため、データの書き込み先ブロックとして、フリーブロックの中でも、よりデータ消去動作の回数が少ないブロックが優先して選択される。ブロックに対して実行されたデータ消去動作の回数は、プログラム/イレーズサイクル(P/Eサイクル)とも称される。以降では、ブロックに対して実行されたデータ消去動作の回数は、単に、消去回数と称する。
【0029】
誤り訂正回路44は、NANDメモリ5にデータが書き込まれる際に、エンコード処理を実行する。エンコード処理において、誤り訂正回路44は、NANDメモリ5に書き込まれるべきデータにエラー訂正コード(ECC)を冗長コードとして付加する。NANDメモリ5からデータがリードされた際に、誤り訂正回路44は、デコード処理を実行する。デコード処理において、誤り訂正回路44は、NANDメモリ5から読み出されたデータに付加されたECCを使用して、このデータの誤り訂正を実行する。
【0030】
NANDインタフェース回路45は、NANDメモリ5を制御する回路である。NANDインタフェース回路45は、NANDメモリ5に含まれる複数のNANDダイに電気的に接続される。
【0031】
個々のNANDダイは、独立して動作可能である。このため、NANDダイは、並列動作可能な単位として機能する。NANDインタフェース回路45は、例えば、NANDコントローラ451-0、451-1、…、451-15を含む。NANDコントローラ451-0、451-1、…、451-15は、チャンネルch0、ch1、…、ch15にそれぞれ接続される。NANDコントローラ451-0、451-1、…、451-15の各々は、対応するチャンネルを介して、1つまたは複数のNANDダイに接続される。
図1においては、チャンネルch0、ch1、…、ch15の各々に2つのNANDダイが接続されている場合が例示されている。この場合、NANDコントローラ451-0は、チャンネルch0を介して、NANDダイ#0および#16に接続される。
【0032】
NANDコントローラ451-1は、チャンネルch1を介して、NANDダイ#1および#17に接続される。そして、NANDコントローラ451-15は、チャンネルch15を介して、NANDダイ#15および#31に接続される。NANDダイ#0、#1、…、#15は、コントローラ4によってバンクBNK0として扱われる。同様に、NANDダイ#16、#17、…、#31は、コントローラ4によってバンクBNK1として扱われる。バンクは、インターリーブ動作によって、複数のNANDダイを並列動作させる単位である。
【0033】
図1に示されるNANDメモリ5の構成においては、コントローラ4は、16チャンネルと、バンクインタリーブ動作によって、NANDダイ#0~#31を並列にアクセスすることができる。このため、コントローラ4は、最大で32個のNANDダイに対するデータの書き込みまたは読み出しを並列に実行することができる(並列アクセス数=32)。なお、NANDダイ#0~#31の各々は、複数のプレーンを有するマルチプレーン構成を有していてもよい。例えば、NANDダイ#0~#31の各々が2プレーンを含む場合、コントローラ4は、最大で64個のプレーンに対するデータの書き込みまたは読み出しを並列に実行することができる(並列アクセス数=64)。
【0034】
DRAMインタフェース回路46は、DRAM6を制御する回路である。DRAMインタフェース回路46は、DRAM6にデータを格納する。また、DRAMインタフェース回路46は、DRAM6に格納されているデータを読み出す。
【0035】
次に、CPU43の機能構成を説明する。CPU43は、FTLとして機能する構成要素に加え、コマンド処理部431、消耗平準化コピー有効化/無効化部432、および消耗平準化コピー制御部433を含む。コマンド処理部431、消耗平準化コピー有効化/無効化部432、および消耗平準化コピー制御部433の各々の一部または全部は、コントローラ4の専用のハードウェアによって実現されてもよい。
【0036】
コマンド処理部431は、ホスト2から受信されるリードコマンドそれぞれを処理することによって、リード処理を実行する。リード処理は、例えば、L2Pテーブル62を参照することによって、リードコマンドによって指定された論理アドレスを物理アドレスに変換する処理と、物理アドレスによって示されるNANDメモリ5内の記憶位置からデータを読み出す処理と、読み出されたデータをホスト2のメモリ22に転送する処理とを含む。
【0037】
コマンド処理部431は、ホスト2から受信されるライトコマンドそれぞれを処理することによって、ライト処理を実行する。ライト処理は、例えば、ライトコマンドに関連付けられたライトデータをホスト2のメモリ22から取得する処理と、NANDメモリ5内の記憶位置にライトデータを書き込む処理と、L2Pテーブル62を更新して、ライトコマンドによって指定された論理アドレスに、ライトデータが書き込まれた記憶位置を示す物理アドレスをマッピングする処理とを含む。コマンド処理部431は、ホスト2から受信されるライトコマンドに基づいて、NANDメモリ5に書き込まれたデータの量を示す累積値を管理する。
【0038】
NANDメモリ5にデータが書き込まれると、コマンド処理部431は、NANDメモリ5に書き込まれたデータの量を示す累積値を更新する。以降では、累積値を累積データ書き込み量と称する。累積データ書き込み量は、ホスト2から受信されるライトコマンドに基づいてNANDメモリ5に書き込まれるデータの量である。NANDメモリ5にデータが書き込まれると、コマンド処理部431は、NANDメモリ5に書き込まれたデータの量を累積データ書き込み量に加算して、累積データ書き込み量を更新する。そして、消耗平準化コピー動作が実行された際に、累積データ書き込み量は、初期値(例えば0)にリセットされる。
【0039】
消耗平準化コピー動作では、有効データが格納されているブロックのうち、最も消去回数が少ないブロック(第1のブロックとも称する)に格納されている有効データを、有効データが格納されていないブロック(フリーブロック)のうち、第1のブロックよりも消去回数が多いブロック(第2のブロックとも称する)にコピーする。ここで、例えば、フリーブロックのうち、2番目に消去回数が多いブロックが第2のブロックとして選択されてもよい。
【0040】
消耗平準化コピー有効化/無効化部432は、消耗平準化コピー動作を有効あるいは無効に設定する。新たな書き込み先ブロックとして割り当てられるブロックに対するデータ消去動作が実行されたことに応じ、消耗平準化コピー有効化/無効化部432は、各ブロックの消去回数をチェックする。消耗平準化コピー有効化/無効化部432は、NANDメモリ5の複数のブロックそれぞれの消去回数のうちの最大消去回数と最小消去回数との間の差(第1の差とも称する)を第1の閾値と比較する。第1の閾値は、例えば設定値Aとして、予め設定されていてもよい。第1の差が設定値Aよりも大きい場合、消耗平準化コピー有効化/無効化部432は、消耗平準化コピー動作を有効に設定する。また、第1の差が設定値A以下であった場合、消耗平準化コピー有効化/無効化部432は、消耗平準化コピー動作を無効に設定する。
【0041】
消耗平準化コピー制御部433は、消耗平準化コピー動作を制御する。消耗平準化コピー制御部433は、消耗平準化コピー動作が有効に設定されたことに応じて、第1の差を第2の閾値と比較する。第2の閾値は、第1の閾値よりも大きい値である。第2の閾値は、例えば設定値A’(>A)として、あらかじめ設定されていてもよい。第1の差が設定値A’以下である場合、消耗平準化コピー制御部433は、消耗平準化コピー動作を通常モードに設定する。通常モードは、第1のモードとも称される。第1の差が設定値A’よりも大きい場合、消耗平準化コピー制御部433は、消耗平準化コピー動作を加速モードに設定する。加速モードは、第2のモードとも称される。
【0042】
消耗平準化コピー動作が通常モードに設定されている場合、消耗平準化コピー制御部433は、消耗平準化コピー動作を実行する。このとき、消耗平準化コピー制御部433は、ライト処理によってNANDメモリ5に書き込まれるデータの量に対する、消耗平準化コピーによってNANDメモリ5にコピーされるデータの量の割合を、第1の割合にする。ライト処理によってNANDメモリ5に書き込まれるデータの量は、ホスト2から受信される複数のライトコマンドに基づいてNANDメモリ5に書き込まれるデータの量、つまりホスト書き込みの量、である。例えば、通常モードにおいて、累積データ書き込み量が第3の閾値を上回った場合、消耗平準化コピー制御部433は、消耗平準化コピー動作を実行して、第1の量の有効データをコピーする。つまり、累積データ書き込み量が第3の閾値を上回った場合、消耗平準化コピー制御部433は、第1のブロックに格納されている有効データが第2のブロックに第1の量だけコピーされるように、消耗平準化コピー動作を実行する。
【0043】
第3の閾値は、例えば設定値Bとして、予め設定されていてもよい。第1の量は、例えば設定値Cとして、予め設定されていてもよい。なお、第1のブロックに格納されている有効データの量が第1の量よりも少ない場合には、第1のブロックに格納されている有効データが第2のブロックにコピーされた後、有効データを含むブロックの中から最も消去回数が少ないブロックが新たな第1のブロックとして再び選択されてもよい。
【0044】
消耗平準化コピー動作が加速モードに設定されている場合、消耗平準化コピー制御部433は、消耗平準化コピー動作を実行する。このとき、消耗平準化コピー制御部433は、ライト処理によってNANDメモリ5に書き込まれるデータの量に対する、消耗平準化コピー動作によってNANDメモリ5にコピーされるデータの量の割合を、第2の割合にする。第2の割合は、通常モードにおける第1の割合よりも大きい値である。例えば、加速モードにおいて、累積データ書き込み量が第4の閾値を上回った場合に、消耗平準化コピー制御部433は、消耗平準化コピー動作を実行して、第1の量の有効データをコピーする。つまり、累積データ書き込み量が第4の閾値を上回った場合、消耗平準化コピー制御部433は、第1のブロックに格納されている有効データが第2のブロックに第1の量だけコピーされるように、消耗平準化コピー動作を実行する。
【0045】
第4の閾値は、第3の閾値よりも小さい値である。第4の閾値は、例えば設定値B’(<B)として、予め設定されていてもよい。これにより、加速モードでは、通常モードと比較して、少ない量のホスト書き込みが行われる度に、消耗平準化コピー動作が実行される。換言すれば、加速モードでは、通常モードと比較して、高い頻度で消耗平準化コピー動作が実行される。
【0046】
次に、NANDダイの構成を説明する。
図2は、NAND型フラッシュメモリ5に含まれる複数のNANDダイの各々の構成例を示すブロック図である。
【0047】
NANDダイ#nは、NANDダイ#0~#31のうちの任意のNANDダイである。NANDダイ#nは、複数のブロックBLK0~BLKx-1を含む。ブロックBLK0~BLKx-1の各々は、複数のページ(ここではページP0~Py-1)を含む。各ページは、複数のメモリセルを含む。ブロックBLK0~BLKx-1の各々は、データを消去するデータ消去動作の単位である。ページP0~Py-1の各々は、データ書き込み動作およびデータ読み出し動作の単位である。
【0048】
次に、消耗平準化コピーについて説明する。
図3は、第1実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の例を示す図である。
【0049】
まず、コントローラ4は、ライトバッファ(WB)61に格納されているデータを、ライトコマンドに応じて書き込み先ブロックに書き込む。コントローラ4は、ライトコマンドが指定する論理アドレスと書き込み先ブロックの記憶位置を示す物理アドレスとの間の対応関係を示すマッピング情報を、L2Pテーブル62に格納する。この論理アドレスに対応する古いデータが既に他のアクティブブロックに格納されていた場合には、この古いデータが記憶されている記憶位置を示す物理アドレスは、論理アドレスとの間の対応関係を失う。つまり、この古いデータは、無効データになる。このような書き込み動作は、データの上書きとも称される。
【0050】
コントローラ4は、新たな書き込み先ブロックとして割り当てるべきブロックをフリーブロックから選択する。このとき、コントローラ4は、フリーブロックリスト63に登録されているブロックのうち、消去回数が少ないブロックを優先して新たな書き込み先ブロックとして選択する。例えば、コントローラ4は、フリーブロックのうち、最も消去回数が少ないブロックを選択する。コントローラ4は、選択したブロックに対するデータ消去動作を実行する。これにより、選択したブロックはデータを書き込むことが可能なブロックになる。コントローラ4は、データを消去したブロックを書き込み先ブロックに割り当て、アクティブブロックリスト64に登録する。このとき、コントローラ4は、データ消去動作が実行されたことに応じて、複数のブロックそれぞれの消去回数をチェックして、消耗平準化コピー動作を有効に設定するか、あるいは無効に設定するかを判定する処理を実行する。
【0051】
また、書き込み先ブロックに新たなデータを書き込むことができる記憶領域が無くなった場合、コントローラ4は、書き込み先ブロックからそのブロックの割り当てを解除する。割り当てを解除されたブロックは、単にアクティブブロックとして管理されるブロックになる。
【0052】
データの書き込み処理が完了すると、コントローラ4は、消耗平準化コピー動作が有効に設定されているか否かを判定する。消耗平準化コピー動作が有効に設定されている場合、コントローラ4は、コピー元ブロックに格納されている設定値Cの量の有効データを、コピー先ブロックにコピーする消耗平準化コピー動作を実行する。ここで、コピー元ブロックに格納されている有効データの総サイズが設定値C未満である場合、コントローラ4は、追加のコピー元ブロックをアクティブブロックから選択する。あるいは、消耗平準化コピー動作の実行中に、コピー元ブロックに格納されている有効データが無くなったことに応じて、コントローラ4は、追加のコピー元ブロックをアクティブブロックから選択してもよい。このとき、コントローラ4は、例えば、アクティブブロックリスト64に登録されているアクティブブロックのうち、最も消去回数が少ないブロックを選択する。
【0053】
コントローラ4は、消耗平準化コピー動作において、コピー元ブロックに格納されている有効データをコピー先ブロックにコピーする代わりに、コピー元ブロックに格納されている全てのデータをコピー先ブロックにコピーしてもよい。消耗平準化コピー動作が進むと、コピー元ブロックは、有効データを格納していないブロックになるため、フリーブロックリスト63に登録される。これにより、消去回数が少ないブロックが新たに書き込み先ブロックに割り当てることができるフリーブロックになる。
【0054】
また、コピー先ブロックに新たなデータを格納可能な記憶領域が無くなった場合、コントローラ4は、フリーブロックリスト63に登録されているブロックのうち、消去回数が多いブロックを選択して、コピー先ブロックに割り当てる。このとき、コントローラ4は、少なくともコピー元ブロックとして選択されているブロックの消去回数よりも消去回数が多いフリーブロックを選択して、コピー先ブロックに割り当てる。コントローラ4は、例えば、フリーブロックリスト63に登録されているフリーブロックのうち、2番目に消去回数が多いブロックを選択して、コピー先ブロックに割り当てる。
【0055】
消去回数が少ないアクティブブロックに格納されているデータは、更新頻度が低いデータであることが予想される。そのため、消去回数が多いブロックに、更新頻度が低いことが予想されるデータをコピーすることで、このブロックの消去回数のさらなる増加を抑制することが期待できる。
【0056】
次に、消耗平準化コピー動作において使用される設定値について説明する。
図4は、第1実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作で使用される各設定値を示す図である。
【0057】
各設定値は、SSD3の製造時に予め設定されていてもよいし、SSD3の運用中に更新されてもよい。
【0058】
まず、設定値Aは、消耗平準化コピー動作を有効にするか否かを判定するための閾値である。設定値Aは、ブロックの消去回数のうち、最大消去回数と最小消去回数との間の差と比較される。コントローラ4は、複数のブロックそれぞれの消去回数をチェックする際に、最大消去回数と最小消去回数との間の差(消去回数差とも称する)と、設定値Aとを比較する。消去回数差が設定値Aよりも大きい場合、コントローラ4は、消耗平準化コピー動作を有効に設定する。消去回数差が設定値A以下であった場合、コントローラ4は、消耗平準化コピー動作を無効に設定する。つまり、設定値Aが大きな値に設定されている場合、最大消去回数と最小消去回数との間の差が比較的大きくなることを許容する。一方、設定値Aが小さい値に設定されている場合、最大消去回数と最小消去回数との間の差が比較的小さくなるように、消耗平準化コピー動作が有効に設定される。
【0059】
設定値A’は、消耗平準化コピー動作を加速モードに設定するか否かを判定するための閾値である。設定値A’は、設定値Aよりも大きい値である。消耗平準化コピー動作が有効に設定された場合、コントローラ4は、最大消去回数と最小消去回数との間の差と設定値A’とを比較する。消去回数差が設定値A’以下である場合、コントローラ4は、消耗平準化コピー動作を通常モードに設定する。消去回数差が設定値A’よりも大きい場合、コントローラ4は、消耗平準化コピー動作を加速モードに設定する。
【0060】
設定値Bは、通常モードにおいて使用される、累積データ書き込み量の閾値である。消耗平準化コピー動作が通常モードに設定されている場合に、コントローラ4は、累積データ書き込み量が更新されたことに応じて、累積データ書き込み量と設定値Bとを比較する。累積データ書き込み量が設定値Bを上回っていた場合、コントローラ4は、消耗平準化コピー動作を実行する。累積データ書き込み量が設定値B以下であった場合、コントローラ4は、消耗平準化コピー動作を実行しない。つまり、設定値Bは、消耗平準化コピー動作が実行される頻度に関係する。コントローラ4は、設定値Bが小さい値に設定されている場合、比較的高い頻度で消耗平準化コピー動作を実行する。また、コントローラ4は、設定値Bが大きい値に設定されている場合、比較的低い頻度で消耗平準化コピー動作を実行する。
【0061】
設定値B’は、加速モードにおいて使用される、累積データ書き込み量の閾値である。設定値B’は、設定値Bよりも小さい値である。消耗平準化コピー動作が加速モードに設定されている場合に、コントローラ4は、累積データ書き込み量が更新されたことに応じて、累積データ書き込み量と設定値Bとを比較する。累積データ書き込み量が設定値B’を上回っていた場合、コントローラ4は、消耗平準化コピー動作を実行する。累積データ書き込み量が設定値B’以下である場合、コントローラ4は、消耗平準化コピー動作を実行しない。設定値B’は設定値Bよりも小さい値であるため、消耗平準化コピー動作が加速モードに設定されている場合、コントローラ4は、通常モードにおける消耗平準化コピー動作と比べて、高い頻度で消耗平準化コピー動作を実行する。
【0062】
設定値Cは、一度の消耗平準化コピー動作において、コピー元ブロックからコピー先ブロックにコピーされるデータの量である。コントローラ4は、消耗平準化コピー動作を実行する際に、設定値Cの量のデータをコピー元ブロックからコピー先ブロックにコピーする。設定値Cは、例えば、一つのブロックのサイズの1/100のサイズである。設定値Cが小さい値に設定されている場合、一度の消耗平準化コピー動作にかかる時間が短いため、消耗平準化コピー動作によって生じるライト処理のレイテンシは比較的小さい。また、設定値Cが大きい値に設定されている場合、一度の消耗平準化コピー動作に係る時間が長くなるが、一度の消耗平準化コピー動作による複数のブロックの消去回数を平準化する能力が比較的大きくなる。
【0063】
次に、消耗平準化コピーが通常モードに設定される場合におけるブロックの消去回数の分布について説明する。
図5は、第1実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作が通常モードに設定される場合におけるブロックの消去回数の分布を示す図である。
【0064】
縦軸は、ブロックの消去回数を表す。横軸は、ブロックのブロック番号を示す。
図5では、ブロック番号1~100までの100個のブロックそれぞれの消去回数がプロットされている。
【0065】
ここで、設定値Aが200、設定値A’が400に設定されている場合を想定する。
【0066】
複数のブロックそれぞれの消去回数のうち、最大の消去回数を有するブロックは、ブロック番号10のブロック(以降ブロック10と称する)である。ブロック10の消去回数は、502回である。
【0067】
一方、複数のブロックそれぞれの消去回数のうち、最小の消去回数を有するブロックは、ブロック番号28のブロック(以降ブロック28と称する)である。ブロック28の消去回数は、298回である。
【0068】
図5で示されている消去回数の分布に対して、ブロックの消去回数のチェックを実行した場合を想定する。
【0069】
まず、コントローラ4は、最大消去回数と最小消去回数との間の差と設定値Aとを比較することで、消耗平準化コピー動作を有効に設定するか否かを判定する。最大消去回数と最小消去回数との間の差は、ブロック10の消去回数とブロック28の消去回数との間の差である。つまり、消去回数差は、502-298=204となる。消去回数差と設定値Aとを比較すると、消去回数差は設定値Aよりも大きいため(204>200)、コントローラ4は、消耗平準化コピー動作を有効に設定する。
【0070】
次いで、コントローラ4は、消去回数差と設定値A’とを比較することで、消耗平準化コピー動作を通常モード、あるいは加速モードのいずれに設定するかを判定する。消去回数差と設定値A’とを比較すると、消去回数差は設定値A’以下であるため(204<400)、コントローラ4は、消耗平準化コピー動作を通常モードに設定する。
【0071】
次に、消耗平準化コピーが加速モードに設定される場合におけるブロックの消去回数の分布について説明する。
図6は、第1実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作が加速モードに設定される場合におけるブロックの消去回数の分布を示す図である。
【0072】
縦軸は、ブロックの消去回数を表す。横軸は、ブロックのブロック番号を示す。
図5では、ブロック番号1~100までの100個のブロックそれぞれの消去回数がプロットされている。
【0073】
ここで、設定値Aが200、設定値A’が400に設定されている場合を想定する。
【0074】
複数のブロックそれぞれの消去回数のうち、最大の消去回数を有するブロックは、ブロック番号9のブロック(以降ブロック9と称する)である。ブロック9の消去回数は、802回である。
【0075】
一方、複数のブロックそれぞれの消去回数のうち、最小の消去回数を有するブロックは、ブロック番号82のブロック(以降ブロック82と称する)である。ブロック82の消去回数は、201回である。
【0076】
図6で示されている消去回数の分布に対して、ブロックの消去回数のチェックを実行した場合を想定する。
【0077】
まず、コントローラ4は、最大消去回数と最小消去回数との間の差と設定値Aとを比較することで、消耗平準化コピー動作を有効に設定するか否かを判定する。最大消去回数と最小消去回数との間の差は、ブロック9の消去回数とブロック82の消去回数との間の差である。そのため、消去回数差は、802-201=601となる。消去回数差と設定値Aとを比較すると、消去回数差が設定値Aよりも大きいため(601>200)、コントローラ4は、消耗平準化コピー動作を有効に設定する。
【0078】
次いで、コントローラ4は、消去回数差と設定値A’とを比較することで、消耗平準化コピー動作を通常モード、あるいは加速モードのいずれに設定するかを判定する。消去回数差と設定値A’とを比較すると、消去回数差が設定値A’よりも大きいため(601>400)、コントローラ4は、消耗平準化コピー動作を加速モードに設定する。
【0079】
次に、加速モードを使用しない場合における、消耗平準化コピー動作の手順について説明する。
図7は、比較例に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順を示すシーケンス図である。
【0080】
まず、ホストは、メモリシステムのコントローラに、ライトコマンドを発行する(ステップS11)。S11において、ホストは、ライトコマンドとともに、データを送信する。
【0081】
このとき、書き込み先ブロックに新たなデータを書き込み可能な記憶領域が無くなった場合を想定する。
【0082】
コントローラは、NANDメモリに対して、新たに書き込み先ブロックとして割り当てるべきブロックをフリーブロックから選択し、選択したブロックに対するデータ消去動作を実行する(ステップS12)。そして、コントローラは、選択したブロックを書き込み先ブロックとして割り当てる。
【0083】
コントローラは、NANDメモリのブロックの消去回数をチェックする(ステップS13)。S13において、コントローラは、最大消去回数と最小消去回数との間の差である消去回数差が設定値Aよりも大きいか否かを判定する。消去回数差が設定値Aよりも大きい場合、コントローラは、消耗平準化コピー動作を有効に設定する。また、消去回数差が設定値A以下である場合、コントローラは、消耗平準化コピー動作を無効に設定する。
【0084】
コントローラは、S11で受信したライトコマンドに基づいて、NANDメモリにデータを書き込む(ステップS14)。
【0085】
コントローラは、S14でNANDメモリに書き込まれたデータの量に応じて、累積データ書き込み量を更新する(ステップS15)。
【0086】
消耗平準化コピー動作が有効に設定されており、且つS15で更新された累積データ書き込み量が設定値Bを上回っている場合、コントローラは、NANDメモリに対して、設定値Cの量だけ有効データをコピーする、消耗平準化コピー動作を実行する(ステップS16)。
【0087】
S16で消耗平準化コピー動作を実行した場合、コントローラは、累積データ書き込み量を初期値(例えば0)にリセットする(ステップS17)。
【0088】
次に、加速モードを使用する場合における、消耗平準化コピー動作の手順について説明する。
図8は、第1実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順を示すシーケンス図である。
【0089】
まず、ホスト2は、メモリシステム3のコントローラ4に、ライトコマンドを発行する(ステップS21)。S21において、ホスト2は、ライトコマンドとともに、データを送信する。
【0090】
このとき、書き込み先ブロックに新たなデータを書き込み可能な記憶領域が無くなった場合を想定する。
【0091】
コントローラ4は、NANDメモリ5に対して、新たに書き込み先ブロックとして割り当てるべきブロックをフリーブロックから選択し、選択したブロックに対するデータ消去動作を実行する(ステップS22)。そして、コントローラ4は、選択したブロックを書き込み先ブロックとして割り当てる。
【0092】
コントローラ4は、NANDメモリ5のブロックの消去回数をチェックする(ステップS23)。S23において、コントローラ4は、最大消去回数と最小消去回数との間の差である消去回数差が設定値Aよりも大きいか否かを判定する。消去回数差が設定値A以下である場合、コントローラ4は、消耗平準化コピー動作を無効に設定する。消去回数差が設定値Aよりも大きい場合、コントローラ4は、消耗平準化コピー動作を有効に設定する。そして、消耗平準化コピー動作が有効に設定されると、コントローラ4は、消去回数差が設定値A’よりも大きいか否かを判定する。消去回数差が設定値A’以下である場合(つまり、消去回数差が設定値Aよりも大きく、且つ設定値A’以下である)、消耗平準化コピー動作を通常モードに設定する。また、消去回数差が設定値A’よりも大きい場合、消耗平準化コピー動作を加速モードに設定する。
【0093】
コントローラ4は、S21で受信したライトコマンドに基づいて、NANDメモリ5にデータを書き込む(ステップS24)。
【0094】
コントローラ4は、S24でNANDメモリ5に書き込まれたデータの量に応じて、累積データ書き込み量を更新する(ステップS25)。
【0095】
消耗平準化コピー動作が有効に設定されて、累積データ書き込み量が条件を満たしている場合、コントローラ4は、NANDメモリ5に対して、消耗平準化コピー動作を実行する(ステップS26)。コントローラ4は、消耗平準化コピー動作が通常モードである場合、S25で更新された累積データ書き込み量が設定値Bを上回っているか否かを判定する。累積データ書き込み量が設定値Bを上回っている場合、コントローラ4は、設定値Cの量だけ有効データをコピーする消耗平準化コピー動作を実行する。また、コントローラ4は、消耗平準化コピー動作が加速モードである場合、S25で更新された累積データ書き込み量が設定値B’を上回っているか否かを判定する。累積データ書き込み量が設定値B’を上回っている場合、コントローラ4は、設定値Cの量だけ有効データをコピーする消耗平準化コピー動作を実行する。
【0096】
S26で消耗平準化コピー動作を実行した場合、コントローラ4は、累積データ書き込み量を初期値(例えば0)にリセットする(ステップS27)。
【0097】
次に、消耗平準化コピー動作の手順について説明する。
図9A、および
図9Bは、第1実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順を示すフローチャートである。
【0098】
まず、コントローラ4は、ホスト2から、ライトコマンドを受信したか否かを判定する(ステップS301)。
【0099】
ライトコマンドを受信していない場合(S301でNo)、コントローラ4は、ホスト2からライトコマンドを受信するまで待機する。
【0100】
ライトコマンドを受信している場合(S301でYes)、コントローラ4は、S301で受信したライトコマンドに基づいたライト処理によって、新たな書き込み先ブロックが必要であるか否かを判定する(ステップS302)。
【0101】
新たな書き込み先ブロックが必要である場合(S302でYes)、コントローラ4は、フリーブロックから新たな書き込み先ブロックを選択し、新たな書き込み先ブロックに対するデータ消去動作を実行する(ステップS303)。
【0102】
新たな書き込み先ブロックが必要でない場合(S302でNo)、コントローラ4は、後述のS303からS309までの手順をスキップする。
【0103】
S303でデータ消去動作を実行した後、コントローラ4は、複数のブロックそれぞれの消去回数のうちの最大消去回数と最小消去回数との間の差である消去回数差が設定値Aよりも大きいか否かを判定する(ステップS304)。
【0104】
消去回数差が設定値Aよりも大きい場合(S304でYes)、コントローラ4は、消耗平準化コピー動作を有効に設定する(ステップS305)。
【0105】
消去回数差が設定値A以下である場合(S304でNo)、コントローラ4は、消耗平準化コピー動作を無効に設定する(ステップS306)。
【0106】
S306で消耗平準化コピー動作を無効に設定した後、コントローラ4は、後述のS307からS309までの手順をスキップする。
【0107】
S305で消耗平準化コピー動作を有効に設定した後、コントローラ4は、消去回数差が設定値A’よりも大きいかを判定する(ステップS307)。
【0108】
消去回数差が設定値A’よりも大きい場合(S307でYes)、コントローラ4は、消耗平準化コピー動作を加速モードに設定する(ステップS308)。
【0109】
消去回数差が設定値A’以下である場合(S307でNo)、コントローラ4は、消耗平準化コピー動作を通常モードに設定する(ステップS309)。
【0110】
そして、コントローラ4は、S301で受信したライトコマンドに基づいて、書き込み動作を実行する(
図9BのステップS310)。
【0111】
S310の書き込み動作が完了すると、コントローラ4は、NANDメモリ5に書き込まれたデータの量に応じて、累積データ書き込み量を更新する(ステップS311)。
【0112】
コントローラ4は、消耗平準化コピー動作が有効に設定されているか否かを判定する(ステップS312)。
【0113】
消耗平準化コピー動作が有効に設定されていない場合(S312でNo)、コントローラ4は、後述のS313以降の手順をスキップして、消耗平準化コピー動作を終了する。
【0114】
消耗平準化コピー動作が有効に設定されている場合(S312でYes)、コントローラ4は、消耗平準化コピー動作が通常モードであるか、あるいは加速モードであるかを判定する(ステップS313)。
【0115】
消耗平準化コピー動作が通常モードである場合(S313で通常モード)、コントローラ4は、累積データ書き込み量が設定値Bを上回っているか否かを判定する(ステップS314)。
【0116】
累積データ書き込み量が設定値Bを上回っている場合(S314でYes)、コントローラ4は、コピー動作を実行して、設定値Cの量だけ有効データをコピーする(ステップS315)。
【0117】
そして、コントローラ4は、累積データ書き込み量をリセットする(ステップS316)。
【0118】
また、累積データ書き込み量が設定値B以下である場合(S314でNo)、コントローラ4は、S315およびS316をスキップして、消耗平準化コピー動作を終了する。
【0119】
消耗平準化コピー動作が加速モードである場合(S313で加速モード)、コントローラ4は、累積データ書き込み量が設定値B’を上回っているか否かを判定する(ステップS317)。
【0120】
累積データ書き込み量が設定値B’を上回っている場合(S317でYes)、コントローラ4は、コピー動作を実行して、設定値Cの量だけ有効データをコピーする(ステップS315)。
【0121】
そして、コントローラ4は、累積データ書き込み量をリセットする(ステップS316)。
【0122】
また、累積データ書き込み量が設定値B’以下である場合(S317でNo)、コントローラ4は、S315およびS316をスキップして、消耗平準化コピーを終了する。
【0123】
以上説明したように、第1実施形態によれば、コントローラ4は、ホスト2から受信されたライトコマンドに基づいてNANDメモリ5にデータを書き込むライト処理が実行された際に、データ消去動作が実行されたことに応じて、ブロックの消去回数をチェックする。コントローラ4は、複数のブロックそれぞれの消去回数のうち、最大消去回数と最小消去回数との間の差が設定値Aよりも大きいか否かを判定する。この消去回数差が設定値Aよりも大きい場合、コントローラ4は、消耗平準化コピー動作を有効に設定し、消去回数差が設定値A’よりも大きいか否かを判定する。ここで、設定値A’は、設定値Aよりも大きい値である。
【0124】
消去回数差が設定値Aよりも大きく、且つ設定値A’以下である場合、コントローラ4は、消耗平準化コピー動作を通常モードに設定する。消耗平準化コピー動作が通常モードに設定されている場合、コントローラ4は、累積データ書き込み量が設定値Bを上回っているときに、設定値Cの量だけ消耗平準化コピーを実行する。
【0125】
また、消去回数差が設定値A’よりも大きい場合、コントローラ4は、複数のブロックの消去回数の差が離れており、通常モードの消耗平準化コピー動作では対処できないと判断する。そして、コントローラ4は、消耗平準化コピー動作を加速モードに設定する。消耗平準化コピー動作が加速モードに設定され、累積データ書き込み量が設定値B’を上回っている場合、コントローラ4は設定値Cの量だけ消耗平準化コピー動作を実行する。
【0126】
設定値B’は、設定値Bよりも小さい値である。そのため、消耗平準化コピーが加速モードに設定されている間、コントローラ4は、通常モードに比べて、高い頻度で消耗平準化コピー動作を実行する。一度の消耗平準化コピー動作でコピーされるデータの量は、通常モード、および加速モードのいずれでも設定値Cの量だけである。そのため、加速モードでは、通常モードに比べて、ホスト2から受信されるライトコマンドに基づいてNANDメモリ5に書き込まれるデータの量に対する、消耗平準化コピー動作によってNANDメモリ5にコピーされるデータの量の割合は大きくなる。
【0127】
このように、コントローラ4は、消去回数差に基づいて、二つの消耗平準化コピー動作のモードを選択することができる。この二つの消耗平準化コピー動作のモードの間では、NANDメモリ5にコピーされるデータの量の割合が互いに異なる。これにより、ブロックの消去回数の現在の分布の状態等に基づいて、ブロックの消去回数を平準化するための処理量を動的に制御できる。
【0128】
(第2実施形態)
次に、通常モードと加速モードとの間で、一度の消耗平準化コピー動作によってNANDメモリ5に書き込まれるデータの量を変えることで、ホスト2から受信されるライトコマンドに基づいてNANDメモリ5に書き込まれるデータの量に対する、消耗平準化コピー動作によってNANDメモリ5にコピーされるデータの量の割合を制御する第2実施形態に係るメモリシステムについて説明する。
【0129】
以降では、第1実施形態と異なる点に注目して説明する。
【0130】
第2実施形態に係るSSD3の消耗平準化コピー制御部433は、消耗平準化コピー動作が加速モードに設定され、累積データ書き込み量が第3の閾値を上回った場合に、第2の量だけ第1のブロックに格納されている有効データを第2のブロックにコピーするように、消耗平準化コピー動作を実行する。第3の閾値は、通常モードにおいて使用される設定値Bと同じ値である。第2の量は、通常モードにおいて使用される第1の量よりも大きい値である。第2の量は、例えば設定値C’として、予め設定されていてもよい。これにより、加速モードに設定されている消耗平準化コピー動作では、通常モードに設定されている消耗平準化コピー動作と比べて、一度の消耗平準化コピー動作でコピーされるデータの量が多くなる。
【0131】
消耗平準化コピー動作で使用される設定値について説明する。
図10は、第2実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作で使用される各設定値を示す図である。
【0132】
設定値A、およびA’は、
図4を参照して説明された第1実施形態で使用される設定値と同様である。
【0133】
設定値Bは、通常モードおよび加速モードの双方において使用される、累積データ書き込み量の閾値である。消耗平準化コピー動作が有効に設定されている場合に、コントローラ4は、累積データ書き込み量が更新されたことに応じて、累積データ書き込み量と設定値Bとを比較する。累積データ書き込み量が設定値Bを上回っていた場合、コントローラ4は、消耗平準化コピー動作を実行する。累積データ書き込み量が設定値B以下であった場合、コントローラ4は、消耗平準化コピー動作を実行しない。
【0134】
設定値Cは、通常モードにおいて使用される、一度の消耗平準化コピー動作でコピーされるデータの量である。消耗平準化コピー動作が通常モードに設定されている場合、コントローラ4は、消耗平準化コピー動作を実行する際に、コピー元ブロックからコピー先ブロックに設定値Cの量だけ有効データをコピーする。
【0135】
設定値C’は、加速モードにおいて使用される、一度の消耗平準化コピー動作において、コピーされるデータの量である。消耗平準化コピー動作が加速モードに設定されている場合、コントローラ4は、消耗平準化コピー動作を実行する際に、コピー元ブロックからコピー先ブロックに設定値C’の量のデータをコピーする。設定値C’は、設定値Cよりも大きい値である。つまり、加速モードにおける消耗平準化コピー動作は、通常モードにおける消耗平準化コピー動作と比べて、一度の消耗平準化コピー動作でコピーされるデータの量が多くなる。
【0136】
次に、第2実施形態における加速モードを使用する場合における、消耗平準化コピー動作の手順について説明する。
図11は、第2実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順を示すシーケンス図である。
【0137】
S41からS45までの処理では、
図8で説明したS21からS25の処理と同様の処理を実行する。
【0138】
消耗平準化コピー動作が有効に設定され、累積データ書き込み量が条件を満たしている場合、コントローラ4は、NANDメモリ5に対して、消耗平準化コピー動作を実行する(ステップS46)。コントローラ4は、消耗平準化コピー動作が通常モードである場合、S45で更新された累積データ書き込み量が設定値Bを上回っているか否かを判定する。累積データ書き込み量が設定値Bを上回っている場合、コントローラ4は、設定値Cの量だけ有効データをコピー元ブロックからコピー先ブロックにコピーする消耗平準化コピー動作を実行する。
【0139】
また、コントローラ4は、消耗平準化コピー動作が加速モードである場合も通常モードの場合と同様に、S45で更新された累積データ書き込み量が設定値Bを上回っているか否かを判定する。そして、累積データ書き込み量が設定値Bを上回っている場合、コントローラ4は、設定値C’の量だけ有効データをコピー元ブロックからコピー先ブロックにコピーする消耗平準化コピー動作を実行する。
【0140】
S46で消耗平準化コピーを実行した場合、コントローラ4は、累積データ書き込み量を初期値(例えば0)にリセットする(ステップS47)。
【0141】
次に、消耗平準化コピー動作の手順について説明する。
図12A、および
図12Bは、第2実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順を示すフローチャートである。
【0142】
S501からS512までの処理では、
図9Aおよび
図9Bで説明したS301からS312までの処理と同様の処理を実行する。
【0143】
消耗平準化コピー動作が有効に設定されている場合(S512でYes)、コントローラ4は、消耗平準化コピー動作が通常モードであるか、あるいは加速モードであるかを判定する(ステップS513)。
【0144】
消耗平準化コピー動作が通常モードである場合(S513で通常モード)、コントローラ4は、累積データ書き込み量が設定値Bを上回っているか否かを判定する(ステップS514)。
【0145】
累積データ書き込み量が設定値Bを上回っている場合(S514でYes)、コントローラ4は、コピー動作を実行して、設定値Cの量だけ有効データをコピーする(ステップS515)。
【0146】
そして、コントローラ4は、累積データ書き込み量を初期値にリセットする(ステップS516)。
【0147】
また、累積データ書き込み量が設定値B以下である場合(S514でNo)、コントローラ4は、S515およびS516をスキップして、消耗平準化コピー動作を終了する。
【0148】
消耗平準化コピー動作が加速モードである場合(S513で加速モード)、コントローラ4は、累積データ書き込み量が設定値Bを上回っているか否かを判定する(ステップS517)。
【0149】
累積データ書き込み量が設定値Bを上回っている場合(S517でYes)、コントローラ4は、コピー動作を実行して、設定値C’の量だけ有効データをコピーする(ステップS518)。
【0150】
そして、コントローラ4は、累積データ書き込み量を初期値にリセットする(ステップS516)。
【0151】
また、累積データ書き込み量が設定値B以下である場合(S317でNo)、コントローラ4は、S518およびS516をスキップして、消耗平準化コピー動作を終了する。
【0152】
以上説明したように、第2実施形態によれば、消耗平準化コピーが加速モードに設定され、累積データ書き込み量が設定値Bを上回っている場合、コントローラ4は設定値C’の量だけ、コピー元ブロックに格納されているデータをコピー先ブロックにコピーする消耗平準化コピー動作を実行する。設定値C’は、通常モードにおける一度の消耗平準化コピーでコピー元ブロックからコピー先ブロックにコピーされるデータの量に対応する設定値Cよりも大きい値である。そのため、消耗平準化コピー動作が加速モードに設定されている間、コントローラ4が一度の消耗委純化コピーによってNANDメモリに書き込むデータの量は、通常モードより多い。消耗平準化コピーが実行される頻度に関係する累積データ書き込み量の閾値は、通常モード、および加速モードのいずれでも設定値Bである。そのため、加速モードでは、通常モードに比べて、ホスト2から受信されるライトコマンドに基づいてNANDメモリ5に書き込まれるデータの量に対する、消耗平準化コピーによってNANDメモリ5にコピーされるデータの量の割合は大きくなる。
【0153】
このように、第2実施形態で説明した構成でも、コントローラ4は、消去回数差に基づいて、二つの消耗平準化コピー動作のモードを選択することができる。この二つの消耗平準化コピー動作の間では、NANDメモリ5にコピーされるデータの量の割合が異なる。これにより、ブロックの消去回数の現在の分布の状態等に基づいて、ブロックの消去回数を平準化するための処理量を動的に制御できる。
【0154】
第1実施形態および第2実施形態で説明した構成では、複数のブロックそれぞれの消去回数のうち最大消去回数と最小消去回数との間の差が設定値A’よりも大きい場合に、コントローラ4は、消耗平準化モードを加速モードに設定する。この場合、少数の特定のブロックのみの消去回数が極端に高い、あるいは低い場合であっても、消耗平準化モードが加速モードに設定されてしまう。少数のブロックに対して消耗平準化コピー動作を実行することは、通常モードによる処理で可能であるため、このようなケースでは、消耗平準化コピー動作が加速モードに設定されてしまうことは望ましくない。そのため、以降で説明する第3実施形態および第4実施形態では、最小消去回数あるいは、最大消去回数の代わりに消去回数の平均を使用して、消耗平準化コピー動作を通常モードあるいは加速モードに設定する場合について説明する。
(第3実施形態)
次に、ブロックの消去回数のチェックの際に、最大消去回数(あるいは、最小消去回数)と消去回数の平均との間の差を使用して、消耗平準化コピー動作を通常モードあるいは加速モードに設定する第3実施形態について説明する。
【0155】
以降では、第1実施形態と異なる点に注目して説明する。
【0156】
第3実施形態に係るSSD3の消耗平準化コピー制御部433は、消耗平準化コピー動作が有効に設定されたことに応じて、最大消去回数あるいは最小消去回数のいずれか一方とSSD3の各ブロックの消去回数の平均との間の差を第5の閾値と比較する。最大消去回数あるいは最小消去回数のいずれか一方とSSD3の各ブロックの消去回数の平均との間の差は、第2の差とも称される。第5の閾値は、例えば設定値Dとして、あらかじめ設定されていてもよい。第2の差が設定値D以下である場合、消耗平準化コピー制御部433は、消耗平準化コピー動作を通常モードに設定する。第2の差が設定値Dよりも大きい場合、消耗平準化コピー制御部433は、消耗平準化コピー動作を加速モードに設定する。以降では、最大消去回数と消去回数の平均との間の差が使用される場合について説明するが、この差の代わりに、最小消去回数と消去回数の平均との間の差が使用されてもよい。
【0157】
消耗平準化コピー動作で使用される設定値について説明する。
図13は、第3実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作で使用される各設定値を示す図である。
【0158】
設定値A、B、B’、およびCは、
図4を参照して説明された第1実施形態で使用される設定値A、B、B’、およびCと同様である。
【0159】
設定値Dは、消耗平準化コピーを加速モードに設定するか否かを判定するための閾値である。消耗平準化コピー動作が有効に設定された場合、コントローラ4は、最大消去回数と消去回数の平均との間の差と設定値Dとを比較する。この差が設定値D以下である場合、コントローラ4は、消耗平準化コピー動作を通常モードに設定する。また、この差が設定値Dより大きい場合、コントローラ4は、消耗平準化コピー動作を加速モードに設定する。つまり、複数のブロックそれぞれの消去回数のうち、最大消去回数と最小消去回数との間の差が設定値Aより大きく、且つ最大消去回数と消去回数の平均との間の差が設定値D以下である場合に、コントローラ4は、消耗平準化コピー動作を通常モードに設定する。また、最大消去回数と最小消去回数との間の差が設定値Aよりも大きく、且つ最大消去回数と消去回数の平均との間の差が設定値Dよりも大きい場合に、コントローラ4は、消耗平準化コピー動作を加速モードに設定する。
【0160】
次に、消耗平準化コピー動作が通常モードに設定される場合におけるブロックの消去回数の分布について説明する。
図14は、第3実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作が通常モードに設定される第1の場合におけるブロックの消去回数の分布を示す図である。
【0161】
縦軸は、ブロックの消去回数を表す。横軸は、ブロックのブロック番号を示す。
図14では、ブロック番号1~100までの100個のブロックそれぞれの消去回数がプロットされている。
【0162】
ここで、設定値Aが200、設定値Dが180に設定されている場合を想定する。
【0163】
複数のブロックそれぞれの消去回数のうち、最大の消去回数を有するブロックは、ブロック番号10のブロック(以降ブロック10と称する)である。ブロック10の消去回数は、502回である。
【0164】
一方、複数のブロックそれぞれの消去回数のうち、最小の消去回数を有するブロックは、ブロック番号28のブロック(以降ブロック28と称する)である。ブロック28の消去回数は、298回である。
【0165】
また、ブロックの消去回数の平均は、397回である。
【0166】
図14で示されている消去回数の分布に対して、ブロックの消去回数のチェックを実行した場合を想定する。
【0167】
まず、コントローラ4は、最大消去回数と最小消去回数との間の差と設定値Aとを比較することで、消耗平準化コピー動作を有効に設定するか否かを判定する。最大消去回数と最小消去回数との間の差は、ブロック10の消去回数とブロック28の消去回数との間の差である。そのため、消去回数差は、502-298=204となる。消去回数差と設定値Aとを比較すると、消去回数差が設定値Aよりも大きいため(204>200)、コントローラ4は、消耗平準化コピー動作を有効に設定する。
【0168】
次いで、コントローラ4は、最大消去回数と消去回数の平均との間の差と設定値Dとを比較することで、消耗平準化コピー動作を通常モード、あるいは加速モードのいずれに設定するかを判定する。最大消去回数は、ブロック10の消去回数であるため、最大消去回数と平均消去回数との間の差は、502-397=105となる。最大消去回数と平均消去回数との間の差と設定値Dとを比較すると、最大消去回数と平均消去回数との間の差が設定値D以下であるため(105<180)、コントローラ4は、消耗平準化コピー動作を通常モードに設定する。
【0169】
次に、消耗平準化コピー動作が通常モードに設定される第2の場合におけるブロックの消去回数の分布について説明する。
図15は、第3実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作が通常モードに設定される第2の場合におけるブロックの消去回数の分布を示す図である。
【0170】
縦軸は、ブロックの消去回数を表す。横軸は、ブロックのブロック番号を示す。
図15では、ブロック番号1~100までの100個のブロックそれぞれの消去回数がプロットされている。
【0171】
ここで、設定値Aが200、設定値Dが180に設定されている場合を想定する。
【0172】
複数のブロックそれぞれの消去回数のうち、最大の消去回数を有するブロックは、ブロック番号10のブロック(以降ブロック10と称する)である。ブロック10の消去回数は、502回である。
【0173】
一方、複数のブロックそれぞれの消去回数のうち、最小の消去回数を有するブロックは、ブロック番号14のブロック(以降ブロック14と称する)である。ブロック14の消去回数は、2回である。
【0174】
また、ブロックの消去回数の平均は、399回である。
【0175】
図15で示されている消去回数の分布に対して、ブロックの消去回数のチェックを実行した場合を想定する。
【0176】
まず、コントローラ4は、最大消去回数と最小消去回数との間の差と設定値Aとを比較することで、消耗平準化コピー動作を有効に設定するか否かを判定する。最大消去回数と最小消去回数との間の差は、ブロック10の消去回数とブロック14の消去回数との間の差である。そのため、消去回数差は、502-2=500となる。消去回数差と設定値Aとを比較すると、消去回数差が設定値Aよりも大きいため(500>200)、コントローラ4は、消耗平準化コピー動作を有効に設定する。
【0177】
次いで、コントローラ4は、最大消去回数と消去回数の平均との間の差と設定値Dとを比較することで、消耗平準化コピー動作を通常モード、あるいは加速モードのいずれに設定するかを判定する。最大消去回数は、ブロック10の消去回数であるため、最大消去回数と消去回数の平均との間の差は、502-399=103となる。コントローラ4は、最大消去回数と消去回数の平均との間の差と設定値Dとを比較すると、最大消去回数と平均消去回数との間の差が設定値D以下であるため(103<180)、コントローラ4は、消耗平準化コピー動作を通常モードに設定する。
【0178】
このように、特定のブロックの消去回数だけが小さい場合には、最大消去回数と最小消去回数との間の差が設定値Aを大幅に超えることになるが、SSD3の全体の消耗の程度には問題がない。そのため、最小消去回数の代わりに消去回数の平均を使用することで、SSD3全体のブロックの消去回数を考慮して、消耗平準化コピー動作を加速モードに設定するか否かを判定することができる。
【0179】
次に、消耗平準化コピー動作が加速モードに設定される場合におけるブロックの消去回数の分布について説明する。
図16は、第3実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作が加速モードに設定される場合におけるブロックの消去回数の分布を示す図である。
【0180】
縦軸は、ブロックの消去回数を表す。横軸は、ブロックのブロック番号を示す。
図16では、ブロック番号1~100までの100個のブロックそれぞれの消去回数がプロットされている。
【0181】
ここで、設定値Aが200、設定値Dが180に設定されている場合を想定する。
【0182】
複数のブロックそれぞれの消去回数のうち、最大の消去回数を有するブロックは、ブロック番号9のブロック(以降ブロック9と称する)である。ブロック9の消去回数は、802回である。
【0183】
一方、複数のブロックそれぞれの消去回数のうち、最小の消去回数を有するブロックは、ブロック番号82のブロック(以降ブロック82と称する)である。ブロック82の消去回数は、201回である。
【0184】
また、ブロックの消去回数の平均は、511回である。
【0185】
図16で示されている消去回数の分布に対して、ブロックの消去回数のチェックを実行した場合を想定する。
【0186】
まず、コントローラ4は、最大消去回数と最小消去回数との間の差と設定値Aとを比較することで、消耗平準化コピー動作を有効に設定するか否かを判定する。最大消去回数と最小消去回数との間の差は、ブロック9の消去回数とブロック82の消去回数との間の差である。そのため、消去回数差は、802-201=601となる。消去回数差と設定値Aとを比較すると、消去回数差が設定値Aよりも大きいため(601>200)、コントローラ4は、消耗平準化コピー動作を有効に設定する。
【0187】
次いで、コントローラ4は、最大消去回数と消去回数の平均との間の差と設定値Dとを比較することで、消耗平準化コピー動作を通常モード、あるいは加速モードのいずれに設定するかを判定する。最大消去回数は、ブロック10の消去回数であるため、最大消去回数と消去回数の平均との間の差は、802-511=291となる。最大消去回数と消去回数の平均との間の差と設定値Dとを比較すると、最大消去回数と平均消去回数との間の差が設定値Dよりも大きいため(291>180)、コントローラ4は、消耗平準化コピー動作を加速モードに設定する。
【0188】
次に、消耗平準化コピー動作の手順について説明する。
図17は、第3実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順を示すシーケンス図である。
【0189】
S61およびS62の処理は、
図8で説明したS21およびS22の処理と同様の処理を実行する。
【0190】
コントローラ4は、NANDメモリ5のブロックの消去回数をチェックする(ステップS63)。S63において、コントローラ4は、最大消去回数と最小消去回数との間の差が設定値Aよりも大きいか否かを判定する。最大消去回数と最小消去回数との間の差が設定値A以下である場合、コントローラ4は、消耗平準化コピー動作を無効に設定する。最大消去回数と最小消去回数との間の差が設定値Aよりも大きい場合、コントローラ4は、消耗平準化コピー動作を有効に設定する。
【0191】
そして、消耗平準化コピー動作が有効に設定されると、コントローラ4は、最大消去回数と消去回数の平均との間の差が設定値Dよりも大きいか否かを判定する。最大消去回数と消去回数の平均との間の差が設定値D以下である(つまり、最大消去回数と最小消去回数との間の差が設定値Aよりも大きく、且つ最大消去回数と消去回数の平均との間の差がD以下である)場合、消耗平準化コピー動作を通常モードに設定する。また、最大消去回数と消去回数の平均との間の差が設定値Dよりも大きい(つまり、最大消去回数と最小消去回数との間の差が設定値Aよりも大きく、且つ最大消去回数と消去回数の平均との間の差がDよりも大きい)場合、消耗平準化コピー動作を加速モードに設定する。
【0192】
S64からS67までの処理では、
図8で説明したS24からS27までの処理と同様の処理を実行する。
【0193】
次に、消耗平準化コピー動作の手順について説明する。
図18Aおよび
図18Bは、第3実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順を示すフローチャートである。
【0194】
S701からS703までの処理は、
図9Aで説明したS301からS303までの処理と同様の処理を実行する。
【0195】
S703でデータ消去動作を実行した後、コントローラ4は、複数のブロックそれぞれの消去回数のうちの最大消去回数と最小消去回数との間の差である消去回数差が設定値Aよりも大きいか否かを判定する(ステップS704)。
【0196】
最大消去回数と最小消去回数との間の差が設定値Aよりも大きい場合(S704でYes)、コントローラ4は、消耗平準化コピー動作を有効に設定する(ステップS705)。
【0197】
最大消去回数と最小消去回数との間の差が設定値A以下である場合(S704でNo)、コントローラ4は、消耗平準化コピー動作を無効に設定する(ステップS706)。
【0198】
S706で消耗平準化コピー動作を無効に設定した後、コントローラ4は、後述のS707からS709までの手順をスキップする。
【0199】
S705で消耗平準化コピー動作を有効に設定した後、コントローラ4は、最大消去回数と消去回数の平均との間の差が設定値Dよりも大きいかを判定する(ステップS707)。
【0200】
最大消去回数と消去回数の平均との間の差が設定値Dよりも大きい場合(S707でYes)、コントローラ4は、消耗平準化コピー動作を加速モードに設定する(ステップS708)。
【0201】
最大消去回数と消去回数の平均との間の差が設定値D以下である場合(S707でNo)、コントローラ4は、消耗平準化コピー動作を通常モードに設定する(ステップS709)。
【0202】
図18BのS710からS716までの処理は、
図9Bで説明したS310からS316までの処理と同様の処理が実行される。
【0203】
以上説明したように、第3実施形態によれば、コントローラ4は、複数のブロックそれぞれの消去回数の平均に基づいて、消耗平準化コピー動作を通常モードあるいは加速モードのいずれに設定するかを判定することができる。これにより、特定の少数のブロックの消去回数のみが低い場合であっても、不必要に消耗平準化コピー動作が加速モードに設定されることを避けることができる。つまり、消去回数の平均を使用することで、SSD3のブロック全体の消去回数の偏りに基づいて、消耗平準化コピー動作のモードを設定することができる。
【0204】
また、コントローラ4は、最大消去回数と消去回数の平均との間の差の代わりに、消去回数の平均と最小消去回数との間の差と設定値Dとを比較してもよい。この場合、特定の少数のブロックの消去回数のみが高い場合であっても、不必要に消耗平準化コピーが加速モードに設定されることを避けることができる。
(第4実施形態)
次に、第4実施形態に係るメモリシステムについて説明する。第4実施形態では、第3実施形態と同様に、ライトコマンドによってNANDメモリ5に書き込まれるデータの量に応じて、消耗平準化コピー動作によってNANDメモリ5にコピーされるデータの量の割合を制御する。第4実施形態のメモリシステムは、複数のブロックそれぞれの消去回数の平均を使用して消耗平準化コピー動作を通常モードあるいは加速モードのいずれに設定するかを判定し、且つ通常モードと加速モードとの間で、一度の消耗平準化コピー動作によってNANDメモリ5に書き込まれるデータの量を変える。
【0205】
以降では、第3実施形態と異なる点に注目して説明する。
【0206】
第4実施形態に係るSSD3の消耗平準化コピー制御部433は、消耗平準化コピー動作が加速モードに設定され、累積データ書き込み量が第3の閾値を上回った場合に、第2の量だけ第1のブロックに格納されている有効データを第2のブロックにコピーするように、消耗平準化コピー動作を実行する。第3の閾値は、通常モードにおいて使用される設定値Bと同じ値である。第2の量は、通常モードにおいて使用される第1の量よりも大きい値である。第2の量は、例えば設定値C’として、予め設定されていてもよい。これにより、加速モードに設定されている消耗平準化コピー動作では、通常モードに設定されている消耗平準化コピー動作と比べて、一度の消耗平準化コピー動作でコピーされるデータの量が多くなる。
【0207】
消耗平準化コピー動作で使用される設定値について説明する。
図19は、第4実施形態に係るメモリシステムの消耗平準化コピー動作で使用される各設定値を示す図である。
【0208】
設定値A、およびDは、
図13を参照して説明された第3実施形態で使用される設定値と同様である。
【0209】
設定値Bは、通常モードおよび加速モードの双方において使用される、累積データ書き込み量の閾値である。消耗平準化コピー動作が有効に設定されている場合に、コントローラ4は、累積データ書き込み量が更新されたことに応じて、累積データ書き込み量と設定値Bとを比較する。累積データ書き込み量が設定値Bを上回っていた場合、コントローラ4は、消耗平準化コピー動作を実行する。累積データ書き込み量が設定値B以下であった場合、コントローラ4は、消耗平準化コピー動作を実行しない。
【0210】
設定値Cは、通常モードにおいて使用される、一度の消耗平準化コピー動作でコピーされるデータの量である。消耗平準化コピー動作が通常モードに設定されている場合、コントローラ4は、消耗平準化コピー動作を実行する際に、コピー元ブロックからコピー先ブロックに設定値Cの量だけ有効データをコピーする。
【0211】
設定値C’は、加速モードにおいて使用される、一度の消耗平準化コピー動作において、コピーされるデータの量である。消耗平準化コピー動作が加速モードに設定されている場合、コントローラ4は、消耗平準化コピー動作を実行する際に、コピー元ブロックからコピー先ブロックに設定値C’の量だけデータをコピーする。設定値C’は、設定値Cよりも大きい値である。つまり、加速モードにおける消耗平準化コピー動作は、通常モードにおける消耗平準化コピー動作と比べて、一度の消耗平準化コピー動作でコピーされるデータの量が多くなる。
【0212】
次に、第4実施形態における加速モードを使用する場合における、消耗平準化コピー動作の手順について説明する。
図20は、第4実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順を示すシーケンス図である。
【0213】
S81からS85までの処理では、
図17で説明したS61からS65の処理と同様の処理を実行する。
【0214】
消耗平準化コピー動作が有効に設定され、累積データ書き込み量が条件を満たしている場合、コントローラ4は、NANDメモリ5に対して、消耗平準化コピー動作を実行する(ステップS86)。コントローラ4は、消耗平準化コピー動作が通常モードである場合、S85で更新された累積データ書き込み量が設定値Bを上回っているか否かを判定する。累積データ書き込み量が設定値Bを上回っている場合、コントローラ4は、設定値Cの量だけ有効データをコピー元ブロックからコピー先ブロックにコピーする消耗平準化コピー動作を実行する。また、コントローラ4は、消耗平準化コピー動作が加速モードである場合も通常モードの場合と同様に、S85で更新された累積データ書き込み量が設定値Bを上回っているか否かを判定する。累積データ書き込み量が設定値Bを上回っている場合、コントローラ4は、設定値C’の量だけ有効データをコピー元ブロックからコピー先ブロックにコピーする消耗平準化コピー動作を実行する。
【0215】
S86で消耗平準化コピーを実行した場合、コントローラ4は、累積データ書き込み量を初期値(例えば0)にリセットする(ステップS87)。
【0216】
次に、消耗平準化コピー動作の手順について説明する。
図20A、および
図20Bは、第4実施形態に係るメモリシステムにおいて実行される消耗平準化コピー動作の手順を示すフローチャートである。
【0217】
S901からS912までの処理では、
図18Aおよび
図18Bで説明したS701からS712までの処理と同様の処理を実行する。
【0218】
消耗平準化コピー動作が有効に設定されている場合(S912でYes)、コントローラ4は、消耗平準化コピー動作が通常モードであるか、あるいは加速モードであるかを判定する(ステップS913)。
【0219】
消耗平準化コピー動作が通常モードである場合(S913で通常モード)、コントローラ4は、累積データ書き込み量が設定値Bを上回っているか否かを判定する(ステップS914)。
【0220】
累積データ書き込み量が設定値Bを上回っている場合(S914でYes)、コントローラ4は、設定値Cの量だけ有効データをコピー元ブロックからコピー先ブロックにコピーする、コピー動作を実行する(ステップS915)。
【0221】
そして、コントローラ4は、累積データ書き込み量を初期値にリセットする(ステップS916)。
【0222】
また、累積データ書き込み量が設定値B以下である場合(S914でNo)、コントローラ4は、S915およびS916をスキップして、消耗平準化コピー動作を終了する。
【0223】
消耗平準化コピー動作が加速モードである場合(S913で加速モード)、コントローラ4は、累積データ書き込み量が設定値Bを上回っているか否かを判定する(ステップS917)。
【0224】
累積データ書き込み量が設定値Bを上回っている場合(S917でYes)、コントローラ4は、設定値C’の量だけ有効データをコピー元ブロックからコピー先ブロックにコピーする、コピー動作を実行する(ステップS918)。
【0225】
そして、コントローラ4は、累積データ書き込み量を初期値にリセットする(ステップS916)。
【0226】
また、累積データ書き込み量が設定値B以下である場合(S917でNo)、コントローラ4は、S918およびS916をスキップして、消耗平準化コピー動作を終了する。
【0227】
以上説明したように、第4実施形態によれば、消耗平準化コピー動作が加速モードに設定され、累積データ書き込み量が設定値Bを上回っているときに、コントローラ4は設定値C’の量だけ、コピー元ブロックに格納されているデータをコピー先ブロックにコピーする消耗平準化コピー動作を実行する。設定値C’は、通常モードにおける一度の消耗平準化コピーでコピー元ブロックからコピー先ブロックにコピーされるデータの量に対応する設定値Cよりも大きい値である。そのため、消耗平準化コピー動作が加速モードに設定されている間、コントローラ4が一度の消耗平準化コピーによってNANDメモリ5に書き込むデータの量は、通常モードより多い。消耗平準化コピーが実行される頻度に関係する累積データ書き込み量の閾値は、通常モード、および加速モードのいずれでも設定値Bである。そのため、加速モードでは、通常モードに比べて、ホスト2から受信されるライトコマンドに基づいてNANDメモリ5に書き込まれるデータの量に対する、消耗平準化コピーによってNANDメモリ5にコピーされるデータの量の割合は大きくなる。
【0228】
なお、第1~第4実施形態において使用される各設定値は、予め設定された値に限定されない。各設定値は、必要に応じて変更されてもよい。
【0229】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、更新を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0230】
1…情報処理システム、2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、6…DRAM、7…バス、20…内部バス、21…プロセッサ、22…メモリ、40…内部バス、41…ホストインタフェース回路、42…SRAM、43…CPU、44…誤り訂正回路、45…NANDインタフェース回路、46…DRAMインタフェース回路、61…ライトバッファ、62…L2Pテーブル、63…フリーブロックリスト、64…アクティブブロックリスト、431…コマンド処理部、432…消耗平準化コピー有効化/無効化部、433…消耗平準化コピー制御部。