JP3660679B2 - 高度パイプライン式バス・アーキテクチャ - Google Patents
高度パイプライン式バス・アーキテクチャ Download PDFInfo
- Publication number
- JP3660679B2 JP3660679B2 JP52350395A JP52350395A JP3660679B2 JP 3660679 B2 JP3660679 B2 JP 3660679B2 JP 52350395 A JP52350395 A JP 52350395A JP 52350395 A JP52350395 A JP 52350395A JP 3660679 B2 JP3660679 B2 JP 3660679B2
- Authority
- JP
- Japan
- Prior art keywords
- phase
- transaction
- bus
- data
- agent
- 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 - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- 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
これは、1994年5月1日に出願された米国特許出願第08/206382号の部分継続出願である。
発明の分野
本発明は全般的には、コンピュータ・システムの分野に関し、詳細には、マルチプロセッサ・コンピュータ・システムで使用すべき高度パイプライン式バス・アーキテクチャに関する。
関連技術
コンピュータ・システムは、マイクロプロセッサ、メモリ装置、入出力装置を含むが、それに限らないいくつかの構成要素(下記では一般に「エージェント」と呼ぶ)を備えることは常識である。このようなエージェントは通常、システム・バスを通じて情報を交換する。コンピュータ・システムの全体的な性能は、システム・バスのこの交換速度(すなわち、速度、効率など)に直接関係しているので、その効率を高めるために多くの試みがなされている。
システムの性能を向上させる従来の1つの方法はパイプライン化である。パイプライン化とは、前のトランザクションが完了する前に新しいバス・トランザクションを開始できるようにするプロセスである。このプロセスは、データの読取りまたは書込みを求める要求と実際の読取りトランザクションまたは書込みトランザクションとの間の時間遅延を他のトランザクションによって使用することができるため、有効であることが証明されている。このような時間遅延は、エージェントのそれぞれの異なる応答機能によってもたらされる。したがって、パイプライン化では、システム・バスがより効率的に使用され、より優れた全体的なシステム性能がもたらされる。
コンピュータ・システムの設計の様々な他の発展によって、全体的な性能は向上するが、システム・バスを介してデータを転送するプロセスは複雑になる。したがって、パイプライン化はサポートするのがかなり難しい。
そのような発展の一例は「多重処理」である。多重処理とは、それぞれ、他のマイクロプロセッサと同時にタスクを実行する複数のマイクロプロセッサを単一のコンピュータ・システムで使用することである。理論的には、“n”個のマイクロプロセッサを含むコンピュータ・システムは、“n”倍の数のタスクを実行することができ、したがって単一のプロセッサを含むコンピュータの“n”倍の速さで動作することができる。
多重処理の条件は、常に最新のデータ・バージョンがあり、各プロセッサが、タスクを実行する必要があるときには必ず各プロセッサに最新のデータ・バージョンが与えられることである。これを「データ・コヒーレンシ」と呼ぶ。しかし、データ・コヒーレンシを与えると、複数のトランザクションが未処理であるときに最新のデータ・バージョンがどこにあるかを判定することが困難であることが多いので、バス・トランザクションをパイプライン化することはますます困難になる。この問題に対する通常の対策は、データをキャッシュしているエージェントがそのデータをメモリに書き込むまでバス・トランザクションの実行を放棄することである。しかし、この対策は、最初にパイプライン化から得られていた利益をかなり失わせる。
システム・バスの性能を向上させるために個別に使用される他の方法は、マルチプロセッサ・システムにおける「プロセッサ順序付け」サポートである。プロセッサ順序付けは、コンピュータ・システム中の任意のプロセッサによって生成されるトランザクションがそのコンピュータ・システム中のすべてのエージェントによって同じ順序で観測されることを意味する。トランザクションを中止することができるパイプライン化環境では、プロセッサ順序付けを保証する1組のプロトコルを与えなければならない。
システム・バスの性能を向上させる他の方法は、デファード(deferred)・トランザクションを使用することである。デファード・トランザクションでは、要求時に完了できないトランザクションが、データを提供する責任を負うバス上の構成要素(すなわち、「応答側エージェント」)によって遅延させられる。データが得られると、応答側エージェントは、データを要求した構成要素(すなわち、「要求側エージェント」)を対象とする新しいトランザクションを開始する。これによって、バスが、まだ得られていないデータを求める要求側エージェントからの繰り返し失敗した要求で満たされるのが防止される。
デファード・トランザクションを使用してシステム・バスの効率を高めることは、コンピュータ・システムで複数のマイクロプロセッサを使用することと矛盾する。これは、トランザクションを遅延させている間に最新のデータ・バージョンの位置が移動する可能性があるからである。繰り返しになるが、コンピュータ・システムで複数のマイクロコンピュータを使用することは、バス・システムをより効率的に使用することと矛盾する。
コンピュータ・バスの効率を高めるために個別に使用されるこれらの方法と、マルチプロセッサ・システムに必要な条件との間の様々な矛盾のために、マイクロプロセッサ・コンピュータ・システムの全体的な効率の最大の潜在性が実現されたことはない。しかし、高度パイプライン式アーキテクチャを提供し、同時にMESIキャッシュ・コヒーレンシ、プロセッサ順序付け、デファード・トランザクション応答サポートを含む複数のマイクロプロセッサをサポートするシステム・バスを開発できる場合、最大の潜在性により近い状態で実行するコンピュータ・システムを達成することができる。
発明の簡単な概要
本発明は、単一処理コンピュータ・システム、または好ましくは多重処理コンピュータ・システム内で使用される様々な構成要素間でメッセージおよびデータを交換する方法およびシステムである。
本発明の一態様によれば、コンピュータ・システム内にシステム・バスが準備されている。システム・バスは、数組のデータ線、アドレス線、状況線、エラー線としてグループ化された多数の信号線を含む。トランザクションは、調停、要求、エラー、スヌープ、応答、データを含む6つのフェーズに分割される。各フェーズ間で実行されるクロック・サイクルの数と、各フェーズ中にデータを保持する信号線の数は、バス・システムを通じて複数のトランザクションをパイプライン化できるような値に設定される。また、同じ信号線がその機能を実行する必要がないかぎり、それぞれの異なるトランザクションのそれぞれの異なるフェーズを同時にバス上に置くことができる。
本発明の好ましい実施態様では、暗黙的書き戻し(Implicit Writeback)トランザクションを使用することによってデータ・コヒーレンシが維持される。データ転送用バスを使用し、ローカル・メモリ(「キャッシュ」)を有する装置(「エージェント」)は、バス・トランザクションの要求フェーズの後にキャッシュ・スヌープを実行することを要求され、スヌープ・フェーズ中にそのスヌープの結果を提供する。スヌープ中に、キャッシング・エージェントによって、要求されたデータの最新コピーが検出された場合、そのエージェントは、パイプラインを妨害せずに要求側エージェントにデータを提供しなければならない。また、同じデータを要求する他のトランザクションが確実に最新のバージョンを受け取るように、そのデータの所有権がトランザクション全体にわたって管理される。
本発明の好ましい実施態様では待ち時間の長いトランザクションもサポートされる。要求時に、トランザクションを所定の期間で完了することができないとき、データを提供するエージェント(「応答側エージェント」)は、パイプラインを妨害せずにトランザクションを遅延することができる。後でデータが得られたときに、応答側エージェントは、新しいトランザクションを開始し完了応答およびデータを最初の要求側エージェントに与えることができる。デファード・トランザクションの場合にプロセッサ順序付けを維持するために、同じエージェントからのバック・ツー・バック書込みトランザクションは、第1のトランザクションに対して実行されたスヌープの結果が得られるまで禁止される。
【図面の簡単な説明】
本発明の特徴および利点は、以下に述べる本発明の詳細な説明から明白になろう。
第1図は、システム・バスに沿ったトランザクションのパイプライン化を開始し制御する複数のエージェントを備えるバス・クラスタのブロック図である。
第2図は、第1図のシステム・バスによってサポートされる2つのパイプライン式トランザクションによって実行されたフェーズを示す一般的なタイミング位相図である。
第3図は、要求開始型「書込み」トランザクションをサポートして第1図のシステム・バス内で伝搬される情報信号の例示的なタイミング図である。
第4図は、応答開始型「読取り」トランザクションをサポートして第1図のシステム・バス内で伝搬される情報信号の例示的なタイミング図である。
第5図は、読取りトランザクション中に実行されている暗黙的書き戻しトランザクションをサポートして第1図のシステム・バス内で伝搬される情報信号の例示的なタイミング図である。
第6図は、書込みトランザクション中に実行されている暗黙的書き戻しトランザクションをサポートして第1図のシステム・バス内で伝搬される情報信号の例示的なタイミング図である。
第7図は、複数の部分キャッシュ線読取りトランザクションをサポートして第1図のシステム・バス内で伝搬される情報信号の例示的なタイミング図である。
第8図は、同じエージェントからの複数のキャッシュ線読取りトランザクションをサポートして第1図のシステム・バス内で伝搬される情報信号の例示的なタイミング図である。
第9図は、複数の部分キャッシュ線書込みトランザクションをサポートして第1図のシステム・バス内で伝搬される情報信号の例示的なタイミング図である。
第10図は、複数のキャッシュ線書込みトランザクションをサポートする第1のパイプライン式バスの例示的なタイミング図である。
第11図は、同じデータを修正するために所有権を要求する2つの順次バス・トランザクションをサポートして第1図のシステム・バス内で伝搬される情報信号の例示的なタイミング図である。
第12図は、デファード応答トランザクションに対するデファード応答をサポートして第1図のシステム・バス内で伝搬される情報信号の例示的なタイミング図である。
第13図は、デファード・トランザクションに対するスヌープ責任をサポートして第1図のシステム・バス内で伝搬される情報信号の例示的なタイミング図である。
第14図は、第1図のシステム・バスの状態を監視する際に使用すべき第1図のエージェントで実施されるインオーダー待ち行列を示すブロック図である。
第15図は、第1図の1つのマイクロプロセッサ内で使用されるバッファ構造の例示的なブロック図である。
発明の詳細な説明
データ・コヒーレンシを維持しパイプライン化を妨害せずにプロセッサ順序付けサポートを行うようにパイプライン式システム・バスを効率的に操作する方法および装置について説明する。下記の詳細な説明では、本発明を十分に説明するために様々なバス・トランザクションの多数の特定の詳細および例示的なタイミング図について述べる。しかし、当業者には、本発明が、このような特定の詳細を組み込まずに実施できるが、任意のコンピュータ・システムでの使用に広く応用できることが明らかになろう。
詳細な説明では、コンピュータ・システム内の構成要素のある種の特性を説明するためにいくつかの語が頻繁に使用される。これらの語は相互に排他的なものではない。「要求側エージェント」とは、通常はデータを読み取り、あるいは書き込むために要求を開始するエージェントである。「応答側エージェント」とは、データを提供することによって要求に応答するエージェントである。「キャッシング・エージェント」は、マイクロプロセッサなどキャッシュ機能を有するエージェントである。「スヌーピング・エージェント」とは、バス・トランザクションによりデータ要求に対して内部メモリ、通常は1つのキャッシング・エージェントをスヌープするエージェントである。より一般的な語には、通常は書込みトランザクションからデータを受け取る「受け取り側」エージェントと、システム・バスに沿ってデータを送る要求側エージェント、または応答側エージェント、またはスヌーピング・エージェントである「データ転送」エージェントが含まれる。
第1図は、4つのマイクロプロセッサ2、4、6、8と、システム・バス20に結合された入出力ブリッジ10およびメモリ制御装置12とを含むバス・クラスタ15のブロック図である。上記で識別したこれらの「エージェント」はそれぞれ、バスを介してデータまたはメッセージを送り、あるいは受け取ることができる。この実施形態では、入出力ブリッジ10は、システム・バス20と、表示装置23、英数字入力装置21、大容量記憶装置26、ハード・コピー装置27を含むがこれらに限らない、入出力バス22に結合されたいくつかの周辺装置との間の通信経路を形成する。この同じ実施形態では、メモリ制御装置12は1組の動的ランダム・アクセス・メモリ19(DRAM)に結合されているが、他のメモリ装置も予想される。さらに、システム・バス20と、このバス・クラスタが他のバス・クラスタ17aないし17m(“m”は任意である)と通信できるようにするクラスタ相互接続機構16に、クラスタ・ブリッジ14が結合される。
信号線およびシステム・バス20の論理機構は、電力消費量および電磁干渉(EMI)が低い、ゼロックス社(Xerox Corporation)から市販されているGunning Transceiver Logic(GTL)を使用して実施される。この技術を使用することによって、最大8つのエージェントをシステム・バス20に結合することができ、しかも最大100MHzのバス・クロック速度が維持される。様々な実施形態には、33.3MHz、44.4MHz、66.7MHzを含む様々なクロック速度が組み込まれている。ただし、他のクロック速度を使用することができる。これらのクロック速度によって、本発明は、様々なハードウェア機能を有するコンピュータ・システムに組み込むことができる。
第2図は、第1図のシステム・バスによってサポートされる2つのバス・トランザクションのフェーズを示すタイミング図である。各バス・トランザクションは、システム・クロック“CLK“29の選択された数のクロック・サイクル(“T1”、“T2”などと呼ばれる)によって適切に分離された6つのフェーズ、すなわち調停、要求、エラー、スヌープ、データ、応答を含む。これらのフェーズを必要に応じて様々なタイミング成分で構成できることが企図される。
調停フェーズ中には、残りのフェーズ中のバスの所有権が決定される。要求フェーズ中には、調停フェーズのシステム・バスを「所有する」エージェントは、要求側エージェントによって要求されたトランザクションを開始するのに必要な情報を他のエージェントへ提供する。この情報は、処理すべきデータがもしあれば、そのアドレスと、実行すべき動作を示すコードとを含む。要求フェーズ中にパリティ・エラーが検出されると、エラー・フェーズ中にエラー信号がアサートされる。スヌープ・フェーズ中には、システム上のキャッシング・エージェントによって実行されたスヌープの結果がアサートされる。データ・フェーズ中には、要求されたデータ転送が行われる。トランザクションがバス・パイプラインから除去され、応答フェーズ中に、そのトランザクションの結果がアサートされる。後述のように情報を供給するために各フェーズ中に様々な信号が使用される。
好ましい実施形態でサポートされるトランザクションのタイプには、(i)32バイトまたは4つの8バイト「チャンク(chunk)」からなるキャッシュ線の読取りおよび書込み、(ii)8バイトおよび16バイトの読取りおよび書込み(部分キャッシュ線読取りおよび書込みを呼ばれる)、(iii)キャッシュ線の読取り・無効化、(iv)キャッシュ線の無効化が含まれるが、これらに限らない。無効化トランザクションでは、他のキャッシング・エージェントが、要求されたデータを記憶しているキャッシュ線を「無効」状態にし(無効の説明については下記を参照されたい)、そのため、要求側エージェントは、それ自体のキャッシュ内の要求されたデータの専用所有権を得ることができる。これは本発明の一実施形態でサポートされるトランザクションであるが、他の実施形態は異なる1組のトランザクションを使用し、しかも本発明を組み込むことができる。
バス調停を実行する際、第1図の各エージェントは、4つの調停信号群、すなわち、BR[3:0]#信号、BPRI#信号、BNR#信号、LOCK#信号に依存する。BR[3:0]#信号はバス要求信号であり、バス所有権要求を受け取ったり、送ったりするために使用される。BPRI#信号は優先順位要求信号であり、エージェントが高優先順位のバス・エージェントからバス所有権要求を受け取っていることを示すために使用される。さらに、LOCK#信号はバス・ロック・トランザクション信号であり、あるエージェントによって、バス所有権が現在ロックされていることをすべての他のエージェントに知らせるために使用される。すなわち、エージェントがLOCK#信号をアサートしている間にバス所有権を変更することはできない。BNR#信号は、任意のエージェントによって、すべての他のエージェントが新しいバス・トランザクションをアサートすることを一時的に要求するためにアサートされる。
要求フェーズでは、新しいバス・トランザクション要求を作成するために使用される信号はADS#、REQ[4:0]#、A[35:3]#、AP[1:0]#、RP#である。ADS#をアサートすることは、要求フェーズ中の残りの信号が有効であることを示す。REQ[4:0]#は、バス・トランザクション中に出された要求のタイプを示す。A[35:3]#は、要求されたバス・トランザクションのターゲットとされるアドレスが、もしあれば、それを示す。RP#およびAP[1:0]#は、それぞれ信号REQ[4:0]#およびA[35:3]#に対するパリティ保護を行う。この応用例では、信号ADS#、REQ[4:0]#、A[35:3]#、AP[1:0]#、RP#は、ADS#がアサートされたときから2連続クロック・サイクルにわたって有効である。参照を容易にするために、第1のクロック・サイクルでアサートされる信号には下付き文字“a”が付加され、第2のクロック・サイクルでアサートされる信号には下付き文字“b”が付加される。たとえば、第1のクロック・サイクルでアサートされるREQ0#を“REQa0#”と呼ぶ。同様に、第2のクロック・サイクルでアサートされるREQ0#を“REQb0#”と呼ぶ。
エラー・フェーズでは、要求信号がパリティ・エラーを含む場合にはAERR#がアサートされる。AERR#がアサートされると、進行中のトランザクションが中止され、トランザクションを発行しているエージェントはそのトランザクションを調停フェーズから再開する必要がある。AERR#がアサートされた場合、すべてのエージェントがその調停状態を再同期させ、調停の失敗によって発生したパリティ・エラーのための「自動補正」を可能にする必要もある。
スヌープ・フェーズでは、好ましい実施形態でスヌープ結果を与えるために使用される信号はHIT#およびHITM#である。HIT#は、要求されたデータを共用状態または専用状態(下記で定義する)にし、要求されたデータを共用状態で要求側エージェント自体のキャッシュに入力すべきであることを要求側エージェントに示したあらゆるキャッシング・エージェントによってアサートされる。HITM#は、要求されたデータを修正済み状態(下記で定義する)にしたキャッシング・エージェントによってアサートされる。スヌープ・フェーズ中にHITM#がアサートされた場合、第6図および第7図に関して論じるようにデータ・コヒーレンシを保存できるように暗黙的書き戻しと呼ばれる特殊なトランザクションを行わなければならないことが要求側エージェント、スヌーピング・エージェント、メモリ・エージェントに通知される。
エージェントがスヌープを完了する追加時間を必要とする場合、HIT#とHITM#を同時にアサートし、2サイクルにわたってスヌープ・フェーズを遅延させることができる。これによって、パイプライン化が一時的に停止されるが、それをフラッシュさせる必要はなくなる。また、応答側エージェントは、必要なデータがただちには得られないと判定した場合、後でトランザクションを再開して要求されたデータを提供し、あるいは要求側エージェントにトランザクションを再試行させるオプションを、応答側エージェントに提供するDEFER#信号をアサートすることができる。
応答フェーズは、トランザクションの終わりと、応答/スヌープ開始データ・フェーズが開始したことを示す。信号RS[2:0]#は、応答フェーズが開始されたこととトランザクションの結果を示すコード化メッセージを送るために使用される。これらの「応答結果」を下記の表Aにリストする。
表A−応答結果
コード化メッセージ RS2# RS1# RS0#
アイドル 0 0 0
再試行 0 0 1
デファード 0 1 0
予約 0 1 1
ハード障害 1 0 0
データなし 1 0 1
暗黙的書き戻し 1 1 0
正常データ 1 1 1
応答結果は、RS[2:0]#がアサートされるまで「アイドル」のままである。「再試行」応答が可能なのは、スヌープ・フェーズ中に(非活動状態のHITM#を含む)DEFER#がアサートされたときだけである。再試行応答を用いる場合、応答エージェントは、トランザクションを再試行しなければならないことを要求側エージェントに知らせる。「ハード障害」は、トランザクションの障害を示す有効な応答である。要求側エージェントは、回復処置をとる必要がある。「データなし」応答が必要なのは、アドレスされたエージェントからデータが返されず、かつスヌープ・フェーズ中にDEFER#およびHITM#が非活動状態であるときである。「暗黙的書き戻し」は、スヌープ・フェーズ中にHITM#がアサートされたときに必要な応答である。スヌーピング・エージェントは、修正済み状態であることが分かったキャッシュ線を送るために必要である。メモリ・エージェントは、応答をドライブし修正済みキャッシュ線を受け入れるために必要である。「正常データ」応答が必要なのは、要求フェーズからのバス要求が読取り応答を必要とし、かつスヌープ・フェーズ中にHITM#とDEFER#が共にアサート解除されているときである。「正常データ」応答を用いる場合、応答側エージェントは、読取りデータを応答と共に送る必要がある。
データ・フェーズ中には、いくつかのバス線、すなわち、D[63:0]#、DEP[7:0]#、DRDY#、DBSY#に関連付けられたバス線がドライブされる。D[63:0]#はデータ信号であり、それぞれ、64本のデータ線を通して1データ・ビットを専用に伝搬する。DEP[7:0]#はパリティ信号であり、D[63:0]#と共に使用される。DRDY#およびDBSY#は、データ線D[63:0]#の使用を調和させ制御するために使用される信号である。すべてのデータ・フェーズ・バス信号、DBSY#、DRDY#、D[63:0]#、DEP[7:0]#は、データ転送エージェントによってドライブされる。クロック・サイクル“n”中に線D[63:0]#上にデータを置くには、次のトランザクション中にこのデータ線が空くことを示すDBSY#のアサート解除をデータ転送エージェントがクロック・サイクル“n−1”中に観測しなければならない。DRDY#がアサートされるのは、データ線D[63:0]#上に有効なデータが置かれたときである。また、要求開始型(「書込み」)トランザクションに関するデータ・フェーズの前のあるときに応答側エージェントによってバス信号“TRDY#”がアサートされ、応答側エージェントが要求側エージェントからデータを受け取る準備が完了したことが示される。TRDY#は、暗黙的書き戻しトランザクション中に修正済みデータを含むデータをスヌーピング・エージェントから受け取る準備ができたことを示すためにも使用される。
下記のプロトコル規則は、データ・フェーズ中のデータ転送を調和させるために使用される上記の制御信号の使用法を規定したものである。要求フェーズとデータ・フェーズとの間の相互作用は、あるトランザクションと次のトランザクションとの間の円滑な遷移を確保するために重要なので、要求フェーズに関するプロトコル規則についても論じる。
n番目の要求開始型(「書込み」)トランザクションに応答して、要求フェーズの第1サイクルから最低で3クロック・サイクル後および前のn−1番目のトランザクションの応答フェーズから最低で1クロック・サイクル後にトランザクションが転送すべき書込みデータをトランザクションが有するときに要求開始型TRDY#がアサートされる。応答側エージェントは、TRDY#信号をアサートすることに責任を負う。また、n番目のトランザクションに関するスヌープ結果がHITM#がアサートされたことを示す場合には必然的に、スヌープ開始型TRDY#をアサートしなければならない。スヌープ開始型TRDY#がアサートされたことは、応答側エージェントの暗黙的書き戻しデータを受け入れる準備が完了したことをスヌープ・エージェントに示す。
TRDY#をアサート解除できるのは、非活動状態のDBSY#および活動状態のTRDY#が1クロック・サイクルにわたって観測されたときである。TRDY#がアサートされたクロック・サイクルにDBSY#が非活動状態であることが観測され、次のクロック・サイクルが、前にTRDY#がアサートされてから3クロック・サイクル後である場合、1クロック・サイクル後にTRDY#をアサート解除することができる。応答結果が与えられるまでTRDY#をアサート解除する必要はない。ただし、書込みトランザクション中に暗黙的書き戻しが要求された場合はそうではなく、この場合、TRDY#をできるだけ早くアサート解除し、暗黙的書き戻しに必要な第2のアサートを可能にしなければならない。
n番目のトランザクションに関するスヌープ結果が与えられ、前のn−1番目のトランザクションに関する応答結果が与えられた後、n番目のトランザクションに関する応答結果(応答フェーズ)が与えられる。トランザクションが書込みデータを含む場合、応答フェーズを実行できるのは、TRDY#がアサートされ、非活動状態のDBSY#と共に観測された後だけである。トランザクションが書込みデータを含み、暗黙的書き戻しを伴う場合、応答フェーズを実行できるのは、TRDY#が2度にわたってアサートされ、非活動状態のDBSY#と共に観測された後である。応答結果が正常データ応答を示す場合、応答フェーズを実行できるのは、前のトランザクションのDBSY#アサートが非活動状態であることが観測された後だけである。
一般に、TRDY#に応答するエージェントは、TRDY#が活動状態であることが観測され、DBSY#が非活動状態であることが観測された後に、データを提供し、あるいはDBSY#を1クロック・サイクルにわたってアサートしなければならない。データがまだ得られない場合はDBSY#をアサートしてデータ線を「保持」することができる。データを提供するエージェントがTRDY#を観測した場合、それが、現在DBSY#をアサートしているエージェントであり、かつDBSY#がアサート解除されることを事前に予想することができる場合には、DBSY#がアサート解除されたことが観測される1クロック・サイクル前にそのデータの書込みを開始することができる。読取り転送は、応答フェーズがドライブされるのと同じクロック・サイクルで開始しなければならない。このプロトコルは、様々な動作の一連の例示的な図を介して示すことができる。
本発明の好ましい実施形態で使用されるシステム・バスは、MESIキャッシュ・プロトコルを使用することによってデータ・コヒーレンシを維持する。MESIキャッシュ・プロトコルでは、システム・バス上の各キャッシング・エージェントは4つの状態のうちの1つを、そのエージェントがキャッシュする各データ線に関連付ける必要がある。これらの状態とは、「修正済み」、「専用」、「共用」、「無効」であり、したがってMESIと呼ばれる。具体的には、修正済み状態のキャッシュ線は、データが、キャッシング・エージェントによって変更され、したがってメモリ・エージェントから得られるデータと異なるものとなっていることを示す。システムが正しく動作している場合、修正済み状態のこのデータは、最新のデータ・バージョンである。また、専用状態のキャッシュ線は、キャッシング・エージェントが、メモリ・エージェントに記憶されているデータと同じデータを有し、現在同じデータをキャッシュしている他のキャッシング・エージェントがないことを示す。共用状態のキャッシュ線は、そのキャッシング・エージェント、他のキャッシング・エージェント、メモリ・エージェントが現データ・バージョンを有することを示す。無効状態のキャッシュ線は、キャッシュ線内のデータが無効であることを示す。要求フェーズ中に提供された情報に基づいてスヌープを実行し、次いでそのスヌープ・フェーズの結果をアサートするよう各キャッシング・エージェントに要求することにより、システム・バス上のあらゆるトランザクションによってMESIキャッシュ・プロトコルを使用することができる。
第3図は、要求開始型データ転送または書込みトランザクションを示すタイミング図である。この図で、“Tn”はシステム・バス・クロック(“CLK”)のn番目のクロック・サイクルを示す。ADS#およびREQa0#は、トランザクション要求を開始するために使用される信号である。この応用例全体にわたって、すべての事象は、観測される1クロック・サイクル前にアサートされる。たとえば、ADS#は時間T2でローになり、あるいは観測されるものとして示されている。これは、ADS#がクロック・サイクルT1中に、あるエージェントによって論理ローとしてアサートされた結果である。この規約が使用されるのは、トランザクションがバス全体にわたって観測されるのに1クロック・サイクルかかるからである。円は、信号が観測されることを示し、これに対して、正方形はアサートを示すために使用される。
依然として第3図を参照すると分かるように、要求側エージェントが、システム・バスの制御を得て、時間T2での信号ADS#およびREQa0#のアサートによって示したようにトランザクションの要求フェーズ中に書込み要求を発行したときに、要求開始型トランザクションが開始する。要求側エージェントは次いで、時間T5でそのデータを受け取るエージェント、通常は、DRAMに結合されたメモリ制御装置によってTRDY#がアサートされるまで待機する。スヌープ・フェーズ中のクロック・サイクルT6には信号HITM#はアサートされないので、暗黙的書き戻しトランザクションは必要とされない。TRDY#がアサートされた後、要求側エージェントは、DBSY#がアサートされているかどうかを判定する。DBSY#は時間T4およびT5ではアサートされておらず、要求側エージェントは、データ・フェーズ中に、DRDY#をアサートし、同時に線D[63:0]#上にデータを置くことによって、クロック・サイクルT6でデータの供給を開始する。これはクロック・サイクルT7で観測される。
トランザクションが、単一の8バイト・チャンクを使用する部分キャッシュ線書込みであるため、次のクロック・サイクル中にはデータ線D[63:0]#が使用できるので、DBSY#をアサートする必要はない。トランザクションで複数の8バイト・チャンクが使用される場合、DBSY#はT6でアサートされ、最後のチャンクが与えられる1クロック・サイクル前までアサートされたままになる。TRDY#がアサートされ、非活動状態のDBSY#と共に観測された後、応答結果が書込みトランザクションの間アサートされる。
第4図は、データ転送を含む応答開始型(「読取り」)トランザクションのタイミング図である。読取りトランザクションが開始するのは、時間T2で示したバス・トランザクションの要求フェーズ中に、ADS#をアサートしREQa0#をアサート解除することによって読取り要求が出されたときである。読取り要求が出された後、要求側エージェントは、DRDY#がアサートされ、システム・バス上に有効なデータが置かれたことが示されるまで待機し、その後、そのデータの読取りを開始する。応答開始型トランザクション中にはTRDY#をアサートする必要はない。トランザクションが、2つの8バイト・チャンクを使用する部分キャッシュ線読取りなので、DBSY#はT8、すなわち第2のチャンクが与えられるクロック・サイクルの1クロック・サイクル前までアサートされない。読取りトランザクション中には、スヌープ結果が観測されDBSY#が非活動状態であることが観測されてから1クロック・サイクル後に応答結果がアサートされる。
第5図は、暗黙的書き戻しを使用するデータ転送を含む応答開始型トランザクションのタイミング図である。このトランザクションは、T2でADS#がアサートされREQa0#がアサート解除され、読取りトランザクションであることが示されたときに開始する。次いで、キャッシング・エージェントは、それ自体のキャッシュをスヌープし、要求された最新のデータ・バージョンを有することを検出すると、トランザクションのスヌープ・フェーズ中のT6にHITM#をアサートすることによって、そのキャッシング・エージェントがそのデータを所有していることを示す。スヌーピング・エージェントは次いで、要求側エージェントにデータを提供する責任を負う。HITM#がアサートされた後、応答側エージェントは、たとえ前にはそうする必要がなかった場合でも、TRDY#をアサートしキャッシング・エージェントからデータを受け取る責任を負う。これは、T7で行われT8で観測される。スヌーピング・エージェントは、TRDY#がアサートされたことを検出し、線D[63:0]#上にデータを置きDBSY#およびDRDY#をアサートすることによってデータの提供を開始する。この例のキャッシング・エージェントは1クロック・サイクルおきにしかデータ・チャンクを提供できないので、DRDY#は1クロック・サイクルおきにしかアサートされず、DBSY#は、T16で最後のデータ・チャンクが観測される1クロック・サイクル前にアサート解除されたことが観測される。要求結果は、クロック・サイクルT8でTRDY#がアサートされたことが観測されDBSY#がアサート解除されたことが観測された後、クロック・サイクルT9でアサートされ、T10で観測される。
第6図は、書込みトランザクション中に行われる暗黙的書き戻しを示す例示的なタイミング図である。書込みトランザクション中に暗黙的書き戻しを行うときには、2回のデータ転送が必要である。第1のデータ転送は、通常要求開始型書込みであり、第2のデータ転送は暗黙的書き戻しである。受け取り側エージェントは、通常はメモリ・エージェントであり、両方の書込みを受け取り、情報を1本のキャッシュ線としてマージし、このキャッシュ線がメモリに入力される。
時間T2で、ADS#およびREQa0#をアサートすることによって書込み要求が発行された後、応答側エージェントは、3クロック・サイクルが経過した後T5で第1のTRDY#をアサートする。T6で、暗黙的書き戻しが必要であることを示すHITM#が観測される。やはり受け取り側エージェントによって行われたこの第2のTRDY#アサートは、T6でスヌープ結果が観測された後、かつ2回のアサートを区別できるようにT6で第1のTRDY#がアサート解除された後に、T8で観測され、行われる。要求側エージェントは、T5で第1のTRDY#がアサートされた後、DRDY#およびDBSY#をアサートし線D[63:0]#上にデータを置くことによってデータの提供を開始する。スヌープ側エージェントは、T10でDBSY#をアサートしてデータを提供する意図を示す前に、T8でDBSY#がアサート解除され要求開始型データ転送が完了したことが示されたことを検出するまで待機しなければならない。T10でDBSY#がアサートされるが、データは実際には、T12でDRDY#がアサートされるまで提供されないことに留意されたい。スヌーピング・エージェントは、データを有さない場合、T10でDBSY#をアサートせず、データ転送は行われない。T10で、暗黙的書き戻し応答を示す応答結果がシステム・バス上に置かれる。
第7図は、定常状態で行われる複数の部分キャッシュ線読取りトランザクションを示すタイミング図である。各トランザクション中には1つのデータ・チャンクしか書き込まれないので、DBSY#はアサートされない。図で示したように、この定常状態では読取りを3クロック・サイクルおきに行うことができる。
第8図は、同じエージェントからバック・ツー・バックで行われる全キャッシュ線読取りの定常状態動作を示す。トランザクション1に関する応答およびデータ転送は、T8、すなわちスヌープ・フェーズから2クロック・サイクル後に行われる。データは、4連続2クロック・サイクル・タイム・フレームで送られる。DBSY#は、トランザクション1ではT8でアサートされ、T11、すなわち最後のデータ転送の前のクロック・サイクルまでアサートされたままになる。データが同じエージェントから提供されている場合にのみ、中間ターンアラウンド・サイクルなしで連続データ転送を行うことができる。これは、エージェントが、クロック・サイクルT11およびT15でDBSY#がアサート解除されることを予想し、クロック・サイクルを失わずに次のトランザクションのデータ・フェーズを開始することができるためである。TRDY#がアサートされないのは、読取りトランザクションがあり、かつスヌープ結果が、暗黙的書き戻しデータ転送がないことを示すからである。信号RS[2:0]#がアサートされることによって示される応答フェーズと同じクロック・サイクルに第1のデータ転送を行わなければならないことに留意されたい。現トランザクションに関する応答が「正常データ」または暗黙的書き戻し応答である場合、この応答をドライブできるようにするには、前のトランザクションに関するDBSY#をアサート解除しておかなければならない。
第9図は、フルスピード部分キャッシュ書込みトランザクションを含むシステム・バスの定常状態動作を示す。第1のトランザクションは、アイドル状態のシステム・バス上で行われ、第3図の簡単な書込みケースに類似している。TRDY#はT5、すなわちADS#およびREQ[4:0]#がアサート解除されてから3クロック後にアサートされる。T6で暗黙的書き戻しがないことを示す非活動状態のHITM#が観測された後、T8で応答結果がアサートされる。T5で、TRDY#が活動状態であることが観測され、DBSY#が非活動状態であることが観測される。したがって、DRDY#がアサートされることによって示されるようにT7でデータ転送を開始することができる。データ転送には1クロック・サイクルしかかからないので、DBSY#はアサートされない。第2のトランザクションに関するTRDY#は、第1のトランザクションに関する応答結果がサンプリングされるまで待機しなければならない。TRDY#は、応答結果が観測された後のクロック・サイクルでアサートされる。第2のトランザクションに関するスヌープ結果がT9で観測されたので、T11で応答をドライブすることができる。T10でTRDY#が観測されると共に、DBSY#がアサート解除され、T12でデータがドライブされる。
第10図は、2つのエージェントのみの間のデータ転送を含むフルスピード全キャッシュ線書込みトランザクションを含むバスの定常状態動作を示す。第1のトランザクションはアイドル状態のシステム・バス上で行われる。TRDY#はT6まで据え置かれる。応答結果は、T6で観測された非活動状態のHITM#が、暗黙的書き戻しがないことを示した後、T8でドライブすることができるが、この例ではT9でドライブされる。T6で、TRDY#が活動状態であることが観測され、DBSY#が非活動状態であることが観測される。したがって、DBSY#がアサートされることによって示されるように、T8でデータ転送を開始することができる。
RS[2:0]#とTRDY#が共に同じエージェントから得られたものである場合、応答結果がドライブされた後のクロック・サイクルで第2のトランザクションに関するTRDY#をドライブすることができる。同じエージェントが両方の要求開始型データ転送をドライブする際は、特殊な最適化を行うことができる。要求側エージェントは、T11で、DBSY#をアサート解除し、トランザクション2に関してアサートされたTRDY#をサンプリングし、トランザクション2に関するデータ転送を所有しているので、T12、すなわちDBSY#がアサート解除されてから1クロック後に次のデータ転送をドライブすることができる。T12で、データを受け取ったエージェントは、活動状態のTRDY#および非活動状態のDBSY#をサンプリングし、T12から開始するデータ転送を受け入れる。トランザクション2に関するスヌープ結果がT9で観測されたので、応答側エージェントはT12で自由に応答をドライブすることができる。
要求側エージェントによって待機状態が挿入されることはないことに留意されたい。この場合、最終的にバスのバック・エンドがフロント・エンドを抑圧するが、全バス帯域幅を達成することができる。一実施形態では、マイクロプロセッサは、ある種の例でそれが回避できる場合でも常に、書込みデータ転送間にターンアラウンド・サイクルを挿入する。
暗黙的書き戻しトランザクション中の2回のパイプライン式トランザクション間でデータ・コヒーレンシを維持するために、最初にトランザクションを要求したエージェント(すなわち、要求側エージェント)は、この第1のトランザクションのスヌープ・フェーズを観測した後にキャッシュ線のスヌープ責任を負う。また、要求側エージェントは常に、応答フェーズを観測し、スヌープ開始型転送の暗黙的書き戻しに、要求されているもの以外のデータが含まれるかどうかを判定する。たとえば、最初の要求が部分線読取りトランザクション、すなわちキャッシュ線全体の一部しか必要としないトランザクションである場合、要求側エージェントは、32バイトを含むキャッシュ線書き直しの第1の8バイト・チャンクから必要なデータを得る。最初の要求が線読取りトランザクションまたは線読取り無効化トランザクション(すべての他のキャッシング・エージェントにデータを無効状態にするよう通知するトランザクション)である場合、要求側エージェントは線全体を吸収する。最初の要求が線無効化トランザクションであり、この線が他のキャッシュ内で修正されている場合、要求側エージェントは、スヌープ開始型データ・フェーズで受け取った更新済みキャッシュ線で内部キャッシュ線を更新する。最初の線無効化トランザクションがデファード応答を受け取った場合、デファード応答のスヌープ・フェーズ中のHITM#は、データが返されることを示し、要求側エージェントはそのデータで内部キャッシュを更新する。要求側エージェントがキャッシュ線に対するスヌープ責任を受け入れ、ただちにその後のトランザクションに応答してその責任を放棄すると、暗黙的書き戻しを実行する前にキャッシュ線を1度だけ内部用途に使用することができる。
要求側エージェントは、読取り/書込みトランザクション中に他のエージェントにそのキャッシュをスヌープさせるだけでなく、要求側エージェント自体のキャッシュをスヌープすることができる。この自己スヌープ機能によって、要求側エージェントはそれ自体のトランザクション要求をスヌープし、スヌープ・フェーズ中にスヌープ結果を提示することができる。スヌープが要求側エージェントのキャッシュ中の「修正済み」キャッシュ線をヒットした場合、要求側エージェントはHITM#をアサートし、スヌープ開始型データ・フェーズの責任を負う。メモリ・エージェントは、自己スヌープ機能のための書き直しと通常のスヌープ機能のための暗黙的書き戻しを区別しない。いずれの場合も、アドレスされたメモリ・エージェントは、応答側エージェントのままとなり、暗黙的書き戻しも受け取り、それを書込みデータとマージする。
たとえば、要求側エージェントが、バス・ロック変数と呼ばれるある種のデータにアクセスすると、キャッシュ線は、バス・トランザクションを発行する前に内部キャッシュ・ロックアップを行う必要なしにバス・ロック・トランザクションの一部として内部キャッシュから取り出される。したがって、トランザクションでは自己スヌープ機能が必要である。自己スヌープ機能は、ページ・テーブル項目(すなわち、ページ属性)によって、アクセスされた変数がキャッシュ不能(キャッシュ・メモリに記憶すべきではないデータ)と定義されている場合にも必要である。この場合、内部キャッシュ・ロックアップは実行されずに、トランザクションがシステム・バスに発行される。ページ・テーブル・エイリアシングまたはその他の理由のために、キャッシュ線は依然としてその内部キャッシュに存在することができる。この場合、キャッシュ線は、バス・トランザクションの一部としてキャッシュから書き直される。
簡単に言えば、スヌーピング・エージェントとは、トランザクションのスヌープ・フェーズ中にHITM#をアサートするエージェントである。スヌーピング・エージェントは、暗黙的書き戻し中に2つのパイプライン式トランザクション間のデータ・コヒーレンシを維持するある種の責任も有する。HITM#をアサートする際、スヌーピング・エージェントはトランザクションの暗黙的書き戻しに対する責任を引き受ける。スヌーピング・エージェントは、メモリ・エージェントからのスヌープ開始型TRDY#アサートを待ち、メモリ・エージェントによる暗黙的書き戻し応答アサートに同期した活動状態のTRDY#(および非活動状態のDBSY#)から厳密に2クロックに渡ってDBSY#をアサートすることによって暗黙的書き戻しデータ転送を開始する。
TRDY#がスヌープ開始型のものであるか、それとも要求開始型のものであるかは、トランザクションを開始させた要求のタイプによって判定される。書込みトランザクションでは、第1のTRDY#アサートは常に書込みデータ転送を要求し(要求開始型データ転送)、任意選択で、第2のTRDY#アサートは暗黙的書き戻しデータ転送を要求する(スヌープ開始型データ転送)。スヌープされたトランザクションがキャッシュ線全体を書き込む場合、スヌーピング・エージェントは暗黙的書き戻しデータを送っても、あるいは送らなくてもよい。
最初にトランザクションの対象となり、通常はDRAMを制御するエージェントは、アドレスされるメモリ・エージェントと呼ばれる。アドレスされたメモリ・エージェントは、暗黙的書き戻し中に2つのパイプライン式トランザクション間のデータ・コヒーレンシを維持するある種の責任も負う。アドレスされたメモリ・エージェントは、スヌープ・フェーズ中に活動状態のHITM#を観測すると、応答側エージェントのままとなるが、暗黙的書き戻し応答に対する応答を変更する。トランザクションは、要求開始型データ転送(書込み)を含む場合、依然として、書込みデータ転送を開始できることを示すTRDY#のアサートに責任を負う。
スヌープされたトランザクションが要求開始型データ転送であり、スヌープ開始型データ転送(たとえば、修正済み線書き直し)を含む場合、トランザクションは2回のデータ転送を含む。要求開始型TRDY#に関するTRDY#のアサートおよびアサート解除が完了した後、メモリ・エージェントは、修正済み線書き直しを受け取る空きキャッシュ線バッファを確保した後、スヌープ開始型TRDY#をアサートする。メモリ・エージェントは、活動状態のTRDY#および非活動状態のDBSY#から厳密に2クロック・サイクルにわたって、エージェントの暗黙的書き戻しデータ転送に関するスヌーピング・エージェントからのDBSY#のアサートと同期した暗黙的書き戻し応答をドライブする。メモリ・エージェントは、書込みデータと書き直しキャッシュ線をマージする責任も負う。メモリ・エージェントは次いで、最新のキャッシュ線データでメイン・メモリを更新する。スヌープされたトランザクションがキャッシュ線全体を書き込む場合、暗黙的書き戻しデータはあっても、あるいはなくてもよい。DBSY#が活動状態のTRDY#および非活動状態のDBSY#から厳密に2サイクルにわたってアサートされない場合、暗黙的書き戻しデータはない。
第11図は、2つの順次(すなわち、バック・ツー・バック)パイプライン式トランザクションが同じデータ位置を要求する状況を示し、したがって、パイプラインが維持されている間データ・コヒーレンシがどのように維持されるかを示すタイミング図である。第1のバス・エージェント(“A1”)は、論理ローADS#をアサートすることによってクロック・サイクルT2で第1の線無効化トランザクションを開始する。A1がこのデータを修正するので、線無効化トランザクションは、システム上のすべての他のメモリ・エージェントに、このデータ位置を無効状態にするよう通知する。3サイクル後、第2のバス・エージェント(“A2”)が、やはりADS#上の論理ローによって示される同じアドレスを要求する。本発明を組み込んだシステム・バスの好ましい実施形態では、A1はこの第2の要求を観測し、この要求が、A1が第1のトランザクションで要求したのと同じデータ位置に関するものであると判定する。A1は、第1のトランザクションのスヌープ・フェーズの後にこのデータ位置の所有権を得るので、適当なスヌープ結果を与え、第2のトランザクションのスヌープ・フェーズ中にHITM#をアサートする。
第2のトランザクションのスヌープ・フェーズ中にHITM#をアサートすることによって、A2とシステム・バス上のメモリ・エージェントに、A1がデータ・フェーズ中に必要なデータを提供することが知らされる。第1のトランザクションの応答フェーズはクロック・サイクルT8中に実行され、第1のトランザクションが完了したことが示される。クロック・サイクルT11中に、A2は、TRDY#をアサートすることによって、アドレスされたデータを受け取る準備が完了したことを示す。2クロック・サイクル後、A1は、RS[2:0]#、DBSY#、D[63:0]#をアサートすることによってそのデータの提供を開始する。したがって、同じデータを要求する2つのパイプライン式トランザクションにわたってデータ・コヒーレンシが維持される。
本発明の好ましい実施形態では待ち時間の長いトランザクションもサポートされる。要求されたデータを提供する責任を負うが、要求時にはそうすることができないエージェントは、情報を含む要求が、DEFER#信号が適切でないことを示していないかぎり、スヌープ・フェーズ中にDEFER#信号をアサートすることができる。これは、長い待ち時間のトランザクションの例である。他のエージェントがHITM#をアサートしなかった場合、現トランザクションの応答フェーズ中に固有のデファード・コードが入力され、応答側エージェント(すなわち、DEFER#をアサートしているエージェント)が、それ自体がデータを提供し新しい動作を開始することができると判定するまでデータ転送が据え置かれる。このデファード動作は、要求側エージェントが、まだ得られないデータに対する周期的要求を発行する必要をなくするので有用である。これによって、不要なバス・トランザクションがなくなり、ある種のケースでは、いくつかのエージェントが未成功の再試行トランザクションを発行する優先順位を無駄にする必要がある競合条件を防止することができる。
厳密に1つのエージェントが、デファード動作のメモリ・エージェントまたは入出力エージェントである。メモリ・アドレスされたこのエージェントがデファード応答で応答できるようにするために、トランザクションのスヌープ・フェーズ中にDEFER#信号がアサートされる。この処置によって、トランザクションが据え置かれる可能性があり、かつインオーダー完了が保証できないことを示す初期表示が要求側エージェントに与えられる。その結果、要求側エージェントは、デファード動作が首尾良く完了するまでその後の順序依存トランザクションの発行を停止しなければならない。他のキャッシング・エージェントが、暗黙化書き直しを含むトランザクションを順序正しく完了する責任を引き継ぐので、スヌープ・フェーズの活動状態のHITM#が活動状態のDEFER#信号を無効にすることに留意されたい。
暗黙的書き戻しトランザクションの場合とまったく同じように、メモリ順序付けを維持することと、デファード動作中のスヌープ責任を明確に定義することは、デファード動作を行い、同時にバス・パイプラインを維持しマルチプロセッサ・システムにおけるデータ・コヒーレンシを維持することができるようにするうえで重大である。スヌープ・フェーズ中にトランザクションに関するDEFER#がアサートされた後、依然としてメモリ・エージェントまたは入出力エージェントが責任を負っている場合(非活動状態HITM#)、そのエージェントはキャッシュ線へのその後のアクセスでの(要求側エージェントの代わりに)その線に対するスヌープ責任を負う。アドレスされたエージェントが再試行応答で応答する場合にも(HITM#が非活動状態であると仮定する)、スヌープ・フェーズ中にDEFER#がアサートされることに留意されたい。トランザクションに関してDEFER#がアサートされ、HITM#が非活動状態である場合、メモリ・エージェントまたは入出力エージェントは、(再試行応答で)トランザクションを取り消し、あるいは応答フェーズ中にデファード応答を与える必要がある。
第12図は、デファード応答と、その後に続く、読取り動作の対応するデファード応答を示す。T2で、要求側エージェントは、線読取り要求を発行する際にADS#をアサートしREQ[4:0]#をドライブする。T5およびT6で、スヌープ・フェーズ中に、要求がアドレスされたエージェント(すなわち、「応答側エージェント」)は、トランザクションを順序正しく完了することはできないと判定し、したがってT6でDEFER#をアサートする。T6でHITM#が非活動状態であることが観測されるので、応答側エージェントは、T8でRS[2:0]#に対する適当なコード化をアサートすることによって「デファード」応答を返す。
T10の前に、応答側エージェントは、デファード要求で必要とされるデータを得る。T10で、最初の応答側エージェントは、最初のトランザクションの装置識別“DID[7:0]#”信号からラッチされた値をアドレスとして使用して、デファード応答トランザクションを発行する。T13で、応答側エージェントは、返された線の最後のキャッシュ状態を示すHIT#信号に対する有効なレベルをドライブする。最初の要求側エージェントは、スヌープ責任を負う。T15で、最初の要求側エージェントは、通常の完了応答をドライブし、データ・フェーズも開始する。
T11で、最初の要求側エージェントは、デファード応答トランザクションを観測する。要求側エージェントは、その未処理のトランザクション待ち行列に最初の要求と共に記憶されているデファード識別子とDID[7:0]#を突き合わせる。最初の要求側エージェントはT14で、返されたキャッシュ線の最後の状態を観測する。T16で、要求側エージェントは、トランザクション応答を観測し、未処理トランザクション待ち行列および第14図に示したインオーダー待ち行列(“IOQ”)からトランザクションを除去する。これによって、デファード動作シーケンス全体が完了する。
データ・コヒーレンシを維持するには、デファード動作中にスヌープ所有権を明確に定義しなければならない。応答側エージェントは、キャッシュ線トランザクションのスヌープ・フェーズ中にDEFER#をアサートした後、第1図に示したバス・クラスタ内のそのキャッシュ線のスヌープ所有権も受け入れる。したがって、バス・クラスタ内の同じキャッシュ線へのその後のアクセスでは、応答側エージェントは2つの可能な処置、すなわち(i)データおよび(ii)再試行をとることができる。再試行応答は、競合するトランザクションを取り消すために応答フェーズ中に応答側エージェントによって発行される。この機構は、エージェントが機能的に正しい動作を行えるようにする手段を提供する。任意選択で、応答側エージェントは、DEFER#信号を発行し、バス・クラスタ内のキャッシュ線状態の全責任を負うことによって複数の再試行要求を有することを回避する。応答側エージェントは、デファード応答トランザクションを第1の要求側エージェントに発行する。応答側エージェントは、同じキャッシュ線の次の応答側エージェントにデファード応答を返す前に、第2の要求のデファード応答が完了することによる必要に応じて第1の要求側エージェントのキャッシュから得たキャッシュ線を明示的に無効化する無効化トランザクションを発行する。
応答側エージェントは、最初の要求のデファード応答が完了する前に、前述のクラスタに結合された別のシステム・バスからの要求の結果として線無効化トランザクションを開始することもできる。この場合、応答側エージェントは、システム・バスからのインバウンド・トランザクションがシステム・バスからのアウトバウンド・トランザクションよりも前に実行されるように順序付けている。この機構は、複数のバス・クラスタからの同じキャッシュ線への競合アクセス間の競合条件をなくする機構としてクラスタ・ブリッジ(たとえば、第1図のクラスタ・ブリッジ)によって使用され、複数のバス・クラスタを接続できるようにする。
第13図は、応答側エージェントが、第1の線無効化要求にデファード要求を与えるときに行うスヌープ所有権獲得の効果を示す。デファード応答がない場合、スヌープ所有権はただちに応答側エージェントに移る。T2で、要求側エージェント(“1”)は、ADS#をアサートし、REQ[4:0]#をドライブして第1の線無効化要求を発行する。T5で、異なる要求側エージェント(“2”)がADS#をアサートし、REQ[4:0]#をドライブして同じキャッシュ線に第2の線無効化要求を発行する。
メモリ・エージェントは、スヌープ・フェーズでDEFER#をアサートし、応答フェーズでデファード応答をアサートして、第1の線無効化要求にデファード応答が与えられることを示す。メモリ・エージェントはまた、第2の線無効化要求を観測し、要求されたアドレスが、メモリ・エージェントがDEFER#をアサートしたキャッシュ線と同じであることを知る。メモリ・アドレスは、競合アドレスを知り、スヌープ・フェーズでDEFER#をアサートし、応答フェーズで再試行応答をアサートして、第2の応答が再試行されることを示す。第2の要求を再発行するための異なる要求側エージェントによるすべてのその後の試みには、メモリ・エージェントによって再試行応答が与えられる。
T6で、要求側エージェントは、活動状態のDEFER#を観測し、トランザクションがインオーダー完了に関してコミットされていないことを知る。要求側エージェントは、キャッシュ線の所有権を受け入れない。その結果、要求側エージェントは、T8、すなわち第2のトランザクションのスヌープ・フェーズでHITM#をアサートしない。T9で、異なる要求側エージェントが、活動状態のDEFER#を観測し、トランザクションがインオーダー完了に関してコミットされていないことを知り、キャッシュ線に対して無効状態のままになる。
メモリ・エージェントは、バス・クラスタ内のキャッシュ線の所有権を得た後、T14でデファード応答トランザクション2dを開始する。T15で、異なる要求側エージェントが要求“2r”を再発行する。このとき、メモリ・エージェントはトランザクション“2r”に関する再試行応答を生成しない。T17でキャッシュ線所有権を得た要求側エージェントは、要求“2r”を観測すると、第12図と同様に要求を完了する。
第14図は、パイプライン式バスに結合された各エージェントに組み込まれた「インオーダー待ち行列」のブロック図である。システム・バス上の複数の未処理トランザクションをサポートするには、任意の特定の時間にシステム・バス上に配置されている情報を識別し、かつトランザクションで使用されるエージェントを知ることができるように、各エージェントがある種の最小量の情報を追跡しなければならない。インオーダー待ち行列(“IOQ”)100はこの情報を記憶する。IOQ100は、複数のトランザクション・レジスタ、たとえば8つのトランザクション・レジスタ101ないし108と、2つの待ち行列ポインタ・レジスタ110および112と、スヌープ・ポインタ・レジスタ113と、「空」レジスタ(図示せず)とを含む。IOQ100の1番上から1番したへ延びる矢印は、IOQ100が円形であり、そのため、第1の待ち行列ポインタ(すなわち、「要求」)レジスタ110がトランザクション・レジスタ108を指しているとき、要求レジスタ110が増分されると、第1の待ち行列ポインタ・レジスタ110がトランザクション・レジスタ101を指すようになることを示す。
好ましい実施形態では8つのトランザクション・レジスタが使用されるが、これよりも多くのレジスタを使用することも、あるいはこれよりも少ないレジスタを使用することもできる。これらのトランザクション・レジスタ101ないし108は、データ転送をサポートしていることを示すデータ転送フィールド、トランザクションに関するキャッシング・エージェントによってHITM#がアサートされたことを示す暗黙的書き戻しフィールド、トランザクションが読取りトランザクションまたは書込みトランザクションであることを示す読取り/書込みフィールドなどのフィールドを含む。
バス・トランザクションは、システム・バス上に発行されると、要求レジスタ110の指すトランザクション・レジスタに入力され、次いで要求レジスタ110が増分される。トランザクションに関する応答フェーズを受け取った後、IOQ100の1番上にあるトランザクションが除去され、第2の待ち行列ポインタ「応答」レジスタ112が増分される。応答レジスタ112は常に要求レジスタ110よりも遅れる。また、スヌープ・ポインタ・レジスタ113は、現在スヌープ中のトランザクションを指す。
待ち行列ポインタ・レジスタ110および112が共に同じトランザクション・レジスタを指し、かつ空レジスタが非活動状態であるとき、IOQ100は満杯である。しかし、空レジスタが活動状態であるとき、IOQ100は空である。未処理のトランザクションがない場合、空レジスタはセットされる。パリティ・エラーを除いて、トランザクションは、それらが発行されたのと同じ順序で応答およびデータを受け取り、したがってIOQ100の1番上にある各トランザクションは次に応答フェーズおよびデータ・フェーズ、すなわちトランザクションが完了する前の最後のフェーズに入る。
好ましくは、各エージェントは最低でも、未処理のトランザクションの数、次にどのトランザクションをスヌープすべきか、どのトランザクションが次に応答を受け取るべきか、トランザクションはこのエージェントへ発行されたのか、それともこのエージェントから発行されたのかの各情報を」IOQに記憶する。エージェント特有のその他のバス情報も追跡しなければならないが、あらゆるエージェントがこの情報を追跡する必要があるわけではない。たとえば、要求側エージェントは、このエージェントがあといくつのトランザクションを発行できるか(注:好ましい実施形態では、マイクロプロセッサは4つの未処理のトランザクションを有することができる)、このトランザクションは読取りか、それとも書込みか、このバス・エージェントがデータを提供する必要があるか、それともデータを受け入れる必要があるかを追跡することができる。応答側エージェントは、このエージェントがIOQの1番上にあるトランザクションに関する応答を所有しているかどうか、このトランザクションが暗黙的書き戻しデータを含むかどうか、このエージェントが書き直しデータを受け取る必要があるかどうか、このエージェントがデータ転送を所有しているかどうか、トランザクションが読取りである場合にこのエージェントがデータを受け入れなければならないかどうか、エージェントが必要に応じて次のトランザクションを停止できるようにバッファ資源が利用できるかどうかを追跡することができる。スヌーピング・エージェントは、トランザクションをスヌープする必要があるかどうか、スヌープ・フェーズを延長する必要があるかどうか、このトランザクションが、このエージェントから供給すべき暗黙的書き戻しデータを含むかどうか、いくつのスヌープ要求が待ち行列にあるかを追跡することができる。また、トランザクションを据え置くことができるエージェントは、デファード・トランザクションおよびそのエージェントID、バッファ資源の可用性を追跡することができる。好ましい実施形態では、すべてIOQを包含する複数の待ち行列または1つの待ち行列を実施することによってこの種のトランザクション情報を追跡することができる。
キャッシュ・コヒーレンシに悪影響を及ぼすアクセス競合が発生する恐れのあるある種の他の状況がある。このようなアクセス競合は主として、発信トランザクションが現バス・トランザクションと同じアドレスを有するときに発生する。このことをより良く理解するためにまず、本発明の好ましい実施形態で使用される、発信トランザクションが記憶される概念的バッファ構造について説明し、次いで、競合を解決するために使用される手法について説明する。
第15図は、本発明の一実施形態で使用されるプロセッサ・バッファ構造を示す。調停時間および応答時間が短いので、バス上の大部分のエージェントはそのようなプロセッサ・バッファ構造を維持しなければならない。プロセッサ・バッファ構造の実際の実施態様が、第15図に示したものとまったく同じではないが、プロセッサ・バッファ構造の趣旨および機能を反映することが企図される。未処理要求バッファは、ローカル・バスへ送られた要求を含むが、トランザクションは完了されていない。バッファ中のすべての要求をスヌープして、適切な線状態を確保する必要がある。発信バッファは、これからシステム・バス上で送り出される要求を保持する。他のエージェントからの現バス・トランザクションのアドレスがバッファ中の要求に一致する場合、競合を解決することができるように後述の処置をとる必要がある。
現バス要求のアドレスが発信バッファ中の1つの要求のアドレスに一致するとき、同じバス・クラスタ内で競合が発生する。使用されるすべてのプロセッサが同じバス上に存在するので、アクセス順序を確立しなければならない。具体的には、発信要求が読取りまたは部分線書込みである場合、リモート・エージェントの要求はローカル・エージェントの読取り/書込みミスにも部分書込み要求にも影響を及ぼさないので特殊な処置は必要とされない。
発信要求が読取りを含まない線無効化トランザクションである場合、他のエージェントからの現バス要求が線無効化、または部分書込み要求、または線書込みである場合には、他のエージェントからの現要求によって、ローカル・キャッシュに存在する現キャッシュ線が無効化されるので、発信線無効化要求を線読取り・無効化要求に変換する必要はない。他のエージェントからの現バス要求が線読取りまたは部分線読取りである場合、リモート・エージェントの要求によってローカル・キャッシュ線が除去されることはないので、特殊な処置は必要とされない。
発信要求が線書き直しトランザクションであり、現バス要求が線読取りトランザクション、または部分線読取りトランザクション、または線読取り・無効化トランザクション、または線無効化トランザクション、または部分線書込みトランザクション、またはBLR線読取りトランザクションである場合、書き直しが暗黙的書き戻しに変換され、次いで発信要求が除去され、あるいは、現バス要求が線書込みトランザクションである場合、最適には、現バス要求が線全体を上書きするので暗黙的書き戻しデータ転送が取り消される。
前述のバス・システムは、デファード・トランザクションとマルチプロセッサ対応データ・コヒーレンシをもたらすパイプライン式バスを提供するだけでなく、プロセッサの順序付けを可能にする。プロセッサ順序付けは、各マイクロプロセッサに、順序依存動作を求める要求を、それが依存する動作が観測され、それを取り消すことができる点(すなわち、スヌープ・フェーズ)を越えるまで延期させる技法によって行われる。従属動作とは、計算する必要がある他のデータに作用する動作である。パイプライン式システムでは、プロセッサが2つの順次(すなわち、バック・ツー・バック)命令を要求し、次いでその後のフェーズ中にデファードと再試行のどちらかによって一方の命令を取り消させることができるので、前述のことが問題となることがある。これは、好ましい実施形態で使用されるマイクロプロセッサが、取り消される可能性が高いスペキュラティブ命令を発行するので可能性の高い事象である。他のエージェントがその後に続くトランザクションを発行し、次いで必要なデータを得ることができなくなるのを防止するには、スヌープ・フェーズに到達しDEFER#がアサートされなくなるまでバック・ツー・バック書込みが待機しなければならない。したがって、バック・ツー・バック書込みは6クロック・サイクルおきにしかアサートできない。これに対して、他のトランザクションでは3クロック・サイクルおきにアサートすることができる。
したがって、マルチプロセッサ対応であり、長い待ち行列のトランザクションを可能にする高度パイプライン式バス・システムを提供する方法および装置について説明した。当業者には、開示したもの以外に本発明の様々な実施形態が可能であることが明らかになろう。一般に、本明細書で説明する例示的な実施形態は、本発明を例示するものに過ぎず、その範囲を制限するものとみなすべきものではない。したがって、本発明は、下記の請求の範囲に関して検討すべきである。
Claims (22)
- 選択されたプロトコルに従って動作するキャッシュを備えたマイクロプロセッサを有した少なくとも1つのエージェントを含む複数のエージェントと、これらのエージェント間に結合されたバスとを含むコンピュータ・システムで、前記複数のエージェントのうちの少なくとも1つによって開始される、データを転送する際に前記バスを通じてパイプライン化される複数のマルチフェーズ・バス・トランザクションをサポートする方法であって、
前記マイクロプロセッサが、(i)前記複数のマルチフェーズ・バス・トランザクションの各スヌープ・フェーズ中にキャッシュ・スヌープを実行するとともに、(ii)前記マイクロプロセッサの前記キャッシュが前記データを修正済み状態で含む場合に、対応するスヌープ・フェーズの直後のデータ・フェーズ中に前記データを与えることによって、前記データのコヒーレンシを維持し、
(i)前記複数のマルチフェーズ・バス・トランザクションのうちの少なくとも1つに関する情報を与えるためにアドレスされた前記複数のエージェントのうちの1つが、前記情報を所定期間内に提供することができず、(ii)前記マイクロプロセッサの前記キャッシュが前記情報を前記修正済み状態で含まない場合に、前記複数のマルチフェーズ・バス・トランザクションのうちの少なくとも1つを前記バスを通じたパイプライン化を妨害せずに遅延する
ことを特徴とする方法。 - 前記データのコヒーレンシの維持がさらに、
前記データ・フェーズ中に前記データを与える前に、
前記キャッシュが前記データを前記修正済み状態で含んでいることを前記マイクロプロセッサが検出した場合に、前記スヌープ・フェーズ中に前記バスの第1の制御線をアサートする
ことを特徴とする請求項1に記載の方法。 - 前記データのコヒーレンシの維持がさらに、
前記第1の制御線をアサートした後および前記データ・フェーズ中に前記データを与える前に、
前記キャッシュが前記データを共用状態または専用状態で含んでいることを前記マイクロプロセッサが検出した場合に、前記スヌープ・フェーズ中に前記バスの第2の制御線をアサートする
ことを特徴とする請求項2に記載の方法。 - 前記少なくとも1つのトランザクションの遅延がさらに、
前記複数のマルチフェーズ・バス・トランザクションのうちの前記少なくとも1つが遅延されることを示すデファード信号を、前記エージェントによって前記スヌープ・フェーズ中に発行し、
対応するデファード応答トランザクションの要求アドレスとして使用されるデファード・コードを、前記エージェントによって前記応答フェーズ中に保持する
ことを特徴とする請求項1に記載の方法。 - 前記少なくとも1つのトランザクションの遅延がさらに、
前記エージェントが前記情報を提供することが可能になった後に、前記複数のマルチフェーズ・バス・トランザクションのうちの前記少なくとも1つを完了させるために前記対応するデファード応答トランザクションを開始するよう前記エージェントによって保持されているデファード・コードを発行する
ことを特徴とする請求項4に記載の方法。 - 前記複数のエージェントはそれぞれマイクロプロセッサを備えており、
前記複数のマルチフェーズ・バス・トランザクションのうちの前記1つを遅延することも取り消すこともできなくなるまで該マルチフェーズ・バス・トランザクションのうちの1つに依存するマルチフェーズ・バス・トランザクションを要求することを延期するよう、前記複数のマイクロプロセッサに要求することによって、データを求める前記複数のマルチフェーズ・バス・トランザクションのプロセッサ順序付けをおこなう
ことを特徴とする請求項1に記載の方法。 - それぞれマイクロプロセッサを有する複数のエージェントであってその少なくとも1つのマイクロプロセッサは選択されたプロトコルに従って動作するキャッシュを備えており、前記複数のエージェント間に結合されたバスを備えたコンピュータ・システムにおいて、前記複数のエージェントのうちの少なくとも1つによって開始される、データを転送する際の複数のマルチフェーズ・バス・トランザクションをサポートする方法であって、
(i)前記複数のマルチフェーズ・バス・トランザクションのうちの少なくとも1つに関する情報を与えるためにアドレスされた前記複数のエージェントのうちの1つが、前記情報を所定期間内に与えることができず、(ii)前記少なくも1つのマイクロプロセッサの前記キャッシュが前記情報を修正済み状態で記憶していない場合に、前記複数のマルチフェーズ・バス・トランザクションのうちの少なくとも1つを遅延し、
前記マルチフェーズ・バス・トランザクションのうちの1つに依存するマルチフェーズ・バス・トランザクションを要求することを、前記複数のマルチフェーズ・バス・トランザクションのうちの前記1つを遅延することも、取り消すこともできなくなるまで延期するよう、前記複数のマイクロプロセッサに要求することによって、前記複数のマルチフェーズ・バス・トランザクションのプロセッサ順序付けをおこなう方法。 - さらに、前記少なくとも1つのマイクロプロセッサが、(i)前記複数のマルチフェーズ・バス・トランザクションの各スヌープ・フェーズ中にキャッシュ・スヌープを実行し、(ii)前記少なくとも1つのマイクロプロセッサの前記キャッシュが前記データを前記修正済み状態で含む場合に、対応するスヌープ・フェーズの直後のデータ・フェーズ中に前記データを与えることによって、前記データのコヒーレンシを維持する
ことを特徴とする請求項7に記載の方法。 - キャッシュと、
パイプライン機構で伝送される複数のマルチ・フェーズ・トランザクションを追跡し且つ複数の信号を使用して通信を行う論理手段と
から構成されるバス・エージェントであり、
前記複数の信号は、
前記複数のマルチ・フェーズ・トランザクション群の1つのトランザクションを遅延するため、該トランザクションのための情報に関連して前記バス・エージェントによって受信されるデファード信号と、
スヌープ・フェーズ中にアサートされ、少なくとも1つのバスサイクルの間前記キャッシュについてスヌーピングをさらに行うために該スヌープ・フェーズを延長する複数の制御信号と
を含むことを特徴とするバス・エージェント。 - 前記複数の制御信号はHIT#信号とHITM#信号である
ことを特徴とする請求項9記載のバス・エージェント。 - 前記HITM#信号が前記スヌープ・フェーズ中にアサートされると暗黙的書き戻しトランザクションを行う論理手段を更に有する
ことを特徴とする請求項10記載のバス・エージェント。 - 前記デファード信号に応答して応答フェーズ中にデファード・コードを保持し、且つこのデファード・コードを前記遅延されたトランザクションを完了するために実行されるデファード応答トランザクションのために要求されるアドレスとして使用する
ことを特徴とする請求項11記載のバス・エージェント。 - 前記複数のマルチ・フェーズ・トランザクション群の少なくとも1つのトランザクションが遅延されないか或いは取り消されない状態になるまで、複数のマルチ・フェーズ・トランザクション群の1つに依存するマルチ・フェーズ・トランザクションの要求を延期することをバス・エージェントに求めることによって複数のマルチ・フェーズ・トランザクション群の処理順序を保持する論理手段を更に有する
ことを特徴とする請求項9記載のバス・エージェント。 - 前記デファード信号はトランザクションを遅延させるために活動化されるものであり、活動化されたHITM#信号により無効にされるものである
ことを特徴とする請求項9記載のバス・エージェント。 - トランザクションのための情報は当該トランザクションが遅延されたことを示すデファード応答をさらに有する
ことを特徴とする請求項9記載のバス・エージェント。 - 前記スヌープ・フェーズ中ならば上記デファード信号を受信し、また応答フェーズ中ならばデファード応答を受信する
ことを特徴とする請求項15記載のバス・エージェント。 - 少なくとも第1、第2のマルチフェーズ・バス・トランザクションを含む複数のマルチフェーズ・バス・トランザクションをサポートするためのデータ転送バス手段と、
前記第1、第2のマルチフェーズ・バス・トランザクションに関するバス要求を開始するとともに、
前記複数のマルチフェーズ・バス・トランザクションの各々のスヌープ・フェーズ中にキャッシュ・スヌーピングを実行することによりデータのコヒーレンシを維持し、
さらに、前記データへのアクセスが得られた際にデファード応答トランザクションを開始するかあるいは前記少なくとも1つのトランザクションを再試行するかのいずれかが開始されるまで、前記データ転送バス手段を通じた前記複数のマルチフェーズ・バス・トランザクションのパイプライン化を妨害することなく、前記複数のマルチフェーズ・バス・トランザクションの少なくとも1つのトランザクションを遅延する
エージェント手段と
を備えたコンピュータ・システム。 - 前記エージェント手段は、前記スヌープ・フェーズ中において前記エージェント手段の内部キャッシュが修正済み状態にあるデータを含むことを検出した際に前記バス手段に第1の制御信号(HITM#)をアサートすることによって前記コヒーレンシを維持する
ことを特徴とする請求項17記載のコンピュータ・システム。 - 前記エージェント手段は、前記バス手段上の複数のマルチフェーズ・バス・トランザクションのバスを通じたパイプライン化を一時的に停止させるため、前記スヌープ・フェーズ中において前記バス手段に関連して第1の制御信号(HITM#)と第2の制御信号(HIT#)とをほぼ同時にアサートすることによって前記コヒーレンシを維持する
ことを特徴とする請求項17記載のコンピュータ・システム。 - 前記エージェント手段は、
スヌープ・フェーズ中において、前記少なくとも1つのトランザクションが遅延されることを示すデファード信号を発行し、
応答フェーズ中において、前記エージェント手段によって遅延応答トランザクションに関する要求アドレスとして使用されるデファード・コードを保持して、
前記少なくとも1つのトランザクションを遅延する
ことを特徴とする請求項17記載のコンピュータ・システム。 - 前記エージェント手段は、少なくと1つのトランザクションが遅延されたりあるいは取り消されることができなくなるまで前記複数のマルチフェーズ・バス・トランザクションの内の少なくとも1つのトランザクションに依存するマルチフェーズ・バス・トランザクションの遅延を要求することによって前記複数のマルチフェーズ・バス・トランザクションのプロセッサ順序付けを、さらに提供する
ことを特徴とする請求項17記載のコンピュータ・システム。 - 複数のエージェントと結合し、複数のマルチフェーズ・バス・トランザクションをバスを通じてパイプライン化するコンピュータ・システムであって、データを転送するため該複数のマルチフェーズ・バス・トランザクションをサポートする方法において、
各々のバス・トランザクションがその間に開始される複数のマルチフェーズ・バス・トランザクションに対する要求フェーズを受信し、
前記複数のマルチフェーズ・バス・トランザクションの各々のスヌープ・フェーズ中に複数の制御信号(HIT#,HITM#)を監視し、
前記少なくとも1つのスヌープ・フェーズ中にデファード信号(DEFER#)をアサートすることにより前記バスを通じたパイプライン化を妨害することなく前記複数のマルチフェーズ・バス・トランザクションの少なくとも1つを遅延し、
前記少なくとも1つのトランザクションのスヌープ・フェーズ中に第1の制御信号(HITM#)が活動状態にある場合に前記少なくとも1つのトランザクションの遅延を取り消し、
前記複数の制御信号(HIT#、HITM#)をアサートして、前記複数のマルチフェーズ・バス・トランザクションの少なくとも1つのトランザクションに対して少なくとも1つ以上のバス・サイクルだけ前記スヌープ・フェーズを延長し、
1つのトランザクションの結果を供給するため複数の応答信号(RS[2:0]#)を各々の応答フェーズ中にアサートすることによって複数の応答フェーズを提供する方法であって、さらにこの方法は、
前記受信される各々の要求フェーズはアドレス・ストローブ信号(ADS#)、アドレス、及び前記要求フェーズに関連するバス・トランザクションの要求タイプを示す複数の要求信号(REQ[4:0]#)のアサートを含み、
前記デファード信号(DEFER#)がそれぞれのスヌープ・フェーズ中にアサートされて遅延が実行された場合に該遅延されたトランザクションに関わるコード化された応答が各々の応答フェーズ中に前記複数の応答信号(RS[2:0]#)上に載せられ、
第1の要求フェーズと第2の要求フェーズが前記第1の要求フェーズに対応する第1の応答フェーズの提供前に受信される
ことを特徴とする方法。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US20638294A | 1994-03-01 | 1994-03-01 | |
US39096995A | 1995-02-21 | 1995-02-21 | |
US08/390,969 | 1995-02-21 | ||
US08/206,382 | 1995-02-21 | ||
PCT/US1995/002505 WO1995024678A2 (en) | 1994-03-01 | 1995-03-01 | Highly pipelined bus architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09510308A JPH09510308A (ja) | 1997-10-14 |
JP3660679B2 true JP3660679B2 (ja) | 2005-06-15 |
Family
ID=26901290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP52350395A Expired - Lifetime JP3660679B2 (ja) | 1994-03-01 | 1995-03-01 | 高度パイプライン式バス・アーキテクチャ |
Country Status (8)
Country | Link |
---|---|
US (1) | US5796977A (ja) |
EP (2) | EP1215584A3 (ja) |
JP (1) | JP3660679B2 (ja) |
KR (1) | KR100360064B1 (ja) |
AU (1) | AU1973595A (ja) |
BR (1) | BR9506997A (ja) |
DE (1) | DE69531933T2 (ja) |
WO (1) | WO1995024678A2 (ja) |
Families Citing this family (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5615343A (en) | 1993-06-30 | 1997-03-25 | Intel Corporation | Method and apparatus for performing deferred transactions |
JP3872118B2 (ja) * | 1995-03-20 | 2007-01-24 | 富士通株式会社 | キャッシュコヒーレンス装置 |
US5673413A (en) * | 1995-12-15 | 1997-09-30 | International Business Machines Corporation | Method and apparatus for coherency reporting in a multiprocessing system |
EP0832459B1 (en) * | 1996-03-15 | 2005-06-29 | Sun Microsystems, Inc. | Split transaction snooping bus and method of arbitration |
US5983326A (en) * | 1996-07-01 | 1999-11-09 | Sun Microsystems, Inc. | Multiprocessing system including an enhanced blocking mechanism for read-to-share-transactions in a NUMA mode |
KR100454652B1 (ko) * | 1997-04-11 | 2005-01-13 | 엘지전자 주식회사 | 하이파이버스시스템의주기억장치 |
US6260117B1 (en) | 1997-09-18 | 2001-07-10 | International Business Machines Corporation | Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency |
US6070231A (en) * | 1997-12-02 | 2000-05-30 | Intel Corporation | Method and apparatus for processing memory requests that require coherency transactions |
US6029225A (en) * | 1997-12-16 | 2000-02-22 | Hewlett-Packard Company | Cache bank conflict avoidance and cache collision avoidance |
US6292906B1 (en) * | 1997-12-17 | 2001-09-18 | Intel Corporation | Method and apparatus for detecting and compensating for certain snoop errors in a system with multiple agents having cache memories |
US6460119B1 (en) * | 1997-12-29 | 2002-10-01 | Intel Corporation | Snoop blocking for cache coherency |
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 |
US6330591B1 (en) * | 1998-03-09 | 2001-12-11 | Lsi Logic Corporation | High speed serial line transceivers integrated into a cache controller to support coherent memory transactions in a loosely coupled network |
US6269360B1 (en) * | 1998-04-24 | 2001-07-31 | International Business Machines Corporation | Optimization of ordered stores on a pipelined bus via self-initiated retry |
US6546429B1 (en) * | 1998-09-21 | 2003-04-08 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system that holds and reissues requests at a target processing node in response to a retry |
US6216190B1 (en) * | 1998-09-30 | 2001-04-10 | Compaq Computer Corporation | System and method for optimally deferring or retrying a cycle upon a processor bus that is destined for a peripheral bus |
US7555603B1 (en) * | 1998-12-16 | 2009-06-30 | Intel Corporation | Transaction manager and cache for processing agent |
US6732208B1 (en) | 1999-02-25 | 2004-05-04 | Mips Technologies, Inc. | Low latency system bus interface for multi-master processing environments |
US6397304B1 (en) * | 1999-06-16 | 2002-05-28 | Intel Corporation | Method and apparatus for improving system performance in multiprocessor systems |
US6681283B1 (en) | 1999-08-12 | 2004-01-20 | Mips Technologies, Inc. | Coherent data apparatus for an on-chip split transaction system bus |
US6493776B1 (en) | 1999-08-12 | 2002-12-10 | Mips Technologies, Inc. | Scalable on-chip system bus |
US6604159B1 (en) | 1999-08-12 | 2003-08-05 | Mips Technologies, Inc. | Data release to reduce latency in on-chip system bus |
US6490642B1 (en) | 1999-08-12 | 2002-12-03 | Mips Technologies, Inc. | Locked read/write on separate address/data bus using write barrier |
US6393500B1 (en) | 1999-08-12 | 2002-05-21 | Mips Technologies, Inc. | Burst-configurable data bus |
US6519685B1 (en) * | 1999-12-22 | 2003-02-11 | Intel Corporation | Cache states for multiprocessor cache coherency protocols |
US6609171B1 (en) | 1999-12-29 | 2003-08-19 | Intel Corporation | Quad pumped bus architecture and protocol |
US6681320B1 (en) * | 1999-12-29 | 2004-01-20 | Intel Corporation | Causality-based memory ordering in a multiprocessing environment |
US6438737B1 (en) | 2000-02-15 | 2002-08-20 | Intel Corporation | Reconfigurable logic for a computer |
US6745297B2 (en) * | 2000-10-06 | 2004-06-01 | Broadcom Corporation | Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent |
US6601145B2 (en) | 2000-12-27 | 2003-07-29 | International Business Machines Corporation | Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers that uses dynamic hardware/software controls |
US6546468B2 (en) * | 2000-12-27 | 2003-04-08 | International Business Machines Corporation | Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers performing directory update |
US6742160B2 (en) | 2001-02-14 | 2004-05-25 | Intel Corporation | Checkerboard parity techniques for a multi-pumped bus |
US6546469B2 (en) | 2001-03-12 | 2003-04-08 | International Business Machines Corporation | Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers |
US6546470B1 (en) | 2001-03-12 | 2003-04-08 | International Business Machines Corporation | Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers with banked directory implementation |
US7076627B2 (en) | 2001-06-29 | 2006-07-11 | Intel Corporation | Memory control for multiple read requests |
US7114038B2 (en) * | 2001-12-28 | 2006-09-26 | Intel Corporation | Method and apparatus for communicating between integrated circuits in a low power mode |
US7085889B2 (en) | 2002-03-22 | 2006-08-01 | Intel Corporation | Use of a context identifier in a cache memory |
US7343395B2 (en) * | 2002-03-29 | 2008-03-11 | Intel Corporation | Facilitating resource access using prioritized multicast responses to a discovery request |
EP1376373B1 (en) * | 2002-06-20 | 2006-05-31 | Infineon Technologies AG | Arrangement having a first device and a second device connected via a cross bar switch |
US8185602B2 (en) | 2002-11-05 | 2012-05-22 | Newisys, Inc. | Transaction processing using multiple protocol engines in systems having multiple multi-processor clusters |
US6986010B2 (en) * | 2002-12-13 | 2006-01-10 | Intel Corporation | Cache lock mechanism with speculative allocation |
US7043656B2 (en) * | 2003-01-28 | 2006-05-09 | Hewlett-Packard Development Company, L.P. | Methods and apparatus for extending a phase on an interconnect |
US20040226011A1 (en) * | 2003-05-08 | 2004-11-11 | International Business Machines Corporation | Multi-threaded microprocessor with queue flushing |
US7747733B2 (en) | 2004-10-25 | 2010-06-29 | Electro Industries/Gauge Tech | Power meter having multiple ethernet ports |
US20060143384A1 (en) * | 2004-12-27 | 2006-06-29 | Hughes Christopher J | System and method for non-uniform cache in a multi-core processor |
US7788240B2 (en) * | 2004-12-29 | 2010-08-31 | Sap Ag | Hash mapping with secondary table having linear probing |
US7360008B2 (en) * | 2004-12-30 | 2008-04-15 | Intel Corporation | Enforcing global ordering through a caching bridge in a multicore multiprocessor system |
US7886086B2 (en) * | 2005-02-03 | 2011-02-08 | International Business Machines Corporation | Method and apparatus for restricting input/output device peer-to-peer operations in a data processing system to improve reliability, availability, and serviceability |
US8490107B2 (en) | 2011-08-08 | 2013-07-16 | Arm Limited | Processing resource allocation within an integrated circuit supporting transaction requests of different priority levels |
US20170063566A1 (en) * | 2011-10-04 | 2017-03-02 | Electro Industries/Gauge Tech | Internet of things (iot) intelligent electronic devices, systems and methods |
US10862784B2 (en) | 2011-10-04 | 2020-12-08 | Electro Industries/Gauge Tech | Systems and methods for processing meter information in a network of intelligent electronic devices |
US10771532B2 (en) | 2011-10-04 | 2020-09-08 | Electro Industries/Gauge Tech | Intelligent electronic devices, systems and methods for communicating messages over a network |
US11816465B2 (en) | 2013-03-15 | 2023-11-14 | Ei Electronics Llc | Devices, systems and methods for tracking and upgrading firmware in intelligent electronic devices |
US11734396B2 (en) | 2014-06-17 | 2023-08-22 | El Electronics Llc | Security through layers in an intelligent electronic device |
US10958435B2 (en) | 2015-12-21 | 2021-03-23 | Electro Industries/ Gauge Tech | Providing security in an intelligent electronic device |
US11734704B2 (en) | 2018-02-17 | 2023-08-22 | Ei Electronics Llc | Devices, systems and methods for the collection of meter data in a common, globally accessible, group of servers, to provide simpler configuration, collection, viewing, and analysis of the meter data |
US11686594B2 (en) | 2018-02-17 | 2023-06-27 | Ei Electronics Llc | Devices, systems and methods for a cloud-based meter management system |
US11754997B2 (en) | 2018-02-17 | 2023-09-12 | Ei Electronics Llc | Devices, systems and methods for predicting future consumption values of load(s) in power distribution systems |
US11863589B2 (en) | 2019-06-07 | 2024-01-02 | Ei Electronics Llc | Enterprise security in meters |
US11941428B2 (en) | 2021-04-16 | 2024-03-26 | Apple Inc. | Ensuring transactional ordering in I/O agent |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5353416A (en) * | 1989-10-25 | 1994-10-04 | Zenith Data Systems Corporation | CPU lock logic for corrected operation with a posted write array |
JPH04119445A (ja) * | 1990-09-11 | 1992-04-20 | Canon Inc | 計算機システム |
US5339399A (en) * | 1991-04-12 | 1994-08-16 | Intel Corporation | Cache controller that alternately selects for presentation to a tag RAM a current address latch and a next address latch which hold addresses captured on an input bus |
US5218564A (en) * | 1991-06-07 | 1993-06-08 | National Semiconductor Corporation | Layout efficient 32-bit shifter/register with 16-bit interface |
US5327570A (en) * | 1991-07-22 | 1994-07-05 | International Business Machines Corporation | Multiprocessor system having local write cache within each data processor node |
US5345569A (en) * | 1991-09-20 | 1994-09-06 | Advanced Micro Devices, Inc. | Apparatus and method for resolving dependencies among a plurality of instructions within a storage device |
GB2260628A (en) * | 1991-10-11 | 1993-04-21 | Intel Corp | Line buffer for cache memory |
US5353415A (en) * | 1992-10-02 | 1994-10-04 | Compaq Computer Corporation | Method and apparatus for concurrency of bus operations |
US5420991A (en) * | 1994-01-04 | 1995-05-30 | Intel Corporation | Apparatus and method for maintaining processing consistency in a computer system having multiple processors |
-
1995
- 1995-03-01 JP JP52350395A patent/JP3660679B2/ja not_active Expired - Lifetime
- 1995-03-01 BR BR9506997A patent/BR9506997A/pt not_active IP Right Cessation
- 1995-03-01 EP EP02000917A patent/EP1215584A3/en not_active Ceased
- 1995-03-01 WO PCT/US1995/002505 patent/WO1995024678A2/en active IP Right Grant
- 1995-03-01 DE DE69531933T patent/DE69531933T2/de not_active Expired - Lifetime
- 1995-03-01 EP EP95912647A patent/EP0748481B1/en not_active Expired - Lifetime
- 1995-03-01 KR KR1019960704811A patent/KR100360064B1/ko not_active IP Right Cessation
- 1995-03-01 AU AU19735/95A patent/AU1973595A/en not_active Abandoned
-
1996
- 1996-07-29 US US08/688,238 patent/US5796977A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
WO1995024678A3 (en) | 1995-10-12 |
EP0748481A1 (en) | 1996-12-18 |
WO1995024678A2 (en) | 1995-09-14 |
EP1215584A3 (en) | 2004-04-21 |
KR100360064B1 (ko) | 2003-03-10 |
BR9506997A (pt) | 1997-11-18 |
EP0748481A4 (en) | 2000-07-05 |
DE69531933D1 (de) | 2003-11-20 |
DE69531933T2 (de) | 2004-08-12 |
EP1215584A2 (en) | 2002-06-19 |
JPH09510308A (ja) | 1997-10-14 |
US5796977A (en) | 1998-08-18 |
EP0748481B1 (en) | 2003-10-15 |
AU1973595A (en) | 1995-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3660679B2 (ja) | 高度パイプライン式バス・アーキテクチャ | |
US5774700A (en) | Method and apparatus for determining the timing of snoop windows in a pipelined bus | |
US5572702A (en) | Method and apparatus for supporting read, write, and invalidation operations to memory which maintain cache consistency | |
JP3999821B2 (ja) | データ処理システム内でバス仲裁プロトコルを実行する方法および装置 | |
US5893151A (en) | Method and apparatus for maintaining cache coherency in a computer system with a highly pipelined bus and multiple conflicting snoop requests | |
US5682516A (en) | Computer system that maintains system wide cache coherency during deferred communication transactions | |
US5353415A (en) | Method and apparatus for concurrency of bus operations | |
US6128711A (en) | Performance optimization and system bus duty cycle reduction by I/O bridge partial cache line writes | |
EP0817073B1 (en) | A multiprocessing system configured to perform efficient write operations | |
US7549025B2 (en) | Efficient marking of shared cache lines | |
KR100348947B1 (ko) | 노드 상호 접속망 상에서 요구를 예측 방식으로 발행하는 비균일 메모리 액세스 데이터 처리 시스템 | |
JP3696012B2 (ja) | 書込み動作順序付けバスブリッジ | |
US5797026A (en) | Method and apparatus for self-snooping a bus during a boundary transaction | |
US8037253B2 (en) | Method and apparatus for global ordering to insure latency independent coherence | |
JPH0247756A (ja) | 多重プロセツサ・システム用書込み共用キヤツシユ回路 | |
WO1999035578A1 (en) | Method for increasing efficiency in a multi-processor system and multi-processor system with increased efficiency | |
USRE40921E1 (en) | Mechanism for efficiently processing deferred order-dependent memory access transactions in a pipelined system | |
EP3644190B1 (en) | I/o coherent request node for data processing network with improved handling of write operations | |
EP0981092A2 (en) | Non-uniform memory access (NUMA) data processing system that decreases latency by expediting rerun requests | |
US5778441A (en) | Method and apparatus for accessing split lock variables in a computer system | |
CN113900968B (zh) | 多副本非原子写的存储序同步操作实现方法与实现装置 | |
US5764932A (en) | Method and apparatus for implementing a dual processing protocol between processors | |
US11249908B1 (en) | Technique for managing coherency when an agent is to enter a state in which its cache storage is unused | |
EP1056020A2 (en) | Symmetric multiprocessing system with unified environment and distributed system functions | |
JPH0353657B2 (ja) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040510 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040621 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040722 |
|
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: 20050308 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050318 |
|
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: 20090325 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100325 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100325 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110325 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120325 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130325 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130325 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140325 Year of fee payment: 9 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |