(57)【要約】キャッシュ利用を管理するシステム（１００）は、プロセッサコア（１１１〜１１４）と、１つ以上の複数の低レベルキャッシュ（１３１〜１３４）と、高レベルキャッシュ（１４０）と、を含む。システムは、高レベルキャッシュの有効化に応じて、低レベルキャッシュからエビクトされた低レベルキャッシュビクティムをカウントする（１１０）。システムは、低レベルキャッシュビクティムのカウントが閾値以下の間、低レベルキャッシュビクティムを高レベルキャッシュに記憶せずに、低レベルキャッシュビクティムの各々をシステムメモリ（１１６）に転送する。低レベルキャッシュビクティムのカウントが閾値より大きい場合、システムは、低レベルキャッシュビクティムの各々を高レベルキャッシュに書き込む。このようにして、低レベルキャッシュビクティムの閾値に達する前に高レベルキャッシュが無効にされる場合、高レベルキャッシュが空のままであることから、フラッシュすることなく無効にすることができる。【選択図】図２
2019530112.tif 000002
【特許請求の範囲】
【請求項１】
処理システム（１００）におけるキャッシュ利用を管理する方法であって、
高レベルキャッシュ（１４０）を有効化したことに応じて、１つ以上の低レベルキャッシュ（１３１〜１３４）からエビクトされた低レベルキャッシュビクティム（２５０）をカウントすることと、
前記低レベルキャッシュビクティムのカウント（１１０）が閾値以下の間、前記低レベルキャッシュビクティムを前記高レベルキャッシュに記憶せずに、前記低レベルキャッシュビクティムの各々をメモリ（１１６）に記憶することと、
前記低レベルキャッシュビクティムのカウントが閾値より大きい場合、前記閾値を超えた後にエビクトされた低レベルキャッシュビクティムの各々を前記高レベルキャッシュに記憶することと、を含む、
方法。
【請求項２】
前記閾値は、前記高レベルキャッシュの複数回の有効化に亘って静的である、
請求項１の方法。
【請求項３】
前記１つ以上の低レベルキャッシュのキャッシュビクティムカウント履歴、前記高レベルキャッシュの有効ビット履歴、前記閾値に対する上限制約、前記閾値に対する下限制約、前記高レベルキャッシュの電力使用量、又は、前記高レベルキャッシュのパワーダウン時間のうち少なくとも１つに少なくとも部分的に基づいて、前記閾値を動的に決定することをさらに含む、
請求項1の方法。
【請求項４】
キャッシュビクティムの数を前記１つ以上の低レベルキャッシュのアクティビティ期間のセットの各期間に関連付けるキャッシュビクティム履歴を記憶することと、
前記キャッシュビクティム履歴に少なくとも部分的に基づいて前記閾値を決定することと、をさらに含む、
請求項１の方法。
【請求項５】
有効ビットを用いて、前記高レベルキャッシュの占有領域を追跡することと、
有効ビットの使用量を前記高レベルキャッシュのアクティビティ期間と関連付ける有効ビット履歴を記憶することと、
前記有効ビット履歴に少なくとも部分的に基づいて前記閾値を決定することと、をさらに含む、
請求項１の方法。
【請求項６】
前記閾値を超えた後にエビクトされた低レベルキャッシュビクティムの各々を前記高レベルキャッシュに記憶することは、
低レベルキャッシュビクティムを記憶する前記高レベルキャッシュの領域を、ウェイ制約に基づいて選択することを含む、
請求項１の方法。
【請求項７】
前記高レベルキャッシュが無効にされるという指示に応じて、前記低レベルキャッシュビクティムの前記カウントが前記閾値を超えているか否かに少なくとも部分的に基づいて、前記高レベルキャッシュのパワーダウン手順を選択することをさらに含む、
請求項１の方法。
【請求項８】
パワーダウン手順を選択することは、
前記低レベルキャッシュビクティムの前記カウントが前記閾値を超えていない場合に、前記高レベルキャッシュをフラッシュせずに前記高レベルキャッシュを無効にするパワーダウン手順を選択することと、
前記低レベルキャッシュビクティムの前記カウントが前記閾値を超えた場合に、前記高レベルキャッシュをフラッシュして前記高レベルキャッシュを無効にするパワーダウン手順を選択することと、を含む、
請求項７の方法。
【請求項９】
プロセッサコア（１１１〜１１４）と、
前記プロセッサコアによってアクセス可能な１つ以上の低レベルキャッシュ（１３１〜１３４）と、
前記プロセッサコア及び前記１つ以上の低レベルキャッシュによってアクセス可能な高レベルキャッシュ（１４０）と、
前記１つ以上の低レベルキャッシュ及び前記高レベルキャッシュにアクセスするコントローラ（１４２）と、を備え、
前記コントローラは、
前記高レベルキャッシュを有効化したことに応じて、前記１つ以上の低レベルキャッシュからエビクトされた低レベルキャッシュビクティムをカウント（１１０）し、
前記低レベルキャッシュビクティムのカウントが閾値以下の間、前記低レベルキャッシュビクティムを前記高レベルキャッシュに記憶せずに、前記低レベルキャッシュビクティムの各々をシステムメモリ（１１６）に記憶し、
前記低レベルキャッシュビクティムのカウントが閾値より大きい場合、前記閾値を超えた後にエビクトされた低レベルキャッシュビクティムの各々を前記高レベルキャッシュに記憶する、
システム（１００）。
【請求項１０】
前記コントローラは、前記１つ以上の低レベルキャッシュのキャッシュビクティムカウント履歴、前記１つ以上の低レベルキャッシュの有効ビット履歴、前記閾値に対する上限制約、前記閾値に対する下限制約、前記高レベルキャッシュの電力使用量、又は、前記高レベルキャッシュのパワーダウン時間のうち少なくとも１つに少なくとも部分的に基づいて、前記閾値を動的に決定する、
請求項９のシステム。
【請求項１１】
前記コントローラは、
キャッシュビクティムの数を前記１つ以上の低レベルキャッシュのアクティビティ期間のセットの各期間に関連付けるキャッシュビクティム履歴を記憶し、
前記キャッシュビクティム履歴に少なくとも部分的に基づいて前記閾値を決定する、
請求項９のシステム。
【請求項１２】
前記コントローラは、
前記高レベルキャッシュのタグアレイの有効ビットを用いて、前記高レベルキャッシュの占有領域を追跡する、
請求項９のシステム。
【請求項１３】
前記コントローラは、
前記有効ビットの使用量を前記高レベルキャッシュのアクティビティ期間と関連付ける有効ビット履歴を記憶し、
前記有効ビット履歴に少なくとも部分的に基づいて前記閾値を決定する、
請求項１２のシステム。
【請求項１４】
前記コントローラは、
前記低レベルキャッシュビクティムの前記カウントが前記閾値を超えていない場合、前記高レベルキャッシュをフラッシュせずに前記高レベルキャッシュをパワーダウンする、
請求項９のシステム。
【請求項１５】
前記コントローラは、
前記カウントが前記閾値以下の間、低レベルビクティムを記憶する前記高レベルキャッシュの領域をウェイ制約に基づいて選択する、
請求項９のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
処理システムは、複数レベルのキャッシュを有するメモリサブシステムを利用することが多い。使用されていない場合にこのようなキャッシュを無効にする（すなわち、「パワーダウン」）と、有利なことが多い。キャッシュを無効にするには、キャッシュをフラッシュし、有効なラインをシステムメモリに送信する。しかしながら、メモリに送信する有効なキャッシュラインを高レベルキャッシュで検索している間、電力が消費される。いくつかの従来のメモリサブシステムは、キャッシュの外部の追跡ハードウェアを利用して、有効なビットのセットを追跡して、有効なラインの検索を高速化する。有効なビットのセットは、「ウェイ有効」又は「セクタ有効」ビットと呼ばれることがあり、キャッシュの占有された領域、すなわち、キャッシュ内の有効なキャッシュラインが配置された場所をおおよそ示している。有効なラインがキャッシュ内に広く拡散されていない場合、このような有効なビットの使用によってフラッシュを加速することができる。それにもかかわらず、キャッシュの無効化に備えた有効なラインの検索及びキャッシュのフラッシュ処理は、かなりの量の電力又はかなりの数のクロックサイクルを使用する。
【０００２】
添付の図面を参照することによって本開示をより良く理解することができ、その多くの特徴及び利点が当業者に明らかとなるであろう。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、遅延キャッシング技術を利用したメモリ管理のための例示的なシステムを示す図である。
【図２】いくつかの実施形態による、図１のシステムにおける例示的な遅延キャッシング処理を示す図である。
【図３】いくつかの実施形態による、キャッシュ有効化後の遅延キャッシングに基づいてキャッシュ利用を管理する例示的な方法を示すフロー図である。
【図４】いくつかの実施形態による、メモリ管理のための遅延キャッシング処理に使用される閾値パラメータをトレーニングする例示的な方法を示すフロー図である。
【図５】いくつかの実施形態による、遅延キャッシングの対象となるキャッシュをフラッシュする例示的な方法を示すフロー図である。
【図６】いくつかの実施形態による、図１のシステムにおける遅延キャッシング処理の別の例を示す図である。
【図７】いくつかの実施形態による、フラッシュテーブルを利用する遅延キャッシング処理に基づくメモリ管理の例示的な方法を示すフロー図である。
【図８】いくつかの実施形態による、フラッシュテーブルを使用してキャッシュをフラッシュする例示的な方法を示すフロー図である。
【発明を実施するための形態】
【０００４】
異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【０００５】
図１〜図８は、キャッシュが後に無効にされる場合にキャッシュをフラッシュする際に発生する電力及びサイクルコストを低減するように、キャッシュ有効化後の遅延キャッシング処理を利用したキャッシュ管理の例示的なシステム及び方法を示す図である。例示的な実施形態では、システムは、１つ以上のプロセッサコアと、少なくとも低レベルキャッシュ及び高レベルキャッシュを含むメモリサブシステムと、メモリコントローラと、システムメモリと、を含む。高レベルキャッシュは、１つ以上の関連するプロセッサコアでのアクティビティに応じて有効化される（すなわち、低電力状態から高電力状態に変更される）。システムは、高レベルキャッシュの有効化に応じて、低レベルキャッシュから転送又は削除されたキャッシュラインをカウントする。このような転送又は削除されたキャッシュラインは、本明細書において「低レベルキャッシュビクティム」と呼ばれる。低レベルキャッシュビクティムのカウントが指定された閾値を超えていない間、低レベルキャッシュビクティムは、システムメモリに送られ、例えば高レベルキャッシュには書き込まれない。カウントが閾値に達すると、後続の低レベルキャッシュビクティムは、高レベルキャッシュに記憶されるのを許可される。したがって、高レベルキャッシュへの低レベルキャッシュビクティムのキャッシングは、低レベルキャッシュビクティムの閾値に達するまで遅延される。このように、高レベルキャッシュは、有効化後の長い間、空のままであり、したがって、高レベルキャッシュが有効化直後に無効にされた場合、高レベルキャッシュは、有効なキャッシュラインを検索して高レベルキャッシュからシステムメモリに転送する時間及びエネルギーを費やすことなく、より容易に無効状態に移行される。
【０００６】
代替の実施形態においては、システムは、高レベルキャッシュが有効になると、高レベルキャッシュの有効化後に生じた低レベルキャッシュビクティムをカウントする。カウントが閾値を超えていない間、低レベルキャッシュビクティムは、高レベルキャッシュに記憶され、キャッシュレベルビクティムを記憶する高レベルキャッシュのキャッシュラインアドレス又は他の場所のリスト（このリストは、本明細書において「フラッシュテーブル」と呼ばれる）がシステムに記憶される。オプションで、メモリコントローラは、カウントが閾値を超えたか否かを示すインジケータをさらに記憶する。高レベルキャッシュが無効にされ、カウントが閾値を超えていない場合、システムは、無効化手順を実施する。無効化手順は、フラッシュテーブルにアクセスして、フラッシュテーブルに記憶された特定のキャッシュラインアドレスに関連する高レベルキャッシュのキャッシュラインをフラッシュする。或いは、高レベルキャッシュが無効にされるときにカウントが閾値を超えている場合、メモリは、異なる無効化手順に従って無効にされる。異なる無効化手順は、例えば、有効なビットを追跡することと、キャッシュビクティムの記憶に使用された又はキャッシュビクティムに占有されたウェイ又は他の領域を識別することと、低レベルキャッシュビクティムの記憶に利用された高レベルキャッシュの識別されたウェイをフラッシュすることと、高レベルキャッシュを無効にすることと、に基づく手順である。したがって、短期間の高電力状態の後に低電力状態に移行する前に、有効なキャッシュラインをより容易に識別及び転送することができ、電力状態の移行に関連する時間及び電力消費を低減することができる。
【０００７】
図１は、少なくともいくつかの実施形態による処理システム１００を示す図である。図示した例では、処理システム１００は、コンピュータ複合体１０２と、キャッシュ階層１０４と、メモリコントローラ１０６と、サウスブリッジ１０８と、を含む。コンピュータ複合体１０２は、複数のプロセッサコア（例えば、４つのプロセッサコア１１１，１１２，１１３，１１４等）を含む。プロセッサコアは、例えば、中央処理装置（ＣＰＵ）コア、グラフィックス処理装置（ＧＰＵ）コア、デジタル信号プロセッサ（ＤＳＰ）コア又はこれらの組み合わせを含む。コンピュータ複合体１０２のプロセッサコアの数は、４より少なくてもよいし、多くてもよいことを理解されたい。
【０００８】
メモリコントローラ１０６は、キャッシュ階層１０４とシステムメモリ１１６との間のインタフェースとして動作する。したがって、キャッシュ階層１０４にキャッシュされるデータは、通常、キャッシュラインと呼ばれるデータのブロックとして操作され、システムメモリ１１６の物理アドレスを用いてアドレス指定されるか、そうでなければメモリ階層内に配置される。キャッシュラインは、キャッシュ階層１０４からのメモリ要求に応じて、メモリコントローラ１０６によってシステムメモリ１１６からアクセスされる。同様に、変更されたデータを含むキャッシュラインがキャッシュ階層１０４からエビクトされ、これにより、システムメモリ１１６内で更新する必要がある場合、メモリコントローラ１０６は、このライトバック処理を管理する。サウスブリッジ１０８は、キャッシュ階層１０４と、メモリコントローラ１０６と、処理システム１００の１つ以上の周辺機器１１８（例えば、ネットワークインタフェース、キーボード、マウス、ディスプレイ及び他の入力／出力デバイス等）と、の間のインタフェースとして動作する。
【０００９】
キャッシュ階層１０４は、２つ以上のレベルのキャッシュを含む。図示した例では、キャッシュ階層１０４は、３つのキャッシュレベル（すなわち、レベル１（Ｌ１）、レベル２（Ｌ２）及びレベル３（Ｌ３））を含む。Ｌ１の場合、コア複合体１０２は、小さいプライベートキャッシュを処理コア毎に実装し、これらは、プロセッサコア１１１〜１１４のうち対応するコアに関連するＬ１キャッシュ１２１，１２２，１２３，１２４として示されている。Ｌ２の場合、コア複合体１０２は、より大きいプライベートキャッシュをプロセッサ毎に実装し、これらは、プロセッサコア１１１〜１１４にそれぞれ対応するＬ２キャッシュ１３１，１３２，１３３，１３４として示されている。Ｌ２キャッシュ１３１〜１３４の各々は、対応するプロセッサコアに対してプライベートであるが、キャッシュ階層１０４は、Ｌ２キャッシュ１３１〜１３４間のコヒーレンシを維持するように動作する。いくつかの実施形態では、Ｌ２キャッシュ１３１〜１３４は、例えば、ダイレクトマップキャッシュ又はｎウェイセットアソシアティブキャッシュを含む。
【００１０】
Ｌ３キャッシングレベルの場合、キャッシュ階層１０４は、コンピュータ複合体１０２のプロセッサコアによって共有され、これにより少なくともＬ２キャッシュ１３１〜１３４によって共有されるＬ３キャッシュ１４０を実装する。Ｌ３キャッシュ１４０は、Ｌ３コントローラ１４２と、複数のインデックス及び複数の対応するウェイを含むＬ３データアレイと、を実装しており、各ウェイは、対応するインデックスの対応するキャッシュラインを記憶し、Ｌ３タグアレイは、各インデックス／ウェイに関連するタグ情報を記憶する。Ｌ３データアレイ及びＬ３タグアレイは、本明細書ではまとめて示されており、Ｌ３データ／タグアレイ１４４と呼ばれる。以下の目的のために、Ｌ３キャッシュ１４０は、高レベルキャッシュとみなされ、Ｌ１キャッシュ１２１〜１２４及びＬ２キャッシュ１３１〜１３４は、（Ｌ３キャッシュ１４０と比較して）低レベルキャッシュとみなされる。
【００１１】
以下により詳細に説明するように、例えばＬ３キャッシュ１４０等の高レベルキャッシュが、１つ以上の関連するプロセッサコア１１１〜１１４でのアクティビティに応じて有効化されると（すなわち、低電力状態から高電力状態に変換されると）、カウンタ１１０は、Ｌ３キャッシュ１４０の有効化後に１つ以上の低レベルキャッシュからエビクトされたキャッシュライン（すなわち、「低レベルキャッシュビクティム」）のカウントを開始する。例えば、カウントは、Ｌ１キャッシュ１２１〜１２４又はＬ２キャッシュ１３１〜１３４から除去されたＬ２キャッシュビクティムのカウント、又は、Ｌ１及びＬ２キャッシュビクティムのカウントを含む。カウンタ１１０は、例えば、Ｌ３キャッシュ１４０内（例えば、図１に示すように、Ｌ３コントローラ１４２内）、又は、Ｌ３キャッシュ１４０の外部のハードウェア（例えば、メモリコントローラ１０６）に実装されてもよい。
【００１２】
いくつかの実施形態では、低レベルキャッシュビクティムのカウントが閾値を超えない間、キャッシュ階層１０４は、低レベルキャッシュビクティムがＬ３キャッシュ１４０にキャッシュされるのを抑制し、これにより、各低レベルキャッシュビクティムは、代わりに、例えばＬ３コントローラ１４２を用いてシステムメモリ１１６に転送される。しかしながら、低レベルキャッシュビクティムのカウントがこの閾値以上になると、キャッシュ階層１０４は、後続の低レベルキャッシュビクティムがＬ３キャッシュ１４０にキャッシュされるのを可能にする。したがって、このアプローチにおいては、Ｌ３キャッシュ１４０は、低レベルキャッシュから生じた低レベルキャッシュビクティムの第１閾値数の間、「空」（すなわち、有効なキャッシュラインが無い）のままである。したがって、閾値数の低レベルキャッシュビクティムが低レベルキャッシュからエビクトされる前にＬ３キャッシュ１４０が再度無効にされる場合、Ｌ３キャッシュ１４０をフラッシュする必要なしにＬ３キャッシュ１４０を無効にすることができる。
【００１３】
説明のために、図２に示す特定の例を参照すると、低レベルキャッシュビクティム２５０は、Ｌ３キャッシュ１４０の有効化後に、低レベルキャッシュ（例えば、Ｌ２キャッシュ１３１〜１３４）からエビクトされる。図示するように、Ｌ３キャッシュ１４０は、低レベルキャッシュのセット（例えば、Ｌ２キャッシュ１３１〜１３４）によって共有されている。したがって、場合によっては、この低レベルキャッシュビクティム２５０のセットは、共有された高レベルキャッシュに関連する低レベルキャッシュの各々からの累積した低レベルキャッシュビクティムのセットである。或いは、低レベルキャッシュビクティム２５０のセットは、１つの低レベルキャッシュによって生成され、専用の高レベルキャッシュに提供される。図示するように、Ｌ３キャッシュ１４０の有効化後に、閾値数「Ｎ」以下の数の低レベルキャッシュビクティム２５０の最初のサブセット２５２は、Ｌ３キャッシュ１４０にキャッシュされることなくシステムメモリ１１６に送信され、図示するサブセット２５４の低レベルキャッシュビクティム２５０等のように、この閾値数Ｎの後の後続の低レベルキャッシュビクティム２５０は、Ｌ３キャッシュ１４０にキャッシングされるのを許可される。
【００１４】
関連するプロセッサコアがパワーゲーティング状態である間、高レベルキャッシュ（例えば、Ｌ３キャッシュ）が無効にされ、１つ以上の関連するプロセッサコアがアクティブである場合に有効にされるシステムでは、高レベルキャッシュは、キャッシュが空（すなわち、有効なキャッシュラインを含まない）の場合に、より速く無効にされ得る。プロセッサコア及び関連する高レベルキャッシュが頻繁に起動及び停止するシステムでは、本明細書で説明するように、短期間のアクティビティ中に高レベルキャッシュをバイパスすることによって、高レベルキャッシュの無効化に関連する電力消費を低減し、時間を短縮することができる。したがって、図２に示す例では、Ｎ個の低レベルキャッシュビクティム２５０が生じる前にＬ３キャッシュ１４０の無効化が行われると、Ｌ３キャッシュ１４０が空であることから、最初にＬ３キャッシュ１４０の有効なキャッシュラインをフラッシュする必要なく無効化する準備ができる。これにより、Ｌ３キャッシュ１４０を無効にするときに消費される電力を低減する。
【００１５】
図３は、いくつかの実施形態による、高レベルキャッシュの有効化後に遅延キャッシングを実施する方法３００を示す図である。方法３００は、ブロック３０２に示すように、高レベルキャッシュ（例えば、図１のＬ３キャッシュ１４０）の有効化によって開始する。一例では、高レベルキャッシュは、関連するプロセッサコア又は関連する低レベルキャッシュでのアクティビティに応じて有効化される。カウンタ１１０は、高レベルキャッシュの有効化に応じて、ブロック３０４に示すように、低レベルキャッシュ（例えば、Ｌ２キャッシュ１３１〜１３４）から生じた低レベルキャッシュビクティムのカウントを開始する。
【００１６】
（ブロック３０６に示すように）低レベルキャッシュビクティムが低レベルキャッシュから転送されると、Ｌ３コントローラ１４２は、ブロック３０８に示すように、低レベルキャッシュビクティムが生じる毎に現在のカウントを１つずつインクリメントし（カウント＝カウント＋１）、次に、ブロック３１０に示すように、低レベルキャッシュビクティムの現在のカウントを閾値と比較する。現在のカウントが閾値を超えない場合、高レベルキャッシュへのアクセスが許可されないため、低レベルキャッシュビクティムは、ブロック３１２に示すように、高レベルキャッシュのストレージをバイパスして、システムメモリ又は高レベルキャッシュ以外のキャッシュに送信される。但し、低レベルキャッシュビクティムに関連する現在のカウントが閾値を超えた場合（すなわち、高レベルキャッシュの有効化後に少なくともＮ個の低レベルキャッシュビクティムが生じた場合）、高レベルキャッシュへのアクセスが許可され、これにより、低レベルキャッシュビクティムは、ブロック３１４に示すように、高レベルキャッシュに記憶される。例えば、低レベルキャッシュビクティムは、ウェイ有効ビットを用いて有効なキャッシュラインを識別する等の従来のプロトコルを用いて、高レベルキャッシュに書き込まれる。
【００１７】
したがって、方法３００で示すように、高レベルキャッシュの起動後に最初のＮ個（Ｎ＝閾値）の低レベルビクティムが高レベルキャッシュに記憶されるのを抑制することによって、高レベルキャッシュは、初期の期間又は最初の数の低レベルキャッシュビクティムが生じる間、空のままである。よって、短期間のアクティビティ後に高レベルキャッシュを無効にする場合、高レベルキャッシュが空である可能性が高くなり、これにより、高レベルキャッシュを無効にする前のフラッシュ手順を回避することができる。
【００１８】
いくつかの実施態様では、閾値は、高レベルキャッシュの複数回の有効化に亘る静的な数である。いくつかの実施形態では、この静的な数は、システムの予想される使用に基づいて設定されてもよいし、モデリング又はシミュレーションを通して決定されてもよい。或いは、閾値は、例えば、高レベルキャッシュの使用履歴又は低レベルキャッシュビクティムのカウントに少なくとも部分的に基づいて、動的に決定される。例えば、図４に示すように、方法４００は、ブロック４０２に示すように、Ｌ３コントローラ１４２が高レベルキャッシュの使用を追跡することを含む。或いは、メモリコントローラ１０６は、高レベルキャッシュの使用を追跡して、方法４００の態様を実施する。一例では、Ｌ３コントローラ１４２は、ウェイ有効ビットの履歴を追跡して、高レベルキャッシュの使用履歴を決定する。一例では、有効ビット履歴は、有効ビットの使用を高レベルキャッシュの以前のアクティビティ期間と関連付ける。他の例では、アクティブ期間中に転送された低レベルキャッシュビクティムの数又はカウントが追跡される。例えば、キャッシュビクティムのカウント履歴は、低レベルビクティムカウントを以前のアクティビティ期間と関連付ける。
【００１９】
ブロック４０４に示すように、Ｌ３コントローラ１４２は、有効ビット履歴又はビクティムカウント履歴等の高レベルキャッシュビクティム履歴を、Ｌ３コントローラ１４２又はメモリコントローラ１０６のテーブル又は他のデータ構造に記憶する。ブロック４０６に示すように、Ｌ３コントローラ１４２又はメモリコントローラ１０６は、キャッシュビクティム履歴に少なくとも部分的に基づいて、閾値を決定する。例えば、閾値は、以前のアクティビティ期間中に低レベルキャッシュから転送された低レベルキャッシュビクティムのカウントに少なくとも部分的に基づいて決定される。他の例では、ウェイ有効ビット又はセクタ有効ビットの数に基づく高レベルキャッシュ使用の履歴を用いて、閾値が決定される。さらなる例では、閾値は、閾値に対する上限制約又は閾値に対する下限制約によってさらに影響を受ける。例えば、閾値が使用履歴に基づいて動的に決定される場合、Ｌ３コントローラ１４２は、閾値が上限制約より大きい数に設定されないようにしたり、閾値が下限制約より小さい数に設定されないようにする。いくつかの実施形態では、閾値を決定することは、パワーダウンするための電力消費又はクロックサイクル数を高レベルキャッシュ使用履歴に関連付けるアルゴリズムに基づいて、閾値を決定することをさらに含む。
【００２０】
このように、閾値は、上限制約及び下限制約によって制約された以前のアクティビティ期間に関連する低レベルキャッシュビクティムのカウント履歴又はウェイ有効ビット若しくはセクタ有効ビットの履歴等の使用履歴データに依存する例えばルックアップテーブル、アルゴリズム、ヒューリスティクス又はヒストグラムを用いて、決定される。このようなルックアップテーブル、アルゴリズム、ヒューリスティクス又はヒストグラムは、例えば、電力消費又はパワーダウンクロックサイクルの数によって情報が与えられる。
【００２１】
システムは、高レベルキャッシュを無効にするために、低レベルキャッシュビクティムが高レベルキャッシュに書き込まれるか否かに応じて、特定の無効化手順を実施することを選択し、又は、低レベルキャッシュビクティムのカウントが閾値を超えたか否かに少なくとも部分的に基づいて、高レベルキャッシュの無効化手順を選択する。例えば、図５に示すように、方法５００は、ブロック５０２に示すように、システム１００の高レベルキャッシュの無効化を開始することを含む。このような無効化は、例えば、関連するコアがパワーゲーティング状態に移行することに応じて開始される。
【００２２】
システム１００は、ブロック５０４に示すように、高レベルキャッシュに含まれる有効なキャッシュラインがあるか否かを判別する。高レベルキャッシュが有効なキャッシュラインを含む場合、システムは、キャッシュフラッシュ処理を利用する無効化プロトコルを選択し、これにより、高レベルキャッシュは、ブロック５０６に示すように、この無効化プロトコルに従ってフラッシュされる。一例では、システムは、高レベルキャッシュのタグアレイ（例えば、Ｌ３データ／タグアレイ１４４）においてウェイ有効ビットを検索して、フラッシュされる高レベルキャッシュのキャッシュラインを識別し、識別されたキャッシュラインビクティムをシステムメモリ１１６に転送することができる。高レベルキャッシュがフラッシュされると、システム１００は、ブロック５０８に示すように、高レベルキャッシュを低電力状態にする。
【００２３】
ブロック５０４を再び参照すると、低レベルキャッシュビクティムが高レベルキャッシュに書き込まれていない場合、システム１００は、フラッシュ処理を含まない無効化プロトコルを選択することができ、これにより、システム１００は、高レベルキャッシュのフラッシュをバイパスし、代わりに、ブロック５１０に示すように、高レベルキャッシュをフラッシュすることなく直接パワーダウンすることができる。このように、最初のＮ個の低レベルビクティムを高レベルキャッシュに記憶するのを抑制することによって、システムは、Ｎ＋１番目の低レベルビクティムを低レベルキャッシュからエビクトする前に高レベルキャッシュを無効化する場合に、時間がかかり電力を消費するフラッシュ手順を定期的にバイパスすることができる。
【００２４】
上記の説明では、高レベルキャッシュの有効化後に閾値数の最初の低レベルビクティムが高レベルキャッシュに記憶されるのを抑制する例示的な実施形態を説明した。しかしながら、図６に例として示されている代替の実施態様では、閾値（Ｎ）以下の数の低レベルキャッシュビクティムの最初のセットが、Ｌ３キャッシュ１４０等の高レベルキャッシュに記憶されるのを許可される。Ｌ３コントローラ１４２又はキャッシュ階層１０４の他のコンポーネントは、最初のセットの対応する低レベルキャッシュビクティムが記憶されるＬ３キャッシュ１４０の位置を記憶する１つ以上のフラッシュテーブル６７０を記憶する。さらに、以下に説明するように、いくつかの実施態様では、低レベルキャッシュビクティムの最初のセットは、高レベルキャッシュのウェイのサブセットに制限され（このウェイのサブセットは、図６のブロック６７２で示されている）、この最初のセットの後に生じた低レベルキャッシュビクティムは、他のウェイベースの制限を受ける（ブロック６７４によって表される）ウェイのセット全体のうち何れかに記憶されてもよい。さらに、Ｌ３コントローラ１４２は、高レベルキャッシュに転送された低レベルキャッシュビクティムの数が閾値を超えたか否かを識別する識別子６８０（例えば、制御ビット又はレジスタ値）を記憶する。以下により詳細に説明するように、フラッシュテーブル６７０は、無効化手順中に利用され、高レベルキャッシュを無効化するための時間、クロックサイクル又は電力使用量を低減することができる。
【００２５】
図７は、いくつかの実施形態による、高レベルキャッシュの有効化後にフラッシュテーブル６７０をポピュレートする方法７００を示す図である。方法７００は、ブロック７０２に示すように、高レベルキャッシュ（例えば、Ｌ３キャッシュ１４０）を有効化することを含む。上記のように、高レベルキャッシュは、例えば、１つ以上の関連するプロセッサコアでのアクティビティに応じて有効にされる。ブロック７０４に示すように、カウンタ１１０は、低レベルキャッシュからエビクトされた低レベルキャッシュビクティムのカウントを開始する。（ブロック７０６に示すように）低レベルキャッシュビクティムが低レベルキャッシュから転送されると、メモリコントローラ１０６は、ブロック７０８に示すように、低レベルキャッシュビクティム毎に現在のカウントを１つずつインクリメントし（カウント＝カウント＋１）、次に、ブロック７１０に示すように、低レベルキャッシュビクティムの現在のカウントを閾値と比較する。カウントが閾値を超えていない間、各低レベルビクティムは、ブロック７１２に示すように、高レベルキャッシュに書き込まれる。オプションで、低レベルキャッシュビクティムは、低レベルキャッシュビクティムの限られたセットが書き込まれる領域を識別するウェイ制約によって制約される高レベルキャッシュ内の位置に書き込まれる。ブロック７１４に示すように、低レベルキャッシュビクティムの最初のセットが書き込まれる高レベルキャッシュ内の位置も、フラッシュテーブル６７０に記憶することができる。或いは、低レベルキャッシュビクティムの最初のセットを、フラッシュテーブル６７０の代わりに記憶された位置に書き込まれる連続セットとして書き込むことができる。
【００２６】
ブロック７１０を再び参照すると、低レベルキャッシュビクティムのカウントが閾値を超えると、システム１００は、ブロック７１６に示すように、Ｎ個の低レベルビクティムの最初のセットを書き込むために使用された位置ベースの制限無しに、後続の低レベルキャッシュビクティムを高レベルキャッシュに書き込む。このような低レベルキャッシュビクティムは、低レベルキャッシュビクティムが書き込まれる高レベルキャッシュ上の位置を決定するために、様々なアルゴリズムとヒューリスティクスとを用いて書き込むことができる。何れの場合も、低レベルキャッシュビクティムの高レベルキャッシュへの書き込みは、高レベルキャッシュのタグアレイのウェイ有効ビットを用いて使用された領域を識別することができる。
【００２７】
代替例では、上記の方法の態様は、Ｌ３コントローラ１４２で実施することができる。さらに、図３の方法３００及び図７の方法７００は、第１閾値数の低レベルキャッシュビクティムが高レベルキャッシュに書き込まれることなくシステムメモリに送られることと、第２閾値数の低レベルキャッシュビクティムが高レベルキャッシュに記憶され、アドレスがフラッシュテーブルに記憶されることと、を組み合わせることができる。
【００２８】
システム１００は、高レベルキャッシュを無効にする場合、無効化の前にフラッシュテーブル６７０を利用して高レベルキャッシュのフラッシュを加速するか、又は、有効ビットの監視若しくはウェイ有効ビットの追跡等の他のメカニズムを使用するかを、カウントに基づいて決定することができる。例えば、図８に示すように、方法８００は、ブロック８０２に示すように、高レベルキャッシュのパワーダウン手順を開始することを含む。ブロック８０４に示すように、高レベルキャッシュがアクティブである間に低レベルキャッシュから高レベルキャッシュに転送された低レベルキャッシュビクティムのカウントが、閾値と比較される。この閾値は、図７のブロック７０６で使用された閾値と同じであることに留意されたい。
【００２９】
カウントが閾値を超えていない場合（すなわち、閾値以下の数の低レベルビクティムが高レベルキャッシュに記憶されている場合）、システム１００は、フラッシュテーブル６７０を用いて高レベルキャッシュをフラッシュすることができる。したがって、システムは、ブロック８０６に示すように、メモリコントローラ又は他の記憶位置に記憶されているフラッシュテーブル６７０にアクセスする。図７を参照して上述したように、フラッシュテーブル６７０は、Ｎ個の低レベルビクティムの最初のセットの各々の位置に関する識別子を高レベルキャッシュに記憶する。システム１００は、フラッシュテーブル６７０を利用して、ブロック８０８に示すように、フラッシュテーブル６７０で示された位置をフラッシュし、次に、ブロック８１０に示すように、高レベルキャッシュをパワーダウンすることができる。
【００３０】
ブロック８０４を再び参照すると、低レベルキャッシュビクティムのカウントが閾値を超えていない場合、システム１００は、フラッシュテーブル６７０を使用するだけでは高レベルキャッシュをフラッシュすることができない。したがって、システム１００は、ブロック８１２に示すように、高レベルキャッシュのタグアレイの各キャッシュラインに関連付する有効ビットを検索して有効なキャッシュラインを識別するか、ウェイ有効ビットにアクセスして、フラッシュされる有効なキャッシュラインを記憶する高レベルキャッシュ内の領域を識別する。識別された有効なキャッシュラインは、ブロック８１４に示すように、システムメモリ１１６（又は、より高いキャッシュレベル）にフラッシュされ、高レベルキャッシュは、ブロック８１８に示すように、無効にされ得る。フラッシュされる有効なキャッシュライン又は高レベルキャッシュの有効キャッシュラインを検索することが、高レベルキャッシュ上の限られた数の物理的位置を識別するフラッシュテーブル６７０を利用するよりも多くの時間を要すると想定すると、有効ビット又はテーブルウォーキングを利用する無効化手順は、フラッシュテーブル６７０を利用する手順よりも時間がかかる場合がある。
【００３１】
いくつかの実施形態では、図１〜図８を参照して上述した処理システム等の上述した装置及び技術は、１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を備えるシステムで実施される。これらのＩＣデバイスの設計及び製造には、通常、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが使用される。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００３２】
非一時的なコンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体、又は、記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステム（例えば、システムＲＡＭ又はＲＯＭ）に内蔵されてもよいし、コンピュータシステム（例えば、磁気ハードドライブ）に固定的に取り付けられてもよいし、コンピュータシステム（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）に着脱可能に取り付けられてもよいし、有線又は無線のネットワークを介してコンピュータシステム（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））に接続されてもよい。
【００３３】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００３４】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００３５】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2019530112.tif 000003
【図２】
2019530112.tif 000004
【図３】
2019530112.tif 000005
【図４】
2019530112.tif 000006
【図５】
2019530112.tif 000007
【図６】
2019530112.tif 000008
【図７】
2019530112.tif 000009
【図８】
2019530112.tif 000010
【手続補正書】
【提出日】令和1年6月27日(2019.6.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
処理システムにおけるキャッシュ利用を管理する方法であって、
高レベルキャッシュを有効化したことに応じて、１つ以上の低レベルキャッシュからエビクトされた低レベルキャッシュビクティムをカウントすることと、
前記低レベルキャッシュビクティムのカウントが閾値以下の間、前記低レベルキャッシュビクティムを前記高レベルキャッシュに記憶せずに、前記低レベルキャッシュビクティムの各々をメモリに記憶することと、
前記低レベルキャッシュビクティムのカウントが閾値より大きい場合、前記閾値を超えた後にエビクトされた低レベルキャッシュビクティムの各々を前記高レベルキャッシュに記憶することと、を含む、
方法。
【請求項２】
前記１つ以上の低レベルキャッシュはレベル２（Ｌ２）キャッシュであり、前記高レベルキャッシュはレベル３（Ｌ３）キャッシュである、
請求項１の方法。
【請求項３】
前記閾値は、前記高レベルキャッシュの複数回の有効化に亘って静的である、
請求項１の方法。
【請求項４】
前記１つ以上の低レベルキャッシュのキャッシュビクティムカウント履歴、前記高レベルキャッシュの有効ビット履歴、前記閾値に対する上限制約、前記閾値に対する下限制約、前記高レベルキャッシュの電力使用量、又は、前記高レベルキャッシュのパワーダウン時間のうち少なくとも１つに少なくとも部分的に基づいて、前記閾値を動的に決定することをさらに含む、
請求項1の方法。
【請求項５】
キャッシュビクティムの数を前記１つ以上の低レベルキャッシュのアクティビティ期間のセットの各期間に関連付けるキャッシュビクティム履歴を記憶することと、
前記キャッシュビクティム履歴に少なくとも部分的に基づいて前記閾値を決定することと、をさらに含む、
請求項１の方法。
【請求項６】
前記閾値を決定することは、前記閾値に対する上限制約に少なくとも部分的に基づいて、前記閾値を決定することを含む、
請求項５の方法。
【請求項７】
有効ビットを用いて、前記高レベルキャッシュの占有領域を追跡することと、
有効ビットの使用量を前記高レベルキャッシュのアクティビティ期間と関連付ける有効ビット履歴を記憶することと、
前記有効ビット履歴に少なくとも部分的に基づいて前記閾値を決定することと、をさらに含む、
請求項１の方法。
【請求項８】
前記閾値を超えた後にエビクトされた低レベルキャッシュビクティムの各々を前記高レベルキャッシュに記憶することは、
低レベルキャッシュビクティムを記憶する前記高レベルキャッシュの領域を、ウェイ制約に基づいて選択することを含む、
請求項１の方法。
【請求項９】
前記高レベルキャッシュが無効にされるという指示に応じて、前記低レベルキャッシュビクティムの前記カウントが前記閾値を超えているか否かに少なくとも部分的に基づいて、前記高レベルキャッシュのパワーダウン手順を選択することをさらに含む、
請求項１の方法。
【請求項１０】
パワーダウン手順を選択することは、
前記低レベルキャッシュビクティムの前記カウントが前記閾値を超えていない場合に、前記高レベルキャッシュをフラッシュせずに前記高レベルキャッシュを無効にするパワーダウン手順を選択することを含む、
請求項９の方法。
【請求項１１】
パワーダウン手順を選択することは、
前記低レベルキャッシュビクティムの前記カウントが前記閾値を超えた場合に、前記高レベルキャッシュをフラッシュして前記高レベルキャッシュを無効にするパワーダウン手順を選択することを含む、
請求項１０の方法。
【請求項１２】
プロセッサコアと、
前記プロセッサコアによってアクセス可能な１つ以上の低レベルキャッシュと、
前記プロセッサコア及び前記１つ以上の低レベルキャッシュによってアクセス可能な高レベルキャッシュと、
前記１つ以上の低レベルキャッシュ及び前記高レベルキャッシュにアクセスするコントローラと、を備え、
前記コントローラは、
前記高レベルキャッシュを有効化したことに応じて、前記１つ以上の低レベルキャッシュからエビクトされた低レベルキャッシュビクティムをカウントし、
前記低レベルキャッシュビクティムのカウントが閾値以下の間、前記低レベルキャッシュビクティムを前記高レベルキャッシュに記憶せずに、前記低レベルキャッシュビクティムの各々をシステムメモリに記憶し、
前記低レベルキャッシュビクティムのカウントが閾値より大きい場合、前記閾値を超えた後にエビクトされた低レベルキャッシュビクティムの各々を前記高レベルキャッシュに記憶する、
システム。
【請求項１３】
前記閾値は、前記高レベルキャッシュの複数回の有効化に亘って静的である、
請求項１２のシステム。
【請求項１４】
前記コントローラは、前記１つ以上の低レベルキャッシュのキャッシュビクティムカウント履歴、前記１つ以上の低レベルキャッシュの有効ビット履歴、前記閾値に対する上限制約、前記閾値に対する下限制約、前記高レベルキャッシュの電力使用量、又は、前記高レベルキャッシュのパワーダウン時間のうち少なくとも１つに少なくとも部分的に基づいて、前記閾値を動的に決定する、
請求項１２のシステム。
【請求項１５】
前記コントローラは、
キャッシュビクティムの数を前記１つ以上の低レベルキャッシュのアクティビティ期間のセットの各期間に関連付けるキャッシュビクティム履歴を記憶し、
前記キャッシュビクティム履歴に少なくとも部分的に基づいて前記閾値を決定する、
請求項１２のシステム。
【請求項１６】
前記コントローラは、
前記高レベルキャッシュのタグアレイの有効ビットを用いて、前記高レベルキャッシュの占有領域を追跡する、
請求項１２のシステム。
【請求項１７】
前記コントローラは、
前記有効ビットの使用量を前記高レベルキャッシュのアクティビティ期間と関連付ける有効ビット履歴を記憶し、
前記有効ビット履歴に少なくとも部分的に基づいて前記閾値を決定する、
請求項１６のシステム。
【請求項１８】
前記コントローラは、
前記低レベルキャッシュビクティムの前記カウントが前記閾値を超えていない場合、前記高レベルキャッシュをフラッシュせずに前記高レベルキャッシュをパワーダウンする、
請求項１２のシステム。
【請求項１９】
前記コントローラは、
前記カウントが前記閾値以下の間、低レベルビクティムを記憶する前記高レベルキャッシュの領域をウェイ制約に基づいて選択する、
請求項１２のシステム。
【請求項２０】
キャッシュ利用を管理する方法であって、
キャッシュビクティムの数を低レベルキャッシュのアクティビティ期間のセットの各期間に関連付けるキャッシュビクティム履歴を記憶することと、
高レベルキャッシュに記憶されずにメモリに送信される低レベルキャッシュビクティムの閾値を決定することと、
前記高レベルキャッシュを有効化したことに応じて、低レベルキャッシュビクティムを、前記高レベルキャッシュを有効化した後に、前記高レベルキャッシュに書き込まずにシステムメモリに閾値まで記憶することと、を含む、
方法。
【請求項２１】
前記低レベルキャッシュビクティムを閾値まで記憶することは、前記低レベルキャッシュビクティムのカウントを判別することを含む、
請求項２０の方法。
【請求項２２】
前記低レベルキャッシュビクティムを閾値まで記憶することは、前記低レベルキャッシュビクティムのカウントが閾値以下の間、前記低レベルキャッシュビクティムを前記高レベルキャッシュに記憶せずに、前記低レベルキャッシュビクティムの各々をメモリに記憶することをさらに含む、
請求項２１の方法。
【請求項２３】
キャッシュ利用を管理する方法であって、
高レベルキャッシュを有効化したことに応じて、前記高レベルキャッシュに送信された低レベルキャッシュビクティムをカウントすることと、
前記低レベルキャッシュビクティムのカウントが閾値以下の間、前記低レベルキャッシュビクティムの各々を前記高レベルキャッシュに記憶し、前記低レベルキャッシュビクティムが記憶される前記高レベルキャッシュの位置をフラッシュテーブルに記憶することと、を含む、
方法。
【請求項２４】
前記低レベルキャッシュビクティムのカウントが閾値を超えた場合に、前記低レベルキャッシュビクティムが記憶される前記高レベルキャッシュの位置を前記フラッシュテーブルに記憶せずに、前記低レベルキャッシュの各々を前記高レベルキャッシュに書き込むことをさらに含む、
請求項２３の方法。
【請求項２５】
キャッシュビクティムの数を１つ以上の低レベルキャッシュのアクティビティ期間のセットの各期間に関連付けるキャッシュビクティム履歴を記憶することと、
前記キャッシュビクティム履歴に少なくとも部分的に基づいて前記閾値を決定することと、をさらに含む、
請求項２３の方法。
【請求項２６】
前記低レベルキャッシュビクティムのカウントが前記閾値を超えない場合に、前記高レベルキャッシュをフラッシュせずに前記高レベルキャッシュを無効化することをさらに含む、
請求項２３の方法。
【請求項２７】
有効ビットを用いて、前記高レベルキャッシュの占有領域を追跡することと、
有効ビットの使用量を前記高レベルキャッシュのアクティビティ期間と関連付ける有効ビット履歴を記憶することと、
前記有効ビット履歴に少なくとも部分的に基づいて前記閾値を決定することと、をさらに含む、
請求項２３の方法。
【請求項２８】
前記閾値を超えた後にエビクトされた低レベルキャッシュビクティムの各々を前記高レベルキャッシュに記憶することは、
低レベルキャッシュビクティムを記憶する前記高レベルキャッシュの領域を、ウェイ制約に基づいて選択することを含む、
請求項２３の方法。
【国際調査報告】
2019530112.tif 000011
2019530112.tif 000012