(57)【要約】【課題】  マルチプロセッサ・データ処理システムにおいてコヒーレンシ管理を行うための改良された処理ユニット、データ処理システム、および方法を提供する。【解決手段】  マルチプロセッサ・データ処理システムは、少なくとも第１コヒーレンシ・ドメインおよび第２コヒーレンシ・ドメインを含み、第１コヒーレンシ・ドメインはシステム・メモリおよびキャッシュ・メモリを含む。本発明のデータを処理する方法は、キャッシュ・メモリのデータ・アレイにキャッシュ・ラインをバッファするステップと、キャッシュ・ラインがデータ・アレイにおいて有効であること、キャッシュ・ラインがキャッシュ・メモリに非排他的に保持されること、および第２コヒーレンシ・ドメインにおける別のキャッシュがそのキャッシュ・ラインのコピーを保持し得ること、を表わすためにキャッシュ・メモリのキャッシュ・ディレクトリにおける状態フィールドをコヒーレンシ状態にセットするステップと、を有する。【選択図】  図１
2008097598.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも第１コヒーレンシ・ドメインおよび第２コヒーレンシ・ドメインを含み、該第１コヒーレンシ・ドメインが少なくとも１つの処理ユニット、システム・メモリ、およびキャッシュ・メモリを含む、マルチプロセッサ・データ処理システムにおいて、データを処理する方法であって、
前記キャッシュ・メモリのデータ・アレイにおいてキャッシュ・ラインをバッファするステップと、
前記キャッシュ・ラインが前記データ・アレイにおいて有効であること、前記キャッシュ・ラインが前記キャッシュ・メモリに非排他的に保持されること、および前記第２コヒーレンシ・ドメインにおける別のキャッシュが前記キャッシュ・ラインのコピーを保持し得ること、を表わすために前記キャッシュ・メモリのキャッシュ・ディレクトリにおける状態フィールドをコヒーレンシ状態にセットするステップと、
を有する、方法。
【請求項２】
前記キャッシュ・メモリは、下位レベルのキャッシュ・メモリであり、
前記データ処理システムは前記下位レベルのキャッシュ・メモリに接続された複数の上位レベルのキャッシュ・メモリを含み、
前記コヒーレンシ状態は第１コヒーレンシ状態であり、
前記セットするステップは、前記複数の上位レベルのキャッシュ・メモリの１つから前記データ・アレイへの前記キャッシュ・ラインのキャストインに応答して、前記キャッシュ・ラインが無効であることを表わす第２コヒーレンシ状態から前記第１コヒーレンシ状態に前記状態フィールドを更新するステップを有する、
請求項１に記載の方法。
【請求項３】
前記キャッシュ・メモリは前記データ処理システムの相互接続網に接続され、
前記コヒーレンシ状態は第１コヒーレンシ状態であり、
前記キャッシュ・メモリが、前記相互接続網上の前記キャッシュ・ラインについて要求を発生するステップを更に有し、
前記セットするステップは、前記要求に対する応答として前記キャッシュ・ラインを受取ったことに応答して、前記キャッシュ・ラインが無効であること、および前記第２コヒーレンシ・ドメインにおける別のキャッシュが前記キャッシュ・ラインのコピーを保持していること、を表わす第２コヒーレンシ状態から、前記第１コヒーレンシ状態に前記状態フィールドを更新するステップを有する、
請求項１に記載の方法。
【請求項４】
前記キャッシュ・ラインを前記データ・アレイから排出するために選択するステップと、
前記キャッシュ・ラインを前記データ・アレイから排出するために選択したことに応答して、前記第２コヒーレンシ・ドメインにおける別のキャッシュが前記キャッシュ・ラインのコピーを保持しているという表示のデータレス・キャストアウトを、前記キャッシュ・メモリが行うステップと、
を更に有する、請求項１に記載の方法。
【請求項５】
前記第２コヒーレンシ・ドメインにおける別のキャッシュが前記キャッシュ・ラインのコピーを保持しているという前記表示を受取ったことに応答して、前記システム・メモリのメモリ・コントローラが、前記キャッシュ・ラインについてのドメイン標識を更新するステップを更に含む、請求項４に記載の方法。
【請求項６】
前記コヒーレンシ状態は、更に、前記キャッシュ・メモリが、キャッシュ間データ介入によって前記キャッシュ・ラインのコピーを調達するための前記第１コヒーレンシ・ドメインにおける権限を有するということを表わす、請求項１に記載の方法。
【請求項７】
少なくとも第１コヒーレンシ・ドメインおよび第２コヒーレンシ・ドメインを含むマルチプロセッサ・データ処理システムのための処理ユニットであって、該第１コヒーレンシ・ドメインはシステム・メモリおよび該処理ユニットを含み、
プロセッサ・コアと、
前記プロセッサ・コアに接続されたキャッシュ・メモリであって、
キャッシュ・ラインを保持するデータ・アレイと、
前記キャッシュ・ラインと関連付けられたエントリを含み、前記エントリは状態フィールドを含む、キャッシュ・ディレクトリと、
前記キャッシュ・ラインが前記データ・アレイにおいて有効であること、前記キャッシュ・ラインが前記キャッシュ・メモリに非排他的に保持されること、および前記第２コヒーレンシ・ドメインにおける別のキャッシュが前記キャッシュ・ラインのコピーを保持し得ること、を表わすために前記状態フィールドをコヒーレンシ状態にセットするキャッシュ・コントローラと、
を含むキャッシュ・メモリと、
を備える、処理ユニット。
【請求項８】
相互に接続された少なくともキャッシュ・コヒーレントな第１コヒーレンシ・ドメインおよび第２コヒーレンシ・ドメインを少なくとも備え、該第１コヒーレンシ・ドメインは第１システム・メモリおよび第１処理ユニットを含み、該第２コヒーレンシ・ドメインは第２システム・メモリおよび第２処理ユニットを含む、データ処理システムであって、
前記第１処理ユニットが、
プロセッサ・コアと、
前記プロセッサ・コアに接続されたキャッシュ・メモリであって、
キャッシュ・ラインを保持するデータ・アレイと、
前記キャッシュ・ラインと関連付けられたエントリを含み、前記エントリは状態フィールドを含む、キャッシュ・ディレクトリと、
前記キャッシュ・ラインが前記データ・アレイにおいて有効であること、前記キャッシュ・ラインが前記キャッシュ・メモリに非排他的に保持されること、および前記第２コヒーレンシ・ドメインにおける別のキャッシュが前記キャッシュ・ラインのコピーを保持し得ること、を表わすために前記状態フィールドをコヒーレンシ状態にセットするキャッシュ・コントローラと、
を含むキャッシュ・メモリと、
を備える、データ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、データ処理システムに関し、特にマルチプロセッサ・データ処理システムの改良に関するものである。更に詳しく云えば、本発明は、マルチプロセッサ・データ処理システムにおける階層キャッシュ・システムのコヒーレンシ管理の改良に関するものである。
【背景技術】
【０００２】
サーバ・コンピュータ・システムのような通常の対称マルチプロセッサ（ＳＭＰ）コンピュータ・システムは、典型的には１つまたは複数のアドレス・バス、データ・バス、および制御バスを含むシステム相互接続バスにすべて接続された複数の処理ユニットを含む。システム相互接続バスに接続されるシステム・メモリは、マルチプロセッサ・コンピュータ・システムにおける最低レベルの揮発性メモリを表わし、一般に、すべての処理ユニットによる読取りおよび書込みアクセスのためにアクセス可能である。システム・メモリに存在する命令およびデータに対するアクセス待ち時間を少なくするために、各処理ユニットは、典型的には、それぞれのマルチレベル・キャッシュ階層によって更に支援され、その階層の下位レベルのものが１つまたは複数のプロセッサ・コアによって共用される。
【０００３】
複数のプロセッサ・コアがデータの同じキャッシュ・ラインへの書込みアクセスを要求し得るし、修正されたキャッシュ・ラインがシステム・メモリと直接的には同期しないので、マルチプロセッサ・コンピュータ・システムのキャッシュ階層は、システム・メモリの内容に関して種々のプロセッサ・コアの「ビュー（view）」間での少なくとも最低レベルのコヒーレンシを保証するようにキャッシュ・コヒーレンシ・プロトコルを実施する。詳しく云えば、キャッシュ・コヒーレンシは、少なくとも、処理ユニットがメモリ・ブロックのコピーをアクセスし、その後、そのメモリ・ブロックの更新されたコピーをアクセスした後、処理ユニットがそのメモリ・ブロックの旧コピーを再びアクセスすることができないことを必要とする。
【０００４】
キャッシュ・コヒーレンシ・プロトコルは、一般に、キャッシュ階層の各レベルにストアされたキャッシュ・ラインと関連してストアされた一組のキャッシュ状態、およびキャッシュ階層間でキャッシュ状態の情報を伝達するために利用される一組のコヒーレンシ・メッセージを定義する。典型的な実施態様では、キャッシュ状態の情報は、周知のＭＥＳＩ（Modified, Exclusive, Shared, Invalid）プロトコルまたはその変形という形態をとり、コヒーレンシ・メッセージは、メモリ・アクセス要求の要求元および／または宛先のキャッシュ階層におけるプロトコル定義のコヒーレンシ状態の遷移を表わす。ＭＥＳＩプロトコルは、データのキャッシュ・ラインが４つの状態、即ち、Ｍ（Modified ‐ 修正済み）、Ｅ（Exclusive ‐ 排他的）、Ｓ（Shared ‐ 共用）、またはＩ（Invalid ‐ 無効）、の１つによってタグ付けされることを可能にする。「修正済み」状態は、コヒーレンシ・グラニュールが、修正されたコヒーレンシ・グラニュールをストアしているキャッシュにおいてのみ有効であるということ、および修正されたコヒーレンシ・グラニュールの値がシステム・メモリに書込まれていないということを表わす。メモリ階層におけるすべてのキャッシュのうち、その時点でコヒーレンシ・グラニュールが「排他的」として表されているとき、そのキャッシュだけがコヒーレンシ・グラニュールを保持する。しかし、「排他的」状態におけるデータは、システム・メモリと整合している。コヒーレンシ・グラニュールがキャッシュ・ディレクトリにおいて「共用」として記される場合、コヒーレンシ・グラニュールは、関連するキャッシュに、および、恐らくはメモリ階層内の１つまたは複数の他のキャッシュに存在し、そのコヒーレンシ・グラニュールのすべてのコピーがシステム・メモリと整合している。最後に、「無効」状態は、コヒーレンシ・グラニュールと関連するデータおよびアドレスが共に無効であるということを表わす。
【０００５】
各コヒーレンシ・グラニュール（例えば、キャッシュ・ライン）がセットされる状態は、そのキャッシュ・ライン内のデータの前の状態と、要求元の装置（例えば、プロセッサ）から受けたメモリ・アクセス要求のタイプとの両方に依存する。従って、システムにおいてメモリ階層を維持するということは、メモリ・ロケーションから読取るまたはメモリ・ロケーションに書込むという意図を表わすメッセージをプロセッサがシステム全体にわたって伝達することを必要とする。例えば、プロセッサが或るメモリ・ロケーションにデータを書込みたいとき、プロセッサは、先ず、そのメモリ・ロケーションにデータを書込むという意図を他のすべての処理要素に知らせなければならず、書込みオペレーションを実行するための許可を他のすべての処理要素から受けなければならない。要求元のプロセッサが受けた許可メッセージは、そのメモリ・ロケーションの内容のすべての他のキャッシュされたコピーが無効にされたということ或いは無効にされるであろうということを表わし、それによって、他のプロセッサがそれらの失効したローカル・データを間違ってアクセスしないということを保証する。
【０００６】
或るシステムでは、キャッシュ階層は、少なくとも２つのレベルのキャッシュ、即ち、レベル１（Ｌ１）または上位レベルのキャッシュと、レベル２（Ｌ２）キャッシュおよびレベル３（Ｌ３）キャッシュのような１つまたは複数のレベルの下位レベルのキャッシュを含む（Ｌ２キャッシュはＬ３キャッシュに関して上位レベルのキャッシュである）。Ｌ１キャッシュは、通常、ＭＰシステムにおける特定のプロセッサ・コアに関連した専用キャッシュである。プロセッサ・コアは、先ず、そのＬ１キャッシュにおけるデータをアクセスしようとする。要求されたデータがＬ１キャッシュにおいて見つからなかった場合、プロセッサ・コアは、要求されたデータに関して１つまたは複数の下位レベルのキャッシュ（例えば、レベル２（Ｌ２）またはレベル３（Ｌ３）キャッシュ）をアクセスする。多くの場合、最低レベルのキャッシュ（例えば、Ｌ３キャッシュ）は幾つかのプロセッサ・コアの間で共用される。
【０００７】
典型的には、上位レベルのキャッシュの合同クラスが満杯になるとき、データ・ラインが、記憶のために下位レベルのキャッシュにまたはシステム・メモリに「排出（evict）」または書き出される。しかし、いずれのメモリ階層の場合も、メモリ階層にある同じデータの複数のコピーが同時に存在し得る。より多くのスペースを上位レベルのキャッシュに与えるためにラインを排出するというポリシは、その結果として、下位レベルのキャッシュに対する更新を生じさせ、それは下位レベルのキャッシュ・ディレクトリにおけるコヒーレンシ状態情報の更新も含む。
【０００８】
従来は、キャッシュ・コヒーレンシ・プロトコルは、一般に、キャッシュ・コヒーレンシを維持するために、上位レベルのキャッシュからのキャッシュ・ラインの排出時に、上位レベルのキャッシュからのコヒーレンシ状態が下位レベルのキャッシュにコピーされるものと仮定していた。本発明は、他のデータ処理のためにキャストアウトが行われるとき、コヒーレンシ状態と各キャッシュ階層におけるコヒーレンシ状態遷移とを定義することによって、データ処理システムに対するパフォーマンスの強化を達成することが可能であると認めるものである。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、マルチプロセッサ・データ処理システムにおいてコヒーレンシ管理を行うための改良された処理ユニット、データ処理システム、および方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の一実施例によれば、データ処理システムは、少なくとも第１コヒーレンシ・ドメインおよび第２コヒーレンシ・ドメインを含み、第１コヒーレンシ・ドメインはシステム・メモリおよびキャッシュ・メモリを含む。本発明のデータを処理する方法は、キャッシュ・メモリのデータ・アレイにキャッシュ・ラインをバッファするステップと、キャッシュ・ラインがデータ・アレイにおいて有効であること、キャッシュ・ラインがキャッシュ・メモリに非排他的に保持されること、および第２コヒーレンシ・ドメインにおける別のキャッシュがそのキャッシュ・ラインのコピーを保持し得ること、を表わすためにキャッシュ・メモリのキャッシュ・ディレクトリにおける状態フィールドをコヒーレンシ状態にセットするステップと、を有する。
【００１１】
本発明のすべての目的、特徴、および利点が以下の詳細な説明において明らかになるであろう。
【発明を実施するための最良の形態】
【００１２】
I．例示的アーキテクチャの概要
図面全体を通して、同じ参照番号は同じ部分または対応する部分を指す。図１を参照すると、本発明を具現化し得る例示的なデータ処理システムを表わす高レベルのブロック図が示される。データ処理システムは、キャッシュ・コヒーレントな対称マルチプロセッサ（ＳＭＰ）・データ処理システム１００として示される。図示のように、データ処理システム１００は、データおよび命令を処理するための複数の処理ノード１０２ａ、１０２ｂを含む。処理ノード１０２は、アドレス、データ、および制御情報を搬送するためのシステム相互接続網１１０に接続される。システム相互接続網１１０は、例えば、バス型の相互接続網、交換型の相互接続網、またはハイブリッド相互接続網として具現化することが可能である。
【００１３】
図示の実施例では、各処理ノード１０２は、４つの処理ユニット１０４ａ〜１０４ｄを含むマルチチップ・モジュール（ＭＣＭ）として具現化される。各処理ユニットは、それぞれの集積回路として具現化されることが望ましい。各処理ノード１０２における処理ユニット１０４は、ローカル相互接続網１１４によって相互におよびシステム相互接続網１１０にコミュニケーションを行うために接続される。ローカル相互接続網１１４は、システム相互接続網１１０のように、例えば、１つまたは複数のバスまたはスイッチを用いて具現化することも可能である。
【００１４】
図２に示されるように、各処理ユニット１０４は、それぞれのシステム・メモリ１０８に接続された統合メモリ・コントローラ（ＩＭＣ）２０６を含む。システム・メモリ１０８に存在するデータおよび命令は、一般に、データ処理システム１００内の任意の処理ノード１０２の任意の処理ユニット１０４におけるプロセッサ・コアがアクセスおよび修正することも可能である。本発明の別の実施例では、１つまたは複数のメモリ・コントローラ２０６（およびシステム・メモリ１０８）をシステム相互接続網１１０またはローカル相互接続網１１４に接続することも可能である。
【００１５】
図１のＳＭＰデータ処理システム１００が、相互接続ブリッジ、不揮発性記憶装置、ネットワークまたは付属装置等への接続のためのポート、のような多くの更なる図示されてないコンポーネントを含み得るということは当業者には明らかであろう。そのような更なるコンポーネントは、本発明の理解にとっては必要のないものなので図１には示されず、これ以上説明されない。しかし、本発明によって提供される機能強化が様々なアーキテクチャのキャッシュ・コヒーレントなデータ処理システムに適用可能であって、図１に示された汎用データ処理システム・アーキテクチャにまったく限定されないということは当然である。
【００１６】
図２を参照すると、本発明に従って例示的な処理ユニット１０４の更に詳細なブロック図が示される。図示の実施例では、単一の集積回路として都合よく具現化し得る各処理ユニット１０４は、互いに独立して命令およびデータを処理するための４つのプロセッサ・コア２００ａ〜２００ｄを含む。１つの好適な実施例では、各プロセッサ・コア２００は、複数（例えば、２つ）の同時的なハードウェア・スレッドの実行を支援する。
【００１７】
各プロセッサ・コア２００のオペレーションはマルチ・レベルの揮発性メモリ・サブシステムによって支援され、そのメモリ・サブシステムは、共用システム・メモリ１０８を最低レベルで有し、キャッシュ可能なアドレス内に存在するデータおよび命令をキャッシュするための２つまたはそれ以上のレベルのキャッシュ・メモリを上位レベルで有する。図示の実施例では、キャッシュ・メモリ階層は、各プロセッサ・コア２００内にあってそのプロセッサ・コア専用のそれぞれのストア・スルー・レベル１（Ｌ１）キャッシュ（図示されてない）、各プロセッサ・コア２００に専用のそれぞれのストア・イン・レベル２（Ｌ２）キャッシュ２３０、およびＬ２キャストアウト（castout）をバッファするためのＬ３ビクティム（victim）・キャッシュ２３２を含む。図示の実施例では、プロセッサ・コア２００ａおよび２００ｄがそれぞれのＬ３キャッシュ２３２ａを共用し、プロセッサ・コア２００ｂおよび２００ｃがＬ３キャッシュ２３２ｂを共用する。もちろん、別の実施例では、プロセッサ・コア２００の各々がそれ自身のＬ３キャッシュ２３２を有することも可能である。図２に示されたものを含む少なくともいくつかの実施例では、Ｌ３キャッシュ２３２ａ、２３２ｂがデータ交換を可能にするために更に相互に接続される。このデータ交換は、プロセッサ・コア２００によってアクセスされそうなデータを処理ユニット１０４のキャッシュ階層内にできるだけ長い期間保存するために、一方のＬ３キャッシュ２３２がそれのキャッシュ・ラインの１つを他方のＬ３キャッシュ２３２にキャストアウトすることを可能にすることを含む。
【００１８】
各処理ユニット１０４は応答ロジック２１０の一例を含み、その応答ロジックは、データ処理システム１００内のキャッシュ・コヒーレンシを維持する分散型のコヒーレンシ信号機構の一部を実装する。更に、各処理ユニット１０４は、処理ユニット１０４と、ローカル相互接続網１１４およびシステム相互接続網１１０との間の通信を管理するための相互接続ロジック２１２の一例を含む。Ｌ２キャッシュ２３０およびＬ３キャッシュ２３２の各々は、図１の相互接続網１１０および１１４を介したデータおよびコヒーレンシ通信における参加を可能にするために相互接続ロジック２１２に接続される。最後に、各処理ユニット１０４は、Ｉ／Ｏ装置２１６のような１つまたは複数のＩ／Ｏ装置の接続を支援する統合Ｉ／Ｏコントローラ２１４を含む。Ｉ／Ｏコントローラ２１４は、Ｉ／Ｏ装置２１６による要求に応答してローカル相互接続網１１４および／またはシステム相互接続網１１０上のオペレーションを生じさせることが可能である。
【００１９】
次に図３を参照すると、図２の処理ユニット１０４におけるプロセッサ・コア２００およびＬ２キャッシュ２３０の更に詳細なブロック図が示される。図示のように、プロセッサ・コア２００は、実行のために命令をフェッチして順序付けるための命令シーケンス・ユニット（ＩＳＵ）３００、命令を実行するための１つまたは複数の実行ユニット３０２、およびＬ１キャッシュ３０６を含む。
【００２０】
実行ユニット３０２は、データをメモリからロードさせるためにおよびメモリにストアさせるためにメモリ・アクセス命令（例えば、ロードおよびストア命令）を実行するロード・ストア・ユニット（ＬＳＵ）３０４を含む。メモリ・サブシステムによるコヒーレンシ・プロトコルの実施を通してそのようなメモリ・アクセス・オペレーションを行うとき、メモリ内容のコヒーレントなビューが維持される。
【００２１】
本発明によれば、分離したＬ１データおよび命令キャッシュを含み得るＬ１キャッシュ３０６は、他のプロセッサ・コア２００に関するキャッシュ・コヒーレンシのポイントがＬ１キャッシュ３０６の下に置かれ、図示の実施例では、Ｌ２キャッシュ２３０に置かれるということを意味するストア・スルー・キャッシュとして具現化される。従って、Ｌ１キャッシュ３０６は、それのキャッシュ・ラインに関して真のキャッシュ・コヒーレンシ状態を維持するのではなく、有効／無効ビットを維持するだけである。
【００２２】
Ｌ２キャッシュ２３０は、命令およびデータのキャッシュ・ラインをストアするデータ・アレイ３１０、およびデータ・アレイ３１０のキャッシュ・ディレクトリ３１２を含む。通常のセット・アソシアティブ・キャッシュにおけるように、システム・メモリ１０８におけるメモリ・ブロックは、システム・メモリ（実）アドレス内の所定のインデックス・ビットを利用してデータ・アレイ３１０内の特定の合同クラスにマップされる。一実施例では、コヒーレンシ・システムに対する標準のメモリ・ブロックは１２８バイトのキャッシュ・ラインにセットされる。データ・アレイ３１０内にストアされた特定のメモリ・ブロックまたはキャッシュ・ラインがキャッシュ・ディレクトリ３１２に記録される。なお、キャッシュ・ディレクトリ３１２は、データ・アレイ３１０における各キャッシュ・ラインに対して１つのディレクトリ・エントリを含む。当業者には明らかであるように、キャッシュ・ディレクトリ３１２における各ディレクトリ・エントリは、少なくとも、対応する実アドレスの一部分を利用してデータ・アレイ３１０に記憶された特定のキャッシュ・ラインを指定するタグ・フィールド３１４、キャッシュ・ラインのコヒーレンシ状態を表わす状態フィールド３１６、および同じ合同クラスにおける他のキャッシュ・ラインに関してそのキャッシュ・ラインに対する置換順序を表わすＬＲＵ（最低使用頻度）フィールド３１８を含む。
【００２３】
更に図３に示されるように、Ｌ２キャッシュ２３０は、Ｌ２キャッシュ２３０のデータおよびコヒーレンシ・オペレーションを制御するキャッシュ・コントローラ３３０も含む。キャッシュ・コントローラ３３０は、関連のプロセッサ・コア２００から受けたロード（ＬＤ）要求およびストア（ＳＴ）要求を独立して且つ同時にサービスするための複数の読取り・クレーム（Read-Claim : ＲＣ）・マシン３３２、並びに、関連のプロセッサ・コア２００以外のプロセッサ・コアによって発生され且つローカル相互接続網１１４から「スヌープされた」リモート・メモリ・アクセス要求を独立して且つ同時にサービスするための複数のスヌープ（ＳＮ）・マシン３３４を含む。明らかなように、ＲＣマシン３３２によるメモリ・アクセス要求のサービスは、データ・アレイ３１０内のメモリ・ブロックの置換または無効化を必要とすることがある。従って、キャッシュ・コントローラ３３０は、データ・アレイ３１０からのメモリ・ブロックの除去または書き戻しを管理する複数のＣＯ（キャストアウト）マシン３３６も含む。
【００２４】
次に図４を参照すると、本発明に従ってＬ３キャッシュの実施例の更に詳細なブロック図が示される。図３および図４を比較するとわかるように、Ｌ２キャストアウトをバッファするためのビクティム・キャッシュとして働くＬ３キャッシュ２３２は、図３のＬ２キャッシュ２３０と同様に構成される。従って、Ｌ３キャッシュ２３２は、セット・アソシアティブ・データ・アレイ３６０、データ・アレイ３６０の内容のキャッシュ・ディレクトリ３６２、およびキャッシュ・コントローラ３８０を含む。
【００２５】
キャッシュ・ディレクトリ３６２における各ディレクトリ・エントリは、対応する実アドレスの一部分を利用してデータ・アレイ３６０にストアされた特定のキャッシュ・ラインを指定するタグ・フィールド３６４、キャッシュ・ラインのコヒーレンシ状態を表わす状態フィールド３６６、および同じ合同クラスにおける他のキャッシュ・ラインに関してそのキャッシュ・ラインに対する置換順序を表わすＬＲＵ（最小使用頻度）フィールド３６８を含む。キャッシュ・コントローラ３８０は、図３に関連して上述したように、複数のスヌープ（ＳＮ）・マシン３８４および複数のキャストアウト（ＣＯ）・マシン３８６を含む。ＲＣマシンの代わりに、キャッシュ・コントローラ３８０は、垂直方向に接続されたＬ２キャッシュ２３０のデータ要求をサービスする複数の読取り（ＲＤ）マシン３８２を含む。
【００２６】
II．例示的オペレーション
次に図５を参照すると、図１のデータ処理システム１００のローカル相互接続網１１４またはシステム相互接続網１１０を介した例示的オペレーションの時空線図が示される。相互接続網１１０、１１４は必ずしもバス型の相互接続網ではないが、１つまたは複数のローカル相互接続網１１４および／またはシステム相互接続網１１０を介して伝送されるオペレーションは本明細書では「バス・オペレーション」と呼ばれ、プロセッサ・コア２００とそれ自身のキャッシュ階層内にあるキャッシュ・メモリとの間で伝送されるＣＰＵ要求とは区別される。
【００２７】
図示のバス・オペレーションは、Ｌ２キャッシュ２３０のＲＣマシン３３２またはＩ／Ｏコントローラ２１４のようなマスタ（Ｍ）４００がローカル相互接続網１１４および／またはシステム相互接続網１１０を介して要求４０２を発生するときに開始する。要求４０２は、所望のアクセスのタイプを表わすトランザクション・タイプおよびその要求によってアクセスされるべきリソースを表わすリソース識別子（例えば、実アドレス）を含むことが望ましい。要求の一般的なタイプは、下記の表１に示されるものを含むことが望ましい。
【表１】
2008097598.tif 000003
【００２８】
要求４０２は、Ｌ２キャッシュ２３０のスヌープ・マシン３３４、Ｌ３キャッシュ２３２のスヌープ・マシン３８４のようなスヌーパ４１２、およびメモリ・コントローラ２０６（図２）によって受取られる。一般的には、若干の例外はあるものの、要求４０２は、それが処理ユニット１０４によって内部的にサービスされ得ない場合にだけローカル相互接続網１１４および／またはシステム相互接続網１１０を介して伝送されるので、要求４０２を発生したＲＣマシン３３２と同じＬ２キャッシュ２３０におけるスヌープ・マシン３３４および接続されたＬ３キャッシュ２３２のスヌープ・マシン３８４は要求４０２をスヌープしない（即ち、一般的には、自己スヌーピングは存在しない）。要求４０２を受取る各スヌーパ４１２は、少なくとも要求４０２に対するそのスヌーパの応答を表わすそれぞれの部分的応答４０６を供給し得る。メモリ・コントローラ２０６は、例えば、そのメモリ・コントローラ２０６が要求アドレスに対して責任を負うのかどうか、およびそれが要求のサービスのために使用可能なリソースを有するかどうかに基づいて供給すべき部分的応答４０６を決定する。Ｌ２またはＬ３キャッシュは、例えば、Ｌ２キャッシュ・ディレクトリの利用可能性、要求を処理すべきスヌープ・マシンの使用可能性、およびキャッシュ・ディレクトリにおける要求アドレスと関連したコヒーレンシ状態、に基づいてその部分的応答４０６を決定することが可能である。
【００２９】
スヌーパ４１２の部分的応答が、１つまたは複数の応答ロジック２１０によって段階的にまたはすべてを一時に論理的に結合され、要求４０２に対するシステム・ワイドの結合応答（ＣＲ）４１０を決定する。後述の範囲制限次第で、応答ロジック２１０は結合応答４１０を、ローカル相互接続網１１４および／またはシステム相互接続網１１０を介してバス・オペレーションのマスタおよびスヌーパに与えて要求４０２に対するシステム・ワイドの応答（例えば、成功、失敗、再試行等）を表示させる。ＣＲ４１０が要求４０２の成功を表わす場合、ＣＲ４１０は、例えば、要求されたメモリ・ブロックのデータ・ソース、その要求されたメモリ・ブロックがキャッシュされるキャッシュ状態、および１つまたは複数のＬ２キャッシュ２３０またはＬ３キャッシュ２３２におけるその要求されたメモリ・ブロックを無効にする「クリーンアップ」オペレーションが必要であるかどうかを表わすことも可能である。
【００３０】
典型的には、結合応答４１０を受取ったことに応答して、１つまたは複数のマスタ４００およびスヌーパ４１２が要求４０２をサービスするために１つまたは複数のオペレーション実行する。これらのオペレーションは、データをマスタ４００に供給すること、１つまたは複数のＬ２キャッシュまたはＬ３キャッシュにおいてキャッシュされたデータのコヒーレンシ状態を無効にするかまたは更新すること、キャストアウト・オペレーションを遂行すること、データをシステム・メモリ１０８に書き戻すこと等を含み得る。要求４０２によって求められる場合、要求されたメモリ・ブロックまたはターゲット・メモリ・ブロックは、応答ロジック２１０による結合応答４１０の発生の前または後にマスタ４００にまたはマスタ４００から伝送され得る。
【００３１】
以下の記述では、要求に対するスヌーパ４１２の部分的応答およびその要求および／またはその結合応答に応答して行われるオペレーションを、スヌーパが「コヒーレンシの最高ポイント（Highest Point of Coherency : ＨＰＣ）」、「コヒーレンシの最低ポイント（Lowest Point ofCoherency : ＬＰＣ）」であるかどうかに関連して、または要求によって指定された要求アドレスに関連なく、説明することにする。ＬＰＣは、本明細書では、メモリ・ブロックに対するリポジトリとして作用するメモリ装置またはＩ／Ｏ装置として定義される。メモリ・ブロックに対するＨＰＣが存在しない場合、ＬＰＣは、そのメモリ・ブロックの真のイメージを保持し、そのメモリ・ブロックの更なるキャッシュされたコピーを発生するための要求を許容または拒否する権限を有する。図１および図２のデータ処理システムの実施例における一般的な要求に関して、ＬＰＣは、参照メモリ・ブロックを保持するシステム・メモリ１０８のためのメモリ・コントローラ２０６であろう。ＨＰＣは、本明細書では、メモリ・ブロックの真のイメージ（ＬＰＣにおける対応するメモリ・ブロックと整合していてもよく或いは整合していなくてもよい）をキャッシュし且つメモリ・ブロックを修正するための要求を許容または否定する権限を有する一意的に識別された装置として定義される。記述的には、ＨＰＣは、メモリ・ブロックを修正しないオペレーションに応答して要求元にメモリ・ブロックのコピーを供給することも可能である。従って、図１および図２のデータ処理システムの実施例における一般的な要求に対してＨＰＣは、存在するとすれば、Ｌ２キャッシュ２３０であろう。メモリ・ブロックに対するＨＰＣを指定するために他の標識を利用することも可能であるが、本発明の好適な実施例は、下記の表２に関連して更に説明するように、Ｌ２キャッシュ２３０のＬ２キャッシュ・ディレクトリ３１２またはＬ３キャッシュ２３２のＬ３キャッシュ・ディレクトリ３６２における選択されたキャッシュ・コヒーレンシ状態を利用してメモリ・ブロックに対するＨＰＣを、それが存在する場合、指定する。
【００３２】
図５を更に参照すると、要求４０２において参照されたメモリ・ブロックに対するＨＰＣが存在する場合にはそのＨＰＣが、またはＨＰＣの不存在の場合にはそのメモリ・ブロックのＬＰＣが、保護ウィンドウ４０４ａの期間中に要求４０２に応答してメモリ・ブロックの所有権の移動を防止する責任を有することが望ましい。図５に示された例示的な過程では、要求４０２の要求アドレスによって指定されたメモリ・ブロックに対するＨＰＣであるスヌーパ４１２は、スヌーパ４１２がその部分的応答４０６を決定する時間から、スヌーパ４１２が結合応答４１０を受取るまで延びている保護ウィンドウ４０４ａの期間中におけるマスタ４００へのその要求されたメモリ・ブロックの所有権の移転を防止する。保護ウィンドウ４０４ａの期間中、スヌーパ４１２は、同じ要求アドレスを指定する他の要求に対する部分的応答を供給することによって所有権の移転を防止する。なお、その部分的応答は、所有権がマスタ４００に成功裏に移転してしまうまで他のマスタが所有権を得ることを防止する。マスタ４００は、同様に、結合応答４１０の受け取りに続いて要求４０２において要求されたメモリ・ブロックの所有権を保護するために、保護ウィンドウ４０４ｂを開始する。
【００３３】
III．データ配布領域
通常のブロードキャスト・ベースのデータ処理システムは、ブロードキャスト通信を通してキャッシュ・コヒーレンシおよびデータ配送の両方を処理する。ブロードキャスト通信は、通常のシステムでは、システム相互接続網を通して少なくともそのシステムにおけるすべてのメモリ・コントローラおよびキャッシュ階層に伝送される。別のアーキテクチャおよび同様の規模のシステムと比べると、ブロードキャスト・ベースのシステムは少ないアクセス待ち時間、並びに、共用メモリ・ブロックの良好なデータ処理およびコヒーレンシ管理の提供に有用である。
【００３４】
ブロードキャスト・ベースのシステムは大きさが増大するので、システム相互接続網におけるトラフィック量は増加し、それは、システム相互接続網を介した通信のために更なる帯域幅を必要とするので、システムのコストがシステムの規模と共に急激に上昇することを意味する。即ち、ｍ個のプロセッサ・コアを有し、各プロセッサ・コアの平均トラフィック量がｎ個のトランザクションであるシステムは、ｍ＊ｎのトラフィック量を有することになり、それは、ブロードキャスト・ベースのシステムにおけるトラフィック量が加算的ではなく乗算的に増加することを意味する。かなり大きな相互接続網の帯域幅を必要とするほかに、システム・サイズの増加は、アクセス待ち時間の増加という二次的効果を有する。例えば、データ読取りのアクセス待ち時間は、最悪の場合、要求されたデータが調達される要求されたメモリ・ブロックを共用コヒーレンシ状態で保持する最も遠い低レベル・キャッシュの結合応答待ち時間によって制限される。
【００３５】
ブロードキャスト・ベースのシステムの利点を保持しながら、システム相互接続網の帯域幅要件およびアクセス待ち時間を少なくするために、データ処理システム１００全体にわたって分散した複数のＬ２キャッシュは、これらのキャッシュが、キャッシュ間介入を使って要求元のＬ２キャッシュ２３０にメモリ・ブロックを供給することを可能にする「特別」共用コヒーレンシ状態で同じメモリ・ブロックのコピーを保持することを可能にする。データ処理システム１００のようなＳＭＰデータ処理システムにおいて複数の同じ権限を持つ分散リソースを具現化するためには、２つの問題点が扱われなければならない。第１に、上述の「特別」共用コヒーレンシ状態におけるメモリ・ブロックのコピーの作成を管理するルールが実施されなければならない。第２に、スヌーピングＬ２キャッシュ２３０が存在する場合、どのスヌーピングＬ２キャッシュが、例えば、バス読取りオペレーションまたはバスＲＷＩＴＭオペレーションに応答して、共用メモリ・ブロックを要求元のＬ２キャッシュ２３０に供給するのかを管理するルールがなければならない。
【００３６】
本明細書では、これらの問題点がいずれもデータ処理ドメインの実装を通して扱われる。詳しく云えば、ＳＭＰデータ処理システム内の各ドメイン（なお、ドメインは、データ要求に対する応答に参加する１つまたは複数の下位レベルの（例えば、Ｌ２またはＬ３）キャッシュを含むように定義される）が、特定のメモリ・ブロックを「特別」共用コヒーレンシ状態で保持する唯一のキャッシュを含むことを許される。そのキャッシュが存在する場合、そのキャッシュは、バス読取りタイプ（例えば、ＲＥＡＤまたはＲＷＩＴＭ）オペレーションが同じドメインにおける要求元のキャッシュによって開始されるとき、要求元のキャッシュに対してその要求されたメモリ・ブロックを調達する責任を負う。多くの異なるドメイン・サイズを定義することが可能であるが、図１のデータ処理システム１００において、各処理ノード１０２（即ち、ＭＣＭ）がデータ調達ドメインと見なされる場合、それは好都合である。表２を参照して、そのような「特別」共用状態（例えば、Ｓl およびＳlg）の例を後述する。
【００３７】
IV．コヒーレンシ・ドメイン
上述のデータ配送ドメインの実施はデータ・アクセス待ち時間を改良するが、この機能強化は、システムの規模が増大すると、ｍ＊ｎの乗算的なトラフィック量に対処しない。ブロードキャスト・ベースのコヒーレンシ機構を維持しながらトラフィック量を減らすために、本発明の好適な実施例は、更に、前述のデータ配送ドメインのように、各処理ノード１０２が別々のコヒーレンシ・ドメインを形成することによって都合よく（しかし必要なことではないが）実施することが可能である。データ配送ドメインおよびコヒーレンシ・ドメインは、共存することが可能であるがその必要はなく、データ処理システム１００の例示的オペレーションを説明する目的で、以下では、処理ノード１０２によって定義された境界を持つものと仮定する。
【００３８】
コヒーレンシ・ドメインの実施は、全コヒーレンシ・ドメインよりも少ないコヒーレンシ・ドメインによる参加によって要求がサービスされる場合、システム相互接続網１１０を介したドメイン間のブロードキャスト通信を制限することによってシステム・トラフィックを減少させる。例えば、処理ノード１０２ａの処理ユニット１０４ａが発生すべきバス読取りオペレーションを有する場合、処理ユニット１０４ａは、他のコヒーレンシ・ドメイン（例えば、処理ノード１０２ｂ）における参加者を除いた、それ自身のコヒーレンシ・ドメイン（例えば、処理ノード１０２ａ）内の参加者全部に、最初に、バス読取りオペレーションをブロードキャストすることを選択し得る。オペレーションのマスタと同じコヒーレンシ・ドメイン内の参加者のみに送られるブロードキャスト・オペレーションは、本明細書では、「ローカル・オペレーション」として定義される。ローカル・バス読取りオペレーションが処理ユニット１０４ａのコヒーレンシ・ドメイン内でサービスされ得る場合、バス読取りオペレーションの更なるブロードキャストは行われない。しかし、ローカル・バス読取りオペレーションが処理ノード１０２ａのコヒーレンシ・ドメイン内で単独ではサービスされ得ないということを、そのローカル・バス読取りオペレーションに対する部分的応答および結合応答が表わす場合、ローカル・コヒーレンシ・ドメインの他に、１つまたは複数の更なるコヒーレンシ・ドメインを含むようにブロードキャストの範囲を拡張することも可能である。
【００３９】
基本的な実施態様では、２つのブロードキャスト範囲、即ち、ローカル・コヒーレンシ・ドメインのみを含む「ローカル」範囲およびＳＭＰデータ処理システムにおける他のすべてのコヒーレンシ・ドメインを含む「グローバル」範囲、が使用される。従って、本明細書では、ＳＭＰデータ処理システムにおけるすべてのコヒーレンシ・ドメインに送られるオペレーションは「グローバル・オペレーション」として定義される。重要な点として、更に拡張的な範囲のローカル・オペレーション（例えば、グローバル・オペレーション）がオペレーションのサービスのために使用されるかどうかに関係なく、キャッシュ・コヒーレンシはＳＭＰデータ処理システムにおけるすべてのコヒーレンシ・ドメインにわたって維持される。ローカル・オペレーションおよびグローバル・オペレーションの例は、米国特許出願番号１１／０５５,６９７号の明細書に詳細に説明されている。
【００４０】
好適な実施例では、オペレーションの範囲は、一実施例では、１ビット・フラッグを含み得るローカル／グローバル範囲標識（信号）によりバス・オペレーションにおいて表される。処理ユニット１０４における相互接続ロジック２１２は、ローカル相互接続網１１４を介して受取られたオペレーションを、そのオペレーションにおけるローカル／グローバル範囲標識（信号）の設定に基づいてシステム相互接続網１１０上に転送すべきかどうかを決定することが望ましい。
【００４１】
V．ドメイン標識
不要なローカル・オペレーションの発生を制限し、それによって、操作待ち時間を減少させ且つローカル相互接続網における更なる帯域幅を浪費しないようにするために、本発明は、関連のメモリ・ブロックのコピーがローカル・コヒーレンシ・ドメインの外でキャッシュされるかどうかを表わす、メモリ・ブロック当たりのドメイン標識を実装することが望ましい。図６は、本発明によるドメイン標識の第１実施例を示す。図６に示されるように、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）において具現化されるシステム・メモリ１０８は複数のメモリ・ブロック５００をストアする。システム・メモリ１０８は、システム・メモリにエラーが存在する場合にそのエラーを訂正するために利用される関連のエラー訂正コード（ＥＣＣ）５０２およびドメイン標識５０４を各メモリ・ブロックと関連してストアする。本発明の或る実施例では、ドメイン標識５０４は特定のコヒーレンシ・ドメインを識別し（即ち、コヒーレンシ・ドメインまたはノードＩＤを指定し）得るが、関連のメモリ・ブロック５００が、たとえそれがキャッシュされるとしても、メモリ・ブロック５００に対するＬＰＣとして作用するメモリ・コントローラ２０６と同じコヒーレンシ・ドメイン内でしかキャッシュされない場合、ドメイン標識５０４は（例えば、「ローカル」を表わすために「１」に）セットされる１ビットの標識である、ということを、以後、仮定する。さもなければ、ドメイン標識５０４は（例えば、「グローバル」を表わすために「０」に）リセットされる。「ローカル」を表わすようにドメイン標識５０４を設定することは、「グローバル」を誤って設定しても如何なるコヒーレンシ・エラーも生じさせないという点で、不正確に具現化され得るし、オペレーションの不要なグローバル・ブロードキャストの原因ともなり得る。
【００４２】
オペレーションに応答してメモリ・ブロックを調達するメモリ・コントローラ２０６は、要求されたブロックと共に関連のドメイン標識５０４を送ることが望ましい。
【００４３】
VI．例示的コヒーレンシ・プロトコル
好適な実施例では、Ｌ２キャッシュ２３０およびＬ３キャッシュ２３２が種々の周知のＭＥＳＩプロトコルを使用する。コヒーレンシ状態の集合体は、
（１）キャッシュがメモリ・ブロックに対するＨＰＣであるかどうかの表示、
を提供する他に、次のような３つの属性を表示する。
（２）キャッシュされたコピーがそのメモリ階層レベルにおけるキャッシュ間で独得である（即ち、唯一のキャッシュされたコピーである）かどうかの表示、
（３）キャッシュがメモリ・ブロックのコピーを要求のマスタに提供し得るかどうか、およびいつそれを提供し得るかの表示、
（４）メモリ・ブロックのキャッシュされたイメージがＬＰＣにおける対応するブロックと整合しているかどうかの表示。
これらの４つの属性は、下記の表２において要約されるコヒーレンシ・プロトコル状態において表される。
【表２】
2008097598.tif 000004
2008097598.tif 000005
2008097598.tif 000006
【００４４】
図１に関連して説明したデータ処理システム１００の実施例において、ドメインは、関連のメモリ・ブロックと共にＬ２／Ｌ３キャッシュ２３０、２３２によって受取られ、任意選択的に、そのメモリ・ブロックをデータ・アレイ３１０、３６０にストアされ得る。この構成はドメイン標識のための単純化されたデータ・フローを可能にするが、第１のＬ２キャッシュ２３０が、要求されたメモリ・ブロックを供給することによって異なるコヒーレンシ・ドメインにある第２のＬ２キャッシュ２３０のＲＷＩＴＭオペレーションに応答するとき、ローカル・コヒーレンシ・ドメインにおいてキャッシュされたままの「グローバル」標識はない。従って、ＬＰＣは、そのメモリ・ブロックが、たとえキャッシュされたとしても、ローカル的にしかキャッシュされないということが知られているかどうかを決定するためにアクセスされなければならない。その結果、メモリ・ブロックに対するＨＰＣがリモート・コヒーレンシ・ドメインにおける要求元からバスＲＷＩＴＭオペレーション（または、他のストレージ修正オペレーション）を受取る場合、システムは、要求されたメモリ・ブロックのキャッシュ・キャストアウトおよびバスＲＷＩＴＭオペレーションの再試行を含むリトライ・プッシュ（retry-push）でもって応答する。明らかなように、リトライ・プッシュ・オペレーションと関連した待ち時間および帯域幅利用を排除することが望ましい。
【００４５】
ドメイン標識に対するアクセス待ち時間を少なくするために、Ig（Invalid Global : 無効グローバル）および Slg（Shared Local Global : 共用ローカル・グローバル）コヒーレンシ状態が提供される。Ig状態は、本明細書では、次の３つの状態を表わすキャッシュ・コヒーレンシ状態として定義される。
（１）キャッシュ・アレイにおける関連のメモリ・ブロックが無効である、
（２）キャッシュ・ディレクトリにおけるアドレス・タグが有効である、
（３）リモート・コヒーレンシ・ドメインにおけるキャッシュに対して、アドレス・タグにより識別されたメモリ・ブロックの修正コピーが調達された。
Sg状態は、本明細書では、次の４つの状態を表わすキャッシュ・コヒーレンシ状態として定義される。
（１）キャッシュ・アレイにおける関連のメモリ・ブロックが有効である、
（２）キャッシュ・ディレクトリにおけるアドレス・タグが有効である、
（３）リモート・コヒーレンシ・ドメインにおけるキャッシュへの、アドレス・タグにより識別されたメモリ・ブロックの修正コピーが調達された。
（４）メモリ・ブロックのコピーが保持されたし、更に、他のキャッシュに保持されることも可能である。
Slg状態は、本明細書では、次の５つの状態を表わすキャッシュ・コヒーレンシ状態として同様に定義される。
（１）キャッシュ・アレイにおける関連のメモリ・ブロックが有効である、
（２）キャッシュ・ディレクトリにおけるアドレス・タグが有効である、
（３）リモート・コヒーレンシ・ドメインにおけるキャッシュへの、アドレス・タグにより識別されたメモリ・ブロックの修正コピーが調達された。
（４）メモリ・ブロックのコピーが保持され、更に、他のキャッシュに保持されることも可能である。
（５）キャッシュ対キャッシュのデータ介入によって、キャッシュがコヒーレンシ・ドメインにおけるマスタへのメモリ・ブロックのコピーを調達する権限を有する。
【００４６】
所与のメモリ・ブロックに対する Ig、Sg、および Slg を、そのメモリ・ブロックに対するＬＰＣを含むコヒーレンシ・ドメイン内に、形成することが望ましいことがある。このような実施例では、或る機構（例えば、ＬＰＣによる部分的応答、およびその後の結合した応答）は、ＬＰＣがローカル・コヒーレンシ・ドメイン内にあるということを、要求されたメモリ・ブロックを調達するキャッシュに表示するように具現化されなければならない。ＬＰＣがローカルであるという表示の伝達を支援しない他の実施例では、Ig、Sg、およびSlg 状態は、リモート・コヒーレンシ・ドメインに対するメモリ・ブロックが調達されるときに形成され、従って、Ig、Sg、および Slg が不正確に形成されることがある。
【００４７】
幾つかのルールがIg、Sg、および Slg（集合的には Ｘg と呼ばれる）キャッシュ・エントリの選択および置換を管理する。第１に、キャッシュが Ｘg エントリを置換のためのビクティムとして選択する場合、Ｘgエントリのキャストアウトが（I または S エントリが選択されるときの場合とは異なって）行われる。第２に、Ｘg 状態のキャストアウトは、ローカル・オペレーションとして行われることが望ましく、或いは、グローバル・オペレーションとして行われる場合、キャストアウト・アドレスのリモートＬＰＧによって無視される。Ｘgエントリが、メモリ・ブロックに対するＬＰＣと同じコヒーレンシ・ドメイン内にないキャッシュにおいて形成することを許される場合、ＬＰＣにおけるドメイン標識に対する更新は必要ない。第４に、Ｘg状態のキャストアウトは、ドメイン標識が（そのキャストアウト行うキャッシュにとってはローカルである場合）ＬＰＣに書き戻されるというデータレス・アドレス・オンリ・オペレーションとして行われることが望ましい。
【００４８】
Ｘg状態を含むキャッシュ・ディレクトリ・エントリは潜在的に有用な情報を搬送するので、少なくとも幾つかの実施態様では、例えば、ＬＲＵフィールド３１８、３６８を評価するために利用される最低使用頻度（ＬＲＵ）アルゴリズムを、置換のためのビクティム・キャッシュ・エントリを選択するように修正することによって、同じベース状態（例えば、ＳまたはＩ）を有する他のエントリを介してエントリをＸg状態に優先的に保持することが望ましい。Ｘg ディレクトリ・エントリはキャッシュに保持されるので、Ｘg 状態の形成を生じさせた排他的アクセス要求を有するキャッシュが、メモリ・ブロックのアドレス・タグをＸg状態で保持するキャッシュに通知することなく、そのメモリ・ブロックのコピーを割当て解除しまたは書き戻し得る時間にわたって、そのようなエントリは「失効」することがあり得る。そのような場合、ローカル・オペレーションの代わりにグローバル・オペレーションが発生されなければならないということを間違って表わす「失効」したＸg状態は如何なるコヒーレンシ・エラーを生じないであろうが、そうでない場合にローカル・オペレーションを利用してサービスされ得る幾つかのオペレーションをグローバル・オペレーションとして発生させるだけであろう。そのような非効率の発生は、「失効」のサブｇキャッシュ・エントリの最終的な置換によって期間を制限されるであろう。
【００４９】
Ｘgコヒーレンシ状態の実施は、（Ig の場合）コヒーレンシ・ドメインにおいてキャッシュされたままになっているメモリ・ブロックの有効コピーがないときでも、コヒーレンシ・ドメインにおけるメモリ・ブロックに対するキャッシュされたドメイン標識を維持することによって通信効率を改善する。その結果、メモリ・ブロックに対するＨＰＣは、要求を再試行することなくおよびＬＰＣへの要求されたメモリ・ブロックのプッシュを行うことなく、リモート・コヒーレンシ・ドメインからの排他的アクセス要求（例えば、バスＲＷＩＴＭオペレーションまたはバスＤＣlaimオペレーション）をサービスすることができる。
【００５０】
VII．例示的Ｌ２／Ｌ３コヒーレンシ状態遷移
次に図７を参照すると、本発明の好適な実施例に従ってＬ３キャッシュへのキャストインを行う例示的な方法の高レベルの論理的流れ図が示される。図７に示されたプロセスはＬ３キャッシュ・コントローラ３８０によるオペレーションを伴う。プロセスはブロック６００で始まり、次に、ブロック６０２に進む。ブロック６０２は、ソースのＬ２キャッシュ２３０からキャッシュ・ラインが排出された結果、Ｌ３キャッシュ２３２（例えば、Ｌ３キャッシュ２３２ａ）のＬ３キャッシュ・コントローラ３８０が、それが接続されているＬ２キャッシュ２３０の１つ（例えば、Ｌ２キャッシュ２３０ａ）からキャストアウト要求を受けることを示す。キャストアウト要求はターゲット・アドレス、キャストイン・キャッシュ・ライン、およびキャストイン・キャッシュ・ラインのキャッシュ・ディレクトリ状態を含む。Ｌ３キャッシュ・コントローラ３８０は、キャストイン・キャッシュ・ラインがそのデータ・アレイ３６０に保存されるかどうかを決定するために置換ポリシを、および、その結果が肯定的である場合、状態フィールド３６６におけるそのキャッシュ・ラインに対する適切なコヒーレンシ状態を、プログラムされる。
【００５１】
次に、ブロック６０４において、キャッシュ・コントローラ３８０は、ターゲット・アドレスに対するディレクトリ・エントリが既に存在するかどうかを決定するために、Ｌ３キャッシュ・ディレクトリ３６２のタグ・フィールド３６４を読取る。そのターゲット・アドレスがタグ・フィールド３６４において見つからない場合、プロセスはブロック６０５に進む。プロセス６０５は、キャッシュ・コントローラ３８０が、システム・メモリにキャストアウトされ得る置換のためのビクティム・キャッシュ・ラインを、そのビクティム・キャッシュのコヒーレンシ状態（例えば、Ｘg、Ｍ、Ｔ、またはＴn）に従って、選択することを示す。次に、プロセスはブロック６０６に進む。ブロック６０６において、キャッシュ・コントローラ３８０は、ソースのＬ２キャッシュ２３０から受取ったキャストイン・キャッシュ・ラインをＬ３データ・アレイ３６０にストアし、キャッシュ・ディレクトリ３６２内に対応するキャッシュ・ディレクトリ・エントリを作成する。キャッシュ・コントローラ３８０は、キャストアウト要求において指定された状態に従ってディレクトリ・エントリのコヒーレンシ状態フィールド３６６をセットする。しかる後、プロセスはブロック６０８において終了する。
【００５２】
ブロック６０４に説明を戻すと、キャストイン・キャッシュ・ラインのターゲット・アドレスに対するディレクトリ・エントリが既にＬ３キャッシュ・ディレクトリ３６２内に存在するということをキャッシュ・コントローラ３８０が決定する場合、プロセスはブロック６１０に進む。ブロック６１０は、表３および図８に関連して後述するように、キャッシュ・コントローラ３８０が、キャストイン・ポリシに従ってキャストアウト要求を参照することにより、データ・アレイ３６０およびキャッシュ・ディレクトリ３６２を更新することを示す。本発明の好適な実施例において実施されるように、キャストインは、次の２つの事項を指定する。即ち、
（１）キャストイン・キャッシュ・ラインがＬ３データ・アレイ３６０内にストアされるのか或いは廃棄されるのか、
（２）キャッシュ・ディレクトリ３６６における対応するエントリのコヒーレンシ状態。
【００５３】
好適な実施例では、キャッシュ・ディレクトリ３６２においてエントリを既に有しているキャッシュ・ラインに対してキャストインを行うとき、Ｌ３キャッシュ２３２によって実施されるキャストイン・ポリシが下記の表３に要約される。表３は、Ｌ３キャッシュ・ディレクトリ３６２におけるキャッシュ・ラインの前の状態とキャストアウト要求において指定されたコヒーレンシ状態との関数として状態フィールド３６６におけるその結果のコヒーレンシ状態を識別する。
【表３】
2008097598.tif 000007
【００５４】
このキャストイン・ポリシは、更に、Ｌ３データ・アレイ３６０内にストアされたメモリ・ブロックが維持されるべきかまたはソースのＬ２キャッシュ２３０から受けたキャストイン・キャッシュ・ラインによって上書きされるべきかを管理する。キャッシュ・ライン・データを上書きすべきかどうかの決定は、表３では下線付きの結果のコヒーレンシ状態によって示される。結果のコヒーレンシ状態の遷移が下線付きである場合、キャストイン・キャッシュ・ラインは、前のキャッシュ・ライン・データに代わってＬ３キャッシュ・アレイ３６０にストアされる。その結果のコヒーレンシ状態の遷移が下線付きでない場合、キャッシュ・アレイ３６０内のキャッシュ・ラインは維持され、状態フィールド３６６におけるコヒーレンシ状態が、表３において識別されるその結果のコヒーレンシ状態に更新される。
【００５５】
表３のＳg またはＳlg 行を詳細に参照すると、Ｌ３キャッシュ・ディレクトリ３６２におけるキャッシュ・ラインの現在の状態がＩn、Ｉg、またはＩコヒーレンシ状態のいずれかであり、キャストイン・コヒーレンシ状態がＳgまたはＳlg である場合、そのキャストイン・コヒーレンシ状態は、状態フィールド３６６を更新するために利用される。更に、表３における下線付きのエントリによって表されるように、キャッシュ・ラインはキャッシュ・アレイ３６０内のキャストイン・データと置換される。Ｌ３キャッシュ・ディレクトリ３６２におけるキャッシュ・ラインの現在の状態がＳgであり、キャストイン・コヒーレンシ状態がＳlg である場合、キャストイン・コヒーレンシ状態は、Ｓlg における「l」が意味するように、キャッシュ間のデータ介入によりデータを調達するための機能が維持されるよう状態フィールド３６６を更新するために利用される。しかし、Ｌ３キャッシュ・ディレクトリ３６２におけるキャッシュ・ラインの現在の状態がＳg状態であり、キャストイン・コヒーレンシ状態がＳg である場合、Ｌ３キャッシュ２３２に対するコヒーレンシまたはデータ更新は行われない。同様に、Ｌ３キャッシュ・ディレクトリ３６２における現在の状態がＳlgであり、キャストイン状態がＳg またはＳlg である場合、Ｌ３キャッシュ２３２に対するコヒーレンシ更新またはデータ更新は行われない。Ｌ３キャッシュ・ディレクトリ３６２におけるキャッシュ・ラインの現在の状態がＳまたはＳlgであり、キャストイン・コヒーレンシ状態がＳg またはＳlg である場合、キャッシュ・コントローラ３８０は、ドメイン標識５０４が更新されるべきであるというキャッシュ表示を維持するために状態フィールド３６６をＳからＳgに、またはＳl からＳlg に更新する。キャッシュ・コントローラ３８０は、キャストインＳlg コヒーレンシ状態を受取ったことに応答して、Ｓ状態からＳlg 状態への同様のコヒーレンシ状態の更新を行う。更に表３に示されるように、Ｌ２およびＬ３キャッシュは共にキャッシュ・ラインをＳlx状態で含むことができず、それは、エラーが生じたことをＳl-Ｓlg ケースが表わすということを意味する。Ｌ３の現在の状態が、Ｔx およびＭx 列に示されるようにＴxまたはＭx である場合、この情報は、Ｌ２からのキャストイン時にはいつもＬ３キャッシュ内に維持される。
【００５６】
次に説明を表３のＳg およびＳlg 列に転ずると、Ｔx コヒーレンシ状態のキャストインの場合、キャッシュ・コントローラ３８０は、データ・アレイ３６０へのデータ更新およびＳgまたはＳlg からＴx へのコヒーレンシ状態の更新の両方を行う。キャッシュ・ディレクトリ３６２内に記録された前のコヒーレンシ状態がＳlg である別のケースでは、キャストインを受けたことに応答してデータ更新またはコヒーレンシ状態の更新は行われない。キャッシュ・ディレクトリ３６２においてＳgと記されたキャッシュ・ラインに対して、キャッシュ・コントローラ３８０は、Ｓl またはＳlg コヒーレンシ状態におけるキャストイン・キャッシュ・ラインに応答して、ＳgからＳlg へのコヒーレンシ状態の更新を行うが、Ｉn、Ｉg、Ｓg、またはＳコヒーレンシ状態におけるキャストイン・キャッシュ・ラインに対するデータの更新またはコヒーレンシ状態の更新を行わない。
【００５７】
次に図８を参照すると、本発明の好適な実施例に従って、キャストアウト要求を受けたことに応答してＬ３キャッシュにおいてキャストイン・ポリシを実施する例示的方法の高レベルの論理的流れ図が示される。プロセスは、例えば、図７のブロック６０４における肯定的な決定に応答して、ブロック７００において開始し、しかる後、ブロック７０４に進む。ブロック７０４は、Ｌ３キャッシュ・コントローラ３８０が、ビクティム・キャッシュ・ラインの指定されたコヒーレンシ状態を決定するためにキャストアウト要求を調べることを示す。更に、ブロック７０６において、Ｌ３キャッシュ・コントローラ３８０は、キャストイン・キャッシュ・ラインに対する存在するコヒーレンシ状態を決定するために、キャッシュ・ディレクトリ３６２における関連のエントリの状態フィールド３６６を読取る。次に、プロセスはブロック７０８に進む。ブロック７０８は、Ｌ３キャッシュ・コントローラ３８０が、表３に要約されたキャストイン・ポリシに従って、Ｌ３キャッシュ・ディレクトリ３６２における適切な結果のコヒーレンシ状態を決定することを示す。この決定は、例えば、Ｌ３キャッシュ２３２内の不揮発性メモリにおける状態テーブルを参照することによって行うことが可能である。別の実施例では、Ｌ３キャッシュ・コントローラ３８０が、ソフトウェアの実行によってまたは集積回路により行われる計算によって、ブロック７０８に示された決定を行うことも可能である。
【００５８】
次に、プロセスはブロック７１０に進む。ブロック７１０において、キャッシュ・コントローラ３８０は、ビクティム・キャッシュ・ラインに対する既存のコヒーレンシ状態がブロック７０８で決定された結果のコヒーレンシ状態に基づいて更新されるかどうかを決定する。現在の状態が更新されるべきものである場合、プロセスはブロック７１２に進む。ブロック７１２において、キャッシュ・コントローラ３８０は、ブロック７０８で決定された結果のコヒーレンシ状態でもってキャッシュディレクトリ３６２におけるコヒーレンシ状態を上書きする。プロセスは、ブロック７１２から、またはコヒーレンシ状態に対する更新が行われるべきでない場合にはブロック７１０から、判断ブロック７１４に進む。ブロック７１４において、キャッシュ・コントローラ３８０は、Ｌ２キャッシュ２３０から受取ったキャストイン・キャッシュ・ラインがＬ３データ・アレイ３６０にストアされるべきであるということをキャストイン・ポリシが表わすかどうかを決定する。それが肯定される場合、プロセスはブロック７１６に進む。ブロック７１６において、キャッシュ・コントローラ３８０は、キャストイン・キャッシュ・ラインをＬ３データ・アレイ３６０にストアし、それによって、キャストイン・ターゲット・アドレスに対する前にストアされたキャッシュ・ラインを上書きする。ブロック７１６に続いて、またはデータ更新が行われるべきでない場合にはブロック７１４に続いて、プロセスはブロック７１８において終了する。
【００５９】
表３並びに図７および図８に関連して上述したように、Ｌ３キャストイン・オペレーションが行われる過程に影響を与えることに加えて、本発明に従ってＳg およびＳlg コヒーレンシ状態を実施することは、Ｌ２キャッシュによってＬ２コヒーレンシ状態で保持されたキャッシュ・ラインに関してヒットするＣＰＵ読取り要求またはＣＰＵ更新要求の受け取りに応答して、Ｌ２キャッシュ２３０のような上位レベルのキャッシュによって行われるオペレーションを単純化する。そのような動作態様（図１０に示される）に応答して、Ｌ２キャッシュ２３０における処理の例示的方法の理解を容易にするために、図９に関連して、先ず、Ｌ２キャッシュにおける一般的な処理方法を説明することにする。
【００６０】
図９を参照すると、Ｉg コヒーレンシ状態でＬ２キャッシュに保持されたキャッシュ・ラインにおいてヒットするＣＰＵ読取り要求を受取ったことに応答して、従来のＬ２キャッシュにより行われるオペレーションを表わすタイミング図が示される。図示のように、プロセスは、従来のＬ２キャッシュがそれの関連のプロセッサ・コアからＣＰＵ読取り要求を受取ると開始する。ＣＰＵ読取り要求を受取ったことに応答して、Ｌ２キャッシュは、参照番号８０２で示されるように、その要求をサービスするようにＲＣマシンを割り当て、参照番号８０４で示されるように、それのキャッシュ・ディレクトリのディレクトリ読取りを開始する。
【００６１】
キャッシュ・ディレクトリに記録されたコヒーレンシ状態がＩg であるという決定に応答して、従来のＬ２キャッシュは、コヒーレンシ状態が維持されるようシステム・メモリにおけるドメイン標識を「グローバル」状態に更新するために、参照番号８０６で示されるようにＣＯマシンを割り当てる。ＲＣおよびＣＯマシンのオペレーションの完了は非同期的であり、それは、オペレーションが任意の順序で完了し得ることを意味する。ＲＣマシンが時間ｔ０にそのオペレーションを完了し、ＣＯマシンが時間ｔ１にそのオペレーションを完了する場合、コヒーレンシ解決ウィンドウ８１０が形成される。時間ｔ０までに、ＲＣマシンは、新たに得られたキャッシュ・ラインの状態を反映するようにディレクトリを（例えば、「共用」に）更新してしまうが、ＣＯマシンは、時間ｔ１までキャストアウトに関して依然として積極的に作用する。
【００６２】
通常、相互接続網を介してスヌープされたオペレーションに対する部分的応答を決定するとき、アクティブ・マシンによりＬ２キャッシュにおいて反映されたコヒーレンシ状態だけが考察される。しかし、このポリシが不十分であるＣＯマシンにより処理中の同じキャッシュをターゲットとするコヒーレンシ解決ウィンドウ期間中にスヌープされたオペレーションにとって、アクティブ・キャッシュアウト・マシンによって反映されたディレクトリ状態およびコヒーレンシ状態の両方とも、そのスヌープされたオペレーションに与えられるべき部分的応答を決定する場合に考慮されなければならない。そのように行うことができないことは、コヒーレンシの喪失に通じる不正確なコヒーレンシ状態を要求元のＬ２キャッシュに形勢させ得る。従って、コヒーレンシ解決ウィンドウ８００の期間中、ＣＯマシンによる処理の下にある同じキャッシュ・ラインに対してスヌープを処理するために、特別のコヒーレンシ解決ロジックがＬ２キャッシュ内に実装されなければならない。
【００６３】
Ｌ２キャッシュの設計、特に、図９に示された動作態様の下でのコヒーレンシ処理は、本発明に従ってＳl およびＳlg コヒーレンシ状態を具現化することによって簡易化される。次に、図１０を参照すると、本発明に従って、Ｌ２キャッシュ２３０のような上位レベルのキャッシュにおけるコヒーレンシ処理の例示的方法の高レベルの論理的フローチャートが示される。図示のように、プロセスはブロック９００で開始し、しかる後、ブロック９０２に進む。ブロック９０２は、Ｌ２キャッシュ２３０が関連のプロセッサ・コア２００からのＣＰＵ読取り要求またはＣＰＵ更新要求を受け取ることを示す。一般には要求のタイプを識別するトランザクション・タイプ（ＴＴＹＰＥ）およびターゲット・アドレスを含むＣＰＵ要求を受取ったことに応答して、Ｌ２キャッシュ２３０のＬ２キャッシュ・コントローラ３３０は、ターゲット・アドレスに関してそのコヒーレンシ状態を決定するためにターゲット・アドレスを利用してそのキャッシュ・ディレクトリ３１２をアクセスし、ＣＰＵ要求をサービスするためにＲＣマシン３３２をディスパッチする（ブロック９０４）。ブロック９０６に示されるように、コヒーレンシ状態がＩgであることをキャッシュ・コントローラ３３０が決定する場合、キャッシュ・コントローラ３３０は、ブロック９２０およびそれに続くブロックに示されるようにＣＰＵ要求をサービスする。コヒーレンシ状態がＩg以外である場合、キャッシュ・コントローラ３３０は、ブロック９１０に示された他の処理を利用してＣＰＵ要求をサービスする。
【００６４】
次にブロック９２０を参照すると、ディスパッチされたＲＣマシン３３２は、ＣＰＵ要求のターゲット・メモリ・ブロックに対するコヒーレンシ状態がＬ２キャッシュ・ディレクトリ３１２においてＩg であるという決定に応答して、ＴＴＹＰＥがＣＰＵ更新要求を表すかどうかを決定し、それが肯定される場合、ターゲット・メモリ・ブロックの排他的コピーを得るためにすべてのローカル相互接続網１１４およびグローバル相互接続網１１０におけるグローバル範囲のバスＲＷＩＴＭオペレーションを発生する（ブロック９２２）。ＲＣマシン３３２は、メモリ・ブロックの更新されたコピーがリモート・コヒーレンシ・ドメイン内にあるという、Ｉgコヒーレンシ状態により供給された不正確な表示に基づいてグローバル・オペレーション範囲を選択する。ＲＣマシン３３２は、ターゲット・メモリ・ブロックのコピーを受取ると、ブロック９２４に示されるように、そのターゲット・メモリ・ブロックをデータ・アレイ３１０内に配置し、Ｌ２キャッシュ・ディレクトリ３１２における対応するエントリのコヒーレンシ状態をＩgからＭに更新する。しかる後、ＲＣマシン３３２は割当て解除され、プロセスはブロック９４０において終了する。
【００６５】
ブロック９２０を再び参照すると、ＣＰＵ要求のＴＴＹＰＥから、それがＣＰＵ読取り要求であるということをＲＣマシン３３２が決定する場合、プロセスはブロック９３０に進む。ブロック９３０は、ＲＣマシン３３２が、ターゲット・メモリ・ブロックのコピーを得るためにグローバル範囲のバスＲＥＡＤオペレーションを発生することを示している。ＲＣマシン３３２は、再び、そのメモリ・ブロックの更新されたコピーがリモート・コヒーレンシ・ドメインにあるというＩg コヒーレンシ状態によって提供される不正確な表示に基づいてグローバル・オペレーション範囲を選択する。要求されたメモリ・ブロックを受取ったことに応答して、ＲＣマシン３３２は、ブロック９３２に示されるように、データ・アレイ３１０にそのメモリ・ブロックを配置し、キャッシュ・ディレクトリ３１２における対応するエントリの状態フィールド３１６をＩg状態からＳlg またはＭe 状態の一方に更新する。特に、ＲＣマシン３３２は、メモリ・ブロックがメモリ・コントローラ２０６によって調達され、他のキャッシュがメモリ・ブロックのコピーを保持していない場合にはコヒーレンシ状態をＭeに更新し、そうでない場合には、コヒーレンシ状態をＳlg に更新する。しかる後、ＲＣマシン３３２は割当て解除され、プロセスはブロック９４０において終了する。
【００６６】
明らかに、本発明に従ってＳg およびＳlg コヒーレンシ状態を実施することは少なくとも次の２つの点でコヒーレンシ処理を簡単にする。第１に、Ｉg 状態によって表わされたドメイン標識のグローバル状態のキャッシュされた表示は、ＳgまたはＳlg コヒーレンシ状態のいずれかによってキャッシュ・ディレクトリにおいて維持されることが可能であるので、ＣＯマシン３３６は、ＣＰＵ読取り要求に対するＩgヒットの場合にＩg コヒーレンシ状態をキャストアウトするように割り当てられる。従って、Ｌ２キャッシュ・コントローラ３３０内の有限なリソースの利用は減少する。第２に、ＣＯマシン３３６はそのような場合にキャストアウトを行うように割り当てられないので、コヒーレンシ解決ウィンドウ８００は形成されず、応答ロジック２１０は適切なコヒーレンシ状態を決定することができ、そのコヒーレンシ状態に基づいてキャッシュ・ディレクトリ３１２から直接的に行われたスヌープされた要求に対する部分的応答が行われる。その結果、応答ロジック２１０に実装されるロジックが単純化される。
【００６７】
上述のように、本発明は、特定のメモリ・ブロックが複数のキャッシュに保持され得ることおよびそのメモリ・ブロックのコピーがキャッシュのローカル・コヒーレンシ・ドメインの外にあるという表示を行うために、Ｓg またはＳlg のようなコヒーレンシ状態が利用される、データ処理のための改良された方法、装置、およびシステムを提供する。１つまたは複数のそのようなコヒーレンシ状態の実施は、共用の低レベル（例えばＬ３）のキャッシュがメモリ・ブロックのＩgコピーにおけるキャストアウト・ヒットの場合にそのメモリ・ブロックのコピーを維持することをうまく可能にする。更に、１つまたは複数のそのようなコヒーレンシ状態の実施は、上位レベル（例えばＬ２）のキャッシュの設計を簡素化し、コヒーレンシ処理を能率的にする。
【００６８】
好適な実施例に関して本発明を詳細に開示および説明したが、本発明の真意および範囲から逸脱することなく、形態および細部における種々の変更を行い得ることは当業者には明らかであろう。
【図面の簡単な説明】
【００６９】
【図１】本発明によるキャッシュ・コヒーレントな対称マルチプロセッサ（ＳＭＰ）データ処理システムの実施例の高レベル・ブロック図である。
【図２】本発明の好適な実施例による例示的な処理ユニットのブロック図である。
【図３】本発明の好適な実施例によるプロセッサ・コアおよびＬ２キャッシュの実施例の更に詳細なブロック図である。
【図４】本発明の好適な実施例によるＬ３キャッシュの実施例の更に詳細なブロック図である。
【図５】本発明の好適な実施例によるデータ処理システムのローカルまたはシステム相互接続網における例示的なオペレーションの時空間表示図である。
【図６】本発明の好適な実施例によるドメイン標識を含むシステム・メモリを示す概略図である。
【図７】本発明の好適な実施例によるＬ３キャッシュ・メモリへのキャストインを行う例示的な方法の高レベルの論理的流れ図である。
【図８】本発明の好適な実施例によるキャストインに応答してＬ３キャッシュ・メモリにおいてコヒーレンシ状態遷移方法を実施する例示的な方法の高レベルの論理的流れ図である。
【図９】スヌープされた読取りタイプ・オペレーションに対する適切なコヒーレンシ応答を決定するためにキャッシュ・ディレクトリを調べなければならないコヒーレンシ解決ウィンドウを、Ｉg コヒーレンシ状態におけるキャストアウト・ヒットが作成する従来オペレーション・フローを示すタイミング図である。
【図１０】本発明の好適な実施例によるＬ２キャッシュ・メモリによって実施されるコヒーレンシ状態遷移方法の例示的方法の高レベルの論理的流れ図である。
【図１】
2008097598.tif 000008
【図２】
2008097598.tif 000009
【図３】
2008097598.tif 000010
【図４】
2008097598.tif 000011
【図５】
2008097598.tif 000012
【図６】
2008097598.tif 000013
【図７】
2008097598.tif 000014
【図８】
2008097598.tif 000015
【図９】
2008097598.tif 000016
【図１０】
2008097598.tif 000017