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