(57)【特許請求の範囲】
【請求項１】
キャッシュエージェントからペンディングの容量退避の表示を受信する段階と、
前記ペンディングの容量退避に関連するキャッシュラインに対して、前記キャッシュエージェントからのインバリデーションライトバックトランザクションが起こり得るどうかを決定する段階と、
前記インバリデーションライトバックトランザクションが起こり得る場合、前記キャッシュラインに関連するスヌープフィルタエントリを、スヌープフィルタからステージング領域へと移動させる段階と、
を備える方法。
【請求項２】
前記インバリデーションライトバックトランザクションが起こり得ない場合、前記スヌープフィルタにおける情報に基づき、前記スヌープフィルタエントリを退避させ、前記スヌープフィルタから１つ以上のキャッシュエージェントへとバックインバリデーショントランザクションを送信する段階をさらに備える、請求項１に記載の方法。
【請求項３】
前記インバリデーションライトバックトランザクションは、前記スヌープフィルタエントリが前記ステージング領域へと移動したときから予め決められた期間内に前記キャッシュエージェントから受信されたかどうかを決定する段階をさらに備える、請求項１または２に記載の方法。
【請求項４】
前記インバリデーションライトバックトランザクションが前記予め決められた期間内に受信された場合、バックインバリデーショントランザクションを送信せずに、前記ステージング領域から前記スヌープフィルタエントリを退避させる段階をさらに備える、請求項３に記載の方法。
【請求項５】
前記インバリデーションライトバックトランザクションが前記予め決められた期間内に受信されない場合、前記スヌープフィルタからの前記バックインバリデーショントランザクションを１つ以上のキャッシュエージェントに送信する段階をさらに備える、請求項４に記載の方法。
【請求項６】
システム資源レベルに少なくとも一部に基づき、前記バックインバリデーショントランザクションを前記スヌープフィルタから前記１つ以上のキャッシュエージェントへ送信する段階をさらに備える、請求項５に記載の方法。
【請求項７】
退避させられるべきキャッシュラインを変更することを示す前記キャッシュエージェントからの行ヒントに少なくとも一部に基づき、前記インバリデーションライトバックトランザクションが起こり得ることを決定する段階をさらに備える、請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記キャッシュエージェントでは退避させられるべき対応する前記キャッシュラインが排他的状態にあるという前記スヌープフィルタの表示に基づき、前記インバリデーションライトバックトランザクションが起こり得ることを決定する段階をさらに備える、請求項１から７のいずれか一項に記載の方法。
【請求項９】
キャッシュメモリのキャッシュラインにそれぞれ対応付けられたエントリを格納するスヌープフィルタと、
前記スヌープフィルタに結合されて前記スヌープフィルタを制御するコヒーレンシーユニットと、
を備え、
前記スヌープフィルタは、複数のキャッシュメモリを有するインクルーシブスヌープフィルタであり、
前記コヒーレンシーユニットは、退避させられるスヌープフィルタエントリに対応するキャッシュラインのインバリデーションライトバックトランザクションをキャッシュエージェントが送信する可能性がある場合、前記スヌープフィルタから退避させられる前記スヌープフィルタエントリのバックインバリデーショントランザクションを送信しないようにする、
装置。
【請求項１０】
前記スヌープフィルタに結合され、前記コヒーレンシーユニットからバックインバリデーショントランザクションが送信される前に、前記スヌープフィルタから退避させられたスヌープフィルタエントリを格納する記憶領域をさらに備える、請求項９に記載の装置。
【請求項１１】
前記コヒーレンシーユニットは、前記スヌープフィルタエントリに対応する前記キャッシュラインの退避トランザクションを受信すると、前記退避させられたスヌープフィルタエントリを前記記憶領域に移動させる、請求項１０に記載の装置。
【請求項１２】
前記コヒーレンシーユニットは、前記スヌープフィルタエントリに対応する前記キャッシュラインのインバリデーションライトバックトランザクションを受信すると、前記バックインバリデーショントランザクションを送信せずに、前記スヌープフィルタエントリを前記記憶領域から削除する、請求項１１に記載の装置。
【請求項１３】
前記コヒーレンシーユニットは、前記退避トランザクションにおける行ヒント情報に少なくとも一部に基づき、前記インバリデーションライトバックトランザクションが起こり得ることを決定する、請求項１１に記載の装置。
【請求項１４】
前記スヌープフィルタエントリが変更された状態にある場合、前記コヒーレンシーユニットは、前記インバリデーションライトバックトランザクションが起こり得ることを決定する、請求項９から１３のいずれか一項に記載の装置。
【請求項１５】
前記スヌープフィルタエントリが前記記憶領域内に予め決められた期間存在する場合、前記コヒーレンシーユニットは、前記バックインバリデーショントランザクションを送信する、請求項１１に記載の装置。
【請求項１６】
少なくとも１つのコア、および、少なくとも１つのキャッシュメモリを有する第１のプロセッサと、
少なくとも１つのコア、および、少なくとも１つのキャッシュメモリを有する第２のプロセッサと、
前記第１のプロセッサおよび前記第２のプロセッサに結合されるチップセットと、
前記チップセットに結合されるＤＲＡＭ（ダイナミックランダムアクセスメモリ）と、
を備え、
前記チップセットは、
前記キャッシュメモリのうちの１つのキャッシュのキャッシュラインにそれぞれ対応付けられたエントリを格納するスヌープフィルタと、
前記スヌープフィルタに結合され、前記第１のプロセッサおよび前記第２のプロセッサが、退避させられるスヌープフィルタエントリに対応するキャッシュラインのインバリデーションライトバックトランザクションを送信する可能性がある場合、前記スヌープフィルタから退避させられる前記スヌープフィルタエントリのバックインバリデーショントランザクションを送信しないようにするコヒーレンシーユニットと、
前記スヌープフィルタに結合され、前記コヒーレンシーユニットからバックインバリデーショントランザクションが送信される前に、前記スヌープフィルタから退避させられた前記スヌープフィルタエントリを格納する記憶領域と、を有する、
システム。
【請求項１７】
前記コヒーレンシーユニットは、前記スヌープフィルタエントリに対応する前記キャッシュの退避トランザクションを受信すると、退避させられたスヌープフィルタエントリを前記記憶領域に移動させる、請求項１６に記載のシステム。
【請求項１８】
前記コヒーレンシーユニットは、前記スヌープフィルタエントリに対応する前記キャッシュラインのインバリデーションライトバックトランザクションを受信すると、前記バックインバリデーショントランザクションを送信せずに、前記スヌープフィルタエントリを前記記憶領域から削除する、請求項１７に記載のシステム。
【請求項１９】
前記コヒーレンシーユニットは、前記退避トランザクションにおける行ヒント情報に少なくとも一部に基づき、前記インバリデーションライトバックトランザクションが起こり得ることを決定する、請求項１８に記載のシステム。
【請求項２０】
前記スヌープフィルタエントリが前記記憶領域内に予め決められた期間存在する場合、前記コヒーレンシーユニットは、前記バックインバリデーショントランザクションを送信する、請求項１６から１９のいずれか一項に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
複数のプロセッサおよび複数のキャッシュを有するマルチプロセッサシステムにおいては、各キャッシュは、メモリに記憶されたデータのコピーを格納しうる。同じデータのコピーを複数のキャッシュが有すると問題が生じる。複数のキャッシュにおけるデータコヒーレンシーを確実にするさまざまな技術が開発されている。例えば、１つのキャッシュ内のデータが修正されると、データの他のコピーは無効とマークされることにより、それらを使用できなくする。
【０００２】
多くのシステムは、このような複数のキャッシュのキャッシュラインにおけるデータの存在および状態を決定するのを援助するスヌープフィルタなどのディレクトリを有しており、キャッシュコヒーレンスの維持に役立てている。スヌープ動作は、バスのエージェントが例えば読み書き動作などのメモリトランザクションをモニタする場合に起こりうる。エージェントは、スヌープフィルタにおけるメモリトランザクションに関わるキャッシュラインの状態を記録しうる。キャッシュラインの状態は、ラインがメインメモリ以外に有効なコピーを１つだけ有するか、複数のキャッシュにより共有される複数の有効なコピーを有するか、または、メインメモリ以外にはコピーを１つも持たない（すなわち、すべてのキャッシュで無効とされている）かどうかを示してよい。スヌープフィルタにおけるデータエントリは、多くの場合、メインメモリ内のそのアドレスの一部によって部分的にインデックス付けされる。
【０００３】
スヌープフィルタは、新しいメモリトランザクションのラインの状態を記録するスペースを使い果たしてしまうことがあり、新しいトランザクションに対応するためにスヌープフィルタからエントリを退避させる必要が生じることもある。スヌープフィルタからエントリが退避させられる場合は、たいてい、退避させられるエントリに関連するラインの有効なコピーを保持している可能性があるすべてのプロセッサキャッシュに、バックインバリデーションメッセージが送信される。キャッシュミスの多くは、使用しようとしたキャッシュラインのスヌープフィルタから生じたバックインバリデーションが原因である。
【０００４】
インクルーシブスヌープフィルタ（ＩＳＦ）と称されるスヌープフィルタがあり、これは、スヌープフィルタがカバーするキャッシュのキャッシュラインによって、スヌープフィルタにおける情報が包括的に維持されるというものである。インクルーシブキャッシュ階層においては、キャッシュメモリの１つ（すなわち低レベルのキャッシュメモリ）は、他のキャッシュメモリ（すなわち上レベルキャッシュメモリ）に含まれるデータのサブセットを有する。キャッシュ階層は、アクセス速度が比較的速い小さいキャッシュが使用頻度の高いデータを有することを可能としているので、プロセッサの性能を高めることができる。一方、小さいキャッシュよりアクセス速度が遅い大きいキャッシュは、使用頻度の低いデータ（および低レベルキャッシュにおけるデータのコピー）を格納する。
【０００５】
スヌープフィルタは、それらがカバーするキャッシュ同様、エントリの割り当ておよび退避を行う。しかしながら、ＩＳＦを有するインクルーシブキャッシュ階層は、若干の共有データを格納するので、１つのキャッシュレベルまたはスヌープフィルタにおけるキャッシュラインを退避させると、キャッシュ階層を維持するためにキャッシュ階層の他のレベルにおける対応するキャッシュラインが退避させられることになる。ＩＳＦは、スヌープフィルタから退避させられるアドレスを有するキャッシュラインはカバーされるすべてのキャッシュから削除されることを保証しなければならない。一般に、このことは、バックインバリデーション要求をスヌープフィルタからカバーされるキャッシュに送信することを含む。スヌープフィルタがこのような要求を多数送信すると、有効メモリレイテンシを増大させうる相互接続帯域幅を消費し、それと共に有用なキャッシュエントリを除去する可能性がある。
【図面の簡単な説明】
【０００６】
【図１】マルチプロセッサシステムの一実施形態を示すブロック図である。
【０００７】
【図２】本発明の一実施形態におけるコヒーレンシーコントローラのブロック図である。
【０００８】
【図３】本発明の一実施形態における、キャッシュエージェント、スヌープフィルタ、および、ステージングのやりとりを示すブロック図である。
【０００９】
【図４】本発明の一実施形態における方法のフローチャートである。
【発明を実施するための形態】
【００１０】
さまざまな実施形態において、スヌープフィルタは、結合されるキャッシュへ送信するバックインバリデーションメッセージを減らすように構成されうる。このような方法で、キャッシュから退避させられるエントリを少なくし、キャッシュヒット率を高める。バックインバリデーションメッセージの数を減少させることにより、システムの相互接続トラフィックも減らし、メモリレイテンシならびに他のシステム効率因子も向上させる。より詳しくは、さまざまな実施態様において、スヌープフィルタは、エントリ（所定のキャッシュラインに関連するエントリ）を退避させることにより、対応するキャッシュが当該キャッシュライン用の自身のインバリデーションメッセージをすぐに発行する可能性があるにもかかわらず、バックインバリデーションメッセージを送信することを防ぐ。このような方法で、スヌープフィルタから無駄なバックインバリデーションメッセージを送信することも防ぐことができる。
【００１１】
キャッシュ容量および用途によっては、スヌープフィルタから退避させられるキャッシュラインのかなりの部分は、変更される（「ダーティ」とも言う）。キャッシュは、ダーティラインを退避させることを決定すると、通常「明示的ライトバック」（ＥＷＢ）トランザクションを発行する。いくつかの実施態様では、このトランザクションは、２つのセマンティクスを単一のトランザクションにする明示的インバリデーションライトバック（またはＢＷＬ．ＩＮＶＬＤ）トランザクションとも呼ばれる。より詳しくは、このトランザクションは、問題のキャッシュラインの現在の値を報告し、当該キャッシュラインはキャッシュ階層のすべてのレベルから完全に削除されたという表示を提供する。複数の実施形態がこの２番目の属性を導入することにより、当該キャッシュをカバーするスヌープフィルタは、それに関連するエントリを無許可で削除できる。すなわち、スヌープフィルタは、バックインバリデーション要求を発行せずにスヌープフィルタから対応するエントリを退避させてよい。
【００１２】
このように、カバーされたキャッシュは退避させられたまたは退避させられようとしているＩＳＦエントリについての明示的インバリデーションライトバックトランザクションを発行する可能性があると決定できる場合、ＩＳＦは、インバリデーション要求の発行を遅らせてよい。そして、キャッシュが問題のキャッシュラインの当該トランザクションを発行した場合、スヌープフィルタは、インバリデーション要求を発行する必要はない。
【００１３】
このように、複数の実施形態は、そのスヌープフィルタ内の退避させられた（または退避させられようとしている）エントリに対して明示的インバリデーションライトバックが発行される可能性のあるという表示をＩＳＦが提供する第１のメカニズムと、この情報を利用して、所定の期間インバリデーション要求を発行するのを控える第２のメカニズムとを提供する。関連する明示的インバリデーションライトバックトランザクションがこの期間に受信された場合、スヌープフィルタは、インバリデーション要求を送信しないようにしてよい。
【００１４】
一実施形態では、第１のメカニズムは、読み込み結果用の空間を作るために特定のキャッシュラインにおけるどのキャッシュライン場所が退避させられるかを示す、読み込みトランザクションに伴うヒントを利用してよい。ヒント自体が情報を含んでよく、本願明細書中では退避させられる行が変更されることを報告する「ＥＷＢヒント」と呼ばれる。このメカニズムの代替形態は、スヌープフィルタ自体における情報を利用してよい。例えば、退避ヒントを受信した後、スヌープフィルタは、退避させられるべきラインの占有権をキャッシュが得ているという表示を保持してよい。ラインの占有権を要求することは、そのラインを変更することと非常に関連性がある（典型的には、インテル（登録商標）６４およびインテル（登録商標）Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＡ）−３２のｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ａｒｃｈｉｔｅｃｔｕｒｅ  （ＩＳＡ）アプリケーションについては９０％をはるかに超える確率）。このように、当該表示によって、スヌープフィルタは、インバリデーションメッセージの送信を遅らせてよい。
【００１５】
一実施形態では、第２のメカニズムは、例えば、インバリデーション要求の仮想的または物理的キューまたはプールなどのバッファとして実装されてよい。すなわち、スヌープフィルタは、すべてのスヌープフィルタエントリが格納される一次スヌープフィルタ部分と、二次スヌープフィルタ部分とに分割され、二次スヌープフィルタ部分は、本願明細書においてはステージングプールまたはインバリデーションプールとも呼ばれ、スヌープフィルタから退避させられるエントリが格納される。したがって、退避前の、スヌープフィルタからのインバリデーション要求の送信が控えられる少なくともある期間（例えば、いくつかの実施形態では約１００ナノ秒オーダーであってよい予め決められた期間）、一次スヌープフィルタから退避させられたエントリは、このステージングプールに格納されてよい。このようにして生じた明示的インバリデーションライトバックトランザクションが用いられることにより、インバリデーション要求を待っているペンディングのエントリセットを含む当該プールのサーチを可能にし、一致するアイテムはいかなるものも削除することができる。この仮想的または物理的構造におけるペンディングのインバリデーションは、ある期間の後に発行されてよく、プールまたはキューの占有率があるレベルに達するはずの世代を基準に発行されてよく、および／または、十分なシステム資源が利用可能になる場合に発行されてよい。
【００１６】
図１を参照すると、マルチプロセッサシステム１０の一実施形態のブロック図が示されている。図１に示すように、システム１０は、チップセット１３と相互接続する複数の処理ノード１７を有してよい。処理ノード１７のそれぞれは、１つ以上のプロセッサ１１（図には処理ノードごとに２つのプロセッサが示されており、各プロセッサは、プロセッサコアまたはマルチコアプロセッサであってよい）、および、キャッシュ１２を有してよい。各キャッシュ１２には、「ホームノード」（このキャッシュが配置される処理ノード）のプロセッサ１１によるローカルアクセスが可能であり、「リモートノード」（ホームノード以外の処理ノード）のプロセッサ１１によるリモートアクセスが可能である。キャッシュ１２は、ホームノードのプロセッサ１１に対し「ローカルキャッシュ」と呼ばれ、例えば、スタティックＲＡＭ（ＳＲＡＭ）のような比較的小型かつ高速のメモリであってよい。処理ノード１７は、１つ以上のフロントサイドバス（ＦＳＢ）１４（図にはＦＳＢが２つだけ示されている）または、ポイントツーポイントインターコネクトなどの他のタイプの相互接続を介してチップセット１３に結合されてよい。１つ以上の処理ノード１７が単一のチップに実装されてよい。システム１０は、全体の処理力が高いのでサーバシステムとして用いられてよいが、本発明は、これに限定されない。
【００１７】
チップセット１３は、本発明の一実施形態におけるスヌープフィルタを含みうるコヒーレンシーコントローラ１３２を有してよく、当該コヒーレンシーコントローラ１３２は、ＦＳＢ１４から受け取った要求を処理し、キャッシュ１２間のデータコヒーレンシーを維持する。コヒーレンシーコントローラ１３２の機能は、図２に関連して以下に詳しく述べる。チップセット１３は、処理ノード１７にインターフェースを提供するメモリコントローラ１３４と、メモリ１５の記憶場所にアクセスするシステム１０の他のコンポーネントとを有してよい。メモリ１５は、ＤＲＡＭ（ダイナミックランダムアクセスメモリ）デバイス、または、サーバまたは一般的用途に適した他の揮発性または不揮発性記憶装置であってよい。
【００１８】
チップセット１３は、処理ノード１１にインターフェースを提供するＩ／Ｏコントローラ１３６と、１つ以上のＩ／Ｏデバイス１６にアクセスするシステム１０の他のコンポーネントも有してよい。Ｉ／Ｏデバイス１６は、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ  （ＩＳＡ）デバイス、Ｐｅｒｉｐｈｅｒａｌ    Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  （ＰＣＩ）デバイス、ＰＣＩ  Ｅｘｐｒｅｓｓデバイス、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ  （ＵＳＢ）デバイス、Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）デバイス、または、サーバまたは一般的用途に適した他の標準または登録商標の入出力デバイスを有してよい。いくつかの実施形態では、チップセット１３は、単一のチップセットとして実装されてよい。いくつかの実施形態では、チップセット１３は、２つ以上のチップセットとして実装されてよい。
【００１９】
プロセッサ１１は、それぞれのローカルキャッシュ１２におけるメモリのラインを格納することにより、高速アクセスを容易にしてよい。キャッシュ１２は、データ、命令、または、それらの組合せを格納してよい。各キャッシュラインに対し、キャッシュ１２は、キャッシュラインをメモリ１５内の対応するラインに関連付けるかまたはマップするタグ（例えばメモリアドレスの一部）を格納してよい。キャッシュ１２は、また、各キャッシュラインのコヒーレンシー状態を格納し、アップデートしてよい。例えば、キャッシュ１２は、キャッシュラインが変更された（Ｍ）状態、排他的（Ｅ）状態、共有（Ｓ）状態、または、有効（Ｉ）状態であってよいＭＥＳＩコヒーレンシー状態をサポートしてよい。
【００２０】
図２を参照すると、一実施形態では、コヒーレンシーコントローラ１３２は、キャッシュラインのコヒーレンシー情報を提供するスヌープフィルタ２４を有してよい。図２に示すように、コヒーレンシーコントローラ１３２の一実施形態は、いくつかのＦＳＢポート（ＦＳＢ＿Ｐｏｒｔ＿０  ２１およびＦＳＢ＿Ｐｏｒｔ＿１  ２２）、コヒーレンシーエンジン２３、スヌープフィルタ２４、および、ステージングプール２８を有してよい。
【００２１】
スヌープフィルタ２４は、例えば、コヒーレンシー情報を格納する行またはラインを有する完全結合アレイ、セット結合アレイ、または、直接マップアレイなどの１つ以上の記憶アレイを有してよい。一実施形態では、スヌープフィルタ２４は、Ｎ個のキャッシュラインのコヒーレンシー情報を格納する、各セットがＮ個のスロット（または行）２２５（図には１つしか示されていない）を含むＮ個の行の結合アレイを有する。キャッシュラインは、例えば、メモリアドレスの特定のビットを用いてセットの１つにマップされてよい。各行２２５は、ライン情報を格納してよい。情報は、アドレスタグ、ＭＥＳＩコヒーレンシー状態情報、および、存在ベクトルを含んでよい。存在ベクトルは、キャッシュラインを有しうるキャッシュにどのＦＳＢ１４が接続するかを示してよい。
【００２２】
一実施形態では、スヌープフィルタ２４は、Ｅ／Ｍ状態にあるラインに関連するエントリのみを格納してよい。このようなスヌープフィルタエントリをＥ／Ｍエントリと称してよい。すなわち、スヌープフィルタ２４は、いずれかのキャッシュがメインメモリ以外にラインの専用コピーを含むかまたは含むかも知れない場合、１ラインにつき１Ｅ／Ｍエントリを格納してよい。Ｅ／Ｍエントリのみを格納することにより、スヌープフィルタ２４に格納されるエントリの総数を減らすことができ、スヌープフィルタを有効に拡大することもできる。トレードオフとして、ＥＭエントリのみを格納することにより、スヌープフィルタ２４によって生成されるスヌープ数を増やしてよい。しかしながら、特に読み込み強化用途については、一般的に、システム全体の性能が向上する。
【００２３】
図２にさらに示されるように、スヌープフィルタ２４は、ステージングプール２８と連結されていてもよい。図２の実施形態ではこのような構造が示されているが、本発明の範囲はこれに限定されず、さまざまな実施態様では、ステージングプール２８はスヌープフィルタ２４の一部であってもよい。ステージングプール２８は、エントリが実際に退避させられ、（したがってステージングプール２８から削除され）、対応するインバリデーションメッセージがコヒーレンシーエンジン２３から１つ以上のプロセッサノードに伝送される前に、スヌープフィルタ２４から退避させられるエントリを格納してよい。
【００２４】
一実施形態では、メモリトランザクションの要求がコヒーレンシーコントローラ１３２に届くと、コヒーレンシーエンジン２３は、要求の転送先を決定してよい。メモリトランザクションは、メモリまたはキャッシュへのアクセスを要求するトランザクションのことを指す。コヒーレンシーエンジン２３は、スヌープフィルタ２４を調べてスヌープフィルタが要求されたラインの情報を持っているかどうか決定する。スヌープフィルタ２４が情報を持っている場合、コヒーレンシーエンジン２３は、ラインの存在ベクトルに基づき、ラインの現在のコピーを有するキャッシュに接続しているＦＳＢポート（２１または２２）に要求を転送する。トランザクションが要求されたラインの状態を変更する可能性がある場合、コヒーレンシーエンジン２３は、アップデートユニット２５を用いてスヌープフィルタ２４における情報をアップデートし、変更を反映する。スヌープフィルタ２４がライン情報を持っていない場合、コヒーレンシーエンジン２３は、スヌープフィルタにエントリを追加し、アップデートユニット２５を用いて要求されたラインのコヒーレンシー情報を記録してよい。
【００２５】
完全なスヌープフィルタに新しいエントリが挿入されるという状況においては、あるいは、スヌープフィルタ２４における所定のエントリに関連付けられたキャッシュからインバリデーショントランザクションを受け取る場合には、コヒーレンシーエンジン２３のインバリデーションユニット２６は、スヌープフィルタにおけるエントリを無効にするよう用いられてよい。このようなインバリデーションの実行によって、選択されたエントリはスヌープフィルタ２４から退避させられるであろう。しかしながら、退避させられるエントリのキャッシュから明示的インバリデーションライトバックトランザクションを受け取る可能性がある場合、インバリデーションユニット２６は、スヌープフィルタ２４によってエントリをステージングプール２８に送ることにより、バックインバリデーションメッセージの送信を防いでよい。
【００２６】
図３は、本発明の一実施形態における、キャッシュエージェント、スヌープフィルタ、および、ステージング領域のやりとりを示すブロック図である。特に、図３は、図２のプロセッサノードの１つに対応しうるキャッシュエージェント１７を示す。キャッシュエージェント１７は、スヌープフィルタ２４に結合され、スヌープフィルタ２４は、ステージングプール２８に結合されている。説明を簡単にすべく、図では、さらにステージングプール２８がキャッシュエージェント１７に結合されている。しかしながら、さまざまな実施態様において、スヌープフィルタ２４およびステージングプール２８は、対応するキャッシュエージェントに結合されるチップセットまたは他のインターフェースの一部であってよい。
【００２７】
動作中、例えば、レベル２（Ｌ２）キャッシュなどのキャシュエージェント１７に関連付けられたキャシュメモリは、追加の情報を格納するためには１つ以上のエントリを退避させる必要がある容量レベルにあることを決定してよい。そのようにするには、キャッシュエージェント１７は、容量退避トランザクションをスヌープフィルタ２４を含むインターフェースへと送信してよい。スヌープフィルタ２４は、インクルーシブスヌープフィルタなので、このような容量退避トランザクションを受け取ると、キャッシュエージェント１７から退避させられるべきキャッシュラインの関連するエントリを自身から退避させてよい。図３に示すように、明示的インバリデーションライトバックトランザクションがこのキャッシュラインのキャッシュエージェント１７から発行される可能性があることをスヌープフィルタ２４が決定すると、スヌープフィルタ２４からエントリを直接退避させる代わりに、スヌープフィルタ２４からのインバリデーション要求をラインの占有権を有するキャッシュエージェントに送信させ、この場合、スヌープフィルタ２４は、ペンディングのエントリをステージングプール２８に移動させてよい。すなわち、ステージングプール２８は、スヌープフィルタ２４からの退避を待っているさまざまなエントリのための記憶領域を有してよい。このエントリがステージングプール２８に入った後、所定の期間が経過する前に、キャッシュエージェント１７がインバリデーション退避トランザクションを発行した場合、バックインバリデーション要求を送信せずにステージングプール２８からエントリが退避させられてよい。
【００２８】
図４は、本発明の一実施形態における方法のフローチャートを示す。方法３００は、本発明の一実施形態に従い、スヌープフィルタからのインバリデーション要求の送信を遅らせるために用いられてよい。図４に示すように、方法３００は、キャッシュエージェントからペンディングの容量退避の表示を受け取ることから始まってよい（ブロック３１０）。次に、キャッシュエージェントからのインバリデーションライトバックトランザクションがありうるかどうかがスヌープフィルタによって決定されてよい（ひし形３２０）。上述のごとく、この決定は、キャッシュエージェントからの１つ以上のヒント、および／または、スヌープフィルタにすでに存在している情報に基づきなされてよいが、これに限定されない。このようなトランザクションが起こりそうにない場合、制御はブロック３３０へと進み、スヌープフィルタにおける情報に基づいて、関連するスヌープフィルタエントリが退避させられ、スヌープフィルタから１つ以上のキャッシュエージェントにインバリデーショントランザクションが送信されてよい。
【００２９】
しかしながら、上述のごとく、このようなインバリデーショントランザクションの送信がシステムの相互接続帯域幅に影響を及ぼすことがある。したがって、さまざまな実施形態では、キャッシュエージェントからのインバリデーションライトバックトランザクションが起こりそうな場合、制御は、ひし形３２０からブロック３４０へと進む。ここで、関連するスヌープフィルタエントリは、ステージングまたはインバリデーションプールのようなステージング領域へと移動してよい。そして、エントリがステージング領域へと移動したときから予め決められた期間内に、キャッシュエージェントからインバリデーションライトバックトランザクションを受け取ったかどうかが決定されてよい（ひし形３５０）。すなわち、新たなインバリデーションライトバックトランザクションを所定の期間内に受信することによってエントリが削除されない限り、当該ステージングプールは、送信されるべきインバリデーショントランザクションのリストと一致してよい。このような方法で、上記のようなインバリデーションライトバックトランザクションが受信された場合、スヌープフィルタからインバリデーションメッセージが送信されるのを防ぐ。
【００３０】
インバリデーションライトバックトランザクションが所定の期間内に受信された場合、インバリデーショントランザクションを送信せずにスヌープフィルタエントリが退避させられてよい（ブロック３６０）。しかしながら、このようなトランザクションを所定の期間内にキャッシュエージェントから受け取らない場合、上述のごとく制御はひし形３５０からブロック３３０へと進む。図４の実施形態で示すのは、特定の実施態様であるが、本発明の範囲はこれに限定されない。
【００３１】
このように、複数の実施形態では、インクルーシブスヌープフィルタを用いてシステムの相互接続帯域幅を縮小し、それによって有効なメモリレイテンシも短縮させ、システムの性能を高めることができる。さらに、システム資源の可用性に少なくとも一部基づいてインバリデーショントラフィックを調整することにより、システム性能のばらつきを抑えることができる。
【００３２】
複数の実施形態は、暗号で実装されてよく、命令を格納する記憶媒体に格納されてよい。命令は、当該命令を実行するシステムをプログラムするために用いられてよい。記憶媒体は、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、および、光磁気ディスクを含むいかなるタイプのディスク、ＲＯＭ（リードオンリーメモリ）、ＤＲＡＭ（ダイナミックＲＡＭ）などのＲＡＭ（ランダムアクセスメモリ）、ＳＲＡＭ（スタティックＲＡＭ）、ＥＰＲＯＭ、フラッシュメモリ、ＥＥＰＲＯＭ（登録商標）などの半導体デバイス、磁気または光カード、あるいは、電子命令を格納するのに適した他のいかなるタイプの媒体を含んでよい。
【００３３】
これまで限定した数の実施形態に関連して本発明を説明してきたが、そこからさまざまな修正および変更がなされうることが当業者には理解できよう。添付の請求項は、このような修正および変更も真の趣旨および範囲内に収まるものとしてすべて含むものとする。
【図１】
0004960989.tif 000002
【図２】
0004960989.tif 000003
【図３】
0004960989.tif 000004
【図４】
0004960989.tif 000005