JP3640997B2 - データ処理システム - Google Patents
データ処理システム Download PDFInfo
- Publication number
- JP3640997B2 JP3640997B2 JP02806795A JP2806795A JP3640997B2 JP 3640997 B2 JP3640997 B2 JP 3640997B2 JP 02806795 A JP02806795 A JP 02806795A JP 2806795 A JP2806795 A JP 2806795A JP 3640997 B2 JP3640997 B2 JP 3640997B2
- Authority
- JP
- Japan
- Prior art keywords
- bus
- transaction
- data
- module
- coherency
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- 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
Description
【産業上の利用分野】
本発明は、コンピュータ・システムに関し、より詳しくは、1つ以上のプロセッサがキャッシュ・メモリを備える共用メモリ多重プロセッサ・コンピュータに関する。
【0002】
【従来の技術】
コンピュータ・システムは通常、プロセッサ、メモリ、及び入出力装置のような複数の構成要素、及び2つ以上の構成要素間において情報を転送するための共用バスを備えている。これらの構成要素は通常、それぞれ、1つ以上のプロセッサ、メモリ、及び入出力装置を含むことが可能な、構成要素モジュールの形態でバスに接続されている。情報はバス「サイクル」の間に、構成要素モジュール間においてバス上で送られるが、各バス・サイクルは、その間にモジュールがバスの制御を有し、バス上で限られた量の情報を転送、又は駆動することができる期間である。所定のサイクルの間にバスの制御を有するモジュールは、バス所有者と呼ばれる。
【0003】
構成要素モジュールは、一般に、「読み取り」及び「書き込み」トランザクションのような、完了に1サイクル以上を要する「トランザクション」の形態で、バスを介して、互いに通信を行う。例えば、典型的な読み取りトランザクションの場合、あるモジュールは、バス上で、メイン・メモリ制御装置、又は獲得する必要のあるデータを識別し、かつ識別されたデータを送るように要求する別のモジュールに信号を送る。次に、応答モジュールが、その要求を処理し、1つ、又は以降の複数サイクルの間にそのデータをリターンする。従来の多くのバスは、応答が必ずしも要求の直後とは限らない、「分割トランザクション」に適応する。例えば、モジュールは読み取りトランザクションを開始した後、バスの制御を放棄し、応答モジュールが、要求されたデータをリターンする準備ができるまで、他の目的にバスを使用することを可能にする。この時点で応答モジュールは、バスの制御を獲得し、要求されたデータを要求モジュールに送る。
【0004】
多くのコンピュータ・システムでは、システム上で稼働するソフトウェアは、メイン・メモリを共用する2つ以上のメイン・プロセッサ・モジュールによって実行される。メイン・プロセッサは通常、共用バスに直接接続されている。メイン・メモリは通常、メイン・メモリ制御装置を介してバスに接続されている。プロセッサがメイン・メモリからデータを読み取り、又はメイン・メモリにデータを書き込む場合、プロセッサはメイン・メモリ制御装置と通信を行わなければならない。このタイプのシステムは、しばしば「共用メモリ多重プロセッサ」システムと呼ばれる。
【0005】
プロセッサ・モジュール、又は入出力モジュールは、モジュールによる迅速なアクセスに備えて、頻繁に使用されるデータ値を記憶するキャッシュ・メモリを備えることも可能である。通常、キャッシュ・メモリは、頻繁に使用されるデータ、及びこれらのデータ項目が記憶されているメイン・メモリのアドレスの両方を記憶している。モジュールが、メモリのアドレスからデータをシークする場合、そのデータに関連するアドレスを使用して、キャッシュ・メモリからデータを要求する。キャッシュ・メモリは、そのアドレスに関連したデータを保持しているかどうかを確かめるために検査を行う。保持していれば、キャッシュ・メモリは、要求されたデータを直接プロセッサにリターンすることが可能である。キャッシュ・メモリが所望の情報を含んでいない場合(即ち、「キャッシュ・ミス」が生じている場合)、通常のメモリ・アクセスが生じる。キャッシュ・メモリは通常、メイン・メモリ(一般的にはRAM)のアクセスが、マイクロプロセッサの速度に比較して遅い場合に有効である。キャッシュ・メモリは、メインRAMメモリより高速である。
【0006】
各プロセッサがキャッシュ・メモリを有する共用メモリ多重プロセッサにおいて、この状況は多少複雑になる。こうしたシステムにおいて、特定のトランザクションに必要とされるデータは、1つ以上のキャッシュ・メモリ、及び/又はメイン・メモリに記憶されうる。プロセッサによって操作されてきた、キャッシュ・メモリ内のデータは、メイン・メモリに記憶されている値とは異なる値を生じる可能性がある。一般に、これらのプロセッサ上で稼働するソフトウェアは、特定のアドレスに関連したデータに関して、その最新の値を使用しなければならない。従って、プロセッサは、他のプロセッサによって使用されていた可能性のあるデータをシークする毎に、プロセッサに提供されたデータが最新のものであることを保証するための処理「キャッシュ・コヒーレンシ技法」を実施する必要がある。
【0007】
典型的なコヒーレンシ技法では、モジュールによってデータが要求されると、キャッシュ・メモリを有する各モジュールが、そのキャッシュ・メモリの「コヒーレンシ検査」を行って、要求されたアドレスに関連するデータを有しているかどうかを判定し、そのコヒーレンシ検査の結果を報告する。各モジュールは通常、メイン・メモリ、及び他のキャッシュ・メモリに記憶されている、同じアドレスに関連したデータについて、そのキャッシュ・メモリに記憶されているデータの状況の記録を保持し、報告する。例えば、モジュールは、そのデータが「専用」(即ち、データがそのモジュールだけに使用可能である)か、又は「共用」(即ち、そのデータが、同時に2つ以上のキャッシュ・メモリに存在し得る)かを報告することが可能である。モジュールは又、そのデータが「クリーン」(即ち、メイン・メモリに記憶されている同じアドレスに関連したデータと同じである)か、又は「ダーティ」(即ち、そのデータが、取得後に操作されている)かを報告することも可能である。通常、所与のどの時点においても、データの専用ダーティ・コピーは1つだけ許可される。「コヒーレント・トランザクション」は、例えばメモリ読み取りといった、要求されたプロセッサに送るべきデータ源を決定するために、全てのメモリの検査を要求する、任意のトランザクションである。
【0008】
コヒーレント・トランザクションは通常、任意の有効なバス・サイクルの間に発行されうる。しかし、モジュールの中には、内部的にビジー状態であり、即時にそのトランザクションのコヒーレンシ検査を実施できないものもあり、キャッシュ・コヒーレンシ検査を完了するのに数サイクルを要する可能性がある。コヒーレント・トランザクションが発行されうる速度に適応するため、モジュールが、コヒーレンシ検査が実行されるまで、コヒーレント・トランザクションを記憶するためのキャッシュ・コヒーレンシ待ち行列を有する場合もある。
【0009】
各モジュールによって実行されたコヒーレンシ検査の結果は分析され、データを要求したモジュールに最新のデータが提供される。例えば、キャッシュ・メモリに、要求されたデータのコピーがなければ、そのデータはメイン・メモリから供給されることになる。モジュールが専用ダーティ・コピーを有する場合、通常そのデータが供給される。そのデータが供給されると、各モジュールは通常、そのキャッシュ・メモリ内のデータの状況を更新する。例えば、データの専用ダーティ・コピーがメイン・メモリにコピーされると、それはクリーン・コピーとなる。
【0010】
モジュール内のキャッシュ・コヒーレンシ・ハードウェアにおける遅延によって、多重プロセッサ・システムに順序問題を生じる可能性がある。上述のように、ハードウェアは、要求された特定のデータ全てに関して、最新バージョンのデータ供給を保証しなければならない。これは、高度にパイプライン化されたシステムの場合、バス上で発行されたトランザクションに対する応答遅延が避けられないために問題となる場合がある。
【0011】
あるモジュールが特定データ・ラインのコヒーレント読み取りを、別のモジュールが同じデータ・ラインのダーティ・コピーをライト・バックするのとほぼ同時に発行する場合、1つの問題が生じる可能性がある。ダーティ・コピーは最新であるため、それがコヒーレント読み取りに応答して供給されるべきである。しかし、前記書き込みが実行される前に、メモリが前記読み取りに応答し、既にそのデータ・ラインが「引き渡されている」ため、別のモジュール(即ち、データ・ラインのダーティ・コピーをライト・バックするモジュール)が、コヒーレンシ検査の実行時に競合(conflict)を検出しなかった場合、最初の要求モジュールは、メモリから間違った「失効(stale)」データを得ることになる。プロセッサが間違ったデータに基づいて操作を行う場合、この「順序」問題によって、間違った結果を生じる可能性があるのは明白である。
【0012】
従来のシステムは、様々な技法を用いて上記の順序問題を回避してきた。従来の技法には、それぞれ欠点がある。システムによっては、1回に1つのコヒーレント・トランザクションしか発行できず、前のコヒーレント・トランザクションについて全てのコヒーレンシの報告が完了するまで、新しいコヒーレント・トランザクションを発行することができないものもある。この技法では、利用可能なバスの帯域幅を狭くする、従って性能を制限するという犠牲を払って、適正な順序でトランザクションを処理し、最新のデータが供給されることを保証している。
【0013】
他のシステムでは、モジュールが、新しいトランザクションを発行する前に、競合の可能性について未完了のトランザクションを検査する必要がある。例えば、プロセッサは、キャッシュ・ラインのライト・バックを発行する前にチェックを行い、同じキャッシュ・ラインについて未完了のコヒーレント読み取りがないことを確認する。この制約は、潜在的なトランザクション発行速度も低下させ、このため性能が制限され、かつモジュールの複雑さが増すことになる。
【0014】
従って、コヒーレント・トランザクションが発行される速度を制限せず、かつ各モジュールが本来の速度でキャッシュ・コヒーレンシ検査を処理できる、パイプライン化分割トランザクション・バスのためのコヒーレンシ技法が必要とされる。
【0015】
【発明が解決しようとする課題】
従って、本発明の課題は、順序改良型のコヒーレンシ技法を提供することである。
【0016】
本発明の別の課題は、トランザクションがトランザクションの発行時間に基づいて順序付けされる、順序付けされたコヒーレンシ技法を提供することである。
【0017】
本発明の更に別の課題は、コヒーレント・トランザクションに過度の待ち時間を加えることのない順序付けされたコヒーレンシ技法を提供することである。
【0018】
本発明の更に別の課題は、各モジュールが本来のペースで、コヒーレンシ検査に応答することができるような、順序付けされたコヒーレンシ技法を提供することである。
【0019】
本発明のこれら、及びその他の課題は、本発明、及び好的実施例に関する以下の詳細な説明、添付図面、及び特許請求の範囲から当業者には明らかになろう。
【0020】
【課題を解決するための手段】
概して言えば、本発明は、順序付けされたコヒーレンシ技法を実現するものである。このコヒーレンシ技法は、バス、メイン・メモリ、バス上で受け取られるトランザクションに応答して、メイン・メモリにアクセスするためのメイン・メモリ制御装置、及びバスに接続された複数のプロセッサ・モジュールを有するシステムで使用される。各プロセッサ・モジュールは、キャッシュ・メモリを有し、バス上で他のプロセッサ・モジュール、及びメイン・メモリ制御装置に対しコヒーレント・トランザクションを送ることが可能である。各プロセッサ・モジュールは、バス上で発行されるコヒーレント・トランザクションを検出するための手段、及びコヒーレント・トランザクションのそれぞれに関して、キャッシュ・コヒーレンシ検査を実行するための手段を備えている。各プロセッサ・モジュールは、バス上で発行される全てのコヒーレント・トランザクションを記憶し、先入れ先出しの順で記憶されたトランザクションのコヒーレンシ検査を実行するためのコヒーレンシ待ち行列を備えている。
【0021】
モジュールがバス上でコヒーレント・トランザクションを送る場合、モジュールは、それ自身のトランザクションをそれ自身のコヒーレンシ待ち行列に置く。従って、各モジュールは正確に同じ順序でコヒーレント・トランザクションを処理する。
【0022】
メモリ制御装置は、発行された最新のキャッシュ書き込みと、発行された最新のコヒーレント読み取りとを照合して、競合の可能性があるか検査し、必要に応じてトランザクションの順序を再配列し、メモリのコヒーレント・イメージを保存する。
【0023】
本発明は、トランザクションがバス上に発行された順序によってトランザクションの順序を定義し、その定義を保存するために必要な動作をとることによって、順序問題が回避されるという観測結果に基づくものである。モジュールのキャッシュは、バス上でトランザクションが発行された順序で、コヒーレンシ検査、及びそれ自身のコヒーレント・トランザクションを処理することによって定義された順序を保存する。以前に保持されていた専用ダーティのキャッシュ・データへのライト・バックによって、コヒーレント・メモリ・システム内におけるデータ位置がちょうど変更されているということが分かると、ほぼ同時に生じている、同じ位置に対する全ての読み取りの前に、キャッシュのライト・バックが処理される。
【0024】
本発明は、1つ以上のプロセッサがキャッシュ・メモリを有する、共用メモリ多重プロセッサ・システムに用いられる順序付けされたコヒーレンシ技法を実現する。各モジュールは、システム・バス上でトランザクションが発行される順序で、コヒーレント・トランザクションのコヒーレンシ検査を処理するのに加えて、それ自身のトランザクション処理も実施する。
【0025】
キャッシュ・メモリを有するプロセッサ、又は他の構成要素モジュールはそれぞれ、発行されたコヒーレント・トランザクションを記憶するためのキャッシュ・コヒーレンシ待ち行列を備えている。トランザクションがバス上で発行されると、キャッシュ・メモリを有する各モジュールが、バス上のトランザクションを検出し、それを各モジュールのキャッシュ・コヒーレンシ待ち行列に置く。キャッシュ・コヒーレンシ待ち行列内のトランザクションに対応するキャッシュ・コヒーレンシ検査が、先入れ先出しの順で実行される。各モジュールは、本来のペースでキャッシュ・コヒーレンシ検査を実行することが可能であり、複数のキャッシュ・コヒーレンシ検査を同時に実行することが可能である。各モジュールは、キャッシュ・コヒーレンシ検査の結果をメイン・メモリ制御装置に送り、トランザクションを発行したモジュールに対し、最新のデータ、及びコヒーレンシ情報を提供する。
【0026】
順序を保存するため、コヒーレント・トランザクションを発行した各モジュールは、それ自身のコヒーレンシ待ち行列にそれ自身のトランザクションを置く。従って、そのモジュールは、自身のトランザクションが実行される前に、以前に発行されている全てのコヒーレント・トランザクションに対応するコヒーレンシ検査を実行する。各モジュールが、バス上で発行されるトランザクションを同じ順序でそのコヒーレンシ待ち行列の中に置くので、各モジュールは、同じ順序でトランザクションの発生を知ることになる。
【0027】
メモリ制御装置は、発行された最新のキャッシュ書き込みと、発行された最新のコヒーレント読み取りを照合して、競合の可能性を検査し、必要に応じてトランザクションの順序を再配列し、メモリのコヒーレント・イメージを保存する。キャッシュ書き込みと以前のコヒーレント読み取りトランザクションに競合があれば、メモリ制御装置は、コヒーレント読み取りトランザクションの前に、キャッシュ書き込みが処理されるように順序の再配列を行って、読み取りトランザクションの処理がされる前に、メイン・メモリのデータが最新であるよう保証する。
【0028】
【実施例】
本発明による順序付けされたコヒーレンシ技法を、例示のコンピュータ・システム10に関連して説明する。順序付けされたコヒーレンシ技法の説明を行う前に、コンピュータ・システム10の動作をある程度詳細に理解しておくことは有用である。
【0029】
コンピュータ・システム10は、バス12、及びバス12に接続された複数の構成要素を有する多重プロセッサ・コンピュータである。これらの構成要素は、メイン・メモリ制御装置14、入出力モジュール16及び18、及びプロセッサ・モジュール20、22、24、及び26を含む。これらの構成要素は、バス12上で相互にトランザクションを送る。
【0030】
以下でより詳細に説明するように、メイン・メモリ制御装置14は「ホスト・モジュール」とみなすことができ、残りの構成要素は「クライアント・モジュール」とみなすことができる。メイン・メモリ制御装置/ホスト・モジュールは、もしあれば、所与のサイクルの間にバス上で許可されているトランザクションのタイプを指定するクライアント・オプション信号を各クライアント・モジュールに送る。所与のサイクルの間におけるバスの所有者は、そのサイクルを支配するクライアント・オプション信号によって許可されるタイプのトランザクションのみを開始できる。次の有効なサイクルの間におけるバスの所有者も、各クライアント・モジュールからの調停信号、及びバスの制御を保持する必要があるかどうかを示す現在のバスの所有者によって送られる信号に加えて、クライアント・オプション信号に基づく調停によって決定される。
【0031】
プロセッサ・モジュール20、22、24、及び26は、コンピュータ・システム10のメイン・プロセッサであり、このシステムのためのソフトウェアは全てのプロセッサ上で同時に稼働する。プロセッサ・モジュール20、22、24、及び26はそれぞれ、調停信号送信(即ち、ARB)ライン28、30、32、及び34を制御し、ARBラインは、各モジュールを残りのプロセッサ・モジュールに接続する。プロセッサがバス12を使用したい場合、このプロセッサのARBライン上の他のプロセッサ・モジュールに所定の信号を送る。この信号は、次の有効なバス・サイクルの間におけるバスの所有者を決定するための調停に使用される。
【0032】
入出力モジュール16、及び18は、コンピュータ・システム10と入出力装置(図示せず)の間のインタフェイスとして働く。入出力モジュール16、及び18はそれぞれ、入出力アダプタを含んでいる。入出力モジュール16、及び18はそれぞれ、ARBライン36、及び38を制御する。入出力モジュールがバス12を使用したい場合、この入出力モジュールのARBライン上の残りのクライアント・モジュールに所定の信号を送る。この信号は調停に使用される。
【0033】
メイン・メモリ制御装置14は従来の方法で、メイン・メモリ(図示せず)から情報を読み取り、メイン・メモリに情報を記憶する責任がある。メイン・メモリ制御装置14は直接、又は従来型のバスを介してメモリとのインタフェイスを行う。上述のように、メイン・メモリ制御装置14は、バス制御のためにホスト・モジュールとしても働くことが好ましい。メイン・メモリ制御装置14は、各クライアント・モジュールに直接接続されたCLIENT_OPライン40を制御する。メイン・メモリ制御装置14は、次の有効なバス・サイクルの間にバス12上にどんなタイプのトランザクションを置いていいかを示すための信号を、CLIENT_OPライン40上の各クライアント・モジュールに送る。
【0034】
バス12は高性能のプロセッサ-メモリ入出力相互接続バスである。バス12は、分割トランザクション・バスである。例えば、バス12上で読み取りトランザクションが発行された後、その読み取りトランザクションを発行したモジュールがバスを放棄して、他のモジュールが他のトランザクションのためにバスを使用できるようにする。要求されたデータが使用可能である場合、その読み取りトランザクションに関する応答モジュールはバスの調停を行い、次にデータを送る。書き込みトランザクションは分割されておらず、従って、このマスタはアドレス・サイクルの直後に書き込みデータを送る。
【0035】
バス12は、主にデータ転送に関係する、ADDR_DATAバス、MASTER_IDバス、及びTRANS_IDバスの少なくとも3つのバスを含むことが好ましい。バス12は又、バス12の制御の調停に関係するLONG_TRANSバスも含む。
【0036】
ADDR_DATAバスはアドレス情報、及びデータを送るために使用される。ADDR_DATAバスがアドレス関連情報を運ぶサイクルを、アドレス・サイクルと呼び、ADDR_DATAバスがデータを運ぶサイクルをデータ・サイクルと呼ぶ。例えば、書き込みトランザクションは一般に、1回、又は複数回のデータ・サイクルの直前に単一アドレス・サイクルを有している。バスの所有者は、データを書き込みたいアドレスを示す書き込みトランザクションを開始して、以降のサイクルの間にデータを送る。読み取りトランザクションは一般に、読み取るためにシークされるアドレスを示すために、バスの所有者によって使用される単一アドレス・サイクルを有している。このアドレス・サイクルの少し後に、要求に応答するモジュールによって要求モジュールにデータが送られる1回、又は複数回のデータ・サイクルが続く。アドレス関連情報やデータが送られないアイドル・サイクルも発生する。
【0037】
MASTER_IDバス、及びTRANS_IDバスは、分割トランザクションに関して、リターンされたデータが元のトランザクションに固有に関連付けられるように一緒に使用される。各分割トランザクション「読み取り」は、トランザクションを発行しているモジュールを識別するMASTER_IDバス上のMASTER_ID信号、及びそのモジュールによって送られた他のトランザクションと前記トランザクションを区別するTRANS_IDバス上のTRANS_ID信号によって識別される。例えば、分割トランザクション「読み取り」は、MASTER_ID信号とTRANS_ID信号の固有の組合せと共に送られる。MASTER_IDとTRANS_IDは次に、要求されたデータのリターン時に一緒に送られ、その結果、リターンされたデータが、適当なトランザクションと関連付けされる。この機構によって、トランザクションの順序がトランザクションの識別にとって重要なものでなくなったため、トランザクションのリターンは、トランザクションが発行された順序以外の順序で戻ってくることができる。固有の識別を可能にするには、所与のトランザクションIDを有するトランザクション1つだけが、所与の時点においてモジュールの中で識別可能となることである。しかし、トランザクションはMASTER_IDによって区別できるので、同じトランザクションIDを2つ以上の別々のモジュールで同時に使用することができる。
【0038】
LONG_TRANSは、長いトランザクションが完了するまで、バス12の制御を保持するために現在のバスの所有者によって使用される。例えば、モジュールが一連のサイクルの間に多量のデータを書き込む必要が生じることがある。LONG_TRANSが示されると、以下でより詳細に説明するように、より高い優先順位のクライアント、又はホストによって、他のトランザクションをそのデータの中に挿入させることができなくなる。
【0039】
好的実施例では、CLIENT_OPバスは表1に示した信号をサポートする。
【0040】
【表1】
【0041】
ANY_TRANS、HOST_CONTROL、ONE_CYCLE、及びNONE_ALLOWEDクライアント・オプション信号は比較的簡単である。ANY_TRANSクライアント・オプション信号は、関連するサイクルの間に全てのトランザクションが許可されることを示す。HOST_CONTROLクライアント・オプション信号は、関連するサイクルの間にホストがバスの制御をシークすることを示す。ONE_CYCLEクライアント・オプション信号は、1サイクルのトランザクションしか許可されないことを示す。NONE_ALLOWEDクライアント・オプション信号は、トランザクションがいっさい許可されないことを示すために使用される。
【0042】
RET_ONLYクライアント・オプション信号は、以前に保持されていた専用ダーティ・キャッシュ・ラインのリターン(ライト・バック)、又は以前のトランザクションに対する応答のみが許可されていることを示す。例えば、プロセッサ24がプロセッサ20のキャッシュで専用ダーティであるキャッシュ・ラインのコヒーレント読み取りを発行した場合、プロセッサ20はキャッシュ間コピーでそのキャッシュ・ラインを供給することができる。そのキャッシュ間コピーのトランザクションは、キャッシュ間コピーがコヒーレント読み取りに対する応答であるため、RET_ONLYクライアント・オプション信号の影響下で開始されうる。同様に、入出力モジュール16は、そのリターンされるデータが入出力読み取りトランザクションに対する応答なので、RET_ONLYクライアント・オプション信号の影響下で以前の入出力読み取りトランザクションからデータをリターンすることができる。
【0043】
NO_IOクライアント・オプション信号、及びATOMICクライアント・オプション信号は入出力モジュール16、及び18に関連している。図1に示すように、入出力モジュール16、及び18は、モジュールがもはや入出力トランザクションを受け入れられないことを示す信号をメモリ制御装置14に送るために、それぞれSTOP_IOライン58、及び60を制御することが好ましい。入出力モジュール16、及び18は、メモリ・システムを効果的に制御するための信号をメモリ制御装置14に対して、かつ相互に送るために、それぞれSTOP_MOSTライン62、及び64も制御することが好ましい。
【0044】
ホストがSTOP_IO信号を受信すると、ホストはNO_IO信号を示す。クライアント・オプション信号がNO_IOの場合、入出力トランザクションを除く全てのトランザクションが許可される。フロー制御が、通常ANY_TRANSを許可するものと仮定すると、クライアントがSTOP_MOSTを示したことに直接応答して、クライアント・オプション信号ATOMICが生成される。クライアント・オプション信号ATOMICは、STOP_MOSTを示したクライアントに対して、バス12上でいくつかの連続したトランザクションを実行することを許可する。他の全てのクライアントは、ATOMICが示されたサイクルの間にバスを獲得した場合、以前に送られたトランザクション、又は以前に保持されていた専用ダーティのキャッシュ・ラインへのライト・バックに対して応答することだけが許可される。ホストは、通常クライアント・オプション信号RET_ONLYを利用して、要求モジュールに対するデータのリターン、及び従来のデータのライト・バックといった、応答タイプのトランザクションに、全てのクライアントを制限することも可能である。従って、不可分所有者が存在する場合、不可分所有者に関して有効なクライアント・オプション信号はANY_TRANSであり、
他の全てのクライアントに関して有効なクライアント・オプション信号はRET_ONLYである。
【0045】
クライアント・オプション信号SHAR_RTNは、各モジュールがキャッシュ・メモリを有するシステムに関するコヒーレンシ技法に関連して使用される。各クライアント・モジュール(プロセッサ・モジュール、及び入出力モジュールの両方)は、キャッシュ・メモリを有し、メモリ制御装置14が、1つ、又は複数のキャッシュ・メモリに記憶される可能性のあるデータの読み取り、又は書き込みを含むコヒーレント・トランザクションを統合することができ、それにより、プロセッサによって最新のデータが使用されるようにする信号を直接、メモリ制御装置14に送るための少なくとも1つのコヒーレント・トランザクション信号の送信ライン(即ち、COHライン)を制御する。プロセッサ・モジュール20、22、24、及び26は、それぞれCOHライン42、44、46、及び48を制御する。入出力モジュール16はCOHライン50、及び52を制御する。入出力モジュール18はCOHライン54、及び56を制御する。SHAR_RTN信号は、メイン・メモリ制御装置が共有状況を有するデータをリターンしていることを示している。
【0046】
典型的なトランザクション速度を扱うため、3組の主なトランザクション待ち行列が使用される。メイン・メモリ制御装置14は、各待ち行列の満杯/空き状況を監視し、待ち行列がオーバフローしないようにクライアント・オプション信号を発行する。コンピュータ・システム10に用いられるこの3つのタイプの待ち行列について、以下で説明する。
【0047】
第1に、各入出力(I/O)モジュールは入出力待ち行列を有し、これはバス12から入出力モジュールに向けられたトランザクションを入出力装置、又は入出力バスに送るために保持する。入出力装置に向けられたプロセッサの読み取り、及び書き込みは、入出力バス、及び/又は入出力装置上でトランザクションが処理されるまで、入出力待ち行列内で待機する。このような待ち行列は一般に、トランザクションがバス12上で送られる速度で扱う必要がある。通常、バス12は60-120MHzの周波数を有し、入出力バスは20MHzより低い周波数を有する。従って、トランザクションは、それらが入出力バス、又は入出力装置によって処理されるよりずっと速い速度で入出力モジュールに送ることができる。
【0048】
第2に、メイン・メモリ制御装置14は、メイン・メモリ読み取り、及びメイン・メモリ書き込みトランザクションを保持するための1つ又は複数のメモリ待ち行列を有する。このようなメモリ関連トランザクションは、読み取り、又は書き込みがメモリ内で実行されるまでメモリ待ち行列内に記憶される。読み取りと書き込みに別々の待ち行列を使用することが好ましい。コヒーレンシ検査が完了するまでコヒーレント読み取り、又はコヒーレント書き込みは実行できない。
【0049】
最後に、プロセッサ・モジュールと入出力モジュールの両方を含む、キャッシュ・メモリを有する各モジュールは、コヒーレント・トランザクションを先入れ先出し(FIFO)順で記憶するためのキャッシュ・コヒーレンシ待ち行列を有する。コヒーレント・トランザクションは、要求されたデータが他のキャッシュにあるかどうかを調べ、又はキャッシュが最新のものかどうかを検証するために、他のキャッシュを検査することが必要になる全てのトランザクション(読み取り等)である。そのようなトランザクションは、バス12上で開始されたトランザクションのアドレス・サイクルの間に送られる信号によって示される。キャッシュ・メモリを有する各モジュールは、バスを監視し、本明細書ではCCC待ち行列と呼ぶ、各モジュールのキャッシュ・コヒーレンシ待ち行列にコヒーレント・トランザクションをロードする。コヒーレント・トランザクションは、特定のモジュールがそのキャッシュを検査し、そのコヒーレンシ検査の結果をメイン・メモリ制御装置14に報告するまで、前記モジュールのCCC待ち行列内で待機する。メイン・メモリ制御装置14は、全てのモジュールによってコヒーレンシ検査の結果が報告されるまで待機し、次に、コヒーレント・トランザクションに応答する。そのデータの専用ダーティ・コピーを有するクライアント・モジュールがない場合、メイン・メモリ制御装置14はメイン・メモリからデータを供給する。前記クライアント・モジュールがある場合、専用ダーティ・コピーを有するクライアント・モジュールがデータを供給し、メイン・メモリ制御装置14がその新しいデータ値でメイン・メモリを更新する。この動作は単一トランザクションで実行される。このトランザクションに関するアドレス・サイクルが、データのキャッシュ間コピーが後に続く、要求モジュールに示される。メイン・メモリ制御装置は、そのアドレス・サイクルをメイン・メモリに対する書き込み要求として解釈する。従って、要求モジュール、及びメイン・メモリ制御装置の両方がバスからデータを得て、それに従って動作する。このアドレス、及びデータ・サイクルと共に使用されるMASTER_ID、及びTRANS_IDは、元のコヒーレント読み取りトランザクションのものと同じなので、このデータ・サイクルは、通常のメモリのリターンに関するものと同一である。
【0050】
メイン・メモリ制御装置14は、メモリ待ち行列、CCC待ち行列、及び入出力待ち行列の全ての待ち行列の現在の満杯/空き状況に関する情報を受け取り、処理するための中央位置として働く。以下でより詳細に説明するように、各待ち行列のタイプを記録するために異なる手順が使用される。内部メイン・メモリ待ち行列に関して、メイン・メモリ制御装置14は内部的に、そのメモリ待ち行列がどの程度満たされているかについての記録を保持する。入出力待ち行列に関して、各入出力モジュールは入出力待ち行列が満杯に近い場合、メイン・メモリ制御装置14に対して、用意されたSTOP_IO信号を示すことによって、その入出力待ち行列の状況をメイン・メモリ制御装置14に報告する。
【0051】
CCC待ち行列に関しては、メイン・メモリ制御装置14は、バス上で発行されたコヒーレント・トランザクションの数を検出し、各モジュールがいくつのコヒーレント・トランザクションに応答したかという記録を保持し、それによって各モジュールのCCC待ち行列の満杯の状況を間接的に監視する。より具体的には、メイン・メモリ制御装置14は、全てのコヒーレント・トランザクションを、それが発行された時に受け取る。又、上述のように、キャッシュを有する各モジュールは、各コヒーレント・トランザクションを受け取り、受け取ったコヒーレント・トランザクションに関するモジュールのキャッシュ・コヒーレンシ検査の結果をメイン・メモリ制御装置14に送る。この応答は、各モジュールからメイン・メモリ制御装置14に用意されたバスであるCOHライン42ないし56上でメイン・メモリ制御装置14に送られる。従って、メイン・メモリ制御装置14は、モジュールから受け取ったキャッシュ・コヒーレンシ応答を、発行されたコヒーレント・トランザクションの数と比較することによって、モジュールのCCC待ち行列に残っているコヒーレント・トランザクションの数を判定することができる。
【0052】
このプロセスは、「スコアボード」上で行われるものとみなすことができる。コヒーレント・トランザクションは、発行されると、このボード上に置かれ、そのトランザクションが各モジュールのCCC待ち行列にあることを示す。メイン・メモリ制御装置は、そのようなトランザクションがあるかどうかに関してバスを監視する。メイン・メモリ制御装置14は、COHライン上の各モジュールからコヒーレンシ応答を受け取ると、モジュールの応答を記録し、そのモジュールによって処理されるべき次のCCC要求にポインタを移動し、そのモジュールのCCC待ち行列にあるものとしてリストされているトランザクションの数を1だけ減ずる。メイン・メモリ制御装置14は又、所与のコヒーレント・トランザクションに関する全てのコヒーレンシ応答を受け取った時間も知っているので、そのコヒーレント・トランザクションに応答する時間を知っている。
【0053】
メイン・メモリ制御装置14は、様々な待ち行列の状態に基づいて、CLIENT_OPバスを使用し、待ち行列の過負荷となる全てのトランザクションの発行を防ぐ。バス12の調停に関して上述したように、メイン・メモリ制御装置14は、ホスト・モジュールとして働き、どんなタイプのトランザクションが安全に開始できるのかを示す信号をCLIENT_OPバス上の他の全てのモジュールに送る。モジュールがバスの調停に勝利すると、調停状態の間にCLIENT_OPバス上でどんな符号が駆動されたかを検査し、調停の勝利者がどんなトランザクション(又はリターン)を開始できるかを調べる。
【0054】
次に、図2を参照して、本発明によるコンピュータ・システムの動作を詳細に説明する。図2は、コンピュータ・システム10、及び図1に関して説明した要素に機能的に対応する、コンピュータ・システム100の主要な要素を示している。コンピュータ・システム100は、バス112、メイン・メモリ115に接続されたメイン・メモリ制御装置114、入出力モジュール116、プロセッサ・モジュール120、CLIENT_OPライン140、コヒーレンシ「COH」ライン142、152、及びSTOP_IOライン158を備えている。これらの要素はそれぞれ、図1に関して説明した、バス12、メイン・メモリ制御装置14、入出力モジュール16、プロセッサ・モジュール20、CLIENT_OPライン40、COHライン42、52、及びSTOP_IOライン58に対応している。図1に関して説明した、これらの要素の態様、及びそれらの相互関係はここでは繰り返さない。
【0055】
説明を明確にするために、図2には、1つのプロセッサ・モジュールと1つの入出力モジュールしか示していない。モジュール120と同じ追加プロセッサ・モジュール、及びモジュール116と同じ追加入出力モジュールが、図1に示した方法でバス112に接続されることが理解されよう。
【0056】
コンピュータ・システム100は、図1に関して説明したこれらの要素の他に、入出力モジュール116に従来の方法で接続された入出力バス160を含む。入出力モジュール116は、入出力待ち行列162、CCC待ち行列164、及びメモリ・キャッシュ166も含む。加えてプロセッサ・モジュール120は、CCC待ち行列168とメモリ・キャッシュ170を含む。メイン・メモリ制御装置114は、メモリ制御プロセッサ172、少なくとも1つのメモリ待ち行列174、及びスコアボード178を含む。図示されていないプロセッサ・モジュール、及び入出力モジュールはそれぞれ、プロセッサ・モジュール120、及び入出力モジュール116と同じ構成要素を含むことが分かる。
【0057】
動作時に、入出力モジュール、又はプロセッサ・モジュールによって発行されたコヒーレント・トランザクションはバス112上に送られる。このコヒーレント・トランザクションは、各モジュールによって検出され、各クライアント・モジュールのCCC待ち行列内とスコアボード178上に置かれる。CCC待ち行列164、及び168にFIFO順で記憶されたコヒーレント・トランザクションはそれぞれ、メモリ・キャッシュ166、及び170と突き合わせて検査され、その結果がそれぞれライン152、及び142でメイン・メモリ制御装置114に報告される。結果は、全てのモジュールが当該のトランザクションに関して報告するまでスコアボード上に記憶される。メイン・メモリ制御装置114は、ライン152、及び142で応答されたコヒーレント・トランザクションの数を、スコアボード178内にリストされたコヒーレント・トランザクションの数と比較して、CCC待ち行列164、及び168の満杯/空き状況を判定する。
【0058】
例えば、バス112上で発行されたコヒーレント・メモリ読み取りは、モジュール116、及び120によって検出され、コヒーレンシ検査のために前記モジュールのCCC待ち行列内に置かれる。どのモジュールにもデータの専用ダーティ・コピーがないことを示すコヒーレンシ検査の結果が、メイン・メモリ制御装置114に報告される。全てのモジュールが報告し終わると、メイン・メモリ制御装置114は、要求モジュールにデータを提供し、各モジュールがそのコヒーレント・トランザクションに応答したことをスコアボード上に示し、スコアボードのこのラインを着信トランザクションによって自由に使用できるものとしてマークする。
【0059】
入出力装置への書き込みを行うような入出力トランザクションは、入出力待ち行列162を介して入出力バス160に送られる。入出力モジュール116は、入出力待ち行列162の状況を監視し、入出力待ち行列162が満杯に近づくと、この情報をライン158でメイン・メモリ制御装置114に報告する。例えば、プロセッサ・モジュール120が入出力モジュール116にデータを書き込むことでビジー状態である場合、待ち行列162がトランザクションで満杯になり、STOP_IO信号が発行されることがある。メイン・メモリ制御装置114は、NO_IOクライアント・オプション信号を発行する。
【0060】
メイン・メモリ制御装置114は、それ自身のメモリ待ち行列の状況も監視する。従って、メイン・メモリ制御装置114は、コンピュータ・システム100における全ての待ち行列の満杯/空き状況に関する情報を有している。メイン・メモリ制御装置は、そのメモリ待ち行列が満杯に近づいたことを検出すると、クライアント・オプション信号NONE_ALLOWEDを発行する。以前に発行されたメモリ・トランザクションが処理されるにつれて、メモリ待ち行列は空きができ、より制限のないクライアント・オプション信号を発行することが可能になる。
【0061】
より一般的には、全ての待ち行列の満杯/空き状況に関する、メイン・メモリ制御装置114に利用可能な情報に基づいて、メイン・メモリ制御装置114内のメモリ制御プロセッサ172が、待ち行列のオーバフローを生じることなく、次の有効なサイクルの間に発行できるトランザクションがどのタイプかを判定する。メモリ制御プロセッサ172は、次の有効なバス・サイクルの間に、待ち行列のオーバフローを生じさせることのないトランザクションだけが実行されるように、どのクライアント・オプション信号を発行すべきかを判定する。調停の勝利者は、クライアント・オプション信号によって許可されたトランザクションだけを発行する。従って、中断させる必要のあるトランザクションは一切なく、モジュール間でハンドシェイクを行う必要もない。
【0062】
例えば、入出力待ち行列162が満杯に近づきつつあると仮定する。入出力モジュール116はデータを受け取るためにビジー状態である。入出力装置への他の書き込みがバス112で入出力モジュール116に送られ、入出力待ち行列162に置かれる。入出力モジュール116は、待ち行列162が満杯に近づいたことを検出すると、メイン・メモリ制御装置114にSTOP_IO信号を送る。メイン・メモリ制御装置114は、クライアント・オプション信号NO_IOを駆動し、次のバスの所有者は、入出力装置に対するトランザクションを駆動することはない。
【0063】
更に例を挙げると、メイン・メモリ制御装置114は1つ、又は複数のコヒーレンシ待ち行列が満杯に近づきつつあることを(メイン・メモリ制御装置自体のスコアボードを使用して)検出することができる。メイン・メモリ制御装置114は、クライアント・オプション信号RET_ONLYを駆動する。バスの所有者は追加の読み取りトランザクションを駆動しない。しかし、データのリターン、及びコヒーレンシ検査の応答は許可される。従って、CCC待ち行列は最終的に空になっていき、より制限のないクライアント・オプション信号が発行される。
【0064】
ここでは、本発明の順序付けされたコヒーレンシ技法について更に説明する。上述のように、キャッシュ・メモリを有する各コヒーレント・モジュールは、バス上で各コヒーレント・トランザクションが発行された後に、各自のキャッシュに対してコヒーレンシ検査を実施する必要がある。従って、これらのモジュールは、コヒーレント・トランザクションに関してバスを監視する。バス上で発行されるコヒーレント・トランザクションは、そのモジュールによって発行されたコヒーレント・トランザクションも含めて、そのモジュールのコヒーレンシ待ち行列内に置かれる。他のモジュールのトランザクションが、コヒーレンシ待ち行列の先頭に達すると、そのモジュールはそのトランザクションについてキャッシュ・コヒーレンシ検査を実行し、次にそのCOHラインで、そのトランザクションに関するキャッシュ・コヒーレンシ状況をメイン・メモリ制御装置に報告する。モジュール自身のトランザクションがそのコヒーレンシ待ち行列の先頭に達すると、そのモジュールは、トランザクションを発行するために自身のキャッシュを更新し、そのラインにマークをして、データのリターンがまだ未完了であることを表す。更に、このモジュールは、そのCOHラインで、メイン・メモリ制御装置にキャッシュ・コヒーレンシ状況を報告するが、必ず信号COH_OK(下記参照)であり、チェックが完了し、競合が見つからなかったことを示す。
【0065】
メイン・メモリ制御装置は、別のキャッシュ・コヒーレンシ状況の報告を受け取り、以下で述べる方法で、コヒーレント・トランザクション要求に関するキャッシュ・コヒーレンシ状況の完了を判定する。
【0066】
各キャッシュ・ラインの状況は、4つのうちの1つ、即ち「無効」、「共用」、「専用ダーティ」、及び「専用クリーン」のうちの1つで定義される。「共用」ラインは、同時に2つ以上のモジュールのキャッシュ内に存在することが許可されるものである。定義によれば、全ての共用ラインはクリーンである。ラインの専用コピーは、システム内の任意のデータ・キャッシュ内で、いかなる時点においても1つだけが許可される。「専用」ラインは、クリーン、又はダーティのどちらかである。
【0067】
コヒーレンシ状況は、更に後述する、以下の信号を使用して、COHラインで各モジュールによって報告される。
【0068】
【表2】
【0069】
クライアントは、コヒーレンシ状況の報告で活動していない場合は必ず、COH_NOPをそのCOHバスに駆動する。クライアントは、コヒーレンシ状況の報告を行う準備ができると、そのコヒーレンシ検査の結果に基づいて、単一バス・サイクル毎に、COH_SHARED、COH_COPYOUT、又はCOH_OKを駆動する。
【0070】
報告モジュールが、要求された専用ダーティのデータ・ラインを所有し、コヒーレント・トランザクションが読み取りトランザクション、又はフラッシュ・トランザクションである場合、この報告モジュールは、COH_COPYOUTを駆動して、後続トランザクション内の要求モジュールに、バス上でデータを提供することを指定する。モジュールが、COH_COPYOUTの状況を送る場合、そのモジュールはそのラインを書き出す必要がある。
【0071】
報告クライアントが、要求されたラインの共用、又は専用クリーン・コピーを有しており、そのラインのコピーを保持する場合、報告クライアントはCOH_SHAREDを駆動して、要求モジュールがそのコピーを共用としてマークするよう指定する。報告モジュールが現在、専用クリーン・コピーを有している場合、そのコピーを共用としてマークする。2つ以上のクライアントが、COH_SHARED状況を送ることが可能である。メイン・メモリ制御装置は応答時に、メイン・メモリ制御装置がバスの調停を行う時に、要求モジュールに対してCLIENT_OPバス上でSHAR_RTNの符号を使用することによって、そのラインが共用にマークされていることを表し、データをリターンする。
【0072】
報告クライアントがラインの供給を行っておらず、そのラインの共用コピーを保持していないという場合には、COH_OKを駆動して、コヒーレンシ検査が完了しており、報告するものがないことを示す。報告モジュールがコピーを有していないか、コヒーレント・トランザクションの結果、コピーに無効のマークがされているか、又は報告モジュールがコヒーレント・トランザクションを発行した場合に、COH_OKが発行される。
【0073】
メイン・メモリ制御装置は、上述のスコアボードを使用してコヒーレンシ応答の記録を保持する。各モジュールが、特定のトランザクションに関するコヒーレンシ状況を報告すると、メイン・メモリ制御装置は、その信号を分析して、要求モジュールに最新データが送られるようにする。ラインの専用ダーティ・コピーを有しているモジュールがなければ、メイン・メモリ制御装置は、データが専用で使用可能か、共用で使用可能かに関する状況と共に、データを供給する。それ以外であれば、専用ダーティのデータを有しているモジュールが、メイン・メモリ制御装置によって非コヒーレントのキャッシュ・ライト・バック・トランザクションとして扱われ、従って必要なメモリ更新を行うキャッシュ間コピー・トランザクションによってデータ供給を行うので、メイン・メモリ制御装置は、このトランザクションに関して「忘れる」ことができる。
【0074】
2つ以上のコヒーレンシ検査の同時実行が可能である。同時に検査できる数は、コヒーレント・トランザクションの進行を監視するCCCトランザクション待ち行列の深さのみに制限される。
【0075】
上述のように、コヒーレント・トランザクションは、発行された時にバス上で検出され、先入れ先出しの順で、コヒーレンシ検査のために各モジュールのコヒーレンシ待ち行列内に置かれる。各モジュールは、それ自身のトランザクションを発行した時に、そのトランザクションもそれ自身の待ち行列内に置き、それが待ち行列の先頭に達するまで待って、そのトランザクションに対するコヒーレンシ検査を実行する。従って、各クライアントは、コヒーレント・トランザクションがバス上で発行されたのと正確に同じ順序で、各コヒーレント・トランザクションに関するコヒーレンシ検査に対して応答を送る。
【0076】
メイン・メモリ制御装置は、全てのコヒーレンシ検査(トランザクションを発行したモジュールによる検査を含む)が完了するまで待って、データの供給をさせる。従って、コヒーレント・トランザクションは、一般に、発行されるのと同じ順序で完了する。
【0077】
好適実施例では、専用ダーティのキャッシュ・データのメモリに対する非コヒーレント書き込みは、特殊な事例として扱われ、この場合、こうした書き込みは、キャッシュ・ライト・バックと呼ばれる。キャッシュ・ライト・バック以外に、好適実施例では、コヒーレント読み取り、非コヒーレント読み取り、コヒーレント書き込み、及び非キャッシュ非コヒーレント書き込みといった、トランザクションの種類を認識している。好適実施例では、特殊なトランザクション符号化を使用して、キャッシュ・ライト・バックと通常の非コヒーレント書き込みを区別する。更に、上述のキャッシュ間コピー・トランザクションは、ダーティのキャッシュ・データでメモリ更新を行う時の副作用によって、キャッシュ・ライト・バックとして扱われる。キャッシュ・ライト・バック以外の全てのトランザクションは、バス112上で発行される論理的順序で処理されなければならない。キャッシュ・ライト・バックは、システムのパイプライン化、及び分割トランザクションの性質のため、特殊である。例えば、プロセッサ20は、所定のアドレスに読み取りトランザクションを発行することができる。その直後に、プロセッサ22は、同じアドレスにキャッシュ・ライト・バック・トランザクションを発行することができるが、プロセッサ22がプロセッサ20の読み取りトランザクションに関してコヒーレンシ検査を実行するのは、キャッシュ・ライト・バック・トランザクションを発行した後に限られる。キャッシュ・ライト・バックが、他のトランザクションとして処理された場合、プロセッサ22はプロセッサ20によって要求されたデータのコピーを有していないことを示すが(既にバスに書き出しているため)、メイン・メモリ制御装置114は、バス112上で、プロセッサ22の書き込みの前に、プロセッサ20の読み取りがあることが分かるので、まず読み取りを実行し、メイン・メモリから失効データをリターンする。
【0078】
これを防ぐため、メモリの読み取りに続いて、同じアドレスに対するキャッシュ・ライト・バックが行われる場合、メイン・メモリ制御装置114は、書き込まれているデータが、実際に、読み取りを満たすためにリターンすべきものであると仮定する。従って、キャッシュ・ライト・バックは、読み取りの前に、効果的に順序の再配列がなされる。当業者には明らかなように、ほぼ同じ論旨が、入出力DMA書き込みに関するキャッシュ・ライト・バックの順序にも当てはまる。
【0079】
読み取りの実行、及び要求されたデータのリターンに要する時間は、システムの性能に直接影響するので、最短に維持しなければならない。一方、書き込みは、重大ではない。書き込みを記憶するスペースがある限り、書き込みの実行は、その書き込みが必要になるまで、又は書き込みの実行において順序を保持することが必要になるまで、より重大な読み取りを優先して、延期することが可能である。
【0080】
最大性能(最小の読み取り遅延)のために、メイン・メモリ制御装置114は、読み取りの推論的実行を実施する。メイン・メモリ制御装置114には、バス112上で読み取り要求を受け取った時点で、まだ、同じアドレスに対する後続のキャッシュ・ライト・バックがあるかどうか、又は読み取りが、別のキャッシュからのキャッシュ間コピーによって満たされるかどうか分からない。実際、メイン・メモリ制御装置114は、既に待ち行列に入れられた、同じアドレスに対する書き込みを有している可能性があるが、チェックに時間はかからない。これらの全ての場合において、できる限り速く、その読み取りがメモリに送られる。後で、メイン・メモリから読み取られたデータが正確でないと分かれば、そのデータは廃棄され、必要であればメモリから再び読み取りが行われる。
【0081】
読み取り、及びキャッシュ・ライト・バックを実行するための上記手順の実施は、メイン・メモリ制御装置114内の3つの先入れ先出しメモリ待ち行列、即ち、上述の第1待ち行列(待機待ち行列)175、第2待ち行列(準備完了待ち行列)176、及び読み取り待ち行列(通常読み取り待ち行列)174によって達成される。全ての読み取りが読み取り待ち行列174に入れられる。読み取り待ち行列の先頭のトランザクションが、できるだけ速くメモリに対し発行される。非コヒーレント・キャッシュ・ライト・バック以外の全てのトランザクションが、第1待ち行列175に入れられる。読み取りが、読み取り待ち行列174と第1待ち行列175の両方に入れられる点に留意されたい。キャッシュ・ライト・バックは、直接第2待ち行列176に入れられ、それによって、第1待ち行列内の他の読み取り、及びライト・バックがバイパスされる。以下で更に述べるように、これによって、キャッシュ・ライト・バックが、他のトランザクションの後で、バス112上に発行されたとしても、効果的にキャッシュ・ライト・バックが、読み取り、及びDMA書き込みより先になるように順序付けられる。
【0082】
第1待ち行列175の先頭のトランザクションが、読み取りトランザクションである場合、対応するデータが、利用可能で、必要なコヒーレンシ検査が完了していれば、更に、そのデータが正しいデータであれば、そのデータがバス112上でリターンされる。正しいデータを含んだ書き込みの前に、読み取りが実行されると、そのデータは正しくない可能性がある。
【0083】
失効データのチェックは、次のように実施される。書き込みがメモリに対して発行される毎に、そのアドレスが第1待ち行列内に存在する全ての読み取りのアドレスと比較される。一致すれば、失効データを受け取る可能性があることを示すフラグが、その読み取りに関してセットされる(その読み取りが、以前にメモリに対して発行されている可能性があるため)。又、読み取りが第1待ち行列の先頭にあり、バス112上でデータをリターンする準備ができている場合にも必ず、そのアドレスと、第2待ち行列内にある全ての書き込みのアドレスが比較される。一致すれば、その読み取りにおいて、失効データを受け取ったものと仮定される。いずれにせよ、メモリに対して読み取りが再び発行されなければならない。この再発行は、第2待ち行列にその読み取りをコピーし、次に第2待ち行列内の全てのトランザクションを(順番に)メモリに対して発行することによって実施される。この読み取りの再発行が完了するまでに、論理的順序がこの読み取りより前になるべき書き込みは全て、メモリに対して発行されているので、その読み取りに関して、正しいデータを受け取ることになる。
【0084】
第1待ち行列の先頭にあるトランザクションが、書き込み(コヒーレント書き込み、又は非キャッシュ非コヒーレント書き込み)である場合、そのトランザクションは第1待ち行列から第2待ち行列に転送される(やはり、必要なコヒーレンシ検査が完了していれば)。最終的に、書き込みは、それが第2待ち行列の先頭に達した少し後に、メモリに対して発行される。これによって、他の書き込みに関して非コヒーレント・キャッシュ・ライト・バックの順序が保証される。
【0085】
当業者には、前記の説明、及び添付図面から、本発明に対する様々な修正が可能なことが明らかになろう。従って、本発明は、特許請求の範囲によってのみ制限されるべきものである。
【0086】
以下に本発明の実施態様を列挙する。
【0087】
1. バスに接続された処理モジュールによって実行されるべきトランザクションを指定する情報の送信、及び受信のためのバスと、
前記バス上にトランザクションを送る機能を提供するための、前記バスに接続されたメモリ制御装置であって、前記トランザクションが前記機能を提供する前にコヒーレンシ検査を要求するトランザクションを含む前記メモリ制御装置と、前記バスに接続された複数の処理モジュールであって、前記各処理モジュールが、前記処理モジュールに関連したメモリ内に記憶されたデータにコヒーレンシ検査を実施し、前記コヒーレンシ検査の結果を前記メモリ制御装置に報告するためのコヒーレンシ検査手段を備え、前記各コヒーレンシ検査が、前記バス上で発行されたトランザクションに対応し、前記コヒーレンシ検査が、対応するトランザクションが前記バス上で発行された順番で実施される前記処理モジュールを含むことを特徴とする、データ処理システム。
【0088】
2. 前記各処理モジュールが、前記コヒーレンシ検査を指定する情報を記憶するための待ち行列を備え、前記コヒーレンシ検査手段が、前記情報が前記待ち行列に記憶される順番で、前記コヒーレンシ検査を実施する手段から成ることを特徴とする、項番1に記載のデータ処理システム。
【0089】
3. 前記各処理モジュールが、前記バス上でコヒーレンシ検査を要求するトランザクションを検出し、コヒーレンシ検査を要求する前記トランザクションの1つを検出すると、これに応答して、コヒーレンシ検査を開始する手段を備えることを特徴とする、項番1に記載のデータ処理システム。
【0090】
4. 前記メイン・メモリ制御装置によって提供された前記トランザクションが、メモリ・アドレスからのデータを要求する読み取りトランザクション、及び前記メモリ・アドレスへデータを送る書き込みトランザクションから構成されることと、前記メイン・メモリ制御装置が、前記書き込みトランザクションを、前記読み取りトランザクションの前に実行させるための手段から成ることを特徴とする、項番1に記載のデータ処理システム。
【0091】
【発明の効果】
本発明によるパイプライン化分割トランザクション・バスのためのコヒーレンシ技法によって、コヒーレント・トランザクションが発行される速度が制限されず、かつ各モジュールが本来の速度で、キャッシュ・コヒーレンシ検査が処理可能となる。
【図面の簡単な説明】
【図1】本発明による完全に順序付けされたコヒーレンシ技法を使用するコンピュータ・システムの実施例の1つを示すブロック図である。
【図2】本発明による完全に順序付けされたコヒーレンシ技法を使用するコンピュータ・システムの構成要素を示すブロック図である。
【符号の説明】
100 コンピュータ・システム
112 バス
114 メイン・メモリ制御装置
116 入出力モジュール
120 プロセッサ・モジュール
164、168 CCC待ち行列
170 メモリ・キャッシュ
Claims (4)
- バスに結合された処理モジュールによって実行されるべきトランザクションを指定する情報の送信、及び受信のためのバスと、
前記バス上に送信されたトランザクションを処理するために前記バスに接続されたメモリ制御装置であって、前記トランザクションが前記バス上に1回に1つ発行されることにより、前記トランザクションの順番が規定され、前記トランザクションは、前記メモリ制御装置がそのメモリ制御装置に接続されたメインメモリに通常に記憶されたデータを前記バス上に配置することによって前記トランザクションを処理する前に、コヒーレンシ検査を要求するトランザクションを含み、前記データは、前記データが記憶された前記メインメモリ内の位置を指定するメモリアドレスによって識別される、メモリ制御装置と、及び
前記バスに結合された複数の処理モジュールであって、前記処理モジュールのそれぞれが、その処理モジュールに関連したメモリ内に記憶されたデータにコヒーレンシ検査を実施し、そのコヒーレンシ検査からの結果を前記メモリ制御装置に報告するためのコヒーレンシ検査手段を含み、前記コヒーレンシ検査のそれぞれが、前記バス上に発行されたトランザクションに対応し、前記コヒーレンシ検査が、前記バス上に発行された前記トランザクションの順番で実施され、前記メモリ制御装置は、前記コヒーレンシ検査手段のそれぞれが前記コヒーレンシ検査を要求するトランザクションの1つを処理する前に報告済みとなるまで、待機する、複数の処理モジュールとからなる、データ処理システム。 - 前記処理モジュールのそれぞれが、その処理モジュールに含まれる前記コヒーレンシ検査手段によって実施されるべきコヒーレンシ検査を指定する情報を記憶するための待ち行列を含む、請求項1に記載のデータ処理システム。
- 前記処理モジュールのそれぞれが、前記バス上でコヒーレンシ検査を要求するトランザクションを検出し、前記コヒーレンシ検査を要求するトランザクションの1つを検出することに応答して、コヒーレンシ検査を開始するための手段を含む、請求項1に記載のデータ処理システム。
- 前記メモリ制御装置によって処理された前記トランザクションが、前記メインメモリの所定のメモリアドレスからのデータを要求する読み取りトランザクション、及び前記メインメモリの前記所定のメモリアドレスへデータを送る書き込みトランザクションを含み、前記メモリ制御装置が、前記書き込みトランザクションを、前記読み取りトランザクションの前に実行させるための手段を含む、請求項1に記載のデータ処理システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/201,463 US5530933A (en) | 1994-02-24 | 1994-02-24 | Multiprocessor system for maintaining cache coherency by checking the coherency in the order of the transactions being issued on the bus |
US201463 | 1994-02-24 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07281956A JPH07281956A (ja) | 1995-10-27 |
JP3640997B2 true JP3640997B2 (ja) | 2005-04-20 |
Family
ID=22745920
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP02806795A Expired - Fee Related JP3640997B2 (ja) | 1994-02-24 | 1995-02-16 | データ処理システム |
Country Status (6)
Country | Link |
---|---|
US (1) | US5530933A (ja) |
EP (1) | EP0669578B1 (ja) |
JP (1) | JP3640997B2 (ja) |
KR (1) | KR100371845B1 (ja) |
DE (1) | DE69423874T2 (ja) |
TW (1) | TW260770B (ja) |
Families Citing this family (99)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5504874A (en) * | 1993-09-29 | 1996-04-02 | Silicon Graphics, Inc. | System and method of implementing read resources to maintain cache coherency in a multiprocessor environment permitting split transactions |
US5813028A (en) * | 1993-10-12 | 1998-09-22 | Texas Instruments Incorporated | Cache read miss request invalidation prevention method |
JP3872118B2 (ja) * | 1995-03-20 | 2007-01-24 | 富士通株式会社 | キャッシュコヒーレンス装置 |
US5657472A (en) * | 1995-03-31 | 1997-08-12 | Sun Microsystems, Inc. | Memory transaction execution system and method for multiprocessor system having independent parallel transaction queues associated with each processor |
US5787476A (en) * | 1995-05-05 | 1998-07-28 | Silicon Graphics, Inc. | System and method for maintaining coherency of virtual-to-physical memory translations in a multiprocessor computer |
US5925099A (en) * | 1995-06-15 | 1999-07-20 | Intel Corporation | Method and apparatus for transporting messages between processors in a multiple processor system |
US6108735A (en) * | 1995-09-29 | 2000-08-22 | Intel Corporation | Method and apparatus for responding to unclaimed bus transactions |
US5659710A (en) * | 1995-11-29 | 1997-08-19 | International Business Machines Corporation | Cache coherency method and system employing serially encoded snoop responses |
US5701422A (en) * | 1995-12-13 | 1997-12-23 | Ncr Corporation | Method for ensuring cycle ordering requirements within a hierarchical bus system including split-transaction buses |
US5673413A (en) * | 1995-12-15 | 1997-09-30 | International Business Machines Corporation | Method and apparatus for coherency reporting in a multiprocessing system |
US5829035A (en) * | 1995-12-22 | 1998-10-27 | Apple Computer, Inc. | System and method for preventing stale data in multiple processor computer systems |
US5717900A (en) * | 1996-01-26 | 1998-02-10 | Unisys Corporation | Adjusting priority cache access operations with multiple level priority states between a central processor and an invalidation queue |
US5765196A (en) * | 1996-02-27 | 1998-06-09 | Sun Microsystems, Inc. | System and method for servicing copyback requests in a multiprocessor system with a shared memory |
JPH11501141A (ja) * | 1996-03-15 | 1999-01-26 | サン・マイクロシステムズ・インコーポレーテッド | 分割トランザクション・スヌーピング・バスおよび調停方法 |
US5960179A (en) * | 1996-07-01 | 1999-09-28 | Sun Microsystems, Inc. | Method and apparatus extending coherence domain beyond a computer system bus |
US5790822A (en) * | 1996-03-21 | 1998-08-04 | Intel Corporation | Method and apparatus for providing a re-ordered instruction cache in a pipelined microprocessor |
US5987539A (en) * | 1996-06-05 | 1999-11-16 | Compaq Computer Corporation | Method and apparatus for flushing a bridge device read buffer |
US6075929A (en) * | 1996-06-05 | 2000-06-13 | Compaq Computer Corporation | Prefetching data in response to a read transaction for which the requesting device relinquishes control of the data bus while awaiting data requested in the transaction |
US6021480A (en) * | 1996-06-05 | 2000-02-01 | Compaq Computer Corporation | Aligning a memory read request with a cache line boundary when the request is for data beginning at a location in the middle of the cache line |
US6108741A (en) * | 1996-06-05 | 2000-08-22 | Maclaren; John M. | Ordering transactions |
US5872939A (en) * | 1996-06-05 | 1999-02-16 | Compaq Computer Corporation | Bus arbitration |
US5903906A (en) * | 1996-06-05 | 1999-05-11 | Compaq Computer Corporation | Receiving a write request that allows less than one cache line of data to be written and issuing a subsequent write request that requires at least one cache line of data to be written |
US6052513A (en) * | 1996-06-05 | 2000-04-18 | Compaq Computer Corporation | Multi-threaded bus master |
US6055590A (en) * | 1996-06-05 | 2000-04-25 | Compaq Computer Corporation | Bridge circuit comprising independent transaction buffers with control logic adapted to store overflow data in second buffer when transaction size exceeds the first buffer size |
US5872941A (en) * | 1996-06-05 | 1999-02-16 | Compaq Computer Corp. | Providing data from a bridge to a requesting device while the bridge is receiving the data |
US6035362A (en) * | 1996-06-05 | 2000-03-07 | Goodrum; Alan L. | Storing data associated with one request while continuing to store data associated with a previous request from the same device |
US5796605A (en) * | 1996-07-02 | 1998-08-18 | Sun Microsystems, Inc. | Extended symmetrical multiprocessor address mapping |
US5805839A (en) * | 1996-07-02 | 1998-09-08 | Advanced Micro Devices, Inc. | Efficient technique for implementing broadcasts on a system of hierarchical buses |
US5963978A (en) * | 1996-10-07 | 1999-10-05 | International Business Machines Corporation | High level (L2) cache and method for efficiently updating directory entries utilizing an n-position priority queue and priority indicators |
JP3210590B2 (ja) | 1996-11-29 | 2001-09-17 | 株式会社日立製作所 | マルチプロセッサシステムおよびキャッシュコヒーレンシ制御方法 |
US5802355A (en) * | 1996-12-10 | 1998-09-01 | International Business Machines Corporation | Multi-processor system using processors of different speeds |
US5926840A (en) * | 1996-12-18 | 1999-07-20 | Unisys Corporation | Out-of-order fetching |
US5764932A (en) * | 1996-12-23 | 1998-06-09 | Intel Corporation | Method and apparatus for implementing a dual processing protocol between processors |
US6138192A (en) * | 1996-12-31 | 2000-10-24 | Compaq Computer Corporation | Delivering a request to write or read data before delivering an earlier write request |
FR2759178B1 (fr) * | 1997-02-05 | 1999-04-09 | Sgs Thomson Microelectronics | Circuit de gestion de memoire dans un environnement multi-utilisateurs avec requete et priorite d'acces |
US6055608A (en) * | 1997-04-14 | 2000-04-25 | International Business Machines Corporation | Method and system for speculatively sourcing cache memory data within a multiprocessor data-processing system |
US5944805A (en) * | 1997-08-21 | 1999-08-31 | Advanced Micro Devices, Inc. | System and method for transmitting data upon an address portion of a computer system bus during periods of maximum utilization of a data portion of the bus |
US6122714A (en) * | 1997-10-24 | 2000-09-19 | Compaq Computer Corp. | Order supporting mechanisms for use in a switch-based multi-processor system |
US6108752A (en) * | 1997-10-24 | 2000-08-22 | Compaq Computer Corporation | Method and apparatus for delaying victim writes in a switch-based multi-processor system to maintain data coherency |
US6085294A (en) * | 1997-10-24 | 2000-07-04 | Compaq Computer Corporation | Distributed data dependency stall mechanism |
US6154816A (en) * | 1997-10-24 | 2000-11-28 | Compaq Computer Corp. | Low occupancy protocol for managing concurrent transactions with dependencies |
US6070231A (en) * | 1997-12-02 | 2000-05-30 | Intel Corporation | Method and apparatus for processing memory requests that require coherency transactions |
US6003106A (en) * | 1998-05-27 | 1999-12-14 | International Business Machines Corporation | DMA cache control logic |
US6085293A (en) * | 1998-08-17 | 2000-07-04 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system that decreases latency by expediting rerun requests |
KR100582782B1 (ko) * | 1998-08-28 | 2006-08-23 | 엘지엔시스(주) | 캐쉬 일관성 유지 방법 |
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 |
US6067603A (en) * | 1998-10-01 | 2000-05-23 | International Business Machines Corporation | Non-uniform memory access (NUMA) data processing system that speculatively issues requests on a node interconnect |
US6167492A (en) | 1998-12-23 | 2000-12-26 | Advanced Micro Devices, Inc. | Circuit and method for maintaining order of memory access requests initiated by devices coupled to a multiprocessor system |
US6256713B1 (en) * | 1999-04-29 | 2001-07-03 | International Business Machines Corporation | Bus optimization with read/write coherence including ordering responsive to collisions |
US6636939B1 (en) * | 2000-06-29 | 2003-10-21 | Intel Corporation | Method and apparatus for processor bypass path to system memory |
US6647466B2 (en) | 2001-01-25 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy |
US6799217B2 (en) * | 2001-06-04 | 2004-09-28 | Fujitsu Limited | Shared memory multiprocessor expansion port for multi-node systems |
US7681013B1 (en) | 2001-12-31 | 2010-03-16 | Apple Inc. | Method for variable length decoding using multiple configurable look-up tables |
US7034849B1 (en) * | 2001-12-31 | 2006-04-25 | Apple Computer, Inc. | Method and apparatus for image blending |
US7015921B1 (en) * | 2001-12-31 | 2006-03-21 | Apple Computer, Inc. | Method and apparatus for memory access |
US8055492B2 (en) * | 2002-01-10 | 2011-11-08 | International Business Machines Corporation | Non-unique results in design verification by test programs |
JP3791433B2 (ja) * | 2002-02-27 | 2006-06-28 | 日本電気株式会社 | システム、制御処理装置、およびシステム制御方法 |
US7103728B2 (en) * | 2002-07-23 | 2006-09-05 | Hewlett-Packard Development Company, L.P. | System and method for memory migration in distributed-memory multi-processor systems |
US7577816B2 (en) * | 2003-08-18 | 2009-08-18 | Cray Inc. | Remote translation mechanism for a multinode system |
US6892290B2 (en) * | 2002-10-03 | 2005-05-10 | Hewlett-Packard Development Company, L.P. | Linked-list early race resolution mechanism |
US7051163B2 (en) * | 2002-10-03 | 2006-05-23 | Hewlett-Packard Development Company, L.P. | Directory structure permitting efficient write-backs in a shared memory computer system |
US6990559B2 (en) * | 2002-10-03 | 2006-01-24 | Hewlett-Packard Development Company, L.P. | Mechanism for resolving ambiguous invalidates in a computer system |
US7024520B2 (en) * | 2002-10-03 | 2006-04-04 | Hewlett-Packard Development Company, L.P. | System and method enabling efficient cache line reuse in a computer system |
US7000080B2 (en) * | 2002-10-03 | 2006-02-14 | Hewlett-Packard Development Company, L.P. | Channel-based late race resolution mechanism for a computer system |
US7003635B2 (en) * | 2002-10-03 | 2006-02-21 | Hewlett-Packard Development Company, L.P. | Generalized active inheritance consistency mechanism having linked writes |
US6895476B2 (en) * | 2002-10-03 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Retry-based late race resolution mechanism for a computer system |
US6898676B2 (en) * | 2002-10-03 | 2005-05-24 | Hewlett-Packard Development Company, L.P. | Computer system supporting both dirty-shared and non-dirty-shared data processing entities |
EP1426866A1 (en) * | 2002-12-06 | 2004-06-09 | Sun Microsystems, Inc. | A method to reduce memory latencies by performing two levels of speculation |
WO2004107180A1 (ja) * | 2003-05-30 | 2004-12-09 | Fujitsu Limited | マルチプロセッサシステム |
US7735088B1 (en) | 2003-08-18 | 2010-06-08 | Cray Inc. | Scheduling synchronization of programs running as streams on multiple processors |
US7421565B1 (en) | 2003-08-18 | 2008-09-02 | Cray Inc. | Method and apparatus for indirectly addressed vector load-add -store across multi-processors |
US7366873B1 (en) | 2003-08-18 | 2008-04-29 | Cray, Inc. | Indirectly addressed vector load-operate-store method and apparatus |
US7334110B1 (en) | 2003-08-18 | 2008-02-19 | Cray Inc. | Decoupled scalar/vector computer architecture system and method |
US7743223B2 (en) * | 2003-08-18 | 2010-06-22 | Cray Inc. | Decoupling of write address from its associated write data in a store to a shared memory in a multiprocessor system |
US7543133B1 (en) | 2003-08-18 | 2009-06-02 | Cray Inc. | Latency tolerant distributed shared memory multiprocessor computer |
US7519771B1 (en) | 2003-08-18 | 2009-04-14 | Cray Inc. | System and method for processing memory instructions using a forced order queue |
US7503048B1 (en) | 2003-08-18 | 2009-03-10 | Cray Incorporated | Scheduling synchronization of programs running as streams on multiple processors |
US8307194B1 (en) | 2003-08-18 | 2012-11-06 | Cray Inc. | Relaxed memory consistency model |
US7437521B1 (en) | 2003-08-18 | 2008-10-14 | Cray Inc. | Multistream processing memory-and barrier-synchronization method and apparatus |
JP2005128963A (ja) * | 2003-10-27 | 2005-05-19 | Toshiba Information Systems (Japan) Corp | 記憶制御装置及びdma転送が可能な制御システム |
US7478769B1 (en) | 2005-03-09 | 2009-01-20 | Cray Inc. | Method and apparatus for cooling electronic components |
US20070186052A1 (en) * | 2006-02-07 | 2007-08-09 | International Business Machines Corporation | Methods and apparatus for reducing command processing latency while maintaining coherence |
US7512723B2 (en) * | 2006-12-29 | 2009-03-31 | Freescale Semiconductor, Inc. | Queued interface devices, multi-core peripheral systems, and methods for sharing a peripheral in a multi-core system |
JP5100176B2 (ja) | 2007-03-29 | 2012-12-19 | 株式会社東芝 | マルチプロセッサシステム |
US8131941B2 (en) * | 2007-09-21 | 2012-03-06 | Mips Technologies, Inc. | Support for multiple coherence domains |
US20090089510A1 (en) * | 2007-09-28 | 2009-04-02 | Mips Technologies, Inc. | Speculative read in a cache coherent microprocessor |
US20090138890A1 (en) * | 2007-11-21 | 2009-05-28 | Arm Limited | Contention management for a hardware transactional memory |
US9513959B2 (en) * | 2007-11-21 | 2016-12-06 | Arm Limited | Contention management for a hardware transactional memory |
US8392663B2 (en) * | 2007-12-12 | 2013-03-05 | Mips Technologies, Inc. | Coherent instruction cache utilizing cache-op execution resources |
US20090248988A1 (en) * | 2008-03-28 | 2009-10-01 | Mips Technologies, Inc. | Mechanism for maintaining consistency of data written by io devices |
US8429353B2 (en) * | 2008-05-20 | 2013-04-23 | Oracle America, Inc. | Distributed home-node hub |
US8108584B2 (en) | 2008-10-15 | 2012-01-31 | Intel Corporation | Use of completer knowledge of memory region ordering requirements to modify transaction attributes |
WO2013095475A1 (en) * | 2011-12-21 | 2013-06-27 | Intel Corporation | Apparatus and method for memory-hierarchy aware producer-consumer instruction |
US9196347B2 (en) * | 2013-03-14 | 2015-11-24 | International Business Machines Corporation | DRAM controller for variable refresh operation timing |
US10303603B2 (en) | 2017-06-13 | 2019-05-28 | Microsoft Technology Licensing, Llc | Low power multi-core coherency |
US10282298B2 (en) | 2017-06-13 | 2019-05-07 | Microsoft Technology Licensing, Llc | Store buffer supporting direct stores to a coherence point |
KR20210123555A (ko) * | 2020-04-03 | 2021-10-14 | 에스케이하이닉스 주식회사 | 메모리 시스템 |
US20230032137A1 (en) * | 2021-08-02 | 2023-02-02 | Red Hat, Inc. | Efficient dirty page expiration |
CN116527555B (zh) * | 2023-06-20 | 2023-09-12 | 中国标准化研究院 | 一种跨平台数据互通一致性测试方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4473880A (en) * | 1982-01-26 | 1984-09-25 | Intel Corporation | Arbitration means for controlling access to a bus shared by a number of modules |
US4768148A (en) * | 1986-06-27 | 1988-08-30 | Honeywell Bull Inc. | Read in process memory apparatus |
EP0349123B1 (en) * | 1988-06-27 | 1995-09-20 | Digital Equipment Corporation | Multi-processor computer systems having shared memory and private cache memories |
DE68916231T2 (de) * | 1989-03-23 | 1995-02-02 | Ibm | Verfahren und Vorrichtung zum Vielfachzugriff mit verteilten Warteschlangen in einem Kommunikationssystem. |
US5345578A (en) * | 1989-06-30 | 1994-09-06 | Digital Equipment Corporation | Competitive snoopy caching for large-scale multiprocessors |
CA2051209C (en) * | 1990-11-30 | 1996-05-07 | Pradeep S. Sindhu | Consistency protocols for shared memory multiprocessors |
US5406504A (en) * | 1993-06-30 | 1995-04-11 | Digital Equipment | Multiprocessor cache examiner and coherency checker |
-
1994
- 1994-02-24 US US08/201,463 patent/US5530933A/en not_active Expired - Lifetime
- 1994-08-12 EP EP94112651A patent/EP0669578B1/en not_active Expired - Lifetime
- 1994-08-12 DE DE69423874T patent/DE69423874T2/de not_active Expired - Lifetime
- 1994-10-24 TW TW083109858A patent/TW260770B/zh not_active IP Right Cessation
-
1995
- 1995-02-16 JP JP02806795A patent/JP3640997B2/ja not_active Expired - Fee Related
- 1995-02-23 KR KR1019950003487A patent/KR100371845B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
JPH07281956A (ja) | 1995-10-27 |
EP0669578B1 (en) | 2000-04-05 |
DE69423874T2 (de) | 2000-11-16 |
DE69423874D1 (de) | 2000-05-11 |
US5530933A (en) | 1996-06-25 |
TW260770B (ja) | 1995-10-21 |
KR100371845B1 (ko) | 2003-04-03 |
KR950033893A (ko) | 1995-12-26 |
EP0669578A3 (en) | 1995-11-15 |
EP0669578A2 (en) | 1995-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3640997B2 (ja) | データ処理システム | |
EP0681240B1 (en) | Duplicate cache tag memory system | |
KR100360064B1 (ko) | 고도로파이프라인된버스구조 | |
US5911052A (en) | Split transaction snooping bus protocol | |
US5572702A (en) | Method and apparatus for supporting read, write, and invalidation operations to memory which maintain cache consistency | |
US6304932B1 (en) | Queue-based predictive flow control mechanism with indirect determination of queue fullness | |
US5978874A (en) | Implementing snooping on a split-transaction computer system bus | |
EP0817089A2 (en) | Processor subsystem for use with a universal computer architecture | |
US5829033A (en) | Optimizing responses in a coherent distributed electronic system including a computer system | |
JP3641003B2 (ja) | 調停機構付きバス・システム | |
EP0820019A2 (en) | Computer system providing a universal architecture adaptive to a variety of processor types and bus protocols | |
US5933612A (en) | Deadlock avoidance in a split-bus computer system | |
JP2675981B2 (ja) | スヌープ・プッシュ・オペレーションを回避する方法 | |
US5991855A (en) | Low latency memory read with concurrent pipe lined snoops | |
JP3759193B2 (ja) | アトミック動作バス・システム | |
US5845107A (en) | Signaling protocol conversion between a processor and a high-performance system bus | |
US5960179A (en) | Method and apparatus extending coherence domain beyond a computer system bus | |
US5875469A (en) | Apparatus and method of snooping processors and look-aside caches | |
EP0832459B1 (en) | Split transaction snooping bus and method of arbitration | |
EP0709780A1 (en) | Method and apparatus for remote retry in a data processing system | |
JPH04260956A (ja) | デッドロックを回避する方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040809 |
|
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: 20050118 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050120 |
|
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: 20090128 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090128 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100128 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100128 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110128 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120128 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130128 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130128 Year of fee payment: 8 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130128 Year of fee payment: 8 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |