(57)【要約】【課題】キャッシュミス率を低減できるキャッシュライン入れ替え方式の提供。【解決手段】セット・アソシアティブ方式でキャッシュデータを格納するキャッシュメモリ装置であって、ＣＰＵにて実行される命令を分析して、各キャッシュラインに格納されたデータが再参照される可能性を示すプロファイル情報（ライブ／デッド）を生成するプロファイラと、キャッシュミスが発生した際に、前記プロファイル情報に基づいて、入れ替え（リプレース）対象のキャッシュラインを決定するキャッシュライン選択部と、を備える。具体的には、ベースアドレスとして使用したレジスタに対応するキャッシュラインを入れ替え対象から除外する制御を行い、当該レジスタに上書きが行われた場合に、対応するキャッシュラインを入れ替え対象とする制御を行う。【選択図】図４
2007272681.tif 000002
【特許請求の範囲】
【請求項１】
セット・アソシアティブ方式でキャッシュデータを格納するキャッシュメモリ装置であって、
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）にて実行される命令を分析して、各キャッシュラインに格納されたデータが再参照される可能性を示すプロファイル情報を生成するプロファイラと、
キャッシュミスが発生した際に、前記プロファイル情報に基づいて、入れ替え対象のキャッシュラインを決定するキャッシュライン選択部と、を備えること、
を特徴とするキャッシュメモリ装置。
【請求項２】
前記プロファイラが、前記ＣＰＵにて実行される命令がメモリアクセス命令のとき、そのオペランドを格納したキャッシュラインに対して、第一種のプロファイル情報を生成し、
前記キャッシュライン選択部が、前記第一種のプロファイル情報が付与されたキャッシュラインの入れ替えを抑止すること、
を特徴とする請求項１に記載のキャッシュメモリ装置。
【請求項３】
前記プロファイラが、前記ＣＰＵにて実行される命令により特定のレジスタに書き込みが行われるとき、そのデータを格納したキャッシュラインに対して、当該第二種のプロファイル情報を生成し、
前記キャッシュライン選択部が、前記第二種のプロファイル情報が付されたキャッシュラインを入れ替え対象として選択すること、
を特徴とする請求項１又は２に記載のキャッシュメモリ装置。
【請求項４】
更に、
所定数のプロファイル情報を記憶するプロファイル情報テーブルを有するとともに、前記各キャッシュラインがそれぞれプロファイル情報キー格納領域を有し、
前記プロファイラが、前記プロファイル情報記憶部に前記プロファイル情報を書き込むとともに、該プロファイル情報に読み出すためのプロファイル情報キーを生成し、前記プロファイル情報キー格納領域に格納し、
前記キャッシュライン選択部が、前記プロファイル情報キーを介して、前記プロファイル情報を読み出すこと、
を特徴とする請求項１乃至３いずれか一に記載のキャッシュメモリ装置。
【請求項５】
請求項１乃至４いずれか一に記載のキャッシュメモリ装置を備えたＣＰＵ装置。
【請求項６】
セット・アソシアティブ方式でキャッシュデータを格納するキャッシュメモリ装置におけるキャッシュラインの入れ替え方法であって、
前記キャッシュメモリ装置に備えられたプロファイラが、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）にて実行される命令を分析して、各キャッシュラインに格納されたデータが再参照される可能性を示すプロファイル情報を生成するステップと、
前記キャッシュメモリ装置に備えられたキャッシュライン選択部が、キャッシュミスが発生した際に、前記プロファイル情報に基づいて、入れ替え対象のキャッシュラインを決定するステップと、を含むこと、
を特徴とするキャッシュメモリ装置におけるキャッシュラインの入れ替え方法。
【請求項７】
前記プロファイラが、前記ＣＰＵにて実行される命令がメモリアクセス命令のとき、そのオペランドを格納したキャッシュラインに対して、第一種のプロファイル情報を生成し、
前記キャッシュライン選択部が、前記第一種のプロファイル情報が付与されたキャッシュラインの入れ替えを抑止すること、
を特徴とする請求項６に記載のキャッシュメモリ装置におけるキャッシュラインの入れ替え方法。
【請求項８】
前記ＣＰＵにて実行される命令により特定のレジスタに書き込みが行われるとき、前記プロファイラが、前記書き込みを行ったデータを格納したキャッシュラインに対して、当該第二種のプロファイル情報を生成し、
前記キャッシュライン選択部が、前記第二種のプロファイル情報が付されたキャッシュラインを入れ替え対象として選択すること、
を特徴とする請求項６又は７に記載のキャッシュメモリ装置におけるキャッシュラインの入れ替え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キャッシュメモリ装置、これを含んだＣＰＵ及びキャッシュラインの入れ替え方法に関し、特に、セット・アソシアティブ（Ｓｅｔ  Ａｓｓｏｃｉａｔｉｖｅ）方式でキャッシュデータを格納するキャッシュメモリ装置、これを含んだＣＰＵ及びキャッシュラインの入れ替え方法に関する。
【背景技術】
【０００２】
キャッシュメモリは主記憶装置より小容量であるためその一部しか記憶することができないが、頻繁に参照されるデータを保持させることにより、その高速性を生かしてＣＰＵからの平均メモリアクセスタイムを短縮化し、システムの性能を向上させることができる。
【０００３】
図６は、２ウェイ  セット・アソシアティブ方式のキャッシュメモリ装置の構成を説明するための図である。キャッシュメモリ２０は、図６に示すように、下位アドレス（エントリアドレス）をインデックスとしたキャッシュライン２１を有しており、下位アドレス（エントリアドレス）にてデータ格納位置をある程度限定し、データ要求に瞬時に応えることのできる構成となっている。
【０００４】
また、キャッシュライン２１に、データ２３とは別に、メモリアクセスに用いる上位ビットであるタグ（アドレス）２２を格納することで、同一の下位アドレス（エントリアドレス）で複数のデータ（図６では２ウェイ故、２つ）を格納することができる。
【０００５】
ここで、図６のように、２つのキャッシュラインを一組みとし、それぞれ２つの下位アドレスを対応させた場合を考える。この場合、図６の左側に示したように、メモリ上の下位アドレスを５で割った余りを同じくするアドレスに格納されたデータが、同一インデックスのキャッシュラインに格納されることとなる。例えば、下位アドレス２、７、１２に格納されている、３つの変数Ａ、Ｂ、Ｃを２つのキャッシュラインに格納する場合、どの変数をキャッシュラインに残し、どの変数をキャッシュラインから追い出すかが問題となる。
【０００６】
図７は、従来のＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）方式にて、キャッシュラインを行うための構成を概略的に表した図である。ＬＲＵ情報テーブル９０は、同一インデックスに属するキャッシュラインのＬＲＵ情報（最近のアクセス順位）９１を保持しており、キャッシュライン選択部４０は、キャッシュミスが生じた場合に、ＬＲＵ情報９１を参照して入れ替え対象のキャッシュラインを選択する。
【０００７】
また、特許文献１には、各キャッシュラインに、データが有効であるか否かを示すバリッドフラグと、バリッドフラグの組み合わせによって更新されるリプレースフラグとを設け、リプレースフラグの値により入れ替え対象を選択するセット・アソシアティブ方式のキャッシュメモリ装置が開示されている。また、同公報には更に、命令アドレスに基づいて分岐予測を行う分岐予測部を備え、その結果を当該キャッシュラインの選択に利用することが記載されている。
【０００８】
【特許文献１】特開２００４−３８２９８号公報
【非特許文献１】「コンピュータの構成と設計−ハードウエアとソフトウエアのインタフェース＜下＞  第２版」  第７．２章  ジョン・Ｌ／ヘネシー、デイビッド・Ａ・パターソン  著、成田光彰  訳、日経ＢＰ社  発行、１９９６年、ＩＳＢＮ  ４−８２２２−８０５７−８
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記した従来のＬＲＵ方式では、連想度が増加するほど複雑化しコストが掛かるという問題点のほか、単にデータアクセスの順序だけを用いるため、入れ替えるべきでないデータを入れ替え、キャッシュミスを引き出してしまうという本質的な問題点がある。
【００１０】
また、特許文献１にしても、上記ＬＲＵ方式に近い性能を出せるとされているが、そのリプレースフラグの更新の前提となるバリッドフラグが適正に更新されることが条件となる。しかしながら、同公報ではその更新方法について、分岐予測が正しくなかった場合に、バリッドフラグを場合によっては無効にする（特許文献００４８段落）と開示しているのみであり、完全にその性能が保証されている訳ではない。
【課題を解決するための手段】
【００１１】
本発明の第１の視点によれば、セット・アソシアティブ方式でキャッシュデータを格納するキャッシュメモリ装置であって、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）にて実行される命令を分析して、各キャッシュラインに格納されたデータが再参照される可能性を示すプロファイル情報を生成するプロファイラと、キャッシュミスが発生した際に、前記プロファイル情報に基づいて、入れ替え（リプレース）対象のキャッシュラインを決定するキャッシュライン選択部と、を備えること、を特徴とするキャッシュメモリ装置とこれを含んだＣＰＵが提供される。
【００１２】
また、本発明の第２の視点によれば、セット・アソシアティブ方式でキャッシュデータを格納するキャッシュメモリ装置におけるキャッシュラインの入れ替え（リプレース）方法であって、前記キャッシュメモリ装置に備えられたプロファイラが、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）にて実行される命令を分析して、各キャッシュラインに格納されたデータが再参照される可能性を示すプロファイル情報を生成するステップと、前記キャッシュメモリ装置に備えられたキャッシュライン選択部が、キャッシュミスの発生した際に、前記プロファイル情報に基づいて、入れ替え対象のキャッシュラインを決定するステップと、を含むこと、を特徴とするキャッシュメモリ装置におけるキャッシュラインの入れ替え方法が提供される。
【発明の効果】
【００１３】
本発明によれば、キャッシュヒット率を向上させ、コンピュータシステム全体の性能を向上させることができる。その理由は、データが再参照される可能性を考慮したキャッシュラインの入れ替えを行うこととしたことにある。
【発明を実施するための最良の形態】
【００１４】
続いて、本発明を実施するための最良の形態について、図面を参照して詳細に説明する。図１は、２ウェイ  セット・アソシアティブ方式を採用した本発明の第１の実施形態に係るキャッシュメモリ装置の構成を表したブロック図である。図６、図７に示した従来のキャッシュメモリ装置と相違する点は以下のとおりである。
【００１５】
本実施形態に係るキャッシュメモリ装置は、プロファイル情報テーブル３１を備えている。プロファイル情報テーブル３１は、複数のレジスタ（図示せず）について、それぞれ対応するプロファイル情報３２を格納可能となっている。以下、プロファイル情報テーブル３１は、３つのレジスタｒ０〜ｒ２のプロファイル情報３２を格納するものとして説明する。
【００１６】
各キャッシュライン２１には、タグアドレス２２、データ２３に加えて、上記プロファイル情報テーブル３１内のプロファイル情報３２を特定するためのプロファイル情報キー（レジスタＩＤ）２４を格納可能となっている。
【００１７】
プロファイラ３０は、ＣＰＵ１０が実行する命令について評価を行い、プロファイル情報３２とプロファイル情報キー２４を作成し、それぞれ、プロファイル情報テーブル３１の当該レジスタに対応するプロファイル情報３２と、当該命令が書き込まれたキャッシュライン２１のプロファイル情報キー（レジスタＩＤ）２４を更新する。
【００１８】
プロファイラ３０は、例えば、ＣＰＵ１０が実行する命令がメモリアクセス命令のとき、そのオペランドを格納したレジスタＩＤをプロファイル情報キーとして生成し、キャッシュライン２１に格納されたデータが以後参照される可能性が高いことを示すライブ状態（第一種の状態、以下、この状態を単に「ライブ」という。）に、プロファイル情報を更新する。
【００１９】
また、プロファイラ３０は、例えば、ＣＰＵ１０が実行する命令により演算結果が書き込まれるレジスタがあるとき、当該書き込みレジスタＩＤをプロファイル情報キーとして生成し、キャッシュライン２１に格納されたデータが以後参照される可能性が少ないことを示すデッド状態（第二種の状態、以下、この状態を単に「デッド」という。）に、プロファイル情報を更新する。
【００２０】
キャッシュライン選択部４０は、上記プロファイル情報３２を参照し、ライブのキャッシュラインを入れ替え対象から除外し、デッドのキャッシュラインを入れ替え対象として選択する。なお、すべてのキャッシュラインのプロファイル情報３２が同じプロファイル情報（すべて「ライブ」、又は、すべて「デッド」）であることも考えられるが、この場合は、上記した既存の方法やラウンドロビン方式、ランダム方式でリプレースの対象を選択するものとする。
【００２１】
図２は、上記プロファイラ３０の動作タイミングを表した図である。図２を参照すると、プロファイラ３０は、ＣＰＵ１０における実行以前に命令の評価を行い、プロファイル情報とプロファイル情報キーを作成・更新する（ステップＳ００１）。なお、命令の実行以前におけるプロファイル情報が必要ない場合は、本ステップを省略することが可能である。
【００２２】
また、プロファイラ３０はＣＰＵ１０における命令の実行中にも、評価を行い、プロファイル情報とプロファイル情報キーを作成・更新する（ステップＳ００２）。なお、命令の実行中におけるプロファイル情報が必要ない場合は、本ステップを省略することが可能である。
【００２３】
また、プロファイラ３０はＣＰＵ１０における命令の実行後にも、評価を行い、プロファイル情報とプロファイル情報キーを作成・更新する（ステップＳ００３）。なお、命令の実行後におけるプロファイル情報が必要ない場合は、本ステップを省略することが可能である。
【００２４】
このようにプロファイラ３０は、命令の内容に応じて、いずれかのタイミングでプロファイルを生成・更新する。
【００２５】
続いて、図３のサンプルプログラムを用いた従来方式の詳細動作を説明し（図８参照）、次いで、本実施形態の詳細動作について説明する（図４参照）。図３のサンプルプログラムにおいて、変数Ａ、Ｂ、Ｃは、主記憶装置のアドレス２、７、１２に格納され、同じインデックスのキャッシュラインに対応するものとする。
【００２６】
図３のサンプルプログラムの命令ステップ１、３、５、７、９、１１、１４では、メモリアクセスは行われない。従って、キャッシュメモリが参照されることもない。
【００２７】
一方、図３のその他の命令ステップ２、４、６、８、１０、１２、１３、１５は、メモリアクセスを伴うものであり、アクセスする上位アドレスと、インデックス対応するラインのタグアドレスとを比較することにより、キャッシュのヒットの判定が行われる。ここで、アクセスする上位アドレスと、インデックス対応するラインのタグアドレスとが一致しなかった場合に、キャッシュミスとなる。
【００２８】
［比較例−ＬＲＵ方式］
図８を参照すると、命令ステップ２、６、１０、１３では、当初、キャッシュラインにアクセスする変数の情報が無い状態（一致するタグアドレスが存在しない状態）である。そこで、主記憶装置から変数の情報の読み出しが行われ、指定されたレジスタに書き込みが行われる。
【００２９】
このとき、ＬＲＵ情報に基づき、順位２にあるキャッシュラインが入れ替え対象となり、データとタグアドレスが更新される。即ち、主記憶装置から読み出した内容がデータ領域に格納され、アドレスがタグアドレス領域に格納される。例えば、命令ステップ２では、当初キャッシュライン１、２の双方に変数Ａの情報が無いため、主記憶装置からアドレス２の内容が読み出されて、レジスタｒ０に設定される。そして、ＬＲＵ情報が順位２であったキャッシュライン１が選択されて、変数Ａの情報が格納される。
【００３０】
また、命令ステップ４、８、１２、１５では、上記のようにしてキャッシュされた情報がキャッシュラインにあるため（一致するタグアドレスが存在する状態）、キャッシュラインのデータが読み出されて、利用される。
【００３１】
上記ＬＲＵ方式における問題点が明瞭に現れる箇所は、命令ステップ１０から１３までの過程、特にステップ１３でキャッシュミスが発生していることである。命令ステップ１０で、キャッシュラインに無い変数Ｃを格納するため、いずれかのキャッシュラインの内容を掃き出す必要があるが、ＬＲＵ方式によれば、最も最近にアクセスが行われていないキャッシュライン１が選ばれる。このため、命令ステップ１３では、変数Ａの情報がキャッシュから無くなり、キャッシュミスの発生を余儀なくされている。
【００３２】
一方、命令ステップの流れを見ると、変数Ａのアドレスは、今後も使用することがあるため、変数Ｂのアドレスと異なりレジスタｒ１に格納され、違う値に変更しないような構成となっている。要するに、単純にデータアクセスの順序だけを用いる上記ＬＲＵ方式は、上記コードレベルのプログラムに表れた特徴と、相反するキャッシュラインの選択を行い、キャッシュミスを発生させてしまっているのである。
【００３３】
［本発明−プロファイル情報利用方式］
以下、図４を参照して、上記コードレベルにおけるプログラムの特徴を利用し、適切なキャッシュラインを選択できるよう構成した本実施形態に係るキャッシュメモリ装置の動作について説明する。
【００３４】
図４を参照すると、命令ステップ１、３、５、７、９、１１、１４では、メモリアクセスは行われない。但し、プロファイラ３０は、レジスタに書き込みが行われるため、書き込み対象のレジスタをプロファイル情報キーとし、対応するプロファイル情報をデッドとする。
【００３５】
命令ステップ２、６、１０では、それぞれ変数Ａ、Ｂ、Ｃの情報がキャッシュラインに無い状態（一致するタグアドレスが存在しない状態）である。そこで、主記憶装置から変数の情報の読み出しが行われ、更に、指定されたレジスタに書き込みが行われる。
【００３６】
併せて、キャッシュライン選択部４０は、プロファイル情報キーを用いて、インデックスのすべてのプロファイル情報を読み出し、デッドとなっているキャッシュラインを選択する。このキャッシュラインが、上記主記憶装置から読み出したデータを格納するキャッシュラインとなり、主記憶装置から読み出したデータ、タグアドレス、下記プロファイル情報キーが上書きされる。
【００３７】
なお、上記と併せて、プロファイラ３０は、当該命令のアドレス部を指しているレジスタをプロファイル情報キーとし、当該レジスタに対応するプロファイル情報をライブとする。更に、レジスタに書き込みが行われるため、プロファイラ３０は、書き込み対象のレジスタをプロファイル情報キーとし、当該レジスタに対応するプロファイル情報をデッドとする。
【００３８】
命令ステップ９にて、プロファイラ３０は、レジスタｒ２について書き込みが行われた時点で、キャッシュライン２のプロファイル情報キーに指定されたレジスタｒ２のプロファイル情報をデッドに更新する。このことは、命令ステップ９にてレジスタｒ２に変数Ｃの情報が新たに代入され、命令ステップ８までで使用していた変数Ｂの情報を再使用する可能性が少なくなったことに対応している。
【００３９】
そして、後続する命令ステップ１０でキャッシュミスが発生すると（ステップＳ１０１）、プロファイル情報の比較が行われ（ステップＳ１０２）、デッドであるキャッシュライン２が入れ替え対象として選択される（ステップＳ１０３）。
【００４０】
この結果、変数Ａの情報がキャッシュライン１に残ることとなるため、命令ステップ１３では、主記憶装置へのアクセスに代わりキャッシュライン１のデータを利用することが可能となる。従って、比較例（ＬＲＵ方式）では命令ステップ１３においてキャッシュミスとなっていたが、本実施形態に係るプロファイル情報利用方式では、再使用される可能性のある情報を保持するよう動作するため、図３の短いサンプルプログラムだけを取ってみてもキャッシュミスを一回低減することが可能となっている。
【００４１】
なお、命令ステップ４、８、１２、１５では、上記のようにしてキャッシュされた情報がキャッシュラインにあるため（一致するタグアドレスが存在する状態）、キャッシュラインのデータが読み出されて、利用される点は上記したＬＲＵ方式と同様である。
【００４２】
以上のとおり、ベースアドレスとして使用したレジスタに対応するキャッシュラインを入れ替え対象から除外する制御を行い、当該レジスタに上書きが行われた場合に、対応するキャッシュラインを入れ替え対象とする制御が行われる。
【００４３】
このように、プロファイル情報を用いて適切に入れ替え対象のキャッシュラインを選択する本実施形態によれば、メモリアクセスのより多くをキャッシュメモリから得ることが可能となり、ひいては、システム全体の性能を向上させることが可能となる。
【００４４】
このことは、キャッシュメモリの要求性能が同じであれば、キャッシュサイズを小さくすることが可能であることを意味し、低コスト化にも資することになる。
【００４５】
続いて、上記第１の実施形態に変更を加えた本発明の第２の実施形態について説明する。図５は、本発明の第２の実施形態に係るキャッシュメモリ装置の構成を表したブロック図であり、図１に示した第１の実施形態に係るキャッシュメモリ装置との相違点は、プロファイル情報キー格納領域２４に代えてプロファイル情報格納領域２５を設けるとともに、プロファイル情報テーブル３１を省略し、キャッシュライン２１に直接プロファイル情報を格納させる構成とした点である。
【００４６】
本実施形態は、キャッシュラインの数と、プロファイル情報の数が等しいとき、即ち、レジスタと対応するキャッシュラインを用意できる場合に採用可能である。
【００４７】
その動作は、プロファイラ３０が、プロファイル情報２５を、対応するキャッシュライン２１に直接書き込み、キャッシュライン選択部４０が、キャッシュライン２１から直接プロファイル情報２５を読み出すという点を除いて、上記した第１の実施形態と略同様であり、コストや速度等のシステム要求に基づいて、上記第１の実施形態と代替的に採用することが可能である。
【００４８】
以上、本発明を実施するための好適な形態を説明したが、本発明の技術的範囲は、上述した実施形態の記載に限定されるものではなく、命令内容に基づいてキャッシュラインに格納されたデータが再参照される可能性を示すプロファイル情報を生成し、これに基づいて、キャッシュラインを選択するという本発明の要旨を逸脱しない範囲で、各種の変形を加えることが可能であることはいうまでもない。
【図面の簡単な説明】
【００４９】
【図１】本発明の第１の実施形態に係るキャッシュメモリ装置の構成を表したブロック図である。
【図２】本発明の第１の実施形態に係るキャッシュメモリ装置のプロファイラの動作を説明するための流れ図である。
【図３】本発明の第１の実施形態を説明するためのサンプルプログラムを説明するための図である。
【図４】図３のサンプルプログラムを実行した場合における、本発明の第１の実施形態に係るキャッシュメモリ装置の動作を表した図である。
【図５】本発明の第２の実施形態に係るキャッシュメモリ装置の構成を表したブロック図である。
【図６】従来技術を説明するための図である。
【図７】従来技術（ＬＲＵ方式）を説明するための図である。
【図８】図３のサンプルプログラムを実行した場合における、従来のキャッシュメモリ装置の動作を表した図である。
【符号の説明】
【００５０】
１０  ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）
２０  キャッシュ（メモリ）
２１  キャッシュライン
２２  タグアドレス（格納領域）
２３  データ（格納領域）
２４  プロファイル情報キー（格納領域）
２５  プロファイル情報（格納領域）
３０  プロファイラ
３１  プロファイル情報テーブル
３２  プロファイル情報
４０  キャッシュライン選択部
９０  ＬＲＵ情報テーブル
９１  ＬＲＵ情報
【図１】
2007272681.tif 000003
【図２】
2007272681.tif 000004
【図３】
2007272681.tif 000005
【図４】
2007272681.tif 000006
【図５】
2007272681.tif 000007
【図６】
2007272681.tif 000008
【図７】
2007272681.tif 000009
【図８】
2007272681.tif 000010