(57)【特許請求の範囲】
【請求項１】
プリフェッチアクセスであるか否かが示されたタグを有するタグメモリと、
プロセッサ毎のプリフェッチの信頼度を有するプリフェッチ信頼度格納部と、
前記タグとアクセスアドレスとを比較し、前記プリフェッチアクセスであることが示された前記タグに対してキャッシュミスした場合は、前記プリフェッチ信頼度格納部に対して前記プリフェッチの信頼度を下げる指示を出し、前記プリフェッチアクセスであることが示された前記タグに対してキャッシュヒットした場合は、前記プリフェッチアクセスであることを消し、前記プリフェッチ信頼度格納部に対して前記プリフェッチの信頼度を上げる指示を出すタグ比較部と
を具備することを特徴とするキャッシュシステム。
【請求項２】
前記プリフェッチの信頼度に応じて、前記キャッシュミスによって前記プリフェッチアクセスでキャッシュに格納されるデータの置き換え優先度を増減させることを特徴とする請求項１に記載のキャッシュシステム。
【請求項３】
前記プリフェッチの信頼度に応じて、未実行の前記プリフェッチアクセスが溜まった場合に、前記プリフェッチの信頼度の低いものから削除し、前記プリフェッチの信頼度の高いものから実行することを特徴とする請求項１に記載のキャッシュシステム。
【請求項４】
前記キャッシュシステムは、上位キャッシュと下位キャッシュとの２層以上で構成され、
前記下位キャッシュから前記上位キャッシュへ前記プリフェッチアクセスにより読み出したデータを実際に使用する場合に、前記データが含まれる前記下位キャッシュの前記データの置き換え優先度を下げることを特徴とする請求項１に記載のキャッシュシステム。
【請求項５】
前記タグは、前記プリフェッチアクセスであるか否かによりＯＮ／ＯＦＦを示すプリフェッチフラグを含み、
前記プリフェッチ信頼度格納部は、前記プロセッサ毎の前記プリフェッチの信頼度を示すカウンタを有し、
前記タグ比較部は、前記キャッシュミスで、かつ、前記プリフェッチフラグがＯＮの場合、前記カウンタを１減算する指示を出し、前記キャッシュヒットで、かつ、前記プリフェッチフラグがＯＮの場合、前記プリフェッチフラグをＯＦＦにし、前記カウンタを１加算する指示を出すことを特徴とする請求項１に記載のキャッシュシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリフェッチアクセスを行うキャッシュシステムに関する。
【背景技術】
【０００２】
動画像処理等でよく行われる処理として、配列のような規則的な構造をロードして演算を繰り返す処理がある。このような処理を高速に行う方法として、プリフェッチがある。例えば特許文献１等に開示されるプロセッサにおけるデータプリフェッチアクセスとは、次のようなアクセスである。配列のように決まった間隔でアクセスされるデータ構造にアクセスする際に、未来に使うと思われるデータをその間隔から予測する。そして、キャッシュに対しキャッシュに予測したデータがなければ予め格納するよう要求しておき、実際にそのデータを使う時にそのデータがキャッシュに入っているようにする。
【０００３】
また、命令についてもプリフェッチは使用される。命令は連続して実行されることが多いため、連続する命令を予めキャッシュに格納するよう要求する方法や、非連続な命令列についても今までの実行パターンから予測してプリフェッチを行う方法がある。
【０００４】
しかしながら、このようなプリフェッチは、アドレスを予測してデータをリードするので、予測が外れた場合は無駄にメモリアクセス数を増やしてしまう結果となる。さらに、その無駄なプリフェッチが有効な他のデータを追い出してしまうので、その追い出したデータに後にアクセスする際、さらにメモリアクセスが必要になってしまう。この現象は、命令とデータを共に扱うことが多い下位のＬ２、Ｌ３キャッシュについては、命令プリフェッチがデータを、データプリフェッチが命令を追い出すことが発生するため、性能への悪影響が大きくなる。
【０００５】
上述するような無駄なプリフェッチを防ぐためには、ソフトウェアから明示的にアドレスを指定してプリフェッチを行うという手法がある。しかし、この場合、キャッシュの構成を意識してプログラミングを行うことをソフトウェア開発者に要求することになり、ソフトウェア開発者の負担が大きくなってしまう。
【特許文献１】特開２００５−２４２５２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、無駄なプリフェッチによる悪影響を抑制することが可能なキャッシュシステムを提供する。
【課題を解決するための手段】
【０００７】
本発明の一態様によるキャッシュシステムは、プリフェッチアクセスであるか否かが示されたタグを有するタグメモリと、プロセッサ毎のプリフェッチの信頼度を有するプリフェッチ信頼度格納部と、前記タグとアクセスアドレスとを比較し、前記プリフェッチアクセスであることが示された前記タグに対してキャッシュミスした場合は、前記プリフェッチ信頼度格納部に対して前記プリフェッチの信頼度を下げる指示を出し、前記プリフェッチアクセスであることが示された前記タグに対してキャッシュヒットした場合は、前記プリフェッチアクセスであることを消し、前記プリフェッチ信頼度格納部に対して前記プリフェッチの信頼度を上げる指示を出すタグ比較部とを具備する。
【発明の効果】
【０００８】
本発明によれば、無駄なプリフェッチによる悪影響を抑制することが可能なキャッシュシステムを提供できる。
【発明を実施するための最良の形態】
【０００９】
本発明の実施の形態を以下に図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【００１０】
［１］第１の実施形態
第１の実施形態は、プリフェッチで格納したキャッシュラインを実際に使用したか否かによってプリフェッチの信頼度を定義し、信頼度の低いプリフェッチについてはキャッシュの置き換え優先度を上げ、無駄なプリフェッチがキャッシュ内に長く溜まることを抑制する。
【００１１】
［１−１］キャッシュシステムの構成
図１は、本発明の第１の実施形態に係るキャッシュシステムの概略的な構成図を示す。以下に、本実施形態に係るキャッシュシステムの概略的な構成について説明する。
【００１２】
図１に示すように、キャッシュシステム１は、プロセッサ１０−１、１０−２、キャッシュ２０を備えている。キャッシュ２０は、タグメモリ２１、タグ比較部２２、プリフェッチ信頼度格納部２３、データメモリ２４で構成される。
【００１３】
プロセッサ１０−１、１０−２は、メモリアクセスの際にキャッシュ２０へアクセスする。本実施形態では、２つのプロセッサ１０−１、１０−２で１つのキャッシュ２０を共有している。但し、プロセッサの数は１以上であればよく、１つのプロセッサのみがキャッシュ２０にアクセスしてもよい。
【００１４】
キャッシュ２０は、Ｌ１、Ｌ２、Ｌ３等の様々な階層に置かれるが、本実施形態では、階層を特定しない。また、キャッシュ２０は、連想度（associative）によって、direct cache、set-associative cache、full-associative cacheと複数の種類があるが、本実施形態では、set-associative若しくはfull-associative cacheを対象とする。
【００１５】
タグメモリ２１は、タグ情報が格納されている。タグ比較部２２は、タグメモリ２１から該当するインデックスのタグ情報を読み出し、このタグ情報とプロセッサ１０−１、１０−２からのアクセスアドレスとを比較する。プリフェッチ信頼度格納部２３は、プロセッサ１０−１、１０−２毎のプリフェッチの信頼度を格納し、タグ比較部２２の比較結果に応じてこの信頼度の増減が行われる。データメモリ２４は、データが一時的に格納されている。
【００１６】
［１−２］キャッシュへのアクセスの概要
プロセッサ１０−１、１０−２からキャッシュ２０へのアクセスは、通常のキャッシュアクセスとプリフェッチアクセスとの２通りがある。プリフェッチアクセスの場合、キャッシュ２０に必要なデータが使用時に入っているように、予測したデータを予め格納する。この際、対象のデータがキャッシュ２０内に存在する場合はそこで終了し、存在しない場合はキャッシュ２０に対象のデータを格納して終了する。いずれのときも、プリフェッチアクセスの場合、プロセッサ１０−１、１０−２に対して要求されたデータは返さない。
【００１７】
図１を用いて、本実施形態におけるキャッシュ２０へのアクセスについて、以下に説明する。
【００１８】
まず、タグメモリ２１から複数のタグのタグ情報を読み出す。そして、タグ比較部２２で、タグ情報のタグアドレスとアクセスアドレスとの比較を行う。その結果、両者が一致する場合（キャッシュヒット）は、その一致するタグを選択する。一方、両者が一致しない場合（キャッシュミス）は、置き換えの優先度に従って、入れ替えるタグを選択する。
【００１９】
このような比較の結果に応じて、タグ比較部２２は、プリフェッチ信頼度格納部２３に対し、プロセッサ毎の信頼度を示すカウンタの増減の指示を出す。具体的には、キャッシュヒット時で、かつ、アクセスアドレスと一致するタグがプリフェッチにより格納されたものである場合は、プリフェッチ信頼度格納部２３に対して、このプリフェッチを行ったプロセッサ１０−１の信頼度を上げる指示を出す。一方、キャッシュミス時で、かつ、入れ替えるタグがプリフェッチにより格納されたものである場合は、プリフェッチ信頼度格納部２３に対して、このプリフェッチを行ったプロセッサ１０−１の信頼度を下げる指示を出す。
【００２０】
そして、キャッシュミスの結果、プリフェッチアクセスによりデータを下位のメモリからキャッシュ２０に読み込む場合、プリフェッチ信頼度格納部２３の信頼度を参照し、データの置き換え優先度を考慮する。つまり、信頼度の低いプロセッサによるプリフェッチの場合、プリフェッチで格納されるデータがキャッシュ２０内に溜まる時間を短くするために、そのデータの置き換えの優先度を高く設定する。
【００２１】
以上のように、本実施形態では、プリフェッチで格納したキャッシュラインを実際に使用したか否かによってプリフェッチの信頼度を定義し、信頼度の低いプリフェッチについてはキャッシュの置き換え優先度を上げ、無駄なプリフェッチがキャッシュ２０内に長く溜まることを抑制する。
【００２２】
［１−３］タグ情報
図２は、本発明の第１の実施形態に係るタグメモリのタグ情報を示す。以下に、本実施形態のタグメモリのタグ情報について説明する。
【００２３】
図２に示すように、本実施形態のタグ情報３０は、通常のタグ情報にプリフェッチフラグとプロセッサのＩＤが追加される。つまり、本実施形態のタグ情報３０は、タグアドレス（Ｔａｇ）、バリッド（Ｖａｌｉｄ）、ダーティ（Ｄｉｒｔｙ）、プリフェッチフラグ（Ｐｒｅｆｅｔｃｈ）、プロセッサのＩＤ（ＩＤ）が規定されている。但し、プロセッサの数が１つの場合、プロセッサのＩＤは省略可能である。
【００２４】
タグアドレス（Ｔａｇ）は、データアドレスを示す。バリッド（Ｖａｌｉｄ）は、キャッシュされたデータがまだ有効であるか否かを示す。ダーティ（Ｄｉｒｔｙ）は、該当のデータが下位階層のメモリの値から変更されているか否かを示す。なお、ダーティはWrite Throughキャッシュには存在しない。プリフェッチフラグ（Ｐｒｅｆｅｔｃｈ）は、プリフェッチアクセスによるデータであるか否かを示す。プロセッサのＩＤ（ＩＤ）は、該当するプロセッサ１０−１、１０−２のＩＤを示す。
【００２５】
［１−４］プリフェッチアクセスにおけるタグ情報の変化
図３は、本発明の第１の実施形態に係るプリフェッチアクセスにおけるタグ情報の変化を示す。以下に、本実施形態に係るプリフェッチアクセスにおけるタグ情報の変化について説明する。
【００２６】
まず、タグ情報３０の初期状態は、図３の状態Ａであったとする。このような状態Ａに対して、プロセッサ１０−１（ＩＤ＝１）がデータ０ｘ４０のプリフェッチアクセスを行ったとする。
【００２７】
このプリフェッチアクセスがキャッシュミスとなった場合、キャッシュ２０にデータ０ｘ４０が格納される。この際、データ０ｘ４０についてのタグ情報３０のプリフェッチフラグ（Ｐｒｅｆｅｔｃｈ）はＯＮとし、プリフェッチを行ったプロセッサ１０−１のＩＤを格納する。ここで、ＯＮ＝１、ＯＦＦ＝０とする。このため、図３の状態Ｂに示すように、プリフェッチフラグ（Ｐｒｅｆｅｔｃｈ）は１、プロセッサ１０−１のＩＤ（ＩＤ）は１となる。従って、プリフェッチアクセスによりキャッシュ２０に格納されたデータのタグ情報３０は、プリフェッチアクセスを行ったプロセッサＩＤとプリフェッチアクセスであることが示される。
【００２８】
一方、通常のキャッシュアクセスがキャッシュヒットした場合は、該当のタグ情報３０のプリフェッチフラグ（Ｐｒｅｆｅｔｃｈ）をＯＦＦとする。つまり、図３の状態Ｃに示すように、プリフェッチフラグ（Ｐｒｅｆｅｔｃｈ）は０となる。従って、プリフェッチアクセスであることを示すタグ情報３０を持つタグにキャッシュアクセスした場合には、プリフェッチアクセスである情報を消すことになる。
【００２９】
［１−５］プリフェッチ信頼度格納部
図４は、本発明の第１の実施形態に係るプリフェッチ信頼度格納部の内部構成の概略図を示す。以下に、本実施形態に係るプリフェッチ信頼度格納部の概略的な内部構成について説明する。
【００３０】
図４に示すように、プリフェッチ信頼度格納部２３は、カウンタ４０−１、４０−２を備えている。このカウンタ４０−１、４０−２の数はプロセッサ１０−１、１０−２の数に対応している。このため、本実施形態では、プロセッサ１０−１、１０−２を２つ設けているため、カウンタ４０−１、４０−２も２つ設けている。
【００３１】
プリフェッチ信頼度格納部２３は、プロセッサ１０−１、１０−２からのプリフェッチアクセスのアドレス予測の信頼度を格納している。この信頼度は、プロセッサ１０−１、１０−２毎にカウンタ４０−１、４０−２で管理される。
【００３２】
このようなプリフェッチ信頼度格納部２３は、次のように動作する。まず、カウンタ４０−１、４０−２に対して、タグ比較結果に基づく加減算指示Ｘが入力される。この加減算指示Ｘに応じて、カウンタ４０−１、４０−２の値を増減する。カウンタ４０−１、４０−２の現在の値は、そのまま出力される。
【００３３】
ここでは、例えば、プリフェッチの信頼度は０〜３の４通りの数値を通り、この数値が高い程、信頼度が高く、プリフェッチのアドレス予測が正確であると判断されるとする。尚、プリフェッチの信頼度の初期値は、０〜３のどれでもよい。
【００３４】
［１−６］プリフェッチ信頼度格納部への加減算指示
図５は、本発明の第１の実施形態に係るプリフェッチ信頼度格納部への加減算指示の生成論理を示す。以下に、本実施形態のプリフェッチアクセスによるプリフェッチ信頼度格納部への加減算指示の生成について説明する。尚、図５は、４wayキャッシュの例であり、プロセッサ１０−１（ＩＤ＝１）がデータ０ｘ４０のアクセスを行ったとする。
【００３５】
まず、タグメモリ２１から複数のタグ０〜３のタグ情報３０を読み出す。そして、このタグ情報３０のタグアドレスとプロセッサ１０からのアクセスアドレス３１とを、タグ比較部２２で比較する。その結果、両者が一致する場合（キャッシュヒット）は、その一致するタグを選択し、両者が一致しない場合（キャッシュミス）は、入れ替えるタグを選択する。ここで、ヒット／ミス情報３２は、一致するタグがあった場合は１、一致するタグがなかった場合は０となる。その後、プリフェッチフラグ（Ｐｒｅｆｅｔｃｈ）を参照し、キャッシュヒット又はキャッシュミスに応じてプリフェッチの信頼度の増減を行い、プリフェッチ信頼度格納部２３への加減算指示Ｘを出す。
【００３６】
具体的には、キャッシュヒット時（ヒット／ミス情報３２が１）で、かつ、プリフェッチフラグ（Ｐｒｅｆｅｔｃｈ）がＯＮ（１）の場合、そのタグ情報３０のプロセッサＩＤ（ＩＤ）が示すプロセッサ１０−１に対応する信頼度を１加算する指示Ｘを出す。つまり、プリフェッチで読んだデータが使われたことを意味するため、プロセッサ１０−１のプリフェッチの信頼度を上げる。
【００３７】
一方、通常のキャッシュアクセス、プリフェッチアクセスを問わずにキャッシュミスになった時（ヒット／ミス情報３２が０）で、かつ、置き換える対象のタグ情報３０のプリフェッチフラグ（Ｐｒｅｆｅｔｃｈ）がＯＮ（１）の場合、そのタグ情報３０のプロセッサＩＤ（ＩＤ）が示すプロセッサ１０−１に対応する信頼度を１減算する指示Ｘを出す。つまり、プリフェッチで読んだデータが使われなかったことを意味するため、プロセッサ１０−１のプリフェッチの信頼度を下げる。
【００３８】
以上のように、プリフェッチ信頼度格納部２３への加減算指示Ｘは、キャッシュヒットし、かつ、プリフェッチフラグがＯＮの場合は、プリフェッチの信頼度を加算する指示となり、キャッシュミスし、かつ、プリフェッチフラグがＯＮの場合は、プリフェッチの信頼度を減算する指示となる。
【００３９】
［１−７］キャッシュ置き換えの優先度
図６は、本発明の第１の実施形態に係るプリフェッチアクセス時のキャッシュ置き換え優先順を説明するための図を示す。以下に、本実施形態に係るプリフェッチアクセス時におけるキャッシュ置き換えの優先順について説明する。
【００４０】
本実施形態では、プリフェッチアクセスでデータを下位のメモリからキャッシュ２０に読み込む際、プリフェッチアクセスを行ったプロセッサ１０−１、１０−２のプリフェッチの信頼度を参照し、この信頼度が高いほど、プリフェッチしたデータの置き換えの際の優先度を低くする。
【００４１】
図６の例では、キャッシュ２０は4way set associativeとし、プリフェッチの対象インデックスのキャッシュは、プリフェッチアクセス前にアドレスＡ、Ｂ、Ｃ、Ｄのデータが格納されているとする。置き換えポリシは特に指定しないが、プリフェッチアクセス前の置き換え優先度は、（６ａ）に示す通りであったとする。（６ａ）では、左のデータほど置き換え優先度が高いため、キャッシュミスによって置き換えが起きた際には左のデータから順に選択されることを意味する。
【００４２】
このような状態において、プリフェッチにより格納されるアドレスをＰとする。また、プリフェッチの信頼度は、０〜３の４段階に設定され、０が最も優先度が低く、１、２、３の順に優先度が高くなる。
【００４３】
プリフェッチの信頼度が３と最も高い場合は、（６ｂ）に示すように、データＰの置き換えの優先度は最も低く設定される。従って、本例の場合、データＰは最も右側に格納される。プリフェッチの信頼度が２の場合は、（６ｃ）に示すように、データＰの置き換えの優先度は２番目に低く設定される。従って、本例の場合、データＰは右側から２番目に格納される。プリフェッチの信頼度が１の場合は、（６ｄ）に示すように、データＰの置き換えの優先度は３番目に低く設定される。従って、本例の場合、データＰは右側から３番目に格納される。プリフェッチの信頼度が０と最も低い場合は、（６ｅ）に示すように、データＰの置き換えの優先度は最も高く設定される。従って、本例の場合、データＰは最も左側に格納される。
【００４４】
このように、プリフェッチの信頼度が下がるにつれ、データＰの置き換えの優先度は上がっていき、プリフェッチの信頼度が最も低い場合は、次にキャッシュミスが起きた時の入れ替えの対象となる。
【００４５】
尚、ここでは、信頼度と置き換えの優先度が１対１に対応する例を説明したが、これに限定されない。例えば、置き換えの優先度に対して複数の信頼度を割り当てることも可能である。具体的には、信頼度が３と２の時は、データＰの置き換えの優先度は（６ｂ）に示すようにし、信頼度が１と０の時は、データＰの置き換え優先度は（６ｃ）に示すようにしてもよい。
【００４６】
［１−８］効果
上記第１の実施形態によれば、キャッシュシステム１にはプリフェッチ信頼度格納部２３が備えられ、このプリフェッチ信頼度格納部２３はプロセッサ１０−１、１０−２毎のプリフェッチの信頼度を格納したカウンタ４０−１、４０−２を有している。このカウンタ４０−１、４０−２には、プリフェッチフラグがＯＮのタグに対してキャッシュミスした場合は信頼度を下げ、プリフェッチフラグがＯＮのタグに対してキャッシュヒットした場合は信頼度を上げる加減算指示Ｘが入力される。そして、プリフェッチアクセスでキャッシュ２０にデータを格納する際、プリフェッチアクセスを行ったプロセッサ１０−１、１０−２の信頼度を参照し、この信頼度が低いほどデータの置き換えの際の優先度を高くする。
【００４７】
以上のように、キャッシュ２０にプリフェッチしたデータの使用状況を監視し、このプリフェッチしたデータが使われない回数が使った回数と比較して多い場合、プリフェッチの信頼度は低下する。この時は、プリフェッチのアドレス予測が外れる回数が多いということなので、プリフェッチが無駄になる可能性が高い。このような場合、本実施形態では、プリフェッチで読み込んだ信頼度の低い無駄なデータがキャッシュ２０内に留まる時間を短くすることができるため、他のデータがキャッシュ２０内に留まる時間を延ばすことができる。このため、無駄なプリフェッチの悪影響を減らすことができる。
【００４８】
［２］第２の実施形態
第２の実施形態は、プリフェッチで格納したキャッシュラインを実際に使用したか否かによってプリフェッチの信頼度を定義し、未処理のプリフェッチが溜まったときに、信頼度の低いプリフェッチから削除し、信頼度の高いプリフェッチから優先して実行することで、無駄なプリフェッチがキャッシュ内に長く溜まることを抑制する。尚、ここでは、第１の実施形態と同様の点については説明を省略する。
【００４９】
［２−１］キャッシュシステムの構成
図７は、本発明の第２の実施形態に係るキャッシュシステムの概略的な構成図を示す。以下に、本実施形態に係るキャッシュシステムの概略的な構成について説明する。
【００５０】
図７に示すように、第２の実施形態では、第１の実施形態のキャッシュシステム１にキュー２５をさらに備えている。このキュー２５は、本実施形態では１つであるが、複数でもよく、通常のキャッシュアクセスとプリフェッチアクセスで格納されるキュー２５が異なっていてもよい。
【００５１】
［２−２］キャッシュへのアクセス
プロセッサ１０−１、１０−２からは、第１の実施形態と同様に、通常のキャッシュアクセスとプリフェッチアクセスとが行われ、キュー２５に一旦格納されてからキャッシュ２０にアクセスされる。キャッシュミスによるデータの格納等で、キャッシュ２０にアクセスできない場合は、キャッシュアクセスやプリフェッチアクセスはキュー２５に溜まる。
【００５２】
キュー２５に複数のプロセッサ１０−１、１０−２からの未処理のプリフェッチが溜まった場合、次にキャッシュ２０にアクセスするプリフェッチアクセスを選択する際、プリフェッチ信頼度格納部２３を参照して、信頼度の高いプロセッサ１０−１、１０−２のプリフェッチアクセスから優先して選択する。また、キュー２５に空きがない状態で次のキャッシュアクセスが実行された場合、信頼度の低いプロセッサ１０−１、１０−２のプリフェッチアクセスから順にキャンセルする。
【００５３】
尚、本実施形態では、プリフェッチアクセスによりデータを下位のメモリからキャッシュ２０に読み込む場合、第１の実施形態と同様、プリフェッチ信頼度格納部２３の信頼度を参照し、データの置き換え優先度を考慮してもよい。つまり、信頼度の低いプロセッサによるプリフェッチの場合、プリフェッチで格納されるデータがキャッシュ２０内に溜まる時間を短くするために、そのデータの置き換えの優先度を高く設定する。
【００５４】
［２−３］効果
上記第２の実施形態によれば、キャッシュシステム１にはプリフェッチ信頼度格納部２３が備えられ、このプリフェッチ信頼度格納部２３はプロセッサ１０−１、１０−２毎のプリフェッチの信頼度を格納したカウンタ４０−１、４０−２を有している。このカウンタ４０−１、４０−２には、プリフェッチフラグがＯＮのタグに対してキャッシュミスした場合は信頼度を下げ、プリフェッチフラグがＯＮのタグに対してキャッシュヒットした場合は信頼度を上げる加減算指示Ｘが入力される。そして、この信頼度を参照し、無駄になる可能性が高いプリフェッチはキャンセルし、有効である可能性が高いプリフェッチを優先して実行する。これにより、キャッシュ２０に無駄なプリフェッチによるデータが格納されることを防ぐことができるため、無駄なプリフェッチの悪影響を減らすことができる。
【００５５】
［３］第３の実施形態
第３の実施形態は、キャッシュが階層構造になっている例である。尚、ここでは、第１の実施形態と同様の点については説明を省略する。
【００５６】
［３−１］キャッシュシステムの構成
図８は、本発明の第３の実施形態に係るキャッシュシステムの概略的な構成図を示す。以下に、本実施形態に係るキャッシュシステムの概略的な構成について説明する。
【００５７】
図８に示すように、第３の実施形態のキャッシュは、上位のＬ１キャッシュ２０ａ−１、２０ａ−２と下位のＬ２キャッシュ２０ｂとからなる階層構造になっている。プロセッサ１０−１、１０−２は、上位のＬ１キャッシュ２０ａ−１、２０ａ−２をそれぞれ有する。このＬ１キャッシュ２０ａ−１、２０ａ−２より下位のＬ２キャッシュ２０ｂは、複数のプロセッサ１０−１、１０−２で共有される。但し、プロセッサの数は１以上であればよい。
【００５８】
［３−２］キャッシュへのアクセスの概要
プロセッサ１０−１、１０−２からＬ２キャッシュ２０ｂに要求されるアクセスは、通常のキャッシュアクセスと、Ｌ２キャッシュ２０ｂへのプリフェッチアクセス（以下、Ｌ２プリフェッチアクセス又はＬ２プリフェッチと称す）と、Ｌ１キャッシュ２０ａ−１、２０ａ−２へのプリフェッチアクセス（以下、Ｌ１プリフェッチアクセス又はＬ１プリフェッチと称す）との３通りある。
【００５９】
Ｌ１プリフェッチアクセスが実行された場合、次のようになる。まず、Ｌ２キャッシュ２０ｂに対象のデータが存在する場合は、プロセッサ１０−１、１０−２にデータを返す。一方、Ｌ２キャッシュ２０ｂに対象のデータが存在しない場合は、下位のメモリから該当のデータをＬ２キャッシュ２０ｂに格納し、プロセッサ１０−１、１０−２にデータを返す。
【００６０】
さらに、プロセッサ１０−１、１０−２はＬ１プリフェッチアクセスで読み出したデータに対してアクセスした際に、その対象のアドレスとＬ１プリフェッチが当たったことをＬ２キャッシュ２０ｂに通知する。
【００６１】
［３−３］タグメモリのタグ情報
図９は、本発明の第３の実施形態に係るタグメモリのタグ情報を示す。以下に、本実施形態のタグメモリのタグ情報について説明する。
【００６２】
図９に示すように、本実施形態のタグ情報３０は、通常のタグ情報にＬ１プリフェッチフラグとＬ２プリフェッチフラグとプロセッサのＩＤが追加される。つまり、本実施形態のタグ情報３０は、タグアドレス（Ｔａｇ）、バリッド（Ｖａｌｉｄ）、ダーティ（Ｄｉｒｔｙ）、Ｌ１プリフェッチフラグ（Ｌ１Ｐｒｅｆｅｔｃｈ）、Ｌ２プリフェッチフラグ（Ｌ２Ｐｒｅｆｅｔｃｈ）、プロセッサのＩＤ（ＩＤ）が規定されている。但し、プロセッサの数が１つの場合、プロセッサのＩＤは省略可能である。
【００６３】
Ｌ１プリフェッチフラグ（Ｌ１Ｐｒｅｆｅｔｃｈ）は、Ｌ１プリフェッチによるデータであるか否かを示す。Ｌ２プリフェッチフラグ（Ｌ２Ｐｒｅｆｅｔｃｈ）は、Ｌ２プリフェッチによるデータであるか否かを示す。
【００６４】
［３−４］Ｌ２プリフェッチアクセスにおけるタグ情報の変化
図１０は、本発明の第３の実施形態に係るＬ２プリフェッチアクセスにおけるタグ情報の変化を示す。以下に、本実施形態に係るＬ２プリフェッチアクセスにおけるタグ情報の変化について説明する。
【００６５】
まず、タグ情報３０の初期状態は、図１０の状態Ａであったとする。このような状態Ａに対して、プロセッサ１０−１（ＩＤ＝１）がデータ０ｘ４０のＬ２プリフェッチアクセスを行ったとする。
【００６６】
このＬ２プリフェッチによってＬ２キャッシュ２０ｂに格納したデータについてのタグ情報３０のＬ２プリフェッチフラグ（Ｌ２Ｐｒｅｆｅｔｃｈ）をＯＮとして、プリフェッチを行ったプロセッサ１０−１のＩＤを格納する。ここで、ＯＮ＝１、ＯＦＦ＝０とするので、図１０の状態Ｂに示すように、Ｌ２プリフェッチフラグ（Ｌ２Ｐｒｅｆｅｔｃｈ）は１、プロセッサ１０−１のＩＤ（ＩＤ）は１となる。従って、Ｌ２プリフェッチアクセスによりキャッシュ２０ｂに格納されたデータのタグ情報３０は、Ｌ２プリフェッチアクセスを行ったプロセッサＩＤとＬ２プリフェッチアクセスであることが示される。
【００６７】
一方、通常のキャッシュアクセスがキャッシュヒットした場合は、該当のタグ情報３０のプリフェッチフラグ（Ｌ２Ｐｒｅｆｅｔｃｈ）をＯＦＦとする。つまり、図１０の状態Ｃに示すように、Ｌ２プリフェッチフラグ（Ｌ２Ｐｒｅｆｅｔｃｈ）は０となる。従って、Ｌ２プリフェッチアクセスであることを示すタグ情報３０を持つタグにアクセスした場合には、Ｌ２プリフェッチアクセスである情報を消すことになる。
【００６８】
［３−５］Ｌ１プリフェッチアクセスにおけるタグ情報の変化
図１１は、本発明の第３の実施形態に係るＬ１プリフェッチアクセスにおけるタグ情報の変化を示す。以下に、本実施形態に係るＬ１プリフェッチアクセスにおけるタグ情報の変化について説明する。
【００６９】
まず、タグ情報３０の初期状態は、図１１の状態Ａであったとする。このような状態Ａに対して、プロセッサ１０−１（ＩＤ＝１）がデータ０ｘ４０のＬ１プリフェッチアクセスを行ったとする。
【００７０】
このＬ１プリフェッチアクセスがＬ２キャッシュミスをした場合、このＬ１プリフェッチによってＬ２キャッシュ２０ｂに格納したデータについてのタグ情報３０のＬ１プリフェッチフラグ（Ｌ１Ｐｒｅｆｅｔｃｈ）をＯＮとして、プリフェッチを行ったプロセッサ１０−１のＩＤを格納する。ここで、ＯＮ＝１、ＯＦＦ＝０とするので、図１１の状態Ｂに示すように、Ｌ１プリフェッチフラグ（Ｌ１Ｐｒｅｆｅｔｃｈ）は１、プロセッサ１０−１のＩＤ（ＩＤ）は１となる。従って、Ｌ１プリフェッチアクセスによりキャッシュ２０ｂに格納されたデータのタグ情報３０は、Ｌ１プリフェッチアクセスを行ったプロセッサＩＤとＬ１プリフェッチアクセスであることが示される。
【００７１】
一方、通常のキャッシュアクセスがキャッシュヒットした場合、若しくは該当のＬ１プリフェッチで読んだデータをプロセッサ１０−１が使用した場合、Ｌ１プリフェッチフラグ（Ｌ１Ｐｒｅｆｅｔｃｈ）をＯＦＦとする。つまり、図１１の状態Ｃに示すように、Ｌ１プリフェッチフラグ（Ｌ１Ｐｒｅｆｅｔｃｈ）は０となる。従って、Ｌ１プリフェッチアクセスであることを示すタグ情報３０を持つタグにアクセスした場合、Ｌ１プリフェッチで読んだデータをプロセッサ１０−１が使用した場合には、Ｌ１プリフェッチアクセスである情報を消すことになる。
【００７２】
［３−６］プリフェッチの信頼度
図８に示す本実施形態のプリフェッチ信頼度格納部２３には、第１の実施形態と同様、プロセッサ１０−１、１０−２からのプリフェッチアクセスのアドレス予測の信頼度が格納される。この信頼度は、プロセッサ１０−１、１０−２毎に、Ｌ１プリフェッチ、Ｌ２プリフェッチの信頼度をそれぞれ持つ。ここでは、例えば、プリフェッチの信頼度は０〜３の４通りの数値を通り、この数値が高いほど、信頼度が高く、プリフェッチのアドレス予測が正確であると判断されるとする。尚、プリフェッチの信頼度の初期値は、０〜３のどれでもよい。
【００７３】
キャッシュヒットにより、Ｌ１プリフェッチフラグをＯＮからＯＦＦにした際にはＬ１プリフェッチの信頼度が１増加し、Ｌ２プリフェッチフラグをＯＮからＯＦＦにした際にはＬ２プリフェッチの信頼度が１増加する。
【００７４】
一方、アクセスの種類を問わずＬ２キャッシュミスが発生し、置き換えが発生した場合に、Ｌ２キャッシュ２０ｂから追い出される対象のＬ１プリフェッチフラグ若しくはＬ２プリフェッチフラグがＯＮになっている場合、Ｌ１プリフェッチフラグならばＬ１プリフェッチの信頼度が１減少し、Ｌ２プリフェッチフラグならばＬ２プリフェッチの信頼度が１減少する。
【００７５】
［３−７］キャッシュ置き換えの優先度
図１２は、本発明の第３の実施形態に係るプリフェッチアクセス時のキャッシュ置き換え優先順を説明するための図を示す。以下に、本実施形態に係るプリフェッチアクセス時におけるキャッシュ置き換えの優先順とＬ１、Ｌ２プリフェッチキャッシュラインの関係について説明する。
【００７６】
本実施形態では、Ｌ１プリフェッチアクセス若しくはＬ２プリフェッチアクセスでデータを下位のメモリからＬ２キャッシュ２０ｂに読み込む際、プリフェッチアクセスを行ったプロセッサ１０−１、１０−２に対応するプリフェッチの信頼度を参照し、信頼度が高いほど、データの置き換えの際の優先度を低くする。この処理については、第１の実施形態と同じである。
【００７７】
そして、プロセッサ１０−１、１０−２からＬ２キャッシュ２０ｂに対してＬ１プリフェッチで読んだデータを使用した通知があった場合、通常のキャッシュアクセスと同じようにタグを読み出し、該当のデータがＬ２キャッシュ２０ｂ内に存在する場合に、該当のデータの置き換えの際の優先度を低くする。この時、実際にデータにはアクセスしない。
【００７８】
次に、本実施形態に係るキャッシュ置き換えの優先度について具体的に説明する。プリフェッチで読んだデータをＰ、それ以外の同じインデックスに格納されているデータをＢ、Ｃ、Ｄとして、図６の（６ｃ）に示すような置き換えの優先順であったとする。この時、プロセッサ１０−１、１０−２からデータＰを使用した通知があった場合、Ｐの置き換え優先順を図６の（６ｂ）とする。
【００７９】
この処理を用いた場合のキャッシュの置き換えの様子を示すのが、図１２である。Ｌ１プリフェッチの対象をＰとし、同じインデックスのデータをＢ、Ｃ、Ｄ、Ｅ、Ｆとする。Ｌ１プリフェッチ直後の状態は図１２の（１２ａ）であり、キャッシュ内にはＢ、Ｃ、Ｄ、Ｐが格納されている。置き換えの優先順は高い順にＢ、Ｐ、Ｃ、Ｄである。
【００８０】
この状態（１２ａ）から、Ｅへのアクセス、Ｌ１プリフェッチのデータＰをプロセッサ１０−１、１０−２が使用、Ｆへのアクセスの順番で実行される。Ｅへのアクセス終了時のキャッシュの状態は（１２ｂ）のようになる。次に、Ｌ１プリフェッチのデータＰをプロセッサ１０−１、１０−２が使用した通知があった時、本実施形態を用いた場合には（１２ｃ）に示す状態となる。次に、Ｆへのアクセスがあった場合、本実施形態を用いた場合は（１２ｄ）に示す状態になる。一方、Ｆへのアクセスがあった場合、本実施形態を用いない場合は（１２ｅ）に示す状態になる。この後、再度Ｐへのアクセスがあった場合、本実施形態を用いた場合はキャッシュヒットとなるが、本実施形態を用いない場合にはキャッシュミスとなる。
【００８１】
上位のキャッシュラインサイズは、下位のキャッシュラインサイズより小さい場合が多い。例えば、Ｌ１キャッシュラインサイズが６４ＫＢ、Ｌ２キャッシュラインサイズが２５６ＫＢの場合、プリフェッチ対象のＰのＬ２キャッシュラインは（１２Ｐ）のように構成される。ａ、ｂ、ｃ、ｄはＬ１キャッシュラインを指す。命令に対するプリフェッチアクセスの場合のように、連続するデータへのプリフェッチの場合、ａに対するプリフェッチを行った後にｂに対するプリフェッチを行う可能性が高い。この場合、本実施形態を用いると、ＰがＬ２キャッシュ２０ｂに存在する期間を長くすることができるので、キャッシュヒットする可能性が高まる。また、プリフェッチしたデータを実際に使うまでＬ２キャッシュ２０ｂ内の置き換え優先順は高いままなので、無駄なＬ１プリフェッチがＬ２キャッシュ２０ｂに留まる時間も短くすることができる。
【００８２】
［３−８］効果
上記第３の実施形態によれば、第１の実施形態と同様の効果を得ることができる。さらに、第３の実施形態では、より上位のＬ１キャッシュ２０ａ−１、２０ａ−２へのプリフェッチアクセスの場合は実際に使用したときに、そのデータが含まれるＬ２キャッシュラインの置き換え優先度を下げることで、無駄なプリフェッチがＬ２キャッシュ２０ｂ内に長く留まることを防ぎつつ、連続したデータ構造へのアクセスの際に、下位のＬ２キャッシュ２０ｂへヒットし易くすることができる。これにより、キャッシュが階層構造になっている場合も、無駄なプリフェッチの悪影響を減らすことができる。
【００８３】
尚、第３の実施形態では、上位のＬ１キャッシュ２０ａ−１、２０ａ−２はプロセッサ１０−１、１０−２内に配置されているが、これに限定されず、キャッシュが階層構造になっている種々の例に適用できる。また、第３の実施形態は、上記第２の実施形態を組み合わせることも可能である。
【００８４】
その他、本発明は、上記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【図面の簡単な説明】
【００８５】
【図１】本発明の第１の実施形態に係るキャッシュシステムの概略的な構成図。
【図２】本発明の第１の実施形態に係るタグメモリのタグ情報を示す図。
【図３】本発明の第１の実施形態に係るプリフェッチアクセスにおけるタグ情報の変化を示す図。
【図４】本発明の第１の実施形態に係るプリフェッチ信頼度格納部の内部構成の概略図。
【図５】本発明の第１の実施形態に係るプリフェッチ信頼度格納部への加減算指示の生成論理を示す図。
【図６】本発明の第１の実施形態に係るプリフェッチアクセス時のキャッシュ置き換え優先順を説明するための図。
【図７】本発明の第２の実施形態に係るキャッシュシステムの概略的な構成図。
【図８】本発明の第３の実施形態に係るキャッシュシステムの概略的な構成図。
【図９】本発明の第３の実施形態に係るタグメモリのタグ情報を示す図。
【図１０】本発明の第３の実施形態に係るＬ２プリフェッチアクセスにおけるタグ情報の変化を示す図。
【図１１】本発明の第３の実施形態に係るＬ１プリフェッチアクセスにおけるタグ情報の変化を示す図。
【図１２】本発明の第３の実施形態に係るプリフェッチアクセス時のキャッシュ置き換え優先順を説明するための図。
【符号の説明】
【００８６】
１…キャッシュシステム、１０−１、１０−２…プロセッサ、２０…キャッシュ、２０ａ−１、２０ａ−２…Ｌ１キャッシュ、２０ｂ…Ｌ２キャッシュ、２１…タグメモリ、２２…タグ比較部、２３…プリフェッチ信頼度格納部、２４…データメモリ、２５…キュー、３０…タグ情報、３１…アクセスアドレス、３２…ヒット／ミス情報、４０−１、４０−２…カウンタ、Ｘ…加減算指示。
【図１】
0004829191.tif 000002
【図２】
0004829191.tif 000003
【図３】
0004829191.tif 000004
【図４】
0004829191.tif 000005
【図５】
0004829191.tif 000006
【図６】
0004829191.tif 000007
【図７】
0004829191.tif 000008
【図８】
0004829191.tif 000009
【図９】
0004829191.tif 000010
【図１０】
0004829191.tif 000011
【図１１】
0004829191.tif 000012
【図１２】
0004829191.tif 000013