(57)【特許請求の範囲】
【請求項１】
それぞれが所定の数の共有バス（２０，２２，２４，２６）に結合された所定の数のバス・マスタ装置（１２，１６，１７）を有するデータ処理システム（１０）において、前記の所定の数の装置のそれぞれに結合されたアービタ（１４）を用いて、バスの所有権の割付を制御するためにバス仲裁プロトコルを実現する方法であって：
前記所定の数のバス・マスタ装置のうちの一つである開始バス・マスタ装置が、キャッシュ・ラインに対応するメモリ・システム（１８）のアドレスへのアクセスを要求してバス・トランザクションを開始する段階；
前記所定の数のバス・マスタ装置のうちの他の一つであるスヌープ・バス・マスタ装置が、前記バス・トランザクション中に当該スヌープ・バス・マスタ装置のダーティなキャッシュ・ラインに対応するメモリ・システム（１８）のアドレスへのアクセス要求を検出したときに、そのアクセス要求の検出に応答して第１制御信号をアサートする段階であって、前記第１制御信号が、前記開始バス・マスタ装置に対して、前記バス・トランザクション中の前記アクセス要求の検出を通知し、前記開始バス・マスタ装置に、共有バスの所有権の放棄と、前記バス・トランザクションの再試行を通知する段階；
前記スヌープ・バス・マスタ装置以外のバス・マスタ装置のそれぞれが、前記第１制御信号のアサーションを検出する段階であって、前記スヌープ・バス・マスタ装置以外のバス・マスタ装置は、前記スヌープ・バス・マスタ装置による前記第１制御信号のアサーションに応答して、前記アービタからバス・リクエスト信号を削除して、前記アービタによるバス許可信号のアサーションを無視する段階；
前記スヌープ・バス・マスタ装置が前記第１制御信号をニゲートするまで、前記スヌープ・バス・マスタ装置以外のバス・マスタ装置のそれぞれによる、前記バス・リクエスト信号のアサーションを抑制して、前記アービタが前記スヌープ・バス・マスタ装置からのみのバス・リクエスト信号を受け取るようにする段階；および
前記アービタが前記スヌープ・バス・マスタ装置に対して前記共有バスの所有権を許可して、スヌープ・バス・マスタ装置が前記ダーティなキャッシュ・ラインに対応する前記メモリ・システムのアドレスへのスヌープ・コピーバックを実行する段階；
によって構成されることを特徴とする方法。
【請求項２】
それぞれが所定の数の共有バス（２０，２２，２４，２６）に結合された所定の数のバス・マスタ（１２，１６，１７）を有するデータ処理システム（１０）において、前記の所定の数のバス・マスタのそれぞれに結合されたアービタ（１４）を用いて、バスの所有権の割付を制御するためにスヌープ−再試行バス仲裁プロトコルを実現する方法であって：
前記所定の数のバス・マスタのうちの一つである開始バス・マスタが、キャッシュ・ラインに対応するメモリ・システム（１８）のアドレスへのアクセスを要求してバス・トランザクションを開始する段階；
前記所定の数のバス・マスタのうちの他の一つであるスヌープ・プロセッサが、前記バス・トランザクション中に当該スヌープ・プロセッサのダーティなキャッシュ・ラインに対応するメモリ・システム（１８）のアドレスへのアクセス要求を検出したときに、そのアクセス要求の検出に応答して第１制御信号をアサートする段階であって、前記第１制御信号が、前記開始バス・マスタに対して、前記バス・トランザクション中にリクエストされたアドレスに対するデータ・エントリが、前記スヌープ・プロセッサ内にあることを通知するとともに、共有バスの所有権の放棄と、前記バス・トランザクションの再試行を通知する段階；
前記スヌープ・プロセッサ以外のバス・マスタのそれぞれが、前記第１制御信号のアサーションを検出する段階であって、前記スヌープ・プロセッサ以外のバス・マスタは、前記スヌープ・プロセッサによる前記第１制御信号のアサーションに応答して、前記アービタからバス・リクエスト信号を削除して、前記アービタによるバス許可信号のアサーションを無視する段階；
前記スヌープ・プロセッサが前記第１制御信号をニゲートするまで、前記スヌープ・プロセッサ以外のバス・マスタのそれぞれによる、前記バス・リクエスト信号のアサーションを抑制して、前記アービタが前記スヌープ・プロセッサからのみのバス・リクエスト信号を受け取るようにする段階；および
前記アービタが前記スヌープ・プロセッサに対して前記共有バスの所有権を許可して、スヌープ・プロセッサが前記ダーティなキャッシュ・ラインに対応する前記メモリ・システムのアドレスへのスヌープ・コピーバックを実行する段階；
によって構成されることを特徴とする方法。
【請求項３】
アービタ（１４）を用いてスヌープ−再試行バス仲裁プロトコルを実行して、所定の数の共有バス（２０，２２，２４，２６）のそれぞれに関してバスの所有権の割付を制御するデータ処理システム（１０）であって：
複数の独立したバス・リクエスト信号のそれぞれのアサーションを検出し、それに応答して、複数の独立したバス許可信号のそれぞれを選択的にアサートする第１手段（１４）であって、前記アービタとして機能する第１手段（１４）；
前記第１手段（１４）と前記の所定の数の共有バス（２０，２２，２４，２６）のそれぞれとに結合された第２手段（１２）であって、第１共有バスの第１バス・マスタである前記第２手段（１２）；
前記第１手段（１４）と前記の所定の数の共有バス（２０，２２，２４，２６）のそれぞれとに結合された第３手段（１６）であって、第１共有バスの第２バス・マスタである前記第３手段（１６）；および
前記第１手段（１４）と前記の所定の数の共有バス（２０，２２，２４，２６）のそれぞれとに結合された第４手段（１７）であって、第１共有バスの第３バス・マスタである前記第４手段（１７）；
によって構成され、前記第２手段がキャッシュ・ラインに対応するメモリ・システム（１８）のアドレスへのアクセスを要求してバス・トランザクションを開始したときに、前記第３手段（１６）が当該第３手段（１６）のダーティなキャッシュ・ラインに対応するメモリ・システム（１８）のアドレスへのアクセス要求を検出した場合、第３手段（１６）がそのアクセス要求の検出に応答して第１制御信号をアサートして、前記第２手段に対して、前記第１共有バスの所有権の放棄と、前記バス・トランザクションの再試行を通知し、
前記第２手段（１２）が、前記第３手段（１６）から前記第１制御信号を受信したことに応答して、前記第１手段（１４）から第１バス・リクエスト信号を削除して、前記第１手段による第１バス許可信号のアサーションを無視し、
前記第４手段（１７）が、前記第３手段（１６）から前記第１制御信号を受信したことに応答して、前記第１手段（１４）から第２バス・リクエスト信号を削除して、前記第１手段による第２バス許可信号のアサーションを無視し、
前記第３手段（１６）が前記第１制御信号をニゲートするまで、前記第２手段（１２）及び前記第４手段（１７）がそれぞれ対応するバス・リクエスト信号のアサーションを抑制して、前記第１手段（１４）が前記第３手段（１６）からのみのバス・リクエスト信号を受け取るようにし、それによって第３手段（１６）に対して前記第１共有バスの所有権を許可して、その第３手段（１６）が前記ダーティなキャッシュ・ラインに対応する前記メモリ・システムのアドレスへのスヌープ・コピーバックを実行することを特徴とするデータ処理システム（１０）。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、一般に、データ処理システムに関する。さらに詳しくは、バス仲裁（バス・アービトレーション）を実行するデータ処理システムに関する。
【０００２】
【従来の技術と発明が解決しようとする課題】
現在の高性能データ処理システムは、オンチップ・キャッシュをもつ複数のマイクロプロセッサを用いている。通常、これらのデータ処理システムは、バスの「スヌープ（検索）動作」と呼ばれる技術を採用して、複数のマイクロプロセッサ間のキャッシュの一貫性を維持している。一般に、バス・トランザクションをスヌープするマイクロプロセッサが「ダーティ」と印をつけられたキャッシュ・エントリ上のキャッシュ・ヒットを検出すると、スヌープ動作を行うマイクロプロセッサ（「スヌーパ」）は、現在の（「元の」）バス・マスタにバスの所有権を放棄させ、後でもう一度バス・トランザクションを再試行させる。スヌーパは、次にバスの所有権を得て、新しいキャッシュ・ラインでメイン・メモリを更新しなければならない。元のバス・マスタは、スヌーパがメモリの更新を完了するまで、キャッシュ・ラインにアクセスするように「再試行」を続けることになる。この過程は通常、「スヌープ−再試行」プロトコルと呼ばれる。
【０００３】
従って、スヌープ−再試行のために元のバス・マスタがバスの所有権を放棄すると、ダーティなキャッシュ・ラインをもつスヌーパは、次のバス保有期間（bus tenure）の所有権に対して最優先権を有することが望ましい。基本的には、スヌーパのリクエストに対して、バス所有権に対する「第１のチャンス（最優先権）」が与えられなければ、他のバス・マスタ（元のバス・マスタを含む）は、スヌーパがバスの所有権を獲得することを妨害することもあり、それにより元のバス・トランザクションの進行が遅れる。従来のアービタ（arbiter: 仲裁装置）は、スヌープ・ヒットを示すマイクロプロセッサに最優先権が与えられることを保証することもできるが、これには余分なアービタ入力が必要で、論理もより複雑になる。そのために、外部バス仲裁論理の実現に伴う費用と複雑性とは、複数のバス・マスタを有するデータ処理システムを設計する際の重要な考慮事項となっている。
【０００４】
【課題を解決するための手段】
本発明は、１つの形態においては、アービタを用いてスヌープ−再試行バス仲裁プロトコルを実行するデータ処理システムおよびその方法により構成される。データ処理システムは、所定の数のバス・マスタを有し、それぞれのバス・マスタは、所定の数の共有バスを介してメモリ・システムに結合されている。アービタは、所定の数のバス・マスタのそれぞれに結合されて、バス所有権の割付を制御する。スヌープ・プロセッサは、第１バス・トランザクションにおけるスヌープ・ヒットの検出に応答して、第１制御信号をアサートする。第１制御信号は、第１バス・マスタに対して、第１バス・トランザクション中にリクエストされたアドレスに対するデータ・エントリがスヌープ・プロセッサ内にあることを通知して、第１共有バスの所有権の放棄と、バス・トランザクションの再試行とを通知する。第１バス・マスタと所定の数の潜在的バス・マスタのそれぞれとは、スヌープ・プロセッサによる第１制御信号のアサーションを検出すると、それに応答して、それぞれがアービタからバス・リクエスト信号を削除して、バス許可信号（bus grant signal）のアービタによるアサーションを無視する。所定の数の潜在的バス・マスタのそれぞれは、バス・リクエスト信号のアサーションを抑制して、スヌープ・プロセッサが共有バスの所有権を得ることができるようにする。
【０００５】
本発明は、以下の詳細な説明と、添付の図面とにより、当業者には理解されるだろう。
【０００６】
【実施例】
「アサート(assert)」および「アサーション(assertion) 」という言葉は、信号または類似の装置を論理的に真（能動）の状態にする際に用いられ、それに対して「ニゲート(negate)」および「ニゲーション(negation)」という言葉は、信号またはその他の装置を論理的に偽（非能動）の状態にする場合に用いる。アスタリスク記号は、相補信号を示すために用いられる。たとえば、バス・リクエスト＊（BUS REQUEST*）は、バス・リクエスト（BUS REQUEST ）信号の相補論理状態の信号を示す。
【０００７】
図１には、本発明による多重マスタ・データ処理システム１０の好適な実施例が示され、このシステムでは集中化された仲裁システムを用いてスヌープ−再試行プロトコルを実行する。図示された形態においては、仲裁バス２０，アドレス・バス２２，データ・バス２４および転送制御信号ライン２６が、データ・プロセッサ（ＤＰ）１２と他の代替バス・マスタ（ＡＢＭ）１６ないし１７とに結合され、それらにより共有されて、外部メモリ・システム１８にアクセスする。転送制御信号は、バス・マスタ群（ＤＰ１２およびＡＢＭ１６，１７）とメモリ・システム１８との間の基本的な初期接続（ハンドシェーク）部となっている。図１に示されるように、外部アービタ１４（仲裁装置）がデータ・プロセッサ１２と代替バス・マスタ１６，１７とに結合され、共有されているアドレス・バス２２の割付を制御する。基準クロック発生器１１は、バス・マスタ群（データ・プロセッサ１２および代替バス・マスタ１６），アービタ１４およびメモリ・システム１８にクロック（ＣＬＫ）信号を与える。システム１０においては、データ・プロセッサ１２は、内部のハーバード・アーキテクチャ（Harvard architecture）を用いており、ＣＰＵコア３０内の命令シーケンサ（図示せず）が命令キャッシュ・メモリ管理ユニット（コード・キャッシュ： CODE CACHE ）３２から命令を取り出し、ＣＰＵコア３０内のロード／記憶ユニット（図示せず）がデータ・キャッシュ・メモリ管理ユニット（データ・キャッシュ： DATA CACHE ）３４に対するデータの読み／書きを実行する。コード・キャッシュ３２およびデータ・キャッシュ３４は、いずれも内部バス・リクエスト信号を発生し、外部のメモリに対するアクセスが必要なときには、この信号を用いてバス・インターフェース・ユニット（ＢＩＵ）３６に知らせる。
【０００８】
従来、データ処理システムは、保有されたあるいは接続されたバス・インターフェースを内蔵して、それによってデータ・プロセッサは、トランザクションが終了するまで、アドレス・バスおよびデータ・バスの両方に対して所有権を保持している。好適な実施例においては、システム１０は仲裁プロトコルを用いており、このプロトコルによってアービタ１４は、アドレス・バス２２の所有権を「公平に」割り付けることができる。これはWilliam C. Moyer他による、本発明の被譲渡人に譲渡された、同時出願特許申請代理人明細書番号SC-01498A 号の「A Method and Apparatus for Performing Bus Arbitration in a Data Processing System 」に開示されている。本発明の図示された形態においては、システム１０は複数のバス・マスタを採用しているが、分割バス・トランザクション（split bus transaction ）には対応しない。分割バス・トランザクションにおいては、異なる装置がアドレスバス２２とデータ・バス２４とを一度に制御するので、バス・マスタは、アドレス・バス２２とデータ・バス２４の両方の所有権に関して仲裁を行わなければならない。
【０００９】
しかし、本発明の好適な実施例においては、データ・バス２４は、連続的にバス・マスタに対して所有権が認められ、仲裁はアドレス・バス２２の支配権についてのみ要求される。それぞれの潜在的バス・マスタ（データ・プロセッサ１２および代替バス・マスタ１６，１７）は、それぞれ独立したバス・リクエスト出力信号ＢＲ1 ＊，ＢＲ2 ＊およびＢＲ3 ＊と、独立したバス許可入力信号ＢＧ1 ＊，ＢＧ2 ＊およびＢＧ3 ＊とを有し、これらはアドレス・バス２２の仲裁に用いられる。アドレス・バス使用中（address bus busy: ＡＢＢ＊）信号ラインは、仲裁バス２０を介してバス・マスタ群により共有される。双方向のＡＢＢ＊信号は、現在のバス・マスタによりアサートされて、潜在的バス・マスタに対して、アドレス・バス２２が現在使用できないことを通知する。従って、ＡＢＢ＊信号は、現在のバス・マスタの出力信号であり、すべての潜在的バス・マスタに対する入力である。
【００１０】
図１に示されるように、データ・プロセッサ１２は、外部バス・アクセスに関して独立している重複する内部リクエストを発生することができる。基本的には内部バス・リクエストは、命令側とロード／記憶側とから同時に発生することができる。あるいは、命令側がすでに外部バスの所有者となっていて、外部バス命令の取り出しを行っているときは、内部リクエストはロード／記憶側から来ることもある（あるいはその逆もある）。ＢＩＵ３６は、アドレス・バス２２のアクセスに対して複数の独立内部リクエストを受け取るので、データ・プロセッサ１２は内部仲裁スキームを採用する。通常、内部仲裁が必要になるのは、データ・キャッシュ３２とコード・キャッシュ３４の両方がキャッシュ・ミスを処理しているときに限られる。内部仲裁スキームにおいては、本発明により、外部アドレス共有バス２２に対するアクセスについては、スヌープ・コピーバックが内部の最優先権を有する。スヌープ・コピーバックとは、外部メモリ・システム１８を特定のキャッシュ・ラインの最新バージョンで更新するバースト書き込みである。データ・プロセッサ１２は、再書き込み（write-back）データ・キャッシュ３２を用いるので、あるキャッシュ・ラインに対する書き込みにより、メモリ１８内の対応するアドレスに「ダーティ」な（古い）データを入れることができる。他のバス・マスタ１６，１７が、メモリ・システム１８内のこの古いデータにアクセスしようとすると、データ・プロセッサ１２が介入して、スヌープ・コピーバックによりメモリ・システム１８を更新しなければならない。スヌープ・コピーバック動作が実行されると、修正されたキャッシュ・ラインを有するバス・マスタ（たとえばデータ・プロセッサ１２）は、そのキャッシュ・ラインをメモリ・システム１８に「コピーバック」することができる。これは、リクエストをしているバス・マスタ（たとえばバス・マスタ１６）がメモリ・システム１８内のデータ（キャッシュ・ライン）にアクセスすることができるようになる前に行われる。このようにスヌープ・コピーバックには、内部では最高の優先権が与えられる。これはアドレス・バス２２上の他のプロセッサの前進が、メモリ・システム１８の更新が行われるようになるまで、停止されるためである。
【００１１】
本発明の好適な実施例により、システム１０は、スヌープ−再試行の一貫スキームを利用する。スヌープ−再試行の一貫スキームにより、各バス・マスタは他のバス・マスタにより実行されるバス・トランザクションをモニタして、必要に応じてアクセスに介入して、キャッシュの一貫性を維持することができる。説明を簡単にするために、本発明の動作を「開始プロセッサ」と「スヌープ・プロセッサ」という言葉を用いて説明する。開始プロセッサは、バス・トランザクションの開始時のバス・マスタであり、スヌープ・プロセッサは、バス・トランザクションをスヌープする装置（プロセッサまたはメモリ）である。スヌープ・プロセッサは、外部から開始されたバス・トランザクションをモニタし、すべての全体アドレスと内部データ・キャッシュ・タッグとを比較することにより、バス・トランザクションをスヌープする。有効なエントリに対するデータ・キャッシュ３２タッグがバス２２上のアドレスに一致すると、スヌープ・ヒットが起こる。基本的には、データ・プロセッサ１２と代替バス・マスタ１６，１７とは２つの異なる独立してアクセスすることのできるタッグのコピーを維持して、バス・スヌープがオンチップ・プロセッサ・データ・キャッシュ・アクセスと並行して起こるようになっている。
【００１２】
このため、たとえば、データ・プロセッサ１２は外部バス・トランザクションをモニタして（スヌープがイネーブルのとき）、アドレスとデータ・キャッシュ３２内のタッグの１つとの間の一致を検出することにより、スヌープ「ヒット」を起こす。図１に示されるように、スヌープがデータ・キャッシュ３２内の修正されたエントリ上でヒットすると、データ・プロセッサ１２はそのスヌープ状態信号（ＳＳＴＡＴ＊）をアサートする。システム１０の好適な実施例においては、ＳＳＴＡＴ＊信号とＡＲＴＲＹ＊信号とに関するタイミングにより、スヌープ・プロセッサ（たとえばデータ・プロセッサ１２）から出力されたＳＳＴＡＴ＊信号は、各バス・マスタ１６，１７のＡＲＴＲＹ＊入力信号に直接的に、あるいは間接的に接続される。このため、ＡＲＴＲＹ＊信号のアサーションは、データ・プロセッサ１２からのＳＳＴＡＴ＊信号を介して、開始プロセッサ（たとえばバス・マスタ１６）に、修正されたデータがデータ・プロセッサ１２によりメモリ１８に書き込まれた後で、メモリに対するアクセスを再試行させる。従って、ＡＲＴＲＹ＊信号のアサーションに応答して、開始プロセッサ（バス・マスタ１６）は、そのバス・トランザクションを中断して、アドレス・バス２２とデータ・バス２４とを解放する。
【００１３】
本発明により、ＡＲＴＲＹ＊がアサートされると、すべての他の潜在的バス・マスタ（たとえば代替バス・マスタ１７）は、そのバス・リクエスト信号を削除（ニゲート）して、アービタ１４から来るバス許可信号を無視する。各潜在的バス・マスタは、次にＢＲ＊信号のアサーションを抑制して、アービタ１４がスヌープ・プロセッサ（データ・プロセッサ１２）から来たバス・リクエスト以外のバス・リクエストを受け取らないようにする。これはＡＲＴＲＹ＊信号がニゲートされるまで続く。この抑制スキームにより、スヌープ・プロセッサ（データ・プロセッサ１２）は、アドレス・バス２２の支配権を獲得して、修正されたキャッシュ・ラインをメモリ１８に再度書き込むことができる。
【００１４】
図２に示されるのは、本発明のスヌープ−再試行プロトコルの抑制スキームの動作を示すタイミング図４０である。図２においては、信号の影になっている部分は「関係のない」状態を示す。この例では、第１クロック期間（ＣＬＫ１）の間は、開始プロセッサ（たとえばデータ・プロセッサ１２）が現在のバス・マスタであり、リクエストされているキャッシュ・ラインに関してビットＡ３１ないしＡ０を有する所定のアドレス（ここでは「＄０００２００００」と示される）を共有アドレス・バス２２に対して移動させることによりキャッシュ・ラインの読み出しを開始する。データ・プロセッサ１２がアドレス・バス２２の現在の所有者であるので、これがＡＢＢ＊信号をアサートして、それによりアドレス・バス２２が現在占有されていることを示す。図示された例においては、リクエストされたアドレスは「ダーティ」アドレスで、ただ１つのプロセッサ（たとえば代替バス・マスタ１６）しか、内部データ・キャッシュに記憶されているリクエストされたキャッシュ・ラインに関するデータのコピーをもっていない。リクエストされたキャッシュ・ラインは修正されているので（すなわちキャッシュ・ラインが「ダーティ」であるので）、代替バス・マスタ１６は、データ・プロセッサ１２をメモリ・システム１８内の古いキャッシュ・ラインのデータ（Ｄ６３−Ｄ０）にアクセスさせる前に、修正されたキャッシュ・ラインでメモリ・システム１８を更新しなければならない。従って、第３クロック期間（ＣＬＫ３）中は、代替バス・マスタ１６はスヌープ「ヒット」を検出して、ＳＳＴＡＴ＊信号をアサートすることにより応答する。ＳＳＴＡＴ＊信号は、ＡＲＴＲＹ＊信号に結合されているので、ＡＲＴＲＹ＊信号もまた第３ＣＬＫ期間中にアサートされる。第４クロック期間（ＣＬＫ４）の立ち上がり端で、データ・プロセッサ１２（開始プロセッサ）は、ＡＲＴＲＹ＊信号のアサーションを検出し、自分のバス・リクエスト（ＢＲ1 ＊）信号を削除（ニゲート）して、ＡＢＢ＊信号をニゲートすることにより応答して、それによりアドレス・バス２２を解放する。代替バス・マスタ１６が（スヌープ・ヒットの検出に応答して）ＳＳＴＡＴ＊信号をアサートしたので、データ・プロセッサ１２によるＢＲ1 ＊信号のニゲーションに応答して、自分のバス・リクエスト（ＢＲ2 ）信号をアサートする。前述のようにＡＲＴＲＹ＊がアサートされると、他のすべての潜在的バス・マスタ（すなわち代替バス・マスタ１７）は、自分のバス・リクエスト信号を削除（ニゲート）して、アービタ１４から来るバス許可信号はすべて無視する。従って、第４クロック期間（ＣＬＫ４）中は、代替バス・マスタ１７は自分のバス・リクエスト（ＢＲ3 ＊）信号をニゲートして、それによりアービタ１４は、スヌープ・プロセッサ（代替バス・マスタ１６）に対してバスの支配権を許可する。
【００１５】
第５クロック期間（ＣＬＫ５）中は、代替バス・マスタ１６が認定されたバスの許可を検出して、スヌープ・コピーバック動作を開始する。ＡＢＢ＊信号は、アドレス・バス２２が解放されたときにデータ・プロセッサ１２によりニゲートされたので、スヌープ状態（ＳＳＴＡＴ＊）信号およびアドレス再試行（ＡＲＴＲＹ＊）信号がニゲートされ、データ・プロセッサ１２は、バス・リクエスト信号（ＢＲ1 ）信号を再度アサートする。代替バス・マスタ１６は、アドレス・バス２２の所有権を得て、ＡＢＢ＊信号をアサートし、リクエストされたキャッシュ・ラインに関するアドレスをアドレス・バス２２上に移動させる。
【００１６】
第６クロック期間（ＣＬＫ６）中は、ＡＲＴＲＹ＊信号がニゲートされているので、データ・プロセッサ１２（開始プロセッサ）と代替バス・マスタ１７とは、バス・リクエスト信号ＢＲ1 ＊，ＢＲ3 ＊をそれぞれ再度アサートする。代替バス・マスタ１６は、リクエストされたキャッシュ・ラインに関するデータを、データ・バス２４を介してメモリ・システム１８に移動させ始める。スヌープ・コピーバックが終了すると、代替バス・マスタ１６は、クロック期間１０（ＣＬＫ１０）中にＡＢＢ＊信号をニゲートして、それによりアドレス・バス２２が現在使用可能であることを示す。アービタ１４は、ＢＧ1 ＊信号をアサートすることにより、データ・プロセッサ１２にアドレス・バス２２の支配権を許可する。第１１クロック期間（ＣＬＫ１１）中は、データ・プロセッサ１２は認定されたバス許可が受け取られたことを検出し、アドレス・バス２２の所有権を得て、ＡＢＢ＊信号をアサートすることにより、全体読み込みトランザクションを終了する。
【００１７】
このように本発明により、スヌープ・ヒットを検出すると、スヌープ・プロセッサはスヌープ状態信号（ＳＳＴＡＴ＊）をアサートし、それによって共有アドレス再試行（ＡＲＴＲＹ＊）信号のアサーションが行われる。ＡＲＴＲＹ＊信号を受け取ると、それぞれの潜在的バス・マスタ（メモリの更新を行おうとしているスヌープ・プロセッサを除く）は、バス・リクエスト信号を削除（ニゲート）して、アービタ１４からすでに受け取っているバス許可信号を無視する。アービタ１４が他のすべての潜在的バス・マスタによるバス・リクエスト信号のニゲーションを検出すると、アービタ１４は以前にアサートされたバス許可信号をニゲートすることにより応答する。このように、アサートされたバス・リクエスト信号をもつ唯一の装置であるスヌープ・プロセッサに対して、次のバス保有期間中のアドレス・バス２２の所有権が保証される。アービタ１４は、スヌープ・プロセッサのためのバス許可信号をアサートして、それによりスヌープ・プロセッサは、スヌープ・コピーバック・トランザクションを迅速に実行することができる。
【００１８】
本発明は、好適な実施例に関して説明されたが、さまざまな方法で実行できることは当業者には明白であろう。たとえば、図示された形態においては、アービタ１４は立ち上がりクロック端上でバス・リクエスト信号のトランザクションに応答する同期状態装置である。アービタ論理がシステム１０のタイミング要件（たとえば１クロック仲裁）に充分対応できるほど速ければ、アービタ１４を非同期に実現することができることは、当業者には明白であろう。さらに、転送肯定応答（ＴＡ＊）などの総終了制御信号を用いて、ＡＲＴＲＹ＊信号を認定し、それにより開始プロセッサにバス・トランザクションの終了を知らせることもできる。また、他の総制御信号を用いると、スヌープ−再試行プロトコル以外のものに関して、複数のバス・マスタ間でバスの支配権の優先順位をつけるように本発明を実行することもできる。従って、添付の請求項により、本発明の精神と範囲とに入るすべての修正を包含するものとする。
【図面の簡単な説明】
【図１】本発明の好適な実施例によるスヌープ−再試行を実行するデータ処理システムのブロック図である。
【図２】本発明による、図１のデータ処理システムで用いられるスヌープ−再試行プロトコルのタイミング図である。
【符号の説明】
１０  データ処理システム
１１  基準クロック
１２，１６，１７  バス・マスタ
１８  メモリ・システム
２０，２２，２４，２６  バス
３０  ＣＰＵコア
３２  データ・キャッシュ
３４  コード・キャッシュ
３６  バス・インターフェース・ユニット
【図１】
0003999821.tif 000002
【図２】
0003999821.tif 000003