JPH11328026A - ホバ―リング(h)及びリ―セント(r)状態を有するキャッシュ・コヒ―レンシ・プロトコル - Google Patents

ホバ―リング(h)及びリ―セント(r)状態を有するキャッシュ・コヒ―レンシ・プロトコル

Info

Publication number
JPH11328026A
JPH11328026A JP11031677A JP3167799A JPH11328026A JP H11328026 A JPH11328026 A JP H11328026A JP 11031677 A JP11031677 A JP 11031677A JP 3167799 A JP3167799 A JP 3167799A JP H11328026 A JPH11328026 A JP H11328026A
Authority
JP
Japan
Prior art keywords
cache
data
state
data item
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.)
Pending
Application number
JP11031677A
Other languages
English (en)
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 JPH11328026A publication Critical patent/JPH11328026A/ja
Pending 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
    • 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状態にセットされる。しか
る後、それらの複数のキャッシュのうちの他のキャッシ
ュによって開始されたデータ転送を検出するために、相
互接続線がスヌープされる。そのデータ転送は、アドレ
ス・タグによって表されたアドレスと関連付けられ、有
効な第2データ項目を含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、概して云えば、デ
ータ処理のための方法及びシステムに関するものであ
り、特に、マルチプロセッサ・データ処理システムにお
いてキャッシュ・コヒーレンシを維持するための方法及
びシステムに関するものである。更に詳しく云えば、本
発明は、共用介入をサポートするリーセント(R,Re
cent))状態と、第1キャッシュ及び第2キャッシ
ュを結合する相互接続線を介して第2キャッシュが有効
データを独立的に伝送することに応答して、第1キャッ
シュがその有効データでもって更新されることを可能に
するホバーリング(H,Hovering)状態とを含
むマルチプロセッサ・データ処理システムのためのキャ
ッシュ・コヒーレンシ・プロトコルに関するものであ
る。
【0002】
【従来の技術】通常の対称マルチプロセッサ(SMP)
データ処理システムでは、すべてのプロセッサが大体に
おいて同じである。即ち、すべてのプロセッサが共通の
命令セット及び通信プロトコルを利用し、同じハードウ
エア・アーキテクチャを有し、一般的に、同じメモリ・
ハイアラーキを備えている。例えば、通常のSMPデー
タ処理システムは、システム・メモリと、各々が1つの
プロセッサ及び1つ又は複数のレベルのキャッシュ・メ
モリを含む複数の処理エレメントと、それらの処理エレ
メントを相互に及びシステム・メモリに結合するシステ
ム・バスとを含み得るものである。SMPデータ処理シ
ステムにおいて有効な実行結果を得るためには、コヒー
レント・メモリ・ハイアラーキを維持すること、即ち、
すべてのプロセッサにメモリの内容に関して単一の視野
を与えることが重要である。
【0003】コヒーレント・メモリ・ハイアラーキは、
MESIプロトコルのような選択されたメモリ・コヒー
レンシ・プロトコルの使用を通して維持される。MES
Iプロトコルでは、コヒーレンシ状態の表示が少なくと
もすべての上位レベル(キャッシュ)メモリの各コヒー
レンシ・グラニュール(例えば、キャッシュ・ライン又
はセクタ)と関連して記憶される。各コヒーレンシ・グ
ラニュールは4つの状態、即ち、変更状態(M,Mod
ified)、排他的状態(E,Exclusiv
e)、共用状態(S,Shared)、及び無効状態
(I,Invalid)のうちの1つを持つことがで
き、それはキャッシュ・ディレクトリにおける2つのビ
ットによって表される。変更状態は、コヒーレンシ・グ
ラニュールがその変更されたコヒーレンシ・グラニュー
ルを記憶するキャッシュにおいてのみ有効であること、
及びその変更されたコヒーレンシ・グラニュールの値が
システム・メモリに書き込まれていないことを表す。コ
ヒーレンシ・グラニュールが排他的状態として表される
時、そのコヒーレンシ・グラニュールは、そのレベルの
メモリ・ハイアラーキにおけるすべてのキャッシュのう
ちの、排他的状態におけるコヒーレンシ・グラニュール
を持ったキャッシュにのみに存在する。しかし、排他的
状態におけるデータはシステム・メモリと整合してい
る。コヒーレンシ・グラニュールがキャッシュ・ディレ
クトリにおいて共用状態としてマークされる場合、その
コヒーレンシ・グラニュールは、関連するキャッシュ及
び同じレベルのメモリ・ハイアラーキにおける少なくと
も1つの他のキャッシュに存在する。なお、そのコヒー
レンシ・グラニュールのすべてのコピーがシステム・メ
モリと整合している。最後に、無効状態は、コヒーレン
シ・グラニュールと関連したデータ及びアドレスが両方
とも無効であることを表す。
【0004】各コヒーレンシ・グラニュール(例えば、
キャッシュ・ライン)がセットされる状態は、キャッシ
ュ・ラインの前の状態と、リクエスト・プロセッサによ
って求められたメモリ・アクセスのタイプとの両方に依
存する。従って、マルチプロセッサ・データ処理システ
ムにおいてメモリ・コヒーレンシを維持することは、プ
ロセッサがメモり・ロケーションを読み取る又は書き込
むというそれらの意図を表すメッセージをそのシステム
を通してコミュニケートすることを必要とする。例え
ば、プロセッサがメモり・ロケーションにデータを書き
込むことを望む時、プロセッサは、先ず、メモリ・ロケ
ーションにデータを書き込むというそれの意図を他のす
べての処理エレメントに知らせ、その書込オペレーショ
ンを実行するための許可を他のすべての処理エレメント
から受けなければならない。リクエスト・プロセッサが
受け取る許可メッセージは、メモリ・ロケーションの内
容の他のすべてのキャッシュされたコピーが無効にされ
てしまったことを表し、それによって、他のプロセッサ
が陳腐なローカル・データをアクセスしないことを保証
する。このメッセージ交換は相互無効化(cross−
invalidation、即ち、XI)として知られ
ている。
【0005】本発明は、キャッシュ・エントリの相互無
効化がSMPデータ処理システムにおけるメモリ・コヒ
ーレンシを維持するように働いている間、リモート・プ
ロセッサによるキャッシュ・エントリの無効化が、ロー
カル・キャッシュにおけるヒット率を下げることによっ
てデータ処理システムのパフォーマンスに悪影響を与え
るという認識を含む。従って、たとえ大きなローカル・
キャッシュを備えていても、処理エレメントは、一旦ロ
ーカル・キャッシュに存在したデータを別の処理エレメ
ントにおけるリモート・キャッシュから又はシステム・
メモリから検索する時、長いアクセス待ち時間をまねく
ことがある。従って、明らかなように、キャッシュ・エ
ントリの相互無効化の結果としてパフォーマンス・ペナ
ルティを少なくすると共に、SMPデータ処理システム
においてメモリ・コヒーレンシを維持するための方法及
びシステムを提供することが望ましいであろう。
【0006】本発明は、通常のMESIプロトコルが、
リモート・キャッシュに記憶されたデータの効率的な検
索をサポートしないという認識も考慮するものである。
或る既知のマルチプロセッサ・データ処理システムは、
データを変更状態で記憶するリモート・キャッシュが、
その変更されたデータを読取リクエストに応答して供給
することを可能にした、いわゆる、変更介入(modi
fied 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−10
nの各々は、プログラム命令を実行するために利用され
る通常のレジスタ、命令フロー・ロジック、及び実行ユ
ニットに加えて、搭載レベル1(L1)キャッシュ12
a−12nのうちの関連したキャッシュを含んでいる。
そのキャッシュは、関連のプロセッサによってアクセス
されそうな命令及びデータを一時的に記憶する。L1キ
ャッシュ12a−12nは、図1では、命令及びデータ
の両方(以下では、両方を単にデータと呼ぶ)を記憶す
る一体化されたキャッシュとして示されるけれども、別
の方法として、L1キャッシュ12a−12nの各々が
命令キャッシュ及びデータ・キャッシュに分けられて実
施されてもよいことは当業者には明らかであろう。
【0013】アクセス待ち時間を最小にするために、デ
ータ処理システム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に等し
いか又はそれよりも大きい記憶容量を有することが望ま
しい。
【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における特定の適合(cong
ruence)クラスにマップされる。
【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キャッシュ1
4はキャッシュ・コントローラ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を参照すると、本発明によるH
R−MESIキャッシュ・コヒーレンシ・プロトコルの
実施例が示される。図示のHR−MESIプロトコル
は、メモリ・ハイアラーキにおけるイン・ライン・キャ
ッシュの最低レベル(即ち、L2キャッシュ14a−1
4n)及び、わずかな相違点はあるが、任意の低レベル
・ルックアサイド・キャッシュ(即ち、L3キャッシュ
15a)によって実施されることが望ましい。高レベル
・キャッシュは、通常のMESIプロトコル、又は米国
特許出願番号08/839,548号に開示されたR−M
ESIプロトコルのようなプロトコル・サブセットを実
施することが望ましい。しかし、データ処理システム8
の別の実施例において、付加的なキャッシュ間の通信ト
ラフィックを犠牲にしてメモリ・ハイアラーキにおける
各レベルのキャッシュにおいてHR−MESIプロトコ
ルを実施することができるは勿論である。
【0022】図3に示されるように、HR−MESIキ
ャッシュ・コヒーレンシ・プロトコルは、MESIプロ
トコルの通常の変更(M)状態、排他的(E)状態、共
用(S)状態、及び無効(I)状態を含んでおり、それ
らの状態は、それぞれ、参照番号80、82、84、及
び86によって識別される。更に、本発明のHR−ME
SIキャッシュ・コヒーレンシ・プロトコルには、関連
のタグ・フィールド40に記憶されたアドレス・タグは
有効であるが、データ・アレイ34の対応するウェイに
記憶されたデータ項目(例えば、キャッシュ・ライン又
はキャッシュ・セクタ)は無効であることを表すホバー
リング(H)状態90と、データ項目のコピーを記憶す
る複数のキャッシュのうちのどのキャッシュが相互接続
線16上のトランザクションを介して共用データを最近
受け取ったかを表すR状態92とが含まれる。
【0023】本発明の望ましい実施例では、各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つに更新可能である。
【0024】例えば、プロセッサ10aがロード命令に
応答して読取リクエストを行う場合、L1キャッシュ1
2aは、先ず、そのリクエストされたデータがL1キャ
ッシュ12aに存在するか否かの決定を行う。L1キャ
ッシュ12aにおけるヒットに応答して、L1キャッシ
ュ12aは単にそのリクエストされたデータをプロセッ
サ10aに供給するだけである。しかし、L1キャッシ
ュ12aにおけるミスに応答して、L1キャッシュ12
aはキャッシュ間接続線を介してL2キャッシュ14a
に読取リクエストを送る。L2キャッシュ14aにおけ
るヒットに応答して、そのリクエストされたデータはL
2キャッシュ14aによってL1キャッシュ12aに供
給される。L1キャッシュ12aは、そのリクエストさ
れたデータを適正なコヒーレンシ・ステータスと関連し
て記憶し且つそのデータをプロセッサ10aに送る。
【0025】しかし、読取リクエストが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にそのデータをリ
クエストする。
【0026】リクエストされたデータがシステム・メモ
リ18からL2キャッシュ14aに戻される時、キャッ
シュ・コントローラ36は、L1キャッシュ12aにそ
のリクエストされたデータを送り、それのデータ・アレ
イ34にそのリクエストされたデータを記憶し、そのリ
クエストされたデータを記憶するウェイに関連したコヒ
ーレンシ・ステータス・フィールド42を、参照番号1
00によって表されるように、I状態86からE状態8
2に更新する。通常のMESIプロトコルにおけるよう
に、E状態82は、関連のキャッシュ・ラインが有効で
あって、メモリ・ハイアラーキの第2レベルにおける他
のいずれのキャッシュにも存在しないことを表す。L3
キャッシュ15aは、同様に、そのリクエストされたデ
ータをE状態82で記憶する。
【0027】プロセッサ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に更新される。
【0028】本発明によれば、そのリクエストされたデ
ータが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から得られる。
【0029】L2キャッシュ14aは、それの読取リク
エストに対する共用介入応答又は共用応答に応答して、
I状態86からR状態92への遷移を同様に行う。L2
キャッシュ14b−14nの1つ、例えば、L2キャッ
シュ14nがそのリクエストされたデータをR状態92
又はE状態82で記憶する場合、L2キャッシュ14a
は共用介入応答(及び、リクエストされたデータ)を受
け取る。読取リクエストに応答して、L2キャッシュ1
4nのキャッシュ・コントローラ36は、リクエストさ
れたデータのそれのコピーのコヒーレンシ・ステータス
を、参照番号106によって表されるようにR状態92
からS状態84に更新する。L2キャッシュ14b−1
4nのどれもリクエストされたデータをR状態92で記
憶してないが、少なくとも1つがそのリクエストされた
データをS状態84で記憶している場合、そのリクエス
トされたデータをS状態84で記憶しているL2キャッ
シュ14は共用応答でもってその読取リクエストに応答
し、そのリクエストされたデータのそれのコピーをS状
態84のままにする。共用応答のみの受信に応答して、
L2キャッシュ14aはそのリクエストされたデータを
システム・メモリ18から検索し、そのリクエストされ
たデータをR状態92で記憶する。両方の場合とも、L
3キャッシュ15aはリクエストされたデータをサンプ
ルし、そのデータをS状態84で記憶する。
【0030】プロセッサ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に更新されない。
【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、即ち、指定されたデー
タ・ブロックを無効にし、すべての変更されたデータを
システム・メモリにコピーするトランザクション)、d
claim(即ち、リモート・キャッシュにおいて共用
としてマークされたキャッシュ・ラインのコピーを、そ
のキャッシュ・ラインのローカル・コピーがストアに応
答して変更されたことに応答して、無効にするトランザ
クション)等を含む。
【0032】参照番号116、118、及び120によ
って表されるように、キャッシュ・ディレクトリ・エン
トリは、どのタイプのトランザクションをキャッシュが
受け取るかに従って、H状態90からE状態82又はM
状態80に遷移を行うことができる。例えば、H状態9
0にあるL2キャッシュ14aのディレクトリ・エント
リは、(L1キャッシュ12a及びL2キャッシュ14
aの両方においてミスした後)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は相互接続線16
上に「変更する意図を持って読み取る」というトランザ
クションを発生する。
【0033】上記のように、L3キャッシュ15a及び
L2キャッシュ14b−14nに記憶されたそのリクエ
ストされたキャッシュ・ラインのコピーは、「変更する
意図を持って読み取る」というトランザクションをスヌ
ープすることに応答してH状態90に更新され、L1キ
ャッシュ12b−12nに記憶されたそのリクエストさ
れたキャッシュ・ラインのコピーは無効としてマークさ
れる。一旦、リクエストされたキャッシュ・ラインが得
られると、L2キャッシュ14a及びL1キャッシュ1
2aにおけるそのキャッシュ・ラインのコヒーレンシ・
ステータスは、そのキャッシュ・ラインは有効であるが
システム・メモリ18とコヒーレントではないことを意
味するようにM状態80にセットされる。
【0034】H状態90におけるキャッシュ・ディレク
トリ・エントリは、参照番号120で示されるように、
S状態84にも更新可能である。前述のように、L2キ
ャッシュ・14a−14nの各々は、相互接続線16上
に発生されたすべてのトランザクションをスヌープす
る。L2キャッシュ14a−14nの1つ、例えば、L
2キャッシュ14aが、H状態90でL2キャッシュ1
4aに記憶されたデータの更新された(即ち、有効な)
コピーを含むL2キャッシュ14b−14nのうちの他
のキャッシュによって発生されたトランザクションをス
ヌープする場合、L2キャッシュ14aのキャッシュ・
コントローラ36は、相互接続線16からデータをサン
プルし、そのスヌープされたデータをデータ・アレイ3
4に記憶し、関連のコヒーレンシ・ステータス・フィー
ルド42をH状態90からS状態84に更新する。
【0035】このように、本発明は、関連のプロセッサ
10がデータ・リクエストを行うことなく、又はキャッ
シュが相互接続線16を介したトランザクションを開始
することなく、H状態90におけるキャッシュ・ディレ
クトリ・エントリがS状態84に更新されることを可能
にする。勿論、上記のシナリオでは、L2キャッシュ1
4aは、応答がコヒーレンシを維持することを要求され
る場合、スヌープされたトランザクションにも応答を与
える。例えば、スヌープされたトランザクションが読取
リクエストである場合、L2キャッシュ14aは、リク
エストしたL2キャッシュがそのリクエストされたデー
タをE状態82ではなくR状態92で記憶するように、
そのリクエストされたデータをサンプルするという意図
を表す共用応答を与えなければならない。有効アドレス
・タグと関連した無効データをリフレッシュするために
この方法でスヌープ可能である相互接続線16上のトラ
ンザクションは、読取トランザクション、書込トランザ
クション、キャッシュ・ライン・キャストアウトによる
システム・メモリ18へのデータ書戻し等を含む。
【0036】H状態90におけるL2ディレクトリ・エ
ントリは、多くの種々なリクエスト/応答シナリオに応
答してR状態92に更新されてもよい。例えば、プロセ
ッサ10aがL1キャッシュ12aにおいてミスし、L
2キャッシュ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キャッシュ14
aはリクエストされたデータを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)に記載のデータ
処理システム。
【図面の簡単な説明】
【図1】本発明によるマルチプロセッサ・データ処理シ
ステムの実施例を示す。
【図2】本発明によるキャッシュの実施例を示すブロッ
ク図である。
【図3】本発明のHR−MESIメモリ・コヒーレンシ
・プロトコルの実施例を示す状態図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョン・スティーブン・ドットソン アメリカ合衆国78660、テキサス州フルゲ ールヴィッレ、ベル・ロック・サークル 1205 (72)発明者 ジェリー・ダン・ルイス アメリカ合衆国78681、テキサス州ラウン ド・ロック、アロウヘッド・サークル 3409

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】相互接続線に結合された複数のプロセッサ
    及び複数のキャッシュを含むデータ処理システムにおい
    てキャッシュ・コヒーレンシを維持する方法にして、 前記複数のキャッシュのうちの第1キャッシュにおい
    て、第1データ項目を、該第1データ項目のアドレスを
    表すアドレス・タグと関連して記憶するステップと、 前記第1キャッシュにおけるコヒーレンシ・インディケ
    ータを、前記アドレス・タグが有効であること及び前記
    第1データ項目が前記第1キャッシュにおいて無効であ
    ることを表す第1状態にセットするステップと、 しかる後、前記アドレス・タグによって表された前記ア
    ドレスと関連した前記相互接続線におけるデータ転送で
    あって、前記複数のキャッシュのうちの他のキャッシュ
    によって開始され、第2データ項目を含むデータ転送を
    検出するためにスヌープするステップと、 前記コヒーレンシ・インディケータが前記第1状態にセ
    ットされている間の前記アドレス・タグによって表され
    た前記アドレスと関連する前記相互接続線におけるデー
    タ転送の検出に応答して、(i)前記第2データ項目
    を、前記アドレス・タグと関連して前記第1キャッシュ
    に記憶するステップと、(ii)前記第2データ項目が有
    効であること及び前記第1キャッシュがリクエストに応
    答して前記第2データ項目を供給できることを表す第2
    状態に前記コヒーレンシ・インディケータを更新するス
    テップと、 を含む方法。
  2. 【請求項2】前記コヒーレンシ・インディケータを更新
    するステップは、前記第2データ項目が前記第1キャッ
    シュ及び前記複数のキャッシュのうちの他のキャッシュ
    の両方に記憶されることを表す第2状態に前記コヒーレ
    ンシ・インディケータを更新するステップを含む請求項
    1に記載の方法。
  3. 【請求項3】前記コヒーレンシ・インディケータを第1
    状態にセットするステップは、前記複数のプロセッサの
    1つが前記アドレス・タグによって表された前記アドレ
    スに記憶するという意図を表すことに応答して、前記コ
    ヒーレンシ・インディケータを前記第1状態にセットす
    るステップを含む請求項1に記載の方法。
  4. 【請求項4】前記コヒーレンシ・インディケータが前記
    第2状態にセットされている間に前記第2データ項目に
    対するリクエストが前記相互接続線を介して前記第1キ
    ャッシュにおいて受け取られたことに応答して、前記第
    2データ項目を前記相互接続線上に供給するステップを
    含む請求項1に記載の方法。
  5. 【請求項5】前記第1キャッシュは前記複数のプロセッ
    サのうちの特定のプロセッサと関連付けられ、 前記スヌープするステップは前記特定のプロセッサと関
    連した高レベル・キャッシュによって発生されたデータ
    転送を検出するためにスヌープするステップを含む請求
    項1に記載の方法。
  6. 【請求項6】相互接続線に結合された複数のプロセッサ
    及び複数のキャッシュを含むデータ処理システムにおい
    てキャッシュ・コヒーレンシをサポートするためのキャ
    ッシュにして、 データ記憶装置と、 前記データ記憶装置に含まれた第1データ項目のアドレ
    スを表すアドレス・タグを記憶するタグ記憶装置と、 少なくとも第1状態及び第2状態を有し、前記第1状態
    は前記アドレス・タグが有効であること及び前記第1デ
    ータ項目が無効であることを表す、コヒーレンシ・イン
    ディケータと、 前記アドレス・タグによって表された前記アドレスと関
    連した前記相互接続線におけるデータ転送であって、前
    記複数のキャッシュのうちの他のキャッシュによって開
    始され、第2データ項目を含むデータ転送を検出するた
    めに前記相互接続線をスヌープするための手段と、 前記コヒーレンシ・インディケータが前記第1状態にセ
    ットされている間の前記アドレス・タグによって表され
    た前記アドレスと関連した前記相互接続線におけるデー
    タ転送の検出に応答して、 (i)前記第2データ項目を、前記アドレス・タグと関
    連して前記データ記憶装置に記憶し、 (ii)前記第2データ項目が有効であること及び前記第
    1キャッシュがリクエストに応答して前記第2データ項
    目を供給できることを表す第2状態に前記コヒーレンシ
    ・インディケータを更新するための手段と、 を含むキャッシュ。
  7. 【請求項7】前記コヒーレンシ・インディケータを更新
    するための手段は、前記第2データ項目が前記第1キャ
    ッシュ及び前記複数のキャッシュのうちの他のキャッシ
    ュの両方に記憶されていることを表す第2状態に前記コ
    ヒーレンシ・インディケータを更新するための手段を含
    む請求項6に記載のキャッシュ。
  8. 【請求項8】前記複数のプロセッサの1つが前記アドレ
    ス・タグによって表された前記アドレスに記憶するとい
    う意図を表すことに応答して、前記コヒーレンシ・イン
    ディケータを前記第1状態にセットするための手段を含
    む請求項6に記載のキャッシュ。
  9. 【請求項9】前記コヒーレンシ・インディケータが前記
    第2状態にセットされている間に前記第2データ項目に
    対するリクエストが前記相互接続線を介して前記第1キ
    ャッシュにおいて受け取られたことに応答して、前記第
    2データ項目を前記相互接続線上に供給するための手段
    を含む請求項6に記載のキャッシュ。
  10. 【請求項10】前記キャッシュは前記複数のプロセッサ
    のうちの特定のプロセッサと関連付けられ、 前記スヌープするための手段は前記特定のプロセッサと
    関連した高レベル・キャッシュによって発生されたデー
    タ転送を検出するためにスヌープするための手段を含む
    請求項6に記載のキャッシュ。
  11. 【請求項11】前記キャッシュは前記相互接続線にルッ
    クアサイド構成で接続される請求項6に記載のキャッシ
    ュ。
  12. 【請求項12】相互接続線と、 前記相互接続線に結合された複数のプロセッサと、 各々が前記複数のプロセッサのうちの1つプロセッサと
    関連付けられた複数のキャッシュと、 を含み、 前記複数のキャッシュのうちの第1キャッシュは、 データ記憶装置と、 前記データ記憶装置に含まれた第1データ項目のアドレ
    スを表すアドレス・タグを記憶するタグ記憶装置と、 少なくとも第1状態及び第2状態を有し、前記第1状態
    は前記アドレス・タグが有効であること及び前記第1デ
    ータ項目が無効であることを表す、コヒーレンシ・イン
    ディケータと、 前記アドレス・タグによって表された前記アドレスと関
    連した前記相互接続線におけるデータ転送であって、前
    記複数のキャッシュのうちの他のキャッシュによって開
    始され、第2データ項目を含むデータ転送を検出するた
    めに前記相互接続線をスヌープするための手段と、 前記コヒーレンシ・インディケータが前記第1状態にセ
    ットされている間の前記アドレス・タグによって表され
    た前記アドレスと関連した前記相互接続線におけるデー
    タ転送の検出に応答して、 (i)前記第2データ項目を、前記アドレス・タグと関
    連して前記データ記憶装置に記憶し、 (ii)前記第2データ項目が有効であること及び前記第
    1キャッシュがリクエストに応答して前記第2データ項
    目を供給できることを表す第2状態に前記コヒーレンシ
    ・インディケータを更新するための手段と、 を含むデータ処理システム。
  13. 【請求項13】前記コヒーレンシ・インディケータを更
    新するための手段は、前記第2データ項目が前記第1キ
    ャッシュ及び前記複数のキャッシュのうちの他のキャッ
    シュの両方に記憶されていることを表す第2状態に前記
    コヒーレンシ・インディケータを更新するための手段を
    含む請求項12に記載のデータ処理システム。
  14. 【請求項14】前記複数のプロセッサの1つが前記アド
    レス・タグによって表された前記アドレスに記憶すると
    いう意図を表すことに応答して、前記コヒーレンシ・イ
    ンディケータを前記第1状態にセットするための手段を
    含む請求項12に記載のデータ処理システム。
  15. 【請求項15】前記コヒーレンシ・インディケータが前
    記第2状態にセットされている間に前記第2データ項目
    に対するリクエストが前記相互接続線を介して前記第1
    キャッシュにおいて受け取られたことに応答して、前記
    第2データ項目を前記相互接続線上に供給するための手
    段を含む請求項12に記載のデータ処理システム。
  16. 【請求項16】前記キャッシュは前記複数のプロセッサ
    のうちの特定のプロセッサと関連付けられ、 前記スヌープするための手段は前記特定のプロセッサと
    関連した高レベル・キャッシュによって発生されたデー
    タ転送を検出するためにスヌープするための手段を含む
    請求項12に記載のデータ処理システム。
  17. 【請求項17】前記第1キャッシュは前記相互接続線に
    ルックアサイド構成で接続される請求項12に記載のデ
    ータ処理システム。
JP11031677A 1998-02-17 1999-02-09 ホバ―リング(h)及びリ―セント(r)状態を有するキャッシュ・コヒ―レンシ・プロトコル Pending JPH11328026A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/024609 1998-02-17
US09/024,609 US6292872B1 (en) 1998-02-17 1998-02-17 Cache coherency protocol having hovering (H) and recent (R) states

Publications (1)

Publication Number Publication Date
JPH11328026A true JPH11328026A (ja) 1999-11-30

Family

ID=21821468

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11031677A Pending JPH11328026A (ja) 1998-02-17 1999-02-09 ホバ―リング(h)及びリ―セント(r)状態を有するキャッシュ・コヒ―レンシ・プロトコル

Country Status (7)

Country Link
US (1) US6292872B1 (ja)
EP (1) EP0936558B1 (ja)
JP (1) JPH11328026A (ja)
KR (1) KR100322225B1 (ja)
CN (1) CN1130651C (ja)
DE (1) DE69910860D1 (ja)
TW (1) TW535061B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8051251B2 (en) 2006-02-24 2011-11-01 Fujitsu Limited Method and apparatus for setting status of cache memory

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6898675B1 (en) * 1998-08-24 2005-05-24 International Business Machines Corporation Data received before coherency window for a snoopy bus
US6349369B1 (en) * 1999-11-09 2002-02-19 International Business Machines Corporation Protocol for transferring modified-unsolicited state during data intervention
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
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
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
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
JP2001282764A (ja) * 2000-03-30 2001-10-12 Hitachi Ltd マルチプロセッサシステム
US7120755B2 (en) * 2002-01-02 2006-10-10 Intel Corporation Transfer of cache lines on-chip between processing cores in a multi-core system
GB2389207B (en) 2002-04-09 2004-05-12 Via Tech Inc Remote node accessing local memory by using distributed shared memory
US20040153611A1 (en) * 2003-02-04 2004-08-05 Sujat Jamil Methods and apparatus for detecting an address conflict
US7287126B2 (en) * 2003-07-30 2007-10-23 Intel Corporation Methods and apparatus for maintaining cache coherency
US20080140942A1 (en) * 2006-12-12 2008-06-12 Kornegay Marcus L Implementing a hot coherency state to a cache coherency protocol in a symmetric multi-processor environment
US7890704B2 (en) * 2006-12-19 2011-02-15 International Business Machines Corporation Implementing an enhanced hover state with active prefetches
US8145844B2 (en) * 2007-12-13 2012-03-27 Arm Limited Memory controller with write data cache and read data cache
US8234458B2 (en) * 2008-12-09 2012-07-31 Nvidia Corporation System and method for maintaining cache coherency across a serial interface bus using a snoop request and complete message
US8935485B2 (en) 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory
GB2550829B (en) * 2014-10-14 2021-09-22 Advanced Risc Mach Ltd Transaction response modification within interconnect circuitry

Family Cites Families (26)

* 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
DE68917326T2 (de) 1988-01-20 1995-03-02 Advanced Micro Devices Inc Organisation eines integrierten Cachespeichers zur flexiblen Anwendung zur Unterstützung von Multiprozessor-Operationen.
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
US5287484A (en) 1989-06-21 1994-02-15 Hitachi, Ltd. Multi-processor system for invalidating hierarchical cache
JPH061463B2 (ja) 1990-01-16 1994-01-05 インターナショナル・ビジネス・マシーンズ・コーポレーション マルチプロセッサ・システムおよびそのプライベート・キャッシュ制御方法
JP2820752B2 (ja) 1990-01-19 1998-11-05 日本電信電話株式会社 密結合マルチプロセッサシステムにおけるキャッシュメモリ一致制御方法
JPH0625984B2 (ja) 1990-02-20 1994-04-06 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン マルチプロセツサ・システム
CA2051209C (en) 1990-11-30 1996-05-07 Pradeep S. Sindhu Consistency protocols for shared memory multiprocessors
US5265235A (en) 1990-11-30 1993-11-23 Xerox Corporation Consistency protocols for shared memory multiprocessors
US5282272A (en) 1990-12-21 1994-01-25 Intel Corporation Interrupt distribution scheme for a computer bus
EP0553743A1 (en) 1992-01-31 1993-08-04 Motorola, Inc. A cache controller
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
JPH06110844A (ja) 1992-08-11 1994-04-22 Toshiba Corp 分散共有メモリ型マルチプロセッサシステム
JP3013631B2 (ja) 1992-09-28 2000-02-28 日本電気株式会社 キャッシュメモリ同期方法
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
US5666509A (en) 1994-03-24 1997-09-09 Motorola, Inc. Data processing system for performing either a precise memory access or an imprecise memory access based upon a logical address value and method thereof
EP0681240B1 (en) 1994-05-03 2001-01-10 Hewlett-Packard Company Duplicate cache tag memory 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
US5551001A (en) 1994-06-29 1996-08-27 Exponential Technology, Inc. Master-slave cache system for instruction and data cache memories
US5559987A (en) * 1994-06-30 1996-09-24 Digital Equipment Corporation Method and apparatus for updating a duplicate tag status in a snoop bus protocol based computer system
US6038644A (en) 1996-03-19 2000-03-14 Hitachi, Ltd. Multiprocessor system with partial broadcast capability of a cache coherent processing request
US5900016A (en) 1997-04-02 1999-05-04 Opti Inc. System for using a cache memory with a write-back architecture
US6049849A (en) 1997-04-14 2000-04-11 International Business Machines Corporation Imprecise method and system for selecting an alternative cache entry for replacement in response to a conflict between cache operation requests

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8051251B2 (en) 2006-02-24 2011-11-01 Fujitsu Limited Method and apparatus for setting status of cache memory

Also Published As

Publication number Publication date
TW535061B (en) 2003-06-01
CN1130651C (zh) 2003-12-10
EP0936558B1 (en) 2003-09-03
EP0936558A2 (en) 1999-08-18
DE69910860D1 (de) 2003-10-09
KR100322225B1 (ko) 2002-02-07
EP0936558A3 (en) 1999-12-15
US6292872B1 (en) 2001-09-18
KR19990072293A (ko) 1999-09-27
CN1226706A (zh) 1999-08-25

Similar Documents

Publication Publication Date Title
JPH11272559A (ja) マルチレベル・メモリ・ハイアラ―キを含むデ―タ処理システムのためのキャッシュ・コヒ―レンシ・プロトコル
US7234029B2 (en) Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US6721848B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
KR100545951B1 (ko) 최적화된 입/출력 애플리케이션을 위한 분산된 판독 및기입 캐싱 구현
US5822763A (en) Cache coherence protocol for reducing the effects of false sharing in non-bus-based shared-memory multiprocessors
US5623632A (en) System and method for improving multilevel cache performance in a multiprocessing system
JP4594900B2 (ja) メモリ・ブロックを初期設定するためのプロセッサ、データ処理システム、および方法
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
JP3277171B2 (ja) 厳密モード及び非厳密モードを有するホバーリング(h)状態を含むキャッシュ・コヒーレンシ・プロトコル
US5559987A (en) Method and apparatus for updating a duplicate tag status in a snoop bus protocol based computer system
JPH11328026A (ja) ホバ―リング(h)及びリ―セント(r)状態を有するキャッシュ・コヒ―レンシ・プロトコル
KR20110031361A (ko) 스누프 필터링 메커니즘
KR20030024895A (ko) 캐시 코히어런트 멀티-프로세서 시스템에서 순서화된입출력 트랜잭션을 파이프라이닝하기 위한 방법 및 장치
US8332592B2 (en) Graphics processor with snoop filter
JP3286258B2 (ja) キャッシュ・コヒーレンシを維持する方法、キャッシュ・コヒーレンシをサポートするキャッシュ、及びデータ処理システム
US6415358B1 (en) Cache coherency protocol having an imprecise hovering (H) state for instructions and data
US6272603B1 (en) Cache coherency protocol having hovering (H), recent (R), and tagged (T) states
JP2002116954A (ja) キャッシュシステム
JPH11272556A (ja) 命令及びデ―タに対するホバ―リング(h)状態を有するキャッシュ・メモリ・プロトコル
US6826654B2 (en) Cache invalidation bus for a highly scalable shared cache memory hierarchy
JP2003216596A (ja) マルチプロセッサシステム及びノード装置