(57)【特許請求の範囲】
【請求項１】
メモリ相互接続サブシステムと複数のプロセッサ・サブシステムとを有するコンピュータ・システムであり、それぞれの前記プロセッサ・サブシステムはキャッシュメモリとタグを有するものであり、前記メモリ相互接続サブシステムは前記プロセッサ・サブシステム内の前記タグに対応する複製タグを有するものであり、前記複製タグは、対応する前記プロセッサ・サブシステム内の前記タグが管理するデータブロックが、少なくとも専有状態と共有一致状態を含む複数の状態のうちのいずれであるかを示すものである、コンピュータ・システムであって、
前記プロセッサ・サブシステムは、データブロックに対する前記キャッシュメモリにおけるミスヒットが発生したときに、当該データブロックの性質に応じて、当該データブロックを特定する共有読み出し要求、または、当該データブロックを特定する常時共有読み出し要求のいずれかを選択し、選択した要求を生成し前記メモリ相互接続サブシステムに発行するものであり、
前記メモリ相互接続サブシステムは、前記共有読み出し要求を前記プロセッサ・サブシステムから受け取ったときに、前記複製タグを調査するものであり、調査の結果として、前記共有読み出し要求を発行した前記プロセッサ・サブシステム以外のいずれのプロセッサ・サブシステム内のキャッシュメモリも、前記共有読み出し要求が特定するデータブロックを保持していないことが判明した場合には、前記複製タグにおいて、前記共有読み出し要求により特定するデータブロックが前記専有状態であることを示すようにするものであり、
前記メモリ相互接続サブシステムは、前記常時共有読み出し要求を前記プロセッサ・サブシステムから受け取ったときに、前記複製タグにおいて、前記常時共有読み出し要求により特定するデータブロックが前記共有一致状態であることを示すようにするものである、
ことを特徴とするコンピュータ・システム。
【請求項２】
メモリ相互接続サブシステムと複数のプロセッサ・サブシステムとを有するコンピュータ・システムであり、それぞれの前記プロセッサ・サブシステムはキャッシュメモリとタグを有するものであり、前記メモリ相互接続サブシステムは前記プロセッサ・サブシステム内の前記タグに対応する複製タグを有するものであり、前記複製タグは、対応する前記プロセッサ・サブシステム内の前記タグが管理するデータブロックが、少なくとも専有状態と共有一致状態を含む複数の状態のうちのいずれであるかを示すものである、コンピュータ・システムにおけるキャッシュコヒーレンス方法であって、
前記プロセッサ・サブシステムが、データブロックに対する前記キャッシュメモリにおけるミスヒットが発生したときに、当該データブロックの性質に応じて、当該データブロックを特定する共有読み出し要求、または、当該データブロックを特定する常時共有読み出し要求のいずれかを選択し、選択した要求を生成し前記メモリ相互接続サブシステムに発行するステップと、
前記メモリ相互接続サブシステムが、前記共有読み出し要求を前記プロセッササブシステムから受け取ったときに、前記複製タグを調査し、調査の結果として、前記共有読み出し要求を発行した前記プロセッサ・サブシステム以外のいずれのプロセッサ・サブシステム内のキャッシュメモリも、前記共有読み出し要求が特定するデータブロックを保持していないことが判明した場合には、前記複製タグにおいて、前記共有読み出し要求により特定するデータブロックが前記専有状態であることを示すようにするステップと、
前記メモリ相互接続サブシステムが、前記常時共有読み出し要求を前記プロセッサ・サブシステムから受け取ったときに、前記複製タグにおいて、前記常時共有読み出し要求により特定するデータブロックが前記共有一致状態であることを示すようにするステップと、
を含むキャッシュコヒーレンス方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ・システムの分野に係り、特に、データ・コヒーレンスを維持するための無効化動作とコピーバック動作の発生を減少させるための機構を含んでいるマルチプロセッサ・コンピュータ・システムに関する。
【０００２】
【従来の技術】
従来のマルチプロセッサ・コンピュータ・システムは、典型的には、一つの主メモリ・サブシステムに接続されたプロセッサ・サブシステムのセットを含む。そのような主メモリ・サブシステムにより、典型的には、システム内のプロセッサ用の命令とデータの蓄積領域とともに、システムのプロセッサの間で共有されるデータ構造のための蓄積領域とが提供される。そのような共有されるデータ構造によって、プロセッサ間通信と、プロセッサ間でのデータとコードの共有が可能になる。
【０００３】
典型的には、プロセッサ・サブシステムは、共通バス或いは交換型相互接続データパス(switched interconnect data path) のような物理的な相互接続によって主メモリ・サブシステムに接続される。そのような相互接続は、単純な回路交換型相互接続(circuti switched interconnction) 、或いは、アウト-オブ-オーダー・トランザクションを可能にする複雑なパケット交換型相互接続のいずれかの機能を果たすことができる。
【０００４】
それに加えて、各々のプロセッサ・サブシステムは、典型的には、付随の外部キャッシュメモリを含む。そのような外部キャッシュメモリは、通常、主メモリ・サブシステムから選択されたデータブロックを格納する。典型的には、そのような外部キャッシュメモリは、キャッシュ内に格納されたデータブロックについて、主メモリ・サブシステムへのフェッチを避けることにより、キャッシュされたデータブロックへの高速プロセッサアクセスを提供する。
【０００５】
そのようなマルチプロセッサ・コンピュータシステムは、パケット交換型或いは回路交換型のいずれであっても、典型的には、主メモリとキャッシュメモリ内に格納された対応しているデータブロックとの間のデータコヒーレンスを維持するためのプロトコルを実行する。各々のキャッシュメモリは、典型的には、キャッシュされたデータブロックのステータスを示すタグのセットを含む。例えば、ＭＯＥＳＩプロトコルとして参照されるキャッシュ・コヒーレンス・プロトコルの一つのタイプは、キャッシュメモリ内に格納されたデータブロックについて五つの状態のセットを維持する。この五つの状態には、「無効（ｉｎｖａｌｉｄ）」状態、「共有（ｓｈａｒｅｄ）」状態、「専有（ｅｘｃｌｕｓｉｖｅ）」状態、「修正（ｍｏｄｉｆｉｅｄ）」状態が含まれる。
【０００６】
そのようなシステムにおいては、第１のプロセッサが、第１のプロセッサ用の外部キャッシュ内に無いデータブロックが目標とされるロードメモリ命令を実行する場合には、外部から適切なデータブロックがフェッチされる。典型的には、第１のプロセッサがミスしているデータブロックを特定するｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（共有読み出し）（ＲＤＳ）トランザクションをメモリ相互接続に発行する。そのようなｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）トランザクションは、通常、ミスしているデータブロックを第１のプロセッサの外部キャッシュに返し、第１のプロセッサの外部キャッシュ内のそのデータブロックに付随したタグを修正して、データブロックが「共有」状態でキャッシュされていることを示す。
【０００７】
マルチプロセッサ・コンピュータ・システムは、そのようなＭＯＥＳＩプロトコルへの最初の書き込み最適化を実行することができる。そのような最適化により、第１のプロセッサからのｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）トランザクションは、ミスしているデータブロックを返し、他のキャッシュメモリがそのデータブロックを所有していない場合には、ミスしているデータブロックに付随のタグを修正して「専有」状態にあることを示す。それ以後、第１のプロセッサがその専有データブロックへのストア命令を実行する場合には、他のキャッシュコヒーレンスメッセージは、メモリ相互接続を通して転送されない。ミスしたデータブロックが「共有」状態でキャッシュされていた場合には、そのような最適化は、そうでなければ発生したであろうメモリ相互接続を通しての無効化或いはコピーバック動作を除去する。
【０００８】
ＭＯＥＳＩプロトコルに対するそのような書き込み最適化は、通常、第１のプロセッサからのいずれの他のプロセッサによっても所有されなかったデータブロックを目標としたｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）トランザクションが、第１のプロセッサについてのプライベートなデータブロックに対応するという推定に基づく。そのような推定が誤っており、ミスしているデータブロックがプライベートデータでない場合には、第２のプロセッサは、そのデータブロックについて、メモリの相互接続を通してｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）トランザクションを後で発行することができる。そのような場合には、たとえ第１のプロセッサがデータブロックを修正しなかったとしても、そして、たとえミスしているデータブロックが主メモリから利用できるとしても、第１のプロセッサは、通常、ミスしているデータブロックをコピーバック動作で第２のプロセッサに供給しなければならない。
【０００９】
【発明が解決しようとする課題】
残念ながら、第１のプロセッサキャッシュの外部キャッシュメモリがデータソースとなるような動作は、そのような外部競合が第１のプロセッサにより実行された命令と干渉するので、第１のプロセッサの動作に干渉するかもしれない。それに加えて、メモリ相互接続を通してのそのような不必要な無効化或いはコピーバック動作は、そうでなければ避けることができた相互接続における余分なトラフィックを生み出す。さらに、主メモリは、通常、高バンド幅アクセスのために最適化されるので、データが、主メモリからではなく、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）トランザクションでキャッシュメモリから供給される場合には、そのようなシステムのスループットは典型的には減少する。
【００１０】
【課題を解決するための手段】
要求プロセッサによって書き込まれそうもないデータについてのキャッシュコヒーレンスプロトコルの最初の書き込み最適化を、選択的に可能或いは不可能にするコンピュータシステムが開示される。最初の書き込み最適化を不可能にすることにより、読み出し専用メモリページに対するキャッシュミス、或いは、命令フェッチの間の、マルチプロセッサ・システムにおけるコピーバックと無効化メッセージが減少する。ダイナミック・リンク・ライブラリで見い出されるように、読み出し専用コードセグメントにおけるプロセッサ間での命令を共有するコンピュータ・システムにおいても利点が認められる。共有された読み出し専用定数データについて、また、プロセッサからプロセッサへのプロセスの移動についての利点も理解される。
【００１１】
コンピュータ・システムは、プロセッサ・サブシステムのセットと一つのメモリ相互接続を含む。各々のプロセッサ・サブシステムは、外部タグを有する外部キャッシュメモリを含み、このメモリ相互接続は、外部タグに対応する複製されたタグのセットを維持する。プロセッサ・サブシステムは、読み出し専用データブロックに対してキャッシュミスしたときに、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ＿ａｌｗａｙｓ（常時共有読み出し）（ＲＤＳＡ）要求を生成し、そうでないときには、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）要求を生成する。メモリ相互接続が、共有メモリへのアクセスを可能にし、外部タグと複製タグのキャッシュ状態の遷移を制御し、最初の書き込み最適化を選択的に可能にするか不可能にする。
本発明の他の特徴と利点は添付の図面や以下の詳細な説明から明らかになる。
【００１２】
【発明の実施の形態】
図において同様な要素には同一の参照番号を付してあり、図示されているのは例示であり、本発明は図示のものに限定されるものではない。
図１は、一実施形態としてのコンピュータシステム１０を示す。コンピュータ・システム１０は、プロセッサ・サブシステム２０−２２のセットと、一つのメモリ相互接続サブシステム１８を含む。プロセッサ・サブシステム２０−２２の各々は、Ｌ２キャッシュメモリを含む。
【００１３】
メモリ相互接続サブシステム１８は、プロセッサ・サブシステム２０−２２に主メモリ１４への共有アクセスを提供する。プロセッサ・サブシステム２０−２２は、メモリポート１−Ｎのセットを介してメモリ相互接続サブシステム１８と通信する。例えば、プロセッサ・サブシステム２０のためのポート１は、データパス４０とアドレスパス４２と制御パス４４を含み、プロセッサ・サブシステム２２のためのポートＮは、データパス４６とアドレスパス４８と制御パス５０を含む。
【００１４】
メモリ相互接続サブシステム１８は、主メモリ１４へのデータパス・スイッチ１２とシステム・コントローラ１６と複製されたタグ３０−３２のセットを含む。一つの実施形態では、データパス・スイッチ１２は、制御信号５４のセットを介してシステム・コントローラ１６によって制御されるクロスバースイッチである。データパス・スイッチ１２は、データパス４０とデータパス４６を含む各々のポート１−Ｎのデータパスを介して主メモリ１４へのデータパスアクセスを可能にする。
【００１５】
システム・コントローラ１６は、プロセッサ・サブシステム２０−２２から受け取ったアドレスをデコードすることにより、また、メモリ制御バス５６を介して主メモリ１４への、ローアドレス選択（ＲＡＳ）とカラムアドレス選択（ＣＡＳ）信号を含んでいるメモリ制御信号を生成することにより、メモリコントローラとして機能する。
【００１６】
システム・コントローラ１６は、コンピュータ・システム１０に対するキャッシュコヒーレンス機構も実行する。システム・コントローラ１６は、複製タグ３０−３２のセットを維持する。複製タグ３０−３２は、プロセッサ・サブシステム２０−２２の外部キャッシュに対応しているタグを反映する。例えば、複製タグ３０は、プロセッサ・サブシステム２０の中の外部キャッシュメモリのタグに対応し、複製タグ３２は、プロセッサ・サブシステム２２の中の外部キャッシュメモリのタグに格納された情報を反映する。システム・コントローラ１６は、スヌープバス５８を介して、複製タグ３０−３２に対するタグ・ルックアップ動作及びタグ修正動作を実行する。
【００１７】
システム・コントローラ１６は、アドレスパス４２とアドレスパス４８を含んでいる各々のポート１−Ｎのアドレスパスを介してプロセッサ・サブシステム２０−２２からメモリアクセス要求を受け取る。システム・コントローラ１６は、プロセッサ・サブシステム２０−２２からの要求を仲裁して、データパス・スイッチ１２を構成（コンフィグ）し、メモリデータバス５２を介しての主メモリ１４へのアクセス用の、或いは、プロセッサ・サブシステムからプロセッサ・サブシステムへのデータ転送用の必要な接続を提供する。システム・コントローラ１６は、適切な制御パスを介してキャッシュ状態遷移制御メッセージ及び他の情報に応答する。
【００１８】
メモリアクセス要求は、例えば、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）要求と、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ＿ａｌｗａｙｓ（ＲＤＳＡ）要求を含む。ロードが読み出し・書き込みデータを目標としている場合には、対応する外部キャッシュメモリに対するロードミスの後で、プロセッササブシステム２０−２２は、システムコントローラ１６に対してｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）要求を用い、ミスしているキャッシュブロックをリトリーブする。一方、ロードが命令コード或いは書き込まれそうもない他の形式のデータのような読み出し専用データを目標とする場合には、対応する外部キャッシュメモリに対するロードミスの後で、プロセッササブシステム２０−２２は、システムコントローラ１６に対してｒｅａｄ＿ｔｏ＿ｓｈａｒｅ＿ａｌｗａｙｓ（ＲＤＳＡ）要求を使用し、ミスしているキャッシュブロックをリトリーブする。そのような読み出し専用のミスは、メモリ管理機構によって読み出し専用のものとしてマークを付けられた命令キャッシュミス或いはデータキャッシュミスデータに対応させ得る。
【００１９】
システム・コントローラ１６は、スヌープバス５８を介して特定されたデータブロックについてタグ・ルックアップを実行することにより、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）要求又はｒｅａｄ＿ｔｏ＿ｓｈａｒｅ＿ａｌｗａｙｓ（ＲＤＳＡ）要求を行う。システム・コントローラ１６は、スヌープバス５８を介して複製タグ３０−３２を読み出し、特定されたデータブロックのキャッシュ状態を決定する。システム・コントローラ１６は、データパス・スイッチ１２を構成し、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）或いはｒｅａｄ＿ｔｏ＿ｓｈａｒｅ＿ａｌｗａｙｓ（ＲＤＳＡ）トランザクションについて、特定されたデータブロックに関する適当なソースを提供する。適切なソースには、例えば、複製タグ３０−３２の状態に従って、主メモリ１４或いはプロセッサ・サブシステム２０−２２の外部キャッシュの一つを含んでもよい。
【００２０】
システム・コントローラ１６は、ポート１−Ｎの制御パスを介してメッセージを転送し、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）或いはｒｅａｄ＿ｔｏ＿ｓｈａｒｅ＿ａｌｗａｙｓ（ＲＤＳＡ）トランザクションに関与するプロセッササブシステム２０−２２におけるキャッシュ状態遷移を制御する。また、システム・コントローラ１６は、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）或いはｒｅａｄ＿ｔｏ＿ｓｈａｒｅ＿ａｌｗａｙｓ（ＲＤＳＡ）トランザクションに関与する複製タグ３０−３２について、スヌープバス５８を介してキャッシュ状態の更新も行う。
【００２１】
図２は、一つの実施形態としての、複製タグ３０−３２のキャッシュ・コヒーレンス・プロトコルを示す。システム・コントローラ１６は、「無効（ｉｎｖａｌｉｄ）」（Ｉ）状態、「共有一致（ｓｈａｒｅｄ  ｃｌｅａｎ）」（Ｓ）状態、「共有修正（ｓｈａｒｅｄ  ｍｏｄｉｆｉｅｄ）」（Ｏ）状態、「専有・潜在的修正（ｅｘｃｌｕｓｉｖｅ  ａｎｄ  ｐｏｔｅｎｔｉａｌｌｙ  ｍｏｄｉｆｉｅｄ）」（Ｍ）状態を含むＭＯＳＩキャッシュコヒーレンスプロトコルに従って、複製タグ３０−３２を維持する。
【００２２】
図３は、一つの実施形態としての、プロセッサ・サブシステム２０を示す。プロセッサ・サブシステム２０は、プロセッサ７０、外部キャッシュ７４、外部タグ７６の関連したセット、及び、ポート・インタフェース７２を含む。プロセッサ・サブシステム２２のような、コンピュータ・システム１０の中の他のプロセッサ・サブシステムは、プロセッサ・サブシステム２０について示されたものと同様な方法で実施することができる。
【００２３】
プロセッサ７０は、メモリロードとメモリストア動作を外部キャッシュ７４に発行する。外部キャッシュ７４へのキャッシュ「ミス」は、ポート・インタフェース７２に、アドレスパス４２を介して転送されたメッセージパケットを使用してシステム・コントローラに対してキャッシュ要求を発行させる。発行された要求は、例えば、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ＿ａｌｗａｙｓ（ＲＤＳＡ）要求及びｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）要求を含む。アドレスパス４２を介して転送されたメッセージパケットは、要求タイプ（形式）を特定するヘッダと、キャッシュ要求のデータブロックを特定するアドレスを含む。
【００２４】
システム・コントローラ１６が、データパス・スイッチ１２を、複製タグ３０−３２の状態に従って、ミスしているデータブロックについての適切なデータをソースとして選択するように構成した後に、ポート・インタフェース７２は、データパス４０を介してミスしているデータブロックを受け取る。ポート・インタフェース７２は、制御パス４４を介してシステム・コントローラ１６からキャッシュ状態制御メッセージを受け取る。キャッシュ状態制御メッセージは、外部キャッシュ７４の中に格納された新しくフェッチされたミスしているデータブロックについて、キャッシュ状態の遷移を決定する。
【００２５】
図４は、外部タグ７６のキャッシュコヒーレンスプロトコルの一実施態様を示す。外部キャッシュ７４は、「無効」（Ｉ）状態、「共有一致」（Ｓ）状態、「専有一致」（Ｅ）状態、「共有且つ修正」（Ｏ）状態、及び、「専有且つ修正」（Ｍ）状態を含むＭＯＥＳＩキャッシュコヒーレンス・プロトコルに従って外部タグ７６を維持する。
【００２６】
他の実施形態では、システム・コントローラ１６がＭＳＩキャッシュコヒーレンス・プロトコルに従って、複製タグ３０−３２を維持する一方、外部キャッシュ７４は、ＭＥＳＩキャッシュコヒーレンス・プロトコルに従って外部タグ７６を維持する。そのような実施形態は、メモリ相互接続サブシステム１８を、反映メモリとして機能させることができ、反映メモリでは、「修正」データブロックへのロードミス時のコピーバック動作により、データブロックが主メモリ１４にライトバックされ、要求プロセッサが「共有」状態に遷移される。
【００２７】
図５は、システム・コントローラ１６により書き込み最適化されたｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）トランザクションの取り扱いを示す。例示された書き込み最適化は、コンピュータ・システム１０のキャッシュコヒーレンス・プロトコルへの最初の書き込み最適化として参照することができる。
【００２８】
ブロック１００において、システム・コントローラ１６が、以降はメモリポートＡとして参照されるメモリポート１−Ｎの一つに接続されたプロセッサ・サブシステム２０−２２の一つからのｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）トランザクションを受け取る。
【００２９】
ブロック１０２において、システム・コントローラ１６は、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）トランザクションの特定されたデータブロックについてスヌープバス５８を介してメモリポートＡに対応する複製タグを読み取る。決定ブロック１０４において特定されたデータブロックが他のメモリポート１−Ｎによって所有されていない場合には、制御はブロック１０８に進む。
【００３０】
そうでない場合には、制御はブロック１０６に進み、書き込み最適化なしに共有データブロックを処理する。ブロック１０８において、複製タグが「共有一致」（Ｓ）状態を示す場合には、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）のためのデータブロックが、主メモリ１４からポートＡに供給される。複製タグが、修正状態Ｍ或いはＯの一つを示す場合には、システム・コントローラ１６は、適切なポートへコピーバック要求を発行し、要求ポートに対して「共有一致」（Ｓ）状態を示すように複製タグを設定し、また、要求ポートに対する外部タグが「共有一致」（Ｓ）状態を示すようにする。
【００３１】
ブロック１０８において、コントローラ１６は、特定されたデータブロックについての読み出しデータを供給するようにデータパス・スイッチ１２を構成し、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）トランザクションを履行する。特定されたデータブロックについての読み出しデータが、主メモリ１４からポートＡに供給される。
【００３２】
ブロック１１０において、システム・コントローラ１６は、ポートＡ制御パスを介して、特定されたデータブロックについてのポートＡ外部タグを「無効」（Ｉ）状態から「専有一致」（Ｅ）状態に遷移させるメッセージを転送する。
【００３３】
ブロック１１２において、システム・コントローラ１６は、ポートＡについての複製タグを、データブロックについて「無効」（Ｉ）から「専有及び潜在的修正」状態へスヌープバス５８を介して設定する。
【００３４】
ポートＡについての複製タグは、データブロックについて「専有及び潜在的修正」状態を示すので、その後、他のメモリポートから発行され、上記ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）トランザクションと同じデータブロックが目標とされた読み出し処理は、システムコントローラ１６に、コピーバック要求をメモリポートＡに対して発行させる。そのようなコピーバック動作は、ポートＡのプロセッサが、修正されたそのデータブロックを有しているか否かにかかわらず発生する。従って、そのようなコピーバック動作は、コンピュータシステム１０においてデータコヒーレンスを維持するためには不必要かもしれない。
【００３５】
図６は、システム・コントローラ１６によるポートＡからのｒｅａｄ＿ｔｏ＿ｓｈａｒｅ＿ａｌｗａｙｓ（ＲＤＳＡ）トランザクションの取り扱いを示す。ブロック１１８において、システム・コントローラ１６は、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ＿ａｌｗａｙｓ（ＲＤＳＡ）要求をメモリポートＡから受け取る。
【００３６】
ブロック１１９において、システム・コントローラ１６は、スヌープバス５８を介して、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ＿ａｌｗａｙｓ（ＲＤＳＡ）トランザクションの特定されたデータブロックについてのメモリポートＡに対応する複製タグを読み取る。決定ブロック１２０において、特定されたデータブロックが、他のメモリポート１−Ｎによって所有されていない場合には、制御はブロック１２２に進む。そうでない場合には、制御は決定ブロック１２８に進む。
【００３７】
ブロック１２２において、システム・コントローラ１６は、特定されたデータブロックについての読み出しデータが供給されるように、データパス・スイッチ１２を構成し、ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ＿ａｌｗａｙｓ（ＲＤＳＡ）トランザクションを履行する。特定されたデータブロックについての読み出しデータが、主メモリ１４からポートＡに供給される。
ブロック１２４において、システム・コントローラ１６は、特定されたデータブロックについての外部タグを「無効」（Ｉ）状態から「共有一致」（Ｓ）状態に遷移させるメッセージを、ポートＡ制御パスを介してメモリポートＡに転送する。
【００３８】
ブロック１２６において、システム・コントローラ１６は、スヌープバス５８を介して特定されたデータブロックについて、ポートＡ複製タグを「共有一致」（Ｓ）状態に設定する。
【００３９】
決定ブロック１２８において、特定されたデータブロックが「共有一致」（Ｓ）で他のポートにより保持されている場合には、制御はブロック１２２に進む。特定されたデータブロックが、修正された状態Ｍ或いはＯの一つで他のポートにより保持されている場合には、システム・コントローラは、ブロック１３０において適切なポートへコピーバック要求を発行し、データブロックをポートＡに供給し、次いで、制御はブロック１２４に進んで、上述したように、外部及び複製タグを更新する。
【００４０】
ポートＡについての複製タグは、そのデータブロックについて「共有一致」（Ｓ）状態を示すので、それ以降は、他のメモリポートから発行され上記ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ＿ａｌｗａｙｓ（ＲＤＳＡ）トランザクションと同じデータブロックが目標とされた読み出し処理が、システム・コントローラ１６に、コピーバック要求をメモリポートＡに対して発行させることはない。ｒｅａｄ＿ｔｏ＿ｓｈａｒｅ＿ａｌｗａｙｓ（ＲＤＳＡ）トランザクションは、読み出し専用データについてのみ発行されるので、ポートＡ外部キャッシュの中の対応しているデータブロックは、「共有一致」（Ｓ）状態に維持されることになる。従って、コンピュータシステム１０におけるデータコヒーレンスが維持される一方、不必要なコピーバック動作が避けられる。
【００４１】
明細書において、本発明は特定の例示された実施形態を参照して説明された。しかしながら、特許請求の範囲に述べられた本発明の広範な精神及び範囲から逸脱することなく、各種の修正や変更を加えることができることは明らかである。従って、明細書及び図面は、制限的な意味を持つものではなく、例示として見做されるべきである。
【図面の簡単な説明】
【図１】  プロセッサ・サブシステムの各々がキャッシュメモリを含む、プロセッサ・サブシステムのセットとメモリ相互接続サブシステムを含むコンピュータ・システムと示す。
【図２】  メモリ相互接続サブシステムにおける、複製タグのキャッシュコヒーレンス・プロトコルの一実施形態を示す。
【図３】  一つのプロセッサと、一つの外部キャッシュと外部タグの関連したセットと、メモリ相互接続ポート・インタフェースとを含むプロセッサ・サブシステムを示す。
【図４】  プロセッサ・サブシステムの外部タグのキャッシュコヒーレンス・プロトコルの一実施態様を示す。
【図５】  システム・コントローラによる書き込み最適化を行ったｒｅａｄ＿ｔｏ＿ｓｈａｒｅ（ＲＤＳ）トランザクションの取り扱いを示す。
【図６】  システム・コントローラによるｒｅａｄ＿ｔｏ＿ｓｈａｒｅ＿ａｌｗａｙｓ（ＲＤＳＡ）トランザクションの取り扱いを示す。
【符号の説明】
１０  コンピュータ・システム、    １２  データパス・スイッチ、
１４  主メモリ、                  １６  システム・コントローラ、
１８  メモリ相互接続サブシステム、
２０−２２  プロセッサ・サブシステム、
３０−３２  複製タグ、            ４０  データパス、
４２  アドレスパス、              ４４  制御パス、
４６  データパス、                ４８  アドレスパス、
５０  制御パス、                  ５４  制御信号、
５６  メモリ制御バス、            ５８  スヌープバス、
７０  プロセッサ、                ７２  ポート・インタフェース、
７４  外部キャッシュ、            ７６  外部タグ。
【図１】
0003784101.tif 000002
【図２】
0003784101.tif 000003
【図３】
0003784101.tif 000004
【図４】
0003784101.tif 000005
【図５】
0003784101.tif 000006
【図６】
0003784101.tif 000007