(57)【要約】  記憶媒体のアクセス性能の向上および長寿命化を図ると共に、再配置処理が頻繁に発生することを回避させ、断片化の増大や通常のWrite処理の遅延を抑える記憶制御装置である。この記憶制御装置は、ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されている度合いを評価する断片化評価部と、断片化評価手段が評価するタイミングを選定するタイミング選定部と、タイミングにおいて断片化評価部が評価した前記度合いに基づいて、論理アドレス領域に対応するデータを記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理の実行を指示する再配置指示部と、を備える。
2017006674.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されている度合いを評価する断片化評価手段と、
前記断片化評価手段が評価するタイミングを選定するタイミング選定手段と、
前記タイミングにおいて前記断片化評価手段が評価した前記度合いに基づいて、前記論理アドレス領域に対応するデータを前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理の実行を指示する再配置指示手段と、
を備える記憶制御装置。
【請求項２】
前記タイミング選定手段は、一連のデータを書き込むWriteアクセスの終了を、前記断片化評価手段が評価するタイミングと選定する、請求項１に記載の記憶制御装置。
【請求項３】
前記一連のデータを書き込むWriteアクセスの終了は、前記ホストコンピュータからの前記一連のデータを含むファイルのクローズ要求、前記一連のデータの格納に対する終了指示、前記ホストコンピュータからの前記記憶媒体とのセッションの切断またはコネクションの切断、または、前記記憶媒体への最終書き込みからの時間経過によって検出される、請求項２に記載の記憶制御装置。
【請求項４】
前記断片化評価手段は、一連のデータを書き込むWriteアクセスが終了した際に、前記一連のデータのサイズと、前記Writeアクセスの開始時から終了時までの間に、前記Writeアクセスとは別のWriteアクセスにより前記記憶媒体に対して書き込まれたデータのサイズと、に基づいて、前記一連のデータの断片化されて記憶されている前記度合いを評価する、請求項１乃至３のいずれか１項に記載の記憶制御装置。
【請求項５】
前記再配置指示手段は、前記データ再配置処理により前記記憶媒体へのアクセスの性能が向上するか否かを評価し、前記データ再配置処理により前記記憶媒体へのアクセスの性能が向上すると評価した場合に、前記データ再配置処理の実行を指示する、請求項１乃至４のいずれか１項に記載の記憶制御装置。
【請求項６】
前記再配置指示手段は、前記データ再配置処理の実行によって前記記憶媒体の内部処理に伴うデータの移動量の削減期待値が、前記データ再配置処理により一連のデータを読み出して書き込むために必要とするデータの移動量を超える場合に、前記データ再配置処理が前記記憶媒体へのアクセス性能を向上させると評価する、請求項５に記載の記憶制御装置。
【請求項７】
前記削減期待値は、前記データ再配置処理を行った場合の前記内部処理によって移動されるデータの合計サイズに関する期待値と、前記データ再配置処理を行わなかった場合の前記合計サイズに関する期待値との差によって算出される、請求項６に記載の記憶制御装置。
【請求項８】
前記合計サイズに関する期待値は、１回あたりの前記内部処理で移動されるデータ量と、前記断片化評価手段が評価した前記度合いを考慮した、データが更新または削除されるまでの間に前記内部処理によって回収される回数の期待値との積によって計算される、請求項７に記載の記憶制御装置。
【請求項９】
前記内部処理は、ガベージコレクションを含む、請求項６乃至８のいずれか１項に記載の記憶制御装置。
【請求項１０】
前記ホストコンピュータからのWriteが行われていない状態を検出した場合に、前記再配置指示手段により指示された前記データ再配置処理を開始する再配置制御手段をさらに備える請求項１乃至９前記データのいずれか１項に記載の記憶制御装置。
【請求項１１】
前記再配置制御手段は、前記データ再配置処理の処理中に前記ホストコンピュータからWrite要求を受け取ったときに、前記データ再配置処理が前記記憶媒体へのアクセスの性能を向上させるか否かを評価して、前記アクセスの性能を向上させる場合は前記データ再配置処理の継続を指示し、前記アクセスの性能を向上させない場合は前記データ再配置処理の中止または中断を指示する、請求項１０に記載の記憶制御装置。
【請求項１２】
前記アクセスの性能を向上させる場合は前記Write要求の待機を指示し、前記アクセスの性能を向上させない場合は前記Write要求の実行を指示するWrite要求制御手段を、さらに備える請求項１１に記載の記憶制御装置。
【請求項１３】
ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されている度合いを評価する断片化評価ステップと、
前記断片化評価ステップにおいて評価するタイミングを選定するタイミング選定ステップと、
前記タイミングにおいて前記断片化評価ステップにおいて評価した前記度合いに基づいて、前記論理アドレス領域に対応するデータを前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理の実行を指示する再配置指示ステップと、
を含む記憶制御方法。
【請求項１４】
ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されている度合いを評価する断片化評価ステップと、
前記断片化評価ステップにおいて評価するタイミングを選定するタイミング選定ステップと、
前記タイミングにおいて前記断片化評価ステップにおいて評価した前記度合いに基づいて、前記論理アドレス領域に対応するデータを前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理の実行を指示する再配置指示ステップと、
をコンピュータに実行させる記憶制御プログラム。
【請求項１５】
ホストコンピュータと、
記憶媒体と、
前記ホストコンピュータによる前記記憶媒体へのアクセスを制御する記憶制御装置と、
を備え、
前記記憶制御装置は、
前記ホストコンピュータが前記記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されている度合いを評価する断片化評価手段と、
前記断片化評価手段が評価するタイミングを選定するタイミング選定手段と、
前記タイミングにおいて前記断片化評価手段が評価した前記度合いに基づいて、前記論理アドレス領域に対応するデータを前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理の実行を指示する再配置指示手段と、
を有する、情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラムに関する。
【背景技術】
【０００２】
上記技術分野において、特許文献１には、ＳＳＤ（Solid State Drive）において、NANDフラッシュメモリ（以下、NANDフラッッシュと称す）に対するデータの更新に伴うページの退避処理を避けるために、コントローラ内部のＦＴＬ(Flash Translation Layer)が、ページを単位として追記形式でデータを各ページに順番に格納する技術が開示されている。また、特許文献２には、データ・エクスメント数に基づいて断片化を推定して空き領域を付加する技術が開示されている。【０００３】
また、非特許文献１には、ＳＳＤが継続的に追記形式でホストコンピュータからのWriteデータを格納するために、更新等によって不要となったデータが格納された記憶領域を回収する、ＧＣ(Garbage Collection)の負荷を増加させない技術が開示されている。非特許文献１では、ホストからのWriteコマンドに同じ性質を持つデータごとに同一のストリームＩＤと呼ばれる情報を付与し、ＳＳＤの内部でストリームＩＤに基づいて格納先のNANDフラッシュのブロックを選択する。そして、ブロック毎のデータの更新時期が近くなるようにWriteデータの格納を行い、ＧＣの負荷を低減する方法が示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許5937425号
【特許文献２】特表２０１４−５１７９７１号公報
【非特許文献】
【０００５】
【非特許文献１】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要求や、再配置処理およびＧＣなどの内部処理を含むＳＳＤのブロックに対するデータ格納のトータルな適正化による、記憶媒体のアクセス性能および長寿化は考慮されていない。【０００７】
本発明の目的は、上述の課題を解決する技術を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明に係る記憶制御装置は、
ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されている度合いを評価する断片化評価手段と、
前記断片化評価手段が評価するタイミングを選定するタイミング選定手段と、
前記タイミングにおいて前記断片化評価手段が評価した前記度合いに基づいて、前記論理アドレス領域に対応するデータを前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理の実行を指示する再配置指示手段と、
を備える。【０００９】
上記目的を達成するため、本発明に係る記憶制御方法は、
ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されている度合いを評価する断片化評価ステップと、
前記断片化評価ステップにおいて評価するタイミングを選定するタイミング選定ステップと、
前記タイミングにおいて前記断片化評価ステップにおいて評価した前記度合いに基づいて、前記論理アドレス領域に対応するデータを前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理の実行を指示する再配置指示ステップと、
を含む。【００１０】
上記目的を達成するため、本発明に係る記憶制御プログラムは、
ホストコンピュータが記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されている度合いを評価する断片化評価ステップと、
前記断片化評価ステップにおいて評価するタイミングを選定するタイミング選定ステップと、
前記タイミングにおいて前記断片化評価ステップにおいて評価した前記度合いに基づいて、前記論理アドレス領域に対応するデータを前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理の実行を指示する再配置指示ステップと、
をコンピュータに実行させる。【００１１】
上記目的を達成するため、本発明に係る情報処理システムは、
ホストコンピュータと、
記憶媒体と、
前記ホストコンピュータによる前記記憶媒体へのアクセスを制御する記憶制御装置と、
を備え、
前記記憶制御装置は、
前記ホストコンピュータが前記記憶媒体にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、前記記憶媒体の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されている度合いを評価する断片化評価手段と、
前記断片化評価手段が評価するタイミングを選定するタイミング選定手段と、
前記タイミングにおいて前記断片化評価手段が評価した前記度合いに基づいて、前記論理アドレス領域に対応するデータを前記記憶媒体の内部の連続した物理アドレス領域に書き込まれるように再配置するデータ再配置処理の実行を指示する再配置指示手段と、
を有する。
【発明の効果】
【００１２】
本発明によれば、記憶媒体のアクセス性能の向上および長寿命化を図ると共に、再配置処理が頻繁に発生することを回避させ、断片化の増大や通常のWrite処理の遅延を抑えることができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１実施形態に係る記憶制御装置の構成を示すブロック図である。
【図２】本発明の第２実施形態に係る情報処理システムの構成を示す図である。
【図３Ａ】本発明の第２実施形態に係る記憶制御装置の機能構成を示すブロック図である。
【図３Ｂ】本発明の第２実施形態に係る再配置開始部の機能構成を示すブロック図である。
【図４Ａ】本発明の第２実施形態に係る断片化状態管理テーブルの構成を示す図である。
【図４Ｂ】本発明の第２実施形態に係る更新履歴管理テーブルの構成を示す図である。
【図４Ｃ】本発明の第２実施形態に係る格納終了検出テーブルの構成を示す図である。
【図４Ｄ】本発明の第２実施形態に係る断片化評価テーブルの構成を示す図である。
【図４Ｅ】本発明の第２実施形態に係る再配置評価テーブルの構成を示す図である。
【図５】本発明の第２実施形態に係る記憶制御部を含むホストコンピュータのハードウェア構成を示すブロック図である。
【図６】本発明の第２実施形態に係る記憶制御部の処理手順を示すフローチャートである。
【図７】本発明の第２実施形態に係るＲｅａｄ処理の手順を示すフローチャートである。
【図８Ａ】本発明の第２実施形態に係るＷｒｉｔｅ処理の手順を示すフローチャートである。
【図８Ｂ】本発明の第２実施形態に係るＷｒｉｔｅ処理の手順を示すフローチャートである。
【図９Ａ】本発明の第２実施形態に係る断片化制御処理の手順を示すフローチャートである。
【図９Ｂ】本発明の第２実施形態に係る断片化制御処理の手順を示すフローチャートである。
【図１０】本発明の第３実施形態に係る再配置制御部の機能構成を示すブロック図である。
【図１１Ａ】本発明の第３実施形態に係る再配置評価テーブルの構成を示す図である。
【図１１Ｂ】本発明の第３実施形態に係る優先処理判定テーブルの構成を示す図である。
【図１２】本発明の第３実施形態に係る記憶制御部を含むホストコンピュータのハードウェア構成を示すブロック図である。
【図１３Ａ】本発明の第３実施形態に係る記憶制御部における再配置中のWrite要求に対する処理手順を示すフローチャートである。
【図１３Ｂ】本発明の第３実施形態に係る記憶制御部における再配置中のWrite要求に対する処理手順を示すフローチャートである。
【図１４】本発明の第４実施形態に係る記憶制御装置の機能構成を示すブロック図である。
【図１５】本発明の第５実施形態に係る情報処理システムの構成を示す図である。
【図１６】本発明の第６実施形態に係る情報処理システムの構成を示す図である。
【発明を実施するための形態】
【００１４】
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素は単なる例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
【００１５】
［第１実施形態］
本発明の第１実施形態としての記憶制御装置１００について、図１を用いて説明する。記憶制御装置１００は、ホストコンピュータによる記憶媒体のアクセスを制御する装置である。
【００１６】
図１に示すように、記憶制御装置１００は、断片化評価部１０１と、タイミング選定部１０２と、再配置指示部１０３と、を含む。断片化評価部１０１は、ホストコンピュータが記憶媒体１１０にアクセスする際に用いる論理アドレス空間における論理アドレス領域に対応するデータが、記憶媒体１１０の内部で使用される物理アドレス空間において、複数の物理アドレス領域に断片化されて記憶されている度合いを評価する。タイミング選定部１０２は、断片化評価部１０１が評価するタイミングを選定する。再配置指示部１０３は、タイミングにおいて断片化評価部１０１が評価した度合いに基づいて、論理アドレス領域に対応するデータ１１１を記憶媒体１１０の内部の連続した物理アドレス領域１１２に書き込まれるように再配置するデータ再配置処理の実行を指示する。
【００１７】
本実施形態によれば、断片化状態を解消するようにデータを再配置するタイミングを選定することで、記憶媒体のアクセス性能の向上および長寿命化を図ると共に、再配置処理が頻繁に発生することを回避させ、断片化の増大や通常のWrite処理の遅延を抑えることができる。
【００１８】
［第２実施形態］
次に、本発明の第２実施形態に係る記憶制御装置を記憶制御部としてホストコンピュータ内に含む情報処理システムについて説明する。本実施形態に係る情報処理システムにおいては、記憶制御部が、ホストコンピュータのＯＳ(Operating System)やアプリケーションプログラム（以下、アプリケーションと称す）の記憶媒体へのアクセス（ReadおよびWrite)における履歴情報から、一連のデータを書き込むWriteアクセスの終了を再配置処理とタイミングを選定して、記憶媒体における物理アドレス空間における記憶領域の断片化状態を推定する。そして、断片化状態があらかじめ定めた状態を超えている場合、断片化状態の領域をまとめて再配置することにより、断片化解消を実現する。
【００１９】
《前提技術の説明》
本実施形態の記憶制御方法を説明する前に、その前提となる記憶制御技術を説明する。
【００２０】
近年ＳＳＤ等の記憶媒体で記憶素子として用いられるNANDフラッシュは、データの更新時に格納済の古いデータを消去(Erase)する必要がある。しかし、NANDフラッシュに対するEraseは、ReadおよびWriteの最小単位であるページを複数含んだ、ブロックを単位として行われる。そのため、NANDフラッシュのページに格納されたデータを消去、または更新する場合は、同一ブロックに含まれる他のページの退避が必要である。
【００２１】
多くのＳＳＤでは、NANDフラッシュに対するデータの更新に伴うページの退避処理を避けるために、コントローラ内部のＦＴＬが、ページを単位として追記形式でデータを格納する。具体的にはデータが格納されていないNANDフラッシュのブロックに対して、外部から書き込みを要求されたデータを書き込み先のアドレスによらず各ページに順番に格納する。各アドレスに対応するデータの更新は、元のデータが格納されていたページを更新せずに、データが格納されていないページに対して更新後のデータを格納する。このように追記形式を用いることで、データの更新が発生するごとにページの退避処理が発生することを回避する。ブロック内の全ページにデータが格納されると、ＦＴＬはデータが書き込まれていないブロックから、次にデータを格納するためのブロックを選択する。ＦＴＬは選択されたブロックに対して同様に外部から書き込まれたデータを例えば特許文献１のように、各ページに順番に格納する。
【００２２】
一方で、ＳＳＤが継続的に追記形式でホストからのWriteデータを格納するために、更新等によって不要となったデータが格納された記憶領域を回収するＧＣ（ガベージコレクション）が必要である。ＳＳＤでは一般的なＧＣにおけるデータの移動に加えて、不要なデータが格納された記憶領域を再利用するために、ブロック単位の消去処理が必要である。よって、ＳＳＤにおけるＧＣでは、記憶領域をブロック単位で回収するために、回収対象となったブロックに含まれる有効なデータを持つページに対して退避処理が発生する。退避処理はNANDフラッシュのページに対するRead、および退避先のページに対するWriteによって実現される。つまり、ＧＣの負荷は退避を行うページ数に比例して増加する。ＧＣによる負荷の増加は、ＳＳＤにおけるアクセス処理の遅延、性能低下の原因の１つである。また、退避においてNANDフラッシュに対するデータの書き込みが発生する。NANDフラッシュ素子はErase回数の増加に従い、ビットエラーの発生率が増加して正常なデータの記憶が困難になる。よってNANDフラッシュ素子に対するWriteデータ量、即ちErase回数を増加させる有効なページの退避処理は、ＳＳＤの寿命消費につながる。
【００２３】
ＳＳＤ内部のＧＣにおいて退避を行うページ数が増加する原因の１つとして、複数のデータを同時に格納することが挙げられる。例えば、ＳＳＤに対して異なるデータを保持する複数のファイルを同時に格納すると、各ファイルのデータは到着順にNANDフラッシュのブロックに格納されるため、データの断片化が発生する。各ファイルのデータがＳＳＤに対して、ブロックよりも小さいサイズごとに書き込まれる場合、NANDフラッシュのブロックに複数ファイルのデータが混在した状態で格納される。同時に格納されたファイルがそれぞれ異なる時期に更新、削除されることで、ブロック内に有効なデータと無効なデータを格納したページが混在することになる。よって、ＧＣにおいて更新、削除が行われていないファイルのデータについて退避が行われる。
【００２４】
さらに、一度断片化したデータはＧＣの際に移動先のブロックにおいて他の退避されたデータと混在して格納される。そのため、長期間更新、削除されずにＳＳＤに格納され続けるデータが断片化した場合、退避先のブロックにおいて他のデータが更新、削除などによって無効化されることが起こりうる。これらのブロックが再びＧＣによって回収対象とされることで、同じデータに対する退避処理が繰り返し発生するため、長期間保存されるデータであるほど、ＳＳＤに対するデータ格納時の断片化による性能低下、寿命消費の影響は大きくなる。
【００２５】
複数データを同時に書き込んだ場合に発生するデータの断片化を回避するための方法として、非特許文献１ではホストからのWriteコマンドに同じ性質を持つデータごとに同一のストリームＩＤと呼ばれる情報を付与する。そして、ＳＳＤの内部でストリームＩＤに基づいて格納先のNANDフラッシュのブロックを選択する。このように、ブロック毎のデータの更新時期が近くなるようにWriteデータの格納を行い、ＧＣの負荷を低減する方法が示されている。しかし、この方法はホストからＳＳＤにアクセスを行うためのプロトコル改変を伴い、ホスト、ＳＳＤ両方の対応が必要であることから、適用に多大なコストを要する。また、既存のハードウェア、ソフトウェアを用いて構築された環境に対する適用は困難である。
【００２６】
《実施形態の説明》
上記前提技術の課題を解決するため、第２実施形態乃至第５実施形態においては、ＳＳＤの内部で実行される、NANDフラッシュの記憶領域に対する内部処理の１つであるＧＣにおいて、回収対象のブロックから有効なデータを退避するための処理に伴う負荷を軽減し、ＳＳＤのアクセス性能の向上、長寿命化を図るための技術を提供する。
【００２７】
具体的には、ＳＳＤの提供するＬＢＡ(Logical Block Address)の空間、あるいは連続したWriteアクセス要求ごとにNANDフラッシュ内における格納状況を監視し、NANDフラッシュ内の多数のブロックに断片化した状態を解消する。一般にファイル等の一連の意味を持つデータは、連続したＬＢＡによって表される記憶領域に格納される。また、単一ファイルに含まれるデータは、多くの場合に全体が更新、削除の対象となる。つまり、ＳＳＤに対するWriteデータのうち、ファイルのように連続または隣接したＬＢＡによって表されるデータは格納から更新、または削除までの期間(以下、本明細書では期間を生存期間と記述する)が同じである場合が多いと考えられる。
【００２８】
ＳＳＤ内部のNANDフラッシュに対するWriteデータの格納状況監視は、ＬＢＡの空間における一定の領域、あるいはファイルなどの一連の連続Writeアクセスごとに行う。ＳＳＤのNANDフラッシュの各ブロックに対してWriteデータが追記形式で格納される場合、連続したＬＢＡに対するWriteデータはNANDフラッシュの同一ブロックのページに格納される。一方で、細かなサイズのWriteが断続的に行われる領域は、少量のWriteデータが断続的に到着することから各Writeデータが複数のブロックに断片化した状態で格納される。断片化したWriteデータが格納されたブロックは、他の領域、あるいは連続アクセスのデータが混在した状態で格納されているため、生存期間の異なるデータの混在によってＧＣの負荷を高めると考えられる。
【００２９】
そこで、本実施形態では、ＬＢＡの空間における一定の領域ごとに断片化の度合いを記録する。あるいはファイルなどの一連の連続領域ごとにWriteアクセスをまとめて並列に実行されるデータ格納を管理する。そして、断片化の度合いが一定以上に増加した領域、あるいは多量のデータと並列に格納された連続領域のデータ全体をまとめて再配置することで断片化を解消する。ＬＢＡの空間上の各領域、およびファイルなどの連続したデータを格納する領域に関する断片化の発生を、同じ領域に対するWrite要求の間に行われたＳＳＤ全体のWriteデータ量から推定して記録する。NANDフラッシュに追記形式でデータが格納される場合、ブロックがWriteデータで満たされると、以降のWriteデータは異なるブロックに格納される。つまり、ＬＢＡの空間上の各領域に対してWrite要求を行う際に、同じ領域に対する前回のWrite要求を行った後に、ＳＳＤ上の他の領域に対して格納されたWriteデータの総容量を確認する。そして、総容量が一定以上である場合はWriteデータが新たなブロックに格納されたと判断してWrite要求を行った領域の断片化の度合いを増加する。また、複数のファイルを並列にWriteした場合、複数ファイルのデータがブロック内に混在して格納されるため、並列にWriteされるファイルが増加するほどＳＳＤ内部のNANDフラッシュにおける断片化が進行する。
【００３０】
このように、既存の多くのＳＳＤに対して、複数データを同時に書き込んだ場合に発生するデータの断片化を解消する方法として、各データを１つずつ再配置する方法が挙げられる。外部からデータを再配置することで、NANDフラッシュのブロックに対してデータが断片化することなく格納される。再配置前のデータは、ＳＳＤに格納されたデータに対する通常の更新、削除と同様に無効化される。つまり、ＧＣによるブロック回収に伴うデータ移動を防止することでNANDフラッシュに対するWrite量を削減し、性能低下、寿命消費を抑えることができる。
【００３１】
しかしながら、データの再配置によるＳＳＤの性能向上、長寿命化の効果を最大化するためには、再配置による効果を考慮して適切なデータのみに対して適切な時期に再配置を行う必要がある。
【００３２】
例えば、再配置による性能向上、長寿命化の効果はＳＳＤに格納されたデータによって異なる。データの再配置によって削減されるＧＣによるデータ移動量は、再配置を行うデータがＳＳＤに格納された際の断片化状況、および各データがＳＳＤに格納されてから更新、削除によって無効になるまでの期間に依存する。すなわち、各データがＳＳＤに格納された際の断片化状況は、並行して格納されたデータのサイズ、頻度によって変化する。各データが格納されたNANDフラッシュのブロックにおいて、並行して格納されたデータ量の割合が増加するほど、並行して格納されたデータが更新、削除によって無効化される頻度が増加する。よって、データを格納していたページを回収するためにＧＣによってデータの移動が発生する確率が増加する。
【００３３】
ここで、各データがＳＳＤに格納されてから更新、削除によって無効になるまでの期間は、各データがＧＣによるブロックの空き領域の回収に伴う移動対象となる回数に比例する。つまり、ＳＳＤに対する再配置は、更新頻度の高いデータを除外して行うことが望ましい。更新頻度の高いデータは、通常短期間で更新、削除されるため、ＳＳＤに断片化された状態で格納されていても、ＧＣによるブロックの回収に伴うデータ移動の対象となる可能性が低い。そのため更新頻度の高いデータに対する再配置は、逆にＳＳＤに対するWriteデータ量の増加につながる。
【００３４】
加えて、ＳＳＤに対するデータの再配置は、一連のデータの格納が全て終了してから実行する必要がある。データの格納が完了する前に再配置を実行した場合、再配置が行われたデータと、再配置の実行後に新たに格納されたデータに続く一連のデータとの間で断片化が発生する。再配置の前後における断片化の発生を防ぐには、一連のデータの格納完了を検出する必要がある。しかし、一連のデータに対する格納手順はアクセス方法に依存するため、アクセス方法ごとに異なる格納終了の検出方法が求められる。
【００３５】
本実施形態においては、複数の物理アドレス領域への断片化を減少するための再配置処理を開始する適切なタイミングを考慮するので、再配置処理が頻繁に発生せず、その結果、断片化を増大させたり通常のWrite処理を遅延させたりすることを抑える。すなわち、ＳＳＤに対して並列に格納されたことによって内部のNANDフラッシュ上に断片化された状態で格納されたデータの集合に対して、適切なデータの集合、および適切な時期を選択して再配置処理を行う。それにより、ＳＳＤ内部のＧＣ処理によって移動されるデータの集合の量を効果的に削減し、再配置によるＳＳＤの性能向上、長寿命化の効果を高めることが可能である。
【００３６】
《情報処理システム》
図２は、本実施形態に係る情報処理システム２００の構成を示す図である。
【００３７】
図２を参照すると、本実施形態の情報処理システム２００は、１台以上のホストコンピュータ２１０と、記憶媒体２４０と、ホストコンピュータ２１０と記憶媒体２４０とを接続するネットワーク２５０を含む。
【００３８】
ホストコンピュータ２１０は、ＯＳ(Operating System)２１１およびＯＳ２１１上で動作するソフトウェアであるアプリケーション２１２と、本実施形態の記憶制御部２２０と、を備える。記憶制御部２２０は、ＯＳ２１１およびアプリケーション２１２の処理における、記憶媒体２４０へのReadおよびWriteを含むアクセス処理を制御する。
【００３９】
記憶媒体２４０は、NANDフラッシュを記憶素子として用いたＳＳＤなどの記憶媒体である。なお、記憶媒体２４０は、媒体本体２４１とキャッシュ２４２とを有してもよい。また、ネットワーク２５０の形態は特に限定されず、ホストコンピュータ２１０と記憶媒体２４０とが直接接続される形態であってもよい。また、ホストコンピュータ２１０はネットワーク２５０によって接続された複数の装置、あるいは、システムで構成されてもよい。
【００４０】
《記憶制御装置の機能構成》
図３Ａは、本実施形態に係る記憶制御装置としての記憶制御部２２０の機能構成を示すブロック図である。
【００４１】
図３Ａを参照すると、記憶制御部２２０は、アクセス実行部３１０と、再配置開始部３２０と、再配置制御部３３０と、を備える。
【００４２】
アクセス実行部３１０は、ホストコンピュータ２１０で動作するＯＳ２１１またはアプリケーション２１２からのアクセス要求を受け取り、記憶媒体２４０に対して必要なアクセス処理を行う。また、アクセス実行部３１０は、記憶媒体２４０に対するWrite要求を保持するWriteキュー３１１を持ち、Write要求をWriteキュー３１１に一旦格納してから、記憶媒体２４０に対して発行する。なお、Writeキュー３１１において、Write要求は、ファーストイン・ファーストアウトあるいは優先順位に従って保持される。
【００４３】
再配置開始部３２０は、複数データを同時に書き込んだ場合に発生するデータの断片化の度合いを、一連のデータの格納終了時に評価する。そして、断片化を解消する再配置処理が記憶媒体へのアクセス性能を向上する場合に、再配置制御部３３０に対して再配置処理の開始を指示する。アクセス実行部３１０は、再配置制御部３３０による再配置制御にしたがって、記憶媒体２４０上の領域に対してデータを読み出して連続領域に書き込む、再配置処理を行う。
【００４４】
なお、本実施形態における再配置制御部３３０は、記憶媒体２４０上の領域に対するアクセス実行部３１０による再配置処理を制御する構成であれば、その構成は限定されない。また、記憶媒体２４０の領域に対するデータの読み出しは、記憶媒体２４０に対して直接要求を行う以外に、不図示の記憶媒体２４０に対するキャッシュメモリに対して要求を行うことでも代用できる。
【００４５】
（再配置開始部）
図３Ｂは、本実施形態に係る再配置開始部３２０の機能構成を示すブロック図である。
【００４６】
再配置開始部３２０は、格納監視部３０２と、断片化状態管理テーブル３０３と、タイミング選定部３０４と、更新履歴管理テーブル３０５と、断片化評価部３０６と、再配置指示部３０７と、を備える。
【００４７】
格納監視部３０２は、ホストコンピュータ２１０で動作するＯＳ２１１またはアプリケーション２１２から記憶媒体２４０に対するWrite要求を監視して、断片化状態管理テーブル３０３における、Write要求が更新するデータに対応するエントリを特定する。格納監視部３０２は、断片化状態管理テーブル３０３に対応するエントリが存在しない場合、新規にエントリを登録する。また、格納監視部３０２は、特定または登録したエントリに対して、Write要求の完了後のデータサイズ、およびデータと混在して格納されている混在データのサイズを新たに計算して更新する。また、格納監視部３０２は、エントリに格納された混在データのサイズの計算に必要となる、最後にWriteを行った時点での記憶媒体２４０の総Write量の情報を更新する。加えて、格納監視部３０２は、更新履歴管理テーブル３０５において、断片化状態管理テーブル３０３と同様にWrite要求が更新するデータに対応するエントリを更新、もしくは新規に作成する。そして、格納監視部３０２は、更新履歴管理テーブル３０５のエントリに格納された最終更新時刻を更新する。
【００４８】
断片化状態管理テーブル３０３は、記憶媒体２４０に格納されたデータのうち、格納処理の途中の各データに対して、断片化状態に関する情報として、データサイズ、データと混在して格納されている混在データのサイズ、および最後にデータに対するWriteを行った時点での記憶媒体２４０の総Write量を記録する。また、断片化状態管理テーブル３０３は、記憶媒体２４０の現在の総Write量を記録する。
【００４９】
タイミング選定部３０４は、格納終了検出テーブル３４１を有し、再配置処理を実行するタイミングを選定する。すなわち、タイミング選定部３０４は、ホストコンピュータ２１０で動作するＯＳ２１１またはアプリケーション２１２から記憶媒体２４０に対する各データの格納処理の終了を検出する。例えば、タイミング選定部３０４は、格納終了検出テーブル３４１を参照し、ホストコンピュータ２１０で動作するＯＳ２１１またはアプリケーション２１２がデータをファイル単位で格納する場合はファイルのクローズ要求、オブジェクト単位で格納する場合はオブジェクトの格納終了を示すメッセージを検出する。あるいは、セッションの接続の終了や切断等の格納処理の終了時に行われる処理、操作、あるいは、メッセージを検出する。そして、格納が終了したデータに対応する更新履歴管理テーブル３０５のエントリについて、格納終了の状態に変更する。また、タイミング選定部３０４は、更新履歴管理テーブル３０５の各エントリに格納された、各データの最終更新時刻を参照して、一定の時間経過をしているデータを格納処理が終了したと判断して、格納終了の状態に変更する。
【００５０】
更新履歴管理テーブル３０５は、記憶媒体２４０に格納されたデータのうち、格納処理の途中の各データに対して、格納処理が終了しているかを表す情報、および最終更新時刻を記録する。
【００５１】
断片化評価部３０６は、格納が終了したデータについて、断片化状態管理テーブル３０３の情報を参照して再配置を行うべきか判定する。断片化評価部３０６は、断片化評価テーブル３６１を用いて、断片化状態管理テーブル３０３における、格納が終了したデータに対応するエントリからデータサイズおよび混在データサイズを参照して、断片化の度合を表す指標値を計算する。
【００５２】
再配置指示部３０７は、断片化評価部３０６により計算された指標値を用いて、断片化の度合が事前に定めた基準値を超える場合は再配置による断片化解消が必要と判定して、再配置制御部３３０を通じてデータの再配置処理を実施する。なお、再配置指示部３０７は、再配置評価テーブルを用いて、ＧＣによるデータの移動量の削減期待値を再配置の効果として、再配置によって発生する記憶媒体２４０に対するWriteデータ量、即ちデータサイズと比較して、再配置の効果の方が大きい場合に再配置を実施してもよい。この場合、再配置指示部３０７は、再配置の効果をより正確に評価するために、断片化の度合を表す指標値の計算に用いた、データサイズおよび混在データサイズを用いて、データに対して再配置を実施した場合に削減される、ＧＣによるデータの移動量の削減期待値を算出する。
【００５３】
なお、上記断片化評価部３０６および再配置指示部３０７は、断片化状態評価部として統合的に機能してもよい。
【００５４】
（断片化状態管理テーブル）
図４Ａは、本実施形態に係る断片化状態管理テーブル３０３の構成を示す図である。断片化状態管理テーブル３０３は、記憶媒体２４０の現在の総Write量を管理する総Write量管理テーブル４１０と、格納処理の途中の各データに対してエントリを保持する格納エントリテーブル４２０と、を有する。
【００５５】
総Write量管理テーブル４１０は、記憶媒体２４０の現在の総Write量４１１を管理する。総Write量４１１は、記憶媒体２４０が複数存在する場合は、各記憶媒体２４０に対して個別に管理する。
【００５６】
格納エントリテーブル４２０は、各エントリに対応するデータを一意に表すデータ識別子４２１に対応付けて、データサイズ４２２と、最終格納時Write量４２３、および、混在データサイズ４２４を記憶する。最終格納時Write量４２３は、各データが最後にWriteされた時点の記憶媒体２４０の総Write量を表す。混在データサイズ４２４は、各データの格納開始時から最後にWriteを行うまでの間に混在して格納されている混在データの量を表す。
【００５７】
なお、断片化状態管理テーブル３０３に格納されるデータの形式は、図４Ａに示した形式に限定されない。例えば、データ識別子４２１は、図４Ａでは記憶媒体２４０に対してファイル単位でデータを格納する形態を想定してファイル名を使用しているが、データを一意に識別可能な番号等の他の識別子を用いてもよい。また、データをファイルではなく連続したブロックに対して格納する形態を想定する場合、データ識別子４２１は、例えば先頭のＬＢＡによって示される。さらに、データサイズ４２２、最終格納時Write量４２３、混在データサイズ４２４、総Write量４１１は、図４ＡではＫＢ(キロバイト)単位で表されているが、他の容量単位を用いてもよい。
【００５８】
（更新履歴管理テーブル）
図４Ｂは、本実施形態に係る更新履歴管理テーブル３０５の構成を示す図である。
【００５９】
更新履歴管理テーブル３０５は、格納処理の途中の各データに対してエントリを持つ。各エントリは、エントリに対応するデータを一意に表すデータ識別子４３１と、データの格納処理が終了したことを示す格納終了フラグ４３２と、データに対するWriteが最後に行われた時刻を示す最終更新時刻４３３とを記憶する。
【００６０】
なお、更新履歴管理テーブル３０５に格納されるデータの形式は、図４Ｂに示した形式に限定されない。例えば、データ識別子４３１は、図４Ｂでは記憶媒体２４０に対してファイル単位でデータを格納する形態を想定してファイル名を使用しているが、断片化状態管理テーブル３０３におけるデータ識別子４２１と同様に、データを一意に識別可能な他の識別子を用いてもよい。また、格納終了フラグ４３２は、図４Ｂでは各エントリに対応するデータの格納が終了した場合に1となるフラグの形式であるが、他の形式であってもよい。各データの格納が終了すると同時に更新履歴管理テーブル３０５のエントリを必ず削除する場合は、格納終了フラグ４３２を省略してもよい。
【００６１】
なお、図４Ｂの更新履歴管理テーブル３０５は、図４Ａの断片化状態管理テーブル３０３と分割されているが、これらは単体のテーブルで構成されていてもよい。
【００６２】
（格納終了検出テーブル）
図４Ｃは、本実施形態に係る格納終了検出テーブル３４１の構成を示す図である。格納終了検出テーブル３４１は、タイミング選定部３０４において、断片化の度合いを評価して再配置を指示するタイミングを選定するために使用される。
【００６３】
格納終了検出テーブル３４１は、各エントリの一連のデータの格納終了を検出するための条件である、ファイルのクローズ要求４４１と、格納の終了指示４４２と、記憶媒体２４０とのアクセス終了４４３と、最終書き込みからの時間経過が閾値Ｔhを超えた場合４４４と、を記憶する。なお、アクセス終了４４３としては、セッションの切断やコネクションの切断などを含む。
【００６４】
（断片化評価テーブル）
図４Ｄは、本実施形態に係る断片化評価テーブル３６１の構成を示す図である。断片化評価テーブル３６１は、断片化評価部３０６において、タイミング選定部３０４が選定したタイミングで断片化の度合いを評価するために使用される。
【００６５】
断片化評価テーブル３６１は、各エントリのデータ識別子４５１に対応付けて、格納終了フラグ４５２と、データサイズ（Ｄ）４５３と、混合データサイズ（Ｍ）４５４と、断片化の度合いを表わす指標値｛α＝Ｍ／（Ｄ＋Ｍ）｝４５５と、を記憶する。
【００６６】
（再配置評価テーブル）
図４Ｅは、本実施形態に係る再配置評価テーブル３７１の構成を示す図である。再配置評価テーブル３７１は、再配置指示部３０７において、タイミング選定部３０４が選定したタイミングで再配置を指示するか否かを判定するために使用される。
【００６７】
再配置評価テーブル３７１は、更新または削除までの経過時間と指標値αを考慮した、ＧＣの回数の期待値Ｎ４６１と、再配置処理をしない場合の、ＧＣによって移動する合計サイズの期待値（Ｅ０=Ｄ×Ｎ)４６２と、を記憶する。また、再配置評価テーブル３７１は、再配置処理をした場合の、ＧＣによって移動する合計サイズの期待値（Ｅ)４６３と、再配置処理によるＧＣのアクセス削減量(Ｂ＝Ｅ０−Ｅ）４６４と、を記憶する。また、再配置評価テーブル３７１は、再配置処理のWrite量（Ａ)４６５と、Write量の比較(Ａ−Ｂ)４６６と、を記憶する。そして、再配置評価テーブル３７１は、再配置処理の開始または中止の判定結果４６７である、再配置開始指示（A-B＜0）または再配置中止指示（A-B≧0）を記憶する。
【００６８】
《ホストコンピュータのハードウェア構成》
図５は、本実施形態に係る記憶制御部２２０を含むホストコンピュータ２１０のハードウェア構成を示すブロック図である。なお、図５においては、記憶制御部２２０はホストコンピュータ２１０のソフトウェア処理として図示するが、記憶制御部２２０を、ホストコンピュータ２１０とは独立したワンチップのコンピュータで実現してもよい。
【００６９】
図５で、ＣＰＵ(Central Processing Unit)５１０は演算制御用のプロセッサであり、プログラムを実行することで図３Ａおよび図３Ｂの記憶制御部２２０の機能構成部を実現する。ＲＯＭ(Read Only Memory)５２０は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、通信制御部５３０は、ネットワーク２５０を介して記憶媒体２４０と通信する。なお、ＣＰＵ５１０は１つに限定されず、複数のＣＰＵであっても、あるいは画像処理用のＧＰＵ(Graphics Processing Unit)を含んでもよい。また、通信制御部５３０は、ＣＰＵ５１０とは独立したＣＰＵを有して、ＲＡＭ(Random Access Memory)５４０の領域に送受信データを書き込みあるいは読み出しするのが望ましい。また、ＲＡＭ５４０とストレージ５５０との間でデータを転送するＤＭＡＣ(Direct Memory Access Controller)を設けるのが望ましい（図示なし）。さらに、入出力インタフェース５６０は、ＣＰＵ５１０とは独立したＣＰＵを有して、ＲＡＭ５４０の領域に入出力データを書き込みあるいは読み出しするのが望ましい。したがって、ＣＰＵ５１０は、ＲＡＭ５４０にデータが受信あるいは転送されたことを認識してデータを処理する。また、ＣＰＵ５１０は、処理結果をＲＡＭ５４０に準備し、後の送信あるいは転送は通信制御部５３０やＤＭＡＣ、あるいは入出力インタフェース５６０に任せる。
【００７０】
ＲＡＭ５４０は、ＣＰＵ５１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ５４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。論理アドレス５４１は、ＯＳ２１１またはアプリケーション２１２から記憶媒体２４０にアクセスしたアドレスである。物理アドレス５４２は、論理アドレス５４１から変換された記憶媒体２４０にアクセスするためのアドレスである。断片化評価テーブル３６１は、図４Ｄで示した断片化の度合いを評価するために使用されるテーブルである。再配置評価テーブル３７１は、図４Ｅで示した再配置を指示するか否かを判定するために使用されるテーブルである。読み出し情報５４５は、ＯＳ２１１またはアプリケーション２１２からの要求に基づき記憶媒体２４０からReadした情報である。書き込み情報５４６は、ＯＳ２１１またはアプリケーション２１２からの要求に基づき記憶媒体２４０にWriteする情報である。入出力データ５４７は、入出力インタフェース５６０を介して入出力されるデータである。送受信データ５４８は、通信制御部５３０を介して送受信されるデータである。アプリケーション使用領域５４９は、記憶制御以外の処理でアプリケーションが使用するエリアである。
【００７１】
ストレージ５５０には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。論理アドレス／物理アドレス変換テーブル５５１は、ＯＳ２１１またはアプリケーション２１２からアクセス要求した論理アドレス５４１を、記憶媒体２４０にアクセスする物理アドレス５４２に変換するテーブルであり、アドレス空間の対応に従って変化する。断片化状態管理テーブル３０３は、図４Ａに図示した構成のテーブルである。更新履歴管理テーブル３０５は、図４Ｂに図示した構成のテーブルである。格納終了検出テーブル３４１は、図４Ｃで示した再配置を開始するタイミングを選定するために使用されるテーブルである。
【００７２】
ストレージ５５０には、以下のプログラムが格納される。ＯＳ２１１は、本ホストコンピュータ２１０の全体を制御する基礎プログラムである。アプリケーション２１２は、現在、本ホストコンピュータ２１０が実行中のプログラムである。記憶制御プログラム５５２は、ＯＳ２１１やアプリケーション２１２からの記憶媒体２４０へのアクセスを受けて、本実施形態のアクセス制御を実現するプログラムである。Read制御モジュール５５３は、記憶制御プログラム５５２における、記憶媒体２４０からのReadを制御するモジュールである。Write制御モジュール５５４は、記憶制御プログラム５５２における、記憶媒体へのWriteを制御するモジュールである。断片化処理モジュール５５５は、断片化状態を監視して、選定されたタイミングで断片化状態を解消するために物理アドレスにおける記憶領域の再配置を行なうモジュールである。断片化処理モジュール５５５には、タイミング選定モジュール、断片化評価モジュール、再配置指示モジュール、再配置制御モジュールなどが含まれる。
【００７３】
入出力インタフェース５６０は、入出力機器との入出力データをインタフェースする。入出力インタフェース５６０には、表示部５６１、操作部５６２、が接続される。また、入出力インタフェース５６０には、さらに、記憶媒体２４０が接続されてもよい。さらに、音声出力部であるスピーカや、音声入力部であるマイク、あるいは、ＧＰＳ位置判定部が接続されてもよい。
【００７４】
なお、図５のＲＡＭ５４０やストレージ５５０には、ホストコンピュータ２１０が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
【００７５】
《記憶制御部の処理手順》
図６は、本実施形態に係る記憶制御部２２０の処理手順を示すフローチャートである。このフローチャートは、図５のＣＰＵ５１０がＲＡＭ５４０を使用して実行し、図３Ａおよび図３Ｂの機能構成部を実現する。
【００７６】
ホストコンピュータ２１０の記憶制御部２２０は、ステップＳ６１１において、ＯＳ２１１またはアプリケーション２１２からのRead要求であるか否かを判定する。Read要求であれば、記憶制御部２２０は、ステップＳ６１３において、記憶媒体２４０からのRead処理を実行する。Read要求でなければ、記憶制御部２２０は、ステップＳ６２１において、ＯＳ２１１またはアプリケーション２１２からのWrite要求であるか否かを判定する。Write要求であれば、記憶制御部２２０は、ステップＳ６２３において、記憶媒体２４０へのWrite処理を実行する。Read要求でなくWrite要求でない場合、記憶制御部２２０は、ステップＳ６３１において、選定された断片化判定タイミングであるか否かを判定する。選定された断片化判定タイミングであれば、記憶制御部２２０は、ステップＳ６３３において、断片化制御処理を実行する。
【００７７】
（Ｒｅａｄ処理）
図７は、本実施形態に係るＲｅａｄ処理（Ｓ６１３）の手順を示すフローチャートである。図７は、図６のステップＳ６１３において、例えば、ＯＳからRead要求を受け取り、要求されたデータを返す手順である。
【００７８】
記憶制御部２２０のアクセス実行部３１０は、ホストコンピュータ２１０で動作するソフトウェアやＯＳからのRead要求を受け取ると、記憶媒体２４０に対して要求先のアドレスについてデータのReadを行い、アクセス元のソフトウェアやＯＳに結果を返して処理を終了する（ステップＳ７０１）。
【００７９】
（Ｗｒｉｔｅ処理）
図８Ａおよび図８Ｂは、本実施形態に係るＷｒｉｔｅ処理（Ｓ６２３）の手順を示すフローチャートである。図８Ａおよび図８Ｂは、例えば、図６のステップＳ６２３において、ＯＳからWrite要求を受け取り、Writeキュー３１１に格納するまでの手順である。
【００８０】
記憶制御部２２０のアクセス実行部３１０は、ホストコンピュータ２１０で動作するソフトウェアやＯＳからのWrite要求を受け取ると、再配置開始部３２０の格納監視部３０２に対してWrite要求の情報を伝える（ステップＳ８０１）。
【００８１】
再配置開始部３２０の格納監視部３０２は、記憶媒体２４０に対してWrite要求が実行状態であることを、再配置制御部３３０に伝える（ステップＳ８０３）。格納監視部３０２は、断片化状態管理テーブル３０３のデータ識別子４２１を参照して、Write要求先と照合することで、アクセス実行部３１０が受け取ったWrite要求に対応するエントリを特定する（ステップＳ８０５）。Write要求に対応するエントリが存在しない場合（ステップＳ８０７のＮＯ判定）、格納監視部３０２は断片化状態管理テーブル３０３に、アクセス実行部３１０が受け取ったWrite要求に対応するエントリを新規に作成する（ステップＳ８０９）。格納監視部３０２は、ステップＳ８０９において作成したエントリのデータサイズ４２２をWrite要求のサイズ、混在データサイズ４２４を“０”と初期化して、断片化状態管理テーブル３０３に記録する（ステップＳ８１１）。その後、ステップＳ８１７以降を実行する。
【００８２】
Write要求に対応するエントリが存在する場合（ステップＳ８０７のＹＥＳ判定）、格納監視部３０２は、断片化状態管理テーブル３０３におけるWrite要求に対応するエントリのデータサイズ４２２を、Write要求のサイズを加えた値に更新する（ステップＳ８１３）。格納監視部３０２は、断片化状態管理テーブル３０３の最終格納時Write量４２３、および総Write量４１１を参照し、前回同一データに対するWriteが行われてから記憶媒体２４０に書き込まれた総データ量、すなわち混在データのサイズを計算する（ステップＳ８１５）。なお、格納監視部３０２は混在データのサイズから、データの断片化に関係しないデータの容量が存在する場合は、減算を行う。例えば、記憶媒体２４０が記憶素子にNANDフラッシュを用いたＳＳＤである場合、ＳＳＤの内部でNANDフラッシュに対してEraseを行う記憶領域の単位のサイズから、混在データに含まれる、Erase単位の記憶領域数の期待値を求める。そして断片化状態管理テーブル３０３の混在データサイズ４２４を、混在データのサイズから、求められた期待値分のErase単位の容量を減算した値とする。
【００８３】
格納監視部３０２は、断片化状態管理テーブル３０３の総Write量４１１に、アクセス実行部３１０が受け取ったWrite要求のサイズを加算する。また、格納監視部３０２は、アクセス実行部３１０が受け取ったWrite要求に対応する断片化状態管理テーブル３０３のエントリについて、最終格納時Write量４２３を、現在の総Write量４１１の値に更新する（ステップＳ８１７）。
【００８４】
格納監視部３０２は、更新履歴管理テーブル３０５のデータ識別子４３１を参照して、Write要求先と照合することで、アクセス実行部３１０が受け取ったWrite要求に対応するエントリを特定する（ステップＳ８１９）。Write要求に対応するエントリが存在し新規作成が必要でない場合（ステップＳ８２１のＮＯ判定）、ステップＳ８２５以降を実行する。Write要求に対応するエントリが存在せず新規作成が必要な場合（ステップＳ８２１のＹＥＳ判定）、格納監視部３０２は更新履歴管理テーブル３０５に、アクセス実行部３１０が受け取ったWrite要求に対応するエントリを新規に作成する（ステップＳ８２３）。
【００８５】
格納監視部３０２は、ステップＳ８２３で作成したエントリの格納終了フラグ４３２を“０”、最終更新時刻４３３を現在時刻として更新履歴管理テーブル３０５に記録する（ステップＳ８２５）。アクセス実行部３１０は、ステップＳ８０１においてホストコンピュータ２１０で動作するソフトウェアやＯＳから受け取ったWrite要求を、記憶媒体２４０に対するWriteキュー３１１に格納して処理を終了する（ステップＳ８２７）。
【００８６】
以上のステップＳ８０１からＳ８２７までの処理を行い、ホストコンピュータ２１０で動作するソフトウェアやＯＳからWrite要求を受け取り、Writeキュー３１１に格納する動作が完了する。ステップＳ８０１からＳ８２７の処理における処理の順序は、必ずしも図８Ａおよび図８Ｂに示した順序である必要はない。例えば、ステップＳ８０１からＳ８１７、ステップＳ８１９からＳ８２５、およびステップＳ８２７の３つの処理は、同時期、あるいは互いに実行順序を入れ替えてもよい。また、ステップＳ８０３の処理は、ステップＳ８０５からＳ８１７までの任意のステップの直後、もしくは同時に行ってもよい。
【００８７】
（断片化制御処理）
図９Ａおよび図９Ｂは、本実施形態に係る断片化制御処理（Ｓ６３３）の手順を示すフローチャートである。本実施形態に係る断片化制御処理は、各データに対する格納処理の終了を検出し、再配置処理が必要であるか判定を行い、再配置制御部３３０が再配置処理を開始する手順である。
【００８８】
再配置開始部３２０のタイミング選定部３０４は、格納処理が終了したか否かを判定して、更新履歴管理テーブル３０５の対応するエントリに含まれる格納終了フラグ４３２を“１”にセットする（ステップＳ９０１）。例えば、タイミング選定部３０４は、格納終了検出テーブル３４１を参照し、アクセス実行部３１０においてホストコンピュータ２１０で動作するソフトウェアやＯＳによる格納処理の終了動作を受け取ったことを検出した場合に、格納処理が終了したと判定する。また、更新履歴管理テーブル３０５の各データに対応するエントリの最終更新時刻４３３を参照して、最後のWriteから事前に定めた一定時間が経過していた場合に、格納処理が終了したと判定する。
【００８９】
タイミング選定部３０４は、断片化評価部３０６に対してステップＳ９０１において格納終了を検出したデータの情報を伝えて、断片化評価部３０６の処理を開始させる（ステップＳ９０３）。断片化評価部３０６は、格納が終了したデータに対応する断片化状態管理テーブル３０３のエントリからデータサイズ４２２および混在データサイズ４２４を参照して、断片化の度合を表す指標値を計算する。断片化の度合を表す指標値は、例えば、参照したデータサイズ４２２をＤ、混在データサイズ４２４をＭとして、混在データのサイズの割合Ｍ／（Ｄ＋Ｍ）として求められる（ステップＳ９０５）。
【００９０】
再配置指示部３０７は、再配置評価テーブル３７１を使用して、断片化評価部３０６がステップＳ９０５で求めた断片化の度合を表す指標値から、データの再配置処理を実施した場合の効果を算出する（ステップＳ９０７）。再配置処理の効果は、データが再配置されたことによって、データが更新、または削除されるまでの間に、記憶媒体２４０の内部でＧＣによって移動されるデータの合計サイズに関する削減量として表される。再配置指示部３０７は、ＧＣによって移動されるデータの合計サイズに関する期待値を、例えば１回あたりのＧＣで移動されるデータ量をデータサイズ４２２と仮定して、データサイズと、データが更新、削除されるまでの間にＧＣによって回収される回数の期待値との積によって計算する。なお、ＧＣによって回収される回数の期待値は、データが更新、削除されるまでの時間と、ステップＳ９０５で求めた断片化の度合を表す指標値とが考慮されて、算出される。つまり、再配置指示部３０７は、再配置処理を行った場合の合計サイズの期待値をＥ、再配置処理を行わなかった場合の合計サイズの期待値をＥ０とした場合に、再配置処理による効果を合計サイズの期待値の差、つまり（Ｅ０−Ｅ）によって、データの再配置処理を実施した場合の効果を計算できる。また、再配置処理によってＧＣによるデータ移動量が“０”になると仮定して、再配置処理の効果をＥ０と計算できる。
【００９１】
再配置指示部３０７は、ステップＳ９０７において求めたデータの再配置処理の効果と、再配置処理によって発生する記憶媒体２４０に対するデータのWrite量とを比較する（ステップＳ９０９）。具体的には、記憶媒体２４０におけるＧＣに伴うデータ移動の削減量である（Ｅ０−Ｅ）と、データの再配置によって発生する記憶媒体２４０に対するWriteサイズＤとの大小を比較する。
【００９２】
ステップＳ９０１において格納終了を検出したデータに関する再配置処理の効果が、再配置によって発生する記憶媒体２４０のWrite量以下である場合（ステップＳ９１１のＮＯ判定）、再配置指示部３０７は、再配置処理の開始指示を行わずに終了する。
【００９３】
ステップＳ９０１において格納終了を検出したデータに関する再配置処理の効果が、再配置によって発生する記憶媒体２４０のWrite量を上回る場合（ステップＳ９１１のＹＥＳ判定）、再配置指示部３０７は、再配置制御部３３０に対して格納終了を検出したデータの再配置処理を指示する（ステップＳ９１３）。再配置制御部３３０は、格納監視部３０２に問い合わせて記憶媒体２４０に対するWrite要求が停止状態となるまで待機する（ステップＳ９１５）。再配置制御部３３０は、アクセス実行部３１０に対してステップＳ９０１において格納終了を検出したデータを記憶媒体２４０から読み出すためのRead要求、および、再配置に必要なWrite要求の実行を指示する（ステップＳ９１７）。アクセス実行部３１０は、再配置制御部３３０から指示された再配置のためのWrite要求を、Writeキュー３１１を経由せずに、再配置制御部３３０から中断、もしくは、中止や一時停止の指示がない限り優先的に実行する。
【００９４】
アクセス実行部３１０がステップＳ９１７において指示されたRead要求、Write要求を全て完了すると、格納監視部３０２を通じて断片化状態管理テーブル３０３、および、更新履歴管理テーブル３０５における、再配置処理に対応するエントリを削除して、再配置処理を終了する（ステップＳ９１９）。
【００９５】
以上のステップＳ９０１からＳ９１９までの処理を行い、各データに対する格納処理の終了を検出し、再配置処理が必要であるか判定を行い、再配置制御部３３０が再配置処理を開始する動作が完了する。ステップＳ９０１からＳ９１９の処理における処理の順序は、必ずしも図９Ａおよび図９Ｂに示した順序である必要はない。例えば、ステップＳ９０１の処理は、ステップＳ９０３以降の処理と並列に、または順番を入れ替えて実行してもよい。また、ステップＳ９０７およびＳ９０９において、データの断片化状態の評価を再配置処理によって削減される記憶媒体２４０内部のWriteデータ量の期待値によって行っているが、例えばステップＳ９０５で求められる各データの断片化の度合を表す指標値を用いて、事前に定めた断片化の基準値との比較を行ってもよい。加えて、ステップＳ９１７において、再配置制御部が指示する、再配置を行うデータに関する記憶媒体からのＲｅａｄのみを、ステップＳ９１３の直後に行ってもよい。さらに、ステップＳ９１９における更新履歴管理テーブル３０５の削除は、ステップＳ９０３以降の任意の時期に行ってもよい。
【００９６】
本実施形態によれば、記憶媒体のアクセス性能の向上および長寿命化を図ると共に、複数の物理アドレス領域における断片化を減少するための再配置処理を開始する適切なタイミングが考慮して、再配置処理の頻繁な発生を抑えるので、断片化の増大や通常のWrite処理の遅延を抑えることができる。すなわち、ＳＳＤに対して並列に格納されたことによって内部のNANDフラッシュ上に断片化された状態で格納されたデータの集合に対して、適切なデータの集合および適切な時期を選択して再配置処理を行う。これにより、ＳＳＤ内部のＧＣ処理によって移動されるデータの集合の量を効果的に削減し、再配置によるＳＳＤの性能向上、長寿命化の効果を高めることが可能である。
【００９７】
［第３実施形態］
次に、本発明の第３実施形態に係る記憶制御装置を記憶制御部としてホストコンピュータ内に含む情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態と比べると、記憶制御装置が断片化解消の再配置処理中に、ホストコンピュータ２１０で動作するソフトウェアやＯＳによる新たなWrite要求を受けた場合に、再配置処理を中止または中断するか否かを判定する点で異なる。その他の構成および動作は、第２実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【００９８】
ＳＳＤに対するデータの再配置は、再配置対象のデータ以外のWriteを途中に挟まずに、連続して行う必要がある。ＳＳＤに対するデータの再配置処理の間に、外部からのWriteデータが格納されると、外部からのWriteデータによって再配置処理を行っているデータが断片化されるため、再配置によるＧＣのデータ移動量の削減効果が低下する。しかし、再配置処理の間に行われる外部からのWrite要求を、再配置の効果の低下を防ぐために単純に停止した場合、性能の低下につながる。断片化を減少させる再配置処理中にホストコンピュータから新たなWrite要求があった場合に、Write要求への応答が遅延し、引いてはWriteエラーとなってしまう。よって、これらの問題が可能な限り発生しないように、ＳＳＤ外部からのWrite要求と再配置処理が同時に行われることを避ける必要がある。
【００９９】
なお、本実施形態においては、Writeキュー３１１に格納されたWrite要求は、再配置制御部３３０からのWrite要求実行指示によって実行される。
【０１００】
《記憶制御装置の機能構成》
本実施形態に係る記憶制御装置としての記憶制御部１０２０の機能構成は、図３Ａと同様である。しかしながら、本実施形態においては、再配置制御部３３０が再配置処理中に、ホストコンピュータ１２１０で動作するソフトウェアやＯＳによる新たなWrite要求を受けた場合に、再配置処理を中止または中断するか否かを判定する。なお、本実施形態において、再配置開始部３２０の構成は第２実施形態の構成に限定されず、所定の断片化条件で再配置の開始を指示する構成であればよい。
【０１０１】
（再配置制御部）
図１０は、本実施形態に係る再配置制御部３３０の機能構成を示すブロック図である。
【０１０２】
再配置制御部３３０は、Writeキュー情報取得部１００１と、再配置処理記憶部１００２と、再配置完了予測部１００３と、Write完了時刻予測部１００４と、を有する。また、再配置制御部３３０は、再配置処理評価部１００５と、優先処理判定部１００６と、再配置処理制御部１００７と、Write要求制御部１００８と、を有する。
【０１０３】
Writeキュー情報取得部１００１は、アクセス実行部３１０からWriteキュー３１１の情報を取得する。再配置処理記憶部１００２は、再配置開始部３２０から再配置処理の開始を指示されたデータの情報を記憶する。再配置完了予測部１００３は、現在実行中の再配置処理の完了時間を予測する。Write完了時刻予測部１００４は、現在実行中の再配置処理の完了時間と、Writeキュー３１１に保持されているWrite要求の処理予測時間と、から全Write要求の完了時刻を予測する。
【０１０４】
再配置処理評価部１００５は、再配置指示部３０７の再配置評価テーブル３７１と類似の再配置評価テーブル１０５１を有し、現在実行中の再配置処理の効果を評価する。優先処理判定部１００６は、優先処理判定テーブル１０６１を有し、Write完了時刻予測部１００４が予測したWriteキュー３１１の最後の処理時刻と、再配置処理評価部１００５が評価した現在実行中の再配置処理の効果とを参照して、現在実行中の再配置処理を維持するか、中止または中断するかを判定する。
【０１０５】
再配置処理制御部１００７は、再配置処理記憶部１００２に記憶されたデータの情報に基づいて再配置の開始をアクセス実行部３１０に指示し、再配置処理中の新たなWrite要求があった場合には、優先処理判定部１００６の判定結果に従って再配置処理の維持か、中止または中断かをアクセス実行部３１０に指示する。Write要求制御部１００８は、再配置処理中の新たなWrite要求があった場合に、優先処理判定部１００６の判定結果に従ってWrite要求の再配置処理完了までの待機か、再配置処理の中止または中断後にWrite要求の実行をアクセス実行部３１０に指示する。
【０１０６】
（他の機能構成例）
例えば、再配置制御部３３０は、図１０に示すWrite要求待機制御部と、再配置処理部として機能するとも考えられる。この場合、Write要求待機制御部と再配置処理部との処理は以下のようになる。
【０１０７】
再配置処理部は、再配置を指示されたデータについて、記憶媒体２４０から読み出すためのRead要求を行うようにアクセス実行部３１０に対して指示する。また、Read要求によって読み出されたデータを記憶媒体２４０に再配置するためのWrite要求の発行をアクセス実行部３１０に対して指示することで、再配置処理を実施する。記憶媒体２４０からのデータの読み出しは、記憶媒体２４０に対して直接Read要求を行う以外に、不図示の記憶媒体２４０に対するキャッシュメモリに対して要求を行うことでも代用できる。
【０１０８】
また、Write要求待機制御部は、再配置処理部がデータに対する再配置処理を実行中に、ホストコンピュータ２１０で動作するソフトウェアやＯＳから記憶媒体２４０に対して行われるデータのWrite要求について、アクセス実行部３１０のWriteキュー３１１において待機させたWrite要求の実行を制御する。Write要求待機制御部は、再配置処理の予測される完了時刻から、待機中のWrite要求を再配置処理の直後に実行した場合の完了時刻を予測する。予測された完了時刻から算出される、Write要求の応答時間が事前に定められた基準値を上回ると、Write要求待機制御部は、待機中の記憶媒体２４０に対するWrite要求を、Writeキュー３１１で待機中のWrite要求の応答時間が事前に定められた基準値以内となるまで順番に実行する。また、Write要求待機制御部は、再配置処理が完了する前に待機中のWrite要求の実行を再開した場合、実行を再開したWrite要求を考慮して再配置処理の効果を再計算し、再配置処理の効果が事前に定めた基準を下回った場合は、再配置処理部を通じて実施中の再配置処理を中止する。
【０１０９】
（再配置評価テーブル）
図１１Ａは、本実施形態に係る再配置評価テーブル１０５１の構成を示す図である。再配置評価テーブル１０５１は、再配置処理評価部１００５が、現在実行中の再配置処理の効果を評価するために使用される。なお、図１１Ａにおいて、図４Ｅと同様の要素には同じ参照番号を付して、説明を省略する。
【０１１０】
再配置評価テーブル１０５１は、Write要求の待機または実行、再配置処理の維持または中止を判定する第２条件１１６７である、“１”（A-B＜0）または“０”（A-B≧0）を記憶する。
【０１１１】
（優先処理判定テーブル）
図１１Ｂは、本実施形態に係る優先処理判定テーブル１０６１の構成を示す図である。優先処理判定テーブル１０６１は、優先処理判定部１００６が、Writeキュー３１１の最後の予測処理時刻と、現在実行中の再配置処理の効果とを参照して、現在実行中の再配置処理を維持するか、中止または中断するかを判定するために使用される。なお、優先処理判定テーブル１０６１には、Writeキュー３１１の最後の予測処理時刻の算出も示されている。
【０１１２】
優先処理判定テーブル１０６１は、ホストコンピュータ２１０で動作するソフトウェアやＯＳからWrite要求の応答遅延に基づく第１条件を導出する第１条件テーブル１１７０と、現在実行中の再配置処理を維持するか、中止または中断するかを判定する判定テーブル１１８０と、を含む。
【０１１３】
第１条件テーブル１１７０は、現在実行中の再配置の完了予測時間（Ｔ1）１１７１と、Writeキュー３１１の全Write要求の書き込み時間（Ｔ2）１１７２と、Writeキュー３１１最後の書き込みが完了する予測完了時刻（Ｔ1＋Ｔ2）１１７３と、を記憶する。また、第１条件テーブル１１７０は、Writeキュー３１１最後のWrite要求時刻と書き込みが完了する時刻との差である、予測遅延時間１１７４と、応答遅延閾値ＴA１１７５と、を記憶する。そして、第１条件テーブル１１７０は、優先処理判定のための第１条件１１７６である、“１”（ＴA＞予測遅延時間）または“０”（ＴA≦予測遅延時間）を記憶する。
【０１１４】
判定テーブル１１８０は、優先処理判定のための第１条件１１７６と、優先処理判定のための第２条件１１６７と、第１条件１１７６と第２条件１１６７とに基づく優先処理判定結果１１８８と、を記憶する。優先処理判定結果１１８８には、Write要求の待機または実行、再配置処理の維持または中止の判定結果を記憶する。
【０１１５】
《ホストコンピュータのハードウェア構成》
図１２は、本実施形態に係る記憶制御部１０２０を含むホストコンピュータ１２１０のハードウェア構成を示すブロック図である。なお、図１２において、図５と同様の構成要素には同じ参照番号を付して、説明は省略する。図１２においては、第２実施形態において使用されるテーブルやモジュールは、表示を簡略化ないしは省略している。
【０１１６】
ＲＡＭ１２４０には、再配置開始用テーブル１２４３と、再配置評価テーブル１０５１と、が記憶される。ストレージ１２５０には、再配置開始用テーブル１２５１と、優先処理判定テーブル１０６１と、が記憶される。
【０１１７】
また、ストレージ１２５０には、本実施形態の断片化処理モジュール１２５５が記憶される。断片化処理モジュール１２５５には、再配置開始モジュール、予測応答時間評価モジュール、再配置処理評価モジュール、および、優先処理判定モジュール、が含まれる。
【０１１８】
（再配置中のWrite要求処理）
図１３Ａおよび図１３Ｂは、本実施形態に係る記憶制御部１０２０における再配置中のWrite要求に対する処理手順を示すフローチャートである。このフローチャートは、図１２のＣＰＵ５１０がＲＡＭ１２４０を使用して実行し、図１０の機能構成部を実現する。
【０１１９】
再配置制御部３３０のWrite要求待機制御部に含まれるWriteキュー情報取得部１００１は、アクセス実行部３１０のWriteキュー３１１にWrite要求が格納されていない場合は、Write要求が格納されるまで待機する（ステップＳ１３０１）。再配置制御部３３０の再配置処理部に含まれる再配置処理記憶部１００２において、再配置制御部３３０が再配置処理を実行中であるか確認する（ステップＳ１３０３）。再配置制御部３３０が再配置処理を実行中でない場合（ステップＳ１３０５のＮＯ判定）、ステップＳ１３２３以降の処理を実行する。
【０１２０】
再配置制御部３３０が再配置処理を実行中である場合（ステップＳ１３０５のＹＥＳ判定）、Write完了時刻予測部１００４は、再配置完了予測部１００３から再配置処理の完了予測時刻（Ｔ1）を受け取る（ステップＳ１３０７）。Write完了時刻予測部１００４は、アクセス実行部３１０のWriteキュー３１１に待機しているWrite要求について、アクセスサイズの情報を参照して、全てのWrite要求を、再配置制御部３３０において実行中の再配置処理が完了した直後に実行した場合の完了予測時刻（Ｔ1＋Ｔ2）を計算する（ステップＳ１３０９）。
【０１２１】
優先処理判定部１００６は、ステップＳ１３０９で計算した完了予測時刻（Ｔ1＋Ｔ2）と、Writeキュー３１１で待機する最後尾のWrite要求が要求された時刻から、最後尾のWrite要求に関する予想応答時間を計算する（ステップＳ１３１１）。優先処理判定部１００６は、最後尾のWrite要求の予想応答時間が、事前に定めた基準時間（ＴA）未満である場合（ステップＳ１３１３のＹＥＳ判定）、新規Write要求の到着、もしくは再配置制御部３３０において実行中の再配置処理の完了まで待機した後（ステップＳ１３１５）、ステップＳ１３０３以降の処理を実行する。
【０１２２】
最後尾のWrite要求の予想応答時間が、事前に定めた基準時間（ＴA）以上である場合（ステップＳ１３１３のＮＯ判定）、再配置処理評価部１００５は、Writeキュー３１１の先頭に格納されたWrite要求を処理した場合の、再配置制御部３３０において実行中の再配置処理の効果を、図９ＡのステップＳ９０５からＳ９０９に示された手順と同様の手順にて再計算する（ステップＳ１３１７）。ステップＳ１３１７で計算された再配置処理の効果が、再配置を停止した際の効果を上回る場合（ステップＳ１３１９のＹＥＳ判定）、ステップＳ１３０３以降の処理を実行する。
【０１２３】
ステップＳ１３１７で計算された再配置処理の効果が、再配置を停止した際の効果以下である場合（ステップＳ１３１９のＮＯ判定）、優先処理判定部１００６は、再配置処理制御部１００７を介してアクセス実行部３１０に対して再配置処理の中止を指示する。そして、アクセス実行部３１０において実行中の再配置処理に対応するRead処理またはWrite処理を中断して、再配置処理を中止する（ステップＳ１３２１）。
【０１２４】
優先処理判定部１００６は、Write要求制御部１００８を介してアクセス実行部３１０に対してWriteキュー３１１に待機している先頭のWrite要求を実行するように指示して、アクセス実行部３１０は記憶媒体２４０に対してWrite要求を実行する（ステップＳ１３２３）。アクセス実行部３１０は、ステップＳ１３２３で実行したWrite要求の完了応答を、要求元のホストコンピュータ２１０で動作するソフトウェアやＯＳに通知してステップＳ１３０１以降の処理を実行する（ステップＳ１３２５）。
【０１２５】
以上のステップＳ１３０１からＳ１３２５までの処理を行い、アクセス実行部３１０を通じてWriteキュー３１１に格納された、ホストコンピュータ２１０で動作するソフトウェアやＯＳからの記憶媒体２４０に対するWrite要求を実行する動作が完了する。ステップＳ３１１における再配置処理の中止は、再配置処理を一時的に中断してWriteキュー３１１に待機しているWrite要求の実行を完了した後に、中断した再配置処理を再開する動作であってもよい。その場合、ステップＳ１３１７における再配置処理の効果の再計算について、再配置処理を一時的に中断した場合の効果を別途算出する。また、ステップＳ１３０７において、Write完了時刻予測部１００４が再配置完了予測部１００３から再配置処理の完了予測時刻を受け取る動作は、Write完了時刻予測部１００４や優先処理判定部１００６が断片化状態管理テーブル３０３を参照して直接完了予測時刻を計算する動作でもよい。
【０１２６】
本実施形態によれば、記憶媒体のアクセス性能の向上および長寿命化を図ると共に、断片化を減少させる再配置処理中にホストコンピュータから新たなWrite要求があった場合に、再配置処理の維持、中止または中断を判定することで、Write要求への応答が遅延し、引いてはWriteエラーとなることを防ぐことができる。すなわち、ＳＳＤに対して並列に格納されたことによって内部のNANDフラッシュ上に断片化された状態で格納されたデータの集合に対して、適切なデータの集合および適切な時期を選択して再配置処理を行う。これにより、ＳＳＤ内部のＧＣ処理によって移動されるデータの集合の量を効果的に削減し、再配置によるＳＳＤの性能向上、長寿命化の効果を高めることが可能である。
【０１２７】
［第４実施形態］
次に、本発明の第４実施形態に係る記憶制御装置を記憶制御部としてホストコンピュータ内に含む情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態および第３実施形態と比べると、再配置処理の開始タイミングおよび再配置処理中のWrite要求処理を共に行なう点で異なる。その他の構成および動作は、第２実施形態や第３実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１２８】
《記憶制御装置の機能構成》
図１４は、本実施形態に係る記憶制御装置としての記憶制御部１４２０の機能構成を示すブロック図である。なお、図１４において、図３Ｂ、図１０と同様の機能構成部には同じ参照番号を付して、説明は省略する。
【０１２９】
記憶制御部１４２０においては、再配置開始部３２０の格納監視部３０２および再配置指示部３０７が、再配置制御部３３０の再配置処理記憶部１００２に接続されている。なお、図１４においては、機能構成部が有するテーブル類は記載していないが、図３Ｂ、図１０と同様のテーブルを有するものである。
【０１３０】
本実施形態によれば、記憶媒体のアクセス性能の向上および長寿命化を図ると共に、複数の物理アドレス領域における断片化を減少するための再配置処理を開始する適切なタイミングを考慮して、再配置処理の頻繁な発生を抑えるので、断片化の増大や通常のWrite処理の遅延を抑えることができる。さらに、断片化を減少させる再配置処理中にホストコンピュータから新たなWrite要求があった場合に、再配置処理の維持、中止または中断を判定することで、Write要求への応答が遅延し、引いてはWriteエラーとなることを防ぐことができる。すなわち、ＳＳＤに対して並列に格納されたことによって内部のNANDフラッシュ上に断片化された状態で格納されたデータの集合に対して、適切なデータの集合および適切な時期を選択して再配置処理を行う。これにより、ＳＳＤ内部のＧＣ処理によって移動されるデータの集合の量を効果的に削減し、再配置によるＳＳＤの性能向上、長寿命化の効果を高めることが可能である。
【０１３１】
［第５実施形態］
次に、本発明の第５実施形態に係る記憶制御装置を記憶制御部としてホストコンピュータ内に含む情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態乃至第４実施形態と比べると、断片化が著しいと評価される領域へのWrite処理を代替するためのバッファを有する点で異なる。その他の構成および動作は、第２実施形態から第４実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１３２】
《情報処理システム》
図１５は、本実施形態に係る情報処理システム１５００の構成を示す図である。なお、図１５において、図２と同様の機能構成部には同じ参照番号を付して、説明を省略する。
【０１３３】
図１５の情報処理システム１５００は、バッファ１５６０を含む。バッファ１５６０は、記憶媒体２４０に対するWriteデータのうち、断片化頻度の高い領域に対するWrite要求に対応したデータを格納する。バッファ１５６０は、ＤＲＡＭ(Dynamic Random Access Memory)などの記憶媒体２４０より高性能な記憶媒体を用いる以外に、記憶媒体２４０と同様にＳＳＤを用いることも可能である。また、バッファ１５６０は、記憶媒体２４０の一部領域を割り当てた形でもよい。
【０１３４】
ホストコンピュータ１５１０は、第２乃至第４実施形態の処理に加えて、記憶媒体２４０またはバッファ１５６０へのWrite処理を制御する記憶制御部１５２０を有する。記憶制御部１５２０は、断片化が著しいと評価される領域へのWrite処理をバッファ１５６０に一次保存することで代替し、記憶媒体２４０へのWrite回数を削減することで、断片化の増大を防ぐ。
【０１３５】
本実施形態によれば、記憶媒体のアクセス性能の向上および長寿命化を図ると共に、断片化発生頻度の高い領域に対するWriteデータをバッファとして用意した記憶領域に格納して、あらかじめ断片化の発生頻度が高いと推定された領域への格納を回避することにより、さらに記憶媒体のアクセス性能の向上および長寿命化を図ることができる。
【０１３６】
［第６実施形態］
次に、本発明の第６実施形態に係る記憶制御装置を記憶制御部としてホストコンピュータ内に含む情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態乃至第５実施形態と比べると、記憶制御部が記憶媒体側にある点、あるいは、ネットワークを介してホストコンピュータの外部にある点で異なる。その他の構成および動作は、第２実施形態から第５実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１３７】
《情報処理システム》
図１６は、本実施形態に係る記憶制御部１６４３または１６２０を含む情報処理システム１６００の構成を示す図である。なお、図１６において、図２と同様の構成要素には同じ参照番号を付して、説明を省略する。
【０１３８】
図１６においては、ホストコンピュータ１６１０は本実施形態の記憶制御部を有しない。一例として、本実施形態の記憶制御部１６４３は、記憶媒体１６４０に搭載されている。また、他の例として、本実施形態の記憶制御部１６２０は、ネットワーク２５０を介して独立した装置として接続されている。かかる記憶制御部１６４３または１６２０は、ソフトウェアで実現されても、ワンチップのプロセッサで実現されてもよい。
【０１３９】
本実施形態によれば、記憶媒体のアクセス性能の向上および長寿命化を図ると共に、第２乃至第５実施形態のようにホストコンピュータによる処理に限定されず、記憶媒体への書き込みにおける領域の断片化状態を推定して、断片化状態を再配置により解消することで、記憶媒体のアクセス性能の向上、長寿命化を図ることができる。
【０１４０】
［他の実施形態］
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
【０１４１】
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する情報処理プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるＷＷＷ(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体（non-transitory computer readable medium）は本発明の範疇に含まれる。
【０１４２】
この出願は、２０１５年７月６日に出願された日本国特許出願  特願２０１５−１３５００２号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2017006674.tif 000003
【図２】
2017006674.tif 000004
【図３Ａ】
2017006674.tif 000005
【図３Ｂ】
2017006674.tif 000006
【図４Ａ】
2017006674.tif 000007
【図４Ｂ】
2017006674.tif 000008
【図４Ｃ】
2017006674.tif 000009
【図４Ｄ】
2017006674.tif 000010
【図４Ｅ】
2017006674.tif 000011
【図５】
2017006674.tif 000012
【図６】
2017006674.tif 000013
【図７】
2017006674.tif 000014
【図８Ａ】
2017006674.tif 000015
【図８Ｂ】
2017006674.tif 000016
【図９Ａ】
2017006674.tif 000017
【図９Ｂ】
2017006674.tif 000018
【図１０】
2017006674.tif 000019
【図１１Ａ】
2017006674.tif 000020
【図１１Ｂ】
2017006674.tif 000021
【図１２】
2017006674.tif 000022
【図１３Ａ】
2017006674.tif 000023
【図１３Ｂ】
2017006674.tif 000024
【図１４】
2017006674.tif 000025
【図１５】
2017006674.tif 000026
【図１６】
2017006674.tif 000027
【国際調査報告】
2017006674.tif 000028
2017006674.tif 000029
2017006674.tif 000030
2017006674.tif 000031