(57)【要約】【課題】各ノードにローカルなメモリを有する複数のノード（５８）ならびにすべてのノードを相互接続するタグ・アンド・アドレス・クロスバ・システム（７０）およびデータ・クロスバ・システム（７２）に構成されたマルチプロセッサ・システムでキャッシュ・コヒーレンスを提供する方法および装置。【解決手段】この開示は、複数のノードに分散されたシステム・メモリを使用し、そのノードにローカルなメモリを使用する各ノード内のデータ状態をスヌープする、マルチプロセッサ・コンピュータ・システムに適用可能である。グローバル・スヌープを使用して、データ・タグの直列化の単一の点を提供する。中央クロスバ・コントローラが、すべてのノードの所与のアドレス・ラインのキャッシュ状態タグを同時に検査し、キャッシュ・コヒーレンスを維持し、要求されたデータを供給するためにシステム内の他のノードへの他のデータ要求を生成しながら、データを要求するノードに適当な応答を発行する。このシステムは、各ノードにローカルなメモリを、所与のキャッシュ・ラインについて相互に排他的なローカル・カテゴリおよびリモート・カテゴリに分割することによって、そのようなメモリを利用する。この開示では、各ノードの第３レベル・リモート・キャッシュのサポートを提供する。
2005539282.tif 000002
【特許請求の範囲】
【請求項１】
マルチプロセッサ・システム内のデータの位置および状態に関する情報を保管することができる相互接続する通信パスウェイ（７０から７２）によって結合された複数のノード（５８）を有する前記マルチプロセッサ・システム内でキャッシュ・コヒーレンスを維持する方法であって、各ノードが、少なくとも１つのキャッシュ、前記ノードにローカルなメモリ・デバイス、および少なくとも１つのプロセッサ・デバイスを有し、前記ノード内の前記プロセッサ・デバイスが、前記ローカル・メモリ・デバイスから若しくは前記ローカル・キャッシュから、または、非ローカル・メモリ・デバイスから若しくは非ローカル・キャッシュからの前記相互接続する通信パスウェイを介してデータにアクセスでき、
データの前記状態に関する情報（１０２）を前記相互接続するパスウェイ（７０、７２）に保管することと、
データの要求される部分に関する要求するノードによる要求に応答して、データの前記要求される部分の最新のコピーの位置を判定するために前記保管された情報を検査することと、
データの要求された部分の前記最新のコピーを検索し、前記データを前記要求するノードに向けることと、
前記要求されたデータの前記位置を判定するために前記保管された情報を検査することと、
前記相互接続する通信パスウェイを通らずに前記要求されたデータを前記要求するノードに送るように前記システムに指示することと
を含む方法。
【請求項２】
複数のノード（５８）であって、各ノードが、少なくとも１つのプロセッサ、および前記プロセッサに結合された共用分散システム・メモリの一部を含む、複数のノードと、
前記ノードを接続し、前記ノードの前記メモリに保管されたデータの位置および状態情報を保管する中央ハードウェア・デバイス（７０、７２）を含む通信パスウェイと
を含むマルチプロセッサ・コンピュータ・システム。
【請求項３】
各ノードが、前記通信パスウェイを介する通信なしでアクセス可能なメモリと、他の前記ノードによってリモートにアクセス可能なメモリとを含む、請求項２に記載のマルチプロセッサ・コンピュータ・システム。
【請求項４】
さらに、前記中央ハードウェア・デバイスが、どのノードまたはプロセッサが、各前記ノードのメモリ内に１つまたは複数の識別されたデータのコピーを保管しているかを判定する情報を保管する、請求項２に記載のマルチプロセッサ・コンピュータ・システム。
【請求項５】
前記中央ハードウェア・デバイスが、要求されたデータを、前記ノード内のデータの前記保管された位置および前記状態と比較し、要求されたデータを、要求するノードに向け、前記デバイスがデータの前記位置を保管する追加データに関する要求を他のノードに送る、請求項２に記載のマルチプロセッサ・コンピュータ・システム。
【請求項６】
前記中央ハードウェア・デバイスが、機能的に前記ノードに接続されたディスパッチ・バッファを含み、ターゲット・ノードへのデータの前記通信と同時に、識別されたデータの前記状態に関する情報の要求を他のノードに発行する、請求項５に記載のマルチプロセッサ・コンピュータ・システム。
【請求項７】
前記相互接続する通信パスウェイが、前記ノード内のデータの前記位置および状態を保管する第１パスウェイと、前記ターゲット・ノードによって要求される前記データを通信する第２パスウェイとを含む、請求項５に記載のマルチプロセッサ・コンピュータ・システム。
【請求項８】
マルチプロセッサ・システム内のデータの位置および状態に関する情報を保管することができる相互接続する通信パスウェイ（７０から７２）によって結合された複数のノード（５８）を有する前記マルチプロセッサ・システム内でキャッシュ・コヒーレンスを維持する方法であって、各ノードが、少なくとも１つのキャッシュ、前記ノードにローカルなメモリ・デバイス、および少なくとも１つのプロセッサ・デバイスを有し、前記メモリ・デバイスおよびプロセッサ・デバイスが、完全なサブシステムを形成するために結合され、前記ノード内の前記プロセッサ・デバイスが、前記ローカル・メモリ・デバイスから若しくは前記ローカル・キャッシュから、または、非ローカル・メモリ・デバイスから若しくは非ローカル・キャッシュからの前記相互接続する通信パスウェイを介してデータにアクセスでき、さらに、前記通信パスウェイが、前記ノード内のデータの前記状態および位置を通信する第１パスウェイ（７０）と、前記ノードの間で前記データを通信する第２パスウェイ（７２）とからなり、
データの前記状態（１０２）に関する情報を前記第１パスウェイに保管し、前記第１パスウェイが、データに関する要求するノードによる要求に応答して、データの前記要求される部分の最新のコピーの位置を判定するために前記保管された情報を検査することと、
前記第１パスウェイが、前記データの前記最新のコピーを前記要求するノードに転送するように前記第２パスウェイに指示することと、
前記第２パスウェイが、データの要求された部分の前記最新のコピーを検索し、前記データをターゲット・ノードに向けることと
を含む方法。
【請求項９】
前記第１パスウェイが、データに関する要求するノードによる要求に応答して、データの前記要求される部分の最新のコピーの位置を判定するために前記保管された情報を検査する前記ステップが、
各ノード内のデータの前記状態に関する情報を前記第１通信パスウェイに保管することと、
前記保管された情報を読み取ることと、前記保管されたデータの前記最新のコピーとして定義される所望の状態を判定することとによって、ノードからの前記データに関する要求時に各ノードに保管された要求されたデータの前記状態を検査することと
を含む、請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連特許の相互参照
下記の特許出願は、すべてが本願の譲受人に譲渡されるが、本発明またはその好ましい実施形態によるマルチプロセッサ・コンピュータ・システムの配置および動作の関連する態様が記載されている。
米国仮出願第１０／０４５７９８号、バーグ（T. B. Berg）他、「MethodAnd Apparatus For Increasing Requestor Throughput By Using Data AvailableWithholding」（ＢＥＡ９１９９９０００３ＵＳ１）が、２００２年１月９日に出願された。
米国仮出願第１０／０４５８２１号、バーグ（T. B. Berg）他、「Multi-levelClassification Method For Transaction Address Conflicts For Ensuring EfficientOrdering In A Two-level Snoopy Cache Architecture」（ＢＥＡ９２０００００１８ＵＳ１）が、２００２年１月９日に出願された。
米国仮出願第１０／０４５５６４号、ロイド（S. G. Lloyd）他、「TransactionRedirection Mechanism For Handling Late Specification Changes And Design Errors」（ＢＥＡ９２０００００１９ＵＳ１）が、２００２年１月９日に出願された。
米国仮出願第１０／０４５７９７号、バーグ（T. B. Berg）他、「MethodAnd Apparatus For Multi-path Data Storage And Retrieval」（ＢＥＡ９２０００００２０ＵＳ１）が、２００２年１月９日に出願された。
米国仮出願第１０／０４５９２３号、ダウナー（W. A. Downer）他、「HardwareSupport For Partitioning A Multiprocessor System To Allow Distinct OperatingSystems」（ＢＥＡ９２０００００２１ＵＳ１）が、２００２年１月９日に出願された。
米国仮出願第１０／０４５９２５号、バーグ（T. B. Berg）他、「DistributedAllocation Of System Hardware Resources For Multiprocessor Systems」（ＢＥＡ９２０００００２２ＵＳ１）が、２００２年１月９日に出願された。
米国仮出願第１０／０４５９２６号、ダウナー（W. A. Downer）他、「MasterlessBuilding Block Binding To Partitions」（ＢＥＡ９２００１００３０ＵＳ１）が、２００２年１月９日に出願された。
米国仮出願第１０／０４５７７４号、ダウナー（W. A. Downer）他、「BuildingBlock Removal From Partitions」（ＢＥＡ９２００１００３１ＵＳ１）が、２００２年１月９日に出願された。
米国仮出願第１０／０４５７９６号、ダウナー（W. A. Downer）他、「MasterlessBuilding Block Binding To Partitions Using Identifiers And Indicators」（ＢＥＡ９２００１００４１ＵＳ１）が、２００２年１月９日に出願された。
【０００２】
本発明は、全般的にはコンピュータ・データ・キャッシュ方式に関し、具体的には、不均一メモリ・アクセス（non-uniform memory access、ＮＵＭＡ）またはさまざまなノードにまたがって分散するシステム・メモリを使用するシステム内の別々の独立のノードになるように構成できる複数のデータ・プロセッサが使用される時に、分散共用メモリを有するシステム内のメモリの間のコヒーレンス（coherence）を維持する方法および装置に関する。
【背景技術】
【０００３】
調整された形で同時に動作する複数のプロセッサを使用するコンピュータ・システム設計では、そのようなプロセッサの１グループに物理的に構成されるかこれに関連することができるシステム・メモリが、そのようなシステムの他のプロセッサまたはプロセッサ・グループからアクセス可能である。データ処理システムでのより高い処理能力の需要のゆえに、また、比較的小さいマイクロプロセッサにマルチプロセッシング・システムとしてシステム・コンポーネントを共用して協力して働かせることの望みに起因して、最近数年間に、ノードのローカルなリソースまたはハードウェア・デバイスあるいはその両方を共用する複数のプロセッサがノードに含まれる時に、複数の処理デバイスまたは複数のシステム・ノードからアクセス可能なメモリ・デバイスの間でコヒーレンスを維持することに固有の問題を解決する多数の試みが行われてきた。
【０００４】
コヒーレンス問題は、相互接続されたクロスバ通信チャネルが、複数のメモリ・デバイスを接続するのに使用され、各メモリ・デバイスが、関連するプロセッサまたはプロセッサのローカル・グループと対にされ、マルチプロセッサ・システムを形成するシステムによって例示される。そのようなマルチノード・システムの１ノードとして働くプロセッサまたはプロセッサのグループからのデータ読取要求またはデータ書込要求は、要求元プロセッサに関連するメモリ・デバイス内のアドレスまたはシステム内の別のプロセッサ・グループに関連するメモリ内のアドレスに向けられる場合がある。各プロセッサ・グループには、ローカル・キャッシュも関連する。各プロセッサ・グループが、関連キャッシュを有し、各キャッシュが、複数のレベルを有する場合があるので、システム全体を通じ提示されるデータのコヒーレンスを保証するために注意しなければならない。
【０００５】
コヒーレンシが維持されるようにする方法の１つが、ディレクトリ（またはレジスタ）内の、データが存在する非ローカル・キャッシュをそれぞれがポイントするデータの各項目の状態を追跡することである。データの各コピーの位置を知ることによって、各コピーを更新するか、レジスタ内に、１つまたは複数の位置のデータが古いことを示す記録を行うことができる。そのようなレジスタまたはテーブルは、データをキャッシングしている複数のノードへのポインタを必要とする。このすべてが、システム速度を、したがって性能を低下させるという効果を有する。というのは、構成要素の待ち時間があり、他のシステム・プロセッサにローカルな他のメモリ・サブシステムからのデータ状態インジケータを待ちながら複数のデータ・ラインを同時に処理する、一部のオペレーティング・システムの能力が完全には利用されないからである。
【０００６】
関連技術で見られる特許では、各ノード内のデータの特定の項目の各コピーをポイントする１つのテーブルを維持することに関して観察される問題が、これによって、そのようなテーブル内のディレクトリ項目が複雑になり、その幅が増え、テーブルが相対的に大きく複雑になることである。
【０００７】
リュイック（Luick）他に発行された米国特許第６０８８７６９号に、組み合わされたローカル・テーブルおよびグローバル・テーブルによって指示されるマルチプロセッサ・キャッシュ・コヒーレンスが開示されている。この参考文献では、単一のグローバル・スヌープ方式が定義されているが、単一のディレクトリに頼り、Ｌ１キャッシュおよびＬ２キャッシュによってデータ参照がフィルタリングされ、その結果、そのような参照の一部だけが、中央グローバル制御ユニットに達するようになる。リュイックは、マルチノード・プロセッサ・システム内の複数のノードの間での通信を容易にする単一レベルの中央制御デバイスによるマルチプロセッサシステム内のすべてのプロセッサによるデータ参照のすべてのグローバル・スヌープを教示していない。さらに、リュイックは、特定のノードにローカルなプライベート・ディレクトリに対するデータ参照の検査を開示しているが、単一のグローバル・キャッシュ・コヒーレンス・テーブル内のデータ参照の検査を開示していない。また、リュイックの参考文献には、データ・タグまたは参照を生成する単一プロセッサ内のキャッシュ・コヒーレンスの処理が記載されているが、他の独立のプロセッサ・ノードに対して通信チャネルとしても働く中央制御デバイスを介する通信を必要とせずに、独立型処理システムとして機能することができる、それ自体のメモリおよび入出力機能を含むノード内でデータ・タグを生成する複数プロセッサ・クラスタでの前記のキャッシュ・コヒーレンスの使用は教示されていない。
【０００８】
フー（Ｆｕ）に発行された米国特許第６０６５０７７号では、メモリおよびプロセッサ・デバイスのすべてがフロー制御ユニットに接続され、フロー制御ユニットが、プロセッサとメモリ要素の間のクロスバとして働き、それ自体でサブシステム構成要素を制御する他のクロスバまたは通信システムと通信する、データ・キャッシュを共用する方法が教示されている。フーは、必要な場合に中央制御デバイスまたはクロスバ・システムと独立に働くことができるグループまたはノード内の複数のプロセッサをそれ自体が使用するマルチプロセッサ・システムにまたがってデータを調整するように働くシステムを教示していない。フーの方法は、メモリへのすべての参照が、そのデータをメモリ・ユニットからクロスバとして働くフロー制御デバイスを介して要求元のデータ処理ユニットに転送することによって、満足されることを必要とする。フーは、プロセッサによって要求されたデータを、そのデータを要求する特定のノードにローカルなメモリだけによって満足できるシステムを教示しておらず、コヒーレンスの考慮点を有するデータ要求だけをノードの間で転送する方法を教示していない。
【０００９】
システム全体のさまざまなキャッシュで維持されるデータを追跡する他の方法を開示するもう１つの参考文献が、共用されるキャッシュの間での単一のデータ・プロバイダの共用される介入の方法に関する、アリミリ（Arimilli）他に発行された米国特許第５９４３６８５号にある。フーバー（Hoover）他に発行された米国特許第５６０４８８２号に、キャッシュが、マルチプロセッサ・システムのピア・キャッシュ・ユニットからグローバル・ストレージ制御ユニットへの空通知用であるシステムおよび方法が開示されている。関連する背景技術では、第１ノードに読取要求、第２ノードに書込要求を同時に提供し、読取要求が、さまざまなノードにデータ・タグ付けおよびアドレッシング情報を通信する中央制御または通信デバイスを通過せずに第２ノードに通信されるという結果を得ることによる、マルチノード・システムのあるノードから別のノードへ結果を転送する、中央通信または制御デバイスの使用が教示されていない。
【特許文献１】米国仮出願第１０／０４５７９８号
【特許文献２】米国仮出願第１０／０４５８２１号
【特許文献３】米国仮出願第１０／０４５５６４号
【特許文献４】米国仮出願第１０／０４５７９７号
【特許文献５】米国仮出願第１０／０４５９２３号
【特許文献６】米国仮出願第１０／０４５９２５号
【特許文献７】米国仮出願第１０／０４５９２６号
【特許文献８】米国仮出願第１０／０４５７７４号
【特許文献９】米国仮出願第１０／０４５７９６号
【特許文献１０】米国特許第６０８８７６９号
【特許文献１１】米国特許第６０６５０７７号
【特許文献１２】米国特許第５９４３６８５号
【特許文献１３】米国特許第５６０４８８２号
【発明の開示】
【発明が解決しようとする課題】
【００１０】
したがって、本発明の目的は、中央デバイスが、システム内の保留中のキャッシュ関連データ要求の推移する状態または過渡状態を維持するために必要ではない、中央通信パスウェイとして中央タグ・アンド・アドレス・クロスバを使用する、マルチプロセッサ・システム内で複数のキャッシュに保管されたデータのコヒーレンスを維持するシステムおよび方法を提供することである。本発明のもう１つの目的は、中央制御デバイスを介して処理される必要なしに、要求されたデータを保管するターゲット・ノードから要求の結果がデータ・リクエスタ・ノードに返される、少なくとも２つのノードを有するマルチプロセッサ・システム内の別々のシステム・ノード内の複数のキャッシュに保管されたデータのコヒーレンスを維持するシステムおよび方法を提供することである。
【００１１】
本発明のもう１つの目的は、データ・タグ・アンド・アドレス・クロスバ制御ならびに通信デバイスを使用する、マルチノード・マルチプロセッサ・システム内の別々のノードに配置される複数のキャッシュに保管されたデータのコヒーレンスを維持するシステムおよび方法であって、第１ノードから第２ノードへのタグまたはアドレス情報の通信を制御する制御デバイスが、第１ノードへの読取要求と第２ノードへのデータ書込要求を同時に送り、データ読取要求が、タグ・アンド・アドレス・クロスバを介して伝送されずに、第２ノードに通信されるという結果が得られる、システムおよび方法を提供することである。
【課題を解決するための手段】
【００１２】
本発明は、分散計算ノードを使用するコンピュータ・システムで使用される方法および装置であって、各ノードが、１つまたは複数のマイクロプロセッサからなり、各ノードが、ローカル・システム・メモリおよび制御システムと独立に動作でき、すべてのノードが、相互接続されて、マルチノード・システムとしての動作が可能である、方法およびシステムを提供する。この方法によって、タグ・アンド・アドレス・クロスバ・システムおよびデータ・クロスバ・システムなどの相互接続する通信パスウェイによって結合された複数のノードを有するマルチプロセッサ・システムでのキャッシュ・コヒーレンスの維持が提供される。この方法は、システムに、任意のノードのメモリ・システムからのデータにアクセスする能力も含まれる時に、システム内のデータの位置および状態に関する情報を保管することができるタグ・アンド・アドレス・クロスバ・システムと共に動作する。この方法には、前記相互接続するパスウェイ内のデータの状態に関する情報を保管するステップと、データの要求された部分に関する要求元ノードによる要求に応答して、データの要求された部分の最新のコピーの位置を判定するために前記保管された情報を検査するステップと、データの要求された部分の前記最新のコピーを検索し、前記データを要求元ノードに向けるステップと、要求されたデータの位置を判定するために前記保管された情報を検査するステップと、前記相互接続する通信パスウェイを通らずに、前記要求されたデータを要求元ノードに送るようにシステムに指示するステップとが含まれる。
【００１３】
この装置には、それぞれ少なくとも１つのプロセッサの複数のノードからなるマルチプロセッサ・システムが含まれ、各ノードに、プロセッサによって使用される共用分散メモリ・システムの一部が含まれる。ノードは、通信パスウェイによって相互接続され、通信パスウェイには、システムにまたがって分散メモリ内に保管されるデータの位置および状態を保管する手段が含まれる。好ましい実施形態では、要求されたデータの位置および状態または他の位置および状態情報を、タグ・アンド・アドレス・クロスバ・デバイスに保管することによって、システム全体のデータ・フローの待ち時間が減らされ、このタグ・アンド・アドレス・クロスバ・デバイスによって、すべてのノードのラインごとのキャッシュ・ライン状態が同時に検査される。データを要求するノードまたは他の要求に返される適当な応答が、ノードの間の通信パスウェイとして働いているタグ・アンド・アドレス・クロスバ・システムに保管された情報に基づいて発行される。
【００１４】
本発明の他の特徴および長所は、添付図面と共に、以下の本発明の好ましい実施形態の詳細な説明から明白になる。
【発明を実施するための最良の形態】
【００１５】
概要
本発明は、特に、データ・クロスバ・システムと組み合わせて使用されるタグ・アンド・アドレス・クロスバ・システムを使用し、ノードにまたがる複数のデータ読取要求およびデータ書込要求を処理するデータ処理システムを含む、複数の独立の処理ノードに構成された複数プロセッサ・システムで使用される改善されたデータ処理方法に関する。そのようなシステムで、特定のプロセッサまたはノードが、他のノードに存在するデータのキャッシュ・ライン状況を知ることができず、特定のプロセッサまたはノードは、コヒーレントに動作するためにシステムの他のノードのメモリ内のそのようなデータの最新のコピーにアクセスする必要がある。そのようなマルチノード・システムでは、データ・キャッシュ・ラインが、所与のデータ・キャッシュ・ラインを要求するマイクロプロセッサまたはノードに関して最新であることを保証するために、システム全体のキャッシュ・コヒーレンシの方法を採用しなければならない。開示されるシステムは、一緒に動作することができるシステム内のすべてのノードを通じてキャッシュ・コヒーレンシが維持されるようにするために、システム内のあらゆるノードが所与のキャッシュ・ラインにアクセスすることを許可される前の、そのキャッシュ・ラインへのすべての要求の直列化の階層を提供する。
【００１６】
本明細書に記載の方法および装置では、グローバル・スヌープを使用して、直列化の単一の点（single point of serialization）を提供する。グローバル・スヌープは、本発明では、システム内のすべてのノードがデータに関するすべての要求を中央コントローラに渡し、中央コントローラがシステム内の各ノードと通信し、中央キャッシュ状態タグを維持することを提供することによって達成される。中央コントローラは、ノードを相互接続するデータ・タグ・アンド・アドレス・クロスバ・システムであるが、すべてのノードの各ラインのキャッシュ状態タグを同時に検査し、データを要求しているノードに、適当な応答を発行する。コントローラは、キャッシュ・コヒーレンスを維持し、適当な場合に要求されたデータを供給するために、他のノードへの他の要求も生成する。
【００１７】
好ましい実施形態では、１つまたは複数のマイクロプロセッサの各ノードに関連するシステムのメモリ空間のすべてを、ノードごとのローカル・カテゴリおよびリモート・カテゴリに分割する。各ノードは、そのノードにローカルと定義される、全システム内の総メモリ空間の独自の部分を所有する。すべてのシステム・メモリの合計が、システム内のノードの集合の正確に１つによって完全に所有される。キャッシュ・ラインのローカル・カテゴリおよびリモート・カテゴリは、相互に排他的であり、これによって、システム内の、あるノードにローカルでないすべてのキャッシュ・ラインが、したがって、そのノードに対してリモートと定義される。本発明は、システムの各ノードの第３レベル・リモート・キャッシュのサポートを提供し、各ノードは、コントローラによって指定されるリモート・データ・ラインをキャッシングする。各ノードまたはプロセッサの各グループに関連する各メモリ・ボード自体は、ローカル・メモリに分割され、メモリのある部分が、リモート・キャッシュとして定義される。各ローカル・メモリ・システムの、リモート・キャッシュとして定義される部分は、第３レベル・キャッシュとして動作している。本発明は、要求されたラインが、特定のノードのローカル・メモリまたは別のノードのローカル・メモリをキャッシングしている可能性があるリモート・キャッシュとして定義されているローカル・メモリの部分に配置されている可能性があるかどうかをシステムが前もって知る手段を提供することによって、要求されたデータ・ラインの予測を提供する。
【００１８】
この開示によって、コントローラが、ラインがどのカテゴリで定義されるかを知り、コントローラが、コヒーレンシ検査を完了した時に予測されるデータ・ラインの使用の検証または拒否のいずれかを行うことができるので、システムの各ノードが、データの要求が行われる時にローカル・メモリまたはリモート・キャッシュ・メモリのいずれかにデータを要求できることがもたらされる。予測され、前もって読み取られる対象のデータ・ラインがコヒーレントである場合には、データを要求したノードが、そのラインを使用することができる。ラインがコヒーレントでない場合には、コントローラが、適当なノードに要求を転送し、要求元ノードは、予測されたデータ・ラインを破棄し、その代わりに、コントローラによって行われる要求に起因して返されるラインを使用する。
【００１９】
そうでなければシステム内の別のノードから入手されるキャッシュ・ラインの待ち時間を減らすために、リモート・キャッシュの使用が提供される。開示されるリモート・キャッシュの存在によって、読取専用コピーとしての「ダーティ（dirty）」キャッシュ・ラインのノードでの存在を許容することによって、一部のノード対ノードのデータ伝送の必要をなくす、コヒーレンシ状態が提供される。リモート・キャッシュ内で保持されるそのような「ダーティ」読取専用キャッシュ・ラインの存在によって、キャッシングされたラインを最初のメモリ位置に復元しなければならない時が延期され、したがって、他のキャッシュ状態遷移によってキャッシュ・ラインをその最初のメモリ位置に復元する必要が除去される可能性が高まり、したがって、そうでなければ不要な、帯域幅のシステム消費によって遅延を引き起こすシステム・トランザクションが節約される。そのようなリモート・キャッシュによって、そのような「ダーティ」データ・ラインが追い出され、システム・ノードによってそのデータ・ラインの名目上の所有者が追い出される場合に、コントローラは、システム内の実際のデータ移動なしで、そのデータ・ラインの新しい所有者として異なる共有ノードを再割り当てする。「ダーティ」ラインを追い出すノード以外にそのデータを共用するノードがない場合には、ラインが、そのメモリ位置に復元される。
【００２０】
本発明では、所与の計算ノードについて、所与のノードがメンバであるシステム内の区画に割り振られるすべてのノードの集合メモリとしてシステム・メモリが定義される。したがって、計算ノードの複数の区画が存在するシステムでは、本発明および本明細書に記載のシステムは、システム内の単一の区画内で動作するものとして定義されるノードにまたがるシステム・メモリを操作し、割り振る。
【００２１】
図１に、本発明を使用することができる通常のマルチプロセッサ・システムの例を提示する。図１には、４つの別々の中央制御システム（制御エージェント）６６を使用するマルチプロセッサ・システムが示されており、制御エージェント６６のそれぞれは、制御エージェント６６ごとに４つのIntelブランドのItaniumクラスのマイクロプロセッサ６２のアレイ６４の入出力インターフェースおよびメモリ制御を提供する。多くのアプリケーションで、制御エージェント６６は、特定用途向け集積回路（ＡＳＩＣ）であり、このＡＳＩＣは、各マイクロプロセッサ・バス７６、所与の制御エージェント６６に関連する各メモリ６８、ＰＣＩインターフェース・バス２１、およびＰＣＩ入出力インターフェース８０のインターフェースを、さまざまなＰＣＩデバイスに接続される関連するＰＣＩバス７４と共に提供するために、特定のシステム応用例について設計される。各マイクロプロセッサのバス７６が、バス６１を介して制御エージェント６６に接続される。各ＰＣＩインターフェース・バス２１は、ＰＣＩインターフェース・ブロック・バス２０を介して制御エージェント６６に接続される。
【００２２】
図１には、タグ・アンド・アドレス・クロスバ７０ならびにデータ・クロスバ７２も示されている。図１に示されたブロック図から諒解できるように、クロスバ７０およびクロスバ７２を用いると、アドレッシング情報などを各制御エージェント６６の間で通信できるようになり、メモリ・ラインおよび書込情報を、マルチプロセッサ・システム６０全体にまたがって通信することができる。そのようなメモリ・アドレッシング・システムは、システムにまたがってデータ位置を通信し、データ有効性および必要なデータ位置に関する制御エージェント６６キャッシュ情報の更新を容易にする。
【００２３】
単一のノードまたは「クワッド（quad）」プロセッサ・グループ５８は、マイクロプロセッサ６２、メモリ６８、および制御エージェント６６からなる。本発明に関するマルチプロセッサ・システムでは、クワッド・メモリ６８が、通常は、ローカル・メモリまたはホーム・メモリとしてローカル制御エージェント６６から使用可能なランダム・アクセス・メモリ（ＲＡＭ）である。特定のメモリ６８が、システム６０全体の中の特定の制御エージェント６６に接続されるが、特定の制御エージェント６６に関連する特定のメモリ６８に直接に接続されない別の象限または制御エージェント６６によってアクセスされる時に、リモート・メモリとみなされる。任意の１クワッド５８に存在するマイクロプロセッサ６２は、他の任意のクワッド５８のメモリ６８にアクセスすることができる。ＮＵＭＡシステムでは、通常は、メモリ６８が、ローカル・メモリおよび他のクワッドによるアクセス用のリモート・メモリに分割され、本発明は、データを発行した可能性があるＰＣＩデバイスを有するクワッド５８と異なり、したがってそのクワッド５８からリモートのクワッド５８に配置されたメモリ６８内でデータが使用されるか保管される時にそのデータを追跡する、システム全体の能力を強化する。
【００２４】
図５は、図１に示された同一のマルチプロセッサ・システムの異なる図で、より単純な図で示しており、図を単純にするために図５では１ユニットとして示された他のクワッド構成要素ならびにクロスバ７０および７２に関する１つのクワッド５８が示されている。開示される発明では、各ノードまたはクワッド５８内に配置されるメモリ６８のある部分が、リモート・キャッシュ７９として定義される。メモリ６８のうちでローカル・メモリとして動作する部分は、それに関連する特定のクワッド５８のホーム・メモリとして働き、メモリ６８の一部であるがリモート・キャッシュとして定義されるリモート・キャッシュ７９は、システム内の他のノードのリモート・キャッシュとして動作する。図５からわかるように、リモート・キャッシュ７９は、通常は特定のプロセッサ６２に関連するキャッシュ６３と異なる。キャッシュ６３は、通常は、プロセッサ６２と同一の基板またはチップにあり、しばしばレベル１（Ｌ１）キャッシュおよびレベル２（Ｌ２）キャッシュと呼ばれるものに分割することができる。
【００２５】
タグ・アンド・アドレス・クロスバ７０およびデータ・クロスバ７２を用いると、４つのメモリ制御エージェント６６の間のインターフェースを、共用メモリ共通オペレーティング・システム・エンティティとして相互接続でき、あるいは、システム全体が図１に開示されたシステム内の独立のオペレーティング・システムを可能にするために区分される場合に、共用メモリ・オペレーティング・システム・インスタンスの別々のインスタンスに分離することができる。タグ・アンド・アドレス・クロスバ７０は、共通のオペレーティング・システム・インスタンス（区画）内の異なるクワッド５８上のマイクロプロセッサ・バス７６の間のデータ・アドレス・スヌープ機能を提供することによって、そのようなアーキテクチャをサポートする。スヌープ・アクティビティをサポートする際に、タグ・アンド・アドレス・クロスバ７０によって、要求および応答が、１区画内のクワッド５８のメモリ制御エージェント６６の間でルーティングされる。各区画は、それ自体の別個のクワッド５８のグループを有し、クワッドは、複数の区画の一部になることができない。異なる区画のクワッドは、お互いのメモリ空間に干渉しない。本発明を、下で、システム内のすべてのクワッドが単一のシステム区画内で動作していることを前提として説明する。
【００２６】
タグ・アンド・アドレス・クロスバ７０は、図１でポート１の単一のインスタンス４１として示された、各クロスバ７０バスを介してインバウンド要求を受け取る。タグ・アンド・アドレス・クロスバ７０は、図２から４の偶数タグ・パイプライン５２または奇数タグ・パイプライン５３のいずれかでインバウンド・データ要求を処理し、出力４６で要求元のクワッド５８に応答を送り返し、必要な場合に他のタグ・アンド・アドレス・クロスバ７０出力バス４５、４７、または４８にアウトバウンド・データ要求を送る。タグ・アンド・アドレス・クロスバ７０は、各宛先メモリ制御エージェント６６について、および必要な場合に要求元ノードへの追出しについて、アウトバウンド要求のトランザクション識別子（ＴｒＩＤ）を割り振る。メモリ制御エージェント６６は、適当な時に再割振りのためにそのようなＴｒＩＤを解放する。データに関するメモリ制御エージェント６６要求に対するタグ・アンド・アドレス・クロスバ７０応答は、必ずしもトランザクションを完了させない。要求されたデータのターゲット・アドレスが、要求元のクワッド５８にローカルであり、修正済みとしてラインを保持するリモート・キャッシュがない場合には、タグ・アンド・アドレス・クロスバ７０は、ＧＯを応答し（図６から１３の表に示されているように）、メモリ制御エージェント６６は、そのローカル・メモリ６８からのデータを使用して、データを要求したプロセッサ６２への読取を完了する。
【００２７】
データが、別のクワッドのリモート・キャッシュで修正される場合に、タグ・アンド・アドレス・クロスバ７０は、ＷＡＩＴによって応答し、要求元のメモリ制御エージェント６６は、データ・クロスバ７２が読取データを供給するまで、要求を延期する。タグ・アンド・アドレス・クロスバ７０は、ＷＡＩＴ応答を発行する時に、元々の要求元（ソース）メモリ制御エージェント６６のクワッド識別子（クワッドＩＤ）およびＴｒＩＤを含む、キャッシュ・ラインを所有するターゲット・メモリ制御エージェント６６へのアウトバウンドの読取要求も発行する。この時点で、ターゲットの制御エージェント６６は、そのメモリ・ボードからターゲット・ラインを得、それを、付加されたソース・クワッドＩＤおよびソースＴｒＩＤを有するデータ・クロスバ７２に送る。データ・クロスバ７２は、ソース・クワッドＩＤを使用して、データをソース制御エージェント６６にルーティングし、ソース制御エージェント６６では、データと共に返されるソースＴｒＩＤ値を観察することによって、要求元プロセッサにデータを送達することができる。
【００２８】
タグ・アンド・アドレス・クロスバ７０によって、システム６０内のすべての要求が、図２から４に示された奇数および偶数のタグ・パイプラインに送られるアドレスの２つのストリームに直列化される。図２から４は、図をわかりやすくするが１つの図面を表すために、図２、３、および４として３部分で提示される。各パイプラインは、そのアドレスを外部ＳＲＡＭリモート・キャッシュ・タグ（ＲＣＴ）に送って、グローバル・キャッシュ状態をルック・アップする。各ＳＲＡＭ構成要素によって、それ自体のポートだけの、すなわち、それ自体のメモリ制御エージェント６６のＲＣＴエントリが保管され、４つのＳＲＡＭのすべての読取が、そのインデックスの４つのＲＣＴのすべての読取からなる。要求を行う区画のメンバでないポートからのエントリは、無視される。キャッシュ・ラインは、正確に１つのクワッド５８をホームとする（すなわち、それにローカルまたはそれによって所有される）ので、少なくとも１つのポートが、タグ論理ミス（タグ不一致またはＩの状態）を生じなければならない。パイプライン内の情報の順序は、必ず保存される。
【００２９】
タグ・ロジック５７によって、ＲＣＴエントリを修正しなければならない（状態、タグ、またはＥＣＣフィールドに起因して）と判定される時に、タグ・アンド・アドレス・クロスバ７０は、タグ・コンパレータ・アンド・ディスパッチャ８４および８５に配置される書込バッファを介する外部ＳＲＡＭへの書込をスケジューリングする。書込が書込バッファで保留されている間に新しいアクセスをルック・アップできない場合の衝突を回避するために、書込バッファ・エントリは、スヌープされる。書込バッファでのスヌープ・ヒット（有効アドレス一致）によって、ルックアップのストールが引き起こされ、書込バッファ内容が、ＳＲＡＭにストリーム・アウトされる。タグ・パイプラインを介して進行するルックアップは、最終的に、タグ書込をもたらし、したがって、これもスヌープされなければならない。これらのエントリに対するスヌープ・ヒットも、衝突が解決されるまで（必要な場合の書込バッファのドレーンを含む）、ストールを引き起こす。
【００３０】
タグ・アンド・アドレス・クロスバ７０は、エントリを割り振り、そのシステム状態を維持することによって、直接マッピングされたリモート・キャッシュを管理する。要求によってＲＣＴエントリが要求され、そのエントリが既に使用されている場合に、古いエントリを追い出さなければならず、この動作を、時々、当技術分野でロールアウト（rollout）と称する。タグ・アンド・アドレス・クロスバ７０は、追出しを引き起こした要求を行った制御エージェント６６（インスティゲータ（instigator）とも称する）への無効化または読取無効化を発行することによって、これを行う。タグ・アンド・アドレス・クロスバ７０が行う、このロールアウトは、ターゲット・メモリ制御エージェント６６に送られる最初の（インスティゲータ）要求に加えて、その前に行われる。
【００３１】
システムが、事実上同一のクワッド５８と共に構成される時に、システム全体を、開示される方法を使用して、単一のシステムとしてまたは４つまでの別々に区分されるシステムとして区分することができる。好ましい実施形態では、クワッド５８の最大の総数が、図１で構成されているように４つである。タグ・アンド・アドレス・クロスバ７０のすべてのポートが、エージェント６６とクロスバ７０の間の物理的配線によって、４つの制御エージェント６６の１つに割り当てられる。タグ・アンド・アドレス・クロスバ７０およびデータ・クロスバ７２と制御エージェント６６のそれぞれへの間の相互接続は、バス７１によって達成される。図１では、クワッド１のタグ・アンド・アドレス・クロスバ７０およびデータ・クロスバ７２から制御エージェント６６への接続として示されているが、このバスを、ポートとも称する。クワッド１だけが示されているが、バス７１の構成は、図１のポート０、１、２、および３の接続によって諒解できるように、クワッド５８ごとに複製される。バス７３は、バス７１のうちで、制御エージェント６６をタグ・アンド・アドレス・クロスバ７０に接続する部分である。バス７５は、バス７１のうちで、データ・クロスバ７２を各制御エージェント６６に接続する部分である。図１に示されたシステムのクワッドのそれぞれが、タグ・アンド・アドレス・クロスバ７０ならびにデータ・クロスバ７２を介し、ポートとして定義されたチャネルを介して、システムの残りの部分と通信する。ポート０、１、２、および３のすべてが、図１では、各ポートの入力部分および出力部分を介してクロスバ・システムを制御エージェント６６に相互接続し、各クロスバを各所与のクワッドに相互接続するものとして示されている。図１のクワッド５８のすべてが、図から諒解できるように、図１のポート１に示された相互接続バス７１を使用して、類似する形で接続される。クロスバをクワッド５８のそれぞれに相互接続するポートを含むクロスバ・システムは、本質的に、処理ノードを接続する通信パスウェイである。図２から４に、図１に示されたタグ・アンド・アドレス・クロスバ７０の内部論理を示す。ポート０の入力４０、ポート１の入力４１、ポート２の入力４２、およびポート３の入力４３によって、通信パスウェイのうちで、各クワッドまたはノード内の各制御エージェント６６をタグ・アンド・アドレス・クロスバ７０に接続する部分が示される。同様に、図２から４に、図１に示されたシステム全体のブロック図にも示されたポート０出力４５、ポート１出力４６、ポート２出力４７、およびポート３出力４８が示されている。タグ・アンド・アドレス・クロスバ７０として機能するタグ・ルックアップ・レジスタが、８１（ａ）および８１（ｂ）に示されている。レジスタ８１（ａ）および８１（ｂ）は、図２から４に示されたタグ処理に関する偶数パイプラインおよび奇数パイプラインに関連することを除いて、同一である。二重パイプライン設計は、偶数番号のタグへの処理を偶数パイプラインに、奇数番号のタグを奇数パイプラインに割り当て、その結果、同時処理を行えるようにすることによって、システムの待ち時間を減らすために設けられる。
【００３２】
入力４０、４１、４２、および４３は、それぞれ、バッファを介して導入され、動作上は偶数入力マルチプレクサ５０および奇数入力マルチプレクサ５１に接続され、適当なマルチプレクサが、入力タグとの偶数または奇数の関係に従って選択される。各マルチプレクサ５０および５１は、４つの入力からのタグのフローを直列化するように働く。マルチプレクサ５０および５１の出力は、もう１つのマルチプレクサに送られて、最終的にタグ・ルックアップ・レジスタ８１（ａ）および８１（ｂ）に送られる。偶数パイプライン論理５２および奇数パイプライン論理５３は、提示されるタグおよび要求タイプを評価して、出力応答と、その区画内の定義されたクワッドに接続されたポートに関する要求を生成する。結果の出力エントリは、ディスパッチ・バッファ５４および５５でバッファリングされ、ディスパッチ・バッファ５４および５５は、先入れ先出し（ＦＩＦＯ）タイプのバッファである。ディスパッチ・バッファ５４および５５によって、図示のタグ論理と出力選択論理の間のタイミング変動が分離される。エントリは、出力４５、４６、４７、または４８である、各ポートまたはクワッドへの１つの出力を表す宛先ポートにエントリを送れるようになるまで、先入れ先出しでディスパッチ・バッファ５４および５５に保管される。
【００３３】
タグ・ルックアップ・レジスタ８１（ａ）および８１（ｂ）は、構成において同一であるが、４つまでの同期式スタティック・ランダム・アクセス・メモリ（ＳＳＲＡＭ）チップからなり、合計、４つの５１２ｋビット×１６ビットである。タグ・ルックアップ・レジスタ８１（ａ）は、信号線８２（ａ）を介してタグ・コンパレータ・アンド・ディスパッチャ８４に接続される。図２から４では１つの接続として図示されているが、接続８２（ａ）は、実際には４パスであり、それぞれが、上で説明した各ポートからの入力０、１、２、および３に対応する。レジスタ８１（ｂ）は、接続８２（ｂ）を介して奇数タグ・コンパレータ・アンド・ディスパッチャ８５に接続されるが、機能において本質的に同一である。パス８２（ｂ）は、同様に、４パスからなり、それぞれが１つのポートに対応する。タグ・ルックアップ・レジスタ８１（ａ）および８１（ｂ）は、タグ・アンド・アドレス・クロスバ７０とインターフェースする、システム全体のリモート・キャッシュ・タグのすべてに関するタグ情報および状態情報を保管するのに使用される、外部メモリである。そのような情報は、メモリ制御エージェント６６によって直接にアクセス可能ではなく、したがって、制御エージェント６６内で生成されるすべてのキャッシュ可能なトランザクションで、クロスバ７０にアクセスして、クロスバ７０のリモート・キャッシュ・タグ（ＲＴＣ）にアクセスするかこれを「スヌープ」しなければならない。レジスタ８１（ａ）および８１（ｂ）の物理構成は、図２０でブロック図形式で示されている。図２０では、レジスタ８１（ａ）および８１（ｂ）が、クロスバ７０の内部クロック周波数、本発明では１３３ＭＨｚで動作する同期式スタティック・ランダム・アクセス・メモリ・チップ（ＳＳＲＡＭ）によって実施される。図２０からわかるように、２グループの外部ＳＳＲＡＭがあり、このグループは、図２から４に示された奇数パイプラインおよび偶数パイプラインに分割される。レジスタ８１（ａ）および８１（ｂ）の各グループは、４つの「象限」に分割され、各象限は、クロスバ７０の物理ポートを表す。図１のシステム図に示された好ましい実施形態に合計４つのポートがあるので、各ポートが、前に説明した本発明の物理クワッドに対応することを諒解されたい。したがって、ＲＣＴインターフェースの各ポートは、図２０に示されるように、物理クワッドのリモート・キャッシュに関するＲＣＴを表し、タグ・ルックアップ・レジスタ８１（ａ）および８１（ｂ）の各象限に、タグ情報および状態情報が含まれる。
【００３４】
リモート・キャッシュに移ると、下の表１に示されたリモート・キャッシュ状態を、好ましい実施形態での本発明の動作に従って説明する。タグ・アンド・アドレス・クロスバ７０によって、リモート・アドレスに関してリモート・キャッシュの直接マッピングされるキャッシュ・タグが維持される。このタグ・エントリは、アドレス・タグ部分および状態部分を有する（ＳＥＣ／ＤＥＤ保護用の６つのチェック・ビットもある）。可能なリモート・キャッシュ状態値は、Ｉ、Ｓ、またはＭ（無効、共用、修正済み）である。タグ・アンド・アドレス・クロスバ７０の各ポート（図１に示されたポート０、１、２、および３）は、これらのキャッシュタグの対応する偶数および奇数のタグＳＲＡＭアレイを有する。同一の区画ＩＤを共用するポートについて、対応するキャッシュ・タグ象限によって、集合的なリモート・キャッシュ・タグ状態が形成される。２つの異なる区画の象限（別々に定義された区画で動作する少なくとも１つのノードがある場合）は、ＳＲＡＭアドレス・ピンの物理的共用（これによってアクセスの直列化が強制される）以外には、互いに影響しない。アドレスの集合的タグ状態は、タグ・アドレスがそのアドレスと一致するリクエスタの区画内のそのインデックスのすべての象限の状態である。
【００３５】
上で説明したように、本発明で使用される可能な集合的状態は、無効、共用、ダーティ、および修正済みである。この集合的状態について、
１．無効は、区画内のすべてのクワッドが、そのインデックスでＩ状態またはタグ不一致のいずれかを有することを意味し、
２．共用は、少なくとも１つのクワッドが、そのタグを一致させ、そのインデックスでＳ状態を有する（しかし、どれも一致せず、Ｍ状態を有しない）ことを意味し、
３．ダーティは、正確に１つのクワッドが、Ｍ状態で一致し、少なくとも１つのクワッドが、Ｓ状態で一致することを意味し、
４．修正済みは、正確に１つのクワッドが、Ｍ状態で一致し、他のすべてのクワッドが、無効であることを意味する。
【００３６】
ダーティ状態は、ホーム・クワッド５８のメモリが古く、共用（Ｓ）または修正済み（Ｍ）としてそれを保持するすべてのすべてのクワッド５８が、同一のコピーを有し、プロセッサ６２のどれもが内部キャッシュに修正されたコピーを有しないことを暗示する。タグ・アンド・アドレス・クロスバ７０は、偶数／奇数パイプラインが偶数／奇数メモリ・アドレスに関するインバウンド要求を処理する時に、必ず、偶数／奇数タグ・アレイの４つのタグ・クワッドのすべてへの読取アクセスを実行する。要求および結果のルックアップの処理は、タグの更新を必要とする場合がある。キャッシュ・ラインは、潜在的な更新が保留中である間、キャッシュ・ラインへの後続アクセスから保護される。メモリ・マップ入出力（ＭＭＩＯ）アドレスおよび非メモリ・ターゲットへの要求は、ルックアップを必要としないが、それでもパイプライン・ステージを消費する。
【００３７】
タグ・アンド・アドレス・クロスバ７０は、クレジット／リリース機構（credit/releasemechanism）を使用して、インバウンド要求をスロットリング（throttle）する。制御エージェント６６は、「クレジット」個数の要求を送信できると仮定し、クレジットが消費される時に、それ以上の要求を許可しない。クロスバ７０は、クレジット・リリースを用いてクレジットを返し、これによって、クレジットを再利用できるようになる。
【００３８】
タグ・アンド・アドレス・クロスバ７０の書込バッファまたはタグ・パイプラインでのアドレス衝突によって、衝突が解決されるまでタグ・パイプライン内の進行がストールする可能性がある。ＴｒＩＤがないと、タグ・ロジックからディスパッチ・バッファ５４へのパイプライン・エントリ（トークン）の移動が遅延される可能性がある。ディスパッチ・バッファ５４または５５が満杯の場合に、新しいエントリをバッファに入力することはできない。また、１クロックの間パイプラインをストールさせるある種のエラー（ＳＥＣ訂正など）がある。これらの理由から、パイプライン・エントリを、入力でディスパッチ・バッファ５４または５５に遅延させ、パイプラインをブロックさせることができる。不十分なＴｒＩＤの場合に、エントリを、プログラム可能な時間の期間だけ遅延させて、ＴｒＩＤが使用可能になるのを待つ。遅延期間が満了する場合に、そのエントリを再試行する。この場合に、トークンは、再試行に変換され、リクエスタに対する応答としてディスパッチ・バッファ５４または５５に置かれる（エラーは、同様の形で処理され、最初のトークンがエラー・トークンに置換される）。再試行またはエラーへの変換によって、エントリを、ディスパッチ・バッファ５４または５５に置くことができるようになり、その後、パイプラインが前進することができる。そのような状況によって、スケジューリングされた可能性がある外部タグ更新または割り振られている可能性があるＴｒＩＤが取り消される。エントリが、ディスパッチ・バッファ５４または５５への入力で遅延される場合に、クロスバ７０にリターンする時に、外部タグ読取動作をキューに入れる必要がある。これらのキューイングされた読取動作（ストール・コレクタ（stall collector）と称する）を、ディスパッチ・バッファ５４または５５がブロックされなくなる時に、正しい順序でパイプラインに挿入しなければならない。
【００３９】
インバウンド要求は、クレジット／リリース機構だけによってスロットリングされる。インバウンド応答は、定義されない。アウトバウンド要求は、ターゲット制御エージェント６６のＴｒＩＤの可用性（タグ・アンド・アドレス・クロスバ７０のＴｒＩＤ割振りロジックで判定される）によってスロットリングされる。アウトバウンド応答は、スロットリング機構を有しておらず、制御エージェント６６は、すべてのクロスバ７０応答を受け入れる。ディスパッチ・バッファ５４または５５内のエントリのすべてのアウトバウンド応答またはアウトバウンド要求は、そのめいめいの出力に同時に参照されなければならない。したがって、ディスパッチ・バッファ５４または５５は、衝突する場合に、出力４５、４６、４７、および４８の可用性について競合しなければならない。さらに、主力ポートへの出力応答を、ロールアウト（追出し）要求によって付随させることができ、この両方を、まずロールアウトから、出力ポートに送らなければならない。
【００４０】
タグ・アンド・アドレス・クロスバ７０は、制御エージェント６６から要求を受け取り、各クワッドのリモート・キャッシュ・タグのキャッシュ・ラインの状態に基づいて反応する。クワッド・リモート・キャッシュ（ＲＣ）状態の集合を、グローバル・リモート・キャッシュ（ＲＣ）状態と称する。このテーブルでは、正当な状態の組み合わせが、前に説明した３つの文字Ｉ、Ｓ、およびＭとして集約される。第２列は、リクエスタのＲＣタグの状態であり、第３列は、所有者を除く他のクワッドの状態であり、第４列は、所有するクワッドの状態である。グローバルＲＣ状態は、表１の列１で与えられる状態名を有する。ローカル要求は、必ず不一致であるか、Ｉ状態を有しなければならない。ローカル・アドレスがリモート・キャッシュでキャッシングされないので、ローカル要求は、リクエスタが状態Ｉであることを暗示することを諒解されたい。リクエスタ状態がＩである行では、ラインが、そのクワッドのリモート・キャッシュに存在しない。Ｉ状態は、タグ一致が発生せず、状態がＩであったか、ポートが、要求を行う区画のメンバでないことを意味する。４つのダーティ状態のすべてが、Ｍ状態でラインを保持するクワッド内のプロセッサが、そのオンチップ（Ｌ１／Ｌ２）キャッシュに未修正のデータを有することを暗示する。
【００４１】
【表１】
2005539282.tif 000003
【００４２】
リクエスタが所有者でもある時には、表１で、リクエスタに値Ｍが割り当てられ、所有者には状態Ｉとして示される。これは、図１に示されている。
【００４３】
図６から９に、キャッシングされる読取および読取無効化を示す。図６から９は、図を明瞭にするが１つの図を表すために、図６、７、８、および９として４つの部分で提示されている。図１０および１１に、キャッシングされない読取を示す。図１０および１１は、図を明瞭にするが１つの図を表すために、図１０および１１として２つの部分で提示されている。図１２および１３に、キャッシングされない書込を示す。図１２および１３は、図を明瞭にするが１つの図を表すために、図１２および１３として２つの部分で提示されている。図１４に、ＭＭＩＯ、ＣＳＲ、および非メモリ・ターゲットへの読み取りおよび書き込みを示す。図１５および１６に、ロールアウト要求を示す。図１５および１６は、図を明瞭にするが１つの図を表すために、図１５および１６として２つの部分で提示されている。クロスバ７０（図１のバス７３として１つのインスタンスで図示）の入力バスおよび出力バスのすべてについて使用されるフィールドのニーモニックのすべてを、好ましい実施形態の動作の例示でニーモニックを使用する図のレビューで参照として使用する場合がある。図１７から１９は、図を明瞭にするが１つの図を表すために、図１７、１８、および１９として３つの部分で提示されている。これらの図面を参照して、好ましい実施形態の動作を説明する。
【００４４】
図６から１９に、好ましい実施形態の動作を示し、これらの図を使用して、本明細書で開示される方法およびシステムの実際の動作を理解することができる。図６から９を検討すると、図示の表には、本発明の実施形態を完全に説明する、キャッシングされる読取および読取無効化のさまざまな状態が記載されている。図６から９を使用して、４つのポートのいずれかによって開始されるすべてのデータ要求を示すことができ、図６から９を、例として使用して、所与の入力に関する結果およびすべての他のポートへの応答を定義することができる。図６から９の列１０１に、さまざまなタイプのバス要求が含まれる。列１０１には、ローカル・アドレスへのキャッシングされる読取の要求（ＬＣＲ）、リモート・アドレスへのキャッシングされる読取の要求（ＲＣＲ）、ローカル・アドレスへのキャッシングされる読取無効化の要求（ＬＣＲＩ）、およびリモート・アドレスへのキャッシングされる読取無効化の要求（ＲＣＲＩ）が含まれる。例示的な例を使用し、列１０１のバス７３要求がポート１で開始され、これによって、図１に示された入力４１に関すると仮定して、本発明の動作を説明する。
【００４５】
現在の例において、列１０１は、図２から４の入力４１を表す。その場合に、列１０２のグローバル・リモート・キャッシュ状態ごとに、その要求に対するタグ・アンド・アドレス・クロスバ７０応答が、列１０３で与えられ、その応答は、要求を行った出力ポートに向けられる。現在の例では、入力４１の要求が、その要求に対する応答を処理する出力４６に対応する。同様に、列１０４、１０５、および１０６は、ホーム、共用者、または所有者に関するので、図２から４の出力４５、４６、４７、または４８を指す。現在の例では、列１０４のホームへの要求が、４６以外の他の出力の１つである。列１０５の共用者への要求は、必ず、列１０４のホーム・クワッドへの要求を排除する。列１０４で指定されるホームは、アドレスがそれにローカルであるクワッドであるか、アドレスが特定のクワッドにローカルであることを意味する。列１０６は、問題のデータの所有者と定義されるクワッドへのこの例の特定の出力を示す。クワッド１から受け取られる要求について使用される例では、列１０６が、定義により、ポート１に関連する出力４６以外の他の出力の１つに対する。列１０７は、次のグローバル・リモート・キャッシング状態を定義し、列１０８は、リモート・キャッシュの割振りまたはロールアウトあるいはその両方を、列１０１の特定のバス要求に関連付けなければならないかどうかを定義する。列１０８のＹＥＳは、再配置が必要であることを意味し、これは、さらに、既存ラインのロールアウトが必要であることを意味する場合がある。
【００４６】
図１０および１１は、図６から９に示されたものなどに類似する縦列定義を有する、キャッシングされない読取要求を示す表である。図１０および１１によって、ローカルなキャッシングされない読取およびリモートのキャッシングされない読取に関する要求ごとの定義されたクワッドに関するさまざまな状態および応答が与えられる。図１２から１３は、やはり類似する列見出しを有するが、クロスバ７０へのローカルなキャッシングされない部分的書込要求またはリモートのキャッシングされない部分書き込み要求、あるいはローカルなキャッシングされない完全なライン書込要求またはリモートのキャッシングされない完全なライン書込の要求に関する定義された解決を与える。好ましい実施形態では、完全なキャッシュ・ラインが、３２バイトとして定義され、これが、この実施形態で使用されるコヒーレンシの単位である。部分的ラインは、３２バイト未満を用い、したがって部分的なラインとみなされる、システム内で行われる要求である。
【００４７】
図１４は、その定義に図１７から１９に含まれるニーモニック記述が含まれる、メモリ・マップ入出力位置、ＣＳＲ、および非メモリ・ターゲットへの読取および書込を示す表である。図１５および１６は、キャッシュ・ラインの追出しを達成するためにホーム・ノード、共用者ノード、および所有者ノードに送られなければならない要求を定義する表である。図６から９の列１０８に、（インスティゲートする）要求についてＹＥＳが示され、リモート・キャッシュに有効な先在するエントリがある場合に、（インスティゲートする）要求のキャッシングのための余地を作るために、そのエントリを追い出さなければならない。したがって、図１５および１６によって、異なるメモリ位置（同一のキャッシュ・エントリ）に関連するアクティビティが定義され、これは、（インスティゲートする）要求の副作用として行われる。図１７から１９に、これらの図で使用された参照ニーモニックが含まれる。
【００４８】
図６から１６では、ｎ＊ＲＣＩへの言及を時々行う。ｎは、特定の動作に必要な動作または要求の数と等しい整数である。本発明の動作でのｎ＊ＲＣＩの使用を示す、図６から９を使用する例を、提供する。
【００４９】
図８の行１０９を例にとると、ローカル・アドレスへのキャッシングされる読取無効化の要求で、列１０２によって、共用ミスの例が提供される。列１０３には、項目ＧＯ  Ｉｎｖ＝ｎが示され、列１０４は、空白であり、列１０５は、ｎ＊ＲＣＩである、共用者に対する要求の定義が示されている。この例では、プロセッサが、ローカル・アドレスに関する要求を行っており、そのデータを修正することが意図されている。コヒーレンシを保つために、このプロセッサは、データを要求し、システム内のそのデータのすべての他のコピーが無効化されることを求める。というのは、このプロセッサが、そのデータを「所有」することを計画しているからである。しかし、共用ミスを使用するこの例では、リクエスタのローカル・メモリ内のコピーのほかに、システム内に、キャッシングされた読取専用コピーを有する他のクワッドがある。このゆえに、プロセッサは、唯一の他のコピーが共用コピーなので、そのデータについて直接にメモリを調べることができる。したがって、メモリ内にあるものは、定義により古くない。この例では、プロセッサが、列１０３で提案されるようにデータを読み取り、ここで、リクエスタに対する応答は、ＧＯと定義され、これは、読み取られると予測されたデータが有効なので、プロセッサが、データをルック・アップさせる処理を継続できることと、プロセッサが、データを使用するためにクリアであることを意味する。
【００５０】
本発明で定義される動作を継続する際に、以前にそのデータを共用していた残りのクワッドに、この例の対象のデータがもはや有効でなく、これらのクワッドがその有効なコピーをもはや有しないことを知らせなければならない。したがって、本発明は、そのようなメモリが、動作のゆえに古いものとして定義されることを提供する。列１０５に、ＲＣＩ（リモート・キャッシュ・ライン無効化を意味する）のｎ個のコピーが、他の共用者に送られることが示されている。以前に前記データを共用した各クワッドは（合計ｎ個のクワッド）、操作されるキャッシュ・ラインが無効であることを知らされる。この例では、行１０９、列１０３に、システムで期待される無効化肯定応答の数が示されている（ｉｎｖ＝ｎ）。したがって、ｉｎｖ＝ｎは、ｎ＊ＲＣＩと一致する。この例で定義されるシステム動作は、データが受け取られ、ｎ個の無効化肯定応答が返されるまで、完了しない。この例では、１つの要求元クワッドだけがあるので、要求元クワッドへの１つの応答だけがあることを諒解されたい。行１０９には、所有者として定義されるクワッドが１つだけあるので、１つのホーム・クワッドだけがあるホーム・クワッドへの１つの要求ならびに所有者クワッドへの１つの要求だけが存在し得る。列１０５で、この例および本明細書で開示される好ましい実施形態で、この実施形態で合計４つのクワッドが設けられるので、３つまでの共用するクワッドがあり得ることを諒解されたい。
【００５１】
例示的な例で、図６から１６によって、本明細書で定義される装置および方法の動作を正確に定義する、完全な動作方式およびプロトコルが提供されることを諒解されたい。図１７から１９のＱ／Ａ列に、ニーモニックが要求（Ｑ＝要求）または応答（Ａ＝回答）のどちらに関連するかが示されている。
【００５２】
本発明は、中央制御デバイスまたはシステムを使用してマイクロプロセッサのグループの間で通信するすべてのマルチプロセッサ・システムで使用することができる。本発明は、システムにまたがる不均一メモリ・アクセスまたは分散メモリを使用してプロセッサの複数のグループを付加するデータ・クロスバ・システムを伴うタグ・アンド・アドレス・クロスバ・システムと共に使用される時に最も有益である。図示され、詳細に説明されたシステム内のデータ・アンド・タグ・クロスバ・コントローラ内でのデータ状態の追跡を介してマルチノード・システム内でキャッシュ・コヒーレンシを維持できるようにする好ましい実施形態のシステムおよび方法は、本発明の目的を完全に達成することができる。しかし、説明された実施形態が、単に本発明の例であり、したがって、本発明によって広義に企図される主題の代表であることを理解されたい。
【００５３】
たとえば、上では、１６個のマイクロプロセッサを使用し、４つのプロセッサの４つの別々のグループのクワッドからなる特定のシステムであって、各クワッドが、中央コントローラ・クロスバとインターフェースするメモリ制御エージェントを有し、クワッドに割り当てられたメモリ・ボードを有し、本発明の好ましい実施形態がそれのために他のクワッド内のコントローラなどの他のサブシステムを介して通信するように機能する、特定のシステムに関して、好ましい実施形態を説明した。それでも、本発明を、「ノード」にグループ化されるか否かにかかわらず、複数のプロセッサを有するシステムであって、プロセッサのグループ化が、マルチノード・システム内でのデータ読取コマンド、データ書込コマンド、またはトランザクション要求の処理でコヒーレンスまたは調整を必要とする時に、別々のメモリ制御エージェントが、１つまたは複数のプロセッサの各別々のグループを制御するために割り当てられる、システムと共に使用することができる。
【００５４】
本発明は、必ずしも開示された特定の個数のプロセッサまたはプロセッサのアレイに制限されず、本発明を実施するためにノードの間にタグ・アンド・アドレス・システムおよびデータ通信システムを有する相互接続されたメモリ制御システムを使用する類似するシステム設計で、本発明を使用することができる。したがって、本発明の範囲は、当業者に明白になる他の実施形態を完全に包含する。
【図面の簡単な説明】
【００５５】
【図１】本発明と共に動作するデータ・クロスバ・システムとあいまってタグ・アンド・アドレス・クロスバ・システムを使用する通常のマルチプロセッサ・システムのブロック図であり、発行される特許の第１ページに印刷されることが提案される図である。
【図２】本発明が使用されるマルチプロセッサ・システムの各象限またはノードを接続するタグ・アンド・アドレス・クロスバ・システムを示すブロック図である。
【図３】本発明が使用されるマルチプロセッサ・システムの各象限またはノードを接続するタグ・アンド・アドレス・クロスバ・システムを示すブロック図である。
【図４】本発明が使用されるマルチプロセッサ・システムの各象限またはノードを接続するタグ・アンド・アドレス・クロスバ・システムを示すブロック図である。
【図５】本発明での、１グループの機能構成要素と、キャッシュおよびリモート・キャッシュ・メモリの関係を示す、１つのクワッド・プロセッサ・グループのブロック図である。
【図６】好ましい実施形態で使用されるキャッシングされる読取および読取無効化のさまざまな状態を示す表である。
【図７】好ましい実施形態で使用されるキャッシングされる読取および読取無効化のさまざまな状態を示す表である。
【図８】好ましい実施形態で使用されるキャッシングされる読取および読取無効化のさまざまな状態を示す表である。
【図９】好ましい実施形態で使用されるキャッシングされる読取および読取無効化のさまざまな状態を示す表である。
【図１０】好ましい実施形態で使用される、キャッシングされない読取要求を示す表である。
【図１１】好ましい実施形態で使用される、キャッシングされない読取要求を示す表である。
【図１２】好ましい実施形態で使用される、キャッシングされない書込要求を示す表である。
【図１３】好ましい実施形態で使用される、キャッシングされない書込要求を示す表である。
【図１４】好ましい実施形態で使用されるシステム内の、メモリ・マップ入出力、ＣＳＲ、および非メモリ・ターゲットをへの読取および書込を示す表である。
【図１５】好ましい実施形態で使用されるシステムのロールアウト要求を示す表である。
【図１６】好ましい実施形態で使用されるシステムのロールアウト要求を示す表である。
【図１７】好ましい実施形態で使用されるタグ・アンド・アドレス・クロスバ装置の入出力バスのすべてに使用されるフィールドのニーモニックおよび図６から１６で使用される符号を示す表である。
【図１８】好ましい実施形態で使用されるタグ・アンド・アドレス・クロスバ装置の入出力バスのすべてに使用されるフィールドのニーモニックおよび図６から１６で使用される符号を示す表である。
【図１９】好ましい実施形態で使用されるタグ・アンド・アドレス・クロスバ装置の入出力バスのすべてに使用されるフィールドのニーモニックおよび図６から１６で使用される符号を示す表である。
【図２０】リモート・キャッシュ・タグのマッピングを示すブロック図である。
【図１】
2005539282.tif 000004
【図２】
2005539282.tif 000005
【図３】
2005539282.tif 000006
【図４】
2005539282.tif 000007
【図５】
2005539282.tif 000008
【図６】
2005539282.tif 000009
【図７】
2005539282.tif 000010
【図８】
2005539282.tif 000011
【図９】
2005539282.tif 000012
【図１０】
2005539282.tif 000013
【図１１】
2005539282.tif 000014
【図１２】
2005539282.tif 000015
【図１３】
2005539282.tif 000016
【図１４】
2005539282.tif 000017
【図１５】
2005539282.tif 000018
【図１６】
2005539282.tif 000019
【図１７】
2005539282.tif 000020
【図１８】
2005539282.tif 000021
【図１９】
2005539282.tif 000022
【図２０】
2005539282.tif 000023
【手続補正書】
【提出日】平成15年11月23日(2003.11.23)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１
【補正方法】変更
【補正の内容】
【請求項１】
第１相互接続通信パスウェイ（７０）および第２相互接続通信パスウェイ（７２）によって結合された複数のノードを有するマルチプロセッサ・システム内でキャッシュ・コヒーレンスを維持する方法であって、第１相互接続通信パスウェイが、前記システム内のデータの位置および状態に関する情報を保管することができ、各ノードが、少なくとも１つのキャッシュ、前記ノードにローカルなメモリ・デバイス、および少なくとも１つのプロセッサ・デバイスを有し、前記ノード内の前記プロセッサ・デバイスが、前記ローカル・メモリ・デバイスから若しくは前記ローカル・キャッシュから、または、非ローカル・メモリ・デバイスから若しくは非ローカル・キャッシュからの前記相互接続通信パスウェイを介してデータにアクセスでき、
データの前記状態に関する情報を前記第１相互接続パスウェイに保管することと、
前記第１相互接続通信パスウェイによって、データの要求される部分に関する要求するノードによる要求に応答して、データの前記要求される部分の最新のコピーの位置を判定するために前記保管された情報を検査することと、
前記第１相互接続通信パスウェイによって、データの要求された部分の前記最新のコピーを検索し、前記データを前記要求するノードに向けることと、
前記第１相互接続通信パスウェイによって、前記要求されたデータの前記位置を判定するために前記保管された情報を検査することと、
前記相互接続する通信パスウェイを通らずに、前記第２相互接続通信パスウェイを介して、前記要求されたデータを前記要求するノードに送るように前記システムに指示することと
を含む方法。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項２
【補正方法】変更
【補正の内容】
【請求項２】
複数のノードであって、各ノードが、少なくとも１つのプロセッサ、および前記プロセッサに結合された共用分散システム・メモリの一部を含む、複数のノードと、
前記ノードを接続し、前記ノードの前記メモリに保管されたデータの位置および状態情報を保管する中央ハードウェア・デバイスを含む、第１通信パスウェイ（７０）と、
前記ノードがこれを介してデータを互いに転送する第２通信パスウェイ（７２）と
を含むマルチプロセッサ・コンピュータ・システム。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項３
【補正方法】変更
【補正の内容】
【請求項３】
各ノードが、前記通信第１パスウェイを介する通信なしでアクセス可能なメモリと、他の前記ノードによってリモートにアクセス可能なメモリとを含む、請求項２に記載のマルチプロセッサ・コンピュータ・システム。
【手続補正４】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項７
【補正方法】変更
【補正の内容】
【請求項７】
前記第１相互接続通信パスウェイが、前記ノード内のデータの前記位置および状態を保管する第１パスウェイとし、前記第２相互接続通信パスウェイが、前記ターゲット・ノードによって要求される前記データを通信する第２パスウェイとを含む通信する、請求項５に記載のマルチプロセッサ・コンピュータ・システム。
【手続補正５】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項８
【補正方法】変更
【補正の内容】
【請求項８】
第１相互接続通信パスウェイ（７０）および第２相互接続通信パスウェイ（７２）によって結合された複数のノードを有するマルチプロセッサ・システム内でキャッシュ・コヒーレンスを維持する方法であって、前記第１相互通信パスウェイが、前記マルチプロセッサ・システム内のデータの位置および状態に関する情報を保管することができ、各ノードが、少なくとも１つのキャッシュ、前記ノードにローカルなメモリ・デバイス、および少なくとも１つのプロセッサ・デバイスを有し、前記メモリ・デバイスおよびプロセッサ・デバイスが、完全なサブシステムを形成するために結合され、前記ノード内の前記プロセッサ・デバイスが、前記ローカル・メモリ・デバイスから若しくは前記ローカル・キャッシュから、または、非ローカル・メモリ・デバイスから若しくは非ローカル・キャッシュからの前記相互接続する通信パスウェイを介してデータにアクセスでき、さらに、前記通信パスウェイが、前記ノード内のデータの前記状態および位置を通信する第１パスウェイと、前記ノードの間で前記データを通信する第２パスウェイとからなり、
前記第１パスウェイによって、データの前記状態に関する情報を前記第１パスウェイに保管し、
前記第１パスウェイが、データに関する要求するノードによる要求に応答して、データの前記要求される部分の最新のコピーの位置を判定するために前記保管された情報を検査することと、
前記第１パスウェイが、前記第２パスウェイを介して前記データの前記最新のコピーを前記要求するノードに転送するように前記第２パスウェイに指示することと、
前記第２パスウェイが、データの要求された部分の前記最新のコピーを検索し、前記データをターゲット・ノードに向けることと
を含む方法。
【国際調査報告】
2005539282.tif 000024