JPH11272558A - Hr状態を含むキャッシュ・コヒ―レンシ・プロトコル - Google Patents

Hr状態を含むキャッシュ・コヒ―レンシ・プロトコル

Info

Publication number
JPH11272558A
JPH11272558A JP11026669A JP2666999A JPH11272558A JP H11272558 A JPH11272558 A JP H11272558A JP 11026669 A JP11026669 A JP 11026669A JP 2666999 A JP2666999 A JP 2666999A JP H11272558 A JPH11272558 A JP H11272558A
Authority
JP
Japan
Prior art keywords
cache
state
data item
data
coherency
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP11026669A
Other languages
English (en)
Other versions
JP3286258B2 (ja
Inventor
Ravi Kumar Arimilli
ラビ・クマール・アリミリ
John Steven Dodson
ジョン・スティーブン・ドットソン
Jerry Don Lewis
ジェリー・ダン・ルイス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH11272558A publication Critical patent/JPH11272558A/ja
Application granted granted Critical
Publication of JP3286258B2 publication Critical patent/JP3286258B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】データ処理システムにおいてキャッシュ・コヒ
ーレンシを維持するための改良されたキャッシュ及び方
法を提供する。 【解決手段】データ処理システムは、相互接続線に結合
されたシステム・メモリ、複数のプロセッサ、及び複数
のキャッシュを含む。この方法によれば、第1データ項
目が、その第1データ項目のアドレスを表すアドレス・
タグと関連して前記キャッシュのうちの第1キャッシュ
に記憶される。アドレス・タグが有効であること及び第
1データ項目が無効であることを表す第1状態に、第1
キャッシュにおけるコヒーレンシ・インディケータがセ
ットされる。コヒーレンシ・インディケータが第1状態
にセットされている間、第1キャッシュがアドレス・タ
グによって表されたアドレスと関連したその相互接続線
上のデータ転送(そのデータ転送は、システム・メモリ
における対応するデータ項目に関して変更された第2デ
ータ項目を含む)を検出する場合、第2データ項目がそ
のアドレス・タグと関連して第1キャッシュに記憶され
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、概していえば、デ
ータ処理するための方法及びシステムに関するものであ
り、詳しくいえば、マルチプロセッサ・データ処理シス
テムにおいてキャッシュ・コヒーレンシ(一貫性)を維
持するための方法及びシステムに関するものである。更
に詳しくいえば、本発明は、無効データを表すけれど
も、データが介入によってソース化される他の状態に遷
移し得る少なくとも1つの状態を含むマルチプロセッサ
・データ処理システムのための改良されたキャッシュ・
コヒーレンシ・プロトコルに関するものである。
【0002】
【従来の技術】通常の対称マルチプロセッサ(SMP)
データ処理システムでは、すべてのプロセッサが大体に
おいて同じである。即ち、すべてのプロセッサが共通の
命令セット及び通信プロトコルを利用し、同じハードウ
エア・アーキテクチャを有し、一般的に、同じメモリ・
ハイアラーキを備えている。例えば、通常のSMPデー
タ処理システムは、システム・メモリと、各々が1つの
プロセッサ及び1つ又は複数のレベルのキャッシュ・メ
モリを含む複数の処理エレメントと、それらの処理エレ
メントを相互に及びシステム・メモリに結合するシステ
ム・バスとを含み得るものである。SMPデータ処理シ
ステムにおいて有効な実行結果を得るためには、コヒー
レント・メモリ・ハイアラーキを維持すること、即ち、
すべてのプロセッサにメモリの内容に関して単一の視野
を与えることが重要である。
【0003】コヒーレント・メモリ・ハイアラーキは、
MESIプロトコルのような選択されたメモリ・コヒー
レンシ・プロトコルの使用を通して維持される。MES
Iプロトコルでは、コヒーレンシ状態の表示が少なくと
もすべての上位レベル(キャッシュ)メモリの各コヒー
レンシ・グラニュール(粒度)(例えば、キャッシュ・
ライン又はセクタ)と関連して記憶される。各コヒーレ
ンシ・グラニュールは4つの状態、即ち、変更状態
(M,Modified)、排他的状態(E,Excl
usive)、共用状態(S,Shared)、及び無
効状態(I,Invalid)のうちの1つを持つこと
ができ、それはキャッシュ・ディレクトリにおける2つ
のビットによって表される。変更状態は、コヒーレンシ
・グラニュールがその変更されたコヒーレンシ・グラニ
ュールを記憶するキャッシュにおいてのみ有効であるこ
と、及びその変更されたコヒーレンシ・グラニュールの
値がシステム・メモリに書き込まれていないことを表
す。コヒーレンシ・グラニュールが排他的状態として表
される時、そのコヒーレンシ・グラニュールは、そのレ
ベルのメモリ・ハイアラーキにおけるすべてのキャッシ
ュのうちの、排他的状態におけるコヒーレンシ・グラニ
ュールを持ったキャッシュにのみに存在する。しかし、
排他的状態におけるデータはシステム・メモリと整合し
ている。コヒーレンシ・グラニュールがキャッシュ・デ
ィレクトリにおいて共用状態としてマークされる場合、
そのコヒーレンシ・グラニュールは、関連するキャッシ
ュ及び同じレベルのメモリ・ハイアラーキにおける少な
くとも1つの他のキャッシュに存在する。なお、そのコ
ヒーレンシ・グラニュールのすべてのコピーがシステム
・メモリと整合している。最後に、無効状態は、コヒー
レンシ・グラニュールと関連したデータ及びアドレスが
両方とも無効であることを表す。
【0004】各コヒーレンシ・グラニュール(例えば、
キャッシュ・ライン)がセットされる状態は、キャッシ
ュ・ラインの前の状態と、リクエスト・プロセッサによ
って求められたメモリ・アクセスのタイプとの両方に依
存する。従って、マルチプロセッサ・データ処理システ
ムにおいてメモリ・コヒーレンシを維持することは、プ
ロセッサがメモり・ロケーションを読み取る又は書き込
むというそれらの意図を表すメッセージをそのシステム
・バスを通してコミュニケートすることを必要とする。
例えば、プロセッサがメモり・ロケーションにデータを
書き込むことを望む時、プロセッサは、先ず、メモリ・
ロケーションにデータを書き込むというそれの意図を他
のすべての処理エレメントに知らせ、その書込オペレー
ションを実行するための許可を他のすべての処理エレメ
ントから受けなければならない。リクエスト・プロセッ
サが受け取る許可メッセージは、メモリ・ロケーション
の内容の他のすべてのキャッシュされたコピーが無効に
されてしまったことを表し、それによって、他のプロセ
ッサが陳腐なローカル・データをアクセスしないことを
保証する。このメッセージ交換は相互無効化(cros
s−invalidation、即ち、XI)として知
られている。
【0005】本発明は、キャッシュ・エントリの相互無
効化がSMPデータ処理システムにおけるメモリ・コヒ
ーレンシを維持するように働いている間、リモート・プ
ロセッサによるキャッシュ・エントリの無効化が、ロー
カル・キャッシュにおけるヒット率を下げることによっ
てデータ処理システムのパフォーマンスに悪影響を与え
るという認識を含む。従って、たとえ大きなローカル・
キャッシュを備えていても、処理エレメントは、一旦ロ
ーカル・キャッシュに存在したデータを別の処理エレメ
ントにおけるリモート・キャッシュから又はシステム・
メモリから検索する時、長いアクセス待ち時間をまねく
ことがある。従って、明らかなように、キャッシュ・エ
ントリの相互無効化の結果としてパフォーマンス・ペナ
ルティを少なくすると共に、SMPデータ処理システム
においてメモリ・コヒーレンシを維持するための方法及
びシステムを提供することは望ましいことであろう。
【0006】本発明は、通常のMESIプロトコルが、
リモート・キャッシュに記憶されたデータの効率的な検
索をサポートしないという認識も含んでいる。或既知の
マルチプロセッサ・データ処理システムは、変更状態に
おけるデータを記憶しているリモート・キャッシュが読
取リクエストに応答してその変更されたデータを供給す
ることを可能にする所謂変更介入をサポートするけれど
も、MESIプロトコルは、リクエストされたデータが
共用状態にある時、データをソース化する責任を他の処
理エレメントに割り振ることはしない。従って、リクエ
ストされたデータは比較的少ないアクセス待ち時間で複
数のリモート・キャッシュに記憶されることがあるけれ
ども、通常のマルチプロセッサ・データ処理システムで
は、共用データはいつもシステム・メモリから検索され
なければならない。従って、共用介入をサポートする改
良されたキャッシュ・コヒーレンシ・プロトコルを提供
することが望ましいであろう。
【0007】変更介入をサポートする通常のマルチプロ
セッサ・データ処理システムでは、変更されたデータ
は、それが共用バスにまたがる他のキャッシュに対して
ソース化される度にシステム・メモリに書き戻される。
本発明は、この手順がシステム・メモリとキャッシュ・
メモリとの間のコヒーレンシを維持している間、不要で
あるかもしれない書込オペレーションを遂行するため
に、それがシステム・メモリの制限された帯域幅の一部
分を消費するという認識を含んでいる。例えば、変更さ
れたキャッシュ・ラインが読取リクエストに応答して第
1キャッシュによって第2キャッシュに対してソース化
される場合、その第2キャッシュにおけるデータが再び
変更されることが多く、従って、システム・メモリにも
う一度書込みを必要とすることが多い。第2キャッシュ
の読取リクエストの時間とキャッシュ・ラインのその後
の変更との間でそのキャッシュ・ラインに対してそれ以
上のリクエストが発生されない場合、第1キャッシュに
よる変更介入に付随するシステム・メモリへの書込みは
余分なことである。
【0008】システム・メモリへの不必要な書き戻しを
減少させるための1つの可能な方法は、たとえリクエス
トしたキャッシュしか読取リクエストを行わなかったと
しても、データを、ソーシング・キャッシュでは無効な
ものとして及びそのリクエストしたキャッシュでは変更
されたものとしてマークすることであろう。この方法で
は、リクエストされたデータは、変更介入と関連してシ
ステム・メモリに書き戻される必要がない。しかし、キ
ャッシュ・コヒーレンシを維持するというこの方法は、
変更されたデータをプロセッサ相互間で共用することを
可能にするものではなく、データがキャッシュ相互間で
送られる時、更なるバス・トラフィックを作るであろ
う。従って、変更されたデータがキャッシュ相互間で共
用されることを可能にしながら、システム・メモリへの
データの効率的な書き戻しをサポートする改良されたキ
ャッシュ・コヒーレンシ・プロトコルを提供することが
望ましいであろう。
【0009】
【発明が解決しようとする課題】従って、本発明の目的
は、データ処理するための改良された方法及びシステム
を提供することにある。
【0010】本発明のもう1つの目的は、マルチプロセ
ッサ・データ処理システムにおいてキャッシュ・コヒー
レンシを維持するための改良された方法及びシステムを
提供することにある。
【0011】本発明の更にもう1つの目的は、無効デー
タを表すけれども、データが介入によってソース化され
得る別の状態に遷移することを可能にする少なくとも1
つの状態を含むマルチプレクサ・データ処理システムの
ためのキャッシュ・コヒーレンシ・プロトコルを提供す
ることにある。
【0012】
【課題を解決するための手段】上記の目的は、次に説明
するようにして達成される。相互接続線に結合されたシ
ステム・メモリ、複数のプロセッサ、及び複数のキャッ
シュを含むデータ処理システムが設けられる。本発明の
方法によれば、第1データ項目が、その第1データ項目
のアドレスを表すアドレス・タグと関連して前記キャッ
シュのうちの第1キャッシュに記憶される。アドレス・
タグが有効であること及び第1データ項目が無効である
ことを表す第1状態に、第1キャッシュにおけるコヒー
レンシ・インディケータがセットされる。コヒーレンシ
・インディケータが第1状態にセットされている間に、
第1キャッシュがアドレス・タグによって表されたアド
レスと関連したその相互接続線上のデータ転送(そのデ
ータ転送は、システム・メモリにおける対応するデータ
項目に関して変更された第2データ項目を含む)を検出
する場合、第2データ項目がそのアドレス・タグと関連
して第1キャッシュに記憶される。更に、コヒーレンシ
・インディケータは、第2データ項目が有効であること
及び第1キャッシュがリクエストに応答して第2データ
項目を供給し得ることを表す第2状態に更新される。
【0013】本発明の上記及び更なる目的、特徴、及び
利点は、以下の詳細に示された説明において明らかにな
るであろう。
【0014】
【発明の実施の形態】図面、特に、図1を参照すると、
本発明によるマルチプロセッサ・データ処理システムの
高レベル・ブロック図が示される。図示のように、デー
タ処理システム8は複数のプロセッサ10a−10nを
含み、それらのプロセッサの各々は、インターナショナ
ル・ビジネス・マシーンズ・コーポレーションから入手
可能なPowerPC(商標)ラインのプロセッサの1
つを含むことが望ましい。プロセッサ10a−10nの
各々は、プログラム命令を実行するために利用される通
常のレジスタ、命令フロー・ロジック、及び実行ユニッ
トに加えて、搭載レベル1(L1)キャッシュ12a−
12nのうちの関連したキャッシュも含んでいる。その
キャッシュは、関連のプロセッサによってアクセスされ
そうな命令及びデータを一時的に記憶する。L1キャッ
シュ12a−12nは、図1では、命令及びデータの両
方(以下では、両方を単にデータと呼ぶ)を記憶する一
体化されたキャッシュとして示されるけれども、別の方
法として、L1キャッシュ12a−12nの各々が命令
キャッシュ及びデータ・キャッシュに分けられて実施さ
れてもよいことは当業者には明らかであろう。
【0015】アクセス待ち時間を最小にするために、デ
ータ処理システム8は、レベル2(L2)キャッシュ1
4a−14nのような1つ又は複数の更なるレベルのキ
ャッシュ・メモリも含んでいる。それらのキャッシュ1
4a−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によってサポートされる。L
3キャッシュ15aはL2キャッシュ14aと並列に相
互接続線16に接続され、L2キャッシュ14aに等し
いか又はそれよりも大きい記憶容量を有することが望ま
しい。
【0016】図示のように、データ処理システム8は、
更に、I/O装置20、システム・メモリ18、及び不
揮発性記憶装置22を含む。それらの各々は相互接続線
16に結合される。I/O装置20は、ディスプレイ装
置、キーボード、及びグラフィカル・ポインタのような
通常の周辺装置を含み、通常のアダプタを介して相互接
続線16にインターフェースされる。不揮発性記憶装置
22は、オペレーティング・システム及び他のソフトウ
エアを記憶する。それらは、データ処理システム8がパ
ワー・オンされることに応答して揮発性システム・メモ
リ18にロードされる。勿論、データ処理システム8
が、ネットワーク又は付加装置に接続するための直列及
び並列ポート、システム・メモリ18へのアクセスを調
整するメモリ・コントローラ等のような図1に示されて
ない多くの更なるコンポーネントを含み得ることは当業
者には明らかであろう。
【0017】1つ又は複数のバス又はクロスポイント・
スイッチを含み得る相互接続線16は、L2キャッシュ
14a−14n、L3キャッシュ15a、システム・メ
モリ18、入出力(I/O)装置20、及び不揮発性記
憶装置22の間の通信トランザクションのためのコンジ
ットとして働く。相互接続線16を介した代表的な通信
トランザクションは、そのトランザクションのソース、
そのトランザクションの意図された受信側を指定する宛
先タグ、アドレス、及び/又はデータを含む。相互接続
線16に結合された各装置は、相互接続線16を介した
すべての通信トランザクションをスヌープすることが望
ましい。
【0018】次に図2を参照すると、本発明に従って、
L2キャッシュ14(14a−14nの1つ)の実施例
の更に詳細なブロック図が示される。その実施例では、
L2キャッシュ14は、32ビット・アドレスを利用す
る4ウェイ・セット連想キャッシュである。従って、L
2キャッシュ14のデータ・アレイ34は、各々がキャ
ッシュ・ラインを記憶するための8つのウェイを含む。
通常のセット連想キャッシュでは、システム・メモリ1
8におけるメモリ・ロケーションは、そのメモリ・ロケ
ーションのアドレスにおけるインデックス・ビット(例
えば、32ビット・アドレスのビット20−26)を利
用してデータ・アレイ34における特定の適合(con
gruence)クラスにマップされる。
【0019】データ・アレイ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にも記憶されるか否かを表
す。
【0020】更に図2を参照すると、L2キャッシュ1
4はキャッシュ・コントローラ36を更に含む。キャッ
シュ・コントローラ36はデータ・アレイ34における
データの記憶及び検索を管理し、関連のL1キャッシュ
12から受け取った信号及び相互接続線16を介してス
ヌープされたトランザクションに応答して、キャッシュ
・ディレクトリ32に対する更新を管理する。図示のよ
うに、キャッシュ・コントローラ36は読取キュー50
及び書込キュー52を含み、キャッシュ・コントローラ
36は、それらのキューから、キャッシュ・ディレクト
リ32に対する更新及びデータ・アレイ34に対するア
クセスを遂行する。例えば、関連のL1キャッシュ12
から読取リクエストを受け取ったことに応答して、キャ
ッシュ・コントローラ36は読取キュー50におけるエ
ントリに読取リクエストを入れる。キャッシュ・コント
ローラ36は、リクエストされたデータを関連のL1キ
ャッシュ12に供給することによって読取リクエストを
サービスし、しかる後、その読取リクエストを読取キュ
ー50から除去する。
【0021】別の例として、キャッシュ・コントローラ
36は、リモート・プロセッサ10が1つの指定された
キャッシュ・ラインのそれのローカル・コピーを修正す
ることを意図するということをL2キャッシュ14a−
14nの別のキャッシュが表すことによって開始された
トランザクションをスヌープすることがある。このトラ
ンザクションをスヌープすることに応答して、キャッシ
ュ・コントローラ36は、指定されたキャッシュ・ライ
ンがデータ・アレイ34に存在するかどうかを決定する
ために、キャッシュ・ディレクトリ32を読み取るとい
うリクエストを読取キュー50に入れる。そのキャッシ
ュ・ラインがデータ・アレイに存在する場合、キャッシ
ュ・コントローラ36は相互接続線16上に適正な応答
を入れ、必要な場合には、書込キュー52にディレクト
リ書込リクエストを挿入する。ディレクトリ書込リクエ
ストは、サービスされる時、指定されたキャッシュ・ラ
インと関連したコヒーレンシ・ステータス・フィールド
を更新する。図2は、1つの読取キュー及び1つの書込
キューしか利用しない実施例を示すけれども、キャッシ
ュ・コントローラ36によって使用されるキューの数は
選択上の問題であること、及びキャッシュ・コントロー
ラ36はキャッシュ・ディレクトリ・アクセス及びデー
タ・アレイ・アクセスに対して別々のキューを使用し得
ることは勿論である。
【0022】L3キャッシュ15aは、わずかな例外は
あるが、図2に示されたL2キャッシュ14のように構
成される。更に詳しく云えば、L3キャッシュ15aの
キャッシュ・コントローラは、キャッシュ間接続線によ
ってL2キャッシュ14aに接続されるのではなく、前
述のように、L2キャッシュ14aによって相互接続線
16上に発生されたすべてのトランザクションをL3キ
ャッシュ15aのキャッシュ・コントローラがスヌープ
するように、L2キャッシュ14aと並列に相互接続線
16に接続される。
【0023】次に、図3を参照すると、本発明によるH
R−MESIキャッシュ・コヒーレンシ・プロトコルの
実施例が示される。図示のHR−MESIプロトコル
は、メモリ・ハイアラーキにおけるイン・ライン・キャ
ッシュの最低レベル(即ち、L2キャッシュ14a−1
4n)及び、わずかな相違点はあるが、任意の低レベル
・ルックアサイド・キャッシュ(即ち、L3キャッシュ
15a)によって実施されることが望ましい。高レベル
・キャッシュは、通常のMESIプロトコル、米国特許
出願番号09/024,610号に開示されたH−MES
Iプロトコル、又は米国特許出願番号08/839,54
8号に開示されたR−MESIプロトコルのようなプロ
トコル・サブセットを実施することが望ましい。しか
し、データ処理システム8の別の実施例において、付加
的なキャッシュ間の通信トラフィックを犠牲にしてメモ
リ・ハイアラーキにおける各レベルのキャッシュにおい
てHR−MESIプロトコルを実施することができるは
勿論である。
【0024】図3に示されるように、HR−MESIキ
ャッシュ・コヒーレンシ・プロトコルは、MESIプロ
トコルの通常の変更(M)状態、排他的(E)状態、共
用(S)状態、及び無効(I)状態を含んでおり、それ
らの状態は、それぞれ、参照番号80、82、84、及
び86によって識別される。更に、本発明のHR−ME
SIキャッシュ・コヒーレンシ・プロトコルには、関連
のタグ・フィールド40に記憶されたアドレス・タグは
有効であるが、データ・アレイ34の対応するウェイに
記憶されたデータ項目(例えば、キャッシュ・ライン又
はキャッシュ・セクタ)は無効であることを表すホバー
リング(H,Hovering)状態90と、データ項
目のコピーを記憶する複数のキャッシュのうちのどのキ
ャッシュが相互接続線16上のトランザクションを介し
て共用データを最近受け取ったかを表すR状態92とが
含まれる。
【0025】本発明の望ましい実施例では、各L2キャ
ッシュ・ディレクトリ32の各エントリのコヒーレンシ
・ステータス・フィールド42は、パワー・オン時にI
状態86に初期設定され、タグ・フィールド40及びデ
ータ・アレイ34の対応するウェイに記憶されたデータ
の両方とも無効であることを表す。L1及びL3キャッ
シュ・ディレクトリ・エントリも同様に無効状態に初期
設定される。しかる後、無効状態86におけるL2キャ
ッシュ14a−14nの1つ又はL3キャッシュ15a
に記憶されたキャッシュ・ライン(又は、キャッシュ・
セクタ)のコヒーレンシ・ステータスは、プロセッサ1
0a−10nによって行われたメモリ・リクエストのタ
イプ及びそれらのリクエストに対するメモリ・ハイアラ
ーキの応答の両方に従って、M状態80、E状態82、
又はR状態92の1つに更新可能である。
【0026】例えば、プロセッサ10aがロード命令に
応答して読取リクエストを行う場合、L1キャッシュ1
2aは、先ず、そのリクエストされたデータがL1キャ
ッシュ12aに存在するか否かの決定を行う。L1キャ
ッシュ12aにおけるヒットに応答して、L1キャッシ
ュ12aは単にそのリクエストされたデータをプロセッ
サ10aに供給するだけである。しかし、L1キャッシ
ュ12aにおけるミスに応答して、L1キャッシュ12
aはキャッシュ間の接続線を介してL2キャッシュ14
aに読取リクエストを送る。L2キャッシュ14aにお
けるヒットに応答して、そのリクエストされたデータは
L2キャッシュ14aによってL1キャッシュ12aに
供給される。L1キャッシュ12aは、そのリクエスト
されたデータを適正なコヒーレンシ・ステータスと関連
して記憶し且つそのデータをプロセッサ10aに送る。
【0027】しかし、読取リクエストがL1キャッシュ
12a及びL2キャッシュ14aの両方においてミスす
る場合、L2キャッシュ14aのキャッシュ・コントロ
ーラ36は、相互接続線16上にトランザクションとし
て読取リクエストを供給する。それは、L2キャッシュ
14b−14nの各々及びL3キャッシュ15aによっ
てスヌープされる。相互接続線16における読取リクエ
ストをスヌープすることに応答して、L2キャッシュ1
4b−14nの各々におけるキャッシュ・コントローラ
36は、リクエストされたデータがそれのデータ・アレ
イ34に存在するか又はL1キャッシュ12b−12n
のうちの関連するキャッシュに存在するかを決定する。
L3キャッシュ15aのキャッシュ・コントローラは、
同様に、その読取リクエストがL3キャッシュ・ディレ
クトリにおいてヒットするかどうかを決定する。L2キ
ャッシュ14b−14n、L1キャッシュ12b−12
n、及びL3キャッシュ15aのいずれもそのリクエス
トされたデータを記憶してない場合、L2キャッシュ1
4a−14nの各々及びL3キャッシュ15aはヌル応
答をL2キャッシュ14aに戻し、しかる後、L2キャ
ッシュ14aはシステム・メモリ18にそのデータをリ
クエストする。
【0028】リクエストされたデータがシステム・メモ
リ18からL2キャッシュ14aに戻される時、キャッ
シュ・コントローラ36は、L1キャッシュ12aにそ
のリクエストされたデータを送り、それのデータ・アレ
イ34にそのリクエストされたデータを記憶し、そのリ
クエストされたデータを記憶するウェイに関連したコヒ
ーレンシ・ステータス・フィールド42を、参照番号1
00によって表されるように、I状態86からE状態8
2に更新する。通常のMESIプロトコルにおけるよう
に、E状態82は、関連のキャッシュ・ラインが有効で
あって、メモリ・ハイアラーキの第2レベルにおける他
のいずれのキャッシュにも存在しないことを表す。L3
キャッシュ15aは、同様に、そのリクエストされたデ
ータをE状態82で記憶する。
【0029】プロセッサ10aによってリクエストされ
たデータがL1キャッシュ12a、L2キャッシュ14
a、及びL3キャッシュ15aに存在せず、例えば、L
1キャッシュ12nにM状態80で記憶されている場
合、L2キャッシュ14nのキャッシュ・コントローラ
36は変更応答でもってその読取リクエストに応答し、
そのリクエストされたデータをL2キャッシュ14nに
押し込むようにL1キャッシュ12nに信号を与える。
しかる後、L2キャッシュ14nは相互接続線16上の
そのリクエストされたデータをソース化する。読取リク
エストに応答して、L1キャッシュ12n及びL2キャ
ッシュ14nにおけるそのリクエストされたデータのコ
ヒーレンシ・ステータスが、参照番号102によって表
されるように、S状態84に更新される。
【0030】本発明によれば、そのリクエストされたデ
ータがL2キャッシュ14aに記憶されるウェイのコヒ
ーレンシ・ステータスは、参照番号104によって表さ
れるように、I状態86からR状態92への遷移を行
う。前述のように、R状態92は、関連のデータがL2
キャッシュ14aによって最近参照されたこと、及びL
2キャッシュ14aが、相互接続線16を介してそのデ
ータに対するリクエストをスヌープすることに応答し
て、そのデータをソース化することを表す。L3キャッ
シュ15aがシステム・メモリ18からのリクエストさ
れたデータの戻りをスヌープする時、L3キャッシュ1
5aはそのリクエストされたデータをサンプルし、その
データをS状態84で記憶する。参照番号105で示さ
れたI状態86及びS状態84の間の遷移は、この遷移
がL3キャッシュ15aにだけ適用可能であることを表
すために破線を使って表される。変更介入をサポートし
ない本発明の別の実施例においても同じ状態遷移が行わ
れることは、上記の例から当業者には明らかであろう。
しかし、それらの別の実施例では、リクエストされたデ
ータは、追加のアクセス待ち時間を犠牲にしてシステム
・メモリ18から得られる。
【0031】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
で記憶する。
【0032】プロセッサ10aが変更する目的でメモリ
・ロケーションの排他的使用を得ることを望んでいるこ
とを表す「変更する意図を持って読み取る」というリク
エストをL2キャッシュ14aが相互接続線16上に発
生する場合、そのリクエストされたデータは、上記のよ
うに、L3キャッシュ15a、リモートL2キャッシュ
14、又はシステム・メモリ18から得られる。しか
し、そのリクエストされたキャッシュ・ラインが得られ
る時、L1キャッシュ12a及びL2キャッシュ14a
はそのリクエストされたキャッシュ・ラインを、参照番
号107で示されるように、M状態80で記憶する。更
に、リクエストされたキャッシュ・ラインの他のコピー
が陳腐になることを「変更する意図を持って読み取る」
というトランザクションが表すので、L3キャッシュ1
5a及びリモートL1及びL2キャッシュは、そのリク
エストされたキャッシュ・ラインのそれらのコピーが無
効であることを表さなければならない。L1キャッシュ
12b−12nでは、そのリクエストされたキャッシュ
・ラインの如何なるコピーも、単に、無効としてマーク
されるだけである。しかし、L3キャッシュ15a及び
L2キャッシュ14b−14nに記憶されたそのリクエ
ストされたキャッシュ・ラインのコピーのコヒーレンシ
・ステータスは、相互無効化(XI)を利用する通常の
マルチプロセッサ・データ処理システムにおけるように
I状態86に更新されない。
【0033】その代わり、本発明の重要な局面によれ
ば、リクエストされたキャッシュ・ラインのコピーを記
憶する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、即ち、指定されたデー
タ・ブロックを無効にし、すべての変更されたデータを
システム・メモリにコピーするトランザクション)、d
claim(即ち、リモート・キャッシュにおいて共用
としてマークされたキャッシュ・ラインのコピーを、そ
のキャッシュ・ラインのローカル・コピーがストアに応
答して変更されたことに応答して、無効にするトランザ
クション)等を含む。
【0034】参照番号116及び118によって表され
るように、キャッシュ・ディレクトリ・エントリは、キ
ャッシュが受け取るトランザクションのタイプに従っ
て、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キャッシュ14
aのみに記憶されることを意味する。一方、プロセッサ
10aが、H状態90にあるL1キャッシュ12aのウ
ェイに対してデータを記憶する意図を表す場合、L1キ
ャッシュ12aはL2キャッシュ14aに対してその意
図を表し、次に、L2キャッシュ14aは相互接続線1
6上に「変更する意図を持って読み取る」というトラン
ザクションを発生する。
【0035】上記のように、L3キャッシュ15a及び
L2キャッシュ14b−14nに記憶されたそのリクエ
ストされたキャッシュ・ラインのコピーは、「変更する
意図を持って読み取る」というトランザクションをスヌ
ープすることに応答してH状態90に更新され、L1キ
ャッシュ12b−12nに記憶されたそのリクエストさ
れたキャッシュ・ラインのコピーは無効としてマークさ
れる。一旦、リクエストされたキャッシュ・ラインが得
られると、L2キャッシュ14a及びL1キャッシュ1
2aにおけるそのキャッシュ・ラインのコヒーレンシ・
ステータスは、そのキャッシュ・ラインは有効であるが
システム・メモリ18とコヒーレントではないことを意
味するように、M状態80にセットされる。
【0036】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に更新する。
【0037】このように、本発明は、関連のプロセッサ
10がデータ・リクエストを行うことなく、又はキャッ
シュが相互接続線16を介したトランザクションを開始
することなく、H状態90におけるキャッシュ・ディレ
クトリ・エントリがS状態84に更新されることを可能
にする。勿論、上記のシナリオでは、L2キャッシュ1
4aは、応答がコヒーレンシを維持することを要求され
る場合、スヌープされたトランザクションにも応答を与
える。例えば、スヌープされたトランザクションが読取
リクエストである場合、L2キャッシュ14aは、リク
エストしたL2キャッシュがそのリクエストされたデー
タをE状態82ではなくR状態92で記憶するように、
そのリクエストされたデータをサンプルするという意図
を表す共用応答を与えなければならない。有効アドレス
・タグと関連した無効データをリフレッシュするために
この方法でスヌープ可能である相互接続線16上のトラ
ンザクションは、読取トランザクション、書込トランザ
クション、キャッシュ・ライン・キャストアウトによる
システム・メモリ18へのデータ書戻し等を含む。
【0038】H状態90におけるキャッシュ・ディレク
トリ・エントリは、多くの種々なリクエスト/応答シナ
リオに応答してR状態92にも更新可能である。例え
ば、プロセッサ10aがL1キャッシュ12aにおいて
ミスし、L2キャッシュ14aにおいてタグ・ヒットを
生じるという読取リクエストを行う場合、及び一致した
タグと関連のコヒーレンシ・ステータス・フィールド4
2がH状態90にある場合、L2キャッシュ14aのキ
ャッシュ・コントローラ36は相互接続線16上に読取
トランザクションを発生する。L3キャッシュ15a及
びL2キャッシュ14b−14nからのその読取トラン
ザクションに対する共用介入応答、共用応答、又は変更
応答の受取りに応答して、L2キャッシュ14aのキャ
ッシュ・コントローラ36は、リクエストされたデータ
と関連したコヒーレンシ・ステータス・フィールド42
を、参照番号122で示されるように、H状態90から
R状態92に更新する。
【0039】更に重要なこととして、H状態90におけ
るキャッシュ・ディレクトリ・エントリは、関連のプロ
セッサがデータをリクエストすることなく、R状態92
に更新可能である。例えば、L3キャッシュ15a及び
L2キャッシュ14b−14nにおけるキャッシュ・ラ
インのすべてのコピーのコヒーレンシ・ステータスがH
状態90にセットされている間は、プロセッサ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が、その
後、読取リクエスト又は「変更する意図をもって読み取
る」というリクエストに応答してそのデータをソース化
し得るように関連のコヒーレンシ・ステータス・フィー
ルドを更新する。
【0040】図3に示されたHR−MESIメモリ・コ
ヒーレンシ・プロトコルの実施例において行われる状態
遷移が下記の表1及びその続きの表2において要約され
る。
【表1】
【0041】
【表2】
【0042】本発明によれば、上記のHR−MESIキ
ャッシュ・コヒーレンシ・プロトコルは、更なる機能性
をサポートする更なる状態を含むように拡張可能であ
る。例えば、図4を参照すると、HRT−MESIキャ
ッシュ・コヒーレンシ・プロトコルの実施例の状態図が
示される。HRT−MESIプロトコルは、それが実施
される場合、メモリ・ハイアラーキにおける最低レベル
のインライン・キャッシュ(図1の実施例では、L2キ
ャッシュ14a−14nを含む)によって利用されるこ
とが望ましい。L3キャッシュ15aのような何れの低
レベル・ルックアサイド・キャッシュもHR−MESI
プロトコルを実施することが望ましく、一方、高レベル
・キャッシュはHR−MESIプロトコルのサブセット
・プロトコル、例えば、H−MESI、R−MESI、
又はMESIプロトコルの1つを使用することが望まし
い。上述のHR−MESIプロトコルにおける状態に加
えて、図4に示されたHRT−MESIキャッシュ・コ
ヒーレンシ・プロトコルはタグ付き(T)状態94を含
む。米国特許出願番号24,393の米国特許出願に詳
細に記述されているように、T状態94は、関連のキャ
ッシュ・ラインがローカル・プロセッサ以外のプロセッ
サによって変更されているがシステム・メモリには書き
戻されていないことを表す。そのように、T状態94自
体はS状態84のようにローカル・プロセッサによって
処理され、相互接続線におけるスヌープに関してはM状
態80のように処理される。
【0043】図4において参照番号130及び134で
示されるように、読取リクエストが変更応答を受けるこ
とに応答して、キャッシュ・ラインがI状態86又はH
状態90からT状態94に遷移を行うことができる。例
えば、L2キャッシュ14aがL2キャッシュ14nに
よってM状態80で記憶されたキャッシュ・ラインに対
する読取リクエストを行う場合、L2キャッシュ14n
はL2キャッシュ14aに対するそのリクエストされた
キャッシュ・ラインを、上述のように変更介入を介して
ソース化する。前のように、L2キャッシュ14nにお
けるリクエストされたキャッシュ・ラインのコピーは、
参照番号131において示されるように、S状態84に
更新される。
【0044】一方、L2キャッシュ14aはリクエスト
されたキャッシュ・ラインをT状態94で記憶する。し
かる後、L2キャッシュ14bによる変更されたキャッ
シュ・ラインに対する読取リクエストに応答して、L2
キャッシュ14aは変更介入によってそのリクエストさ
れたキャッシュ・ラインをソース化し、参照番号132
で示されるように、変更されたキャッシュ・ラインのそ
れのコピーのコヒーレンシ・ステータスをS状態84に
更新する。このプロセスは、変更されたキャッシュ・ラ
インをもっとも最近アクセスしたL2キャッシュ14が
そのキャッシュ・ラインをT状態94で記憶し、一方、
L2キャッシュ14a−14nのうちの他のキャッシュ
がその修正されたキャッシュ・ラインをS状態84で記
憶するように、更に何回も反復される。このように、L
2キャッシュ14a−14nのうちの1つは、それが一
時的に変更介入によってキャッシュ・ラインを他のキャ
ッシュにソース化する責任があること及びキャッシュ・
ラインをシステム・メモリ18に書き戻す責任があるこ
とを表すために「タグ」される。
【0045】重要なこととして、キャッシュ・ラインを
T状態94で記憶するL2キャッシュ14が変更介入に
よって相互接続線16におけるデータをソース化する
時、システム・メモリ18のスヌープ機構(例えば、メ
モリ・コントローラ)は変更されたデータをサンプルす
ること及び記憶することをせず、その代わりに、トラン
ザクションを無視してシステム・メモリ帯域幅を自由に
する。従って、T状態94における変更されたキャッシ
ュ・ラインは、必要な時だけ、例えば、L2キャッシュ
・ライン・キャストアウトに応答して、又はその変更さ
れたキャッシュ・ラインがシステム・メモリ18に押し
込まれることを必要とするスヌープしたトランザクショ
ンに応答して、システム・メモリ18に書き戻される。
勿論、T状態94における変更されたキャッシュ・ライ
ンがシステム・メモリ18に書き戻されないようにする
ことも可能である。例えば、プロセッサ10aが「変更
する意図を持って読み取る」というリクエストを発生し
て、L2キャッシュによりT状態94で記憶されたキャ
ッシュ・ラインを指定するというシナリオを考察してみ
よう。その「変更する意図を持って読み取る」というリ
クエストに応答して、L2キャッシュ14n及び指定さ
れたキャッシュ・ラインをS状態84で記憶する他のL
2キャッシュ14は、それぞれ参照番号136及び11
0で表されるように、すべてその指定されたキャッシュ
・ラインのそれらのコピーをH状態90に更新する。キ
ャッシュ・ライン・データはH状態90への遷移によっ
て無効化されるので、指定されたキャッシュ・ラインを
システム・メモリ18に書き戻す必要は除かれる。
【0046】参照番号138で表されるように、T状態
94におけるキャッシュ・ラインは、ローカル・プロセ
ッサが「変更する意図を持って読み取る」というリクエ
ストを行うことに応答して、M状態80への遷移を行う
こともできる。ローカルL2キャッシュ14はそのリク
エストされたキャッシュ・ラインを記憶しているので、
そのデータに対するリクエスト・トランザクションは相
互接続線16上に発生されない。その代わり、ローカル
L2キャッシュ14は相互接続線16上にdclaim
トランザクションを発生する。そのトランザクションは
関連のコヒーレンシ・ステータスをH状態90に更新す
ることによってそれらのリクエストされたキャッシュ・
ラインのコピーを無効にするように、他のL2キャッシ
ュ14に命令する。
【0047】図4に示されたHRT−MESIキャッシ
ュ・コヒーレンシ・プロトコルの実施例において行われ
る状態遷移が下記の表3及びそれに続く表4において要
約される。
【表3】
【0048】
【表4】
【0049】H状態90を含むキャッシュ・コヒーレン
シ・プロトコルに施され得る更なる機能強化は、コヒー
レンシ・ステータス履歴情報を表す1つ又は複数の派生
的H状態の追加である。例えば、上記のHRT−MES
I及びHR−MESIキャッシュ・コヒーレンシ・プロ
トコルは、HR 状態を含むように変更可能である。H状
態90のように、HR 状態は、関連のキャッシュ・ライ
ンが無効であること及び関連のアドレス・タグが有効で
あることを意味する。更に、HR 状態は、それのデータ
の無効化の前に、関連のキャッシュ・ラインが排他的に
(例えば、M状態80又はE状態82で)、或いは介入
データをソース化できるコヒーレンシ状態で(例えば、
R状態92又はT状態94で)記憶されたことを表す。
【0050】例えば、L2キャッシュ14aがキャッシ
ュ・ラインをM状態80、E状態82、R状態92、又
はT状態94の1つで記憶するというシナリオを考察し
てみよう。L2キャッシュ14nが相互接続線16を介
して「変更する意図を持って読み取る」というリクエス
トをキャッシュ・ラインに対して発生する場合、L2キ
ャッシュ14aは適切な応答を発生し、そのキャッシュ
・ラインのコヒーレンシ・ステータスをHR 状態(H状
態90ではない)に更新する。しかる後、キャッシュ・
ラインをシステム・メモリ18に記憶する書き戻しトラ
ンザクション(例えば、キャッシュ・ライン割振り解除
又はスヌープ・プッシュ)をL2キャッシュ14nが相
互接続線16上に発生したことに応答して、L2キャッ
シュ14aはキャッシュ・ライン・データをサンプル及
び記憶し、そのキャッシュ・ラインのコヒーレンシ・ス
テータスをR状態92に更新する。従って、HR 状態の
使用は、変更されたキャッシュ・ラインの割振り解除に
続いて共用介入が維持されることを可能にし、従って、
データ・アクセス待ち時間を減少させる。
【0051】次に、L2キャッシュ14aがキャッシュ
・ラインのコピーをHR 状態で記憶し、L2キャッシュ
14nが同じキャッシュ・ラインのコピーを、L2キャ
ッシュ14nが介入データをソース化し得る状態で記憶
するものと仮定する。L2キャッシュ14bがキャッシ
ュ・ラインに対する「変更する意図を持って読み取る」
というリクエストを相互接続線16を介して発生する場
合、L2キャッシュ14nは適切な応答を発生し、リク
エストされたキャッシュ・ラインを介入によってソース
化し、しかる後、リクエストされたキャッシュ・ライン
のそれのコピーのコヒーレンシ・ステータスをHR 状態
に更新する。更新されたキャッシュ・ラインを含む介入
応答をスヌープすることに応答して、L2キャッシュ1
4aはそのキャッシュ・ラインのそれのコピーのコヒー
レンシ・ステータスをHR 状態からH状態90に更新す
る。
【0052】別の方法として、図5に示されるように、
最高レベルの派生状態HR1及びH状態90の間に1つ又
は複数の追加の派生状態(HR2、HR3等)を挿入するこ
とによって、追加のレベルの履歴情報を保持することが
可能である。従って、L2キャッシュ14nによって発
生された介入応答をスヌープすることに応答してH状態
90に遷移する代わりに、L2キャッシュ14aはHR1
状態からHR2状態に遷移するであろう。しかる後、関連
のキャッシュ・ラインを含む書き戻しトランザクション
をスヌープすることに応答して、L2キャッシュ14a
は、キャッシュ・ラインのそれのコピーのコヒーレンシ
・ステータスをHR1状態に更新するであろう。このよう
に、少なくとも1つのキャッシュが1つのリクエストさ
れたキャッシュ・ラインを介入によってソース化するこ
とができる可能性を増加させるために、Nレベルのコヒ
ーレンシ・ステータス履歴情報が設定可能である。
【0053】図5において破線により表されるように、
Nレベルのコヒーレンシ・ステータス履歴情報を含むキ
ャッシュ・コヒーレンシ・プロトコルの別の変形が可能
である。更に詳しくいえば、キャッシュ・ラインを最高
のレベルHR1で記憶するキャッシュは共用介入によって
そのキャッシュ・ラインをR状態92からソース化する
ことができるので、低レベル履歴ステータス(HR2、H
R3、・・・HRN)のうちの選択されたもの又はすべつの
ものが、関連のキャッシュ・ラインの書き戻しをスヌー
プすることに応答してS状態84に直接に更新される。
【0054】上述のように、本発明は、マルチプロセッ
サ・データ処理システムにおいてキャッシュ・コヒーレ
ンシを維持するための改良された方法及びシステム提供
する。本発明によって提供される改良されたキャッシュ
・コヒーレンシ・プロトコルは、ローカル・プロセッサ
が明示的な読取リクエスト又は書込リクエストを発生す
ることなく、有効アドレス・タグと関連してキャッシュ
により記憶される無効データ項目が有効データ項目でも
って自動的に更新されることを可能にする。このよう
に、リモート・プロセッサの活動によって無効にされた
データは、そのデータがローカル・プロセッサによって
アクセスされる前にリフレッシュされ得るし、それによ
って、リモート・キャッシュ又はシステム・メモリから
データを検索する必要をなくすることによりデータ・ア
クセス待ち時間を大幅に減少させる。
【0055】又、共用状態で記憶されたデータをシステ
ム・メモリよりもむしろリモート・キャッシュから供給
する共用介入のサポートを通しても、本発明のキャッシ
ュ・コヒーレンシ・プロトコルによりデータ・アクセス
待ち時間が大幅に減少される。本発明の別の局面によれ
ば、キャッシュ・コヒーレンシ・プロトコルは、変更さ
れたデータを書き戻す責任をシステム・メモリに割り振
ることによってシステム・メモリ帯域幅の効率的な利用
を促進するタグ付き(T)状態を含むように拡張可能で
ある。本発明によるキャッシュ・コヒーレンシ・プロト
コルは、1つ又は複数の派生状態を含むことによってコ
ヒーレンシ・ステータス履歴情報を維持することもでき
る。そのような派生状態は、介入によりデータをソース
化する責任が、そのデータを含むキャッシュ・ラインを
第1キャッシュによって割振り解除することに応答し
て、第1キャッシュから第2キャッシュに移されること
を可能にする。
【0056】本発明を実施例に関して詳しく図示し、説
明したけれども、本発明の精神及び技術的範囲から逸脱
することなく、形式及び詳細における種々の変更を行い
得ることは当業者には明らかであろう。例えば、HR−
MESI及びHRT−MESIキャッシュ・コヒーレン
シ・プロトコルは、その状態がパワー・オン時にディレ
クトリ・エントリを初期設定するために利用されるだけ
であって、他の状態から再入されることはないので、I
状態86を除去するように修正可能であろう。I状態8
6が除去された場合、各L2ディレクトリ・エントリの
コヒーレンシ・ステータス・フィールドは、パワー・オ
ン時にH状態90に初期設定されるであろうし、各L2
ディレクトリ・エントリのタグ・フィールドは、少なく
とも同じ適合クラス内では独特のタグ値に初期設定され
るであろう。
【0057】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0058】(1)相互接続線に結合されたシステム・
メモリ、複数のプロセッサ、及び複数のキャッシュを含
むデータ処理システムにおいてキャッシュ・コヒーレン
シを維持する方法にして、前記複数のキャッシュのうち
の第1キャッシュにおいて、第1データ項目を、該第1
データ項目のアドレスを表すアドレス・タグと関連して
記憶するステップと、前記第1キャッシュにおけるコヒ
ーレンシ・インディケータを、前記アドレス・タグが有
効であること及び前記第1データ項目が前記第1キャッ
シュにおいて無効であることを表す第1状態にセットす
るステップと、前記コヒーレンシ・インディケータが前
記第1状態にセットされている間、記アドレス・タグに
よって表された前記アドレスと関連した前記相互接続線
におけるデータ転送であって前記システム・メモリにお
ける対応するデータ項目に関して変更された第2データ
項目を含むデータ転送を前前記第1キャッシュが検出す
る場合、前記アドレス・タグと関連して前記第2データ
項目を前記第1キャッシュに記憶し、前記第2データ項
目が有効であること及び前記第1キャッシュがリクエス
トに応答して前記第2データ項目を供給し得ることを表
す第2状態に前記コヒーレンシ・インディケータを更新
するステップと、を含む方法。 (2)更に、前記第2データ項目を前記第1キャッシュ
から前記システム・メモリに書き込むステップを含む上
記(1)に記載の方法。 (3)前記第2データ項目を前記第1キャッシュから前
記システム・メモリに書き込むステップは、前記第2デ
ータ項目を含むキャッシュ・ラインの前記第1キャッシ
ュによる割振り解除に応答して遂行される上記(2)に
記載の方法。 (4)前記第2データ項目を前記第1キャッシュから前
記システム・メモリに書き込むステップは、前記第2デ
ータ項目が前記システム・メモリに書き込まれることを
必要とする前記相互接続線におけるトランザクションを
前記第1キャッシュが検出したことに応答して遂行され
る上記(2)に記載の方法。 (5)前記コヒーレンシ・インディケータを第1状態に
セットするステップは、前記複数のプロセッサの1つが
前記アドレス・タグにより表された前記アドレスに記憶
する意図を表すことに応答して、前記コヒーレンシ・イ
ンディケータを前記第1状態にセットするステップを含
む上記(1)に記載の方法。 (6)前記複数のキャッシュは第2キャッシュを含み、
前記コヒーレンシ・インディケータが前記第2状態にセ
ットされている間、前記第2キャッシュによる前記第2
データ項目に対するリクエストを前記第1キャッシュに
おいて受け取ることに応答して、前記相互接続線上に前
記第2データ項目を出力し、前記第2データ項目が共用
されることを表す第3状態に前記第1キャッシュにおけ
る前記第2データ項目を更新するステップと、前記第2
状態にセットされたコヒーレンシ・インディケータと関
して前記第2キャッシュにおける前記第2データ項目を
記憶するステップと、を含む上記(1)に記載の方法。 (7)前記第1キャッシュは前記複数のプロセッサのう
ちの第1プロセッサと関連づけられ、前記コヒーレンシ
・インディケータが前記第1状態にセットされている
間、前記アドレスと関連した前記相互接続線におけるデ
ータ転送であって前記複数のプロセッサのうちの第2プ
ロセッサによって開始されるデータ転送を前記第1キャ
ッシュが検出した場合、前記アドレス・タグが有効であ
ること、前記第1データ項目が無効であること、及び前
記第1キャッシュがリクエストに応答して前記アドレス
と関連したデータ項目を供給し得る第4状態に前記コヒ
ーレンシ・インディケータが更新され得ることを表す第
3状態に前記コヒーレンシ・インディケータを更新する
ステップを含む上記(1)に記載の方法。 (8)更に、前記コヒーレンシ・インディケータを前記
第1状態に更新した後のみ前記コヒーレンシ・インディ
ケータを前記第4状態に更新するステップを含む上記
(7)に記載の方法。 (9)相互接続線に結合されたシステム・メモリ、複数
のプロセッサ、及び複数のキャッシュを含むデータ処理
システムにおいてキャッシュ・コヒーレンシをサポート
するためのキャッシュにして、データ記憶装置と、前記
データ記憶装置に含まれた第1データ項目のアドレスを
表すアドレス・タグを記憶するタグ記憶装置と、少なく
とも第1状態及び第2状態を有し、前記第1状態は前記
アドレス・タグが有効であること及び前記第1データ項
目が無効であることを表す、コヒーレンシ・インディケ
ータと、前記アドレス・タグによって表された前記アド
レスと関連した前記相互接続線におけるデータ転送を検
出するために前記相互接続線をスヌープするための手段
であって、前記データ転送は前記複数のキャッシュのう
ちの他のキャッシュによって開始され、前記システム・
メモリにおける対応するデータ項目に関して変更される
第2データ項目を含む、手段と、前記コヒーレンシ・イ
ンディケータが前記第1状態にセットされている間、前
記相互接続線における前記データ転送を検出したことに
応答して、前記アドレス・タグと関連して前記第2デー
タ項目を前記キャッシュに記憶し、前記第2データ項目
が有効であること及び前記キャッシュがリクエストに応
答して前記第2データ項目を供給し得ることを表す第2
状態に前記コヒーレンシ・インディケータを更新するた
めの手段と、を含むキャッシュ。 (10)更に、前記第2データ項目を前記キャッシュか
ら前記システム・メモリに書き込むための手段を含む上
記(9)に記載のキャッシュ。 (11)前記第2データ項目を前記キャッシュから前記
システム・メモリに書き込むための手段は、前記前記第
2データ項目を含むキャッシュ・ラインを前記キャッシ
ュが割振り解除したことに応答して、前記第2データ項
目を前記キャッシュから前記システム・メモリに書き込
むための手段を含む上記(10)に記載のキャッシュ。 (12)前記第2データ項目を前記キャッシュから前記
システム・メモリに書き込むための手段は、前記第2デ
ータ項目が前記システム・メモリに書き込まれることを
必要とする前記相互接続線におけるトランザクションを
前記キャッシュが検出したことに応答して、前記第2デ
ータ項目を前記キャッシュから前記システム・メモリに
書き込むための手段を含む上記(10)に記載のキャッ
シュ。 (13)前記コヒーレンシ・インディケータを第1状態
にセットするための手段は、前記複数のプロセッサの1
つが前記アドレス・タグにより表された前記アドレスに
記憶する意図を表すことに応答して、前記コヒーレンシ
・インディケータを前記第1状態にセットするための手
段を含む上記(9)に記載の方法。 (14)更に、前記コヒーレンシ・インディケータが前
記第2状態にセットされている間、前記複数のキャッシ
ュのうちの他のキャッシュによる前記第2データ項目に
対するリクエストを前記キャッシュにおいて受け取った
ことに応答して、前記相互接続線上に前記第2データ項
目を出力し、前記第2データ項目が共用されることを表
す第3状態に前記キャッシュにおける前記コヒーレンシ
・インディケータを更新するための手段を含む上記
(9)に記載のキャッシュ。 (15)前記キャッシュは前記複数のプロセッサのうち
の第1プロセッサと関連づけられ、前記コヒーレンシ・
インディケータが前記第1状態にセットされている間、
前記アドレスと関連した前記相互接続線におけるデータ
転送であって前記複数のプロセッサのうちの第2プロセ
ッサによって開始されるデータ転送の検出に応答して、
前記アドレス・タグが有効であること、前記第1データ
項目が無効であること、及び、その後、前記キャッシュ
がリクエストに応答して前記アドレスと関連したデータ
項目を供給し得る第4状態に前記コヒーレンシ・インデ
ィケータが更新され得ることを表す第3状態に前記コヒ
ーレンシ・インディケータを更新するための手段を含む
上記(9)に記載のキャッシュ。 (16)更に、前記コヒーレンシ・インディケータを前
記第1状態に更新した後のみ前記コヒーレンシ・インデ
ィケータを前記第4状態に更新するための手段を含む上
記(15)に記載のキャッシュ。 (17)相互接続線と、複数のプロセッサと、前記複数
のプロセッサ及び前記相互接続線に結合された複数のキ
ャッシュと、を含み、前記複数のキャッシュのうちの第
1キャッシュは、データ記憶装置と、前記データ記憶装
置に含まれた第1データのアドレスを表すアドレス・タ
グを記憶するタグ記憶装置と、少なくとも第1状態及び
第2状態を有し、前記第1状態は前記アドレス・タグが
有効であること及び前記第1データ・タグが無効である
ことを表す、コヒーレンシ・インディケータと、前記ア
ドレス・タグによって表された前記アドレスと関連した
前記相互接続線におけるデータ転送であって、前記複数
のキャッシュのうちの他のキャッシュによって開始さ
れ、前記システム・メモリにおける対応するデータ項目
に関して変更される第2データ項目を含むデータ転送を
検出するために前記相互接続線をスヌープするための手
段と、前記コヒーレンシ・インディケータが前記第1状
態にセットされている間、前記相互接続線における前記
データ転送を検出したことに応答して、前記アドレス・
タグと関連して前記第2データ項目を前記第1キャッシ
ュに記憶し、前記第2データ項目が有効であること及び
前記第1キャッシュがリクエストに応答して前記第2デ
ータ項目を供給し得ることを表す第2状態に前記コヒー
レンシ・インディケータを更新するためにの手段と、を
含むデータ処理システム。 (18)前記第1キャッシュは、更に、前記第2データ
項目を前記第1キャッシュから前記システム・メモリに
書き込むための手段を含む上記(17)に記載のデータ
処理システム。 (19)前記第2データ項目を前記第1キャッシュから
前記システム・メモリに書き込むための手段は、前記第
2データ項目を含むキャッシュ・ラインを前記第1キャ
ッシュが割振り解除したことに応答して、前記第2デー
タ項目を前記第1キャッシュから前記システム・メモリ
に書き込むための手段を含む上記(18)に記載のデー
タ処理システム。 (20)前記第2データ項目を前記第1キャッシュから
前記システム・メモリに書き込むための手段は、前記第
2データ項目が前記システム・メモリに書き込まれるこ
とを必要とする前記相互接続線におけるトランザクショ
ンを前記第1キャッシュが検出したことに応答して、前
記第2データ項目を前記第1キャッシュから前記システ
ム・メモリに書き込むための手段を含む上記(18)に
記載のデータ処理システム。 (21)前記コヒーレンシ・インディケータを第1状態
にセットするための手段は、前記複数のプロセッサの1
つが前記アドレス・タグにより表された前記アドレスに
記憶する意図を表すことに応答して、前記コヒーレンシ
・インディケータを前記第1状態にセットするための手
段を含む上記(17)に記載のデータ処理システム。 (22)前記第1キャッシュは、更に、前記コヒーレン
シ・インディケータが前記第2状態にセットされている
間、前記複数のキャッシュのうちの他のキャッシュによ
る前記第2データ項目に対するリクエストを前記第1キ
ャッシュにおいて受け取ったことに応答して、前記第2
データ項目を前記相互接続線上に出力し、前記第2デー
タ項目が共用されることを表す第3状態に前記第1キャ
ッシュにおける前記コヒーレンシ・インディケータを更
新するための手段を含む上記(17)に記載のデータ処
理システム。 (23)前記第1キャッシュは前記複数のプロセッサの
うちの第1プロセッサと関連づけられ、前記第1キャッ
シュは、更に、前記コヒーレンシ・インディケータが前
記第1状態にセットされている間、前記アドレスと関連
した前記相互接続線におけるデータ転送であって前記複
数のプロセッサのうちの第2プロセッサによって開始さ
れるデータ転送の検出に応答して、前記アドレス・タグ
が有効であること、前記第1データ項目が無効であるこ
と、及び、その後、前記キャッシュがリクエストに応答
して前記アドレスと関連したデータ項目を供給し得る第
4状態に前記コヒーレンシ・インディケータが更新され
得ることを表す第3状態に前記コヒーレンシ・インディ
ケータを更新するための手段を含む上記(22)に記載
のデータ処理システム。 (24)更に、前記コヒーレンシ・インディケータを前
記第1状態に更新した後のみ前記コヒーレンシ・インデ
ィケータを前記第4状態に更新するための手段を含む上
記(23)に記載のデータ処理システム。
【図面の簡単な説明】
【図1】本発明によるマルチプロセッサ・データ処理シ
ステムの実施例を示す。
【図2】本発明によるキャッシュの実施例を示すブロッ
ク図である。
【図3】HR−MESIキャッシュ・コヒーレンシ・プ
ロトコルの実施例を示す状態図である。
【図4】HRT−MESIキャッシュ・コヒーレンシ・
プロトコルの実施例を示す状態図である。
【図5】N個のレベルのキャッシュ・コヒーレンシ履歴
情報を維持するために派生的H状態の利用を示す状態図
である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョン・スティーブン・ドットソン アメリカ合衆国78660、テキサス州フルゲ ールヴィッレ、ベル・ロック・サークル 1205 (72)発明者 ジェリー・ダン・ルイス アメリカ合衆国78681、テキサス州ラウン ド・ロック、アロウヘッド・サークル 3409

Claims (24)

    【特許請求の範囲】
  1. 【請求項1】相互接続線に結合されたシステム・メモ
    リ、複数のプロセッサ、及び複数のキャッシュを含むデ
    ータ処理システムにおいてキャッシュ・コヒーレンシを
    維持する方法にして、 前記複数のキャッシュのうちの第1キャッシュにおい
    て、第1データ項目を、該第1データ項目のアドレスを
    表すアドレス・タグと関連して記憶するステップと、 前記第1キャッシュにおけるコヒーレンシ・インディケ
    ータを、前記アドレス・タグが有効であること及び前記
    第1データ項目が前記第1キャッシュにおいて無効であ
    ることを表す第1状態にセットするステップと、 前記コヒーレンシ・インディケータが前記第1状態にセ
    ットされている間、記アドレス・タグによって表された
    前記アドレスと関連した前記相互接続線におけるデータ
    転送であって前記システム・メモリにおける対応するデ
    ータ項目に関して変更された第2データ項目を含むデー
    タ転送を前前記第1キャッシュが検出する場合、前記ア
    ドレス・タグと関連して前記第2データ項目を前記第1
    キャッシュに記憶し、前記第2データ項目が有効である
    こと及び前記第1キャッシュがリクエストに応答して前
    記第2データ項目を供給し得ることを表す第2状態に前
    記コヒーレンシ・インディケータを更新するステップ
    と、 を含む方法。
  2. 【請求項2】更に、前記第2データ項目を前記第1キャ
    ッシュから前記システム・メモリに書き込むステップを
    含む請求項1に記載の方法。
  3. 【請求項3】前記第2データ項目を前記第1キャッシュ
    から前記システム・メモリに書き込むステップは、前記
    第2データ項目を含むキャッシュ・ラインの前記第1キ
    ャッシュによる割振り解除に応答して遂行される請求項
    2に記載の方法。
  4. 【請求項4】前記第2データ項目を前記第1キャッシュ
    から前記システム・メモリに書き込むステップは、前記
    第2データ項目が前記システム・メモリに書き込まれる
    ことを必要とする前記相互接続線におけるトランザクシ
    ョンを前記第1キャッシュが検出したことに応答して遂
    行される請求項2に記載の方法。
  5. 【請求項5】前記コヒーレンシ・インディケータを第1
    状態にセットするステップは、前記複数のプロセッサの
    1つが前記アドレス・タグにより表された前記アドレス
    に記憶する意図を表すことに応答して、前記コヒーレン
    シ・インディケータを前記第1状態にセットするステッ
    プを含む請求項1に記載の方法。
  6. 【請求項6】前記複数のキャッシュは第2キャッシュを
    含み、 前記コヒーレンシ・インディケータが前記第2状態にセ
    ットされている間、前記第2キャッシュによる前記第2
    データ項目に対するリクエストを前記第1キャッシュに
    おいて受け取ることに応答して、前記相互接続線上に前
    記第2データ項目を出力し、前記第2データ項目が共用
    されることを表す第3状態に前記第1キャッシュにおけ
    る前記第2データ項目を更新するステップと、 前記第2状態にセットされたコヒーレンシ・インディケ
    ータと関して前記第2キャッシュにおける前記第2デー
    タ項目を記憶するステップと、 を含む請求項1に記載の方法。
  7. 【請求項7】前記第1キャッシュは前記複数のプロセッ
    サのうちの第1プロセッサと関連づけられ、 前記コヒーレンシ・インディケータが前記第1状態にセ
    ットされている間、前記アドレスと関連した前記相互接
    続線におけるデータ転送であって前記複数のプロセッサ
    のうちの第2プロセッサによって開始されるデータ転送
    を前記第1キャッシュが検出した場合、前記アドレス・
    タグが有効であること、前記第1データ項目が無効であ
    ること、及び前記第1キャッシュがリクエストに応答し
    て前記アドレスと関連したデータ項目を供給し得る第4
    状態に前記コヒーレンシ・インディケータが更新され得
    ることを表す第3状態に前記コヒーレンシ・インディケ
    ータを更新するステップを含む請求項1に記載の方法。
  8. 【請求項8】更に、前記コヒーレンシ・インディケータ
    を前記第1状態に更新した後のみ前記コヒーレンシ・イ
    ンディケータを前記第4状態に更新するステップを含む
    請求項7に記載の方法。
  9. 【請求項9】相互接続線に結合されたシステム・メモ
    リ、複数のプロセッサ、及び複数のキャッシュを含むデ
    ータ処理システムにおいてキャッシュ・コヒーレンシを
    サポートするためのキャッシュにして、 データ記憶装置と、 前記データ記憶装置に含まれた第1データ項目のアドレ
    スを表すアドレス・タグを記憶するタグ記憶装置と、 少なくとも第1状態及び第2状態を有し、前記第1状態
    は前記アドレス・タグが有効であること及び前記第1デ
    ータ項目が無効であることを表す、コヒーレンシ・イン
    ディケータと、 前記アドレス・タグによって表された前記アドレスと関
    連した前記相互接続線におけるデータ転送を検出するた
    めに前記相互接続線をスヌープするための手段であっ
    て、前記データ転送は前記複数のキャッシュのうちの他
    のキャッシュによって開始され、前記システム・メモリ
    における対応するデータ項目に関して変更される第2デ
    ータ項目を含む、手段と、 前記コヒーレンシ・インディケータが前記第1状態にセ
    ットされている間、前記相互接続線における前記データ
    転送を検出したことに応答して、前記アドレス・タグと
    関連して前記第2データ項目を前記キャッシュに記憶
    し、前記第2データ項目が有効であること及び前記キャ
    ッシュがリクエストに応答して前記第2データ項目を供
    給し得ることを表す第2状態に前記コヒーレンシ・イン
    ディケータを更新するための手段と、 を含むキャッシュ。
  10. 【請求項10】更に、前記第2データ項目を前記キャッ
    シュから前記システム・メモリに書き込むための手段を
    含む請求項9に記載のキャッシュ。
  11. 【請求項11】前記第2データ項目を前記キャッシュか
    ら前記システム・メモリに書き込むための手段は、前記
    前記第2データ項目を含むキャッシュ・ラインを前記キ
    ャッシュが割振り解除したことに応答して、前記第2デ
    ータ項目を前記キャッシュから前記システム・メモリに
    書き込むための手段を含む請求項10に記載のキャッシ
    ュ。
  12. 【請求項12】前記第2データ項目を前記キャッシュか
    ら前記システム・メモリに書き込むための手段は、前記
    第2データ項目が前記システム・メモリに書き込まれる
    ことを必要とする前記相互接続線におけるトランザクシ
    ョンを前記キャッシュが検出したことに応答して、前記
    第2データ項目を前記キャッシュから前記システム・メ
    モリに書き込むための手段を含む請求項10に記載のキ
    ャッシュ。
  13. 【請求項13】前記コヒーレンシ・インディケータを第
    1状態にセットするための手段は、前記複数のプロセッ
    サの1つが前記アドレス・タグにより表された前記アド
    レスに記憶する意図を表すことに応答して、前記コヒー
    レンシ・インディケータを前記第1状態にセットするた
    めの手段を含む請求項9に記載の方法。
  14. 【請求項14】更に、前記コヒーレンシ・インディケー
    タが前記第2状態にセットされている間、前記複数のキ
    ャッシュのうちの他のキャッシュによる前記第2データ
    項目に対するリクエストを前記キャッシュにおいて受け
    取ったことに応答して、前記相互接続線上に前記第2デ
    ータ項目を出力し、前記第2データ項目が共用されるこ
    とを表す第3状態に前記キャッシュにおける前記コヒー
    レンシ・インディケータを更新するための手段を含む請
    求項9に記載のキャッシュ。
  15. 【請求項15】前記キャッシュは前記複数のプロセッサ
    のうちの第1プロセッサと関連づけられ、 前記コヒーレンシ・インディケータが前記第1状態にセ
    ットされている間、前記アドレスと関連した前記相互接
    続線におけるデータ転送であって前記複数のプロセッサ
    のうちの第2プロセッサによって開始されるデータ転送
    の検出に応答して、前記アドレス・タグが有効であるこ
    と、前記第1データ項目が無効であること、及び、その
    後、前記キャッシュがリクエストに応答して前記アドレ
    スと関連したデータ項目を供給し得る第4状態に前記コ
    ヒーレンシ・インディケータが更新され得ることを表す
    第3状態に前記コヒーレンシ・インディケータを更新す
    るための手段を含む請求項9に記載のキャッシュ。
  16. 【請求項16】更に、前記コヒーレンシ・インディケー
    タを前記第1状態に更新した後のみ前記コヒーレンシ・
    インディケータを前記第4状態に更新するための手段を
    含む請求項15に記載のキャッシュ。
  17. 【請求項17】相互接続線と、 複数のプロセッサと、 前記複数のプロセッサ及び前記相互接続線に結合された
    複数のキャッシュと、 を含み、 前記複数のキャッシュのうちの第1キャッシュは、 データ記憶装置と、 前記データ記憶装置に含まれた第1データのアドレスを
    表すアドレス・タグを記憶するタグ記憶装置と、 少なくとも第1状態及び第2状態を有し、前記第1状態
    は前記アドレス・タグが有効であること及び前記第1デ
    ータ・タグが無効であることを表す、コヒーレンシ・イ
    ンディケータと、 前記アドレス・タグによって表された前記アドレスと関
    連した前記相互接続線におけるデータ転送であって、前
    記複数のキャッシュのうちの他のキャッシュによって開
    始され、前記システム・メモリにおける対応するデータ
    項目に関して変更される第2データ項目を含むデータ転
    送を検出するために前記相互接続線をスヌープするため
    の手段と、 前記コヒーレンシ・インディケータが前記第1状態にセ
    ットされている間、前記相互接続線における前記データ
    転送を検出したことに応答して、前記アドレス・タグと
    関連して前記第2データ項目を前記第1キャッシュに記
    憶し、前記第2データ項目が有効であること及び前記第
    1キャッシュがリクエストに応答して前記第2データ項
    目を供給し得ることを表す第2状態に前記コヒーレンシ
    ・インディケータを更新するためにの手段と、 を含むデータ処理システム。
  18. 【請求項18】前記第1キャッシュは、更に、前記第2
    データ項目を前記第1キャッシュから前記システム・メ
    モリに書き込むための手段を含む請求項17に記載のデ
    ータ処理システム。
  19. 【請求項19】前記第2データ項目を前記第1キャッシ
    ュから前記システム・メモリに書き込むための手段は、
    前記第2データ項目を含むキャッシュ・ラインを前記第
    1キャッシュが割振り解除したことに応答して、前記第
    2データ項目を前記第1キャッシュから前記システム・
    メモリに書き込むための手段を含む請求項18に記載の
    データ処理システム。
  20. 【請求項20】前記第2データ項目を前記第1キャッシ
    ュから前記システム・メモリに書き込むための手段は、
    前記第2データ項目が前記システム・メモリに書き込ま
    れることを必要とする前記相互接続線におけるトランザ
    クションを前記第1キャッシュが検出したことに応答し
    て、前記第2データ項目を前記第1キャッシュから前記
    システム・メモリに書き込むための手段を含む請求項1
    8に記載のデータ処理システム。
  21. 【請求項21】前記コヒーレンシ・インディケータを第
    1状態にセットするための手段は、前記複数のプロセッ
    サの1つが前記アドレス・タグにより表された前記アド
    レスに記憶する意図を表すことに応答して、前記コヒー
    レンシ・インディケータを前記第1状態にセットするた
    めの手段を含む請求項17に記載のデータ処理システ
    ム。
  22. 【請求項22】前記第1キャッシュは、更に、前記コヒ
    ーレンシ・インディケータが前記第2状態にセットされ
    ている間、前記複数のキャッシュのうちの他のキャッシ
    ュによる前記第2データ項目に対するリクエストを前記
    第1キャッシュにおいて受け取ったことに応答して、前
    記第2データ項目を前記相互接続線上に出力し、前記第
    2データ項目が共用されることを表す第3状態に前記第
    1キャッシュにおける前記コヒーレンシ・インディケー
    タを更新するための手段を含む請求項17に記載のデー
    タ処理システム。
  23. 【請求項23】前記第1キャッシュは前記複数のプロセ
    ッサのうちの第1プロセッサと関連づけられ、 前記第1キャッシュは、更に、前記コヒーレンシ・イン
    ディケータが前記第1状態にセットされている間、前記
    アドレスと関連した前記相互接続線におけるデータ転送
    であって前記複数のプロセッサのうちの第2プロセッサ
    によって開始されるデータ転送の検出に応答して、前記
    アドレス・タグが有効であること、前記第1データ項目
    が無効であること、及び、その後、前記キャッシュがリ
    クエストに応答して前記アドレスと関連したデータ項目
    を供給し得る第4状態に前記コヒーレンシ・インディケ
    ータが更新され得ることを表す第3状態に前記コヒーレ
    ンシ・インディケータを更新するための手段を含む請求
    項22に記載のデータ処理システム。
  24. 【請求項24】更に、前記コヒーレンシ・インディケー
    タを前記第1状態に更新した後のみ前記コヒーレンシ・
    インディケータを前記第4状態に更新するための手段を
    含む請求項23に記載のデータ処理システム。
JP02666999A 1998-02-17 1999-02-03 キャッシュ・コヒーレンシを維持する方法、キャッシュ・コヒーレンシをサポートするキャッシュ、及びデータ処理システム Expired - Fee Related JP3286258B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/024611 1998-02-17
US09/024,611 US6275908B1 (en) 1998-02-17 1998-02-17 Cache coherency protocol including an HR state

Publications (2)

Publication Number Publication Date
JPH11272558A true JPH11272558A (ja) 1999-10-08
JP3286258B2 JP3286258B2 (ja) 2002-05-27

Family

ID=21821486

Family Applications (1)

Application Number Title Priority Date Filing Date
JP02666999A Expired - Fee Related JP3286258B2 (ja) 1998-02-17 1999-02-03 キャッシュ・コヒーレンシを維持する方法、キャッシュ・コヒーレンシをサポートするキャッシュ、及びデータ処理システム

Country Status (8)

Country Link
US (1) US6275908B1 (ja)
EP (1) EP0936556B1 (ja)
JP (1) JP3286258B2 (ja)
KR (1) KR100326632B1 (ja)
CN (1) CN1153144C (ja)
DE (1) DE69908202D1 (ja)
SG (1) SG74703A1 (ja)
TW (1) TW515951B (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6192451B1 (en) * 1998-02-17 2001-02-20 International Business Machines Corporation Cache coherency protocol for a data processing system including a multi-level memory hierarchy
US6345344B1 (en) * 1999-11-09 2002-02-05 International Business Machines Corporation Cache allocation mechanism for modified-unsolicited cache state that modifies victimization priority bits
US6345343B1 (en) * 1999-11-09 2002-02-05 International Business Machines Corporation Multiprocessor system bus protocol with command and snoop responses for modified-unsolicited cache state
US6345342B1 (en) * 1999-11-09 2002-02-05 International Business Machines Corporation Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line
US6374333B1 (en) * 1999-11-09 2002-04-16 International Business Machines Corporation Cache coherency protocol in which a load instruction hint bit is employed to indicate deallocation of a modified cache line supplied by intervention
US6349369B1 (en) * 1999-11-09 2002-02-19 International Business Machines Corporation Protocol for transferring modified-unsolicited state during data intervention
US6934720B1 (en) * 2001-08-04 2005-08-23 Oracle International Corp. Automatic invalidation of cached data
US7216204B2 (en) 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US8145844B2 (en) * 2007-12-13 2012-03-27 Arm Limited Memory controller with write data cache and read data cache
US9361394B2 (en) * 2010-06-30 2016-06-07 Oracle International Corporation Response header invalidation
KR20170051563A (ko) * 2015-10-29 2017-05-12 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4755930A (en) 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
JPH0680499B2 (ja) 1989-01-13 1994-10-12 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システムのキャッシュ制御システムおよび方法
US5119485A (en) * 1989-05-15 1992-06-02 Motorola, Inc. Method for data bus snooping in a data processing system by selective concurrent read and invalidate cache operation
CA2051209C (en) 1990-11-30 1996-05-07 Pradeep S. Sindhu Consistency protocols for shared memory multiprocessors
US5428761A (en) * 1992-03-12 1995-06-27 Digital Equipment Corporation System for achieving atomic non-sequential multi-word operations in shared memory
US5319766A (en) * 1992-04-24 1994-06-07 Digital Equipment Corporation Duplicate tag store for a processor having primary and backup cache memories in a multiprocessor computer system
US5522057A (en) * 1993-10-25 1996-05-28 Intel Corporation Hybrid write back/write through cache having a streamlined four state cache coherency protocol for uniprocessor computer systems
US5671391A (en) * 1994-01-10 1997-09-23 Ncr Corporation Coherent copyback protocol for multi-level cache memory systems
US5588131A (en) * 1994-03-09 1996-12-24 Sun Microsystems, Inc. System and method for a snooping and snarfing cache in a multiprocessor computer system
CA2148186A1 (en) 1994-05-04 1995-11-05 Michael T. Jackson Processor board having a second level writeback cache system and a third level writethrough cache system which stores exclusive state information for use in a multiprocessor computer system
US5915262A (en) * 1996-07-22 1999-06-22 Advanced Micro Devices, Inc. Cache system and method using tagged cache lines for matching cache strategy to I/O application
US5900016A (en) * 1997-04-02 1999-05-04 Opti Inc. System for using a cache memory with a write-back architecture
US6192451B1 (en) * 1998-02-17 2001-02-20 International Business Machines Corporation Cache coherency protocol for a data processing system including a multi-level memory hierarchy

Also Published As

Publication number Publication date
TW515951B (en) 2003-01-01
CN1153144C (zh) 2004-06-09
EP0936556B1 (en) 2003-05-28
KR19990072596A (ko) 1999-09-27
EP0936556A3 (en) 1999-12-15
US6275908B1 (en) 2001-08-14
DE69908202D1 (de) 2003-07-03
EP0936556A2 (en) 1999-08-18
CN1226707A (zh) 1999-08-25
JP3286258B2 (ja) 2002-05-27
SG74703A1 (en) 2000-08-22
KR100326632B1 (ko) 2002-03-02

Similar Documents

Publication Publication Date Title
JPH11272559A (ja) マルチレベル・メモリ・ハイアラ―キを含むデ―タ処理システムのためのキャッシュ・コヒ―レンシ・プロトコル
US7032074B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
KR100308323B1 (ko) 공유된 개입 지원을 가지는 비균등 메모리 액세스 데이터처리 시스템
JP4594900B2 (ja) メモリ・ブロックを初期設定するためのプロセッサ、データ処理システム、および方法
GB2439650A (en) Snoop filter that maintains data coherency information for caches in a multi-processor system by storing the exclusive ownership state of the data
JP3277171B2 (ja) 厳密モード及び非厳密モードを有するホバーリング(h)状態を含むキャッシュ・コヒーレンシ・プロトコル
KR20110031361A (ko) 스누프 필터링 메커니즘
EP0936558B1 (en) Cache coherency protocol having hovering (H) and recent (R) states
KR20030024895A (ko) 캐시 코히어런트 멀티-프로세서 시스템에서 순서화된입출력 트랜잭션을 파이프라이닝하기 위한 방법 및 장치
TWI428754B (zh) 以主動式預取寬度執行加強式停懸狀態之系統及方法
US7383398B2 (en) Preselecting E/M line replacement technique for a snoop filter
JP3286258B2 (ja) キャッシュ・コヒーレンシを維持する方法、キャッシュ・コヒーレンシをサポートするキャッシュ、及びデータ処理システム
JP2004199677A (ja) キャッシュを動作させるためのシステム及び方法
US6415358B1 (en) Cache coherency protocol having an imprecise hovering (H) state for instructions and data
US6813694B2 (en) Local invalidation buses for a highly scalable shared cache memory hierarchy
US6272603B1 (en) Cache coherency protocol having hovering (H), recent (R), and tagged (T) states
US6826654B2 (en) Cache invalidation bus for a highly scalable shared cache memory hierarchy
US6826655B2 (en) Apparatus for imprecisely tracking cache line inclusivity of a higher level cache
JPH11272556A (ja) 命令及びデ―タに対するホバ―リング(h)状態を有するキャッシュ・メモリ・プロトコル

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees