トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 ホバ―リング(H)及びリ―セント(R)状態を有するキャッシュ・コヒ―レンシ・プロトコル
【発明者】 【氏名】ラビ・クマール・アリミリ

【氏名】ジョン・スティーブン・ドットソン

【氏名】ジェリー・ダン・ルイス

【要約】 【課題】マルチプロセッサ・データ処理システムにおいてキャッシュ・コヒーレンシを維持するためのキャッシュ及び方法を提供する。

【解決手段】このデータ処理システムは相互接続線に結合された複数のプロセッサ及び複数のキャッシュを含む。この方法によれば、第1データ項目が、その第1データ項目のアドレスを表すアドレス・タグと関連してそれらのキャッシュのうちの第1キャッシュに記憶される。第1キャッシュにおけるコヒーレンシ・インディケータが、そのタグが有効であること及び第1データ項目が無効であることを表す第1状態にセットされる。しかる後、それらの複数のキャッシュのうちの他のキャッシュによって開始されたデータ転送を検出するために、相互接続線がスヌープされる。そのデータ転送は、アドレス・タグによって表されたアドレスと関連付けられ、有効な第2データ項目を含む。
【特許請求の範囲】
【請求項1】相互接続線に結合された複数のプロセッサ及び複数のキャッシュを含むデータ処理システムにおいてキャッシュ・コヒーレンシを維持する方法にして、前記複数のキャッシュのうちの第1キャッシュにおいて、第1データ項目を、該第1データ項目のアドレスを表すアドレス・タグと関連して記憶するステップと、前記第1キャッシュにおけるコヒーレンシ・インディケータを、前記アドレス・タグが有効であること及び前記第1データ項目が前記第1キャッシュにおいて無効であることを表す第1状態にセットするステップと、しかる後、前記アドレス・タグによって表された前記アドレスと関連した前記相互接続線におけるデータ転送であって、前記複数のキャッシュのうちの他のキャッシュによって開始され、第2データ項目を含むデータ転送を検出するためにスヌープするステップと、前記コヒーレンシ・インディケータが前記第1状態にセットされている間の前記アドレス・タグによって表された前記アドレスと関連する前記相互接続線におけるデータ転送の検出に応答して、(i)前記第2データ項目を、前記アドレス・タグと関連して前記第1キャッシュに記憶するステップと、(ii)前記第2データ項目が有効であること及び前記第1キャッシュがリクエストに応答して前記第2データ項目を供給できることを表す第2状態に前記コヒーレンシ・インディケータを更新するステップと、を含む方法。
【請求項2】前記コヒーレンシ・インディケータを更新するステップは、前記第2データ項目が前記第1キャッシュ及び前記複数のキャッシュのうちの他のキャッシュの両方に記憶されることを表す第2状態に前記コヒーレンシ・インディケータを更新するステップを含む請求項1に記載の方法。
【請求項3】前記コヒーレンシ・インディケータを第1状態にセットするステップは、前記複数のプロセッサの1つが前記アドレス・タグによって表された前記アドレスに記憶するという意図を表すことに応答して、前記コヒーレンシ・インディケータを前記第1状態にセットするステップを含む請求項1に記載の方法。
【請求項4】前記コヒーレンシ・インディケータが前記第2状態にセットされている間に前記第2データ項目に対するリクエストが前記相互接続線を介して前記第1キャッシュにおいて受け取られたことに応答して、前記第2データ項目を前記相互接続線上に供給するステップを含む請求項1に記載の方法。
【請求項5】前記第1キャッシュは前記複数のプロセッサのうちの特定のプロセッサと関連付けられ、前記スヌープするステップは前記特定のプロセッサと関連した高レベル・キャッシュによって発生されたデータ転送を検出するためにスヌープするステップを含む請求項1に記載の方法。
【請求項6】相互接続線に結合された複数のプロセッサ及び複数のキャッシュを含むデータ処理システムにおいてキャッシュ・コヒーレンシをサポートするためのキャッシュにして、データ記憶装置と、前記データ記憶装置に含まれた第1データ項目のアドレスを表すアドレス・タグを記憶するタグ記憶装置と、少なくとも第1状態及び第2状態を有し、前記第1状態は前記アドレス・タグが有効であること及び前記第1データ項目が無効であることを表す、コヒーレンシ・インディケータと、前記アドレス・タグによって表された前記アドレスと関連した前記相互接続線におけるデータ転送であって、前記複数のキャッシュのうちの他のキャッシュによって開始され、第2データ項目を含むデータ転送を検出するために前記相互接続線をスヌープするための手段と、前記コヒーレンシ・インディケータが前記第1状態にセットされている間の前記アドレス・タグによって表された前記アドレスと関連した前記相互接続線におけるデータ転送の検出に応答して、(i)前記第2データ項目を、前記アドレス・タグと関連して前記データ記憶装置に記憶し、(ii)前記第2データ項目が有効であること及び前記第1キャッシュがリクエストに応答して前記第2データ項目を供給できることを表す第2状態に前記コヒーレンシ・インディケータを更新するための手段と、を含むキャッシュ。
【請求項7】前記コヒーレンシ・インディケータを更新するための手段は、前記第2データ項目が前記第1キャッシュ及び前記複数のキャッシュのうちの他のキャッシュの両方に記憶されていることを表す第2状態に前記コヒーレンシ・インディケータを更新するための手段を含む請求項6に記載のキャッシュ。
【請求項8】前記複数のプロセッサの1つが前記アドレス・タグによって表された前記アドレスに記憶するという意図を表すことに応答して、前記コヒーレンシ・インディケータを前記第1状態にセットするための手段を含む請求項6に記載のキャッシュ。
【請求項9】前記コヒーレンシ・インディケータが前記第2状態にセットされている間に前記第2データ項目に対するリクエストが前記相互接続線を介して前記第1キャッシュにおいて受け取られたことに応答して、前記第2データ項目を前記相互接続線上に供給するための手段を含む請求項6に記載のキャッシュ。
【請求項10】前記キャッシュは前記複数のプロセッサのうちの特定のプロセッサと関連付けられ、前記スヌープするための手段は前記特定のプロセッサと関連した高レベル・キャッシュによって発生されたデータ転送を検出するためにスヌープするための手段を含む請求項6に記載のキャッシュ。
【請求項11】前記キャッシュは前記相互接続線にルックアサイド構成で接続される請求項6に記載のキャッシュ。
【請求項12】相互接続線と、前記相互接続線に結合された複数のプロセッサと、各々が前記複数のプロセッサのうちの1つプロセッサと関連付けられた複数のキャッシュと、を含み、前記複数のキャッシュのうちの第1キャッシュは、データ記憶装置と、前記データ記憶装置に含まれた第1データ項目のアドレスを表すアドレス・タグを記憶するタグ記憶装置と、少なくとも第1状態及び第2状態を有し、前記第1状態は前記アドレス・タグが有効であること及び前記第1データ項目が無効であることを表す、コヒーレンシ・インディケータと、前記アドレス・タグによって表された前記アドレスと関連した前記相互接続線におけるデータ転送であって、前記複数のキャッシュのうちの他のキャッシュによって開始され、第2データ項目を含むデータ転送を検出するために前記相互接続線をスヌープするための手段と、前記コヒーレンシ・インディケータが前記第1状態にセットされている間の前記アドレス・タグによって表された前記アドレスと関連した前記相互接続線におけるデータ転送の検出に応答して、(i)前記第2データ項目を、前記アドレス・タグと関連して前記データ記憶装置に記憶し、(ii)前記第2データ項目が有効であること及び前記第1キャッシュがリクエストに応答して前記第2データ項目を供給できることを表す第2状態に前記コヒーレンシ・インディケータを更新するための手段と、を含むデータ処理システム。
【請求項13】前記コヒーレンシ・インディケータを更新するための手段は、前記第2データ項目が前記第1キャッシュ及び前記複数のキャッシュのうちの他のキャッシュの両方に記憶されていることを表す第2状態に前記コヒーレンシ・インディケータを更新するための手段を含む請求項12に記載のデータ処理システム。
【請求項14】前記複数のプロセッサの1つが前記アドレス・タグによって表された前記アドレスに記憶するという意図を表すことに応答して、前記コヒーレンシ・インディケータを前記第1状態にセットするための手段を含む請求項12に記載のデータ処理システム。
【請求項15】前記コヒーレンシ・インディケータが前記第2状態にセットされている間に前記第2データ項目に対するリクエストが前記相互接続線を介して前記第1キャッシュにおいて受け取られたことに応答して、前記第2データ項目を前記相互接続線上に供給するための手段を含む請求項12に記載のデータ処理システム。
【請求項16】前記キャッシュは前記複数のプロセッサのうちの特定のプロセッサと関連付けられ、前記スヌープするための手段は前記特定のプロセッサと関連した高レベル・キャッシュによって発生されたデータ転送を検出するためにスヌープするための手段を含む請求項12に記載のデータ処理システム。
【請求項17】前記第1キャッシュは前記相互接続線にルックアサイド構成で接続される請求項12に記載のデータ処理システム。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は、概して云えば、データ処理のための方法及びシステムに関するものであり、特に、マルチプロセッサ・データ処理システムにおいてキャッシュ・コヒーレンシを維持するための方法及びシステムに関するものである。更に詳しく云えば、本発明は、共用介入をサポートするリーセント(R,Recent))状態と、第1キャッシュ及び第2キャッシュを結合する相互接続線を介して第2キャッシュが有効データを独立的に伝送することに応答して、第1キャッシュがその有効データでもって更新されることを可能にするホバーリング(H,Hovering)状態とを含むマルチプロセッサ・データ処理システムのためのキャッシュ・コヒーレンシ・プロトコルに関するものである。
【0002】
【従来の技術】通常の対称マルチプロセッサ(SMP)データ処理システムでは、すべてのプロセッサが大体において同じである。即ち、すべてのプロセッサが共通の命令セット及び通信プロトコルを利用し、同じハードウエア・アーキテクチャを有し、一般的に、同じメモリ・ハイアラーキを備えている。例えば、通常のSMPデータ処理システムは、システム・メモリと、各々が1つのプロセッサ及び1つ又は複数のレベルのキャッシュ・メモリを含む複数の処理エレメントと、それらの処理エレメントを相互に及びシステム・メモリに結合するシステム・バスとを含み得るものである。SMPデータ処理システムにおいて有効な実行結果を得るためには、コヒーレント・メモリ・ハイアラーキを維持すること、即ち、すべてのプロセッサにメモリの内容に関して単一の視野を与えることが重要である。
【0003】コヒーレント・メモリ・ハイアラーキは、MESIプロトコルのような選択されたメモリ・コヒーレンシ・プロトコルの使用を通して維持される。MESIプロトコルでは、コヒーレンシ状態の表示が少なくともすべての上位レベル(キャッシュ)メモリの各コヒーレンシ・グラニュール(例えば、キャッシュ・ライン又はセクタ)と関連して記憶される。各コヒーレンシ・グラニュールは4つの状態、即ち、変更状態(M,Modified)、排他的状態(E,Exclusive)、共用状態(S,Shared)、及び無効状態(I,Invalid)のうちの1つを持つことができ、それはキャッシュ・ディレクトリにおける2つのビットによって表される。変更状態は、コヒーレンシ・グラニュールがその変更されたコヒーレンシ・グラニュールを記憶するキャッシュにおいてのみ有効であること、及びその変更されたコヒーレンシ・グラニュールの値がシステム・メモリに書き込まれていないことを表す。コヒーレンシ・グラニュールが排他的状態として表される時、そのコヒーレンシ・グラニュールは、そのレベルのメモリ・ハイアラーキにおけるすべてのキャッシュのうちの、排他的状態におけるコヒーレンシ・グラニュールを持ったキャッシュにのみに存在する。しかし、排他的状態におけるデータはシステム・メモリと整合している。コヒーレンシ・グラニュールがキャッシュ・ディレクトリにおいて共用状態としてマークされる場合、そのコヒーレンシ・グラニュールは、関連するキャッシュ及び同じレベルのメモリ・ハイアラーキにおける少なくとも1つの他のキャッシュに存在する。なお、そのコヒーレンシ・グラニュールのすべてのコピーがシステム・メモリと整合している。最後に、無効状態は、コヒーレンシ・グラニュールと関連したデータ及びアドレスが両方とも無効であることを表す。
【0004】各コヒーレンシ・グラニュール(例えば、キャッシュ・ライン)がセットされる状態は、キャッシュ・ラインの前の状態と、リクエスト・プロセッサによって求められたメモリ・アクセスのタイプとの両方に依存する。従って、マルチプロセッサ・データ処理システムにおいてメモリ・コヒーレンシを維持することは、プロセッサがメモり・ロケーションを読み取る又は書き込むというそれらの意図を表すメッセージをそのシステムを通してコミュニケートすることを必要とする。例えば、プロセッサがメモり・ロケーションにデータを書き込むことを望む時、プロセッサは、先ず、メモリ・ロケーションにデータを書き込むというそれの意図を他のすべての処理エレメントに知らせ、その書込オペレーションを実行するための許可を他のすべての処理エレメントから受けなければならない。リクエスト・プロセッサが受け取る許可メッセージは、メモリ・ロケーションの内容の他のすべてのキャッシュされたコピーが無効にされてしまったことを表し、それによって、他のプロセッサが陳腐なローカル・データをアクセスしないことを保証する。このメッセージ交換は相互無効化(cross−invalidation、即ち、XI)として知られている。
【0005】本発明は、キャッシュ・エントリの相互無効化がSMPデータ処理システムにおけるメモリ・コヒーレンシを維持するように働いている間、リモート・プロセッサによるキャッシュ・エントリの無効化が、ローカル・キャッシュにおけるヒット率を下げることによってデータ処理システムのパフォーマンスに悪影響を与えるという認識を含む。従って、たとえ大きなローカル・キャッシュを備えていても、処理エレメントは、一旦ローカル・キャッシュに存在したデータを別の処理エレメントにおけるリモート・キャッシュから又はシステム・メモリから検索する時、長いアクセス待ち時間をまねくことがある。従って、明らかなように、キャッシュ・エントリの相互無効化の結果としてパフォーマンス・ペナルティを少なくすると共に、SMPデータ処理システムにおいてメモリ・コヒーレンシを維持するための方法及びシステムを提供することが望ましいであろう。
【0006】本発明は、通常のMESIプロトコルが、リモート・キャッシュに記憶されたデータの効率的な検索をサポートしないという認識も考慮するものである。或る既知のマルチプロセッサ・データ処理システムは、データを変更状態で記憶するリモート・キャッシュが、その変更されたデータを読取リクエストに応答して供給することを可能にした、いわゆる、変更介入(modified intervention)をサポートするけれども、MESIプロトコルは、リクエストされたデータが共用状態にある時、データをソーシングする責任を他の処理エレメントに割り振ることはしない。従って、リクエストされたデータは、比較的低いアクセス待ち時間で複数のリモート・キャッシュに記憶可能であるけれども、通常のマルチプロセッサ・データ処理システムでは、共用データはいつもシステム・メモリから検索されなければならない。従って、共用介入をサポートする改良されたキャッシュ・コヒーレンシ・プロトコルを提供することは望ましいことであろう。
【0007】
【発明が解決しようとする課題】従って、本発明の目的は、データ処理するための改良された方法及びシステムを提供することにある。
【0008】本発明のもう1つの目的は、マルチプロセッサ・データ処理システムにおいてキャッシュ・コヒーレンシを維持するための改良された方法及びシステムを提供することにある。
【0009】本発明の更にもう1つの目的は、共用介入をサポートするリーセント(R)状態と、第1キャッシュ及び第2キャッシュを結合する相互接続線を介して第2キャッシュが有効データを独立的に伝送することに応答して、第1キャッシュが有効データでもって更新されることを可能にするホバーリング(H)状態とを含むマルチプロセッサ・データ処理システムのためのキャッシュ・コヒーレンシ・プロトコルを提供することにある。
【0010】
【課題を解決するための手段】上記の目的は、次に説明するようにして達成される。相互接続線に結合された複数のプロセッサ及び複数のキャッシュを含むデータ処理システムが設けられる。本発明の方法によれば、第1データ項目が、その第1データ項目のアドレスを表すアドレス・タグと関連してそれらのキャッシュのうちの第1キャッシュに記憶される。第1キャッシュにおけるコヒーレンシ・インディケータが、そのタグが有効であること及び第1データ項目が無効であることを表す第1状態にセットされる。しかる後、それらの複数のキャッシュのうちの他のキャッシュによって開始されたデータ転送を検出するために、相互接続線がスヌープされる。そのデータ転送は、アドレス・タグによって表されたアドレスと関連付けられ、有効な第2データ項目を含む。コヒーレンシ・インディケータが第1状態にセットされている間のそのようなデータ転送の検出に応答して、アドレス・タグと関連して第1キャッシュに第2データ項目を記憶することによって第1データ項目が置換される。更に、コヒーレンシ・インディケータは、第2データ項目が有効であること及び第1キャッシュがリクエストに応答してその第2データ項目を供給することができることを表す第2状態に更新される。
【0011】本発明の上記及び更なる目的、特徴、及び利点は、以下の詳細に示された説明において明らかになるであろう。
【0012】
【発明の実施の形態】図面、特に、図1を参照すると、本発明によるマルチプロセッサ・データ処理システムの高レベル・ブロック図が示される。図示のように、データ処理システム8は複数のプロセッサ10a−10nを含み、それらのプロセッサの各々はインターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なプロセッサのうちのPowerPC(商標)ラインの1つを含むことが望ましい。プロセッサ10a−10nの各々は、プログラム命令を実行するために利用される通常のレジスタ、命令フロー・ロジック、及び実行ユニットに加えて、搭載レベル1(L1)キャッシュ12a−12nのうちの関連したキャッシュを含んでいる。そのキャッシュは、関連のプロセッサによってアクセスされそうな命令及びデータを一時的に記憶する。L1キャッシュ12a−12nは、図1では、命令及びデータの両方(以下では、両方を単にデータと呼ぶ)を記憶する一体化されたキャッシュとして示されるけれども、別の方法として、L1キャッシュ12a−12nの各々が命令キャッシュ及びデータ・キャッシュに分けられて実施されてもよいことは当業者には明らかであろう。
【0013】アクセス待ち時間を最小にするために、データ処理システム8は、レベル2(L2)キャッシュ14a−14nのような1つ又は複数の更なるレベルのキャッシュ・メモリも含んでいる。それらのキャッシュ14a−14nはL1キャッシュ12a−12nに対するデータをステージ化するために利用される。換言すれば、L2キャッシュ14a−14nは、システム・メモリ18とL1キャッシュ12a−12nとの間の中間記憶装置として機能し、一般には、L1キャッシュ12a−12nよりもずっと大きい量のデータを記憶することができるが、長いアクセス待ち時間のものである。例えば、L2キャッシュ14a−14nは256又は512キロバイトの記憶容量を持ち得るし、一方、L1キャッシュ12a−12nは64又は128キロバイトの記憶容量を持ち得る。更に、プロセッサ10aはルックアサイドL3キャッシュ15aによってサポートされる。L3キャッシュ15aはL2キャッシュ14aと並列に相互接続線16に接続され、L2キャッシュ14aに等しいか又はそれよりも大きい記憶容量を有することが望ましい。
【0014】図示のように、データ処理システム8は、更に、I/O装置20、システム・メモリ18、及び不揮発性記憶装置22を含む。それらの各々は相互接続線16に結合される。I/O装置20は、ディスプレイ装置、キーボード、及びグラフィカル・ポインタのような通常の周辺装置を含み、通常のアダプタを介して相互接続線16にインターフェースされる。不揮発性記憶装置22は、オペレーティング・システム及び他のソフトウエアを記憶する。それらは、データ処理システム8がパワー・オンされることに応答して揮発性システム・メモリ18にロードされる。勿論、データ処理システム8が、ネットワーク又は付加装置に接続するための直列及び並列ポート、システム・メモリ18へのアクセスを調整するメモリ・コントローラ等のような図1に示されてない多くの更なるコンポーネントを含むことができることは当業者には明らかであろう。
【0015】1つ又は複数のバス又はクロスポイント・スイッチを含み得る相互接続線16は、L2キャッシュ14a−14n、L3キャッシュ15a、システム・メモリ18、入出力(I/O)装置20、及び不揮発性記憶装置22の間の通信トランザクションのためのコンジットとして働く。相互接続線16を介した代表的な通信トランザクションは、そのトランザクションのソース、そのトランザクションの意図された受信側を指定する宛先タグ、アドレス、及び/又はデータを含む。相互接続線16に結合された各装置は、相互接続線16を介したすべての通信トランザクションをスヌープすることが望ましい。
【0016】次に図2を参照すると、本発明に従って、L2キャッシュ14(14a−14nの1つ)の実施例の更に詳細なブロック図が示される。その実施例では、L2キャッシュは、32ビット・アドレスを利用する4ウェイ・セット連想キャッシュである。従って、L2キャッシュ14のデータ・アレイ34は、各々がキャッシュ・ラインを記憶するための4つのウェイを含む。通常のセット連想キャッシュでは、システム・メモリ18におけるメモリ・ロケーションは、そのメモリ・ロケーションのアドレスにおけるインデックス・ビット(例えば、32ビット・アドレスのビット20−26)を利用してデータ・アレイ34における特定の適合(congruence)クラスにマップされる。
【0017】データ・アレイ34内に記憶されたキャッシュ・ラインは、キャッシュ・ディレクトリ32にレコードされる。キャッシュ・ディレクトリ32は、データアレイ34における各ウェイに対して1つのディレクトリ・エントリを含む。各ディレクトリ・エントリは、タグ・フィールド40、コヒーレンシ・ステータス・フィールド42、LRUフィールド44、及びインクルード(I)フィールド46を含む。タグ・フィールド40は、キャッシュ・ラインのシステム・メモリ・アドレスのタグ・ビット(例えば、ビット0−19)を記憶することによって、どのキャッシュ・ラインがデータ・アレイ34の対応するウェイに記憶されるかを指定する。図3を参照して以下で詳しく説明するように、コヒーレンシ・ステータス・フィールド42は、事前定義されたビットの組合せを利用してデータ・アレイ34の対応するウェイに記憶されたデータのコヒーレンシ・ステータスを表す。LRUフィールド44は、データ・アレイ34の対応するウェイがそれの適合クラスの他のウェイに関してどのくらい最近アクセスされたかを表し、それによって、どのキャッシュ・ラインがキャッシュ・ミスに応答して適合クラスから放出されるべきかを表す。最後に、インクルード・フィールド46は、データ・アレイ34の対応するウェイに記憶されたキャッシュ・ラインが関連のL1キャッシュ12にも記憶されるか否かを表す。
【0018】更に図2を参照すると、L2キャッシュ14はキャッシュ・コントローラ36を更に含む。キャッシュ・コントローラ36はデータ・アレイ34におけるデータの記憶及び検索を管理し、関連のL1キャッシュ12から受け取った信号及び相互接続線16を介してスヌープされたトランザクションに応答して、キャッシュ・ディレクトリ32に対する更新を管理する。図示のように、キャッシュ・コントローラ36は読取キュー50及び書込キュー52を含み、キャッシュ・コントローラ36は、キャッシュ・ディレクトリ32に対する更新及びデータ・アレイ34に対するアクセスを遂行する。例えば、関連のL1キャッシュ12から読取リクエストを受け取ったことに応答して、キャッシュ・コントローラ36は読取キューにおけるエントリに読取リクエストを入れる。キャッシュ・コントローラ36は、リクエストされたデータを関連のL1キャッシュ12に供給することによって読取リクエストをサービスし、しかる後、その読取リクエストを読取キュー50から除去する。
【0019】別の例として、キャッシュ・コントローラ36は、リモート・プロセッサ10が1つの指定されたキャッシュ・ラインのそれのローカル・コピーを修正することを意図するということをL2キャッシュ14a−14nの別のキャッシュが表すことによって開始されたトランザクションをスヌープすることがある。このトランザクションをスヌープすることに応答して、キャッシュ・コントローラ36は、指定されたキャッシュ・ラインがデータ・アレイ34に存在するかどうかを決定するために、キャッシュ・ディレクトリ32を読み取るというリクエストを読取キュー50に入れる。そのキャッシュ・ラインがデータ・アレイに存在する場合、キャッシュ・コントローラ36は相互接続線16上に適正な応答を入れ、必要な場合には、書込キュー52にディレクトリ書込リクエストを挿入する。ディレクトリ書込リクエストは、サービスされる時、指定されたキャッシュ・ラインと関連したコヒーレンシ・ステータス・フィールドを更新する。図2は、1つの読取キュー及び1つの書込キューしか利用されない実施例を示すけれども、キャッシュ・コントローラ36によって使用されるキューの数は選択上の問題であること、及びキャッシュ・コントローラ36はキャッシュ・ディレクトリ・アクセス及びデータ・アレイ・アクセスに対して別々のキューを使用し得ることは勿論である。
【0020】L3キャッシュ15aは、わずかな例外はあるが、図2に示されたL2キャッシュ14のように構成される。更に詳しく云えば、L3キャッシュ15aのキャッシュ・コントローラは、キャッシュ間接続線によってL2キャッシュ14aに接続されるのではなく、前述のように、L2キャッシュ14aによって相互接続線16上に発生されたすべてのトランザクションをL3キャッシュ15aのキャッシュ・コントローラがスヌープするように、L2キャッシュ14aと並列に相互接続線16に接続される。
【0021】次に、図3を参照すると、本発明によるHR−MESIキャッシュ・コヒーレンシ・プロトコルの実施例が示される。図示のHR−MESIプロトコルは、メモリ・ハイアラーキにおけるイン・ライン・キャッシュの最低レベル(即ち、L2キャッシュ14a−14n)及び、わずかな相違点はあるが、任意の低レベル・ルックアサイド・キャッシュ(即ち、L3キャッシュ15a)によって実施されることが望ましい。高レベル・キャッシュは、通常のMESIプロトコル、又は米国特許出願番号08/839,548号に開示されたR−MESIプロトコルのようなプロトコル・サブセットを実施することが望ましい。しかし、データ処理システム8の別の実施例において、付加的なキャッシュ間の通信トラフィックを犠牲にしてメモリ・ハイアラーキにおける各レベルのキャッシュにおいてHR−MESIプロトコルを実施することができるは勿論である。
【0022】図3に示されるように、HR−MESIキャッシュ・コヒーレンシ・プロトコルは、MESIプロトコルの通常の変更(M)状態、排他的(E)状態、共用(S)状態、及び無効(I)状態を含んでおり、それらの状態は、それぞれ、参照番号80、82、84、及び86によって識別される。更に、本発明のHR−MESIキャッシュ・コヒーレンシ・プロトコルには、関連のタグ・フィールド40に記憶されたアドレス・タグは有効であるが、データ・アレイ34の対応するウェイに記憶されたデータ項目(例えば、キャッシュ・ライン又はキャッシュ・セクタ)は無効であることを表すホバーリング(H)状態90と、データ項目のコピーを記憶する複数のキャッシュのうちのどのキャッシュが相互接続線16上のトランザクションを介して共用データを最近受け取ったかを表すR状態92とが含まれる。
【0023】本発明の望ましい実施例では、各L2キャッシュ・ディレクトリ32の各エントリのコヒーレンシ・ステータス・フィールド42は、パワー・オン時にI状態86に初期設定され、タグ・フィールド40及びデータ・アレイ34の対応するウェイに記憶されたデータの両方とも無効であることを表す。L1及びL3キャッシュ・ディレクトリ・エントリも同様に無効状態に初期設定される。しかる後、無効状態86におけるL2キャッシュ14a−14nの1つ又はL3キャッシュ15aに記憶されたキャッシュ・ライン(又は、キャッシュ・セクタ)のコヒーレンシ・ステータスは、プロセッサ10a−10nによって行われたメモリ・リクエストのタイプ及びそれらのリクエストに対するメモリ・ハイアラーキの応答の両方に従って、M状態80、E状態82、又はR状態92の1つに更新可能である。
【0024】例えば、プロセッサ10aがロード命令に応答して読取リクエストを行う場合、L1キャッシュ12aは、先ず、そのリクエストされたデータがL1キャッシュ12aに存在するか否かの決定を行う。L1キャッシュ12aにおけるヒットに応答して、L1キャッシュ12aは単にそのリクエストされたデータをプロセッサ10aに供給するだけである。しかし、L1キャッシュ12aにおけるミスに応答して、L1キャッシュ12aはキャッシュ間接続線を介してL2キャッシュ14aに読取リクエストを送る。L2キャッシュ14aにおけるヒットに応答して、そのリクエストされたデータはL2キャッシュ14aによってL1キャッシュ12aに供給される。L1キャッシュ12aは、そのリクエストされたデータを適正なコヒーレンシ・ステータスと関連して記憶し且つそのデータをプロセッサ10aに送る。
【0025】しかし、読取リクエストがL1キャッシュ12a及びL2キャッシュ14aの両方においてミスする場合、L2キャッシュ14aのキャッシュ・コントローラ36は、相互接続線16上にトランザクションとして読取リクエストを供給する。それは、L2キャッシュ14b−14nの各々及びL3キャッシュ15aによってスヌープされる。相互接続線16における読取リクエストをスヌープすることに応答して、L2キャッシュ14b−14nの各々におけるキャッシュ・コントローラ36は、リクエストされたデータがそれのデータ・アレイ34に存在するか又はL1キャッシュ12b−12nのうちの関連するキャッシュに存在するかを決定する。L3キャッシュ15aのキャッシュ・コントローラは、同様に、その読取リクエストがL3キャッシュ・ディレクトリにおいてヒットするかどうかを決定する。L2キャッシュ14b−14n、L1キャッシュ12b−12n、及びL3キャッシュ15aのいずれもそのリクエストされたデータを記憶してない場合、L2キャッシュ14a−14nの各々及びL3キャッシュ15aはヌル応答をL2キャッシュ14aに戻し、しかる後、L2キャッシュ14aはシステム・メモリ18にそのデータをリクエストする。
【0026】リクエストされたデータがシステム・メモリ18からL2キャッシュ14aに戻される時、キャッシュ・コントローラ36は、L1キャッシュ12aにそのリクエストされたデータを送り、それのデータ・アレイ34にそのリクエストされたデータを記憶し、そのリクエストされたデータを記憶するウェイに関連したコヒーレンシ・ステータス・フィールド42を、参照番号100によって表されるように、I状態86からE状態82に更新する。通常のMESIプロトコルにおけるように、E状態82は、関連のキャッシュ・ラインが有効であって、メモリ・ハイアラーキの第2レベルにおける他のいずれのキャッシュにも存在しないことを表す。L3キャッシュ15aは、同様に、そのリクエストされたデータをE状態82で記憶する。
【0027】プロセッサ10aによってリクエストされたデータがL1キャッシュ12a、L2キャッシュ14a、及びL3キャッシュ15aに存在せず、例えば、L1キャッシュ12nにM状態80で記憶されている場合、L2キャッシュ14nのキャッシュ・コントローラ36は変更応答でもってその読取リクエストに応答し、そのリクエストされたデータをL2キャッシュ14nに押し出すようにL1キャッシュ12nに信号を与える。しかる後、L2キャッシュ14nは相互接続線16上のそのリクエストされたデータをソースにする。読取リクエストに応答して、L1キャッシュ12n及びL2キャッシュ14nにおけるそのリクエストされたデータのコヒーレンシ・ステータスが、参照番号102によって表されるように、S状態84に更新される。
【0028】本発明によれば、そのリクエストされたデータがL2キャッシュ14aに記憶されるウェイのコヒーレンシ・ステータスは、参照番号104によって表されるように、I状態86からR状態92への遷移を行う。前述のように、R状態92は、関連のデータがL2キャッシュ14aによって最近参照されたこと、及びL2キャッシュ14aが、相互接続線16を介してそのデータに対するリクエストをスヌープすることに応答して、そのデータをソースにすることを表す。L3キャッシュ15aがシステム・メモリ18からのリクエストされたデータの戻りをスヌープする時、L3キャッシュ15aはそのリクエストされたデータをサンプルし、そのデータをS状態84で記憶する。参照番号105で示されたI状態86及びS状態84の間の遷移は、この遷移がL3キャッシュ15aにだけ適用可能であることを表すために破線を使って表される。変更介入をサポートしない本発明の別の実施例においても、同じ状態遷移が行われることは、上記の例から当業者には明らかであろう。しかし、それらの別の実施例では、リクエストされたデータは、追加のアクセス待ち時間を犠牲にしてシステム・メモリ18から得られる。
【0029】L2キャッシュ14aは、それの読取リクエストに対する共用介入応答又は共用応答に応答して、I状態86からR状態92への遷移を同様に行う。L2キャッシュ14b−14nの1つ、例えば、L2キャッシュ14nがそのリクエストされたデータをR状態92又はE状態82で記憶する場合、L2キャッシュ14aは共用介入応答(及び、リクエストされたデータ)を受け取る。読取リクエストに応答して、L2キャッシュ14nのキャッシュ・コントローラ36は、リクエストされたデータのそれのコピーのコヒーレンシ・ステータスを、参照番号106によって表されるようにR状態92からS状態84に更新する。L2キャッシュ14b−14nのどれもリクエストされたデータをR状態92で記憶してないが、少なくとも1つがそのリクエストされたデータをS状態84で記憶している場合、そのリクエストされたデータをS状態84で記憶しているL2キャッシュ14は共用応答でもってその読取リクエストに応答し、そのリクエストされたデータのそれのコピーをS状態84のままにする。共用応答のみの受信に応答して、L2キャッシュ14aはそのリクエストされたデータをシステム・メモリ18から検索し、そのリクエストされたデータをR状態92で記憶する。両方の場合とも、L3キャッシュ15aはリクエストされたデータをサンプルし、そのデータをS状態84で記憶する。
【0030】プロセッサ10aが変更する目的でメモリ・ロケーションの排他的使用を得ることを望んでいることを表す「変更する意図を持って読み取る」というリクエストをL2キャッシュ14aが相互接続線16上に発生する場合、そのリクエストされたデータは、上記のように、L3キャッシュ15a、リモートL2キャッシュ14、又はシステム・メモリ18から得られる。しかし、そのリクエストされたキャッシュ・ラインが得られる時、L1キャッシュ12a及びL2キャッシュ14aはそのリクエストされたキャッシュ・ラインを、参照番号107で示されるように、M状態80で記憶する。更に、リクエストされたキャッシュ・ラインの他のコピーが陳腐になることを「変更する意図を持って読み取る」というトランザクションが表すので、L3キャッシュ15a及びリモートL1及びL2キャッシュは、そのリクエストされたキャッシュ・ラインのそれらのコピーが無効であることを表さなければならない。L1キャッシュ12b−12nでは、そのリクエストされたキャッシュ・ラインの如何なるコピーも、単に、無効としてマークされるだけである。しかし、L3キャッシュ15a及びL2キャッシュ14b−14nに記憶されたそのリクエストされたキャッシュ・ラインのコピーのコヒーレンシ・ステータスは、相互無効化(XI)を利用する通常のマルチプロセッサ・データ処理システムにおけるようにI状態86に更新されない。
【0031】その代わり、本発明の重要な局面によれば、リクエストされたキャッシュ・ラインのコピーを記憶するL2キャッシュ14b−14nの各々及びL3キャッシュ15aは、参照番号108、110、112、及び114によって表されるように、それのコピーと関連したコヒーレンシ・ステータス・フィールド42を、それぞれ、R状態92、S状態84、M状態80、又はE状態82の何れかからH状態90に更新する。上記のように、H状態90では、タグ・フィールド40に記憶されたタグは有効のままであるが、データ・アレイ34における関連のキャッシュ・ラインは無効であることが表される。L2及びL3キャッシュ・ディレクトリにおけるエントリは、データが無効にされることを必要とする他のスヌープされたトランザクションに応答して、同様に、H状態90に更新される。そのスヌープされたトランザクションは、キル(kill、即ち、指定されたデータ・ブロックを明示的に無効にするトランザクション)、フラッシュ(flush、即ち、指定されたデータ・ブロックを無効にし、すべての変更されたデータをシステム・メモリにコピーするトランザクション)、dclaim(即ち、リモート・キャッシュにおいて共用としてマークされたキャッシュ・ラインのコピーを、そのキャッシュ・ラインのローカル・コピーがストアに応答して変更されたことに応答して、無効にするトランザクション)等を含む。
【0032】参照番号116、118、及び120によって表されるように、キャッシュ・ディレクトリ・エントリは、どのタイプのトランザクションをキャッシュが受け取るかに従って、H状態90からE状態82又はM状態80に遷移を行うことができる。例えば、H状態90にあるL2キャッシュ14aのディレクトリ・エントリは、(L1キャッシュ12a及びL2キャッシュ14aの両方においてミスした後)L3キャッシュ15a及びL2キャッシュ14b−14nからヌル応答を受ける読取リクエストをプロセッサ10aが行うことに応答して、E状態82への遷移を行う。E状態82は、システム・メモリ18から検索されたデータが、すべてのL2キャッシュ14a−14nのうちのL2キャッシュ14aのみに記憶されることを意味する。一方、プロセッサ10aが、H状態90にあるL1キャッシュ12aのウェイに対しデータを記憶する意図を表す場合、L1キャッシュ12aはL2キャッシュ14aに対してその意図を表し、次に、L2キャッシュ14aは相互接続線16上に「変更する意図を持って読み取る」というトランザクションを発生する。
【0033】上記のように、L3キャッシュ15a及びL2キャッシュ14b−14nに記憶されたそのリクエストされたキャッシュ・ラインのコピーは、「変更する意図を持って読み取る」というトランザクションをスヌープすることに応答してH状態90に更新され、L1キャッシュ12b−12nに記憶されたそのリクエストされたキャッシュ・ラインのコピーは無効としてマークされる。一旦、リクエストされたキャッシュ・ラインが得られると、L2キャッシュ14a及びL1キャッシュ12aにおけるそのキャッシュ・ラインのコヒーレンシ・ステータスは、そのキャッシュ・ラインは有効であるがシステム・メモリ18とコヒーレントではないことを意味するようにM状態80にセットされる。
【0034】H状態90におけるキャッシュ・ディレクトリ・エントリは、参照番号120で示されるように、S状態84にも更新可能である。前述のように、L2キャッシュ・14a−14nの各々は、相互接続線16上に発生されたすべてのトランザクションをスヌープする。L2キャッシュ14a−14nの1つ、例えば、L2キャッシュ14aが、H状態90でL2キャッシュ14aに記憶されたデータの更新された(即ち、有効な)コピーを含むL2キャッシュ14b−14nのうちの他のキャッシュによって発生されたトランザクションをスヌープする場合、L2キャッシュ14aのキャッシュ・コントローラ36は、相互接続線16からデータをサンプルし、そのスヌープされたデータをデータ・アレイ34に記憶し、関連のコヒーレンシ・ステータス・フィールド42をH状態90からS状態84に更新する。
【0035】このように、本発明は、関連のプロセッサ10がデータ・リクエストを行うことなく、又はキャッシュが相互接続線16を介したトランザクションを開始することなく、H状態90におけるキャッシュ・ディレクトリ・エントリがS状態84に更新されることを可能にする。勿論、上記のシナリオでは、L2キャッシュ14aは、応答がコヒーレンシを維持することを要求される場合、スヌープされたトランザクションにも応答を与える。例えば、スヌープされたトランザクションが読取リクエストである場合、L2キャッシュ14aは、リクエストしたL2キャッシュがそのリクエストされたデータをE状態82ではなくR状態92で記憶するように、そのリクエストされたデータをサンプルするという意図を表す共用応答を与えなければならない。有効アドレス・タグと関連した無効データをリフレッシュするためにこの方法でスヌープ可能である相互接続線16上のトランザクションは、読取トランザクション、書込トランザクション、キャッシュ・ライン・キャストアウトによるシステム・メモリ18へのデータ書戻し等を含む。
【0036】H状態90におけるL2ディレクトリ・エントリは、多くの種々なリクエスト/応答シナリオに応答してR状態92に更新されてもよい。例えば、プロセッサ10aがL1キャッシュ12aにおいてミスし、L2キャッシュ14aにおいてタグ・ヒットを生じるという読取リクエストを行う場合、及び一致したタグと関連のコヒーレンシ・ステータス・フィールド42がH状態90にある場合、L2キャッシュ14aのキャッシュ・コントローラ36は相互接続線16上に読取トランザクションを発生する。L3キャッシュ15a及びL2キャッシュ14b−14nからのその読取トランザクションに対する共用介入応答、共用応答、又は変更応答の受信に応答して、L2キャッシュ14aのキャッシュ・コントローラ36は、リクエストされたデータと関連したコヒーレンシ・ステータス・フィールド42を、参照番号122で示されるように、H状態90からR状態92に更新する。
【0037】更に重要なこととして、H状態90におけるキャッシュ・ディレクトリ・エントリは、関連のプロセッサがデータをリクエストすることなく、R状態92に更新可能である。例えば、プロセッサ10aによる「変更する意図をもって読み取る」というリクエストに続いて、L1キャッシュ12a及びL2キャッシュ14aはリクエストされたデータをM状態80で記憶し、一方、L3キャッシュ15a及びL2キャッシュ14b−14nにおけるキャッシュ・ラインのすべてのコピーのコヒーレンシ・ステータスはH状態90にセットされる。リクエストされたデータが、その後、例えば、読取ミスに応答してL2キャッシュ14aからの置換のために選択される場合、L2キャッシュ14aのキャッシュ・コントローラ36はシステム・メモリ18にそのリクエストされたデータを記憶するために相互接続線16上に書込トランザクションを発生する。この書込トランザクションをスヌープすることに応答して、L3キャッシュ15aのキャッシュ・コントローラはそのデータをサンプルし、それのL3データ・アレイにそのデータを記憶し、そして、L3キャッシュ15aが、その後、読取リクエスト又は「変更する意図をもって読み取る」というリクエストに応答してそのデータをソース化に得るように関連のコヒーレンシ・ステータス・フィールドを更新する。
【0038】図3に示されたHR−MESIメモリ・コヒーレンシ・プロトコルの実施例において行われる状態遷移が下記の表1及びその続きの表2において要約される。
【表1】

【0039】
【表2】

【0040】前述のように、本発明は、マルチプロセッサ・データ処理システムにおいてキャッシュ・コヒーレンシを維持するための改良された方法及びシステムを提供する。本発明によって提供される改良されたキャッシュ・コヒーレンシ・プロトコルは、ローカル・プロセッサが明示的な読取又は書込リクエストを発生することなく、有効アドレス・タグと関連してキャッシュ内に記憶された無効データ項目が有効データでもって自動的に更新されることを可能にする。この方法では、リモート・プロセッサのアクティビティによって無効にされたデータは、そのデータがローカル・プロセッサによってアクセスされる前にリフレッシュされ、それによって、その後、リモート・キャッシュ又はシステム・メモリからデータを検索する必要がなくなることにより、アクセス待ち時間を減少させることが可能である。本発明のキャッシュ・コヒーレンシ・プロトコルによって、共用状態で記憶されたデータをシステム・メモリではなくリモートキャッシュから供給する共用介入にサポートを通して、データ・アクセス待ち時間もかなり減少する。
【0041】実施例に関連して本発明を詳しく示し、説明したけれども、本発明の精神及び技術範囲から逸脱することなく、形式及び詳細の種々の変更を行い得ることは当業者には明らかであろう。例えば、図3に示されたメモリ・コヒーレンシ・プロトコルの実施例は、I状態86がパワー・オン時にディレクトリ・エントリを開始するために利用されるだけであって、他の状態から再入されないので、そのI状態を排除することによって修正可能である。I状態86が排除された場合、パワー・オン時に、各L2ディレクトリ・エントリのコヒーレンシ・ステータス・フィールドがH状態90に初期設定されるであろうし、各L2ディレクトリ・エントリのタグ・フィールドは、少なくとも同じ適合クラスでは独特であるタグ値に初期設定されるであろう。更に、図2のパフォーマンス・モニタ70が、別の方法として、各L2キャッシュ14内の複数の別々のパフォーマンス・モニタとしてではなく、内部接続線16に結合された単一のシステム・ワイドのパフォーマンス・モニタとして実施可能である。
【0042】まとめとして、本発明の構成に関して以下の事項を開示する。
【0043】(1)相互接続線に結合された複数のプロセッサ及び複数のキャッシュを含むデータ処理システムにおいてキャッシュ・コヒーレンシを維持する方法にして、前記複数のキャッシュのうちの第1キャッシュにおいて、第1データ項目を、該第1データ項目のアドレスを表すアドレス・タグと関連して記憶するステップと、前記第1キャッシュにおけるコヒーレンシ・インディケータを、前記アドレス・タグが有効であること及び前記第1データ項目が前記第1キャッシュにおいて無効であることを表す第1状態にセットするステップと、しかる後、前記アドレス・タグによって表された前記アドレスと関連した前記相互接続線におけるデータ転送であって、前記複数のキャッシュのうちの他のキャッシュによって開始され、第2データ項目を含むデータ転送を検出するためにスヌープするステップと、前記コヒーレンシ・インディケータが前記第1状態にセットされている間の前記アドレス・タグによって表された前記アドレスと関連する前記相互接続線におけるデータ転送の検出に応答して、(i)前記第2データ項目を、前記アドレス・タグと関連して前記第1キャッシュに記憶するステップと、(ii)前記第2データ項目が有効であること及び前記第1キャッシュがリクエストに応答して前記第2データ項目を供給できることを表す第2状態に前記コヒーレンシ・インディケータを更新するステップと、を含む方法。
(2)前記コヒーレンシ・インディケータを更新するステップは、前記第2データ項目が前記第1キャッシュ及び前記複数のキャッシュのうちの他のキャッシュの両方に記憶されることを表す第2状態に前記コヒーレンシ・インディケータを更新するステップを含む上記(1)に記載の方法。
(3)前記コヒーレンシ・インディケータを第1状態にセットするステップは、前記複数のプロセッサの1つが前記アドレス・タグによって表された前記アドレスに記憶するという意図を表すことに応答して、前記コヒーレンシ・インディケータを前記第1状態にセットするステップを含む上記(1)に記載の方法。
(4)前記コヒーレンシ・インディケータが前記第2状態にセットされている間に前記第2データ項目に対するリクエストが前記相互接続線を介して前記第1キャッシュにおいて受け取られたことに応答して、前記第2データ項目を前記相互接続線上に供給するステップを含む上記(1)に記載の方法。
(5)前記第1キャッシュは前記複数のプロセッサのうちの特定のプロセッサと関連付けられ、前記スヌープするステップは前記特定のプロセッサと関連した高レベル・キャッシュによって発生されたデータ転送を検出するためにスヌープするステップを含む上記(1)に記載の方法。
(6)相互接続線に結合された複数のプロセッサ及び複数のキャッシュを含むデータ処理システムにおいてキャッシュ・コヒーレンシをサポートするためのキャッシュにして、データ記憶装置と、前記データ記憶装置に含まれた第1データ項目のアドレスを表すアドレス・タグを記憶するタグ記憶装置と、少なくとも第1状態及び第2状態を有し、前記第1状態は前記アドレス・タグが有効であること及び前記第1データ項目が無効であることを表す、コヒーレンシ・インディケータと、前記アドレス・タグによって表された前記アドレスと関連した前記相互接続線におけるデータ転送であって、前記複数のキャッシュのうちの他のキャッシュによって開始され、第2データ項目を含むデータ転送を検出するために前記相互接続線をスヌープするための手段と、前記コヒーレンシ・インディケータが前記第1状態にセットされている間の前記アドレス・タグによって表された前記アドレスと関連した前記相互接続線におけるデータ転送の検出に応答して、(i)前記第2データ項目を、前記アドレス・タグと関連して前記データ記憶装置に記憶し、(ii)前記第2データ項目が有効であること及び前記第1キャッシュがリクエストに応答して前記第2データ項目を供給できることを表す第2状態に前記コヒーレンシ・インディケータを更新するための手段と、を含むキャッシュ。
(7)前記コヒーレンシ・インディケータを更新するための手段は、前記第2データ項目が前記第1キャッシュ及び前記複数のキャッシュのうちの他のキャッシュの両方に記憶されていることを表す第2状態に前記コヒーレンシ・インディケータを更新するための手段を含む上記(6)に記載のキャッシュ。
(8)前記複数のプロセッサの1つが前記アドレス・タグによって表された前記アドレスに記憶するという意図を表すことに応答して、前記コヒーレンシ・インディケータを前記第1状態にセットするための手段を含む上記(6)に記載のキャッシュ。
(9)前記コヒーレンシ・インディケータが前記第2状態にセットされている間に前記第2データ項目に対するリクエストが前記相互接続線を介して前記第1キャッシュにおいて受け取られたことに応答して、前記第2データ項目を前記相互接続線上に供給するための手段を含む上記(6)に記載のキャッシュ。
(10)前記キャッシュは前記複数のプロセッサのうちの特定のプロセッサと関連付けられ、前記スヌープするための手段は前記特定のプロセッサと関連した高レベル・キャッシュによって発生されたデータ転送を検出するためにスヌープするための手段を含む上記(6)に記載のキャッシュ。
(11)前記キャッシュは前記相互接続線にルックアサイド構成で接続される上記(6)に記載のキャッシュ。
(12)相互接続線と、前記相互接続線に結合された複数のプロセッサと、各々が前記複数のプロセッサのうちの1つプロセッサと関連付けられた複数のキャッシュと、を含み、前記複数のキャッシュのうちの第1キャッシュは、データ記憶装置と、前記データ記憶装置に含まれた第1データ項目のアドレスを表すアドレス・タグを記憶するタグ記憶装置と、少なくとも第1状態及び第2状態を有し、前記第1状態は前記アドレス・タグが有効であること及び前記第1データ項目が無効であることを表す、コヒーレンシ・インディケータと、前記アドレス・タグによって表された前記アドレスと関連した前記相互接続線におけるデータ転送であって、前記複数のキャッシュのうちの他のキャッシュによって開始され、第2データ項目を含むデータ転送を検出するために前記相互接続線をスヌープするための手段と、前記コヒーレンシ・インディケータが前記第1状態にセットされている間の前記アドレス・タグによって表された前記アドレスと関連した前記相互接続線におけるデータ転送の検出に応答して、(i)前記第2データ項目を、前記アドレス・タグと関連して前記データ記憶装置に記憶し、(ii)前記第2データ項目が有効であること及び前記第1キャッシュがリクエストに応答して前記第2データ項目を供給できることを表す第2状態に前記コヒーレンシ・インディケータを更新するための手段と、を含むデータ処理システム。
(13)前記コヒーレンシ・インディケータを更新するための手段は、前記第2データ項目が前記第1キャッシュ及び前記複数のキャッシュのうちの他のキャッシュの両方に記憶されていることを表す第2状態に前記コヒーレンシ・インディケータを更新するための手段を含む上記(12)に記載のデータ処理システム。
(14)前記複数のプロセッサの1つが前記アドレス・タグによって表された前記アドレスに記憶するという意図を表すことに応答して、前記コヒーレンシ・インディケータを前記第1状態にセットするための手段を含む上記(12)に記載のデータ処理システム。
(15)前記コヒーレンシ・インディケータが前記第2状態にセットされている間に前記第2データ項目に対するリクエストが前記相互接続線を介して前記第1キャッシュにおいて受け取られたことに応答して、前記第2データ項目を前記相互接続線上に供給するための手段を含む上記(12)に記載のデータ処理システム。
(16)前記キャッシュは前記複数のプロセッサのうちの特定のプロセッサと関連付けられ、前記スヌープするための手段は前記特定のプロセッサと関連した高レベル・キャッシュによって発生されたデータ転送を検出するためにスヌープするための手段を含む上記(12)に記載のデータ処理システム。
(17)前記第1キャッシュは前記相互接続線にルックアサイド構成で接続される上記(12)に記載のデータ処理システム。
【出願人】 【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレイション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MASCHINES CORPORATION
【出願日】 平成11年(1999)2月9日
【代理人】 【弁理士】
【氏名又は名称】坂口 博 (外1名)
【公開番号】 特開平11−328026
【公開日】 平成11年(1999)11月30日
【出願番号】 特願平11−31677