(57)【特許請求の範囲】
【請求項１】
演算装置と主記憶装置とキャッシュ装置を含む情報処理装置であって、
前記演算装置からのプリフェッチ命令によるキャッシュフィル実行中により遅延が発生した前記キャッシュ装置に対するロード命令を検出し、少なくとも検出した前記ロード命令がプリフェッチ命令によるキャッシュフィルによって待機した時間を計測する機能を有することを特徴する情報処理装置。
【請求項２】
前記キャッシュ装置が、プリフェッチ命令によるキャッシュフィル実行中により遅延が発生した前記ロード命令を検出する遅延検出手段を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記キャッシュ装置の前記遅延検出手段が、
キャッシュヒットした前記ロード命令が、プリフェッチ命令によるキャッシュフィル実行中のエントリを参照した場合に、当該ロード命令を、プリフェッチ命令によるキャッシュフィル実行中により遅延が発生したロード命令として検出し、前記演算装置に検出信号を出力することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記キャッシュ装置の各エントリに、前記各エントリがキャッシュフィル実行中であるかどうかを示すフラグと、前記各エントリがプリフェッチ実行中であるかどうかを示すフラグを設け、
前記遅延検出手段は、キャッシュフィル実行中であるかどうかを示す前記フラグと、前記プリフェッチ実行中であるかどうかを示す前記フラグに基づいて前記ロード命令がプリフェッチ命令によるキャッシュフィル実行中のエントリを参照したかどうかを検出することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記演算装置が、前記キャッシュ装置の遅延検出手段からの検出信号の継続時間を計時するタイマを備えることを特徴とする請求項１から請求項４の何れかに記載の情報処理装置。
【請求項６】
演算装置と主記憶装置とキャッシュ装置を含む情報処理装置におけるロード命令の遅延判定方法であって、
前記演算装置からのプリフェッチ命令によるキャッシュフィル実行中により遅延が発生した前記キャッシュ装置に対するロード命令を検出するステップと、
少なくとも検出したロード命令がプリフェッチ命令によるキャッシュフィルによって待機した時間を計測するステップと
を有することを特徴するロード命令の遅延判定方法。
【請求項７】
前記キャッシュ装置によって、プリフェッチ命令によるキャッシュフィル実行中により遅延が発生した前記ロード命令を検出する遅延検出ステップを有することを特徴とする請求項６に記載のロード命令の遅延判定方法。
【請求項８】
前記遅延検出ステップで、
キャッシュヒットした前記ロード命令が、プリフェッチ命令によるキャッシュフィル実行中のエントリを参照した場合に、当該ロード命令を、プリフェッチ命令によるキャッシュフィル実行中により遅延が発生したロード命令として検出し、前記演算装置に検出信号を出力することを特徴とする請求項７に記載のロード命令の遅延判定方法。
【請求項９】
前記キャッシュ装置の各エントリに、前記各エントリがキャッシュフィル実行中であるかどうかを示すフラグと、前記各エントリがプリフェッチ実行中であるかどうかを示すフラグを設け、
前記遅延検出ステップで、キャッシュフィル実行中であるかどうかを示す前記フラグと、前記プリフェッチ実行中であるかどうかを示す前記フラグに基づいて前記ロード命令がプリフェッチ命令によるキャッシュフィル実行中のエントリを参照したかどうかを検出することを特徴とする請求項８に記載のロード命令の遅延判定方法。
【請求項１０】
前記演算装置が、
前記キャッシュ装置の遅延検出手段からの検出信号の継続時間を計時するステップを有することを特徴とする請求項６から請求項９の何れかに記載のロード命令の遅延判定方法。
【請求項１１】
演算装置と主記憶装置とキャッシュ装置を含む情報処理装置で実行されるロード命令の遅延判定プログラムであって、
前記演算装置からのプリフェッチ命令によるキャッシュフィル実行中により遅延が発生した前記キャッシュ装置に対するロード命令を検出する機能と、
少なくとも検出した前記ロード命令がプリフェッチ命令によるキャッシュフィルによって待機した時間を計測する機能とを、前記情報処理装置に実行させることを特徴するロード命令の遅延判定プログラム。
【請求項１２】
前記キャッシュ装置に、プリフェッチ命令によるキャッシュフィル実行中により遅延が発生した前記ロード命令の発生を検出する遅延検出機能を実行させることを特徴とする請求項１１に記載のロード命令の遅延判定プログラム。
【請求項１３】
前記遅延検出機能で、
キャッシュヒットした前記ロード命令が、プリフェッチ命令によるキャッシュフィル実行中のエントリを参照した場合に、当該ロード命令を、プリフェッチ命令によるキャッシュフィル実行中により遅延が発生したロード命令として検出し、前記演算装置に検出信号を出力することを特徴とする請求項１２に記載のロード命令の遅延判定プログラム。
【請求項１４】
前記キャッシュ装置の各エントリに、前記各エントリがキャッシュフィル実行中であるかどうかを示すフラグと、前記各エントリがプリフェッチ実行中であるかどうかを示すフラグを設け、
前記遅延検出機能で、キャッシュフィル実行中であるかどうかを示す前記フラグと、プリフェッチ実行中であるかどうかを示す前記フラグに基づいて前記ロード命令がプリフェッチ命令によるキャッシュフィル実行中のエントリを参照したかどうかを検出することを特徴とする請求項１３に記載のロード命令の遅延判定プログラム。
【請求項１５】
前記演算装置に、
前記キャッシュ装置の遅延検出機能からの検出信号の継続時間を計時する機能を実行させることを特徴とする請求項１１から請求項１４の何れかに記載のロード命令の遅延判定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、特にプログラムを作成するユーザにプリフェッチ命令の挿入位置を修正するための指標を与える情報処理装置、ロード命令の遅延判定方法、ロード命令の遅延判定プログラムに関する。
【背景技術】
【０００２】
近年の技術において、メモリ帯域の向上率は、中央演算処理部の性能向上率に比較して小さい。従って、コンピュータシステムの性能向上のために、メモリ帯域の有効利用は非常に重要である。
【０００３】
一方、プリフェッチ命令は、ロード命令に先行して実行されることにより、ロード命令のキャッシュヒット率を向上させ、それにより、プログラム（ジョブ）の性能向上を図る命令である。
【０００４】
従い、適切なタイミングでプリフェッチ命令を実行することは、ロード命令がメモリ帯域を使用しない時間区間のメモリ帯域の有効利用を可能にするため、近年のコンピュータシステムにおいては、適切なタイミングでプリフェッチ命令を実行することが性能向上のために重要な課題となっている。
来の研究、開発、論文は、このタイミングが自動で適切になるように制御するハードウェア機構、言語翻訳装置（コンパイラ）を提案している。
【０００５】
これまでの関連技術においては、プリフェッチ命令の実行位置決定が自働で適切になるように制御するコンパイラ、及びハードウェア機構についての技術が複数提案されている。
【０００６】
例えば、特許文献１に開示の技術は、ハードウェアが、過去のメモリアクセスの履歴から、プリフェッチ命令の最適な実行位置を予測し、プログラム実行時に動的にプリフェッチ命令を命令列中に埋め込むことを可能としている。
【０００７】
しかし、特許文献１に記載の技術においては、プリフェッチ命令の実行位置が適切か否かの情報は、ユーザに提供されないため、ユーザが、ジョブの実行結果からプリフェッチ命令の実行位置が適切かを判断し、プリフェッチ命令の挿入位置を適切に修正することはできない。
【０００８】
なお、プリフェッチ命令が有効に働かない状態は、下記２つの状態である。
【０００９】
まず、第１の状態は、プリフェッチ命令がロード命令に対して早すぎる位置で実行されたために、ロード命令実行前に、プリフェッチされたデータが、キャッシュ外に追い出された場合である。この状態は、従来のキャッシュミスカウンタで計測が可能である。
【００１０】
第２の状態は、プリフェッチ命令がロード命令に対して遅すぎる位置で実行されたために、ロード命令実行前に、プリフェッチ命令によるキャッシュフィルが終了していない場合である。この状態は、これまでの関連技術においては、第１の状態におけるキャッシュミスカウンタに含まれてカウントされるか、全く観測されないかのいずれかである。図１０、図１１に、この状態を示す。
【００１１】
図１０は、データがプリフェッチされるまでロード命令を留めている場合を示しており、図１１は、データがプリフェッチされるのを待たず、メインメモリからデータを取得している場合を示している。
【００１２】
また、図９に、プリフェッチ命令実行位置の好例を示す。図９においては、プリフェッチ命令よりデータがキャッシュにプリフェッチされた後にロード命令がキャッシュに届いているため、ロード命令はキャッシュからデータを取得することができている。
【００１３】
なお、キャッシュミスをカウントするカウンタについての技術は複数開示されており、さらに、キャッシュミスがどのような場合かまで計測するカウンタが、特許文献２に開示されている。
【００１４】
特許文献２に開示の技術は、カウンタが、プリフェッチ後のロード命令時において、要求するデータがプリフェッチ領域の上側の非領域にすべて存在する場合、あるいはプリフェッチ領域の上側の非領域とキャッシュ領域にまたがって存在する場合、あるいはプリフェッチ領域の下側の非プリフェッチ領域にすべて存在する場合、あるいはプリフェッチ領域の下側の非領域とキャッシュ領域にまたがって存在する場合、そしてプリフェッチ領域に存在する場合とを別々に計測することを可能としている。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００４−０３８３４５
【特許文献２】特開２００８−０６１１５１
【発明の概要】
【発明が解決しようとする課題】
【００１６】
上述した関連技術の問題点は、上述した第２の状態、つまり、先行するプリフェッチ命令に基づくキャッシュフィルの実行中によりロード命令に遅延が発生する場合を、キャッシュミスとしてカウントしてしまうか、あるいは無視してしまうため、プリフェッチ命令によるロード命令の遅延を通常のキャッシュミスの場合と分けて正確に計測することが困難であるということである。
【００１７】
（発明の目的）
本発明の目的は、上述した課題である、プリフェッチ命令に基づくキャッシュフィルの実行中によりロード命令に遅延が発生する場合を個別に計測できないという問題を解決し、プログラムを作成するユーザにプリフェッチ命令の挿入位置を修正するための指標を与える情報処理装置、ロード命令の遅延判定方法、ロード命令の遅延判定プログラムに関する。
【課題を解決するための手段】
【００１８】
本発明の第１の情報処理装置は、演算装置と主記憶装置とキャッシュ装置を含む情報処理装置であって、演算装置からのプリフェッチ命令によるキャッシュフィル実行中により遅延が発生したキャッシュ装置に対するロード命令を検出し、検出したロード命令の発生回数又は継続時間を取得する機能を有する。
【００１９】
本発明の第１のロード命令の遅延判定方法は、演算装置と主記憶装置とキャッシュ装置を含む情報処理装置におけるロード命令の遅延判定方法であって、演算装置からのプリフェッチ命令によるキャッシュフィル実行中により遅延が発生したキャッシュ装置に対するロード命令を検出するステップと、検出したロード命令の発生回数又は継続時間を取得するステップとを有する。
【００２０】
本発明の第１のロード命令の遅延判定プログラムは、演算装置と主記憶装置とキャッシュ装置を含む情報処理装置で実行されるロード命令の遅延判定プログラムであって、演算装置からのプリフェッチ命令によるキャッシュフィル実行中により遅延が発生したキャッシュ装置に対するロード命令を検出する機能と、検出したロード命令の発生回数又は継続時間を取得する機能とを、情報処理装置に実行させる。
【発明の効果】
【００２１】
本発明によれば、プログラムを作成するユーザにプリフェッチ命令の挿入位置を修正するための指標を与える情報処理装置、ロード命令の遅延判定方法、ロード命令の遅延判定プログラムを提供することができる。
【００２２】
その理由は、先行するプリフェッチ命令に基づくキャッシュフィルの実行中によりロード命令に遅延が発生する回数及び遅延時間を計測するからである。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第１の実施の形態におけるキャッシュ装置の構成を示す図である。
【図３】本発明の第１の実施の形態における演算装置の構成を示す図である。
【図４】本発明の第１の実施の形態におけるキャッシュ検索の動作を示したフローチャートである。
【図５】本発明の第１の実施の形態におけるプリフェッチ命令発行時の動作を示したフローチャートである。
【図６】本発明の第１の実施の形態におけるキャッシュフィル中におけるロード命令発行時の動作を示したフローチャートである。
【図７】本発明の第１の実施の形態における検出信号受信時の演算装置の動作を示したフローチャートである。
【図８】本発明のコンピュータシステムのハードウェア構成例を示すブロック図である。
【図９】関連技術によるプリフェッチ実行位置の好例を示す図である。
【図１０】関連技術によるプリフェッチ命令とロード命令の実行位置の例を示す図である。
【図１１】関連技術によるプリフェッチ命令とロード命令の実行位置の例を示す図である。
【発明を実施するための形態】
【００２４】
次に、本発明の実施の形態について、図１〜図３を参照して詳細に説明する。
【００２５】
（第１の実施の形態）
図１は、本発明の第１の実施の形態の構成を示す図であり、図２は、キャッシュ装置１２の構成を示す図である。また、図３は、演算装置１１の構成を示す図である。
【００２６】
図１を参照すると、本実施の形態は、プログラムコード２０、コンパイラ３０、及び情報処理装置１０を備える。
【００２７】
プログラムコード２０は、情報処理装置１０の利用者が記述したプログラムのコードある。プログラムコード２０は、プリフェッチ命令挿入の指示行（プリフェッチ命令指示行）を含むものとする。
【００２８】
コンパイラ３０は、プログラムコード２０を情報処理装置１０が実行する形式である命令コード３０１に翻訳して出力する機能を有する。
【００２９】
またコンパイラ３０は、プリフェッチ命令の指示行を解釈する機能を有する。コンパイラ３０は、例えば、C/C++/Fortranのcompiler等を想定している。また、該指示行は、プリフェッチ命令の実行位置を指定するパラメータを備える。
【００３０】
言語翻訳機は、プログラムコード２０内のプリフェッチ命令指示行に従い、命令コード３０１の命令列中に、プリフェッチ命令を挿入する．
【００３１】
コンパイラ３０が翻訳して出力した命令コード３０１は、主記憶装置１３へ格納される。
【００３２】
情報処理装置１０は、情報処理や制御を行う演算装置１１と、データを一時的に保持するキャッシュ装置１２と、データを格納する主記憶装置１３とを備える。
【００３３】
演算装置１１は、キャッシュ装置１２に対し、命令フィッチ１００、プリフェッチ命令１０５、ロード命令１０７を送出し、また、キャッシュ装置１２から、命令コード１０３、検出信号１１０、ロードデータ１１２を受信する。
【００３４】
キャッシュ装置１２は、上述したように演算装置１１と命令及びデータのやりとりをおこない、かつ、主記憶装置に対し、命令フェッチ１０１、プリフェッチ命令１０６、ロード命令１０８を送出し、また、命令コード１０４、プリフェッチデータ１０９、ロードデータ１１１を受信する。
【００３５】
なお、命令フェッチ１００と１０１、命令コード１０３と１０４、プリフェッチ命令１０５と１０６、ロード命令１０７と１０８、ロードデータ１１１と１１２は同一のものであり、便宜上符号を分けているものである。
【００３６】
命令フィッチ１００は、命令コード１０３を要求する命令である。
【００３７】
命令コード１０３及び１０４は、コンパイラ３０によって出力され、主記憶装置１３に格納されたものと同一である。
【００３８】
プリフェッチ命令１０５及び１０６は、データのプリフェッチを要求する命令で、プリフェッチを行うデータのアドレスを含む。
【００３９】
ロード命令１０７及び１０８は、データのロードを要求する命令で、ロードを行うデータのアドレスを含む。
【００４０】
プリフェッチデータ１０９は、プリフェッチ命令１０６に応じて主記憶装置１３から送出されるデータである。
【００４１】
ロードデータ１１１は、ロード命令１０８に応じて主記憶装置１３から送出されるデータである。
【００４２】
検出信号１１０は、後述するカウンタ１０１０の計数、及びタイマ１０１４の計測開始及び終了のトリガとなる信号である。
【００４３】
次に、図２を参照すると、まず、プリフェッチ命令１０５及びロード命令１０７は、命令アドレス部１００３を有し、該命令アドレス部１００３のタグ１０００、インデックス１００１、オフセット１００２にまたがって、プリフェッチまたはロードを行うデータのアドレスを格納している。
【００４４】
キャッシュ装置１２は、一時保存するデータをある程度まとまった単位で管理し、これをキャッシュエントリ１１３と呼ぶ。
【００４５】
キャッシュエントリ１１３はバリッドフラグ１００４、キャッシュフィルフラグ１００５、キャッシュタグ部１００７、キャッシュデータ部１００８から構成される。
【００４６】
バリッドフラグ１００４は、プリフェッチが実行中か否かを示すフラグであり、プリフェッチ実行中は値が０となり、プリフェッチが実行中でない場合は値が１となる。
【００４７】
キャッシュフィルフラグ１００５は、キャッシュフィルが実行中であるか否かを示すフラグであり、キャッシュフィル実行中は値が１となり、キャッシュフィル実行中でない場合は値が０となる。なお、キャッシュフィルとは、主記憶装置１３のデータをキャッシュ装置１２へ読み込むことをいう。
【００４８】
キャッシュタグ部は、キャッシュエントリ１１３のアドレスを格納する。
【００４９】
キャッシュデータ部１００８は、キャッシュエントリ１１３にキャッシュフィルされたデータを格納する。
【００５０】
また、キャッシュ装置１２は、プリフェッチ命令１０５によりキャッシュフィルの実行中であるキャッシュエントリ１１３を、後続のロード命令１０７が参照する条件を検出する検出信号生成部１００６を含む。
【００５１】
検出信号生成部１００６は、ＡＮＤ回路の機能を有し、後述するバリッドフラグ１００４のフラグ値の論理否定と、キャッシュフィルフラグ１００５のフラグ値と、キャッシュヒット又はキャッシュミスの論理値を入力する。なお、キャッシュヒットは論理値１、キャッシュミスは論理値０とする。
【００５２】
検出信号生成部１００６は、バリッドフラグ１００４のフラグ値の論理否定と、キャッシュフィルフラグ１００５のフラグ値と、キャッシュヒットの場合の論理値、入力する値がすべて１の時、値１の検出信号１１０を出力し、それ以外の場合は、値０の検出信号１１０を出力する。
【００５３】
次に、図３を参照すると、演算装置１１は、微分回路１０１１と、セレクタ１０１２と、微分回路有効モード１０１３と、カウンタ１０１０と、タイマ１０１４を備える。
【００５４】
微分回路１０１１は、出力信号が入力信号の導関数になるように設計した回路である。
【００５５】
微分回路１０１１は、キャッシュ装置１２から検出信号１１０を入力し、入力した検出信号１１０の微分形の信号である微分回路出力信号１１４を出力する。
【００５６】
なお、微分回路１０１１は、キャッシュ装置１２内の検出信号生成部１００６と、演算装置１１の間に備えられればよい。
【００５７】
すなわち、本実施の形態では、微分回路１０１１は、演算装置１１内に備えられていが、これに制限されるものではなく、キャッシュ装置１２内に備えたり、また、キャッシュ装置１１と演算装置の間に別途装置を設け、該装置に備えたりする構成とすることも可能である。
【００５８】
また、微分回路１０１１を用いずに検出信号生成部１００６において微分回路出力信号１１４と同等のパルス信号を生成する実装や、微分回路１０１１及びカウンタ１０１０を用いずに、タイマ１０１４で時間のみを計測する実装も可能である。すなわち、本実施の形態は、本発明の実装形態を限定するものでもない。
【００５９】
微分回路有効モード１０１３は、セレクタ１０１２が出力する信号を決めるモードである。
【００６０】
セレクタ１０１２は、複数の入力信号の一つだけを出力する回路である。
【００６１】
セレクタ１０１２は、キャッシュ装置１２から検出信号１１０を入力し、また、微分回路１０１１から微分回路出力信号１１４を入力する。
【００６２】
また、セレクタ１０１２は、検出信号１１０と微分回路出力信号１１４のいずれかを、微分回路有効モード１０１３に従ってカウンタ１０１０又はタイマ１０１４へ出力する。
【００６３】
微分回路有効モード１０１３は、何を計測したいかによって任意に設定可能である。本実施の形態においては、検出信号が０から１に変化した回数を計数したい場合、微分回路有効モード１０１３のモードをモード１に設定する。検出信号１１０が０から１に変化した回数とは、すなわち、プリフェッチ命令１０５によるキャッシュフィル中のキャッシュエントリ１１３を後続のロード命令１０７が参照した回数をいう。
【００６４】
また、検出信号１１０が１である時間を計測したい場合、微分回路有効モード１０１３のモードをモード０に設定する。検出信号１１０が１である時間とは、すなわち、プリフェッチ命令１０５によるキャッシュフィルによって後続のロード命令１０７が待機した時間をいう。
【００６５】
具体的には、セレクタ１０１２は、微分回路有効モード１０１３のモードがモード１の場合、微分回路出力信号１１４をカウンタ１０１０へ出力し、微分回路有効モード１０１３のモードがモード０の場合、検出信号１１０をタイマ１０１４へ出力する。
【００６６】
カウンタ１０１０は、計数を行う機能を有し、値１の微分回路出力信号１１４を入力したとき、＋１カウントアップする。
【００６７】
タイマ１０１４は、時間を計測する機能を有し、値１の検出信号１１０を入力したときに時間計測を開始し、値０の検出信号１１０を入力したときに時間計測を終了する。
【００６８】
なお、演算装置１１は、ロード命令１０７と、別のロード命令１０７ｂとの間のアウトオブオーダー実行条件と、プリフェッチ命令１０５と、ロード命令１０７との間のアウトオブオーダー実行条件を等しくする機能を有する。
【００６９】
また、演算装置１１は、プリフェッチ命令１０５が、主記憶装置１３のリソース不足により実行されない先行のロード命令１０７ｃを、パイプライン中で追い越さない構成を備える。
【００７０】
上述したアウトオブオーダー実行条件及びパイプライン中で追い越さない構成については、本発明の技術分野における当業者にとってよく知られており、方式そのものは本発明とは直接的には関係しないため、その詳細については省略する。
【００７１】
また、本実施の形態は、上述のパイプライン中で追い越さない構成については、好適には備えることが望ましいが、仮に備えていない場合でも、本発明の性質を損なうことはない。
【００７２】
また、演算装置１１において図示していない命令発行制御部分、レジスタ部等は、本発明の主張するところではなく、かつ当業者であれば設計可能であるため、本発明においては説明を省略する。
【００７３】
また、カウンタ１０１０、タイマ１０１４は、命令発行制御部分、レジスタ部と入出力を持つが、本発明の主張するところではなく、かつ当業者であれば容易に設計可能であるため、本発明においては説明を省略する。
【００７４】
（第１の実施の形態の動作の説明）
次に、本実施の形態の動作について、図面を参照して詳細に説明する。
【００７５】
（キャッシュ検索の動作の説明）
まず、本実施の形態によるキャッシュ検索の動作を、図２、及び図４に示すフローチャートを参照して説明する。
【００７６】
キャッシュ装置１２は、プリフェッチ命令１０５又はロード命令１０７を受信すると（ステップＳ４０１）、命令アドレス部６０のインデックス１００１と、オフセット１００２を合わせた検索アドレスを作成する（ステップＳ４０２）。
【００７７】
次いで、キャッシュ装置１２は、検索アドレスをキーに、キャッシュ検索を行う（ステップＳ４０３）。
【００７８】
キャッシュ検索の結果、該当するキャッシュエントリ１１３が存在した場合（ステップＳ４０４”ＹＥＳ”）、命令アドレス部６０のタグ１０００と、キャッシュエントリ１１３のキャッシュタグ部１００７に含まれる、タグ１０００に対応した位置のアドレスを比較する（ステップＳ４０５）。以後、この動作をタグ比較と呼ぶ。
【００７９】
タグ比較の結果、タグが一致した場合（ステップＳ４０６”ＹＥＳ”）は、キャッシュヒットとなる（ステップＳ４０７）。
【００８０】
キャッシュ検索の結果、該当するキャッシュエントリ１１３が存在しなかった場合（ステップＳ４０４”ＮＯ”）、または、検索アドレス検索の結果、該当するキャッシュエントリ１１３が存在したが、タグ比較で一致しなかった場合（ステップＳ４０４”ＹＥＳ”、ステップＳ４０６”ＮＯ”）は、キャッシュミスとなる（ステップＳ４０８）。
【００８１】
（プリフェッチ命令発行時の動作の説明）
次に、命令フィッチ１００の送出からプリフェッチ命令１０６送出までの動作を、図５に示すフローチャートを参照して説明する。なお、命令コード３０１は、既に主記憶装置１３へ格納されているものとする。
【００８２】
まず、演算装置１１は、命令フェッチ１００をキャッシュ装置１２へ送出する（ステップＳ５０１）。
【００８３】
キャッシュ装置１２は、命令フェッチ１００を受信すると、命令フェッチ１０１を主記憶装置１３へ送出する（ステップＳ５０２）。
【００８４】
主記憶装置１３は、命令フェッチ１０１を受信すると、命令コード１０３を、キャッシュ装置１２へ送出する（ステップＳ５０３）。
【００８５】
キャッシュ装置１２は、命令コード１０３を受信すると、命令コード１０４を、演算装置１１へ送出する（ステップＳ５０４）。
【００８６】
演算装置１１は、命令コード１０４を受信すると、該命令コード１０４の実行を開始する。演算装置１１は、命令コード１０４の命令列を順番に実行していく。
【００８７】
演算装置１１は、命令コード１０４の実行ラインがプリフェッチ命令であった場合、キャッシュ装置１２に対し、プリフェッチ命令１０５を送出する（ステップＳ５０５）。
【００８８】
キャッシュ装置１２は、プリフェッチ命令１０５を受信すると、キャッシュ検索を行う。キャッシュ検索の結果、キャッシュヒットした場合（ステップＳ５０６”ＹＥＳ”）、キャッシュ装置１２は、バリッドフラグ１００４を確認する（ステップＳ５０９）。
【００８９】
バリッドフラグ１００４の値が０であった場合（ステップＳ５０９”０”）、すなわち、キャッシュヒットしたキャッシュエントリ１１３がプリフェッチ実行中の場合は、キャッシュフィルが完了していない旨を示すため、キャッシュフィルフラグ１００５に１を設定し（ステップＳ５１０）、次いで、プリフェッチ命令１０５を無効化する（ステップＳ５１１）。
【００９０】
バリッドフラグ１００４の値が１であった場合（ステップＳ５０９”１”）、すなわち、キャッシュヒットしたキャッシュエントリ１１３がプリフェッチ実行中ではない場合は、プリフェッチ命令１０５で要求したデータはすでにキャッシュエントリ１１３にあるため、キャッシュ装置１２は、プリフェッチ命令１０５を無効化する（ステップＳ５１１）。
【００９１】
また、キャッシュ検索の結果、キャッシュミスした場合（ステップＳ５０６”ＮＯ”）、キャッシュ装置１２は、プリフェッチ命令１０６を、主記憶装置１３へ送出する（ステップＳ５０８）。
【００９２】
本発明は、プリフェッチ命令１０５によってキャッシュフィル中のキャッシュエントリを、後続のロード命令１０７が参照する回数、及び該キャッシュフィルが完了するまでロード命令１０７が待機する時間を計測するものであるため、以後、上述のプリフェッチ命令の動作において、キャッシュミスによりプリフェッチ命令１０６を主記憶装置１３へ送出し（ステップＳ５０８）、その後、プリフェッチ命令１０６によるキャッシュフィルが完了する前に、ロード命令１０７が発行された場合について、説明する。
【００９３】
（キャッシュフィル中におけるロード命令発行時の動作の説明）
次いで、上述したプリフェッチ命令の動作の説明において、キャッシュミスによりプリフェッチ命令１０６を主記憶装置１３へ送出した（ステップＳ５０８）後、プリフェッチ命令１０６によるキャッシュフィルが完了する前に、ロード命令１０７が送出された場合の動作を、図６に示すフローチャートを用いて説明する。
【００９４】
なお、前提として、上述した図５のステップＳ５０７に示すように、バリッドフラグ１００４は０であり、キャッシュフィルフラグ１００５は１である。また、プリフェッチ命令１０５とロード命令１０７が示すアドレスは同じものである。
【００９５】
演算装置１１は、命令コード１０３の実行ラインがロード命令であった場合、キャッシュ装置１２に対し、ロード命令１０７を送出する（ステップＳ６０１）。
【００９６】
キャッシュ装置１２は、ロード命令１０７を受信すると、キャッシュ検索を行う。
【００９７】
キャッシュ検索の結果、キャッシュミスした場合（ステップＳ６０２”ＮＯ”）、キャッシュ装置１２は、ロード命令１０８を主記憶装置１３へ送出する（ステップＳ６０３）。この場合は本発明の主張するところではなく、また、本発明の技術分野における当業者には該動作を容易に類推できるものであるため、説明を省略する。
【００９８】
キャッシュ検索の結果、キャッシュヒットした場合（ステップＳ６０２”ＹＥＳ”）、キャッシュ装置１２は、バリッドフラグ１００４を確認する（ステップＳ６０４）。
【００９９】
バリッドフラグ１００４の値が１であった場合（ステップＳ６０４”１”）、すなわち、ロード命令１０７で指定された該当キャッシュエントリ１１３がキャッシュヒットし、かつ、プリフェッチが行われていない場合は、ロード命令１０７で要求したデータはすでにキャッシュエントリ１１３にあるため、キャッシュ装置１２は、該キャッシュエントリ１１３を、ロードデータ１１２として演算装置１１へ送出する（ステップＳ６０５）。
【０１００】
バリッドフラグ１００４の値が０であった場合（ステップＳ６０４”０”）、すなわち、ロード命令１０７で指定された該当キャッシュエントリ１１３はキャッシュヒットしたが、プリフェッチ実行中の場合は、キャッシュ装置１２は、キャッシュフィルフラグ１００５を参照し、該キャッシュエントリ１１３がキャッシュフィルの最中であるか否かを確認する。
【０１０１】
そして、キャッシュフィルフラグ１００５が１の場合（ステップＳ６０６”１”）、すなわち、該キャッシュエントリ１１３がキャッシュフィルの最中である場合、検出信号生成部１００６は、検出信号１１０に１を設定し（ステップＳ６０７）、該検出信号１１０を演算装置１１へ送出する（ステップＳ６０８）。そして、キャッシュ装置１２は、ロード命令１０７を待機させ、プリフェッチデータ１０９の到着を待つ（ステップＳ６１０）。
【０１０２】
次いで、キャッシュ装置１２は、主記憶装置１３からプリフェッチデータ１０９を受信すると（ステップＳ６０９、ステップＳ６１０”ＹＥＳ”）、該プリフェッチデータ１０９をキャッシュエントリ１１３へキャッシュフィルし、バリッドフラグ１００４に１を設定する（ステップＳ６１１）。
【０１０３】
また、キャッシュ装置１２は、キャッシュフィルフラグ１００５に０を設定する（ステップＳ６１２）。
【０１０４】
また、検出信号生成部１００６は、検出信号１１０に０を設定し（ステップＳ６１３）、該検出信号１１０を、演算装置１１へ送出する（ステップＳ６１４）。
【０１０５】
そして、キャッシュ装置１２は、キャッシュエントリ１１３のデータを、ロードデータ１１２として、演算装置５１へ送出する（ステップＳ６１５）。
【０１０６】
なお、ステップＳ６０９でロードデータ１１１を受信する場合も考えられるが、その場合の動作は本発明の主張するところではなく、また、本発明の技術分野における当業者には該動作を容易に類推できるものであるため、説明を省略する。
【０１０７】
（検出信号受信時の演算装置の動作の説明）
次に、検出信号１１０受信時の演算装置１１の動作について、図７に示すフローチャートを参照して説明する。
【０１０８】
まず、演算装置１１は、上述した図６のステップＳ６０８及びステップＳ６１４でキャッシュ装置１２から送出された検出信号１１０を受信すると（ステップＳ７０１）、該検出信号１１０を、微分回路１０１１と、セレクタ１０１２へ入力する（ステップＳ７０２）。
【０１０９】
微分回路１０１１は、検出信号１１０を入力すると、入力した検出信号１１０の微分形の信号である微分回路出力信号１１４をセレクタ１０１２へ出力する（ステップＳ７０３）。
【０１１０】
次いで、セレクタ１０１２は、演算装置１１から入力した検出信号１１０と、微分回路１０１１から入力した微分回路出力信号１１４のどちらか一方を、微分回路有効モード１０１３に従い出力する（ステップＳ７０４）。
【０１１１】
微分回路有効モード１０１３がモード１の場合（ステップＳ７０４”モード１”）、セレクタ１０１２は、微分回路出力信号１１４を、カウンタ１０１０へ出力する（ステップＳ７０５）。
【０１１２】
次いで、カウンタ１０１０は、入力した微分回路出力信号１１４の値を確認する（ステップＳ７０６）。
【０１１３】
該微分回路出力信号１１４の値が１の場合（ステップＳ７０６”１”）、カウンタ１０１０は自己のカウンタを＋１カウントアップする。（ステップＳ７０９）。
【０１１４】
微分回路有効モード１０１３がモード０の場合（ステップＳ７０４”モード０”）、セレクタ１０１２は、検出信号１１０を、タイマ１０１４へ出力する（ステップＳ７０８）。
【０１１５】
次いで、タイマ１０１４は、入力した検出信号１１０の値を確認する（ステップＳ７０９）。
【０１１６】
タイマ１０１４は、検出信号１１０の値が１の場合（ステップＳ７０９”１”）、時間計測を開始する（ステップＳ７１０）。
【０１１７】
また、タイマ１０１４は、検出信号１１０の値が０の場合（ステップＳ７０９”０”）、時間計測を終了する（ステップＳ７１１）。
【０１１８】
なお、カウンタ１０１０及びタイマ１０１４の値は、演算装置１１により、外部へ提供される。提供するタイミングは、自由に設定可能であるが、好適には、命令コード１０３の実行が終了した時点で提供され、また、提供時にカウンタ１０１０及びタイマ１０１４の値はリセットされることが望ましい。
【０１１９】
（第１の実施の形態による効果）
次に本実施の形態の効果について説明する。
【０１２０】
本実施の形態によれば、先行するプリフェッチ命令に基づくキャッシュフィルの実行中によりロード命令に遅延が発生する回数及び遅延時間を、プログラムを作成するユーザに提供することができる。
【０１２１】
その理由は、先行するプリフェッチ命令に基づくキャッシュフィル実行中のキャッシュエントリをロード命令が参照した回数をカウンタ１０１０で計数し、該参照した時から、該キャッシュフィルが終了するまでの時間、すなわち、ロード命令がプリフェッチ命令に基づくキャッシュフィルの実行により待機した時間を、タイマ１０１４で計測するからである。
【０１２２】
プログラムを作成するユーザは、カウンタ１０１０及びタイマ１０１４の参照回数及び待機時間を参照し、プリフェッチ命令の挿入位置が適切かを判断し、プリフェッチ命令が実行されるタイミングを修正することができる。
【０１２３】
具体的には、カウンタ１０１０及びタイマ１０１４の値が大きい場合、プログラムを作成するユーザは、コンパイラ３０がプリフェッチ命令を命令コード１０４中のより早い位置に挿入するように、プリフェッチ命令を実行する位置を修正し、情報処理装置１０の実行性能を向上させることができる。
【０１２４】
次に、本発明のコンピュータシステム１０のハードウェア構成例について、図８を参照して説明する。図８は、コンピュータシステム１０のハードウェア構成例を示すブロック図である。
【０１２５】
図８を参照すると、コンピュータシステム１０は、一般的なコンピュータ装置と同様のハードウェア構成であり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）８０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリからなる、データの作業領域やデータの一時退避領域に用いられる主記憶部８０２、ネットワークを介してデータの送受信を行う通信部８０３、入力装置８０５や出力装置８０６及び記憶装置８０７と接続してデータの送受信を行う入出力インタフェース部８０４、上記各構成要素を相互に接続するシステムバス８０８を備えている。記憶装置８０７は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気ディスク、半導体メモリ等の不揮発性メモリから構成されるハードディスク装置等で実現される。
【０１２６】
本発明のコンピュータシステム１０の情報処理装置１００、コンパイル処理装置２０は、プログラムを組み込んだ、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等のハードウェア部品である回路部品を実装することにより、その動作をハードウェア的に実現することは勿論として、その機能を提供するプログラムを、記憶装置８０７に格納し、そのプログラムを主記憶部８０２にロードしてＣＰＵ８０１で実行することにより、ソフトウェア的に実現することも可能である。
【０１２７】
以上好ましい実施の形態をあげて本発明を説明したが、本発明は必ずしも、上記実施の形態に限定されるものでなく、その技術的思想の範囲内において様々に変形して実施することができる。
【符号の説明】
【０１２８】
１：コンピュータシステム
１０：情報処理装置
１１：演算装置
１２：キャッシュ装置
１３：主記憶装置
１００、１０１：命令フィッチ
１０３、１０４、３０１：命令コード
１０５、１０６：プリフェッチ命令
１０７、１０７ｂ、１０７ｃ、１０８：ロード命令
１０９：プリフェッチデータ
１１０：検出信号
１１１、１１２：ロードデータ
１１３：キャッシュエントリ
１１４：微分回路出力信号
１０００：タグ
１００１：インデックス
１００２：オフセット
１００３：命令アドレス
１００４：バリッドフラグ
１００５：キャッシュフィルフラグ
１００６：検出信号生成部
１００７：キャッシュタグ部
１００８：キャッシュデータ部
１０１０：カウンタ
１０１１：微分回路
１０１２：セレクタ
１０１３：微分回路有効モード
１０１４：タイマ
２０：プログラムコード
３０：コンパイラ
【図１】
0005593647.tif 000002
【図２】
0005593647.tif 000003
【図３】
0005593647.tif 000004
【図４】
0005593647.tif 000005
【図５】
0005593647.tif 000006
【図６】
0005593647.tif 000007
【図７】
0005593647.tif 000008
【図８】
0005593647.tif 000009
【図９】
0005593647.tif 000010
【図１０】
0005593647.tif 000011
【図１１】
0005593647.tif 000012