(57)【要約】【課題】プリフェッチによってより効果的な性能向上を得ることができるようにする。【解決手段】命令実行部１５と記憶部１１との間に介装された少なくとも一つのキャッシュメモリ１２，１３と、ハードウェアプリフェッチ要求発行部２２ａによる、メモリアクセス要求があったアドレスとアドレス情報保持部２１に保持されたアドレス情報との比較処理の結果に基づいてアドレス情報の内容を制御する制御部２５とを備え、制御部２５が、アドレス情報保持部２１にアドレス情報を保持させると、あるいは、アドレス情報保持部２１のアドレス情報を更新すると、当該アドレス情報に対する上書き処理を所定期間抑止するように構成する。【選択図】図１
2009230374.tif 000002
【特許請求の範囲】
【請求項１】
メモリアクセス命令を実行する命令実行部と、
前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、
前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、
前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、
前記命令実行部からメモリアクセス要求があったアドレスと、前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて、前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部と、
前記比較処理の結果に基づいて前記アドレス情報保持部に保持されるアドレス情報の内容を制御する制御部とを備え、
前記制御部は、前記アドレス情報保持部にアドレス情報を保持させると、あるいは、前記アドレス情報保持部のアドレス情報を更新すると、当該アドレス情報に対する上書き処理を所定期間抑止することを特徴とする、情報処理装置。
【請求項２】
前記アドレス情報が保持あるいは更新されてからのクロックサイクル数をカウントするカウンタを備え、
前記制御部は、前記カウンタの値が所定値になったことを前記所定期間として認識することを特徴とする、請求項１記載の情報処理装置。
【請求項３】
前記アドレス情報が保持あるいは更新されてからの当該アドレス情報に対する前記制御部による前記上書き処理の抑止回数をカウントするカウンタを備え、
前記制御部は、前記カウンタの値が所定値になったことを前記所定期間として認識することを特徴とする、請求項１記載の情報処理装置。
【請求項４】
前記制御部は、更新された前記アドレス情報にかかる前記所定期間を、前記アドレス情報保持部に新たに保持されたアドレス情報の前記所定期間よりも長くすることを特徴とする、請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、前記メモリアクセス命令に付加するハードウェアプリフェッチ対象指示部を備え、
前記ハードウェアプリフェッチ要求発行部は、前記指示情報に基づいて、前記比較処理及びハードウェアプリフェッチ要求の発行処理を実行することを特徴とする、請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
メモリアクセス命令を実行する命令実行部と、
前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、
前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、
前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、
前記命令実行部からメモリアクセス要求があったアドレスと、前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて、前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部と、
前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、前記メモリアクセス命令に付加するハードウェアプリフェッチ対象指示部とを備え、
前記ハードウェアプリフェッチ要求発行部は、前記指示情報に基づいて、前記比較処理及びハードウェアプリフェッチ要求の発行処理を実行することを特徴とする、情報処理装置。
【請求項７】
メモリアクセス命令を実行する命令実行部と、前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、前記命令実行部からメモリアクセス要求があったアドレスと前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部とを有する情報処理装置において、前記キャッシュメモリへのプリフェッチを実行する機能をコンピュータに実現させるためのプログラムであって、
前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、前記メモリアクセス命令に付加するハードウェアプリフェッチ対象指示部として、前記コンピュータを機能させることを特徴とする、プログラム。
【請求項８】
メモリアクセス命令を実行する命令実行部と、前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、前記命令実行部からメモリアクセス要求があったアドレスと前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部とを有する情報処理装置において、命令列を生成する命令列生成方法であって、
前記アクセス情報保持部が保持しうるアドレス情報のエントリ数に応じて、前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報をメモリアクセス命令に付加し、
前記ハードウェアプリフェッチ要求発行対象でないことを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入する一方、ハードウェアプリフェッチ要求発行対象であることを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令の生成を抑止することを特徴とする、命令列生成方法。
【請求項９】
複数系列の連続アクセスが発生する場合に、前記エントリ数の範囲内で、前記メモリアクセス命令にハードウェアプリフェッチ要求発行対象であることを示す指示情報を付加し、前記エントリ数を超える場合には、その超えた数の前記メモリアクセス命令には、ハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加することを特徴とする、請求項８記載の命令列生成方法。
【請求項１０】
ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチによって所定以上のハードウェアプリフェッチ効果が得られるか否かを判断し、所定以上のハードウェアプリフェッチ効果が得られないと判断した場合には、当該メモリアクセス命令にハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加し、当該メモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成することを特徴とする、請求項８または請求項９記載の命令列生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置において行なわれるプリフェッチに用いて好適な技術に関する。
【背景技術】
【０００２】
従来から、コンピュータはCentral Processing Unit（ＣＰＵ）と、主記憶装置との間に少なくとも１階層のキャッシュメモリを有し、主記憶装置のアクセスレーテンシ隠蔽やスループット不足の改善を図っている。
ＣＰＵの高速化・高性能化に比べ、メモリシステムの性能向上率は低く、近年、キャッシュメモリのヒット率向上やキャッシュミスレイテンシの隠蔽が益々必要とされている。
【０００３】
これらの問題に対する一つの解決手段として、近い将来必要とされるであろうデータを予めキャッシュメモリに読み込んでおくプリフェッチ手法が用いられている。
プリフェッチの実現方法としては、ソフトウェアによるソフトウェアプリフェッチと、ハードウェアによるハードウェアプリフェッチとの２つに大別される。
ソフトウェアプリフェッチでは、コンパイラやプログラマが予め命令列の中にプリフェッチ命令を明示的に挿入してプリフェッチを行なう。
【０００４】
一方、ハードウェアプリフェッチでは、過去のメモリアクセスアドレスやキャッシュミスアドレス等のアドレスパターンをプリフェッチアドレスキューに記憶しておき、過去のアドレスパターンから連続なメモリアクセスが行なわれた場合に、さらにその先のアドレスをプリフェッチする。
なお、従来から、ハードウェアプリフェッチに関し、プリフェッチに用いられるストライド値を決定するための技術や、命令をメモリからプリフェッチしてキャッシュに格納させる命令キャッシュ装置に関する技術がある（例えば、下記特許文献１，２参照）。
【特許文献１】特表２００６−５１００８２号公報
【特許文献２】特開平１１−３０６０２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、従来のソフトウェアプリフェッチでは、予め命令列の中にプリフェッチ命令を明示的に挿入しておくため、柔軟な制御が可能である。しかし、ソフトウェアプリフェッチは、キャッシュミス発生やアドレス計算結果などの動的な振る舞いに応じて必要なプリフェッチ命令を挿入するのが困難である。
さらに、ソフトウェアプリフェッチは、プリフェッチを行なうキャッシュライン単位に必要最低限の一発のプリフェッチ命令のみを挿入するのが困難であり、すべてのキャッシュライン単位にプリフェッチ命令を挿入することが多いので、実際には不必要な冗長なプリフェッチ命令が挿入されるという問題点もある。
【０００６】
一方、従来のハードウェアプリフェッチでは、プリフェッチアドレスキューがアドレスパターンを記録可能なエントリ数を超える複数系列の連続アクセスが同時に発生した場合には、Least Recently Used（ＬＲＵ）制御によって、既存のエントリ上に連続アクセスに係る新たなアドレスパターンを上書きする。
しかし、複数系列の連続アクセスが同時に発生しているため、それら複数系列間で上書きし合ってしまい、連続アクセス検出できず、ハードウェアプリフェッチが生成されなくなる問題が考えられる。
【０００７】
例えば、図１０に従来のＬＲＵ制御によってプリフェッチアドレスキュー１００に保持されるアドレスパターンの遷移を示す。なお、プリフェッチアドレスレスキュー１００は、エントリ０〜３の４エントリを有し、４つのアドレスパターンを記録可能である。
また、図１０は、５つの別系列（ここではアクセスアドレスＡ〜Ｅ）のメモリアクセスが同時に行なわれる場合の、プリフェッチアドレスキュー１００のアドレスパターンの遷移を示す。ここで、図１０において縦方向は時間を示している。
【０００８】
まず、時間ｔ１〜ｔ４にかけて、系列Ａ〜Ｄのアドレスパターンが順に登録される。ここでは、一般的なハードウェアプリフェッチ機構として、アクセスアドレスの次のキャッシュラインアドレスＡ＋１〜Ｄ＋１が、アドレスパターンとしてプリフェッチアドレスキューのエントリ０〜３にそれぞれ登録される。
つまり、時間ｔ１における系列Ａのアクセスの発生に応じてエントリ０にアドレスパターンＡ＋１が登録される。また、時間ｔ２における系列Ｂのアクセスの発生に応じてエントリ１にアドレスパターンＢ＋１が登録される。さらに、時間ｔ３における系列Ｃのアクセスの発生に応じてエントリ２にアドレスパターンＣ＋１が登録される。そして、時間ｔ４における系列Ｄのアクセスの発生に応じてエントリ３にアドレスパターンＤ＋１が登録される。
【０００９】
これにより、プリフェッチアドレスキュー１００は全エントリ０〜３が使用されている状態になる。
さらに連続アクセスが進んで時間ｔ５において後続の系列Ｅのアクセスが発生すると、ＬＲＵ制御によって、最も古いエントリ０のアドレスパターンＡ＋１が上書きされて、エントリ０にアドレスパターンＥ＋１が登録される。
【００１０】
その後、時間ｔ６において系列Ａの連続アクセスが発生しても、時間ｔ４まではエントリ０に登録されていたアドレスパターンＡ＋１は時間ｔ５で上書きされて消去されてしまっている。そのため、このとき系列Ａの連続アクセスが発生しているにも係わらず系列Ａのプリフェッチ要求の発行が行なえない。
そして、このとき、アドレスパターンＡ＋２が、エントリ１のアドレスパターンＢ＋１に上書き処理される。
【００１１】
以降、図１０に示すように、時間ｔ７〜ｔ９に掛けて、系列Ｂ〜Ｄの連続アクセスが発生しても、系列Ａと同様に、それら系列Ｂ〜Ｄのプリフェッチ要求も発行できない。
このように、従来のＬＲＵ制御によれば、プリフェッチアドレスキュー１００のエントリ数よりも多い系列のアクセスが同時期に起きると、プリフェッチアドレスレスキュー１００においてそれぞれの系列のアドレスパターンを上書き登録し合ってしまう。その結果、プリフェッチ要求を発行できないという不具合が生じる。
【００１２】
また、ハードウェアプリフェッチは、回路として実装されたアルゴリズムに従って動作するため、プリフェッチ発生するタイミングや、どれだけ先のアドレスをプリフェッチするかの距離が固定的となってしまい、ソフトウェアプリフェッチほど柔軟な制御を行なうことができない。
さらに、従来、ハードウェアプリフェッチはコンパイラやプログラマからは見えない存在であるため、ハードウェアプリフェッチとソフトウェアプリフェッチは独立に最適化を行なっていた。そのため、同じアドレスにソフトウェアプリフェッチとハードウェアプリフェッチとの両方がプリフェッチを行なうなど、最適化効率が悪いという課題もある。
【００１３】
本発明は、このような課題に鑑み創案されたもので、プリフェッチによってより効果的な性能向上を得ることができるようにすることを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するために、この情報処理装置は、命令実行部と記憶部との間に介装された少なくとも一つのキャッシュメモリと、ハードウェアプリフェッチ要求発行部による、メモリアクセス要求があったアドレスとアドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいてアドレス情報の内容を制御する制御部とを備え、制御部は、アドレス情報保持部にアドレス情報を保持させると、あるいは、アドレス情報保持部のアドレス情報を更新すると、当該アドレス情報に対する上書き処理を所定期間抑止する。
【００１５】
また、上記目的を達成するために、この情報処理装置は、上記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、メモリアクセス命令に付加するハードウェアプリフェッチ対象指示部を備え、ハードウェアプリフェッチ要求発行部は、指示情報に基づいて、比較処理及びハードウェアプリフェッチ要求の発行処理を実行する。
【００１６】
また、上記目的を達成するために、このプログラムは、上記ハードウェアプリフェッチ対象指示部として、コンピュータを機能させることを要件とする。
さらに、上記目的を達成するために、この命令列生成方法は、アクセス情報保持部が保持しうるアドレス情報のエントリ数に応じて、ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報をメモリアクセス命令に付加し、ハードウェアプリフェッチ要求発行対象でないことを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入する一方、ハードウェアプリフェッチ要求発行対象であることを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令の生成を抑止する。
【発明の効果】
【００１７】
このように、上述した情報処理装置によれば、制御部が、アドレス情報保持部にアドレス情報を保持させると、あるいは、アドレス情報保持部のアドレス情報を更新すると、そのアドレス情報に対する上書き処理を所定期間抑止する。そのため、従来のＬＲＵ制御のように、連続アクセスが確認された有効なアドレス情報を登録または更新後すぐに上書き処理によって消去することを抑止できる。つまり、アドレス情報保持部がエントリ数を超える複数系列の連続アクセスが発生しても、登録されているアドレス情報が複数系列のメモリアクセスによって上書きし合うことを確実に抑止できる。その結果、アドレス情報保持部を有効に使用でき、連続アクセスに対するプリフェッチ要求を効率良く発行でき、本情報処理装置はプリフェッチによってより効果的な性能向上を得ることができる。
【００１８】
また、上述したプログラム及び命令列生成方法によれば、プリフェッチ対象指示部が、プリフェッチ要求発行対象であるか否かを示す指示情報を、メモリアクセス命令に付加するので、ソフトウェアプリフェッチ側で、ハードウェアプリフェッチを実行させる否かを決定でき、ソフトウェアプリフェッチとハードウェアプリフェッチを効率良く両立させることができる。その結果、プリフェッチによってより効果的な性能向上を得ることができる。
【発明を実施するための最良の形態】
【００１９】
以下、図面を参照しながら本発明の実施の形態について説明する。
〔１〕本発明の一実施形態について
まず、図１に示す機能ブロック図を参照しながら、本発明の一実施形態としての情報処理装置１の構成について説明する。
図１に示すように、本情報処理装置１は、コンパイル部２，プロセッサユニット（命令発行部・命令実行部）１０，主記憶装置（記憶部）１１，一次キャッシュ１２，二次キャッシュ１３，及びハードウェアプリフェッチ制御装置２０を有する。本情報処理装置１は、コンパイラによって生成されたプログラム命令列を入力とし、命令発行部・命令実行部１０によってプログラムが実行される。
【００２０】
コンパイル部２は、コンパイラによって実現されるものであり、プログラミング言語で記述されたソースコードを、プロセッサユニット１０が実行可能な形式に変換するものである。
図２に示すように、コンパイラはソフトウェアであり、プログラマによるプログラム生成後、コンパイラによって実現されるコンパイル部２によってプログラム命令列が生成される。
【００２１】
なお、プログラマによるプログラム生成には、ソフトウェアプリフェッチ命令の生成・挿入や、後述するハードウェアプリフェッチ対象指示が含まれていてもよい。
また、コンパイル部２による命令列生成処理には、コンパイル部２が有するプリフェッチ対象指示部（ハードウェアプリフェッチ対象指示部）３によるハードウェアプリフェッチ対象指示と、コンパイル部２が有するメモリアクセス命令生成部４によるソフトウェアプリフェッチ命令挿入処理が含まれる。
【００２２】
このように、コンパイル部２によって、ソフトウェアプリフェッチを実現される。
一方、ソフトウェアであるコンパイラに対して、プロセッサユニット１０，主記憶装置１１，一次キャッシュメモリ１２ａ，二次キャッシュメモリ１３ａ，及びハードウェアプリフェッチ制御装置２０は、ハードウェアである。
なお、図２の例では、一次キャッシュメモリ１２ａ（即ち、一次キャッシュ１２）及びハードウェアプリフェッチ制御装置２０がプロセッサユニット１０内に設けられた例であるが、本発明において、一次キャッシュ１２，二次キャッシュ１３，及びハードウェアプリフェッチ制御装置２０が設けられる位置は限定されない。
【００２３】
プリフェッチ対象指示部３は、変換した命令列に基づいて、連続アクセスを認識すると、その連続アクセスが発生するメモリアクセス命令について、ハードウェアプリフェッチによるプリフェッチを実行させるか否かを判断する。
つまり、プリフェッチ対象指示部３は、連続アクセスが発生するメモリアクセス命令が、ハードウェアプリフェッチ制御装置２０の後述するハードウェアプリフェッチ要求発行部２２ａによるハードウェアプリフェッチ要求発行対象（以下、プリフェッチ要求発行対象ともいう）であるか否かを決定する。そして、プリフェッチ対象指示部３は、ハードウェアプリフェッチ要求発行部２２ａによるプリフェッチ要求発行対象であるか否かを示す指示情報（ハードウェアプリフェッチ対象指示）を、そのメモリアクセス命令に付加する。
【００２４】
つまり、指示情報は、ハードウェアプリフェッチ要求発行部２２ａにハードウェアプリフェッチ要求を発行させるか否かを指示する情報である。
メモリアクセス命令生成部４は、連続アクセスが発生するメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入するものである。なお、コンパイル部２は、メモリアクセス命令生成部によってソフトウェアプリフェッチ命令を挿入された命令列をメモリアクセス命令として出力する。
【００２５】
具体的には、メモリアクセス命令生成部４は、プリフェッチ対象指示部３によってプリフェッチ要求発行対象であることを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令の生成を抑止する。
一方、メモリアクセス命令生成部４は、プリフェッチ対象指示部３によって連続アクセスが発生すると判断され、且つ、プリフェッチ要求発行対象ではない（即ち、プリフェッチ発行非対象である）ことを示す指示情報が付加されたメモリアクセス命令については、ソフトウェアプリフェッチを実行すべく、ソフトウェアプリフェッチ命令を生成し命令列に挿入する。
【００２６】
プロセッサユニット１０は、計算処理を実行するものであり、命令解読部１４及び命令実行部１５を有する。
命令解読部１４は、コンパイル部２によって生成されたプログラム命令列（単に命令列ともいう）を命令実行部１５が実行可能に解読するものである。
命令実行部１５は、命令解読部１４によって解読されたメモリアクセス命令を実行するものであり、一次キャッシュ１２に対してメモリアクセス要求を行なう。なお、以降の説明において、そのメモリアクセス要求にかかるメモリアクセス要求アドレスをアクセスアドレスという。
【００２７】
また、命令実行部１５から一次キャッシュ１２へのメモリアクセス要求（アクセスアドレス）は、プリフェッチ対象指示部３によって付加されたハードウェアプリフェッチ対象指示とともに、ハードウェアプリフェッチ制御装置２０の後述するアクセスパターン監視部２２にも入力される。
主記憶装置１１は、命令実行部１５によって実行されるメモリアクセス命令にかかるデータを保持するものである。
【００２８】
一次キャッシュ１２は、アクセス速度の速い一次キャッシュメモリ１２ａと、その制御装置１２ｂとを有する。なお、一次キャッシュ１２の制御単位は例えば６４Ｂ（バイト）である。
二次キャッシュ１３は、主記憶装置１１よりアクセス速度が速く一次キャッシュ１２の一次キャッシュメモリ１２ａより容量の大きい二次キャッシュメモリ１３ａと、その制御装置１３ｂとを有する。なお、二次キャッシュ１３の制御単位は例えば２５６Ｂである。
【００２９】
一次キャッシュ１２は、プロセッサユニット１０からのメモリアクセス要求に対して、アクセスアドレスのデータを自身が保持していれば、そのデータをフェッチデータとしてプロセッサユニットに出力する（図中“メモリアクセスデータ”参照）。
一方、一次キャッシュ１２は、アクセスアドレスのデータを自身が保持していなければ、そのデータを二次キャッシュ１３に要求する（図中“一次キャッシュ登録要求”参照）。
【００３０】
二次キャッシュ１３は、一次キャッシュ１２から要求されたデータを保持していれば、一次キャッシュ１２に応答する（図中“一次キャッシュ登録データ”参照）。
しかし、二次キャッシュ１３は要求されたデータを保持していなければ、主記憶装置１１に対してそのデータの要求を行なう（図中“二次キャッシュ登録要求”参照）。そして、主記憶装置１１は、そのデータを二次キャッシュ１３に応答する（図中“二次キャッシュ登録データ”参照）。
【００３１】
そして、そのデータは、主記憶装置１１から二次キャッシュ１３及び一次キャッシュ１２を介してプロセッサユニット１０に出力される。
ハードウェアプリフェッチ制御装置２０は、登録済みの過去のアドレスパターンと、後続メモリアクセス命令のアクセスアドレスとの比較処理の結果を基に連続アクセスを検出してキャッシュブロックのハードウェアプリフェッチ要求を発行するものである。
【００３２】
そして、ハードウェアプリフェッチ制御装置２０は、プリフェッチアドレスキュー（アドレス情報保持部）２１，アクセスパターン監視部２２，一次キャッシュプリフェッチ要求発行部２３，二次キャッシュプリフェッチ要求発行部２４，及びプリフェッチアドレスキュー更新部（制御部）２５を有する。
プリフェッチアドレスキュー２１は、命令実行部１５によって実行されたメモリアクセス命令のアクセスアドレスに基づくアドレスパターン（アドレス情報）を保持するものである。
【００３３】
ここでは、プリフェッチアドレスキュー２１は、エントリ０〜ＮのＮ＋１個のエントリを有し、例えば、各エントリ０〜Ｎにアクセスアドレスの次のキャッシュラインアドレスを、アドレス情報として保持する。
なお、プリフェッチアドレスキュー２１の内容は、プリフェッチアドレスキュー更新部２５によって制御される。
【００３４】
また、プリフェッチアドレスキュー２１は、各エントリ０〜Ｎにアドレスパターンが登録されているか否かを示すフラグを有している。
さらに、プリフェッチアドレスキュー２１は、複数のエントリ０〜Ｎ毎に対応するカウンタ２１ａ−０〜Ｎ（図中、符号２１ａで示す）を有している。
このカウンタ２１ａ−０〜Ｎ（以下、これらカウンタ２１ａ−０〜Ｎを特に区別しない場合には、単にカウンタ２１ａという。）は、アドレスパターンが新たに保持、あるいは、更新されてからのクロックサイクル数を複数のエントリ０〜Ｎ毎にカウントする。
【００３５】
ここで、クロックサイクルとは、この情報処理装置１（例えばプロセッサユニット１０）のクロックサイクルである。
アクセスパターン監視部２２は、プロセッサユニット１０の命令実行部１５からのメモリアクセス要求があったアクセスアドレスと、プリフェッチアドレスキュー２１に保持されたアドレスパターンとの比較処理を行なうものである。
【００３６】
ここでは、アクセスパターン監視部２２は、メモリアクセス要求に付加された指示情報に基づいて、指示情報がプリフェッチ要求発行対象であることを示す場合は、上記比較処理を行なう。
しかし、指示情報がプリフェッチ要求発行対象でないことを示す場合は、アクセスパターン監視部２２は上記比較処理を行なわない。つまり、この場合、アクセスパターン監視部２２は、比較処理の実行を抑止して、プリフェッチ要求発行処理を抑止する。
【００３７】
したがって、ハードウェアプリフェッチ制御装置２０は、指示情報がプリフェッチ要求発行対象でないことを示すメモリアクセス要求に対しては、動作しない。
そして、アクセスパターン監視部２２は、上記比較処理の結果、アクセスアドレスと、プリフェッチアドレスキュー２１に保持されたアドレスパターンとが一致すれば、一次キャッシュプリフェッチ要求発行部２３または二次キャッシュプリフェッチ要求発行部２４にプリフェッチ要求を発行させる。
【００３８】
つまり、アクセスパターン監視部２２は、比較処理の結果、過去に近傍アドレスへのアクセスが行なわれていて（即ち、プリフェッチアドレスキュー２１にアドレスパターン登録済みで）、連続アクセスが進んでいるのが検出された場合、近い将来さらに連続アクセスが進むと判断してプリフェッチ要求を発行させる。
なお、一次キャッシュプリフェッチ要求発行部２３にプリフェッチ要求を発行させるか、あるいは、二次キャッシュプリフェッチ要求発行部２４にプリフェッチ要求を発行させるかは、本発明において限定されるものではなく、例えばハードウェアプリフェッチ制御装置２０の仕様によって決定される。
【００３９】
一次キャッシュプリフェッチ要求発行部２３は、アクセスパターン監視部２２からの指示に応じて、プリフェッチ要求を一次キャッシュ１２に発行する。
具体的には、一次キャッシュプリフェッチ要求発行部２３は、アドレスパターン、即ち、アクセスアドレスの次のキャッシュラインの１ブロック分のデータを一次キャッシュ１２にプリフェッチさせる要求を発行する。
【００４０】
なお、一次キャッシュプリフェッチ要求発行部２３及び二次キャッシュプリフェッチ要求発行部２４がプリフェッチを要求するブロック数、及び、アクセスアドレスからどれだけ先のキャッシュラインのデータをプリフェッチするか、即ち、プリフェッチの距離は、本発明において限定されるものではない。これらはハードウェアプリフェッチ制御装置２０の仕様等によって決定される。
【００４１】
二次キャッシュプリフェッチ要求発行部２４は、アクセスパターン監視部２２からの指示に応じて、プリフェッチ要求を二次キャッシュ１３に発行する。
なお、ここでは、二次キャッシュプリフェッチ要求発行部２４も、一次キャッシュプリフェッチ要求発行部２３と同様に、アクセスアドレスの次のキャッシュラインのデータをプリフェッチする。
【００４２】
このように、アクセスパターン監視部２２，一次キャッシュプリフェッチ要求発行部２３，及び二次キャッシュプリフェッチ要求発行部２４は、命令実行部１５からメモリアクセス要求があったアクセスアドレスと、プリフェッチアドレスキュー２１に保持されたアドレスパターンとの比較処理の結果に基づいて、一次キャッシュ１２または二次キャッシュ１３に対するプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部２２ａとして機能する。
【００４３】
プリフェッチアドレスキュー更新部２５（以下、単に更新部２５という）は、アクセスパターン監視部２２による比較処理の結果に基づいて、プリフェッチアドレスキュー２１に保持されるアドレスパターンの内容を更新し制御するものである。
具体的には、更新部２５は、アクセスパターン監視部２２による比較処理の結果、アクセスアドレスがプリフェッチアドレスキュー２１に登録されていなければ、そのアクセスアドレスに基づくアドレスパターンを、プリフェッチアドレスキュー２１に新規登録する。
【００４４】
ただし、新規登録は、そのアクセスアドレスにプリフェッチ発行対象でないことを示す指示情報が付加されていないことが条件であり、さらに、プリフェッチアドレスキュー２１に登録しうる空きエントリ０〜Ｎあるいは上書き可能なエントリ０〜Ｎがあることが条件である。
一方、更新部２５は、アクセスパターン監視部２２による比較処理の結果、アクセスパターンがプリフェッチアドレスキュー２１に登録されていれば、そのアドレスパターンの内容を次のキャッシュラインのアドレスに更新する。
【００４５】
また、更新部２５は、プリフェッチアドレスキュー２１にアドレスパターンを保持させる（即ち、新規登録する）と、あるいは、プリフェッチアドレスキュー２１のアドレスパターンの内容を更新すると、そのアドレスパターンに対する上書き処理を所定期間抑止する。
ここでは、更新部２５は、そのアドレスパターンが登録されているエントリ０〜Ｎに対応するカウンタ２１ａの値が所定値になったことを所定期間として認識し、カウンタ２１ａの値が所定値になるまでの間は、そのエントリ０〜Ｎにおいて当該アドレスパターンを消去して他のアドレスパターンを登録することを抑止する。
【００４６】
なお、更新部２５による制御処理の詳細は、後述する図４を参照しながら説明する。
さらに、更新部２５は、プリフェッチアドレスキュー２１のカウンタ２１ａを制御するカウンタ制御部２６を有する。
カウンタ制御部２６は、エントリ０〜Ｎにアドレスパターンが保持されている場合には、対応するカウンタ２１ａの値を、システムクロックに応じて１ずつカウントアップさせる。
【００４７】
また、カウンタ制御部２６は、エントリ０〜Ｎに新たにアドレスパターンが登録されたとき、及び、エントリ０〜Ｎに保持されたアドレスパターンが更新されたときに、その値を０にリセットする。
ここで、図３に示すフローチャート（ステップＳ１〜Ｓ４）を参照しながら、ハードウェアプリフェッチ制御装置２０の動作手順の概略について説明する。
【００４８】
まず、プロセッサユニット１０の命令実行部１５からメモリアクセス命令が一次キャッシュにアクセスされると（ステップＳ１）、ハードウェアプリフェッチ制御装置２０のアクセスパターン監視部２２が、そのメモリアクセス命令に付加された指示情報が、ハードウェアプリフェッチ対象指示であるか否かを判断する（ステップＳ２）。即ち、アクセスパターン監視部２２は、かかる指示情報が、プリフェッチ要求発行対象であることを示しているか否かを判断する。
【００４９】
ここで、アクセスパターン監視部２２が、そのメモリアクセス命令についてハードウェアプリフェッチ対象指示があると判断すると（ステップＳ２のＹｅｓルート）、ハードウェアプリフェッチ制御装置２０は、そのメモリアクセスアドレスを用いて後述する図４に示す手順でハードウェアプリフェッチ機構を動作させる（ステップＳ３）。
つまり、アクセスパターン監視部２２が比較処理を行なうことで連続アクセス検出を行ない、ハードウェアプリフェッチ機構が、連続アクセス時にはプリフェッチの発行及びプリフェッチアドレスキュー２１の更新を行なう。
【００５０】
一方、アクセスパターン監視部２２の比較処理の結果、プリフェッチアドレスキュー２１にヒットミスしたら、そのメモリアクセスアドレスをプリフェッチアドレスキュー２１に新規登録する。
これに対して、アクセスパターン監視部２２が、そのメモリアクセス命令についてハードウェアプリフェッチ対象指示がないと判断すると（ステップＳ２のＮｏルート）、ハードウェアプリフェッチ制御装置２０は、そのメモリアクセスアドレスでは、ハードウェアプリフェッチ機構を動作させない（ステップＳ４）。
【００５１】
つまり、アクセスパターン監視部２２の比較処理もプリフェッチアドレスキュー２１への新規登録／更新処理も実行されない。
次に、図４に示すフローチャート（ステップＳ１０〜Ｓ１８）を参照しながら、更新部２５の処理手順について説明する。
まず、アクセスパターン監視部２２による比較結果及び指示情報に応じて、ハードウェアプリフェッチ動作対象のメモリアクセス要求についてアドレスパターンの新規登録要求が生じると、更新部２５は、プリフェッチアドレスキュー２１の各エントリ０〜Ｎのフラグに基づき、無効なエントリ、即ち、アドレスパターンが登録されていないエントリ０〜Ｎがあるか否かを判断する（ステップＳ１１）。
【００５２】
ここで、無効エントリがないと判断されると（ステップＳ１１のＮｏルート）、次に、更新部２５は、上書き処理が抑止（禁止）されていないエントリ０〜Ｎがあるか否かを判断する（ステップＳ１２）。
つまり、ここでは、更新部２５は、カウンタ２１ａの値が所定値になったエントリがあるか否かを判断する。
【００５３】
そして、上書き処理が禁止されていないエントリ０〜Ｎがなければ（ステップＳ１２のＮｏルート）、更新部２５は、新規登録要求が生じたメモリアクセス要求にかかるアドレスパターンは新規登録せず（ステップＳ１３）、処理を終了する。
つまり、カウンタ２１ａの値が所定値以上になっていないため、更新部２５は、エントリ０〜Ｎのアドレスパターンに対する上書き処理を抑止する。
【００５４】
一方、上書き処理が禁止されていないエントリ０〜Ｎがあれば（ステップＳ１２のＹｅｓルート）、更新部２５は、上書き可能なエントリ０〜Ｎから一つのエントリ０〜Ｎを選択して上書きから新規登録する（ステップＳ１４）。
なお、このときカウンタ２１ａの値が同一のエントリ０〜Ｎが複数存在すれば、更新部２５は、例えば、その中で最も古いエントリ０〜Ｎに上書き処理を行なう。
【００５５】
そして、更新部２５による新規アドレスパターンの上書き処理が行なわれると、カウンタ制御部２６が、そのエントリ０〜Ｎに対応するカウンタ２１ａの値を０に設定（リセット）する（ステップＳ１５）。なお、その後、カウンタ制御部２６は、毎サイクル、カウンタを１加算する（ステップＳ１５）。
また、上記ステップＳ１１において、無効エントリ０〜Ｎがあれば（ステップＳ１１のＹｅｓルート）、更新部２５は、その無効エントリ０〜Ｎを選択して、新規登録要求が発生したアクセスアドレスにかかるアドレスパターンを登録する（ステップＳ１６）。
【００５６】
その後、カウンタ制御部２６は、そのエントリ０〜Ｎに対応するカウンタ２１ａの値を０にリセットし、その後サイクル毎にカウンタ値を１加算する（ステップＳ１５）。
一方、ハードウェアプリフェッチ動作対象、即ち、指示情報がプリフェッチ発行対象を示すメモリアクセスで、アクセスパターン監視部２２による比較処理の結果が一致して連続アクセスが検出されると（ステップＳ１７）、アクセスパターン監視部２２は、一次キャッシュプリフェッチ要求発行部２３または二次キャッシュプリフェッチ要求発行部２４に対して次のキャッシュラインのハードウェアプリフェッチを発行する。さらにこのとき、更新部２５は、対応するエントリ０〜Ｎのアドレスパターンを更新する（ステップＳ１８）。
【００５７】
その後、カウンタ制御部２６は、そのエントリ０〜Ｎに対応するカウンタ２１ａの値を０にリセットし、その後サイクル毎にカウンタ値を１加算する（ステップＳ１５）。
ここで、図５にプリフェッチアドレスキュー２１のエントリ数（最大エントリ数）以上の連続アクセスが発生した場合の、プリフェッチアドレスキュー２１に保持されるアドレスパターンの一例を示す。
【００５８】
なお、図５及び後述する図７，図８の例は、以下の説明を容易にするため、プリフェッチアドレスキュー２１がエントリ０〜３の４エントリを有し、４つのアドレスパターンを記録可能であると仮定したものである。また、図５及び後述する図７，図８において縦方向は時間を示している。
まず、時間ｔ１〜ｔ４にかけて、アクセスアドレスＡ〜Ｄのメモリアクセス要求があると、それら系列Ａ〜Ｄのアドレスパターンが順に登録される。ここでは、ハードウェアプリフェッチ機構として、アクセスアドレスの次のキャッシュラインアドレスＡ＋１〜Ｄ＋１が、アドレスパターンとしてプリフェッチアドレスキューのエントリ０〜３にそれぞれ登録される。
【００５９】
つまり、時間ｔ１における系列Ａのアクセスの発生に応じて、更新部２５はエントリ０にアドレスパターンＡ＋１を新規登録する。また、時間ｔ２における系列Ｂのアクセスの発生に応じて、更新部２５はエントリ１にアドレスパターンＢ＋１を新規登録する。さらに、時間ｔ３における系列Ｃのアクセスの発生に応じて、更新部２５はエントリ２にアドレスパターンＣ＋１を新規登録する。そして、時間ｔ４における系列Ｄのアクセスの発生に応じて、更新部２５はエントリ３にアドレスパターンＤ＋１を新規登録する。
これにより、プリフェッチアドレスキュー２１は全エントリ０〜３が使用されている状態になる。
【００６０】
次に、時間ｔ５にアクセスアドレスＥのメモリアクセス要求があると、更新部２５は、上記図４のステップＳ１０，Ｓ１１，Ｓ１２，Ｓ１３の処理を順に行ない、結果的に、エントリ０〜３のエントリに対する上書き処理を抑止して、系列Ｅのアドレスパターンの新規登録は行なわない。
【００６１】
つまり、時間ｔ５において、エントリ０〜３に対応する、カウンタ２１ａはそれぞれ、“４”，“３”，“２”，“１”を示しており、所定値“８”にはなっていないので、更新部２５は上書き処理を抑止する。
以降、時間ｔ６〜ｔ９に掛けて、アクセスアドレスＡ＋１〜Ｄ＋１のメモリアクセス要求があると、各時間ｔ６〜ｔ９において、アクセスパターン監視部２２，一次キャッシュプリフェッチ要求発行部２３または二次キャッシュプリフェッチ要求発行部２４により、アドレスＡ＋２〜Ｄ＋２のプリフェッチ要求が行なわれる。
そして、更新部２５は、それらアドレスＡ＋２〜Ｄ＋２をアドレスパターンとして対応するエントリ０〜３に登録する更新処理を行なう。
【００６２】
次に、図６に示すフローチャート（ステップＳ２０〜Ｓ２６）を参照しながら、コンパイル部２（プリフェッチ対象指示部３及びメモリアクセス命令生成部４）の動作手順の一例について説明する。
まず、コンパイル部２のプリフェッチ対象指示部３は、コンパイルしたメモリアクセス命令が連続アクセスであるか否かを判断する（ステップＳ２０）。
ここで、プリフェッチ対象指示部３は、連続アクセスであると判断すると（ステップＳ２０のＹｅｓルート）、次に１キャッシュライン当たりのキャッシュヒット率が予め設定された所定値Ｍ以下であるか否かを判断する（ステップＳ２１）。なお、所定値Ｍはハード（ＣＰＵ等）に依存する。
【００６３】
また、キャッシュヒット率は、次式（１）によって求められる。
キャッシュヒット率＝キャッシュヒット数÷最大キャッシュヒット数×１００
・・・（１）
ただし、キャッシュヒット数は、ループが１回まわる間に何回ヒットしているかを示すものであり、次式（２）によって求められ、最大キャッシュヒット数は次式（３）によって求められる。
【００６４】
キャッシュヒット数＝１キャッシュラインサイズ÷ループ１回転毎の更新幅
・・・（２）
最大キャッシュヒット数＝１キャッシュラインサイズ÷メモリアクセスの型
・・・（３）
そして、かかるキャッシュヒット率が所定値Ｍ以上であれば（ステップＳ２１のＮｏルート）、同時に連続アクセスが発生したアクセス系列数が、プリフェッチアドレスキュー２１が記録可能な最大エントリ数（ここではＮ）よりおおきか以上であるか否かを判断する（ステップＳ２２）。なお、ここでいう同時に連続アクセスが発生するとは、メモリアクセスが厳密に同時に発生することをいうのではなく、コンパイル部２によって同時期にコンパイルされ連続アクセスが検出されることをいう。
【００６５】
そして、アクセス系列数がプリフェッチアドレスキュー２１の最大エントリ数以下であれば（ステップＳ２２のＮｏルート）、プリフェッチ対象指示部３は、当該メモリアクセス命令は、ハードウェアプリフェッチ対象であると判断して、プリフェッチ要求発行対象であることを示す指示情報をそのメモリアクセス命令に付加する（ステップＳ２３）。これにより、プリフェッチ対象指示部３は、そのメモリアクセス命令がハードウェアプリフェッチ対象であることを指示し、処理を終了する。
【００６６】
一方、プリフェッチ対象指示部３は、上記ステップＳ２１においてキャッシュヒット率がＭより小さいと判断した場合（ステップＳ２１のＹｅｓルート）、及び、上記ステップＳ２２において同時に発生するアクセス系列数がプリフェッチアドレスキュー２１の最大エントリ数より多いと判断した場合（ステップＳ２２のＹｅｓルート）、そのメモリアクセス命令はハードウェアプリフェッチ対象外であることを指示する（ステップＳ２４）。
【００６７】
つまり、これらの場合、プリフェッチ対象指示部３は、そのメモリアクセス命令に、プリフェッチ要求発行対象ではないことを示す指示情報を付加する。
さらに、上記ステップＳ２０において連続アクセスでないと判断したメモリアクセス命令に対しても（ステップＳ２０のＮｏルート）、プリフェッチ対象指示部３は、そのメモリアクセス命令はハードウェアプリフェッチ対象外であることを指示する（ステップＳ２４）。
【００６８】
ただし、プリフェッチ対象指示部３は、メモリアクセス命令が連続アクセスであるかどうか不明である場合には、ステップＳ２４においてハードウェアプリフェッチ対象外指示を行なってもよいし、ハードウェアプリフェッチ対象指示（ステップＳ２３）を行なってもよい。
次に、プリフェッチ対象指示部３は、上記ステップＳ２４においてハードウェアプリフェッチ対象外指示を行なったメモリアクセス命令について、ソフトウェアプリフェッチを実行するか否かを判断する（ステップＳ２５）。
【００６９】
そして、ソフトウェアプリフェッチを実行すると判断すると（ステップＳ２５のＹｅｓルート）、メモリアクセス命令生成部４は、そのメモリアクセス命令についてのソフトウェアプリフェッチ命令を生成して命令列に挿入して（ステップＳ２６）、処理を終了する。
一方、メモリアクセス命令生成部４は、ソフトウェアプリフェッチを実行しないと判断すると（ステップＳ２５のＮｏルート）、ステップＳ２６の処理は行なわずに処理を終了する。
【００７０】
なお、メモリアクセス命令生成部４は、上記ステップＳ２３においてハードウェアプリフェッチ対象指示がされたメモリアクセス命令については、ソフトウェアプリフェッチ命令の生成を抑止する。
このように、コンパイル部２のプリフェッチ対象指示部３は、複数系列の連続アクセスが同時発生する場合には、プリフェッチアドレスキュー２１が保持しうるアドレスパターンのエントリ数Ｎ＋１に応じて、指示情報を付加する。
【００７１】
具体的には、プリフェッチ対象指示部３は、連続アクセスが同時発生する命令系列の数が、かかるエントリ数Ｎ＋１を超える場合には、その超えた数の命令系列のメモリアクセス命令には、プリフェッチ要求発行対象でないことを示す指示情報を付加する。
そして、このとき、メモリアクセス命令生成部４は、プリフェッチ要求発行対象でないことを示す指示情報を付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入する。
【００７２】
ここで、図７に指示情報（ハードウェアプリフェッチ対象指示）に応じたプリフェッチアドレスキュー２１のアドレスパターンの保持内容の一例を示す。
まず、時間ｔ１〜ｔ３にかけて、ハードウェアプリフェッチ対象であるアクセスアドレスＡ〜Ｃのメモリアクセス要求があると、更新部２５は、それら系列Ａ〜ＣのアドレスパターンＡ＋１〜Ｃ＋１をエントリ０〜２に順に登録する。
【００７３】
続いて、時間ｔ４，ｔ５において、ハードウェアプリフェッチ非対象であるアクセスアドレスＤ，Ｅのメモリアクセス要求があると、アクセスパターン監視部２２は比較処理を抑止する。さらに更新部２５も、エントリ３が無効エントリ（空きエントリ）であるが、それらアクセスアドレスＤ，Ｅのアドレスパターンは、プリフェッチアドレスキュー２１への登録を抑止する。
【００７４】
これと同様に、更新部２５は、時間ｔ８において生じたアクセスアドレスＦのアドレスパターンもプリフェッチアドレスキュー２１には登録しない。
一方、時間ｔ６，ｔ７，ｔ９に発生した系列Ａ，Ｂのメモリアクセス要求に対しては、更新部２５は、アドレスパターンの更新処理を行なう。また、アクセスパターン監視部２２，一次キャッシュプリフェッチ要求発行部２３または二次キャッシュプリフェッチ要求発行部２４により、プリフェッチ要求が発行される。
【００７５】
また、図８に命令実行部１５によってソフトウェアプリフェッチ命令が実行される場合のプリフェッチアドレスキュー２１のアドレスパターンの保持内容の一例を示す。
この図８に示すように、時間ｔ５においてアクセスアドレスＤ＋８のソフトウェアプリフェッチ命令が要求されると、その指示情報は、ハードウェアプリフェッチ非対象であるため、そのアクセスアドレスＤ＋８に対して、アクセスパターン監視部２２は比較処理を抑止する。さらに、更新部２５も、エントリ３が無効エントリ（空きエントリ）であるが、アクセスアドレスＤ＋８のアドレスパターンのプリフェッチアドレスキュー２１への登録を抑止する。
【００７６】
なお、図８において時間ｔ４，ｔ９，ｔ１０でハードウェアプリフェッチ非対象のアクセスアドレスＤ，Ｄ+１，Ｄ+９のメモリアクセス要求が発行されるが、これらについても、アクセスパターン監視部２２による比較処理及び更新部２５による登録処理が抑止される。
このように、本発明の一実施形態としての情報処理装置１によれば、更新部２５が、プリフェッチアドレスキュー２１にアドレスパターンを保持させる（新規登録する）と、あるいは、プリフェッチアドレスキュー２１のアドレスパターンを更新すると、そのアドレスパターンに対する上書き処理を所定期間抑止する。
【００７７】
そのため、従来のＬＲＵ制御のように、連続アクセスが確認された有効なアドレスパターンを登録または更新後すぐに上書き処理によって消去することを抑止できる。つまり、プリフェッチアドレスキュー２１のエントリ数Ｎ＋１を超える複数系列の連続アクセスが発生しても、登録されているアドレスパターンが複数系列のメモリアクセスによって上書きし合うことを確実に抑止できる。
【００７８】
その結果、プリフェッチアドレスキュー２１を有効に使用でき、連続アクセスに対するプリフェッチ要求を効率良く発行できる。つまり、キャッシュミスによるレーテンシ隠蔽やスループット向上等、プリフェッチによってより効果的な性能向上を得ることができる。
具体的には、更新部２５は、アドレス情報が保持あるいは更新されてからのクロックサイクル数をカウントするカウンタ２１ａの値が所定値になったことを、上記所定期間として認識する。したがって、カウンタ２１ａにより所定のクロックサイクル数がカウントされるまでの間、更新部２５によって、対応するエントリのアドレスパターンの上書き処理は抑止されることになり、上述した効果を確実に得ることができる。
【００７９】
また、プリフェッチ対象指示部３が、ハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、メモリアクセス命令に付加し、ハードウェアプリフェッチ制御装置２０が、その指示情報に基づいて、上記比較処理及びプリフェッチ要求の発行処理を実行する。したがって、コンパイル部２側、即ち、ソフトウェアプリフェッチ側で、ハードウェアプリフェッチを実行させる否かを決定でき、ソフトウェアプリフェッチとハードウェアプリフェッチを効率良く両立させることができる。
【００８０】
つまり、メモリアクセス命令生成部４が、プリフェッチ対象指示部３によってプリフェッチ要求発行対象であることを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令の生成を抑止することにより、ソフトウェアプリフェッチとハードウェアプリフェッチとが同一のメモリアクセス命令に対して行なわれることを確実に抑止できる。その結果、同じプリフェッチ要求がソフトウェアプリフェッチと、ハードウェアプリフェッチとの双方から行なわれることが無くなり、冗長はプリフェッチ要求の発行を確実に抑止できる。
【００８１】
具体的には、プリフェッチ対象指示部３は、複数系列の連続アクセスが同時発生する場合には、プリフェッチアドレスキュー２１が保持しうるエントリ数Ｎ＋１に応じて、指示情報を付加する。したがって、ハードウェアプリフェッチ制御装置２０のハード構成に応じた処理を実行でき、プリフェッチアドレスキュー２１をより有効的に使用できるとともに、連続アクセスに対するプリフェッチ要求もより効率化できる。
【００８２】
つまり、プリフェッチ対象指示部３は、連続アクセスが同時発生する命令系列の数が、エントリ数Ｎ＋１を超える場合には、その超えた数の命令系列のメモリアクセス命令には、プリフェッチ要求発行対象でないことを示す指示情報を付加する。そして、メモリアクセス命令生成部４は、プリフェッチ要求発行対象でないことを示す指示情報を付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入する。したがって、プリフェッチアドレスキュー２１のエントリ数Ｎ＋１を超える数のアドレスパターンの登録処理が発生することを極力抑止できる。しかも、エントリ数Ｎ＋１を超える部分は、ソフトウェアプリフェッチで確実にカバーできるので、プリフェッチ要求をより確実に、且つ、より効率良く発行できる。しかも、ハードウェアプリフェッチとソフトウェアプリフェッチとの間で、担当するプリフェッチ要求を分担することになるので、ハードウェアプリフェッチとソフトウェアプリフェッチとをより効率良く両立できる。
【００８３】
〔２〕その他
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した実施形態では、プロセッサユニット１０と主記憶装置１１との間に２つのキャッシュシステム（キャッシュ１２，１３）を有する場合を例にあげて説明した。しかし、本発明はこれに限定されるものではなく、プロセッサユニット１０と主記憶装置１１との間には、少なくとも一つのキャッシュメモリが介装されていればよい。
【００８４】
また、上述した実施形態では、ハードウェアプリフェッチ制御装置２０が、プロセッサユニット１０の一次キャッシュ１２に対するメモリアクセス要求を監視した場合を例にあげて説明した。つまり、アクセスパターン監視部２２が、プロセッサユニット１０の一次キャッシュ１２に対するメモリアクセス要求とその指示情報を取得して、比較処理を行なう場合を例にあげて説明した。しかし、本発明はこれに限定されるものではなく、情報処理装置１の仕様等に応じて、アクセスパターン監視部２２が、一次キャッシュ１２の二次キャッシュ１３に対するメモリアクセス要求を監視するように構成してもよい。また、アクセスパターン監視部２２が、二次キャッシュ１３の主記憶装置１１に対するメモリアクセス要求を監視するように構成してもよい。
【００８５】
さらに、上述した実施形態では、プロセッサユニット１０のコンパイル部２がプリフェッチ対象指示部３を備え、対象指示に基づいてプリフェッチに係る処理が実行されるという特徴と、更新部２５がカウンタ２１ａに基づいて所定期間の上書き抑止処理を行なうという特徴とを有する場合を例にあげて説明した。しかし、本発明はこれら２つの特徴を必ずしも同時に備える必要はなく、いずれか一方だけの特徴を有していてもよい。
【００８６】
また、上述した実施形態では、カウンタ２１ａが、クロックサイクル数をカウントする場合を例にあげて説明した。しかし、本発明はこれに限定されるものではなく、例えば、本発明の変形例として、カウンタ２１ａが、対応するエントリ０〜Ｎにアドレスパターンが保持あるいは更新されてからの当該アドレスパターンに対する更新部２５による上書き処理の抑止回数をカウントするように構成してもよい。
【００８７】
この場合、更新部２５は、カウンタの値が所定値になったことを、上書き処理を抑止する所定期間として認識する。つまり、更新部２５は、所定回数以上上書き処理を抑止するまでは、そのエントリ０〜Ｎの上書き処理を抑止する。
このときの更新部２５の処理手順を図９のフローチャート（ステップＳ１０〜Ｓ１８，Ｓ１３´）に示す。なお、図９において図４と同一の符号部分は同一の処理もしくは略同一の処理を示しているので、ここではその詳細な説明は省略する。
【００８８】
図９に示すように、更新部２５がステップＳ１３において新規登録をしなかった場合、即ち、登録済のアドレスパターンの上書き処理を抑止した場合、カウンタ制御部２６は、その登録済の各エントリ０〜Ｎのカウンタ（上書き処理禁止回数）を１加算する（ステップＳ１３´）。
これによっても、上述した実施形態と同様の作用効果を得ることができる。
【００８９】
また、上述した実施形態では、カウンタ制御部２６がカウンタ２１ａをリセットする場合には、エントリ０〜Ｎの種類に係わらず０にリセットする場合を例にあげて説明した。しかし、本発明はこれに限定されるものではなく、例えば、更新部２５が、プリフェッチアドレスキュー２１において更新されたアドレスパターンにかかる所定期間を、プリフェッチアドレスキュー２１に新たに保持されたアドレスパターンの所定期間よりも長くするように構成してもよい。
【００９０】
具体的には、例えば、カウンタ２１ａの値が８のときに、更新部２５の上書き処理の抑止制御が解除される場合、新たにアドレスパターンが登録されたときは、カウンタ制御部２６はその値を４にリセットする。一方、連続アクセスが検出されてアドレスパターンが更新された場合、カウンタ制御部２６はカウンタ値を０にリセットする。
これにより、更新部２５は、更新されたアドレスパターンにかかる所定期間を、プリフェッチアドレスキュー２１に新たに保持されたアドレスパターンにかかる所定期間よりも長くする。
【００９１】
このようにアドレスパターンが更新され、連続アクセスすることが判明したアドレスパターンの上書き処理抑止期間を、新規登録されたアドレスパターンの上書き処理抑止期間よりも長くすることで、連続アクセスすることが判明したアドレスパターンを優先的にプリフェッチアドレスキュー２１に保持させるように制御できる。その結果、プリフェッチ要求の発行をより確実に行なうことができ、プロセッサユニット１０の性能向上、つまり、キャッシュミスによるレーテンシ隠蔽やスループット向上に寄与できる。
【００９２】
さらに、上述した実施形態では、プリフェッチ対象指示部３が、プリフェッチアドレスキュー２１のエントリ数Ｎ＋１を超える数の系列の連続アクセスが発生した場合に、ソフトウェアプリフェッチが実行する場合を例にあげて説明した。しかし、本発明はこれに限定されるものではなく、例えば、ハードウェアプリフェッチ制御装置２０によるプリフェッチの距離（ここでは次のキャッシュラインまでの間隔）が不適切であり、距離が長過ぎたり短過ぎたりする場合、即ち、所定の範囲外である場合に、プリフェッチ対象指示部３が、その系列のメモリアクセス命令がプリフェッチ要求発行対象でないことを示す指示情報を付加してもよい。そして、このときメモリアクセス命令生成部４は、そのメモリアクセス命令のソフトウェアプリフェッチ命令を生成する。
【００９３】
つまり、ハードウェアプリフェッチ制御装置２０において、どれだけ先のキャッシュラインをプリフェッチするかという仕様は、その回路実装されたアルゴリズムによって制限され、設定変更の自由度が少ない。
これに対して、ソフトウェアプリフェッチは、プリフェッチの距離を種々変更できるため、ハードウェアプリフェッチ制御装置２０によるハードウェアプリフェッチの距離が所定範囲内になく、ハードウェアプリフェッチしてもキャッシュヒット率やスループット等が向上しない場合には、ハードウェアプリフェッチを止めて、ソフトウェアプリフェッチにより、最適なプリフェッチの距離でプリフェッチを実行する。
【００９４】
つまり、ハードウェアプリフェッチ制御装置２０によるハードウェアプリフェッチによって、キャッシュヒット率やスループット等のハードウェアプリフェッチ効果が所定値以上得られるか否かを判断する。そして、所定以上のハードウェアプリフェッチ効果が得られないと判断した場合には、プリフェッチ対象指示部３がそのメモリアクセス命令にハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加する。さらに、メモリアクセス命令生成部４がそのメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入する。
【００９５】
一方、所定以上のハードウェアプリフェッチ効果が得られると判断した場合には、そのままハードウェアプリフェッチを行ない、メモリアクセス命令生成部４はそのメモリアクセス命令のソフトウェアプリフェッチ命令は生成しない。つまり、プリフェッチ対象指示部３はそのメモリアクセス命令にハードウェアプリフェッチ要求発行対象であることを示す指示情報を付加する。
【００９６】
これにより、上述した実施形態の作用効果をより確実に得ることができる。
なお、ハードウェアプリフェッチ効果の判断は、既存の種々の方法を用いて、本情報処理装置１のオペレータ等が行なってもよいし、自動的に判断するように構成してもよい。
また、上述した変形例及び一実施形態においてコンパイル部２による処理はその一部や全部をプログラマが実現してもよい。
【００９７】
なお、上述したコンパイル部２，カウンタ２１ａ，アクセスパターン監視部２２，一次キャッシュプリフェッチ要求発行部２３，二次キャッシュプリフェッチ要求発行部２４，及びプリフェッチアドレスキュー更新部２５としての機能は、コンピュータ（ＣＰＵ，情報処理装置，各種端末を含む）が所定のアプリケーションプログラム（プリフェッチ制御プログラム）を実行することによって実現されてもよい。
【００９８】
そのプログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷなど），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋Ｒ，ＤＶＤ＋ＲＷなど）等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からプリフェッチ制御プログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信回線を介してコンピュータに提供するようにしてもよい。
【００９９】
ここで、コンピュータとは、ハードウェアとＯＳ（オペレーティングシステム）とを含む概念であり、ＯＳの制御の下で動作するハードウェアを意味している。また、ＯＳが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウェアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取るための手段とをそなえている。
【０１００】
上記プリフェッチ制御プログラムとしてのアプリケーションプログラムは、上述のようなコンピュータに、コンパイル部２，カウンタ２１ａ，アクセスパターン監視部２２，一次キャッシュプリフェッチ要求発行部２３，二次キャッシュプリフェッチ要求発行部２４，及びプリフェッチアドレスキュー更新部２５としての機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくＯＳによって実現されてもよい。
【０１０１】
なお、本実施形態としての記録媒体としては、上述したフレキシブルディスク，ＣＤ，ＤＶＤ，磁気ディスク，光ディスク，光磁気ディスクのほか、ＩＣカード，ＲＯＭカートリッジ，磁気テープ，パンチカード，コンピュータの内部記憶装置（ＲＡＭやＲＯＭなどのメモリ），外部記憶装置等や、バーコードなどの符号が印刷された印刷物等の、コンピュータ読取可能な種々の媒体を利用することもできる。
【０１０２】
〔３〕付記
（付記１）
メモリアクセス命令を実行する命令実行部と、
前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、
前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、
前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、
前記命令実行部からメモリアクセス要求があったアドレスと、前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて、前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部と、
前記比較処理の結果に基づいて前記アドレス情報保持部に保持されるアドレス情報の内容を制御する制御部とを備え、
前記制御部は、前記アドレス情報保持部にアドレス情報を保持させると、あるいは、前記アドレス情報保持部のアドレス情報を更新すると、当該アドレス情報に対する上書き処理を所定期間抑止することを特徴とする、情報処理装置。
【０１０３】
（付記２）
前記アドレス情報が保持あるいは更新されてからのクロックサイクル数をカウントするカウンタを備え、
前記制御部は、前記カウンタの値が所定値になったことを前記所定期間として認識することを特徴とする、付記１記載の情報処理装置。
【０１０４】
（付記３）
前記アドレス情報が保持あるいは更新されてからの当該アドレス情報に対する前記制御部による前記上書き処理の抑止回数をカウントするカウンタを備え、
前記制御部は、前記カウンタの値が所定値になったことを前記所定期間として認識することを特徴とする、付記１記載の情報処理装置。
【０１０５】
（付記４）
前記制御部は、更新された前記アドレス情報にかかる前記所定期間を、前記アドレス情報保持部に新たに保持されたアドレス情報の前記所定期間よりも長くすることを特徴とする、付記１〜３のいずれか１項に記載の情報処理装置。
（付記５）
前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、前記メモリアクセス命令に付加するハードウェアプリフェッチ対象指示部を備え、
前記ハードウェアプリフェッチ要求発行部は、前記指示情報に基づいて、前記比較処理及びハードウェアプリフェッチ要求の発行処理を実行することを特徴とする、付記１〜４のいずれか１項に記載の情報処理装置。
【０１０６】
（付記６）
メモリアクセス命令を実行する命令実行部と、
前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、
前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、
前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、
前記命令実行部からメモリアクセス要求があったアドレスと、前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて、前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部と、
前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、前記メモリアクセス命令に付加するハードウェアプリフェッチ対象指示部とを備え、
前記ハードウェアプリフェッチ要求発行部は、前記指示情報に基づいて、前記比較処理及びハードウェアプリフェッチ要求の発行処理を実行することを特徴とする、情報処理装置。
【０１０７】
（付記７）
前記ハードウェアプリフェッチ要求発行部は、前記指示情報がハードウェアプリフェッチ要求発行対象であることを示すものであれば前記比較処理及びハードウェアプリフェッチ要求の発行処理を実行する一方、前記指示情報がハードウェアプリフェッチ要求発行対象でないことを示すものであれば前記比較処理及びハードウェアプリフェッチ要求の発行処理の実行を抑止することを特徴とする、付記６記載の情報処理装置。
【０１０８】
（付記８）
連続アクセスが発生するメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入するメモリアクセス命令生成部を備え、
前記メモリアクセス命令生成部は、前記ハードウェアプリフェッチ対象指示部によってハードウェアプリフェッチ要求発行対象であることを示す前記指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令の生成を抑止することを特徴とする、付記５〜７のいずれか１項に記載の情報処理装置。
【０１０９】
（付記９）
前記ハードウェアプリフェッチ対象指示部は、複数系列の連続アクセスが発生する場合には、前記アドレス情報保持部が保持しうるアドレス情報のエントリ数に応じて、前記指示情報を付加することを特徴とする、付記５〜８のいずれか１項に記載の情報処理装置。
（付記１０）
前記ハードウェアプリフェッチ対象指示部は、前記の連続アクセスが発生する命令系列の数が、前記エントリ数を超える場合には、その超えた数の命令系列の前記メモリアクセス命令には、ハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加し、
前記メモリアクセス命令生成部は、ハードウェアプリフェッチ要求発行対象でないことを示す前記指示情報を付加された前記メモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入することを特徴とする、付記９記載の情報処理装置。
【０１１０】
（付記１１）
ハードウェアプリフェッチの距離が所定範囲外である場合には、前記ハードウェアプリフェッチ対象指示部は当該アドレス情報にかかるメモリアクセス命令にハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加するとともに、前記メモリアクセス命令生成部は当該メモリアクセス命令のソフトウェアプリフェッチ命令を生成することを特徴とする、付記８記載の情報処理装置。
【０１１１】
（付記１２）
メモリアクセス命令を実行する命令実行部と、前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部とを有する情報処理装置において、前記キャッシュメモリへのプリフェッチを実行する機能をコンピュータに実現させるためのプログラムであって、
前記命令実行部からメモリアクセス要求があったアドレスと、前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて、前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部、及び、
前記比較処理の結果に基づいて前記アドレス情報保持部に保持されるアドレス情報の内容を制御する制御部として、前記コンピュータを機能させるとともに、
前記制御部は、前記アドレス情報保持部にアドレス情報を保持させると、あるいは、前記アドレス情報保持部のアドレス情報を更新すると、当該アドレス情報に対する上書き処理を所定期間抑止するように、前記コンピュータを機能させることを特徴とする、プログラム。
【０１１２】
（付記１３）
メモリアクセス命令を実行する命令実行部と、前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、前記命令実行部からメモリアクセス要求があったアドレスと前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部とを有する情報処理装置において、前記キャッシュメモリへのプリフェッチを実行する機能をコンピュータに実現させるためのプログラムであって、
前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報を、前記メモリアクセス命令に付加するハードウェアプリフェッチ対象指示部として、前記コンピュータを機能させることを特徴とする、プログラム。
【０１１３】
（付記１４）
連続アクセスが発生するメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入するメモリアクセス命令生成部として、前記コンピュータを機能させるとともに、
前記メモリアクセス命令生成部は、前記ハードウェアプリフェッチ対象指示部によってハードウェアプリフェッチ要求発行対象であることを示す前記指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令の生成を抑止する一方、ハードウェアプリフェッチ要求発行対象でないことを示す前記指示情報を付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入するように、前記コンピュータを機能させることを特徴とする、付記１３記載のプログラム。
【０１１４】
（付記１５）
前記ハードウェアプリフェッチ対象指示部は、複数系列の連続アクセスが発生する場合には、前記アドレス情報保持部が保持しうるアドレス情報のエントリ数に応じて、前記指示情報を付加するように、前記コンピュータを機能させることを特徴とする、付記１３または付記１４記載のプログラム。
【０１１５】
（付記１６）
前記ハードウェアプリフェッチ対象指示部は、複数系列の連続アクセスが発生する場合に、前記エントリ数の範囲内で、前記メモリアクセス命令にハードウェアプリフェッチ要求発行対象であることを示す指示情報を付加し、前記エントリ数を超える場合には、その超えた数の命令系列の前記メモリアクセス命令には、ハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加するように、前記コンピュータを機能させることを特徴とする、付記１５記載のプログラム。
【０１１６】
（付記１７）
メモリアクセス命令を実行する命令実行部と、前記命令実行部によって実行されるメモリアクセス命令にかかるデータを保持する記憶部と、前記命令実行部と前記記憶部との間に介装された、少なくとも一つのキャッシュメモリと、前記命令実行部によって実行されたメモリアクセス命令のアドレスに基づくアドレス情報を保持するアドレス情報保持部と、前記命令実行部からメモリアクセス要求があったアドレスと前記アドレス情報保持部に保持されたアドレス情報との比較処理の結果に基づいて前記キャッシュメモリに対するハードウェアプリフェッチ要求を発行するハードウェアプリフェッチ要求発行部とを有する情報処理装置において、命令列を生成する命令列生成方法であって、
前記アクセス情報保持部が保持しうるアドレス情報のエントリ数に応じて、前記ハードウェアプリフェッチ要求発行部にハードウェアプリフェッチ要求発行対象であるか否かを示す指示情報をメモリアクセス命令に付加し、
前記ハードウェアプリフェッチ要求発行対象でないことを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成して命令列に挿入する一方、ハードウェアプリフェッチ要求発行対象であることを示す指示情報が付加されたメモリアクセス命令にかかるソフトウェアプリフェッチ命令の生成を抑止することを特徴とする、命令列生成方法。
【０１１７】
（付記１８）
複数系列の連続アクセスが発生する場合に、前記エントリ数の範囲内で、前記メモリアクセス命令にハードウェアプリフェッチ要求発行対象であることを示す指示情報を付加し、前記エントリ数を超える場合には、その超えた数の前記メモリアクセス命令には、ハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加することを特徴とする、付記１７記載の命令列生成方法。
【０１１８】
（付記１９）
ハードウェアプリフェッチの距離が所定範囲外である場合には、当該アドレス情報にかかるメモリアクセス命令にハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加し、当該メモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成することを特徴とする、付記１７または付記１８記載の命令列生成方法。
【０１１９】
（付記２０）
前記ハードウェアプリフェッチ要求発行部によるハードウェアプリフェッチによって所定以上のハードウェアプリフェッチ効果が得られるか否かを判断し、所定以上のハードウェアプリフェッチ効果が得られないと判断した場合には、当該メモリアクセス命令にハードウェアプリフェッチ要求発行対象でないことを示す指示情報を付加し、当該メモリアクセス命令にかかるソフトウェアプリフェッチ命令を生成することを特徴とする、付記１７または付記１８記載の命令列生成方法。
【図面の簡単な説明】
【０１２０】
【図１】本発明の一実施形態としての情報処理装置の構成を示すブロック図である。
【図２】本発明の一実施形態としての情報処理装置の構成を説明するための図である。
【図３】本発明の一実施形態としての情報処理装置のハードウェアプリフェッチ制御装置の動作手順の一例を示すフローチャートである。
【図４】本発明の一実施形態としての情報処理装置のハードウェアプリフェッチ制御装置のプリフェッチアドレスキュー更新部の動作手順の一例を示すフローチャートである。
【図５】本発明の一実施形態としての情報処理装置のハードウェアプリフェッチ制御装置のプリフェッチアドレスキューのエントリ数以上の連続アクセスが発生した場合のプリフェッチアドレスキューに保持されるアドレスパターンの遷移例を示す図である。
【図６】本発明の一実施形態としての情報処理装置のプロセッサユニットのコンパイル部の動作手順の一例を示すフローチャートである。
【図７】本発明の一実施形態としての情報処理装置のハードウェアプリフェッチ制御装置のプリフェッチアドレスキューに保持されるアドレスパターンの遷移例を示す。
【図８】本発明の一実施形態としての情報処理装置のハードウェアプリフェッチ制御装置のプリフェッチアドレスキューに保持されるアドレスパターンの遷移例を示す。
【図９】本発明の変形例としての情報処理装置のハードウェアプリフェッチ制御装置のプリフェッチアドレスキュー更新部の動作手順の一例を示すフローチャートである。
【図１０】従来のＬＲＵ制御によってプリフェッチアドレスキューに保持されるアドレスパターンの遷移を示す。
【符号の説明】
【０１２１】
１  情報処理装置
２  コンパイル部
３  プリフェッチ対象指示部（ハードウェアプリフェッチ対象指示部）
４  メモリアクセス命令生成部
１０  プロセッサユニット
１１  主記憶装置（記憶部）
１２  一次キャッシュ
１２ａ  一次キャッシュメモリ
１２ｂ  制御装置
１３  二次キャッシュ
１３ａ  二次キャッシュメモリ
１３ｂ  制御装置
１４  命令解読部
１５  命令実行部
２０  ハードウェアプリフェッチ制御装置（プリフェッチ制御装置）
２１  プリフェッチアドレスキュー（アドレス情報保持部）
２１ａ，２１ａ−０〜Ｎ  カウンタ
２２  アクセスパターン監視部
２２ａ  ハードウェアプリフェッチ要求発行部
２３  一次キャッシュプリフェッチ要求発行部
２４  二次キャッシュプリフェッチ要求発行部
２５  プリフェッチアドレスキュー更新部（制御部）
２６  カウンタ制御部
【図１】
2009230374.tif 000003
【図２】
2009230374.tif 000004
【図３】
2009230374.tif 000005
【図４】
2009230374.tif 000006
【図５】
2009230374.tif 000007
【図６】
2009230374.tif 000008
【図７】
2009230374.tif 000009
【図８】
2009230374.tif 000010
【図９】
2009230374.tif 000011
【図１０】
2009230374.tif 000012