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

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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022114726
(43)【公開日】2022-08-08
(54)【発明の名称】メモリシステムおよび制御方法
(51)【国際特許分類】
   G06F 12/00 20060101AFI20220801BHJP
   G06F 12/02 20060101ALI20220801BHJP
【FI】
G06F12/00 550Z
G06F12/00 597U
G06F12/02 530E
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2021011137
(22)【出願日】2021-01-27
(71)【出願人】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】特許業務法人スズエ国際特許事務所
(72)【発明者】
【氏名】江坂 直紀
(72)【発明者】
【氏名】菅野 伸一
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA09
5B160NA02
(57)【要約】
【課題】不揮発性メモリの消耗を低減可能なメモリシステムを実現する。
【解決手段】コントローラは、第1の属性を指定する第1のネームスペース作成コマンドをホストから受信したことに応じ、第1の論理アドレス範囲を含み第1の属性を有する第1のネームスペースを作成する。電源断予告通知をホストから受信するかまたは不正電源断を検出してから、メモリシステムに電力が再び供給されてコントローラがレディー状態になるまでの第1の期間に、コントローラは、第1の論理アドレス範囲に含まれる論理アドレスの各々を、不揮発性メモリの物理アドレスがマッピングされていない未割り当て状態にする。
【選択図】図12
【特許請求の範囲】
【請求項1】
ホストに接続可能なメモリシステムであって、
不揮発性メモリと、
前記不揮発性メモリに電気的に接続されたコントローラと、を具備し、
前記コントローラは、
第1の属性を指定する第1のネームスペース作成コマンドを前記ホストから受信したことに応じ、第1の論理アドレス範囲を含み前記第1の属性を有する第1のネームスペースを作成し、
前記メモリシステムへの電力の供給が断たれることを予告する電源断予告通知を前記ホストから受信するかまたは前記メモリシステムの不正電源断を検出してから、前記メモリシステムに電力が再び供給されて前記コントローラが前記ホストからのコマンドを処理可能なレディー状態になるまでの第1の期間に、前記第1の論理アドレス範囲に含まれる論理アドレスの各々を、前記不揮発性メモリの物理アドレスがマッピングされていない未割り当て状態にするように構成されている
メモリシステム。
【請求項2】
前記第1の属性は、前記第1の論理アドレス範囲に関連付けられたデータを前記メモリシステムの電源サイクルに跨って保持することが必要とされないことを示す
請求項1に記載のメモリシステム。
【請求項3】
前記コントローラは、前記第1の属性を示す属性情報と関連付けて前記第1のネームスペースを識別するための第1のネームスペース識別子を管理する、ようにさらに構成されている
請求項1に記載のメモリシステム。
【請求項4】
前記コントローラは、前記第1の期間内で、前記メモリシステムに電力が再び供給されてから前記コントローラが前記レディー状態になるまでの期間に、前記第1の論理アドレス範囲に含まれる論理アドレスの各々を前記未割り当て状態にする、ように構成されている
請求項1に記載のメモリシステム。
【請求項5】
前記コントローラは、前記第1の期間内で、前記電源断予告通知を前記ホストから受信してから前記メモリシステムへの電力の供給が絶たれるまでの期間に、前記第1の論理アドレス範囲に含まれる論理アドレスの各々を前記未割り当て状態にする、ように構成されている
請求項1に記載のメモリシステム。
【請求項6】
前記コントローラは、
前記第1の論理アドレス範囲に含まれる論理アドレスそれぞれと前記不揮発性メモリの物理アドレスそれぞれとの間のマッピングを管理するための第1の論理物理アドレス変換テーブルを管理し、
前記第1のネームスペースを識別するための第1のネームスペース識別子を指定する第1のライトコマンドを前記ホストから受信したことに応じ、
前記第1のライトコマンドに関連付けられた第1のデータを前記不揮発性メモリに書き込み、
前記第1のデータに対応する第1の論理アドレスに、前記第1のデータが書き込まれた前記不揮発性メモリ内の物理記憶位置を示す第1の物理アドレスがマッピングされるように前記第1の論理物理アドレス変換テーブルを更新する、ようにさらに構成されている
請求項1に記載のメモリシステム。
【請求項7】
前記コントローラは、前記第1の論理物理アドレス変換テーブルを初期状態に設定するかまたは破棄することによって、前記第1の論理アドレス範囲に含まれる論理アドレスの各々を前記未割り当て状態にする、ように構成されている
請求項6に記載のメモリシステム。
【請求項8】
前記第1の論理物理アドレス変換テーブルは複数の階層レベルに対応する複数のテーブルを含み、前記複数のテーブルの各々は一つ以上のアドレス変換データを含み、各階層レベルのテーブルに含まれる一つ以上のアドレス変換データの各々は、上位階層レベルに対応する各アドレス変換テーブルが下位階層レベルに対応する各アドレス変換データよりも広い論理アドレス範囲をカバーするように、各階層レベルに応じた論理アドレス範囲をカバーしており、
前記コントローラは、前記複数の階層レベルのうちの最上位階層レベルのテーブルを初期状態に設定するかまたは破棄することによって、前記第1の論理アドレス範囲に含まれる論理アドレスの各々を前記未割り当て状態にする、ように構成されている
請求項6に記載のメモリシステム。
【請求項9】
揮発性メモリをさらに具備し、
前記コントローラは、
前記第1の論理物理アドレス変換テーブルに含まれるアドレス変換データを前記不揮発性メモリから前記揮発性メモリにロードし、
前記第1のライトコマンドの実行に応じ、前記揮発性メモリに格納されているアドレス変換データを更新し、
前記電源断予告通知を前記ホストから受信した場合に、前記不揮発性メモリに格納されている前記第1の論理物理アドレス変換テーブルにまだ反映されていない前記揮発性メモリ内の更新されたアドレス変換データを前記不揮発性メモリに書き込まずに、前記第1の期間に、前記第1の論理アドレス範囲に含まれる前記論理アドレスの各々を前記未割り当て状態にする、ようにさらに構成されている
請求項6に記載のメモリシステム。
【請求項10】
前記コントローラは、
前記メモリシステムの電源状態をオン状態から前記ホストのサスペンド状態に対応する低電力状態に遷移させるための指示を前記ホストから受信したことに応じ、前記不揮発性メモリに格納されている前記第1の論理物理アドレス変換テーブルにまだ反映されていない前記揮発性メモリ内の更新されたアドレス変換データを前記不揮発性メモリに書き込む、ようにさらに構成されている
請求項9に記載のメモリシステム。
【請求項11】
前記コントローラは、
前記第1の属性を指定しない第2のネームスペース作成コマンドを前記ホストから受信したことに応じ、第2の論理アドレス範囲を含むネームスペースであって前記第2の論理アドレス範囲に関連付けられたデータを前記メモリシステムの電源サイクルに跨って保持することが必要な第2の属性を有する第2のネームスペースを作成し、
前記第2の論理アドレス範囲に含まれる論理アドレスそれぞれと前記不揮発性メモリの物理アドレスそれぞれとの間のマッピングを管理するための第2の論理物理アドレス変換テーブルを管理し、
前記第2の論理物理アドレス変換テーブルに含まれる第2のアドレス変換データをさらに前記不揮発性メモリから前記揮発性メモリにロードし、
前記第2のネームスペースを識別するための第2のネームスペース識別子を指定する第2のライトコマンドの実行に応じ、前記揮発性メモリに格納されている前記第2のアドレス変換データを更新し、
前記電源断予告通知を前記ホストから受信したこと応じ、前記不揮発性メモリに格納されている前記第2の論理物理アドレス変換テーブルにまだ反映されていない前記揮発性メモリ内の更新された前記第2のアドレス変換データを前記不揮発性メモリに書き込む、ようにさらに構成されている
請求項9に記載のメモリシステム。
【請求項12】
前記コントローラは、
前記第1の属性を指定しない第2のネームスペース作成コマンドを前記ホストから受信したことに応じ、第2の論理アドレス範囲を含むネームスペースであって前記第2の論理アドレス範囲に関連付けられたデータを前記メモリシステムの電源サイクルに跨って保持することが必要な第2の属性を有する第2のネームスペースを作成し、
前記第2の論理アドレス範囲に含まれる論理アドレスそれぞれと前記不揮発性メモリの物理アドレスそれぞれとの間のマッピングを管理するための第2の論理物理アドレス変換テーブルを管理し、
前記第2の論理物理アドレス変換テーブルに含まれる第2のアドレス変換データをさらに前記不揮発性メモリから前記揮発性メモリにロードし、
前記第2のネームスペースを識別するための第2のネームスペース識別子を指定する第2のライトコマンドの実行に応じ、前記揮発性メモリに格納されている前記第2のアドレス変換データを更新し、
前記第2の論理物理アドレス変換テーブルに関しては、(1)チェックポイントの度に、前記不揮発性メモリに格納されている前記第2の論理物理アドレス変換テーブルにまだ反映されていない前記揮発性メモリ内の更新された前記第2のアドレス変換データを前記不揮発性メモリに書き込む動作と、(2)前記チェックポイントの度に、前記第2のネームスペース用の書き込み先ブロックとして現在割り当てられている第1のブロックに対して付与されたシーケンス番号を、前記不揮発性メモリに格納されている前記第2の論理物理アドレス変換テーブルの復元処理のために使用すべきブロック群を特定するための情報として、前記不揮発性メモリに書き込む動作と、を含む復元準備処理を実行し、
前記第1の論理物理アドレス変換テーブルに関しては、(3)前記チェックポイントの度に、前記不揮発性メモリに格納されている前記第1の論理物理アドレス変換テーブルにまだ反映されていない前記揮発性メモリ内の更新された前記アドレス変換データを前記不揮発性メモリに書き込む動作と、(4)前記チェックポイントの度に、前記第1のネームスペース用の書き込み先ブロックとして現在割り当てられている第2のブロックに対して付与されたシーケンス番号を、前記不揮発性メモリに格納されている前記第1の論理物理アドレス変換テーブルの復元処理のために使用すべきブロック群を特定するための情報として、前記不揮発性メモリに書き込む動作と、を含む復元準備処理の実行を省略する、ようにさらに構成され、
前記第1のブロックに付与された前記シーケンス番号は、前記第1のブロックが前記第2のネームスペース用の書き込み先ブロックとして割り当てられた順序を示し、前記第2のブロックに付与された前記シーケンス番号は、前記第2のブロックが前記第1のネームスペース用の書き込み先ブロックとして割り当てられた順序を示す
請求項9に記載のメモリシステム。
【請求項13】
不揮発性メモリを含むメモリシステムを制御する制御方法であって、
第1の属性を指定する第1のネームスペース作成コマンドをホストから受信したことに応じ、第1の論理アドレス範囲を含むネームスペースであって、前記第1の論理アドレス範囲に関連付けられたデータを前記メモリシステムの電源サイクルに跨って保持することが必要とされない第1のネームスペースを作成することと、
前記メモリシステムへの電力の供給が断たれることを予告する電源断予告通知を前記ホストから受信するかまたは前記メモリシステムの不正電源断を検出してから、前記メモリシステムに電力が再び供給されて前記メモリシステム内のコントローラが前記ホストからのコマンドを処理可能なレディー状態になるまでの第1の期間に、前記第1の論理アドレス範囲に含まれる論理アドレスの各々を、前記不揮発性メモリの物理アドレスがマッピングされていない未割り当て状態にすることと、
を具備する制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、不揮発性メモリを制御する技術に関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一つとして、NAND型フラッシュメモリを備えるソリッドステートドライブ(SSD)が知られている。
【0003】
高速なデータの入出力が可能なSSDのようなストレージデバイスは、その高い性能から、スワップ領域としても有効利用されている。スワップ領域は、ホストにおいて実行されるオペレーティングシステムのスワッピング機能によってホストのメモリからスワップアウトされたデータを一時的に退避するために使用される記憶領域である。SSDでは、ホストのメモリからSSDにスワップアウトされたデータを不揮発に記憶するための処理が実行される。これによって、このスワップアウトされたデータは、SSDの電源サイクルを跨いでSSD内に保持されることになる。
【0004】
しかしながら、スワップ領域に求められるのは、ホストに設けられた揮発性のメモリと同様に、記憶されたデータを、ホストの電源がオンである間だけ保持することである。このため、ホストのメモリからスワップアウトされたデータをSSDの電源サイクルを跨いでSSD内に保持することは、ホストによってもはや使用されないデータをSSD内に保持し続けることになる。これによって、SSD内の不揮発性メモリの不必要な消耗が引き起こされ得る。
【0005】
したがって、不揮発性メモリの消耗を低減可能な新たな技術の実現が求められている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2009-223787号公報
【特許文献2】特許第6320322号公報
【特許文献3】米国特許第9,563,566号明細書
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の一実施形態が解決しようとする課題は、不揮発性メモリの消耗を低減可能なメモリシステムおよび制御方法を提供することである。
【課題を解決するための手段】
【0008】
実施形態によれば、ホストに接続可能なメモリシステムは、不揮発性メモリと、不揮発性メモリに電気的に接続されたコントローラと、を具備する。コントローラは、第1の属性を指定する第1のネームスペース作成コマンドをホストから受信したことに応じ、第1の論理アドレス範囲を含み第1の属性を有する第1のネームスペースを作成する。コントローラは、メモリシステムへの電力の供給が断たれることを予告する電源断予告通知をホストから受信するかまたはメモリシステムの不正電源断を検出してから、メモリシステムに電力が再び供給されてコントローラがホストからのコマンドを処理可能なレディー状態になるまでの第1の期間に、第1の論理アドレス範囲に含まれる論理アドレスの各々を、不揮発性メモリの物理アドレスがマッピングされていない未割り当て状態にする。
【図面の簡単な説明】
【0009】
図1】実施形態に係るメモリシステムを含む情報処理システムの構成例を示すブロック図。
図2】実施形態に係るメモリシステム内のNAND型フラッシュメモリの構成例を示す図。
図3】実施形態に係るメモリシステムにおいて管理される論理物理アドレス変換テーブルの構成例を示す図。
図4】実施形態に係るメモリシステムにおいて管理される複数のネームスペースを説明するための図。
図5】実施形態に係るメモリシステムにおいて管理されるネームスペース管理テーブルを示す図。
図6】実施形態に係るメモリシステムにおいて管理されるブロック管理テーブルを示す図。
図7】実施形態に係るメモリシステムにおいて管理されるブロック使用順序管理テーブルを示す図。
図8】実施形態に係るメモリシステムに含まれるNAND型フラッシュメモリに書き込まれるデータについて説明するための図。
図9A】実施形態に係るメモリシステムにおいて実行される、論理物理アドレス変換テーブルの復元準備処理について説明するための一つ目の図。
図9B】実施形態に係るメモリシステムにおいて実行される、論理物理アドレス変換テーブルの復元準備処理について説明するための二つ目の図。
図10】実施形態に係るメモリシステムにおいて実行される、クリアー属性を有するネームスペースを作成する動作と、クリアー属性を有するネームスペースに関連付けられている論理物理アドレス変換テーブルのための復元準備処理を省略する動作とを説明するための図。
図11】実施形態に係るメモリシステムにおいて実行されるクリアー処理について説明するための図。
図12】実施形態に係るメモリシステムにおいて実行される、クリアー属性を持つネームスペースに関連付けられた論理物理アドレス変換テーブルを初期状態に設定または破棄する動作について説明するための図。
図13】実施形態に係るメモリシステムにおいて実行される、クリアー属性を有するネームスペースに関連付けられていたブロックの各々をフリーブロックとして管理する動作について説明するための図。
図14】ホストにおいて実行される、クリアー属性を有するネームスペースを再フォーマットする処理について説明するための図。
図15】実施形態に係るメモリシステムにおいて実行されるネームスペース作成処理の手順を示すフローチャート。
図16】実施形態に係るメモリシステムにおいて実行される復元準備処理の手順を示すフローチャート。
図17】ホストから電源断予告通知を受信してから、メモリシステムに電力が再び供給されてメモリシステムのコントローラがレディー状態になるまでの期間に、実施形態に係るメモリシステムにおいて実行される処理の手順を示すフローチャート。
図18】不正電源断の検出から、メモリシステムに電力が再び供給されてメモリシステムのコントローラがレディー状態になるまでの期間に、実施形態に係るメモリシステムにおいて実行される処理の手順を示すフローチャート。
図19】実施形態に係るメモリシステムにおいて実行されるシャットダウン準備処理の手順を示すフローチャート。
図20】実施形態に係るメモリシステムにおいて実行されるサスペンド準備処理の手順を示すフローチャート。
図21】実施形態に係るメモリシステムにおいて実行されるクリアー処理の手順を示すフローチャート。
図22】メモリシステムに電力が再び供給された後に、実施形態に係るメモリシステムとホストとにおいて実行される処理の手順を示すフローチャート。
【発明を実施するための形態】
【0010】
以下、図面を参照して、実施形態を説明する。
図1は、実施形態に係るメモリシステムを含む情報処理システム1の構成例を示すブロック図である。情報処理システム1は、ホスト(ホストデバイス)2と、SSD3とを含む。
【0011】
メモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。メモリシステムは、例えば、NAND型フラッシュメモリ5を含むSSD3として実現され得る。
【0012】
SSD3は、ホスト2にケーブルまたはネットワークを介して接続されてもよい。あるいは、SSD3は、ホスト2に内蔵されてもよい。ホスト2とSSD3とを接続するための論理インタフェースの規格としては、NVM ExpressTM(NVMeTM)、Serial Attached SCSI(SAS)、またはSerial ATA(SATA)などが使用され得る。
【0013】
ホスト2は、SSD3を制御するように構成された情報処理装置である。ホスト2の例には、パーソナルコンピュータ、サーバコンピュータ、携帯端末、車載機器、が含まれる。
【0014】
ホスト2は、プロセッサ101と、メモリ102とを含む。プロセッサ101は、ホスト2内の各コンポーネントの動作を制御するように構成されたCPU(Central Processing Unit)である。プロセッサ101は、ホスト2に接続される他のストレージデバイスまたはSSD3からメモリ102にロードされるソフトウェア(ホストソフトウェア)を実行する。ホストソフトウェアには、オペレーティングシステム(OS)1011が含まれる。ホストソフトウェアには、オペレーティングシステム1011に加え、ファイルシステム、デバイスドライバ、およびアプリケーションプログラムなども含まれる。
【0015】
メモリ102は、ホスト2に設けられたメインメモリである。メモリ102は、例えば、DRAM(Dynamic Random Access Memory)のようなランダムアクセスメモリによって実現される。DRAMは、電源の供給が断たれると、記憶されているデータが失われる揮発性メモリである。
【0016】
オペレーティングシステム1011は、プロセッサ101、メモリ102、およびSSD3を含む、情報処理システム1全体のリソースを管理する。また、オペレーティングシステム1011は、ホスト2上で動作するアプリケーションプログラム(以下、単に「プログラム」と称する)の管理を行う。
【0017】
図1の例では、オペレーティングシステム1011は、プロセス管理部1111と、メモリ管理部1112とを含む。プロセス管理部1111は、ホスト2において実行される各プロセスの生成、各プロセスの実行、各プロセスの終了を管理する。メモリ管理部1112は、プロセス管理部1111からのメモリ割り当て要求に基づいて、メモリ102内の一部のメモリ領域を特定のプロセスに割り当てる処理を実行する。
【0018】
あるプログラムの実行を開始する際、オペレーティングシステム1011内のプロセス管理部1111は、このプログラム用のプロセスを生成する。そして、プロセス管理部1111は、メモリ管理部1112に対して、この生成されたプロセスに対するメモリ割り当てを要求する。メモリ割り当ての要求を受けたメモリ管理部1112は、このプロセスにメモリ102内の一部のメモリ領域を割り当てる。プロセス管理部1111は、このプログラムをSSD3または情報処理システム1内の他のストレージデバイスから読み出し、この割り当てられたメモリ領域に、このプログラムをロードする。
【0019】
ここで、あるプロセスに割り当てられたメモリ領域の内容が、スワップアウトまたはスワップインのタイミングで、SSD3に書き込まれ、またはSSD3から読み出されることを説明する。
【0020】
プロセス管理部1111からメモリ割り当て要求を受けたメモリ管理部1112は、このプロセスに割り当てるためのメモリ領域を確保するために、別のプロセスに割り当てられているメモリ領域に格納されているデータをSSD3に退避することがある。この退避処理はスワップアウトと呼ばれる。メモリ102からSSD3にスワップアウトされたデータは、SSD3内の不揮発性メモリに書き込まれる。一旦スワップアウトしたプロセスをプロセッサ101上で再度実行する際は、スワップアウトしたデータをSSD3から読み出して、メモリ102内のメモリ領域に復帰させる処理が行われる。この復帰処理はスワップインと呼ばれる。
【0021】
ここで、メモリ102とSSD3との間のスワップアウトおよびスワップインは、ホスト2の電源がオンである時のみ行われる。オペレーティングシステム1011がシャットダウンされることによってホスト2の電源がオフになった後は、つまりホスト2からSSD3への電力の供給が断たれた後は、スワップアウトによってSSD3に書き込まれたデータは、ホスト2によってもはや使用されないデータとなる。
【0022】
スワップアウトによってSSD3に書き込まれるデータと同様に、例えば、「Tmpフォルダ」(または「/Tmpディレクトリ」)と称されるフォルダに書き込まれるファイルも、オペレーティングシステム1011のシャットダウンによってホスト2の電源がオフになった後、つまりSSD3への電力の供給が断たれた後は、ホスト2によって使用されないデータとなる。
【0023】
次に、SSD3の構成について説明する。SSD3は、コントローラ4と、不揮発性メモリ(例えば、NAND型フラッシュメモリ5)と、ランダムアクセスメモリ(例えば、DRAM6)と、電源回路7とを含む。
【0024】
コントローラ4は、ホスト2から受信したコマンドに基づいてデータをNAND型フラッシュメモリ5に書き込むデータ書き込み動作と、ホスト2から受信したコマンドに基づいて読み出し対象データをNAND型フラッシュメモリ5から読み出すデータ読み出し動作とを制御する。
【0025】
コントローラ4は、System-on-a-chip(SoC)のような回路によって実現されてもよい。コントローラ4の各機能は、専用ハードウェア回路、プログラム(ファームウェア)を実行するプロセッサ、またはこれらの組み合わせ、のいずれかによって実現され得る。
【0026】
コントローラ4は、これに限定されないが、Toggle NANDフラッシュインタフェースまたはオープンNANDフラッシュインタフェース(ONFI)に準拠するNANDインタフェース13を介して、NAND型フラッシュメモリ5に電気的に接続されている。コントローラ4は、NAND型フラッシュメモリ5を制御するように構成されたメモリコントローラとして動作する。
【0027】
コントローラ4は、NAND型フラッシュメモリ5のデータ管理及びブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能し得る。
【0028】
FTLによって実行されるデータ管理は、(1)論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すアドレス変換データ(マッピング情報)の管理、(2)NAND型フラッシュメモリ5の制約(例えば、ページ単位のリード/ライト動作とブロック単位の消去動作)を隠蔽するための処理、等が含まれる。ある論理アドレスに対応する物理アドレスは、この論理アドレスに対応するデータが書き込まれたNAND型フラッシュメモリ5内の物理的な記憶位置を示す。コントローラ4は、論理物理アドレス変換テーブル(logical-to-physical address translation table:L2Pテーブル)を使用して、論理アドレスそれぞれと物理アドレスそれぞれとの間のマッピングを管理する。論理アドレスとしては、論理ブロックアドレス(LBA)を使用し得る。
【0029】
本実施形態では、コントローラ4は、複数のネームスペースにそれぞれ対応する複数のL2Pテーブル(例えば、L2Pテーブル31-1~31-n)を使用して、ネームスペース毎に、該ネームスペースに対応する論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間のマッピングを管理するように構成されている。
【0030】
L2Pテーブル31-1~31-nの各々のアドレス変換データの一部または全ては、SSD3に電力が供給されたことに応じてコントローラ4によって実行される初期化処理の間に、NAND型フラッシュメモリ5からDRAM5にロードされる。
【0031】
L2Pテーブル31-1~31-nの各々は、限定されないが、複数の階層レベルに対応する複数のテーブルを含む階層L2Pテーブルとして実現されていてもよい。階層L2Pテーブルの構成例については、図3を参照して後述する。
【0032】
NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。NAND型フラッシュメモリ5は、2次元構造のフラッシュメモリであってもよいし、3次元構造のフラッシュメモリであってもよい。
【0033】
図2に示されているように、NAND型フラッシュメモリ5のメモリセルアレイは、複数のブロックBLK0~BLKx-1を含む。ブロックBLK0~BLKx-1の各々は、複数のページ(ここではページP0~Py-1)を含む。各ページは、同一ワード線に接続された複数のメモリセルを含む。ブロックBLK0~BLKx-1の各々は、データを消去するデータ消去動作の単位である。ページP0~Py-1の各々は、データ書き込み動作およびデータ読み出し動作の単位である。
【0034】
説明を図1に戻す。NAND型フラッシュメモリ5は、複数のネームスペースNS#1~NS#nにそれぞれ対応する複数のL2Pテーブル31-1~31-nと、複数のネームスペースNS#1~NS#nにそれぞれ対応する複数のユーザデータ41-1、…、41-nとを格納するために使用される。
【0035】
DRAM6は、揮発性メモリである。DRAM6のメモリ領域の一部は、L2Pテーブル31-1~31-n、ネームスペース管理テーブル32、ブロック管理テーブル33、およびブロック使用順序管理テーブル34の格納に使用される。ネームスペース管理テーブル32、ブロック管理テーブル33、およびブロック使用順序管理テーブル34の詳細は、図5図6、および図7を参照して後述する。
【0036】
電源回路7は、ホスト2から供給された電力、つまり電源電圧Vccを使用して、コントローラ4を駆動するための電源電圧と、NAND型フラッシュメモリ5を駆動するための電源電圧と、DRAM6を駆動するための電源電圧とを生成し、これら生成した電源電圧をコントローラ4とNAND型フラッシュメモリ5とDRAM6とにそれぞれ供給する。
【0037】
また、電源回路7は、コントローラ4との通信を行う。電源電圧Vccの電圧値が所定値以下に低下した場合に、電源回路7は、SSD3への電力の供給が断たれたことをコントローラ4に通知する(以下、電源オフ検出通知と称する)。例えば、SSD3への電力の供給が断たれることを予告する通知(以下、電源断予告通知と称する)をホスト2から受信する前に、電源回路7から電源オフ検出通知を受信した場合、コントローラ4は、不正電源断が起きたことを検出する。不正電源断は、SSD3への電力の供給が間もなく断たれることがSSD3に通知されることなく、SSD3への電力の供給が突然断たれる現象を意味する。
【0038】
また、電源回路7は、不正電源断が起きてから所定期間の間、コントローラ4、NAND型フラッシュメモリ5、およびDRAM6の各々に電源電圧を供給し続けることを可能にするパワーロスプロテクション(PLP)機能を有していてもよい。この場合、電源回路7は、例えば、キャパシタ71に接続されていてもよい。不正電源断によってホスト2から電源回路7への電源電圧Vccの供給が断たれた際、電源回路7は、キャパシタ71に蓄えられているエネルギーを使用して、不正電源断が起きてから所定期間の間、コントローラ4、NAND型フラッシュメモリ5、およびDRAM6に電源電圧をそれぞれ供給する。
【0039】
次に、コントローラ4の詳細な構成について説明する。コントローラ4は、ホストインタフェース(ホストI/F)11と、CPU12と、NANDインタフェース(NAND I/F)13と、DRAMインタフェース(DRAM I/F)14と、直接メモリアクセスコントローラ(DMAC)15と、スタティックランダムアクセスメモリ(SRAM)16と、エラー訂正符号(ECC)エンコード/デコード部17とを含む。これらホストインタフェース11と、CPU12と、NANDインタフェース13と、DRAMインタフェース14と、DMAC15と、SRAM16と、ECCエンコード/デコード部17とは、バス10を介して相互接続される。
【0040】
ホストインタフェース11は、ホスト2との通信を実行するように構成されたホストインタフェース回路である。ホストインタフェース回路11は、ホスト2から様々な要求または通知を受信する。様々な要求または通知の例には、電源断予告通知、ネームスペース作成要求(ネームスペース作成コマンド)、ネームスペース削除要求(ネームスペース削除コマンド)、ライト要求(ライトコマンド)、リード要求(リードコマンド)が含まれる。
【0041】
電源断予告通知は、上述したように、SSD3への電力の供給が断たれることを予告する通知である。ホスト2の電源がオフになる前に、ホスト2は、電源断予告通知をSSD3に送信して、SSD3への電力の供給がまもなく断たれることをSSD3に通知する。
【0042】
電源断予告通知としては、例えば、NVMe規格で規定されているShutdown Notification、SATA規格で規定されているSTANDBY IMMEDIATEコマンドを使用し得る。
【0043】
電源断予告通知をホスト2から受信した場合、コントローラ4は、NAND型フラッシュメモリ5にまだ書き込まれていないDRAM6の内容(例えば、更新されたL2Pテーブルの内容)をNAND型フラッシュメモリ5に書き込む処理を含むシャットダウン準備処理を行う。ホスト2は、SSD3のシャットダウン準備処理が完了したことがコントローラ4から通知されるまでは、あるいは電源断予告通知をSSD3に送信してから所定期間が経過するまでは、SSD3への電力の供給を断たない。
【0044】
ネームスペース作成コマンドは、SSD3にネームスペースの作成を要求するコマンドである。ネームスペース削除コマンドは、SSD3に特定のネームスペースの削除を要求するコマンドである。
【0045】
ライトコマンドは、SSD3に、特定のネームスペースにデータ(ライトデータ)を書き込むことを要求するコマンドである。ライトコマンドは、ライトデータが書き込まれるべきネームスペースのネームスペース識別子と、ライトデータに対応する開始LBAと、ライトデータのサイズ(LBAの数)と、ライトデータが格納されているメモリ102内の位置を示すデータポインタ(バッファアドレス)等を指定する。
【0046】
リードコマンドは、SSD3にリード対象データの読み出しを要求するコマンドである。リードコマンドは、リード対象データが読み出されるべきネームスペースのネームスペース識別子と、リード対象データに対応する開始LBAと、リード対象データのサイズ(LBAの数)と、リード対象データが転送されるべきメモリ102内の位置を示すデータポインタ(バッファアドレス)等を指定する。
【0047】
NANDインタフェース13は、CPU12の制御の下、NAND型フラッシュメモリ5を制御するように構成されたNANDコントローラである。NAND型フラッシュメモリ5が複数のNAND型フラッシュメモリチップ(NAND型フラッシュメモリダイ)から構成されている場合、NANDインタフェース13は、複数のチャンネル(Ch)を介してこれらNAND型フラッシュメモリチップと接続されていてもよい。
【0048】
DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAMコントローラである。
【0049】
DMAC15は、CPU12の制御の下、ホスト2のメモリ102とSRAM16(またはDRAM6)との間のデータ転送を実行する。
【0050】
SRAM16は、揮発性メモリである。SRAM16は、内部バッファ161を含む。内部バッファ161は、NAND型フラッシュメモリ5に書き込むべきライトデータを一時的に記憶するためのライトバッファとして使用されてもよい。
【0051】
ECCエンコード/デコード部17は、NAND型フラッシュメモリ5にライトデータを書き込むべき時、ライトデータをエンコードすることによってこのライトデータにECCを冗長コードとして付加する。NAND型フラッシュメモリ5からデータがリードされた時、ECCエンコード/デコード部17は、リードされたデータに付加されたECCを使用して、このデータのエラー訂正を行う。
【0052】
CPU12は、ホストインタフェース11と、NANDインタフェース13と、DRAMインタフェース14と、DMAC15と、SRAM16と、ECCエンコード/デコード部17を制御するように構成されたプロセッサである。CPU12は、NAND型フラッシュメモリ5または図示しないROMに格納されている制御プログラム(ファームウェア)をSRAM16(またはDRAM6)にロードし、そしてこのファームウェアを実行することによって様々な処理を行う。
【0053】
CPU12は、ネームスペース管理コマンド処理部21、I/Oコマンド処理部22、クリアー処理部23、および復元処理部24として機能することができる。これらネームスペース管理コマンド処理部21、I/Oコマンド処理部22、クリアー処理部23、および復元処理部24の各々の一部または全部は、コントローラ4内の専用のハードウェアによって実現されてもよい。
【0054】
ネームスペース管理コマンド処理部21は、ホスト2から受信されるネームスペース作成コマンドに応じて、ネームスペースを作成し、作成したネームスペースを管理する。ネームスペース管理コマンド処理部21は、複数のネームスペースを作成および管理することができる。複数のネームスペースは、互いに独立した論理アドレス範囲である。複数のネームスペースは、一つのストレージデバイスをあたかも複数のストレージデバイスであるかのように動作させるために使用される。複数のネームスペースは、SSD3をアクセスするためにホスト2によって使用される。
【0055】
また、ホスト2から受信されるネームスペース削除コマンドに応じて、ネームスペース管理コマンド処理部21は、このネームスペース削除コマンドによって指定されたネームスペースを削除する。
【0056】
本実施形態では、ネームスペース管理コマンド処理部21は、クリアー属性を有するネームスペースを作成および管理するように構成されている。クリアー属性を有するネームスペースは、SSD3への電力の供給が断たれた後に、このネームスペースの論理アドレス範囲に関連付けられたデータを無効化することが許可されたネームスペースである。換言すれば、クリアー属性を有するネームスペースは、このネームスペースに書き込まれたデータをSSD3の電源サイクルを跨いで保持することが必要とされないネームスペースである。
【0057】
ホスト2からSSD3への電力の供給が断たれ、その後、ホスト2からSSD3に電力が再び供給される過程が、SSD3の1回の電源サイクルに相当する。
【0058】
SSD3への電力の供給が一旦断たれると、SSD3に電力が再び供給されても、SSD3への電力の供給が断たれる前にクリアー属性を有するネームスペースにホスト2によって書き込まれたデータは、もはやホスト2から参照できなくなる。クリアー属性を有するネームスペースに書き込まれたデータは、SSD3に電力が供給されている間のみ、つまりホスト2の電源状態が、ホストソフトウェアが実行可能な稼働状態(電源オン状態)である間のみ、保持される。
【0059】
ネームスペース管理コマンド処理部21は、クリアー属性を指定可能な新たなネームスペース作成コマンドをサポートしている。この新たなネームスペース作成コマンドは、作成すべきネームスペースの属性がクリアー属性または非クリアー属性のいずれであるかを指定するパラメータを含む。このパラメータは、クリアー属性を示す値、または非クリアー属性を示す値のいずれかにホスト2によって設定される。
【0060】
クリアー属性を指定するネームスペース作成コマンド、つまりクリアー属性を示す値に設定されたパラメータを含むネームスペース作成コマンドがホスト2から受信された場合、ネームスペース管理コマンド処理部21は、クリアー属性を有するネームスペースを作成し、作成したネームスペースのネームスペース識別子をホスト2に送信する。そして、ネームスペース管理コマンド処理部21は、ネームスペース管理テーブル32を使用することによって、この作成したネームスペースのネームスペース識別子を、クリアー属性を示す属性情報と関連付けて管理する。
【0061】
ホスト2は、クリアー属性を有するネームスペースを、SSD3の電源サイクルを跨いで保持する必要がないデータの書き込み先ネームスペースとして、例えば、スワップ領域として、使用することができる。
【0062】
クリアー属性を指定しないネームスペース作成コマンド、つまり非クリアー属性を示す値に設定されたパラメータを含むネームスペース作成コマンドがホスト2から受信された場合、ネームスペース管理コマンド処理部21は、非クリアー属性を有するネームスペースを作成する。非クリアー属性を有するネームスペースは、このネームスペースの論理アドレス範囲に関連付けられたデータをSSD3の電源サイクルを跨いで保持することが必要なネームスペースである。そして、ネームスペース管理コマンド処理部21は、ネームスペース管理テーブル32を使用することによって、この作成したネームスペースのネームスペース識別子を、非クリアー属性を示す属性情報と関連付けて管理する。
【0063】
ホスト2は、非クリアー属性を有するネームスペースを、SSD3の電源サイクルを跨いで保持する必要があるデータの書き込み先ネームスペースとして使用することができる。
【0064】
I/Oコマンド処理部22は、ホスト2から受信した様々なI/Oコマンドの処理を実行する。I/Oコマンドには、ライトコマンド、リードコマンドなどが含まれる。
【0065】
コントローラ4が、あるネームスペース識別子を指定するライトコマンドをホスト2から受信した場合、I/Oコマンド処理部22は、受信したライトコマンドに関連付けられたデータをNAND型フラッシュメモリ5に書き込む処理を実行する。この場合、I/Oコマンド処理部22は、受信したライトコマンドによって指定されたネームスペース識別子によって識別される特定のネームスペース用の書き込み先ブロックを割り当てる。次いで、I/Oコマンド処理部22は、受信したライトコマンドに関連付けられたデータをこの書き込み先ブロックに書き込む。なお、この特定のネームスペース用の書き込み先ブロックが既に割り当てられている場合には、書き込み先ブロックを新たに割り当てる処理を行う必要は無い。そして、I/Oコマンド処理部22は、このデータに対応する論理アドレスに、このデータが書き込まれたNAND型フラッシュメモリ5内の物理記憶位置を示す物理アドレスがマッピングされるように、この特定のネームスペースに関連付けられたL2Pテーブルを更新する。この特定のネームスペースに関連付けられたL2Pテーブルは、この特定のネームスペースの論理アドレス範囲に含まれる論理アドレスそれぞれとNAND型フラッシュメモリ5内の物理アドレスそれぞれとの間のマッピングを管理するために使用される。
【0066】
コントローラ4が、あるネームスペース識別子を指定するリードコマンドをホスト2から受信した場合、I/Oコマンド処理部22は、このネームスペース識別子によって指定されるネームスペースに関連付けられているL2Pテーブルを参照して、受信したリードコマンドによって指定されるリード対象データのLBAにマッピングされている物理アドレスを取得する。I/Oコマンド処理部22は、取得した物理アドレスによって示されるNAND型フラッシュメモリ5内の物理記憶位置に格納されているデータをNAND型フラッシュメモリ5から読み出す。そして、I/Oコマンド処理部22は、読み出したデータを、リード対象データとして、ホスト2に返す。
【0067】
クリアー処理部23は、クリアー属性を有するネームスペースに対してクリアー処理を実行する。クリアー処理は、コントローラ4が電源断予告通知をホスト2から受信するかまたは不正電源断を検出してから、SSD3に電力が再び供給されてコントローラ4がコマンドを処理可能なレディー状態になるまでの期間に、実行される。
【0068】
クリアー処理は、クリアー属性を有するネームスペースに含まれる論理アドレス範囲に含まれる論理アドレスの各々を、物理アドレスがマッピングされていない未割り当て状態にする処理である。このクリアー処理により、クリアー属性を有するネームスペースに含まれる論理アドレス範囲に関連付けられているデータは全て無効データとなる。このため、クリアー処理により、クリアー属性を有するネームスペースは、データがまだ書き込まれていない作成直後のネームスペースと同様の状態となる。よって、クリアー属性を有するネームスペースに関連付けられている全てのブロックは、有効データを含まないフリーブロックとなる。
【0069】
したがって、例えば、クリアー属性を有するネームスペースを、SSD3の電源サイクルを跨いで保持する必要が無いデータの格納先、例えば、スワップ領域、として使用することにより、SSD3の電源サイクルを跨いで保持する必要が無いデータによってNAND型フラッシュメモリ5内の物理記憶領域が無駄に消費されることを防止することができる。
【0070】
クリアー処理部23は、例えば、SSD3に電力が再び供給されてから、コントローラ4がレディー状態になるまでの期間に、クリアー処理を実行し得る。
【0071】
あるいは、クリアー処理部23は、コントローラ4が電源断予告通知をホスト2から受信したことに応じ、またはコントローラ4が不正電源断を検出したことに応じ、クリアー処理を実行してもよい。コントローラ4が電源断予告通知をホスト2から受信したことに応じ、またはコントローラ4が不正電源断を検出したことに応じ、クリアー処理部23がクリアー処理を実行するケースにおいては、クリアー処理部23は、クリアー処理が完了した時に、クリアー処理が完了したことを示す情報を、クリアー処理のステータス情報として、NAND型フラッシュメモリ5に書き込むことが好ましい。これにより、SSD3に電力が再び供給された後、クリアー処理部23は、クリアー属性を有するネームスペースに対するクリアー処理が正常に完了しているか否かを判定することができる。
【0072】
SSD3に電力が再び供給されてから、コントローラ4がレディー状態になるまでの期間にクリアー処理を実行するケースにおいては、クリアー処理部23は、コントローラ4が電源断予告通知をホスト2から受信した時またはコントローラ4が不正電源断を検出した時に、クリアー処理を実行する必要は無い。よって、例えば、SSD3が電源断予告通知を受信してから、SSD3が安全にシャットダウン可能な状態に遷移するまでに要する時間を短縮することができる。さらに、クリアー処理が完了したか否かを示すステータス情報をNAND型フラッシュメモリ5に書き込む処理を実行する必要も無いので、電源断予告通知を受信したことまたは不正電源断を検出したことに応じてクリアー処理を実行するケースに比し、コントローラ4が実行することが必要な処理の量を低減することができる。
【0073】
クリアー処理部23は、クリアー属性を有するネームスペース(例えば、ネームスペースNS#1)に含まれる各論理アドレスを未割り当て状態にするために、クリアー属性を有するネームスペースNS#1に対応するL2Pテーブル31-1を初期状態に設定し得る。L2Pテーブル31-1が初期状態であるとは、未割り当て状態を示すための特定の値(例えば、初期値)がL2Pテーブル31-1にアドレス変換データとして格納されている状態である。
【0074】
あるいは、クリアー処理部23は、クリアー属性を有するネームスペースNS#1に対応するL2Pテーブル31-1を初期状態に設定する代わりに、クリアー属性を有するネームスペースNS#1に対応するL2Pテーブル31-1を破棄し、これによってネームスペースNS#1に含まれる論理アドレスそれぞれを未割り当て状態にしてもよい。この場合、クリアー処理部23は、初期状態のL2Pテーブルを新たに生成し、その生成したテーブルをネームスペースNS#1用の新たなL2Pテーブル31-1としてネームスペースNS#1に割り当ててもよい。
【0075】
L2Pテーブル31-1が複数の階層レベルに対応する複数のテーブルを含む階層L2Pテーブルとして実現されている場合には、クリアー処理部23は、階層L2Pテーブル内の複数の階層レベルのうちの最上位階層レベルのテーブルのみを初期状態に設定するかまたは破棄することによって、ネームスペースNS#1に含まれる論理アドレスそれぞれを容易に未割り当て状態にすることができる。
【0076】
コンピュータのようなシステムの電力制御のための標準規格として、Advanced Configuration and Power Interface(ACPI)仕様が知られている。ACPI仕様では、システムの電源状態は、システムステート(S0ステート~S5ステート)として規定されており、デバイスの電源状態は、デバイスパワーステート(D0ステート~D3ステート)として規定されている。以下の説明においては、これに限定されないが、ホスト2およびSSD3が取り得る電源状態として、ACPI仕様で規定されている電源状態を例示する。
【0077】
ホスト2の電源状態、つまりシステム電源状態、が稼働状態(S0ステート)からサスペンド状態(S3ステート、またはS4ステート)に移行する際には、ホスト2は、SSD3の現在の電源状態(つまりSSD3の現在のデバイスパワーステート)を、オン状態(D0ステート)から、ホスト2のサスペンド状態(S3ステート、またはS4ステート)に対応する低電力状態(例えば、D1ステート、D2ステート、またはD3ステート)に変更するための指示(以下、サスペンド指示と称する)をSSD3に送信する。
【0078】
ここで、稼働状態(S0ステート)は、プロセッサ101が命令を実行し、メモリ102のリードおよびライトがプロセッサ101によって実行され得る状態である。サスペンド状態としては、スリープ状態(S3ステート)、またはハイバネーション状態(S4ステート)が使用される。スリープ状態(S3ステート)では、メモリ102を除くホスト2内のほとんど全ての構成要素が電源オフ状態となる。一方、ハイバネーション状態(S4ステート)では、メモリ102の内容がSSD3内の非クリアー属性のネームスペースにハイバネーションファイルとして保存されている状態で、メモリ102を含むホスト2内のほとんど全てのコンポーネントが電源オフ状態となる。
【0079】
このサスペンド指示をホスト2から受信したことに応じ、コントローラ4は、SSD3の現在の電源状態を、オン状態(D0ステート)から低電力状態(D1ステート、D2ステート、またはD3ステート)に遷移させる。
【0080】
オン状態(D0ステート)は、SSD3に電力が供給されており、SSD3がコマンド処理を実行可能な状態である。低電力状態(D1ステート、D2ステート、またはD3ステート)は、オン状態(D0ステート)よりも消費電力が少ない電源状態である。低電力状態では、基本的には、コマンド処理は実行されない。D3ステートでは、SSD3に供給されている電力が断たれる。D1ステートおよびD2ステートでは、SSD3の消費電力を減らすために、例えば、SSD3へ電力が供給されている状態が維持されたまま、SSD3のコンポーネントの少なくとも一部、例えばDRAM6、への電力の供給が断たれる。
【0081】
例えば、ホスト2の電源状態が稼働状態(S0ステート)からスリープ状態(S3ステート)に遷移する際には、ホスト2は、SSD3の現在の電源状態を、例えば、D0ステートからD1ステートまたはD2ステートに変更するためのサスペンド指示をSSD3に送信してもよい。この場合、SSD3の現在の電源状態は、D0ステートから、D1ステートまたはD2ステートに遷移する。
【0082】
また、例えば、ホスト2の電源状態が稼働状態(S0ステート)からハイバネーション状態(S4ステート)に遷移する際には、ホスト2は、SSD3の現在の電源状態を、例えば、D0ステートからD3ステートに変更するためのサスペンド指示をSSD3に送信してもよい。この場合、SSD3の現在の電源状態は、D0ステートから、D3ステートに遷移する。
【0083】
また、ホスト2の電源状態がサスペンド状態から稼働状態に復帰してオペレーティングシステム101が処理を再開する際には、ホスト2は、SSD3の現在の電源状態を、低電力状態(例えば、D1ステート、D2ステート、またはD3ステート)から動作状態(D0ステート)に復帰するための指示(以下、レジューム指示と称する)をSSD3に送信する。
【0084】
SSD3がD3ステートである間は、SSD3への電源電圧Vccの供給は停止されている。したがって、SSD3の現在の電源状態をD3ステートからD0ステートに復帰させる際には、ホスト2は、SSD3への電源電圧Vccの供給も開始し、これによってSSD3に電力(電源電圧Vcc)が再び供給される。
【0085】
このレジューム指示をホスト2から受信したことに応じ、コントローラ4は、SSD3の現在の電源状態を低電力状態(D1ステート、D2ステート、またはD3ステート)からオン状態(D0ステート)に遷移させる。
【0086】
ホスト2の電源状態がサスペンド状態から稼働状態に復帰した際、オペレーティングシステム1011は、サスペンド状態に遷移する前にSSD3にスワップアウトしたデータをメモリ102に戻す場合がある。
【0087】
このため、ホスト2からサスペンド指示を受信した場合、あるいはホスト2からレジューム指示を受信した場合には、クリアー処理部23は、クリアー処理を行わない。これにより、SSD3は、クリアー属性を有するネームスペースに書き込まれたデータを保持し続けることができる。よって、ホスト2は、サスペンド状態に遷移する前にSSD3にスワップアウトしたデータをSSD3から正常に読み出すことができる。
【0088】
復元処理部24は、NAND型フラッシュメモリ5からDRAM6にL2Pテーブルをロードする処理と、シャットダウン準備処理と、L2Pテーブルを復元するための復元処理と、この復元処理のための準備処理である復元準備処理とを実行する。
【0089】
ホスト2からSSD3に電力が供給された後、復元処理部24は、NAND型フラッシュメモリ5に格納されているL2Pテーブル31-1~31-nの各々に含まれるアドレス変換データをDRAM6にロードする。この場合、復元処理部24は、必ずしも、各L2Pテーブルに含まれるアドレス変換データ全体をDRAM6にロードする必要は無く、各L2Pテーブルに含まれるアドレス変換データの一部のみをDRAM6にロードしてもよい。あるネームスペースへのデータの書き込みが実行された場合には、I/Oコマンド処理部22は、このデータに対応する論理アドレスに、このデータが書き込まれた物理アドレスがマッピングされるように、DRAM6に格納されているこのネームスペースに対応するアドレス変換データを更新する。このように、L2Pテーブル31-1~31-nの各々のアドレス変換データはDRAM6上で更新される。
【0090】
非クリアー属性を有するネームスペースの各々に対応するL2Pテーブルについては、復元処理部24は、コントローラ4が電源断予告通知をホスト2から受信したことに応じ、シャットダウン準備処理を行う。このシャットダウン準備処理では、復元処理部24は、NAND型フラッシュメモリ5に格納されているL2Pテーブルにまだ反映されていないDRAM6内の更新されたアドレス変換データをNAND型フラッシュメモリ5に書き込む。これにより、SSD3への電力の供給が断たれる前に、NAND型フラッシュメモリ5に格納されているL2Pテーブルにまだ反映されていないDRAM6内の更新されたアドレス変換データを、NAND型フラッシュメモリ5に格納されているL2Pテーブルに反映させることができる。なお、電源回路7がPLP機能を有している場合には、不正電源断が起きたことがコントローラ4によって検出された場合も、復元処理部24は、非クリアー属性を有するネームスペースの各々に対応するL2Pテーブルに対するシャットダウン準備処理を行うことができる。
【0091】
クリアー属性を有するネームスペースの各々に対応するL2Pテーブルについては、復元処理部24は、シャットダウン準備処理の実行を省略する。つまり、コントローラ4が電源断予告通知をホスト2から受信した場合、復元処理部24は、NAND型フラッシュメモリ5に格納されているL2Pテーブルにまだ反映されていないDRAM6内の更新されたアドレス変換データをNAND型フラッシュメモリ5に書き込まない。電源回路7がPLP機能を有している場合には、不正電源断が起きたことがコントローラ4によって検出された場合も、復元処理部24は、クリアー属性を有するネームスペースに対応するL2Pテーブルに対するシャットダウン準備処理の実行を省略する。
【0092】
このように、クリアー属性を有する各ネームスペースに対応するL2Pテーブルに対するシャットダウン準備処理の実行を省略することにより、全てのネームスペースに対応する全てのL2Pテーブルに対するシャットダウン準備処理を実行する構成に比し、NAND型フラッシュメモリ5への書き込み量を低減することができる。
【0093】
不正電源断が起きた場合には、非クリアー属性を有する各ネームスペースに対応するL2Pテーブルに対するシャットダウン準備処理が正常に実行できず、非クリアー属性を有する各ネームスペースに対応する最新のL2Pテーブルの内容が失われてしまう場合がある。この場合、不正電源断の後に、SSD3への電力が再び供給された後、復元処理部24は、非クリアー属性を有するネームスペースの各々に対応するL2Pテーブルを復元するための復元処理を実行する。復元処理部24は、クリアー属性を有するネームスペースの各々に対応するL2Pテーブルを復元するための復元処理は実行しない。復元処理の詳細については、図9A図9Bを参照して後述する。
【0094】
また、SSD3がオン状態(D0ステート)である間、復元処理部24は、非クリアー属性を有するネームスペースの各々に対応するL2Pテーブルのための復元準備処理だけを実行し、クリアー属性を有するネームスペースの各々に対応するL2Pテーブルのための復元準備処理を実行しない。
【0095】
非クリアー属性を有するネームスペースに対応するL2Pテーブルのための復元準備処理では、復元処理部24は、以下の処理を実行する。
【0096】
復元処理部24は、(1)チェックポイントの度に、NAND型フラッシュメモリ5に格納されているL2Pテーブルにまだ反映されていないDRAM6内の更新されたアドレス変換データをNAND型フラッシュメモリ5に書き込む動作と、(2)チェックポイントの度に、このネームスペース用の書き込み先ブロックとして現在割り当てられているブロックに対して付与されたシーケンス番号を、このネームスペース用のL2Pテーブルの復元処理のために使用すべきブロック群を特定するための情報としてNAND型フラッシュメモリ5に書き込む動作と、を実行する。復元準備処理の詳細については、図9A図9Bを参照して後述する。
【0097】
クリアー属性を有するネームスペースに対応するL2Pテーブルについては、復元処理部24は、復元準備処理を実行しない。
【0098】
すなわち、クリアー属性を有するネームスペースに対応するL2Pテーブルについては、復元処理部24は、(3)チェックポイントの度に、NAND型フラッシュメモリ5に格納されているL2Pテーブルにまだ反映されていないDRAM6内の更新されたアドレス変換データをNAND型フラッシュメモリ5に書き込む動作と、(4)チェックポイントの度に、このネームスペース用の書き込み先ブロックとして現在割り当てられているブロックに対して付与されたシーケンス番号を、このネームスペース用のL2Pテーブルの復元処理のために使用すべきブロック群を特定するための情報としてNAND型フラッシュメモリ5に書き込む動作と、を含む復元準備処理を実行しない。
【0099】
このように、クリアー属性を有するネームスペースに対応するL2Pテーブルに対する復元準備処理の実行を省略することにより、全てのネームスペースに対応する全てのL2Pテーブルに対する復元準備処理を実行する構成に比し、コントローラ4の負荷を軽減することができる。
【0100】
次に、アドレス変換テーブルの構成例について説明する。図3は、実施形態に係るSSD3において管理されるアドレス変換テーブルの構成例を示す図である。
【0101】
L2Pテーブル31-1~31-nの各々は、階層構造を有さない単一レベルのL2Pテーブル、または階層構造を有する階層L2Pテーブルとして実現され得る。図3では、ネームスペースNS#1に対応するL2Pテーブル31-1が階層L2Pテーブルとして実現されている場合が想定されている。
【0102】
階層L2Pテーブルとして実現されたL2Pテーブル31-1は、複数の階層レベルにそれぞれ対応する複数のテーブルを含む。階層レベルの数は2以上の任意の数であればよいが、ここでは、階層レベルの数が3の場合が例示されている。
【0103】
L2Pテーブル31-1は、下位テーブルT1-1と、上位テーブルT1-2と、最上位テーブルT1-3とを含む。
【0104】
下位テーブルT1-1は、ホスト2から受信したデータが書き込まれたNAND型フラッシュメモリ5内の物理アドレスそれぞれを管理するためのテーブルである。ネームスペースNS#1の論理アドレス範囲は、複数の範囲にさらに分割される。複数の範囲の各々は、連続する特定個数の論理アドレス(LBA)を含む。例えば、下位テーブルT1-1は、これら複数の範囲の個数と同数の複数のアドレス変換データを含む。ネームスペースNS#1の論理アドレス範囲が、各々が32個のLBAを含む128個の範囲に分割されるケースにおいては、下位テーブルT1-1は、セグメントと称される128個のアドレス変換データ、つまり、セグメント#0、#1、…、#96、…、#127を含む。
【0105】
下位テーブルT1-1の一つのセグメントは、連続する32個のLBAにそれぞれ対応する32個の物理アドレスをマッピング情報として含む。下位テーブルT1-1に属する各セグメントは下位セグメントとも称される。一つの下位セグメントによってカバーされる論理アドレス範囲は、32個のLBAに相当する。
【0106】
上位テーブルT1-2は、各下位セグメントが書き込まれているNAND型フラッシュメモリ5内の物理アドレスを管理するためのテーブルである。上位テーブルT1-2も、セグメントと称される複数のアドレス変換データ、例えば、セグメント#0、#1、…、#3を含む。
【0107】
上位テーブルT1-2の一つのセグメントは、例えば、連続する32個の下位セグメントそれぞれが格納されているNAND型フラッシュメモリ5内の32個の位置(物理記憶位置)を示す。上位テーブルT1-2の各セグメントが32個の下位セグメントの位置を示すので、上位テーブルT1-2に含まれるセグメントの総数は、下位セグメントの総数の1/32である。上位テーブルT1-2の一つのセグメントによってカバーされる論理アドレスの範囲は、32×32個のLBAに相当する。上位テーブルT1-2の各セグメントは、上位セグメントとも称される。
【0108】
最上位テーブルT1-3は、セグメントと称される一つのアドレス変換データを含む。最上位テーブルT1-3のセグメントは、全ての上位セグメント#0、#1、…、#3それぞれが格納されているNAND型フラッシュメモリ5内の位置(物理記憶位置)を示す。つまり、最上位テーブルT1-3のセグメントは、上位セグメント#0、#1、…、#3それぞれに対応する4つのポインタ(ポインタ0、1、2、3)を含む。4つのポインタの各々は、対応する上位セグメントの位置を示す。最上位テーブルT1-3のセグメントによってカバーされる論理アドレス範囲は、4×32×32個のLBAに相当する。最上位テーブルT1-3のセグメントは最上位セグメントまたはルートテーブルと称される。
【0109】
このように、一つの最上位セグメントによってカバーされる論理アドレス範囲は、一つの上位テーブルセグメントによってカバーされる論理アドレス範囲よりも広い。また、一つの上位テーブルセグメントによってカバーされる論理アドレス範囲は、一つの下位テーブルセグメントによってカバーされる論理アドレス範囲よりも広い。
【0110】
したがって、コントローラ4は、例えば、上位セグメント#0内の32個のエントリの各々に、未割り当て状態を示す特定の値を設定するだけで、上位セグメント#0に対応する32×32個のLBAを未割り当て状態にすることができる。また、上位セグメント#0内の32個のエントリの各々に特定の値を設定する代わりに、コントローラ4は、例えば、最上位セグメント内のポインタ0の値を、未割り当て状態を示す特定の値に設定してもよい。この場合でも、上位セグメント#0に対応する32×32個のLBAを未割り当て状態にすることができる。
【0111】
ネームスペースNS#1に対するクリアー処理では、コントローラ4は、例えば、最上位セグメント内の4個のポインタを、未割り当て状態を示す特定の値に設定する。これによって、ネームスペースNS#1に含まれる全てのLBAを容易に未割り当て状態にすることができる。あるいは、コントローラ4は、最上位セグメント自体を破棄してもよい。この場合でも、ネームスペースNS#1に含まれる全てのLBAを未割り当て状態にすることができる。最上位セグメントを破棄した場合には、コントローラ4は、新たな最上位セグメントを作成し、作成した新たな最上位セグメントをネームスペースNS#1のL2Pテーブルの最上位テーブルとして再割り当てしてもよい。
【0112】
図4は、実施形態に係るSSD3において管理される複数のネームスペースを説明するための図である。
【0113】
図4においては、ネームスペースNS#1、ネームスペースNS#2、…、ネームスペースNS#nがSSD3のコントローラ4によって管理されている場合が例示されている。各ネームスペースは、ネームスペース識別子(NSID)によって識別される。
【0114】
各ネームスペースは連続する複数の論理アドレス(LBA)の集合を含む。各ネームスペースに対応する論理アドレス範囲は、LBA0から始まる。各ネームスペースは任意のサイズに設定可能である。各ネームスペースのサイズは、各ネームスペースに含まれるLBAの個数に対応する。
【0115】
図4においては、ネームスペースNS#1がLBA0からLBAiまでの連続するi+1個のLBAを含み、ネームスペースNS#2がLBA0からLBAjまでの連続するj+1個のLBAを含み、ネームスペースNS#nがLBA0からLBAkまでの連続するk+1個のLBAを含む場合が例示されている。
【0116】
これらのネームスペースに関連する情報を管理するためにネームスペース管理テーブル32が使用される。
【0117】
図5は、実施形態に係るSSD3において管理されるネームスペース管理テーブル32を示す図である。ネームスペース管理テーブル32では、作成されたネームスペースそれぞれについて、ネームスペース識別子と、クリアー識別子と、ネームスペースのサイズとがネームスペース情報として管理される。
【0118】
各ネームスペースのネームスペース識別子(NSID)は、各ネームスペースに対するアクセスするためにコントローラ4によって使用される識別子である。クリアー識別子は、対応するネームスペースがクリアー属性を有するか否かを示す識別子である。クリアー識別子は、クリアー属性または非クリアー属性の一方を示す属性情報として使用される。例えば、「1」にセットされたクリアー識別子は、対応するネームスペースがクリアー属性を有していることを示す。一方、例えば、「0」にセットされたクリアー識別子は、対応するネームスペースが非クリアー属性を有していることを示す。
【0119】
図5においては、ネームスペース識別子NSID1が付与されたネームスペースNS#1と、ネームスペース識別子NSIDnが付与されたネームスペースNS#nとが、クリアー属性を有し、ネームスペース識別子NSID2が付与されたネームスペースNS#2が、クリアー属性を有さない(非クリアー属性を有する)場合が例示されている。
【0120】
ネームスペースのサイズは、対応するネームスペースが有する論理アドレス範囲に含まれる論理アドレス(LBA)の数によって示されている。
【0121】
次に、実施形態に係るSSD3におけるブロック管理について説明する。
【0122】
I/Oコマンド処理部22は、コントローラ4がホスト2からライトコマンドを受信すると、ライトコマンドに含まれるネームスペース識別子に基づき、書き込み先のネームスペースを決定する。各ネームスペース用に現在割り当てられている書き込み先ブロックは、ブロック管理テーブル33によって管理されている。図6に示されるように、ブロック管理テーブル33では、ネームスペースNS#1、NS#2、…、NS#nにそれぞれ対応するアクティブブロックリスト331-1、331-2、…、331-nが管理されている。
【0123】
アクティブブロックリスト331-1、331-2、…、331-nの各々においては、対応するネームスペースの有効データが格納されているアクティブブロックそれぞれのブロック識別子が管理されている。アクティブブロックリスト331-1、331-2、…、331-nの各々においては、対応するネームスペース用に現在割り当てられている書き込み先ブロックのブロック識別子も、アクティブブロックのブロック識別子の一つとして管理されている。
【0124】
有効データとは、ある論理アドレスに関連付けられているデータを意味する。例えば、あるL2Pテーブルから参照されている物理アドレスに記憶されているデータ(すなわち最新のデータとして論理アドレスに関連付けられているデータ)は有効データである。有効データは、後にホスト2からリードされる可能性があるデータである。少なくとも一つの有効データが書き込まれているブロックは、アクティブブロックとして管理される。
【0125】
無効データとは、どの論理アドレスにも関連付けられていないデータを意味する。例えば、どのL2Pテーブルからも参照されていない物理アドレスに記憶されているデータは無効データである。無効データは、もはやホスト2からリードされる可能性のないデータである。ある論理アドレスに関連付けられている更新データがNAND型フラッシュメモリ5に書き込まれると、それまでその論理アドレスに関連付けられていたデータは無効データとなり、更新データが有効データとなる。また、あるネームスペースに対してクリアー処理が実行された場合にも、それまでそのネームスペースの論理アドレスに関連付けられていた全ての有効データは無効データとなる。
【0126】
有効データを含まない各ブロックのブロック識別子は、フリーブロックのブロック識別子としてフリーブロックリスト332によって管理される。
【0127】
以下、ネームスペースNS#2への書き込みと、ネームスペースNS#2に割り当てられている各ブロックの管理とについて説明する。他のネームスペースについても同様の処理が行われる。
【0128】
アクティブブロックリスト331-2は、ネームスペースNS#2に関連付けられたアクティブブロックそれぞれのブロック識別子を管理するリストである。例えば、コントローラ4がホスト2から受信したライトコマンドがネームスペースNS#2のネームスペース識別子(NSID2)を含む場合、I/Oコマンド処理部22は、ネームスペースNS#2に割り当てられている書き込み先ブロック内の次の書き込み可能なページに、このライトコマンドに関連付けられたライトデータを書き込む。そして、I/Oコマンド処理部22は、ライトデータに対応する論理アドレスに、ライトデータが書き込まれたNAND型フラッシュメモリ5内の物理アドレスが関連付けられるように、ネームスペースNS#2に関連付けられたL2Pテーブル31-2を更新する。
【0129】
I/Oコマンド処理部22は、書き込み先ブロックに次のデータを書き込むときにその書き込み先ブロックに書き込み可能なページが存在しなかった場合、フリーブロックリスト332から任意のフリーブロックを選択し、選択したフリーブロックをネームスペースNS#2用の書き込み先ブロックとして新たに割り当てる。
【0130】
ネームスペースNS#2用の書き込み先ブロックとして新たなブロックが割り当てられると、コントローラ4は、その新たなブロックにシーケンス番号を付与する。シーケンス番号は、ブロックがネームスペースNS#2用の書き込み先ブロックとして割り当てられた順序を示す番号である。
【0131】
図7は、実施形態に係るSSD3において管理されるブロック使用順序管理テーブル34を示す図である。
【0132】
ブロック使用順序管理テーブル34は、ネームスペース毎に、そのネームスペース用の書き込み先ブロックとして割り当てられたブロックそれぞれのブロック識別子と、これらブロックの各々に付与されたシーケンス番号との間の対応関係を管理する。
【0133】
ここでは、ネームスペースNS#2に関連付けられたブロック使用順序管理テーブル341-2に着目して説明する。まずネームスペースNS#2が作成され、最初にネームスペースNS#2に関連付けられたライトコマンドを受信すると、コントローラ4は、フリーブロックリスト332から任意のフリーブロック(例えば、ブロックBLK1)を選択し、ブロックBLK1をネームスペースNS#2用の書き込み先ブロックとして割り当てる。このとき、コントローラ4は、ブロックBLK1にシーケンス番号1を付与する。
【0134】
ブロックBLK1に対するデータの書き込みが進行し、ブロックBLK1に書き込み可能なページが存在しなくなった後、コントローラ4は、フリーブロックリスト332から、例えば、ブロックBLK3を選択し、ブロックBLK3をネームスペースNS#2用の書き込み先ブロックとして割り当てる。そして、コントローラ4は、ブロックBLK3にシーケンス番号2を付与する。
【0135】
この動作を繰り返すことで、コントローラ4は、ネームスペースNS#2用の次の書き込み先ブロックとして割り当てられたブロックBLK0、さらに次の書き込み先ブロックとして割り当てられたブロックBLK2に、シーケンス番号3、4を付与する。
【0136】
これにより、ブロック使用順序管理テーブル341-2においては、シーケンス番号1、2、3、4が付与されたブロックそれぞれのブロック識別子として、BLK1、BLK3、BLK0、BLK2が管理される。
【0137】
図8は、実施形態に係るSSD3に含まれるNAND型フラッシュメモリ5に書き込まれるデータについて説明するための図である。
【0138】
ここでは、ブロックBLK1に書き込まれるデータの一例について説明する。図8において、ブロックBLK1内の各行は、ページを表しており、上から順に、ページ0、ページ1、…、ページy-1である。
【0139】
各ページには、例えば、各々が4KiBのサイズを有する4つのデータが、これら4つのデータにそれぞれ対応する4つの論理アドレス(LBA)と共に格納されている。例えば、ページ0に書き込まれている4つのデータはそれぞれ、LBA16、LBA17、LBA18、LBA20に対応する。コントローラ4は、ブロックBLK1内の各ページから、4つのデータとこれら4つのデータに対応する4つのLBAとを読み出すことができ、これによってこれら4つのデータがそれぞれ書き込まれている4つの物理アドレスに対応する4つのLBAを知ることができる。なお、コントローラ4は、各ページにデータとLBAとのペアを格納する代わりに、ブロックBLK1内の最後のページPy-1に、ブロックBLK1に書き込まれたデータそれぞれに対応するLBAのリストを書き込んでもよい。
【0140】
このように、各ブロックにデータと共にLBAを書き込む構成により、たとえ不正電源断によって、NAND型フラッシュメモリ5内のL2Pテーブルにまだ反映されていないDRAM6内の更新されたアドレス変換データが失われた場合であっても、最後に書き込みが行われた幾つかのブロックの内容を解析することによって、NAND型フラッシュメモリ5内のL2Pテーブルを復元することができる。
【0141】
次に、復元処理部24によって実行される復元準備処理の例について説明する。ここでは、非クリアー属性を有するネームスペースNS#2に対する復元準備処理について説明する。
【0142】
まず、L2Pテーブル31-2の更新されたアドレス変換データをNAND型フラッシュメモリ5に書き込む動作について説明する。
【0143】
図9Aは、実施形態に係るSSD3において実行されるL2Pテーブル31-2の復元準備処理について説明するための一つ目の図であり、図9Bは、実施形態に係るSSD3において実行されるL2Pテーブル31-2の復元準備処理について説明するための二つ目の図である。
【0144】
復元処理部24は、L2Pテーブル31-2の更新されたアドレス変換データをDRAM6からNAND型フラッシュメモリ5に書き込む動作を周期的に行う。この動作を行うタイミングはチェックポイントと称される。チェックポイントの周期は、一定時間ごとであってもよいし、特定のアルゴリズムによって決定されてもよい。
【0145】
最初のチェックポイントcp1にて、復元処理部24は、NAND型フラッシュメモリ5上のL2Pテーブル31-2にまだ反映されていないDRAM6内の更新されたアドレス変換データをNAND型フラッシュメモリ5に書き込み、これによって、更新されたアドレス変換データの内容をNAND型フラッシュメモリ5上のL2Pテーブル31-2に反映する。
【0146】
図9Aでは、LBA10、LBA35、LBA290にそれぞれ対応するアドレス変換データが、NAND型フラッシュメモリ5上のL2Pテーブル31-2にまだ反映されていない場合が想定されている。この場合、復元処理部24は、LBA10、LBA35、LBA290にそれぞれ対応するアドレス変換データがNAND型フラッシュメモリ5内のL2Pテーブル31-2に反映されるように、これらLBA10、LBA35、LBA290にそれぞれ対応するアドレス変換データを、更新されたアドレス変換データとして、NAND型フラッシュメモリ5に書き込む。
【0147】
このとき、復元処理部24は、ネームスペースNS#2用の書き込み先ブロックとして現在割り当てられているブロックに付与されているシーケンス番号を、チェックポイント情報として、NAND型フラッシュメモリ5に書き込む。図9Bに示すように、チェックポイントcp1の時点では、ブロックBLK0がネームスペースNS#2用の書き込み先ブロックとして割り当てられている。したがって、復元処理部24は、ブロックBLK0に付与されているシーケンス番号3をチェックポイント情報としてNAND型フラッシュメモリ5に書き込む。
【0148】
次のチェックポイントcp2にて、復元処理部24は、NAND型フラッシュメモリ5上のL2Pテーブル31-2にまだ反映されていないDRAM6内の更新されたアドレス変換データをNAND型フラッシュメモリ5に再び書き込み、これによって、更新されたアドレス変換データの内容をNAND型フラッシュメモリ5上のL2Pテーブル31-2に反映する。
【0149】
図9Aでは、LBA26、LBA34、LBA553にそれぞれ対応するアドレス変換データが、NAND型フラッシュメモリ5上のL2Pテーブル31-2にまだ反映されていない場合が想定されている。この場合、復元処理部24は、LBA26、LBA34、LBA553にそれぞれ対応するアドレス変換データがNAND型フラッシュメモリ5内のL2Pテーブル31-2に反映されるように、これらLBA26、LBA34、LBA553にそれぞれ対応するアドレス変換データを、更新されたアドレス変換データとして、NAND型フラッシュメモリ5に書き込む。
【0150】
このとき、復元処理部24は、ネームスペースNS#2用の書き込み先ブロックとして現在割り当てられているブロックに付与されているシーケンス番号を、チェックポイント情報として、NAND型フラッシュメモリ5に書き込む。図9Bに示すように、チェックポイントcp2の時点では、ブロックBLK20がネームスペースNS#2用の書き込み先ブロックとして割り当てられている。したがって、復元処理部24は、ブロックBLK20に付与されているシーケンス番号8をチェックポイント情報としてNAND型フラッシュメモリ5に書き込む。
【0151】
図9Aに示すように、次のチェックポイントcp3にて、復元処理部24は、LBA7、LBA88、LBA357にそれぞれ対応するアドレス変換データを、更新されたアドレス変換データとして、NAND型フラッシュメモリ5に書き込む。
【0152】
また、復元処理部24は、ネームスペースNS#2用の書き込み先ブロックとして現在割り当てられているブロックに付与されているシーケンス番号をチェックポイント情報としてNAND型フラッシュメモリ5に書き込む。図9Bに示すように、チェックポイントcp3の時点では、ブロックBLK31がネームスペースNS#2用の書き込み先ブロックとして割り当てられている。したがって、復元処理部24は、ブロックBLK31に付与されているシーケンス番号23をチェックポイント情報としてNAND型フラッシュメモリ5に書き込む。
【0153】
不正電源断の後に、ホスト2からSSD3に電力が再び供給された場合、復元処理部24は、最後のチェックポイントにて取得されたチェックポイント情報(シーケンス番号)に基づいて、L2Pテーブル31-2の復元処理のために使用すべきブロック群を特定する。
【0154】
例えば、チェックポイントcp1の直後に不正電源断が起きた場合を想定する。この場合、L2Pテーブル31-2の復元処理では、復元処理部24は、ネームスペースNS#2用の書き込み先ブロックとして現在割り当てられているブロック、つまり不正電源断が起きた時に書き込み先ブロックとして割り当てられていたブロック、に付与されているシーケンス番号をブロック使用順序管理テーブル341-2から取得する。そして、チェックポイントcp1で取得されたシーケンス番号3から、不正電源断が起きた時に書き込み先ブロックとして割り当てられていたブロックに付与されているシーケンス番号までの範囲に属するシーケンス番号それぞれが付与されているブロック群を、L2Pテーブル31-2の復元処理のために使用すべきブロック群として特定する。
【0155】
例えば、ブロックBLK2が書き込み先ブロックとして割り当てられている状態で不正電源断が起きた場合には、不正電源断が起きた時に書き込み先ブロックとして割り当てられていたブロックBLK2に付与されているシーケンス番号は4であるので、チェックポイントcp1で取得されたシーケンス番号3が付与されているブロックBLK0と、シーケンス番号4が付与されているブロックBLK2とが、L2Pテーブル31-2の復元処理のために使用すべきブロック群として特定される。
【0156】
次いで、復元処理部24は、これらブロックBLK0およびブロックBLK2の各々に格納されているLBA群を使用して、ブロックBLK0およびブロックBLK2内の物理アドレスの各々とこれら物理アドレスの各々に格納されているデータに対応するLBAとの間の対応関係を特定する。そして、復元処理部24は、各物理アドレスと各LBAとの間の特定した対応関係を使用して、NAND型フラッシュメモリ5内のL2Pテーブル31-2を最新の内容に復元する。
【0157】
図10は、実施形態に係るSSD3において実行される、クリアー属性を有するネームスペースを作成する動作と、クリアー属性を有するネームスペースに関連付けられているL2Pテーブルのための復元準備処理を省略する動作とを説明するための図である。
【0158】
例えば、スワップ領域として使用されるネームスペースの作成を望む場合、ホスト2は、クリアー属性を指定するネームスペース作成コマンドをSSD3に送信する。コントローラ4がこのネームスペース作成コマンドをホスト2から受信すると、ネームスペース管理コマンド処理部21は、クリアー属性を有するネームスペースを作成する。ネームスペース管理コマンド処理部21は、ネームスペース管理テーブル32を使用することによって、この作成したネームスペースのネームスペース識別子を、クリアー属性を示す属性情報と関連付けて管理する。そして、コントローラ4は、作成されたネームスペースに対応するL2Pテーブルを作成する。また、ネームスペース管理コマンド処理部21によって作成されたネームスペース毎に、コントローラ4は、ブロック管理テーブル33を使用してアクティブブロックリストの管理を行うとともに、ブロック使用順序管理テーブル34を使用してブロック使用順序の管理を行う。
【0159】
ネームスペース管理コマンド処理部21は、ネームスペースを削除することを要求するネームスペース削除コマンドをコントローラ4がホスト2から受信すると、ネームスペース削除コマンドによって指定されたネームスペース識別子を有するネームスペースを削除する。
【0160】
復元処理部24は、クリアー属性を有するネームスペースに関連付けられたL2Pテーブルの復元準備処理をスキップする。復元準備処理は、チェックポイントの度に、NAND型フラッシュメモリ5に格納されているL2Pテーブルにまだ反映されていないDRAM6内の更新されたアドレス変換データをNAND型フラッシュメモリ5に書き込む動作と、チェックポイントの度に、このネームスペース用の書き込み先ブロックとして現在割り当てられているブロックに対して付与されたシーケンス番号を、このL2Pテーブルの復元処理のために使用すべきブロック群を特定するための情報としてNAND型フラッシュメモリ5に書き込む動作と、を含む。
【0161】
図11は、実施形態に係るSSD3において実行されるクリアー処理について説明するための図である。
【0162】
クリアー処理部23は、コントローラ4が、電源断予告通知をホスト2から受信するかまたは不正電源断を検出してから、SSD3に電力が再び供給されて、ホスト2からのコマンドをコントローラ4が処理が可能なレディー状態になるまでの期間に、クリアー処理を実行する。
【0163】
例えば、クリアー処理部23は、SSD3に電力が再び供給されたことに応じ、クリアー属性を有するネームスペースに含まれる論理アドレスの各々が未割り当て状態になるようにクリアー処理を実行してもよい。クリアー処理では、例えば、クリアー処理部23は、クリアー属性を有するネームスペースに関連付けられたL2Pテーブルを、初期状態に設定する、あるいは破棄することによって、クリアー属性を有するネームスペースに含まれる論理アドレスを未割り当て状態にする。
【0164】
図12は、実施形態に係るSSD3において実行されるクリアー処理にて、クリアー属性を持つネームスペースに関連付けられた論理物理アドレス変換テーブルを初期状態に設定または破棄する動作について説明するための図である。
【0165】
ここでは、ネームスペースNS#1に関連付けられたL2Pテーブル31-1、ネームスペースNS#2に関連付けられたL2Pテーブル31-2、…、ネームスペースNS#nに関連付けられたL2Pテーブル31-nの各々が、階層L2Pテーブルとして実現されている場合を想定する。
【0166】
L2Pテーブル31-1は、下位テーブルT1-1、上位テーブルT1-2、および最上位テーブルT1-3を含む。L2Pテーブル31-2は、下位テーブルT2-1、上位テーブルT2-2、および最上位テーブルT2-3を含む。L2Pテーブル31-nは、下位テーブルTn-1、上位テーブルTn-2、および最上位テーブルTn-3を含む。
【0167】
なお、図12では、下位セグメントの数および上位セグメントの数が全てのL2Pテーブル間で同じであるかのように示されているが、実際には、あるL2Pテーブルに含まれる下位セグメントの数と上位セグメントの数とは、そのL2Pテーブルに対応するネームスペースのサイズに応じて決定される。
【0168】
クリアー処理部23は、ネームスペースNS#1~NS#nの中から、クリアー属性を有するネームスペースNS#1およびNS#nを選択し、ネームスペースNS#1およびNS#nに対するクリアー処理を実行する。
【0169】
まず、ネームスペースNS#1に対するクリアー処理について説明する。クリアー処理部23は、ネームスペースNS#1に関連付けられたL2Pテーブル31-1において管理されている論理アドレスのそれぞれを未割り当て状態にする。例えば、クリアー処理部23は、L2Pテーブル31-1に含まれる最上位テーブルT1-3を初期状態に設定するかまたは破棄する。最上位テーブルT1-3が初期状態に設定されるかまたは破棄されると、コントローラ4は、上位テーブルT1-2を参照することができなくなり、さらには、下位テーブルT1-1も参照することができなくなる。
【0170】
よって、最上位テーブルT1-3を初期状態に設定するかまたは破棄することによって、ネームスペースNS#1に含まれる論理アドレスの各々は、いずれも未割り当て状態になる。
【0171】
同様に、クリアー処理部23は、L2Pテーブル31-nにおいて管理されている論理アドレスのそれぞれを未割り当て状態にする。例えば、クリアー処理部23は、L2Pテーブル31-nに含まれる最上位テーブルTn-3を初期状態に設定するかまたは破棄する。これにより、ネームスペースNS#nに含まれる論理アドレスの各々は、いずれも未割り当て状態になる。
【0172】
これにより、クリアー属性を有するネームスペースNS#1に関連付けられているアクティブブロックの全てと、クリアー属性を有するネームスペースNS#nに関連付けられているアクティブブロックの全てとは、無効データしか記憶していないブロックになる。そのため、クリアー処理部23は、クリアー属性を有するネームスペースNS#1とNS#nに関連付けられていたアクティブブロックのブロック識別子を全てフリーブロックリスト332に移動する。
【0173】
図13は、実施形態に係るSSD3において実行されるクリアー処理にて、クリアー属性を有するネームスペースに関連付けられていたブロック(アクティブブロック)の各々をフリーブロックとして管理する動作について説明するための図である。
【0174】
クリアー処理部23が、ネームスペースNS#1に含まれる各論理アドレスを未割り当て状態に設定すると、アクティブブロックリスト331-1によって管理されているどのアクティブブロックに格納されているデータも無効データになる。同様に、クリアー処理部23が、ネームスペースNS#nに含まれる各論理アドレスを未割り当て状態に設定すると、アクティブブロックリスト331-nによって管理されているどのアクティブブロックに格納されているデータも無効データになる。
【0175】
そのため、アクティブブロックリスト331-1によって管理されているブロックには、有効データが書き込まれているブロックが存在しなくなる。クリアー処理部23は、アクティブブロックリスト331-1によって管理されている全てのブロックのブロック識別子を、フリーブロックリスト332に移動させる。
【0176】
同様に、アクティブブロックリスト331-nによって管理されているブロックには、有効データが書き込まれているブロックが存在しなくなる。クリアー処理部23は、アクティブブロックリスト331-nによって管理されている全てのブロックのブロック識別子を、フリーブロックリスト332に移動させる。これにより、クリアー属性を有する各ネームスペースに関連付けられていたアクティブブロックのそれぞれが、データ(またはL2Pテーブルなどの管理情報)の書き込みに利用可能な物理記憶領域として再利用可能となる。
【0177】
図14は、ホスト2において実行される、クリアー属性を有するネームスペースを再フォーマットする処理について説明するための図である。
【0178】
あるネームスペースのLBA0周辺の幾つかのLBAには、このネームスペースのフォーマットに関する情報、例えば、このネームスペースに対応するファイルシステムの種類を示す情報、このネームスペースのマウントポイントを示す情報、等が書き込まれている。クリアー属性を有するネームスペースに対するクリアー処理が実行されると、これらフォーマットに関する情報を、このクリアー属性を有するネームスペースからリードすることができなくなる。したがって、ホスト2は、このクリアー属性を有するネームスペースをデータの書き込みおよび読み出しに再び利用できるようにするために、このクリアー属性を有するネームスペースにフォーマットに関する情報を再び書き込むための再フォーマット処理を実行する。
【0179】
SSD3に電力が再び供給されてコントローラ4がレディー状態になった後、ホスト2は、まず、SSD3によって管理されている個々のネームスペースに関する情報をSSD3から取得して、SSD3によって管理されているネームスペースの中から、クリアー属性を有するネームスペースを特定してもよい。
【0180】
この場合、ホスト2は、特定のネームスペースのNSIDを指定するネームスペース情報取得要求をコントローラ4に送信する。ネームスペース情報取得要求としては、例えば、NVMe規格で規定されているidentifyコマンド(Identify Namespace data structure)を使用し得る。
【0181】
ネームスペース情報取得要求を受信したネームスペース管理コマンド処理部21は、指定されたNSIDを有するネームスペースに関するネームスペース情報をホスト2に送信する。このネームスペース情報には、指定されたNSIDを有するネームスペースに関する様々な情報、例えば、このネームスペースを一意に識別するためのグローバルなネームスペース識別子と、このネームスペースの属性情報であるクリアー識別子と、このネームスペースのサイズ、等が含まれている。グローバルなネームスペース識別子としては、例えば、Namespace Globally Unique Identifier(NGUID)が使用されてもよい。NVMe規格に準拠したストレージデバイスは、複数のコントローラを含み得る。NGUIDは、NVMe規格に準拠したストレージデバイスにおいて管理されている個々のネームスペースを一意に識別可能な識別子である。
【0182】
ホスト2は、このネームスペースがクリアー属性を有するネームスペースであることを確認すると、フォーマット動作の実行をSSD3に指示し、これによってこのネームスペースに対する再フォーマットを実行する。このネームスペースの再フォーマットを実行することにより、このネームスペースのフォーマットに関する情報をこのネームスペースのLBA0周辺の幾つかのLBAに再度書き込むことができる。これにより、ホスト2は、クリアー属性を有するこのネームスペースを例えばスワップ領域として再び利用開始することが可能となる。
【0183】
クリアー属性を有する全てのネームスペースに対する再フォーマット処理が完了した後、ホスト2は、I/Oコマンド(ライトコマンド、リードコマンド)をSSD3に発行して、SSD3と協調して、各ネームスペースへのデータの書き込みおよび各ネームスペースからのデータの読み出しを行う。
【0184】
図15は、実施形態に係るSSD3において実行されるネームスペース作成処理の手順を示すフローチャートである。
【0185】
まず、コントローラ4は、ホスト2からネームスペース作成コマンドを受信する(ステップS101)。ネームスペース作成コマンドは、ネームスペースの作成を要求するネームスペース管理コマンドである。ネームスペース作成コマンドは、作成すべきネームスペースのサイズと、作成すべきネームスペースが有する属性(クリアー属性または非クリアー属性)とを指定する。
【0186】
コントローラ4は、ステップS101で受信したネームスペース作成コマンドがクリアー属性を指定するか否かを判定する(ステップS102)。
【0187】
受信したネームスペース作成コマンドがクリアー属性を指定している場合(ステップS103でYes)、コントローラ4は、クリアー属性を有するネームスペースを作成する(ステップS103)。ステップS103では、コントローラ4は、ネームスペース管理テーブル32を使用することによって、ステップS103で作成されたネームスペースのネームスペース識別子を、クリアー属性を示す属性情報と関連付けて管理する。
【0188】
受信したネームスペース作成コマンドがクリアー属性を指定しない(つまり、非クリアー属性を指定する)場合(ステップS103でNo)、コントローラ4は、非クリアー属性を有するネームスペースを作成する(ステップS104)。コントローラ4は、ネームスペース管理テーブル32を使用することによって、ステップS104で作成されたネームスペースのネームスペース識別子を、非クリアー属性を示す属性情報と関連付けて管理する。
【0189】
コントローラ4は、ステップS103あるいはステップS104において作成したネームスペースに関するネームスペース情報をホスト2に返送する(ステップS105)。ここで、コントローラ4がホスト2に送信するネームスペース情報は、少なくとも、作成したネームスペースのネームスペース識別子を含む。ネームスペース情報は、作成したネームスペースのネームスペース識別子と、作成したネームスペースのサイズと、作成したネームスペースが有する属性(クリアー属性または非クリアー属性)を示す属性情報とを含んでいてもよい。
【0190】
図16は、実施形態に係るSSD3において実行される復元準備処理の手順を示すフローチャートである。
【0191】
コントローラ4は、コントローラ4によって管理されている複数のネームスペースにそれぞれ対応する複数のL2Pテーブルを、復元準備処理の対象となるL2Pテーブルとして一つずつ順番に選択し、選択したL2Pテーブル毎に、以下の処理を実行する。
【0192】
コントローラ4は、まず、復元準備処理の対象となる一つのL2Pテーブルを選択する(ステップS201)。コントローラ4は、ステップS201で選択したL2Pテーブルが関連付けられたネームスペースがクリアー属性を有するか否かを判定する(ステップS202)。
【0193】
選択したL2Pテーブルが関連付けられたネームスペースがクリアー属性を有する場合(ステップS202でYes)、コントローラ4は、復元準備処理を終了する。クリアー属性を有するネームスペースに関連付けられたL2Pテーブルに対しては、復元処理を実行する必要がないためである。
【0194】
選択したL2Pテーブルが関連付けられたネームスペースがクリアー属性を有さない(非クリアー属性を有する)場合(ステップS202でNo)、コントローラ4は、選択したL2Pテーブルに対する復元準備処理をチェックポイント毎に行う。ここでは、選択したL2PテーブルがネームスペースNS#2に関連付けられているL2Pテーブル31-2である場合を想定する。
【0195】
チェックポイントのタイミングに到達した場合、コントローラ4は、まず、DRAM6に格納されている選択したL2Pテーブル31-2のアドレス変換データのうち、NAND型フラッシュメモリ5に格納されているL2Pテーブル31-2にまだ反映されていない更新されたアドレス変換データを、NAND型フラッシュメモリ5に書き込む(ステップS203)。
【0196】
そして、コントローラ4は、ネームスペースNS#2用の書き込み先ブロックとして現在割り当てられているブロックに対して付与されたシーケンス番号を、L2Pテーブル31-2の復元のために使用すべきブロック群を特定するためのチェックポイント情報として、NAND型フラッシュメモリ5に書き込む(ステップS204)。ステップS204では、コントローラ4は、例えば、このシーケンス番号を、現在のチェックポイントを特定するためのチェックポイント番号と一緒に、NAND型フラッシュメモリ5にチェックポイント情報として記録する処理を行う。
【0197】
図17は、ホスト2から電源断予告通知を受信してから、SSD3に電力が再び供給されてSSD3のコントローラ4がレディー状態になるまでの期間に、実施形態に係るSSD3において実行される処理の手順を示すフローチャートである。
【0198】
ここでは、SSD3に電力が再び供給された後に、クリアー処理が実行される場合を想定する。
【0199】
コントローラ4は、ホスト2から電源断予告通知またはサスペンド指示を受信する(ステップS301)。コントローラ4は、ステップS301で受信した通知/指示が電源断予告通知またはサスペンド指示のいずれであるか、つまり実行すべき処理がシャットダウン準備処理またはサスペンド準備処理のいずれであるかを判定する(ステップS302)。
【0200】
ステップS301で受信した通知/指示が電源断予告通知であった場合(ステップS302でシャットダウン)、コントローラ4は、シャットダウン準備処理を実行する(ステップS303)。シャットダウン準備処理では、コントローラ4は、非クリアー属性を有するネームスペースに関連付けられたL2Pテーブルを選んで、更新されたアドレス変換データをNAND型フラッシュメモリ5に書き込む処理を実行する。
【0201】
シャットダウン準備処理が完了すると、コントローラ4は、シャットダウン準備処理が完了したことをホスト2に通知する(ステップS304)。ホスト2は、SSD3のシャットダウン準備処理が完了したことを確認すると、SSD3への電力の供給を断つ。
【0202】
SSD3への電力の供給が断たれた後に、ホスト2からSSD3に電力が再び供給された場合(ステップS305で電源オン)、コントローラ4は、コントローラ4の状態をホスト2からのコマンドを処理可能なレディー状態にするための一連の初期化シーケンスを開始する。この初期化シーケンス中に、コントローラ4は、クリアー属性を有するネームスペースに対するクリアー処理を実行する(ステップS306)。ステップS306では、コントローラ4は、クリアー属性を有するネームスペースの論理アドレス範囲に含まれる各論理アドレスを未割り当て状態にし、さらに、クリアー属性を有するネームスペースに関連付けられていた各ブロックのブロック識別子をフリーブロックリスト332に移動させる。
【0203】
また、この初期化シーケンス中に、コントローラ4は、NAND型フラッシュメモリ5からL2Pテーブル31-1、…、31-nの各々のアドレス変換データの少なくとも一部をDRAM6にロードする動作も実行する。例えば、クリアー属性を有するネームスペースNS#1に関連付けられたL2Pテーブル31-1が破棄された場合には、ネームスペースNS#1用の新たなL2Pテーブルが作成され、この作成されたL2Pテーブルのアドレス変換データの少なくとも一部がDRAM6にロードされる。
【0204】
初期化シーケンスが完了すると、コントローラ4は、ホスト2からのコマンドの処理が可能なレディー状態となる。コントローラ4は、コントローラ4がレディー状態になったことをホスト2に通知する(ステップS310)。
【0205】
ステップS301で受信した通知/指示がサスペンド指示であった場合(ステップS302でサスペンド)、コントローラ4は、サスペンド準備処理を実行する(ステップS307)。サスペンド準備処理では、コントローラ4は、全てのネームスペースに対応するL2Pテーブルについて、DRAM6に格納されている更新されたアドレス変換データをNAND型フラッシュメモリ5に書き込む処理を実行する。そして、コントローラ4は、SSD3の現在の電源状態を、オン状態(D0ステート)から、サスペンド指示で指定された低電力状態(D1ステート、D2ステート、またはD3ステート)に遷移させるための処理を実行する。
【0206】
サスペンド準備処理が完了すると、コントローラ4は、サスペンド準備処理が完了したことをホスト2に通知する(ステップS308)。サスペンド指示で指定された遷移先の電源状態がD3ステートである場合には、ホスト2は、SSD3のサスペンド準備処理が完了したことを確認すると、SSD3への電力の供給を断つ。
【0207】
SSD3の電源状態が低電力状態に遷移した後に、レジューム指示をホスト2から受信すると(ステップS309)、コントローラ4は、SSD3の電源状態を低電力状態からオン状態(D0ステート)に復帰させるための処理を開始する。SSD3がD3ステートに入っていた場合には、ホスト2からSSD3に電力が供給されるとともに、ホスト2からSSD3にレジューム指示が送信されてもよい。
【0208】
SSD3の電源状態が低電力状態からオン状態(D0ステート)に復帰して、コントローラ4がホスト2からのコマンドを処理可能なレディー状態になると、コントローラ4は、コントローラ4がレディー状態になったことをホスト2に通知する(ステップS310)。
【0209】
図18は、不正電源断の検出から、SSD3に電力が再び供給されてSSD3のコントローラ4がレディー状態になるまでの期間に、実施形態に係るSSD3において実行される処理の手順を示すフローチャートである。
【0210】
ここでは、SSD3に電力が再び供給された後に、クリアー処理が実行される場合を想定する。電源回路7がPLP機能を有している場合には、図17を参照して説明したシャットダウン準備処理は不正電源断が起きた時にも実行される。電源回路7がPLP機能を有していない場合には、不正電源断が起きた時にはシャットダウン準備処理は実行されない。以下では、電源回路7がPLP機能を有していない場合を想定する。
【0211】
コントローラ4は、電源断予告通知をホスト2から受信する前に電源回路7から電源オフ検出通知を受信した場合、不正電源断が起きたことを検出する(ステップS401)。
【0212】
不正電源断によってSSD3への電力の供給が断たれた後に、ホスト2からSSD3に電力が再び供給された場合(ステップS402で電源オン)、コントローラ4は、初期化シーケンスを開始する。この初期化シーケンス中に、コントローラ4は、クリアー属性を有するネームスペースに対するクリアー処理を実行する(ステップS403)。ステップS403では、コントローラ4は、クリアー属性を有するネームスペースに含まれる論理アドレスの各々を未割り当て状態にし、さらに、クリアー属性を有するネームスペースに関連付けられていたアクティブブロックをフリーブロックリスト332に移動させる。
【0213】
初期化シーケンス中に、コントローラ4は、さらに、非クリアー属性を有する各ネームスペースに対応するL2Pテーブルの復元処理を実行する(ステップS404)。クリアー属性を有するネームスペースに関連付けられたL2Pテーブルは、初期状態に設定あるいは破棄されているため、コントローラ4は、非クリアー属性を有する各ネームスペースに関連付けられたL2Pテーブルにのみ復元処理を実行する。
【0214】
また、この初期化シーケンス中に、コントローラ4は、NAND型フラッシュメモリ5からL2Pテーブル31-1、…、31-nの各々のアドレス変換データの少なくとも一部をDRAM6にロードする動作も実行する。例えば、クリアー属性を有するネームスペースNS#1に関連付けられたL2Pテーブル31-1が破棄された場合には、ネームスペースNS#1用の新たなL2Pテーブルが作成され、この作成されたL2Pテーブルのアドレス変換データの少なくとも一部がDRAM6にロードされる。
【0215】
初期化シーケンスが完了すると、コントローラ4は、ホスト2からのコマンドの処理が可能なレディー状態となる。コントローラ4は、コントローラ4がレディー状態になったことをホスト2に通知する(ステップS405)。
【0216】
図19は、実施形態に係るSSD3において実行されるシャットダウン準備処理の手順を示すフローチャートである。
【0217】
ホスト2から電源断予告通知を受信した場合、コントローラ4は、シャットダウン準備処理を開始する。電源回路7がPLP機能を有している場合は、不正電源断が起きたことを検出した場合も、コントローラ4は、シャットダウン準備処理を開始する。
【0218】
シャットダウン準備処理では、コントローラ4は、まず、DRAM6に更新されたアドレス変換データが存在し、且つ、その更新されたアドレス変換データの中に、まだステップS502~ステップS505の処理が施されていない未選択のアドレス変換データが存在するか否かを判定する(ステップS501)。未選択のアドレス変換データが存在する場合には(ステップS501でYes)、コントローラ4は、DRAM6内の更新されたアドレス変換データのうち、まだ選択されていないアドレス変換データを選択する(ステップS502)。DRAM6内に更新されたアドレス変換データが存在しない場合、または、更新されたアドレス変換データ全てに対してステップS502~ステップS505の処理が施されて未選択のアドレス変換データが存在しなくなった場合は(ステップS501でNo)、図19の処理が終了される。
【0219】
ステップS502では、コントローラ4は、NAND型フラッシュメモリ5に格納されているL2Pテーブル31-1、…、31-nにはまだ反映されていないDRAM6内の更新されたアドレス変換データの中から、まだ選択されていない任意のアドレス変換データを選択する。
【0220】
コントローラ4は、ステップS502において選択されたアドレス変換データがクリアー属性を有するネームスペースに関連付けられているか否かを判定する(ステップS503)。つまり、コントローラ4は、選択されたアドレス変換データが含まれているL2Pテーブルに関連付けられているネームスペースがクリアー属性を有するか否かを判定する。
【0221】
ステップS502において選択されたアドレス変換データがクリアー属性を有するネームスペースに関連付けられている場合(ステップS503でYes)、コントローラ4は、選択されたアドレス変換データをNAND型フラッシュメモリ5に書き込む処理の実行をスキップする(ステップS504)。
【0222】
ステップS502において選択されたアドレス変換データが非クリアー属性を有するネームスペースに関連付けられている場合(ステップS503でNo)、コントローラ4は、選択されたアドレス変換データをNAND型フラッシュメモリ5へ書き込む処理を実行する(ステップS505)。これにより、選択されたアドレス変換データの内容は、この選択されたアドレス変換データに対応するNAND型フラッシュメモリ5内のL2Pテーブルに反映される。
【0223】
ステップS504あるいはステップS505の後、処理はステップS501に戻る。ステップS501で、コントローラ4は、DRAM6内の更新されたアドレス変換データの中に、未選択のアドレス変換データが存在するか否かを再び判定する。
【0224】
DRAM6内の更新されたアドレス変換データの中に、未選択のアドレス変換データが存在する場合(ステップS501でYes)、コントローラ4は、ステップS502~S505の処理を再度実行する。
【0225】
DRAM6内の更新されたアドレス変換データの中に、未選択のアドレス変換データが存在しなくなった場合(ステップS501でNo)、コントローラ4は、処理を終了する。
【0226】
図20は、実施形態に係るSSD3において実行されるサスペンド準備処理の手順を示すフローチャートである。
【0227】
ホスト2からサスペンド指示を受信すると、コントローラ4は、サスペンド準備処理を開始する。
【0228】
サスペンド準備処理では、コントローラ4は、まず、DRAM6に更新されたアドレス変換データが存在し、且つ、その更新されたアドレス変換データの中に、まだステップS602~ステップS603の処理が施されていない未選択のアドレス変換データが存在するか否かを判定する(ステップS601)。未選択のアドレス変換データが存在する場合には(ステップS601でYes)、コントローラ4は、DRAM6内の更新されたアドレス変換データのうち、まだ選択されていないアドレス変換データを選択する(ステップS602)。DRAM6内に更新されたアドレス変換データが存在しない場合、または、更新されたアドレス変換データ全てに対してステップS602~ステップS603の処理が施されて未選択のアドレス変換データが存在しなくなった場合は(ステップS601でNo)、図20の処理が終了される。
【0229】
ステップS602では、コントローラ4は、NAND型フラッシュメモリ5に格納されているL2Pテーブル31-1、…、31-nにまだ反映されていないDRAM6内の更新されたアドレス変換データの中から、まだ選択されていない任意のアドレス変換データを選択する。
【0230】
コントローラ4は、ステップS602で選択されたアドレス変換データをNAND型フラッシュメモリ5に書き込む(ステップS603)。これにより、選択されたアドレス変換データの内容は、NAND型フラッシュメモリ5内のこの選択されたアドレス変換データに対応するL2Pテーブルに反映される。
【0231】
ステップS603の後、処理はステップS601に戻る。ステップS601で、コントローラ4は、DRAM6内の更新されたアドレス変換データの中に、未選択のアドレス変換データが存在するか否かを再び判定する。
【0232】
DRAM6内の更新されたアドレス変換データの中に、まだ未選択のアドレス変換データが存在する場合(ステップS601でYes)、つまりNAND型フラッシュメモリ5に格納されているL2Pテーブル31-1、…、31-nにまだ反映されていない更新されたアドレス変換データがDRAM6内に残っている場合、コントローラ4は、ステップS602~S603の処理を再度実行する。
【0233】
DRAM6内の更新されたアドレス変換データの中に、未選択のアドレス変換データが存在しなくなった場合(ステップS601でNo)、つまりNAND型フラッシュメモリ5に格納されているL2Pテーブル31-1、…、31-nにまだ反映されていない更新されたアドレス変換データがDRAM6内に残っていない場合、コントローラ4は、処理を終了する。
【0234】
図21は、実施形態に係るSSD3において実行されるクリアー処理の手順を示すフローチャートである。
【0235】
コントローラ4は、ネームスペース管理テーブル32を参照することによって、クリアー属性を有するネームスペースが存在するか否かを判定する(ステップS701)。
【0236】
クリアー属性を有するネームスペースが存在する場合(ステップS701でYes)、コントローラ4は、例えば、クリアー属性を有するネームスペースに関連付けられたL2Pテーブルを初期状態に設定するか、または破棄することによって、クリアー属性を有するネームスペースに含まれる論理アドレス範囲に含まれる各論理アドレスを未割り当て状態にする(ステップS702)。クリアー属性を有するネームスペースに関連付けられたL2Pテーブルが階層L2Pテーブルによって実現されている場合には、ステップS702では、コントローラ4は、階層L2Pテーブル内の最上位階層レベルのテーブルを初期状態に設定するか、または破棄する。
【0237】
そして、コントローラ4は、クリアー属性を有するネームスペースに関連付けられていた全てのブロックのブロック識別子をフリーブロックリスト332に移動させ、これら全てのブロックをフリーブロックとして管理する(ステップS703)。
【0238】
クリアー属性を有するネームスペースが存在しない場合(ステップS701でNo)、コントローラ4は、クリアー処理を終了する。
【0239】
図22は、SSD3に電力が再び供給された後に、実施形態に係るSSD3とホスト2とにおいて実行される処理の手順を示すフローチャートである。
【0240】
SSD3への電力の供給が断たれた後に、SSD3に電力が再び供給されると、SSD3内のコントローラ4は、クリアー処理を含む初期化処理を開始する(ステップS801)。初期化処理中においては、コントローラ4は、NAND型フラッシュメモリ5内のL2Pテーブル31-1~31-nの各々のアドレス変換データの少なくとも一部をDRAM6上にロードする処理も実行する。
【0241】
コントローラ4がレディー状態なると、コントローラ4は、そのことをホスト2に通知する(S802)。コントローラ4がレディー状態になったことがコントローラ4から通知されると、ホスト2は、特定のネームスペースのNSIDを指定するネームスペース情報取得要求をコントローラ4に送信する(ステップS803)。ホスト2からネームスペース情報の取得要求を受信したコントローラ4は、指定されたNSIDを有するネームスペースに関するネームスペース情報をホスト2に送信する(ステップS804)。ネームスペース情報には、このネームスペースを一意に識別するためのグローバルなネームスペース識別子と、このネームスペースの属性情報であるクリアー識別子と、このネームスペースのサイズ、等が含まれている。
【0242】
ホスト2は、このネームスペースがクリアー属性を有するネームスペースであることを確認すると、このネームスペースのフォーマットに関する情報をこのネームスペースのLBA0周辺の幾つかのLBAに書き込むための再フォーマット処理を実行する(ステップS805)。これにより、既にクリアー処理されたこのネームスペースに対するアクセスを正常に実行することが可能となる。
【0243】
以上説明したように、本実施形態によれば、コントローラ4は、クリアー属性を指定するネームスペース作成コマンドをホスト2から受信した場合、クリアー属性を有するネームスペースを作成する。クリアー属性を有するネームスペースを識別するネームスペース識別子を指定するライトコマンドをホスト2から受信したことに応じ、コントローラ4は、受信したライトコマンドに関連付けられたデータをNAND型フラッシュメモリ5に書き込む動作を実行する。また、コントローラ4は、このデータに対応する論理アドレスに、このデータが書き込まれたNAND型フラッシュメモリ5の物理アドレスがマッピングされるように、このクリアー属性を有するネームスペースに対応するL2Pテーブルを更新する動作を実行する。
【0244】
そして、電源断予告通知の受信または不正電源断の検出から、SSD3に電力が再び供給されてコントローラ4がレディー状態になるまでの期間に、コントローラ4は、クリアー属性を有するネームスペースの論理アドレス範囲に含まれる論理アドレスの各々を、NAND型フラッシュメモリ5の物理アドレスがマッピングされていない未割り当て状態にする。この結果、クリアー属性を有するネームスペースに含まれる論理アドレス範囲に関連付けられているデータは全て無効データとなるので、このクリアー属性を有するネームスペースは、データがまだ書き込まれていない作成直後のネームスペースと同様の状態となる。よって、クリアー属性を有するネームスペースに関連付けられている全てのブロックは、有効データを含まないフリーブロックとなる。
【0245】
したがって、例えば、クリアー属性を有するネームスペースを、SSD3の電源サイクルを跨いで保持する必要が無いデータの格納先として使用することにより、SSD3の電源サイクルを跨いで保持する必要が無いデータによってNAND型フラッシュメモリ5内の物理記憶領域が無駄に使用されることを防止することができる。よって、NAND型フラッシュメモリ5の消耗を低減することができる。
【0246】
また、コントローラ4が電源断予告通知をホスト2から受信した場合、クリアー属性を有するネームスペースに対応するL2Pテーブルについては、コントローラ4は、DRAM6に格納されている更新されたアドレス変換データをNAND型フラッシュメモリ5に書き込む処理を実行しない。このように、クリアー属性を有するネームスペースに対応するL2Pテーブルを最新の内容に維持するための処理を省略することにより、NAND型フラッシュメモリ5への書き込み量を低減することができるので、NAND型フラッシュメモリ5の不要な消耗をさらに低減することが可能となる。
【0247】
また、SSD3がオン状態(D0ステート)である間は、コントローラ4は、クリアー属性を有するネームスペースに対応するL2Pテーブルに対する復元準備処理の実行も省略する。
【0248】
このように、本実施形態では、クリアー属性を有するネームスペースに関連付けられたL2Pテーブルのアドレス変換データに関して、さまざまな処理が省略されることにより、コントローラ4の負荷を低減でき、またNAND型フラッシュメモリ5の消耗を抑えることができる。
【0249】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0250】
1…情報処理システム、2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、6…DRAM、7…電源回路、10…バス、11…ホストインタフェース、12…CPU、13…NANDインタフェース、14…DRAMインタフェース、15…DMAC、16…SRAM、17…ECCエンコード/デコード部、21…ネームスペース管理コマンド処理部、22…I/Oコマンド処理部、23…クリアー処理部、24…復元処理部、31-1~31-n…L2Pテーブル、32…ネームスペース管理テーブル、33…ブロック管理テーブル、34…ブロック使用順序管理テーブル。
図1
図2
図3
図4
図5
図6
図7
図8
図9A
図9B
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22