(57)【特許請求の範囲】
【請求項１】
主記憶装置のデータを１次キャッシュメモリにプリフェッチするプリフェッチ要求を下位のキャッシュメモリに送出するプリフェッチ部と、
前記プリフェッチ部からのプリフェッチ要求に対して応答する応答処理の実行時に前記プリフェッチ要求対象のデータが前記下位のキャッシュメモリに保持されていることが検出されたヒット回数を計数する計数部と、
前記計数されたヒット回数が閾値に達したときに前記プリフェッチ部によるプリフェッチ要求の送出を抑止する抑止部と、
前記抑止部がプリフェッチ要求の送出を抑止したときに起動されるタイマーと、
前記タイマーが所定時間の経過を計時したときに前記抑止部による抑止を解除するとともに、前記計数部をリセットするリセット部と、
前記計数部が所定の時間以内に計数値を更新しない場合に、前記計数部をリセットする第２のリセット部と、
を備える演算処理装置。
【請求項２】
前記下位のキャッシュメモリは、前記１次キャッシュメモリと主記憶装置との間でデータを授受する２次キャッシュメモリであり、
前記計数部は前記２次キャッシュメモリでの前記ヒット回数を計数する請求項１に記載の演算処理装置。
【請求項３】
前記１次キャッシュメモリおよび下位のキャッシュメモリは、３以上の整数Ｎに対してＮ階層の階層構造を有し、１次キャッシュメモリは演算制御部と２次キャッシュメモリとの間でデータを授受し、第Ｎ次キャッシュメモリは第Ｎ−１次キャッシュメモリと主記憶装置との間でデータを授受し、第２次から第Ｎ−１次までのキャッシュメモリはそれぞれ上位のキャッシュメモリと下位のキャッシュメモリとの間でデータを授受し、
前記計数部は前記Ｎ次キャッシュメモリでの前記ヒット回数を計数する請求項１に記載の演算処理装置。
【請求項４】
主記憶装置のデータを１次キャッシュメモリにプリフェッチするプリフェッチ要求を下位のキャッシュメモリで受け付け、
前記受け付けたプリフェッチ要求に対して応答する応答処理の実行時に前記プリフェッチ要求対象のデータが前記下位のキャッシュメモリに保持されていることが検出されたヒット回数を計数し、
前記計数されたヒット回数が閾値に達したときにプリフェッチ要求の送出を抑止し、
前記プリフェッチ要求の送出が抑止されたときにタイマーを起動し、
前記タイマーが所定時間の経過を計時したときに前記プリフェッチ要求の送出の抑止を解除するとともに、前記計数されたヒット回数をリセットし、
所定の時間以内に前記ヒット回数が更新されない場合に、前記計数されたヒット回数をリセットする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
従来から、プリフェッチの精度を向上させるためのアルゴリズムの研究が行われている。特に、ハードウェアによって自動的に生成したプリフェッチアドレスに対してプリフェッチを要求する回路はハードウェアプリフェッチ回路と呼ばれる。ハードウェアプリフェッチ回路は、プロセッサが発行するメモリアクセスのアドレスに規則性があることを命令実行時に検出し、近い将来アクセスされると予測されるデータに対してプリフェッチ要求を生成する。従来から使用されている手法として、ハードウェアプリフェッチ回路が連続アドレスへのアクセスや、「ストライド」と呼ばれる一定間隔のアドレスを検出して、次にアクセスされるアドレスを推測してプリフェッチ要求を生成するものが例示される。この例示された従来の手法は、「ストライドプリフェッチ」と呼ばれる。しかし、従来のプリフェッチ手法は、次にアクセスされるアドレスの傾向（アドレスのパターン）を見つけた後は、プリフェッチを継続的に生成してしまう。その結果として、そのプリフェッチ要求の対象アドレスのデータが継続してキャッシュでヒットすることがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４-１１５８５１号公報
【特許文献２】特開２００９-５９０７７号公報
【特許文献３】特開平４-３４４９３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プロセッサにおけるプリフェッチは、予めアクセスされると予測されるデータをフェッチしておくことにより、メモリアクセスレイテンシを隠蔽することで性能向上を図る手法である。しかし、ハードウェアプリフェッチ回路は、キャッシュでヒットするアドレスをプリフェッチ要求の対象として繰り返し生成することがある。キャッシュヒットするアドレスは、本来はプリフェッチしなくてもよいアドレスといえる。したがって、キャッシュでヒットするアドレスに対するプリフェッチ要求は、無駄な処理を含み、効率向上の効果が薄いプリフェッチ要求であるといえる。
【０００５】
効率向上の効果が薄いプリフェッチであっても、キャッシュメモリ内の制御パイプラインに投入される。したがって、効率向上の効果が薄いプリフェッチは、制御パイプラインを動作させるため、無駄な電力を消費するとともに、他の有用な要求が制御パイプラインに投入できないように作用する。したがって、効率向上の効果が薄いプリフェッチは、プロセッサの性能低下の要因となる可能性がある。
そこで、開示の実施形態の目的は、効率向上の効果が薄いプリフェッチの要求を抑止し、キャッシュメモリにおけるプロセッサの処理効率の向上を図ることにある。
【課題を解決するための手段】
【０００６】
開示の技術の一側面は、演算処理装置によって例示される。本演算処理装置は、主記憶装置のデータを１次キャッシュメモリにプリフェッチするプリフェッチ要求を下位のキャッシュメモリに送出するプリフェッチ部を有する。また、本演算処理装置は、プリフェッチ部からのプリフェッチ要求に対して応答する応答処理の実行時にプリフェッチ要求対象のデータが前記下位のキャッシュメモリに保持されていることが検出されたヒット回数を
計数する計数部を有する。さらに、本演算処理装置は、計数されたヒット回数が閾値に達したときにプリフェッチ部によるプリフェッチ要求の送出を抑止する抑止部を有する。
【発明の効果】
【０００７】
本演算処理装置によれば、効率向上の効果が薄いプリフェッチの要求を抑止し、キャッシュメモリにおけるプロセッサの処理効率を向上することができる。
【図面の簡単な説明】
【０００８】
【図１】実施形態１に係る情報処理装置の構成を例示する図である。
【図２】メモリアクセス要求のフォーマットを例示する図である。
【図３】２次キャッシュ制御パイプライン２３の構成を例示する図である。
【図４】プリフェッチ抑止ユニットの構成を例示する図である。
【図５】ヒットカウンタの構成を例示する図である。
【図６】閾値レジスタの構成を例示する図である。
【図７】閾値テーブルの構成を例示する図である。
【図８】プリフェッチ抑止ユニットの状態遷移をタイミングチャートで例示する図である。
【図９】２次キャッシュ制御パイプラインおよびプリフェッチ抑止ユニットの処理を例示するフローチャートである。
【図１０】実施形態２に係る情報処理装置の構成を例示する図である。
【図１１】変形例に係るプリフェッチ抑止ユニットの構成を例示する図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して、一実施の形態に係る情報処理装置１００、１０１について説明する。以下の実施の形態の構成は例示であり、情報処理装置１００、１０１は実施形態の構成には限定されない。本実施の形態では、キャッシュメモリへのデータのプリフェッチを実行可能なプロセッサにおいて、性能向上の効果が少ない無駄なプリフェッチ要求を削減する。これにより、キャッシュメモリにおける性能向上の効果が少ない動作を抑制できるため、電力の削減および性能の向上といった効果が得られる。
【００１０】
ハードウェア回路によるプリフェッチは、メモリアクセス要求のアドレスの特性、傾向を自動的に識別してプリフェッチアドレスを生成する。ところで、プリフェッチアドレスのキャッシュヒットが一度連続すると、その後のプリフェッチにおいても、プリフェッチアドレスがキャッシュヒットする傾向がある。これは、情報処理装置の処理が以前に行ったアクセスパターンを繰り返すことが多いためである。つまり、予測されたプリフェッチアドレスと、キャッシュされるデータのアドレスとが同じアクセスパターンを繰り返すこととなる。したがって、プリフェッチ要求の対象データがすでにキャッシュメモリにキャッシュされている現象が繰り返されることがある。以下、本実施の形態の情報処理装置１００、１０１は、このような傾向や現象を利用して性能向上の効果が少ないプリフェッチ要求を抑止する。
［実施形態１］
【００１１】
以下、図１から図９を参照して実施形態１に係る情報処理装置１００について説明する。図１に、情報処理装置１００の構成を例示する。情報処理装置１００は、プロセッサ１０と、２次キャッシュメモリユニット２０と、主記憶装置９０を有する。図では、２次キャッシュメモリユニット２０が、外付けでプロセッサ１０に接続されている。しかし、情報処理装置１００の構成が図１に限定される訳ではない。例えば、プロセッサ１０が、２次キャッシュメモリユニット２０の構成要素を内蔵する構成であってもよい。プロセッサ１０は演算処理装置の一例ということができる。ただし、プロセッサ１０と下位のキャッシュメモリである２次キャッシュメモリユニット２０を演算処理装置の一例ということも
できる。以下の実施例では、演算処理装置の構成と作用、および演算処理装置の制御方法が例示される。
【００１２】
図１の例では、プロセッサ１０は、命令制御部１１と、ロード／ストア（ＬＤ／ＳＴ）ユニット１２と、１次キャッシュメモリ１３と、プリフェッチユニット１４とを有する。命令制御部１１は、命令フェッチ、デコード、オペランドフェッチ（データのロード）、命令の実行、実行結果のストア等の処理を制御する。
【００１３】
ＬＤ／ＳＴユニット１２は、ロード処理とストア処理を実行する。ロード処理は、１次キャッシュメモリ１３および２次キャッシュメモリユニット２０等を介した主記憶装置９０からレジスタへのデータの読み出し処理である。ストア処理は、レジスタから１次キャッシュメモリ１３および２次キャッシュメモリユニット２０等を介した主記憶装置９０へのデータの格納である。ただし、１次キャッシュメモリ１３でミスヒットが発生した場合に、ＬＤ／ＳＴユニット１２は、２次キャッシュメモリユニット２０のＦｉｒｓｔ  ＩＮ
Ｆｉｒｓｔ  ＯＵＴ（ＦＩＦＯ）２２の入力ポートにデータ読み出し要求を発行し、１次キャッシュメモリ１３にデータを保持させる。
【００１４】
プリフェッチユニット１４は、プリフェッチ要求を２次キャッシュメモリユニット２０に発行する。プリフェッチ要求は主記憶装置９０に格納されたデータの１次キャッシュメモリ１３への取得を明示的に下位の記憶装置、例えば、２次キャッシュメモリユニット２０あるいは主記憶装置９０に指示する要求といえる。プリフェッチユニット１４はＬＤ／ＳＴユニット１２に併設されており、命令制御部１１からＬＤ／ＳＴユニット１２に発行されるメモリアクセス要求（ロード命令、ストア命令等）のアドレスを監視する。メモリアクセスの対象となるアドレスが所定の規則性を有していることをプリフェッチユニット１４が検出した場合、プリフェッチユニット１４は将来アクセスが発生すると推測されるアドレスを生成する。そして、プリフェッチユニット１４は、生成したアドレスを含むメモリアクセス要求を２次キャッシュメモリユニット２０に対して発行する。２次キャッシュメモリユニット２０は、ＬＤ／ＳＴユニット１２およびプリフェッチユニット１４からのメモリアクセス要求を受け付けるＦＩＦＯ２２、２次キャッシュ制御パイプライン２３、キャッシュタグ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ）２１、プリフェッチ抑止ユニット２４を有する。なお、図１では、２次キャッシュメモリユニットで、主記憶装置９０のデータを保持するキャッシュデータＲＡＭは省略されているが、キャッシュタグＲＡＭ２１に対応づけて設けられる。プリフェッチユニット１４はプリフェッチ部の一例である。２次キャッシュメモリユニット２０は、１次キャッシュメモリ１３と主記憶装置９０との間でデータ授受する下位のキャッシュメモリの一例である。
【００１５】
図２に、プリフェッチユニット１４が発行するメモリアクセス要求のフォーマットを例示する。プリフェッチユニット１４が発行するメモリアクセス要求は、アドレス３２ビットと、プリフェッチフラグ１ビットを有する。アドレス３２ビットは、主記憶装置９０におけるアクセス先のアドレスである。プリフェッチフラグは、メモリアクセス要求がプリフェッチ要求であるか否かを示す。メモリアクセス要求がプリフェッチユニット１４から発行されたものである場合、メモリアクセス要求において、プリフェッチフラグがＯＮにセットされる。
【００１６】
ＦＩＦＯ２２は入力ポートを介してプロセッサ１０からの要求を受け付け、格納する。２次キャッシュ制御パイプライン２３はＦＩＦＯ２２から順次メモリアクセス要求を取得し、メモリアクセス要求に対応する処理を実行する。
【００１７】
図３に、２次キャッシュ制御パイプライン２３の構成を例示する。図３では、プロセッサ１０、ＦＩＦＯ２２、キャッシュタグＲＡＭ２１も例示されている。図のように、２次
キャッシュ制御パイプライン２３は、タグ検索回路２３１、タグ比較器２３２、およびバッファ２３３を有する。
【００１８】
例えば、２次キャッシュメモリユニット２０がセットアソシアティブ方式を採用する場合に、以下のような制御が実行される。ただし、本実施形態１において、２次キャッシュメモリユニット２０がセットアソシアティブ方式のものに限定される訳ではなく、フルアソシアティブ方式、ダイレクトマッピング方式のものであってもよい。
【００１９】
タグ検索回路２３１は、メモリアクセス要求のアドレスの一部（下位アドレス）によって、キャッシュタグＲＡＭ２１のセットを特定し、セット内のタグ（上位アドレス）を検索する。そして、タグ検索回路２３１は、検索された上位アドレスと、下位アドレスとを組み合わせてキャッシュタグＲＡＭ２１から得られるアドレスを生成し、タグ比較器２３２に出力する。タグ比較器２３２は、タグ検索回路２３１で生成されたアドレスと、ＦＩＦＯ２２からのメモリアクセス要求のアドレスとが一致するか否かを判定する。この判定によって、タグ比較器２３２は、キャッシュがヒットするか否かを判定する。キャッシュがヒットすれば、タグ比較器２３２は、キャッシュデータの読み出し回路に対してバッファ２３３へのキャッシュデータの取得を指示し、バッファ２３３に取得されたデータがプロセッサ１０に返される。一方、キャッシュがヒットしなければタグ比較器２３２は、主記憶装置９０の読み出し回路に、主記憶装置９０へのデータの読み出し要求の発行を指示する。主記憶装置９０から読み出されたデータは、バッファ２３３を介して、図示しないキャッシュデータＲＡＭに保持されるととともに、プロセッサ１０に送出される。
【００２０】
さらに、２次キャッシュ制御パイプライン２３は、メモリアクセス要求に含まれるプリフェッチフラグ信号ＰＦと、キャッシュがヒットしたか否かを示すキャッシュヒット信号ＣＨをプリフェッチ抑止ユニット２４に送出する。なお、プリフェッチフラグ信号ＰＦは、ＦＩＦＯ２２のアクセス要求からそのままコピーされ、図３のプリフェッチ抑止ユニット２４に送出される。
【００２１】
以上のように、２次キャッシュ制御パイプライン２３は、キャッシュタグＲＡＭ２１のタグの読み出し、読み出したタグとメモリアクセス要求のアドレスとの比較をパイプラインで実行する。そして、比較結果として、キャッシュヒット信号ＣＨをメモリアクセス要求に含まれるプリフェッチフラグ信号ＰＦとともにプリフェッチ抑止ユニット２４に出力する。
【００２２】
図４に、プリフェッチ抑止ユニット２４の構成を例示する。プリフェッチ抑止ユニット２４は、ＡＮＤゲート２４１と、ヒットカウンタ２４２と、閾値レジスタ２４３と、比較器２４４と、プリフェッチ抑止信号生成部２４５と、タイマー２４６とを有する。図４のように、プリフェッチ抑止ユニット２４からプリフェッチユニット１４に対して、抑止指示信号の信号線が接続されている。
【００２３】
ＡＮＤゲート２４１には、プリフェッチフラグ信号ＰＦとキャッシュヒット信号ＣＨとが入力される。ＡＮＤゲート２４１による入力の積信号は、ヒットカウンタ２４２をインクリメントする。すなわち、キャッシュヒット信号ＣＨとプリフェッチフラグ信号ＰＦがともにＯＮ（真）のときに、ヒットカウンタ２４２はカウントアップされる。したがって、ヒットカウンタ２４２は、２次キャッシュ制御パイプライン２３がプリフェッチ要求に応答する処理の実行する時に、２次キャッシュメモリユニット２０でプリフェッチ要求対象のデータのヒット回数を計数する計数部の一例といえる。すなわち、実施形態１では、計数部の一例としてヒットカウンタ２４２は２次キャッシュメモリでのヒット回数を計数する。ここで、ヒットとは、メモリアクセス要求の対象となるデータが２次キャッシュメモリ等のキャッシュメモリに保持されていることとして例示される。また、命令制御部１
１、ＬＤ／ＳＴユニット１２、１次キャッシュメモリ１３、およびプリフェッチユニット１４を含むプロセッサ１０を上位装置とすると、２次キャッシュメモリユニット２０は下位のキャッシュメモリということができる。
【００２４】
閾値レジスタ２４３には、所定の閾値が格納されている。比較器２４４は、ヒットカウンタ２４２の値と閾値レジスタ２４３の値を比較する。そして、ヒットカウンタ２４２の値が閾値レジスタ２４３によって指定される値と一致すると、比較器２４４は、プリフェッチ抑止信号生成部２４５にプリフェッチ抑止信号の出力を指示するとともに、タイマー２４６を起動させる。なお、実施形態１では、閾値レジスタ２４３は，実際には閾値を複数格納した閾値テーブルから読み出された閾値を出力する。ただし、閾値テーブルを用いないで、閾値レジスタ２４３が直接閾値を保持するようにしてもよい。
【００２５】
その後、タイマー２４６が所定時間計時するまで、プリフェッチ抑止信号生成部２４５は、プリフェッチユニット１４へのプリフェッチ抑止信号をアサート、例えば、ＯＮに設定する。したがって、プリフェッチ抑止信号がアサートされている間、プリフェッチユニット１４からのプリフェッチ要求は抑止される。そして、タイマー２４６は、クロック信号（ＣＬＯＣＫ）にしたがって規定値（規定時間に相当）からカウント値を減算し、カウント値が０になると、プリフェッチ抑止信号生成部２４５およびヒットカウンタ２４２をリセットする。
【００２６】
例えば、タイマー２４６は、プリフェッチ抑止信号生成部２４５にリセット信号を入力する信号線ＲＳ１を有する。また、例えば、タイマー２４６は、ヒットカウンタ２４２にリセット信号を入力する信号線ＲＳ２を有する。信号線ＲＳ１と信号線ＲＳ２のリセット信号は、タイマー２４６の同じ出力インターフェース（信号ポート等）に接続されていてもよい。信号線ＲＳ１と信号線ＲＳ２は、タイマー２４６が所定時間の経過を計時したときに抑止回路（プリフェッチ抑止ユニット２４、プリフェッチ抑止信号生成部２４５）による抑止を解除するとともにカウンタ（ヒットカウンタ２４２）をリセットするリセット部の一例ということができる。タイマー２４６からのリセット信号により、プリフェッチ抑止信号生成部２４５はプリフェッチ抑止信号をネゲート、例えばＯＦＦに設定する。また、タイマー２４６からのリセット信号により、ヒットカウンタ２４２は初期値０からカウントを開始する。タイマー２４６は、プリフェッチ要求の送出を抑止したときに起動されるタイマーの一例である。
【００２７】
以上のように、プリフェッチ抑止ユニット２４には、２つのステートがある。一のステートはプリフェッチ動作ステートである。プリフェッチ動作ステートは、通常動作としてのプリフェッチを動作させている状態である。この間、プリフェッチ抑止信号はＯＦＦとなっている。また、ヒットカウンタ２４２は、初期値０から閾値レジスタ２４３の値になるまで、カウンタ動作を実行する。
【００２８】
一方、他のステートはプリフェッチ抑止ステートである。プリフェッチ抑止ステートは、プリフェッチを停止させている状態である。プリフェッチ抑止ステートでは、プリフェッチ抑止信号がアサートされており、かつ、タイマー２４６がクロックにしたがって減算動作を実行する。
【００２９】
プロセッサ１０が動作開始した後の初期状態は、プリフェッチ動作ステートである。プリフェッチ抑止要求はＯＦＦ（偽）となっていて、通常機能としてプリフェッチが有効となっている。プリフェッチ要求が２次キャッシュ制御パイプライン２３に投入されると、２次キャッシュ制御パイプライン２３およびプリフェッチ抑止ユニット２４は以下のような手順で動作する。
【００３０】
（１）２次キャッシュ制御パイプライン２３は、キャッシュタグＲＡＭ２１を参照し、キャッシュヒットしたかどうかを判定する。キャッシュヒットの場合、２次キャッシュ制御パイプライン２３は、ヒットデータを１次キャッシュメモリ１３に送信するとともに、キャッシュヒット信号ＣＨをプリフェッチ抑止ユニット２４に送出する。キャッシュミスの場合、２次キャッシュ制御パイプライン２３は、主記憶装置９０へのメモリアクセス要求を生成する。２次キャッシュ制御パイプライン２３は、主記憶装置９０から読み出したデータをキャッシュデータＲＡＭに格納するとともに、１次キャッシュメモリ１３に送信する。さらに、２次キャッシュ制御パイプライン２３は、プリフェッチフラグ信号ＰＦをプリフェッチ抑止ユニット２４に送出する。
【００３１】
（２）プリフェッチ抑止ユニット２４は、プリフェッチフラグ信号ＰＦとキャッシュヒット信号ＣＨがともにＯＮの場合に、ヒットカウンタ２４２をインクリメントする。
【００３２】
（３）プリフェッチ抑止ユニット２４は、ヒットカウンタ２４２の値と閾値レジスタ２４３の指定値を比較する。ここで、指定値は、閾値レジスタ２４３の保持する値によって選択される閾値テーブルのエントリに格納された値（図７）をいう。ただし、指定値が、閾値レジスタ２４３の保持する値そのものであってもよい。ヒットカウンタ２４２の値が閾値レジスタ２４３の指定値に達した場合、プリフェッチ抑止ユニット２４は、抑止信号をアサートするとともに、タイマー２４６をスタートする。以降、プリフェッチ抑止ユニット２４の状態はプリフェッチ抑止ステートとなる。
【００３３】
（４）そして、タイマー２４６が計時を終了すると、プリフェッチ抑止ユニット２４は、抑止信号をネゲートし、プリフェッチ動作ステートとなる。また、ヒットカウンタ２４２がリセットされる。
【００３４】
図５にヒットカウンタ２４２の構成を例示する。ヒットカウンタは、例えば、１２−ｂｉｔ幅を持ち、最大４０９５までをカウントすることができる。図６に閾値レジスタ２４３の構成を例示する。実施形態１では、閾値レジスタ２４３は、間接的に閾値テーブルを参照する。閾値テーブルには複数の値が格納されている。そして、閾値レジスタ２４３は、ヒットカウンタ２４２の値と閾値テーブルのどの値と比較するかを制御するために使用する。すなわち、実施形態１では、比較器２４４が参照する実際の閾値は、閾値レジスタ２４３に設定された３−ｂｉｔの値で指定される閾値テーブルのエントリに格納されている。閾値レジスタ２４３は、例えば、図示しないセレクタに選択信号を送り、閾値テーブル中で選択されたエントリから閾値を比較器２４４に出力する。情報処理装置１００が実行するアプリケーションプログラムによって、プリフェッチの頻度などが異なるため、実施形態１のプリフェッチ抑止ユニット２４では、閾値がシステム起動時にコンピュータプログラムで選択可能となっている。ヒットカウンタ２４２が閾値レジスタ２４３で指定された閾値テーブルのエントリの閾値に達すると、プリフェッチ抑止ユニット２４は、プリフェッチ抑止ステートに遷移して、プリフェッチの抑止を開始する。プリフェッチ抑止ユニット２４は、プリフェッチの抑止を開始するとともに、タイマー２４６をスタートする。
【００３５】
タイマー２４６は、例えば、図４のヒットカウンタ２４２と同様１２ビットのカウンタである。ただし、タイマー２４６は、クロックを入力され、初期値から減算（デクリメント）を実行する。タイマー２４６は、プリフェッチ抑止ステートに遷移した後、以下のような動作を行う。タイマー２４６は、クロックにしたがって毎サイクルカウントダウンする。タイマー２４６は値が０になると、プリフェッチ抑止信号生成部２４５およびヒットカウンタ２４２をリセットする。
【００３６】
図８に、プリフェッチ抑止ユニット２４の状態遷移をタイミングチャートで例示する。
ステートがＡＣＴＩＶＥからＩＮＡＣＴＩＶＥに遷移したと同時にＩＮＡＣＴＩＶＥ＿ＣＮＴが例えば値３にセットされる（矢印Ｔ１）。クロックパルスが発生する毎にこのカウンタがデクリメントされ、０になった時点（矢印Ｔ２）でＡＣＴＩＶＥステートに遷移する。プリフェッチ抑止ユニット２４あるいはプリフェッチ抑止信号生成部２４５は、計数されたヒット回数が閾値に達したときにプリフェッチ回路（プリフェッチユニット１４）によるプリフェッチ要求の送出を抑止する抑止部の一例ということができる。
【００３７】
図９に２次キャッシュ制御パイプライン２３およびプリフェッチ抑止ユニット２４の処理を例示する。図９は、フローチャートで例示さているが、これらの処理はハードウェア回路によって実行される。まず、２次キャッシュ制御パイプライン２３にプリフェッチ要求が到着する（Ｓ１）。より具体的には、２次キャッシュ制御パイプライン２３は、ＦＩＦＯ２２からプリフェッチ要求を取り出す。Ｓ１の処理は、リフェッチ要求を下位のキャッシュメモリで受け付けることの一例である。
【００３８】
次に、２次キャッシュ制御パイプライン２３は、プリフェッチによるアクセスを識別し、キャッシュヒットの有無を判定する（Ｓ２）。キャッシュヒットの場合、キャッシュヒット信号ＣＨとともにプリフェッチフラグ信号ＰＦがプリフェッチ抑止ユニット２４に入力される。プリフェッチ抑止ユニット２４は、キャッシュヒット信号ＣＨとプリフェッチフラグ信号ＰＦの積信号でヒットカウンタ２４２をインクリメントする。すなわち、プリフェッチ抑止ユニット２４は、プリフェッチ要求がキャッシュヒットした回数をカウントする（Ｓ３）。Ｓ３の処理は、受け付けたプリフェッチ要求に対して応答する応答処理の実行時にプリフェッチ要求対象のデータが下位のキャッシュメモリに保持されていることが検出されたヒット回数を計数することの一例である。
【００３９】
次に、プリフェッチ抑止ユニット２４は、ヒットカウンタ２４２の値が設定された閾値に達したか否かを判定する（Ｓ４）。なお、Ｓ４の判定で、ヒットカウンタ２４２の値が設定された閾値を超えたか否かを判定してもよい。ヒットカウンタ２４２の値が閾値を達した場合（Ｓ４でＹＥＳ）、プリフェッチ抑止ユニット２４は、プリフェッチユニット１４に対してプリフェッチ要求の発行抑止を指示する（Ｓ５）。Ｓ５の処理は、計数されたヒット回数が閾値に達したときにプリフェッチ要求の送出を抑止することの一例である。また、プリフェッチ抑止ユニット２４は、タイマー２４６をスタートする（Ｓ６）。この結果、一定時間後、プリフェッチ要求の発行抑止が解除され、ヒットカウンタ２４２が０からカウントを再開する。この処理を繰り返すことで、無駄なプリフェッチ、あるいは、データをプリフェッチすることの効果が少ないプリフェッチを削減することが可能となる。
【００４０】
なお、２次キャッシュ制御パイプライン２３は、プリフェッチユニット１４に、プリフェッチしたデータを返す（Ｓ８）。また、Ｓ２の判定で、キャッシュヒットしなかった場合には、２次キャッシュ制御パイプライン２３は、主記憶装置９０へメモリアクセス要求を発行する（Ｓ７）。そして、主記憶装置９０から読み出したデータを２次キャッシュメモリユニット２０（キャッシュデータＲＡＭ）に格納するとともに、プリフェッチユニット１４に読み出したデータを返す。以上の動作により、キャッシュヒットが多く発生するときの無駄なプリフェッチを抑止することができる。
＜実施形態１の効果＞
【００４１】
実施形態の情報処理装置１００によれば、プリフェッチ要求がキャッシュメモリに対して集中して発生した場合に、２次キャッシュメモリにヒットする無駄なプリフェッチ、あるいは効果が少ないプリフェッチが抑止される。このため、キャッシュメモリで消費する電力を削減する効果がある。同時に、ＦＩＦＯ２２を通じて２次キャッシュ制御パイプライン２３に入力されるメモリアクセス要求を処理できるようになるため、メモリアクセス
性能を含むプロセッサ１０の性能が向上する。
【００４２】
本実施形態の効果は、近年、複数の階層からなるキャッシュメモリを装備したプロセッサの場合には顕著になって現れる。通常、ハードウェアプリフェッチのアクセス先アドレスは、命令制御部１１に近いところ、例えば、図１のようにプロセッサ１０内でＬＤ／ＳＴユニット１２に併設したプリフェッチユニット１４で生成される。そのため、プリフェッチユニット１４は、２次キャッシュのキャッシュタグを直接参照することはできない。そのため、プリフェッチユニット１４は、２次キャッシュでキャッシュヒットするアドレスを不要に多数生成してしまう。実施形態１の情報処理装置１００は、そのようなキャッシュヒットするアドレスへの不要なプリフェッチ、効果の少ないプリフェッチを抑止できる。
【００４３】
また、プリフェッチ対象のアドレスが一旦キャッシュヒットすると、キャッシュヒットが継続する傾向がある。したがって、プリフェッチ対象のアドレスがキャッシュヒットするヒット回数を計数し、計数値が閾値に達したときに、プリフェッチを抑止することで、無駄なプリフェッチあるいは効果の少ないプリフェッチを低減できる。
【００４４】
特に、２次キャッシュメモリユニット２０が主記憶装置９０からデータ取得する場合と比較して、１次キャッシュメモリ１３が２次キャッシュメモリユニット２０からデータを取得する方が読み出し時間が短い。したがって、プリフェッチ要求対象のデータが２次キャッシュメモリユニット２０でヒットすると、プリフェッチの効果が少ないといえる。したがって、キャッシュの階層が２階層の場合には、プリフェッチ抑止ユニット２４は、２次キャッシュメモリユニット２０のキャッシュヒットを監視する方が、１次キャッシュメモリ１３のキャッシュヒットを監視するよりもプリフェッチ抑止の効果大きい。
【００４５】
一方、タイマー２４６により、プリフェッチ抑止後の時間を計時し、タイマー２４６が所定時間経過にプリフェッチ抑止を解除することで、本来のプリフェッチの抑止する場合と、実行場合とのバランスをとることができる。すなわち、プリフェッチ抑止ユニット２４は、プリフェッチ抑止ステートからプリフェッチ動作ステートへの遷移を実行できる。［実施形態２］
【００４６】
図１０により、実施形態２に係る情報処理装置１０１を説明する。実施形態２の情報処理装置１０１は、２次キャッシュメモリユニット２０に加えて、３次キャッシュメモリユニット３０を有する。情報処理装置１０１の３次キャッシュメモリユニット３０以外の構成要素は、実施形態１の情報処理装置１００と同様である。そこで、実施形態２の情報処理装置１０１の構成要素のうち、実施形態１の情報処理装置１００の構成要素と同一の構成要素については、同一の符合を付してその説明を省略する。ただし、図１０では、２次キャッシュメモリユニット２０の構成は、簡略化して例示されている。すなわち、図１０では、２次キャッシュ制御パイプライン２３以外の２次キャッシュメモリユニット２０の構成は省略されている。
【００４７】
図のように、３次キャッシュメモリユニット３０は、キャッシュＴＡＧ  ＲＡＭ  ３１と、ＦＩＦＯ３２と、３次キャッシュ制御パイプライン３３と、プリフェッチ抑止ユニット３４を有している。キャッシュＴＡＧ  ＲＡＭ  ３１、ＦＩＦＯ３２、３次キャッシュ制御パイプライン３３、プリフェッチ抑止ユニット３４の構成および作用は、図１のキャッシュＴＡＧ  ＲＡＭ  ２１、ＦＩＦＯ２２、２次キャッシュ制御パイプライン２３、およびプリフェッチ抑止ユニット２４の構成と同様である。プロセッサ１０、下位のキャッシュメモリである２次キャッシュメモリユニット２０、および３次キャッシュメモリユニット３０を演算処理装置の一例ということもできる。以下、実施形態２においても、演算処理装置の構成と作用、および演算処理装置の制御方法が例示される。
【００４８】
ＦＩＦＯ３２は入力ポートを介して、２次キャッシュメモリユニット２０の２次キャッシュ制御パイプライン２３からメモリアクセス要求を受け付ける。メモリアクセス要求がプリフェッチユニット１４から発行されたものである場合、図２と同様に、プリフェッチフラグが付与されている。３次キャッシュ制御パイプライン３３は、キャッシュタグ  ＲＡＭがヒットするか否かを判定し、ヒットする場合には、キャッシュヒット信号ＣＨをＯＮでプリフェッチ抑止ユニット３４に出力する。なお、キャッシュタグ  ＲＡＭがヒットしない場合、３次キャッシュ制御パイプライン３３は、主記憶装置９０にアクセスし、データを読み出す。また、３次キャッシュ制御パイプライン３３は、プリフェッチフラグ信号ＰＦをプリフェッチ抑止ユニット３４に出力する。
【００４９】
プリフェッチ抑止ユニット３４の構成は、図４と同様である。プリフェッチ抑止ユニット３４は、プリフェッチフラグ信号ＰＦがＯＮで、かつ、キャッシュヒット信号ＣＨがＯＮの回数を計数する。そして、計数値が閾値に達すると、プリフェッチ抑止ユニット３４は、プリフェッチ抑止信号をアサートし、プリフェッチユニット１４からのプリフェッチを所定期間抑止する。
【００５０】
以上述べたように、本実施形態の情報処理装置１０１は、１次キャッシュメモリ１３、２次キャッシュメモリユニット２０、３次キャッシュメモリユニット３０を有する。そして、プリフェッチ要求時のアクセス先のアドレスが３次キャッシュメモリユニット３０においてヒットした回数が閾値に達すると、プリフェッチを抑止する。プリフェッチが実行される場合、１次キャッシュメモリ１３と２次キャッシュメモリユニット２０との間、２次キャッシュメモリユニット２０と３次キャッシュメモリユニット３０との間、３次キャッシュメモリユニット３０と主記憶装置９０との間の１以上で、データが授受される。このうち、最も時間を要するのは、３次キャッシュメモリユニット３０と主記憶装置９０との間のデータ授受である。
【００５１】
一方、１次キャッシュメモリ１３と２次キャッシュメモリユニット２０との間、２次キャッシュメモリユニット２０と３次キャッシュメモリユニット３０との間でのデータ授受は、主記憶装置９０へのアクセスの場合と比較して高速に実行可能である。したがって、３次キャッシュメモリユニット３０と主記憶装置９０との間のデータ授受が実行されない場合には、プリフェッチによってもたらされる恩恵やメリットは、この間のデータ授受が実行される場合と比較して少ない。一方、プリフェッチが実行されると、図１のＦＩＦＯ２２、２次キャッシュ制御パイプライン２３、図１０のＦＩＦＯ３２、３次キャッシュ制御パイプライン３３等において、プリフェッチ以外のメモリアクセス命令の処理が進まず、効率を低下させる。
【００５２】
実施形態２の情報処理装置１０１は、プリフェッチによる恩恵、メリットが少なくなる３次キャッシュメモリユニット３０でのヒットの状態が継続することを予測し、所定の期間プリフェッチを抑制する。したがって、実施形態２の情報処理装置１０１は、プリフェッチの効果が低い場合に限定して、プリフェッチ要求を抑制できる。その結果、ＦＩＦＯ２２、２次キャッシュ制御パイプライン２３、ＦＩＦＯ３２、３次キャッシュ制御パイプライン３３を含む構成要素でのメモリアクセス要求を効率的に実行できる。
【００５３】
なお、実施形態２では、３次キャッシュメモリユニット３０を有する情報処理装置１０１を例に説明した。しかし、情報処理装置１０１は、実施形態２の構成に限定される訳ではない。例えば、整数Ｎを４以上の整数した場合に、１次キャッシュメモリ１３、２次キャッシュメモリユニット２０からＮ次キャッシュメモリユニットを有する情報処理装置においても、実施形態２と同様の構成を適用できる。つまり、Ｎ次キャッシュメモリユニットにプリフェッチ抑止ユニット３４と同様の回路を設け、プリフェッチ実行時に、Ｎ次キ
ャッシュメモリユニットでヒットした回数が閾値に達すると、プリフェッチを抑止すればよい。
【００５４】
以上のように、２次キャッシュメモリユニット２０、３次キャッシュメモリユニット３０は、上位装置であるプロセッサ１０等に対して、下位のキャッシュメモリとして例示される。したがって、１次キャッシュメモリ１３および２次キャッシュメモリユニット２０、３次キャッシュメモリユニット３０は、３以上の整数Ｎに対してＮ階層の階層構造を有するといえる。この場合に、１次キャッシュメモリ１３は演算制御部の一例である命令制御部１１、ＬＤ／ＳＴユニット１２等と２次キャッシュメモリユニット２０との間でデータを授受するといえる。また、第Ｎ次キャッシュメモリは第Ｎ−１次キャッシュメモリと主記憶装置９０との間でデータを授受するといえる。また、第２次から第Ｎ−１次までのキャッシュメモリはそれぞれ上位のキャッシュメモリと下位のキャッシュメモリとの間でデータを授受するといえる。
【００５５】
また、実施形態２では説明を省略したが、図１０のプリフェッチ抑止ユニット３４の構成は、図４に例示されたプリフェッチ抑止ユニット２４の構成と同様である。したがって、プリフェッチ抑止ユニット３４は、図４で例示されるヒットカウンタ２４２、閾値レジスタ２４３、比較器２４４、プリフェッチ抑止信号生成部２４５、およびタイマー２４６を有している。プリフェッチ抑止ユニット３４のヒットカウンタ２４２は、Ｎ次キャッシュメモリでのヒット回数を計数するカウンタの一例である。したがって、プリフェッチ抑止ユニット３４は、カウンタ（ヒットカウンタ２４２）による計数値が閾値を超えたときにプリフェッチ回路（プリフェッチユニット１４）によるプリフェッチ要求の送出を抑止するといえる。
［その他の変形例］
【００５６】
上記実施形態１では、プリフェッチ抑止ユニット２４が主記憶装置９０に隣接する２次キャッシュメモリユニット２０に設けられている。また、上記実施形態２では、プリフェッチ抑止ユニット３４が主記憶装置９０に隣接する３次キャッシュメモリユニット３０に設けられている。しかし、情報処理装置１００、１０１の構成が実施形態１、２の構成に限定される訳ではない。例えば、実施形態２の構成において、２次キャッシュメモリユニット２０と、３次キャッシュメモリユニット３０のそれぞれにプリフェッチ抑止ユニット２４、３４が設けられてもよい。２次キャッシュメモリユニット２０と、３次キャッシュメモリユニット３０のそれぞれにプリフェッチ抑止ユニット２４、３４が設けられる場合には、プリフェッチ抑止ユニット２４、３４によるプリフェッチ抑止信号がＯＲゲートで和信号を形成し、プリフェッチを抑止すればよい。すなわち、複数のプリフェッチ抑止ユニット２４、３４からのプリフェッチ抑止信号のいずれかがＯＮの場合に、プリフェッチユニット１４がプリフェッチを抑止するようにしてもよい。
【００５７】
同様に、整数Ｎを４以上の整数した場合に、１次キャッシュメモリ１３、２次キャッシュメモリユニット２０からＮ次キャッシュメモリユニットを有する情報処理装置においても、プリフェッチ抑止ユニット２４、３４等を複数設けてもよい。すなわち、１次キャッシュメモリ１３に対して、複数階層（Ｎ−１階層）の下位のキャッシュメモリのいずれか１以上において、プリフェッチ抑止ユニット２４、３４等を設ければよい。そして、下位の複数階層のキャッシュメモリユニット２０、３０、・・・等に設けた複数のプリフェッチ抑止ユニット２４、３４等からのプリフェッチ抑止信号のいずれかがＯＮの場合に、プリフェッチユニット１４がプリフェッチを抑止するようにしてもよい。このような構成においても、プロセッサ１０から離れた位置、すなわち、２次キャッシュメモリユニット２０からＮ次キャッシュメモリユニットのいずれか１以上において、プリフェッチの対象となるアドレスのデータが継続してキャッシュされている状態が検知できる。したがって、効果が少ないプリフェッチが抑止される。
【００５８】
上記実施形態１、２では、プリフェッチ抑止ユニット２４がプリフェッチユニット１４に対してプリフェッチ要求の発行抑止を指示すとともに、タイマー２４６をスタートする（例えば、図９の上記Ｓ５、Ｓ６）。すなわち、タイマー２４６は、プリフェッチ抑止ステートで動作し、プリフェッチ抑止ステートの時間を制御する。一方、プリフェッチ動作ステートでは、タイマー２４６は使用されない。しかし、本情報処理装置１００、１０１の処理は、上記実施形態１、２に限定される訳ではない。例えば、プリフェッチ動作ステートにおいて、所定時間以上ヒットカウンタ２４２がインクリメントされない場合には、タイマーがヒットカウンタ２４２をリセットするようにしてもよい。すなわち、ヒットカウンタ２４２の更新間隔が所定時間以上長いことをタイマーが計時した場合には、計時した時点までのプリフェッチ要求時のキャッシュヒットがなかったものとしてもよい。
【００５９】
図１１に、変形例に係るプリフェッチ抑止ユニット２４Ａの構成を例示する。図１１の例では、図４と比較して、さらに、タイマー２４６Ａが設けられている。タイマー２４６Ａは、プリフェッチフラグ信号ＰＦとキャッシュヒット信号ＣＨとの積信号によってリセットされ、所定時間を計時する。そして、タイマー２４６Ａは、所定時間計時後、ヒットカウンタ２４２をリセットし、計数値を０にする。このため、プリフェッチフラグ信号ＰＦとキャッシュヒット信号ＣＨとの積信号の入力間隔がタイマー２４６Ａで計時される所定時間よりも長いとヒットカウンタ２４２は、プリフェッチフラグ信号ＰＦとキャッシュヒット信号ＣＨとの積信号による計数を実行しない。
【００６０】
このような構成にすることで、所定時間よりも長い発生間隔で、プリフェッチ要求に対するキャッシュヒットが発生しても、プリフェッチ抑止信号がプリフェッチユニット１４に送出されない。ある程度長い時間をおいて、プリフェッチ要求に対するキャッシュヒットが発生しても、プリフェッチ要求に対するキャッシュヒットが継続するとは限らないからである。したがって、図１１の構成では、所定時間以内で継続してプリフェッチ要求に対するキャッシュヒットが継続する場合に、プリフェッチ抑止がなされることになる。タイマー２４６Ａ及びタイマー２４６Ａからヒットカウンタをリセットする信号線ＲＳ３が第２のリセット部の一例である。
【００６１】
なお、タイマー２４６Ａは、タイマー２４６と兼用されてもよい。タイマー２４６Ａは、プリフェッチ動作ステートで動作し、タイマー２４６は、プリフェッチ抑止ステートで動作するので、兼用可能である。タイマー２４６でタイマー２４６Ａを代用する場合には、タイマー２４６と信号線ＲＳ２とが第２のリセット回路となる。また、その場合に、ＡＮＤゲート２４１からタイマー２４６をリセットするようにすればよい。すなわち、プリフェッチ動作ステートでは、ＡＮＤゲート２４１がタイマー２４６をリセットするようにすればよい。
【符号の説明】
【００６２】
１０    プロセッサ
１１    命令制御部
１２    ＬＤ／ＳＴユニット
１３    １次キャッシュメモリ
１４    プリフェッチユニット
２０    ２次キャッシュメモリ
２１    キャッシュタグＲＡＭ
２２    ＦＩＦＯ
２３    ２次キャッシュ制御パイプライン
２４    プリフェッチ抑止ユニット
３０    ３次キャッシュメモリ
９０    主記憶装置
２４１    ＡＮＤゲート
２４２    ヒットカウンタ
２４３    閾値レジスタ
２４４    比較器
２４５    プリフェッチ抑止信号生成部
２４６、２４６Ａ  タイマー
ＰＦ    プリフェッチフラグ信号
ＣＨ    キャッシュヒット信号
【図１】
0006627629.tif 000002
【図２】
0006627629.tif 000003
【図３】
0006627629.tif 000004
【図４】
0006627629.tif 000005
【図５】
0006627629.tif 000006
【図６】
0006627629.tif 000007
【図７】
0006627629.tif 000008
【図８】
0006627629.tif 000009
【図９】
0006627629.tif 000010
【図１０】
0006627629.tif 000011
【図１１】
0006627629.tif 000012