JP2019045955A - 記憶装置およびデータの配置の最適化方法 - Google Patents

記憶装置およびデータの配置の最適化方法 Download PDF

Info

Publication number
JP2019045955A
JP2019045955A JP2017165570A JP2017165570A JP2019045955A JP 2019045955 A JP2019045955 A JP 2019045955A JP 2017165570 A JP2017165570 A JP 2017165570A JP 2017165570 A JP2017165570 A JP 2017165570A JP 2019045955 A JP2019045955 A JP 2019045955A
Authority
JP
Japan
Prior art keywords
area
logical address
command
address space
storage device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017165570A
Other languages
English (en)
Inventor
藤田 隆史
Takashi Fujita
隆史 藤田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Toshiba Memory Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2017165570A priority Critical patent/JP2019045955A/ja
Priority to US16/002,277 priority patent/US20190065395A1/en
Publication of JP2019045955A publication Critical patent/JP2019045955A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

【課題】デフラグに起因するWAFの増加を抑えることができる記憶装置を提供することである。【解決手段】実施形態によれば、記憶装置は、不揮発性メモリと、コントローラとを具備する。前記コントローラは、ホスト装置からのコマンドに基づき、前記不揮発性メモリに対するアクセスを実行する。前記コントローラは、第1コマンド処理と、第2コマンド処理とを実行するように構成される。前記第1コマンド処理は、第1コマンドで指定される論理アドレスと、前記不揮発性メモリの物理アドレス空間内の物理アドレスとを対応づける。前記第2コマンド処理は、第2コマンドで指定される、前記論理アドレス空間内の論理アドレスと、前記物理アドレス空間内の物理アドレスとの対応関係を解消する。【選択図】図1

Description

本発明の実施形態は、記憶装置およびデータの配置の最適化方法に関する。
近年、不揮発性半導体メモリを搭載する記憶装置が広く普及している。この種の記憶装置の1つとして、NAND型フラッシュメモリを備えるSSD(Solid state drive)がよく知られている。SSDは、高性能・低電力消費という利点を有することから、HDD(Hard disk drive)に代わって、PC(Personal computer)やサーバなどの様々な情報処理装置においてメインストレージとして利用され始めている。
特表2016−515231号公報 特許第5350371号公報 米国特許出願公開第2014/0189211号明細書
HDDの場合、ディスクの断片化(フラグメンテーション)が進むと、ディスクへのアクセス時にヘッドの移動が多く発生し、性能が低下する。そのため、適宜、データの配置の最適化(デフラグ)を行う必要がある。これに対して、ランダムアクセスが高速なSSDの場合、物理アドレス空間上でのデータの断片化が性能低下を招くことはないので、本来、デフラグは不要である。とはいえ、論理アドレス空間上でのデータの断片化(空き領域の断片化ともいえる。)は、ホスト装置側の負荷を増加させることに繋がるので、論理アドレス空間上でのデータの断片化を解消するために、SSDの場合も、HDDと同様、一般的には、デフラグが行われている。なお、HDDと異なり、上書きを行うことができないSSDにおいては、論理アドレス空間上で消去されているデータを任意のタイミングで物理アドレス空間上からも消去しておくことができるようにする機能が用意されている。
しかしながら、SSDの場合、デフラグを行うと、SSD側において、本来は必要のない、物理アドレス空間上でのデータの移動が発生することになり、WAF(Write amplification factor)を増加させてしまう。
本発明が解決しようとする課題は、デフラグに起因するWAFの増加を抑えることができる記憶装置およびデータの配置の最適化方法を提供することである。
実施形態によれば、記憶装置は、不揮発性メモリと、コントローラとを具備する。前記コントローラは、ホスト装置からのコマンドに基づき、前記不揮発性メモリに対するアクセスを実行する。前記コントローラは、第1コマンド処理と、第2コマンド処理とを実行するように構成される。前記第1コマンド処理は、第1コマンドで指定される論理アドレスと、前記不揮発性メモリの物理アドレス空間内の物理アドレスとを対応づける。前記第2コマンド処理は、第2コマンドで指定される、前記論理アドレス空間内の論理アドレスと、前記物理アドレス空間内の物理アドレスとの対応関係を解消する。
実施形態の記憶装置の構成の一例を示す図。 デフラグ手法の一比較例を説明するための第1の図。 デフラグ手法の一比較例を説明するための第2の図。 デフラグ手法の一比較例を説明するための第3の図。 デフラグ手法の一比較例を説明するための第4の図。 デフラグ手法の一比較例を説明するための第5の図。 実施形態の記憶装置において適用されるデータの配置の最適化手法の一例を説明するための第1の図。 実施形態の記憶装置において適用されるデータの配置の最適化手法の一例を説明するための第2の図。 実施形態の記憶装置において適用されるデータの配置の最適化手法の一例を説明するための第3の図。 実施形態の記憶装置において適用されるデータの配置の最適化手法の一例を説明するための第4の図。 実施形態の記憶装置において適用されるデータの配置の最適化手法の一例を説明するための第3の図。 NVMe(登録商標)コマンドのフォーマットを示す図。 NVMe(登録商標)コマンドのOpcodeの一覧を示す図。 NVMe(登録商標)コマンドがDataset Managementコマンドの場合のDword 11の形式を示す図。 実施形態の記憶装置とホスト装置との協働によるデータの配置の最適化処理の流れを示す図。
以下、実施の形態について図面を参照して説明する。
図1は、本実施形態に係る記憶装置1の構成の一例を示す図である。ここでは、記憶装置1が、ホスト装置2のたとえばメインストレージとして利用されるSSDとして実現されているものと想定する。なお、記憶装置1は、SSDに限らず、たとえばハイブリッドディスクドライブなど、他の様々な種類のストレージとして実現され得る。また、記憶装置1は、ホスト装置2に内蔵されるものであってもよいし、ホスト装置2に外部接続されるものであってもよい。
ホスト装置2は、PCやサーバなどの情報処理装置である。記憶装置1とホスト装置2とは、たとえばPCI Express(PCIe)(登録商標)規格に準拠したインタフェースにより接続される。また、記憶装置1とホスト装置2とは、たとえばNVM Express(NVMe)(登録商標)規格に準拠したプロトコルにより通信する。ここでは、ホスト装置2から記憶装置1に対して、NVMe(登録商標)で定義されるコマンドが発行されることを想定する。なお、後述する、本実施形態のデータの配置の最適化手法は、PCIe(登録商標)やNVMe(登録商標)に限らず、他の様々な種類のインタフェースやプロトコルによっても実現され得る。
情報処理装置であるホスト装置2は、様々なプログラムを実行する。ホスト装置2によって実行されるプログラムには、アプリケーションソフトウェアレイヤ21、オペレーティングシステム(OS)22、ファイルシステム23が含まれる。オペレーティングシステム22は、ホスト装置2全体を管理し、ホスト装置2内のハードウェアを制御し、アプリケーションソフトェアがホスト装置2内のハードウェアおよび記憶装置1を使用することを可能とするための制御を実行するように構成されたソフトウェアである。ファイルシステム23は、ファイルの操作(作成、保存、更新、削除等)のための制御を行うために使用される。様々なアプリケーションソフトウェアがアプリケーションソフトウェアレイヤ21上で走る。アプリケーションソフトウェアがWrite/Readコマンドのようなリクエストを記憶装置1に送出することが必要な時、アプリケーションソフトウェアレイヤ21は、オペレーティングシステム22にそのリクエストを送出する。オペレーティングシステム22は、そのリクエストをファイルシステム23に送出する。ファイルシステム23は、そのリクエストを、コマンド(Write/Readコマンド等)にトランスレートする。ファイルシステム23は、そのコマンドを記憶装置1に送出する。記憶装置1からのレスポンスが受信された際、ファイルシステム23は、そのレスポンスをオペレーティングシステム22に送出する。オペレーティングシステム22は、そのレスポンスをアプリケーションソフトウェアレイヤ21に送出する。
図1に示すように、記憶装置1は、コントローラ11、揮発メモリ12および不揮発メモリ13を有する。なお、ここでは、記憶装置1が揮発メモリ12を有することを想定するが、揮発メモリ12を有しない構成も想定し得る。また、コントローラ11は、制御部111、ホストインタフェース112、不揮発メモリインタフェース113およびDMAコントローラ(DMAC)114を有する。さらに、制御部111は、CPU111Aを有する。
不揮発メモリ13の所定の領域には、記憶装置1に様々な手順を実行させるためのプログラム51が格納されている。不揮発メモリ13の所定の領域に格納されるプログラム51は、たとえば、記憶装置1の起動時などに、その一部または全部が揮発メモリ12にロードされ、制御部111のCPU111Aによって実行される。このプログラム51の記述によって、様々な処理部を記憶装置1内に構築することができる。様々な処理部の中には、リンク接続処理部201およびリンク切断処理部202が含まれる。
また、不揮発メモリ13には、ルックアップテーブル(LUT)52と、ユーザデータ53とが格納される。LUT52は、ホスト装置2が認識する論理アドレス(LBA)と不揮発メモリ13上の物理記憶位置との対応関係、つまり、論理アドレス空間と物理アドレス空間との対応関係を管理するためのテーブルである。不揮発性メモリ13の記憶領域は、所定のサイズ単位に管理され、当該所定のサイズの記憶領域それぞれのたとえば先頭の物理アドレスがLUT52上で論理アドレスと対応づけられて管理される。LUT52は、その一部または全部が揮発メモリ12にロードされて使用され、揮発メモリ12上での更新内容は、所定のタイミングで、不揮発メモリ13へ反映される。なお、LUT52で管理する、論理アドレス空間上の領域と物理アドレス空間上の領域との対応関係は、リンクなどとも称される。ユーザデータ53は、ホスト装置2から受信したデータである。
不揮発メモリ13は、たとえばNANDフラッシュメモリである。NANDフラッシュメモリに限らず、たとえばReRAM(Resistance RAM)など、他の様々な種類の不揮発性半導体メモリを適用し得る。また、揮発メモリ12は、たとえばDRAM(Dynamic RAM)である。
コントローラ11は、ホスト装置2からのWrite/Readコマンドを受け付け、揮発メモリ12をバッファとして使用しながら、ホスト装置2から転送されるデータ(ユーザデータ53)の不揮発メモリ13への書き込み、ホスト装置2から要求されたデータの不揮発メモリ13からの読み出しを行う、たとえばSoC(System-on-a-chip)などの処理回路である。コントローラ11の動作は、制御部111、より詳細には、プログラム51を実行するCPU111Aにより制御される。換言すれば、この制御部111の制御下で、ホストインタフェース112、不揮発メモリインタフェース113およびDMAC114は動作する。
ホストインタフェース112は、ホスト装置2との間の通信を制御する。一方、不揮発メモリインタフェース113は、不揮発メモリ13との間の通信を制御する。DMAC114は、ホストインタフェース112−不揮発メモリインタフェース113間のデータ転送を制御する。より詳細には、DMAC114は、ホストインタフェース112−揮発メモリ12間のデータ転送、および、揮発メモリ12−不揮発メモリインタフェース113間のデータ転送を制御する。
たとえば、ホスト装置2からReadコマンドが発行されると、ホストインタフェース112経由で当該Readコマンドが制御部111へ通知される。このReadコマンドには、読み出し対象データの先頭の論理アドレスと、そのデータ長とが含まれている。制御部111は、揮発メモリ12上のLUT52を参照して、当該先頭の論理アドレスを含む1以上の論理アドレスに各々対応づけられている物理アドレスを取得する。データ長が不揮発性メモリ13の記憶領域の管理単位である前述した所定のサイズ以下の場合、1つの物理アドレスが取得され、所定のサイズを超える場合、2以上の物理アドレスが取得されることになる。そして、制御部111は、取得した物理アドレスに格納されているデータの読み出しを、不揮発メモリインタフェース113経由で不揮発メモリ13に要求する。また、制御部111は、不揮発メモリ13から読み出されるデータの不揮発メモリインタフェース113−ホストインタフェース112間の転送をDMAC114に要求する。不揮発メモリ13から読み出されたデータは、揮発メモリ12がバッファとして使用されながら、不揮発メモリインタフェース113およびホストインタフェース112経由でホスト装置2へ返却される。
また、たとえば、ホスト装置2からWriteコマンドが発行されると、ホストインタフェース112経由で当該Writeコマンドが制御部111へ通知される。このWriteコマンドには、書き込みデータと、書き込み先の先頭の論理アドレスと、そのデータ長とが含まれている。書き込みデータは、制御部111の指示により、DMAC114の制御の下、揮発メモリ12がバッファとして使用されながら、ホストインタフェース112から不揮発メモリインタフェース113へ転送される。制御部111は、データ(ホストインタフェース112から不揮発メモリインタフェース113へ転送される書き込みデータ)の書き込みを、不揮発メモリインタフェース113経由で不揮発メモリ13に要求する。制御部111は、データが書き込まれた物理アドレスと論理アドレスとを対応づけるべくLUT52を更新する。
ところで、NANDフラッシュメモリなどの不揮発性半導体メモリは、ランダムアクセスが高速であるため、HDDとは異なり、物理アドレス空間上でのデータの断片化が性能低下を招くことはない。一方、論理アドレス空間上でのデータの断片化(空き領域の断片化ともいえる。)は、たとえば、断片化が生じていない状況下であれば一括して発行可能なWrite/Readコマンドを、複数回に分けて発行せざるを得なくなるなど、ホスト装置2側の負荷を増加させることに繋がる。そのため、本実施形態の記憶装置1として想定している、たとえばNANDフラッシュメモリを搭載するSSDの場合も、論理アドレス空間上でのデータの断片化を解消するために、HDDと同様、デフラグが行われ得る。
ここで、本実施形態のデータの配置の最適化手法の理解を助けるために、一比較例として、図2乃至図6を参照して、まず、一般的なデフラグ手法について説明する。ここでは、デフラグ対象の記憶装置(本実施形態の記憶装置1に相当)がSSDであって、論理アドレス空間上でのデータの断片化を解消するために、デフラグが行われる場合を想定する。
図2は、デフラグ前の状態を示している。
図2に示すように、いま、ファイル1(file 1)のデータ(DATA0-DATA3)が、論理アドレス空間上で断片化されているものと想定する(図2のa1)。ここでは、論理アドレス空間上の連続した領域に関連づけられているべき1つのファイルのデータが、論理アドレス空間上の連続しない複数の領域に離散的に関連づけられている状態を、論理アドレス空間上での断片化と称するものとする。また、ここでは、ファイルシステムが、たとえばinodeなどと称されるデータ構造でファイルを管理しているものと想定する。論理アドレス空間と物理アドレス空間との対応関係は、LUT(本実施形態のLUT52に相当)によって管理されている(図2のa2)。
このファイル1のデータの論理アドレス空間上での断片化を解消するためにデフラグを行う場合、ホスト装置(本実施形態のホスト装置2に相当)は、まず、コピー先の準備を行う。より詳細には、図3に示すように、ホスト装置は、ファイルシステム上の作業として、論理アドレス空間上の連続した空き領域を探してアロケートする(図3のb1)。たとえば、ファイル1と同サイズのデータを含む一時ファイル(temporary file)をファイルシステム上において作成することにより、論理アドレス空間上の連続した空き領域をアロケートする。
図4を参照する。次に、ホスト装置は、記憶装置に対して、ファイル1のデータ(DATA0-DATA3)を読み出すためのReadコマンドを発行する。記憶装置は、たとえばDATA0のReadコマンドを受けると、LUTを使って、このReadコマンドに含まれている論理アドレスを物理アドレスに変換し、その物理アドレスに格納されているDATA0を読み出す。その他のDATA1-DATA3も、各々、同様の手順で記憶装置から読み出される。また、ホスト装置は、記憶装置に対して、読み出したデータ(DATA0-DATA3)を一時ファイルのデータ(DATA4-DATA7)として書き込むためのWriteコマンドを発行する。このWriteコマンドは、DATA4-DATA7用に確保された論理アドレス空間上の連続している領域に、記憶装置から読み出したDATA0-DATA3を書き込むことを要求する。記憶装置は、このWriteコマンドを受けると、DATA4-DATA7の書き込みを行い、DATA4-DATA7用にアロケートされている論理アドレスと、DATA4-DATA7が書き込まれた物理アドレスとを対応づけるべく、LUTを更新する。このように、物理的なコピーが行われることにより(図4のc1)、先程アロケートした論理アドレス空間に、コピー先のDATA4-DATA7が格納される物理アドレス空間が対応づけられる。ここで、記憶装置において、物理アドレス空間上でのデータのコピー、より詳細には、データの読み出しおよび書き込みが発生している点に留意する。
次に、ホスト装置は、ファイル1のリンクを切り換える。より詳細には、図5に示すように、ホスト装置は、ファイルシステム上の作業として、inode番号の書き換え(図5のd1−1)と、元のinode情報の削除(図5のd1−2)と、一時ファイルの削除(図5のd1−3)とを行う。また、ホスト装置は、記憶装置に対して、コピー元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域と、コピー元のDATA0-DATA3が格納されている物理アドレス空間との対応関係を解除することを要求するDeallocateコマンドを発行する(図5のd2)。記憶装置は、Deallocateコマンドを受けると、そのDeallocateコマンドに含まれる論理アドレスと、その論理アドレスに対応づけられている物理アドレスとの対応関係を解消すべく、LUTを更新する。Deallocateコマンドは、Unmapコマンド、Trimコマンドなどとも称される。
図6は、デフラグ後の状態を示している。
図6に示すように、ファイル1のデータは、論理アドレス空間上での断片化が解消されている。たとえば、図2に示す状態の場合、ファイル1の読み出し時、ホスト装置からSSDに対してReadコマンドが4回発行されていたものを、図6に示す状態の場合、Readコマンドを1回発行すればよいなど、デフラグによって、ホスト装置側の負荷を軽減することができる。論理アドレス空間上の空き領域が連続していれば、Writeコマンドについても同様のことがいえる。一方、前述したように、記憶装置においては、物理アドレス空間上でのデータのコピー、より詳細には、データの読み出しおよび書き込みが発生し、WAFを増加させる要因となってしまっている。
以上を踏まえて、続いて、図7乃至11を参照して、本実施形態のデータの配置の最適化手法について説明する。このデータの配置の最適化手法のために、記憶装置1は、前述のリンク接続処理部201およびリンク切断処理部202を有する。
ここでも、図7に示すように、ファイル1(file 1)のデータ(DATA0-DATA3)が、論理アドレス空間上で断片化されているものと想定する(図7のa1)。判り易くするために、図7に示す状態を、一比較例として示した図2の状態と同じとしている。また、論理アドレス空間と物理アドレス空間との対応関係は、LUT52によって管理されている(図7のa2)。
本実施形態のデータの配置の最適化手法では、まず、ホスト装置2は、論理アドレス空間上での移動(以下、単に移動と称する)先の準備を行う。より詳細には、図8に示すように、ホスト装置2は、ファイルシステム上の作業として、論理アドレス空間上の連続した空き領域を探してアロケートする(図8のb1)。たとえば、ファイル1と同サイズのデータを含む一時ファイル(temporary file)をファイルシステム上において作成することにより、論理アドレス空間上の連続した空き領域をアロケートする。
次に、本実施形態のデータの配置の最適化手法では、ホスト装置2は、記憶装置1に対して、後述する、新設のコマンド(第1コマンド)を発行し、図9に示すように、移動先のDATA4-DATA7用にアロケートした論理アドレス空間上の領域と、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域とを対応づけることを要求する(図9のe1)。たとえば、このコマンドには、物理アドレス空間が対応づけられていない論理アドレス(論理アドレスA)と、物理アドレス(物理アドレスP)が対応づけられている論理アドレス(論理アドレスB)との2つの論理アドレスが指定される。たとえば、ホスト装置2は、(1)DATA4用にアロケートされている論理アドレスを論理アドレスA、DATA0用にアロケートされている論理アドレスを論理アドレスBとして指定したコマンド、(2)DATA5用にアロケートされている論理アドレスを論理アドレスA、DATA1用にアロケートされている論理アドレスを論理アドレスBとして指定したコマンド、(3)DATA6用にアロケートされている論理アドレスを論理アドレスA、DATA2用にアロケートされている論理アドレスを論理アドレスBとして指定したコマンド、および、(4)DATA7用にアロケートされている論理アドレスを論理アドレスA、DATA3用にアロケートされている論理アドレスを論理アドレスBとして指定したコマンドを発行する。また、これらのコマンドで処理対象となる物理アドレスPは、(1)DATA0用にアロケートされている論理アドレスに対応づけられている物理アドレス、(2)DATA1用にアロケートされている論理アドレスに対応づけられている物理アドレス、(3)DATA2用にアロケートされている論理アドレスに対応づけられている物理アドレス、および、(4)DATA3用にアロケートされている論理アドレスに対応づけられている物理アドレスである。記憶装置1は、これらのコマンドを受けると、論理アドレスAと、論理アドレスBに対応づけられている物理アドレスPとを対応づけるべく、より詳細には、移動先のDATA4-DATA7用にアロケートした論理アドレス空間上の領域(論理アドレスAとして指定される領域)と、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域(論理アドレスBとして指定される領域)に対応づけられている物理アドレス空間上の領域(物理アドレスPの領域)とを対応づけるべく、LUT52を更新する。この時、記憶装置1は、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域(論理アドレスBとして指定される領域)と、DATA0-DATA3が格納されている物理アドレス空間上の領域(物理アドレスPの領域)との対応関係は維持する。つまり、DATA0-DATA3が格納されている物理アドレス空間上の領域(物理アドレスPの領域)は、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域(論理アドレスBとして指定される領域)と、移動先のDATA4-DATA7用にアロケートした論理アドレス空間上の領域(論理アドレスAとして指定される領域)との両方に対応づけられた状態となる。リンク接続処理部201は、この新設のコマンドに対応する処理を実行する処理部である(第1コマンド処理)。
移動先のDATA4-DATA7用にアロケートした論理アドレス空間上の領域と、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域とを対応づけると、ホスト装置2は、ファイル1のリンクを切り換える。より詳細には、前述の一比較例と同様、図10に示すように、ホスト装置2は、ファイルシステム上の作業として、inode番号の書き換え(図10のf1−1)と、元のinode情報の削除(図10のf1−2)と、一時ファイルの削除(図10のf1−3)とを行う。また、ホスト装置2は、記憶装置1に対して、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域と、この論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域との対応関係を解除することを要求するDeallocateコマンド(第2コマンド)を発行する(図10のf2)。たとえば、このDeallocateコマンドには、物理アドレスが対応づけられている1つの論理アドレスが指定される。たとえば、ホスト装置2は、(1)DATA0用にアロケートされている論理アドレスを指定したDeallocateコマンド、(2)DATA1用にアロケートされている論理アドレスを指定したDeallocateコマンド、(3)DATA2用にアロケートされている論理アドレスを指定したDeallocateコマンド、および、(4)DATA3用にアロケートされている論理アドレスを指定したDeallocateコマンドを発行する。記憶装置1は、Deallocateコマンドを受けると、そのDeallocateコマンドに含まれる論理アドレスと、その論理アドレスに対応づけられている物理アドレスとの対応関係を解消すべく、より詳細には、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域と、その論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域との対応関係を解除すべく、LUT52を更新する。この時、記憶装置1は、移動先のDATA4-DATA7用にアロケートした論理アドレス空間上の領域と、移動元のDATA0-DATA3用にアロケートされている論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域との対応関係は維持する。リンク切断処理部202は、このDeallocateコマンドに対応する処理を実行する処理部である(第2コマンド処理)。
図11は、本実施形態のデータの配置の最適化手法によるデータの配置の最適化後の状態を示している。
図11に示すように、ファイル1のデータは、論理アドレス空間上での断片化が解消されている。また、本実施形態のデータの配置の最適化手法では、記憶装置1においては、LUT52の更新のみで済むので、物理アドレス空間上でのデータのコピー、より詳細には、データの読み出しおよび書き込みが発生しないため(図11のg1)、デフラグに起因するWAFの増加を抑えることができる。
図12は、ホスト装置2から記憶装置1に対して発行されるNVMe(登録商標)コマンドのフォーマットを示す図である。
前述したように、ここでは、ホスト装置2から記憶装置1に対して、NVMe(登録商標)で定義されるコマンド、すなわち、NVMe(登録商標)コマンドが発行されることを想定している。図12に示すように、NVMe(登録商標)コマンドは、64Byte(16Dword)で構成される。NVMe(登録商標)コマンドの先頭のDword(Dword 0)の下位8bitには、Opcodeと称される値を格納するフィールドが設けられている(図12のh1)。図13に、Opcodeの一覧を示す。
図13に示すように、Opcodeの値として取り得る”00000000”〜“11111111”の中の”10000000”〜”11111111”の128個のコマンドが、Vendor specificコマンドとして定義されている(図11のi1)。そこで、本実施形態のデータの配置の最適化手法では、この128個のVendor specificコマンドの中の1つを、前述した新規のコマンド(第1コマンド)として使用する。すなわち、コントローラ11(リンク接続処理部201)は、128個のVendor specificコマンドの中の1つを、前述した新規のコマンド(第1コマンド)として解釈する。
また、Opcodeが”00001001”の場合、そのNVMe(登録商標)コマンドは、Dataset Managementコマンドとして取り扱われることが定義されている(図13のi2)。NVMe(登録商標)コマンドのDword 10-15の形式は、Opcodeによって指定されるコマンド依存であり、Dataset Managementコマンドの場合には、Dword 11(図12のh2)の形式が、図14に示すように定義されている。
図14に示すように、Dword 11のbit2に”1”がセットされている場合、そのDataset Managementコマンドは、Deallocateコマンドとして取り扱われることが定義されている(図14のj1)。本実施形態のデータの配置の最適化手法では、Dword 11のbit2に”1”をセットしたDataset Managementコマンドを、前述したDeallocateコマンド(第2コマンド)として使用する。すなわち、コントローラ11(リンク切断処理部202)は、Dword 11のbit2に”1”がセットされたDataset Managementコマンドを、前述したDeallocateコマンド(第2コマンド)として解釈する。
なお、前述したように、本実施形態のデータの配置の最適化手法は、PCIe(登録商標)やNVMe(登録商標)に限らず、他の様々な種類のインタフェースやプロトコルによっても実現され得る。つまり、NVMe(登録商標)のVendor specificコマンドやDataset Managementコマンドを使用することは、単なる一例として示したものであって、これに限定されるものではない。
図15は、記憶装置1とホスト装置2との協働によるデータの配置の最適化処理の流れを示す図である。
まず、ホスト装置2は、データの配置の最適化対象のファイルの論理アドレス空間上での移動先の準備を行う。より詳細には、ホスト装置2は、ファイルシステム上の作業として、論理アドレス空間上の連続した空き領域を探してアロケートする(図15のk1)。
ホスト装置2は、記憶装置1に対して、Vendor specificコマンドを発行し、移動先のデータ用にアロケートした論理アドレス空間上の領域と、移動元のデータ用にアロケートされている論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域とを対応づけることを要求する(図15のk2)。たとえば、このVendor specificコマンドには、物理アドレス空間が対応づけられていない論理アドレス(論理アドレスA)と、物理アドレス(物理アドレスP)が対応づけられている論理アドレス(論理アドレスB)との2つの論理アドレスが指定される。Vendor specificコマンドを受けた記憶装置1は、論理アドレスAと、論理アドレスBに対応づけられている物理アドレスPとを対応づけるべく、より詳細には、移動先のデータ用にアロケートした論理アドレス空間上の領域と、移動元のデータ用にアロケートされている論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域とを対応づけるべく、LUT52を更新する(図15のk3)。
続いて、ホスト装置2は、データの配置の最適化対象のファイルのリンクを切り換える。より詳細には、ファイルシステム上の作業として、inode番号の書き換えなどを実行する(図15のk4)。また、ホスト装置2は、記憶装置1に対して、DeallocateコマンドとしてDataset managementコマンドを発行し、移動元のデータ用にアロケートされている論理アドレス空間上の領域と、その論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域との対応関係を解除することを要求する(図15のk5)。
DeallocateコマンドとしてのDataset managementコマンドを受けた記憶装置1は、そのDeallocateコマンドに含まれる論理アドレスと、その論理アドレスに対応づけられている物理アドレスとの対応関係を解消すべく、より詳細には、移動元のデータ用にアロケートされている論理アドレス空間上の領域と、その論理アドレス空間上の領域に対応づけられている物理アドレス空間上の領域との対応関係を解除すべく、LUT52を更新する(図15のk6)。
このように、本実施形態のデータの配置の最適化手法においては、記憶装置1において、LUT52を更新するのみで、論理アドレス空間上での断片化を解消することができるので、デフラグに起因するWAFの増加を抑えることができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…記憶装置、2…ホスト装置、11…コントローラ、12…揮発メモリ、13…不揮発メモリ、51…プログラム、52…ルックアップテーブル、53…ユーザデータ、111…制御部、111A…CPU、112…ホストインタフェース、113…不揮発メモリインタフェース、114…DMAコントローラ、201…リンク接続処理部、202…リンク切断処理部。

Claims (10)

  1. 不揮発性メモリと、
    ホスト装置からのコマンドに基づき、前記不揮発性メモリに対するアクセスを実行するコントローラと、
    を具備し、
    前記コントローラは、
    第1コマンドで指定される論理アドレスと、前記不揮発性メモリの物理アドレス空間内の物理アドレスとを対応づける第1コマンド処理を実行し、
    第2コマンドで指定される、前記論理アドレス空間内の論理アドレスと、前記物理アドレス空間内の物理アドレスとの対応関係を解消する第2コマンド処理を実行する、
    ように構成される記憶装置。
  2. 前記第1コマンド処理は、前記論理アドレス空間内の第1論理アドレスと、前記物理アドレス空間内の第1物理アドレスとが対応づけられている状況下において、前記論理アドレス空間内の第2論理アドレスと、前記第1物理アドレスとの対応づけを要求する前記第1コマンドを受信した場合、前記第1論理アドレスと、前記第1物理アドレスとの対応関係を維持しつつ、前記第2論理アドレスと、前記第1物理アドレスとを対応づけ、
    前記第2コマンド処理は、前記第1論理アドレスおよび前記第2論理アドレスと、前記第1物理アドレスとが各々対応づけられている状況下において、前記第1論理アドレスと、前記第1物理アドレスとの対応関係の解消を要求する前記第2コマンドを受信した場合、前記第2論理アドレスと、前記第1物理アドレスとの対応関係を維持しつつ、前記第1論理アドレスと、前記第1物理アドレスとの対応関係を解消する、
    請求項1に記載の記憶装置。
  3. 前記論理アドレス空間と、前記物理アドレス空間との対応関係を管理するルックアップテーブルを具備し、
    前記第1コマンド処理および前記第2コマンド処理は、前記ルックアップテーブルを更新することにより、前記第2論理アドレスと、前記第1物理アドレスとを対応づけ、または、前記第1論理アドレスと、前記第1物理アドレスとの対応関係を解消する、
    請求項2に記載の記憶装置。
  4. 前記ホスト装置と前記記憶装置とは、NVM Express(NVMe)(登録商標)規格に準拠したプロトコルにより通信し、
    前記第1コマンド処理は、前記NVMe(登録商標)規格で規定される複数のVendor specificコマンドの中の1つを前記第1コマンドとして解釈する、
    請求項1乃至3のいずれか1項に記載の記憶装置。
  5. 前記第1コマンド処理は、前記NVMe(登録商標)規格で規定されるDeallocate (AD)の属性が付されたDataset Managementコマンドを前記第2コマンドとして解釈する請求項4に記載の記憶装置。
  6. 不揮発性メモリを有する記憶装置と、前記記憶装置に接続されるホスト装置とにより実行されるデータの配置の最適化方法であって、
    前記ホスト装置が、論理アドレス空間上の第1領域を確保することと、
    前記ホスト装置が、前記論理アドレス空間上の第1領域と、前記論理アドレス空間上の第2領域と第3領域とに関連づけられているファイルのデータが格納されている前記不揮発性メモリの物理アドレス空間上の領域との対応づけを要求する第1コマンドを前記記憶装置に対して発行することと、
    前記記憶装置が、前記第1コマンドに基づき、前記第1コマンドで指定される、前記論理アドレス空間上の前記第1領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域とを対応づけることと、
    前記ホスト装置が、前記ファイルのデータが関連づけられている前記論理アドレス空間上の領域を、前記第2領域および前記第3領域から前記第1領域に切り替えることと、
    前記ホスト装置が、前記論理アドレス空間上の前記第2領域および前記第3領域と、前記ファイルのデータが格納されている物理アドレス空間上の領域との対応関係の解消を要求する第2コマンドを前記記憶装置に対して発行することと、
    前記記憶装置が、前記第2コマンドに基づき、前記第2コマンドで指定される、前記論理アドレス空間上の前記第2領域および前記第3領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域との対応関係を解消することと、
    を具備するデータの配置の最適化方法。
  7. 前記記憶装置による前記対応づけることは、前記論理アドレス空間上の前記第2領域および前記第3領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域との対応関係を維持しつつ、前記第1コマンドで指定される、前記論理アドレス空間上の第1領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域とを対応づけることを含み、
    前記記憶装置による前記対応関係を解消することは、前記論理アドレス空間上の前記第1領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域との対応関係を維持しつつ、前記第2コマンドで指定される、前記論理アドレス空間上の前記第2領域および前記第3領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域との対応関係を解消することを含む、
    請求項6に記載のデータの配置の最適化方法。
  8. 前記記憶装置は、前記論理アドレス空間と、前記物理アドレス空間との対応関係を、ルックアップテーブルにより管理することを具備し、
    前記記憶装置による前記対応づけることは、前記ルックアップテーブルを更新することにより、前記論理アドレス空間上の前記第1領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域とを対応づけることを含み、
    前記記憶装置による前記対応関係を解消することは、前記ルックアップテーブルを更新することにより、前記論理アドレス空間上の前記第2領域および前記第3領域と、前記ファイルのデータが格納されている前記物理アドレス空間上の領域との対応関係を解消することを含む、
    請求項7に記載のデータの配置の最適化方法。
  9. 前記ホスト装置と前記記憶装置とは、NVM Express(NVMe)(登録商標)規格に準拠したプロトコルにより通信し、
    前記第1コマンドは、前記NVMe(登録商標)規格で規定される複数のVendor specificコマンドの中の1つである、
    請求項6乃至8のいずれか1項に記載のデータの配置の最適化方法。
  10. 前記第2コマンドは、前記NVMe(登録商標)規格で規定されるDeallocate (AD)の属性が付されたDataset Managementコマンドである請求項9に記載のデータの配置の最適化方法。
JP2017165570A 2017-08-30 2017-08-30 記憶装置およびデータの配置の最適化方法 Pending JP2019045955A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017165570A JP2019045955A (ja) 2017-08-30 2017-08-30 記憶装置およびデータの配置の最適化方法
US16/002,277 US20190065395A1 (en) 2017-08-30 2018-06-07 Storage device and data arrangement method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017165570A JP2019045955A (ja) 2017-08-30 2017-08-30 記憶装置およびデータの配置の最適化方法

Publications (1)

Publication Number Publication Date
JP2019045955A true JP2019045955A (ja) 2019-03-22

Family

ID=65437355

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017165570A Pending JP2019045955A (ja) 2017-08-30 2017-08-30 記憶装置およびデータの配置の最適化方法

Country Status (2)

Country Link
US (1) US20190065395A1 (ja)
JP (1) JP2019045955A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10558393B2 (en) * 2017-10-20 2020-02-11 Qualcomm Incorporated Controller hardware automation for host-aware performance booster
KR20230098094A (ko) * 2021-12-21 2023-07-03 양쯔 메모리 테크놀로지스 씨오., 엘티디. 메모리 디바이스의 조각 모음을 위한 시스템 및 방법

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120102923A (ko) * 2011-03-09 2012-09-19 (주)인디링스 복사 명령 및 이동 명령을 지원하는 스토리지 시스템 및 상기 스토리지 시스템의 동작 방법
JP5405513B2 (ja) * 2011-03-22 2014-02-05 株式会社東芝 メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム
KR20140099737A (ko) * 2013-02-04 2014-08-13 삼성전자주식회사 존-기반 조각모음 방법 및 그것을 이용한 유저 장치
US10198452B2 (en) * 2014-05-30 2019-02-05 Apple Inc. Document tracking for safe save operations
US10372341B2 (en) * 2017-06-28 2019-08-06 Western Digital Technologies, Inc. Non-volatile storage device system with page based remapping

Also Published As

Publication number Publication date
US20190065395A1 (en) 2019-02-28

Similar Documents

Publication Publication Date Title
US11640353B2 (en) Memory system, data storage device, user device and data management method thereof
US11216214B2 (en) Memory system and operation method thereof
CN109240938B (zh) 存储系统以及控制非易失性存储器的控制方法
US9928167B2 (en) Information processing system and nonvolatile storage unit
KR100923990B1 (ko) 플래시 저장 장치의 특성을 기반으로 한 컴퓨팅 시스템
WO2017000658A1 (zh) 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法
JP2018073040A (ja) メモリシステム
WO2015162758A1 (ja) ストレージシステム
US10019398B2 (en) System with solid state drive and control method thereof
CN109074308B (zh) 适应性的块转换表(btt)
CN112988616A (zh) 使用枢纽表从存储器读取顺序数据
JP2014203405A (ja) 情報処理装置、メモリ制御装置、データ転送制御方法及びデータ転送制御プログラム
JP6171084B2 (ja) ストレージシステム
US9189409B2 (en) Reducing writes to solid state drive cache memories of storage controllers
CN110312986B (zh) 用于在固态设备上存储数据的流的机会性使用
JP2019045955A (ja) 記憶装置およびデータの配置の最適化方法
WO2017000821A1 (zh) 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法
JP6254986B2 (ja) 情報処理装置、アクセスコントローラ、および情報処理方法
JP6243884B2 (ja) 情報処理装置、プロセッサ、および情報処理方法
KR20210142863A (ko) 데이터 처리 시스템의 동작 효율성을 높이기 위한 장치 및 방법
US20230418740A1 (en) Systems And Methods With Variable Size Super Blocks In Zoned Namespace Devices
JP2018195185A (ja) 記憶装置および制御方法
WO2024060944A1 (zh) 键值存储方法及系统
JP2017167658A (ja) 記録装置
KR20230166803A (ko) 높은 퍼지 성능을 제공하는 스토리지 장치 및 그것의 메모리 블록 관리 방법

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180830