(57)【要約】      （修正有）【課題】クロスダイ・インタフェース（ＣＤＩ）スヌープ及び／又はＧＯ（又は完了）メッセージの順序付けの技術に関する方法及び装置を提供する。【解決手段】スヌープメッセージと完了メッセージの順序は、２つのビットの状態に少なくとも基づいて決定される。スヌープメッセージと完了メッセージは、第１の集積回路ダイ３０２と第２の集積回路ダイ３０４との間で交換される。第１の集積回路ダイと第２の集積回路ダイは、第１のインタフェースと第２のインタフェースを通して結合され、スヌープメッセージと完了メッセージは、第１のインタフェースと第２のインタフェースの少なくとも一方を介して交換される。【選択図】図３
2016119066.tif 000002
【特許請求の範囲】
【請求項１】
２つのビットの状態に少なくとも基づいて、第１の集積回路ダイと第２の集積回路ダイとの間で交換されるべきスヌープメッセージと完了メッセージの順序を決定するロジック
を備える機器であって、
前記第１の集積回路ダイ及び前記第２の集積回路ダイは、第１のインタフェース及び第２のインタフェースを通して結合されることになり、
前記スヌープメッセージ及び前記完了メッセージは、前記第１のインタフェース及び前記第２のインタフェースの少なくとも一方を介して交換されることになる、
機器。
【請求項２】
前記第１のインタフェースは、コヒーレント・クロスダイ・インタフェース（ＣＤＩ）を用いるオンダイ・ファブリック（ＯＳＦ）インタフェースを備える、
請求項１に記載の機器。
【請求項３】
前記コヒーレントＣＤＩは、取付けデバイスと前記ＯＳＦインタフェースとの間の通信のためのコヒーレンスプロトコルを提供する、
請求項２に記載の機器。
【請求項４】
前記第２のインタフェースは、非コヒーレントＣＤＩを備える、
請求項１に記載の機器。
【請求項５】
前記２つのビットは、スヌープエポックビットと、完了エポックビットとを備える、
請求項１に記載の機器。
【請求項６】
前記スヌープメッセージはアドレスを備え、前記完了メッセージはアドレスを除外する、
請求項１に記載の機器。
【請求項７】
前記ロジックと、１つ以上のプロセッサコアを有するプロセッサと、メモリとが、同じ集積デバイス上にある、
請求項１に記載の機器。
【請求項８】
前記第１のインタフェースと前記第２のインタフェースの少なくとも一方が、ポイントツーポイントリンクを備える、
請求項１に記載の機器。
【請求項９】
２つのビットの状態に少なくとも基づいて、第１の集積回路ダイと第２の集積回路ダイとの間で交換されるべきスヌープメッセージと完了メッセージの順序を決定するステップ
を備える方法あって、
前記第１の集積回路ダイ及び前記第２の集積回路ダイは、第１のインタフェース及び第２のインタフェースを通して結合され、
前記スヌープメッセージ及び前記完了メッセージは、前記第１のインタフェース及び前記第２のインタフェースの少なくとも一方を介して交換されることになる、
方法。
【請求項１０】
前記第１のインタフェースは、コヒーレント・クロスダイ・インタフェース（ＣＤＩ）を用いるオンダイ・ファブリック（ＯＳＦ）インタフェースを備える、
請求項９に記載の方法。
【請求項１１】
前記コヒーレントＣＤＩが、取付けデバイスと前記ＯＳＦインタフェースとの間の通信のためのコヒーレンスプロトコルを提供するステップ、
を更に備える請求項１０に記載の方法。
【請求項１２】
前記第２のインタフェースは、非コヒーレント・リンク層を備える、
請求項９に記載の方法。
【請求項１３】
前記２つのビットは、スヌープエポックビットと、完了エポックビットとを備える、
請求項９に記載の方法。
【請求項１４】
前記スヌープメッセージはアドレスを備え、前記完了メッセージはアドレスを除外する、
請求項９に記載の方法。
【請求項１５】
システムであって、
１つ以上のプロセッサコアを有するプロセッサと；
前記プロセッサに結合されるディスプレイデバイスと；
２つのビットの状態に少なくとも基づいて、第１の集積回路ダイと第２の集積回路ダイとの間で交換されるべきスヌープメッセージと完了メッセージの順序を決定するロジックと；
を備え、
前記第１の集積回路ダイ及び前記第２の集積回路ダイは、第１のインタフェース及び第２のインタフェースを通して結合されることになり、
前記スヌープメッセージ及び前記完了メッセージは、前記第１のインタフェース及び前記第２のインタフェースの少なくとも一方を介して交換されることになる、
システム。
【請求項１６】
前記第１のインタフェースは、コヒーレント・クロスダイ・インタフェース（ＣＤＩ）を用いるオンダイ・ファブリック（ＯＳＦ）インタフェースを備える、
請求項１５に記載のシステム。
【請求項１７】
前記コヒーレントＣＤＩは、取付けデバイスと前記ＯＳＦインタフェースとの間の通信のためのコヒーレンスプロトコルを提供する、
請求項１６に記載のシステム。
【請求項１８】
前記第２のインタフェースは、非コヒーレント・リンク層を備える、
請求項１５に記載のシステム。
【請求項１９】
前記２つのビットは、スヌープエポックビットと、完了エポックビットとを備える、
請求項１５に記載のシステム。
【請求項２０】
前記スヌープメッセージはアドレスを備え、前記完了メッセージはアドレスを除外する、
請求項１５に記載のシステム。
【請求項２１】
前記ロジックと、１つ以上のプロセッサコアを有する前記プロセッサと、メモリとが、同じ集積デバイス上にある、
請求項１５に記載のシステム。
【請求項２２】
前記第１のインタフェースと前記第２のインタフェースの少なくとも一方が、ポイントツーポイントリンクを備える、
請求項１５に記載のシステム。
【請求項２３】
プロセッサによって実行されると、該プロセッサに、請求項９乃至１４のいずれか一項に記載の１つ以上の動作を実行させる１つ以上の命令を備える、コンピュータプログラム。
【請求項２４】
請求項９乃至１４のいずれか一項に記載の方法を実行する手段を備える機器。
【請求項２５】
請求項２３に記載のコンピュータプログラムを記憶したコンピュータ読取可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に電子工学の分野に関する。より具体的には、実施形態は、クロスダイ・インタフェース（ＣＤＩ：Cross-Die  Interface）スヌープ及び／又はグローバル観測（ＧＯ：Global  Observation）メッセージの順序付けのための技術に関する。
【図面の簡単な説明】
【０００２】
詳細な説明は添付の図面を参照して提供される。図面において、参照番号の最も左の桁は、その参照番号が最初に現れる図面を特定する。異なる図面における同じ参照番号の使用は、同様又は同一のアイテムを示す。
【図１】本明細書で検討される様々な実施形態を実装するのに使用され得るコンピューティングシステムの実施形態を示すブロック図である。
【図２】本明細書で検討される１つ以上の実施形態を実装するのに使用され得るコンピューティングシステムの実施形態を示すブロック図である。
【図３】ある実施形態に係るマルチダイ相互接続構成を示すブロック図である。
【図４】本明細書で検討される１つ以上の実施形態を実装するのに使用され得るコンピューティングシステムの実施形態を示すブロック図である。
【図５】本明細書で検討される１つ以上の実施形態を実装するのに使用され得るコンピューティングシステムの実施形態を示すブロック図である。
【図６】ある実施形態に係るシステムオンチップ（ＳＯＣ）パッケージを示すブロック図である。
【発明を実施するための形態】
【０００３】
以下の説明では、様々な実施形態の完全な理解を与えるために、様々な具体的な詳細が説明される。しかしながら、一部の実施形態は、そのような具体的な詳細を用いずに実施されてもよい。他の例では、特定の実施形態を曖昧にしないように、周知の方法、プロシージャ、コンポーネント及び回路を詳細には説明していないことがある。実施形態の様々な態様は、半導体集積回路（「ハードウェア」）、１つ以上のプログラムに編成されるコンピュータ読取可能な命令（「ソフトウェア」）又はハードウェアとソフトウェアの何らかの組合せといった、様々な手段を使用して実施され得る。この開示の目的では、「ロジック」への言及は、ハードウェア、ソフトウェア又はその何らかの組合せのいずれかを意味するものとする。
【０００４】
本明細書で検討されるように、「スヌープ（snoop）」又はバス・スヌープは、一般的に、キャッシュのコヒーレンシーを達成するように共有メモリ内で使用される技術を指す。例えばスヌープメッセージを使用して、複数の共有メモリデバイスにまたがるキャッシュラインのステータスを決定し、２つ以上の位置／キャッシュ内に存在する同じメモリ位置が、共有メモリデバイスを用いるコンピューティングシステムにまたがる他の対応するメモリ位置とのコヒーレント（一貫性）を保つことを保証することができる。さらに、ＧＯ（すなわち、グローバル観測（Global  Observation））メッセージは、一般的に、１つ以上のオペレーションの完了を示すメッセージタイプを示す。また、「フリット（flit）」（フロー制御デジット（flow  control  digit）の省略である）は、フロー制御の最も小さい単位を指す。メッセージは一般的に、複数のフリットで作られる。加えて、「フリット」は、一実施形態では８０ビットを含むことがあり、この場合、例えばエラー検出に８ビット、リンク層ヘッダに８ビット、そしてデータに６４ビットを有することがあるが、他の構成も使用することができる。
【０００５】
一部の実施形態において、コヒーレント・クロスダイ・インタフェース（ＣＤＩ）スヌープメッセージ及び／又はＧＯ、すなわちグローバル観測（「完了」とも呼ばれる）メッセージの順序付けを提供する。より具体的には、コヒーレントＣＤＩは、スヌープ及びＧＯメッセージの順序付けに関するルールを含み、このルールは、ＧＯメッセージはスヌープメッセージを渡す（pass）ことができるが、スヌープメッセージはＧＯメッセージを同じアドレスに渡さないことを要する（そうでなければ、コヒーレンシー及びＴＳＯ（Total  Store  Ordering）のメモリコヒーレンシ・モデルが壊れる可能性がある）。スヌープメッセージはアドレスを含むが、ＧＯメッセージはそうでないので、このルールを実装することは複雑な可能性がある。したがって、全てのＧＯ／スヌープメッセージを、潜在的に競合するものとして取り扱う必要がある。このために、実施形態は、時間枠を、ＧＯ／スヌープメッセージが到着する時に関連する「エポック（時期）（epoch）」へ分割し、これらのエポックは、「エポックビット」と呼ばれるビットに関連付けられる。ある実施形態は、エポックビット及びフリットのパッキングルールを用いて、コヒーレントＣＤＩフリットを効率的にパックして、フリット内にいずれの競合メッセージもないことを確実にする。次いで、アンパックルールを使用して、スヌープ／ＧＯ順序付けルールに整合するよう、エポックビットを受信側で再作成することができる。
【０００６】
さらに、本明細書で検討される技術を、図１〜図６に関連して説明されるものを含め、（例えばデスクトップ、ワークステーション、サーバ、ラックシステム等といった非モバイルのコンピューティングデバイス、あるいはスマートフォン、タブレット、ＵＭＰＣ（ウルトラモバイル・パーソナルコンピュータ）、ラップトップコンピュータ、ウルトラブック（登録商標）コンピューティングデバイス、スマートウォッチ、スマートグラス等といったモバイルコンピューティングデバイスを含む）様々なコンピューティングシステムに提供することができる。より具体的には、図１は、ある実施形態に係るコンピューティングシステム１００のブロック図を示している。システム１００は、１つ以上のエージェント１０２−１〜１０２−Ｍ（ここでは、まとめて「複数のエージェント１０２」、あるいはより一般的に「エージェント１０２」と呼ばれる）を含むことができる。ある実施形態では、複数のエージェント１０２のうちの１つ以上を、図４〜図６に関連して検討されるコンピューティングシステムのような、コンピューティングシステムのコンポーネントのうちのいずれかとすることができる。
【０００７】
図１に示されるように、エージェント１０２は、オンダイ・システム・ファブリック（ＯＳＦ：On-die  System  Fabric）といった一次ファブリック（primary  fabric）１０４を介して通信することができる。したがって、エージェント１０２及びファブリック１０４は、ある実施形態では、同じ集積回路のダイ上に存在することができる。本明細書で検討されるように、「ＯＳＦ」は、走査可能、構成可能及び／又は製品固有のオンダイ・システム・ファブリックを指すことができる。例えば複数のエージェント１０２の各々は、（例えば別のファブリックに結合するための）ブリッジ、ＩＰ（知的財産：Intellectual  Property）ブロック又はファブリック１０４を介して結合される電子デバイスの別のコンポーネントとすることができる。一実施形態では、ファブリック１０４は、（コンピューティングデバイスといった）様々なエージェントがデータを通信することを可能にするコンピュータネットワークを含むことができる。ある実施形態では、ファブリック１０４は、１つ以上の相互接続（又は相互接続ネットワーク）を含むことができ、この接続は、シリアル（例えばポイントツーポイント）リンク及び／又は（ある実施形態ではリングとして構成され得る）共有通信ネットワークを介して通信する。各リンクは、１つ以上のレーンを含むことができる。例えば一部の実施形態は、ＦＢＤ（Fully  Buffered  Dual）のインラインメモリモジュールを用いた通信を可能にするリンクに対するコンポーネントデバッグ又は検証を容易にすることができ、この場合、例えばＦＢＤリンクは、メモリモジュールを（プロセッサ又はメモリハブのような）ホストコントローラデバイスに結合するためのシリアルリンクである。デバッグ情報を、ＦＢＤチャネルホストから転送することができ、これにより、デバッグ情報を、（１つ以上のロジックアナライザのような）チャネルトラフィック・トレース・キャプチャ・ツールによってチャネルに従って観測することができる。
【０００８】
一実施形態において、システム１００は、階層化プロトコルスキームをサポートすることができ、このスキームは、物理層、リンク層、ルーティング層、トランスポート層及び／又はプロトコル層を含むことができる。ファブリック１０４は更に、あるプロトコル（例えばキャッシュプロセッサ又はキャッシュ認識メモリコントローラ）から、ポイントツーポイント又は共有ネットワーク用の別のプロトコルへの（例えばパケットの形式での）データの伝送を容易にすることができる。また、実施形態によっては、ファブリック１０４は、１つ以上のキャッシュコヒーレント・プロトコルに従う通信を提供することができる。
【０００９】
さらに、図１内で矢印の方向によって示されるように、エージェント１０２は、ファブリック１０４を介してデータを送信及び／又は受信することができる。したがって、一部のエージェントは、一方向のリンクを使用することができ、他のエージェントは通信に双方向リンクを使用することができる。例えば（エージェント１０２−Ｍのような）１以上のエージェントは、（例えば一方向のリンク１０６を介して）データを伝送することができ、（エージェント１０２−２のような）他のエージェントは、（例えば一方向リンク１０８を介して）データを受信することができ、一方、（エージェント１０２−１のような）一部のエージェントは、（例えば双方向リンク１１０を介して）データの送信と受信の双方を行うことができる。一部の実施形態において、リンク１０６〜１１０は、ＩＰブロックが複数の設計にまたがって相互運用することを可能にするプロトコル及び／又はシグナリングを提供するＯＳＦインタフェースである。
【００１０】
ある実施形態では、エージェント１０２を結合するＯＳＦインタフェース（例えばリンク１０６〜１１０）は、一次チャネルとサイドバンド・チャネルと呼ばれる２つのポートを提供することができる。一次チャネルは、（ａ）ピア間のデータ転送及び／又はアップストリームのための高性能なインタフェースとすることができ；（ｂ）メモリ（例えば３２ビット、４４ビット）、入出力（ＩＯ又はＩ／Ｏ）、構成及びメッセージトランザクションをサポートすることができ；（ｃ）周辺コンポーネント相互接続（ＰＣＩ）エクスプレス（２００８年８月のＰＣＩエクスプレス基本仕様３．０、リビジョン０．５による「ＰＣＩｅ」）の順序付けルール及び／又は列挙をサポートすることができ；（ｄ）スプリットトランザクションプロトコルをサポートすることができ；かつ／又は（ｅ）ＰＣＩｅヘッダ情報をマップすることができる。サイドバンド・チャネルは、（ｉ）サイドバンド（本明細書では交換可能に「帯域外」と呼ばれることもある）情報を通信し、かつ特別なワイヤをなくすよう、標準インタフェースを提供することができ；（ｉｉ）ポイントツーポイントネットワークを提供することができ；（ｉｉｉ）ステータス、電力管理、構成シャドーイング、テストモード等に使用することができ；かつ／又は（ｖ）（例えば一次データ転送では意図されない）低性能のために使用することができる。
【００１１】
加えて、エージェント１０２のうちの少なくとも１つをホームエージェントとすることができ、エージェント１０２のうちの１つ以上を、要求又はキャッシュエージェントとすることができる。一般に、要求／キャッシュエージェントは、対応する「ホームエージェント」が関連付けられるメモリアドレスへのアクセスを求める要求を、ホームノード／エージェントに送信する。さらに、ある実施形態では、（エージェント１０２−１として１つのみが示されているが）エージェント１０２のうちの１つ以上が、メモリ１２０のような（そのエージェント専用の、あるいは他のエージェントと共有の）メモリへのアクセスを有することができる。一部の実施形態では、エージェント１０２の各々（又は少なくとも１つ）を、エージェントとして同じダイ上にあるか、そうでなければエージェントによってアクセス可能なメモリ１２０に結合することができる。また、図１に示されるように、エージェント１０２は、本明細書において例えば図２〜図６に関連して更に説明されるように、スヌープ及び／又はＧＯメッセージ順序付けを容易にするコヒーレントＣＤＩロジック１５０を含む。
【００１２】
図２は、ある実施形態に係るコンピューティングシステム２００を示すブロック図である。システム２００は、複数のソケット２０２〜２０８（４つ示されているが、一部の実施形態では、より多くの又はより少ないソケットを有することができる）を含む。各ソケットはプロセッサを含む。また、システム２００内の様々なエージェントは、ロジック１５０により通信することができる。ロジック１５０はアイテム２０２及びＭＣ２／ＨＡ２内にのみ示されているが、ロジック１５０をシステム２００の他のエージェント内に提供することができる。さらに、実装に応じて、より多くの又はより少ないロジックブロックをシステム内に存在させることができる。加えて、各ソケットはポイントツーポイント（ＰｔＰ）リンクを介して、あるいはQuick  Pathインターコネクト（ＱＰＩ）、ＭＩＰＩ（Mobile  Industry  Processor  Interface）等といった異なる相互接続を介して他のソケットと結合される。図１のファブリック１０４に関連して説明したように、各ソケットは、システムメモリのローカル部分に結合され、例えば動的ランダムアクセスメモリ（ＤＲＡＭ）を含む、複数のＤＩＭＭ（デュアル・インライン・メモリ・モジュール）によって形成される。
【００１３】
別の実施形態において、ネットワークファブリックを任意のシステムオンチップ（ＳｏＣ又はＳＯＣ）アプリケーションに使用することができ、ネットワークファブリックは、ＡＭＢＡ（Advanced  Microcontroller  Bus  Architecture）用のＡＲＭ準拠インタフェース、ＯＣＰ（Open  Core  Protocol）、ＭＩＰＩ（Mobile  Industry  Processor  Interface）、ＰＣＩ（Peripheral  Component  Interconnect）又はＰＣＩｅ（Peripheral  Component  Interconnect  express）といった、カスタム又は標準インタフェースを用いる。
【００１４】
図２に示されるように、各ソケットは、（ＭＣ０／ＨＡ０〜ＭＣ３／ＨＡ３のような）メモリコントローラ（ＭＣ）／ホームエージェント（ＨＡ）に結合される。メモリコントローラは、（図９のメモリ９１２のような）システムメモリの一部であり得る、対応するローカルメモリ（ＭＥＭ０〜ＭＥＭ３とラベル付けされる）に結合される。一部の実施形態において、（ＭＣ０／ＨＡ０〜ＭＣ３／ＨＡ３のような）メモリコントローラ（ＭＣ）／ホームエージェント（ＨＡ）は、図１のエージェント１０２−１と同じ又は同様のものとすることができ、ＭＥＭ０〜ＭＥＭ３とラベル付けされるメモリは、本明細書における図面のいずれかに関連して説明されるメモリデバイスと同じ又は同様のものとすることができる。また、一部の実施形態では、ＭＥＭ０〜ＭＥＭ３は、例えばマスターとスレーブのように、データをミラーリングするように構成され得る。また、システム２００の１つ以上のコンポーネントを、一部の実施形態では、同じ集積回路ダイ上に含めることができる。
【００１５】
さらに、（図２に示されるような）一実装は、ミラーリングを伴うソケットグルーレス構成のためのものである。例えば（ＭＣ０／ＨＡ０といった）メモリコントローラに割り当てられるデータは、ＰｔＰリンクを介して（ＭＣ３／ＨＡ３といった）別のメモリコントローラにミラーリングされる。
【００１６】
図３は、一実施形態に係るマルチダイ相互接続構成のブロック図である。また、ロジック１５０は、一部の実施形態に関連して説明されるように、スヌープ／ＧＯメッセージ順序付けを容易にするよう、図３に示されるコンポーネントのうちの１つ以上を含むことができる。ある実施形態では、図３のクロスダイ・インタフェース（ＣＤＩ）３０８を使用して複数の集積回路ダイ／デバイスを結合する。
【００１７】
一部の実施形態では、第１の集積回路（ＩＣ）ダイ３０２と第２のＩＣダイ３０４との間の２つの（例えば一意の）インタフェースのリンクが提供される。これらのインタフェースのうちの１つは、オンダイ・システム・ファブリック（ＯＳＦ）３０６（図１のＯＳＦ１０２と同じ又は同様であってよい）に対するものであり、取付けデバイスとＯＳＦ３０６との間でコヒーレント・プロトコル及び非コヒーレント・プロトコルを使用する。ＯＳＦは、ある実施形態では複数のインタフェースを含む（一部の実施形態では、２００超のワイヤ幅とすることができる）。他のインタフェースは、クロスダイ・インタフェース（ＣＤＩ）３０８に対するものであり、これは、５０レーン幅とすることができる。一実施形態において、ＣＤＩはコヒーレント・プロトコル・インタフェース３０５のメッセージを４００ビットのフリットにパックする。一実施形態は、スヌープ及び／又はＧＯメッセージの順序付けの要件に依然として従いつつ、コヒーレントＣＤＩメッセージを効率的にパックする。一般に、順序付けの要件は、ＧＯはスヌープを渡すことができるが、スヌープはＧＯをプッシュすることである。
【００１８】
１つの以前の解決策は、ＯＳＦの全てのメッセージインタフェースを広げることであったであろう（これは、非常に実現困難なことであり得る）。例えば５０レーンの８ＵＩ（すなわち８ユニット間隔（Unit  Interval））のインタフェース（又は４００ビットのフリット）では、ＯＳＦから受け取った全てのメッセージ通信を、（数千のワイヤインタフェースを含むことができる）二次ダイへとパックして転送することができる。ＯＳＦ３０６上のコヒーレントＣＤＩでは、単一のレシーバ宛てのほとんどのメッセージは、スヌープ及びＧＯを除いて順序を有さない。別の解決策は、単一のメッセージを１つのフリットで一度に送信することであり、これは非常に非効率的なことであり得る。
【００１９】
以前に説明したように、スヌープ及びＧＯメッセージの順序付けに関するコヒーレントＣＤＩルールは、ＧＯメッセージがスヌープを渡すことができるが、スヌープメッセージはＧＯメッセージを同じアドレスに渡さないことである（そうでなければ、コヒーレンシー及びＴＳＯメモリの一貫性モデルが壊れる可能性がある）。この複雑性を生じる１つの項目は、スヌープメッセージはアドレスを含むが、ＧＯメッセージはそうでないことである。したがって、全てのＧＯ／スヌープメッセージを、潜在的に競合するものとして扱う必要がある。このために、ある実施形態では、エポックビット及びフリットのパッキングルールを使用して、コヒーレントＣＤＩフリットを効率的にパックし、フリット内に競合するメッセージが存在しないことを保証する。その後、アンパックルールを使用して、受信側でエポックビットを再作成し、スヌープ／ＧＯ順序付けルールを維持することができる。
【００２０】
さらに、一部の実施形態は、フリットメッセージ内のいずれの追加のビットも使用することなく、コヒーレントＣＤＩ順序付けを保証しつつ、できるだけ多くのスヌープ及び／又はＧＯメッセージを単一のフリット内にパックすることを可能にする。さらに、そのような技術は、ＴＸ／ＲＸ（送信／受信）回路のためにフリット内のいずれかの追加のビットを消費（burn）又は無駄にすることを防いで同期を維持するだけでなく、できるだけ多くのメッセージをフリット内に置くように、フリットの効率的なパックを可能にする。
【００２１】
コヒーレントＣＤＩの順序付け要件を保証する別の方法は、単一のＦＩＦＯ（先入れ先出し）バッファ内のメッセージを順序付けることを要するが、この解決策では、かなり多くの結合構造又は多重ビットが使用される（また、ＣＤＩはＯＳＦ相互接続よりもかなり狭いので、より大きな構造又は多重ビットが、当該大きな構造にアクセスすること及び／又は追加の情報を通信することに関連する待ち時間に起因して、リンクスピードを低下させる可能性がある）。対照的に、一部の実施形態は、ＣＤＩ  ＴＸ／ＲＸロジック内で２つのビットのみを使用して、潜在的な依存性を追跡する。これらの２つのビットは、ＴＸ／ＲＸロジック間では送信されないが、各々の側の記憶構造内に存在する。このアプローチは、リンクを介してこの情報を送信することを要する代わりに、ローカルでの決定／アクセスを伴う、より簡単な解決策を提供し、その結果として、例えばより高い信頼性、電力消費の低減、遅延の低減及び／又はスピードの向上が得られる。ＲＸロジックでは、ＧＯ及びスヌープメッセージがアンパックされると、コヒーレント・プロトコル・インタフェース３０５における伝送に先行して、これらの２つのビット（ここでは、時々「エポックビット」とも呼ばれる）が再生成される。
【００２２】
図３を参照すると、一次ＩＣ３０２と二次ＩＣ３０４との間において、コヒーレント・プロトコル・インタフェースは概して左側に示されており、非コヒーレント・プロトコル・インタフェースは概して右側に示されている。図３では、「ＡＲＢ／ＭＵＸ」３１０は、多重プロトコルリンク層の間、一実施形態においては、図３に示されるようなコヒーレント・プロトコル層と非コヒーレント・プロトコル層の出力間を仲裁する、アービトレーションロジック（arbitration  logic）／マルチプレクサを指す。ＣＤＩ物理（ＰＨＹ）層３０７は、フリットの粒度で多重化されるプロトコルをトランスポートする。
【００２３】
一部の実施形態では、（一次ＩＣと二次ＩＣとの間のＣＤＩコヒーレントパイプのために開発される）次の構成／ルールのうちの１つ以上が、スヌープ／ＧＯ順序付けを保証する：
（１）ＯＳＦ３０２インタフェースでは、別個のスヌープ／ＧＯ  ＦＩＦＯに、スヌープ／ＧＯエポックを追跡するためのエントリごとに追加ビット及び現在のエポックを追跡するための更なる１ビットが与えられる；
（ａ）エポックビットが、キューへの入力において生成され、読み取られて、パッキング／送信を決定する；
（ｂ）ＧＯメッセージはアドレスを担持せず、したがって、ロジック（例えばロジック１５０）は、スヌープメッセージが未処理のＧＯと競合するかどうかが分からないことに留意されたい。このため、ＣＤＩコヒーレント・プロトコルは、スヌープが、以前に発行されたＧＯを渡さない（NOT  pass）ことを必要とする；
（２）フリット内の順序付けされない定義メッセージによる、コヒーレントフリットを構築する際のＣＤＩの暗黙的なフリット順序（すなわち、単一フリット内の全てのメッセージは、順序付けの要件を有しておらず、これらの全てのメッセージを受信側ロジックで完全にアンパックして、任意の所望の順序でデバイスに送信することができる）。
【００２４】
スキームは、次のように機能する。スヌープ（Req／要求）とＧＯ（Rsp／応答）のＦＩＦＯは、別個であり、エントリごとにエポックビットの追加のアレイを伴う。ＧＯエポック（GO_epoch）ビット又はスヌープエポック（Snp_epoch）ビットは、これらの中で順序付けする必要がない、（それぞれ）ＧＯ又はスヌープのブロックに対して、バイナリ値を割り当てられる。現在／最後にＧＯ  ＦＩＦＯからポップしたのはどのエポックであるかを思い出させる追加のビット（Rbit又は「リメンバービット」）も存在する。
【００２５】
一実施形態において、ビットは、送信（Ｔｘ）／受信（Ｒｘ）ＦＩＦＯに入るまでにこれらのルールに従って操作される：
ＧＯが前のサイクル又は同じサイクルで受け取らなかった場合、最初はSnp_epoch＝１であり、そうでない場合は０、
最初はGO_epoch=1、
ＧＯが書かれて、最後にスヌープが書かれた場合、又は最後にＧＯが書かれ、スヌープは書かれなかった場合、Snp_epochをトグル切り替えし、
スヌープがこのサイクルでも書かれる場合、又は最後にスヌープが書かれて、ＧＯは書かれなかった場合、GO_epochをトグル切り替えする。
【００２６】
一実施形態において、ＧＯが、最後のスヌープの後に最後に来たものかどうか、あるいは、スヌープが、最後のＧＯの後に来たものかどうかを判断するために、キューについて各書込み可能信号の状態を保存する。書込み可能要求（req_WrEn：Request  write  enable）及び書込み可能応答（rsp_WrEn：Response  write  enable）は、このいずれかがアサートされたときにキャプチャされる。そうでなければ、last_req_WrEnとlast_rsp_WrEnのフロップは、その状態を保持する。このように、「最後（last）」とは、何かが書かれたのが最後であることを意味する。キューに書かれるエポックビットは、next_snp_epoch及び  next_GO_epochと名前を付けられる。一部の実施形態において、これらは、表１：Snp_epochの生成及び表２：GO_epochの生成によって決定される：
【表１】
2016119066.tif 000003
【表２】
2016119066.tif 000004
【００２７】
一実施形態において、Ｔｘ／Ｒｘ  ＦＩＦＯを読み出すときに、順序付けを確立するためのルールは、次の通りである：
Rbitが、最後に送信されたGO_epochに設定され；
エポックが同じ場合、スヌープはＧＯを渡し；
エポックが同じでない場合、Rbit＝Snp_epochならば、スヌープはＧＯ（複数可）を渡し；
Rbit＝Snp_epochでないならば、スヌープは、ＧＯが発行されるまで遅延され；
エポックを変更する前に、現在のエポック内の全てを送信する必要がある。
【００２８】
一部の実施形態に係る例を、下記の表３で提供する。この表は、ＯＳＦ上に現れるスヌープ（S0、S1、S2等）及びＧＯ（G0、G1、G2等）の見本の順序と、ロジック（例えばロジック１５０及び／３０３）がSnp_epochビットとGO_epochビットをどのように割り当てるかを示す。
【００２９】
初期値として、最初のGO_epochは定義上、常に１である。ＧＯが受け取らなかった場合、最初のSnp_spoch＝１であり、そうでない場合は０である。この例において、時間ｔ＝０のSnp_epochは１に割り当てられる。ｔ＝１では、ＧＯ（G0）はスヌープなしで到着する。このＧＯは、スヌープに関して順序付けの要件がなく、したがって同じエポック内であるので、このＧＯにも１が割り当てられる。ｔ＝２では、スヌープ（S1）とＧＯ（G1）の双方が到着する。スヌープは、新たなエポックを割り当てられなければならず、スヌープは、以前のＧＯの後ろに順序付けされることになる。ＧＯもこのエポックを与えられるので、スヌープをブロックしない。ｔ＝４では、スヌープ（S2）のSnp_epochをトグル切り替えする必要があり、その結果、このスヌープは、ｔ＝３の時に来たＧＯの後ろに順序付けされることになる。例の残りの部分は、上記のルールを使用して構築され得る。
【００３０】
表３は、ある実施形態に係るスヌープ（Ｓ）及びＧＯ（Ｇ）メッセージの到着と、Ｓｎｐ及びＧＯ  ＦＩＦＯの対応する追跡の例を示している：
【表３】
2016119066.tif 000005
【００３１】
実施形態において、コヒーレントＣＤＩフリットは、次のルールに基づいてパックされる：
上記のルールに従う順序付け問題（order  matter）のとき、スヌープは、後のフリット内に置き；
効率を改善するために、スヌープメッセージとＧＯメッセージを異なるフリットにグループ化する。
【００３２】
この例では、リメンバービット（Rbit）は、最初のＧＯメッセージの受け取りで１に設定される。スヌープS0とG0を同じフリットで送信することができるが、S1、G1及びG2はできない。これらは全てエポック0のメッセージであるので、S1、G1及びG2は後続のフリットで送信することが許容される（これらが実際に送信されるかどうかは、他のフリットパッキングルールに依存することに留意されたい）。R-bitは０に変更されることになる。S2は、R-bitに合致しないSnp_epoch（1）を有するので、やはりそのフリット内で送信することはできない。S2及びG3は、後続のフリット内で送信することが許容される。S3、S4、S5及びG4は、続くフリット内で送信することができるが、S6をそのフリット内で送信することはできない。これは、S6のエポックがR-bit（0）に合致せず、G4に対して順序付けられる必要があるからである。
【００３３】
Ｒｘデータ経路において、フリットがアンパックされ、エポックビットが生成されて、Ｒｘ  ＦＩＦＯへ書き込む際の上述のルールに従って、スヌープ及びＧＯメッセージとともにＲｘ  ＦＩＦＯ内に格納される。順序は、これらがパックされるフリットに基づく。フリット内のスヌープ／ＧＯメッセージは、順序付けされていないが、フリット内のスヌープ／ＧＯメッセージのSnp_Epoch及びGO_Epochについて同じ値を設定することになる。Ｒｘ  ＦＩＦＯが読み出されるとき、エポックビットを使用して、スヌープ／ＧＯメッセージを正しい順序で受信側ロジックに返す。
【００３４】
図４は、コンピューティングシステム４００の実施形態のブロック図を図示している。図１のエージェント１０２のうちの１つ以上が、コンピューティングシステム４００の１つ以上のコンポーネントを備えることができる。また、システム４００の様々なコンポーネントが、図４に図示されるようにロジック１５０を含むことができる。しかしながら、ロジック１５０を、システム４００全体を通して、これらの図示される場所を含め、あるいはこれらの場所以外の場所に設けることができる。コンピューティングシステム４００は、相互接続ネットワーク（又はバス）４０４に結合される１つ以上の中央処理ユニット（ＣＰＵ）４０２（ここでは、まとめて「複数のプロセッサ４０２」、あるいはより一般的に「プロセッサ４０２」と呼ばれることがある）を含むことができる。図１〜図３に関連して説明される動作を、システム４００の１つ以上のコンポーネントによって実行することができる。
【００３５】
プロセッサ４０２は、汎用プロセッサ、（コンピュータネットワーク４０５上で通信されるデータを処理することができる）ネットワークプロセッサ等といった、任意のタイプのプロセッサとすることができる（縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ又は複数命令セットコンピュータ（ＣＩＳＣ）を含む）。さらに、プロセッサ４０２は、シングルコア又はマルチコア設計を有することができる。マルチコア設計のプロセッサ４０２は、異なるタイプのプロセッサコアを、同じ集積回路（ＩＣ）ダイ上に統合することができる。また、マルチコア設計のプロセッサ４０２は、対称的なマルチプロセッサとして実装とすることも、非対称のマルチプロセッサとして実装することもできる。
【００３６】
プロセッサ４０２は、１つ以上のキャッシュを含むことができ、これらのキャッシュを、様々な実施形態においてプライベートとし、かつ／又は共有することができる。一般的に、キャッシュは、別の場所に格納される元のデータ又は以前に計算された元のデータに対応するデータを格納することができる。メモリアクセスの待ち時間を減らすために、データをキャッシュ内に格納すると、元のデータをフェッチするか再計算するのではなく、キャッシュしたコピーにアクセスすることにより、将来の使用を行うことができる。キャッシュは、レベル１（Ｌ１）キャッシュ、レベル２（Ｌ２）キャッシュ、レベル３（Ｌ３）キャッシュ、中間レベルキャッシュ、最終レベルキャッシュ（ＬＬＣ）等といった任意のタイプのキャッシュとすることができ、システム４００の１つ以上のコンポーネントにより使用される電子データ（例えば命令を含む）を格納することができる。加えて、そのようなキャッシュを様々な場所（例えば図１、２、３又は５のシステムを含め、本明細書で説明されるコンピューティングシステムに対して他のコンポーネントの内部）に配置することができる。
【００３７】
チップセット４０６を、相互接続ネットワーク４０４に更に結合することができる。さらに、チップセット４０６は、グラフィクス・メモリ・コントロールハブ（ＧＭＣＨ）４０８を含むことができる。ＧＭＣＨ４０８は、メモリ４１２に結合されるメモリコントローラ４１０を含むことができる。メモリ４１２は、例えばプロセッサ４０２により、又はコンピューティングシステム４００のコンポーネントと通信する任意の他のデバイスにより実行される命令のシーケンスを含め、データを格納することができる。また、一実施形態において、メモリ４１２は、ランダムアクセスメモリ（ＲＡＭ）、動的ＲＡＭ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、静的ＲＡＭ（ＳＲＡＭ）等といった、１つ以上の揮発性の記憶（又はメモリ）デバイスを含むことができる。ハードディスクのような不揮発性メモリも使用することができる。複数のプロセッサ及び／又は複数のシステムメモリを含め、更なるデバイスを相互接続４０４に結合することができる。
【００３８】
ＧＭＣＨ４０８は、（例えば一実施形態では、グラフィクス加速度計を介して）ディスプレイデバイス４１６に結合されるグラフィクスインタフェース４１４を更に含むことができる。一実施形態では、グラフィクスインタフェース４１４を、アクセラレイテッド・グラフィクス・ポート（ＡＧＰ）又は周辺コンポーネント相互接続（ＰＣＩ）（又はＰＣＩエクスプレス（ＰＣＩｅ）インタフェース）を介してディスプレイデバイス４１６に結合することができる。一実施形態において、（フラットパネルディスプレイのような）ディスプレイデバイス４１６を、例えば信号コンバータを介してグラフィクスインタフェース４１４に結合することができ、信号コンバータは、ビデオメモリやシステムメモリ（例えばメモリ４１２）といった記憶デバイス内に格納される画像のデジタル表現を、ディスプレイ４１６によって解釈されて表示されるディスプレイ信号に変換する。
【００３９】
図４に示されるように、ハブインタフェース４１８は、ＧＭＣＨ４０８を入出力コントロールハブ（ＩＣＨ）４２０に結合することができる。ＩＣＨ４２０は、コンピューティングシステム４００に結合される入出力（Ｉ／Ｏ）デバイスへのインタフェースを提供することができる。ＩＣＨ４２０は、周辺機器ブリッジ（又はコントローラ）４２４を通してバス４２２に結合され得る。ブリッジ４２４は、例えばＰＣＩｅの仕様に準拠し得るＰＣＩブリッジや、ユニバーサルシリアルバス（ＵＳＢ）コントローラ等である。ブリッジ４２４は、プロセッサ４０２と周辺デバイスとの間のデータ経路を提供することができる。他のタイプのトポロジを使用することができる。また、複数のバスを、例えば複数のブリッジ又はコントローラを通してＩＣＨ４２０に結合することができる。さらに、バス４２２は、他のタイプ及び構成のバスシステムを備えることができる。さらに、ＩＣＨ４２０に結合される他の周辺機器は、様々な実施形態において、ＩＤＥ（integrated  drive  electronics）又はスモールコンピュータシステム（ＳＣＳＩ）ハードドライブ、ＵＳＢポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピー（登録商標）ディスクドライブ、デジタル出力サポート（例えばデジタルビデオインタフェース（ＤＶＩ））等を含むことができる。
【００４０】
バス４２２を、オーディオデバイス４２６、１つ以上のディスクドライブ４２８及びネットワークアダプタ／インタフェース４３０（一実施形態では、ＮＩＣとすることができる）に結合することができる。一実施形態において、バス４２２に結合されるネットワークアダプタ４３０又は他のデバイスは、チップセット４０６と通信することができる。ネットワークアダプタ４３０は、有線又は無線インタフェースを介して様々なコンポーネントと通信することができる。図４に示されるように、ネットワークアダプタ４３０をアンテナ４３１に結合して（例えばＩＥＥＥ８０２．１１インタフェース（ＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎ／ａｃ等を含む）、セルラインタフェース、３Ｇ、１１Ｇ、ＬＰＥ等を介して）ネットワーク４０３と無線により通信することができる。他のデバイスがバス４２２を介して通信することができる。また、一部の実施形態では、（ネットワークアダプタ４３０のような）様々なコンポーネントをＧＭＣＨ４０８に結合することができる。加えて、プロセッサ４０２及びＧＭＣＨ４０８を結合して単一のチップを形成することができる。ある実施形態では、メモリコントローラ４１０を、ＣＰＵ４０２のうちの１つ以上に設けることができる。さらに、ある実施形態では、ＧＭＣＨ４０８及びＩＣＨ４２０を周辺装置コントロールハブ（ＰＣＨ）へ結合することができる。
【００４１】
加えて、コンピューティングシステム４００は、揮発性及び／又は不揮発性メモリ（又はストレージ）を含むことができる。例えば揮発性メモリは、次のうちの１つ以上を含むことができる：すなわち、読取専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電子的ＥＰＲＯＭ（ＥＥＰＲＯＭ）、ディスクドライブ（例えば４２８）、フロッピー（登録商標）ディスク、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、フラッシュメモリ、光磁気ディスク又は電子データ（例えば命令を含む）を格納することができる他のタイプの不揮発性のマシン読取可能な媒体、のうちの１つ以上を含むことができる。
【００４２】
メモリ４１２は、ある実施形態では、次のうちの１つ以上を含むことができる：すなわち、オペレーティングシステム（Ｏ／Ｓ）４３２、アプリケーション４３４及び／又はデバイスドライバ４３６のうちの１つ以上を含むことができる。メモリ４１２は、メモリマップＩ／Ｏ（ＭＭＩＯ）オペレーション専用の領域を含むことができる。メモリ４１２内に記憶されるプログラム及び／又はデータを、メモリ管理オペレーションの一部としてディスクドライブ４２８にスワップすることができる。アプリケーション４３４は、（例えばプロセッサ４０２上で）動作して、１つ以上のパケットを、ネットワーク４０５に結合される１つ以上のコンピューティングデバイスに通信することができる。ある実施形態では、パケットを、１つ以上の記号及び／又は値のシーケンスとすることができ、これらの記号及び／又は値は、少なくとも１つの送信側から少なくとも１つの受信側へ（例えばネットワーク４０５のようなネットワークを介して）伝送される１つ以上の電気信号によって符号化され得る。例えば各パケットは、該パケットをルーティング及び／又は処理する際に使用され得る、ソースアドレスや宛先アドレス、パケットタイプ等のような様々な情報を含む、ヘッダを有することができる。各パケットは、生のデータ（又はコンテンツ）を含むペイロードも有することができ、該パケットは、様々なコンピューティングデバイス間で（ネットワーク４０５のような）コンピュータネットワークを介して伝送している。
【００４３】
ある実施形態では、アプリケーション４３４は、Ｏ／Ｓ４３２を使用して、システム４００の様々なコンポーネントと、例えばデバイスドライバ４３６を通して通信することができる。したがって、デバイスドライバ４３６は、Ｏ／Ｓ４３２とネットワークアダプタ４３０又は例えばチップセット４０６を介してシステム４００に結合される他のＩ／Ｏデバイスとの間の通信インタフェースを提供するよう、ネットワークアダプタ４３０の固有のコマンドを含むことができる。
【００４４】
ある実施形態では、Ｏ／Ｓ４３２は、ネットワークプロトコルスタックを含むことができる。プロトコルスタックは、一般に、パケットが指定のプロトコルに従い得る場合に、ネットワーク４０５を介して送信されるこれらのパケットを処理するのに実行することができる、１組のプロシージャ又はプログラムを指す。例えばＴＣＰ／ＩＰ（トランスポート・コントロール・プロトコル／インターネット・プロトコル）パケットは、ＴＣＰ／ＩＰスタックを使用して処理され得る。デバイスドライバ４３６は、メモリ４１２内の、例えばプロトコルスタックを介して処理すべきバッファを指示することができる。
【００４５】
ネットワーク４０５は、任意のタイプのコンピュータネットワークを含むことができる。ネットワークアダプタ４３０は、直接メモリアクセス（ＤＭＡ）エンジンを更に含むことができ、このＤＭＡエンジンは、ネットワーク４０５を介してデータを送信及び／又は受信するために、（例えばメモリ４１２内に格納された）利用可能な記述子に割り当てられた（例えばメモリ４１２内に格納された）バッファへ、パケットを書き込む。さらに、ネットワークアダプタ４３０は、ネットワークアダプタコントローラを含むことができ、該アダプタコントローラは、（１つ以上のプログラマブルプロセッサのような）ロジックを含み、アダプタに関連するオペレーションを実行することができる。実施形態においては、アダプタコントローラは、ＭＡＣ（メディアアクセス制御）コンポーネントとすることができる。ネットワークアダプタ４３０は、任意のタイプの揮発性／不揮発性メモリ（例えば１つ以上のキャッシュ及び／又はメモリ４１２に関連して説明した他のメモリタイプを含む）といった、メモリを更に含むことができる。
【００４６】
図５は、ある実施形態に従って、ポイントツーポイント（ＰｔＰ）構成内で配置されるコンピューティングシステム５００を図示している。特に、図５は、プロセッサ、メモリ及び入出力デバイスが、幾つかのポイントツーポイントインタフェースによって相互接続されるシステムを示している。図１〜図４に関連して説明した動作は、システム５００の１つ以上のコンポーネントによって実行され得る。
【００４７】
図５に図示されるように、システム５００は、数個のプロセッサを含むことができ、明確性のために、そのうちの２つのプロセッサ５０２と５０４のみを図示している。プロセッサ５０２及び５０４はそれぞれ、ローカルのメモリコントローラハブ（ＭＣＨ）５０６及び５０８を含み、メモリ５１０及び５１２との通信を可能にすることができる。メモリ５１０及び／又は５１２は、図５のメモリ５１２に関連して検討されるもののような、様々なデータを格納することができる。図５に示されるように、プロセッサ５０２及び５０４（又はチップセット５２０やＩ／Ｏデバイス５４３等といった、システム５００の他のコンポーネント）は、図１〜図４に関連して説明したもののような１つ以上のキャッシュも含むことができる。
【００４８】
実施形態においては、プロセッサ５０２及び５０４は、図５に関連して説明されるプロセッサ５０２のうちの１つとすることができる。プロセッサ５０２及び５０４は、ポイントツーポイント（ＰｔＰ）インタフェース５１４を介して、それぞれＰｔＰインタフェース回路５１６及び５１８を使用してデータを交換することができる。また、プロセッサ５０２及び５０４は各々、個々のＰｔＰインタフェース５２２及び５２４を介して、ポイントツーポイントインタフェース回路５２６、５２８、５３０及び５３２を使用してチップセット５２０とデータを交換することができる。チップセット５２０は、高性能のグラフィクスインタフェース５３６を介して、例えばＰｔＰインタフェース回路５３７を使用して、高性能のグラフィクス回路５３４とデータを交換することができる。
【００４９】
少なくとも１つの実施形態では、ロジック１５０を、プロセッサ５０２、５０４及び／又はチップセット５２０のうちの１つ以上に設けることができる。しかしながら、他の実施形態では、図５のシステム５００内の他の回路、ロジックユニット又はデバイスに存在させることができる。さらに、他の実施形態では、図５に図示される数個の回路、ロジックユニット又はデバイス全体に分散させることができる。例えばシステム５００の様々なコンポーネントが、図１のロジック１５０を含むことができる。しかしながら、ロジック１５０を、システム５００全体を通して、図示される場所を含め、あるいはこれらの場所以外の場所に設けることができる。
【００５０】
チップセット５２０は、ＰｔＰインタフェース回路５４１を使用してバス５４０と通信することができる。バス５４０は、このチップセット５２０と通信する、バスブリッジ５４２及びＩ／Ｏデバイス５４３といった１つ以上のデバイスを有することができる。バス５４４を介して、バスブリッジ５４２は、キーボード／マウス５４５、（モデム、ネットワークインタフェースデバイス、あるいはコンピュータネットワーク５０５と通信することができる他の通信デバイスといった）通信デバイス５４６、オーディオＩ／Ｏデバイス及び／又はデータ記憶デバイス５４８のような他のデバイスと通信することができる。データ記憶デバイス５４８は、プロセッサ５０２及び／又は５０４によって実行され得るコード５４９を記憶することができる。
【００５１】
一部の実施形態において、本明細書で説明されるコンポーネントのうちの１つ以上を、システムオンチップ（ＳＯＣ）デバイスとして具現化することができる。図６は、ある実施形態に係るＳＯＣパッケージのブロック図を図示している。図６に図示されるように、ＳＯＣ６０２は、１つ以上の中央処理ユニット（ＣＰＵ）コア６２０、１つ以上のグラフィクスプロセッサユニット（ＧＰＵ）コア６３０、入出力（Ｉ／Ｏ）インタフェース６４０及びメモリコントローラ６４２を含む。ＳＯＣパッケージ６０２の様々なコンポーネントを、他の図面に関連して本明細書で説明したような相互接続部又はバスに結合することができる。また、ＳＯＣパッケージ６０２は、他の図面に関連して本明細書で説明したコンポーネントのように、より多くの又は少ないコンポーネントを含む可能性がある。さらに、ＳＯＣパッケージ６０２の各コンポーネントは、例えば他の図面に関連して本明細書で説明したような、１つ以上の他のコンポーネントを含むことができる。一実施形態において、ＳＯＣパッケージ６０２（及びそのコンポーネント）は、例えば単一の半導体デバイスにパックされる、１つ以上の集積回路（ＩＣ）ダイ上に提供される。
【００５２】
図６に図示されるように、ＳＯＣパッケージ６０２は、メモリコントローラ６４２を介して、（例えば他の図面に関連して本明細書で説明したメモリと同様又は同じであり得る）メモリ６６０に結合される。ある実施形態では、メモリ６６０（又はその一部）を、ＳＯＣパッケージ６０２上に統合することができる。
【００５３】
Ｉ／Ｏインタフェース６４０を、例えば他の図面に関連して本明細書で説明したような相互接続部及び／又はバスを介して、１つ以上のＩ／Ｏデバイス６７０に結合することができる。Ｉ／Ｏデバイス６７０は、キーボード、マウス、タッチパッド、ディスプレイ、（カメラ又はカムコーダ／ビデオコーダといった）イメージ／ビデオキャプチャデバイス、タッチスクリーン、スピーカ又は同様のもののうちの１つ以上を含むことができる。さらに、ＳＯＣパッケージ６０２は、ある実施形態では、ロジック１５０を含む／統合することができる。あるいは、ロジック１５０を、ＳＯＣパッケージ６０２の外部に（すなわち、別個のロジックとして）設けることができる。
【００５４】
以下の例は、更なる実施形態に関する。例１は、２つのビットの状態に少なくとも基づいて、第１の集積回路ダイと第２の集積回路ダイとの間で交換されるべきスヌープメッセージと完了メッセージの順序を決定するロジックを備える機器であって：第１の集積回路ダイ及び第２の集積回路ダイが、第１のインタフェース及び第２のインタフェースを通して結合されることになり、スヌープメッセージ及び完了メッセージが、第１のインタフェース及び前記第２のインタフェースの少なくとも一方を介して交換されることになる機器を含む。例２は、例１の機器を含み、第１のインタフェースが、コヒーレント・クロスダイ・インタフェース（ＣＤＩ）を用いるオンダイ・ファブリック（ＯＳＦ）インタフェースを備える。例３は、例２の機器を含み、コヒーレントＣＤＩが、取付けデバイスとＯＳＦインタフェースとの間の通信のためのコヒーレンスプロトコルを提供する。例４は、例１の機器を含み、第２のインタフェースが、非コヒーレントＣＤＩを備える。例５は、例１の機器を含み、２つのビットが、スヌープエポックビットと、完了エポックビットとを備える。例６は、例１の機器を含み、スヌープメッセージがアドレスを備え、完了メッセージがアドレスを除外する。例７は、例１の機器を含み、ロジックと、１つ以上のプロセッサコアを有するプロセッサと、メモリとが、同じ集積デバイス上にある。例８は、例１の機器を含み、第１のインタフェースと第２のインタフェースの少なくとも一方が、ポイントツーポイントリンクを備える。
【００５５】
例９は、２つのビットの状態に少なくとも基づいて、第１の集積回路ダイと第２の集積回路ダイとの間で交換されるべきスヌープメッセージと完了メッセージの順序を決定するステップを備える方法であって：第１の集積回路ダイ及び第２の集積回路ダイが、第１のインタフェース及び第２のインタフェースを通して結合され、スヌープメッセージ及び完了メッセージが、第１のインタフェース及び第２のインタフェースの少なくとも一方を介して交換されることになる方法を含む。例１０は、例９の方法を含み、第１のインタフェースが、コヒーレント・クロスダイ・インタフェース（ＣＤＩ）を用いるオンダイ・ファブリック（ＯＳＦ）インタフェースを備える。例１１は、例１０の方法を含み、コヒーレントＣＤＩが、取付けデバイスとＯＳＦインタフェースとの間の通信のためのコヒーレンスプロトコルを提供するステップを更に備える。例１２は、例９の方法を含み、第２のインタフェースが、非コヒーレント・リンク層を備える。例１３は、例９の方法を含み、２つのビットが、スヌープエポックビットと、完了エポックビットとを備える。例１４は、例９の方法を含み、スヌープメッセージがアドレスを備え、完了メッセージがアドレスを除外する。
【００５６】
例１５は、１つ以上のプロセッサコアを有するプロセッサと；プロセッサに結合されるディスプレイデバイスと；２つのビットの状態に少なくとも基づいて、第１の集積回路ダイと第２の集積回路ダイとの間で交換されるべきスヌープメッセージと完了メッセージの順序を決定するロジックと；を備えるシステムえあって、１の集積回路ダイ及び第２の集積回路ダイが、第１のインタフェース及び第２のインタフェースを通して結合されることになり、スヌープメッセージ及び完了メッセージが、第１のインタフェース及び第２のインタフェースの少なくとも一方を介して交換されることになるシステムを含む。例１６は、例１５のシステムを含み、第１のインタフェースが、コヒーレント・クロスダイ・インタフェース（ＣＤＩ）を用いるオンダイ・ファブリック（ＯＳＦ）インタフェースを備える。例１７は、例１６のシステムを含み、コヒーレントＣＤＩが、取付けデバイスとＯＳＦインタフェースとの間の通信のためのコヒーレンスプロトコルを提供する。例１８は、例１５のシステムを含み、第２のインタフェースが、非コヒーレント・リンク層を備える。例１９は、例１５のシステムを含み、２つのビットが、スヌープエポックビットと、完了エポックビットとを備える。例２０は、例１５のシステムを含み、スヌープメッセージがアドレスを備え、完了メッセージがアドレスを除外する。例２１は、例１５のシステムを含み、ロジックと、１つ以上のプロセッサコアを有するプロセッサと、メモリとが、同じ集積デバイス上にある。例２２は、例１５のシステムを含み、第１のインタフェースと第２のインタフェースの少なくとも一方が、ポイントツーポイントリンクを備える。
【００５７】
例２３は、プロセッサにおいて実行されると、２つのビットの状態に少なくとも基づいて、第１の集積回路ダイと第２の集積回路ダイとの間で交換されるべきスヌープメッセージと完了メッセージの順序を決定させる１つ以上の動作を実行するようにプロセッサを構成する１つ以上の命令を備えるコンピュータ読取可能媒体であって：第１の集積回路ダイ及び第２の集積回路ダイが、第１のインタフェース及び第２のインタフェースを通して結合され、スヌープメッセージ及び完了メッセージが、第１のインタフェース及び第２のインタフェースの少なくとも一方を介して交換されることになるコンピュータ読取可能媒体を含む。例２４は、例２３のコンピュータ読取可能媒体を含み、第１のインタフェースが、コヒーレント・クロスダイ・インタフェース（ＣＤＩ）を用いるオンダイ・ファブリック（ＯＳＦ）インタフェースを備える。例２５は、例２４のコンピュータ読取可能媒体を含み、プロセッサにおいて実行されると、コヒーレントＣＤＩに、取付けデバイスとＯＳＦインタフェースとの間の通信のためのコヒーレンスプロトコルを提供させる１つ以上の動作を実行するようにプロセッサを構成する１つ以上の命令を更に備える。
【００５８】
例２６は、上記の例のいずれかの方法を実行する手段を備える機器を含む。
【００５９】
例２７は、実行されると、上記の例のいずれかに係る方法を実行するか、機器を実現する、マシン読取可能な命令を含むマシン読取可能ストレージを備える。
【００６０】
様々な実施形態において、本明細書において例えば図１〜図６に関連して説明される動作を、ハードウェア（例えば回路）、ソフトウェア、ファームウェア、マイクロコード又はこれらの組合せとして実装することができ、これらを、例えば本明細書で説明される処理を実行するようコンピュータをプログラムするのに使用される命令（又はソフトウェアプロシージャ）を記憶した有形（例えば非一時的な）マシン読取可能又は（例えば非一時的な）コンピュータ読取可能媒体を含む、コンピュータプログラム製品として提供することができる。また、「ロジック」という用語は、例として、ソフトウェア、ハードウェア又はソフトウェアとハードウェアの組合せを含むことができる。マシン読取可能媒体は、図１〜図６に関連して説明されるもののような記憶デバイスを含み得る。加えて、そのようなコンピュータ読取可能媒体を、コンピュータプログラム製品としてダウンロードしてもよく、この場合は、プログラムは、搬送波内のデータ信号又は通信リンク（例えばバス、モデム又はネットワーク接続）による他の伝搬媒体を通して、リモートコンピュータ（例えばサーバ）から要求側コンピュータ（例えばクライアント）に伝送され得る。
【００６１】
本明細書において、「一実施形態」又は「ある実施形態」への言及は、その実施形態と関連して説明される特定の特徴、構造又は特性が、少なくともある実装に含まれてもよいことを意味する。本明細書の様々な箇所における「一実施形態において（一実施形態では）」というフレーズの出現は、全て同じ実施形態について言及していることも、そうでないこともある。
【００６２】
また、当該説明及び特許請求の範囲では、「結合される」及び「接続される」という用語が、それらの派生語とともに使用されることがある。一部の実施形態において、「接続される」という用語を使用して、２つ以上の要素が直接物理的に又は電子的に相互に接触されることを示すことがある。「結合される」は、２つ以上の要素が直接物理的に又は電気的に接触することを意味することがある。しかしながら、「結合される」は、２つ以上の要素が相互に直接結合しないが、依然として相互に協働するか相互作用し得ることも意味する。
【００６３】
したがって、実施形態は、構造的特徴及び／又は方法的動作に特有の言語で説明されているが、特許請求される主題は、説明される特定の特徴又は動作に限定されないことが理解されよう。むしろ、特定の特徴又は動作は、特許請求される主題を実装する実例の形式として開示される。
【図１】
2016119066.tif 000006
【図２】
2016119066.tif 000007
【図３】
2016119066.tif 000008
【図４】
2016119066.tif 000009
【図５】
2016119066.tif 000010
【図６】
2016119066.tif 000011
【外国語明細書】
2016119066000001.pdf
2016119066000002.pdf
2016119066000003.pdf
2016119066000004.pdf