(57)【特許請求の範囲】
【請求項１】
第１サイクルの間に第１キャッシュと第２キャッシュとの間で未使用の帯域幅を表す未使用帯域幅メッセージを、前記第１キャッシュの第１キャッシュコントローラから前記第２キャッシュの第２キャッシュコントローラに送信することと、
第２サイクルの間に、前記未使用帯域幅メッセージに基づいて、前記第２キャッシュから前記第１キャッシュにダーティデータを含むキャッシュラインをプリエンプティブにライトバックすることと、
前記第２キャッシュに対するキャッシュミスに応じて、前記第２キャッシュ内の前記キャッシュラインを上書きすることと、を含む、
方法。
【請求項２】
前記第２キャッシュの前記第２キャッシュコントローラにおいて、前記未使用の帯域幅を超えることなく、前記第２キャッシュから前記第１キャッシュにプリエンプティブに書き込まれるように利用可能なキャッシュラインの数を計算することをさらに含む、
請求項１の方法。
【請求項３】
第３キャッシュの第３キャッシュコントローラ及び前記第１キャッシュの前記第１キャッシュコントローラから、前記第１サイクルの間で前記第３キャッシュと前記第１キャッシュとの間で未使用の帯域幅を表す別の未使用帯域幅メッセージを送信することと、
前記第２サイクルの間に、前記別の未使用帯域幅メッセージに基づいて、前記第１キャッシュから前記第３キャッシュにダーティデータを含む第２キャッシュラインをプリエンプティブにライトバックすることと、
前記第１キャッシュに対するキャッシュミスに応じて、前記第１キャッシュからデータをエビクトすることなく、前記第２キャッシュラインを上書きすることと、を含む、
請求項１又は２の方法。
【請求項４】
前記第１キャッシュは、前記第２キャッシュに比べて下位レベルのキャッシュである、
請求項１〜３の何れかの方法。
【請求項５】
前記キャッシュラインをプリエンプティブにライトバックすることは、
前記第２キャッシュ内の第２キャッシュラインの第２ライトバックカウンタ値よりも低い第１ライトバックカウンタ値に関連する前記第２キャッシュ内の第１キャッシュラインのライトバックを優先することであって、前記第１ライトバックカウンタ値及び前記第２のライトバックカウンタ値は、前記第１キャッシュライン及び前記第２キャッシュラインの各々が変更された回数を追跡する、ことをさらに含む、
請求項１〜４の何れかの方法。
【請求項６】
前記キャッシュラインをプリエンプティブにライトバックすることは、
第１トランザクション識別タグに関連する前記第２キャッシュ内の第１キャッシュラインをライトバックすることに応じて、第２トランザクション識別タグに関連する前記第２キャッシュ内のダーティキャッシュラインのライトバックよりも、前記第１トランザクション識別タグに関連する前記第２キャッシュ内のクリーンキャッシュラインのライトバックを優先させる、ことをさらに含む、
請求項１〜５の何れかの方法。
【請求項７】
前記第１キャッシュは、キャッシュ階層内の最終レベルのキャッシュである、
請求項１〜６の何れかの方法。
【請求項８】
システムメモリのメモリコントローラ及び前記第１キャッシュの前記第１キャッシュコントローラから、前記第１サイクルの間に前記システムメモリと前記第１キャッシュとの間で未使用の帯域幅を表す別の未使用帯域幅メッセージを送信することと、
第２サイクルの間に、前記別の未使用帯域幅メッセージに基づいて、前記第１キャッシュから前記システムメモリにダーティデータを含む第２キャッシュラインをプリエンプティブにライトバックすることと、
前記第１キャッシュに対するキャッシュミスに応じて、前記第２キャッシュラインを上書きすることと、をさらに含む、
請求項１〜７の何れかの方法。
【請求項９】
複数のプロセッサコアのうち何れかのプロセッサコアに関連するプライベートキャッシュであって、プライベートキャッシュコントローラと、対応するキャッシュラインのセットと、を含むプライベートキャッシュと、
前記複数のプロセッサコアによって共有される共有キャッシュであって、共有キャッシュコントローラと、共有のキャッシュラインのセットと、を含み、前記共有キャッシュコントローラは、第１サイクルの間に前記共有キャッシュと前記プライベートキャッシュとの間で未使用の帯域幅を表す未使用帯域幅メッセージを、前記プライベートキャッシュ内の前記プライベートキャッシュコントローラに通信するように構成されている、共有キャッシュと、を備える、
処理システム。
【請求項１０】
前記プライベートキャッシュ内の前記プライベートキャッシュコントローラは、前記未使用の帯域幅を超えることなく、前記プライベートキャッシュから前記共有キャッシュにプリエンプティブに書き込まれるように利用可能なキャッシュラインの数を計算するように構成されている、
請求項９の処理システム。
【請求項１１】
前記プライベートキャッシュ内の前記プライベートキャッシュコントローラは、キャッシュミスに応じて、前記プライベートキャッシュからデータをエビクトすることなく、キャッシュラインをプリエンプティブに上書きするように構成されている、
請求項９又は１０の処理システム。
【請求項１２】
別の共有キャッシュであって、別の共有キャッシュコントローラと、別の共有のキャッシュラインのセットと、を含み、前記別の共有キャッシュコントローラは、前記第１サイクルの間に前記共有キャッシュと前記別の共有キャッシュとの間で未使用の帯域幅を表す未使用帯域幅メッセージを、前記共有キャッシュコントローラに通信するように構成されている、別の共有キャッシュをさらに備える、
請求項９〜１１の何れかの処理システム。
【請求項１３】
前記別の共有キャッシュは、キャッシュ階層内の最終レベルのキャッシュである、
請求項１２の処理システム。
【請求項１４】
前記複数のプロセッサコアによって共有されるシステムメモリであって、メモリコントローラを含み、前記メモリコントローラは、前記第１サイクルの間に前記システムメモリと前記最終レベルのキャッシュとの間で未使用の帯域幅を表す未使用帯域幅メッセージを、前記最終レベルのキャッシュに通信するように構成されている、システムメモリをさらに備える、
請求項１３の処理システム。
【請求項１５】
前記共有キャッシュは、前記プライベートキャッシュに比べて下位レベルのキャッシュである、
請求項９〜１４の何れかの処理システム。
【発明の詳細な説明】
【背景技術】
【０００１】
処理システムは、通常、１つ以上の計算複合体を実装しており、各計算複合体は、複数のプロセッサコアと、複数レベルのキャッシュを有するキャッシュ階層と、を含む。レイテンシ期間は、プロセッサコアがデータを要求してから、要求したデータを受信するまでの時間に対応付けられている。プロセッサコアがアイドル状態でデータを待機する時間を最小限に抑えるために、多くの処理システムは、キャッシュ階層内のキャッシュメモリを使用して、プログラム命令及びデータの一時的なコピーを記憶する。キャッシュ階層において、各プロセッサコアは、対応するコア専用の１つ以上のレベルのキャッシュ（以下、「プライベートキャッシュ」という）に関連付けられている。さらに、処理システムは、キャッシュ階層の別のレベルに共有キャッシュを実装しており、この共有キャッシュ（以下、「共有キャッシュ」という）は、計算複合体のプロセッサコア間で共有される。
【０００２】
本開示は、添付の図面を参照することによって、よりよく理解され、その多数の特徴及び利点が当業者に明らかになる。異なる図面での同じ符号の使用は、類似又は同一のアイテムであることを示す。
【図面の簡単な説明】
【０００３】
【図１】いくつかの実施形態による、プリエンプティブなキャッシュライトバックを利用する処理システムのブロック図である。
【図２】いくつかの実施形態による、プリエンプティブなキャッシュライトバック動作の一例を示すブロック図である。
【図３】いくつかの実施形態による、プリエンプティブなキャッシュライトバック動作の別の例を示すブロック図である。
【図４】いくつかの実施形態による、プリエンプティブなキャッシュライトバック動作のさらに別の例を示すブロック図である。
【図５】いくつかの実施形態による、プリエンプティブなキャッシュライトバックの方法を示すフローチャートである。
【発明を実施するための形態】
【０００４】
図１〜図５は、プリエンプティブなキャッシュライトバックを使用して、キャッシュ内のダーティラインの数を減らし、これにより、「ダーティ」ライン（つまり、キャッシュで変更され、下位レベルのキャッシュに未だ書き込まれていないキャッシュライン）のライトバックによる将来のキャッシュミスのレイテンシを減らす技術を示している。例えば、各コアが１つ以上のレベルのプライベートキャッシュに関連付けられ、コアがキャッシュ階層の別の非プライベートのレベルで共有キャッシュを共有するマルチコア処理システムでは、キャッシュでキャッシュミスが発生した場合、対応するキャッシュコントローラは、「ミス」データ（すなわち、キャッシュミスとなったメモリアドレスに関連するデータ）のためのスペースを生成するために、キャッシュラインのエビクトを必要とする場合がある。従来、エビクトされるキャッシュラインがダーティなキャッシュラインである場合、キャッシュコントローラは、キャッシュラインをエビクトする前に、ダーティなキャッシュラインを下位レベルのキャッシュ又はメインメモリに書き込むこと（「ライトバック」と呼ばれる）によって、メモリコヒーレンスを維持する。したがって、ライトバックは、ダーティなキャッシュラインのライトバックが生じるキャッシュミス毎に、パフォーマンスが低下する。
【０００５】
このパフォーマンスの低下を改善するために、様々な実施形態において、処理システムは、第１キャッシュのキャッシュコントローラ及び第２キャッシュのキャッシュコントローラから、第１サイクルの間に第１キャッシュと第２キャッシュとの間の未使用帯域幅を表す未使用帯域幅メッセージを周期的に送信することによって、プリエンプティブなキャッシュライトバックを使用する。第２キャッシュのキャッシュコントローラでは、未使用帯域幅メッセージに基づいて、未使用帯域幅を超えることなく第２キャッシュから第１キャッシュにプリエンプティブに書き込むことができるキャッシュラインの数が計算される。計算された数のキャッシュラインは、第２サイクルの間に、第２キャッシュから第１キャッシュにプリエンプティブにライトバックされる。計算されたキャッシュラインの数のこのプリエンプティブなキャッシュライトバックは、第２キャッシュからのダーティなキャッシュラインのエビクトを要するキャッシュミスが発生する前に、第２キャッシュ内のダーティなキャッシュラインの数を減らす。したがって、第２キャッシュに対する将来のキャッシュミスに関連するデータは、下位レベルキャッシュ及び／又はシステムメモリへのライトバックを待たずに上書きされ、これにより、システムリソース（例えば、キャッシュ間の帯域幅）の無駄を減らし、パフォーマンスを改善することができる。
【０００６】
図１は、少なくともいくつかの実施形態による、プリエンプティブなキャッシュライトバックを利用する処理システム１００を示す図である。図示した例では、処理システム１００は、例えば２つのプロセッサコア１０２，１０４等の複数のプロセッサコアと、キャッシュ階層１０６と、メモリコントローラ１０８と、システムメモリ１１０と、を含む。プロセッサコア１０２，１０４は、例えば、中央処理装置（ＣＰＵ）コア、グラフィックス処理装置（ＧＰＵ）コア、デジタル信号プロセッサ（ＤＳＰ）コア、又は、これらの組み合わせを含む。処理システムのプロセッサコアの数は、２つより少なくてもよいし、２つより多くてもよいことを理解されたい。
【０００７】
メモリコントローラ１０８は、キャッシュ階層１０６とシステムメモリ１１０との間のインタフェースとして動作する。したがって、キャッシュ階層１０６にキャッシュされるデータは、通常、「キャッシュライン」と呼ばれるデータのブロックとして処理され、このキャッシュラインは、システムメモリ１１０に関連する仮想アドレス又は物理アドレスを使用して、アドレス指定されるか、メモリ階層に配置される。いくつかの実施形態では、各キャッシュラインは、キャッシュラインに関連するメモリアドレスを識別するためのキャッシュラインタグデータ、及び／又は、キャッシュライン内のデータを他のキャッシュ若しくはシステムメモリ１１０と同期するのに使用されるキャッシュコヒーレンシデータ等のように、キャッシュラインを管理するのに使用される別のデータも記憶する。様々な実施形態では、キャッシュタグは、キャッシュラインに関連するメモリアドレスの全て又は一部から形成することができる。キャッシュラインは、キャッシュ階層１０６からのメモリ要求に応じて、メモリコントローラ１０８によってシステムメモリ１１０からアクセスされる。同様に、変更されたデータを含むキャッシュラインがキャッシュ階層１０６からエビクトされ、これにより、システムメモリ１１０内で更新される必要がある場合には、メモリコントローラ１０８は、このライトバックプロセスを管理する。
【０００８】
キャッシュ階層１０６は、複数レベルのキャッシュを含む。図示した例では、キャッシュ階層１０６は、レベル１（Ｌ１）、レベル２（Ｌ２）及びレベル３（Ｌ３）の３つのキャッシュレベルを含む。Ｌ１については、処理システム１００は、プロセッサコア毎に小さなプライベートキャッシュを実装しており、このプライベートキャッシュは、プロセッサコア１０２，１０４のうち対応するものにそれぞれ関連付けられたＬ１キャッシュ１１２，１１４として示されている。Ｌ１キャッシュ１１２，１１４の各々は、プロセッサコア１０２，１０４からのメモリアクセス要求を処理するＬ１キャッシュコントローラ１１６を実装する。この実施形態では、Ｌ１キャッシュ１１２，１１４の各々は、Ｌ１キャッシュ１１２，１１４の各々のプロセッサコア１０２，１０４によって必要とされる可能性のある任意のタイプのデータを記憶することができる単一のキャッシュメモリとして示されている。一方、他の実施形態では、プログラム命令キャッシュ、プログラムデータキャッシュ及び変換索引バッファデータキャッシュ等の異なるタイプのデータを別々に記憶するために、各プロセッサコア１０２，１０４に関連する別々のＬ１キャッシュユニットを含むことができる。
【０００９】
Ｌ２については、処理システム１００は、より大きな（Ｌ１キャッシュ１１２，１１４に比べて記憶容量の大きい）Ｌ２キャッシュ１１８を実装する。図示するように、Ｌ２キャッシュ１１８は、プロセッサコア１０２，１０４によって共有される。いくつかの実施形態では、処理システム１００は、Ｌ１キャッシュ１１２，１１４内に記憶されたデータがＬ２キャッシュ１１８にも複製される、包含的なキャッシュ設計を使用する。他の実施形態では、処理システム１００は、キャッシュがデータを共有しない排他的なキャッシュ設計を使用する。Ｌ２キャッシュ１１８は、共有Ｌ２キャッシュ１１８を管理し、様々なコヒーレンス方式によってオンチップデータのコヒーレンスを維持するのに役立つＬ２キャッシュコントローラ１２０を実装する。プロセッサコア１０２，１０４が必要とするデータ又は命令がキャッシュに存在しない場合、キャッシュミスが発生する。例えば、Ｌ１キャッシュミスがＬ２キャッシュコントローラ１２０に送られ、Ｌ２キャッシュコントローラ１２０は、ヒットするか（すなわち、所望のデータ又は命令がＬ２キャッシュ内に存在するか）に関して、Ｌ２キャッシュ１１８をチェックする。
【００１０】
Ｌ３については、処理システム１００は、一般的にＬ２キャッシュ１１８及びＬ１キャッシュ１１２，１１４に比べて記憶容量の大きいＬ３キャッシュ１２２を実装する。Ｌ３キャッシュ１２２は、プロセッサコア１０２，１０４によって共有されるので、少なくともＬ１キャッシュ１１２，１１４及びＬ２キャッシュ１１８によって共有される。Ｌ３キャッシュ１２２は、Ｌ３キャッシュ１２２を管理し、様々なコヒーレンス方式によってオンチップデータのコヒーレンスを維持するのに役立つＬ３キャッシュコントローラ１２４を実装する。Ｌ２のキャッシュミスがＬ３キャッシュコントローラ１２４に送られ、Ｌ３キャッシュコントローラ１２４は、ヒットするか（すなわち、所望のデータ又は命令がＬ３キャッシュ内に存在するか）に関して、Ｌ３キャッシュ１２２をチェックする。
【００１１】
Ｌ１キャッシュ１１２，１１４の各々は、対応するプロセッサコア専用であるが、キャッシュ階層１０６は、Ｌ１キャッシュ１１２，１１４、Ｌ２キャッシュ１１８及びＬ３キャッシュ１２２間のコヒーレンシを維持するように動作する。特に、Ｌ１キャッシュ１１２，１１４、Ｌ２キャッシュ１１８及びＬ３キャッシュ１２２は、メモリコヒーレンスプロトコル（本明細書では、単に「コヒーレンスプロトコル」と呼ばれる）を実装する。各キャッシュラインは、コヒーレンシプロトコルによって管理されるように、対応するコヒーレンシ情報に関連付けられており、コヒーレンスプロトコルのルール下でキャッシュラインがどのように処理され得るかだけでなく、キャッシュラインのコヒーレンス状態も示す。
【００１２】
例えば、コヒーレンスプロトコルは、キャッシュラインが対応するキャッシュで変更可能であることを示す「変更」、対応するキャッシュラインが他のプロセッサコアに関連するキャッシュで変更できないことを示す「排他」、及び、キャッシュラインがキャッシュ階層１０６の複数のキャッシュによって共有されており、これにより、変更されるべきでないことを示す「共有」等のコヒーレンス状態を設定することができる。処理システムによって実装される特定のコヒーレンスプロトコルによって定義されるように、キャッシュ階層１０６のキャッシュは、特定のイベントに対して、キャッシュプローブを発行して、他のキャッシュの所定のキャッシュラインのコヒーレンス状態を識別することができる。例えば、キャッシュは、キャッシュラインのコヒーレンス状態を共有から排他に変更する前に、キャッシュプローブを発行して、当該キャッシュラインが他のキャッシュに記憶されているかどうか、もし記憶されている場合には、当該キャッシュラインを記憶するキャッシュでの当該キャッシュラインのコヒーレンス状態を識別してもよい。プローブを発行したキャッシュは、プローブへの応答に基づいて、コヒーレンスプロトコルのルール下で要求されるように、適切なアクションを行うことができる。例えば、キャッシュは、他のキャッシュがキャッシュラインを記憶していない場合に、キャッシュラインの状態を「共有」から「排他」に変更することができる。
【００１３】
上述したように、キャッシュ階層１０６のキャッシュメモリは、通常、キャッシュラインと呼ばれる固定数のキャッシュメモリ位置に分割される。通常、各キャッシュラインは、システムメモリアドレスのセットに関連付けられている。各キャッシュラインは、プログラム命令及び／又はプログラムデータのコピーを、その関連するシステムメモリアドレスのうち１つから記憶するように構成されている。プロセッサコア１０２，１０４のうち１つが、キャッシュメモリ位置に記憶されているデータを変更又は更新する場合、このデータを、最終的にシステムメモリにコピーバックする必要がある。キャッシュラインに記憶されたデータが、キャッシュ階層１０６（例えば、Ｌ１キャッシュ１１２，１１４、Ｌ２キャッシュ１１８及び／又はＬ３キャッシュ１２２）のうち１つのキャッシュメモリ内で変更されるが、システムメモリ１１０に反映されるように変更されない場合には、そのキャッシュメモリ内のデータは、「ダーティデータ」と呼ばれる。通常、プロセッサ又はプロセッサコアは、プロセッサコアが、システムメモリ１１０から別のデータのコピーを記憶するキャッシュラインを必要とするまで、システムメモリ１１０をダーティデータで更新するのを延期する。
【００１４】
一実施形態では、Ｌ１キャッシュ１１２，１１４の各々は、限られた数のキャッシュラインを記憶することができる。Ｌ１キャッシュ容量の限界を超えた場合、新たなキャッシュラインのためのスペースを確保するために、１つのキャッシュラインがＬ１キャッシュから削除される。削除されたキャッシュラインは、ビクティムラインと呼ばれる。ビクティムキャッシュラインは、キャッシュ置換ポリシー（例えば、最近最も使用されていない（least recently used）キャッシュラインを選択する等）に従って、及び／又は、プログラムに関連するキャッシュ命令に従って、選択することができる。ビクティムラインのデータが、関連するプロセッサコアによって変更されていない場合、ビクティムラインのデータは、破棄されるか上書きされ得る。しかし、ビクティムラインのデータが、関連するプロセッサコア（例えば、プロセッサコア１０２，１０４の一方）によって変更された場合、プログラムの正しい動作を保証するために、ダーティデータ（すなわち、キャッシュメモリでは変更されるが、システムメモリ１１０では変更されない）は、システムメモリ１１０（又は、別のキャッシュレベルメモリ）にコピーバックされる必要がある。変更されたキャッシュデータを、キャッシュメモリから下位レベルのキャッシュメモリ又はシステムメモリにコピーすることを、ライトバック動作と呼ぶ。
【００１５】
ダーティキャッシュラインのライトバックによるキャッシュミスに起因するレイテンシに関連する性能ペナルティがあることが理解されよう。例えば、プロセッサコア１０２が必要とするデータ又は命令がＬ１キャッシュ１１２に見つからない場合、要求されたデータは、他のキャッシュレベル（例えば、Ｌ２キャッシュ１１８若しくはＬ３キャッシュ１２２）又はシステムメモリ１１０からフェッチされる。しかしながら、Ｌ１キャッシュ１１２が既に満杯である場合、プロセッサコア１０２によって要求された新たなキャッシュラインのためのスペースを生成するために、既存のキャッシュラインのうち少なくとも１つをＬ１キャッシュ１１２から削除する必要がある。Ｌ１キャッシュ１１２内に（単に上書き可能な）クリーンキャッシュラインが存在しない場合、プロセッサコア１０２によって要求されたデータがＬ１キャッシュ１１２に書き込まれる前にダーティキャッシュラインのライトバックを待機することによるレイテンシが発生する。
【００１６】
以下により詳細に説明するように、様々な実施形態では、異なるキャッシュ及び／又はメモリレベル間の（本明細書で「サイクル」と呼ばれる所定の時間単位毎の）未使用帯域幅が、メモリ階層１０６の或るキャッシュから次のレベルのキャッシュに報告される。一例として、Ｌ２キャッシュコントローラ１２０は、Ｌ１キャッシュ１１２とＬ２キャッシュ１１８との間のサイクル当たりの帯域幅利用を表す未使用帯域幅メッセージをＬ１キャッシュコントローラ１１６に送る。Ｌ１キャッシュコントローラ１１６は、未使用帯域幅メッセージに応じて、サイクル当たりに利用可能な未使用帯域幅を利用するがこれを超えないように、Ｌ１キャッシュ１１２からＬ２キャッシュ１１８に書き込むことができるダーティキャッシュラインの数を計算する。次のサイクルの間に、計算されたダーティキャッシュラインの数が、メモリ階層１０６において下位の次のキャッシュレベルに（例えば、Ｌ１キャッシュ１１２からＬ２キャッシュ１１８に）プリエンプティブに書き込まれる。Ｌ２キャッシュ１１８にライトバックされたキャッシュラインは、Ｌ１キャッシュ１１２においてクリーンとしてマークされ得る。
【００１７】
本明細書で使用される場合、「プリエンプティブに」とは、データをフルキャッシュに書き込む前に、少なくとも１つのダーティキャッシュラインのエビクトを必要とするフルキャッシュへのキャッシュミスが発生する前にダーティキャッシュラインをキャッシュから次の下位キャッシュレベルにライトバックすることを指す。その後、キャッシュミスに応じて、以前にプリエンプティブにライトバックされたがダーティデータを未だ含んでいるキャッシュラインが、キャッシュからデータをエビクトすることなく上書きされ得る。したがって、Ｌ１キャッシュ１１２内のダーティキャッシュラインの数が減らされ、Ｌ１キャッシュ１１２に対する将来のキャッシュミスに関連するデータは、下位レベルキャッシュ及び／又はシステムメモリ１１０へのライトバックを待たずにクリーンキャッシュラインに上書きされ、これにより、システムリソース（例えば、キャッシュ間の帯域幅）の無駄を減らし、パフォーマンスを高めることができる。
【００１８】
図２は、いくつかの実施形態による、プリエンプティブなキャッシュライトバック動作の一例を示す図である。一般的なメモリは、キャッシュラインのセットに編成されたメモリアレイを含む。図２の例では、メモリアレイ２０２の各キャッシュラインは、そのキャッシュラインに記憶されたデータに関連するメインメモリ位置を識別する対応するアドレスタグを含む。さらに、各キャッシュラインは、特定のキャッシュラインのデータが、システムメモリ１１０に記憶されているものと異なっているかどうかを示すダーティビット等のキャッシュライン状態識別子を含む。図示するように、ビット値１は、キャッシュラインのデータがダーティであることを表し、ビット値０は、キャッシュラインのデータがクリーンであることを表す。様々な実施形態では、各キャッシュラインは、ブロック内のデータが有効であるか否かを示す有効ビットも含む。
【００１９】
第１サイクルの間に、Ｌ２キャッシュコントローラ１２０は、Ｌ１キャッシュ１１２とＬ２キャッシュ１１８との間のサイクル当たりの帯域幅利用を表す未使用帯域幅メッセージをＬ１キャッシュコントローラ１１６に通信する。図２の例に示すように、Ｌ１キャッシュコントローラ１１６は、未使用帯域幅メッセージに基づいて、利用可能な未使用帯域幅を利用するがこれを超えないように、１つのダーティキャッシュラインをＬ１キャッシュ１１２からＬ２キャッシュ１１８に書き込むことができることを計算する。したがって、第２サイクルの間に、Ｌ１キャッシュ１１２のダーティキャッシュライン２０２内のデータは、Ｌ２キャッシュ１１８のキャッシュライン２０６にライトバックされる。この例示的な実施形態では、Ｌ２キャッシュ１１８にライトバックされたキャッシュラインは、Ｌ１キャッシュ１１２においてクリーンとしてマークされる。したがって、Ｌ１キャッシュ１１２内のダーティキャッシュラインの数が減らされ、Ｌ１キャッシュ１１２に対する将来のキャッシュミスに関連するデータは、下位レベルキャッシュ及び／又はシステムメモリ１１０へのデータＡのライトバックを待たずに、キャッシュライン２０４に上書きされ得る。
【００２０】
図２の例では、キャッシュ階層は、上位レベルのキャッシュ（すなわち、Ｌ１キャッシュ１１２）内の全てのキャッシュラインが下位レベルのキャッシュ（すなわち、Ｌ２キャッシュ１１８）内にも存在する階層（キャッシュラインが複数のキャッシュ内に存在することが許可されているが、それを必要としていない点で厳密に排他的ではない）を利用する。データＡを含むキャッシュラインのコピーは、キャッシュライン２０４がクリーンとしてマークされ、キャッシュライン２０６がダーティとしてマークされている場合でも、プリエンプティブなキャッシュラインのライトバックの後に、Ｌ１キャッシュ１１２及びＬ２キャッシュ１１８の両方に存在する。さらに、この例では、キャッシュミス時に、最初にＬ１キャッシュ１１２にキャッシュラインを割り当てる割り当てポリシーが用いられる。Ｌ２キャッシュ１１８は、ライトバック動作後にキャッシュラインのコピーを受信するという点において、ビクティムキャッシュとして動作する。他の実施形態では、キャッシュ階層は、下位レベルキャッシュ（すなわち、Ｌ２キャッシュ１１８）が上位レベルキャッシュ（すなわち、Ｌ１キャッシュ１１２）に存在しないキャッシュラインを含む、厳密に排他的な階層を利用してもよい。このような実施形態（図示省略）では、キャッシュラインのコピーは、プリエンプティブなキャッシュラインのライトバックの後に上位レベルキャッシュからエビクトされる。他の実施形態では、キャッシュ階層は、キャッシュミスに応じて、書き込み時に、Ｌ１キャッシュ１１２及びＬ２キャッシュ１１８の両方がキャッシュラインのコピーを取得する、厳密に包含的な階層を代わりに利用してもよい。
【００２１】
図２の例では、Ｌ１キャッシュ１１２及びＬ２キャッシュ１１８のみが示されているが、本明細書で説明するプリエンプティブなキャッシュラインのライトバックは、メモリ階層（例えば、図１のキャッシュ階層１０６）内の任意のキャッシュメモリ間で実行可能であることが理解されよう。例えば、Ｌ３コントローラ１２４は、Ｌ３キャッシュ１２２とＬ２キャッシュ１１８との間のサイクル当たりの帯域幅利用を表す未使用帯域幅メッセージを、Ｌ２キャッシュコントローラ１２０に通信することができる。様々な実施形態において、このようなプリエンプティブなキャッシュラインのライトバックは、キャッシュ階層１０６の任意のレベルに適用されてもよいし、キャッシュ階層１０６の全てのキャッシュ間において各サイクルで（例えば、サイクル毎に、Ｌ１キャッシュ１１２とＬ２キャッシュ１１８との間で、さらにＬ２キャッシュ１１８とＬ３キャッシュ１２２との間で）同時に実行されてもよい。
【００２２】
さらに、本明細書で説明するプリエンプティブなキャッシュラインのライトバックは、キャッシュ間の未使用帯域幅に限定されず、メモリ階層内の任意のメモリに適用可能であることが理解されよう。いくつかの実施形態では、本明細書で説明するプリエンプティブなキャッシュラインのライトバック動作は、システムメモリ１１０とキャッシュ階層の最終レベルキャッシュとの間に適用されてもよい。例えば、図１のコンテキストでは、メモリコントローラ１０８は、Ｌ３キャッシュ１２２とシステムメモリ１１０との間のサイクル当たりの帯域幅利用を表す未使用帯域幅メッセージをＬ３キャッシュコントローラ１２４に通信することができる。
【００２３】
本明細書で説明する様々な実施形態では、プリエンプティブなライトバック用のダーティキャッシュラインの選択は、例えば、キャッシュが、一般的に知られているように、最近最も使用されていないアイテムを最初にライトバックする、最近最も使用されていない（ＬＲＵ）ポリシー等の標準的なキャッシュ置換ポリシーに従って実行することができる。他の実施形態では、プリエンプティブなキャッシュライトバックは、キャッシュライン毎にカウンタを設けることによって最適化することができる。図３は、いくつかの実施形態による、プリエンプティブなキャッシュライトバック動作の別の例を示す図である。
【００２４】
図３の例では、メモリアレイ３０２の各キャッシュラインは、そのキャッシュラインに記憶されたデータに関連するメインメモリ位置を識別する、対応するアドレスタグを含む。各キャッシュラインは、特定のキャッシュラインのデータが、システムメモリ１１０に記憶されているものと異なるかどうかを示すダーティビット等のキャッシュライン状態識別子を含む。図示するように、ビット値１は、キャッシュラインのデータがダーティであることを表し、ビット値０は、キャッシュラインのデータがクリーンであることを表す。様々な実施形態では、各キャッシュラインは、ブロック内のデータが有効であるか否かを示す有効ビットも含む。さらに、各キャッシュラインは、所定のスケジュールに基づいて周期的にリセットするカウンタビットも含み、このカウンタビットは、キャッシュライン内のデータが書き込まれる毎にインクリメントされる。例えば、Ｌ１キャッシュ１１２のキャッシュライン３０４内のデータＡは、最新のカウンタリセット以降に１回書き込まれたか、変更されている。Ｌ１キャッシュ１１２のキャッシュライン３０６内のデータＢは、最新のカウンタリセット以降に１回書き込まれたか、変更されている。Ｌ１キャッシュ１１２のキャッシュライン３０８内のデータＣは、最新のカウンタリセット以降に７回書き込まれたか、変更されており、Ｌ１キャッシュ１１２のキャッシュライン３１０内のデータＤは、最新のカウンタリセット以降に２回書き込まれたか、変更されている。
【００２５】
第１サイクルの間に、Ｌ２キャッシュコントローラ１２０は、Ｌ１キャッシュ１１２とＬ２キャッシュ１１８との間のサイクル当たりの帯域幅利用を表す未使用帯域幅メッセージを、Ｌ１キャッシュコントローラ１１６に通信する。図３の例に示すように、Ｌ１キャッシュコントローラ１１６は、未使用帯域幅メッセージに基づいて、利用可能な未使用帯域幅を利用するがこれを超えないように、３つのダーティキャッシュラインをＬ１キャッシュ１１２からＬ２キャッシュ１１８に書き込み得ることを計算する。したがって、第２サイクルの間に、Ｌ１キャッシュ１１２の３つのダーティキャッシュライン内のデータが、Ｌ２キャッシュ１１８にライトバックされる。この例示的な実施形態では、Ｌ１キャッシュコントローラ１１６は、ライトバック用のカウンタ値が低いキャッシュラインをカウンタ値が高いキャッシュラインの前に選択することによって、何れのキャッシュラインをライトバックするかを決定する。カウンタ値が高いキャッシュラインは、近い将来に書き込みヒットを生じ、これにより、ダーティデータを含むように書き込まれる可能性が高いので、カウンタ値が低いキャッシュラインのプリエンプティブなライトバックを優先すると、ライトバックトラフィックが減少して、プリエンプティブなライトバックプロセスの効率が向上する。さらに、ライトバックトラフィックの低減により、メモリ階層の下位レベルでの不揮発性メモリの消耗が低減される。
【００２６】
したがって、図３に示すように、Ｌ１キャッシュコントローラ１１６は、キャッシュライン３０４，３０６，３１０が最も低い３つのカウンタ値を有すると判別し、第２サイクルの間に、Ｌ１キャッシュ１１２の３つのダーティキャッシュライン内のデータが、Ｌ２キャッシュ１１８にライトバックされる。よって、この例示的な実施形態では、Ｌ２キャッシュ１１８にライトバックされたキャッシュライン３０４，３０６，３１０は、Ｌ１キャッシュ１１２においてクリーンとしてマークされる。Ｌ１キャッシュ１１２内のダーティキャッシュラインの数が減らされ、Ｌ１キャッシュ１１２に対する将来のキャッシュミスに関連するデータは、データＡ，Ｂ，Ｄの下位レベルキャッシュ及び／又はシステムメモリ１１０へのライトバックを待たずに、キャッシュライン３０４，３０６，３１０に上書きされ得る。さらに、Ｌ１キャッシュ１１２に対する将来のキャッシュミスは、Ｌ１キャッシュコントローラ１１６が、ダーティとしてマークされたままのキャッシュライン３０８よりも、クリーンなキャッシュライン３０４，３０６，３１０への書き込みを優先させる結果になることが理解されよう。
【００２７】
図２の例と同様に、図３のキャッシュ階層は、上位レベルのキャッシュ（すなわち、Ｌ１キャッシュ１１２）内の全てのキャッシュラインが下位レベルのキャッシュ（すなわち、Ｌ２キャッシュ１１８）内にも存在する階層（キャッシュラインが複数のキャッシュ内に存在することを許可されているが、それを必要としないという点で厳密に排他的ではない階層）である。したがって、データＡ，Ｂ，Ｄを含むキャッシュラインのコピーは、キャッシュラインがＬ１キャッシュ１１２でクリーンとしてマークされ、キャッシュラインがＬ２キャッシュ１１８でダーティとしてマークされている場合でも、プリエンプティブなキャッシュラインのライトバックの後に、Ｌ１キャッシュ１１２及びＬ２キャッシュ１１８の両方に存在する。さらに、この例では、キャッシュミス時に、最初にＬ１キャッシュ１１２にキャッシュラインが割り当てられる割り当てポリシーが用いられる。Ｌ２キャッシュ１１８は、ライトバック動作後にキャッシュラインのコピーを受信するという点で、ビクティムキャッシュとして動作する。他の実施形態では、キャッシュ階層は、下位レベルキャッシュ（すなわち、Ｌ２キャッシュ１１８）が上位レベルキャッシュ（すなわち、Ｌ１キャッシュ１１２）に存在しないキャッシュラインを含む、厳密に排他的な階層を利用してもよい。このような実施形態（図示省略）では、キャッシュラインのコピーは、プリエンプティブなキャッシュラインのライトバックの後に、上位レベルキャッシュからエビクトされる。他の実施形態では、キャッシュ階層は、キャッシュミスに応じて、書き込み時に、Ｌ１キャッシュ１１２及びＬ２キャッシュ１１８の両方がキャッシュラインのコピーを取得する、厳密に包含的な階層を代わりに利用してもよい。
【００２８】
図３の例では、Ｌ１キャッシュ１１２及びＬ２キャッシュ１１８のみが示されているが、本明細書で説明するプリエンプティブなキャッシュラインのライトバックは、メモリ階層（例えば、図１のキャッシュ階層１０６）内の任意のキャッシュメモリ間で実行可能であることが理解されよう。例えば、Ｌ３コントローラ１２４は、Ｌ３キャッシュ１２２とＬ２キャッシュ１１８との間のサイクル当たりの帯域幅利用を表す未使用帯域幅メッセージを、Ｌ２キャッシュコントローラ１２０に通信することができる。様々な実施形態において、このようなプリエンプティブなキャッシュラインのライトバックは、キャッシュ階層１０６の任意のレベルに適用されてもよいし、キャッシュ階層１０６の全てのキャッシュ間において各サイクルで（例えば、サイクル毎に、Ｌ１キャッシュ１１２とＬ２キャッシュ１１８との間で、さらにＬ２キャッシュ１１８とＬ３キャッシュ１２２との間で）同時に実行されてもよい。
【００２９】
さらに、本明細書で説明するプリエンプティブなキャッシュラインのライトバックは、キャッシュ間の未使用帯域幅に限定されず、メモリ階層内の任意のメモリに適用可能であることが理解されよう。いくつかの実施形態では、本明細書で説明するプリエンプティブなキャッシュラインのライトバック動作は、システムメモリ１１０とキャッシュ階層の最終レベルキャッシュとの間に適用されてもよい。例えば、図１のコンテキストでは、メモリコントローラ１０８は、Ｌ３キャッシュ１２２とシステムメモリ１１０との間のサイクル当たりの帯域幅利用を表す未使用帯域幅メッセージを、Ｌ３キャッシュコントローラ１２４に通信することができる。
【００３０】
図４は、いくつかの実施形態による、プリエンプティブなキャッシュライトバック動作のさらに別の例を示す図である。図４の例では、各キャッシュラインは、特定のキャッシュラインのデータが、システムメモリ１１０に記憶されているものと異なるかどうかを示すダーティビット等のキャッシュライン状態識別子を含む。図示するように、ビット値１は、キャッシュラインのデータがダーティであることを表し、ビット値０は、キャッシュラインのデータがクリーンであることを表す。様々な実施形態では、各キャッシュラインは、ブロック内のデータが有効であるか否かを示す有効ビットも含む。さらに、メモリアレイ４０２内の各キャッシュラインは、デマンド要求毎にキャッシュラインに割り当てられたトランザクションＩＤを識別する、対応するトランザクション識別（ＩＤ）タグを含む。
【００３１】
第１サイクルの間に、Ｌ２キャッシュコントローラ１２０は、Ｌ１キャッシュ１１２とＬ２キャッシュ１１８との間のサイクル当たりの帯域幅利用を表す未使用帯域幅メッセージを、Ｌ１キャッシュコントローラ１１６に通信する。図４の例に示すように、Ｌ１キャッシュコントローラ１１６は、未使用帯域幅メッセージに基づいて、利用可能な未使用帯域幅を利用するがこれを超えないように、３つのダーティキャッシュラインをＬ１キャッシュ１１２からＬ２キャッシュ１１８に書き込み得ることを計算する。したがって、第２サイクルの間に、Ｌ１キャッシュ１１２の３つのダーティキャッシュライン内のデータが、Ｌ２キャッシュ１１８にライトバックされる。この例示的な実施形態では、Ｌ１キャッシュコントローラ１１６は、同じトランザクションＩＤを有するキャッシュラインを優先することによって、何れのキャッシュラインをライトバックするかを決定する。したがって、図４に示すように、Ｌ１キャッシュコントローラ１１６は、キャッシュライン４０４，４０６，４０８が全てトランザクションＩＤ  Ａでタグ付けされていると判別する。よって、キャッシュライン４０８がクリーンとしてマークされていても、第１サイクルからの３つのキャッシュライン帯域幅に基づいて、キャッシュライン４０４，４０６，４０８内のデータが全て、第２サイクルの間にＬ２キャッシュ１１８に書き込まれる。したがって、同じトランザクションに関連するデータの整合性及び永続性が向上する。
【００３２】
図２〜図３の例と同様に、図４のキャッシュ階層は、上位レベルのキャッシュ（すなわち、Ｌ１キャッシュ１１２）内の全てのキャッシュラインが下位レベルのキャッシュ（すなわち、Ｌ２キャッシュ１１８）内にも存在する階層（キャッシュラインが複数のキャッシュ内に存在することを許可されるが、それを必要としないという点で厳密に排他的ではない階層）を利用する。したがって、キャッシュラインがＬ１キャッシュ１１２でクリーンとしてマークされ、キャッシュラインがＬ２キャッシュ１１８でダーティとしてマークされている場合でも、キャッシュライン４０４，４０６，４０８のコピーは、プリエンプティブなキャッシュラインのライトバック後に、Ｌ１キャッシュ１１２及びＬ２キャッシュ１１８の両方に存在する。さらに、この例では、キャッシュミス時に、最初にＬ１キャッシュ１１２にキャッシュラインが割り当てられる割り当てポリシーが用いられる。Ｌ２キャッシュ１１８は、ライトバック動作後にキャッシュラインのコピーを受信するという点で、ビクティムキャッシュとして動作する。他の実施形態では、キャッシュ階層は、下位レベルキャッシュ（すなわち、Ｌ２キャッシュ１１８）が上位レベルキャッシュ（すなわち、Ｌ１キャッシュ１１２）に存在しないキャッシュラインを含む、厳密に排他的な階層を利用してもよい。このような実施形態（図示省略）では、キャッシュラインのコピーは、プリエンプティブなキャッシュラインのライトバックの後に上位レベルキャッシュからエビクトされる。他の実施形態では、キャッシュ階層は、キャッシュミスに応じて、Ｌ１キャッシュ１１２及びＬ２キャッシュ１１８の両方がキャッシュラインのコピーを取得する、厳密に包含的な階層を代わりに利用してもよい。
【００３３】
図４の例では、Ｌ１キャッシュ１１２及びＬ２キャッシュ１１８のみが示されているが、本明細書で説明するプリエンプティブなキャッシュラインのライトバックは、メモリ階層（例えば、図１のキャッシュ階層１０６）内の任意のキャッシュメモリ間で実行可能であることが理解されよう。例えば、Ｌ３コントローラ１２４は、Ｌ３キャッシュ１２２とＬ２キャッシュ１１８との間のサイクル当たりの帯域幅利用を表す未使用帯域幅メッセージを、Ｌ２キャッシュコントローラ１２０に通信することができる。様々な実施形態において、このようなプリエンプティブなキャッシュラインのライトバックは、キャッシュ階層１０６の任意のレベルに適用されてもよいし、キャッシュ階層１０６の全てのキャッシュ間において各サイクルで（例えば、サイクル毎に、Ｌ１キャッシュ１１２とＬ２キャッシュ１１８との間で、さらにＬ２キャッシュ１１８とＬ３キャッシュ１２２との間で）同時に実行されてもよい。
【００３４】
さらに、本明細書で説明するプリエンプティブなキャッシュラインのライトバックは、キャッシュ間の未使用帯域幅に限定されず、メモリ階層内の任意のメモリに適用可能であることが理解されよう。いくつかの実施形態では、本明細書で説明するプリエンプティブなキャッシュラインのライトバック動作は、システムメモリ１１０とキャッシュ階層の最終レベルキャッシュとの間に適用されてもよい。例えば、図１のコンテキストでは、メモリコントローラ１０８は、Ｌ３キャッシュ１２２とシステムメモリ１１０との間のサイクル当たりの帯域幅利用を表す未使用帯域幅メッセージを、Ｌ３キャッシュコントローラ１２４に通信することができる。
【００３５】
図５は、いくつかの実施形態による、プリエンプティブなキャッシュライトバックを実行する方法５００を示す図である。ステップ５０２において、プロセッサコア（図１のプロセッサコア１０２等）は、ロード要求及び／又はストア要求をそのＬ１キャッシュ（すなわち、Ｌ１キャッシュ１１２）に送信する。ステップ５０４において、Ｌ１コントローラは、ロード要求及び／又はストア要求がキャッシュミスを生じたかどうか、及び、Ｌ１キャッシュ１１２が既に満杯であるかどうかを判別する。そうでない場合、方法５００はステップ５０２に戻り、次のロード要求及び／又はストア要求を処理する。一方、ステップ５０４の両方の条件が満たされる場合、方法５００はステップ５０６に進む。
【００３６】
ステップ５０６において、キャッシュ階層の１つ以上のキャッシュコントローラは、帯域幅利用に関するフィードバックを提供する。例えば、図２に関して説明したように、Ｌ２キャッシュコントローラ１２０は、Ｌ１キャッシュ１１２とＬ２キャッシュ１１８との間のサイクル当たりの帯域幅利用を表す未使用帯域幅メッセージを、Ｌ１キャッシュコントローラ１１６に通信する。すなわち、未使用帯域幅メッセージが、下位レベルキャッシュコントローラ（例えば、Ｌ２キャッシュコントローラ１２０）から上位レベルキャッシュのキャッシュコントローラ（例えば、Ｌ１キャッシュコントローラ１１６）に通信される。
【００３７】
ステップ５０８において、上位レベルのキャッシュコントローラ（例えば、Ｌ１キャッシュコントローラ１１６）は、未使用帯域幅メッセージに基づいて、利用可能な未使用帯域幅を利用するがこれを超えないように、下位レベルのキャッシュ（例えば、Ｌ２キャッシュ１１８）に書き込むことができるダーティキャッシュラインの数を計算する。したがって、ステップ５１０での次のサイクルの間に、計算されたダーティキャッシュラインの数のデータが下位レベルキャッシュにライトバックされる。したがって、各サイクルの間に、Ｌ１キャッシュ１１２内のダーティキャッシュラインの数が減らされ、Ｌ１キャッシュ１１２に対する将来のキャッシュミスに関連するデータは、下位レベルキャッシュ及び／又はシステムメモリへのダーティデータのライトバックを待たずに上書きされ、これにより、システムリソース（例えば、キャッシュ間の帯域幅）の無駄を減らし、パフォーマンスを高めることができる。さらに、いくつかの実施形態では、本明細書で説明する本開示の態様を実行するユーザ又はオペレーティングシステム（ＯＳ）が、書き込む又は書き込まれるキャッシュが、メモリ消耗の影響を受ける（例えば、消耗がストレージの整合性を低下させ始める前の有限数のプログラム消去サイクルに制限される）不揮発性メモリ内にある場合等に、ライトバックの速さを抑制可能であることを理解されたい。例えば、ユーザ定義のプリエンプティブなライトバック帯域幅の制限を設定したり、１つ以上のキャッシュレベル間でプリエンプティブなライトバックを完全に無効にしたりすることができる。
【００３８】
第１態様において、方法は、第１サイクルの間に第１キャッシュと第２キャッシュとの間で未使用の帯域幅を表す未使用帯域幅メッセージを、第１キャッシュの第１キャッシュコントローラから第２キャッシュの第２キャッシュコントローラに送信することと、第２サイクルの間に、未使用帯域幅メッセージに基づいて、第２キャッシュから第１キャッシュにダーティデータを含むキャッシュラインをプリエンプティブにライトバックすることと、第２キャッシュに対するキャッシュミスに応じて、第２キャッシュ内のキャッシュラインを上書きすることと、を含む。
【００３９】
第１態様の一実施形態では、方法は、第２キャッシュの第２キャッシュコントローラにおいて、未使用の帯域幅を超えることなく、第２キャッシュから第１のキャッシュにプリエンプティブに書き込まれるように利用可能なキャッシュラインの数を計算することを含む。別の実施形態では、方法は、第３キャッシュの第３キャッシュコントローラ及び第１キャッシュの第１キャッシュコントローラから、第１サイクルの間に第３キャッシュと第１キャッシュとの間で未使用の帯域幅を表す別の未使用帯域幅メッセージを送信することを含む。また、方法は、第２サイクルの間に、別の未使用帯域幅メッセージに基づいて、第１キャッシュから第３キャッシュにダーティデータを含む第２キャッシュラインをプリエンプティブにライトバックすることと、第１キャッシュに対するキャッシュミスに応じて、第１キャッシュからデータをエビクトすることなく、第２キャッシュラインを上書きすることと、を含む。
【００４０】
第１態様のさらなる実施形態では、第１キャッシュは、第２キャッシュに比べて下位レベルのキャッシュである。別の実施形態では、キャッシュラインをプリエンプティブにライトバックすることは、第２キャッシュ内の第２キャッシュラインの第２ライトバックカウンタ値よりも低い第１ライトバックカウンタ値に関連する第２キャッシュ内の第１キャッシュラインのライトバックを優先することであって、第１ライトバックカウンタ値及び第２ライトバックカウンタ値は、第１キャッシュライン及び第２キャッシュラインの各々が変更された回数を追跡する、ことをさらに含む。さらなる実施形態では、キャッシュラインをプリエンプティブにライトバックすることは、第１トランザクション識別タグに関連する第２キャッシュ内の第１キャッシュラインをライトバックすることに応じて、第２トランザクション識別タグに関連する第２キャッシュ内のダーティキャッシュラインのライトバックよりも、第１トランザクション識別タグに関連する第２キャッシュ内のクリーンキャッシュラインのライトバックを優先させる、ことをさらに含む。
【００４１】
第１態様のさらに別の実施形態では、第１キャッシュは、キャッシュ階層内の最終レベルのキャッシュである。特定の実施形態では、方法は、システムメモリのメモリコントローラ及び第１キャッシュの第１キャッシュコントローラから、第１サイクルの間にシステムメモリと第１キャッシュとの間で未使用の帯域幅を表す別の未使用帯域幅メッセージを送信することと、第２サイクルの間に、別の未使用帯域幅メッセージに基づいて、第１キャッシュからシステムメモリにダーティデータを含む第２キャッシュラインをプリエンプティブにライトバックすることと、第１キャッシュに対するキャッシュミスに応じて、第２キャッシュラインを上書きすることと、を含む。
【００４２】
第２態様において、処理システムは、複数のプロセッサコアのうち何れかのプロセッサコアに関連するプライベートキャッシュであって、プライベートキャッシュコントローラと、対応するキャッシュラインのセットと、を含むプライベートキャッシュと、複数のプロセッサコアによって共有される共有キャッシュであって、共有キャッシュコントローラと、共有のキャッシュラインのセットと、を含み、共有キャッシュコントローラは、第１サイクルの間に共有キャッシュとプライベートキャッシュとの間で未使用の帯域幅を表す未使用帯域幅メッセージを、プライベートキャッシュ内のプライベートキャッシュコントローラに通信するように構成されている、共有キャッシュと、を備える。
【００４３】
第２態様の一実施形態では、プライベートキャッシュ内のプライベートキャッシュコントローラは、未使用の帯域幅を超えることなく、プライベートキャッシュから共有キャッシュにプリエンプティブに書き込まれるように利用可能なキャッシュラインの数を計算するように構成されている。さらなる実施形態では、プライベートキャッシュ内のプライベートキャッシュコントローラは、キャッシュミスに応じて、プライベートキャッシュからデータをエビクトすることなく、キャッシュラインをプリエンプティブに上書きするように構成されている。
【００４４】
第２態様の別の実施形態では、処理システムは、別の共有キャッシュであって、別の共有キャッシュコントローラと、別の共有のキャッシュラインのセットと、を含み、別の共有キャッシュコントローラは、第１サイクルの間に共有キャッシュと別の共有キャッシュとの間で未使用の帯域幅を表す未使用帯域幅メッセージを、共有キャッシュコントローラに通信するように構成されている、別の共有キャッシュを備える。特定の実施形態では、別の共有キャッシュは、キャッシュ階層内の最終レベルのキャッシュである。別の特定の実施形態では、処理システムは、複数のプロセッサコアによって共有されるシステムメモリであって、メモリコントローラを含み、メモリコントローラは、第１サイクルの間にシステムメモリと最終レベルのキャッシュとの間で未使用の帯域幅を表す未使用帯域幅メッセージを、最終レベルのキャッシュに通信するように構成されている、システムメモリを備える。
【００４５】
第２態様の別の実施形態では、共有キャッシュは、プライベートキャッシュに比べて下位レベルのキャッシュである。さらなる実施形態では、プライベートキャッシュのプライベートキャッシュコントローラは、プライベートキャッシュ内の第２キャッシュラインの第２ライトバックカウンタ値よりも低い第１ライトバックカウンタ値に関連するプライベートキャッシュ内の第１キャッシュラインのライトバックを優先することであって、第１ライトバックカウンタ値及び第２ライトバックカウンタ値は、第１キャッシュライン及び第２キャッシュラインの各々が変更された回数を追跡する、ことを行うように構成されている。さらに別の実施形態では、プライベートキャッシュのプライベートキャッシュコントローラは、第１トランザクション識別タグに関連するプライベートキャッシュ内の第１キャッシュラインのライトバックに応じて、第２トランザクション識別タグに関連するプライベートキャッシュのダーティキャッシュラインのライトバックよりも、第１トランザクション識別タグに関連するプライベートキャッシュのクリーンキャッシュラインのライトバックを優先するように構成されている。
【００４６】
第３態様において、プロセッサは、複数のプロセッサコアのうち何れかのプロセッサコアに関連するプライベートキャッシュであって、プライベートキャッシュコントローラと、対応するキャッシュラインのセットと、を含むプライベートキャッシュと、複数のプロセッサコアによって共有される共有キャッシュであって、共有キャッシュコントローラと、共有のキャッシュラインのセットと、を含み、共有キャッシュコントローラは、第１サイクルの間に共有キャッシュとプライベートキャッシュとの間で未使用の帯域幅を表す未使用帯域幅メッセージを、プライベートキャッシュ内のプライベートキャッシュコントローラに通信するように構成されている、共有キャッシュと、を含む。
【００４７】
第３態様の一実施形態では、プライベートキャッシュ内のプライベートキャッシュコントローラは、未使用の帯域幅を超えることなく、プライベートキャッシュから共有キャッシュにプリエンプティブに書き込まれるように利用可能なキャッシュラインの数を計算するように構成されている。別の実施形態では、プロセッサは、別の共有キャッシュであって、別の共有キャッシュコントローラと、別の共有のキャッシュラインのセットと、を含み、別の共有キャッシュコントローラは、第１サイクルの間に共有キャッシュと別の共有キャッシュとの間で未使用の帯域幅を表す別の未使用帯域幅メッセージを、共有キャッシュコントローラに通信するように構成されている、別の共有キャッシュを含む。
【００４８】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００４９】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体又は記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステムに内蔵されてもよいし（例えば、システムＲＡＭ又はＲＯＭ）、コンピュータシステムに固定的に取り付けられてもよいし（例えば、磁気ハードドライブ）、コンピュータシステムに着脱可能に取り付けられてもよいし（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、有線又は無線のネットワークを介してコンピュータシステムに接続されてもよい（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））。
【００５０】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００５１】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
0006820449.tif 000002
【図２】
0006820449.tif 000003
【図３】
0006820449.tif 000004
【図４】
0006820449.tif 000005
【図５】
0006820449.tif 000006