(57)【要約】【課題】キャッシュメモリにおける効率的なプリフェッチをすることができるキャッシュデータ管理装置、方法及びプログラムを提供すること。【解決手段】キャッシュデータ管理装置１０は、キャッシュメモリ３１において共存するデータのブロックの組み合わせを検出し、検出した組み合わせのうち、キャッシュメモリ３１に存在しないようになった組み合わせを検出する。そして、キャッシュデータ管理装置１０は、キャッシュメモリ３１に共存するデータのブロックの組み合わせに対応する、プリフェッチテーブル２１のカウントをアップし、キャッシュメモリ３１に共存しないようになったデータのブロックの組み合わせに対応する、プリフェッチテーブル２１のカウントをダウンし、カウントが第１閾値以上である場合に、スーパーブロックを形成し、カウントが第２閾値以下である場合に、形成したスーパーブロックを解除する。【選択図】図１
2016062145.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリに読み込むデータのプリフェッチを管理するキャッシュデータ管理装置であって、
前記キャッシュメモリにおいて共存するデータのブロックの組み合わせを検出する第１検出手段と、
前記第１検出手段によって検出された前記組み合わせのうち、前記キャッシュメモリに存在しないようになった前記組み合わせを検出する第２検出手段と、
前記組み合わせが前記キャッシュメモリに存在する頻度を表わす頻度情報であって、前記第１検出手段によって検出された前記組み合わせの前記頻度情報が第１条件を満たすか否かを判定する第１判定手段と、
前記第１判定手段によって前記第１条件を満たすと判定された前記組み合わせから成るスーパーブロックであって、その組み合わせのうちのいずれかのブロックのデータが前記キャッシュメモリに読み込まれるとその組み合わせのうちの残りのブロックのデータがプリフェッチされるようにするための前記スーパーブロックを、形成するスーパーブロック形成手段と、
前記第２検出手段によって検出された前記組み合わせの前記頻度情報が第２条件を満たすか否かを判定する第２判定手段と、
前記第２判定手段によって前記第２条件を満たすと判定された前記組み合わせの、前記スーパーブロック形成手段によって形成された前記スーパーブロックを解除するスーパーブロック解除手段と、
前記スーパーブロックに基づいてプリフェッチし、データを前記キャッシュメモリに読み込む読込手段と、
を備えるキャッシュデータ管理装置。
【請求項２】
前記組み合わせに対応付けて前記頻度情報としてカウントを記憶するプリフェッチテーブルと、
前記第１検出手段によって検出された前記組み合わせに対応する、前記プリフェッチテーブルの前記カウントをアップするカウントアップ手段と、
前記第２検出手段によって検出された前記組み合わせに対応する、前記プリフェッチテーブルの前記カウントをダウンするカウントダウン手段と、をさらに備え、
前記第１判定手段は、前記カウントと第１閾値とを比較し、前記カウントが前記第１閾値以上である場合に前記第１条件を満たすと判定し、
前記第２判定手段は、前記カウントと第２閾値とを比較し、前記カウントが前記第２閾値以下である場合に前記第２条件を満たすと判定する、
請求項１に記載のキャッシュデータ管理装置。
【請求項３】
前記組み合わせは、複数のブロックから成り、そのブロックのサイズが可変である、請求項１又は２に記載のキャッシュデータ管理装置。
【請求項４】
前記スーパーブロックは、前記組み合わせに含まれるブロックの個数と、そのブロックごとのサイズとを含む、請求項１から３のいずれか一項に記載のキャッシュデータ管理装置。
【請求項５】
ＯＲＡＭ（Ｏｂｌｉｖｉｏｕｓ  ＲＡＭ）において、データのプリフェッチをする、請求項１から４のいずれか一項に記載のキャッシュデータ管理装置。
【請求項６】
請求項１に記載のキャッシュデータ管理装置が実行する方法であって、
前記第１検出手段が、前記キャッシュメモリにおいて共存するデータのブロックの組み合わせを検出する第１検出ステップと、
前記第２検出手段が、前記第１検出ステップによって検出された前記組み合わせのうち、前記キャッシュメモリに存在しないようになった前記組み合わせを検出する第２検出ステップと、
前記第１判定手段が、前記組み合わせが前記キャッシュメモリに存在する頻度を表わす頻度情報であって、前記第１検出手段によって検出された前記組み合わせの前記頻度情報が第１条件を満たすか否かを判定する第１判定ステップと、
前記スーパーブロック形成手段が、前記第１判定ステップによって前記第１条件を満たすと判定された前記組み合わせから成るスーパーブロックであって、その組み合わせのうちのいずれかのブロックのデータが前記キャッシュメモリに読み込まれるとその組み合わせのうちの残りのブロックのデータがプリフェッチされるようにするための前記スーパーブロックを、形成するスーパーブロック形成ステップと、
前記第２判定手段が、前記第２検出ステップによって検出された前記組み合わせの前記頻度情報が第２条件を満たすか否かを判定する第２判定ステップと、
前記スーパーブロック解除手段が、前記第２判定ステップによって前記第２条件を満たすと判定された前記組み合わせの、前記スーパーブロック形成ステップによって形成された前記スーパーブロックを解除するスーパーブロック解除ステップと、
前記読込手段が、前記スーパーブロックに基づいてプリフェッチし、データを前記キャッシュメモリに読み込む読込ステップと、
を備える方法。
【請求項７】
コンピュータに、請求項６に記載の方法の各ステップを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュデータ管理装置、方法及びプログラムに関する。
【背景技術】
【０００２】
従来より、コンピュータシステムにおいては、アプリケーションの高速化を実現するためにキャッシュメモリが実装される。このキャッシュメモリをより有効に利用するために、プリフェッチしたデータをキャッシュメモリへ記憶させる技術が知られている（特許文献１）。さらに、キャッシュメモリにおけるプリフェッチ技術として、攻撃者から情報を保護するためにデータのアドレスを変更するＯＲＡＭ（Ｏｂｌｉｖｉｏｕｓ  ＲＡＭ）において、プリフェッチをする技術が知られている（非特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−２９７３７９号公報
【非特許文献】
【０００４】
【非特許文献１】Ｘ．Ｙｕ，Ｌ．Ｒｅｎ，Ｃ．Ｆｌｅｔｃｈｅｒ，Ａ．Ｋｗｏｎ，Ｍ．ｖａｎ  Ｄｉｊｋ  ａｎｄ  Ｓ．Ｄｅｖａｄａｓ，“Ｅｎｈａｎｃｉｎｇ  Ｏｂｌｉｖｉｏｕｓ  ＲＡＭ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｕｓｉｎｇ  Ｄｙｎａｍｉｃ  Ｐｒｅｆｅｔｃｈｉｎｇ，”  ＩＡＣＲ  ｅＰｒｉｎｔ  ２０１４／２３４，２０１４．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１で開示されている技術は、プリフェッチの対象が連続アドレスのデータであることを条件とする技術である。また、非特許文献１で開示されているプリフェッチの技術は、プリフェッチの対象が隣接する２つのブロックであること、かつ、サイズが等しいブロックであることを、条件としている。このような条件の下では、アプリケーションによっては効率的なプリフェッチとならない場合がある。
そこで、キャッシュメモリにおける効率的なプリフェッチをすることができる装置が求められている。
【０００６】
本発明は、キャッシュメモリにおける効率的なプリフェッチをすることができるキャッシュデータ管理装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
具体的には、以下のような解決手段を提供する。
（１）  キャッシュメモリに読み込むデータのプリフェッチを管理するキャッシュデータ管理装置であって、前記キャッシュメモリにおいて共存するデータのブロックの組み合わせを検出する第１検出手段と、前記第１検出手段によって検出された前記組み合わせのうち、前記キャッシュメモリに存在しないようになった前記組み合わせを検出する第２検出手段と、前記組み合わせが前記キャッシュメモリに存在する頻度を表わす頻度情報であって、前記第１検出手段によって検出された前記組み合わせの前記頻度情報が第１条件を満たすか否かを判定する第１判定手段と、前記第１判定手段によって前記第１条件を満たすと判定された前記組み合わせから成るスーパーブロックであって、その組み合わせのうちのいずれかのブロックのデータが前記キャッシュメモリに読み込まれるとその組み合わせのうちの残りのブロックのデータがプリフェッチされるようにするための前記スーパーブロックを、形成するスーパーブロック形成手段と、前記第２検出手段によって検出された前記組み合わせの前記頻度情報が第２条件を満たすか否かを判定する第２判定手段と、前記第２判定手段によって前記第２条件を満たすと判定された前記組み合わせの、前記スーパーブロック形成手段によって形成された前記スーパーブロックを解除するスーパーブロック解除手段と、前記スーパーブロックに基づいてプリフェッチし、データを前記キャッシュメモリに読み込む読込手段と、を備えるキャッシュデータ管理装置。
【０００８】
（１）の構成によれば、（１）に係るキャッシュデータ管理装置は、キャッシュメモリにおいて共存するデータのブロックの組み合わせを検出し、検出した組み合わせのうち、キャッシュメモリに存在しないようになった組み合わせを検出し、組み合わせがキャッシュメモリに存在する頻度を表わす頻度情報であって、キャッシュメモリにおいて共存するデータのブロックの組み合わせの頻度情報が第１条件を満たすか否かを判定し、第１条件を満たすと判定した組み合わせから成るスーパーブロックであって、その組み合わせのうちのいずれかのブロックのデータがキャッシュメモリに読み込まれるとその組み合わせのうちの残りのブロックのデータがプリフェッチされるようにするためのスーパーブロックを、形成する。そして、キャッシュデータ管理装置は、キャッシュメモリに存在しないようになった組み合わせの頻度情報が第２条件を満たすか否かを判定し、第２条件を満たすと判定した組み合わせの、形成されたスーパーブロックを解除する。そして、キャッシュデータ管理装置は、スーパーブロックに基づいてプリフェッチし、データをキャッシュメモリに読み込む。
【０００９】
すなわち、（１）に係るキャッシュデータ管理装置は、キャッシュメモリにおいて共存するデータのブロックの組み合わせを検出し、その組み合わせがキャッシュメモリに存在する頻度に基づいて、プリフェッチをするためのスーパーブロックの形成及び解除をするので、ヒットする可能性の高いスーパーブロックを形成し、形成したスーパーブロックであってもヒットする可能性が低くなるとスーパーブロックを解除する。
したがって、（１）に係るキャッシュデータ管理装置は、キャッシュメモリにおける効率的なプリフェッチをすることができる。
【００１０】
（２）  前記組み合わせに対応付けて前記頻度情報としてカウントを記憶するプリフェッチテーブルと、前記第１検出手段によって検出された前記組み合わせに対応する、前記プリフェッチテーブルの前記カウントをアップするカウントアップ手段と、前記第２検出手段によって検出された前記組み合わせに対応する、前記プリフェッチテーブルの前記カウントをダウンするカウントダウン手段と、をさらに備え、前記第１判定手段は、前記カウントと第１閾値とを比較し、前記カウントが前記第１閾値以上である場合に前記第１条件を満たすと判定し、前記第２判定手段は、前記カウントと第２閾値とを比較し、前記カウントが前記第２閾値以下である場合に前記第２条件を満たすと判定する、（１）に記載のキャッシュデータ管理装置。
【００１１】
したがって、（２）に係るキャッシュデータ管理装置は、データのブロックの組み合わせがキャッシュメモリに存在する頻度としてカウントを記憶し、そのカウントに基づいてスーパーブロックの形成及び解除をすることによって、キャッシュメモリにおける効率的なプリフェッチを容易に構築することができる。
【００１２】
（３）  前記組み合わせは、複数のブロックから成り、そのブロックのサイズが可変である、（１）又は（２）に記載のキャッシュデータ管理装置。
【００１３】
したがって、（３）に係るキャッシュデータ管理装置は、キャッシュメモリにおける効率的なプリフェッチを高い利便性で提供することができる。
【００１４】
（４）  前記スーパーブロックは、前記組み合わせに含まれるブロックの個数と、そのブロックごとのサイズとを含む、（１）から（３）のいずれか一に記載のキャッシュデータ管理装置。
【００１５】
したがって、（４）に係るキャッシュデータ管理装置は、キャッシュメモリにおいてより効率的なプリフェッチをすることができる。
【００１６】
（５）  ＯＲＡＭ（Ｏｂｌｉｖｉｏｕｓ  ＲＡＭ）において、データのプリフェッチをする、（１）から（４）のいずれか一に記載のキャッシュデータ管理装置。
【００１７】
したがって、（５）に係るキャッシュデータ管理装置は、ＯＲＡＭのようにデータのアドレスが変化する場合であっても、変化したアドレスにおけるデータのブロックの組み合わせがキャッシュメモリに存在する頻度に基づいて、キャッシュメモリにおける効率的なプリフェッチをすることができる。
【００１８】
（６）  （１）に記載のキャッシュデータ管理装置が実行する方法であって、前記第１検出手段が、前記キャッシュメモリにおいて共存するデータのブロックの組み合わせを検出する第１検出ステップと、前記第２検出手段が、前記第１検出ステップによって検出された前記組み合わせのうち、前記キャッシュメモリに存在しないようになった前記組み合わせを検出する第２検出ステップと、前記第１判定手段が、前記組み合わせが前記キャッシュメモリに存在する頻度を表わす頻度情報であって、前記第１検出手段によって検出された前記組み合わせの前記頻度情報が第１条件を満たすか否かを判定する第１判定ステップと、前記スーパーブロック形成手段が、前記第１判定ステップによって前記第１条件を満たすと判定された前記組み合わせから成るスーパーブロックであって、その組み合わせのうちのいずれかのブロックのデータが前記キャッシュメモリに読み込まれるとその組み合わせのうちの残りのブロックのデータがプリフェッチされるようにするための前記スーパーブロックを、形成するスーパーブロック形成ステップと、前記第２判定手段が、前記第２検出ステップによって検出された前記組み合わせの前記頻度情報が第２条件を満たすか否かを判定する第２判定ステップと、前記スーパーブロック解除手段が、前記第２判定ステップによって前記第２条件を満たすと判定された前記組み合わせの、前記スーパーブロック形成ステップによって形成された前記スーパーブロックを解除するスーパーブロック解除ステップと、前記読込手段が、前記スーパーブロックに基づいてプリフェッチし、データを前記キャッシュメモリに読み込む読込ステップと、を備える方法。
【００１９】
したがって、（６）に係る方法は、キャッシュメモリにおける効率的なプリフェッチをすることができる。
【００２０】
（７）  コンピュータに、（６）に記載の方法の各ステップを実行させるためのプログラム。
【００２１】
したがって、（７）に係るプログラムは、コンピュータに、キャッシュメモリにおける効率的なプリフェッチをさせることができる。
【発明の効果】
【００２２】
本発明によれば、キャッシュメモリにおける効率的なプリフェッチをすることができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の一実施形態に係るキャッシュデータ管理装置の構成を示すブロック図である。
【図２】本発明の一実施形態に係るプリフェッチテーブルの例を示す図である。
【図３】本発明の一実施形態に係るスーパーブロックテーブルの例を示す図である。
【図４】本発明の一実施形態に係るキャッシュデータ管理装置の処理の例を示すフローチャートである。
【図５】本発明の一実施形態に係るキャッシュデータ管理装置のスーパーブロック形成処理の例を示すフローチャートである。
【図６】本発明の一実施形態に係るキャッシュデータ管理装置のスーパーブロック解除処理の例を示すフローチャートである。
【発明を実施するための形態】
【００２４】
以下、本発明の実施形態について、図を参照しながら説明する。
図１は、本発明の一実施形態に係るキャッシュデータ管理装置１０の構成を示すブロック図である。
キャッシュデータ管理装置１０は、キャッシュメモリ３１に読み込むデータのプリフェッチを管理する。キャッシュデータ管理装置１０は、例えば、ＯＲＡＭ（Ｏｂｌｉｖｉｏｕｓ  ＲＡＭ）において、データのプリフェッチを管理することができる。
プリフェッチの対象であるデータのブロックは、アドレスが隣接している必要はなく、ブロックのサイズは可変であるが、固定であってもよい。
データのブロックの組み合わせにおいて、組み合わせるブロックの個数ｎは可変でよい。なお、キャッシュデータ管理装置１０は、組み合わせるブロックの個数ｎの最大数を予め設定するとしてもよい。キャッシュデータ管理装置１０は、アプリケーションの処理内容によって設定された個数ｎの最大数に基づいて、データのブロックの組み合わせを検出し、より効率的なプリフェッチをすることができる。
【００２５】
キャッシュデータ管理装置１０は、第１検出手段１１と、第１判定手段１２と、スーパーブロック形成手段１３と、第２検出手段１４と、第２判定手段１５と、スーパーブロック解除手段１６と、読込手段１７と、を備え、さらに、カウントアップ手段１１１と、カウントダウン手段１４１と、プリフェッチテーブル２１とを備える。各手段ごとに詳述する。
【００２６】
第１検出手段１１は、キャッシュメモリ３１において共存するデータのブロックの組み合わせを検出する。具体的には、第１検出手段１１は、キャッシュメモリ３１にメインメモリ３０から読み込んでいるデータを管理するテーブル（例えば、後述する図２（２）のキャッシュ管理テーブル）に基づいて、キャッシュメモリ３１において共存するデータのブロックの組み合わせを検出する。
第１検出手段１１は、アプリケーションプログラムからメインメモリ３０にアクセスがあったとき（メインメモリ３０からキャッシュメモリ３１にデータが読み込まれる場合と、読み込まれない場合とにかかわらず）に、ブロックの組み合わせを検出するとしてもよいし、定期的にキャッシュメモリ３１を調べ、データに変化があったときにブロックの組み合わせを検出するとしてもよい。
【００２７】
第１判定手段１２は、データのブロックの組み合わせがキャッシュメモリ３１に存在する頻度を表わす頻度情報であって、第１検出手段１１によって検出された組み合わせの頻度情報が、スーパーブロックを形成するための第１条件を満たすか否かを判定する。
頻度情報は、例えば、データのブロックの組み合わせがキャッシュメモリ３１に存在する回数であるカウントであってもよい。
具体的には、第１検出手段１１は、データのブロックの組み合わせに対応付けて頻度情報としてカウントを記憶するプリフェッチテーブル２１（後述する図２参照）に、検出したデータのブロックの組み合わせを記憶させる。
カウントアップ手段１１１は、第１検出手段１１によって検出されたデータのブロックの組み合わせ（すなわち、プリフェッチテーブル２１に記憶されているデータのブロックの組み合わせ）に対応する、プリフェッチテーブル２１のカウントをアップする。
第１判定手段１２は、カウントと第１閾値とを比較し、カウントが第１閾値以上である場合に第１条件を満たすと判定する。
【００２８】
スーパーブロック形成手段１３は、第１判定手段１２によって第１条件を満たすと判定されたデータのブロックの組み合わせから成るスーパーブロックを形成する。スーパーブロックは、データのブロックの組み合わせのうちのいずれかのブロックのデータがキャッシュメモリ３１に読み込まれるとその組み合わせのうちの残りのブロックのデータがプリフェッチされるようにするためのものである。具体的には、スーパーブロック形成手段１３は、形成したスーパーブロックをスーパーブロックテーブル２２（後述する図３参照）に記憶させる。
【００２９】
第２検出手段１４は、第１検出手段１１によって過去に検出された組み合わせ（すなわち、プリフェッチテーブル２１に記憶されているデータのブロックの組み合わせ）のうち、キャッシュメモリ３１に存在しないようになったデータのブロックの組み合わせを検出する。第２検出手段１４は、第１検出手段１１と同じタイミングでデータのブロックの組み合わせを検出するとしてもよいし、第１検出手段１１とは異なるタイミング（例えば、第１検出手段１１が、アプリケーションプログラムからメインメモリ３０にアクセスがあったタイミングに対し、第２検出手段１４が定期的にキャッシュメモリ３１を調べ、データに変化があったタイミング）でデータのブロックの組み合わせを検出するとしてもよい。
【００３０】
第２判定手段１５は、第２検出手段１４によって検出されたデータのブロックの組み合わせの頻度情報が、スーパーブロックを解除するための第２条件を満たすか否かを判定する。
具体的には、カウントダウン手段１４１は、第２検出手段１４によって検出されたデータのブロックの組み合わせに対応する、プリフェッチテーブル２１のカウントをダウンする。第２判定手段１５は、カウントと第２閾値とを比較し、カウントが第２閾値以下である場合に第２条件を満たすと判定する。
【００３１】
スーパーブロック解除手段１６は、第２判定手段１５によって第２条件を満たすと判定されたデータのブロックの組み合わせの、スーパーブロック形成手段１３によって形成されたスーパーブロックを解除する。具体的には、スーパーブロック解除手段１６は、形成したスーパーブロックを記憶するスーパーブロックテーブル２２（後述する図３参照）から、解除したスーパーブロックを削除する。
【００３２】
読込手段１７は、スーパーブロックに基づいてプリフェッチし、データをキャッシュメモリ３１に読み込む。具体的には、読込手段１７は、スーパーブロックテーブル２２（後述する図３参照）に記憶されているデータのブロックの組み合わせのうち、いずれかのブロックのデータをキャッシュメモリ３１に読み込むと、その組み合わせのうちの残りのブロックのデータをプリフェッチし、キャッシュメモリ３１に読み込む。
【００３３】
図２は、本発明の一実施形態に係るプリフェッチテーブル２１の例を示す図である。図２（１）は、プリフェッチテーブル２１の例であり、図２（２）は、キャッシュメモリ３１を管理するキャッシュ管理テーブルの例である。プリフェッチテーブル２１の説明のために、キャッシュ管理テーブルを参照する。
【００３４】
図２（１）に示すように、プリフェッチテーブル２１は、キャッシュメモリ３１上のデータのブロックの組み合わせと、その組み合わせがキャッシュメモリ３１上に存在する頻度としてのカウントとを対応付けて記憶している。
図２（１）に示す例は、識別ＩＤが組み合わせ１００１の組み合わせにおいて、メインメモリ３０のデータアドレスがＭＡ１のデータ（図２（２）で示すキャッシュメモリ３１のキャッシュアドレスＣ１に記憶されたデータ）と、メインメモリ３０のデータアドレスがＭＡ３（図２（２）で示すキャッシュアドレスＣ２に記憶されたデータ）とからなるデータのブロックの組み合わせに対応するカウントが、１０００になっている例である。
【００３５】
図２（２）に示すキャッシュ管理テーブルは、キャッシュメモリ３１上のキャッシュアドレスに、メインメモリ３０上のデータのアドレスと、キャッシュメモリ３１に読み込んだデータのサイズとを対応付けて記憶している。
図２（２）に示す例は、キャッシュメモリ３１のキャッシュアドレスＣ１に、メインメモリ３０のアドレスＭＡ１のデータを記憶し、同様に、キャッシュメモリ３１のキャッシュアドレスＣ５に、メインメモリ３０のアドレスＭＡ４のデータを記憶している例である。キャッシュデータ管理装置１０は、このような情報を用いて検出したデータのブロックの組み合わせを、プリフェッチテーブル２１に記憶させる。
【００３６】
ＯＲＡＭでは、例えば、アクセスごとや、一定期間ごとにアドレスの対応付けを変える。すなわち、キャッシュ管理テーブルにおけるメインメモリ３０上のデータのアドレスが、変更される。そうすると、変更される前のアドレスによるデータのブロックの既存の組み合わせ以外に、変更された後のアドレスによるデータのブロックの新たな組み合わせが検出される。その新たな組み合わせは、プリフェッチテーブル２１に記憶され、その変更されたアドレスが使用されている間は、キャッシュデータ管理装置１０は、その新たな組み合わせに対応する、プリフェッチテーブル２１のカウントをアップし、カウントが第１閾値以上になるとスーパーブロックを形成する。使用されなくなった変更される前のアドレスの既存の組み合わせについて、キャッシュデータ管理装置１０は、その既存の組み合わせに対応する、プリフェッチテーブル２１のカウントをダウンし、カウントが第２閾値以下になると、形成したスーパーブロックを解除する。
このように、ＯＲＡＭにおいて、キャッシュデータ管理装置１０は、スーパーブロックを形成及び解除して、効率的なプリフェッチをすることができる。
【００３７】
図３は、本発明の一実施形態に係るスーパーブロックテーブル２２の例を示す図である。図３に示すように、スーパーブロックテーブル２２は、形成されたスーパーブロックを、識別情報を付して記憶する。
スーパーブロックは、例えば、データのブロックの組み合わせを構成するブロックの個数と、それぞれのブロックのデータアドレス及びデータサイズとを記憶する。
スーパーブロックが形成されると、形成されたスーパーブロックは、スーパーブロックテーブル２２に記憶され、スーパーブロックが解除されると、解除されたスーパーブロックは、スーパーブロックテーブル２２から消去される。
【００３８】
図４は、本発明の一実施形態に係るキャッシュデータ管理装置１０の処理の例を示すフローチャートである。キャッシュデータ管理装置１０は、コンピュータ及びその周辺装置が備えるハードウェア並びに該ハードウェアを制御するソフトウェアによって構成され、以下の処理は、制御部（例えば、ＣＰＵ）が、所定のソフトウェアに従い実行する処理であり、アプリケーションプログラムからメインメモリ３０へのアクセスごとに起動される。
【００３９】
ステップＳ１０１において、ＣＰＵは、メインメモリ３０へのアクセスに基づいて、アクセスされたデータがキャッシュメモリ３１のデータにヒットしたか否かを判断する。より具体的には、ＣＰＵは、アクセスされたデータのアドレスがキャッシュメモリ３１に読み込まれているデータのアドレスの範囲内か否かを判断する。この判断がＹＥＳの場合、ＣＰＵは、処理をステップＳ１０３に移し、ＮＯの場合、ＣＰＵは、処理をステップＳ１０２に移す。
【００４０】
ステップＳ１０２において、ＣＰＵ（読込手段１７）は、メインメモリ３０からデータをキャッシュメモリ３１に読み込み、さらに、スーパーブロックに基づいてデータをプリフェッチし、プリフェッチしたデータをキャッシュメモリ３１に読み込む。
【００４１】
ステップＳ１０３において、ＣＰＵは、データへのアプリケーションからのアクセス（読み込み又は書き込み）に基づいて、データをアクセスする（キャッシュメモリ３１からデータを読み込む、又はキャッシュメモリ３１にデータを書き込む）。
【００４２】
ステップＳ１０４において、ＣＰＵは、スーパーブロック形成処理（後述する図５参照）をする。その後、ＣＰＵは処理を終了する。
【００４３】
図５は、本発明の一実施形態に係るキャッシュデータ管理装置１０のスーパーブロック形成処理の例を示すフローチャートである。
【００４４】
ステップＳ２０１において、ＣＰＵ（第１検出手段１１）は、キャッシュメモリ３１において共存するデータのブロックの組み合わせを検出し、検出した組み合わせをプリフェッチテーブル２１に記憶させる。
【００４５】
ステップＳ２０２において、ＣＰＵ（カウントアップ手段１１１）は、ステップＳ２０１において検出されたデータのブロックの組み合わせに対応する、プリフェッチテーブル２１のカウントをアップする。
【００４６】
ステップＳ２０３において、ＣＰＵ（第１判定手段１２）は、カウントと第１閾値とを比較し、カウントが第１閾値以上であるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵは、処理をステップＳ２０４に移し、ＮＯの場合、ＣＰＵは、処理をステップＳ２０５に移す。
【００４７】
ステップＳ２０４において、ＣＰＵ（スーパーブロック形成手段１３）は、ステップＳ２０１において検出されたデータのブロックの組み合わせから成るスーパーブロックを形成し、形成したスーパーブロックをスーパーブロックテーブル２２に記憶させる。
【００４８】
ステップＳ２０５において、ＣＰＵは、全ての組み合わせについて処理したか否かを判断する。この判断がＹＥＳの場合、ＣＰＵは、処理を終了しステップＳ１０４の次のステップに戻し、ＮＯの場合、ＣＰＵは、処理をステップＳ２０１に移す。
【００４９】
図６は、本発明の一実施形態に係るキャッシュデータ管理装置１０のスーパーブロック解除処理の例を示すフローチャートである。以下の処理は、制御部（例えば、ＣＰＵ）が、所定のソフトウェアに従い実行する処理であり、例えば、キャッシュメモリ３１のデータに変化があった場合に起動される。
【００５０】
ステップＳ３０１において、ＣＰＵ（第２検出手段１４）は、プリフェッチテーブル２１に存在するデータのブロックの組み合わせのうち、キャッシュメモリ３１に存在しないようになったデータのブロックの組み合わせを検出する。
【００５１】
ステップＳ３０２において、ＣＰＵ（カウントダウン手段１４１）は、ステップＳ３０１において検出されたデータのブロックの組み合わせに対応する、プリフェッチテーブル２１のカウントをダウンする。
【００５２】
ステップＳ３０３において、ＣＰＵ（第２判定手段１５）は、カウントと第２閾値とを比較し、カウントが第２閾値以下であるか否かを判断する。この判断がＹＥＳの場合、ＣＰＵは、処理をステップＳ３０４に移し、ＮＯの場合、ＣＰＵは、処理をステップＳ３０５に移す。
【００５３】
ステップＳ３０４において、ＣＰＵ（スーパーブロック解除手段１６）は、データのブロックの組み合わせの、形成されたスーパーブロックを解除し、解除したスーパーブロックをスーパーブロックテーブル２２から消去する。
【００５４】
ステップＳ３０５において、ＣＰＵは、全ての組み合わせについて処理したか否かを判断する。この判断がＹＥＳの場合、ＣＰＵは、処理を終了し、ＮＯの場合、ＣＰＵは、処理をステップＳ３０１に移す。
【００５５】
本実施形態によれば、キャッシュデータ管理装置１０は、キャッシュメモリ３１において共存するデータのブロックの組み合わせを検出し、検出した組み合わせのうち、キャッシュメモリ３１に存在しないようになった組み合わせを検出する。そして、キャッシュデータ管理装置１０は、キャッシュメモリ３１に共存するデータのブロックの組み合わせに対応する、プリフェッチテーブル２１のカウントをアップし、キャッシュメモリ３１に共存しないようになったデータのブロックの組み合わせに対応する、プリフェッチテーブル２１のカウントをダウンし、カウントが第１閾値以上である場合に、スーパーブロックを形成し、カウントが第２閾値以下である場合に、形成したスーパーブロックを解除する。
したがって、キャッシュデータ管理装置１０は、ヒットする可能性の高いスーパーブロックを形成し、形成したスーパーブロックであってもヒットする可能性が低くなるとスーパーブロックを解除して、キャッシュメモリ３１における効率的なプリフェッチをすることができる。
【００５６】
データのアドレスが変更されるＯＲＡＭにおいて、キャッシュデータ管理装置１０は、データのブロックの組み合わせにおけるデータのアドレスが用いられて、その組み合わせがキャッシュメモリ３１に存在する場合にカウントをアップし、データのアドレスが変更されて用いられなくなり、その組み合わせがキャッシュメモリ３１に存在しないようになった場合にカウントをダウンする。よって、ＯＲＡＭにおいて、アドレスが用いられている場合にスーパーブロックを形成してプリフェッチすることができ、アドレスが変更されて用いられなくなった場合にスーパーブロックを解除して、キャッシュメモリ３１における効率的なプリフェッチをすることができる。
したがって、キャッシュデータ管理装置１０は、ＯＲＡＭを使用したアプリケーションの高速化を実現することができ、暗号化プログラムなどで重要データ（鍵）を保護するためにＯＲＡＭを利用した場合のパフォーマンスを向上させることができる。
【００５７】
ＯＲＡＭではなくても、本発明は、キャッシュメモリ３１に共存するデータのブロックの組み合わせに対応するカウントに基づいて、スーパーブロックの形成及び解除をするので、プリフェッチをすべきデータをアプリケーションプログラムからでは推定できない場合にも、有効である。
【００５８】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限るものではない。
例えば、スーパーブロック形成処理（図５）とスーパーブロック解除処理（図６）とを別処理としたが、スーパーブロック形成処理に続いてスーパーブロック解除処理をするとしてもよい。スーパーブロック形成処理のタイミングで続いてスーパーブロック解除処理をすれば、キャッシュメモリ３１に存在しないようになったデータのブロックの組み合わせを検出しなくても、カウントをアップしなかった組み合わせの全てについてカウントをダウンすればよく、処理が簡略になる。
【００５９】
また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態に記載されたものに限定されるものではない。
【００６０】
キャッシュデータ管理装置１０による一連の処理は、ソフトウェアにより行うこともできる。一連の処理をソフトウェアによって行う場合には、そのソフトウェアを構成するプログラムが、汎用のコンピュータなどにインストールされる。また、当該プログラムは、コンピュータ読み取り可能な記録媒体（例えば、ＣＤ−ＲＯＭのようなリムーバブルメディアなど）に記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。
【符号の説明】
【００６１】
１０    キャッシュデータ管理装置
１１    第１検出手段
１１１  カウントアップ手段
１２    第１判定手段
１３    スーパーブロック形成手段
１４    第２検出手段
１４１  カウントダウン手段
１５    第２判定手段
１６    スーパーブロック解除手段
１７    読込手段
２１    プリフェッチテーブル
２２    スーパーブロックテーブル
３０    メインメモリ
３１    キャッシュメモリ
【図１】
2016062145.tif 000003
【図２】
2016062145.tif 000004
【図３】
2016062145.tif 000005
【図４】
2016062145.tif 000006
【図５】
2016062145.tif 000007
【図６】
2016062145.tif 000008