(57)【要約】【課題】デフラグに起因するＷＡＦの増加を抑えることができる記憶装置を提供することである。【解決手段】実施形態によれば、記憶装置は、不揮発性メモリと、コントローラとを具備する。前記コントローラは、ホスト装置からのコマンドに基づき、前記不揮発性メモリに対するアクセスを実行する。前記コントローラは、第１コマンド処理と、第２コマンド処理とを実行するように構成される。前記第１コマンド処理は、第１コマンドで指定される論理アドレスと、前記不揮発性メモリの物理アドレス空間内の物理アドレスとを対応づける。前記第２コマンド処理は、第２コマンドで指定される、前記論理アドレス空間内の論理アドレスと、前記物理アドレス空間内の物理アドレスとの対応関係を解消する。【選択図】図１
2019045955.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
ホスト装置からのコマンドに基づき、前記不揮発性メモリに対するアクセスを実行するコントローラと、
を具備し、
前記コントローラは、
第１コマンドで指定される論理アドレスと、前記不揮発性メモリの物理アドレス空間内の物理アドレスとを対応づける第１コマンド処理を実行し、
第２コマンドで指定される、前記論理アドレス空間内の論理アドレスと、前記物理アドレス空間内の物理アドレスとの対応関係を解消する第２コマンド処理を実行する、
ように構成される記憶装置。
【請求項２】
前記第１コマンド処理は、前記論理アドレス空間内の第１論理アドレスと、前記物理アドレス空間内の第１物理アドレスとが対応づけられている状況下において、前記論理アドレス空間内の第２論理アドレスと、前記第１物理アドレスとの対応づけを要求する前記第１コマンドを受信した場合、前記第１論理アドレスと、前記第１物理アドレスとの対応関係を維持しつつ、前記第２論理アドレスと、前記第１物理アドレスとを対応づけ、
前記第２コマンド処理は、前記第１論理アドレスおよび前記第２論理アドレスと、前記第１物理アドレスとが各々対応づけられている状況下において、前記第１論理アドレスと、前記第１物理アドレスとの対応関係の解消を要求する前記第２コマンドを受信した場合、前記第２論理アドレスと、前記第１物理アドレスとの対応関係を維持しつつ、前記第１論理アドレスと、前記第１物理アドレスとの対応関係を解消する、
請求項１に記載の記憶装置。
【請求項３】
前記論理アドレス空間と、前記物理アドレス空間との対応関係を管理するルックアップテーブルを具備し、
前記第１コマンド処理および前記第２コマンド処理は、前記ルックアップテーブルを更新することにより、前記第２論理アドレスと、前記第１物理アドレスとを対応づけ、または、前記第１論理アドレスと、前記第１物理アドレスとの対応関係を解消する、
請求項２に記載の記憶装置。
【請求項４】
前記ホスト装置と前記記憶装置とは、ＮＶＭ Express（ＮＶＭｅ）（登録商標）規格に準拠したプロトコルにより通信し、
前記第１コマンド処理は、前記ＮＶＭｅ（登録商標）規格で規定される複数のVendor specificコマンドの中の１つを前記第１コマンドとして解釈する、
請求項１乃至３のいずれか１項に記載の記憶装置。
【請求項５】
前記第１コマンド処理は、前記ＮＶＭｅ（登録商標）規格で規定されるDeallocate (AD)の属性が付されたDataset Managementコマンドを前記第２コマンドとして解釈する請求項４に記載の記憶装置。
【請求項６】
不揮発性メモリを有する記憶装置と、前記記憶装置に接続されるホスト装置とにより実行されるデータの配置の最適化方法であって、
前記ホスト装置が、論理アドレス空間上の第１領域を確保することと、
前記ホスト装置が、前記論理アドレス空間上の第１領域と、前記論理アドレス空間上の第２領域と第３領域とに関連づけられているファイルのデータが格納されている前記不揮発性メモリの物理アドレス空間上の領域との対応づけを要求する第１コマンドを前記記憶装置に対して発行することと、
前記記憶装置が、前記第１コマンドに基づき、前記第１コマンドで指定される、前記論理アドレス空間上の前記第１領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域とを対応づけることと、
前記ホスト装置が、前記ファイルのデータが関連づけられている前記論理アドレス空間上の領域を、前記第２領域および前記第３領域から前記第１領域に切り替えることと、
前記ホスト装置が、前記論理アドレス空間上の前記第２領域および前記第３領域と、前記ファイルのデータが格納されている物理アドレス空間上の領域との対応関係の解消を要求する第２コマンドを前記記憶装置に対して発行することと、
前記記憶装置が、前記第２コマンドに基づき、前記第２コマンドで指定される、前記論理アドレス空間上の前記第２領域および前記第３領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域との対応関係を解消することと、
を具備するデータの配置の最適化方法。
【請求項７】
前記記憶装置による前記対応づけることは、前記論理アドレス空間上の前記第２領域および前記第３領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域との対応関係を維持しつつ、前記第１コマンドで指定される、前記論理アドレス空間上の第１領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域とを対応づけることを含み、
前記記憶装置による前記対応関係を解消することは、前記論理アドレス空間上の前記第１領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域との対応関係を維持しつつ、前記第２コマンドで指定される、前記論理アドレス空間上の前記第２領域および前記第３領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域との対応関係を解消することを含む、
請求項６に記載のデータの配置の最適化方法。
【請求項８】
前記記憶装置は、前記論理アドレス空間と、前記物理アドレス空間との対応関係を、ルックアップテーブルにより管理することを具備し、
前記記憶装置による前記対応づけることは、前記ルックアップテーブルを更新することにより、前記論理アドレス空間上の前記第１領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域とを対応づけることを含み、
前記記憶装置による前記対応関係を解消することは、前記ルックアップテーブルを更新することにより、前記論理アドレス空間上の前記第２領域および前記第３領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域との対応関係を解消することを含む、
請求項７に記載のデータの配置の最適化方法。
【請求項９】
前記ホスト装置と前記記憶装置とは、ＮＶＭ Express（ＮＶＭｅ）（登録商標）規格に準拠したプロトコルにより通信し、
前記第１コマンドは、前記ＮＶＭｅ（登録商標）規格で規定される複数のVendor specificコマンドの中の１つである、
請求項６乃至８のいずれか１項に記載のデータの配置の最適化方法。
【請求項１０】
前記第２コマンドは、前記ＮＶＭｅ（登録商標）規格で規定されるDeallocate (AD)の属性が付されたDataset Managementコマンドである請求項９に記載のデータの配置の最適化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置およびデータの配置の最適化方法に関する。
【背景技術】
【０００２】
近年、不揮発性半導体メモリを搭載する記憶装置が広く普及している。この種の記憶装置の１つとして、ＮＡＮＤ型フラッシュメモリを備えるＳＳＤ（Solid state drive）がよく知られている。ＳＳＤは、高性能・低電力消費という利点を有することから、ＨＤＤ（Hard disk drive）に代わって、ＰＣ（Personal computer）やサーバなどの様々な情報処理装置においてメインストレージとして利用され始めている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１６−５１５２３１号公報
【特許文献２】特許第５３５０３７１号公報
【特許文献３】米国特許出願公開第２０１４／０１８９２１１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＨＤＤの場合、ディスクの断片化（フラグメンテーション）が進むと、ディスクへのアクセス時にヘッドの移動が多く発生し、性能が低下する。そのため、適宜、データの配置の最適化（デフラグ）を行う必要がある。これに対して、ランダムアクセスが高速なＳＳＤの場合、物理アドレス空間上でのデータの断片化が性能低下を招くことはないので、本来、デフラグは不要である。とはいえ、論理アドレス空間上でのデータの断片化（空き領域の断片化ともいえる。）は、ホスト装置側の負荷を増加させることに繋がるので、論理アドレス空間上でのデータの断片化を解消するために、ＳＳＤの場合も、ＨＤＤと同様、一般的には、デフラグが行われている。なお、ＨＤＤと異なり、上書きを行うことができないＳＳＤにおいては、論理アドレス空間上で消去されているデータを任意のタイミングで物理アドレス空間上からも消去しておくことができるようにする機能が用意されている。
【０００５】
しかしながら、ＳＳＤの場合、デフラグを行うと、ＳＳＤ側において、本来は必要のない、物理アドレス空間上でのデータの移動が発生することになり、ＷＡＦ（Write amplification factor）を増加させてしまう。
本発明が解決しようとする課題は、デフラグに起因するＷＡＦの増加を抑えることができる記憶装置およびデータの配置の最適化方法を提供することである。
【課題を解決するための手段】
【０００６】
実施形態によれば、記憶装置は、不揮発性メモリと、コントローラとを具備する。前記コントローラは、ホスト装置からのコマンドに基づき、前記不揮発性メモリに対するアクセスを実行する。前記コントローラは、第１コマンド処理と、第２コマンド処理とを実行するように構成される。前記第１コマンド処理は、第１コマンドで指定される論理アドレスと、前記不揮発性メモリの物理アドレス空間内の物理アドレスとを対応づける。前記第２コマンド処理は、第２コマンドで指定される、前記論理アドレス空間内の論理アドレスと、前記物理アドレス空間内の物理アドレスとの対応関係を解消する。
【図面の簡単な説明】
【０００７】
【図１】実施形態の記憶装置の構成の一例を示す図。
【図２】デフラグ手法の一比較例を説明するための第１の図。
【図３】デフラグ手法の一比較例を説明するための第２の図。
【図４】デフラグ手法の一比較例を説明するための第３の図。
【図５】デフラグ手法の一比較例を説明するための第４の図。
【図６】デフラグ手法の一比較例を説明するための第５の図。
【図７】実施形態の記憶装置において適用されるデータの配置の最適化手法の一例を説明するための第１の図。
【図８】実施形態の記憶装置において適用されるデータの配置の最適化手法の一例を説明するための第２の図。
【図９】実施形態の記憶装置において適用されるデータの配置の最適化手法の一例を説明するための第３の図。
【図１０】実施形態の記憶装置において適用されるデータの配置の最適化手法の一例を説明するための第４の図。
【図１１】実施形態の記憶装置において適用されるデータの配置の最適化手法の一例を説明するための第３の図。
【図１２】ＮＶＭｅ（登録商標）コマンドのフォーマットを示す図。
【図１３】ＮＶＭｅ（登録商標）コマンドのOpcodeの一覧を示す図。
【図１４】ＮＶＭｅ（登録商標）コマンドがDataset Managementコマンドの場合のDword 11の形式を示す図。
【図１５】実施形態の記憶装置とホスト装置との協働によるデータの配置の最適化処理の流れを示す図。
【発明を実施するための形態】
【０００８】
以下、実施の形態について図面を参照して説明する。
図１は、本実施形態に係る記憶装置１の構成の一例を示す図である。ここでは、記憶装置１が、ホスト装置２のたとえばメインストレージとして利用されるＳＳＤとして実現されているものと想定する。なお、記憶装置１は、ＳＳＤに限らず、たとえばハイブリッドディスクドライブなど、他の様々な種類のストレージとして実現され得る。また、記憶装置１は、ホスト装置２に内蔵されるものであってもよいし、ホスト装置２に外部接続されるものであってもよい。
【０００９】
ホスト装置２は、ＰＣやサーバなどの情報処理装置である。記憶装置１とホスト装置２とは、たとえばＰＣＩ Express（ＰＣＩｅ）（登録商標）規格に準拠したインタフェースにより接続される。また、記憶装置１とホスト装置２とは、たとえばＮＶＭ Express（ＮＶＭｅ）(登録商標)規格に準拠したプロトコルにより通信する。ここでは、ホスト装置２から記憶装置１に対して、ＮＶＭｅ（登録商標）で定義されるコマンドが発行されることを想定する。なお、後述する、本実施形態のデータの配置の最適化手法は、ＰＣＩｅ（登録商標）やＮＶＭｅ（登録商標）に限らず、他の様々な種類のインタフェースやプロトコルによっても実現され得る。
情報処理装置であるホスト装置２は、様々なプログラムを実行する。ホスト装置２によって実行されるプログラムには、アプリケーションソフトウェアレイヤ２１、オペレーティングシステム（ＯＳ）２２、ファイルシステム２３が含まれる。オペレーティングシステム２２は、ホスト装置２全体を管理し、ホスト装置２内のハードウェアを制御し、アプリケーションソフトェアがホスト装置２内のハードウェアおよび記憶装置１を使用することを可能とするための制御を実行するように構成されたソフトウェアである。ファイルシステム２３は、ファイルの操作（作成、保存、更新、削除等）のための制御を行うために使用される。様々なアプリケーションソフトウェアがアプリケーションソフトウェアレイヤ２１上で走る。アプリケーションソフトウェアがWrite/Readコマンドのようなリクエストを記憶装置１に送出することが必要な時、アプリケーションソフトウェアレイヤ２１は、オペレーティングシステム２２にそのリクエストを送出する。オペレーティングシステム２２は、そのリクエストをファイルシステム２３に送出する。ファイルシステム２３は、そのリクエストを、コマンド（Write/Readコマンド等）にトランスレートする。ファイルシステム２３は、そのコマンドを記憶装置１に送出する。記憶装置１からのレスポンスが受信された際、ファイルシステム２３は、そのレスポンスをオペレーティングシステム２２に送出する。オペレーティングシステム２２は、そのレスポンスをアプリケーションソフトウェアレイヤ２１に送出する。
【００１０】
図１に示すように、記憶装置１は、コントローラ１１、揮発メモリ１２および不揮発メモリ１３を有する。なお、ここでは、記憶装置１が揮発メモリ１２を有することを想定するが、揮発メモリ１２を有しない構成も想定し得る。また、コントローラ１１は、制御部１１１、ホストインタフェース１１２、不揮発メモリインタフェース１１３およびＤＭＡコントローラ（ＤＭＡＣ）１１４を有する。さらに、制御部１１１は、ＣＰＵ１１１Ａを有する。
【００１１】
不揮発メモリ１３の所定の領域には、記憶装置１に様々な手順を実行させるためのプログラム５１が格納されている。不揮発メモリ１３の所定の領域に格納されるプログラム５１は、たとえば、記憶装置１の起動時などに、その一部または全部が揮発メモリ１２にロードされ、制御部１１１のＣＰＵ１１１Ａによって実行される。このプログラム５１の記述によって、様々な処理部を記憶装置１内に構築することができる。様々な処理部の中には、リンク接続処理部２０１およびリンク切断処理部２０２が含まれる。
【００１２】
また、不揮発メモリ１３には、ルックアップテーブル（ＬＵＴ）５２と、ユーザデータ５３とが格納される。ＬＵＴ５２は、ホスト装置２が認識する論理アドレス（ＬＢＡ）と不揮発メモリ１３上の物理記憶位置との対応関係、つまり、論理アドレス空間と物理アドレス空間との対応関係を管理するためのテーブルである。不揮発性メモリ１３の記憶領域は、所定のサイズ単位に管理され、当該所定のサイズの記憶領域それぞれのたとえば先頭の物理アドレスがＬＵＴ５２上で論理アドレスと対応づけられて管理される。ＬＵＴ５２は、その一部または全部が揮発メモリ１２にロードされて使用され、揮発メモリ１２上での更新内容は、所定のタイミングで、不揮発メモリ１３へ反映される。なお、ＬＵＴ５２で管理する、論理アドレス空間上の領域と物理アドレス空間上の領域との対応関係は、リンクなどとも称される。ユーザデータ５３は、ホスト装置２から受信したデータである。
【００１３】
不揮発メモリ１３は、たとえばＮＡＮＤフラッシュメモリである。ＮＡＮＤフラッシュメモリに限らず、たとえばＲｅＲＡＭ（Resistance RAM）など、他の様々な種類の不揮発性半導体メモリを適用し得る。また、揮発メモリ１２は、たとえばＤＲＡＭ（Dynamic RAM）である。
【００１４】
コントローラ１１は、ホスト装置２からのWrite/Readコマンドを受け付け、揮発メモリ１２をバッファとして使用しながら、ホスト装置２から転送されるデータ（ユーザデータ５３）の不揮発メモリ１３への書き込み、ホスト装置２から要求されたデータの不揮発メモリ１３からの読み出しを行う、たとえばＳｏＣ（System-on-a-chip）などの処理回路である。コントローラ１１の動作は、制御部１１１、より詳細には、プログラム５１を実行するＣＰＵ１１１Ａにより制御される。換言すれば、この制御部１１１の制御下で、ホストインタフェース１１２、不揮発メモリインタフェース１１３およびＤＭＡＣ１１４は動作する。
【００１５】
ホストインタフェース１１２は、ホスト装置２との間の通信を制御する。一方、不揮発メモリインタフェース１１３は、不揮発メモリ１３との間の通信を制御する。ＤＭＡＣ１１４は、ホストインタフェース１１２−不揮発メモリインタフェース１１３間のデータ転送を制御する。より詳細には、ＤＭＡＣ１１４は、ホストインタフェース１１２−揮発メモリ１２間のデータ転送、および、揮発メモリ１２−不揮発メモリインタフェース１１３間のデータ転送を制御する。
【００１６】
たとえば、ホスト装置２からReadコマンドが発行されると、ホストインタフェース１１２経由で当該Readコマンドが制御部１１１へ通知される。このReadコマンドには、読み出し対象データの先頭の論理アドレスと、そのデータ長とが含まれている。制御部１１１は、揮発メモリ１２上のＬＵＴ５２を参照して、当該先頭の論理アドレスを含む１以上の論理アドレスに各々対応づけられている物理アドレスを取得する。データ長が不揮発性メモリ１３の記憶領域の管理単位である前述した所定のサイズ以下の場合、１つの物理アドレスが取得され、所定のサイズを超える場合、２以上の物理アドレスが取得されることになる。そして、制御部１１１は、取得した物理アドレスに格納されているデータの読み出しを、不揮発メモリインタフェース１１３経由で不揮発メモリ１３に要求する。また、制御部１１１は、不揮発メモリ１３から読み出されるデータの不揮発メモリインタフェース１１３−ホストインタフェース１１２間の転送をＤＭＡＣ１１４に要求する。不揮発メモリ１３から読み出されたデータは、揮発メモリ１２がバッファとして使用されながら、不揮発メモリインタフェース１１３およびホストインタフェース１１２経由でホスト装置２へ返却される。
【００１７】
また、たとえば、ホスト装置２からWriteコマンドが発行されると、ホストインタフェース１１２経由で当該Writeコマンドが制御部１１１へ通知される。このWriteコマンドには、書き込みデータと、書き込み先の先頭の論理アドレスと、そのデータ長とが含まれている。書き込みデータは、制御部１１１の指示により、ＤＭＡＣ１１４の制御の下、揮発メモリ１２がバッファとして使用されながら、ホストインタフェース１１２から不揮発メモリインタフェース１１３へ転送される。制御部１１１は、データ（ホストインタフェース１１２から不揮発メモリインタフェース１１３へ転送される書き込みデータ）の書き込みを、不揮発メモリインタフェース１１３経由で不揮発メモリ１３に要求する。制御部１１１は、データが書き込まれた物理アドレスと論理アドレスとを対応づけるべくＬＵＴ５２を更新する。
【００１８】
ところで、ＮＡＮＤフラッシュメモリなどの不揮発性半導体メモリは、ランダムアクセスが高速であるため、ＨＤＤとは異なり、物理アドレス空間上でのデータの断片化が性能低下を招くことはない。一方、論理アドレス空間上でのデータの断片化（空き領域の断片化ともいえる。）は、たとえば、断片化が生じていない状況下であれば一括して発行可能なWrite/Readコマンドを、複数回に分けて発行せざるを得なくなるなど、ホスト装置２側の負荷を増加させることに繋がる。そのため、本実施形態の記憶装置１として想定している、たとえばＮＡＮＤフラッシュメモリを搭載するＳＳＤの場合も、論理アドレス空間上でのデータの断片化を解消するために、ＨＤＤと同様、デフラグが行われ得る。
【００１９】
ここで、本実施形態のデータの配置の最適化手法の理解を助けるために、一比較例として、図２乃至図６を参照して、まず、一般的なデフラグ手法について説明する。ここでは、デフラグ対象の記憶装置（本実施形態の記憶装置１に相当）がＳＳＤであって、論理アドレス空間上でのデータの断片化を解消するために、デフラグが行われる場合を想定する。
【００２０】
図２は、デフラグ前の状態を示している。
図２に示すように、いま、ファイル１（file 1）のデータ（DATA0-DATA3）が、論理アドレス空間上で断片化されているものと想定する（図２のａ１）。ここでは、論理アドレス空間上の連続した領域に関連づけられているべき１つのファイルのデータが、論理アドレス空間上の連続しない複数の領域に離散的に関連づけられている状態を、論理アドレス空間上での断片化と称するものとする。また、ここでは、ファイルシステムが、たとえばinodeなどと称されるデータ構造でファイルを管理しているものと想定する。論理アドレス空間と物理アドレス空間との対応関係は、ＬＵＴ（本実施形態のＬＵＴ５２に相当）によって管理されている（図２のａ２）。
【００２１】
このファイル１のデータの論理アドレス空間上での断片化を解消するためにデフラグを行う場合、ホスト装置（本実施形態のホスト装置２に相当）は、まず、コピー先の準備を行う。より詳細には、図３に示すように、ホスト装置は、ファイルシステム上の作業として、論理アドレス空間上の連続した空き領域を探してアロケートする（図３のｂ１）。たとえば、ファイル１と同サイズのデータを含む一時ファイル（temporary file）をファイルシステム上において作成することにより、論理アドレス空間上の連続した空き領域をアロケートする。
【００２２】
図４を参照する。次に、ホスト装置は、記憶装置に対して、ファイル１のデータ（DATA0-DATA3）を読み出すためのReadコマンドを発行する。記憶装置は、たとえばDATA0のReadコマンドを受けると、ＬＵＴを使って、このReadコマンドに含まれている論理アドレスを物理アドレスに変換し、その物理アドレスに格納されているDATA0を読み出す。その他のDATA1-DATA3も、各々、同様の手順で記憶装置から読み出される。また、ホスト装置は、記憶装置に対して、読み出したデータ（DATA0-DATA3）を一時ファイルのデータ（DATA4-DATA7）として書き込むためのWriteコマンドを発行する。このWriteコマンドは、DATA4-DATA7用に確保された論理アドレス空間上の連続している領域に、記憶装置から読み出したDATA0-DATA3を書き込むことを要求する。記憶装置は、このWriteコマンドを受けると、DATA4-DATA7の書き込みを行い、DATA4-DATA7用にアロケートされている論理アドレスと、DATA4-DATA7が書き込まれた物理アドレスとを対応づけるべく、ＬＵＴを更新する。このように、物理的なコピーが行われることにより（図４のｃ１）、先程アロケートした論理アドレス空間に、コピー先のDATA4-DATA7が格納される物理アドレス空間が対応づけられる。ここで、記憶装置において、物理アドレス空間上でのデータのコピー、より詳細には、データの読み出しおよび書き込みが発生している点に留意する。
【００２３】
次に、ホスト装置は、ファイル１のリンクを切り換える。より詳細には、図５に示すように、ホスト装置は、ファイルシステム上の作業として、inode番号の書き換え（図５のｄ１−１）と、元のinode情報の削除（図５のｄ１−２）と、一時ファイルの削除（図５のｄ１−３）とを行う。また、ホスト装置は、記憶装置に対して、コピー元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域と、コピー元のDATA0-DATA3が格納されている物理アドレス空間との対応関係を解除することを要求するDeallocateコマンドを発行する（図５のｄ２）。記憶装置は、Deallocateコマンドを受けると、そのDeallocateコマンドに含まれる論理アドレスと、その論理アドレスに対応づけられている物理アドレスとの対応関係を解消すべく、ＬＵＴを更新する。Deallocateコマンドは、Unmapコマンド、Trimコマンドなどとも称される。
【００２４】
図６は、デフラグ後の状態を示している。
図６に示すように、ファイル１のデータは、論理アドレス空間上での断片化が解消されている。たとえば、図２に示す状態の場合、ファイル１の読み出し時、ホスト装置からＳＳＤに対してReadコマンドが４回発行されていたものを、図６に示す状態の場合、Readコマンドを１回発行すればよいなど、デフラグによって、ホスト装置側の負荷を軽減することができる。論理アドレス空間上の空き領域が連続していれば、Writeコマンドについても同様のことがいえる。一方、前述したように、記憶装置においては、物理アドレス空間上でのデータのコピー、より詳細には、データの読み出しおよび書き込みが発生し、ＷＡＦを増加させる要因となってしまっている。
【００２５】
以上を踏まえて、続いて、図７乃至１１を参照して、本実施形態のデータの配置の最適化手法について説明する。このデータの配置の最適化手法のために、記憶装置１は、前述のリンク接続処理部２０１およびリンク切断処理部２０２を有する。
ここでも、図７に示すように、ファイル１（file 1）のデータ（DATA0-DATA3）が、論理アドレス空間上で断片化されているものと想定する（図７のａ１）。判り易くするために、図７に示す状態を、一比較例として示した図２の状態と同じとしている。また、論理アドレス空間と物理アドレス空間との対応関係は、ＬＵＴ５２によって管理されている（図７のａ２）。
【００２６】
本実施形態のデータの配置の最適化手法では、まず、ホスト装置２は、論理アドレス空間上での移動（以下、単に移動と称する）先の準備を行う。より詳細には、図８に示すように、ホスト装置２は、ファイルシステム上の作業として、論理アドレス空間上の連続した空き領域を探してアロケートする（図８のｂ１）。たとえば、ファイル１と同サイズのデータを含む一時ファイル（temporary file）をファイルシステム上において作成することにより、論理アドレス空間上の連続した空き領域をアロケートする。
【００２７】
次に、本実施形態のデータの配置の最適化手法では、ホスト装置２は、記憶装置１に対して、後述する、新設のコマンド（第１コマンド）を発行し、図９に示すように、移動先のDATA4-DATA7用にアロケートした論理アドレス空間上の領域と、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域とを対応づけることを要求する（図９のｅ１）。たとえば、このコマンドには、物理アドレス空間が対応づけられていない論理アドレス（論理アドレスＡ）と、物理アドレス（物理アドレスＰ）が対応づけられている論理アドレス（論理アドレスＢ）との２つの論理アドレスが指定される。たとえば、ホスト装置２は、（１）DATA4用にアロケートされている論理アドレスを論理アドレスＡ、DATA0用にアロケートされている論理アドレスを論理アドレスＢとして指定したコマンド、（２）DATA5用にアロケートされている論理アドレスを論理アドレスＡ、DATA1用にアロケートされている論理アドレスを論理アドレスＢとして指定したコマンド、（３）DATA6用にアロケートされている論理アドレスを論理アドレスＡ、DATA2用にアロケートされている論理アドレスを論理アドレスＢとして指定したコマンド、および、（４）DATA7用にアロケートされている論理アドレスを論理アドレスＡ、DATA3用にアロケートされている論理アドレスを論理アドレスＢとして指定したコマンドを発行する。また、これらのコマンドで処理対象となる物理アドレスＰは、（１）DATA0用にアロケートされている論理アドレスに対応づけられている物理アドレス、（２）DATA1用にアロケートされている論理アドレスに対応づけられている物理アドレス、（３）DATA2用にアロケートされている論理アドレスに対応づけられている物理アドレス、および、（４）DATA3用にアロケートされている論理アドレスに対応づけられている物理アドレスである。記憶装置１は、これらのコマンドを受けると、論理アドレスＡと、論理アドレスＢに対応づけられている物理アドレスＰとを対応づけるべく、より詳細には、移動先のDATA4-DATA7用にアロケートした論理アドレス空間上の領域(論理アドレスＡとして指定される領域)と、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域（論理アドレスＢとして指定される領域）に対応づけられている物理アドレス空間上の領域（物理アドレスＰの領域）とを対応づけるべく、ＬＵＴ５２を更新する。この時、記憶装置１は、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域（論理アドレスＢとして指定される領域）と、DATA0-DATA3が格納されている物理アドレス空間上の領域（物理アドレスＰの領域）との対応関係は維持する。つまり、DATA0-DATA3が格納されている物理アドレス空間上の領域（物理アドレスＰの領域）は、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域（論理アドレスＢとして指定される領域）と、移動先のDATA4-DATA7用にアロケートした論理アドレス空間上の領域（論理アドレスＡとして指定される領域）との両方に対応づけられた状態となる。リンク接続処理部２０１は、この新設のコマンドに対応する処理を実行する処理部である（第１コマンド処理）。
【００２８】
移動先のDATA4-DATA7用にアロケートした論理アドレス空間上の領域と、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域とを対応づけると、ホスト装置２は、ファイル１のリンクを切り換える。より詳細には、前述の一比較例と同様、図１０に示すように、ホスト装置２は、ファイルシステム上の作業として、inode番号の書き換え（図１０のｆ１−１）と、元のinode情報の削除（図１０のｆ１−２）と、一時ファイルの削除（図１０のｆ１−３）とを行う。また、ホスト装置２は、記憶装置１に対して、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域と、この論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域との対応関係を解除することを要求するDeallocateコマンド（第２コマンド）を発行する（図１０のｆ２）。たとえば、このDeallocateコマンドには、物理アドレスが対応づけられている１つの論理アドレスが指定される。たとえば、ホスト装置２は、（１）DATA0用にアロケートされている論理アドレスを指定したDeallocateコマンド、（２）DATA1用にアロケートされている論理アドレスを指定したDeallocateコマンド、（３）DATA2用にアロケートされている論理アドレスを指定したDeallocateコマンド、および、（４）DATA3用にアロケートされている論理アドレスを指定したDeallocateコマンドを発行する。記憶装置１は、Deallocateコマンドを受けると、そのDeallocateコマンドに含まれる論理アドレスと、その論理アドレスに対応づけられている物理アドレスとの対応関係を解消すべく、より詳細には、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域と、その論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域との対応関係を解除すべく、ＬＵＴ５２を更新する。この時、記憶装置１は、移動先のDATA4-DATA7用にアロケートした論理アドレス空間上の領域と、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域との対応関係は維持する。リンク切断処理部２０２は、このDeallocateコマンドに対応する処理を実行する処理部である（第２コマンド処理）。
【００２９】
図１１は、本実施形態のデータの配置の最適化手法によるデータの配置の最適化後の状態を示している。
図１１に示すように、ファイル１のデータは、論理アドレス空間上での断片化が解消されている。また、本実施形態のデータの配置の最適化手法では、記憶装置１においては、ＬＵＴ５２の更新のみで済むので、物理アドレス空間上でのデータのコピー、より詳細には、データの読み出しおよび書き込みが発生しないため（図１１のｇ１）、デフラグに起因するＷＡＦの増加を抑えることができる。
【００３０】
図１２は、ホスト装置２から記憶装置１に対して発行されるＮＶＭｅ（登録商標）コマンドのフォーマットを示す図である。
前述したように、ここでは、ホスト装置２から記憶装置１に対して、ＮＶＭｅ（登録商標）で定義されるコマンド、すなわち、ＮＶＭｅ（登録商標）コマンドが発行されることを想定している。図１２に示すように、ＮＶＭｅ（登録商標）コマンドは、６４Byte（１６Dword）で構成される。ＮＶＭｅ（登録商標）コマンドの先頭のDword（Dword 0）の下位８bitには、Opcodeと称される値を格納するフィールドが設けられている（図１２のｈ１）。図１３に、Opcodeの一覧を示す。
【００３１】
図１３に示すように、Opcodeの値として取り得る”00000000”〜“11111111”の中の”10000000”〜”11111111”の１２８個のコマンドが、Vendor specificコマンドとして定義されている（図１１のｉ１）。そこで、本実施形態のデータの配置の最適化手法では、この１２８個のVendor specificコマンドの中の１つを、前述した新規のコマンド（第１コマンド）として使用する。すなわち、コントローラ１１（リンク接続処理部２０１）は、１２８個のVendor specificコマンドの中の１つを、前述した新規のコマンド（第１コマンド）として解釈する。
【００３２】
また、Opcodeが”00001001”の場合、そのＮＶＭｅ（登録商標）コマンドは、Dataset Managementコマンドとして取り扱われることが定義されている（図１３のｉ２）。ＮＶＭｅ（登録商標）コマンドのDword 10-15の形式は、Opcodeによって指定されるコマンド依存であり、Dataset Managementコマンドの場合には、Dword 11（図１２のｈ２）の形式が、図１４に示すように定義されている。
【００３３】
図１４に示すように、Dword 11のbit2に”1”がセットされている場合、そのDataset Managementコマンドは、Deallocateコマンドとして取り扱われることが定義されている（図１４のｊ１）。本実施形態のデータの配置の最適化手法では、Dword 11のbit2に”1”をセットしたDataset Managementコマンドを、前述したDeallocateコマンド（第２コマンド）として使用する。すなわち、コントローラ１１（リンク切断処理部２０２）は、Dword 11のbit2に”1”がセットされたDataset Managementコマンドを、前述したDeallocateコマンド（第２コマンド）として解釈する。
【００３４】
なお、前述したように、本実施形態のデータの配置の最適化手法は、ＰＣＩｅ（登録商標）やＮＶＭｅ（登録商標）に限らず、他の様々な種類のインタフェースやプロトコルによっても実現され得る。つまり、ＮＶＭｅ（登録商標）のVendor specificコマンドやDataset Managementコマンドを使用することは、単なる一例として示したものであって、これに限定されるものではない。
【００３５】
図１５は、記憶装置１とホスト装置２との協働によるデータの配置の最適化処理の流れを示す図である。
まず、ホスト装置２は、データの配置の最適化対象のファイルの論理アドレス空間上での移動先の準備を行う。より詳細には、ホスト装置２は、ファイルシステム上の作業として、論理アドレス空間上の連続した空き領域を探してアロケートする（図１５のｋ１）。
【００３６】
ホスト装置２は、記憶装置１に対して、Vendor specificコマンドを発行し、移動先のデータ用にアロケートした論理アドレス空間上の領域と、移動元のデータ用にアロケートされている論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域とを対応づけることを要求する（図１５のｋ２）。たとえば、このVendor specificコマンドには、物理アドレス空間が対応づけられていない論理アドレス（論理アドレスＡ）と、物理アドレス（物理アドレスＰ）が対応づけられている論理アドレス（論理アドレスＢ）との２つの論理アドレスが指定される。Vendor specificコマンドを受けた記憶装置１は、論理アドレスＡと、論理アドレスＢに対応づけられている物理アドレスＰとを対応づけるべく、より詳細には、移動先のデータ用にアロケートした論理アドレス空間上の領域と、移動元のデータ用にアロケートされている論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域とを対応づけるべく、ＬＵＴ５２を更新する（図１５のｋ３）。
【００３７】
続いて、ホスト装置２は、データの配置の最適化対象のファイルのリンクを切り換える。より詳細には、ファイルシステム上の作業として、inode番号の書き換えなどを実行する（図１５のｋ４）。また、ホスト装置２は、記憶装置１に対して、DeallocateコマンドとしてDataset managementコマンドを発行し、移動元のデータ用にアロケートされている論理アドレス空間上の領域と、その論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域との対応関係を解除することを要求する（図１５のｋ５）。
【００３８】
DeallocateコマンドとしてのDataset managementコマンドを受けた記憶装置１は、そのDeallocateコマンドに含まれる論理アドレスと、その論理アドレスに対応づけられている物理アドレスとの対応関係を解消すべく、より詳細には、移動元のデータ用にアロケートされている論理アドレス空間上の領域と、その論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域との対応関係を解除すべく、ＬＵＴ５２を更新する（図１５のｋ６）。
【００３９】
このように、本実施形態のデータの配置の最適化手法においては、記憶装置１において、ＬＵＴ５２を更新するのみで、論理アドレス空間上での断片化を解消することができるので、デフラグに起因するＷＡＦの増加を抑えることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４０】
１…記憶装置、２…ホスト装置、１１…コントローラ、１２…揮発メモリ、１３…不揮発メモリ、５１…プログラム、５２…ルックアップテーブル、５３…ユーザデータ、１１１…制御部、１１１Ａ…ＣＰＵ、１１２…ホストインタフェース、１１３…不揮発メモリインタフェース、１１４…ＤＭＡコントローラ、２０１…リンク接続処理部、２０２…リンク切断処理部。
【図１】
2019045955.tif 000003
【図２】
2019045955.tif 000004
【図３】
2019045955.tif 000005
【図４】
2019045955.tif 000006
【図５】
2019045955.tif 000007
【図６】
2019045955.tif 000008
【図７】
2019045955.tif 000009
【図８】
2019045955.tif 000010
【図９】
2019045955.tif 000011
【図１０】
2019045955.tif 000012
【図１１】
2019045955.tif 000013
【図１２】
2019045955.tif 000014
【図１３】
2019045955.tif 000015
【図１４】
2019045955.tif 000016
【図１５】
2019045955.tif 000017