以下、図面を参照して、実施形態を説明する。
(第1実施形態)
第1実施形態に係るメモリシステムを含む情報処理システムの構成について説明する。図1は、第1実施形態に係るメモリシステムを含む情報処理システム1の構成例を示すブロック図である。メモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。メモリシステムは、例えば、NAND型フラッシュメモリを含むSSD3として実現されている。
情報処理システム1は、ホスト(ホストデバイス)2と、SSD3とを含む。ホスト2は、SSD3を制御するように構成された情報処理装置である。ホスト2の例には、パーソナルコンピュータ、サーバコンピュータ、携帯端末、車載機器、が含まれる。
SSD3は、ホスト2にケーブルまたはネットワークを介して接続されてもよい。あるいは、SSD3は、ホスト2に内蔵されてもよい。
ホスト2とSSD3とを接続するためのインタフェースとしては、これに限定されないが、SATA(Serial ATA)、SAS(Serial Attached SCSI)、UFS(Universal Flash Storage)、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)を使用し得る。
SSD3は、コントローラ4と、不揮発性メモリ(例えば、NAND型フラッシュメモリ5)とを備える。SSD3は、ランダムアクセスメモリ、例えば、DRAM(Dynamic Random Access Memory)6も備えていてもよい。
NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを有するメモリセルアレイを含む。NAND型フラッシュメモリ5は、2次元構造のフラッシュメモリであってもよいし、3次元構造のフラッシュメモリであってもよい。
NAND型フラッシュメモリ5のメモリセルアレイは、複数のブロックBLK0~BLKx-1を含む。ブロックBLK0~BLKx-1の各々は、複数のページ(ここではページP0~Py-1)を含む。各ページは、同一ワード線に接続された複数のメモリセルを含む。ブロックBLK0~BLKx-1の各々は、NAND型フラッシュメモリ5からデータを消去するデータ消去動作(以下、ブロックイレーズとも称される)の単位である。ブロックは、「消去ブロック」、「物理ブロック」、または「物理消去ブロック」と称されることもある。ページP0~Py-1は、データ書き込み動作およびデータ読み出し動作の単位である。
コントローラ4は、System-on-a-chip(SoC)のような回路によって実現されてもよい。コントローラ4は、これに限定されないが、Toggle NANDフラッシュインタフェース、オープンNANDフラッシュインタフェース(ONFI)に準拠するNANDインタフェース13を介して、NAND型フラッシュメモリ5に電気的に接続されている。コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして動作する。
コントローラ4は、NAND型フラッシュメモリ5のデータ管理及びブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。
FTLによって実行されるデータ管理は、(1)論理領域識別子それぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)NAND型フラッシュメモリ5の制約(例えば、ページ単位のリード/ライト動作とブロック単位の消去動作)を隠蔽するための処理、を含む。
論理領域識別子は、ネームスペース識別子であってもよいし、論理アドレスであってもよいし、ネームスペース識別子と論理アドレスとの組み合わせであってもよい。
論理アドレスは、SSD3の論理アドレス空間内の論理アドレスをアドレス指定するためにホスト2によって使用されるアドレスである。論理アドレスとしては、LBA(logical block address(addressing))やキー・バリューストアのキーが使用され得る。
コントローラ4は、複数のネームスペースを作成および管理するように構成されている。複数のネームスペースは、互いに独立した論理アドレス範囲である。複数のネームスペースは、一つのストレージデバイスをあたかも複数のストレージデバイスであるかのように動作させるために使用される。複数のネームスペースは、SSD3をアクセスするためにホスト2によって使用される。ネームスペース識別子は、ネームスペースを指定するためにホスト2によって使用される識別子である。
SSD3をアクセスするためにホスト2によって使用される論理領域識別子それぞれとNAND型フラッシュメモリ5の物理アドレスPBA(physical block address)それぞれとの間のマッピングの管理は、アドレス変換テーブル(論理物理アドレス変換テーブル:L2Pテーブル)37を用いて実行される。L2Pテーブルにおける論理領域識別子は論理アドレスを含む。コントローラ4は、L2Pテーブル37を使用して、論理領域識別子それぞれと物理アドレスそれぞれとの間のマッピングを管理する。ある論理領域識別子に対応する物理アドレスは、この論理領域識別子に対応するデータが書き込まれたNAND型フラッシュメモリ5内の最新の物理的な記憶位置を示す。L2Pテーブル37は、SSD3の電源オン時にNAND型フラッシュメモリ5からDRAM6にロードされてもよい。
論理領域識別子としてLBAが使用される場合には、L2Pテーブル37は、LBAそれぞれと物理アドレスPBAそれぞれとの間のマッピングをクラスタと称される所定の管理サイズで管理する。LBAによって指定されるセクタのサイズがクラスタのサイズよりも小さい場合には、各クラスタに含まれる各セクタのデータが有効データであるか無効データであるかを示すビットマップデータもL2Pテーブル37に格納されてもよい。
論理領域識別子としてキー・バリューストアのキーが使用される場合には、L2Pテーブル37は、これに限定されないが、例えば、各キーのハッシュ値と、各キーへのポインタと、各キーに対応するユニーク番号と、各キーに対応するバリューのサイズと、各キーに対応するバリューが格納されている一つ以上の物理アドレスを含む物理アドレスリストとの対応関係を管理してもよい。
図2は、L2Pテーブル37の構成例を示す図である。ここでは、LBAのような論理アドレスが論理領域識別子として使用される場合のL2Pテーブル37の構成例について説明する。L2Pテーブル37は、SSD3の論理アドレス空間内の論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレス空間内の物理アドレスそれぞれとの間のマッピングを、クラスタと称される所定の管理サイズ単位で管理する。一つのクラスタは、論理アドレスによって指定されるセクタ(論理アドレスがLBAである場合には論理ブロックとも称される)のサイズの整数倍のサイズを有する。セクタのサイズの例は512Bまたは4KiBであり、クラスタのサイズの例は4KiBである。大容量SSDにおいては、クラスタのサイズは4KiBよも大きい場合もある。一つのページに複数のクラスタに対応するデータが記憶されてもよい。一つのページのサイズの例は16KiBである。
L2Pテーブル37において、ある論理アドレスに対応する物理アドレスは、この論理アドレスに対応するデータが書き込まれたNAND型フラッシュメモリ5内の最新の物理記憶位置を示す。
L2Pテーブル37は、複数の論理アドレスそれぞれに対応する複数のエントリを含む。ある論理アドレスに対応するエントリには、この論理アドレスに関連付けられた物理アドレスが格納される。例えば、コントローラ4がある論理アドレスに対応するデータをNAND型フラッシュメモリ5内のある物理的な記憶位置に書き込んだ場合、コントローラ4は、L2Pテーブル37を更新して、この記憶位置を示す物理アドレスPBAをこの論理アドレスに関連付ける。
図2には、論理アドレス0x000、0x001,0x002、0x005、0x006、0x007に、物理アドレスPBA0、PBA2、PBA1、PBA4、PBA5、PBA6がそれぞれ関連付けられている場合が例示されている。ある論理アドレスに対応するデータがNAND型フラッシュメモリ5に書き込まれていない場合は、この論理アドレスに対応するエントリには、あらかじめ定められた定数(NULL)が格納されてもよい。
図1の説明に戻る。NAND型フラッシュメモリ5においては、ページへのデータ書き込みはそのページが含まれるブロックの1消去サイクル(プログラム/イレーズサイクル)当たり1回のみ可能である。つまり、データが既に書き込まれているブロック内の領域に新たなデータを直接上書きすることができない。このため、既に書き込まれているデータを更新する場合には、コントローラ4はそのブロック(または別のブロック)内の未書き込み領域に新たなデータを書き込み、そして以前のデータを無効データとして扱う。換言すれば、コントローラ4は、ある論理領域識別子に対応する更新データを、この論理領域識別子に対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ4は、L2Pテーブル37を更新してこの別の物理記憶位置を示す物理アドレスをこの論理領域識別子に関連付けると共に、以前のデータを無効化する。
FTLによって実行されるブロック管理は、バッドブロック(不良ブロック)の管理と、ウェアレベリングと、ガベージコレクションを含む。
ウェアレベリングは、ブロックそれぞれの書き換え回数(プログラム/イレーズサイクルの数)を均一化するための動作である。
ガベージコレクションは、有効データと無効データとが混在するブロックの個数を減らし且つフリーブロックの個数を増やすための動作である。フリーブロックとは、有効データを含まないブロックを意味する。
有効データとは、ある論理領域識別子に関連付けられている論理領域に格納されている最新のデータを意味する。例えば、L2Pテーブル37から参照されている物理的な記憶位置に記憶されているデータ(すなわち最新のデータとして論理領域識別子に関連付けられているデータ)は有効データである。有効データは、後にホスト2からリードされる可能性があるデータである。
無効データとは、L2Pテーブル37から参照されていない物理的な記憶位置に記憶されているデータを意味する。例えば、L2Pテーブル37から参照されていない物理的な記憶位置に記憶されているデータ(すなわち最新のデータとして論理領域識別子に関連付けられていないデータ)は無効データである。無効データは、もはやホスト2からリードされる可能性が無いデータである。ある論理領域識別子に関連付けられている論理領域に更新データが格納されると、それまでその論理領域に格納されていた有効データは無効データとなり、更新データが新たな有効データとなる。また、ある論理領域識別子に関連付けられている論理領域に対して、後述するアンマップ動作が行われた場合にも、それまでその論理領域に格納されていた有効データは無効データとなる。
ガベージコレクションにおいて、コントローラ4は、有効データと無効データとが混在する幾つかのブロック内の有効データを別のブロック(例えばフリーブロック)にコピーする。コントローラ4は、L2Pテーブル37を更新して、コピーされた有効データの論理領域識別子それぞれにコピー先物理アドレスをマッピングする。有効データが別のブロックにコピーされることによって無効データのみを含むことになったブロックはフリーブロックとして解放される。これによって、このブロックはデータ消去動作後にデータの書き込みに再利用することが可能となる。
コントローラ4は、上述したNANDインタフェース(I/F)13以外に、ホストインタフェース(I/F)11、CPU12、DRAMインタフェース(I/F)14、直接メモリアクセスコントローラ(DMAC)15、スタティックRAM(SRAM)16、ECCエンコード/デコード部17を含む。これらホストI/F11、CPU12、NAND I/F13、DRAM I/F14、DMAC15、SRAM16、ECCエンコード/デコード部17は、バス10を介して相互接続される。
ホストI/F11は、ホスト2との通信を実行するように構成されたホストインタフェース回路である。ホストI/F11は、例えば、SATAインタフェースコントローラ、SASインタフェースコントローラ、PCIeコントローラ、または、Ethernetコントローラであってもよい。
ホストI/F11は、ホスト2から様々なコマンドを受信する。SATAインタフェースではATA規格で定義されたATAコマンドが使用され、SASインタフェースではSCSI規格で定義されたSCSIコマンドが使用され、PCIeインタフェースおよびEthernetインタフェースではNVM Express(NVMe)(登録商標)規格で規定されたNVMeコマンドが使用される。これらコマンドは、ライトコマンド、リードコマンド、アンマップコマンド、を含む。
ライトコマンドは、SSD3に対し、ユーザデータ(ライトデータ)を論理領域識別子で示された領域にマッピングされたNAND型フラッシュメモリ5の領域に書き込むことを要求するコマンド(ライト要求)である。論理領域識別子として論理アドレス(特にLBA)とネームスペース識別子の組み合わせが使用される場合のライトコマンドは、例えば、あるネームスペースを識別するネームスペース識別子、このネームスペース内の論理アドレス(開始LBA)、ライトデータのサイズ(セクタの個数)、このライトデータが格納されているホスト2のメモリ内の位置を示すデータポインタ(バッファアドレス)、を含み得る。開始LBAは、ライトデータが書き込まれるべき論理領域に含まれる一つ以上のセクタのうちの、最初のセクタのLBAを示す。
リードコマンドは、SSD3に対し、このリードコマンドによって指定された論理領域識別子で示される領域にマッピングされたNAND型フラッシュメモリ5の領域からデータを読み出すように要求するコマンド(リード要求)である。論理領域識別子として論理アドレス(特にLBA)とネームスペース識別子の組み合わせが使用される場合のリードコマンドは、あるネームスペースを識別するネームスペース識別子、このネームスペース内の論理アドレス(開始LBA)、リードすべきデータのサイズ(セクタの個数)、このデータが転送されるべきホスト2のメモリ内の位置を示すデータポインタ(バッファアドレス)、を含み得る。開始LBAは、リードすべきデータが格納されている論理領域に含まれる一つ以上のセクタのうちの、最初のセクタのLBAを示す。
アンマップコマンドは、SSD3に対し、アンマップ対象の論理領域を論理領域識別子で通知する。アンマップコマンドは、L2Pテーブル37からその論理領域に対応するNAND型フラッシュメモリ5の物理領域を示す情報を削除し、その物理領域に記録されているデータを無効化するコマンドである。論理領域識別子として論理アドレス(特にLBA)とネームスペース識別子の組み合わせが使用される場合、コントローラ4は、アンマップコマンドによって指定された全ての論理アドレス範囲(LBA範囲)に対応するL2Pテーブル37のエントリにNULL値を格納する、またはこれらエントリそれぞれから物理アドレスを削除する。このアンマップ動作により、このLBA範囲に含まれる各LBAに関連付けられているデータは無効化される。
ホスト2から受信するコマンドには、SSD3に対し、特定の論理領域に格納されているセキュアイレーズ対象データのセキュアイレーズを要求するコマンド(以下、特定コマンドと称する)も含まれる。特定の論理領域は、ホスト2によって指定される論理領域識別子によって論理的に識別される領域である。
セキュアイレーズ対象データは、特定の論理領域に格納されているデータと特定の論理領域に格納されていたデータの双方を含む。特定の論理領域に格納されているデータは、特定の論理領域に現在格納されている有効データを意味する。特定の論理領域に格納されていたデータは、特定の論理領域への更新データの書き込み等によって無効化された無効データを意味する。SSD3においては、旧データが格納されている物理記憶位置とは異なる物理記憶位置に更新データが書き込まれるので、旧データが旧物理記憶位置に無効データとして残されたままデータの更新が行われる。セキュアイレーズ対象データは、このような無効データも含む。
以下の説明では、特定の論理領域をセキュアイレーズ対象論理領域と称し、セキュアイレーズ対象論理領域に格納されているデータ及び/又は格納されていたデータをセキュアイレーズ対象データと称する。セキュアイレーズ対象論理領域は論理領域識別子により論理的に識別される。
特定コマンドは、例えば、セキュアイレーズ対象論理領域を識別する論理領域識別子を指定し、且つセキュアイレーズ対象データのセキュアイレーズを要求するコマンドである。
あるいは、特定コマンドは、セキュアイレーズ対象論理領域を識別する論理領域識別子を指定せずにセキュアイレーズ対象データのセキュアイレーズを要求するコマンドであってもよい。この場合には、ホスト2は、まず、セキュアイレーズ対象論理領域を識別する論理領域識別子を指定する一つ以上のコマンドをSSD3に送信する。次いで、ホスト2は、セキュアイレーズ対象データのセキュアイレーズを要求する特定コマンドをSSD3に送信する。
セキュアイレーズ対象論理領域を識別する論理領域識別子がネームスペース識別子の場合、セキュアイレーズ対象論理領域はネームスペース識別子によって識別されるネームスペースである。この場合、セキュアイレーズ対象データはネームスペース識別子によって識別されるネームスペースに格納されているデータ及び/又は格納されていたデータである。
つまり、コントローラ4が複数のネームスペース識別子によってそれぞれ識別される複数のネームスペースを管理するように構成されているケースにおいては、ネームスペース識別子がセキュアイレーズ対象ネームスペースを識別する論理領域識別子として使用可能である。
セキュアイレーズ対象論理領域を識別する論理領域識別子がLBAのような論理アドレスである場合、セキュアイレーズ対象論理領域は論理アドレスによって識別されるセクタであり、セキュアイレーズ対象データはこの論理アドレスによって識別されるセクタに格納されているデータ及び/又は格納されていたデータである。なお、複数ネームスペースが存在する場合は、ネームスペース識別子と論理アドレスの組み合わせがセキュアイレーズ対象論理領域を識別する論理領域識別子として用いられてもよい。
特定コマンドは、一つ以上のセキュアイレーズ対象セクタを識別する一つ以上の論理アドレスを指定することができる。この場合、特定コマンドは、論理アドレス範囲(例えば論理領域の先頭を示す論理アドレスとそこからのセクタ数で指定されるLBA範囲)を指定してもよい。複数の論理アドレス範囲をセキュアイレーズ対象としたい場合には、ホスト2は、まず、各々がセキュアイレーズ対象論理アドレス範囲を指定する複数のコマンドをSSD3に送信してもよく、次いで、セキュアイレーズ対象データのセキュアイレーズを要求する特定コマンドをSSD3に送信してもよい。もちろん、特定コマンドが、複数の論理アドレス範囲を指定する複数のパラメータを含んでいてもよい。この場合も複数ネームスペースが存在する場合は、ネームスペース識別子と論理アドレス範囲の組み合わせが、セキュアイレーズ対象論理領域を識別する一つの論理領域識別子となってもよい。
コントローラ4がキー・バリューストアをサポートしている場合、セキュアイレーズ対象論理領域を識別する論理領域識別子としてキー・バリューストアのキーを用いることができる。この場合、セキュアイレーズ対象論理領域はキーによって識別されるバリューが格納されている論理領域であり、セキュアイレーズ対象データはこのキーによって識別される論理領域に格納されているデータ及び/又は格納されていたデータである。特定コマンドは、一つ以上のセキュアイレーズ対象バリューを識別する一つ以上のキーを指定することができる。
第1実施形態では、ライトコマンド、リードコマンドのようなI/Oコマンドによって指定される論理領域識別子として、ネームスペース識別子と論理アドレス(LBA)との組み合わせが用いられる。I/Oコマンドによって指定される、ネームスペース識別子と論理アドレス(LBA)との組み合わせは、アクセス対象の論理領域を示す。なお、コントローラ4がキー・バリューストアをサポートしている場合、キー・バリューストアのキー、またはネームスペース識別子とキーとの組み合わせが、アクセス対象の論理領域を示す。
図3は、SSD3において管理される複数のネームスペースを説明するための図である。
図3においては、コントローラ4がネームスペースNS#1(NS#1)、ネームスペースNS#2(NS#2)、ネームスペースNS#3(NS#3)を管理している場合が例示されている。各ネームスペースは、ネームスペース識別子(NSID)によって識別される。各ネームスペースは連続する複数の論理アドレス(LBA)の集合を含む。各ネームスペースに対応する論理アドレス範囲は、LBA0から始まる。各ネームスペースは任意のサイズに設定可能である。各ネームスペースのサイズは、各ネームスペースに含まれるLBAの個数に対応する。
図3においては、ネームスペースNS#1がLBA0からLBA(i-1)までの連続する複数のLBAを含み、ネームスペースNS#2がLBA0からLBA(j-1)までの連続する複数のLBAを含み、ネームスペースNS#3がLBA0からLBA(k-1)までの連続する複数のLBAを含む場合が例示されている。
ネームスペースNS#1、ネームスペースNS#2、ネームスペースNS#3がコントローラ4によって管理されている場合、一つのL2Pテーブル37を用いて、SSD3の一つの内部用論理アドレス空間にネームスペースNS#1、ネームスペースNS#2、ネームスペースNS#3がマッピングされるように、ネームスペース毎にベースアドレスが定義されてもよい。あるいは、L2Pテーブル37がネームスペース毎に作成されてもよい。
図1の説明に戻る。CPU12は、ホストI/F11、NAND I/F13、DRAM I/F14、DMAC15、SRAM16、ECCエンコード/デコード部17を制御するように構成されたプロセッサである。CPU12は、SSD3の電源オンに応答してNAND型フラッシュメモリ5または図示しないROMから制御プログラム(ファームウェア)をSRAM16にロードし、そしてこのファームウェアを実行することによって様々な処理を行う。なお、ファームウェアはDRAM6上にロードされてもよい。CPU12は、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行することができる。CPU12の動作は、上述のファームウェアによって制御される。なお、コマンド処理の一部または全部は、コントローラ4内の専用ハードウェアによって実行されてもよい。
このファームウェアは、CPU12を、ネームスペース管理部21、ライト制御部22、リード制御部23及びイレーズ制御部24として機能させる。
ネームスペース管理部21は、ホスト2から受信されるネームスペース管理コマンドに基づき、ネームスペースの作成、管理、削除等を行う。
ライト制御部22は、ホストI/F11を介してホスト2から受信されるライトコマンドを処理する。ライトコマンドは、ネームスペース識別子(NSID)、開始LBA、ライトデータのサイズ等を指定する。ライト制御部22は、ホストI/F11を介してホスト2から受信されたライトコマンドに関連付けられたライトデータを、NAND I/F13を介してNAND型フラッシュメモリ5に書き込む。そして、ライト制御部22は、ライトデータに対応する各LBAと、このライトデータが書き込まれた物理アドレスとが関連付けられるように、L2Pテーブル37を更新する。
リード制御部23は、ホストI/F11を介してホスト2から受信されるリードコマンドを処理する。リードコマンドは、ネームスペース識別子(NSID)、開始LBA、リード対象データのサイズ等を指定する。リード制御部23は、L2Pテーブル37を参照することによって、リード対象データが格納されている物理アドレスを取得する。そしてリード制御部23は、リード対象データをNAND I/F13を介してNAND型フラッシュメモリ5から読み出す。
イレーズ制御部24は、ホストI/F11を介してホスト2から受信される特定コマンドに応じて、論理領域識別子によって識別されるセキュアイレーズ対象論理領域に格納されているセキュアイレーズ対象データのセキュアイレーズを、物理的セキュアイレーズ方法によって行う。イレーズ制御部24は、アンマップ部24aと、ガベージコレクション(GC)部24bと、セキュアイレーズ部24cとを含んでもよい。
アンマップ部24aは、セキュアイレーズ対象データを無効化するアンマップ動作を行う。例えば、アンマップ部24aは、セキュアイレーズ対象論理領域に含まれている全ての論理領域を識別する論理領域識別子をアンマップする。
GC部24bは、セキュアイレーズ対象データとセキュアイレーズ対象データを除くデータのうちの有効データとを格納している各ブロックをGC対象ブロック(コピー元ブロック)として選択する。セキュアイレーズ対象データは、セキュアイレーズ対象論理領域内の有効データ及び/又は無効データでよい。セキュアイレーズ対象データを除くデータのうちの有効データは、セキュアイレーズ対象論理領域以外の他の論理領域に格納されている有効データである。GC部24bは、セキュアイレーズ対象データを除くデータのうちの有効データのみをコピー元ブロックからコピー先ブロックにコピーするコピー動作を実行する。アンマップ動作とコピー動作により、コピー元ブロックは、一切の有効データが格納されないブロックとなる。
セキュアイレーズ部24cは、コピー動作の実行後、コピー元ブロックを含むセキュアイレーズ対象データを格納するブロックに対して少なくともデータ消去動作を行い、これによってセキュアイレーズ対象データのセキュアイレーズを物理的セキュアイレーズ方法によって行う。
コントローラ4内の他のコンポーネントについて説明する。
NAND I/F13は、CPU12の制御の下、NAND型フラッシュメモリ5を制御するように構成されたNANDコントローラである。
DRAM I/F14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAMコントローラである。
DRAM6の記憶領域の一部は、ライトバッファ31、リードバッファ32、コマンドバッファ33として利用されてもよい。また、DRAM6の記憶領域の一部は、セキュアイレーズ対象ブロックリスト34、フリーブロックリスト35、アクティブブロックリスト36、及びL2Pテーブル37を記憶する領域として利用されてもよい。
ライトバッファ31は、NAND型フラッシュメモリ5にライトすべきデータを一時的に記憶する。
リードバッファ32は、NAND型フラッシュメモリ5からリードしたデータを一時的に記憶する。
コマンドバッファ33は、ホスト2から受信したコマンドを、そのコマンドが実行されるまで一時的に記憶する。
セキュアイレーズ対象ブロックリスト34は、セキュアイレーズ対象データが格納されているブロックそれぞれのブロック識別子を記憶する。
フリーブロックリスト35は、フリーブロックそれぞれのブロック識別子を記憶する。フリーブロックは有効データが格納されていないブロックである。
アクティブブロックリスト36は、アクティブブロックそれぞれのブロック識別子を記憶する。アクティブブロックは有効データが格納されているブロックである。
次に、物理的セキュアイレーズ方法によりデータを安全且つ確実に消去する動作(以下、物理的セキュアイレーズ動作と称する)を説明する。
図4は、SSD3において実行されるライト動作と物理的セキュアイレーズ動作の概要を示す。物理的セキュアイレーズ動作の説明に先立ち、まず、ライト動作について説明する。
ライト制御部22は、ライトデータをライトバッファ31に書き込む。ライト制御部22は、書き込み先ブロック56が割り当てられていない場合、フリーブロックリスト35によって管理されているフリーブロックの中の一つのフリーブロックを選択し、選択したフリーブロックに対するブロックイレーズを行い、ブロックイレーズが行われたフリーブロックを書き込み先ブロック56として割り当てる。
ライト制御部22は、ライトバッファ31内のライトデータを書き込み先ブロック56の書き込み可能なページに書き込む。ライト制御部22は、L2Pテーブル37を更新する。ライトデータが書き込み先ブロック56に書き込まれると、書き込み先ブロック56は部分的にデータが書き込まれたブロック(以下、書き込み途中のブロックとも称される)となる。書き込み途中のブロックも有効データを格納しているので、アクティブブロックとして管理される。
書き込み先ブロック56がライトデータで満たされることによって書き込み先ブロック56に書き込み可能なページが無くなった場合、ライト制御部22は、新たなフリーブロックを書き込み先ブロックとして割り当て、ライトバッファ31内のライトデータを新たに割り当てた書き込み先ブロックの書き込み可能なページに書き込む。
次に、物理的セキュアイレーズ動作において実行される、アンマップ動作とガベージコレクション動作について説明する。
論理領域識別子で指定された論理領域のデータのセキュアイレーズを指示する特定コマンドをホスト2から受信すると、アンマップ部24aは、特定コマンドで指定された全ての論理領域を識別する論理領域識別子をアンマップする。換言すれば、アンマップ部24aは、セキュアイレーズ対象データを無効化するアンマップ動作を実行する。これにより、全てのセキュアイレーズ対象データは無効データとなる。有効データが無くなったアクティブブロックはアクティブブロックリスト36から取り除かれ、代わりに、フリーブロックリスト35によって管理される。
そして、GC部24bは、ガベージコレクション動作を実行する。このガベージコレクション動作において、GC部24bは、セキュアイレーズ対象データを除くデータのうちの有効データのみを、セキュアイレーズ対象データが格納されている一つ以上の第1のブロックから、一つ以上のコピー先ブロックにコピーする。セキュアイレーズ対象データを除くデータは、セキュアイレーズ対象データに指定されなかったデータである。
これにより、アクティブブロック群は、セキュアイレーズ対象データとセキュアイレーズ対象データを除くデータのうちの有効データとが混在しているブロックを含まないようになる。一つ以上の第1のブロック(コピー元ブロック)はセキュアイレーズ対象データを除くデータのうちの有効データを含まなくなるので、一つ以上の第1のブロックの各々をフリーブロックとして扱うことが可能となる。よって、一つ以上の第1のブロックはアクティブブロックリスト36から取り除かれ、代わりに、フリーブロックリスト35によって管理される。
次に、GC部24bによって実行されるガベージコレクション動作の詳細例を説明する。セキュアイレーズ対象データは、例えば、(i)特定コマンドによってネームスペース識別子のみが指定された場合には、このネームスペース識別子によって識別される、セキュアイレーズ対象ネームスペースのデータ(ユーザデータ)、(ii)特定コマンドによってネームスペース識別子とLBA範囲との組み合わせが指定された場合は、このネームスペース識別子とLBA範囲とによって識別される論理領域のデータ、(iii)特定コマンドによってキー・バリューストアのキーが指定された場合には、このキーによって識別されるバリュー、のいずれかである。
GC部24bは、セキュアイレーズ対象データを格納しているアクティブブロックをコピー元ブロック52として選択する。
GC部24bは、フリーブロックリスト35によって管理されているフリーブロックのうちの一つのフリーブロックを選択する。GC部24bは、選択したフリーブロックに対してブロックイレーズを行う。そしてGC部24bは、ブロックイレーズが行われたフリーブロックをコピー先ブロック54として割り当てる。
GC部24bは、セキュアイレーズ対象データを除いたデータのうちの有効データ、すなわちセキュアイレーズ非対象の有効データを、コピー元ブロック52からコピー先ブロック54にコピーする。GC部24bは、L2Pテーブル37を更新して、有効データがコピーされたコピー先物理記憶位置を示す物理アドレスを、このコピーされた有効データの論理領域識別子に関連付ける。コピー元ブロック52内のセキュアイレーズ対象データは、アンマップ状態のまま維持される。有効データがコピーされたコピー先ブロック54は、アクティブブロックとなり、アクティブブロックリスト36によって管理される。
コピー元ブロック52内の全ての有効データのコピーが完了すると、コピー元ブロック52はフリーブロックとなり、フリーブロックリスト35によって管理される。
GC部24bは、セキュアイレーズ対象データを格納している別のアクティブブロックを新たなコピー元ブロック52として選択する。GC部24bは、セキュアイレーズ非対象の有効データを、新たなコピー元ブロック52からコピー先ブロック54にコピーする。GC部24bは、L2Pテーブル37を更新して、有効データがコピーされたコピー先物理記憶位置を示す物理アドレスと、このコピーされた有効データの論理領域識別子とを関連付ける。コピー元ブロック52内のセキュアイレーズ対象データは、アンマップ状態のまま維持される。
コピー先ブロック54がデータで満たされると、すなわちコピー先ブロック54内の書き込み可能なページがなくなると、GC部24bは、フリーブロックリスト35によって管理されているフリーブロックのうちの一つのフリーブロックを選択する。GC部24bは、選択したフリーブロックに対してブロックイレーズを行う。そしてGC部24bは、ブロックイレーズが行われたフリーブロックを新たなコピー先ブロック54として割り当てる。
有効データのコピーが完了したコピー元ブロックは、フリーブロックリスト35によってフリーブロックとして管理されているので、コピー先ブロック54として再利用することができる。GC部24bは、コピーによってフリーブロックになったコピー元ブロックをコピー先ブロックとして選択してもよい。この場合、GC部24bは、この選択したブロックに対してブロックイレーズを行う。これにより、コピーによってフリーブロックになったコピー元ブロック内のセキュアイレーズ対象データは、消去される。GC部24bは、ブロックイレーズが行われたブロックを新たなコピー先ブロック54として割り当てる。そしてGC部24bは、セキュアイレーズ非対象の有効データを、コピー元ブロック52からコピー先ブロック54にコピーする。このように、フリーブロックになったコピー元ブロックがコピー先ブロック54として再利用されることにより、このコピー元ブロック内のセキュアイレーズ対象データは、ブロックイレーズによって消去され、さらに、セキュアイレーズ非対象の有効データによってオーバーライトされる。
このようにして、GC部24bは、コピーによって有効データが格納されていないフリーブロックになったコピー元ブロックに対して少なくともブロックイレーズを行う。
セキュアイレーズ対象データを格納している全てのアクティブブロックに対するガベージコレクション動作が完了すると、セキュアイレーズ対象データは、フリーブロック以外のどのブロックにも存在しなくなる。
次に、物理的セキュアイレーズ動作において実行される上述したブロックイレーズ動作の例を説明する。
セキュアイレーズ部24cは、ガベージコレクション動作の実行後、フリーブロックリスト35によって管理されているフリーブロックのうち、セキュアイレーズ対象データを格納している一つ以上の第1のフリーブロックに対して少なくともブロックイレーズを行う。
ここで、一つ以上の第1のフリーブロックは、(i)コピーによって有効データが格納されていないフリーブロックになった一つ以上のコピー元ブロックのうち、コピー先ブロックとして使用されなかった一つ以上のブロックと、(ii)ガベージコレクション動作の開始前から存在するフリーブロックであって、セキュアイレーズ対象論理領域の無効データを格納しているフリーブロックのうち、コピー先ブロックとして使用されなかった一つ以上のフリーブロックと、を含む。(ii)におけるセキュアイレーズ対象論理領域の無効データは、セキュアイレーズ対象論理領域のデータのうち、物理的セキュアイレーズ動作の開始前に既に無効化されていたデータを含む。
セキュアイレーズ部24cは、フリーブロックリスト35によって管理されているフリーブロックから、(i)に該当するフリーブロックと(ii)に該当するフリーブロックを見つけ出す処理を行い、見つけ出したフリーブロックの各々に対して少なくともブロックイレーズを行う。あるいは、セキュアイレーズ部24cは、フリーブロックリスト35によって管理されている全てのフリーブロックの各々に対して少なくともブロックイレーズを行ってもよい。
この結果、ガベージコレクション動作後にフリーブロックとして残っている各ブロックに格納されているセキュアイレーズ対象データは、少なくともブロックイレーズによってセキュアにイレーズされる。また、コピー先ブロックとして再利用された幾つかのブロックに格納されていたセキュアイレーズ対象データは、オーバーライト(つまり、ブロックイレーズ+オーバーライト)によってセキュアにイレーズされる。
なお、セキュアイレーズ部24cは、ガベージコレクション動作の実行後、セキュアイレーズ対象データを格納している各フリーブロックに対してブロックイレーズを行い、さらに、各フリーブロックに対してオール0またはオール1またはその組み合わせのような特定のデータパターンを書き込んでもよい。これによっても、セキュアイレーズ対象データの全てがブロックイレーズと特定のデータパターンによるオーバーライトによってセキュアにイレーズされる。
以下では、上述の特定のコマンドとして、特定のネームスペースのデータのセキュアイレーズを要求する第1の特定コマンド使用される場合を想定する。第1の特定のコマンドは、セキュアイレーズ対象の論理領域を示す論理領域識別子として、特定のネームスペースを識別するネームスペース識別子を使用する。
図5は、第1実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順を示すフローチャートである。
コントローラ4がホスト2からコマンドを受信すると(ステップS102)、CPU12は、この受信したコマンドが第1の特定コマンドであるか否かを判定する(ステップS104)。
受信したコマンドが第1の特定コマンドではない場合(ステップS104のNO)、CPU12は、受信したコマンドに応じた処理を実行する(ステップS106)。
受信したコマンドが第1の特定コマンドである場合(ステップS104のYES)、アンマップ部24aは、セキュアイレーズ対象ネームスペースの全てのデータを無効化するアンマップ動作を実行する(ステップS112)。
ステップS112では、例えば、アンマップ部24aは、セキュアイレーズ対象ネームスペースの全てのLBAに対応するL2Pテーブル37のエントリそれぞれから物理アドレスを削除する。又は、アンマップ部24aは、これらエントリにNULL値を格納する。このアンマップ動作により、セキュアイレーズ対象ネームスペースに対応するL2Pテーブル37内の全クラスタは、無効状態となる。すなわち、セキュアイレーズ対象ネームスペースに対応する全クラスタに関連付けられていたデータは破棄してよいデータであると、内部的に認識される状態となる。この結果、セキュアイレーズ対象ネームスペース内の全てのデータは無効データとなる。
或るアクティブブロックに格納されていた全てのデータがセキュアイレーズ対象データであった場合、アンマップ動作の終了時点で、このアクティブブロックは、無効データのみを格納するフリーブロックとなる。
或るアクティブブロックがセキュアイレーズ対象データとセキュアイレーズ非対象ネームスペースの有効データの双方を格納していた場合、アンマップ動作の終了時点で、このアクティブブロックは、セキュアイレーズ対象データのうちの無効データと、セキュアイレーズ非対象ネームスペースの有効データと、を格納している。
セキュアイレーズ対象データ(無効データ)と、セキュアイレーズ非対象ネームスペースの有効データとが混在しているブロックがアクティブブロック群から無くなるように、GC部24bは、ガベージコレクション動作(GC動作)を実行する(ステップS114)。
GC部24bは、少なくとも、セキュアイレーズ対象ネームスペースの無効データを格納しているアクティブブロックの全てをGC対象ブロック(つまりコピー元ブロック)として選択する。あるいは、ガベージコレクション動作を簡単に実装する場合には、GC部24bは、セキュアイレーズ対象ネームスペースの無効データであるか否かにに関わらず、少なくとも無効データを格納するアクティブブロックの全てをコピー元ブロックとして選択してもよい。
GC部24bは、コピー元ブロックとして選択した各アクティブブロックのブロック識別子を、セキュアイレーズ対象ブロックリスト34に保存してもよい。
GC部24bは、ブロックがどのネームスペースのデータを格納しているかを、例えば図6に示すような情報に基づいて調べることができる。
図6は、ブロックに書き込まれるデータ構造の例を示す。図6(a)の例では、ネームスペース識別子とLBAのペアと、そのペアによって識別されるデータと、が各ページに書き込まれている。そのため、GC部24bは、各ページのネームスペース識別子とLBAのペアを読むことにより、当該ページを含むブロックがセキュアイレーズ対象ネームスペースのデータを格納するか否を判断することができる。
ブロックに書き込まれるデータ構造の他の例では、図6(b)に示すように、図6(a)の情報に加えて、このブロック中のデータが含まれるネームスペースのネームスペース識別子のリストがいずれかのページ(例えば最後のページ)に書き込まれている。そのため、GC部24bは、各ブロックの全てのページを読むことなく、各ブロックの最後のページに格納されているネームスペース識別子のリストだけを読むことにより、当該ブロックがセキュアイレーズ対象ネームスペースのデータを格納するか否かを判断することができる。
図5のステップS114の説明に戻る。GC部24bは、フリーブロックの中から任意の1つのフリーブロックを選択する。GC部24bは、選択したフリーブブロックに対してブロックイレーズを行う。GC部24bは、ブロックイレーズが行われたフリーブロックをコピー先ブロック54として割り当てる。
GC部24bは、セキュアイレーズ対象データを除いたデータのうちの有効データ、すなわちセキュアイレーズ非対象ネームスペースの有効データを、コピー元ブロック52からコピー先ブロック54へコピーする。GC部24bは、L2Pテーブル37を更新して、セキュアイレーズ非対象ネームスペースの有効データのLBAそれぞれと、コピー先の物理アドレスそれぞれとをマッピングする。
セキュアイレーズ非対象ネームスペースの有効データがコピーされると、コピー元ブロック52中のセキュアイレーズ非対象ネームスペースの有効データは無効データとなる。コピーの前に、セキュアイレーズ対象ネームスペースの全てのLBAがアンマップされているので、コピー元ブロック52中のデータの全ては、コピー後は無効データである。従って、コピー元ブロック52に格納されているセキュアイレーズ非対象ネームスペースの全ての有効データがコピー先ブロックにコピーされると、コピー元ブロック52はフリーブロックとなる。よって、全てのコピー元ブロック内のセキュアイレーズ非対象ネームスペースの全ての有効データが幾つかのコピー先ブロックにコピーされると、セキュアイレーズ対象データはフリーブロック以外に存在しなくなる。言い換えると、セキュアイレーズ対象ネームスペースの無効データは幾つかのフリーブロックのみに存在するようになる。
GC部24bは、ガベージコレクション動作の終了条件が満たされたか否かを判定する(ステップS122)。セキュアイレーズ対象ネームスペースのデータとセキュアイレーズ非対象ネームスペースの有効データとが混在するブロックからの、セキュアイレーズ非対象ネームスペースの有効データに対する全てのコピーが完了すると、セキュアイレーズ対象データ(セキュアイレーズ対象ネームスペースの無効データ)がアクティブブロックから無くなる。すなわち、セキュアイレーズ対象ネームスペースの無効データはフリーブロックのみに存在することになる。そのため、終了条件は、セキュアイレーズ対象ネームスペースの無効データを格納するブロックがアクティブブロック群から存在しなくなったこととしてよい。
セキュアイレーズ対象ネームスペースの無効データを格納するブロックがアクティブブロック群から存在しなくなるまで、GC部24bは、GC動作を引き続き実行する(ステップS122のNO、ステップS114)。
ガベージコレクション動作の終了条件が満たされると(ステップS122のYES)、GC部24bは、GC動作を終了する。この時点で、セキュアイレーズ対象ネームスペースの無効データがフリーブロック以外に存在する可能性はなくなっている。
セキュアイレーズ部24cは、少なくともセキュアイレーズ対象ネームスペースの無効データが格納されている各フリーブロックに対してブロックイレーズ動作を行う(ステップS124)。コピー先ブロックとして再利用されたコピー元ブロックは、ステップS114のガベージコレクション動作によって既にブロックイレーズされている。したがって、ステップS114で行った各コピー元ブロックに対するブロックイレーズ動作とステップS124のブロックイレーズ動作とを合わせることにより、セキュアイレーズ対象ネームスペースのデータの全てがブロックイレーズによってセキュアにイレーズされる。
ステップS124では、セキュアイレーズ部24cは、セキュアイレーズ対象ネームスペースの無効データが格納されている各フリーブロックに対してブロックイレーズを行い、さらに、これらフリーブロックの各々に特定のデータパターンを書き込んでもよい。この結果、各フリーブロックに格納されているセキュアイレーズ対象ネームスペースの無効データは、特定のデータパターンでオーバーライトされる。コピー先ブロックとして再利用されたコピー元ブロックに格納されていたセキュアイレーズ対象ネームスペースの無効データは、ステップS114のガベージコレクション動作によって、他のネームスペースの有効データで既にオーバーライトされている。したがって、ステップS114でのオーバーライトとステップS124のオーバーライトとを合わせることにより、セキュアイレーズ対象ネームスペースのデータの全てがオーバーライトによってセキュアにイレーズされる。
セキュアイレーズ部24cは、フリーブロックの全てに対してブロックイレーズを行ってもよい。これにより、セキュアイレーズ対象ネームスペースの無効データが格納されている各フリーブロックに対して少なくともブロックイレーズを行うというステップS124の処理が簡単に実施され得る。
あるいは、ブロックイレーズが行われるブロックの個数を減らすために、セキュアイレーズ部24cは、セキュアイレーズ対象ネームスペースの無効データが格納されている一つ以上のフリーブロックを特定する処理を実行し、特定された一つ以上のフリーブロックのみに対してブロックイレーズを行ってもよい。
前者および後者のいずれにおいても、少なくとも、セキュアイレーズ対象ネームスペースの無効データが格納されている一つ以上のフリーブロックが物理的セキュアイレーズ動作の対象となる。
後者の場合であって、且つ、ステップS114においてセキュアイレーズ対象ネームスペースの無効データを格納しているアクティブブロックのみをGC対象ブロックとした場合、セキュアイレーズ部24cは、ステップS124の開始時点で存在するフリーブロックを、ステップS114のGC動作によって生成されたフリーブロックのグループIと、それ以外のフリーブロックのグループIIとに分類してもよい。セキュアイレーズ部24cは、グループIに属する各フリーブロックの内容をチェックすることなく、セキュアイレーズ対象ネームスペースの無効データが格納されているフリーブロックとして容易に特定することができる。セキュアイレーズ部24cは、グループIIに属する各フリーブロックの内容をチェックすることによって、これら各フリーブロックが、セキュアイレーズ対象ネームスペースの無効データが格納されているフリーブロックであるか否かを判定することができる。
ステップS124の処理が完了すると、イレーズ制御部24は、第1の特定コマンドの完了を示すレスポンスをホスト2に送信することによって、第1の特定コマンドの完了をホスト2に通知する(ステップS126)。
次に、特定のネームスペースのデータのセキュアイレーズを要求する第1の特定コマンドを受信した時におけるI/Oコマンドの取り扱いについて説明する。I/Oコマンドの例は、ライトコマンド、リードコマンド、アンマップコマンド、を含む。
まず、第1の特定コマンドが受信される前に受信され且つ未完了のI/Oコマンドに対する取り扱いについて説明する。
第1の特定コマンドの処理によって、セキュアイレーズ対象ネームスペースのデータはセキュアにイレーズされることになる。このため、コントローラ4は、このセキュアイレーズ対象ネームスペースに対する未完了のライトコマンド、およびこのセキュアイレーズ対象ネームスペースに対する未完了のアンマップコマンドは原則としてアボートする。
あるいは、コントローラ4は、未完了のライトコマンドまたはアンマップコマンドの処理の完了を待ち、これらのコマンドの処理が完了した後に第1の特定コマンドの実行を開始してもよい。特に、コントローラ4は、これらのコマンドの処理が完了間際であれば、これらのコマンドをアボートせずに、これらのコマンドの処理が完了した後に第1の特定コマンドの実行を開始してもよい。
図7は、第1の特定コマンドが受信される前に受信され且つ未完了のI/Oコマンドに対する処理の手順を示すフローチャートである。
コントローラ4は、特定のネームスペースのデータのセキュアイレーズを要求する第1の特定コマンドをホスト2から受信する(ステップS702)。コントローラ4は、この特定のネームスペース(セキュアイレーズ対象ネームスペース)に対する実行中のI/Oコマンド、あるいはセキュアイレーズ対象ネームスペースに対する、受信済みで且つまだ実行が開始されていないI/Oコマンド(以下、これらのI/Oコマンドを未完了のコマンドとも称する)が存在するか否かを判定する(ステップS704)。
未完了のコマンドが存在する場合(ステップS704のYES)、コントローラ4は、未完了のコマンドがライトコマンドまたはアンマップコマンドであるか否かを判定する(ステップS706)。
未完了のコマンドがライトコマンドまたはアンマップコマンドである場合(ステップS706のYES)、コントローラ4は、未完了のライトコマンドまたはアンマップコマンドの処理が完了間際であるか否かを判定する(ステップS708)。
未完了のライトコマンドまたはアンマップコマンドの処理が完了間際ではない場合(ステップS708のNO)、コントローラ4は、未完了のライトコマンドまたはアンマップコマンドをアボートする(ステップS712)。ステップS712で、ホスト2から受信したコマンドを任意の順序(Out of order)で実行することが許されない場合は、コントローラ4は、例えばライトコマンドをアボートした場合には、このライトコマンドの受信後にホスト2から受信した後続の全てのI/Oコマンドをアボートする。
未完了のコマンドのアボート後、コントローラ4は、第1の特定コマンドの実行を開始する(ステップS714)。
未完了のライトコマンドまたはアンマップコマンドの処理が完了間際である場合(ステップS708のYES)、コントローラ4は、未完了のライトコマンドまたはアンマップコマンドをアボートせず、未完了のライトコマンドまたはアンマップコマンドの処理の完了を待ってもよい(ステップS710)。そして、未完了のライトコマンドまたはアンマップコマンドの処理の完了に応じて(ステップS710のYES)、コントローラ4は、第1の特定コマンドの実行を開始する(ステップS714)。
セキュアイレーズ対象ネームスペースに対する未完了のコマンドがライトコマンドまたはアンマップコマンドの何れでもない場合、すなわちセキュアイレーズ対象ネームスペースに対する未完了のリードコマンドが存在する場合には(ステップS706のNO)、コントローラ4は、未完了のリードコマンドをアボートせず、未完了のリードコマンドの処理の完了を待つ(ステップS710)。そして、未完了のリードコマンドの処理の完了に応じて、コントローラ4は、第1の特定コマンドの実行を開始する(ステップS714)。
次に、第1の特定コマンドの実行中に受信されたI/Oコマンドに対する取り扱いについて、図8を参照して説明する。図8は、第1の特定コマンドの実行中に受信されるI/Oコマンドに対する処理の手順を示すフローチャートである。
コントローラ4は、特定のネームスペースのデータのセキュアイレーズを要求する第1の特定コマンドを受信し(ステップS802)、第1の特定コマンドの実行を開始する(ステップS804)。第1の特定コマンドの実行中にI/Oコマンドを受信した場合(ステップS806)、コントローラ4は、受信したI/Oコマンドがこの特定のネームスペース(セキュアイレーズ対象ネームスペース)に対するI/Oコマンドであるか否かを判定する(ステップS808)。
第1の特定コマンドの実行中に受信したI/Oコマンドがセキュアイレーズ対象ネームスペースに対するI/Oコマンドである場合(ステップS808のYES)、コントローラ4は、受信したI/Oコマンドをアボートする(ステップS810)。あるいは、ステップS810で、コントローラ4は、受信したI/Oコマンドの実行を第1の特定コマンドの処理が完了するまで(つまり、第1の特定コマンドの完了がホスト2に通知されるまで)保留し、第1の特定コマンドの処理の完了後に、受信したI/Oコマンドを実行してもよい。
第1の特定コマンドの実行中に受信したI/Oコマンドがセキュアイレーズ対象ネームスペース以外の他のネームスペースに対するI/Oコマンドである場合(ステップS808のNO)、コントローラ4は、以下の第1の方法または第2の方法を選択的に使用することができる。そのため、コントローラ4は、第1の方法または第2の方法の何れが予め選択されているかを判定する(ステップS812)。第1の方法が予め選択されている場合、コントローラ4は、ステップS814の処理を実行する。第2の方法が予め選択されている場合、コントローラ4は、ステップS816の処理を実行する。
第1の方法(ステップS814): 他のネームスペースに対するI/Oコマンドがライトコマンドである場合、コントローラ4は、このライトコマンドの実行を、少なくともGC動作が完了するまで保留し、GC動作の完了後にライトコマンドを実行する。
他のネームスペースに対するI/Oコマンドがリードコマンドである場合、コントローラ4は、このリードコマンドを通常通り実行する。ただし、ホスト2から受信したコマンドを任意の順序(Out of order)で実行することが許されない場合は、コントローラ4は、他のネームスペースに対するリードコマンドを、これらリードコマンドが受信された順序と同じ順序で実行する。そして、他のネームスペースに対するリードコマンドに後続する、当該他のネームスペースに対するライトコマンドを受信した時点で、この受信したライトコマンドと、この受信したライトコマンドに後続する当該他のネームスペースに対する全てのI/Oコマンドの処理とを、少なくともGC動作が完了するまで保留する。GC動作の完了後に、コントローラ4は、この受信したライトコマンドと、この受信したライトコマンドに後続する当該他のネームスペースに対する全てのI/Oコマンドとを、これらコマンドが受信された順序と同じ順序で実行する。
なお、第1の方法の説明において、コントローラ4は、アンマップコマンドをライトコマンドと同様に扱っても、そうでなくてもよい。コントローラ4は、アンマップコマンドをライトコマンドと同様に扱わない場合は、リードコマンドと同様にアンマップコマンドを通常通り実行する。
第2の方法(ステップS816): 他のネームスペースに対するI/Oコマンドがライトコマンド、アンマップコマンド、またはリードコマンドである場合、コントローラ4は、このI/Oコマンドを通常通り実行する。この第2の方法では、他のネームスペースに対するI/Oコマンドの処理が大きく遅延することが無い効果があるが、このI/Oコマンドの処理の分だけ第1の特定コマンドの処理に要する時間が増える。さらに、他のネームスペースに対するライトコマンドに関連付けられたライトデータ(更新データ)の書き込みによって発生した無効データまでもがGC動作の対象になってしまう可能性がある。この場合には、第1の特定コマンドの処理に要する時間がさらに増える。
次に、図9A、図9B、図10、図11A、及び図11Bを参照して、特定のネームスペースのデータに対するセキュアイレーズ動作の例を説明する。
図9Aは、セキュアイレーズ動作の開始前における各アクティブブロックの内容の一例を示す図である。図9Aでは、ブロックBLK0、ブロックBLK1、ブロックBLK2の三つのブロックが、有効データが格納されているアクテティブブロックである場合が例示されている。
ブロックBLK0は、書き込み先ブロックとして割り当てられている書き込み途中のアクティブブロックである。ブロックBLK0においては、空白で図示される未書き込みの記憶領域が残っている。ブロックBLK1およびブロックBLK2の各々は、ブロックの終端までデータが書き込まれている書き込み済みのアクティブブロックである。
SSD3にネームスペースA、ネームスペースB、ネームスペースCの三つのネームスペースが存在する場合、ネームスペースAのデータ、ネームスペースBのデータ、ネームスペースCのデータがブロックBLK0、ブロックBLK1、ブロックBLK2の各々において混在している可能性がある。さらに、ブロックBLK0、ブロックBLK1、ブロックBLK2の各々においては、各ネームスペースの有効データと無効データも混在され得る。無効データは、例えば、この無効データのLBAに関連付けられた新たなライトデータ(更新データ)の書き込みによって、あるいはホスト2からのアンマップコマンドによって無効化されたデータである。
図9Bは、セキュアイレーズ動作の開始前における各フリーブロックの内容の一例を示す図である。図9Bでは、ブロックBLK3、ブロックBLK4、ブロックBLK5、ブロックBLK6の四つのブロックが、有効データが格納されていないフリーブロックである場合が例示されている。
図9Bでは、フリーブロックBLK3においては、ネームスペースAの無効データとネームスペースCの無効データが格納されているが、ネームスペースBの無効データは格納されていない。フリーブロックBLK4~BLK6の各々においては、ネームスペースAの無効データ、ネームスペースBの無効データ、ネームスペースCの無効データが格納されている。
図9Aに示す三つのアクティブブロックと図9Bに示す四つのフリーブロックが存在する状態で、ネームスペースBのデータのセキュアイレーズを要求する第1の特定コマンドをホスト2からSSD3が受信した場合を想定する。
まず、アンマップ部24aは、ネームスペースBに属する全てのLBAにそれぞれ対応するデータを無効化するアンマップ動作を実行する。
図10は、アンマップ動作が実行された後における各アクティブブロックの内容の一例を示す図である。図10では、太字は、このアンマップによって新たに無効データとなったネームスペースBのデータを示している。
アンマップ動作が実行される前は、ブロックBLK0は、図9Aに示されているようにネームペースBの一つの無効データと、ネームペースBの二つの有効データを格納していた。図10に示すように、アンマップにより、ブロックBLK0中のネームペースBの二つの有効データの全ては無効データとなる。
アンマップ動作が実行される前は、ブロックBLK1は、図9Aに示されているようにネームペースBの二つの無効データと、ネームペースBの四つの有効データを格納していた。図10に示すように、アンマップにより、ブロックBLK1中のネームペースBの四つの有効データの全ては無効データとなる。
アンマップ動作が実行される前は、ブロックBLK2は、図9Aに示されているようにネームペースBの三つの無効データと、ネームペースBの四つの有効データを格納していた。図10に示すように、アンマップにより、ブロックBLK2中のネームペースBの四つの有効データの全ては無効データとなる。
アンマップ動作の実行後、GC部24bは、ネームスペースBの無効データを格納しているアクティブブロックの全てをGC対象ブロック、つまりコピー元ブロックとして選択し、GC動作を実行する。
図10では、アクティブブロックであるブロックBLK0、ブロックBLK1、ブロックBLK2の各々が、ネームスペースBの無効データを格納している。したがって、これらブロックBLK0、ブロックBLK1、ブロックBLK2の三つのアクティブブロックの全てがコピー元ブロックとして選択される。
図11Aは、GC動作が実行された後における各アクティブブロックの内容の一例を示す図である。図11Aにおいて、各物理記憶位置内の記号(A)、(B)、(C)は、その物理記憶位置に以前に格納されていたデータに対応するネームスペースがそれぞれネームスペースA、ネームスペースB、ネームスペースCであることを示す。
図11Aでは、GC動作前はフリーブロックであったブロックBLK6およびBLK5がGC動作によりコピー先ブロックとして使用され、有効データのコピーによってアクティブブロックになった場合が例示されている。
ブロックBLK6は、ブロックBLK1およびブロックBLK2の各々からブロックBLK6への有効データのコピーによって、アクティブブロックになる。このコピーの結果、ブロックBLK1に格納されていたネームスペースAおよびネームスペースCそれぞれの有効データの全てと、ブロックBLK2に格納されていたネームスペースAおよびネームスペースCそれぞれの有効データの全てが、ブロックBLK6に格納される。
ブロックBLK5は、ブロックBLK0からブロックBLK5への有効データのコピーによって、アクティブブロックになる。このコピーにより、ブロックBLK0に格納されていたネームスペースAおよびネームスペースCそれぞれの有効データの全てがブロックBLK5に格納される。
以下、ブロックBLK6およびBLK5の各々の状態を、図9Bに示すフリーブロックから図11Aに示すアクティブブロックに遷移させるGC動作について説明する。GC部24bは、ブロックBLK6に対するブロックイレーズを行う。そしてGC部24bは、ネームスペースB以外の他のネームスペースの有効データをブロックBLK1からブロックBLK6にコピーする。この時GC部24bは、ネームスペースB以外の他のネームスペースの有効データがブロックBLK6内の複数の物理記憶位置に連続して配置されるようにコピーする。
さらに、GC部24bは、ネームスペースB以外の他のネームスペースの有効データをブロックBLK2からブロックBLK6にコピーする。この時GC部24bは、ネームスペースB以外の他のネームスペースの有効データがブロックBLK6内の後続する複数の物理記憶位置に連続して配置されるようにコピーする。
これにより、ブロックBLK6は、ブロックBLK1に格納されているネームスペースB以外の他のネームスペースの有効データと、ブロックBLK2に格納されているネームスペースB以外の他のネームスペースの有効データと、で満たされる。この結果、GC動作前はフリーブロックであったブロックBLK6に格納されていたネームスペースBの無効データは、ネームスペースB以外の他のネームスペースの有効データでオーバーライトされたことになる。
図11Aにおいて、太字は、ネームスペースBのデータが消去された物理記憶位置を示している。太字に着目して図11Aを参照すると、例えば、GC動作前はフリーブロックであったブロックBLK6に格納されていたネームスペースBの無効データが、ネームスペースB以外の他のネームスペースの有効データでオーバーライトされていることが理解されよう。
同様にして、GC部24bは、ブロックBLK5に対するブロックイレーズを行う。そしてGC部24bは、ネームスペースB以外の他のネームスペースの有効データをブロックBLK0からブロックBLK5にコピーする。この時GC部24bは、ネームスペースB以外の他のネームスペースの有効データがブロックBLK5内の複数の物理記憶位置に連続して配置されるようにコピーする。なお、この例ではブロックBLK5にはデータが最後まで書かれていないが、残りを例えばオールゼロなどのダミーデータで埋めても構わない。
太字に着目して再び図11Aを参照すると、ブロックBLK5に格納されていたネームスペースBの無効データが、ネームスペースB以外の他のネームスペースの有効データでオーバーライトされているか、ブロックイレーズされた状態であることが理解されよう。
以上のGC動作によって、ネームスペースBのデータ(無効データ)を格納しているブロックBLK0~BLK2はフリーブロックとなる。また、新たにアクティブブロックになったブロックBLK5およびブロックBLK6の二つのブロックはネームスペースB以外の他のネームスペースの有効データのみを格納しており、ネームスペースBのデータを格納していない。したがって、セキュアイレーズ対象ネームスペースのデータと、セキュアイレーズ非対象ネームスペース内の有効データとが混在しているブロックは、アクティブブロック群に存在しなくなる。
図11Bは、GC動作が実行された後における各フリーブロックの内容の一例を示す図である。GC動作が実行された後は、フリーブロックリスト35によって管理されているフリーブロックには、GC動作によってフリーブロックになった三つのブロック(BLK0、BLK1、BLK2)と、GC動作の開始前からフリーブロックである二つのブロック(BLK3、BLK4)が含まれる。
フリーブロックBLK0、フリーブロックBLK1、フリーブロックBLK2の各々は、GC動作によってフリーブロックになり、且つGC動作のためのコピー先ブロックとして使用されなかったブロックである。フリーブロックBLK0、フリーブロックBLK1、フリーブロックBLK2は、セキュアイレーズ対象ネームスペースBの無効データを格納しているが、セキュアイレーズ非対象ネームスペースA、Cの有効データを格納していない。そのため、フリーブロックBLK0、フリーブロックBLK1、フリーブロックBLK2の各々に対してブロックイレーズを行うことが可能となる。
フリーブロックBLK0、フリーブロックBLK1、フリーブロックBLK2の各々に対してブロックイレーズを行うことにより、セキュアイレーズ対象ネームスペースBのデータをフリーブロックBLK0、フリーブロックBLK1、フリーブロックBLK2の各々からセキュアにイレーズすることができる。
なお、GC動作においては、フリーブロックBLK0、フリーブロックBLK1、フリーブロックBLK2の内の任意のブロックを、GC動作のためのコピー先ブロックとして再利用することができる。コピー先ブロックとして再利用されるブロックは、まず、ブロックイレーズされる。そしてコピー先ブロックとして再利用されるブロックに格納されていたセキュアイレーズ対象ネームスペースBのデータは、コピー元ブロックからコピーされるセキュアイレーズ非対象ネームスペースの有効データでオーバーライトされる。このように、コピー先ブロックとして再利用されるブロックに格納されていたセキュアイレーズ対象ネームスペースBのデータは、GC動作中に行われるオーバーライトによってセキュアにイレーズされる。
フリーブロックBLK3は、GC動作の開始前からフリーブロックであり、且つGC動作のためのコピー先ブロックとして使用されなかったブロックである。
フリーブロックBLK3は、セキュアイレーズ対象ネームスペースBのデータを格納していない。そのため、フリーブロックBLK3に対するブロックイレーズを行う必要は無い。
フリーブロックBLK4は、GC動作の開始前からフリーブロックであり、GC動作のためのコピー先ブロックとして使用されなかったブロックである。フリーブロックBLK4は、セキュアイレーズ対象ネームスペースBの無効データを格納している。そのため、フリーブロックBLK4に対するブロックイレーズが行われる。これによってセキュアイレーズ対象ネームスペースBのデータがフリーブロックBLK4からセキュアにイレーズされる。
以上説明したように、第1実施形態によれば、特定のネームスペースのデータのセキュアイレーズを要求する第1の特定コマンドをホスト2から受信したことに応じて、セキュアイレーズ対象ネームスペースのデータを無効化するアンマップ動作と、セキュアイレーズ対象ネームスペース以外の他のネームスペースのデータのうちの有効データを、セキュアイレーズ対象ネームスペースのデータが格納されている一つ以上のブロック(コピー元ブロック)から、一つ以上のコピー先ブロックにコピーするGC動作とが実行される。
これにより、セキュアイレーズ対象ネームスペースのデータが格納されている一つ以上のブロックはフリーブロックとなるので、セキュアイレーズ対象ネームスペースのデータはフリーブロック以外には存在しなくなる。
コピー元ブロックがフリーブロックになると、このフリーブロックはコピー先ブロックとして再利用可能となる。この場合、このフリーブロックに格納されているセキュアイレーズ対象ネームスペースのデータは、ブロックイレーズによって消去され、さらに、セキュアイレーズ対象ネームスペース以外の他のネームスペースのデータのうちの有効データでオーバーライトされる。
このように、第1実施形態では、指定された特定のネームスペースのデータ(有効データおよび無効データ)の一部を、GC動作中にブロックイレーズおよびオーバーライトによってセキュアにイレーズできる。また、GC動作後に一つ以上のフリーブロックに格納されている特定のネームスペースのデータを少なくともブロックイレーズによってセキュアにイレーズできる。結果として、指定された特定のネームスペースのデータ(有効データおよび無効データ)の全てがセキュアにイレーズされる。
次に、幾つかの比較例と比較して、第1実施形態に係るセキュアイレーズ動作の利点について説明する。
まず、幾つかの比較例に係るSSDの構成と第1実施形態に係るSSD3の構成との違いについて説明する。
<比較例#1>
比較例#1に係るSSDでは、複数のネームスペースが互いに異なる複数のエンデュランスグループにそれぞれ属するように複数のエンデュランスグループが管理される。エンデュランスグループは、NAND型フラッシュメモリの物理リソースを管理する単位である。NAND型フラッシュメモリ内の各ブロックが一つのエンデュランスグループのみで利用されるように、NAND型フラッシュメモリの全ての物理リソースは複数のエンデュランスグループに分けられる。特定のネームスペースのデータのセキュアイレーズを行う場合には、特定のネームスペースに対応するエンデュランスグループに含まれるブロックそれぞれがセキュアイレーズ対象となる。
<比較例#2>
比較例#2に係るSSDでは、NAND型フラッシュメモリの全ての物理リソースは一つのエンデュランスグループのみに属するが、異なるネームスペースのデータが異なるブロックに書き込まれるように複数のネームスペースと複数のブロックとの間の対応関係が一対一で管理される。特定のネームスペースのデータのセキュアイレーズを行う場合には、特定のネームスペースに一対一でマップされたブロックそれぞれがセキュアイレーズ対象となる。
<第1実施形態>
第1実施形態に係るSSD3では、複数のネームスペースが管理されるが、NAND型フラッシュメモリの全ての物理リソースは一つのエンデュランスグループのみに属し、且つ複数のネームスペースのデータが同じブロックに混在することが許される。これは、第1実施形態のセキュアイレーズ動作は、複数のネームスペースのデータが同じブロックに混在している環境においても、ホスト2によって指定される特定のネームスペースのデータに対する物理的セキュアイレーズ動作を行うことができるためである。
(1)User Data Eraseの速度
第1実施形態に係るSSD3では、ブロックスレーズの前にGC動作を行うことが必要となる。このため、ユーザデータをセキュアイレーズする動作の速度は比較的遅い。ただし、特定のネームスペースのデータをセキュアイレーズするのは、例えばPCを他人に譲る場合にOSのバックアップデータが格納されたネームスペースのデータを維持し、ユーザデータが含まれるネームスペースのデータを消去したいというような場合であり、利用頻度は極めて少ないため、セキュアイレーズの速度が遅いのは許容できる。
比較例#1、比較例#2では、ユーザデータをセキュアイレーズする動作の速度はその実装に依存するが、比較的高速に行うことが可能である。
(2)書き込み途中のブロックの個数
ここでは、ホストからのユーザデータをNAND型フラッシュメモリのSLC記憶領域(SLC:シングルレベルセル)に書き込み、SSDのアイドル時などに、SLC記憶領域のユーザデータを、TLC記憶領域(TLC:トリプルレベルセル)またはQLC記憶領域(QLC:クワドレベルセル)に書き込む、という構成が利用されるケースを想定する。
第1実施形態に係るSSD3では、必要な書き込み途中のブロックの個数は二つである。二つの書き込み途中のブロックのうちの一つは、SLC記憶領域用の書き込み先ブロックとして使用されるSLCブロックである。もう一つの書き込み途中のブロックは、TLC/QLC記憶領域用の書き込み先ブロックとして使用されるTLC/QLCブロックである。
比較例#1、比較例#2では、必要なSLCブロックの個数はネームスペースの数である。必要なTLC/QLCブロックの個数はネームスペースの数である。
(3)オーバープロビジョニング
第1実施形態に係るSSD3、比較例#2では、オーバープロビジョニング領域は複数のネームスペースによって共有することができる。
比較例#1では、オーバープロビジョニング領域をネームスペース毎に個別に用意することが必要となる。
(4)SLC記憶領域
第1実施形態に係るSSD3では、SLC記憶領域はネームスペース間で共有されるため、あるネームスペースが一時的にSLC記憶領域の全ての容量を使うことが可能である。
比較例#1、比較例#2では、ネームスペース毎に独立したSLC記憶領域を用意することが必要となる。ネームスペースサイズに関係なく一つのSLC記憶領域に要求される容量が決まっている場合には、TLC/QLC記憶領域用に割り当て可能なブロックの数が減少される。このため、不揮発性メモリの記憶容量を効率よく使用することができなくなり、TLC/QLC記憶領域の記憶容量と全てのSLC記憶領域の記憶容量との和で表されるドライブ容量(Total Capacity)は、ネームスペースの数に比例して減少する。
(5)ブロックサイズとネームスペースサイズとの間のアライメント
一般に、一つのブロックのサイズは数十MBである。一方、各ネームスペースのサイズは、セクタの整数倍である。このため、ブロックサイズとネームスペースサイズとの間の不整合が生じる場合がある。
第1実施形態に係るSSD3では、複数のブロックが複数のネームスペースによって共有可能であるため、ブロックサイズとネームスペースサイズとの間の不整合が生じても、それによる影響を受けにくく、容量効率は低下しにくい。
比較例#1、比較例#2では、ブロックサイズとネームスペースサイズとの間の不整合が生じると、それによる影響を受け、容量効率が低下する。
(6)複数のネームスペースを作成することによるドライブ容量の低下
(2)~(5)の理由により、一つのSSD内に複数のネームスペースを作成した場合には、ドライブ容量が減少する場合がある。
第1実施形態に係るSSD3では、一つのエンデュランスグループしか存在しないため、複数のネームスペースを効率よく作成することが可能となる。よって、複数のネームスペースを作成することによるドライブ容量の減少はない。
比較例#1では、ネームスペース毎に独立したエンデュランスグループが必要とされるため、複数のネームスペースを作成することによるドライブ容量の減少は大きい。
比較例#2では、複数のネームスペースを作成することによるドライブ容量の減少に関する影響の程度は、第1実施形態と比較例#2の中間である。
(第2実施形態)
次に、第2実施形態について説明する。第2実施形態に係るSSDの構成は、図1に示した第1実施形態に係るSSD3の構成と同じである。第2実施形態は第1実施形態と同様に、特定のネームスペースのデータに対する物理的セキュアイレーズ動作を行うものであるが、アンマップ動作に関する処理が第1実施形態と異なる。第1実施形態では、コントローラ4は、GC動作の前にアンマップ動作を行うのに対し、第2実施形態では、コントローラ4は、GC動作の実行中にアンマップ動作を行う。
図12は、第2実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順を示すフローチャートである。図5を参照して説明した第1実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順と同じ手順については、その説明を省略する。
受信したコマンドが第1の特定コマンドである場合(ステップS104のYES)、GC部24bは、GC動作を実行し、アンマップ部24aは、GC動作の実行中にアンマップ動作を行う(ステップS132)。
ステップS132において、GC部24bは、セキュアイレーズ対象ネームスペースのデータが有効データであるか無効データであるかに関わらず、少なくともセキュアイレーズ対象ネームスペースのデータ、すなわちセキュアイレーズ対象データを格納しているアクティブブロックをGC対象ブロック(つまりコピー元ブロック)として選択する。あるいは、GC動作を簡単に実装する場合には、GC部24bは、セキュアイレーズ対象ネームスペースのデータであるか否かに関わらず、無効データを格納するアクティブブロックの全てをコピー元ブロックとして選択してもよい。
コピー元ブロックに格納されている有効データがセキュアイレーズ対象データである場合、アンマップ部24aは、コピー元ブロックに格納されている有効データを無効化するアンマップ動作を行う。つまり、アンマップ部24aは、コピー元ブロックに格納されている有効データのうち、セキュアイレーズ対象データである有効データを無効化するアンマップ動作を行う。これにより、コピー元ブロックに格納されているセキュアイレーズ対象データの一部である有効データは無効化される。コピー元ブロックに格納されているセキュアイレーズ非対象ネームスペースの有効データがコピー先ブロックにコピーされるとともに、コピー元ブロックに格納されているセキュアイレーズ対象ネームスペースの有効データのアンマップ動作も行われると、コピー元ブロックはフリーブロックとなる。これにより、セキュアイレーズ対象データはフリーブロック以外に存在しなくなる。言い換えると、セキュアイレーズ対象ネームスペースのデータ(無効データ)は幾つかのフリーブロックのみに存在するようになる。
GC動作とアンマップ動作の実行(ステップS132)の後、第1実施形態と同様に、GC動作の終了条件の判定(ステップS122)、ブロックイレーズ動作の実行(ステップS124)、ホスト2へのコマンド完了の通知(ステップS126)が行われる。
特定のネームスペースのデータのセキュアイレーズを要求する第1の特定コマンドを実行した時におけるI/Oコマンドの取り扱いは、第1実施形態と同じであるので、説明は省略する。
第2実施形態においても、第1実施形態と同様の効果を得ることができる。
(第3実施形態)
次に、第3実施形態について説明する。第3実施形態に係るSSDの構成は、図1に示した第1実施形態に係るSSD3の構成と同じである。第1、第2実施形態では、セキュアイレーズ対象の論理領域を示す論理領域識別子としてネームスペース識別子が用いられたが、第3実施形態では、セキュアイレーズ対象の論理領域を示す論理領域識別子として、セキュアイレーズ対象セクタを識別する論理アドレスとその論理アドレスからのセクタ数が使用される。論理アドレスとしては、例えば、LBAが使用される。メモリシステムが複数のネームスペースを持つ場合は、セキュアイレーズ対象の論理領域を示す論理領域識別子には、セキュアイレーズ対象のネームスペースを示すネームスペース識別子も含まれる。
第3実施形態では、セキュアイレーズ対象データは、特定の一つ以上のLBAに対応するデータ、つまり特定の一つ以上のLBAによって識別される一つ以上のセキュアイレーズ対象セクタに格納されているデータ又は格納されていたデータである。
第3実施形態で使用される第2の特定コマンドは、特定の一つ以上のLBAによって識別されるデータ、詳しくは特定の一つ以上のLBAによって識別される一つ以上のセキュアイレーズ対象セクタに格納されているデータのセキュアイレーズを行うことを要求する。第2の特定コマンドは特定の一つ以上のLBAを指定するパラメータを含んでいてもよい。特定の一つ以上のLBAは、LBA範囲によって表されてもよい。
ホスト2が複数のLBA範囲をセキュアイレーズ対象とする場合には、ホスト2は、まず、各々がLBA範囲を指定する複数のコマンドをSSD3に送信し、次いで、特定の一つ以上のLBA範囲のセキュアイレーズを要求する第2の特定コマンドをSSD3に送信してもよい。もちろん、第2の特定コマンドが、複数のLBA範囲を指定する複数のパラメータを含んでいてもよい。このように、複数のLBA範囲を指定してセキュアイレーズを要求することで、後述のGC動作が一回で済む。これにより、データのコピー量、ブロックのイレーズ回数を、LBA範囲毎にセキュアイレーズを要求する場合より減らすことができ、メモリセルの摩耗を低減できる。
また、ホスト2が特定のネームスペースの特定の一つ以上のLBAまたは特定の一つ以上のLBA範囲をセキュアイレーズ対象とする場合には、ホスト2は、特定のネームスペースを識別するネームスペース識別子と、特定の一つ以上のLBAまたは特定の一つ以上のLBA範囲とを指定してもよい。
図13Aは、第3実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順を示すフローチャートである。
コントローラ4がホスト2からコマンドを受信すると(ステップS202)、CPU12は、この受信したコマンドが第2の特定コマンドであるか否かを判定する(ステップS204)。第2の特定コマンドは、物理的セキュアイレーズ方法により、特定の一つ以上のLBAのデータのセキュアイレーズを行うことを要求する。
受信したコマンドが第2の特定コマンドではない場合(ステップS204のNO)、CPU12は、受信したコマンドに応じた処理を実行する(ステップS206)。
受信したコマンドが第2の特定コマンドである場合(ステップS204のYES)、アンマップ部24aは、アンマップ動作を行う(ステップS212)。次に、GC部24bは、GC動作を行う(ステップS214)。
アンマップ動作(ステップS212)およびGC動作(ステップS214)の手順は、セクタサイズとクラスタサイズの関係によって異なる。図13Bは、セクタサイズがクラスタサイズと等しい場合のアンマップ動作およびGC動作の手順を示すフローチャートである。この場合、一つのセキュアイレーズ対象セクタが一つのクラスタに対応している。図13Cは、セクタサイズがクラスタサイズより小さい場合におけるアンマップ動作およびGC動作の手順を示すフローチャートである。この場合、有効データを格納している一つのクラスタの一部に少なくとも一つのセキュアイレーズ対象セクタが存在する。
図13Bに示すように、セクタサイズがクラスタサイズと等しい場合においては、アンマップ部24aは、ホスト2によって指定された全てのセキュアイレーズ対象LBAにそれぞれ関連付けられたデータを無効化するアンマップ動作を行う(ステップS212A)。アンマップ部24aは、第2の特定コマンドに含まれる全てのLBAに対応するL2Pテーブル37のエントリそれぞれから物理アドレスを削除する。又は、アンマップ部24aは、これらエントリにNULL値を格納する。このアンマップ動作により、セキュアイレーズ対象LBAに対応するL2Pテーブル37の全クラスタは、無効状態となる。この結果、全てのセキュアイレーズ対象LBAに対応するデータは無効データとなる。
GC部24bは、少なくとも、セキュアイレーズ対象LBAの無効データを格納するアクティブブロックの全てをGC対象ブロック(つまりコピー元ブロック)として選択する。あるいは、GC動作を簡単に実装する場合には、GC部24bは、セキュアイレーズ対象LBAの無効データであるか否かに関わらず、少なくとも無効データを格納するアクティブブロックの全てをコピー元ブロックとして選択してもよい。
GC部24bは、コピー元ブロックとして選択した各アクティブブロックのブロック識別子を、セキュアイレーズ対象ブロックリスト34に保存してもよい。
GC部24bは、フリーブロックの中から任意の1つのフリーブロックを選択する。GC部24bは、選択したフリーブロックに対してブロックイレーズを行う。GC部24bは、ブロックイレーズが行われたフリーブロックをコピー先ブロックとして割り当てる。
GC部24bは、セキュアイレーズ対象データを除いたデータのうちの有効データ、すなわちセキュアイレーズ非対象LBAの有効データを、コピー元ブロックからコピー先ブロックへコピーする(ステップS214A)。
GC部24bは、L2Pテーブル37を更新して、コピーした有効データのLBAそれぞれと、コピー先の物理アドレスそれぞれとをマッピングする。
図13Cを参照して、セクタサイズがクラスタサイズより小さい場合におけるアンマップ動作およびGC動作の手順を説明する。図13Bを参照して説明したアンマップ動作およびGC動作の手順と同じ手順については、その説明を省略する。
セクタサイズがクラスタサイズより小さい場合においては、クラスタ内の各セクタのデータが有効か無効かを示すビットマップデータは、上述のように、例えばL2Pテーブル37の中に格納されている。
アンマップ部24aは、少なくとも一つのセキュアイレーズ対象セクタを含むクラスタを、アンマップ動作の対象として選択する。
クラスタ内の全てのセクタがセキュアイレーズ対象である、すなわちクラスタ内のデータ全体がセキュアイレーズ対象である場合(ステップS212B-1のYES)、アンマップ部24aは、このクラスタのデータを無効化するアンマップ動作を実行する(ステップS212B-4)。
クラスタ内の全てのセクタがセキュアイレーズ対象ではない場合(ステップS212B-1のNO)は、アンマップ部24aは、当該クラスタ内の全てのセキュアイレーズ対象セクタが無効化されるように、ビットマップデータを更新する(ステップS212B-2)。
アンマップ部24aは、この無効化により当該クラスタ内の全セクタが無効化されたかどうかを調べる(ステップS212B-3)。
当該クラスタに含まれている全てのセクタが無効セクタになった場合(ステップS212B-3のYES)は、アンマップ部24aは、このクラスタのデータを無効化するアンマップ動作を実行する(ステップS212B-4)。
当該クラスタに含まれている全てのセクタが無効セクタになっていない場合(ステップS212B-3のNO)は、アンマップ部24aによるこのクラスタに対する処理は終了する。
アンマップ部24aは、アンマップ動作の対象の全てのクラスタに対するアンマップ動作が終了したかを判断する(ステップS212B-5)。
全てのクラスタに対するアンマップ動作が終了していない場合(ステップS212B-5のNO)、アンマップ部24aは、次のクラスタに対してステップ212B-1の判断を行う。
全てのクラスタに対するアンマップ動作が終了した場合(ステップS212B-5のYES)、GC部24bは、アクティブブロック中の有効データ(すなわちセキュアイレーズ非対象のデータ)を含む全クラスタを、コピー元ブロックからコピー先ブロックへコピーする(ステップS214B-1)。
なお、ステップS214B-1では、GC部24bは、当該クラスタ内に無効化されたセクタがある場合は、そのセクタのデータを適切な値に変更してからコピー先ブロックへコピーする。適切な値とは、例えば、オール0またはオール1、ランダムデータまたはその組み合わせである。
GC部24bは、L2Pテーブル37のエントリを更新して、コピーされたデータのLBAを、コピーした先のクラスタの物理アドレスに関連づける。
図13Aの説明に戻る。GC動作の実行(ステップS214)の後、第1実施形態と同様に、GC部24bは、GC動作の終了条件が満たされたか否かを判定する(ステップS222)。終了条件は、セキュアイレーズ対象LBAの無効データを格納するブロックがアクティブブロック群から存在しなくなったこととしてよい。
セキュアイレーズ対象LBAの無効データを格納するブロックがアクティブブロック群から存在しなくなるまで、GC部24bは、GC動作を引き続き実行する(ステップS222のNO、ステップS214)。
ガベージコレクション動作の終了条件が満たされると(ステップS222のYES)、GC部24bは、GC動作を終了する。この時点で、セキュアイレーズ対象LBAの無効データがフリーブロック以外に存在する可能性はなくなっている。
なお、セキュアイレーズ対象LBAの無効データであるか否かに関わらず、少なくとも無効データを格納するアクティブブロックの全てをGC対象ブロックとして選択した場合には、セキュアイレーズ対象LBAの無効データであるか否かに関わらず、無効データを格納するブロックがアクティブブロック群から存在しなくなったことをGC動作の終了条件としてもよい。しかし、こうすると、GC動作の効率が低下するので、この終了条件は、全アクティブブロックの各々において有効データに対する無効データの割合が多い場合に採用してもよい。
GC動作の終了条件の判定(ステップS222)の後、セキュアイレーズ部24cは、セキュアイレーズ対象LBAの無効データが格納されている各フリーブロックに対して少なくともブロックイレーズ動作を行う(ステップS224)。これにより、セキュアイレーズ対象LBAの無効データの全てがブロックイレーズによってセキュアにイレーズされる。
ステップS224では、セキュアイレーズ部24cは、セキュアイレーズ対象LBAの無効データが格納されている各フリーブロックに対してブロックイレーズを行い、さらに、これら各フリーブロックに第1実施形態と同様に特定のデータパターンを書き込んでもよい。これにより、セキュアイレーズ対象LBAの無効データの全てがオーバーライトによってセキュアにイレーズされる。
セキュアイレーズ部24cは、セキュアイレーズ対象LBAの無効データを格納しているか否かにかかわらず、フリーブロックの全てに対してブロックイレーズを行ってもよい。これにより、セキュアイレーズ対象LBAの無効データが格納されている各フリーブロックに対して少なくともブロックイレーズを行う処理(ステップS224)が簡単に実施され得る。
あるいは、ブロックイレーズが行われるブロックの個数を減らすために、セキュアイレーズ部24cは、セキュアイレーズ対象LBAの無効データが格納されている一つ以上のフリーブロックを特定する処理を実行し、特定された一つ以上のフリーブロックのみに対してブロックイレーズを行ってもよい。
前者および後者のいずれにおいても、少なくとも、セキュアイレーズ対象LBAの無効データが格納されている一つ以上のフリーブロックがセキュアイレーズ対象となる。
ステップS224の処理が完了すると、イレーズ制御部24は、第2の特定コマンドの完了を示すレスポンスをホスト2に送信することによって、第2の特定コマンドの完了をホスト2に通知する(ステップS226)。
特定のLBAのデータのセキュアイレーズを要求する第2の特定コマンドを受信した時におけるI/Oコマンドの取り扱いについては、第1実施形態と同様であるので、説明は省略する。
以上説明したように、第3実施形態によれば、物理的セキュアイレーズ方法により、特定の一つ以上のLBAのデータをセキュアにイレーズすることができる。また、有効データを格納しており且つ一部にセキュアイレーズ対象セクタが存在するクラスタがコピー元ブロックに含まれる場合には、コントローラ4は、このクラスタのデータ全体をコピー先ブロックにコピーする際に、セキュアイレーズ対象セクタのデータをオール1またはオール0のようなデータパターンに変更する。したがって、セキュアイレーズ対象セクタと、セキュアイレーズ非対象の有効なセクタとが混在するクラスタが存在する場合でも、物理的セキュアイレーズ動作の安全性を確保しつつ、セキュアイレーズ非対象の有効なセクタのデータを正しくコピーすることが可能となる。
(第4実施形態)
次に、第4実施形態について説明する。第4実施形態に係るSSDの構成は、図1に示した第1実施形態に係るSSD3の構成と同じである。第4実施形態は第3実施形態と同様に、特定のLBAのデータのセキュアイレーズを行うものであるが、アンマップ動作に関する処理が第3実施形態と異なる。第3実施形態では、コントローラ4は、GC動作の前にアンマップ動作を行うのに対し、第4実施形態では、コントローラ4は、GC動作の実行中にアンマップ動作を行う。
図14Aは、第4実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順を示すフローチャートである。図13Aを参照して説明した第3実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順と同じ手順については、その説明を省略する。
受信したコマンドが第2の特定コマンドである場合(ステップS204のYES)、GC部24bは、GC動作を実行し、アンマップ部24aは、GC動作の実行中にアンマップ動作を行う(ステップS232)。
第3実施形態と同様に、GC動作とアンマップ動作のステップS232の手順内容は、セクタサイズとクラスタサイズの関係によって異なる。
図14Bは、セクタサイズがクラスタサイズと等しい場合におけるGC動作とアンマップ動作の手順を示すフローチャートである。この場合、一つのセキュアイレーズ対象セクタが一つのクラスタに対応している。
ステップS232Aにおいて、GC部24bは、セキュアイレーズ対象LBAのデータが有効データであるか無効データであるかに関わらず、少なくともセキュアイレーズ対象LBAのデータと、セキュアイレーズ非対象LBAの有効データとを格納しているアクティブブロックをGC対象ブロック(つまりコピー元ブロック)として選択する。あるいは、GC動作を簡単に実装する場合には、GC部24bは、セキュアイレーズ対象LBAのデータであるか否かに関わらず、無効データを格納しているアクティブブロックの全てをコピー元ブロックとして選択してもよい。
ステップS232Aにおいて、GC部24bは、セキュアイレーズ非対象LBAの有効データを、コピー元ブロックからコピー先ブロックへコピーする。セキュアイレーズ対象LBAの有効データがコピー元ブロックに格納されている場合、アンマップ部24aは、コピー元ブロックに格納されている有効データを無効化するアンマップ動作を行う。これにより、コピー元ブロックに格納されているセキュアイレーズ対象LBAの有効データは無効化される。コピー元ブロックに格納されているセキュアイレーズ非対象LBAの有効データがコピー先ブロックにコピーされるとともに、コピー元ブロックに格納されているセキュアイレーズ対象LBAの有効データを無効化するアンマップ動作も行われると、コピー元ブロックはフリーブロックとなる。これにより、セキュアイレーズ対象LBAのデータはフリーブロック以外に存在しなくなる。言い換えると、セキュアイレーズ対象LBAのデータ(無効データ)は幾つかのフリーブロックのみに存在するようになる。
図14Cは、セクタサイズがクラスタサイズより小さい場合におけるGC動作とアンマップ動作の手順を示すフローチャートである。この場合、クラスタ内の各セクタのデータが有効か無効かを示すビットマップデータは、上述のように、例えばL2Pテーブル37の中に格納されている。
アンマップ部24aおよびGC部24bは、有効データを格納しているセクタを少なくとも一つ含むクラスタを、アンマップ動作およびGC動作の対象として選択する。
処理対象のクラスタが少なくとも一つのセキュアイレーズ対象セクタを含む場合(ステップS232B-1のYES)、アンマップ部24aは、当該クラスタ内の全てのセキュアイレーズ対象セクタが無効化されるように、ビットマップデータを更新する(ステップS232B-2)。
アンマップ部24aは、この無効化により当該クラスタ内の全セクタが無効化されたかどうかを調べる(ステップS232B-3)。
当該クラスタ内の全セクタが無効化された場合(ステップS232B-3のYES)、アンマップ部24aは、そのクラスタのデータを無効化するアンマップ動作を実行する(ステップS232B-4)。
ステップS232B-4の後、または当該クラスタ内の全セクタが無効化されなかった場合(すなわち当該クラスタがセキュアイレーズ非対象の有効データを格納している場合(ステップS232B-3のNO))もしくは処理対象のクラスタがセキュアイレーズ対象セクタを含まない場合(ステップS232B-1のNO)、GC部24bは、当該クラスタ中の有効データ(すなわちセキュアイレーズ非対象のデータ)を、コピー元ブロックからコピー先ブロックへコピーする(ステップS232B-5)。この時GC部24bは、第3実施形態と同様に、当該クラスタ中の無効化されたセクタのデータを適切な値に置き換えてよい。ステップS232B-5では、クラスタ内の全てのセクタが有効の場合は、GC部24bは、全セクタのデータをコピー先ブロックへコピーし、L2Pテーブル37を更新してコピー元のクラスタアドレスをコピーした先のクラスタアドレスに更新する。
GC部24bは、有効データを格納しているセクタを含むクラスタの全てについてアンマップ動作およびGC動作が終了したかを判断する(ステップS232B-6)。
全てのクラスタに対するアンマップ動作およびGC動作が終了していない場合(ステップS232B-6のNO)、GC部24bは、次のクラスタに対してステップS232B-1の判断を行う。
全てのクラスタに対するアンマップ動作およびGC動作が終了した場合(ステップS232B-6のYES)、GC部24bによる処理は、ステップS222へ進む。
最終的に、全有効データはコピー先ブロックにコピーされ、コピー元ブロックはフリーブロックとなる。これにより、セキュアイレーズ対象LBAのデータはフリーブロック以外に存在しなくなる。言い換えると、セキュアイレーズ対象LBAのデータ(無効データ)は幾つかのフリーブロックのみに存在するようになる。
図14Aの説明に戻る。GC動作の実行(ステップS232)の後、第3実施形態と同様に、GC動作の終了条件の判定(ステップS222)、ブロックイレーズ動作の実行(ステップS224)、およびホスト2へのコマンド完了の通知(ステップS226)が実行される。
第2の特定コマンドを実行した時におけるI/Oコマンドの取り扱いは、第3実施形態と同じであるので、説明は省略する。
第4実施形態においても、第3実施形態と同様の効果を得ることができる。
(第5実施形態)
次に、第5実施形態について説明する。第5実施形態に係るSSDの構成は、図1に示した第1実施形態に係るSSD3の構成と同じである。第5実施形態の物理的セキュアレーズ動作は、ある論理領域識別子によって識別される論理領域へのデータの書き込みとこの論理領域識別子に関連付けられていた旧データのセキュアイレーズとを要求する特定のライトコマンドに応じて、旧データの物理的セキュアイレーズを行う。論理領域識別子としてはLBAやキー・バリューストアのキーのような論理アドレスが使用されてもよい。つまり、第5実施形態の物理的セキュアレーズ動作は、キー・バリューストアにも適用し得る。キー・バリューストアの場合には、第5実施形態の物理的セキュアレーズ動作は、あるキーに対応するバリュー(データ)の書き込みとこのキー関連付けられていた旧バリュー(旧データ)のセキュアイレーズとを要求する特定のライトコマンドに応じて、旧バリューの物理的セキュアイレーズを行う。
以下では、論理領域識別子としてLBAが使用される場合について説明する。
特定のライトコマンドは、通常のライトコマンドと同様に、例えば、LBA(開始LBA)、ライトデータのサイズ(セクタの個数)、対象のネームスペース識別子、このライトデータが格納されているホスト2のメモリ内の位置を示すデータポインタ(バッファアドレス)、を含み得る。
第5実施形態に係るSSDのコントローラ4は、特定のライトコマンドに関連付けられたライトデータをNAND型フラッシュメモリ5に書き込み、L2Pテーブル37を更新することによって、ライトデータが書き込まれた物理アドレスをこのライトデータのLBAに関連付ける。そして、コントローラ4は、このLBAに関連付けられていた旧データ(無効データ)に対する物理的セキュアイレーズ動作を自動的に実行する。
このLBAに関連付けられていた旧データはGC動作によって複数のブロックに残っている可能性がある。また、あるLBAを指定する通常のライトコマンドを複数回受信した後に、このLBAを指定する特定のライトコマンドを受信した場合にも、このLBAに関連付けられていた旧データが複数のブロックに残っている可能性がある。
このため、コントローラ4は、このLBAに関連付けられていた旧データを格納する全てのアクティブブロックをGC対象ブロック(コピー元ブロック)として選択し、これらGC対象ブロックに格納されている有効データを一つ以上のコピー先ブロックにコピーするGC動作を実行する。これにより、旧データは、フリーブロック以外のどのブロックにも存在しなくなる。
コントローラ4は、GC動作の実行後、フリーブロックリスト35によって管理されているフリーブロックのうち、旧データを格納している各フリーブロックに対して少なくともブロックイレーズを行う。これにより、旧データをセキュアにイレーズすることが可能となる。この場合、コントローラ4は、GC動作の実行後、フリーブロックリスト35によって管理されているフリーブロックの全てに対してブロックイレーズを行ってもよい。あるいは、ブロックイレーズが行われるブロックの個数を減らすために、コントローラ4は、旧データが格納されている一つ以上のフリーブロックを特定する処理を実行し、特定された一つ以上のフリーブロックのみに対してブロックイレーズを行ってもよい。
図15は、第5実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順を示すフローチャートである。
コントローラ4がホスト2からコマンドを受信すると(ステップS302)、CPU12は、この受信したコマンドが特定のライトコマンドであるか否かを判定する(ステップS304)。
受信したコマンドが特定のライトコマンドでない場合(ステップS304のNO)、CPU12は、受信したコマンドに応じた処理を実行する(ステップS306)。
受信したコマンドが特定のライトコマンドである場合(ステップS304のYES)、ライト制御部22は、特定のライトコマンドに関連付けられたライトデータ(更新データ)をNAND型フラッシュメモリ5に書き込み、L2Pテーブル37を更新する。
GC部24bは、GC動作を実行する(ステップS314)。ステップS314では、GC部24bは、特定のライトコマンドによって指定されたLBAに関連付けられていた旧データを格納する全てのアクティブブロックをGC対象ブロック、すなわちコピー元ブロックとして選択してもよい。
GC部24bは、フリーブロックの中から一つのフリーブロックを任意に選択する。GC部24bは、選択したフリーブブロックに対してブロックイレーズを行う。GC部24bは、ブロックイレーズが行われたフリーブロックをコピー先ブロックとして割り当てる。
GC部24bは、コピー元ブロックから有効データをコピー先ブロックへコピーする。
GC動作の実行(ステップS314)の後、GC部24bは、GC動作の終了条件が満たされたか否かを判定する(ステップS322)。終了条件は、特定のライトコマンドによって指定されたLBAに関連付けられていた旧データを格納するブロックがアクティブブロック群から存在しなくなったこととしてよい。
旧データを格納するブロックがアクティブブロック群から存在しなくなるまで、GC部24bは、GC動作を引き続き実行する(ステップS322のNO、ステップS314)。
ガベージコレクション動作の終了条件が満たされると(ステップS322のYES)、GC部24bは、GC動作を終了する。この時点で、フリーブロック以外に旧データが存在する可能性はなくなっている。
この後、セキュアイレーズ部24cは、少なくとも旧データが存在するフリーブロックに対して、少なくともブロックイレーズを行う(ステップS324)。これにより、旧データがブロックイレーズによってセキュアにイレーズされる。
ステップS324の処理が完了すると、イレーズ制御部24は、特定のライトコマンドの完了を示すレスポンスをホスト2に送信することによって、特定のライトコマンドの完了をホスト2に通知する(ステップS326)。
特定のライトコマンドは実行に時間が掛かるので、イレーズ制御部24は、特定のコマンドを受信した時点でホスト2へコマンド完了を通知してもよい。すなわち、イレーズ制御部24は、ステップS326の処理をステップS312の直前に実行してもよい。特定のライトコマンドの処理が正常に完了しなかった場合は、コントローラ4は、コマンドインタフェース規格で定められているホストへの異常通知機構を使って、特定のコマンドの処理が正常に完了しなかったことをホスト2に通知したり、コマンドインタフェース規格で定められているログに異常発生を記録してもよい。
(変形例)
ある論理領域識別子によって識別される論理領域へのデータの書き込みを要求し、且つこの論理領域に書き込まれたデータが後でセキュアイレーズ対象データとなることを示す特定のライトコマンドが使用されてもよい。この場合、この特定のライトコマンドをホスト2から受信したことに応じて、コントローラ4は、この論理領域にライトデータを書き込む書き込み動作を実行すると共に、この論理領域をセキュアイレーズ対象領域として示すログ情報を例えばDRAM6に格納する。この特定のライトコマンドをホスト2から受信する度、コントローラ4は、書き込み動作と、ログ情報を格納する動作とを実行する。セキュアイレーズを要求する特定のコマンドをホスト2から受信した場合、コントローラ4は、全てのログ情報を参照することによって複数のセキュアイレーズ対象領域を決定する。そしてコントローラ4は、これら複数のセキュアイレーズ対象領域に格納されているデータをセキュアにイレーズする物理的セキュアイレーズ動作を実行する。このように複数のセキュアイレーズ対象領域に対する物理的セキュアイレーズ動作を一括して実行することにより、GC動作の回数を減らすことができる。これにより、NAND型フラッシュメモリ5の書き換え回数の増加によるSSD3の寿命への影響を減らし、特定のライトコマンドの処理時間を減らすことができる。
以上説明したように、第5実施形態によれば、物理的セキュアイレーズ方法により、新たなライトデータのLBAに関連付けられていた旧データをセキュアにイレーズすることができる。
(第6実施形態)
次に、第6実施形態について説明する。第6実施形態に係るSSDの構成は、図1に示した第1実施形態に係るSSD3の構成と同じである。第6実施形態の物理的セキュアレーズ動作は、第3実施形態の変形例である。第3実施形態では、特定のLBAの有効データと無効データとがセキュアにイレーズされる。第6実施形態では、論理領域識別子によって識別される論理領域に格納されているデータのうちの無効データのみがセキュアにイレーズされ、論理領域識別子によって識別される論理領域に格納されている有効データは消去されない。
以下では、セキュアイレーズ対象の論理領域を示す論理領域識別子としてLBAが使用される場合を例示して説明する。
第6実施形態では、第3実施形態の第2の特定コマンドが、特定の一つ以上のLBAの有効データはセキュアイレーズ対象データとせずに、特定の一つ以上のLBAの無効データのみをセキュアイレーズ対象データとする第3の特定コマンドに変更される。
第6実施形態は、リード動作で読めるデータ(有効データ)を消去せずに、指定された特定の一つ以上のLBAに過去に書かれていたデータ(無効データ)のみをセキュアにイレーズしたい場合に有用である。
図16は、第6実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順を示すフローチャートである。図13Aを参照して説明した第3実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順と同じ手順については、その説明を省略する。
コントローラ4がホスト2からコマンドを受信すると(ステップS402)、CPU12は、この受信したコマンドが第3の特定コマンドであるか否かを判定する(ステップS404)。
受信したコマンドが第3の特定コマンドではない場合(ステップS404のNO)、CPU12は、受信したコマンドに応じた処理を実行する(ステップS406)。
受信したコマンドが第3の特定コマンドである場合(ステップS404のYES)、GC部24bは、GC動作を実行する(ステップS412)。
GC部24bは、少なくとも、第3の特定コマンドによって指定される特定の一つ以上のLBAに関連付けられていた無効データを格納しているアクティブブロックの全てをGC対象ブロック(つまりコピー元ブロック)として選択する。
GC部24bは、コピー元ブロックからコピー先ブロックへ有効データをコピーする。
GC動作の実行後、GC部24bは、GC動作の終了条件が満たされたか否かを判定する(ステップS422)。終了条件は、指定された特定の一つ以上のLBAに関連付けられていた無効データを格納するブロックがアクティブブロック群から存在しなくなったこととしてよい。
指定された特定の一つ以上のLBAに関連付けられていた無効データを格納するブロックがアクティブブロック群から存在しなくなるまで、GC部24bは、GC動作を引き続き実行する(ステップS422のNO、ステップS412)。
ガベージコレクション動作の終了条件が満たされると(ステップS422のYES)、GC部24bは、GC動作を終了する。この時点で、指定された特定の一つ以上のLBAに関連付けられていた無効データがフリーブロック以外に存在する可能性はなくなっている。
GC動作の終了条件の判定(ステップS422)の後、セキュアイレーズ部24cは、指定された特定の一つ以上のLBAに関連付けられていた無効データが格納されている一つ以上のフリーブロックに対して少なくともブロックイレーズを行う(ステップS424)。これにより、セキュアイレーズ対象セクタの無効データがブロックイレーズによってセキュアにイレーズされる。
なお、セキュアイレーズ部24cは、GC動作の実行後、フリーブロックリスト35によって管理されているフリーブロックの全てに対してブロックイレーズを行ってもよい。あるいは、ブロックイレーズが行われるブロックの個数を減らすために、セキュアイレーズ部24cは、指定された特定の一つ以上のLBAに関連付けられていた無効データが格納されている一つ以上のフリーブロックを特定する処理を実行し、特定された一つ以上のフリーブロックのみに対してブロックイレーズを行ってもよい。
ステップS424の処理が完了すると、イレーズ制御部24は、第3の特定コマンドの完了を示すレスポンスをホスト2に送信することによって、第3の特定コマンドの完了をホスト2に通知する(ステップS426)。
以上説明したように、第6実施形態によれば、物理的セキュアイレーズ方法により、指定された特定の一つ以上のLBAに関連付けられていた無効データをセキュアにイレーズすることができる。
なお、第6実施形態では、指定された特定の一つ以上のLBAに関連付けられていた無効データをセキュアイレーズ対象としたが、第6実施形態のセキュアイレーズ動作は、指定された特定のネームスペースのデータのうちの無効データのみをセキュアイレーズ対象とすることもできる。
この場合、特定のネームスペースの無効データのみに対するセキュアイレーズを要求する第4の特定コマンドをホスト2から受信したことに応じて、コントローラ4は、指定された特定のネームスペースのデータのうちの無効データのみをセキュアイレーズする物理的セキュアイレーズ動作を実行する。
実施形態中では、故障した、あるいは規定の消去回数を超えたブロックの取り扱いについての説明を省略した。これらのブロックに含まれるデータは、無効データ化され、これらのブロックはバッドブロックであるという扱いにされることがある。これらのブロックに含まれるデータは無効データであるので、これらのブロックをフリーブロックの一つとして見なしセキュアイレーズ時のブロックイレーズ対象としてもよい。または、これらのブロックをバッドブロック化するときにブロックイレーズを実行しておいてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。