(57)【要約】  本願の開示する制御プログラムは、一つの態様において、データを記憶する記録装置に対するアクセス要求を受け付ける処理をコンピュータに実行させる（Ｓ１０１）。制御プログラムは、記録装置から不揮発性メモリにキャッシュしたデータを識別する識別情報を短縮したインデックス情報を記憶するメモリに、受け付ける処理によって受け付けたアクセス要求に対応するインデックス情報が存在するか否かを判定する処理をコンピュータに実行させる（Ｓ１０３）。制御プログラムは、判定する処理によってインデックス情報が存在すると判定された場合に、不揮発性メモリにアクセスし、存在しないと判定された場合に、記録装置にアクセスする処理をコンピュータに実行させる（Ｓ１０４、Ｓ１０７）。
2014038016.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
データを記憶する記録装置に対するアクセス要求を受け付け、
前記記録装置から不揮発性メモリにキャッシュしたデータを識別する識別情報を短縮したインデックス情報を記憶するメモリに、前記受け付ける処理によって受け付けたアクセス要求に対応するインデックス情報が存在するか否かを判定し、
前記判定する処理によって前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、存在しないと判定された場合に、前記記録装置にアクセスする
各処理を実行させることを特徴とする制御プログラム。
【請求項２】
前記識別情報は、データの記憶された記録装置を識別する情報と、前記記録装置の記録領域におけるデータの記録された位置を特定する情報とを含むことを特徴とする請求項１に記載の制御プログラム。
【請求項３】
前記コンピュータに、
前記判定する処理によって前記不揮発性メモリに前記識別情報が存在しないと判定された場合に、当該識別情報を履歴として前記メモリに記録し、
前記記録する処理によって前記履歴として記録された識別情報の頻度が所定頻度以上である場合に、当該識別情報により識別されるデータを前記メモリに格納する各処理をさらに実行させ、
前記判定する処理は、前記受け付ける処理によって受け付けたアクセス要求に対応するデータが前記メモリに存在する否かを判定し、
前記アクセス制御を行う処理は、前記判定する処理によって前記データが前記メモリに存在すると判定された場合に、当該メモリにアクセスし、前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、前記インデックス情報が存在しないと判定された場合に、前記記録装置にアクセスするアクセス制御を行う各処理を実行させることを特徴とする請求項１または２に記載の制御プログラム。
【請求項４】
前記コンピュータに、
前記記録装置に記憶されるデータのバージョンを示すバージョン情報を更新する処理をさらに実行し、
前記受け付ける処理は、前記記録装置がマウントされた旨の情報を受け付けし、
前記更新する処理は、前記受け付ける処理によって前記記録装置がマウントされた旨の情報を受け付けた場合に、前記記録装置に記憶されたバージョン情報を更新し、
前記判定する処理は、前記アクセス要求として、前記データに対する読込要求を前記受け付ける処理によって受け付けた場合に、前記不揮発性メモリに記憶された当該読込要求に対応するバージョン情報と、前記記録装置に記憶された当該読込要求に対応するバージョン情報とが一致するか否かを判定し、
前記アクセス制御を行う処理は、前記判定する処理によって前記バージョン情報が一致すると判定された場合に、前記不揮発性メモリにアクセスし、一致しない場合に、前記記録装置にアクセスするアクセス制御を行う各処理を実行させることを特徴とする請求項１〜３のいずれか一つに記載の制御プログラム。
【請求項５】
前記コンピュータに、
前記アクセス要求を出力するアプリケーションが実行される仮想マシンが再起動された場合に、前記記録装置から前記不揮発性メモリにキャッシュされたデータの前記識別情報に基づいて、インデックス情報を生成する処理をさらに実行させることを特徴とする請求項１または２に記載の制御プログラム。
【請求項６】
コンピュータによって実行される制御方法であって、
前記コンピュータが、
データを記憶する記録装置に対するアクセス要求を受け付け、
前記記録装置から不揮発性メモリにキャッシュしたデータを識別する識別情報を短縮したインデックス情報を記憶するメモリに、前記受け付ける処理によって受け付けたアクセス要求に対応するインデックス情報が存在するか否かを判定し、
前記判定する処理によって前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、存在しないと判定された場合に、前記記録装置にアクセスするアクセス制御を行う
各処理を実行することを特徴とする制御方法。
【請求項７】
前記識別情報は、データの記憶された記録装置を識別する情報と、前記記録装置の記録領域におけるデータの記録された位置を特定する情報とを含むことを特徴とする請求項６に記載の制御方法。
【請求項８】
前記コンピュータが、
前記判定する処理によって前記不揮発性メモリに前記識別情報が存在しないと判定された場合に、当該識別情報を履歴として前記メモリに記録し、
前記記録する処理によって前記履歴として記録された識別情報の頻度が所定頻度以上である場合に、当該識別情報により識別されるデータを前記メモリに格納する各処理をさらに実行し、
前記判定する処理は、前記受け付ける処理によって受け付けたアクセス要求に対応するデータが前記メモリに存在する否かを判定し、
前記アクセス制御を行う処理は、前記判定する処理によって前記データが前記メモリに存在すると判定された場合に、当該メモリにアクセスし、前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、前記インデックス情報が存在しないと判定された場合に、前記記録装置にアクセスするアクセス制御を行うことを特徴とする請求項６または７に記載の制御方法。
【請求項９】
前記コンピュータが、
前記記録装置に記憶されるデータのバージョンを示すバージョン情報を更新する処理をさらに実行し、
前記受け付ける処理は、前記記録装置がマウントされた旨の情報を受け付け、
前記更新する処理は、前記受け付ける処理によって前記記録装置がマウントされた旨の情報を受け付けた場合に、前記記録装置に記憶されたバージョン情報を更新し、
前記判定する処理は、前記アクセス要求として、前記データに対する読込要求を前記受け付ける処理によって受け付けた場合に、前記不揮発性メモリに記憶された当該読込要求に対応するバージョン情報と、前記記録装置に記憶された当該読込要求に対応するバージョン情報とが一致するか否かを判定し、
前記アクセス制御を行う処理は、前記判定する処理によって前記バージョン情報が一致すると判定された場合に、前記不揮発性メモリにアクセスし、一致しない場合に、前記記録装置にアクセスするアクセス制御を行うことを特徴とする請求項６〜８のいずれか一つに記載の制御方法。
【請求項１０】
前記コンピュータが、
前記アクセス要求を出力するアプリケーションが実行される仮想マシンが再起動された場合に、前記記録装置から前記不揮発性メモリにキャッシュされたデータの前記識別情報に基づいて、インデックス情報を生成する処理をさらに実行することを特徴とする請求項６または７に記載の制御方法。
【請求項１１】
データに対するアクセス要求を受け付ける受付部と、
データを記憶する記録装置から不揮発性メモリにキャッシュしたデータを識別する識別情報を短縮したインデックス情報を記憶するメモリに、前記受付部によって受け付けたアクセス要求に対応するインデックス情報が存在するか否かを判定する判定部と、
前記判定部によって前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、存在しないと判定された場合に、前記記録装置にアクセスするアクセス制御を行うアクセス制御部と
を有することを特徴とする制御装置。
【請求項１２】
前記識別情報は、データの記憶された記録装置を識別する情報と、前記記録装置の記録領域におけるデータの記録された位置を特定する情報とを含むことを特徴とする請求項１１に記載の制御装置。
【請求項１３】
前記判定部によって前記不揮発性メモリに前記識別情報が存在しないと判定された場合に、当該識別情報の履歴を前記メモリに記録する記録部と、
前記記録部によって前記履歴に記録された識別情報の頻度が所定頻度以上である場合に、当該識別情報により識別されるデータを前記メモリに格納する格納部とをさらに備え、
前記判定部は、前記受付部によって受け付けたアクセス要求に対応するデータが前記メモリに存在する否かを判定し、
前記アクセス制御部は、前記判定部によって前記データが前記メモリに存在すると判定された場合に、当該メモリにアクセスし、前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、前記インデックス情報が存在しないと判定された場合に、前記記録装置にアクセスするアクセス制御を行うことを特徴とする請求項１１または１２に記載の制御装置。
【請求項１４】
前記記録装置に記憶されるデータのバージョンを示すバージョン情報を更新する更新部をさらに備え、
前記受付部は、前記記録装置がマウントされた旨の情報を受け付け、
前記更新部は、前記受付部によって前記記録装置がマウントされた旨の情報を受け付けた場合に、前記記録装置に記憶されたバージョン情報を更新し、
前記判定部は、前記アクセス要求として、前記データに対する読込要求を前記受付部が受け付けた場合に、前記不揮発性メモリに記憶された当該読込要求に対応するバージョン情報と、前記記録装置に記憶された当該読込要求に対応するバージョン情報とが一致するか否かを判定し、
前記アクセス制御部は、前記判定部によって前記バージョン情報が一致すると判定された場合に、前記不揮発性メモリにアクセスし、一致しない場合に、前記記録装置にアクセスするアクセス制御を行うことを特徴とする請求項１１〜１３のいずれか一つに記載の制御装置。
【請求項１５】
前記アクセス要求を出力するアプリケーションが実行される仮想マシンが再起動された場合に、前記記録装置から前記不揮発性メモリにキャッシュされたデータの前記識別情報に基づいて、インデックス情報を生成する生成部をさらに有することを特徴とする請求項１１または１２に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御プログラム、制御方法及び制御装置に関する。
【背景技術】
【０００２】
従来、ＮＡＮＤ型フラッシュメモリなどの不揮発性半導体メモリを搭載したＳＳＤ（Solid  State  Drive）を、ストレージシステムのキャッシュとして利用する技術が存在する。例えば、ネットワーク上のディスク装置のデータを、ディスク装置より高速なアクセスが可能なサーバ装置内のＳＳＤにデータをキャッシュする。そして、キャッシュしたデータの格納場所やデータサイズなどの情報をタグ情報として用いることで、データへのアクセス性能を改善することが行われている。【０００３】
また、例えば、ＳＳＤにデータをキャッシュするとともに、キャッシュした全てのデータのタグ情報をサーバ装置内のメモリに制御プログラムが記憶させる。そして、メモリに記憶したタグ情報を参照することで、キャッシュ上のデータの有無を判定する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１０−４０１７０号公報
【特許文献２】特開２００３−２２３２８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の従来技術では、メモリ使用量を抑えつつアクセス性能を高めることができないという問題がある。例えば、上記の従来技術では、ＳＳＤにキャッシュした全てのデータのタグ情報をメモリに記憶させることとなるので、メモリ使用量が多くなってしまう。【０００６】
また、例えば、上記の従来技術において、キャッシュしたデータのタグ情報をメモリに記憶させず、ＳＳＤにアクセスしてキャッシュ上のデータの有無を判定する態様も考えられる。この場合、メモリの使用量は少なくすることができるが、データへのアクセスが発生するたびに、ＳＳＤにアクセスする。ＳＳＤにキャッシュされたデータが無い場合は、ディスク装置に記憶されたデータにアクセスすることとなるが、このとき、ディスク装置へのアクセスの前に、ＳＳＤへのアクセスが発生するため、データへのアクセス性能が低くなってしまう。以上のように、従来技術においては、メモリの使用量を抑えつつデータへのアクセス性能を高めることができない。【０００７】
1つの側面では、本発明は、メモリ使用量を抑えつつアクセス性能を高めることができる制御プログラム、制御方法及び制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、制御プログラムは、一つの態様において、データを記憶する記録装置に対するアクセス要求を受け付ける処理をコンピュータに実行させる。制御プログラムは、記録装置から不揮発性メモリにキャッシュしたデータを識別する識別情報を短縮したインデックス情報を記憶するメモリに、受け付ける処理によって受け付けたアクセス要求に対応するインデックス情報が存在するか否かを判定する処理をコンピュータに実行させる。制御プログラムは、判定する処理によってインデックス情報が存在すると判定された場合に、不揮発性メモリにアクセスし、存在しないと判定された場合に、記録装置にアクセスする処理をコンピュータに実行させる。
【発明の効果】
【０００９】
本願の開示する技術の一つの態様によれば、メモリ使用量を抑えつつアクセス性能を高めることができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施例１に係る情報処理システムの機能構成を示すブロック図である。
【図２】図２は、実施例１に係るタグ情報及びインデックス情報の一例について説明するための図である。
【図３】図３は、実施例１に係るタグ情報及びインデックス情報の一例について説明するための図である。
【図４】図４は、実施例１に係るＩ／Ｏ処理部の機能構成の一例を示すブロック図である。
【図５】図５は、実施例１に係るデータ読込処理の処理手順を示すフローチャートである。
【図６】図６は、実施例１に係るデータ書込処理の処理手順を示すフローチャートである。
【図７】図７は、実施例１に係る再構築処理の処理手順を示すフローチャートである。
【図８】図８は、実施例２に係るタグ情報及びインデックス情報の一例について説明するための図である。
【図９】図９は、実施例２に係るヒストリ情報の一例について説明するための図である。
【図１０】図１０は、実施例２に係るヒストリ情報の一例について説明するための図である。
【図１１】図１１は、実施例２に係るＩ／Ｏ処理部の機能構成の一例を示すブロック図である。
【図１２】図１２は、実施例２に係るデータ読込処理の処理手順を示すフローチャートである。
【図１３】図１３は、実施例３に係るタグ情報及びインデックス情報の一例について説明するための図である。
【図１４】図１４は、実施例３に係るバージョン情報を更新する処理の処理手順を示すフローチャートである。
【図１５】図１５は、実施例３に係るデータ読込処理の処理手順を示すフローチャートである。
【図１６】図１６は、実施例４に係るタグ情報及びインデックス情報の一例について説明するための図である。
【図１７】図１７は、実施例４に係るデータ読込処理の処理手順を示すフローチャートである。
【図１８】図１８は、実施例４に係る情報処理システムの機能構成を示すブロック図である。
【図１９】図１９は、実施例４に係る情報処理システムの機能構成を示すブロック図である。
【図２０】図２０は、制御プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示する制御プログラム、制御方法及び制御装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１２】
実施例１に係る情報処理システムの機能構成の一例について説明する。図１は、実施例１に係る情報処理システムの機能構成を示すブロック図である。図１に示すように、このシステムは、記録装置３０及びサーバ装置５０ａ，５０ｂ，５０ｃを有する。記録装置３０及びサーバ装置５０ａ，５０ｂ，５０ｃは、ネットワーク５を介してそれぞれ接続される。ネットワーク５としては、有線又は無線を問わず、インターネット（Internet）、ＬＡＮ（Local  Area  Network）などの任意の種類の通信網を採用して良い。なお、図１の例では、情報処理システムにサーバ装置５０ａ，５０ｂ，５０ｃの３つが含まれる場合を示したが、図示の構成に限定されるものではない。すなわち、この情報処理システムには任意数のサーバ装置５０が接続されて良い。また、サーバ装置５０ａ，５０ｂ，５０ｃの各装置を区別無く総称する場合に、サーバ装置５０と記載する。【００１３】
記録装置３０は、データを記憶する装置である。例えば、記録装置３０は、サーバ装置５０からのアクセス要求に応じて、自装置に記憶したデータの送受信を行う。一例としては、記録装置３０は、データを読み込む読込要求をサーバ装置５０から受信する。記録装置３０は、受信した読込要求にかかるデータをサーバ装置５０へ送信する。また、例えば、記録装置３０は、データを書き込む書込要求をサーバ装置５０から受信する。記録装置３０は、受信した書込要求にかかるデータを自装置内の物理ＤＩＳＫ３１に格納する。読込要求及び書込要求は、アクセス要求の一例である。【００１４】
記録装置３０は、物理ＤＩＳＫ３１ａ，３１ｂ，３１ｃ及びコントローラモジュール３３を有する。物理ＤＩＳＫ３１ａ，３１ｂ，３１ｃは、例えば、ハードディスク装置や光ディスク装置などのディスク装置である。物理ＤＩＳＫ３１ａ，３１ｂ，３１ｃは、アプリケーションからは仮想的な記憶媒体であるＶＤＩＳＫ３２ａ，３２ｂ，３２ｃ，３２ｄとしてアクセスされる。ＶＤＩＳＫ３２ａ，３２ｂ，３２ｃ，３２ｄは、記録装置３０に搭載された物理ＤＩＳＫ３１の１つ又は複数を用いて実現される仮想的な記憶媒体である。例えば、ＶＤＩＳＫ３２ａ，３２ｂ，３２ｃ，３２ｄは、後述のＶＭ５４ごとに構築される。【００１５】
コントローラモジュール３３は、物理ＤＩＳＫ３１へのデータの入出力を制御する装置である。例えば、コントローラモジュール３３は、サーバ装置５０及び物理ＤＩＳＫ３１とのデータの送受信を行うインターフェースと、サーバ装置５０からのアクセス要求を解析するＣＰＵ（Central  Processing  Unit）とを含む。【００１６】
サーバ装置５０は、情報処理を行う装置である。例えば、サーバ装置５０は、記録装置３０へアクセス要求を送信することで、記録装置３０に記憶されたデータの読み書きを行う。【００１７】
サーバ装置５０ａは、ＳＳＤ（Solid  State  Drive）５１ａ、メモリ５２ａ，５２ｂ及びハイパーバイザ５３ａを有する。また、サーバ装置５０ａは、ハイパーバイザ５３によって仮想マシンであるＶＭ（virtual  machine）５４ａ，５４ｂを実現する。なお、サーバ装置５０ａ，５０ｂ，５０ｃはそれぞれ同様の機能構成を有するので、ここではサーバ装置５０ａについて説明し、サーバ装置５０ｂ，５０ｃの説明を省略する。また、ＳＳＤ５１ａ，５１ｂ，５１ｃの各装置を区別無く総称する場合に、ＳＳＤ５１と記載し、メモリ５２ａ，５２ｂ，５２ｃ，５２ｄの各装置を区別無く総称する場合に、メモリ５２と記載する。また、ハイパーバイザ５３ａ，５３ｂ，５３ｃの各装置を区別無く総称する場合に、ハイパーバイザ５３と記載し、ＶＭ５４ａ，５４ｂ，５４ｃ，５４ｄの各装置を区別無く総称する場合に、ＶＭ５４と記載する。【００１８】
ＳＳＤ５１は、例えば、不揮発性メモリを備えた記憶ドライブ装置である。ＳＳＤ５１は、記録装置３０から送信されたデータをキャッシュするとともに、キャッシュしたデータのタグ情報を記憶する。メモリ５２は、ＳＳＤ５１に記憶されたタグ情報を短縮したインデックス情報を記憶する。【００１９】
ハイパーバイザ５３は、サーバ装置５０の物理的な計算機資源を論理的に分割または統合して仮想マシンを実現する。ハイパーバイザ５３ａは、Ｉ／Ｏ処理部１００ａを有する。Ｉ／Ｏ処理部１００ａは、サーバ装置５０ａと記録装置３０との間でデータの送受信を制御する。ＶＭ５４は、ハイパーバイザ５３によって実現された仮想マシンである。ＶＭ５４は、ＶＭ５４上で所定のソフトウェアを実行することにより、様々なサービスを提供する。ＶＭ５４は、サービスを利用する利用者の操作に応じて、記録装置３０へアクセス要求を送信する。なお、Ｉ／Ｏ処理部１００ａ，１００ｂ，１００ｃの各装置を区別無く総称する場合に、Ｉ／Ｏ処理部１００と記載する。【００２０】
ここで、Ｉ／Ｏ処理部１００は、例えば、ＶＭ５４ａから送信されたアクセス要求を受け付けると、メモリ５２ａに記憶されたインデックス情報を参照し、ＳＳＤ５１ａにアクセスするか、記録装置３０にアクセスするかを判定する。【００２１】
次に、図２及び図３を用いて、実施例１に係るタグ情報及びインデックス情報の一例について説明する。図２及び図３は、実施例１に係るタグ情報及びインデックス情報の一例について説明するための図である。【００２２】
図２に示すように、ＳＳＤ５１上に記憶されるタグ情報２ａは、記録装置識別子２ｂ、記録装置内相対位置２ｃ及び有効フラグ２ｄを含む。このうち、記録装置識別子２ｂは、記録装置３０に含まれる物理ＤＩＳＫ３１を識別する情報である。記録装置内相対位置２ｃは、アクセス要求にかかるデータが記録装置３０内のどの位置に存在するかを表す情報であり、例えば、記録装置３０の記憶領域に割り当てられた先頭からの論理的なブロック番号である。有効フラグ２ｄは、タグ情報２ａによって識別されるＳＳＤ５１上のデータが有効か無効かを表す情報であり、例えば、有効フラグ２ｄが「１」であれば有効、有効フラグ２ｄが「０」であれば無効であることを示す。ＳＳＤ５１上にキャッシュされたデータは、記録装置識別子２ｂ及び記録装置内相対位置２ｃによってハッシュテーブルにおけるエントリが決定される。【００２３】
また、メモリ５２上に記憶されるインデックス情報２ｅは、短縮化記録装置識別子２ｆ、短縮化記録装置内相対位置２ｇ及び有効フラグ２ｄを含む。このうち、短縮化記録装置識別子２ｆは、記録装置識別子２ｂがハッシュ関数によって短縮化された情報である。短縮化記録装置内相対位置２ｇは、記録装置内相対位置２ｃがハッシュ関数によって短縮化された情報である。なお、記録装置識別子２ｂ及び記録装置内相対位置２ｃは、後述のインデックス管理部１０４によって短縮化される。また、ここでは、記録装置識別子２ｂ及び記録装置内相対位置２ｃがそれぞれハッシュ関数によって短縮化されるものと説明したが、本発明はこれに限定されるものではない。例えば、記録装置識別子２ｂ及び記録装置内相対位置２ｃは、記録装置識別子２ｂ及び記録装置内相対位置２ｃそれぞれの後方の情報のみを切り出すことで、短縮化されても良い。【００２４】
図３には、タグ名・インデックス名、短縮化手法の種別、記録装置識別子／短縮化記録装置識別子、記録装置内相対位置／短縮化記録装置内相対位置及び有効フラグを対応付けて例示する。このうち、タグ名・インデックス名は、タグ情報又はインデックス情報を識別するための名称を示す。短縮化手法の種別は、記録装置識別子及び記録装置内相対位置を短縮化する手法の種別を示す。記録装置識別子／短縮化記録装置識別子は、記録装置識別子又は短縮化記録装置識別子の一例を示す。記録装置内相対位置／短縮化記録装置内相対位置は、記録装置内相対位置又は短縮化記録装置内相対位置の一例を示す。有効フラグは、有効フラグの一例を示す。なお、図３中のハイフンは、対応する情報を含まないことを示す。【００２５】
図３の１行目は、タグ情報「タグＡ」が、記録装置識別子「ａｂＥ０ａ１−５ｄＰＸ−ＩＴｐｋ−４ＡｍＡ−ａｚＣ２−４ｚｚＣ−０ｍ０ｃＬＸ」、記録装置内相対位置「１３５７２４６８６４」及び有効フラグ「１」を含むことを示す。また、図３の２行目は、タグ情報「タグＢ」が、記録装置識別子「ｃｄＥ０ａ２−６ｄＸＸ−ＩＲｋｍ−３ＬｃＱ−ｑｒＣ２−４ｚｚＣ−０ｍ０ｃＰＹ」、記録装置内相対位置「２４６８１３５７９８７」及び有効フラグ「１」を含むことを示す。また、図３の３行目は、タグ情報「タグＣ」が、記録装置識別子「ａｃＱ０ａ７−１ｅＯＬ−ＩＮｘｉ−３ＰｚＭ−ｐｌＷ４−４ｚｚＣ−０ｍ０ｃＬＸ」、記録装置内相対位置「３９１５７２４６８６４」及び有効フラグ「１」を含むことを示す。【００２６】
また、図３の４行目から６行目は、１行目から３行目に示した「タグＡ」、「タグＢ」及び「タグＣ」をそれぞれハッシュ関数によって短縮化したインデックス情報である。ここでは一例として、ｍｄ５と呼ばれるコマンドによってハッシュ化した場合を示す。図３の４行目は、インデックス情報「タグＡのインデックス」が、短縮化記録装置識別子「ｄ８７９ｃ３３５ａｄｃｄｅｆ３０３１ｆ１ｃｂ６３３ｃ５ｂ８８１１」を含むことを示す。また、図３の４行目は、インデックス情報「タグＡのインデックス」が、短縮化記録装置内相対位置「４ｆｃｅ９ｅｂｅ３３５３ｂｄ９７６ａａ７０８ｂｂ３ｄ７ｂａ７５ｆ」及び有効フラグ「１」を含むことを示す。また、図３の５行目は、インデックス情報「タグＢのインデックス」が、短縮化記録装置識別子「ｃ４ａｃ４ａａｂ８６ｅ５ａ６７ｃ０ｂｃ４８３ｂ４３８ｆ９７４５６」を含むことを示す。また、図３の５行目は、インデックス情報「タグＢのインデックス」が、短縮化記録装置内相対位置「ｄｃｆａ０６４ｄｄ０３ｂａ２０７ｆｃ９ｂｄ８ａｂ７０ａ４３８ｃ６」及び有効フラグ「１」を含むことを示す。また、図３の６行目は、インデックス情報「タグＣのインデックス」が、短縮化記録装置識別子「ｅｃｂ２２４９１５９６０ｃ９８ｂ６９６６７ｆｅｆ３１５９ｅ１ｃｅ」を含むことを示す。また、図３の６行目は、インデックス情報「タグＣのインデックス」が、短縮化記録装置内相対位置「ｂ５５４ａ０ｃａｃｆｂｂｃｄ３１７５ｄ５１ｆａ６ａ６７９ｅｂ６１」及び有効フラグ「１」を含むことを示す。【００２７】
また、図３の７行目から９行目は、１行目から３行目に示した「タグＡ」、「タグＢ」及び「タグＣ」をそれぞれ後方の情報のみを切り出すことによって短縮化したインデックス情報である。ここでは一例として、記録装置識別子の下１１桁と、記録装置内相対位置の下８桁とをそれぞれ切り出したものである。図３の７行目は、インデックス情報「タグＡのインデックス」が、短縮化記録装置識別子「４ｚｚＣ−０ｍ０ｃＬＸ」、短縮化記録装置内相対位置「５７２４６８６４」及び有効フラグ「１」を含むことを示す。また、図３の８行目は、インデックス情報「タグＢのインデックス」が、短縮化記録装置識別子「４ｚｚＣ−０ｍ０ｃＰＹ」、短縮化記録装置内相対位置「８１３５７９８７」及び有効フラグ「１」を含むことを示す。また、図３の９行目は、インデックス情報「タグＣのインデックス」が、短縮化記録装置識別子「４ｚｚＣ−０ｍ０ｃＬＸ」、短縮化記録装置内相対位置「５７２４６８６４」及び有効フラグ「１」を含むことを示す。なお、タグ情報の一部の情報のみを切り出したインデックス情報を、「パーシャルタグ」とも称する。【００２８】
次に、図４を用いて、実施例１に係るＩ／Ｏ処理部１００の機能構成の一例を説明する。図４は、実施例１に係るＩ／Ｏ処理部１００の機能構成の一例を示すブロック図である。【００２９】
図４に示すように、Ｉ／Ｏ処理部１００は、要求抽出部１０１と、データ読込部１０２と、データ書込部１０３と、インデックス管理部１０４と、メモリアクセス部１０５と、タグ情報管理部１０６と、ＳＳＤアクセス部１０７と、記録装置管理部１０８と、記録装置アクセス部１０９とを有する。また、Ｉ／Ｏ処理部１００の機能は、例えば、ＣＰＵ（Central  Processing  Unit）が所定のプログラムを実行することで実現することができる。【００３０】
要求抽出部１０１は、ＶＭ５４上で動作するアプリケーションとＩ／Ｏ処理部１００との間で入出力される情報から、アクセス要求を抽出する。例えば、要求抽出部１０１は、記録装置のデータに対する読込要求を受け付ける。要求抽出部１０１は、受け付けた読込要求をデータ読込部１０２へ出力する。また、要求抽出部１０１は、記録装置のデータに対する書込要求を受け付ける。要求抽出部１０１は、受け付けた書込要求をデータ書込部１０３へ出力する。なお、読込要求及び書込要求は、アクセス要求の一例である。また、アクセス要求は、タグ情報２ａを含む。【００３１】
また、要求抽出部１０１は、ＶＭ５４が再起動された場合に、ＶＭ５４の再起動を受け付ける。要求抽出部１０１は、ＶＭ５４ａが再起動された旨を示す情報を後述のインデックス管理部１０４へ出力する。【００３２】
データ読込部１０２は、記憶装置３０からのデータの読み込みを制御する。例えば、データ読込部１０２は、要求抽出部１０１から読込要求を受け付ける。データ読込部１０２は、後述のインデックス管理部１０４、タグ情報管理部１０６及び記録装置管理部１０８をそれぞれ制御することで、読込要求にかかるデータを、読込要求を出力したＶＭ５４上のアプリケーションへ出力する。【００３３】
例えば、データ読込部１０２は、要求抽出部１０１から読込要求を受け付けると、インデックス管理部１０４にメモリ５２のインデックス情報２ｅにアクセスさせる。データ読込部１０２は、インデックス管理部１０４に読込要求を出力し、読込要求に対応するインデックス情報２ｅがメモリ５２に存在するか否かをインデックス管理部１０４に判定させる。データ読込部１０２は、インデックス情報２ｅがメモリ５２に存在すると判定された場合に、ＳＳＤ５１にアクセスし、存在しないと判定された場合に、記録装置３０にアクセスするアクセス制御を行う。【００３４】
記録装置３０にアクセスすると、データ読込部１０２は、記録装置３０から読込要求にかかるデータを記録装置管理部１０８を介して取得する。データ読込部１０２は、取得したデータを、読込要求を出力したＶＭ５４上のアプリケーションへ出力する。データ読込部１０２は、取得したデータ、そのデータの記録装置識別子２ｂ及び記録装置内相対位置２ｃをタグ情報管理部１０６に出力する。データ読込部１０２は、タグ情報管理部１０６に、取得したデータをＳＳＤ５１にキャッシュさせ、キャッシュしたデータのタグ情報２ａを格納させる。データ読込部１０２は、キャッシュしたデータのタグ情報２ａをインデックス管理部１０４に出力する。データ読込部１０２は、インデックス管理部１０４に、キャッシュしたデータのタグ情報２ａに対応するインデックス情報２ｅをメモリ５２に格納させる。【００３５】
ＳＳＤ５１にアクセスすると、データ読込部１０２は、タグ情報管理部１０６に読込要求を出力し、ＳＳＤ５１上にキャッシュしたデータが存在するか否かをタグ情報管理部１０６に判定させる。ＳＳＤ５１上にキャッシュしたデータが存在する場合には、タグ情報管理部１０６にＳＳＤ５１から読込要求にかかるデータを取得させる。データ読込部１０２は、取得されたデータを、読込要求を出力したＶＭ５４上のアプリケーションへ出力する。なお、ＳＳＤ５１上にキャッシュしたデータが存在しない場合には、記録装置管理部１０８に記録装置３０から読込要求にかかるデータを取得させる。【００３６】
このように、データ読込部１０２は、インデックス管理部１０４、タグ情報管理部１０６及び記録装置管理部１０８をそれぞれ制御することで、読込要求にかかるデータを、読込要求を出力したＶＭ５４上のアプリケーションへ出力する。【００３７】
データ書込部１０３は、記憶装置３０へのデータの書き込みを制御する。例えば、データ書込部１０３は、要求抽出部１０１から書込要求を受け付ける。データ書込部１０３は、インデックス管理部１０４、タグ情報管理部１０６及び記録装置管理部１０８をそれぞれ制御することで、書込要求にかかるデータを、記録装置３０に書き込む。【００３８】
例えば、データ書込部１０３は、要求抽出部１０１から書込要求を受け付けると、インデックス管理部１０４にメモリ５２のインデックス情報２ｅにアクセスさせる。データ書込部１０３は、インデックス管理部１０４に書込要求を出力し、書込要求に対応するインデックス情報２ｅがメモリ５２に存在するか否かをインデックス管理部１０４に判定させる。データ書込部１０３は、インデックス情報２ｅがメモリ５２に存在すると判定された場合に、ＳＳＤ５１にアクセスし、存在しないと判定された場合に、記録装置３０にアクセスするアクセス制御を行う。記録装置３０にアクセスすると、データ書込部１０３は、記録装置３０にデータを書き込む。【００３９】
ＳＳＤ５１にアクセスすると、データ書込部１０３は、タグ情報管理部１０６に書込要求を出力し、ＳＳＤ５１上にキャッシュしたデータが存在するか否かをタグ情報管理部１０６に判定させる。ＳＳＤ５１上にキャッシュしたデータが存在する場合には、データ書込部１０３は、タグ情報２ａの有効フラグ２ｄを有効から無効に変更する旨の情報をタグ情報管理部１０６に出力する。データ書込部１０３は、タグ情報管理部１０６に、ＳＳＤ５１上のタグ情報２ａの有効フラグ２ｄを有効から無効に変更させる。データ書込部１０３は、インデックス情報２ｅの有効フラグ２ｄを有効から無効に変更する旨の情報をインデックス管理部１０４に出力する。データ書込部１０３は、インデックス管理部１０４に、メモリ５２上のインデックス情報２ｅの有効フラグ２ｄを有効から無効に変更させる。なお、ＳＳＤ５１上にキャッシュしたデータが存在しない場合には、データ書込部１０３は、記録装置３０にデータを書き込む。【００４０】
このように、データ書込部１０３は、インデックス管理部１０４、タグ情報管理部１０６及び記録装置管理部１０８をそれぞれ制御することで、書込要求にかかるデータを、記録装置３０に書き込む。【００４１】
インデックス管理部１０４は、後述のメモリアクセス部１０５を介してメモリ５２上のインデックス情報２ｅにアクセスし、インデックス情報２ｅを管理する。例えば、インデックス管理部１０４は、記録装置３０のデータに対するアクセス要求があった際に、そのデータに対応するインデックス情報２ｅがメモリ５２に存在するか否かを判定する。【００４２】
ここで、インデックス管理部１０４がアクセス要求を受け付けて、アクセス要求に対応するインデックス情報２ｅがメモリ５２に存在するか否かを判定する処理について説明する。以下では、インデックス管理部１０４が読込要求を受け付けた場合の処理を説明するが、書込要求を受け付けた場合の処理も同様である。【００４３】
例えば、インデックス管理部１０４は、データ読込部１０２から読込要求を受け付ける。インデックス管理部１０４は、受け付けた読込要求から、読込要求にかかるデータの記録装置識別子２ｂ及び記録装置内相対位置２ｃを抽出する。インデックス管理部１０４は、記録装置識別子２ｂ及び記録装置内相対位置２ｃをそれぞれ短縮化し、短縮化記録装置識別子２ｆ及び短縮化記録装置内相対位置２ｇを生成する。一態様としては、インデックス管理部１０４は、図３の１行目の「タグＡ」の記録装置識別子２ｂ及び記録装置内相対位置２ｃをハッシュ関数によってそれぞれ短縮化する。これにより、インデックス管理部１０４は、図３の４行目の「タグＡのインデックス」の短縮化記録装置識別子２ｆ及び短縮化記録装置内相対位置２ｇを生成する。他の態様としては、インデックス管理部１０４は、図３の１行目の「タグＡ」の記録装置識別子２ｂ及び記録装置内相対位置２ｃそれぞれの後方の情報のみを切り出して短縮化する。これにより、インデックス管理部１０４は、図３の７行目の「タグＡのインデックス」の短縮化記録装置識別子２ｆ及び短縮化記録装置内相対位置２ｇを生成する。【００４４】
インデックス管理部１０４は、生成した短縮化記録装置識別子２ｆ及び短縮化記録装置内相対位置２ｇを含むインデックス情報２ｅがメモリ５２上にあり、さらにその有効フラグ２ｄが「１」であれば、次の処理を実行する。つまり、インデックス管理部１０４は、読込要求に対応するインデックス情報２ｅがメモリ５２に存在する旨の判定結果をデータ読込部１０２へ出力する。【００４５】
一方、インデックス管理部１０４は、生成した短縮化記録装置識別子２ｆ及び短縮化記録装置内相対位置２ｇを含むインデックス情報２ｅがメモリ５２上にあり、その有効フラグ２ｄが「０」であれば、次の処理を実行する。つまり、インデックス管理部１０４は、読込要求に対応するインデックス情報２ｅがメモリ５２に存在しない旨の判定結果をデータ読込部１０２へ出力する。【００４６】
また、インデックス管理部１０４は、生成した短縮化記録装置識別子２ｆ及び短縮化記録装置内相対位置２ｇを含むインデックス情報２ｅがメモリ５２上になければ、次の処理を実行する。つまり、インデックス管理部１０４は、読込要求に対応するインデックス情報２ｅがメモリ５２に存在しない旨の判定結果をデータ読込部１０２へ出力する。【００４７】
このように、インデックス管理部１０４は、データ読込部１０２から読込要求を受け付けると、読込要求に対応するインデックス情報２ｅがメモリ５２に存在するか否かを判定し、判定結果をデータ読込部１０２へ出力する。また、同様に、インデックス管理部１０４は、データ書込部１０３から書込要求を受け付けると、書込要求に対応するインデックス情報２ｅがメモリ５２に存在するか否かを判定し、判定結果をデータ書込部１０３へ出力する。【００４８】
また、インデックス管理部１０４は、キャッシュされたデータのタグ情報２ａに対応するインデックス情報２ｅをメモリ５２に格納する。例えば、インデックス管理部１０４は、キャッシュされたデータのタグ情報２ａをデータ読込部１０２から受け付ける。インデックス管理部１０４は、受け付けたタグ情報２ａから記録装置識別子２ｂ及び記録装置内相対位置２ｃを抽出する。インデックス管理部１０４は、記録装置識別子２ｂ及び記録装置内相対位置２ｃをそれぞれ短縮化し、短縮化記録装置識別子２ｆ及び短縮化記録装置内相対位置２ｇを生成する。インデックス管理部１０４は、生成した短縮化記録装置識別子２ｆ及び短縮化記録装置内相対位置２ｇと、有効フラグ２ｄ「１」とを対応付けて、インデックス情報２ｅとしてメモリ５２に格納する。【００４９】
また、インデックス管理部１０４は、記録装置３０にデータが書き込まれる場合に、メモリ５２上のインデックス情報２ｅの有効フラグ２ｄを有効から無効に変更する。例えば、インデックス管理部１０４は、インデックス情報２ｅの有効フラグ２ｄを有効から無効に変更する旨の情報をデータ書込部１０３から受け付ける。インデックス管理部１０４は、メモリ５２上のインデックス情報２ｅの有効フラグ２ｄを有効から無効に変更する。【００５０】
また、インデックス管理部１０４は、ＶＭ５４が再起動された場合に、ＳＳＤ５１上の全エントリのタグ情報２ａからメモリ５２上のインデックス情報２ｅを再構築する。例えば、インデックス管理部１０４は、ＶＭ５４ａが再起動された旨を示す情報を要求抽出部１０１から受け付けると、ＳＳＤ５１ａに記憶された全エントリのタグ情報２ａを、メモリアクセス部１０５を介して取得する。インデックス管理部１０４は、取得したタグ情報２ａに含まれる記録装置識別子２ｂ及び記録装置内相対位置２ｃをそれぞれ短縮化し、短縮化記録装置識別子２ｆ及び短縮化記録装置内相対位置２ｇを生成する。インデックス管理部１０４は、生成した短縮化記録装置識別子２ｆ及び短縮化記録装置内相対位置２ｇと、有効フラグ２ｄ「１」とを対応付けて、インデックス情報２ｅとしてメモリ５２に格納する。【００５１】
メモリアクセス部１０５は、インデックス管理部１０４の処理に応じてメモリ５２にアクセスする。例えば、メモリアクセス部１０５は、インデックス管理部１０４によってアクセス要求に対応するインデックス情報２ｅがメモリ５２に存在するか否か判定される場合に、メモリ５２上のインデックス情報２ｅを取得し、インデックス管理部１０４へ送る。また、メモリアクセス部１０５は、インデックス管理部１０４によってインデックス情報２ｅが生成された場合に、生成されたインデックス情報２ｅをメモリ５２に格納する。【００５２】
タグ情報管理部１０６は、後述のＳＳＤアクセス部１０７を介してＳＳＤ５１上のタグ情報２ａにアクセスし、タグ情報２ａを管理する。例えば、タグ情報管理部１０６は、アクセス要求を受け付けて、アクセス要求に対応するタグ情報２ａがＳＳＤ５１上に存在するか否かを判定する。【００５３】
例えば、タグ情報管理部１０６は、データ読込部１０２から読込要求を受け付ける。タグ情報管理部１０６は、受け付けた読込要求から、読込要求にかかるデータの記録装置識別子２ｂ及び記録装置内相対位置２ｃを抽出する。タグ情報管理部１０６は、抽出した記録装置識別子２ｂ及び記録装置内相対位置２ｃを含むタグ情報２ａがＳＳＤ５１上にあれば、読込要求にかかるデータをＳＳＤ５１から取得する。そして、タグ情報管理部１０６は、取得したデータをデータ読込部１０２へ出力する。【００５４】
一方、タグ情報管理部１０６は、抽出した記録装置識別子２ｂ及び記録装置内相対位置２ｃを含むタグ情報２ａがＳＳＤ５１上になければ、読込要求に対応するタグ情報２ａがＳＳＤ５１に存在しない旨の判定結果をデータ読込部１０２へ出力する。【００５５】
また、例えば、タグ情報管理部１０６は、データ書込部１０３から書込要求を受け付ける。タグ情報管理部１０６は、受け付けた書込要求から、書込要求にかかるデータの記録装置識別子２ｂ及び記録装置内相対位置２ｃを抽出する。タグ情報管理部１０６は、抽出した記録装置識別子２ｂ及び記録装置内相対位置２ｃを含むタグ情報２ａがＳＳＤ５１上にあれば、次の処理を実行する。つまり、タグ情報管理部１０６は、ＳＳＤ５１上のタグ情報２ａの有効フラグ２ｄを有効から無効に変更するとともに、アクセス要求に対応するタグ情報２ａがＳＳＤ５１に存在する旨の判定結果をデータ書込部１０３へ出力する。【００５６】
一方、タグ情報管理部１０６は、抽出した記録装置識別子２ｂ及び記録装置内相対位置２ｃを含むタグ情報２ａがＳＳＤ５１上になければ、書込要求に対応するタグ情報２ａがＳＳＤ５１に存在しない旨の判定結果をデータ書込部１０３へ出力する。【００５７】
このように、タグ情報管理部１０６は、アクセス要求に対応するタグ情報２ａがＳＳＤ５１上に存在するか否かを判定し、判定結果をデータ読込部１０２又はデータ書込部１０３へ出力する。【００５８】
また、タグ情報管理部１０６は、ＳＳＤ５１にデータをキャッシュする。例えば、タグ情報管理部１０６は、読込要求にかかるデータ、そのデータの記録装置識別子２ｂ及び記録装置内相対位置２ｃをデータ読込部１０２から受け付ける。タグ情報管理部１０６は、受け付けたデータをＳＳＤ５１にキャッシュして、キャッシュしたデータのタグ情報２ａを更新する。【００５９】
ＳＳＤアクセス部１０７は、タグ情報管理部１０６の処理に応じてＳＳＤ５１にアクセスする。例えば、ＳＳＤアクセス部１０７は、タグ情報管理部１０６によってアクセス要求に対応するタグ情報２ａがＳＳＤ５１に存在するか否か判定される場合に、ＳＳＤ５１上のタグ情報２ａを取得し、タグ情報管理部１０６へ送る。また、ＳＳＤアクセス部１０７は、タグ情報管理部１０６によってデータがキャッシュされる場合に、キャッシュされるデータ及びそのタグ情報２ａをＳＳＤ５１に格納する。【００６０】
記録装置管理部１０８は、後述の記録装置アクセス部１０９を介して記録装置３０のデータを管理する。【００６１】
例えば、記録装置管理部１０８は、データ読込部１０２から読込要求を受け付ける。記録装置管理部１０８は、受け付けた読込要求から、読込要求にかかるデータの記録装置識別子２ｂ及び記録装置内相対位置２ｃを抽出する。記録装置管理部１０８は、記録装置識別子２ｂで識別される記録装置３０にアクセスする。記録装置管理部１０８は、記録装置３０内の記録装置内相対位置２ｃで識別される格納場所にあるデータを取得する。そして、記録装置管理部１０８は、取得したデータをデータ読込部１０２へ出力する。【００６２】
また、記録装置管理部１０８は、データ書込部１０３から書込要求を受け付ける。記録装置管理部１０８は、受け付けた書込要求から、書込要求にかかるデータの記録装置識別子２ｂ及び記録装置内相対位置２ｃを抽出する。記録装置管理部１０８は、記録装置識別子２ｂで識別される記録装置３０にアクセスする。記録装置管理部１０８は、記録装置３０内の記録装置内相対位置２ｃで識別される格納場所にデータを書き込む。【００６３】
記録装置アクセス部１０９は、記録装置管理部１０８の処理に応じて記録装置３０にアクセスする。例えば、記録装置アクセス部１０９は、記録装置管理部１０８によって記憶部３０からデータが読み込まれる場合に、読込要求にかかるデータを記録装置３０から取得し、取得したデータを記録装置管理部１０８へ送る。また、記録装置アクセス部１０９は、記録装置管理部１０８によって記憶部３０にデータが書き込まれる場合に、書込要求にかかるデータを記録装置管理部１０８から受け付け、受け付けたデータを記録装置３０に書き込む。【００６４】
次に、図５を用いて、実施例１に係るデータ読込処理の処理手順について説明する。図５は、実施例１に係るデータ読込処理の処理手順を示すフローチャートである。図５に示す処理は、例えば、要求抽出部が、ＶＭ５４上で動作するアプリケーションからの読込要求を受け付けたことを契機として実行される。【００６５】
Ｉ／Ｏ処理部１００は、ＶＭ５４上で動作するアプリケーションからの読込要求を受け付ける（ステップＳ１０１）。Ｉ／Ｏ処理部１００は、メモリ５２のインデックス情報にアクセスする（ステップＳ１０２）。【００６６】
Ｉ／Ｏ処理部１００は、読込要求にかかるデータがＳＳＤ５１にキャッシュされている可能性があるか否かを判定する（ステップＳ１０３）。例えば、Ｉ／Ｏ処理部１００は、受け付けた読込要求に対応するインデックス情報２ｅがメモリ５２に存在するか否かを判定する。【００６７】
読込要求にかかるデータがＳＳＤ５１にキャッシュされている可能性がない場合には（ステップＳ１０３否定）、Ｉ／Ｏ処理部１００は、記録装置３０のデータにアクセスする（ステップＳ１０４）。例えば、Ｉ／Ｏ処理部１００は、読込要求にかかるデータを記録装置３０から取得し、ＶＭ５４上のアプリケーションへ出力する。【００６８】
Ｉ／Ｏ処理部１００は、記録装置３０から取得したデータをＳＳＤ５１にキャッシュして、タグ情報２ａを更新する（ステップＳ１０５）。Ｉ／Ｏ処理部１００は、メモリ５２上のインデックス情報２ｅを更新し（ステップＳ１０６）、処理を終了する。【００６９】
一方、読込要求にかかるデータがＳＳＤ５１にキャッシュされている可能性がある場合には（ステップＳ１０３肯定）、Ｉ／Ｏ処理部１００は、ＳＳＤ５１上のタグ情報２ａにアクセスする（ステップＳ１０７）。【００７０】
Ｉ／Ｏ処理部１００は、ＳＳＤ５１上にキャッシュしたデータが存在するか否かを判定する（ステップＳ１０８）。ＳＳＤ５１上にキャッシュしたデータが存在する場合には（ステップＳ１０８肯定）、Ｉ／Ｏ処理部１００は、読込要求にかかるデータをＳＳＤ５１から取得し（ステップＳ１０９）、処理を終了する。例えば、Ｉ／Ｏ処理部１００は、読込要求にかかるデータをＳＳＤ５１から取得し、ＶＭ５４上で動作するアプリケーションへ出力する。【００７１】
一方、ＳＳＤ５１上にキャッシュしたデータが存在しない場合には（ステップＳ１０８否定）、Ｉ／Ｏ処理部１００は、ステップＳ１０４の処理へ移行する。【００７２】
次に、図６を用いて、実施例１に係るデータ書込処理の処理手順について説明する。図６は、実施例１に係るデータ書込処理の処理手順を示すフローチャートである。図６に示す処理は、例えば、要求抽出部が、ＶＭ５４上で動作するアプリケーションから記録装置３０のデータに対する書込要求を受け付けたことを契機として実行される。【００７３】
Ｉ／Ｏ処理部１００は、ＶＭ５４上で動作するアプリケーションからの書込要求を受け付ける（ステップＳ２０１）。Ｉ／Ｏ処理部１００は、メモリ５２のインデックス情報にアクセスする（ステップＳ２０２）。【００７４】
Ｉ／Ｏ処理部１００は、書込要求にかかるデータがＳＳＤ５１にキャッシュされている可能性があるか否かを判定する（ステップＳ２０３）。例えば、Ｉ／Ｏ処理部１００は、受け付けた読込要求に対応するインデックス情報２ｅがメモリ５２に存在するか否かを判定する。【００７５】
書込要求にかかるデータがＳＳＤ５１にキャッシュされている可能性がない場合には（ステップＳ２０３否定）、Ｉ／Ｏ処理部１００は、記録装置３０にデータを書き込み（ステップＳ２０４）、処理を終了する。【００７６】
一方、書込要求にかかるデータがＳＳＤ５１にキャッシュされている可能性がある場合には（ステップＳ２０３肯定）、Ｉ／Ｏ処理部１００は、ＳＳＤ５１上のタグ情報にアクセスする（ステップＳ２０５）。【００７７】
Ｉ／Ｏ処理部１００は、ＳＳＤ５１上にキャッシュしたデータが存在するか否かを判定する（ステップＳ２０６）。ＳＳＤ５１上にキャッシュしたデータが存在する場合には（ステップＳ２０６肯定）、Ｉ／Ｏ処理部１００は、書込要求にかかるデータのタグ情報の有効フラグを無効に変更する（ステップＳ２０７）。そして、Ｉ／Ｏ処理部１００は、書込要求にかかるデータのインデックス情報の有効フラグを無効に変更し（ステップＳ２０８）、ステップＳ２０４の処理へ移行する。【００７８】
一方、ＳＳＤ５１上にキャッシュしたデータが存在しない場合には（ステップＳ２０６否定）、Ｉ／Ｏ処理部１００は、ステップＳ２０４の処理へ移行する。【００７９】
次に、図７を用いて、実施例１に係る再構築処理の処理手順について説明する。図７は、実施例１に係る再構築処理の処理手順を示すフローチャートである。図７に示す処理は、例えば、要求抽出部が、ＶＭ５４の再起動を受け付けたことを契機として実行される。【００８０】
Ｉ／Ｏ処理部１００は、ＶＭ５４の再起動を受け付ける（ステップＳ３０１）。Ｉ／Ｏ処理部１００は、ＳＳＤ５１上の全エントリのタグ情報２ａからメモリ５２上のインデックス情報を再構築し（ステップＳ３０２）、処理を終了する。例えば、Ｉ／Ｏ処理部１００ａは、ＶＭ５４ａが再起動された旨を示す情報を要求抽出部１０１から受け付けると、ＳＳＤ５１ａに記憶された全エントリのタグ情報２ａを取得する。Ｉ／Ｏ処理部１００ａは、取得したタグ情報２ａに含まれる記録装置識別子２ｂ及び記録装置内相対位置２ｃをそれぞれ短縮化し、短縮化記録装置識別子２ｆ及び短縮化記録装置内相対位置２ｇを生成する。そして、Ｉ／Ｏ処理部１００ａは、生成した短縮化記録装置識別子２ｆ及び短縮化記録装置内相対位置２ｇと、有効フラグ２ｄとを対応付けて、インデックス情報２ｅとしてメモリ５２に格納する。【００８１】
次に、実施例１に係るＩ／Ｏ処理部１００の効果について説明する。Ｉ／Ｏ処理部１００は、データに対するアクセス要求を受け付ける。Ｉ／Ｏ処理部１００は、受け付けたアクセス要求に対応するインデックス情報がメモリに存在するか否かを判定する。Ｉ／Ｏ処理部１００は、インデックス情報が存在すると判定した場合に、不揮発性メモリにアクセスし、存在しないと判定した場合に、記録装置３０にアクセスするアクセス制御を行う。このため、Ｉ／Ｏ処理部１００は、メモリ使用量を抑えつつアクセス性能を高めることができる。【００８２】
例えば、Ｉ／Ｏ処理部１００は、記録装置３０からＳＳＤ５１にキャッシュしたデータを識別するタグ情報２ａを短縮したインデックス情報２ｅをメモリ５２上に記憶する。このため、Ｉ／Ｏ処理部１００は、メモリ使用量を抑えることができる。【００８３】
また、例えば、Ｉ／Ｏ処理部１００は、アクセス要求にかかるデータがＳＳＤ５１上に存在しない場合に、ＳＳＤ５１へのアクセス回数を減らすことで、アクセス性能を高めることができる。例えば、従来技術では、アクセス要求にかかるデータがＳＳＤ５１上に存在しない場合にも、アクセス要求を受け付ける度にＳＳＤ５１へアクセスしていた。これに対して、Ｉ／Ｏ処理部１００は、アクセス要求に対応するインデックス情報２ｅがメモリ５２に存在するか否かを判定する。そして、Ｉ／Ｏ処理部１００は、インデックス情報２ｅがメモリ５２に存在しない場合には、アクセス要求にかかるデータがＳＳＤ５１上に存在しないと判定し、ＳＳＤ５１へアクセスすることなく記録装置３０へアクセスする。このため、Ｉ／Ｏ処理部１００は、ＳＳＤ５１へのアクセス回数を減らすことができるので、アクセス性能を高めることができる。【００８４】
また、例えば、Ｉ／Ｏ処理部１００は、記録装置３０からＳＳＤ５１にキャッシュされたデータのタグ情報２ａに基づいて、インデックス情報２ｅを生成する。このため、Ｉ／Ｏ処理部１００は、メモリ５２がリセットされた場合に、容易にインデックス情報２ｅを生成することができる。
【実施例２】
【００８５】
上記の実施例１では、例えば、異なる２つのタグ情報２ａが短縮化された場合に、例えばハッシュ値の衝突によってインデックス情報２ｅが同一の情報になってしまうことがある。図３に示す例では、「タグＡ」の後方の情報のみを切り出すことによって短縮化した「タグＡのインデックス」と、「タグＣ」の後方の情報のみを切り出すことによって短縮化した「タグＣのインデックス」とは、インデックス情報２ｅが同一の情報である。この場合、メモリ５２上のインデックス情報２ｅが一致すると判定されたにもかかわらず、ＳＳＤ５１上にはキャッシュしたデータが存在しないＨｉｔミスが発生する恐れがある。（ステップＳ１０８否定）また、これら異なる２つのタグ情報２ａにかかるアクセス要求が交互に発生する場合には、ＳＳＤ５１上のキャッシュが交互に書き換えられてしまう上に、Ｈｉｔミスも増加してしまう。【００８６】
そこで、実施例２では、上記の理由によるＨｉｔミスを抑止するために、Ｈｉｔミスの多いタグ情報２ａにかかるデータをメモリ５２上のオーバーフロー領域に記憶する場合を説明する。なお、実施例２では、実施例１と相違する点について説明し、実施例１と同様の点については同一の符号を付して説明を省略する。【００８７】
図８を用いて、実施例２に係るタグ情報及びインデックス情報の一例について説明する。図８は、実施例２に係るタグ情報及びインデックス情報の一例について説明するための図である。【００８８】
図８に示すように、メモリ５２上に記憶されるインデックス情報８ａは、短縮化記録装置識別子２ｆ、短縮化記録装置内相対位置２ｇ、有効フラグ２ｄ及びオーバーフロー情報８ｂを含む。このうち、オーバーフロー情報８ｂは、タグ情報２ａによって識別されるデータがメモリ５２のオーバーフロー領域に有るか否かを表す情報である。例えば、オーバーフロー情報８ｂには、オーバーフロー領域に有る場合には「１」が格納され、無い場合には「０」が格納される。【００８９】
また、図８に示すように、メモリ５２のオーバーフロー領域には、タグ情報２ａ及びキャッシュデータ８ｃが対応付けられた情報が格納される。キャッシュデータ８ｃは、オーバーフロー領域にキャッシュされたデータを表す。なお、タグ情報２ａは、上記の実施例と同様であるので説明を省略する。【００９０】
実施例２に係る情報処理システムの機能構成の一例について説明する。実施例２に係る情報処理システムは、図１に示した情報処理システムと同様の機能構成を有する。【００９１】
メモリ５２は、さらに、ヒストリ情報をさらに記憶する。このヒストリ情報は、Ｈｉｔミスを記録するための情報である。例えば、ヒストリ情報は、読込要求に対応するタグ情報２ａがＳＳＤ５１に存在しない旨の判定結果がタグ情報管理部１０６によって出力された場合に、インデックス管理部１０４によって更新される。また、ヒストリ情報は、インデックス管理部１０４によって参照される。【００９２】
図９及び図１０を用いて、実施例２に係るヒストリ情報の一例について説明する。図９及び図１０は、実施例２に係るヒストリ情報の一例について説明するための図である。図９及び図１０に示すヒストリ情報は、メモリ５２に記憶される。【００９３】
図９の１行目に示すように、ヒストリ情報は、全長及び最後のポインターを含む。このうち、全長は、ヒストリ情報の全長を表す情報である。また、最後のポインターは、前回ヒストリ情報に情報が登録された際のポインターの位置を表す情報である。また、図９の２行目以降に示すように、ヒストリ情報は、時刻、記録装置識別子及び記録装置内相対位置が対応付けられた情報を含む。このうち、時刻は、該当のエントリが登録された時刻を表す情報である。【００９４】
図１０には、ヒストリ情報として記憶される情報を例示する。図１０の１行目に示すように、ヒストリ情報は、全長「２０４８」及び最後のポインター「１０２４」を含む。また、図１０の２行目に示すように、ヒストリ情報は、時刻「２０１２０３０１０８５１０３１８」、記録装置識別子「ａｂＥ０ａ１−５ｄＰＸ−ＩＴｐｋ−４ＡｍＡ−ａｚＣ２−４ｚｚＣ−０ｍ０ｃＬＸ」及び記録装置内相対位置「１３５７２４６８６４」を含む。この記録装置識別子「ａｂＥ０ａ１−５ｄＰＸ−ＩＴｐｋ−４ＡｍＡ−ａｚＣ２−４ｚｚＣ−０ｍ０ｃＬＸ」及び記録装置内相対位置「１３５７２４６８６４」は、図３のタグ情報２ａ「タグＡ」に対応する。つまり、図１０の２行目は、時刻「２０１２０３０１０８５１０３１８」に、ＳＳＤ５１上にタグＡにかかるデータが存在しないと判定されたこと、すなわちタグＡのＨｉｔミスがあったことを示す。また、図１０の２行目以降には、時系列順に、Ｈｉｔミスがあったタグ情報２ａを記憶する。なお、ヒストリ情報の全てのエントリに情報が格納された場合には、ヒストリ情報は、最も古いエントリから順に更新される。【００９５】
次に、図１１を用いて、実施例２に係るＩ／Ｏ処理部１００の機能構成の一例を説明する。図１１は、実施例２に係るＩ／Ｏ処理部１００の機能構成の一例を示すブロック図である。図１１に示すように、実施例２に係るＩ／Ｏ処理部１００は、さらに、ヒストリ情報管理部１１０及びオーバーフロー管理部１１１を有する。【００９６】
データ読込部１０２は、さらに、アクセス要求に対応するデータがメモリ５２に存在する否かを判定する。例えば、データ読込部１０２は、要求抽出部１０１から読込要求を受け付けると、インデックス管理部１０４にメモリ５２のインデックス情報２ｅにアクセスさせる。データ読込部１０２は、インデックス管理部１０４に読込要求を出力し、読込要求にかかるデータがオーバーフロー領域に存在するか否かを判定させる。データ読込部１０２は、読込要求にかかるデータがオーバーフロー領域に存在すると判定された場合に、後述のオーバーフロー管理部１１１を介してオーバーフロー領域のキャッシュデータにアクセスさせる。データ読込部１０２は、読込要求にかかるデータをオーバーフロー領域からオーバーフロー管理部１１１を介して取得する。データ読込部１０２は、取得したデータを、ＶＭ５４上で動作するアプリケーションへ出力する。【００９７】
一方、データ読込部１０２は、読込要求にかかるデータがオーバーフロー領域に存在すると判定された場合に、該当するＳＳＤエントリが有効か否かをインデックス管理部１０４に判定させる。データ読込部１０２は、読込要求に対応するデータがメモリ５２に存在すると判定された場合に、ＳＳＤ５１にアクセスし、存在しないと判定された場合に、記録装置３０にアクセスするアクセス制御を行う。【００９８】
記録装置３０にアクセスすると、データ読込部１０２は、記録装置３０から読込要求にかかるデータを記録装置管理部１０８を介して取得する。データ読込部１０２は、取得したデータを、読込要求を出力したＶＭ５４上のアプリケーションへ出力する。データ読込部１０２は、取得したデータ、そのデータの記録装置識別子２ｂ及び記録装置内相対位置２ｃをタグ情報管理部１０６に出力する。データ読込部１０２は、タグ情報管理部１０６に、取得したデータをＳＳＤ５１にキャッシュさせ、キャッシュしたデータのタグ情報２ａを格納させる。データ読込部１０２は、キャッシュしたデータのタグ情報２ａをインデックス管理部１０４に出力する。データ読込部１０２は、インデックス管理部１０４に、キャッシュしたデータのタグ情報２ａに対応するインデックス情報２ｅをメモリ５２に格納させる。【００９９】
ＳＳＤ５１にアクセスすると、データ読込部１０２は、タグ情報管理部１０６に読込要求を出力し、ＳＳＤ５１上にキャッシュしたデータが存在するか否かをタグ情報管理部１０６に判定させる。ＳＳＤ５１上にキャッシュしたデータが存在する場合には、タグ情報管理部１０６にＳＳＤ５１から読込要求にかかるデータを取得させる。データ読込部１０２は、取得されたデータを、読込要求を出力したＶＭ５４上のアプリケーションへ出力する。【０１００】
一方、データ読込部１０２は、ＳＳＤ５１上にキャッシュしたデータが存在しない場合には、ヒストリ情報をヒストリ情報管理部１１０に更新させる。データ読込部１０２は、ＳＳＤ５１上にキャッシュしたデータが存在しないと判定された時刻及びタグ情報２ａをヒストリ情報管理部１１０へ出力する。データ読込部１０２は、ヒストリ情報管理部１１０に、ＳＳＤ５１上にキャッシュしたデータが存在しないと判定された時刻及びタグ情報２ａをメモリ５２のヒストリ情報に格納させる。【０１０１】
データ読込部１０２は、ヒストリ情報管理部１１０に、ヒストリ情報に同様のＨｉｔミスが所定頻度以上あるか否かを判定させる。データ読込部１０２は、ヒストリ情報管理部１１０によって同様のＨｉｔミスが所定頻度未満であると判定された場合には、記録装置３０にアクセスするアクセス制御を行う。【０１０２】
一方、データ読込部１０２は、ヒストリ情報管理部１１０によって同様のＨｉｔミスが所定頻度以上であると判定された場合には、オーバーフロー管理部１１１に、記録装置３０のデータをオーバーフロー領域にキャッシュさせる。例えば、データ読込部１０２は、読込要求にかかるデータを記録装置３０から記録装置管理部１０８に取得させる。データ読込部１０２は、取得させたデータをタグ情報２ａとともにメモリ５２上のオーバーフロー領域にキャッシュさせる。【０１０３】
このように、データ読込部１０２は、インデックス管理部１０４、タグ情報管理部１０６、記録装置管理部１０８、ヒストリ情報管理部１１０及びオーバーフロー管理部１１１をそれぞれ制御する。これにより、データ読込部１０２は、読込要求にかかるデータを、読込要求を出力したＶＭ５４上のアプリケーションへ出力する。【０１０４】
インデックス管理部１０４は、さらに、読込要求をデータ読込部１０２から受け付けると、読込要求にかかるデータがオーバーフロー領域に存在するか否かを判定する。例えば、インデックス管理部１０４は、読込要求に対応するインデックス情報２ｅがメモリ５２に存在し、かつ、該当のインデックス情報２ｅのオーバーフロー情報８ｂが「１」である場合に、データがオーバーフロー領域に存在すると判定する。また、インデックス管理部１０４は、読込要求に対応するインデックス情報２ｅがメモリ５２に存在しない、又は、該当のインデックス情報２ｅのオーバーフロー情報８ｂが「０」である場合に、データがオーバーフロー領域に存在しないと判定する。そして、インデックス管理部１０４は、判定結果をデータ読込部１０２へ出力する。【０１０５】
また、インデックス管理部１０４は、該当するＳＳＤエントリが有効か否かを判定する。例えば、インデックス管理部１０４は、読込要求にかかるインデックス情報２ｅの有効フラグ２ｄが「１」である場合に、ＳＳＤエントリが有効であると判定し、有効フラグ２ｄが「０」である場合に、ＳＳＤエントリが無効であると判定する。【０１０６】
ヒストリ情報管理部１１０は、メモリアクセス部１０５を介してメモリ５２上のヒストリ情報にアクセスし、ヒストリ情報を管理する。【０１０７】
ヒストリ情報管理部１１０は、読込要求にかかるデータがＳＳＤ５１に存在しないとインデックス管理部１０４によって判定された場合に、その読込要求にかかるタグ情報２ａの履歴をメモリ５２に記録する。例えば、ヒストリ情報管理部１１０は、ＳＳＤ５１上にキャッシュしたデータが存在しないと判定された時刻及びタグ情報２ａをインデックス管理部１０４から受け付ける。ヒストリ情報管理部１１０は、ＳＳＤ５１上にキャッシュしたデータが存在しないと判定された時刻及びタグ情報２ａを対応付けて、メモリ５２のヒストリ情報に格納する。【０１０８】
また、ヒストリ情報管理部１１０は、ヒストリ情報に同様のＨｉｔミスが所定頻度以上あるか否かを判定する。例えば、ヒストリ情報管理部１１０は、ヒストリ情報を参照し、所定時間内に、同一のタグ情報２ａのエントリが所定数以上存在する場合に、Ｈｉｔミスが所定頻度以上と判定し、所定数未満である場合に、Ｈｉｔミスが所定頻度未満と判定する。そして、ヒストリ情報管理部１１０は、判定結果をデータ読込部１０２へ出力する。【０１０９】
図１０に示した例では、ヒストリ情報は、時刻「２０１２０３０１０８５１１２０５」に、タグＣのＨｉｔミスがあったことを示す。また、ヒストリ情報は、時刻「２０１２０３０１０８５１２８３６」にも、タグＣのＨｉｔミスがあったことを示す。さらに、ヒストリ情報は、時刻「２０１２０３０１０８５１４００１」にも、タグＣのＨｉｔミスがあったことを示す。この場合、時刻「２０１２０３０１０８５１１２０５」から「２０１２０３０１０８５１４００１」の間に、同一のエントリが３つ存在するので、ヒストリ情報管理部１１０は、Ｈｉｔミスが所定頻度以上あると判定する。なお、上記の所定時間及び所定数は一例であり、情報処理システムを管理する管理者によって任意に設定されて良い。【０１１０】
オーバーフロー管理部１１１は、メモリアクセス部１０５を介してメモリ５２上のオーバーフロー領域にアクセスし、オーバーフロー領域に記憶される情報を管理する。【０１１１】
オーバーフロー管理部１１１は、ヒストリ情報管理部１１０によってヒストリ情報に記憶されたタグ情報２ａの頻度が所定頻度以上である場合に、そのタグ情報２ａに対応するデータをメモリ５２に格納する。例えば、オーバーフロー管理部１１１は、読込要求にかかるデータをデータ書込部１０３から受け付ける。オーバーフロー管理部１１１は、受け付けたデータをタグ情報２ａとともにメモリ５２上のオーバーフロー領域にキャッシュする。【０１１２】
また、例えば、オーバーフロー管理部１１１は、データがオーバーフロー領域に存在する場合には、オーバーフロー領域のキャッシュデータにアクセスする。例えば、オーバーフロー管理部１１１は、読込要求にかかるデータがオーバーフロー領域に存在すると判定された場合に、その読込要求をデータ読込部１０２から受け付ける。オーバーフロー管理部１１１は、受け付けた読込要求にかかるデータをオーバーフロー領域から取得し、取得したデータをデータ読込部１０２へ出力する。【０１１３】
次に、図１２を用いて、実施例２に係るデータ読込処理の処理手順について説明する。図１２は、実施例２に係るデータ読込処理の処理手順を示すフローチャートである。図１２に示す処理は、例えば、要求抽出部が、ＶＭ５４上で動作するアプリケーションからの読込要求を受け付けたことを契機として実行される。【０１１４】
Ｉ／Ｏ処理部１００は、ＶＭ５４上で動作するアプリケーションからの読込要求を受け付ける（ステップＳ４０１）。Ｉ／Ｏ処理部１００は、メモリ５２のインデックス情報にアクセスする（ステップＳ４０２）。【０１１５】
Ｉ／Ｏ処理部１００は、読込要求にかかるデータがオーバーフロー領域に存在するか否かを判定する（ステップＳ４０３）。例えば、Ｉ／Ｏ処理部１００は、受け付けた読込要求に対応するインデックス情報２ｅがメモリ５２に存在し、かつ、該当のインデックス情報２ｅのオーバーフロー情報８ｂが「１」である場合に、データがオーバーフロー領域に存在すると判定する。また、Ｉ／Ｏ処理部１００は、受け付けた読込要求に対応するインデックス情報８ａがメモリ５２に存在しない、又は、該当のインデックス情報８ａのオーバーフロー情報８ｂが「０」である場合に、データがオーバーフロー領域に存在しないと判定する。【０１１６】
データがオーバーフロー領域に存在する場合には（ステップＳ４０３肯定）、Ｉ／Ｏ処理部１００は、オーバーフロー領域のキャッシュデータにアクセスし（ステップＳ４０４）、処理を終了する。例えば、Ｉ／Ｏ処理部１００は、読込要求にかかるデータをオーバーフロー領域から取得し、ＶＭ５４上で動作するアプリケーションへ出力する。【０１１７】
一方、データがオーバーフロー領域に存在しない場合には（ステップＳ４０３否定）、Ｉ／Ｏ処理部１００は、該当するＳＳＤエントリが有効か否かを判定する（ステップＳ４０５）。例えば、Ｉ／Ｏ処理部１００は、該当の有効フラグ２ｄが「１」である場合に、ＳＳＤエントリが有効であると判定し、該当の有効フラグ２ｄが「０」である場合に、ＳＳＤエントリが無効であると判定する。【０１１８】
ＳＳＤエントリが無効である場合には（ステップＳ４０５否定）、Ｉ／Ｏ処理部１００は、記録装置３０からデータを取得する（ステップＳ４０６）。例えば、Ｉ／Ｏ処理部１００は、読込要求にかかるデータを記録装置３０から取得し、ＶＭ５４上のアプリケーションへ出力する。【０１１９】
Ｉ／Ｏ処理部１００は、記録装置から取得したデータをＳＳＤ５１にキャッシュして、タグ情報２ａを格納する（ステップＳ４０７）。Ｉ／Ｏ処理部１００は、メモリ５２上にインデックス情報８ａを格納し（ステップＳ４０８）、処理を終了する。【０１２０】
一方、ＳＳＤエントリが有効である場合には（ステップＳ４０５肯定）、Ｉ／Ｏ処理部１００は、ＳＳＤ５１上のタグ情報２ａにアクセスする（ステップＳ４０９）。【０１２１】
Ｉ／Ｏ処理部１００は、ＳＳＤ５１上にキャッシュしたデータが存在するか否かを判定する（ステップＳ４１０）。ＳＳＤ５１上にキャッシュしたデータが存在する場合には（ステップＳ４１０肯定）、Ｉ／Ｏ処理部１００は、読込要求にかかるデータをＳＳＤ５１から取得し（ステップＳ４１１）、処理を終了する。例えば、Ｉ／Ｏ処理部１００は、読込要求にかかるデータをＳＳＤ５１から取得し、ＶＭ５４上で動作するアプリケーションへ出力する。【０１２２】
一方、ＳＳＤ５１上にキャッシュしたデータが存在しない場合には（ステップＳ４１０否定）、Ｉ／Ｏ処理部１００は、ヒストリ情報を更新する（ステップＳ４１２）。例えば、Ｉ／Ｏ処理部１００は、ＳＳＤ５１上にキャッシュしたデータが存在しないと判定した時刻及びタグ情報２ａを対応付けて、ヒストリ情報に格納する。【０１２３】
Ｉ／Ｏ処理部１００は、ヒストリ情報に同様のＨｉｔミスが所定頻度以上か否かを判定する（ステップＳ４１３）。例えば、Ｉ／Ｏ処理部１００は、ヒストリ情報を参照し、所定時間内に、格納したタグ情報２ａと同一のタグ情報２ａのエントリが所定数以上存在する場合に、Ｈｉｔミスが所定頻度以上と判定し、所定数未満である場合に、Ｈｉｔミスが所定頻度未満と判定する。【０１２４】
Ｈｉｔミスが所定頻度以上である場合には（ステップＳ４１３肯定）、Ｉ／Ｏ処理部１００は、記録装置３０のデータをオーバーフロー領域にキャッシュし（ステップＳ４１４）、ステップＳ４０８の処理へ移行する。例えば、Ｉ／Ｏ処理部１００は、読込要求にかかるデータを記録装置３０から取得し、取得したデータをタグ情報２ａとともにメモリ５２上のオーバーフロー領域にキャッシュする。【０１２５】
一方、Ｈｉｔミスが所定頻度未満である場合には（ステップＳ４１３否定）、Ｉ／Ｏ処理部１００は、ステップＳ４０６の処理へ移行する。【０１２６】
次に、実施例２に係るＩ／Ｏ処理部１００の効果について説明する。Ｉ／Ｏ処理部１００は、ＳＳＤ５１にタグ情報２ａが存在しないと判定された場合に、タグ情報２ａの履歴をメモリ５２上のヒストリ情報に記録する。Ｉ／Ｏ処理部１００は、ヒストリ情報に記録されたタグ情報２ａの頻度が所定頻度以上である場合に、そのタグ情報２ａにかかるデータをメモリ５２上のオーバーフロー領域に格納する。Ｉ／Ｏ処理部１００は、受け付けたアクセス要求に対応するデータがメモリ５２上のオーバーフロー領域に存在する否かを判定する。Ｉ／Ｏ処理部１００は、読込要求にかかるデータがオーバーフロー領域に存在すると判定された場合に、メモリ５２にアクセスするアクセス制御を行う。そして、Ｉ／Ｏ処理部１００は、インデックス情報８ａがメモリ５２に存在すると判定された場合に、ＳＳＤ５１にアクセスするアクセス制御を行う。これにより、Ｉ／Ｏ処理部１００は、これら異なる２つのタグ情報２ａにかかるアクセス要求が交互に発生する場合であっても、ＳＳＤ５１上のキャッシュが頻繁に書き換えられることによる、ＳＳＤへの頻繁なアクセスやＨｉｔミスを抑止することができる。【０１２７】
例えば、Ｉ／Ｏ処理部１００は、異なる２つのタグ情報２ａが短縮化によって同一のインデックス情報８ａになってしまう場合に、一方のタグ情報２ａにかかるデータをオーバーフロー領域に格納する。このため、Ｉ／Ｏ処理部１００は、異なる２つのタグ情報２ａにかかるデータをそれぞれ別途キャッシュすることができる。このため、Ｉ／Ｏ処理部１００は、異なるタグ情報２ａが短縮化によって同一のインデックス情報８ａになってしまう場合にも、対応することができる。
【実施例３】
【０１２８】
上記の実施例は、古いバージョンのデータが記録装置３０に更新されてしまうことを防ぐために、バージョン情報を管理する場合にも適用することができる。そこで、実施例３では、Ｉ／Ｏ処理部１００がバージョン情報を管理する場合を説明する。なお、実施例３では、実施例１と相違する点について説明し、実施例１と同様の点については同一の符号を付して説明を省略する。【０１２９】
実施例３に係る情報処理システムの機能構成の一例について説明する。実施例３に係る情報処理システムは、図１に示した情報処理システムと同様の機能構成を有する。【０１３０】
図１３を用いて、実施例３に係るタグ情報及びインデックス情報の一例について説明する。図１３は、実施例３に係るタグ情報及びインデックス情報の一例について説明するための図である。【０１３１】
図１３に示すように、ＳＳＤ５１上に記憶されるタグ情報１３ａは、記録装置識別子２ｂ、記録装置内相対位置２ｃ、バージョン情報１３ｂ及び有効フラグ２ｄを含む。このうち、バージョン情報１３ｂは、記録装置に記憶されるデータのバージョンを示す情報である。例えば、バージョン情報１３ｂは、記録装置３０上のデータが更新された更新回数で表される。なお、このバージョン情報１３ｂは、記録装置３０内にも記憶される。【０１３２】
また、メモリ５２上に記憶されるインデックス情報１３ｃは、短縮化記録装置識別子２ｆ、短縮化記録装置内相対位置２ｇ、短縮化バージョン情報１３ｄ及び有効フラグ２ｄを含む。このうち、短縮化バージョン情報１３ｄは、バージョン情報１３ｂがハッシュ関数によって短縮化された情報である。なお、バージョン情報１３ｂは、インデックス管理部１０４によって短縮化される。また、バージョン情報１３ｂは、バージョン情報１３ｂの後方の情報のみを切り出すことで、短縮化されても良い。【０１３３】
一例として、バージョン情報１３ｂ「１０２３」は、ハッシュ関数によって短縮化されると短縮化バージョン情報１３ｄ「ｃｅ５１４０ｄｆ１５ｄ０４６ａ６６８８３８０７ｄ１８ｄ０２６４ｂ」となる。また、バージョン情報１３ｂ「１０２３」は、後方切り出しによって短縮化されると短縮化バージョン情報１３ｄ「２３」となる。なお、短縮化バージョン情報１３ｄは、インデックス管理部１０４によって短縮化される。【０１３４】
次に、実施例３に係るＩ／Ｏ処理部１００の機能構成の一例について説明する。実施例３に係るＩ／Ｏ処理部１００は、図４に示したＩ／Ｏ処理部１００と同様の機能構成を有する。【０１３５】
要求抽出部１０１は、さらに、ＶＭ５４に記録装置３０がマウントされたことを受け付ける。例えば、要求抽出部１０１は、ＶＭ５４が起動した場合に、ＶＭ５４で処理されるデータが格納されるＶＤＩＳＫ３２がマウントされたことを受け付ける。要求抽出部１０１は、ＶＤＩＳＫ３２がマウントされると、ＶＭ５４に記録装置３０がマウントされた旨の情報を記録装置管理部１０８に出力する。【０１３６】
データ読込部１０２は、記録装置３０にアクセスし、記録装置３０から読込要求にかかるデータを記録装置管理部１０８を介して取得する場合に、さらに、ＳＳＤ５１上のバージョン情報１３ｂ及びメモリ５２上の短縮化バージョン情報１３ｄを最新化する。例えば、データ読込部１０２は、記録装置３０から取得したデータをＳＳＤ５１にキャッシュして、タグ情報２ａを更新する際に、ＳＳＤ５１上のバージョン情報１３ｂを、記録装置３０から取得したバージョン情報１３ｂに更新する。また、例えば、データ読込部１０２は、メモリ５２上のインデックス情報１３ｃを更新する際に、メモリ５２上の短縮化バージョン情報１３ｄを、記録装置３０から取得したバージョン情報１３ｂを用いて更新する。一例としては、データ読込部１０２は、記録装置３０から取得したバージョン情報１３ｂをインデックス管理部１０４に短縮化させて短縮化バージョン情報１３ｄを生成する。そして、データ読込部１０２は、インデックス管理部１０４に、メモリ５２上の短縮化バージョン情報１３ｄを、生成した短縮化バージョン情報１３ｄに更新させる。【０１３７】
データ読込部１０２は、ＳＳＤ５１にアクセスし、ＳＳＤ５１上にキャッシュしたデータが存在する場合には、さらに、タグ情報管理部１０６に読込要求を出力し、ＳＳＤ５１上のバージョン情報１３ｂが最新か否かをタグ情報管理部１０６に判定させる。ＳＳＤ５１上のバージョン情報１３ｂが最新である場合には、データ読込部１０２は、タグ情報管理部１０６にＳＳＤ５１から読込要求にかかるデータを取得させる。データ読込部１０２は、取得されたデータを、読込要求を出力したＶＭ５４上のアプリケーションへ出力する。なお、ＳＳＤ５１上のバージョン情報１３ｂが最新でない場合には、記録装置管理部１０８に記録装置３０から読込要求にかかるデータを取得させる。【０１３８】
記録装置管理部１０８は、さらに、記録装置３０に記憶されたバージョン情報を更新する。例えば、記録装置管理部１０８は、ＶＭ５４に記録装置３０がマウントされた旨の情報を要求抽出部１０１から受け付ける。記録装置管理部１０８は、ＶＭ５４で処理されるデータが格納されるＶＤＩＳＫ３２内のデータのバージョン情報１３ｂを１インクリメントする。【０１３９】
次に、図１４を用いて、実施例３に係るバージョン情報を更新する処理の処理手順について説明する。図１４は、実施例３に係るバージョン情報を更新する処理の処理手順を示すフローチャートである。図１４に示す処理は、例えば、要求抽出部が、記録装置３０のマウントを受け付けたことを契機として実行される。【０１４０】
Ｉ／Ｏ処理部１００は、ＶＭ５４に記録装置３０がマウントされた旨を受け付ける（ステップＳ５０１）。Ｉ／Ｏ処理部１００は、記録装置３０のバージョン情報１３ｂを更新し（ステップＳ５０２）、処理を終了する。【０１４１】
なお、ここでは、Ｉ／Ｏ処理部１００がＶＭ５４に記録装置３０がマウントされた旨を受け付けたことを契機として、記録装置３０に記憶された全てのバージョン情報１３ｂを更新する場合を説明したが、本発明はこれに限定されるものではない。例えば、Ｉ／Ｏ処理部１００は、データを書き込むたびに、該当のデータのバージョン情報を更新しても良い。一例としては、Ｉ／Ｏ処理部１００は、図６のステップＳ２０４の処理が行われる際に、書き込まれたデータに該当するデータのバージョン情報１３ｂを１インクリメントしても良い。【０１４２】
次に、図１５を用いて、実施例３に係るデータ読込処理の処理手順について説明する。図１５は、実施例３に係るデータ読込処理の処理手順を示すフローチャートである。図１５に示す処理は、例えば、要求抽出部が、ＶＭ５４上で動作するアプリケーションからの読込要求を受け付けたことを契機として実行される。【０１４３】
Ｉ／Ｏ処理部１００は、ＶＭ５４上で動作するアプリケーションからの読込要求を受け付ける（ステップＳ６０１）。Ｉ／Ｏ処理部１００は、メモリ５２のインデックス情報にアクセスする（ステップＳ６０２）。【０１４４】
Ｉ／Ｏ処理部１００は、読込要求にかかるデータがＳＳＤ５１にキャッシュされている可能性があるか否かを判定する（ステップＳ６０３）。例えば、Ｉ／Ｏ処理部１００は、受け付けた読込要求に対応するインデックス情報１３ｃがメモリ５２に存在するか否かを判定する。【０１４５】
読込要求にかかるデータがＳＳＤ５１にキャッシュされている可能性がない場合には（ステップＳ６０３否定）、Ｉ／Ｏ処理部１００は、記録装置３０のデータにアクセスする（ステップＳ６０４）。例えば、Ｉ／Ｏ処理部１００は、読込要求にかかるデータを記録装置３０から取得し、ＶＭ５４上のアプリケーションへ出力する。【０１４６】
Ｉ／Ｏ処理部１００は、記録装置３０から取得したデータをＳＳＤ５１にキャッシュして、タグ情報２ａを更新する（ステップＳ６０５）。このとき、Ｉ／Ｏ処理部１００は、ＳＳＤ５１上のバージョン情報１３ｂを、記録装置３０から取得したバージョン情報１３ｂに更新する。【０１４７】
Ｉ／Ｏ処理部１００は、メモリ５２上のインデックス情報２ｅを更新し（ステップＳ６０６）、処理を終了する。このとき、Ｉ／Ｏ処理部１００は、メモリ５２上の短縮化バージョン情報１３ｄを、記録装置３０から取得したバージョン情報１３ｂを用いて更新する。【０１４８】
一方、読込要求にかかるデータがＳＳＤ５１にキャッシュされている可能性がある場合には（ステップＳ６０３肯定）、Ｉ／Ｏ処理部１００は、ＳＳＤ５１上のタグ情報にアクセスする（ステップＳ６０７）。【０１４９】
Ｉ／Ｏ処理部１００は、ＳＳＤ５１上にキャッシュしたデータが存在するか否かを判定する（ステップＳ６０８）。ＳＳＤ５１上にキャッシュしたデータが存在する場合には（ステップＳ６０８肯定）、Ｉ／Ｏ処理部１００は、ＳＳＤ５１上のバージョン情報１３ｂが最新か否かを判定する（ステップＳ６０９）。例えば、Ｉ／Ｏ処理部１００は、ＳＳＤ５１上のバージョン情報１３ｂと、読込要求に含まれるバージョン情報１３ｂとが一致するか否かを判定する。【０１５０】
ＳＳＤ５１上のバージョン情報１３ｂが最新である場合には（ステップＳ６０９肯定）、Ｉ／Ｏ処理部１００は、読込要求にかかるデータをＳＳＤ５１から取得し（ステップＳ６１０）、処理を終了する。例えば、Ｉ／Ｏ処理部１００は、読込要求にかかるデータをＳＳＤ５１から取得し、ＶＭ５４上で動作するアプリケーションへ出力する。【０１５１】
一方、ＳＳＤ５１上にキャッシュしたデータが存在しない場合には（ステップＳ６０８否定）、Ｉ／Ｏ処理部１００は、ステップＳ６０４の処理へ移行する。また、ＳＳＤ５１上のバージョン情報１３ｂが最新でない場合には（ステップＳ６０９否定）、Ｉ／Ｏ処理部１００は、ステップＳ６０４の処理へ移行する。【０１５２】
次に、実施例３に係るＩ／Ｏ処理部１００の効果について説明する。Ｉ／Ｏ処理部１００は、記録装置３０がマウントされた旨の情報を受け付ける。Ｉ／Ｏ処理部１００は、記録装置３０がマウントされた旨の情報を受け付けた場合に、その記録装置３０に記憶されたバージョン情報を更新する。Ｉ／Ｏ処理部１００は、アクセス要求として、データに対する読込要求を受け付けた場合に、ＳＳＤ５１に記憶された読込要求に対応するバージョン情報と、記録装置３０に記憶された読込要求に対応するバージョン情報とが一致するか否かを判定する。Ｉ／Ｏ処理部１００は、バージョン情報が一致すると判定した場合に、ＳＳＤ５１にアクセスし、一致しない場合に、記録装置３０にアクセスするアクセス制御を行う。このため、Ｉ／Ｏ処理部１００は、古いバージョンのデータが記録装置３０に更新されてしまうことを防ぐことができる。
【実施例４】
【０１５３】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、その他の実施例にて実施されても良い。そこで、以下では、その他の実施例について説明する。【０１５４】
上記の各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。例えば、上記の実施例１〜３を組み合わせ、Ｉ／Ｏ処理部１００が、オーバーフロー情報８ｂ及び短縮化バージョン情報１３ｄを含むインデックス情報を用いることとしても良い。【０１５５】
図１６を用いて、実施例４に係るタグ情報及びインデックス情報の一例について説明する。図１６は、実施例４に係るタグ情報及びインデックス情報の一例について説明するための図である。【０１５６】
図１６に示すように、ＳＳＤ５１上に記憶されるタグ情報１６ａは、記録装置識別子２ｂ、記録装置内相対位置２ｃ、バージョン情報１３ｂ及び有効フラグ２ｄを含む。また、メモリ５２上に記憶されるインデックス情報１６ｂは、短縮化記録装置識別子２ｆ、短縮化記録装置内相対位置２ｇ、短縮化バージョン情報１３ｄ、有効フラグ２ｄ及びオーバーフロー情報８ｂを含む。また、メモリ５２のオーバーフロー領域には、タグ情報２ａ及びキャッシュデータ８ｃが対応付けられた情報が格納される。【０１５７】
次に、図１７を用いて、実施例４に係るデータ読込処理の処理手順について説明する。図１７は、実施例４に係るデータ読込処理の処理手順を示すフローチャートである。図１７に示す処理は、例えば、要求抽出部が、ＶＭ５４上で動作するアプリケーションからの読込要求を受け付けたことを契機として実行される。【０１５８】
Ｉ／Ｏ処理部１００は、ＶＭ５４上で動作するアプリケーションからの読込要求を受け付ける（ステップＳ７０１）。Ｉ／Ｏ処理部１００は、メモリ５２のインデックス情報にアクセスする（ステップＳ７０２）。【０１５９】
Ｉ／Ｏ処理部１００は、読込要求にかかるデータがオーバーフロー領域に存在するか否かを判定する（ステップＳ７０３）。データがオーバーフロー領域に存在する場合には（ステップＳ７０３肯定）、Ｉ／Ｏ処理部１００は、オーバーフロー領域のキャッシュデータにアクセスし（ステップＳ７０４）、処理を終了する。例えば、Ｉ／Ｏ処理部１００は、読込要求にかかるデータをオーバーフロー領域から取得し、ＶＭ５４上で動作するアプリケーションへ出力する。【０１６０】
一方、データがオーバーフロー領域に存在しない場合には（ステップＳ７０３否定）、Ｉ／Ｏ処理部１００は、該当するＳＳＤエントリが有効か否かを判定する（ステップＳ７０５）。例えば、Ｉ／Ｏ処理部１００は、該当の有効フラグ２ｄが「１」である場合に、ＳＳＤエントリが有効であると判定し、該当の有効フラグ２ｄが「０」である場合に、ＳＳＤエントリが無効であると判定する。【０１６１】
ＳＳＤエントリが無効である場合には（ステップＳ７０５否定）、Ｉ／Ｏ処理部１００は、記録装置３０からデータを取得する（ステップＳ７０６）。例えば、Ｉ／Ｏ処理部１００は、読込要求にかかるデータを記録装置３０から取得し、ＶＭ５４上のアプリケーションへ出力する。【０１６２】
Ｉ／Ｏ処理部１００は、記録装置３０から取得したデータをＳＳＤ５１にキャッシュして、タグ情報２ａを格納する（ステップＳ７０７）。Ｉ／Ｏ処理部１００は、メモリ５２上にインデックス情報２ｅを格納し（ステップＳ７０８）、処理を終了する。【０１６３】
一方、ＳＳＤエントリが有効である場合には（ステップＳ７０５肯定）、Ｉ／Ｏ処理部１００は、ＳＳＤ５１上のタグ情報２ａにアクセスする（ステップＳ７０９）。【０１６４】
Ｉ／Ｏ処理部１００は、ＳＳＤ５１上にキャッシュしたデータが存在するか否かを判定する（ステップＳ７１０）。ＳＳＤ５１上にキャッシュしたデータが存在する場合には（ステップＳ７１０肯定）、ＳＳＤ５１上のバージョン情報が最新か否かを判定する（ステップＳ７１１）。バージョン情報が最新である場合には（ステップＳ７１１肯定）、Ｉ／Ｏ処理部１００は、読込要求にかかるデータをＳＳＤ５１から取得し（ステップＳ７１２）、処理を終了する。なお、バージョン情報が最新でない場合には（ステップＳ７１１否定）、Ｉ／Ｏ処理部１００は、ステップＳ７０６の処理に移行する。【０１６５】
一方、ＳＳＤ５１上にキャッシュしたデータが存在しない場合には（ステップＳ７１０否定）、Ｉ／Ｏ処理部１００は、ヒストリ情報を更新する（ステップＳ７１３）。Ｉ／Ｏ処理部１００は、ヒストリ情報に同様のＨｉｔミスが所定頻度以上か否かを判定する（ステップＳ７１４）。Ｈｉｔミスが所定頻度以上である場合には（ステップＳ７１４肯定）、Ｉ／Ｏ処理部１００は、記録装置３０のデータをオーバーフロー領域にキャッシュし（ステップＳ７１５）、ステップＳ７０８の処理へ移行する。【０１６６】
一方、Ｈｉｔミスが所定頻度未満である場合には（ステップＳ７１４否定）、Ｉ／Ｏ処理部１００は、ステップＳ７０６の処理へ移行する。【０１６７】
このように、上記の実施例１〜３を組み合わせ、Ｉ／Ｏ処理部１００が、オーバーフロー情報８ｂ及び短縮化バージョン情報１３ｄを含むインデックス情報を用いることもできる。【０１６８】
また、Ｉ／Ｏ処理部１００は、上記の実施例で適用された情報処理システムとは異なる情報処理システムに適用されても良い。【０１６９】
図１８及び図１９を用いて、実施例４に係る情報処理システムの機能構成の一例について説明する。図１８及び図１９は、実施例４に係る情報処理システムの機能構成を示すブロック図である。【０１７０】
図１８に示す例では、情報処理システムは、記録装置３０、サーバ装置６０ａ，６０ｂ，６０ｃ及びキャッシュ用ＳＳＤストレージサーバ７０を含む。記録装置３０、サーバ装置６０ａ，６０ｂ，６０ｃ及びキャッシュ用ＳＳＤストレージサーバ７０は、ネットワーク５を介してそれぞれ接続される。なお、図１８の例では、情報処理システムにサーバ装置６０ａ，６０ｂ，６０ｃの３つが含まれる場合を示したが、図示の構成に限定されるものではない。すなわち、この情報処理システムには任意数のサーバ装置６０が接続されて良い。また、サーバ装置６０ａ，６０ｂ，６０ｃの各装置を区別無く総称する場合に、サーバ装置６０と記載する。【０１７１】
キャッシュ用ＳＳＤストレージサーバ７０は、複数のＳＳＤ５１を備え、図１８の情報処理システムにおいて、記録装置３０からサーバ装置６０へ送信されたデータをキャッシュするためのサーバ装置である。サーバ装置６０は、基本的にはサーバ装置５０と同様の構成を有し、ＳＳＤ５１を含まない点が相違する。なお、Ｉ／Ｏ処理部１００は、サーバ装置６０のハイパーバイザ５３で機能する。【０１７２】
図１９に示す例では、情報処理システムは、記録装置８０及びサーバ装置９０ａ，９０ｂ，９０ｃを含む。記録装置８０及びサーバ装置９０ａ，９０ｂ，９０ｃは、ネットワーク５を介してそれぞれ接続される。なお、図１９の例では、情報処理システムにサーバ装置９０ａ，９０ｂ，９０ｃの３つが含まれる場合を示したが、図示の構成に限定されるものではない。すなわち、この情報処理システムには任意数のサーバ装置９０が接続されて良い。また、サーバ装置９０ａ，９０ｂ，９０ｃの各装置を区別無く総称する場合に、サーバ装置９０と記載する。【０１７３】
記録装置８０は、基本的には記録装置３０と同様の構成を有し、さらに、コントローラモジュール８１、１つ以上のＳＳＤ５１及び１つ以上のメモリ５２を備える点が相違する。このコントローラモジュール８１は、基本的にはコントローラモジュール３３と同様の構成を有し、Ｉ／Ｏ処理部１００を備える点が相違する。【０１７４】
図１８及び図１９において、Ｉ／Ｏ処理部１００は、例えば、ＶＭ５４ａから送信されたアクセス要求を受け付けると、メモリ５２ａに記憶されたインデックス情報を参照し、ＳＳＤ５１ａにアクセスするか、記録装置３０にアクセスするかを判定する。このため、Ｉ／Ｏ処理部１００ａは、メモリ５２の使用量を抑えつつアクセス性能を高めることができる。【０１７５】
図２０は、制御プログラムを実行するコンピュータの一例を示す図である。図２０に示すように、コンピュータ３００は、各種演算処理を実行するＣＰＵ３０１と、ユーザからデータの入力を受け付ける入力装置３０２と、モニタ３０３とを有する。また、コンピュータ３００は、記憶媒体からプログラム等を読み取る媒体読み取り装置３０４と、他の装置と接続するためのインターフェース装置３０５と、他の装置と無線により接続するための無線通信装置３０６とを有する。また、コンピュータ３００は、各種情報を一時記憶するＲＡＭ（Random  Access  Memory）３０７と、ハードディスク装置３０８とを有する。また、各装置３０１〜３０８は、バス３０９に接続される。【０１７６】
ハードディスク装置３０８には、図４に示した要求抽出部１０１、データ読込部１０２、データ書込部１０３及びインデックス管理部１０４の各処理部と同様の機能を有する診療情報入力プログラムが記憶される。また、ハードディスク装置３０８には、制御プログラムを実現するための各種データが記憶される。【０１７７】
ＣＰＵ３０１は、ハードディスク装置３０８に記憶された各プログラムを読み出して、ＲＡＭ３０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータを図４に示した要求抽出部１０１、データ読込部１０２、データ書込部１０３及びインデックス管理部１０４として機能させることができる。【０１７８】
なお、上記の制御プログラムは、必ずしもハードディスク装置３０８に記憶されている必要はない。例えば、コンピュータが読み取り可能な記録媒体に記憶されたプログラムを、コンピュータ３００が読み出して実行するようにしても良い。コンピュータが読み取り可能な記録媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等に接続された装置にこのプログラムを記憶させておき、コンピュータ３００がこれらからプログラムを読み出して実行するようにしても良い。また、各実施例においては、サーバ装置５０に、ハイパーバイザ５３およびＶＭ５４が実現されることとしたが、サーバ装置５０が仮想化されない物理計算機の態様であっても構わない。
【符号の説明】
【０１７９】
１００      Ｉ／Ｏ処理部
１０１      要求抽出部
１０２      データ読込部
１０３      データ書込部
１０４      インデックス管理部
１０５      メモリアクセス部
１０６      タグ情報管理部
１０７      ＳＳＤアクセス部
１０８      記録装置管理部
１０９      記録装置アクセス部
１１０      ヒストリ情報管理部
１１１      オーバーフロー管理部
３００      コンピュータ
３０１      ＣＰＵ
３０２      入力装置
３０３      モニタ
３０４      媒体読み取り装置
３０５      インターフェース装置
３０６      無線通信装置
３０７      ＲＡＭ
３０８      ハードディスク装置
３０９      バス
【図１】
2014038016.tif 000003
【図２】
2014038016.tif 000004
【図３】
2014038016.tif 000005
【図４】
2014038016.tif 000006
【図５】
2014038016.tif 000007
【図６】
2014038016.tif 000008
【図７】
2014038016.tif 000009
【図８】
2014038016.tif 000010
【図９】
2014038016.tif 000011
【図１０】
2014038016.tif 000012
【図１１】
2014038016.tif 000013
【図１２】
2014038016.tif 000014
【図１３】
2014038016.tif 000015
【図１４】
2014038016.tif 000016
【図１５】
2014038016.tif 000017
【図１６】
2014038016.tif 000018
【図１７】
2014038016.tif 000019
【図１８】
2014038016.tif 000020
【図１９】
2014038016.tif 000021
【図２０】
2014038016.tif 000022
【手続補正書】
【提出日】平成27年2月24日(2015.2.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータに、
データを記憶する記録装置に対するアクセス要求を受け付け、
前記記録装置から不揮発性メモリにキャッシュしたデータを識別する識別情報を短縮したインデックス情報を記憶するメモリに、前記受け付ける処理によって受け付けたアクセス要求に対応するインデックス情報が存在するか否かを判定し、
前記判定する処理によって前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、存在しないと判定された場合に、前記記録装置にアクセスする
各処理を実行させることを特徴とする制御プログラム。
【請求項２】
前記識別情報は、データの記憶された記録装置を識別する情報と、前記記録装置の記録領域におけるデータの記録された位置を特定する情報とを含むことを特徴とする請求項１に記載の制御プログラム。
【請求項３】
前記コンピュータに、
前記判定する処理によって前記不揮発性メモリに前記識別情報が存在しないと判定された場合に、当該識別情報を履歴として前記メモリに記録し、
前記記録する処理によって前記履歴として記録された識別情報の頻度が所定頻度以上である場合に、当該識別情報により識別されるデータを前記メモリに格納する各処理をさらに実行させ、
前記判定する処理は、前記受け付ける処理によって受け付けたアクセス要求に対応するデータが前記メモリに存在する否かを判定し、
前記アクセス制御を行う処理は、前記判定する処理によって前記データが前記メモリに存在すると判定された場合に、当該メモリにアクセスし、前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、前記インデックス情報が存在しないと判定された場合に、前記記録装置にアクセスするアクセス制御を行う各処理を実行させることを特徴とする請求項１または２に記載の制御プログラム。
【請求項４】
前記コンピュータに、
前記記録装置に記憶されるデータのバージョンを示すバージョン情報を更新する処理をさらに実行し、
前記受け付ける処理は、前記記録装置がマウントされた旨の情報を受け付けし、
前記更新する処理は、前記受け付ける処理によって前記記録装置がマウントされた旨の情報を受け付けた場合に、前記記録装置に記憶されたバージョン情報を更新し、
前記判定する処理は、前記アクセス要求として、前記データに対する読込要求を前記受け付ける処理によって受け付けた場合に、前記不揮発性メモリに記憶された当該読込要求に対応するバージョン情報と、前記記録装置に記憶された当該読込要求に対応するバージョン情報とが一致するか否かを判定し、
前記アクセス制御を行う処理は、前記判定する処理によって前記バージョン情報が一致すると判定された場合に、前記不揮発性メモリにアクセスし、一致しない場合に、前記記録装置にアクセスするアクセス制御を行う各処理を実行させることを特徴とする請求項１〜３のいずれか一つに記載の制御プログラム。
【請求項５】
前記コンピュータに、
前記アクセス要求を出力するアプリケーションが実行される仮想マシンが再起動された場合に、前記記録装置から前記不揮発性メモリにキャッシュされたデータの前記識別情報に基づいて、インデックス情報を生成する処理をさらに実行させることを特徴とする請求項１または２に記載の制御プログラム。
【請求項６】
コンピュータによって実行される制御方法であって、
前記コンピュータが、
データを記憶する記録装置に対するアクセス要求を受け付け、
前記記録装置から不揮発性メモリにキャッシュしたデータを識別する識別情報を短縮したインデックス情報を記憶するメモリに、前記受け付ける処理によって受け付けたアクセス要求に対応するインデックス情報が存在するか否かを判定し、
前記判定する処理によって前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、存在しないと判定された場合に、前記記録装置にアクセスするアクセス制御を行う
各処理を実行することを特徴とする制御方法。
【請求項７】
データに対するアクセス要求を受け付ける受付部と、
データを記憶する記録装置から不揮発性メモリにキャッシュしたデータを識別する識別情報を短縮したインデックス情報を記憶するメモリに、前記受付部によって受け付けたアクセス要求に対応するインデックス情報が存在するか否かを判定する判定部と、
前記判定部によって前記インデックス情報が存在すると判定された場合に、前記不揮発性メモリにアクセスし、存在しないと判定された場合に、前記記録装置にアクセスするアクセス制御を行うアクセス制御部と
を有することを特徴とする制御装置。
【国際調査報告】
2014038016.tif 000023
2014038016.tif 000024