(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-20
(45)【発行日】2024-10-01
(54)【発明の名称】メモリシステム及び情報処理システム
(51)【国際特許分類】
G06F 12/02 20060101AFI20240924BHJP
G06F 12/00 20060101ALI20240924BHJP
【FI】
G06F12/02 510A
G06F12/00 597U
(21)【出願番号】P 2020171750
(22)【出願日】2020-10-12
【審査請求日】2023-09-11
(73)【特許権者】
【識別番号】318010018
【氏名又は名称】キオクシア株式会社
(74)【代理人】
【識別番号】110001737
【氏名又は名称】弁理士法人スズエ国際特許事務所
(72)【発明者】
【氏名】佐々木 勇輝
(72)【発明者】
【氏名】菅野 伸一
(72)【発明者】
【氏名】栗田 貴宏
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2018-041204(JP,A)
【文献】特開2013-152676(JP,A)
【文献】特開2012-063882(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 12/02
G06F 3/06-3/08
(57)【特許請求の範囲】
【請求項1】
ホストに接続可能なメモリシステムにおいて、
不揮発性メモリと、
前記不揮発性メモリに書き込まれているデータの有効性を管理するためのデータマップとを
具備し、
前記データマップは、少なくとも第1階層及び前記第1階層よりも上位の第2階層から構成される階層構造を有し、前記第1階層に対応する複数の第1断片テーブル及び前記第2階層に対応する第2断片テーブルを含み、
前記複数の第1断片テーブルの各々は、当該第1断片テーブルに割り当てられている前記不揮発性メモリ内の物理アドレスの範囲に書き込まれている所定のサイズのデータの各々の有効性を管理するために用いられ、
前記第2断片テーブルは、前記第1断片テーブル毎に、当該第1断片テーブルを参照するための参照先情報を管理するために用いられる
メモリシステム。
【請求項2】
前記第2断片テーブルは、
前記第1断片テーブルに割り当てられている物理アドレスの範囲に書き込まれている前記所定のサイズのデータの各々の有効性が共通していない場合に、前記参照先情報を管理するために用いられ、
前記第1断片テーブルに割り当てられている物理アドレスの範囲に書き込まれている前記所定のサイズのデータの各々の有効性が共通している場合に、当該所定のサイズのデータの有効性を一括して管理するために用いられる
請求項1記載のメモリシステム。
【請求項3】
前記データマップは、複数の前記第2断片テーブルを含み、かつ、前記第2階層よりも上位の第3階層に対応する第3断片テーブルを更に含み、
前記第3断片テーブルは、前記第2断片テーブル毎に、当該第2断片テーブルを参照するための参照先情報を管理するために用いられる
請求項1または2記載のメモリシステム。
【請求項4】
前記第1断片テーブル及び前記第2断片テーブルは、同一のデータ構造を有し、
前記第1断片テーブルは、予め定められた数の各エントリにおいて複数の所定のサイズのデータの有効性を管理するために用いられ、
前記第2断片テーブルは、前記予め定められた数の各エントリにおいて前記参照先情報を管理するために用いられる
請求項1または2記載のメモリシステム。
【請求項5】
前記ホストが前記メモリシステムにアクセスする際に使用する論理アドレスと前記不揮発性メモリ内のデータが書き込まれている物理アドレスとの対応関係を管理するためのアドレス変換テーブルを更に具備し、
前記アドレス変換テーブルは、複数の階層から構成される階層構造を有し、前記複数の階層に対応する複数の第4断片テーブルを含み、
前記アドレス変換テーブルに含まれる複数の第4断片テーブルの各々は、前記第1及び第2断片テーブルと同一のデータ構造を有する
請求項4記載のメモリシステム。
【請求項6】
前記第1断片テーブルのエントリの数がN、前記第1断片テーブルの1つのエントリにおいて有効性が管理される前記所定のサイズのデータの数がMである場合、M=y×N^x(ただし、xは0以上の整数、yは1以上N未満の整数または1以上N未満の整数の逆数)を満たす請求項5記載のメモリシステム。
【請求項7】
前記Mは、前記Nの累乗である請求項6記載のメモリシステム。
【請求項8】
前記Mは、前記Nと等しい請求項6記載のメモリシステム。
【請求項9】
前記Mは、前記メモリシステムにおける演算ビット幅に対応している請求項6~8のいずれか一項に記載のメモリシステム。
【請求項10】
前記データマップが有する階層構造を構成する階層の
数である第1数は、前記アドレス変換テーブルが有する階層構造を構成する階層の
数である第2数よりも少ない請求項5~9のいずれか一項に記載のメモリシステム。
【請求項11】
前記不揮発性メモリは、NAND型フラッシュメモリである請求項1~10のいずれか一項に記載のメモリシステム。
【請求項12】
ホストと、前記ホストと通信可能に接続されているメモリシステムとを備える情報処理システムにおいて、
前記メモリシステムは、不揮発性メモリを備え、
前記ホストは、前記不揮発性メモリに書き込まれているデータの有効性を管理するためのデータマップを備え、
前記データマップは、少なくとも第1階層及び前記第1階層よりも上位の第2階層から構成される階層構造を有し、前記第1階層に対応する複数の第1断片テーブル及び前記第2階層に対応する第2断片テーブルを含み、
前記複数の第1断片テーブルの各々は、当該第1断片テーブルに割り当てられている前記不揮発性メモリ内の物理アドレスの範囲に書き込まれている所定のサイズのデータの各々の有効性を管理するために用いられ、
前記第2断片テーブルは、前記第1断片テーブル毎に、当該第1断片テーブルを参照するための参照先情報を管理するために用いられる
情報処理システム。
【請求項13】
前記第2断片テーブルは、
前記第1断片テーブルに割り当てられている物理アドレスの範囲に書き込まれている前記所定のサイズのデータの各々の有効性が共通していない場合に、前記参照先情報を管理するために用いられ、
前記第1断片テーブルに割り当てられている物理アドレスの範囲に書き込まれている前記所定のサイズのデータの各々の有効性が共通している場合に、当該所定のサイズのデータの有効性を一括して管理するために用いられる
請求項12記載の情報処理システム。
【請求項14】
前記データマップは、複数の前記第2断片テーブルを含み、かつ、前記第2階層よりも上位の第3階層に対応する第3断片テーブルを更に含み、
前記第3断片テーブルは、前記第2断片テーブル毎に、当該第2断片テーブルを参照するための参照先情報を管理するために用いられる
請求項12または13記載の情報処理システム。
【請求項15】
前記第1断片テーブル及び前記第2断片テーブルは、同一のデータ構造を有し、
前記第1断片テーブルは、予め定められた数の各エントリにおいて複数の所定のサイズのデータの有効性を管理するために用いられ、
前記第2断片テーブルは、前記予め定められた数の各エントリにおいて前記参照先情報を管理するために用いられる
請求項12または13記載の情報処理システム。
【請求項16】
前記ホストは、前記ホストが前記メモリシステムにアクセスする際に使用する論理アドレスと前記不揮発性メモリ内のデータが書き込まれている物理アドレスとの対応関係を管理するためのアドレス変換テーブルを更に備え、
前記アドレス変換テーブルは、複数の階層から構成される階層構造を有し、前記複数の階層に対応する複数の第4断片テーブルを含み、
前記アドレス変換テーブルに含まれる複数の第4断片テーブルの各々は、前記第1及び第2断片テーブルと同一のデータ構造を有する
請求項15記載の情報処理システム。
【請求項17】
前記第1断片テーブルのエントリの数がN、前記第1断片テーブルの1つのエントリにおいて有効性が管理される前記所定のサイズのデータの数がMである場合、M=y×N^x(ただし、xは0以上の整数、yは1以上N未満の整数または1以上N未満の整数の逆数)を満たす請求項16記載の情報処理システム。
【請求項18】
前記Mは、前記Nの累乗である請求項17記載の情報処理システム。
【請求項19】
前記Mは、前記Nと等しい請求項17記載の情報処理システム。
【請求項20】
前記Mは、前記メモリシステムにおける演算ビット幅に対応している請求項17~19のいずれか一項に記載の情報処理システム。
【請求項21】
前記データマップが有する階層構造を構成する階層の
数である第1数は、前記アドレス変換テーブルが有する階層構造を構成する階層の
数である第2数よりも少ない請求項16~20のいずれか一項に記載の情報処理システム。
【請求項22】
前記不揮発性メモリは、NAND型フラッシュメモリである請求項12~21のいずれか一項に記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、メモリシステム及び情報処理システムに関する。
【背景技術】
【0002】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。このようなメモリシステムの一例としては、例えばNAND型フラッシュメモリを備えるソリッドステートドライブ(SSD:Solid State Drive)が知られている。
【0003】
ところで、上記した不揮発性メモリに書き込まれているデータの有効性(つまり、当該データが有効であるか無効であるか)はデータマップを用いて管理されるが、当該データの有効性を効率的に管理することが望まれている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
そこで、本発明が解決しようとする課題は、不揮発性メモリに書き込まれているデータの有効性を効率的に管理することが可能なメモリシステム及び情報処理システムを提供することにある。
【課題を解決するための手段】
【0006】
実施形態によれば、ホストに接続可能なメモリシステムが提供される。前記メモリシステムは、不揮発性メモリと、前記不揮発性メモリに書き込まれているデータの有効性を管理するためのデータマップとを具備する。前記データマップは、少なくとも第1階層及び前記第1階層よりも上位の第2階層から構成される階層構造を有し、前記第1階層に対応する複数の第1断片テーブル及び前記第2階層に対応する第2断片テーブルを含む。前記複数の第1断片テーブルの各々は、当該第1断片テーブルに割り当てられている前記不揮発性メモリ内の物理アドレスの範囲に書き込まれている所定のサイズのデータの各々の有効性を管理するために用いられる。前記第2断片テーブルは、前記第1断片テーブル毎に、当該第1断片テーブルを参照するための参照先情報を管理するために用いられる。
【図面の簡単な説明】
【0007】
【
図1】実施形態に係るメモリシステムを含む情報処理システムの構成の一例を示すブロック図。
【
図2】実施形態におけるLUTについて概念的に説明するための図。
【
図3】実施形態におけるLUT断片テーブルのデータ構造一例を示す図。
【
図4】実施形態の比較例におけるVDMについて説明するための図。
【
図5】実施形態におけるVDMについて概念的に説明するための図。
【
図6】実施形態における第1VDM断片テーブルのデータ構造の一例を示す図。
【
図7】実施形態における第2VDM断片テーブルのデータ構造の一例を示す図。
【
図8】実施形態における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示す図。
【
図9】実施形態における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示す図。
【
図10】実施形態における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示す図。
【
図11】実施形態における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示す図。
【
図12】実施形態における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示す図。
【
図13】実施形態における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示す図。
【
図14】実施形態における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示す図。
【
図15】実施形態における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示す図。
【
図16】実施形態における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示す図。
【
図17】実施形態における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示す図。
【
図18】ホストから書き込みコマンドが送信された場合の実施形態に係るメモリシステムの処理手順の一例を示すフローチャート。
【
図19】ホストからTrimコマンドが送信された場合の実施形態に係るメモリシステムの処理手順の一例を示すフローチャート。
【
図20】不揮発性メモリ内の特定のPBAに書き込まれているデータが有効である無効であるかを確認する際の実施形態に係るメモリシステムの処理手順の一例を示すフローチャート。
【発明を実施するための形態】
【0008】
以下、図面を参照して、実施形態について説明する。
図1は、本実施形態に係るメモリシステムを含む情報処理システムの構成の一例を示すブロック図である。
【0009】
本実施形態において、メモリシステムは、不揮発性メモリにデータ(ユーザデータ)を書き込み、当該不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、例えばソリッドステートドライブ(SSD:Solid State Drive)として実現されてもよいし、メモリカード等の他のストレージデバイスとして実現されてもよい。本実施形態においては、メモリシステムがSSDとして実現されている場合を想定する。
【0010】
図1に示すように、情報処理システム1は、ホスト2及びメモリシステム3を含む。ホスト2は、メモリシステム3に対してホスト装置として動作する情報処理装置であり、例えばパーソナルコンピュータ、サーバ装置、携帯電話、撮像装置、携帯端末(タブレットコンピュータまたはスマートフォン等)、ゲーム機器または車載端末(カーナビゲーションシステム等)として実現され得る。
【0011】
メモリシステム3は、ホスト2に接続可能に構成されており、不揮発性メモリ4と、当該不揮発性メモリ4に対するデータの書き込み及び読み出しを制御するコントローラ5(制御回路)とを含む。なお、不揮発性メモリ4は、コントローラ5に対して着脱可能に構成されていてもよい。これによれば、メモリシステム3のメモリ容量を自由に拡張することができる。
【0012】
上記したようにメモリシステム3がSSDとして実現されている場合、不揮発性メモリ4は、例えばNAND型フラッシュメモリである。この場合、不揮発性メモリ4(NAND型フラッシュメモリ)は、マトリクス状に配置された複数のメモリセル(メモリセルアレイ)を含む。なお、不揮発性メモリ4は、2次元構造のNAND型フラッシュメモリであってもよいし、3次元構造のNAND型フラッシュメモリであってもよい。
【0013】
また、不揮発性メモリ4のメモリセルアレイは複数のブロックを含み、当該ブロックの各々は多数のページによって編成される。メモリシステム3(SSD)において、ブロックの各々は、データの消去単位として機能する。また、ページの各々は、データ書き込み動作及びデータ読み込み動作の単位である。
【0014】
また、不揮発性メモリ4には各種データが書き込まれるが、不揮発性メモリ4は、LUT(Look Up Table)と称されるアドレス変換テーブル(以下、単にLUTと表記)41を更に格納する。なお、LUT41は、L2P(Logical address to Physical address)とも称される。LUT41は、ホスト2がメモリシステム3にアクセスする(不揮発性メモリ4にデータを書き込むまたは不揮発性メモリ4からデータを読み出す)際に使用する論理アドレスと不揮発性メモリ4内のデータが書き込まれている物理的な位置を示す物理アドレスとの対応関係を管理するためのデータに相当する。換言すれば、LUT41には、論理アドレスの各々に対応づけて当該論理アドレスに対応する物理アドレスが格納されている。
【0015】
なお、不揮発性メモリ4がNAND型フラッシュメモリである場合、LUT41において管理される論理アドレスは論理ブロックアドレス(LBA:Logical Block Address)であり、物理アドレスは物理ブロックアドレス(PBA:Physical Block Address)である。以下の説明においては、論理アドレスをLBA、物理アドレスをPBAとして説明する。
【0016】
また、不揮発性メモリ4は、VDM(Valid Data Map)と称されるデータマップ(以下、単にVDMと表記)42を更に格納する。VDM42は、不揮発性メモリ4内の物理アドレスに書き込まれているデータの有効性(つまり、当該データが有効であるか無効であるか)を管理するためのデータに相当する。
【0017】
なお、LUT41及びVDM42のうちの少なくとも一方は、例えば不揮発性メモリ4以外の不揮発性メモリに格納されていてもよい。また、不揮発性メモリ4は、データ、LUT41及びVDM42を格納するメモリ(領域)を区分けするように構成されていてもよい。
【0018】
コントローラ5は、通信インタフェース制御部51、書き込みバッファメモリ52、読み出しバッファメモリ53、不揮発性メモリコントローラ54、メモリ55及びプロセッサ56を含む。なお、通信インタフェース制御部51、書き込みバッファメモリ52、読み出しバッファメモリ53、不揮発性メモリコントローラ54、メモリ55及びプロセッサ56は、内部バスIBにより電気的に接続されている。
【0019】
通信インタフェース制御部51は、外部装置(例えば、ホスト2)とメモリシステム3との間の通信を制御する。具体的には、通信インタフェース制御部51は、ホスト2からの各種コマンドを受信する。ホスト2からの各種コマンドには、例えば書き込みコマンド(ライト要求)及び読み出しコマンド(リード要求)等が含まれる。
【0020】
なお、通信インタフェース制御部51によって受信される書き込みコマンドには、当該書き込みコマンドに基づいて不揮発性メモリ4に書き込まれるデータ及びホスト2が当該データにアクセスする際に使用するLBAが含まれる。また、通信インタフェース制御部51によって受信される読み出しコマンドには、当該読み出しコマンドに基づいて読み出されるデータにホスト2がアクセスする際に使用するLBA(つまり、当該データに対応するLBA)が含まれる。
【0021】
ここで、通信インタフェース制御部51によって書き込みコマンドが受信された場合には当該書き込みコマンドに基づいて不揮発性メモリ4にデータが書き込まれるが、書き込みバッファメモリ52は、当該不揮発性メモリ4に書き込まれるデータを一時的に格納する。なお、書き込みバッファメモリ52に格納されたデータは、不揮発性メモリコントローラ54を介して不揮発性メモリ4に書き込まれる。
【0022】
一方、通信インタフェース制御部51によって読み出しコマンドが受信された場合には当該読み出しコマンドに基づいて不揮発性メモリ4からデータが読み出されるが、読み出しバッファメモリ53は、不揮発性メモリコントローラ54によって当該不揮発性メモリ4から読み出されたデータを一時的に格納する。なお、読み出しバッファメモリ53に格納されたデータは、通信インタフェース制御部51を介してホスト2に送信される。
【0023】
不揮発性メモリコントローラ54は、不揮発性メモリ4へのデータの書き込み及び当該不揮発性メモリ4からのデータの読み出しを制御する。なお、詳しい説明は省略するが、不揮発性メモリコントローラ54は、DMAC(Direct Memory Access Controller)、誤り訂正部、ランダマイザ(またはスクランブラ)等を含むように構成されていてもよい。
【0024】
メモリ55は、プロセッサ56の作業用メモリとして使用される主記憶装置である。メモリ55は、例えばDRAM(Dynamic Random Access Memory)であるが、SRAM(Static Random Access Memory)等の他の半導体メモリであっても構わない。
【0025】
なお、メモリ55は、不揮発性メモリ4と比較して高速に書き込み及び読み出し可能であり、キャッシュメモリ551(として利用される領域)を含む。キャッシュメモリ551は、例えば不揮発性メモリ4に格納されているLUT41及びVDM42等のキャッシュデータを格納する。
【0026】
プロセッサ56は、内部バスIBを経由して、コントローラ5全体の動作を制御する。プロセッサ56は、例えば図示しないROM(Read Only Memory)等に格納されている制御プログラム(ファームウェア)を実行することによって様々な処理(例えばホスト2から受信される各種コマンドに対する処理等)を実行する。
【0027】
本実施形態において、コントローラ5は、このようなプロセッサ56により、不揮発性メモリ4(NAND型フラッシュメモリ)のデータ管理及びブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能する。
【0028】
なお、プロセッサ56は、例えばCPU(Central Processing Unit)、MPU(Micro-Processing Unit)またはDSP(Digital Signal Processor)等であってもよい。
【0029】
プロセッサ56は、上記した制御プログラムを実行することによって、書き込み制御部561、読み出し制御部562、ガーベージコレクション制御部563、アドレス変換部564、管理部565及びキャッシュメモリ制御部566等の機能部を実現する。
【0030】
なお、これらの各部561~566は、上記したように制御プログラム(つまり、ソフトウェア)によって実現されるが、ハードウェアによって実現されてもよいし、ソフトウェアとハードウェアとの組み合わせによって実現されてもよい。
【0031】
書き込み制御部561は、通信インタフェース制御部51によって書き込みコマンドが受信された場合に、通信インタフェース制御部51、書き込みバッファメモリ52及び不揮発性メモリコントローラ54を制御し、当該書き込みコマンドに含まれるデータを不揮発性メモリ4に書き込む処理を実行する。
【0032】
読み出し制御部562は、通信インタフェース制御部51によって読み出しコマンドが受信された場合に、通信インタフェース制御部51、読み出しバッファメモリ53及び不揮発性メモリコントローラ54を制御し、当該読み出しコマンドに含まれるLBAに対応するデータを不揮発性メモリ4から読み出す処理を実行する。
【0033】
ガーベージコレクション制御部563は、例えば書き込み制御部561、読み出し制御部562及び不揮発性メモリコントローラ54と協働することにより、上記したVDM42を参照して不揮発性メモリ4に対するガーベージコレクション(GC)を実行する。ガーベージコレクションとは、不揮発性メモリ4の不要な記憶領域(メモリ領域)を解放する処理である。なお、不揮発性メモリ4の記憶領域の断片化を解消するコンパクションがガーベージコレクションとともに行われても構わない。
【0034】
アドレス変換部564は、上記した読み出しコマンドが通信インタフェース制御部51によって受信された場合、不揮発性メモリ4に格納されているLUT41を用いて、当該読み出しコマンドに含まれるLBAをPBA(物理アドレス)に変換する処理を実行する。メモリシステム3においては、このようにアドレス変換部564によってLBAから変換されたPBAに基づいて不揮発性メモリ4からデータ(当該LBAに対応するデータ)を読み出すことが可能となる。
【0035】
管理部565は、上記した書き込みコマンドが通信インタフェース制御部51によって受信され、当該書き込みコマンドに基づいてデータが不揮発性メモリ4に書き込まれた場合に、LUT41及びVDM42を更新する処理を実行する。
【0036】
キャッシュメモリ制御部566は、例えば読み出し制御部562を介して、不揮発性メモリ4からLUT41(の一部)またはVDM42(の一部)を読み出し、当該LUT41またはVDM42をキャッシュメモリ551に格納する処理を実行する。また、キャッシュメモリ制御部566は、キャッシュメモリ551に格納されているLUT41(の一部)またはVDM42(の一部)を読み出し、書き込み制御部561を介して、当該LUT41またはVDM42を不揮発性メモリ4へ書き込む(書き戻す)処理を実行する。
【0037】
なお、
図1においてはメモリシステム3がホスト2の外部に設けられている例について説明したが、当該ホスト2とメモリシステム3との間のインタフェースとしては、例えばMVMe over Fabrics等が使用されてもよい。また、メモリシステム3は、ホスト2に内蔵されていてもよい。更に、メモリシステム3は複数のホスト2と接続されていてもよいし、複数のメモリシステム3が1以上のホスト2と接続されていてもよい。
【0038】
ここで、上記したLUT41においてはLBA(論理アドレス)とPBA(物理アドレス)との対応関係が管理されるが、例えばホスト2からの書き込みコマンドが通信インタフェース制御部51によって受信され、当該書き込みコマンドに基づいてデータが不揮発性メモリ4に書き込まれた場合、管理部565は、当該書き込みコマンドに含まれるLBAと当該データが書き込まれた不揮発性メモリ4内のPBAとの対応関係をLUT41において更新する(つまり、当該対応関係をLUT41に登録する)必要がある。
【0039】
しかしながら、上記した書き込みコマンドにおいて広い範囲のLBAが指定されている場合には、LUT41においてLBAとPBAとの対応関係を更新する処理に時間がかかる。
【0040】
このため、本実施形態におけるLUT41は、複数の階層から構成される階層構造を有し、当該複数の階層に対応する複数のテーブル(以下、LUT断片テーブルと表記)を含むように構成されているものとする。なお、このLUT41の階層構造は、例えば不揮発性メモリ4の容量等を含むメモリシステム3の設定情報に基づいて決定される。
【0041】
このようなLUT41において、複数のLUT断片テーブルの各々は、例えば同一のサイズであるものとする。また、詳細については後述するが、複数の階層に対応する複数のLUT断片テーブルのうちの上位の階層に対応するLUT断片テーブルには、LBA(の範囲)と、当該LUT断片テーブルよりも下位の階層に対応するLUT断片テーブルを参照するための参照先情報(以下、LUTポインタと表記)等が格納されている。なお、LUTポインタは、例えば参照先となるLUT断片テーブルが格納されている不揮発性メモリ4内のPBAを含む。また、LUT41が有する階層構造において最下位の階層に対応するLUT断片テーブルには、当該LUT断片テーブルに割り当てられているLBAの各々に対応するPBAが格納される。
【0042】
すなわち、本実施形態においては、上位の階層に対応するLUT断片テーブルから下位の階層に対応するLUT断片テーブルを順次参照することが可能な階層構造をLUT41が有し、当該階層構造においてLBA及びPBAの対応関係が管理される。
【0043】
以下、
図2を参照して、階層構造を有するLUT41について概念的に説明する。
図2に示す例では、LUT41が4つの階層から構成される階層構造を有する場合を想定している。この場合、LUT41は、複数の第1LUT断片テーブルT411~第4LUT断片テーブルT414を含む。
【0044】
図2に示すように、第1LUT断片テーブルT411は、LUT41が有する階層構造における最下位の階層(以下、第1階層と表記)に対応するLUT断片テーブルである。第2LUT断片テーブルT412は、LUT41が有する階層構造における第1LUT断片テーブルT411の上位の階層(以下、第2階層と表記)に対応するLUT断片テーブルである。第3LUT断片テーブルT413は、LUT41が有する階層構造における第2LUT断片テーブルT412の上位の階層(以下、第3階層と表記)に対応するLUT断片テーブルである。第4LUT断片テーブルT414は、LUT41が有する階層構造における第3LUT断片テーブルT413の上位の階層(以下、第4階層と表記)に対応するLUT断片テーブルである。なお、
図2に示す例では、第4階層はLUT41が有する階層構造における最上位の階層である。
【0045】
以下、上記した第1LUT断片テーブルT411~第4LUT断片テーブルT414の各々について詳しく説明する。
【0046】
まず、複数の第1LUT断片テーブルT411の各々には連続するLBAの範囲が割り当てられており、当該第1LUT断片テーブルT411は、複数のエントリC411を含む。また、第1LUT断片テーブルT411に含まれている複数のエントリC411の各々には、当該第1LUT断片テーブルT411に割り当てられているLBAの範囲のうちのそれぞれ異なる1つのLBAが割り当てられており、当該LBAに対応するPBA(つまり、当該LBAに対応するデータが書き込まれているPBA)が格納される。
【0047】
なお、本実施形態においては、ホスト2がメモリシステム3にアクセスする際に使用するLBAの全範囲が第1LUT断片テーブルT411の数に区分けされ、当該区分けされたLBAの範囲が当該第1LUT断片テーブルT411の各々に割り当てられている。これにより、複数の第1LUT断片テーブルT411において、ホスト2がメモリシステム3にアクセスする際に使用する全範囲のLBAの各々に対応するPBAを管理することができる。
【0048】
次に、複数の第2LUT断片テーブルT412の各々には上記した第1LUT断片テーブルT411よりも広いLBAの範囲が割り当てられており、当該第2LUT断片テーブルT412は、複数のエントリC412を含む。また、第2LUT断片テーブルT412に含まれている複数のエントリC412の各々には、当該第2LUT断片テーブルT412の下位の階層に対応する第1LUT断片テーブルT411に割り当てられているLBAの範囲が割り当てられており、当該第1LUT断片テーブルT411(の位置)を示すLUTポインタが格納される。この場合、第2LUT断片テーブルT412の各々に割り当てられているLBAの範囲は、当該第2LUT断片テーブルT412に含まれる複数のエントリC412の各々に格納されているLUTポインタによって示される全ての第1LUT断片テーブルT411に割り当てられているLBAの範囲に相当する。
【0049】
また、複数の第3LUT断片テーブルT413の各々には上記した第2LUT断片テーブルT412よりも広いLBAの範囲が割り当てられており、当該第3LUT断片テーブルT413は、複数のエントリC413を含む。また、第3LUT断片テーブルT413に含まれている複数のエントリC413の各々には、当該第3LUT断片テーブルT413の下位の階層に対応する第2LUT断片テーブルT412に割り当てられているLBAの範囲が割り当てられており、当該第2LUT断片テーブルT412(の位置)を示すLUTポインタが格納される。この場合、第3LUT断片テーブルT413の各々に割り当てられているLBAの範囲は、当該第3LUT断片テーブルT413に含まれる複数のエントリC413の各々に格納されているLUTポインタによって示される全ての第2LUT断片テーブルT412に割り当てられているLBAの範囲に相当する。
【0050】
更に、複数の第4LUT断片テーブルT414の各々には上記した第3LUT断片テーブルT413よりも広いLBAの範囲が割り当てられており、当該第4LUT断片テーブルT414は、複数のエントリC414を含む。また、第4LUT断片テーブルT414に含まれている複数のエントリC414の各々には、当該第4LUT断片テーブルT414の下位の階層に対する第3LUT断片テーブルT413に割り当てられているLBAの範囲が割り当てられており、当該第3LUT断片テーブルT413(の位置)を示すLUTポインタが格納される。この場合、第4LUT断片テーブルT414の各々に割り当てられているLBAの範囲は、当該第4LUT断片テーブルT414に含まれる複数のエントリC414の各々に格納されているLUTポインタによって示される全ての第3LUT断片テーブルT413に割り当てられているLBAの範囲に相当する。
【0051】
ここで、第4階層(つまり、階層構造における最上位の階層)に対応する複数の第4LUT断片テーブルT414の各々は、複数のネームスペースの各々に対応する。ネームスペースとは、不揮発性メモリ4が備える記憶領域(複数のブロック)を論理的に区分けすることによって得られる領域である。所定の範囲の記憶領域毎にネームスペースを割り当てることにより、例えば2以上の記憶領域でLBAが重複する場合であっても、ネームスペースID(ネームスペースを識別するための識別情報)及びLBAを用いて適切なデータへのアクセスが可能となる。これによれば、異なるネームスペースへのアクセスを異なるデバイスへのアクセスと同様に扱うことができる。
【0052】
図2において、複数の第4LUT断片テーブルT414は、ネームスペースNS1~NSn(nは2以上の自然数)に対応している。この場合、複数の第4LUT断片テーブルT414の数はnである。
【0053】
なお、
図2に示すようにLUT41においてはネームスペースNS1~NSn(に対応する第4LUT断片テーブルT414)毎に階層構造を有するが、当該ネームスペースNS1~NSn毎の階層数は、当該ネームスペースNS1~NSnに割り当てられている記憶領域(のサイズ)に応じて決定される。例えばネームスペースに割り当てられている記憶領域のサイズが小さい場合には、当該ネームスペースの階層数は少なくなる。一方、例えばネームスペースに割り当てられている記憶領域のサイズが大きい場合には、当該ネームスペースの階層数は多くなる。なお、
図2に示す例では、ネームスペースNS1~NSnの各々の階層数が同一である場合を示している。
【0054】
上記した
図2に示す階層構造を有するLUT41においては、第4階層(最上位の階層)に対応する第4LUT断片テーブルT414に含まれているエントリC414の各々に格納されているLUTポインタが第3階層に対応する第3LUT断片テーブルT413を示し、当該第3LUT断片テーブルT413に含まれているエントリC413の各々に格納されているLUTポインタが第2階層に対応する第2LUT断片テーブルT412を示し、当該第2LUT断片テーブルT412に含まれているエントリC412の各々に格納されているLUTポインタが第1階層(最下位の階層)に対応する第1LUT断片テーブルT411を示し、当該第1LUT断片テーブルT411に含まれているエントリC411が1つのLBAに対応するPBAを格納するように構成されている。
【0055】
このようなLUT41によれば、例えば各種コマンドにおいて指定されるLBA(各種コマンドに含まれるLBA)に基づいて第4LUT断片テーブルT414、第3LUT断片テーブルT413、第2LUT断片テーブルT412及び第1LUT断片テーブルT411を順次参照することにより、当該LBAに対応するPBAを特定することができる。
【0056】
ここで、
図2に示す例において、第1LUT断片テーブルT411はLUT41が有する階層構造における最下位の階層に対応するLUT断片テーブルであり、当該第1LUT断片テーブルT411に含まれるエントリC411の各々には、1つのLBAに対応するPBAが格納される。この場合において、1つのPBAに書き込まれるデータのサイズが4KiBであり、1つの第1LUT断片テーブルT411に32個のエントリC411が含まれているものとすると、第1階層に対応する1つの第1LUT断片テーブルT411には32個分のLBAの範囲(つまり、128KiBのデータにアクセスするためのLBA)が割り当てられていることになる。
【0057】
同様に、1つの第2LUT断片テーブルT412に32個のエントリC412が含まれており、128KiBのデータにアクセスするための32個分のLBAが割り当てられている第1LUT断片テーブルT411を示すLUTポインタが当該エントリC412の各々に格納されている(つまり、各エントリC412に当該第1LUT断片テーブルT411に割り当てられている32個分のLBAの範囲が割り当てられている)ものとすると、第2階層に対応する1つの第2LUT断片テーブルT412には32×32=1,024個分のLBAの範囲(つまり、4MiBのデータにアクセスするためのLBA)が割り当てられていることになる。
【0058】
更に、1つの第3LUT断片テーブルT413に32個のエントリC413が含まれており、4MiBのデータにアクセスするための1,024個分のLBAが割り当てられている第2LUT断片テーブルT412を示すLUTポインタが当該エントリC413の各々に格納されている(つまり、各エントリC413に当該第2LUT断片テーブルT412に割り当てられている1,024個分のLBAの範囲が割り当てられている)ものとすると、第3階層に対応する1つの第3LUT断片テーブルT413には1,024×32=32,768個分のLBAの範囲(つまり、128MiBのデータにアクセスするためのLBA)が割り当てられていることになる。
【0059】
また、1つの第4LUT断片テーブルT414に32個のエントリC414が含まれており、128MiBのデータにアクセスするための32,768個分のLBAが割り当てられている第3LUT断片テーブルT413を示すLUTポインタが当該エントリC414の各々に格納されている(つまり、各エントリC414に当該第3LUT断片テーブルT413に割り当てられている32,768個分のLBAの範囲が割り当てられている)ものとすると、第4階層に対応する1つの第4LUT断片テーブルT414には32,768×32=1,048,576個分のLBAの範囲(つまり、4GiBのデータにアクセスするためのLBA)が割り当てられていることになる。
【0060】
すなわち、
図2に示すLUT41の例においては、第1LUT断片テーブルT411の各々が128KiBのデータにアクセスするためのLBAの範囲を管理しており、第2LUT断片テーブルT412の各々が4MiBのデータにアクセスするためのLBAの範囲を管理しており、第3LUT断片テーブルT413の各々が128MiBのデータにアクセスするためのLBAの範囲を管理しており、第4LUT断片テーブルT414の各々が4GiBのデータにアクセスするためのLBAの範囲を管理している。
【0061】
なお、
図2において例えば第4LUT断片テーブルT414に含まれる複数のエントリC414の各々にLUTポインタが格納されるものとして説明したが、当該LUTポインタの各々によって示される複数の第3LUT断片テーブルT413が不揮発性メモリ4に連続して配置されている場合には、当該第4LUT断片テーブルT414は、当該複数の第3LUT断片テーブルT413のうちの先頭の第3LUT断片テーブルT413を示すLUTポインタのみを格納する(つまり、先頭ではない第3LUT断片テーブルT413を示すLUTポインタを省略する)ように構成されていてもよい。これによれば、LUT41のサイズを削減することが可能である。ここでは第4LUT断片テーブルT414について説明したが、他のLUT断片テーブルについても同様である。
【0062】
また、例えば1つのLUT断片テーブルに割り当てられているLBAの範囲に対応するデータが書き込まれている不揮発性メモリ4内のPBAの連続性が担保されている場合には、当該LUT断片テーブルよりも下位の階層に対応する(つまり、当該LUT断片テーブルに含まれるエントリに格納されているLUTポインタによって示される)LUT断片テーブルを省略することも可能である。
【0063】
具体的には、例えば第2LUT断片テーブルT412は4MiBのデータにアクセスするためのLBAの範囲を管理するが、当該第2LUT断片テーブルT412において管理されるLBAによってアクセスされる4MiBのデータが連続するPBAに書き込まれている場合には、第3LUT断片テーブルT413に含まれるエントリC413は、当該第2LUT断片テーブルT412を示すLUTポインタに代えて、当該4MiBのデータが書き込まれている先頭のPBAを格納してもよい。これによれば、この第3LUT断片テーブルT413よりも下位の第2LUT断片テーブルT412及び第1LUT断片テーブルT411を参照することが不要となるため、LUT41を効率的に参照することができ、不揮発性メモリ4に書き込まれているデータに対するアクセス速度を向上させることが可能となる。
【0064】
図3は、本実施形態におけるLUT41に含まれるLUT断片テーブルのデータ構造の一例を示す。ここでは、第1LUT断片テーブルT411のデータ構造について主に説明する。
【0065】
第1LUT断片テーブルT411は、例えば複数のPBA格納部41a、LBA格納部41b及び管理データ格納部41cを含む。
【0066】
PBA格納部41aは、
図2において説明した第1LUT断片テーブルT411に含まれるエントリC411に相当する。つまり、PBA格納部41aの数は例えば32個である。PBA格納部41aは、当該PBA格納部41a(エントリC411)に割り当てられている1つのLBAに対応するPBA(つまり、当該LBAに対応するデータが書き込まれているPBA)を格納する。なお、PBA格納部41aに割り当てられている1つのLBAに対応するデータがキャッシュメモリ551に格納されている場合、当該PBA格納部41aには、当該キャッシュメモリ551内のアドレス情報(PBA)が格納される。PBA格納部41aに格納されるPBAのサイズは、例えば32ビットである。
【0067】
また、PBA格納部41aに格納されるPBAには例えば8ビットの管理データMD1が付されており、当該管理データMD1は、当該PBAとともに当該PBA格納部41aに格納される。このようにPBAに付される管理データMD1は、例えば当該PBAが不揮発性メモリ4内のPBAであるかキャッシュメモリ551内のアドレス情報であるかを管理するデータを含む。
【0068】
この場合、PBA格納部41aの各々のサイズはPBAのサイズ(32ビット)と管理データMD1のサイズ(8ビット)とを加算した40ビットであり、32個のPBA格納部41aの合計サイズは160バイトである。
【0069】
LBA格納部41bは、第1LUT断片テーブルT411に割り当てられているLBAの範囲における先頭のLBAを格納する。
【0070】
管理データ格納部41cには、第1LUT断片テーブルT411が属するネームスペースを識別するためのネームスペースID及び当該第1LUT断片テーブルT411に割り当てられているLBAの範囲(当該第1LUT断片テーブルT411が管理するLBAの範囲)に相当するGrainが格納される。
【0071】
なお、管理データ格納部41cには、他の情報が格納されてもよい。具体的には、管理データ格納部41cには、第1LUT断片テーブルT411に対応する階層(第1階層)を識別するための識別情報(階層ID)等が格納されてもよい。
【0072】
ここで、本実施形態において例えばLUT41が更新される際には、当該LUT41の一部(当該更新の対象となるLUT断片テーブル)がキャッシュメモリ551に格納される。この場合、LUT41の一部はキャッシュライン単位で格納される。また、キャッシュメモリ551で更新されたLUT41の一部は、キャッシュライン単位で不揮発性メモリ4に書き戻される。
【0073】
上記したキャッシュライン単位で第1LUT断片テーブルT411がキャッシュメモリ551に格納される場合を想定する。このようにキャッシュメモリ551に格納される第1LUT断片テーブルT411をLUTキャッシュデータとすると、当該LUTキャッシュデータは、上記したPBA格納部41a、LBA格納部41b及び管理データ格納部41cに加えて、例えばキャッシュメモリ551において互いに関連づけるべきLUTキャッシュデータを示すポインタを更に含む。
【0074】
具体的には、LUTキャッシュデータは、当該LUTキャッシュデータの前に参照されるLUTキャッシュデータを示すポインタを格納する前ポインタ格納部41d及び当該LUTキャッシュデータの次に参照される他のLUTキャッシュデータを示すポインタを格納する次ポインタ格納部41eを含む。
【0075】
上記した前ポインタ格納部41d及び次ポインタ格納部41eに格納されるポインタとしては、例えば他のLUTキャッシュデータが格納されているPBAを用いるが、他の形式のアドレスが用いられてもよい。
【0076】
このようなLUTキャッシュデータが参照すべき前後のLUTキャッシュデータへのポインタを利用することによって、キャッシュメモリ551に対するアクセスを高速化することができ、連続的なアクセスを実現することができる。なお、LUTキャッシュデータは、更に他の管理データを含んでいてもよい。
【0077】
図3においては1つの第1LUT断片テーブルT411のデータ構造について説明したが、LUT41に含まれる複数の第1LUT断片テーブルT411は全て同様のデータ構造を有する。
【0078】
また、第1LUT断片テーブルT411以外の他のLUT断片テーブル(第2LUT断片テーブルT412~第4LUT断片テーブルT414)のデータ構造についても第1LUT断片テーブルT411と同様である。ただし、第2LUT断片テーブルT412~第4LUT断片テーブルT414に含まれるPBA格納部41aの各々には、下位の階層に対応するLUT断片テーブルを示すLUTポインタとして、当該LUT断片テーブルが格納されている不揮発性メモリ4内のPBA(32ビット)が格納される。なお、下位の階層に対応するLUT断片テーブルがキャッシュメモリ551に格納されている場合、PBA格納部41aには、当該キャッシュメモリ551内のアドレス情報が格納される。
【0079】
また、第2LUT断片テーブルT412~第4LUT断片テーブルT414に含まれているPBA格納部41aであっても、当該PBA格納部41a(エントリC412、C413またはC424)に割り当てられているLBAの範囲に対応するデータが書き込まれている先頭のPBAが格納される場合もあり得る。
【0080】
なお、
図3に示す例では、第1LUT断片テーブルT411~第4LUT断片テーブルT414の各々のサイズは例えば168バイトの固定長であり、キャッシュメモリ551に格納されるLUTキャッシュデータの各々のサイズは例えば188バイトの固定長であるが、本実施形態においては、第1LUT断片テーブルT411~第4LUT断片テーブルT414(つまり、LUT41に含まれる複数のLUT断片テーブル)が同一のデータ構造を有するように構成されているものとする。
【0081】
ここではLUT41が複数の階層から構成される階層構造を有するものとして説明したが、本実施形態においては、VDM42もLUT41と同様に階層構造を有する。
【0082】
以下、本実施形態におけるVDM42について説明するが、まず、
図4を参照して、本実施形態の比較例におけるVDMについて説明する。本実施形態の比較例におけるVDMは、単一の階層において不揮発性メモリ4内の物理アドレスに書き込まれているデータの有効性を管理するように構成されているものとする。
【0083】
図4に示すように、本実施形態の比較例におけるVDM42´は、単一の階層に対応する複数のVDM断片テーブルT421´を含む。複数のVDM断片テーブルT421´にはそれぞれ異なるPBA(物理アドレス)の範囲が割り当てられており、当該VDM断片テーブルT421´の各々においては、当該VDM断片テーブルT421´に割り当てられているPBAの範囲に格納されているデータの有効性(つまり、当該データが有効であるか無効であるか)が管理される。
【0084】
この場合、例えばホスト2からの書き込みコマンドに基づいてデータを書き込むことが可能な不揮発性メモリ4内のPBAの全範囲がVDM断片テーブルT421´の数に区分けされ、当該区分けされたPBAの範囲が当該第1VDM断片テーブルT421´の各々に割り当てられる。これにより、複数のVDM断片テーブルT421´において、ホスト2からの書き込みコマンドに基づいてデータを書き込むことが可能な不揮発性メモリ4内のPBAの全範囲に書き込まれているデータの有効性を管理することができる。なお、複数のVDM断片テーブルT421´の各々において、当該VDM断片テーブルT421´に割り当てられているPBAの範囲に書き込まれているデータの有効性は、後述するビットマップ(BMP)を用いて管理される。
【0085】
ここで、例えばホスト2からの書き込みコマンドに基づいてデータが不揮発性メモリ4内のPBAに書き込まれた場合には当該PBAに書き込まれたデータの有効性を更新するために当該PBAが割り当てられているVDM断片テーブルT421´を参照する必要があるが、当該VDM断片テーブルT421´を参照するためには、上記した複数のVDM断片テーブルT421´の各々(の位置)を示すポインタをメモリ55上に保持(展開)しておく必要がある。このようにメモリ55上に保持しておくポインタは、例えば複数のVDM断片テーブルT421´の各々が格納されている不揮発性メモリ4内のPBAを含む。
【0086】
例えばデータの有効性が管理される不揮発性メモリ4の記憶領域のサイズが2PiBであり、1つのPBAに書き込まれるデータのサイズ(つまり、有効性を管理するデータの単位)が4KiBであるものとすると、2PiB÷4KiB=549,755,813,888であり、VDM42´においては概ね512G個分の4KiBのデータの有効性を管理する必要がある。
【0087】
また、1つのVDM断片テーブルT421´で例えば1,280個分の4KiBのデータを管理するものとすると、512G÷1,280=429,496,729.6となり、VDM42´において必要なVDM断片テーブルT421´の数は、429,496,730となる。
【0088】
更に、複数のVDM断片テーブルT421´の各々を示すポインタのサイズが32ビット(4Byte)であるものとすると、上記した429,496,730個のVDM断片テーブルT421´の全てを示すポインタのサイズの合計は、429,496,730×4Byte=1,717,986,920Byteとなり、概ね1.6GiBとなる。
【0089】
すなわち、本実施形態の比較例に係るVDM42´を用いて不揮発性メモリ4内のPBAに書き込まれているデータの有効性を管理する場合には、上記した1.6GiBの全VDM断片テーブルT421´を示すポインタを常にメモリ55上に保持しておく必要がある(つまり、VDM42´の管理に必要な情報がメモリ55を占有し続けることになる)ため、ユーザビリティを損ねる場合がある。具体的には、メモリ55(キャッシュメモリ551)にはLUT41を保持させた方がホスト2からのコマンドに対する応答速度(IO応答速度)を向上させるために有用であるが、上記したVDM断片テーブルT421´の各々のポインタによってLUT41を保持するための十分な記憶領域を確保することができない可能性がある。
【0090】
また、不揮発性メモリ4は複数のチップから構成されるが、例えば当該チップの数または当該チップ自体の容量を増加させた場合には、不揮発性メモリ4(つまり、メモリシステム3が管理する記憶領域)内のPBAの数が増加する。
【0091】
これによれば、上記したVDM断片テーブルT421´の数も増加するため、VDM断片テーブルT421´を示すポインタの数も同様に増加し、当該ポインタのために更に大きな記憶領域をメモリ55に確保する必要がある。
【0092】
同様に、不揮発性メモリ4内のPBAの数が増加した場合にはVDM42´自体のサイズも大きくなるため、必要に応じて、当該VDM42´をキャッシュするための記憶領域を拡大しなければならない場合がある。
【0093】
これに対しては、例えばメモリ(DRAM)を増設することによって記憶領域を確保することが考えられるが、コストの増大は避ける必要がある。すなわち、本実施形態の比較例におけるVDM42´では、不揮発性メモリ4に対する技術革新(つまり、記憶容量の増大)への対応難易度が高い。
【0094】
更に、メモリシステム3を起動する際には、上記したように全てのVDM断片テーブルT421´を示すポインタをメモリ55上に展開する必要がある。
【0095】
また、メモリシステム3を終了(停止)する際には、メモリ55上に保持されているポインタを全て不揮発化する必要がある。具体的には、例えば1つのVDM断片テーブルT421´がメモリ55(キャッシュメモリ551)にキャッシュされた場合、メモリ55上に保持されている当該VDM断片テーブルT421´を示すポインタは当該キャッシュメモリ551内のアドレス情報に変更される。メモリシステム3を終了する際にはこのようなVDM断片テーブルT421´を不揮発性メモリ4に書き戻す(つまり、不揮発化する)ことになるが、この場合、当該VDM断片テーブルT421´を示すポインタ(キャッシュメモリ551内のアドレス情報)を当該VDM断片テーブルT421´が書き込まれた不揮発性メモリ4内のPBAに変更し、当該変更された不揮発性メモリ4内のPBA(つまり、ポインタ)を不揮発性メモリ4に書き込む必要がある。メモリシステム3を終了する場合には、このような処理がキャッシュメモリ551にキャッシュされている全てのVDM断片テーブルT421´に対して実行される。
【0096】
すなわち、本実施形態の比較例におけるVDM42´では、メモリシステム3を起動及び終了する際の内部処理(起動処理及び終了処理)に時間がかかる。
【0097】
そこで、本実施形態においては、上記したLUT41と同様に、階層構造を有するVDM42を採用することによって、不揮発性メモリ4に書き込まれているデータの有効性を効率的に管理することを実現する。
【0098】
具体的には、本実施形態におけるVDM42は、複数の階層から構成される階層構造を有し、当該複数の階層に対する複数のVDM断片テーブルを含むように構成されている。
【0099】
このようなVDM42において、複数のVDM断片テーブルの各々は、例えば同一のサイズであるものとする。また、詳細については後述するが、複数の階層に対応する複数のVDM断片テーブルのうちの上位の階層に対応するVDM断片テーブルには、PBA(の範囲)と、当該VDM断片テーブルよりも下位の階層に対応するVDM断片テーブルを参照するための参照先情報(以下、VDMポインタと表記)等が格納されている。なお、VDMポインタは、例えば参照先となるVDM断片テーブルが格納されている不揮発性メモリ4内のPBAを含む。また、VDM42が有する階層構造において最下位の階層に対応するVDM断片テーブルは、当該VDM断片テーブルに割り当てられているPBAの範囲に格納されている所定のサイズのデータ(例えば、4KiBのデータ)の各々の有効性を管理する。
【0100】
以下、
図5を参照して、本実施形態における階層構造を有するVDM42について概念的に説明する。
図5に示す例では、便宜的に、VDM42が4つの階層から構成される階層構造を有する場合を想定している。この場合、VDM42は、複数の第1VDM断片テーブルT421~第4VDM断片テーブルT424を含む。
【0101】
図5に示すように、第1VDM断片テーブルT421は、VDM42が有する階層構造における最下位の階層(以下、第1階層と表記)に対応するVDM断片テーブルである。第2VDM断片テーブルT422は、VDM42が有する階層構造における第1VDM断片テーブルT421の上位の階層(以下、第2階層と表記)に対応するVDM断片テーブルである。第3VDM断片テーブルT423は、VDM42が有する階層構造における第2VDM断片テーブルT422の上位の階層(以下、第3階層と表記)に対応するVDM断片テーブルである。第4VDM断片テーブルT424は、VDM42が有する階層構造における第3VDM断片テーブルT423の上位の階層(以下、第4階層と表記)に対応するVDM断片テーブルである。なお、
図5に示す例では第4階層はVDM42が有する階層構造における最上位の階層であり、VDM42において、最上位の階層に対応するVDM断片テーブル(つまり、第4VDM断片テーブルT424)の数は例えば1である。本実施形態においては第4VDM断片テーブルT424(最上位の階層に対応するVDM断片テーブル)の数が1であるものとして説明するが、当該第4VDM断片テーブルT424の数は複数であってもよい。
【0102】
以下、上記した第1VDM断片テーブルT421~第4VDM断片テーブルT424の各々について詳しく説明する。
【0103】
まず、複数の第1VDM断片テーブルT421の各々には連続するPBAの範囲が割り当てられており、当該第1VDM断片テーブルT421は、複数のエントリC421を含む。また、第1VDM断片テーブルT421に含まれる複数のエントリC421の各々には、当該第1VDM断片テーブルT421に割り当てられているPBAの範囲に該当する複数のPBAの各々に格納されているデータの有効性を管理する1ビットのビット情報から構成されるビットマップ(BMP)が格納される。このようなビットマップにおいては、PBA毎に、例えばビット情報が1である場合には当該PBAに格納されているデータが有効であることを示し、ビット情報が0である場合には当該PBAに格納されているデータが無効であることを示すことができる。
【0104】
なお、複数の第1VDM断片テーブルT421は上記した
図4に示す複数のVDM断片テーブルT421´に相当し、ホスト2からの書き込みコマンドに基づいてデータを書き込むことが可能な不揮発性メモリ4内のPBAの全範囲がVDM断片テーブルT421の数に区分けされ、当該区分けされたPBAの範囲が当該第1VDM断片テーブルT421の各々に割り当てられている。これにより、複数のVDM断片テーブルT421において、ホスト2からの書き込みコマンドに基づいてデータを書き込むことが可能な不揮発性メモリ4内のPBAの全範囲に書き込まれているデータの有効性を管理することができる。
【0105】
次に、複数の第2VDM断片テーブルT422の各々には上記した第1VDM断片テーブルT421よりも広いPBAの範囲が割り当てられており、当該第2VDM断片テーブルT422は、複数のエントリC422を含む。また、第2VDM断片テーブルT422に含まれる複数のエントリC422の各々には、当該第2VDM断片テーブルT422の下位の階層に対応する第1VDM断片テーブルT421に割り当てられているPBAの範囲が割り当てられており、当該第1VDM断片テーブルT421(の位置)を示すVDMポインタが格納される。この場合、第2VDM断片テーブルT422の各々に割り当てられているPBAの範囲は、当該第2VDM断片テーブルT422に含まれる複数のエントリC422の各々に格納されているVDMポインタによって示される全ての第1VDM断片テーブルT421に割り当てられているPBAの範囲に相当する。
【0106】
また、複数の第3VDM断片テーブルT423の各々には上記した第2VDM断片テーブルT422よりも広いPBAの範囲が割り当てられており、当該第3VDM断片テーブルT423は、複数のエントリC423を含む。また、第3VDM断片テーブルT423に含まれる複数のエントリC423の各々には、当該第3VDM断片テーブルT423の下位の階層に対応する第2VDM断片テーブルT422に割り当てられているPBAの範囲が割り当てられており、当該第2VDM断片テーブルT422(の位置)を示すVDMポインタが格納される。この場合、第3VDM断片テーブルT423の各々に割り当てられているPBAの範囲は、当該第3VDM断片テーブルT423に含まれる複数のエントリC423の各々に格納されているVDMポインタによって示される全ての第2VDM断片テーブルT422に割り当てられているPBAの範囲に相当する。
【0107】
更に、第4VDM断片テーブルT424には上記した第3VDM断片テーブルT423よりも広いPBAの範囲が割り当てられており、当該第4VDM断片テーブルT424は、複数のエントリC424を含む。また、第4VDM断片テーブルT424に含まれる複数のエントリC424の各々には、当該第4VDM断片テーブルT424の下位の階層に対する第3VDM断片テーブルT423に割り当てられているPBAの範囲が割り当てられており、当該第3VDM断片テーブルT423(の位置)を示すVDMポインタが格納される。この場合、第4VDM断片テーブルT424に割り当てられているLBAの範囲は、当該第4VDM断片テーブルT424に含まれる複数のエントリC424の各々に格納されているVDMポインタによって示される全ての第3VDM断片テーブルT423に割り当てられているPBAの範囲に相当する。
【0108】
なお、上記したようにVDM42が有する階層構造における最上位の階層に対応する第4VDM断片テーブルT424の数が1である場合、当該第4VDM断片テーブルT424に割り当てられているPBAの範囲は、データの有効性が管理される不揮発性メモリ4内のPBAの全範囲をカバーする。
【0109】
上記した
図5に示す階層構造を有するVDM42においては、第4階層(最上位の階層)に対応する第4VDM断片テーブルT424に含まれるエントリC424の各々に格納されているVDMポインタが第3階層に対応する第3VDM断片テーブルT423を示し、当該第3VDM断片テーブルT423に含まれるエントリC423の各々に格納されているVDMポインタが第2階層に対応する第2VDM断片テーブルT422を示し、当該第2VDM断片テーブルT422に含まれるエントリC422の各々に格納されているVDMポインタが第1階層(最下位の階層)に対応する第1VDM断片テーブルT421を示し、当該第1VDM断片テーブルT421に含まれるエントリC421の各々が複数のPBAに格納されている所定のサイズのデータの各々の有効性を示すフラグ情報(ビットマップ)を格納するように構成されている。
【0110】
このようなVDM42によれば、例えば有効性を確認すべきデータが格納されているPBAに基づいて第4VDM断片テーブルT424、第3VDM断片テーブルT423、第2VDM断片テーブルT422及び第1VDM断片テーブルT421を順次参照することにより、当該データの有効性を把握することができる。
【0111】
すなわち、
図5に示すVDM42においては、第4階層に対応する第4VDM断片テーブルT424から全てのPBAに格納されているデータの有効性(つまり、第1VDM断片テーブルにおいて管理されているデータの有効性)を把握することができるため、上記した
図4において説明した本実施形態の比較例におけるVDM42´とは異なり、メモリ55には第4VDM断片テーブルT424を示すVDMポインタ(つまり、1つのポインタ)のみが保持されていればよい。
【0112】
ここで、
図5に示す例において、第1VDM断片テーブルT421はVDM42が有する階層構造における最下位の階層に対応するVDM断片テーブルであり、当該第1VDM断片テーブルT421に含まれるエントリC421の各々には、連続するPBAの範囲に格納されている所定のサイズのデータの各々の有効性を示すフラグ情報(ビットマップ)が格納される。この場合において、1つの第1VDM断片テーブルT421に32個のエントリC421が含まれており、更に、1つエントリC421に32個のデータの有効性を示す32ビットのビットマップが格納されているものとすると、第1階層に対応する1つの第1VDM断片テーブルT421には32×32=1,024個分のPBAの範囲が割り当てられていることになる。この場合、上記したように1つのPBAに書き込まれるデータのサイズが4KiBであるものとすると、1つの第1VDM断片テーブルT421において、4KiB×1,024=4MiBのデータの有効性を管理することができる。
【0113】
同様に、1つの第2VDM断片テーブルT422に32個のエントリC422が含まれており、4MiBのデータが格納される1,024個分のPBAが割り当てられている第1VDM断片テーブルT421を示すVDMポインタが当該エントリC422の各々に格納されている(つまり、各エントリC422に当該第1VDM断片テーブルT421に割り当てられている1,024個分のPBAの範囲が割り当てられている)ものとすると、第2階層に対応する1つの第2VDM断片テーブルT422には1,024×32=32,768個分のPBAの範囲が割り当てられることになる。この場合、1つの第2VDM断片テーブルT422において、4KiB×32,768=128MiBのデータの有効性を管理することができる。
【0114】
更に、1つの第3VDM断片テーブルT423に32個のエントリC423が含まれており、128MiBのデータが格納される32,768個分のPBAが割り当てられている第2VDM断片テーブルT422を示すポインタが当該エントリC423の各々に格納されている(つまり、各エントリC423に当該第2VDM断片テーブルT422に割り当てられている32,768個分のPBAの範囲が割り当てられている)ものとすると、第3階層に対応する1つの第3VDM断片テーブルT423には32,768×32=1,048,576個分のPBAの範囲が割り当てられることになる。この場合、1つの第3VDM断片テーブルT423においては、4KiB×1,048,576=4GiBのデータの有効性を管理することができる。
【0115】
また、1つの第4VDM断片テーブルT424に32個のエントリC414が含まれており、4GiBのデータが格納される1,048,576個分のPBAが割り当てられている第3VDM断片テーブルT423を示すポインタが当該エントリC424の各々に格納されている(つまり、各エントリC424に当該第3VDM断片テーブルT423に割り当てられている1,048,576個分のPBAの範囲が割り当てられている)ものとすると、第4階層に対応する1つの第4VDM断片テーブルT424には1,048,576×32=33,554,432個分のPBAの範囲が割り当てられることになる。この場合、1つの第4VDM断片テーブルT424においては、4KiB×33,554,432=128GiBのデータの有効性を管理することができる。
【0116】
すなわち、
図5に示すVDM42の例においては、第1VDM断片テーブルT421の各々が4MiBのデータが格納されるPBAの範囲を管理しており、第2VDM断片テーブルT422の各々が128MiBのデータが格納されるPBAの範囲を管理しており、第3VDM断片テーブルT423の各々が4GiBのデータが格納されるPBAの範囲を管理しており、第4VDM断片テーブルT424が128GiBのデータが格納されるPBAの範囲を管理している。
【0117】
なお、
図5においては例えば第4VDM断片テーブルT424に含まれる複数のエントリC424の各々にVDMポインタが格納されるものとして説明したが、当該VDMポインタの各々によって示される複数の第3VDM断片テーブルT423が不揮発性メモリ4に連続して配置されている場合には、当該第4VDM断片テーブルT424は、当該複数の第3VDM断片テーブルT423のうちの先頭の第3VDM断片テーブルT423を示すVDMポインタのみを格納する(つまり、先頭ではない第3VDM断片テーブルT423を示すVDMポインタを省略する)ように構成されていてもよい。これによれば、VDM42のサイズを削減することが可能である。ここでは第4VDM断片テーブルT424について説明したが、他のVDM断片テーブルについても同様である。
【0118】
また、例えば1つのVDM断片テーブルに割り当てられているPBAの範囲に書き込まれている4KiBのデータの各々の有効性(有効または無効)が共通している場合には、当該VDM断片テーブルにおいて当該PBAの範囲に書き込まれているデータの有効性を一括して管理し、当該VDM断片テーブルよりも下位の階層に対応する(つまり、当該VDM断片テーブルに含まれるエントリに格納されているポインタによって示される)VDM断片テーブルを省略することも可能である。
【0119】
具体的には、例えば第2VDM断片テーブルT422は128MiBのデータが格納されるPBAの範囲を管理するが、当該128MiBのデータ(を構成する全ての4KiBのデータ)が全て有効または全て無効である場合を想定する。この場合には、第2VDM断片テーブルT422に割り当てられているPBAの範囲に格納されている128MiBのデータが全て有効または全て無効であることを示す管理データを当該第2VDM断片テーブルT422の上位の階層に対応する(つまり、当該第2VDM断片テーブルT422を示すVDMポインタを格納するエントリを含む)第3VDM断片テーブルT423に保持させることにより、第2VDM断片テーブルT422及び当該第2VDM断片テーブルT422の下位の階層に対応する第1VDM断片テーブルT421の各々を破棄するようにしてもよい。これによれば、第3VDM断片テーブルT423よりも下位の第2VDM断片テーブルT422及び第1VDM断片テーブルT421を参照することが不要となるため、VDM42に対するアクセス速度を向上させることが可能となる。
【0120】
図6は、本実施形態におけるVDM42に含まれる第1VDM断片テーブルT421のデータ構造の一例を示す。
【0121】
第1VDM断片テーブルT421は、例えば複数のマップ格納部42a、PBA格納部42b及び管理データ格納部42cを含む。
【0122】
マップ格納部42aは、
図5において説明した第1VDM断片テーブルT421に含まれるエントリC421に相当する。つまり、マップ格納部42aの数は、例えば32個である。マップ格納部42aは、当該マップ格納部42a(エントリC421)に割り当てられているPBAの範囲に書き込まれている4KiBのデータの各々の有効性(有効または無効)を管理する1ビットのフラグ情報から構成されるビットマップを格納する。マップ格納部42aに32個分のPBAの範囲が割り当てられている場合、当該マップ格納部42aに格納されるビットマップのサイズは、1ビット×32=32ビットである。
【0123】
また、マップ格納部42aに格納されるビットマップには例えば8ビットの管理データMD2が付されており、当該管理データMD2は、当該ビットマップとともに当該マップ格納部42aに格納される。このようにビットマップに付される管理データMD2としては、例えばVDMモードと称されるマジックナンバーが設定される。管理データMD2として設定されるマジックナンバーには、「0xff」及び「0x00」が含まれる。
【0124】
なお、上記したようにマップ格納部42aに格納されるビットマップは当該マップ格納部42aに割り当てられている32個分のPBAの各々に格納されている4KiBのデータの有効性を示す1ビットのフラグ情報から構成されるが、以下の説明においては、当該32個のPBAの各々に格納されている4KiBのデータを、便宜的に、当該ビットマップにおいて管理されているデータと称する。
【0125】
マジックナンバー「0xff」は、当該マジックナンバー(管理データMD2)が付されているビットマップにおいて管理されているデータの全てが有効である(つまり、当該ビットマップを構成するフラグ情報が全て1である)ことを示す。すなわち、このマジックナンバー「0xff」によれば、一定のPBAの範囲に書き込まれているデータの有効性を一括して管理することができ、当該マジックナンバーが付されているビットマップを参照することなく、当該ビットマップにおいて管理されているデータの全てが有効であることを把握することができる。
【0126】
マジックナンバー「0x00」は、当該マジックナンバー(管理データMD2)が付されているビットマップにおいて管理されているデータの全てが無効である(つまり、当該ビットマップを構成するフラグ情報が全て0である)ことを示す。すなわち、このマジックナンバー「0x00」によれば、上記したマジックナンバー「0xff」と同様に一定のPBAの範囲に書き込まれているデータの有効性を一括して管理することができ、当該マジックナンバーが付されているビットマップを参照することなく、当該ビットマップにおいて管理されているデータの全てが無効であることを把握することができる。
【0127】
なお、管理データMD2としてマジックナンバー「0xff」及び「0x00」が設定されていない場合は、当該管理データMD2が付されているビットマップが有効を示すフラグ情報及び無効を示すフラグ情報から構成されている(つまり、当該ビットマップにおいて有効を示すフラグ情報及び無効を示すフラグ情報が混在している)ことを意味する。
【0128】
上記したようにマップ格納部42aにビットマップ及び管理データMD2が格納されている場合、マップ格納部42aの各々のサイズは当該ビットマップのサイズ(32ビット)と当該管理データMD2のサイズ(8ビット)とを加算した40ビットであり、32個のマップ格納部42aの合計サイズは160バイトである。
【0129】
PBA格納部42bは、第1VDM断片テーブルT421に割り当てられているPBAの範囲における先頭のPBAを格納する。
【0130】
管理データ格納部42cには、第1VDM断片テーブルT421に割り当てられているPBAの範囲に格納されている複数の4KiBのデータのうち有効なデータの数を示すValid ADU Count及び当該第1VDM断片テーブルT421に割り当てられているPBAの範囲(当該第1VDM断片テーブルT421が管理するPBAの範囲)に相当するGrainが格納される。第1VDM断片テーブルT421の場合、Valid ADU Countの最大値は1,024である。
【0131】
なお、管理データ格納部42cには、他の情報が格納されてもよい。具体的には、管理データ格納部42cには、第1VDM断片テーブルT421に対応する階層(第1階層)を識別するための識別情報(階層ID)等が格納されてもよい。
【0132】
ここで、本実施形態において例えばVDM42が更新される際には、当該VDM42の一部(当該更新の対象となるVDM断片テーブル)がキャッシュメモリ551に格納される。この場合、VDM42の一部はキャッシュライン単位で格納される。また、キャッシュメモリ551で更新されたVDM42の一部は、キャッシュライン単位で不揮発性メモリ4に書き戻される。
【0133】
上記したキャッシュライン単位で第1VDM断片テーブルT421がキャッシュメモリ551に格納される場合を想定する。このようにキャッシュメモリ551に格納される第1VDM断片テーブルT421をVDMキャッシュデータとすると、当該VDMキャッシュデータは、上記したマップ格納部42a、PBA格納部42b及び管理データ格納部42cに加えて、例えばキャッシュメモリ551において互いに関連づけるべきVDMキャッシュデータを示すポインタを更に含む。
【0134】
具体的には、VDMキャッシュデータは、当該VDMキャッシュデータの前に参照されるVDMキャッシュデータを示すポインタを格納する前ポインタ格納部42d及びVDMキャッシュデータの次に参照される他のVDMキャッシュデータを示すポインタを格納する次ポインタ格納部42eを含む。なお、前ポインタ格納部42d及び次ポインタ格納部42eには、上記したLUTキャッシュデータを示すポインタが格納されていてもよい。
【0135】
上記した前ポインタ格納部42d及び次ポインタ格納部42eに格納されるポインタとしては、例えば他のVDMキャッシュデータが格納されているPBAを用いるが、他の形式のアドレスが用いられてもよい。
【0136】
このようなVDMキャッシュデータが参照すべき前後のVDMキャッシュデータへのポインタを利用することによって、キャッシュメモリ551に対するアクセスを高速化することができ、連続的なアクセスを実現することができる。なお、VDMキャッシュデータは、更に他の管理データを含んでいてもよい。
【0137】
図6においては1つの第1VDM断片テーブルT421のデータ構造について説明したが、VDM42に含まれる複数の第1VDM断片テーブルT421は全て同様のデータ構造を有する。
【0138】
次に、
図7は、本実施形態におけるVDM42に含まれる第2VDM断片テーブルT422のデータ構造の一例を示す。なお、ここでは上記した
図6に示す第1VDM断片テーブルT421と異なる点について主に述べる。
【0139】
図6においては第1VDM断片テーブルT421がマップ格納部42aを含むものとして説明したが、第2VDM断片テーブルT422は、当該マップ格納部42aに代えて、PBA格納部42fを含む。
【0140】
PBA格納部42fは、
図5において説明した第2VDM断片テーブルT422に含まれるエントリC422に相当する。つまり、PBA格納部42fの数は、例えば32個である。PBA格納部42fは、第2VDM断片テーブルT422の下位の階層に対応する第1VDM断片テーブルT421を示すポインタとして、当該第1VDM断片テーブルT421が格納されている不揮発性メモリ4内のPBAを格納する。なお、下位の階層に対応する第1VDM断片テーブルT421がキャッシュメモリ551に格納されている場合、PBA格納部42fには、当該キャッシュメモリ551内のアドレス情報が格納される。PBA格納部42fに格納されるPBAのサイズは、例えば32ビットである。
【0141】
また、PBA格納部42fに格納されるPBAには例えば8ビットの管理データMD3が付されており、当該管理データMD3は、当該ビットマップとともに当該PBA格納部42fに格納される。このようにビットマップに付される管理データMD3としては、上記した
図6において説明した管理データMD2と同様に、VDMモードと称されるマジックナンバーが設定される。
【0142】
なお、管理データMD2としてはマジックナンバーとして「0xff」及び「0x00」が設定されるものとして説明したが、管理データMD3として設定されるマジックナンバーには、当該「0xff」及び「0x00」に加えて、「0xfc」及び「0xfd」が更に含まれる。
【0143】
マジックナンバー「0xfc」は、当該マジックナンバー(管理データMD3)が付されているPBAが不揮発性メモリ4内のPBAであることを示す。このマジックナンバー「0xfc」によれば、当該マジックナンバーが付されているPBAに基づいて不揮発性メモリ4に格納されている第1VDM断片テーブルT421を参照(取得)することができる。
【0144】
マジックナンバー「0xfd」は、当該マジックナンバー(管理データMD3)が付されているPBAがキャッシュメモリ551内のアドレス情報であることを示す。このマジックナンバー「0xfd」によれば、当該マジックナンバーが付されているPBAに基づいてキャッシュメモリ551に格納されている第1VDM断片テーブルT421を参照(取得)することができる。
【0145】
なお、上記したようにPBA格納部42fに格納されているPBAに基づいて参照される第1VDM断片テーブルT421は、当該PBA格納部42f(エントリC422)に割り当てられているPBAの範囲が割り当てられている第1階層に対応するVDM断片テーブルである。
【0146】
また、管理データMD3としては上記したマジックナンバー「0xff」または「0x00」が設定されてもよい。管理データMD3としてマジックナンバー「0xff」が設定されている場合、当該マジックナンバーが付されているPBAを格納しているPBA格納部42fに割り当てられているPBA(例えば、1,024個分のPBA)の範囲に格納されている4KiBのデータの全てが有効であることを意味する。一方、管理データMD3としてマジックナンバー「0x00」が設定されている場合、当該マジックナンバーが付されているPBAを格納しているPBA格納部42fに割り当てられているPBA(例えば、1024個分のPBA)の範囲に格納されている4KiBのデータの全てが無効であることを意味する。
【0147】
すなわち、管理データMD3としてマジックナンバー「0xff」及び「0x00」の一方が設定されている場合には、当該マジックナンバーが付されているPBAを格納しているPBA格納部42f(エントリC422)に割り当てられているPBAの範囲に格納されている全てのデータが有効または無効であることを把握することができる。この場合、マジックナンバー「0xff」または「0x00」が付されているPBAに基づいて下位の階層に対応する第1VDM断片テーブルT421を参照する必要はない。
【0148】
一方、管理データMD3としてマジックナンバー「0xff」及び「0x00」が設定されていない(つまり、マジックナンバー「0xfc」または「0xfd」が設定されている)場合には、当該マジックナンバーが付されているPBAを格納しているPBA格納部42f(エントリC422)に割り当てられているPBAの範囲において、有効なデータ及び無効なデータが混在していることを把握することができる。この場合、マジックナンバー「0xfc」または「0xfd」が付されているPBAに基づいて下位の階層に対応する第1VDM断片テーブルT421を参照する必要がある。
【0149】
上記したようにPBA格納部42fにPBA及び管理データMD3が格納されている場合、PBA格納部42fの各々のサイズはPBAのサイズ(32ビット)と管理データMD3のサイズ(8ビット)とを加算した40ビットであり、32個のPBA格納部42fの合計サイズは160バイトである。
【0150】
なお、第2VDM断片テーブルT422はPBA格納部42f以外にPBA格納部42b及び管理データ格納部42cを更に含むが、当該PBA格納部42b及び管理データ格納部42cについては
図6において説明した通りであるため、ここではその詳しい説明を省略する。
【0151】
また、キャッシュメモリ551に格納される第2VDM断片テーブルT422(VDMキャッシュデータ)には前ポインタ格納部42d及び次ポインタ格納部42eが含まれるが、当該前ポインタ格納部42d及び次ポインタ格納部42eについても
図6において説明した通りであるため、ここではその詳しい説明を省略する。
【0152】
図7においては1つの第2VDM断片テーブルT422のデータ構造について説明したが、VDM42に含まれる複数の第2VDM断片テーブルT422は全て同様のデータ構造を有する。
【0153】
また、第2VDM断片テーブルT422以外の他のVDM断片テーブル(第3VDM断片テーブルT423及び第4VDM断片テーブルT424)のデータ構造についても第2VDM断片テーブルT422と同様である。すなわち、例えば第3VDM断片テーブルT423においても、管理データMD3としてマジックナンバー「0xff」及び「0x00」の一方が設定されている場合には、当該マジックナンバーが付されているPBAに基づいて下位の階層に対応する第2VDM断片テーブルT422を参照する必要はない。第4VDM断片テーブルT424の場合も同様である。
【0154】
なお、上記した
図6及び
図7に示す例では、第1VDM断片テーブルT421~第4VDM断片テーブルT424の各々のサイズは例えば168バイトの固定長であり、キャッシュメモリ551に格納されるVDMキャッシュデータの各々のサイズは例えば188バイトの固定長であるが、本実施形態においては、第1VDM断片テーブルT421~第4VDM断片テーブルT424(つまり、VDM42に含まれる複数のVDM断片テーブル)が同一のデータ構造を有するように構成されているものとする。
【0155】
また、上記した
図3、
図6及び
図7において説明したように、本実施形態におけるLUT41(に含まれる各LUT断片テーブル)及びVDM42(に含まれる各VDM断片テーブル)は、同様のデータ構造を有するように構成されている。以下、上記したLUT41とVDM42との関係性について説明する。
【0156】
まず、LUT41は上記したようにLBAに対応するPBAを管理するためのデータであり、最下位の階層(第1階層)に対応する1つの第1LUT断片テーブルT411が32個のエントリC411(PBA格納部41a)を含むものとすると、当該第1LUT断片テーブルT411においては32個のLBA(に対応するPBA)を管理することができる。また、最下位の階層から1つ上位の階層(第2階層)に対応する1つの第2LUT断片テーブルT412が同様に32個のエントリC412を含むものとすると、当該第2LUT断片テーブルT412においては32×32=1,024個のLBA(に対応するPBA)を管理することができる。ここでは第2階層まで説明したが当該第2階層より上位の階層についても同様である。
【0157】
一方、VDM42は上記したように各PBAに格納されているデータの有効性を管理するためのデータであり、最下位の階層(第1階層)に対応する1つの第1VDM断片テーブルT421の1つのエントリC421(マップ格納部42a)に32ビットのビットマップが格納されるものとすると、当該第1VDM断片テーブルT421においては32ビット×32=1,024個のPBA(に格納されているデータ)を管理することができる。また、最下位の階層から1つ上位の階層(第2階層)に対応する1つの第2VDM断片テーブルT422が同様に32個のエントリC422を含むものとすると、当該第2VDM断片テーブルT422においては1,024×32=32,768個のPBA(に格納されているデータ)を管理することができる。ここでは第2階層まで説明したが当該第2階層より上位の階層についても同様である。
【0158】
すなわち、本実施形態において、LUT41及びVDM42はそれぞれ1つのエントリで下位の階層に対応する1つの断片テーブルを管理し、当該LUT41及びVDM42のいずれにおいても階層が1つ上位になる度に32倍の数のPBAを管理することができる。
【0159】
ここで、連続する1,024個のLBAの範囲に対応する4MiBのデータが不揮発性メモリ4内の連続する1,024個のPBAに書き込まれた(シーケンシャルライトされた)場合を想定する。なお、1,024個のPBAの各々には4KiBのデータが書き込まれているものとする。
【0160】
この場合、不揮発性メモリ4に書き込まれた4MiBのデータに対応するLBAと当該データが書き込まれたPBAとの対応関係をLUT41において管理する必要があるが、上記したように第2LUT断片テーブルT412は1,024個のLBA(に対応するPBA)を管理することができる。
【0161】
よって、第2LUT断片テーブルT412が管理する(つまり、当該第2LUT断片テーブルT412に割り当てられている)1,024個のLBAが上記した4MiBのデータに対応する1024個のLBAと一致している場合、当該第2LUT断片テーブルT412の上位の階層に対応する第3LUT断片テーブルT413に含まれる複数のエントリC413に格納されているLUTポインタのうち、当該第2LUT断片テーブルT412を示すLUTポインタを当該4MiBのデータが書き込まれた1024個のPBAのうちの先頭のPBAに更新することができる。これによれば、第3LUT断片テーブルT413に含まれる1つのエントリC413で、上記した4MiBのデータに対応するLBAと当該データが書き込まれたPBAとの対応関係を管理することができる。
【0162】
一方、上記したように不揮発性メモリ4内の連続する1,024個のPBAに4MiBのデータが書き込まれた場合には、当該4MiBのデータを有効なデータとしてVDM42において管理する必要があるが、上記したように第1VDM断片テーブルT421は1,024個のPBAを管理することができる。
【0163】
よって、第1VDM断片テーブルT421が管理する(つまり、当該第1VDM断片テーブルT421に割り当てられている)1,024個のPBAが上記した4MiBのデータが書き込まれた1,024個のPBAと一致している場合、当該第1VDM断片テーブルT421の上位の階層に対応する第2VDM断片テーブルT422に含まれる複数のエントリC422に格納されているVDMポインタのうち、当該第1VDM断片テーブルT421を示すVDMポインタに付されている管理データMD3(マジックナンバー)を「0xff」に更新することができる。これによれば、第2VDM断片テーブルT422に含まれる1つのエントリC422で、上記した1,024個のPBAに格納された4MiBのデータが有効であることを管理することができる。
【0164】
すなわち、上記したように連続する1,024個のLBAの範囲に対応する4MiBのデータが連続する1,024個のPBAに書き込まれた場合、当該LBA及びPBAの対応関係は、LUT41に含まれる最下位の階層から2つ上位の階層に対応するLUT断片テーブルに含まれる1つのエントリ(PBA)を変更することによって管理することができる。また、このように不揮発性メモリ4に書き込まれた4MiBのデータの有効性は、VDM42に含まれる最下位の階層から1つ上位の階層に対応するVDM断片テーブルに含まれる1つのエントリ(マジックナンバー)を変更することによって管理することができる。
【0165】
このように本実施形態においては、LUT41及びVDM42に含まれる各断片テーブルを同様なデータ構造とし、当該LUT41及びVDM42における管理単位を揃えることにより、最下位の階層に対応する断片テーブルを更新することなく、上位の階層の断片テーブルに含まれるエントリを変更するのみでLUT41及びVDM42の更新を完了することができる。
【0166】
ここで、上記したように上位の階層に対応する断片テーブルに含まれるエントリを変更することによってLUT41及びVDM42の更新を完了するためには、LUT41に含まれるLUT断片テーブルと同様のデータ構造を有するVDM42に含まれるVDM断片テーブルが
M=y×N^x(以下、条件式と表記)
を満たす必要がある。
【0167】
なお、上記した条件式において、Nは最下位の階層に対応する第1VDM断片テーブルT421に含まれるエントリの数であり、Mは最下位の階層に対応する第1VDM断片テーブルT421に含まれる1つのエントリにおいて有効性が管理される4KiBのデータ(つまり、当該データが格納されるPBA)の数である。また、条件式において、xは0以上の整数であり、yは1以上N未満の整数または1以上N未満の整数の逆数である。
【0168】
以下、上記したNとMとの関係性について具体的に説明する。ここでは、各LUT断片テーブルに割り当てられているLBA(に対応するPBA)の数を当該LUT断片テーブルのPBA管理数、各VDM断片テーブルに割り当てられているPBAの数を当該VDM断片テーブルのPBA管理数と称する。
【0169】
なお、第1階層(最下位の階層)に対応するLUT断片テーブル(第1LUT断片テーブルT411)に含まれる1つのエントリに割り当てられているLBA(に対応するPBA)の数は1であり、以下の説明においても同様であるものとする。
【0170】
図8は、N=32、M=32である場合における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示している。
【0171】
ここで、N=32、M=32である場合、第1階層に対応するLUT断片テーブルのPBA管理数は32であり、当該第1階層に対応するVDM断片テーブル(第1VDM断片テーブルT421)のPBA管理数は1,024である。また、第2階層に対応するLUT断片テーブル(第2LUT断片テーブルT412)のPBA管理数は1,024であり、当該第2階層に対応するVDM断片テーブル(第2VDM断片テーブルT422)のPBA管理数は32,768である。
【0172】
なお、第2階層よりも上位の階層に対応するLUT断片テーブルのPBA管理数及びVDM断片テーブルのPBA管理数については詳しい説明を省略するが、N=32である場合には、LUT断片テーブルのPBA管理数及びVDM断片テーブルのPBA管理数はともに、階層が1つ上位になると32倍となる。
【0173】
上記したように同一の階層に対応するLUT断片テーブルとVDM断片テーブルとを比較すると、VDM断片テーブルのPBA管理数は、LUT断片テーブルの管理数よりも多くなる。また、LUT41全体としてのPBA管理数とVDM42全体としてのPBA管理数とが同数である場合、本実施形態におけるVDM42が有する階層構造を構成する階層の数は、LUT41が有する階層構造を構成する階層の数よりも少なくなる。
【0174】
なお、N=32、M=32である場合、x=1、y=1であるときに上記した条件式を満たす。このように条件式を満たす場合、xはLUT断片テーブルとVDM断片テーブルとの階層の差に相当し、yは当該LUT断片テーブルのPBA管理数と当該VDM断片テーブルのPBA管理数との比(つまり、「VDM断片テーブルのPBA管理数/LUT断片テーブルのPBA管理数」)に相当する。具体的には、階層の差が1(つまり、x=1)である第2階層に対応するLUT断片テーブルと第1階層に対応するVDM断片テーブルとに着目した場合、当該LUT断片テーブルのPBA管理数は1,024であり、当該VDM断片テーブルのPBA管理数は1,024であり、「VDM断片テーブルのPBA管理数/LUT断片テーブルのPBA管理数」は1(つまり、y=1)である。
【0175】
このように上記した条件式を満たすN及びMであれば、例えば第2階層に対応するLUT断片テーブルに割り当てられている1,024個のLBAの範囲に対応するデータが不揮発性メモリ4に書き込まれた場合には、第3階層に対応するLUT断片テーブルに含まれる1つのエントリ(PBA格納部41aに格納されているPBA)を変更することによってLUT41の更新を完了することができる。同様に、1,024個のLBAの範囲に対応するデータが第1階層に対応するVDM断片テーブルに割り当てられている1,024個のPBAに書き込まれた場合には、第2階層に対応するVDM断片テーブルに含まれる1つのエントリ(マップ格納部42aに格納されているマジックナンバー)を変更することによってVDM42の更新を完了することができる。
【0176】
すなわち、N=32、M=32である場合には、i(iは、1以上の整数)階層に対応するLUT断片テーブルのPBA管理数と、i-1階層に対応するVDM断片テーブルのPBA管理数との比が1:1となり、例えばLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの1エントリの変更でLUT41の更新に対応することができ、VDM42の1エントリの変更でVDM42の更新に対応することができる。
【0177】
なお、
図8において説明したN=32、M=32はLUT41(LBA及びPBAの対応関係)及びVDM42(データの有効性)を最も効率的に管理することができる例の1つであるが、例えばNを変えた場合であっても上記した条件式を満たすのであればLUT41及びVDM42の効率的な管理を実現することができる。
【0178】
以下、Nを変化させた場合について説明するが、上記した
図8において説明した部分と同様の部分についてはその詳しい説明を省略する。
【0179】
図9は、N=8、M=32とした場合における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルの管理数との関係を示している。
【0180】
ここで、N=8、M=32である場合、第1階層に対応するLUT断片テーブルのPBA管理数は8であり、当該第1階層に対応するVDM断片テーブルのPBA管理数は256である。また、第2階層に対応するLUT断片テーブルのPBA管理数は64であり、当該第2階層に対応するVDM断片テーブルのPBA管理数は2,048である。
【0181】
なお、第2階層よりも上位の階層に対応するLUT断片テーブルのPBA管理数及びVDM断片テーブルのPBA管理数については詳しい説明を省略するが、N=8である場合には、LUT断片テーブルのPBA管理数及びVDM断片テーブルのPBA管理数はともに、階層が1つ上位になると8倍となる。
【0182】
また、N=8、M=32である場合、x=1、y=4であるときに上記した条件式を満たす。具体的には、階層の差が1(つまり、x=1)である第2階層に対応するLUT断片テーブルと第1階層に対応するVDM断片テーブルとに着目した場合、当該LUT断片テーブルのPBA管理数は64であり、当該VDM断片テーブルのPBA管理数は256であり、「VDM断片テーブルのPBA管理数/LUT断片テーブルのPBA管理数」は4(つまり、y=4)である。
【0183】
このように上記した条件式を満たすN及びMであれば、例えば第2階層に対応する4つ分のLUT断片テーブルに割り当てられている256個のLBAの範囲に対応するデータが不揮発性メモリ4に書き込まれた場合には、第3階層に対応するLUT断片テーブルに含まれる4つのエントリを変更することによってLUT41の更新を完了することができる。同様に、256個のLBAの範囲に対応するデータが第1階層に対応するVDM断片テーブルに割り当てられている256個のPBAに書き込まれた場合には、第2階層に対応するVDM断片テーブルに含まれる1つのエントリを変更することによってVDM42の更新を完了することができる。
【0184】
すなわち、N=8、M=32である場合には、i階層に対応するLUT断片テーブルのPBA管理数と、i-1階層に対応するVDM断片テーブルのPBA管理数との比が1:4となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの4エントリの変更でLUT41の更新に対応することができ、VDM42の1エントリの変更でVDM42の更新に対応することができる。
【0185】
なお、N=8、M=32である場合には、x=2、y=1/2であるときにも上記した条件式を満たす。詳しい説明については省略するが、この場合においてはi階層に対応するLUT断片テーブルのPBA管理数と、i-2階層に対応するVDM断片テーブルのPBA管理数との比が2:1となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの1エントリの変更でLUT41の更新に対応することができ、VDM断片テーブルの2エントリの変更でVDM42の更新に対応することができる。
【0186】
図10は、N=16、M=32とした場合における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示している。
【0187】
ここで、N=16、M=32である場合、第1階層に対応するLUT断片テーブルのPBA管理数は16であり、当該第1階層に対応するVDM断片テーブルのPBA管理数は512である。また、第2階層に対応するLUT断片テーブルのPBA管理数は256であり、当該第2階層に対応するVDM断片テーブルのPBA管理数は8,192である。
【0188】
なお、第2階層よりも上位の階層に対応するLUT断片テーブルのPBA管理数及びVDM断片テーブルのPBA管理数については詳しい説明を省略するが、N=16である場合には、LUT断片テーブルのPBA管理数及びVDM断片テーブルのPBA管理数はともに、階層が1つ上位になると16倍となる。
【0189】
また、N=16、M=32である場合、x=1、y=2であるときに上記した条件式を満たす。具体的には、階層の差が1(つまり、x=1)である第2階層に対応するLUT断片テーブルと第1階層に対応するVDM断片テーブルとに着目した場合、当該LUT断片テーブルのPBA管理数は256であり、当該VDM断片テーブルのPBA管理数は512であり、「VDM断片テーブルのPBA管理数/LUT断片テーブルのPBA管理数」は2(つまり、y=2)である。
【0190】
このように上記した条件式を満たすN及びMであれば、例えば第2階層に対応する2つ分のLUT断片テーブルに割り当てられている512個のLBAの範囲に対応するデータが不揮発性メモリ4に書き込まれた場合には、第3階層に対応するLUT断片テーブルに含まれる2つのエントリを変更することによってLUT41の更新を完了することができる。同様に、512個のLBAの範囲に対応するデータが第1階層に対応するVDM断片テーブルに割り当てられている512個のPBAに書き込まれた場合には、第2階層に対応するVDM断片テーブルに含まれる1つのエントリを変更することによってVDM42の更新を完了することができる。
【0191】
すなわち、N=16、M=32である場合には、i階層に対応するLUT断片テーブルのPBA管理数と、i-1階層に対応するVDM断片テーブルのPBA管理数との比が1:2となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの2エントリの変更でLUT41の更新に対応することができ、VDM断片テーブルの1エントリの変更でVDM42の更新に対応することができる。
【0192】
なお、N=16、M=32である場合には、x=2、y=1/8であるときにも上記した条件式を満たす。詳しい説明については省略するが、この場合においてはi階層に対応するLUT断片テーブルのPBA管理数と、i-2階層に対応するVDM断片テーブルのPBA管理数との比が8:1となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの1エントリの変更でLUT41の更新に対応することができ、VDM断片テーブルの8エントリの変更でVDM42の更新に対応することができる。
【0193】
図11は、N=64、M=32とした場合における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示している。
【0194】
ここで、N=64、M=32である場合、第1階層に対応するLUT断片テーブルのPBA管理数は64であり、当該第1階層に対応するVDM断片テーブルのPBA管理数は2,048である。また、第2階層に対応するLUT断片テーブルのPBA管理数は4,096であり、当該第2階層に対応するVDM断片テーブルのPBA管理数は131,072である。
【0195】
なお、第2階層よりも上位の階層に対応するLUT断片テーブルのPBA管理数及びVDM断片テーブルのPBA管理数については詳しい説明を省略するが、N=64である場合には、LUT断片テーブルのPBA管理数及びVDM断片テーブルのPBA管理数はともに、階層が1つ上位になると64倍となる。
【0196】
また、N=64、M=32である場合、x=0、y=32であるときに上記した条件式を満たす。具体的には、階層の差が0(つまり、x=0)である第1階層に対応するLUT断片テーブルと第1階層に対応するVDM断片テーブルとに着目した場合、当該LUT断片テーブルのPBA管理数は64であり、当該VDM断片テーブルのPBA管理数は2,048であり、「VDM断片テーブルのPBA管理数/LUT断片テーブルのPBA管理数」は32(つまり、y=32)である。
【0197】
このように上記した条件式を満たすN及びMであれば、例えば第1階層に対応する32個分のLUT断片テーブルに割り当てられている2,048個のLBAの範囲に対応するデータが不揮発性メモリ4に書き込まれた場合には、第2階層に対応するLUT断片テーブルに含まれる32個のエントリを変更することによってLUT41の更新を完了することができる。同様に、2,048個のLBAの範囲に対応するデータが第1階層に対応するVDM断片テーブルに割り当てられている2,048個のPBAに書き込まれた場合には、第2階層に対応するVDM断片テーブルに含まれる1つのエントリを変更することによってVDM42の更新を完了することができる。
【0198】
すなわち、N=64、M=32である場合には、i階層に対応するLUT断片テーブルのPBA管理数と、i階層に対応するVDM断片テーブルのPBA管理数との比が1:32となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの32エントリの変更でLUT41の更新に対応することができ、VDM断片テーブルの1エントリの変更でVDM42の更新に対応することができる。
【0199】
なお、N=64、M=32である場合には、x=1、y=1/2であるときにも上記した条件式を満たす。詳しい説明については省略するが、この場合においてはi階層に対応するLUT断片テーブルのPBA管理数と、i-1階層に対応するVDM断片テーブルのPBA管理数との比が2:1となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの1エントリの変更でLUT41の更新に対応することができ、VDM断片テーブルの2エントリの変更でVDM42の更新に対応することができる。
【0200】
図12は、N=128、M=32とした場合における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示している。
【0201】
ここで、N=128、M=32である場合、第1階層に対応するLUT断片テーブルのPBA管理数は128であり、当該第1階層に対応するVDM断片テーブルのPBA管理数は4,096である。また、第2階層に対応するLUT断片テーブルのPBA管理数は16,384であり、当該第2階層に対応するVDM断片テーブルのPBA管理数は524,288である。
【0202】
なお、第2階層よりも上位の階層に対応するLUT断片テーブルのPBA管理数及びVDM断片テーブルのPBA管理数については詳しい説明を省略するが、N=128である場合には、LUT断片テーブルのPBA管理数及びVDM断片テーブルのPBA管理数はともに、階層が1つ上位になると128倍となる。
【0203】
また、N=128、M=32である場合、x=0、y=32であるときに上記した条件式を満たす。具体的には、階層の差が0(つまり、x=0)である第1階層に対応するLUT断片テーブルと第1階層に対応するVDM断片テーブルとに着目した場合、当該LUT断片テーブルのPBA管理数は128であり、当該VDM断片テーブルのPBA管理数は4,096であり、「VDM断片テーブルのPBA管理数/LUT断片テーブルのPBA管理数」は32(つまり、y=32)である。
【0204】
このように上記した条件式を満たすN及びMであれば、例えば第1階層に対応する32個分のLUT断片テーブルに割り当てられている4,096個のLBAの範囲に対応するデータが不揮発性メモリ4に書き込まれた場合には、第2階層に対応するLUT断片テーブルに含まれる32個のエントリを変更することによってLUT41の更新を完了することができる。同様に、4,096個のLBAの範囲に対応するデータが第1階層に対応するVDM断片テーブルに割り当てられている4,096個のPBAに書き込まれた場合には、第2階層に対応するVDM断片テーブルに含まれる1つのエントリを変更することによってVDM42の更新を完了することができる。
【0205】
すなわち、N=128、M=32である場合には、i階層に対応するLUT断片テーブルのPBA管理数と、i階層に対応するVDM断片テーブルのPBA管理数との比が1:32となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの32エントリの変更でLUT41の更新に対応することができ、VDM断片テーブルの1エントリの変更でVDM42の更新に対応することができる。
【0206】
なお、N=128、M=32である場合には、x=1、y=1/4であるときにも上記した条件式を満たす。詳しい説明については省略するが、この場合にはおいてはi階層に対応するLUT断片テーブルのPBA管理数と、i-1階層に対応するVDM断片テーブルのPBA管理数との比が4:1となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの1エントリの変更でLUT41の更新に対応することができ、VDM断片テーブルの4エントリの変更でVDM42の更新に対応することができる。
【0207】
上記した
図8~
図12においてはM=32であるものとして説明したが、以下、
図13~
図17を参照して、M=64である場合について説明する。なお、Mが変更されている点以外については上記した
図8~
図12と同様であるため、
図13~
図17については、適宜、簡略化して説明する。
【0208】
図13は、N=64、M=64である場合における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示している。
【0209】
N=64、M=64である場合、x=1、y=1であるときに上記した条件式を満たす。すなわち、N=64、M=64である場合には、i階層に対応するLUT断片テーブルのPBA管理数と、i-1階層に対応するVDM断片テーブルのPBA管理数との比が1:1となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの1エントリの変更でLUT41の更新に対応することができ、VDM42の1エントリの変更でVDM42の更新に対応することができる。
【0210】
なお、上記した
図8において説明したように、N=32、M=32である場合も、LUT断片テーブルの1エントリの変更でLUT41の更新に対応することができ、VDM42の1エントリの変更でVDM42の更新に対応することができる。すなわち、本実施形態においては、N=Mである場合にLUT41及びVDM42のより効率的な管理を実現することができるといえる。
【0211】
図14は、N=8、M=64である場合における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示している。
【0212】
N=8、M=64である場合、x=2、y=1であるときに上記した条件式を満たす。すなわち、N=8、M=64である場合には、i階層に対応するLUT断片テーブルのPBA管理数と、i-2階層に対応するVDM断片テーブルのPBA管理数との比が1:1となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの1エントリの変更でLUT41の更新に対応することができ、VDM42の1エントリの変更でVDM42の更新に対応することができる。
【0213】
このようにN=Mでない場合であってもLUT41の更新にもVDM42の更新にも1エントリで対応することができる場合がある。これによれば、例えばM=N^xが成立する場合にもLUT41及びVDM42のより効率的な管理を実現することができるといえる。
【0214】
図15は、N=16、M=64である場合における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示している。
【0215】
N=16、M=32である場合、x=1、y=4であるときに上記した条件式を満たす。すなわち、N=16、M=64である場合には、i階層に対応するLUT断片テーブルのPBA管理数と、i-1階層に対応するVDM断片テーブルのPBA管理数との比が1:4となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの4エントリの変更でLUT41の更新に対応することができ、VDM断片テーブルの1エントリの変更でVDM42の更新に対応することができる。
【0216】
なお、N=16、M=64である場合には、x=2、y=1/4であるときにも上記した条件式を満たす。この場合においては、i階層に対応するLUT断片テーブルのPBA管理数と、i-2階層に対応するVDM断片テーブルのPBA管理数との比が4:1となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの1エントリの変更でLUT41の更新に対応することができ、VDM断片テーブルの4エントリの変更でVDM42の更新に対応することができる。
【0217】
図16は、N=32、M=64である場合における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示している。
【0218】
N=32、M=64である場合、x=1、y=2であるときに上記した条件式を満たす。すなわち、N=32、M=64である場合には、i階層に対応するLUT断片テーブルのPBA管理数と、i-1階層に対応するVDM断片テーブルのPBA管理数との比が1:2となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの2エントリの変更でLUT41の更新に対応することができ、VDM断片テーブルの1エントリの変更でVDM42の更新に対応することができる。
【0219】
なお、N=32、M=64である場合には、x=2、y=1/16であるときにも上記した条件式を満たす。この場合においては、i階層に対応するLUT断片テーブルのPBA管理数と、i-2階層に対応するVDM断片テーブルのPBA管理数との比が16:1となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの1エントリの変更でLUT41の更新に対応することができ、VDM断片テーブルの16エントリの変更でVDM42の更新に対応することができる。
【0220】
図17は、N=128、M=64である場合における各階層に対応するLUT断片テーブルのPBA管理数とVDM断片テーブルのPBA管理数との関係を示している。
【0221】
N=128、M=64である場合には、x=0、y=64であるときに上記した条件式を満たす。すなわち、N=128、M=64である場合には、i階層に対応するLUT断片テーブルのPBA管理数と、i階層に対応するVDM断片テーブルのPBA管理数との比が1:64となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの64エントリの変更でLUT41の更新に対応することができ、VDM断片テーブルの1エントリの変更でVDM42の更新に対応することができる。
【0222】
なお、N=128、M=64である場合には、x=1、y=1/2であるときにも上記した条件式を満たす。この場合には、i階層に対応するLUT断片テーブルのPBA管理数と、i-1階層に対応するVDM断片テーブルのPBA管理数との比が2:1となり、上記したようにLBA及びPBAの連続性が確保されている場合には、LUT断片テーブルの1エントリの変更でLUT41の更新に対応することができ、VDM断片テーブルの2エントリの変更でVDM42の更新に対応することができる。
【0223】
本実施形態においては、M=32の場合とM=64の場合とについて説明したが、当該Mはメモリシステム3における演算ビット幅(例えば、32ビットまたは64ビット等)に対応するように決定されてもよい。
【0224】
次に、本実施形態に係るメモリシステム3の動作について説明する。まず、
図18のフローチャートを参照して、ホスト2から書き込みコマンドが送信された場合のメモリシステム3の処理手順の一例について説明する。
【0225】
上記したようにホスト2から書き込みコマンドが送信された場合、通信インタフェース制御部51は、当該書き込みコマンドを受信する(ステップS1)。なお、ステップS1において受信される書き込みコマンドには、当該書き込みコマンドに基づいて不揮発性メモリ4に書き込まれるデータ(以下、対象データと表記)及び当該データにアクセスするためのLBA(以下、対象LBAと表記)が含まれる。なお、対象データは、一時的に書き込みバッファメモリ52に格納される。
【0226】
次に、書き込み制御部561は、書き込みバッファメモリ52に格納された対象データを、不揮発性メモリコントローラ54を介して不揮発性メモリ4に書き込む(ステップS2)。以下の説明においては、ステップS2において対象データが書き込まれた不揮発性メモリ4内のPBAを、便宜的に、対象PBAと称する。
【0227】
ステップS2の処理が実行されると、管理部565は、例えば不揮発性メモリコントローラ54及びキャッシュメモリ制御部566と協働することにより、対象PBAに基づいてVDM42を更新する(ステップS3)。このステップS3においては、対象データが有効であること(つまり、対象PBAに書き込まれたデータが有効であること)を管理するようにVDM42が更新される。
【0228】
ここで、本実施形態においてVDM42は、階層構造を有し、各階層に対応する複数のVDM断片テーブルを含む。この場合、ステップS3においては、VDM42を参照することによって対象PBAが割り当てられている1つまたは複数のVDM断片テーブルが特定され、必要に応じて当該特定されたVDM断片テーブルが不揮発性メモリ4から読み出される。このように不揮発性メモリ4から読み出されたVDM断片テーブルは、キャッシュメモリ551に格納され、当該キャッシュメモリ551上で更新される。なお、上記したように特定されたVDM断片テーブルが既にキャッシュメモリ551に格納されている場合には、当該VDM断片テーブルを不揮発性メモリ4から読み出す必要はない。
【0229】
次に、このように特定されたVDM断片テーブルに含まれるエントリのうち、対象PBAが割り当てられているエントリが変更される。このようにエントリが変更されたVDM断片テーブルは、キャッシュメモリ551から読み出され、不揮発性メモリ4に書き戻される。
【0230】
なお、エントリが変更されるVDM断片テーブルは、上記したように階層構造におけるか最下位の階層に対応するVDM断片テーブルであってもよいし、当該階層よりも上位の階層に対応するVDM断片テーブルであってもよい。
【0231】
具体的には、対象PBAが比較的狭い範囲のPBAであり、最下位の階層に対応するVDM断片テーブルに含まれるエントリを変更しなければ対象PBAに書き込まれた対象データが有効であることを管理することができないのであれば、当該最下位の階層に対応するVDM断片テーブルに含まれるエントリが変更される。この場合、最下位の階層に対応するVDM断片テーブルに含まれるエントリのうち、対象PBAが割り当てられているエントリ(マップ格納部42a)に格納されているビットマップを構成するフラグ情報(対象PBAに対応するフラグ情報)が変更される。また、最下位の階層に対応するVDM断片テーブルに含まれる少なくとも1つのエントリに割り当てられている連続するPBAの全範囲が対象PBAである場合には、当該エントリに格納されているマジックナンバー(管理データMD2)が「0xff」に変更される。
【0232】
一方、対象PBAが比較的広い範囲の連続するPBAであり、最下位の階層以外の階層に対応するVDM断片テーブルに含まれるエントリを変更することによって、対象PBAに書き込まれた対象データが有効であることを管理することができるのであれば、当該最下位の階層以外の階層に対応するVDM断片テーブルに含まれるエントリを変更すればよい。この場合、最下位の階層以外の階層に対応するVDM断片テーブルに含まれるエントリのうち、対象PBAが割り当てられているエントリ(PBA格納部42f)に格納されているマジックナンバー(管理データMD3)が「0xff」に変更される。
【0233】
なお、このように最下位の階層以外の階層に対応するVDM断片テーブルに含まれるエントリが変更された場合、当該VDM断片テーブルのみで対象データの有効性を管理することができるため、当該VDM断片テーブルよりも下位の階層に対応するVDM断片テーブル(つまり、当該エントリに格納されているポインタによって示されるVDM断片テーブル)は破棄することができる。
【0234】
一方、最下位の階層に対応するVDM断片テーブルに含まれるエントリを変更する必要がある場合であって、当該VDM断片テーブルが存在しない(破棄されている)場合には、対象PBAが割り当てられたエントリを含むVDM断片テーブルは新たに作成される。
【0235】
ステップS3においては、このような処理が実行されることにより、不揮発性メモリ4に格納されているVDM42を更新することができる。なお、不揮発性メモリ4へのVDM42の書き戻しは、ステップS3以降の任意のタイミングで実施されればよい。
【0236】
ステップS3の処理が実行されると、管理部565は、例えば不揮発性メモリコントローラ54及びキャッシュメモリ制御部566と協働することにより、書き込みコマンド(対象LBA)及び対象PBAに基づいてLUT41を更新する(ステップS4)。このステップS4においては、対象LBAと対象PBAとの対応関係を管理する(つまり、対象LBAを対象PBAに変換することが可能な)ようにLUT41が更新される。
【0237】
ここで、本実施形態においてLUT41は、階層構造を有し、各階層に対応する複数のLUT断片テーブルを含む。この場合、ステップS4においては、LUT41を参照することによって対象LBAが割り当てられている1つまたは複数のLUT断片テーブルが特定され、必要に応じて当該特定されたLUT断片テーブルが不揮発性メモリ4から読み出される。このように不揮発性メモリ4から読み出されたLUT断片テーブルは、キャッシュメモリ551に格納され、当該キャッシュメモリ551上で更新される。なお、上記したように特定されたLUT断片テーブルが既にキャッシュメモリ551に格納されている場合には、当該LUT断片テーブルを不揮発性メモリ4から読み出す必要はない。
【0238】
次に、このように特定されたLUT断片テーブルに含まれるエントリのうちの対象LBAが割り当てられているエントリが変更される。この場合、対象LBAが割り当てられているエントリ(PBA格納部41a)に格納されているPBAが、対象PBAに変更される。このようにエントリが変更されたLUT断片テーブルは、キャッシュメモリ551から読み出され、不揮発性メモリ4に書き戻される。
【0239】
なお、エントリが変更されるLUT断片テーブルは、上記したように階層構造における最下位の階層に対応するLUT断片テーブルであってもよいし、当該階層よりも上位の階層に対応するLUT断片テーブルであってもよい。
【0240】
具体的には、対象LBAが比較的狭い範囲のLBAであり、最下位の階層に対応するLUT断片テーブルに含まれるエントリを変更しなければ対象LBA及び対象PBAの対応関係を管理することができないのであれば、当該最下位の階層に対応するLUT断片テーブルに含まれるエントリが変更される。
【0241】
一方、対象LBAが例えば比較的広い範囲の連続するLBAであり、対象データが連続するPBAに書き込まれており、最下位の階層以外の階層に対応するLUT断片テーブルに含まれるエントリを変更することによって、当該対象LBA及び対象PBAの対応関係を管理することができるのであれば、当該最下位の階層以外の階層に対応するLUT断片テーブルに含まれるエントリを変更すればよい。
【0242】
ステップS4においては、このような処理が実行されることにより、不揮発性メモリ4に格納されているLUT41を更新することができる。なお、不揮発性メモリ4へのLUT41の書き戻しは、ステップS4以降の任意のタイミングで実施されればよい。
【0243】
ステップS4の処理が実行されると、管理部565は、ステップS1において受信された書き込みコマンドに対する応答(完了応答)を、通信インタフェース制御部51を介してホスト2に送信する(ステップS5)。
【0244】
ここではホスト2からの書き込みコマンドに基づいてLUT41及びVDM42が更新される場合について説明したが、当該ホスト2から例えばTrimコマンドが送信された場合についても同様にLUT41及びVDM42は更新される必要がある。
【0245】
以下、
図19のフローチャートを参照して、ホスト2からTrimコマンドが送信された場合のメモリシステム3の処理手順の一例について説明する。
【0246】
Trimコマンドは、例えばホスト2が使用するファイルシステムにおいて所定のファイルが削除された場合に、当該ファイルに相当するデータを無効化するためのコマンドである。Trimコマンドは、ストレージデバイスを接続するためのインタフェース規格に応じて、例えばUnmapコマンド等とも称される。なお、Trimコマンドによっては不揮発性メモリ4に書き込まれているデータは消去されず、当該データは、ガーベージコレクションによって消去される。
【0247】
上記したTrimコマンドがホスト2から送信された場合、通信インタフェース制御部51は、当該Trimコマンドを受信する(ステップS11)。なお、ステップS11において受信されたTrimコマンドには、無効にすべきデータにアクセスするためのLBA(の範囲)が含まれている。以下の説明においては、Trimコマンドに含まれるLBAを対象LBAと称する。
【0248】
ステップS11の処理が実行されると、アドレス変換部564は、LUT41に含まれるLUT断片テーブルを上位の階層から順に参照して、対象LBAをPBAに変換する(ステップS12)。これにより、アドレス変換部564は、対象LBAに対応するPBAを取得する。以下の説明においては、アドレス変換部564によって取得されたPBAを対象PBAと称する。
【0249】
次に、管理部565は、対象PBAに格納されているデータ(つまり、対象LBAに対応するデータ)が無効であることを管理するようにVDM42を更新する(ステップS13)。なお、Trimコマンドに基づくVDM42の更新処理は、データが無効であることを管理するようにVDM42を更新する点以外は
図18に示すステップS3に示す処理と同様であるため、ここではその詳しい説明を省略する。
【0250】
なお、対象PBAが比較的広い範囲の連続するPBAであり、最下位の階層以外の階層に対応するVDM断片テーブルに含まれるエントリを変更することによって、対象PBAに書き込まれているデータが無効であることを管理することができるのであれば、当該最下位の階層以外の階層に対応するVDM断片テーブルに含まれるエントリのうち、対象PBAが割り当てられているエントリに格納されているマジックナンバーが「0x00」に変更される。
【0251】
また、最下位の階層に対応するVDM断片テーブルに含まれる少なくとも1つのエントリに割り当てられている連続するPBAの全範囲が対象PBAである場合には、当該エントリに格納されているマジックナンバーが「0x00」に変更される。
【0252】
更に、管理部565は、対象LBAと対象PBA(無効にすべきデータが格納されているPBA)との対応関係を無効化するようにLUT41を更新する(ステップS14)。LUT41においてLBAとPBAとの対応関係を無効化する場合には、例えば当該LBAが割り当てられているLUT断片テーブルに含まれるエントリ(PBA格納部41a)にマジックナンバーが設定される。なお、Trimコマンドに基づくLUT41の更新処理は、LBAとPBAとの対応関係を無効化する点以外は上記した
図18に示すステップS4と同様であるため、ここではその詳しい説明を省略する。
【0253】
上記したようにLUT41及びVDM42が更新された場合、管理部565は、Trimコマンドに対する応答(完了応答)を、通信インタフェース制御部51を介してホスト2に送信する(ステップS15)。
【0254】
図19に示す例では、LUT41及びVDM42が更新された後に完了応答がホスト2に送信されるものとして説明したが、例えばVDM42の更新は完了応答の送信後に実行される(つまり、遅延実行される)ような構成としても構わない。
【0255】
ここで、上記したVDM42はガーベージコレクションを効率的に実行するために必要であるが、当該ガーベージコレクションが実行される際には当該VDM42を参照して不揮発性メモリ4内の各PBAに書き込まれているデータが有効であるか無効であるかを確認する必要がある。
【0256】
以下、
図20のフローチャートを参照して、不揮発性メモリ4内の特定のPBA(以下、対象PBAと表記)に書き込まれているデータが有効であるか無効であるかを確認する際のメモリシステム3の処理手順の一例について説明する。
【0257】
まず、本実施形態においてVDM42は複数の階層から構成される階層構造を有し、メモリ55には、当該複数の階層のうちの最上位の階層に対応するVDM断片テーブルを示すVDMポインタ(当該VDM断片テーブルが格納されているPBA)が保持されている。なお、最上位の階層に対応するVDM断片テーブルが不揮発性メモリ4に格納されている場合、メモリ55に保持されているVDMポインタは、不揮発性メモリ4内のPBAである。また、最上位の階層に対応するVDM断片テーブルがキャッシュメモリ551に格納されている場合、メモリ55に保持されているVDMポインタは、キャッシュメモリ551内のアドレス情報である。
【0258】
この場合、管理部565は、メモリ55に保持されているVDMポインタに基づいて、不揮発性メモリ4またはキャッシュメモリ551からVDM断片テーブルを読み出す(ステップS21)。
【0259】
次に、管理部565は、ステップS1において読み出されたVDM断片テーブル(最上位の階層に対応するVDM断片テーブル)に含まれる複数のエントリのうち、対象PBAが割り当てられているエントリに格納されているマジックナンバー(以下、対象マジックナンバーと表記)を参照する(ステップS22)。
【0260】
なお、ステップS21において読み出されたVDM断片テーブルが最下位の階層に対応するVDM断片テーブルでない場合、当該VDM断片テーブルに含まれるエントリに格納されるマジックナンバー(管理データMD3)としては、上記した「0xff」、「0x00」、「0xfc」及び「0xfd」のうちの1つが設定されている。
【0261】
管理部565は、このように参照された対象マジックナンバーが「0xff」または「0x00」であるか否かを判定する(ステップS23)。
【0262】
対象マジックナンバーが「0xff」及び「0x00」でないと判定された場合(ステップS23のNO)、管理部565は、当該対象マジックナンバーが「0xfc」または「0xfd」であるか否かを判定する(ステップS24)。
【0263】
対象マジックナンバーが「0xfc」または「0xfd」であると判定された場合(ステップS24のYES)、管理部565は、当該対象マジックナンバーが付されているVDMポインタを取得する(ステップS25)。ステップS25が実行された場合、ステップS21に戻って処理が繰り返される。
【0264】
ここで、マジックナンバー「0xfc」は、上記したように当該マジックナンバーが付されているVDMポインタ(PBA)が不揮発性メモリ4内のPBAであることを示す。このため、対象マジックナンバーが「0xfc」である場合、ステップS25の後に実行されるステップS21においては、当該ステップS24において取得されたVDMポインタに基づいて、不揮発性メモリ4から次の階層(下位の階層)に対応するVDM断片テーブルが読み出される。
【0265】
一方、マジックナンバー「0xfd」は、上記したように当該マジックナンバーが付されているVDMポインタ(PBA)がキャッシュメモリ551内のアドレス情報であることを示す。このため、対象マジックナンバーが「0xfd」である場合、ステップS25の後に実行されるステップS21においては、当該ステップS24において取得されたVDMポインタに基づいて、キャッシュメモリ551から次の階層(下位の階層)に対応するVDM断片テーブルが読み出される。
【0266】
本実施形態においては、このようにステップS21~S25の処理が繰り返されることによって各階層に対応するVDM断片テーブルを順次参照することが可能となる。
【0267】
一方、ステップS23において対象マジックナンバーが「0xff」または「0x00」であると判定された場合を想定する(ステップS23のYES)。
【0268】
ここで、マジックナンバー「0xff」は、当該マジックナンバーが格納されているエントリに割り当てられているPBAの全範囲に書き込まれている全てのデータが有効であることを示す。すなわち、対象マジックナンバーが「0xff」である場合には、対象PBAに格納されているデータが有効であることを把握することができるため、
図20に示す処理は終了される。
【0269】
また、マジックナンバー「0x00」は、当該マジックナンバーが格納されているエントリに割り当てられているPBAの全範囲に書き込まれているデータが無効であることを示す。すなわち、対象マジックナンバーが「0x00」である場合には、対象PBAに格納されているデータが無効であることを把握することができるため、
図20に示す処理は終了される。
【0270】
また、ステップS24において対象マジックナンバーが「0xfc」及び「0xfd」でないと判定された場合(ステップS24のNO)、対象PBAが割り当てられているエントリにおいては、マジックナンバー「0xff」、「0x00」、「0xfc」及び「0xfd」が設定されていない。この場合、ステップS21において読み出されたVDM断片テーブルは最下位の階層に対応するVDM断片テーブルであり、当該VDM断片テーブルに含まれている対象PBAを含むPBAの範囲に格納されているデータの有効性が共通していない(つまり、有効なデータ及び無効なデータが混在している)ことがわかる。この場合、管理部565は、ステップS21において読み出されたVDM断片テーブル(最下位の階層に対応するVDM断片テーブル)の対象PBAが割り当てられているエントリに格納されているビットマップを取得する(ステップS26)。管理部565は、ステップS26において取得されたビットマップを構成する複数のフラグ情報のうち、対象PBAに格納されているデータの有効性を示すフラグ情報(つまり、対象PBAに対応するフラグ情報)に基づいて、当該データが有効であるか無効であるかを把握することができる。
【0271】
上記したように本実施形態において、不揮発性メモリ4に格納されているVDM42(データマップ)は、少なくとも第1階層(最下位の階層)及び第2階層(最下位の階層よりも上位の階層)を含む複数の階層から構成される階層構造を有し、当該第1階層に対応する複数の第1VDM断片テーブル及び第2階層に対応する第2VDM断片テーブルを含む。また、本実施形態において、複数の第1VDM断片テーブルの各々は、当該第1VDM断片テーブルに割り当てられている不揮発性メモリ4内のPBA(物理アドレス)の範囲に書き込まれている所定のサイズ(例えば、4KiB)のデータの各々の有効性を管理する。また、本実施形態において、第2VDM断片テーブルは、第1VDM断片テーブル毎に、当該第1VDM断片テーブルを示すVDMポインタ(当該第1VDM断片テーブルを参照するための参照先情報)を管理する。
【0272】
ここで、上記した本実施形態の比較例において説明したようにVDM42´が単一の階層に対応する複数のVDM断片テーブルT421´のみを含むように構成されている場合、当該複数のVDM断片テーブルT421´の各々を示すポインタ(当該VDM断片テーブルT421´が格納されているPBA)の全てをメモリ55に保持しておく必要がある。これに対して、本実施形態においては、上記した構成により、最上位の階層に対応するVDM断片テーブルを示すVDMポインタがメモリ55に保持されていればよいため、当該メモリ55上で一定の記憶領域を占有し続けるデータを削減する(VDM42の管理情報としては限りなく0に近づける)ことができ、不揮発性メモリ4に書き込まれているデータの有効性を効率的に管理することが可能となる。
【0273】
また、本実施形態においては、上記したようにメモリ55(例えば、DRAM)に格納されるデータ(VDM断片テーブルを示すVDMポインタ)を削減することにより、LUT41を優先的にメモリ55上に展開する(キャッシュメモリ551にキャッシュする)ことが可能となるため、ホスト2からのコマンドに対する応答時間(I/O応答時間)を短縮することができる。なお、ホスト2からの読み出しコマンドに対する処理が実行される場合には、VDM42を更新する必要がないため、よりI/O応答時間を短縮することができる。また、上記したTrimコマンドに対する処理が実行される際にはVDM42を更新する処理を遅延実行する構成としてもよいが、このような構成の場合には、LUT41及びVDM42に割り当てられる記憶領域(つまり、メモリ割合)を動的に変更するようにしてもよい。
【0274】
更に、本実施形態の比較例においては上記したようにメモリシステム3を起動及び終了する際の内部処理(起動処理及び終了処理)に時間がかかるが、本実施形態においては、起動処理時には最上位の階層に対応するVDM断片テーブルを示すVDMポインタをメモリ55に展開し、終了処理時には当該VDMポインタを不揮発化すればよいため、内部処理に要する時間を短縮することができる。
【0275】
また、本実施形態において、第2VDM断片テーブルは、第1VDM断片テーブルに割り当てられているPBAの範囲に書き込まれている所定のサイズのデータの各々の有効性が共通していない(つまり、当該PBAの範囲に書き込まれているデータとして有効なデータ及び無効なデータが混在している)場合、下位の階層に対応する第1VDM断片テーブルを示すVDMポインタを管理する。また、第2VDM断片テーブルは、第1VDM断片テーブルに割り当てられているPBAの範囲に書き込まれている所定のサイズのデータの各々の有効性が共通している(つまり、当該PBAの範囲に書き込まれている所定のサイズのデータの全てが有効であるまたは無効である)場合、当該データの有効性を一括して管理する。
【0276】
本実施形態においては、このような構成により、例えば連続する広い範囲のPBAに書き込まれているデータの有効性を更新する場合には、第2VDM断片テーブルに含まれるエントリ(マジックナンバー)を変更するのみでVDM42を更新することができるため、データの有効性を管理するための処理を簡略化することができる。具体的には、例えば数PiBのデータを格納することができるようなメモリシステム3(不揮発性メモリ4)の場合であれば、例えば最上位の階層に対応するVDM断片テーブルに含まれる1つのエントリに格納されるマジックナンバー(8ビット)を変更するのみで数G個のPBAの範囲を一括して操作(更新)することができる。
【0277】
すなわち、本実施形態においては、例えば第1VDM断片テーブルに含まれるビットマップを個別に更新するようなビット操作を抑制し、処理コストを削減することができる。
【0278】
更に、本実施形態においては、階層に応じてVDM断片テーブルに割り当てられるPBAの範囲(粒度)が異なるため、VDM42を柔軟に更新することが可能である。
【0279】
また、例えば第2VDM断片テーブルにおいて、第1VDM断片テーブルに割り当てられているPBAの範囲に書き込まれている所定のサイズのデータの各々の有効性を一括して管理する場合には、当該第1VDM断片テーブルを破棄し、当該第1VDM断片テーブルが格納されていた記憶領域を解放することができる。これによれば、本実施形態においては、VDM42を格納するために要する記憶領域を削減することが可能となる。
【0280】
更に、本実施形態において、第1階層に対応する第1VDM断片テーブル及び第2階層に対応する第2VDM断片テーブルは同一のデータ構造を有する。具体的には、第1VDM断片テーブルは、予め定められた数(例えば、32個)の各エントリにおいて複数の所定のサイズ(4KiB)のデータの有効性を管理する。また、第2VDM断片テーブルは、予め定められた数(例えば、32個)の各エントリにおいて第1VDM断片データの各々を示すVDMポインタを管理する。
【0281】
本実施形態においては、このような構成により、VDM42が有する階層構造がシンプルになり、当該VDM42(各VDM断片テーブル)を参照する際の計算コストを削減することができる。また、例えば対象PBAが割り当てられているVDM断片テーブルを参照するためには複数の階層を辿る必要があるが、このような場合の処理を階層によらず均一化することができる(つまり、同一のソフトウェアコードを用いることができる)ため、VDM42を効率的に参照することが可能となる。
【0282】
なお、本実施形態におけるVDM42は少なくとも第1及び第2階層を含む階層構造を有していればよいが、当該VDM42が有する階層構造を構成する階層の数は3以上であってもよい。なお、VDM42が有する階層構造を構成する階層の数は、例えば不揮発性メモリ4の記憶容量(PBAの数)等に基づいて、適宜、変更されてもよい。
【0283】
更に、本実施形態においては、VDM42と同様に、LUT41(アドレス変換テーブル)も階層構造を有するが、LUT41に含まれる複数のLUT断片テーブルの各々は、VDM42に含まれるVDM断片テーブルと同一のデータ構造を有する。
【0284】
このような構成によれば、LUT41を参照するために複数の階層を辿る場合においても、VDM42と同様のソフトウェアコードを用いることができるため、効率的な処理を実現することができる。また、例えばキャッシュメモリ551上で更新されたLUT41(LUT断片テーブル)及びVDM42(VDM断片テーブル)は不揮発性メモリ4に書き戻す(つまり、不揮発化する)必要があるが、当該LUT断片テーブル及びVDM断片テーブルは同一サイズとなるように構成されているため、当該LUT断片テーブル及びVDM断片テーブルを区別することなく一括して不揮発化することが可能である。これによれば、LUT断片テーブル及びVDM断片テーブルの不揮発性メモリ4への書き込み効率が向上し、不揮発化コストを低減することができる。
【0285】
なお、本実施形態においては、最下位の階層に対応するLUT断片テーブルのPBA管理数は当該階層に対応するVDM断片テーブルのPBA管理数よりも少ないため、VDM42が有する階層構造を構成する階層の数(第1数)はLUT41が有する階層構造を構成する階層の数(第2数)よりも少なくなる。
【0286】
また、本実施形態においては、上記した条件式(M=y×N^x)を満たすようにVDM断片テーブルのエントリの数N及び最下位の階層に対応するVDM断片テーブルの1つのエントリにおいて有効性が管理される所定のサイズのデータ(つまり、当該エントリにおいて管理されるPBA)の数Mを決定し、LUT断片テーブルとVDM断片テーブルとが同一のデータ構造となるように構成する。
【0287】
本実施形態においては、このような構成により、上位の階層に対応するLUT断片テーブルに含まれるエントリ(PBA)を変更するのみでLUT41を更新することができるとともに、ビットマップを変更する(ビット操作を行う)ことなくVDM断片テーブルに含まれるエントリ(マジックナンバー)を変更するのみでVDM42を更新することができる。このため、本実施形態においては、LUT41におけるLBA及びPBAの対応関係の効率的な管理と、VDM42におけるデータの有効性の効率的な管理とを両立することが可能となる。
【0288】
なお、LUT41及びVDM42におけるより効率的な管理を実現するためには、上記した
図14において説明したN=8、M=64のように条件式M=N^xを満たす(つまり、MがNの累乗である)ようなN及びMを採用してもよいし、
図8において説明したN=32、M=32及び
図13において説明したN=64、M=64のように条件式M=Nを満たす(つまり、MがNと等しくなる)ようなN及びMを採用してもよい。また、N及びM(の値)は、メモリシステム3の管理者等によって適宜設定または変更されるような構成としてもよい。
【0289】
ここで、例えばC言語におけるポインタサイズは演算ビット幅と同一である。この場合において、例えばMが演算ビット幅よりも小さいものとすると、断片テーブルのエントリにポインタ(キャッシュメモリ551内のアドレス情報)をそのまま格納することができない。これに対しては、ポインタを分割して格納する等が考えられるが、処理コストが高い。
【0290】
一方、Mが演算ビット幅よりも大きいものとすると、断片テーブルのエントリにポインタをそのまま格納することは可能であるが、未使用ビットが存在するため、効率的ではない(キャッシュが無駄に使われてしまう)。更に、この場合には、断片テーブルのサイズが大きくなるため、不揮発化コストが増加する。これに対しては、例えば断片テーブルを不揮発化する前に不要な部分を除外する処理等を実行することが考えられるが、処理コストが高い。
【0291】
そこで、本実施形態においては、例えばメモリシステム3における演算ビット幅(32ビットまたは64ビット)に対応する(例えば、一致する)ようにMを決定してもよい。このような構成によれば、演算ビット幅とサイズが同一であるポインタ(キャッシュメモリ551内のアドレス情報)を加工することなく断片テーブルのエントリに格納することができるため、LUT41及びVDM42を効率的に管理することができる。また、このような構成によれば、不要に断片テーブルのサイズを大きくする必要もない。
【0292】
なお、本実施形態においては、メモリシステム3に含まれるコントローラ5が不揮発性メモリ4(NAND型フラッシュメモリ)のデータ管理及びブロック管理を実行するように構成されたフラッシュトランスレーション層(FTL)として機能するものとして説明したが、当該FTLとしての機能はメモリシステム3と接続されるホスト2側が有していてもよい。このような構成の場合には、本実施形態において説明したLUT41及びVDM42はホスト2によって管理され、当該LUT41及びVDM42の更新処理等についてホスト2側で実行される。また、このような構成の場合にはLBAからPBAへのアドレス変換もホスト2側で実行される場合があり、この場合におけるホスト2からのコマンド(例えば、読み出しコマンド)にはPBAが含まれていてもよい。
【0293】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【0294】
1…情報処理システム、2…ホスト、3…メモリシステム、4…不揮発性メモリ、5…コントローラ、41…LUT(アドレス変換テーブル)、41a…PBA格納(エントリ)、41b…LBA格納部、41c…管理データ格納部、41d…前ポインタ格納部、41e…次ポインタ格納部、42…VDM(データマップ)、42a…マップ格納部、42b…PBA格納部、42c…管理データ格納部、42d…前ポインタ格納部、42e…次ポインタ格納部、42f…PBA格納部、51…通信インタフェース制御部、52…書き込みバッファメモリ、53…読み出しバッファメモリ、54…不揮発性メモリコントローラ、55…メモリ、56…プロセッサ、551…キャッシュメモリ、561…書き込み制御部、562…読み出し制御部、563…ガーベージコレクション制御部、564…アドレス変換部、565…管理部、566…キャッシュメモリ制御部。