(57)【要約】【課題】一時的に保存が必要なデータに対して、一時保存部における安定した格納先領域の確保を実現すること。【解決手段】一時保存部に格納されるデータの格納先領域の確保を維持するか否かを判定する領域維持判定部と、データの格納先領域の確保を維持すると判定された場合、格納先領域へのデータの格納処理の有無に関わらず、所定タイミングでデータの格納先領域への上書きの指示、または、ダミーデータの格納先領域への格納の指示を繰り返す繰り返し部と、を備える。【選択図】  図１
2018005371.tif 000002
【特許請求の範囲】
【請求項１】
一時保存部に格納されるデータの格納先領域の確保を維持するか否かを判定する領域維持判定手段と、
前記データの格納先領域の確保を維持すると判定された場合、前記格納先領域への前記データの格納処理の有無に関わらず、所定タイミングで前記データの前記格納先領域への上書きの指示、または、ダミーデータの前記格納先領域への格納の指示を繰り返す繰り返し手段と、
を備える記憶制御装置。
【請求項２】
前記所定タイミングは、前記一時保存部を介して格納された総データ量が所定量増加したタイミングである、請求項１に記載の記憶制御装置。
【請求項３】
確保を維持すべき格納先領域と、前記格納先領域に対する前記データの格納処理を行なった時の総データ量とを対応付けて記憶する格納先記憶手段をさらに備え、
前記繰り返し手段は、現在の総データ量と前記データの格納処理を行なった時の総データ量との差が前記所定量になったか否かを判定する総データ量判定手段を有し、前記総データ量判定手段が前記総データ量の差が前記所定量になったと判定したタイミングで、前記データの前記格納先領域への上書きの指示、または、ダミーデータの前記格納先領域への格納の指示を行なう、請求項２に記載の記憶制御装置。
【請求項４】
前記所定量は、前記一時保存部の容量、または、前記一時保存部においてWriteデータの保存に使用可能な容量を使用する、請求項２または３に記載の記憶制御装置。
【請求項５】
前記Writeデータの保存に使用可能な容量は、前記一時保存部の容量より少ない所定の容量、または、前記Writeデータへのアクセス速度が遅くなることが検出された容量を含む、請求項４に記載の記憶制御装置。
【請求項６】
前記繰り返し手段は、前記差が小さい順に前記格納先領域をソートし、前記差が小さい順に前記データの前記格納先領域への上書きの指示、または、ダミーデータの前記格納先領域への格納の指示を行なう、請求項３乃至５のいずれか１項に記載の記憶制御装置。
【請求項７】
前記一時保存部に格納されるデータの格納先領域の確保を維持する指示を受け付ける受付手段をさらに備え、
前記領域維持判定手段は、前記受付手段がデータの格納先領域の確保を維持する指示を受け付けると、確保を維持すべき格納先領域と前記格納先領域に対する前記データの格納処理を行なった時の総データ量とを対応付けて前記格納先記憶手段に登録し、外部装置から前記格納先記憶手段に登録された前記格納先領域にWrite要求および削除要求がある場合、前記格納先領域に対応する前記総データ量を現在の総データ量に更新する、請求項３乃至６のいずれか１項に記載の記憶制御装置。
【請求項８】
前記受付手段は、データの格納先領域の確保の維持を解除する指示を受け付け、
前記領域維持判定手段は、前記受付手段がデータの格納先領域の確保の維持を解除する指示を受け付けると、前記格納先記憶手段の登録を削除する、請求項７に記載の記憶制御装置。
【請求項９】
一時保存部に格納されるデータの格納先領域の確保を維持するか否かを判定する領域維持判定ステップと、
前記データの格納先領域の確保を維持すると判定された場合、前記格納先領域への前記データの格納処理の有無に関わらず、所定タイミングで前記データの前記格納先領域への上書きの指示、または、ダミーデータの前記格納先領域への格納の指示を繰り返す繰り返しステップと、
を含む記憶制御方法。
【請求項１０】
一時保存部に格納されるデータの格納先領域の確保を維持するか否かを判定する領域維持判定ステップと、
前記データの格納先領域の確保を維持すると判定された場合、前記格納先領域への前記データの格納処理の有無に関わらず、所定タイミングで前記データの前記格納先領域への上書きの指示、または、ダミーデータの前記格納先領域への格納の指示を繰り返す繰り返しステップと、
をコンピュータに実行させる記憶制御プログラム。
【請求項１１】
記憶媒体と、
前記記憶媒体へのデータの格納先領域が確保された一時保存部と、
前記一時保存部において、前記データの格納先領域の確保を維持するよう指示する指示手段と、
前記データの格納先領域の確保を維持するよう指示された場合、前記格納先領域への前記データの格納処理の有無に関わらず、所定タイミングで前記データの前記格納先領域への上書きの指示、または、ダミーデータの前記格納先領域への格納の指示を繰り返す繰り返し手段と、
を備える情報処理システム。
【請求項１２】
前記指示手段は、ファイルの管理情報を含むメタデータ、または、データ処理の処理経過を保持するジャーナルを含むデータの格納先領域の確保を維持するよう指示する、請求項１１に記載の情報処理システム。
【請求項１３】
記憶媒体へのデータの格納先領域が確保された一時保存部において、ファイルの管理情報を含むメタデータ、または、データ処理の処理経過を保持するジャーナルを含むデータの格納先領域の確保を維持するよう指示する指示ステップと、
前記データの格納先領域の確保を維持するよう指示された場合、前記格納先領域への前記データの格納処理の有無に関わらず、所定タイミングで前記データの前記格納先領域への上書きの指示、または、ダミーデータの前記格納先領域への格納の指示を繰り返す繰り返しステップと、
を含む情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理方法、記憶制御装置、記憶制御方法および記憶制御プログラムに関する。
【背景技術】
【０００２】
上記技術分野において、特許文献１には、キャッシュにおいて、ループ全体の予測実行サイクル数がデータをプリフェッチするのに必要なサイクル数より大きければ、２つのループに分割してその間にプリフェッチ命令を挿入し、プリフェッチしたデータが使用される前にキャッシュから追い出されるのを防止する技術が開示されている。また、非特許文献１には、ＨＤＤおよびＳＳＤにおいて、連続的なデータに対するWriteが高速である性質を利用して一部の連続した記憶領域を追記形式のバッファとし使用し、バッファ以外の領域を仮想的な不揮発性記憶媒体とし使用し、バッファを用いて小さなサイズのランダムWriteデータを連続Writeに変換することでランダムWriteに伴う性能低下を抑制する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０００−２０７２２４号公報
【非特許文献】
【０００４】
【非特許文献１】Y. Hu and Q. Yang. DCD - Disk Caching Disk: A New Approach for Boosting I/O Performance. In Proceedings of the International Symposium on Computer Architecture, pages 169-178, 1996.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記文献に記載の技術では、一時的に保存が必要なデータに対して、バッファやキャッシュなどの一時保存部における安定した格納先領域の確保を実現することができなかった。
【０００６】
本発明の目的は、上述の課題を解決する技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明に係る記憶制御装置は、
一時保存部に格納されるデータの格納先領域の確保を維持するか否かを判定する領域維持判定手段と、
前記データの格納先領域の確保を維持すると判定された場合、前記格納先領域への前記データの格納処理の有無に関わらず、所定タイミングで前記データの前記格納先領域への上書きの指示、または、ダミーデータの前記格納先領域への格納の指示を繰り返す繰り返し手段と、
を備える。
【０００８】
上記目的を達成するため、本発明に係る記憶制御方法は、
一時保存部に格納されるデータの格納先領域の確保を維持するか否かを判定する領域維持判定ステップと、
前記データの格納先領域の確保を維持すると判定された場合、前記格納先領域への前記データの格納処理の有無に関わらず、所定タイミングで前記データの前記格納先領域への上書きの指示、または、ダミーデータの前記格納先領域への格納の指示を繰り返す繰り返しステップと、
を含む。
【０００９】
上記目的を達成するため、本発明に係る記憶制御プログラムは、
一時保存部に格納されるデータの格納先領域の確保を維持するか否かを判定する領域維持判定ステップと、
前記データの格納先領域の確保を維持すると判定された場合、前記格納先領域への前記データの格納処理の有無に関わらず、所定タイミングで前記データの前記格納先領域への上書きの指示、または、ダミーデータの前記格納先領域への格納の指示を繰り返す繰り返しステップと、
をコンピュータに実行させる。
【００１０】
上記目的を達成するため、本発明に係る情報処理システムは、
記憶媒体と、
前記記憶媒体へのデータの格納先領域が確保された一時保存部と、
前記一時保存部において、前記データの格納先領域の確保を維持するよう指示する指示手段と、
前記データの格納先領域の確保を維持するよう指示された場合、前記格納先領域への前記データの格納処理の有無に関わらず、所定タイミングで前記データの前記格納先領域への上書きの指示、または、ダミーデータの前記格納先領域への格納の指示を繰り返す繰り返し手段と、
を備えるである。
【００１１】
上記目的を達成するため、本発明に係る情報処理方法は、
記憶媒体へのデータの格納先領域が確保された一時保存部において、ファイルの管理情報を含むメタデータ、または、データ処理の処理経過を保持するジャーナルを含むデータの格納先領域の確保を維持するよう指示する指示ステップと、
前記データの格納先領域の確保を維持するよう指示された場合、前記格納先領域への前記データの格納処理の有無に関わらず、所定タイミングで前記データの前記格納先領域への上書きの指示、または、ダミーデータの前記格納先領域への格納の指示を繰り返す繰り返しステップと、
を含む。
【発明の効果】
【００１２】
本発明によれば、一時的に保存が必要なデータに対して、一時保存部における安定した格納先領域の確保を実現することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１実施形態に係る記憶制御装置の構成を示すブロック図である。
【図２】本発明の第２実施形態に係る記憶制御装置を含む情報処理システムの構成を示すブロック図である。
【図３】本発明の第２実施形態に係る記憶制御装置の機能構成を示すブロック図である。
【図４Ａ】本発明の第２実施形態に係る優先データ操作記憶部の構成を示す図である。
【図４Ｂ】本発明の第２実施形態に係る総格納データ量記憶部、置換時期判定基準データ量記憶部および優先データ管理テーブルの構成を示す図である。
【図５】本発明の第２実施形態に係る記憶制御装置のハードウェア構成を示すブロック図である。
【図６】本発明の第２実施形態に係る記憶制御装置の処理手順を示すフローチャートである。
【図７】本発明の第２実施形態に係るWrite処理の手順を示すフローチャートである。
【図８】本発明の第２実施形態に係る削除処理の手順を示すフローチャートである。
【図９】本発明の第２実施形態に係る優先データ領域の指定／解除処理の手順を示すフローチャートである。
【図１０】本発明の第２実施形態に係る優先データ領域維持処理の手順を示すフローチャートである。
【図１１】本発明の第３実施形態に係る優先データ操作記憶部および置換時期判定基準データ量記憶部の構成を示す図である。
【図１２】本発明の第４実施形態に係る記憶制御装置を含む情報処理システムの構成を示すブロック図である。
【図１３】本発明の第５実施形態に係る記憶制御装置を含む情報処理システムの構成を示すブロック図である。
【図１４】本発明の第６実施形態に係る記憶制御装置を含む情報処理システムの構成を示すブロック図である。
【発明を実施するための形態】
【００１４】
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素は単なる例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
【００１５】
以下、本明細書では特に断りのない限り、以下の記述を用いる。一時保存部とは、ホストコンピュータと記憶媒体との間にあって、ホストコンピュータから記憶媒体にWriteされたデータを一時的に保存するメモリであり、いわゆるバッファやキャッシュを含む。一時保存部は、不揮発性メモリであっても、電池などでデータが保持される揮発性メモリであってもよい。また、一時保存部は、ホストコンピュータ内あるいは記憶媒体内に設けられてもよく、ホストコンピュータや記憶媒体とは別の装置内に設けられてもよい。
【００１６】
［第１実施形態］
本発明の第１実施形態としての記憶制御装置１００について、図１を用いて説明する。記憶制御装置１００は、ホストコンピュータやＯＳなどからの記憶媒体のアクセスを制御する装置である。
【００１７】
図１に示すように、記憶制御装置１００は、領域維持判定部１０１と、繰り返し部１０２と、を含む。領域維持判定部１０１は、一時保存部１１０に格納されるデータの格納先領域１１１の確保を維持するか否かを判定する。繰り返し部１０２は、データの格納先領域１１１の確保を維持すると判定された場合、格納先領域１１１へのデータの格納処理の有無に関わらず、所定タイミングでデータの格納先領域１１１への上書きの指示、または、ダミーデータの格納先領域１１１への格納の指示を繰り返す。
【００１８】
本実施形態によれば、データの格納処理の有無に関わらず、所定タイミングで格納先領域への上書きの指示、または、ダミーデータの格納先領域への格納の指示を繰り返すので、一時的に保存が必要なデータに対して、一時保存部における安定した格納先領域の確保を実現することができる。
【００１９】
［第２実施形態］
次に、本発明の第２実施形態に係る記憶制御装置を含む情報処理システムについて説明する。本実施形態の情報処理システムにおいては、ホストコンピュータ側に記憶制御装置としての記憶制御部を有し、遠隔に接続された一時保存部において確保したい格納先領域に対して、所定タイミングでの上書きの指示、または、ダミーデータの格納の指示を繰り返すことにより、安定した格納先領域の確保を実現する。
【００２０】
まず、本実施形態の背景となる技術について説明する。なお、格納先となる記憶領域は、格納先領域に相当する。
【００２１】
《背景技術の説明》
計算機システムの性能向上、扱うデータ量の増加に伴い、不揮発性記憶媒体におけるデータの保存についても高速性が求められている。しかし、現在計算機システムで広く普及した不揮発性記憶媒体である、ＨＤＤ(Hard Disk Drive)、あるいは記憶素子にNAND Flashを用いたＳＳＤ(Solid State Drive)は、ＤＲＡＭ(Dynamic Random Access Memory)に比べてWrite性能が低いことが知られている。特に、小さなサイズのデータを格納するランダムWriteは、不揮発性記憶媒体の特性上大きなレイテンシを要する。そこで、不揮発性記憶媒体に対する１回あたりのWriteサイズを拡大し、Writeの頻度を削減することでWrite性能を補うために、ＤＲＡＭによるWriteデータのバッファが多くのシステムで用いられる。
【００２２】
一方で、ＤＲＡＭによるバッファは耐障害性の面で問題を抱える。例えば、計算機システムの電源等に障害が発生することで、保存データの消失が発生する。そのため、障害発生時の消失が許容されないデータについては、要求ごとに不揮発性記憶媒体にWriteを行い、正常に格納されたことを確認する必要がある。特に、信頼性が求められる計算機システムでは、障害発生後の正常復帰を保証するために、内部状態の変化をメタデータ、ジャーナル等の状態情報として不揮発性記憶媒体に保存する必要がある。また、計算機システムの状態情報以外に消失が許容されないデータについても、同様にデータの到着ごとに不揮発性記憶媒体にWriteを行う必要がある。
【００２３】
そこで、耐障害性を確保しつつバッファを適用するために、不揮発性記憶媒体に一時保存部であるキャッシュまたはバッファとして高速かつ不揮発性の記憶素子を内蔵する方法が用いられる。記憶媒体に内蔵される不揮発性の記憶素子として、例えば、バッテリーやキャパシタと組み合わせることで耐障害性を実現したＤＲＡＭ等の高速かつ不揮発性となったメモリが用いられる。これらのキャッシュ、バッファの具体例として、例えば、ＨＤＤに内蔵されるNAND Flash、ＳＳＤに内蔵されるＤＲＡＭとキャパシタとの組み合わせが挙げられる。または、不揮発性記憶媒体を接続するＲＡＩＤ(Redundant Array of Inexpensive Disks)コントローラのモジュールにＤＲＡＭとバッテリーとを内蔵し、不揮発性のキャッシュを実現する方法が用いられる。
【００２４】
この他に、非特許文献１の技術に例示される、不揮発性記憶媒体の一部記憶領域をバッファとして利用する方法が用いられる。この技術では、ＨＤＤ、およびＳＳＤにおいて連続的なデータに対するWriteが高速である性質を利用して、一部の連続した記憶領域を追記形式のバッファとして利用する。バッファ以外の領域を仮想的な不揮発性記憶媒体として利用し、バッファを用いて小さなサイズのランダムWriteデータを連続Writeに変換することで、ランダムWriteに伴う性能低下を抑制する。
【００２５】
（課題）
ところが、信頼性の確保等を目的として内部のメタデータ、ジャーナルを保存する計算機システムにおいて処理性能向上を図る場合に、不揮発性記憶媒体に対する高速な状態情報の保存が不可欠である。また、障害による消失が許容されないデータを逐次保存する計算機システムにおいても、処理性能向上のために不揮発性記憶媒体に対する高速なデータの保存が不可欠である。これらの状態情報、データの保存は、不揮発性記憶媒体に対するWriteの完了が毎回必要であることから、システム全体の処理性能向上のため、特に低レイテンシであることが求められる。
【００２６】
しかし、高速かつ不揮発性のバッファでは、これらのデータの格納において安定的に低レイテンシを実現することが困難である。例えば不揮発性記憶媒体がキャッシュまたはバッファとして使用される高速かつ不揮発性の記憶素子を内蔵する場合、Writeデータをキャッシュまたはバッファの空き領域に格納することで低レイテンシのWriteを実現する。一方、バッファに空き領域が残されていない場合はバッファ上のデータを不揮発性記憶媒体内の低速な記憶領域に移動して空き領域を確保するか、あるいは新規データをバッファに格納せず低速な記憶領域に直接格納する必要がある。その場合は、低速な記憶領域に対するWriteデータの格納が発生するため、Writeデータの格納が完了するまでに大きなレイテンシを要する。
【００２７】
また、多くのシステムでは、不揮発性記憶媒体に対して低レイテンシのWriteが求められるデータの他に、様々なデータが格納される。不揮発性記憶媒体が内蔵するキャッシュまたはバッファを用いて、逐次保存が必要なデータに対して安定的に低レイテンシを実現するためには、低レイテンシの格納が求められるデータを識別し、データの格納先となる記憶領域を安定的に確保する必要がある。しかし、不揮発性記憶媒体内部の不揮発性のキャッシュまたはバッファの制御は不揮発性記憶媒体自身が行う。例えば、不揮発性のキャッシュまたはバッファに格納されるデータは、ＬＲＵ(Least Recently Used)等の更新頻度に応じたアルゴリズムに基づいて置換対象のデータが決定される。そのため、低レイテンシのWriteを必要とするデータの格納先となる記憶領域が優先的に確保されるとは限らない。
【００２８】
加えて、不揮発性のキャッシュまたはバッファを制御する不揮発性記憶媒体では、システムにおける処理の中間状態を記録するジャーナルやログのように、一時的に保存を求められるデータの識別が困難である。多くの場合これらのデータは、例えば、トランザクション等の一連の処理における途中経過の状態として不揮発性記憶媒体に逐次記録される。これらのデータは、最終的に更新対象となるデータとは別に保存され、一連の処理の途中で障害が発生した場合には途中経過の状態を無効化することで、一連の処理の実行前まで状態を戻す(ロールバック)を可能とする。一方、一連の処理が完了して、かつ、処理の結果が反映された後は、処理の途中経過に関する情報は不要となる。つまり、これらのデータは処理の途中経過を逐次、つまり頻繁に記録し、かつ、一連の処理の開始から処理結果が反映されるまでの間のみ保存が求められることから、不揮発性バッファに格納し続けることが望ましい。しかし、これらのデータを格納するホストコンピュータから不揮発性記憶媒体に対して、保存が必要とされる期間の情報を伝えることは困難である。
【００２９】
つまり、不揮発性のメモリ素子をキャッシュまたはバッファとして使用する不揮発性記憶媒体において、キャッシュまたはバッファの利用効果を高めるために、低レイテンシのWriteが必要なデータ、あるいは一時的な保存が必要なデータ等を判別して選択的に格納先の格納先領域を確保し続けることが困難な点が課題である。また、上記課題は、キャッシュまたはバッファとして使用する高速な不揮発性記憶媒体を別途用意することで解消可能であるが、計算機システムの構築に要するコストの増加につながる。加えて、不揮発性記憶媒体の一部記憶領域をバッファとして利用した場合は、ランダムWriteに伴う性能低下を抑制可能であるが、高速なメモリ素子で構成されるキャッシュ、バッファを介さずにデータが格納されるため、低レイテンシの実現は困難である。
【００３０】
《本実施形態の説明》
以下、本実施形態における記憶制御方法について説明する。
【００３１】
（概説）
本実施形態は、不揮発性記憶媒体、あるいはホストコンピュータと不揮発性記憶媒体を接続するコントローラによって制御される、不揮発性メモリで構成されたキャッシュまたはバッファにおいて、キャッシュまたはバッファの効果向上のために低レイテンシのWriteが必要なデータ、あるいは一時的に保存が必要なデータに対して選択的に格納先領域を確保し続ける方法を提供する。そのために、不揮発性記憶媒体、あるいは不揮発性記憶媒体と接続されたコントローラに対してWriteを行うホストコンピュータが、不揮発性メモリで構成されたキャッシュまたはバッファに格納されるデータを選択することで、不揮発性記憶媒体、あるいはホストコンピュータと不揮発性記憶媒体を接続するコントローラが選択されたデータに対する、キャッシュまたはバッファの格納先領域を優先的に確保するように制御する。
【００３２】
ここで、低レイテンシのWriteが必要なデータ、あるいは一時的に保存が必要なデータとしては、例えば、ファイルの内部状態を示し管理情報として使用されるメタデータや、一連の処理において処理経過や処理の進行状態を示すために使用されるジャーナルなどを含む。メタデータやジャーナルの機能を果たすデータとしては、例えば、カウンタや種々のパラメータ、あるいは、ソフトウェア間の引数なども含まれる。これらは、ホストコンピュータ、ＯＳあるいはアプリケーションソフトウェアにとって重要な意味を有し、処理中に維持すべきデータと考えられる。
【００３３】
以下、本明細書では特に断りのない限り、以下の記述を用いる。まず、ホストコンピュータと接続された不揮発性記憶媒体、およびホストコンピュータと接続されたＲＡＩＤコントローラ等によって提供され、コントローラに接続された不揮発性記憶媒体の記憶領域の組み合わせで構成される仮想的な不揮発性記憶媒体、あるいはボリュームを記憶媒体と記述する。また、不揮発性記憶媒体、あるいはホストコンピュータと接続されたＲＡＩＤコントローラ等によって制御される、不揮発性メモリで構成されたキャッシュまたはバッファを不揮発性バッファと記述する。そして、ホストコンピュータから記憶媒体の記憶領域を参照する場合、それがアドレスであるかによらず、記憶媒体上の記憶領域において任意の格納先領域を指し示す識別子をアドレスと記述する。また、本明細書で使用する一時保存部は、不揮発性メモリで構成されたキャッシュまたはバッファ、あるいは、揮発性メモリで構成されているが補助電源などの記憶維持機能を有するキャッシュまたはバッファなどを含むものである。
【００３４】
本実施形態では、ホストコンピュータが不揮発性バッファに格納すべきと判断したWriteデータに対して不揮発性バッファの記憶領域が確保され続けるように、Writeデータの記憶媒体上での格納先、およびWriteデータを将来格納する予定のアドレスが、記憶媒体の制御によって不揮発性バッファから追い出されないように制御する。アドレスの示す領域が不揮発性バッファ上に常に確保された状態とすることで、Writeデータの格納時に低速な記憶領域に対する書き込みを伴う空き領域の確保処理を行わずに、低レイテンシでWrite処理を完了できる。また、一時的に保存が必要なデータを不揮発性バッファ上に格納し続けることが可能であり、記憶媒体内の低速な記憶領域に対するWriteデータ量の削減が可能である。
【００３５】
不揮発性バッファに格納すべきと判断したWriteデータに対する記憶領域を安定的に確保するためには、ホストコンピュータから記憶媒体に対してデータを格納する記憶領域のアドレスが低レイテンシのデータ格納が必要、または更新頻度の高いデータを格納することを通知する必要がある。これらの通知は、例えば、ＳＳＤ等に用いられるNVM Express等の規格であれば、ホストコンピュータから記憶媒体に対するWrite要求にWrite先アドレスの指し示す記憶領域のレイテンシ、および更新頻度に関する要件を直接的に指定することで実現可能である。
【００３６】
しかし、記憶媒体内部の処理の都合により、必ずしも不揮発性バッファに格納すべきデータに対して不揮発性バッファの空き領域を確保可能であるとは限らない。また、ホストコンピュータからのWriteデータに関する要件は、ホストコンピュータからのデータ格納に関するヒントに過ぎず、記憶媒体において通知を受けた場合に、当該データを不揮発性バッファに保持し続ける時間等はホストコンピュータから制御不可能である。さらに、例えば、ＡＴＡ(Advanced Technology Attachment)、ＳＣＳＩ(Small Computer System Interface)のようなＨＤＤやＳＳＤ等の記憶媒体に現在広く用いられる接続規格では、この通知機能を持たない。
【００３７】
そこで記憶媒体に対して、不揮発性バッファに格納すべきと判断したアドレスについて、ホストコンピュータから記憶媒体の当該アドレスに対する定期的なデータの上書きを行う。一般的にキャッシュやバッファのデータの置換において、例えばＬＲＵのようなデータのアクセス、更新頻度に基づいたアルゴリズムが多く用いられる。そのため、ホストコンピュータから定期的に当該アドレスのデータを更新することで、記憶媒体に対して更新頻度の高いデータであることを通知して、不揮発性バッファ上に対応する記憶領域を安定的に確保する。また、ホストコンピュータから記憶媒体に対して記憶領域のレイテンシ、および更新頻度に関する要件を通知可能である場合（例えば、ＮＶＭｅ:Non-Volatile Memory Expressなど）は、低レイテンシの格納が必要、もしくは更新頻度の高いデータであることを通知することで、さらに安定的な不揮発性バッファ上の記憶領域確保が期待される。
【００３８】
本実施形態によれば、不揮発性バッファへの格納が必要なWriteデータに対して選択的に、不揮発性バッファ上に記憶領域が確保された状態を維持することで低レイテンシのデータ格納、および低速な記憶領域に対するWriteデータ量の削減による不揮発性バッファの効果向上を図る。そのために、優先データ管理機能と、格納データ量計測機能と、優先データ領域維持機能と、優先データ置換時期推測機能と、を備える。
【００３９】
優先データ管理機能は、低レイテンシの格納、あるいは一時的な保存が求められるデータといった、記憶媒体の不揮発性バッファに格納すべきWriteデータ(以下、本明細書ではWriteデータを優先データと記述)を管理する。すなわち、ホストコンピュータ上で動作するソフトウェアからの指示を受けて、記憶媒体の指示されたアドレスを優先データとして登録、または削除する。また、登録された各優先データについて、最後に記憶媒体の不揮発性バッファに格納された時期の情報を管理する。
【００４０】
格納データ量計測機能は、ホストコンピュータから記憶媒体に対するWrite要求を監視し不揮発性バッファに対するWriteデータ量を推測する。すなわち、ホストコンピュータ上で動作するソフトウェアから記憶媒体に対するWrite要求を監視して、不揮発性バッファに対する総格納データ量を計測する。
【００４１】
優先データ領域維持機能は、優先データを格納するための不揮発性バッファ上の領域を維持する処理を行う。すなわち、優先データ領域制御機能によって選択された、不揮発性バッファ上の優先データの格納領域について、記憶媒体の制御により他のデータで置換されないように記憶媒体に対して優先データの格納領域に対する操作を行い、格納領域を不揮発性バッファ上で維持する。記憶媒体に対する優先データの格納領域を維持するための操作は、領域を指し示すアドレスに対する同一データ、または同一サイズのダミーデータの上書きによって行う。また、ホストコンピュータから記憶媒体に対して、各アドレスの指し示す優先データに関するレイテンシまたは更新頻度の要件の通知が可能な場合は、通知によって低レイテンシの格納が必要、または高い更新頻度であることを通知して、優先的に不揮発性バッファに格納されるようにしてもよい。
【００４２】
優先データ置換時期推測機能は、不揮発性バッファにおいて優先データを格納する記憶領域が他のWriteデータで置換される時期を予測し、優先データ領域維持機能による処理を行う時期を決定する。すなわち、優先データ管理機能、格納データ量計測機能を用いて優先データを格納する各領域に関する置換時期を推測し、不揮発性バッファ上の格納領域が必要な優先データを選択する。また、選択した優先データについて、優先データ領域維持機能に対してアドレスを指定して処理の実行を指示する。
【００４３】
本実施形態による記憶制御方法を適用することで、不揮発性バッファにおいて低レイテンシのWriteが必要なデータ、あるいは一時的に保存が必要なデータに対して安定した記憶領域の確保を実現し、不揮発性記憶媒体に対する低レイテンシのWrite、および不揮発性記憶媒体内の低速な記憶領域に対するWriteデータ量の削減が可能である。
【００４４】
《情報処理システム》
図２は、本実施形態に係る記憶制御装置としての記憶制御部２２０を含む情報処理システム２００の構成を示すブロック図である。
【００４５】
図２を参照すると、本実施形態の情報処理システム２００は、１台以上のホストコンピュータ２１０と、一時保存部２３０と、記憶媒体２４０と、ホストコンピュータ２１０と一時保存部２３０および記憶媒体２４０とを接続するネットワーク２５０を含む。なお、記憶媒体２４０は、複数の記憶媒体に分散して接続されていてもよい。
【００４６】
ホストコンピュータ２１０は、ＯＳ(Operating System)２１１およびＯＳ２１１上で動作するソフトウェアであるアプリケーション２１２と、本実施形態の記憶制御部２２０と、を備える。記憶制御部２２０は、ＯＳ２１１およびアプリケーション２１２の処理における、一時保存部２３０を介した記憶媒体２４０へのReadおよびWriteを含むアクセス処理を制御する。
【００４７】
記憶媒体２４０は、ＨＤＤ、NANDフラッシュを記憶素子として用いたＳＳＤ等の不揮発性記憶媒体である。また、一時保存部２３０は、記憶媒体２４０に比べて比較的高速かつ不揮発性の記憶素子によって構成され、記憶媒体２４０に対してホストコンピュータ２１０からは透過であるバッファまたはキャッシュの役割を果たす。また、一時保存部２３０に対するデータの格納や参照は記憶媒体２４０によって制御され、例えば、記憶媒体２４０と一時保存部２３０とが単一の記憶媒体に内蔵されてもよい。また、例えば、記憶媒体２４０が、ホストコンピュータ２１０と接続されるＲＡＩＤコントローラ（不図示）によって単体または複数の物理的な不揮発性記憶媒体の記憶領域から仮想的に構成される記憶媒体であり、一時保存部２３０がその記憶媒体に対するバッファとしてＲＡＩＤコントローラによって制御される形態であってもよい。
【００４８】
ネットワーク２５０の形態は特に限定されず、例えば、一時保存部２３０が記憶媒体２４０と独立してネットワーク２５０に接続される形態であってもよい。また、ホストコンピュータ２１０と記憶媒体２４０、一時保存部２３０が直接接続される形態であってもよい。さらに、ホストコンピュータ２１０を、ネットワーク２５０によって接続された複数の装置、あるいはシステムで構成してもよい。
【００４９】
《記憶制御装置の機能構成》
図３は、本実施形態に係る記憶制御装置としての記憶制御部２２０の機能構成を示すブロック図である。
【００５０】
図３を参照すると、記憶制御部２２０は、アクセス実行部３０１と、優先データ操作受付部３０２と、優先データ管理部３０３と、を備える。また、記憶制御部２２０は、格納データ量計測部３０４と、総格納データ量記憶部３０５と、優先データ置換時期推測部３０６と、置換時期判定基準データ量記憶部３０７と、優先データ領域維持部３０８と、を備える。
【００５１】
《アクセス実行部》
アクセス実行部３０１は、ホストコンピュータ２１０で動作するソフトウェア、ＯＳからのアクセス要求を受け取り、記憶媒体２４０に対して必要なアクセス処理を行う。また、アクセス実行部３０１は、優先データ領域維持部３０８、および、バッファ領域確保部１０６から指示された、一時保存部２３０に関する処理を行う。
【００５２】
《優先データ操作受付部》
優先データ操作受付部３０２は、優先データ操作記憶部３２１をホストコンピュータ２１０で動作するソフトウェア、ＯＳと共有する。優先データ操作受付部３０２は、ホストコンピュータ２１０で動作するソフトウェア、ＯＳから一時保存部２３０に格納する優先データの指定と、指定の削除との対象のアドレスに関する要求を、優先データ操作記憶部３２１を経由して受け取る。そして、優先データ操作受付部３０２は、優先データ操作記憶部３２１の情報に基づいて、優先データ管理部３０３に対して優先データの登録または登録削除を指示する。なお、一時保存部２３０に格納する優先データの指定と、指定の削除との対象のアドレスに関する要求は、上記のような優先データ操作記憶部３２１を介したソフトウェア間の要求伝達であっても、通信による要求伝達であってもよい。
【００５３】
（優先データ操作記憶部）
図４Ａに、本実施形態に係る優先データ操作記憶部３２１の構成を示す。本実施形態に係る優先データ操作記憶部３２１は、ホストコンピュータ２１０で動作するソフトウェア、ＯＳと、記憶制御部２２０の優先データ操作受付部３０２とにより共有されて、一時保存部２３０に格納する優先データの指定と、指定の削除との対象のアドレスに関する要求の受け渡しを行なう。なお、優先データ操作記憶部３２１の構成は、図４Ａの構成に限定されない。また、図４Ａには複数の優先データ操作の記憶を示したが、１つの優先データ操作を記憶できればよい。
【００５４】
優先データ操作記憶部３２１は、記憶内容が有効か無効かを示すフラグ４１１と、優先データの指定か解除かを示すフラグ４１２と、優先データの指定または解除をするアドレス４１３と、優先データの容量４１４と、優先データの指定または解除を指示した指示元４１５と、を記憶する。なお、フラグ４１１の無効は、優先データ操作の完了をホストコンピュータ２１０で動作するソフトウェア、ＯＳに通知するフラグとしても使用されてよい。
【００５５】
《優先データ管理部》
優先データ管理部３０３は、優先データ管理テーブル３３１を有し、ホストコンピュータ２１０で動作するソフトウェア、ＯＳから指定された優先データの情報について、優先データ管理テーブル３３１に対するエントリの登録および削除を行う。また、優先データ管理部３０３は、優先データ管理テーブル３３１に登録された優先データに対するホストコンピュータ２１０で動作するソフトウェア、ＯＳからのアクセスを監視し、更新または削除が行われた場合は、アクセス先のアドレスに対応する優先データのエントリの情報を更新する。
【００５６】
（総格納データ量記憶部、置換時期判定基準データ量記憶部および優先データ管理テーブル）
図４Ｂに、本実施形態に係る総格納データ量記憶部３０５、置換時期判定基準データ量記憶部３０７および優先データ管理テーブル３３１の構成を示す。
【００５７】
総格納データ量記憶部３０５は、一時保存部２３０に対する総格納データ量を記憶する。総格納データ量は、格納データ量計測部３０４によって、ホストコンピュータ２１０で動作するソフトウェア、ＯＳから記憶媒体２４０に対するWrite要求の監視を行うことにより計測される。
【００５８】
置換時期判定基準データ量記憶部３０６は、一時保存部２３０へのWrite処理を強制して実行する置換時期を判定する基準データ量として、例えば、一時保存部２３０の容量、もしくは、一時保存部２３０においてデータの置換に伴う、記憶媒体２４０の低速な記憶領域に対するデータ格納が開始される容量を設定する。データ格納が開始される容量としては、例えば、Writeデータへのアクセス速度が遅くなることが検出された容量を含む。
【００５９】
優先データ管理テーブル３３１は、優先データ操作記憶部３２１に記憶された指定操作に従いエントリされて、Write処理ごとに現在の総格納データ量により更新される。そして、現在の総格納データ量と格納先領域に対応して記憶された格納データ量との差と、置換時期判定基準データ量との比較に基づき、Write処理の強制を行なって格納先領域を確保するために使用される。優先データ管理テーブル３３１の各エントリは、優先データの格納先である記憶媒体２４０の記憶領域を指し示すアドレス４２１と、最後に当該アドレスが更新された時点における、一時保存部２３０を介した記憶媒体２４０への総格納データ量を表す更新時格納データ量４２２とを持つ。
【００６０】
優先データ管理部３０３は、ホストコンピュータ２１０で動作するソフトウェア、ＯＳから優先データのアドレスを新規に指定されると、優先データ管理テーブル３３１に新規のエントリを作成し、指定された優先データのアドレスを格納する。また、優先データ管理部３０３は、ホストコンピュータ２１０で動作するソフトウェア、ＯＳから優先データの指定を削除するアドレスを受け取ると、アドレスが一致するエントリを削除する。さらに、優先データ管理部３０３は、アクセス実行部３０１で処理されるホストコンピュータ２１０で動作するソフトウェア、ＯＳから記憶媒体２４０に対するWrite要求の情報を受け取り、Write先が格納先領域のアドレス４２１と一致する場合は、当該エントリの更新時格納データ量４２２を総格納データ量記憶部３０５に記憶された現在の総格納データ量に更新する。加えて、優先データ管理部３０３は、同様に、ホストコンピュータ２１０で動作するソフトウェア、ＯＳから記憶媒体２４０に対する削除要求の情報を受け取り、削除対象がアドレス４２１と一致する場合は、当該エントリを優先データ管理テーブル３３１から削除する。
【００６１】
なお、ＮＶＭｅなどを使用する場合には、優先データ管理部３０３が、Write要求などからレイテンシ、または更新頻度の要件の通知を抽出し、通知によって低レイテンシの格納が必要、または高い更新頻度であることを検知して、優先データ管理部３０３において検出に対応した処理を行なうことも可能である。
【００６２】
《格納データ量計測部》
格納データ量計測部３０４は、ホストコンピュータ２１０で動作するソフトウェア、ＯＳから記憶媒体２４０に対するWrite要求の監視を行い、一時保存部２３０に対する現在の総格納データ量を計測して、総格納データ量記憶部３０５に記憶する。格納データ量計測部３０４では、記憶媒体２４０に対して格納されたデータは一旦、一時保存部２３０に格納されるものとし、総格納データ量の値に記憶媒体２４０に対してホストコンピュータからWrite要求が行われるごとに、Writeデータのサイズを加算する。
【００６３】
《優先データ置換時期推測部》
優先データ置換時期推測部３０６は、格納データ量計測部３０４によって計測されて総格納データ量記憶部３０５に記憶された一時保存部２３０の総格納データ量と、優先データ管理部３０３によって管理される各優先データの格納先領域における更新時格納データ量４２２と、の差を取る。そして、データ量の差である、優先データの格納先領域における最終更新時から後に一時保存部２３０に格納されたデータ量が、置換時期判定基準データ量記憶部３０７に記憶された事前に定めた基準データ量を上回った場合に、優先データ置換時期推測部３０６は、優先データの格納先領域のアドレスを優先データ領域維持部３０８に通知して、優先データのWrite処理の実行を指示する。
【００６４】
なお、基準データ量としては、上述のように、例えば、一時保存部２３０の容量、もしくは、一時保存部２３０においてデータの置換に伴う、記憶媒体２４０の低速な記憶領域に対するデータ格納が開始される容量が設定される。データ格納が開始される容量としては、例えば、Writeデータへのアクセス速度が遅くなることが検出された容量が含まれる。また、一時保存部２３０の容量が公開されている場合には、その容量のＸ％（Ｘ＜100）などの基準データ量が設定されてもよい。
【００６５】
《優先データ領域維持部》
優先データ領域維持部３０８は、優先データ置換時期推測部３０６からの指示されたアドレスで表される優先データについて、アクセス実行部３０１経由で記憶媒体２４０に対してアクセスを行い、優先データを格納する格納先領域が一時保存部２３０に残るように維持を行う。維持の処理は、記憶媒体２４０に対する当該アドレスに格納された優先データの読み出しと、同一データの再格納とによって実施される。また、優先データを格納するためにあらかじめ確保された一時保存部２３０の格納先領域の事前確保が目的の場合は、優先データの読み出し処理を省略し、当該格納先領域を指し示すアドレスに対する任意のデータ（ダミーデータ）のWrite処理を記憶媒体２４０に指示することで実施可能である。さらに、例えばＮＶＭｅなどのように、ホストコンピュータ２１０から記憶媒体２４０に対して各アドレスの指し示す優先データに関するレイテンシ、または更新頻度の要件の通知が可能な場合は、通知によって低レイテンシの格納が必要、または高い更新頻度であることを通知することも可能である。
【００６６】
《記憶制御装置のハードウェア構成》
図５は、本実施形態に係る記憶制御装置としての記憶制御部２２０のハードウェア構成を示すブロック図である。なお、図５においては、記憶制御部２２０はホストコンピュータ２１０のソフトウェア処理として図示するが、記憶制御部２２０を、ホストコンピュータ２１０とは独立したワンチップのコンピュータで実現してもよい。
【００６７】
図５で、ＣＰＵ(Central Processing Unit)５１０は演算制御用のプロセッサであり、プログラムを実行することで図３の記憶制御部２２０の機能構成部を実現する。ＲＯＭ(Read Only Memory)５２０は、初期データおよびプログラムなどの固定データおよびプログラムを記憶する。また、ネットワークインタフェース５３０は、ネットワーク２５０を介して記憶媒体２４０や他の装置と通信する。なお、ＣＰＵ５１０は１つに限定されず、複数のＣＰＵであっても、あるいは画像処理用のＧＰＵ(Graphics Processing Unit)を含んでもよい。また、ネットワークインタフェース５３０は、ＣＰＵ５１０とは独立したＣＰＵを有して、ＲＡＭ(Random Access Memory)５４０の領域に送受信データを書き込みあるいは読み出しするのが望ましい。したがって、ＣＰＵ５１０は、ＲＡＭ５４０にデータが受信あるいは転送されたことを認識してデータを処理する。また、ＣＰＵ５１０は、処理結果をＲＡＭ５４０に準備し、後の送信はネットワークインタフェース５３０に任せる。
【００６８】
ＲＡＭ５４０は、ＣＰＵ５１０が一時記憶のワークエリアとして使用するランダムアクセスメモリである。ＲＡＭ５４０には、本実施形態の実現に必要なデータを記憶する領域が確保されている。Readアドレス／データ５４１は、記憶媒体２４０からのRead処理の対象とするアドレスと、読み込まれたデータとである。Writeアドレス／データ５４２は、記憶媒体２４０へのWrite処理の対象とするアドレスと、書き込まれるデータとである。削除アドレス５４３は、記憶媒体２４０からの削除処理の対象とするアドレスである。優先データ指定アドレス／領域５４４は、一部保存部２３９に保持される優先データを指定するためのアドレスと領域長とである。指定解除アドレス／領域５４５は、一部保存部２３９に保持された優先データの格納先領域を解除（解放）するためのアドレスと領域長とである。優先データ領域維持アドレス/領域５４６は、優先データ指定アドレス／領域５４４にもとづいて、一部保存部２３０に確保された優先データ用の格納先領域を示すアドレスと領域長とである。ホスト送受信データ５４７は、ホストコンピュータ２１０と送受信するデータである。送受信データ５４８は、ネットワークインタフェース５３０を介して送受信されるデータである。
【００６９】
ストレージ５５０には、データベースや各種のパラメータ、あるいは本実施形態の実現に必要な以下のデータまたはプログラムが記憶されている。優先データ管理テーブル３３１は、図４Ｂに示した、優先データとして一時保存部２３０に格納先領域を確保し維持するための管理テーブルである。総格納データ量記憶部３０５は、図４Ｂに示した、一時保存部２３０を介して記憶媒体２４０にWrite処理をした総格納データ量の記憶部である。置換時期判定基準データ量記憶部３０７は、図４Ｂに示した、一時保存部２３０に確保した優先データの格納先領域へのWrite処理をするか否かを判定する基準データ量の記憶部である。
【００７０】
ストレージ５５０には、以下のプログラムが格納される。記憶制御プログラム５５１は、ＯＳ２１１やアプリケーション２１２からの記憶媒体２４０へのアクセスを受けて、本実施形態のアクセス制御を実現するプログラムである。Read制御モジュール５５２は、記憶制御プログラム５５１における、記憶媒体２４０からのReadを制御するモジュールである。Write制御モジュール５５３は、記憶制御プログラム５５１における、記憶媒体２４０へのWriteを制御するモジュールである。削除制御モジュール５５４は、記憶媒体２４０からのデータ削除を制御するモジュールである。指定／指定解除モジュール５５５は、ＯＳ２１１やアプリケーション２１２からの指示を受けて、優先データの一時保存部２３０における格納先領域の確保の指定、あるいは、指定解除による格納先領域の開放を制御するモジュールである。優先データ領域維持モジュール５５６は、優先データの一時保存部２３０に確保された格納先領域が記憶媒体２４０に格納されず格納先領域に保持するよう維持するモジュールである。
【００７１】
なお、図５のＲＡＭ５４０やストレージ５５０には、ホストコンピュータ２１０が有する汎用の機能や他の実現可能な機能に関連するプログラムやデータは図示されていない。
【００７２】
《記憶制御装置の処理手順》
図６は、本実施形態に係る記憶制御装置としての記憶制御部２２０の処理手順を示すフローチャートである。このフローチャートは、図５のＣＰＵ５１０がＲＡＭ５４０を使用して実行し、図３の機能構成部を実現する。なお、図６においては、各処理を選択的に実行するように図示したが、複数の処理が並行して実行されてもよい。また、判定順についても図６に限定されない。
【００７３】
記憶制御部２２０は、ステップＳ６１１において、ＯＳ２１１またはアプリケーション２１２からのRead要求であるか否かを判定する。Read要求であれば、記憶制御部２２０は、ステップＳ６１３において、記憶媒体２４０からのRead処理を実行する。Read要求でなければ、記憶制御部２２０は、ステップＳ６２１において、ＯＳ２１１またはアプリケーション２１２からのWrite要求であるか否かを判定する。Write要求であれば、記憶制御部２２０は、ステップＳ６２３において、記憶媒体２４０へのWrite処理を実行する。
【００７４】
Read要求でもWrite要求でもなければ、記憶制御部２２０は、ステップＳ６３１において削除であるか否かを判定する。削除であれば、記憶制御部２２０は、ステップＳ６３３において、削除処理を実行する。なお、削除には、ＳＳＤ等におけるイレース(Erase)、ＡＴＡでのトリム(Trim)あるいはＳＣＳＩでのアンマップ(Unmap)、などが含まれる。
【００７５】
Read要求でもWrite要求でも削除要求でもなければ、記憶制御部２２０は、ステップＳ６４１において、優先データ領域の指定あるいは指定解除であるか否かを判定する。優先データ領域の指定あるいは指定解除であれば、記憶制御部２２０は、ステップＳ６４３において、優先データ領域指定／解除処理を実行する。Read要求でもWrite要求でも削除要求でも優先データ領域の指定あるいは指定解除でもなければ、記憶制御部２２０は、ステップＳ６５１において、優先データ領域の維持動作であるか否かを判定する。優先データ領域の維持動作であれば、記憶制御部２２０は、ステップＳ６５３において、優先データの維持処理を実行する。
【００７６】
以下、Write処理（Ｓ６２３）、削除処理（Ｓ６３３）、優先データ指定／解除処理（Ｓ６４３）、優先データ領域維持処理（Ｓ６５３）の手順を説明する。なお、Read処理（Ｓ６１３）については、説明を省略する。
【００７７】
（Write処理）
図７は、本実施形態に係るWrite処理（Ｓ６２３）の手順を示すフローチャートである。
【００７８】
記憶制御部２２０のアクセス実行部３０１は、ステップＳ７０１において、ホストコンピュータ２１０で動作するソフトウェア、ＯＳからのWrite要求を受け取ると、優先データ管理部３０３に対してWrite要求の情報を伝える。記憶制御部２２０の優先データ管理部３０３は、ステップＳ７０３において、優先データ管理テーブル３３１の各エントリのアドレス４２１と、ステップＳ７０１で受け取ったWrite要求先のアドレスとを比較する。そして、優先データ管理部３０３は、ステップＳ７０５において、比較結果を判定して比較結果に対応した分岐をする。
【００７９】
Write要求先のアドレスと一致するアドレス４２１を有するエントリが優先データ管理テーブル３３１に存在しない場合（ステップＳ７０５のＮｏ判定）、優先データ管理部３０３は、アクセス実行部３０１にステップＳ７０９以降の処理を実行させる。Write要求先のアドレスと一致するアドレス４２１を有するエントリが優先データ管理テーブル３３１に存在する場合（ステップＳ７０５のＹｅｓ判定）、優先データ管理部３０３は、ステップＳ７０７において、優先データ管理テーブル３３１の当該エントリの更新時格納データ量４２２の値を、格納データ量記憶部３０５から取得した一時保存部２３０の総格納データ量の値で更新する。
【００８０】
アクセス実行部３０１は、ステップＳ７０９において、ステップＳ７０１で受け取ったWrite要求を記憶媒体２４０に発行し、記憶媒体２４０からWrite処理の完了応答を受け取ると、アクセス要求元であるホストコンピュータ２１０で動作するソフトウェア、ＯＳに完了応答を返して処理を終了する。
【００８１】
以上のステップＳ７０１からＳ７０９までの処理を行い、ホストコンピュータ２１０で動作するソフトウェア、ＯＳから発行されたWrite要求の処理を行う動作が完了する。ステップＳ７０１からＳ７０９の処理順序は、必ずしも図７に示した順序である必要はない。例えば、ステップＳ７０３からＳ７０７までの処理と、ステップＳ７０９の処理とは、同時期に実行が可能、あるいは順序を入れ替えた実行が可能である。
【００８２】
（削除処理）
図８は、本実施形態に係る削除処理（Ｓ６３３）の手順を示すフローチャートである。
【００８３】
記憶制御部２２０のアクセス実行部３０１は、ステップＳ８０１において、ホストコンピュータ２１０で動作するソフトウェア、ＯＳからの削除要求を受け取ると、優先データ管理部３０３に対して削除要求先のアドレスを含む削除要求の情報を伝える。優先データ管理部３０３は、ステップＳ８０３において、優先データ管理テーブル３３１の各エントリのアドレス４２１と、ステップＳ８０１で受け取った削除要求先のアドレスとを比較する。そして、優先データ管理部３０３は、ステップＳ８０５において、比較結果を判定して比較結果に対応した分岐をする。
【００８４】
削除要求先のアドレスと一致するアドレス４２１を有するエントリが優先データ管理テーブル３３１に存在しない場合（ステップＳ８０５のＮｏ判定）、優先データ管理部３０３は、アクセス実行部３０１にステップＳ８０９以降の処理を実行させる。削除要求先のアドレスと一致するアドレス４２１を有するエントリが優先データ管理テーブル３３１に存在する場合（ステップＳ８０５のＹｅｓ判定）、優先データ管理部３０３は、ステップＳ８０７において、優先データ管理テーブル３３１から当該エントリを削除する。
【００８５】
アクセス実行部３０１は、ステップＳ８０９において、ステップＳ８０１で受け取った削除要求を記憶媒体２４０に発行し、記憶媒体２４０から削除処理の完了応答を受け取ると、アクセス要求元であるホストコンピュータ２１０で動作するソフトウェア、ＯＳに完了応答を返して処理を終了する。
【００８６】
以上のステップＳ８０１からＳ８０９までの処理を行い、ホストコンピュータ２１０で動作するソフトウェア、ＯＳから発行された削除要求の処理を行う動作が完了する。ステップＳ８０１からＳ８０９の処理順序は、必ずしも図８に示した順序である必要はない。例えば、ステップＳ８０３からＳ８０７までの処理とステップＳ８０９の処理は、同時期に実行が可能、あるいは順序を入れ替えた実行が可能である。
【００８７】
（優先データ領域の指定／解除処理）
図９は、本実施形態に係る優先データ領域の指定／解除処理（Ｓ６４３）の手順を示すフローチャートである。
【００８８】
記憶制御部２２０の優先データ操作受付部３０２は、ステップＳ９０１において、ホストコンピュータ２１０で動作するソフトウェア、ＯＳから一時保存部２３０に格納する優先データの指定要求、または、指定の削除要求を受け取る。そして、優先データ操作受付部３０２は、優先データのアドレス情報を優先データ管理部３０３に通知して、優先データの指定、または、指定削除を指示する。指示を受けた優先データ操作受付部３０２は、ステップＳ９０３において、受け取った要求が優先データの指定要求であるか否かを判定する。
【００８９】
ステップＳ９０１で受け取った要求が優先データの指定要求である場合（ステップＳ９０３のＹｅｓ判定）、優先データ管理部３０３は、ステップＳ９０５において、優先データ管理テーブル３３１の各エントリのアドレス４２１を確認して、優先データの指定要求のアドレスと比較する。そして、優先データ管理部３０３は、ステップＳ９０７において、優先データの指定要求のアドレスが優先データ管理テーブル３３１のいずれかのエントリのアドレス４２１と一致するか否かを判定する。
【００９０】
優先データとして登録を要求されたアドレスと一致するアドレス４２１を有するエントリが優先データ管理テーブル３３１に存在する場合（ステップＳ９０７のＮｏ判定）、優先データ管理部３０３は、優先データ操作受付部３０２にステップＳ９１９以降の処理を実行させる。優先データとして指定されたアドレスと一致するアドレス４２１を有するエントリが優先データ管理テーブル３３１に存在しない場合（ステップＳ９０７のＹｅｓ判定）、優先データ管理部３０３は、ステップＳ９０９において、優先データ管理テーブル３３１に新規のエントリを作成し、指定された優先データのアドレスをアドレス４２１に設定する。また、優先データ管理部３０３は、更新時格納データ量４２２として“０”、または処理時点の一時保存部２３０の総格納データ量に比べて十分に小さな値を設定して、優先データ操作受付部３０２にステップＳ９１９以降の処理を実行させる。
【００９１】
なお、エントリ時に更新時格納データ量４２２として“０”、または、処理時点の一時保存部２３０の総格納データ量に比べて十分に小さな値を設定するのは、エントリ時に優先データの格納先領域が、当該データの更新要求が発生した時点で一時保存部上に確保されている状態を保証するための動作である。本実施形態においては、優先データ管理テーブルの各エントリの作成時期と、Write要求の時期は独立しており、動作順序としては、あらかじめ優先データを登録しておき、その後に優先データのWriteを行うことを想定している。そのため、優先データを指定した時点の総格納データ量を更新時格納データ量としてしまうと、優先データの指定から十分な時間が経過しない状態で書き込みを行った場合に、格納先領域が確保されておらず、それに伴う一時保存部からのデータ追い出し処理が発生し、遅延の原因となる。この動作を防ぐために、優先データの指定後に、格納先領域に対する上書き処理をすぐに行わせて、一時保存部上に格納先領域が確保された状態とする。しかしながら、Write要求で格納先領域を確保した後に優先データとして登録する場合は、優先データを指定した時点の総格納データ量を更新時格納データ量としてもよい。
【００９２】
ステップＳ９０１で受け取った要求が優先データの指定要求でない場合（ステップＳ９０３のＮｏ判定）、優先データ管理部３０３は、ステップＳ９１１において、受け取った要求が優先データの指定の解除要求であるか否かを判定する。受け取った要求が優先データの指定の解除要求でもない場合（ステップＳ９１１のＮｏ判定）、優先データ管理部３０３は、要求元のホストコンピュータ２１０で動作するソフトウェア、ＯＳにエラー通知をするなどのエラー処理をする。
【００９３】
ステップＳ９０１で受け取った要求が優先データの指定の削除要求である場合（ステップＳ９０３のＹｅｓ判定）、優先データ管理部３０３は、ステップＳ９１３において、優先データ管理テーブル３３１の各エントリのアドレス４２１を確認して、優先データの指定の削除要求のアドレスと比較する。そして、優先データ管理部３０３は、ステップＳ９１５において、優先データの指定の解除要求のアドレスが優先データ管理テーブル３３１のいずれかのエントリのアドレス４２１と一致するか否かを判定する。
【００９４】
優先データの指定の削除を要求されたアドレスと一致するアドレス４２１を有するエントリが優先データ管理テーブル３３１に存在しない場合（ステップＳ９１５のＮｏ判定）、優先データ管理部３０３は、優先データ操作受付部３０２にステップＳ９１９以降の処理を実行させる。優先データの指定の削除を要求されたアドレスと一致するアドレス４２１を有するエントリが優先データ管理テーブル３３１に存在する場合（ステップＳ９１５のＹｅｓ判定）、優先データ管理部３０３は、ステップＳ９１７において、優先データ管理テーブル３３１から指定の削除を要求されたアドレスと一致するアドレス４２１を有するエントリを削除する。
【００９５】
優先データ操作受付部３０２は、ステップＳ９１９において、優先データの指定要求元、または、指定の削除要求元である、ホストコンピュータ２１０で動作するソフトウェア、ＯＳに対して完了を通知して処理を終了する。
【００９６】
以上のステップＳ９０１からＳ９１９までの処理を行い、ホストコンピュータ２１０で動作するソフトウェア、ＯＳから発行された優先データの指定要求、指定の削除に関する要求を処理する動作が完了する。ステップＳ９０１からＳ９１９の処理順序は、必ずしも図９に示した順序である必要はない。例えば、ステップＳ９１９の完了を通知する動作は、優先データの指定または指定の削除を処理するうえで省略が可能である。
【００９７】
（優先データ領域維持処理）
図１０は、本実施形態に係る優先データ領域維持処理（Ｓ６５３）の手順を示すフローチャートである。図１０においては、一時保存部２３０に格納された各優先データが置換の対象となる時期を予測し、一時保存部２３０の格納先領域の維持を行う対象の優先データを決定して維持処理を実行する手順を説明する。
【００９８】
記憶制御部２２０の優先データ置換時期推測部３０６は、ステップＳ１００１において、任意の時期に優先データ管理部３０３によって管理される優先データ管理テーブル３３１を参照し、各優先データを更新時格納データ量４２２が小さい順番にソートする。優先データ置換時期推測部３０６は、ステップＳ１００３において、格納データ量計測部３０４が計測している一時保存部２３０の総格納データ量を、総格納データ量記憶部３０５から取得する。そして、優先データ置換時期推測部３０６は、ステップＳ１００５において、優先データのソート結果を参照し、ステップＳ１００３で取得した総格納データ量から更新時格納データ量４２２を引くことで、先頭の優先データが最後に更新された後に一時保存部２３０に格納されたデータ量を算出する。
【００９９】
優先データ置換時期推測部３０６は、ステップＳ１００７において、算出されたデータ量が置換時期判定基準データ量記憶部３０７に記憶された置換時期判定基準データ量を上回ったか否かを判定する。優先データが最後に更新された後に一時保存部２３０に格納されたデータ量が、置換時期判定基準データ量以下である場合（ステップＳ１００７のＮｏ判定）、処理を終了する。優先データが最後に更新された後に一時保存部２３０に格納されたデータ量が、置換時期判定基準データ量を上回る場合（ステップＳ１００７のＹｅｓ判定）、優先データ置換時期推測部３０６は、ステップＳ１００９において、ソートされた先頭の優先データに関するアドレス４２１を優先データ領域維持部３０８に通知する。
【０１００】
優先データ領域維持部３０８は、ステップＳ１０１１において、ステップＳ１００９で通知されたアドレス４２１の優先データについて、格納先領域が一時保存部２３０に残るように維持するための処理を行う。格納先領域が一時保存部２３０に残るように維持するための処理としては、データの格納先領域への上書き、または、ダミーデータの格納先領域への格納を含む。優先データ置換時期推測部３０６は、ステップＳ１０１３において、優先データの更新時格納データ量４２２に基づくソート結果から、先頭の優先データを削除する。優先データ置換時期推測部３０６は、ステップＳ１０１５において、優先データ管理部３０３に対して、ステップＳ１０１３でソート結果から削除された優先データに対応する優先データ管理テーブル３３１のエントリについて、更新時格納データ量４２２の値を、総格納データ量記憶部３０５から取得した一時保存部２３０の総格納データ量の値で更新する。
【０１０１】
優先データ置換時期推測部３０６は、ステップＳ１０１７において、優先データのソート結果に優先データが残った状態であるか否かを判定する。優先データのソート結果に優先データが１個も残っていない場合（ステップＳ１０１７のＮｏ判定）、処理を終了する。優先データのソート結果に優先データが１個以上残った状態である場合（ステップＳ１０１７のＹｅｓ判定）、優先データ置換時期推測部３０６は、ステップＳ１００５から処理を繰り返して継続する。
【０１０２】
以上のステップＳ１００１からＳ１０１７までの処理を行い、優先データ置換時期推測部３０６により一時保存部２３０に格納された各優先データが置換の対象となる時期を予測し、優先データ領域維持部３０８により一時保存部２３０の格納先領域の維持を行う対象の優先データを決定して維持を実行する動作が完了する。ステップＳ１００１からＳ１０１７の処理順序は、必ずしも図１０に示した順序である必要はない。例えば、ステップＳ１０１３とステップＳ１０１５との処理は同時期に実行可能、あるいは順序を入れ替えた実行が可能である。
【０１０３】
《具体例の概説》
図４Ａおよび図４Ｂを参照して、本実施形態の具体例について説明する。
【０１０４】
図４Ａの優先データ操作記憶部３２１の内容から、上部３列の優先データは既に優先データ管理テーブル３３１にエントリされており、４列目の優先データのエントリが優先データ管理部３３０により行なわれる。４列目の優先データのエントリ時には更新時格納データ量４２２に例えば“０”が設定されるので、上書きのWrite処理が行なわれ、優先データ管理テーブル３３１の４列目の優先データのエントリの更新時格納データ量４２２には、現在の総格納データ量(1350MB)が設定される。
【０１０５】
そして、アクセス実行部３０１がWrite処理を検出し、Write処理のアドレスが優先データ管理テーブル３３１にあれば、優先データ管理部３０３は、そのアドレスを持ったエントリの更新時格納データ量４２２を総格納データ量記憶部３０５が記憶する総格納データ量に更新する。
【０１０６】
一方、優先データ管理テーブル３３１で、更新時格納データ量４２２の小さい順にソートされた最上位のエントリ（アドレス:0x00001279)について、優先データ置換時期推測部３０６において以下の処理が行なわれる。総格納データ量(1350MB)から最上位のエントリの更新時格納データ量４２２(800MB)が減算されて、優先データが最後に更新された後に一時保存部２３０に格納されたデータ量(550MB=1350MB-800MB)が算出される。算出されたデータ量(550MB)は、置換時期判定基準データ量(549MB)と比較される。本例では、置換時期判定基準データ量(549MB)を上回ったので、優先データ領域維持部３０８が、最上位のエントリ（アドレス:0x00001279)に対して、データの格納先領域への上書き、または、ダミーデータの格納先領域への格納を含む格納先領域を維持する処理を実行する。
【０１０７】
本実施形態によれば、データの格納処理の有無に関わらず、所定タイミングで格納先領域への上書きの指示、または、ダミーデータの格納先領域への格納の指示を繰り返すので、一時的に保存が必要なデータに対して、一時保存部における安定した格納先領域の確保を実現することができる。
【０１０８】
例えば、追記形式の不揮発性記憶媒体をバッファやキャッシュとして使用する場合、バッファやキャッシュにおいて低レイテンシのWriteが必要なデータ、あるいは、一時的に保存が必要なデータに対して安定した格納先領域の確保を実現することができる。さらに、低レイテンシのWrite、および不揮発性記憶媒体内の低速な記憶領域に対するWriteデータ量の削減が可能である。
【０１０９】
［第３実施形態］
次に、本発明の第３実施形態に係る記憶制御装置を含む情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態と比べると、ソフトウェアやＯＳからの指示情報に基づいて、格納先領域の確保に対する優先順位を設定する点で異なる。その他の構成および動作は、第２実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１１０】
（優先データ操作記憶部および置換時期判定基準データ量記憶部）
図１１は、本実施形態に係る優先データ操作記憶部１１２１および置換時期判定基準データ量記憶部１１０７の構成を示す図である。
【０１１１】
優先データ操作記憶部１１２１は、図４Ａの優先データの指定情報に対して、優先度１１１５を追加している。この優先度は、指定する各優先データについて、一時保存部２３０における保持がホストコンピュータ２１０で動作するソフトウェア、ＯＳにとって必須であるものから、重要度は高いが必須ではないものを区別する。かかる優先度は、異なるホストコンピュータや、ホストコンピュータで動作する異なるソフトウェア、ＯＳにおいて、共通であることが望ましい。
【０１１２】
優先データ操作記憶部１１２１の情報に対応して、置換時期判定基準データ量記憶部１１０７においては、アドレス１１１１の優先データの優先度１１１５に対応して、異なる置換時期判定基準データ量１１１２が設定される。図１１においては、優先度01の場合100MB、優先度02の場合200MB、優先度03の場合800MB、優先度04の場合1000MB、が設定されているが、これに限定されない。
【０１１３】
本実施形態によれば、優先データの優先度を考慮した格納先領域の確保をするので、より効率的な格納先領域の確保を実現することができる。
【０１１４】
［第４実施形態］
次に、本発明の第４実施形態に係る記憶制御装置を含む情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態および第３実施形態と比べると、一時保存部が記憶媒体内に確保される点で異なる。その他の構成および動作は、第２実施形態や第３実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１１５】
《情報処理システム》
図１２は、本実施形態に係る記憶制御装置を含む情報処理システム１２００の構成を示すブロック図である。なお、図１２において、図２と同様の構成要素には同じ参照番号を付して、重複する説明を省略する。
【０１１６】
図１２の情報処理システム１２００は、記憶媒体１２４０が、図２の一時保存部２３０に相当する一時保存部１２３０を有している。すなわち、記憶媒体１２４０は、一時保存部１２３０と、図２の記憶媒体２４０に相当する媒体本体１２４１と、を備えている。
【０１１７】
本実施形態によれば、記憶媒体１２４０に一時保存部１２３０が一体化されているので、より簡単な構成で本実施形態の情報処理システムを実現できる。
【０１１８】
［第５実施形態］
次に本発明の第５実施形態に係る記憶制御装置を含む情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態乃至第４実施形態と比べると、記憶制御装置としての記憶制御部がホストコンピュータとは別に単体で、あるいは、記憶媒体が有する点で異なる。その他の構成および動作は、第２実施形態から第４実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１１９】
《情報処理システム》
図１３は、本実施形態に係る記憶制御装置を含む情報処理システム１３００の構成を示すブロック図である。なお、図１３において、図２または図１２と同様の構成要素には同じ参照番号を付して、重複する説明を省略する。
【０１２０】
図１３においては、ホストコンピュータ１３１０は本実施形態の記憶制御部を有しない。一例として、本実施形態の記憶制御部１３４３は、記憶媒体１３４０に搭載されている。また、他の例として、本実施形態の記憶制御部１３２０は、ネットワーク２５０を介して独立した装置として接続されている。かかる記憶制御部１３４３または１３２０は、ソフトウェアで実現されても、ワンチップのプロセッサで実現されてもよい。
【０１２１】
本実施形態によれば、第２乃至第４実施形態のようにホストコンピュータによる処理に限定されず、一時的に保存が必要なデータに対して、一時保存部における安定した格納先領域の確保を実現することができる。
【０１２２】
［第６実施形態］
次に本発明の第６実施形態に係る記憶制御装置を含む情報処理システムについて説明する。本実施形態に係る情報処理システムは、上記第２実施形態乃至第５実施形態と比べると、一時保存部が記憶媒体と独立してネットワークに接続される点で異なる。その他の構成および動作は、第２実施形態から第５実施形態と同様であるため、同じ構成および動作については同じ符号を付してその詳しい説明を省略する。
【０１２３】
《情報処理システム》
図１４は、本実施形態に係る記憶制御装置を含む情報処理システム１４００の構成を示すブロック図である。なお、図１４において、図２、図１２または図１３と同様の構成要素には同じ参照番号を付して、重複する説明を省略する。
【０１２４】
図１４においては、一時保存部１４３０がネットワーク２５０を介して独立した装置として接続されている。
【０１２５】
本実施形態によれば、一時保存部へのアクセスを記憶媒体のアクセスと分離できるので、記憶媒体への処理に依存せず、一時的に保存が必要なデータに対して、一時保存部におけるより安定した格納先領域の確保を実現することができる。
【０１２６】
［他の実施形態］
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。また、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステムまたは装置も、本発明の範疇に含まれる。
【０１２７】
また、本発明は、複数の機器から構成されるシステムに適用されてもよいし、単体の装置に適用されてもよい。さらに、本発明は、実施形態の機能を実現する記憶制御プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされるプログラム、あるいはそのプログラムを格納した媒体、そのプログラムをダウンロードさせるＷＷＷ(World Wide Web)サーバも、本発明の範疇に含まれる。特に、少なくとも、上述した実施形態に含まれる処理ステップをコンピュータに実行させるプログラムを格納した非一時的コンピュータ可読媒体（non-transitory computer readable medium）は本発明の範疇に含まれる。
【図１】
2018005371.tif 000003
【図２】
2018005371.tif 000004
【図３】
2018005371.tif 000005
【図４Ａ】
2018005371.tif 000006
【図４Ｂ】
2018005371.tif 000007
【図５】
2018005371.tif 000008
【図６】
2018005371.tif 000009
【図７】
2018005371.tif 000010
【図８】
2018005371.tif 000011
【図９】
2018005371.tif 000012
【図１０】
2018005371.tif 000013
【図１１】
2018005371.tif 000014
【図１２】
2018005371.tif 000015
【図１３】
2018005371.tif 000016
【図１４】
2018005371.tif 000017