JPH09138779A - スヌープ処理方法 - Google Patents
スヌープ処理方法Info
- Publication number
- JPH09138779A JPH09138779A JP8201385A JP20138596A JPH09138779A JP H09138779 A JPH09138779 A JP H09138779A JP 8201385 A JP8201385 A JP 8201385A JP 20138596 A JP20138596 A JP 20138596A JP H09138779 A JPH09138779 A JP H09138779A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- snoop
- data
- address
- buffer queue
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
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
プロセッサにおける、プロセッサ・スピードに与える影
響を小さくしたキャッシュ・スヌープ方法。 【構成・作用】書込みバッファなどのバッファ類を使用
するマルチプロセッサ・システムでは、キャッシュ・ス
ヌープをキャッシュ・メモリに対して行うだけだと、ま
だバッファ中に入っていて実際には完了していないアク
セスがあるとスヌープも待たされてしまう。そこで、ス
ヌープ・アドレスの比較をキャッシュ・タグだではな
く、バッファ中のアドレスとも行うようにした。
Description
ムに関し、詳細には、マルチプロセッサ(MP)システ
ム中の複数のプロセッサが共有するメモリを効率的に管
理するコンピュータ・システムの実現形態に関する。
モリ中のデータを共有する。MPシステムは、共有メモ
リ中のすべてのデータ間に「コヒーレンシ」を維持する
ことが望ましい。データは、メイン・メモリだけでな
く、高速キャッシュ・メモリを含め、いくつかの異なる
ロケーションに存在することができる。コヒーレンシと
は、各中央演算処理装置(CPU)が、共有メモリ中の
特定のアドレスに対応する最後に変更されたデータにア
クセスしなければならないという概念を指す。言い換え
ると、あるアドレスにある特定のデータが、このメモリ
・ロケーションで最後に変更されたデータである場合、
最後に変更されたこのデータを同定してこの特定のデー
タを要求するすべてのCPUがこのデータを使用できな
ければならない。
の一例は、メイン・メモリに対する読出し及び書込みを
監視することである。あるアドレスにあるデータのメモ
リ読出しまたはメモリ書込みが検出されると、このアド
レスはスヌープ・アドレスとして使用される。このスヌ
ープ・アドレスに合致するキャッシュ・メモリ中のアド
レスをサーチするために、マルチプロセッサ・システム
中のすべてのキャッシュ・メモリに向けてスヌープ要求
が開始される。合致が起こる毎にスヌープ・ヒットが発
生し、スヌープ・ヒットが発生したキャッシュ中のアド
レスにあるデータのコヒーレンシを維持するために必要
な是正措置がとられる。
プロセッサ・システムの通常の動作では、通常、任意の
時点で、キャッシュ・データを求めるまだ保留中の複数
の要求がある。これらの要求を掌握し続け効率的に処理
するには、キャッシュ・サブシステム中のキャッシュ・
メモリに結合されたバッファ・キューが必要である。し
かし、キャッシュ・サブシステムがローカル・コードに
対して高い性能を維持できるようにし、同時に、スヌー
プ要求のための効率的なサポートを提供することは困難
である。キャッシュ・メモリ及びそれに関連する全ての
バッファ・キューの両方を効率的にスヌープする方法及
び装置が必要である。
造においてキャッシュ・メモリ及びそれに関連するバッ
ファ・キューの両方をスヌープする効率的な方法及び装
置を提供する。
明は、第1及び第2の中央演算処理装置と、メイン・メ
モリと、第1及び第2の中央演算処理装置とメイン・メ
モリに結合されたシステム・バスを含む。第2の中央演
算処理装置には、データ・ラインを記憶するキャッシュ
・メモリと、キャッシュ・データ・ラインのアドレス及
びキャッシュ・データ・ラインのステータスを示すキャ
ッシュ・タグを含む新規なキャッシュ構造が結合され
る。通常、プロセッサの高性能動作の下では、いつで
も、まだ処理されていないキャッシュ・データを求める
複数の要求が存在するので、このキャッシュ構造は更
に、キャッシュ・データ・ラインのアドレス及びキャッ
シュ・データ・ラインのステータスを記憶する少なくと
も1つのバッファ・キューを含む。このバッファ・キュ
ーは、いくつかの未処理のキャッシュ要求を掌握し続
け、それらを効率的に処理するのを助ける。
を介してメイン・メモリにアクセスしたこと、たとえば
メイン・メモリに対する読出しまたは書込みに応答し
て、スヌープ要求を開始しスヌープ・アドレスを提供す
るバス制御装置がシステム・バスに結合される。スヌー
プ要求に応答して、キャッシュ・タグがサーチされる。
スヌープ・アドレスがキャッシュ・データ・ラインのア
ドレスに合致した場合、スヌープ・ヒット条件が発生
し、データ・コヒーレンシを維持するように、ライン・
ステータスに基づいて適切な処置がとられる。
レスは、バッファ・キューに記憶されているアドレスと
も比較され、そのスヌープ・アドレスがバッファ・キュ
ーに記憶されているアドレスに合致する場合には肯定比
較結果を与え、それによってスヌープ・ヒット条件が成
立したことを示す。新規なキャッシュ構造のバッファ・
キューは更に、スヌープ・ヒット条件が成立したことを
示す肯定比較結果の記録を記憶するスヌープ・ヒット・
ビットを有する。同様に、好ましい実施例では、別のバ
ッファ・キューの別のアドレス・エントリがスヌープさ
れ、合致したアドレス・エントリ毎に、夫々のスヌープ
・ヒット・ビットがセットされる。本発明の教示によれ
ば、バッファ・キューにかかわる未処理のトランザクシ
ョンがまだある場合でも、バッファ・キューのスヌープ
・ヒット・ビットに比較結果が一旦記憶されれば第2の
キャッシュのスヌープ要求が満たされ、それによって、
本発明の新規なキャッシュ構造はローカル・コードに対
して高い性能を維持し、同時に、スヌープ要求を効率的
にサポートする。
て本発明の原理を説明する、下記の詳細な説明を図面と
共に検討すれば明らかになるだろう。
・サブシステム構造101を使用する多重処理(MP)
システム100の部分ブロック図である。各キャッシュ
構造は、メイン・メモリ103と、夫々第1または第2
の中央演算処理装置(CPU)105、106との間に
結合された高速メモリを備える。中央演算処理装置(C
PU)は命令をフェッチし実行するデータ処理装置の一
部である。キャッシュ構造101は、アクセス時間を短
縮するために、メイン・メモリの最近アクセスされた内
容を含むように継続的に更新される。プログラムがメモ
リ要求を行うと、CPUはまず、メイン・メモリにアク
セスせずにデータを取り出せるように、キャッシュ構造
中にデータがあるかどうかを検査する。
リ空間内でデータ・ラインを共有する。本明細書では、
データ・ラインは、命令、処理済みデータ、未処理デー
タを含め、メモリにストアされている情報を一般的に指
す。図1に示した本発明の好ましい実施例では、各キャ
ッシュ構造101は夫々レベル1データ・キャッシュ1
07及びレベル2データ・キャッシュ109を含む。本
発明をデータ・キャッシュへ適用したものを以下で詳し
く論じる。しかし、別の実施例では、本発明が命令キャ
ッシュまたは命令キャッシュとデータ・キャッシュの組
合せに適切に適用され有益な結果が得られることを理解
されたい。
タ・ライン間に「コヒーレンシ」を維持するのが有利で
ある。データ・ラインはいくつかの異なる位置に存在す
る。すなわち、キャッシュ・データ・ラインは、夫々、
CPU105、106に夫々近接して結合されたキャッ
シュ構造101中に配置され、メイン・メモリ・データ
・ラインは、CPU105、106から離れて結合され
たメイン・メモリ103に配置される。コヒーレンシと
は、各中央演算処理装置(CPU)が、共有メモリ中の
特定のアドレスに対応する最後に変更されたデータにア
クセスしなければならないという概念を指す。言い換え
ると、あるアドレスにある特定のデータ・ラインが、あ
るメモリ・ロケーションで最後に変更されたデータ・ラ
インである場合、この最後に変更されたこのデータ・ラ
インが最後に変更されたものであるということが知ら
れ、この特定のデータ・ラインを要求するすべてのCP
Uがこのデータを使用できなければならない。MPシス
テムでコヒーレンシを維持するために、各キャッシュ構
造101に結合された夫々のバス制御装置/インタフェ
ース111が、メイン・メモリ103に対するアクセ
ス、たとえばメイン・メモリに対する読出しまたは書込
みがないかどうかシステム・バス112を監視する。た
とえば、第1のCPU105がメイン・メモリにアクセ
スしたこと、すなわちメモリ読出しとメモリ書込みのど
ちらかをバス制御装置が検出すると、これらのバス制御
装置は、第2のプロセッサ106に近接して結合された
キャッシュ構造を含め、夫々に近接して結合された夫々
のキャッシュ構造に対するスヌープ・サイクルを開始す
る。
ロトコルは、主として、MPシステムで選択されたデー
タ・キャッシュのタイプに依存する。従来、データ・キ
ャッシュは、「ライトスルー」(WT)型と「ライトバ
ック」(WB)型のどちらかに分類される。いくつかの
実施例では、キャッシュは、データ・キャッシュへの入
力の論理状態つまりステータスに応じて、WT型キャッ
シュとWB型キャッシュのどちらかとして動作できるよ
うに設計される。
ラインは、中央演算処理装置による更新や変更など、キ
ャッシュ・データ・ラインが変更される毎にメイン・メ
モリに「素通しで書き込まれる」。従って、メイン・メ
モリには常に、最後に変更されたデータ・ラインが存在
する。その結果、WT型データ・キャッシュのコヒーレ
ンシを維持するためのプロトコルは、メモリ書込み時に
しかスヌープ・サイクルを開始しない。WTデータ・キ
ャッシュ構造からのメモリ読出しに対するバス制御装置
の処置は必要とされない。
夫々異なる利点と欠点を有する。WB型データ・キャッ
シュでは、キャッシュ・データ・ラインが変更される毎
にただちにメイン・メモリにデータ・ラインが「素通し
で書き込まれる」ことはない。従って、本発明の好まし
い実施例では、ローカルCPUが有利には、MPシステ
ム中の他のメモリ・ロケーションに常に変更を知らせる
必要なしに、ローカルWB型データ・キャッシュを何回
も変更するように、WB型データ・キャッシュが使用さ
れる。ライトバック型キャッシュ及びライトスルー型キ
ャッシュを対象とする関連する教示は、1995年4月
4日に発行され本願出願人に譲渡された米国特許第5,
404,489号に記載されているので参照されたい。
図1の好ましい実施例は本発明の教示に従って具体的に
適用されたWB型データ・キャッシュを含むキャッシュ
構造101を示すものであるが、別の実施例ではWT型
データ・キャッシュが使用され本発明の教示当に従って
適切に適用され有益な結果がもたらされることを理解さ
れたい。
かのソースからデータ・ラインが要求されたとき、ある
いはプログラム制御に応答してデータ・ラインをメイン
・メモリにフラッシュしたり新しいデータ・ライン用の
スペースを設ける必要があるときに、このデータ・ライ
ンがWBデータ・キャッシュからメイン・メモリへ書き
込まれる。あるWB型データ・キャッシュが変更された
データを持っているとスヌープ・サイクル中に判定され
た場合、この特定のデータ・キャッシュは、要求元CP
Uにこの変更済みデータを提供する。スヌープ・サイク
ル中にWB型データ・キャッシュからメモリ書込みが行
われた場合には、コヒーレンシを維持するプロトコル
は、この書込みデータを受け取ったメモリ・ロケーショ
ン以外のすべてのメモリ・ロケーションにある当該デー
タ・ラインを無効化することである。
ャッシュ要求が処理されている。これらの要求を掌握し
続け効率的に処理するために、好ましい実施例では、キ
ャッシュ・サブシステム構造にいくつかのバッファ・キ
ューがある。マルチプロセッサ・キャッシュ・コヒーレ
ンシを効率的に維持するには、バッファ・キューを効率
的にスヌープすることが重要である。以下で詳しく論じ
るように、本発明の原理に従ってバッファ・キュー中の
スヌープ・ヒットを記録するようにバッファ・キューを
変更すれば、キャッシュ構造がローカル・コードに対し
て高い性能を維持し、同時にスヌープ要求が効率的にサ
ポートされる。
ャッシュを有するプロセッサ中のキャッシュ・データ・
ラインのマルチプロセッサ・スヌープの問題に対する本
願発明者らの研究には、例えば、スヌープを検査してい
る間はキャッシュ構造全体を停止するということが含ま
れていた。このような従来の研究では、スヌープがアク
セスしようとしているラインに対する未処理のアクセス
がある場合、そのスヌープは遅延され、完了することが
できなくなる。こられの従来の研究におけるそのような
構造では、キャッシュ構造が停止されている間、第1の
スヌープが完了するまで他のスヌープをバス上に送るこ
とができなくなるので、性能が低下しがちであった。
有利なことには、キャッシュ構造中のバッファ・キュー
全体にわたってスヌープ処理を分散し、スヌープ・ヒッ
ト・ビットをセットすることによって未処理のトランザ
クションにそれがスヌープされたものとマークを付ける
ことができるようにする。スヌープ・ヒット・ビットが
セットされたことに応答して、バッファによって参照さ
れるデータ・ラインの所有権を放棄することによってこ
のスヌープが完了する。未処理のトランザクションに関
するデータが戻されると、バス参照をもたらしたこのト
ランザクションが満足された直後にそのデータを含むラ
インが放棄される。
きに、まだスヌープされていないメモリ・データを含む
キャッシュ内部のあらゆるバッファ・キューがスヌープ
される。例外は以下の通りである:システム・バス上に
発行されていないアクセスは、そのアドレスを着信スヌ
ープ・アドレスと比較する必要はない;以前のスヌープ
に応答してバス上へ送出されているデータは、そのアド
レスをスヌープ・アドレスと比較する必要がない。好ま
しい実施例では、他のすべてのキャッシュ・アドレスが
スヌープ・アドレスと比較される。もちろん、バッファ
・キューだけでなく、キャッシュ構造のレベル1データ
・キャッシュ107及びレベル2データ・キャッシュ1
09のキャッシュ・タグもサーチされ、スヌープ中のデ
ータ・ラインがそこに存在するかどうかが判定される。
変更ステータス、排他ステータス、共有ステータス、無
効ステータスをサポートする全MESIプロトコルのラ
イン・ステータスをサポートする。キャッシュ・データ
・ラインのステータスが排他的所有(排他ステータス)
である場合、所有側キャッシュ構造は、キャッシュ・デ
ータ・ラインのキャッシュされた唯一のコピーを保持す
る。このコピーは他のキャッシュ構造には通知せずにロ
ーカルに更新される。キャッシュ・データ・ラインのス
テータスが「共有」ステータスである場合、他のキャッ
シュ構造もこのキャッシュ・データ・ラインのコピーを
有することができ、キャッシュ・データ・ラインの更新
に関する通知を受けなければならない。「無効」ライン
・ステータスは、キャッシュ・エントリが有用なデータ
を含まないことを示す。「変更」ステータスは、キャッ
シュ・エントリにデータが書き込まれており、従って変
更されている、つまり「ダーティ」であることを示す。
ザクションを発行した直後にキャッシュ・データ・ライ
ンの所有権を獲得することができ、あるいはそうする代
わりに、CPUはラインの所有権を獲得するにはそのデ
ータが戻ってくるのを待つ必要があるようにすることも
できる。以後の議論のために、好ましい実施例では、プ
ロセッサは、システム・バス上でメモリ要求を発行した
直後にキャッシュ・データ・ラインの所有権を獲得する
ことを理解する必要がある。
は、システム・バスが、他のプロセッサからのメモリ・
アクセス(読出しまたは書込み)がないかどうか監視さ
れる。キャッシュ・タグがサーチされ、タグがスヌープ
・アドレスに合致する場合、そのラインはキャッシュの
スタティック・ランダム・アクセス・メモリ(SRA
M)に存在する。キャッシュ中のラインのステータスが
変更ステータスではない場合、そのラインは無効化され
(あるいは、キャッシュは、キャッシュ間転送を実行し
てキャッシュ・データ・ラインを要求元プロセッサに提
供することもできる)、かくしてスヌープ動作は完了し
また完了したものと認められる。
は、フラッシュ中のラインがバス上に実際に出されるま
で遅延される。しかし、好ましい他の実施例のもっと良
好に動作する解決策は、このラインがメモリ中で正しい
データでまもなく更新されるとの通知を行って、スヌー
プをできるだけ早く完了することである。その場合、要
求元プロセッサは、メモリへのデータの書直しが行われ
るまで待機しなければならず、あるいはそうする代わり
に、そのデータに対するキャッシュ間転送をサポートし
てもよい。
または排他ライン、または共有ライン上でキャッシュ間
転送を実行するかどうかにはかかわらずに、有益な結果
をもたらす。しかし、キャッシュ・データ・ラインが変
更ステータスである場合、そのキャッシュ・データ・ラ
インは好ましくは、スヌープが完了する前にメモリへフ
ラッシュし、あるいはキャッシュ間転送を介して他のキ
ャッシュへ転送される。この場合、ラインが存在し、か
つまもなくフラッシュされることを示すスヌープ応答が
行われる。
・キューに適用されることを理解されたい。スヌープ要
求を受け取ると、レベル1データ・キャッシュ及びレベ
ル2データ・キャッシュのキャッシュ・タグだけでな
く、このようなバッファ・キューもスヌープされる。バ
ッファ・キューをスヌープすることは、データ・ライン
がデータ・キャッシュの外部へ移動され、このデータ・
ラインがこのプロセッサによって所有されていることを
示すものがもはやキャッシュ・タグには残っていない可
能性があるので、特に重要である。
要求を発行したが、まだその応答を受け取っていないと
いうことがある。このプロセッサは、バス上に要求を送
ったので、現在そのデータ・ラインを所有しているが、
それに関するデータは持っていない。しかし、スヌープ
を受け取ったとき正しく動作するためには、このプロセ
ッサが所有しているすべてのデータ・ラインをスヌープ
しなければならない。
キュー・エントリに対するスヌープ比較が成功したかど
うかを記録するためにこのような内部バッファ・キュー
の各エントリ毎に割り当てられた少なくとも1ビット
(本明細書ではスヌープ・ヒット・ビットと呼ぶ)を含
む。本願発明者は、スヌープ・ヒットを記録するスヌー
プ・ヒット・ビットを有するバッファ・キューを含むキ
ャッシュ構造に関する他者による従来の教示は知らない
が、たとえば1994年12月29日にRoger E.Tepley
に対して発行された”Method and Apparatus for Achie
ving MultilevelInclusion in Multilevel Cache Hiera
rchies”と題する米国特許第5,369,753号で論
じられたように、データ・キャッシュのスヌープ・ヒッ
トだけは当業者によって良く理解されている。
構造101には、メモリ・リターン・バッファ・キュー
やレベル2(データ・キャッシュ)書込みバッファ・キ
ューなど、バス上で発行された未解決の要求を含むバッ
ファ・キュー123が含まれる。たとえば、仮想アドレ
ス・フラッシュ・キャッシュ命令(VAFC)を介して
キャッシュからラインがフラッシュされ、あるいはその
他の方法でラインがキャッシュ階層からフラッシュされ
る際には、そのラインはレベル2書込みバッファ・キュ
ー内に置かれる。キャッシュ・ラインがキャッシュの外
部へ移動中であるので、そのキャッシュ・ラインがプロ
セッサによって所有されていることを示すものはもはや
キャッシュ・タグ中には存在しないかもしれない。しか
し、このプロセッサは依然としてレベル2書込みバッフ
ァ・キュー中にこのキャッシュ・ラインを所有している
ので、レベル2書込みバッファ・キューに関連するアド
レスをスヌープする必要がある。
RQ)については、メモリから排他的であるように要求
されているライン(たとえば、プロセッサによって書き
込まれるべきライン)は、まだデータが得られない場合
でも、そのラインのアドレスがMRQにあれば、プロセ
ッサによって所有されているとみなされることを理解し
なければならない。その結果、まだデータが得られない
場合でも、各スヌープ・アドレスを使用してMRQがサ
ーチされる。その結果、各スヌープ・アドレスを使用し
てMRQがサーチされ、あるエントリのアドレスがスヌ
ープ・アドレスに合致した場合、そのエントリは、スヌ
ープ済みとしてタグが付けられ、対応するメモリ・フラ
ッシュ・バッファ(図1中には示していない)にデータ
を提供するためのトランザクション識別情報を獲得す
る。
施例には、ストア・バッファ・キューやレベル2未解決
アクセス要求バッファ・キューなどのキャッシュ内部バ
ッファ・キュー125も含まれる。レベル2キャッシュ
未処理アクセス要求バッファ・キューは、まだ解決され
ていない、レベル2データ・キャッシュに発行されたア
クセスを掌握し続ける。ストア・バッファ・キュー(S
TQ)は、アドレス、バイト・イネーブル書込み制御ビ
ット、データ、その他ストアのための関連する情報を保
持する。
は複数の比較器(図1のブロック図には図示せず)を含
む。これらの比較器を使用して、スヌープ・アドレスと
各バッファ・キュー中のアドレスを比較して夫々の比較
結果を与え、スヌープ・アドレスとキャッシュのバッフ
ァ・キューにストアされているアドレスがうまく合致し
た比較の結果に基づいて、キャッシュのバッファ・キュ
ーに割り当てられたスヌープ・ヒット・ビットをセット
する。好ましい実施例では、バッファ・キューのエント
リのスヌープ・ヒット・ビットが現在セットされている
場合、スヌープ・アドレスとバッファ・キューに当該エ
ントリについてストアされているアドレスとがまた合致
したからといって、スヌープ・ヒット・ビットが再びセ
ットされることはなく、また新しいトランザクション識
別情報が獲得されることもないことを理解しなけれなば
なない。
中のスヌープ・ヒット・ビットがセットされている各エ
ントリをどうすべきかを解決してから、スヌープ・ヒッ
ト・ビットをクリアする。データを有し夫々のスヌープ
・ヒット・ビットがセットされたバッファ・キュー・エ
ントリでは、バッファ・キュー・エントリのMESIス
テータスが調べられ、適当な処置がとられる。具体的に
は、バッファ・キュー・エントリのMESIステータス
が変更ステータスである場合、バッファ・キュー・エン
トリはフラッシュされてシステム・バスに出力される。
バッファ・キュー・エントリのMESIステータスが排
他ステータスまたは共有ステータスである場合、バッフ
ァ・キュー・エントリは無効化される。
ープ・ヒット・ビットはセットされているのだがデータ
がまだバッファ・キューに記憶されていないという特殊
なケースでは、制御論理機構が、ストアまたはロードを
求める要求の実行をデータが到着するまで遅延させる。
バッファ・キュー・エントリにデータが到着すると、ス
トアまたはロードを求める要求が満たされる。次いで、
スヌープ・ヒット時にスヌープ比較が成功したときにす
でにデータが完全に存在している前述のバッファ・キュ
ー・エントリの場合と全く同じように、バッファ・キュ
ー・エントリのステータスが調べられ、バッファ・キュ
ー・エントリの夫々のMESIステータスに応じて適当
な処置がとられる。データを受け取った後、バッファ・
キュー・エントリが変更ステータスになった場合は、バ
ッファ・キューはフラッシュされてシステム・バスに出
力される。データを受け取った後にバッファ・キュー・
エントリが排他ステータスまたは共有ステータスになっ
た場合、バッファ・キュー中のデータ・ライン・エント
リが無効化される。
数のスヌープ要求の順序付けは、要求元プロセッサが、
他のどのプロセッサが変更されたキャッシュ・データ・
ラインを持っていてこのキャッシュ・データ・ラインの
データをまもなくメモリへ送り返すか、を知らせること
によって処理される。各プロセッサ要求は鎖状にならべ
られ、要求元プロセッサは、バス上に要求を発行した直
後に要求中のキャッシュ・データ・ラインの所有権を与
えられる。各要求元プロセッサは、スヌープ処理を正し
く実行するうえで各要求毎に3つのこと、すなわちリタ
ーン・トランザクション用のトランザクション識別情報
(トランザクションID)と、キャッシュ・データ・ラ
インのMESIステータスと、要求元プロセッサがスヌ
ープのためにキャッシュ・データ・ラインを放棄しなけ
ればならないかどうか、を掌握し続けるだけでよいの
で、複数の要求元を追跡するための長い単一のキューは
必要とされない。
ロセッサから送られてくるか、あるいはコヒーレント入
出力によってデータがどの入出力(I/O)アダプタか
ら送られてくるのかを示すうえで有用である。要求元プ
ロセッサが要求を一旦発行すればこの要求元プロセッサ
がデータを受け取ることをシステムが保証するかぎり、
本発明は、要求元プロセッサの可視性レベルからの適切
なアクセス順序付けを保証するバスのないシステムで
も、スヌープを簡略化しまたより効率的なスヌープを行
ううえで有益である。
ム構造においてキャッシュ・メモリとそれに関連するバ
ッファ・キューの両方をスヌープする効率的な方法及び
装置を提供する。本発明の特定の実施例を説明し例示し
たが、本発明は、このように説明し例示した部品の特定
の態様または構成に限るものではなく、本発明の範囲及
び趣旨から逸脱せずに様々な変更及び変更を加えること
ができる。本発明は、本願特許範囲内では、上で具体的
に説明し例示した以外の方法でも実施することができ
る。
(e)を設けたことを特徴とするスヌープ処理方法: (a)データ・ラインをストアするキャッシュ・メモリ
と、前記データ・ラインのアドレス及び前記データ・ラ
インのステータスを識別するキャッシュ・タグを提供す
る; (b)前記データ・キャッシュに結合され、前記データ・
ラインのアドレス及び前記データ・ラインのステータス
をストアし、それによって前記データ・ラインを参照す
る; (c)スヌープ・アドレスとバッファ・キューに記憶され
ているアドレスとを比較し、前記スヌープ・アドレスが
前記バッファ・キューにストアされているアドレスに合
致する場合には肯定比較結果を与え、それによってスヌ
ープ・ヒット条件が成立したことを示す; (d)少なくとも1つのスヌープ・ヒット・ビットを前記
バッファ・キューに割り当てる; (e)前記スヌープ・ヒット条件が成立したことを示す前
記肯定比較結果に応答して前記スヌープ・ヒット・ビッ
トをセットする。
ットがセットされたことに応答して、前記バッファ・キ
ューによって参照されるデータ・ラインの所有権を放棄
することを特徴とする実施態様1記載のスヌープ処理方
法。
2の中央演算処理装置と、メイン・メモリと、前記第1
の中央演算装置、前記第2の中央演算処理装置及び前記
メイン・メモリに結合されたシステム・バスと、前記シ
ステム・バスに結合され、前記第1の中央演算処理装置
が前記システム・バスを介して前記メイン・メモリにア
クセスしたことに応答してスヌープ要求を開始しスヌー
プ・アドレスを提供するバス制御装置と、前記第2の中
央演算処理装置に結合され、データ・ラインをストアす
るキャッシュ・メモリと、キャッシュ・データ・ライン
のアドレス及びステータスを識別するキャッシュ・タグ
と、キャッシュ・データ・ラインのアドレス及びステー
タスをストアするバッファ・キューを含むキャッシュ構
造と、前記バッファ・キューに結合され、スヌープ要求
に応答して、スヌープ・アドレスと前記バッファ・キュ
ーにストアされているアドレスを比較し、前記スヌープ
・アドレスが前記バッファ・キューに記憶されているア
ドレスに合致する場合には肯定比較結果を与え、それに
よってスヌープ・ヒット条件が成立したことを示す比較
器を設け、前記バッファ・キューは更に、前記スヌープ
・ヒット条件が成立したことを示す前記肯定比較結果の
記録をストアするスヌープ・ヒット・ビットを有するこ
とを特徴とするスヌープ処理装置。
バス上で発行されたがまだ解決されていない未解決要求
を含むバッファ・キューを含むことを特徴とする実施態
様3記載のスヌープ処理装置。
モリ・リターン・バッファ・キューを含むことを特徴と
する実施態様4記載のスヌープ処理装置。
ャッシュ書込みバッファ・キューを含むことを特徴とす
る実施態様4記載のスヌープ処理装置。
トア・バッファ・キューを含むことを特徴とする実施態
様3記載のスヌープ処理装置。
解決アクセス要求バッファ・キューを含むことを特徴と
する実施態様3記載のスヌープ処理装置。
プロセッサ・システムの部分ブロック図。
Claims (1)
- 【請求項1】以下のステップ(a)ないし(e)を設けたこと
を特徴とするスヌープ処理方法: (a)データ・ラインをストアするキャッシュ・メモリ
と、前記データ・ラインのアドレス及び前記データ・ラ
インのステータスを識別するキャッシュ・タグを提供す
る; (b)前記データ・キャッシュに結合され、前記データ・
ラインのアドレス及び前記データ・ラインのステータス
をストアし、それによって前記データ・ラインを参照す
る; (c)スヌープ・アドレスとバッファ・キューに記憶され
ているアドレスとを比較し、前記スヌープ・アドレスが
前記バッファ・キューにストアされているアドレスに合
致する場合には肯定比較結果を与え、それによってスヌ
ープ・ヒット条件が成立したことを示す; (d)少なくとも1つのスヌープ・ヒット・ビットを前記
バッファ・キューに割り当てる; (e)前記スヌープ・ヒット条件が成立したことを示す前
記肯定比較結果に応答して前記スヌープ・ヒット・ビッ
トをセットする。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US516,421 | 1995-08-17 | ||
US08/516,421 US5652859A (en) | 1995-08-17 | 1995-08-17 | Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH09138779A true JPH09138779A (ja) | 1997-05-27 |
Family
ID=24055510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8201385A Pending JPH09138779A (ja) | 1995-08-17 | 1996-07-31 | スヌープ処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5652859A (ja) |
JP (1) | JPH09138779A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6697899B1 (en) | 1999-10-20 | 2004-02-24 | Nec Corporation | Bus control device allowing resources to be occupied for exclusive access |
JP2009527866A (ja) * | 2006-03-30 | 2009-07-30 | インテル・コーポレーション | アウトオブオーダープロセッサにおけるトランザクショナルメモリ |
US8244985B2 (en) | 2004-03-30 | 2012-08-14 | Intel Corporation | Store performance in strongly ordered microprocessor architecture |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778438A (en) * | 1995-12-06 | 1998-07-07 | Intel Corporation | Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests |
US5742791A (en) * | 1996-02-14 | 1998-04-21 | Advanced Micro Devices, Inc. | Apparatus for detecting updates to instructions which are within an instruction processing pipeline of a microprocessor |
US5911052A (en) * | 1996-07-01 | 1999-06-08 | Sun Microsystems, Inc. | Split transaction snooping bus protocol |
US5752265A (en) * | 1996-06-13 | 1998-05-12 | Compaq Computer Corporation | Memory accessing in a multi-processor system using snooping |
US6128711A (en) * | 1996-11-12 | 2000-10-03 | Compaq Computer Corporation | Performance optimization and system bus duty cycle reduction by I/O bridge partial cache line writes |
US6035424A (en) * | 1996-12-09 | 2000-03-07 | International Business Machines Corporation | Method and apparatus for tracking processing of a command |
US6000011A (en) * | 1996-12-09 | 1999-12-07 | International Business Machines Corporation | Multi-entry fully associative transition cache |
US5764932A (en) * | 1996-12-23 | 1998-06-09 | Intel Corporation | Method and apparatus for implementing a dual processing protocol between processors |
US6147987A (en) * | 1997-04-08 | 2000-11-14 | 3Com Corporation | Supporting load sharing across multiple network access servers |
US6011910A (en) * | 1997-04-08 | 2000-01-04 | 3Com Corporation | Supporting authentication across multiple network access servers |
US5900017A (en) * | 1997-05-14 | 1999-05-04 | International Business Machines Corporation | Snooping a variable number of cache addresses in a multiple processor system by a single snoop request |
US6311256B2 (en) * | 1997-06-30 | 2001-10-30 | Emc Corporation | Command insertion and reordering at the same storage controller |
US6115795A (en) * | 1997-08-06 | 2000-09-05 | International Business Machines Corporation | Method and apparatus for configurable multiple level cache with coherency in a multiprocessor system |
US6081876A (en) * | 1997-09-22 | 2000-06-27 | Hewlett-Packard Company | Memory error containment in network cache environment via restricted access |
US6263404B1 (en) | 1997-11-21 | 2001-07-17 | International Business Machines Corporation | Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system |
US6460119B1 (en) * | 1997-12-29 | 2002-10-01 | Intel Corporation | Snoop blocking for cache coherency |
US6253291B1 (en) * | 1998-02-13 | 2001-06-26 | Sun Microsystems, Inc. | Method and apparatus for relaxing the FIFO ordering constraint for memory accesses in a multi-processor asynchronous cache system |
US6138218A (en) * | 1998-02-17 | 2000-10-24 | International Business Machines Corporation | Forward progress on retried snoop hits by altering the coherency state of a local cache |
US6289419B1 (en) | 1998-03-06 | 2001-09-11 | Sharp Kabushiki Kaisha | Consistency control device merging updated memory blocks |
US6314491B1 (en) | 1999-03-01 | 2001-11-06 | International Business Machines Corporation | Peer-to-peer cache moves in a multiprocessor data processing system |
US6473837B1 (en) | 1999-05-18 | 2002-10-29 | Advanced Micro Devices, Inc. | Snoop resynchronization mechanism to preserve read ordering |
US6393536B1 (en) | 1999-05-18 | 2002-05-21 | Advanced Micro Devices, Inc. | Load/store unit employing last-in-buffer indication for rapid load-hit-store |
US6415360B1 (en) | 1999-05-18 | 2002-07-02 | Advanced Micro Devices, Inc. | Minimizing self-modifying code checks for uncacheable memory types |
US6266744B1 (en) | 1999-05-18 | 2001-07-24 | Advanced Micro Devices, Inc. | Store to load forwarding using a dependency link file |
US6473832B1 (en) | 1999-05-18 | 2002-10-29 | Advanced Micro Devices, Inc. | Load/store unit having pre-cache and post-cache queues for low latency load memory operations |
US6427193B1 (en) | 1999-05-18 | 2002-07-30 | Advanced Micro Devices, Inc. | Deadlock avoidance using exponential backoff |
US6484240B1 (en) * | 1999-07-30 | 2002-11-19 | Sun Microsystems, Inc. | Mechanism for reordering transactions in computer systems with snoop-based cache consistency protocols |
US6662280B1 (en) | 1999-11-10 | 2003-12-09 | Advanced Micro Devices, Inc. | Store buffer which forwards data based on index and optional way match |
US20030115402A1 (en) * | 2001-11-16 | 2003-06-19 | Fredrik Dahlgren | Multiprocessor system |
US6988172B2 (en) * | 2002-04-29 | 2006-01-17 | Ip-First, Llc | Microprocessor, apparatus and method for selectively associating store buffer cache line status with response buffer cache line status |
US7321964B2 (en) * | 2003-07-08 | 2008-01-22 | Advanced Micro Devices, Inc. | Store-to-load forwarding buffer using indexed lookup |
US7472229B2 (en) * | 2004-08-12 | 2008-12-30 | International Business Machines Corporation | Bus controller initiated write-through mechanism |
US7376817B2 (en) * | 2005-08-10 | 2008-05-20 | P.A. Semi, Inc. | Partial load/store forward prediction |
US8683143B2 (en) * | 2005-12-30 | 2014-03-25 | Intel Corporation | Unbounded transactional memory systems |
US8180967B2 (en) * | 2006-03-30 | 2012-05-15 | Intel Corporation | Transactional memory virtualization |
US7761444B2 (en) * | 2006-10-05 | 2010-07-20 | Hewlett-Packard Development Company, L.P. | Identifying a sequence of blocks of data to retrieve based on a query |
US7987322B2 (en) | 2008-01-03 | 2011-07-26 | Freescale Semiconductor, Inc. | Snoop request management in a data processing system |
US8296525B1 (en) * | 2008-08-15 | 2012-10-23 | Marvell International Ltd. | Method and apparatus for data-less bus query |
US8099560B2 (en) | 2008-08-29 | 2012-01-17 | Freescale Semiconductor, Inc. | Synchronization mechanism for use with a snoop queue |
US8131948B2 (en) * | 2008-08-29 | 2012-03-06 | Freescale Semiconductor, Inc. | Snoop request arbitration in a data processing system |
US8327082B2 (en) * | 2008-08-29 | 2012-12-04 | Freescale Semiconductor, Inc. | Snoop request arbitration in a data processing system |
US8131947B2 (en) | 2008-08-29 | 2012-03-06 | Freescale Semiconductor, Inc. | Cache snoop limiting within a multiple master data processing system |
US8200908B2 (en) | 2009-02-06 | 2012-06-12 | Freescale Semiconductor, Inc. | Method for debugger initiated coherency transactions using a shared coherency manager |
US8688910B2 (en) | 2009-02-06 | 2014-04-01 | Freescale Semiconductor, Inc. | Debug control for snoop operations in a multiprocessor system and method thereof |
US9128725B2 (en) | 2012-05-04 | 2015-09-08 | Apple Inc. | Load-store dependency predictor content management |
US9600289B2 (en) | 2012-05-30 | 2017-03-21 | Apple Inc. | Load-store dependency predictor PC hashing |
US9710268B2 (en) | 2014-04-29 | 2017-07-18 | Apple Inc. | Reducing latency for pointer chasing loads |
US10102129B2 (en) * | 2015-12-21 | 2018-10-16 | Intel Corporation | Minimizing snoop traffic locally and across cores on a chip multi-core fabric |
US10514925B1 (en) | 2016-01-28 | 2019-12-24 | Apple Inc. | Load speculation recovery |
US10437595B1 (en) | 2016-03-15 | 2019-10-08 | Apple Inc. | Load/store dependency predictor optimization for replayed loads |
JP7042709B2 (ja) * | 2018-06-28 | 2022-03-28 | ルネサスエレクトロニクス株式会社 | 半導体装置、制御システムおよび半導体装置の制御方法 |
US11544193B2 (en) * | 2020-09-11 | 2023-01-03 | Apple Inc. | Scalable cache coherency protocol |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03219345A (ja) * | 1990-01-25 | 1991-09-26 | Toshiba Corp | 多ポートキャッシュメモリ制御装置 |
US5263142A (en) * | 1990-04-12 | 1993-11-16 | Sun Microsystems, Inc. | Input/output cache with mapped pages allocated for caching direct (virtual) memory access input/output data based on type of I/O devices |
EP0461926B1 (en) * | 1990-06-15 | 1998-09-02 | Compaq Computer Corporation | Multilevel inclusion in multilevel cache hierarchies |
ATE158882T1 (de) * | 1990-06-15 | 1997-10-15 | Compaq Computer Corp | Vorrichtung zur echten lru-ersetzung |
US5404483A (en) * | 1990-06-29 | 1995-04-04 | Digital Equipment Corporation | Processor and method for delaying the processing of cache coherency transactions during outstanding cache fills |
US5193170A (en) * | 1990-10-26 | 1993-03-09 | International Business Machines Corporation | Methods and apparatus for maintaining cache integrity whenever a cpu write to rom operation is performed with rom mapped to ram |
JPH04353947A (ja) * | 1991-02-13 | 1992-12-08 | Hewlett Packard Co <Hp> | メモリページ特性タグ付けシステム |
US5319768A (en) * | 1991-05-01 | 1994-06-07 | Sgs-Thomson Microelectronics, Inc. | Control circuit for resetting a snoop valid bit in a dual port cache tag memory |
US5293603A (en) * | 1991-06-04 | 1994-03-08 | Intel Corporation | Cache subsystem for microprocessor based computer system with synchronous and asynchronous data path |
GB2256512B (en) * | 1991-06-04 | 1995-03-15 | Intel Corp | Second level cache controller unit and system |
US5335335A (en) * | 1991-08-30 | 1994-08-02 | Compaq Computer Corporation | Multiprocessor cache snoop access protocol wherein snoop means performs snooping operations after host bus cycle completion and delays subsequent host bus cycles until snooping operations are completed |
US5359723A (en) * | 1991-12-16 | 1994-10-25 | Intel Corporation | Cache memory hierarchy having a large write through first level that allocates for CPU read misses only and a small write back second level that allocates for CPU write misses only |
US5414827A (en) * | 1991-12-19 | 1995-05-09 | Opti, Inc. | Automatic cache flush |
US5341487A (en) * | 1991-12-20 | 1994-08-23 | International Business Machines Corp. | Personal computer having memory system with write-through cache and pipelined snoop cycles |
US5386523A (en) * | 1992-01-10 | 1995-01-31 | Digital Equipment Corporation | Addressing scheme for accessing a portion of a large memory space |
US5325503A (en) * | 1992-02-21 | 1994-06-28 | Compaq Computer Corporation | Cache memory system which snoops an operation to a first location in a cache line and does not snoop further operations to locations in the same line |
AU665368B2 (en) * | 1992-02-27 | 1996-01-04 | Samsung Electronics Co., Ltd. | CPU having pipelined instruction unit and effective address calculation unit with retained virtual address capability |
US5353415A (en) * | 1992-10-02 | 1994-10-04 | Compaq Computer Corporation | Method and apparatus for concurrency of bus operations |
US5528764A (en) * | 1992-12-24 | 1996-06-18 | Ncr Corporation | Bus system with cache snooping signals having a turnaround time between agents driving the bus for keeping the bus from floating for an extended period |
US5590310A (en) * | 1993-01-14 | 1996-12-31 | Integrated Device Technology, Inc. | Method and structure for data integrity in a multiple level cache system |
US5528134A (en) * | 1995-03-08 | 1996-06-18 | Allen-Bradley Company, Inc. | AC power analyzer |
-
1995
- 1995-08-17 US US08/516,421 patent/US5652859A/en not_active Expired - Lifetime
-
1996
- 1996-07-31 JP JP8201385A patent/JPH09138779A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6697899B1 (en) | 1999-10-20 | 2004-02-24 | Nec Corporation | Bus control device allowing resources to be occupied for exclusive access |
US8244985B2 (en) | 2004-03-30 | 2012-08-14 | Intel Corporation | Store performance in strongly ordered microprocessor architecture |
JP2009527866A (ja) * | 2006-03-30 | 2009-07-30 | インテル・コーポレーション | アウトオブオーダープロセッサにおけるトランザクショナルメモリ |
Also Published As
Publication number | Publication date |
---|---|
US5652859A (en) | 1997-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5652859A (en) | Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues | |
US6519685B1 (en) | Cache states for multiprocessor cache coherency protocols | |
JP3927556B2 (ja) | マルチプロセッサ・データ処理システム、変換索引バッファ無効化インストラクション(tlbi)のハンドリングを行うための方法、およびプロセッサ | |
US6272602B1 (en) | Multiprocessing system employing pending tags to maintain cache coherence | |
US7305522B2 (en) | Victim cache using direct intervention | |
US6625698B2 (en) | Method and apparatus for controlling memory storage locks based on cache line ownership | |
US7549025B2 (en) | Efficient marking of shared cache lines | |
EP1311956B1 (en) | Method and apparatus for pipelining ordered input/output transactions in a cache coherent, multi-processor system | |
US8301843B2 (en) | Data cache block zero implementation | |
US5708792A (en) | Method and apparatus for a coherent copy-back buffer in a multipressor computer system | |
US6374332B1 (en) | Cache control system for performing multiple outstanding ownership requests | |
JPH11506852A (ja) | 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減 | |
US5226146A (en) | Duplicate tag store purge queue | |
JPH10333985A (ja) | データ供給方法及びコンピュータ・システム | |
US6553442B1 (en) | Bus master for SMP execution of global operations utilizing a single token with implied release | |
JPH10254773A (ja) | アクセス方法、処理装置およびコンピュータ・システム | |
US5895484A (en) | Method and system for speculatively accessing cache memory data within a multiprocessor data-processing system using a cache controller | |
US6105108A (en) | Method and apparatus for releasing victim data buffers of computer systems by comparing a probe counter with a service counter | |
US5263144A (en) | Method and apparatus for sharing data between processors in a computer system | |
US5987544A (en) | System interface protocol with optional module cache | |
US6202126B1 (en) | Victimization of clean data blocks | |
US8332592B2 (en) | Graphics processor with snoop filter | |
US5675765A (en) | Cache memory system with independently accessible subdivided cache tag arrays | |
EP1725938A1 (en) | System and method for canceling write back operation during simultaneous snoop push or snoop kill operation in write back caches | |
US6480915B1 (en) | Bus protocol and token manager for SMP execution of global operations utilizing a single token with implied release |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050826 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050902 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20051202 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20051207 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060301 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060711 |