(57)【要約】【課題】本発明は、現在のアプリケーションの状態に対して適切なサイズにキャッシュ容量を制御可能なキャッシュ制御回路を提供することを目的とする。【解決手段】複数のウェイを含むセットアソシアティブ方式のキャッシュメモリを制御するキャッシュ制御回路は、キャッシュメモリの複数のウェイのうち有効データが占めている割合に応じた埋まり具合と、キャッシュメモリがアクセスされた頻度に応じた使用率と、キャッシュメモリへのアクセスのミスの割合に応じたミス率とを求める測定部と、埋まり具合と、使用率と、ミス率とに応じてキャッシュメモリの複数のウェイ毎の起動及び停止を制御する制御部を含むことを特徴とする。【選択図】  図１
2008234320.tif 000002
【特許請求の範囲】
【請求項１】
複数のウェイを含むキャッシュメモリを制御するキャッシュ制御回路であって、
該キャッシュメモリの該複数のウェイのうち有効データが占めているデータ占有割合と、該キャッシュメモリがアクセスされた頻度に応じた使用率と、該キャッシュメモリへのアクセスのミスの割合に応じたミス率とを求める測定部と、
該データ占有割合と、該使用率と、該ミス率とに応じて該キャッシュメモリの該複数のウェイ毎の起動及び停止を制御する制御部と
を含むことを特徴とするキャッシュ制御回路。
【請求項２】
該制御部は、該ミス率が所定の閾値以上で且つ該データ占有割合及び該使用率の何れかが所定の閾値以上であるときにウェイを起動するよう制御し、該ミス率が所定の閾値以下で且つ該データ占有割合及び該使用率の何れかが所定の閾値以下であるときにウェイを停止するよう制御することを特徴とする請求項１記載のキャッシュ制御回路。
【請求項３】
該測定部は、
該複数のウェイのうち有効データが占めている割合に応じた該データ占有割合をキャッシュライン毎に求め、過去所定回のキャッシュアクセスのうちで着目キャッシュラインがアクセスされた頻度に応じた該使用率をキャッシュライン毎に求めるキャッシュ状態測定部と、
該過去所定回のキャッシュアクセスのうちで、該データ占有割合が空き有を示すキャッシュラインへのキャッシュアクセスがミスした頻度の重みと、該データ占有割合が空き無を示すキャッシュラインへのキャッシュアクセスがミスした頻度の重みとを異ならせて、ミスの頻度として該ミス率を計算するミス率測定部と、
該キャッシュライン毎の該データ占有割合と該使用率との積を全てのキャッシュラインについて合計した総合使用率を求める使用率測定部と
を含み、
該制御部は、該ミス率と所定の閾値との比較結果及び該総合使用率と所定の閾値との比較結果とに応じて該キャッシュメモリの該複数のウェイ毎の起動及び停止を制御することを特徴とする請求項１記載のキャッシュ制御回路。
【請求項４】
該データ占有割合が空き有を示すキャッシュラインへのキャッシュアクセスがミスした頻度の重みは、該データ占有割合が空き無を示すキャッシュラインへのキャッシュアクセスがミスした頻度の重みよりも大きいことを特徴とする請求項３記載のキャッシュ制御回路。
【請求項５】
該所定の閾値を動的に制御する動的閾値制御部を含むことを特徴とする請求項２〜４のいずれか一つに記載のキャッシュ制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にメモリ制御回路に関し、詳しくはキャッシュメモリを制御するキャッシュ制御回路に関する。
【背景技術】
【０００２】
コンピュータシステムにおいては一般に、主記憶とは別に小容量で高速なキャッシュメモリが設けられる。主記憶に記憶される情報の一部をキャッシュにコピーしておき、この情報をアクセスする場合には主記憶からではなくキャッシュから読み出すことで、高速な情報の読み出しが可能となる。
【０００３】
通信の分野等で使われるプロセッサにおいては、通信方式の要求を満足する高い処理性能と低消費電力という、互いにトレードオフとなる条件が要求される。プロセッサの処理性能とキャッシュのヒット率とには密接な関係があり、ヒット率が高いほどプロセッサは本来の性能を十分に発揮することができる。ヒットとは、キャッシュに格納してある外部メモリへのアクセス履歴に今回のアクセスが当てはまる場合、即ち、アクセス対象のデータがキャッシュに格納されている場合のことである。逆に今回のアクセスがアクセス履歴に当てはまらない場合を、キャッシュのミスヒットと呼ぶ。この場合には新たに履歴を格納するが、新たな履歴を格納する容量がない場合には、履歴を上書き更新する必要がある。
【０００４】
一般に、アドレスの全ビットのうちで、所定数の下位ビットがキャッシュのインデックスとなり、それより上位に位置する残りのビットがキャッシュのタグ（履歴）となる。データをアクセスする場合には、アクセス先を示すアドレス中のインデックス部分を用いて、キャッシュ中の対応するインデックスのタグ（履歴）を読み出す。読み出したタグと、アドレス中のタグ部分のビットパターンが一致するか否かを判断する。一致しない場合にはキャッシュミスとなる。一致する場合には、キャッシュヒットとなり、当該インデックスに対応するキャッシュデータ（１キャッシュライン分の所定ビット数のデータ）がアクセスされる。
【０００５】
各キャッシュラインに対して１つだけタグを設けたキャッシュの構成を、ダイレクトマッピング方式と呼ぶ。各キャッシュラインに対してＮ個のタグを設けたキャッシュの構成をＮウェイセットアソシアティブと呼ぶ。Ｎウェイのキャッシュでは、１つのキャッシュラインに対して、Ｎ個のデータを格納することができる。
【０００６】
キャッシュサイズが大きければ大きいほどヒット率は増加する。しかしキャッシュはコアの近くで高速に動作するので、キャッシュサイズを大きくすると消費電力が大きくなってしまうという問題点がある。プロセッサ全体の消費電力に対するキャッシュの消費電力の比率は高いことが知られている。
【０００７】
一般にアプリケーションの状態によって、必要なキャッシュの容量は異なる。そこで、キャッシュの起動停止をウェイ単位で制御できる機構を設け、駆動ウェイ数を変化させてキャッシュ容量及び消費電力を制御する技術がある（特許文献１）。この技術では、キャッシュのミスヒット率を常に測定しておき、ミスヒット率が高くなったらウェイを起動させ、低くなったらウェイを順次停止させる。これにより、動的にキャッシュサイズを必要最小限にすることで、性能の劣化を防ぎつつ低消費電力化をはかっている。
【０００８】
しかし、測定項目がミスヒット率だけでは、以下に説明するように問題がある。例えば現在のキャッシュのサイズ（現在の駆動ウェイ数）が現在のアプリケーションの状態に対して最適でヒット率が高い場合、測定されるミスヒット率が低い状態が維持されるので、ウェイを停止するのが適切と判断されウェイが１つ停止されてしまう。しかし１つウェイが停止されると現在のキャッシュのサイズ（現在の駆動ウェイ数）が十分ではなくなり、測定されるミスヒット率が高い状態となる。その結果、ウェイを起動するのが適切と判断されウェイが１つ起動される。このようにウェイの停止・起動が繰り返し実行されることになり、性能が低下してしまう。この現象は、ミスヒット率のみで現在のウェイ数の是非を判断し、キャッシュがどの程度使われているかの情報（埋まり具合や使用率）を無視したためにおこると考えられる。
【特許文献１】特開平９−５０４０１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
以上を鑑みて、本発明は、現在のアプリケーションの状態に対して適切なサイズにキャッシュ容量を制御可能なキャッシュ制御回路を提供することを目的とする。
【課題を解決するための手段】
【００１０】
複数のウェイを含むセットアソシアティブ方式のキャッシュメモリを制御するキャッシュ制御回路は、該キャッシュメモリの該複数のウェイのうち有効データが占めている割合に応じたデータ占有割合と、該キャッシュメモリがアクセスされた頻度に応じた使用率と、該キャッシュメモリへのアクセスのミスの割合に応じたミス率とを求める測定部と、該データ占有割合と、該使用率と、該ミス率とに応じて該キャッシュメモリの該複数のウェイ毎の起動及び停止を制御する制御部を含むことを特徴とする。
【発明の効果】
【００１１】
本発明の少なくとも１つの実施例によれば、ミス率だけではなく、複数のウェイのうち有効データが占めている割合に応じたデータ占有割合とキャッシュメモリがアクセスされた頻度に応じた使用率とを考慮することにより、現在のアプリケーションの状態に即したウェイ毎の起動制御及び停止制御を行うことが可能となる。これにより、現在のアプリケーションの状態に対して適切なサイズにキャッシュ容量を制御することができる。
【発明を実施するための最良の形態】
【００１２】
以下に、本発明の実施例を、添付の図面を用いて詳細に説明する。
【００１３】
図１は、本発明によるキャッシュ装置の構成の一例を示すブロック図である。
【００１４】
図１のキャッシュ装置は、タグ格納部１１、データレジスタ部１２、判定ユニット１３、コントローラ１４、アドレス変換部１５、及びセレクタ１６を含む。例えば、論理アドレスが３２ビット長であるとすると、アドレスの最下位４ビットがアドレスオフセットとなり、それより上位に位置する所定数のビットがキャッシュのインデックスとなり、更にそれより上位に位置する残りのビットがキャッシュのタグとなる。
【００１５】
データをアクセスする場合には、アクセス先を示すアドレス中のインデックス部分（論理アドレスの第７ビット（６）から第１３ビット（１２）の７ビット）を用いて、タグ格納部１１の対応するインデックスのタグを読み出す。このとき、タグ格納部１１の当該インデックスの有効ビットＶが有効値１であるときに限り、タグを有効データとして読み出すようにしてよい。タグの読出しと並行して、アクセス先を示すアドレスの上位ビット（論理アドレス［３１：１３］：論理アドレスの第１４ビット（１３）から第３２ビット（３１））を、アドレス変換部１５により物理アドレス［３１：１３］に変換する。
【００１６】
このようにしてタグ格納部１１から読み出したタグとアドレス変換部１５から出力される物理アドレス［３１：１３］とを、判定ユニット１３の比較器１３ａにより比較し、ビットパターンが一致するか否かを判断する。比較動作は４ウェイの４つのタグに対して実行され、そのうちの１つについて比較結果が一致を示すと、対応する判定ユニット１３の出力がアサートされる。アクセスがヒットの場合には判定ユニット１３の何れかの出力がアサートされ、アクセスがミスの場合には判定ユニット１３の何れの出力もアサートされない。
【００１７】
アクセス先の論理アドレスに応じてデータレジスタ部１２から読み出された４つのウェイのデータのうち、判定ユニット１３のアサート出力に対応するウェイのデータがセレクタ１６に供給される。セレクタ１６は、アクセス先の論理アドレス中のオフセット部分が示すワードを選択し、キャッシュからの読み出しデータとする。
【００１８】
コントローラ１４は、キャッシュ管理に関わる種々の制御動作を実行する。例えば、有効ビットＶの設定をしたり、タグの設定をしたり、有効ビットをチェックすることで利用可能なキャッシュラインを検索したり、例えばＬＲＵ（least recently used）アルゴリズム等に基づいて置換対象となるキャッシュラインを選択したり、データレジスタ部１２へのデータ書き込み動作を制御したりする。またコントローラ１４は、本発明によるキャッシュの起動停止制御を実行する。図１に示されるコントローラ１４のブロック構成は、このキャッシュの起動停止制御に関する部分に対応する。
【００１９】
コントローラ１４は、パワー制御部２１、動的閾値制御部２２、ウェイ数制御部２３、比較部２４、ミス率測定部２５、使用率測定部２６、キャッシュ状態測定部２７、及び設定レジスタ２８を含む。キャッシュ状態測定部２７では以下の２つの状態を随時監視し、使用率表として保持する。
【００２０】
監視対象の状態の一つめは、キャッシュライン毎の埋まり具合である。例えばキャッシュのウェイが３つ起動しており、あるラインにおいて、これら３つのウェイ全てに有効なデータが入っている場合、このラインの埋まり具合は１であり、これら３つのウェイのうちで有効なデータが入っていないウェイが１つでもある場合、このラインの埋まり具合は０である。このように、ライン毎に全ての起動中のウェイで有効なデータがはいっているときそのラインの埋まり具合を１とし、１つでも有効なデータがないウェイがあるときそのラインの埋まり具合を０と定義する。図２に示すように、使用率表３１には起動中のウェイが示されており、このうち有効データの入っているウェイには１がフラグとして記録されている。起動中のウェイのフラグのＡＮＤをとることで、埋まり具合のデータ１／０が求められる。
【００２１】
監視対象の状態の一つめは、キャッシュライン毎の使用率である。ここで使用率は以下のようにして求める。キャッシュアクセス毎に、アクセスされたキャッシュラインの番号（ラインナンバー）を、図２に示すＦＩＦＯ３２に格納する。ＦＩＦＯ３２に新規格納されたラインナンバーのラインの使用率を、使用率表３１において１増加させる。またＦＩＦＯ３２から出力されるラインナンバーのラインの使用率を、使用率表３１において１減少させる。ＦＩＦＯ３２の長さがＮ＋１であり、過去Ｎ＋１回のキャッシュアクセスのうちｍ回がラインｋに対するアクセスであったとすると、使用率表３１におけるラインｋの使用率はｍとなる。
【００２２】
ミス率測定部２５では、キャッシュアクセス毎にヒットならば０でありミスならば１である数値を生成し、アクセスされたラインの埋まり具合が１ならば予め設定された１より大きい係数Ｃをこの数値に掛けて、その結果をＦＩＦＯ３２に格納する（図２参照）。このＦＩＦＯ３２の格納データの合計値を、ウェイ起動の判断基準のための測定値（ミス率）としてミス率測定部２５から出力する。この出力測定値であるミス率は、過去の所定回のアクセスのうちでミスが多いほど大きくなり、またミスの場合のアクセスされたラインに空きがないほど大きくなる。この出力測定値を、ウェイ起動の判断基準として利用する。係数Ｃとの積を求めることにより、起動検出が従来よりも係数設定値倍早くなる。
【００２３】
使用率測定部２６は、キャッシュの埋まり具合と使用頻度とから、ウェイを停止するのが適切か否かを判定するための測定値を計算する。図３に示すようにキャッシュの埋まり具合が歯抜けの状態になっている場合、ウェイを停止して使用箇所をつめても、ヒット率にさほど影響を与えることなく電力削減効果を得ることができる。例えば埋まり具合が１（即ち空きがない状態）であるライン０については、使用率が比較的小さいので、ウェイを減らしてしまっても影響は少ないと考えられる。具体的には、ｉをラインナンバーとしてｉについての和である
Σ｛埋まり具合ｉ×使用率ｉ｝                                        （式１）
の値が小さい場合には、ウェイを減らすことが妥当であると考えられる。使用率測定部２６は、上記のようにして求めた値を総合使用率として出力する
比較部２４は、ミス率測定部２５からのミス率と使用率測定部２６からの総合使用率とをそれぞれの閾値と比較する。これら閾値は、予めシミュレーションなどで決めた値であり、例えばレジスタ設定等により可変に設定できる値である。比較部２４は、ミス率が閾値を超えたら起動の指示をウェイ数制御部２３へ出す。ミス率が閾値を超えていない状態で総合使用率が閾値以下になった場合、比較部２４は停止の指示をウェイ数制御部２３へ出す。どちらの条件も満たしていない場合、比較部２４は起動及び停止の何れの指示も出さない。
【００２４】
図４は、ウェイ数制御部２３の構成の一例を示す図である。
【００２５】
ウェイ数制御部２３は、比較部２４からの起動／停止指示と現在のウェイの起動状況とを基にしてウェイ数を制御する。内部にウェイ使用数測定部３５を持ち、所定のアクセス回数における各ウェイの使用状況を表として保持している。また、ウェイの起動状況をウェイ起動状態表３６として保持する機構をもつ。起動判定は、比較部２４から起動指示があり、かつ停止中のウェイがあり、かつタイマ待ち状態でない場合に制御判定部３９により行われる。制御判定部３９は、起動判定すると、起動状況を更新し、起動状況を起動指示と合わせてパワー制御部２１に送る。タイマ待ち状態とは、前回起動からウェイの電源が安定するまでの時間、及び、ウェイが起動した直後の一回目のアクセスがミスとなり履歴をキャッシュ内部に格納するために必要な時間（αレジスタ３７の格納値が示す時間）、における待ち状態のことである。この時間はシミュレーションなどで予め決めておき、レジスタ３７に可変に設定可能な構成とする。起動判定とともに起動し待ち時間を計時するタイマ３８を内部に持つ。
【００２６】
ウェイ数制御部２３による停止判定は、起動指示がなく、タイマ待ちではなく、停止指示があり、且つウェイが２つ以上起動している状態の場合に制御判定部３９により行われる。制御判定部３９は、停止の判定が行われたら、測定していたウェイ毎の使用率を基に最も使用率の低いウェイナンバーを停止させ、ウェイ起動状況を更新し、起動状況を停止指示と合わせてパワー制御部２１に送る。
【００２７】
パワー制御部２１では、ウェイ数制御部２３の指示に従って各ウェイの電源のオン／オフを制御する。
【００２８】
前記の閾値は、動的に可変制御してもよい。閾値の設定値は、予めシミュレーションなどにより測定されたある程度妥当な値であることを想定している。しかし適切なシミュレーションができない場合等には、適当な推量値に設定するしかなく、その結果、ウェイの起動停止動作が全く起きない設定になってしまう場合が考えられる。このような場合でも閾値をレジスタ設定により変更することができるが、人手によらずに自動で変更したい場合或いはより早く変えたい場合等の補助機能として、動的閾値制御部２２を設けてよい。
【００２９】
図５は、動的閾値制御部２２の構成の一例を示す図である。動的制御ＯＮとともにタイマ４０は起動する。カウンタ４１は起動指示数をカウントする。起動閾値の制御の場合、セレクタ４２は、タイマ終了時にカウンタ４１のカウント値が閾値を超えていたら、以前の値（ＦＦの値）に"＋１"した値を選択する。カウンタ４１のカウント値が０の場合には、以前の値（ＦＦの値）に"−１"した値を選択する。カウンタ４１のカウント値が閾値以上でなく且つ０でない場合には、以前の値（ＦＦの値）を選択する。タイマ４０およびカウンタ４１はタイマ終了時にリセットされる。停止閾値の制御動作も同じである。ただし、起動指示数ではなく停止指示数を監視し、閾値の"±"が起動閾値の場合と反対となる。
【００３０】
図６は、本発明によるキャッシュ起動停止制御の流れを示すフローチャートである。このフローチャートに示す処理はキャッシュアクセス毎に行われる。
【００３１】
測定値更新フェーズ（Ｓ１）では、各測定値の計算を行う。図１のキャッシュ状態測定部２７の動作に相当する。
【００３２】
起動条件測定フェーズ（Ｓ２）では、測定値を基にミス率の計算を行い、起動の有無を判定する。図１のミス率測定部２５及び比較部２４の起動関連部分の動作に相当する。
【００３３】
停止条件判定フェーズ（Ｓ３）では、測定値を基に総合使用率の計算を行い、その結果を閾値と比較して停止の判定をする。図1の使用率測定部２６及び比較部２４の停止関連部分の動作に相当する。
【００３４】
起動停止フェーズ（Ｓ４）では、ウェイの起動停止判定を行う。図１のウェイ数制御部２３の動作に相当する。
【００３５】
動的閾値制御フェーズ（Ｓ５）では、各閾値を動的に制御する。図１の動的閾値制御部２２の動作に相当する。ここ処理だけは、キャッシュアクセスサイクルではなく、タイマのカウントするクロックサイクルに同期して動作する。なお動的閾値制御フェーズを図６に示す手順の先頭において実行し、制御後の閾値を利用して、図６示す各ステップの処理を実行してもよい。また動的閾値制御機能は、レジスタ設定などによりオン・オフ制御できるようにしてよい。
【００３６】
パワー制御起動（Ｓ６）及びパワー制御停止（Ｓ７）では、それぞれウェイの起動及び最も使用頻度の低いウェイの停止の動作を行う。図１のパワー制御部２１の動作に相当する。その後、処理を終了し次のキャッシュアクセスを待つ。
【００３７】
図７は、図６のＳ１に対応する各測定値の計算の手順を示すフローチャートである。各ステップの順不同である。埋まり具合更新（Ｓ１）では、起動ウェイのライン毎に有効データがある場合には１、無い場合には０としてＡＮＤをとった結果を表として保持する。使用率更新（Ｓ２）では、保持していた最も古いアクセスラインナンバーに当たるラインの使用数を１減らし、今回アクセスしたラインナンバーの使用数を１増やす。ウェイ毎使用数更新（Ｓ３）では、最も古いアクセス情報が示すウェイの使用数を１減らし、今回アクセスしたウェイの使用数を"＋１"する。
【００３８】
図８は、図６のＳ２に対応する起動条件判定の手順を示すフローチャートである。
【００３９】
まず最も古いヒット又はミスの情報を削除する（Ｓ１）。今回のアクセスのヒット／ミスを判定し（Ｓ２）、ヒットなら測定値（ミス率）を±０する（Ｓ３）。Ｓ２でミスし、ミスしたラインの埋まり具合が１（Ｓ４でＹＥＳ）ならば、測定値を＋Ｃする（Ｓ５）。Ｓ２でミスし、ミスしたラインの埋まり具合が０（Ｓ４でＮＯ）ならば測定値を＋１する（Ｓ６）。測定値と閾値との比較を行い（Ｓ７）、閾値を超えたら、起動条件を満たしたと判定し起動停止フェーズへ移行する（Ｓ８）。閾値を超えなかった場合には、停止条件判定フェーズへ移行する（Ｓ９）。
【００４０】
図９は、図６のＳ３に対応する停止条件判定の手順を示すフローチャートである。
【００４１】
総合使用率を所定の式に従い計算する（Ｓ１）。総合使用率が閾値以上であれば（Ｓ２でＹＥＳ）、起動停止フェーズへ移行する（Ｓ３）。総合使用率が閾値より小さければ（Ｓ２でＮＯ）、処理を終了し次のキャッシュアクセスを待つ（Ｓ４）。
【００４２】
図１０は、図６のＳ４に対応する起動停止動作の手順を示すフローチャートである。
【００４３】
起動指示があり（Ｓ１でＹＥＳ）、電源安定＋α待ちのタイマは終了しており（Ｓ２でＹＥＳ）、停止ウェイがある場合（Ｓ３でＹＥＳ）には、電源安定＋α待ちのタイマを起動し（Ｓ４）、ウェイ起動指示とともに動的閾値制御フェーズへ移行する（Ｓ５）。起動指示があっても電源安定＋α待ちのタイマ待ち（Ｓ２でＮＯ）、または停止ウェイが無い場合（Ｓ３でＮＯ）には、指示を出さずに動的閾値制御フェーズへ移行する（Ｓ６）。起動指示がなく（Ｓ１でＮＯ）、停止指示があり（Ｓ７でＹＥＳ）、稼動ウェイ数が２以上の場合（Ｓ８でＹＥＳ）には、停止指示とともに動的閾値制御フェーズへ移行する（Ｓ９）。停止指示がない（Ｓ７でＮＯ）または稼動ウェイ数が１つの場合（Ｓ８でＮＯ）には、指示を出さずに動的閾値制御フェーズへ移行する（Ｓ１０）。
【００４４】
図１１Ａは、図６のＳ５に対応する動的閾値制御動作の手順を示すフローチャートである。図１１Ａは、起動閾値の制御の手順を示す。
【００４５】
動的制御設定がＯＮ（Ｓ１でＹＥＳ）されたら、変化指令値（何段階閾値を変化させるかを保持した値）をリセットし、タイマが起動する。タイマが動いている間、起動指令をカウントする（Ｓ２，Ｓ３）。タイマ終了時（Ｓ４でＹＥＳ）、カウンタが閾値以上（Ｓ５でＹＥＳ）ならば、閾値が低すぎると判断し変化指令値を"＋１"し、カウンタリセットする（Ｓ６）。カウンタが閾値以上でなく（Ｓ５でＮＯ）且つ０（Ｓ７でＹＥＳ）ならば、閾値が高すぎると判断し変化指令値を−１する（Ｓ８）。どちらでもない場合には変化指令値は現状のままとする。タイマをリセットして再起動するとともに、変化指令値と変化幅とを乗算し閾値に加算して、比較部で利用する（Ｓ９）。
【００４６】
図１１Ｂは、図６のＳ５に対応する動的閾値制御動作の手順を示すフローチャートである。図１１Ｂは、停止閾値の制御の手順を示す。
【００４７】
タイマが動いている間停止指令をカウントする（Ｓ１，Ｓ２）。タイマ終了時（Ｓ３でＹＥＳ）、カウンタが閾値以上（Ｓ４でＹＥＳ）ならば、閾値が高すぎると判断し変化指令値を−１し、カウンタリセットする（Ｓ５）。カウンタが閾値以上でなく（Ｓ４でＮＯ）且つ０（Ｓ６でＹＥＳ）ならば閾値が低すぎると判断し、変化指令値を＋１する（Ｓ７）。どちらでもない場合には変化指令値は現状のままとする。タイマをリセットして再起動するとともに、変化指令値と変化幅とを乗算し閾値に加算して、比較部で利用する（Ｓ８）。
【００４８】
図１２は、キャッシュ状態測定部２７の構成の一例を示す図である。
【００４９】
起動ウェイ情報を基に、停止ウェイの有効データフラグはマスクし且つ起動ウェイの有効データフラグはそのままにして、ライン毎に複数のウェイの有効データフラグのＡＮＤをとり、その結果を埋まり具合表５１に格納する。使用率表５２においては、キャッシュアクセス毎に選択したラインナンバーをＦＩＦＯ５３にためておき、入力ナンバーＡと出力ナンバーＢとを比較して、ライン毎に両方にあてはまらなければ使用率を±０、入力に当てはまれば＋１、出力に当てはまれば−１、両方にあてはまれば±０として更新した値を保持する。ウェイの使用率は、ウェイ毎にＦＩＦＯ５４をもち、キャッシュアクセス毎に自分のウェイへのアクセスなら１、さもなければ０を入力し、ＦＩＦＯ５４の総和を使用数として保持する。
【００５０】
図１３は、ミス率測定部２５の構成の一例を示す図である。キャッシュアクセスがヒットだった場合は０、ミスかつミスしたラインの埋まり具合が１の場合には係数Ｃ、ミスかつミスしたラインの埋まり具合が０の場合には１を、ＦＩＦＯ５５に挿入する。ＦＩＦＯ５５の各レジスタの値の総和を測定値（ミス率）とする。
【００５１】
なおミス率測定の係数Ｃを1に設定すること、或いはＣ又は１の選択機構自体を削除することにより、埋まり具合を考慮しない単純なヒット／ミスの割合を判定基準（ミス率）として使用するようにしてもよい。この場合でも、本願の停止制御方式を用いることにより、従来とは異なるキャッシュ制御が可能となる。性能（ヒット率）をある値以下に落としたくない場合に、ミス率測定の閾値を変更して使用するのが効果的である。
【００５２】
図１４は、使用率測定部２６の構成の一例を示す図である。複数の掛け算器５６と加算器５７により、使用率表からライン毎の埋まり具合と使用率との積和を求め測定値（総合使用率）として出力する。
【００５３】
図１５は、比較部２４の構成の一例を示す図である。比較部２４は、加算器６１及び６２と、比較回路６３及び６４を含む。これら加算器及び比較回路により、起動及び停止のそれぞれについて測定値と閾値との比較を行う。閾値を超えたら起動又は停止指示をだす。閾値は動的閾値制御部２２からの閾値の変更値をレジスタ設定値に加算した値とする。動的閾値制御部２２が設けられていない場合には、レジスタ設定値をそのまま閾値としてよい。
【００５４】
図１６は、パワー制御部２１の構成の一例を示す図である。パワー制御部２１は、指示検出回路７１、稼働状態レジスタ７２、複数のアンド回路７３を含む。指示検出回路７１は、ウェイ数制御部２３から供給される起動／停止指示信号を検出して、取り込みトリガ信号を出力する。この取り込みトリガ信号に応答して、稼働状態レジスタ７２は、ウェイ数制御部２３から供給される更新後のウェイ稼動状態情報を取り込む。これにより内部のウェイ稼動状態情報を更新する。この更新結果によりＡＮＤ回路７３を制御して、各電源ラインをマスクすることにより、各ウェイの電源をオン／オフ制御する。
【００５５】
図１７は、本発明によるキャッシュ装置の変形例を示すブロック図である。図１７において、図１と同一の構成要素は同一の番号で参照し、その説明は省略する。
【００５６】
図１７のキャッシュ装置は、図１のキャッシュ装置と比較して、コントローラ１４の代わりにコントローラ１４Ａが設けられていることが異なる。コントローラ１４Ａは、パワー制御部２１、ウェイ数制御部２３Ａ、キャッシュ状態測定部２７Ａ、及び設定レジスタ２８Ａを含む。
【００５７】
この構成では、埋まり具合をライン毎ではなく、起動中のウェイ全体でみる。即ち、起動中のウェイ全体でのデータ有効フラグの総数を埋まり具合とする。またキャッシュアクセス単位ではなく、コアのクロック単位で動くＦＩＦＯを設け、キャッシュアクセス有りの場合には１を、無しの場合には０をＦＩＦＯに入力するようにする。このＦＩＦＯの格納データの合計（１の数）を使用率とする。このような構成とすることにより、保持用のレジスタ、計算用の回路の構造が単純かつ小さくなる。
【００５８】
図１８は、キャッシュ状態測定部２７Ａの構成の一例を示す図である。図１８において、図１２と同一の構成要素は同一の番号で参照し、その説明は省略する。
【００５９】
図１８の構成の場合、起動ウェイ情報を基に、停止ウェイの有効データフラグはマスクし且つ起動ウェイの有効データフラグはそのままにして、全ての有効データフラグの和を求め、その結果を使用率表８１に埋まり具合として格納する。この場合、ライン単位の埋まり具合がわからないので、ミス率に係数Ｃをかけることはできなくなる。ミス率はキャッシュのミス率をそのまま流用する。ＦＩＦＯ８２によりキャッシュの使用率を求め、その結果を使用率表８１に格納する。
【００６０】
図１９は、埋まり具合、使用率、ミス率の値と制御動作との対応関係を示す表である。図１９の表に基づいて、動作の列の動作（ウェイ起動、そのまま、停止）を実行すればよい。具体的には、ミス率が低く、埋まり具合及び使用率の少なくとも一方が低い場合には、ウェイ停止と判断をする。また、ミス率が高く、埋まり具合及び使用率の少なくとも一方が高い場合には、ウェイ起動と判断する。それ以外の場合には、ウェイの起動停止を行わない。
【００６１】
図２０は、ウェイ数制御部２３Ａの構成の一例を示す図である。ウェイ数制御部２３Ａは、比較器８５乃至８７、判定部８８、及びウェイ起動状態表８９を含む。比較器８５乃至８７により、それぞれ埋まり具合、使用率、及びミス率とレジスタ設定の閾値との比較を行う。この比較結果と、ウェイ起動状態表８９が示す現在のウェイ起動状態とに応じて、判定部８８が判定を行い、起動指示、停止指示、及びウェイ稼働状況を出力する。判定条件は、図２０において判定部８８に記載の条件であり、図１９の表に対応する。
【００６２】
図２１は、本発明によるキャッシュ装置の更なる変形例を示すブロック図である。図２１において、図１及び図１７と同一の構成要素は同一の番号で参照し、その説明は省略する。
【００６３】
図２１のキャッシュ装置は、図１７のキャッシュ装置と比較して、コントローラ１４の代わりにコントローラ１４Ｂが設けられていることが異なる。コントローラ１４Ｂは、パワー制御部２１、動的閾値制御部２２、ウェイ数制御部２３Ｂ、キャッシュ状態測定部２７Ａ、及び設定レジスタ２８Ａを含む。動的閾値制御部２２を設けることにより、図１の構成の場合と同様な動的閾値制御を可能としている。
【００６４】
図２２は、ウェイ数制御部２３Ｂの構成の一例を示す図である。図２２において、図２０と同一の構成要素は同一の番号で参照し、その説明は省略する。
【００６５】
ウェイ数制御部２３Ｂは、図２０の構成に加え、更に加算器９１乃至９３を含む。加算器９１乃至９３は、動的閾値制御部２２からの閾値上昇値をレジスタ設定の閾値に加算して、動的に変化する閾値を生成する。この動的に変化する閾値が、比較器８５乃至８７における比較動作に使用される。
【００６６】
図２３は、図１７に示す構成におけるキャッシュ起動停止制御の流れを示すフローチャートである。このフローチャートに示す処理はキャッシュアクセス毎に行われる。
【００６７】
測定値更新フェーズ（Ｓ１）では、各測定値の計算を行う。図１７のキャッシュ状態測定部２７Ａの動作に相当する。
【００６８】
条件測定フェーズ（Ｓ２）では、起動及び停止の条件の有無を判定する。起動の判定及び停止の判定は、条件判定フェーズに集約して簡略化できる。起動停止フェーズ（Ｓ３）では、ウェイの起動停止判定を行う。図１７のウェイ数制御部２３Ａの動作に相当する。
【００６９】
パワー制御起動（Ｓ４）及びパワー制御停止（Ｓ５）では、それぞれウェイの起動及び最も使用頻度の低いウェイの停止の動作を行う。図１７のパワー制御部２１の動作に相当する。その後、処理を終了し次のキャッシュアクセスを待つ。
【００７０】
図２４は、図２３のＳ１に対応する各測定値の計算の手順を示すフローチャートである。埋まり具合は、キャッシュの有効ウェイの有効データフラグの総和を求めることで計算する（Ｓ１）。使用率は、最も古いキャッシュ使用情報を削除し、キャッシュを使用したら＋１、使用しなかったら＋０とすることにより更新して求める（Ｓ２）。ウェイ使用数更新は、図７の場合と同様である。なおこれらのステップの処理は順不同でよい。
【００７１】
図２５は、図２３のＳ２に対応する条件判定処理の手順を示すフローチャートである。まずミス率の閾値判定を行う（Ｓ１）。ミス率が閾値以上の場合（Ｓ１でＹＥＳ）、さらに使用率の閾値判定（Ｓ２）、埋まり具合の閾値判定（Ｓ３）を行い、何れかの判定で閾値以上と判明した場合には起動と判定する（Ｓ４，Ｓ５）。ミス率が閾値以上でなく（Ｓ１でＮＯ）且つ閾値以下である場合（Ｓ６でＹＥＳ）、使用率の閾値判定（Ｓ７）、埋まり具合の閾値判定（Ｓ８）を行い、何れかの判定で閾値以下と判明した場合には停止と判定する（Ｓ９，Ｓ１０）。それ以外の場合には起動停止は行わない。なお使用率、埋まり具合の判断の順番は入れ替え可能である。
【００７２】
図２６は、図２１に示す構成におけるキャッシュ起動停止制御の流れを示すフローチャートである。このフローチャートに示す処理はキャッシュアクセス毎に行われる。図２６においては、図２３のフローチャートに対して動的閾値制御フェーズ（ＳＡ）が追加されたことのみが異なる。他の処理は、図２３と同様である。また動的閾値制御フェーズ（ＳＡ）の処理は、図１１Ａ及び図１１Ｂに示す手順でよい。
【００７３】
なお上記変形例の説明において、図１９の表に示されるキャッシュの状態と動作の関係を、ユーザーが設定変更できるようにしてもよい。即ち、図１９の表の動作の列の内容を例えばレジスタ設定により可変な構成としてよい。このようなレジスタ設定を用いた構成により、例えば図１９の状態１に対して動作が「停止」と定義されているのを、「起動」或いは「そのまま」と変更することが可能である。図２０又は図２２に示す判定部８８で、判定結果をレジスタ設定に応じて実行すればよい。
【００７４】
図２７は、動作内容をレジスタ設定可能とした場合の条件判定フェーズのフローチャートを示す。埋まり具合、使用率、及びミス率に関して閾値判定を行い各閾値との比較を行う（Ｓ１）。比較結果に応じてレジスタの設定内容を読み出す（Ｓ２）。高低は閾値以上及び以下を示し、中は閾値以上でも以下でもない場合を示す。レジスタから読み出した結果に応じて「起動」、「停止」、又は「そのまま」に分岐する（Ｓ３）。
【００７５】
以下に、本発明の少なくとも１つの実施例の効果について説明する。
【００７６】
（式1）で示した値は、キャッシュの利用効率を随時測定している式である。図３の説明で示したとおり、この式の値が低い場合、埋まっているラインの使用率が低く、ラインの空きが大きい、つまりつめられる上体をあらわしている。
【００７７】
例えばＪＰＥＧなどの画像処理の場合、図２８のように特定の処理を繰り返し行い、終了したらアイドル状態となる動作を繰り返す。このとき、命令コード領域をみると、エンコード処理中は特定の処理を繰り返すためメモリ空間上の特定の領域が繰り返し使われる。そこでキャッシュは使用率が高く、埋まり具合が高く、ヒット率の高い状態となる。アイドル処理中は、通常自分への分岐といった極簡単な処理が繰り返しおこなわれるため特定のメモリ領域だけ使用される。そのためキャッシュの使用率は高く、埋まり具合は低く、ヒット率が高い状態となる。図２９にこの場合の本発明と従来技術（特許文献１）との効果の差を示す。
【００７８】
従来技術の場合、ヒット率のみに依存するためヒット率が高い状態がつづくとウェイを停止させる。そのためキャッシュ容量が不足しミス率が高くなる。そのため今度は起動の判定条件を満たし起動する。すると再びヒット率の高い状態に戻る。これを繰り返すため処理時間が遅くなる。アイドル状態に入るとウェイと停止させる。キャッシュの制御なしの場合と比べて消費電力は下がるがスループットも落ちてしまう。
【００７９】
それに対し本発明の場合は、ライン毎の埋まり具合も判断基準に加えるためヒット率の高い状態が続くこの場合でもウェイの停止判断をしない。そのため性能はキャッシュの制御の無い場合と同様に維持される。アイドル状態では使用率が下がるためウェイを停止させ、従来技術と同様の省電力効果が期待できる。つまりキャッシュの制御無しの場合と比べてスループットを落とさず省電力化を行うことができる。
【００８０】
図３０でミス率と起動判定の時間変化を本発明と従来技術で比べた。本発明では係数Ｃを掛けているため測定したミス率の上昇が早く、そのため起動判定を早く行うことができる。
【００８１】
さらに図３１で定量的に比較結果をまとめた。起動が早くなる結果、平均性能は本発明の方が高くなる。また、図中の仮定より、従来技術に比べ平均Ｃ倍、検出が早くなる。
【００８２】
キャシュは複数のキャッシュラインを含み、主記憶からキャシュへの情報のコピーはキャシュライン単位で実行される。主記憶のメモリ空間はキャッシュライン単位で分割され、分割されたメモリ領域を順番にキャッシュラインに割当てておく。キャッシュの容量は主記憶の容量よりも小さいので、主記憶のメモリ領域を繰り返して同一のキャッシュラインに割当てることになる。
【００８３】
キャッシュはアクセス履歴を格納するためアドレスをデコードする。その際、通常アドレスのすべてのビットをデコードはしない。キャッシュ内部をライン単位でわけてアドレスの一部はそのままラインナンバーに割り当てる。このためライン毎に使えるアドレスは周期的に決まっている。そこで、同じラインを使用する場所の利用頻度が高ければウェイを起動した場合ライン数が増えヒット率が上昇（性能向上）する。図２で埋まり具合が１のときに係数Ｃをかけるとは、同じラインをよく使ってミスした場合を強調するためのものである。したがって起動検出効率の向上が期待できる。
【００８４】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【図面の簡単な説明】
【００８５】
【図１】本発明によるキャッシュ装置の構成の一例を示すブロック図である。
【図２】使用率、埋まり具合、ミス率を説明するための図である。
【図３】使用率表に基づくウェイ停止について説明するための図である。
【図４】ウェイ数制御部の構成の一例を示す図である。
【図５】動的閾値制御部の構成の一例を示す図である。
【図６】本発明によるキャッシュ起動停止制御の流れを示すフローチャートである。
【図７】各測定値の計算の手順を示すフローチャートである。
【図８】起動条件判定の手順を示すフローチャートである。
【図９】停止条件判定の手順を示すフローチャートである。
【図１０】起動停止動作の手順を示すフローチャートである。
【図１１Ａ】動的閾値制御動作の手順を示すフローチャートである。
【図１１Ｂ】動的閾値制御動作の手順を示すフローチャートである。
【図１２】キャッシュ状態測定部の構成の一例を示す図である。
【図１３】停止条件判定の手順を示すフローチャートである。
【図１４】起動停止動作の手順を示すフローチャートである。
【図１５】比較部の構成の一例を示す図である。
【図１６】パワー制御部の構成の一例を示す図である。
【図１７】本発明によるキャッシュ装置の変形例を示すブロック図である。
【図１８】キャッシュ状態測定部の構成の一例を示す図である。
【図１９】埋まり具合、使用率、ミス率の値と制御動作との対応関係を示す表である。
【図２０】ウェイ数制御部の構成の一例を示す図である。
【図２１】本発明によるキャッシュ装置の更なる変形例を示すブロック図である。
【図２２】ウェイ数制御部の構成の一例を示す図である。
【図２３】図１７に示す構成におけるキャッシュ起動停止制御の流れを示すフローチャートである。
【図２４】各測定値の計算の手順を示すフローチャートである。
【図２５】条件判定処理の手順を示すフローチャートである。
【図２６】図２１に示す構成におけるキャッシュ起動停止制御の流れを示すフローチャートである。
【図２７】動作内容をレジスタ設定可能とした場合の条件判定フェーズのフローチャートを示す。
【図２８】画像処理の場合のキャッシュの使用状態の例を示す図である。
【図２９】本発明と従来技術との効果の差を説明するための図である。
【図３０】ミス率と起動判定の時間変化とを本発明と従来技術とで比較した図である。
【図３１】本発明の効果を定量的に示す図である。
【符号の説明】
【００８６】
１１  タグ格納部
１２  データレジスタ部
１３  判定ユニット
１４  コントローラ
１５  アドレス変換部
１６  セレクタ
２１  パワー制御部
２２  動的閾値制御部
２３  ウェイ数制御部
２４  比較部
２５  ミス率測定部
２６  使用率測定部
２７  キャッシュ状態測定部
２８  設定レジスタ
【図１】
2008234320.tif 000003
【図２】
2008234320.tif 000004
【図３】
2008234320.tif 000005
【図４】
2008234320.tif 000006
【図５】
2008234320.tif 000007
【図６】
2008234320.tif 000008
【図７】
2008234320.tif 000009
【図８】
2008234320.tif 000010
【図９】
2008234320.tif 000011
【図１０】
2008234320.tif 000012
【図１１Ａ】
2008234320.tif 000013
【図１１Ｂ】
2008234320.tif 000014
【図１２】
2008234320.tif 000015
【図１３】
2008234320.tif 000016
【図１４】
2008234320.tif 000017
【図１５】
2008234320.tif 000018
【図１６】
2008234320.tif 000019
【図１７】
2008234320.tif 000020
【図１８】
2008234320.tif 000021
【図１９】
2008234320.tif 000022
【図２０】
2008234320.tif 000023
【図２１】
2008234320.tif 000024
【図２２】
2008234320.tif 000025
【図２３】
2008234320.tif 000026
【図２４】
2008234320.tif 000027
【図２５】
2008234320.tif 000028
【図２６】
2008234320.tif 000029
【図２７】
2008234320.tif 000030
【図２８】
2008234320.tif 000031
【図２９】
2008234320.tif 000032
【図３０】
2008234320.tif 000033
【図３１】
2008234320.tif 000034