(57)【特許請求の範囲】
【請求項１】
ＮウェイずつＭセットとして配置された記憶エントリのＭ×Ｎメモリアレイであって、Ｍ及びＮの双方が１より大きい整数であり、
前記ＭセットのＰ個の相互排他的グループの各グループ内で、前記Ｎウェイは別個にパワー供給可能である、Ｍ×Ｎメモリアレイと、
前記Ｐグループの各グループについて、該グループの利用トレンドを監視し、前記利用トレンドに基づいて異なる時間インスタンスの間に該グループの前記Ｎウェイのうち異なる数のウェイへパワーを動的に提供させるコントローラと、
を含むセットアソシアティブキャッシュメモリ。
【請求項２】
前記グループの前記利用トレンドは、前記グループのヒットレートを含む、
ことをさらに含む請求項１に記載のキャッシュメモリ。
【請求項３】
前記コントローラは、前記グループの前記ヒットレートが第１の所定閾値を上回るとき、前記グループの前記Ｎウェイのうちより少数のウェイへパワーを提供させる、
ことをさらに含む請求項２に記載のキャッシュメモリ。
【請求項４】
前記コントローラは、前記グループの前記ヒットレートが第２の所定閾値を下回るとき、前記グループの前記Ｎウェイのうちより多数のウェイへパワーを提供させる、
ことをさらに含む請求項３に記載のキャッシュメモリ。
【請求項５】
前記コントローラは、前記グループの前記ヒットレートが前記第１の所定閾値を上回るとき、前記コントローラが現在パワーを提供させている前記グループのウェイの数が前記グループの前記Ｎウェイすべてより少なくない限り、前記グループの前記Ｎウェイのうちより少数のウェイへパワーを提供させる、
ことをさらに含む請求項３に記載のキャッシュメモリ。
【請求項６】
前記グループの前記利用トレンドは、前記グループのアクセス頻度をさらに含む、
ことをさらに含む請求項２に記載のキャッシュメモリ。
【請求項７】
前記コントローラは、前記グループの前記ヒットレートが第１の所定閾値を上回り、前記グループの前記アクセス頻度が第２の所定閾値より小さいとき、前記グループの前記Ｎウェイのうちより少数のウェイへパワーを提供させる、
ことをさらに含む請求項６に記載のキャッシュメモリ。
【請求項８】
前記コントローラは、前記グループの前記ヒットレートが第３の所定閾値を下回り、前記グループの前記アクセス頻度が第４の所定閾値より大きく、前記コントローラが現在パワーを提供させている前記グループのウェイの数が前記グループの前記Ｎウェイすべてであるとき、前記グループの前記Ｎウェイのうちより少数のウェイへパワーを提供させる、
ことをさらに含む請求項７に記載のキャッシュメモリ。
【請求項９】
前記コントローラは、前記グループの前記ヒットレートが第３の所定閾値を下回り、前記グループの前記アクセス頻度が第４の所定閾値より大きく、前記コントローラが現在パワーを提供させている前記グループのウェイの数が前記グループの前記Ｎウェイすべてより少ないとき、前記グループの前記Ｎウェイのうちより多数のウェイへパワーを提供させる、
ことをさらに含む請求項７に記載のキャッシュメモリ。
【請求項１０】
前記グループの前記利用トレンドは、キャッシュラインがプリフェッチされたが前記キャッシュラインが使用されずに追い出された前記グループ内の記憶エントリの数の尺度を含む、
ことをさらに含む請求項１に記載のキャッシュメモリ。
【請求項１１】
前記コントローラは、キャッシュラインがプリフェッチされたが前記キャッシュラインが使用されずに追い出された前記グループ内の記憶エントリの数が第１の所定閾値を上回るとき、前記グループの前記Ｎウェイのうちより少数のウェイへパワーを提供させる、
ことをさらに含む請求項１０に記載のキャッシュメモリ。
【請求項１２】
前記コントローラは、キャッシュラインがプリフェッチされたが前記キャッシュラインが使用されずに追い出された前記グループ内の記憶エントリの数が第２の所定閾値を下回るとき、前記グループの前記Ｎウェイのうちより多数のウェイへパワーを提供させる、
ことをさらに含む請求項１１に記載のキャッシュメモリ。
【請求項１３】
前記グループの前記利用トレンドは、前記グループの平均ビクティムキャッシュラインエージを含む、
ことをさらに含む請求項１に記載のキャッシュメモリ。
【請求項１４】
前記コントローラは、前記グループの前記平均ビクティムキャッシュラインエージが第１の所定閾値を上回るとき、前記グループの前記Ｎウェイのうちより少数のウェイへパワーを提供させる、
ことをさらに含む請求項１３に記載のキャッシュメモリ。
【請求項１５】
前記コントローラは、前記グループの前記平均ビクティムキャッシュラインエージが第２の所定閾値を下回るとき、前記グループの前記Ｎウェイのうちより多数のウェイへパワーを提供させる、
ことをさらに含む請求項１４に記載のキャッシュメモリ。
【請求項１６】
前記コントローラは、前記グループの前記平均ビクティムキャッシュラインエージが第２の所定閾値を下回り、前記コントローラが前記グループの前記Ｎウェイのうちすべてへパワーを現在提供させているとき、前記グループの前記Ｎウェイのうちより少数のウェイへパワーを提供させる、
ことをさらに含む請求項１５に記載のキャッシュメモリ。
【請求項１７】
前記コントローラは、前記ＰグループのうちＱグループのみの前記利用トレンドを監視するカウンタを含み、ＱはＰより小さく、
前記コントローラは、時間多重化されるやり方で前記ＰグループのうちのＱグループの異なる集合の前記利用トレンドを監視する、
ことをさらに含む請求項１に記載のキャッシュメモリ。
【請求項１８】
ＮウェイずつＭセットとして配置された記憶エントリのＭ×Ｎメモリアレイを有するセットアソシアティブキャッシュメモリを動作させる方法であって、Ｍ及びＮの双方が１より大きい整数であり、前記ＭセットのＰ個の相互排他的グループの各グループ内で、前記Ｎウェイは別個にパワー供給可能であり、当該方法は、
前記Ｐグループの各グループについて、
該グループの利用トレンドを監視するステップと、
異なる時間インスタンスの間、前記利用トレンドに基づいて該グループの前記Ｎウェイのうち異なる数のウェイへパワーを動的に提供させるステップと、
を含む方法。
【請求項１９】
前記グループの前記利用トレンドは、前記グループのヒットレートを含む、
ことをさらに含む請求項１８に記載の方法。
【請求項２０】
前記グループの前記利用トレンドは、前記グループのアクセス頻度をさらに含む、
ことをさらに含む請求項１９に記載の方法。
【請求項２１】
前記グループの前記利用トレンドは、キャッシュラインがプリフェッチされたが前記キャッシュラインが使用されずに追い出された前記グループ内の記憶エントリの数の尺度を含む、
ことをさらに含む請求項１８に記載の方法。
【請求項２２】
前記グループの前記利用トレンドは、前記グループの平均ビクティムキャッシュラインエージを含む、
ことをさらに含む請求項１８に記載の方法。
【請求項２３】
複数の処理コアと、
前記複数の処理コアに結合されたキャッシュメモリと、
を含み、
前記キャッシュメモリは、
ＮウェイずつＭセットとして配置された記憶エントリのＭ×Ｎメモリアレイであって、Ｍ及びＮの双方が１より大きい整数であり、
前記ＭセットのＰ個の相互排他的グループの各グループ内で、前記Ｎウェイは別個にパワー供給可能である、Ｍ×Ｎメモリアレイと、
前記Ｐグループの各グループについて、該グループの利用トレンドを監視し、前記利用トレンドに基づいて異なる時間インスタンスの間に該グループの前記Ｎウェイのうち異なる数のウェイへパワーを動的に提供させるコントローラと、
を含む、プロセッサ。
【発明の詳細な説明】
【背景技術】
【０００１】
関連出願の相互参照
本出願は、2016年4月18日に申請され、DYNAMIC  POWERING  OF  CACHE  MEMORY  BY  WAYS  WITHIN  MULTIPLE  SET  GROUPS  BASED  ON  UTILIZATION  TRENDSと題された米国仮特許出願第62323859号に基づく優先を主張し、上記出願は、その全体を本明細書において参照により援用される。
【０００２】
プロセッサは、コンピュータプログラムにより規定される命令を実行するデジタル装置である。典型的なコンピュータシステムには、プログラム命令と該プログラム命令により処理されるデータとを記憶するシステムメモリに結合されたプロセッサが含まれる。こうしたシステムのパフォーマンスは、システムメモリからプロセッサにデータを読み出し又はプロセッサからシステムメモリにデータを書き込むのに必要とされる時間が、プロセッサがデータを処理する命令を実行するのに必要とされる時間より典型的に大分大きいとの事実によって、妨げられる。その時間差は、しばしば、１桁及び２桁の大きさである。ゆえに、プロセッサは、メモリが読み出され又は書き込まれるのを待っている間、何もせずにアイドルで使われない可能性がある。
【０００３】
しかしながら、プロセッサ設計者は、プログラムが比較的大きい部分の時間、例えば頻繁にアクセスされるプログラム変数などの比較的小さい部分のデータにアクセスする傾向があるとかなり前に認識した。上記特性を有するプログラムは、良い時間的局所性を表すといわれ、上記特性の傾向は、参照原理の局所性といわれる。この原理の利点を活かすために、現代のプロセッサは、１つ以上のキャッシュメモリを典型的に含む。キャッシュメモリ又はキャッシュは、システムメモリサイズに相対して小さいメモリであり、プロセッサコアに電気的に近く、コンピュータシステムのより大きい、より離れたメモリ、例えばシステムメモリなどに通常存在するデータのサブセットを、一時的に記憶する。データをキャッシュすることは、キャッシュメモリの記憶要素内にデータを記憶することであり、したがって、データは後に、システムのより離れたメモリからよりもキャッシュメモリから、より迅速に提供されることができる。
【０００４】
プロセッサが、メモリ読み出し命令、例えばロード又はポップ命令などを実行するとき、プロセッサは、要求されたデータがキャッシュ内に存在するか、すなわち、メモリリードアドレスがキャッシュ内でヒットするかを見るように最初チェックする。ヒットしない場合、すなわち、メモリリードアドレスがキャッシュ内でミスする場合、プロセッサは、典型的にはデータをプロセッサの規定されたレジスタにロードすることに対して追加で、データをキャッシュにフェッチする。今やデータがキャッシュ内に存在するので、次回メモリ読み出し命令が同じデータを要求することに直面するとき、このデータは、システムメモリからでなくキャッシュから、処理のためにレジスタにフェッチされることができる。メモリ読み出し命令は、データがキャッシュ内にすでに存在するので、本質的に即座に実行されることができる。
【０００５】
キャッシュは、データをキャッシュライン又はキャッシュブロック内に記憶する。キャッシュラインは、キャッシュとシステムメモリとの間で転送され得るデータの最小単位である。キャッシュラインサイズの一例は、６４バイトのデータである。メモリ読み出し命令がキャッシュミスを引き起こすとき、メモリ読み出し命令により要求されたデータのみフェッチすることに代わって、ミスしているアドレスにより暗に示されるキャッシュライン全体がキャッシュへとフェッチされる。結果として、同じキャッシュライン内のデータを要求する後のメモリ読み出し命令が迅速に実行される可能性があり、なぜならば、システムメモリにアクセスする必要があるのでなくキャッシュから、データが供給されることができるからである。
【０００６】
さらに、メモリ書き込み命令、例えばストア又はプッシュ命令などが実行されるとき、メモリライトアドレスがキャッシュ内でヒットする場合、データはキャッシュのキャッシュラインに即座に書き込まれることができ、これにより、システムメモリへのデータの書き込みが先延ばしされることができる。後に、キャッシュは、典型的にはより新しいキャッシュラインの場所を作るために、キャッシュラインをシステムメモリに書き込むことになる。この動作は、ライトバック動作と一般にいわれる。またさらに、いくつかのキャッシュは、メモリライトアドレスがキャッシュ内でミスするとき、キャッシュ内のエントリをアロケートする。すなわち、キャッシュが、キャッシュのエントリ内の古いキャッシュラインのライトバック動作を実行し、ライトアドレスにより暗に示される新しいキャッシュラインを、システムメモリから、前に古いキャッシュラインにより占有されていたキャッシュエントリに読み出す。この動作は、ライトアロケート動作と一般にいわれる。
【０００７】
観察され得るとおり、キャッシュを効率的に実行することは、プロセッサのパフォーマンスを大きく向上させ得る。さらに、多くの場合、キャッシュメモリは、特にキャッシュメモリが大きい、例えば、プロセッサのキャッシュメモリ階層内のラストレベルキャッシュなどであるとき、プロセッサのパワー消費の相当な部分を表すことになる。さらに、キャッシュメモリにより消費されるパワーの量を低減させることが望ましく、このことは、しばしば、プロセッサのパフォーマンスを向上させるというゴールと競合するゴールである。
【図面の簡単な説明】
【０００８】
【図１】プロセッサを例示するブロック図である。
【図２】図１のキャッシュメモリをより詳細に例示するブロック図である。
【図３】セットのグループのウェイの選択的パワー供給を実行する図２のキャッシュメモリの動作を例示するフローチャートである。
【図４】図３のフローチャートに従いセットのグループのウェイの選択的パワー供給を実行する図２のキャッシュメモリの動作の一例を例示するブロック図である
【図５】種々の実施形態に従いセットのグループのウェイの選択的パワー供給を実行する図２のキャッシュメモリの動作を例示するフローチャートである。
【図６】種々の実施形態に従いセットのグループのウェイの選択的パワー供給を実行する図２のキャッシュメモリの動作を例示するフローチャートである。
【図７】種々の実施形態に従いセットのグループのウェイの選択的パワー供給を実行する図２のキャッシュメモリの動作を例示するフローチャートである。
【図８】種々の実施形態に従いセットのグループのウェイの選択的パワー供給を実行する図２のキャッシュメモリの動作を例示するフローチャートである。
【発明を実施するための形態】
【０００９】
本開示のセットアソシアティブ（set-associative）キャッシュメモリにおいて、実施形態が説明される。セットアソシアティブキャッシュメモリは、そのセットを複数のセットグループへとグループ化し、各セットグループ内で、パワーアップされ（powered-up）又はパワーダウンされる（powered-down）ウェイ（ways）の数がキャッシュメモリの動作の間に動的に変更されて、キャッシュメモリのパフォーマンスとパワー消費とにおける所望のバランスを提供することができる。すなわち、キャッシュメモリは、時にセットグループのウェイのうちいくつかからパワーを除去し、時にセットグループのウェイのうちいくつかにパワーを提供し、キャッシュメモリがパワーを除去する／提供するウェイの数は、動的として決定される。キャッシュメモリは、キャッシュメモリの異なるセットグループの利用トレンドを監視するコントローラを含み、パワーアップされた各セットグループのウェイの数をいつ増加させ又は低減させるかに関する判断を行う。利用トレンドには、これらに限られないが、ヒットレート、平均のビクティムキャッシュラインエージ（victim  cache  line  age）、プリフェッチされたが使用されないキャッシュラインの数、及び／又はアクセス頻度のうち、１つ又は組み合わせが含まれる。
【００１０】
本開示におけるキャッシュメモリのセットのグループのウェイからのパワーの除去は、パワーをすべて一緒に除去することか、又は少なくとも、グループのウェイ内の記憶セルのステートが失われ又は少なくとも信頼性を欠くようにパワーを除去することかのいずれかを意味する。このことは、記憶セルに提供されるパワーが低減されておそらくは低減されたパフォーマンスがもたらされ、しかし記憶セルのステートを保有するのに十分なパワーが提供される他のパワーセービング手法と対照的である。反対に、本開示におけるキャッシュメモリのセットのグループのウェイに対するパワーの提供は、記憶セルの現在のステートを保有するのに十分なパワーを提供することを意味する。
【００１１】
次に図１を参照すると、プロセッサ１００を例示するブロック図が示されている。プロセッサ１００は複数の処理コア１０２を含み、処理コア１０２はすべて、キャッシュメモリ１３２に結合され、キャッシュメモリ１３２を共有する。好ましくは、各コア１０２は、その独自のより低いレベルのキャッシュメモリ、例えば、レベル１（Ｌ１）命令キャッシュメモリ及びＬ１データキャッシュメモリをさらに含み、キャッシュメモリ１３２は、プロセッサ１００のラストレベルキャッシュ（ＬＬＣ）である。さらに、プロセッサ１００は、中間レベルキャッシュメモリ、例えばレベル２（Ｌ２）キャッシュを含んでもよく、上記中間レベルキャッシュメモリは、コア１０２に対してローカルであってもよく、あるいは２つ以上のコア１０２により共有されてもよい。利用トレンドに基づいてセットグループ内のある数のウェイに動的にパワー供給するように構成されたキャッシュメモリが、ＬＬＣよりもむしろより低い／中間のレベルのキャッシュメモリである実施形態が考えられる。さらに、プロセッサの一実施形態が、キャッシュメモリを複数のコアが共有するマルチコアプロセッサの図１に関して説明されるが、利用トレンドに基づいてセットグループ内のある数のウェイに動的にパワー供給するように構成されたキャッシュメモリを複数のコアが共有せず、代わってプロセッサ１００内のシングルコア１０２であり得るコア１０２に対して上記キャッシュメモリが専用にされる他の実施形態が考えられる。
【００１２】
次に図２を参照すると、図１のキャッシュメモリ１３２をより詳細に例示するブロック図が示されている。キャッシュメモリ１３２は、記憶エントリのメモリアレイ２０６と、利用カウンタ２０４を含むコントローラ２０２とを含む。メモリアレイ２０６は、ＮウェイずつＭセットとして配置される。図２の例示的実施形態において、１６ウェイ及び１２８セットがあり、１２８セットは、各グループ内に１６個の相互排他的セットの、８つのセットグループにおいて配置される。利用トレンドに基づいてセットグループ内のある数のウェイに動的にパワー供給するように構成されたキャッシュメモリ１３２は、より多くの又はより少ないウェイ、セット、及び各セットグループ内のセットを含んでもよいことが十分理解されるべきである。
【００１３】
各セットグループ内のウェイは、コントローラ２０２によって別個にパワー供給可能（powerable）である。一実施形態において、コントローラ２０２は、各セットグループについて、それぞれのウェイイネーブルレジスタ（way  enable  register）を含む（図示されていない）。各ウェイイネーブルレジスタは、Ｎウェイに関連付けられたＮビットを保持し、ウェイがそれぞれのグループに関してパワーオン又はオフされる（powered  on  or  off）かどうかを規定する。コントローラ２０２は、以下で説明されるとおり、グループのウェイイネーブルレジスタのビットをセットし／クリアして、グループのウェイへの／からのパワーを提供し／除去して、グループに関してパワーオンされるウェイの数を低減させ／増加させる。別の実施形態において、コントローラ２０２は、グローバルウェイイネーブルレジスタとＱ個のローカルウェイイネーブルレジスタとを含み、ここで、ＱはＮより小さい。各ローカルウェイイネーブルレジスタは、関連付けられたインジケータを有し、この関連インジケータは、セットグループのうちいずれがローカルウェイイネーブルレジスタに関連付けられるかを示す。各々の有効なローカルウェイイネーブルレジスタが、関連付けられたインジケータ内に規定されるグループのウェイのパワー供給を制御し、ローカルウェイインジケータによって規定されないグループのウェイのパワー供給は、グローバルウェイインジケータによって制御される。別法として、各ローカルウェイイネーブルレジスタに関連付けられたインジケータは、開始及び終了規定に含まれるすべてのグループが、関連付けられたローカルウェイイネーブルレジスタにより制御されるように、開始及び終了グループを規定する。上記実施形態は、特に相当数のグループがそのウェイのすべて又は１つだけをパワーオンさせる状況において、十分なパワー制御を提供すると同時に、よりサイズ及びパワー消費効率が良い可能性がある。一実施形態において、セットのグループ内のウェイは、コントローラ２０２によってペアにおいて別個にパワー供給可能である。すなわち、コントローラ２０２は、グループ内で一度に２つのウェイについてパワーを供給する／除去する。
【００１４】
メモリアレイ２０６の記憶エントリは、キャッシュラインのデータと、その関連付けられたステータス情報、例えばＭＥＳＩステートとを記憶する。一実施形態において、別個のメモリアレイが、データとステータスとを記憶する。さらに、アレイ２０６は、セットごとの記憶要素を含み、セット内のいずれのウェイがアロケートされる（allocated）ことになるかを決定するのに使用される置換情報を保持する。置換情報は、さらに、データ及び／又はステータスアレイとは別個のメモリアレイ内に保持されてもよい。
【００１５】
コントローラ２０２は、キャッシュメモリ１３２の利用を監視して、プロセッサ１００が実行しているプログラムによるある時間にわたる利用のトレンドを解明しようと試みる。上述されたとおり、利用トレンドには、これらに限られないが、ヒットレート、平均ビクティムキャッシュラインエージ、プリフェッチされたが使用されないキャッシュラインの数、及び／又はアクセス頻度のうち、１つ又は組み合わせが含まれる。ゆえに、カウンタ２０４が使用されて、各セットグループについて、セットグループに対するキャッシュヒットの数、セットグループに対するアクセスの数、及びセットグループ内のキャッシュラインのエージを記憶することができる。カウンタ２０４は、他の情報を記憶する記憶装置、例えばビットマップ又はシフトレジスタなどをさらに含んでもよく、上記情報は、例えば、セットグループのキャッシュラインがプリフェッチされたかどうか、及び、セットグループのキャッシュラインがプリフェッチされた後、追い出される（evicted）前に使用されたかどうかの指標などである。コントローラ２０２はさらに、以下でより詳細に説明されるとおり、様々な閾値を保持し、該閾値とカウンタ２０４に記憶された値とを比較する。コントローラ２０２は、セットグループの利用を監視すること及び利用トレンドに関する判断を行うことに必要とされる計算を実行するロジックをさらに含む。一実施形態において、コントローラ２０２は、各セットグループについて一のカウンタ２０４セットを有するのでなく、より少ないカウンタ２０４セットを含み、該セットが、異なるセットグループの利用トレンドを監視することにより時間多重化される（time-multiplexed）やり方で共有される。
【００１６】
次に図３を参照すると、セットのグループのウェイの選択的パワー供給を実行する図２のキャッシュメモリ１３２の動作を例示するフローチャートが示されている。フローはブロック３０１において始まる。
【００１７】
ブロック３０１において、コントローラ２０２は、インデックスをゼロに初期化する。上記インデックスは、本明細書においてＪといわれる。フローはブロック３０２に進む。
【００１８】
ブロック３０２において、コントローラ２０２は、キャッシュメモリ１３２のすべてのセットグループのすべてのウェイにパワーを最初提供する。フローはブロック３０４に進む。
【００１９】
ブロック３０４において、コントローラ２０２は、現在のセットグループ（グループ［Ｊ］）の１つ以上の利用トレンドを監視する。図５乃至図８は、（例えば、判断ブロック３０６及び３１６のとおりの）コントローラ２０２がセットグループの利用トレンドを監視する仕方と、セットグループのパワーアップされたウェイを減少させ又は増加させることが有益であるかどうかをコントローラ２０２が決定する仕方との、様々な実施形態を説明する。フローは判断ブロック３０６に進む。
【００２０】
判断ブロック３０６において、コントローラ２０２は、セットグループ内のパワーアップされたウェイの数を減少させること、例えば、パフォーマンスにおける受け入れ可能損失と引き換えにパワー消費を減少させることが有益であると、ブロック３０４において監視されたセットグループの利用トレンドが示すかどうかを決定する。そうである場合、フローはブロック３０８に進み、さもなければ、フローは判断ブロック３１６に進む。
【００２１】
ブロック３０８において、コントローラ２０２は、セットグループ内のパワーアップされたウェイの数を減少させる。すなわち、コントローラ２０２は、セットグループの現在パワーアップされているウェイのうち１つ以上をパワーダウンし、これらはターゲットウェイといわれる。一例が図４に示されており、図４において、例えば、セットグループ４のウェイ１５が時間１においてパワーアップされており、しかしそれから、時間２においてコントローラ２０２によってパワーダウンされている。さらに、グループのターゲットウェイをパワーダウンする前に、コントローラ２０２は、ターゲットウェイ内の有効データを有するすべてのキャッシュラインを追い出し、したがって、有効データは失われない。フローはブロック３２２に進む。
【００２２】
判断ブロック３１６において、コントローラ２０２は、セットグループ内のパワーアップされたウェイの数を増加させること、例えば、パワー消費における受け入れ可能な増大と引き換えにパフォーマンスを得ることが有益であると、ブロック３０４において監視されたセットグループの利用トレンドが示すかどうかを決定する。そうである場合、フローはブロック３１８に進み、さもなければ、フローはブロック３２２に進む。
【００２３】
ブロック３１８において、コントローラ２０２は、セットグループのパワーアップされたウェイの数を増加させる。すなわち、コントローラ２０２は、セットグループの現在パワーダウンされているウェイのうち１つ以上をパワーアップし、これらはターゲットウェイといわれる。一例が図４に示されており、図４において、例えば、セットグループ５のウェイ５及び６が時間１においてパワーダウンされており、しかしそれから、時間２においてコントローラ２０２によってパワーアップされている。さらに、コントローラ２０２は、グループのターゲットウェイをパワーアップした後、ターゲットウェイを無効化する（invalidates）。フローはブロック３２２に進む。
【００２４】
ブロック３２２において、コントローラ２０２は、インデックスＪを更新して次のセットグループを規定し、このことは好ましくは、Ｊをインクリメントすることと、Ｊがセットグループの数に到達したときにゼロへラップアラウンドすること（wrapping  around）とを含む。フローはブロック３０４に戻り、インデックスにより規定される次のセットグループの利用を監視する。
【００２５】
図３（及び、図５乃至図８）は、単一のグループが時間多重化されるやり方で監視され、動的にサイズ変更される（resized）実施形態を説明しているが、別の実施形態において、２つ以上のグループが、監視を実行するリソースの可用性（例えば、カウンタ２０４）に依存して、時間多重化されるやり方で監視され、動的にサイズ変更されてもよい。さらに、別の実施形態において、コントローラ２０２は、すべてのグループについて同時に監視及び動的サイズ変更を実行するための十分なリソース（例えば、カウンタ２０４）を含み、したがって、時間多重化は必要でない。例えば、監視される利用トレンドが、使用されていないプリフェッチされたキャッシュラインの数である図７の実施形態において、必要とされるリソースの量は比較的小さい可能性があり、したがって、グループのすべてについての監視及びサイズ変更ハードウェアを含むことが、サイズ及びパワー消費の観点において有利なトレードオフであり得る。
【００２６】
好ましくは、図５乃至図８に関して説明されるヒットレート、プリフェッチされたが使用されることなく追い出されるキャッシュラインの数、平均ビクティムキャッシュラインエージ、及びアクセス頻度は、セットグループのサイズ変更に関して評価が行われる時点に先行する時間のローリングウィンドウ（rolling  window）にわたり測定される。
【００２７】
好ましくは、ヒステリシス効果を提供して、あまりに頻繁にセットグループのサイズを不要に変更することを回避するように、閾値が異なる。このことは特に有益であり、なぜならば、グループのサイズを増加させることに関連付けられるパフォーマンスコストがない場合はほとんどないであろうが（しかしながら、パワー消費コストはあり得る）、グループのサイズを減少させることに関連付けられる相当なパフォーマンスコストはあり得るからであり、なぜならば、パワーオフされるターゲットウェイ内の有効キャッシュラインは最初追い出されなければならないからである。
【００２８】
次に図４を参照すると、図３のフローチャートに従いセットのグループのウェイの選択的パワー供給を実行する図２のキャッシュメモリ１３２の動作の一例を例示するブロック図が示されている。
【００２９】
観察され得るとおり、図４は、キャッシュメモリ１３２のセットグループ（本例において８個存在する）の各々のウェイの各々が、パワーアップされ（グレーにされ）ているか又はパワーダウンされている（白）かを例示している。図４は、２つの異なる時点で各セットグループのいずれのウェイがパワーアップ／ダウンされているかを例示している。上記時点は時間１及び時間２として表され、時間２は時間１の後である。
【００３０】
図４の例では、時間１において、セットグループ０は、パワーアップされたウェイ３〜１２と、パワーダウンされたウェイ０〜２及び１３〜１５とを有する。セットグループ１は、パワーアップされたウェイ０〜１３と、パワーダウンされたウェイ１４〜１５とを有する。セットグループ２は、パワーアップされたウェイ０〜１１及び１５と、パワーダウンされたウェイ１２〜１４とを有する。セットグループ３は、パワーアップされたウェイ１〜１１及び１４〜１５と、パワーダウンされたウェイ０及び１２〜１３とを有する。セットグループ４は、パワーアップされたウェイ０〜１５を有し、パワーダウンされたウェイを有さない。セットグループ５は、パワーアップされたウェイ０〜４と、パワーダウンされたウェイ５〜１５とを有する。セットグループ６は、パワーアップされたウェイ０〜１５を有し、パワーダウンされたウェイを有さない。セットグループ７は、パワーアップされたウェイ２〜１５と、パワーダウンされたウェイ０〜１とを有する。
【００３１】
図４の例では、時間２において、セットグループ０は、パワーアップされたウェイ０及び３〜１２と、パワーダウンされたウェイ１〜２及び１３〜１５とを有する。すなわち、ウェイ０がコントローラ２０２によってパワーアップされており、ゆえに、パワーアップされたウェイの数を１だけ増加させている。セットグループ１は、パワーアップされたウェイ０〜１４と、パワーダウンされたウェイ１５とを有する。すなわち、ウェイ１４がコントローラ２０２によってパワーアップされており、ゆえに、パワーアップされたウェイの数を１だけ増加させている。セットグループ２は、パワーアップされたウェイ１〜１１及び１５と、パワーダウンされたウェイ１及び１２〜１４とを有する。すなわち、ウェイ０がコントローラ２０２によってパワーダウンされており、ゆえに、パワーアップされたウェイの数を１だけ減少させている。セットグループ３は、パワーアップされたウェイ１〜１１及び１４〜１５と、パワーダウンされたウェイ０及び１２〜１３とを有する。すなわち、コントローラ２０２は、パワーアップされたウェイの数を変更していない。セットグループ４は、パワーアップされたウェイ０〜１４と、パワーダウンされたウェイ１５とを有する。すなわち、ウェイ１５は、コントローラ２０２によってパワーダウンされており、ゆえに、パワーアップされたウェイの数を１だけ減少させている。セットグループ５は、パワーアップされたウェイ０〜６と、パワーダウンされたウェイ７〜１５とを有する。すなわち、ウェイ５〜６がコントローラ２０２によってパワーアップされており、ゆえに、パワーアップされたウェイの数を２だけ増加させている。セットグループ６は、パワーアップされたウェイ０〜１５を有し、パワーダウンされたウェイを有さない。すなわち、コントローラ２０２は、パワーアップされたウェイの数を変更していない。セットグループ７は、パワーアップされたウェイ３〜１５と、パワーダウンされたウェイ０〜２とを有する。すなわち、ウェイ２がコントローラ２０２によってパワーダウンされており、ゆえに、パワーアップされたウェイの数を１だけ減少させている。
【００３２】
図４は、セットグループ内のセットが互いに対して連続的に見える（すなわち、セットインデックスが順次的である）一実施形態を例示しているが、セットグループのセットのインデックスが非順次的である別の実施形態が考えられる。例えば、セットグループ内のセットのインデックスは、グループの数を法としたインデックスが等しい、インデックスセットであってもよく、例えば、８グループを仮定すると、セット３、１１、１９等が同じグループ内である。
【００３３】
一実施形態において、キャッシュメモリ１３２は、セット内のウェイの異なるグループについて、異なる置換ポリシーを採用する。このことは、2014年12月14日に申請されたＰＣＴ出願第PCT/IB2014/003261号（Attorney  Docket  No.VAS.2723-PCT）の米国国内段階出願である、2015年11月12日に申請された米国特許出願第14/890,895号（Attorney  Docket  No.VAS.2723-PCT-US）に説明されるとおりであり、上記出願の各々は、その全体をすべての目的について本明細書において参照により援用される。キャッシュメモリ１３２のセットグループ内のウェイに別個にパワーを動的に提供する能力は、上記のキャッシュメモリ１３２において特に有用及び相乗的であり得る。
【００３４】
次に図５を参照すると、セットのグループのウェイの選択的パワー供給を実行する図２のキャッシュメモリ１３２の動作を例示するフローチャートが示されている。図５の実施形態は、利用トレンドとしてセットグループ内の平均ビクティムキャッシュラインエージを採用して、各セットグループについて、パワーアップされたウェイの数を減少させ又は増加させることが有益であり得るかどうかを決定する。キャッシュラインのビクティムエージは、キャッシュメモリ１３２内のエントリがキャッシュラインに対してアロケートされたときから、キャッシュラインがキャッシュメモリから追い出されるときまでの時間の尺度（measure）である。ビクティムエージは、キャッシュメモリ１３２のクロックサイクル、キャッシュメモリ１３２に対するアクセス、セットグループに対するアクセス、又は他の適切な時間単位の観点から測定されることができる。一実施形態において、図２の利用カウンタ２０４は、現在のセットグループ内のキャッシュラインのビクティムエージの記録をつけ、コントローラ２０２は、適当なイベントにおいて（例えば、ブロック５０４において）、例えば、所定の時間期間の終わり、新しいセットグループが監視されるとき（例えば、図５のフローチャートの各ループにおいて）、セットグループから追い出されたキャッシュラインの数が閾値に到達したとき、又は他の適切なイベントなどで、キャッシュラインビクティムエージの平均を計算する。
【００３５】
一般的に言えば、セットグループの平均ビクティムエージが高い場合、このことは、グループが、該グループにマッピングする現在のデータセットの部分に対して必要よりもより大きい可能性があることと、グループがより小さい数のウェイに減らされてパワーを節約する場合、より小さいグループは依然として、データセットの上記部分に対してヒットレート効率の良いよう十分に大きい可能性があることとの、指標とみなされ得る。反対に、セットグループの平均ビクティムエージが低い場合、このことは、グループが、該グループにマッピングする現在のデータセットの部分に対して小さすぎ、増加される必要があることの、指標とみなされ得る。しかしながら、セットグループの平均ビクティムエージが低く、しかしグループはすでにその最大サイズである（すなわち、すべてのウェイがパワー供給されている）場合、このことは、データセットの部分がグループに対して単に大きすぎること、及び／又は、グループに対するアクセスの性質が、より小さいグループサイズがフルサイズグループとほぼ同様のヒットレート効率であるようなものであることの、指標であり得、したがって、グループのサイズを有意に（significantly）低減させることによって、パワーが節約される可能性がある。例えば、プログラムが、大きいデータセットをストリーミングしていて、最終的に、グループからのキャッシュラインの各々の新しいアロケーションが、１回だけ使用されたグループからのキャッシュラインの追い出しを引き起こすと仮定する。このことは、小さい平均ビクティムキャッシュラインエージによって示されることになる。上記の場合、少数のウェイを有するグループは、最大数のウェイを有するグループを有するのとほぼ同様のヒットレート効率であることになる。したがって、ウェイをパワーダウンすることによりグループのウェイの数を有意に低減させることによって、パワーが節約されることができる。一実施形態において、上記特徴は、図５のブロック５１７及び５１９において捕捉される。フローはブロック５０１において始まる。
【００３６】
ブロック５０１において、コントローラ２０２は、インデックスをゼロに初期化する。上記インデックスは本明細書においてＪといわれる。フローはブロック５０２に進む。
【００３７】
ブロック５０２において、コントローラ２０２は、キャッシュメモリ１３２のすべてのセットグループのすべてのウェイにパワーを最初提供する。フローはブロック５０４に進む。
【００３８】
ブロック５０４において、コントローラ２０２は、現在のセットグループ（グループ［Ｊ］）の平均ビクティムキャッシュラインエージを監視する。フローは判断ブロック５０６に進む。
【００３９】
判断ブロック５０６において、コントローラ２０２は、ブロック５０４において監視されたセットグループの平均ビクティムキャッシュラインエージが上限閾値より大きいかどうかを決定し、該閾値は一実施形態において所定値である。そうである場合、フローはブロック５０８に進み、さもなければ、フローは判断ブロック５１５に進む。
【００４０】
ブロック５０８において、コントローラ２０２は、セットグループのパワーアップされたウェイの数を減少させる。さらに、コントローラ２０２は、グループのターゲットウェイをパワーダウンする前に、ターゲットウェイ内の有効データを有するすべてのキャッシュラインを追い出し、したがって、有効データは失われない。フローはブロック５２２に進む。
【００４１】
判断ブロック５１５において、コントローラ２０２は、ブロック５０４において監視されたセットグループの平均ビクティムキャッシュラインエージが下限閾値より大きいかどうかを決定し、該閾値は一実施形態において所定値である。そうである場合、フローは判断ブロック５１７に進み、さもなければ、フローは判断ブロック５１８に進む。
【００４２】
判断ブロック５１７において、コントローラ２０２は、セットグループのすべてのウェイが現在パワーオンされているかどうかを決定する。そうである場合、フローはブロック５１９に進み、さもなければ、フローはブロック５１８に進む。
【００４３】
ブロック５１８において、コントローラ２０２は、セットグループのパワーアップされたウェイの数を増加させる。さらに、コントローラ２０２は、グループのターゲットウェイをパワーアップした後、ターゲットウェイを無効化する。フローはブロック５２２に進む。
【００４４】
ブロック５１９において、コントローラ２０２は、セットグループのパワーアップされたウェイの数を単一のウェイに減少させる。別の実施形態において、コントローラ２０２は、セットグループのパワーアップされたウェイの数を、単一のウェイでなく少数のウェイ（例えば、２、３、又は４）に減少させる。さらに、コントローラ２０２は、グループのターゲットウェイをパワーダウンする前に、ターゲットウェイ内の有効データを有するすべてのキャッシュラインを追い出し、したがって、有効データは失われない。またさらに、コントローラ２０２がセットグループの平均ビクティムキャッシュラインエージに基づいてセットグループのパワーアップされたウェイの数の任意のサイズ変更（any  re-sizing）を実行する前、コントローラ２０２が少なくとも所定量の時間待つことを、コントローラ２０２は保証する。遅延なしに、次回上記セットグループが監視されるとき（例えば、このセットグループについてループを回ったところの次回）、平均ビクティムキャッシュラインエージが上限閾値より小さいことになり（すなわち、判断ブロック５０６において偽）、平均ビクティムキャッシュラインエージが下限閾値より小さいことになり（すなわち、判断ブロック５１５において真）、すべてのウェイがパワーオンされるわけではないことになる（すなわち、判断ブロック５１７において偽）可能性が高く、したがって、コントローラ２０２は、パワーオンされたウェイの数を増加させることになる。しかしながら、上記で説明された条件が存在する、すなわち、データセットの部分がグループに対して大きすぎる、かつ／あるいは、グループに対するアクセスの性質が、より小さいグループサイズがフルサイズグループとほぼ同様のヒットレート効率であるようなものである限り、パワーアップされたウェイの数を小さく保つことが望ましい。すなわち、上記条件が存在する限り、ウェイの数を増加させることは助けにならない。遅延は、条件が弱まる（subside）、例えばストリーミングが終わる機会を提供し得る。遅延なしで、条件が存続する間、コントローラ２０２は、すべてのウェイがパワーアップされるのと単一のウェイがパワーアップされるのとの間で絶えず往復し、すなわち、コントローラ２０２がすべてのパワーアップされたウェイを達するまで図５のループを通して毎回、（ブロック５１８を介して）パワーアップされたウェイを迅速に増加させ、それから、少数まで（ブロック５１９を介して）ダウンさせて戻る可能性があり、このことは、望ましくない。一実施形態において、コントローラ２０２は、各セットグループのフラグを含み、上記フラグはセットされる場合、セットグループの動的サイジング（dynamic  sizing）を遅延させることを示し、コントローラ２０２は、少なくとも所定量の時間の後、上記フラグをクリアする。フローはブロック５２２に進む。
【００４５】
ブロック５２２において、コントローラ２０２はインデックスＪを更新して次のセットグループを規定し、このことは好ましくは、Ｊをインクリメントすることと、Ｊがセットグループの数に到達したときにゼロへラップアラウンドすることとを含む。フローはブロック５０４に戻り、インデックスにより規定される次のセットグループの平均ビクティムキャッシュラインエージを監視する。
【００４６】
次に図６を参照すると、セットのグループのウェイの選択的パワー供給を実行する図２のキャッシュメモリの動作を例示するフローチャートが示されている。図６の実施形態は、利用トレンドとしてセットグループ内のヒットレートを採用して、各セットグループについて、パワーアップされたウェイの数を減少させ又は増加させることが有益であり得るかどうかを決定する。セットグループのヒットレートは、セットグループへのアクセス数に対するセットグループ内でのヒット数の比率である。一実施形態において、図２の利用カウンタ２０４は、現在のセットグループ内におけるヒットの数と現在のセットグループに対するアクセスの数との記録をつけ、コントローラ２０２は、適当なイベントにおいて（例えば、ブロック６０４において）、例えば、所定の時間期間の終わり、新しいセットグループが監視されるとき（図６のフローチャートの各ループにおいて）、又は他の適切なイベントなどで、ヒットレートを計算する。
【００４７】
一般的に言えば、セットグループのヒットレートが比較的低い場合、このことは、グループが、該グループにマッピングする現在のデータセットの部分に対して小さすぎ得ることと、グループがより大きい数のウェイに増やされる場合、より大きいグループはデータセットの上記部分に関してヒットレートを向上させ得ることとの、指標と見なされ得る。しかしながら、セットグループのヒットレートが非常に低く、グループがすでにその最大サイズである（すなわち、すべてのウェイがパワー供給されている）場合、このことは、データセットの部分がグループに対して単に大きすぎること、及び／又は、グループに対するアクセスの性質が、より小さいグループサイズがフルサイズグループとほぼ同様のヒットレート効率であるようなものであることの、指標であり得、したがって、グループのサイズを有意に低減させることによって、パワーが節約される可能性がある。上記で論じられたとおり、少数のウェイを有するグループが、最大数のウェイを有するグループを有するのとほぼ同様のヒットレート効率であり得る。したがって、ウェイをパワーダウンすることによりグループのウェイの数を有意に低減させることによって、パワーが節約されることができる。一実施形態において、上記特徴は、図６のブロック６１７及び６１９、及び６２１において捕捉される。フローはブロック６０１において始まる。
【００４８】
ブロック６０１において、コントローラ２０２は、インデックスをゼロに初期化する。上記インデックスは本明細書においてＪといわれる。フローはブロック６０２に進む。
【００４９】
ブロック６０２において、コントローラ２０２は、キャッシュメモリ１３２のすべてのセットグループのすべてのウェイにパワーを最初提供する。フローはブロック６０４に進む。
【００５０】
ブロック６０４において、コントローラ２０２は、現在のセットグループ（グループ［Ｊ］）のヒットレートを監視する。フローは判断ブロック６１５に進む。
【００５１】
判断ブロック６１５において、コントローラ２０２は、ブロック６０４において監視されたセットグループのヒットレートが第１の閾値より小さいかどうかを決定し、該閾値は一実施形態において所定値である。そうである場合、フローは判断ブロック６１７に進み、さもなければ、フローはブロック６２２に進む。
【００５２】
判断ブロック６１７において、コントローラ２０２は、セットグループのすべてのウェイが現在パワーオンされているかどうかを決定する。そうである場合、フローは判断ブロック６１９に進み、さもなければ、フローはブロック６１８に進む。
【００５３】
ブロック６１８において、コントローラ２０２は、セットグループのパワーアップされたウェイの数を増加させる。さらに、コントローラ２０２は、グループのターゲットウェイをパワーアップした後、ターゲットウェイを無効化する。フローはブロック６２２に進む。
【００５４】
判断ブロック６１９において、コントローラ２０２は、ブロック６０４において監視されたセットグループのヒットレートが、ブロック６１５の第１の閾値より小さい第２の閾値より小さいかどうかを決定し、該閾値は一実施形態においてさらに所定値である。そうである場合、フローはブロック６２１に進み、さもなければ、フローはブロック６２２に進む。
【００５５】
ブロック６２１において、コントローラ２０２は、セットグループのパワーアップされたウェイの数を単一のウェイに減少させる。さらに、コントローラ２０２は、グループのターゲットウェイをパワーダウンする前に、ターゲットウェイ内の有効データを有するすべてのキャッシュラインを追い出し、したがって、有効データは失われない。またさらに、上記で説明されたとおり、コントローラ２０２がセットグループの平均ビクティムキャッシュラインエージに基づいてセットグループのパワーアップされたウェイの数の任意のサイズ変更を実行する前、コントローラ２０２が少なくとも所定量の時間待つことを、コントローラ２０２は保証する。フローはブロック６２２に進む。
【００５６】
ブロック６２２において、コントローラ２０２はインデックスＪを更新して次のセットグループを規定し、このことは好ましくは、Ｊをインクリメントすることと、Ｊがセットグループの数に到達したときにゼロへラップアラウンドすることとを含む。フローはブロック６０４に戻り、インデックスにより規定される次のセットグループのヒットレートを監視する。
【００５７】
次に図７を参照すると、セットのグループのウェイの選択的パワー供給を実行する図２のキャッシュメモリの動作を例示するフローチャートが示されている。図７の実施形態は、利用トレンドとしてセットグループの、プリフェッチされたが使用されていない（prefetched-but-not-used）キャッシュラインの数（図７においてＮＵＭ＿ＰＢＮＵといわれる）を採用して、各セットグループについて、パワーアップされたウェイの数を減少させ又は増加させることが有益であり得るかどうかを決定する。セットグループのＮＵＭ＿ＰＢＮＵは、セットグループへのプリフェッチのためにアロケートされたがその後少しも使用されなかった、セットグループ内のキャッシュラインの数である。一実施形態において、コア１０２の各々がデータプリフェッチ器（prefetcher）を含み、データプリフェッチ器は、コア１０２上で実行しているプログラムによって及び／又はキャッシュラインをプリフェッチするようコア１０２に命令するプログラムに含まれるプリフェッチ命令によって行われるメモリアクセスのパターンに基づいて、キャッシュメモリ１３２へキャッシュラインをプリフェッチする。
【００５８】
一実施形態において、コントローラ２０２は、各セットグループのためのカウンタ２０４及びビットを含む。各ビットは、グループのそれぞれの記憶エントリに対応する。ビットは、エントリがプリフェッチによりアロケートされる（例えば、プロセッサ１００のデータ又は命令プリフェッチ器によりアロケートされる）ときにセットされ、エントリが需要（demand）ロード／ストアにより使用されるときにクリアされる。キャッシュラインがエントリから追い出されるとき、ビットがセットされている場合、このことは、プリフェッチされたキャッシュラインのアロケーションが無駄であったことを示す。なぜならば、プリフェッチされたキャッシュラインが使用されなかったからであり、ゆえに、コントローラ２０２は、グループカウンタ２０４をインクリメントする。カウンタ２０４が、所定の閾値に到達する場合、このことは、パワーを節約するようにウェイの数が低減されるべきであると示す利用トレンドであり得る。一実施形態において、ビットは、キャッシュメモリ１３２のタグアレイ内に保持される。一実施形態において、コントローラ２０２は、グループの各セットについてカウンタ２０４を含み、コントローラ２０２は、グループの全セットのカウンタ２０４が（例えば、ブロック７０６において）閾値を超えるとコントローラ２０２が決定する場合のみ、パワー供給されるウェイの数を（例えば、ブロック７０８において）低減させる。一実施形態において、図２の利用カウンタ２０４は、現在のセットグループのＮＵＭ＿ＰＢＮＵの記録をつけ、コントローラ２０２は、適当なイベントにおいて（例えば、ブロック７０４において）、例えば、所定の時間期間の終わり、新しいセットグループが監視されるとき（例えば、図７のフローチャートの各ループにおいて）、又は他の適切なイベントなどで、ＮＵＭ＿ＰＢＮＵを調べる。
【００５９】
ブロック７０１において、コントローラ２０２は、インデックスをゼロに初期化する。上記インデックスは本明細書においてＪといわれる。フローはブロック７０２に進む。
【００６０】
ブロック７０２において、コントローラ２０２は、キャッシュメモリ１３２のすべてのセットグループのすべてのウェイにパワーを最初提供する。フローはブロック７０４に進む。
【００６１】
ブロック７０４において、コントローラ２０２は、現在のセットグループ（グループ［Ｊ］）のＮＵＭ＿ＰＢＮＵを監視する。フローは判断ブロック７０６に進む。
【００６２】
判断ブロック７０６において、コントローラ２０２は、ブロック７０４において監視されたセットグループのＮＵＭ＿ＰＢＮＵが上限閾値より大きいかどうかを決定し、該閾値は一実施形態において所定値である。そうである場合、フローはブロック７０８に進み、さもなければ、フローは判断ブロック７１６に進む。
【００６３】
ブロック７０８において、コントローラ２０２は、セットグループのパワーアップされたウェイの数を減少させる。さらに、コントローラ２０２は、グループのターゲットウェイをパワーダウンする前に、ターゲットウェイ内の有効データを有するすべてのキャッシュラインを追い出し、したがって、有効データは失われない。フローはブロック７２２に進む。
【００６４】
判断ブロック７１６において、コントローラ２０２は、ブロック７０４において監視されたセットグループのＮＵＭ＿ＰＢＮＵが下限閾値より小さいかどうかを決定し、該閾値は一実施形態において、上記上限閾値より小さい所定値であり、ヒステリシスを提供する。そうである場合、フローはブロック７１８に進み、さもなければ、フローはブロック７２２に進む。
【００６５】
ブロック７１８において、コントローラ２０２は、セットグループのパワーアップされたウェイの数を増加させる。さらに、コントローラ２０２は、グループのターゲットウェイをパワーアップした後、ターゲットウェイを無効化する。フローはブロック７２２に進む。
【００６６】
ブロック７２２において、コントローラ２０２はインデックスＪを更新して次のセットグループを規定し、このことは好ましくは、Ｊをインクリメントすることと、Ｊがセットグループの数に到達したときにゼロへラップアラウンドすることとを含む。フローはブロック７０４に戻り、インデックスにより規定される次のセットグループのＮＵＭ＿ＰＢＮＵを監視する。
【００６７】
次に図８を参照すると、セットのグループのウェイの選択的パワー供給を実行する図２のキャッシュメモリの動作を例示するフローチャートが示されている。図６の実施形態と同様に、図８の実施形態もまた、利用トレンドとしてセットグループのヒットレートを採用して、各セットグループについて、パワーアップされたウェイの数を減少させ又は増加させることが有益であり得るかどうかを決定する。しかしながら、図８の実施形態は、ヒットレートと共に、利用トレンドとしてセットグループに対するアクセス頻度をさらに採用する。セットグループのアクセス頻度は、セットグループに対するアクセスのレートの尺度である。一実施形態において、コントローラ２０２は、現在のセットグループに対するアクセスの数を使用して、適当なイベントにおいて（例えば、ブロック８０４において）、例えば、所定の時間期間の終わり、新しいセットグループが監視されるとき（例えば、図８のフローチャートの各ループにおいて）、又は他の適切なイベントなどで、ヒットレートだけでなくさらにアクセス頻度を計算する。
【００６８】
一般的に言えば、上述されたとおり、セットグループのヒットレートが比較的低い場合、このことは典型的に、セットグループのパワーアップされたウェイの数を増加させる必要を示すことになる（上記でまた論じられたとおり、すべてのウェイがすでにパワーアップされていない限り）。しかしながら、セットグループのアクセス頻度が非常に低い場合、そのようにすることに価値がない可能性がある。なぜならば、アクセスがまれであるので、より小さいセットグループのパワー節約が、潜在的に増加されるキャッシュヒットレートの比較的小さいパフォーマンス恩恵より勝る可能性があるからである。またさらに、アクセス頻度が非常に低く、ヒットレートが高い（比較的大きいセットグループを暗に示す）場合、セットグループのパワーアップされたウェイの数を低減させることが有益であり得る。なぜならば、より小さいセットグループのパワー節約が、高いキャッシュヒットレートの比較的小さいパフォーマンス恩恵より勝る可能性があるからである。フローはブロック８０１において始まる。
【００６９】
ブロック８０１において、コントローラ２０２は、インデックスをゼロに初期化する。上記インデックスは本明細書においてＪといわれる。フローはブロック８０２に進む。
【００７０】
ブロック８０２において、コントローラ２０２は、キャッシュメモリ１３２のすべてのセットグループのすべてのウェイにパワーを最初提供する。フローはブロック８０４に進む。
【００７１】
ブロック８０４において、コントローラ２０２は、現在のセットグループ（グループ［Ｊ］）のヒットレート及びアクセス頻度を監視する。フローは判断ブロック８０６に進む。
【００７２】
判断ブロック８０６において、コントローラ２０２は、ブロック８０４において監視されたセットグループのヒットレートが上限ヒットレート閾値より大きいかどうかを決定し、該閾値は一実施形態において所定値である。そうである場合、フローは判断ブロック８０７に進み、さもなければ、フローは判断ブロック８１６に進む。
【００７３】
判断ブロック８０７において、コントローラ２０２は、ブロック８０４において監視されたセットグループのアクセス頻度が下限アクセス頻度閾値より小さいかどうかを決定し、該閾値は一実施形態において所定値である。そうである場合、フローはブロック８０８に進み、さもなければ、フローはブロック８２２に進む。
【００７４】
ブロック８０８において、コントローラ２０２は、セットグループのパワーアップされたウェイの数を減少させる。さらに、コントローラ２０２は、グループのターゲットウェイをパワーダウンする前に、ターゲットウェイ内の有効データを有するすべてのキャッシュラインを追い出し、したがって、有効データは失われない。フローはブロック８２２に進む。
【００７５】
判断ブロック８１６において、コントローラ２０２は、ブロック８０４において監視されたセットグループのヒットレートが下限ヒットレート閾値より小さいかどうかを決定し、該閾値は一実施形態において所定値である。そうである場合、フローは判断ブロック８１７に進み、さもなければ、フローはブロック８２２に進む。
【００７６】
判断ブロック８１７において、コントローラ２０２は、ブロック８０４において監視されたセットグループのアクセス頻度が上限アクセス頻度閾値より大きいかどうかを決定し、該閾値は一実施形態において所定値である。そうである場合、フローは判断ブロック８１９に進み、さもなければ、フローはブロック８２２に進む。
【００７７】
判断ブロック８１９において、コントローラ２０２は、セットグループのすべてのウェイが現在パワーオンされているかどうかを決定する。そうである場合、フローはブロック８２１に進み、さもなければ、フローはブロック８２０に進む。
【００７８】
ブロック８２０において、コントローラ２０２は、セットグループのパワーアップされたウェイの数を増加させる。さらに、コントローラ２０２は、グループのターゲットウェイをパワーアップした後、ターゲットウェイを無効化する。フローはブロック８２２に進む。
【００７９】
ブロック８２１において、コントローラ２０２は、セットグループのパワーアップされたウェイの数を単一のウェイに減少させる。さらに、コントローラ２０２は、グループのターゲットウェイをパワーダウンする前に、ターゲットウェイ内の有効データを有するすべてのキャッシュラインを追い出し、したがって、有効データは失われない。またさらに、上記で説明されたとおり、コントローラ２０２がセットグループの平均ビクティムキャッシュラインエージに基づいてセットグループのパワーアップされたウェイの数の任意のサイズ変更を実行する前、コントローラ２０２が少なくとも所定量の時間待つことを、コントローラ２０２は保証する。フローはブロック８２２に進む。
【００８０】
ブロック８２２において、コントローラ２０２はインデックスＪを更新して次のセットグループを規定し、このことは好ましくは、Ｊをインクリメントすることと、Ｊがセットグループの数に到達したときにゼロへラップアラウンドすることとを含む。フローはブロック８０４に戻り、インデックスにより規定される次のセットグループのヒットレートを監視する。
【００８１】
セットグループの粒度が変動する様々な実施形態が考えられる。例えば、図２の実施形態において、セットは８個の相互排他的グループにグループ化され、各セットグループは１６個のウェイを有し、これにより最大で１２８個の別個にパワー供給可能なセットグループウェイ（set-group-ways）を可能にしている。しかしながら、異なる数の相互排他的グループを有してより多くの又はより少ない別個にパワー供給可能なウェイを可能にする他の実施形態が考えられる。一実施形態において、Ｌ２キャッシュ１２４内の各エントリがセットグループウェイであり得るように、各セットがその独自の相互排他的グループであり得る。グループの数が大きくなれば大きくなるほど、解析されるプログラムの必要に向けてＬ２キャッシュ１２４を合わせるようにＬ２キャッシュ１２４がよりきめ細かく計上され（budgeted）、一方、グループの数がより少なければ少ないほど、セットグループウェイ特性を説明するのにより少ない制御ビットが必要とされることが留意される。一実施形態において、グループ内のセットの数は３２であるが、グループ内のセットの数がより多く又はより少ない他の実施形態が考えられる。
【００８２】
セットのグループ内のウェイが選択的にパワー供給されるキャッシュメモリが、複数のプロセッサコアにより共有されるキャッシュメモリである実施形態が説明されたが、キャッシュメモリが個々のコアに対して専用にされ又はプロセッサの全コアよりもより少ないコアによって共有される他の実施形態が考えられる。さらに、セットのグループ内のウェイが選択的にパワー供給されるキャッシュメモリが、プロセッサのキャッシュメモリ階層内の特定レベル（例えば、レベル３）におけるキャッシュメモリである実施形態が説明されたが、キャッシュメモリが異なるレベル（例えば、レベル１、レベル２）にある他の実施形態が考えられる。さらに、所定の閾値を採用する様々な実施形態が説明されている。一実施形態において、所定値のうち１つ以上が、例えば、オペレーティングソフトウェア又は他のシステムソフトウェアによって、ユーザによりプログラム可能である。一実施形態において、所定閾値のうち１つ以上は、例えば、ハードワイヤードロジック、飛ばすことが可能（blowable）（すなわち、更新可能）であり得るヒューズ（fuses）、及び／又はパッチ可能であり得るプロセッサ１００のマイクロコードにおいて、コントローラ２０２へと製作される。
【００８３】
本発明の様々な実施形態が本明細書において説明されたが、これらは限定でなく例として提示されたことが理解されるべきである。上記実施形態において、形式及び詳細における様々な変更が本発明の範囲から逸脱することなくなされ得ることが、関連コンピュータ分野における当業者には明らかであろう。例えば、ソフトウェアが、例えば、本明細書に説明される装置及び方法の機能、製作、モデリング、シミュレーション、説明、及び／又はテストを可能にすることができる。このことは、一般的なプログラミング言語（例えば、Ｃ、Ｃ＋＋）、ハードウェア記述言語（ＨＤＬ）、例えばＶｅｒｉｌｏｇ  ＨＤＬ、ＶＨＤＬなど、又は他の利用可能なプログラムの使用を通して遂行されることができる。上記ソフトウェアは、任意の既知のコンピュータ使用可能媒体内に配置されることができ、例えば、磁気テープ、半導体、磁気ディスク、又は光ディスク（例えば、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）、ネットワーク、有線、無線又は他の通信媒体などである。本明細書に説明される装置及び方法の実施形態は、半導体知的財産コア、例えば、処理コア（例えば、ＨＤＬ内に具現化され又は規定される）などに含まれ、集積回路の生産においてハードウェアに変換されてもよい。さらに、本明細書に説明される装置及び方法は、ハードウェアとソフトウェアとの組み合わせとして具現化されてもよい。ゆえに、本発明は、本明細書に説明される例示的な実施形態のうち任意のものよって制限されるべきでないが、下記の請求項及びその均等物に従ってのみ定義されるべきである。具体的に、本発明は、汎用目的コンピュータにおいて使用され得るプロセッサデバイス内に実装されてもよい。最後に、当業者が開示された概念及び具体的実施形態を他の構造を設計し又は修正するための基礎として容易に使用して、別記の請求項により定義されるとおりの本発明の範囲から逸脱することなく本発明の同じ目的を実現することができることを、当業者は十分理解するべきである。
【図１】
0006267314.tif 000002
【図２】
0006267314.tif 000003
【図３】
0006267314.tif 000004
【図４】
0006267314.tif 000005
【図５】
0006267314.tif 000006
【図６】
0006267314.tif 000007
【図７】
0006267314.tif 000008
【図８】
0006267314.tif 000009