(57)【特許請求の範囲】
【請求項１】
ローカル・バスと；
前記ローカル・バスに接続され、少なくともそのうちの１つがライトバック・キャッシュである複数のキャッシュと；
前記ローカル・バスに接続されたメイン・メモリと；
前記ローカル・バスに接続された少なくとも１つのプロセッサと；
前記ローカル・バスに接続され、データ要素のアドレスを前記ローカル・バス上にアサートしてトランザクションを開始するバスマスタと；
前記複数のキャッシュそれぞれに直接接続された回路；とから構成され、
前記複数のキャッシュのうち１つのキャッシュが複数の信号を発生するように動作し、
上記複数の信号は、
前記データ要素がキャッシュに存在することに呼応して生成される共用信号と、
上記キャッシュが前記データ要素を探索中にアクティブになるスヌープ・ビジー信号とを含んでおり，
前記回路は前記複数のキャッシュのそれぞれから前記スヌープ・ビジー信号を受信すると共にこれに応答して、前記ローカル・バス上に終了信号を送信することを特徴とするコンピュータ・システム。
【請求項２】
コンピュータ・システムでローカル・バスに接続された、少なくとも１つのライトバック・キャッシュを含む複数のキャッシュを操作する方法であって、この方法は；
バスマスタがデータ要素のアドレスを前記ローカル・バス上にアサートしてトランザクションを開始するステップと；
前記複数のキャッシュのそれぞれで前記データ要素の探索を開始してスヌープ・オペレーションを実行するステップと；
前記データ要素が前記キャッシュで発見されたことに応答して、共用信号を前記複数のキャッシュのそれぞれから前記バスマスタに送信するステップと；
前記データ要素を探索している各キャッシュがスヌープ・ビジー信号をアサートするステップと；
検出回路が、前記複数のキャッシュからのスヌープ・ビジー信号を検知するステップと；
前記スヌープ・ビジー信号の状態に応答して、前記検出回路が前記ローカル・バス上にスヌープ終了（ＳＤＯＮＥ）信号を送信するステップと
からなることを特徴とする方法。
【発明の詳細な説明】
発明の分野
本発明は、コンピュータ・バスの分野に関する。さらに詳細には、本発明は、ローカル・プロセッサ・バス上で使用する多重プロセッシング・キャッシュ・コヒーレンシ・プロトコルに関する。
発明の背景
多くのコンピュータ・システムでは、プロセッサは、高速メモリ・バスを介して内部または外部キャッシュ、および場合によっては追加の外部メモリ装置に接続される。この局部的集合体は、プロセッサ／キャッシュ／メモリ「コンプレックス」と呼ばれることがある（以下では「キャッシュ・コンプレックス」と呼ぶ）。第１図は、このようなキャッシュ・コンプレックス１４０を１つ含む、従来の技術によるコンピュータ・システムを示す図である。
グラフィックス・コントローラ、ハード・ドライブ、アッドイン・ボードなどの周辺装置は、第１図に示すように、ローカル周辺バス１００上で連絡する。バス・ブリッジ１３０を使用して、ローカル周辺バス１００とプロセッサ１１０およびキャッシュ１２０との間の連絡を容易にすることができる。
多くのコンピュータ・システムでは、システム・メモリの一部または全体が、ローカル周辺バスに接続されることがある。これらのコンピュータ・システムでは、周辺装置すなわち「バス・エージェント」は、ローカル周辺バスにわたってメモリ１５０のトランザクションを要求する。各バス・エージェントは、メモリ１５０の読取りまたは書込みトランザクションを開始している間は、バスマスタと呼ばれる。このようなバスマスタ１６０の１つを第１図に表示する。
バスマスタがメモリのトランザクション要求を開始した時に、その他のキャッシュ・コンプレックスはこのトランザクションを監視すなわち「スヌープ」することがある。これは、このトランザクションによって改変される可能性があるメモリからのデータ要求のサブセットを、キャッシュ・コンプレックスが保持するためである。スヌープ処理中、このキャッシュ・コンプレックスは、バスマスタが要求するデータ要素を求めて、そのキャッシュを探索する。
キャッシュ・コンプレックスは、いくつかの周知のプロトコルの１つを使用することによって、コヒーレンシを維持する。このようなプロトコルの１つはライトスルー・プロトコルであり、この場合は、書込みサイクルは常にメモリまで書込みを行い、メモリが常に最新のデータ要素のコピーを有するようにする。もう１つのプロトコルはライトバック・プロトコルである。ライトバック・プロトコルは据置き式の書込みプロセスであり、キャッシュ中の各データ要素には、無効状態、排他的状態、または修正済み状態が割り当てられる。修正済み状態は、キャッシュ内のデータ要素が「ダーティ」である、すなわちメモリに記憶されたコピーと異なる（より新しい）ことを示す。排他的状態は、キャッシュ内のデータ要素が「クリーン」である、すなわちメモリに記憶されたコピーと同じであることを示す。無効状態は、キャッシュ中のデータ要素が割り振り解除されていることを示す。据置き書込みプロトコルのもう１つの実施例は「ＭＥＳＩ」プロトコルと呼ばれることがあり、キャッシュ内のデータ要素には、修正済み、排他的、共用、または無効の４つの状態が割り当てられる。ライトバック・プロトコルと同様に、修正済み状態はデータ要素がダーティであることを示し、排他的状態はデータ要素がクリーンであることを示す。共用状態は、データ要素がクリーンであり、かつそれが複数のキャッシュで発見されることを示す。以上のキャッシュ・コヒーレンシ・プロトコルおよびそれらの変形については、米国特許第４７５７９３０号で論じられている。
Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ製の高度プロセッサ・システムに特有の１タイプのバス・キャッシュ・コヒーレンシ・プロトコルの場合は、３つの信号を利用する。第１信号は、ダーティ・ラインへのキャッシュ・ヒットが生じた時にキャッシュ・コンプレックスによってアサートされる。この信号は、第１図にＳＢＯ＃（スヌープ・バック・オフ）として図示する。第２の信号は、キャッシュ・コンプレックスがスヌープを完了した時に、このキャッシュ・コンプレックスによってアサートされる。この信号はＳＤＯＮＥ（スヌープ終了）と示す。第３の信号は、メモリがダーティ・ラインへのキャッシュ・ヒットを検知した時に、このメモリによってアサートされる。メモリはＳＢＯ＃信号およびＳＤＯＮＥ信号を両方とも監視し、両信号が同時にアサートされた時に、第３の信号ＳＴＯＰ＃をアサートする。バスマスタ１６０はＳＴＯＰ＃信号を検出し、メモリ・トランザクションを停止させ、キャッシュ１２０からのダーティ・ラインがメモリ１５０中で更新されることができるようにする。
上記の３つの信号を利用するバス・プロトコルの一例は、周辺構成部品相互接続（ＰＣＩ）バスである。ＰＣＩのメモリ・トランザクション・プロトコルおよびキャッシュ・コヒーレンシ信号については、オレゴン州ＨｉｌｌｓｂｏｒｏのＰＣＩ  Ｓｐｅｃｉａｌ  Ｉｎｔｅｒｅｓｔ  Ｇｒｏｕｐ（ＳＩＧ）から出版されたＰＣＩ  Ｌｏｃａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，Ｒｅｖ．２．０に開示されている。
ＳＢＯ＃、ＳＤＯＮＥ、およびＳＴＯＰ＃は、単一キャッシュ・システム用に定義されているので、この３信号プロトコルは、通常は多重プロセッシング・システム中のキャッシュ・プロセッサとシステム・メモリとの間の通信には使用されない。
発明の概要
ローカル・バスを介して接続された複数のキャッシュ・コンプレックスの間でキャッシュ・コヒーレンシを維持するためのプロトコルを利用するコンピュータ・システムについて記述する。一実施例では、このコンピュータ・システムは、キャッシュ可能なメモリに記憶されたデータ要素、およびこのデータ要素に作用することを求めるトランザクション要求を開始するバスマスタを含む。ローカル・バスは、バスマスタとキャッシュ可能なメモリの間に接続され、トランザクション要求をバスマスタからキャッシュ可能なメモリに伝達する。複数のキャッシュ・コンプレックスもまた、ローカル・バスに接続される。各キャッシュ・コンプレックスは、キャッシュ可能なメモリからのデータ要素のサブセットを記憶するためのキャッシュ、キャッシュ制御論理、およびプロセッサを含む。
バスマスタがトランザクション要求を開始すると、キャッシュ・コンプレックスはその要求をスヌープし、要求されたデータ要素を各キャッシュ内で探索する。第１キャッシュ・コンプレックスは、データ要素を発見し、それがダーティであるとマークされている場合には、ダーティ信号をローカル・バス上でアサートする。第１キャッシュ・コンプレックスは、データ要素を発見し、それがクリーンであるとマークされている場合には、クリーン信号をローカル・バス上でアサートする。第１キャッシュ・コンプレックスがスヌープしている間は、第１ビジー信号がアサートされる。同様に、第２キャッシュ・コンプレックスは、第２ダーティ信号、第２クリーン信号、および第２ビジー信号をアサートする。
検出回路は、第１および第２ビジー信号のアサートを監視し、全てのビジー信号が同時にアサートされていないことを検出し、終了信号をキャッシュ可能なメモリに配送する。キャッシュ可能なメモリは、第１または第２ダーティ信号および終了信号の同時アサートが起こる時を検出し、その後バスマスタからのトランザクション要求を停止させる。
本発明のその他の特徴および利点は、添付の図面および以下の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
本発明について、限定的にではなく例示的に、添付の図面の図に図示する。図では、同じ参照番号は同様のエレメントを示す。
第１図は、従来技術のコンピュータ・システムのブロック・ダイアグラムである。
第２図は、本発明の一実施例による、多重プロセッシング・キャッシュ・コヒーレンシ・プロトコルを利用するコンピュータ・システムのブロック・ダイアグラムである。
第３図は、スヌープ・ビジー検出回路の回路ダイアグラムである。
第４図は、修正済みキャッシュ・ラインへのヒットがある場合のメモリ読取りのタイミング・ダイアグラムである。
第５図は、共用または排他的キャッシュ・ラインへのヒットがある場合のメモリ読取りのタイミング・ダイアグラムである。
詳細な説明
多重プロセッサのローカル・バスのキャッシュ・コヒーレンシ・プロトコル、およびコンピュータ・システムの実施について記述する。キャッシュ・コヒーレンシ・プロトコルは、ローカル・バスに接続された複数のキャッシュ装置が、システム・メモリの読取りおよび書込み中にコヒーレンシを維持することができる方法を提供する。
後述するキャッシュ・コヒーレンシ・プロトコルは、多重プロセッサ・コンピュータ・システムに組み込まれる。このコンピュータ・システムは、複数のキャッシュ・プロセッサおよびシステム・メモリ装置に接続されたローカル・バスを含む。このコンピュータ・システムの一実施例では、ローカル・バスはＰＣＩバスである。
任意の数のキャッシュ・プロセッサおよびシステム・メモリ装置を、ローカル・バスに接続することができる。一実施例では、キャッシュ・プロセッサは内部キャッシュを含む。代替実施例では、キャッシュ・プロセッサは外部キャッシュに接続される。
キャッシュ・コヒーレンシ・プロトコルを利用するコンピュータ・システムおよびその方法について、以下にさらに詳細に記述する。
第２図は、コンピュータ・システムの一実施例を図示するブロック・ダイアグラムである。第２図に示すシステムは、ＰＣＩバス２００に接続されたキャッシュ・コンプレックス２１０および２２０を含む。一実施例では、キャッシュ・コンプレックス２１０および２２０は、第１図のキャッシュ・コンプレックス１４０に示すように、キャッシュおよびＰＣＩブリッジに接続されたプロセッサを個々に含む。キャッシュ・コンプレックスの代替実施例としては、ＰＣＩバス２００へのただ１つのインタフェースで部分的に互いに接続された２つのプロセッサ、内部キャッシュを備えた１つのプロセッサ、および単にキャッシュ・コントローラおよびＰＣＩインタフェース論理を備えたキャッシュなどがある。
コンピュータ・システムの一実施例では、各キャッシュ・コンプレックス２１０および２２０内のキャッシュは、ＭＥＳＩプロトコルを使用することによってコヒーレンシを維持する。代替実施例としては、様々なコヒーレンシ・プロトコルを利用する、ライトスルー・キャッシュ、ライトバック・キャッシュ、および書込み据置きキャッシュなどがある。
第２図に図示するバスマスタ２７０は、ＰＣＩバス２００に接続され、メモリ２５０からの読取りまたはこれへの書込みを開始することができる、任意のバス・エージェントを表す。バスマスタ２７０の一実施例は、キャッシュ・コンプレックス２１０および２２０と同様のキャッシュ・コンプレックスである。代替実施例としては、プロセッサ、グラフィックス・コントローラ、ローカル・エリア・ネットワーク（ＬＡＮ）コントローラ、またはメモリに記憶されたデータの処理が可能なその他の周辺装置などであることがある。
メモリ・トランザクションは、バスマスタ２７０がメモリ２５０に記憶されたデータ要素に作用しようとする時に、バスマスタ２７０によって開始される。バスマスタ２７０は、このデータ要素に関連づけられたアドレスをＰＣＩバス２００上でアサートすることによって、トランザクションを開始する。キャッシュ・コンプレックス２１０および２２０はそれぞれ、各キャッシュ内のデータ要素を探索することによってトランザクションをスヌープする。キャッシュ・コンプレックス２１０は、スヌープすべきアドレスを受け取った時から、そのスヌープを完了して「ヒット」を表示するかどうかを決定する時まで、ＳＢＳＹ（１）＃線２７２上で活性信号をアサートする。この時間枠以外の時は、ＳＢＳＹ（１）＃は、非活性状態になる。同様に、キャッシュ・コンプレックス２２０は、ＳＢＳＹ（２）＃線２７４上で活性信号をアサートする。キャッシュ・コンプレックス２１０または２２０のどちらかが、このデータ要素のコピーを含んでいれば、キャッシュ「ヒット」は存在している。
キャッシュ・ヒットが生じ、そのキャッシュ内のデータ要素が修正済み状態にある場合は、そのキャッシュ・コンプレックスは、線２６６（ＳＢＯ＃と記してある）上で活性信号をアサートする。そのキャッシュ・コンプレックスは、スヌープサイクルが完了した（ＳＤＯＮＥが活性状態になる）ことを検出するまで、ＳＢＯ＃信号をアサートしなければならない。本発明の一実施例では、ＳＢＯ＃２６６は、持続性トライステート線である。持続性トライステート線は、一度に１つの装置のみによって駆動されなければならない。この線は、最初に活性状態にされ、続いて少なくともその１クロック・サイクルの間、非活性状態にされる。プルアップにより、この線は、再び活性状態になるまで非活性状態の値を持続することができる。キャッシュ・コンプレックス２１０または２２０のどちらか一方が、この線の持続値を超えてＳＢＯ＃２６６線上で信号をアサートすることができる。修正済みラインへのヒットを示さないキャッシュ・コンプレックスは、ＳＢＯ＃２６６線を活性状態にも非活性状態にもしないことになる。別の実施例では、ＳＢＯ＃線２６６は通常のトライステート線である。代替実施例には、複数の装置によって駆動されるように設計された、その他の形の共用信号線が含まれる。修正済み状態は、ただ１つのキャッシュのみが、データ要素の最新コピーを含むように定義される。したがって、所与のトランザクション中に、ただ１つのキャッシュ・コンプレックス２１０または２２０が、ＳＢＯ＃線２６６上で信号をアサートする。
本発明の別の実施例では、１つまたは複数のキャッシュ・コンプレックス２１０および２２０は、ライトスルー・キャッシュ・コヒーレンシ・プロトコルを利用する。ライトスルー・キャッシュは、常にメモリ２５０中のデータ要素の最新バージョンを含むので、ＳＢＯ＃線２６６を駆動しない。
メモリ２５０は、ＰＣＩバス２００に接続される。メモリ２５０の一実施例は、動的ランダム・アクセス・メモリ（ＤＲＡＭ）、およびＰＣＩバスとのインタフェースをとるメモリ・コントローラからなる。代替実施例では、メモリ・コントローラは、同一のシリコン・チップ上でメモリアレイと合体している。メモリ２５０の代替実施例には、データ要素の記憶に使用される任意の既知のメモリ設計が含まれる。
メモリ２５０は、ＳＢＯ＃線２６６およびＳＤＯＮＥ線２６２上の活性信号のアサートを検知する。ＳＢＯ＃信号２６６は活性状態で低レベルであるので、論理ゼロ（０）は、修正済みラインへのキャッシュ・ヒットが生じたことを示す。ＳＤＯＮＥ信号２６２は、理論高レベル信号であるので、論理１（１）は、キャッシュ・コンプレックス２１０および２２０がスヌープを完了したことを示す。以下は、メモリ２５０が検出する可能性のある状態を示す表である。
0003787155.tif 000002
待機モードは、キャッシュ・コンプレックス２１０および２２０が現在スヌープ中であり、依然として終了していないことを示す。メモリ２５０は、待機モードを検出すると、スヌープの結果を待つ。
クリーン状態は、修正済みエントリへのキャッシュ・ヒットがなく、メモリの読取りまたは書込みトランザクションが進行可能であることを示す。クリーン状態は、異なる２つの方法で生じる得る。１つは、キャッシュ・コンプレックス２１０または２２０のどちらにもキャッシュ・ヒットがない場合である。もう１つは、キャッシュ・コンプレックス２１０または２２０のどちらか、またはその両方にキャッシュ・ヒットがあるが、そのヒットしたデータ要素が修正済み状態でない場合である。その代わりに、データ要素は、排他的状態、または共用状態のうちの１つのクリーン状態である。
ダーティ状態は、キャッシュ・コンプレックス２１０および２２０のうち１つにキャッシュ・ヒットがあり、そのヒットしたデータ要素が修正済みである、すなわちメモリ２５０中のデータ要素より新しいものであることを示す。メモリ２５０は、ＳＢＯ＃２６６信号およびＳＤＯＮＥ２６２信号を介してダーティ状態を検出すると、線２６４上でＳＴＯＰ＃信号をアサートすることになる。このＳＴＯＰ＃信号はバスマスタ２７０で検出され、ダーティなデータ要素をメモリ２５０に書き戻すことができるようにメモリ・トランザクションが停止する。
一実施例では、１つまたは複数のキャッシュ・コンプレックス２１０および２２０は、ライトスルー・プロトコルを使用する。ライトスルー・キャッシュは、常に最新バージョンのデータ要素をメモリに保持しているので、ＳＴＯＰ＃を線２６４上にアサートしてメモリ・トランザクションを停止する理由がない。
キャッシュ・コンプレックス２１０および２２０がライトバック・プロトコルまたはＭＥＳＩキャッシュ・コヒーレンシ・プロトコルを利用する実施例の場合は、キャッシュ・コンプレックス２１０および２２０は、メモリの読取り動作中に、ＳＨ＃信号を線２６８上で駆動することがある。キャッシュ・コンプレックス２１０または２２０の１つをスヌープした結果、共用状態または排他的状態のデータ要素へのヒットがある場合は、そのキャッシュ・コンプレックスはＳＨ＃線２６８上で活性信号をアサートすることになる。一実施例では、ＳＨ＃は活性状態で低レベルの信号であるので、論理ゼロ（０）は、共用または排他的ラインへのキャッシュ・ヒットがあることを示す。キャッシュ・コンプレックス２１０および２２０が両方とも共用状態のデータ要素を有する可能性があるので、ＳＨ＃線２６８は、複数のソースによって駆動されることができる。一実施例では、ＳＨ＃線２６８は、上記のＳＢＯ＃信号線２６６に関連して説明したように、持続性トライステート信号である。代替実施例では、ＳＨ＃信号線２６８は、複数の装置が共用信号を供給することを可能にする、その他の周知の設計の１つを使用して実施される。
バスマスタ２７０の一実施例は、ライトバック・プロトコルまたはＭＥＳＩプロトコルを利用するキャッシュを含み、キャッシュ・コンプレックス２１０および２２０と同様に構築される。この実施例では、バスマスタ２７０は、メモリの読取りトランザクション中、ＳＨ＃線２６８の状態を監視する。バスマスタ２７０は、ＳＨ＃線２６８およびＳＤＯＮＥ線２６２上で活性状態のアサートを検出した時に、メモリ２５０から読み取られているデータ要素が、キャッシュ・コンプレックス２１０または２２０の少なくとも１つにも位置することを識別する。したがって、バスマスタ２７０は、このデータ要素をメモリ２５０から受領した時にそのキャッシュ内で共用状態にするか、またはそのラインを有するキャッシュ・コンプレックスを無効状態に移行させる。バスマスタ２７０は、メモリ読取り動作中にＳＨ＃線２６８を監視するのみであるので、メモリ書込み動作中にＳＨ＃線２６８上で信号を駆動する能力はオプショナルである。したがって、代替実施例では、キャッシュ・コンプレックスは、メモリ書込み動作中にＳＨ＃２６８上で信号をアサートする。
一実施例では、キャッシュ・コンプレックス２１０および２２０内に含まれるキャッシュは、ライトスルー・キャッシュ・コヒーレンシ・プロトコルを利用する。ライトスルー・キャッシュは、共用状態または排他的状態のデータ要素を含む場合には、ライトバック・キャッシュ・コンプレックスと同様の方法でＳＨ＃信号２６８を駆動することになる。
前述のように、キャッシュ・コンプレックス２１０および２２０は、線２７２上で信号ＳＢＳＹ（１）＃を、線２７４上で信号ＳＢＳＹ（２）＃をアサートする。これらの信号は検出回路２６０に送られ、この回路は、線２７２および２７４上の信号が両方ともアサートされていない時を検出する。第３図は、検出回路２６０の回路概略図である。ＳＢＳＹ（１）＃線２７２およびＳＢＳＹ（２）＃線２７４は、ＡＮＤゲート３００に送られる。ＳＢＳＹ（１）＃およびＳＢＳＹ（２）＃は、両方とも活性状態で低レベルであるので、論理ゼロ（０）の値は、キャッシュ・コンプレックス２１０または２２０が依然としてビジーであることを示す。線２７２および２７４が両方とも論理１（１）になり、キャッシュ・コンプレックス２１０および２２０が両方ともスヌープを完了したことが示されると、ＡＮＤゲート３００が線３２２上で信号をアサートする。そしてこの信号は、ＰＣＩクロック３２４でクロックされるラッチ３１０に送られる。ＰＣＩバスのプロトコルは、ＰＣＩクロックごとの立ち上がりエッジと同期しているので、このラッチ３１０は同期のために利用される。信号３２２は、ラッチされる時に、ＳＤＯＮＥ線２６２上でアサートされる。そのとき、スヌープが完了したことを示すために、ＳＤＯＮＥ線２６２上の信号が、キャッシュ・コンプレックス２１０および２２０、メモリ２５０、ならびにバスマスタ２７０に送出される。
第４図は、修正済みラインへのキャッシュ・ヒットがある場合のメモリ読取りの一例を表すタイミング・ダイアグラムである。第４図の各信号は、ＰＣＩクロック４００の立ち上がりエッジで活性状態である。したがって、各クロック周期を別個に検査して、関係のある信号のタイミングおよび同期を示す。
第４図のタイミング・ダイアグラムについては、第２図のコンピュータ・システムを参照して説明する。
第１ＰＣＩクロック・サイクル４０１中、ＦＲＡＭＥ＃信号４１０は、バスマスタ２７０によって１クロック周期の間、低レベルにされて活性状態になる。これにより、メモリ２５０の読取りトランザクションが開始される。同時に、ＡＤ４２０上のアドレス４２１がバスマスタ２７０によってアサートされる。
次のクロック４０２中に、アドレス４２１は、キャッシュ・コンプレックス２１０および２２０、ならびにメモリ２５０で受け取られる。
クロック４０３中に、これらのキャッシュ・コンプレックスは、それらの各キャッシュ中でアドレス４２１を探索することによって、読取りトランザクション要求をスヌープする。第４図に示す実施例では、これらのキャッシュ・コンプレックスは、ライトバック・プロトコルまたはＭＥＳＩコヒーレンシ・プロトコルを利用している。キャッシュ・コンプレックス２１０は、クロック４０３中にＳＢＳＹ（１）＃４４０を低レベルにしてアサートする。同時に、キャッシュ・コンプレックス２２０は、ＳＢＳＹ（２）＃４５０をアサートする。信号ＩＲＤＹ＃４３０もまたクロック４０３中に低レベルにされ、バスマスタがその時点で、要求されたデータをメモリ２５０から受け入れる準備ができていることを示す。
第４図に図示した実施例では、キャッシュ・コンプレックス２１０は、１クロック中にスヌープを完了する。このため、ＳＢＳＹ（１）＃４４０は、クロック４０４中に高レベルにされる。これに対し、キャッシュ・コンプレックス２２０はスヌープに２クロックかかるので、ＳＢＳＹ（２）＃４５０はクロック４０５中に高レベルにされる。
検出回路２６０は、ＳＢＳＹ（１）＃４４０およびＳＢＳＹ（２）＃４５０が両方とも高レベルにされている時を検出し、クロック４０６中にＳＤＯＮＥ４７０をアサートする。第４図に示す特定の実施例では、キャッシュ・コンプレックス２２０はアドレス４２１に関連づけられたデータ要素を含み、このデータ要素は修正済み状態にある。このため、クロック４０６で、キャッシュ・コンプレックス２２０は、ＳＢＳＹ（２）＃がアサートされなくなった後のクロック・サイクル中に、低レベル信号をＳＢＯ＃４８０上でアサートする。信号ＳＢＯ＃４８０は、キャッシュ・コンプレックス２１０または２２０のいずれかによっても低レベルにすることができるが、「修正済み」すなわちダーティ状態のデータを有することができるのは、キャッシュ・コンプレックス２１０または２２０のうちのただ１つのみであり、このため、ただ１つのキャッシュ・コンプレックスしか一時にＳＢＯ＃信号４８０を供給することはできないことを想起されたい。またクロック４０６中に、メモリ２５０は、ＳＢＯ＃信号４８０およびＳＤＯＮＥ信号４７０のアサートを同時に検出する。
ＳＢＯ＃信号４８０は、メモリ２５０がデータ要素の最新のコピーを含まないことを示すので、バスマスタ２７０とメモリ２５０の間の読取りは、予定通りには完了しない。その代わりに、バスマスタ２７０は、データ要素の最新バージョンを獲得する。
したがって、メモリ２５０は、クロック４０７中にＳＴＯＰ＃信号４９０をアサートして、バスマスタ２７０からのメモリ読取り要求を停止する。一実施例では、読取りトランザクションが停止されている時に、キャッシュ・コンプレックス２２０からの修正済みのデータ要素がメモリ２５０に書き込まれ、その後にバスマスタ２７０がメモリ２５０からの読取り要求を再開する。代替実施例では、キャッシュ・コンプレックス２２０からバスマスタ２７０にデータ要素の最新コピーを渡してメモリ２５０を更新するその他の方法を使用する。
第５図は、排他的または共用ラインへのヒットがある場合のメモリ読取りトランザクション要求のタイミング・ダイアグラムを示す図である。第２図のコンピュータ・システムを参照して、第５図のダイアグラムについて説明する。
バスマスタ２７０は、第４図と同様のステップを使用してメモリ読取りを要求する。したがって、第５図のタイミング・ダイアグラムのクロック５０１ないし５０５は、第４図のタイミング・ダイアグラムのクロック４０１ないし４０５と同一である。
第５図に示す実施例では、キャッシュ・コンプレックス２２０は、排他的状態でアドレス５２１に関連づけられたデータ要素を含む。排他的状態は、キャッシュ・コンプレックス２２０中のデータ要素が、メモリ２５０中に保持されるコピーと同じであることを示す。第５図のタイミング・ダイアグラムの外観は、キャッシュ・コンプレックス２２０内のデータ要素が共用状態にある場合と同様である。
クロック５０６中に、ＳＤＯＮＥ信号５７０がアサートされ、キャッシュ・コンプレックス２１０および２２０がスヌープを終了したことを表す。同時に、ＳＨ＃５６０が、キャッシュ・コンプレックス２２０によってアサートされる、すなわち低レベルにされる。
バスマスタ２７０は、クロック５０７中に、ＳＨ＃５６０およびＳＤＯＮＥ５７０の同時アサートを検出する。本発明の一実施例では、バスマスタ２７０は、ライトバック・プロトコルまたはＭＥＳＩコヒーレンシ・プロトコルを利用するキャッシュを含む。この実施例では、ＳＨ＃５６０およびＳＤＯＮＥ５７０の同時アサートは、メモリ２５０から読み取られたデータ要素をバスマスタのキャッシュ内で共用状態にすべきであるという、バスマスタ２７０に対する警告である。
第５図に示すトランザクションでは、第４図に示すトランザクションのように読取り要求を停止する必要はない。したがって、ＳＢＯ＃信号５８０およびＳＴＯＰ＃信号５９０はアサートされない。
本発明の代替実施例では、バスマスタ２７０はキャッシュを備えない。したがって、ＳＨ＃信号５６０は、バスマスタ２７０によって監視されない。さらに別の実施例では、バスマスタ２７０は、共用状態を含まないコヒーレンシ・プロトコルを利用するキャッシュを含む。この場合も、バスマスタ２７０は、ＳＨ＃信号５６０を監視することを要求されない。
以上のように、前述の詳細な説明では、ローカル周辺バスにわたって多重プロセッサ・システム中のキャッシュ・コヒーレンシを維持するコンピュータ・システムおよび方法について記述した。記述したコンピュータ・システムは、キャッシュ・コンプレックス間の連絡用に、ＰＣＩバス、またはその他のタイプのローカル・バスを利用することができる。このコンピュータ・システムは、複数のキャッシュ・コンプレックスを無限に含み、様々なキャッシュ・コヒーレンシ・プロトコルを利用することができる。さらに、記述したコンピュータ・システムは、ローカル・バスに接続された複数のシステム・メモリ装置を利用することができる。
記述した方法により、キャッシュ・コンプレックスは、ローカル・バスに接続された複数のキャッシュ・コンプレックスとシステム・メモリ装置の間のキャッシュ・コヒーレンシを維持することができる。
上記の明細書では、特定の例示的な実施例に関連づけて本発明について記述した。しかし、添付の請求の範囲に述べる、より広範な本発明の精神および範囲を逸脱することなく、様々な修正および変更を加えることができることは言うまでもない。したがって、本明細書および図面は、限定的なものではなく例示的なものと見なされたい。
【図１】
0003787155.tif 000003
【図２】
0003787155.tif 000004
【図３】
0003787155.tif 000005
【図４】
0003787155.tif 000006
【図５】
0003787155.tif 000007