(57)【要約】【課題】短時間の間に頻繁に連続して発生する複数のイベントの組み合わせを推定する方法を提供する。【解決手段】パフォーマンスモニタを用いてキャッシュミス等のイベントが発生した命令アドレスの情報のサンプルを集めるステップ、特定の命令アドレスの範囲ごとにサンプルされたイベントをグループ分けするステップ、グループごとに所定の閾値以上の頻度で発生するイベントを抽出するステップ、抽出したイベント同士を短時間に連続して発生するイベントとして分類するステップを含む。加えて、イベントをメソッド又はベーシックブロックと関連付けられる特定の命令アドレスの範囲ごとにグループ分けするステップを含んでもよい。さらに、イベントが発生した命令アドレス、アクセスしようとした参照先のオブジェクト及びフィールドを特定するステップを用いて、連続してイベントを発生するオブジェクトの組み合わせを分類するステップを含んでもよい。【選択図】図１
2010102525.tif 000002
【特許請求の範囲】
【請求項１】
時間において離散的なイベントサンプルに基づいて時間的に連続して発生するイベントを特定する方法であって、
前記イベントを特定の命令アドレスの範囲ごとにグループ分けするステップと、
前記グループ分けしたグループごとに所定の閾値以上の頻度で発生するイベントを抽出するステップと、
前記抽出したイベント同士を時間的に連続して発生するイベントとして分類するステップと、を含む
方法。
【請求項２】
前記離散的なイベントサンプルは、パフォーマンスモニタを用いるイベントサンプルである、請求項１に記載の方法。
【請求項３】
前記グループ分けするステップは、さらに前記イベントをメソッド又はベーシックブロックと関連付けられる特定の命令アドレスの範囲ごとにグループ分けする、請求項１に記載の方法。
【請求項４】
さらに、前記イベントが発生した命令アドレス、アクセスしようとした参照先のオブジェクト及びフィールドを特定するステップと、
前記イベントを特定の命令アドレスの範囲ごとにグループ分けするステップと、
前記グループ分けしたグループごとに所定の閾値以上の頻度で前記イベントが発生するフィールド及び前記オブジェクトのクラスを抽出するステップと、
前記抽出した前記オブジェクトのクラスが複数存在するならば、前記オブジェクトの組み合わせを、連続して前記イベントを発生する組み合わせとして分類するステップと、を含む、
請求項１に記載の方法。
【請求項５】
前記イベントを発生する組み合わせとして分類するステップは、さらに、ヒープの種類に基づくグループ分けを用い、オブジェクト配置の最適化が可能な組み合わせのみを分類する、請求項４に記載の方法。
【請求項６】
前記連続して前記イベントを発生する組み合わせとして分類された前記オブジェクトを、メモリ内で同じキャッシュラインに入るように配置するステップを含む、請求項４に記載の方法。
【請求項７】
前記所定の閾値以上の頻度で前記イベントが発生する前記フィールドを複数含むクラスのオブジェクトが、異なるキャッシュラインに配置されないよう制限するステップを含む、請求項４に記載の方法。
【請求項８】
コンピュータを用いて、請求項１から７に記載のいずれかの方法のステップを実行させるためのコンピュータ・プログラム。
【請求項９】
時間において離散的なイベントサンプルに基づいて時間的に連続して発生するイベントを特定するシステムであって、
前記イベントを特定の命令アドレスの範囲ごとにグループ分けするグループ分け手段と、
前記グループ分けしたグループごとに所定の閾値以上の頻度で発生するイベントを抽出する抽出手段と、
前記抽出したイベント同士を時間的に連続して発生するイベントとして分類する分類手段と、を含む
システム。
【請求項１０】
パフォーマンスモニタを用いて時間において離散的なイベントサンプルに基づいて時間的に連続して発生するイベントを特定する方法であって、
前記イベントをメソッド又はベーシックブロックと関連付けられる特定の命令アドレスの範囲ごとにグループ分けするステップと、
前記グループ分けしたグループごとに所定の閾値以上の頻度で発生するイベントを抽出するステップと、
前記抽出したイベント同士を時間的に連続して発生するイベントとして分類するステップと、
前記イベントが発生した命令アドレス、アクセスしようとした参照先のオブジェクト及びフィールドを特定するステップと、
前記グループ分けしたグループごとに所定の閾値以上の頻度で前記イベントが発生するフィールド及びオブジェクトのクラスを抽出するステップと、
前記抽出した前記オブジェクトのクラスが複数存在するならば、前記オブジェクトの組み合わせを、連続して前記イベントを発生する組み合わせとして分類するステップと、を含む、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ内のイベント配置を最適化する方法に関し、特にコンピュータを用いて離散的なイベントサンプルに基づいて時間的に連続して頻繁に発生するイベントを推定する方法に関する。
【背景技術】
【０００２】
従来、Ｊａｖａ（登録商標）等のオブジェクト指向言語においては、一般に小さなオブジェクトを多数生成するために、これらのうち同時にアクセスされる複数のオブジェクトを同じキャッシュラインに入るように配置する、もしくはメモリのプリフェッチ命令を用いることで性能を向上することが知られている（非特許文献１−３）。最近のプロセッサの多くは、メモリアクセスやキャッシュミス等のプロセッサ内のイベントが発生した際に、例えば１０００回ごと等の一定の頻度でサンプルを取るパフォーマンスモニタ機能を備えている。該機能を用いることにより、動的な情報を低いオーバーヘッドで取得することが可能になる。
【０００３】
また、従来、特徴的なイベントの発生回数等を発生後にカウントして記憶する装置が知られている（特許文献１）。この装置によれば、情報処理装置等はプログラム性能に影響を及ぼすイベントを効率的に記憶できるとしている。
【特許文献１】特開２００８−１８６０８０号公報
【非特許文献１】Wen-Ke  Chenら、“Profile-guided  Proactive  Garbage  Collection  for  Locality  Optimization”、Programming  Language  Design  and  Implementation（PLDI）  2006  Ottawa  Canada、June  10-16、2006
【非特許文献２】Ali-Reza  Adl-Tabatabaiら、“Prefetch  Injection  Based  on  Hardware  Monitoring  and  Object  Metadata”、PLDI  2004  Washington  D.C.  USA、June  9-11、2004
【非特許文献３】Florian  T.  Schneiderら、“Online  Optimizations  Driven  by  Hardware  Performance  Monitoring”、PLDI  2007、San  Diego  CA  USA、June  10-13、2007
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、従来技術に係るパフォーマンスモニタ機能においては、集めた情報は連続したメモリアクセス履歴ではなく離散的なサンプルであり、同時にアクセスされるオブジェクトの検出のためにはそのままでは使用できない。例えば、パフォーマンスモニタ機能により集めたサンプルを使用してプリフェッチ命令の挿入やオブジェクトの配置の最適化を行うには、短時間の内に連続してアクセスされるオブジェクトを判別する必要がある。従って、従来は、ソースコードの静的解析による手法や、コンパイラを用いてメモリアクセスの履歴を取得するコードを生成し、動的に情報を得ていた。しかし、これらの方法は処理時間、メモリ容量の点でオーバーヘッドが大きい点が課題である。特に、コンパイラを用いる方法では、イベントが起きた命令アドレスからソースコード又はバイトコードの該当位置を見つけるために、コンパイル時に追加のデバッグ情報が必要になるという課題がある。また、イベント発生後に回数等をカウントする装置等では、事前にキャッシュミス等のイベント発生を推定するための方法は示されていない。
【０００５】
本発明は、プロセッサのパフォーマンスモニタ機能により収集されたイベントの離散的なサンプルから、キャッシュミス等の短時間の間に頻繁に連続して発生する複数のイベントの組み合わせを、静的解析によらずに特定することにより、推定して検出することを可能にする方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、上記課題に鑑み、以下のような解決手段を提供する。
【０００７】
本発明に係る、頻繁に発生するイベントを推定する方法においては、パフォーマンスモニタを使用してイベントの起こった命令アドレスの情報、及び必要な場合にはイベントの詳細についての付加情報についてサンプルを集め、そこから頻繁に短時間で連続して発生するイベントの組み合わせを以下の手順により特定し、短時間に連続して発生しているイベントの組み合わせであることを推定する。
手順１：イベントを、メソッドやベーシックブロック等の特定の命令アドレスの範囲ごとにグループ分けする。
手順２：グループごとにイベントの統計処理を行い、一定の閾値以上の頻度で発生するイベント（以下、頻出イベントと表記）を抽出する。
手順３：手順２で抽出された頻出イベント同士は短時間に連続して発生しているものとして特定される。
【０００８】
さらに、本発明に係る方法においては、より詳細にイベントの組み合わせを推定するために、次のような動作を追加し得る。これらにより、短時間で連続してキャッシュミスを起こすオブジェクトの組み合わせを推定し得る。
手順４：イベント又はオブジェクトの組み合わせを推定する方法だけからでは、複数のイベントが偶然に同じ範囲で発生している場合を誤って見つけてしまう場合があるため、このような誤判定を減らすために、さらにオブジェクト間の参照関係の情報を使用する。
手順５：イベント又はオブジェクトの組み合わせの推定において、命令アドレスの範囲に加えてヒープの種類によりグループ分けを実施し、これにより実際にオブジェクト配置の最適化等が可能な組み合わせだけに制限して推定する。ヒープの種類としては、例えば新世代領域（ｎｕｒｓｅｒｙ）と旧世代領域（ｔｅｎｕｒｅ）との区別等を用い得る。
【０００９】
本発明に係る方法は、オブジェクト指向言語を用いるプログラミング、プログラム開発環境、又はこれらの関連技術等の、既存の技術と組み合わせることができ、そのように組み合わせた技術もまた、本発明の技術範囲に含まれる。同様に、本発明の技法を含む方法又はプログラミング環境等を含む開発システム等も、本発明の技術範囲に含まれる。さらに、本発明の技法は、頻出イベントを推定するための方法の諸段階を、ＦＰＧＡ（現場でプログラム可能なゲートアレイ）、ＡＳＩＣ（特定用途向け集積回路）、これらと同等のハードウェアロジック素子、プログラム可能な集積回路、又はこれらの組み合わせが記憶し得るプログラムの形態、すなわちプログラム製品として提供し得る。具体的には、データ入出力、データバス、メモリバス、システムバス等を備えるカスタムＬＳＩ（大規模集積回路）の形態として、本発明に係る頻出イベントを推定する方法の実施手段、デバイス、組み込み装置等を提供でき、そのように集積回路に記憶されたプログラム製品の形態も、本発明の技術範囲に含まれる。
【発明の効果】
【００１０】
本発明によれば、プロセッサのパフォーマンスモニタ機能により収集されたイベントの離散的なサンプルから、キャッシュミス等の頻繁に短時間で連続して発生する複数のイベントの組み合わせを、静的解析によらずに検出することが可能になる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態について図を参照しながら説明する。なお、これらはあくまでも一例であって、本発明の技術的範囲はこれらに限られるものではない。
【００１２】
図１に、本発明の一実施形態に係る、頻繁に発生するイベントを推定する方法の全体のフロー図を示す。一実施形態において、本発明に係る方法は、次の手順を用いる。
Ｓ１００：パフォーマンスモニタを使用してイベントの起こった命令アドレスの情報、及び必要な場合にはイベントの詳細についての付加情報についてサンプルを集める。
Ｓ１１０：イベントを、メソッドやベーシックブロック等の特定の命令アドレスの範囲ごとにグループ分けする。
Ｓ１２０：グループごとにイベントの統計処理を行い、一定の閾値以上の頻度で発生するイベント（頻出イベント）を抽出する。
Ｓ１３０：抽出された頻出イベントは短時間に連続して発生しているイベントとして特定される。
【００１３】
すなわち、本発明に係る方法は、ステップ（Ｓ１１０）からステップ（Ｓ１３０）を用いて、頻繁に短時間で連続して発生するイベントの組み合わせを特定し、特定したイベントの組み合わせは短時間に連続して発生していることを推定し得る。
【００１４】
図２に、本発明の一実施形態に係る、短時間で連続してキャッシュミスを起こすオブジェクトの組み合わせを推定する手順のフロー図を示す。一実施形態において、本発明に係る方法は、次の手順を用いる。
Ｓ２００：パフォーマンスモニタを使用してキャッシュミスの起こった命令アドレス及びその際にアクセスしようとした参照先のオブジェクト及びフィールドについてのサンプルを集める。
Ｓ２１０：キャッシュミスイベントを特定の命令アドレスの範囲（例えば、メソッド）ごとにグループ分けする。
Ｓ２２０：グループごとにイベントの統計処理を行い、一定の閾値以上のキャッシュミスを起こすフィールド（以下、頻出フィールドと表記）及びオブジェクトのクラス（以下、頻出クラスと表記）を抽出する。
Ｓ２３０：複数の頻出クラスがある場合には、それらのオブジェクトの組み合わせは連続してキャッシュミスを起こすものであると特定される。同様に、頻出フィールドを複数含むクラスがある場合には、これらのフィールドは連続してキャッシュミスを起こすものであると特定される。
【００１５】
すなわち、本発明に係る方法においては、図１を用いて示した頻繁に発生するイベントを推定する方法に加えて、図２に示したオブジェクトの組み合わせを推定する方法を用い得る。これにより、本発明に係る方法は、より詳細にイベントの組み合わせを推定するための動作を実施し得る。
【００１６】
図２に示す手順によれば、連続してキャッシュミスを起こすオブジェクトの組み合わせ及び連続してキャッシュミスを起こすフィールドを特定し得る。これらの情報に従って、本発明に係る方法においては、連続してキャッシュミスを起こすものとして特定されたオブジェクトの組はメモリ内で同じキャッシュラインに入るように、アロケーション又はガベージコレクション（ＧＣと略称）の際に配置したり、頻出フィールドを複数含むクラスのオブジェクトはキャッシュラインの境界をまたがないように配置することが望ましいという情報を、統計処理を用いて自動的に生成することが可能になる。従って、本発明に係る方法を用いることにより、離散的なイベントサンプルに基づいて、頻繁に発生するイベントを推定し、当該推定の情報を用いてメモリ内でのオブジェクトの配置を最適化することで、プログラム性能の向上が計れる。
【００１７】
本発明に係る方法においては、上述のステップ（Ｓ２１０）に示したように、イベントサンプルの統計処理の前に、命令アドレスの範囲（例えばメソッド）ごとに分割し、それぞれを独立に統計処理することに特徴がある。これにより短い命令アドレスの範囲で発生するイベントは、時間的にも近いタイミングで発生していると判定し得る。換言すれば、本発明に係る方法においては、命令アドレスの空間的に限られた範囲において特定のイベントが発生することの情報を用い、当該情報に基づいて、特定のイベントが短時間で連続して発生しているイベントであると推測する。この理由は、離散的なサンプルからは、論理的には、特定のイベント発生が短時間で連続しているという時間的な情報が得られないためである。
【００１８】
本発明に係る方法における、このような推測は、プログラム全体の実行時間の内、ある命令アドレスの範囲（メソッド）の実行は時間的に連続しているという仮定に基づいている。しかしながら、この仮定は、あるメソッドが多数のコンテキストで呼び出される状況（単純なｓｅｔｔｅｒ／ｇｅｔｔｅｒ等）においては成り立たなくなる場合がある。ただし、そのような単純なメソッドはインライン展開される場合がほとんどであるため、インライン展開の最適化が行われた後でサンプリングを行うことで解決可能である。
【００１９】
前述のステップ（Ｓ１１０）において命令アドレスの範囲ごとに区分けを行うために、命令アドレスと範囲（例えばメソッド）の対応関係のマップが必要になる場合がある。しかし、これは既存技術で必要になる命令アドレスからソースコードやバイトコードへの情報に比べれば非常に小さくて済む。
【００２０】
上述の処理手順の処理量を減らすために、ステップ（Ｓ１２０）以降の処理を行う際に、範囲内のサンプル数が一定の閾値を超えたものだけを対象とすることで、それ以外の範囲でのサンプルについての処理を省略することができる。
【００２１】
上述の記載はキャッシュミスを例として使用したが、本発明に係る方法は他のイベントに対しても適用可能である。
【００２２】
図３に、本発明の一実施形態に係る、オブジェクト間の参照関係の情報を使用する手順のフロー図を示す。キャッシュミスイベントを例として、本発明に係る方法は、次のような手順を用いる。
Ｓ３１０：キャッシュミスイベントを特定の命令アドレスの範囲（例えばメソッドやベーシックブロック）ごとにグループ分けする。
Ｓ３２０：グループごとにイベントの統計処理を行い、その範囲内で一定の閾値以上の回数のキャッシュミスを起こすクラス（以下、頻出クラスと表記）を抽出する。
Ｓ３３０：キャッシュミスを起こしたオブジェクトの内、頻出クラスのインスタンスであるものについて、そこから参照されているオブジェクトを調べ、頻出クラスのオブジェクトが存在した場合には、参照元クラスと参照先クラスの組み合わせごとに出現した回数を記録する。
Ｓ３４０：ここで生成した参照元クラスと参照先クラスの組み合わせの内、出現回数がある閾値を越えたものは、短時間で連続してアクセスされるオブジェクトであると特定される。
【００２３】
図３に示した手順は、上述の図１及び図２に示した方法において、複数のイベントが偶然に同じ範囲で発生している場合を誤って見つけてしまう場合等の、誤判定を減らすために用い得る。この手順においては、ステップ（Ｓ３１０）において命令アドレスの範囲を区切り、範囲ごとにサンプルの統計処理を行うことに加え、オブジェクト同士が参照関係で結ばれているという情報を使用する。このようにすることにより、推定の精度を上げることが可能である。
【００２４】
本発明に係る方法においては、ステップ（Ｓ３１０）においてグループ分けを行う際、及びステップ（Ｓ３３０）においてオブジェクト間の参照関係を調べる際に、命令アドレスの範囲に加えてヒープの種類に基づいてグループ分けを行うことにより、実際にオブジェクト配置の最適化等が可能な組み合わせだけに参照関係の分析を制限することができる。例えば、ヒープとしては、新世代領域（ｎｕｒｓｅｒｙ）と旧世代領域（ｔｅｎｕｒｅ）の区別等を用いることができる。従って、例えば、ｎｕｒｓｅｒｙ領域にあるオブジェクトとｔｅｎｕｒｅ領域にあるオブジェクトとは、既存のＧＣの処理の中では同じキャッシュライン上に乗るように移動することが容易ではないため、ヒープの種類に基づいてサンプルを分類して処理することで、このような組み合わせが検出されないようにすることが可能である。
【００２５】
同様に、本発明に係る方法においては、ステップ（Ｓ３２０）において参照先クラスによってグループ分けを行う際に、さらに参照先アドレスのオブジェクト内でのオフセットやキャッシュミスを起こした命令アドレスを用いて、さらに細かく分類してもよい。
【実施例】
【００２６】
（実施例１）
本発明に係る方法を用い、キャッシュミスを連続で起こす複数オブジェクトの組み合わせを推定する例を示す。例えば、パフォーマンスモニタでのキャッシュミスのサンプリング結果が、次の表のようになった場合について説明する。
【表１】
2010102525.tif 000003
【００２７】
この例を処理すると、まずｍｅｔｈｏｄ１については、４種類のクラスへのアクセスでキャッシュミスを起こしているが、前述のステップ（Ｓ１２０）で使う閾値を１０％とすると、ｃｌａｓｓＡ、ｃｌａｓｓＢ、ｃｌａｓｓＤが頻出クラスとなる。ここで、実際にキャッシュミスを起こしたこれらのクラスのオブジェクトの中で参照しているオブジェクトについて調べる。例えば、サンプリングされたｃｌａｓｓＡのオブジェクトからはｃｌａｓｓＢ、ｃｌａｓｓＣのオブジェクトが多く参照されていたとすると、ｃｌａｓｓＢも頻出クラスであるため、ｃｌａｓｓＡとｃｌａｓｓＢの組み合わせが、同時にアクセスされるオブジェクトとして特定される。ｍｅｔｈｏｄ２やｍｅｔｈｏｄ３についても同様に処理を行うが、頻出クラスが複数含まれないので候補は存在しない。
【００２８】
これらの処理のために、上記のような表を作る前に、キャッシュミスの起きたメソッドだけをまず調査し、その時点でメソッドごとのキャッシュミスがある閾値に達していない場合には、参照先オブジェクトのクラスを調べる処理や、それによるクラスごとのミス数の統計処理を省略してもよい。特に参照先アドレスからオブジェクトヘッダを発見しクラスに解決するためには無視できない処理量が必要であるため、これを省略できることは計測のオーバーヘッド削減に効果がある。上の例では例えば、ｍｅｔｈｏｄ１では４５％、ｍｅｔｈｏｄ２では５％、ｍｅｔｈｏｄ３では２０％のキャッシュミスが起きている。ここで閾値を１５％とすると、ｍｅｔｈｏｄ２は処理対象から除外され、このｍｅｔｈｏｄ２及びｏｔｈｅｒｓの中で起きたキャッシュミスについては、参照先オブジェクトの調査は行わなくてよい。
【００２９】
上記の例で、範囲（ここではメソッド）ごとに分けて処理を行わない場合を考える。例えば、ｃｌａｓｓＡはｃｌａｓｓＢのオブジェクト又はｃｌａｓｓＣのオブジェクトを参照する事があるとする。すると、ｃｌａｓｓＡ、ｃｌａｓｓＢ、ｃｌａｓｓＣは、平均的には多くキャッシュミスを起こすので、メソッドごとに分けずに全体を平均して扱うと、連続してキャッシュミスを起こさないため効果が期待できないｃｌａｓｓＡとｃｌａｓｓＣとの組み合わせを最適化の候補としてしまう事があり得る。
【００３０】
（実施例２）
本発明に係る方法を用い、キャッシュミスを連続で起こす複数フィールドを推定する場合について説明する。例えば、パフォーマンスモニタでのキャッシュミスのサンプリング結果が、次の表のようになったとする。
【表２】
2010102525.tif 000004
【００３１】
複数のオブジェクトの場合と同様に、ｍｅｔｈｏｄごとに分けて処理を行う。例えば、ｃｌａｓｓＡではオフセットが８バイトと３２バイトの二カ所で多くキャッシュミスが起きている。このような場合には、頻繁にアクセスされるｃｌａｓｓＡのオブジェクトがキャッシュライン境界をまたいでしまっているために、１つのオブジェクトへのアクセスが複数のキャッシュミスを起こしている可能性がある。そこで、ｃｌａｓｓＡのオブジェクトがキャッシュライン境界をまたがないように配置することにより、キャッシュミスを削減することができる。ただし、同じクラスの異なるオブジェクトがｍｅｔｈｏｄ１の中でキャッシュミスを起こしている場合にもこのようなサンプルが得られるが、この場合には効果がない。
【００３２】
［頻出イベントを推定するためのハードウェア構成］
図４は、本発明の一実施形態に係る、頻出イベント推定装置のハードウェア構成を示す図である。図４においては、頻出イベント推定装置を情報処理装置１０００とし、そのハードウェア構成を例示する。以下は、コンピュータを典型とする情報処理装置として全般的な構成を説明するが、その環境に応じて必要最小限な構成を選択できることはいうまでもない。
【００３３】
情報処理装置１０００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１０、バスライン１００５、通信Ｉ／Ｆ１０４０、メインメモリ１０５０、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）１０６０、パラレルポート１０８０、ＵＳＢポート１０９０、グラフィック・コントローラ１０２０、ＶＲＡＭ１０２４、音声プロセッサ１０３０、Ｉ／Ｏコントローラ１０７０、ならびにキーボード及びマウス・アダプタ１１００等の入力手段を備える。Ｉ／Ｏコントローラ１０７０には、フレキシブル・ディスク（ＦＤ）ドライブ１０７２、ハードディスク１０７４、光ディスク・ドライブ１０７６、半導体メモリ１０７８等の記憶手段を接続することができる。
【００３４】
音声プロセッサ１０３０には、マイクロホン１０３６、増幅回路１０３２、及びスピーカ１０３４が接続される。また、グラフィック・コントローラ１０２０には、表示装置１０２２が接続されている。
【００３５】
ＢＩＯＳ１０６０は、情報処理装置１０００の起動時にＣＰＵ１０１０が実行するブートプログラムや、情報処理装置１０００のハードウェアに依存するプログラム等を格納する。ＦＤ（フレキシブル・ディスク）ドライブ１０７２は、フレキシブル・ディスク１０７１からプログラム又はデータを読み取り、Ｉ／Ｏコントローラ１０７０を介してメインメモリ１０５０又はハードディスク１０７４に提供する。図４には、情報処理装置１０００の内部にハードディスク１０７４が含まれる例を示したが、バスライン１００５又はＩ／Ｏコントローラ１０７０に外部機器接続用インタフェース（図示せず）を接続し、情報処理装置１０００の外部にハードディスクを接続又は増設してもよい。
【００３６】
光ディスク・ドライブ１０７６としては、例えば、ＤＶＤ−ＲＯＭドライブ、ＣＤ−ＲＯＭドライブ、ＤＶＤ−ＲＡＭドライブ、ＣＤ−ＲＡＭドライブを使用することができる。この際は各ドライブに対応した光ディスク１０７７を使用する必要がある。光ディスク・ドライブ１０７６は光ディスク１０７７からプログラム又はデータを読み取り、Ｉ／Ｏコントローラ１０７０を介してメインメモリ１０５０又はハードディスク１０７４に提供することもできる。
【００３７】
情報処理装置１０００に提供されるコンピュータ・プログラムは、フレキシブル・ディスク１０７１、光ディスク１０７７、又はメモリーカード等の記録媒体に格納されて利用者によって提供される。このコンピュータ・プログラムは、Ｉ／Ｏコントローラ１０７０を介して、記録媒体から読み出され、又は通信Ｉ／Ｆ１０４０を介してダウンロードされることによって、情報処理装置１０００にインストールされ実行される。コンピュータ・プログラムが情報処理装置に働きかけて行わせる動作は、既に説明した装置における動作と同一であるので省略する。
【００３８】
前述のコンピュータ・プログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としてはフレキシブル・ディスク１０７１、光ディスク１０７７、又はメモリーカードの他に、ＭＤ等の光磁気記録媒体、テープ媒体を用いることができる。また、専用通信回線やインターネットに接続されたサーバシステムに設けたハードディスク又は光ディスク・ライブラリ等の記憶装置を記録媒体として使用し、通信回線を介してコンピュータ・プログラムを情報処理装置１０００に提供してもよい。
【００３９】
以上の例は、情報処理装置１０００について主に説明したが、コンピュータに、情報処理装置で説明した機能を有するプログラムをインストールして、そのコンピュータを情報処理装置として動作させることにより上記で説明した情報処理装置と同様な機能を実現することができる。
【００４０】
本装置は、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせとして実現可能である。ハードウェアとソフトウェアの組み合わせによる実施では、所定のプログラムを有するコンピュータ・システムでの実施が典型的な例として挙げられる。かかる場合、該所定のプログラムが該コンピュータ・システムにロードされ実行されることにより、該プログラムは、コンピュータ・システムに本発明にかかる処理を実行させる。このプログラムは、任意の言語、コード、又は表記によって表現可能な命令群から構成される。そのような命令群は、システムが特定の機能を直接実行すること、又は（１）他の言語、コード、もしくは表記への変換、（２）他の媒体への複製、のいずれか一方もしくは双方が行われた後に、実行することを可能にするものである。もちろん、本発明は、そのようなプログラム自体のみならず、プログラムを記録した媒体を含むプログラム製品もその範囲に含むものである。本発明の機能を実行するためのプログラムは、フレキシブル・ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＤＶＤ、ハードディスク装置、ＲＯＭ、ＭＲＡＭ、ＲＡＭ等の任意のコンピュータ可読媒体に格納することができる。かかるプログラムは、コンピュータ可読媒体への格納のために、通信回線で接続する他のコンピュータ・システムからダウンロードしたり、他の媒体から複製したりすることができる。また、かかるプログラムは、圧縮し、又は複数に分割して、単一又は複数の記録媒体に格納することもできる。
【００４１】
以上、本発明を実施形態に則して説明したが、本発明は上述した実施形態に限るものではない。また、本発明の実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本発明の実施形態又は実施例に記載されたものに限定されるものではない。
【図面の簡単な説明】
【００４２】
【図１】本発明の一実施形態に係る、頻繁に発生するイベントを推定する方法の全体のフロー図である。
【図２】本発明の一実施形態に係る、短時間で連続してキャッシュミスを起こすオブジェクトの組み合わせを推定する手順のフロー図である。
【図３】本発明の一実施形態に係る、オブジェクト間の参照関係の情報を使用する手順のフロー図である。
【図４】本発明の一実施形態に係る、頻出イベント推定装置のハードウェア構成を示す図である。
【符号の説明】
【００４３】
１０００  情報処理装置
【図１】
2010102525.tif 000005
【図２】
2010102525.tif 000006
【図３】
2010102525.tif 000007
【図４】
2010102525.tif 000008