(57)【要約】【課題】プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になること。【解決手段】プログラムが実行される際に、当該プログラムを実行するＣＰＵの処理状況をプログラムの実行開始時からの経過時刻に対応付けて監視し、プログラムが実行される際に、キャッシュミスによりメインメモリにアクセスしたデータのアドレスであるキャッシュミスデータアドレスをプログラムの実行開始時からの経過時刻に対応付けて取得し、監視されたＣＰＵの処理状況から、当該プログラムを実行するのに要する時間である周期を決定し、決定された周期と、取得されたキャッシュミスデータアドレスとを突き合わせて、プリフェッチ処理を行うデータのアドレスであるプリフェッチ対象アドレスをプリフェッチする周期内の位置であるプリフェッチ位置を特定する。【選択図】        図２
2008226025.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵがプログラムを実行する際に用いられるデータをメインメモリからキャッシュメモリに予め格納するプリフェッチ処理を行うプリフェッチ処理装置であって、
前記プログラムが実行される際に、当該プログラムを実行する前記ＣＰＵの処理状況を前記プログラムの実行開始時からの経過時刻に対応付けて監視するＣＰＵ監視手段と、
前記プログラムが実行される際に、キャッシュミスにより前記メインメモリにアクセスしたデータのアドレスであるキャッシュミスデータアドレスを前記プログラムの実行開始時からの経過時刻に対応付けて取得するキャッシュミスデータアドレス取得手段と、
前記ＣＰＵ監視手段によって監視された前記ＣＰＵの処理状況から、当該プログラムを実行するのに要する時間である周期を決定する周期決定手段と、
前記周期決定手段によって決定された前記周期と、前記キャッシュミスデータアドレス取得手段によって取得された前記キャッシュミスデータアドレスとを突き合わせて、プリフェッチ処理を行うデータのアドレスであるプリフェッチ対象アドレスをプリフェッチする周期内の位置であるプリフェッチ位置を特定する特定手段と、
を備えたことを特徴とするプリフェッチ処理装置。
【請求項２】
前記特定手段によって特定された前記プリフェッチ対象アドレスと前記プリフェッチ位置とに基づいて、前記プログラムの実行中に当該プリフェッチ対象アドレスに対応するデータを前記メインメモリからプリフェッチ処理するように制御するプリフェッチ処理制御手段をさらに備えたことを特徴とする請求項１に記載のプリフェッチ処理装置。
【請求項３】
前記ＣＰＵ監視手段は、前記ＣＰＵの処理状況として、前記ＣＰＵが、所定の時間内に前記プログラムの１命令を処理するのに要した平均クロック数、および／または、前記ＣＰＵが、当該所定の時間内に前記プログラムの命令を処理した際にキャッシュミスをした頻度であるキャッシュミス頻度をさらに監視し、
前記周期決定手段は、前記平均クロック数および／または前記キャッシュミス頻度を参照して前記周期を決定することを特徴とする請求項１または２に記載のプリフェッチ処理装置。
【請求項４】
前記周期決定手段は、前記ＣＰＵ監視手段によって監視された所定の時間内の前記平均クロック数と、当該所定の時間内で最もキャッシュミス回数が多かったキャッシュミスデータアドレスに基づいて、前記周期を決定することを特徴とする請求項３に記載のプリフェッチ処理装置。
【請求項５】
前記周期決定手段は、前記ＣＰＵ監視手段によって監視された前記ＣＰＵの処理状況を統計処理により所定の個数にグループ分けし、当該所定の個数に分けられたグループの繰り返しの様相に基づいて、前記周期を決定することを特徴とする請求項１〜３のいずれか一つに記載のプリフェッチ処理装置。
【請求項６】
ＣＰＵがプログラムを実行する際に用いられるデータをメインメモリからキャッシュメモリに予め格納するプリフェッチ処理方法をコンピュータに実行させるプリフェッチ処理プログラムであって、
前記プログラムが実行される際に、当該プログラムを実行する前記ＣＰＵの処理状況を前記プログラムの実行開始時からの経過時刻に対応付けて監視するＣＰＵ監視手順と、
前記プログラムが実行される際に、キャッシュミスにより前記メインメモリにアクセスしたデータのアドレスであるキャッシュミスデータアドレスを前記プログラムの実行開始時からの経過時刻に対応付けて取得するキャッシュミスデータアドレス取得手順と、
前記ＣＰＵ監視手順によって監視された前記ＣＰＵの処理状況から、当該プログラムを実行するのに要する時間である周期を決定する周期決定手順と、
前記周期決定手順によって決定された前記周期と、前記キャッシュミスデータアドレス取得手順によって取得された前記キャッシュミスデータアドレスとを突き合わせて、プリフェッチ処理を行うデータのアドレスであるプリフェッチ対象アドレスをプリフェッチする周期内の位置であるプリフェッチ位置を特定する特定手順と、
をコンピュータに実行させることを特徴とするプリフェッチ処理プログラム。
【請求項７】
前記特定手順によって特定された前記プリフェッチ対象アドレスと前記プリフェッチ位置とに基づいて、前記プログラムの実行中に当該プリフェッチ対象アドレスに対応するデータを前記メインメモリからプリフェッチ処理するように制御するプリフェッチ処理制御手順をさらに備えたことを特徴とする請求項６に記載のプリフェッチ処理プログラム。
【請求項８】
ＣＰＵがプログラムを実行する際に用いられるデータをメインメモリからキャッシュメモリに予め格納するプリフェッチ処理方法であって、
前記プログラムが実行される際に、当該プログラムを実行する前記ＣＰＵの処理状況を前記プログラムの実行開始時からの経過時刻に対応付けて監視するＣＰＵ監視工程と、
前記プログラムが実行される際に、キャッシュミスにより前記メインメモリにアクセスしたデータのアドレスであるキャッシュミスデータアドレスを前記プログラムの実行開始時からの経過時刻に対応付けて取得するキャッシュミスデータアドレス取得工程と、
前記ＣＰＵ監視工程によって監視された前記ＣＰＵの処理状況から、当該プログラムを実行するのに要する時間である周期を決定する周期決定工程と、
前記周期決定工程によって決定された前記周期と、前記キャッシュミスデータアドレス取得工程によって取得された前記キャッシュミスデータアドレスとを突き合わせて、プリフェッチ処理を行うデータのアドレスであるプリフェッチ対象アドレスをプリフェッチする周期内の位置であるプリフェッチ位置を特定する特定工程と、
を含んだことを特徴とするプリフェッチ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プリフェッチ処理装置、プリフェッチ処理プログラムおよびプリフェッチ処理方法に関する。
【背景技術】
【０００２】
従来より、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央演算処理装置）がプログラムを実行する際に用いるデータを、予めメインメモリからキャッシュメモリに格納することで、メモリアクセスの遅延時間に対応するプリフェッチ処理が行われている。
【０００３】
ここで、プリフェッチ処理には、ハードウェアを用いたハードウェアプリフェッチやソフトウェアを用いたソフトウェアプリフェッチがある。ハードウェアプリフェッチは、データのアクセスパターンから、ＣＰＵが次に必要とするデータをハードウェアが予測して、当該データをプリフェッチする手法である。
【０００４】
また、ソフトウェアプリフェッチは、プリフェッチ命令をプログラム内に挿入することにより、ソフトウェアから発行されるプリフェッチ命令によりデータをキャッシュに読み込む手法である。
【０００５】
また、特許文献１では、分岐命令が多発されるプログラムに対して、分岐命令後の命令を実行する分岐アドレスをプリフェッチすることにより、特定の分岐アドレスが繰り返して発生するプログラムのフェッチ効率を向上することが可能になるインターフェイス回路が開示されている。
【０００６】
また、特許文献２では、データベースシステムにおいて、多発されるＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）文に関する情報と、その処理の実行開始情報を取得し、それを基にデータの先読み指示を記憶装置に対して発行することにより、特定のＳＱＬ文により指定される処理が繰り返して発生するプログラムのフェッチ効率を向上することが可能になるデータ先読み方法が開示されている。
【０００７】
【特許文献１】特開２００５−１８５５３号公報
【特許文献２】特開２００４−２９５４５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
ところで、上記した従来の技術は、繰り返して実行されるプログラムにおいては、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行なえないという問題点があった。
【０００９】
例えば、関数Ａ、関数Ｂ、関数Ｃのような形で関数を実行するプログラムの場合、関数Ｃを実行中にアクセスするデータに対してプリフェッチ処理を行う最適な時刻が、関数Ａを実行する時間内に存在する場合には、当該データのプリフェッチ処理を行うことができないため、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行なえないという問題点があった。
【００１０】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になるプリフェッチ処理装置、プリフェッチ処理プログラムおよびプリフェッチ処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、請求項１に係る発明は、ＣＰＵがプログラムを実行する際に用いられるデータをメインメモリからキャッシュメモリに予め格納するプリフェッチ処理を行うプリフェッチ処理装置であって、前記プログラムが実行される際に、当該プログラムを実行する前記ＣＰＵの処理状況を前記プログラムの実行開始時からの経過時刻に対応付けて監視するＣＰＵ監視手段と、前記プログラムが実行される際に、キャッシュミスにより前記メインメモリにアクセスしたデータのアドレスであるキャッシュミスデータアドレスを前記プログラムの実行開始時からの経過時刻に対応付けて取得するキャッシュミスデータアドレス取得手段と、前記ＣＰＵ監視手段によって監視された前記ＣＰＵの処理状況から、当該プログラムを実行するのに要する時間である周期を決定する周期決定手段と、前記周期決定手段によって決定された前記周期と、前記キャッシュミスデータアドレス取得手段によって取得された前記キャッシュミスデータアドレスとを突き合わせて、プリフェッチ処理を行うデータのアドレスであるプリフェッチ対象アドレスをプリフェッチする周期内の位置であるプリフェッチ位置を特定する特定手段と、を備えたことを特徴とする。
【００１２】
また、請求項２に係る発明は、上記の発明において、前記特定手段によって特定された前記プリフェッチ対象アドレスと前記プリフェッチ位置とに基づいて、前記プログラムの実行中に当該プリフェッチ対象アドレスに対応するデータを前記メインメモリからプリフェッチ処理するように制御するプリフェッチ処理制御手段をさらに備えたことを特徴とする。
【００１３】
また、請求項３に係る発明は、上記の発明において、前記ＣＰＵ監視手段は、前記ＣＰＵの処理状況として、前記ＣＰＵが、所定の時間内に前記プログラムの１命令を処理するのに要した平均クロック数、および／または、前記ＣＰＵが、当該所定の時間内に前記プログラムの命令を処理した際にキャッシュミスをした頻度であるキャッシュミス頻度をさらに監視し、前記周期決定手段は、前記平均クロック数および／または前記キャッシュミス頻度を参照して前記周期を決定することを特徴とする。
【００１４】
また、請求項４に係る発明は、上記の発明において、前記周期決定手段は、前記ＣＰＵ監視手段によって監視された所定の時間内の前記平均クロック数と、当該所定の時間内で最もキャッシュミス回数が多かったキャッシュミスデータアドレスに基づいて、前記周期を決定することを特徴とする。
【００１５】
また、請求項５に係る発明は、上記の発明において、前記周期決定手段は、前記ＣＰＵ監視手段によって監視された前記ＣＰＵの処理状況を統計処理により所定の個数にグループ分けし、当該所定の個数に分けられたグループの繰り返しの様相に基づいて、前記周期を決定することを特徴とする。
【００１６】
また、請求項６に係る発明は、ＣＰＵがプログラムを実行する際に用いられるデータをメインメモリからキャッシュメモリに予め格納するプリフェッチ処理方法をコンピュータに実行させるプリフェッチ処理プログラムであって、前記プログラムが実行される際に、当該プログラムを実行する前記ＣＰＵの処理状況を前記プログラムの実行開始時からの経過時刻に対応付けて監視するＣＰＵ監視手順と、前記プログラムが実行される際に、キャッシュミスにより前記メインメモリにアクセスしたデータのアドレスであるキャッシュミスデータアドレスを前記プログラムの実行開始時からの経過時刻に対応付けて取得するキャッシュミスデータアドレス取得手順と、前記ＣＰＵ監視手順によって監視された前記ＣＰＵの処理状況から、当該プログラムを実行するのに要する時間である周期を決定する周期決定手順と、前記周期決定手順によって決定された前記周期と、前記キャッシュミスデータアドレス取得手順によって取得された前記キャッシュミスデータアドレスとを突き合わせて、プリフェッチ処理を行うデータのアドレスであるプリフェッチ対象アドレスをプリフェッチする周期内の位置であるプリフェッチ位置を特定する特定手順と、をコンピュータに実行させることを特徴とする。
【００１７】
また、請求項７に係る発明は、上記の発明において、前記特定手順によって特定された前記プリフェッチ対象アドレスと前記プリフェッチ位置とに基づいて、前記プログラムの実行中に当該プリフェッチ対象アドレスに対応するデータを前記メインメモリからプリフェッチ処理するように制御するプリフェッチ処理制御手順をさらに備えたことを特徴とする。
【００１８】
また、請求項８に係る発明は、ＣＰＵがプログラムを実行する際に用いられるデータをメインメモリからキャッシュメモリに予め格納するプリフェッチ処理方法であって、前記プログラムが実行される際に、当該プログラムを実行する前記ＣＰＵの処理状況を前記プログラムの実行開始時からの経過時刻に対応付けて監視するＣＰＵ監視工程と、前記プログラムが実行される際に、キャッシュミスにより前記メインメモリにアクセスしたデータのアドレスであるキャッシュミスデータアドレスを前記プログラムの実行開始時からの経過時刻に対応付けて取得するキャッシュミスデータアドレス取得工程と、前記ＣＰＵ監視工程によって監視された前記ＣＰＵの処理状況から、当該プログラムを実行するのに要する時間である周期を決定する周期決定工程と、前記周期決定工程によって決定された前記周期と、前記キャッシュミスデータアドレス取得工程によって取得された前記キャッシュミスデータアドレスとを突き合わせて、プリフェッチ処理を行うデータのアドレスであるプリフェッチ対象アドレスをプリフェッチする周期内の位置であるプリフェッチ位置を特定する特定工程と、を含んだことを特徴とする。
【発明の効果】
【００１９】
請求項１、６または８の発明によれば、プログラムが実行される際に、当該プログラムを実行するＣＰＵの処理状況をプログラムの実行開始時からの経過時刻に対応付けて監視し、プログラムが実行される際に、キャッシュミスによりメインメモリにアクセスしたデータのアドレスであるキャッシュミスデータアドレスをプログラムの実行開始時からの経過時刻に対応付けて取得し、監視されたＣＰＵの処理状況から、当該プログラムを実行するのに要する時間である周期を決定し、決定された周期と、取得されたキャッシュミスデータアドレスとを突き合わせて、プリフェッチ処理を行うデータのアドレスであるプリフェッチ対象アドレスをプリフェッチする周期内の位置であるプリフェッチ位置を特定するので、関数や最内ループなどのプログラムの意味的情報によらずプリフェッチ処理を適切に挿入することができ、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【００２０】
また、請求項２または７の発明によれば、特定されたプリフェッチ対象アドレスとプリフェッチ位置とに基づいて、プログラムの実行中に当該プリフェッチ対象アドレスに対応するデータをメインメモリからプリフェッチ処理するように制御するので、プログラマがプリフェッチ命令を挿入する人的および時間的コストを削減でき、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【００２１】
また、請求項３の発明によれば、ＣＰＵの処理状況として、ＣＰＵが、所定の時間内にプログラムの１命令を処理するのに要した平均クロック数、および／または、ＣＰＵが、当該所定の時間内にプログラムの命令を処理した際にキャッシュミスをした頻度であるキャッシュミス頻度をさらに監視し、平均クロック数および／またはキャッシュミス頻度を参照して周期を決定するので、平均クロック数および／または前記キャッシュミス頻度を参照して精度の高い周期を特定することができ、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【００２２】
また、請求項４の発明によれば、監視された所定の時間内の平均クロック数と、当該所定の時間内で最もキャッシュミス回数が多かったキャッシュミスデータアドレスに基づいて、周期を決定するので、各周期に共通して頻発されるキャッシュミスデータアドレスをプリフェッチ対象アドレスとして特定することができ、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【００２３】
また、請求項５の発明によれば、監視されたＣＰＵの処理状況を統計処理により所定の個数にグループ分けし、当該所定の個数に分けられたグループの繰り返しの様相に基づいて、周期を決定するので、より精度の高い周期を特定することができ、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【発明を実施するための最良の形態】
【００２４】
以下に添付図面を参照して、この発明に係るプリフェッチ処理装置、プリフェッチ処理プログラムおよびプリフェッチ処理方法の実施例を詳細に説明する。なお、以下では、この発明に係るプリフェッチ処理装置を適用した計算機システムを実施例として説明する。また、以下では、実施例１における計算機システムの概要および特徴、実施例１における計算機システムの構成および処理の手順、実施例１の効果を順に説明し、次に実施例１と同様に、実施例２に係る計算機システム、実施例３に係る計算機システムについて説明し、最後に、他の実施例について説明する。
【実施例１】
【００２５】
［実施例１における計算機システムの概要および特徴］
まず最初に、図１および図２を用いて、実施例１における計算機システムの主たる特徴を具体的に説明する。図１は、実施例１における計算機システムの概要を説明するための図であり、図２は、実施例１における計算機システムの特徴を説明するための図である。
【００２６】
実施例１における計算機システムは、ＣＰＵがプログラムを実行する際に用いられるデータをメインメモリからキャッシュメモリに予め格納するプリフェッチ処理を行うことを概要とする。
【００２７】
例えば、図１に示すように、実施例１における計算機システムは、関数Ａ、関数Ｂ、関数Ｃの３種類の関数からなる計算を繰り返すプログラムをＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央演算処理装置）において実行するが、当該プログラムを実行する際に用いるデータを、予めメインメモリからキャッシュメモリに格納することで、メモリアクセスの遅延時間に対応するプリフェッチ処理を行う。ここで、キャッシュメモリは、ＣＰＵの近傍に設置され、フェッチされたデータを格納する高速であるが小容量のメモリであり、メインメモリは、データやプログラムを格納する低速であるが大容量のメモリである。
【００２８】
ここで、本発明は、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になることに主たる特徴がある。この主たる特徴について簡単に説明すると、実施例１における計算機システムは、プログラムが実行される際に、当該プログラムを実行するＣＰＵの処理状況をプログラムの実行開始時からの経過時刻に対応付けて監視する。
【００２９】
例えば、実施例１における計算機システムは、ＣＰＵの処理状況として、ＣＰＵが所定の時間内にプログラムの１命令を処理するのに要したＣＰＩ（Ｃｙｃｌｅ  Ｃｌｏｃｋ  Ｐｅｒ  Ｉｎｓｔｒｕｃｔｉｏｎ）を監視する。ここで、「ＣＰＩ」は、特許請求の範囲に記載の「平均クロック数」に対応する。
【００３０】
すなわち、図２の左表に示すように、プログラムの実行開始時からの経過時刻から、「１００ｎｓ」を測定区間とし、当該測定区間ごとに、ＣＰＩを測定する。例えば、「測定区間３：測定開始時刻１４０１ｎｓ 〜測定終了時刻１５００ｎｓ」の「１００ｎｓ」におけるＣＰＩが「１．４」であり、「測定区間５：測定開始時刻１６０１ｎｓ 〜測定終了時刻１７００ｎｓ」の「１００ｎｓ」におけるＣＰＩが「２．５」であると測定する。なお、「ｎｓ」は、１０の９乗分の１秒を表す。
【００３１】
ここで、「ＣＰＩ」の数値が高いほど、ＣＰＵが１命令を処理するのに時間がかかったことを示しており、これにより、例えば、「測定区間５」におけるＣＰＵの処理状況が、「測定区間３」におけるＣＰＵの処理状況より悪化していると、監視することができる。なお、測定区間は、ユーザによって任意の値に設定できる。
【００３２】
そして、実施例１における計算機システムは、プログラムが実行される際に、キャッシュミスによりメインメモリにアクセスしたデータのアドレスであるキャッシュミスデータアドレスをプログラムの実行開始時からの経過時刻に対応付けて取得する。すなわち、ＣＰＵは、プログラが実行に用いるデータを取り込むためにキャッシュメモリにアクセスした際に当該データが存在しない場合（プリフェッチされていない場合）、キャッシュミスと判定して、メインメモリにアクセスして取り込んだデータを取り込むが、実施例１における計算機システムは、当該データのアドレスを、キャッシュミスデータアドレスとして、プログラムの実行開始時からの経過時刻に対応付けて取得する。なお、一般的に、キャッシュミスが発生した場合、そのデータが利用可能になるまで、ＣＰＵはその処理を一時停止する。
【００３３】
具体的には、図２の中表に示すように、実施例１における計算機システムは、ＣＰＩの測定区間と同様の測定区間ごとに、キャッシュミスデータアドレスを取得する。例えば、「測定区間５：測定開始時刻１６０１ｎｓ 〜測定終了時刻１７００ｎｓ」においては、プログラムの実行開始時からの経過時刻である「アクセス時刻：１６５０ｎｓ」に、「命令アドレス：０ｘ４００４００１０」の命令を実行する際に用いられるデータ（アドレス：０ｘａ０００００２０）の取り込み時にキャッシュミスが発生し、当該データのアドレスを「キャッシュミスデータアドレス：０ｘａ０００００２０」として取得する。また、その際、「命令アドレス：０ｘ４００４００１０」を参照して、当該命令アドレスが「関数Ｃ」における命令アドレスであることも判定して取得する。ここで、図２の中表に示すように、「測定区間５」においては、「アクセス時刻」が「１６５０ｎｓ」、「１６６０ｎｓ」および「１６７０ｎｓ」に、同様のキャッシュミスが発生している。
【００３４】
そして、実施例１における計算機システムは、監視されたＣＰＵの処理状況である所定の時間内のＣＰＩと、当該所定の時間内で最もキャッシュミス回数が多かったキャッシュミスデータアドレスに基づいて、当該プログラムを実行するのに要する時間である周期を決定する。
【００３５】
具体的には、実施例１における計算機システムは、測定区間の「ＣＰＩ」（図２の左表参照）と、当該測定区間において最もキャッシュミス回数が多かったキャッシュミスデータアドレス（図２の中表参照）とを対応付けて取得する。また、その際、図２の左表を参照して、当該測定区間の「測定開始時刻」を取得し、図２の中表を参照して、当該最もキャッシュミス回数が多かったキャッシュミスデータアドレスの「命令アドレス」と、「アクセス時刻」も取得する。なお、実施例１における計算機システムは、キャッシュミス回数が２回以上であったキャッシュミスデータアドレスを対象に、この処理を行い、さらに、「アクセス時刻」としては、測定区間内で最後に発生したキャッシュミスにおける「アクセス時刻」を取得する。
【００３６】
例えば、図２の右表に示すように、測定区間２において、「ＣＰＩ：１．９、命令アドレス：０ｘ４０００００１０、キャッシュミスデータアドレス：０ｘ３００２００５０、アクセス時刻：１３４０、測定開始時刻：１３０１」を取得し、測定区間５において、「ＣＰＩ：２．５、命令アドレス：０ｘ４００４００１０、キャッシュミスデータアドレス：０ｘａ０００００２０、アクセス時刻：１６７０、測定開始時刻：１６０１」を取得する。なお、測定区間１、測定区間３および測定区間４は、当該処理の対象外となる。
【００３７】
ここで、図２の中表に示すように、新たに測定区間１４において、当該処理の対象が発生しているので、実施例１における計算機システムは、新たに、「ＣＰＩ：２．５、命令アドレス：０ｘ４００４００１０、キャッシュミスデータアドレス：０ｘａ０００００２０、アクセス時刻：２５７０、測定開始時刻：２５０１」を取得する。
【００３８】
すなわち、実施例１における計算機システムは、「ＣＰＩ：２．５、命令アドレス：０ｘ４００４００１０、キャッシュミスデータアドレス：０ｘａ０００００２０」が繰り返し発生したことから、「測定開始時刻：２５０１」から「測定開始時刻：１６０１」を差し引いた「９００ｎｓ」を周期として決定する。
【００３９】
そして、実施例１における計算機システムは、決定された周期と、取得されたキャッシュミスデータアドレスとを突き合わせて、プリフェッチ処理を行うデータのアドレスであるプリフェッチ対象アドレスをプリフェッチする周期内の位置であるプリフェッチ位置を特定する。
【００４０】
具体的には、図２に示すように、繰り返し発生した「ＣＰＩ：２．５、命令アドレス：０ｘ４００４００１０、キャッシュミスデータアドレス：０ｘａ０００００２０」のキャッシュミスデータアドレスをプリフェッチ対象アドレスとし、さらにプリフェッチ位置を特定する。ここで、ＣＰＵからメモリにアクセスしてデータを取得する際に要する時間は、計算機システムごとに固有の値を示す。例えば、実施例１における計算機システムは、「メモリアクセス遅延時間：３００ｎｓ」であるとする。
【００４１】
すなわち、実施例１における計算機システムは、測定区間１４における「アクセス時刻：２５７０」と、決定された「周期：９００ｎｓ」と、「メモリアクセス遅延時間：３００ｎｓ」とから、図２に示すように、プリフェッチ対象アドレスをプリフェッチする次周期内の位置として「２５７０＋９００−３００＝３１７０ｎｓ」を特定する。ここで、「３１７０ｎｓ」は、次周期における「関数Ａ」の処理時に対応する。
【００４２】
そして、実施例１における計算機システムは、プリフェッチ対象アドレスとプリフェッチ位置とに基づいて、プログラムの実行中に当該プリフェッチ対象アドレスに対応するデータをメインメモリからプリフェッチ処理するように制御する。具体的には、実施例１における計算機システムは、「０ｘａ０００００２０」のデータを、「３１７０ｎｓ」の時点でメインメモリからキャッシュメモリに格納するようにＣＰＵに対して制御する。
【００４３】
このようなことから、実施例１における計算機システムは、関数や最内ループなどのプログラムの意味的情報によらずプリフェッチ処理を適切に挿入することができ、上記した主たる特徴の通り、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【００４４】
［実施例１における計算機システムの構成］
次に、図３〜９を用いて、実施例１における計算機システムの構成を説明する。図３は、実施例１における計算機システムの構成を示すブロック図であり、図４は、実施例１におけるＣＰＵ監視部を説明するための図であり、図５は、実施例１におけるＣＰＵ監視結果記憶部を説明するための図であり、図６は、実施例１におけるキャッシュミスデータアドレス記憶部を説明するための図であり、図７は、実施例１における周期決定部を説明するための図であり、図８は、実施例１における決定周期記憶部を説明するための図であり、図９は、実施例１における特定部を説明するための図である。
【００４５】
図３に示すように、実施例１における計算機システム１は、ＣＰＵ１０と、メインメモリ２０と、キャッシュメモリ３０と、プリフェッチ制御用記憶部１４とから構成され、さらにＣＰＵ１０は、命令制御部１１と、演算部１２と、メモリアクセス部１３と、プリフェッチ制御部１５とから構成される。
【００４６】
キャッシュメモリ３０は、ＣＰＵの近傍に設置され、フェッチされたデータを格納する高速であるが小容量のメモリであり、メインメモリ２０は、データやプログラムを格納する低速であるが大容量のメモリである。
【００４７】
命令制御部１１は、実行されるプログラムを読み込んで、当該プログラムの命令をデコードし、演算部１２に対して命令実行の指示を行なったり、メモリアクセス部１３に対して、命令実行に用いられるデータをキャッシュメモリ３０やメインメモリ２０にアクセスして取得するように指示を行なったりする。
【００４８】
演算部１２は、命令制御部１１の指示に従って、プログラムに記述された命令を実行する。
【００４９】
メモリアクセス部１３は、命令制御部１１の指示に従って、キャッシュメモリ３０やメインメモリ２０にアクセスして、命令実行に用いられるデータを取得する。また、命令制御部１１の指示に従って、メインメモリ２０からキャッシュメモリ３０にデータを予め格納（プリフェッチ）する。
【００５０】
プリフェッチ制御用記憶部１４は、プリフェッチ制御部１５による各種処理に用いるデータや、プリフェッチ制御部１５による各種処理結果を記憶し、特に本発明に密接に関連するものとしては、図３に示すように、ＣＰＵ監視結果記憶部１４ａと、キャッシュミスデータアドレス記憶部１４ｂと、決定周期記憶部１４ｃと、メモリアクセス遅延時間記憶部１４ｄと、特定結果記憶部１４ｅとを備える。ＣＰＵ監視結果記憶部１４ａは、後述するＣＰＵ監視部１５ａが監視したＣＰＵの処理状況を記憶し、キャッシュミスデータアドレス記憶部１４ｂは、後述するキャッシュミスデータアドレス取得部１５ｂが取得したキャッシュミスデータアドレスを記憶し、決定周期記憶部１４ｃは、後述する周期決定部１５ｃが決定した周期を記憶し、メモリアクセス遅延時間記憶部１４ｄは、後述する特定部１５ｄによる処理に用いられるメモリアクセス遅延時間を記憶し、特定結果記憶部１４ｅは、後述する特定部１５ｄが特定したプリフェッチ対象アドレスとプリフェッチ位置とを記憶する。なお、各部については、後に詳述する。
【００５１】
プリフェッチ制御部１５は、命令制御部１１とメモリアクセス部１３とから取得したデータと、プリフェッチ制御用記憶部１４が記憶するデータに基づき各種処理を実行し、特に本発明に密接に関連するものとしては、図３に示すように、ＣＰＵ監視部１５ａと、キャッシュミスデータアドレス取得部１５ｂと、周期決定部１５ｃと、特定部１５ｄと、プリフェッチ処理制御部１５ｅとを備える。ここで、ＣＰＵ監視部１５ａは、特許請求の範囲に記載の「ＣＰＵ監視手段」に対応し、キャッシュミスデータアドレス取得部１５ｂは、同じく、「キャッシュミスデータアドレス取得手段」に対応し、周期決定部１５ｃは、同じく、「周期決定手段」に対応し、特定部１５ｄは、同じく、「特定手段」に対応し、プリフェッチ処理制御部１５ｅは、同じく、「プリフェッチ処理制御手段」に対応する。
【００５２】
ＣＰＵ監視部１５ａは、プログラムが実行される際に、命令制御部１１の処理状況をプログラムの実行開始時からの経過時刻に対応付けて監視し、その結果を、ＣＰＵ監視結果記憶部１４ａに格納する。具体的には、ＣＰＵ監視部１５ａは、ＣＰＵの処理状況として、ＣＰＵが所定の時間内（測定区間内）にプログラムの１命令を処理するのに要したＣＰＩ（Ｃｙｃｌｅ  Ｃｌｏｃｋ  Ｐｅｒ  Ｉｎｓｔｒｕｃｔｉｏｎ）を監視する。すなわち、図４に示すように、測定区間内における実行サイクル数を当該測定区間内における実行命令数で除することによってＣＰＩを算出する。例えば、プログラムの実行開始時からの経過時刻から、「１００ｎｓ」を測定区間とし、当該測定区間ごとに、ＣＰＩを測定する。
【００５３】
ＣＰＵ監視結果記憶部１４ａは、上述したＣＰＵ監視部１５ａの処理結果を記憶する。すなわち、図５に示すように、「測定区間３：測定開始時刻１４０１ｎｓ 〜測定終了時刻１５００ｎｓ」の「１００ｎｓ」におけるＣＰＩが「１．４」であり、「測定区間５：測定開始時刻１６０１ｎｓ 〜測定終了時刻１７００ｎｓ」の「１００ｎｓ」におけるＣＰＩが「２．５」であると記憶する。
【００５４】
キャッシュミスデータアドレス取得部１５ｂは、メモリアクセス部１３から、プログラムが実行される際に、キャッシュミスによりメインメモリにアクセスしたデータのアドレスであるキャッシュミスデータアドレスをプログラムの実行開始時からの経過時刻に対応付けて取得し、その結果を、キャッシュミスデータアドレス記憶部１４ｂに格納する。すなわち、キャッシュミスデータアドレス取得部１５ｂは、メモリアクセス部１３がキャッシュメモリにアクセスした際に当該データが存在しない場合（プリフェッチされていない場合）、キャッシュミスと判定して、メインメモリにアクセスして取り込んだデータを取り込むが、キャッシュミスデータアドレス取得部１５ｂは、当該データのアドレスを、キャッシュミスデータアドレスとして、プログラムの実行開始時からの経過時刻に対応付けて取得する。例えば、ＣＰＵ監視部１５ａが監視した測定区間と同様の測定区間ごとに、キャッシュミスデータアドレスを取得する。また、その際、キャッシュミスデータアドレスに対応する命令アドレスを参照して、当該命令アドレスを実行する「関数」も取得する。
【００５５】
キャッシュミスデータアドレス記憶部１４ｂは、上述したキャッシュミスデータアドレス取得部１５ｂの処理結果を記憶する。例えば、図６に示すように、「測定区間５：測定開始時刻１６０１ｎｓ 〜測定終了時刻１７００ｎｓ」においては、プログラムの実行開始時からの経過時刻である「アクセス時刻：１６５０ｎｓ」に、「命令アドレス：０ｘ４００４００１０」の命令を実行する際に用いられるデータ（アドレス：０ｘａ０００００２０）の取り込み時にキャッシュミスが発生し、当該データのアドレスを「キャッシュミスデータアドレス：０ｘａ０００００２０」として記憶する。また、「命令アドレス：０ｘ４００４００１０」が「関数Ｃ」における命令アドレスであることも記憶する。なお、図６に示すように「測定区間５」においては、「アクセス時刻」が「１６５０ｎｓ」、「１６６０ｎｓ」および「１６７０ｎｓ」に、同様のキャッシュミスが発生している。
【００５６】
周期決定部１５ｃは、監視されたＣＰＵの処理状況である所定の時間内のＣＰＩと、当該所定の時間内で最もキャッシュミス回数が多かったキャッシュミスデータアドレスに基づいて、当該プログラムを実行するのに要する時間である周期を決定する周期を決定し、その結果を、決定周期記憶部１４ｃに格納する。
【００５７】
具体的には、周期決定部１５ｃは、図７に示すように、実施例１における計算機システムは、ＣＰＵ監視結果記憶部１４ａが記憶する測定区間の「ＣＰＩ」（図５参照）と、キャッシュミスデータアドレス記憶部１４ｂを参照して、当該測定区間において最もキャッシュミス回数が多かったキャッシュミスデータアドレス（図６参照）とを対応付けて取得する。また、周期決定部１５ｃは、その際、ＣＰＵ監視結果記憶部１４ａを参照して、当該測定区間の「測定開始時刻」を取得し、キャッシュミスデータアドレス記憶部１４ｂを参照して、当該最もキャッシュミス回数が多かったキャッシュミスデータアドレスの「命令アドレス」と、「アクセス時刻」も取得する。なお、周期決定部１５ｃは、キャッシュミス回数が２回以上であったキャッシュミスデータアドレスを対象に、この処理を行い、さらに、「アクセス時刻」としては、測定区間内で最後に発生したキャッシュミスにおける「アクセス時刻」を取得する。
【００５８】
例えば、図７に示すように、測定区間２において、「ＣＰＩ：１．９、命令アドレス：０ｘ４０００００１０、キャッシュミスデータアドレス：０ｘ３００２００５０、アクセス時刻：１３４０、測定開始時刻：１３０１」を取得し、測定区間５において、「ＣＰＩ：２．５、命令アドレス：０ｘ４００４００１０、キャッシュミスデータアドレス：０ｘａ０００００２０、アクセス時刻：１６７０、測定開始時刻：１６０１」を取得する。なお、測定区間１、測定区間３および測定区間４は、当該処理の対象外となる。
【００５９】
ここで、周期決定部１５ｃは、図６に示すように、新たに測定区間１４において、当該処理の対象が発生しているので、新たに、「ＣＰＩ：２．５、命令アドレス：０ｘ４００４００１０、キャッシュミスデータアドレス：０ｘａ０００００２０、アクセス時刻：２５７０、測定開始時刻：２５０１」を取得する（図７参照）。
【００６０】
そして、周期決定部１５ｃは、「ＣＰＩ：２．５、命令アドレス：０ｘ４００４００１０、キャッシュミスデータアドレス：０ｘａ０００００２０」が一致することから、当該キャッシュミスが繰り返し発生したと判定し、「測定開始時刻：２５０１」から「測定開始時刻：１６０１」を差し引いた「９００ｎｓ」を周期として決定する。
【００６１】
決定周期記憶部１４ｃは、上述した周期決定部１５ｃの処理結果を記憶する。例えば、図８に示すように、「キャッシュミスデータアドレス：０ｘａ０００００２０」と、「アクセス時刻：２５７０」と、「周期：９００ｎｓ」とを対応付けて記憶する。
【００６２】
特定部１５ｄは、決定周期記憶部１４ｃが記憶する周期と、キャッシュミスデータアドレスとを突き合わせて、プリフェッチ処理を行うデータのアドレスであるプリフェッチ対象アドレスをプリフェッチする周期内の位置であるプリフェッチ位置を特定する。
【００６３】
具体的には、図９に示すように、繰り返し発生した「キャッシュミスデータアドレス：０ｘａ０００００２０」をプリフェッチ対象アドレスとし、さらにプリフェッチ位置を特定する。
【００６４】
ここで、メモリアクセス部１３からキャッシュメモリ３０にアクセスしてデータを取得する際に要する時間は、計算機システムごとに固有の値を示す。メモリアクセス遅延時間記憶部１４ｄには、計算機システム１における「メモリアクセス遅延時間：３００ｎｓ」が格納されている。
【００６５】
すなわち、特定部１５ｄは、測定区間１４における「アクセス時刻：２５７０」と、決定された「周期：９００」と、「メモリアクセス遅延時間：３００ｎｓ」とから、図９に示すように、プリフェッチ対象アドレスをプリフェッチする次周期内の位置として「２５７０＋９００−３００＝３１７０ｎｓ」を特定する。ここで、「３１７０ｎｓ」は、次周期における「関数Ａ」の処理時に対応する。
【００６６】
特定結果記憶部１４ｅは、上述した特定部１５ｄが特定したプリフェッチ対象アドレスとプリフェッチ位置とを記憶する。例えば、「プリフェッチ対象アドレス：０ｘａ０００００２０」と「プリフェッチ位置：３１７０ｎｓ」とを記憶する。
【００６７】
プリフェッチ処理制御部１４ｅは、特定結果記憶部１４ｅが記憶するプリフェッチ対象アドレスとプリフェッチ位置とに基づいて、プログラムの実行中に当該プリフェッチ対象アドレスに対応するデータをメインメモリからプリフェッチ処理するように命令制御部１１を制御する。具体的には、「０ｘａ０００００２０」のデータを、「３１７０ｎｓ」の時点でメインメモリからキャッシュメモリに格納するように命令制御部１１に対して制御する。
【００６８】
［実施例１における計算機システムによる処理の手順］
次に、図１０を用いて、実施例１における計算機システム１による処理を説明する。図１０は、実施例１における計算機システムの処理を説明するための図である。
【００６９】
まず、実施例１における計算機システム１は、プログラムの処理が実行開始されると（ステップＳ１００１肯定）、ＣＰＵ監視部１５ａおよびキャッシュミスデータアドレス取得部１５ｂは、ＣＰＵ監視およびキャッシュミスデータアドレス取得を開始する（ステップＳ１００２）。
【００７０】
すなわち、ＣＰＵ監視部１５ａは、ＣＰＵの処理状況として、ＣＰＵが所定の時間内（測定区間内）にプログラムの１命令を処理するのに要したＣＰＩ（Ｃｙｃｌｅ  Ｃｌｏｃｋ  Ｐｅｒ  Ｉｎｓｔｒｕｃｔｉｏｎ）を監視し、例えば、図５に示すように、「測定区間５：測定開始時刻１６０１ｎｓ 〜測定終了時刻１７００ｎｓ」の「１００ｎｓ」におけるＣＰＩが「２．５」であると、ＣＰＵ監視結果記憶部１４ａに格納する。
【００７１】
それとともに、キャッシュミスデータアドレス取得部１５ｂは、メモリアクセス部１３から、プログラムが実行される際に、キャッシュミスによりメインメモリにアクセスしたデータのアドレスであるキャッシュミスデータアドレスをプログラムの実行開始時からの経過時刻に対応付けて取得し、例えば、図６に示すように、「測定区間５：測定開始時刻１６０１ｎｓ 〜測定終了時刻１７００ｎｓ」において、「アクセス時刻：１６５０ｎｓ」に、「命令アドレス：０ｘ４００４００１０」の命令を実行する際に用いられるデータ（アドレス：０ｘａ０００００２０）の取り込み時にキャッシュミスが発生し、当該データのアドレスを「キャッシュミスデータアドレス：０ｘａ０００００２０」として、キャッシュミスデータアドレス記憶部１４ｂに格納する。
【００７２】
そして、特定部１５ｄは、周期決定部１５ｃによって周期が決定されると（ステップＳ１００３肯定）、プリフェッチ対象アドレスとプリフェッチ位置とを特定する（ステップＳ１００４）。
【００７３】
すなわち、周期決定部１５ｃは、図７に示すように、同じ「ＣＰＩとキャッシュミスデータアドレスの組み合わせ」が繰り返して出現すると、測定開始時刻から周期を決定し、これに基づいて、特定部１５ｄは、図９に示すように、プリフェッチ対象アドレスとプリフェッチ位置とを特定する。なお、特定部１５ｄは、周期決定部１５ｃによって周期が特定されない場合は（ステップＳ１００３否定）、その処理を待機する。
【００７４】
続いて、プリフェッチ処理制御部１５ｅは、特定部１５ｄが特定結果記憶部１４ｅに格納したプリフェッチ対象アドレスとプリフェッチ位置とに基づいて、プログラムの実行中に当該プリフェッチ対象アドレスに対応するデータをメインメモリからプリフェッチ処理するように命令制御部１１を制御する（ステップＳ１００５）。具体的には、「０ｘａ０００００２０」のデータを、「３１７０ｎｓ」の時点でメインメモリからキャッシュメモリに格納するように命令制御部１１に対して制御する。
【００７５】
そして、実施例１における計算機システム１は、プログラム実行が終了すると（ステップＳ１００６肯定）、処理を終了する。なお、プログラム実行が終了しない場合は（ステップＳ１００６否定）、再び「ＣＰＩとキャッシュミスデータアドレスの組み合わせ」が繰り返して発生して周期が決定されるまで待機する。
【００７６】
［実施例１の効果］
上記したように、実施例１によれば、プログラムが実行される際に、当該プログラムを実行するＣＰＵ１０の処理状況をプログラムの実行開始時からの経過時刻に対応付けて監視し、プログラムが実行される際に、キャッシュミスによりメインメモリ２０にアクセスしたデータのアドレスであるキャッシュミスデータアドレスをプログラムの実行開始時からの経過時刻に対応付けて取得し、監視されたＣＰＵ１０の処理状況から、周期を決定し、決定された周期と、取得されたキャッシュミスデータアドレスとを突き合わせて、プリフェッチ対象アドレスとプリフェッチ位置とを特定するので、関数や最内ループなどのプログラムの意味的情報によらずプリフェッチ処理を適切に挿入することができ、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【００７７】
また、実施例１によれば、特定されたプリフェッチ対象アドレスとプリフェッチ位置とに基づいて、プログラムの実行中に当該プリフェッチ対象アドレスに対応するデータをメインメモリ２０からキャッシュメモリ３０にプリフェッチ処理するように制御するので、プログラマがプリフェッチ命令を挿入する人的および時間的コストを削減でき、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【００７８】
また、実施例１によれば、ＣＰＵ１０の処理状況として、ＣＰＩを監視し、ＣＰＩを参照して周期を決定するので、精度の高い周期を特定することができ、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【００７９】
また、実施例１によれば、監視された所定の時間内におけるＣＰＩと、当該所定の時間内で最もキャッシュミス回数が多かったキャッシュミスデータアドレスに基づいて、周期を決定するので、各周期に共通して頻発されるキャッシュミスデータアドレスをプリフェッチ対象アドレスとして特定することができ、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【実施例２】
【００８０】
上述した実施例１では、ＣＰＩと、最もキャッシュミス回数が多かったキャッシュミスデータアドレスとに基づいて周期を決定する場合について説明したが、実施例２では、ＣＰＩなどのＣＰＵの処理状況を統計処理することによって周期を決定する場合について説明する。
【００８１】
［実施例２における計算機システムの概要および特徴］
まず最初に、図１１を用いて、実施例２における計算機システムの主たる特徴を具体的に説明する。図１１は、実施例２における計算機システムの概要および特徴を説明するための図である。
【００８２】
実施例２における計算機システムは、監視されたＣＰＵの処理状況を統計処理により所定の個数にグループ分けし、当該所定の個数に分けられたグループの繰り返しの様相に基づいて、周期を決定する。
【００８３】
具体的には、実施例２における計算機システムは統計処理として、階層型クラスタリングの手法を用い、図１１に示すように、「グループ数：２」と指定されると、ＣＰＩの測定結果を、第一グループと第二グループとにグループ分けを行なう。これにより、例えば、ＣＰＩの測定結果を図１１のグラフで示すように、ＣＰＩの値が小さい第一グループと、ＣＰＩの値が大きい第二グループとが繰り返していることがわかり、また、第一グループの開始時刻がそれぞれ「１２０１、２１０１、３００１、３９０１（単位：ｎｓ）」であることから、これらを周期開始時刻として、「周期」は「９００ｎｓ」と特定する。
【００８４】
なお、階層型クラスタリングのアルゴリズムは、最長距離法，最短距離法，Ｗａｒｄ法等が利用可能である。また、実施例２における計算機システムは、実施例１と同様に、周期を特定した後は、プリフェッチ対象アドレスおよびプリフェッチ位置を特定し、プログラムの実行中に当該プリフェッチ対象アドレスに対応するデータをメインメモリからキャッシュメモリにプリフェッチ処理するように制御する。
【００８５】
このようなことから、実施例２における計算機システムは、より精度の高い周期を特定することができ、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【００８６】
［実施例２における計算機システムの構成］
次に、図１２〜１５を用いて、実施例２における計算機システム１を説明する。図１２は、実施例２における計算機システムの構成を示すブロック図であり、図１３は、実施例２におけるＣＰＵ監視結果記憶部を説明するための図であり、図１４は、実施例２におけるキャッシュミスデータアドレス記憶部を説明するための図であり、図１５は、実施例２における特定部を説明するための図である。
【００８７】
図１２に示すように、実施例２における計算機システム１は、図３に示した実施例１における計算機システム１と基本的に同様の構成であるが、周期決定部１５ｃと、特定部１５ｄとの処理内容が異なる。以下、これらを中心に説明する。
【００８８】
周期決定部１５ｃは、ＣＰＵ監視結果記憶部１４ａに格納されたＣＰＵの処理状況としてのＣＰＩを統計処理により所定の個数にグループ分けし、当該所定の個数に分けられたグループの繰り返しの様相に基づいて周期を決定し、その結果を、決定周期記憶部１４ｃに格納する。
【００８９】
具体的には、周期決定部１５ｃは、図１３に示すＣＰＵ監視結果記憶部１４ａに格納された測定区間ごとのＣＰＩのデータを、予め分析者から受け付けた「グループ数：２」に基づいて、統計処理の手法である階層型クラスタリングを用いて、第一グループと第二グループとにグループ分けを行なう。これにより、例えば、ＣＰＩの測定結果を図１１のグラフで示すように、ＣＰＩの値が小さい第一グループと、ＣＰＩの値が大きい第二グループとが繰り返していると判定する。
【００９０】
そして、周期決定部１５ｃは、例えば、第一グループの開始時刻「１２０１、２１０１、３００１、３９０１（単位：ｎｓ）」を周期開始時刻として、「周期」は「９００ｎｓ」と特定する。
【００９１】
特定部１５ｄは、決定周期記憶部１４ｃが記憶する周期と、キャッシュミスデータアドレス記憶部１４ｂが記憶するキャッシュミスデータアドレスとを突き合わせて、プリフェッチ処理を行うデータのアドレスであるプリフェッチ対象アドレスとプリフェッチ位置とを特定する。
【００９２】
例えば、特定部１５ｄは、「周期：９００ｎｓ」と、図１４に示すキャッシュミスデータアドレスとを突き合わせて、各周期の「測定区間５」、「測定区間１４」、「測定区間２３」および「測定区間３２」それぞれにおいて、「キャッシュミスデータアドレス：０ｘａ０００００２０」が３回ずつ発生していることから、図１５に示すように、測定区間５におけるデータを用いて「プリフェッチ対象アドレス」として「０ｘａ０００００２０」を特定する。
【００９３】
さらに、特定部１５ｄは、測定区間５において最初に「０ｘａ０００００２０」におけるキャッシュミスが発生した「アクセス時刻：１６５０」と、「周期開始時刻：１２０１」と、「メモリアクセス遅延時間：３００ｎｓ」とから、図１５に示すように、周期開始後のプリフェッチ位置として「１６５０−３００−１２０１＋１＝１５０ｎｓ」を算出し、「１５０ｎｓ」を特定する。
【００９４】
プリフェッチ処理制御部１５ｅは、特定部１５ｄが特定結果記憶部１４ｅに格納したプリフェッチ対象アドレスとプリフェッチ位置とに基づいて、プログラムの実行中に当該プリフェッチ対象アドレスに対応するデータをメインメモリからプリフェッチ処理するように命令制御部１１を制御する。具体的には、「０ｘａ０００００２０」のデータを、各周期開始後「１５０ｎｓ」の時点でメインメモリからキャッシュメモリに格納するように命令制御部１１に対して制御する。
【００９５】
［実施例２における計算機システムによる処理の手順］
次に、図１０を用いて、実施例２における計算機システム１による処理を説明する。図１０は、実施例１における計算機システムの処理を説明するための図であり、実施例２においても、同様な処理手順となる。
【００９６】
まず、実施例２における計算機システム１は、プログラムの処理が実行開始されると（ステップＳ１００１肯定）、実施例１における計算機システム１と同様に、ＣＰＵ監視部１５ａおよびキャッシュミスデータアドレス取得部１５ｂは、ＣＰＵ監視およびキャッシュミスデータアドレス取得を開始する（ステップＳ１００２）。
【００９７】
そして、特定部１５ｄは、周期決定部１５ｃによって周期が決定されると（ステップＳ１００３肯定）、プリフェッチ対象アドレスとプリフェッチ位置とを特定する（ステップＳ１００４）。
【００９８】
すなわち、周期決定部１５ｃが、図１３に示すＣＰＵ監視結果記憶部１４ａに格納された測定区間ごとのＣＰＩのデータから、図１１のグラフで示すように、ＣＰＩの値が小さい第一グループと、ＣＰＩの値が大きい第二グループとが繰り返していると判定し、第一グループの開始時刻がそれぞれ「１２０１、２１０１、３００１、３９０１（単位：ｎｓ）」であることから、「周期」は「９００ｎｓ」と特定すると、特定部１５ｄは、図１５に示すように、決定周期記憶部１４ｃが記憶する周期と、キャッシュミスデータアドレス記憶部１４ｂが記憶するキャッシュミスデータアドレスとを突き合わせて、「プリフェッチ対象アドレス：０ｘａ０００００２０」と「プリフェッチ位置：１５０ｎｓ」とを特定する。なお、特定部１５ｄは、周期決定部１５ｃによって周期が特定されない場合は（ステップＳ１００３否定）、その処理を待機する。
【００９９】
続いて、プリフェッチ処理制御部１５ｅは、特定部１５ｄが特定結果記憶部１４ｅに格納したプリフェッチ対象アドレスとプリフェッチ位置とに基づいて、プログラムの実行中に当該プリフェッチ対象アドレスに対応するデータをメインメモリからプリフェッチ処理するように命令制御部１１を制御する（ステップＳ１００５）。具体的には、「０ｘａ０００００２０」のデータを、各周期開始後「１５０ｎｓ」の時点でメインメモリからキャッシュメモリに格納するように命令制御部１１に対して制御する。
【０１００】
そして、実施例２における計算機システム１は、プログラム実行が終了すると（ステップＳ１００６肯定）、処理を終了する。なお、プログラム実行が終了しない場合は（ステップＳ１００６否定）、再び周期が決定されるまで待機する。
【０１０１】
［実施例２の効果］
上記したように、実施例２によれば、ＣＰＵ１０の処理状況としてのＣＰＩを統計処理により所定の個数にグループ分けし、当該所定の個数に分けられたグループの繰り返しの様相に基づいて、周期を決定するので、より精度の高い周期を特定することができ、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【実施例３】
【０１０２】
上述した実施例１および２では、ＣＰＵの処理状況から自動的に周期を決定する場合について説明したが、実施例３では、ＣＰＵの処理状況から分析者が周期を判定して決定する場合について説明する。また、上述した実施例１および２では、特定されたプリフェッチ対象アドレスとプリフェッチ位置とに基づいてプリフェッチ処理をするように制御する場合について説明したが、実施例３では、特定されたプリフェッチ対象アドレスとプリフェッチ位置とを自動的にプログラムに挿入してプリフェッチ処理をするように制御する場合について説明する。
【０１０３】
［実施例３における計算機システムの概要および特徴］
まず最初に、図１６を用いて、実施例３における計算機システムの主たる特徴を具体的に説明する。図１６は、実施例３における計算機システムの概要および特徴を説明するための図である。
【０１０４】
実施例３における計算機システムは、監視されたＣＰＵの処理状況であるＣＰＩを出力して、プログラムの繰り返し地点として予測される経過時刻を所定の入力部から受け付け、受け付けた前記経過時間に基づいて前記周期を決定する。
【０１０５】
すなわち、実施例３における計算機システムは、分析者（プログラマ）からの表示要求に基づいて、図１６に示すように、ＣＰＩの値を縦軸に、プログラム実行開始からの経過時間を横軸にしてプロットしたグラフを表示する。そして、分析者（プログラマ）が当該グラフを参照して、周期を判定し、プログラムの繰り返し地点として予測される経過時刻（始点および終点）を指定すると（図１６の左側の破線四角参照）、当該指定された時間におけるキャッシュミスデータアドレスをテーブルとして表示する（図１６のＰｈａｓｅ１のテーブル参照）。さらに、同様のパターンを示す領域の経過時刻（始点および終点）を指定すると（図１６の右側の破線四角参照）、同様に、キャッシュミスデータアドレスをテーブルとして表示する（図１６のＰｈａｓｅ２のテーブル参照）。
【０１０６】
ここで、Ｐｈａｓｅ１のテーブルにおいてキャッシュミスデータアドレスを選択すると、Ｐｈａｓｅ２のテーブルにおいて同じキャッシュミスデータアドレスが同期して表示される。これにより、分析者は、キャッシュミスデータアドレスにも周期性を確認する。
【０１０７】
そして、実施例３における計算機システムは、指定された経過時刻の始点および終点から、例えば、「周期：９００ｎｓ」と決定する。
【０１０８】
そして、実施例３における計算機システムは、図１６に示すキャッシュミスデータアドレスのテーブルから、分析者がプリフェッチ対象アドレスを選択すると、プリフェッチ位置を特定する。例えば、図１６に示す「キャッシュミスデータアドレス：０ｘａ０００００２０」がプリフェッチ対象アドレスとして選択されると、実施例２と同様に、Ｐｈａｓｅ１のテーブルにある「アクセス時刻：１６５０」と、「０ｘａ０００００２０」におけるキャッシュミスが発生した「アクセス時刻：１６５０」と、「周期開始時刻：１２０１」と、「メモリアクセス遅延時間：３００ｎｓ」とから、「プリフェッチ位置：１５０ｎｓ」を特定する。
【０１０９】
なお、本実施例では、キャッシュミスデータアドレスのテーブルを参照して、分析者がプリフェッチ対象アドレスを選択する場合について説明したが、本発明はこれに限定されるものではなく、例えば、キャッシュミスデータアドレスの出現回数をヒストグラムとして表示し、このヒストグラムを参照して分析者がプリフェッチ対象アドレスを選択する場合であってもよい。
【０１１０】
そして、実施例３における計算機システムは、特定されたプリフェッチ対象アドレスとプリフェッチ位置とを、ソースコードを用いて再コンパイルして新たな実行バイナリファイルを作成する。すなわち、実施例３における計算機システムは、特定されたプリフェッチ対象アドレスに対応するプログラムのソースコードを別画面で表示するボタン（図１６に示す「ソースコードの表示」参照）を画面に表示し、分析者は、これを押下することによって、該当箇所のソースコードを確認する。そして、分析者がソースコードを確認し、図１６に示す「プリフェッチ命令の挿入」のボタンを押下すると、実施例３における計算機システムは、ソースコードを用いて再コンパイルした新たな実行バイナリファイルを作成する。これにより、新たな実行バイナリファイルを作成され、プリフェッチ命令が自動挿入される。
【０１１１】
このようなことから、実施例３における計算機システムを用いることにより、例えば、プログラマは、ＣＰＵの処理状況を容易に把握して、プログラムの周期を決定することができ、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【０１１２】
［実施例３における計算機システムの構成］
次に、図１７を用いて、実施例３における計算機システムを説明する。図１７は、実施例３における計算機システムの構成を示すブロック図である。
【０１１３】
図１７に示すように、実施例３における計算機システム１は、図３に示した実施例１における計算機システム１と基本的に同様であるが、入力部４０と、出力部５０と、入出力制御Ｉ／Ｆ部６０と、経過時刻受け付け部１５ｇと、新規実行バイナリファイル作成部１５ｆと、ソースコード記憶部１４ｆとを新たに備えているところが相違する。以下、これらを中心に説明する。
【０１１４】
入力部４０は、後述する経過時刻受け付け部１５ｇによる処理に用いられる、分析者からの指示を受け付け、キーボードや、タッチパネルなどを備える。
【０１１５】
出力部５０は、後述する経過時刻受け付け部１５ｇによる処理結果を出力し、モニタやスピーカなどを備える。
【０１１６】
入出力制御Ｉ／Ｆ部６０は、入力部４０および出力部５０と、プリフェッチ制御部１５およびプリフェッチ制御用記憶部１４との間におけるデータ転送を制御する。
【０１１７】
経過時刻受け付け部１５ｇは、監視されたＣＰＵの処理状況であるＣＰＩを出力して、プログラムの繰り返し地点として予測される経過時刻を所定の入力部から受け付ける。
【０１１８】
具体的には、経過時刻受け付け部１５ｇは、分析者（プログラマ）からの表示要求を受け付けると、図１６に示すように、ＣＰＩの値を縦軸に、プログラム実行開始からの経過時刻を横軸にしてプロットしたグラフを表示する。そして、分析者（プログラマ）が当該グラフを参照して、周期を判定し、プログラムの繰り返し地点として予測される経過時刻（始点および終点）を指定すると（図１６の左側の破線四角参照）、当該指定された時間におけるキャッシュミスデータアドレスをテーブルとして表示する（図１６のＰｈａｓｅ１のテーブル参照）。さらに、同様のパターンを示す領域の経過時刻（始点および終点）を指定すると（図１６の右側の破線四角参照）、同様に、キャッシュミスデータアドレスをテーブルとして表示する（図１６のＰｈａｓｅ２のテーブル参照）。
【０１１９】
ここで、Ｐｈａｓｅ１のテーブルにおいてキャッシュミスデータアドレスを選択すると、Ｐｈａｓｅ２のテーブルにおいて同じキャッシュミスデータアドレスが同期して表示される。これにより、分析者は、キャッシュミスデータアドレスにも周期性を確認する。
【０１２０】
周期決定部１５ｃは、指定された経過時刻の始点および終点から、例えば、「周期：９００ｎｓ」と決定する。
【０１２１】
特定部１５ｄは、経過時刻受け付け部１５ｇが受け付けて表示したキャッシュミスデータアドレスのテーブルを参照して、分析者が、プリフェッチ対象アドレスを選択すると、プリフェッチ位置を特定する。例えば、図１６に示す「キャッシュミスデータアドレス：０ｘａ０００００２０」がプリフェッチ対象アドレスとして選択されると、実施例２と同様に、Ｐｈａｓｅ１のテーブルにある「アクセス時刻：１６５０」と、「０ｘａ０００００２０」におけるキャッシュミスが発生した「アクセス時刻：１６５０」と、「周期開始時刻：１２０１」と、「メモリアクセス遅延時間：３００ｎｓ」とから、「プリフェッチ位置：１５０ｎｓ」を特定する。
【０１２２】
新規実行バイナリファイル作成部１５ｆは、特定されたプリフェッチ対象アドレスとプリフェッチ位置とを、ソースコード記憶部１４ｆが記憶するソースコードを用いて再コンパイルして新たな実行バイナリファイルを作成する。すなわち、新規実行バイナリファイル作成部１５ｆは、特定されたプリフェッチ対象アドレスに対応するプログラムのソースコードを別画面で表示するボタン（図１６に示す「ソースコードの表示」参照）を分析者が押下して確認し、さらに、図１６に示す「プリフェッチ命令の挿入」のボタンが押下されたことを受け付けると、ソースコードを用いて再コンパイルした新たな実行バイナリファイルを作成する。これにより、新たな実行バイナリファイルを作成され、プリフェッチ命令が自動挿入される。
【０１２３】
［実施例３における計算機システムによる処理の手順］
次に、図１８を用いて、実施例３における計算機システム１による処理を説明する。図１８は、実施例３における計算機システムの処理を説明するための図である。
【０１２４】
まず、実施例３における計算機システム１は、プログラムの処理が実行開始されると（ステップＳ１８０１肯定）、実施例１および実施例２における計算機システム１と同様に、ＣＰＵ監視部１５ａおよびキャッシュミスデータアドレス取得部１５ｂは、ＣＰＵ監視およびキャッシュミスデータアドレス取得を開始する（ステップＳ１８０２）。
【０１２５】
そして、経過時刻受け付け部１５ｇは、分析者からのＣＰＵの処理状況の表示要求を受け付けると（ステップＳ１８０３肯定）、経過時刻受け付け部１５ｇは、出力部５０が備えるモニタに表示する（ステップＳ１８０４）。例えば、経過時刻受け付け部１５ｇは、分析者からの表示要求を受け付けると、図１６に示すように、ＣＰＩの値を縦軸に、プログラム実行開始からの経過時刻を横軸にしてプロットしたグラフを表示する。
【０１２６】
続いて、経過時刻受け付け部１５ｇは、分析者（プログラマ）が当該グラフを参照して、周期を判定し、プログラムの繰り返し地点として予測される経過時刻（始点および終点）を指定したことを受け付けると（ステップＳ１８０５肯定）、周期決定部１５ｃは、周期を決定する（ステップＳ１８０６）。
【０１２７】
そののち、特定部１５ｄは、プリフェッチ対象アドレスおよびプリフェッチ位置を特定する（ステップＳ１８０７）。
【０１２８】
そして、新規実行バイナリファイル作成部１５ｆは、特定されたプリフェッチ対象アドレスとプリフェッチ位置とを、ソースコードを用いて再コンパイルして新たな実行バイナリファイルを作成し（ステップＳ１８０８）、処理を終了する。すなわち、新規実行バイナリファイル作成部１５ｆは、特定されたプリフェッチ対象アドレスに対応するプログラムのソースコードを別画面で表示するボタン（図１６に示す「ソースコードの表示」参照）を分析者が押下して確認し、さらに、図１６に示す「プリフェッチ命令の挿入」のボタンが押下されたことを受け付けると、ソースコードを用いて再コンパイルした新たな実行バイナリファイルを作成する。これにより、新たな実行バイナリファイルを作成され、プリフェッチ命令が自動挿入される。
【０１２９】
［実施例３の効果］
上記したように、実施例３によれば、監視されたＣＰＵの処理状況であるＣＰＩを出力して、プログラムの繰り返し地点として予測される経過時刻を入力部４０から受け付け、受け付けた経過時間に基づいて前記周期を決定するので、プログラマは、ＣＰＵの処理状況を容易に把握して、プログラムの周期を決定することができ、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【０１３０】
また、実施例３によれば、特定されたプリフェッチ対象アドレスとプリフェッチ位置とを、ソースコードを用いて再コンパイルして新たな実行バイナリファイルを作成するので、適切なプリフェッチ処理が挿入されたプログラムが自動的に生成でき、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【実施例４】
【０１３１】
さて、これまで実施例１〜３における計算機システムについて説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてもよいものである。そこで、以下では、実施例４における計算機システムとして、種々の異なる実施例を（１）〜（４）に区分けして説明する。
【０１３２】
（１）新規実行バイナリファイル作成部
上記の実施例３では、分析者（プログラマ）によって特定されたプリフェッチ対象アドレスとプリフェッチ位置とを、ソースコードを用いて再コンパイルして新たな実行バイナリファイルを作成する場合について説明したが、本発明はこれに限定されるものではなく、実施例１および実施例２において、プリフェッチ制御部１５が特定したプリフェッチ対象アドレスとプリフェッチ位置とを、ソースコードを用いて再コンパイルして新たな実行バイナリファイルを作成する場合であってもよい。
【０１３３】
（２）ＣＰＵ監視部および周期決定部
上記の実施例１〜３では、ＣＰＵ監視部１５ａがＣＰＵの処理状況として所定の時間内におけるＣＰＩを監視し、周期決定部１５ｃがＣＰＩに基づいて周期を決定する場合について説明したが、本発明はこれに限定されるものではなく、ＣＰＵ監視部１５ａがＣＰＵの処理状況として、ＣＰＩに加えて、例えば、ＣＰＵが、当該所定の時間内にプログラムの命令を処理した際にキャッシュミスをした頻度であるキャッシュミス頻度をさらに監視し、周期決定部１５ｃがＣＰＩとキャッシュミス頻度を参照して周期を決定する場合であってもよい。
【０１３４】
これにより、ＣＰＩおよびキャッシュミス頻度を参照して精度の高い周期を特定することができ、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になる。
【０１３５】
（３）システム構成等
また、上記の実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動でおこなうこともでき（例えば、実施例１および２において、自動的に周期の決定を行なうのではなく、所定の時間が経過した時点で、プログラマが周期の決定要求を行なうなど）、あるいは、手動的におこなうものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。例えば、この他、上記文章中や図面中で示した処理手順、具体的名称、各種のデータやパラメータを含む情報（例えば、実施例１における、特定部１５ｄが解析する対象を、キャッシュミス回数を２回以上とするのではなく、５回以上とするなど）については、特記する場合を除いて任意に更新することができる。
【０１３６】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各処理部および各記憶部の分散・統合の具体的形態（例えば、図３の形態など）は図示のものに限られず、例えば、周期決定部１５ｃと特定部１５ｄとを統合するなど、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【０１３７】
（４）プリフェッチ処理プログラム
ところで上記の実施例１〜３では、ハードウェアロジックによって各種の処理を実現する場合を説明したが、本発明はこれに限定されるものではなく、あらかじめ用意されたプログラムをコンピュータで実行するようにしてもよい。そこで以下では、図１９を用いて、上記の実施例１に示した計算機システム１と同様の機能を有するプリフェッチ処理プログラムを実行するコンピュータの一例を説明する。図１９は、実施例１におけるプリフェッチ処理プログラムを実行するコンピュータを示す図である。
【０１３８】
図１９に示すように、情報処理装置としてのコンピュータ１９０は、キーボード１９１、ディスプレイ１９２、ＣＰＵ１９３、ＲＯＭ１９４、ＨＤＤ１９５およびＲＡＭ１９６をバス１９７などで接続して構成され、さらにＣＰＵ１０と、メインメモリ２０と、キャッシュメモリ３０とに接続される。
【０１３９】
ＲＯＭ１９４には、上記の実施例１に示した計算機システム１と同様の機能を発揮するプリフェッチ処理プログラム、つまり、図１９に示すように、ＣＰＵ監視プログラム１９４ａ、キャッシュミスデータアドレス取得プログラム１９４ｂ、周期決定プログラム１９４ｃ、特定プログラム１９４ｄ、プリフェッチ処理制御プログラム１９４ｅが予め記憶されている。なお、これらのプログラム１９４ａ〜１９４ｅについては、図３に示した計算機システム１の各構成要素と同様、適宜統合または分散してもよい。
【０１４０】
そして、ＣＰＵ１９３が、これらのプログラム１９４ａ〜１９４ｅをＲＯＭ１９４から読みだして実行することで、図１９に示すように、各プログラム１９４ａ〜１９４ｅはＣＰＵ監視プロセス１９３ａ、キャッシュミスデータアドレス取得プロセス１９３ｂ、周期決定プロセス１９３ｃ、特定プロセス１９３ｄ、プリフェッチ処理制御プロセス１９３ｅとして機能するようになる。なお、各プロセス１９３ａ〜１９３ｅは、図３に示した、ＣＰＵ監視部１５ａ、キャッシュミスデータアドレス取得部１５ｂ、周期決定部１５ｃと、特定部１５ｄ、プリフェッチ処理制御部１５ｅにそれぞれ対応する。
【０１４１】
また、ＨＤＤ１９５には、図１９に示すように、メモリアクセス遅延時間データ１９５ａが設けられる。このメモリアクセス遅延時間データ１９５ａは、図３に用いたメモリアクセス遅延時間記憶部１４ｄに対応する。そしてＣＰＵ１９３は、メモリアクセス遅延時間データ１９６ｄをメモリアクセス遅延時間データ１９５ａに対して登録し、このメモリアクセス遅延時間データ１９６ｄを読み出してＲＡＭ１９に格納し、ＲＡＭ１９６に格納されたＣＰＵ監視結果データ１９６ａと、キャッシュミスデータアドレスデータ１９６ｂと、決定周期データ１９６ｃと、メモリアクセス遅延時間データ１９６ｄと、特定結果データ１９６ｅとに基づいてプリフェッチ処理を実行する。
【０１４２】
なお、上記した各プログラム１９４ａ〜１９４ｅについては、必ずしも最初からＲＯＭ１９４に記憶させておく必要はなく、例えばコンピュータ１９０に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」、または、コンピュータ１９０の内外に備えられるＨＤＤなどの「固定用物理媒体」、さらには、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１９０に接続される「他のコンピュータ（またはサーバ）」などに各プログラムを記憶させておき、コンピュータ１９０がこれらから各プログラムを読み出して実行するようにしてもよい。
【０１４３】
（付記１）ＣＰＵがプログラムを実行する際に用いられるデータをメインメモリからキャッシュメモリに予め格納するプリフェッチ処理を行うプリフェッチ処理装置であって、
前記プログラムが実行される際に、当該プログラムを実行する前記ＣＰＵの処理状況を前記プログラムの実行開始時からの経過時刻に対応付けて監視するＣＰＵ監視手段と、
前記プログラムが実行される際に、キャッシュミスにより前記メインメモリにアクセスしたデータのアドレスであるキャッシュミスデータアドレスを前記プログラムの実行開始時からの経過時刻に対応付けて取得するキャッシュミスデータアドレス取得手段と、
前記ＣＰＵ監視手段によって監視された前記ＣＰＵの処理状況から、当該プログラムを実行するのに要する時間である周期を決定する周期決定手段と、
前記周期決定手段によって決定された前記周期と、前記キャッシュミスデータアドレス取得手段によって取得された前記キャッシュミスデータアドレスとを突き合わせて、プリフェッチ処理を行うデータのアドレスであるプリフェッチ対象アドレスをプリフェッチする周期内の位置であるプリフェッチ位置を特定する特定手段と、
を備えたことを特徴とするプリフェッチ処理装置。
【０１４４】
（付記２）前記特定手段によって特定された前記プリフェッチ対象アドレスと前記プリフェッチ位置とに基づいて、前記プログラムの実行中に当該プリフェッチ対象アドレスに対応するデータを前記メインメモリからプリフェッチ処理するように制御するプリフェッチ処理制御手段をさらに備えたことを特徴とする付記１に記載のプリフェッチ処理装置。
【０１４５】
（付記３）前記ＣＰＵ監視手段は、前記ＣＰＵの処理状況として、前記ＣＰＵが、所定の時間内に前記プログラムの１命令を処理するのに要した平均クロック数、および／または、前記ＣＰＵが、当該所定の時間内に前記プログラムの命令を処理した際にキャッシュミスをした頻度であるキャッシュミス頻度をさらに監視し、
前記周期決定手段は、前記平均クロック数および／または前記キャッシュミス頻度を参照して前記周期を決定することを特徴とする付記１または２に記載のプリフェッチ処理装置。
【０１４６】
（付記４）前記周期決定手段は、前記ＣＰＵ監視手段によって監視された所定の時間内の前記平均クロック数と、当該所定の時間内で最もキャッシュミス回数が多かったキャッシュミスデータアドレスに基づいて、前記周期を決定することを特徴とする付記３に記載のプリフェッチ処理装置。
【０１４７】
（付記５）前記周期決定手段は、前記ＣＰＵ監視手段によって監視された前記ＣＰＵの処理状況を統計処理により所定の個数にグループ分けし、当該所定の個数に分けられたグループの繰り返しの様相に基づいて、前記周期を決定することを特徴とする付記１〜３のいずれか一つに記載のプリフェッチ処理装置。
【０１４８】
（付記６）前記ＣＰＵ監視手段によって監視された前記ＣＰＵの処理状況を出力して、前記プログラムの繰り返し地点として予測される経過時刻を所定の入力部から受け付ける経過時刻受け付け手段をさらに備え、
前記周期決定手段は、前記経過時刻受け付け手段によって受け付けた前記経過時間に基づいて前記周期を決定することを特徴とする付記１または２に記載のプリフェッチ処理装置。
【０１４９】
（付記７）前記特定手段によって特定された前記プリフェッチ対象アドレスと前記プリフェッチ位置とを、ソースコードを用いて再コンパイルして新たな実行バイナリファイルを作成する新規実行バイナリファイル作成手段をさらに備えたことを特徴とする付記１〜６のいずれか一つに記載のプリフェッチ処理装置。
【０１５０】
（付記８）ＣＰＵがプログラムを実行する際に用いられるデータをメインメモリからキャッシュメモリに予め格納するプリフェッチ処理方法をコンピュータに実行させるプリフェッチ処理プログラムであって、
前記プログラムが実行される際に、当該プログラムを実行する前記ＣＰＵの処理状況を前記プログラムの実行開始時からの経過時刻に対応付けて監視するＣＰＵ監視手順と、
前記プログラムが実行される際に、キャッシュミスにより前記メインメモリにアクセスしたデータのアドレスであるキャッシュミスデータアドレスを前記プログラムの実行開始時からの経過時刻に対応付けて取得するキャッシュミスデータアドレス取得手順と、
前記ＣＰＵ監視手順によって監視された前記ＣＰＵの処理状況から、当該プログラムを実行するのに要する時間である周期を決定する周期決定手順と、
前記周期決定手順によって決定された前記周期と、前記キャッシュミスデータアドレス取得手順によって取得された前記キャッシュミスデータアドレスとを突き合わせて、プリフェッチ処理を行うデータのアドレスであるプリフェッチ対象アドレスをプリフェッチする周期内の位置であるプリフェッチ位置を特定する特定手順と、
をコンピュータに実行させることを特徴とするプリフェッチ処理プログラム。
【０１５１】
（付記９）前記特定手順によって特定された前記プリフェッチ対象アドレスと前記プリフェッチ位置とに基づいて、前記プログラムの実行中に当該プリフェッチ対象アドレスに対応するデータを前記メインメモリからプリフェッチ処理するように制御するプリフェッチ処理制御手順をさらに備えたことを特徴とする付記８に記載のプリフェッチ処理プログラム。
【０１５２】
（付記１０）ＣＰＵがプログラムを実行する際に用いられるデータをメインメモリからキャッシュメモリに予め格納するプリフェッチ処理方法であって、
前記プログラムが実行される際に、当該プログラムを実行する前記ＣＰＵの処理状況を前記プログラムの実行開始時からの経過時刻に対応付けて監視するＣＰＵ監視工程と、
前記プログラムが実行される際に、キャッシュミスにより前記メインメモリにアクセスしたデータのアドレスであるキャッシュミスデータアドレスを前記プログラムの実行開始時からの経過時刻に対応付けて取得するキャッシュミスデータアドレス取得工程と、
前記ＣＰＵ監視工程によって監視された前記ＣＰＵの処理状況から、当該プログラムを実行するのに要する時間である周期を決定する周期決定工程と、
前記周期決定工程によって決定された前記周期と、前記キャッシュミスデータアドレス取得工程によって取得された前記キャッシュミスデータアドレスとを突き合わせて、プリフェッチ処理を行うデータのアドレスであるプリフェッチ対象アドレスをプリフェッチする周期内の位置であるプリフェッチ位置を特定する特定工程と、
を含んだことを特徴とするプリフェッチ処理方法。
【産業上の利用可能性】
【０１５３】
以上のように、本発明に係るプリフェッチ処理装置、プリフェッチ処理プログラムおよびプリフェッチ処理方法は、ＣＰＵがプログラムを実行する際に用いられるデータをメインメモリからキャッシュメモリに予め格納するプリフェッチ処理を行う場合に有用であり、特に、プログラムの実行性能を向上させるのに有効的なプリフェッチ処理を行うことが可能になることに適する。
【図面の簡単な説明】
【０１５４】
【図１】実施例１における計算機システムの概要を説明するための図である。
【図２】実施例１における計算機システムの特徴を説明するための図である。
【図３】実施例１における計算機システムの構成を示すブロック図である。
【図４】実施例１におけるＣＰＵ監視部を説明するための図である。
【図５】実施例１におけるＣＰＵ監視結果記憶部を説明するための図である。
【図６】実施例１におけるキャッシュミスデータアドレス記憶部を説明するための図である。
【図７】実施例１における周期決定部を説明するための図である。
【図８】実施例１における決定周期記憶部を説明するための図である。
【図９】実施例１における特定部を説明するための図である。
【図１０】実施例１における計算機システムの処理を説明するための図である。
【図１１】実施例２における計算機システムの概要および特徴を説明するための図である。
【図１２】実施例２における計算機システムの構成を示すブロック図である。
【図１３】実施例２におけるＣＰＵ監視結果記憶部を説明するための図である。
【図１４】実施例２におけるキャッシュミスデータアドレス記憶部を説明するための図である。
【図１５】実施例２における特定部を説明するための図である。
【図１６】実施例３における計算機システムの概要および特徴を説明するための図である。
【図１７】実施例３における計算機システムの構成を示すブロック図である。
【図１８】実施例３における計算機システムの処理を説明するための図である。
【図１９】実施例１のプリフェッチ処理プログラムを実行するコンピュータを示す図である。
【符号の説明】
【０１５５】
１  計算機システム
１０  ＣＰＵ
１１  命令制御部
１２  演算部
１３  メモリアクセス部
１４  プリフェッチ制御用記憶部
１４ａ  ＣＰＵ監視結果記憶部
１４ｂ  キャッシュミスデータアドレス記憶部
１４ｃ  決定周期記憶部
１４ｄ  メモリアクセス遅延時間記憶部
１４ｅ  特定結果記憶部
１５  プリフェッチ制御部
１５ａ  ＣＰＵ監視部
１５ｂ  キャッシュミスデータアドレス取得部
１５ｃ  周期決定部
１５ｄ  特定部
１５ｅ  プリフェッチ処理制御部
２０  メインメモリ
３０  キャッシュメモリ
【図１】
2008226025.tif 000003
【図２】
2008226025.tif 000004
【図３】
2008226025.tif 000005
【図４】
2008226025.tif 000006
【図５】
2008226025.tif 000007
【図６】
2008226025.tif 000008
【図７】
2008226025.tif 000009
【図８】
2008226025.tif 000010
【図９】
2008226025.tif 000011
【図１０】
2008226025.tif 000012
【図１１】
2008226025.tif 000013
【図１２】
2008226025.tif 000014
【図１３】
2008226025.tif 000015
【図１４】
2008226025.tif 000016
【図１５】
2008226025.tif 000017
【図１６】
2008226025.tif 000018
【図１７】
2008226025.tif 000019
【図１８】
2008226025.tif 000020
【図１９】
2008226025.tif 000021