(57)【要約】【課題】部分的且つ非コヒーレントなメモリアクセスの観点からキャッシュ・コヒーレンス・リンクに基づく相互接続でメモリ順序付けを保つ方法及び装置を提供する。【解決手段】例えば部分書込のような部分的なメモリアクセスに関連するコンフリクトが検出される場合に、ライトバックフェーズがコンフリクトフェーズで挿入され、ホームエージェントへ部分的データをライトバックする。コンフリクトフェーズでライトバックフェーズを挿入するメッセージの例には、コンフリクトを認めて、コンフリクトフェーズの開始時にライトバックマーカーを、コンフリクトフェーズ前にライトバックマーカーメッセージを、コンフリクトフェーズ内でライトバックマーカーメッセージを、コンフリクトフェーズ後にライトバックマーカーメッセージ及びポスタブル・メッセージを提供するAcknowledge  Conflict  Write-backメッセージがある。【選択図】図５ａ
2010027048.tif 000002
【特許請求の範囲】
【請求項１】
部分的な書込を実行して部分的データを更新する第1のロジックと、
前記部分的データに関連するコンフリクトメッセージの受信に応答してコンフリクトフェーズでライトバックフェーズを開始し、該ライトバックフェーズは、前記部分的データを該部分的データに関連するホームエージェントへ供給する第２のロジックと、
前記第２のロジックへ結合され、前記ライトバックフェーズの間前記ホームエージェントへ前記部分的データを供給する第３のロジックと
を有する装置。
【請求項２】
前記第１のロジック及び前記第２のロジックは、相互接続アーキテクチャ階層化スタックの物理レイヤに関連するプロトコルロジックであり、
前記第３のロジックは、前記相互接続アーキテクチャ階層化スタックの物理レイヤに関連する物理ロジックを有する、請求項１記載の装置。
【請求項３】
コンフリクトフェーズでライトバックフェーズを開始する前記第２のロジックは、確認応答コンフリクト及びライトバックメッセージを生成する前記第２のロジックを有する、請求項１記載の装置。
【請求項４】
前記部分的データに関連するコンフリクトメッセージの受信に応答して確認応答コンフリクト及びライトバックメッセージを生成する前記第２のロジックは、前記ホームエージェントからのフォース確認応答コンフリクトメッセージの受信に応答して前記確認応答コンフリクト及びライトバックメッセージを生成する前記第２のロジックを有する、請求項３記載の装置。
【請求項５】
前記確認応答コンフリクト及びライトバックメッセージは、Acknowledge  Conflict  Write-back  Invalid（AckCnfltWbI）メッセージを有し、
前記ホームエージェントからの前記フォース確認応答コンフリクトメッセージは、Grant_Force  Acknowledge  Conflict（Gnt_FrcAckCnflt）メッセージを有する、請求項４記載の装置。
【請求項６】
前記部分的データに関連するコンフリクトメッセージの受信に応答してコンフリクトフェーズでライトバックフェーズを開始する前記第２のロジックは、前記部分的データに関連するコンフリクトメッセージの受信に応答してライトバックマーカーメッセージ及びライトバックデータメッセージを生成する前記第２のロジックを有する、請求項１記載の装置。
【請求項７】
前記ライトバックマーカーメッセージは、Write-back  Modified  to  Invalid（WbMtoI）マーカーメッセージを有し、
ライトバックデータメッセージは、Write-Back  Invalid  Data  Partial（WbIDataPartial）メッセージを有し、
前記コンフリクトメッセージは、Grant_Force  Acknowledge  Conflict（Gnt_FrcAckCnflt）メッセージを有する、請求項６記載の装置。
【請求項８】
前記コンフリクトメッセージは、Grant_Force  Acknowledge  Conflict（Gnt_FrcAckCnflt）メッセージと、Acknowledge  Conflict（AckCnflt）メッセージと、Complete_Forward  Code（Cmp_FwdCode）メッセージとを有するメッセージのグループから選択される、請求項７記載の装置。
【請求項９】
前記部分的データに関連するコンフリクトメッセージの受信に応答してコンフリクトフェーズでライトバックフェーズを開始する前記第２のロジックは、前記部分的データに関連するコンフリクトメッセージの受信に応答してポスタブル・ライトバックメッセージを生成する前記第２のロジックを有する、請求項１記載の装置。
【請求項１０】
前記ポスタブル・ライトバックメッセージは、Response  Invalid  Write-back  Postable（RspIWbPost）メッセージと、Write-back  Invalid  Data  Partial  Postable（WbIDataPost）メッセージと、Write-back  Postable（WbPost）メッセージとを有するグループから選択されるメッセージを有し、
前記コンフリクトメッセージは、Grant_Force  Acknowledge  Conflict（Gnt_FrcAckCnflt）メッセージと、Acknowledge  Conflict（AckCnflt）メッセージと、Complete_Forward  Code（Cmp_FwdCode）メッセージとを有するメッセージのグループから選択される、請求項９記載の装置。
【請求項１１】
キャッシュラインを有するキャッシュメモリと、
前記キャッシュメモリへ結合され、前記キャッシュラインへの部分的データの部分書込を実行する第１のロジックと、
前記部分的データに関連するホームノードからのコンフリクトメッセージを受信する第２のロジックと、
前記第２のロジックへ結合され、前記コンフリクトメッセージの確認応答と、前記部分的データが、前記第１のロジックが当該部分的データの前記部分書込を実行し且つ前記第２のロジックが前記コンフリクトメッセージを受信したことに応答して、データメッセージにおいて送信されるべきこととを前記ホームノードへ示す結合メッセージを生成する第３のロジックと、
前記第３のロジックへ結合され、前記結合メッセージを前記ホームノードへ送信する第４のロジックと
を有する装置。
【請求項１２】
前記結合データは、Acknowledge  Conflict  Write-back（AckCnfltWb）メッセージを有する、請求項１１記載の装置。
【請求項１３】
前記コンフリクトメッセージは、Force  Acknowledge  Conflict（FrcAckCnflt）メッセージを有する、請求項１２記載の装置。
【請求項１４】
前記第３のロジックは、次のトランザクションを開始する前に前記AckCnfltWbメッセージ及び前記データメッセージに関連する前記ホームノードからの完了メッセージを待つ、請求項１２記載の装置。
【請求項１５】
前記完了メッセージは、Complete_Forward  Code（Cmp_FwdCode）メッセージを有する、請求項１４記載の装置。
【請求項１６】
前記第２のロジック及び前記第４のロジックは、相互接続階層化スタックの物理レイヤロジックに関連し、
前記第３のロジックは、前記相互接続階層化スタックのプロトコルレイヤロジックに関連する、請求項１１記載の装置。
【請求項１７】
部分的データに関連するホームノードからのコンフリクトメッセージの受信と、当該ピアノードが前記部分的データに対して部分書込を実行することとに応答してコンフリクトフェーズでライトバックフェーズを開始するライトバックメッセージを生成する第１のロジックを有するピアノードを有し、
前記ホームノードは、ポイント・ツー・ポイントリンクを介して前記ピアノードへ結合され、
前記ホームノードは、前記ライトバックフェーズの間の前記ピアノードからの前記部分的データの受信に応答して前記コンフリクトフェーズで前記ライトバックフェーズに係る完了メッセージを生成する第２のロジックを有する、システム。
【請求項１８】
前記ライトバックメッセージは、Acknowledge  Conflict  Write-backメッセージと、Write-back  to  Invalidメッセージと、Response  Write-back  Postableメッセージと、Write-back  Data  Partial  Postableメッセージと、Write-back  Postableメッセージとを有するグループから選択される、請求項１７記載のシステム。
【請求項１９】
前記第１のロジックは、相互接続アーキテクチャ・コヒーレンス・プロトコルを実施するプロトコルロジックを有し、
前記第２のロジックは、前記相互接続アーキテクチャ・コヒーレンス・プロトコルを実施するプロトコルロジックを有する、請求項１７記載のシステム。
【請求項２０】
前記ピアノードに含まれる前記第１のロジックは、次の書込トランザクションを開始する前に前記ホームノードから前記ライトバックフェーズに係る前記完了メッセージを受信するまで待機する、請求項１７記載のシステム。
【請求項２１】
前記次の書込トランザクションは、前記部分的データが取り出される準備ができていることを第２のノードに示すべく設定されるようフラグを更新することを有し、
前記第２のノードは、前記フラグの非スヌープ読出を実行し、
前記フラグが設定されることに応答して、前記第２のノードは、前記ホームノードからの前記部分的データの第２の非スヌープ読出を実行する、請求項２０記載のシステム。
【請求項２２】
部分的データをピアキャッシングエージェントで新たな部分的データへと更新する段階と、
前記部分的データに関連して前記ピアキャッシングエージェントによりコンフリクトメッセージを受信する段階と、
前記新たな部分的データが、前記ピアキャッシングエージェントにより前記コンフリクトメッセージを受信することに応答して、ホームエージェントへライトバックされることを示すライトバックメッセージを生成する段階と、
前記ホームエージェントが前記ピアキャッシングエージェントから新たな部分的データを受信した後、前記ピアキャッシングエージェントにより前記ホームノードから完了メッセージを受信する段階と
を有する方法。
【請求項２３】
前記部分的データが変形状態で前記ピアキャッシングエージェントに保持されていることに応答して、前記部分的データを前記新たな部分的データへと更新する前に前記部分的データを前記ホームエージェントへライトバックする段階を更に有し、
前記部分的データを前記新たな部分的データへと更新する段階は、前記コンフリクトメッセージを受信する前に起こる、請求項２２記載の方法。
【請求項２４】
前記ピアキャッシングエージェントで前記部分的データを前記新たな部分的データへと更新する段階は、前記コンフリクトメッセージを受信した後に起こる、請求項２２記載の方法。
【請求項２５】
前記ホームエージェントでの応答コンフリクトメッセージの受信に応答して前記ホームエージェントにより前記コンフリクトメッセージを生成する段階と、
前記ホームエージェントにより前記ピアキャッシングエージェントから前記新たな部分的データを受信する段階と、
前記ホームエージェントに関連するメモリへ前記新たな部分的データをコミットする段階と、
前記ホームエージェントにより前記新たな部分的データの受信と、前記ホームエージェントに関連するメモリへの前記新たな部分的データのコミットとに応答して、前記ホームエージェントにより前記完了メッセージを生成する段階と
を更に有する請求項２２記載の方法。
【請求項２６】
前記ホームエージェントから前記完了メッセージを受信した後に前記ピアキャッシングエージェントによりフラグへ書き込み、該フラグを設定する段階と、
第２のピアキャッシングエージェントにより前記フラグの非コヒーレント読出を実行する段階と、
前記フラグが前記第２のピアキャッシングエージェントによる当該フラグの前記非コヒーレント読出で設定されることに応答して、前記第２のピアキャッシングエージェントにより前記ホームエージェントから前記新たな部分的データの非コヒーレント読出を実行する段階と
を更に有する請求項２５記載の方法。
【請求項２７】
前記ライトバックメッセージは、Acknowledge  Conflict  Write-backメッセージと、Write-back  to  Invalidメッセージと、Response  Write-back  Postableメッセージと、Write-back  Data  Partial  Postableメッセージと、Write-back  Postableメッセージとを有するグループから選択される、請求項１７記載のシステム。
【請求項２８】
前記コンフリクトメッセージはフォース確認応答コンフリクトメッセージを有し、
前記完了メッセージは完了メッセージ又は完了フォワードコードメッセージである、請求項２７記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高速ポイント・ツー・ポイント相互接続リンクに関し、より具体的には、コヒーレント相互接続アーキテクチャを実施するコヒーレンス・プロトコルに関する。
【背景技術】
【０００２】
電子システムが複数のキャッシュメモリを有する場合に、システムに保持されているデータの妥当性、すなわちコヒーレンスは、データ演算のインテグリティを確かにするよう保たれている。コヒーレンスは、しばしば、キャッシュ・コヒーレンス・プロトコルに従ってデータを扱うことによって達成される。キャッシュ及び／又はプロセッサの数が増えるにつれて、コヒーレンスを保つ複雑性は増す。これにより、潜在的に、システムの複数のコンポーネントの間でのコンフリクトの数は増大することとなる。
【０００３】
例えば、複数のコンポーネント（例えば、キャッシュメモリ、プロセッサ）が同じデータブロックを要求する場合に、これらの複数のコンポーネントの間のコンフリクトは、データの妥当性を保つように解消される。以前のキャッシュ・コヒーレンス・プロトコルは、通常、コンフリクト解決に関与する単一コンポーネントを有する。しかし、システムの複雑性が増すにつれ、コンフリクト解決のための単一コンポーネントへの依存はシステム全体の性能を低下させうる。
【０００４】
一般に、キャッシュ・コヒーレンスを提供する２つの基本的なスキームがある。それは、スヌーピング（現在、しばしば、対称型マルチプロセッシング（ＳＭＰ）と呼ばれる。）及びディレクトリ（しばしば、分散共有メモリ（ＤＳＭ）と呼ばれる。）である。これら２つのスキームの間の基本的な違いは、メタ情報、すなわち、どこにキャッシュラインのコピーが保持されているかに関する情報への配置及びアクセスを中心に展開する。
【０００５】
ディレクトリに基づくスキームに関して、キャッシュ無しデータが記憶されている固定位置に加えて、どこにキャッシュコピーが存在するかを示す固定ロケーション、すなわちディレクトリがある。新しい方法でキャッシュラインにアクセスするために、ノードは、ディレクトリを有するノード（通常、キャッシュ無しデータを有する同じノードである。）と通信すべきであり、主記憶コピーが有効である場合に応答ノードがデータを供給することを可能にする。ディレクトリシステムにおけるこのようなノードは、ホームノードと呼ばれる。
【０００６】
ディレクトリは、二通りに分配され得る。第１に、主記憶データ（キャッシュ無しリポジトリ）は、しばしば、ノード間で分配され、一方、ディレクトリも同じように分配される。第２に、ラインがキャッシュされるかどうか及びラインがキャッシュされる場合にはどこに単一コピーが存在するかについて、少ない情報としてホームノードに保持しながら、メタ情報自体が分配され得る。例えば、ＳＣＩはこのスキームを使用し、キャッシュコピーを有する各ノードは、キャッシュコピーを有する他のノードへのリンクを保ち、集合的に完全なディレクトリを保持する。
【０００７】
スヌーピングキャッシュに関して、メタ情報は、キャッシュラインの有効なコピーの夫々が、キャッシュラインにアクセスして然るべく応答する要求を認識すべきユニットによって保持されるように、キャッシュコピー自体を有して分配される。通常、データがキャッシュされない状態で、すなわち、その元のロケーションに、保持されているリポジトリがある。しばしば、この元のロケーションに関与するエージェント又はユニットは、ホームノードと呼ばれる。キャッシュラインへのアクセスを要求する場合に、要求ノードは、しばしば、必要とされるパーミッションと共に、要求されるキャッシュラインのアドレスを送信し、要求されるキャッシュラインのコピーを保持するノードは然るべく応答する。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、現在のコヒーレンス及びメッセージングプロトコルの幾つかで、キャッシュラインの部分読出及び非スヌープメモリアクセス、すなわち、コヒーレントなアーキテクチャでの非コヒーレントアクセスは、或る環境下で、潜在的に、要求側へ無効なデータを転送する事態を生じさせる。しばしば、かかる環境は、プロトコル内のメモリ順序付け規則の違反に起因する。結果として、不正な動作が、無効なデータを受け取ったエージェントによって行われる。これは、潜在的に、システム内の不安定性につながる。
【課題を解決するための手段】
【０００９】
本発明の一実施形態で、
部分的な書込を実行して部分的データを更新する第1のロジックと、
前記部分的データに関連するコンフリクトメッセージの受信に応答してコンフリクトフェーズでライトバックフェーズを開始し、該ライトバックフェーズは、前記部分的データを該部分的データに関連するホームエージェントへ供給する第２のロジックと、
前記第２のロジックへ結合され、前記ライトバックフェーズの間前記ホームエージェントへ前記部分的データを供給する第３のロジックと
を有する装置が提供される。
【００１０】
また、本発明の一実施形態で、
キャッシュラインを有するキャッシュメモリと、
前記キャッシュメモリへ結合され、前記キャッシュラインへの部分的データの部分書込を実行する第１のロジックと、
前記部分的データに関連するホームノードからのコンフリクトメッセージを受信する第２のロジックと、
前記第２のロジックへ結合され、前記コンフリクトメッセージの確認応答と、前記部分的データが、前記第１のロジックが当該部分的データの前記部分書込を実行し且つ前記第２のロジックが前記コンフリクトメッセージを受信したことに応答して、データメッセージにおいて送信されるべきこととを前記ホームノードへ示す結合メッセージを生成する第３のロジックと、
前記第３のロジックへ結合され、前記結合メッセージを前記ホームノードへ送信する第４のロジックと
を有する装置が提供される。
【００１１】
また、本発明の一実施形態で、
部分的データに関連するホームノードからのコンフリクトメッセージの受信と、当該ピアノードが前記部分的データに対して部分書込を実行することとに応答してコンフリクトフェーズでライトバックフェーズを開始するライトバックメッセージを生成する第１のロジックを有するピアノードを有し、
前記ホームノードは、ポイント・ツー・ポイントリンクを介して前記ピアノードへ結合され、
前記ホームノードは、前記ライトバックフェーズの間の前記ピアノードからの前記部分的データの受信に応答して前記コンフリクトフェーズで前記ライトバックフェーズに係る完了メッセージを生成する第２のロジックを有する、システムが提供される。
【００１２】
また、本発明の一実施形態で、
部分的データをピアキャッシングエージェントで新たな部分的データへと更新する段階と、
前記部分的データに関連して前記ピアキャッシングエージェントによりコンフリクトメッセージを受信する段階と、
前記新たな部分的データが、前記ピアキャッシングエージェントにより前記コンフリクトメッセージを受信することに応答して、ホームエージェントへライトバックされることを示すライトバックメッセージを生成する段階と、
前記ホームエージェントが前記ピアキャッシングエージェントから新たな部分的データを受信した後、前記ピアキャッシングエージェントにより前記ホームノードから完了メッセージを受信する段階と
を有する方法が提供される。
【発明の効果】
【００１３】
本発明の実施形態により、部分的且つ非コヒーレントなメモリアクセスの観点からキャッシュ・コヒーレンス・リンクに基づく相互接続においてメモリ順序付けを保つことが可能となる。
【図面の簡単な説明】
【００１４】
【図１】プロトコルアーキテクチャの実施例を表す。
【図２】ポイント・ツー・ポイント相互接続を用いてチップセットへ結合される複数のプロセッサを有するシステムの実施例を表す。
【図３】階層化入出力（Ｉ／Ｏ）スタックを用いる双方向相互接続アーキテクチャに係るブロック図の実施例を表す。
【図４ａ】潜在的にメモリ順序付け違背を生じさせる複数のノード間のメッセージングプロトコルに係るプロトコルダイアグラムの実施例を表す。
【図４ｂ】潜在的にメモリ順序付け違背を生じさせる複数のノード間のメッセージングプロトコルに係るプロトコルダイアグラムの他の実施例を表す。
【図５ａ】適切なメモリ順序付け要求に従うようコンフリクトフェーズでメッセージを有するメッセージングプロトコルに係るプロトコルダイアグラムの実施例を表す。
【図５ｂ】適切なメモリ順序付け要求に従うようコンフリクトフェーズでメッセージを有するメッセージングプロトコルに係るプロトコルダイアグラムの他の実施例を表す。
【図６ａ】適切なメモリ順序付け要求に従うようコンフリクトフェーズの前に挿入されるデータライトバックフェーズを有するメッセージングプロトコルに係るプロトコルダイアグラムの実施例を表す。
【図６ｂ】適切なメモリ順序付け要求に従うようコンフリクトフェーズの前に挿入されるデータライトバックフェーズを有するメッセージングプロトコルに係るプロトコルダイアグラムの他の実施例を表す。
【図６ｃ】適切なメモリ順序付け要求に従うようコンフリクトフェーズでメッセージを有するメッセージングプロトコルに係るプロトコルダイアグラムの他の実施例を表す。
【図７ａ】適切なメモリ順序付け要求に従うようコンフリクトフェーズの後にメッセージを有するメッセージングプロトコルに係るプロトコルダイアグラムの実施例を表す。
【図７ｂ】適切なメモリ順序付け要求に従うようコンフリクトフェーズの後にメッセージを有するメッセージングプロトコルに係るプロトコルダイアグラムの他の実施例を表す。
【図７ｃ】適切なメモリ順序付け要求に従うようコンフリクトフェーズの後にメッセージを有するメッセージングプロトコルに係るプロトコルダイアグラムの実施例を表す。
【発明を実施するための形態】
【００１５】
以下、添付の図面を参照して、一例として本発明の実施形態をあらわす。なお、本発明はこの実施形態に限定されない。
【００１６】
以下の記載で、特定の相互接続アーキテクチャ、特定のメッセージ、特定の擬似コード、特定の相互接続アーキテクチャレイヤ等の例のような多数の特定の詳細が、本発明の徹底的な理解を与えるために挙げられている。なお、当業者には明らかなように、これらの特定の詳細が本発明を実施するために用いられる必要はない。他の例で、特定の相互接続レイヤの構造上の詳細や、特定の非適合メッセージ及びプロトコルや、プロセッサ及びキャッシュの特定の動作上の詳細等、よく知られているコンポーネント又は方法は、本発明を不必要に不明りょうとすることを避けるために、詳細には記載されていない。
【００１７】
ここで記載される方法及び装置は、相互接続アーキテクチャにおいて部分アクセスと非スヌープメモリアクセスとの間で適切なメモリ順序付けを提供するためものである。特に、メモリ順序付け要件の順守は、主として、実例となるキャッシュ−コヒーレントリンクに基づく相互接続アーキテクチャに関して論じられている。なお、適切なメモリ順序付け要件を提供する方法及び装置はそのように限定されず、それらは如何なる相互接続アーキテクチャにより実施されてもよい。
【００１８】
［実例となる相互接続アーキテクチャの実施例］
図１は、高レベル簡易プロトコルアーキテクチャの実施例を表す。一実施例で、プロトコルアーキテクチャは、衝突する要求の間と同様に、通常のトランザクションの間、アーキテクチャ内のキャッシュにおいてデータ間のデータ整合性を保つべきである。更に、プロトコルアーキテクチャは、一実施例で、また、それぞれの要求が満足され引っ込められるように、夫々の要求についてフォワード・プログレス（forward  progress）を提供する。
【００１９】
プロトコルアーキテクチャは、ノード又はエージェントを幾つ有してもよい。一実施例で、ノードは、内部キャッシュメモリ、外部キャッシュメモリ、及び／又は外部メモリと関連するプロセッサを有する。なお、ノード又はエージェントは、例えば、プロセッサ、メモリコントローラハブ、及びＩ／Ｏハブ、汎用コントローラハブ、Ｉ／Ｏデバイス、Ｉ／Ｏデバイスの一群、あるいは、メモリにアクセス可能ないずれかの他のデバイス／コンポーネント等、相互接続アーキテクチャにおける如何なる装置又はそのような装置の一群であってもよい。他の実施例で、ノードは他の電子システムと相互接続されている電子システム（例えば、コンピュータシステム、モバイルデバイス）である。また、他のタイプのノード構成が使用されてもよい。
【００２０】
表されるように、アーキテクチャ１００は、キャッシングノード／エージェント１０５及び１０６と、ホームエージェント１１０乃至１１２とを有する。一実施例で、ホームエージェント１１０乃至１１２は、コヒーレントなメモリ空間の最終リポジトリであるメモリロケーションを保護すべきである。言い換えると、エージェント１１０は、コヒーレントなメモリ空間のデータについて複数の元の物理的なメモリロケーションに関与するホームエージェントである。ホームエージェント１１０乃至１１２は、キャッシングエージェント１０５及び１０６からのキャッシュ状態トランザクションの追跡と、キャッシングエージェント１０５及び１０６の間のコンフリクトの管理と、メモリへのインターフェースと、データ及び／又はオーナーシップの提供と、いずれかの他のホームエージェントに関連するタスクとを含むタスクの如何なる組合せも実行することができる。
【００２１】
一実施例で、キャッシングエージェント１０５及び１０６は、キャッシュメモリ及びキャッシングＩ／Ｏプロキシエンティティを含むプロセッサ等、キャッシュメモリと関連するエージェントを有する。キャッシングエージェント１０５及び１０６は、コヒーレントメモリ空間への読出及び書込要求の実行、コヒーレントメモリ空間からのデータのキャッシュコピーの保持、及び他のピアキャッシングエージェントへのキャッシュコピーの供給等のタスク及びいずれかの他のタスクの如何なる組合せも実行することができる。キャッシングエージェント又はノードは、また、他のキャッシングエージェントに関してピアエージェント／ノードと呼ばれることがある。図１に具体的に現されていないが、プロトコルアーキテクチャは、入出力（Ｉ／Ｏ）デバイスに代わってトランザクションに参加し又はそれを経験するＩ／Ｏハブ等の非キャッシングエージェントを更に有してよい。
【００２２】
一実施例で、キャッシングエージェント１０５及び１０６並びにホームエージェント１１０乃至１１２は、ネットワーク構造１０１を介するメッセージの交換を通して、データ整合性を保持しフォワード・プログレスを提供する。一実施例で、構造１０１は、ポイント・ツー・ポイント相互接続ネットワークを通して１つのエージェント／ノードから他のエージェント／ノードへのメッセージの伝送を助ける。しばしば、図１は、基盤ネットワークのキャッシュ・コヒーレンス・プロトコルの抽象的な見方を表すと言われる。
【００２３】
一実施例で、相互接続アーキテクチャ１００は、下記の同時係属出願で記載されるように、新規の特徴の如何なる組合せも組み入れてよい。例えば、米国特許第６，９２２，７５６号（発明の名称「forward  State  for  Use  in  Cache  Coherency  in  a  Multi-Node  System」）は、フォワードキャッシュ・コヒーレンス状態（Ｆステート）の利用について記載する。更に、様々な状況でのコヒーレンス・プロトコルの例は、２００４年４月２７日に出願された米国特許出願第１０／８３３，９６３号（事件整理番号Ｐ１５９２５）（発明の名称「A  Two-Hop  Cache  Coherency  Protocol」）、２００４年４月２７日に出願された米国特許出願第１０／８３３，９６５号（事件整理番号Ｐ１８８９０）（発明の名称「A  Messaging  Protocol」）、２００４年４月２７日に出願された米国特許出願第１０／８３３，９７７号（事件整理番号Ｐ１８８９１）（発明の名称「A  Cache  Coherence  Protocol」）、２００６年１月１１日に出願された米国特許出願第１１／３３０，９７７号（事件整理番号Ｐ２２３７６）（発明の名称「A  Two-Hop  Source  Snoop  Based  Cache  Coherence  Protocol」）、及び２００６年１月１１日に出願された米国特許出願第１１／３３１，３０１号（事件整理番号Ｐ２３１０６）（発明の名称「A  Two-Hop  Source  Snoop  Based  Messaging  Protocol」）で論じられている。
【００２４】
他の例は、２００２年１２月１９日に出願された米国特許出願第１０／３２５，４２７号（事件整理番号Ｐ１３９２３）（発明の名称「Speculative  Distributed  Conflict  Resolution  for  a  Cache  Coherency  Protocol」）、２００２年１２月１９日に出願された米国特許出願第１０／３２６，２３４号（事件整理番号Ｐ１３９８４）（発明の名称「Hierarchical  Directories  for  Cache  Coherency  in  a  Multiprocessor  System」）、２００２年１２月１９日に出願された米国特許出願第１０／３２４，７１１号（事件整理番号Ｐ１３９８５）（発明の名称「Hierarchical  Virtual  Model  of  a  Cache  Hierarchy  in  a  Multiprocessor  System」）、及び２００２年１２月１９日に出願された米国特許出願第１０／３２６，２３２号（事件整理番号Ｐ１３９８６）（発明の名称「Non-Speculative  Distributed  Conflict  Resolution  for  a  Cache  Coherency  Protocol」）を含む。
【００２５】
前述の同時係属出願に記載される特徴は、本願明細書等に記載される実施例に組み込まれ得る点に留意すべきである。なお、本願明細書等に記載される実施例はそのように限定されず、それらは、潜在的に前述の特徴のいずれも有さないだけではなく、付加的な特徴を有してよい。
【００２６】
図２は、ポイント・ツー・ポイント相互接続アーキテクチャを利用するチップセットへ結合されている複数のプロセッサを有するシステムの実施例を表す。図２のシステムは、また、複数のプロセッサを有してよい。それらのプロセッサのうち２つのプロセッサ２０５及び２１０しか明りょうさのために示されない。表されるように、プロセッサ２０５及び２１０は、夫々、２つの処理要素（ＰＥ）２０６及び２０７又は２１１及び２１２を有する。なお、プロセッサ２０５及び２１０には処理要素が幾つ含まれてもよい。
【００２７】
処理要素は、スレッドユニット、処理ユニット、コンテキスト、論理プロセッサ、ハードウェアスレッド、コア、及び／又はいずれかの他の要素を言い、例えば実行状態又は構造上の状態等のプロセッサの状態を保つことができる。言い換えると、処理要素は、一実施例で、例えば、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、又は他のコード等のコードと独立して関わることができる如何なるハードウェアも言う。一例として、通常、物理プロセッサは集積回路を表し、これは潜在的にコア又はハードウェアスレッド等の他の処理要素を幾つでも有する。
【００２８】
コアは、しばしば、独立した構造上の状態を保つことができる集積回路に配置されるロジックを言う。夫々の独立して保たれる構造上の状態は、少なくとも幾つかの専用の実行リソースと関連する。コアとは対照的に、物理スレッドと呼ばれることもあるハードウェアスレッドは、通常、独立した構造上の状態を保つことができる集積回路に配置されるあらゆるロジックを言う。独立して保たれる構造上の状態は、実行リソースへのアクセスを共有する。そのため、明らかなように、例えば単一スレッド・アプリケーションの複数の複製等の複数のソフトウェアスレッドは、一実施例で、コア又はハードウェアスレッド等の前述の処理要素のいずれかの組合せを含む複数の処理要素で並行して実行され得る。
【００２９】
また、プロセッサ２０５及び２１０の中にはリソース２０８及び２１３が表されている。リソース２０８及び２１３は、通常、レジスタ、ユニット、ロジック、ファームウェア、メモリ、及び他のリソースを有し、コードを実行し又は他のデバイスとインターフェース接続する。上述されるように、リソースの幾つかは、部分的に又は完全に処理要素のために設けられてよく、一方、残りのリソースは、処理要素の間で共有される。例えば、命令ポインタ及びリネームロジック等のより小さいリソースは、物理スレッドについて複製されてよい。リオーダー／リタイアメント・ユニットにおけるリオーダーバッファ、命令ルックアサイド・トランスレーション・バッファ（ＩＬＴＢ）、負荷／記憶バッファ、及びキュー等の幾つかのリソースは、パーティショニングを通して共有されてよい。汎用内部レジスタ、ページテーブル・ベース・レジスタ、低レベルデータキャッシュ、データＴＬＢ、実行ユニット、及びアウト・オブ・オーダー・ユニット等の他のリソースは、潜在的に完全にスレッドの間で共有される。対照的に、コアは、第２レベルキャッシュ（Ｌ２）等のより高いレベルのキャッシュの少なくとも一部を共有しながら、専用の実行リソースを有してよい。
【００３０】
一実施例で、リソース２０８及び２１３はプロセッサ・パイプラインを有する。プロセッサ・パイプラインは、パイプライン段を幾つでも有してよい。パイプライン段の一般的な例には、命令ポインタ段、フェッチ段、デコード段、ドライブ段、及び割当て段、リネーム段、キュー段、リオーダー段、スケジュール段、ディスパッチ段、実行段、メモリアクセス段、並びにレジスタアクセス段が含まれる。ここに列挙される段は、あらゆる既知のパイプライン段がプロセッサ１００に含まれうる場合に、プロセッサ・パイプライン段の例となる非包括的な羅列を有する点に留意すべきである。
【００３１】
プロセッサ２０５及び２１０は、夫々、メモリコントローラ又はローカルメモリコントローラハブ（ＭＣＨ）を更に有してよく、然るべくメモリ２０９又は２１４とインターフェース接続する。メモリ２０９及び２１４は、例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュメモリ、フラッシュメモリ、又は他のメモリデバイス等のあらゆるメモリデバイスを有する。一実施例で、メモリ２１４は上位キャッシュメモリを有し、一方、リソース２１３は下位キャッシュメモリを有する。他の実施例で、メモリ２０９は、プロセッサ２０５に付随する動的ランダムアクセスメモリ（ＤＲＡＭ）を有する。プロセッサ２０５は、ＤＲＡＭ２０９からのデータをキャッシュに格納するようキャッシュメモリを有する。これは実例となる実施形態である点に留意すべきであり、メモリ２０９及び２１４は、潜在的に如何なるスタイルメモリデバイスも有する。
【００３２】
一実施例で、メモリ２０９及び２１４が、プロセッサ２０５及び２１０に含まれているか又は（表されるように）その外部にあるキャッシュメモリを有する場合に、プロセッサ２０５及び２１０は、ピアキャッシングノードはもちろんホームノードであることができる。例えば、トランザクションがメモリ２０９内のメモリロケーションを参照する場合に、メモリ２０９に関与するエージェント、すなわちプロセッサ２０５は、トランザクション及びメモリロケーションに関してホームエージェントであると判断される。同様に、トランザクションが他のメモリロケーション（例えば、メモリ２１４でのロケーション）を参照する場合に、プロセッサ２０５はピアキャッシングエージェントであると判断される。
【００３３】
明らかなように、ポイント・ツー・ポイントリンク２２０乃至２２２は、ポイント・ツー・ポイント形式でコンポーネントを連結させる。物理リンク２２０乃至２２２は、一実施例で、夫々、図３を参照して以下で論じられる物理レイヤと関連する物理リンク等の、双方向の差動シグナリング相互接続を有する。結果として、プロセッサ２０５及び２１０並びにチップセット２３０は、互いに直接に通信することができる。
【００３４】
チップセット２３０は、しばしば、入出力（Ｉ／Ｏ）ハブへ結合されているメモリコントローラハブ等の、複数の集積回路への総称指示である。なお、一実施例で、エージェントが夫々メモリとインターフェース接続するメモリコントローラハブのバージョンを有する場合に、チップセット２３０はＩ／Ｏハブ又は他のコントローラハブを言う。一実施例で、チップセット２３０は、上述されるように、トランザクションに参加し又はそれを経験する非キャッシングエージェントである。なお、チップセット２３０はそのように限定されず、他の実施例では、チップセット２３０は、キャッシュメモリを有するキャッシングエージェント及び／又はデータの元のメモリロケーション・リポジトリを有するメモリを有するホームエージェントである。
【００３５】
表されるように、チップセット２３０は、また、例えば、周辺コンポーネント相互接続（ＰＣＩ）又はＰＣＩエクスプレス（ＰＣＩ−Ｅ）デバイス２６１、集積デバイスエレクトロニクス（ＩＤＥ）又はアドバンスト・トランスファー・アタッチメント（ＡＴＡ）デバイス２６２、ユニバーサル・シリアル・バス（ＵＳＢ）デバイス２６３、ローカルエリアネットワーク（ＬＡＮ）又は無線ＬＡＮ（ＷＬＡＮ）デバイス２６４、オーディオデバイス２６５、及び他のＩ／Ｏデバイス２６６等の複数の相互接続及びＩ／Ｏデバイスとインターフェース接続すべきである。チップセット２３０は、また、ここで記載されるようにＩ／Ｏデバイスを結合する他の相互接続アーキテクチャを有してよい。
【００３６】
図３を参照すると、階層化相互接続スタックを利用する双方向相互接続アーキテクチャに係るブロック図の実施例が表されている。例えば物理レイヤ３０２等の図３のレイヤへの言及には、例えば物理レイヤ３０２ａ及び物理レイヤ３０２ｂ等の、異なるエージェントで実施され得る一般的なレイヤの議論が含まれる。表されるように、相互接続スタックは５つのレイヤに分けられる。かかるレイヤのうち１又はそれ以上は、潜在的に、設計実施に基づいて任意である。例えば、ルーティングレイヤ３０４は、一実施例で、リンクレイヤ３０３の機能性に組み込まれる。従って、ルーティングレイヤは、一実施例では、別個のレイヤでない。
【００３７】
一実施例で、物理レイヤ３０２は、物理媒体での情報の電気伝送に関与する。例えば、物理的なポイント・ツー・ポイントリンクがリンクレイヤエンティティ３０３ａ及び３０３ｂの間で利用される。実例として、物理リンクは、双方向差動シグナリング対３５１及び３５２を有する差動シグナリングスキームを有する。この場合に、物理レイヤは、潜在的に論理的に電気サブブロック及び論理サブブロックに分けられ、これにより、物理レイヤは、情報の電気伝送から残りのスタックを分離し且つリンクレイヤ３０３と通信することができる。
【００３８】
一実施例で、リンクレイヤ３０３は、スタックの上位レイヤから物理レイヤ３０２を抽出し、例えば、接続されるエージェント／エンティティの間の信頼できるデータ伝送及びフロー制御並びに多重仮想チャネル又はメッセージクラスへの物理チャネル／インターフェースの仮想化等のリンク関連サービスを提供する。ここで、仮想チャネルは、スタックの上位層による使用のための多重仮想ネットワークと考えられてよい。例えば、プロトコルレイヤ３０６は、プロトコルメッセージをメッセージクラスに、ひいては、１又はそれ以上の仮想チャネルへマッピングするよう、潜在的に、リンクレイヤ３０３によって提供されるアブストラクションに依存する。
【００３９】
ルーティングレイヤ３０４は、一実施例で、ソースからあて先へパケットを送るための柔軟な方法を提供する。上述されるように、極めて簡単なトポロジで、ルーティングレイヤ３０４は明示的でなく、むしろリンクレイヤ３０３の機能性に組み込まれうる。例えば、ルーティングレイヤ３０４は、パケットを送るべく＜ポート，仮想ネットワーク＞対を特定するためにリンクレイヤ３０３のアブストラクションに依存してよい。ここで、ルーティングテーブル情報は、パケットにルーティング情報を提供するよう保持される。
【００４０】
一実施例で、トランスポートレイヤ３０５は、エンド・ツー・エンドの信頼できる伝送サービスを提供する。ルーティングレイヤ３０４と同じく、トランスポートレイヤ３０５も設計実施に基づいて任意である。一例として、トランスポートレイヤ３０５は、プロトコルレイヤ３０６に信頼できる伝送サポートを提供するようルーティングレイヤ３０４サービスに依存する。相互接続アーキテクチャ内で、一実施例で、一部のコンポーネントはトランスポートレイヤ３０５を有する。結果として、この一部のコンポーネントは、トランスポートレイヤ３０５に関するパケットのサブフィールドを定義し、一方、他のコンポーネントは、潜在的にかかるサブフィールドを定義しない。
【００４１】
プロトコルレイヤ３０６は、一実施例で、例えばキャッシュ・コヒーレンス、順序付け、ピア・ツー・ピア通信、割り込み転送等の、ノード／エージェント間の上位通信プロトコルを実施することができる。言い換えると、プロトコルレイヤ３０６は、ホームノード、ピアノード、キャッシングノード、及び非キャッシングノード等のノード又はエージェントについて、然るべく、許容されるメッセージ、要求、応答、フェーズ、コヒーレンス状態等を定義する。ホームノードメッセージ、スヌープメッセージ、応答メッセージ等のメッセージの例については以下で論じる。
【００４２】
レイヤ及びそれに関連するロジックの議論は如何なる方法で結合されてもよい点に留意すべきである。例えば、プロトコルロジックは物理レイヤ、すなわち、送信又は受信ロジックへ結合されてもよい。ここで、図３から分かるように、一実施例で、プロトコルロジックは、物理レイヤロジックへ直接には結合されずに、むしろ他のレイヤロジックを介して結合されてよい。更に、相互接続スタックは、一実施例で、適切なキャッシュ・コヒーレンス動作を開始するよう、例えばキャッシュ制御又はキャッシュメモリロジック等の内部コンポーネントロジックへ結合される。
【００４３】
［ＭＥＳＩＦプロトコルの実施例の概説］
一実施例で、基本ＭＥＳＩＦ（Modified  Exclusive  Shared  Invalid  Forward）プロトコルは、単一のシリアライジング・バスの潜在的な制限を伴わずにスヌープ・プロトコルと同様のプロトコルを提供する。スヌーピング・キャッシュ・プロトコルのように、ＭＥＳＩＦは、コヒーレンスを保つために、データのキャッシュコピーを有するノードに依存する。同期集中ブロードバンドよりむしろポイント・ツー・ポイントリンクの使用は、タイムワープの問題、すなわち、事象が異なるノードの側からすれば異なる順序で起こるように見えるという事実を持ち込む。一例として、ＭＥＳＩＦプロトコルは、タイムワープに起因する潜在的エラーの認識を通してタイムワープを扱い、そのプロトコル又はソフトウェアソリューションを提供する。
【００４４】
ホームノードは、しばしば、データのキャッシュ無しコピーと関連する。結果として、ホームノードは、そのホームノードと関連するデータに関するトランザクションに関与する。しかし、ホームノードは、トランザクションと関連する“クリティカルパス”に含まれる必要はなく、むしろ、ホームノードは、コンフリクト及びタイムワープ問題を解決するようトランザクションに介入する。かかるスキームの同時ブロードキャスト性のために、一実施例で、ＭＥＳＩＦは、スヌーピング・プロトコルと関連する低レイテンシーを達成し、一方で、ある場合には、最低限のレイテンシー、すなわち、単一ラウンドトリップ要求−応答で、データのキャッシュ可能なコピーを取得する。
【００４５】
一実施例で、ＭＥＳＩＦプロトコルに関する基本的なトランザクションは、ホームノードはもちろん全てのピアノードへ最初の要求を送信することを伴う。コピーがステートＥ、Ｆ又はＭコヒーレンス状態でキャッシュされる場合に、それは応答に含まれる。次いで、第２のメッセージがホームノードへ送信され、要求が満足されたことをホームノードに知らせる。要求されるラインがキャッシュされない場合、又はＳステートのコピーしか存在しない場合は、ホームノードへ送信される第２の要求は、前の要求を確認するために使用される。この前の要求をホームノードは既に自身のメモリからフェッチしていてよい。いずれの場合にも、ホームノードは、同期及びコンフリクトの解消のために第２の要求（及び潜在的に、たとえそれらが時々結合され得るとしても、第１の要求）に応答する。ホームノードは１又はそれ以上のキャッシュを有してよい点に留意すべきであり、従って、それは、いずれの他のノードとも同じように最初の要求に応答することができる。
【００４６】
一実施例で、コンフリクトは分散的に扱われる。タイムワープ問題は、個々の要求が任意に長い時間遅延しうるので、コンフリクトを検出することを困難にする。しかし、コンフリクトは、夫々のノードが要求後にコンフリクトについて監視する場合に検出される。複数のノードが潜在的にコンフリクトを検出してよいが、一例として、それらのノードのうちの少なくとも１つがコンフリクトを検出しうる。結果として、ノードからの応答は、一実施例で、潜在的にコンフリクト情報を有する。
【００４７】
一実施例で、応答からデータのコピーを受け取ったノードは、受け取った直後に内部データを使用することを許可されるが、ノードが確認を受け取るまでは、他のシステムにとって可視的な、すなわち、グローバルに可視的なデータを使用するという作用を引き起こさない。確認は、また、要求ノードがそのコピーを他のノードへ転送すべき命令を含み、ことによると、そのノードを自身のキャッシュから退かせる。
【００４８】
最後に、ノードがキャッシュデータを供給することによって他のノードからの要求に応答する場合に、ノードは、一実施例で、ノードがデータを転送したと認めるホームノードからの応答をノードが受け取るまで、同じキャッシュラインについて自身が受け取る他の要求を留保し、このようにして、全てのノードが（場合により書込可能な）キャッシュラインの伝送の同じ順序を守ることを確かにする。
【００４９】
ホームノードは、上述されるように、キャッシュ無しデータのリポジトリであるが、ホームノードは、また、プロセッサ及びキャッシュを有してよい。ここで、ホームノードのプロセッサがキャッシュを逃す場合に、ホームノードは他の全ての（ピア）ノードへ要求を送信し、ホームノードは、ホームノードに到着したいずれの他の要求と同じく内部でその要求を扱う。これは、ホームノードが自身（ホームノード）へメッセージを明示的に送信する特別の場合である点に留意すべきである。更に、外部からの要求が、局所的にキャッシュされるデータについて到着する場合に、ホームノードは適切に応答する。
【００５０】
開示されているメッセージプロトコルは、コヒーレンス（キャッシュ及びホーム）エージェント、非キャッシングエージェント、及び他のエージェント（メモリコントローラ、プロセッサ等）の間の許容されているメッセージの組を定義する。コヒーレンス・プロトコルは、考えられるコヒーレントを表すアルゴリズムでワード及び文法としてメッセージを使用する。このアルゴリズムは、分別よく要求を順序付け、コンフリクトを解消し、キャッシングエージェント間の相互作用を表す。ＭＥＳＩＦプロトコルについて上述されたが、ＭＥＳＩＦキャッシュ・コヒーレンス・プロトコルは利用される必要がない。例えば、既知のＭＥＳＩＦプロトコルの利用をもたらすフォワード状態は利用されなくてよい。更に、上記にはＭＥＳＩＦプロトコルにかかる実施例の典型的な概説が含まれる点に留意すべきである。結果として、上述される様々なコンポーネントは別々の実施例で相違しうる。メッセージング及び／又はコヒーレンス・プロトコルで利用される潜在的なメッセージの非包括的な例となる羅列は以下に含まれる。
【００５１】
［スヌープメッセージ］
一実施例で、スヌープメッセージは、例えばピアキャッシングエージェント等のキャッシングエージェントへ向けられる。通常、スヌープメッセージはホームノード識別子（ＩＤ）を有さず、これより、それらはホームノードには送られずにピアキャッシングエージェントに送られる。
【００５２】
Snoop  Data（SnpData）：これは、Ｅ、Ｆ又はＳステートでデータを得るスヌープである。
【００５３】
Snoop  Invalidation  Own（SnpInvOwn）：これは、Ｅ又はＭステートでデータを得るスヌープである。一実施例で、ピアエージェントは、データを自身のローカルメモリにＥ又はＭステートで保持することに応答してデータを提供することができる。
【００５４】
Snoop  Invalidation  Invalid  to  Exclusive（SnpInvItoE）：これは、ピアキャッシングエージェントを無効にし、ホームノードへのあらゆるＭステートデータをフラッシュ（flush）するスヌープである。
【００５５】
Snoop  Invalidation  X  to  Invalid（SnpInvXtoI）：これは、ピアキャッシングエージェントを無効にし、ホームノードへのあらゆるＭステートデータをフラッシュするスヌープである。
【００５６】
［ホームメッセージ］
下記のメッセージはホームノードと関連する。一例として、下記の幾つかはホームノードへの要求メッセージである。実際には、スヌープメッセージ及びホームメッセージのうち幾つかの間の類似性に留意すべきである。なお、これらの類似するメッセージは、しばしば、ホームノードへのメッセージがホームノードへ送られるべきホームノードＩＤを有し、一方、送信されるピアノードメッセージはホームノードへの参照を有さなくてもよい点で相違する。
【００５７】
他のホームメッセージは、ホーム・ライトバック・マーカーメッセージを含む。ここで、データは、WbDataメッセージを介して別個に送信されてよく、マーカーメッセージに対して如何なる順序で受信されてもよい。以下に含まれるホームメッセージの他の例は、キャッシングエージェントからホームエージェントへのホームスヌープ応答メッセージ、及びコンフリクトフェーズの開始を知らせるコンフリクトメッセージのホーム確認応答である。
【００５８】
Read  Data（RdData）；これは、排他的（Exclusive）（Ｅ）状態、更には、潜在的に、実施例に依存してフォワード（Forward）（Ｆ）状態又は共有（Shared）（Ｓ）状態でのデータの要求である。
【００５９】
Read  Invalidate  Own（RdInvOwn）：これは、Ｍ又はＥステートでのキャッシュラインの要求である。
【００６０】
Invalidate  Invalid  to  Exclusive（InvItoE）：これは、データを有さないキャッシュラインの要求である。
【００６１】
Non-Snoop  Read（NonSnpRd）：これは、メモリからのコヒーレントでない読出を実行する要求である。
【００６２】
Non-Snoop  Write（NonSnpW）：これは、メモリへのコヒーレントでない書込を実行する要求である。
【００６３】
WriteBack  Modified  to  Invalid、Shared、又はExclusive（WbMtoI、WbMtoS、及びWbMtoE）：これは、Ｍステートにあるキャッシュラインをメモリにライトバックして、然るべくキャッシュラインの状態を無効状態、共有状態、又は排他状態へ遷移させる要求である。一実施例で、かかるメッセージは、データが送信されるべきことを示すマーカーメッセージであり、一方、データは、実際には、別々のメッセージ（例えば、Wb*Data*メッセージ）を介して伝送される。
【００６４】
Response  Invalid又はShared（RspI又はRspS）：ピアエージェントは、然るべく無効状態で又は共有状態でキャッシュを持ち続ける。
【００６５】
Response  Forward  Invalid又はShared（RspFwdI又はRspFwdS）：ピアはデータを要求側へ送信しており、ラインは然るべく無効状態又は共有状態のままである。
【００６６】
Response  Forward  Invalid又はShared  WriteBack（RspFwdIwb又はRspFwdSWb）：ピアはデータを要求側へ及びWbIDataをホームノードへ送信しており、ラインは然るべく無効状態又は共有状態のままである。
【００６７】
Response  Invalid又はShared  WriteBack（RspIWb又はRspSWb）：ピアはインフライト（in-flight）のWbIDataメッセージを有するデータをホームへ退かせており、如何なるメッセージも要求側へ送信していない。
【００６８】
Response*Writeback  Post（Rsp*WbPost）：ピアは、インフライトのWb*Dataメッセージを有するデータをホームへ退かせており、如何なるメッセージも要求側へ送信していない。更に、一実施例で、Rsp*WbPostメッセージに関連するAckCnfltメッセージの送信側は、Cmp_Fwd*メッセージの受信に応答して割当てを解除されない。一例として、ホームエージェントは、メモリへの部分的データのコミットに応答して完全なメッセージを送信する。
【００６９】
WbPost：ピアは、インフライトのWb*Dataメッセージを有するデータをホームへ退かせている。更に、一実施例で、WbPostメッセージの送信側は、Cmp_Fwd*メッセージの受信に応答して割当てを解除されない。ここで、送信側は、ホームノードからの完了を待つ。一例として、ホームエージェントは、メモリへのデータのコミットに応答して完全なメッセージを送信する。
【００７０】
Response  Conflict（RspCnflt）：ピアは無効状態でラインを持ち続け、ピアはコンフリクトする対抗する要求を有する。
【００７１】
Acknowledge  Conflict（AckCnflt）：データ完了（completion）／グラント（grant）及び完了／フォース（force）確認応答コンフリクトの確認応答受信。
【００７２】
Acknowledge  Conflict  Write-back  Invalid（AckCnfltWbI）：一実施例で、それは、上述されるように、AckCnfltを伝える。更に、一実施例で、このメッセージは、更に、部分的データのライトバックを伝える。部分的データは、後述されるように、別個のWbIDataに含まれてよい。更に、データに関連するキャッシュラインは無効状態へと遷移させられる。
【００７３】
［無データ応答メッセージ］
一実施例で、無データ応答メッセージは、データを送信することなくラインのオーナーシップを認めるグラントメッセージを有する。無データ応答メッセージは、また、完了を知らせる完了メッセージを有し、潜在的に、コンフリクト状態下でオーナーからデータを取り出す。
【００７４】
Grant_Completion（GntCmp）：データによらずに排他的オーナーシップを付与。
【００７５】
Grant  Force  Acknowledge  Conflict（Gnt_FrcAckCnflt）：データ及びフォース確認応答コンフリクトによらずに排他的オーナーシップを付与。
【００７６】
Completion（CMP）：全てのスヌープ応答が収集され、コンフリクトは検出されない。
【００７７】
Force  Acknowledge  Conflict（FrcAckCnflt）：確認応答コンフリクトについて、スヌープ応答が収集される。
【００７８】
Complete_Forward  Code（Cmp_FwdCode）：要求を完了し、フォワード状態又は共有状態でのラインを要求側へ転送し、且つ、ローカルコピーを無効にするか又はそれを共有状態のままとする。
【００７９】
Complete  Forward  Invalidate  Own（Cmp_FwdInvOwn）：要求を完了し、排他的状態又は変形（Modified）（Ｍ）状態でのラインを要求側へ転送し、ローカルコピーを無効化。
【００８０】
［データ応答メッセージ］
DataC_*：対応するＭＥＳＩＦ状態でのデータ。
【００８１】
DataC_*_Cmp：完了を伴う対応するＥＳＩＦ状態でのデータ。
【００８２】
DataC_*_FrcAckCnflt：FrcAckCnfltを伴う対応するＥＳＩＦ状態でのデータ。
【００８３】
Wb*Data：データをライトバックし、対応するＥ、Ｓ又はＩステートへ遷移。
【００８４】
WbIDataPtl又はWbEDataPtl：部分的データのライトバック、対応する無効状態又は排他的状態への遷移。
【００８５】
Wb*DataPtlPost：部分的データのライトバック、対応するコヒーレンス状態への遷移。更に、一実施例で、Wb*DataPtlPostメッセージに関連するAckCnfltメッセージの送信側は、Cmp_Fwd*メッセージの受信に応答して割当てを解除されない。一例として、ホームエージェントは、メモリへの部分的データのコミットに応答して完全なメッセージを送信する。
【００８６】
Non-Snoop  Write  Data（NonSnpWrData）：これは、メモリへの非コヒーレントな書込である。
【００８７】
Non-Snoop  Write  Data  Partial（NonSnpWrDataPtl）：これは、部分的データの非コヒーレントな書込である。
【００８８】
図４ａを参照すると、潜在的にメモリ順序付け違背を引き起こす複数のノードの間でのメッセージングのためのプロトコルダイアグラムの実施例が表されている。表されるように、プロトコルダイアグラムは、５つのノード、すなわち、多数のトランザクションに参加する入出力ハブ（ＩＯＨ）（コンシューマ）、“フラグ（Flag）”のためのホームノード０（ＣＨＬ０）、プロデューサノード（ＧＱ０）、“データ（Data）”のためのホームノード１（ＣＨＬ１）、及び他のキャッシングエージェント（ＧＱ１）を表す。留意すべきは、表されるエージェントの数及びタイプは単に実例であり、相互接続アーキテクチャは極めて柔軟性があり且つ如何なる数又はスタイルのエージェントを有してもよい点である。
【００８９】
ここで、プロデューサＧＱ０は、データに関連するキャッシュラインに対する要求を開始する。InvItoE(D)メッセージはホームノード１（ＣＨＬ１）へ送信され、SnpInvItoE(D)メッセージはピアエージェント（コンシューマＧＱ１）へ送信／転送される。なお、このトランザクションの間、ＧＱ１は、データの読出要求を有する別のトランザクションを開始する。留意すべきは、ＧＱ１及びＧＱ０の両エージェントは、この場合に、コンフリクトを検出する点である。このコンフリクトは、ピアエージェントＧＱ０及びＧＱ１からホームエージェントＣＨＬ１へのRspCnfltメッセージによって反映される。ホームノードＣＨＬ１が対抗するメッセージを受信した後、それは、オーナーシップを付与し且つコンフリクトの確認応答を余儀なくさせるようGnt_FrcAckCnfltをＧＱ０へ送信する。
【００９０】
この時点で、プロデューサとしてのＧＱ０は、データへの部分書込、すなわち、Ｄａｔａ＝Ｎｅｗを実行し、Gnt_FrcAckCnfltメッセージの受信を確認するAckCnfltメッセージを送信する。一実施例で、AckCnfltメッセージは、また、トランザクションのコンフリクトフェーズの開始を示し、一方、AckCnfltメッセージに付随する完了は、コンフリクトフェーズの終了を表す。次いで、ホームノードＣＨＬ１は、データをホームノードＣＨＬ１に押し返すようCmp_FwdCodeメッセージを送信する。しかし、部分的データ、すなわち、RspIWb(D)メッセージ及びWbIDataPtl(D)メッセージのライトバックは、例えばチャネル又はルーティング遅延のような幾つかの理由のために遅延する。
【００９１】
一方、データを更新し、ホームノードＣＨＬ１へ部分的データ応答を供給し、ホームノードＣＨＬ１からのCmp_FwdCodeによってデータトランザクションへの部分書込から割当てを解除されると、ＧＱ０は、フラグへの書込、すなわち、ＣＨＬ０へのInvItoE(F)メッセージ並びにピアエージェントＩＯＨ及びＧＱ１への対応するスヌープを開始する。ここで、ＧＱ０は、フラグについてのキャッシュラインのオーナーシップ、すなわち、ホームノードＣＨＬ０からのGnt_Cmpを取得し、フラグをＮｅｗへと更新する。更に、フラグの新たな値は、ホームノードＣＨＬ０へライトバックされる（すなわち、WbMtoI(F)及びWbIData(F)）。しばしば、データ及びフラグに係るこのようなシナリオはＩ／Ｏ動作で利用される。この場合に、１のエージェントはデータを更新し、次いで、データが更新されており且ついつでも回復（retrieval）する状態になっていることを他のエージェントに知らせるようフラグを設定する。
【００９２】
従って、ＩＯＨは、いつデータが取り出される準備ができるかを決定するよう、周期的に又は一定時間後にフラグをチェックしながらフラグに対してスピニング（spinning）を行っている。結果として、ＩＯＨは、フラグの非スヌープな又は非コヒーレントな読出、すなわち、NonSnpRd(F)を実行する。ここで、ホームノードＣＨＬ０のメモリからの読出は、データがいつでも取り出されることを示すＦｌａｇ＝Ｎｅｗ値を取り出す。もはやフラグに対してスピニングを行っていないＩＯＨは、データのNonSnpRd要求を開始する。なお、NonSnpRdが受信される場合に、データは、ＧＱ０からのＤａｔａ＝Ｎｅｗのライトバックが遅延したために、依然としてＯｌｄ値を保持する。結果として、コンシューマＩＯＨは、無効な古いデータを取り出すが、データが有効であると信じる。これにより、潜在的に、不適法な動作又は実行が引き起こされる。
【００９３】
留意すべきは、フラグ及びデータの例は、単に実例であって、部分的なメモリアクセス及び非コヒーレントなメモリアクセスの無効なメモリ順序付けが潜在的に無効な／不適法な動作をもたらすところの潜在的な環境を表す。結果として、ここで記載される実施例は、如何なる部分メモリアクセスシナリオとともに利用されてもよい。
【００９４】
同様に、図４ｂは、潜在的にメモリ順序付け違背を引き起こす複数のノードの間でのメッセージングのためのプロトコルダイアグラムの他の実施例が表されている。ここで、ＧＱ０は、上述されるように、ラインを要求する代わりに、データに係るキャッシュラインを変形状態に保つ。結果として、データへの書込の前に、ＧＱ０は、変形されたコピーをWbMtoE(D)及びWbEData(D)によりホームノードＣＨＬ１へ返し、排他的状態へと遷移する。次いで、ＧＱ０は、自身のローカルメモリでデータへの部分書込を実行する。なお、上記のように、ＧＱ１は、データに対する読出要求を発する。留意すべきは、上記とは異なって、ＧＱ１でなく、ＧＱ０のみがコンフリクトを検出する。上述されるように、複数のノード／エージェントがコンフリクトを検出してよいが、プロトコルは、一実施例で、少なくとも１つのノードに依存してコンフリクトを検出する。
【００９５】
結果として、ＧＱ０は、解決のために、ホームノードＣＨＬ１へRspCnfltメッセージを供給する。コンフリクトフェーズへの同様の遷移が、同一の応答、すなわち、ホームノードＣＨＬ１からのGnt_FrcAckCnflt、ＧＱ１からのAckCnflt、ＣＨＬ１からのCmp_FwdCode、及び、次いで、前述同様に遅延するメッセージRspIWb(d)及びWbIDataPtl(D)によるデータのライトバックを有して起こる。次いで、フラグはＮｅｗへ更新され、ＩＯＨは、フラグのメモリからの非コヒーレントな読出を実行する。フラグがＮｅｗへ更新されたことによりデータがいつでも回復する状態となっていると確信すると、ＩＯＨはデータの非スヌープ読出を要求する。上記のように、ＩＯＨは、ＧＱ０の部分書込、データの非コヒーレントな読出、及び新しい（Ｎｅｗ）データのライトバックの遅延に応答して、更新された新しい（Ｎｅｗ）データの代わりに、無効な古い（Ｏｌｄ）データを受信する。
【００９６】
従って、一実施例で、単一又は複数のメッセージを有しうるライトバックフェーズは、例えば部分書込のような部分メモリアクセスに関連するコンフリクトフェーズで挿入されて、部分的データをホームノードへ返す。第１の例として、コンフリクトを認めてライトバックマーカーを供給するAckCnfltWbIメッセージは、コンフリクトフェーズで生成される。他の例として、ライトバックメッセージを用いるライトバックフェーズは、AckCnfltメッセージがホームノードへ供給される前に挿入される。更なる他の例として、ライトバックメッセージを用いるライトバックフェーズは、コンフリクトフェーズ内に、すなわち、AckCnfltメッセージの後に含まれる。最後の具体例として、ライトバックフェーズは、Rsp*Post、WbDataPostメッセージ、又はWbPostメッセージを用いるコンフリクトフェーズ内又はその後に含まれ、これにより、AckCnfltメッセージの送信側は、コンフリクトフェーズの完了メッセージを受信した後に割当てを解除されない。
【００９７】
ライトバックフェーズがコンフリクトフェーズで開始されるこのような例は単に実例であり、コンフリクトの際に部分的データをホームノードへ押し返す如何なる既知のメッセージ又は方法も利用されてよい。なお、議論を進めるよう、かかる具体例について、以下、図５ａ乃至７ｃを参照して論じられる。
【００９８】
図５ａを参照すると、コンフリクトフェーズの開始時にコンフリクト確認応答及びデータライトバックメッセージを用いるプロトコルダイアグラムの実施例が表されている。図５ａのシナリオは、ＧＱ０がデータに関連するキャッシュラインの排他的オーナーシップを要求し、ＧＱ１がデータの読出要求を発し、コンフリクトがＧＱ０及びＧＱ１によって検出され、データに関連するホームノードＣＨＬ１がGnt_FrcAckCnfltメッセージをＧＱ０へ送信する点で、図４ａのシナリオに類似する。しかし、一実施例で、プロデューサが単にAckCnfltメッセージだけ供給してホームノードＣＨＬ１からのGnt_FrcAckCnfltの受信を確認することに代えて、結合AckCnfltWbI(D)メッセージがＧＱ０によって生成されて送信される。ここで、AckCnfltWbIメッセージは２つの目的、すなわち、Gnt_FrcAckCnfltの確認応答と、データが例えばWbIDataPtl(D)のようなデータメッセージで供給されるホームノードＣＨＬ１へのマーカとを果たす。
【００９９】
言い換えると、プロデューサＧＱ０がデータへの部分書込を実行し且つホームノードＣＨＬ１からコンフリクトメッセージを受信することに応答して、ＧＱ０は、ホームノードへの部分的データのライトバックを実行する、すなわち、コンフリクトフェーズでライトバックフェーズを実行する。これまで、図４ａで、ライトバックはコンフリクトフェーズが完了した後でその後に実行された。ここで、ＧＱ０は、Cmp_FwdCodeを用いてコンフリクトフェーズの終わりまでに割当てを解除され、結果として、次のトランザクションは、いつ部分的なデータがホームノードＣＨＬ１に達するかに関わらず開始することができる。このことは、ＩＯＨによる無効なデータの取得を生じさせる。
【０１００】
対照的に、図５ａから明らかなように、Cmp_FwdCodeは、部分的データがホームノードＣＨＬ１に返されるか又はそのメモリにコミットされるまで送信されない。結果として、ＧＱ０は割当てを解除されず、フラグを更新する次のトランザクションはデータがＣＨＬ１で更新され且つCmp_FwdCodeメッセージがＧＱ０で受信された後まで始まらない。これにより、結果として、フラグが更新される前にデータが更新されることが確かとなる。従って、ＩＯＨがフラグ、次いでデータの非コヒーレントな読出を実行する場合に、ＣＨＬ１にあるデータはＧＱ０からの最新のコピーであることが保証される。
【０１０１】
同様に、図５ｂを参照すると、コンフリクトフェーズの開始時にコンフリクト確認応答及びデータライトバックメッセージを用いるプロトコルダイアグラムの他の実施例が表されている。ここで、プロトコルフローは、ＧＱ０がデータの変形されたＯｌｄコピーを保持し、そのＯｌｄコピーをホームノードＣＨＬ１へライトバックし、データを新しい値へ更新し、ＧＱ１がデータの読出要求を発し、コンフリクトが検出され、コンフリクトメッセージのフォース確認応答がホームノードＣＨＬ１によって生成されてプロデューサＧＱ０へ送信される点で、図４ａのプロトコルフローと類似する。
【０１０２】
ここで、図５ａを参照して論じられたように、一実施例で、ＧＱ０はデータへの部分書込を実行して、コンフリクトメッセージはＧＱ０によってホームノードＣＨＬ１から受信されるので、AckCnfltWbIメッセージがホームノードＣＨＬ１へ供給される。AckCnfltWbIメッセージは、コンフリクトが確認され且つデータメッセージ（すなわち、WbIDataPtlメッセージ）がデータをホームノードＣＨＬ１へ供給すべきことをホームノードに知らせる。潜在的なタイムワープに係る前述の議論から留意すべきは、WbIDataPtlは潜在的にAckCnfltWbIの前に受信され得る点である。しかし、プロトコルの動作を通して、ＣＨＬ１は、プロトコルフローと一致する方法でいずれも行う。結果として、フラグ・トランザクションは、ＧＱ０がホームノードＣＨＬ１から完了信号を受信するまで開始されない。完了信号は、部分データの受信後しか送信されない。従って、上述されるように、ＩＯＨは、フラグがＮｅｗへ更新されるまでフラグに対してスピニングを行う。フラグの更新は、目下、データがＣＨＬ１で更新された後であることを確かにされ、結果として、適切なメモリ順序付けと、有効なデータがＩＯＨへ供給されることとがもたらされる。
【０１０３】
次に、図６ａを参照すると、コンフリクトフェーズでライトバックフェーズを用いるプロトコルダイアグラムの他の実施例が表されている。上述されるように、図６ａのプロトコルは、少なくとも最初は、図４ａのプロトコルに類似する。対照的に、ホームノードＣＨＬ１からのGnt_FrcAckCnfltメッセージの受信に応答して、プロデューサエージェントＧＱ０はデータへの部分書込を実行し、WbMtoIデータマーカーメッセージ及びWbIDataPtlデータメッセージを用いてホームノードＣＨＬ１へ部分的データをライトバックする。ＧＱ０がライトバックの完了メッセージを受信した後、すなわち、部分的なデータがＣＨＬ１でコミットされ且つ完了メッセージがＣＨＬ１によって送信された後、ＧＱ０はAckCnfltメッセージをホームノードＣＨＬ１へ送信し、ホームノードＣＨＬ１はCmp_FwdCodeメッセージをＧＱ０へ送信する。
【０１０４】
上述されるように、フラグ書込トランザクションは、Cmp_FwdCodeメッセージがＧＱ０によって受信された後まで開始されず、Cmp_FwdCodeメッセージは、新しいデータがＣＨＬ１へ返された後まで送信されない。結果として、ＩＯＨは、フラグがＮｅｗへ更新されるまでデータを読み出さず、一方、フラグは、データがＣＨＬ１でコミットされるまで更新されない。言い換えると、フラグが更新される前にグローバルに観測されるデータのメモリ順序付けが、実施される。
【０１０５】
同様に、図６ｂは、コンフリクトフェーズでライトバックフェーズを用いるプロトコルダイアグラムの他の実施例を表す。ここで、プロトコルフローは、やはり、図４ｂのプロトコルフローに類似する。しかし、上記の図６ａごとく、データへの部分書込を実行し且つホームノードＣＨＬ１からFrcAckCnfltメッセージを受信することに応答して、プロデューサエージェントＧＱ０は新しい（Ｎｅｗ）データのライトバックを実行する。ＧＱ０からのAckCnfltから始まり、ホームノードＣＨＬ１からのCmp_FwdCodeで終わるコンフリクトフェーズは、新しい（Ｎｅｗ）データの受信に応答してＣＨＬ１からの完了がＧＱ０によって受信されるまで始まらない。結果として、フラグ値の更新の前にホームノードＣＨＬ１でデータを更新するメモリ順序付けが、実施される。これにより、結果として、正確な／有効な新しい（Ｎｅｗ）データがコンシューマＩＯＨへ供給される。
【０１０６】
図６ｃを参照すると、データのライトバックを有するライトバックフェーズを用いるプロトコルダイアグラムの他の実施例が表されている。ここで、ライトバックフェーズは、図６ａのライトバックフェーズに類似する。しかし、ライトバックフェーズは後で実行される。更に、ここで、RspIWbメッセージ及びWbIDataPtlメッセージを用いる代わりに、上記の図４ａのごとく、WbMtoIメッセージ及びWbIDataPtlメッセージがデータのライトバックのために用いられる。言い換えると、ライトバックフェーズが、応答フェーズの代わりにコンフリクトフェーズで用いられる。これは、図４ａのようにＣＨＬ１からＧＱ０への完了を伴わないデータの単なる転送に代えて、ＧＱ０がフラグ・トランザクションに移る前にホームノードＣＨＬ１からの完了メッセージを要求する。
【０１０７】
図７ａを参照すると、データのライトバックのためにポスタブル書込メッセージを用いるプロトコルダイアグラムの実施例が表されている。ここで、フローは、図６ｃのフローに極めて類似する。しかし、留意すべきは、RspIWbPost(D)マーカーメッセージがWbMtoIマーカーメッセージの代わりに用いられる点である。従って、一実施例で、RspIWbPostによって開始されるフェーズは応答フェーズと呼ばれる。しかし、完了信号がホームノードＣＨＬ１からＧＱ０で受信されるまで適切に応答していたＧＱ０の割当てを解除しないRspIWbPostの機能性に留意すべきである。明らかなように、動作において、RspIWbPostは、ＧＱ０が、ＧＱ０がフラグ・トランザクションに移ることができる前にホームノードＣＨＬ１からの完了を待つ点で、ＧＱ０がフラグ・トランザクションに移る前に完了を待たない図４ａのRspIWbよりも、図６ｃのWbMtoIに類似する。言い換えると、RspIWbPostは、RspIWbPostを送信したノードＧＱ０が割当てを解除される前に完了を待つ“ポスタブル書込（postable  write）”を示す。従って、一実施例で、RspIWbPostの利用は、ライトバックフェーズと呼ばれる。
【０１０８】
同様に、図７ｂは、データのライトバックのためにポスタブル書込メッセージを用いるプロトコルダイアグラムの他の実施例を表す。ここで、留意すべきは、“ポスタブル書込”は、マーカーメッセージRspIWbの代わりに、データメッセージWbIDataPtlPostによって示され得る点である。更に、図７ｃに表されるように、別のメッセージWbPostは、RspIWb及びWbIDataPtlが一実施例でライトバックフェーズの部分であることを示すために用いられてよい。この場合に、ＧＱ０は、メモリへの部分的データのコミットに応答してホームノードＣＨＬ１からの完了が受信されるまで割当てを解除されない。
【０１０９】
以上から明らかなように、一実施例で、コンフリクトフェーズでライトバックフェーズを実行し、挿入し、そのためのメッセージを生成、又は開始することは、コンフリクトフェーズに対して異なる時間的関係を有する。一実施例で、コンフリクトフェーズでのライトバックフェーズは、例えば、ライトバックマーカーメッセージと結合されている確認応答コンフリクトメッセージ、すなわち、AckCnfltWbI(D)のように、コンフリクトフェーズの開始時に含める。他の実施例で、コンフリクトフェーズでのライトバックフェーズは、例えば、Gnt_FrcAckCnfltの後であって且つAckCnfltメッセージの前、すなわち、図６ａ及び６ｂに関する議論のように、コンフリクトフェーズの前に含める。更なる他の実施例で、コンフリクトフェーズでのライトバックフェーズは、例えば、AckCnflt及びCmp_FwdCodeメッセージの後、すなわち、図６ｃ乃至７ｃに関する議論のように、コンフリクトフェーズの後に含める。
【０１１０】
更に、ライトバックフェーズは、一実施例で、例えばAckCnfltWbI、WbMtoI、及びWbIDataPtlのようなライトバックメッセージを参照する。他の実施例で、ライトバックフェーズは、また、例えば、RspIWbPost、WbIDataPtlPost、及びWbPostのような、ライトバック機能性をエミュレートする応答関連メッセージを有する。一例として、ライトバックフェーズの機能性をエミュレートすることは、ライトバックの完了メッセージが受信されるまで送信エージェントの割当てを解除しないこと又は送信エージェントが待機することを有する。
【０１１１】
従って、以上から明らかなように、メモリ順序づけは、部分メモリアクセス及び非スヌープ／非コヒーレントアクセスが行われる場合に、コンフリクトが検出される場合でさえ実施され得る。従って、データが読み出されることを示すようフラグを設定する第２のエージェントからのデータに第１のエージェントが付随している場合等の環境下で、適切なメモリ順序付けの実施は、一貫性のない無効なデータの代わりに、有効な／新しいデータが供給されることを確かにする。
【０１１２】
ここで使用されるモジュールは、如何なるハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せも言う。しばしば、別個なものとして表されるモジュール境界は一般的に変化し、潜在的には重なる。例えば、第１及び第２のモジュールは、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組合せを共有しながら、潜在的に或る独立したハードウェア、ソフトウェア、又はファームウェアを保ってよい。一実施例で、用語「ロジック」の使用は、例えばトランジスタや抵抗等のハードウェア、及び例えばプログラム可能なロジックデバイス等の他のハードウェアを含む。なお、他の実施例で、「ロジック」は、また、例えばファームウェア又はミクロコード等の、ハードウェアと一体化したソフトウェア又はコードを含む。
【０１１３】
ここで使用される「値」は、数、状態（ステート）、論理状態、又は２進論理状態のあらゆる既知の表現を含む。しばしば、論理レベル、論理変数、又は論理値の使用は、“１”及び“０”と呼ばれることがある。これは容易に２進論理状態を表す。例えば、“１”は高論理レベルに言及し、“０”は低論理レベルに言及する。一実施例で、トランジスタ又はフラッシュセル等の記憶セルは、単一の論理値又は複数の論理値を保持する能力を有してよい。なお、コンピュータシステムでの値の他の表現が使用されている。例えば、１０進数“１０”は、また、“１０１０”の２進値及び１６進文字“Ａ”として表されてもよい。従って、「値」は、コンピュータシステムで保持され得る情報のあらゆる表現を含む。
【０１１４】
更に、「状態（ステート）」は値又は値の一部分によって表され得る。一例として、論理“１”等の第１の値はデフォルト又は初期状態を表すことができ、一方、論理“０”等の第２の値は非デフォルト状態を表すことができる。更に、用語「リセット」及び「設定（セット）」は、一実施例で、夫々、デフォルトの及び更新された値又は状態を言う。例えば、デフォルト値は、潜在的に、高論理値、すなわちリセットを有し、一方、更新される値は、潜在的に、低論理値、すなわちセットを有する。留意すべきは、値の如何なる組合せも、あらゆる数の状態を表現するために利用される点である。
【０１１５】
前述の方法、ハードウェア、ソフトウェア、ファームウェア又はコードの実施例は、処理要素によって実行可能である機械アクセス可能な又は機械読出可能な媒体に格納されている命令又はコードを介して実施されてよい。機械アクセス可能／読出可能な媒体は、コンピュータ又は電子システム等の機械によって読出可能な形式で情報を提供（すなわち、記憶及び／又は送信）するあらゆるメカニズムを有する。例えば、機械アクセス可能な媒体には、静的ＲＡＭ（ＳＲＡＭ）又は動的ＲＡＭ（ＤＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）、ＲＯＭ、磁気若しくは光記憶媒体、フラッシュメモリデバイス、電気記憶デバイス、光記憶デバイス、音響記憶デバイス、又は他の形態の伝播信号（例えば、搬送波、赤外線信号、デジタル信号）記憶デバイス等がある。例えば、機械は、例えば搬送波等の伝播信号で送信される情報を保持することができる媒体から伝播信号を受信することにより記憶媒体にアクセスしてよい。
【０１１６】
本明細書の全体を通して“一実施例”又は“実施例”との言及は、その実施形態に関連して記載される特定の特徴、構造、又は事項が本発明の少なくとも１つの実施例に含まれることを意味する。このように、本明細書の全体を通して様々な場所でのフレーズ“一実施例で”又は“実施例で”の出現は、必ずしも全て同じ実施形態に言及しているわけではない。更に、特定の特徴、構成、又は事項は、１又はそれ以上の実施例で何らかの適切な方法で組み合わされてよい。
【０１１７】
以上、詳細な記載が特定の具体的な実施形態を参照して与えられた。なお、様々な改良及び変形が、添付の特許請求の範囲に記載される本発明の幅広い精神及び適用範囲から外れることなく行われてよいことは明らかである。従って、明細書及び図面は、限定の観点よりむしろ例示の観点で受け止められるべきである。更に、実施例及び他の例となる用語の使用は、必ずしも同じ実施例又は同じ例に言及しているわけではなく、潜在的に同じ実施例はもちろん異なる個別の実施例に言及していることがある。
【符号の説明】
【０１１８】
１００  相互接続アーキテクチャ
１０１  ネットワーク構造
１０５，１０６  キャッシングエージェント
１１０〜１１２  ホームエージェント
２０５，２１０  プロセッサ
２０６，２０７，２１１，２１２  処理要素（ＰＥ）
２０８，２１３  リソース
２０９，２１４  メモリ
２２０〜２２２  ポイント・ツー・ポイントリンク
２３０  チップセット
２６１〜２６６  相互接続及びＩ／Ｏデバイス
３０２ａ，３０２ｂ  物理レイヤ
３０３ａ，３０３ｂ  リンクレイヤ
３０４ａ，３０４ｂ  ルーティングレイヤ
３０５ａ，３０５ｂ  トランスポートレイヤ
３０６ａ，３０６ｂ  プロトコルレイヤ
３５１，３５２  双方向差動シグナリング対
【図１】
2010027048.tif 000003
【図２】
2010027048.tif 000004
【図３】
2010027048.tif 000005
【図４ａ】
2010027048.tif 000006
【図４ｂ】
2010027048.tif 000007
【図５ａ】
2010027048.tif 000008
【図５ｂ】
2010027048.tif 000009
【図６ａ】
2010027048.tif 000010
【図６ｂ】
2010027048.tif 000011
【図６ｃ】
2010027048.tif 000012
【図７ａ】
2010027048.tif 000013
【図７ｂ】
2010027048.tif 000014
【図７ｃ】
2010027048.tif 000015
【外国語明細書】
2010027048000001.pdf
2010027048000002.pdf
2010027048000003.pdf
2010027048000004.pdf