(57)【要約】【課題】  システム全体のコヒーレンス応答の早期表示に基づいて、マルチプロセッサ・データ処理システムにおけるデータ・ハンドオフ間隔を低減させることにより、データ処理システム性能を改善させること。【解決手段】  マルチプロセッサ・データ処理システムが、複数のプロセッサ・コアをサポートする複数の垂直方向キャッシュ階層と、システム・メモリと、システム相互接続とを含む。第１のプロセッサ・コアからのｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求に応答して、第１のプロセッサ・コアをサポートする第１のキャッシュ・メモリは、システム相互接続上で、ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求のターゲット・キャッシュ・ラインについてのメモリ・アクセス要求を発行する。メモリ・アクセス要求に応答して、メモリ・アクセス要求に対するシステム全体のコヒーレンス応答を受信する前に、第１のキャッシュ・メモリが、キャッシュ間介入により、第２の垂直方向キャッシュ階層内の第２のキャッシュ・メモリから、ターゲット・キャッシュ・ライン及びメモリ・アクセス要求に対するシステム全体のコヒーレンス応答の早期表示を受信する。システム全体のコヒーレンス応答の早期表示に応答して、システム全体のコヒーレンス応答を受信する前に、第１のキャッシュ・メモリは、第１のキャッシュ・メモリ内のターゲット・キャッシュ・ラインを更新するための処理を開始する。【選択図】      図９
2019514106.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサ・コアをサポートする複数の垂直方向キャッシュ階層、システム・メモリ、及び前記システム・メモリ及び前記複数の垂直方向キャッシュ階層に結合されたシステム相互接続を含むマルチプロセッサ・データ処理システムにおけるデータ処理の方法であって、
第１のプロセッサ・コアからのｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ（ロード及び予約）要求の受信に応答して、前記第１のプロセッサ・コアをサポートする第１の垂直方向キャッシュ階層内の第１のキャッシュ・メモリが、前記システム相互接続上で、前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求のターゲット・キャッシュ・ラインについてのメモリ・アクセス要求を発行することと、
前記メモリ・アクセス要求に応答して、前記メモリ・アクセス要求に対するシステム全体のコヒーレンス応答を受信する前に、前記第１のキャッシュ・メモリが、キャッシュ間介入により、第２の垂直方向キャッシュ階層内の第２のキャッシュ・メモリから、前記ターゲット・キャッシュ・ライン及び前記メモリ・アクセス要求に対する前記システム全体のコヒーレンス応答の早期表示を受信することと、
前記システム全体のコヒーレンス応答の前記早期表示に応答して、前記システム全体のコヒーレンス応答を受信する前に、前記第１のキャッシュ・メモリが、前記第１のキャッシュ・メモリ内の前記ターゲット・キャッシュ・ラインを更新するための処理を開始することと、
を含む、方法。
【請求項２】
前記システム全体の結合応答を受信する前に、前記第１のキャッシュ・メモリが、前記ターゲット・キャッシュ・ラインを第３の垂直方向キャッシュ階層内の第３のキャッシュに供給することをさらに含む、請求項１に記載の方法。
【請求項３】
前記システム全体のコヒーレンス応答の前記早期表示の受信に応答して、前記第１のキャッシュ・メモリが、前記第１のキャッシュ・メモリが前記ターゲット・キャッシュ・ラインのコヒーレンス所有権の取得を保護する保護ウィンドウを開始することと、
前記第１のキャッシュ・メモリが前記第１のプロセッサ・コアからのｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ（条件付きストア）要求の受信を待つ、前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求の処理後の少なくとも待機間隔の間、前記保護ウィンドウを継続することと、
をさらに含む、請求項１に記載の方法。
【請求項４】
前記ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の処理の完了に応答して、前記システム全体のコヒーレンス応答の前記第１のキャッシュ・メモリによる受信とは非同期的に前記保護ウィンドウを終了することをさらに含む、請求項３に記載の方法。
【請求項５】
前記保護ウィンドウは、第１の保護ウィンドウであり、
前記方法は、前記ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の受信に応じた前記第１のキャッシュ・メモリによる第２の保護ウィンドウの開始に応答して、前記システム全体のコヒーレンス応答の前記第１のキャッシュ・メモリによる受信とは非同期的に前記第１の保護ウィンドウを終了することをさらに含む、請求項３に記載の方法。
【請求項６】
前記第１のキャッシュ・メモリが、前記第１のプロセッサ・コアからの前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求の受信に応答して前記要求を管理するように、読み取り・クレーム状態マシンを割り当てることと、
前記第１のキャッシュ・メモリが、前記システム全体のコヒーレンス応答の受信及び前記保護ウィンドウの終了の後の発生に応答して、前記読み取り・クレーム状態マシンを割り当て解除することと、
をさらに含む、請求項３に記載の方法。
【請求項７】
前記第１のキャッシュ・メモリが前記第１のキャッシュ・メモリ内の前記ターゲット・キャッシュ・ラインを更新するための処理を開始することは、前記第１のキャッシュ・メモリが、前記第１のプロセッサ・コアのｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の受信に応答して前記第１のキャッシュ・メモリ内の前記ターゲット・キャッシュ・ラインを更新するための処理を開始することを含む、請求項１に記載の方法。
【請求項８】
マルチプロセッサ・データ処理システムのための処理ユニットであって、
プロセッサ・コアと、
前記処理ユニットを前記マルチプロセッサ・データ処理システムのシステム相互接続に結合するように構成された相互接続論理と、
前記プロセッサ・コアをサポートする第１の垂直方向キャッシュ階層であって、
前記プロセッサ・コアからのｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求の受信に応答して、前記システム相互接続上で、前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求のターゲット・キャッシュ・ラインについてのメモリ・アクセス要求を発行し、
前記メモリ・アクセス要求に応答して、前記メモリ・アクセス要求に対するシステム全体のコヒーレンス応答を受信する前に、キャッシュ間介入により、第２の垂直方向キャッシュ階層内の第２のキャッシュ・メモリから、前記ターゲット・キャッシュ・ライン及び前記メモリ・アクセス要求に対する前記システム全体のコヒーレンス応答の早期表示を受信し、
前記システム全体のコヒーレンス応答の前記早期表示に応答して、前記システム全体のコヒーレンス応答の受信の前に、第１のキャッシュ・メモリ内の前記ターゲット・キャッシュ・ラインを更新するための処理を開始するように構成された第１のキャッシュ・メモリを含む、第１の垂直方向キャッシュ階層と、
を含む、処理ユニット。
【請求項９】
前記第１のキャッシュ・メモリは、前記システム全体のコヒーレンス応答を受信する前に、前記ターゲット・キャッシュ・ラインを第３の垂直方向キャッシュ階層内の第３のキャッシュに供給するようにさらに構成される、請求項８に記載の処理ユニット。
【請求項１０】
前記第１のキャッシュ・メモリは、
前記システム全体のコヒーレンス応答の前記早期表示の受信に応答して、前記第１のキャッシュ・メモリが前記ターゲット・キャッシュ・ラインのコヒーレンス所有権の取得を保護する保護ウィンドウを開始し、
前記第１のキャッシュ・メモリが前記第１のプロセッサ・コアからのｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の受信を待つ前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求の処理後の少なくとも待機間隔の間、前記保護ウィンドウを継続する
ようにさらに構成される、請求項８に記載の処理ユニット。
【請求項１１】
前記第１のキャッシュ・メモリは、前記ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の処理の完了に応答して、前記システム全体のコヒーレンス応答の前記第１のキャッシュ・メモリによる受信とは非同期的に前記保護ウィンドウを終了するようにさらに構成される、請求項１０に記載の処理ユニット。
【請求項１２】
前記保護ウィンドウは、第１の保護ウィンドウであり、
前記第１のキャッシュ・メモリは、前記ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の受信に応じた前記第１のキャッシュ・メモリによる第２の保護ウィンドウの開始に応答して、前記システム全体のコヒーレンス応答の前記第１のキャッシュ・メモリによる受信とは非同期的に前記第１の保護ウィンドウを終了するようにさらに構成される、請求項１０に記載の処理ユニット。
【請求項１３】
前記第１のキャッシュ・メモリは、
前記第１のプロセッサ・コアからの前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求の受信に応答して前記要求を管理するように、読み取り・クレーム状態マシンを割り当て、
前記システム全体のコヒーレンス応答の受信及び前記保護ウィンドウの終了の後の発生に応答して、前記読み取り・クレーム状態マシンを割り当て解除するようにさらに構成される、請求項１０に記載の処理ユニット。
【請求項１４】
前記第１のキャッシュ・メモリは、前記第１のプロセッサ・コアのｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の受信に応答して前記第１のキャッシュ・メモリ内の前記ターゲット・キャッシュ・ラインを更新するための処理を開始するようにさらに構成される、請求項８に記載の処理ユニット。
【請求項１５】
マルチプロセッサ・データ処理システムであって、
請求項８から請求項１４までのいずれかに記載の第１、第２及び第３の処理ユニットと、
前記第１、第２及び第３の処理ユニットに結合する前記システム相互接続と、
を含むシステム。
【請求項１６】
集積回路を設計、製造、又は試験するための、機械可読ストレージ・デバイス内に有形に具体化された設計構造体であって、
マルチプロセッサ・データ処理システムのための処理ユニットを含み、前記処理ユニットは、
プロセッサ・コアと、
前記処理ユニットを前記マルチプロセッサ・データ処理システムのシステム相互接続に結合するように構成された相互接続論理と、
前記プロセッサ・コアをサポートする第１の垂直方向キャッシュ階層であって、
前記プロセッサ・コアからのｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求の受信に応答して、前記システム相互接続上で、前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求のターゲット・キャッシュ・ラインについてのメモリ・アクセス要求を発行し、
前記メモリ・アクセス要求に応答して、前記メモリ・アクセス要求に対するシステム全体のコヒーレンス応答を受信する前に、キャッシュ間介入により、第２の垂直方向キャッシュ階層内の第２のキャッシュ・メモリから、前記ターゲット・キャッシュ・ライン及び前記メモリ・アクセス要求に対する前記システム全体のコヒーレンス応答の早期表示を受信し、
前記システム全体のコヒーレンス応答の前記早期表示に応答し、前記システム全体のコヒーレンス応答の受信の前に、第１のキャッシュ・メモリ内の前記ターゲット・キャッシュ・ラインを更新するための処理を開始するように構成された第１のキャッシュ・メモリを含む、第１の垂直方向キャッシュ階層と、
を含む、設計構造体。
【請求項１７】
前記第１のキャッシュ・メモリは、前記システム全体の結合応答を受信する前に、前記ターゲット・キャッシュ・ラインを第３の垂直方向キャッシュ階層内の第３のキャッシュに供給するようにさらに構成される、請求項１６に記載の設計構造体。
【請求項１８】
前記第１のキャッシュ・メモリは、
前記システム全体のコヒーレンス応答の前記早期表示の受信に応答して、前記第１のキャッシュ・メモリが前記ターゲット・キャッシュ・ラインのコヒーレンス所有権の取得を保護する保護ウィンドウを開始し、
前記第１のキャッシュ・メモリが前記第１のプロセッサ・コアからのｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の受信を待つ前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求の処理後の少なくとも待機間隔の間、前記保護ウィンドウを継続する
ようにさらに構成される、請求項１６に記載の設計構造体。
【請求項１９】
前記第１のキャッシュ・メモリは、前記ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の処理の完了に応答して、前記システム全体のコヒーレンス応答の前記第１のキャッシュ・メモリによる受信とは非同期的に前記保護ウィンドウを終了するようにさらに構成される、請求項１８に記載の設計構造体。
【請求項２０】
前記保護ウィンドウは、第１の保護ウィンドウであり、
前記第１のキャッシュ・メモリは、前記ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の受信に応じた前記第１のキャッシュ・メモリによる第２の保護ウィンドウの開始に応答して、前記システム全体のコヒーレンス応答の前記第１のキャッシュ・メモリによる受信とは非同期的に前記第１の保護ウィンドウを終了する
ようにさらに構成される、請求項１８に記載の設計構造体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理に関し、より具体的には、システム全体の（systemwide）コヒーレンス応答の早期表示（early indication）に基づいてマルチプロセッサ・データ処理システムにおけるデータ・ハンドオフ間隔を低減させることにより、データ処理システム性能を改善させることに関する。
【背景技術】
【０００２】
サーバ・コンピュータ・システムのような従来の対称型マルチプロセッサ（ＳＭＰ）コンピュータ・システムは、典型的には１つ又は複数のアドレス、データ、及び制御バスを含むシステム相互接続に全て結合された複数の処理ユニットを含む。システム相互接続には、システム・メモリが結合され、システム・メモリは、マルチプロセッサ・コンピュータ・システムにおける最下位レベルの共有メモリを表し、一般に、読み取り及び書き込みアクセスのために全ての処理ユニットによりアクセス可能である。システム・メモリにある命令及びデータに対するアクセス待ち時間を減らすために、通常、各処理ユニットは、一般に、それぞれのマルチレベル垂直方向キャッシュ階層によってさらにサポートされ、下位レベルのマルチレベル垂直方向キャッシュ階層は、１つ又は複数のプロセッサ・コアによって共有されることもある。
【０００３】
複数のプロセッサ・コアが同じメモリ・ブロック（例えば、キャッシュ・ライン又はセクタ）への書き込みアクセスを要求することがあり、修正済みのキャッシュされたメモリ・ブロックが、直ちに、システム・メモリと同期しないので、マルチプロセッサ・コンピュータ・システムのキャッシュ階層は、一般に、システム・メモリのコンテンツの種々のプロセッサ・コアの「ビュー（view）」間での最低限必要なレベルのコヒーレンスを保証するように、キャッシュ・コヒーレンシ・プロトコルを実装する。最低限必要なレベルのコヒーレンスは、分散型共有メモリへの更新の明らかな順序及び可視性についての規則を定める選択されたメモリ一貫性モデルによって判断される。弱い一貫性モデルと強い一貫性モデルとの間の連続体における全てのメモリ一貫性モデルにおいて、キャッシュ・コヒーレンシは、最低でも、処理ユニットがメモリ・ブロックのコピーにアクセスし、その後、メモリ・ブロックの更新されたコピーにアクセスした後、処理ユニットがそのメモリ・ブロックの旧（「古い（stale）」）コピーに再びアクセスすることができないことを必要とする。
【０００４】
キャッシュ・コヒーレンス・プロトコルは、一般に、キャッシュされたメモリ・ブロックのコピーと関連して格納された１組のコヒーレンス状態、並びに、遷移を行うコヒーレンス状態とコヒーレンス状態との間の遷移トリガ・イベントを定義する。コヒーレンス・プロトコルは、一般に、ディレクトリ・ベース又はスヌープ（snoop）ベースのプロトコルとして分類することができる。ディレクトリ・ベースのコヒーレンス・プロトコルにおいては、共通の中央ディレクトリは、キャッシュによるメモリ・ブロックへのアクセスを制御することによって、及び、種々のキャッシュ内に保持されるメモリ・ブロックのコピーを更新又は無効化することによって、コヒーレンスを維持する。他方、スヌープ・ベースのコヒーレンス・プロトコルは、分散型設計パラダイムを実装し、そこで、各キャッシュは、そのコンテンツのプライベート・ディレクトリを維持し、キャッシュ内に保持されるメモリ・ブロックをターゲットとするメモリ・アクセス要求のためのシステム相互接続を監視（「スヌープ」）し、そのプライベート・ディレクトリを更新することによって、及び、必要に応じて、メモリ・ブロックのコヒーレンス・メッセージ及び／又はそのコピーを送信することによって、メモリ・アクセス要求に応答する。
【０００５】
コヒーレンス・プロトコルのキャッシュ状態は、例えば、周知のＭＥＳＩ（Ｍｏｄｉｆｉｅｄ（修正）、Ｅｘｃｌｕｓｉｖｅ（排他）、Ｓｈａｒｅｄ（共有）、及びＩｎｖａｌｉｄ（無効））プロトコル、又はその変形を含むことができる。ＭＥＳＩプロトコルは、データのキャッシュ・ラインを４つの状態：すなわち、「Ｍ」（Ｍｏｄｉｆｉｅｄ）、「Ｅ」（Ｅｘｃｌｕｓｉｖｅ）、「Ｓ」（Ｓｈａｒｅｄ）、又は「Ｉ」（Ｉｎｖａｌｉｄ）の１つと関連付けることを可能にする。Ｍｏｄｉｆｉｅｄ（修正）状態は、メモリ・ブロックが、Ｍｏｄｉｆｉｅｄ（修正済み）メモリ・ブロックを保持するキャッシュにおいてのみ有効であり、メモリ・ブロックは、システム・メモリと一貫していないことを示す。Ｅｘｃｌｕｓｉｖｅ（排他）状態は、関連したメモリ・ブロックはシステム・メモリと一貫しており、関連したキャッシュは、関連したメモリ・ブロックを保持するデータ処理システムにおける唯一のキャッシュであることを示す。Ｓｈａｒｅｄ（共有）状態は、関連したメモリ・ブロックが関連したキャッシュ及び潜在的に１つ又は複数のキャッシュ内にあり、メモリ・ブロックのコピーの全てがシステム・メモリと一貫していることを示す。最後に、Ｉｎｖａｌｉｄ（無効）状態は、データ及びコヒーレンシ・グラニュール（coherency granule）と関連したアドレス・タグがどちらも無効であることを示す。
【０００６】
スヌープ・ベースのコヒーレンス・プロトコルでは、個々のコヒーレンス応答を提供することによって、キャッシュが相互接続上でスヌープされる要求に応答することが一般的である。次に、これらの個々のコヒーレンス応答を結合して又は他の方法で処理して、要求に対する最終的なシステム全体のコヒーレンス応答を決定し、最終的なシステム全体のコヒーレンス応答は、例えば、要求が成功することが可能か又は要求を再試行しなければならないか、要求において識別されるデータのターゲット・キャッシュ・ラインを要求中のキャッシュに供給することを担当するデータ・ソース、要求の後の１又は複数のキャッシュにおけるターゲット・キャッシュ・ラインのコヒーレンス状態などを示すことができる。スヌープ・ベースのコヒーレンス・プロトコルを用いる従来のデータ処理システムにおいて、データのキャッシュ・ラインを、システム相互接続を介して、１つのプロセッサ・コアをサポートする垂直方向キャッシュ階層内のキャッシュから別のプロセッサ・コアをサポートする異なる垂直方向キャッシュ階層内の別のキャッシュに供給する（介入する）ことができる最小ハンドオフ間隔は、キャッシュが要求を発行した時間とそのキャッシュがシステム全体のコヒーレンス応答を受信した時間との間の時間である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第７，７７４，５５５号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００８】
システム全体のコヒーレンス応答の早期表示に基づいて、マルチプロセッサ・データ処理システムにおけるデータ・ハンドオフ間隔を低減させることにより、データ処理システム性能を改善させること。
【課題を解決するための手段】
【０００９】
１つの実施形態によると、システム相互接続を介して、データのキャッシュ・ラインを垂直方向キャッシュ階層内のキャッシュから別の垂直方向キャッシュ階層内のキャッシュに供給することができる最小ハンドオフ間隔が低減される。
【００１０】
少なくとも１つの実施形態において、マルチプロセッサ・データ処理システムは、複数のプロセッサ・コアをサポートする複数の垂直方向キャッシュ階層、システム・メモリ、及びシステム相互接続を含む。第１のプロセッサ・コアからのｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ（ロード及び予約）要求に応答して、第１のプロセッサ・コアをサポートする第１のキャッシュ・メモリは、システム相互接続上で、ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求のターゲット・キャッシュ・ラインについてのメモリ・アクセス要求を発行する。メモリ・アクセス要求に応答して、メモリ・アクセス要求に対するシステム全体のコヒーレンス応答を受信する前に、第１のキャッシュ・メモリは、キャッシュ間介入（cache-to-cache intervention）により、第２の垂直方向キャッシュ階層内の第２のキャッシュ・メモリから、ターゲット・キャッシュ・ライン及びメモリ・アクセス要求に対するシステム全体のコヒーレンス応答の早期表示を受信する。早期表示に応答して、システム全体のコヒーレンス応答を受信する前に、第１のキャッシュ・メモリは、第１のキャッシュ・メモリ内のターゲット・キャッシュ・ラインを更新するための処理を開始する。
【００１１】
ここで本発明の実施形態を、添付図面を参照して単なる例として説明する。
【図面の簡単な説明】
【００１２】
【図１】１つの実施形態による、処理ユニットの関連部分の図である。
【図２】１つの実施形態による、例示的なデータ処理システムの関連部分の図である。
【図３】図２のデータ処理システム内で実施される、要求段階（request phase）、部分応答（partial response、Ｐｒｅｓｐ）段階、及び結合応答（combined response、Ｃｒｅｓｐ）段階を含む例示的な動作の時間空間図である。
【図４】図２のデータ処理システム内の例示的な動作の時間空間図である。
【図５】１つの実施形態による、図１のＬ２キャッシュのより詳細なブロック図である。
【図６】下位レベルのキャッシュの読み取り・クレーム（read-claim、ＲＣ）マシンが、相互接続動作を介して関連のある（affiliated）プロセッサのメモリ・アクセス要求にサービスする、従来のプロセスのフローチャートである。
【図７】相互接続動作の要求に対する結合応答を受信する前に、下位レベルのキャッシュが、キャッシュ間介入により、要求が指定するターゲット・キャッシュ・ラインを受信する、従来の相互接続動作のタイミング図である。
【図８】１つの実施形態に従った、相互接続動作の結合応答の早期表示を含む、図２のデータ処理システムの相互接続ファブリック上の例示的なデータ保有期間（tenure）を示す。
【図９】下位レベル・キャッシュの読み取り・クレーム（ＲＣ）マシンが、相互接続動作を介して関連のあるプロセッサ・コアのメモリ・アクセス要求にサービスする、例示的なプロセスの高レベル論理フローチャートである。
【図１０】相互接続動作の要求に対する結合応答を受信する前に、下位レベル・キャッシュが、キャッシュ間介入により、要求が指定するターゲット・キャッシュ・ラインを受信する、例示的な相互接続動作のタイミング図である。
【図１１】マルチスレッド・データ処理システムにおけるキャッシュ・ラインへの更新を同期するための、ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ及びｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ（条件付きストア）命令の使用の例を示す。
【図１２】１つの実施形態による、下位レベル・キャッシュの読み取り・クレーム（ＲＣ）マシンが関連のあるプロセッサ・コアのｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ及びｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求にサービスする、例示的なプロセスの高レベル論理フローチャートである。
【図１３】１つの実施形態による、下位レベル・キャッシュの読み取り・クレーム（ＲＣ）マシンが関連のあるプロセッサ・コアのｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ及びｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求にサービスする、例示的なプロセスの高レベル論理フローチャートである。
【図１４】ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求のターゲット・キャッシュ・ラインが、関連した結合応答の前に受信され、次に、関連した結合応答が、ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の処理が完了する前に受信される、図１２〜図１３のプロセスの下の動作シナリオのタイミング図である。
【図１５】ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求のターゲット・キャッシュ・ラインが、関連した結合応答の前に受信され、次に、関連した結合応答が、ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の処理が完了した後に受信される、図１２〜図１３のプロセスの下の動作シナリオのタイミング図である。
【図１６】下位レベル・キャッシュが、前のｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求にサービスした同じＲＣマシンを用いるのではなく、関連のあるプロセッサ・コアのｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求にサービスするために、別のＲＣマシンを割り当てる、図１３のプロセスの代替的な実施形態を示す。
【図１７】図１６の実施形態において、下位レベル・キャッシュのＲＣマシンが関連のあるプロセッサ・コアのｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求にサービスするプロセスの高レベル論理フローチャートである。
【図１８】関連した結合応答の前にｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求のターゲット・キャッシュ・ラインが受信される、図１２及び図１６のプロセスの下の動作シナリオのタイミング図である。
【図１９】１つの実施形態による、例示的な設計プロセスを示す。
【発明を実施するための形態】
【００１３】
ここで図面を、特に図１を参照すると、１つの実施形態による、マルチプロセッサ・データ処理システムの処理ユニット１００の例示的な実施形態の高レベル・ブロック図が示される。示される実施形態において、処理システム１００は、命令及びデータを独立して処理するための２つのプロセッサ・コア１０２ａ、１０２ｂを含む単一の集積回路である。（もちろん、他の実施形態において、プロセッサ・コア１０２の数は変化し得る。）各プロセッサ・コア１０２は、実行する命令をフェッチし順序付けるための命令順序付けユニット（instruction sequencing unit、ＩＳＵ）と、命令を実行するための１つ又は複数の実行ユニット１０６とを含む。例えば、実行ユニット１０６は、１つ又は複数の浮動小数点ユニット（ＦＰＵ）、１つ又は複数のロード・ストア・ユニット（ＬＳＵ）、及び１つ又は複数の整数ユニット（ＩＵ）を含むことができる。実行ユニット１０６により実行される命令は、例えば、固定及び浮動小数点算術演算、論理命令、及びメモリ・ブロックへの読み取り及び／又は書き込みアクセスを要求する命令を含むことができる。
【００１４】
各プロセッサ・コア１０２ａ、１０２ｂの動作は、マルチレベル・メモリ階層によりサポートされており、このメモリ階層は、その最下位レベルに１つ又は複数の共有システム・メモリ１３２（その１つだけが図１に示される）、及び、その上位レベルに１つ又は複数のレベルのキャッシュ・メモリを含む垂直方向キャッシュ・メモリ階層を有する。示されるように、処理ユニット１００は、スヌーパ（snooper）１２６により（以下に説明される）相互接続ファブリック上のスヌープされる動作に応答して、システム・メモリ１３２への読み取り及び書き込みアクセスを制御する統合されたメモリ・コントローラ（ＩＭＣ）１２４を含む。
【００１５】
例示的な実施形態において、処理ユニット１００の垂直方向キャッシュ・メモリ階層は、各プロセッサ・コア１０２ａ、１０２ｂ内のストア・スルー（store-through）レベル１（Ｌ１）キャッシュ１０８と、処理ユニット１００の全てのプロセッサ・コア１０２ａ、１０２ｂにより共有されるレベル２（Ｌ２）キャッシュ１１０とを含む。（他の実施形態においては、各プロセッサ・コア１０２は、それぞれのプライベートＬ２キャッシュ１１０を有し得る。）示されるキャッシュ階層は、２つのレベルのキャッシュ・メモリだけを含むが、当業者であれば、代替的な実施形態では、上位レベルのキャッシュのコンテンツを完全に含む、部分的に含む、又は全く含まない、オンチップ若しくはオフチップのインライン、又はルックアサイド・キャッシュの付加的なレベル（レベル３（Ｌ３）、レベル４（Ｌ４）等）を含み得ることを理解するであろう。
【００１６】
図１にさらに示されるように、処理ユニット１００は、処理ユニット１００をより大きなマルチプロセッサ・データ処理システムの相互接続ファブリックに結合することができる統合された相互接続論理１２０を含む。示される実施形態では、相互接続論理１２０は、この場合にはインバウンド及びアウトバウンド「Ｘ」、「Ｙ」及び「Ｚ」リンクを含む、「第１の層（tier）」の相互接続リンクの任意の番号ｔ１をサポートする。相互接続論理１２０は、インバウンド及びアウトバウント「Ａ」及び「Ｂ」リンクとして、図１に示される第２の層リンクの任意の数ｔ２をさらにサポートする。これらの第１及び第２の層のリンクにより、ｔ１／２＋ｔ２／２（この場合は５）までの他の処理ユニット１００への双方向通信のために、各処理ユニット１００を結合することができる。相互接続論理１２０は、相互接続上での動作の異なる段階中の情報を処理し転送するために、要求論理（「Ｒ」と表記される）１２１ａ、部分応答論理（「Ｐ」と表記される）１２１ｂ、結合応答論理（「Ｃ」と表記される）１２１ｃ、及びデータ論理（「Ｄ」と表記される）１２１ｄを含む。さらに、相互接続論理１２０は、処理ユニット１００を構成するために用いられる複数のモード・ビットを含む構成レジスタ（「ＣＲ」と表記される）１２３を含む。これらのモード・ビットは、好ましくは、（１）第１及び第２の層のリンクのための所望のリンク情報割り当てを選択する１つ又は複数のモード・ビットの第１の組と、（２）処理ユニット１００の第１及び第２の層リンクのうちのどちらを他の処理ユニット１００に接続するのかを指定するモード・ビットの第２の組と、（３）保護ウィンドウ拡張のプログラム可能な期間を決定するモード・ビットの第３の組とを含む。
【００１７】
各処理ユニット１００は、さらに、処理ユニット１００のキャッシュ階層と他の処理ユニット１００のキャッシュ階層との間のキャッシュ・コヒーレンシを維持するスヌープ・ベースの分散型コヒーレンシ信号機構の一部を実施する応答論理１２２のインスタンスを含む。最後に、各処理ユニット１００は、Ｉ／Ｏデバイス１３０のような１つ又は複数のＩ／Ｏデバイスの取り付けをサポートする統合されたＩ／Ｏ（入力／出力）コントローラ１２８を含むことができる。Ｉ／Ｏコントローラ１２８は、Ｉ／Ｏデバイス１３０による要求に応じて「Ｘ」、「Ｙ」、「Ｚ」、「Ａ」及び「Ｂ」リンク上で動作を発行し、データを受信することができる。
【００１８】
ここで図２を参照すると、本発明による、複数の処理ユニット１００を含むデータ処理システム２００の例示的な実施形態のブロック図が示される。示されるように、データ処理煤２００は、それぞれ４つの処理ユニット１００を含むパッケージを備えるマルチチップ・モジュール（ＭＣＭ）として実現することができる、８つの処理ノード２０２ａ０〜２０２ｄ０及び２０２ａ１〜２０２ｄ１を含む。各処理ノード２０２内の処理ユニット１００は、示されるように、処理ユニット「Ｘ」、「Ｙ」及び「Ｚ」リンクによりポイント・ツー・ポイント通信のために結合している。各処理ユニット１００は、さらに、処理ユニット「Ａ」及び「Ｂ」リンクによるポイント・ツー・ポイント通信のために、２つの異なる処理ノード２０２内で処理ユニット１００に結合することができる。図２においては両方に矢先のある矢印で示されるが、「Ｘ」、「Ｙ」、「Ｚ」、「Ａ」及び「Ｂ」の各対は、好ましくは（しかし、必ずしもそうである必要はないが）、双方向リンクとしてではなく、２つの単方向リンクとして実施することを理解されたい。
【００１９】
図２に示されるトポロジを形成するための一般的な表現は、下記のように与えることができる。：
Ｎｏｄｅ［Ｉ］［Ｋ］．ｃｈｉｐ［Ｊ］．ｌｉｎｋ［Ｋ］は、Ｎｏｄｅ［Ｊ］［Ｋ］．ｃｈｉｐ［Ｉ］．ｌｉｎｋ［Ｋ］に接続し（全てのＩ≠Ｊに対して）；及び
Ｎｏｄｅ［Ｉ］［Ｋ］．ｃｈｉｐ［Ｉ］．ｌｉｎｋ［Ｋ］は、Ｎｏｄｅ［Ｉ］［ｎｏｔＫ］．ｃｈｉｐ［Ｉ］．ｌｉｎｋ［ｎｏｔ  Ｋ］に接続し；及び
Ｎｏｄｅ［Ｉ］［Ｋ］．ｃｈｉｐ［Ｉ］．ｌｉｎｋ［ｎｏｔ  Ｋ］は、
（１）何にも接続されない（将来の拡張のために予約される）；又は
（２）全てのリンクが完全に使用される（すなわち、７２方向のシステムを形成する９つの８方向ノード）場合、Ｎｏｄｅ［ｅｘｔｒａ］［ｎｏｔ  Ｋ］．ｃｈｉｐ［Ｉ］．ｌｉｎｋ［Ｋ］に接続される；
ここで、Ｉ及びＪは、セット｛ａ，ｂ，ｃ，ｄ｝に属し、Ｋは、セット｛０，１｝に属する。
【００２０】
もちろん、他の機能的に等価のトポロジを形成するために代替的な表現も定めることができる。さらに、図示のトポロジは代表的なものであるが、本発明を実施するデータ処理システム・トポロジを網羅しているものではないこと、及び他のトポロジも可能であることを理解されたい。こうした代替的なトポロジでは、例えば、各処理ユニット１００と結合する第１の層のリンク及び第２の層のリンクの数は、任意の数とすることができ、各層（すなわち、Ｉ）内の処理ノード２０２の数は、処理ノード１００（すなわち、Ｊ）ごとの処理ユニット１００の数と等しくなくてもよい。
【００２１】
当業者であれば、ＳＭＰデータ処理システム１００は、相互接続ブリッジ、不揮発性ストレージ、ネットワークへの接続のためのポート、又は接続されたデバイス等のような、多くの図示していない付加的なコンポーネントを含むことができることを理解するであろう。こうした付加的なコンポーネントは、本発明を理解するのに必要ではないので、図２には示しておらず、又は本明細書でこれ以上説明しない。
【００２２】
ここで図３を参照すると、図２のデータ処理システム２００の相互接続ファブリック上の例示的な相互接続動作の時間空間図が示される。相互接続動作は、マスタ３００（例えば、Ｌ２キャッシュ１１０の読み取り・クレーム（ＲＣ）マシン５１２（例えば、図５を参照されたい）又はＩ／Ｏコントローラ１２８内のマスタ）が、相互接続ファブリック上で要求３０２を発行した場合に開始する。好ましくは、要求３０２は、少なくとも所望のアクセスのタイプ、及び要求によりアクセスされるリソースを示すリソース識別子（例えば、ターゲット実アドレス）を含む。要求の共通のタイプは、表１において以下に記載される。
【表１】
2019514106.tif 000003
【００２３】
これらの動作に関するこれ以上の詳細及びこれらの動作の効率的な処理を容易にする例示的なキャッシュ・コヒーレンシ・プロトコルは、全ての目的のためにその全体が引用により本明細書に組み入れられる特許文献１に見出すことができる。
【００２４】
要求３０２は、データ処理システム２００の全体にわたって分散されるスヌーパ３０４（例えば、Ｌ２キャッシュ１１０のスヌープ・マシン５１１（例えば、図５を参照されたい）及びＩＭＣ１２４のスヌーパ１２６）により受信される。一般に、幾つかの例外はあるが、要求３０２のマスタ３００としての同じＬ２キャッシュ１１０内のスヌーパ３０４は、要求３０２をスヌープしない（すなわち、一般に、自己スヌーピングは行われない）が、それは、要求３０２が処理ユニット１００により内部でサービスを受けることができない場合、要求３０２は相互接続ファブリックだけにより送信されるからである。要求３０２を受信し処理するスヌーパ３０４は各々、要求３０２への少なくともそのスヌーパ３０４の応答を表すそれぞれの部分応答（Ｐｒｅｓｐ）３０６を提供する。ＩＭＣ１２４内のスヌーパ１２６は、例えば、スヌーパ１２６が要求アドレスを担当しているかどうか、及びが要求にサービスするために使用可能なリソースを有しているかどうかに基づいて提供する部分応答３０６を決定する。Ｌ２キャッシュ１１０は、例えば、要求を処理するためのスヌープ・マシン５１１の可用性、そのＬ２キャッシュ・ディレクトリ５０８（例えば、図５を参照されたい）の可用性、及びＬ２キャッシュ・ディレクトリ５０８内のターゲット実アドレスと関連したコヒーレンシ状態に基づいて、その部分応答３０６を決定することができる。
【００２５】
スヌーパ３０４の部分応答３０６は、要求３０２に対するシステム全体の結合応答（Ｃｒｅｓｐ）３１０を決定するために、応答論理１２２の１つ又は複数のインスタンスにより、幾つかの段階で又は同時に論理的に結合される。以下に想定される１つの実施形態において、Ｃｒｅｓｐ３１０の生成を担当する応答論理１２２のインスタンスは、要求３０２を発行したマスタ３００を含む処理ユニット１００内に位置する。応答論理１２２は、要求３０２へのシステム全体のコヒーレンス応答（例えば、成功、失敗、再試行等）を示すために、相互接続ファブリックを介して、マスタ３００及びスヌーパ３０４にＣｒｅｓｐ３１０を提供する。Ｃｒｅｓｐ３１０が要求３０２の成功を示している場合には、Ｃｒｅｓｐ３１０は、例えば、要求３０２のターゲット・メモリ・ブロックのデータ・ソース、要求したメモリ・ブロックがマスタ３００（又は、他のキャッシュ）によりキャッシュされるコヒーレンス状態、及び１つまたは複数のキャッシュ内で要求したメモリ・ブロックを無効にする「クリーンアップ」動作が必要であるかどうかを示すことができる。
【００２６】
Ｃｒｅｓｐ３１０の受信に応答して、１つ又は複数のマスタ３００及びスヌーパ３０４は、通常、要求３０２にサービスするために１つ又は複数の付加的なアクションを行う。これらの付加的なアクションは、マスタ３００にデータを供給すること、１つ又は複数のＬ２キャッシュ１１０内にキャッシュしたデータのコヒーレンス状態を無効にするか、又は他の方法で更新すること、キャストアウト（castout）動作を行うこと、システム・メモリ１３２にデータをライトバックすること等を含むことができる。要求３０２により要求された場合、要求された又はターゲット・メモリ・ブロックを、応答論理１２２によるＣｒｅｓｐ３１０の発生の前又は後で、マスタ３００との間で送信することができる。
【００２７】
以下の説明において、要求３０２に対するスヌーパ３０４の部分応答３０６、及び要求３０２及び／又はその結合応答３１０に応じてスヌーパ３０４が行ったアクションを、そのスヌーパが、要求が指定した要求（ターゲット）アドレスに対して、最高コヒーレンシ点（ＨＰＣ）であるか、最低コヒーレンシ点（ＬＰＣ）であるか、又はいずれでもないかを参照しながら説明する。本明細書においては、ＬＰＣは、メモリ・ブロックのリポジトリとして働くメモリ・デバイス又はＩ／Ｏデバイスとして定義される。メモリ・ブロックに対するＨＰＣが存在しない場合には、ＬＰＣはメモリ・ブロックの真のイメージを保持し、メモリ・ブロックの付加的なキャッシュ・コピーを生成する要求を許可又は拒否する権限を有する。図１及び図２のデータ処理システムの実施形態の典型的な要求の場合には、ＬＰＣは、参照したメモリ・ブロックを保持しているシステム・メモリ１３２に対するメモリ・コントローラ１２４である。本明細書においては、ＨＰＣは、メモリ・ブロックの真のイメージをキャッシュする一意に識別されたデバイスとして定義され（ＬＰＣにおける対応するメモリ・ブロックと一貫していることも又は一貫していないこともある）、メモリ・ブロックを修正する要求を許可又は拒否する権限を有する。説明すると、ＨＰＣはまた、メモリ・ブロックを修正しない動作に応じて要求側にメモリ・ブロックのコピーを提供することもできる。従って、図１及び図２のデータ処理システムの実施形態の典型的な要求の場合には、ＨＰＣは、もしある場合には、Ｌ２キャッシュ１１０である。メモリ・ブロックのＨＰＣを指定するために他のインジケータも使用することができるが、本発明の好ましい実施形態は、もしあった場合、メモリ・ブロックに対するＨＰＣをＬ２キャッシュ１１０のキャッシュ・ディレクトリ内の選択したキャッシュ・コヒーレンシ状態により示す。
【００２８】
さらに図３を参照すると、要求３０２内で参照したメモリ・ブロックに対するＨＰＣがもし存在する場合には、又はＨＰＣが存在しない場合には、好ましくは、メモリ・ブロックのＬＰＣは、必要な場合には、要求３０２への応答内のメモリ・ブロックのコヒーレンス所有権の移転を保護する責任を有する。図３に示される例示的なシナリオにおいては、要求３０２の要求アドレスが指定するメモリ・ブロックに対するＨＰＣにおけるスヌーパ３０４ｎ（又は、ＨＰＣが存在しない場合には、ＬＰＣ）は、スヌーパ３０４ｎがその部分応答３０６を決定した時点からスヌーパ３０４ｎがＣｒｅｓｐ３１０を受信するまで継続する保護ウィンドウ３１２ａの間、及びスヌーパ３０４ｎによるＣｒｅｓｐ３１０の受信を超えてプログラム可能な時間が延びる以降のウィンドウ延長部３１２ｂの間、マスタ３００への要求された（ターゲット）メモリ・ブロックのコヒーレンス所有権の移転を保護する。保護ウィンドウ３１２ａ及びウィンドウ延長部３１２ｂの間、スヌーパ３０４ｎは、同じ要求アドレスを指定している他の要求に部分応答３０６（例えば、再試行部分応答）を提供することにより、スヌーパ３０４ｎからマスタ３００へのターゲット・メモリ・ブロックのコヒーレンス所有権の移転を保護する。こうした部分応答３０６は、コヒーレンス所有権がスヌーパ３０４ｎからマスタ３００へ成功裏に移転されるまで、ターゲット・メモリ・ブロックのコヒーレンス所有権を取得するのを防止する。必要な場合、結合応答３１０を受信した後、マスタ３００は、同様に、ターゲット・メモリ・ブロックのコヒーレンス所有権の取得を保護するために、保護ウィンドウ３１３を開始する。保護ウィンドウ３１３は、ターゲット・メモリ・ブロックを後で要求するいずれのマスタも、古い値ではなく、マスタ３００が作成したターゲット・メモリ・ブロックのいずれかの新しい値を受信することを保証する。
【００２９】
スヌーパ３０４はいずれもＣＰＵ及び／又は上述のＩ／Ｏ要求を処理するためのリソースが限られているので、幾つかの異なるレベルの部分応答及び対応するＣｒｅｓｐが可能である。例えば、要求されたメモリ・ブロックを担当するメモリ・コントローラ１２４内のスヌーパ１２６が、要求を処理するために使用可能なキューを有する場合には、スヌーパ１２６は、要求に対してＬＰＣとして働くことができることを示す部分応答で応答することができる。一方、スヌーパ１２６が要求を処理するために使用可能なキューを有していない場合には、スヌーパ１２６は、メモリ・ブロックに対するＬＰＣであることを示す部分応答で応答することができるが、現時点で要求にサービスすることはできない。同様に、Ｌ２キャッシュ１１０は、要求を処理するために、使用可能なスヌープ・マシン５１１を要求し、Ｌ２キャッシュ・ディレクトリ５０８にアクセスすることができる。これらのリソースのいずれか（又は両方）にアクセスしない場合には、必要なリソースがないために要求にサービスすることができないことを知らせる部分応答（及び対応するＣｒｅｓｐ）をもたらす。
【００３０】
図３にさらに示されるように、スヌーパ３０４ｎは、マスタ３００が応答論理１２２からＣｒｅｓｐ（ＲＥＡＤ又はＲＷＩＴＭ要求に対する）を受信する前又は後に、データ（例えばＲＥＡＤ又はＲＷＩＴＭ要求に対する）をマスタ３００（例えば、Ｌ２キャッシュ１１０）に返すことができる。
【００３１】
ここで図４を参照すると、図２のデータ処理システム２００内の例示的な動作フローの時間空間図が示される。これらの図において、データ処理システム２００内の種々の処理ユニット１００には、２つの位置識別子、すなわち処理ユニット１００が属する処理ノード２０２を識別するための第１の位置識別子、及び処理ノード２０２内の特定の処理ユニット１００を識別するための第２の識別子がタグ付けされている。従って、例えば、処理ユニット１００ａ０ｃは、処理ノード２０２ａ０の処理ユニット１００ｃを示す。さらに、各処理ユニット１００には、動作に関与する他の処理ユニット１００に対するその機能を示す機能識別子がタグ付けされている。これらの機能識別子は、（１）動作を開始する処理ユニット１００を指定するローカル・マスタ（ＬＭ）、（２）ローカル・マスタと同じ処理ノード２０２内にあり、別の処理ノード２０２への動作の送信を担当するローカル・ハブ（ＬＨ）（ローカル・マスタは、ローカル・ハブであってもよい）、（３）ローカル・マスタとは異なる処理ノード２０２内にあり、その処理ノード２０２内の他の処理ユニット１００への動作の分散を担当する遠隔ハブ（ＲＨ）、及び（４）ローカル・マスタとは異なる処理ノード２０２内に位置し、遠隔ハブではない処理ユニット１００を指定する遠隔リーフ（ＲＬ）を含む。
【００３２】
図４に示されるように、図３を参照して上述したように、例示的な動作は、少なくとも３つの段階、すなわち、要求（又は、アドレス）段階、部分応答（Ｐｒｅｓｐ）段階、及び結合応答（Ｃｒｅｓｐ）段階を有する。好ましくは、これらの３つの段階は、上記の順序で行われ、重ならない。動作はさらに、随意的に、要求、部分応答及び結合応答段階のうちのいずれかと重なることができるデータ段階を有することができる。
【００３３】
さらに図４を参照すると、要求段階は、ローカル・マスタ１００ａ０ｃ（すなわち、処理ノード２０２ａ０の処理ユニット１００ｃ）が、例えば、読み取り要求のような要求を、その処理ノード２０２ａ０内のローカル・ハブ１００ａ０ａ、１００ａ０ｂ、１００ａ０ｃ及び１００ａ０ｄのそれぞれに同期ブロードキャストした場合に開始する。ローカル・ハブのリストは、同じくローカル・マスタであるローカル・ハブ１００ａ０ｃを含むことに留意されたい。この内部送信は、タイミング制約がより容易に満たされ得るように、ローカル・ハブ１００ａ０ｃの動作をローカル・ハブ１００ａ０ａ、１００ａ０ｂ及び１００ａ０ｄと同期させるために有利に使用される。
【００３４】
要求の受信に応答して、その「Ａ」又は「Ｂ」リンクにより遠隔ハブ１００と結合している各ローカル・ハブ１００は、動作をその遠隔ハブ１００に送信する。従って、ローカル・ハブ１００ａ０ａは、そのアウトバウンド「Ａ」リンクにより動作を送信しないで、そのアウトバウンド「Ｂ」リンクを介して処理ノード２０２ａ１内の遠隔ハブに動作を送信する。ローカル・ハブ１００ａ０ｂ、１００ａ０ｃ及び１００ａ０ｄは、それぞれのアウトバウンド「Ａ」及び「Ｂ」リンクを介して、処理ノード２０２ｂ０及び２０２ｂ１、処理ノード２０２ｃ０及び２０２ｃ１、及び処理ノード２０２ｄ０及び２０２ｄ１内の遠隔ハブに動作を送信する。動作を受信する各遠隔ハブ１００は、順次、その処理ノード２０２内の各リモート・リーフ１００に動作を送信する。従って、例えば、遠隔ハブ１００ｂ０ａは、遠隔リーフ１００ｂ０ｂ、１００ｂ０ｃ及び１００ｂ０ｄに動作を送信する。このようにして、動作は、３つ以下のリンクによる送信を用いてデータ処理システム２００内の全ての処理ユニット１００に効率的にブロードキャストされる。
【００３５】
要求段階の後で、部分応答（Ｐｒｅｓｐ）段階が行われる。部分応答段階中に、各遠隔リーフ１００は、動作を評価し、動作へのその部分応答をそれぞれの遠隔ハブ１００に提供する。例えば、遠隔リーフ１００ｂ０ｂ、１００ｂ０ｃ及び１００ｂ０ｄは、それぞれの部分応答を遠隔ハブ１００ｂ０ａに送信する。各遠隔ハブ１００は、順次、ローカル・ハブ１００ａ０ａ、１００ａ０ｂ、１００ａ０ｃ及び１００ａ０ｄそれぞれに、その部分応答、並びにそれ自身の部分応答を送信する。次に、ローカル・ハブ１００ａ０ａ、１００ａ０ｂ、１００ａ０ｃ及び１００ａ０ｄは、処理ノード２０２ａ０内の各ローカル・ハブ１００に、これらの部分応答並びにそれ自身の部分応答をブロードキャストする。処理ノード２０２ａ０内のローカル・ハブ１００による部分応答のブロードキャストは、タイミング上の理由で、それ自身の部分応答の各ローカル・ハブ１００による自己ブロードキャストを含むことに留意されたい。
【００３６】
理解されるように、示される方法における部分応答の収集は、多数の異なる方法により実施することができる。例えば、個々の部分応答を、もとの各々の他のローカル・ハブ、遠隔ハブ及び遠隔リーフから各ローカル・ハブに伝達することが可能である。代替的に、より効率的にするために、部分応答がもとのローカル・ハブに伝達されたとき、部分応答を蓄積することが望ましい場合がある。各部分応答の効果が、正確にもとのローカル・ハブ１００に伝達されることを保証するために、例えば、論理ＯＲ機能及びこうした機能（例えば「ワン・ホット（one-hot）」コード化）を受ける場合に関連する情報が喪失しないコード化により、非破壊的な方法で、もしある場合には、部分応答を蓄積することが好ましい。
【００３７】
図４にさらに示されるように、処理ノード２０２ａ０内の各ローカル・ハブ１００における応答論理１２２は、要求へのシステム全体のコヒーレンス応答を示す結合応答を得るために、他の処理ユニット１００の部分応答をコンパイルする。次に、ローカル・ハブ１００ａ０ａ〜１００ａ０ｄは、要求段階の際に使用したのと同じ分散経路を通して、全ての処理ユニット１００に結合応答をブロードキャストする。従って、結合応答は、遠隔ハブ１００への最初のブロードキャストであり、遠隔ハブ１００は、次に、それぞれの処理ノード２０２内の各遠隔リーフ１００に結合応答を送信する。例えば、ローカル・ハブ１００ａ０ｂは、遠隔ハブ１００ｂ０ａに結合応答を伝送し、遠隔ハブ１００ｂ０ａは次に、遠隔リーフ１００ｂ０ｂ、１００ｂ０ｃ、及び１００ｂ０ｄに結合応答を送信する。
【００３８】
上述のように、動作のサービスは、付加的なデータ段階を必要とすることがある。例えば、動作が、ＲＥＡＤ又はＲＷＩＴＭ動作のような読み取りタイプの動作である場合には、遠隔リーフ１００ｂ０ｄは、遠隔リーフ１００ｂ０ｄを遠隔ハブ１００ｂ０ａへ、遠隔ハブ１００ｂ０ａをローカル・ハブ１００ａ０ｂへ、そしてローカル・ハブ１００ａ０ｂをローカル・マスタ１００ａ０ｃへ接続するリンクを介して、要求されるメモリ・ブロックをローカル・マスタ１００ａ０ｃに供給することができる。逆に、動作が、例えば、修正したメモリ・ブロックを遠隔リーフ１００ｂ０ｂのシステム・メモリ１３２にライトバックするキャッシュ・キャストアウト動作のような書き込みタイプの動作である場合には、メモリ・ブロックは、ローカル・マスタ１００ａ０ｃをローカル・ハブ１００ａ０ｂへ、
ローカル・ハブ１００ｂ０ｂを遠隔ハブ１００ｂ０ａへ、そして遠隔ハブ１００ｂ０ａを遠隔リーフ１００ｂ０ｂへ接続するリンクを介してメモリ・ブロックが送信される。
【００３９】
もちろん、図４に示されるシナリオは、データ処理システム２００のようなマルチプロセッサ・データ処理システム内で同時に起こり得る無数の可能な動作の単なる例示に過ぎない。
【００４０】
図３を参照して上述されるように、保護ウィンドウ３１２ａ、ウィンドウ拡張部３１２ｂ、及び保護ウィンドウ３１３を通じて、同じメモリ・ブロックの所有権について競合する他のマスタが存在する可能性がある場合には、スヌーパ３０４ｎから要求中のマスタ３００へのメモリ・ブロックのコヒーレンス所有権の「ハンドオフ」の間、コヒーレンシが維持される。例えば、保護ウィンドウ３１２ａ及びウィンドウ拡張部３１２ｂの両方は、競合するマスタ（ＣＭ）による競合する要求の存在下で、ウィニング・マスタ（ＷＭ）３００に要求されたメモリ・ブロックのコヒーレンス所有権の移転を保護するのに十分な持続時間を有するものでなければならない。保護ウィンドウ３１２ａ及びウィンドウ拡張部３１２ｂが、ウィニング・マスタ３００へ要求されたメモリ・ブロックの所有権の移転を保護するための十分な持続時間を有することを保証するために、好ましくは、図４による処理ユニット１００間の通信の待ち時間は、下記の条件が満たされるように制約する。
Ａ＿ｌａｔ（ＣＭ＿Ｓ）≦Ａ＿ｌａｔ（ＣＭ＿ＷＭ）＋Ｃ＿ｌａｔ（ＷＭ＿Ｓ）＋ε
ここで、Ａ＿ｌａｔ（ＣＭ＿Ｓ）は、要求されたメモリ・ブロックのコヒーレンスを所有するスヌーパ（Ｓ）３０４ｎへの任意の競合マスタ（ＣＭ）のアドレス待ち時間であり、Ａ＿ｌａｔ（ＣＭ＿ＷＭ）は、スヌーパ３０４ｎにより与えられたコヒーレンス所有権である「ウィニング」マスタ（ＷＭ）３００への任意の競合マスタ（ＣＭ）のアドレス待ち時間であり、Ｃ＿ｌａｔ（ＷＭ＿Ｓ）は、ウィニング・マスタ（ＷＭ）３００が結合応答を受信した時間から、要求したメモリ・ブロックを所有するスヌーパ（Ｓ）３０４ｎが結合応答を受信した時間までの結合応答の待ち時間であり、εはウィンドウ拡張部３１２ｂの持続時間である。
【００４１】
任意のトポロジのシステムに適用することができる上記のタイミング制約を満たさない場合には、（１）ウィニング・マスタ３００がコヒーレンス所有権を獲得し、保護ウィンドウ３１２ａを開始する前に、ウィニング・マスタにより、（２）保護ウィンドウ３１２ａ及びウィンドウ拡張部３１２ｂが終了した後でスヌーパ３０４ｎにより、競合マスタの要求を受信することができる。このような場合、ウィニング・マスタ３００もスヌーパ３０４ｎも、競合マスタ３２０がメモリ・ブロックのコヒーレンス所有権を獲得し、コヒーレントでないデータをメモリから読み取るのを防止する部分応答を競合要求に提供しない。しかしながら、このコヒーレンシ・エラーを避けるために、ウィンドウ拡張部３１２ｂは、待ち時間の変動、又はコヒーレンシを維持するために満たさなければならないタイミング制約をそうでなければ満たすことができない物理的実装の欠点を補償するために、（例えば、構成レジスタ（ＣＲ）１２３を適切に設定することにより）任意の長さ（ε）にプログラムすることができるように設定することができる。従って、εについての上式を解くことにより、任意の実装に対するウィンドウ延長部３１２ｂの理想的な長さを決定することができる。
【００４２】
上記のタイミング制約に関して、幾つかの観察を行うことができる。最初に、競合マスタから所有するスヌーパ３０４ａへのアドレス待ち時間は、必要な下限を有していないが、上限を持たなければならない。上限は、とりわけ、達成することができる最悪の場合の待ち時間を決定することにより、可能な最大オシレータ・ドリフト、処理ユニット１００に結合している最長のリンク、蓄積したストールの最大数、及び保証された最悪の場合のスループットに対して設計される。上限が観察されることを保証するために、相互接続ファブリックは、ノンブロッキング（non-blocking）動作を保証しなければならない。
【００４３】
第２に、競合マスタからウィニング・マスタ３００へのアドレス待ち時間は、必要な上限を有していないが下限を持たなければならない。下限は、とりわけ達成することができる最善の場合の待ち時間により、特定の静的構成の場合の、ストールがない場合、処理ユニット１００間の可能な最短リンク、及び最も遅いオシレータ・ドリフトに対して決定される。所与の動作の場合、ウィニング・マスタ３００及び競合マスタの各々は、それぞれの要求に対して１つのタイミング限界だけを有しているが、動作中、任意の処理ユニット１００は、幾つかの動作のためのウィニング・マスタであってもよく、他の動作のための競合（及びルージング）マスタであってもよいことが理解されるであろう。従って、各処理ユニット１００は、そのアドレス待ち時間に対して上限及び下限を効果的に有する。
【００４４】
第３に、結合応答が発生した時間からウィニング・マスタ３００により結合応答が観察された時間までの結合応答待ち時間は、必要な下限を持たないが（結合応答は、任意の早い時点でウィニング・マスタ３００のところに到着することができる）、上限を持たなければならない。対照的に、結合応答が発生した時間からスヌーパ３０４ｎが結合応答を受信した時間までの結合応答待ち時間は、下限を有しているが必要な上限を有していない（しかし、イン・フライト（in flight）状態で同時に行われる動作の回数を制限するために、ある上限を任意に課することができる）。
【００４５】
第４に、部分応答待ち時間には制限がない。すなわち、上に列挙したタイミング制約の全ての項は、要求／アドレス待ち時間及び結合応答待ち時間に関連しているので、ウィニング・マスタ３００へのスヌーパ３０４及び競合マスタ３００の部分応答待ち時間は、必要な上限又は下限を持たない。
【００４６】
処理ユニット１００を接続している第１の層及び第２の層のリンクは、図２に示されるトポロジを取得し、タイミング制約に適合するための種々の方法により実施することができる。１つの好ましい実施形態においては、各インバウンド及びアウトバウンドの第１の層（「Ｘ」、「Ｙ」、及び「Ｚ」）リンク、並びに各インバウンド及びアウトバウンドの第２の層（「Ａ」及び「Ｂ」）リンクは、アドレス、データ、制御及びコヒーレンシ情報を運ぶための多数の異なる仮想チャネル又は保有期間を含む単方向８バイト・バスとして実装される。
【００４７】
ここで図５を参照すると、１つの実施形態による、例示的なＬ２キャッシュ１１０のより詳細なブロック図が示される。図５に示されるように、Ｌ２キャッシュ１１０は、キャッシュ・アレイ５０２と、キャッシュ・アレイ５０２のコンテンツのディレクトリ５０８とを含む。明白には示されないが、キャッシュ・アレイ５０２は、キャッシュ・アレイ５０２を実装するために必要とされるダイ領域を減らすように、単一の読み取りポート及び単一の書き込みポートを有するように実装されることが好ましい。
【００４８】
キャッシュ・アレイ５０２及びディレクトリ５０８が従来のもののようにセット・アソシアティブ方式（set-associative）であると仮定すると、システム・メモリ１３２内の記憶場所は、システム・メモリ（実）アドレス内の所定のインデックス・ビットを用いて、キャッシュ・アレイ５０２内の特定の合同クラスにマッピングされる。キャッシュ・アレイ５０２のキャッシュ・ライン内に格納された特定のメモリ・ブロックは、各々のキャッシュ・ライン毎に１つのディレクトリ・エントリを含むキャッシュ・ディレクトリ５０８内に記録される。図５には明白に示されないが、キャッシュ・ディレクトリ５０８内の各ディレクトリ・エントリは、例えば、キャッシュ・アレイ５０２の対応するキャッシュ・ライン内に保持されるメモリ・ブロックの実アドレスを識別するタグ・フィールド、キャッシュ・ラインのコヒーレンシ状態を示す状態フィールド、及び同じ合同クラス内の他のキャッシュ・ラインに対するキャッシュ・ラインの置換順序を示す最長時間未使用（least recently used、ＬＲＵ）フィールドを含むことが、当業者により理解されるであろう。
【００４９】
Ｌ２キャッシュ１１０は、関連のあるプロセッサ・コア１０２から受信したロード（ＬＤ）要求及びストア（ＳＴ）要求に独立して同時にサービスする、複数の（例えば、１６又は３２個の）読み取り・クレーム（ＲＣ）マシン５１２ａ〜５１２ｎを含む。さらに、Ｌ２キャッシュ１１０は、関連のあるプロセッサ・コア１０２以外のプロセッサ・コア１０２から発する遠隔メモリ・アクセス要求にサービスするために、複数の（例えば、１６又は３２個の）スヌープ・マシン５１１ａ〜５１１ｍを含む。各スヌープ・マシン５１１は、ローカル相互接続５１４から「スヌープされた」遠隔メモリ・アクセス要求を独立して同時に処理することができる。理解されるように、Ｌ２キャッシュ１１０によるメモリ・アクセス要求のサービスが、キャッシュ・アレイ５０２内のメモリ・ブロックの置換又は無効化を必要とすることがある。従って、Ｌ２キャッシュ１１０は、キャッシュ・アレイ５０２からのメモリ・ブロックの除去及びライトバックを管理するＣＯ（キャストアウト）マシン５１０ａ〜５１０ｎを含む。
【００５０】
Ｌ２キャッシュ１１０または、ＲＣキュー５２０と、それぞれのバッファ・データがキャッシュ・アレイ５０２内に挿入され、そこから除去されるＣＰＩ（castout push intervention）キュー５１８も含む。ＲＣキュー５２０は、各々がＲＣマシン５１２の特定のものに対応する多数のバッファ・エントリを含むので、ディスパッチされる各ＲＣマシン５１２は、指定されたバッファ・エントリのみからデータを取り出す。同様に、ＣＰＩキュー５１８は、各々がキャストアウト・マシン５１０及びスヌープ・マシン５１１の特定のものに個々に対応する多数のバッファ・エントリを含むので、各ＣＯマシン５１０及びディスパッチされた各スヌーパ５１１は、それぞれの指定されたＣＰＩバッファ・エントリのみからデータを取り出す。
【００５１】
各ＲＣマシン５１２にはまた、再ロード・バス５２３を介して、キャッシュ・アレイ５０２から読み取った及び／又はローカル相互接続５１４から受信したメモリ・ブロックをバッファリングするための複数のＲＣデータ（ＲＣＤＡＴ）バッファ５２２のそれぞれが割り当てられる。各ＲＣマシン５１２に割り当てられたＲＣＤＡＴバッファ５２２は、関連したＲＣマシン５１２によりサービスされ得るメモリ・アクセス要求に対応する接続及び機能を有するように構成されることが好ましい。ＲＣＤＡＴバッファ５２２の少なくとも幾つかは、アービタ（arbiter）５０５により生成された図示されていない選択信号に応答して、ＲＣＤＡＴバッファ５２２内でバッファリングするためにその入力の中からデータ・バイトを選択する関連したストア・データ・マルチプレクサＭ４を有する。
【００５２】
Ｌ２キャッシュ１１０は、関連のあるプロセッサ・コア１０２から受信したローカル・メモリ・アクセス要求及びローカル相互接続５１４上でスヌープされる遠隔要求の処理を順序付けるために、マルチプレクサＭ１〜Ｍ２を制御するように構成されたアービタ５０５をさらに含む。ローカル・ロード及びストア動作及び遠隔読み取り及び書き込み動作を含むメモリ・アクセス要求は、アービタ５０５が実施する調停（arbitration）ポリシーに従って転送され、パイプライン５０６をディスパッチし、そこで、各読み取り／ロード及びストア要求は、所定数のサイクルにわたって、ディレクトリ５０８及びキャッシュ・アレイ５０２に対して処理される。
【００５３】
Ｌ２キャッシュ１１０は、予約論理５１３の実装を通じて、関連したプロセッサ・コア１０２によるアトミック更新を付加的にサポートし、予約論理５１３は、アトミック・ロード（例えば、ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ（ＬＡＲＸ））要求により確立された予約を追跡し、予約が確立されて以来予約したキャッシュ・ラインが修正されていない場合（すなわち、関連する予約が依然として有効である場合）、対応するアトミック・ストア（例えば、ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ（ＳＴＣＸ））要求のみが成功裏に完了することを保証する。典型的な実施形態において、予約論理５１３は、各スレッドについて、予約が確立されるキャッシュ・ラインのベース・アドレスを指定するそれぞれの予約アドレス・レジスタと、指定されたキャッシュ・ラインについての予約が依然として有効かどうかを示す予約フラグとを含む。
【００５４】
動作において、トランザクション・タイプ（ttype）、ターゲット実アドレス、及びストア・データを含むプロセッサ・ストア要求が、ストア・キュー（ＳＴＱ）５０４内の関連のあるプロセッサ・コア１０２から受信される。ＳＴＱ５０４から、ストア・データは、データ経路５２４を介してストア・データ・マルチプレクサＭ４に送信され、ストア・タイプ及びターゲット・アドレスがマルチプレクサＭ１に渡される。マルチプレクサＭ１はまた、プロセッサ・コア１０２からプロセッサ・ロード要求を、そして、ＲＣマシン５１２からディレクトリ書き込み要求を入力として受信する。アービタ５０５により生成される図示されない選択信号に応答して、マルチプレクサＭ１は、その入力要求の１つを選択してマルチプレクサＭ２に転送し、マルチプレクサＭ２はさらに、遠隔要求経路５２６を介して、ローカル相互接続５１４から受信した遠隔要求を入力として受信する。アービタ５０５は、処理のためにローカル及び遠隔メモリ・アクセス要求をスケジューリングし、スケジューリングに基づいて選択信号５２８のシーケンスを生成する。アービタ５０５により生成された選択信号５２８に応答して、マルチプレクサＭ２は、マルチプレクサＭ１から受信したローカル要求又はローカル相互接続５１４からスヌープされた遠隔要求のいずれかを、処理する次のメモリ・アクセス要求として選択する。
【００５５】
アービタ５０５により処理するために選択された要求は、マルチプレクサＭ２によりディスパッチ・パイプライン５０６内に入れられる。ディスパッチ・パイプライン５０６は、好ましくは、固定持続時間パイプラインとして実装され、そこで、所定数のクロック・サイクルの間、複数の可能な重なる要求Ａ、Ｂ、Ｃ等の各々が処理される。例えば、ディスパッチ・パイプライン５０６は、４サイクルの間、各要求を処理することができる。
【００５６】
ディスパッチ・パイプライン５０６内の処理の第１のサイクルの間、要求アドレスを用いて１−サイクル・ディレクトリ読み取りが実行され、ディレクトリ５０８において要求アドレスがヒットか又はミスかを判断し、メモリ・アドレスがヒットする場合には、ディレクトリ５０８内のメモリ・ブロックのコヒーレンス状態を判断する。第４のサイクルのような後のサイクルにおいて、ヒット／ミスの表示及びメモリ・ブロックのコヒーレンス状態を含むディレクトリ情報は、ディレクトリ５０８によりディスパッチ・パイプライン５０６に返される。理解されるように、通常、遠隔メモリ・アクセス要求におけるミスに応答して、Ｌ２キャッシュ１１０においてアクションはとられず、こうした遠隔メモリ要求は、これに応じて、ディスパッチ・パイプライン５０６から廃棄される。しかしながら、ローカル・メモリ・アクセス要求におけるヒット若しくはミス、又は遠隔メモリ・アクセス要求におけるヒットの場合には、Ｌ２キャッシュ１１０は、メモリ・アクセス要求にサービスし、メモリ・アクセス要求は、処理ユニット１００内で完全にサービスすることができない要求については、ファブリック・コントローラ５１６を介してローカル相互接続５１４上での通信を必要とする。
【００５７】
ディスパッチ・パイプライン５０６内のメモリ・アクセス要求の処理中の所定の時間において、アービタ５０５は、アドレス及び制御経路５３０を介して要求アドレスをキャッシュ・アレイ５０２に送信して、要求アドレスが指定するメモリ・ブロックのキャッシュ読み取りを開始する。例示的な実施形態において、キャッシュ読み取りが２サイクル行われる。キャッシュ・アレイ５０２から読み取られたメモリ・ブロックは、データ経路５４２を介してエラー訂正コード（ＥＣＣ）論理５４４に送信され、このエラー訂正コード（ＥＣＣ）論理５４４は、メモリ・ブロックのエラーをチェックし、可能であれば、あらゆる検出されたエラーを訂正する。プロセッサ・ロード要求の場合、メモリ・ブロックは、同じくデータ経路５４０を介してロード・データ・マルチプレクサＭ３に送信され、関連のあるプロセッサ・コア１０２に転送される。
【００５８】
ディスパッチ・パイプライン５０６内のメモリ・アクセス要求の処理の最後のサイクルにおいて、ディスパッチ・パイプライン５０６は、ディスパッチ判断を行う。例えば、ディスパッチ・パイプライン５０６は、（１）要求アドレスと、キャストアウト・マシン５１０、スヌープ・マシン５１１、又はＲＣマシン５１２により現在処理されている前の要求アドレスとの間のアドレス衝突の存在、（２）ディレクトリ情報、及び（３）メモリ・アクセス要求を処理するための、ＲＣマシン５１２（関連のあるプロセッサ・コア１０２のローカル要求に対する）又はスヌープ・マシン５１１（遠隔プロセッサ・コアのスヌープされた要求に対する）の可用性を含む多数の基準に基づいて、ディスパッチ判断を行うことができる。ディスパッチ・パイプライン５０６が、メモリ・アクセス要求がディスパッチされるとのディスパッチ判断を行う場合、メモリ・アクセス要求は、必要に応じて、ディスパッチ・パイプライン５０６からＲＣマシン５１２又はスヌープ・マシン５１１にディスパッチされる。メモリ・アクセス要求がディスパッチに失敗した場合、この失敗は、再試行応答により、要求側（例えば、ローカル又は遠隔プロセッサ・コア１０２）に知らされる。要求側は、必要に応じて、失敗したメモリ・アクセス要求を後で再試行することができる。
【００５９】
ＲＣマシン５１２がローカル・メモリ・アクセス要求を処理している間、ＲＣマシン５１２は、ビジー（busy）・ステータスを有し、別の要求のサービスには利用できない。ＲＣマシン５１２がビジー・ステータスを有する間、ＲＣマシン５１２は、必要に応じて、ディレクトリ５０８の関連するエントリを更新するために、ディレクトリ書き込みを行うことができる。さらに、ＲＣマシン５１２は、キャッシュ・アレイ５０２の関連するキャッシュ・ラインを更新するために、キャッシュ書き込みを行うことができる。ディレクトリ書き込み及びキャッシュ書き込みは、ディスパッチ・パイプライン５０６が、ディレクトリ読み取り及びキャッシュ読み取りの固定スケジューリングに従って他の要求をまだ処理していない任意の間隔の間、アービタ５０５によりスケジューリングすることができる。所定の要求についての全ての動作が完了すると、ＲＣマシン５１２は、非ビジー状態に戻る。
【００６０】
ディレクトリ書き込み及びキャッシュ書き込みのような非固定スケジュール動作のスケジューリングは、固定スケジュールに従って処理されるものを含む他の動作のスケジューリングに影響を与え得ることが理解されるであろう。
【００６１】
ここで図６を参照すると、Ｌ２キャッシュ１１０のＲＣマシン５１２が相互接続動作を介して関連のあるプロセッサ・コア１０２のメモリ・アクセス要求にサービスする、従来のプロセスの高レベル論理フローチャートが示される。さらなる理解を促進するために、特定の動作シナリオを示すタイミング図である図７を付加的に参照し、そこでは、相互接続動作の要求に対する結合応答を受信する前に、Ｌ２キャッシュ１１０は、キャッシュ間介入により、要求が指定するターゲット・キャッシュ・ラインを受信する。
【００６２】
図６のプロセスは、その関連したＬ２キャッシュ１１０のディスパッチ・パイプライン５０６におけるプロセッサ・コア１０２のメモリ・アクセス要求の受信に応答して、ブロック６００で開始する。次に、プロセスは、ディスパッチ・パイプライン５０６が、要求にサービスするために、ビジーでないＲＣマシン５１２を割り当てることを示すブロック６０２に進む。メモリ・アクセス要求にサービスするためにＲＣマシン５１２を割り当てることに応答して、ＲＣマシン５１２はビジー状態に遷移する（ＲＣマシン５１２のビジー状態は、図７の参照番号７００で示される）。
【００６３】
マスタＬ２キャッシュ１１０のディレクトリ５０８により戻されるコヒーレンス状態が、ＲＣマシン５１２がターゲット・キャッシュ・ラインのコピーを取り出すことなく、メモリ・アクセス要求にサービスすることができない（例えば、キャッシュ・ミスが発生した場合など）ことを示すと仮定すると、ブロック６０２において割り当てられたＲＣマシン５１２は、相互接続ファブリック上でターゲット・キャッシュ・ラインに対する適切な要求（例えば、ＲＥＡＤ又はＲＷＩＴＭ）を発行することによって、相互接続動作を開始する（ブロック６０４）。
【００６４】
相互接続ファブリック上での要求の発行は、図７の参照番号７０２で示される。実装される相互接続トポロジに応じて、要求は、様々な異なる時間に、データ処理システム２００全体にわたって分散されたスヌーパにより受信することができる（及び、受信される可能性が高い）。ターゲット・キャッシュ・ラインのためのデータ・ソースとして働くスヌーパの１つによる要求の受信は、図７の参照番号７０４で具体的に示される。要求の受信に応答して、スヌーパ（この例では、ＨＰＣである、Ｌ２キャッシュ１１０のスヌープ・マシン５１１）は、ビジー状態を獲得する（スヌーパのビジー状態は、参照番号７０６で示される）。スヌーパはビジー状態にあるが、参照番号７０８で示されるように、スヌーパは、要求にサービスするために必要とされるあらゆる処理を実行する。この場合、この処理は、スヌーパによる結合応答７２０の受信の前に、キャッシュ間介入により、要求が指定するターゲット・キャッシュ・ラインをマスタＬ２キャッシュ１１０に提供することを含む。結合応答７２０の受信の後、スヌーパは、参照番号７２２で示されるようなウィンドウ拡張部３１２ｂの持続期間、ビジー状態のままである（従って、マスタによるターゲット・キャッシュ・ラインのコヒーレンス所有権の取得を保護する）。
【００６５】
図６に戻ると、ブロック６０４における要求の発行の後、マスタＬ２キャッシュ１１０は、要求されるデータの戻り（例えば、ＨＰＣである、スヌーピングＬ２キャッシュ１１０からの）及び動作の結合応答（Ｃｒｅｓｐ）の受信の両方を同時に監視する（ブロック６０６〜６０８）。ブロック６０８において、要求されるデータの前に結合応答が受信されたとＬ２キャッシュ１１０が判断することに応答して、図６のプロセスは、ブロック６１０及び後のブロックに進む。明確にするために、このタイミング・シナリオは、図７には明示的に示されない。しかしながら、ブロック６０６において、動作の結合応答の前に要求されるデータが受信されたとＬ２キャッシュ１１０が判断することに応答して、プロセスは、ブロック６３０及び後のブロックに進み、これらは、図７をさらに参照して以下に説明される。
【００６６】
最初にブロック６１０及び後続のブロックを参照すると、ＲＣマシン５１２は、ブロック６０８における読み取り動作のために受信した結合応答が、要求されるデータのターゲット・キャッシュ・ラインが要求中のＬ２キャッシュ１１０に供給されることを結合応答が示すことを意味する「良好（good）」かどうかを判断する（ブロック６１０）。ブロック６１０において、結合応答が「良好」な結合応答ではないと判断することに応答して、プロセスはブロック６０４に進み、ＲＣマシン５１２が、相互接続ファブリック上で要求を再発行することを示す。しかしながら、ブロック６１０において、ＲＣマシン５１２が、結合応答が「良好」であると判断することに応答して、プロセスは、ブロック６１０からブロック６１２に進む。
【００６７】
ブロック６１２は、スヌーパから要求中のＬ２キャッシュ１１０へのターゲット・キャッシュ・ラインのコヒーレンス所有権の移転を保護するために、必要に応じて、ＲＣマシン５１２が保護ウィンドウ３１３を開くことを示す。次に、ブロック６１４において、データのターゲット・キャッシュ・ラインが、ＲＣマシン５１２に対応するＲＣＱ５２０のバッファ内に受信されるまで、プロセスが繰り返される。ＲＣＱ５２０におけるデータのターゲット・キャッシュ・ラインの受信に応答して、Ｌ２キャッシュ１１０は、要求されるデータを、ＲＣマシン５１２に対応するＲＣＤＡＴバッファ５２２内に入れる（ブロック６１６）。さらに、ブロック６１８において、ＲＣマシン５１２は、例えば、ＲＣＤＡＴバッファ５２２から関連のあるプロセッサ・コア１０２への要求されるデータの転送を開始することによって、ＲＣＱ５２０内のバッファからキャッシュ・アレイ５０２へのターゲット・キャッシュ・ラインの転送を要求するキャッシュ書き込み要求をディスパッチ・パイプライン５０６に発行することによって、及び／又はディレクトリ５０８が示すターゲット・キャッシュ・ラインのコヒーレンス状態の更新を要求するディレクトリ書き込み要求をディスパッチ・パイプライン５０６に発行することによって、関連のあるプロセッサ・コア１０２のメモリ・アクセス要求にサービスするために付加的な処理を実行する。ＲＣマシン５１２により実行される処理の終わりに、ＲＣ保護ウィンドウ３１３を閉じ（終了し）、ＲＣマシン５１２が解放され、それにより、ＲＣマシンは非ビジー状態に戻る（ブロック６２０）。その後、別のメモリ・アクセス要求にサービスするためにＲＣマシン５１２が割り当てられるまで、ブロック６２２において図６のプロセスは終了する。
【００６８】
さらに図６を参照すると、結合応答の前に要求されるデータをＬ２キャッシュ１１０により受信することに応答して実行される処理について、ブロック６３０及び後のブロックを参照してここで説明される。ＲＣＱ５２０におけるターゲット・キャッシュ・ライン（図７の参照番号７１０で示されるような）の受信に応答して、Ｌ２キャッシュ１１０は、要求されるデータを、ＲＣマシン５１２に対応するＲＣＤＡＴバッファ５２２内に入れる（ブロック６３０）。次に、ブロック６３２で示されるように、ＲＣマシン５１２は、要求に対する結合応答（例えば、図７のＣｒｅｓｐ７１２を参照されたい）の受信を監視する。図７に示されるように、幾つかの相互接続トポロジ及び／又は動作シナリオにおいて、要求の発行と結合応答の受信との間の間隔は、要求の発行とＲＣＤＡＴバッファ５２２内のターゲット・キャッシュ・ラインの受信との間の間隔より著しく長い（例えば、３倍長い）ことがある。図７に参照番号７２４で示されるこれらの間隔の持続時間は、メモリ・アクセス要求にサービスするＲＣマシン５１２が有用でない仕事を実行する期間を表す。
【００６９】
最終的に、図６のブロック６３２において、要求の結合応答が受信されたとの判断が行われると（例えば、図７のＣｒｅｓｐ７１２を参照されたい）、ＲＣマシン５１２は、結合応答が「良好」な結合応答であるかどうかを判断する（ブロック６３４）。ブロック６３４において、結合応答が「良好な」結合応答でないとの判断に応答して、図６のプロセスは、説明されたブロック６０４及び後のブロックに戻る。しかしながら、ブロック６３４において、結合応答が「良好な」結合応答であるとの判断に応答して、プロセスは、ブロック６３６に進む。ブロック６３６は、要求中のＬ２キャッシュ１１０へのターゲット・キャッシュ・ラインのコヒーレンス所有権の転送を保護するために、必要に応じて、ＲＣマシン５１２が保護ウィンドウ７１６を開くことを示す。次に、プロセスは、説明されたブロック６１８〜６２２に進む。図７の参照番号７１８で示されるように、ＲＣ保護ウィンドウ７１６が閉じ、ＲＣマシン５１２が解放された（ブロック６２０に示されるように）後、ターゲット・キャッシュ・ラインを受信したマスタＬ２キャッシュ１１０は、後のマスタの要求に応じて、必要な場合、ターゲット・キャッシュ・ラインのためのデータ・ソースとして働くことができる。
【００７０】
上述のように、従来のマルチプロセッサ・データ処理システムにおいて、ターゲット・キャッシュ・ラインを要求するマスタは、結合応答が受信され、ターゲット・キャッシュ・ラインのコヒーレンス所有権の取得を確認するまで、ターゲット・キャッシュ・ラインに対する処理を実行しない。これは、コヒーレンス所有権の取得を確認するコヒーレンス・メッセージの前に、マスタがデータ・ウェルのターゲット・キャッシュ・ラインを受信する動作シナリオにおいても当てはまり、その結果、ＲＣマシン５１２がアクティブであり、メモリ・アクセス要求にサービスしている間、著しい非生産的期間７２４がもたらされる。しかしながら、本出願は、データ配信時にマスタの要求に対するシステム全体のコヒーレンス応答を知ることができる動作シナリオにおいて、この非生産的期間を低減させる又は排除することができる（従って、連続するマスタにより所定のキャッシュ・ラインを取得できる待ち時間を低減させることができる）ことを認識する。本出願はまた、全ての動作シナリオにおいて、システム全体のコヒーレンス応答を先験的に判断することはできないが、そのスヌーパ（ターゲット・キャッシュ・ラインの単一の一意のコピーを保持する）がターゲット・キャッシュ・ラインの要求の許可又は拒否を担当し、従って、結合応答を決定するので、ターゲット・キャッシュ・ラインをｍｏｄｉｆｉｅｄ状態（例えば、ＭＥＳＩの「Ｍ」状態）に保持するＨＰＣであるスヌーパによる結合応答の受信に前に知り得ることも認識する。従って、本発明の好ましい実施形態において、ＨＰＣスヌーパは、そうすることができる場合には、ターゲット・キャッシュ・ラインと共に結合応答の早期表示を要求中のマスタに提供する。
【００７１】
ここで図８を参照すると、データ・ステータス・フィールドを用いて、要求に対するシステム全体のコヒーレンス応答の早期表示を要求中のマスタに通信することができる、図２のデータ処理システムの相互接続ファブリック上の例示的なデータ保有期間８００が示される。図示のように、例示的なデータ保有期間８００は、少なくとも２つのフィールド、すなわち、データ・フィールド８０４と、データ・ステータス（Ｄｓｔａｔ）・フィールド８０２とを含み、それらは、システム相互接続上で、１又は複数のビートで通信することができる。データ・フィールド８０４は、データ（ターゲット・キャッシュ・ラインを含む）の１つ又は複数のキャッシュ・ラインをスヌーパから要求中のマスタに通信することができる。データ・フィールド８０４と共に通信されるデータ・ステータス・フィールド８０２を、ターゲット・キャッシュ・ラインのデータ・ソースとして働くスヌーパにより利用して、可能な場合、要求中のマスタが、ターゲット・キャッシュ・ラインについての要求に対する「良好」な結合応答を保証するかどうかの早期表示を提供することができる。幾つかの実施形態において、表示は、コヒーレンス状態の表示を含むことができる。
【００７２】
ここで図９を参照すると、Ｌ２キャッシュ１１０のＲＣマシン５１２が相互接続動作を介して関連のあるプロセッサ・コア１０２のメモリ・アクセス要求にサービスする例示的プロセスの高レベル論理フローチャートが示される。さらなる理解を促進するために、相互接続動作の要求に対する結合応答を受信する前、Ｌ２キャッシュ１１０は、キャッシュ間介入により、要求が指定するターゲット・キャッシュ・ラインを受信する特定の動作シナリオを示す例示的タイミング図である、図１０をさらに参照する。
【００７３】
図９のプロセスは、関連したＬ２キャッシュ１１０のディスパッチ・パイプライン５０６におけるプロセッサ・コア１０２のメモリ・アクセス要求の受信に応答して、ブロック９００から開始する。次に、プロセスは、ディスパッチ・パイプライン５０６が、要求にサービスするために非ビジー状態のＲＣマシン５１２を割り当てることを示すブロック９０２に進む。メモリ・アクセス要求にサービスするためのＲＣマシン５１２の割り当てに応答して、ＲＣマシン５１２は、ビジー状態（ＲＣマシン５１２のビジー状態は、図１０の参照番号１０００で示される）に遷移する。
【００７４】
マスタＬ２キャッシュ１１０のディレクトリ５０８により戻されるコヒーレンス状態が、ＲＣマシン５１２がターゲット・キャッシュ・ラインのコピーを取り出さずに、メモリ・アクセス要求にサービスすることはできない（例えば、キャッシュ・ミスが発生した場合など）ことを示すと仮定すると、ブロック９０２において割り当てられたＲＣマシン５１２は、相互接続ファブリック上のターゲット・キャッシュ・ライン（例えば、ＲＥＡＤ又はＲＷＩＴＭ）についての適切な要求を発行することによって、相互接続動作を開始する（ブロック９０４）。
【００７５】
相互接続ファブリック上での要求の発行は、図１０の参照番号１００２で示される。実装される相互接続トポロジに応じて、要求は、様々な異なる時間にデータ処理システム２００全体にわたって分散されるスヌーパにより受信され得る（及び受信される可能性が高い）。ターゲット・キャッシュ・ラインのためのデータ・ソースとして働くスヌーパの１つによる要求の受信は、図１０の参照番号１００４で具体的に示される。要求の受信に応答して、スヌーパ（この例では、要求に応じてシステム全体のコヒーレンス応答を解決することができるＬ２キャッシュ１１０（例えば、適切なコヒーレンス状態におけるＨＰＣ  Ｌ２キャッシュ１１０）のスヌープ・マシン５１１）は、ビジー状態を呈する（スヌーパのビジー状態は、図１０の参照番号１００６で示される）。スヌーパがビジー状態にある間、参照番号１００８で示されるように、スヌーパは、要求にサービスするために必要とされるあらゆる処理を実行する。この場合、この処理は、参照番号１０２０の結合応答のスヌーパによる受信の前に、キャッシュ間介入により、要求が指定するターゲット・キャッシュ・ラインをマスタＬ２キャッシュ１１０に提供することを含む。結合応答の受信後、スヌーパは、参照番号１０２２で示されるようなウィンドウ拡張部３１２ｂの持続期間ビジー状態のままである（従って、マスタによるターゲット・キャッシュ・ラインのコヒーレンスの取得を保護する）。
【００７６】
図９に戻ると、ブロック９０４における要求の発行後、Ｌ２キャッシュ１１０は、要求されるデータの戻り（例えば、ＨＰＣであるスヌーピングＬ２キャッシュ１１０からの）及び動作の結合応答（Ｃｒｅｓｐ）の受信の両方を同時に監視する（ブロック９０６〜９０８）。Ｌ２キャッシュ１１０が、ブロック９０８において、要求されるデータの前に結合応答を受信したと判断することに応答して、図９のプロセスは、ブロック９１０及び後のブロックに進む。明確にするために、このタイミング・シナリオは、図１０には明示的に示されない。しかしながら、Ｌ２キャッシュ１１０が、ブロック９０６において、動作の結合応答の前に要求されるデータを受信したと判断することに応答して、プロセスは、ブロック９３０及び後のブロックに進み、それらは、図１０をさらに参照して以下に説明される。
【００７７】
最初にブロック９１０及び後のブロックを参照すると、ＲＣマシン５１２は、ブロック９０８において読み取り動作のために受信し結合応答が、要求されるデータのターゲット・キャッシュ・ラインが要求中のＬ２キャッシュ１１０に供給されることを結合応答が示すことを意味する「良好」であるかどうかを判断する、（ブロック９１０）。ブロック９１０において、結合応答が「良好」な結合応答ではないと判断することに応答して、プロセスは、ＲＣマシン５１２が、相互接続ファブリック上で要求を再発行することを示すブロック９０４に進む。しかしながら、ブロック９１０において、ＲＣマシン５１２が、結合応答が「良好」であると判断することに応答して、プロセスは、ブロック９１０からブロック９１２に進む。
【００７８】
ブロック９１２は、スヌーパから要求中のＬ２キャッシュ１１０へのターゲット・キャッシュ・ラインのコヒーレンス所有権の移転を保護するために、必要に応じて、ＲＣマシン５１２が保護ウィンドウ３１３を開くことを示す。次に、ブロック９１４において、データのターゲット・キャッシュ・ラインが、ＲＣマシン５１２に対応するＲＣＱ５２０のバッファ内に受信されるまで、プロセスが繰り返される。ＲＣＱ５２０におけるデータのターゲット・キャッシュ・ラインの受信に応答して、Ｌ２キャッシュ１１０は、要求されるデータを、ＲＣマシン５１２に対応するＲＣＤＡＴバッファ５２２内に入れる（ブロック９１６）。さらに、ブロック９１８において、ＲＣマシン５１２は、例えば、ＲＣＤＡＴバッファ５２２からプロセッサ・コア１０２へ要求されるデータの転送することによって、ＲＣＱ５２０内のバッファからキャッシュ・アレイ５０２へのターゲット・キャッシュ・ラインの転送を要求するキャッシュ書き込み要求をディスパッチ・パイプライン５０６に発行することによって、及び／又はディレクトリ５０８が示すターゲット・キャッシュ・ラインのコヒーレンス状態の更新を要求するディレクトリ書き込み要求をディスパッチ・パイプライン５０６に発行することによって、関連のあるプロセッサ・コア１０２のメモリ・アクセス要求にサービスするために付加的な処理を実行する。ＲＣマシン５１２により実行される処理の終わりに、ＲＣ保護ウィンドウ３１３を閉じ（終了し）、ＲＣマシン５１２が解放され、それにより、ＲＣマシンが非ビジー状態に戻る（ブロック９２０）。その後、別のメモリ・アクセス要求にサービスするためにＲＣマシン５１２が割り当てられるまで、ブロック９２２において図９のプロセスは終了する。
【００７９】
さらに図９を参照すると、結合応答の前に要求されるデータをＬ２キャッシュ１１０により受信することに応答して実行される処理について、ブロック９３０及び後のブロックを参照してここで説明される。ターゲット・キャッシュ・ライン（図１０の参照番号１０１０で示されるような）を含むデータ保有期間８００のＲＣＱ５２０における受信に応答して、Ｌ２キャッシュ１１０は、要求されるデータのターゲット・キャッシュ・ラインを、ＲＣマシン５１２に対応するＲＣＤＡＴバッファ５２２内に入れる（ブロック９３０）。ブロック９３２において、ＲＣマシン５１２はまた、データ保有期間８００のデータ・ステータス・フィールド８０２が、ＲＣマシン５１２によるターゲット・キャッシュ・ラインの即時処理を可能にする「良好」な結合応答の早期表示を提供するかどうかも判断する。早期表示を提供しない場合、プロセスは、ブロック９３２から９３４及び後のブロックに進む。しかしながら、データ・ステータス・フィールド８０２が、ＲＣマシン５１２によるターゲット・キャッシュ・ラインの即時処理を可能にする「良好」な結合応答の早期表示を提供する場合、プロセスは、ブロック９３２からブロック９４０及び後のブロックへ進む。
【００８０】
ここでブロック９３４及び後のブロックを参照すると、ＲＣマシン５１２は、要求に対する結合応答の受信を監視する（ブロック９３４）。要求の結合応答を受信したという図９のブロック９３４における判断に応答して、ＲＣマシン５１２は、結合応答が「良好」な結合応答であるかどうかを判断する（ブロック９３６）。結合応答が「良好」な結合応答ではないとのブロック９３６における判断に応答して、図９のプロセスは、説明済みのブロック９０４及び後のブロックに戻る。しかしながら、結合応答が「良好」な結合応答であるとのブロック９３６における判断に応答して、プロセスは、ブロック９３８に進む。ブロック９３８は、要求中のＬ２キャッシュ１１０へのターゲット・キャッシュ・ラインのコヒーレンス所有権の移転を保護するために、必要に応じて、ＲＣマシン５１２が保護ウィンドウを開くことを示す。次に、プロセスは、説明済みのブロック９１８〜９２２に進む。
【００８１】
ここでブロック９４０及び後のブロック（図１０に具体的に示される動作シナリオである）を参照すると、データ保有期間８００のデータ・ステータス・フィールド８０２が、結合応答が良好な結合応答であることの早期表示を提供することに応答して、プロセスは、ブロック９４０に進む。ブロック９４０は、スヌーピングＬ２キャッシュ１１０から要求中のＬ２キャッシュ１１０へのターゲット・キャッシュ・ラインのコヒーレンス所有権の移転を保護するために、ＲＣマシン５１２が保護ウィンドウ１０１４を開くことを示す。図１０から、保護ウィンドウ１０１４の開閉は、参照番号１０１８における要求の結合応答の受信とは非同期であることに留意されたい。さらに、図９のブロック９４２及び図１０の参照番号１０１２に示されるように、ＲＣマシン５１２は、例えば、ＲＣＤＡＴバッファ５２２からプロセッサ・コア１０２へ要求されるデータを戻すことによって、ＲＣＱ５２０内のバッファからキャッシュ・アレイ５０２へのターゲット・キャッシュ・ラインの転送を要求するキャッシュ書き込み要求をディスパッチ・パイプライン５０６に発行することによって、及び／又は、ディレクトリ５０８が示すターゲット・キャッシュ・ラインのコヒーレンス状態の更新を要求するディレクトリ書き込み要求をディスパッチ・パイプライン５０６に発行することによって、関連のあるプロセッサ・コア１０２のメモリ・アクセス要求にサービスするために付加的な処理を実行する。図７とは対照的に、データ保有期間８００における結合応答の早期表示を含ませることにより、ＲＣマシン５１２が、ターゲット・キャッシュ・ラインの受信と結合応答の受信との間に有用な仕事（及び、恐らく処理の全ての完了）を実行することが可能になることに留意されたい。ＲＣマシン５１２により実行される処理の終わりに、ＲＣマシン５１２はその保護ウィンドウ１０１４を閉じ（ブロック９４４）、そのことは、マスタＬ２キャッシュ１１０が、もはやターゲット・キャッシュ・ラインを要求する他の競合マスタに対する再試行部分応答を提供しないこと、従って、マスタＬ２キャッシュ１１０が、必要とされる場合、後のマスタ（参照番号１０１６で示されるような）の要求に応じてターゲット・キャッシュ・ラインのためのデータ・ソースとして働くことを意味する。コヒーレンス・プロトコルは、好ましくは、以前のスヌーパのものにわたってターゲット・キャッシュ・ラインの書き込み所有権を受信したキャッシュの部分応答に有利なように構成され、そのことは、参照番号１００６で示されるビジー状態にある間、再試行部分応答を提供し続ける１つ又は複数の以前のスヌーパの存在下でさえも、マスタＬ２キャッシュ１１０がデータ・ソースとして働くことを可能にする。マスタＬ２キャッシュ１１０がデータ・ソースとして働くことができる期間１０１６は、マスタＬ２キャッシュ１１０による結合応答１０１８の受信より前に（そして、多くの場合、そのかなり前から）開始することができることを留意されたい。従って、キャッシュ・ラインを垂直方向キャッシュ階層の間で供給することができる最小ハンドオフ時間は、もはや、図７におけるような要求・結合応答間の間隔（request-to-combined-response interval）により定められるのではなく、代わりに、図１０に示されるような要求・データ間の間隔（request-to-data interval）により定められる。
【００８２】
ブロック９４４の後、図９のブロック９４６及び図１０の参照番号１０１８に示されるように、ＲＣマシン５１２は、その要求に対する結合応答の受信を待つ。結合応答に応答して、相互接続動作に割り当てられたタグは使用されなくなり、ＲＣマシン５１２が解放され、それにより、ＲＣマシン５１２は非ビジー状態に戻り（ブロック９４８）、そこから、ＲＣマシンを再び割り当てることができる。その後、別のメモリ・アクセス要求にサービスするためにＲＣマシン５１２が割り当てられるまで、ブロック９２２において図９のプロセスは終了する。
【００８３】
説明されたように、少なくとも１つの実施形態において、マルチプロセッサ・データ処理システムは、複数のプロセッサ・コアをサポートする複数の垂直方向キャッシュ階層、システム・メモリ、並びにシステム・メモリ及び複数の垂直方向キャッシュ階層に結合されたシステム相互接続を含む。第１の垂直方向キャッシュ階層内の第１のキャッシュ・メモリは、システム相互接続上で、ターゲット・キャッシュ・ラインについての要求を発行する。要求に応答して、要求に対するシステム全体のコヒーレンス応答を受信する前に、第１のキャッシュ・メモリは、第２の垂直方向キャッシュ階層内の第２のキャッシュ・メモリから、キャッシュ間介入により、ターゲット・キャッシュ・ライン及び要求に対するシステム全体のコヒーレンス応答の初期表示を受信する。システム全体のコヒーレンス応答の初期表示に応答して、及び、システム全体のコヒーレンス応答を受信する前に、第１のキャッシュ・メモリは、ターゲット・キャッシュ・ラインを第１のキャッシュ・メモリ内にインストールするための処理を開始する。１つの実施形態において、第１のキャッシュ・メモリは、システム全体の結合応答を受信する前に、ターゲット・キャッシュ・ラインを第３の垂直方向キャッシュ階層内の第３のキャッシュに供給する。
【００８４】
本出願は、介入したキャッシュ・ラインと共にシステム全体のコヒーレンス応答の初期表示の通信は、複数のスレッドが介入したキャッシュ・ラインへのアトミック更新を行っている場合、介入したキャッシュ・ラインのコヒーレンス所有権の迅速なハンドオフも容易にする。例えば、マルチプロセッサ・データ処理システム２００の３つの異なるプロセッサ・コア１０２の３つの同時に実行しているハードウェア・スレッドＴａ、Ｔｂ及びＴｃ上で実行することができる、図１１の例示的なマルチスレッド・プログラムを考える。示されるように、スレッドＴａ、Ｔｂ及びＴｃの各々は、一般的に省略により示される他の命令に加えて、アトミック更新シーケンス１１００を含む。スレッドＴａ、Ｔｂ及びＴｃの各々内のアトミック更新シーケンス１１００は、実行されるとき、実効アドレスＡと関連したターゲット・キャッシュ・ラインを実行中のプロセッサ・コア１０２のレジスタｒ１にロードする分散型共有メモリ・システムへの対応するＬＡＲＸ要求を生成する、それぞれのｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ(例えば、ＬＡＲＸ)命令１１０２ａ、１１０２ｂ、１１０２ｃから開始する。各スレッドのアトミック更新シーケンス１１００は、次に、レジスタｒ１内に保持されるターゲット・キャッシュ・ラインの値をプライベートに修正する１つ又複数の命令を含み、ここで、これらの命令は、レジスタｒ１の値を１だけインクリメントするＡＤＤ命令１１０４ａ、１１０４ｂ、１１０４ｃによる例示的なアトミック更新シーケンスにおいて表される。ＡＤＤ命令１１０４ａ、１１０４ｂ、１１０４ｃの後に、前のＬＡＲＸ命令１１０２が実行されて以来、介入する更新がターゲット・キャッシュ・ラインに対してなされたかどうかによって、レジスタｒ１の修正された値で、アドレスＡと関連したターゲット・キャッシュ・ラインを条件付きで更新するｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ（例えば、ＳＴＣＸ）命令１１０６ａ、１１０６ｂ、１１０６ｃが続く。この例では、ＳＴＣＸ命令１１０６がターゲット・キャッシュ・ラインを成功裏に更新し、条件コード・レジスタのフィールドを非ゼロ値に他の方法で設定する場合、実行中のプロセッサ・コア１０２は、プロセッサ・コア１０２内の条件コード・レジスタのフィールドをゼロにリセットする。各スレッド内の例示的なアトミック更新シーケンス１０００は、プロセッサ・コア１０２内の条件コード・レジスタ内のフィールドの値に基づいて条件付きで分岐するそれぞれのｃｏｎｄｉｔｉｏｎａｌ−ｂｒａｎｃｈ（条件付き分岐）（例えば、ＢＲＡＮＣＨ  ＮＯＴ  Ｅｑｕａｌ（ＢＮＥ））命令１１０８ａ、１１０８ｂ、１１０８ｃにより終了する。特に、ＢＮＥ命令１１０８ａ、１１０８ｂ、１１０８ｃは、実行を、アトミック更新が不成功である場合に、ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ（例えば、ＬＡＲＸ）命令１１０２a、１１０２ｂ、１１０２ｃにループバックさせ、アトミック更新が成功した場合、関連するスレッド内の後の命令に進ませる。
【００８５】
矢印１１１０及び１１１２により図１１にさらに示されるように、スレッドＴａのＳＴＣＸ命令１１０６ａにより実効アドレスＡに対応する分散型共有メモリ内の記憶位置に格納された値は、スレッドＴｂのＬＡＲＸ命令１１０２ｂによりロードされ、スレッドＴｂのＳＴＣＸ命令１１０６ｂにより分散型共有メモリ内の記憶位置に格納された値は、スレッドＴｃのＬＡＲＸ命令１１０２ｃによりロードされる。従って、更新値を分散型共有メモリ内のターゲット・キャッシュ・ラインに格納すること（ＳＴＣＸ命令１１０６の実行を通して）と分配型共有メモリからターゲット・キャッシュ・ラインの更新値をロードすること（ＬＡＲＸ命令の実行を通して）との間の待ち時間を、本出願の教示に従って低減させることができる場合、図１１に示される例示的なマルチスレッドの性能が改善されることが理解されるであろう。
【００８６】
ここで図１２〜図１３を参照すると、１つの実施形態による、下位レベル・キャッシュ（例えば、Ｌ２キャッシュ１１０）のＲＣマシン５１２が、関連のあるプロセッサ・コア１０２のｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ（ＬＡＲＸ）要求及びｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ（ＳＴＣＸ）要求にサービスする例示的なプロセスの高レベル論理フローチャートが示される。この実施形態において、ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求及び次のｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌの両方にサービスするために、単一のＲＣマシン５１２が割り当てられ、従って、両方の要求のサービスが単一のリソースに併合される。
【００８７】
同様の参照番号で図１２に示されるように、ＬＡＲＸ要求（例えば、ＬＡＲＸ命令１１０２の実行により生成される）の受信に応答して実行されるＲＣマシン５１２の処理は、図９を参照して上述されたような他のメモリ・アクセス要求に応答して実行されるものと実質的に似ている。従って、図９を参照して先に述べられたものに対応する図１２に実行されるステップはここで再び詳細に説明されない。しかしながら、図１２のブロック９４２におけるＲＣマシン５１２によるＬＡＲＸ要求の処理は、予約論理５１３内のＬＡＲＸ要求のターゲット・アドレスに対する予約を確立することを含み得ることに留意されたい。ブロック９４２におけるＲＣマシン５１２によるＬＡＲＸ要求の処理の後、図１２のプロセスは、ページ・コネクタＡを介して図１３に進む。
【００８８】
図１３に示されるように、プロセスは、二股に分かれ、ブロック１３００を含む第１の経路及びブロック１３１０〜１３１８を含む第２の経路の両方へ並行して進む。両経路内に示される処理が完了した後で初めて、これらの２つの経路が合流し、ページ・コネクタＢを通して図１２のブロック９４８に戻る。
【００８９】
最初にブロック１３００を参照すると、ＲＣマシン５１２は、図１２のブロック９０４におけるデータ処理システム２００の相互接続ファブリック上で発行された要求の結合応答（Ｃｒｅｓｐ）の受信を待つ。結合応答の受信に応答して、図１３のプロセスの第１の経路は、ブロック１３００から第２の経路との合流点に進む。
【００９０】
ＬＡＲＸ要求及び関連したＳＴＣＸ要求の両方が単一のＲＣマシン５１２内に併合される例示的な実施形態において、ＲＣマシン５１２は、それに割り当てられたＬＡＲＸ要求と同じターゲット・アドレスを指定するｍａｔｃｈｉｎｇ  ＳＴＣＸ（ＳＴＣＸ照合）要求の受信を待つタイムアウト間隔の間、ビジーのままである。図１３は、タイムアウト間隔が満了する（ブロック１３１２）前、ｍａｔｃｈｉｎｇ  ＳＴＣＸ要求を関連したプロセッサ・コア１０２から受信した（ブロック１３１０）かどうかの判断を示す、ブロック１３１０〜１３１２におけるこの行動を示す。ｍａｔｃｈｉｎｇ  ＳＴＣＸ要求のディスパッチ・パイプライン５０６による受信の前にタイムアウト間隔が満了する場合、ブロック１３１２において肯定的判断が行われ、図１３に示される第２の経路は、ブロック１３１２からブロック１３１８へ直接進む。ブロック１３１８は、ＲＣマシン５１２が、ＬＡＲＸ要求により予約されるキャッシュ・ラインのターゲット・アドレスのためにその保護ウィンドウを閉じることを示す。次に、プロセスは、ブロック１３００からくる第１の経路との合流点に進む。しかしながら、タイムアウト間隔が経過する前にＲＣマシン５１２がｍａｔｃｈｉｎｇ  ＳＴＣＸ要求を受信したことを、ブロック１３１０において判断することに応答して、プロセスは、ブロック１３１０から、ディスパッチ・パイプライン５０６が、ＳＴＣＸ要求を、ｍａｔｃｈｉｎｇ  ＳＴＣＸ要求に既にサービスしているＲＣマシン５１２内に併合していることを示すブロック１３１４に進む。
【００９１】
次に、ＲＣマシン５１２は、例えば、キャッシュ・アレイ５０２内のターゲット・キャッシュ・ラインの更新を要求するキャッシュ書き込み要求をディスパッチ・パイプライン５０６に発行すること、及び／又はディレクトリ５０８が示すターゲット・キャッシュ・ラインのコヒーレンス状態の更新を要求するディレクトリ書き込み要求をディスパッチ・パイプライン５０６に発行すること、及び／又は予約論理５１３内のターゲット・キャッシュ・ラインのための予約を設定することによって、ＳＴＣＸ要求にサービスする（ブロック１３１６）。その後、プロセスは、ＲＣマシン５１２が、ターゲット・キャッシュ・ラインのための保護ウィンドウを閉じることを示すブロック１３１８に進む。そして、第２の経路のプロセスは、合流点に進み、ページ・コネクタＢを通して、説明済みの図１２のブロック９４８に戻る。従って、示される実施形態において、ＲＣマシン５１２がＳＴＣＸ要求の処理を完了することに応答して、又は、タイムアウト間隔内にＳＴＣＸ要求を受信できないことに応答して、ＲＣ保護ウィンドウが閉じ、ＲＣは、ＬＡＲＸ要求の相互接続動作に対する結合応答を受信し、ＲＣ保護ウィンドウを閉じた後までビジーのままである。
【００９２】
ここで図１４〜図１５を参照すると、図１２〜図１３のプロセスの下の例示的な動作シナリオのタイミング図が示される。図１４において、関連した結合応答の前に、メモリ・アクセス要求の結合応答の早期表示及びｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ（ＬＡＲＸ）要求のターゲット・キャッシュ・ラインが受信される。次に、ｍａｔｃｈｉｎｇ  ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ（ＳＴＣＸ）要求の処理の完了前に（及び、場合によっては、ＳＴＣＸ要求の受信の前に）結合応答が受信される。図１５において、結合応答の受信のタイミングは、ｍａｔｃｈｉｎｇ  ＳＴＣＸ要求の処理の完了後に相互接続動作の結合応答が受信されるという点で、図１４に示されるものとは異なる。
【００９３】
図１４〜図１５は、ＬＡＲＸ要求にサービスするためにＲＣマシン５１２を割り当てることに応答して、参照番号１４０２において、ＲＣマシン５１２がビジー状態１４００を呈することを示す。ＬＡＲＸ要求に応答して、図１４〜図１５の参照番号１４０６及び図１２のブロック９０４で示されるように、ＲＣマシン５１２は、データ処理システム２００の相互接続ファブリック上のＬＡＲＸ要求のターゲット・キャッシュ・ラインについてのメモリ・アクセス要求を発行する。
【００９４】
このメモリ・アクセス要求は、サービス・スヌーパ（例えば、Ｌ２キャッシュ１１０のスヌープ・マシン５１１）を含むデータ処理システム２００全体にわたるスヌーパにより受信され、メモリ・アクセス要求のその受信は、図１４〜図１５において参照番号１４０８で示される。相互接続ファブリックを介するメモリ・アクセス要求の受信に応答して、サービス・スヌーパは、ターゲット・キャッシュ・ラインを含むデータ・フィールド８０４、及び（図１４の参照番号１４１０で示されるような）ＲＣマシン５１２によるターゲット・キャッシュ・ラインの即時処理を可能にする「良好」な結合応答の早期表示を提供するデータ・ステータス・フィールド８０２を含むデータ保有期間８００を要求中のＬ２キャッシュ１１０に返す。（サービス・スヌーパは、図１０に示される他の処理も付加的に実行するが、本プロセスの他の態様を分かりにくくするのを避けるために、図１４〜図１５から省略される。）
【００９５】
良好な結合応答の初期表示をＬ２キャッシュ１１０において受信することに応答して、ＬＡＲＸ要求にサービスするＲＣマシン５１２は、ＲＣ保護ウィンドウ１４１２を開く（図１２のブロック９４０に示されるように）。ＲＣ保護ウィンドウ１４１２の間、Ｌ２キャッシュ１１０のスヌープ・マシン５１１は、再試行部分応答を、予約されたキャッシュ・ラインをターゲットとする相互接続ファブリック上でスヌープされるあらゆる競合するメモリ・アクセス要求に提供する。ＲＣ保護ウィンドウ１４１２において、図１４〜図１５の参照番号１４２０及び図１２のブロック９４２で示されるように、ＲＣマシン５１２は、ＬＡＲＸ要求のその処理を実行する。ＬＡＲＸ要求の処理の完了時、ＲＣマシン５１２は、非ビジー状態に戻らないが、代わりに、図１３のブロック１３１０で示されるように、ＲＣマシン５１２がｍａｔｃｈｉｎｇ  ＳＴＣＸ要求のディスパッチを待っている後のＳＴＣＸ待機ウィンドウ１４２２の間、ビジー状態のままである。先のＬＡＲＸ要求のものに合致するターゲット・アドレスを指定するＳＴＣＸ要求がタイムアウト間隔（参照番号１４０４に示されるような）内に受信されると仮定すると、ＳＴＣＸ要求はＲＣマシン５１２内に併合され、図１４〜図１５の参照番号１４２４及び図１３のブロック１３１４〜１３１６で示されるように、ＲＣマシン５１２は、ＳＴＣＸ要求にサービスするための処理を実行する。
【００９６】
図１４〜図１５は、相互接続ファブリック上でのＲＣマシン５１２が開始するメモリ・アクセス要求に対する結合応答１４１４の受信、及びＲＣ保護ウィンドウ１４１２の閉鎖の後まで、ＲＣマシン５１２がビジー状態１４００のままであることを示す。図１４〜図１５はさらに、ＲＣマシン５１２がターゲット・キャッシュ・ラインを更新するためにＳＴＣＸ要求の処理を完了することに応答して、ＲＣマシン５１２がそのＬ２キャッシュ１１０による予約されたキャッシュ・ラインのコヒーレンス所有権を保護するＲＣ保護ウィンドウ１４１２が閉じることをさらに示す。ＳＴＣＸ要求に応答したターゲット・キャッシュ・ラインの更新は、結合応答の受信のタイミングとは独立しており、ＳＴＣＸ要求は、通常、Ｌ２キャッシュ１１０のヒットをもたらすので、ターゲット・キャッシュ・ラインに対する更新は、多くの場合、メモリ・アクセス要求（図１５に示されるような）に対する結合応答を受信する前に完了し得る。このように、ターゲット・キャッシュ・ラインを更新したＬ２キャッシュ１１０は、ＲＣ保護ウィンドウ１４１２が閉じるや否やターゲット・キャッシュ・ラインのソースとして働くことができ、そのことは、図１５に示されるように、ＲＣマシン５１２により開始されるメモリ・アクセス要求の結合応答１４１４の受信よりかなり前であり得る。
【００９７】
ここで図１６を参照すると、図１３のプロセスの代替的な実施形態が示される。この代替的な実施形態において、Ｌ２キャッシュ１１０は、ＳＴＣＸ要求を先のＬＡＲＸ要求にサービスする同じＲＣマシン５１２内に併合するのではなく、関連のあるプロセッサ・コア１０２のｍａｔｃｈｉｎｇ  ＳＴＣＸ要求にサービスするように、そのＲＣマシン５１２の別のものを割り当てる。同様の参照番号で示されるように、図１６のプロセスは、図１３において実行されるものと実質的に類似している。従って、図１３を参照して前に説明されたものに対応する図１６において実行されるステップは、ここで再び詳細に説明されない。
【００９８】
図１６のブロック１３１０において、ＲＣマシン５１２（ここではＲＣ１と呼ばれる）が、先のＬＡＲＸ要求により開始されるビジー状態のままである間、Ｌ２キャッシュ１１０により関連したプロセッサ・コア１０２からｍａｔｃｈｉｎｇ  ＳＴＣＸ要求を受信することに応答して、プロセスは、ブロック１３１０からブロック１６００に進む。ブロック１６００は、Ｌ２キャッシュ１１０のいずれかのＲＣマシン５１２が非ビジー（利用可能な）状態にあるかどうかの判断を示す。非ビジー状態にない場合、ディスパッチ・パイプライン５０６は、ブロック１３１０において受信したＳＴＣＸ要求を廃棄し、再試行表示をプロセッサ・コア１０２（図示せず）に戻す。次に、図１６のプロセスは、説明済みのブロック１３１０に戻る。しかしながら、ブロック１６００における肯定的判断に応答して、Ｌ２キャッシュ１１０のディスパッチ・パイプライン５０６は、ブロック１６０２で示されるように、ＳＴＣＸ要求にサービスするために別のＲＣマシン５１２（ここではＲＣ２と呼ばれる）を割り当てる。その後、図１６のプロセスは、説明済みのブロック１３１８に進む。
【００９９】
ここで図１７を参照すると、Ｌ２キャッシュ１１０のＲＣマシン５１２（すなわち、ＲＣ２）が、図１６の実施形態における関連のあるプロセッサ・コア１０２のｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ（ＳＴＣＸ）要求にサービスするプロセスの高レベル論理フローチャートが示される。図１７のプロセスは、例えば、Ｌ２キャッシュ１１０のディスパッチ・パイプライン５０６が、図１６のブロック１６０２におけるＳＴＣＸ要求にサービスするためにＲＣマシンＲＣ２を割り当てることに応答して、ブロック１７００から開始する。次に、プロセスは、ＲＣマシンＲＣ２が、そのＬ２キャッシュ１１０によりターゲット・キャッシュ・ラインのコヒーレンス所有権を保護するために保護ウィンドウ１０１４を開くブロック１７０２に進む。さらに、ＲＣマシンＲＣ２は、例えば、キャッシュ・アレイ５０２内のターゲット・キャッシュ・ラインの更新を要求するキャッシュ書き込み要求をディスパッチ・パイプライン５０６に発行すること、及び／又はディレクトリ５０８が示すターゲット・キャッシュ・ラインのコヒーレンス状態の更新を要求するディレクトリ書き込み要求をディスパッチ・パイプライン５０６に発行すること、及び／又は、中でも予約論理５１３内のターゲット・キャッシュ・ラインのための予約をリセットすることによって、ＳＴＣＸ要求にサービスする（ブロック１７０４）。少なくとも幾つかの実施形態において、ディレクトリ書き込み要求は、ストアを直ちに完了することを可能にするコヒーレンス状態において、キャッシュ間介入により、コヒーレンス状態を、Ｌ２キャッシュ１１０により別のＬ２キャッシュ１１０に供給させる可能性がより高いコヒーレンス状態に更新する。ブロック１７０４の後、プロセスは、ＲＣマシンＲＣ２がターゲット・キャッシュ・ラインのために保護ウィンドウを閉じることを示すブロック１７０６に進む。その後、図１７のプロセスは、ブロック１７０８において終了する。
【０１００】
ここで図１８を参照すると、関連した結合応答の前に、メモリ・アクセス要求の結合応答の早期表示が、ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ（ＬＡＲＸ）要求のターゲット・キャッシュ・ラインと共に受信される、図１２、図１６及び図１７に示されるプロセスに従った例示的な動作シナリオのタイミング図が示される。
【０１０１】
図１８は、ＬＡＲＸ要求にサービスするためにＲＣマシンＲＣ１を割り当てることに応答して、参照番号１８０２において、ＲＣマシンＲＣ１がビジー状態１８００を呈することを示す。ＬＡＲＸ要求に応答して、図１８の参照番号１８０６及び図１２のブロック９０４に示されるように、ＲＣマシンＲＣ１は、データ処理システム２００の相互接続ファブリック上でＬＡＲＸ要求のターゲット・キャッシュ・ラインについてのメモリ・アクセス要求を発行する。
【０１０２】
このメモリ・アクセス要求は、サービス・スヌーパ（例えば、Ｌ２キャッシュ１１０のスヌープ・マシン５１１）を含むデータ処理システム２００全体にわたってスヌーパにより受信され、メモリ・アクセス要求のその受信は、図１８に参照番号１８０８で示される。相互接続ファブリックを介するメモリ・アクセス要求の受信に応答して、サービス・スヌーパは、ターゲット・キャッシュ・ラインを含むデータ・フィールド８０４、及び（図１８の参照番号１８１０で示されるような）ＲＣマシン５１２によるターゲット・キャッシュ・ラインの即時処理を可能にする「良好」な結合応答の早期表示を提供するデータ・ステータス・フィールド８０２を含むデータ保有期間８００を、要求中のＬ２キャッシュ１１０に返す。（サービス・スヌーパは、図１０に示される他の処理も付加的に実行するが、本プロセスの他の態様を分かりにくくするのを避けるために、図１８から省略される。）
【０１０３】
良好な結合応答の初期表示をＬ２キャッシュ１１０において受信することに応答して、ＲＣマシンＲＣ１は、（図１２のブロック９４０で示されるように）ＲＣ１保護ウィンドウ１８１２を開き、その間、Ｌ２キャッシュ１１０のスヌープ・マシン５１１は、再試行部分応答を、予約されたキャッシュ・ラインをターゲットとするシステム相互接続上でスヌープされるあらゆる競合するメモリ・アクセス要求に提供する。ＲＣ１がＬＡＲＸ要求の処理を実行するＲＣ１  ＬＡＲＸ処理間隔１８２０、及び、Ｌ２キャッシュ１１０が先のＬＡＲＸ要求のものに合致するターゲット・アドレスを指定する関連したプロセッサ・コア１０２からのＳＴＣＸ要求の受信を待つ後のＲＣ１  ＳＴＣＸ待機間隔１８２２の両方の間、ＲＣ１保護ウィンドウ１８１２は開いたままである。ＲＣ１  ＳＴＣＸ待機間隔１８２２の完了時、ＲＣ１保護ウィンドウ１８１２は閉じ、ＲＣ１によるターゲット・キャッシュ・ラインのコヒーレンス所有権の保護を終了する。しかしながら、ＲＣ１は、必ずしも非ビジー状態にすぐに戻るとは限らず、代わりに、そのメモリ・アクセス要求に対する結合応答１８１４の受信及びＲＣ１  ＳＴＣＸ待機間隔１８２２の終了の後まで、ビジー状態のままである。
【０１０４】
関連したプロセッサ・コア１０２からＳＴＣＸ要求をＬ２キャッシュ１１０により受信すること（参照番号１８０４で示されるように）に応答して、ディスパッチ・パイプライン５０６は、（ブロック１６０２に示されるように）ＳＴＣＸ要求にサービスするために別のＲＣマシンＲＣ２を割り当てる。ＳＴＣＸ要求にサービスするためにＲＣマシンＲＣ２を割り当てることに応答して、ＲＣ２は、ＲＣ２保護ウィンドウ１８３０を開き、その間、ＲＣ２は、同じく図１７のブロック１７０２に示されるように、そのＬ２キャッシュ１１０によりターゲット・キャッシュ・ラインのコヒーレンス所有権を保護する。ＲＣ２保護ウィンドウ１８３０の間、ＲＣ２は、参照番号１８３２に示されるように、ターゲット・キャッシュ・ラインを更新するためにＳＴＣＸ要求の処理を実行する。ＲＣ２は、図１７のブロック１７０６に示されるように、ＳＴＣＸ要求についての処理の完了に応答して、ＲＣ２保護ウィンドウ１８３０を閉じる。
【０１０５】
ＲＣ２保護ウィンドウ１８３２が閉じるや否や、ターゲット・キャッシュ・ラインを更新したＬ２キャッシュ１１０は、ターゲット・キャッシュ・ラインのデータ・ソースとして働くことができ（例えば、別のＬ２キャッシュ１１０へのキャッシュ間介入により）、これは、ＲＣマシンＲＣ１により開始されるメモリ・アクセス要求の結合応答１８１４の受信より前であり得ることを留意されたい。同じく、データ構造体のタイプデータ構造体のタイプデータ構造体のタイプは、ＳＴＣＸ要求に応答したＲＣマシンＲＣ２によるターゲット・キャッシュ・ラインの更新も、結合応答の受信のタイミングとは独立しており、ＳＴＣＸ要求は、通常、Ｌ２キャッシュ１１０におけるヒットをもたらすので、ターゲット・キャッシュ・ラインへの更新は、メモリ・アクセス要求に対する結合応答を受信する前に完了され得る。
【０１０６】
ここで図１９を参照すると、例えば、半導体ＩＣ論理の設計、シミュレーション、試験、レイアウト及び製造に用いられる例示的な設計フロー１９００のブロック図が示される。設計フロー１９００は、上述され、本明細書に示される設計構造体及び／又はデバイスの論理的に又は他の方法で機能的に等価な表現を生成するように設計構造体又はデバイスを処理するためのプロセス、マシン、及び／又は機構を含む。設計フロー１９００によって処理及び／又は生成される設計構造体は、データ処理システム上で実行又は他の方法で処理されたときに、ハードウェア・コンポーネント、回路、デバイス又はシステムの論理的、構造的、機械的、又は他の方法で機能的に等価な表現を生成するデータ及び／又は命令を含むように、マシン可読伝送又はストレージ媒体上でコード化することができる。機マシンは、これらに限定されるものではないが、回路、コンポーネント、デバイス、又はシステムを設計、製造又はシミュレートするといった、ＩＣ設計プロセスに用いられるどのようなマシンも含む。例えば、マシンは、リソグラフィ・マシン、マスクを生成するためのマシン、及び／又はマスクを生成するためのマシン及び／又は機器（例えば、ｅビーム・ライタ）、設計構造体をシミュレートするためのコンピュータ又は機器、製造プロセス又は試験プロセスに用いられるいずれかの装置、又は設計構造体の機能的に等価な表現をいずれかの媒体にプログラミングするためのいずれかのマシン（例えば、プログラマブル・ゲート・アレイをプログラミングするためのマシン）を含むことができる。
【０１０７】
設計フロー１９００は、設計される表現のタイプに応じて変わり得る。例えば、特定用途向けＩＣ（ＡＳＩＣ）を構築するための設計フロー１９００は、標準的なコンポーネントを設計するための設計フロー１９００、又はプログラマブル・ゲート・アレイ（ＰＧＡ）、例えば、Ａｌｔｅｒａ（登録商法）  Ｉｎｃ．又はＸｉｌｉｎｘ（登録商標）  Ｉｎｃ．から提供されているプログラマブル・ゲート・アレイ（ＰＧＡ）又はフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）に設計をインスタンス化するための設計フロー１９００とは異なることがある。
【０１０８】
図１９は、好ましくは設計プロセス１９１０によって処理される入力設計構造体１９２０を含む、複数のこのような設計構造体を示す。設計構造体１９２０は、設計プロセス１９１０によって生成及び処理され、ハードウェア・デバイスの論理的に等価な機能表現を生じる、論理的シミュレーション設計構造体とすることができる。設計構造体１９２０はさらに、又は代替的に、設計プロセス１９１０によって処理されたときに、ハードウェア・デバイスの物理的構造の機能的表現を生成するデータ及び／又はプログラム命令を含むこともできる。機能的及び／又は構造的設計特徴のどちらを表現するのであれ、設計構造体１９２０は、コア開発者／設計者によって実施されるような、電子的コンピュータ支援設計（ＥＣＡＤ）を使用して生成することができる。マシン可読データ伝送、ゲートアレイ、又はストレージ媒体上でコード化された場合、設計構造体１９２０を設計プロセス１９１０内の１つ又は複数のハードウェア及び／又はソフトウェア・モジュールによってアクセス及び処理して、本明細書で示されるもののような電子コンポーネント、回路、電子若しくは論理モジュール、装置、デバイス、又はシステムをシミュレートするか、又は他の方法で機能的に表現することができる。そのため、設計構造体１９２０は、設計又はシミュレーション・データ処理システムによって処理されたときに回路又は他のレベルのハードウェア論理設計を機能的にシミュレートするか、又は他の方法で表現する、人間及び／又は機械可読のソースコード、コンパイルされた構造体、及びコンピュータ実行可能コード構造体を含む、ファイル又は他のデータ構造体を含むことができる。このようなデータ構造体は、ハードウェア記述言語（ＨＤＬ）設計エンティティ、又は、Ｖｅｒｉｌｏｇ及びＶＨＤＬのような低レベルＨＤＬ設計言語、及び／又はＣ若しくはＣ＋＋のような高レベル設計言語に適合する及び／又はそれと互換性のある他のデータ構造体を含むことができる。
【０１０９】
設計プロセス１９１０は、設計構造体１９２０のような設計構造体を含むことができるネットリスト１９８０を生成するために、本明細書に示されるコンポーネント、回路、デバイス又は論理構造体の設計／シミュレーションの機能的等価物を合成、変換又はその他の方法で処理するためのハードウェア及び／又はソフトウェア・モジュールを使用し、組み込むことが好ましい。ネットリスト１９８０は、例えば、集積回路設計内の他の素子及び回路への接続を記述する配線、個別部品、論理ゲート、制御回路、Ｉ／Ｏデバイス、モデル等のリストを表す、コンパイルされた又は他の方法で処理されたデータ構造体を含むことができる。ネットリスト１９８０は繰り返しプロセスを用いて合成することができ、このプロセスにおいて、ネットリスト１９８０は、デバイスの設計仕様及びパラメータに応じて１回又は複数回再合成される。ここで説明された他の設計構造体のタイプと同様に、ネットリスト１９８０をマシン可読データ・ストレージ媒体上に記録し、又はプロブラマブル・ゲートアレイにプログラムすることができる。媒体は、磁気又は光ディスク・ドライブのような不揮発性ストレージ媒体、プロブラマブル・ゲートアレイ、コンパクト・フラッシュ、又は他のフラッシュメモリとすることができる。それに加えて、又は代替的に、媒体は、システム又はキャッシュ・メモリ、又はバッファ領域とすることができる。
【０１１０】
設計プロセス１９１０は、ネットリスト１９８０を含む様々な入力データ構造体のタイプを処理するためのハードウェア及びソフトウェア・モジュールを含むことができる。このようなデータ構造体のタイプは、例えば、ライブラリ要素１９３０内に常駐し、所与の製造技術（例えば、異なる技術ノード３２ｎｍ、４５ｎｍ、９０ｎｍ等）についての、モデル、レイアウト及び記号表示を含む、一般的に用いられる要素、回路及びデバイスの組を含むことができる。データ構造体のタイプは、設計仕様１９４０と、特性データ１９５０と、検証データ１９６０と、設計規則１９７０と、入力試験パターン、出力試験結果及び他の試験情報を含むことができるテスト・データ・ファイル１９８５とをさらに含むことができる。設計プロセス１９１０は、例えば、応力分析、熱分析、機械イベント・シミュレーション、鋳造、成形、ダイ・プレス形成等のような動作のためのプロセス・シミュレーションのような標準的な機械設計プロセスをさらに含むことができる。機械設計の当業者であれば、本発明の範囲及び趣旨から逸脱することなく、設計プロセス１９１０に用いられる可能な機械設計ツール及びアプリケーションの範囲を認識することができる。設計プロセス１９１０はまた、タイミング分析、検証、設計規則照合、場所及びルート動作等のような標準的な回路設計プロセスを実行するためのモジュールを含むこともできる。
【０１１１】
設計プロセス１９１０は、第２の設計構造体１９９０を作成するために、ＨＤＬコンパイラ及びシミュレーション・モデル構築ツールのような論理的及び物理的設計ツールを使用し、組み込んで、設計構造体１９２０を、図示された支持データ構造体のうちの幾つか又は全てと共に、いずれかの付加的な機械設計又はデータ（該当する場合）と併せて処理する。設計構造体１９９０は、機械的なデバイス及び構造体のデータの交換に用いられるデータ形式（例えば、ＩＧＥＳ、ＤＸＦ、Ｐａｒａｓｏｌｉｄ  ＸＴ、ＪＴ、ＤＲＧ、又はこのような機械的設計構造体を格納又はレンダリングするのに適したその他のいずれかの形式で格納される情報）でストレージ媒体又はプログラマブル・ゲート・アレイ上に存在する。設計構造体１９２０と同様に、設計構造体１９９０は、好ましくは、１つ又は複数のファイル、データ構造体、又は他のコンピュータ・コード化データ又は命令を含み、これは、伝送又はデータ・ストレージ媒体上に存在し、かつ、ＥＣＡＤシステムによって処理されると本明細書に示される本発明の実施形態の１つ又は複数の論理的又はその他の方式で機能的に等価な形態を生成する。１つの実施形態において、設計構造体１９９０は、例えば、本明細書に示されるデバイスを機能的にシミュレートする、コンパイルされた実行可能なＨＤＬシミュレーション・モデルを含むことができる。
【０１１２】
設計構造体１９９０はまた、集積回路のレイアウト・データの交換に用いられるデータ形式、及び／又は記号データ形式（例えば、ＧＤＳＩＩ（ＧＤＳ２）、ＧＬ１、ＯＡＳＩＳ、マップファイル、又はこのような設計データ構造体を格納するためのその他のいずれかの適切な形式で格納される情報）を使用することもできる。データ構造体１９９０は、例えば、記号データ、マップファイル、試験データ・ファイル、設計内容・ファイル、製造データ、レイアウト・パラメータ、配線、金属のレベル、ビア、形状、製造ラインを通じた経路指定のためのデータ、並びに、上記に説明され、本明細書に示されるようなデバイス又は構造体を製造するために製造者又は他の設計者／開発者により要求される他のいずれかのデータといった情報を含むことができる。次に、設計構造体１９９０はステージ１９９５に進むことができ、そこで、例えば、設計構造体１９９０は、テープに読み出されたり、製造のためにリリースされたり、マスク会社にリリースされたり、別の設計会社に送られたり、顧客に返送されたりする。
【０１１３】
既述のように、少なくとも１つの実施形態において、マルチプロセッサ・データ処理システムは、複数のプロセッサ・コアをサポートする複数の垂直方向キャッシュ階層、システム・メモリ及びシステム相互接続を含む。第１のプロセッサ・コアからのｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求に応答して、第１のプロセッサ・コアをサポートする第１のキャッシュ・メモリは、システム相互接続上で、ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求のターゲット・キャッシュ・ラインについてのメモリ・アクセス要求を発行する。メモリ・アクセス要求に応答して、メモリ・アクセス要求に対するシステム全体のコヒーレンス応答を受信する前に、第１のキャッシュ・メモリは、キャッシュ間介入により、第２の垂直方向キャッシュ階層内の第２のキャッシュ・メモリから、ターゲット・キャッシュ・ライン及びメモリ・アクセス要求に対するシステム全体のコヒーレンス応答の早期表示を受信する。早期表示に応答して、システム全体のコヒーレンス応答を受信する前に、第１のキャッシュ・メモリは、第１のキャッシュ・メモリ内のターゲット・キャッシュ・ラインを更新するための処理を開始する。
【０１１４】
種々の実施形態が具体的に示され、説明されたが、当業者であれば、添付の特許請求の範囲の趣旨及び範囲から逸脱することなく、形態及び細部における種々の変更をなし得ること、及びこれらの代替的な実施は全て、添付の特許請求の範囲の範囲内に入ることを理解するであろう。例えば、本発明の機能を指示するプログラム・コードを実行するコンピュータ・システムに関して態様が説明されたが、本発明は、データ処理システムによって処理することができるプログラム・コードを格納するコンピュータ可読ストレージ・デバイスを含むプログラム製品として代替的に実装できることを理解されたい。コンピュータ可読ストレージ・デバイスは、揮発性若しくは不揮発性メモリ、光学若しくは磁気ディスク等を含むことができる。しかしながら、本明細書で用いられる場合、「ストレージ・デバイス」は、法定製造物品のみを含み、かつ、信号媒体自体、一時的伝搬媒体及びエネルギー自体を排除するように具体的に定められる。
【０１１５】
一例として、プログラム製品は、データ処理システム上で実行される又は他の方法で処理されるとき、本明細書で開示されるハードウェア・コンポーネント、回路、デバイス又はシステムの論理的、構造的、又は他の方法で機能的に等価な表現（シミュレーション・モデルを含む）を生成する、データ及び／又は命令を含むことができる。こうしたデータ及び／又は命令は、ハードウェア記述言語（ＨＤＬ）設計エンティティ、又はＶｅｒｉｌｏｇ及びＶＨＤＬのような低レベルＨＤＬ設計言語、及び／又はＣ若しくはＣ＋＋のような高レベル設計言語に適合する及び／又はそれと互換性のある他のデータ構造体を含むことができる。さらに、データ及び／又は命令は、集積回路のレイアウト・データの交換に用いられるデータ形式、及び／又は記号データ形式（例えば、ＧＤＳＩＩ（ＧＤＳ２）、ＧＬ１、ＯＡＳＩＳ、マップファイル、又はこのような設計データ構造体を格納するための他のいずれかの適切な形式で格納される情報）を使用することもできる。
【符号の説明】
【０１１６】
１００：処理ユニット
１０２、１０２ａ、１０２ｂ：プロセッサ・コア
１０６：実行ユニット
１２０：相互接続論理
１２２：応答論理
１２４：システム・コントローラ
１２６、３０４、３０４ａ、３０４ｎ：スヌーパ
１２８：Ｉ／Ｏコントローラ
１３０：Ｉ／Ｏデバイス
１３２：システム・メモリ
１１０：Ｌ２キャッシュ
２００：マルチプロセッサ・データ処理システム
２０２：処理ノード
３００：マスタ
３０２：要求
３０６：部分応答（Ｐｒｅｓｐ）
３１０：結合応答（Ｃｒｅｓｐ）
３１２ａ、３１３：保護ウィンドウ
３１２ｂ：ウィンドウ拡張部
５０２：キャッシュ・アレイ
５０５：アービタ
５０６：ディスパッチ・パイプライン
５０８：ディレクトリ
５１０、５１０ａ〜５１０ｎ：ＣＯマシン
５１１、５１１ａ〜５１１ｍ：スヌープ・マシン
５１２、５１２ａ〜５１２ｎ：読み取り・クレーム（ＲＣ）マシン
５１３：予約論理
５１４：ローカル相互接続
５１６：ファブリック・コントローラ
５２０：ＲＣキュー
【図１】
2019514106.tif 000004
【図２】
2019514106.tif 000005
【図３】
2019514106.tif 000006
【図４】
2019514106.tif 000007
【図５】
2019514106.tif 000008
【図６】
2019514106.tif 000009
【図７】
2019514106.tif 000010
【図８】
2019514106.tif 000011
【図９】
2019514106.tif 000012
【図１０】
2019514106.tif 000013
【図１１】
2019514106.tif 000014
【図１２】
2019514106.tif 000015
【図１３】
2019514106.tif 000016
【図１４】
2019514106.tif 000017
【図１５】
2019514106.tif 000018
【図１６】
2019514106.tif 000019
【図１７】
2019514106.tif 000020
【図１８】
2019514106.tif 000021
【図１９】
2019514106.tif 000022
【手続補正書】
【提出日】平成31年1月21日(2019.1.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のプロセッサ・コアをサポートする複数の垂直方向キャッシュ階層、システム・メモリ、及び前記システム・メモリ及び前記複数の垂直方向キャッシュ階層に結合されたシステム相互接続を含むマルチプロセッサ・データ処理システムにおけるデータ処理の方法であって、
第１のプロセッサ・コアからのｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ（ロード及び予約）要求の受信に応答して、前記第１のプロセッサ・コアをサポートする第１の垂直方向キャッシュ階層内の第１のキャッシュ・メモリが、前記システム相互接続上で、前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求のターゲット・キャッシュ・ラインについてのメモリ・アクセス要求を発行することと、
前記メモリ・アクセス要求に応答して、前記メモリ・アクセス要求に対するシステム全体のコヒーレンス応答を受信する前に、前記第１のキャッシュ・メモリが、キャッシュ間介入により、第２の垂直方向キャッシュ階層内の第２のキャッシュ・メモリから、前記ターゲット・キャッシュ・ライン及び前記メモリ・アクセス要求に対する前記システム全体のコヒーレンス応答の早期表示を受信することと、
前記システム全体のコヒーレンス応答の前記早期表示に応答して、前記システム全体のコヒーレンス応答を受信する前に、前記第１のキャッシュ・メモリが、前記第１のキャッシュ・メモリ内の前記ターゲット・キャッシュ・ラインを更新するための処理を開始することと、
を含む、方法。
【請求項２】
前記システム全体の結合応答を受信する前に、前記第１のキャッシュ・メモリが、前記ターゲット・キャッシュ・ラインを第３の垂直方向キャッシュ階層内の第３のキャッシュ・メモリに供給することをさらに含む、請求項１に記載の方法。
【請求項３】
前記システム全体のコヒーレンス応答の前記早期表示の受信に応答して、前記第１のキャッシュ・メモリが、前記ターゲット・キャッシュ・ラインのコヒーレンス所有権の取得を保護する保護ウィンドウを開始することと、
前記第１のキャッシュ・メモリが前記第１のプロセッサ・コアからのｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ（条件付きストア）要求の受信を待つ、前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求の処理後の少なくとも待機間隔の間、前記保護ウィンドウを継続することと、
をさらに含む、請求項１に記載の方法。
【請求項４】
前記ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の処理の完了に応答して、前記システム全体のコヒーレンス応答の前記第１のキャッシュ・メモリによる受信とは非同期的に前記保護ウィンドウを終了することをさらに含む、請求項３に記載の方法。
【請求項５】
前記保護ウィンドウは、第１の保護ウィンドウであり、
前記方法は、前記ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の受信に応じた前記第１のキャッシュ・メモリによる第２の保護ウィンドウの開始に応答して、前記システム全体のコヒーレンス応答の前記第１のキャッシュ・メモリによる受信とは非同期的に前記第１の保護ウィンドウを終了することをさらに含む、請求項３に記載の方法。
【請求項６】
前記第１のキャッシュ・メモリが、前記第１のプロセッサ・コアからの前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求の受信に応答して前記要求を管理するように、読み取り・クレーム状態マシンを割り当てることと、
前記第１のキャッシュ・メモリが、前記システム全体のコヒーレンス応答の受信及び前記保護ウィンドウの終了の後の発生に応答して、前記読み取り・クレーム状態マシンを割り当て解除することと、
をさらに含む、請求項３に記載の方法。
【請求項７】
前記第１のキャッシュ・メモリが前記第１のキャッシュ・メモリ内の前記ターゲット・キャッシュ・ラインを更新するための処理を開始することは、前記第１のキャッシュ・メモリが、前記第１のプロセッサ・コアのｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の受信に応答して前記第１のキャッシュ・メモリ内の前記ターゲット・キャッシュ・ラインを更新するための処理を開始することを含む、請求項１に記載の方法。
【請求項８】
マルチプロセッサ・データ処理システムのための処理ユニットであって、
プロセッサ・コアと、
前記処理ユニットを前記マルチプロセッサ・データ処理システムのシステム相互接続に結合するように構成された相互接続論理と、
前記プロセッサ・コアをサポートする第１の垂直方向キャッシュ階層であって、
前記プロセッサ・コアからのｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求の受信に応答して、前記システム相互接続上で、前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求のターゲット・キャッシュ・ラインについてのメモリ・アクセス要求を発行し、
前記メモリ・アクセス要求に応答して、前記メモリ・アクセス要求に対するシステム全体のコヒーレンス応答を受信する前に、キャッシュ間介入により、第２の垂直方向キャッシュ階層内の第２のキャッシュ・メモリから、前記ターゲット・キャッシュ・ライン及び前記メモリ・アクセス要求に対する前記システム全体のコヒーレンス応答の早期表示を受信し、
前記システム全体のコヒーレンス応答の前記早期表示に応答して、前記システム全体のコヒーレンス応答の受信の前に、第１のキャッシュ・メモリ内の前記ターゲット・キャッシュ・ラインを更新するための処理を開始するように構成された第１のキャッシュ・メモリを含む、第１の垂直方向キャッシュ階層と、
を含む、処理ユニット。
【請求項９】
前記第１のキャッシュ・メモリは、前記システム全体のコヒーレンス応答を受信する前に、前記ターゲット・キャッシュ・ラインを第３の垂直方向キャッシュ階層内の第３のキャッシュ・メモリに供給するようにさらに構成される、請求項８に記載の処理ユニット。
【請求項１０】
前記第１のキャッシュ・メモリは、
前記システム全体のコヒーレンス応答の前記早期表示の受信に応答して、前記第１のキャッシュ・メモリが前記ターゲット・キャッシュ・ラインのコヒーレンス所有権の取得を保護する保護ウィンドウを開始し、
前記第１のキャッシュ・メモリが前記第１のプロセッサ・コアからのｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の受信を待つ前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求の処理後の少なくとも待機間隔の間、前記保護ウィンドウを継続する
ようにさらに構成される、請求項８に記載の処理ユニット。
【請求項１１】
前記第１のキャッシュ・メモリは、前記ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の処理の完了に応答して、前記システム全体のコヒーレンス応答の前記第１のキャッシュ・メモリによる受信とは非同期的に前記保護ウィンドウを終了するようにさらに構成される、請求項１０に記載の処理ユニット。
【請求項１２】
前記保護ウィンドウは、第１の保護ウィンドウであり、
前記第１のキャッシュ・メモリは、前記ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の受信に応じた前記第１のキャッシュ・メモリによる第２の保護ウィンドウの開始に応答して、前記システム全体のコヒーレンス応答の前記第１のキャッシュ・メモリによる受信とは非同期的に前記第１の保護ウィンドウを終了するようにさらに構成される、請求項１０に記載の処理ユニット。
【請求項１３】
前記第１のキャッシュ・メモリは、
前記第１のプロセッサ・コアからの前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求の受信に応答して前記要求を管理するように、読み取り・クレーム状態マシンを割り当て、
前記システム全体のコヒーレンス応答の受信及び前記保護ウィンドウの終了の後の発生に応答して、前記読み取り・クレーム状態マシンを割り当て解除するようにさらに構成される、請求項１０に記載の処理ユニット。
【請求項１４】
前記第１のキャッシュ・メモリは、前記第１のプロセッサ・コアのｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の受信に応答して前記第１のキャッシュ・メモリ内の前記ターゲット・キャッシュ・ラインを更新するための処理を開始するようにさらに構成される、請求項８に記載の処理ユニット。
【請求項１５】
マルチプロセッサ・データ処理システムであって、
請求項８から請求項１４までのいずれかに記載の処理ユニットと、
前記処理ユニットに結合する前記システム相互接続と、
を含むマルチプロセッサ・データ処理システム。
【請求項１６】
集積回路を設計、製造、又は試験するための、機械可読ストレージ・デバイス内に有形に具体化された設計構造体であって、
マルチプロセッサ・データ処理システムのための処理ユニットを含み、前記処理ユニットは、
プロセッサ・コアと、
前記処理ユニットを前記マルチプロセッサ・データ処理システムのシステム相互接続に結合するように構成された相互接続論理と、
前記プロセッサ・コアをサポートする第１の垂直方向キャッシュ階層であって、
前記プロセッサ・コアからのｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求の受信に応答して、前記システム相互接続上で、前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求のターゲット・キャッシュ・ラインについてのメモリ・アクセス要求を発行し、
前記メモリ・アクセス要求に応答して、前記メモリ・アクセス要求に対するシステム全体のコヒーレンス応答を受信する前に、キャッシュ間介入により、第２の垂直方向キャッシュ階層内の第２のキャッシュ・メモリから、前記ターゲット・キャッシュ・ライン及び前記メモリ・アクセス要求に対する前記システム全体のコヒーレンス応答の早期表示を受信し、
前記システム全体のコヒーレンス応答の前記早期表示に応答し、前記システム全体のコヒーレンス応答の受信の前に、第１のキャッシュ・メモリ内の前記ターゲット・キャッシュ・ラインを更新するための処理を開始するように構成された第１のキャッシュ・メモリを含む、第１の垂直方向キャッシュ階層と、
を含む、設計構造体。
【請求項１７】
前記第１のキャッシュ・メモリは、前記システム全体の結合応答を受信する前に、前記ターゲット・キャッシュ・ラインを第３の垂直方向キャッシュ階層内の第３のキャッシュ・メモリに供給するようにさらに構成される、請求項１６に記載の設計構造体。
【請求項１８】
前記第１のキャッシュ・メモリは、
前記システム全体のコヒーレンス応答の前記早期表示の受信に応答して、前記第１のキャッシュ・メモリが前記ターゲット・キャッシュ・ラインのコヒーレンス所有権の取得を保護する保護ウィンドウを開始し、
前記第１のキャッシュ・メモリが前記第１のプロセッサ・コアからのｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の受信を待つ前記ｌｏａｄ−ａｎｄ−ｒｅｓｅｒｖｅ要求の処理後の少なくとも待機間隔の間、前記保護ウィンドウを継続する
ようにさらに構成される、請求項１６に記載の設計構造体。
【請求項１９】
前記第１のキャッシュ・メモリは、前記ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の処理の完了に応答して、前記システム全体のコヒーレンス応答の前記第１のキャッシュ・メモリによる受信とは非同期的に前記保護ウィンドウを終了するようにさらに構成される、請求項１８に記載の設計構造体。
【請求項２０】
前記保護ウィンドウは、第１の保護ウィンドウであり、
前記第１のキャッシュ・メモリは、前記ｓｔｏｒｅ−ｃｏｎｄｉｔｉｏｎａｌ要求の受信に応じた前記第１のキャッシュ・メモリによる第２の保護ウィンドウの開始に応答して、前記システム全体のコヒーレンス応答の前記第１のキャッシュ・メモリによる受信とは非同期的に前記第１の保護ウィンドウを終了する
ようにさらに構成される、請求項１８に記載の設計構造体。
【国際調査報告】
2019514106.tif 000023
2019514106.tif 000024
2019514106.tif 000025