(57)【特許請求の範囲】
【請求項１】
バスに結合された処理モジュールによって実行されるべきトランザクションを指定する情報の送信、及び受信のためのバスと、
前記バス上に送信されたトランザクションを処理するために前記バスに接続されたメモリ制御装置であって、前記トランザクションが前記バス上に１回に１つ発行されることにより、前記トランザクションの順番が規定され、前記トランザクションは、前記メモリ制御装置がそのメモリ制御装置に接続されたメインメモリに通常に記憶されたデータを前記バス上に配置することによって前記トランザクションを処理する前に、コヒーレンシ検査を要求するトランザクションを含み、前記データは、前記データが記憶された前記メインメモリ内の位置を指定するメモリアドレスによって識別される、メモリ制御装置と、及び
前記バスに結合された複数の処理モジュールであって、前記処理モジュールのそれぞれが、その処理モジュールに関連したメモリ内に記憶されたデータにコヒーレンシ検査を実施し、そのコヒーレンシ検査からの結果を前記メモリ制御装置に報告するためのコヒーレンシ検査手段を含み、前記コヒーレンシ検査のそれぞれが、前記バス上に発行されたトランザクションに対応し、前記コヒーレンシ検査が、前記バス上に発行された前記トランザクションの順番で実施され、前記メモリ制御装置は、前記コヒーレンシ検査手段のそれぞれが前記コヒーレンシ検査を要求するトランザクションの１つを処理する前に報告済みとなるまで、待機する、複数の処理モジュールとからなる、データ処理システム。
【請求項２】
前記処理モジュールのそれぞれが、その処理モジュールに含まれる前記コヒーレンシ検査手段によって実施されるべきコヒーレンシ検査を指定する情報を記憶するための待ち行列を含む、請求項１に記載のデータ処理システム。
【請求項３】
前記処理モジュールのそれぞれが、前記バス上でコヒーレンシ検査を要求するトランザクションを検出し、前記コヒーレンシ検査を要求するトランザクションの１つを検出することに応答して、コヒーレンシ検査を開始するための手段を含む、請求項１に記載のデータ処理システム。
【請求項４】
前記メモリ制御装置によって処理された前記トランザクションが、前記メインメモリの所定のメモリアドレスからのデータを要求する読み取りトランザクション、及び前記メインメモリの前記所定のメモリアドレスへデータを送る書き込みトランザクションを含み、前記メモリ制御装置が、前記書き込みトランザクションを、前記読み取りトランザクションの前に実行させるための手段を含む、請求項１に記載のデータ処理システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、コンピュータ・システムに関し、より詳しくは、１つ以上のプロセッサがキャッシュ・メモリを備える共用メモリ多重プロセッサ・コンピュータに関する。
【０００２】
【従来の技術】
コンピュータ・システムは通常、プロセッサ、メモリ、及び入出力装置のような複数の構成要素、及び２つ以上の構成要素間において情報を転送するための共用バスを備えている。これらの構成要素は通常、それぞれ、１つ以上のプロセッサ、メモリ、及び入出力装置を含むことが可能な、構成要素モジュールの形態でバスに接続されている。情報はバス「サイクル」の間に、構成要素モジュール間においてバス上で送られるが、各バス・サイクルは、その間にモジュールがバスの制御を有し、バス上で限られた量の情報を転送、又は駆動することができる期間である。所定のサイクルの間にバスの制御を有するモジュールは、バス所有者と呼ばれる。
【０００３】
構成要素モジュールは、一般に、「読み取り」及び「書き込み」トランザクションのような、完了に１サイクル以上を要する「トランザクション」の形態で、バスを介して、互いに通信を行う。例えば、典型的な読み取りトランザクションの場合、あるモジュールは、バス上で、メイン・メモリ制御装置、又は獲得する必要のあるデータを識別し、かつ識別されたデータを送るように要求する別のモジュールに信号を送る。次に、応答モジュールが、その要求を処理し、１つ、又は以降の複数サイクルの間にそのデータをリターンする。従来の多くのバスは、応答が必ずしも要求の直後とは限らない、「分割トランザクション」に適応する。例えば、モジュールは読み取りトランザクションを開始した後、バスの制御を放棄し、応答モジュールが、要求されたデータをリターンする準備ができるまで、他の目的にバスを使用することを可能にする。この時点で応答モジュールは、バスの制御を獲得し、要求されたデータを要求モジュールに送る。
【０００４】
多くのコンピュータ・システムでは、システム上で稼働するソフトウェアは、メイン・メモリを共用する２つ以上のメイン・プロセッサ・モジュールによって実行される。メイン・プロセッサは通常、共用バスに直接接続されている。メイン・メモリは通常、メイン・メモリ制御装置を介してバスに接続されている。プロセッサがメイン・メモリからデータを読み取り、又はメイン・メモリにデータを書き込む場合、プロセッサはメイン・メモリ制御装置と通信を行わなければならない。このタイプのシステムは、しばしば「共用メモリ多重プロセッサ」システムと呼ばれる。
【０００５】
プロセッサ・モジュール、又は入出力モジュールは、モジュールによる迅速なアクセスに備えて、頻繁に使用されるデータ値を記憶するキャッシュ・メモリを備えることも可能である。通常、キャッシュ・メモリは、頻繁に使用されるデータ、及びこれらのデータ項目が記憶されているメイン・メモリのアドレスの両方を記憶している。モジュールが、メモリのアドレスからデータをシークする場合、そのデータに関連するアドレスを使用して、キャッシュ・メモリからデータを要求する。キャッシュ・メモリは、そのアドレスに関連したデータを保持しているかどうかを確かめるために検査を行う。保持していれば、キャッシュ・メモリは、要求されたデータを直接プロセッサにリターンすることが可能である。キャッシュ・メモリが所望の情報を含んでいない場合(即ち、「キャッシュ・ミス」が生じている場合)、通常のメモリ・アクセスが生じる。キャッシュ・メモリは通常、メイン・メモリ(一般的にはRAM)のアクセスが、マイクロプロセッサの速度に比較して遅い場合に有効である。キャッシュ・メモリは、メインRAMメモリより高速である。
【０００６】
各プロセッサがキャッシュ・メモリを有する共用メモリ多重プロセッサにおいて、この状況は多少複雑になる。こうしたシステムにおいて、特定のトランザクションに必要とされるデータは、１つ以上のキャッシュ・メモリ、及び/又はメイン・メモリに記憶されうる。プロセッサによって操作されてきた、キャッシュ・メモリ内のデータは、メイン・メモリに記憶されている値とは異なる値を生じる可能性がある。一般に、これらのプロセッサ上で稼働するソフトウェアは、特定のアドレスに関連したデータに関して、その最新の値を使用しなければならない。従って、プロセッサは、他のプロセッサによって使用されていた可能性のあるデータをシークする毎に、プロセッサに提供されたデータが最新のものであることを保証するための処理「キャッシュ・コヒーレンシ技法」を実施する必要がある。
【０００７】
典型的なコヒーレンシ技法では、モジュールによってデータが要求されると、キャッシュ・メモリを有する各モジュールが、そのキャッシュ・メモリの「コヒーレンシ検査」を行って、要求されたアドレスに関連するデータを有しているかどうかを判定し、そのコヒーレンシ検査の結果を報告する。各モジュールは通常、メイン・メモリ、及び他のキャッシュ・メモリに記憶されている、同じアドレスに関連したデータについて、そのキャッシュ・メモリに記憶されているデータの状況の記録を保持し、報告する。例えば、モジュールは、そのデータが「専用」(即ち、データがそのモジュールだけに使用可能である)か、又は「共用」(即ち、そのデータが、同時に２つ以上のキャッシュ・メモリに存在し得る)かを報告することが可能である。モジュールは又、そのデータが「クリーン」(即ち、メイン・メモリに記憶されている同じアドレスに関連したデータと同じである)か、又は「ダーティ」(即ち、そのデータが、取得後に操作されている)かを報告することも可能である。通常、所与のどの時点においても、データの専用ダーティ・コピーは１つだけ許可される。「コヒーレント・トランザクション」は、例えばメモリ読み取りといった、要求されたプロセッサに送るべきデータ源を決定するために、全てのメモリの検査を要求する、任意のトランザクションである。
【０００８】
コヒーレント・トランザクションは通常、任意の有効なバス・サイクルの間に発行されうる。しかし、モジュールの中には、内部的にビジー状態であり、即時にそのトランザクションのコヒーレンシ検査を実施できないものもあり、キャッシュ・コヒーレンシ検査を完了するのに数サイクルを要する可能性がある。コヒーレント・トランザクションが発行されうる速度に適応するため、モジュールが、コヒーレンシ検査が実行されるまで、コヒーレント・トランザクションを記憶するためのキャッシュ・コヒーレンシ待ち行列を有する場合もある。
【０００９】
各モジュールによって実行されたコヒーレンシ検査の結果は分析され、データを要求したモジュールに最新のデータが提供される。例えば、キャッシュ・メモリに、要求されたデータのコピーがなければ、そのデータはメイン・メモリから供給されることになる。モジュールが専用ダーティ・コピーを有する場合、通常そのデータが供給される。そのデータが供給されると、各モジュールは通常、そのキャッシュ・メモリ内のデータの状況を更新する。例えば、データの専用ダーティ・コピーがメイン・メモリにコピーされると、それはクリーン・コピーとなる。
【００１０】
モジュール内のキャッシュ・コヒーレンシ・ハードウェアにおける遅延によって、多重プロセッサ・システムに順序問題を生じる可能性がある。上述のように、ハードウェアは、要求された特定のデータ全てに関して、最新バージョンのデータ供給を保証しなければならない。これは、高度にパイプライン化されたシステムの場合、バス上で発行されたトランザクションに対する応答遅延が避けられないために問題となる場合がある。
【００１１】
あるモジュールが特定データ・ラインのコヒーレント読み取りを、別のモジュールが同じデータ・ラインのダーティ・コピーをライト・バックするのとほぼ同時に発行する場合、１つの問題が生じる可能性がある。ダーティ・コピーは最新であるため、それがコヒーレント読み取りに応答して供給されるべきである。しかし、前記書き込みが実行される前に、メモリが前記読み取りに応答し、既にそのデータ・ラインが「引き渡されている」ため、別のモジュール(即ち、データ・ラインのダーティ・コピーをライト・バックするモジュール)が、コヒーレンシ検査の実行時に競合(conflict)を検出しなかった場合、最初の要求モジュールは、メモリから間違った「失効(stale)」データを得ることになる。プロセッサが間違ったデータに基づいて操作を行う場合、この「順序」問題によって、間違った結果を生じる可能性があるのは明白である。
【００１２】
従来のシステムは、様々な技法を用いて上記の順序問題を回避してきた。従来の技法には、それぞれ欠点がある。システムによっては、１回に１つのコヒーレント・トランザクションしか発行できず、前のコヒーレント・トランザクションについて全てのコヒーレンシの報告が完了するまで、新しいコヒーレント・トランザクションを発行することができないものもある。この技法では、利用可能なバスの帯域幅を狭くする、従って性能を制限するという犠牲を払って、適正な順序でトランザクションを処理し、最新のデータが供給されることを保証している。
【００１３】
他のシステムでは、モジュールが、新しいトランザクションを発行する前に、競合の可能性について未完了のトランザクションを検査する必要がある。例えば、プロセッサは、キャッシュ・ラインのライト・バックを発行する前にチェックを行い、同じキャッシュ・ラインについて未完了のコヒーレント読み取りがないことを確認する。この制約は、潜在的なトランザクション発行速度も低下させ、このため性能が制限され、かつモジュールの複雑さが増すことになる。
【００１４】
従って、コヒーレント・トランザクションが発行される速度を制限せず、かつ各モジュールが本来の速度でキャッシュ・コヒーレンシ検査を処理できる、パイプライン化分割トランザクション・バスのためのコヒーレンシ技法が必要とされる。
【００１５】
【発明が解決しようとする課題】
従って、本発明の課題は、順序改良型のコヒーレンシ技法を提供することである。
【００１６】
本発明の別の課題は、トランザクションがトランザクションの発行時間に基づいて順序付けされる、順序付けされたコヒーレンシ技法を提供することである。
【００１７】
本発明の更に別の課題は、コヒーレント・トランザクションに過度の待ち時間を加えることのない順序付けされたコヒーレンシ技法を提供することである。
【００１８】
本発明の更に別の課題は、各モジュールが本来のペースで、コヒーレンシ検査に応答することができるような、順序付けされたコヒーレンシ技法を提供することである。
【００１９】
本発明のこれら、及びその他の課題は、本発明、及び好的実施例に関する以下の詳細な説明、添付図面、及び特許請求の範囲から当業者には明らかになろう。
【００２０】
【課題を解決するための手段】
概して言えば、本発明は、順序付けされたコヒーレンシ技法を実現するものである。このコヒーレンシ技法は、バス、メイン・メモリ、バス上で受け取られるトランザクションに応答して、メイン・メモリにアクセスするためのメイン・メモリ制御装置、及びバスに接続された複数のプロセッサ・モジュールを有するシステムで使用される。各プロセッサ・モジュールは、キャッシュ・メモリを有し、バス上で他のプロセッサ・モジュール、及びメイン・メモリ制御装置に対しコヒーレント・トランザクションを送ることが可能である。各プロセッサ・モジュールは、バス上で発行されるコヒーレント・トランザクションを検出するための手段、及びコヒーレント・トランザクションのそれぞれに関して、キャッシュ・コヒーレンシ検査を実行するための手段を備えている。各プロセッサ・モジュールは、バス上で発行される全てのコヒーレント・トランザクションを記憶し、先入れ先出しの順で記憶されたトランザクションのコヒーレンシ検査を実行するためのコヒーレンシ待ち行列を備えている。
【００２１】
モジュールがバス上でコヒーレント・トランザクションを送る場合、モジュールは、それ自身のトランザクションをそれ自身のコヒーレンシ待ち行列に置く。従って、各モジュールは正確に同じ順序でコヒーレント・トランザクションを処理する。
【００２２】
メモリ制御装置は、発行された最新のキャッシュ書き込みと、発行された最新のコヒーレント読み取りとを照合して、競合の可能性があるか検査し、必要に応じてトランザクションの順序を再配列し、メモリのコヒーレント・イメージを保存する。
【００２３】
本発明は、トランザクションがバス上に発行された順序によってトランザクションの順序を定義し、その定義を保存するために必要な動作をとることによって、順序問題が回避されるという観測結果に基づくものである。モジュールのキャッシュは、バス上でトランザクションが発行された順序で、コヒーレンシ検査、及びそれ自身のコヒーレント・トランザクションを処理することによって定義された順序を保存する。以前に保持されていた専用ダーティのキャッシュ・データへのライト・バックによって、コヒーレント・メモリ・システム内におけるデータ位置がちょうど変更されているということが分かると、ほぼ同時に生じている、同じ位置に対する全ての読み取りの前に、キャッシュのライト・バックが処理される。
【００２４】
本発明は、１つ以上のプロセッサがキャッシュ・メモリを有する、共用メモリ多重プロセッサ・システムに用いられる順序付けされたコヒーレンシ技法を実現する。各モジュールは、システム・バス上でトランザクションが発行される順序で、コヒーレント・トランザクションのコヒーレンシ検査を処理するのに加えて、それ自身のトランザクション処理も実施する。
【００２５】
キャッシュ・メモリを有するプロセッサ、又は他の構成要素モジュールはそれぞれ、発行されたコヒーレント・トランザクションを記憶するためのキャッシュ・コヒーレンシ待ち行列を備えている。トランザクションがバス上で発行されると、キャッシュ・メモリを有する各モジュールが、バス上のトランザクションを検出し、それを各モジュールのキャッシュ・コヒーレンシ待ち行列に置く。キャッシュ・コヒーレンシ待ち行列内のトランザクションに対応するキャッシュ・コヒーレンシ検査が、先入れ先出しの順で実行される。各モジュールは、本来のペースでキャッシュ・コヒーレンシ検査を実行することが可能であり、複数のキャッシュ・コヒーレンシ検査を同時に実行することが可能である。各モジュールは、キャッシュ・コヒーレンシ検査の結果をメイン・メモリ制御装置に送り、トランザクションを発行したモジュールに対し、最新のデータ、及びコヒーレンシ情報を提供する。
【００２６】
順序を保存するため、コヒーレント・トランザクションを発行した各モジュールは、それ自身のコヒーレンシ待ち行列にそれ自身のトランザクションを置く。従って、そのモジュールは、自身のトランザクションが実行される前に、以前に発行されている全てのコヒーレント・トランザクションに対応するコヒーレンシ検査を実行する。各モジュールが、バス上で発行されるトランザクションを同じ順序でそのコヒーレンシ待ち行列の中に置くので、各モジュールは、同じ順序でトランザクションの発生を知ることになる。
【００２７】
メモリ制御装置は、発行された最新のキャッシュ書き込みと、発行された最新のコヒーレント読み取りを照合して、競合の可能性を検査し、必要に応じてトランザクションの順序を再配列し、メモリのコヒーレント・イメージを保存する。キャッシュ書き込みと以前のコヒーレント読み取りトランザクションに競合があれば、メモリ制御装置は、コヒーレント読み取りトランザクションの前に、キャッシュ書き込みが処理されるように順序の再配列を行って、読み取りトランザクションの処理がされる前に、メイン・メモリのデータが最新であるよう保証する。
【００２８】
【実施例】
本発明による順序付けされたコヒーレンシ技法を、例示のコンピュータ・システム10に関連して説明する。順序付けされたコヒーレンシ技法の説明を行う前に、コンピュータ・システム10の動作をある程度詳細に理解しておくことは有用である。
【００２９】
コンピュータ・システム10は、バス12、及びバス12に接続された複数の構成要素を有する多重プロセッサ・コンピュータである。これらの構成要素は、メイン・メモリ制御装置14、入出力モジュール16及び18、及びプロセッサ・モジュール20、22、24、及び26を含む。これらの構成要素は、バス12上で相互にトランザクションを送る。
【００３０】
以下でより詳細に説明するように、メイン・メモリ制御装置14は「ホスト・モジュール」とみなすことができ、残りの構成要素は「クライアント・モジュール」とみなすことができる。メイン・メモリ制御装置/ホスト・モジュールは、もしあれば、所与のサイクルの間にバス上で許可されているトランザクションのタイプを指定するクライアント・オプション信号を各クライアント・モジュールに送る。所与のサイクルの間におけるバスの所有者は、そのサイクルを支配するクライアント・オプション信号によって許可されるタイプのトランザクションのみを開始できる。次の有効なサイクルの間におけるバスの所有者も、各クライアント・モジュールからの調停信号、及びバスの制御を保持する必要があるかどうかを示す現在のバスの所有者によって送られる信号に加えて、クライアント・オプション信号に基づく調停によって決定される。
【００３１】
プロセッサ・モジュール20、22、24、及び26は、コンピュータ・システム10のメイン・プロセッサであり、このシステムのためのソフトウェアは全てのプロセッサ上で同時に稼働する。プロセッサ・モジュール20、22、24、及び26はそれぞれ、調停信号送信(即ち、ARB)ライン28、30、32、及び34を制御し、ARBラインは、各モジュールを残りのプロセッサ・モジュールに接続する。プロセッサがバス12を使用したい場合、このプロセッサのARBライン上の他のプロセッサ・モジュールに所定の信号を送る。この信号は、次の有効なバス・サイクルの間におけるバスの所有者を決定するための調停に使用される。
【００３２】
入出力モジュール16、及び18は、コンピュータ・システム10と入出力装置(図示せず)の間のインタフェイスとして働く。入出力モジュール16、及び18はそれぞれ、入出力アダプタを含んでいる。入出力モジュール16、及び18はそれぞれ、ARBライン36、及び38を制御する。入出力モジュールがバス12を使用したい場合、この入出力モジュールのARBライン上の残りのクライアント・モジュールに所定の信号を送る。この信号は調停に使用される。
【００３３】
メイン・メモリ制御装置14は従来の方法で、メイン・メモリ(図示せず)から情報を読み取り、メイン・メモリに情報を記憶する責任がある。メイン・メモリ制御装置14は直接、又は従来型のバスを介してメモリとのインタフェイスを行う。上述のように、メイン・メモリ制御装置14は、バス制御のためにホスト・モジュールとしても働くことが好ましい。メイン・メモリ制御装置14は、各クライアント・モジュールに直接接続されたCLIENT_OPライン40を制御する。メイン・メモリ制御装置14は、次の有効なバス・サイクルの間にバス12上にどんなタイプのトランザクションを置いていいかを示すための信号を、CLIENT_OPライン40上の各クライアント・モジュールに送る。
【００３４】
バス12は高性能のプロセッサ-メモリ入出力相互接続バスである。バス12は、分割トランザクション・バスである。例えば、バス12上で読み取りトランザクションが発行された後、その読み取りトランザクションを発行したモジュールがバスを放棄して、他のモジュールが他のトランザクションのためにバスを使用できるようにする。要求されたデータが使用可能である場合、その読み取りトランザクションに関する応答モジュールはバスの調停を行い、次にデータを送る。書き込みトランザクションは分割されておらず、従って、このマスタはアドレス・サイクルの直後に書き込みデータを送る。
【００３５】
バス12は、主にデータ転送に関係する、ADDR_DATAバス、MASTER_IDバス、及びTRANS_IDバスの少なくとも３つのバスを含むことが好ましい。バス12は又、バス12の制御の調停に関係するLONG_TRANSバスも含む。
【００３６】
ADDR_DATAバスはアドレス情報、及びデータを送るために使用される。ADDR_DATAバスがアドレス関連情報を運ぶサイクルを、アドレス・サイクルと呼び、ADDR_DATAバスがデータを運ぶサイクルをデータ・サイクルと呼ぶ。例えば、書き込みトランザクションは一般に、１回、又は複数回のデータ・サイクルの直前に単一アドレス・サイクルを有している。バスの所有者は、データを書き込みたいアドレスを示す書き込みトランザクションを開始して、以降のサイクルの間にデータを送る。読み取りトランザクションは一般に、読み取るためにシークされるアドレスを示すために、バスの所有者によって使用される単一アドレス・サイクルを有している。このアドレス・サイクルの少し後に、要求に応答するモジュールによって要求モジュールにデータが送られる１回、又は複数回のデータ・サイクルが続く。アドレス関連情報やデータが送られないアイドル・サイクルも発生する。
【００３７】
MASTER_IDバス、及びTRANS_IDバスは、分割トランザクションに関して、リターンされたデータが元のトランザクションに固有に関連付けられるように一緒に使用される。各分割トランザクション「読み取り」は、トランザクションを発行しているモジュールを識別するMASTER_IDバス上のMASTER_ID信号、及びそのモジュールによって送られた他のトランザクションと前記トランザクションを区別するTRANS_IDバス上のTRANS_ID信号によって識別される。例えば、分割トランザクション「読み取り」は、MASTER_ID信号とTRANS_ID信号の固有の組合せと共に送られる。MASTER_IDとTRANS_IDは次に、要求されたデータのリターン時に一緒に送られ、その結果、リターンされたデータが、適当なトランザクションと関連付けされる。この機構によって、トランザクションの順序がトランザクションの識別にとって重要なものでなくなったため、トランザクションのリターンは、トランザクションが発行された順序以外の順序で戻ってくることができる。固有の識別を可能にするには、所与のトランザクションIDを有するトランザクション１つだけが、所与の時点においてモジュールの中で識別可能となることである。しかし、トランザクションはMASTER_IDによって区別できるので、同じトランザクションIDを２つ以上の別々のモジュールで同時に使用することができる。
【００３８】
LONG_TRANSは、長いトランザクションが完了するまで、バス12の制御を保持するために現在のバスの所有者によって使用される。例えば、モジュールが一連のサイクルの間に多量のデータを書き込む必要が生じることがある。LONG_TRANSが示されると、以下でより詳細に説明するように、より高い優先順位のクライアント、又はホストによって、他のトランザクションをそのデータの中に挿入させることができなくなる。
【００３９】
好的実施例では、CLIENT_OPバスは表１に示した信号をサポートする。
【００４０】
【表１】
0003640997.tif 000002
【００４１】
ANY_TRANS、HOST_CONTROL、ONE_CYCLE、及びNONE_ALLOWEDクライアント・オプション信号は比較的簡単である。ANY_TRANSクライアント・オプション信号は、関連するサイクルの間に全てのトランザクションが許可されることを示す。HOST_CONTROLクライアント・オプション信号は、関連するサイクルの間にホストがバスの制御をシークすることを示す。ONE_CYCLEクライアント・オプション信号は、１サイクルのトランザクションしか許可されないことを示す。NONE_ALLOWEDクライアント・オプション信号は、トランザクションがいっさい許可されないことを示すために使用される。
【００４２】
RET_ONLYクライアント・オプション信号は、以前に保持されていた専用ダーティ・キャッシュ・ラインのリターン(ライト・バック)、又は以前のトランザクションに対する応答のみが許可されていることを示す。例えば、プロセッサ24がプロセッサ20のキャッシュで専用ダーティであるキャッシュ・ラインのコヒーレント読み取りを発行した場合、プロセッサ20はキャッシュ間コピーでそのキャッシュ・ラインを供給することができる。そのキャッシュ間コピーのトランザクションは、キャッシュ間コピーがコヒーレント読み取りに対する応答であるため、RET_ONLYクライアント・オプション信号の影響下で開始されうる。同様に、入出力モジュール16は、そのリターンされるデータが入出力読み取りトランザクションに対する応答なので、RET_ONLYクライアント・オプション信号の影響下で以前の入出力読み取りトランザクションからデータをリターンすることができる。
【００４３】
NO_IOクライアント・オプション信号、及びATOMICクライアント・オプション信号は入出力モジュール16、及び18に関連している。図１に示すように、入出力モジュール16、及び18は、モジュールがもはや入出力トランザクションを受け入れられないことを示す信号をメモリ制御装置14に送るために、それぞれSTOP_IOライン58、及び60を制御することが好ましい。入出力モジュール16、及び18は、メモリ・システムを効果的に制御するための信号をメモリ制御装置14に対して、かつ相互に送るために、それぞれSTOP_MOSTライン62、及び64も制御することが好ましい。
【００４４】
ホストがSTOP_IO信号を受信すると、ホストはNO_IO信号を示す。クライアント・オプション信号がNO_IOの場合、入出力トランザクションを除く全てのトランザクションが許可される。フロー制御が、通常ANY_TRANSを許可するものと仮定すると、クライアントがSTOP_MOSTを示したことに直接応答して、クライアント・オプション信号ATOMICが生成される。クライアント・オプション信号ATOMICは、STOP_MOSTを示したクライアントに対して、バス12上でいくつかの連続したトランザクションを実行することを許可する。他の全てのクライアントは、ATOMICが示されたサイクルの間にバスを獲得した場合、以前に送られたトランザクション、又は以前に保持されていた専用ダーティのキャッシュ・ラインへのライト・バックに対して応答することだけが許可される。ホストは、通常クライアント・オプション信号RET_ONLYを利用して、要求モジュールに対するデータのリターン、及び従来のデータのライト・バックといった、応答タイプのトランザクションに、全てのクライアントを制限することも可能である。従って、不可分所有者が存在する場合、不可分所有者に関して有効なクライアント・オプション信号はANY_TRANSであり、
他の全てのクライアントに関して有効なクライアント・オプション信号はRET_ONLYである。
【００４５】
クライアント・オプション信号SHAR_RTNは、各モジュールがキャッシュ・メモリを有するシステムに関するコヒーレンシ技法に関連して使用される。各クライアント・モジュール(プロセッサ・モジュール、及び入出力モジュールの両方)は、キャッシュ・メモリを有し、メモリ制御装置14が、１つ、又は複数のキャッシュ・メモリに記憶される可能性のあるデータの読み取り、又は書き込みを含むコヒーレント・トランザクションを統合することができ、それにより、プロセッサによって最新のデータが使用されるようにする信号を直接、メモリ制御装置14に送るための少なくとも１つのコヒーレント・トランザクション信号の送信ライン(即ち、COHライン)を制御する。プロセッサ・モジュール20、22、24、及び26は、それぞれCOHライン42、44、46、及び48を制御する。入出力モジュール16はCOHライン50、及び52を制御する。入出力モジュール18はCOHライン54、及び56を制御する。SHAR_RTN信号は、メイン・メモリ制御装置が共有状況を有するデータをリターンしていることを示している。
【００４６】
典型的なトランザクション速度を扱うため、３組の主なトランザクション待ち行列が使用される。メイン・メモリ制御装置14は、各待ち行列の満杯/空き状況を監視し、待ち行列がオーバフローしないようにクライアント・オプション信号を発行する。コンピュータ・システム10に用いられるこの３つのタイプの待ち行列について、以下で説明する。
【００４７】
第１に、各入出力(I/O)モジュールは入出力待ち行列を有し、これはバス12から入出力モジュールに向けられたトランザクションを入出力装置、又は入出力バスに送るために保持する。入出力装置に向けられたプロセッサの読み取り、及び書き込みは、入出力バス、及び/又は入出力装置上でトランザクションが処理されるまで、入出力待ち行列内で待機する。このような待ち行列は一般に、トランザクションがバス12上で送られる速度で扱う必要がある。通常、バス12は60-120MHzの周波数を有し、入出力バスは20MHzより低い周波数を有する。従って、トランザクションは、それらが入出力バス、又は入出力装置によって処理されるよりずっと速い速度で入出力モジュールに送ることができる。
【００４８】
第２に、メイン・メモリ制御装置14は、メイン・メモリ読み取り、及びメイン・メモリ書き込みトランザクションを保持するための１つ又は複数のメモリ待ち行列を有する。このようなメモリ関連トランザクションは、読み取り、又は書き込みがメモリ内で実行されるまでメモリ待ち行列内に記憶される。読み取りと書き込みに別々の待ち行列を使用することが好ましい。コヒーレンシ検査が完了するまでコヒーレント読み取り、又はコヒーレント書き込みは実行できない。
【００４９】
最後に、プロセッサ・モジュールと入出力モジュールの両方を含む、キャッシュ・メモリを有する各モジュールは、コヒーレント・トランザクションを先入れ先出し(FIFO)順で記憶するためのキャッシュ・コヒーレンシ待ち行列を有する。コヒーレント・トランザクションは、要求されたデータが他のキャッシュにあるかどうかを調べ、又はキャッシュが最新のものかどうかを検証するために、他のキャッシュを検査することが必要になる全てのトランザクション(読み取り等)である。そのようなトランザクションは、バス12上で開始されたトランザクションのアドレス・サイクルの間に送られる信号によって示される。キャッシュ・メモリを有する各モジュールは、バスを監視し、本明細書ではCCC待ち行列と呼ぶ、各モジュールのキャッシュ・コヒーレンシ待ち行列にコヒーレント・トランザクションをロードする。コヒーレント・トランザクションは、特定のモジュールがそのキャッシュを検査し、そのコヒーレンシ検査の結果をメイン・メモリ制御装置14に報告するまで、前記モジュールのCCC待ち行列内で待機する。メイン・メモリ制御装置14は、全てのモジュールによってコヒーレンシ検査の結果が報告されるまで待機し、次に、コヒーレント・トランザクションに応答する。そのデータの専用ダーティ・コピーを有するクライアント・モジュールがない場合、メイン・メモリ制御装置14はメイン・メモリからデータを供給する。前記クライアント・モジュールがある場合、専用ダーティ・コピーを有するクライアント・モジュールがデータを供給し、メイン・メモリ制御装置14がその新しいデータ値でメイン・メモリを更新する。この動作は単一トランザクションで実行される。このトランザクションに関するアドレス・サイクルが、データのキャッシュ間コピーが後に続く、要求モジュールに示される。メイン・メモリ制御装置は、そのアドレス・サイクルをメイン・メモリに対する書き込み要求として解釈する。従って、要求モジュール、及びメイン・メモリ制御装置の両方がバスからデータを得て、それに従って動作する。このアドレス、及びデータ・サイクルと共に使用されるMASTER_ID、及びTRANS_IDは、元のコヒーレント読み取りトランザクションのものと同じなので、このデータ・サイクルは、通常のメモリのリターンに関するものと同一である。
【００５０】
メイン・メモリ制御装置14は、メモリ待ち行列、CCC待ち行列、及び入出力待ち行列の全ての待ち行列の現在の満杯/空き状況に関する情報を受け取り、処理するための中央位置として働く。以下でより詳細に説明するように、各待ち行列のタイプを記録するために異なる手順が使用される。内部メイン・メモリ待ち行列に関して、メイン・メモリ制御装置14は内部的に、そのメモリ待ち行列がどの程度満たされているかについての記録を保持する。入出力待ち行列に関して、各入出力モジュールは入出力待ち行列が満杯に近い場合、メイン・メモリ制御装置14に対して、用意されたSTOP_IO信号を示すことによって、その入出力待ち行列の状況をメイン・メモリ制御装置14に報告する。
【００５１】
CCC待ち行列に関しては、メイン・メモリ制御装置14は、バス上で発行されたコヒーレント・トランザクションの数を検出し、各モジュールがいくつのコヒーレント・トランザクションに応答したかという記録を保持し、それによって各モジュールのCCC待ち行列の満杯の状況を間接的に監視する。より具体的には、メイン・メモリ制御装置14は、全てのコヒーレント・トランザクションを、それが発行された時に受け取る。又、上述のように、キャッシュを有する各モジュールは、各コヒーレント・トランザクションを受け取り、受け取ったコヒーレント・トランザクションに関するモジュールのキャッシュ・コヒーレンシ検査の結果をメイン・メモリ制御装置14に送る。この応答は、各モジュールからメイン・メモリ制御装置14に用意されたバスであるCOHライン42ないし56上でメイン・メモリ制御装置14に送られる。従って、メイン・メモリ制御装置14は、モジュールから受け取ったキャッシュ・コヒーレンシ応答を、発行されたコヒーレント・トランザクションの数と比較することによって、モジュールのCCC待ち行列に残っているコヒーレント・トランザクションの数を判定することができる。
【００５２】
このプロセスは、「スコアボード」上で行われるものとみなすことができる。コヒーレント・トランザクションは、発行されると、このボード上に置かれ、そのトランザクションが各モジュールのCCC待ち行列にあることを示す。メイン・メモリ制御装置は、そのようなトランザクションがあるかどうかに関してバスを監視する。メイン・メモリ制御装置14は、COHライン上の各モジュールからコヒーレンシ応答を受け取ると、モジュールの応答を記録し、そのモジュールによって処理されるべき次のCCC要求にポインタを移動し、そのモジュールのCCC待ち行列にあるものとしてリストされているトランザクションの数を１だけ減ずる。メイン・メモリ制御装置14は又、所与のコヒーレント・トランザクションに関する全てのコヒーレンシ応答を受け取った時間も知っているので、そのコヒーレント・トランザクションに応答する時間を知っている。
【００５３】
メイン・メモリ制御装置14は、様々な待ち行列の状態に基づいて、CLIENT_OPバスを使用し、待ち行列の過負荷となる全てのトランザクションの発行を防ぐ。バス12の調停に関して上述したように、メイン・メモリ制御装置14は、ホスト・モジュールとして働き、どんなタイプのトランザクションが安全に開始できるのかを示す信号をCLIENT_OPバス上の他の全てのモジュールに送る。モジュールがバスの調停に勝利すると、調停状態の間にCLIENT_OPバス上でどんな符号が駆動されたかを検査し、調停の勝利者がどんなトランザクション(又はリターン)を開始できるかを調べる。
【００５４】
次に、図２を参照して、本発明によるコンピュータ・システムの動作を詳細に説明する。図２は、コンピュータ・システム10、及び図１に関して説明した要素に機能的に対応する、コンピュータ・システム100の主要な要素を示している。コンピュータ・システム100は、バス112、メイン・メモリ115に接続されたメイン・メモリ制御装置114、入出力モジュール116、プロセッサ・モジュール120、CLIENT_OPライン140、コヒーレンシ「COH」ライン142、152、及びSTOP_IOライン158を備えている。これらの要素はそれぞれ、図１に関して説明した、バス12、メイン・メモリ制御装置14、入出力モジュール16、プロセッサ・モジュール20、CLIENT_OPライン40、COHライン42、52、及びSTOP_IOライン58に対応している。図１に関して説明した、これらの要素の態様、及びそれらの相互関係はここでは繰り返さない。
【００５５】
説明を明確にするために、図２には、１つのプロセッサ・モジュールと１つの入出力モジュールしか示していない。モジュール120と同じ追加プロセッサ・モジュール、及びモジュール116と同じ追加入出力モジュールが、図１に示した方法でバス112に接続されることが理解されよう。
【００５６】
コンピュータ・システム100は、図１に関して説明したこれらの要素の他に、入出力モジュール116に従来の方法で接続された入出力バス160を含む。入出力モジュール116は、入出力待ち行列162、CCC待ち行列164、及びメモリ・キャッシュ166も含む。加えてプロセッサ・モジュール120は、CCC待ち行列168とメモリ・キャッシュ170を含む。メイン・メモリ制御装置114は、メモリ制御プロセッサ172、少なくとも１つのメモリ待ち行列174、及びスコアボード178を含む。図示されていないプロセッサ・モジュール、及び入出力モジュールはそれぞれ、プロセッサ・モジュール120、及び入出力モジュール116と同じ構成要素を含むことが分かる。
【００５７】
動作時に、入出力モジュール、又はプロセッサ・モジュールによって発行されたコヒーレント・トランザクションはバス112上に送られる。このコヒーレント・トランザクションは、各モジュールによって検出され、各クライアント・モジュールのCCC待ち行列内とスコアボード178上に置かれる。CCC待ち行列164、及び168にFIFO順で記憶されたコヒーレント・トランザクションはそれぞれ、メモリ・キャッシュ166、及び170と突き合わせて検査され、その結果がそれぞれライン152、及び142でメイン・メモリ制御装置114に報告される。結果は、全てのモジュールが当該のトランザクションに関して報告するまでスコアボード上に記憶される。メイン・メモリ制御装置114は、ライン152、及び142で応答されたコヒーレント・トランザクションの数を、スコアボード178内にリストされたコヒーレント・トランザクションの数と比較して、CCC待ち行列164、及び168の満杯/空き状況を判定する。
【００５８】
例えば、バス112上で発行されたコヒーレント・メモリ読み取りは、モジュール116、及び120によって検出され、コヒーレンシ検査のために前記モジュールのCCC待ち行列内に置かれる。どのモジュールにもデータの専用ダーティ・コピーがないことを示すコヒーレンシ検査の結果が、メイン・メモリ制御装置114に報告される。全てのモジュールが報告し終わると、メイン・メモリ制御装置114は、要求モジュールにデータを提供し、各モジュールがそのコヒーレント・トランザクションに応答したことをスコアボード上に示し、スコアボードのこのラインを着信トランザクションによって自由に使用できるものとしてマークする。
【００５９】
入出力装置への書き込みを行うような入出力トランザクションは、入出力待ち行列162を介して入出力バス160に送られる。入出力モジュール116は、入出力待ち行列162の状況を監視し、入出力待ち行列162が満杯に近づくと、この情報をライン158でメイン・メモリ制御装置114に報告する。例えば、プロセッサ・モジュール120が入出力モジュール116にデータを書き込むことでビジー状態である場合、待ち行列162がトランザクションで満杯になり、STOP_IO信号が発行されることがある。メイン・メモリ制御装置114は、NO_IOクライアント・オプション信号を発行する。
【００６０】
メイン・メモリ制御装置114は、それ自身のメモリ待ち行列の状況も監視する。従って、メイン・メモリ制御装置114は、コンピュータ・システム100における全ての待ち行列の満杯/空き状況に関する情報を有している。メイン・メモリ制御装置は、そのメモリ待ち行列が満杯に近づいたことを検出すると、クライアント・オプション信号NONE_ALLOWEDを発行する。以前に発行されたメモリ・トランザクションが処理されるにつれて、メモリ待ち行列は空きができ、より制限のないクライアント・オプション信号を発行することが可能になる。
【００６１】
より一般的には、全ての待ち行列の満杯/空き状況に関する、メイン・メモリ制御装置114に利用可能な情報に基づいて、メイン・メモリ制御装置114内のメモリ制御プロセッサ172が、待ち行列のオーバフローを生じることなく、次の有効なサイクルの間に発行できるトランザクションがどのタイプかを判定する。メモリ制御プロセッサ172は、次の有効なバス・サイクルの間に、待ち行列のオーバフローを生じさせることのないトランザクションだけが実行されるように、どのクライアント・オプション信号を発行すべきかを判定する。調停の勝利者は、クライアント・オプション信号によって許可されたトランザクションだけを発行する。従って、中断させる必要のあるトランザクションは一切なく、モジュール間でハンドシェイクを行う必要もない。
【００６２】
例えば、入出力待ち行列162が満杯に近づきつつあると仮定する。入出力モジュール116はデータを受け取るためにビジー状態である。入出力装置への他の書き込みがバス112で入出力モジュール116に送られ、入出力待ち行列162に置かれる。入出力モジュール116は、待ち行列162が満杯に近づいたことを検出すると、メイン・メモリ制御装置114にSTOP_IO信号を送る。メイン・メモリ制御装置114は、クライアント・オプション信号NO_IOを駆動し、次のバスの所有者は、入出力装置に対するトランザクションを駆動することはない。
【００６３】
更に例を挙げると、メイン・メモリ制御装置114は１つ、又は複数のコヒーレンシ待ち行列が満杯に近づきつつあることを(メイン・メモリ制御装置自体のスコアボードを使用して)検出することができる。メイン・メモリ制御装置114は、クライアント・オプション信号RET_ONLYを駆動する。バスの所有者は追加の読み取りトランザクションを駆動しない。しかし、データのリターン、及びコヒーレンシ検査の応答は許可される。従って、CCC待ち行列は最終的に空になっていき、より制限のないクライアント・オプション信号が発行される。
【００６４】
ここでは、本発明の順序付けされたコヒーレンシ技法について更に説明する。上述のように、キャッシュ・メモリを有する各コヒーレント・モジュールは、バス上で各コヒーレント・トランザクションが発行された後に、各自のキャッシュに対してコヒーレンシ検査を実施する必要がある。従って、これらのモジュールは、コヒーレント・トランザクションに関してバスを監視する。バス上で発行されるコヒーレント・トランザクションは、そのモジュールによって発行されたコヒーレント・トランザクションも含めて、そのモジュールのコヒーレンシ待ち行列内に置かれる。他のモジュールのトランザクションが、コヒーレンシ待ち行列の先頭に達すると、そのモジュールはそのトランザクションについてキャッシュ・コヒーレンシ検査を実行し、次にそのCOHラインで、そのトランザクションに関するキャッシュ・コヒーレンシ状況をメイン・メモリ制御装置に報告する。モジュール自身のトランザクションがそのコヒーレンシ待ち行列の先頭に達すると、そのモジュールは、トランザクションを発行するために自身のキャッシュを更新し、そのラインにマークをして、データのリターンがまだ未完了であることを表す。更に、このモジュールは、そのCOHラインで、メイン・メモリ制御装置にキャッシュ・コヒーレンシ状況を報告するが、必ず信号COH_OK(下記参照)であり、チェックが完了し、競合が見つからなかったことを示す。
【００６５】
メイン・メモリ制御装置は、別のキャッシュ・コヒーレンシ状況の報告を受け取り、以下で述べる方法で、コヒーレント・トランザクション要求に関するキャッシュ・コヒーレンシ状況の完了を判定する。
【００６６】
各キャッシュ・ラインの状況は、４つのうちの１つ、即ち「無効」、「共用」、「専用ダーティ」、及び「専用クリーン」のうちの１つで定義される。「共用」ラインは、同時に２つ以上のモジュールのキャッシュ内に存在することが許可されるものである。定義によれば、全ての共用ラインはクリーンである。ラインの専用コピーは、システム内の任意のデータ・キャッシュ内で、いかなる時点においても１つだけが許可される。「専用」ラインは、クリーン、又はダーティのどちらかである。
【００６７】
コヒーレンシ状況は、更に後述する、以下の信号を使用して、COHラインで各モジュールによって報告される。
【００６８】
【表２】
0003640997.tif 000003
【００６９】
クライアントは、コヒーレンシ状況の報告で活動していない場合は必ず、COH_NOPをそのCOHバスに駆動する。クライアントは、コヒーレンシ状況の報告を行う準備ができると、そのコヒーレンシ検査の結果に基づいて、単一バス・サイクル毎に、COH_SHARED、COH_COPYOUT、又はCOH_OKを駆動する。
【００７０】
報告モジュールが、要求された専用ダーティのデータ・ラインを所有し、コヒーレント・トランザクションが読み取りトランザクション、又はフラッシュ・トランザクションである場合、この報告モジュールは、COH_COPYOUTを駆動して、後続トランザクション内の要求モジュールに、バス上でデータを提供することを指定する。モジュールが、COH_COPYOUTの状況を送る場合、そのモジュールはそのラインを書き出す必要がある。
【００７１】
報告クライアントが、要求されたラインの共用、又は専用クリーン・コピーを有しており、そのラインのコピーを保持する場合、報告クライアントはCOH_SHAREDを駆動して、要求モジュールがそのコピーを共用としてマークするよう指定する。報告モジュールが現在、専用クリーン・コピーを有している場合、そのコピーを共用としてマークする。２つ以上のクライアントが、COH_SHARED状況を送ることが可能である。メイン・メモリ制御装置は応答時に、メイン・メモリ制御装置がバスの調停を行う時に、要求モジュールに対してCLIENT_OPバス上でSHAR_RTNの符号を使用することによって、そのラインが共用にマークされていることを表し、データをリターンする。
【００７２】
報告クライアントがラインの供給を行っておらず、そのラインの共用コピーを保持していないという場合には、COH_OKを駆動して、コヒーレンシ検査が完了しており、報告するものがないことを示す。報告モジュールがコピーを有していないか、コヒーレント・トランザクションの結果、コピーに無効のマークがされているか、又は報告モジュールがコヒーレント・トランザクションを発行した場合に、COH_OKが発行される。
【００７３】
メイン・メモリ制御装置は、上述のスコアボードを使用してコヒーレンシ応答の記録を保持する。各モジュールが、特定のトランザクションに関するコヒーレンシ状況を報告すると、メイン・メモリ制御装置は、その信号を分析して、要求モジュールに最新データが送られるようにする。ラインの専用ダーティ・コピーを有しているモジュールがなければ、メイン・メモリ制御装置は、データが専用で使用可能か、共用で使用可能かに関する状況と共に、データを供給する。それ以外であれば、専用ダーティのデータを有しているモジュールが、メイン・メモリ制御装置によって非コヒーレントのキャッシュ・ライト・バック・トランザクションとして扱われ、従って必要なメモリ更新を行うキャッシュ間コピー・トランザクションによってデータ供給を行うので、メイン・メモリ制御装置は、このトランザクションに関して「忘れる」ことができる。
【００７４】
２つ以上のコヒーレンシ検査の同時実行が可能である。同時に検査できる数は、コヒーレント・トランザクションの進行を監視するCCCトランザクション待ち行列の深さのみに制限される。
【００７５】
上述のように、コヒーレント・トランザクションは、発行された時にバス上で検出され、先入れ先出しの順で、コヒーレンシ検査のために各モジュールのコヒーレンシ待ち行列内に置かれる。各モジュールは、それ自身のトランザクションを発行した時に、そのトランザクションもそれ自身の待ち行列内に置き、それが待ち行列の先頭に達するまで待って、そのトランザクションに対するコヒーレンシ検査を実行する。従って、各クライアントは、コヒーレント・トランザクションがバス上で発行されたのと正確に同じ順序で、各コヒーレント・トランザクションに関するコヒーレンシ検査に対して応答を送る。
【００７６】
メイン・メモリ制御装置は、全てのコヒーレンシ検査(トランザクションを発行したモジュールによる検査を含む)が完了するまで待って、データの供給をさせる。従って、コヒーレント・トランザクションは、一般に、発行されるのと同じ順序で完了する。
【００７７】
好適実施例では、専用ダーティのキャッシュ・データのメモリに対する非コヒーレント書き込みは、特殊な事例として扱われ、この場合、こうした書き込みは、キャッシュ・ライト・バックと呼ばれる。キャッシュ・ライト・バック以外に、好適実施例では、コヒーレント読み取り、非コヒーレント読み取り、コヒーレント書き込み、及び非キャッシュ非コヒーレント書き込みといった、トランザクションの種類を認識している。好適実施例では、特殊なトランザクション符号化を使用して、キャッシュ・ライト・バックと通常の非コヒーレント書き込みを区別する。更に、上述のキャッシュ間コピー・トランザクションは、ダーティのキャッシュ・データでメモリ更新を行う時の副作用によって、キャッシュ・ライト・バックとして扱われる。キャッシュ・ライト・バック以外の全てのトランザクションは、バス112上で発行される論理的順序で処理されなければならない。キャッシュ・ライト・バックは、システムのパイプライン化、及び分割トランザクションの性質のため、特殊である。例えば、プロセッサ20は、所定のアドレスに読み取りトランザクションを発行することができる。その直後に、プロセッサ22は、同じアドレスにキャッシュ・ライト・バック・トランザクションを発行することができるが、プロセッサ22がプロセッサ20の読み取りトランザクションに関してコヒーレンシ検査を実行するのは、キャッシュ・ライト・バック・トランザクションを発行した後に限られる。キャッシュ・ライト・バックが、他のトランザクションとして処理された場合、プロセッサ22はプロセッサ20によって要求されたデータのコピーを有していないことを示すが(既にバスに書き出しているため)、メイン・メモリ制御装置114は、バス112上で、プロセッサ22の書き込みの前に、プロセッサ20の読み取りがあることが分かるので、まず読み取りを実行し、メイン・メモリから失効データをリターンする。
【００７８】
これを防ぐため、メモリの読み取りに続いて、同じアドレスに対するキャッシュ・ライト・バックが行われる場合、メイン・メモリ制御装置114は、書き込まれているデータが、実際に、読み取りを満たすためにリターンすべきものであると仮定する。従って、キャッシュ・ライト・バックは、読み取りの前に、効果的に順序の再配列がなされる。当業者には明らかなように、ほぼ同じ論旨が、入出力DMA書き込みに関するキャッシュ・ライト・バックの順序にも当てはまる。
【００７９】
読み取りの実行、及び要求されたデータのリターンに要する時間は、システムの性能に直接影響するので、最短に維持しなければならない。一方、書き込みは、重大ではない。書き込みを記憶するスペースがある限り、書き込みの実行は、その書き込みが必要になるまで、又は書き込みの実行において順序を保持することが必要になるまで、より重大な読み取りを優先して、延期することが可能である。
【００８０】
最大性能(最小の読み取り遅延)のために、メイン・メモリ制御装置114は、読み取りの推論的実行を実施する。メイン・メモリ制御装置114には、バス112上で読み取り要求を受け取った時点で、まだ、同じアドレスに対する後続のキャッシュ・ライト・バックがあるかどうか、又は読み取りが、別のキャッシュからのキャッシュ間コピーによって満たされるかどうか分からない。実際、メイン・メモリ制御装置114は、既に待ち行列に入れられた、同じアドレスに対する書き込みを有している可能性があるが、チェックに時間はかからない。これらの全ての場合において、できる限り速く、その読み取りがメモリに送られる。後で、メイン・メモリから読み取られたデータが正確でないと分かれば、そのデータは廃棄され、必要であればメモリから再び読み取りが行われる。
【００８１】
読み取り、及びキャッシュ・ライト・バックを実行するための上記手順の実施は、メイン・メモリ制御装置114内の３つの先入れ先出しメモリ待ち行列、即ち、上述の第１待ち行列(待機待ち行列)175、第２待ち行列(準備完了待ち行列)176、及び読み取り待ち行列(通常読み取り待ち行列)174によって達成される。全ての読み取りが読み取り待ち行列174に入れられる。読み取り待ち行列の先頭のトランザクションが、できるだけ速くメモリに対し発行される。非コヒーレント・キャッシュ・ライト・バック以外の全てのトランザクションが、第１待ち行列175に入れられる。読み取りが、読み取り待ち行列174と第１待ち行列175の両方に入れられる点に留意されたい。キャッシュ・ライト・バックは、直接第２待ち行列176に入れられ、それによって、第１待ち行列内の他の読み取り、及びライト・バックがバイパスされる。以下で更に述べるように、これによって、キャッシュ・ライト・バックが、他のトランザクションの後で、バス112上に発行されたとしても、効果的にキャッシュ・ライト・バックが、読み取り、及びDMA書き込みより先になるように順序付けられる。
【００８２】
第１待ち行列175の先頭のトランザクションが、読み取りトランザクションである場合、対応するデータが、利用可能で、必要なコヒーレンシ検査が完了していれば、更に、そのデータが正しいデータであれば、そのデータがバス112上でリターンされる。正しいデータを含んだ書き込みの前に、読み取りが実行されると、そのデータは正しくない可能性がある。
【００８３】
失効データのチェックは、次のように実施される。書き込みがメモリに対して発行される毎に、そのアドレスが第１待ち行列内に存在する全ての読み取りのアドレスと比較される。一致すれば、失効データを受け取る可能性があることを示すフラグが、その読み取りに関してセットされる(その読み取りが、以前にメモリに対して発行されている可能性があるため)。又、読み取りが第１待ち行列の先頭にあり、バス112上でデータをリターンする準備ができている場合にも必ず、そのアドレスと、第２待ち行列内にある全ての書き込みのアドレスが比較される。一致すれば、その読み取りにおいて、失効データを受け取ったものと仮定される。いずれにせよ、メモリに対して読み取りが再び発行されなければならない。この再発行は、第２待ち行列にその読み取りをコピーし、次に第２待ち行列内の全てのトランザクションを(順番に)メモリに対して発行することによって実施される。この読み取りの再発行が完了するまでに、論理的順序がこの読み取りより前になるべき書き込みは全て、メモリに対して発行されているので、その読み取りに関して、正しいデータを受け取ることになる。
【００８４】
第１待ち行列の先頭にあるトランザクションが、書き込み(コヒーレント書き込み、又は非キャッシュ非コヒーレント書き込み)である場合、そのトランザクションは第１待ち行列から第２待ち行列に転送される(やはり、必要なコヒーレンシ検査が完了していれば)。最終的に、書き込みは、それが第２待ち行列の先頭に達した少し後に、メモリに対して発行される。これによって、他の書き込みに関して非コヒーレント・キャッシュ・ライト・バックの順序が保証される。
【００８５】
当業者には、前記の説明、及び添付図面から、本発明に対する様々な修正が可能なことが明らかになろう。従って、本発明は、特許請求の範囲によってのみ制限されるべきものである。
【００８６】
以下に本発明の実施態様を列挙する。
【００８７】
１．  バスに接続された処理モジュールによって実行されるべきトランザクションを指定する情報の送信、及び受信のためのバスと、
前記バス上にトランザクションを送る機能を提供するための、前記バスに接続されたメモリ制御装置であって、前記トランザクションが前記機能を提供する前にコヒーレンシ検査を要求するトランザクションを含む前記メモリ制御装置と、前記バスに接続された複数の処理モジュールであって、前記各処理モジュールが、前記処理モジュールに関連したメモリ内に記憶されたデータにコヒーレンシ検査を実施し、前記コヒーレンシ検査の結果を前記メモリ制御装置に報告するためのコヒーレンシ検査手段を備え、前記各コヒーレンシ検査が、前記バス上で発行されたトランザクションに対応し、前記コヒーレンシ検査が、対応するトランザクションが前記バス上で発行された順番で実施される前記処理モジュールを含むことを特徴とする、データ処理システム。
【００８８】
２．  前記各処理モジュールが、前記コヒーレンシ検査を指定する情報を記憶するための待ち行列を備え、前記コヒーレンシ検査手段が、前記情報が前記待ち行列に記憶される順番で、前記コヒーレンシ検査を実施する手段から成ることを特徴とする、項番１に記載のデータ処理システム。
【００８９】
３．  前記各処理モジュールが、前記バス上でコヒーレンシ検査を要求するトランザクションを検出し、コヒーレンシ検査を要求する前記トランザクションの１つを検出すると、これに応答して、コヒーレンシ検査を開始する手段を備えることを特徴とする、項番１に記載のデータ処理システム。
【００９０】
４．  前記メイン・メモリ制御装置によって提供された前記トランザクションが、メモリ・アドレスからのデータを要求する読み取りトランザクション、及び前記メモリ・アドレスへデータを送る書き込みトランザクションから構成されることと、前記メイン・メモリ制御装置が、前記書き込みトランザクションを、前記読み取りトランザクションの前に実行させるための手段から成ることを特徴とする、項番１に記載のデータ処理システム。
【００９１】
【発明の効果】
本発明によるパイプライン化分割トランザクション・バスのためのコヒーレンシ技法によって、コヒーレント・トランザクションが発行される速度が制限されず、かつ各モジュールが本来の速度で、キャッシュ・コヒーレンシ検査が処理可能となる。
【図面の簡単な説明】
【図１】本発明による完全に順序付けされたコヒーレンシ技法を使用するコンピュータ・システムの実施例の１つを示すブロック図である。
【図２】本発明による完全に順序付けされたコヒーレンシ技法を使用するコンピュータ・システムの構成要素を示すブロック図である。
【符号の説明】
100  コンピュータ・システム
112  バス
114  メイン・メモリ制御装置
116  入出力モジュール
120  プロセッサ・モジュール
164、168  CCC待ち行列
170  メモリ・キャッシュ
【図１】
0003640997.tif 000004
【図２】
0003640997.tif 000005