(57)【要約】【課題】ダイコンテンション無しで不揮発性メモリをアクセスすることができるメモリシステムを実現する。【解決手段】メモリシステムは、複数のチャンネルに接続された複数の不揮発性メモリダイの各々が一つのダイグループにのみ属するように前記複数の不揮発性メモリダイを複数のダイグループに分類する。メモリシステムは、各ダイグループに対応する少なくとも一つの領域を含む複数の領域のいずれか一つを指定する前記ホストからのＩ／Ｏコマンドに応じて、前記複数のダイグループ内の一つのダイグループに対するデータ書き込み／読み出し動作を実行する。前記メモリシステムは、フリーブロック群を、前記複数のダイグループに対応する複数のフリーブロックプールによってダイグループ毎に個別に管理する。【選択図】図３
2020205077.tif 000002
【特許請求の範囲】
【請求項１】
ホストに接続可能なメモリシステムであって、
複数のチャンネルに接続された複数の不揮発性メモリダイを含む不揮発性メモリであって、各不揮発性メモリダイが複数のブロックを含む、不揮発性メモリと、
前記複数のチャンネルを介して前記不揮発性メモリを制御するように構成されたコントローラとを具備し、
前記コントローラは、
前記複数の不揮発性メモリダイの各々が一つのダイグループにのみ属するように前記複数の不揮発性メモリダイを第１のダイグループと第２のダイグループとに分類し、
前記第１のダイグループに対応する第１領域を指定する第１のライトコマンドを前記ホストから受信した場合、前記第１領域に書き込まれるべき第１のデータを、前記第１のダイグループから選択された第１の書き込み先ブロックに書き込み、
前記第２のダイグループに対応する第２領域を指定する第２のライトコマンドを前記ホストから受信した場合、前記第２領域に書き込まれるべき第２のデータを、前記第２のダイグループから選択された第２の書き込み先ブロックに書き込むように構成されているメモリシステム。
【請求項２】
前記コントローラは、
前記第２のデータの書き込み動作の実行中に、前記第１領域を指定する第１のリードコマンドを前記ホストから受信した場合、前記第２のデータの書き込み動作の完了を待つこと無く前記第１のダイグループからデータを読み出すように構成されている請求項１記載のメモリシステム。
【請求項３】
前記第１のダイグループに属するフリーブロック群は、前記第１のダイグループに対応する第１のフリーブロックプールによって管理され、前記第２のダイグループに属するフリーブロック群は、前記第２のダイグループに対応する第２のフリーブロックプールによって管理され、
前記第１のフリーブロックプールは、前記第１のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する第１のデータブロックプールに専用のフリーブロックプールであり、前記第２のフリーブロックプールは、前記第２のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する複数の第２のデータブロックプールによって共有される共有フリーブロックプールである請求項１記載のメモリシステム。
【請求項４】
前記コントローラは、
前記第１のデータブロックプール内のブロック群のガベージコレクションにおいては、前記第１のフリーブロックプール内のフリーブロックの一つを第１のコピー先ブロックとして割り当て、前記第１のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第１のコピー先ブロックにコピーし、前記第１のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第１のフリーブロックプールに返却する、動作を実行し、
前記複数の第２のデータブロックプールの一つの第２のデータブロックプール内のブロック群のガベージコレクションにおいては、前記複数の第２のデータブロックプールによって共有される前記第２のフリーブロックプール内のフリーブロックの一つを第２のコピー先ブロックとして割り当て、前記一つの第２のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第２のコピー先ブロックにコピーし、前記第２のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第２のフリーブロックプールに返却する、動作を実行するように構成されている請求項３記載のメモリシステム。
【請求項５】
前記第１のダイグループに属するフリーブロック群は、前記第１のダイグループに対応する第１のフリーブロックプールによって管理され、前記第２のダイグループに属するフリーブロック群は、前記第２のダイグループに対応する第２のフリーブロックプールによって管理され、
前記第１のフリーブロックプールは、前記第１のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する第１のデータブロックプールに専用のフリーブロックプールであり、前記第２のフリーブロックプールは、前記第２のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する第２のデータブロックプールに専用のフリーブロックプールである請求項１記載のメモリシステム。
【請求項６】
前記コントローラは、
前記第１のデータブロックプール内のブロック群のガベージコレクションにおいては、前記第１のフリーブロックプール内のフリーブロックの一つを第１のコピー先ブロックとして割り当て、前記第１のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第１のコピー先ブロックにコピーし、前記第１のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第１のフリーブロックプールに返却する、動作を実行し、
前記第２のデータブロックプール内のブロック群のガベージコレクションにおいては、前記第２のフリーブロックプール内のフリーブロックの一つを第２のコピー先ブロックとして割り当て、前記第２のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第２のコピー先ブロックにコピーし、前記第２のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第２のフリーブロックプールに返却する、動作を実行するように構成されている請求項５記載のメモリシステム。
【請求項７】
前記第１のダイグループに属するフリーブロック群は、前記第１のダイグループに対応する第１のフリーブロックプールによって管理され、前記第２のダイグループに属するフリーブロック群は、前記第２のダイグループに対応する第２のフリーブロックプールによって管理され、
前記第１のフリーブロックプールは、前記第１のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する複数の第１のデータブロックプールによって共有される共有フリーブロックプールであり、前記第２のフリーブロックプールは、前記第２のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する複数の第２のデータブロックプールによって共有される共有フリーブロックプールである請求項１記載のメモリシステム。
【請求項８】
前記コントローラは、
前記複数の第１のデータブロックプールの一つの第１のデータブロックプール内のブロック群のガベージコレクションにおいては、前記複数の第１のデータブロックプールによって共有される前記第１のフリーブロックプール内のフリーブロックの一つを第１のコピー先ブロックとして割り当て、前記一つの第１のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第１のコピー先ブロックにコピーし、前記第１のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第１のフリーブロックプールに返却する、動作を実行し、
前記複数の第２のデータブロックプールの一つの第２のデータブロックプール内のブロック群のガベージコレクションにおいては、前記複数の第２のデータブロックプールによって共有される前記第２のフリーブロックプール内のフリーブロックの一つを第２のコピー先ブロックとして割り当て、前記一つの第２のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第２のコピー先ブロックにコピーし、前記第２のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第２のフリーブロックプールに返却する、動作を実行するように構成されている請求項７記載のメモリシステム。
【請求項９】
前記第１のダイグループは、前記複数のチャンネルにそれぞれ接続された複数の第１の不揮発性メモリダイの集合を含み、前記第２のダイグループは、前記複数のチャンネルにそれぞれ接続された複数の第２の不揮発性メモリダイの集合を含む請求項１記載のメモリシステム。
【請求項１０】
前記第１のダイグループは、前記複数のチャンネルの第１のチャンネルにそれぞれ接続された複数の第１の不揮発性メモリダイの集合を含み、前記第２のダイグループは、前記複数のチャンネルの第２のチャンネルにそれぞれ接続された複数の第２の不揮発性メモリダイの集合を含む請求項１記載のメモリシステム。
【請求項１１】
複数のチャンネルに接続された複数の不揮発性メモリダイを含む不揮発性メモリを、コントローラによって、前記複数のチャンネルを介して制御する制御方法であって、各不揮発性メモリダイが複数のブロックを含み、
前記複数の不揮発性メモリダイの各々が一つのダイグループにのみ属するように前記複数の不揮発性メモリダイを第１のダイグループと第２のダイグループとに分類することと、
前記第１のダイグループに対応する第１領域を指定する第１のライトコマンドをホストから受信した場合、前記第１領域に書き込まれるべき第１のデータを、前記第１のダイグループから選択された第１の書き込み先ブロックに書き込むことと、
前記第２のダイグループに対応する第２領域を指定する第２のライトコマンドを前記ホストから受信した場合、前記第２領域に書き込まれるべき第２のデータを、前記第２のダイグループから選択された第２の書き込み先ブロックに書き込むこととを具備する制御方法。
【請求項１２】
前記第１のダイグループに属するフリーブロック群は、前記第１のダイグループに対応する第１のフリーブロックプールによって管理され、前記第２のダイグループに属するフリーブロック群は、前記第２のダイグループに対応する第２のフリーブロックプールによって管理され、
前記第１のフリーブロックプールは、前記第１のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する第１のデータブロックプールに専用のフリーブロックプールであり、前記第２のフリーブロックプールは、前記第２のダイグループに属し且つ有効データを保持するブロックそれぞれを管理する複数の第２のデータブロックプールによって共有される共有フリーブロックプールである請求項１１記載の制御方法。
【請求項１３】
前記第１のデータブロックプール内のブロック群のガベージコレクションにおいては、前記第１のフリーブロックプール内のフリーブロックの一つを第１のコピー先ブロックとして割り当て、前記第１のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第１のコピー先ブロックにコピーし、前記第１のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第１のフリーブロックプールに返却する、動作を実行することと、
前記複数の第２のデータブロックプールの一つの第２のデータブロックプール内のブロック群のガベージコレクションにおいては、前記複数の第２のデータブロックプールによって共有される前記第２のフリーブロックプール内のフリーブロックの一つを第２のコピー先ブロックとして割り当て、前記一つの第２のデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみを前記第２のコピー先ブロックにコピーし、前記第２のコピー先ブロックへの前記有効データのコピーによって無効データのみになった前記一つ以上のブロックを前記第２のフリーブロックプールに返却する、動作を実行することとをさらに具備する請求項１２記載の制御方法。
【請求項１４】
前記第１のダイグループは、前記複数のチャンネルにそれぞれ接続された複数の第１の不揮発性メモリダイの集合を含み、前記第２のダイグループは、前記複数のチャンネルにそれぞれ接続された複数の第２の不揮発性メモリダイの集合を含む請求項１１記載の制御方法。
【請求項１５】
前記第１のダイグループは、前記複数のチャンネルの第１のチャンネルにそれぞれ接続された複数の第１の不揮発性メモリダイの集合を含み、前記第２のダイグループは、前記複数のチャンネルの第２のチャンネルにそれぞれ接続された複数の第２の不揮発性メモリダイの集合を含む請求項１１記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
【背景技術】
【０００２】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
【０００３】
このようなメモリシステムの一つとして、ＮＡＮＤフラッシュ技術ベースのソリッドステートドライブ（ＳＳＤ）が知られている。ＳＳＤは、その低電力消費、高性能という特徴により、様々なコンピュータのストレージとして使用されている。
【０００４】
通常、ＳＳＤにおいては、その大容量化のために多数の不揮発性メモリダイが搭載されている。個々の不揮発性メモリダイは独立して動作することができる。このため、各不揮発性メモリは並列処理の単位として機能し得る。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２０１３／０１９０５７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、通常、一つの不揮発性メモリダイに対する動作は、並列には実行されず、逐次的に実行される。このため、もし書き込み動作が実行されている不揮発性メモリダイへのリード要求が起きると（ダイコンテンション）、そのリード要求の応答時間（リードレイテンシ）は非常に長くなる場合がある。
【０００７】
したがって、ホストがダイコンテンション無しでＳＳＤをアクセスすることを可能にするための新たな機能の実現が必要とされる。
【０００８】
本発明が解決しようとする課題は、ダイコンテンション無しで不揮発性メモリをアクセスすることができるメモリシステムおよび制御方法を提供することである。
【課題を解決するための手段】
【０００９】
実施形態によれば、ホストに接続可能なメモリシステムは、複数のチャンネルに接続された複数の不揮発性メモリダイを含む不揮発性メモリと、前記複数のチャンネルを介して前記不揮発性メモリを制御するように構成されたコントローラとを具備する。各不揮発性メモリダイは複数のブロックを含む。前記コントローラは、前記複数の不揮発性メモリダイの各々が一つのダイグループにのみ属するように前記複数の不揮発性メモリダイを第１のダイグループと第２のダイグループとに分類する。前記コントローラは、前記第１のダイグループに対応する第１領域を指定する第１のライトコマンドを前記ホストから受信した場合、前記第１領域に書き込まれるべき第１のデータを、前記第１のダイグループから選択された第１の書き込み先ブロックに書き込む。前記コントローラは、前記第２のダイグループに対応する第２領域を指定する第２のライトコマンドを前記ホストから受信した場合、前記第２領域に書き込まれるべき第２のデータを、前記第２のダイグループから選択された第２の書き込み先ブロックに書き込む。
【図面の簡単な説明】
【００１０】
【図１】実施形態のメモリシステムの構成例を示すブロック図。
【図２】同実施形態のメモリシステム内の複数のＮＡＮＤ型フラッシュメモリダイを分類することによって得られる、各々が複数のチャンネルに跨がった複数の不揮発性メモリセット（ＮＶＭセット）を示すブロック図。
【図３】図２の各ＮＶＭセットに対応するブロック管理と各ＮＶＭセットに対応する一つ以上の領域（ネームスペース）との関係を示すブロック図。
【図４】同実施形態のメモリシステムによって実行される分離されたＮＶＭセットのためのホスト書き込み／ガベージコレクション動作を説明するための図。
【図５】同実施形態のメモリシステムによって実行される共有ＮＶＭセットのためのホスト書き込み／ガベージコレクション動作を説明するための図。
【図６】同実施形態のメモリシステム内の複数のＮＡＮＤ型フラッシュメモリダイを分類することによって得られる、同一チャンネルに接続されたＮＡＮＤ型フラッシュメモリダイの集合を各々が含む複数のＮＶＭセットを示すブロック図。
【図７】図６の各ＮＶＭセットに対応するブロック管理と各ＮＶＭセットに対応する一つ以上の領域（ネームスペース）との関係を示すブロック図。
【図８】同実施形態のメモリシステムに適用されるフラッシュメモリパッケージを模式的に示す図。
【図９】図８のフラッシュメモリパッケージの構造を示す断面図。
【図１０】同一チャンネルに接続されたＮＡＮＤ型フラッシュメモリダイの集合を各々が含む複数のＮＶＭセットとこれらＮＶＭセットとして使用される１つ以上のフラッシュメモリパッケージとの関係を示す図。
【図１１】同実施形態のメモリシステムによって実行される、あるＮＶＭサブセットに対するガベージコレクション動作の一部分を示す図。
【図１２】同実施形態のメモリシステムによって実行される、あるＮＶＭサブセットに対するガベージコレクション動作の残りの一部分を示す図。
【図１３】同実施形態のメモリシステムによって実行される、あるＮＶＭサブセットに対するガベージコレクション動作の残りの他の部分を示す図。
【図１４】同実施形態のメモリシステムによって実行されるＮＶＭセット間コピー動作を示す図。
【図１５】図１４のＮＶＭセット間コピー動作の前のアドレス変換テーブルの内容とＮＶＭセット間コピー動作の後のアドレス変換テーブルの内容との関係を示す図。
【図１６】同実施形態のメモリシステムによって実行されるＮＶＭセット間コピー動作の一部分を示す図。
【図１７】同実施形態のメモリシステムによって実行されるＮＶＭセット間コピー動作の残りの一部分を示す図。
【図１８】同実施形態のメモリシステムによって実行されるＮＶＭセット間コピー動作の残りの他の部分を示す図。
【図１９】同実施形態のメモリシステムによって実行されるＮＶＭセット交換動作の概要を説明するための図。
【図２０】ＮＶＭセット交換動作の前の２つのＮＶＭセットのために実行される、ホスト書き込み／ガベージコレクション動作を説明するための図。
【図２１】ＮＶＭセット交換動作のために２つのＮＶＭセット間で実行されるホスト書き込み／ガベージコレクション動作を説明するための図。
【図２２】同実施形態のメモリシステムによって実行される新ＮＶＭセット作成動作の概要を示す図。
【図２３】新ＮＶＭセット作成のために実行されるホスト書き込み／ガベージコレクション動作を説明するための図。
【図２４】同実施形態のメモリシステムによって実行される新ＮＶＭセット作成動作の一部分を示す図。
【図２５】同実施形態のメモリシステムによって実行される新ＮＶＭセット作成動作の残りの一部分を示す図。
【図２６】同実施形態のメモリシステムによって実行される新ＮＶＭセット作成動作の残りの他の部分を示す図。
【図２７】同実施形態のメモリシステムによって実行されるＮＶＭセット結合動作の概要を示す図。
【図２８】ＮＶＭセット結合のために実行されるホスト書き込み／ガベージコレクション動作を説明するための図。
【図２９】同実施形態のメモリシステムによって実行されるデータ書き込み／読み出し動作の手順の一部分を示すフローチャート。
【図３０】同実施形態のメモリシステムによって実行されるデータ書き込み／読み出し動作の手順の残り部分を示すフローチャート。
【図３１】同実施形態のメモリシステムによって、あるＮＶＭサブセット毎に実行されるガベージコレクション動作の手順を示すフローチャート。
【図３２】同実施形態のメモリシステムによって実行されるＮＶＭセット間コピー動作の手順を示すフローチャート。
【図３３】同実施形態のメモリシステムによって実行されるＮＶＭセット間コピー動作の別の手順を示すフローチャート。
【図３４】同実施形態のメモリシステムによって実行される新ＮＶＭセット作成動作の手順を示すフローチャート。
【図３５】同実施形態のメモリシステムによって実行される新ＮＶＭセット作成動作の別の手順を示すフローチャート。
【図３６】同実施形態のメモリシステムに適用されるホストの構成例を示すブロック図。
【図３７】同実施形態のメモリシステムとホストとを含むコンピュータの構成例を示すブロック図。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、実施形態を説明する。  
まず、図１を参照して、一実施形態に係るメモリシステムを含む情報処理システム１の構成を説明する。
【００１２】
このメモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、ＮＡＮＤフラッシュ技術ベースのソリッドステートドライブ（ＳＳＤ）３として実現されている。
【００１３】
情報処理システム１は、ホスト（ホストデバイス）２と、ＳＳＤ３とを含む。ホスト２は、サーバ、パーソナルコンピュータのような情報処理装置である。ホスト２として機能するサーバの典型例としては、データセンター内のサーバが挙げられる。
【００１４】
ホスト２がデータセンター内のサーバによって実現されるケースにおいては、このホスト（サーバ）２は、ネットワーク５０を介して複数のエンドユーザ端末５１に接続されてもよい。ホスト２は、これらエンドユーザ端末５１に対して様々なサービスを提供することができる。複数の仮想マシンが、このホスト（サーバ）２として機能する物理サーバ上で実行されてもよい。これら仮想マシンは、対応するクライアント（エンドユーザ端末５１）に各種サービスを提供するように構成された仮想サーバとして機能することができる。
【００１５】
ＳＳＤ３は、ホスト２として機能する情報処理装置（コンピューティングデバイス）のメインストレージとして使用され得る。ＳＳＤ３は、情報処理装置に内蔵されてもよいし、情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
【００１６】
ホスト２とＳＳＤ３とを相互接続するためのインタフェースとしては、ＳＣＳＩ、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）、ＡＴＡ、Ｓｅｒｉａｌ  ＡＴＡ（ＳＡＴＡ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）、Ｅｔｈｅｒｎｅｔ（登録商標），Ｆｉｂｒｅ  ｃｈａｎｎｅｌ、ＮＶＭ  Ｅｘｐｒｅｓｓ（ＮＶＭｅ）（登録商標）等を使用し得る。
【００１７】
ＳＳＤ３は、コントローラ４および不揮発性メモリ（ＮＡＮＤ型フラッシュメモリ）５を備える。ＳＳＤ３は、ランダムアクセスメモリ、例えば、ＤＲＡＭ６も備えていてもよい。
【００１８】
ＮＡＮＤ型フラッシュメモリ５は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。ＮＡＮＤ型フラッシュメモリ５は、２次元構造のＮＡＮＤ型フラッシュメモリであってもよいし、３次元構造のＮＡＮＤ型フラッシュメモリであってもよい。
【００１９】
ＮＡＮＤ型フラッシュメモリ５のメモリセルアレイは、複数のブロックＢ０〜Ｂｍ−１を含む。ブロックＢ０〜Ｂｍ−１の各々は多数のページ（ここではページＰ０〜Ｐｎ−１）によって編成される。ブロックＢ０〜Ｂｍ−１は、消去単位として機能する。ブロックは、「消去ブロック」、または「物理ブロック」と称されることもある。ページＰ０〜Ｐｎ−１の各々は、同一ワード線に接続された複数のメモリセルを含む。ページＰ０〜Ｐｎ−１は、データ書き込み動作およびデータ読み込み動作の単位である。
【００２０】
コントローラ４は、Ｔｏｇｇｌｅ、オープンＮＡＮＤフラッシュインタフェース（ＯＮＦＩ）のようなＮＡＮＤインタフェース１３、および複数のチャンネル（Ｃｈ）を介して、ＮＡＮＤ型フラッシュメモリ５に電気的に接続されている。ＮＡＮＤインタフェース１３は、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたＮＡＮＤ制御回路として機能する。
【００２１】
ＮＡＮＤ型フラッシュメモリ５は、図２に示すように、複数のＮＡＮＤ型フラッシュメモリダイ（図２においては「ＮＡＮＤダイ」として示されている）を含む。各ＮＡＮＤ型フラッシュメモリダイは、複数のブロックを含むメモリセルアレイとこのメモリセルアレイを制御する周辺回路とを含む不揮発性メモリダイである。個々のＮＡＮＤ型フラッシュメモリダイは独立して動作可能である。このため、ＮＡＮＤ型フラッシュメモリダイは、単一の並列動作単位として機能する。ＮＡＮＤ型フラッシュメモリダイは、「ＮＡＮＤ型フラッシュメモリチップ」とも称される。
【００２２】
図２においては、ＮＡＮＤインタフェース１３に複数のチャンネルＣｈ０、Ｃｈ１、Ｃｈ２、…ＣｈＮが接続されており、これらチャンネルＣｈ０、Ｃｈ１、Ｃｈ２、…ＣｈＮの各々に、同数（例えばチャンネル当たりＫ個のダイ、Ｋは２以上の整数）のＮＡＮＤ型フラッシュメモリダイそれぞれが接続されている場合が例示されている。各チャンネルは、対応するＮＡＮＤ型フラッシュメモリダイと通信するための通信線（メモリバス）を含む。
【００２３】
図２においては、ＮＡＮＤ型フラッシュメモリダイ６００、６０１、６０２〜６０６はチャンネルＣｈ０に接続されている。ＮＡＮＤ型フラッシュメモリダイ６１０、６１１、６１２〜６１６はチャンネルＣｈ１に接続されている。ＮＡＮＤ型フラッシュメモリダイ６２０、６２１、６２２〜６２６はチャンネルＣｈ２に接続されている。同様に、ＮＡＮＤ型フラッシュメモリダイ６４０、６４１、６４２〜６４６はチャンネルＣｈＮに接続されている。
【００２４】
コントローラ４は、チャンネルＣｈ０、Ｃｈ１、Ｃｈ２、…ＣｈＮを介してＮＡＮＤ型フラッシュメモリ５を制御する。コントローラ４は、チャンネルＣｈ０、Ｃｈ１、Ｃｈ２、…ＣｈＮを同時に駆動することができる。つまり、ＮＡＮＤインタフェース１３はチャンネルＣｈ０、Ｃｈ１、Ｃｈ２、…ＣｈＮにそれぞれ対応するＮ個のＮＡＮＤ制御回路を含んでいる。コントローラ４は、これらＮＡＮＤ制御回路を使用することによって、チャンネルＣｈ０、Ｃｈ１、Ｃｈ２、…ＣｈＮを互いに独立して駆動することができる。
【００２５】
本実施形態では、コントローラ４は、ＮＡＮＤ型フラッシュメモリダイの各々が一つのダイグループにのみ属するように、Ｋ×Ｎ個のＮＡＮＤ型フラッシュメモリダイ６００〜６４６を、複数のダイグループに分類する。以下では、このダイグループを「不揮発性メモリサブセット（ＮＶＭセット）」と称する。
【００２６】
図２においては、各ＮＶＭセットは、複数のチャンネルＣｈ０、Ｃｈ１、Ｃｈ２、…ＣｈＮに跨がっている。例えば、ＮＶＭセット６０は、チャンネルＣｈ０、Ｃｈ１、Ｃｈ２、…ＣｈＮにそれぞれ接続されたＮＡＮＤ型フラッシュメモリダイ６００、６１０、６２０、…６４０を含む。ＮＶＭセット６１は、チャンネルＣｈ０、Ｃｈ１、Ｃｈ２、…ＣｈＮにそれぞれ接続されたＮＡＮＤ型フラッシュメモリダイ６０１、６１１、６２１、…６４１を含む。ＮＶＭセット６２は、チャンネルＣｈ０に接続されたＮＡＮＤ型フラッシュメモリダイ６０２、６０３、…６０５、６０６、チャンネルＣｈ１に接続されたＮＡＮＤ型フラッシュメモリダイ６１２、６１３、…６１５、６１６、チャンネルＣｈ２に接続されたＮＡＮＤ型フラッシュメモリダイ６２２、６２３、…６２５、６２６、そして、チャンネルＣｈＮに接続されたＮＡＮＤ型フラッシュメモリダイ６４２、６４３、…６４５、６４６を含む。
【００２７】
このように、図２においては、Ｋ×Ｎ個のＮＡＮＤ型フラッシュメモリダイ６００〜６４６は、各々が複数のチャンネルに跨がっている複数のＮＶＭセットに分類されている。各ＮＶＭセットにおいては、最大Ｎ個のＮＡＮＤ型フラッシュメモリダイに対するデータ書き込み／読み出し動作を同時に実行することができる。
【００２８】
これら複数のＮＶＭセットには、ホスト２によって指定可能な複数の領域をそれぞれ関連付けることができる。これら複数の領域は、ホスト２によってアクセス可能な論理的な領域である。各ＮＶＭセットに対応する領域の数は１つであってもよいし、２以上であってもよい。さらに、各ＮＶＭセットに対応する領域の数は、ＮＶＭセット毎に異なっていてもよい。
【００２９】
コントローラ４は、異なるＮＶＭセットに対応する異なる領域をそれぞれ指定する複数のＩ／Ｏコマンド（ライトコマンド、またはリードコマンド）を、ダイコンテンション無しで、同時に実行することができる。したがって、例えば、ＮＶＭセット６０に対するデータ書き込み動作の実行中にＮＶＭセット６１に対応する領域に向けたリードコマンドがホスト２から受信されたとしても、コントローラ４は、このデータ書き込み動作の完了を待つことなく、このリードコマンドに対応するデータ読み出し動作を即座に実行することができる。
【００３０】
図１に示されるＳＳＤ３においては、コントローラ４は、ＮＡＮＤ型フラッシュメモリ５のデータ管理とＮＡＮＤ型フラッシュメモリ５のブロック管理とを実行するように構成されたフラッシュトランスレーション層（ＦＴＬ）としても機能することができる。
【００３１】
このＦＴＬによって実行されるデータ管理には、（１）論理アドレスそれぞれとＮＡＮＤ型フラッシュメモリ５の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、（２）ページ単位のリード／ライトとブロック単位の消去動作とを隠蔽するための処理、等が含まれる。論理アドレスは、ＳＳＤ３をアドレス指定するためにホスト２によって使用されるアドレスである。この論理アドレスとしては、通常、論理ブロックアドレス（ＬＢＡ）が使用される。
【００３２】
論理ブロックアドレス（ＬＢＡ）それぞれと物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブル（論理物理アドレス変換テーブル）として機能するルックアップテーブル（ＬＵＴ）を用いて実行される。あるＬＢＡに対応する物理アドレスは、このＬＢＡのデータがライトされたＮＡＮＤ型フラッシュメモリ５内の物理記憶位置を示す。ルックアップテーブル（ＬＵＴ）はＳＳＤ３の電源オン時にＮＡＮＤ型フラッシュメモリ５からＤＲＡＭ６にロードされてもよい。一般に、各ルックアップテーブルのサイズは、比較的大きい。したがって、各ルックアップテーブルの少なくとも一部がＤＲＡＭ６にアドレス変換テーブルキャッシュとして格納されてもよい。
【００３３】
ＮＡＮＤ型フラッシュメモリ５において、ページへのデータ書き込みは、１消去サイクル当たり１回のみ可能である。このため、コントローラ４は、あるＬＢＡに対応する更新データを、このＬＢＡに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ４は、対応するルックアップテーブル（ＬＵＴ）を更新してこのＬＢＡをこの別の物理記憶位置に関連付ける。これにより、このＬＢＡに対応する以前のデータは無効化される。
【００３４】
本実施形態では、複数のルックアップテーブル（ＬＵＴ）４０、４１、４２…が使用される。これらルックアップテーブル（ＬＵＴ）４０、４１、４２…は、基本的には、複数のＮＶＭセットにそれぞれ対応している。なお、各ルックアップテーブルは、ある一つの領域に対応付けられていてもよいし、ガベージコレクションの一つのグループに対応付けられていてもよい。
【００３５】
各ＮＶＭセットは、ガベージコレクション用のグループを少なくとも一つ含む。ガベージコレクション用のグループは、複数のブロックを含み、ガベージコレクションが施される単位として使用される。ガベージコレクション用のグループを一つのみ含むＮＶＭセットについては、一つのルックアップテーブルのみが用いられてもよい。ガベージコレクション用のグループを複数含むＮＶＭセットについては、複数のルックアップテーブルが用いられてもよい。
【００３６】
コントローラ４は、さらに、マルチネームスペースコントロール機能を有している。マルチネームスペースコントロール機能は、一つのストレージデバイスを複数のドライブであるかのように扱うことを可能にするために、ＳＳＤ３に複数の論理アドレス空間（ＬＢＡ空間）を割り当てることを可能にする。
【００３７】
上述の複数の領域の各々は、ネームスペースによって実現されてもよい。各ネームスペースは、ＮＡＮＤ型フラッシュメモリ５内の領域に相当する。各ネームスペースには、論理アドレス範囲（ＬＢＡ範囲）が割り当てられる。ＬＢＡ範囲のサイズ（つまりＬＢＡの数）は、ネームスペース毎に可変である。各ＬＢＡ範囲は、ＬＢＡ０から始まる。個々のネームスペースは、これらネームスペースの識別子によって識別される。
【００３８】
ホスト２からのライトコマンドは、特定のネームスペースの識別子、つまりネームスペースＩＤ（ＮＳＩＤ）を含む。コントローラ４は、ホスト２からのライトコマンド内のネームスペースＩＤに基づいて、ライトデータが書き込まれるべきアクセス対象の領域（ネームスペース）を決定する。同様に、ホスト２からのリードコマンドも、特定のネームスペースに対応するネームスペースＩＤを含む。コントローラ４は、ホスト２からのリードコマンド内のネームスペースＩＤに基づいて、データが読み出されるべきアクセス対象の領域（ネームスペース）を決定する。
【００３９】
ブロック管理には、バッドブロックの管理と、ウェアレベリングと、ガベージコレクション等が含まれる。
【００４０】
ウェアレベリングは、ブロックそれぞれの消耗を均一化するための動作である。
【００４１】
ガベージコレクションは、データを書き込むことが可能なフリーブロックの個数を増やすための動作である。ガベージコレクション動作においては、コントローラ４は、有効データと無効データとが混在する幾つかのブロック内の有効データのみを、別のブロック（例えばフリーブロック）にコピーする。ここで、有効データとは、ＬＵＴから参照されているデータ（すなわち論理アドレスから最新のデータとして紐付けられているデータ）であって、後にホスト２からリードされる可能性があるデータを意味する。無効データとは、もはやホスト２からリードされる可能性が無いデータを意味する。例えば、ある論理アドレスに関連付けられているデータは有効データであり、どの論理アドレスにも関連付けられていないデータは無効データである。そして、コントローラ４は、コピーされた有効データのＬＢＡそれぞれを、その有効データのコピー先物理アドレスにマッピングする。有効データが別のブロックにコピーされることによって無効データのみになったブロックは、フリーブロックとして解放される。これによって、このブロックはその消去動作が実行された後に再利用することが可能となる。
【００４２】
次に、コントローラ４の構成について説明する。
【００４３】
コントローラ４は、ホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、およびＤＲＡＭインタフェース１４等を含む。これらＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４は、バス１０を介して相互接続される。
【００４４】
このホストインタフェース１１は、ホスト２との通信を実行するように構成されたホストインタフェース回路である。このホストインタフェース１１は、例えば、ＰＣＩｅコントローラ（ＮＶＭｅコントローラ）であってよい。ホストインタフェース１１は、ホスト２から様々なコマンド（ライトコマンド、リードコマンド、各種制御コマンド、アンマップ（ＵＮＭＡＰ）コマンド、等）を受信する。
【００４５】
ライトコマンドは、ＳＳＤ３に対し、このライトコマンドによって指定されたデータをライトするように要求する。ライトコマンドは、開始ＬＢＡ、転送長、およびＩＤを含んでいてもよい。ライトコマンド内のＩＤは、データが書き込まれるべき領域を一意に識別するための識別子である。このＩＤは、ネームスペースＩＤであってもよい。リードコマンドは、ＳＳＤ３に対し、このリードコマンドによって指定されたデータをリードするように要求する。リードコマンドは、開始ＬＢＡ、転送長、およびＩＤを含んでいてもよい。リードコマンド内のＩＤは、データが読み出されるべき領域を一意に識別するための識別子である。このＩＤは、ネームスペースＩＤであってもよい。
【００４６】
ＣＰＵ１２は、ホストインタフェース１１、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４を制御するように構成されたプロセッサである。ＣＰＵ１２は、ＳＳＤ３の電源オンに応答してＮＡＮＤ型フラッシュメモリ５または図示しないＲＯＭから制御プログラム（ファームウェア）をＤＲＡＭ６にロードし、そしてこのファームウェアを実行することによって様々な処理を行う。なお、ファームウェアはコントローラ４内の図示しないＳＲＡＭ上にロードされてもよい。このＣＰＵ１２は、例えば、上述のＦＴＬの処理に加え、ホスト２からの様々なコマンドを処理するためのコマンド処理等を実行することができる。ＣＰＵ１２の動作は、ＣＰＵ１２によって実行される上述のファームウェアによって制御される。なお、ＦＴＬ処理およびコマンド処理の一部または全部は、コントローラ４内の専用ハードウェアによって実行してもよい。
【００４７】
ＣＰＵ１２は、ＮＶＭセット制御部２１、ガベージコレクション（ＧＣ）動作制御部２２、ＮＶＭセット間コピー制御部２３、新ＮＶＭセット作成制御部２４、ＮＶＭセット交換制御部２５、ＮＶＭセット結合部２６として機能することができる。
【００４８】
ＮＶＭセット制御部２１は、Ｋ×Ｎ個のＮＡＮＤ型フラッシュメモリダイ６００〜６４６の各々が一つのＮＶＭセットにのみ属するようにＫ×Ｎ個のＮＡＮＤ型フラッシュメモリダイ６００〜６４６を複数のＮＶＭセットに分類する。そして、ＮＶＭセット制御部２１は、各ＮＶＭセットに対応する少なくとも一つの領域を含む複数の領域のいずれか一つを指定するホスト２からのＩ／Ｏコマンドに応じて、複数のＮＶＭセット内の一つのＮＶＭセットに対するデータ書き込み／読み出し動作を実行する。例えば、複数のＮＶＭセットが第１のＮＶＭセットと第２のＮＶＭセットとを有するケースにおいては、ＮＶＭセット制御部２１は、第１のＮＶＭセットに対応する少なくとも一つの領域を指定するホスト２からの第１のＩ／Ｏコマンドに応じて、第１のＮＶＭセットに対するデータ書き込み／読み出し動作を実行し、第２のＮＶＭセットに対応する少なくとも一つの領域を指定するホスト２からの第２のＩ／Ｏコマンドに応じて、第２のＮＶＭセットに対するデータ書き込み／読み出し動作を実行する。
【００４９】
また、ＮＶＭセット制御部２１は、ＮＡＮＤ型フラッシュメモリ５（多数のＮＡＮＤ型フラッシュメモリダイ）５内のフリーブロック群を、複数のＮＶＭセットにそれぞれ対応する複数のフリーブロックプールによってＮＶＭセット毎に個別に管理する。フリーブロックは有効データを保持しないブロックを意味する。例えば、第１のＮＶＭセットに属するフリーブロックそれぞれは、第１のＮＶＭセットに対応する第１のフリーブロックプールによって管理され、第２のＮＶＭセットに属するフリーブロックそれぞれは、第２のＮＶＭセットに対応する第２のフリーブロックプールによって管理される。ＳＳＤ３を初期化する動作時においては、ＮＶＭセット制御部２１は、第１のＮＶＭセットに属する全てのブロックを第１のフリーブロックプールに配置し、第２のＮＶＭセットに属する全てのブロックを第２のフリーブロックプールに配置する。
【００５０】
複数のＮＶＭセットの各々について、ＮＶＭセット制御部２１は、対応するフリーブロックプール内のフリーブロックの一つをユーザデータ（ホスト２からのライトデータ、またはガベージコレクションのためにコピーされるべきデータ）が書き込まれるべきブロックとして割り当てる動作と、このユーザデータを割り当てられたブロックに書き込む動作と、このユーザデータで満たされたブロックをデータブロックプール（アクティブブロックプールとも云う）によって管理する動作と、データブロックプールによって管理され且つ有効データを保持しないブロックを、対応するフリーブロックプールに返却する動作とを実行する。
【００５１】
これにより、あるＮＶＭセットに対応するフリーブロックプールに配置されたブロック群をこのＮＶＭセットに対応する１以上の領域によってのみ使用することができるので、複数のＮＶＭセット間でダイコンテンションが起きないことを保証することが可能となる。なお、データブロックプールとは、対応するＮＶＭセットに属し且つ有効データを保持するブロックそれぞれを管理するためのプールを意味する。
【００５２】
本実施形態では、分離されたＮＶＭセットと共有ＮＶＭセットとの２種類のＮＶＭセットを扱うことができる。
【００５３】
分離されたＮＶＭセットは、一つのみのガベージコレクション用グループ（一つのみのデータブロックプール）を含むＮＶＭセットである。つまり、分離されたＮＶＭセットに対応するフリーブロックプールは、このＮＶＭセットに属し且つ有効データを保持するブロックそれぞれを管理する単一のデータブロックプールに専用のフリーブロックプールである。分離されたＮＶＭセットにおいては、単一のデータブロックプールが、分離されたＮＶＭセットに対応するフリーブロックプールを占有する。
【００５４】
共有ＮＶＭセットは、複数のガベージコレクション用グループ（複数のデータブロックプール）を含むＮＶＭセットである。つまり、共有ＮＶＭセットに対応するフリーブロックプールは、このＮＶＭセットに属し且つ有効データを保持するブロックそれぞれを管理する複数のデータブロックプールによって共有されるフリーブロックプールである。共有ＮＶＭセットにおいては、複数のデータブロックプールが、共有ＮＶＭセットに対応するフリーブロックプールを共有する。
【００５５】
ガベージコレクション（ＧＣ）動作制御部２２は、上述のガベージコレクション用グループ毎にガベージコレクションを独立して実行する。
【００５６】
分離されたＮＶＭセットのガベージコレクション、つまり分離されたＮＶＭセットに属する単一のデータブロックプール内のブロック群のガベージコレクションにおいては、ＧＣ動作制御部２２は、（１）分離されたＮＶＭセットに対応するフリーブロックプール内のフリーブロックの一つをコピー先ブロックとして割り当て、（２）このデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみをコピー先ブロックにコピーし、（３）コピー先ブロックへの有効データのコピーによって無効データのみになったブロックを、分離されたＮＶＭセットに対応するフリーブロックプールに返却する、動作を実行する。これにより、ある分離されたＮＶＭセットのＧＣによって作成されたフリーブロックをこのＮＶＭセットに対応する１以上の領域のみによって使用することができるので、複数のＮＶＭセット間でダイコンテンションが起きないことを保証することが可能となる。
【００５７】
共有ＮＶＭセットのガベージコレクション、つまり共有ＮＶＭセットに属する複数のデータブロックプールの一つのデータブロックプール内のブロック群のガベージコレクションにおいては、ＧＣ動作制御部２２は、（１）共有ＮＶＭセットに対応するフリーブロックプール内のフリーブロックの一つをコピー先ブロックとして割り当て、（２）一つのデータブロックプールに含まれ且つ有効データと無効データとが混在する一つ以上のブロックから有効データのみをコピー先ブロックにコピーし、（３）コピー先ブロックへの有効データのコピーによって無効データのみになった一つ以上のブロックを、共有ＮＶＭセットに対応するフリーブロックプールに返却する、動作を実行する。これにより、ある共有ＮＶＭセットのＧＣによって作成されたフリーブロックをこの共有ＮＶＭセットに対応する１以上の領域のみによって使用することができるので、複数のＮＶＭセット間でダイコンテンションが起きないことを保証することが可能となる。
【００５８】
ＮＶＭセット間コピー制御部２３は、ＮＶＭセットそれぞれの消耗度（プログラム／消去サイクルの数）を均一にするために、ＮＶＭセット間コピー動作を実行する。このＮＶＭセット間コピー動作は、例えば、高い消耗度を有する分離されたＮＶＭセットに格納されている有効データを、低い消耗度を有する分離されたＮＶＭセットにコピーするために使用できる。これによってこれらＮＶＭセットの消耗度を均一にすることができる。ホスト２は、コピー元ＮＶＭセットとコピー先ＮＶＭセットとを指定するパラメータを含むＮＶＭセット間コピーコマンドをＳＳＤ３に送出することができる。
【００５９】
ＮＶＭセット間コピー制御部２３は、（１）コピー元ＮＶＭセットに属するブロックから有効データを保持するブロックをコピー元ブロックとして選択し、（２）コピー元ブロック内の有効データのみを、コピー先ＮＶＭセットに対応するフリーブロックプールから割り当てられたコピー先ブロックにコピーし、（３）論理アドレスそれぞれとコピー元ＮＶＭセットの物理アドレスそれぞれとの間のマッピングを管理するルックアップテーブルを更新して、コピーされた有効データに対応する論理アドレスに、有効データがコピーされたコピー先ブロック内の物理記憶位置を示す物理アドレスをマッピングし、（４）コピー元ブロックから有効データが無くなった場合、コピー元ブロックを、コピー元ＮＶＭセットに対応するフリーブロックプールに返却し、（５）コピー元ＮＶＭセットに有効データを保持するブロックが存在しなくなるまで（１）〜（４）の動作を繰り返す。これにより、コピー元ＮＶＭセット内のデータ（高い更新頻度を有するデータ）を、少ないプログラム／消去サイクルの数を有するコピー先ＮＶＭセットに移動することが可能となる。この結果、消耗度の低いコピー先ＮＶＭセットが、高い更新頻度を有するデータの書き込みに利用される。よって、コピー元ＮＶＭセットのプログラム／消去サイクルの数が制限値に達するタイミングを遅らせることが可能となる。
【００６０】
新ＮＶＭセット作成制御部２４は、他のＮＶＭセットから新たなＮＶＭセットを作成する。例えば、新ＮＶＭセット作成制御部２４は、あるＮＶＭセット内の一部のＮＡＮＤ型フラッシュメモリダイ集合を新たなＮＶＭセットとして作成することができる。これにより、一つのＮＶＭセットを２つのＮＶＭセットに分割することが可能となる。
【００６１】
ＮＶＭセット交換制御部２５は、ＮＶＭセットそれぞれの消耗度（プログラム／消去サイクルの数）を均一にするために、ＮＶＭセット交換動作を実行する。このＮＶＭセット交換動作は、例えば、高い消耗度を有する分離されたＮＶＭセットと低い消耗度を有する分離されたＮＶＭセットとの間でデータを交換するために使用できる。これによってこれらＮＶＭセットの消耗度を均一にすることができる。ホスト２は、格納されているデータが交換されるべき２つのＮＶＭセット（第１ＮＶＭセット、第２ＮＶＭセット）を指定するパラメータを含むＮＶＭセット交換コマンドをＳＳＤ３に送出することができる。
【００６２】
ＮＶＭセット交換制御部２５は、第１のＮＶＭセット内の有効データのみを第２のＮＶＭセットにコピーする動作と、第２のＮＶＭセット内の有効データのみを第１のＮＶＭセットにコピーする動作とを実行する。
【００６３】
第１のＮＶＭセット内の有効データのみを第２のＮＶＭセットにコピーする動作においては、ＮＶＭセット交換制御部２５は、（１）第１のＮＶＭセットに属するブロックから有効データを保持するブロックをコピー元ブロックとして選択し、（２）コピー元ブロック内の有効データのみを、第２のＮＶＭセットに対応するフリーブロックプールから割り当てられたコピー先ブロックにコピーし、（３）論理アドレスそれぞれと第１のＮＶＭセットの物理アドレスそれぞれとの間のマッピングを管理するルックアップテーブルを更新して、コピーされた有効データに対応する論理アドレスに、有効データがコピーされたコピー先ブロック内の物理記憶位置を示す物理アドレスをマッピングし、（４）コピー元ブロックから有効データが無くなった場合、コピー元ブロックを、第１のＮＶＭセットに対応するフリーブロックプールに返却し、（５）第１のＮＶＭセットに有効データを保持するブロックが存在し無くなるまで（６）〜（９）の動作を繰り返す。
【００６４】
第２のＮＶＭセット内の有効データのみを第１のＮＶＭセットにコピーする動作においては、ＮＶＭセット交換制御部２５は、（１）第２のＮＶＭセットに属するブロックから有効データを保持するブロックをコピー元ブロックとして選択し、（２）コピー元ブロック内の有効データのみを、第１のＮＶＭセットに対応するフリーブロックプールから割り当てられたコピー先ブロックにコピーし、（３）論理アドレスそれぞれと第２のＮＶＭセットの物理アドレスそれぞれとの間のマッピングを管理するルックアップテーブルを更新して、コピーされた有効データに対応する論理アドレスに、有効データがコピーされたコピー先ブロック内の物理記憶位置を示す物理アドレスをマッピングし、（４）コピー元ブロックから有効データが無くなった場合、コピー元ブロックを、第２のＮＶＭセットに対応するフリーブロックプールに返却し、（５）第２のＮＶＭセットに有効データを保持するブロックが存在し無くなるまで（１）〜（４）の動作を繰り返す。
【００６５】
これにより、これら２つのＮＶＭセットの消耗度を均一化することが可能となる。
【００６６】
ＮＶＭセット結合部２６は、２以上のＮＶＭセットを一つのＮＶＭセットに結合する。結合対象の２以上のＮＶＭセットおよび結合先の一つのＮＶＭセットはホスト２によって指定することができる。
【００６７】
ＮＡＮＤインタフェース１３は、ＣＰＵ１２の制御の下、ＮＡＮＤ型フラッシュメモリ５を制御する。ＤＲＡＭインタフェース１４は、ＣＰＵ１２の制御の下、ＤＲＡＭ６を制御するように構成されたＤＲＡＭコントローラである。ＤＲＡＭ６の記憶領域の一部は、ホスト２からのライトデータを一時的に格納するためのライトバッファ（ＷＢ）として利用される。本実施形態では、複数のライトバッファ（ＷＢ）３０、３１、３２…が利用される。少なくとも一つのライトバッファ（ＷＢ）がＮＶＭセット毎に準備されてもよい。また、ＤＲＡＭ６の記憶領域の他の一部は、上述のルックアップテーブル（ＬＵＴ）４０、４１、４２…の格納に利用される。
【００６８】
図３は、図２の各ＮＶＭセットに対応するブロック管理と各ＮＶＭセットに対応する一つ以上の領域（ネームスペース）との関係の例を示す。
【００６９】
ＮＶＭセット６０は、チャンネルＣｈ０に接続されたＮＡＮＤ型フラッシュメモリダイ６００、チャンネルＣｈ１に接続されたＮＡＮＤ型フラッシュメモリダイ６１０、チャンネルＣｈ２に接続されたＮＡＮＤ型フラッシュメモリダイ６２０、…チャンネルＣｈＮに接続されたＮＡＮＤ型フラッシュメモリダイ６４０を含む。ＮＶＭセット６０に属し且つ有効データを保持しないブロック（フリーブロック）それぞれは、ＮＶＭセット６０に対応するフリーブロックプール８０によって管理される。ＳＳＤ３を初期化する処理においては、コントローラ４は、ＮＶＭセット６０に属する全てのブロック、つまりＮＡＮＤ型フラッシュメモリダイ６００、６１０、６２０、…６４０内の全てのブロックを、ＮＶＭセット６０に対応するフリーブロックプール８０に配置する。
【００７０】
ＮＶＭセット６０に属するブロックは、フリーブロックプール８０とＮＶＭサブセット９０とを用いて管理される。ＮＶＭサブセット９０は、ＮＶＭセット６０に属し且つ有効データを保持するブロックそれぞれを管理するためのデータブロックプールである。このＮＶＭサブセット９０に含まれるブロック群が、一つのガベージコレクション用グループを構成する。
【００７１】
フリーブロックプール８０は一つのＮＶＭサブセット９０に専用のフリーブロックプールである。したがって、ＮＶＭセット６０は、一つのＮＶＭサブセット９０によって専有されるＮＶＭセット（分離されたＮＶＭセット）として機能する。ＮＶＭサブセット９０には、一つのライトバッファ（ＷＢ）３０が関連付けられる。
【００７２】
ＮＶＭセット６０は、ホスト２によって指定可能な少なくとも一つの領域（ネームスペース）のための物理記憶スペースとして利用される。ＮＶＭセット６０は一つのネームスペースのみに専用の物理記憶スペースであってもよい。図３においては、ＮＶＭセット６０が２つのネームスペース１００、１０１用の物理記憶スペースとして利用される場合が例示されている。
【００７３】
ＮＶＭセット６１は、チャンネルＣｈ０に接続されたＮＡＮＤ型フラッシュメモリダイ６０１、チャンネルＣｈ１に接続されたＮＡＮＤ型フラッシュメモリダイ６１１、チャンネルＣｈ２に接続されたＮＡＮＤ型フラッシュメモリダイ６２１、…チャンネルＣｈＮに接続されたＮＡＮＤ型フラッシュメモリダイ６４１を含む。ＮＶＭセット６１に属し且つ有効データを保持しないブロック（フリーブロック）それぞれは、ＮＶＭセット６１に対応するフリーブロックプール８１によって管理される。ＳＳＤ３を初期化する処理においては、コントローラ４は、ＮＶＭセット６１に属する全てのブロック、つまりＮＡＮＤ型フラッシュメモリダイ６０１、６１１、６２１、…６４１内の全てのブロックを、ＮＶＭセット６１に対応するフリーブロックプール８１に配置する。
【００７４】
ＮＶＭセット６１に属するブロックは、フリーブロックプール８１とＮＶＭサブセット９１とを用いて管理される。ＮＶＭサブセット９１は、ＮＶＭセット６１に属し且つ有効データを保持するブロックそれぞれを管理するためのデータブロックプールである。このＮＶＭサブセット９１に含まれるブロック群が、一つのガベージコレクション用グループを構成する。フリーブロックプール８１は一つのＮＶＭサブセット９１に専用のフリーブロックプールである。したがって、ＮＶＭセット６１は、一つのＮＶＭサブセット９１によって専有されるＮＶＭセット（分離されたＮＶＭセット）として機能する。ＮＶＭサブセット９１には、一つのライトバッファ（ＷＢ）３１が関連付けられる。
【００７５】
ＮＶＭセット６１は、少なくとも一つの領域（ネームスペース）のための物理記憶スペースとして利用される。ＮＶＭセット６１は一つのネームスペースのみに専用の物理記憶スペースであってもよい。図３においては、ＮＶＭセット６１が一つのネームスペース１０２用の物理記憶スペースとして利用される場合が例示されている。
【００７６】
ＮＶＭセット６２は、チャンネルＣｈ０に接続されたＮＡＮＤ型フラッシュメモリダイ６０２、６０３、…６０５、６０６、チャンネルＣｈ１に接続されたＮＡＮＤ型フラッシュメモリダイ６１２、６１３、…６１５、６１６、チャンネルＣｈ２に接続されたＮＡＮＤ型フラッシュメモリダイ６２２、６２３、…６２５、６２６、…チャンネルＣｈＮに接続されたＮＡＮＤ型フラッシュメモリダイ６４２、６４３、…６４５、６４６を含む。ＮＶＭセット６２に属し且つ有効データを保持しないブロック（フリーブロック）それぞれは、ＮＶＭセット６２に対応するフリーブロックプール８２によって管理される。ＳＳＤ３を初期化する処理においては、コントローラ４は、ＮＶＭセット６２に属する全てのブロック、つまりＮＡＮＤ型フラッシュメモリダイ６０２〜６４６内の全てのブロックを、ＮＶＭセット６２に対応するフリーブロックプール８２に配置する。
【００７７】
ＮＶＭセット６２に属するブロックは、フリーブロックプール８２とＮＶＭサブセット９２、９３、９４、９５とを用いて管理される。ＮＶＭサブセット９２、９３、９４、９５の各々は、ＮＶＭセット６２に属し且つ有効データを保持するブロックそれぞれを管理するためのデータブロックプールである。ＮＶＭサブセット９２に含まれるブロック群が一つのガベージコレクション用グループを構成し、ＮＶＭサブセット９３に含まれるブロック群が別のガベージコレクション用グループを構成し、ＮＶＭサブセット９４に含まれるブロック群がさらに別のガベージコレクション用グループを構成し、ＮＶＭサブセット９５に含まれるブロック群がさらに別のガベージコレクション用グループを構成する。フリーブロックプール８２はＮＶＭサブセット９２、９３、９４、９５によって共有されるフリーブロックプールである。したがって、ＮＶＭセット６２は、複数のＮＶＭサブセット９２〜９５によって共有される共有ＮＶＭセットとして機能する。ＮＶＭサブセット９２、９３、９４、９５には、ライトバッファ（ＷＢ）３２、３３、３４、３５がそれぞれ関連付けられる。
【００７８】
ＮＶＭセット６２は、少なくとも一つの領域（ネームスペース）のための物理記憶スペースとして利用される。ＮＶＭセット６２は一つのネームスペースのみに専用の物理記憶スペースであってもよいし、複数のネームスペースのための物理記憶スペースであってもよい。図３においては、ＮＶＭセット６２が４つのネームスペース１０３、１０４、１０５、１０６用の物理記憶スペースとして利用される場合が例示されている。
【００７９】
また、図３においては、ネームスペース１０３が、２つのＮＶＭサブセット９２、９３を使用する場合が例示されている。例えば、ネームスペース１０３に対応するＬＢＡ範囲が２つのサブＬＢＡ範囲に分割されてもよい。一方のサブＬＢＡ範囲に対応するライトデータ（例えば、更新頻度の低いコールドデータ）は、ライトバッファ（ＷＢ）３２を介して、ＮＶＭサブセット９２用のインプットブロック（書き込み先ブロック）に書き込まれてもよい。他方のサブＬＢＡ範囲に対応するライトデータ（例えば、更新頻度の高いホットデータ（メタデータ）は、ライトバッファ（ＷＢ）３３を介して、ＮＶＭサブセット９３用のインプットブロック（書き込み先ブロック）に書き込まれてもよい。
【００８０】
図３においては、ネームスペース１００または１０１のＩＤを含むホスト２からのＩ／Ｏコマンドに応じてＮＶＭセット６０に対するデータ書き込み／読み出し動作が実行される。また、ネームスペース１０２のＩＤを含むホスト２からのＩ／Ｏコマンドに応じてＮＶＭセット６１に対するデータ書き込み／読み出し動作が実行される。また、ネームスペース１０３〜１０６の何れかのネームスペースのＩＤを含むホスト２からのＩ／Ｏコマンドに応じてＮＶＭセット６２に対するデータ書き込み／読み出し動作が実行される。したがって、ＮＶＭセット６０、６１、６２それぞれを同時にアクセスすることができ、ダイコンテンションに起因する長いレイテンシ（特に長いリードレイテンシ）を抑制することができる。
【００８１】
また、ガベージコレクションはＮＶＭサブセット毎に独立して実行されるので、一つ以上のＮＶＭサブセットを専有するネームスペースは、他のネームスペースによって使用される他のＮＶＭサブセットのガベージコレクションによる影響（ＧＣコンテンション）を受けない。
【００８２】
共有ＮＶＭセット６２は、以下の特徴を有する。
【００８３】
共有ＮＶＭセット６２の内部においては、複数のＮＶＭサブセット９２〜９５間でフリーブロックプール８２が共有されているため、ダイコンテンションが発生する場合がある。しかし、あるＮＶＭサブセット用の新規のインプットブロックの割り当てが必要とされた時、コントローラ４は、共有フリーブロックプール８２内のフリーブロック群からプログラム／イレーズサイクルの数が少ないブロックを選択し、この選択したブロックを新規のインプットブロックとして割り当てることができる。これにより、ＮＶＭサブセット９２、９３、９４、９５それぞれの消耗を均一にすることができる。
【００８４】
また、分離されたＮＶＭセット６０、６１は、以下の特徴を有する。
【００８５】
分離されたＮＶＭセット６０、６１の各々の内部においては、一つのＮＶＭサブセットが一つのフリーブロックプールを専有することができる。したがって、この一つのＮＶＭサブセットに一つのネームスペースが対応しているならば、このネームスペースは、ダイコンテンション無しで、分離されたＮＶＭセットを専有することができる。しかし、分離されたＮＶＭセットは他のＮＶＭセットとフリーブロック群を共有していないため、もしある特定の分離されたＮＶＭセットに格納されるデータの書き換え頻度が高いならば、このＮＶＭセットの消耗度が他のＮＶＭセットの消耗度よりも高くなるという状態が生じうる。このように不均等な消耗はＳＳＤ３の寿命を低減させる要因となる。
【００８６】
本実施形態では、共有ＮＶＭセットと分離されたＮＶＭセットとを１台のＳＳＤ３内に共存させることができる。したがって、例えば、ワークロードに応じて、共有ＮＶＭセットと分離されたＮＶＭセットとを使い分けることが可能となる。
【００８７】
また、図３のケースにおいては、個々のネームスペースに対して以下の環境が提供される。
【００８８】
＜ＮＶＭセット６０＞
ネームスペース１００、１０１は、一つのＮＶＭサブセット９０を共有する。ネームスペース１００、１０１と他のネームスペースとの間のダイコンテンションは生じないが、ネームスペース１００、１０１間のＧＣコンテンションは生じうる。
【００８９】
＜ＮＶＭセット６１＞
ネームスペース１０２は、一つのＮＶＭサブセット９１を専有する。ネームスペース１０２と他のネームスペースとの間のダイコンテンション、ＧＣコンテンションは生じない。
【００９０】
＜ＮＶＭセット６２＞
ネームスペース１０３は、２つのＮＶＭサブセット９２、９３を専有する。ネームスペース１０３とＮＶＭセット６２を使用する他のネームスペースとの間のダイコンテンションは生じうるが、ネームスペース１０３と他のネームスペースとの間のＧＣコンテンションは生じない。
【００９１】
ネームスペース１０４、１０５は、一つのＮＶＭサブセット９４を共有する。ネームスペース１０４、１０５とＮＶＭセット６２を使用する他のネームスペースとの間のダイコンテンションは生じうる。また、ネームスペース１０４、１０５と他のネームスペースとの間のＧＣコンテンションは生じないが、ネームスペース１０４、１０５間のＧＣコンテンションは生じうる。
【００９２】
ネームスペース１０６は、一つのＮＶＭサブセット９５を専有する。ネームスペース１０６とＮＶＭセット６２を使用する他のネームスペースとの間のダイコンテンションは生じうるが、ネームスペース１０６と他のネームスペースとの間のＧＣコンテンションは生じない。
【００９３】
次に、図４を参照して、分離されたＮＶＭセット６０、６１のためのホスト書き込み／ガベージコレクション動作を説明する。
【００９４】
図４の左上部は、ＮＶＭセット６０のためのホスト書き込み／ガベージコレクション動作を示している。
【００９５】
（１）ユーザインプットブロックの割り当て
はじめに、フリーブロックプール８０内の１つのフリーブロックがユーザインプットブロック２１０として割り当てられる。ユーザインプットブロック２１０とは、ホスト２からのライトデータを書き込むためのブロックのことであり、書き込み先ブロックとも云う。なお、ユーザインプットブロック２１０がすでに割り当てられていれば、この動作は実行されない。
【００９６】
（２）ホスト書き込み
ホスト２からのライトデータがライトバッファ３０からユーザインプットブロック２１０に書き込まれる。ライトバッファ３０にはネームスペース１００またはネームスペース１０１に関連付けられたライトデータが一時的に格納されている。そして、ＮＶＭセット６０に対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス（ＬＢＡ）に、このライトデータが書き込まれたユーザインプットブロック２１０内の物理記憶位置を示す物理アドレスがマッピングされる。
【００９７】
（３）ユーザインプットブロックの移動
ユーザインプットブロック２１０がライトデータで満たされると、そのユーザインプットブロック２１０は、ＮＶＭサブセット（データブロックプール）９０に移動される。つまり、データで満たされたユーザインプットブロック２１０はＮＶＭサブセット（データブロックプール）９０によって管理される。
【００９８】
（４）ＧＣインプットブロックの割り当て
ＮＶＭセット６０においてガベージコレクションの実行が必要になった場合、他のＮＶＭセットとは独立して、ＮＶＭサブセット９０内のブロック群のためのガベージコレクション動作が実行される。例えば、ＮＶＭサブセット９０に含まれているブロック数が、ＮＶＭサブセット９０に対応するある閾値Ｘ１よりも多い場合に、ガベージコレクション動作が必要と判断されてもよい。閾値Ｘ１は、ＮＶＭサブセット９０用に割り当て可能なブロックの総数に基づいて決定されてもよい。例えば、ＮＶＭサブセット９０用に割り当て可能なブロックの総数から所定数を引いた残りの値が、ＮＶＭサブセット９０に対応するある閾値Ｘ１として利用されてもよい。
【００９９】
ＮＶＭセット６０においてガベージコレクション動作が必要になった場合、フリーブロックプール８０内の１つのフリーブロックがＧＣインプットブロック２００として割り当てられる。ＧＣインプットブロック２１０とは、ガベージコレクションにおいて有効データのコピー先となるブロックのことであり、コピー先ブロックとも云う。
【０１００】
（５）有効データのコピー
ＮＶＭサブセット９０内のブロックの中から有効データと無効データとが混在する一つ以上のブロックがコピー元ブロックとして選択される。その選択されたブロックの有効データのみがＧＣインプットブロック２００にコピーされる。そして、ＮＶＭセット６０に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス（ＬＢＡ）に、この有効データがコピーされたＧＣインプットブロック２００内の物理記憶位置を示す物理アドレスがマッピングされる。
【０１０１】
（６）ＧＣインプットブロックの移動
ＧＣインプットブロック２００が有効データで満たされると、ＧＣインプットブロック２００はＮＶＭサブセット９０に移動される。つまり、有効データで満たされたＧＣインプットブロック２００はＮＶＭサブセット（データブロックプール）９０によって管理される。
【０１０２】
（７）ブロックの返却
ＮＶＭサブセット９０によって管理されており且つ有効データを保持しないブロックは、ＮＶＭサブセット９０からフリーブロックプール８０に返却される。有効データを保持しないブロックは、ホスト書き込みによってその全てのデータが無効化されたブロック、またはガベージコレクション動作によってその全ての有効データがコピー先ブロックにコピーされたブロックである。
【０１０３】
図４の左下部は、ＮＶＭセット６１のためのホスト書き込み／ガベージコレクション動作を示している。
【０１０４】
（１）ユーザインプットブロックの割り当て
フリーブロックプール８１内の１つのフリーブロックがユーザインプットブロック２１１として割り当てられる。
【０１０５】
（２）ホスト書き込み
ホスト２からのライトデータがライトバッファ３１からユーザインプットブロック２１１に書き込まれる。ライトバッファ３１にはネームスペース１０２に関連付けられたライトデータが一時的に格納されている。そして、ＮＶＭセット６１に対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス（ＬＢＡ）に、このライトデータが書き込まれたユーザインプットブロック２１１内の物理記憶位置を示す物理アドレスがマッピングされる。
【０１０６】
（３）ユーザインプットブロックの移動
ユーザインプットブロック２１１がライトデータで満たされると、そのユーザインプットブロック２１１は、ＮＶＭサブセット（データブロックプール）９１に移動される。つまり、データで満たされたユーザインプットブロック２１１はＮＶＭサブセット（データブロックプール）９１によって管理される。
【０１０７】
（４）ＧＣインプットブロックの割り当て
ＮＶＭセット６１においてガベージコレクションの実行が必要になった場合、他のＮＶＭセットとは独立して、ＮＶＭサブセット９１内のブロック群のためのガベージコレクション動作が実行される。例えば、ＮＶＭサブセット９１に含まれているブロック数が、ＮＶＭサブセット９１に対応するある閾値Ｘ１よりも多い場合に、ガベージコレクション動作が必要と判断されてもよい。閾値Ｘ１は、ＮＶＭサブセット９１用に割り当て可能なブロックの総数に基づいて決定されてもよい。例えば、ＮＶＭサブセット９１用に割り当て可能なブロックの総数から所定数を引いた残りの値が、ＮＶＭサブセット９１に対応するある閾値Ｘ１として利用されてもよい。
【０１０８】
ＮＶＭセット６１においてガベージコレクション動作が必要になった場合、フリーブロックプール８１内の１つのフリーブロックがＧＣインプットブロック２０１として割り当てられる。
【０１０９】
（５）有効データのコピー
ＮＶＭサブセット９１内のブロックの中から有効データと無効データとが混在する一つ以上のブロックがコピー元ブロックとして選択される。その選択されたブロックの有効データのみがＧＣインプットブロック２０１にコピーされる。そして、ＮＶＭセット６１に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス（ＬＢＡ）に、この有効データがコピーされたＧＣインプットブロック２０１内の物理記憶位置を示す物理アドレスがマッピングされる。
【０１１０】
（６）ＧＣインプットブロックの移動
ＧＣインプットブロック２０１が有効データで満たされると、ＧＣインプットブロック２０１はＮＶＭサブセット９１に移動される。つまり、有効データで満たされたＧＣインプットブロック２０１はＮＶＭサブセット（データブロックプール）９１によって管理される。
【０１１１】
（７）ブロックの返却
ＮＶＭサブセット９１によって管理されており且つ有効データを保持しないブロックは、ＮＶＭサブセット９１からフリーブロックプール８１に返却される。有効データを保持しないブロックは、ホスト書き込みによってその全てのデータが無効化されたブロック、またはガベージコレクション動作によってその全ての有効データがコピー先ブロックにコピーされたブロックである。
【０１１２】
図５は、共有ＮＶＭセット６２のために実行されるホスト書き込み／ガベージコレクション動作を示す。ここでは、共有ＮＶＭセット６２が、２つのＮＶＭサブセット９４、９５のみを含む場合を想定する。
【０１１３】
ＮＶＭサブセット９４用のホスト書き込み／ガベージコレクション動作は以下のように実行される。
【０１１４】
（１）ユーザインプットブロックの割り当て
フリーブロックプール８２内の１つのフリーブロックがユーザインプットブロック２１４として割り当てられる。
【０１１５】
（２）ホスト書き込み
ホスト２からのライトデータがライトバッファ３４からユーザインプットブロック２１４に書き込まれる。ライトバッファ３４にはネームスペース１０４または１０５に関連付けられたライトデータが一時的に格納されている。そして、ＮＶＭサブセット９４に対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス（ＬＢＡ）に、このライトデータが書き込まれたユーザインプットブロック２１４内の物理記憶位置を示す物理アドレスがマッピングされる。
【０１１６】
（３）ユーザインプットブロックの移動
ユーザインプットブロック２１４がライトデータで満たされると、そのユーザインプットブロック２１４は、ＮＶＭサブセット（データブロックプール）９４に移動される。つまり、データで満たされたユーザインプットブロック２１４はＮＶＭサブセット（データブロックプール）９４によって管理される。
【０１１７】
（４）ＧＣインプットブロックの割り当て
ＮＶＭサブセット（データブロックプール）９４においてガベージコレクションの実行が必要になった場合、他のＮＶＭセットおよびＮＶＭセット６２内の他のＮＶＭサブセットとは独立して、ＮＶＭサブセット９４内のブロック群のためのガベージコレクション動作が実行される。例えば、ＮＶＭサブセット９４に含まれているブロック数が、ＮＶＭサブセット９４に対応するある閾値Ｘ１よりも多い場合に、ガベージコレクション動作が必要と判断されてもよい。閾値Ｘ１は、ＮＶＭサブセット９４用に割り当て可能なブロックの総数に基づいて決定されてもよい。例えば、ＮＶＭサブセット９４用に割り当て可能なブロックの総数から所定数を引いた残りの値が、ＮＶＭサブセット９４に対応するある閾値Ｘ１として利用されてもよい。
【０１１８】
ＮＶＭサブセット９４においてガベージコレクション動作が必要になった場合、フリーブロックプール８２内の１つのフリーブロックがＧＣインプットブロック２０４として割り当てられる。
【０１１９】
（５）有効データのコピー
ＮＶＭサブセット９４内のブロックの中から有効データと無効データとが混在する一つ以上のブロックがコピー元ブロックとして選択される。その選択されたブロックの有効データのみがＧＣインプットブロック２０４にコピーされる。そして、ＮＶＭサブセット９４に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス（ＬＢＡ）に、この有効データがコピーされたＧＣインプットブロック２０４内の物理記憶位置を示す物理アドレスがマッピングされる。
【０１２０】
（６）ＧＣインプットブロックの移動
ＧＣインプットブロック２０４が有効データで満たされると、ＧＣインプットブロック２０４はＮＶＭサブセット９４に移動される。つまり、有効データで満たされたＧＣインプットブロック２０４はＮＶＭサブセット（データブロックプール）９４によって管理される。
【０１２１】
（７）ブロックの返却
ＮＶＭサブセット９４によって管理されており且つ有効データを保持しないブロックは、ＮＶＭサブセット９４からフリーブロックプール８２に返却される。有効データを保持しないブロックは、ホスト書き込みによってその全てのデータが無効化されたブロック、またはガベージコレクション動作によってその全ての有効データがコピー先ブロックにコピーされたブロックである。
【０１２２】
ＮＶＭサブセット９５用のホスト書き込み／ガベージコレクション動作も、ＮＶＭサブセット９４用のホスト書き込み／ガベージコレクション動作と同様の手順で実行される。
【０１２３】
図６は、複数のＮＶＭセットの別の構成例を示す。
【０１２４】
図６では、各ＮＶＭセットは、同一チャンネルに接続されたＮＡＮＤ型フラッシュメモリダイの集合を含む。すなわち、ＮＶＭセット１１０は、チャンネルＣｈ０に接続されたＮＡＮＤ型フラッシュメモリダイ６００、６０１、６０２、６０３、…６０５、６０６を含む。ＮＶＭセット１１１は、チャンネルＣｈ１に接続されたＮＡＮＤ型フラッシュメモリダイ６１０、６１１、６１２、６１３、…６１５、６１６を含む。ＮＶＭセット１１２は、チャンネルＣｈ２に接続されたＮＡＮＤ型フラッシュメモリダイ６２０、６２１、６２２、６２３、…６２５、６２６と、…チャンネルＣｈＮに接続されたＮＡＮＤ型フラッシュメモリダイ６４０、６４１、６４２、６４３、…６４５、６４６とを含む。
【０１２５】
図６のＮＶＭセット構成においては、ＮＶＭセット１１０、１１１、１１２へのアクセスは、異なるチャンネルを介して実行される。したがって、あるＮＶＭセット内のどのＮＡＮＤ型フラッシュメモリダイに対するデータ書き込み／読み出し動作の実行中であっても、他のＮＶＭセット内の任意のＮＡＮＤ型フラッシュメモリダイに対するデータ書き込み／読み出し動作を即座に実行することができる。
【０１２６】
各ＮＶＭセットが複数のチャンネルに跨がっている図２のＮＶＭセット構成においては、一つのチャンネルがＮＶＭセット間で共有される。したがって、図２のＮＶＭセット構成において、もしＮＶＭセット６０内のＮＡＮＤ型フラッシュメモリダイ６００へのライト／リード要求とＮＶＭセット６１内のＮＡＮＤ型フラッシュメモリダイ６０１へのライト／リード要求とが同時に起こると、チャンネルＣｈ０へのアクセスの競合に起因するレイテンシの増加が発生する場合がある。
【０１２７】
図６のＮＶＭセット構成においては、ＮＶＭセット１１０、１１１、１１２へのアクセスは異なるチャンネルを介して実行されるので、たとえＮＶＭセット１１０、１１１、１１２それぞれに対するライト／リード要求が同時に発生しても、これらライト／リード要求を即座に実行することができる。したがって、ホスト２からのアクセス要求に対するレイテンシを低減することができる。
【０１２８】
しかし、図６のＮＶＭセット構成においては、各ＮＶＭセットのピークＩ／Ｏ性能は、単一チャンネルの性能に制限される。したがって、図６のＮＶＭセット構成は、単一チャンネルの性能を向上させることが可能な機構と組み合わせて利用することが好適である。
【０１２９】
図７は、図６の各ＮＶＭセットに対応するブロック管理と各ＮＶＭセットに対応する一つ以上の領域（ネームスペース）との関係を示す。
【０１３０】
ＮＶＭセット１１０は、図２のＮＶＭセット６０と同様に、分離されたＮＶＭセットとして機能し得る。ＳＳＤ３を初期化する処理においては、ＮＶＭセット１１０に属する全てのブロックは、ＮＶＭサブセット９０に専用のフリーブロックプール８０に配置される。ＮＶＭセット１１１は、図２のＮＶＭセット６１と同様に、分離されたＮＶＭセットとして機能し得る。ＳＳＤ３を初期化する処理においては、ＮＶＭセット１１１に属する全てのブロックは、ＮＶＭサブセット９１に専用のフリーブロックプール８１に配置される。ＮＶＭセット１１２は、図２のＮＶＭセット６２と同様に、共有ＮＶＭセットとして機能し得る。ＳＳＤ３を初期化する処理においては、ＮＶＭセット１１２に属する全てのブロックは、ＮＶＭサブセット９２〜９５によって共有されるフリーブロックプール８２に配置される。
【０１３１】
図８は、ＳＳＤ３に搭載されるＮＡＮＤ型フラッシュメモリ５として使用可能なフラッシュメモリパッケージを模式的に示す。
【０１３２】
このフラッシュメモリパッケージ９１０は、パッケージ内の積層されたＮＡＮＤ型フラッシュメモリダイの内部を垂直に貫通する電極を使用するＴＳＶ（スルー・シリコン・ビア）技術によって、データ入出力の高速化と消費電力の低減を可能にしたメモリパッケージである。フラッシュメモリパッケージ９１０においては、積層された複数のＮＡＮＤ型フラッシュメモリダイが単一のパッケージ内に収容されている。ここでは、８個のＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７が単一のパッケージ内に収容されている場合が例示されているが、パッケージ内に収容されるＮＡＮＤ型フラッシュメモリダイの数はこの例に限定されない。
【０１３３】
このフラッシュメモリパッケージ９１０は、プリント配線基板のようなパッケージ基板９１１、インタフェースダイ（インタフェースチップとも云う）Ｃｅ、上述の積層されたＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７を含む。パッケージ基板９１１の裏面には、信号を入出力するための複数の外部Ｉ／Ｏ端子（電極）として機能する複数のはんだバンプ９１６が配置されている。これら信号には、８ビット幅のＩ／Ｏ信号と、様々な制御信号（複数のチップイネーブル信号ＣＥ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトイネーブル信号ＷＥ、リードイネーブル信号ＲＥ、複数のレディー／ビジー信号ＲＢ、等）が含まれる。８ビット幅のＩ／Ｏ信号は、コマンド、アドレス、データ、等の伝送に使用される。アドレスの一部は、チップアドレスを含んでいてもよい。アクセス対象のＮＡＮＤ型フラッシュメモリダイは、チップイネーブル信号ＣＥとチップアドレスとの組み合わせによって選択されてもよい。
【０１３４】
パッケージ基板９１１の表面には、インタフェースダイＣｅが配置されている。インタフェースダイＣｅは図示しない配線層を介して複数のはんだバンプ９１６に接続されている。
【０１３５】
積層されたＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７は、多数の垂直ビア９２５によって相互接続されている。インタフェースダイＣｅは、これら多数の垂直ビア９２５を介して、Ｉ／Ｏ信号、チップイネーブル信号ＣＥ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトイネーブル信号ＷＥ、リードイネーブル信号ＲＥ等をＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７に伝送し、またこれら多数の垂直ビア９２５を介して、Ｉ／Ｏ信号、レディー／ビジー信号ＲＢ等をＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７から受信する。
【０１３６】
インタフェースダイＣｅは、パラレル／シリアル変換回路を内蔵していてもよい。インタフェースダイＣｅは、コントローラ４からの８ビット幅のＩ／Ｏ信号をパラレル／シリアル変換回路を使用して例えば６４ビット幅のＩ／Ｏ信号に変換し、これら６４ビット幅のＩ／Ｏ信号を、多数の垂直ビア９２５内に含まれる特定の６４本の垂直ビアを介してＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７に伝送してもよい。
【０１３７】
垂直ビア９２５の各々は、積層されたＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７それぞれの半導体基板を貫通する複数の貫通電極Ｖと、積層されたＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７間をそれぞれ接続する複数のバンプ電極（はんだバンプ）９１９とを含む。
【０１３８】
ワイヤボンディングを使用する従来のメモリパッケージにおいては、積層されるダイの数が増えると、パッケージの外部Ｉ／Ｏ端子の寄生容量、寄生抵抗が増大し、これによってメモリパッケージを高い周波数で動作させることが困難となる。
【０１３９】
図８のフラッシュメモリパッケージ９１０においては、ボンディングワイヤーの代わりに、多数の垂直ビア９２５によって、積層されたＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７が相互接続される。したがって、外部Ｉ／Ｏ端子の寄生容量、寄生抵抗を低減でき、フラッシュメモリパッケージ９１０内の各ＮＡＮＤ型フラッシュメモリダイを高い周波数で動作させることが可能となる。
【０１４０】
図９は、フラッシュメモリパッケージ９１０の断面図である。
【０１４１】
支持基板９１２の表面上には、積層されたＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７が実装されている。ＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７の各々には、貫通電極Ｖが埋め込まれている。貫通電極Ｖは、対応するＮＡＮＤ型フラッシュメモリダイ内の半導体基板を貫通する電極である。隣接する２つのＮＡＮＤ型フラッシュメモリダイの貫通電極Ｖの間は、はんだバンプ９１９によって接続される。この場合、各ＮＡＮＤ型フラッシュメモリダイの表面においては、貫通電極Ｖは、その半導体基板の上方に設けられた配線層を介して、はんだバンプ９１９に接続されてもよい。また、隣接する２つのＮＡＮＤ型フラッシュメモリダイ間は接着層９１５を介して物理的に結合されてもよい。
【０１４２】
支持基板９１２の裏面上には、インタフェースダイＣｅが実装されている。支持基板９１２には配線層９２３が形成されている。インタフェースダイＣｅは、複数のはんだバンプ９１８を介して配線層９２３に接続される。最下層のＮＡＮＤ型フラッシュメモリダイＤ０の各貫通電極Ｖは配線層９２３に接続される。これにより、インタフェースダイＣｅは、ＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７と電気的に接続される。
【０１４３】
支持基板９１２は複数のはんだバンプ９１７を介してパッケージ基板９１１に接続されている。インタフェースダイＣｅは、封止樹脂９２１で封止されている。ＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７は、封止樹脂９２２で封止されている。封止樹脂９２１、９２２の外周は、封止樹脂９２０で封止されているとともに、封止樹脂９２２の上部は金属板９１３で封止されている。
【０１４４】
図１０は、図６で説明した複数のＮＶＭセットこれらＮＶＭセットとして使用される１つ以上のフラッシュメモリパッケージとの関係を示す
図１０では、ＮＡＮＤ型フラッシュメモリ５内の多数のＮＡＮＤ型フラッシュメモリダイが２つのＮＶＭセット１３０、１３１に分類されている場合が例示されている。ＮＶＭセット１３０、１３１は、図６で説明した分離されたＮＶＭセット１１０、１１１にそれぞれ対応する。ＮＶＭセット１３０は、チャンネルＣｈ０にそれぞれ接続されたＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７を含み、ＮＶＭセット１３１は、チャンネルＣｈ１にそれぞれ接続されたＮＡＮＤ型フラッシュメモリダイＤ１０〜Ｄ１７を含む。
【０１４５】
ＮＶＭセット１３０内のＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７は、単一のフラッシュメモリパッケージ９１０によって実現されている。フラッシュメモリパッケージ９１０においては、図８、図９で説明したように、ＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７が積層されており、且つこれらＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７が多数の垂直ビア（各垂直ビアは貫通電極Ｖ及びはんだバンプ９１９を含む）によって相互接続されている。フラッシュメモリパッケージ９１０のパッケージ基板９１１の裏面に設けられた複数の外部Ｉ／Ｏ端子（はんだバンプ９１６）は、チャンネルＣｈ０内の複数の信号線に接続されている。これら信号線は、８ビット幅のＩ／Ｏ信号線と、様々な制御信号（複数のチップイネーブル信号ＣＥ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトイネーブル信号ＷＥ、リードイネーブル信号ＲＥ、複数のレディー／ビジー信号ＲＢ、等）のための複数の制御信号線を含み得る。ＮＡＮＤインタフェース１３からチャンネルＣｈ０を介して受信されるこれら信号は、インタフェースダイＣｅおよび多数の垂直ビアを介して、ＮＡＮＤ型フラッシュメモリダイＤ０〜Ｄ７に伝送される。
【０１４６】
同様に、ＮＶＭセット１３１内のＮＡＮＤ型フラッシュメモリダイＤ１０〜Ｄ１７も、単一のフラッシュメモリパッケージ９３０によって実現されている。フラッシュメモリパッケージ９３０は、フラッシュメモリパッケージ９１０と同様の構造を有している。すなわち、フラッシュメモリパッケージ９３０においては、ＮＡＮＤ型フラッシュメモリダイＤ１０〜Ｄ１７が積層されており、且つこれらＮＡＮＤ型フラッシュメモリダイＤ１０〜Ｄ１７が多数の垂直ビア（各垂直ビアは貫通電極Ｖ及びはんだバンプ９３９を含む）によって相互接続されている。フラッシュメモリパッケージ９３０のパッケージ基板９３１の裏面に設けられた複数の外部Ｉ／Ｏ端子（はんだバンプ９３６）は、チャンネルＣｈ１内の複数の信号線に接続されている。これら信号線は、８ビット幅のＩ／Ｏ信号線と、様々な制御信号（複数のチップイネーブル信号ＣＥ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトイネーブル信号ＷＥ、リードイネーブル信号ＲＥ、複数のレディー／ビジー信号ＲＢ、等）のための複数の制御信号線を含み得る。ＮＡＮＤインタフェース１３からチャンネルＣｈ１を介して受信されるこれら信号は、インタフェースダイＣｅおよび多数の垂直ビアを介して、ＮＡＮＤ型フラッシュメモリダイＤ１０〜Ｄ１７に伝送される。
【０１４７】
コントローラ４は、ＮＶＭセット１３０に対応する領域（ネームスペース）を指定するホスト２からのＩ／Ｏコマンドに応じて、チャンネルＣｈ０を介してＮＶＭセット１３０に対するデータ書き込み／読み出し動作を実行する。また、コントローラ４は、ＮＶＭセット１３１に対応する領域（ネームスペース）を指定するホスト２からのＩ／Ｏコマンドに応じて、チャンネルＣｈ１を介してＮＶＭセット１３１に対するデータ書き込み／読み出し動作を実行する。
【０１４８】
図１０の構成においては、各ＮＶＭセットのピークＩ／Ｏ性能は、単一チャンネルの性能に制限されるものの、各チャンネルの性能は、ワイヤボンディングで複数のダイを接続する通常のメモリパッケージを使用した場合よりも向上される。したがって、図１０の構成は、ＮＶＭセット１３０、１３１それぞれに対するライト／リード要求を同時に実行することを可能とし、且つ各ＮＶＭセットのピークＩ／Ｏ性能の低下を最小限に抑えることを可能とする。
【０１４９】
なお、図１０では、各分離されたＮＶＭセットに含まれる複数のＮＡＮＤ型フラッシュメモリダイを多数の垂直ビア（ＴＳＶ）を使用したメモリパッケージによって実現する場合を例示したが、共有ＮＶＭセットに含まれる複数のＮＡＮＤ型フラッシュメモリダイも、多数の垂直ビア（ＴＳＶ）を使用したメモリパッケージによって実現することができる。
【０１５０】
また、多数の垂直ビア（ＴＳＶ）を使用した単一のメモリパッケージが２以上のチャンネルをサポートしている場合には、２以上のチャンネルに対応する２以上のＮＶＭセットに含まれる複数のＮＡＮＤ型フラッシュメモリダイを、単一のメモリパッケージによって実現してもよい。
【０１５１】
次に、図１１〜図１３を参照して、図２、３で説明したＮＶＭセット６０に対するガベージコレクション動作について具体的に説明する。
【０１５２】
図１１〜図１３では、図示を簡単にするために、ＮＶＭセット６０が２つのＮＡＮＤ型フラッシュメモリダイ１〜２を含み、各ダイが、ページＰ１〜Ｐ４を含む２つのブロックを有する場合を想定する。
【０１５３】
図１１に示すように、フリーブロックプール８０内のフリーブロック（ここでは、フリーブロック＃２１）がＧＣインプットブロック２００として割り当てられる。
【０１５４】
続いて、ＮＶＭサブセット９０から有効データと無効データとが混在するブロック（ブロック＃１１）がコピー元ブロックとして選択され、この選択されたコピー元ブロック（ブロック＃１１）内の有効データのみがＧＣインプットブロック２００（ブロック＃２１）にコピーされる。
【０１５５】
ブロック＃１１において、有効データｄ１、ｄ３と無効データｄ２、ｄ４とが混在している場合には、有効データｄ１およびデータｄ３のみがＧＣインプットブロック２００（ブロック＃２１）にコピーされる。このとき、データｄ１はブロック＃２１のページＰ１にコピーされ、データｄ３はブロック＃２１のページＰ２にコピーされる。
【０１５６】
ブロック＃１１の有効データ（データｄ１およびデータｄ３）がＧＣインプットブロック２００（ブロック＃２１）にコピーされると、ブロック＃１１のデータｄ１およびデータｄ３は無効化される。これにより、ブロック＃１１は有効データを保持しないブロックとなったため、図１２に示すように、ブロック＃１１はフリーブロックプール８０に返却される。
【０１５７】
ＮＶＭサブセット９０には、有効データｄ５、ｄ７と、無効データｄ６、ｄ８とが混在するブロック＃１２が存在する。ブロック＃１２がコピー元ブロックとして選択されると、ブロック＃１２の有効データ（データｄ５およびデータｄ７）のみがＧＣインプットブロック２００（ブロック＃２１）にコピーされる。このとき、データｄ５は、ブロック＃２１のページＰ３にコピーされ、データｄ７は、ブロック＃２１のページＰ４にコピーされる。
【０１５８】
ブロック＃１２の有効データ（データｄ５およびデータｄ７）がＧＣインプットブロック２００（ブロック＃２１）にコピーされると、ブロック＃１２のデータｄ５およびデータｄ７は無効化される。これにより、ブロック＃１２は有効データを保持しないブロックとなったため、図１３に示すように、ブロック＃１２はフリーブロックプール８０に返却される。また、データｄ５およびデータｄ７がＧＣインプットブロック２００（ブロック＃２１）にコピーされると、ブロック＃２１は、有効データで満たされる。この場合、ブロック＃２１は、ＮＶＭサブセット９０に移動される。
【０１５９】
図１４は、ＮＶＭセット間コピー動作を示す。ここでは、図２におけるＮＶＭセット６０がコピー元ＮＶＭセット、図２におけるＮＶＭセット６１がコピー先ＮＶＭセットであるとして説明する。ホスト２は、コピー元ＮＶＭセットとコピー先ＮＶＭセットとを指定することができる。コピー先ＮＶＭセットは、ホスト２によって現在利用されていないＮＶＭセットであってよい。ホスト２によって現在利用されていないＮＶＭセットをコピー先ＮＶＭセットとして使用することにより、ＮＶＭセット間コピー動作によってホットデータとコールドデータとがコピー先ＮＶＭセットに混在してしまうことを防止することができる。なお、現在利用されていないＮＶＭセットが存在しない場合には、ホスト２は、新たなＮＶＭセットの作成を要求するコマンドをＳＳＤ３に送出してもよい。
【０１６０】
ＮＶＭセット間コピー動作は以下の手順で実行される。
【０１６１】
（１）ユーザインプットブロックの割り当て
コピー先ＮＶＭセット（ＮＶＭセット６１）では、フリーブロックプール８１内の１つのフリーブロックがユーザインプットブロック２１１として割り当てられる。
【０１６２】
（２）ホスト書き込み
ホスト２からのライトデータがライトバッファ３１からユーザインプットブロック２１１に書き込まれる。通常、ライトバッファ３１には、コピー先ＮＶＭセットに対応するネームスペース１０２に関連付けられたライトデータが格納されるが、ＮＶＭセット間コピー動作が開始された後は、コピー元ＮＶＭセットに対応するネームスペース１００または１０１に関連付けられたライトデータがライトバッファ３１に格納される。そして、ＮＶＭサブセット９０に対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス（ＬＢＡ）に、このライトデータが書き込まれたユーザインプットブロック２１１内の物理記憶位置を示す物理アドレスがマッピングされる。
【０１６３】
このように、ＮＶＭセット間コピー動作の前では、ネームスペース１０１またはネームスペース１００に関連付けられたライトデータの書き込み先はコピー元ＮＶＭセット（ＮＶＭセット６０）のユーザインプットブロック２１０であったが、ＮＶＭセット間コピー動作後には、ネームスペース１０１またはネームスペース１００に関連付けられたライトデータの書き込み先は、コピー先ＮＶＭセット（ＮＶＭセット６１）のユーザインプットブロック２１１となる。
【０１６４】
（３）ユーザインプットブロックの移動
ユーザインプットブロック２１１がライトデータで満たされると、そのユーザインプットブロック２１１は、ＮＶＭサブセット（データブロックプール）９１に移動される。つまり、データで満たされたユーザインプットブロック２１１はＮＶＭサブセット（データブロックプール）９１によって管理される。
【０１６５】
（４）ＧＣインプットブロックの割り当て
コピー先ＮＶＭセット（ＮＶＭセット６１）において、フリーブロックプール８１内の１つのフリーブロックがＧＣインプットブロック２０１として割り当てられる。
【０１６６】
（５）コピー元ＮＶＭセットからコピー先ＮＶＭセットへの有効データのコピー
コピー元ＮＶＭセット（ＮＶＭセット６０）のＮＶＭサブセット９０内のブロックから、有効データを保持するブロックがコピー元ブロックとして選択される。そして、このコピー元ブロック内の有効データのみがコピー先ＮＶＭセット（ＮＶＭセット６１）のＧＣインプットブロック（コピー先ブロック）２０１にコピーされる。この場合、まず、このコピー元ブロックからコピー対象の有効データが選択される。そして、この選択された有効データがこのコピー元ブロックから読み出され、そしてＧＣインプットブロック（コピー先ブロック）２０１に書き込まれる。
【０１６７】
有効データがＧＣインプットブロック２０１にコピーされると、ＮＶＭサブセット９０に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス（ＬＢＡ）に、この有効データがコピーされたＧＣインプットブロック２０１内の物理記憶位置を示す物理アドレスがマッピングされる。
【０１６８】
（６）ＧＣインプットブロックの移動
コピー先ＮＶＭセット（ＮＶＭセット６１）において、ＧＣインプットブロック２０１がコピー元ＮＶＭセット（ＮＶＭセット６０）のブロックからの有効データで満たされると、ＧＣインプットブロック２０１はＮＶＭサブセット９１に移動される。つまり、有効データで満たされたＧＣインプットブロック２０１はＮＶＭサブセット（データブロックプール）９１によって管理される。
【０１６９】
（７）ブロックの返却
コピー先ＮＶＭセット（ＮＶＭセット６１）において、ＮＶＭサブセット９１によって管理されており且つ有効データを保持しないブロックは、ＮＶＭサブセット９１からフリーブロックプール８１に返却される。例えば、ＮＶＭサブセット９１内のあるブロックに保持されている全てのデータが、ユーザインプットブロック２１１への新たなライトデータの書き込みによって無効化されると、このブロックが、ＮＶＭサブセット９１からフリーブロックプール８１に返却される。
【０１７０】
（７）’コピー元ブロックの返却
コピー元ＮＶＭセット（ＮＶＭセット６０）において、コピー元ブロックの有効データがＧＣインプットブロック２０１にコピーされることによってこのコピー元ブロックに有効データが存在しなくなった場合、このコピー元ブロックは、ＮＶＭサブセット９０からフリーブロックプール８０に返却される。
【０１７１】
このＮＶＭセット間コピー動作により、例えば、コピー元ＮＶＭセットに格納されているデータ（ホットデータ）用の物理記憶スペースを、少ない書き換え回数（少ないプログラム／イレーズサイクルの数）を有するコピー先ＮＶＭセットに変更することができる。よって、ＮＶＭセット間の消耗度を均一化するウェアレベリングを実行することができる。
【０１７２】
なお、コピー対象として選択された有効データが実際にＧＣインプットブロック２０１にコピーされる前に、この有効データのＬＢＡｘと同じＬＢＡｘを有するライトデータ（このＬＢＡｘに対応する新データ）がユーザインプットブロック２１１に書き込まれる場合がある。ライトデータ（このＬＢＡｘに対応する新データ）がユーザインプットブロック２１１に書き込まれると、ＮＶＭサブセット９０に対応するルックアップテーブルが更新され、これによって、このライトデータに対応するＬＢＡｘに、このライトデータが書き込まれたユーザインプットブロック２１１内の物理記憶位置を示す物理アドレスがマッピングされる。
【０１７３】
この場合、選択された有効データはもはやホスト２によってリードされない古いデータとなる。したがって、もしコピー対象として選択された有効データが実際にＧＣインプットブロック２０１にコピーされる前に、この有効データのＬＢＡｘと同じＬＢＡｘを有するライトデータがユーザインプットブロック２１１に書き込まれたならば、この有効データのコピー動作は中止されてもよい。これにより、無駄なコピー動作が実行されることを防ぐことができる。
【０１７４】
あるいは、有効データのコピー動作を中止する代わりに、選択された有効データのコピー動作自体は実行し且つＮＶＭサブセット９０に対応するルックアップテーブルを更新しないようにしてもよい。これにより、ＬＢＡｘに対応する物理アドレスが、この有効データ（古いデータ）がコピーされた物理記憶位置を示す値に変更されてしまうことを防止することができる。より詳しくは、あるＬＢＡに対応する有効データがＧＣインプットブロック２０１にコピーされる度に、ルックアップテーブルを参照することによってこのＬＢＡに対応する物理アドレスがコピー元ＮＶＭセット（ＮＶＭセット６０）またはコピー先ＮＶＭセット（ＮＶＭセット６１）のいずれに対応する物理アドレスであるかが判定されてもよい。もしこの物理アドレスがコピー先ＮＶＭセット（ＮＶＭセット６１）に対応する物理アドレスであるならば、このＬＢＡに対応する新データがユーザインプットブロック２１１に書き込まれたと認識され、ルックアップテーブルの更新は実行されない。一方、この物理アドレスがコピー元ＮＶＭセット（ＮＶＭセット６０）に対応する物理アドレスであるならば、コピーされた有効データがこのＬＢＡに対応する最新のデータであると認識され、ルックアップテーブルが更新される。ルックアップテーブルの更新により、このＬＢＡには、有効データがコピーされた物理記憶位置を示す物理アドレスがマッピングされる。
【０１７５】
図１５は、図１４のＮＶＭセット間コピー動作の前のアドレス変換テーブルの内容とＮＶＭセット間コピー動作の後のアドレス変換テーブルの内容との関係を示す。  
ＮＶＭセット間コピー動作が実行される前、ＮＶＭサブセット９０に対応するＬＵＴ４０は、コピー元ＮＶＭセット（ＮＶＭセット６０）の物理アドレスのみを保持している。
【０１７６】
コピー元ＮＶＭセット（ＮＶＭセット６０）からコピー先ＮＶＭセット（ＮＶＭセット６１）へＮＶＭセット間コピー動作が開始されると、ＬＵＴ４０の物理アドレスが順次更新されていく。例えば、ＬＢＡ１０に対応するデータｄ１０がコピー元ＮＶＭセット（ＮＶＭセット６０）からコピー先ＮＶＭセット（ＮＶＭセット６１）のＧＣインプットブロック２０１にコピーされた場合、ＬＵＴ４０のＬＢＡ１０に、データｄ１０がコピーされたコピー先ＮＶＭセット（ＮＶＭセット６１）内の物理記憶位置を示す物理アドレスがマッピングされる。よって、ＮＶＭセット間コピー動作が完了すると、ＬＵＴ４０は、ＮＶＭセット６１の物理アドレスのみを保持するようになる。
【０１７７】
このように、ＧＣと同様の仕組みを使用してＮＶＭセット間コピー動作を実行することにより、コントローラ４は、コピー先ＮＶＭセット（ＮＶＭセット６１）にコピーされたデータに対応するアドレス変換情報を作成するための特別な処理を行うこと無く、ホスト２から要求されるデータを、ＬＵＴ４０を参照することによってコピー先ＮＶＭセット（ＮＶＭセット６１）から読み出すことができる。
【０１７８】
次に、図１６〜図１８を参照して、ＮＶＭセット間コピー動作について具体的に説明する。
【０１７９】
図１６〜図１８では、図示を簡単にするために、ＮＶＭセット６０がＮＡＮＤ型フラッシュメモリダイ１〜２を含み、ＮＶＭセット６１がＮＡＮＤ型フラッシュメモリダイ３〜４を含み、各ダイは、ページＰ１〜Ｐ４を各々が含む２つのブロックを有する場合を想定する。また、ＮＶＭセット６０からＮＶＭセット６１へ有効データがコピーされることを想定する。
【０１８０】
図１６に示すように、コピー先ＮＶＭセット（ＮＶＭセット６１）においてフリーブロックプール８１内のフリーブロック（ここでは、ブロック＃４１）がＧＣインプットブロック２０１として割り当てられる。
【０１８１】
続いて、コピー元ＮＶＭセット（ＮＶＭセット６０）では、ＮＶＭサブセット９０内のブロックから有効データを保持するブロックがコピー元ブロックとして選択され、この選択されたコピー元ブロック（ブロック＃１１）内の有効データのみがコピー先ＮＶＭセット（ＮＶＭセット６１）のＧＣインプットブロック２０１（ブロック＃４１）にコピーされる。
【０１８２】
ブロック＃１１において、有効データｄ１、ｄ３と無効データｄ２、ｄ４とが混在している場合には、有効データｄ１およびデータｄ３のみがＧＣインプットブロック２０１（ブロック＃４１）にコピーされる。このとき、データｄ１はブロック＃４１のページＰ１にコピーされ、データｄ３はブロック＃４１のページＰ２にコピーされる。
【０１８３】
ブロック＃１１の有効データ（データｄ１およびデータｄ３）がＧＣインプットブロック２０１（ブロック＃４１）にコピーされると、ブロック＃１１のデータｄ１およびデータｄ３は無効化される。これにより、ブロック＃１１は有効データを保持しないブロックとなったため、図１７に示すように、ブロック＃１１はフリーブロックプール８０に返却される。
【０１８４】
ＮＶＭサブセット９０には、有効データｄ５、ｄ７と、無効データｄ６、ｄ８とが混在するブロック＃１２が存在する。ブロック＃１２がコピー元ブロックとして選択されると、ブロック＃１２の有効データ（データｄ５およびデータｄ７）のみがＧＣインプットブロック２０１（ブロック＃４１）にコピーされる。このとき、データｄ５は、ブロック＃４１のページＰ３にコピーされ、データｄ７は、ブロック＃４１のページＰ４にコピーされる。
【０１８５】
ブロック＃１２の有効データ（データｄ５およびデータｄ７）がＧＣインプットブロック２０１（ブロック＃４１）にコピーされると、ブロック＃１２のデータｄ５およびデータｄ７は無効化される。これにより、ブロック＃１２は有効データを保持しないブロックとなったため、図１８に示すように、ブロック＃１２はフリーブロックプール８０に返却される。また、データｄ５およびデータｄ７がＧＣインプットブロック２０１（ブロック＃４１）にコピーされると、ブロック＃４１は、有効データで満たされる。この場合、ブロック＃４１は、ＮＶＭサブセット９１に移動される。
【０１８６】
図１９は、２つのＮＶＭセット（ＮＶＭセット＃１、ＮＶＭセット＃２）間でデータを交換するＮＶＭセット交換動作の概要を示す。
【０１８７】
ここでは、ＮＶＭセット＃１がＮＶＭセット６０であり、ＮＶＭセット＃２がＮＶＭセット６１であることを想定する。また、ＮＶＭセット交換動作前において、ＮＶＭセット＃１（ＮＶＭセット６０）にデータＡ（高い更新頻度を有するデータ）が格納されており、ＮＶＭセット＃２（ＮＶＭセット６１）にデータＢ（低い更新頻度を有するデータ）が格納されていることを想定する。
【０１８８】
この場合、ＮＶＭセット＃１（ＮＶＭセット６０）の書き換え回数（プログラム／イレーズサイクルの数）は、ＮＶＭセット＃２（ＮＶＭセット６１）の書き換え回数（プログラム／イレーズサイクルの数）よりも多くなる。ここで、ＮＶＭセットの書き換え回数（プログラム／イレーズサイクルの数）は、このＮＶＭセットに所属する全ブロックのプログラム／イレーズサイクルの数の平均によって表されてもよいし、このＮＶＭセットに所属する全ブロックのプログラム／イレーズサイクルの数の合計によって表されてもよい。
【０１８９】
例えば、ＮＶＭセット＃１（ＮＶＭセット６０）は、１００日の期間中に８００回書き換えられるのに対し（プログラム／イレーズサイクルの数＝８００）、ＮＶＭセット＃２（ＮＶＭセット６１）は、同じ１００日の期間中に１００回しか書き換えられない（プログラム／イレーズサイクルの数＝１００回）。個々のブロックの書き換え回数の制限値が例えば１０００回である場合、ＮＶＭセット＃１において、２００回（＝１０００回−８００回）分の書き換え（プログラム／イレーズ動作）が実行されると、ＮＶＭセット＃１の書き換え回数がこの制限値に達する。この場合、ＮＶＭセット＃１内の各ブロックはもはや正常に機能できなくなる可能性が高い。
【０１９０】
本実施形態では、必要に応じて、ＮＶＭセット＃１（ＮＶＭセット６０）とＮＶＭセット＃２（ＮＶＭセット６１）との間でデータを交換する動作を実行することができる。例えば、ＳＳＤ３の使用開始から１００日経過した時点で、ＮＶＭセット交換を要求するホスト２からのコマンドに応じて、ＮＶＭセット＃１（ＮＶＭセット６０）とＮＶＭセット＃２（ＮＶＭセット６１）との間でデータが交換されてもよい。
【０１９１】
ＮＶＭセット交換動作では、ＮＶＭセット＃１（ＮＶＭセット６０）に格納されている有効データがＮＶＭセット＃２（ＮＶＭセット６１）にコピーされる。そして、ＮＶＭセット＃１（ＮＶＭセット６０）に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス（ＬＢＡ）に、この有効データがコピーされたＮＶＭセット＃２（ＮＶＭセット６１）内の物理記憶位置を示す物理アドレスがマッピングされる。
【０１９２】
また、ＮＶＭセット＃２（ＮＶＭセット６１）に格納されている有効データがＮＶＭセット＃１（ＮＶＭセット６０）にコピーされる。そして、ＮＶＭセット＃２（ＮＶＭセット６１）に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス（ＬＢＡ）に、この有効データがコピーされたＮＶＭセット＃１（ＮＶＭセット６０）内の物理記憶位置を示す物理アドレスがマッピングされる。
【０１９３】
ＮＶＭセット交換動作が完了すると、データＡ（高い更新頻度を有するデータ）用の物理記憶スペースはＮＶＭセット＃２（ＮＶＭセット６１）に変更され、データＢ（低い更新頻度を有するデータ）用の物理記憶スペースはＮＶＭセット＃１（ＮＶＭセット６０）に変更される。
【０１９４】
ＮＶＭセット交換動作の完了直後のＮＶＭセット＃２（ＮＶＭセット６１）の書き換え回数は１００回であり、データ交換の完了直後のＮＶＭセット＃２（ＮＶＭセット６１）の書き換え回数は１００回であり、ＮＶＭセット＃１（ＮＶＭセット６０）の書き換え回数は８００回である。
【０１９５】
この後、データＡが再び高い頻度で更新され、これによりＮＶＭセット＃２の書き換え回数は１００日間に８００回増加する。一方、データＢも比較的低い頻度で更新され、これによってＮＶＭセット＃１の書き換え回数は１００日間に１００回増加する。この結果、初期状態から２００日経過時（ＮＶＭセット交換から１００日経過時）において、ＮＶＭセット＃２（ＮＶＭセット６１）の書き換え回数は９００回、ＮＶＭセット＃１（ＮＶＭセット６０）の書き換え回数は９００回となる。
【０１９６】
このように、ＮＶＭセット交換動作を実行することで、ＮＶＭセット＃１（ＮＶＭセット６０）とＮＶＭセット＃２（ＮＶＭセット６１）間で、それぞれに所属するブロックの書き換え回数を均一化することができる。このため、ＮＶＭセット間の消耗度を均一化することができる。
【０１９７】
図２０は、ＮＶＭセット交換動作の前の２つのＮＶＭセットのために実行される、ホスト書き込み／ガベージコレクション動作を示す。  
ＮＶＭセット交換動作の実行前において、ＮＶＭセット＃１（ＮＶＭセット６０）と、ＮＶＭセット＃２（ＮＶＭセット６１）では、ホスト書き込み／ガベージコレクション動作が互いに独立して実行されている。詳しくは、図４で説明した通りである。
【０１９８】
図２１は、ＮＶＭセット交換動作のために２つのＮＶＭセット間で実行されるホスト書き込み／ガベージコレクション動作を示す。  
（１）ユーザインプットブロックの割り当て
ＮＶＭセット＃１では、フリーブロックプール８０内の１つのブロックがユーザインプットブロック２１０として割り当てられる。また、ＮＶＭセット＃２では、フリーブロックプール８１内の１つのブロックがユーザインプットブロック２１１として割り当てられる。
【０１９９】
（２）ホスト書き込み
ホスト２からのライトデータがライトバッファ３０からユーザインプットブロック２１０に書き込まれる。通常、ライトバッファ３０には、ＮＶＭセット＃１（ＮＶＭセット６０）に対応するネームスペース１００またはネームスペース１０１に関連付けられたライトデータが格納されるが、ＮＶＭセット交換動作が開始された後は、ＮＶＭセット＃２（ＮＶＭセット６１）に対応するネームスペース１０２に関連付けられたライトデータがライトバッファ３０に格納される。そして、ＮＶＭセット＃２（ＮＶＭセット６１）に対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス（ＬＢＡ）に、このライトデータが書き込まれたユーザインプットブロック２１０内の物理記憶位置を示す物理アドレスがマッピングされる。
【０２００】
このように、ＮＶＭセット交換動作の前では、ネームスペース１０２に関連付けられたライトデータの書き込み先はＮＶＭセット＃２（ＮＶＭセット６１）のユーザインプットブロック２１１であったが、ＮＶＭセット交換動作が開始されると、ネームスペース１０２に関連付けられたライトデータの書き込み先は、ＮＶＭセット＃１（ＮＶＭセット６０）のユーザインプットブロック２１０に変更される。
【０２０１】
また、ホスト２からのライトデータがライトバッファ３１からユーザインプットブロック２１１に書き込まれる。通常、ライトバッファ３１には、ＮＶＭセット＃２（ＮＶＭセット６１）に対応するネームスペース１０２に関連付けられたライトデータが格納されるが、ＮＶＭセット交換動作が開始された後は、ＮＶＭセット＃１（ＮＶＭセット６０）に対応するネームスペース１００または１０１に関連付けられたライトデータがライトバッファ３１に格納される。そして、ＮＶＭセット＃１（ＮＶＭセット６０）に対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス（ＬＢＡ）に、このライトデータが書き込まれたユーザインプットブロック２１１内の物理記憶位置を示す物理アドレスがマッピングされる。
【０２０２】
このように、ＮＶＭセット交換動作の前では、ネームスペース１０１またはネームスペース１００に関連付けられたライトデータの書き込み先はＮＶＭセット＃１（ＮＶＭセット６０）のユーザインプットブロック２１０であったが、ＮＶＭセット交換動作が開始されると、ネームスペース１０１またはネームスペース１００に関連付けられたライトデータの書き込み先は、ＮＶＭセット＃２（ＮＶＭセット６１）のユーザインプットブロック２１１に変更される。
【０２０３】
（３）ユーザインプットブロックの移動
ユーザインプットブロック２１０がライトデータで満たされると、そのユーザインプットブロック２１０は、ＮＶＭサブセット（データブロックプール）９０に移動される。つまり、データで満たされたユーザインプットブロック２１０はＮＶＭサブセット（データブロックプール）９０によって管理される。
【０２０４】
また、ユーザインプットブロック２１１がライトデータで満たされると、そのユーザインプットブロック２１１は、ＮＶＭサブセット（データブロックプール）９１に移動される。つまり、データで満たされたユーザインプットブロック２１１はＮＶＭサブセット（データブロックプール）９１によって管理される。
【０２０５】
（４）ＧＣインプットブロックの割り当て
ＮＶＭセット＃１（ＮＶＭセット６０）において、フリーブロックプール８０内の１つのフリーブロックがＧＣインプットブロック２００として割り当てられる。
【０２０６】
また、ＮＶＭセット（ＮＶＭセット６１）において、フリーブロックプール８１内の１つのフリーブロックがＧＣインプットブロック２０１として割り当てられる。
【０２０７】
（５）有効データの交換
コピー元ＮＶＭセット（ＮＶＭセット６０）のＮＶＭサブセット９０内のブロックから、有効データを保持するブロックがコピー元ブロックとして選択される。そして、このコピー元ブロック内の有効データのみが、ＮＶＭセット＃２（ＮＶＭセット６１）のＧＣインプットブロック２０１にコピーされる。そして、ＮＶＭサブセット９０に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス（ＬＢＡ）に、この有効データがコピーされたＧＣインプットブロック２０１内の物理記憶位置を示す物理アドレスがマッピングされる。
【０２０８】
ＮＶＭセット＃２（ＮＶＭセット６１）のＮＶＭサブセット９１内のブロックから、有効データを保持するブロックがコピー元ブロックとして選択される。そして、このコピー元ブロック内の有効データのみが、ＮＶＭセット＃１（ＮＶＭセット６０）のＧＣインプットブロック２００にコピーされる。そして、ＮＶＭサブセット９１に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス（ＬＢＡ）に、この有効データがコピーされたＧＣインプットブロック２００内の物理記憶位置を示す物理アドレスがマッピングされる。
【０２０９】
（６）ＧＣインプットブロックの移動
ＮＶＭセット＃１（ＮＶＭセット６０）において、ＧＣインプットブロック２００がＮＶＭセット＃２（ＮＶＭセット６１）の１以上のブロックからの有効データで満たされると、ＧＣインプットブロック２００はＮＶＭサブセット９０に移動される。つまり、有効データで満たされたＧＣインプットブロック２００はＮＶＭサブセット（データブロックプール）９０によって管理される。
【０２１０】
また、ＮＶＭセット＃２（ＮＶＭセット６１）において、ＧＣインプットブロック２０１がＮＶＭセット＃１（ＮＶＭセット６０）の１以上のブロックからの有効データで満たされると、ＧＣインプットブロック２０１はＮＶＭサブセット９１に移動される。つまり、有効データで満たされたＧＣインプットブロック２０１はＮＶＭサブセット（データブロックプール）９１によって管理される。
【０２１１】
（７）コピー元ブロックの返却
ＮＶＭセット＃１（ＮＶＭセット６０）において、ＮＶＭサブセット９０によって管理されており且つ有効データを保持しないブロックは、ＮＶＭサブセット９０からフリーブロックプール８０に返却される。例えば、ＮＶＭサブセット９０内のあるブロックによって保持されている全てのデータが、ユーザインプットブロック２１０への新たなライトデータの書き込みによって無効化されると、このブロックが、ＮＶＭサブセット９０からフリーブロックプール８０に返却される。
【０２１２】
ＮＶＭセット＃２（ＮＶＭセット６１）において、ＮＶＭサブセット９１によって管理されており且つ有効データを保持しないブロックは、ＮＶＭサブセット９１からフリーブロックプール８１に返却される。例えば、ＮＶＭサブセット９１内のあるブロックによって保持されている全てのデータが、ユーザインプットブロック２１１への新たなライトデータの書き込みによって無効化されると、このブロックが、ＮＶＭサブセット９１からフリーブロックプール８１に返却される。
【０２１３】
図２２は、新ＮＶＭセット作成動作の概要を示す。  
いま、ＮＡＮＤ型フラッシュメモリダイ６００〜６０６、６１０〜６１６、６２０〜６２６、…６４０〜６４６を含むＮＶＭセット１６０が利用されている場合を想定する。このＮＶＭセット１６０には、フリーブロックプール１８０が存在する。フリーブロックプール１８０は、ＮＶＭサブセット１９０ＢおよびＮＶＭサブセット１９０Ｃによって共有されている。さらに、ＮＶＭサブセット１９０Ｂに対応してライトバッファ１３０Ｂが設けられ、ＮＶＭサブセット１９０Ｃに対応してライトバッファ１３０Ｃが設けられている。
【０２１４】
コントローラ４は、図２２の下部に示すように、ＮＶＭセット１６０から新たなＮＶＭセット１６１を作成することができる。この場合、まず、ＮＶＭセット１６０に含まれる複数のＮＡＮＤ型フラッシュメモリダイの中から新たなＮＶＭセット１６１用に確保すべきＮＡＮＤ型フラッシュメモリダイが決定される。図２２の例では、ＮＶＭセット１６１用のＮＡＮＤ型フラッシュメモリダイとしてＮＡＮＤ型フラッシュメモリダイ６００，６１０，６２０，…６４０が決定されている。これらＮＡＮＤ型フラッシュメモリダイ６００，６１０，６２０，…６４０内の有効データは、ＮＶＭセット１６０内の残りのＮＡＮＤ型フラッシュメモリダイに属するブロック群にコピーされる。
【０２１５】
これにより、ＮＶＭセット１６１用のフリーブロックプール１８１、ＮＶＭサブセット１９０Ａ、ライトバッファ１３０Ａが作成される。ＮＡＮＤ型フラッシュメモリダイ６００，６１０，６２０，…６４０内のフリーブロックそれぞれは、ＮＶＭセット１６１用のフリーブロックプール１８１によって管理される。元のＮＶＭセット１６０は縮小されたＮＶＭセットとなる。フリーブロックプール１８０は、ＮＡＮＤ型フラッシュメモリダイ６００，６１０，６２０，…６４０を除く残りのダイに属するフリーブロック群のみを管理する。
【０２１６】
図２３は、新ＮＶＭセット作成のために実行されるホスト書き込み／ガベージコレクション動作を示す。ここでは、２つのＮＶＭサブセットを含む元のＮＶＭセット１６０から新たなＮＶＭセット１６１を作成する場合を想定する。
【０２１７】
（１）ユーザインプットブロックの割り当て
元のＮＶＭセット１６０に対応するフリーブロックプール１８０内の１つのフリーブロックがＮＶＭサブセット１９０Ｂに対応するユーザインプットブロック４１０として割り当てられる。また、フリーブロックプール１８０内の１つのフリーブロックがＮＶＭサブセット１９０Ｃに対応するユーザインプットブロック４１１として割り当てられる。なお、ユーザインプットブロック４１０，４１１がすでに割り当てられていれば、この動作は実行されない。
【０２１８】
（２）ホスト書き込み
ホスト２からのライトデータがライトバッファ１３０Ｂからユーザインプットブロック４１０に書き込まれる。そして、ＮＶＭサブセット１９０Ｂに対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス（ＬＢＡ）に、このライトデータが書き込まれたユーザインプットブロック４１０内の物理記憶位置を示す物理アドレスがマッピングされる。
【０２１９】
また、ホスト２からのライトデータがライトバッファ１３０Ｃからユーザインプットブロック４１１に書き込まれる。そして、ＮＶＭサブセット１９０Ｃに対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス（ＬＢＡ）に、このライトデータが書き込まれたユーザインプットブロック４１１内の物理記憶位置を示す物理アドレスがマッピングされる。
【０２２０】
（３）ユーザインプットブロックの移動
ユーザインプットブロック４１０がライトデータで満たされると、そのユーザインプットブロック４１０は、ＮＶＭサブセット（データブロックプール）１９０Ｂに移動される。つまり、データで満たされたユーザインプットブロック４１０はＮＶＭサブセット（データブロックプール）１９０Ｂによって管理される。
【０２２１】
また、ユーザインプットブロック４１１がライトデータで満たされると、そのユーザインプットブロック４１１は、ＮＶＭサブセット（データブロックプール）１９０Ｃに移動される。つまり、データで満たされたユーザインプットブロック４１１はＮＶＭサブセット（データブロックプール）１９０Ｃによって管理される。
【０２２２】
（４）ＧＣインプットブロックの割り当て
元のＮＶＭセット（ＮＶＭセット１６０）において、フリーブロックプール１８０内のフリーブロックから１つのブロックがＮＶＭサブセット１９０Ｂに対応するＧＣインプットブロック４００として割り当てられる。また、フリーブロックプール１８０内のフリーブロックから１つのブロックがＮＶＭサブセット１９０Ｃに対応するＧＣインプットブロック４０１として割り当てられる。
【０２２３】
（５）有効データのコピー
ＮＶＭサブセット１９０Ｂ（またはＮＶＭサブセット１９０Ｃ）内のブロックから、有効データと無効データとが混在する一つ以上のブロックがコピー元ブロックとして選択され、コピー元ブロック内の有効データのみがＧＣインプットブロック４００（またはＧＣインプットブロック４０１）にコピーされる。そして、ＮＶＭサブセット１９０Ｂ（またはＮＶＭサブセット１９０Ｃ）に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス（ＬＢＡ）に、この有効データがコピーされたＧＣインプットブロック４００（またはＧＣインプットブロック４０１）内の物理記憶位置を示す物理アドレスがマッピングされる。
【０２２４】
（６）ＧＣインプットブロックの移動
ＧＣインプットブロック４００（またはＧＣインプットブロック４０１）が有効データで満たされると、ＧＣインプットブロック４００（またはＧＣインプットブロック４０１）はＮＶＭサブセット１９０Ｂ（またはＮＶＭサブセット１９０Ｃ）に移動される。つまり、有効データで満たされたＧＣインプットブロックは対応するＮＶＭサブセット（データブロックプール）によって管理される。
【０２２５】
（７）、（７）’ブロックの返却
ＮＶＭサブセット１９０Ｂ（またはＮＶＭサブセット１９０Ｃ）によって管理されており且つ有効データを保持しないブロックは、フリーブロックに返却される。この場合、新たなＮＶＭセット１６１に割り当てるべきダイ集合に属さないブロックは、ＮＶＭサブセット１９０Ｂ（またはＮＶＭサブセット１９０Ｃ）からフリーブロックプール１８０に返却される。一方、新たなＮＶＭセット１６１に割り当てるべきダイ集合に属さないブロックは、ＮＶＭサブセット１９０Ｂ（またはＮＶＭサブセット１９０Ｃ）から新ＮＶＭセットのフリーブロックプール１８１に返却される。
【０２２６】
なお、上述の説明では、元のＮＶＭセット１６０全体に対するＧＣを行う場合を説明したが、新たなＮＶＭセット１６１に割り当てるべきダイ集合に属するブロックから有効データを保持するブロックを優先的にコピー元ブロックとして選択し、このコピー元ブロック内の有効データのみをＧＣインプットブロック（コピー先ブロック）にコピーしてもよい。これにより、新たなＮＶＭセット１６１を短時間で作成することが可能となる。
【０２２７】
次に、図２４〜図２６を用いて新ＮＶＭセット作成動作を具体的に説明する。図２４〜図２６では、図示を簡単にするために、ＮＶＭセット３３０（ＮＶＭセットＡ）が、ＮＡＮＤ型フラッシュメモリダイ１〜４を含み、各ダイが、ページＰ１〜Ｐ４を各々が含む２つのブロックを有する場合を想定する。
【０２２８】
まず、ＮＶＭセットＡに所属するＮＡＮＤ型フラッシュメモリダイ１〜４から、新たなＮＶＭセットＢ用に確保すべきＮＡＮＤ型フラッシュメモリダイ１〜２が決定される。
【０２２９】
次に、図２４に示すように、ＮＶＭセットＡのフリーブロックプール３００内のブロック（ここでは、ブロック＃４１）がＧＣインプットブロック３２０として割り当てられる。また、ＮＶＭセットＢ用に確保されたＮＡＮＤ型フラッシュメモリダイ１〜２のブロックから有効データを保持するブロック（ここでは、ブロック＃１１）がコピー元ブロックとして選択され、この選択されたコピー元ブロック（ブロック＃１１）内の有効データがＧＣインプットブロック３２０（ブロック＃４１）にコピーされる。
【０２３０】
ブロック＃１１において、有効データｄ１、ｄ３と無効データｄ２、ｄ４とが混在している場合には、有効データｄ１およびデータｄ３のみがＧＣインプットブロック３２０（ブロック＃４１）にコピーされる。このとき、データｄ１はブロック＃４１のページＰ１にコピーされ、データｄ３はブロック＃４１のページＰ２にコピーされる。
【０２３１】
ブロック＃１１の有効データ（データｄ１およびデータｄ３）がＧＣインプットブロック３２０（ブロック＃４１）にコピーされると、ブロック＃１１のデータｄ１およびデータｄ３は無効化される。これにより、ブロック＃１１は有効データを保持しないブロックとなったため、図２５に示すように、ブロック＃１１は、ＮＶＭセットＢ（新たなＮＶＭセット）用に新たに作成されるフリーブロックプール３０１に返却される。
【０２３２】
ＮＶＭセットＢ用に確保されたＮＡＮＤ型フラッシュメモリダイの中に、有効データｄ５、ｄ７と、無効データｄ６、ｄ８とが混在するブロック＃１２が存在する。ブロック＃１２がコピー元ブロックとして選択されると、ブロック＃１２の有効データ（データｄ５およびデータｄ７）のみがＧＣインプットブロック３２０（ブロック＃４１）にコピーされる。このとき、データｄ５は、ブロック＃２１のページＰ３にコピーされ、データｄ７は、ブロック＃４１のページＰ４にコピーされる。
【０２３３】
ブロック＃１２の有効データ（データｄ５およびデータｄ７）がＧＣインプットブロック３２０（ブロック＃４１）にコピーされると、ブロック＃１２のデータｄ５およびデータｄ７は無効化される。これにより、ブロック＃１２は有効データを保持しないブロックとなったため、図２６に示すように、ブロック＃１２はＮＶＭセットＢ（新たなＮＶＭセット）フリーブロックプール３０１に返却される。
【０２３４】
図２７は、ＮＶＭセット結合動作の概要を示す。  
図２７には、ＮＶＭセット＃１（ＮＶＭセット１６３）およびＮＶＭセット＃２（ＮＶＭセット１６４）をＮＶＭセット＃３（ＮＶＭセット１６５）に結合する動作が示されている。
【０２３５】
ＮＶＭセット＃１（ＮＶＭセット１６３）は、ＮＡＮＤ型フラッシュメモリダイ６００，６１０，６２０，…６４０を含む。ＮＶＭセット＃２（ＮＶＭセット１６４）は、ＮＡＮＤ型フラッシュメモリダイ６０１，６１１，６２１，…６４１を含む。ＮＶＭセット＃３（ＮＶＭセット１６５）は、ＮＡＮＤ型フラッシュメモリダイ６０２〜６０６、６１２〜６１６、６２２〜６２６、…６４２〜６４６を含む。
【０２３６】
ＮＶＭセット＃１（ＮＶＭセット１６３）およびＮＶＭセット＃２（ＮＶＭセット１６４）がＮＶＭセット＃３（ＮＶＭセット１６５）と結合された場合、ＮＶＭセット＃１（ＮＶＭセット１６３）に対応するフリーブロックプール１８３、およびＮＶＭセット＃２（ＮＶＭセット１６４）に対応するフリーブロックプール１８４もＮＶＭセット＃１（ＮＶＭセット１６５）に対応するフリーブロックプール１８５と結合される。また、ＮＶＭセット＃１（ＮＶＭセット１６３）のＮＶＭサブセット１９０Ａ、およびＮＶＭセット＃２（ＮＶＭセット１６４）のＮＶＭサブセット１９０ＢもＮＶＭセット＃３（ＮＶＭセット１６５）のＮＶＭサブセット１９０Ｃと結合される。
【０２３７】
図２８は、ＮＶＭセット結合のために実行されるホスト書き込み／ガベージコレクション動作を示す。  
ＮＶＭセット結合動作が実行される前において、ＮＶＭセット＃１〜＃３では、互いに独立してライトデータの書き込み動作およびガベージコレクション動作が実行される。
【０２３８】
（１）ユーザインプットブロックの割り当て
フリーブロックプール１８３内の１つのフリーブロックがユーザインプットブロック４１３として割り当てられる。また、フリーブロックプール１８４内の１つのフリーブロックがユーザインプットブロック４１４として割り当てられる。さらにフリーブロックプール１８５内の１つのフリーブロックがユーザインプットブロック４１５として割り当てられる。なお、ユーザインプットブロック４１３，４１４，４１５がすでに割り当てられていれば、この動作は実行されない。
【０２３９】
（２）ホスト書き込み
ＮＶＭセット＃１（ＮＶＭセット１６３）において、ホスト２からのライトデータがライトバッファ１３０Ａからユーザインプットブロック４１３に書き込まれる。ライトバッファ１３０ＡにはＮＶＭサブセット１９０Ａに対応付けられたライトデータが一時的に格納されている。そして、ＮＶＭセット１６３に対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス（ＬＢＡ）に、このライトデータが書き込まれたユーザインプットブロック４１３内の物理記憶位置を示す物理アドレスがマッピングされる。
【０２４０】
また、ＮＶＭセット＃２（ＮＶＭセット１６４）において、ホスト２からのライトデータがライトバッファ１３０Ｂからユーザインプットブロック４１４に書き込まれる。ライトバッファ１３０ＢにはＮＶＭサブセット１９０Ｂに対応付けられたライトデータが一時的に格納されている。そして、ＮＶＭセット１６４に対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス（ＬＢＡ）に、このライトデータが書き込まれたユーザインプットブロック４１４内の物理記憶位置を示す物理アドレスがマッピングされる。
【０２４１】
さらに、ＮＶＭセット＃３（ＮＶＭセット１６５）において、ホスト２からのライトデータがライトバッファ１３０Ｃからユーザインプットブロック４１５に書き込まれる。ライトバッファ１３０ＣにはＮＶＭサブセット１９０Ｃに対応付けられたライトデータが一時的に格納されている。そして、ＮＶＭセット１６５に対応するルックアップテーブルが更新され、これによってライトデータに対応する論理アドレス（ＬＢＡ）に、このライトデータが書き込まれたユーザインプットブロック４１５内の物理記憶位置を示す物理アドレスがマッピングされる。
【０２４２】
（３）ユーザインプットブロックの移動
ＮＶＭセット＃３において、ユーザインプットブロック４１５がライトデータで満たされると、そのユーザインプットブロック４１５は、ＮＶＭサブセット（データブロックプール）１９０Ｃに移動される。つまり、データで満たされたユーザインプットブロック４１５はＮＶＭサブセット（データブロックプール）１９０Ｃによって管理される。
【０２４３】
ＮＶＭセット結合動作が実行される前は、ＮＶＭセット＃１において、ユーザインプットブロック４１３がライトデータで満たされると、そのユーザインプットブロック４１３は、ＮＶＭサブセット（データブロックプール）１９０Ａに移動され、ＮＶＭセット＃２において、ユーザインプットブロック４１４がライトデータで満たされると、そのユーザインプットブロック４１４は、ＮＶＭサブセット（データブロックプール）１９０Ｂに移動される。しかし、ＮＶＭセット結合動作が実行された後は、（３）の替りに（３）’で示す動作が実行される。
【０２４４】
（３）’結合先ＮＶＭセットへのユーザインプットブロックの移動
ＮＶＭセット＃１内のユーザインプットブロック４１３がライトデータで満たされると、そのユーザインプットブロック４１３は、ＮＶＭセット＃３のＮＶＭサブセット１９０Ｃに移動される。つまり、データで満たされたユーザインプットブロック４１３はＮＶＭサブセット（データブロックプール）１９０Ｃによって管理される。
【０２４５】
また、ＮＶＭセット＃２内のユーザインプットブロック４１４がライトデータで満たされると、そのユーザインプットブロック４１４は、ＮＶＭセット＃３のＮＶＭサブセット１９０Ｃに移動される。つまり、データで満たされたユーザインプットブロック４１４はＮＶＭサブセット（データブロックプール）１９０Ｃによって管理される。
【０２４６】
（４）ＧＣインプットブロックの割り当て
ＮＶＭサブセット（データブロックプール）１９０Ａにおいてガベージコレクションの実行が必要になった場合、他のＮＶＭセットとは独立して、ＮＶＭサブセット１９０Ａ内のブロック群のためのガベージコレクション動作が実行される。例えば、ＮＶＭサブセット１９０Ａに含まれているブロック数が、ＮＶＭサブセット１９０Ａに対応するある閾値Ｘ１よりも多い場合に、ガベージコレクション動作が必要と判断されてもよい。閾値Ｘ１は、ＮＶＭサブセット１９０Ａ用に割り当て可能なブロックの総数に基づいて決定されてもよい。例えば、ＮＶＭサブセット１９０Ａ用に割り当て可能なブロックの総数から所定数を引いた残りの値が、ＮＶＭサブセット１９０Ａに対応するある閾値Ｘ１として利用されてもよい。
【０２４７】
ＮＶＭサブセット１９０Ａにおいてガベージコレクション動作が必要になった場合、フリーブロックプール１８３内の１つのフリーブロックがＧＣインプットブロック４０３として割り当てられる。
【０２４８】
また、ＮＶＭサブセット（データブロックプール）１９０Ｂにおいてガベージコレクションの実行が必要になった場合、他のＮＶＭセットとは独立して、ＮＶＭサブセット１９０Ｂ内のブロック群のためのガベージコレクション動作が実行される。例えば、ＮＶＭサブセット１９０Ｂに含まれているブロック数が、ＮＶＭサブセット１９０Ｂに対応するある閾値Ｘ１よりも多い場合に、ガベージコレクション動作が必要と判断されてもよい。閾値Ｘ１は、ＮＶＭサブセット１９０Ｂ用に割り当て可能なブロックの総数に基づいて決定されてもよい。例えば、ＮＶＭサブセット１９０Ｂ用に割り当て可能なブロックの総数から所定数を引いた残りの値が、ＮＶＭサブセット１９０Ｂに対応するある閾値Ｘ１として利用されてもよい。
【０２４９】
ＮＶＭサブセット１９０Ｂにおいてガベージコレクション動作が必要になった場合、フリーブロックプール１８４内の１つのフリーブロックがＧＣインプットブロック４０４として割り当てられる。
【０２５０】
ＮＶＭサブセット（データブロックプール）１９０Ｃにおいてガベージコレクションの実行が必要になった場合、他のＮＶＭセットとは独立して、ＮＶＭサブセット１９０Ｃ内のブロック群のためのガベージコレクション動作が実行される。例えば、ＮＶＭサブセット１９０Ｃに含まれているブロック数が、ＮＶＭサブセット１９０Ｃに対応するある閾値Ｘ１よりも多い場合に、ガベージコレクション動作が必要と判断されてもよい。閾値Ｘ１は、ＮＶＭサブセット１９０Ｃ用に割り当て可能なブロックの総数に基づいて決定されてもよい。例えば、ＮＶＭサブセット１９０Ｃ用に割り当て可能なブロックの総数から所定数を引いた残りの値が、ＮＶＭサブセット１９０Ｃに対応するある閾値Ｘ１として利用されてもよい。
【０２５１】
ＮＶＭサブセット１９０Ｃにおいてガベージコレクション動作が必要になった場合、フリーブロックプール１８５内の１つのフリーブロックがＧＣインプットブロック４０５として割り当てられる。
【０２５２】
（５）有効データのコピー
ＮＶＭサブセット１９０Ａ内のブロックの中から有効データと無効データとが混在する一つ以上のブロックがコピー元ブロックとして選択される。その選択されたブロックの有効データのみがＧＣインプットブロック４０３にコピーされる。そして、ＮＶＭセット１６３に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス（ＬＢＡ）に、この有効データがコピーされたＧＣインプットブロック４０３内の物理記憶位置を示す物理アドレスがマッピングされる。
【０２５３】
また、ＮＶＭサブセット１９０Ｂ内のブロックの中から有効データと無効データとが混在する一つ以上のブロックがコピー元ブロックとして選択される。その選択されたブロックの有効データのみがＧＣインプットブロック４０４にコピーされる。そして、ＮＶＭセット１６４に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス（ＬＢＡ）に、この有効データがコピーされたＧＣインプットブロック４０４内の物理記憶位置を示す物理アドレスがマッピングされる。
【０２５４】
さらに、ＮＶＭサブセット１９０Ｃ内のブロックの中から有効データと無効データとが混在する一つ以上のブロックがコピー元ブロックとして選択される。その選択されたブロックの有効データのみがＧＣインプットブロック４０５にコピーされる。そして、ＮＶＭセット１６５に対応するルックアップテーブルが更新され、これによって、コピーされた有効データに対応する論理アドレス（ＬＢＡ）に、この有効データがコピーされたＧＣインプットブロック４０５内の物理記憶位置を示す物理アドレスがマッピングされる。
【０２５５】
（６）ＧＣインプットブロックの移動
ＮＶＭセット＃３において、ＧＣインプットブロック４０５が有効データで満たされると、ＧＣインプットブロック４０３はＮＶＭサブセット１９０Ｃに移動される。つまり、有効データで満たされたＧＣインプットブロック４０５はＮＶＭサブセット（データブロックプール）１９０Ｃによって管理される。
【０２５６】
ＮＶＭセット結合動作が実行される前は、ＮＶＭセット＃１において、ＧＣインプットブロック４０３が有効データで満たされると、ＧＣインプットブロック４０３はＮＶＭサブセット１９０Ａに移動され、ＮＶＭセット＃２において、ＧＣインプットブロック４０４が有効データで満たされると、ＧＣインプットブロック４０４はＮＶＭサブセット１９０Ｂに移動される。しかし、ＮＶＭセット結合動作が実行された後は、（６）の替りに（６）’で示す動作が実行される。
【０２５７】
（６）’結合先ＮＶＭセットへのＧＣインプットブロックの移動
ＮＶＭセット＃１内のＧＣインプットブロック４０３が有効データで満たされると、ＧＣインプットブロック４０３はＮＶＭセット＃３内のＮＶＭサブセット１９０Ｃに移動される。有効データで満たされたユーザインプットブロック４０３はＮＶＭサブセット（データブロックプール）１９０Ｃによって管理される。
【０２５８】
また、ＮＶＭセット＃２内のＧＣインプットブロック４０４が有効データで満たされると、ＧＣインプットブロック４０４はＮＶＭセット＃３内のＮＶＭサブセット１９０Ｃに移動される。有効データで満たされたユーザインプットブロック４０３はＮＶＭサブセット（データブロックプール）１９０Ｃによって管理される。
【０２５９】
（７）ブロックの返却
ＮＶＭセット＃３において、ＮＶＭサブセット１９０Ｃによって管理されており且つ有効データを保持しないブロックは、ＮＶＭサブセット１９０Ｃからフリーブロックプール１８５に返却される。有効データを保持しないブロックは、ホスト書き込みによってその全てのデータが無効化されたブロック、またはガベージコレクション動作によってその全ての有効データがコピー先ブロックにコピーされたブロックである。
【０２６０】
ＮＶＭセット結合動作が実行される前は、ＮＶＭセット＃１において、ＮＶＭサブセット１９０Ａによって管理されており且つ有効データを保持しないブロックは、ＮＶＭサブセット１９０Ａからフリーブロックプール１８３に返却され、ＮＶＭサブセット１９０Ｂによって管理されており且つ有効データを保持しないブロックは、ＮＶＭサブセット１９０Ｂからフリーブロックプール１８４に返却される。しかし、ＮＶＭセット結合動作が実行された後は、（７）の替りに（７）’で示す動作が実行される。
【０２６１】
（７）’結合先ＮＶＭセットへのＮＶＭサブセットのブロックの移動
ＮＶＭサブセット１９０ＡのブロックがＮＶＭセット＃３のＮＶＭサブセット１９０Ｃに移動される。つまり、ＮＶＭサブセット１９０ＡのブロックはＮＶＭサブセット（データブロックプール）１９０Ｃによって管理される。
【０２６２】
また、ＮＶＭサブセット１９０ＢのブロックがＮＶＭセット＃３のＮＶＭサブセット１９０Ｃに移動される。つまり、ＮＶＭサブセット１９０ＢのブロックはＮＶＭサブセット（データブロックプール）１９０Ｃによって管理される。
【０２６３】
（８）結合先ＮＶＭセットへのフリーブロックの移動
ＮＶＭセット＃１のフリーブロックプール１８３内のフリーブロックがＮＶＭセット＃３のフリーブロックプール１８５に移動される。また、ＮＶＭセット＃２のフリーブロックプール１８４内のフリーブロックがＮＶＭセット＃３のフリーブロックプール１８５に移動される。
【０２６４】
図２９および図３０のフローチャートは、コントローラ４によって実行されるデータ書き込み／読み出し動作の手順を示す。
【０２６５】
ホスト２からのコマンドが受信されると（ステップＳ１０１のＹＥＳ）、ＮＶＭセット制御部２１は、受信されたコマンドに含まれるネームスペースＩＤをチェックする（ステップＳ１０２）。受信されたコマンドによってＮＶＭセット＃１に対応する領域が指定されたならば（ステップＳ１０３のＹＥＳ）、ＮＶＭセット制御部２１は、ＮＶＭセット＃１をアクセス対象に決定する（ステップＳ１０４）。例えば、ＮＶＭセット＃１にＮＳＩＤ１のネームスペースが対応しているケースでは、受信されたコマンドがＮＳＩＤ１を含むならば、ＮＶＭセット＃１に対応する領域が指定されたと判定されてもよい。
【０２６６】
受信されたコマンドがライトコマンドであったならば（ステップＳ１０５のＹＥＳ）、ＮＶＭセット制御部２１は、新規ユーザインプットブロックの割り当てが必要か否かを判定する（ステップＳ１０６）。新規ユーザインプットブロックの割り当てが必要であるならば（ステップＳ１０６のＹＥＳ）、ＮＶＭセット制御部２１は、ＮＶＭセット＃１のフリーブロックプール内のフリーブロックをユーザインプットブロックとして割り当て（ステップＳ１０７）、割り当てられたユーザインプットブロックにライトデータを書き込む（ステップＳ１０８）。新規ユーザインプットブロックの割り当てが不要であるならば（ステップＳ１０６のＮＯ）、ＮＶＭセット制御部２１は、すでに割り当てられているユーザインプットブロックにライトデータを書き込む（ステップＳ１０８）。
【０２６７】
ユーザインプットブロックにライトデータが書き込まれた場合、ＮＶＭセット制御部２１は、ＮＶＭセット＃１に対応するＬＵＴを更新する（ステップＳ１０９）。そして、ＮＶＭセット制御部２１は、ライト完了のレスポンスをホスト２へ返す（ステップＳ１１０）。
【０２６８】
受信されたコマンドがリードコマンドであったならば（ステップＳ１０５のＮＯ、ステップＳ１１１のＹＥＳ）、ＮＶＭセット制御部２１はＮＶＭセット＃１に対応するＬＵＴを参照して（ステップＳ１１２）、リードコマンド内の開始ＬＢＡに対応する物理アドレスを得る。ＮＶＭセット制御部２１は、この物理アドレスに基づいて、リードコマンドによって指定されたデータを、ＮＶＭセット＃１に所属するＮＶＭサブセットのブロックから読み出す（ステップＳ１１３）。そして、ＮＶＭセット制御部２１は、読み出したデータおよびリード完了のレスポンスをホスト２に返す（ステップＳ１１４）。
【０２６９】
受信されたコマンドによってＮＶＭセット＃１に対応する領域が指定されなかったならば（ステップＳ１０３のＮＯ）、ＮＶＭセット制御部２１は、受信されたコマンドによってＮＶＭセット＃２に対応する領域が指定されたか否かを判定する（ステップＳ１１５）。受信されたコマンドによってＮＶＭセット＃２に対応する領域が指定されたならば（ステップＳ１１５のＹＥＳ）、ＮＶＭセット制御部２１は、ＮＶＭセット＃２をアクセス対象に決定する（ステップＳ１１６）。例えば、ＮＶＭセット＃２にＮＳＩＤ２のネームスペースが対応しているケースでは、受信されたコマンドがＮＳＩＤ２を含むならば、ＮＶＭセット＃２に対応する領域が指定されたと判定されてもよい。
【０２７０】
受信されたコマンドがライトコマンドであったならば（ステップＳ１１７のＹＥＳ）、ＮＶＭセット制御部２１は、新規ユーザインプットブロックの割り当てが必要か否かを判定する（ステップＳ１１８）。新規ユーザインプットブロックの割り当てが必要であるならば（ステップＳ１１８のＹＥＳ）、ＮＶＭセット制御部２１は、ＮＶＭセット＃２のフリーブロックプール内のフリーブロックをユーザインプットブロックとして割り当て（ステップＳ１１９）、割り当てられたユーザインプットブロックにライトデータを書き込む（ステップＳ１２０）。新規ユーザインプットブロックの割り当てが不要であるならば（ステップＳ１１８のＮＯ）、ＮＶＭセット制御部２１は、すでに割り当てられているユーザインプットブロックにライトデータを書き込む（ステップＳ１２０）。
【０２７１】
ユーザインプットブロックにライトデータが書き込まれた場合、ＮＶＭセット制御部２１は、ＮＶＭセット＃２に対応するＬＵＴを更新する（ステップＳ１２１）。そして、ＮＶＭセット制御部２１は、ライト完了のレスポンスをホスト２へ返す（ステップＳ１２２）。
【０２７２】
受信されたコマンドがリードコマンドであったならば（ステップＳ１１７のＮＯ、ステップＳ１２３のＹＥＳ）、ＮＶＭセット制御部２１はＮＶＭセット＃２に対応するＬＵＴを参照して（ステップＳ１２４）、リードコマンド内の開始ＬＢＡに対応する物理アドレスを得る。ＮＶＭセット制御部２１は、この物理アドレスに基づいて、リードコマンドによって指定されたデータを、ＮＶＭセット＃２に所属するＮＶＭサブセットのブロックから読み出す（ステップＳ１２５）。そして、ＮＶＭセット制御部２１は、読み出したデータおよびリード完了レスポンスをホスト２に返す（ステップＳ１２６）。
【０２７３】
図３１のフローチャートは、ＧＣ動作制御部２２によってあるＮＶＭセットに所属するＮＶＭサブセット毎に実行されるガベージコレクション動作の手順を示す。
【０２７４】
ＧＣ動作制御部２２は、ＮＶＭセット＃１に所属するＮＶＭサブセット＃１に含まれているブロック数がＮＶＭサブセット＃１に対応する閾値Ｘ１に達したか否かを判定する（ステップＳ２０１）。ＮＶＭセット＃１に所属するＮＶＭサブセット＃１に含まれているブロック数が閾値Ｘ１に達したならば（ステップＳ２０１のＹＥＳ）、ＧＣ動作制御部２２は、ＮＶＭサブセット＃１のＧＣを開始する。
【０２７５】
ＧＣ動作制御部２２は、まず、ＮＶＭセット＃１のフリーブロックプール内のフリーブロックをコピー先ブロックとして割り当てる（ステップＳ２０２）。そして、ＧＣ動作制御部２２は、ＮＶＭサブセット＃１のブロックから、有効データと無効データとが混在するブロックをコピー元ブロックとして選択する（ステップＳ２０３）。
【０２７６】
次に、ＧＣ動作制御部２２は、選択されたブロック（コピー元ブロック）の有効データのみをコピー先ブロックにコピーする（ステップＳ２０４）。そして、ＧＣ動作制御部２２は、ＮＶＭサブセット＃１に対応するＬＵＴを更新する（ステップＳ２０５）。その後、ＧＣ動作制御部２２は、無効データのみになったブロック（コピー元ブロック）をＮＶＭセット＃１のフリーブロックプールに返却する（ステップＳ２０６）。
【０２７７】
続いて、ＧＣ動作制御部２２は、ＮＶＭサブセット＃１に含まれるブロック数がＮＶＭサブセット＃１に対応する閾値Ｘ２（＜Ｘ１）以下まで低下したか否か判定する（ステップＳ２０７）。ＮＶＭサブセット＃１に含まれるブロック数が閾値Ｘ２（＜Ｘ１）以下まで低下したならば（ステップＳ２０７のＹＥＳ）、ＧＣ動作制御部２２はガベージコレクション動作を終了する。ＮＶＭサブセット＃１に含まれるブロック数が閾値Ｘ２（＜Ｘ１）以下まで低下していなければ（ステップＳ２０７のＮＯ）、ＧＣ動作制御部２２はガベージコレクション動作を続行する（ステップＳ２０２〜Ｓ２０６）。
【０２７８】
図３２のフローチャートは、ＮＶＭセット間コピー制御部２３によって実行されるＮＶＭセット間コピー動作の手順を示す。
【０２７９】
コピー元ＮＶＭセットとコピー先ＮＶＭセットとを指定するパラメータを含むホスト２からのＮＶＭセット間コピーコマンドが受信されると（ステップＳ３０１のＹＥＳ）、ＮＶＭセット間コピー制御部２３はコピー先ＮＶＭセットのフリーブロックプール内のフリーブロックをコピー先ブロックとして割り当てる（ステップＳ３０２）。そして、ＮＶＭセット間コピー制御部２３はコピー元ＮＶＭセットに属するブロックから有効データを有するブロックをコピー元ブロックとして選択する（ステップＳ３０３）。
【０２８０】
次に、ＮＶＭセット間コピー制御部２３は、コピー元ブロックからコピー先ブロックに有効データをコピーする（ステップＳ３０４）。有効データのコピーが行われると、ＮＶＭセット間コピー制御部２３は、コピー元ＮＶＭセットのＮＶＭサブセットに対応するＬＵＴを更新する（ステップＳ３０５）。
【０２８１】
続いて、ＮＶＭセット間コピー制御部２３は、有効データを持たなくなったコピー元ブロックをコピー元ＮＶＭセットのフリーブロックプールに返却する（ステップＳ３０６）。
【０２８２】
ＮＶＭセット間コピー制御部２３は、コピー元ＮＶＭセットに有効データを有するブロックが存在しなくなるまで、ステップＳ３０２〜Ｓ３０６の処理を繰り返す（ステップＳ３０７）。
【０２８３】
図３３のフローチャートは、ＮＶＭセット間コピー制御部２３によって実行されるＮＶＭセット間コピー動作の別の手順を示す。ここでは、ＮＶＭセット間コピー動作中におけるホスト書き込み動作を許可する場合が想定されている。
【０２８４】
コピー元ＮＶＭセットとコピー先ＮＶＭセットとを指定するパラメータを含むホスト２からのＮＶＭセット間コピーコマンドが受信されると（ステップＳ４０１のＹＥＳ）、ＮＶＭセット間コピー制御部２３は、コピー先ＮＶＭセットのフリーブロックプール内のフリーブロックをコピー先ブロックとして割り当てる（ステップＳ４０２）。そして、ＮＶＭセット間コピー制御部２３はコピー元ＮＶＭセットに属するブロックから有効データを有するブロックをコピー元ブロックとして選択する（ステップＳ４０３）。
【０２８５】
次に、ＮＶＭセット間コピー制御部２３は、コピー元ブロックからコピー先ブロックに有効データをコピーする（ステップＳ４０４）。有効データのコピーが行われると、ＮＶＭセット間コピー制御部２３は、コピー元ＮＶＭセットのＮＶＭサブセットに対応するＬＵＴを更新する（ステップＳ４０５）。
【０２８６】
続いて、ＮＶＭセット間コピー制御部２３は、有効データを持たなくなったコピー元ブロックをコピー元ＮＶＭセットのフリーブロックプールに返却する（ステップＳ４０６）。
【０２８７】
次に、ＮＶＭセット間コピー制御部２３は、コピー元ＮＶＭセットに有効データを有するブロックが存在しないか否かを判定する（ステップＳ４０７）。コピー元ＮＶＭセットに有効データを有するブロックが存在しないならば（ステップＳ４０７のＹＥＳ）、ＮＶＭセット間コピー制御部２３は、ＮＶＭセット間コピー動作を終了する。
【０２８８】
一方、コピー元ＮＶＭセットに有効データを有するブロックが存在するならば（ステップＳ４０７のＮＯ）、コントローラ４のＮＶＭセット制御部２１は、コピー元ＮＶＭセットに所属するＮＶＭサブセットへのライトデータが受信されたか否かを判定する（ステップＳ４０８）。コピー元ＮＶＭセットに所属するＮＶＭサブセットへのライトデータが受信されていなければ（ステップＳ４０８のＮＯ）、処理は、ステップＳ４０２に進む。
【０２８９】
コピー元ＮＶＭセットに所属するＮＶＭサブセットへのライトデータが受信されていれば（ステップＳ４０８のＹＥＳ）、ＮＶＭ制御部２１は、コピー先ＮＶＭセットのフリーブロックプールのフリーブロックを書き込み先ブロックとして割り当てる（ステップＳ４０９）。そして、ＮＶＭ制御部２１はその割り当てられたブロックにライトデータを書き込む（ステップＳ４１０）。ライトデータが書き込まれると、ＮＶＭ制御部２１は、コピー元ＮＶＭセットに所属するＮＶＭサブセットに対応するＬＵＴを更新する（ステップＳ４１１）。
【０２９０】
次に、コントローラ４は、ライト完了のレスポンスをホスト２へ返す（ステップＳ４１２）。ライト完了のレスポンスがホスト２に返されると、処理は、ステップＳ４０２に進む。
【０２９１】
コピー元ＮＶＭセットに有効データを有するブロックが存在しなくなるまで、ステップＳ４０２〜Ｓ４１２の処理が繰り返される（ステップＳ４０７）。
【０２９２】
図３４のフローチャートは、新ＮＶＭセット作成制御部２４によって実行される新ＮＶＭセット作成動作の手順を示す。
【０２９３】
新ＮＶＭセット作成コマンドが受信されると（ステップＳ５０１のＹＥＳ）、新ＮＶＭセット作成制御部２４は、元のＮＶＭセットに属する全てのＮＡＮＤ型フラッシュメモリダイの中から、新ＮＶＭセット用に確保すべきＮＡＮＤ型フラッシュメモリダイのグループを決定する（ステップＳ５０２）。元のＮＶＭセットは新ＮＶＭセット作成コマンドによってしていてされてもよい。
【０２９４】
続いて、新ＮＶＭセット作成制御部２４は、元のＮＶＭセットのフリーブロックプールのフリーブロックをコピー先ブロックとして割り当てる（ステップＳ５０３）。そして、新ＮＶＭセット作成制御部２４は、新ＮＶＭセットに属するブロック（つまり確保されたＮＡＮＤ型フラッシュメモリダイのグループに属するブロック）から、有効データを保持するブロックをコピー元ブロックとして選択する（ステップＳ５０４）。
【０２９５】
次に、新ＮＶＭセット作成制御部２４は、コピー元ブロックからコピー先ブロックに有効データをコピーする（ステップＳ５０５）。有効データがコピーされると、新ＮＶＭセット作成制御部２４は、コピー元ＮＶＭセットのＮＶＭサブセットに対応するＬＵＴを更新する（ステップＳ５０６）。続いて、新ＮＶＭセット作成制御部２４は、有効データを持たなくなったコピー元ブロックを新ＮＶＭセットのフリーブロックプールに返却する（ステップＳ５０７）。
【０２９６】
次に、新ＮＶＭセット作成制御部２４は、新ＮＶＭセットに有効データを有するブロックが存在しないか否かを判定する（ステップＳ５０８）。新ＮＶＭセットに有効データを有するブロックが存在しないならば（ステップＳ５０８のＹＥＳ）、新ＮＶＭセット作成制御部２４は新ＮＶＭセット作成動作を終了する。新ＮＶＭセットに有効データを有するブロックが存在するならば（ステップＳ５０８のＮＯ）、新ＮＶＭセット作成制御部２４は新ＮＶＭセット作成動作を続行する（ステップＳ５０３〜Ｓ５０７）。
【０２９７】
新ＮＶＭセットに有効データを有するブロックが存在しなくなるまで、ステップＳ５０３〜Ｓ５０７の処理が繰り返される。
【０２９８】
図３５のフローチャートは、新ＮＶＭセット作成制御部２４によって実行される新ＮＶＭセット作成動作の別の手順を示す。ここでは、新ＮＶＭセット作成動作と元のＮＶＭセットにおけるガベージコレクション動作とを並行して実行する手順が示されている。
【０２９９】
新ＮＶＭセット作成コマンドが受信されると（ステップＳ６０１）、新ＮＶＭセット作成制御部２４は、新ＮＶＭセット用に確保すべきＮＡＮＤ型フラッシュメモリダイのグループを決定する（ステップＳ６０２）。続いて、新ＮＶＭセット作成制御部２４は、元のＮＶＭセットのフリーブロックプールのフリーブロックをコピー先ブロックとして割り当てる（ステップＳ６０３）。そして、新ＮＶＭセット作成制御部２４は、元のＮＶＭセットに属するブロックから、有効データと無効データが混在するブロックをコピー元ブロックとして選択する（ステップＳ６０４）。ステップＳ６０４では、新ＮＶＭセット作成制御部２４は、有効データの少ないブロックを優先的にコピー元ブロックとして選択してもよい。
【０３００】
次に、新ＮＶＭセット作成制御部２４は、コピー元ブロックからコピー先ブロックに有効データをコピーする（ステップＳ６０５）。有効データがコピーされると、新ＮＶＭセット作成制御部２４は、コピー元ＮＶＭセットのＮＶＭサブセットに対応するＬＵＴを更新する（ステップＳ６０６）。
【０３０１】
続いて、新ＮＶＭセット作成制御部２４は、有効データを持たなくなったコピー元ブロックの物理位置が新ＮＶＭセットに属するか否かを判定する（ステップＳ６０７）。有効データを持たなくなったコピー元ブロックの物理位置が新ＮＶＭセットに属するならば（ステップＳ６０７のＹＥＳ）、新ＮＶＭセット作成制御部２４は、有効データを持たなくなったコピー元ブロックを新ＮＶＭセットのフリーブロックプールに返却する（ステップＳ６０８）。有効データを持たなくなったコピー元ブロックの物理位置が新たなＮＶＭセットに属しないならば（ステップＳ６０７のＮＯ）、新ＮＶＭセット作成制御部２４は、有効データを持たなくなったコピー元ブロックを元のＮＶＭセットのフリーブロックプールに返却する（ステップＳ６０９）。
【０３０２】
次に、新ＮＶＭセット作成制御部２４は、新ＮＶＭセットに有効データを有するブロックが存在しないか否かを判定する（ステップＳ６１０）。新ＮＶＭセットに有効データを有するブロックが存在しないならば（ステップＳ６１０のＹＥＳ）、新ＮＶＭセット作成制御部２４は新ＮＶＭセット作成動作を終了する。新ＮＶＭセットに有効データを有するブロックが存在するならば（ステップＳ６１０のＮＯ）、新ＮＶＭセット作成制御部２４はステップＳ６０３の処理を実行する。
【０３０３】
新ＮＶＭセットに有効データを有するブロックが存在しなくなるまで、ステップＳ６０３〜Ｓ６０７の処理が繰り返される。
【０３０４】
図３６は、ホスト２として機能する情報処理装置（コンピューティングデバイス）のハードウェア構成例を示す。
【０３０５】
この情報処理装置は、サーバのようなコンピューティングデバイスとして実現される。この情報処理装置は、プロセッサ（ＣＰＵ）８０１、メインメモリ８０２、ＢＩＯＳ−ＲＯＭ８０３、ネットワークコントローラ８０５、周辺インタフェースコントローラ８０６、コントローラ８０７、およびエンベデッドコントローラ（ＥＣ）８０８等を含む。
【０３０６】
プロセッサ８０１は、この情報処理装置の各コンポーネントの動作を制御するように構成されたＣＰＵである。このプロセッサ８０１は、複数のＳＳＤ３のいずれか１つからメインメモリ８０２にロードされる様々なプログラムを実行する。メインメモリ８０２は、ＤＲＡＭのようなランダムアクセスメモリから構成される。また、このプログラムには、上述のＮＶＭセット間コピー、ＮＶＭセット交換、新ＮＶＭセット作成、およびＮＶＭセット結合を指示するコマンドを発行するための設定プログラムが含まれていてもよい。
【０３０７】
また、プロセッサ８０１は、不揮発性メモリであるＢＩＯＳ−ＲＯＭ８０３に格納された基本入出力システム（ＢＩＯＳ）も実行する。ＢＩＯＳはハードウェア制御のためのシステムプログラムである。
【０３０８】
ネットワークコントローラ８０５は、有線ＬＡＮコントローラ、無線ＬＡＮコントローラのような通信デバイスである。周辺インタフェースコントローラ８０６は、ＵＳＢデバイスのような周辺デバイスとの通信を実行するように構成されている。
【０３０９】
コントローラ８０７は、複数のコネクタ８０７Ａにそれぞれ接続されるデバイスとの通信を実行するように構成されている。複数のＳＳＤ３が複数のコネクタ８０７Ａにそれぞれ接続されてもよい。コントローラ８０７は、ＳＡＳ  ｅｘｐａｎｄｅｒ、ＰＣＩｅ  Ｓｗｉｔｃｈ、ＰＣＩｅ  ｅｘｐａｎｄｅｒ、フラッシュアレイコントローラ、またはＲＡＩＤコントローラ等である。
【０３１０】
ＥＣ８０８は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。
【０３１１】
図３７は、複数のＳＳＤ３とホスト２とを含む情報処理装置（サーバ）の構成例を示す。
【０３１２】
この情報処理装置（サーバ）は、ラックに収容可能な薄い箱形の筐体９０１を備える。多数のＳＳＤ３は筐体９０１内に配置されてもよい。この場合、各ＳＳＤ３は筐体９０１の前面９０１Ａに設けられたスロットに取り外し可能に挿入されてもよい。
【０３１３】
システムボード（マザーボード）９０２は筐体９０１内に配置される。システムボード（マザーボード）９０２上においては、ＣＰＵ８０１、メインメモリ８０２、ネットワークコントローラ８０５、コントローラ８０７を含む様々な電子部品が実装されている。これら電子部品がホスト２として機能する。
【０３１４】
以上説明したように、本実施形態によれば、複数のＮＡＮＤ型フラッシュメモリダイの各々が一つのＮＶＭセットにのみ属するようにこれらＮＡＮＤ型フラッシュメモリダイが複数のＮＶＭセットに分類される。そして、各ＮＶＭセットに対応する少なくとも一つの領域（例えばネームスペース）を指定するホストからのＩ／Ｏコマンドに応じて、複数のＮＶＭセットの一つのＮＶＭセットに対するデータ書き込み／読み出し動作が実行される。したがって、異なるＮＶＭセットに対応する異なる領域をそれぞれ指定する複数のＩ／Ｏコマンド（ライトコマンド、またはリードコマンド）を、ダイコンテンション無しで、同時に実行することができる。よって、例えば、たとえあるＮＶＭセットに対するデータ書き込み動作の実行中に別のＮＶＭセットに対応する領域に向けたリードコマンドがホスト２から受信されても、コントローラ４は、このデータ書き込み動作の完了を待つことなく、このリードコマンドに対応するデータ読み出し動作を即座に実行することができる。
【０３１５】
また、ＮＡＮＤ型フラッシュメモリ５のフリーブロック群は、複数のＮＶＭセットに対応する複数のフリーブロックプールによってＮＶＭセット毎に個別に管理される。そして、複数のＮＶＭセットの各々について、対応するフリーブロックプール内のフリーブロックの一つをインプットブロック（ユーザインプットブロックまたはＧＣインプットブロック）として割り当てる動作と、ライトデータをインプットブロックに書き込む動作と、ライトデータで満たされたインプットブロックをＮＶＭサブセットによって管理する動作と、ＮＶＭサブセットによって管理され且つ有効データを保持しないブロックを対応するフリーブロックプールに返却する動作とが実行される。このように、複数のＮＶＭセットそれぞれに対応するフリーブロックを使用することにより、インプットブロックの割り当てとフリーブロックの返却を、ＮＶＭセット毎に独立して実行することができる。これにより、あるＮＶＭセットに属するダイ内のブロックが別のＮＶＭセット用のインプットブロックとして割り当てられること等を防止することができる。よって、ダイコンテンションが起きないことを保証することが可能となる。
【０３１６】
さらに、フリーブロックプールが複数のＮＶＭサブセット（複数のガベージコレクション用グループ）によって共有される共有ＮＶＭセットと、フリーブロックプールが一つＮＶＭサブセット（一つのガベージコレクション用グループ）によって専有される分離されたＮＶＭセットとを、１台のＳＳＤ３内に共存させることができる。
【０３１７】
なお、本実施形態では、不揮発性メモリとしてＮＡＮＤ型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ
Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  ｃｈａｎｇｅ
Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、又は、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような他の様々な不揮発性メモリにも適用できる。
【０３１８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０３１９】
２…ホスト、３…ＳＳＤ、４…コントローラ、５…ＮＡＮＤ型フラッシュメモリ、２１…ＮＶＭセット制御部、２２…ＧＣ動作制御部、２３…ＮＶＭセット間コピー制御部、２４…新ＮＶＭセット作成制御部、２５…ＮＶＭ交換制御部、２６…ＮＶＭセット結合部、６０、６１、６２…ＮＶＭセット、８０、８１、８２…フリーブロックプール、９０、９１、９２、９３、９４、９５…ＮＶＭサブセット。
【図１】
2020205077.tif 000003
【図２】
2020205077.tif 000004
【図３】
2020205077.tif 000005
【図４】
2020205077.tif 000006
【図５】
2020205077.tif 000007
【図６】
2020205077.tif 000008
【図７】
2020205077.tif 000009
【図８】
2020205077.tif 000010
【図９】
2020205077.tif 000011
【図１０】
2020205077.tif 000012
【図１１】
2020205077.tif 000013
【図１２】
2020205077.tif 000014
【図１３】
2020205077.tif 000015
【図１４】
2020205077.tif 000016
【図１５】
2020205077.tif 000017
【図１６】
2020205077.tif 000018
【図１７】
2020205077.tif 000019
【図１８】
2020205077.tif 000020
【図１９】
2020205077.tif 000021
【図２０】
2020205077.tif 000022
【図２１】
2020205077.tif 000023
【図２２】
2020205077.tif 000024
【図２３】
2020205077.tif 000025
【図２４】
2020205077.tif 000026
【図２５】
2020205077.tif 000027
【図２６】
2020205077.tif 000028
【図２７】
2020205077.tif 000029
【図２８】
2020205077.tif 000030
【図２９】
2020205077.tif 000031
【図３０】
2020205077.tif 000032
【図３１】
2020205077.tif 000033
【図３２】
2020205077.tif 000034
【図３３】
2020205077.tif 000035
【図３４】
2020205077.tif 000036
【図３５】
2020205077.tif 000037
【図３６】
2020205077.tif 000038
【図３７】
2020205077.tif 000039