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

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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024127539
(43)【公開日】2024-09-20
(54)【発明の名称】メモリシステム
(51)【国際特許分類】
   G06F 12/00 20060101AFI20240912BHJP
   G06F 21/60 20130101ALI20240912BHJP
【FI】
G06F12/00 597U
G06F21/60
【審査請求】未請求
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2023036753
(22)【出願日】2023-03-09
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】永井 宏一
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CB08
(57)【要約】
【課題】特定のデータのセキュアイレーズを行うことができ、且つ特定のデータのセキュアイレーズが正しく実行されたか否かを確認可能なメモリシステムを実現する。
【解決手段】コントローラは、第1の論理領域識別子に関連付けられているセキュアイレーズ対象データのセキュアイレーズを要求するコマンドを受信したことに応じ、第1の論理領域識別子に対応するマッピング情報の複製を保持する。コントローラは、セキュアイレーズ対象データが格納されている一つ以上の第1のブロックに対するデータ消去動作を実行する。コントローラは、データ消去動作の実行後、第1の論理領域識別子を指定するリードコマンドを受信したことに応じて、マッピング情報の複製において第1の論理領域識別子にマッピングされている物理アドレスに対応する記憶位置からデータを読み出す。
【選択図】図5
【特許請求の範囲】
【請求項1】
各々がデータ消去動作の単位である複数のブロックを含む不揮発性メモリと、
前記不揮発性メモリに電気的に接続されたコントローラと、を具備し、
前記コントローラは、
一つ以上の論理領域識別子の各々と前記不揮発性メモリの一つ以上の物理アドレスの各々との間のマッピングを示すマッピング情報を保持する第1のテーブルを管理し、
第1の論理領域識別子に関連付けられているセキュアイレーズ対象データのセキュアイレーズを要求する第1のコマンドをホストから受信したことに応じ、
前記第1のテーブルに含まれる前記マッピング情報のうちの前記第1の論理領域識別子に対応する第1のマッピング情報の複製を保持し、
前記複数のブロックのうちの、前記第1の論理領域識別子に関連付けられているセキュアイレーズ対象データが格納されている一つ以上の第1のブロックを特定し、
少なくとも前記一つ以上の第1のブロックに対して少なくとも前記データ消去動作を実行し、
前記一つ以上の第1のブロックに対するデータ消去動作の実行後、第1のモードに遷移し、
前記第1のモードにおいて、前記第1の論理領域識別子を指定するリードコマンドを前記ホストから受信したことに応じ、前記第1のマッピング情報の前記複製において前記第1の論理領域識別子にマッピングされている第1の物理アドレスに対応する前記不揮発性メモリ内の記憶位置からデータを読み出す、
ように構成されている、
メモリシステム。
【請求項2】
前記コントローラは、
前記第1のコマンドを前記ホストから受信したことに応じ、
前記一つ以上の第1のブロックに格納されている有効データのうち、前記第1の論理領域識別子に関連付けられているセキュアイレーズ対象データを無効化し、
前記一つ以上の第1のブロックに格納されている前記有効データのうち、前記第1の論理領域識別子に関連付けられているセキュアイレーズ対象データ以外の有効データを、前記複数のブロックのうちの一つ以上のコピー先ブロックにコピーするコピー動作を実行し、
前記コピー動作の実行後、前記一つ以上の第1のブロックに対して前記データ消去動作を実行する、
ようにさらに構成されている、
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、
前記第1のモードにおいて、
前記第1の論理領域識別子とは異なる第2の論理領域識別子を指定するリードコマンドを前記ホストから受信したことに応じ、前記第1のテーブルに含まれる前記マッピング情報において前記第2の論理領域識別子にマッピングされている第2の物理アドレスに対応する前記不揮発性メモリ内の記憶領域からデータを読み出し、前記読み出したデータを前記ホストに送信する、
ようにさらに構成されている、
請求項1に記載のメモリシステム。
【請求項4】
前記コントローラは、
前記第1のモードの終了を要求するコマンド、または前記第1の論理領域識別子を指定するライトコマンド、を前記ホストから受信したことに応じ、前記第1のモードから抜ける、
ようにさらに構成されている、
請求項1に記載のメモリシステム。
【請求項5】
前記コントローラは、
前記第1のコマンドによって指定される前記第1の論理領域識別子を保持し、
前記第1のモードの終了を要求するコマンド、または前記第1の論理領域識別子を指定するライトコマンド、を前記ホストから受信したことに応じ、前記第1の論理領域識別子を破棄する、
ようにさらに構成されている、
請求項4に記載のメモリシステム。
【請求項6】
前記コントローラは、
前記第1のモードの終了を要求するコマンド、または前記第1の論理領域識別子を指定するライトコマンド、を前記ホストから受信したことに応じ、前記第1のマッピング情報の前記複製を破棄する、
ようにさらに構成されている、
請求項4に記載のメモリシステム。
【請求項7】
前記コントローラは、前記一つ以上の第1のブロックが複数の第1のブロックを含む場合に、
前記複数の第1のブロックのうちの一つである第2のブロックに対して前記データ消去動作を実行し、
前記複数の第1のブロックのうちの前記第2のブロックとは異なる第3のブロックから前記データ消去動作が実行された第2のブロックに、前記第3のブロックに格納されている有効データのうち、前記第1の論理領域識別子に関連付けられているセキュアイレーズ対象データ以外の有効データをコピーするコピー動作を実行する、
ようにさらに構成されている、
請求項1に記載のメモリシステム。
【請求項8】
前記コントローラは、
前記第1のコマンドを前記ホストから受信したことに応じ、前記第1の論理領域識別子に関連付けられているセキュアイレーズ対象データを無効化し、
前記複数のブロックのうちの、前記第1の論理領域識別子に関連付けられているセキュアイレーズ対象データが無効化される前から有効データを格納していないブロックであって、前記第1の論理領域識別子に関連付けられているセキュアイレーズ対象データのうちの無効データを格納している一つ以上のブロック、に対して少なくとも前記データ消去動作を実行する、
ようにさらに構成されている、
請求項1に記載のメモリシステム。
【請求項9】
前記コントローラは、複数のネームスペース識別子によってそれぞれ識別される複数のネームスペースを管理するように構成され、
前記第1の論理領域識別子は、セキュアイレーズ対象ネームスペースを識別するネームスペース識別子である、
請求項1に記載のメモリシステム。
【請求項10】
前記第1の論理領域識別子は、一つ以上のセキュアイレーズ対象セクタを識別する一つ以上の論理アドレスを含む、
請求項1に記載のメモリシステム。
【請求項11】
前記第1の論理領域識別子は、一つ以上のセキュアイレーズ対象バリューを識別する一つ以上のキーを含む、
請求項1に記載のメモリシステム。
【請求項12】
前記コントローラは、
前記第1のマッピング情報の前記複製を前記不揮発性メモリに保存する、
ように構成されている、
請求項1に記載のメモリシステム。
【請求項13】
前記コントローラは、
前記一つ以上の第1のブロックのうちの一つである第2のブロックに対して前記データ消去動作を実行し、
前記データ消去動作が実行された第2のブロックに前記第1のマッピング情報の前記複製を格納する、
ように構成されている、
請求項12に記載のメモリシステム。
【請求項14】
前記コントローラは、
前記第1のテーブルに含まれる前記マッピング情報において前記第1の論理領域識別子にマッピングされている第3の物理アドレスを前記マッピング情報から削除することによって、前記第1の論理領域識別子に関連付けられているセキュアイレーズ対象データを無効化し、
前記第3の物理アドレスを前記マッピング情報から削除する際、前記第3の物理アドレスを含む前記マッピング情報の一部を、前記複製として保持する、
ようにさらに構成されている、
請求項1に記載のメモリシステム。
【請求項15】
前記第1の論理領域識別子に関連付けられているセキュアイレーズ対象データは無効データを含む、
請求項1に記載のメモリシステム。
【請求項16】
前記コントローラは、
前記第1の物理アドレスに対応する記憶位置から読み出された前記データに対する誤り訂正に失敗したことを示す応答を、前記リードコマンドに対する応答として前記ホストに送信する、
ようにさらに構成されている、
請求項1に記載のメモリシステム。
【請求項17】
前記コントローラは、
前記一つ以上の第1のブロックに対するデータ消去動作の実行によってイレーズ状態となっている前記第1の物理アドレスに対応する記憶位置から、前記データを読み出す、
ように構成されている、
請求項1に記載のメモリシステム。
【請求項18】
前記コントローラは、
前記一つ以上の第1のブロックに対するデータ消去動作の実行後、前記第1の物理アドレスに対応する記憶位置に、データのオーバーライトのための特定のデータパターンを有するデータを書き込み、
前記リードコマンドを前記ホストから受信したことに応じ、前記第1の物理アドレスに対応する記憶位置から、前記特定のデータパターンを有するデータを読み出す、
ようにさらに構成されている、
請求項1に記載のメモリシステム。
【請求項19】
前記コントローラは、
前記第1の物理アドレスに対応する記憶位置から読み出された前記データが不正なデータであったことを示す応答を、前記リードコマンドに対する応答として前記ホストに送信する、
ようにさらに構成されている、
請求項1に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。
【0003】
SSDに格納されたデータを安全且つ確実に消去するセキュアイレーズ方法として、オーバーライト、ブロックイレーズ、クリプトグラフィックイレーズが知られている。セキュアイレーズ方法は、記憶されているデータを物理的に且つ不可逆的に読み出し不能にするイレーズ方法である物理的セキュアイレーズ方法と、記憶されているデータを論理的に読み出し不能にするイレーズ方法である論理的セキュアイレーズ方法とに分類される。オーバーライトおよびブロックイレーズの各々は、物理的セキュアイレーズ方法の例である。クリプトグラフィックイレーズは、論理的セキュアイレーズ方法の例である。
【0004】
クリプトグラフィックイレーズでは、SSDに格納されたデータが暗号化される時に使用された暗号鍵が物理的セキュアイレーズ方法により消去される。これにより、そのデータは復号できなくなり、論理的に消去されることになる。
【0005】
最近では、物理的セキュアイレーズ方法により、SSDのようなメモリシステムに格納されたデータのうちの特定のデータのセキュアイレーズを行いたいという要望がある。
【0006】
さらに、特定のデータのセキュアイレーズが正しく実行されたか否かを確認したいという要望もある。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】米国特許第10,403,369号明細書
【特許文献2】米国特許第10,353,612号明細書
【特許文献3】米国特許出願公開第2016/0274800号明細書
【特許文献4】特開2022-007376号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
本発明の一実施形態は、物理的セキュアイレーズ方法で特定のデータのセキュアイレーズを行うことができ、且つ、特定のデータのセキュアイレーズが正しく実行されたか否かを確認可能なメモリシステムを提供する。
【課題を解決するための手段】
【0009】
実施形態によれば、メモリシステムは、各々がデータ消去動作の単位である複数のブロックを含む不揮発性メモリと、前記不揮発性メモリに電気的に接続されたコントローラとを具備する。前記コントローラは、一つ以上の論理領域識別子の各々と前記不揮発性メモリの一つ以上の物理アドレスの各々との間のマッピングを示すマッピング情報を保持する第1のテーブルを管理する。前記コントローラは、第1の論理領域識別子に関連付けられているセキュアイレーズ対象データのセキュアイレーズを要求する第1のコマンドをホストから受信したことに応じ、前記第1のテーブルに含まれる前記マッピング情報のうちの前記第1の論理領域識別子に対応する第1のマッピング情報の複製を保持する。前記コントローラは、前記複数のブロックのうちの、前記第1の論理領域識別子に関連付けられているセキュアイレーズ対象データが格納されている一つ以上の第1のブロックを特定する。前記コントローラは、少なくとも前記一つ以上の第1のブロックに対して少なくとも前記データ消去動作を実行する。前記コントローラは、前記一つ以上の第1のブロックに対するデータ消去動作の実行後、第1のモードに遷移する。前記コントローラは、前記第1のモードにおいて、前記第1の論理領域識別子を指定するリードコマンドを前記ホストから受信したことに応じ、前記第1のマッピング情報の前記複製において前記第1の論理領域識別子にマッピングされている第1の物理アドレスに対応する前記不揮発性メモリ内の記憶位置からデータを読み出す。
【図面の簡単な説明】
【0010】
図1】第1実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図。
図2】第1実施形態に係るメモリシステムにおいて用いられる論理物理アドレス変換テーブル(L2Pテーブル)の構成例を示す図。
図3】第1実施形態に係るメモリシステムにおいて管理される複数のネームスペースの一例を示す図。
図4】第1実施形態に係るメモリシステムにおいて実行される、ライト動作と物理的セキュアイレーズ動作の概要を示す図。
図5】第1実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順を示すフローチャート。
図6】第1実施形態に係るメモリシステムにおいて各ブロックに書き込まれるデータ構造の例を示す図。
図7A】第1実施形態に係るメモリシステムにおいて実行されるAudit機能に関する処理の一部の手順を示すフローチャート。
図7B】第1実施形態に係るメモリシステムにおいて実行されるAudit機能に関する処理の残りの手順を示すフローチャート。
図8】第1実施形態に係るメモリシステムにおいて実行される、第1の特定コマンドが受信される前に受信されたI/Oコマンドに対する処理の手順を示すフローチャート。
図9】第1実施形態に係るメモリシステムにおいて実行される、第1の特定コマンドの実行中に受信されたI/Oコマンドに対する処理の手順を示すフローチャート。
図10A】第1実施形態に係るメモリシステムにおける、物理的セキュアイレーズ動作の開始前における各アクティブブロックの内容の一例を示す図。
図10B】第1実施形態に係るメモリシステムにおける、物理的セキュアイレーズ動作の開始前における各フリーブロックの内容の一例を示す図。
図11】第1実施形態に係るメモリシステムにおける、アンマップ動作が実行された後における各アクティブブロックの内容の一例を示す図。
図12A】第1実施形態に係るメモリシステムにおける、ガベージコレクション動作が実行された後における各アクティブブロックの内容の一例を示す図。
図12B】第1実施形態に係るメモリシステムにおける、ガベージコレクション動作が実行された後における各フリーブロックの内容の一例を示す図。
図13】第2実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順を示すフローチャート。
図14A】第3実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順を示すフローチャート。
図14B】第3実施形態に係るメモリシステムにおいて実行される、アンマップ動作およびガベージコレクション動作の手順を示すフローチャート。
図14C】第3実施形態に係るメモリシステムにおいて実行される、アンマップ動作およびガベージコレクション動作の他の手順を示すフローチャート。
図15A】第3実施形態に係るメモリシステムにおいて実行されるAudit機能に関する処理の一部の手順を示すフローチャート。
図15B】第3実施形態に係るメモリシステムにおいて実行されるAudit機能に関する処理の残りの手順を示すフローチャート。
図16A】第4実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順を示すフローチャート。
図16B】第4実施形態に係るメモリシステムにおいて実行されるアンマップ動作およびガベージコレクション動作の手順を示すフローチャート。
図16C】第4実施形態に係るメモリシステムにおいて実行されるアンマップ動作およびガベージコレクション動作の他の手順を示すフローチャート。
【発明を実施するための形態】
【0011】
以下、図面を参照して、実施形態を説明する。
(第1実施形態)
第1実施形態に係るメモリシステムを含む情報処理システムの構成について説明する。図1は、第1実施形態に係るメモリシステムを含む情報処理システム1の構成例を示すブロック図である。
【0012】
情報処理システム1は、ホスト(ホストデバイス)2と、メモリシステム3とを含む。ホスト2は、メモリシステム3を制御するように構成された情報処理装置である。ホスト2の例には、パーソナルコンピュータ、サーバコンピュータ、携帯端末、または車載機器、が含まれる。メモリシステム3は、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。メモリシステム3は、例えば、ソリッドステートドライブ(SSD)、またはUFS(Universal Flash Storage)デバイス、として実現され得る。以下では、メモリシステム3がSSDとして実現される例を説明する。以下では、メモリシステム3は、SSD3と称される。
【0013】
SSD3は、ホスト2にケーブルまたはネットワークを介して接続されてもよい。あるいは、SSD3は、ホスト2に内蔵されてもよい。
【0014】
ホスト2とSSD3とを接続するためのインタフェースとしては、これに限定されないが、SATA(Serial ATA)、SAS(Serial Attached SCSI)、M-PHY、PCI Express(PCIe)(登録商標)、Ethernet(登録商標)を使用し得る。
【0015】
SSD3は、コントローラ4と、不揮発性メモリ5とを備える。不揮発性メモリ5は、例えば、NAND型フラッシュメモリである。以下では、不揮発性メモリ5は、NAND型フラッシュメモリ5と称される。SSD3は、ランダムアクセスメモリ6も備えていてもよい。ランダムアクセスメモリ6は、例えば、DRAM(Dynamic Random Access Memory)である。以下では、ランダムアクセスメモリ6は、DRAM6と称される。
【0016】
NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを有するメモリセルアレイを含む。NAND型フラッシュメモリ5は、2次元構造のフラッシュメモリであってもよいし、3次元構造のフラッシュメモリであってもよい。
【0017】
NAND型フラッシュメモリ5のメモリセルアレイは、複数のブロックBLK0~BLKx-1を含む。ブロックBLK0~BLKx-1の各々は、複数のページ(ここではページP0~Py-1)を含む。各ページは、同一ワード線に接続された複数のメモリセルを含む。ブロックBLK0~BLKx-1の各々は、NAND型フラッシュメモリ5からデータを消去するデータ消去動作(以下、ブロックイレーズとも称される)の単位である。ブロックは、「消去ブロック」、「物理ブロック」、または「物理消去ブロック」と称されることもある。ページP0~Py-1の各々は、データ書き込み動作およびデータ読み出し動作の各々の単位である。なお、イレーズ状態のブロック(すなわち、データ消去動作が実行され、且つ、データ書き込み動作が実行される前のブロック)からは、初期データ(例えばオール1データ)が読み出され得る。
【0018】
コントローラ4は、System-on-a-chip(SoC)のような回路によって実現されてもよい。コントローラ4は、これに限定されないが、Toggle NANDフラッシュインタフェース、オープンNANDフラッシュインタフェース(ONFI)に準拠するNANDインタフェース13を介して、NAND型フラッシュメモリ5に電気的に接続されている。コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして動作する。
【0019】
コントローラ4は、NAND型フラッシュメモリ5のデータ管理及びブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。
【0020】
FTLによって実行されるデータ管理は、(1)それぞれが複数の論理領域を指定する複数の論理領域識別子の各々とNAND型フラッシュメモリ5の一つ以上の物理アドレスの各々との間のマッピングを示すマッピング情報の管理、(2)NAND型フラッシュメモリ5の制約(例えば、ページ単位のデータ書き込み動作/データ読み出し動作とブロック単位のデータ消去動作)を隠蔽するための処理、を含む。
【0021】
論理領域識別子は、ネームスペース識別子であってもよいし、論理アドレスであってもよいし、ネームスペース識別子と論理アドレスとの組み合わせであってもよい。あるいは、論理領域識別子は、キー・バリューストアのキーであってもよい。
【0022】
論理アドレスは、SSD3の論理アドレス空間内の論理アドレスをアドレス指定するためにホスト2によって使用されるアドレスである。論理アドレスとしては、LBA(logical block address)が使用され得る。
【0023】
コントローラ4は、複数のネームスペースを作成および管理するように構成されている。複数のネームスペースは、互いに独立した論理アドレス範囲である。複数のネームスペースは、一つのメモリシステムをあたかも複数のメモリシステムであるかのように動作させるために使用される。複数のネームスペースは、SSD3をアクセスするためにホスト2によって使用される。ネームスペース識別子は、ネームスペースを指定するためにホスト2によって使用される識別子である。
【0024】
マッピング情報の管理は、マッピング情報を保持するテーブルであるアドレス変換テーブル(論理物理アドレス変換テーブル:L2Pテーブル)37を用いて実行される。L2Pテーブル37は、マッピングテーブルとも称される。ある論理領域を示す論理領域識別子にマッピングされた物理アドレスの各々は、この論理領域識別子に関連付けられたデータが書き込まれたNAND型フラッシュメモリ5内の最新の物理記憶位置を示す。L2Pテーブル37は、SSD3の起動時にNAND型フラッシュメモリ5からDRAM6にロードされてもよい。
【0025】
論理領域識別子として論理アドレス(例えばLBA)が使用される場合には、L2Pテーブル37に保持されるマッピング情報は、LBAそれぞれと物理アドレスPBA(physical block address)それぞれとの間のマッピングを、クラスタと称される所定の管理サイズの単位で示す情報である。一つのクラスタは、例えば、LBAによって指定されるセクタ(論理ブロックとも称される)のサイズの整数倍のサイズを有する。セクタのサイズの例は512Bまたは4KiBであり、クラスタのサイズの例は4KiBである。また、クラスタのサイズは、4KiBよりも大きくてもよい。LBAによって指定されるセクタのサイズがクラスタのサイズよりも小さい場合には、各クラスタに含まれる複数のセクタの各々のデータが有効データであるか無効データであるかを示すビットマップデータがL2Pテーブル37に格納されていてもよい。
【0026】
論理領域識別子としてキー・バリューストアのキーが使用される場合には、L2Pテーブル37に保持されるマッピング情報は、これに限定されないが、例えば、各キーのハッシュ値と、各キーへのポインタと、各キーに対応するユニーク番号と、各キーに対応するバリューのサイズと、各キーに対応するバリューが格納されている一つ以上の物理アドレスを含む物理アドレスリストと、の間の対応関係を示す情報である。
【0027】
図2は、L2Pテーブル37の構成例を示す図である。ここでは、LBAのような論理アドレスが論理領域識別子として使用される場合のL2Pテーブル37の構成例について説明する。
【0028】
L2Pテーブル37において、ある論理アドレスにマッピングされた物理アドレスは、この論理アドレスに関連付けられたデータが書き込まれたNAND型フラッシュメモリ5内の最新の物理記憶位置を示す。
【0029】
L2Pテーブル37は、複数の論理アドレスそれぞれに対応する複数のエントリを含む。ある論理アドレスに対応するエントリには、この論理アドレスにマッピングされた物理アドレスPBAが格納される。例えば、コントローラ4がある論理アドレスに関連付けられたデータをNAND型フラッシュメモリ5内のある物理記憶位置に書き込んだ場合、コントローラ4は、L2Pテーブル37を更新して、この物理記憶位置を示す物理アドレスPBAをこの論理アドレスにマッピングさせる。
【0030】
図2には、論理アドレス0x000、0x001,0x002、0x005、0x006、0x007に、物理アドレスPBA0、PBA2、PBA1、PBA4、PBA5、PBA6がそれぞれマッピングされている場合が例示されている。ある論理アドレスに関連付けられたデータがNAND型フラッシュメモリ5に書き込まれていない場合は、この論理アドレスに対応するエントリには、あらかじめ定められた定数(例えばNULL値)が格納されてもよい。
【0031】
図1の説明に戻る。NAND型フラッシュメモリ5においては、ページへのデータ書き込み動作は、そのページが含まれるブロックへのデータ消去動作1回当たり1回のみ可能である。つまり、データが既に書き込まれているブロック内の領域に新たなデータを直接上書きすることができない。このため、既に書き込まれているデータを更新する場合には、コントローラ4はそのブロック(または別のブロック)内の未書き込み領域に新たなデータを書き込み、そして以前のデータを無効データとして扱う。換言すれば、ある論理領域識別子に関連付けられたデータが更新される場合、コントローラ4は、更新データを、以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ4は、L2Pテーブル37を更新してこの別の物理記憶位置を示す物理アドレスをこの論理領域識別子にマッピングさせると共に、以前のデータを無効化する。
【0032】
FTLによって実行されるブロック管理は、バッドブロック(不良ブロック)の管理と、ウェアレベリングと、ガベージコレクションを含む。
【0033】
ウェアレベリングは、ブロックそれぞれの書き換え回数(プログラム/イレーズサイクルの数)を均一化するための動作である。
【0034】
ガベージコレクションは、有効データと無効データとが混在するブロックの個数を減らし且つフリーブロックの個数を増やすための動作である。フリーブロックとは、有効データを含まないブロックを意味する。
【0035】
有効データとは、ある論理領域を示す論理領域識別子に関連付けられた最新のデータを意味する。例えば、L2Pテーブル37が保持するマッピング情報によって参照されている物理記憶位置に記憶されているデータ(すなわちコントローラ4によって最新のデータとして論理領域識別子に関連付けて管理されているデータ)は、有効データである。つまり、有効データは、後にホスト2からリードされる可能性があるデータである。
【0036】
無効データとは、L2Pテーブル37が保持するマッピング情報によって参照されていない物理記憶位置に記憶されているデータを意味する。例えば、どの論理領域識別子にもマッピングされていない物理アドレスが示す物理記憶位置に記憶されているデータ(すなわちコントローラ4によって最新のデータとして論理領域識別子に関連付けて管理されていないデータ)は、無効データである。無効データは、もはやホスト2からリードされる可能性が無いデータである。ある論理領域を示す論理領域識別子に関連付けられたデータが更新されると、それまでその論理領域識別子に関連付けられていた有効データは無効データとなり、更新データが新たな有効データとなる。また、ある論理領域を示す論理領域識別子に対して、後述するアンマップ動作が行われた場合にも、それまでその論理領域識別子に関連付けられていた有効データは、無効データとなる。
【0037】
ガベージコレクションにおいて、コントローラ4は、有効データと無効データとが混在する幾つかのブロック内の有効データのみを選択して、別のブロック(例えばフリーブロック)にコピーする。コントローラ4は、L2Pテーブル37を更新して、コピーされた有効データが関連付けられていた論理領域識別子にコピー先物理アドレスをマッピングする。有効データが別のブロックにコピーされることによって無効データのみを含むことになったブロックは、フリーブロックとして解放される。これによって、このブロックは、このブロックに対するデータ消去動作の後にデータを書き込むために再利用することが可能となる。
【0038】
コントローラ4は、上述したNANDインタフェース(I/F)13以外に、ホストインタフェース(I/F)11、CPU12、DRAMインタフェース(I/F)14、直接メモリアクセスコントローラ(DMAC)15、スタティックRAM(SRAM)16、およびECC(Error Correction Code)エンコード/デコード部17を含む。これらホストI/F11、CPU12、NAND I/F13、DRAM I/F14、DMAC15、SRAM16、およびECCエンコード/デコード部17は、バス10を介して相互接続される。
【0039】
ホストI/F11は、ホスト2との通信を実行するように構成されたホストインタフェース回路である。ホストI/F11は、例えば、SATAインタフェースコントローラ、SASインタフェースコントローラ、PCIeコントローラ、または、Ethernetコントローラであってもよい。
【0040】
ホストI/F11は、ホスト2から様々なコマンドを受信する。SATAインタフェースではATA規格で定義されたATAコマンドが使用される。SASインタフェースではSCSI規格で定義されたSCSIコマンドが使用される。PCIeインタフェースおよびEthernetインタフェースではNVM Express(NVMe)(登録商標)規格で規定されたNVMeコマンドが使用される。これらコマンドは、ライトコマンド、リードコマンド、アンマップコマンド、等を含む。
【0041】
ライトコマンド(ライト要求)は、SSD3に対し、ある論理領域を示す論理領域識別子に関連付けられたユーザデータ(ライトデータ)を、NAND型フラッシュメモリ5に書き込むことを要求するコマンドである。論理領域識別子として論理アドレス(特にLBA)とネームスペース識別子の組み合わせが使用される場合のライトコマンドは、例えば、あるネームスペースを識別するネームスペース識別子と、このネームスペース内の論理アドレス(開始LBA)と、ライトデータのサイズ(セクタの個数)と、このライトデータが格納されているホスト2のメモリ内の位置を示すデータポインタ(バッファアドレス)と、を含み得る。開始LBAは、ライトデータに関連付けられた最初のセクタを示す。
【0042】
リードコマンド(リード要求)は、SSD3に対し、このリードコマンドによって指定された論理領域を示す論理領域識別子に関連付けられたデータを、NAND型フラッシュメモリ5から読み出すように要求するコマンドである。論理領域識別子として論理アドレス(特にLBA)とネームスペース識別子の組み合わせが使用される場合のリードコマンドは、あるネームスペースを識別するネームスペース識別子と、このネームスペース内の論理アドレス(開始LBA)と、リードすべきデータのサイズ(セクタの個数)と、このデータが転送されるべきホスト2のメモリ内の位置を示すデータポインタ(バッファアドレス)と、を含み得る。開始LBAは、リードすべきデータに関連付けられた最初のセクタを示す。
【0043】
アンマップコマンドは、SSD3に対し、このアンマップコマンドによって指定された論理領域識別子に関連付けられたデータを無効化するように要求するコマンドである。論理領域識別子として論理アドレス(特にLBA)とネームスペース識別子の組み合わせが使用される場合、コントローラ4は、アンマップコマンドによって指定された論理アドレス範囲(LBA範囲)に対応するL2Pテーブル37のエントリそれぞれから物理アドレスを削除する。この場合、コントローラ4は、これらエントリにNULL値を上書きすることによって、これらエントリそれぞれから物理アドレスを削除してもよい。このアンマップ動作により、この論理アドレス範囲に含まれる各論理アドレスに関連付けられているデータは、無効データとなる。
【0044】
ホスト2から受信されるコマンドには、SSD3に対し、特定の論理領域を示す論理領域識別子に関連付けられているデータに対するセキュアイレーズを要求するコマンド(以下、特定コマンドと称する)も含まれる。以下の説明では、特定の論理領域をセキュアイレーズ対象論理領域と称する。セキュアイレーズ対象論理領域を示す識別子をセキュアイレーズ対象論理領域識別子と称する。また、セキュアイレーズ対象論理領域識別子に関連付けられているデータをセキュアイレーズ対象データと称する。セキュアイレーズ対象論理領域は、特定コマンドによって指定される論理領域識別子(セキュアイレーズ対象論理領域識別子)によって識別される論理領域である。
【0045】
セキュアイレーズ対象データは、セキュアイレーズ対象論理領域識別子に現在関連付けられているデータと、このセキュアイレーズ対象論理領域識別子に以前に関連付けられていたデータと、の双方を含む。セキュアイレーズ対象論理領域識別子に現在関連付けられているデータは、セキュアイレーズ対象論理領域識別子に現在関連付けられている有効データを意味する。セキュアイレーズ対象論理領域識別子に以前に関連付けられていたデータは、この論理領域識別子に関連付けられたデータの更新等によって無効化された無効データを意味する。SSD3においては、旧データが格納されている物理記憶位置とは異なる物理記憶位置に更新データが書き込まれるので、旧データが旧物理記憶位置に無効データとして残されたままデータの更新が行われる。セキュアイレーズ対象データは、このような無効データも含む。
【0046】
特定コマンドは、例えば、セキュアイレーズ対象論理領域を識別する論理領域識別子を指定し、且つセキュアイレーズ対象データのセキュアイレーズを要求するコマンドである。
【0047】
あるいは、特定コマンドは、セキュアイレーズ対象論理領域を識別する論理領域識別子を指定せずにセキュアイレーズ対象データのセキュアイレーズを要求するコマンドであってもよい。この場合には、ホスト2は、まず、セキュアイレーズ対象論理領域を識別する論理領域識別子を指定する一つ以上のコマンドをSSD3に送信する。次いで、ホスト2は、セキュアイレーズ対象データのセキュアイレーズを要求する特定コマンドをSSD3に送信する。
【0048】
セキュアイレーズ対象論理領域を識別する論理領域識別子がネームスペース識別子の場合、セキュアイレーズ対象論理領域は、ネームスペース識別子によって識別されるネームスペースである。この場合、セキュアイレーズ対象データは、ネームスペース識別子によって識別されるネームスペースに現在関連付けられているデータと、このネームスペースに以前に関連付けられていたデータと、の双方を含む。
【0049】
このように、コントローラ4が複数のネームスペース識別子によってそれぞれ識別される複数のネームスペースを管理するように構成されているケースにおいては、ネームスペース識別子がセキュアイレーズ対象ネームスペースを識別する論理領域識別子として使用可能である。
【0050】
セキュアイレーズ対象論理領域を識別する論理領域識別子がLBAのような論理アドレスである場合、セキュアイレーズ対象論理領域は、論理アドレスによって識別されるセクタである。この場合、セキュアイレーズ対象データは、このセクタを示す論理アドレスに現在関連付けられているデータと、この論理アドレスに以前に関連付けられていたデータと、の双方を含む。なお、コントローラ4が複数のネームスペースを管理している場合は、ネームスペース識別子と論理アドレスの組み合わせがセキュアイレーズ対象論理領域を識別する論理領域識別子として用いられてもよい。
【0051】
特定コマンドは、一つ以上のセキュアイレーズ対象セクタを識別する一つ以上の論理アドレスを指定することができる。この場合、特定コマンドは、論理アドレス範囲を指定してもよい。論理アドレス範囲は、例えば、セキュアイレーズ対象論理領域の先頭を示す論理アドレスと、そこからのセクタ数で指定される。複数の論理アドレス範囲をセキュアイレーズ対象としたい場合には、ホスト2は、まず、各々がセキュアイレーズ対象論理アドレス範囲を指定する複数のコマンドをSSD3に送信してもよく、次いで、セキュアイレーズ対象論理アドレス範囲に関連付けられているセキュアイレーズ対象データのセキュアイレーズを要求する特定コマンドをSSD3に送信してもよい。もちろん、特定コマンドが、複数の論理アドレス範囲を指定する複数のパラメータを含んでいてもよい。この場合も、コントローラ4が複数のネームスペースを管理している場合には、ネームスペース識別子と論理アドレス範囲の組み合わせが、セキュアイレーズ対象論理領域を識別する一つの論理領域識別子として使用されてもよい。
【0052】
コントローラ4がキー・バリューストアをサポートしている場合、セキュアイレーズ対象論理領域を識別する論理領域識別子としてキー・バリューストアのキーを用いることができる。この場合、セキュアイレーズ対象論理領域は、キーによって識別される論理領域である。セキュアイレーズ対象データは、この論理領域を示すキーに現在関連付けられているデータと、このキーに以前に関連付けられていたデータと、の双方を含む。特定コマンドは、一つ以上のセキュアイレーズ対象論理領域を識別する一つ以上のキーを指定することができる。
【0053】
第1実施形態では、ライトコマンド、リードコマンドのようなI/Oコマンドによって指定される論理領域識別子として、ネームスペース識別子と論理アドレス(LBA)との組み合わせが用いられる。I/Oコマンドによって指定される、ネームスペース識別子と論理アドレス(LBA)との組み合わせは、アクセス対象の論理領域を示す。なお、コントローラ4がキー・バリューストアをサポートしている場合、キー・バリューストアのキー、またはネームスペース識別子とキーとの組み合わせが、アクセス対象の論理領域を示す。
【0054】
なお、特定コマンドは、Audit機能を伴ったセキュアイレーズ動作の実行を要求するコマンドであってもよい。Audit機能は、特定コマンドによって指定された論理領域識別子に関連付けられているデータが、NAND型フラッシュメモリ5からセキュアイレーズ(物理的セキュアイレーズまたは論理的セキュアイレーズ)されたか否かをホスト2が確認することを可能にするための機能である。以下では、Audit機能を伴ったセキュアイレーズ動作の実行を要求するコマンドが、特定コマンドとして使用される場合を想定する。Audit機能の詳細については、後述する。
【0055】
図3は、SSD3において管理される複数のネームスペースを説明するための図である。
【0056】
図3においては、コントローラ4がネームスペースNS#1、ネームスペースNS#2、ネームスペースNS#3を管理している場合が例示されている。各ネームスペースは、ネームスペース識別子(NSID)によって識別される。各ネームスペースは、連続する複数の論理アドレス(LBA)の集合を含む。各ネームスペースに対応する論理アドレス範囲は、LBA0から始まる。各ネームスペースは、任意のサイズに設定可能である。各ネームスペースのサイズは、各ネームスペースに含まれるLBAの個数に対応する。
【0057】
図3においては、ネームスペースNS#1がLBA0からLBA(i-1)までの連続する複数のLBAを含み、ネームスペースNS#2がLBA0からLBA(j-1)までの連続する複数のLBAを含み、ネームスペースNS#3がLBA0からLBA(k-1)までの連続する複数のLBAを含む場合が例示されている。
【0058】
複数のネームスペースがコントローラ4によって管理されている場合、SSD3の一つの内部論理アドレス空間における論理アドレス(内部論理アドレスinLBA)それぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとが一つのL2Pテーブル37を用いてマッピングされてもよい。例えば、コントローラ4は、ネームスペースNS#1のLBA範囲(LBA0~LBA(i-1))を、内部論理アドレス範囲inLBA0~inLBA(i-1)に変換し、ネームスペースNS#2のLBA範囲(LBA0~LBA(j-1))を、内部論理アドレス範囲inLBAi~inLBA(i+j-1)に変換し、ネームスペースNS#3のLBA範囲(LBA0~LBA(k-1))を、内部論理アドレス範囲inLBA(i+j)~inLBA(i+j+k-1)に変換してもよい。そして、コントローラ4は、内部論理アドレス範囲inLBA0~inLBA(i+j+k-1)の内部論理アドレスそれぞれと物理アドレスそれぞれとのマッピングを、一つのL2Pテーブル37を用いて管理する。
【0059】
あるいは、L2Pテーブル37がネームスペース毎に作成されてもよい。
【0060】
図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内の専用ハードウェアによって実行されてもよい。
【0061】
このファームウェアは、CPU12を、ネームスペース管理部21、ライト制御部22、リード制御部23及びイレーズ制御部24として機能させる。
【0062】
ネームスペース管理部21は、ホスト2から受信されるネームスペース管理コマンドに基づき、ネームスペースの作成、管理、削除等を行う。
【0063】
ライト制御部22は、ホストI/F11を介してホスト2から受信されるライトコマンドを処理する。ライトコマンドは、論理領域識別子(例えばネームスペース識別子(NSID)、開始LBA)、ライトデータのサイズ等を指定する。ライト制御部22は、ホストI/F11を介してホスト2から受信されたライトコマンドに関連付けられたライトデータを、NAND I/F13を介してNAND型フラッシュメモリ5に書き込む。そして、ライト制御部22は、ライトデータに関連付けられた各LBAと、このライトデータが書き込まれた物理アドレスとがマッピングされるように、L2Pテーブル37を更新する。
【0064】
ライト制御部22は、ライトデータとともにこのライトデータに関連付けられた論理領域識別子(例えばLBA)を、NAND型フラッシュメモリ5に書き込んでもよい。この場合、論理領域識別子は、このデータが書き込まれたブロックと同じブロックに書き込まれてもよい。特に、論理領域識別子は、このデータが書き込まれたページと同じページに書き込まれてもよい。
【0065】
リード制御部23は、ホストI/F11を介してホスト2から受信されるリードコマンドを処理する。リードコマンドは、論理領域識別子(例えばネームスペース識別子(NSID)、開始LBA)、リード対象データのサイズ等を指定する。リード制御部23は、L2Pテーブル37を参照することによって、リード対象データが格納されている物理アドレスを取得する。そしてリード制御部23は、リード対象データをNAND I/F13を介してNAND型フラッシュメモリ5から読み出す。
【0066】
ライトデータとともにこのライトデータに関連付けられた論理領域識別子がNAND型フラッシュメモリ5に書き込まれていた場合、リード制御部23は、リード対象データとともにこのリード対象データに関連付けられた論理領域識別子を、NAND型フラッシュメモリ5から読み出してもよい。リード制御部23は、リードコマンドで指定された論理領域識別子と、NAND型フラッシュメモリ5から読み出された論理領域識別子が一致しない場合、読み出されたリード対象データが不正なデータであることと判断してもよい。
【0067】
イレーズ制御部24は、ホストI/F11を介してホスト2から受信される特定コマンドに応じて、セキュアイレーズ対象論理領域識別子に関連付けられているセキュアイレーズ対象データに対するセキュアイレーズを、物理的セキュアイレーズ方法によって行う。セキュアイレーズ動作の実行後、イレーズ制御部24は、Auditモードに遷移する。Auditモードは、セキュアイレーズ対象論理領域識別子に関連付けられていたデータの読み出しを要求するリードコマンドに対してAudit機能を実行するための動作モードである。Audit機能を伴ったセキュアイレーズ動作を実行するために、イレーズ制御部24は、マッピング情報コピー部241と、アンマップ部242と、ガベージコレクション(GC)部243と、セキュアイレーズ部244と、Audit機能実行部255と、を含む。
【0068】
マッピング情報コピー部241は、L2Pテーブル37に含まれているマッピング情報のうちのセキュアイレーズ対象論理領域に対応するマッピング情報の複製を保持する。このマッピング情報の複製は、セキュアイレーズ対象論理領域に対するセキュアイレーズ動作が開始される直前のセキュアイレーズ対象論理領域に対応するマッピング情報を示すバックアップ情報である。マッピング情報コピー部241は、L2Pテーブル37からNAND型フラッシュメモリ5、あるいはSSD3内の揮発性メモリ(例えばSRAM16またDRAM6)に、セキュアイレーズ対象論理領域に対応するマッピング情報をコピーすることによって、セキュアイレーズ対象論理領域に対応するマッピング情報の複製を保持する。このマッピング情報の複製は、たとえアンマップ動作およびガベージコレクション動作の各々によってL2Pテーブル37のマッピング情報がコピー後に変更されても、変更されず、コピー時の内容を維持する。
【0069】
アンマップ部242は、セキュアイレーズ対象データを無効化するアンマップ動作を行う。例えば、アンマップ部242は、セキュアイレーズ対象論理領域識別子に現在マッピングされている全ての物理アドレスをL2Pテーブル37から削除し、これによってセキュアイレーズ対象データを無効化する。
【0070】
GC部243は、セキュアイレーズ対象データと、セキュアイレーズ対象データを除くデータのうちの有効データと、を格納している各ブロックを、GC対象ブロック(コピー元ブロック)として選択する。コピー元ブロック内の有効データのうちのセキュアイレーズ対象データは、アンマップ動作により無効化されている。このため、セキュアイレーズ対象データを除くデータのうちの有効データは、コピー元ブロック内の残りの有効データ、つまり、セキュアイレーズ対象論理領域識別子以外の他の論理領域識別子に関連付けられている有効データである。GC部243は、セキュアイレーズ対象データを除くデータのうちの有効データのみをコピー元ブロックからコピー先ブロックにコピーするコピー動作を実行する。アンマップ動作とコピー動作とにより、コピー元ブロックは、一切の有効データが格納されないフリーブロックとなる。
【0071】
セキュアイレーズ部244は、コピー動作の実行後、コピー元ブロックを含むセキュアイレーズ対象データを格納する全てのブロックに対して少なくともデータ消去動作を実行する。これによって、セキュアイレーズ部244は、セキュアイレーズ対象データに対するセキュアイレーズを物理的セキュアイレーズ方法によって行う。
【0072】
マッピング情報コピー部241によるセキュアイレーズ対象論理領域に対応するマッピング情報の複製を保存する動作は、セキュアイレーズ動作におけるアンマップ動作が実行される前に実行されてもよいし、このアンマップ動作の実行中に実行されてもよい。
【0073】
後者の場合、アンマップ部242がセキュアイレーズ対象論理領域識別子にマッピングされている物理アドレス(削除対象の物理アドレス)をL2Pテーブル37のマッピング情報から削除する際に、マッピング情報コピー部241は、この削除対象の物理アドレスを含む、L2Pテーブル37のマッピング情報の一部の複製を、NAND型フラッシュメモリ5あるいはSSD3内の揮発性メモリに格納してもよい。例えば、アンマップ部242がセキュアイレーズ対象論理領域識別子のうちのLBA100に関連付けられたデータを無効化する場合を考える。この場合、LBA100にマッピングされた物理アドレスPBAを含むマッピング情報をL2Pテーブル37のマッピング情報からアンマップ部242が削除する際に、マッピング情報コピー部241は、この削除対象の物理アドレスPBAを含むマッピング情報をL2Pテーブル37から取得して、NAND型フラッシュメモリ5あるいはSSD3内の揮発性メモリに格納する。
【0074】
なお、アンマップ動作は、ガベージコレクション動作の実行中に実行されてもよい。この場合、マッピング情報コピー部241は、セキュアイレーズ動作におけるガベージコレクション動作の実行中にフリーブロックとなったブロックに、セキュアイレーズ対象論理領域に対応するマッピング情報の複製を格納してもよい。これにより、不揮発性メモリ5にSSD3の容量分のデータが書き込まれている状態においても、SSD3内の揮発性メモリの記憶領域を圧迫することなく、セキュアイレーズ対象論理領域に対応するマッピング情報の複製を保持することが可能となる。
【0075】
Audit機能実行部245は、セキュアイレーズの実行後、コントローラ4をAuditモードに遷移させる。まず、Audit機能実行部245は、ホスト2から特定コマンドを受信したことに応じて、特定コマンドに含まれる論理領域識別子(第1の論理領域識別子とも称する)を保持する。例えば、Audit機能実行部245は、第1の論理領域識別子をSRAM16あるいはDRAM6に格納することによって、第1の論理領域識別子を保持する。そして、セキュアイレーズ動作の完了後、Audit機能実行部245は、コントローラ4をAuditモードに遷移させる。
【0076】
Auditモードにおいて、第1の論理領域識別子を指定するリードコマンドをホスト2から受信したことに応じ、コントローラ4は、セキュアイレーズ対象論理領域識別子である第1の論理領域識別子にマッピングされている物理アドレスを、L2Pテーブル37ではなく、マッピング情報の複製から取得する。そして、コントローラ4は、取得した物理アドレスに対応するNAND型フラッシュメモリ5内の物理記憶位置からデータを読み出し、読み出したデータをホスト2に送信する。後述するように、この物理記憶位置から読み出されるデータは、例えば、初期データ、オーバーライトに用いられたセキュアイレーズ非対象の有効データ、特定のデータパターンを有するデータ、または、不正なデータである。
【0077】
また、コントローラ4は、コントローラ4がAuditモードであるか否かにかかわらず、第1の論理領域以外の別の論理領域を示す別の論理領域識別子を指定するリードコマンドをホスト2から受信したことに応じ、この別の論理領域識別子にマッピングされている物理アドレスをL2Pテーブル37のマッピング情報から取得する。そして、コントローラ4は、取得した物理アドレスに対応するNAND型フラッシュメモリ5内の物理記憶位置からデータを読み出し、読み出したデータをホスト2に送信する。
【0078】
また、Audit機能実行部245は、Auditモードの終了を要求するコマンド、あるいは第1の論理領域識別子を指定するライトコマンド、をホスト2から受信したことに応じて、保持されている第1の論理領域識別子及びマッピング情報の複製を破棄する。そして、Audit機能実行部245は、コントローラ4をAuditモードから抜けさせる。
【0079】
コントローラ4内の他のコンポーネントについて説明する。
【0080】
NAND I/F13は、CPU12の制御の下、NAND型フラッシュメモリ5を制御するように構成されたNANDコントローラである。
【0081】
DRAM I/F14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAMコントローラである。
【0082】
DRAM6の記憶領域の一部は、ライトバッファ31、リードバッファ32、コマンドバッファ33として利用されてもよい。また、DRAM6の記憶領域の一部は、セキュアイレーズ対象ブロックリスト34、フリーブロックリスト35、アクティブブロックリスト36、及びL2Pテーブル37を記憶する領域として利用されてもよい。
【0083】
ライトバッファ31は、NAND型フラッシュメモリ5にライトすべきデータを一時的に記憶する。
【0084】
リードバッファ32は、NAND型フラッシュメモリ5からリードしたデータを一時的に記憶する。
【0085】
コマンドバッファ33は、ホスト2から受信したコマンドを、そのコマンドが実行されるまで一時的に記憶する。
【0086】
セキュアイレーズ対象ブロックリスト34は、セキュアイレーズ対象データが格納されているブロックそれぞれのブロック識別子を記憶する。
【0087】
フリーブロックリスト35は、フリーブロックそれぞれのブロック識別子を記憶する。フリーブロックは有効データが格納されていないブロックである。
【0088】
アクティブブロックリスト36は、アクティブブロックそれぞれのブロック識別子を記憶する。アクティブブロックは有効データが格納されているブロックである。
【0089】
ECCエンコード/デコード部17は、データの符号化処理及び復号処理を実行する。例えば、ECCエンコード/デコード部17は、ライト動作時には、データの符号化処理を実行して、誤り訂正符号を生成する。ECCエンコード/デコード部17は、ユーザデータに誤り訂正符号を付与して、ライト動作の対象となる符号語を生成する。ECCエンコード/デコード部17は、リード動作時には、復号処理を実行する。すなわち、ECCエンコード/デコード部17は、誤り訂正符号を用いて、NAND型フラッシュメモリ5から読み出された符号語の誤り訂正を実行し、ユーザデータを復元する。
【0090】
次に、物理的セキュアイレーズ方法によりデータを安全且つ確実に消去する動作(以下、物理的セキュアイレーズ動作と称する)を説明する。
【0091】
図4は、SSD3において実行されるライト動作と物理的セキュアイレーズ動作の概要を示す。物理的セキュアイレーズ動作の説明に先立ち、まず、ライト動作について説明する。
【0092】
ライト制御部22は、ライトデータをライトバッファ31に書き込む。ライト制御部22は、書き込み先ブロック56が割り当てられていない場合、フリーブロックリスト35によって管理されているフリーブロックの中の一つのフリーブロックを選択し、選択したフリーブロックに対するブロックイレーズを行い、ブロックイレーズが行われたフリーブロックを書き込み先ブロック56として割り当てる。
【0093】
ライト制御部22は、ライトバッファ31内のライトデータを書き込み先ブロック56の書き込み可能なページに書き込む。ライト制御部22は、L2Pテーブル37を更新する。ライトデータが書き込み先ブロック56に書き込まれると、書き込み先ブロック56は部分的に有効データが書き込まれたブロック(以下、書き込み途中のブロックとも称される)となる。書き込み途中のブロックも有効データを格納しているので、アクティブブロックとして管理される。
【0094】
書き込み先ブロック56がライトデータで満たされることによって書き込み先ブロック56に書き込み可能なページが無くなった場合、ライト制御部22は、新たなフリーブロックを書き込み先ブロックとして割り当て、ライトバッファ31内のライトデータを新たに割り当てた書き込み先ブロックの書き込み可能なページに書き込む。
【0095】
次に、物理的セキュアイレーズ動作において実行される、アンマップ動作とガベージコレクション動作について説明する。
【0096】
論理領域識別子に関連付けられたデータのセキュアイレーズを指示する特定コマンドをホスト2から受信すると、アンマップ部242は、特定コマンドで指定された全ての論理領域識別子の各々にマッピングされた一つ以上の物理アドレスがL2Pテーブル37のマッピング情報から削除されるようにアンマップ動作を実行する。換言すれば、アンマップ部242は、セキュアイレーズ対象データを無効化する。これにより、全てのセキュアイレーズ対象データは無効データとなる。有効データが無くなったアクティブブロックは、アクティブブロックリスト36から取り除かれ、代わりに、フリーブロックリスト35によって管理される。
【0097】
そして、GC部243は、ガベージコレクション動作を実行する。このガベージコレクション動作において、GC部243は、セキュアイレーズ対象データが無効化された後の残りの有効データのみを、セキュアイレーズ対象データが格納されている一つ以上の第1のブロックから、一つ以上のコピー先ブロックにコピーする。セキュアイレーズ対象データはアンマップ部242によって無効化されたので、一つ以上の第1のブロックに格納されている残りの有効データは、セキュアイレーズ対象論理領域以外の他の論理領域を示す論理領域識別子に関連付けられているデータのうちの有効データ、つまり、セキュアイレーズ非対象の有効データである。
【0098】
これにより、アクティブブロック群は、セキュアイレーズ対象データと、セキュアイレーズ対象データを除くデータのうちの有効データと、が混在しているブロックを含まないようになる。残りの有効データがコピーされることによって、一つ以上の第1のブロック(コピー元ブロック)は、有効データを含まなくなり、フリーブロックとして扱われる。よって、一つ以上の第1のブロックは、アクティブブロックリスト36から取り除かれ、代わりに、フリーブロックリスト35によって管理される。
【0099】
次に、GC部243によって実行されるガベージコレクション動作の詳細例を説明する。セキュアイレーズ対象データは、例えば、(i)特定コマンドによってネームスペース識別子のみが指定された場合には、このネームスペース識別子によって識別される、セキュアイレーズ対象ネームスペースのデータ(ユーザデータ)、(ii)特定コマンドによってネームスペース識別子とLBA範囲との組み合わせが指定された場合は、このネームスペース識別子とLBA範囲とによって識別される論理領域のデータ、(iii)特定コマンドによってキー・バリューストアのキーが指定された場合には、このキーによって識別されるバリュー、のいずれかである。
【0100】
GC部243は、セキュアイレーズ対象データを格納しているアクティブブロックをコピー元ブロック52として選択する。セキュアイレーズ対象データを格納しているアクティブブロックは、セキュアイレーズ対象データと、セキュアイレーズ非対象の有効データと、を含むブロックである。
【0101】
GC部243は、フリーブロックリスト35によって管理されているフリーブロックのうちの一つのフリーブロックを選択する。GC部243は、GC部243によるガベージコレクション動作(コピー動作)の実行中に生成されたフリーブロックを優先的に選択してもよい。GC部243は、選択したフリーブロックに対してブロックイレーズを行う。そしてGC部243は、ブロックイレーズが行われたフリーブロックをコピー先ブロック54として割り当てる。
【0102】
GC部243は、コピー元ブロック52に格納されている残りの有効データ、つまりセキュアイレーズ非対象の有効データを、コピー元ブロック52からコピー先ブロック54にコピーする。GC部243は、L2Pテーブル37を更新して、有効データがコピーされたコピー先物理記憶位置を示す物理アドレスを、このコピーされた有効データの論理領域識別子にマッピングする。コピー元ブロック52内のセキュアイレーズ対象データは、アンマップ状態のまま維持される。有効データがコピーされたコピー先ブロック54は、アクティブブロックとなり、アクティブブロックリスト36によって管理される。
【0103】
ライトデータとともにこのライトデータに関連付けられた論理領域識別子がコピー元ブロック52に書き込まれていた場合、GC部243は、コピー対象の有効データとともにこのデータに関連付けられた論理領域識別子を、コピー元ブロック52から読み出してコピー先ブロック54にコピーしてもよい。論理領域識別子は、このデータがコピーされたページと同じページにコピーされてもよい。
【0104】
コピー元ブロック52内の全ての有効データのコピーが完了すると、コピー元ブロック52はフリーブロックとなり、フリーブロックリスト35によって管理される。
【0105】
GC部243は、セキュアイレーズ対象データを格納している別のアクティブブロックを新たなコピー元ブロック52として選択する。GC部243は、セキュアイレーズ非対象の有効データを、新たなコピー元ブロック52からコピー先ブロック54にコピーする。GC部243は、L2Pテーブル37を更新して、有効データがコピーされたコピー先物理記憶位置を示す物理アドレスを、このコピーされた有効データの論理領域識別子にマッピングする。コピー元ブロック52内のセキュアイレーズ対象データは、アンマップ状態のまま維持される。
【0106】
コピー先ブロック54がデータで満たされると、すなわちコピー先ブロック54内の書き込み可能なページがなくなると、GC部243は、フリーブロックリスト35によって管理されているフリーブロックのうちの一つのフリーブロックを選択する。GC部243は、選択したフリーブロックに対してブロックイレーズを行う。そしてGC部243は、ブロックイレーズが行われたフリーブロックを新たなコピー先ブロック54として割り当てる。
【0107】
有効データのコピーが完了したコピー元ブロックは、フリーブロックリスト35によってフリーブロックとして管理されているので、コピー先ブロック54として再利用することができる。GC部243は、コピーによってフリーブロックになったコピー元ブロックをコピー先ブロックとして選択してもよい。この場合、GC部243は、この選択したブロックに対してブロックイレーズを行う。これにより、コピーによってフリーブロックになったコピー元ブロック内のセキュアイレーズ対象データは、消去される。GC部243は、ブロックイレーズが行われたブロックを新たなコピー先ブロック54として割り当てる。そしてGC部243は、セキュアイレーズ非対象の有効データを、コピー元ブロック52からコピー先ブロック54にコピーする。このように、フリーブロックになったコピー元ブロックがコピー先ブロック54として再利用されることにより、このコピー元ブロック内のセキュアイレーズ対象データは、ブロックイレーズによって消去され、さらに、セキュアイレーズ非対象の有効データによってオーバーライトされる。
【0108】
このようにして、GC部243は、コピーによって有効データが格納されていないフリーブロックになったコピー元ブロックに対して少なくともブロックイレーズを行う。
【0109】
セキュアイレーズ対象データを格納している全てのアクティブブロックに対するガベージコレクション動作が完了すると、セキュアイレーズ対象データは、フリーブロック以外のどのブロックにも存在しなくなる。
【0110】
次に、物理的セキュアイレーズ動作において実行される上述したブロックイレーズ動作の例を説明する。
【0111】
セキュアイレーズ部244は、ガベージコレクション動作の実行後、フリーブロックリスト35によって管理されているフリーブロックのうち、セキュアイレーズ対象データを格納している一つ以上の第1のフリーブロックに対して少なくともブロックイレーズを行う。
【0112】
ここで、一つ以上の第1のフリーブロックは、(i)コピーによって有効データが格納されていないフリーブロックになった一つ以上のコピー元ブロックのうち、コピー先ブロックとして使用されなかった一つ以上のブロックと、(ii)ガベージコレクション動作の開始前から存在するフリーブロックであって、セキュアイレーズ対象論理領域の無効データを格納しているフリーブロックのうち、コピー先ブロックとして使用されなかった一つ以上のフリーブロックと、を含む。(ii)におけるセキュアイレーズ対象論理領域の無効データは、セキュアイレーズ対象論理領域のデータのうち、物理的セキュアイレーズ動作の開始前に既に無効化されていたデータを含む。
【0113】
セキュアイレーズ部244は、フリーブロックリスト35によって管理されているフリーブロックから、(i)に該当するフリーブロックと(ii)に該当するフリーブロックを見つけ出す処理を行い、見つけ出したフリーブロックの各々に対して少なくともブロックイレーズを行う。あるいは、セキュアイレーズ部244は、フリーブロックリスト35によって管理されている全てのフリーブロックの各々に対して少なくともブロックイレーズを行ってもよい。
【0114】
この結果、ガベージコレクション動作後にフリーブロックとして残っている各ブロックに格納されているセキュアイレーズ対象データは、少なくともブロックイレーズによってセキュアにイレーズされる。また、コピー先ブロックとして再利用された幾つかのブロックに格納されていたセキュアイレーズ対象データは、オーバーライト(つまり、ブロックイレーズ+セキュアイレーズ非対象の有効データによるオーバーライト)によってセキュアにイレーズされる。
【0115】
なお、セキュアイレーズ部244は、ガベージコレクション動作の実行後、セキュアイレーズ対象データを格納している各フリーブロックに対してブロックイレーズを行い、さらに、各フリーブロックに対してオール0またはオール1またはその組み合わせのような特定のデータパターンを書き込んでもよい。また、セキュアイレーズ部244は、特定のデータパターンに対応する誤り訂正符号を生成して書きこんでもよい。さらに、セキュアイレーズ部244は、ブロックイレーズの前に書かれていた論理領域識別子を、ブロックイレーズが行われたブロックに書き込んでも良い。これによっても、セキュアイレーズ対象データの全てがブロックイレーズと特定のデータパターンによるオーバーライトによってセキュアにイレーズされる。
【0116】
次に、Audit機能について説明する。先に説明したように、セキュアイレーズ対象データがブロックイレーズまたはオーバーライトによってセキュアにイレーズされた場合、セキュアイレーズ対象データが格納されていた物理記憶位置は、他の論理領域のデータを格納しているか、あるいはイレーズ状態である。ホスト2は、セキュアイレーズ対象データに対するセキュアイレーズが正常に実行されたか否かを確認するために、セキュアイレーズ対象論理領域識別子を指定するリードコマンドを発行し得る。Auditモードに遷移されたコントローラ4は、このリードコマンドに基づいて、セキュアイレーズ対象データが格納されていた物理記憶位置からデータを読み出し、読み出したデータをホスト2に送信する。後述するように、この物理記憶位置から読み出されるデータは、例えば、初期データ、オーバーライトに用いられたセキュアイレーズ非対象の有効データ、特定のデータパターンを有するデータ、または、不正なデータである。
【0117】
Audit機能を実現するために、Audit機能実行部245は、Audit機能を伴ったセキュアイレーズ動作を要求する特定コマンドを受信した際に、セキュアイレーズ対象論理領域識別子を保持する。マッピング情報コピー部241は、この特定コマンドに基づくアンマップ動作の前に、セキュアイレーズ対象論理領域に対応するマッピング情報の複製を保持する。マッピング情報コピー部241は、例えば、セキュアイレーズ対象論理領域に対応するマッピング情報の複製を、フリーブロックに有効な管理データとして格納する。
【0118】
Audit機能実行部245は、Audit機能を伴ったセキュアイレーズ動作を要求する特定コマンドに基づくセキュアイレーズ動作の実行後に、コントローラ4をAuditモードに遷移させる。
【0119】
そして、コントローラ4は、Auditモードである間にホスト2からリードコマンドを受信すると、受信したリードコマンドに含まれる論理領域識別子が、保持されているセキュアイレーズ対象論理領域識別子と同じであるか否かを判定する。保持されているセキュアイレーズ対象論理領域識別子と異なる論理領域識別子をリードコマンドが含む場合、コントローラ4は、L2Pテーブル37のマッピング情報によって示される物理アドレスに対応するNAND型フラッシュメモリ5内の物理記憶位置からデータを読み出し、読み出したデータをホスト2に送信する。これにより、コントローラ4は、セキュアイレーズ対象論理領域以外の論理領域を指定するリードコマンドを正常に処理することができる。
【0120】
一方、保持されているセキュアイレーズ対象論理領域識別子と同じ論理領域識別子を受信したリードコマンドが含む場合、コントローラ4は、マッピング情報コピー部241によって保存されたマッピング情報の複製によって示される物理アドレスに対応するNAND型フラッシュメモリ5内の物理記憶位置からデータを読み出し、読み出したデータをホスト2に送信する。
【0121】
この物理アドレスによって示された物理記憶位置がイレーズ状態であるか、あるいはこの物理記憶位置に特定のデータパターンが、この特定のデータパターンに対応する誤り訂正符号なしにオーバーライトされた場合には、ECCエンコード/デコード部17において誤り訂正に失敗し得る。この物理記憶位置には、データとこのデータに整合する誤り訂正符号との組を含む正しい符号語が格納されていないからである。この場合には、コントローラ4は、NAND型フラッシュメモリ5内の物理記憶位置から読み出されたデータそのもの(すなわちエラー訂正前のデータ)をホスト2に送信してもよい。このデータは、例えば、この物理記憶位置がイレーズ状態である場合は初期データ(例えばオール1データ)であり、この物理記憶位置がオーバーライトされた場合には、オーバーライトに用いられた特定のデータパターンである。あるいは、コントローラ4は、アンコレクタブルエラーが起きたことを、受信したリードコマンドに対応する完了応答としてホスト2に送信してもよい。
【0122】
この物理アドレスによって示された物理記憶位置がコピー先ブロック54として再利用されていた場合、または、特定のデータパターンとこれに対応する誤り訂正符号が、論理領域識別子を含まずにこの物理記憶位置にオーバーライトされていた場合、マッピング情報の複製によって示される物理アドレスにマッピングされていた論理領域識別子と、この物理記憶位置からデータとともに読み出された論理領域識別子とは一致しない。この場合、コントローラ4は、読み出されたデータが不正であったことを、受信したリードコマンドに対応する完了応答としてホスト2に送信してもよい。
【0123】
ホスト2は、SSD3から受信される完了応答がエラー(アンコレクタブルエラーまたは不正データ)を示す場合、セキュアイレーズ対象データに対するセキュアイレーズが正常に実行されたことを確認することができる。あるいは、ホスト2は、SSD3から受信されたデータがセキュアイレーズ対象データと異なるデータである場合、セキュアイレーズ対象データに対するセキュアイレーズが正常に実行されたことを確認することができる。ホスト2は、例えば、各論理領域識別子に関連付けられるデータ毎に、ハッシュ値を保持することにより、SSD3から受信されたデータとセキュアイレーズ対象データとが異なるデータであることを検出してもよい。
【0124】
コントローラ4は、Auditモードである間にホスト2からライトコマンドを受信すると、受信したライトコマンドに含まれる論理領域識別子が、保持されているセキュアイレーズ対象論理領域識別子と同じであるか否かを判定する。保持されているセキュアイレーズ対象論理領域識別子と異なる論理領域識別子をライトコマンドが含む場合、コントローラ4は、ライトコマンドに関連付けられたデータを書き込み先ブロック56に書き込み、L2Pテーブル37のマッピング情報を更新する。このとき、マッピング情報コピー部241によって保存されたマッピング情報の複製は、更新されずに維持される。
【0125】
一方、保持されているセキュアイレーズ対象論理領域識別子と同じ論理領域識別子をライトコマンドが含む場合、コントローラ4は、保持されているセキュアイレーズ対象論理領域識別子と、マッピング情報の複製とを破棄し、Auditモードから抜ける。その後、コントローラ4は、ライトコマンドに関連付けられたデータを書き込み先ブロック56に書き込み、L2Pテーブル37のマッピング情報を更新する。これにより、以降に受信されたリードコマンドによってセキュアイレーズ対象論理領域識別子と同じ論理領域識別子が指定された場合、コントローラ4は、新たに書き込み先ブロック56に書き込まれた更新データを読み出して、読み出した更新データをホスト2に送信することができる。
【0126】
また、コントローラ4は、ホスト2からAuditモードの終了を指示するコマンドを受信した場合、保持されているセキュアイレーズ対象論理領域識別子と、マッピング情報の複製とを破棄する。そして、コントローラ4は、Auditモードから抜ける。
【0127】
このようにして、セキュアイレーズ対象データに対するAudit機能が実現される。なお、Audit機能の対象データは、特定コマンドの受信時にセキュアイレーズ対象論理領域識別子に関連付けられているセキュアイレーズ対象データだけで十分である。よって、セキュアイレーズ対象論理領域識別子に以前に関連付けられていたセキュアイレーズ対象データは、Audit機能の対象外である。
【0128】
以下では、上述の特定コマンドとして、特定のネームスペースのデータに対するセキュアイレーズ動作を要求する第1の特定コマンドが使用される場合を想定する。第1の特定コマンドは、セキュアイレーズ対象の論理領域を示す論理領域識別子として、特定のネームスペースを識別するネームスペース識別子(NSID)を使用する。また、第1の特定コマンドは、Audit機能を伴ったセキュアイレーズ動作の実行を要求する。
【0129】
図5は、第1実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順を示すフローチャートである。
【0130】
コントローラ4がホスト2からコマンドを受信すると(ステップS102)、CPU12は、この受信したコマンドが第1の特定コマンドであるか否かを判定する(ステップS104)。
【0131】
受信したコマンドが第1の特定コマンドではない場合(ステップS104でNO)、CPU12は、受信したコマンドに応じた処理を実行する(ステップS106)。
【0132】
受信したコマンドが第1の特定コマンドである場合(ステップS104でYES)、Audit機能実行部245は、受信した第1の特定コマンドに含まれるNSIDを、特定のネームスペース(セキュアイレーズ対象ネームスペース)のNSIDとして保持する(ステップS108)。
【0133】
マッピング情報コピー部241は、セキュアイレーズ対象ネームスペースに対応するマッピング情報の複製を保持する(ステップS110)。具体的には、マッピング情報コピー部241は、L2Pテーブル37に保持されているマッピング情報のうち、セキュアイレーズ対象ネームスペースに対応するマッピング情報の複製を、NAND型フラッシュメモリ5、SRAM16、あるいはDRAM6に格納する。
【0134】
アンマップ部242は、セキュアイレーズ対象ネームスペースの全てのデータを無効化するアンマップ動作を実行する(ステップS112)。
【0135】
ステップS112では、例えば、アンマップ部242は、セキュアイレーズ対象ネームスペースの全てのLBAに対応するL2Pテーブル37のエントリそれぞれから物理アドレスを削除する。又は、アンマップ部242は、これらエントリにNULL値を格納する。このアンマップ動作により、セキュアイレーズ対象ネームスペースに対応する全クラスタは、L2Pテーブル37において無効状態となる。すなわち、セキュアイレーズ対象ネームスペースに対応する全クラスタに関連付けられていたデータは破棄してよいデータであると、内部的に認識される状態となる。この結果、セキュアイレーズ対象ネームスペース内の全てのデータは無効データとなる。
【0136】
ここでは、ステップS110のマッピング情報のコピー動作と、ステップS112のアンマップ動作とがそれぞれ別の手順として実行される場合について説明したが、これらの動作は、同時に実行されてもよい。この場合、マッピング情報コピー部241は、アンマップ動作が実行される直前に、アンマップ対象の論理領域に対応するマッピング情報をNAND型フラッシュメモリ5、SRAM16、あるいはDRAM6にコピーすればよい。
【0137】
あるアクティブブロックに格納されていた全てのデータがセキュアイレーズ対象データであった場合、アンマップ動作の終了時点で、このアクティブブロックは、無効データのみを格納するフリーブロックとなる。
【0138】
あるアクティブブロックがセキュアイレーズ対象データとセキュアイレーズ非対象ネームスペースの有効データと、の双方を格納していた場合、アンマップ動作の終了時点で、このアクティブブロックは、セキュアイレーズ対象データのうちの無効データと、セキュアイレーズ非対象ネームスペースの有効データと、を格納している。
【0139】
セキュアイレーズ対象データ(無効データ)と、セキュアイレーズ非対象ネームスペースの有効データとが混在しているブロックがアクティブブロック群から無くなるように、GC部243は、ガベージコレクション動作(GC動作)を実行する(ステップS114)。
【0140】
GC部243は、少なくとも、セキュアイレーズ対象ネームスペースの無効データを格納しているアクティブブロックの全てをGC対象ブロック(つまりコピー元ブロック)として選択する。セキュアイレーズ対象ネームスペースの無効データを格納しているアクティブブロックは、セキュアイレーズ対象ネームスペースの無効データと、セキュアイレーズ非対象ネームスペースの有効データと、を格納しているブロックである。あるいは、ガベージコレクション動作を簡単に実装する場合には、GC部243は、セキュアイレーズ対象ネームスペースの無効データであるか否かに関わらず、少なくとも無効データを格納するアクティブブロックの全てをコピー元ブロックとして選択してもよい。少なくとも無効データを格納するアクティブブロックは、無効データと、セキュアイレーズ非対象ネームスペースの有効データと、を格納しているブロックである。
【0141】
GC部243は、コピー元ブロックとして選択した各アクティブブロックのブロック識別子を、セキュアイレーズ対象ブロックリスト34に保存してもよい。
【0142】
GC部243は、各ブロックがどのネームスペースのデータを格納しているかを、例えば図6に示すような情報に基づいて調べることができる。
【0143】
図6は、ブロックに書き込まれるデータ構造の例を示す。図6(a)の例では、ネームスペース識別子とLBAのペアと、そのペアによって識別されるデータと、が各ページに書き込まれている。そのため、GC部243は、各ページのネームスペース識別子とLBAのペアを読み出すことにより、当該ページを含むブロックがセキュアイレーズ対象ネームスペースのデータを格納しているか否かを判定することができる。
【0144】
ブロックに書き込まれるデータ構造の他の例では、図6(b)に示すように、図6(a)の情報に加えて、このブロックに格納されているデータに関連付けられたネームスペースのネームスペース識別子のリストがいずれかのページ(例えば最後のページ)に書き込まれている。そのため、GC部243は、各ブロックの全てのページを読むことなく、このリストが格納されている各ブロックのページだけを読み出すことにより、当該ブロックがセキュアイレーズ対象ネームスペースのデータを格納しているか否かを判定することができる。なお、ネームスペース識別子のリストと、このブロックに格納されているデータに関連付けられたLBAのリストと、がこのブロックのいずれかのページに書き込まれていてもよい。
【0145】
図5のステップS114の説明に戻る。GC部243は、フリーブロックの中から任意の1つのフリーブロックを選択する。GC部243は、選択したフリーブロックに対してブロックイレーズを行う。GC部243は、ブロックイレーズが行われたフリーブロックをコピー先ブロック54として割り当てる。
【0146】
GC部243は、セキュアイレーズ対象データを除いたデータのうちの有効データ、すなわちセキュアイレーズ非対象ネームスペースの有効データを、コピー元ブロック52からコピー先ブロック54へコピーする。GC部243は、L2Pテーブル37を更新して、セキュアイレーズ非対象ネームスペースの有効データのLBAそれぞれと、コピー先の物理アドレスそれぞれとをマッピングする。
【0147】
セキュアイレーズ非対象ネームスペースの有効データがコピーされると、コピー元ブロック52内のセキュアイレーズ非対象ネームスペースの有効データは無効データとなる。コピーの前に、セキュアイレーズ対象ネームスペースの全てのLBAがアンマップされているので、コピー動作の実行後、コピー元ブロック52内のデータの全ては、無効データになる。すなわち、コピー元ブロック52に格納されているセキュアイレーズ非対象ネームスペースの全ての有効データがコピー先ブロックにコピーされると、コピー元ブロック52はフリーブロックとなる。よって、全てのコピー元ブロック内のセキュアイレーズ非対象ネームスペースの全ての有効データが幾つかのコピー先ブロックにコピーされると、セキュアイレーズ対象データはフリーブロック以外に存在しなくなる。言い換えると、セキュアイレーズ対象ネームスペースの無効データは幾つかのフリーブロックのみに存在するようになる。
【0148】
GC部243は、ガベージコレクション動作の終了条件が満たされたか否かを判定する(ステップS122)。セキュアイレーズ対象ネームスペースのデータとセキュアイレーズ非対象ネームスペースの有効データとが混在するブロックからの、セキュアイレーズ非対象ネームスペースの有効データに対する全てのコピーが完了すると、セキュアイレーズ対象データ(セキュアイレーズ対象ネームスペースの無効データ)がアクティブブロックから無くなる。すなわち、セキュアイレーズ対象ネームスペースの無効データはフリーブロックのみに存在することになる。そのため、終了条件は、セキュアイレーズ対象ネームスペースの無効データを格納するブロックがアクティブブロック群から存在しなくなったこととしてよい。
【0149】
セキュアイレーズ対象ネームスペースの無効データを格納するブロックがアクティブブロック群から存在しなくなるまで、GC部243は、ステップS114のGC動作を引き続き実行する(ステップS122でNO、ステップS114)。
【0150】
ガベージコレクション動作の終了条件が満たされると(ステップS122でYES)、GC部243は、GC動作を終了する。この時点で、セキュアイレーズ対象ネームスペースの無効データがフリーブロック以外に存在する可能性はなくなっている。
【0151】
セキュアイレーズ部244は、セキュアイレーズ対象ネームスペースの無効データが格納されている各フリーブロックに対して少なくともブロックイレーズ動作を行う(ステップS124)。コピー先ブロックとして再利用されたコピー元ブロックは、ステップS114のガベージコレクション動作によって既にブロックイレーズされている。したがって、ステップS114で行った各コピー元ブロックに対するブロックイレーズ動作とステップS124のブロックイレーズ動作とを合わせることにより、セキュアイレーズ対象ネームスペースのデータの全てがブロックイレーズによってセキュアにイレーズされる。
【0152】
ステップS124では、セキュアイレーズ部244は、セキュアイレーズ対象ネームスペースの無効データが格納されている各フリーブロックに対してブロックイレーズを行い、さらに、これらフリーブロックの各々に特定のデータパターンを書き込んでもよい。この結果、各フリーブロックに格納されているセキュアイレーズ対象ネームスペースの無効データは、特定のデータパターンでオーバーライトされる。コピー元ブロックがコピー先ブロックとして再利用された場合、このコピー元ブロックに格納されていたセキュアイレーズ対象ネームスペースの無効データは、ステップS114のガベージコレクション動作によって、他のネームスペースの有効データで既にオーバーライトされている。したがって、ステップS114でのオーバーライトとステップS124のオーバーライトとを合わせることにより、セキュアイレーズ対象ネームスペースのデータの全てがオーバーライトによってセキュアにイレーズされる。
【0153】
セキュアイレーズ部244は、フリーブロックの全てに対してブロックイレーズを行ってもよい。これにより、セキュアイレーズ対象ネームスペースの無効データが格納されている各フリーブロックに対して少なくともブロックイレーズを行うというステップS124の処理が簡単に実施され得る。
【0154】
あるいは、ブロックイレーズが行われるブロックの個数を減らすために、セキュアイレーズ部244は、セキュアイレーズ対象ネームスペースの無効データが格納されている一つ以上のフリーブロックを特定する処理を実行し、特定された一つ以上のフリーブロックのみに対してブロックイレーズを行ってもよい。
【0155】
前者および後者のいずれにおいても、少なくとも、セキュアイレーズ対象ネームスペースの無効データが格納されている一つ以上のフリーブロックが物理的セキュアイレーズ動作の対象となる。
【0156】
後者の場合であって、且つ、ステップS114においてセキュアイレーズ対象ネームスペースの無効データを格納しているアクティブブロックのみをGC対象ブロックとした場合、セキュアイレーズ部244は、ステップS124の開始時点で存在するフリーブロックを、ステップS114のGC動作によって生成されたフリーブロックのグループI(すなわち、セキュアイレーズ対象ブロックリスト34で管理されているブロックのグループ)と、それ以外のフリーブロックのグループIIとに分類してもよい。セキュアイレーズ部244は、グループIに属する各フリーブロックの内容をチェックすることなく、セキュアイレーズ対象ネームスペースの無効データが格納されているフリーブロックとして容易に特定することができる。セキュアイレーズ部244は、グループIIに属する各フリーブロックの内容をチェックすることによって、これら各フリーブロックが、セキュアイレーズ対象ネームスペースの無効データが格納されているフリーブロックであるか否かを判定することができる。
【0157】
ステップS124の処理が完了すると、イレーズ制御部24は、第1の特定コマンドの完了を示すレスポンスをホスト2に送信することによって、第1の特定コマンドの完了をホスト2に通知する(ステップS126)。
【0158】
そして、Audit機能実行部245は、Audit機能を実行する(ステップS128)。ステップS128では、コントローラ4は、ホスト2から発行されたリードコマンドに応じて、ステップS108で保持されたNSIDおよびステップS110で保持されたマッピング情報の複製を使用して、セキュアイレーズが正常に実行されたか否かを確認可能なデータをホスト2に送信する。ステップS128の手順の詳細については、図7Aおよび図7Bのフローチャートを参照して説明する。
【0159】
図7Aは、第1実施形態に係るメモリシステムにおいて実行されるAudit機能に関する処理の一部の手順を示すフローチャートである。図7Bは、Audit機能に関する処理の残りの手順を示すフローチャートである。
【0160】
Audit機能実行部245は、図5を参照して説明したステップS126で第1の特定コマンドの完了をホスト2に通知すると、図7Aに示すように、コントローラ4をAuditモードに遷移させる(ステップS302)。
【0161】
コントローラ4は、ホスト2からコマンドが受信されたか否かを判定する(ステップS304)。
【0162】
ホスト2からコマンドが受信されていない場合(ステップS304でNO)、コントローラ4は、コマンドが受信されるまで待つ。
【0163】
ホスト2からコマンドが受信されると(ステップS304でYES)、コントローラ4は、受信したコマンドがリードコマンドであるか否かを判定する(ステップS306)。
【0164】
受信したコマンドがリードコマンドである場合(ステップS306でYES)、コントローラ4は、受信したリードコマンドに含まれるNSIDが、図5を参照して説明したステップS108で保持されたセキュアイレーズ対象ネームスペースのNSIDに一致するか否かを判定する(ステップS308)。なお、コントローラ4は、ステップS306とステップS308の実行の順序を入れ替えてもよい。この場合、コントローラ4は、ステップS320の処理を省略してもよい。
【0165】
受信したリードコマンドに含まれるNSIDがセキュアイレーズ対象ネームスペースのNSIDに一致していない場合(ステップS308でNO)、コントローラ4は、L2Pテーブル37のマッピング情報を参照して、受信したリードコマンドに含まれる論理アドレスにマッピングされている物理アドレスをL2Pテーブル37のマッピング情報から取得する(ステップS310)。
【0166】
コントローラ4は、ステップS310で取得した物理アドレスが示すNAND型フラッシュメモリ5内の物理記憶位置からデータを読み出し、読み出したデータをホスト2に送信する(ステップS312)、そして、コントローラ4による処理は、ステップS304に戻る。すなわち、コントローラ4は、次のコマンドを受信するまで待つ。
【0167】
受信したリードコマンドに含まれるNSIDがセキュアイレーズ対象ネームスペースのNSIDに一致した場合(ステップS308でYES)、コントローラ4は、ステップS110で保持されたマッピング情報の複製を参照して、受信したリードコマンドに含まれる論理アドレスにマッピングされている物理アドレスをマッピング情報の複製から取得する(ステップS314)。マッピング情報の複製には、セキュアイレーズ動作の開始前にこの論理アドレスにマッピングされていた物理アドレスが格納されている。
【0168】
コントローラ4は、ステップS314で取得した物理アドレスが示すNAND型フラッシュメモリ5内の物理記憶位置からデータを読み出し、読み出したデータをホスト2に送信する(ステップS316)。そして、コントローラ4による処理は、ステップS304に戻る。
【0169】
受信したコマンドがリードコマンドではない場合(ステップS306でNO)、コントローラ4は、図7Bに示すように、受信したコマンドがライトコマンドであるか否かを判定する(ステップS318)。
【0170】
受信したコマンドがライトコマンドである場合(ステップS318でYES)、コントローラ4は、受信したライトコマンドに含まれるNSIDが、ステップS108で保持されたセキュアイレーズ対象ネームスペースに対応するNSIDに一致するか否かを判定する(ステップS320)。
【0171】
ライトコマンドに含まれるNSIDがセキュアイレーズ対象ネームスペースのNSIDに一致しない場合(ステップS320でNO)、コントローラ4は、ライトコマンドに関連付けられたデータをNAND型フラッシュメモリ5に書き込む(ステップS322)。
【0172】
コントローラ4は、ライトコマンドに関連付けられたデータが書き込まれた物理記憶位置を示す物理アドレスがライトコマンドによって指定された論理アドレスにマッピングされるように、L2Pテーブル37のマッピング情報を更新する(ステップS324)。そして、コントローラ4による処理は、図7AのステップS304に戻る。
【0173】
ライトコマンドに含まれるNSIDがセキュアイレーズ対象ネームスペースのNSIDに一致する場合(ステップS320でYES)、コントローラ4は、マッピング情報の複製と、セキュアイレーズ対象ネームスペースのNSIDと、を破棄する(ステップS326)。そして、コントローラ4は、Auditモードから抜け(ステップS328)、Audit機能を終了する。Auditモードから抜けた後、コントローラ4は、ライトコマンドに関連付けられたデータをNAND型フラッシュメモリ5に書き込む(ステップS330)。コントローラ4は、ライトコマンドに関連付けられたデータが書き込まれた物理記憶位置を示す物理アドレスがライトコマンドによって指定された論理アドレスにマッピングされるように、L2Pテーブル37のマッピング情報を更新する(ステップS332)。
【0174】
受信したコマンドがライトコマンドでない場合(ステップS318でNO)、コントローラ4は、受信したコマンドがAuditモード終了コマンドであるか否かを判定する(ステップS334)。
【0175】
受信したコマンドがAuditモード終了コマンドである場合(ステップS334でYES)、コントローラ4は、マッピング情報の複製と、セキュアイレーズ対象ネームスペースのNSIDとを破棄し(ステップS336)、Auditモードから抜けて(ステップS338)、Audit機能を終了する。
【0176】
受信したコマンドがAuditモード終了コマンドでない場合(ステップS334でNO)、コントローラ4は、受信したコマンドに基づくコマンド処理を実行する(ステップS340)。
【0177】
次に、特定のネームスペースのデータのセキュアイレーズを要求する第1の特定コマンドを受信した時のI/Oコマンドの取り扱いについて説明する。I/Oコマンドの例は、ライトコマンド、リードコマンド、アンマップコマンド、を含む。
【0178】
まず、第1の特定コマンドが受信される前に受信され且つ未完了のI/Oコマンドに対する取り扱いについて説明する。
【0179】
第1の特定コマンドの処理では、セキュアイレーズ対象領域に対応するマッピング情報の複製を保持する動作と、セキュアイレーズ対象データを無効化するアンマップ動作と、が実行される。このため、コントローラ4は、第1の特定コマンドの処理中にセキュアイレーズ対象論理領域に対応するマッピング情報がI/Oコマンドの処理によって更新されるといった事態を防ぐために、セキュアイレーズ対象領域(ここでは、セキュアイレーズ対象ネームスペース)に対する未完了のライトコマンド、およびこのセキュアイレーズ対象ネームスペースに対する未完了のアンマップコマンドをアボートする。
【0180】
あるいは、コントローラ4は、未完了のライトコマンドまたは未完了のアンマップコマンドの処理の完了を待ち、これらのコマンドの処理が完了した後に第1の特定コマンドの実行を開始してもよい。特に、コントローラ4は、これらのコマンドの処理が完了間際であれば、これらのコマンドをアボートせずに、これらのコマンドの処理が完了した後に第1の特定コマンドの実行を開始してもよい。
【0181】
図8は、第1の特定コマンドが受信される前に受信され且つ未完了のI/Oコマンドに対する処理の手順を示すフローチャートである。
【0182】
コントローラ4は、特定のネームスペースのデータのセキュアイレーズを要求する第1の特定コマンドをホスト2から受信する(ステップS702)。コントローラ4は、この特定のネームスペース(セキュアイレーズ対象ネームスペース)に対する実行中のI/Oコマンド、あるいはセキュアイレーズ対象ネームスペースに対する、受信済みで且つまだ実行が開始されていないI/Oコマンド(以下、これらのI/Oコマンドを未完了のコマンドとも称する)が存在するか否かを判定する(ステップS704)。
【0183】
セキュアイレーズ対象ネームスペースに対する未完了のコマンドが存在する場合(ステップS704でYES)、コントローラ4は、未完了のコマンドが、セキュアイレーズ対象論理領域に対応するマッピング情報の更新を引き起こすコマンド(例えばライトコマンドまたはアンマップコマンド)であるかを判定する(ステップS706)。
【0184】
未完了のコマンドがマッピング情報の更新を引き起こすコマンドである場合(ステップS706でYES)、コントローラ4は、このコマンドの処理が完了間際であるか否かを判定する(ステップS708)。
【0185】
このコマンドの処理が完了間際ではない場合(ステップS708でNO)、コントローラ4は、未完了のコマンドをアボートする(ステップS712)。ステップS712で、ホスト2から受信したコマンドを任意の順序(Out of order)で実行することが許されない場合は、コントローラ4は、例えばライトコマンドをアボートした場合には、このライトコマンドの受信後にホスト2から受信した後続の全てのI/Oコマンドをアボートする。
【0186】
未完了のコマンドのアボート後、コントローラ4は、第1の特定コマンドの実行を開始する(ステップS714)。
【0187】
未完了のコマンドの処理が完了間際である場合(ステップS708のYES)、コントローラ4は、未完了のコマンドをアボートせず、未完了のコマンドの処理の完了を待ってもよい(ステップS710、ステップS710でNO)。そして、未完了のコマンドの処理の完了に応じて(ステップS710でYES)、コントローラ4は、第1の特定コマンドの実行を開始する(ステップS714)。
【0188】
セキュアイレーズ対象ネームスペースに対する未完了のコマンドがライトコマンドまたはアンマップコマンドの何れでもない場合、例えばセキュアイレーズ対象ネームスペースに対する未完了のリードコマンドが存在する場合には(ステップS706でNO)、コントローラ4は、未完了のコマンドをアボートせず、未完了のコマンドの処理の完了を待つ(ステップS710、ステップS710でNO)。そして、未完了のコマンドの処理の完了に応じて、コントローラ4は、第1の特定コマンドの実行を開始する(ステップS714)。
【0189】
次に、第1の特定コマンドの実行中に受信されたI/Oコマンドに対する取り扱いについて、図9を参照して説明する。図9は、第1の特定コマンドの実行中に受信されたI/Oコマンドに対する処理の手順を示すフローチャートである。
【0190】
コントローラ4は、特定のネームスペースのデータのセキュアイレーズを要求する第1の特定コマンドを受信し(ステップS802)、第1の特定コマンドの実行を開始する(ステップS804)。第1の特定コマンドの実行中にI/Oコマンドを受信した場合(ステップS806)、コントローラ4は、受信したI/Oコマンドがこの特定のネームスペース(セキュアイレーズ対象ネームスペース)に対するI/Oコマンドであるか否かを判定する(ステップS808)。
【0191】
第1の特定コマンドの実行中に受信したI/Oコマンドがセキュアイレーズ対象ネームスペースに対するI/Oコマンドである場合(ステップS808でYES)、コントローラ4は、受信したI/Oコマンドをアボートする(ステップS810)。あるいは、コントローラ4は、受信したI/Oコマンドの実行を第1の特定コマンドの処理が完了するまで(つまり、第1の特定コマンドの完了がホスト2に通知されるまで)保留し(ステップS810)、第1の特定コマンドの処理の完了後に、受信したI/Oコマンドを実行してもよい。
【0192】
第1の特定コマンドの実行中に受信したI/Oコマンドがセキュアイレーズ対象ネームスペース以外の他のネームスペースに対するI/Oコマンドである場合(ステップS808でNO)、コントローラ4は、以下の第1の方法または第2の方法を選択的に使用することができる。そのため、コントローラ4は、第1の方法または第2の方法の何れを選択するかを判定する(ステップS812)。第1の方法を選択する場合、コントローラ4は、ステップS814の処理を実行する。第2の方法を選択する場合、コントローラ4は、ステップS816の処理を実行する。
【0193】
第1の方法(ステップS814): 他のネームスペースに対するI/Oコマンドがライトコマンドである場合、コントローラ4は、このライトコマンドの実行を、少なくともGC動作が完了するまで保留し、GC動作の完了後にライトコマンドを実行する。
【0194】
他のネームスペースに対するI/Oコマンドがリードコマンドである場合、コントローラ4は、このリードコマンドを通常通り実行する。ただし、ホスト2から受信したコマンドを任意の順序(Out of order)で実行することが許されない場合は、コントローラ4は、他のネームスペースに対するリードコマンドを、これらリードコマンドが受信された順序と同じ順序で実行する。そして、他のネームスペースに対するリードコマンドに後続する、当該他のネームスペースに対するライトコマンドを受信した時点で、この受信したライトコマンドと、この受信したライトコマンドに後続する当該他のネームスペースに対する全てのI/Oコマンドの処理とを、少なくともGC動作が完了するまで保留する。GC動作の完了後に、コントローラ4は、この受信したライトコマンドと、この受信したライトコマンドに後続する当該他のネームスペースに対する全てのI/Oコマンドとを、これらコマンドが受信された順序と同じ順序で実行する。
【0195】
なお、第1の方法の説明において、コントローラ4は、アンマップコマンドをライトコマンドと同様に扱ってもよく、そうでなくてもよい。コントローラ4は、アンマップコマンドをライトコマンドと同様に扱わない場合は、リードコマンドと同様にアンマップコマンドを通常通り実行する。
【0196】
第2の方法(ステップS816): 他のネームスペースに対するI/Oコマンドがライトコマンド、アンマップコマンド、またはリードコマンドである場合、コントローラ4は、このI/Oコマンドを通常通り実行する。この第2の方法では、他のネームスペースに対するI/Oコマンドの処理が大きく遅延することが無いという効果があるが、このI/Oコマンドの処理の分だけ第1の特定コマンドの処理に要する時間が増える。さらに、当該他のネームスペースに対するライトコマンドに関連付けられたライトデータ(更新データ)の書き込みによって発生した無効データまでもがGC動作の対象になってしまう可能性がある。この場合には、第1の特定コマンドの処理に要する時間がさらに増える。
【0197】
次に、図10A図10B図11図12A、及び図12Bを参照して、特定のネームスペースのデータに対するセキュアイレーズ動作の例を説明する。
【0198】
図10Aは、セキュアイレーズ動作の開始前における各アクティブブロックの内容の一例を示す図である。図10Aでは、ブロックBLK0、ブロックBLK1、ブロックBLK2の三つのブロックが、有効データが格納されているアクティブブロックである場合が例示されている。
【0199】
ブロックBLK0は、書き込み先ブロックとして割り当てられている書き込み途中のアクティブブロックである。ブロックBLK0においては、空白で図示される未書き込みの記憶領域が残っている。ブロックBLK1およびブロックBLK2の各々は、ブロックの終端までデータが書き込まれている書き込み済みのアクティブブロックである。
【0200】
コントローラ4が、ネームスペースA、ネームスペースB、ネームスペースCの三つのネームスペースを管理している場合、ネームスペースAのデータ、ネームスペースBのデータ、ネームスペースCのデータ、がブロックBLK0、ブロックBLK1、ブロックBLK2の各々において混在している可能性がある。さらに、ブロックBLK0、ブロックBLK1、ブロックBLK2の各々においては、各ネームスペースの有効データと無効データも混在され得る。
【0201】
図10Bは、セキュアイレーズ動作の開始前における各フリーブロックの内容の一例を示す図である。図10Bでは、ブロックBLK3、ブロックBLK4、ブロックBLK5、ブロックBLK6の四つのブロックが、有効データが格納されていないフリーブロックである場合が例示されている。
【0202】
図10Bでは、フリーブロックBLK3においては、ネームスペースAの無効データとネームスペースCの無効データとが格納されているが、ネームスペースBの無効データは格納されていない。フリーブロックBLK4~BLK6の各々においては、ネームスペースAの無効データ、ネームスペースBの無効データ、及びネームスペースCの無効データが格納されている。
【0203】
不揮発性メモリ5が図10Aに示す三つのアクティブブロックと図10Bに示す四つのフリーブロックを含む状態で、ネームスペースBのデータのセキュアイレーズを要求する第1の特定コマンドをホスト2からSSD3が受信した場合を想定する。
【0204】
この場合、アンマップ部242は、ネームスペースBに属する全てのLBAにそれぞれ関連付けられたデータを無効化するアンマップ動作を実行する。
【0205】
図11は、アンマップ動作が実行された後における各アクティブブロックの内容の一例を示す図である。図11では、太字は、このアンマップ動作によって新たに無効データとなったネームスペースBのデータを示している。
【0206】
アンマップ動作が実行される前は、ブロックBLK0は、図10Aに示されているようにネームスペースBの一つの無効データと、ネームスペースBの二つの有効データを格納していた。図11に示すように、アンマップ動作により、ブロックBLK0中のネームスペースBの二つの有効データの全ては無効データとなる。
【0207】
アンマップ動作が実行される前は、ブロックBLK1は、図10Aに示されているようにネームスペースBの二つの無効データと、ネームスペースBの四つの有効データを格納していた。図11に示すように、アンマップ動作により、ブロックBLK1中のネームスペースBの四つの有効データの全ては無効データとなる。
【0208】
アンマップ動作が実行される前は、ブロックBLK2は、図10Aに示されているようにネームスペースBの三つの無効データと、ネームスペースBの四つの有効データを格納していた。図11に示すように、アンマップ動作により、ブロックBLK2中のネームスペースBの四つの有効データの全ては無効データとなる。
【0209】
アンマップ動作の実行後、GC部243は、ネームスペースBの無効データを格納しているアクティブブロックの全てをGC対象ブロック、つまりコピー元ブロックとして選択し、GC動作を実行する。
【0210】
図11では、アクティブブロックであるブロックBLK0、ブロックBLK1、ブロックBLK2の各々が、ネームスペースBの無効データを格納している。したがって、これらブロックBLK0、ブロックBLK1、ブロックBLK2の三つのアクティブブロックの全てがコピー元ブロックとして選択される。
【0211】
図12Aは、GC動作が実行された後における各アクティブブロックの内容の一例を示す図である。図12Aにおいて、各物理記憶位置内の記号(A)、(B)、(C)は、その物理記憶位置に以前に格納されていたデータに対応するネームスペースがそれぞれネームスペースA、ネームスペースB、ネームスペースCであることを示す。
【0212】
図12Aでは、GC動作前はフリーブロックであったブロックBLK6およびBLK5がGC動作によりコピー先ブロックとして使用され、有効データのコピーによってアクティブブロックになった場合が例示されている。
【0213】
ブロックBLK6は、ブロックBLK1およびブロックBLK2の各々からブロックBLK6への有効データのコピーによって、アクティブブロックになる。このコピーの結果、ブロックBLK1に格納されていたネームスペースAおよびネームスペースCそれぞれの有効データの全てと、ブロックBLK2に格納されていたネームスペースAおよびネームスペースCそれぞれの有効データの全てが、ブロックBLK6に格納される。
【0214】
ブロックBLK5は、ブロックBLK0からブロックBLK5への有効データのコピーによって、アクティブブロックになる。このコピーにより、ブロックBLK0に格納されていたネームスペースAおよびネームスペースCそれぞれの有効データの全てがブロックBLK5に格納される。
【0215】
以下、ブロックBLK6およびBLK5の各々の状態を、図10Bに示すフリーブロックから図12Aに示すアクティブブロックに遷移させるGC動作について説明する。GC部243は、ブロックBLK6に対するブロックイレーズを行う。そしてGC部243は、ネームスペースBのデータを無効化するアンマップ動作の実行後にブロックBLK1に残っている有効データ、つまり、ネームスペースB以外の他のネームスペースの有効データを、ブロックBLK1からブロックBLK6にコピーする。この時GC部243は、ネームスペースB以外の他のネームスペースの有効データがブロックBLK6内の複数の物理記憶位置に連続して配置されるようにコピーする。
【0216】
さらに、GC部243は、ネームスペースBのデータを無効化するアンマップ動作の実行後にブロックBLK2に残っている有効データ、つまり、ネームスペースB以外の他のネームスペースの有効データを、ブロックBLK2からブロックBLK6にコピーする。この時GC部243は、ネームスペースB以外の他のネームスペースの有効データがブロックBLK6内の後続する複数の物理記憶位置に連続して配置されるようにコピーする。
【0217】
これにより、ブロックBLK6は、ブロックBLK1に格納されているネームスペースB以外の他のネームスペースの有効データと、ブロックBLK2に格納されているネームスペースB以外の他のネームスペースの有効データと、で満たされる。この結果、GC動作前はフリーブロックであったブロックBLK6に格納されていたネームスペースBの無効データは、ネームスペースB以外の他のネームスペースの有効データでオーバーライトされたことになる。
【0218】
図12Aにおいて、太字は、ネームスペースBのデータが消去された物理記憶位置を示している。GC動作前はフリーブロックであったブロックBLK6に格納されていたネームスペースBの無効データが、ネームスペースB以外の他のネームスペースの有効データでオーバーライトされている。
【0219】
同様にして、GC部243は、ブロックBLK5に対するブロックイレーズを行う。そしてGC部243は、ネームスペースBのデータを無効化するアンマップ動作の実行後にブロックBLK0に残っている有効データ、つまり、ネームスペースB以外の他のネームスペースの有効データを、ブロックBLK0からブロックBLK5にコピーする。この時GC部243は、ネームスペースB以外の他のネームスペースの有効データがブロックBLK5内の複数の物理記憶位置に連続して配置されるようにコピーする。なお、この例ではブロックBLK5にはデータが最後まで書かれていないが、残りの物理記憶位置を例えばオール0などのダミーデータで埋めても構わない。
【0220】
太字に着目して再び図12Aを参照すると、ブロックBLK5に格納されていたネームスペースBの無効データがネームスペースB以外の他のネームスペースの有効データでオーバーライトされたか、あるいは、その無効データが記憶されていた物理記憶位置はイレーズ状態となっている。
【0221】
以上のGC動作によって、ネームスペースBのデータ(無効データ)を格納しているブロックBLK0~BLK2はフリーブロックとなる。また、新たにアクティブブロックになったブロックBLK5およびブロックBLK6の二つのブロックはネームスペースB以外の他のネームスペースの有効データのみを格納しており、ネームスペースBのデータを格納していない。したがって、セキュアイレーズ対象ネームスペースのデータと、セキュアイレーズ非対象ネームスペース内の有効データとが混在しているブロックは、アクティブブロック群に存在しなくなる。
【0222】
図12Bは、GC動作が実行された後における各フリーブロックの内容の一例を示す図である。GC動作が実行された後は、フリーブロックリスト35によって管理されているフリーブロックには、GC動作によってフリーブロックになった三つのブロック(BLK0、BLK1、BLK2)と、GC動作の開始前からフリーブロックである二つのブロック(BLK3、BLK4)と、が含まれる。
【0223】
フリーブロックBLK0、フリーブロックBLK1、フリーブロックBLK2の各々は、GC動作によってフリーブロックになり、且つGC動作のためのコピー先ブロックとして使用されなかったブロックである。フリーブロックBLK0、フリーブロックBLK1、フリーブロックBLK2は、セキュアイレーズ対象ネームスペースBの無効データを格納しているが、セキュアイレーズ非対象ネームスペースA、Cの有効データを格納していない。そのため、コントローラ4は、フリーブロックBLK0、フリーブロックBLK1、フリーブロックBLK2の各々に対してブロックイレーズを行うことが可能である。
【0224】
コントローラ4は、フリーブロックBLK0、フリーブロックBLK1、フリーブロックBLK2の各々に対してブロックイレーズを行うことにより、セキュアイレーズ対象ネームスペースBのデータをフリーブロックBLK0、フリーブロックBLK1、フリーブロックBLK2の各々からセキュアにイレーズすることができる。
【0225】
なお、GC動作においては、フリーブロックBLK0、フリーブロックBLK1、フリーブロックBLK2の内の任意のブロックを、GC動作のためのコピー先ブロックとして再利用することができる。コピー先ブロックとして再利用されるブロックは、まず、ブロックイレーズされる。そしてコピー先ブロックとして再利用されるブロックに格納されていたセキュアイレーズ対象ネームスペースBのデータは、コピー元ブロックからコピーされるセキュアイレーズ非対象ネームスペースの有効データでオーバーライトされる。このように、コピー先ブロックとして再利用されるブロックに格納されていたセキュアイレーズ対象ネームスペースBのデータは、GC動作中に行われるブロックイレーズ及びオーバーライトによってセキュアにイレーズされる。
【0226】
フリーブロックBLK3は、GC動作の開始前からフリーブロックであり、且つGC動作のためのコピー先ブロックとして使用されなかったブロックである。
【0227】
フリーブロックBLK3は、セキュアイレーズ対象ネームスペースBのデータを格納していない。そのため、コントローラ4は、フリーブロックBLK3に対するブロックイレーズを行う必要が無い。
【0228】
フリーブロックBLK4は、GC動作の開始前からフリーブロックであり、GC動作のためのコピー先ブロックとして使用されなかったブロックである。フリーブロックBLK4は、セキュアイレーズ対象ネームスペースBの無効データを格納している。そのため、フリーブロックBLK4に対するブロックイレーズが行われる。これによってセキュアイレーズ対象ネームスペースBのデータがフリーブロックBLK4からセキュアにイレーズされる。
【0229】
以上説明したように、第1実施形態によれば、特定のネームスペースのデータのセキュアイレーズを要求する第1の特定コマンドをホスト2から受信したことに応じて、セキュアイレーズ対象ネームスペースに対応するマッピング情報の複製を保持する動作が実行される。次いで、セキュアイレーズ対象ネームスペースのデータを無効化するアンマップ動作と、セキュアイレーズ対象ネームスペース以外の他のネームスペースのデータのうちの有効データを、セキュアイレーズ対象ネームスペースのデータが格納されている一つ以上のブロック(コピー元ブロック)から、一つ以上のコピー先ブロックにコピーするGC動作と、が実行される。
【0230】
これにより、セキュアイレーズ対象ネームスペースのデータが格納されている一つ以上のブロックはフリーブロックとなるので、セキュアイレーズ対象ネームスペースのデータはフリーブロック以外には存在しなくなる。
【0231】
コピー元ブロックがフリーブロックになると、このフリーブロックはコピー先ブロックとして再利用可能となる。この場合、このフリーブロックに格納されているセキュアイレーズ対象ネームスペースのデータは、ブロックイレーズによって消去され、さらに、セキュアイレーズ対象ネームスペース以外の他のネームスペースのデータのうちの有効データでオーバーライトされる。
【0232】
このように、第1実施形態では、指定された特定のネームスペースのデータ(有効データおよび無効データ)の一部を、GC動作中にブロックイレーズおよびオーバーライトによってセキュアにイレーズできる。また、GC動作後に一つ以上のフリーブロックに格納されている特定のネームスペースのデータを少なくともブロックイレーズによってセキュアにイレーズできる。結果として、指定された特定のネームスペースのデータ(有効データおよび無効データ)の全てがセキュアにイレーズされる。
【0233】
このようにしてセキュアイレーズ動作が実行された後、コントローラ4は、Auditモードに遷移する。Auditモードにおいて、セキュアイレーズ対象ネームスペースを指定するリードコマンドをホスト2から受信したことに応じて、コントローラ4は、L2Pテーブル37ではなく、保持されているマッピング情報の複製を参照する。これにより、コントローラ4は、セキュアイレーズ動作の開始前にセキュアイレーズ対象ネームスペース内の各論理アドレスにマッピングされていた物理アドレスを取得することができる。コントローラ4は、マッピング情報の複製によって示される物理アドレスに対応するNAND型フラッシュメモリ5内の物理記憶位置からデータを読み出すリード動作を実行する。そして、コントローラ4は、読み出したデータをホスト2に送信する。
【0234】
ホスト2は、Auditモードにおいてコントローラ4から受信したデータと、セキュアイレーズ対象データとを比較することによって、セキュアイレーズ対象データがNAND型フラッシュメモリ5からセキュアにイレーズされたか否かを確認することができる。
【0235】
そして、コントローラ4は、ホスト2からセキュアイレーズ対象ネームスペースを指定するライトコマンドを受信すると、マッピング情報の複製と、保持しているセキュアイレーズ対象ネームスペースを示す情報とを破棄し、Auditモードから抜ける。コントローラ4は、Auditモードから抜けた後に、ライト処理と、L2Pテーブル37のマッピング情報を更新する処理とを実行する。
【0236】
次に、幾つかの比較例と比較して、第1実施形態に係るセキュアイレーズ動作の利点について説明する。
【0237】
まず、幾つかの比較例に係るSSDの構成と第1実施形態に係るSSD3の構成との違いについて説明する。
【0238】
<比較例#1>
比較例#1に係るSSDでは、複数のネームスペースが互いに異なる複数のエンデュランスグループにそれぞれ属するように複数のエンデュランスグループが管理される。エンデュランスグループは、NAND型フラッシュメモリの物理リソースを管理する単位である。NAND型フラッシュメモリ内の各ブロックが一つのエンデュランスグループのみで利用されるように、NAND型フラッシュメモリの全ての物理リソースは複数のエンデュランスグループに分けられる。特定のネームスペースのデータのセキュアイレーズを行う場合には、特定のネームスペースに対応するエンデュランスグループに含まれるブロックそれぞれがセキュアイレーズ対象となる。
【0239】
<比較例#2>
比較例#2に係るSSDでは、NAND型フラッシュメモリの全ての物理リソースは一つのエンデュランスグループのみに属するが、異なるネームスペースのデータが異なるブロックに書き込まれるように複数のネームスペースと複数のブロックとの間の対応関係が一対一で管理される。特定のネームスペースのデータのセキュアイレーズを行う場合には、特定のネームスペースに一対一でマップされたブロックそれぞれがセキュアイレーズ対象となる。
【0240】
<第1実施形態>
第1実施形態に係るSSD3では、複数のネームスペースが管理されるが、NAND型フラッシュメモリの全ての物理リソースは一つのエンデュランスグループのみに属し、且つ複数のネームスペースのデータが同じブロックに混在することが許される。これは、第1実施形態のセキュアイレーズ動作は、複数のネームスペースのデータが同じブロックに混在している環境においても、ホスト2によって指定される特定のネームスペースのデータに対する物理的セキュアイレーズ動作を行うことができるためである。
【0241】
(1)User Data Eraseの速度
第1実施形態に係るSSD3では、ブロックイレーズの前にGC動作を行うことが必要となる。このため、ユーザデータをセキュアイレーズする動作の速度は比較的遅い。ただし、特定のネームスペースのデータをセキュアイレーズするのは、例えばPCを他人に譲る場合にOSのバックアップデータが格納されたネームスペースのデータを維持し、ユーザデータが含まれるネームスペースのデータを消去したいというような場合であり、利用頻度は極めて少ないため、セキュアイレーズの速度が遅いのは許容できる。
【0242】
比較例#1及び比較例#2では、ユーザデータをセキュアイレーズする動作の速度はその実装に依存するが、比較的高速に行うことが可能である。
【0243】
(2)書き込み途中のブロックの個数
ここでは、ホストからのユーザデータをNAND型フラッシュメモリのSLC記憶領域(SLC:シングルレベルセル)に書き込み、SSDのアイドル時などに、SLC記憶領域のユーザデータを、TLC記憶領域(TLC:トリプルレベルセル)またはQLC記憶領域(QLC:クワドレベルセル)に書き込む、という構成が利用されるケースを想定する。
【0244】
第1実施形態に係るSSD3では、必要な書き込み途中のブロックの個数は二つである。二つの書き込み途中のブロックのうちの一つは、SLC記憶領域用の書き込み先ブロックとして使用されるSLCブロックである。もう一つの書き込み途中のブロックは、TLC/QLC記憶領域用の書き込み先ブロックとして使用されるTLC/QLCブロックである。
【0245】
比較例#1及び比較例#2では、必要なSLCブロックの個数はネームスペースの数と等しい。必要なTLC/QLCブロックの個数はネームスペースの数と等しい。
【0246】
(3)オーバープロビジョニング
第1実施形態に係るSSD3及び比較例#2では、オーバープロビジョニング領域は複数のネームスペースによって共有することができる。
【0247】
比較例#1では、オーバープロビジョニング領域をネームスペース毎に個別に用意することが必要となる。
【0248】
(4)SLC記憶領域
第1実施形態に係るSSD3では、SLC記憶領域はネームスペース間で共有されるため、あるネームスペースが一時的にSLC記憶領域の全ての容量を使うことが可能である。
【0249】
比較例#1及び比較例#2では、ネームスペース毎に独立したSLC記憶領域を用意することが必要となる。ネームスペースサイズに関係なく一つのSLC記憶領域に要求される容量が決まっている場合には、TLC/QLC記憶領域用に割り当て可能なブロックの数が減少される。このため、不揮発性メモリの記憶容量を効率よく使用することができなくなり、TLC/QLC記憶領域の記憶容量と全てのSLC記憶領域の記憶容量との和で表されるドライブ容量(Total Capacity)は、ネームスペースの数に比例して減少する。
【0250】
(5)ブロックサイズとネームスペースサイズとの間のアライメント
一般に、一つのブロックのサイズは数十MBである。一方、各ネームスペースのサイズは、セクタの整数倍である。このため、ブロックサイズとネームスペースサイズとの間の不整合が生じる場合がある。
【0251】
第1実施形態に係るSSD3では、一つのブロックが複数のネームスペースによって共有可能であるため、ブロックサイズとネームスペースサイズとの間の不整合が生じても、それによる影響を受けにくく、容量効率は低下しにくい。
【0252】
比較例#1及び比較例#2では、ブロックサイズとネームスペースサイズとの間の不整合が生じると、それによる影響を受け、容量効率が低下する。
【0253】
(6)複数のネームスペースを作成することによるドライブ容量の低下
(2)~(5)の理由により、一つのSSD内に複数のネームスペースを作成した場合には、ドライブ容量が減少する場合がある。
【0254】
第1実施形態に係るSSD3では、一つのエンデュランスグループしか存在しないため、複数のネームスペースを効率よく作成することが可能となる。よって、複数のネームスペースを作成することによるドライブ容量の減少はない。
【0255】
比較例#1では、ネームスペース毎に独立したエンデュランスグループが必要とされるため、複数のネームスペースを作成することによるドライブ容量の減少は大きい。
【0256】
比較例#2では、複数のネームスペースを作成することによるドライブ容量の減少に関する影響の程度は、第1実施形態と比較例#1の中間である。
【0257】
(第2実施形態)
次に、第2実施形態について説明する。第2実施形態に係るSSDの構成は、図1に示した第1実施形態に係るSSD3の構成と同じである。第2実施形態は第1実施形態と同様に、特定のネームスペースのデータに対する物理的セキュアイレーズ動作を行うものであるが、アンマップ動作に関する処理が第1実施形態と異なる。第1実施形態では、コントローラ4は、GC動作の前にアンマップ動作を行う。これに対し、第2実施形態では、コントローラ4は、GC動作の実行中にアンマップ動作を行う。
【0258】
図13は、第2実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順を示すフローチャートである。図5を参照して説明した第1実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順と同じ手順については、その説明を省略する。
【0259】
セキュアイレーズ対象ネームスペースのNSIDが保持されると(ステップS108)、GC部243は、GC動作を実行する。GC動作の実行中に、マッピング情報コピー部241はセキュアイレーズ対象ネームスペースに対応するマッピング情報をコピーする動作を実行し、アンマップ部242はアンマップ動作を実行する(ステップS132)。
【0260】
ステップS132において、GC部243は、セキュアイレーズ対象ネームスペースのデータが有効データであるか無効データであるかに関わらず、少なくともセキュアイレーズ対象ネームスペースのデータ、すなわちセキュアイレーズ対象データを格納しているアクティブブロックをGC対象ブロック(つまりコピー元ブロック)として選択する。あるいは、GC動作を簡単に実装する場合には、GC部243は、セキュアイレーズ対象ネームスペースのデータであるか否かに関わらず、少なくとも無効データを格納するアクティブブロックの全てをコピー元ブロックとして選択してもよい。
【0261】
コピー元ブロックに格納されている有効データがセキュアイレーズ対象データである場合、マッピング情報コピー部241は、コピー元ブロックに格納されているセキュアイレーズ対象データに対応するマッピング情報をL2Pテーブル37からNAND型フラッシュメモリ5等にコピーする動作を実行し、アンマップ部242は、コピー元ブロックに格納されている有効データを無効化するアンマップ動作を実行する。つまり、マッピング情報コピー部241は、コピー元ブロックに格納されている有効データのうち、セキュアイレーズ対象データである有効データが格納されている物理記憶位置を示すマッピング情報の複製を保持する。そして、アンマップ部242は、コピー元ブロックに格納されている有効データのうち、セキュアイレーズ対象データである有効データを無効化するアンマップ動作を行う。これにより、マッピング情報コピー部241は、アンマップ部242によって無効化される直前のセキュアイレーズ対象データに対応するマッピング情報をL2Pテーブル37からNAND型フラッシュメモリ5等にコピーすることができる。コピー元ブロックに格納されているセキュアイレーズ非対象ネームスペースの有効データがコピー先ブロックにコピーされるとともに、コピー元ブロックに格納されているセキュアイレーズ対象ネームスペースの有効データのアンマップ動作も行われると、コピー元ブロックはフリーブロックとなる。これにより、セキュアイレーズ対象データはフリーブロック以外に存在しなくなる。言い換えると、セキュアイレーズ対象ネームスペースのデータ(無効データ)は幾つかのフリーブロックのみに存在するようになる。
【0262】
GC動作と、マッピング情報をコピーする動作と、アンマップ動作と、の実行(ステップS132)の後、第1実施形態と同様に、GC動作の終了条件の判定(ステップS122)、ブロックイレーズ動作の実行(ステップS124)、ホスト2へのコマンド完了の通知(ステップS126)が行われる。そして、Audit機能実行部245は、Audit機能を実行する(ステップS128)。
【0263】
特定のネームスペースのデータのセキュアイレーズを要求する第1の特定コマンドを実行した時におけるI/Oコマンドの取り扱いと、Audit機能に関する処理とは、第1実施形態と同じであるので、説明は省略する。
【0264】
第2実施形態においても、第1実施形態と同様の効果を得ることができる。
【0265】
(第3実施形態)
次に、第3実施形態について説明する。第3実施形態に係るSSDの構成は、図1に示した第1実施形態に係るSSD3の構成と同じである。第1、第2実施形態では、セキュアイレーズ対象の論理領域を示す論理領域識別子としてネームスペース識別子が用いられたが、第3実施形態では、セキュアイレーズ対象の論理領域を示す論理領域識別子として、セキュアイレーズ対象セクタを識別する論理アドレスとその論理アドレスからのセクタ数が使用される。論理アドレスとしては、例えば、LBAが使用される。SSD3が複数のネームスペースを持つ場合は、セキュアイレーズ対象の論理領域を示す論理領域識別子には、セキュアイレーズ対象のネームスペースを示すネームスペース識別子も含まれる。
【0266】
第3実施形態では、セキュアイレーズ対象データは、一つ以上のセキュアイレーズ対象セクタを示す特定の一つ以上のLBAに関連付けられているデータである。この場合、セキュアイレーズ対象データは、そのLBAに現在関連付けられているデータと、そのLBAに以前に関連付けられていたデータと、の双方を含む。
【0267】
第3実施形態で使用される第2の特定コマンドは、特定の一つ以上のLBAに関連付けられたデータ、詳しくは一つ以上のセキュアイレーズ対象セクタを示す特定の一つ以上のLBAに関連付けられているデータのセキュアイレーズを行うことを要求する。第2の特定コマンドは特定の一つ以上のLBAを指定するパラメータを含んでいてもよい。特定の一つ以上のLBAは、LBA範囲によって表されてもよい。また、第2の特定コマンドは、Audit機能を伴ったセキュアイレーズ動作の実行を要求する。
【0268】
ホスト2が複数のLBA範囲をセキュアイレーズ対象とする場合には、ホスト2は、まず、各々がLBA範囲を指定する複数のコマンドをSSD3に送信し、次いで、特定の一つ以上のLBA範囲のセキュアイレーズを要求する第2の特定コマンドをSSD3に送信してもよい。もちろん、第2の特定コマンドが、複数のLBA範囲を指定する複数のパラメータを含んでいてもよい。このように、複数のLBA範囲を指定してセキュアイレーズを要求することで、後述のGC動作が一回で済む。これにより、データのコピー量及びブロックのイレーズ回数を、LBA範囲毎にセキュアイレーズを要求する場合より減らすことができ、メモリセルの摩耗を低減できる。
【0269】
また、ホスト2が特定のネームスペースの特定の一つ以上のLBAまたは特定の一つ以上のLBA範囲をセキュアイレーズ対象とする場合には、ホスト2は、特定のネームスペースを識別するネームスペース識別子と、特定の一つ以上のLBAまたは特定の一つ以上のLBA範囲とを指定してもよい。
【0270】
図14Aは、第3実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順を示すフローチャートである。
【0271】
コントローラ4がホスト2からコマンドを受信すると(ステップS202)、CPU12は、この受信したコマンドが第2の特定コマンドであるか否かを判定する(ステップS204)。第2の特定コマンドは、物理的セキュアイレーズ方法により、特定の一つ以上のLBAのデータのセキュアイレーズを行うことを要求する。
【0272】
受信したコマンドが第2の特定コマンドではない場合(ステップS204でNO)、CPU12は、受信したコマンドに応じた処理を実行する(ステップS206)。
【0273】
受信したコマンドが第2の特定コマンドである場合(ステップS204でYES)、Audit機能実行部245は、受信した第2の特定コマンドに含まれる特定の一つ以上のLBA(例えば特定のLBA範囲)を保持する(ステップS208)。特定の一つ以上のLBAの各々は、セキュアイレーズ対象LBAとも称される。また、特定のLBA範囲は、セキュアイレーズ対象LBA範囲とも称される。
【0274】
マッピング情報コピー部241は、セキュアイレーズ対象LBA(例えばセキュアイレーズ対象LBA範囲)に対応するマッピング情報の複製を保持する(ステップS210)。
【0275】
アンマップ部242は、アンマップ動作を行う(ステップS212)。次に、GC部243は、GC動作を行う(ステップS214)。
【0276】
ここでは、ステップS210のマッピング情報のコピー動作と、ステップS212のアンマップ動作とがそれぞれ別の手順として実行される場合について説明したが、これらの動作は、アンマップ動作が実行される直前にアンマップ対象のLBAに対応するマッピング情報がコピーされるように、一つの動作として、同時に実行されてもよい。
【0277】
また、アンマップ動作(ステップS212)およびGC動作(ステップS214)の手順は、セクタサイズとクラスタサイズの関係によって異なる。図14Bは、セクタサイズがクラスタサイズと等しい場合のアンマップ動作およびGC動作の手順を示すフローチャートである。この手順は、一つのセキュアイレーズ対象セクタが一つのクラスタに対応する場合の手順である。図14Cは、セクタサイズがクラスタサイズより小さい場合におけるアンマップ動作およびGC動作の手順を示すフローチャートである。この場合、有効データを格納している一つのクラスタの一部に少なくとも一つのセキュアイレーズ対象セクタのデータが存在する。
【0278】
図14Bに示すように、セクタサイズがクラスタサイズと等しい場合においては、アンマップ部242は、ホスト2によって指定された全てのセキュアイレーズ対象LBAにそれぞれ関連付けられたデータを無効化するアンマップ動作を行う(ステップS212A)。アンマップ部242は、第2の特定コマンドに含まれる全てのLBAに対応するL2Pテーブル37のエントリそれぞれから物理アドレスを削除する。又は、アンマップ部242は、これらエントリにNULL値を格納する。このアンマップ動作により、セキュアイレーズ対象LBAに対応する全クラスタは、L2Pテーブル37において無効状態となる。この結果、全てのセキュアイレーズ対象LBAに関連付けられたデータは無効データとなる。
【0279】
GC部243は、少なくとも、セキュアイレーズ対象LBAの無効データを格納するアクティブブロックの全てをGC対象ブロック(つまりコピー元ブロック)として選択する。あるいは、GC動作を簡単に実装する場合には、GC部243は、セキュアイレーズ対象LBAの無効データであるか否かに関わらず、少なくとも無効データを格納するアクティブブロックの全てをコピー元ブロックとして選択してもよい。
【0280】
GC部243は、コピー元ブロックとして選択した各アクティブブロックのブロック識別子を、セキュアイレーズ対象ブロックリスト34に保存してもよい。
【0281】
GC部243は、フリーブロックの中から任意の1つのフリーブロックを選択する。GC部243は、選択したフリーブロックに対してブロックイレーズを行う。GC部243は、ブロックイレーズが行われたフリーブロックをコピー先ブロックとして割り当てる。
【0282】
GC部243は、セキュアイレーズ対象データを除いたデータのうちの有効データ、すなわちセキュアイレーズ非対象LBAの有効データを、コピー元ブロックからコピー先ブロックへコピーする(ステップS214A)。
【0283】
GC部243は、L2Pテーブル37を更新して、コピーした有効データのLBAそれぞれと、コピー先の物理アドレスそれぞれとをマッピングする。
【0284】
図14Cを参照して、セクタサイズがクラスタサイズより小さい場合におけるアンマップ動作およびGC動作の手順を説明する。図14Bを参照して説明したアンマップ動作およびGC動作の手順と同じ手順については、その説明を省略する。
【0285】
セクタサイズがクラスタサイズより小さい場合においては、クラスタ内の各セクタのデータが有効か無効かを示すビットマップデータは、上述のように、例えばL2Pテーブル37の中に格納されている。
【0286】
アンマップ部242は、少なくとも一つのセキュアイレーズ対象セクタのデータを含むクラスタを、アンマップ動作の対象として選択し、このクラスタ内の全てのセクタがセキュアイレーズ対象セクタであるか否かを判定する(ステップS212B-1)。
【0287】
クラスタ内の全てのセクタがセキュアイレーズ対象である、すなわちクラスタ内のデータ全体がセキュアイレーズ対象である場合(ステップS212B-1のYES)、アンマップ部242は、このクラスタのデータを無効化するアンマップ動作を実行する(ステップS212B-4)。
【0288】
クラスタに一つ以上のセキュアイレーズ非対象セクタと一つ以上のセキュアイレーズ対象セクタとが含まれる場合(ステップS212B-1のNO)は、アンマップ部242は、当該クラスタ内の全てのセキュアイレーズ対象セクタのデータが無効化されるように、ビットマップデータを更新する(ステップS212B-2)。
【0289】
アンマップ部242は、この無効化により当該クラスタ内の全セクタのデータが無効化されたか否かを判定する(ステップS212B-3)。
【0290】
当該クラスタに含まれている全てのセクタが無効セクタになった場合(ステップS212B-3でYES)は、アンマップ部242は、このクラスタのデータを無効化するアンマップ動作を実行する(ステップS212B-4)。
【0291】
当該クラスタに含まれている全てのセクタが無効セクタになっていない場合、つまり当該クラスタにセキュアイレーズ非対象の有効セクタが含まれている場合(ステップS212B-3でNO)は、アンマップ部242によるこのクラスタに対する処理は終了する。
【0292】
アンマップ部242は、アンマップ動作の対象の全てのクラスタに対するアンマップ動作が終了したか否かを判定する(ステップS212B-5)。
【0293】
アンマップ動作が行われていないクラスタが存在する場合(ステップS212B-5でNO)、アンマップ部242は、次のクラスタに対してステップ212B-1の判定を行う。
【0294】
全てのクラスタに対するアンマップ動作が終了した場合(ステップS212B-5でYES)、GC部243は、アクティブブロック中の有効データ(すなわちセキュアイレーズ非対象のデータ)を含む全クラスタのデータを、コピー元ブロックからコピー先ブロックへコピーする(ステップS214B-1)。
【0295】
なお、ステップS214B-1では、GC部243は、当該クラスタ内に無効セクタがある場合は、そのセクタのデータを適切な値に変更してからコピー先ブロックへコピーする。適切な値とは、例えば、オール0またはオール1、ランダムデータまたはその組み合わせである。
【0296】
GC部243は、L2Pテーブル37のエントリを更新して、コピーされたデータのLBAを、コピーした先のクラスタの物理アドレスにマッピングする。
【0297】
図14Aの説明に戻る。GC動作の実行(ステップS214)の後、第1実施形態と同様に、GC部243は、GC動作の終了条件が満たされたか否かを判定する(ステップS222)。終了条件は、セキュアイレーズ対象LBAの無効データを格納するブロックがアクティブブロック群から存在しなくなったこととしてよい。
【0298】
セキュアイレーズ対象LBAの無効データを格納するブロックがアクティブブロック群から存在しなくなるまで、GC部243は、GC動作を引き続き実行する(ステップS222でNO、ステップS214)。
【0299】
GC動作の終了条件が満たされると(ステップS222でYES)、GC部243は、GC動作を終了する。この時点で、セキュアイレーズ対象LBAの無効データがフリーブロック以外に存在する可能性はなくなっている。
【0300】
なお、セキュアイレーズ対象LBAの無効データであるか否かに関わらず、少なくとも無効データを格納するアクティブブロックの全てをGC対象ブロックとして選択した場合には、セキュアイレーズ対象LBAの無効データであるか否かに関わらず、無効データを格納するブロックがアクティブブロック群から存在しなくなったことをGC動作の終了条件としてもよい。しかしながら、この終了条件はGC動作の効率を低下させる。よって、この終了条件は、全アクティブブロックの各々において有効データに対する無効データの割合が多い場合に採用してもよい。
【0301】
GC動作の終了条件の判定(ステップS222)の後、セキュアイレーズ部244は、セキュアイレーズ対象LBAの無効データが格納されている各フリーブロックに対して少なくともブロックイレーズ動作を行う(ステップS224)。これにより、セキュアイレーズ対象LBAの無効データの全てがブロックイレーズによってセキュアにイレーズされる。
【0302】
ステップS224では、セキュアイレーズ部244は、セキュアイレーズ対象LBAの無効データが格納されている各フリーブロックに対してブロックイレーズを行い、さらに、これら各フリーブロックに第1実施形態と同様に特定のデータパターンを書き込んでもよい。これにより、セキュアイレーズ対象LBAの無効データの全てがオーバーライトによってセキュアにイレーズされる。
【0303】
セキュアイレーズ部244は、セキュアイレーズ対象LBAの無効データを格納しているか否かにかかわらず、フリーブロックの全てに対してブロックイレーズを行ってもよい。これにより、セキュアイレーズ対象LBAの無効データが格納されている各フリーブロックに対して少なくともブロックイレーズを行う処理(ステップS224)が簡単に実施され得る。
【0304】
あるいは、ブロックイレーズが行われるブロックの個数を減らすために、セキュアイレーズ部244は、セキュアイレーズ対象LBAの無効データが格納されている一つ以上のフリーブロックを特定する処理を実行し、特定された一つ以上のフリーブロックのみに対してブロックイレーズを行ってもよい。
【0305】
前者および後者のいずれにおいても、少なくとも、セキュアイレーズ対象LBAの無効データが格納されている一つ以上のフリーブロックがセキュアイレーズ対象となる。
【0306】
ステップS224の処理が完了すると、イレーズ制御部24は、第2の特定コマンドの完了を示すレスポンスをホスト2に送信することによって、第2の特定コマンドの完了をホスト2に通知する(ステップS226)。
【0307】
そして、Audit機能実行部245は、Audit機能を実行する(ステップS228)。Audit機能を実行することによって、コントローラ4は、ホスト2から発行されたリードコマンドに応じて、ステップS208で保持された特定のLBAおよびステップS210で保持されたマッピング情報の複製を使用して、セキュアイレーズが正常に実行されたか否かを確認可能なデータをホスト2に送信する。ステップS228の手順の詳細については、図15のフローチャートを参照して説明する。
【0308】
図15Aおよび図15Bは、第3実施形態に係るメモリシステムにおいて実行されるAudit機能に関する処理の手順を示すフローチャートである。図7Aおよび図7Bを参照して説明した第1実施形態に係るメモリシステムにおいて実行されるAudit機能に関する処理の手順と同じ手順については、その説明を省略する。
【0309】
Audit機能実行部245は、図14Aを参照して説明したステップS226で第2の特定コマンドの完了がホスト2に通知されると、図15Aに示すように、コントローラ4をAuditモードに遷移させる(ステップS302)。
【0310】
ステップS304で受信したコマンドがリードコマンドである場合(ステップS306でYES)、コントローラ4は、受信したリードコマンドに含まれるLBAが、図14Aを参照して説明したステップS208で保持された特定のLBAに一致するか否か、例えば、受信したリードコマンドに含まれるLBAが、ステップS208で保持された特定のLBA範囲に属しているか否かを判定する(ステップS342)。なお、コントローラ4は、ステップS306とステップS342の実行の順序を入れ替えてもよい。この場合、コントローラ4は、ステップS344の処理を省略してもよい。
【0311】
リードコマンドに含まれるLBAが特定のLBAに一致していない場合、例えば、リードコマンドに含まれるLBAが特定のLBA範囲に属していない場合(ステップS342でNO)、コントローラ4は、L2Pテーブル37のマッピング情報を参照して、受信したリードコマンドに含まれるLBAにマッピングされている物理アドレスを取得する(ステップS310)。
【0312】
リードコマンドに含まれるLBAが特定のLBAに一致した場合、例えば、リードコマンドに含まれるLBAが特定のLBA範囲に属している場合(ステップS342でYES)、コントローラ4は、図14Aを参照して説明したステップS210で保持されたマッピング情報の複製を参照して、受信したリードコマンドに含まれるLBAにマッピングされている物理アドレスを取得する(ステップS314)。
【0313】
図15Bに示すように、受信したコマンドがライトコマンドである場合(ステップS318でYES)、コントローラ4は、受信したライトコマンドに含まれるLBAが、ステップS208で保持された特定のLBAに一致するか否か、例えば、受信したライトコマンドに含まれるLBAが、ステップS208で保持された特定のLBA範囲に属しているか否かを判定する(ステップS344)。
【0314】
ライトコマンドに含まれるLBAが特定のLBAに一致しない場合、例えば、ライトコマンドに含まれるLBAが特定のLBA範囲に属していない場合(ステップS344でNO)、コントローラ4は、ステップS322の処理と、ステップS324の処理と、を実行する。
【0315】
ライトコマンドに含まれるLBAが特定のLBAに一致する場合、例えば、ライトコマンドに含まれるLBAが特定のLBA範囲に属している場合(ステップS344でYES)、コントローラ4は、マッピング情報の複製と、特定の一つ以上のLBA(例えば特定のLBA範囲)を示す情報とを破棄する(ステップS346)。そして、コントローラ4は、ステップS328の処理とステップS330の処理とステップS332の処理とを実行する。
【0316】
また、受信したコマンドがAuditモード終了コマンドである場合(ステップS334でYES)、コントローラ4は、マッピング情報の複製と、特定の一つ以上のLBA(例えば特定のLBA範囲)を示す情報とを破棄する(ステップS348)。そして、コントローラ4は、Auditモードから抜けて(ステップS338)、Audit機能を終了する。
【0317】
第2の特定コマンドを受信した時におけるI/Oコマンドの取り扱いについては、第1実施形態と同様であるので、説明は省略する。
【0318】
以上説明したように、第3実施形態によれば、物理的セキュアイレーズ方法により、特定の一つ以上のLBAのデータをセキュアにイレーズすることができる。また、有効データを格納しており且つ一部にセキュアイレーズ対象セクタのデータが存在するクラスタがコピー元ブロックに含まれる場合には、コントローラ4は、このクラスタのデータ全体をコピー先ブロックにコピーする際に、セキュアイレーズ対象セクタのデータをオール1またはオール0のようなデータパターンに変更する。したがって、セキュアイレーズ対象セクタと、セキュアイレーズ非対象の有効なセクタとが混在するクラスタが存在する場合でも、物理的セキュアイレーズ動作の安全性を確保しつつ、セキュアイレーズ非対象の有効なセクタのデータを正しくコピーすることが可能となる。
【0319】
また、コントローラ4は、セキュアイレーズ対象セクタのデータに対するセキュアイレーズ動作が正常に実行されたか否かを確認するAudit機能を実行することができる。
【0320】
(第4実施形態)
次に、第4実施形態について説明する。第4実施形態に係るSSDの構成は、図1に示した第1実施形態に係るSSD3の構成と同じである。第4実施形態は第3実施形態と同様に、特定のLBAのデータのセキュアイレーズを行うものであるが、アンマップ動作に関する処理が第3実施形態と異なる。第3実施形態では、コントローラ4は、GC動作の前にアンマップ動作を行う。これに対し、第4実施形態では、コントローラ4は、GC動作の実行中にアンマップ動作を行う。
【0321】
図16Aは、第4実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順を示すフローチャートである。図14Aを参照して説明した第3実施形態に係るメモリシステムにおいて実行される物理的セキュアイレーズ動作の手順と同じ手順については、その説明を省略する。
【0322】
ステップS202で受信した第2の特定コマンドに含まれる、セキュアイレーズ対象LBA(例えばセキュアイレーズ対象LBA範囲)が保持されると(ステップS208)、GC部243は、GC動作を実行する。GC動作の実行中に、マッピング情報コピー部241はセキュアイレーズ対象LBA(例えばセキュアイレーズ対象LBA範囲)に対応するマッピング情報をコピーする動作を実行し、アンマップ部242はアンマップ動作を実行する(ステップS232)。
【0323】
第3実施形態と同様に、GC動作と、マッピング情報をコピーする動作と、アンマップ動作と、を含むステップS232の手順は、セクタサイズとクラスタサイズの関係によって異なる。
【0324】
図16Bは、セクタサイズがクラスタサイズと等しい場合におけるGC動作とアンマップ動作の手順を示すフローチャートである。この手順は、一つのセキュアイレーズ対象セクタが一つのクラスタに対応する場合の手順である。
【0325】
ステップS232A-1において、GC部243は、セキュアイレーズ対象LBAのデータが有効データであるか無効データであるかに関わらず、少なくともセキュアイレーズ対象LBAのデータと、セキュアイレーズ非対象LBAの有効データとを格納しているアクティブブロックをGC対象ブロック(つまりコピー元ブロック)として選択する。あるいは、GC動作を簡単に実装する場合には、GC部243は、セキュアイレーズ対象LBAのデータであるか否かに関わらず、無効データを格納しているアクティブブロックの全てをコピー元ブロックとして選択してもよい。GC部243は、セキュアイレーズ非対象LBAの有効データを、コピー元ブロックからコピー先ブロックへコピーする。
【0326】
ステップS232A-2において、マッピング情報コピー部241は、セキュアイレーズ対象LBAの有効データがコピー元ブロックに格納されている場合、コピー元ブロックに格納されているセキュアイレーズ対象データに対応するマッピング情報をコピーする動作を実行する。アンマップ部242は、コピー元ブロックに格納されている有効データを無効化するアンマップ動作を実行する。これにより、マッピング情報コピー部241は、無効化される直前のマッピング情報をコピーすることができる。コピー元ブロックに格納されているセキュアイレーズ非対象LBAの有効データがコピー先ブロックにコピーされるとともに、コピー元ブロックに格納されているセキュアイレーズ対象LBAの有効データを無効化するアンマップ動作も行われると、コピー元ブロックはフリーブロックとなる。これにより、セキュアイレーズ対象LBAのデータはフリーブロック以外に存在しなくなる。言い換えると、セキュアイレーズ対象LBAのデータ(無効データ)は幾つかのフリーブロックのみに存在するようになる。
【0327】
図16Cは、セクタサイズがクラスタサイズより小さい場合におけるGC動作とアンマップ動作の手順を示すフローチャートである。この場合、クラスタ内の各セクタのデータが有効か無効かを示すビットマップデータは、上述のように、例えばL2Pテーブル37の中に格納されている。
【0328】
マッピング情報コピー部241、アンマップ部242、およびGC部243は、有効セクタを少なくとも一つ含むクラスタを、マッピング情報をコピーする動作、アンマップ動作、およびGC動作の対象として選択し、このクラスタ内の全てのセクタがセキュアイレーズ対象セクタであるか否かを判定する(ステップS232B-1)。
【0329】
処理対象のクラスタが少なくとも一つのセキュアイレーズ対象セクタを含む場合(ステップS232B-1でYES)、マッピング情報コピー部241は、処理対象のクラスタに対応するマッピング情報の複製を保持する(ステップS232B-2)。
【0330】
アンマップ部242は、当該クラスタ内の全てのセキュアイレーズ対象セクタのデータが無効化されるように、ビットマップデータを更新する(ステップS232B-3)。
【0331】
アンマップ部242は、この無効化により当該クラスタ内の全セクタのデータが無効化されたか否かを判定する(ステップS232B-4)。
【0332】
当該クラスタ内の全セクタのデータが無効化された場合(ステップS232B-4でYES)、アンマップ部242は、そのクラスタのデータを無効化するアンマップ動作を実行する(ステップS232B-5)。
【0333】
ステップS232B-5の後、当該クラスタに無効化されなかったセクタが含まれる場合(すなわち当該クラスタが一つ以上のセキュアイレーズ非対象セクタの有効データを格納している場合)(ステップS232B-4でNO)、または処理対象のクラスタがセキュアイレーズ対象セクタを含まない場合(ステップS232B-1でNO)、GC部243は、当該クラスタ中の有効データ(すなわち一つ以上のセキュアイレーズ非対象セクタの有効データ)を、コピー元ブロックからコピー先ブロックへコピーする(ステップS232B-6)。この時GC部243は、第3実施形態と同様に、当該クラスタ中の無効化されたセクタのデータを適切な値に置き換える。ステップS232B-5では、クラスタ内の全てのセクタが有効の場合は、GC部243は、全セクタのデータをコピー先ブロックへコピーする、GC部243は、L2Pテーブル37を更新して、コピー元のクラスタの物理アドレスを、コピー先のクラスタの物理アドレスに更新する。
【0334】
GC部243は、有効セクタを含むクラスタの全てについて、マッピング情報をコピーする動作と、アンマップ動作と、GC動作とが終了したかを判定する(ステップS232B-7)。
【0335】
これら動作が終了していないクラスタが存在する場合(ステップS232B-7でNO)、GC部243は、これら動作が終了していない次のクラスタに対してステップS232B-1の判定を行う。
【0336】
全てのクラスタについて、マッピング情報をコピーする動作と、アンマップ動作と、GC動作とが終了した場合(ステップS232B-7でYES)、GC部243による処理は、ステップS222へ進む。
【0337】
最終的に、全有効データはコピー先ブロックにコピーされ、コピー元ブロックはフリーブロックとなる。これにより、セキュアイレーズ対象LBAのデータはフリーブロック以外に存在しなくなる。言い換えると、セキュアイレーズ対象LBAのデータ(無効データ)は幾つかのフリーブロックのみに存在するようになる。
【0338】
図16Aの説明に戻る。GC動作の実行(ステップS232)の後、第3実施形態と同様に、GC動作の終了条件の判定(ステップS222)、ブロックイレーズ動作の実行(ステップS224)、ホスト2へのコマンド完了の通知(ステップS226)、およびAudit機能(ステップS228)が実行される。
【0339】
第2の特定コマンドを実行した時におけるI/Oコマンドの取り扱い、およびAudit機能に関する処理は、第3実施形態と同じであるので、説明は省略する。
【0340】
第4実施形態においても、第3実施形態と同様の効果を得ることができる。
【0341】
以上説明したように、第1~第4実施形態によれば、GC動作を使用したセキュアイレーズ動作によって、セキュアイレーズ対象論理領域の論理領域識別子に関連付けられているセキュアイレーズ対象データを、セキュアにイレーズすることができ、且つ、GC動作を使用したセキュアイレーズ動作の完了後に、セキュアイレーズ対象データのセキュアイレーズが正しく実行されたか否かを確認するAudit機能を実行することができる。
【0342】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0343】
例えばコントローラ4は、特定コマンドを受信したことを示す完了応答と、特定コマンドの実行が完了したことを示す完了応答とを、別な手段を用いてホスト2へ送信してもよい。
【符号の説明】
【0344】
1…情報処理システム、2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、6…DRAM、11…ホストインタフェース、12…CPU、13…NANDインタフェース、14…DRAMインタフェース、15…DMAC、16…SRAM、17…ECCエンコード/デコード部、21…ネームスペース管理部、22…ライト制御部、23…リード制御部、24…イレーズ制御部、31…ライトバッファ、32…リードバッファ、33…コマンドバッファ、34…セキュアイレーズ対象ブロックリスト、35…フリーブロックリスト、36…アクティブブロックリスト、37…L2Pテーブル、241…マッピング情報コピー部、242…アンマップ部、243…GC部、244…セキュアイレーズ部、245…Audit機能実行部。
図1
図2
図3
図4
図5
図6
図7A
図7B
図8
図9
図10A
図10B
図11
図12A
図12B
図13
図14A
図14B
図14C
図15A
図15B
図16A
図16B
図16C