JPWO2017006675A1 - 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム - Google Patents

情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム Download PDF

Info

Publication number
JPWO2017006675A1
JPWO2017006675A1 JP2017527131A JP2017527131A JPWO2017006675A1 JP WO2017006675 A1 JPWO2017006675 A1 JP WO2017006675A1 JP 2017527131 A JP2017527131 A JP 2017527131A JP 2017527131 A JP2017527131 A JP 2017527131A JP WO2017006675 A1 JPWO2017006675 A1 JP WO2017006675A1
Authority
JP
Japan
Prior art keywords
data
storage medium
storage
processing
rearrangement
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.)
Granted
Application number
JP2017527131A
Other languages
English (en)
Other versions
JP6834955B2 (ja
Inventor
周吾 小川
周吾 小川
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Publication of JPWO2017006675A1 publication Critical patent/JPWO2017006675A1/ja
Application granted granted Critical
Publication of JP6834955B2 publication Critical patent/JP6834955B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/061Improving I/O performance
    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • G06F2206/00Indexing scheme related to dedicated interfaces for computers
    • G06F2206/10Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
    • G06F2206/1004Defragmentation
    • 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

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)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

記憶媒体のアクセス性能の向上および長寿命化を図ると共に、Write要求への応答が遅延し、引いてはWriteエラーとなることを防ぐ。記憶制御装置は、ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されていると判定された断片化データに対して、記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理を開始する再配置開始部と、データ再配置処理中にホストコンピュータからWrite要求を受け取ったときに、データ再配置処理が記憶媒体へのアクセスの性能を向上させるか否かを評価して、アクセスの性能を向上させる場合はデータ再配置処理の継続を指示し、向上させない場合はデータ再配置処理の中止または中断を指示する再配置制御部と、を備える。

Description

本発明は、情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラムに関する。
上記技術分野において、特許文献1には、SSD(Solid State Drive)において、NANDフラッシュメモリ(以下、NANDフラッッシュと称す)に対するデータの更新に伴うページの退避処理を避けるために、コントローラ内部のFTL(Flash Translation Layer)が、ページを単位として追記形式でデータを各ページに順番に格納する技術が開示されている。また、特許文献2には、データ・エクスメント数に基づいて断片化を推定して空き領域を付加する技術が開示されている。
また、非特許文献1には、SSDが継続的に追記形式でホストコンピュータからのWriteデータを格納するために、更新等によって不要となったデータが格納された記憶領域を回収する、GC(Garbage Collection)の負荷を増加させない技術が開示されている。非特許文献1では、ホストからのWriteコマンドに同じ性質を持つデータごとに同一のストリームIDと呼ばれる情報を付与し、SSDの内部でストリームIDに基づいて格納先のNANDフラッシュのブロックを選択する。そして、ブロック毎のデータの更新時期が近くなるようにWriteデータの格納を行い、GCの負荷を低減する方法が示されている。
米国特許5937425号 特表2014−517971号公報
Jeong-Uk Kang, Jeeseok Hyun, Hyunjoo Maeng, and Sangyeun Cho, "The Multi-streamed Solid-State Drive," 6th USENIX Workshop on Hot Topics in Storage and File Systems (HotStorage), 2014
しかしながら、上記文献に記載の技術では、断片化の個々の原因に対処することしかできない。すなわち、複数アプリケーションの実行状況や組み合わせが動的に変化する環境において、ホストコンピュータからのWrite要求や、再配置処理およびGCなどの内部処理を含むSSDのブロックに対するデータ格納のトータルな適正化による、記憶媒体のアクセス性能および長寿化は考慮されていない。
本発明の目的は、上述の課題を解決する技術を提供することにある。
上記目的を達成するため、本発明に係る記憶制御装置は、
ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されていると判定された断片化データに対して、前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理を開始する再配置開始手段と、
前記データ再配置処理の処理中に前記ホストコンピュータからWrite要求を受け取ったときに、前記データ再配置処理が前記記憶媒体へのアクセスの性能を向上させるか否かを評価して、前記アクセスの性能を向上させる場合は前記データ再配置処理の継続を指示し、前記アクセスの性能を向上させない場合は前記データ再配置処理の中止または中断を指示する再配置制御手段と、
を備える。
上記目的を達成するため、本発明に係る記憶制御方法は、
ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されていると判定された断片化データに対して、前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理を開始する再配置開始ステップと、
前記データ再配置処理の処理中に前記ホストコンピュータからWrite要求を受け取ったときに、前記データ再配置処理が前記記憶媒体へのアクセスの性能を向上させるか否かを評価して、前記アクセスの性能を向上させる場合は前記データ再配置処理の継続を指示し、前記アクセスの性能を向上させない場合は前記データ再配置処理の中止または中断を指示する再配置制御ステップと、
を含む。
上記目的を達成するため、本発明に係る記憶制御プログラムは、
ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されていると判定された断片化データに対して、前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理を開始する再配置開始ステップと、
前記データ再配置処理の処理中に前記ホストコンピュータからWrite要求を受け取ったときに、前記データ再配置処理が前記記憶媒体へのアクセスの性能を向上させるか否かを評価して、前記アクセスの性能を向上させる場合は前記データ再配置処理の継続を指示し、前記アクセスの性能を向上させない場合は前記データ再配置処理の中止または中断を指示する再配置制御ステップと、
をコンピュータに実行させる。
上記目的を達成するため、本発明に係る情報処理システムは、
ホストコンピュータと、
記憶媒体と、
前記ホストコンピュータによる前記記憶媒体へのアクセスを制御する記憶制御装置と、
を備え、
前記記憶制御装置は、
前記ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されていると判定された断片化データに対して、前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理を開始する再配置開始手段と、
前記データ再配置処理の処理中に前記ホストコンピュータからWrite要求を受け取ったときに、前記データ再配置処理が前記記憶媒体へのアクセスの性能を向上させるか否かを評価して、前記アクセスの性能を向上させる場合は前記データ再配置処理の継続を指示し、前記アクセスの性能を向上させない場合は前記データ再配置処理の中止または中断を指示する再配置制御手段と、
を有する。
本発明によれば、断片化を減少させる再配置処理中にホストコンピュータから新たなWrite要求があった場合に、再配置処理の維持、中止または中断を判定することで、記憶媒体のアクセス性能の向上および長寿命化を図ると共に、Write要求への応答が遅延し、引いてはWriteエラーとなることを防ぐことができる。
本発明の第1実施形態に係る記憶制御装置の構成を示すブロック図である。 本発明の第2実施形態に係る情報処理システムの構成を示す図である。 本発明の第2実施形態に係る記憶制御装置の機能構成を示すブロック図である。 本発明の第2実施形態に係る再配置開始部の機能構成を示すブロック図である。 本発明の第2実施形態に係る断片化状態管理テーブルの構成を示す図である。 本発明の第2実施形態に係る更新履歴管理テーブルの構成を示す図である。 本発明の第2実施形態に係る格納終了検出テーブルの構成を示す図である。 本発明の第2実施形態に係る断片化評価テーブルの構成を示す図である。 本発明の第2実施形態に係る再配置評価テーブルの構成を示す図である。 本発明の第2実施形態に係る記憶制御部を含むホストコンピュータのハードウェア構成を示すブロック図である。 本発明の第2実施形態に係る記憶制御部の処理手順を示すフローチャートである。 本発明の第2実施形態に係るRead処理の手順を示すフローチャートである。 本発明の第2実施形態に係るWrite処理の手順を示すフローチャートである。 本発明の第2実施形態に係るWrite処理の手順を示すフローチャートである。 本発明の第2実施形態に係る断片化制御処理の手順を示すフローチャートである。 本発明の第2実施形態に係る断片化制御処理の手順を示すフローチャートである。 本発明の第3実施形態に係る再配置制御部の機能構成を示すブロック図である。 本発明の第3実施形態に係る再配置評価テーブルの構成を示す図である。 本発明の第3実施形態に係る優先処理判定テーブルの構成を示す図である。 本発明の第3実施形態に係る記憶制御部を含むホストコンピュータのハードウェア構成を示すブロック図である。 本発明の第3実施形態に係る記憶制御部における再配置中のWrite要求に対する処理手順を示すフローチャートである。 本発明の第3実施形態に係る記憶制御部における再配置中のWrite要求に対する処理手順を示すフローチャートである。 本発明の第4実施形態に係る記憶制御装置の機能構成を示すブロック図である。 本発明の第5実施形態に係る情報処理システムの構成を示す図である。 本発明の第6実施形態に係る情報処理システムの構成を示す図である。
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素は単なる例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
[第1実施形態]
本発明の第1実施形態としての記憶制御装置100について、図1を用いて説明する。記憶制御装置100は、ホストコンピュータによる記憶媒体のアクセスを制御する装置である。
図1に示すように、記憶制御装置100は、再配置開始部101と、再配置制御部102と、を含む。再配置開始部101は、ホストコンピュータが記憶媒体110にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、記憶媒体110の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されていると判定された断片化データ111に対して、記憶媒体110の内部の連続した物理アドレス領域112に書き込まれるように再配置するデータ再配置処理を開始する。再配置制御部102は、データ再配置処理の処理中にホストコンピュータからWrite要求を受け取ったときに、データ再配置処理が記憶媒体110へのアクセスの性能を向上させるか否かを評価して、アクセスの性能を向上させる場合はデータ再配置処理の継続を指示し、アクセスの性能を向上させない場合はデータ再配置処理の中止または中断を指示する。
本実施形態によれば、データ再配置処理中にホストコンピュータからWrite要求を受け取ったときに、アクセスの性能を向上させるか否かによりデータ再配置処理の継続と中止または中断を判定することで、記憶媒体のアクセス性能の向上および長寿命化を図ると共に、Write要求への応答が遅延し、引いてはWriteエラーとなることを防ぐことができる。
[第2実施形態]
次に、本発明の第2実施形態に係る記憶制御装置を記憶制御部としてホストコンピュータ内に含む情報処理システムについて説明する。本実施形態に係る情報処理システムにおいては、記憶制御部が、ホストコンピュータのOS(Operating System)やアプリケーションプログラム(以下、アプリケーションと称す)の記憶媒体へのアクセス(ReadおよびWrite)における履歴情報から、一連のデータを書き込むWriteアクセスの終了を再配置処理とタイミングを選定して、記憶媒体における物理アドレス空間における記憶領域の断片化状態を推定する。そして、断片化状態があらかじめ定めた状態を超えている場合、断片化状態の領域をまとめて再配置することにより、断片化解消を実現する。
《前提技術の説明》
本実施形態の記憶制御方法を説明する前に、その前提となる記憶制御技術を説明する。
近年SSD等の記憶媒体で記憶素子として用いられるNANDフラッシュは、データの更新時に格納済の古いデータを消去(Erase)する必要がある。しかし、NANDフラッシュに対するEraseは、ReadおよびWriteの最小単位であるページを複数含んだ、ブロックを単位として行われる。そのため、NANDフラッシュのページに格納されたデータを消去、または更新する場合は、同一ブロックに含まれる他のページの退避が必要である。
多くのSSDでは、NANDフラッシュに対するデータの更新に伴うページの退避処理を避けるために、コントローラ内部のFTLが、ページを単位として追記形式でデータを格納する。具体的にはデータが格納されていないNANDフラッシュのブロックに対して、外部から書き込みを要求されたデータを書き込み先のアドレスによらず各ページに順番に格納する。各アドレスに対応するデータの更新は、元のデータが格納されていたページを更新せずに、データが格納されていないページに対して更新後のデータを格納する。このように追記形式を用いることで、データの更新が発生するごとにページの退避処理が発生することを回避する。ブロック内の全ページにデータが格納されると、FTLはデータが書き込まれていないブロックから、次にデータを格納するためのブロックを選択する。FTLは選択されたブロックに対して同様に外部から書き込まれたデータを例えば特許文献1のように、各ページに順番に格納する。
一方で、SSDが継続的に追記形式でホストからのWriteデータを格納するために、更新等によって不要となったデータが格納された記憶領域を回収するGC(ガベージコレクション)が必要である。SSDでは一般的なGCにおけるデータの移動に加えて、不要なデータが格納された記憶領域を再利用するために、ブロック単位の消去処理が必要である。よって、SSDにおけるGCでは、記憶領域をブロック単位で回収するために、回収対象となったブロックに含まれる有効なデータを持つページに対して退避処理が発生する。退避処理はNANDフラッシュのページに対するRead、および退避先のページに対するWriteによって実現される。つまり、GCの負荷は退避を行うページ数に比例して増加する。GCによる負荷の増加は、SSDにおけるアクセス処理の遅延、性能低下の原因の1つである。また、退避においてNANDフラッシュに対するデータの書き込みが発生する。NANDフラッシュ素子はErase回数の増加に従い、ビットエラーの発生率が増加して正常なデータの記憶が困難になる。よってNANDフラッシュ素子に対するWriteデータ量、即ちErase回数を増加させる有効なページの退避処理は、SSDの寿命消費につながる。
SSD内部のGCにおいて退避を行うページ数が増加する原因の1つとして、複数のデータを同時に格納することが挙げられる。例えば、SSDに対して異なるデータを保持する複数のファイルを同時に格納すると、各ファイルのデータは到着順にNANDフラッシュのブロックに格納されるため、データの断片化が発生する。各ファイルのデータがSSDに対して、ブロックよりも小さいサイズごとに書き込まれる場合、NANDフラッシュのブロックに複数ファイルのデータが混在した状態で格納される。同時に格納されたファイルがそれぞれ異なる時期に更新、削除されることで、ブロック内に有効なデータと無効なデータを格納したページが混在することになる。よって、GCにおいて更新、削除が行われていないファイルのデータについて退避が行われる。
さらに、一度断片化したデータはGCの際に移動先のブロックにおいて他の退避されたデータと混在して格納される。そのため、長期間更新、削除されずにSSDに格納され続けるデータが断片化した場合、退避先のブロックにおいて他のデータが更新、削除などによって無効化されることが起こりうる。これらのブロックが再びGCによって回収対象とされることで、同じデータに対する退避処理が繰り返し発生するため、長期間保存されるデータであるほど、SSDに対するデータ格納時の断片化による性能低下、寿命消費の影響は大きくなる。
複数データを同時に書き込んだ場合に発生するデータの断片化を回避するための方法として、非特許文献1ではホストからのWriteコマンドに同じ性質を持つデータごとに同一のストリームIDと呼ばれる情報を付与する。そして、SSDの内部でストリームIDに基づいて格納先のNANDフラッシュのブロックを選択する。このように、ブロック毎のデータの更新時期が近くなるようにWriteデータの格納を行い、GCの負荷を低減する方法が示されている。しかし、この方法はホストからSSDにアクセスを行うためのプロトコル改変を伴い、ホスト、SSD両方の対応が必要であることから、適用に多大なコストを要する。また、既存のハードウェア、ソフトウェアを用いて構築された環境に対する適用は困難である。
《実施形態の説明》
上記前提技術の課題を解決するため、第2実施形態乃至第5実施形態においては、SSDの内部で実行される、NANDフラッシュの記憶領域に対する内部処理の1つであるGCにおいて、回収対象のブロックから有効なデータを退避するための処理に伴う負荷を軽減し、SSDのアクセス性能の向上、長寿命化を図るための技術を提供する。
具体的には、SSDの提供するLBA(Logical Block Address)の空間、あるいは連続したWriteアクセス要求ごとにNANDフラッシュ内における格納状況を監視し、NANDフラッシュ内の多数のブロックに断片化した状態を解消する。一般にファイル等の一連の意味を持つデータは、連続したLBAによって表される記憶領域に格納される。また、単一ファイルに含まれるデータは、多くの場合に全体が更新、削除の対象となる。つまり、SSDに対するWriteデータのうち、ファイルのように連続または隣接したLBAによって表されるデータは格納から更新、または削除までの期間(以下、本明細書では期間を生存期間と記述する)が同じである場合が多いと考えられる。
SSD内部のNANDフラッシュに対するWriteデータの格納状況監視は、LBAの空間における一定の領域、あるいはファイルなどの一連の連続Writeアクセスごとに行う。SSDのNANDフラッシュの各ブロックに対してWriteデータが追記形式で格納される場合、連続したLBAに対するWriteデータはNANDフラッシュの同一ブロックのページに格納される。一方で、細かなサイズのWriteが断続的に行われる領域は、少量のWriteデータが断続的に到着することから各Writeデータが複数のブロックに断片化した状態で格納される。断片化したWriteデータが格納されたブロックは、他の領域、あるいは連続アクセスのデータが混在した状態で格納されているため、生存期間の異なるデータの混在によってGCの負荷を高めると考えられる。
そこで、本実施形態では、LBAの空間における一定の領域ごとに断片化の度合いを記録する。あるいはファイルなどの一連の連続領域ごとにWriteアクセスをまとめて並列に実行されるデータ格納を管理する。そして、断片化の度合いが一定以上に増加した領域、あるいは多量のデータと並列に格納された連続領域のデータ全体をまとめて再配置することで断片化を解消する。LBAの空間上の各領域、およびファイルなどの連続したデータを格納する領域に関する断片化の発生を、同じ領域に対するWrite要求の間に行われたSSD全体のWriteデータ量から推定して記録する。NANDフラッシュに追記形式でデータが格納される場合、ブロックがWriteデータで満たされると、以降のWriteデータは異なるブロックに格納される。つまり、LBAの空間上の各領域に対してWrite要求を行う際に、同じ領域に対する前回のWrite要求を行った後に、SSD上の他の領域に対して格納されたWriteデータの総容量を確認する。そして、総容量が一定以上である場合はWriteデータが新たなブロックに格納されたと判断してWrite要求を行った領域の断片化の度合いを増加する。また、複数のファイルを並列にWriteした場合、複数ファイルのデータがブロック内に混在して格納されるため、並列にWriteされるファイルが増加するほどSSD内部のNANDフラッシュにおける断片化が進行する。
このように、既存の多くのSSDに対して、複数データを同時に書き込んだ場合に発生するデータの断片化を解消する方法として、各データを1つずつ再配置する方法が挙げられる。外部からデータを再配置することで、NANDフラッシュのブロックに対してデータが断片化することなく格納される。再配置前のデータは、SSDに格納されたデータに対する通常の更新、削除と同様に無効化される。つまり、GCによるブロック回収に伴うデータ移動を防止することでNANDフラッシュに対するWrite量を削減し、性能低下、寿命消費を抑えることができる。
しかしながら、データの再配置によるSSDの性能向上、長寿命化の効果を最大化するためには、再配置による効果を考慮して適切なデータのみに対して適切な時期に再配置を行う必要がある。
例えば、再配置による性能向上、長寿命化の効果はSSDに格納されたデータによって異なる。データの再配置によって削減されるGCによるデータ移動量は、再配置を行うデータがSSDに格納された際の断片化状況、および各データがSSDに格納されてから更新、削除によって無効になるまでの期間に依存する。すなわち、各データがSSDに格納された際の断片化状況は、並行して格納されたデータのサイズ、頻度によって変化する。各データが格納されたNANDフラッシュのブロックにおいて、並行して格納されたデータ量の割合が増加するほど、並行して格納されたデータが更新、削除によって無効化される頻度が増加する。よって、データを格納していたページを回収するためにGCによってデータの移動が発生する確率が増加する。
ここで、各データがSSDに格納されてから更新、削除によって無効になるまでの期間は、各データがGCによるブロックの空き領域の回収に伴う移動対象となる回数に比例する。つまり、SSDに対する再配置は、更新頻度の高いデータを除外して行うことが望ましい。更新頻度の高いデータは、通常短期間で更新、削除されるため、SSDに断片化された状態で格納されていても、GCによるブロックの回収に伴うデータ移動の対象となる可能性が低い。そのため更新頻度の高いデータに対する再配置は、逆にSSDに対するWriteデータ量の増加につながる。
加えて、SSDに対するデータの再配置は、一連のデータの格納が全て終了してから実行する必要がある。データの格納が完了する前に再配置を実行した場合、再配置が行われたデータと、再配置の実行後に新たに格納されたデータに続く一連のデータとの間で断片化が発生する。再配置の前後における断片化の発生を防ぐには、一連のデータの格納完了を検出する必要がある。しかし、一連のデータに対する格納手順はアクセス方法に依存するため、アクセス方法ごとに異なる格納終了の検出方法が求められる。
本実施形態においては、複数の物理アドレス領域への断片化を減少するための再配置処理を開始する適切なタイミングを考慮するので、再配置処理が頻繁に発生せず、その結果、断片化を増大させたり通常のWrite処理を遅延させたりすることを抑える。すなわち、SSDに対して並列に格納されたことによって内部のNANDフラッシュ上に断片化された状態で格納されたデータの集合に対して、適切なデータの集合、および適切な時期を選択して再配置処理を行う。それにより、SSD内部のGC処理によって移動されるデータの集合の量を効果的に削減し、再配置によるSSDの性能向上、長寿命化の効果を高めることが可能である。
《情報処理システム》
図2は、本実施形態に係る情報処理システム200の構成を示す図である。
図2を参照すると、本実施形態の情報処理システム200は、1台以上のホストコンピュータ210と、記憶媒体240と、ホストコンピュータ210と記憶媒体240とを接続するネットワーク250を含む。
ホストコンピュータ210は、OS(Operating System)211およびOS211上で動作するソフトウェアであるアプリケーション212と、本実施形態の記憶制御部220と、を備える。記憶制御部220は、OS211およびアプリケーション212の処理における、記憶媒体240へのReadおよびWriteを含むアクセス処理を制御する。
記憶媒体240は、NANDフラッシュを記憶素子として用いたSSDなどの記憶媒体である。なお、記憶媒体240は、媒体本体241とキャッシュ242とを有してもよい。また、ネットワーク250の形態は特に限定されず、ホストコンピュータ210と記憶媒体240とが直接接続される形態であってもよい。また、ホストコンピュータ210はネットワーク250によって接続された複数の装置、あるいは、システムで構成されてもよい。
《記憶制御装置の機能構成》
図3Aは、本実施形態に係る記憶制御装置としての記憶制御部220の機能構成を示すブロック図である。
図3Aを参照すると、記憶制御部220は、アクセス実行部310と、再配置開始部320と、再配置制御部330と、を備える。
アクセス実行部310は、ホストコンピュータ210で動作するOS211またはアプリケーション212からのアクセス要求を受け取り、記憶媒体240に対して必要なアクセス処理を行う。また、アクセス実行部310は、記憶媒体240に対するWrite要求を保持するWriteキュー311を持ち、Write要求をWriteキュー311に一旦格納してから、記憶媒体240に対して発行する。なお、Writeキュー311において、Write要求は、ファーストイン・ファーストアウトあるいは優先順位に従って保持される。
再配置開始部320は、複数データを同時に書き込んだ場合に発生するデータの断片化の度合いを、一連のデータの格納終了時に評価する。そして、断片化を解消する再配置処理が記憶媒体へのアクセス性能を向上する場合に、再配置制御部330に対して再配置処理の開始を指示する。アクセス実行部310は、再配置制御部330による再配置制御にしたがって、記憶媒体240上の領域に対してデータを読み出して連続領域に書き込む、再配置処理を行う。
なお、本実施形態における再配置制御部330は、記憶媒体240上の領域に対するアクセス実行部310による再配置処理を制御する構成であれば、その構成は限定されない。また、記憶媒体240の領域に対するデータの読み出しは、記憶媒体240に対して直接要求を行う以外に、不図示の記憶媒体240に対するキャッシュメモリに対して要求を行うことでも代用できる。
(再配置開始部)
図3Bは、本実施形態に係る再配置開始部320の機能構成を示すブロック図である。
再配置開始部320は、格納監視部302と、断片化状態管理テーブル303と、タイミング選定部304と、更新履歴管理テーブル305と、断片化評価部306と、再配置指示部307と、を備える。
格納監視部302は、ホストコンピュータ210で動作するOS211またはアプリケーション212から記憶媒体240に対するWrite要求を監視して、断片化状態管理テーブル303における、Write要求が更新するデータに対応するエントリを特定する。格納監視部302は、断片化状態管理テーブル303に対応するエントリが存在しない場合、新規にエントリを登録する。また、格納監視部302は、特定または登録したエントリに対して、Write要求の完了後のデータサイズ、およびデータと混在して格納されている混在データのサイズを新たに計算して更新する。また、格納監視部302は、エントリに格納された混在データのサイズの計算に必要となる、最後にWriteを行った時点での記憶媒体240の総Write量の情報を更新する。加えて、格納監視部302は、更新履歴管理テーブル305において、断片化状態管理テーブル303と同様にWrite要求が更新するデータに対応するエントリを更新、もしくは新規に作成する。そして、格納監視部302は、更新履歴管理テーブル305のエントリに格納された最終更新時刻を更新する。
断片化状態管理テーブル303は、記憶媒体240に格納されたデータのうち、格納処理の途中の各データに対して、断片化状態に関する情報として、データサイズ、データと混在して格納されている混在データのサイズ、および最後にデータに対するWriteを行った時点での記憶媒体240の総Write量を記録する。また、断片化状態管理テーブル303は、記憶媒体240の現在の総Write量を記録する。
タイミング選定部304は、格納終了検出テーブル341を有し、再配置処理を実行するタイミングを選定する。すなわち、タイミング選定部304は、ホストコンピュータ210で動作するOS211またはアプリケーション212から記憶媒体240に対する各データの格納処理の終了を検出する。例えば、タイミング選定部304は、格納終了検出テーブル341を参照し、ホストコンピュータ210で動作するOS211またはアプリケーション212がデータをファイル単位で格納する場合はファイルのクローズ要求、オブジェクト単位で格納する場合はオブジェクトの格納終了を示すメッセージを検出する。あるいは、セッションの接続の終了や切断等の格納処理の終了時に行われる処理、操作、あるいは、メッセージを検出する。そして、格納が終了したデータに対応する更新履歴管理テーブル305のエントリについて、格納終了の状態に変更する。また、タイミング選定部304は、更新履歴管理テーブル305の各エントリに格納された、各データの最終更新時刻を参照して、一定の時間経過をしているデータを格納処理が終了したと判断して、格納終了の状態に変更する。
更新履歴管理テーブル305は、記憶媒体240に格納されたデータのうち、格納処理の途中の各データに対して、格納処理が終了しているかを表す情報、および最終更新時刻を記録する。
断片化評価部306は、格納が終了したデータについて、断片化状態管理テーブル303の情報を参照して再配置を行うべきか判定する。断片化評価部306は、断片化評価テーブル361を用いて、断片化状態管理テーブル303における、格納が終了したデータに対応するエントリからデータサイズおよび混在データサイズを参照して、断片化の度合を表す指標値を計算する。
再配置指示部307は、断片化評価部306により計算された指標値を用いて、断片化の度合が事前に定めた基準値を超える場合は再配置による断片化解消が必要と判定して、再配置制御部330を通じてデータの再配置処理を実施する。なお、再配置指示部307は、再配置評価テーブルを用いて、GCによるデータの移動量の削減期待値を再配置の効果として、再配置によって発生する記憶媒体240に対するWriteデータ量、即ちデータサイズと比較して、再配置の効果の方が大きい場合に再配置を実施してもよい。この場合、再配置指示部307は、再配置の効果をより正確に評価するために、断片化の度合を表す指標値の計算に用いた、データサイズおよび混在データサイズを用いて、データに対して再配置を実施した場合に削減される、GCによるデータの移動量の削減期待値を算出する。
なお、上記断片化評価部306および再配置指示部307は、断片化状態評価部として統合的に機能してもよい。
(断片化状態管理テーブル)
図4Aは、本実施形態に係る断片化状態管理テーブル303の構成を示す図である。断片化状態管理テーブル303は、記憶媒体240の現在の総Write量を管理する総Write量管理テーブル410と、格納処理の途中の各データに対してエントリを保持する格納エントリテーブル420と、を有する。
総Write量管理テーブル410は、記憶媒体240の現在の総Write量411を管理する。総Write量411は、記憶媒体240が複数存在する場合は、各記憶媒体240に対して個別に管理する。
格納エントリテーブル420は、各エントリに対応するデータを一意に表すデータ識別子421に対応付けて、データサイズ422と、最終格納時Write量423、および、混在データサイズ424を記憶する。最終格納時Write量423は、各データが最後にWriteされた時点の記憶媒体240の総Write量を表す。混在データサイズ424は、各データの格納開始時から最後にWriteを行うまでの間に混在して格納されている混在データの量を表す。
なお、断片化状態管理テーブル303に格納されるデータの形式は、図4Aに示した形式に限定されない。例えば、データ識別子421は、図4Aでは記憶媒体240に対してファイル単位でデータを格納する形態を想定してファイル名を使用しているが、データを一意に識別可能な番号等の他の識別子を用いてもよい。また、データをファイルではなく連続したブロックに対して格納する形態を想定する場合、データ識別子421は、例えば先頭のLBAによって示される。さらに、データサイズ422、最終格納時Write量423、混在データサイズ424、総Write量411は、図4AではKB(キロバイト)単位で表されているが、他の容量単位を用いてもよい。
(更新履歴管理テーブル)
図4Bは、本実施形態に係る更新履歴管理テーブル305の構成を示す図である。
更新履歴管理テーブル305は、格納処理の途中の各データに対してエントリを持つ。各エントリは、エントリに対応するデータを一意に表すデータ識別子431と、データの格納処理が終了したことを示す格納終了フラグ432と、データに対するWriteが最後に行われた時刻を示す最終更新時刻433とを記憶する。
なお、更新履歴管理テーブル305に格納されるデータの形式は、図4Bに示した形式に限定されない。例えば、データ識別子431は、図4Bでは記憶媒体240に対してファイル単位でデータを格納する形態を想定してファイル名を使用しているが、断片化状態管理テーブル303におけるデータ識別子421と同様に、データを一意に識別可能な他の識別子を用いてもよい。また、格納終了フラグ432は、図4Bでは各エントリに対応するデータの格納が終了した場合に1となるフラグの形式であるが、他の形式であってもよい。各データの格納が終了すると同時に更新履歴管理テーブル305のエントリを必ず削除する場合は、格納終了フラグ432を省略してもよい。
なお、図4Bの更新履歴管理テーブル305は、図4Aの断片化状態管理テーブル303と分割されているが、これらは単体のテーブルで構成されていてもよい。
(格納終了検出テーブル)
図4Cは、本実施形態に係る格納終了検出テーブル341の構成を示す図である。格納終了検出テーブル341は、タイミング選定部304において、断片化の度合いを評価して再配置を指示するタイミングを選定するために使用される。
格納終了検出テーブル341は、各エントリの一連のデータの格納終了を検出するための条件である、ファイルのクローズ要求441と、格納の終了指示442と、記憶媒体240とのアクセス終了443と、最終書き込みからの時間経過が閾値Thを超えた場合444と、を記憶する。なお、アクセス終了443としては、セッションの切断やコネクションの切断などを含む。
(断片化評価テーブル)
図4Dは、本実施形態に係る断片化評価テーブル361の構成を示す図である。断片化評価テーブル361は、断片化評価部306において、タイミング選定部304が選定したタイミングで断片化の度合いを評価するために使用される。
断片化評価テーブル361は、各エントリのデータ識別子451に対応付けて、格納終了フラグ452と、データサイズ(D)453と、混合データサイズ(M)454と、断片化の度合いを表わす指標値{α=M/(D+M)}455と、を記憶する。
(再配置評価テーブル)
図4Eは、本実施形態に係る再配置評価テーブル371の構成を示す図である。再配置評価テーブル371は、再配置指示部307において、タイミング選定部304が選定したタイミングで再配置を指示するか否かを判定するために使用される。
再配置評価テーブル371は、更新または削除までの経過時間と指標値αを考慮した、GCの回数の期待値N461と、再配置処理をしない場合の、GCによって移動する合計サイズの期待値(E0=D×N)462と、を記憶する。また、再配置評価テーブル371は、再配置処理をした場合の、GCによって移動する合計サイズの期待値(E)463と、再配置処理によるGCのアクセス削減量(B=E0−E)464と、を記憶する。また、再配置評価テーブル371は、再配置処理のWrite量(A)465と、Write量の比較(A−B)466と、を記憶する。そして、再配置評価テーブル371は、再配置処理の開始または中止の判定結果467である、再配置開始指示(A-B<0)または再配置中止指示(A-B≧0)を記憶する。
《ホストコンピュータのハードウェア構成》
図5は、本実施形態に係る記憶制御部220を含むホストコンピュータ210のハードウェア構成を示すブロック図である。なお、図5においては、記憶制御部220はホストコンピュータ210のソフトウェア処理として図示するが、記憶制御部220を、ホストコンピュータ210とは独立したワンチップのコンピュータで実現してもよい。
図5で、CPU(Central Processing Unit)510は演算制御用のプロセッサであり、プログラムを実行することで図3Aおよび図3Bの記憶制御部220の機能構成部を実現する。ROM(Read Only Memory)520は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部530は、ネットワーク250を介して記憶媒体240と通信する。なお、CPU510は1つに限定されず、複数のCPUであっても、あるいは画像処理用のGPU(Graphics Processing Unit)を含んでもよい。また、通信制御部530は、CPU510とは独立したCPUを有して、RAM(Random Access Memory)540の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、RAM540とストレージ550との間でデータを転送するDMAC(Direct Memory Access Controller)を設けるのが望ましい(図示なし)。さらに、入出力インタフェース560は、CPU510とは独立したCPUを有して、RAM540の領域に入出力データを書き込みあるいは読み出しするのが望ましい。したがって、CPU510は、RAM540にデータが受信あるいは転送されたことを認識してデータを処理する。また、CPU510は、処理結果をRAM540に準備し、後の送信あるいは転送は通信制御部530やDMAC、あるいは入出力インタフェース560に任せる。
RAM540は、CPU510が一時記憶のワークエリアとして使用するランダムアクセスメモリである。RAM540には、本実施形態の実現に必要なデータを記憶する領域が確保されている。論理アドレス541は、OS211またはアプリケーション212から記憶媒体240にアクセスしたアドレスである。物理アドレス542は、論理アドレス541から変換された記憶媒体240にアクセスするためのアドレスである。断片化評価テーブル361は、図4Dで示した断片化の度合いを評価するために使用されるテーブルである。再配置評価テーブル371は、図4Eで示した再配置を指示するか否かを判定するために使用されるテーブルである。読み出し情報545は、OS211またはアプリケーション212からの要求に基づき記憶媒体240からReadした情報である。書き込み情報546は、OS211またはアプリケーション212からの要求に基づき記憶媒体240にWriteする情報である。入出力データ547は、入出力インタフェース560を介して入出力されるデータである。送受信データ548は、通信制御部530を介して送受信されるデータである。アプリケーション使用領域549は、記憶制御以外の処理でアプリケーションが使用するエリアである。
ストレージ550には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。論理アドレス/物理アドレス変換テーブル551は、OS211またはアプリケーション212からアクセス要求した論理アドレス541を、記憶媒体240にアクセスする物理アドレス542に変換するテーブルであり、アドレス空間の対応に従って変化する。断片化状態管理テーブル303は、図4Aに図示した構成のテーブルである。更新履歴管理テーブル305は、図4Bに図示した構成のテーブルである。格納終了検出テーブル341は、図4Cで示した再配置を開始するタイミングを選定するために使用されるテーブルである。
ストレージ550には、以下のプログラムが格納される。OS211は、本ホストコンピュータ210の全体を制御する基礎プログラムである。アプリケーション212は、現在、本ホストコンピュータ210が実行中のプログラムである。記憶制御プログラム552は、OS211やアプリケーション212からの記憶媒体240へのアクセスを受けて、本実施形態のアクセス制御を実現するプログラムである。Read制御モジュール553は、記憶制御プログラム552における、記憶媒体240からのReadを制御するモジュールである。Write制御モジュール554は、記憶制御プログラム552における、記憶媒体へのWriteを制御するモジュールである。断片化処理モジュール555は、断片化状態を監視して、選定されたタイミングで断片化状態を解消するために物理アドレスにおける記憶領域の再配置を行なうモジュールである。断片化処理モジュール555には、タイミング選定モジュール、断片化評価モジュール、再配置指示モジュール、再配置制御モジュールなどが含まれる。
入出力インタフェース560は、入出力機器との入出力データをインタフェースする。入出力インタフェース560には、表示部561、操作部562、が接続される。また、入出力インタフェース560には、さらに、記憶媒体240が接続されてもよい。さらに、音声出力部であるスピーカや、音声入力部であるマイク、あるいは、GPS位置判定部が接続されてもよい。
なお、図5のRAM540やストレージ550には、ホストコンピュータ210が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
《記憶制御部の処理手順》
図6は、本実施形態に係る記憶制御部220の処理手順を示すフローチャートである。このフローチャートは、図5のCPU510がRAM540を使用して実行し、図3Aおよび図3Bの機能構成部を実現する。
ホストコンピュータ210の記憶制御部220は、ステップS611において、OS211またはアプリケーション212からのRead要求であるか否かを判定する。Read要求であれば、記憶制御部220は、ステップS613において、記憶媒体240からのRead処理を実行する。Read要求でなければ、記憶制御部220は、ステップS621において、OS211またはアプリケーション212からのWrite要求であるか否かを判定する。Write要求であれば、記憶制御部220は、ステップS623において、記憶媒体240へのWrite処理を実行する。Read要求でなくWrite要求でない場合、記憶制御部220は、ステップS631において、選定された断片化判定タイミングであるか否かを判定する。選定された断片化判定タイミングであれば、記憶制御部220は、ステップS633において、断片化制御処理を実行する。
(Read処理)
図7は、本実施形態に係るRead処理(S613)の手順を示すフローチャートである。図7は、図6のステップS613において、例えば、OSからRead要求を受け取り、要求されたデータを返す手順である。
記憶制御部220のアクセス実行部310は、ホストコンピュータ210で動作するソフトウェアやOSからのRead要求を受け取ると、記憶媒体240に対して要求先のアドレスについてデータのReadを行い、アクセス元のソフトウェアやOSに結果を返して処理を終了する(ステップS701)。
(Write処理)
図8Aおよび図8Bは、本実施形態に係るWrite処理(S623)の手順を示すフローチャートである。図8Aおよび図8Bは、例えば、図6のステップS623において、OSからWrite要求を受け取り、Writeキュー311に格納するまでの手順である。
記憶制御部220のアクセス実行部310は、ホストコンピュータ210で動作するソフトウェアやOSからのWrite要求を受け取ると、再配置開始部320の格納監視部302に対してWrite要求の情報を伝える(ステップS801)。
再配置開始部320の格納監視部302は、記憶媒体240に対してWrite要求が実行状態であることを、再配置制御部330に伝える(ステップS803)。格納監視部302は、断片化状態管理テーブル303のデータ識別子421を参照して、Write要求先と照合することで、アクセス実行部310が受け取ったWrite要求に対応するエントリを特定する(ステップS805)。Write要求に対応するエントリが存在しない場合(ステップS807のNO判定)、格納監視部302は断片化状態管理テーブル303に、アクセス実行部310が受け取ったWrite要求に対応するエントリを新規に作成する(ステップS809)。格納監視部302は、ステップS809において作成したエントリのデータサイズ422をWrite要求のサイズ、混在データサイズ424を“0”と初期化して、断片化状態管理テーブル303に記録する(ステップS811)。その後、ステップS817以降を実行する。
Write要求に対応するエントリが存在する場合(ステップS807のYES判定)、格納監視部302は、断片化状態管理テーブル303におけるWrite要求に対応するエントリのデータサイズ422を、Write要求のサイズを加えた値に更新する(ステップS813)。格納監視部302は、断片化状態管理テーブル303の最終格納時Write量423、および総Write量411を参照し、前回同一データに対するWriteが行われてから記憶媒体240に書き込まれた総データ量、すなわち混在データのサイズを計算する(ステップS815)。なお、格納監視部302は混在データのサイズから、データの断片化に関係しないデータの容量が存在する場合は、減算を行う。例えば、記憶媒体240が記憶素子にNANDフラッシュを用いたSSDである場合、SSDの内部でNANDフラッシュに対してEraseを行う記憶領域の単位のサイズから、混在データに含まれる、Erase単位の記憶領域数の期待値を求める。そして断片化状態管理テーブル303の混在データサイズ424を、混在データのサイズから、求められた期待値分のErase単位の容量を減算した値とする。
格納監視部302は、断片化状態管理テーブル303の総Write量411に、アクセス実行部310が受け取ったWrite要求のサイズを加算する。また、格納監視部302は、アクセス実行部310が受け取ったWrite要求に対応する断片化状態管理テーブル303のエントリについて、最終格納時Write量423を、現在の総Write量411の値に更新する(ステップS817)。
格納監視部302は、更新履歴管理テーブル305のデータ識別子431を参照して、Write要求先と照合することで、アクセス実行部310が受け取ったWrite要求に対応するエントリを特定する(ステップS819)。Write要求に対応するエントリが存在し新規作成が必要でない場合(ステップS821のNO判定)、ステップS825以降を実行する。Write要求に対応するエントリが存在せず新規作成が必要な場合(ステップS821のYES判定)、格納監視部302は更新履歴管理テーブル305に、アクセス実行部310が受け取ったWrite要求に対応するエントリを新規に作成する(ステップS823)。
格納監視部302は、ステップS823で作成したエントリの格納終了フラグ432を“0”、最終更新時刻433を現在時刻として更新履歴管理テーブル305に記録する(ステップS825)。アクセス実行部310は、ステップS801においてホストコンピュータ210で動作するソフトウェアやOSから受け取ったWrite要求を、記憶媒体240に対するWriteキュー311に格納して処理を終了する(ステップS827)。
以上のステップS801からS827までの処理を行い、ホストコンピュータ210で動作するソフトウェアやOSからWrite要求を受け取り、Writeキュー311に格納する動作が完了する。ステップS801からS827の処理における処理の順序は、必ずしも図8Aおよび図8Bに示した順序である必要はない。例えば、ステップS801からS817、ステップS819からS825、およびステップS827の3つの処理は、同時期、あるいは互いに実行順序を入れ替えてもよい。また、ステップS803の処理は、ステップS805からS817までの任意のステップの直後、もしくは同時に行ってもよい。
(断片化制御処理)
図9Aおよび図9Bは、本実施形態に係る断片化制御処理(S633)の手順を示すフローチャートである。本実施形態に係る断片化制御処理は、各データに対する格納処理の終了を検出し、再配置処理が必要であるか判定を行い、再配置制御部330が再配置処理を開始する手順である。
再配置開始部320のタイミング選定部304は、格納処理が終了したか否かを判定して、更新履歴管理テーブル305の対応するエントリに含まれる格納終了フラグ432を“1”にセットする(ステップS901)。例えば、タイミング選定部304は、格納終了検出テーブル341を参照し、アクセス実行部310においてホストコンピュータ210で動作するソフトウェアやOSによる格納処理の終了動作を受け取ったことを検出した場合に、格納処理が終了したと判定する。また、更新履歴管理テーブル305の各データに対応するエントリの最終更新時刻433を参照して、最後のWriteから事前に定めた一定時間が経過していた場合に、格納処理が終了したと判定する。
タイミング選定部304は、断片化評価部306に対してステップS901において格納終了を検出したデータの情報を伝えて、断片化評価部306の処理を開始させる(ステップS903)。断片化評価部306は、格納が終了したデータに対応する断片化状態管理テーブル303のエントリからデータサイズ422および混在データサイズ424を参照して、断片化の度合を表す指標値を計算する。断片化の度合を表す指標値は、例えば、参照したデータサイズ422をD、混在データサイズ424をMとして、混在データのサイズの割合M/(D+M)として求められる(ステップS905)。
再配置指示部307は、再配置評価テーブル371を使用して、断片化評価部306がステップS905で求めた断片化の度合を表す指標値から、データの再配置処理を実施した場合の効果を算出する(ステップS907)。再配置処理の効果は、データが再配置されたことによって、データが更新、または削除されるまでの間に、記憶媒体240の内部でGCによって移動されるデータの合計サイズに関する削減量として表される。再配置指示部307は、GCによって移動されるデータの合計サイズに関する期待値を、例えば1回あたりのGCで移動されるデータ量をデータサイズ422と仮定して、データサイズと、データが更新、削除されるまでの間にGCによって回収される回数の期待値との積によって計算する。なお、GCによって回収される回数の期待値は、データが更新、削除されるまでの時間と、ステップS905で求めた断片化の度合を表す指標値とが考慮されて、算出される。つまり、再配置指示部307は、再配置処理を行った場合の合計サイズの期待値をE、再配置処理を行わなかった場合の合計サイズの期待値をE0とした場合に、再配置処理による効果を合計サイズの期待値の差、つまり(E0−E)によって、データの再配置処理を実施した場合の効果を計算できる。また、再配置処理によってGCによるデータ移動量が“0”になると仮定して、再配置処理の効果をE0と計算できる。
再配置指示部307は、ステップS907において求めたデータの再配置処理の効果と、再配置処理によって発生する記憶媒体240に対するデータのWrite量とを比較する(ステップS909)。具体的には、記憶媒体240におけるGCに伴うデータ移動の削減量である(E0−E)と、データの再配置によって発生する記憶媒体240に対するWriteサイズDとの大小を比較する。
ステップS901において格納終了を検出したデータに関する再配置処理の効果が、再配置によって発生する記憶媒体240のWrite量以下である場合(ステップS911のNO判定)、再配置指示部307は、再配置処理の開始指示を行わずに終了する。
ステップS901において格納終了を検出したデータに関する再配置処理の効果が、再配置によって発生する記憶媒体240のWrite量を上回る場合(ステップS911のYES判定)、再配置指示部307は、再配置制御部330に対して格納終了を検出したデータの再配置処理を指示する(ステップS913)。再配置制御部330は、格納監視部302に問い合わせて記憶媒体240に対するWrite要求が停止状態となるまで待機する(ステップS915)。再配置制御部330は、アクセス実行部310に対してステップS901において格納終了を検出したデータを記憶媒体240から読み出すためのRead要求、および、再配置に必要なWrite要求の実行を指示する(ステップS917)。アクセス実行部310は、再配置制御部330から指示された再配置のためのWrite要求を、Writeキュー311を経由せずに、再配置制御部330から中断、もしくは、中止や一時停止の指示がない限り優先的に実行する。
アクセス実行部310がステップS917において指示されたRead要求、Write要求を全て完了すると、格納監視部302を通じて断片化状態管理テーブル303、および、更新履歴管理テーブル305における、再配置処理に対応するエントリを削除して、再配置処理を終了する(ステップS919)。
以上のステップS901からS919までの処理を行い、各データに対する格納処理の終了を検出し、再配置処理が必要であるか判定を行い、再配置制御部330が再配置処理を開始する動作が完了する。ステップS901からS919の処理における処理の順序は、必ずしも図9Aおよび図9Bに示した順序である必要はない。例えば、ステップS901の処理は、ステップS903以降の処理と並列に、または順番を入れ替えて実行してもよい。また、ステップS907およびS909において、データの断片化状態の評価を再配置処理によって削減される記憶媒体240内部のWriteデータ量の期待値によって行っているが、例えばステップS905で求められる各データの断片化の度合を表す指標値を用いて、事前に定めた断片化の基準値との比較を行ってもよい。加えて、ステップS917において、再配置制御部が指示する、再配置を行うデータに関する記憶媒体からのReadのみを、ステップS913の直後に行ってもよい。さらに、ステップS919における更新履歴管理テーブル305の削除は、ステップS903以降の任意の時期に行ってもよい。
本実施形態によれば、記憶媒体のアクセス性能の向上および長寿命化を図ると共に、複数の物理アドレス領域における断片化を減少するための再配置処理を開始する適切なタイミングが考慮して、再配置処理の頻繁な発生を抑えるので、断片化の増大や通常のWrite処理の遅延を抑えることができる。すなわち、SSDに対して並列に格納されたことによって内部のNANDフラッシュ上に断片化された状態で格納されたデータの集合に対して、適切なデータの集合および適切な時期を選択して再配置処理を行う。これにより、SSD内部のGC処理によって移動されるデータの集合の量を効果的に削減し、再配置によるSSDの性能向上、長寿命化の効果を高めることが可能である。
[第3実施形態]
次に、本発明の第3実施形態に係る記憶制御装置を記憶制御部としてホストコンピュータ内に含む情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第2実施形態と比べると、記憶制御装置が断片化解消の再配置処理中に、ホストコンピュータ210で動作するソフトウェアやOSによる新たなWrite要求を受けた場合に、再配置処理を中止または中断するか否かを判定する点で異なる。その他の構成および動作は、第2実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
SSDに対するデータの再配置は、再配置対象のデータ以外のWriteを途中に挟まずに、連続して行う必要がある。SSDに対するデータの再配置処理の間に、外部からのWriteデータが格納されると、外部からのWriteデータによって再配置処理を行っているデータが断片化されるため、再配置によるGCのデータ移動量の削減効果が低下する。しかし、再配置処理の間に行われる外部からのWrite要求を、再配置の効果の低下を防ぐために単純に停止した場合、性能の低下につながる。断片化を減少させる再配置処理中にホストコンピュータから新たなWrite要求があった場合に、Write要求への応答が遅延し、引いてはWriteエラーとなってしまう。よって、これらの問題が可能な限り発生しないように、SSD外部からのWrite要求と再配置処理が同時に行われることを避ける必要がある。
なお、本実施形態においては、Writeキュー311に格納されたWrite要求は、再配置制御部330からのWrite要求実行指示によって実行される。
《記憶制御装置の機能構成》
本実施形態に係る記憶制御装置としての記憶制御部1020の機能構成は、図3Aと同様である。しかしながら、本実施形態においては、再配置制御部330が再配置処理中に、ホストコンピュータ1210で動作するソフトウェアやOSによる新たなWrite要求を受けた場合に、再配置処理を中止または中断するか否かを判定する。なお、本実施形態において、再配置開始部320の構成は第2実施形態の構成に限定されず、所定の断片化条件で再配置の開始を指示する構成であればよい。
(再配置制御部)
図10は、本実施形態に係る再配置制御部330の機能構成を示すブロック図である。
再配置制御部330は、Writeキュー情報取得部1001と、再配置処理記憶部1002と、再配置完了予測部1003と、Write完了時刻予測部1004と、を有する。また、再配置制御部330は、再配置処理評価部1005と、優先処理判定部1006と、再配置処理制御部1007と、Write要求制御部1008と、を有する。
Writeキュー情報取得部1001は、アクセス実行部310からWriteキュー311の情報を取得する。再配置処理記憶部1002は、再配置開始部320から再配置処理の開始を指示されたデータの情報を記憶する。再配置完了予測部1003は、現在実行中の再配置処理の完了時間を予測する。Write完了時刻予測部1004は、現在実行中の再配置処理の完了時間と、Writeキュー311に保持されているWrite要求の処理予測時間と、から全Write要求の完了時刻を予測する。
再配置処理評価部1005は、再配置指示部307の再配置評価テーブル371と類似の再配置評価テーブル1051を有し、現在実行中の再配置処理の効果を評価する。優先処理判定部1006は、優先処理判定テーブル1061を有し、Write完了時刻予測部1004が予測したWriteキュー311の最後の処理時刻と、再配置処理評価部1005が評価した現在実行中の再配置処理の効果とを参照して、現在実行中の再配置処理を維持するか、中止または中断するかを判定する。
再配置処理制御部1007は、再配置処理記憶部1002に記憶されたデータの情報に基づいて再配置の開始をアクセス実行部310に指示し、再配置処理中の新たなWrite要求があった場合には、優先処理判定部1006の判定結果に従って再配置処理の維持か、中止または中断かをアクセス実行部310に指示する。Write要求制御部1008は、再配置処理中の新たなWrite要求があった場合に、優先処理判定部1006の判定結果に従ってWrite要求の再配置処理完了までの待機か、再配置処理の中止または中断後にWrite要求の実行をアクセス実行部310に指示する。
(他の機能構成例)
例えば、再配置制御部330は、図10に示すWrite要求待機制御部と、再配置処理部として機能するとも考えられる。この場合、Write要求待機制御部と再配置処理部との処理は以下のようになる。
再配置処理部は、再配置を指示されたデータについて、記憶媒体240から読み出すためのRead要求を行うようにアクセス実行部310に対して指示する。また、Read要求によって読み出されたデータを記憶媒体240に再配置するためのWrite要求の発行をアクセス実行部310に対して指示することで、再配置処理を実施する。記憶媒体240からのデータの読み出しは、記憶媒体240に対して直接Read要求を行う以外に、不図示の記憶媒体240に対するキャッシュメモリに対して要求を行うことでも代用できる。
また、Write要求待機制御部は、再配置処理部がデータに対する再配置処理を実行中に、ホストコンピュータ210で動作するソフトウェアやOSから記憶媒体240に対して行われるデータのWrite要求について、アクセス実行部310のWriteキュー311において待機させたWrite要求の実行を制御する。Write要求待機制御部は、再配置処理の予測される完了時刻から、待機中のWrite要求を再配置処理の直後に実行した場合の完了時刻を予測する。予測された完了時刻から算出される、Write要求の応答時間が事前に定められた基準値を上回ると、Write要求待機制御部は、待機中の記憶媒体240に対するWrite要求を、Writeキュー311で待機中のWrite要求の応答時間が事前に定められた基準値以内となるまで順番に実行する。また、Write要求待機制御部は、再配置処理が完了する前に待機中のWrite要求の実行を再開した場合、実行を再開したWrite要求を考慮して再配置処理の効果を再計算し、再配置処理の効果が事前に定めた基準を下回った場合は、再配置処理部を通じて実施中の再配置処理を中止する。
(再配置評価テーブル)
図11Aは、本実施形態に係る再配置評価テーブル1051の構成を示す図である。再配置評価テーブル1051は、再配置処理評価部1005が、現在実行中の再配置処理の効果を評価するために使用される。なお、図11Aにおいて、図4Eと同様の要素には同じ参照番号を付して、説明を省略する。
再配置評価テーブル1051は、Write要求の待機または実行、再配置処理の維持または中止を判定する第2条件1167である、“1”(A-B<0)または“0”(A-B≧0)を記憶する。
(優先処理判定テーブル)
図11Bは、本実施形態に係る優先処理判定テーブル1061の構成を示す図である。優先処理判定テーブル1061は、優先処理判定部1006が、Writeキュー311の最後の予測処理時刻と、現在実行中の再配置処理の効果とを参照して、現在実行中の再配置処理を維持するか、中止または中断するかを判定するために使用される。なお、優先処理判定テーブル1061には、Writeキュー311の最後の予測処理時刻の算出も示されている。
優先処理判定テーブル1061は、ホストコンピュータ210で動作するソフトウェアやOSからWrite要求の応答遅延に基づく第1条件を導出する第1条件テーブル1170と、現在実行中の再配置処理を維持するか、中止または中断するかを判定する判定テーブル1180と、を含む。
第1条件テーブル1170は、現在実行中の再配置の完了予測時間(T1)1171と、Writeキュー311の全Write要求の書き込み時間(T2)1172と、Writeキュー311最後の書き込みが完了する予測完了時刻(T1+T2)1173と、を記憶する。また、第1条件テーブル1170は、Writeキュー311最後のWrite要求時刻と書き込みが完了する時刻との差である、予測遅延時間1174と、応答遅延閾値TA1175と、を記憶する。そして、第1条件テーブル1170は、優先処理判定のための第1条件1176である、“1”(TA>予測遅延時間)または“0”(TA≦予測遅延時間)を記憶する。
判定テーブル1180は、優先処理判定のための第1条件1176と、優先処理判定のための第2条件1167と、第1条件1176と第2条件1167とに基づく優先処理判定結果1188と、を記憶する。優先処理判定結果1188には、Write要求の待機または実行、再配置処理の維持または中止の判定結果を記憶する。
《ホストコンピュータのハードウェア構成》
図12は、本実施形態に係る記憶制御部1020を含むホストコンピュータ1210のハードウェア構成を示すブロック図である。なお、図12において、図5と同様の構成要素には同じ参照番号を付して、説明は省略する。図12においては、第2実施形態において使用されるテーブルやモジュールは、表示を簡略化ないしは省略している。
RAM1240には、再配置開始用テーブル1243と、再配置評価テーブル1051と、が記憶される。ストレージ1250には、再配置開始用テーブル1251と、優先処理判定テーブル1061と、が記憶される。
また、ストレージ1250には、本実施形態の断片化処理モジュール1255が記憶される。断片化処理モジュール1255には、再配置開始モジュール、予測応答時間評価モジュール、再配置処理評価モジュール、および、優先処理判定モジュール、が含まれる。
(再配置中のWrite要求処理)
図13Aおよび図13Bは、本実施形態に係る記憶制御部1020における再配置中のWrite要求に対する処理手順を示すフローチャートである。このフローチャートは、図12のCPU510がRAM1240を使用して実行し、図10の機能構成部を実現する。
再配置制御部330のWrite要求待機制御部に含まれるWriteキュー情報取得部1001は、アクセス実行部310のWriteキュー311にWrite要求が格納されていない場合は、Write要求が格納されるまで待機する(ステップS1301)。再配置制御部330の再配置処理部に含まれる再配置処理記憶部1002において、再配置制御部330が再配置処理を実行中であるか確認する(ステップS1303)。再配置制御部330が再配置処理を実行中でない場合(ステップS1305のNO判定)、ステップS1323以降の処理を実行する。
再配置制御部330が再配置処理を実行中である場合(ステップS1305のYES判定)、Write完了時刻予測部1004は、再配置完了予測部1003から再配置処理の完了予測時刻(T1)を受け取る(ステップS1307)。Write完了時刻予測部1004は、アクセス実行部310のWriteキュー311に待機しているWrite要求について、アクセスサイズの情報を参照して、全てのWrite要求を、再配置制御部330において実行中の再配置処理が完了した直後に実行した場合の完了予測時刻(T1+T2)を計算する(ステップS1309)。
優先処理判定部1006は、ステップS1309で計算した完了予測時刻(T1+T2)と、Writeキュー311で待機する最後尾のWrite要求が要求された時刻から、最後尾のWrite要求に関する予想応答時間を計算する(ステップS1311)。優先処理判定部1006は、最後尾のWrite要求の予想応答時間が、事前に定めた基準時間(TA)未満である場合(ステップS1313のYES判定)、新規Write要求の到着、もしくは再配置制御部330において実行中の再配置処理の完了まで待機した後(ステップS1315)、ステップS1303以降の処理を実行する。
最後尾のWrite要求の予想応答時間が、事前に定めた基準時間(TA)以上である場合(ステップS1313のNO判定)、再配置処理評価部1005は、Writeキュー311の先頭に格納されたWrite要求を処理した場合の、再配置制御部330において実行中の再配置処理の効果を、図9AのステップS905からS909に示された手順と同様の手順にて再計算する(ステップS1317)。ステップS1317で計算された再配置処理の効果が、再配置を停止した際の効果を上回る場合(ステップS1319のYES判定)、ステップS1303以降の処理を実行する。
ステップS1317で計算された再配置処理の効果が、再配置を停止した際の効果以下である場合(ステップS1319のNO判定)、優先処理判定部1006は、再配置処理制御部1007を介してアクセス実行部310に対して再配置処理の中止を指示する。そして、アクセス実行部310において実行中の再配置処理に対応するRead処理またはWrite処理を中断して、再配置処理を中止する(ステップS1321)。
優先処理判定部1006は、Write要求制御部1008を介してアクセス実行部310に対してWriteキュー311に待機している先頭のWrite要求を実行するように指示して、アクセス実行部310は記憶媒体240に対してWrite要求を実行する(ステップS1323)。アクセス実行部310は、ステップS1323で実行したWrite要求の完了応答を、要求元のホストコンピュータ210で動作するソフトウェアやOSに通知してステップS1301以降の処理を実行する(ステップS1325)。
以上のステップS1301からS1325までの処理を行い、アクセス実行部310を通じてWriteキュー311に格納された、ホストコンピュータ210で動作するソフトウェアやOSからの記憶媒体240に対するWrite要求を実行する動作が完了する。ステップS311における再配置処理の中止は、再配置処理を一時的に中断してWriteキュー311に待機しているWrite要求の実行を完了した後に、中断した再配置処理を再開する動作であってもよい。その場合、ステップS1317における再配置処理の効果の再計算について、再配置処理を一時的に中断した場合の効果を別途算出する。また、ステップS1307において、Write完了時刻予測部1004が再配置完了予測部1003から再配置処理の完了予測時刻を受け取る動作は、Write完了時刻予測部1004や優先処理判定部1006が断片化状態管理テーブル303を参照して直接完了予測時刻を計算する動作でもよい。
本実施形態によれば、記憶媒体のアクセス性能の向上および長寿命化を図ると共に、断片化を減少させる再配置処理中にホストコンピュータから新たなWrite要求があった場合に、再配置処理の維持、中止または中断を判定することで、Write要求への応答が遅延し、引いてはWriteエラーとなることを防ぐことができる。すなわち、SSDに対して並列に格納されたことによって内部のNANDフラッシュ上に断片化された状態で格納されたデータの集合に対して、適切なデータの集合および適切な時期を選択して再配置処理を行う。これにより、SSD内部のGC処理によって移動されるデータの集合の量を効果的に削減し、再配置によるSSDの性能向上、長寿命化の効果を高めることが可能である。
[第4実施形態]
次に、本発明の第4実施形態に係る記憶制御装置を記憶制御部としてホストコンピュータ内に含む情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第2実施形態および第3実施形態と比べると、再配置処理の開始タイミングおよび再配置処理中のWrite要求処理を共に行なう点で異なる。その他の構成および動作は、第2実施形態や第3実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
《記憶制御装置の機能構成》
図14は、本実施形態に係る記憶制御装置としての記憶制御部1420の機能構成を示すブロック図である。なお、図14において、図3B、図10と同様の機能構成部には同じ参照番号を付して、説明は省略する。
記憶制御部1420においては、再配置開始部320の格納監視部302および再配置指示部307が、再配置制御部330の再配置処理記憶部1002に接続されている。なお、図14においては、機能構成部が有するテーブル類は記載していないが、図3B、図10と同様のテーブルを有するものである。
本実施形態によれば、記憶媒体のアクセス性能の向上および長寿命化を図ると共に、複数の物理アドレス領域における断片化を減少するための再配置処理を開始する適切なタイミングを考慮して、再配置処理の頻繁な発生を抑えるので、断片化の増大や通常のWrite処理の遅延を抑えることができる。さらに、断片化を減少させる再配置処理中にホストコンピュータから新たなWrite要求があった場合に、再配置処理の維持、中止または中断を判定することで、Write要求への応答が遅延し、引いてはWriteエラーとなることを防ぐことができる。すなわち、SSDに対して並列に格納されたことによって内部のNANDフラッシュ上に断片化された状態で格納されたデータの集合に対して、適切なデータの集合および適切な時期を選択して再配置処理を行う。これにより、SSD内部のGC処理によって移動されるデータの集合の量を効果的に削減し、再配置によるSSDの性能向上、長寿命化の効果を高めることが可能である。
[第5実施形態]
次に、本発明の第5実施形態に係る記憶制御装置を記憶制御部としてホストコンピュータ内に含む情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第2実施形態乃至第4実施形態と比べると、断片化が著しいと評価される領域へのWrite処理を代替するためのバッファを有する点で異なる。その他の構成および動作は、第2実施形態から第4実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
《情報処理システム》
図15は、本実施形態に係る情報処理システム1500の構成を示す図である。なお、図15において、図2と同様の機能構成部には同じ参照番号を付して、説明を省略する。
図15の情報処理システム1500は、バッファ1560を含む。バッファ1560は、記憶媒体240に対するWriteデータのうち、断片化頻度の高い領域に対するWrite要求に対応したデータを格納する。バッファ1560は、DRAM(Dynamic Random Access Memory)などの記憶媒体240より高性能な記憶媒体を用いる以外に、記憶媒体240と同様にSSDを用いることも可能である。また、バッファ1560は、記憶媒体240の一部領域を割り当てた形でもよい。
ホストコンピュータ1510は、第2乃至第4実施形態の処理に加えて、記憶媒体240またはバッファ1560へのWrite処理を制御する記憶制御部1520を有する。記憶制御部1520は、断片化が著しいと評価される領域へのWrite処理をバッファ1560に一次保存することで代替し、記憶媒体240へのWrite回数を削減することで、断片化の増大を防ぐ。
本実施形態によれば、記憶媒体のアクセス性能の向上および長寿命化を図ると共に、断片化発生頻度の高い領域に対するWriteデータをバッファとして用意した記憶領域に格納して、あらかじめ断片化の発生頻度が高いと推定された領域への格納を回避することにより、さらに記憶媒体のアクセス性能の向上および長寿命化を図ることができる。
[第6実施形態]
次に、本発明の第6実施形態に係る記憶制御装置を記憶制御部としてホストコンピュータ内に含む情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第2実施形態乃至第5実施形態と比べると、記憶制御部が記憶媒体側にある点、あるいは、ネットワークを介してホストコンピュータの外部にある点で異なる。その他の構成および動作は、第2実施形態から第5実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
《情報処理システム》
図16は、本実施形態に係る記憶制御部1643または1620を含む情報処理システム1600の構成を示す図である。なお、図16において、図2と同様の構成要素には同じ参照番号を付して、説明を省略する。
図16においては、ホストコンピュータ1610は本実施形態の記憶制御部を有しない。一例として、本実施形態の記憶制御部1643は、記憶媒体1640に搭載されている。また、他の例として、本実施形態の記憶制御部1620は、ネットワーク250を介して独立した装置として接続されている。かかる記憶制御部1643または1620は、ソフトウェアで実現されても、ワンチップのプロセッサで実現されてもよい。
本実施形態によれば、記憶媒体のアクセス性能の向上および長寿命化を図ると共に、第2乃至第5実施形態のようにホストコンピュータによる処理に限定されず、記憶媒体への書き込みにおける領域の断片化状態を推定して、断片化状態を再配置により解消することで、記憶媒体のアクセス性能の向上、長寿命化を図ることができる。
[他の実施形態]
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する情報処理プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるWWW(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体(non-transitory computer readable medium)は本発明の範疇に含まれる。
[実施形態の他の表現]
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されていると判定された断片化データに対して、前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理を開始する再配置開始手段と、
前記データ再配置処理の処理中に前記ホストコンピュータからWrite要求を受け取ったときに、前記データ再配置処理が前記記憶媒体へのアクセスの性能を向上させるか否かを評価して、前記アクセスの性能を向上させる場合は前記データ再配置処理の継続を指示し、前記アクセスの性能を向上させない場合は前記データ再配置処理の中止または中断を指示する再配置制御手段と、
を備える記憶制御装置。
(付記2)
前記アクセスの性能を向上させる場合は前記Write要求の待機を指示し、前記アクセスの性能を向上させない場合は前記Write要求の実行を指示するWrite要求制御手段を、さらに備える付記1に記載の記憶制御装置。
(付記3)
前記データ再配置処理の完了を待って、待機させた前記Write要求の実行を再開したときの、最後尾にキューイングされたWrite要求が実行されるまでの遅延時間が第1閾値より短い場合に、前記アクセスの性能を向上させると評価する、付記1または2に記載の記憶制御装置。
(付記4)
前記データ再配置処理を中止または一時停止して前記Write要求を実行した場合の前記記憶媒体に対するWriteデータ量が、前記データ再配置処理の完了を待って、待機させた前記Write要求を実行した場合の前記データ再配置処理による前記記憶媒体の内部処理に伴うデータの移動量の削減期待値と、同じまたは少なくなる場合は、前記アクセスの性能を向上させないと評価する、付記1乃至3のいずれか1項に記載の記憶制御装置。
(付記5)
前記内部処理に伴うデータの移動量の削減期待値は、前記データ再配置処理を行なわなかった場合の、一連のデータのデータサイズと、前記一連のデータが断片化している度合いを考慮した前記内部処理により移動する回数との積とする、付記4に記載の記憶制御装置。
(付記6)
前記断片化している度合いは、前記一連のデータのサイズと、Writeアクセスの開始時から終了時までの間に、前記Writeアクセスとは別のWriteアクセスにより前記記憶媒体に対して書き込まれたデータのサイズと、に基づいて、算出される、付記5に記載の記憶制御装置。
(付記7)
前記内部処理は、ガベージコレクションを含む、付記4乃至6のいずれか1項に記載の記憶制御装置。
(付記8)
ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されていると判定された断片化データに対して、前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理を開始する再配置開始ステップと、
前記データ再配置処理の処理中に前記ホストコンピュータからWrite要求を受け取ったときに、前記データ再配置処理が前記記憶媒体へのアクセスの性能を向上させるか否かを評価して、前記アクセスの性能を向上させる場合は前記データ再配置処理の継続を指示し、前記アクセスの性能を向上させない場合は前記データ再配置処理の中止または中断を指示する再配置制御ステップと、
を含む記憶制御方法。
(付記9)
ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されていると判定された断片化データに対して、前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理を開始する再配置開始ステップと、
前記データ再配置処理の処理中に前記ホストコンピュータからWrite要求を受け取ったときに、前記データ再配置処理が前記記憶媒体へのアクセスの性能を向上させるか否かを評価して、前記アクセスの性能を向上させる場合は前記データ再配置処理の継続を指示し、前記アクセスの性能を向上させない場合は前記データ再配置処理の中止または中断を指示する再配置制御ステップと、
をコンピュータに実行させる記憶制御プログラム。
(付記10)
ホストコンピュータと、
記憶媒体と、
前記ホストコンピュータによる前記記憶媒体へのアクセスを制御する記憶制御装置と、
を備え、
前記記憶制御装置は、
前記ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されていると判定された断片化データに対して、前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理を開始する再配置開始手段と、
前記データ再配置処理の処理中に前記ホストコンピュータからWrite要求を受け取ったときに、前記データ再配置処理が前記記憶媒体へのアクセスの性能を向上させるか否かを評価して、前記アクセスの性能を向上させる場合は前記データ再配置処理の継続を指示し、前記アクセスの性能を向上させない場合は前記データ再配置処理の中止または中断を指示する再配置制御手段と、
を有する、情報処理システム。
この出願は、2015年7月6日に出願された日本国特許出願 特願2015−135003号を基礎とする優先権を主張し、その開示の全てをここに取り込む。

Claims (10)

  1. ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されていると判定された断片化データに対して、前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理を開始する再配置開始手段と、
    前記データ再配置処理の処理中に前記ホストコンピュータからWrite要求を受け取ったときに、前記データ再配置処理が前記記憶媒体へのアクセスの性能を向上させるか否かを評価して、前記アクセスの性能を向上させる場合は前記データ再配置処理の継続を指示し、前記アクセスの性能を向上させない場合は前記データ再配置処理の中止または中断を指示する再配置制御手段と、
    を備える記憶制御装置。
  2. 前記アクセスの性能を向上させる場合は前記Write要求の待機を指示し、前記アクセスの性能を向上させない場合は前記Write要求の実行を指示するWrite要求制御手段を、さらに備える請求項1に記載の記憶制御装置。
  3. 前記データ再配置処理の完了を待って、待機させた前記Write要求の実行を再開したときの、最後尾にキューイングされたWrite要求が実行されるまでの遅延時間が第1閾値より短い場合に、前記アクセスの性能を向上させると評価する、請求項1または2に記載の記憶制御装置。
  4. 前記データ再配置処理を中止または一時停止して前記Write要求を実行した場合の前記記憶媒体に対するWriteデータ量が、前記データ再配置処理の完了を待って、待機させた前記Write要求を実行した場合の前記データ再配置処理による前記記憶媒体の内部処理に伴うデータの移動量の削減期待値と、同じまたは少なくなる場合は、前記アクセスの性能を向上させないと評価する、請求項1乃至3のいずれか1項に記載の記憶制御装置。
  5. 前記内部処理に伴うデータの移動量の削減期待値は、前記データ再配置処理を行なわなかった場合の、一連のデータのデータサイズと、前記一連のデータが断片化している度合いを考慮した前記内部処理により移動する回数との積とする、請求項4に記載の記憶制御装置。
  6. 前記断片化している度合いは、前記一連のデータのサイズと、Writeアクセスの開始時から終了時までの間に、前記Writeアクセスとは別のWriteアクセスにより前記記憶媒体に対して書き込まれたデータのサイズと、に基づいて、算出される、請求項5に記載の記憶制御装置。
  7. 前記内部処理は、ガベージコレクションを含む、請求項4乃至6のいずれか1項に記載の記憶制御装置。
  8. ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されていると判定された断片化データに対して、前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理を開始する再配置開始ステップと、
    前記データ再配置処理の処理中に前記ホストコンピュータからWrite要求を受け取ったときに、前記データ再配置処理が前記記憶媒体へのアクセスの性能を向上させるか否かを評価して、前記アクセスの性能を向上させる場合は前記データ再配置処理の継続を指示し、前記アクセスの性能を向上させない場合は前記データ再配置処理の中止または中断を指示する再配置制御ステップと、
    を含む記憶制御方法。
  9. ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されていると判定された断片化データに対して、前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理を開始する再配置開始ステップと、
    前記データ再配置処理の処理中に前記ホストコンピュータからWrite要求を受け取ったときに、前記データ再配置処理が前記記憶媒体へのアクセスの性能を向上させるか否かを評価して、前記アクセスの性能を向上させる場合は前記データ再配置処理の継続を指示し、前記アクセスの性能を向上させない場合は前記データ再配置処理の中止または中断を指示する再配置制御ステップと、
    をコンピュータに実行させる記憶制御プログラム。
  10. ホストコンピュータと、
    記憶媒体と、
    前記ホストコンピュータによる前記記憶媒体へのアクセスを制御する記憶制御装置と、
    を備え、
    前記記憶制御装置は、
    前記ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されていると判定された断片化データに対して、前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理を開始する再配置開始手段と、
    前記データ再配置処理の処理中に前記ホストコンピュータからWrite要求を受け取ったときに、前記データ再配置処理が前記記憶媒体へのアクセスの性能を向上させるか否かを評価して、前記アクセスの性能を向上させる場合は前記データ再配置処理の継続を指示し、前記アクセスの性能を向上させない場合は前記データ再配置処理の中止または中断を指示する再配置制御手段と、
    を有する、情報処理システム。
JP2017527131A 2015-07-06 2016-06-03 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム Active JP6834955B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2015135003 2015-07-06
JP2015135003 2015-07-06
PCT/JP2016/066685 WO2017006675A1 (ja) 2015-07-06 2016-06-03 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム

Publications (2)

Publication Number Publication Date
JPWO2017006675A1 true JPWO2017006675A1 (ja) 2018-04-19
JP6834955B2 JP6834955B2 (ja) 2021-02-24

Family

ID=57686156

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017527131A Active JP6834955B2 (ja) 2015-07-06 2016-06-03 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム

Country Status (3)

Country Link
US (1) US10592148B2 (ja)
JP (1) JP6834955B2 (ja)
WO (1) WO2017006675A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6403164B2 (ja) * 2015-09-11 2018-10-10 東芝メモリ株式会社 メモリシステム
JP2018160195A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステムおよび不揮発性メモリの制御方法
US10684965B2 (en) * 2017-11-08 2020-06-16 Advanced Micro Devices, Inc. Method to reduce write responses to improve bandwidth and efficiency
KR102426107B1 (ko) * 2017-12-20 2022-07-28 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US11782637B2 (en) * 2021-01-05 2023-10-10 Red Hat, Inc. Prefetching metadata in a storage system
US11662932B2 (en) * 2021-06-25 2023-05-30 Western Digital Technologies, Inc. Tiered storage system with defragmentation based on weighted flash fragmentation factor

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0981424A (ja) * 1995-09-19 1997-03-28 Nec Eng Ltd 情報処理装置
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
JP2005056245A (ja) 2003-08-06 2005-03-03 Brother Ind Ltd ファイルアクセス管理方法、ファイルアクセス管理システム、プログラム
US7562203B2 (en) * 2006-09-27 2009-07-14 Network Appliance, Inc. Storage defragmentation based on modified physical address and unmodified logical address
US20090254594A1 (en) * 2008-04-02 2009-10-08 Microsoft Corporation Techniques to enhance database performance
US8140740B2 (en) * 2009-10-29 2012-03-20 Hewlett-Packard Development Company, L.P. Data defragmentation of solid-state memory
US8788755B2 (en) * 2010-07-01 2014-07-22 Infinidat Ltd. Mass data storage system and method of operating thereof
US8639900B2 (en) 2011-05-25 2014-01-28 International Business Machines Corporation Defragmentation of data storage pools

Also Published As

Publication number Publication date
US10592148B2 (en) 2020-03-17
WO2017006675A1 (ja) 2017-01-12
US20180217926A1 (en) 2018-08-02
JP6834955B2 (ja) 2021-02-24

Similar Documents

Publication Publication Date Title
JP6691669B2 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
WO2017006675A1 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
US10649890B2 (en) Information processing system, storage control apparatus, storage control method, and storage control program
US8904061B1 (en) Managing storage operations in a server cache
US20160162187A1 (en) Storage System And Method For Processing Writing Data Of Storage System
US9507720B2 (en) Block storage-based data processing methods, apparatus, and systems
US9182912B2 (en) Method to allow storage cache acceleration when the slow tier is on independent controller
EP2665065A2 (en) Electronic device employing flash memory
KR20140006299A (ko) 낸드 플래시 메모리 기반의 저장부에 데이터 기록을 제어하는 방법 및 장치
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
WO2015039352A1 (zh) 缓存数据的方法和存储系统
JPWO2013186828A1 (ja) 計算機システム及び制御方法
CN110658980B (zh) 数据处理方法及装置、存储系统
WO2016002325A1 (ja) 情報処理システム、情報処理方法、記憶制御装置およびその制御方法と制御プログラム
JP2021135538A (ja) ストレージ制御装置及びストレージ制御プログラム
CN108334457B (zh) 一种io处理方法及装置
JP4765967B2 (ja) 情報処理装置及び情報処理方法並びにプログラム
CN102622307B (zh) 硬盘数据的操作方法和硬盘控制器
WO2018008676A1 (ja) 情報処理システム、キャッシュ容量配分方法、記憶制御装置、記憶制御方法、及び記録媒体
US10007437B2 (en) Management apparatus, storage system, method, and computer readable medium
JP6668785B2 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
KR101426806B1 (ko) 오브젝트 아이디에 기반하여 저장 매체에서의 영속화를 제어하는 방법, 그 컴퓨터 시스템 및 스토리지 시스템
KR101412885B1 (ko) 모드 설정 및 구분자를 이용하여 저장 매체에서의 영속화를 제어하는 방법 및 그 스토리지 시스템
WO2017168690A1 (ja) ストレージ装置、及び方法
JPWO2016051593A1 (ja) 計算機システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190806

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191007

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200317

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200707

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200715

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210105

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210118

R150 Certificate of patent or registration of utility model

Ref document number: 6834955

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150