(57)【特許請求の範囲】
【請求項１】
コンピュータに、
記憶装置の中の複数の記憶領域に分類して配置された複数の単位データに対するアクセスを受け付け、
前記複数の記憶領域のうちの第１の記憶領域に配置された第１の単位データに対するアクセスの直後に、前記複数の記憶領域のうちの第２の記憶領域に配置された第２の単位データに対するアクセスが発生した場合に、前記第１の単位データの識別情報と前記第２の単位データの識別情報とに基づいて、前記複数の単位データの間のアクセス順序を示すアクセス情報を更新し、
前記アクセス情報と、前記第１の記憶領域および前記第２の記憶領域への単位データの配置状況を示す配置情報とに基づいて、前記配置状況と、前記第１の単位データが属する前記第１の記憶領域と前記第２の単位データが属する前記第２の記憶領域との間で１以上の単位データを移動させる再配置を行った場合の他の配置状況との差に応じた、前記再配置の評価値を算出し、
前記記憶装置からメモリに、前記第１の記憶領域の単位データ群および前記第２の記憶領域の単位データ群がロードされている場合に、前記メモリ上における前記第１の記憶領域の単位データ群および前記第２の記憶領域の単位データ群の更新状況に基づいて閾値を決定し、
前記評価値と前記閾値との比較に応じて、前記再配置を行うか否か判定する、
処理を実行させるデータ配置制御プログラム。
【請求項２】
コンピュータに、
記憶装置の中の複数の記憶領域に分類して配置された複数の単位データに対するアクセスを受け付け、
前記複数の記憶領域のうちの第１の記憶領域に配置された第１の単位データに対するアクセスの直後に、前記複数の記憶領域のうちの第２の記憶領域に配置された第２の単位データに対するアクセスが発生した場合に、前記第１の単位データの識別情報と前記第２の単位データの識別情報とに基づいて、前記複数の単位データの間のアクセス順序を示すアクセス情報を更新し、
前記アクセス情報と、前記第１の記憶領域および前記第２の記憶領域への単位データの配置状況を示す配置情報とに基づいて、前記アクセス情報が示す連続してアクセスされた単位データの組のうち、前記配置状況のもとで、前記第１の記憶領域と前記第２の記憶領域とに分断されて配置された第１の組と、前記第１の単位データが属する前記第１の記憶領域と前記第２の単位データが属する前記第２の記憶領域との間で１以上の単位データを移動させる再配置を行った場合の他の配置状況のもとで、前記第１の記憶領域と前記第２の記憶領域とに分断されて配置される第２の組とを検索し、
前記第１の組の数と前記第２の組の数との差に基づいて、前記再配置の評価値を算出し、
前記評価値と閾値との比較に応じて、前記再配置を行うか否か判定する、
処理を実行させるデータ配置制御プログラム。
【請求項３】
前記第１の単位データと前記第２の単位データとが連続してアクセスされた回数をカウントし、前記連続してアクセスされた回数の統計情報に基づいて、前記評価値の算出に用いるパラメータの値を決定する、
請求項１または２記載のデータ配置制御プログラム。
【請求項４】
複数の単位データが複数の記憶領域に分類して配置された記憶部と、
メモリと、
前記複数の記憶領域のうちの第１の記憶領域に配置された第１の単位データに対するアクセスの直後に、前記複数の記憶領域のうちの第２の記憶領域に配置された第２の単位データに対するアクセスが発生した場合に、前記第１の単位データの識別情報と前記第２の単位データの識別情報とに基づいて、前記複数の単位データの間のアクセス順序を示すアクセス情報を更新し、
前記アクセス情報と、前記第１の記憶領域および前記第２の記憶領域への単位データの配置状況を示す配置情報とに基づいて、前記配置状況と、前記第１の単位データが属する前記第１の記憶領域と前記第２の単位データが属する前記第２の記憶領域との間で１以上の単位データを移動させる再配置を行った場合の他の配置状況との差に応じた、前記再配置の評価値を算出し、
前記記憶部から前記メモリに、前記第１の記憶領域の単位データ群および前記第２の記憶領域の単位データ群がロードされている場合に、前記メモリ上における前記第１の記憶領域の単位データ群および前記第２の記憶領域の単位データ群の更新状況に基づいて閾値を決定し、
前記評価値と前記閾値との比較に応じて、前記再配置を行うか否か判定する判定部と、
を有するデータ配置制御装置。
【請求項５】
コンピュータが実行するデータ配置制御方法であって、
記憶装置の中の複数の記憶領域に分類して配置された複数の単位データに対するアクセスを受け付け、
前記複数の記憶領域のうちの第１の記憶領域に配置された第１の単位データに対するアクセスの直後に、前記複数の記憶領域のうちの第２の記憶領域に配置された第２の単位データに対するアクセスが発生した場合に、前記第１の単位データの識別情報と前記第２の単位データの識別情報とに基づいて、前記複数の単位データの間のアクセス順序を示すアクセス情報を更新し、
前記アクセス情報と、前記第１の記憶領域および前記第２の記憶領域への単位データの配置状況を示す配置情報とに基づいて、前記配置状況と、前記第１の単位データが属する前記第１の記憶領域と前記第２の単位データが属する前記第２の記憶領域との間で１以上の単位データを移動させる再配置を行った場合の他の配置状況との差に応じた、前記再配置の評価値を算出し、
前記記憶装置からメモリに、前記第１の記憶領域の単位データ群および前記第２の記憶領域の単位データ群がロードされている場合に、前記メモリ上における前記第１の記憶領域の単位データ群および前記第２の記憶領域の単位データ群の更新状況に基づいて閾値を決定し、
前記評価値と前記閾値との比較に応じて、前記再配置を行うか否か判定する、
データ配置制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ配置制御プログラム、データ配置制御装置およびデータ配置制御方法に関する。
【背景技術】
【０００２】
コンピュータが大量のデータを扱う場合、データを記憶する不揮発性の記憶装置として、ＨＤＤ（Hard Disk Drive）などの低速・大容量の記憶装置が使用されることが多い。しかし、アクセス要求が発行される毎に低速の記憶装置にアクセスしていると、データアクセスがボトルネックとなってコンピュータの処理性能が低下するおそれがあるという問題がある。そこで、１つの方法として、ＲＡＭ（Random Access Memory）などのランダムアクセスが高速なメモリを、キャッシュメモリとして使用することが考えられる。
【０００３】
例えば、複数の単位データを「セグメント」にグループ化してＨＤＤに格納しておき、セグメント毎にまとめてＨＤＤからＲＡＭにキャッシュするデータ管理装置が提案されている。このデータ管理装置は、ある単位データを指定した読み出し要求を受け付けると、指定された単位データを含むセグメント全体をＨＤＤからＲＡＭにロードする。ＲＡＭにロードした（キャッシュした）単位データは、すぐには破棄せずに残しておく。その後、データ管理装置は、キャッシュ中の単位データを指定した読み出し要求を受け付けると、指定された単位データをＨＤＤから読み出す代わりにＲＡＭから取得して提供する。
【０００４】
また、データ管理装置は、読み出し要求の履歴を記録しておき、連続して読み出される可能性が高いという単位データ間の関連性を分析する。データ管理装置は、連続して読み出される可能性が高い単位データが同じセグメントに属するように、ＨＤＤ上の単位データの配置を変更する。これにより、指定された単位データがＲＡＭにキャッシュされている可能性を高めてＨＤＤへのアクセスを減らし、アクセス性能を向上できる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１３／１１４５３８号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に記載のデータ管理装置では、データ再配置が過剰に行われて、低速な記憶装置へのアクセスが削減されない可能性があるという問題がある。
特定の単位データの組が連続してアクセスされやすいという性質（ローカリティ）は、永続するわけではなく情報処理システムの運用に伴って変化し得る。ローカリティが変化すると、前回行ったデータ再配置によるアクセス削減の効果は減少してしまう。すなわち、データ再配置のメリットには有効期限が存在し、メリットの大きさは有限である。特許文献１に記載のデータ管理装置では、ローカリティが変化すると、連続してアクセスされやすくなった別の単位データの組が検出され、検出された単位データの組に関して改めてデータ再配置が行われることになる。一方、データ再配置は、低速な記憶装置への書き込みを一時的に増加させることが多く、コストを生じさせる。
【０００７】
よって、連続してアクセスされやすい単位データの組が新たに検出される毎に常にデータ再配置を行うと、データ再配置のコストに見合ったメリットが得られないことがあり、低速な記憶装置へのアクセスが削減されない場合がある。
【０００８】
１つの側面では、本発明は、過剰なデータ再配置を抑制できるデータ配置制御プログラム、データ配置制御装置およびデータ配置制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、コンピュータに次の処理を実行させるデータ配置制御プログラムが提供される。記憶装置の中の複数の記憶領域に分類して配置された複数の単位データに対するアクセスを受け付ける。複数の記憶領域のうちの第１の記憶領域に配置された第１の単位データに対するアクセスの直後に、複数の記憶領域のうちの第２の記憶領域に配置された第２の単位データに対するアクセスが発生した場合に、第１の単位データの識別情報と第２の単位データの識別情報とに基づいて、複数の単位データの間のアクセス順序を示すアクセス情報を更新する。アクセス情報と、第１の記憶領域および第２の記憶領域への単位データの配置状況を示す配置情報とに基づいて、第１の単位データと関連する第１のデータ群および第２の単位データと関連する第２のデータ群の再配置を行うか否か判定する。
【００１０】
また、１つの態様では、記憶部と判定部とを有するデータ配置制御装置が提供される。
また、１つの態様では、コンピュータが実行するデータ配置制御方法が提供される。
【発明の効果】
【００１１】
１つの側面では、過剰なデータ再配置を抑制することができる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態のデータ配置制御装置を示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】サーバ装置のハードウェア例を示すブロック図である。
【図４】キャッシュメモリへのページのロード例を示す図である。
【図５】データ更新があったページのライトバック例を示す図である。
【図６】データ再配置があったページのライトバック例を示す図である。
【図７】データ再配置に応じたディスクコストの変化例を示す図である。
【図８】サーバ装置の機能例を示すブロック図である。
【図９】検索テーブルと逆検索テーブルの例を示す図である。
【図１０】関連性情報キューと関連性集計テーブルの例を示す図である。
【図１１】出現履歴テーブルの例を示す図である。
【図１２】パラメータテーブルの例を示す図である。
【図１３】アクセス実行の手順例を示すフローチャートである。
【図１４】データ再配置の手順例を示すフローチャートである。
【図１５】重心法によるデータ再配置の例を示す図である。
【図１６】座標テーブルの例を示す図である。
【図１７】第１の再配置案生成の手順例を示すフローチャートである。
【図１８】ユニオンスプリット法によるデータ再配置の例を示す図である。
【図１９】第２の再配置案生成の手順例を示すフローチャートである。
【図２０】データ再配置前後のカット数の変化例を示す図である。
【図２１】回帰変数テーブルの例を示す図である。
【図２２】パラメータ算出の手順例を示すフローチャートである。
【図２３】再出現予測式の変化の例を示す図である。
【図２４】他の情報処理システムの例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態のデータ配置制御装置を示す図である。
【００１４】
第１の実施の形態のデータ配置制御装置１０は、記憶部１１と判定部１２を有する。
記憶部１１は、ランダムアクセスが比較的低速な記憶装置である。記憶部１１としては、例えば、ＨＤＤ、テープ、書き換え可能なディスク媒体、不揮発性の半導体メモリなどを用いることができる。データ配置制御装置１０は、記憶部１１に対するキャッシュメモリとして、ランダムアクセスが比較的高速な記憶装置を用いるようにしてもよい。キャッシュメモリとしては、例えば、ＲＡＭやフラッシュメモリなどを用いることができる。
【００１５】
判定部１２は、記憶部１１へのアクセス性能が向上するように、記憶部１１上のデータ配置を制御する。判定部１２は、例えば、プロセッサを用いて実現できる。プロセッサは、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）であってもよい。また、プロセッサは、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路を含んでもよい。プロセッサは、例えば、ＲＡＭなどのメモリに記憶されたプログラムを実行する。複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼ぶこともある。
【００１６】
記憶部１１には、記憶領域１１ａ，１１ｂを含む複数の記憶領域が設けられている。記憶領域１１ａ，１１ｂは、「ページ」や「セグメント」と呼ばれることがある。記憶領域１１ａ，１１ｂそれぞれには、１または２以上の単位データが配置される。アクセス要求では、読み出しや書き込みの対象として単位データが指定される。ただし、キャッシュメモリを使用する場合、記憶部１１へのアクセスを削減するため、記憶部１１とキャッシュメモリとの間の転送は記憶領域単位でまとめて行うようにしてもよい。
【００１７】
一例として、図１に示すように、記憶領域１１ａには単位データｄ１，ｄ３が配置されている。また、記憶領域１１ｂには単位データｄ２，ｄ４が配置されている。単位データｄ１と単位データｄ３を連続してアクセスする場合、同じ記憶領域に配置されているため高速にアクセスすることができる。また、単位データｄ２と単位データｄ４を連続してアクセスする場合、同じ記憶領域に配置されているため高速にアクセスすることができる。
【００１８】
判定部１２は、記憶領域１１ａ，１１ｂに配置された単位データｄ１，ｄ２，ｄ３，ｄ４に対するアクセスを受け付ける。単位データｄ１，ｄ２，ｄ３，ｄ４へのアクセスは、データ配置制御装置１０の外部からの要求に応じて発生することもあるし、データ配置制御装置１０で実行されるソフトウェアからの要求に応じて発生することもある。
【００１９】
判定部１２は、記憶領域１１ａに配置された単位データｄ１に対するアクセスの直後に、記憶領域１１ｂに配置された単位データｄ２に対するアクセスが発生したことを検出する。すると、判定部１２は、単位データｄ１の識別情報と単位データｄ２の識別情報とに基づいて、アクセス情報１３を更新する。アクセス情報１３は、複数の単位データの間のアクセス順序を示す。例えば、アクセス情報１３には、単位データｄ４の直後に単位データｄ１がアクセスされ、単位データｄ１の直後に単位データｄ２がアクセスされたことが記録される。アクセス情報１３は、例えば、データ配置制御装置１０が備えるＨＤＤなどの不揮発性の記憶装置またはＲＡＭなどの揮発性の記憶装置に記憶されている。
【００２０】
判定部１２は、更新されたアクセス情報１３と配置情報１４とに基づいて、単位データｄ１と関連する第１のデータ群、および、単位データｄ１の直後にアクセスされた単位データｄ２と関連する第２のデータ群の再配置を行うか否か判定する。配置情報１４は、記憶領域１１ａ，１１ｂへの単位データの現在の配置状況を示す。
【００２１】
一例として、配置情報１４は、単位データｄ１，ｄ３が記憶領域１１ａに配置され、単位データｄ２，ｄ４が記憶領域１１ｂに配置されていることを示す。配置情報１４は、例えば、データ配置制御装置１０が備えるＨＤＤなどの不揮発性の記憶装置またはＲＡＭなどの揮発性の記憶装置に記憶されている。第１のデータ群は、例えば、記憶領域１１ａまたは記憶領域１１ｂに配置され、単位データｄ１の直前または直後にアクセスされた単位データを含む。第２のデータ群は、例えば、記憶領域１１ａまたは記憶領域１１ｂに配置され、単位データｄ２の直前または直後にアクセスされた単位データを含む。
【００２２】
例えば、判定部１２は、アクセス情報１３と配置情報１４とに基づいて、再配置によるアクセス性能の改善効果（メリット）を示す評価値を算出する。評価値は、現在の配置状況と再配置を行った場合の配置状況との差に基づいて算出できる。記憶領域１１ａ，１１ｂをまたがる連続アクセスに着目した場合、判定部１２は、アクセス情報１３が示す連続してアクセスされた単位データの組のうち、現在の配置状況において、異なる記憶領域に分断された単位データの組をカウントする（分断数）。同様に、判定部１２は、再配置を行った場合の配置状況について分断数をカウントする。判定部１２は、再配置前の分断数と再配置後の分断数の差に比例する評価値を算出することが考えられる。
【００２３】
評価値が算出されると、例えば、判定部１２は、評価値と再配置のコストを示す閾値とを比較し、評価値が閾値より大きい場合（メリットがコストより大きい場合）に再配置を行うと判定する。再配置のコストは、記憶領域１１ａ，１１ｂを書き換えることによって一時的に増加する記憶部１１へのアクセスを示す。再配置を行うと判定した場合、判定部１２は、記憶部１１上で再配置を実行する。ただし、キャッシュメモリが使用されている場合、判定部１２は、単位データｄ１，ｄ２，ｄ３，ｄ４がキャッシュメモリから追い出されるタイミングを待って記憶領域１１ａ，１１ｂを書き換えてもよい。
【００２４】
一例として、単位データｄ４の直後に単位データｄ１がアクセスされ、単位データｄ１の直後に単位データｄ２がアクセスされたとする。そして、単位データｄ１，ｄ２が同一の記憶領域に配置されるよう再配置を行うことを検討するものとする。この場合、再配置前の配置状況では、図１に示すように、単位データの組（ｄ１，ｄ２）および（ｄ１，ｄ４）が異なる記憶領域に分断されている。一方、単位データ数の偏りが小さくなるように単位データｄ１，ｄ２を入れ替える再配置を行った場合、図１に示すように、単位データの組（ｄ１，ｄ４）のみが異なる記憶領域に分断される。よって、再配置によって分断数は１だけ減少する。分断数が１減少することに相当するメリットがコストより大きい場合、この再配置を行うと判定される。一方、分断数が１減少することに相当するメリットがコスト以下である場合、この再配置は行わないと判定される。
【００２５】
また、一例として、上記に加えて、単位データｄ２の直後に単位データｄ４がアクセスされたとする。この場合、再配置前の配置状況では、図１に示すように、単位データの組（ｄ１，ｄ２）および（ｄ１，ｄ４）が異なる記憶領域に分断されている。一方、単位データｄ１，ｄ２を入れ替える再配置を行った場合、図１に示すように、単位データの組（ｄ１，ｄ４）に加えて（ｄ２，ｄ４）が異なる記憶領域に分断される。すなわち、ある単位データの組の分断が解消されるものの、他の単位データの組が新たに分断される。よって、再配置によって分断数は減少しない。通常、この再配置は行わないと判定される。
【００２６】
第１の実施の形態のデータ配置制御装置１０によれば、単位データ間のアクセス順序を示すアクセス情報１３と、記憶領域１１ａ，１１ｂへの単位データの現在の配置状況を示す配置情報１４とに基づいて、再配置を行うか否か判定される。連続してアクセスされた単位データの組とそれら単位データの組の配置状況から、再配置を行った場合のアクセス性能向上の効果を評価することができる。例えば、異なる記憶領域に分断された単位データの組の減少量を、アクセス性能向上の効果として評価することができる。よって、連続してアクセスされた単位データの組が検出される毎に常にデータ再配置を行う場合と比べて、アクセス性能向上の効果が小さい再配置を抑制することができる。
【００２７】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。
第２の実施の形態の情報処理システムは、クライアント装置２１，２２およびサーバ装置１００を有する。クライアント装置２１，２２およびサーバ装置１００は、ネットワーク２０に接続されている。ネットワーク２０は、ＬＡＮ（Local Area Network）を含んでもよく、インターネットなどの広域ネットワークを含んでもよい。
【００２８】
クライアント装置２１，２２は、ユーザが操作する端末装置としてのクライアントコンピュータである。クライアント装置２１，２２は、サーバ装置１００によって管理されるデータを利用して情報処理を行う。このとき、クライアント装置２１，２２は、ネットワーク２０を介してサーバ装置１００にアクセス要求を送信する。アクセス要求は、あるデータを取得するときに発行される読み出し要求（リード要求）であることもあるし、あるデータを更新するときに発行される書き込み要求（ライト要求）であることもある。
【００２９】
サーバ装置１００は、不揮発性の記憶装置に記憶したデータを管理するサーバコンピュータである。サーバ装置１００は、例えば、ＤＢＭＳ（Database Management System）を実行している。サーバ装置１００は、クライアント装置２１，２２からアクセス要求を受信すると、アクセス要求で指定されたデータに対するアクセスを実行し、実行結果をアクセス要求の送信元へ返信する。リード要求を受信した場合、サーバ装置１００は、指定されたデータを読み出し、読み出したデータを送信する。ライト要求を受信した場合、サーバ装置１００は、指定されたデータを更新し、更新の成否を通知する。
【００３０】
データへのアクセスを高速化するため、サーバ装置１００は、低速・大容量の不揮発性の記憶装置に加えて、高速・小容量のキャッシュメモリを使用する。第２の実施の形態では、前者としてＨＤＤを使用し、後者としてＲＡＭを使用することとする。ただし、前者としてＳＳＤ（Solid State Drive）・フラッシュメモリ・光ディスク・光磁気ディスク・テープなどを使用することもでき、後者としてフラッシュメモリなどを使用することもできる。
【００３１】
サーバ装置１００は、あるデータを指定したアクセス要求を初めて受信すると、指定されたデータを含むデータ集合をＨＤＤからＲＡＭにロードする。ＲＡＭにロードしたデータは、アクセス実行後もすぐには消去せずに残しておく。その後、ＲＡＭにロード済みのデータ（キャッシュ中のデータ）を指定したアクセス要求を受信すると、サーバ装置１００は、ＨＤＤからＲＡＭへのロードを省略してアクセスを実行することができる。なお、サーバ装置１００は、第１の実施の形態のデータ配置制御装置１０の一例である。
【００３２】
図３は、サーバ装置のハードウェア例を示すブロック図である。
サーバ装置１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。上記のユニットは、サーバ装置１００内においてそれぞれバス１０８に接続されている。ＣＰＵ１０１は、第１の実施の形態の判定部１２の一例である。また、ＨＤＤ１０３は、第１の実施の形態の記憶部１１の一例である。
【００３３】
ＣＰＵ１０１は、プログラムの命令を実行する演算回路を含むプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを備えてもよく、サーバ装置１００は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼んでもよい。
【００３４】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、サーバ装置１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００３５】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。プログラムには、ＨＤＤ１０３上のデータの配置を制御するデータ配置制御プログラムが含まれる。なお、サーバ装置１００は、フラッシュメモリやＳＳＤなどの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００３６】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、サーバ装置１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ（ＰＤＰ：Plasma Display Panel）、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなどを用いることができる。
【００３７】
入力信号処理部１０５は、サーバ装置１００に接続された入力デバイス１１２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス１１２としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、サーバ装置１００に、複数の種類の入力デバイスが接続されていてもよい。
【００３８】
媒体リーダ１０６は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。媒体リーダ１０６は、例えば、記録媒体１１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００３９】
通信インタフェース１０７は、ネットワーク２０に接続され、ネットワーク２０を介してクライアント装置２１，２２と通信を行う。通信インタフェース１０７は、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースでもよいし、基地局またはアクセスポイントと無線リンクで接続される無線通信インタフェースでもよい。
【００４０】
なお、サーバ装置１００は、媒体リーダ１０６を備えていなくてもよく、ユーザが操作する端末装置から制御可能である場合には画像信号処理部１０４や入力信号処理部１０５を備えていなくてもよい。また、ディスプレイ１１１や入力デバイス１１２が、サーバ装置１００の筐体と一体に形成されていてもよい。クライアント装置２１，２２も、サーバ装置１００と同様のハードウェア構成によって実現することができる。
【００４１】
次に、データのキャッシュおよびＨＤＤ１０３上でのデータの配置について説明する。
図４は、キャッシュメモリへのページのロード例を示す図である。
サーバ装置１００は、ＨＤＤ１０３の記憶領域を複数のページに分割し、ページ単位でＨＤＤ１０３からのデータの読み出しやＨＤＤ１０３へのデータの書き込みを行う。１つのページは、１つの連続した物理的な記憶領域を示す。ページをセグメントと呼ぶこともある。各ページの大きさは、複数のページの間で同じであってもよいし異なってもよい。１つのページには、複数単位のデータを収容することができる。サーバ装置１００が関係データベース管理システム（ＲＤＢＭＳ：Relational Database Management System）を実行している場合、１単位のデータは、例えば、テーブル内の１つのタプルに相当する。各単位のデータは、例えば、主キーまたは主キー以外の連番によって識別できる。
【００４２】
一例として、ＨＤＤ１０３は、ページ３１（ページＰ）、ページ３２（ページＱ）、ページ３３（ページＲ）およびページ３４（ページＳ）を含む。ページ３１は、単位データとしてデータａ，ｂ，ｃを含む。同様に、ページ３２はデータｄ，ｅ，ｆを含み、ページ３３はデータｇ，ｈ，ｉを含み、ページ３４はデータｊ，ｋ，ｌを含む。上記のように、ＨＤＤ１０３からのデータの読み出しやＨＤＤ１０３へのデータの書き込みは、ページ単位で行われる。よって、以下では、あるページに属する全単位のデータを読み出す／書き込むことを、単にページのデータを読み出す／書き込むと言うことがある。なお、１つのページに収容できるデータ単位の数には上限が設けられているものとする。
【００４３】
ここで、サーバ装置１００は、アクセス要求を受信すると、受信したアクセス要求が指定する単位データを含むページを検索し、検索したページのデータをＨＤＤ１０３からＲＡＭ１０２にロードする。そして、サーバ装置１００は、ＲＡＭ１０２上のデータに対して、アクセス要求が示すアクセスを実行する。サーバ装置１００は、リード要求に対しては、ＲＡＭ１０２にロードされた単位データを提供し、ライト要求に対しては、ＲＡＭ１０２にロードされた単位データを更新する。ＲＡＭ１０２にロードされたデータは、すぐには破棄されずにＨＤＤ１０３のキャッシュとして利用される。後に受信したアクセス要求がキャッシュ中のページに含まれる単位データを指定している場合、サーバ装置１００は、ＨＤＤ１０３からの読み出しを省略してＲＡＭ１０２上のデータを利用できる。
【００４４】
一例として、サーバ装置１００が、データａ，データｅ，データｂ，データｆ，データｇを指定したアクセス要求を順に受信したとする。まず、サーバ装置１００は、データａを指定したアクセス要求に対して、データａの属するページ３１のデータ（データａ，ｂ，ｃを含むページ３１全体）をＲＡＭ１０２にロードする。次に、サーバ装置１００は、データｅを指定したアクセス要求に対して、データｅの属するページ３２のデータ（データｄ，ｅ，ｆを含むページ３２全体）をＲＡＭ１０２にロードする。
【００４５】
次に、サーバ装置１００は、データｂを指定したアクセス要求に対して、データｂの属するページ３１がキャッシュ中であるため、ＨＤＤ１０３へのアクセスを省略し、ＲＡＭ１０２に存在するデータｂを利用する。次に、サーバ装置１００は、データｆを指定したアクセス要求に対して、データｆの属するページ３２がキャッシュ中であるため、ＨＤＤ１０３からの読み出しを省略し、ＲＡＭ１０２に存在するデータｆを利用する。次に、サーバ装置１００は、データｇを指定したアクセス要求に対して、データｇの属するページ３３のデータ（データｇ，ｈ，ｉを含むページ３３全体）をＲＡＭ１０２にロードする。
【００４６】
図５は、データ更新があったページのライトバック例を示す図である。
キャッシュメモリとして利用できるＲＡＭ１０２の記憶領域（キャッシュ領域）は、データが格納されているＨＤＤ１０３の記憶領域と比べて小さい。よって、ＲＡＭ１０２のキャッシュ領域が不足すると、ＲＡＭ１０２から何れかのページのデータを追い出すことになる。例えば、ページ３４のデータをＲＡＭ１０２にロードしようとしたとき、ページ３１，３２，３３がキャッシュ中であり、キャッシュ領域が不足していたとする。この場合、サーバ装置１００は、ページ３１〜３３のうちの少なくとも１つのデータをＲＡＭ１０２から追い出して、キャッシュ領域に空きを作ることになる可能性がある。
【００４７】
このとき、サーバ装置１００は、更新された単位データを含まないページについては、そのページのデータをＲＡＭ１０２上で破棄すればよく、ＨＤＤ１０３に書き戻さなくてよい。一方、サーバ装置１００は、更新された単位データを含むページについては、そのページのデータをＨＤＤ１０３に書き戻すことになる（ライトバック）。
【００４８】
例えば、データａ，ｂ，ｃ，ｄ，ｅ，ｆ，ｇ，ｈ，ｉのうちデータｅのみが、アクセス要求に応じて更新されたとする。データｅの更新は、ＨＤＤ１０３への書き込みを減らすため、すぐにはＨＤＤ１０３に反映されない。この場合、ページ３１のデータをＲＡＭ１０２から追い出すときは、単にページ３１のデータを破棄すればよい。ＲＡＭ１０２上でのデータの破棄は、明示的な消去処理を行わずに、そのデータが記憶されていた記憶領域に他のデータを上書きすることによっても実現できる。同様に、ページ３３のデータをＲＡＭ１０２から追い出すときは、単にページ３３のデータを破棄すればよい。
【００４９】
一方、ページ３２のデータをＲＡＭ１０２から追い出すときは、サーバ装置１００は、データｅの更新をＨＤＤ１０３に反映させるため、ページ３２のデータ（データｄ，ｅ，ｆを含むページ３２全体）をＨＤＤ１０３に書き戻す。ただし、ＲＡＭ１０２上でのデータ更新をＨＤＤ１０３に反映させるタイミングは、キャッシュ中のデータをＲＡＭ１０２から追い出すときに限定しなくてもよい。例えば、サーバ装置１００は、定期的に、更新された単位データを含むページを確認してライトバックを行うようにしてもよい。
【００５０】
ところで、あるページのデータがＲＡＭ１０２にキャッシュされていると、そのページに属する単位データを指定したアクセス要求に対しては、ＨＤＤ１０３からの読み出しを省略することができる。小容量のキャッシュ領域を活用してデータアクセスの性能を向上させるためには、連続してアクセスされる可能性の高い単位データを同じページに配置することが好ましい。そこで、サーバ装置１００は、単位データの間のアクセス順序の履歴を記録しておき、履歴に基づいてＨＤＤ１０３上のデータ配置（何れの単位データを何れのページに配置するか）を動的に変更することとする。
【００５１】
図６は、データ再配置があったページのライトバック例を示す図である。
一例として、サーバ装置１００がクライアント装置２１から、データｅを指定したアクセス要求を受信し、その直後にデータｇを指定したアクセス要求を受信したとする。しかし、現在はデータｅはページ３２に属しており、データｇはページ３３に属している。このため、データｇを指定したアクセス要求を受信した時点で、ページ３３のデータがキャッシュされておらず（キャッシュミスヒットが発生し）、ＨＤＤ１０３からの読み出しが発生する可能性がある。今後もデータｅ，データｇという順番のアクセスが出現する可能性が高い場合、データｅとデータｇは同じページに属していることが好ましい。
【００５２】
そこで、サーバ装置１００は、データｅの属するページ３２とデータｇの属するページ３３の間で、データｅ，ｇが同じページに属するように再配置を行うことが考えられる。例えば、サーバ装置１００は、データｅとデータｇを入れ替える。ページ３２にはデータｄ，ｅ，ｇが含まれ、ページ３３にはデータｆ，ｈ，ｉが含まれることになる。これにより、データｅ，データｇという順番のアクセスが今後出現した場合、データｅのアクセスの時点で、データｇを含むページ３２のデータがＲＡＭ１０２にキャッシュされ、データｇのアクセスの時点ではＨＤＤ１０３からの読み出しは原則として発生しない。
【００５３】
ページ間のデータ再配置は、再配置の対象となる２つのページのデータがＲＡＭ１０２にキャッシュされている間に行われる。ＲＡＭ１０２上で行われたデータ再配置は、後でＨＤＤ１０３に反映される。例えば、ページ３２，３３のデータ再配置が行われると、キャッシュされたページ３２，３３のデータとＨＤＤ１０３に記憶されたページ３２，３３のデータとは一致していない。よって、サーバ装置１００は、ページ３２，３３のデータをＲＡＭ１０２からＨＤＤ１０３に書き戻すことになる。再配置されたページのデータのライトバックは、前述の更新されたデータのライトバックの場合と同様に、そのページのデータをＲＡＭ１０２から追い出すときに行うことができる。ただし、定期的に、データ再配置が行われたページを確認してライトバックを行うようにしてもよい。
【００５４】
ここで、図５に示したデータ更新と図６に示したデータ再配置の両方を考慮して、ＲＡＭ１０２にキャッシュされたデータをＨＤＤ１０３に書き戻すコストについて検討する。ページ３１，３２，３３のデータがＲＡＭ１０２にキャッシュされ、その後、ページ３１，３２，３３のデータが全てＲＡＭ１０２から追い出されるとする。キャッシュ中、ページ３１，３２，３３に含まれる単位データのうち、データｅのみが更新されたとする。
【００５５】
ページ３２，３３の間でデータ再配置を行わない場合、図５に示したように、ページ３１，３２，３３のうち、更新されたデータｅを含むページ３２のデータをＨＤＤ１０３に書き戻すことになる。これに対し、ページ３２，３３の間でデータ再配置を行うと、ページ３１，３２，３３のうちページ３２，３３のデータをＨＤＤ１０３に書き戻すことになる。ページ３２のライトバックはデータ再配置の有無に関係なく発生する一方、ページ３３のライトバックはデータ再配置を行う場合のみ発生する。すなわち、この例では、データ再配置を行うと、ページ１つ分だけＨＤＤ１０３へのデータの書き込みが増加する。増加するデータの書き込みは、データ再配置のコストとして認識することができる。
【００５６】
一方で、ある特定の単位データと他の特定の単位データとが連続してアクセスされる可能性が高いという性質（ローカリティ）は、永続するとは限らず変化し得る。例えば、データｅ，ｇが連続してアクセスされる可能性が高いことに応じて上記のデータ再配置を行った後、ローカリティが変化して、データｄ，ｆが連続してアクセスされる可能性が高くなったとする。すると、サーバ装置１００は、現在データｄとデータｆが異なるページに属しているため、更にページ３２，３３の間でデータ再配置を行うことになる。このように、ローカリティが変化する可能性を考慮すると、データ再配置を行うことで得られるデータアクセスの性能向上というメリットは、有限の値として評価される。
【００５７】
すなわち、データアクセスのローカリティが変化する環境下では、コストがメリットを上回るためにデータ再配置を行わない方が好ましい場合が存在する。そこで、サーバ装置１００は、データ再配置を実行することで発生するコストとデータ再配置を実行することで得られるメリット（再配置を実行しないことのペナルティ（機会コスト）と言うこともできる）とを比較して、データ再配置を実行するか否か判定する。
【００５８】
図７は、データ再配置に応じたディスクコストの変化例を示す図である。
ここでは、ＨＤＤ１０３からＲＡＭ１０２にデータを読み出すコストと、ＲＡＭ１０２からＨＤＤ１０３へデータを書き戻すコストとを合わせた、ディスクコストを考える。グラフ４１は、ローカリティの持続が長い場合、すなわち、ローカリティの変化が小さい場合のディスクコストの時間変化を示す。グラフ４２は、ローカリティの持続が短い場合、すなわち、ローカリティの変化が大きい場合のディスクコストの時間変化を示す。
【００５９】
グラフ４１において、サーバ装置１００がデータ再配置を全く行わない場合、ランダムにキャッシュミスヒットが発生し、ＨＤＤ１０３からのデータの読み出しが安定的に行われる。一方、データ再配置を行わないため、ＨＤＤ１０３へのデータの書き込みは増加しない。よって、データ再配置なしの場合のディスクコストは一定のレベルに安定する。
【００６０】
これに対し、グラフ４１において、サーバ装置１００がデータ再配置を行う場合、データ再配置によってＨＤＤ１０３へのデータの書き込みが一時的に増加する。一方、データ再配置がＨＤＤ１０３に反映されると、その後はキャッシュミスヒットが減少し、ＨＤＤ１０３からのデータの読み出しが抑制される。よって、データ再配置ありの場合のディスクコストは、一時的に増加した後に大きく減少する。ローカリティの持続が長いことから、減少したディスクコストはしばらくの間維持される。その後、ローカリティが変化すると、データ再配置の効果が徐々に消えてしまい、ディスクコストは再配置なしの場合と同じレベルまで増加する。変化後のローカリティに応じてサーバ装置１００がデータ再配置を行うと、再びディスクコストは一時的に増加した後に大きく減少する。
【００６１】
グラフ４２において、サーバ装置１００がデータ再配置を全く行わない場合、グラフ４１の場合と同様に、ディスクコストは一定のレベルに安定する。これに対し、サーバ装置１００がデータ再配置を行う場合、ディスクコストは一時的に増加した後に減少し始める。しかし、ローカリティの持続が短いことから、データ再配置の効果が早く消えてしまい、ディスクコストは十分に低下する前に増加し始める。様々な単位データの間のローカリティは、一斉に変化するわけではなく異なるタイミングに分散して変化する。そのため、複数のページ全体のディスクコストは、図７に示すように緩やかに変換する。すなわち、データ再配置ありの場合のディスクコストは、データ再配置のコストとしての増加、データ再配置のメリットとしての微減少、ローカリティの変化に伴う増加を繰り返す。
【００６２】
ローカルティの持続が長い場合、再配置ありのディスクコストの積分値は、再配置なしのディスクコストの積分値よりも小さい。すなわち、サーバ装置１００が積極的にデータ再配置を行うことで、ディスクコストが低減し、データアクセスの性能が向上する。一方、ローカルティの持続が短い場合、再配置ありのディスクコストの積分値は、再配置なしのディスクコストの積分値よりも大きい。すなわち、サーバ装置１００が積極的にデータ再配置を行うことで、ディスクコストが増加し、かえってデータアクセスの性能が低下するおそれがある。このように、データ再配置は一時的にディスクコストを増加させるため、常にデータ再配置を行うことがデータアクセスの平均性能を向上させるとは限らない。
【００６３】
そこで、サーバ装置１００は、データ再配置の実行コストと不実行ペナルティとを評価し、前者が後者より小さい場合に限定してデータ再配置を実行することとする。
次に、サーバ装置１００によるデータ再配置について説明する。
【００６４】
図８は、サーバ装置の機能例を示すブロック図である。
サーバ装置１００は、データ記憶部１２１、キャッシュ部１２２、制御情報記憶部１２３、アクセス実行部１３１、再配置制御部１３３およびパラメータ算出部１３６を有する。データ記憶部１２１は、ＨＤＤ１０３に確保した記憶領域として実現できる。キャッシュ部１２２および制御情報記憶部１２３は、ＲＡＭ１０２に確保した記憶領域として実現できる。アクセス実行部１３１、再配置制御部１３３およびパラメータ算出部１３６は、例えば、ＣＰＵ１０１が実行するプログラムのモジュールとして実装することができる。
【００６５】
データ記憶部１２１は、連続した物理的な記憶領域として、それぞれ１または２以上の単位データを記憶することができる複数のページを含む。単位データは、識別情報によって識別されアクセス要求に応じてアクセスされるデータの単位であり、例えば、テーブルの１つのタプルに相当する。データ記憶部１２１からのデータの読み出しやデータ記憶部１２１へのデータの書き込みは、アクセス実行部１３１によってページ単位で行われる。
【００６６】
キャッシュ部１２２は、データ記憶部１２１に対するキャッシュメモリである。キャッシュ部１２２の記憶容量は、データ記憶部１２１より小さい一方、キャッシュ部１２２のアクセス速度（特に、ランダムアクセス速度）は、データ記憶部１２１より速い。キャッシュ部１２２には、データ記憶部１２１に含まれる複数のページのうち一部のページのデータが、ページ単位でロードされる。アクセス要求に応じたデータ更新やデータ再配置は、キャッシュ部１２２にロードされたデータに対して行われ、キャッシュ部１２２からそのデータが追い出されるときにデータ記憶部１２１に反映される。
【００６７】
制御情報記憶部１２３は、データアクセス、キャッシュ管理およびデータ再配置の制御に用いられる制御情報を記憶する。制御情報には、ページと単位データの対応関係を示す検索情報、連続してアクセスされた単位データの組を示す履歴情報、データ再配置の実行コストおよびデータ再配置の不実行ペナルティを算出するときに用いるパラメータを示すパラメータ情報などが含まれる。制御情報の詳細は後述する。
【００６８】
アクセス実行部１３１は、アクセス要求を受信し、受信したアクセス要求に応じて、キャッシュ部１２２にキャッシュされたデータに対するアクセスを実行する。リード要求を受信した場合、アクセス実行部１３１は、リード要求で指定された単位データをキャッシュ部１２２から取得し、取得した単位データを返信する。ライト要求を受信した場合、アクセス実行部１３１は、ライト要求に含まれるデータを用いてキャッシュ部１２２上の単位データを更新し、更新の成否を返信する。また、アクセス実行部１３１は、受信したアクセス要求に応じて、制御情報記憶部１２３に記憶された履歴情報などを更新する。
【００６９】
アクセス実行部１３１は、キャッシュ制御部１３２を有する。キャッシュ制御部１３２は、データ記憶部１２１からキャッシュ部１２２へのデータのロードを制御する。キャッシュ制御部１３２は、未キャッシュの単位データを指定したアクセス要求を受信すると、当該単位データを含むページのデータ全体をデータ記憶部１２１からキャッシュ部１２２にロードする。データをロードするにあたり、キャッシュ部１２２の空き領域が不足している場合、キャッシュ制御部１３２は、キャッシュ中の何れかのページのデータをキャッシュ部１２２から追い出す。追い出すページのデータに対してキャッシュ部１２２上で更新または再配置が行われていた場合、キャッシュ制御部１３２は、追い出すページのデータ全体をキャッシュ部１２２からデータ記憶部１２１に書き戻す。
【００７０】
再配置制御部１３３は、制御情報記憶部１２３に記憶された履歴情報を分析し、キャッシュ中のページのデータに対してキャッシュ部１２２上で再配置を実行する。再配置制御部１３３は、再配置案生成部１３４および実行可否判定部１３５を有する。
【００７１】
再配置案生成部１３４は、所定の開始条件が満たされると、ページと単位データの現在の対応関係、および、最近連続してアクセスされた単位データの組に基づいて、再配置案を生成する。開始条件は、例えば、データ再配置を前回検討してからの経過時間や履歴情報の蓄積量などを基準として予め決められる。再配置案は、例えば、データ再配置を行う２つのページの識別情報と、当該２つのページの間で移動する単位データの識別情報とを用いて表現される。再配置案生成部１３４は、連続してアクセスされた単位データができる限り同じページに属するように、ページ間での単位データの移動を検討する。
【００７２】
実行可否判定部１３５は、再配置案生成部１３４が再配置案を生成すると、制御情報記憶部１２３に記憶されたパラメータ情報を用いて、その再配置案を採用した場合の実行コストと不実行ペナルティとを算出する。実行コストは、データ記憶部１２１に書き戻すページの増加量、ＨＤＤ１０３の書き込み速度などを考慮して算出される。不実行ペナルティは、連続してアクセスされた単位データが異なるページに分かれている状況の改善度、ある単位データの組が今後連続してアクセスされる回数の期待値、ＨＤＤ１０３の読み出し速度などを考慮して算出される。実行コストおよび不実行ペナルティの詳細は後述する。実行可否判定部１３５は、算出した実行コストと不実行ペナルティとを比較する。実行可否判定部１３５は、不実行ペナルティが実行コストより大きい場合は再配置案を採用し、不実行ペナルティが実行コスト以下である場合は再配置案を採用しない。
【００７３】
パラメータ算出部１３６は、制御情報記憶部１２３に記憶された履歴情報を分析し、実行コストおよび不実行ペナルティの算出に用いるパラメータ情報を生成する。例えば、パラメータ算出部１３６は、ある単位データの組について、過去の連続アクセスの出現状況を分析して、その連続アクセスが今後出現する回数を予測するための予測式を求める。この予測式は、サーバ装置１００におけるローカリティの持続度を反映している。
【００７４】
図９は、検索テーブルと逆検索テーブルの例を示す図である。
検索テーブル１４１は、制御情報記憶部１２３に記憶されている。検索テーブル１４１は、データＩＤおよびページＩＤの項目を有する。データＩＤは、単位データを識別する識別情報である。データＩＤとして、テーブルの主キーを用いてもよいし、ＤＢＭＳによって自動的に付与される連番を用いてもよい。ページＩＤは、ページを識別する識別情報である。ページＩＤとして、ＨＤＤ１０３のアドレスを用いてもよい。
【００７５】
検索テーブル１４１では、１つのデータＩＤに対して１つのページＩＤが対応付けられる。これは、そのデータＩＤをもつ単位データがそのページＩＤをもつページに属していることを示している。検索テーブル１４１を用いることで、ある単位データのデータＩＤから、その単位データが属するページのページＩＤを検索できる。
【００７６】
逆検索テーブル１４２は、制御情報記憶部１２３に記憶されている。逆検索テーブル１４２は、ページＩＤ、データＩＤ、更新フラグおよび再配置フラグの項目を有する。更新フラグは、あるページに属する単位データの中に、キャッシュ部１２２上で更新された単位データが存在するか否かを示す。更新フラグ＝１は、更新された単位データがあり、その更新がデータ記憶部１２１に未反映であることを示す。更新フラグ＝０は、更新された単位データがないことを示す。再配置フラグは、あるページに対してキャッシュ部１２２上でデータ再配置が実行されたか否かを示す。再配置フラグ＝１は、データ再配置が行われており、そのデータ再配置がデータ記憶部１２１に未反映であることを示す。再配置フラグ＝０は、データ再配置が行われていないことを示す。
【００７７】
逆検索テーブル１４２では、１つのページＩＤに対して、０または１以上のデータＩＤと１つの更新フラグと１つの再配置フラグとが対応付けられる。逆検索テーブル１４２を用いることで、あるページのページＩＤから、そのページに属する全ての単位データのデータＩＤを検索できる。また、逆検索テーブル１４２を用いることで、あるページのページＩＤから、そのページに対応する更新フラグと再配置フラグを検索できる。
【００７８】
なお、キャッシュ部１２２上でのデータ再配置については、ＲＡＭ１０２上で単位データを移動してその単位データの格納位置を変更してもよい。また、キャッシュ部１２２上でのデータ再配置については、ＲＡＭ１０２上の単位データの格納位置は変更せずに、検索テーブル１４１および逆検索テーブル１４２の更新のみ行うようにしてもよい。
【００７９】
図１０は、関連性情報キューと関連性集計テーブルの例を示す図である。
関連性情報キュー１４３は、制御情報記憶部１２３上に形成されている。関連性情報キュー１４３は、先入れ先出し（ＦＩＦＯ：First In First Out）のリスト構造をもつ。関連性情報キュー１４３には、アクセス要求が到着する毎に関連性情報が追加される。
【００８０】
関連性情報は、クライアントＩＤ、データＩＤおよび前データＩＤを含む。クライアントＩＤは、アクセス要求を送信したクライアント装置を識別する識別情報である。クライアントＩＤとして、クライアント装置２１，２２の通信アドレス（例えば、ＩＰ（Internet Protocol）アドレス）を用いてもよい。関連性情報に含まれるデータＩＤは、アクセス要求で指定された単位データのデータＩＤである。前データＩＤは、同じクライアント装置が前回送信したアクセス要求で指定された単位データのデータＩＤである。
【００８１】
関連性情報は、前データＩＤが示す単位データの直後にデータＩＤが示す単位データがアクセスされたという、単位データ間の「関連性」を示している。１つ前にアクセスされた単位データは、例えば、今回のアクセスと同じクライアント装置についての直近の関連性情報を関連性情報キュー１４３から検索することで特定することができる。ただし、クライアント装置２１，２２が、１つ前にアクセスした単位データのデータＩＤを、前データＩＤとしてアクセス要求に付加するようにしてもよい。以下では、データＩＤが示す単位データと前データＩＤが示す単位データの組を「関連データ対」と言うことがある。
【００８２】
関連性情報キュー１４３に登録された関連性情報は、再配置案生成部１３４が再配置案を生成するときに、登録順に従って１つずつ抽出される。再配置案生成部１３４によって利用された関連性情報は、関連性情報キュー１４３から消去される。また、あるページのデータがキャッシュ部１２２から追い出されると、そのページに属する単位データに関する関連性情報は関連性情報キュー１４３から消去される。すなわち、関連性情報キュー１４３には、キャッシュ部１２２にキャッシュされているページについての関連性情報であって、データ再配置の検討にまだ利用されていないものが蓄積される。
【００８３】
関連性集計テーブル１４４は、制御情報記憶部１２３に記憶されている。関連性集計テーブル１４４は、データＩＤおよび重みの項目を有する。重みの項目には、データＩＤの項目が示す単位データの直前にアクセスされた単位データを示す識別情報と、そのアクセス順序の出現回数とが登録される。例えば、データｂに対して｛ａ：２，ｃ：２｝という重み情報が登録される。これは、データａの直後にデータｂがアクセスされたことが２回あり、データｃの直後にデータｂがアクセスされたことが２回あることを示す。
【００８４】
関連性集計テーブル１４４は、関連性情報キュー１４３に関連性情報が追加される毎、すなわち、アクセス要求が到着する毎に、追加された関連性情報に従って更新される。関連性集計テーブル１４４を用いることで、ある単位データのデータＩＤから、その直前にアクセスされた単位データのデータＩＤと、その関連データ対の出現回数を検索できる。あるページのデータがキャッシュ部１２２から追い出されると、追い出されたページに属する単位データに関する重み情報は関連性集計テーブル１４４から消去される。すなわち、関連性集計テーブル１４４には、ページがキャッシュ部１２２にキャッシュされている一期間内に出現した、そのページに関する関連データ対の出現回数が集計される。
【００８５】
図１１は、出現履歴テーブルの例を示す図である。
出現履歴テーブル１４５は、制御情報記憶部１２３に記憶されている。出現履歴テーブル１４５は、関連データ対および出現回数の項目を有する。１つの関連データ対に対して、出現回数の列が対応付けられる。関連データ対の出現回数は、所定の区分基準に従って複数の期間に区分してカウントされる。例えば、今日の出現回数，前日の出現回数，前々日の出現回数，・・・のように、日単位で出現回数がカウントされる。
【００８６】
出現履歴テーブル１４５は、関連性情報キュー１４３に関連性情報が追加される毎、すなわち、アクセス要求が到着する毎に、追加された関連性情報に従って更新される。例えば、関連性情報キュー１４３に関連性情報が追加されると、追加された関連性情報が示す関連データ対に対応する今日の出現回数を１だけ加算（インクリメント）する。出現履歴テーブル１４５には、長期間の出現回数を蓄積することができる。関連性情報キュー１４３および関連性集計テーブル１４４からは、キャッシュ部１２２から追い出されたページに関する情報が消去されるのに対し、出現履歴テーブル１４５には、キャッシュ部１２２から追い出されたページに関する情報も蓄積しておいてよい。ただし、所定期間以上古い出現回数の情報は、出現履歴テーブル１４５から消去してもよい。
【００８７】
図１２は、パラメータテーブルの例を示す図である。
パラメータテーブル１４６は、制御情報記憶部１２３に記憶されている。パラメータテーブル１４６には、実行可否判定部１３５がデータ再配置の実行コストおよび不実行ペナルティを算出するときに用いるパラメータの名称と値が登録される。パラメータの値の少なくとも一部は、パラメータ算出部１３６によって動的に算出される。パラメータの値の中には、ユーザによって静的に設定されるものが含まれていてもよい。
【００８８】
パラメータには、書き込み速度、読み出し速度、全体の予測式、および、複数の関連データ対それぞれに対応する個別の予測式が含まれる。書き込み速度は、１ページのデータをＲＡＭ１０２からＨＤＤ１０３に書き戻すのに要する時間を示す。読み出し速度は、１ページのデータをＨＤＤ１０３からＲＡＭ１０２にロードするのに要する時間を示す。書き込み速度および読み出し速度それぞれの単位は、例えば、ミリ秒毎ページである。
【００８９】
なお、書き込み速度および読み出し速度は、ユーザがＨＤＤ１０３の物理性能とページサイズの期待値から推定しておき、予めパラメータテーブル１４６に登録しておいてもよい。また、ユーザが書き込み速度および読み出し速度を実測し、実測値の平均を予めパラメータテーブル１４６に登録しておいてもよい。また、パラメータ算出部１３６がＨＤＤ１０３の書き込み速度および読み出し速度を監視し、パラメータテーブル１４６に登録された書き込み速度および読み出し速度の値を継続的に更新してもよい。
【００９０】
予測式は、関連データ対の過去の出現状況から、今後一定期間内に同じ関連データ対が出現する回数を予測する式である。予測式は、例えば、ｙ＝ｕ１×ｘ１＋ｕ２×ｘ２＋ｕ３×ｘ３＋・・・という線形式である。変数ｙ（目的変数）は、関連データ対の将来の出現回数の期待値（再出現期待値）を表し、変数ｘ１，ｘ２，ｘ３，・・・（説明変数）は、関連データ対の過去の出現状況に応じた特徴量を表す。係数ｕ１，ｕ２，ｕ３，・・・は、特徴量の重みを表す。パラメータ算出部１３６は、後述するように、出現履歴テーブル１４５を用いて回帰分析を行い、係数ｕ１，ｕ２，ｕ３，・・・を算出する。
【００９１】
このとき、パラメータ算出部１３６は、様々な関連データ対についてのデータを合わせて回帰分析することで、特定の関連データ対に限定しない全体の予測式の係数ｕ１，ｕ２，ｕ３，・・・を算出することができる。また、パラメータ算出部１３６は、特定の関連データ対についてのデータを回帰分析することで、その関連データ対に対応する予測式の係数ｕ１，ｕ２，ｕ３，・・・を算出することができる。全体の予測式および複数の個別の予測式の間では、係数ｕ１，ｕ２，ｕ３，・・・が異なることが多い。
【００９２】
後述する例では、基準日の前日に所望の関連データ対が出現したか否かを示す変数ｘ１と、基準日の前々日に所望の関連データ対が出現したか否かを示す変数ｘ２と、基準日から一定期間前までの出現率を示す変数ｘ３と、基準日の季節を示す変数ｘ４を用いる。変数ｙは、基準日から一定期間後までに所望の関連データ対が出現する回数の期待値を示す。変数ｙの出現回数をカウントする期間（変数ｙの値を定める「一定期間」）は、１つのページが連続してキャッシュされている期間の平均に応じて決めてもよい。
【００９３】
このようにして決定した予測式は、サーバ装置１００におけるローカリティの持続傾向を反映している。ある関連データ対の出現回数は、その関連データ対がバースト的に出現し初めてから収束するまでの間、一定に安定するわけではなく非線形に増減することがある。そこで、直近の出現状況に関する複数の特徴量を用いることで、出現回数の分布のどの地点まで現在進んでおり、今後どの程度の出現回数が期待されるかを推定できる。ただし、パラメータ算出部１３６は、特徴量を用いた回帰分析に代えて、各関連データ対の出現回数の分布を詳細に分析して、再出現期待値を算出できるようにしてもよい。
【００９４】
次に、サーバ装置１００が実行する処理の手順について説明する。
図１３は、アクセス実行の手順例を示すフローチャートである。
（Ｓ１０）アクセス実行部１３１は、クライアント装置２１，２２の何れかから、ネットワーク２０を介してアクセス要求を受信する。アクセス要求は、ある単位データを読み出すリード要求またはある単位データを更新するライト要求などである。
【００９５】
（Ｓ１１）アクセス実行部１３１は、制御情報記憶部１２３に記憶された検索テーブル１４１を参照して、アクセス要求で指定された単位データを含むページＴを検索する。
（Ｓ１２）キャッシュ制御部１３２は、検索されたページＴがキャッシュ中であるか、すなわち、ページＴのデータがキャッシュ部１２２に記憶されているか判断する。検索されたページＴがキャッシュ中である場合はステップＳ１９に処理が進み、ページＴが未キャッシュである場合はステップＳ１３に処理が進む。
【００９６】
なお、各ページがキャッシュ中であるか判断するため、キャッシュ制御部１３２は、キャッシュ中のページを示すリストまたは未キャッシュのページを示すリストを保持していてもよい。また、逆検索テーブル１４２にはキャッシュ中のページに関する情報のみ登録するようにし、キャッシュ制御部１３２は、所望のページの情報が逆検索テーブル１４２に存在するか確認することで当該ページがキャッシュ中か否かを判断してもよい。また、各ページがキャッシュ中か否かを示すフラグを逆検索テーブル１４２に追加してもよい。
【００９７】
（Ｓ１３）キャッシュ制御部１３２は、キャッシュ部１２２のキャッシュ領域に、ページＴのデータを格納するだけの空きが存在するか判断する。キャッシュ領域に空きが存在するか否かは、キャッシュ中のページの数が所定の上限に達しているか否かによって判断してもよい。キャッシュ領域に空きが存在する場合はステップＳ１８に処理が進み、キャッシュ領域が不足している場合はステップＳ１４に処理が進む。
【００９８】
（Ｓ１４）キャッシュ制御部１３２は、キャッシュ中の複数のページのうちキャッシュ部１２２から追い出すページＵを選択する。ページＵを選択するアルゴリズム（キャッシュアルゴリズムや置換アルゴリズムなどと呼ばれることがある）としては、様々なものが考えられる。例えば、ＬＲＵ（Least Recently Used）、ＬＦＵ（Least Frequency Used）、ＦＩＦＯなどのアルゴリズムを用いることができる。キャッシュ制御部１３２は、使用するアルゴリズムに応じた情報（例えば、ページのアクセス回数）を保持してもよい。
【００９９】
（Ｓ１５）キャッシュ制御部１３２は、逆検索テーブル１４２から、ステップＳ１４で選択したページＵに対応する更新フラグと再配置フラグを取得する。そして、キャッシュ制御部１３２は、更新フラグ＝１または再配置フラグ＝１であるか、すなわち、ページＵに含まれる単位データが更新されたかまたはページＵに対してデータ再配置が行われたか判断する。更新フラグ＝１または再配置フラグ＝１である場合、ステップＳ１６に処理が進む。更新フラグ＝０かつ再配置フラグ＝０である場合、ステップＳ１７に処理が進む。
【０１００】
（Ｓ１６）キャッシュ制御部１３２は、キャッシュ部１２２に記憶されたページＵのデータ全体をデータ記憶部１２１に書き戻す。すなわち、ＲＡＭ１０２にキャッシュされたページＵのデータがＨＤＤ１０３に書き戻される。
【０１０１】
（Ｓ１７）キャッシュ制御部１３２は、逆検索テーブル１４２に登録されたページＵに対応する更新フラグおよび再配置フラグを「０」にクリアする。また、キャッシュ制御部１３２は、ページＵに含まれる単位データを逆検索テーブル１４２から検索し、検索した単位データについての情報を関連性情報キュー１４３および関連性集計テーブル１４４から消去する。なお、キャッシュ制御部１３２は、キャッシュ部１２２上のページＵのデータを破棄する。そのとき、キャッシュ制御部１３２は、キャッシュ部１２２から明示的にページＵのデータを消去してもよいし、ページＵのデータを消去せずにページＵに割り当てられていた記憶領域を上書き可能に設定するようにしてもよい。
【０１０２】
（Ｓ１８）キャッシュ制御部１３２は、ステップＳ１１で検索されたページＴのデータ全体を、データ記憶部１２１からＲＡＭ１０２上のキャッシュ部１２２に読み出す。
（Ｓ１９）アクセス実行部１３１は、キャッシュ部１２２に記憶されたデータに対して、受信したアクセス要求に応じたアクセスを実行し、アクセス要求を送信したクライアント装置に対して応答する。アクセス要求がリード要求である場合、アクセス実行部１３１は、アクセス要求で指定された単位データをキャッシュ部１２２から抽出して、アクセス要求を送信したクライアント装置に送信する。アクセス要求がライト要求である場合、アクセス実行部１３１は、アクセス要求で指定された単位データをキャッシュ部１２２上で更新し、アクセス要求を送信したクライアント装置に更新の成否を通知する。また、アクセス要求がライト要求である場合、アクセス実行部１３１は、逆検索テーブル１４２に登録されたページＴの更新フラグを「１」に書き換える。
【０１０３】
（Ｓ２０）アクセス実行部１３１は、受信したアクセス要求に応じて関連性情報を生成し、制御情報記憶部１２３に形成された関連性情報キュー１４３に保存する。関連性情報には、アクセス要求を送信したクライアント装置の識別情報と、アクセス要求で指定された単位データの識別情報が含まれる。また、関連性情報には、同じクライアント装置からの要求によって前回アクセスされた単位データの識別情報が含まれる。前回アクセスされた単位データは、例えば、そのクライアント装置についての直近の関連性情報を関連性情報キュー１４３から検索することで特定できる。また、前回アクセスされた単位データの識別情報がアクセス要求に付加されている場合、その識別情報を利用できる。
【０１０４】
また、アクセス実行部１３１は、生成した関連性情報を用いて関連性集計テーブル１４４を更新する。具体的には、アクセス実行部１３１は、関連性集計テーブル１４４において、今回アクセスされた単位データに対応する前回アクセスされた単位データの重みを１だけ加算する。また、アクセス実行部１３１は、制御情報記憶部１２３に記憶された出現履歴テーブル１４５を更新する。具体的には、アクセス実行部１３１は、出現履歴テーブル１４５において、今回アクセスされた単位データと前回アクセスされた単位データの組（関連データ対）に対応する最新の出現回数を１だけ加算する。
【０１０５】
図１４は、データ再配置の手順例を示すフローチャートである。
（Ｓ３０）再配置制御部１３３は、制御情報記憶部１２３に形成された関連性情報キュー１４３に、新たな関連性情報が追加されたことを検出する。
【０１０６】
（Ｓ３１）再配置制御部１３３は、以下のステップＳ３３〜Ｓ４０に示すデータ再配置の検討を前回行ってから所定時間以上経過したか判断する。前回のデータ再配置の検討から所定時間以上経過した場合、ステップＳ３３に処理が進み、データ再配置の検討が開始される。所定時間以上経過していない場合、ステップＳ３２に処理が進む。
【０１０７】
（Ｓ３２）再配置制御部１３３は、関連性情報キュー１４３に保存された関連性情報が示す関連データ対のうち、ページをまたがる関連データ対（異なるページに属する単位データの組）の数をカウントする。各単位データが属するページは、制御情報記憶部１２３に記憶された検索テーブル１４１を参照して特定することができる。そして、再配置制御部１３３は、ページをまたがる関連データ対の数が所定の閾値以上であるか判断する。条件を満たす場合、ステップＳ３３に処理が進み、データ再配置の検討が開始される。条件を満たさない場合、データ再配置の検討は開始されない。
【０１０８】
なお、図１４では、データ再配置の検討を開始する開始条件として、ステップＳ３１，Ｓ３２の２つの条件を用いることとした。ただし、ステップＳ３１，Ｓ３２の何れか一方のみを開始条件として用いてもよい。また、ステップＳ３１，Ｓ３２に代えて、または、ステップＳ３１，Ｓ３２と合わせて、他の開始条件を用いてもよい。例えば、関連性情報キュー１４３に保存された関連性情報の量が閾値に達したことを開始条件としてもよい。
【０１０９】
（Ｓ３３）再配置案生成部１３４は、関連性情報キュー１４３から１つの関連データ対の情報を抽出する。抽出する関連データ対の情報は、例えば、関連性情報キュー１４３に記憶されているもののうち最も古いものとする。抽出した関連データ対の情報は、関連性情報キュー１４３から削除される。以下では、関連データ対が示す今回アクセスされた単位データをｍ１、前回アクセスされた単位データをｎ１と表記することがある。
【０１１０】
（Ｓ３４）再配置案生成部１３４は、単位データｍ１が属するページＭと単位データｎ１が属するページＮとの間の再配置案を１つ生成する。再配置案は、ページＭ，ＮのページＩＤと、一方のページから他方のページ（ページＭからページＮまたはその逆）に移動する単位データのデータＩＤとを用いて表現できる。再配置案生成の詳細は後述する。
【０１１１】
（Ｓ３５）実行可否判定部１３５は、ステップＳ３４で生成された再配置案に従ってデータ再配置を実行した場合の実行コストを算出する。実行コストは、ライトバックするページの増加量×書き込み速度、として算出できる。
【０１１２】
ライトバックするページの増加量は、図５，６で説明したように、キャッシュ部１２２上でのページＭ，Ｎの更新状況に基づいて算出することができ、「０」，「１」，「２」の何れかの値をとる。実行可否判定部１３５は、逆検索テーブル１４２に登録されたページＭ，Ｎの更新フラグを確認して、ページＭ，Ｎのうち更新フラグ＝１であるページの数（更新されたページの数）を算出する。データ再配置によって増加するライトバックのページ数は、「２」−更新されたページの数である。書き込み速度は、制御情報記憶部１２３に記憶されたパラメータテーブル１４６を参照して特定できる。
【０１１３】
（Ｓ３６）実行可否判定部１３５は、ステップＳ３４で生成された再配置案に従ってデータ再配置を実行した場合の不実行ペナルティを算出する。不実行ペナルティは、ページＭ，Ｎの間のカット数の減少量×再出現期待値×読み出し速度、として算出できる。
【０１１４】
ページＭ，Ｎの間のカット数は、制御情報記憶部１２３に記憶された関連性集計テーブル１４４に登録されている関連データ対のうち、ページＭ，Ｎをまたがる関連データ対の重みの合計である。すなわち、ページＭ，Ｎの間のカット数は、ページＭ，Ｎの両方が今回キャッシュされている期間内に出現した関連データ対のうち、ページＭ，Ｎをまたがる関連データ対の出現回数を示す。実行可否判定部１３５は、関連性集計テーブル１４４を参照して、現在の配置状況におけるカット数とデータ再配置を実行した後の配置状況におけるカット数とを算出し、前者から後者を引いたカット数の減少量を算出する。
【０１１５】
ページＭ，Ｎにまたがっていた関連データ対の中には、データ再配置によってページＭ，Ｎの何れか一方の中に収まり、アクセス性能が向上するものがあり得る。逆に、ページＭ，Ｎの何れか一方の中に収まっていた関連データ対の中には、データ再配置によってページＭ，Ｎにまたがるようになり、アクセス性能が低下するものがあり得る。カット数の減少量は、一部の関連データ対についてのアクセス性能の向上と一部の関連データ対についてのアクセス性能の低下とを反映したものであり、データ再配置を行うことによる単位データの配置状況の全体的な改善度を表した指標であると言うことができる。
【０１１６】
再出現期待値は、ページＭ，Ｎに属する単位データの間の関連データ対が今後一定期間の間に出現する回数の期待値を表し、パラメータテーブル１４６に登録された予測式を用いて算出される。例えば、実行可否判定部１３５は、ページＭ，Ｎに属する単位データの間の関連データ対を関連性集計テーブル１４４から抽出し、抽出した関連データ対それぞれについて、出現履歴テーブル１４５を参照して変数ｘ１，ｘ２，ｘ３，ｘ４の値を算出する。そして、実行可否判定部１３５は、抽出した関連データ対それぞれについて、当該関連データ対に対応する個別の予測式を用いて個別の再出現期待値を算出する。また、実行可否判定部１３５は、抽出した関連データ対全体に対応する変数ｘ１，ｘ２，ｘ３，ｘ４の平均値を算出し、全体の予測式を用いて全体の再出現期待値を算出する。個別の再出現期待値および全体の再出現期待値の平均を、不実行ペナルティの算出に用いる。
【０１１７】
なお、不実行ペナルティを算出するにあたり、個別の再出現期待値および全体の再出現期待値の一方のみを用いるようにしてもよい。また、予測式に代えて、予め算出した再出現期待値をパラメータテーブル１４６に登録しておくようにしてもよい。読み出し速度は、パラメータテーブル１４６を参照して特定できる。
【０１１８】
（Ｓ３７）実行可否判定部１３５は、ステップＳ３５で算出した実行コストとステップＳ３６で算出した不実行ペナルティとを比較し、不実行ペナルティが実行コストより大きいか判断する。不実行ペナルティが実行コストより大きい場合、再配置案を採用すると決定され、ステップＳ３８に処理が進む。不実行ペナルティが実行コスト以下である場合、再配置案を採用しないと決定され、ステップＳ４０に処理が進む。
【０１１９】
（Ｓ３８）再配置制御部１３３は、ステップＳ３４で生成された再配置案に従ったデータ再配置を、キャッシュ部１２２上（ＲＡＭ１０２上）で実行する。このとき、再配置制御部１３３は、ＲＡＭ１０２上で単位データを移動してもよいし移動しなくてもよい。
【０１２０】
（Ｓ３９）再配置制御部１３３は、検索テーブル１４１および逆検索テーブル１４２を更新する。具体的には、再配置制御部１３３は、ページＭ，Ｎの間で移動する単位データの情報を検索テーブル１４１から検索し、その単位データに対応付けられたページＩＤを書き換える。また、再配置制御部１３３は、ページＭ，Ｎの情報を逆検索テーブル１４２から検索し、ページＭ，Ｎに対応付けられたデータＩＤを書き換える。また、再配置制御部１３３は、ページＭ，Ｎの再配置フラグを「１」に書き換える。
【０１２１】
（Ｓ４０）再配置案生成部１３４は、関連性情報キュー１４３から全ての関連データ対の情報を抽出したか、すなわち、関連性情報キュー１４３が空であるか判断する。関連性情報キュー１４３が空である場合、データ再配置の検討が終了する。関連性情報キュー１４３が空でない場合、ステップＳ３３に処理が進む。
【０１２２】
次に、ステップＳ３４で行われる再配置案の生成について説明する。以下では、再配置案の生成方法の例として、重心法とユニオンスプリット法を挙げる。
図１５は、重心法によるデータ再配置の例を示す図である。
【０１２３】
重心法では、単位データの間の関連性の強さ（連続してアクセスされる可能性の高さ）を、Ｎ次元空間（Ｎは２以上の整数）上の距離として表現し、Ｎ次元空間上で単位データをグルーピングする。ここでは、一例として２次元空間を用いる。グラフ４３は、関連性情報キュー１４３から抽出した関連データ対の情報を適用する前の関連性を表す。グラフ４４は、抽出した関連データ対の情報を適用した後の単位データの間の関連性を表す。
【０１２４】
重心法では、ページおよび単位データそれぞれに対して座標を付与する。ページの座標は、互いに十分に離れるように予め付与しておく。単位データの座標の初期値は、その単位データが属するページの座標の近傍になるように付与しておく。グラフ４３では、ページＱ，Ｒ（ページ３２，３３）および単位データｅ，ｆ，ｇ，ｈが配置されている。
【０１２５】
初期状態では、所定のグルーピング方法を用いると、単位データｅ，ｆはページ３２と同じグループに振り分けられ、単位データｇ，ｈはページ３３と同じグループに振り分けられるようにしておく。グルーピング方法としては、例えば、各ページが順に、グループが決定していない単位データのうちそのページから座標が最も近い単位データを自グループに取り込むという方法が考えられる。グラフ４３の場合、１巡目でページＱが単位データｆを選択し、ページＲが単位データｇを選択する。２巡目でページＱが単位データｅを選択し、ページＲが単位データｈを選択する。これにより、単位データｅ，ｆはページＱに属し、単位データｇ，ｈはページＲに属するというグルーピングを行うことができる。
【０１２６】
ここで、再配置案生成部１３４が関連性情報キュー１４３から関連データ対の情報を抽出すると、その関連データ対に応じて単位データの座標を変更する。具体的には、一方の単位データの座標を、他方の単位データが属するページの座標に近付ける。単位データｆの直後に単位データｇがアクセスされた場合、グラフ４３では、単位データｆの座標がページＲの座標に近付き、単位データｇの座標がページＱの座標に近付く。これは、単位データｆとページＲの関連性が現在よりも強くなり、単位データｇとページＱの関連性が現在よりも強くなったことを表す。座標の移動量は、一定量としてもよい。また、座標の移動量は、単位データの座標と近付く先のページの座標との間の距離（例えば、単位データｆの座標とページＲの座標の距離）に対する一定割合（例えば、１０％）としてもよい。
【０１２７】
２次元空間上で単位データの座標が変更されると、上記のグルーピング方法を用いて単位データのグループが再計算される。例えば、グラフ４４の場合、１巡目でページＱが単位データｆを選択し、ページＲが単位データｈを選択する。２巡目でページＱが単位データｇを選択し、ページＲが単位データｅを選択する。これにより、単位データｆ，ｇはページＱのグループに振り分けられ、単位データｅ，ｈはページＲのグループに振り分けられることになる。これは、単位データｅがページＱからページＲに移動し、単位データｇがページＲからページＱに移動するという再配置案を表す。
【０１２８】
図１６は、座標テーブルの例を示す図である。
再配置案の生成に重心法を用いる場合、座標テーブル１４７が制御情報記憶部１２３に記憶される。座標テーブル１４７は、ノードＩＤおよび座標の項目を有する。ノードＩＤは、Ｎ次元空間上に配置するノードの識別情報である。ノードＩＤとして、ページについてはページＩＤを用い、単位データについてはデータＩＤを用いる。ノードＩＤに対して、Ｎ次元空間上の現在の座標が対応付けられる。単位データに対応する座標は、上記のように再配置案生成部１３４によって更新され得る。あるページがキャッシュ部１２２から追い出されても、そのページに関する情報を座標テーブル１４７から消去しなくてよい。
【０１２９】
図１７は、第１の再配置案生成の手順例を示すフローチャートである。
第１の再配置案生成は、上記のステップＳ３４で実行される。
（Ｓ５０）再配置案生成部１３４は、制御情報記憶部１２３に記憶された検索テーブル１４１から単位データｍ１を含むページＭと単位データｎ１を含むページＮを検索する。
【０１３０】
（Ｓ５１）再配置案生成部１３４は、制御情報記憶部１２３に記憶された座標テーブル１４７から、単位データｍ１，ｎ１およびページＭ，Ｎに対応する座標を検索する。
（Ｓ５２）再配置案生成部１３４は、単位データｍ１の座標をページＮの座標に向かって近付ける。例えば、再配置案生成部１３４は、座標テーブル１４７で、単位データｍ１の座標を、単位データｍ１の座標とページＮの座標の距離が１０％縮まるように変更する。また、再配置案生成部１３４は、単位データｎ１の座標をページＭの座標に向かって近付ける。例えば、再配置案生成部１３４は、座標テーブル１４７で、単位データｎ１の座標を、単位データｎ１の座標とページＭの座標の距離が１０％縮まるように変更する。
【０１３１】
（Ｓ５３）再配置案生成部１３４は、制御情報記憶部１２３に記憶された逆検索テーブル１４２から、ページＭ，Ｎに含まれる全ての単位データを検索する。再配置案生成部１３４は、座標テーブル１４７から、検索した単位データそれぞれの座標を検索する。
【０１３２】
（Ｓ５４）再配置案生成部１３４は、ステップＳ５４で検索された単位データを、それら単位データの座標とページＭ，Ｎの座標を用いてグルーピングする。グルーピングでは、ページＭ，Ｎの座標と単位データそれぞれの座標との間の距離が考慮される。ページＭとの距離が近い単位データはページＭに配置されることが好ましく、ページＮとの距離が近い単位データはページＮに配置されることが好ましい。例えば、ページＭ，Ｎが交互に、未選択の単位データのうち距離が最も近い単位データを１つずつ選択していく。
【０１３３】
（Ｓ５５）再配置案生成部１３４は、現在のページＭ，Ｎのデータ配置とステップＳ５４で求めたページＭ，Ｎのデータ配置とを比較し、ページＭ，Ｎの間で移動する単位データを特定する。これにより、ページＭ，Ｎの再配置案が生成される。
【０１３４】
図１８は、ユニオンスプリット法によるデータ再配置の例を示す図である。
ユニオンスプリット法では、再配置案生成部１３４が関連性情報キュー１４３から関連データ対の情報を抽出すると、関連データ対が示す２つのページが統合される。ページの統合では、一方のページに属する全ての単位データを、他方のページに移動させる。統合後の一方のページは、単位データを含まない空のページとなる。
【０１３５】
ただし、統合後の他方のページに含まれる単位データの量が上限を超えてしまうことがある。その場合、単位データそれぞれのアクセス状況に応じて、統合後の他方のページを分割する。ページの分割では、他方のページに集められた単位データを、キャッシュ部１２２に今回キャッシュされている間にアクセスされたものとアクセスされなかったものとにグルーピングする。そして、何れか一方のグループの単位データを移動させる。
【０１３６】
例えば、単位データｄ，ｅ，ｆを含むページ３２（ページＱ）と、単位データｇ，ｈ，ｉを含むページ３３（ページＲ）がキャッシュ部１２２にキャッシュされているとする。また、今回のキャッシュ中、単位データｅの直後に単位データｆがアクセスされ、単位データｆの直後に単位データｇがアクセスされたとする。すると、ページＱとページＲが統合される。例えば、ページＲに含まれる単位データｇ，ｈ，ｉがページＱに移動する。その結果、ページＱは単位データｄ，ｅ，ｆ，ｇ，ｈ，ｉを含み、ページＲは空となる。
【０１３７】
しかし、このように移動するとページＱに含まれる単位データの量が所定の上限を超えてしまう場合、単位データｄ，ｅ，ｆ，ｇ，ｈ，ｉが、キャッシュ中にアクセスされた単位データｅ，ｆ，ｇとアクセスされなかった単位データｄ，ｈ，ｉとに分けられる。そして、ページＱが分割される。例えば、キャッシュ中にアクセスされなかった単位データｄ，ｈ，ｉがページＱからページＲに移動する。その結果、ページＱは単位データｅ，ｆ，ｇを含み、ページＲは単位データｄ，ｈ，ｉを含むこととなる。
【０１３８】
図１９は、第２の再配置案生成の手順例を示すフローチャートである。
第２の再配置案生成は、上記のステップＳ３４で実行される。
（Ｓ６０）再配置案生成部１３４は、制御情報記憶部１２３に記憶された検索テーブル１４１から単位データｍ１を含むページＭと単位データｎ１を含むページＮを検索する。
【０１３９】
（Ｓ６１）再配置案生成部１３４は、制御情報記憶部１２３に記憶された逆検索テーブル１４２から、ページＭ，Ｎに含まれる全ての単位データを検索する。
（Ｓ６２）再配置案生成部１３４は、ページＭとページＮを統合する再配置案を生成する。具体的には、再配置案生成部１３４は、ページＮに含まれる全ての単位データをページＭに移動する再配置案を生成する。この再配置案によれば、ページＮは空となる。
【０１４０】
（Ｓ６３）再配置案生成部１３４は、ステップＳ６２で生成した再配置案を採用した場合に、ページＭのデータ量（例えば、単位データの個数）が所定の上限を超えるか判断する。ページＭのデータ量が上限を超える場合、ステップＳ６４に処理が進む。ページＭのデータ量が以下である場合、ステップＳ６６に処理が進む。
【０１４１】
（Ｓ６４）再配置案生成部１３４は、ページＭに集められた単位データそれぞれが、キャッシュ部１２２に今回キャッシュされている間にアクセスされたか判定する。各単位データのアクセスの有無は、例えば、制御情報記憶部１２３に記憶された関連性集計テーブル１４４に、その単位データに関する情報が登録されているか否かで判定できる。
【０１４２】
（Ｓ６５）再配置案生成部１３４は、ステップＳ６４で判定したアクセスの有無に応じてページＭを分割するように、ステップＳ６２で生成した再配置案を修正する。具体的には、再配置案生成部１３４は、ページＭに集められた単位データのうち、アクセスされなかった単位データがページＮに移動するように再配置案を修正する。
【０１４３】
（Ｓ６６）再配置案生成部１３４は、ステップＳ６２で生成した再配置案またはステップＳ６５で修正した再配置案に基づいて、現在のページＭ，Ｎのデータ配置から移動する単位データを特定する。これにより、ページＭ，Ｎの再配置案が確定される。
【０１４４】
なお、再配置案生成部１３４は、重心法およびユニオンスプリット法を含む複数の再配置案の生成方法のうち、何れか１つを使用すればよい。使用する再配置案の生成方法は、例えば、ユーザが予め再配置案生成部１３４に設定しておく。重心法は、関連データ対の出現回数の増加に応じて徐々にデータ配置を変更していくことが可能な方法であり、データ配置の長期的な最適化に適しているという利点がある。ユニオンスプリット法は、新たな関連データ対の出現に反応して、データ配置を迅速に修正できるという利点がある。
【０１４５】
次に、上記のステップＳ３６で算出するカット数の減少量について補足する。
図２０は、データ再配置前後のカット数の変化例を示す図である。
ここでは、ページ３２（ページＱ）に単位データｄ，ｅ，ｆが含まれ、ページ３３（ページＲ）に単位データｇ，ｈ，ｉが含まれているとする。また、単位データｄと単位データｇ、単位データｅと単位データｆ、単位データｅと単位データｇ、単位データｈと単位データｉが、連続してアクセスされたとする。また、単位データｆをページＲに移動し、単位データｇをページＱに移動するという再配置案が生成されたとする。
【０１４６】
データ再配置前は、単位データｄ，ｇの関連データ対および単位データｅ，ｇの関連データ対が、ページＱ，Ｒをまたがっている。よって、データ再配置前のカット数は「２」である。一方、生成された再配置案によれば、データ再配置後は、単位データｄ，ｇの関連データ対および単位データｅ，ｇの関連データ対がページＱ，Ｒをまたがっておらず、単位データｅ，ｆの関連データ対がページＱ，Ｒをまたがっている。よって、データ再配置後のカット数は「１」であり、カット数の減少量（ΔＣｕｔ）が「１」と算出される。ΔＣｕｔは、生成された再配置案の良否を反映していると言うことができる。
【０１４７】
次に、再出現期待値の予測式を算出する方法について説明する。
図２１は、回帰変数テーブルの例を示す図である。
パラメータ算出部１３６は、定期的またはユーザからの指示に応じて、出現履歴テーブル１４５を用いて個別の予測式および全体の予測式を算出し、パラメータテーブル１４６に登録する。予測式を算出するとき、パラメータ算出部１３６によって回帰変数テーブル１４８が制御情報記憶部１２３上に生成される。回帰変数テーブル１４８は、前日フラグ、前々日フラグ、過去出現率、季節および将来出現回数の項目を有する。
【０１４８】
前日フラグは、回帰分析の説明変数であり、前述の変数ｘ１に相当する。前日フラグは、ある関連データ対が基準日の前日に１回以上出現したか否かを示す。１回以上出現した場合は前日フラグ＝１となり、１回も出現していない場合は前日フラグ＝０となる。前々日フラグは、回帰分析の説明変数であり、前述の変数ｘ２に相当する。前々日フラグは、ある関連データ対が基準日の前々日に１回以上出現したか否かを示す。１回以上出現した場合は前々日フラグ＝１となり、１回も出現していない場合は前々日フラグ＝０となる。
【０１４９】
過去出現率は、回帰分析の説明変数であり、前述の変数ｘ３に相当する。過去出現率は、基準日から所定日数前までのうち、ある関連データ対が１回以上出現した日の割合を示す。例えば、基準日から１０日前までのうち、ある関連データ対が３日出現して７日出現しなかった場合、過去出現率は０．３となる。季節は、回帰分析の説明変数であり、前述の変数ｘ４に相当する。春は「０」、夏は「１」、秋は「２」、冬は「３」と表記される。将来出現回数は、回帰分析の目的変数であり、前述の変数ｙに相当する。将来出現回数は、基準日から所定日数後までの間に、ある関連データ対が出現した回数を示す。
【０１５０】
パラメータ算出部１３６は、基準日を１つ選択し、出現履歴テーブル１４５に登録された関連データ対それぞれについて、基準日の前後の出現回数を用いて、前日フラグ・前々日フラグ・過去出現率・季節・将来出現回数を算出する。パラメータ算出部１３６は、複数の基準日について、前日フラグ・前々日フラグ・過去出現率・季節・将来出現回数を算出する。複数の基準日は、互いに一定日数以上離れるようにする。そして、パラメータ算出部１３６は、各関連データ対について、基準日の異なる説明変数および目的変数の値を用いて回帰分析を行い、当該関連データ対の個別の予測式の係数を算出する。また、パラメータ算出部１３６は、全ての関連データ対についての説明変数および目的変数の値をまとめて使用して回帰分析を行い、全体の予測式の係数を算出する。
【０１５１】
図２２は、パラメータ算出の手順例を示すフローチャートである。
（Ｓ７０）パラメータ算出部１３６は、複数の基準日を選択する。
（Ｓ７１）パラメータ算出部１３６は、説明変数と目的変数を決定する。例えば、説明変数として前日フラグ（変数ｘ１）・前々日フラグ（変数ｘ２）・過去出現率（変数ｘ３）・季節（変数ｘ４）を用い、目的変数として将来出現回数（変数ｙ）を用いる。過去出現率および将来出現回数については、集計期間の長さも決定する。ただし、関連データ対の過去の出現状況を表す説明変数として、上記以外の特徴量を用いることも可能である。
【０１５２】
（Ｓ７２）パラメータ算出部１３６は、制御情報記憶部１２３に記憶された出現履歴テーブル１４５を用いて、異なる関連データ対と基準日の組み合わせ毎に、説明変数の値と目的変数の値を算出し、回帰変数テーブル１４８に登録する。
【０１５３】
（Ｓ７３）パラメータ算出部１３６は、回帰変数テーブル１４８に登録された値を用いて回帰分析を行い、説明変数の係数（重み）を算出する。例えば、パラメータ算出部１３６は、前日フラグの係数ｕ１、前々日フラグの係数ｕ２、過去出現率の係数ｕ３、季節の係数ｕ４を算出する。このとき、関連データ対毎に値を分けて回帰分析を行うことで、関連データ対毎の個別の係数が算出される。また、全ての関連データ対の値をまとめて用いて回帰分析を行うことで、全体の係数が算出される。
【０１５４】
（Ｓ７４）パラメータ算出部１３６は、ステップＳ７３で算出した係数を含む予測式をパラメータテーブル１４６に保存する。予測式には、関連データ対毎の再出現期待値を求める個別の予測式と、平均の再出現期待値を求める全体の予測式とが含まれる。一例として、再出現期待値（ｙ）＝−３×前日フラグ（ｘ１）−１×前々日フラグ（ｘ２）＋２×過去出現率（ｘ３）＋０．０３×季節（ｘ４）という予測式が得られる。
【０１５５】
図２３は、再出現予測式の変化の例を示す図である。
サーバ装置１００において、同じ関連データ対の出現回数の時間分布やローカリティの持続傾向が変わると、予測式によって算出される再出現期待値と実際の出現回数とのずれが大きくなるおそれがある。その場合には、予測式を更新することが好ましい。例えば、図２３において、回帰変数テーブル１４８に登録された上３つのサンプルは、将来出現回数＝前日フラグ＋１０×過去出現率という予測式にフィットする。一方、回帰変数テーブル１４８に登録された下２つのサンプルは、将来出現回数＝前々日フラグ＋１０×過去出現率という予測式にフィットする。これは、サーバ装置１００における出現回数の時間分布やローカリティの持続傾向が変化した可能性を示している。
【０１５６】
次に、第２の実施の形態の情報処理システムの構成の変形例について説明する。上記では、サーバ装置１００が集中的にデータを管理することとした。これに対し、複数のサーバ装置が分散してデータを管理することも可能である。
【０１５７】
図２４は、他の情報処理システムの例を示す図である。
変形例に係る情報処理システムは、クライアント装置２１ａ，２２ａおよびサーバ装置１００ａ，１００ｂ，１００ｃを有する。クライアント装置２１ａ，２２ａおよびサーバ装置１００ａ，１００ｂ，１００ｃは、ネットワーク２０に接続されている。
【０１５８】
サーバ装置１００ａ，１００ｂ，１００ｃは、複数のページのデータを分散して記憶する。例えば、サーバ装置１００ａがページ３１のデータを記憶し、サーバ装置１００ｂがページ３２のデータを記憶し、サーバ装置１００ｃがページ３３のデータを記憶する。
【０１５９】
クライアント装置２１ａ，２２ａは、アクセスしたい単位データを記憶するサーバ装置を知っている場合、当該サーバ装置に対してアクセス要求を送信する。一方、クライアント装置２１ａ，２２ａは、アクセスしたい単位データを記憶するサーバ装置を知らない場合、サーバ装置１００ａ，１００ｂ，１００ｃの全てにアクセス要求を送信するようにしてもよいし、任意の１つのサーバ装置に対してアクセス要求を送信してもよい。前者の場合、アクセス要求で指定された単位データをもつサーバ装置のみ、アクセス要求の送信元に応答すればよい。後者の場合、アクセス要求を受信したサーバ装置は、アクセス要求で指定された単位データをもつサーバ装置にアクセス要求を転送する。サーバ装置１００ａ，１００ｂ，１００ｃは、ページとサーバ装置との対応関係の情報を保持している。
【０１６０】
アクセスの連続性を検出するため、サーバ装置１００ａ，１００ｂ，１００ｃは、受信したアクセス要求が指定する単位データのデータＩＤを相互に通知し合う。または、クライアント装置２１ａ，２２ａが、前回アクセスした単位データのデータＩＤをアクセス要求に付加する。これにより、サーバ装置１００ａ，１００ｂ，１００ｃそれぞれは、自装置に記憶された単位データについての関連性情報を収集できる。サーバ装置１００ａ，１００ｂ，１００ｃそれぞれは、収集した関連性情報を用いて、自装置が管理するページに関する再配置案を生成しデータ再配置を実行すればよい。データ再配置の相手ページが他のサーバ装置に存在する場合、サーバ装置間で単位データが移動される。
【０１６１】
第２の実施の形態の情報処理システムによれば、連続してアクセスされた単位データができる限り同じページに配置されるように、ＨＤＤ１０３上の単位データの格納位置が動的に変更される。これにより、キャッシュミスヒットが減少して、ランダムアクセスの低速なＨＤＤ１０３からのデータの読み出しが削減され、データアクセスの性能を向上させることができる。また、ＲＡＭ１０２にデータがキャッシュされている間にデータ再配置を行うことで、ＨＤＤ１０３へのデータの書き込みを削減することができる。
【０１６２】
また、連続アクセスの発生に応じて再配置案が生成されたとき、生成された再配置案の実行コストと不実行ペナルティとが算出され、不実行ペナルティが実行コストより大きい場合のみ再配置案が採用される。実行コストには、ＨＤＤ１０３への書き込みの増加量が反映される。不実行ペナルティには、再配置案の良否やサーバ装置１００におけるローカリティの持続傾向が反映される。これにより、データ再配置の実行によってデータアクセスの性能がかえって低下することを抑制できる。例えば、データ再配置を行ってもページをまたがる連続アクセスの減少効果が小さい場合や、同じパターンの連続アクセスの出現回数が少ないと予想される場合、再配置案を採用しないと判定され得る。また、ＨＤＤ１０３への書き込みの増加量が大きい場合、再配置案を採用しないと判定され得る。
【０１６３】
なお、前述のように、第１の実施の形態の情報処理は、コンピュータにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、クライアント装置２１，２２（または、クライアント装置２１ａ，２２ａ）やサーバ装置１００（または、サーバ装置１００ａ，１００ｂ，１００ｃ）にプログラムを実行させることで実現できる。
【０１６４】
プログラムは、コンピュータ読み取り可能な記録媒体（例えば、記録媒体１１３）に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、ＦＤおよびＨＤＤが含まれる。光ディスクには、ＣＤ、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤおよびＤＶＤ−Ｒ／ＲＷが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からＨＤＤなどの他の記録媒体（例えば、ＨＤＤ１０３）にプログラムをコピーして実行してもよい。
【符号の説明】
【０１６５】
１０  データ配置制御装置
１１  記憶部
１１ａ，１１ｂ  記憶領域
１２  判定部
１３  アクセス情報
１４  配置情報
ｄ１，ｄ２，ｄ３，ｄ４  単位データ
【図１】
0006394231.tif 000002
【図２】
0006394231.tif 000003
【図３】
0006394231.tif 000004
【図４】
0006394231.tif 000005
【図５】
0006394231.tif 000006
【図６】
0006394231.tif 000007
【図７】
0006394231.tif 000008
【図８】
0006394231.tif 000009
【図９】
0006394231.tif 000010
【図１０】
0006394231.tif 000011
【図１１】
0006394231.tif 000012
【図１２】
0006394231.tif 000013
【図１３】
0006394231.tif 000014
【図１４】
0006394231.tif 000015
【図１５】
0006394231.tif 000016
【図１６】
0006394231.tif 000017
【図１７】
0006394231.tif 000018
【図１８】
0006394231.tif 000019
【図１９】
0006394231.tif 000020
【図２０】
0006394231.tif 000021
【図２１】
0006394231.tif 000022
【図２２】
0006394231.tif 000023
【図２３】
0006394231.tif 000024
【図２４】
0006394231.tif 000025