(57)【要約】  クリーン状態のデータをマルチプル・プロセッサのキャッシュへプッシュするための技術を提供する。【特許請求の範囲】
【請求項１】
１またはそれ以上のプロセッサに、前記１またはそれ以上のプロセッサの外部にあるエージェントからデータをプッシュするための要求を送る段階と、
前記１またはそれ以上のプロセッサの各々が、前記要求を受け入れたかどうかを判定する段階と、
前記エージェントからプッシュされた前記データに対応するデータを有する前記１またはそれ以上のプロセッサの各々に対して、いまだクリーン状態にない場合には、前記対応するデータの状態をクリーン状態に設定し、前記エージェントからプッシュされた前記データで前記対応するデータを上書きする段階と、
前記エージェントからプッシュされた前記データに対応するデータを有しない前記１またはそれ以上のプロセッサの各々に対して、前記エージェントからプッシュされた前記データをクリーン状態に格納する段階と、
から構成されることを特徴とする方法。
【請求項２】
１またはそれ以上のプロセッサに送る段階は、マルチプロセッサ・システム内の各プロセッサに前記要求を送る段階を含む段階を特徴とする請求項１記載の方法。
【請求項３】
１またはそれ以上のプロセッサに送る段階は、マルチプロセッサ・システム内のプロセッサのサブセットに前記要求を送る段階を含むことを特徴とする請求項１記載の方法。
【請求項４】
前記エージェントは、ダイレクト・メモリ・アクセス（ＤＭＡ）装置を含むことを特徴とする請求項１記載の方法。
【請求項５】
前記エージェントは、デジタル信号プロセッサ（ＤＳＰ）を含むことを特徴とする請求項１記載の方法。
【請求項６】
前記クリーン状態は、ライトバック・キャッシュ・コヒーレンシ・プロトコルを使用するマルチプロセッサ・システムにおける「共有」状態を含むことを特徴とする請求項１記載の方法。
【請求項７】
前記クリーン状態は、ライトスルー・キャッシュ・コヒーレンシ・プロトコルを使用するマルチプロセッサ・システムにおける「有効」状態を含むことを特徴とする請求項１記載の方法。
【請求項８】
前記データは、全てのキャッシュ・ラインを含むことを特徴とする請求項１記載の方法。
【請求項９】
前記データは、一部のキャッシュ・ラインを含むことを特徴とする請求項１記載の方法。
【請求項１０】
少なくとも１つのプロセッサと、
バスを介して前記少なくとも１つのプロセッサに結合され、前記少なくとも１つのプロセッサに、少なくとも１つのプロセッサへデータをプッシュするための要求を送り、かつ、前記要求を受け取る前記少なくとも１つのプロセッサの各々が前記要求を受け入れたかどうかを判定するバス・エージェントと、から構成され、
プッシュされるべき前記データに対応するデータを有する各プロセッサに対して、前記プロセッサは、いまだクリーン状態でない場合には、前記対応するデータの状態をクリーン状態に設定し、前記対応するデータを前記プッシュされたデータで上書きし、プッシュされるべき前記データに対応するデータを有しない各プロセッサに対して、前記プッシュされたデータをクリーン状態に格納する、
ことを特徴とするシステム。
【請求項１１】
前記少なくとも１つのプロセッサは、マルチプロセッサ・システム内の各プロセッサから成ることを特徴とする請求項１０記載のシステム。
【請求項１２】
前記少なくとも１つのプロセッサは、マルチプロセッサ・システム内のプロセッサのサブセットから成ることを特徴とする請求項１０記載のシステム。
【請求項１３】
前記バス・エージェントは、ダイレクト・メモリ・アクセス（ＤＭＡ）装置を含むことを特徴とする請求項１０記載のシステム。
【請求項１４】
前記バス・エージェントは、デジタル信号プロセッサ（ＤＳＰ）を含むことを特徴とする請求項１０記載のシステム。
【請求項１５】
前記クリーン状態は、ライトバック・キャッシュ・コヒーレンシ・プロトコルを使用するシステムにおける「共有」状態を含むことを特徴とする請求項１０記載のシステム。
【請求項１６】
前記クリーン状態は、ライトスルー・キャッシュ・コヒーレンシ・プロトコルを使用するシステムにおける「有効」状態を含むことを特徴とする請求項１０記載のシステム。
【請求項１７】
前記データは、全てのキャッシュ・ラインを含むことを特徴とする請求項１０記載のシステム。
【請求項１８】
前記データは、一部のキャッシュ・ラインを含むことを特徴とする請求項１０記載のシステム。
【請求項１９】
電子システム内のエージェントにおいて、
バス・インターフェイスと、
前記バス・インターフェイスに結合され、前記電子システム内の１またはそれ以上のプロセッサおよびメモリ・コントローラにデータをプッシュするための要求を送り、かつ、前記１またはそれ以上のプロセッサの各々および前記メモリ・コントローラが前記要求を受け入れたかどうか判定する制御回路であって、前記要求を受け入れる前記１またはそれ以上のプロセッサの各々および前記メモリ・コントローラに応答して、前記制御回路によって、データをクリーン状態に格納する指示を具備する前記データが、少なくとも前記１またはそれ以上のプロセッサのサブセットおよび前記メモリ・コントローラに送られる、制御回路と、
から構成されることを特徴とするエージェント。
【請求項２０】
前記１またはそれ以上のプロセッサは、マルチプロセッサ・システム内の各プロセッサから成ることを特徴とする請求項１９記載のエージェント。
【請求項２１】
前記１またはそれ以上のプロセッサは、マルチプロセッサ・システム内のプロセッサのサブセットから成ることを特徴とする請求項１９記載のエージェント。
【請求項２２】
前記クリーン状態は、ライトバック・キャッシュ・コヒーレンシ・プロトコルを使用するシステムにおける「共有」状態を含むことを特徴とする請求項１９記載のエージェント。
【請求項２３】
前記クリーン状態は、ライトスルー・キャッシュ・コヒーレンシ・プロトコルを使用するシステムにおける「有効」状態を含むことを特徴とする請求項１９記載のエージェント。
【請求項２４】
前記データは、全てのキャッシュ・ラインを含むことを特徴とする請求項１９記載のエージェント。
【請求項２５】
前記データは、一部のキャッシュ・ラインを含むことを特徴とする請求項１９記載のエージェント。
【請求項２６】
１またはそれ以上のプロセッサに、前記プロセッサの外部にあるエージェントからデータをプッシュするための要求を送る手段と、
前記プロセッサの各々が前記要求を受け入れたかどうかを判定する手段と、
前記エージェントからプッシュされるべき前記データに対応するデータを有する各プロセッサにおいて、いまだクリーン状態でない場合には、対応するデータの状態をクリーン状態に設定し、前記エージェントからプッシュされたデータで前記対応するデータを上書きする手段と、
前記エージェントからプッシュされるべき前記データに対応するデータを有しないプロセッサの各々に、前記外部にあるエージェントからプッシュされた前記データをクリーン状態に格納する手段と、
から構成されることを特徴とする装置。
【請求項２７】
前記クリーン状態は、ライトバック・キャッシュ・コヒーレンシ・プロトコルを使用するシステムにおける「共有」状態を含むことを特徴とする請求項２６記載の装置。
【請求項２８】
前記クリーン状態は、ライトスルー・キャッシュ・コヒーレンシ・プロトコルを使用するシステムにおける「有効」状態を含むことを特徴とする請求項２６記載の装置。
【請求項２９】
前記データは、全てのキャッシュ・ラインを含むことを特徴とする請求項２６記載の装置。
【請求項３０】
前記データは、一部のキャッシュ・ラインを含むことを特徴とする請求項２６記載の装置。
【請求項３１】
ほぼ全方向性のアンテナと、
前記アンテナに結合された少なくとも１つのプロセッサと、
バスを介して前記少なくとも１つのプロセッサに結合され、１またはそれ以上のプロセッサの少なくともサブセットにデータをプッシュするための要求を送り、かつ、前記要求を受け取るプロセッサの各々が前記要求を受け入れたかどうかを判定するバス・エージェントと、から構成され、
プッシュされるべき前記データに対応するデータを有する各プロセッサに対して、前記プロセッサは、いまだクリーン状態でない場合には、前記対応するデータの状態をクリーン状態に設定し、前記対応するデータを前記プッシュされたデータで上書きし、プッシュされるべき前記データに対応するデータを有しない各プロセッサに対して、前記プッシュされたデータをクリーン状態に格納する、
ことを特徴とするシステム。
【請求項３２】
前記複数のプロセッサの１またはそれ以上は、前記複数のプロセッサの各々を含むことを特徴とする請求項３１記載のシステム。
【請求項３３】
前記複数のプロセッサの１またはそれ以上は、前記複数のプロセッサのサブセットを含むことを特徴とする請求項３１記載のシステム。
【請求項３４】
前記バス・エージェントは、ダイレクト・メモリ・アクセス（ＤＭＡ）装置を含むことを特徴とする請求項３１記載のシステム。
【請求項３５】
前記クリーン状態は、ライトバック・キャッシュ・コヒーレンシ・プロトコルを使用するシステムにおける「共有」状態を含むことを特徴とする請求項３１記載のシステム。
【請求項３６】
前記クリーン状態は、ライトスルー・キャッシュ・コヒーレンシ・プロトコルを使用するシステムにおける「有効」状態を含むことを特徴とする請求項３１記載のシステム。
【請求項３７】
前記データは、全てのキャッシュ・ラインを含むことを特徴とする請求項３１記載のシステム。
【請求項３８】
前記データは、一部のキャッシュ・ラインを含むことを特徴とする請求項３１記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、マルチプロセッサ・コンピュータ・システムに関する。より詳しくは、本発明の実施例は、バス・エージェントが、クリーン・データをコヒーレント・マルチプロセッサ・コンピュータ・システム内の複数のプロセッサに対応するキャッシュにプッシュすることを可能にすることに関する。
【背景技術】
【０００２】
チップ・マルチプロセッサ（Chip Multi-Processor）を含む現在のマルチプロセッサ・システムにおいて、例えば、ネットワーク媒体アクセス・コントローラ（ＭＡＣ）、格納コントローラ、表示コントローラのような入力／出力（Ｉ／Ｏ）装置が、プロセッサ・コアによって処理されるべき一時的なデータを生成することが一般的である。従来のメモリベースのデータ転送技術を使用して、一時的なデータはメモリに書き込まれ、続いてプロセッサ・コアによってメモリから読取られる。したがって、単一のデータ転送のために２つのメモリ・アクセスが必要である。
【０００３】
従来のメモリベースのデータ転送技術は、単一のデータ転送のために複数のメモリ・アクセスを必要とするので、これらのデータ転送がシステム性能のボトルネックとなることがある。この性能上の不利益は、これらのメモリ・アクセスが典型的にはチップ外にあるという事実によってさらに増大され、これによって、付加的な電力消散が生じるばかりでなく、さらなるメモリ・アクセス・レイテンシが生じることになる。したがって、現在のデータ転送技術は、性能および電力に関して、システムを非能率にしている。
【０００４】
本発明は、添付図面中の図によって例示されるが、それは本発明を限定するものではなく、また、図面中の同じ参照番号は同様の要素を示す。
【発明の開示】
【０００５】
以下の説明において、多数の特定の詳細事項が記述される。しかしながら、本発明の実施例は、これらの特定の詳細事項の範囲を越えて実施される場合がある。また、周知の回路、構造、および技術については、本説明の理解を不明瞭にしないために、詳細に記述しない。
【０００６】
キャッシュ・コヒーレンシのためのハードウェア・サポートを有する従来のキャッシュ設計では、キャッシング・エージェントはキャッシュ・ラインの排他的な所有権を獲得し、その後当該エージェントが当該エージェントによって制御されるキャッシュ中のキャッシュ・ラインを修正することができる。エージェントがそのラインの排他的な所有権を獲得するキャッシュを制御しないで、プロセッサに接続された外部装置がデータを直接プロセッサ・キャッシュにプッシュするアーキテクチャーおよび技術が以下に詳述される。
【０００７】
一実施例において、データをマルチプロセッサ・システムへプッシュする準備をしている（データを受け取るキャッシュ・メモリを有するマルチプル・プロセッサの）外部エージェントは、次のプッシュ動作を、全てプロセッサおよびメモリ・システム（例えば、メモリ・コントローラ）にまず通知する。共有バス・システムでは、例えば、通知メッセージは、共有アドレス・バス・トランザクションをスヌープするプロセッサによって遂行される。ポイント・ツー・ポイント・システムでは、通知メッセージは、メモリ・コントローラと同様に、全てのプロセッサに送られる。
【０００８】
共有バス・システムでは、すべてのプロセッサおよびメモリ・コントローラのために単一のマルチキャスト・データ転送がある。ポイント・ツー・ポイント・システムでは、データは、１またはそれ以上のメモリ・コントローラと同様に、全てのプロセッサへ個別に送られる。要求が全てのプロセッサおよびメモリ・コントローラによって受け入れられると、書き込まれたデータは、全てのプロセッサおよびメモリに送られる。要求の受入れは、承認メッセージ、および／または、再試行またはストールの不存在によって判定される。さらに、アドレス・トランザクションのための共有バス、およびデータ・トランザクションのためのポイント・ツー・ポイント接続を有することも可能であり、その逆もまた可能である。
【０００９】
一実施例において、ポイント・ツー・ポイント・システムでは、データは、各プロセッサおよびメモリへ個別に送られる。各プロセッサは、そのデータをキャッシュ・メモリ内に書き込み（あるいは上書きし）、コヒーレンシ状態を（例えば、ＭＳＩ／ＭＥＳＩ／ＭＯＥＳＩシステムにおける「共有(Shared)」に、またはＶＩシステムにおける「有効(Valid)」に）更新する。対応するメモリ位置も更新される。
【００１０】
一実施例において、１またはそれ以上の次の状態が、コヒーレンシ目的のために使用される。「修正済(Modified)」は、修正され、かつキャッシュ・メモリに格納されたデータを意味し、メモリ内の対応するデータは対応して修正されず、したがって無効である。「共有(Shared)」は、マルチプル・キャッシュ・メモリによって格納されたデータを意味し、メモリ内の対応するコピーは有効である。「排他的(Exclusive)」は、ただ１つのキャッシュ・メモリに格納されたデータを意味し、メモリ内の対応するコピーは有効である。「所有(Owned)」は、ただ１つのキャッシュ・メモリに格納されたデータを意味し、メモリ内の対応するコピーは無効である。「無効(Invalid)」は、無効であるキャッシュ・メモリ内に格納されたデータを意味する。「有効(Valid)」は、有効なキャッシュ・メモリに格納されたデータを意味する。
【００１１】
図１は、コンピュータ・システムの一実施例のブロック図である。図１に示されたコンピュータ・システムは、一連のコンピュータ・システムを表わすことを意図する。他のコンピュータ（あるいは非コンピュータ）システムは、より多くの、またはより少ない、および／または、異なるコンポーネントを含むことができる。
【００１２】
一実施例において、コンピュータ・システム１００は、コンポーネント間で情報を通信するために相互接続１１０を含む。プロセッサ１２０は、情報を処理するために相互接続１１０に結合される。さらに、プロセッサ１２０は内部キャッシュ１２２を含むが、それは任意の数の内部キャッシュ・メモリを表わす。一実施例において、プロセッサ１２０は、外部キャッシュ１２５に結合される。コンピュータ・システム１００は、さらに、情報を処理するために相互接続１１０に結合されたプロセッサ１３０を含む。プロセッサ１３０は、内部キャッシュ１３２を含むが、それは、任意の数の内部キャッシュ・メモリを表わす。一実施例において、プロセッサ１３０は、外部キャッシュ１３５に結合される。
【００１３】
コンピュータ・システム１００には、２つのプロセッサが図示されているが、コンピュータ・システム１００は、任意の数のプロセッサおよび／またはコプロセッサを含めることもできる。コンピュータ・システム１００は、さらに、相互接続１１０に結合されたランダム・アクセス・メモリ・コントローラ１４０を含む。メモリ・コントローラ１４０は、相互接続１１０とメモリ・サブシステム１４５との間でインターフェイスの役割を果たし、それは１またはそれ以上のタイプのメモリを含む。例えば、メモリ・サブシステム１４５は、プロセッサ１２０および／またはプロセッサ１３０によって実行される情報および命令を格納するためのランダム・アクセス・メモリ（ＲＡＭ）または他のダイナミックな格納装置を含む。メモリ・サブシステム１４５はまた、プロセッサ１２０および／またはプロセッサ１３０によって命令が実行される間、一時的数値変数または他の中間情報を格納するために使用することができる。メモリ・サブシステムは、さらに、プロセッサ１２０および／またはプロセッサ１３０のために静的情報および命令を格納するためのリード・オンリ・メモリ（ＲＯＭ）および／または他の静的格納装置を含む。
【００１４】
相互接続１１０は、さらに、入力／出力（Ｉ／Ｏ）装置１５０に結合され、それは、例えば、ユーザに情報を表示するための陰極線管（ＣＲＴ）コントローラまたは液晶ディスプレイ（ＬＣＤ）コントローラのような表示装置、プロセッサ１２０に情報およびコマンドの選択を伝達するキーボードまたはタッチ・スクリーンのような英数字入力装置、および／またはプロセッサ１０２に方向情報およびコマンド選択を伝達し、表示装置上のカーソル移動を制御するためのマウス、トラックボール、カーソル方向キーのようなカーソル・コントロール装置を含む。多様なＩ／Ｏ装置が当技術において知られている。
【００１５】
コンピュータ・システム１００は、さらに、ワイヤード（有線）および／またはワイヤレス・インターフェイスを経由して、ローカル・エリア・ネットワークのような１またはそれ以上のネットワークへのアクセスを提供するためのネットワーク・インターフェイス１６０を含む。格納装置１７０は、情報および命令を格納するために相互接続１１０に結合される。
【００１６】
命令は、ワイヤードまたはワイヤレスのいずれかの、（例えば、ネットワーク・インターフェイス１６０を経由してネットワーク上の）リモート接続等を経由して、磁気ディスク、リード・オンリ・メモリ（ＲＯＭ）集積回路、ＣＤ−ＲＯＭ、ＤＶＤのような格納装置１７０からメモリ・サブシステム１４５に提供される。他の実施例では、ハードワイヤード回路が、ソフトウェア命令の代わりに、またはその命令と組み合わせて使用されてもよい。したがって、命令のシーケンスの実行は、ハードウェア回路およびソフトウェア命令のいかなる特定の組合せにも制限されない。
【００１７】
電子的にアクセス可能な媒体は、電子機器（例えば、コンピュータ、個人用デジタル情報処理端末、携帯電話）によって読取り可能な形式で、内容（例えば、コンピュータで実行可能な命令）を提供（すなわち、記憶および／または転送）する全てのメカニズムを含む。例えば、機械アクセス可能な媒体は、リード・オンリ・メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、磁気ディスク格納媒体、光学的格納媒体、フラッシュ・メモリ装置、伝搬信号（例えば、搬送波、赤外線信号、デジタル信号）の電気的、光学的、聴覚的、または他の形式などを含む。
【００１８】
図２は、外部エージェントからのプッシュ動作の概念図である。図２の例は、１またはそれ以上のプロセッサおよびメモリへデータをプッシュする（プロセッサへの）外部エージェントに対応する。一実施例において、外部エージェントによってプッシュされたデータは、プロセッサおよびメモリによってクリーン状態（例えば、「共有」または「有効」）に格納される。外部エージェントは、例えば、ダイレクト・メモリ・アクセス（ＤＭＡ）装置またはデジタル信号プロセッサ（ＤＳＰ）である。
【００１９】
以下でより詳細に記述されるように、外部エージェント２００によってプッシュされたデータは、全てのキャッシュ・ラインに対応し、または、データは、一部のキャッシュ・ラインに対応する。一実施例において、プッシュ動作２１０の間に、外部エージェント２００は、プロセッサ１２０の内部キャッシュ１２２、プロセッサ１３０の内部キャッシュ１３２、およびメモリ・コントローラ１４０へデータをプッシュする。次に、外部エージェント２００によってプッシュされたデータは、メモリ内と同様に各プロセッサのキャッシュ内のクリーン状態に、コヒーレント的に存在する。したがって、そのデータは、対応するアドレスへの後続のロード上でプロセッサのいずれかによってヒットしたキャッシュのために利用可能である。そのプッシュされたデータはクリーン状態に格納されるので、いずれかのプロセッサが、例えば、競合性ミスまたは容量性ミスの結果として、そのデータを置換する場合、その置換はメモリへのライト・バック動作なしに実行される。
【００２０】
全てのキャッシュ・ラインのためのプッシュ動作の例
図３は、ライトバック・コヒーレンシ・プロトコルを使用して、全てのキャッシュ・ラインをシステム内にキャッシュ・メモリを有するマルチプル・ターゲット・プロセッサへプッシュするための技術の一実施例を示すフローチャートである。本実施例において、プッシュ要求は、システム内の各ターゲット・エージェント（例えば、プロセッサ）に送られる（３００）。プッシュ要求の送出は、例えば、相互接続として共有バスを使用するマルチプロセッサ・システム内の全てのプロセッサへのブロードキャスト・メッセージによって、あるいは、ポイント・ツー・ポイント相互接続の場合には各プロセッサへの個々のメッセージによって遂行される。
【００２１】
要求が全てのターゲット・エージェントによって受け入れられていない場合（３１０）、再試行手順が実行される（３２０）。全てのターゲット・エージェントが要求を受け入れる場合（３１０）、各ターゲット・エージェントは、プッシュされているキャッシュ・ラインがそのキャッシュ・メモリ内に存在するかどうかを判定する（３３０）。本実施例において、キャッシュ・ラインが存在する場合（３３０）、キャッシュ・ラインの状態は更新されるか、または「共有」のまま維持される（３４０）。キャッシュ・ラインは、外部エージェントによってプッシュされているデータで上書きされる（３５０）。
【００２２】
キャッシュ・ラインが、ターゲット・エージェントのキャッシュ・メモリ内に存在しない場合（３３０）、エージェントは、「共有」状態のキャッシュ・ラインを割り当てる（３６０）。割り当てられたキャッシュ・ラインは、外部エージェントによってプッシュされたデータで充填される（３７０）。外部エージェントからのデータがターゲット・エージェントのキャッシュに格納されたとき（３５０または３７０）、データは「共有」状態に格納され、ターゲット・エージェントの各々のために利用可能となる。
［００３０］  図４は、ライトスルー・コヒーレンシ・プロトコルを使用して、システム内にキャッシュ・メモリを有するマルチプル・ターゲット・プロセッサへ全てのキャッシュ・ラインをプッシュする技術の一実施例のプローチャートである。本実施例において、プッシュ要求は、システム内の各ターゲット・エージェント（例えば、プロセッサ）に送られる（４００）。本実施例において、プッシュ要求は、システム内の各ターゲット・エージェント（例えば、プロセッサ）に送られる（３００）。プッシュ要求の送信は、例えば、相互接続として共有バスを使用するマルチプロセッサ・システム内の全てのプロセッサへブロードキャスト・メッセージによって、あるいは、ポイント・ツー・ポイント相互接続の場合には各プロセッサへ個々のメッセージによって遂行される。
【００２３】
要求が全てのターゲット・エージェントによって受け入れられない場合（４１０）、再試行手順が実行される（４２０）。全てのターゲット・エージェントが要求を受け入れた場合（４１０）、各ターゲット・エージェントは、プッシュされているキャッシュ・ラインがそのキャッシュ・メモリ内に存在するかどうかを判定する（４３０）。本実施例において、キャッシュ・ラインが存在する場合（４３０）、キャッシュ・ライン内の状態は「有効」状態のまま維持される（４４０）。キャッシュ・ラインは外部エージェントによってプッシュされるデータで上書きされる（４５０）。
【００２４】
キャッシュ・ラインがターゲット・エージェントのキャッシュ・メモリ内に存在しない場合（４３０）、エージェントは、キャッシュ・ラインを「有効」状態に割り当てる（４６０）。割り当てられたキャッシュ・ラインは、外部エージェントによってプッシュされたデータで充満される（４７０）。外部エージェントからのデータが、ターゲット・エージェント内のキャッシュに格納されたとき（４５０または４７０）、データは「有効」状態に格納され、ターゲット・エージェントの各々に利用可能である。
【００２５】
図５は、ライトスルーまたはライトバック・コヒーレンシ・プロトコルを使用するシステム内のメモリ・コントローラへ全てのキャッシュ・ラインをプッシュする技術の一実施例のフローチャートである。本実施例において、メモリ・コントローラは、システム内の全てのターゲット装置に送られたプッシュ要求を受け取る（５００）。
【００２６】
プッシュ要求の受け取りに応答して、メモリ・コントローラは、システム内の全てのターゲット装置がプッシュ要求を受け入れたかどうかを判定する（５１０）。全てのターゲット装置がプッシュ要求を受け入れた場合（５１０）、メモリ・コントローラによって、プッシュされたデータ・ラインは適切なメモリ位置に書き込まれる（５３０）。全てのターゲット装置がプッシュ要求を受け入れない場合（５１０）、再試行手順が実行される（５２０）。
【００２７】
一部のキャッシュ・ラインのためのプッシュ動作の例
図６は、キャッシュ・メモリを有するマルチプル・ターゲット・プロセッサへの一部のキャッシュ・ラインをプッシュする技術の一実施例のフローチャートである。本実施例において、プッシュ要求は、システム内の各ターゲット・エージェント（例えば、プロセッサ）に送られる（６００）。プッシュ要求の送信は、例えば、相互接続として共有バスを使用するマルチプロセッサ・システム内の全てのプロセッサへブロードキャスト・メッセージによって、あるいは、ポイント・ツー・ポイント相互接続の場合には各プロセッサへ個々のメッセージによって遂行される。
【００２８】
要求が全てのターゲット・エージェントによって受け入れられない場合（６０５）、再試行手順が実行される（６１０）。全てのターゲット・エージェントが要求を受け入れる場合（６０５）、各ターゲット・エージェントは、プッシュされているキャッシュ・ラインがそのキャッシュ・メモリ内に存在するかどうかを判定する（６２０）。
【００２９】
本実施例において、データ・ラインがターゲット・エージェントのキャッシュ・メモリ内に存在しない場合（６２０）、プッシュの試みは拒絶される（６６０）。エージェントは、メモリから対応するデータを読み取る（６６５）。取り出されたデータは、ターゲット・エージェント内に格納される（６７０）。
【００３０】
本実施例において、データがターゲット・エージェントのキャッシュ・メモリ内に存在する場合（６２０）、ターゲット・エージェントは、データを含むキャッシュ・ラインがクリーン状態に格納されたかどうかを判定する（６２５）。ラインがクリーン状態に格納された場合、プッシュされた一部のラインのデータは、キャッシュ内に格納された既存のデータと併合される（６３０）。
【００３１】
ラインがクリーン状態に格納されていない場合、ターゲット・エージェントは、プッシュの試みを拒絶する（６４０）。その後、ターゲット・エージェントはダーティ・キャッシュ・ライン内のデータをメモリに書き込む（６４５）。その後、キャッシュ・ラインの状態が、「共有」に更新される（６５０）。
【００３２】
図７は、ライトスルーまたはライトバック・コヒーレンシ・プロトコルを使用するシステム内のメモリ・コントローラへ一部のキャッシュ・ラインをプッシュする技術の一実施例のフローチャートである。本実施例において、メモリ・コントローラは、システム内の全てのターゲット装置に送られたプッシュ要求を受け取る（７００）。
【００３３】
プッシュ要求の受け取りに応答して、メモリ・コントローラは、システム内の全てのターゲット装置がプッシュ要求を受け入れたかどうかを判定する（７１０）。全てのターゲット装置がプッシュ要求を受け入れた場合（７１０）、メモリ・コントローラによって、プッシュされた一部のキャッシュ・ラインは適切なメモリ位置に書き込まれる（７３０）。全てのターゲット装置がプッシュ要求を受け入れない場合（７１０）、再試行手順が実行される（７２０）。
【００３４】
本明細書において「一実施例」または「ある実施例」と称する場合は、本実施例に関して記述された特定の機能、構造、または特性が、本発明の少なくとも一実施例に含まれることを意味する。本明細書中の多くの箇所において「一実施例において」という語句が用いられるが、必ずしも全てが同じ実施例に関するものではない。
【００３５】
本発明はいくつかの実施例について記述されているが、当業者は、本発明が記述された実施例に限定されるものではなく、添付の請求項の思想および範囲内において、修正および変更して実施できることを認識するであろう。したがって、本明細書は、限定的ではなく、例示であると解すべきである。
【図面の簡単な説明】
【００３６】
【図１】コンピュータ・システムの一実施例のブロック図である。
【図２】外部エージェントからのプッシュ動作の概念図である。
【図３】ライトバック・コヒーレンシ・プロトコルを使用して、全てのキャッシュ・ラインをシステム内にキャッシュ・メモリを有するマルチプル・ターゲット・プロセッサへプッシュする技術の一実施例のフローチャートである。
【図４】ライトスルー・コヒーレンシ・プロトコルを使用して、全てのキャッシュ・ラインをシステム内にキャッシュ・メモリを有するマルチプル・ターゲット・プロセッサへプッシュする技術の一実施例のフローチャートである。
【図５】ライトスルーまたはライトバック・コヒーレンシ・プロトコルを使用して、全てのキャッシュ・ラインをシステム内のメモリ・コントローラへプッシュする技術の一実施例のフローチャートである。
【図６】キャッシュ・メモリを有するマルチプル・ターゲット・プロセッサへ一部のキャッシュ・ラインをプッシュする技術の一実施例のフローチャートである。
【図７】ライトスルーまたはライトバック・コヒーレンシ・プロトコルを使用して、全てのキャッシュ・ラインをシステム内のメモリ・コントローラへプッシュする技術の一実施例のフローチャートである。
【図１】
2008503807.tif 000002
【図２】
2008503807.tif 000003
【図３】
2008503807.tif 000004
【図４】
2008503807.tif 000005
【図５】
2008503807.tif 000006
【図６】
2008503807.tif 000007
【図７】
2008503807.tif 000008
【国際調査報告】
2008503807.tif 000009
2008503807.tif 000010