(57)【要約】【課題】  動作させる容量を動的に制御可能な機構のキャッシュメモリ制御において性能向上と消費電力低減を効率良く両立させたキャッシュメモリ、およびその制御方法を提供する。【解決手段】  ヒット判定手段２４は、キャッシュアクセスがヒットしたときヒットウェイを判定する。ウェイ数増減判定手段２は、動作中の各ウェイについて、使用された時期が最も新しいものから最も古いものまでの順位を管理している。そして、ウェイ数増減判定手段２は、ヒット判定手段２４で得られたヒットウェイがどの順位のウェイかを求め、各順位毎のヒット数をカウントする。さらに、ウェイ数増減判定手段２は、各順位に対するヒット数の関係によって示されるアクセスパターンから動作ウェイ数の増減を判定する。ウェイ数制御手段４は、動作ウェイ数の増減の判定に従って、ウェイの各々の動作または停止を選択する。【選択図】      図１
2005316842.tif 000002
【特許請求の範囲】
【請求項１】
セットアソシアティブ方式のキャッシュメモリであって、
各々に動作または停止が選択可能な複数のウェイと、
キャッシュアクセスがヒットしたときヒットウェイを判定するヒット判定手段と、
動作中の各ウェイについて、使用された時期が最も新しいものから最も古いものまでの順位を管理しており、前記ヒット判定手段で得られた前記ヒットウェイがどの順位のウェイかを求め、前記各順位毎のヒット数をカウントし、前記各順位に対するヒット数の関係によって示されるアクセスパターンから動作ウェイ数の増減を判定するウェイ数増減判定手段と、
動作ウェイ数の増減の判定に従って、前記ウェイの各々の動作または停止を選択するウェイ数制御手段とを有するキャッシュメモリ。
【請求項２】
前記ウェイ数増減判定手段は、使用された時期が最も古い順位のウェイでのヒット数を、使用された時期が最も新しい順位のウェイでのヒット数で除算して得た評価値を用いて前記アクセスパターンを判断する、請求項１記載のキャッシュメモリ。
【請求項３】
前記ウェイ数増減判定手段は、前記評価値が第１の閾値より小さいとき前記動作ウェイ数を削減し、前記評価値が第２の閾値より大きいとき前記動作ウェイ数を増加する、請求項２記載のキャッシュメモリ。
【請求項４】
前記ウェイ数増減判定手段は、
使用された時期が最も新しい順位のウェイでのヒット数をカウントするＭＲＵカウンタと、使用された時期が最も古い順位のウェイでのヒット数をカウントするＬＲＵカウンタとを具備し、
前記ＭＲＵカウンタの値が所定値に達したとき、前記第１の閾値に前記所定値を乗算した第３の閾値、および前記第２の閾値に前記所定値を乗算した第４の閾値と、前記ＬＲＵカウンタの値とを比較して前記動作ウェイ数の増減を判定する、請求項３記載のキャッシュメモリ。
【請求項５】
前記ウェイ数増減判定手段は、
使用された時期が最も新しい順位のウェイでのヒット数をカウントするＭＲＵカウンタと、使用された時期が最も古い順位のウェイでのヒット数をカウントするＬＲＵカウンタとを具備し、
所定の判定タイミングで、前記第１の閾値に前記ＭＲＵカウンタの値を乗算した第５の閾値、および前記第２の閾値に前記ＭＲＵカウンタの値を乗算した第６の閾値と、前記ＬＲＵカウンタの値とを比較して前記動作ウェイ数の増減を判定する、請求項３記載のキャッシュメモリ。
【請求項６】
前記ウェイ数増減判定手段は、
キャッシュアクセスのヒット数をカウントするヒット数カウンタを更に具備し、
前記ヒット数カウンタの値が所定値に達したときを前記判定タイミングとする、請求項５記載のキャッシュメモリ。
【請求項７】
前記ウェイ数増減判定手段は、
キャッシュアクセスの回数をカウントするアクセス回数カウンタを更に具備し、
前記アクセス回数カウンタの値が所定値に達したときを前記判定タイミングとする、請求項５記載のキャッシュメモリ。
【請求項８】
前記所定値は実行中のプログラムに応じて変更可能である、請求項４、６、または７のいずれか１項に記載のキャッシュメモリ。
【請求項９】
前記所定値は現在の動作ウェイ数に応じて変更可能である、請求項４、６、または７のいずれか１項に記載のキャッシュメモリ。
【請求項１０】
前記第１の閾値または前記第２の閾値の少なくとも一方が、実行中のプログラムに応じて変更可能である、請求項３記載のキャッシュメモリ。
【請求項１１】
前記第１の閾値または前記第２の閾値の少なくとも一方が、現在の動作ウェイ数に応じて変更可能である、請求項３記載のキャッシュメモリ。
【請求項１２】
前記第１の閾値と前記第２の閾値が同じ値である、請求項３記載のキャッシュメモリ。
【請求項１３】
前記ウェイ数増減判定手段は、全ての順位でのヒット数から前記アクセスパターンを判断する、請求項１記載のキャッシュメモリ。
【請求項１４】
前記動作ウェイ数の増減について、カウンタを用いて管理する複数の状態を有し、前記ウェイ数増減判定手段における動作ウェイ数の増減の判定結果に従って状態遷移し、状態遷移後の状態に応じて前記ウェイ数制御手段に前記動作ウェイ数の増減を指示する必要ウェイ数予測手段を更に有する、請求項１記載のキャッシュメモリ。
【請求項１５】
セットアソシアティブ方式のキャッシュメモリであって、
各々に動作または停止が選択可能な複数のウェイと、
プログラムのキャッシュアクセスの振る舞いに応じて動作ウェイ数の増減を判定するウェイ数増減判定手段と、
前記動作ウェイ数の増減について、カウンタを用いて管理する複数の状態を有し、前記ウェイ数増減判定手段における動作ウェイ数の増減の判定結果に従って状態遷移し、状態遷移後の状態に応じて前記動作ウェイ数の増減を決定する必要ウェイ数予測手段と、
前記必要ウェイ数予測手段によって決定された前記動作ウェイ数の増減の判定に従って、前記ウェイの各々の動作または停止を選択するウェイ数制御手段とを有するキャッシュメモリ。
【請求項１６】
前記必要ウェイ数予測手段は、実際に動作ウェイ数を増加させるウェイ数増加の状態と、実際に動作ウェイ数を削減するウェイ数削減の状態との間に少なくとも１つのウェイ数維持の状態を有し、前記ウェイ数増減判定手段の前記判定結果が動作ウェイ数増加であれば動作ウェイ数増加の方向に状態遷移し、前記ウェイ数増減判定手段の前記判定結果が動作ウェイ数削減であれば動作ウェイ数削減の方向に状態遷移することにより、前記ウェイ数増加の状態と前記ウェイ数減少の状態の間を遷移する、請求項１４または１５に記載のキャッシュメモリ。
【請求項１７】
前記必要ウェイ数予測手段の用いる前記カウンタは非対称であり、前記動作ウェイ数減少の方向よりも前記動作ウェイ数増加の方向へのカウント段数が少ない、請求項１６記載のキャッシュメモリ。
【請求項１８】
各々に動作または停止が選択可能な複数のウェイを具備する、セットアソシアティブ方式のキャッシュメモリを制御するためのキャッシュ制御方法であって、
動作中の各ウェイについて、使用された時期が最も新しいものから最も古いものまでの順位を管理しておくステップと、
キャッシュヒットしたウェイであるヒットウェイがどの順位のウェイかを求め、前記各順位毎のヒット数をカウントするステップと、
前記各順位に対するヒット数の関係によって示されるアクセスパターンから動作ウェイ数の増減を判定するステップと、
動作ウェイ数の増減の判定に従って、前記ウェイの各々の動作または停止を選択するステップとを有するキャッシュ制御方法。
【請求項１９】
使用された時期が最も古い順位のウェイでのヒット数を、使用された時期が最も新しい順位のウェイでのヒット数で除算して得た評価値を用いて前記アクセスパターンを判断する、請求項１８記載のキャッシュ制御方法。
【請求項２０】
前記評価値が第１の閾値より小さいとき前記動作ウェイ数を削減し、前記評価値が第２の閾値より大きいとき前記動作ウェイ数を増加する、請求項１９記載のキャッシュ制御方法。
【請求項２１】
使用された時期が最も新しい順位のウェイでのヒット数をカウントするＭＲＵカウンタと、使用された時期が最も古い順位のウェイでのヒット数をカウントするＬＲＵカウンタとを用い、
前記ＭＲＵカウンタの値が所定値に達したとき、前記第１の閾値に前記所定値を乗算した第３の閾値、および前記第２の閾値に前記所定値を乗算した第４の閾値と、前記ＬＲＵカウンタの値とを比較して前記動作ウェイ数の増減を判定する、請求項２０記載のキャッシュ制御方法。
【請求項２２】
使用された時期が最も新しい順位のウェイでのヒット数をカウントするＭＲＵカウンタと、使用された時期が最も古い順位のウェイでのヒット数をカウントするＬＲＵカウンタとを用い、
所定の判定タイミングで、前記第１の閾値に前記ＭＲＵカウンタの値を乗算した第５の閾値、および前記第２の閾値に前記ＭＲＵカウンタの値を乗算した第６の閾値と、前記ＬＲＵカウンタの値とを比較して前記動作ウェイ数の増減を判定する、請求項２０記載のキャッシュ制御方法。
【請求項２３】
キャッシュアクセスのヒット数をカウントするヒット数カウンタを更に用い、
前記ヒット数カウンタの値が所定値に達したときを前記判定タイミングとする、請求項２２記載のキャッシュ制御方法。
【請求項２４】
キャッシュアクセスの回数をカウントするアクセス回数カウンタを更に用い、
前記アクセス回数カウンタの値が所定値に達したときを前記判定タイミングとする、請求項２２記載のキャッシュ制御方法。
【請求項２５】
前記所定値は実行中のプログラムに応じて変更可能である、請求項２１、２３、または２４のいずれか１項に記載のキャッシュ制御方法。
【請求項２６】
前記所定値は現在の動作ウェイ数に応じて変更可能である、請求項２１、２３、または２４のいずれか１項に記載のキャッシュ制御方法。
【請求項２７】
前記第１の閾値または前記第２の閾値の少なくとも一方が、実行中のプログラムに応じて変更可能である、請求項２０記載のキャッシュ制御方法。
【請求項２８】
前記第１の閾値または前記第２の閾値の少なくとも一方が、現在の動作ウェイ数に応じて変更可能である、請求項２０記載のキャッシュ制御方法。
【請求項２９】
前記第１の閾値と前記第２の閾値が同じ値である、請求項２０記載のキャッシュ制御方法。
【請求項３０】
前記ウェイ数増減判定手段は、全ての順位でのヒット数から前記アクセスパターンを判断する、請求項１８記載のキャッシュ制御方法。
【請求項３１】
前記動作ウェイ数の増減について、カウンタを用いて管理する複数の状態を有し、前記動作ウェイ数の増減の判定結果に従って状態遷移し、状態遷移後の状態に応じて前記動作ウェイ数の増減を決定する、請求項１８記載のキャッシュ制御方法。
【請求項３２】
各々に動作または停止が選択可能な複数のウェイを具備する、セットアソシアティブ方式のキャッシュメモリを制御するためのキャッシュ制御方法であって、
プログラムのキャッシュアクセスの振る舞いに応じて動作ウェイ数の増減を判定するステップと、
前記動作ウェイ数の増減について、カウンタを用いて管理する複数の状態を用い、前記動作ウェイ数の増減の判定結果に従って状態遷移し、状態遷移後の状態に応じて前記動作ウェイ数の増減を決定するステップと、
動作ウェイ数の増減の決定に従って、前記ウェイの各々の動作または停止を選択するステップとを有するキャッシュ制御方法。
【請求項３３】
実際に動作ウェイ数を増加させるウェイ数増加の状態と、実際に動作ウェイ数を削減するウェイ数削減の状態との間に少なくとも１つのウェイ数維持の状態を作り、前記判定結果が動作ウェイ数増加であれば動作ウェイ数増加の方向に状態遷移し、前記ウェイ数増減判定手段の前記判定結果が動作ウェイ数削減であれば動作ウェイ数削減の方向に状態遷移することにより、前記ウェイ数増加の状態と前記ウェイ数減少の状態の間を遷移する、請求項３１または３２に記載のキャッシュ制御方法。
【請求項３４】
前記カウンタは非対称であり、前記動作ウェイ数減少の方向よりも前記動作ウェイ数増加の方向へのカウント段数が少ない、請求項３３記載のキャッシュ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セットアソシアティブ方式のキャッシュメモリに関し、特に、動作させるキャッシュ容量を動的に制御可能な機構のキャッシュ制御に関する。
【背景技術】
【０００２】
近年のマイクロプロセッサでは、性能向上を図るためにチップ上に搭載されているキャッシュメモリの容量が急激に増加している。このため、マイクロプロセッサの消費電力のうちキャッシュメモリの消費電力の占める割合も急激に増加している。
【０００３】
一方、マイクロプロセッサにより実行されるプログラムには様々な特性のものがあり、それらプログラムの特性により必要なキャッシュメモリの容量が異なる。そのため、全てのプログラムにおいてチップ上の全てのキャッシュメモリが必要とされるわけではない。そこで、必要な容量のキャッシュメモリだけを機能させ、他の部分を停止させるというようにキャッシュメモリの容量を制御することで、マイクロプロセッサの消費電力を低減させる手法が提案されている。
【０００４】
一般的なキャッシュメモリの構成として、セットアソシアティブ方式が広く用いられている。セットアソシアティブ方式において、キャッシュメモリは複数のウェイと呼ばれる単位に分割されており、各ウェイにタグおよびデータが格納される。このような構成においては、動作させるウェイ数を制御することによりキャッシュメモリの容量を制御することができる。すなわち、必要数のウェイだけを動作させ、他のウェイへの電源またはクロックの供給を停止すればよい。
【０００５】
また、そのとき動作させるウェイ数を制御する方法として、キャッシュミス率に基づいてウェイ数を制御するという方法が提案されている（例えば、特許文献１参照）。特許文献１によれば、キャッシュミス率を測定しており、その変化に応じて必要なウェイ数を判断し、ウェイ数の増減を決定する。動作させるキャッシュメモリの容量を動的に制御するので、全てのキャッシュメモリを常に動作させる場合に比べて、キャッシュメモリにおける消費電力が低減される。
【０００６】
また、プログラムの性質に合った構成を採ることによりキャッシュ性能を向上させるために、コンパイル時に最適なブロック構成を決定し、実行時にその構成を用いるキャッシュ方式が提案されている（例えば、特許文献２参照）。
【特許文献１】特開平９−５０４０１号公報
【特許文献２】特開２０００−２０３９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１にて提案されたような従来のキャッシュメモリ制御方法は、キャッシュミス率に従ってキャッシュメモリ容量の増減を決定するものである。しかし、測定されたキャッシュミス率は、キャッシュ容量を増加させることがキャッシュミス率の低減にどれだけ有効か、あるいはキャッシュ容量を削減することがキャッシュミス率にどれだけ影響するかを、必ずしも示していない場合がある。
【０００８】
各プログラムのアクセスパターンには、同じアドレスを頻繁に繰り返しアクセスする傾向を示すものと、様々に異なるアドレスをアクセスする傾向にあるものとがある。
【０００９】
図２０は、プログラムのアクセスパターンを示すグラフである。図２０（ａ）は、同じアドレスを頻繁に繰り返しアクセスするアクセスパターンを示し、図２０（ｂ）は、様々に異なるアドレスをアクセスするアクセスパターンを示している。図２０において、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）状態値は、最近にアクセスされたウェイに対するアクセスである度合いを示しており、その値が小さいほど最近アクセスされたことを示す。
【００１０】
図２０（ｂ）のように、様々に異なるアドレスをアクセスする傾向にあるプログラムでは、キャッシュミス率が高いとき、ウェイ数を増加させることは有効である。これに対して、図２０（ａ）のように、同じアドレスを頻繁にアクセスする傾向にあるプログラムでは、アクセス頻度の低いウェイにおけるアクセスヒットの確率が低いので、キャッシュミス率が高いからといって、動作させるウェイ数を更に増加させてもキャッシュミス率の低減に余り寄与しない。このようにキャッシュミス率の低減に余り有効でない場合にも、従来のキャッシュメモリ制御方法ではウェイ数を増加する制御がなされていた。
【００１１】
また、一般的なプログラムは、ある程度一定のキャッシュアクセスの振る舞いの傾向（アクセスパターン）を示すが、様々な処理の組み合わせからなるので、一時的にはアクセスパターンからはずれた振る舞いをすることがある。そのような一時的な振る舞いによってキャッシュミス率が変化したとき、従来のキャッシュメモリ制御方法では、その変化に応じてキャッシュ容量を増減させていた。しかし、一時的な振る舞いによってキャッシュ容量を増減させると、本来のアクセスパターンに戻ったときに、キャッシュ容量が不足あるいは過剰となるといったことが生じる。
【００１２】
このように従来のキャッシュメモリ制御方法では、キャッシュメモリの容量を最適に制御して、キャッシュによる性能向上と消費電力低減を効率良く両立させることが困難であった。
【００１３】
また、特許文献２にて提案されたような従来のキャッシュ方式では、プログラムのコンパイル時にキャッシュ構成が選択されるものである。しかし、コンパイル時では実際の実行パスがわからないので、静的な解析では実行中のプログラムに最適なキャッシュ構成を予測することは困難であり、特許文献２の方式は実行中のプログラムに最適なキャッシュ構成を提供できず、キャッシュ性能を向上させることができないことがあった。
【００１４】
本発明の目的は、動作させる容量を動的に制御可能な機構のキャッシュメモリ制御において性能向上と消費電力低減を効率良く両立させたキャッシュメモリ、およびその制御方法を提供することである。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、本発明のキャッシュメモリは、
セットアソシアティブ方式のキャッシュメモリであって、
各々に動作または停止が選択可能な複数のウェイと、
キャッシュアクセスがヒットしたときヒットウェイを判定するヒット判定手段と、
動作中の各ウェイについて、使用された時期が最も新しいものから最も古いものまでの順位を管理しており、前記ヒット判定手段で得られた前記ヒットウェイがどの順位のウェイかを求め、前記各順位毎のヒット数をカウントし、前記各順位に対するヒット数の関係によって示されるアクセスパターンから動作ウェイ数の増減を判定するウェイ数増減判定手段と、
動作ウェイ数の増減の判定に従って、前記ウェイの各々の動作または停止を選択するウェイ数制御手段とを有している。
【００１６】
したがって、本発明によれば、ヒット判定手段でのキャッシュヒットの判定結果を用いて、ウェイ数増減判定手段が、実行中のプログラムのアクセスパターンを解析し、そのアクセスパターンに適した動作ウェイ数を決定し、ウェイ数制御手段がその決定に従って動作ウェイ数を制御するので、プログラムおよびその動作の特性に応じて、必要な動作ウェイ数を正確に求めて不要なウェイの動作を停止し、適切な動作ウェイ数で動作することができる。
【００１７】
また、前記ウェイ数増減判定手段は、使用された時期が最も古い順位のウェイでのヒット数を、使用された時期が最も新しい順位のウェイでのヒット数で除算して得た評価値を用いて前記アクセスパターンを判断することとしてもよい。
【００１８】
したがって、最下位と最上位の２つの順位のヒット数の関係からアクセスパターンを判断するので、簡易な構成でアクセスパターン判断が可能である。
【００１９】
また、前記ウェイ数増減判定手段は、前記評価値が第１の閾値より小さいとき前記動作ウェイ数を削減し、前記評価値が第２の閾値より大きいとき前記動作ウェイ数を増加することとしてもよい。
【００２０】
したがって、２つの閾値を用いて増加と削減をそれぞれ判定することにより、動作ウェイ数を増加すべき状態、削減すべき状態を互いに独立の閾値で決めることができる。
【００２１】
また、前記ウェイ数増減判定手段は、
使用された時期が最も新しい順位のウェイでのヒット数をカウントするＭＲＵカウンタと、使用された時期が最も古い順位のウェイでのヒット数をカウントするＬＲＵカウンタとを具備し、
前記ＭＲＵカウンタの値が所定値に達したとき、前記第１の閾値に前記所定値を乗算した第３の閾値、および前記第２の閾値に前記所定値を乗算した第４の閾値と、前記ＬＲＵカウンタの値とを比較して前記動作ウェイ数の増減を判定することとしてもよい。
【００２２】
したがって、ＭＲＵカウンタの値が所定値に達したときのＬＲＵカウンタの値を用い、また第１および第２の閾値にその所定値を乗算した第３および第４の閾値を用いるので、演算コストの高い除算を行うことなく、最も古い順位のウェイでのヒット数（ＬＲＵカウンタの値）を使用された時期が最も新しい順位のウェイでのヒット数（ＭＲＵカウンタの値）で除算した評価値と閾値とを比較することができる。
【００２３】
また、前記ウェイ数増減判定手段は、
使用された時期が最も新しい順位のウェイでのヒット数をカウントするＭＲＵカウンタと、使用された時期が最も古い順位のウェイでのヒット数をカウントするＬＲＵカウンタとを具備し、
所定の判定タイミングで、前記第１の閾値に前記ＭＲＵカウンタの値を乗算した第５の閾値、および前記第２の閾値に前記ＭＲＵカウンタの値を乗算した第６の閾値と、前記ＬＲＵカウンタの値とを比較して前記動作ウェイ数の増減を判定することとしてもよい。
【００２４】
したがって、判定タイミングでのＭＲＵカウンタの値を第１、第２の閾値に乗算して得た第５、第６の閾値を用い、それらと判定タイミングでのＬＲＵカウンタの値を比較するので、判定タイミングでＭＲＵカウンタの値が一定でない場合でも、演算コストの高い除算を行うことなく、評価値と閾値とを比較することができる。
【００２５】
また、前記ウェイ数増減判定手段は、
キャッシュアクセスのヒット数をカウントするヒット数カウンタを更に具備し、
前記ヒット数カウンタの値が所定値に達したときを前記判定タイミングとすることとしてもよい。
【００２６】
したがって、キャッシュのヒット数が所定値に達したときの評価値を用いることにより、アクセスパターンが一定の精度で評価値に反映される期間を確保することができる。
【００２７】
また、前記ウェイ数増減判定手段は、
キャッシュアクセスの回数をカウントするアクセス回数カウンタを更に具備し、
前記アクセス回数カウンタの値が所定値に達したときを前記判定タイミングとすることとしてもよい。
【００２８】
したがって、キャッシュのアクセス回数が所定値に達したときの評価値を用いることにより、アクセスパターンが一定の精度で評価値に反映される期間を確保することができる。
【００２９】
また、前記所定値は実行中のプログラムに応じて変更可能であることとしてもよい。
【００３０】
したがって、プログラムのアクセスパターンを評価値に反映させる期間を、実行中のプログラム毎に適切に設定することができるので、様々なプログラムに対して一定の精度で評価値を算出することができる。
【００３１】
あるいは、前記所定値は現在の動作ウェイ数に応じて変更可能であることとしてもよい。
【００３２】
したがって、プログラムのアクセスパターンを評価値に反映させる期間を、その時点での動作ウェイ数毎に適切に設定することができるので、その時点の動作ウェイ数に対して一定の精度で評価値を算出することができる。
【００３３】
また、前記第１の閾値または前記第２の閾値の少なくとも一方が、実行中のプログラムに応じて変更可能であることとしてもよい。
【００３４】
したがって、動作ウェイ数の増減を判定する閾値をプログラム毎に変更可能なので、プログラムの性質によって適切な閾値が異なる場合でも、適切な閾値によって最適な動作ウェイ数を選択することができる。
【００３５】
また、前記第１の閾値または前記第２の閾値の少なくとも一方が、現在の動作ウェイ数に応じて変更可能であることとしてもよい。
【００３６】
したがって、動作ウェイ数の増減を判定する閾値を、その時点での動作ウェイ数毎に変更可能なので、その時点での動作ウェイ数によって適切な閾値が異なる場合でも、適切な閾値によって最適な動作ウェイ数を選択することができる。
【００３７】
また、前記第１の閾値と前記第２の閾値が同じ値であることとしてもよい。
【００３８】
したがって、最適な閾値として第１の閾値と第２の閾値が一致する場合でも、その設定が可能である。
【００３９】
また、前記ウェイ数増減判定手段は、全ての順位でのヒット数から前記アクセスパターンを判断することとしてもよい。
【００４０】
したがって、全ての順位でのヒット数からアクセスパターンを詳細かつ正確に判断することができるので、より高い精度で動作ウェイ数を適切に制御することができる。
【００４１】
また、前記動作ウェイ数の増減について、カウンタを用いて管理する複数の状態を有し、前記ウェイ数増減判定手段における動作ウェイ数の増減の判定結果に従って状態遷移し、状態遷移後の状態に応じて前記ウェイ数制御手段に前記動作ウェイ数の増減を指示する必要ウェイ数予測手段を更に有することとしてもよい。
【００４２】
したがって、ウェイ数増減判定手段による動作ウェイ数の増減の判定結果をそのまま動作ウェイ数の制御に用いるのではなく、動作ウェイ数の増減を決めるための複数の状態を持ち、ウェイ数増減判定手段からの判定結果を状態遷移に用いることで、ウェイ数増減判定手段による判定結果が、一時的なものか否か見極めた上で動作ウェイ数の制御を決定することができる。
【００４３】
本発明の他のキャッシュメモリは、
セットアソシアティブ方式のキャッシュメモリであって、
各々に動作または停止が選択可能な複数のウェイと、
プログラムのキャッシュアクセスの振る舞いに応じて動作ウェイ数の増減を判定するウェイ数増減判定手段と、
前記動作ウェイ数の増減について、カウンタを用いて管理する複数の状態を有し、前記ウェイ数増減判定手段における動作ウェイ数の増減の判定結果に従って状態遷移し、状態遷移後の状態に応じて前記動作ウェイ数の増減を決定する必要ウェイ数予測手段と、
前記必要ウェイ数予測手段によって決定された前記動作ウェイ数の増減の判定に従って、前記ウェイの各々の動作または停止を選択するウェイ数制御手段とを有している。
【００４４】
したがって、本発明によれば、必要ウェイ数予測手段は、動作ウェイ数の増減を決めるための複数の状態を持ち、ウェイ数増減判定手段からの判定結果を状態遷移に用いることで、ウェイ数増減判定手段による判定結果が、一時的なものか否か見極めた上で動作ウェイ数の制御を決定するので、動作ウェイ数の増減の判定にプログラムの一時的な振る舞いによる影響が含まれている場合でも、プログラムの一時的な振る舞いによる動作ウェイ数の不要な増減を抑制し、キャッシュ性能と消費電力のバランスを良好に維持することができる。
【００４５】
また、前記必要ウェイ数予測手段は、実際に動作ウェイ数を増加させるウェイ数増加の状態と、実際に動作ウェイ数を削減するウェイ数削減の状態との間に少なくとも１つのウェイ数維持の状態を有し、前記ウェイ数増減判定手段の前記判定結果が動作ウェイ数増加であれば動作ウェイ数増加の方向に状態遷移し、前記ウェイ数増減判定手段の前記判定結果が動作ウェイ数削減であれば動作ウェイ数削減の方向に状態遷移することにより、前記ウェイ数増加の状態と前記ウェイ数減少の状態の間を遷移することとしてもよい。
【００４６】
したがって、ウェイ数増減判定手段による動作ウェイ数の増減の判定結果を用いてそのまま動作ウェイ数を制御するのではなく、動作ウェイ数を増減させるときにウェイ数維持の状態において、ウェイ数増減判定手段による判定結果が、一時的なものか否か見極めた上で動作ウェイ数の制御を決定することができる。
【００４７】
また、前記必要ウェイ数予測手段の用いる前記カウンタは非対称であり、前記動作ウェイ数減少の方向よりも前記動作ウェイ数増加の方向へのカウント段数が少ないものとしてもよい。
【００４８】
したがって、プログラムによるアクセスパターンの変化に対して、動作ウェイ数増加の方向には素早く追従し、削減の方向には一時的な振る舞いの影響を強く抑制するので、プログラムの一時的な振る舞いに対してキャッシュ性能を高く維持することができる。
【発明の効果】
【００４９】
本発明によれば、キャッシュ性能の低下を抑止しつつ消費電力を最大限削減することができる。
【発明を実施するための最良の形態】
【００５０】
本発明の第１の実施形態について図面を参照して詳細に説明する。
【００５１】
図１は、第１の実施形態のキャッシュ機構を示すブロック図である。本実施形態において、キャッシュメモリの機構は４ウェイのセットアソシアティブキャッシュであり、各ウェイ毎に動作させるか否かを制御可能である。この制御で各ウェイを停止させることにより消費電力を削減することができる。
【００５２】
図１を参照すると、本実施形態のキャッシュ機構１は、ウェイ３０〜３３、キャッシュ制御部１０、アドレスデコーダ１１、データマルチプレクサ１２、アドレス比較器２０〜２３、ヒット判定部２４、ウェイ数増減判定部２、およびウェイ数制御部４を有している。
【００５３】
ウェイ３０〜３３の各々は、アドレスを格納するタグメモリと、データを格納するデータメモリを有する構成である。ウェイ３０は、タグメモリ４０とデータメモリ５０を具備する。ウェイ３１は、タグメモリ４１とデータメモリ５１を具備する。ウェイ３２は、タグメモリ４２とデータメモリ５２を具備する。ウェイ３３は、タグメモリ４３とデータメモリ５３を具備する。本実施形態では、キャッシュのセット数は８とし、データメモリに格納されるデータのブロックサイズは４バイトとする。
【００５４】
キャッシュ制御部１０は、外部からリードまたはライトなどの命令が与えられると、その情報を各ウェイ３０〜３３のタグメモリ４０〜４３およびデータメモリ５０〜５３に送る。
【００５５】
アドレスデコーダ１１には外部からアドレスが与えられる。図２は、外部から与えられるアドレスの構成を示す図である。本実施形態では、アドレスは３２ビット幅であるとする。図２を参照すると、アドレスは、ブロックオフセット２００、セットアドレス２０１、およびタグアドレス２０２からなっている。
【００５６】
ブロックオフセット２００は、データメモリに格納されているデータの大きさを示す情報である。本実施形態では、ブロックサイズが４バイトなのでブロックオフセット２００は２ビットである。
【００５７】
セットアドレス２０１は、アクセスのあったアドレスのデータが格納されている可能性のあるセットを示す情報である。本実施形態ではセット数が８なのでセットアドレス２０１は３ビットである。タグアドレス２０２は、アドレスからブロックオフセット２００およびセットアドレス２０１を除いた２７ビットの情報である。タグアドレス２０２はタグメモリに格納される。
【００５８】
アドレスデコーダ１１は、外部からアドレスを与えられると、そのアドレスに対応するセットアドレス２０１およびタグアドレス２０２を求め、そのセットアドレス２０１を各ウェイ３０〜３３およびウェイ数増減判定部２に、タグアドレス２０２をアドレス比較器２０〜２３に送る。
【００５９】
各ウェイ３０〜３３は、アドレスデコーダ１１からのセットアドレス２０１で指定されたセットに対応するタグメモリに格納されているタグアドレスをアドレス比較器２０〜２３に送り、そのセットに対応するデータメモリに格納されているデータをデータマルチプレクサ１２に送る。ウェイ３０のタグメモリ４０からのタグアドレスはアドレス比較器２０に、ウェイ３１のタグメモリ４１からのタグアドレスはアドレス比較器２１に、ウェイ３２のタグメモリ４２からのタグアドレスはアドレス比較器２２に、ウェイ３３のタグメモリ４３からのタグアドレスはアドレス比較器２３に送られる。
【００６０】
アドレス比較器２０は、タグメモリ４０からのタグアドレスと、アドレスデコーダ１１からのタグアドレス２０２が一致するか否かを判定し、判定結果をヒット判定部２４に送る。判定によりそれらが一致すれば、外部からのアクセスがあったアドレスのデータがデータメモリ５０に格納されている。また、不一致であれば、アクセスのあったアドレスのデータがデータメモリ５０に格納されていない。
【００６１】
同様に、アドレス比較器２１は、タグメモリ４１からのタグアドレスと、アドレスデコーダ１１からのタグアドレス２０２が一致するか否かを判定し、判定結果をヒット判定部２４に送る。アドレス比較器２２は、タグメモリ４２からのタグアドレスと、アドレスデコーダ１１からのタグアドレス２０２が一致するか否かを判定し、判定結果をヒット判定部２４に送る。アドレス比較器２３は、タグメモリ４３からのタグアドレスと、アドレスデコーダ１１からのタグアドレス２０２が一致するか否かを判定し、判定結果をヒット判定部２４に送る。
【００６２】
ヒット判定部２４は、アドレス比較器２０〜２３より得られた判定結果から、キャッシュヒットかキャッシュミスかを判定する。アドレス比較器２０〜２３のいずれかで一致が得られればキャッシュヒットである。全てのアドレス比較器２０〜２３にて不一致であればキャッシュミスである。ヒット判定部２４は、キャッシュヒットかキャッシュミスかを示すヒット情報１１００をキャッシュ制御部１０、データマルチプレクサ１２、およびウェイ数増減判定部２に送る。さらにキャッシュヒットの場合、ヒット判定部２４は、ヒットしたウェイ（ヒットウェイ）を示すヒットウェイ位置情報１１０１をデータマルチプレクサ１２およびウェイ数増減判定部２に送る。
【００６３】
データマルチプレクサ１２は、ヒット判定部２４からのヒット情報１１００およびヒットウェイ位置情報１１０１に基づき、ヒットしたウェイのデータメモリからのデータを選択して外部に出力する。
【００６４】
ウェイ数増減判定部２は、ヒット判定部２４からのヒット情報１１００およびヒットウェイ位置情報１１０１より実行中のプログラムのアクセスパターンを解析する。さらに、ウェイ数増減判定部２は、解析によって得られたアクセスパターンにおいて、動作しているウェイの数（以下、「動作ウェイ数」という）を増加するか、維持するか、削減するかを決定する。
【００６５】
そして、ウェイ数増減判定部２は、動作ウェイ数を増加する場合にはウェイ数増加情報１０００を、動作ウェイ数を削減する場合にはウェイ数削減情報１００１をウェイ数制御部４に送る。
【００６６】
図３は、第１の実施形態のウェイ数増減判定部の構成を示すブロック図である。図３を参照すると、ウェイ数増減判定部２は、ＬＲＵ状態値保持部１００、ＬＲＵ状態判定部１０１、およびウェイ数増減判定器１０２を有している。
【００６７】
ＬＲＵ状態値保持部１００は、８つのセットの各々に対応してＬＲＵ状態値情報を格納する。ＬＲＵ状態値情報には、４つの各ウェイのエントリのＬＲＵ状態値が含まれている。
【００６８】
ＬＲＵ状態値は、小さいほど最近に使用されたエントリであることを示し、大きいほど最も長時間使用されていないエントリであることを示す。つまり、ＬＲＵ状態値の最も小さいエントリがＭＲＵ（Ｍｏｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）エントリであり、ＬＲＵ状態値の最も大きいエントリがＬＲＵエントリである。このＬＲＵ状態値を参照すれば、アクセスのあったエントリの使用頻度が判明する。
【００６９】
図４は、ＬＲＵ状態値情報の例を示す図である。図４（ａ）に示されるように、動作ウェイ数が４の場合、ＬＲＵ状態値が０であるウェイ３０のエントリがＭＲＵエントリであり、ＬＲＵ状態値が３であるウェイ３３のエントリがＬＲＵエントリである。図４（ｂ）に示されるように、動作ウェイ数が３の場合、ＬＲＵ状態値が０であるウェイ３０のエントリがＭＲＵエントリであり、ＬＲＵ状態値が２であるウェイ３２のエントリがＬＲＵエントリである。図４（ｃ）に示されるように、動作ウェイ数が２の場合、ＬＲＵ状態値が０であるウェイ３０のエントリがＭＲＵエントリであり、ＬＲＵ状態値が１であるウェイ３１のエントリがＬＲＵエントリである。動作ウェイ数は、ウェイ数制御部４からのウェイ構成情報１００４によって知ることができる。ウェイ構成情報１００４は、動作ウェイ数を示す情報である。
【００７０】
ＬＲＵ状態判定部１０１は、キャッシュヒット時に、ヒット判定部２４からのヒット情報１１００およびヒットウェイ位置情報１１０１と、ウェイ数制御部４からのウェイ構成情報１００４と、ＬＲＵ状態値保持部１００からのＬＲＵ状態値情報とを元に、アクセスされたエントリがＬＲＵエントリか、ＭＲＵエントリか、またはそれ以外のエントリかを判定し、その判定結果をウェイ数増減判定器１０２に送る。
【００７１】
ウェイ数増減判定器１０２は、ＬＲＵ状態判定部１０１の判定結果に基づき、動作ウェイ数を増加させるべきか、維持するべきか、削減するべきかを判定し、ウェイ数増加情報１０００またはウェイ数削減情報１００１をウェイ数制御部４に送る。
【００７２】
以下、ウェイ数増減判定器１０２における基本的な判定方法について説明する。
【００７３】
図２０（ａ）に示したような、ＭＲＵエントリへのアクセスが集中するアクセスパターンでは、ウェイを増加しても性能（キャッシュヒット率）の向上に余り寄与せず、またウェイを削減しても性能への影響は少ない。そのため、ウェイ数増減判定器１０２は動作ウェイ数を削減することを決定する。他方、図２０（ｂ）に示したような、ＭＲＵエントリからＬＲＵエントリまで比較的均等にアクセスするアクセスパターンでは、ウェイを増加すれば性能の向上に寄与し、削減すれば性能が低下するので、ウェイ数増減判定器１０２は、動作ウェイ数を増加させることを決定する。
【００７４】
ウェイ数増減判定器１０２は、ウェイ数増減の判定のためのアクセスパターンの解析に、式（１）によって示される評価関数Ｄを用いる。
【００７５】
【数１】
2005316842.tif 000003
【００７６】
図２０（ａ）に示したようなＭＲＵへのアクセスが集中するアクセスパターンであれば評価関数Ｄの値は小さくなる。また、図２０（ｂ）に示したようなＭＲＵからＬＲＵまで比較的均等にアクセスするアクセスパターンであれば評価関数Ｄの値は大きくなる。つまり、評価関数Ｄは、実行中のプログラムのアクセスパターンの特徴を示しているといえる。
【００７７】
また、ここで評価関数Ｄを用いてアクセスパターン判定するために閾値Ｔ１、Ｔ２を用いる。閾値Ｔ１、Ｔ２はＴ１＜Ｔ２の関係にある。
【００７８】
ウェイ数増減判定器１０２は、評価関数Ｄが閾値Ｔ１未満であれば、つまりＤ＜Ｔ１であれば、ＭＲＵエントリにアクセスが集中するアクセスパターンであると判定し、ウェイ数削減情報１００１をウェイ数制御部４に送る。また、ウェイ数増減判定器１０２は、評価関数Ｄが閾値Ｔ２より大きければ、つまりＤ＞Ｔ２であれば、ＭＲＵエントリからＬＲＵエントリまで比較的均等にアクセスするアクセスパターンであると判定し、ウェイ数増加情報１０００をウェイ数制御部４に送る。ウェイ数増減判定器１０２は、評価関数Ｄが閾値Ｔ１以上かつ閾値Ｔ２以下であれば、つまりＴ１≦Ｄ≦Ｔ２であれば、ウェイ数増加情報１０００およびウェイ数削減情報１００１のどちらも送らない。このように、２つの閾値Ｔ１、Ｔ２を用いているのは、増加、減少を互いに独立の閾値で、アクセスパターンに応じて適切に選択可能とするためである。これにより、動作ウェイ数を増加すべき状態、削減すべき状態、およびその間の動作ウェイ数を維持する状態をアクセスパターンに合わせて適切に選択することができる。
【００７９】
次に、ウェイ数増減判定器１０２の構成と、ウェイ数増減の判定における具体的な動作について説明する。
【００８０】
図５は、第１の実施形態のウェイ数増減判定器の構成を示すブロック図である。図５を参照すると、ウェイ数増減判定器１０２は、ＬＲＵカウンタ４００、ＭＲＵカウンタ４０１、閾値Ｔ１保持部４０２、閾値Ｔ２保持部４０３、比較器４１０、４１１、４１３、判定タイミング生成用カウンタ値保持部４１２、およびＡＮＤ部４１４、４１５を有しており、これら各部の動作によって上述したような判定を可能としている。
【００８１】
ＬＲＵカウンタ４００は、アクセスされたエントリがＬＲＵエントリであった回数をカウントする。そのため、ＬＲＵカウンタ４００は、ＬＲＵ状態判定部１０１による判定の結果、アクセスされたエントリがＬＲＵエントリであればカウントアップする。
【００８２】
ＭＲＵカウンタ４０１は、アクセスされたエントリがＭＲＵエントリであった回数をカウントする。そのため、ＭＲＵカウンタ４０１は、ＬＲＵ状態判定部１０１による判定の結果、アクセスされたエントリがＭＲＵエントリであればカウントアップする。
【００８３】
式（１）に示した評価関数Ｄは、ＬＲＵカウンタ４００およびＭＲＵカウンタ４０１の値を用いて式（２）のように示すことができる。
【００８４】
【数２】
2005316842.tif 000004
【００８５】
この式（２）には除算が含まれているため、そのまま用いると演算コストが高くなる。そこで、ウェイ数増減判定器１０２は、ＭＲＵカウンタ４０１の値が所定値（判定タイミング生成用カウンタ保持部４１２の設定値）に達したときに、判定結果を出力することで、式（２）の分母であるＭＲＵカウンタ４０１の値を常に一定とすると共に、除算の処理を省いている。つまり、式（２）の両辺にＭＲＵカウンタ４０１の値を乗算し、ＭＲＵカウンタ４０１の値が所定値に達したときのＬＲＵカウンタ４００の値を評価関数Ｄの代わりに用いる。
【００８６】
ここで用いる閾値Ｔ１、Ｔ２は、式（２）に示した評価関数Ｄと直接比較されるのではなく、ＬＲＵカウンタ４００の値と比較される。そのため閾値Ｔ１、Ｔ２の値は、判定タイミング生成用カウンタ値保持部４１２に設定された値を考慮した値に変換しておく必要がある。
【００８７】
これにより、ＭＲＵカウンタ４０１の値が所定値に達したときのＬＲＵカウンタ４００の値を用い、また閾値Ｔ１、Ｔ２に元のＴ１、Ｔ２にその所定値を乗算した値を用いるので、演算コストの高い除算を行うことなく、ＬＲＵカウンタ４００の値をＭＲＵカウンタ４０１の値で除算した値と閾値との比較が可能となり、低コストで構成することが可能となっている。
【００８８】
閾値Ｔ１保持部４０２は、動作ウェイ数の増減を判定するために、ＬＲＵカウンタ４００の値と比較される閾値Ｔ１を格納している。閾値Ｔ２保持部４０３は、動作ウェイ数の増減を判定するために、ＬＲＵカウンタ４００の値と比較される閾値Ｔ２を格納している。ここでは、閾値Ｔ１、Ｔ２は、Ｔ１＜Ｔ２の関係にあり、実行中のプログラムの特性に合わせて適時に変更可能であってもよい。また、閾値Ｔ１、Ｔ２は、動作ウェイ数に応じて適時に変更可能であってもよい。閾値Ｔ１、Ｔ２は適切な値に設定される必要があるが、プログラムの性質または動作ウェイ数によって適切な値が異なることも考えられる。その場合でも、プログラムまたは動作ウェイ数に応じて閾値Ｔ１、Ｔ２を変更可能とすれば、様々なプログラムまたは動作ウェイ数に対して常に一定の精度で評価関数Ｄを算出し、最適な動作ウェイ数の選択制御を行うことができる。
【００８９】
判定タイミング生成用カウンタ値保持部４１２は、動作ウェイ数の増減を判定するタイミングを定める、言い換えれば、式（１）に示した評価関数Ｄを算出する期間を定めるパラメータとしての値を保持する。判定タイミング生成用カウンタ値保持部４１２に設定する値を大きくすれば、評価関数Ｄの算出期間が長くなり、プログラムの一時的な変動の影響を受け難くなる。逆に、設定値を小さくすれば、評価関数Ｄの算出期間が短くなり、プログラムのアクセスパターンの変動に敏感に反応して動作ウェイ数が増減されるようになる。
【００９０】
比較器４１０は、ＬＲＵカウンタ４００の値が閾値Ｔ１より小さければ、その旨の信号をＡＮＤ部４１４に送る。これはＭＲＵエントリにアクセスが集中するアクセスパターンに相当する。
【００９１】
比較器４１１は、ＬＲＵカウンタ４００の値が閾値Ｔ２より大きければ、その旨の信号をＡＮＤ部４１５に送る。これは、ＭＲＵエントリからＬＲＵエントリまで比較的均等にアクセスするアクセスパターンに相当する。
【００９２】
比較器４１３は、ＭＲＵカウンタ４０１の値と判定タイミング生成用カウンタ値保持部４１２に設定されている値が一致すると、その旨の一致信号をＡＮＤ部４１４、４１５、ＬＲＵカウンタ４００およびＭＲカウンタ４０１に送る。
【００９３】
ＡＮＤ部４１４は、比較器４１３からの一致信号のタイミングで比較器４１０からの信号を、ウェイ数削減情報１００１として、ウェイ数制御部４に送る。ＡＮＤ部４１５は、比較器４１３からの一致信号のタイミングで比較器４１１からの信号を、ウェイ数増加情報１０００として、ウェイ数制御部４に送る。また、ＬＲＵカウンタ４００およびＭＲＵカウンタ４０１は、比較器４１３からの一致信号によりカウンタ値をリセットする。
【００９４】
図５に示された各部の動作により、ウェイ数増減判定器１０２は、ＬＲＵカウンタ４００およびＭＲＵカウンタ４０１の値と閾値Ｔ１および閾値Ｔ２とを用い、実行中のプログラムのアクセスパターンに応じた動作ウェイ数の増減を選択する。
【００９５】
なお、本実施形態では、最下位のＬＲＵエントリ用のＬＲＵカウンタ４００と最上位のＭＲＵエントリ用のＭＲＵカウンタ４０１の２つを用い、ＭＲＵエントリのヒット数とＬＲＵエントリのヒット数の関係（式（２））からプログラムのアクセスパターンを解析している。これにより、最小限のカウンタを備えるだけの簡易かつ小型の構成で、アクセスパターンを低コストかつ容易に判断することを可能にしている。しかし、本発明はそれに限定されるものではない。例えば、ＬＲＵエントリおよびＭＲＵエントリ以外のウェイに対してもカウンタを設け、プログラムのアクセスパターンをより詳細かつ高精度で解析し、動作ウェイ数を増やすべきか減らすべきかを最適に判定することとしてもよい。
【００９６】
また、ウェイ数増減判定器１０２からのウェイ数増加情報１０００およびウェイ数削減情報１００１を合わせてウェイ数増減情報と呼ぶこととする。
【００９７】
図１において、ウェイ数制御部４は、ウェイ数増減判定部２からのウェイ数増減情報に従って動作ウェイ数を制御する。ここでは、動作ウェイ数は２〜４の範囲で制御されるものとする。そのため、ウェイ数制御部４は、ウェイ３２停止情報１００５およびウェイ３３停止情報１００６によって、ウェイ３２およびウェイ３３の動作または非動作を選択することとする。そして、動作させるウェイには、動作に必要な電源およびクロックなどが供給され、動作させないウェイには供給されない。なお、ウェイ３０、３１は常に動作させるので、常に電源およびクロックなどが供給される。
【００９８】
また、ウェイ数制御部４は、動作ウェイ数およびどのウェイが動作しているかを示すウェイ構成情報１００４を、キャッシュ制御部１０、ウェイ数増減判定部２、およびヒット判定部２４に送る。
【００９９】
次に、本実施形態のキャッシュ機構１のリード時の動作について説明する。ただし、ライト時の動作もリード時の動作と同様である。
【０１００】
まず、プロセッサ（不図示）からキャッシュ機構１にリード命令とアドレスが与えられる。
【０１０１】
キャッシュ制御部１０は、リード命令を受けると、各ウェイ３０〜３３のタグメモリおよびデータメモリに格納されているアドレスおよびデータを出力するように、各ウェイ３０〜３３に指示する。また、アドレスデコーダ１１は、与えられたアドレスからセットアドレス２０１およびタグアドレス２０２を抽出する。そして、アドレスデコーダ１１は、セットアドレス２０１を各ウェイ３０〜３３およびウェイ数増減判定部２に送り、タグアドレス２０２をアドレス比較器２０〜２３に送る。
【０１０２】
ウェイ３０におけるタグメモリ４０は、キャッシュ制御部１０からの指示と、アドレスデコーダ１１からのセットアドレス２０１とに基づき、アクセスのあったアドレスのデータが格納されている可能性のあるセットを特定し、そこに格納されているアドレスをアドレス比較器２０に送る。
【０１０３】
また、ウェイ３０におけるデータメモリ５０は、キャッシュ制御部１０からの指示と、セットアドレス２０１とに基づき、アクセスのあったアドレスのデータが格納されている可能性のあるセットを特定し、そこに格納されているデータをデータマルチプレクサ１２に送る。
【０１０４】
同様に、ウェイ３１におけるタグメモリ４１は、キャッシュ制御部１０からの指示と、セットアドレス２０１とに基づき、アクセスのあったアドレスのデータが格納されている可能性のあるセットを特定し、そこに格納されているアドレスをアドレス比較器２１に送る。
【０１０５】
データメモリ５１は、キャッシュ制御部１０からの指示と、セットアドレス２０１とに基づき、アクセスのあったアドレスのデータが格納されている可能性のあるセットを特定し、そこに格納されているデータをデータマルチプレクサ１２に送る。
【０１０６】
同様に、ウェイ３２におけるタグメモリ４２は、キャッシュ制御部１０からの指示と、セットアドレス２０１とに基づき、アクセスのあったアドレスのデータが格納されている可能性のあるセットを特定し、そこに格納されているアドレスをアドレス比較器２２に送る。
【０１０７】
データメモリ５２は、キャッシュ制御部１０からの指示と、セットアドレス２０１とに基づき、アクセスのあったアドレスのデータが格納されている可能性のあるセットを特定し、そこに格納されているデータをデータマルチプレクサ１２に送る。
【０１０８】
同様に、ウェイ３３におけるタグメモリ４３は、キャッシュ制御部１０からの指示と、セットアドレス２０１とに基づき、アクセスのあったアドレスのデータが格納されている可能性のあるセットを特定し、そこに格納されているアドレスをアドレス比較器２３に送る。
【０１０９】
データメモリ５３は、キャッシュ制御部１０からの指示と、セットアドレス２０１に基づき、アクセスのあったアドレスのデータが格納されている可能性のあるセットを特定し、そこに格納されているデータをデータマルチプレクサ１２に送る。
【０１１０】
アドレス比較器２０は、タグメモリ４０からのタグアドレスと、アドレスデコーダ１１からのタグアドレス２０２とを比較し、比較結果をヒット判定部２４に送る。同様に、アドレス比較器２１は、タグメモリ４１からのタグアドレスと、アドレスデコーダ１１からのタグアドレス２０２とを比較し、比較結果をヒット判定部２４に送る。アドレス比較器２２は、タグメモリ４２からのタグアドレスと、アドレスデコーダ１１からのタグアドレス２０２とを比較し、比較結果をヒット判定部２４に送る。アドレス比較器２３は、タグメモリ４３からのタグアドレスと、アドレスデコーダ１１からのタグアドレス２０２とを比較し、比較結果をヒット判定部２４に送る。
【０１１１】
ヒット判定部２４は、アドレス比較器２０、アドレス比較器２１、アドレス比較器２２、およびアドレス比較器２３からの比較結果から、キャッシュヒットまたキャッシュミスを判定する。アドレス比較器２０〜２３のいずれかで一致があればキャッシュヒットであり、全てが不一致であればキャッシュミスである。
【０１１２】
キャッシュヒットした場合、ヒット判定部２４は、キャッシュヒットしたことを示すヒット情報１１００と、ヒットしたウェイを示すヒットウェイ位置情報１１０１を送る。ヒット情報１１００は、ウェイ数増減判定部２、キャッシュ制御部１０、データマルチプレクサ１２に送られる。ヒットウェイ位置情報１１０１は、ウェイ数増減判定部２、データマルチプレクサ１２に送られる。データマルチプレクサ１２は、ヒットウェイ位置情報１１０１に従って、ヒットしたウェイのデータメモリからのデータを選択してプロセッサに送る。
【０１１３】
キャッシュミスした場合、ヒット判定部２４は、その旨をキャッシュ制御部１０に送る。その場合、キャッシュ制御部１０の制御により、キャッシュ内容は主記憶（不図示）からのデータに更新される。
【０１１４】
ウェイ数増減判定部２は、ヒット判定部２４からヒット情報１１００およびヒットウェイ位置情報１１０１を受け、アドレスデコーダ１１から、ヒットしたデータのセットアドレス２０１を受ける。
【０１１５】
図３において、ヒット情報１１００を受けると、ＬＲＵ状態判定部１０１は、ヒットウェイ位置情報１１０１とＬＲＵ状態値情報を元に、キャッシュヒットしたデータが格納されているウェイのＬＲＵ状態値を求め、各ウェイのＬＲＵ状態値を更新してＬＲＵ状態値保持部１００に格納する。
【０１１６】
このときのＬＲＵ状態値情報の更新方法は以下の１〜３に示す通りである。
１．ヒットしたウェイのＬＲＵ状態値を０に更新する。
２．ヒットしたウェイの更新前のＬＲＵ状態値より小さなＬＲＵ状態値を持つウェイのＬＲＵ状態値に１を加算する。
３．ヒットしたウェイの更新前のＬＲＵ状態値より大きなＬＲＵ状態値を持つウェイのＬＲＵ状態値は変更しない。
【０１１７】
図５において、ＬＲＵエントリにてキャッシュヒットした場合、ＬＲＵ状態判定部１０１は、ＬＲＵカウンタ４００にカウントアップ信号を送る。同様に、ＭＲＵエントリにてキャッシュヒットした場合、ＬＲＵ状態判定部１０１は、ＭＲＵカウンタ４０１にカウントアップ信号を送る。
【０１１８】
図６は、ＬＲＵ状態値情報の更新と、ＬＲＵカウンタ４００およびＭＲＵカウンタ４０１の動作の様子を示す図である。図６におけるＬＲＵ状態値情報は、一例としてセット０のＬＲＵ状態値情報を示している。
【０１１９】
初期状態において、ウェイ３０のＬＲＵ状態値を０とし、ウェイ３１のＬＲＵ状態値を１とし、ウェイ３２のＬＲＵ状態値を２とし、ウェイ３３のＬＲＵ状態値を３とする。また、ＬＲＵカウンタ４００およびＭＲＵカウンタ４０１には初期値として０が格納されているとする。
【０１２０】
次に、１回目のキャッシュヒットとして、セット０上のウェイ３０のエントリに格納されているデータがキャッシュヒットしたとする。その場合、ＬＲＵ状態値が０と最も小さいウェイでのキャッシュヒットなので、ＬＲＵ状態値情報は変更されず、ＭＲＵカウンタ４０１が０から１へカウントアップされる。
【０１２１】
次に、２回目のキャッシュヒットとして、セット０上のウェイ３０のエントリに格納されているデータがキャッシュヒットしたとする。その場合、また、ＬＲＵ状態値が０のウェイでのキャッシュヒットなので、ＬＲＵ状態値情報は変更されず、ＭＲＵカウンタ４０１が１から２へカウントアップされる。
【０１２２】
次に、３回目のキャッシュヒットとして、セット０上のウェイ３３のエントリに格納されているデータがキャッシュヒットしたとする。ウェイ３３のＬＲＵ状態値が３なので、今度はＬＲＵ状態値情報が更新される。ウェイ３３のＬＲＵ状態値が０となり、ウェイ３０のＬＲＵ状態値が１となり、ウェイ３１のＬＲＵ状態値が２となり、ウェイ３２のＬＲＵ状態値が３となる。更新されたＬＲＵ状態値情報はＬＲＵ状態値保持部１００に書き戻される。また、ウェイ３３の更新前のＬＲＵ状態値が３と最も大きな値であったので、ＬＲＵエントリでのキャッシュヒットとしてＬＲＵカウンタ４００が０から１へカウントアップされる。
【０１２３】
次に、４回目のキャッシュヒットとして、セット０上のウェイ３１のエントリに格納されているデータがキャッシュヒットしたとする。ウェイ３１のＬＲＵ状態値が２なので、ＬＲＵ状態値情報は更新される。ウェイ３１のＬＲＵ状態値が０となり、ウェイ３３のＬＲＵ状態値が１となり、ウェイ３０のＬＲＵ状態値が２となり、ウェイ３２のＬＲＵ状態値は３のままである。更新されたＬＲＵ状態値情報はＬＲＵ状態値保持部１００に書き戻される。また、ウェイ３３のエントリの更新前のＬＲＵ状態値が２であったので、ＬＲＵカウンタ４００およびＭＲＵカウンタ４０１は共にカウントアップされない。
【０１２４】
以後、同様に、キャッシュヒットしたデータがＭＲＵエントリに存在したのか、またはＬＲＵエントリに存在したのかを判定し、ＬＲＵカウンタ４００およびＭＲＵカウンタ４０１をカウントアップしていく。
【０１２５】
図５において、ＭＲＵカウンタ４０１の値が判定タイミング生成用カウンタ値保持部４１２に格納されている値（所定値）に達すると、ウェイ数増減判定器１０２は、ＬＲＵカウンタ４００の値を用いて、実行中のプログラムのアクセスパターンを評価し、評価結果に従って動作ウェイ数の増減を判定する。
【０１２６】
その際、比較器４１０は、ＬＲＵカウンタ４００の値と閾値Ｔ１を比較し、ＬＲＵカウンタ４００の値が閾値Ｔ１より小さければ、ウェイ数削減情報１００１を生成する。比較器４１１は、ＬＲＵカウンタ４００の値と閾値Ｔ２を比較し、ＬＲＵカウンタ４００の値が閾値Ｔ２より大きければ、ウェイ数増加情報１０００を生成する。
【０１２７】
比較器４１３の比較結果の出力は、比較器４１０および比較器４１１の出力をガードするように、ＡＮＤ部４１４、４１５に接続されている。このため、ＭＲＵカウンタ４０１の値が判定タイミング生成用カウンタ値保持部４１２に格納されている値（所定値）に達したときのみ、ウェイ数増加情報１０００またはウェイ数削減情報１００１がウェイ数増減判定器１０２から送られる。つまり、ウェイ数増減判定器１０２は、ＭＲＵカウンタ４０１が所定値に到達したタイミングでウェイ数増減情報をウェイ数制御部４に送ることとなる。
【０１２８】
また、比較器４１３の比較において一致が生じたときＬＲＵカウンタ４００およびＭＲＵカウンタ４０１がリセットされるように、比較器４１３からの比較結果はＬＲＵカウンタ４００およびＭＲＵカウンタ４０１に与えられている。したがって、ＭＲＵカウンタ４０１の値が判定タイミング生成用カウンタ値保持部４１２に格納されている値（所定値）に達すると、ＬＲＵカウンタ４００およびＭＲＵカウンタ４０１はリセットされる。
【０１２９】
図１において、ウェイ数制御部４は、ウェイ数増減判定部２からのウェイ数増減情報に従って動作ウェイ数を変化させる。動作ウェイ数が削減されれば消費電力が低減され、動作ウェイ数が増加されればキャッシュ性能が向上する。動作ウェイ数が変化すると、ＬＲＵ状態値保持部１００に格納されているＬＲＵ状態値情報は、新たな動作ウェイ数に合わせて初期化される。
【０１３０】
動作を停止させるウェイを決定する方法として、例えば、図４に示したようにウェイ番号の大きなウェイから先に停止させることとしてもよい。その場合、動作ウェイ数を変更した直後の初期値は、ウェイ番号の小さなウェイから順に付与することとしてもよい。
【０１３１】
図７は、第１の実施形態におけるウェイ数制御部４の動作を説明するための図である。ウェイ数制御部４は、ウェイ数増減判定部２からのウェイ数増加情報１０００またはウェイ数削減情報１００１に従って動作ウェイ数を増減する。
【０１３２】
そして、図７の上段に示したように、動作ウェイ数が４のとき、ウェイ数制御部４は、ウェイ３２停止情報１００５をウェイ３２に送らず、また、ウェイ３３停止情報１００６もウェイ３３に送らない。
【０１３３】
図７の中段に示したように、動作ウェイ数が３のとき、ウェイ数制御部４は、ウェイ３３停止情報１００６をウェイ３３に送り、ウェイ３３への電源およびクロックなどの供給を停止させる。
【０１３４】
図７の下段に示したように、動作ウェイ数が２のとき、ウェイ数制御部４は、ウェイ３２停止情報１００５をウェイ３２に、ウェイ３３停止情報１００６をウェイ３３に送り、ウェイ３２、３３への電源およびクロックなどの供給を停止させる。
【０１３５】
また、ウェイ数制御部４は、ウェイ構成情報１００４をウェイ数増減判定部２、キャッシュ制御部１０、およびヒット判定部２４に送る。キャッシュ制御部１０は、ウェイ構成情報１００４から、各ウェイが動作中か停止しているか判別し、停止しているウェイへは命令を送らない。ヒット判定部２４は、各ウェイが動作中か停止しているかを判別し、停止しているウェイからの比較結果を無効とする。
【０１３６】
ウェイ数が削減されるとき、停止するウェイは、内部に格納しているデータをフラッシュする。ライトバック方式のキャッシュメモリであれば、キャッシュの内容は主記憶メモリに書き戻される。
【０１３７】
以上説明したように、本実施形態のキャッシュ機構１によれば、ヒット判定部２４でのキャッシュヒットの判定結果を用いて、ウェイ数増減判定部２が、実行中のプログラムのアクセスパターンを解析し、そのアクセスパターンに適した動作ウェイ数を決定し、ウェイ数制御部４がその決定に従って動作ウェイ数を制御するので、プログラムおよびその動作の特性に応じて、必要な動作ウェイ数を正確に求めて不要なウェイの動作を停止し、適切な動作ウェイ数で動作することにより、キャッシュ性能の低下を抑止しつつ消費電力を最大限削減することができる。
【０１３８】
なお、ここでは、動作ウェイ数を安定させるために、動作ウェイ数の増加の判定と削減の判定の間に、維持という判定を設けるために、閾値Ｔ１と閾値Ｔ２の間にＴ１＜Ｔ２という関係を持たせた。しかし、増加、削減の判定を行うための閾値Ｔ１、Ｔ２を一致させ、増加か削減のいずれかに判定することによりアクセスパターンの変化に対する動作ウェイ数の追従性を高めることが、動作ウェイ数の判定において適切であれば、Ｔ１＝Ｔ２としてもよい。その場合、図５における比較器４１０と比較器４１１は１つの比較器でよく、その比較器は、ＬＲＵカウンタ４００の値が閾値より小さければウェイ数減少情報１００１を送り、ＬＲＵカウンタ４００の値が閾値より大きければウェイ数増加情報１０００を送ることとすればよい。
【０１３９】
第２の実施形態について説明する。
【０１４０】
第１の実施形態では、ウェイ数増減判定器１０２は、ＭＲＵカウンタ４０１の値が所定値に達したときに、ウェイ数の増減判定を行うこととしたが、本発明はこれに限定されるものではない。第２の実施形態は、キャッシュヒットの回数が所定値に達したときにウェイ数の増減判定を行うものである。
【０１４１】
この場合、判定時点でのＭＲＵカウンタ４０１の値は一定しないので、ＬＲＵカウンタ４００の値を評価関数Ｄの代わりに用いることができない。そこで、元の評価関数Ｄを以下のように変形することとすればよい。
【０１４２】
上述したように、ウェイ数増減判定器１０２は、評価関数Ｄと閾値Ｔ１の大小関係を比較する必要がある。そのために式（３）が成立するか否かを判定すればよい。
【０１４３】
【数３】
2005316842.tif 000005
【０１４４】
しかし、これには演算コストの高い除算が含まれているので式（３）をそのまま用いず、両辺にＭＲＵカウンタの値を乗算した式（４）を用いて判定すればよい。
【０１４５】
【数４】
2005316842.tif 000006
【０１４６】
これにより、除算を行わず乗算と大小比較だけで評価関数Ｄと閾値Ｔ１の大小関係を求めることができる。また、閾値Ｔ２についても同様に、式（５）により、評価関数Ｄと閾値Ｔ２の大小関係を求めることができる。
【０１４７】
【数５】
2005316842.tif 000007
【０１４８】
式（４）および式（５）を用いたウェイ数の増減の判定を行うために、第２の実施形態のウェイ数増減判定器は第１の実施形態のものとは異なる構成である。
【０１４９】
図８は、第２の実施形態のウェイ数増減判定部の構成を示すブロック図である。図８を参照すると、第２の実施形態のウェイ数増減判定部２は、第１の実施形態と同様に、ＬＲＵ状態値保持部１００、ＬＲＵ状態判定部１０１、およびウェイ数増減判定器１０２を有している。図８において、ＬＲＵ状態値保持部１００、ＬＲＵ状態判定部１０１は図３のものと同様であるが、ウェイ数増減判定器１０２にヒット情報１１００が与えられている点が異なる。
【０１５０】
図９は、第２の実施形態のウェイ数増減判定器の構成を示すブロック図である。図９を参照すると、ウェイ数増減判定器１０２は、ＬＲＵカウンタ４００、ＭＲＵカウンタ４０１、閾値Ｔ１保持部４０２、閾値Ｔ２保持部４０３、比較器４１０、４１１、４１３、判定タイミング生成用カウンタ値保持部４１２、ヒット数カウンタ４２０、閾値Ｔ１乗算器４２１、閾値Ｔ２乗算器４２２、およびＡＮＤ部４１４、４１５を有しており、これら各部の動作によって上述したような判定を可能としている。
【０１５１】
ＬＲＵカウンタ４００は、アクセスされたエントリがＬＲＵエントリであった回数をカウントする。ＭＲＵカウンタ４０１は、アクセスされたエントリがＭＲＵエントリであった回数をカウントする。
【０１５２】
閾値Ｔ１保持部４０２は、動作ウェイ数の増減を判定するための閾値Ｔ１を格納している。閾値Ｔ２保持部４０３は、動作ウェイ数の増減を判定するための閾値Ｔ２を格納している。閾値Ｔ１、Ｔ２は、Ｔ１＜Ｔ２の関係にあり、実行中のプログラム、動作ウェイ数に応じて適時に変更してもよい。
【０１５３】
閾値Ｔ１乗算器４２１は、式（４）の判定に用いる（閾値Ｔ１×ＭＲＵカウンタの値）を求める乗算器である。閾値Ｔ２乗算器４２２は、式（５）の判定に用いる（閾値Ｔ２×ＭＲＵカウンタの値）を求める乗算器である。
【０１５４】
比較器４１０は、ＬＲＵカウンタ４００と閾値Ｔ１乗算器４２１に接続されている。
【０１５５】
比較器４１０は、ＬＲＵカウンタ４００の値が（閾値Ｔ１×ＭＲＵカウンタの値）より小さければ、その旨の信号をＡＮＤ部４１４に送る。これはＭＲＵエントリにアクセスが集中するアクセスパターンに相当する。
【０１５６】
比較器４１１は、ＬＲＵカウンタ４００と閾値Ｔ２乗算器４２２に接続されている。
【０１５７】
比較器４１１は、ＬＲＵカウンタ４００の値が（閾値Ｔ２×ＭＲＵカウンタの値）より大きければ、その旨の信号をＡＮＤ部４１５に送る。これは、ＭＲＵエントリからＬＲＵエントリまで比較的均等にアクセスするアクセスパターンに相当する。
【０１５８】
ヒット数カウンタ４２０は、ヒット情報１１００を元に、キャッシュヒットした回数をカウントし、その値を比較器４１３に与える。判定タイミング生成用カウンタ値保持部４１２は、動作ウェイ数の増減を判定するタイミングを定めるパラメータとしての値を保持する。
【０１５９】
比較器４１３は、ヒット数カウンタ４２０の値と判定タイミング生成用カウンタ値保持部４１２に設定されている値が一致すると、その旨の一致信号をＡＮＤ部４１４、４１５、ＬＲＵカウンタ４００、ＭＲＵカウンタ４０１、およびヒット数カウンタ４２０に送る。
【０１６０】
ＡＮＤ部４１４は、比較器４１３からの一致信号のタイミングで比較器４１０からの信号を、ウェイ数削減情報１００１として、ウェイ数制御部４に送る。ＡＮＤ部４１５は、比較器４１３からの一致信号のタイミングで比較器４１１からの信号を、ウェイ数増加情報１０００として、ウェイ数制御部４に送る。また、ＬＲＵカウンタ４００、ＭＲＵカウンタ４０１、およびヒット数カウンタ４２０は、比較器４１３からの一致信号によりカウンタ値をリセットする。
【０１６１】
以上説明したように、本実施形態のキャッシュ機構１によれば、ヒット判定部２４でのキャッシュヒットの判定結果を用いて、ウェイ数増減判定部２は、実行中のプログラムにおけるヒット数が所定値に達したときアクセスパターンを求め、そのアクセスパターンに適した動作ウェイ数を決定し、ウェイ数制御部４がその決定に従って動作ウェイ数を制御するので、キャッシュのヒット数が所定値に達したときの評価関数Ｄを用いることでアクセスパターンが一定の精度で評価関数Ｄに反映される期間が確保され、プログラムの特性に応じて適切な動作ウェイ数が選択され、キャッシュ性能の低下を抑止しつつ消費電力を最大限削減することができる。
【０１６２】
判定タイミングでのＭＲＵカウンタの値を閾値Ｔ１、Ｔ２に乗算した値を用い、それらと判定タイミングでのＬＲＵカウンタ４００の値を比較するので、第１の実施形態のように判定タイミングでＭＲＵカウンタ４０１の値が一定でない場合でも、演算コストの高い除算を行うことなく、低コストで構成できる。
【０１６３】
第３の実施形態について説明する。
【０１６４】
第３の実施形態では、キャッシュアクセスの回数が所定値に達したときにウェイ数の増減判定を行うものである。この場合も、第２の実施形態と同様に、判定時点でのＭＲＵカウンタ４０１の値は一定しないので、式（４）（５）を用いて動作ウェイ数の増減を判定する。
【０１６５】
図１０は、第３の実施形態のキャッシュ機構を示すブロック図である。図１０を参照すると、第３の実施形態のキャッシュ機構１は、キャッシュ制御部１０からウェイ数増減判定部２に送られるキャッシュアクセス情報１２００が追加されている点で図１のものと異なる。キャッシュアクセス情報１２００は、キャッシュへのアクセスが行われたことを示す情報であり、これにはキャッシュヒットおよびキャッシュミスの両方の場合が含まれる。
【０１６６】
キャッシュ制御部１０は、外部からの命令が与えられると、キャッシュへのアクセスと判断し、キャッシュアクセス情報１２００をウェイ数増減判定部２に送る。
【０１６７】
図１１は、第３の実施形態のウェイ数増減判定部の構成を示すブロック図である。図１１を参照すると、第３の実施形態のウェイ数増減判定部２は、第１の実施形態と同様に、ＬＲＵ状態値保持部１００、ＬＲＵ状態判定部１０１、およびウェイ数増減判定器１０２を有している。図１１において、ＬＲＵ状態値保持部１００、ＬＲＵ状態判定部１０１は図３のものと同様であるが、ウェイ数増減判定器１０２にキャッシュアクセス情報１２００が与えられている点が異なる。
【０１６８】
図１２は、第３の実施形態のウェイ数増減判定器の構成を示すブロック図である。図１２を参照すると、ウェイ数増減判定器１０２は、ＬＲＵカウンタ４００、ＭＲＵカウンタ４０１、閾値Ｔ１保持部４０２、閾値Ｔ２保持部４０３、比較器４１０、４１１、４１３、判定タイミング生成用カウンタ値保持部４１２、キャッシュアクセス回数カウンタ４３０、閾値Ｔ１乗算器４２１、閾値Ｔ２乗算器４２２、およびＡＮＤ部４１４、４１５を有している。第３の実施形態のウェイ数増減判定器１０２は、ヒット数カウンタ４２０の代わりにキャッシュアクセス回数カウンタ４３０を有する点だけが第２の実施形態と異なる。
【０１６９】
キャッシュアクセス回数カウンタ４３０は、キャッシュアクセス情報１２００を元に、キャッシュへのアクセス回数をカウントし、値を比較器４１３に与える。これにより、キャッシュアクセス回数カウンタ４３０の値が、判定タイミング生成用カウンタ値保持部４１２に格納されている値（所定値）に達したときに、動作ウェイ数の増減が判定される。
【０１７０】
以上説明したように、本実施形態のキャッシュ機構１によれば、ヒット判定部２４でのキャッシュヒットの判定結果を用いて、ウェイ数増減判定部２は、実行中のプログラムにおけるキャッシュアクセス回数が所定値に達したときアクセスパターンを求め、そのアクセスパターンに適した動作ウェイ数を決定し、ウェイ数制御部４がその決定に従って動作ウェイ数を制御するので、キャッシュアクセス回数が所定値に達したときの評価関数Ｄを用いることでアクセスパターンが一定の精度で評価値に反映される期間が確保され、プログラムの特性に応じて適切な動作ウェイ数が選択され、キャッシュ性能の低下を抑止しつつ消費電力を最大限削減することができる。
【０１７１】
第４の実施形態について説明する。
【０１７２】
第１〜３の実施形態では、ウェイ数増減判定部２からのウェイ数増減情報をウェイ数制御部４がそのまま用いて動作ウェイ数を増減することとしたが、本発明はそれに限定されるものではない。第４の実施形態は、ウェイ数増減判定部２とウェイ数制御部４の間に、動作ウェイ数の増減判定を修正する必要ウェイ数予測部３を備えたものである。
【０１７３】
図１３は、第４の実施形態のキャッシュ機構を示すブロック図である。図１３に示す第４の実施形態のキャッシュ機構は、ウェイ数増減判定部２とウェイ数制御部４の間に必要ウェイ数予測部３を備えた点だけが図１のものと異なり、他の点は同じである。
【０１７４】
プログラムによっては、一時的な振る舞いによって本来そのプログラムが持つアクセスパターンと異なる動作をすることがある。その一時的な動作変化に応じてキャッシュ容量を増減させることが必ずしも適切でない場合があり、すぐにキャッシュ容量が不足したり、過剰となったりすることがある。
【０１７５】
そのため、アクセスパターンの変化に対して、それが一時的な動作変化か、定常的なアクセスパターンの変化かを、ある期間で見極めた上で、キャッシュ容量を制御することが有効な場合がある。また、その見極めに適切な期間が、キャッシュ容量を増加させる方向の制御と、削減する方向の制御とで異なることもある。これらの見極めの期間はプログラムの特性によって異なることもあるし、またキャッシュ機構を適用する装置の設計ポリシーによって異なることもある。
【０１７６】
例えば、消費電量削減効果よりもキャッシュ性能の向上を優先し、プログラムの一時的な振る舞いに対してキャッシュ性能を高く維持しようとする場合、増加方向は比較的短期間で判定し、減少方向は比較的長い期間で判定することが好ましい。逆に、キャッシュ性能の向上よりも消費電力削減効果を優先する場合、減少方向は比較的短期間で判定し、増加方向は比較的長い期間で判定することが好ましい。
【０１７７】
必要ウェイ数予測部３は、カウントアップとカウントダウンが非対称なカウンタを用いて状態を定め、ウェイ数増減判定部２からのウェイ数増減情報に従って状態遷移し、遷移した状態に応じて動作ウェイ数の増減を判断する。
【０１７８】
必要ウェイ数予測部３の非対称カウンタが取りうるのは、「ウェイ数増加」の状態が１つと、「ウェイ数減少」の状態が１つと、「ウェイ数維持」の状態が１つ以上である。「ウェイ数増加」と「ウェイ数削減」の間に１つ以上の「ウェイ数維持」の状態が置かれる。そして、必要ウェイ数予測部３は、ウェイ数増減情報を受けると、所定の規則に従って各状態間を遷移する。状態遷移規則は、増加方向の遷移と、削減方向の遷移とがプログラムの特性、またはキャッシュ機構を適用する装置の設計ポリシーなどによって最適に定められ、一般的には非対称である。
【０１７９】
状態遷移後の状態が「ウェイ数増加」であれば、必要ウェイ数予測部３は、必要ウェイ数増加情報１００２をウェイ数制御部４に送る。また、状態遷移後の状態が「ウェイ数削減」であれば、必要ウェイ数予測部３は、必要ウェイ数削減情報１００３をウェイ数制御部４に送る。状態遷移後の状態が「ウェイ数維持」であれば、必要ウェイ数予測部３は、必要ウェイ数増加情報１００２および必要ウェイ数削減情報１００３のいずれも送らない。
【０１８０】
ウェイ数制御部４は、必要ウェイ数予測部３からの必要ウェイ数増加情報１００２および必要ウェイ数減少情報１００３に従って動作ウェイ数を制御する。
【０１８１】
必要ウェイ数予測部３は、ウェイ数増減判定部２からのウェイ数増減情報をそのまま動作ウェイ数の制御に用いるのではなく、動作ウェイ数の増減を決めるための複数の状態を持ち、ウェイ数増減判定部２からのウェイ数増減情報を状態遷移に用いることで、ウェイ数増減判定部２からのウェイ数増減情報の指示が、一時的なものか否か見極めた上で動作ウェイ数を制御するので、プログラムの一時的な振る舞いによるウェイ数の不要な増減を抑制し、キャッシュ性能と消費電力のバランスを良好に維持することができる。
【０１８２】
ここでは、一例として、必要ウェイ数予測部３は、２ビットで構成された非対称カウンタを用いることとする。図１４は、第４の実施形態の必要ウェイ数予測部の動作を示す状態遷移図である。図１４を参照すると、必要ウェイ数予測部３は、２ビットのカウンタで示される４つの状態を取りうる。各状態は、「ウェイ数増加」、「ウェイ数維持Ａ」、「ウェイ数維持Ｂ」、「ウェイ数削減」の４つである。
【０１８３】
「ウェイ数増加」の状態は、実行中のプログラムでは、現在より多くのウェイ数を動作させるべきであることを示す。状態遷移後の状態が「ウェイ数増加」であれば、必要ウェイ数予測部３は、必要ウェイ数増加情報１００２をウェイ数制御部４に送る。
【０１８４】
「ウェイ数削減」の状態は、実行中のプログラムが、現在のウェイ数を必要としていないことを示す。状態遷移後の状態が「ウェイ数削減」であれば、必要ウェイ数予測部３は、必要ウェイ数削減情報１００３をウェイ数制御部４に送る。
【０１８５】
「ウェイ数維持Ａ」または「ウェイ数維持Ｂ」の状態は、実行中のプログラムにおいて、動作させるウェイ数を変更する必要がない、あるいは動作ウェイ数を増減させるべきか否かの評価中であることを示す。状態遷移後の状態が「ウェイ数維持Ａ」または「ウェイ数維持Ｂ」であれば、必要ウェイ数予測部３は、必要ウェイ数増加情報１００２および必要ウェイ数削減情報１００３のどちらも送らない。
【０１８６】
必要ウェイ数予測部３は、ウェイ数増減判定部２からウェイ数増減情報を受けると、図１４に従って状態遷移を行う。必要ウェイ数予測部３は、ウェイ数増加情報１０００を受けると「Ｉ」の矢印に従って遷移し、ウェイ数減少情報１００１を受けると「Ｄ」の矢印に従って遷移する。初期状態は「ウェイ数維持Ａ」である。
【０１８７】
図１４の状態遷移図によれば、「ウェイ数増加」の状態から「ウェイ数削減」の状態に遷移するには、必要ウェイ数予測部３は、ウェイ数削減情報１００１を３回連続で受信する必要がある。また、必要ウェイ数予測部３は、どの状態からでもウェイ数増加情報１０００を１回受信すれば、「ウェイ数増加」の状態に遷移する。
【０１８８】
図１５は、必要ウェイ数予測部の動作例を示す図である。
【０１８９】
図１５を参照して、第４の実施形態のキャッシュ機構１における必要ウェイ数予測部３の動作例について説明する。なお、ウェイ数増減判定部２がウェイ数増加情報１０００およびウェイ数削減情報１００１を生成するまでの動作は、第１の実施形態と同じである。
【０１９０】
初期状態では、必要ウェイ数予測部３のカウンタは「ウェイ数維持Ａ」の状態である。
【０１９１】
次に、必要ウェイ数予測部３は、１個目のウェイ数増減情報として、ウェイ数削減情報１００１を受けたとする。これにより非対称カウンタの状態が「ウェイ数維持Ａ」から「ウェイ数維持Ｂ」に遷移する。この状態では、必要ウェイ数予測部３は必要ウェイ数増加情報１００２および必要ウェイ数削減情報１００３のいずれも送らない。
【０１９２】
次に、必要ウェイ数予測部３は、２個目のウェイ数増減情報として、ウェイ数削減情報１００１を受けたとする。これにより非対称カウンタの状態が「ウェイ数維持Ｂ」から「ウェイ数削減」に遷移する。状態遷移後の状態が「ウェイ数削減」なので、必要ウェイ数予測部３は、必要ウェイ数削減情報１００３をウェイ数制御部４に送る。
【０１９３】
次に、必要ウェイ数予測部３は、３個目のウェイ数増減情報として、ウェイ数増加情報１０００を受けたとする。非対称カウンタの状態は、「ウェイ数削減」から「ウェイ数増加」に遷移する。状態遷移後の状態が「ウェイ数増加」なので、必要ウェイ数予測部３は、必要ウェイ数増加情報１００２をウェイ数制御部４に送る。
【０１９４】
次に、必要ウェイ数予測部３は、４個目のウェイ数増減情報として、ウェイ数増加情報１０００を受けたとする。非対称カウンタの状態は、「ウェイ数増加」から「ウェイ数増加」に遷移する。状態遷移後の状態が「ウェイ数増加」なので、必要ウェイ数予測部３は、必要ウェイ数増加情報１００２をウェイ数制御部４に送る。
【０１９５】
図１６は、第４の実施形態におけるウェイ数制御部４の動作を説明するための図である。ウェイ数制御部４は、必要ウェイ数予測部３からの必要ウェイ数増加情報１００２または必要ウェイ数削減情報１００３に従って動作ウェイ数を増減する。そして、図１６の上段に示したように、動作ウェイ数が４のとき、ウェイ数制御部４は、ウェイ３２停止情報１００５をウェイ３２に送らず、また、ウェイ３３停止情報１００６もウェイ３３に送らない。
【０１９６】
図１６の中段に示したように、動作ウェイ数が３のとき、ウェイ数制御部４は、ウェイ３３停止情報１００６をウェイ３３に送り、ウェイ３３への電源およびクロックなどの供給を停止させる。
【０１９７】
図１６の下段に示したように、動作ウェイ数が２のとき、ウェイ数制御部４は、ウェイ３２停止情報１００５をウェイ３２に、ウェイ３３停止情報１００６をウェイ３３に送り、ウェイ３２、３３への電源およびクロックなどの供給を停止させる。
【０１９８】
以上説明したように、本実施形態によれば、必要ウェイ数予測部３は、ウェイ数増減判定部２からのウェイ数増減情報をそのまま動作ウェイ数の制御に用いるのではなく、動作ウェイ数の増減を決めるための複数の状態を持ち、ウェイ数増減判定部２からのウェイ数増減情報を状態遷移に用いることで、ウェイ数増減判定部２からのウェイ数増減情報の指示が、一時的なものか否か見極めた上で動作ウェイ数を制御するので、プログラムの一時的な振る舞いによるウェイ数の不要な増減を抑制し、キャッシュ性能の向上と消費電力の低減を両立させることができる。
【０１９９】
また、非対称カウンタにより状態を遷移し、その状態に応じて動作ウェイ数を制御するので、動作ウェイ数の増加方向と削減方向の状態遷移の各々について適切な状態遷移規則を用いることができ、プログラムの特性や設計ポリシーに対して適切な状態遷移により、キャッシュ性能と消費電力のバランスを良好にとることができる。
【０２００】
なお、ここでは２ビットカウンタによって４つの状態を取りうる例を示したが、本発明はそれに限定されるものではない。図１７は、３ビットカウンタを用いた状態遷移図の一例を示す図である。図１７によれば、「ウェイ数維持Ａ〜Ｆ」まで６つの維持の状態があるので、図１４のものより一時的な振る舞いの影響を強く抑止し、削減方向に慎重な判断がなされる。
【０２０１】
また、ここでは全ての状態からウェイ数増加情報１０００を受信すると、「ウェイ数増加」の状態に遷移することとしたが、本発明はそれに限定されるものではない。増加方向の状態遷移においても、１つ以上の「ウェイ数維持」の状態を経由することとしてもよい。図１８は、図１７の状態遷移の変形例を示す図である。例えば、図１８に示すように、「ウェイ数維持Ｄ〜Ｆ」または「ウェイ数削減」の状態でウェイ数増加情報１０００を受けたとき、「ウェイ数維持Ｃ」の状態に遷移し、「ウェイ数維持Ａ〜Ｃ」または「ウェイ数増加」の状態でウェイ数増加情報１０００を受けたとき、「ウェイ数増加」の状態に遷移することとしてもよい。さらに、プログラムの特性や設計ポリシーに応じて任意の状態遷移規則を採用することができる。
【０２０２】
また、ここで示した例とは逆に、動作ウェイ数の増加方向に慎重な判断を行うような状態遷移規則を用いてもよい。
【０２０３】
また、非対称カウンタの取りうる状態は任意の自然数であってもよく、例えば５つの状態を取りうることとしてもよい。また、ここでは、一般的なものとして非対称カウンタによる状態遷移を例に示したが、その特殊な例として、適切であれば対称カウンタによる状態遷移を採用してもよい。図１９は、対称カウンタを用いた状態遷移図の一例を示す図である。増加方向と減少方向とで同じ慎重さで状態遷移することが適切であれば、図１９に示したように対称カウンタによる状態遷移を採用してもよい。
【０２０４】
また、ここでは、ウェイ数増減判定部２の判定結果に対して必要ウェイ数予測部３による修正を加える例を示したが、本発明はそれに限定されない。必要ウェイ数予測部３による修正は、ウェイ数増減の判定において、プログラムの一時的な振る舞いによる影響があるような判定結果に対して広く適用可能なものである。例えば、キャッシュミス率に基づいて動作ウェイ数の増減を判定した判定結果に対して、必要ウェイ数予測部３による修正を加えることも可能である。
【図面の簡単な説明】
【０２０５】
【図１】第１の実施形態のキャッシュ機構を示すブロック図である。
【図２】外部から与えられるアドレスの構成を示す図である。
【図３】第１の実施形態のウェイ数増減判定部の構成を示すブロック図である。
【図４】ＬＲＵ状態値情報の例を示す図である。
【図５】第１の実施形態のウェイ数増減判定器の構成を示すブロック図である。
【図６】ＬＲＵ状態値情報の更新と、ＭＲＵカウンタＬＲＵカウンタの動作の様子を示す図である。
【図７】第１の実施形態におけるウェイ数制御部の動作を説明するための図である。
【図８】第２の実施形態のウェイ数増減判定部の構成を示すブロック図である。
【図９】第２の実施形態のウェイ数増減判定器の構成を示すブロック図である。
【図１０】第３の実施形態のキャッシュ機構を示すブロック図である。
【図１１】第３の実施形態のウェイ数増減判定部の構成を示すブロック図である。
【図１２】第３の実施形態のウェイ数増減判定器の構成を示すブロック図である。
【図１３】第４の実施形態のキャッシュ機構を示すブロック図である。
【図１４】第４の実施形態の必要ウェイ数予測部の動作を示す状態遷移図である。
【図１５】必要ウェイ数予測部の動作例を示す図である。
【図１６】第４の実施形態におけるウェイ数制御部の動作を説明するための図である。
【図１７】３ビットカウンタを用いた状態遷移図の一例を示す図である。
【図１８】図１７の状態遷移の変形例を示す図である。
【図１９】対称カウンタを用いた状態遷移図の一例を示す図である。
【図２０】プログラムのアクセスパターンを示すグラフである。
【符号の説明】
【０２０６】
１    キャッシュ機構
１０    キャッシュ制御部
１１    アドレスデコーダ
１２    データマルチプレクサ
２    ウェイ数増減判定部
２０〜２３    アドレス比較器
２４    ヒット判定部
３    必要ウェイ数予測部
３０〜３３    ウェイ
４    ウェイ数制御部
４０、４１、４２、４３    タグメモリ
５０、５１、５２、５３    データメモリ
１００    ＬＲＵ状態値保持部
１０１    ＬＲＵ状態判定部
１０２    ウェイ数増減判定器
２００    ブロックオフセット
２０１    セットアドレス
２０２    タグアドレス
４００    ＬＲＵカウンタ
４０１    ＭＲＵカウンタ
４０２    閾値Ｔ１保持部
４０３    閾値Ｔ２保持部
４１０、４１１、４１３    比較器
４１２    判定タイミング生成用カウンタ値保持部
４１４、４１５    ＡＮＤ部
４２０    ヒット数カウンタ
４２１    閾値Ｔ１乗算器
４２２    閾値Ｔ２乗算器
４３０    キャッシュアクセス回数カウンタ
１０００    ウェイ数増加情報
１００１    ウェイ数削減情報
１００２    必要ウェイ数増加情報
１００３    必要ウェイ数削減情報
１００４    ウェイ構成情報
１００５    ウェイ３２停止情報
１００６    ウェイ３３停止情報
１１００    ヒット情報
１１０１    ヒットウェイ位置情報
１２００    キャッシュアクセス情報
【図１】
2005316842.tif 000008
【図２】
2005316842.tif 000009
【図３】
2005316842.tif 000010
【図４】
2005316842.tif 000011
【図５】
2005316842.tif 000012
【図６】
2005316842.tif 000013
【図７】
2005316842.tif 000014
【図８】
2005316842.tif 000015
【図９】
2005316842.tif 000016
【図１０】
2005316842.tif 000017
【図１１】
2005316842.tif 000018
【図１２】
2005316842.tif 000019
【図１３】
2005316842.tif 000020
【図１４】
2005316842.tif 000021
【図１５】
2005316842.tif 000022
【図１６】
2005316842.tif 000023
【図１７】
2005316842.tif 000024
【図１８】
2005316842.tif 000025
【図１９】
2005316842.tif 000026
【図２０】
2005316842.tif 000027