JP3787155B2 - ローカル・バス上の多重プロセッシング・キャッシュ・コヒーレンシ・プロトコル - Google Patents
ローカル・バス上の多重プロセッシング・キャッシュ・コヒーレンシ・プロトコル Download PDFInfo
- Publication number
- JP3787155B2 JP3787155B2 JP52853096A JP52853096A JP3787155B2 JP 3787155 B2 JP3787155 B2 JP 3787155B2 JP 52853096 A JP52853096 A JP 52853096A JP 52853096 A JP52853096 A JP 52853096A JP 3787155 B2 JP3787155 B2 JP 3787155B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- signal
- memory
- local bus
- data element
- 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.)
- Expired - Fee Related
Links
Images
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)
Description
本発明は、コンピュータ・バスの分野に関する。さらに詳細には、本発明は、ローカル・プロセッサ・バス上で使用する多重プロセッシング・キャッシュ・コヒーレンシ・プロトコルに関する。
発明の背景
多くのコンピュータ・システムでは、プロセッサは、高速メモリ・バスを介して内部または外部キャッシュ、および場合によっては追加の外部メモリ装置に接続される。この局部的集合体は、プロセッサ/キャッシュ/メモリ「コンプレックス」と呼ばれることがある(以下では「キャッシュ・コンプレックス」と呼ぶ)。第1図は、このようなキャッシュ・コンプレックス140を1つ含む、従来の技術によるコンピュータ・システムを示す図である。
グラフィックス・コントローラ、ハード・ドライブ、アッドイン・ボードなどの周辺装置は、第1図に示すように、ローカル周辺バス100上で連絡する。バス・ブリッジ130を使用して、ローカル周辺バス100とプロセッサ110およびキャッシュ120との間の連絡を容易にすることができる。
多くのコンピュータ・システムでは、システム・メモリの一部または全体が、ローカル周辺バスに接続されることがある。これらのコンピュータ・システムでは、周辺装置すなわち「バス・エージェント」は、ローカル周辺バスにわたってメモリ150のトランザクションを要求する。各バス・エージェントは、メモリ150の読取りまたは書込みトランザクションを開始している間は、バスマスタと呼ばれる。このようなバスマスタ160の1つを第1図に表示する。
バスマスタがメモリのトランザクション要求を開始した時に、その他のキャッシュ・コンプレックスはこのトランザクションを監視すなわち「スヌープ」することがある。これは、このトランザクションによって改変される可能性があるメモリからのデータ要求のサブセットを、キャッシュ・コンプレックスが保持するためである。スヌープ処理中、このキャッシュ・コンプレックスは、バスマスタが要求するデータ要素を求めて、そのキャッシュを探索する。
キャッシュ・コンプレックスは、いくつかの周知のプロトコルの1つを使用することによって、コヒーレンシを維持する。このようなプロトコルの1つはライトスルー・プロトコルであり、この場合は、書込みサイクルは常にメモリまで書込みを行い、メモリが常に最新のデータ要素のコピーを有するようにする。もう1つのプロトコルはライトバック・プロトコルである。ライトバック・プロトコルは据置き式の書込みプロセスであり、キャッシュ中の各データ要素には、無効状態、排他的状態、または修正済み状態が割り当てられる。修正済み状態は、キャッシュ内のデータ要素が「ダーティ」である、すなわちメモリに記憶されたコピーと異なる(より新しい)ことを示す。排他的状態は、キャッシュ内のデータ要素が「クリーン」である、すなわちメモリに記憶されたコピーと同じであることを示す。無効状態は、キャッシュ中のデータ要素が割り振り解除されていることを示す。据置き書込みプロトコルのもう1つの実施例は「MESI」プロトコルと呼ばれることがあり、キャッシュ内のデータ要素には、修正済み、排他的、共用、または無効の4つの状態が割り当てられる。ライトバック・プロトコルと同様に、修正済み状態はデータ要素がダーティであることを示し、排他的状態はデータ要素がクリーンであることを示す。共用状態は、データ要素がクリーンであり、かつそれが複数のキャッシュで発見されることを示す。以上のキャッシュ・コヒーレンシ・プロトコルおよびそれらの変形については、米国特許第4757930号で論じられている。
Intel Corporation製の高度プロセッサ・システムに特有の1タイプのバス・キャッシュ・コヒーレンシ・プロトコルの場合は、3つの信号を利用する。第1信号は、ダーティ・ラインへのキャッシュ・ヒットが生じた時にキャッシュ・コンプレックスによってアサートされる。この信号は、第1図にSBO#(スヌープ・バック・オフ)として図示する。第2の信号は、キャッシュ・コンプレックスがスヌープを完了した時に、このキャッシュ・コンプレックスによってアサートされる。この信号はSDONE(スヌープ終了)と示す。第3の信号は、メモリがダーティ・ラインへのキャッシュ・ヒットを検知した時に、このメモリによってアサートされる。メモリはSBO#信号およびSDONE信号を両方とも監視し、両信号が同時にアサートされた時に、第3の信号STOP#をアサートする。バスマスタ160はSTOP#信号を検出し、メモリ・トランザクションを停止させ、キャッシュ120からのダーティ・ラインがメモリ150中で更新されることができるようにする。
上記の3つの信号を利用するバス・プロトコルの一例は、周辺構成部品相互接続(PCI)バスである。PCIのメモリ・トランザクション・プロトコルおよびキャッシュ・コヒーレンシ信号については、オレゴン州HillsboroのPCI Special Interest Group(SIG)から出版されたPCI Local Bus Specification,Rev.2.0に開示されている。
SBO#、SDONE、およびSTOP#は、単一キャッシュ・システム用に定義されているので、この3信号プロトコルは、通常は多重プロセッシング・システム中のキャッシュ・プロセッサとシステム・メモリとの間の通信には使用されない。
発明の概要
ローカル・バスを介して接続された複数のキャッシュ・コンプレックスの間でキャッシュ・コヒーレンシを維持するためのプロトコルを利用するコンピュータ・システムについて記述する。一実施例では、このコンピュータ・システムは、キャッシュ可能なメモリに記憶されたデータ要素、およびこのデータ要素に作用することを求めるトランザクション要求を開始するバスマスタを含む。ローカル・バスは、バスマスタとキャッシュ可能なメモリの間に接続され、トランザクション要求をバスマスタからキャッシュ可能なメモリに伝達する。複数のキャッシュ・コンプレックスもまた、ローカル・バスに接続される。各キャッシュ・コンプレックスは、キャッシュ可能なメモリからのデータ要素のサブセットを記憶するためのキャッシュ、キャッシュ制御論理、およびプロセッサを含む。
バスマスタがトランザクション要求を開始すると、キャッシュ・コンプレックスはその要求をスヌープし、要求されたデータ要素を各キャッシュ内で探索する。第1キャッシュ・コンプレックスは、データ要素を発見し、それがダーティであるとマークされている場合には、ダーティ信号をローカル・バス上でアサートする。第1キャッシュ・コンプレックスは、データ要素を発見し、それがクリーンであるとマークされている場合には、クリーン信号をローカル・バス上でアサートする。第1キャッシュ・コンプレックスがスヌープしている間は、第1ビジー信号がアサートされる。同様に、第2キャッシュ・コンプレックスは、第2ダーティ信号、第2クリーン信号、および第2ビジー信号をアサートする。
検出回路は、第1および第2ビジー信号のアサートを監視し、全てのビジー信号が同時にアサートされていないことを検出し、終了信号をキャッシュ可能なメモリに配送する。キャッシュ可能なメモリは、第1または第2ダーティ信号および終了信号の同時アサートが起こる時を検出し、その後バスマスタからのトランザクション要求を停止させる。
本発明のその他の特徴および利点は、添付の図面および以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
本発明について、限定的にではなく例示的に、添付の図面の図に図示する。図では、同じ参照番号は同様のエレメントを示す。
第1図は、従来技術のコンピュータ・システムのブロック・ダイアグラムである。
第2図は、本発明の一実施例による、多重プロセッシング・キャッシュ・コヒーレンシ・プロトコルを利用するコンピュータ・システムのブロック・ダイアグラムである。
第3図は、スヌープ・ビジー検出回路の回路ダイアグラムである。
第4図は、修正済みキャッシュ・ラインへのヒットがある場合のメモリ読取りのタイミング・ダイアグラムである。
第5図は、共用または排他的キャッシュ・ラインへのヒットがある場合のメモリ読取りのタイミング・ダイアグラムである。
詳細な説明
多重プロセッサのローカル・バスのキャッシュ・コヒーレンシ・プロトコル、およびコンピュータ・システムの実施について記述する。キャッシュ・コヒーレンシ・プロトコルは、ローカル・バスに接続された複数のキャッシュ装置が、システム・メモリの読取りおよび書込み中にコヒーレンシを維持することができる方法を提供する。
後述するキャッシュ・コヒーレンシ・プロトコルは、多重プロセッサ・コンピュータ・システムに組み込まれる。このコンピュータ・システムは、複数のキャッシュ・プロセッサおよびシステム・メモリ装置に接続されたローカル・バスを含む。このコンピュータ・システムの一実施例では、ローカル・バスはPCIバスである。
任意の数のキャッシュ・プロセッサおよびシステム・メモリ装置を、ローカル・バスに接続することができる。一実施例では、キャッシュ・プロセッサは内部キャッシュを含む。代替実施例では、キャッシュ・プロセッサは外部キャッシュに接続される。
キャッシュ・コヒーレンシ・プロトコルを利用するコンピュータ・システムおよびその方法について、以下にさらに詳細に記述する。
第2図は、コンピュータ・システムの一実施例を図示するブロック・ダイアグラムである。第2図に示すシステムは、PCIバス200に接続されたキャッシュ・コンプレックス210および220を含む。一実施例では、キャッシュ・コンプレックス210および220は、第1図のキャッシュ・コンプレックス140に示すように、キャッシュおよびPCIブリッジに接続されたプロセッサを個々に含む。キャッシュ・コンプレックスの代替実施例としては、PCIバス200へのただ1つのインタフェースで部分的に互いに接続された2つのプロセッサ、内部キャッシュを備えた1つのプロセッサ、および単にキャッシュ・コントローラおよびPCIインタフェース論理を備えたキャッシュなどがある。
コンピュータ・システムの一実施例では、各キャッシュ・コンプレックス210および220内のキャッシュは、MESIプロトコルを使用することによってコヒーレンシを維持する。代替実施例としては、様々なコヒーレンシ・プロトコルを利用する、ライトスルー・キャッシュ、ライトバック・キャッシュ、および書込み据置きキャッシュなどがある。
第2図に図示するバスマスタ270は、PCIバス200に接続され、メモリ250からの読取りまたはこれへの書込みを開始することができる、任意のバス・エージェントを表す。バスマスタ270の一実施例は、キャッシュ・コンプレックス210および220と同様のキャッシュ・コンプレックスである。代替実施例としては、プロセッサ、グラフィックス・コントローラ、ローカル・エリア・ネットワーク(LAN)コントローラ、またはメモリに記憶されたデータの処理が可能なその他の周辺装置などであることがある。
メモリ・トランザクションは、バスマスタ270がメモリ250に記憶されたデータ要素に作用しようとする時に、バスマスタ270によって開始される。バスマスタ270は、このデータ要素に関連づけられたアドレスをPCIバス200上でアサートすることによって、トランザクションを開始する。キャッシュ・コンプレックス210および220はそれぞれ、各キャッシュ内のデータ要素を探索することによってトランザクションをスヌープする。キャッシュ・コンプレックス210は、スヌープすべきアドレスを受け取った時から、そのスヌープを完了して「ヒット」を表示するかどうかを決定する時まで、SBSY(1)#線272上で活性信号をアサートする。この時間枠以外の時は、SBSY(1)#は、非活性状態になる。同様に、キャッシュ・コンプレックス220は、SBSY(2)#線274上で活性信号をアサートする。キャッシュ・コンプレックス210または220のどちらかが、このデータ要素のコピーを含んでいれば、キャッシュ「ヒット」は存在している。
キャッシュ・ヒットが生じ、そのキャッシュ内のデータ要素が修正済み状態にある場合は、そのキャッシュ・コンプレックスは、線266(SBO#と記してある)上で活性信号をアサートする。そのキャッシュ・コンプレックスは、スヌープサイクルが完了した(SDONEが活性状態になる)ことを検出するまで、SBO#信号をアサートしなければならない。本発明の一実施例では、SBO#266は、持続性トライステート線である。持続性トライステート線は、一度に1つの装置のみによって駆動されなければならない。この線は、最初に活性状態にされ、続いて少なくともその1クロック・サイクルの間、非活性状態にされる。プルアップにより、この線は、再び活性状態になるまで非活性状態の値を持続することができる。キャッシュ・コンプレックス210または220のどちらか一方が、この線の持続値を超えてSBO#266線上で信号をアサートすることができる。修正済みラインへのヒットを示さないキャッシュ・コンプレックスは、SBO#266線を活性状態にも非活性状態にもしないことになる。別の実施例では、SBO#線266は通常のトライステート線である。代替実施例には、複数の装置によって駆動されるように設計された、その他の形の共用信号線が含まれる。修正済み状態は、ただ1つのキャッシュのみが、データ要素の最新コピーを含むように定義される。したがって、所与のトランザクション中に、ただ1つのキャッシュ・コンプレックス210または220が、SBO#線266上で信号をアサートする。
本発明の別の実施例では、1つまたは複数のキャッシュ・コンプレックス210および220は、ライトスルー・キャッシュ・コヒーレンシ・プロトコルを利用する。ライトスルー・キャッシュは、常にメモリ250中のデータ要素の最新バージョンを含むので、SBO#線266を駆動しない。
メモリ250は、PCIバス200に接続される。メモリ250の一実施例は、動的ランダム・アクセス・メモリ(DRAM)、およびPCIバスとのインタフェースをとるメモリ・コントローラからなる。代替実施例では、メモリ・コントローラは、同一のシリコン・チップ上でメモリアレイと合体している。メモリ250の代替実施例には、データ要素の記憶に使用される任意の既知のメモリ設計が含まれる。
メモリ250は、SBO#線266およびSDONE線262上の活性信号のアサートを検知する。SBO#信号266は活性状態で低レベルであるので、論理ゼロ(0)は、修正済みラインへのキャッシュ・ヒットが生じたことを示す。SDONE信号262は、理論高レベル信号であるので、論理1(1)は、キャッシュ・コンプレックス210および220がスヌープを完了したことを示す。以下は、メモリ250が検出する可能性のある状態を示す表である。
待機モードは、キャッシュ・コンプレックス210および220が現在スヌープ中であり、依然として終了していないことを示す。メモリ250は、待機モードを検出すると、スヌープの結果を待つ。
クリーン状態は、修正済みエントリへのキャッシュ・ヒットがなく、メモリの読取りまたは書込みトランザクションが進行可能であることを示す。クリーン状態は、異なる2つの方法で生じる得る。1つは、キャッシュ・コンプレックス210または220のどちらにもキャッシュ・ヒットがない場合である。もう1つは、キャッシュ・コンプレックス210または220のどちらか、またはその両方にキャッシュ・ヒットがあるが、そのヒットしたデータ要素が修正済み状態でない場合である。その代わりに、データ要素は、排他的状態、または共用状態のうちの1つのクリーン状態である。
ダーティ状態は、キャッシュ・コンプレックス210および220のうち1つにキャッシュ・ヒットがあり、そのヒットしたデータ要素が修正済みである、すなわちメモリ250中のデータ要素より新しいものであることを示す。メモリ250は、SBO#266信号およびSDONE262信号を介してダーティ状態を検出すると、線264上でSTOP#信号をアサートすることになる。このSTOP#信号はバスマスタ270で検出され、ダーティなデータ要素をメモリ250に書き戻すことができるようにメモリ・トランザクションが停止する。
一実施例では、1つまたは複数のキャッシュ・コンプレックス210および220は、ライトスルー・プロトコルを使用する。ライトスルー・キャッシュは、常に最新バージョンのデータ要素をメモリに保持しているので、STOP#を線264上にアサートしてメモリ・トランザクションを停止する理由がない。
キャッシュ・コンプレックス210および220がライトバック・プロトコルまたはMESIキャッシュ・コヒーレンシ・プロトコルを利用する実施例の場合は、キャッシュ・コンプレックス210および220は、メモリの読取り動作中に、SH#信号を線268上で駆動することがある。キャッシュ・コンプレックス210または220の1つをスヌープした結果、共用状態または排他的状態のデータ要素へのヒットがある場合は、そのキャッシュ・コンプレックスはSH#線268上で活性信号をアサートすることになる。一実施例では、SH#は活性状態で低レベルの信号であるので、論理ゼロ(0)は、共用または排他的ラインへのキャッシュ・ヒットがあることを示す。キャッシュ・コンプレックス210および220が両方とも共用状態のデータ要素を有する可能性があるので、SH#線268は、複数のソースによって駆動されることができる。一実施例では、SH#線268は、上記のSBO#信号線266に関連して説明したように、持続性トライステート信号である。代替実施例では、SH#信号線268は、複数の装置が共用信号を供給することを可能にする、その他の周知の設計の1つを使用して実施される。
バスマスタ270の一実施例は、ライトバック・プロトコルまたはMESIプロトコルを利用するキャッシュを含み、キャッシュ・コンプレックス210および220と同様に構築される。この実施例では、バスマスタ270は、メモリの読取りトランザクション中、SH#線268の状態を監視する。バスマスタ270は、SH#線268およびSDONE線262上で活性状態のアサートを検出した時に、メモリ250から読み取られているデータ要素が、キャッシュ・コンプレックス210または220の少なくとも1つにも位置することを識別する。したがって、バスマスタ270は、このデータ要素をメモリ250から受領した時にそのキャッシュ内で共用状態にするか、またはそのラインを有するキャッシュ・コンプレックスを無効状態に移行させる。バスマスタ270は、メモリ読取り動作中にSH#線268を監視するのみであるので、メモリ書込み動作中にSH#線268上で信号を駆動する能力はオプショナルである。したがって、代替実施例では、キャッシュ・コンプレックスは、メモリ書込み動作中にSH#268上で信号をアサートする。
一実施例では、キャッシュ・コンプレックス210および220内に含まれるキャッシュは、ライトスルー・キャッシュ・コヒーレンシ・プロトコルを利用する。ライトスルー・キャッシュは、共用状態または排他的状態のデータ要素を含む場合には、ライトバック・キャッシュ・コンプレックスと同様の方法でSH#信号268を駆動することになる。
前述のように、キャッシュ・コンプレックス210および220は、線272上で信号SBSY(1)#を、線274上で信号SBSY(2)#をアサートする。これらの信号は検出回路260に送られ、この回路は、線272および274上の信号が両方ともアサートされていない時を検出する。第3図は、検出回路260の回路概略図である。SBSY(1)#線272およびSBSY(2)#線274は、ANDゲート300に送られる。SBSY(1)#およびSBSY(2)#は、両方とも活性状態で低レベルであるので、論理ゼロ(0)の値は、キャッシュ・コンプレックス210または220が依然としてビジーであることを示す。線272および274が両方とも論理1(1)になり、キャッシュ・コンプレックス210および220が両方ともスヌープを完了したことが示されると、ANDゲート300が線322上で信号をアサートする。そしてこの信号は、PCIクロック324でクロックされるラッチ310に送られる。PCIバスのプロトコルは、PCIクロックごとの立ち上がりエッジと同期しているので、このラッチ310は同期のために利用される。信号322は、ラッチされる時に、SDONE線262上でアサートされる。そのとき、スヌープが完了したことを示すために、SDONE線262上の信号が、キャッシュ・コンプレックス210および220、メモリ250、ならびにバスマスタ270に送出される。
第4図は、修正済みラインへのキャッシュ・ヒットがある場合のメモリ読取りの一例を表すタイミング・ダイアグラムである。第4図の各信号は、PCIクロック400の立ち上がりエッジで活性状態である。したがって、各クロック周期を別個に検査して、関係のある信号のタイミングおよび同期を示す。
第4図のタイミング・ダイアグラムについては、第2図のコンピュータ・システムを参照して説明する。
第1PCIクロック・サイクル401中、FRAME#信号410は、バスマスタ270によって1クロック周期の間、低レベルにされて活性状態になる。これにより、メモリ250の読取りトランザクションが開始される。同時に、AD420上のアドレス421がバスマスタ270によってアサートされる。
次のクロック402中に、アドレス421は、キャッシュ・コンプレックス210および220、ならびにメモリ250で受け取られる。
クロック403中に、これらのキャッシュ・コンプレックスは、それらの各キャッシュ中でアドレス421を探索することによって、読取りトランザクション要求をスヌープする。第4図に示す実施例では、これらのキャッシュ・コンプレックスは、ライトバック・プロトコルまたはMESIコヒーレンシ・プロトコルを利用している。キャッシュ・コンプレックス210は、クロック403中にSBSY(1)#440を低レベルにしてアサートする。同時に、キャッシュ・コンプレックス220は、SBSY(2)#450をアサートする。信号IRDY#430もまたクロック403中に低レベルにされ、バスマスタがその時点で、要求されたデータをメモリ250から受け入れる準備ができていることを示す。
第4図に図示した実施例では、キャッシュ・コンプレックス210は、1クロック中にスヌープを完了する。このため、SBSY(1)#440は、クロック404中に高レベルにされる。これに対し、キャッシュ・コンプレックス220はスヌープに2クロックかかるので、SBSY(2)#450はクロック405中に高レベルにされる。
検出回路260は、SBSY(1)#440およびSBSY(2)#450が両方とも高レベルにされている時を検出し、クロック406中にSDONE470をアサートする。第4図に示す特定の実施例では、キャッシュ・コンプレックス220はアドレス421に関連づけられたデータ要素を含み、このデータ要素は修正済み状態にある。このため、クロック406で、キャッシュ・コンプレックス220は、SBSY(2)#がアサートされなくなった後のクロック・サイクル中に、低レベル信号をSBO#480上でアサートする。信号SBO#480は、キャッシュ・コンプレックス210または220のいずれかによっても低レベルにすることができるが、「修正済み」すなわちダーティ状態のデータを有することができるのは、キャッシュ・コンプレックス210または220のうちのただ1つのみであり、このため、ただ1つのキャッシュ・コンプレックスしか一時にSBO#信号480を供給することはできないことを想起されたい。またクロック406中に、メモリ250は、SBO#信号480およびSDONE信号470のアサートを同時に検出する。
SBO#信号480は、メモリ250がデータ要素の最新のコピーを含まないことを示すので、バスマスタ270とメモリ250の間の読取りは、予定通りには完了しない。その代わりに、バスマスタ270は、データ要素の最新バージョンを獲得する。
したがって、メモリ250は、クロック407中にSTOP#信号490をアサートして、バスマスタ270からのメモリ読取り要求を停止する。一実施例では、読取りトランザクションが停止されている時に、キャッシュ・コンプレックス220からの修正済みのデータ要素がメモリ250に書き込まれ、その後にバスマスタ270がメモリ250からの読取り要求を再開する。代替実施例では、キャッシュ・コンプレックス220からバスマスタ270にデータ要素の最新コピーを渡してメモリ250を更新するその他の方法を使用する。
第5図は、排他的または共用ラインへのヒットがある場合のメモリ読取りトランザクション要求のタイミング・ダイアグラムを示す図である。第2図のコンピュータ・システムを参照して、第5図のダイアグラムについて説明する。
バスマスタ270は、第4図と同様のステップを使用してメモリ読取りを要求する。したがって、第5図のタイミング・ダイアグラムのクロック501ないし505は、第4図のタイミング・ダイアグラムのクロック401ないし405と同一である。
第5図に示す実施例では、キャッシュ・コンプレックス220は、排他的状態でアドレス521に関連づけられたデータ要素を含む。排他的状態は、キャッシュ・コンプレックス220中のデータ要素が、メモリ250中に保持されるコピーと同じであることを示す。第5図のタイミング・ダイアグラムの外観は、キャッシュ・コンプレックス220内のデータ要素が共用状態にある場合と同様である。
クロック506中に、SDONE信号570がアサートされ、キャッシュ・コンプレックス210および220がスヌープを終了したことを表す。同時に、SH#560が、キャッシュ・コンプレックス220によってアサートされる、すなわち低レベルにされる。
バスマスタ270は、クロック507中に、SH#560およびSDONE570の同時アサートを検出する。本発明の一実施例では、バスマスタ270は、ライトバック・プロトコルまたはMESIコヒーレンシ・プロトコルを利用するキャッシュを含む。この実施例では、SH#560およびSDONE570の同時アサートは、メモリ250から読み取られたデータ要素をバスマスタのキャッシュ内で共用状態にすべきであるという、バスマスタ270に対する警告である。
第5図に示すトランザクションでは、第4図に示すトランザクションのように読取り要求を停止する必要はない。したがって、SBO#信号580およびSTOP#信号590はアサートされない。
本発明の代替実施例では、バスマスタ270はキャッシュを備えない。したがって、SH#信号560は、バスマスタ270によって監視されない。さらに別の実施例では、バスマスタ270は、共用状態を含まないコヒーレンシ・プロトコルを利用するキャッシュを含む。この場合も、バスマスタ270は、SH#信号560を監視することを要求されない。
以上のように、前述の詳細な説明では、ローカル周辺バスにわたって多重プロセッサ・システム中のキャッシュ・コヒーレンシを維持するコンピュータ・システムおよび方法について記述した。記述したコンピュータ・システムは、キャッシュ・コンプレックス間の連絡用に、PCIバス、またはその他のタイプのローカル・バスを利用することができる。このコンピュータ・システムは、複数のキャッシュ・コンプレックスを無限に含み、様々なキャッシュ・コヒーレンシ・プロトコルを利用することができる。さらに、記述したコンピュータ・システムは、ローカル・バスに接続された複数のシステム・メモリ装置を利用することができる。
記述した方法により、キャッシュ・コンプレックスは、ローカル・バスに接続された複数のキャッシュ・コンプレックスとシステム・メモリ装置の間のキャッシュ・コヒーレンシを維持することができる。
上記の明細書では、特定の例示的な実施例に関連づけて本発明について記述した。しかし、添付の請求の範囲に述べる、より広範な本発明の精神および範囲を逸脱することなく、様々な修正および変更を加えることができることは言うまでもない。したがって、本明細書および図面は、限定的なものではなく例示的なものと見なされたい。
Claims (2)
- ローカル・バスと;
前記ローカル・バスに接続され、少なくともそのうちの1つがライトバック・キャッシュである複数のキャッシュと;
前記ローカル・バスに接続されたメイン・メモリと;
前記ローカル・バスに接続された少なくとも1つのプロセッサと;
前記ローカル・バスに接続され、データ要素のアドレスを前記ローカル・バス上にアサートしてトランザクションを開始するバスマスタと;
前記複数のキャッシュそれぞれに直接接続された回路;とから構成され、
前記複数のキャッシュのうち1つのキャッシュが複数の信号を発生するように動作し、
上記複数の信号は、
前記データ要素がキャッシュに存在することに呼応して生成される共用信号と、
上記キャッシュが前記データ要素を探索中にアクティブになるスヌープ・ビジー信号とを含んでおり,
前記回路は前記複数のキャッシュのそれぞれから前記スヌープ・ビジー信号を受信すると共にこれに応答して、前記ローカル・バス上に終了信号を送信することを特徴とするコンピュータ・システム。 - コンピュータ・システムでローカル・バスに接続された、少なくとも1つのライトバック・キャッシュを含む複数のキャッシュを操作する方法であって、この方法は;
バスマスタがデータ要素のアドレスを前記ローカル・バス上にアサートしてトランザクションを開始するステップと;
前記複数のキャッシュのそれぞれで前記データ要素の探索を開始してスヌープ・オペレーションを実行するステップと;
前記データ要素が前記キャッシュで発見されたことに応答して、共用信号を前記複数のキャッシュのそれぞれから前記バスマスタに送信するステップと;
前記データ要素を探索している各キャッシュがスヌープ・ビジー信号をアサートするステップと;
検出回路が、前記複数のキャッシュからのスヌープ・ビジー信号を検知するステップと;
前記スヌープ・ビジー信号の状態に応答して、前記検出回路が前記ローカル・バス上にスヌープ終了(SDONE)信号を送信するステップと
からなることを特徴とする方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US40615395A | 1995-03-17 | 1995-03-17 | |
US08/406,153 | 1995-03-17 | ||
PCT/US1996/003614 WO1996029653A1 (en) | 1995-03-17 | 1996-03-15 | Multi-processing cache coherency protocol on a local bus |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11502345A JPH11502345A (ja) | 1999-02-23 |
JP3787155B2 true JP3787155B2 (ja) | 2006-06-21 |
Family
ID=23606754
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP52853096A Expired - Fee Related JP3787155B2 (ja) | 1995-03-17 | 1996-03-15 | ローカル・バス上の多重プロセッシング・キャッシュ・コヒーレンシ・プロトコル |
Country Status (7)
Country | Link |
---|---|
US (1) | US5802577A (ja) |
EP (1) | EP0815513B1 (ja) |
JP (1) | JP3787155B2 (ja) |
AU (1) | AU693334B2 (ja) |
DE (1) | DE69636452T2 (ja) |
MX (1) | MX9706592A (ja) |
WO (1) | WO1996029653A1 (ja) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5875469A (en) * | 1996-08-26 | 1999-02-23 | International Business Machines Corporation | Apparatus and method of snooping processors and look-aside caches |
JP3288261B2 (ja) * | 1997-06-19 | 2002-06-04 | 甲府日本電気株式会社 | キャッシュシステム |
US6081876A (en) * | 1997-09-22 | 2000-06-27 | Hewlett-Packard Company | Memory error containment in network cache environment via restricted access |
US5983024A (en) * | 1997-11-26 | 1999-11-09 | Honeywell, Inc. | Method and apparatus for robust data broadcast on a peripheral component interconnect bus |
US6289419B1 (en) * | 1998-03-06 | 2001-09-11 | Sharp Kabushiki Kaisha | Consistency control device merging updated memory blocks |
US6308255B1 (en) * | 1998-05-26 | 2001-10-23 | Advanced Micro Devices, Inc. | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system |
US6480952B2 (en) | 1998-05-26 | 2002-11-12 | Advanced Micro Devices, Inc. | Emulation coprocessor |
US6192453B1 (en) * | 1998-07-13 | 2001-02-20 | International Business Machines Corporation | Method and apparatus for executing unresolvable system bus operations |
US6604162B1 (en) | 2000-06-28 | 2003-08-05 | Intel Corporation | Snoop stall reduction on a microprocessor external bus |
GB0028353D0 (en) * | 2000-11-21 | 2001-01-03 | Aspex Technology Ltd | Improvements relating to digital data communications |
JP2002342162A (ja) * | 2001-05-14 | 2002-11-29 | Nec Corp | メモリアクセス制御方式及びホストブリッジ |
US6799247B1 (en) * | 2001-08-23 | 2004-09-28 | Cisco Technology, Inc. | Remote memory processor architecture |
US6983348B2 (en) * | 2002-01-24 | 2006-01-03 | Intel Corporation | Methods and apparatus for cache intervention |
US7100001B2 (en) * | 2002-01-24 | 2006-08-29 | Intel Corporation | Methods and apparatus for cache intervention |
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 |
US7409503B2 (en) * | 2004-01-13 | 2008-08-05 | Hewlett-Packard Development Company, L.P. | Register file systems and methods for employing speculative fills |
US8301844B2 (en) * | 2004-01-13 | 2012-10-30 | Hewlett-Packard Development Company, L.P. | Consistency evaluation of program execution across at least one memory barrier |
US7376794B2 (en) * | 2004-01-13 | 2008-05-20 | Hewlett-Packard Development Company, L.P. | Coherent signal in a multi-processor system |
US7406565B2 (en) * | 2004-01-13 | 2008-07-29 | Hewlett-Packard Development Company, L.P. | Multi-processor systems and methods for backup for non-coherent speculative fills |
US7409500B2 (en) * | 2004-01-13 | 2008-08-05 | Hewlett-Packard Development Company, L.P. | Systems and methods for employing speculative fills |
US7380107B2 (en) * | 2004-01-13 | 2008-05-27 | Hewlett-Packard Development Company, L.P. | Multi-processor system utilizing concurrent speculative source request and system source request in response to cache miss |
US8281079B2 (en) * | 2004-01-13 | 2012-10-02 | Hewlett-Packard Development Company, L.P. | Multi-processor system receiving input from a pre-fetch buffer |
US7383409B2 (en) | 2004-01-13 | 2008-06-03 | Hewlett-Packard Development Company, L.P. | Cache systems and methods for employing speculative fills |
US7340565B2 (en) * | 2004-01-13 | 2008-03-04 | Hewlett-Packard Development Company, L.P. | Source request arbitration |
US7360069B2 (en) * | 2004-01-13 | 2008-04-15 | Hewlett-Packard Development Company, L.P. | Systems and methods for executing across at least one memory barrier employing speculative fills |
US7856534B2 (en) | 2004-01-15 | 2010-12-21 | Hewlett-Packard Development Company, L.P. | Transaction references for requests in a multi-processor network |
US7240165B2 (en) * | 2004-01-15 | 2007-07-03 | Hewlett-Packard Development Company, L.P. | System and method for providing parallel data requests |
US7962696B2 (en) * | 2004-01-15 | 2011-06-14 | Hewlett-Packard Development Company, L.P. | System and method for updating owner predictors |
US7769959B2 (en) * | 2004-01-20 | 2010-08-03 | Hewlett-Packard Development Company, L.P. | System and method to facilitate ordering point migration to memory |
US8145847B2 (en) * | 2004-01-20 | 2012-03-27 | Hewlett-Packard Development Company, L.P. | Cache coherency protocol with ordering points |
US7149852B2 (en) * | 2004-01-20 | 2006-12-12 | Hewlett Packard Development Company, Lp. | System and method for blocking data responses |
US7620696B2 (en) * | 2004-01-20 | 2009-11-17 | Hewlett-Packard Development Company, L.P. | System and method for conflict responses in a cache coherency protocol |
US7177987B2 (en) * | 2004-01-20 | 2007-02-13 | Hewlett-Packard Development Company, L.P. | System and method for responses between different cache coherency protocols |
US8468308B2 (en) * | 2004-01-20 | 2013-06-18 | Hewlett-Packard Development Company, L.P. | System and method for non-migratory requests in a cache coherency protocol |
US7395374B2 (en) * | 2004-01-20 | 2008-07-01 | Hewlett-Packard Company, L.P. | System and method for conflict responses in a cache coherency protocol with ordering point migration |
US8176259B2 (en) * | 2004-01-20 | 2012-05-08 | Hewlett-Packard Development Company, L.P. | System and method for resolving transactions in a cache coherency protocol |
US7143245B2 (en) * | 2004-01-20 | 2006-11-28 | Hewlett-Packard Development Company, L.P. | System and method for read migratory optimization in a cache coherency protocol |
US8090914B2 (en) * | 2004-01-20 | 2012-01-03 | Hewlett-Packard Development Company, L.P. | System and method for creating ordering points |
US7818391B2 (en) * | 2004-01-20 | 2010-10-19 | Hewlett-Packard Development Company, L.P. | System and method to facilitate ordering point migration |
US20050160238A1 (en) * | 2004-01-20 | 2005-07-21 | Steely Simon C.Jr. | System and method for conflict responses in a cache coherency protocol with ordering point migration |
CN101065735A (zh) * | 2004-11-24 | 2007-10-31 | 皇家飞利浦电子股份有限公司 | 本地存储器数据的一致性高速缓存 |
US9477600B2 (en) | 2011-08-08 | 2016-10-25 | Arm Limited | Apparatus and method for shared cache control including cache lines selectively operable in inclusive or non-inclusive mode |
Family Cites Families (8)
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 |
DE4037332C2 (de) * | 1990-11-23 | 1995-06-29 | Siemens Nixdorf Inf Syst | Verfahren zur Fehlerüberwachung der Datenkonsistenz in einem Datenverarbeitungssystem und Schaltungsanordnung zur Durchführung des Verfahrens |
GB2256512B (en) * | 1991-06-04 | 1995-03-15 | Intel Corp | Second level cache controller unit and system |
US5293603A (en) * | 1991-06-04 | 1994-03-08 | Intel Corporation | Cache subsystem for microprocessor based computer system with synchronous and asynchronous data path |
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 |
US5426765A (en) * | 1991-08-30 | 1995-06-20 | Compaq Computer Corporation | Multiprocessor cache abitration |
US5301298A (en) * | 1991-10-11 | 1994-04-05 | Intel Corporation | Processor for multiple cache coherent protocols |
US5485592A (en) * | 1992-04-07 | 1996-01-16 | Video Technology Computers, Ltd. | Write back cache controller method and apparatus for use in a system having a CPU with internal cache memory |
-
1996
- 1996-03-15 EP EP96907206A patent/EP0815513B1/en not_active Expired - Lifetime
- 1996-03-15 WO PCT/US1996/003614 patent/WO1996029653A1/en active IP Right Grant
- 1996-03-15 AU AU50946/96A patent/AU693334B2/en not_active Ceased
- 1996-03-15 MX MX9706592A patent/MX9706592A/es unknown
- 1996-03-15 DE DE69636452T patent/DE69636452T2/de not_active Expired - Fee Related
- 1996-03-15 JP JP52853096A patent/JP3787155B2/ja not_active Expired - Fee Related
-
1997
- 1997-05-14 US US08/856,045 patent/US5802577A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
WO1996029653A1 (en) | 1996-09-26 |
EP0815513A4 (en) | 1999-08-04 |
EP0815513A1 (en) | 1998-01-07 |
JPH11502345A (ja) | 1999-02-23 |
DE69636452T2 (de) | 2007-03-29 |
AU693334B2 (en) | 1998-06-25 |
AU5094696A (en) | 1996-10-08 |
MX9706592A (es) | 1997-11-29 |
DE69636452D1 (de) | 2006-09-28 |
EP0815513B1 (en) | 2006-08-16 |
US5802577A (en) | 1998-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3787155B2 (ja) | ローカル・バス上の多重プロセッシング・キャッシュ・コヒーレンシ・プロトコル | |
JP3999821B2 (ja) | データ処理システム内でバス仲裁プロトコルを実行する方法および装置 | |
US7100001B2 (en) | Methods and apparatus for cache intervention | |
US7062613B2 (en) | Methods and apparatus for cache intervention | |
US5774700A (en) | Method and apparatus for determining the timing of snoop windows in a pipelined bus | |
US6405271B1 (en) | Data flow control mechanism for a bus supporting two-and three-agent transactions | |
US5353415A (en) | Method and apparatus for concurrency of bus operations | |
US5909699A (en) | Method and apparatus for supporting read, write, and invalidation operations to memory which maintain cache consistency | |
US5426765A (en) | Multiprocessor cache abitration | |
US5787486A (en) | Bus protocol for locked cycle cache hit | |
KR100371845B1 (ko) | 데이타처리시스템 | |
US6775748B2 (en) | Methods and apparatus for transferring cache block ownership | |
US5778431A (en) | System and apparatus for partially flushing cache memory | |
WO1994008297A9 (en) | Method and apparatus for concurrency of bus operations | |
US5829027A (en) | Removable processor board having first, second and third level cache system for use in a multiprocessor computer system | |
JP3723700B2 (ja) | プロセッサ・インターフェース・バスを通じてデータを転送する方法および装置 | |
US5961621A (en) | Mechanism for efficiently processing deferred order-dependent memory access transactions in a pipelined system | |
US6601145B2 (en) | Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers that uses dynamic hardware/software controls | |
US20040193809A1 (en) | Reducing latency of a snoop tenure | |
JP3202943B2 (ja) | 処理装置及びルックアサイド・キャッシュをスヌープする改善された装置及び方法 | |
US5699540A (en) | Pseudo-concurrent access to a cached shared resource | |
US5809534A (en) | Performing a write cycle to memory in a multi-processor system | |
US6546468B2 (en) | Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers performing directory update | |
US20020129209A1 (en) | Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers | |
KR100248630B1 (ko) | 로컬버스의 스누프 단계 제어장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051025 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060117 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060307 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060324 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100331 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100331 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110331 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |