(57)【要約】      （修正有）【課題】共有メモリに関連付けられたロード／格納タイプ動作に対応するためのデータを送信し、低電力状態に入るためのリクエストを送信する装置及び方法を提供する。【解決手段】共有メモリに関連付けられたロード／格納タイプ動作に対応するためのデータが、層状プロトコルスタック２００に基づくメモリアクセスリンクプロトコルに従うリンク経由で送信され、メモリアクセスリンクプロトコルは異なる別のリンクプロトコル上でオーバレイされる。低電力状態に入るためのリクエストが送信され、当該リクエストは、トークンのフィールド内でエンコードされるデータ値を含み、トークンはパケットデータの開始を示し、トークンはトークンが別のリンクプロトコルおよびメモリアクセスリンクプロトコルのうちの１つに従うデータを含む後、後続のデータが送信されるかどうかを更に示す。【選択図】図２
2016123076.tif 000002
【特許請求の範囲】
【請求項１】
共有メモリに関連付けられたロード／格納タイプ動作に対応するデータを送信する送信機と、
低電力状態に入るためのリクエストを送信する電力管理ロジックと、を備え、
前記データはメモリアクセスリンクプロトコルに従うリンク経由で送信され、前記メモリアクセスリンクプロトコルは異なる別のリンクプロトコル上にオーバレイされ、
前記リクエストはトークンのフィールド内でエンコードされたデータ値を含み、前記トークンはパケットデータの開始を示し、および前記トークンが前記別のリンクプロトコルおよび前記メモリアクセスリンクプロトコルのうちの１つに従うデータを含む後、後続のデータが送信されるかどうかを更に示す、装置。
【請求項２】
前記別のリンクプロトコルは、汎用入出力（Ｉ／Ｏ）相互接続プロトコルを含む、請求項１に記載の装置。
【請求項３】
前記トークンは、前記汎用Ｉ／Ｏ相互接続プロトコルに従い定義される、請求項２に記載の装置。
【請求項４】
前記トークンの第１のフィールドが、前記後続のデータがメモリアクセスリンクプロトコルデータを含むかまたは汎用Ｉ／Ｏ相互接続プロトコルデータを含むかを示す、請求項３に記載の装置。
【請求項５】
前記第１のフィールドが、前記後続のデータがメモリアクセスリンクプロトコルデータを含むことを示す場合、前記データ値は前記トークンの第２のフィールド内でエンコードされる、請求項４に記載の装置。
【請求項６】
前記データ値はメモリアクセスリンクプロトコル下で定義されたエンコーディングを含み、前記第２のフィールドは前記汎用Ｉ／Ｏ相互接続プロトコルの物理層経由で前記エンコーディングをトンネリングすべく使用される、請求項５に記載の装置。
【請求項７】
前記リンク上で送信されるデータが、前記トークンの複数のインスタンスに基づいて、メモリアクセスリンクプロトコルデータと、汎用Ｉ／Ｏ相互接続プロトコルデータとの間で切り替わる、請求項２に記載の装置。
【請求項８】
前記電力管理ロジックは、前記低電力状態に入るための前記リクエストを送信する前に、前記汎用Ｉ／Ｏ相互接続プロトコルのデータが送信されることを待機しているかどうかを確認する、請求項７に記載の装置。
【請求項９】
前記電力管理ロジックは、前記汎用Ｉ／Ｏ相互接続プロトコルデータが送信されるまで、前記低電力状態に入るための前記リクエストを送信することを待機する、請求項８に記載の装置。
【請求項１０】
前記メモリアクセスリンクプロトコルまたは汎用Ｉ／Ｏ相互接続プロトコルのいずれかのリンク層が、物理層の低電力状態へのエントリをトリガできる、請求項７に記載の装置。
【請求項１１】
前記汎用Ｉ／Ｏ相互接続プロトコル内で低電力状態に入るために使用される信号が、前記メモリアクセスリンクプロトコル内で低電力状態に入るために使用される信号とは異なる、請求項１０に記載の装置。
【請求項１２】
前記メモリアクセスリンクプロトコルは、前記メモリアクセスリンクプロトコル内の前記低電力状態に入るための信号をその中で送信する複数の周期的制御ウィンドウを定義する、請求項１１に記載の装置。
【請求項１３】
リンク経由でデータストリームを受信する受信機と、
リクエストに基づいて低電力リンク状態へのエントリを開始するプロトコルロジックと、を備え、
前記データストリームはトークンを含み、前記トークンは前記トークンの後続のデータが少なくとも２つの代替的なプロトコルのうちの１つに従うデータを含むことを示す第１のフィールドを含み、前記少なくとも２つの代替的なプロトコルはメモリアクセスプロトコルおよび汎用Ｉ／Ｏプロトコルを含み、前記リンク経由で送信されるすべてのデータは前記汎用Ｉ／Ｏプロトコルの物理層経由で送信され、前記トークンの第２のフィールドが前記メモリアクセスプロトコルのリンク層による前記低電力リンク状態に入るための前記リクエストを示すべくエンコードされる、装置。
【請求項１４】
前記リクエストに対する応答を送信する送信機を更に備え、
前記応答は受信確認および否定的受信確認のうちの１つを含み、前記応答は前記トークンの別のインスタンスで送信される、請求項１３に記載の装置。
【請求項１５】
前記応答は前記トークンの前記別のインスタンス内で前記第２のフィールドのインスタンスが送信される、請求項１４に記載の装置。
【請求項１６】
リンク経由でデータストリームを受信する段階と、
リクエストに対する応答を送信する段階と、
前記リクエストに基づいて低電力リンク状態へのエントリを開始する段階と、を備え、
前記データストリームはトークンの第１のインスタンスを含み、前記トークンの複数のインスタンスは前記トークンの後続のデータが少なくとも２つの代替的なプロトコルのうちの１つに従うデータを含むことを示す第１のフィールドを含み、前記少なくとも２つの代替的なプロトコルはメモリアクセスプロトコルおよび汎用Ｉ／Ｏプロトコルを含み、前記リンク経由で送信されるすべてのデータは前記汎用Ｉ／Ｏプロトコルの物理層経由で送信され、前記トークンの前記第１のインスタンスの第２のフィールドが前記メモリアクセスプロトコルのリンク層による前記低電力リンク状態に入るための前記リクエストを示すべくエンコードされ、
前記応答は受信確認および否定的受信確認のうちの１つを含み、前記応答は前記トークンの別のインスタンスで送信される、方法。
【請求項１７】
第１のプロトコルのリンク層と、
異なる第２のプロトコルのリンク層と、
前記第１のプロトコルの物理層と、
データストリームを受信し、前記物理層を低電力リンク状態に入らせるデータを前記物理層に送信するシムと、を備え、
前記第２のプロトコルのデータが前記第１のプロトコルの前記物理層経由で送信され、
前記データストリームはトークンを含み、前記トークンは前記トークンの後続のデータが第１のプロトコルデータまたは第２のプロトコルデータのうちの１つを含むことを示す第１のフィールドを含み、前記トークンの第２のフィールドが前記第２のプロトコルの前記リンク層による前記低電力リンク状態に入るためのリクエストを示すべくエンコードされる、装置。
【請求項１８】
前記第１のプロトコルは汎用Ｉ／Ｏ相互接続プロトコルを含み、前記第２のプロトコルはメモリアクセスプロトコルを含む、請求項１７に記載の装置。
【請求項１９】
前記第１のプロトコルの１または複数の層および前記第２のプロトコルの１または複数の層を更に備える、請求項１７または１８に記載の装置。
【請求項２０】
前記第１のプロトコルの前記リンク層は無効にされる、請求項１７から１９のいずれか一項に記載の装置。
【請求項２１】
リンク経由でデータストリームを受信する手段と、
リクエストに対する応答を送信する手段と、
前記リクエストに基づいて低電力リンク状態へのエントリを開始する手段と、を備え、
前記データストリームはトークンの第１のインスタンスを含み、前記トークンの複数のインスタンスは前記トークンの後続のデータが少なくとも２つの代替的なプロトコルのうちの１つに従うデータを含むことを示す第１のフィールドを含み、前記少なくとも２つの代替的なプロトコルはメモリアクセスプロトコルおよび汎用Ｉ／Ｏプロトコルを含み、前記リンク経由で送信されるすべてのデータは前記汎用Ｉ／Ｏプロトコルの物理層経由で送信され、前記トークンの前記第１のインスタンスの第２のフィールドが前記メモリアクセスプロトコルのリンク層による前記低電力リンク状態に入るための前記リクエストを示すべくエンコードされ、
前記応答は受信確認および否定的受信確認のうちの１つを含み、前記応答は前記トークンの別のインスタンスで送信される、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンピューティングシステムに関し、具体的には（限定はされないが）、コンピューティングシステム内のコンポーネント間のメモリアクセスに関する。
【背景技術】
【０００２】
半導体プロセッシングおよびロジック設計における進歩は、集積回路デバイスに存在し得るロジック量の増加を可能にするに至った。当然の結果として、コンピュータシステム構成は、システム内の単一または複数の集積回路から、個々の集積回路上にある複数のコア、複数のハードウェアスレッド、および複数の論理プロセッサ、並びにそのようなプロセッサと統合された他のインタフェースへと進化した。プロセッサまたは集積回路は通常、単一の物理プロセッサダイを備え、当該プロセッサダイは、任意の数のコア、ハードウェアスレッド、論理プロセッサ、インタフェース、メモリ、コントローラハブ等を含み得る。
【０００３】
より小さなパッケージで、より大きな処理能力に適合できる、より高い能力の結果として、より小さなコンピューティングデバイスが人気を高めてきた。スマートフォン、タブレット、極薄ノートブック、および他のユーザ機器が、飛躍的に成長してきた。しかしながら、これらのより小さなデバイスは、データストレージおよびフォームファクタを超過する複雑な処理の両方について、サーバに依存する。結果として、高性能コンピューティング市場（すなわち、サーバ空間）におけるニーズも増大した。例えば、現在のサーバにおいて、コンピューティング能力を増大させるには通常、複数のコアを持つシングルプロセッサだけでなく、複数の物理プロセッサ（複数のソケットとも称される）が存在する。しかしながら、コンピューティングシステム内のデバイス数と共に処理能力が増大するにつれ、ソケットと他のデバイス間の通信がより重要なものになっている。
【０００４】
実際、相互接続は、電気通信を主に処理してきた従来型のマルチドロップバスから、高速通信を容易にする本格的な相互接続アーキテクチャへと成長した。残念ながら、はるかに使用効率の高い将来のプロセッサへのニーズがあり、対応する要求は、既存の相互接続アーキテクチャの機能に対しある。様々な図面中の同様の参照符号および記号は、同様の要素を示す。
【図面の簡単な説明】
【０００５】
【図１】相互接続アーキテクチャを含む、コンピューティングシステムの一実施形態を示す。
【図２】層状スタックを含む、相互接続アーキテクチャの一実施形態を示す。
【図３】相互接続アーキテクチャ内で生成または受信されるリクエストまたはパケットの一実施形態を示す。
【図４】相互接続アーキテクチャのための送信機と受信機のペアに係る一実施形態を示す。
【図５】相互接続の層状プロトコルスタックの例を示す。
【図６】例示ノードの一実施形態に係る簡易ブロックダイアグラムを示す。
【図７】複数のノードを含む、例示システムの一実施形態の簡易ブロックダイアグラムを示す。
【図８】シムロジックを含む、ノードの例示ロジックを示す。
【図９】例示共有メモリリンクに従って送信されるデータ表現である。
【図１０】データストリーム内に埋め込まれた例示制御ウィンドウの表現を示す。
【図１１Ａ】複数の埋め込み制御ウィンドウを利用する、複数の例示ハンドシェイクのフローダイアグラムを示す。
【図１１Ｂ】複数の埋め込み制御ウィンドウを利用する、複数の例示ハンドシェイクのフローダイアグラムを示す。
【図１２】別の例示ハンドシェイクの表現である。
【図１３】データフレーミングトークンの例示的開始の表現である。
【図１４】低電力リンク状態に入るための複数の例示的な技術を示すフローチャートである。
【図１５】マルチコアプロセッサを含む、コンピューティングシステムのための一実施形態のブロック図を示す。
【図１６】マルチコアプロセッサを含むコンピューティングシステムのための別の実施形態のブロック図を示す。
【発明を実施するための形態】
【０００６】
以下の説明には、本発明の深い理解を与えるべく、多数の具体的な詳細が記載されている。例えば、複数の特定のタイプのプロセッサおよびシステム構成、特定のハードウェア構造、特定の設計上およびミクロ設計上の細部、特定のレジスタ構成、特定の命令タイプ、特定のシステムコンポーネント、特定の寸法／高さ、特定のプロセッサパイプライン段階、および動作等の複数の例である。しかしながら、当業者であれば、本発明を実行するにあたりこれらの具体的な複数の詳細は採用する必要がないことは明らかであろう。他の複数の例において、複数の特定および代替的なプロセッサアーキテクチャ、記載された複数のアルゴリズム用の複数の特定のロジック回路／コード、特定のファームウェアコード、特定の相互接続動作、複数の特定のロジック構成、複数の特定の製造技術および材料、複数の特定のコンパイラ実装、コード内の複数のアルゴリズムについての特定の表現、特定のパワーダウンおよびゲーティング技術／ロジック並びにコンピュータシステムの他の特定の動作の詳細のような、複数の周知コンポーネントまたは方法は、本発明を不必要に不明瞭にするのを回避すべく詳細には記載されていない。
【０００７】
以下の複数の実施形態は、複数のコンピューティングプラットフォームまたはマイクロプロセッサといった複数の特定の集積回路内のエネルギー管理およびエネルギー効率に関し記載されている場合があるが、複数の他の実施形態が、集積回路およびロジックデバイスの複数の他のタイプに適用可能である。本明細書に記載の複数の実施形態に係る同様の複数の技術および教示が、より良好なエネルギー効率およびエネルギー管理からまた利益を享受し得る回路または半導体デバイスの他の複数のタイプに適用されてよい。例えば、開示された複数の実施形態は、デスクトップコンピュータシステムまたはウルトラブック（登録商標）に限定はされない。また、例えば複数のハンドヘルドデバイス、タブレット、他の薄型ノートブック、システムオンチップ（ＳＯＣ）デバイス、および埋め込みアプリケーションのような他の複数のデバイスにおいて使用されることもある。ハンドヘルドデバイスのいくつかの例は、セルラ電話、インターネットプロトコルデバイス、デジタルカメラ、パーソナルデジタルアシスタント（ＰＤＡ）、およびハンドヘルドＰＣを含む。複数の埋め込みアプリケーションは通常、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、システムオンチップ、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、広域ネットワーク（ＷＡＮ）スイッチ、または以下に教示される複数の機能および動作を実行可能な任意の他のシステムを含む。さらに、本明細書に記載の複数の装置、方法、およびシステムは、複数の物理的コンピューティングデバイスに限定はされず、エネルギー管理および効率のための複数のソフトウェア最適化にも関連してよい。以下の説明で容易に明らかになるように、本明細書に記載の複数の方法、装置、およびシステムに係る複数の実施形態（ハードウェア、ファームウェア、ソフトウェア、またはそれらの組み合わせに関するかどうかに関わらず）は、性能の考慮事項と調和された「グリーンテクノロジ」の将来にとって不可欠である。
【０００８】
コンピューティングシステムが進歩するにしたがい、それらのコンポーネントもより複雑化している。結果として、最適なコンポーネント動作のための帯域幅要件が満たされることを保証すべく、コンポーネント間の連結および通信を行うための相互接続アーキテクチャも複雑性が増している。更に、異なる複数の市場セグメントは市場ニーズに適合すべく、複数の相互接続アーキテクチャの異なる態様を要求する。例えば、複数のサーバがより高性能を要求する一方で、モバイルエコシステムは場合によっては、省電力化のために全体的な性能を犠牲にしてしまう可能性がある。しかし、最大限の省電力化で可能な限り高い性能を提供することが、大半のファブリックの唯一の目的である。以下に説明される多数の相互接続は、本明細書に記載される本発明の複数の態様から潜在的に利益を享受するであろう。
【０００９】
相互接続ファブリックアーキテクチャの１つは、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）エクスプレス（ＰＣＩｅ）アーキテクチャを含む。ＰＣＩｅの主目的は、複数の異なるベンダの複数のコンポーネントおよびデバイスをクライアント（デスクトップとモバイル）、サーバ（標準およびエンタープライズ）、および埋め込み通信デバイス等、複数の市場セグメントにわたるオープンアーキテクチャで相互運用できるようにすることである。ＰＣＩ  Ｅｘｐｒｅｓｓは、様々な将来の複数のコンピューティングおよび通信プラットフォームのために定義された高性能で、汎用性のあるＩ／Ｏ相互接続である。その利用モデル、ロード／格納アーキテクチャ、ソフトウェアインタフェースのようないくつかのＰＣＩ属性が、その複数の改訂版を通して維持されてきたが、これに対し、以前の複数のパラレルバス実装は、高度に拡張可能な完全シリアルインタフェースによって置き換えられてきた。ＰＣＩ  Ｅｘｐｒｅｓｓのより最近のバージョンでは、性能と複数の特徴に係る複数の新レベルを供給すべく、ポイントツーポイント相互接続、スイッチベースの技術、およびパケット化されたプロトコルにおける複数の利点を活用している。電力管理、サービスの品質（ＱｏＳ）、ホットプラグ／ホットスワップサポート、データ整合性、およびエラー処理は、ＰＣＩ  Ｅｘｐｒｅｓｓによってサポートされる高度な複数の特徴のうちいくつかである。
【００１０】
図１を参照すると、コンポーネントのセットを相互接続するポイントツーポイントリンクから構成されるファブリックの一実施形態が示されている。システム１００は、プロセッサ１０５およびコントローラハブ１１５に連結されたシステムメモリ１１０を含む。プロセッサ１０５は、マイクロプロセッサ、ホストプロセッサ、埋め込みプロセッサ、コプロセッサ、または他のプロセッサのような任意の処理要素を含む。プロセッサ１０５はフロントサイドバス（ＦＳＢ）１０６を介してコントローラハブ１１５に連結される。一実施形態において、ＦＳＢ１０６は後述のようなシリアルのポイントツーポイント相互接続である。別の実施形態において、リンク１０６は、異なる相互接続規格に準拠するシリアル差動相互接続アーキテクチャを含む。
【００１１】
システムメモリ１１０は、ランダムアクセスメモリ（ＲＡＭ）、不揮発性（ＮＶ）メモリ、またはシステム１００における複数のデバイスによってアクセス可能な他のメモリのような、任意のメモリデバイスを含む。システムメモリ１１０は、メモリインタフェース１１６を介してコントローラハブ１１５に連結される。メモリインタフェースの複数の例にはダブルデータレート（ＤＤＲ）メモリインタフェース、デュアルチャネルＤＤＲメモリインタフェース、および動的ＲＡＭ（ＤＲＡＭ）メモリインタフェースが含まれる。
【００１２】
一実施形態において、コントローラハブ１１５は、ペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅまたはＰＣＩＥ）相互接続階層内のルートハブ、ルートコンプレックス、またはルートコントローラである。コントローラハブ１１５の複数の例には、チップセット、メモリコントローラハブ（ＭＣＨ）、ノースブリッジ、相互接続コントローラハブ（ＩＣＨ）、サウスブリッジ、およびルートコントローラ／ハブが含まれる。チップセットという用語はしばしば、２つの物理的に別個のコントローラハブ、すなわち相互接続コントローラハブ（ＩＣＨ）に連結されたメモリコントローラハブ（ＭＣＨ）を指す。現行システムはしばしばプロセッサ１０５に統合されたＭＣＨを含む一方、コントローラ１１５は後述と同様の態様で複数のＩ／Ｏデバイスと通信することに留意されたい。いくつかの実施形態において、ピアツーピアルーティングが、ルートコンプレックス１１５を介して任意的にサポートされる。
【００１３】
ここでコントローラハブ１１５は、シリアルリンク１１９を介してスイッチ／ブリッジ１２０に連結される。入出力モジュール１１７および１２１は、複数のインタフェース／ポート１１７および１２１と呼ばれることもあり、層状プロトコルスタックを包含／実装して、コントローラハブ１１５とスイッチ１２０との間の通信を提供する。一実施形態において、複数のデバイスがスイッチ１２０に連結可能である。
【００１４】
スイッチ／ブリッジ１２０は、複数のパケット／メッセージを上流デバイス１２５、すなわちルートコンプレックスに向かう１階層上から、下流コントローラハブ１１５、すなわちルートコントローラから離れて１階層下へ、プロセッサ１０５またはシステムメモリ１１０からデバイス１２５へとルーティングする。一実施形態にいてスイッチ１２０は、複数の仮想ＰＣＩ対ＰＣＩブリッジデバイスの論理的アセンブリと呼ばれる。デバイス１２５は、任意の内部若しくは外部デバイス、またはＩ／Ｏデバイス、ネットワークインタフェースコントローラ（ＮＩＣ）、アドインカード、オーディオプロセッサ、ネットワークプロセッサ、ハードドライブ、ストレージデバイス、ＣＤ／ＤＶＤ  ＲＯＭ、モニタ、プリンタ、マウス、キーボード、ルータ、ポータブルストレージデバイス、ファイヤワイヤデバイス、ユニバーサルシリアルバス（ＵＳＢ）デバイス、スキャナ、および他の複数の入出力デバイスのような電子システムに連結されるコンポーネントを含む。ＰＣＩｅ用語ではしばしば、そのようなデバイスをエンドポイントと呼ぶ。具体的に示されていないが、デバイス１２５は、レガシーまたは他のバージョンの複数のＰＣＩデバイスをサポートする、ＰＣＩｅ対ＰＣＩ／ＰＣＩ−Ｘブリッジを含んでよい。ＰＣＩｅにおける複数のエンドポイントデバイスはしばしば、レガシー、ＰＣＩｅ、またはルートコンプレックス統合エンドポイントとして分類される。
【００１５】
グラフィックアクセラレータ１３０も、シリアルリンク１３２を介してコントローラハブ１１５に連結される。一実施形態において、グラフィックアクセラレータ１３０は、ＩＣＨに連結されたＭＣＨに連結される。次にスイッチ１２０、およびそれに従ってＩ／Ｏデバイス１２５がＩＣＨに連結される。Ｉ／Ｏモジュール１３１および１１８はまた、グラフィックアクセラレータ１３０およびコントローラハブ１１５間で通信する層状プロトコルスタックを実装する。上記のＭＣＨの記載と同様に、グラフィクスコントローラまたはグラフィックアクセラレータ１３０自体がプロセッサ１０５に統合されてよい。
【００１６】
図２を見ると、層状プロトコルスタックの一実施形態が示されている。層状プロトコルスタック２００は、Ｑｕｉｃｋ  Ｐａｔｈインターコネクト（ＱＰＩ）スタック、ＰＣｉｅスタック、次世代高性能コンピューティングインターコネクトスタック、または他の層状スタックなどの任意の形態の層状通信スタックを含む。図１〜４に関する直下の記載はＰＣＩｅスタックに関するものであるが、同一概念が複数の他の相互接続スタックに適用されてよい。一実施形態において、プロトコルスタック２００は、トランザクション層２０５と、リンク層２１０と、物理層２２０とを含むＰＣＩｅプロトコルスタックである。図１中のインタフェース１１７、１１８、１２１、１２２、１２６および１３１のようなインタフェースが、通信プロトコルスタック２００として表されてよい。通信プロトコルスタックとしての表現は、プロトコルスタックを実装／包含するモジュールまたはインタフェースとも称され得る。
【００１７】
ＰＣＩ  Ｅｘｐｒｅｓｓは、パケットを使用してコンポーネント間で情報を通信する。複数のパケットはトランザクション層２０５およびデータリンク層２１０で形成され、送信コンポーネントから受信コンポーネントへと情報を搬送する。複数の送信されるパケットが複数の他の層を流れる際に、それらの層でパケットを処理するために必要な追加の情報によってパケットが拡張される。受信側において、リバース処理が発生し、複数のパケットは、それらの物理層２２０表現からデータリンク層２１０表現へ、最終的に（複数のトランザクション層パケットのため）受信デバイスのトランザクション層２０５によって処理され得る形態へと変換される。
【００１８】
［トランザクション層］
一実施形態において、トランザクション層２０５は、デバイスの処理コアと、データリンク層２１０および物理層２２０のような相互接続アーキテクチャとの間のインタフェースを提供する。この点において、トランザクション層２０５の主な役割は、複数のパケット（すなわち、複数のトランザクション層パケットまたはＴＬＰ）のアセンブリおよびディスアセンブリである。トランザクション層２０５は通常、複数のＴＬＰのためのクレジットベースのフロー制御を管理する。ＰＣＩｅは、分割トランザクション、すなわちリクエストと時間によって分けられた応答を持つ複数のトランザクションを実装し、ターゲットデバイスが当該応答のためのデータを収集する間、リンクに他のトラフィックを搬送させることを可能にする。
【００１９】
また、ＰＣＩｅはクレジットベースのフロー制御を利用する。このスキームにおいて、デバイスはトランザクション層２０５内の複数の受信バッファの各々のために、クレジットの初期量を通知する。図１のコントローラハブ１１５のようなリンクの反対側における外部デバイスは、各ＴＬＰによって消費されるクレジット数をカウントする。トランザクションがクレジット限界を超えなければ、当該トランザクションは送信されてよい。応答を受信する際、クレジット量が回復される。クレジットスキームの利点は、クレジット限界が発生しなければ、クレジット返却の待機時間が性能に影響しないことである。
【００２０】
一実施形態において、４つのトランザクションアドレス空間は、構成アドレス空間、メモリアドレス空間、入出力アドレス空間、およびメッセージアドレス空間を含む。複数のメモリ空間トランザクションは、メモリマップ位置へ／から、データを転送する読み取りリクエストおよび書き込みリクエストのうち１または複数を含む。一実施形態において、複数のメモリ空間トランザクションは、２つの異なるアドレスフォーマットを使用可能である。例えば、３２ビットアドレスなどの短いアドレスフォーマット、または６４ビットアドレスなどの長いアドレスフォーマットなどである。複数の構成空間トランザクションを使用して、ＰＣＩｅデバイスの構成空間にアクセスする。構成空間に対する複数のトランザクションは、読み取りリクエストおよび書き込みリクエストを含む。複数のメッセージ空間トランザクション（または単に複数のメッセージ）は、複数のＰＣＩｅエージェント間の帯域内通信をサポートするために定義される。
【００２１】
従って、一実施形態において、トランザクション層２０５はパケットヘッダ／ペイロード２０６を組み立てる。現行の複数のパケットヘッダ／ペイロードのためのフォーマットは、ＰＣＩｅ仕様ウェブサイトのＰＣＩｅ仕様に見出され得る。
【００２２】
図３を素早く参照するに、ＰＣＩｅトランザクション記述子の一実施形態が示される。一実施形態において、トランザクション記述子３００は、トランザクション情報を搬送するためのメカニズムである。この点において、トランザクション記述子３００はシステム内の複数のトランザクションの識別をサポートする。他の複数の潜在的な使用は、既定のトランザクション順序の変更およびトランザクションと複数のチャネルとの関連付けの追跡を含む。
【００２３】
トランザクション記述子３００は、グローバル識別子フィールド３０２、属性フィールド３０４およびチャネル識別子フィールド３０６を含む。図示される例では、グローバル識別子フィールド３０２は、ローカルトランザクション識別子フィールド３０８およびソース識別子フィールド３１０を含むよう示される。一実施形態において、グローバルトランザクション識別子３０２は、すべての未処理のリクエストに対し一意である。
【００２４】
一実装に従うと、ローカルトランザクション識別子フィールド３０８は要求エージェントによって生成されるフィールドであり、このフィールドは、その要求エージェントに対する完了を必要とするすべての未処理のリクエストに対して一意である。更に、この例において、ソース識別子３１０はＰＣＩｅ階層内のリクエストエージェントを一意に識別する。従って、ローカルトランザクション識別子３０８フィールドはソースＩＤ３１０とともに、階層ドメイン内のトランザクションのグローバル識別を提供する。
【００２５】
属性フィールド３０４は、トランザクションの複数の特性および関係を指定する。この点において、属性フィールド３０４は、複数のトランザクションの既定処理の変更を許容する追加の情報を提供するために潜在的に使用される。一実施形態において、属性フィールド３０４は、優先度フィールド３１２、予約フィールド３１４、順序フィールド３１６、およびスヌープ無しフィールド３１８を含む。ここで、優先度サブフィールド３１２はトランザクションに優先度を割り当てるイニシエータによって変更されてよい。予約属性フィールド３１４は、将来のため、またはベンダ定義の利用のために、予約されたままとされる。優先度またはセキュリティ属性を使用する、複数の可能な利用モデルは、予約属性フィールドを使用して実装されてよい。
【００２６】
この例において、順序属性フィールド３１６が使用され、複数の既定の順序ルールを変更し得る順序タイプを伝達する任意情報を供給する。一例示的実装によると、順序属性「０」は、複数の既定の順序ルールが適用されることを示し、順序属性「１」は緩和された順序を示し、複数の書き込みが同一方向への複数の書き込みを渡すことができ、複数の読み取り完了は、同一方向に複数の書き込みを渡すことができる。スヌープ属性フィールド３１８は、複数のトランザクションがスヌープされるかどうかを決定すべく利用される。示される通り、チャネルＩＤフィールド３０６は、トランザクションが関連付けられるチャネルを識別する。
【００２７】
［リンク層］
リンク層２１０は、データリンク層２１０とも称され、トランザクション層２０５と物理層２２０との間の中間段階として動作する。一実施形態において、データリンク層２１０の役割は、２つのコンポーネントリンク間で複数のトランザクション層パケット（ＴＬＰ）を交換するための信頼性のあるメカニズムを提供することである。データリンク層２１０の一方側は、トランザクション層２０５によって組み立てられた複数のＴＬＰを受け入れ、パケットシーケンス識別子２１１、すなわち識別番号またはパケット番号を適用し、エラー検出コード、すなわちＣＲＣ２１２を計算および適用し、物理デバイスから外部デバイスにわたる送信のため、変更された複数のＴＬＰを物理層２２０に送信する。
【００２８】
［物理層］
一実施形態において、物理層２２０は、パケットを外部デバイスへ物理的に送信すべく、論理サブブロック２２１および電気サブブロック２２２を含む。ここで論理サブブロック２２１は、物理層２２０の複数の「デジタル」機能の役割を有する。この点において、論理サブブロックは、物理サブブロック２２２による送信のための発信情報を準備するための送信セクションと、受信情報をリンク層２１０に渡す前に受信情報を識別して準備する受信セクションとを含む。
【００２９】
物理ブロック２２２は、送信機および受信機を含む。送信機には、論理サブブロック２２１によって複数のシンボルが供給され、送信機はそれらをシリアライズし、外部デバイスへと送信する。受信機は外部デバイスからのシリアライズされた複数のシンボルが供給され、受信された複数の信号をビットストリームに変換する。ビットストリームはデシリアライズされ、論理サブブロック２２１に供給される。一実施形態において、８ｂ／１０ｂ送信コードが採用され、ここでは１０ビットの複数のシンボルが送受信される。ここでは、複数のフレーム２２３でパケットをフレーム化すべく、特別なシンボルが使用される。また、一例において、受信機は着信シリアルストリームから復元されたシンボルクロックも提供する。
【００３０】
上述の通り、トランザクション層２０５、リンク層２１０、および物理層２２０はＰＣＩｅプロトコルスタックの具体的な実施形態に関し記載されているが、層状プロトコルスタックはこれに限定されない。実際、任意の層状プロトコルが包含／実装されてよい。一例として、層状プロトコルとして表されるポート／インタフェースは、（１）複数のパケットを組み立てる第１の層、すなわちトランザクション層と、複数のパケットを順序付ける第２の層、すなわちリンク層、および複数のパケットを送信する第３の層、すなわち物理層を含む。具体例として、共通標準インタフェース（ＣＳＩ）層状プロトコルが利用される。
【００３１】
次に図４を参照するに、ＰＣＩｅシリアルポイントツーポイントファブリックの一実施形態が示される。ＰＣＩｅシリアルポイントツーポイントリンクの一実施形態が示されているが、シリアルポイントツーポイントリンクはシリアルデータを送信するための任意の送信パスを含み、これに限定されない。示される実施形態において、基本のＰＣＩｅリンクは２つの低電圧の差分的に駆動される複数の信号ペアを含む。すなわち、送信ペア４０６／４１１および受信ペア４１２／４０７である。従って、デバイス４０５は、データをデバイス４１０に送信するための送信ロジック４０６と、デバイス４１０からデータを受信するための受信ロジック４０７とを含む。換言すると、２つの送信パス、すなわちパス４１６および４１７と、２つの受信パス、すなわちパス４１８および４１９とがＰＣＩｅリンクに含まれる。
【００３２】
送信パスは、送信ライン、銅線、光回線、無線通信チャネル、赤外線通信リンク、他の通信パスのような、データを送信するための任意のパスを指す。例えば、デバイス４０５およびデバイス４１０など、２つのデバイス間の接続はリンク４１５などのリンクと呼ばれる。リンクは１レーンをサポートしてよく、各レーンは、差分信号ペアのセット（送信のための１ペア、受信のための１ペア）を表す。帯域幅をスケーリングするために、リンクはｘＮで示される複数のレーンを集約してよく、ここでＮは任意のサポートされるリンク幅、例えば、１、２、４、８、１２、１６、３２、６４、またはそれ以上などである。
【００３３】
差分ペアとは、複数の差分信号を送信するためのライン４１６および４１７などの２つの送信パスを指す。一例として、ライン４１６が低電圧レベルから高電圧レベルへと切り替わる、すなわち、立ち上りエッジである場合、ライン４１７は、高論理レベルから低論理レベル、すなわち立ち下りエッジへと、駆動する。複数の差分信号は、複数のより良好な電気的特性、例えば、より良好な信号整合性、すなわち相互連結、電圧オーバシュート／アンダシュート、リンギング等を潜在的に示す。これにより、より良好なタイミングウィンドウを可能にし、それにより、より高速な送信周波数を可能にする。
【００３４】
ＰＣＩｅを含む、既存の相互接続および通信アーキテクチャに係る複数の物理層は、システム内の共有メモリおよび複数のＩ／Ｏサービスを提供すべく活用され得る。従来、キャッシュ可能メモリは、従来のロード／格納（ＬＤ／ＳＴ）メモリセマンティクスを使用し、複数の独立したシステム間で共有できない。独立したシステム、または「ノード」は、それが単一の論理エンティティとして機能し、単一のオペレーティングシステム（および／または単一のＢＩＯＳまたは仮想マシンモニタ（ＶＭＭ））によって制御され、および／または独立したフォールトドメインを有するという意味において、独立したものであり得る。単一のノードは、１または複数のプロセッサデバイスを含み、単一のボードまたは複数のボード上で実装され、同一ノード上の複数のデバイスによってＬＤ／ＳＴセマンティクスを使用してアクセス可能なキャッシュ可能メモリを含む、ローカルメモリを含み得る。ノード内で、共有メモリは、ノード内のいくつかの異なるプロセッサ（例えば、複数の中央処理装置（ＣＰＵ））によってアクセスされ得るランダムアクセスメモリ（ＲＡＭ）等のメモリの１または複数のブロックを含むことができる。共有メモリはまた、複数のプロセッサのローカルメモリまたはノード内の他の複数のデバイスを含み得る。共有メモリを有するノード内の複数のデバイスは、共有メモリ内のデータの単一ビューを共有できる。共有メモリを含むＩ／Ｏ通信は、非常に短い待機時間であり得、複数のプロセッサによるメモリへの高速アクセスを許容する。
【００３５】
従来、複数の異なるノード間のメモリ共有はロード／格納パラダイムによるメモリ共有を許容していなかった。例えば、いくつかのシステムにおいて、異なる複数のノード間のメモリ共有は、分散メモリアーキテクチャを介して容易にされる。従来のソリューションにおいて、計算タスクはローカルデータ上で動作し、別のノードのデータが所望される場合、計算タスク（例えば、別のＣＰＵノードによって実行される）は、当該別のノードと例えばイーサネット（登録商標）、インフィニバンド、または別の層状プロトコルなどの通信プロトコルスタックを利用する通信チャネルを介して通信する。従来の複数のマルチノードシステムにおいて、異なる複数のノードに係る複数のプロセッサは、データがどこに存在するかを認識する必要がない。プロトコルスタック経由等、複数の従来のアプローチを使用してデータを共有することは、ロード／格納パラダイムを使用するノード内のメモリ共有よりも、顕著に長い待機時間を有し得る。共有メモリ内のデータに直接アドレス指定および動作するよりむしろ、あるノードはイーサネット（登録商標）（またはインフィニバンド）のような既存のプロトコルハンドシェイクを使用して別のノードからデータを要求でき、ソースノードは当該データを提供でき、その結果、他の複数の例の中でも特に、当該データは要求ノードによって格納および動作され得る。
【００３６】
いくつかの実装例において、メモリが複数の独立したノード間で排他的アクセスまたは共有アクセスのために、ロード／格納（ＬＤ／ＳＴ）メモリセマンティクスを使用して共有されることを許容する共有メモリアーキテクチャが、提供され得る。一例において、Ｉ／Ｏセマンティクス（ＰＣＩｅのような複数のプロトコルのための）と共にメモリセマンティクス（および該当する場合、ディレクトリ情報）がピンの共通セットまたはピンの別個のセットのいずれかにエクスポートされ得る。そのようなシステムにおいて、改善された共有メモリアーキテクチャは、システム内の複数のノードの各々がその独自の独立したフォールトドメイン（およびローカルメモリ）を維持することを許容する一方で、複数の当該ノードによるアクセスのための共有メモリプール、およびＬＤ／ＳＴセマンティクスによるメモリを使用する複数のノード間で低待機時間のメッセージを渡すことを可能にする。いくつかの実装例において、そのような共有メモリプールは、動的（または静的）に異なる複数のノード間で割り当てられ得る。従って、システムの様々なノードを複数のノードからなる動的に変化する複数のグループに構成でき、様々なタスクに対し、連携して柔軟に動作させて、例えば、ニーズが生じれば共有メモリインフラストラクチャを使用することができる。
【００３７】
一実施形態において、相互接続は複数のワークステーションまたはサーバのような複数の高性能コンピューティングプラットフォームにおいて提供され得、複数のプロセッサ、アクセラレータ、コンピューティングブロック、Ｉ／Ｏデバイス等を接続する。相互接続アーキテクチャは、複数のプロトコル層（コヒーレント、非コヒーレント、および任意で他の複数のメモリベースのプロトコル）、ルーティング層、リンク層、および物理層のような複数の定義された層を含むべく、層状にされ得る。図５は、相互接続の例示的層状プロトコルスタックの一実施形態を示す。いくつかの実装例において、図５に示される複数の層のうち少なくともいくつかは、任意であってよい。各層は、情報の粒度またはクォンタムに係るその独自のレベルを対処する（複数のパケット５３０を持つプロトコル層５０５ａ、ｂ、複数のフリット５３５を持つリンク層５１０ａ、ｂ、および複数のフィット５４０を持つ物理層５０５ａ、ｂ）。いくつかの実施形態において、パケットは実装に基づいて、複数の部分的なフリット、単一のフリット、または複数のフリットを含んでよいことに留意されたい。
【００３８】
第１の例として、フィット５４０の幅は、リンク幅対ビット数の１対１のマッピング（例えば、２０ビットリンク幅は、２０ビットのフィットを含む等）を含む。複数のフリットは、１８４、１９２または２００ビットのような、より大きなサイズを有してよい。フィット５４０が２０ビット幅で、フリット５３５のサイズが１８４ビットの場合、１つのフリット５３５を送信するには小数値（fractional number）のフィット５４０が必要となる（例えば、他の複数の例の中でも特に、１８４ビットのフリット５３５の送信には２０ビットで９．２フィット、１９２ビットのフリットの送信には２０ビットで９．６となる）ことに留意されたい。物理層における基本的なリンクの複数の幅は、変化してよいことに留意されたい。例えば、方向毎のレーン数は、２、４、６、８、１０、１２、１４、１６、１８、２０、２２、２４等を含んでよい。一実施形態において、リンク層５１０ａ、ｂは、単一のフリット内に異なる複数のトランザクションのピースを埋め込み可能であり、１または複数のヘッダ（例えば１、２、３、４）がフリット内に埋め込まれてよい。一例において、複数のヘッダは対応する複数のスロットへ分割され、当該フリット内の複数のメッセージが、異なる複数のノードへ宛てられることを可能にする。
【００３９】
一実施形態において、物理層５０５ａ、ｂが、物理媒体（電気または光等）上での情報の高速転送を担うことができる。物理リンクは、層５０５ａおよび５０５ｂのような２つのリンク層エンティティ間のポイントツーポイントであり得る。リンク層５１０ａ、ｂは、複数の上方層から物理層５０５ａ、ｂを抽出でき、信頼性をもってデータ（複数のリクエストも）を転送し、２つの直接接続されたエンティティ間のフロー制御を管理する能力を提供する。リンク層はまた、物理チャネルを複数の仮想チャネルおよびメッセージクラスに仮想化する役割を有し得る。プロトコル層５２０ａ、ｂは、複数の物理リンクにわたる転送のために、複数のプロトコルメッセージを物理層５０５ａ、ｂに対し渡す前に、複数のプロトコルメッセージを複数の適切なメッセージクラスおよび仮想チャネルにマッピングすべく、リンク層５１０ａ、ｂに依存する。リンク層５１０ａ、ｂは、他の複数の例の中でも特に、リクエスト、スヌープ、応答、ライトバック、非コヒーレントデータのような複数のメッセージをサポートしてよい。
【００４０】
物理層５０５ａ、ｂ（またはＰＨＹ）は、電気層（すなわち、２つのコンポーネントを接続する複数の導体）の上方および図５に示されるようにリンク層５１０ａ、ｂの下方に実装されるよう定義され得る。物理層および対応するロジックは各エージェントに存在でき、（例えば、あるリンクのいずれかの側における複数のデバイスにおいて）互いに分離されている、２つのエージェント（ＡおよびＢ）上の複数のリンク層を接続する。ローカルおよび遠隔の複数の電気層は、物理媒体に（例えば、複数のワイヤ、導体、光等）よって接続される。一実施形態において、物理層５０５ａ、ｂは、２つの主要なフェーズである、初期化および動作のフェーズを有する。初期化中、接続はリンク層に対して不透明であり、シグナリングは複数の時限状態とハンドシェイクイベントとの組み合わせを含んでよい。動作中、接続はリンク層に対して透明であり、シグナリングは、すべてのレーンが単一のリンクとして共同して動作する際、特定の速度である。動作フェーズ中、物理層はエージェントＡからエージェントＢへ、およびエージェントＢからエージェントＡへ、複数のフリットをトランスポートする。接続はリンクとも称され、複数のフリットおよび現在の構成（例えば幅）の制御／状態をリンク層と交換しつつ、媒体、幅および複数のリンク層からの速度を含む、いくつかの物理的な態様を抽出する。初期化フェーズは、複数のマイナーフェーズ、例えば、ポーリングや構成を含む。動作フェーズはまた、複数のマイナーフェーズ（例えば、リンク電力管理状態）を含む。
【００４１】
一実施形態において、リンク層５１０ａ、ｂは、２つのプロトコルまたはルーティングエンティティ間で信頼性のあるデータ転送を提供すべく実装され得る。リンク層は、プロトコル層５２０ａ、ｂから物理層５０５ａ、ｂを抽出でき、２つのプロトコルエージェント（Ａ、Ｂ）間のフロー制御を担当でき、プロトコル層（複数のメッセージクラス）およびルーティング層（複数の仮想ネットワーク）に対し、複数の仮想チャネルサービスを提供できる。プロトコル層５２０ａ、ｂとリンク層５１０ａ、ｂとの間のインタフェースは通常、パケットレベルであり得る。一実施形態において、リンク層での最小転送単位は、１９２ビットまたは何らかの他の単位である指定されたビット数である、フリットと称される。リンク層５１０ａ、ｂは、物理層５０５ａ、ｂの転送単位（フィット）を、リンク層５１０ａ、ｂの転送単位（フリット）へフレーム化すべく、物理層５０５ａ、ｂに依存する。また、リンク層５１０ａ、ｂは、論理的に２つの部分、送信機と受信機とに分割されてよい。１つのエンティティ上の送信機／受信機ペアは、別のエンティティ上の送信機／受信機ペアと接続されてよい。フロー制御はしばしば、フリットおよびパケットの両方をベースに実行される。エラー検出および訂正はまた、潜在的には、フリットレベルベースで実行される。
【００４２】
一実施形態において、ソースからターゲットへと複数のトランザクションをルーティングすべく、ルーティング層５１５ａ、ｂは柔軟性のある分散された方法を提供できる。複数のトポロジのための複数のルーティングアルゴリズムは、各ルータにおけるプログラマブルルーティングテーブルを介して指定され得るので、このスキームは柔軟性がある（一実施形態においてプログラミングは、ファームウェア、ソフトウェア、またはそれらの組み合わせにより実行される）。ルーティング機能は分散型であってよく、ルーティングは一連のルーティングステップを介してなされてよく、各ルーティングステップは、ソース、中間、またはターゲットのルータのいずれかにおけるテーブルの検索を介して定義される。ソースでの検索は、パケットをファブリックへと挿入するために用いられてよい。中間ルータでの検索は、入力ポートから出力ポートへパケットをルーティングするために使用されてよい。ターゲットポートでの検索は、ターゲットプロトコルエージェントをターゲットにするために使用されてよい。複数のルーティングテーブル、つまり、複数のルーティングアルゴリズムは仕様によって具体的に定義されないので、いくつかの実装例において、ルーティング層を薄くできることに留意されたい。これにより柔軟性、および柔軟なプラットフォームアーキテクチャトポロジを含む様々な利用モデルが、システム実装によって定義されることを可能にする。ルーティング層５１５ａ、ｂは、最大３つ（またはそれより多い）の仮想ネットワーク（ＶＮ）、一例においては各仮想ネットワーク内で定義された、いくつかのメッセージクラスを持つＶＮ０およびＶＮ１の２つのデッドロックフリーのＶＮの使用を提供するため、リンク層５１０ａ、ｂに依存する。共有適応仮想ネットワーク（ＶＮＡ）が、リンク層で定義されてよいが、この適応ネットワークは複数のルーティング概念に直接さらされなくてよい。というのは、各メッセージクラスおよび仮想ネットワークは、他の複数の特徴および例の中でも特に、複数の専用リソースおよび保証された転送進行を有してよい。
【００４３】
一実施形態において、相互接続アーキテクチャは、メモリからの複数のデータラインをキャッシュする複数のエージェントをサポートすべく、コヒーレンシプロトコル層５２０ａ、ｂを含むことができる。メモリデータをキャッシュしたいエージェントは、コヒーレンシプロトコルを使用して、そのキャッシュにロードすべく、データラインを読み取ってよい。そのキャッシュ内のデータラインを変更したいエージェントは、コヒーレンシプロトコルを使用して、データを変更する前にラインのオーナシップを取得してよい。ラインの変更後、エージェントはラインをメモリにライトバックするか、またはラインを外部リクエストへの応答に含むまで、ラインをそのキャッシュに保持する複数のプロトコル要件に従ってよい。最後に、そのキャッシュ内のラインを無効化すべく、エージェントは複数の外部リクエストに応じ得る。プロトコルは、すべてのキャッシュエージェントが従い得る複数のルールを指示することによって、データのコヒーレンシを保証する。また、それはキャッシュを持たない複数のエージェントのために、コヒーレントにメモリデータを読み書きする手段を提供する。
【００４４】
コヒーレンシプロトコルの例を利用する複数のトランザクションをサポートすべく、２つの条件が課され得る。第１に、プロトコルは一例として、複数のエージェントのキャッシュ内のデータにわたり、およびそれらのデータとメモリ内のデータとの間で、アドレス毎ベースでデータ一貫性を維持できる。非公式に、データ一貫性は、最新のデータ値を表わすエージェントのキャッシュ内の各有効なデータラインを指してよく、コヒーレンシプロトコルパケット内で送信されたデータは、送信された時点での最新のデータ値を表わし得る。複数のキャッシュまたは送信において、データの有効なコピーが存在しない場合、プロトコルは最新のデータ値がメモリ内に存在することを保証してよい。第２に、プロトコルは、複数のリクエストのための明確に定義された複数のコミットメントポイントを提供できる。複数の読み取りのための複数のコミットメントポイントは、データが利用可能になる時を示してよい。また、複数の書き込みのための複数のコミットメントポイントは、書き込まれたデータがグローバルに観測可能となり、複数の後続の読み取りによってロードされる時を示してよい。プロトコルは、コヒーレントメモリ空間内のキャッシュ可能およびキャッシュ不可能（ＵＣ）の両方のリクエストのためのこれらのコミットメントポイントをサポートしてよい。
【００４５】
いくつかの実装例において、相互接続は埋め込みクロックを利用できる。クロック信号は相互接続を使用して送信されたデータ内に埋め込まれ得る。データに埋め込まれたクロック信号によって、別個の専用化された複数のクロックレーンを省略できる。例えば、これにより、デバイスのより多くのピンをデータ転送のため専用化でき、特にピンのための空間が高価であるような複数のシステムにおいて専用化できるので、有用であり得る。
【００４６】
相互接続のいずれの側においても、２つのエージェント間でリンクを確立することが可能である。データを送信するエージェントは、ローカルエージェントであり得、データを受信するエージェントは遠隔エージェントであり得る。複数のステートマシンが両方のエージェントによって採用されてよく、リンクの様々な態様を管理する。一実施形態において、物理層データパスは、リンク層から電気的フロントエンドに複数のフリットを送信できる。一実装では、制御パスはステートマシン（リンクトレーニングステートマシンまたはその同等物とも称される）を含む。ステートマシンの複数の動作および複数の状態からの複数の終了は、複数の内部信号、タイマ、外部信号、または他の情報に依存してよい。実際、いくつかの初期化状態のような複数の状態のうちのいくつかは、状態を終了するためのタイムアウト値を提供すべく、複数のタイマを有してよい。いくつかの実施形態において、検出とはレーンの両方の側でイベントを検出することを指すが、必ずしも同時にというわけではないことに留意されたい。
【００４７】
ステートマシンにおいて定義される複数の状態は、他の複数のカテゴリおよびサブカテゴリの中でも特に、複数のリセット状態、複数の初期化状態、および複数の動作可能状態を含むことができる。一実施形態において、動作と終了は、複数のトレーニングシーケンスの交換に基づくことができる。一実施形態において、リンクステートマシンはローカルなエージェントのクロックドメインで実行され、ある状態から次の状態への移行は、送信機のトレーニングシーケンス境界と一致する。現在の状態を反映すべく、複数の状態レジスタが利用されてよい。複数の例、状態は例えば、次のものを含んでよい。
【００４８】
送信リンク状態：リンク状態複数のフリットが遠隔エージェントに送信される。状態はブロッキングリンク状態から入ってよく、タイムアウトのようなイベントでブロッキングリンク状態へ戻ってよい。送信リンク状態中（ＴＬＳ）、送信機は複数のフリットを送信し、受信機は複数のフリットを受信する。また、ＴＬＳから低電力リンク状態へ終了してよい。いくつかの実装例において、ＴＬＳは「Ｌ０」状態として称され得る。
【００４９】
ブロッキングリンク状態：リンク状態送信機および受信機は、統一された態様で動作している。時限状態であってよく、その間、複数のリンク層フリットが保留されるが、物理層情報は遠隔エージェントへと通信される。低電力リンク状態（または設計に基づき、他のリンク状態）へ終了してよい。一実施形態において、ブロッキングリンク状態（ＢＬＳ）が周期的に発生してよい。当該期間は、ＢＬＳ間隔と称され、時限的であってよく、低速度と動作速度との間で異なってよい。長さに係る物理層制御シーケンスが、送信リンク状態または部分幅送信リンク状態中等に送信され得るよう、リンク層は周期的に複数のフリットを送信することをブロックされてよいことに留意されたい。いくつかの実装例において、ブロッキングリンク状態（ＢＬＳ）は、Ｌ０制御または「Ｌ０ｃ」状態と称され得る。
【００５０】
部分幅送信リンク状態：省電力リンク状態一実施形態において、非対称部分幅とは、複数の異なる幅を有する２方向リンクの各方向を指し、これらはいくつかの設計でサポートされてよい。速度は部分幅状態では変更できない一方、当該リンクの複数のレーンの幅は変更されてよい。したがって、複数のフリットは潜在的に複数の異なる幅で送信される。部分幅状態は、特定の受信および送信された複数のメッセージに基づく低電力リンク状態、または他の複数のイベントに基づく部分幅送信リンク状態の終了またはリンクブロッキング状態のような他の複数のリンク状態へと終了してよい。一実施形態において、送信機ポートは、より良好な信号整合性（すなわち、ノイズ軽減）を提供すべく、複数のアイドルレーンを交互にオフにしてよい。複数のヌルフリットのような再試行不可能な複数のフリットが、リンク幅が変更されている期間中に利用されてよい。対応する受信機は、１または複数の構造における現在および前の複数のレーンマップを記録するのに加え、これらのヌルフリットをドロップし、複数のアイドルレーンを交互にオフにしてよい。複数の状態および関連付けられた状態レジスタは、変更されないままであってよいことに留意されたい。いくつかの実装例において、部分幅送信リンク状態は、部分的Ｌ０、またはＬ０ｐ状態と称され得る。
【００５１】
部分幅送信リンク状態の終了：部分幅状態の終了いくつかの実装例において、ブロッキングリンク状態を使用してもよいし、しなくてもよい。一実施形態において、送信機は複数のアイドルレーンをトレーニングおよびデスキューすべく、複数の部分幅終了パターンを送信することによって、終了を開始する。一例において、終了パターンはＥＩＥＯＳで開始する。ＥＩＥＯＳはレーンがエントリを完全な送信リンク状態に開始する準備ができていることをシグナリングすべく、検出およびデバウンスされ、複数のアイドルレーン上でＳＤＳまたは高速トレーニングシーケンス（ＦＴＳ）で終了してよい。終了シーケンス（タイムアウト前に完了されないデスキューのような複数の受信機の動作）中の任意の不具合は、リンク層への複数のフリット転送を停止し、リセットをアサートする。リセットは次のブロッキングリンク状態でリンクをリセットすることによって処理される。ＳＤＳはまた、複数のレーン上のスクランブラ／デスクランブラを複数の適切な値へ初期化してよい。
【００５２】
低電力リンク状態：より低電力状態一実施形態において、それは部分幅リンク状態より低電力である。というのは、本実施形態においてシグナリングはすべてのレーンおよび両方の方向で停止されるからである。複数の送信機は、低電力リンク状態を要求するためにブロッキングリンク状態を使用してよい。ここで、受信機はリクエストをデコードしてよく、ＡＣＫまたはＮＡＫで応答してよく、さもなければ、リセットがトリガされてよい。いくつかの実装例において、低電力リンク状態はＬ１状態と称され得る。
【００５３】
図６を参照するに、複数の独立したノード６１０ａ〜６１０ｎの各々によって、ロード／格納の複数の技術を使用してアクセス可能な共有メモリ６０５を含む例示システムを示す、簡易ブロックダイアグラム６００が示される。例えば、システム上の様々なノード６１０ａ〜６１０ｎに係る複数のロード／格納アクセスリクエストを受け入れ可能な共有メモリコントローラ６１５が提供され得る。共有メモリ６０５はシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、複数のデュアルインラインメモリモジュール（ＤＩＭＭ）、および他の不揮発性メモリ（または揮発性メモリ）を利用して実装され得る。
【００５４】
各ノードそれ自体で、１または複数のＣＰＵソケットを有してよく、またシステム内の他の複数のノードによるＬＤ／ＳＴアクセスから隔絶されたままのローカルメモリを含んでよい。ノードは、他の複数の例の中でも特に、ＰＣＩｅ、ＱＰＩ、イーサネット（登録商標）を含む１または複数のプロトコルを使用して、システム上の複数の他のデバイス（共有メモリコントローラ６１５、ネットワーキングコントローラ６２０、他の複数のノード等）と通信できる。いくつかの実装例において、共有メモリリンク（ＳＭＬ）プロトコルが提供され得、それを介して低待機時間ＬＤ／ＳＴメモリセマンティクスがサポートされ得る。例えば、ＳＭＬがシステムの様々なノード６１０ａ〜６１０ｎによる共有メモリ６０５に係る複数の読み取りおよび書き込みの通信において（共有メモリコントローラ６１５を介して）、使用され得る。いくつかの実装例において、ＳＭＬは図５の例に関連して記載される相互接続アーキテクチャおよびプロトコルの複数の態様を採用できる。
【００５５】
一例において、ＳＭＬはＳｃａｌａｂｌｅ  Ｍｅｍｏｒｙ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＳＭＩ）第３世代（ＳＭＩ３）のようなメモリアクセスプロトコルに基づいてよい。複数の他のメモリアクセスプロトコルが代替的に使用されてよく、例えば他の複数の例の中でも特に、Ｆｕｌｌｙ  Ｂｕｆｆｅｒｅｄ  ＤＩＭＭ（ＦＢ‐ＤＩＭＭ）、ＤＤＲ  Ｔｒａｎｓａｃｔｉｏｎａｌ（ＤＤＲ‐Ｔ）のような複数のトランザクションメモリアクセスプロトコルが挙げられる。他の複数の例において、ＳＭＬは追加の複数のディレクトリ拡張を持つネイティブのＰＣＩｅメモリ読み込み／書き込みセマンティクスに基づくことができる。ＳＭＬのメモリプロトコルベースの実装は、複数のラインメモリアクセスをキャッシュするよう調整されていることにより、帯域幅効率の点で複数の利点を提供できる。ＰＣＩｅのような複数の高性能デバイス間通信プロトコルが存在する一方で、そのような複数のプロトコルに係る複数の上方層（例えば、トランザクション層およびリンク層）は、共有メモリ６０５を必要とする複数のトランザクションを含む複数のＬＤ／ＳＴメモリトランザクションにおける使用のために、完全なプロトコルの適用を低下させる待機時間を導入し得る。メモリリンクプロトコルはＰＣＩｅのような別のプロトコルスタックの大半を迂回できるので、ＳＭＩ３のようなメモリリンクプロトコルは、複数のより短い待機時間のアクセスを供給する潜在的な追加的な利点を許容できる。従って、ＳＭＬの複数の実装例は、ＳＭＩ３、またはＰＣＩｅ上のＳＭＩ３のような別のプロトコルに係る論理および物理ＰＨＹ上で実行されている別のメモリプロトコルを利用できる。
【００５６】
記載した通り、いくつかの実装例において、システム内のノード６１０ａ〜６１０ｎに係る複数のロード／格納リクエストを処理するためのロジックを含む共有メモリコントローラ（ＳＭＣ）６１５が提供され得る。複数のロード／格納リクエストは、ＳＭＬを利用し、およびノード６１０ａ〜６１０ｎをＳＭＣ６１５に接続することによって、複数のリンク経由でＳＭＣ６１５によって受信され得る。いくつかの実装例において、ＳＭＣ６１５は、複数の共有メモリリソースのためにノード６１０ａ〜６１０ｎに係る複数のアクセスリクエストをサービスするためのロジックを含む、特定用途向け集積回路（ＡＳＩＣ）のようなデバイスとして実装され得る。他の複数の例において、ＳＭＣ６１５（並びに共有メモリ６０５）は、ノード６１０ａ〜６１０ｎのうち１または複数（あるいはさらにすべて）と別のデバイス、チップ、またはボード上に存在し得る。ＳＭＣ６１５は更に、共有メモリ６０５を含む様々なノードの複数のトランザクションを調整するロジックを含むことができる。さらに、ＳＭＣは、共有メモリ６０５内に含まれた各キャッシュラインのような様々なデータリソースへのディレクトリ追跡アクセスを維持できる。例えば、他の複数の潜在的な例の中でも特に、データリソースは、共有アクセス状態（例えば、ノード内のプロセッシングデバイスおよび／またはＩ／Ｏデバイスによって同時にアクセス可能（例えば、ロードされまたは読み取られ））、排他的アクセス状態（例えば、一時的でない場合、ノード内の単一のプロセッシングおよび／またはＩ／Ｏデバイスによって排他的に予約済み（例えば、格納または書き込み動作のため））、キャッシュされていない状態であり得る。更に、各ノードが共有メモリ６０５の１または複数の部分へのダイレクトアクセスを有してよい一方で、複数の異なるアドレス指定スキームおよび値が様々なノード（例えば、６１０ａ〜６１０ｎ）によって採用されてよい。これにより、第１のアドレス値による第１のノードおよび第２のアドレス値により同一データを参照する第２のノードによって、参照される同一共有メモリデータ（例えば、命令内で）をもたらす。ＳＭＣ６１５は、複数の共有メモリリソースへの複数のノードのアドレスをマッピングする複数のデータ構造を含むロジックを含んでよく、ＳＭＣ６１５が様々なノードの様々なアクセスリクエストを解釈することを許容する。
【００５７】
さらに場合によっては、共有メモリのいくつかの部分（例えば、複数の特定のパーティション、メモリブロック、レコード、ファイル等）は、複数の特定の許可、ルール、割り当ての支配下にあってよく、結果的にノード６１０ａ〜６１０ｎの一部分のみが、対応するデータにアクセスすることを許容される（例えば、ＳＭＣ６１５によって）。実際、各共有メモリリソースは、システムのノード６１０ａ〜６１０ｎのそれぞれの（および場合によっては、異なる）サブセットに割り当てられてよい。新規のまたは変更された共有メモリ６０５の特定部分に適用可能な複数のルール、許可、ノード割り当ておよびオーナシップを収容すべく、これらの割り当ては動的であり得、ＳＭＣ６１５は、そのような複数のルールおよび許可（例えば、オンデマンド、動的等）を変更できる。
【００５８】
例示のＳＭＣ６１５は更に、１または複数の共有メモリリソースにアクセスするシステム内の複数のノード（例えば、６１０ａ〜６１０ｎ）を含む様々なトランザクションを追跡できる。例えば、ＳＭＣ６１５は、他のトランザクション情報の中でも特に、トランザクションに関わるノードの識別、トランザクションの進行（例えば、それが完了されたかどうか）を含む、各共有メモリ６０５トランザクションのための情報を追跡できる。これは、複数の従来の分散メモリアーキテクチャに係るトランザクション指向の態様のうちいくつかが、本明細書に記載の改善されたマルチノード共有メモリアーキテクチャに適用されることを許可する。さらに、トランザクション追跡（例えば、ＳＭＣによる）は、それぞれのノードに係る複数の別個の独立したフォールトドメインを維持または強制することを補助すべく使用され得る。例えば、ＳＭＣは、メモリ内を含む、その複数の内部データ構造内の進行中の各トランザクションに対応するノードＩＤを維持でき、またその情報を使用して、複数のアクセス権を強制し、各ノードの複数の個々のフォールトドメインを維持できる。従って、複数のノードのうちの１つがダウンする場合（例えば、重大なエラー、トリガされた復元シーケンス、または他のフォールト若しくはイベントに起因するもの）、そのノードおよび共有メモリ６０５に関わるその複数のトランザクションのみが中断され（例えば、ＳＭＣによってダンプされる）、すなわち、共有メモリ６０５を含む複数の残りのノードに係る複数のトランザクションは、他方のノード内のフォールトから独立して継続する。
【００５９】
システムは複数のノードを含むことができる。さらに、いくつかの例示システムは複数のＳＭＣを含むことができる。場合によって、ノードは、ノードが直接取り付けられてない遠隔ＳＭＣから共有メモリにリモートアクセス可能であってよい（すなわち、ノードのローカルＳＭＣは遠隔ＳＭＣに１または複数のＳＭＬリンクホップを介して接続する）。遠隔ＳＭＣは、同一ボード内にあってよく、異なるボード内にあることもできる。場合によって、ノードのうちいくつかは、共有メモリ６０５にアクセスするものであるにも関わらず、オフシステム（例えば、オフボードまたはオフチップ）であってよい。例えば、１または複数のオフシステムノードは複数の他の例の中でも得に、ＳＭＬ準拠のリンクを使用してＳＭＣに直接接続できる。さらに、それら独自のＳＭＣおよび共有メモリを含む他の複数のシステムはまた、メモリ６０５の共有を、例えば、ＳＭＬリンク経由でＳＭＣに接続される他のＳＭＣとのインタフェースを取る別のボード上に含まれる複数のノードまで拡張すべく、ＳＭＣ６１０に接続できる。更に、他のオフボードまたはオフチップノードへアクセスを更に拡張すべく、複数のネットワーク接続がトンネリングされ得る。例えば、ＳＭＬはイーサネット（登録商標）接続経由でトンネリングでき（例えば、ネットワークコントローラ６２０を介して提供される）、図６の例示システムを、１または複数の他のノードを含み、および他の複数の例の中でも特に、これらのノードがＳＭＣ６１５へのアクセスおよびそれにより共有メモリへ６０５のアクセスを取得することを可能にする別のシステムに、通信可能に連結する。
【００６０】
別の例として図７の簡易ブロックダイアグラム７００に示されるように、ＬＤ／ＳＴメモリセマンティクスに従う複数の独立したノードによる共有アクセスを許可する改善された共有メモリアーキテクチャは、様々な異なるマルチノードシステム設計の提供を柔軟に許容できる。例示システムで提供される１または複数の共有メモリブロックの複数の部分を共有すべく、複数のノードの様々な組み合わせが割り当てられ得る。例えば、図７の例に示される別の例示システムは、例えば別の複数のダイ、ボード、チップ等の実装される複数のデバイス７０５、７１０、７１５、７２０を含むことができ、各デバイスは１または複数の独立したＣＰＵノード（例えば、６１０ａ〜６１０ｈ）を含む。各ノードはその独自のローカルメモリを含むことができる。複数のデバイス７０５、７１０、７１５、７２０のうち１または複数は更に、システムの２または２より多いノード６１０ａ〜６１０ｈによってアクセス可能な共有メモリを含むことができる。
【００６１】
図７に示されるシステムは、本明細書に図示され記載される改善された共有メモリアーキテクチャを介して実現され得る変動性のうちいくつかを示すべく提供される例である。例えば、デバイスＡ７０５およびデバイスＣ７１５の各々は、それぞれの共有されたメモリ要素（例えば６０５ａ、６０５ｂ）を含むことができる。従って、いくつかの実装例において、別個のデバイス上の各共有メモリ要素は更に、それぞれの共有メモリコントローラ（ＳＭＣ）６１５ａ、６１５ｂを含んでよい。ノード６１０ａ〜６１０ｈの様々な組み合わせは、各ＳＭＣ（例えば、６１５ａ、６１５ｂ）に通信可能に連結され得、当該複数のノードを対応する共有メモリ（例えば６０５ａ、６０５ｂ）にアクセスすることを許容する。一例として、デバイスＡ７０５のＳＭＣ６１５ａは、ＳＭＬをサポートするダイレクトデータリンクを使用してデバイスＡ上のノード６１０ａ、６１０ｂに接続できる。さらに、別のデバイス（例えば、デバイスＣ７１５）上の別のノード６１０ｃはまた、ノード６１０ｃ（および／またはそのデバイス７１５）からＳＭＣ６１５ａへ直接ハードワイヤードの接続（ＳＭＬをサポートする）によって共有メモリ６０５ａへのアクセスを有してよい。間接ネットワークベース、または他の複数のそのような接続はまた、遠隔またはオフボードデバイス（例えば、デバイスＤ７２０）の複数のノード（例えば６１０ｆ〜６１０ｈ）が、共有メモリ６０５ａへのアクセスも有すべく、ＳＭＣ６１５ａとのインタフェースを取る従来のプロトコルスタックを利用することを許容すべく使用され得る。例えば、ＳＭＬトンネル７２５はイーサネット（登録商標）、インフィニバンド、またはデバイスＡとデバイスＤとを連結する他の接続経由で確立され得る。トンネルを確立および維持することが、いくつかの追加のオーバヘッドおよび待機時間を導入する可能性がある一方、よりソフトウェアによって管理されていない複数の他の物理接続上で実行されるＳＭＬと比較した場合、ＳＭＬリンク経由でＳＭＣと通信する任意の他のノードが可能なのと同様、ＳＭＬトンネル７２５が確立された場合は、他の複数のＳＭＬチャネルとして動作でき、ノード６１０ｆ〜６１０ｈが、ＳＭＬ経由でＳＭＣ６１５ａとインタフェースを取ること、および共有メモリ６０５ａにアクセスすることを許容する。例えば、複数のＳＭＬチャネル内の複数のパケットの信頼性および順序付けは、システム内の複数のネットワーキングコンポーネントによって課され得るか、あるいは複数のＳＭＣ間のエンドツーエンドが課され得る。
【００６２】
さらなる他の複数の例において、共有メモリ（例えば６０５ａ）の特定の部分をホストするデバイスとは異なるデバイス上の複数のノード（例えば６１５ｄ、６１５ｅ）は、それ自体が対応するＳＭＣ（例えば６１５ａ）に（例えば、ＳＭＬリンクを使用して）連結される別のＳＭＣ（例えば６１５ｂ）に直接接続することによって、対応するＳＭＣ（例えばＳＭＣ６１５ａ）に間接的に接続できる。２または２より多いＳＭＣ（例えば６１５ａ、６１５ｂ）をリンクすることは、システム上のノード６１０ａ〜６１０ｈに利用可能な共有メモリ量を効果的に拡張できる。例えば、いくつかの実装例において、図７の例中のＳＭＣ６１５ａと６１５ｂとの間のリンクにより、ＳＭＣ６１５ａを介して共有メモリ６０５ａにアクセス可能な複数のノード（例えば、６１０ａ〜６１０ｃ、６１０ｆ〜６１０ｈ）のうち任意のものはまた、ＳＭＣ６１５ａとＳＭＣ６１５ｂとの間の接続により共有可能なメモリ６０５ｂに潜在的にアクセスしてよい。同様に、いくつかの実装例において、他の複数の潜在的な例の中でも特に、ＳＭＣ６１５ｂに直接アクセスする複数のノードの各々はまた、ＳＭＣ６１５ａと６１５ｂとの間の接続により、共有可能なメモリ６０５ａにアクセスできる。
【００６３】
上述したように、改善された共有メモリアーキテクチャは、ＳＭＩ３のようなメモリアクセスプロトコルに基づき、また共有メモリを含む複数のロード／格納リクエストを容易にすべく提供された低待機時間リンクプロトコル（すなわち、ＳＭＬ）を含むことができる。従来のＳＭＩ３および複数の他のメモリアクセスプロトコルが単一ノード内のメモリ共有での使用のために構成されてよい一方で、ＳＭＬは複数のノード間のメモリ共有を許容すべく、メモリアクセスセマンティクスを複数のノードへ拡張できる。更に、ＳＭＬは潜在的に任意の物理通信リンク上で利用され得る。ＳＭＬは、別個の複数のデバイス（および複数のノード）を相互接続するよう適合された物理層（および対応する物理層論理）にオーバレイされたＬＤ／ＳＴメモリセマンティクスをサポートするメモリアクセスプロトコルを利用できる。さらに、ＳＭＬの物理層論理は他の複数の特徴の中でも特に、パケット低下およびエラー再試行機能を提供しないようにできる。
【００６４】
いくつかの実装例において、ＳＭＬはＰＣＩｅ  ＰＨＹ上にＳＭＩ３をオーバレイすることによって、実装され得る。ＳＭＬリンク層は、フロー制御および他の複数の特徴において先んじており、および複数の従来のＣＰＵメモリアクセスアーキテクチャにおける特性であるような、さらに短い待機時間メモリアクセスを容易にすべく提供され得る（例えば、従来のＰＣＩｅリンク層の代わりに）。一例において、ＳＭＬリンク層論理は、複数の共有メモリトランザクションと複数の他のトランザクションとの間で多重化できる。例えば、ＳＭＬリンク層論理はＳＭＩ３およびＰＣＩｅトランザクション間で多重化できる。例えば、ＳＭＩ３（または別のメモリプロトコル）は、当該リンクがＳＭＩ３とＰＣＩｅトランザクションとの間で動的に切り替え可能なように、ＰＣＩｅ（または別の相互接続プロトコル）の上部でオーバレイできる。これにより、いくつかの例において、従来のＰＣＩｅトラフィックをＳＭＬトラフィックと同じリンク上に効果的に共存することを許容する。
【００６５】
図８の簡易ブロックダイアグラム８００を参照するに、例示的コンピューティングノード（例えば６１０）の複数の特徴が示されている。コンピューティングノード６１０は、ＳＭＩ３（または別のメモリプロトコル）をＰＣＩｅ（例えばＰＣＩｅ３．０）準拠の電気的物理リンク上方にオーバレイすることによって実装された例示的ＳＭＬを使用して、共有メモリコントローラチップ６１５と通信できる。ノード６１０は、メモリアクセスプロトコル（例えば、ＳＭＩ３）のための列と、例えばＰＣＩｅのようなシリアル汎用相互接続プロトコル等の別の相互接続プロトコルのための別の列を含む、マルチ列層状スタックを含むことができる。各列は、その独自の複数のリンク層（例えば８０５、８１０）並びにトランザクション、ルーティング、プロトコル、および／またはコヒーレンシ層（不図示）を含むそれぞれのリンク層８０５、８１０の上部にある他の層を有することができる。この例において、メモリアクセスプロトコルは、１９２ビットの複数のフリットを利用するリンク層を使用できる。そのような複数のフリットが別のプロトコルのＰＨＹ上にわたり送信され得、この場合は、ネイティブの１２８ビットエンコーディングスキーム（例えば、１２８ｂ／１３０ｂ）を利用するＰＣＩｅ準拠ＰＨＹである。従って、ノード６１０のＰＣＩｅ  ＰＨＹロジックは、他の複数の例の中でも特に、ＰＣＩｅ論理ＰＨＹ８１５、ＰＣＩｅ  ｖｅｎｅｅｒ８２０（例えば、デジタルドメインとアナログドメインとの間に存在する追加の層）、およびＰＣＩｅアナログフロントエンド（ＡＦＥ）８２５を含むことができる。
【００６６】
変換ロジック８３０は、ＰＣＩｅ物理リンク上のキャリッジのために、メモリアクセスプロトコルに従って送信された１９２ビットのフリットデータを１２８ビットの複数のＰＣＩｅペイロードに変換できる。同様に、１２８ビットの複数のペイロードは１９２ビットのフリットデータに変換し直す（例えば、ロジック８３５を使用して）ことができる。この例において、ＰＣＩｅ列は、複数の２５６ビットのＰＣＩｅ３．０ペイロードを１２８ビットデータに変換する類似の変換ロジック８４０、８４５を含むことができる。シム回路８５０は、複数のリンク層とＰＣＩｅ物理層との間のインタフェースとして提供され得る。シム８５０は、どのリンク層データが物理層に送信されるかを制御できる。いくつかの実装例において、複数の列（およびリンク層８０５、８１０のうちのたった１つ）のうちの１つのみの使用を許容するよう、シム８５０が選択的に構成され得る（例えば、ノード６１０のハードウェア内のヒューズを設定することによって）。例えば、シム８５０は、当該ノードがネイティブＰＣＩｅポート（すなわち、ＰＣＩｅリンク層８０５のみを利用する）またはＳＭＬポート（すなわち、ＰＣＩｅ物理層上にオーバレイされたメモリアクセスプロトコルおよびメモリアクセスプロトコルリンク層８１０のみを利用する）を実装するよう、設定され得る。他の複数の例において、シム８５０は、いずれの列からのデータも動的に多重化すべく機能し得、当該データストリームをＰＣＩｅデータモードとＳＭＬデータモードとの間で切り替える。
【００６７】
図９は、ＰＣＩｅのような別の異なるシリアル相互接続プロトコル上でメモリアクセスプロトコルをオーバレイする例を示す。図７の例において、複数の物理層フレーミングトークンが、メモリアクセスと相互接続プロトコルトラフィックとの間で複数の移行をシグナリングすべく使用され得る。フレーミングトークン（または「トークン」）は、当該トークンに関連付けられたデータストリームに含まれるシンボル数を指定または示唆する物理層データカプセル化であり得る。結果として、フレーミングトークンは、ストリームが開始されていることを識別でき、並びにストリームが終了する位置を示唆でき、したがってフレーミングトークンはまた、次のフレーミングトークンの位置を識別すべく使用され得る。データストリームのフレーミングトークンは、データストリームの第１のデータブロックの第１のレーン（例えば、レーン０）の第１のシンボル（シンボル０）に位置付けられ得る。フレーミングトークンは、トラフィックをトランスポートすべく使用される物理層のネイティブプロトコルで定義される既存のシンボルを使用して実装され得る。例えば、ＰＣＩｅの例では、ＴＬＰトラフィックトークンの開始（ＳＴＰ）、データストリームトークンの終了（ＥＤＳ）、不良トークンの終了（ＥＤＢ）、ＤＬＬＰトークンの開始（ＳＤＰ）、および論理アイドル（ＩＤＬ）トークンを含む、５つのフレーミングトークンが定義され得る。
【００６８】
図９の例において、ＳＭＬはＳＭＩ３またはＰＣＩ上の別のデータアクセスプロトコルをオーバレイすることによって実装され得、ＳＭＩ３（ＴＬＰトラフィックの代わりに）がリンクの複数のレーン上で開始することを識別する新規ＳＴＰトークンを定義すべく、標準ＰＣＩｅ  ＳＴＰトークンが再使用およびエンコードされ得る。ポートがＳＭＬで静的に機能する場合、トラフィックがＳＭＬであることを示すべく、ＳＴＰトークンがエンコードされ得る。ＰＣＩｅおよびＳＭＬトラフィックがリンク上で多重化され得る場合、ＳＴＰトークンは、他の複数の例の中でも特に、ＰＣＩｅトラフィックの複数のバーストとＳＭＬトラフィックの複数のバーストとの間の複数の移行を示すことができる。
【００６９】
一例において、標準ＰＣＩｅ  ＳＴＰトークンに係る複数の予約ビットは、ＳＭＬトラフィックＳＴＰトークン（例えば、「ＳＭＬトークン」）の開始を定義すべく変更され得る。例えば、複数のＰＣＩｅペイロードの複数の許容された長さのような、定義済みセットの許容パケットまたはペイロード長は、ホストプロトコルのために定義されてよい。ＳＴＰトークンは、長さフィールドを含んでよく、長さフィールドはＰＣＩｅに定義された、許容された長さのセット（または物理層の別のホストプロトコル）の範囲外にある複数のエンコーディングを許容してよい。一実装において、不許容値または許容された複数の長さの範囲外にある別の定義値を持つ長さフィールドをエンコーディングすることは、ＳＴＰトークンをＳＭＬトークンとして識別すべく使用され得る。
【００７０】
図９の例に戻ると、動的ＳＭＬ／ＰＣＩｅ多重化が示されており、ＳＭＬはＰＣＩｅ  ＰＨＹプロトコル経由でＳＭＩ３を利用している。例えば、従来のＰＣＩｅ１２８ｂ／１３０ｂエンコーディングのために指定されたエンコーディングに従うべく、同期ヘッダデータが定義され得る。例えば、９１５ａ〜９１５ｃにおいて、複数のデータブロックが来ることを示す値１０ｂを持つ複数の同期ヘッダが受信される。ＰＣＩｅ  ＳＴＰ（例えば９２０）が受信される場合、ＰＣＩｅ  ＴＬＰペイロードが予期され、データストリームがそれに応じて処理される。ＰＣＩｅ  ＴＬＰペイロードは、ＰＣＩｅ  ＳＴＰ９２０内で識別されたペイロード長と一貫性があり、割り当てられた完全なペイロード長を利用できる。別のＳＴＰトークンは、ＴＬＰペイロードの終了後、データブロック内で基本的にいつでも受信され得る。例えば、９２５において、ＳＭＩ３  ＳＴＰが受信され得、ＰＣＩｅ  ＴＬＰデータからＳＭＩ３フリットデータへの移行をシグナリングする。次に、例えば、ＰＣＩｅパケットデータの終了が識別されるとすぐに、ＳＭＩ３  ＳＴＰが送信され得る。
【００７１】
ＰＣＩｅ  ＴＬＰデータと同様、ＳＭＩ３  ＳＴＰ９２５は、後に続くＳＭＩ３フリットペイロードの長さを定義できる。例えば、ＳＭＩ３データのペイロード長は、送信されるＳＭＩ３フリット数（または対応するＤＷ数）に対応できる。ペイロード長に対応するウィンドウ（例えば、レーン３のシンボル１５で終了する）はそれにより、ＳＭＩ３データのみが送信される当該複数のレーン上で定義され得る。ウィンドウが終了する場合、ＴＬＰデータまたは順序付けられたセットデータ等の他のデータの送信を再開すべく、別のＰＣＩｅ  ＳＴＰのような他のデータが送信され得る。例えば、図９の例に示されるように、ＳＭＩ３  ＳＴＰトークン９２５によって定義されるＳＭＩ３データウィンドウの終了後、ＥＤＳトークンが送信される。ＥＤＳトークンはデータストリームの終了をシグナリングでき、図９の例の場合のように、順序付けられたセットブロックが次に続くことを示唆できる。順序付けられたセットブロックが送信されることを示すべくエンコード０１ｂされた同期ヘッダ９４０が送信される。この場合、ＰＣＩｅ  ＳＫＰの順序付けられたセットが送信される。そのような複数の順序付けられたセットは周期的に、または複数の設定された間隔若しくはウィンドウに従って送信され得、その結果、他の複数の例の中でも特に、ビット整列の初期化、シンボル整列の初期化、複数のＰＨＹパラメータの交換、２つの通信ポートのための複数の異なるビットレートの補償を含む、様々なＰＨＹレベルタスクおよび調整が実行され得る。場合によっては、定義されたウィンドウまたは対応するＳＭＩ３  ＳＴＰトークンによってＳＭＩ３フリットデータのために指定されたデータブロックに割り込ませるべく、必須の順序付けられたセットが送信され得る。
【００７２】
図９の例では明示的に図示されていないが、ＳＴＰトークンはまた、リンク上のＳＭＩ３フリットデータからＰＣＩｅ  ＴＬＰデータへと移行すべく使用され得る。例えば、定義されたＳＭＩ３ウィンドウの終了後、ＰＣＩｅ  ＳＴＰトークン（例えば、トークン９２０と同様の）が、次のウィンドウは指定量のＰＣＩｅ  ＴＬＰデータの送信のためのものであることを示すべく送信され得る。
【００７３】
いくつかの実施形態において、複数のメモリアクセスフリット（例えば、複数のＳＭＩ３フリット）はサイズが変わってよく、メモリアクセスペイロードのために、対応するＳＴＰトークン（例えば、ＳＭＩ３  ＳＴＰトークン）内にどのくらいのデータが予約されているかを先験的に予測することが困難になる。一例として、図９に示されるように、ＳＭＩ３  ＳＴＰ９２５は、２４４バイトのＳＭＩ３データのが、ＳＭＩ３  ＳＴＰ９２５後に予測されことを示す長さフィールドを有し得る。しかしながら、この例において、１０フリット（例えば、ＳＭＩ３フリット０〜９）のみが、当該ウィンドウ中に送信される準備が整っており、これら１０のＳＭＩ３フリットのみが２４４バイトのうち２４０バイトを利用する。従って、４バイトの空の帯域幅が残され、これらは複数のＩＤＬトークンで埋められる。これは、ＰＣＩｅ  ＴＬＰデータが待ち行列に入れられ、ＳＭＩ３ウィンドウが閉じるのを待機する場合、特に次善策となり得る。他の複数の場合において、複数のＳＭＩ３フリットの送信のために提供されるウィンドウは、当該レーンに準備されたＳＭＩ３データ量を送信するには不十分である可能性がある。リンク上に共存するＳＭＩ３とＰＣＩｅ  ＴＬＰデータとの間をどのように調整するかを決定すべく、複数の調整技術が採用され得る。更に、いくつかの実装例において、リンクのより効率的な使用を補助すべく、複数のＳＭＩ３ウィンドウの長さが動的に変更され得る。例えば、調整または他のロジックは、定義されたウィンドウ長がレーンに対し予期されるＳＭＩ３（および競合するＰＣＩｅ  ＴＬＰトラフィック）の量に対し、より良好に最適化され得るかどうかを決定すべく、複数の定義されたＳＭＩ３ウィンドウがどれだけ利用されているかを監視できる。従って、そのような実装例において、複数のＳＭＩ３  ＳＴＰトークンに係る複数の長さフィールド値は、他の複数の例の中でも特に、ＳＭＩ３フリットデータが割り当てられるべきリンク帯域幅の量に応じて（例えば、ＴＬＰ、ＤＬＬＰ、および順序付けられたセットデータを含む他のＰＣＩｅデータに関連して）、動的に調整され得る（例えば、異なる複数の値の間で）。
【００７４】
複数のシリアル入出力（Ｉ／Ｏ）動作は、動作可能時に顕著な電力を消費し得る。従って、トラフィックがリンクの２方向で保留中でない場合、リンクを低電力またはアイドル状態（例えば、Ｌ１状態）に置くことが望ましい可能性がある。これは、ＰＣＩｅまたはＳＭＬモード動作のいずれかまたは両方に当てはまる可能性がある。更に、ＳＭＬモードで使用されるメモリアクセスプロトコルはエントリを定義し、ホストＰＨＹ層プロトコル（例えば、ＰＣＩｅ内）で定義されたものとは異なるように、低電力モードからの終了を定義してよい。更に、メモリアクセスプロトコルによって利用されるステートマシンは、物理層を統制する他のプロトコル内で利用されるものとは異なってよい。
【００７５】
メモリアクセスプロトコルの一実装において示すべく、メモリアクセスプロトコルのリンク層は、複数の物理層が複数の制御タスクを実行する複数の機会を提供でき、およびこれらの制御タスクは送信リンク状態（ＴＬＳ）から低電力またはＬ１状態への移行を含み得る。例えば、メモリアクセスプロトコルが外部プロトコルのＰＨＹを使用することを必要とするＳＭＬの文脈外で使用される場合、それは制御状態（Ｌ０ｃ）またはブロッキングリンク状態、その中で物理層の複数のリクエストおよび応答が送信され得る複数のウィンドウを提供できる。一例として、そのような複数の制御タスクに関連付けられたメッセージングを容易にすべく、制御状態Ｌ０ｃが提供され得る。複数の物理層制御メッセージがリンク層を使用して送信される複数のフリットのストリーム間で送信されるのを可能にすべく、Ｌ０ｃ状態がＴＬＳ内の周期ウィンドウとして提供され得る。例えば、図１０に示される例に表されるように、Ｌ０状態が複数のＬ０ｃ間隔に分割され得る。各Ｌ０ｃ間隔は、Ｌ０ｃ状態または、その中で複数の物理層制御コードおよび他のデータが送信され得るウィンドウ（例えば、１００５）で開始し得る。Ｌ０ｃ間隔の残り（例えば、１０１０）は、複数のフリットの送信専用であり得る。各間隔におけるＬ０ｃ間隔およびＬ０ｃ状態の長さはプログラムを使って、他の複数の例の中でも特に、例えば１または複数のデバイスのＢＩＯＳ若しくは別のソフトウェアベースのコントローラによって定義され得る。Ｌ０ｃ状態は、Ｌ０ｃ間隔の残りよりも飛躍的に短い。例えば、一例において、Ｌ０ｃは８ＵＩであり得る一方、他の複数の例の中でも特に、Ｌ０ｃ間隔の残りは約４ＫＵＩである。これは、実質的にリンクデータ帯域幅を中断または消耗させることなく、比較的短い、予め定義された複数のメッセージがその中で送信され得る複数のウィンドウを可能にする。
【００７６】
Ｌ０ｃ状態メッセージは、物理層レベルで様々な条件を通信できる。一例において、あるデバイスは、例えば、特定の閾値を超える量の複数のビットエラーまたは他の複数のエラーに基づいて、リンクまたはレーンのリセットを開始できる。そのような複数のエラーはまた、複数のＬ０ｃウィンドウ（複数の先行するＬ０ｃウィンドウ等）内で通信され得る。Ｌ０ｃ状態はまた、他の複数のリンク状態間の複数の移行を補助またはトリガする際使用されるシグナリングのような、他の帯域内シグナリングを実現すべく活用され得る。一例において、リンクをアクティブＬ０状態からスタンバイ若しくはＬ１状態のような低電力状態へと移行させるべく、複数のＬ０ｃメッセージが利用され得る。図１１Ａの簡易フロー図１１００ａに示されるように、Ｌ１エントリリクエスト（例えば１１１０）を通信すべく特定のＬ０ｃ状態が使用され得る。デバイス（またはデバイス上のエージェント）がリクエスト１１１０の受信確認を待機する間、更なる複数のフリット（例えば１１２０、１１３０）が送信され得る。リンク上の他のデバイスが、当該受信確認（例えば、１１４０）を送信できる。いくつかの例において、当該受信確認はまたＬ０ｃウィンドウ内で送信され得る。いくつかの例において、Ｌ１リクエスト１１１０の受信／送信後、当該受信確認は次のＬ０ｃウィンドウで送信され得る。各デバイスにおいて、複数のＬ０ｃ間隔を同期すべく複数のタイマが採用され得、複数の他の例の中でも特に、要求側デバイスは受信確認１１４０が次のＬ０ｃウィンドウにおいて送信されたという識別に基づいて、受信確認１１４０をリクエスト１１１０（例えば、独立したＬ１エントリリクエスト以外）の受信確認として識別できる。いくつかの例において、受信確認はＬ１エントリリクエスト１１１０で使用されるものとは別個のＬ０Ｃコードを介して通信され得る。他の複数の例において、受信確認１１４０は他の複数の例の中でも特に、リクエスト１１１０内で使用されるＬ１エントリリクエストコードのエコーを含むことができる。更に、図１１Ｂに示されるような代替的な複数の例において、非受信確認信号またはＮＡＫ１１４５はＬ０ｃウィンドウ内で通信され得、Ｌ１エントリリクエスト１１１０に関わらず、リンクをリンク送信状態に留まらせる。
【００７７】
図１０、１１Ａおよび１１Ｂの複数の例は、ＳＭＬの実装で使用されるメモリアクセスまたは他のプロトコルに従う低電力移行ハンドシェイクの一例にすぎない。複数の他の実施形態において、アクティブ状態から低電力またはアイドル状態への移行を実現すべく、複数の他のメカニズムが採用され得る。しかしながら、そのような複数のメカニズムは、メモリアクセスプロトコルが別のプロトコルの物理層でオーバレイされている場合ではサポートされない可能性がある。例えば、メモリアクセスプロトコル（例えばＳＭＩ３）がＰＣＩｅのような別のシリアル相互接続プロトコル上にオーバレイされているＳＭＬの複数の実装例においてである。実際、ＰＨＹによって利用されるホストプロトコルは、アクティブ状態から低電力状態への複数の移行を異なって実装してよく、低電力状態への移行を開始するメモリアクセスプロトコルの能力を複雑化させる。これは、ＳＭＬが静的に実装される（すなわち、他のプロトコルの物理層上の唯一のトラフィックである）複数の実装例において特に厄介であり得る。
【００７８】
そのような複数の潜在的な差異を示すべく、図１０、１１Ａおよび１１Ｂに示される低電力状態へのエントリのためのメカニズムを、ＰＣＩｅの低電力Ｌ１状態へのエントリの表現（図１２）と比較されたい。例えば、第１（上流）のコンポーネント１２０５は、下流コンポーネント１２１０へ、構成書き込みリクエスト１２１５を送信できる。下流コンポーネント１２１０は、構成書き込みリクエスト１２１５の受信に基づいて、送信リンク状態から低電力状態（Ｌ１）への移行処理（１２２０において）を開始できる。下流コンポーネント１２１０は、構成書き込みリクエストのための完了１２２５を送信でき、複数の最小クレジットを累積でき、また複数の新規トランザクション層パケット（ＴＬＰ）のスケジューリングをブロックする（１２３０において）。下流コンポーネント１２１０は、直前のＴＬＰのための受信確認（ＡＣＫ）を受信するのを待機する（１２３５において）。下流コンポーネントのＴＬＰのすべてが受信確認されたら、下流コンポーネントは上流コンポーネント１２０５からの応答を受信するまで、Ｅｎｔｅｒ＿Ｌ１データリンク層の複数のパケット（複数のＤＬＬＰ）の送信１２４０（Ｌ１状態へのエントリを示すべく）を開始できる。
【００７９】
複数のＥｎｔｅｒ＿Ｌ１  ＤＬＬＰを受信すると、上流コンポーネント１２０５は、複数の新規ＴＬＰの送信のスケジューリングをブロックできる（１２４５において）。次に上流コンポーネント１２０５は、以前に送信した直前のＴＬＰのためのリンク層受信確認を受信するまで、待機できる。下流コンポーネント１２１０は、送信された複数のＥｎｔｅｒ＿Ｌ１  ＤＬＬＰに対する複数の受信確認のＤＬＬＰ（例えば、Ｒｅｑｕｅｓｔ＿ＡＣＫ）を待機できる（１２５０において）。上流コンポーネント１２０５がその直前のＴＬＰのためのＡＣＫを受信する場合（１２５５において）、上流コンポーネント１２０５は受信された複数のＥｎｔｅｒ＿Ｌ１  ＤＬＬＰに応答して、複数のＲｅｑｕｅｓｔ＿ＡＣＫ  ＤＬＬＰを繰り返し送信１２６０できる。下流コンポーネント１２１０が、その複数の受信レーン（上流コンポーネント１２０５がＬ１リクエストに対する移行を受信確認したことをシグナリングする）においてＲｅｑｕｅｓｔ＿Ａｃｋ  ＤＬＬＰをキャプチャすると、下流コンポーネント１２１０は次に、ＤＬＬＰ送信を無効にし（１２６５において）、上流方向の物理リンクを電気的アイドル状態にする。更に、上流コンポーネント１２０５上の複数の受信レーンが電気的アイドル状態に入ると、上流コンポーネント１２０５は、複数のＲｅｑｕｅｓｔ＿Ａｃｋ  ＤＬＬＰの送信を停止し、ＤＬＬＰ送信を無効にし（１２７０において）、その複数の送信レーンを電気的アイドルにし、それによりリンクのＬ１への移行を完了させる。Ｌ１はいくつかの例において、リンクのいずれかの側にあるコンポーネントによっても終了され得る。
【００８０】
記載した通り、低電力リンク状態への移行を開始すべく使用されるホストプロトコルまたはＳＭＬプロトコルのいずれかを提供することが望ましい可能性がある。しかしながら、いくつかの実装例において、ＳＭＬによって使用されるメモリアクセスプロトコルは、図１０、１１Ａおよび１１Ｂの複数の例に図示および記載されるように、低電力状態から複数のＰＨＹ層へのエントリのネゴシエーションを代理できない可能性がある。従って、ＳＭＬのいくつかの実装例において、低電力状態に入るべく使用されるメモリアクセスプロトコルの複数のネイティブエンコーディングが、ＳＭＬを容易にすべく使用される複数のトークン内にトンネリングされるのを許容するＬ１エントリスキームが提供され得る。例えば、一例において、ＳＭＬによって使用されるメモリアクセスプロトコルは、ブロッキングリンク状態または複数の制御ウィンドウ内で複数のリンク状態移行リクエスト（および複数の受信確認）を送信できる。これらの同一エンコーディングがトークンの予約済みフィールドまたは未使用フィールド内に含まれ得、結果的にそれらはホストプロトコル（例えばＰＣＩｅ）または層状スタックに影響を与えることなく、下流コンポーネントに通信される。一実装において、ＳＴＰトークン（例えばＳＭＬトークン）のフィールドは、低電力状態に入るためのリクエスト（またはＡＣＫ／ＮＡＫ）を示す複数のデータ値でエンコードされ得る。
【００８１】
図１３を参照するに、ＳＴＰトークン１３０５の表現が示されている。ＳＴＰトークン１３０５は、ＴＬＰシーケンス番号フィールド１３１０、およびＳＴＰの後に続くメモリアクセスプロトコル（例えばＳＭＩ３）ペイロードの長さ（フリット数の見地で）を識別する長さフィールド１３１５を含む、いくつかのフィールドを含むことができる。上述したように、いくつかの実装例において、後続データがホスト相互接続プロトコル（例えばＰＣＩｅ）に従うか、またはメモリアクセスプロトコル（例えばＳＭＩ３）に従うかを示すべく、長さフィールドが使用され得る。例えば、１または複数の標準ペイロード長がＴＬＰデータのために定義され得る。ＳＭＩ３データはいくつかの実装例において、固定数のフリットを含むよう定義され得、あるいは他の複数の場合において、可変数のフリットを有してよく、その場合ＳＭＩ３フリット数のための長さフィールドは無視可能なフィールドになる。更に、ＳＭＩ３  ＳＴＰのための長さフィールドは、複数の定義されたＴＬＰのペイロード長のうちの１つ以外の長さとして定義され得る。従って、ＳＭＩ３  ＳＴＰは、一例としてＳＴＰ長さフィールドに存在する非ＴＬＰ長さの値に基づいて識別され得る。
【００８２】
図１３の例を続けると、ＳＴＰがＳＭＬ  ＳＴＰトークンの場合、ＴＬＰシーケンス番号フィールド１３１０は予約（未使用）され得る。ＴＬＰシーケンス番号フィールド１３１０は、他の複数の可能性のあるエンコーディングの中でも、Ｌ１への移行のリクエストを示すべく、ＡＣＫ若しくはＮＡＫまたはＬ１に入るためのリクエストを示すべく、あるいはＳＭＬ  ＳＴＰトークンに動作が含まれないことを示すべく、エンコードされ得る。例えば、例示的な実装において、メモリアクセスプロトコルのネイティブバージョン内の複数の制御ウィンドウでの使用のために、値のセットが定義され得、これらの同一値はＳＭＬ  ＳＴＰトークンの予約済みフィールド内でエンコードされ得る。例えば、メモリアクセスプロトコルとしてＳＭＩ３を利用する実装においては次の通りである。
【００８３】
【表１】
2016123076.tif 000003
【００８４】
表１の例で続行するに、ＳＭＬ  ＳＴＰトークン内にエンコーディングされたＬ１に入るためのリクエストが、エコー、および受信確認すべくエンコードされたＳＭＬ  ＳＴＰトークン、Ｌ１に入るためのリクエスト（例えばＱＬ１）、あるいは代替的には非受信確認メッセージ（例えばＱＬ１ｎ）のいずれかで応答され得るよう、ハンドシェイクは定義され得る。後者の場合、受信確認ハンドシェイクが実現されるまで、処理は周期的に反復され得る。Ｌ１に入るためのリクエスト（または応答）または応答を示すべくエンコードされていないＳＭＬ  ＳＴＰトークンの複数の指定フィールドは、複数の他の例の中でも、代替的なエンコーディングまたは非動作エンコーディングでエンコードされ得る。
【００８５】
図１４は、少なくとも一例によるＬ１に入るためのハンドシェイク例を示すフローチャートである。この例において、ＰＣＩｅ経由でのメモリアクセスプロトコルの低電力状態エントリリクエストに係るトンネリングを容易にすべく、シム８５０が使用され得る。例えば、電力管理エージェント（ＰＭＡ）１４０１、１４０２が複数のそれぞれのリンク層を低電力に非同期的にさせ得る（例えば１４０５、１４１５において）。次にそれぞれのリンク層（ＬＬ）８１０ａ、８１０ｂは、低電力状態（例えばＬ１）（１４１０、１４２０において）へのエントリを開始すべく、シム（それぞれ８０５ａ、８０５ｂ）と通信し得る。例えば、シム８０５ａ、８０５ｂはメモリアクセスプロトコルに従ってＬ１エントリ信号１４１０、１４２０を受信できる。シム８０５ａ、８０５ｂは、ＥＬ１ｃデータがメモリアクセスプロトコルに従う、低電力状態Ｌ１に入るためのリクエストであることを識別するためのロジックを含むことができる。シム８０５ｂは、ＰＣＩｅベースＳＴＰトークンのＴＬＰシーケンス番号フィールドのようなＰＣＩｅトークンフィールドを、メモリアクセスプロトコルで定義された低電力エントリリクエストエンコーディングでエンコードし得る。例えば、複数のそのようなコードを送信すべく、メモリアクセスプロトコルはブロッキングリンク状態（Ｌ０ｃ）を使用でき、ＰＣＩｅベーストークンフィールド（１４２５において）を利用してＬ０ｃ低電力エントリハンドシェイクをトンネリングすべく、シム８０５ａ、ｂが使用され得る。従って、シム８０５ａがエンコードされたトークンを受信する場合、当該シムはＬ１に入るようリンク層８１０ａにシグナリングできる（１４３０において）。シム８０５ａはまたＬ１エントリリクエストの受信確認を送信でき（１４２５において）、シム８０５ｂはＡＣＫの受信時、Ｌ１に入るようそのリンク層８１０ｂにシグナリングできる（１４３５において）。更に受信確認の受信の際、シム８０５ｂは更にＰＣＩｅ物理層Ｌ１エントリハンドシェイクを開始するよう物理層８１５ｂにシグナリングできる（１４４０において）。従って、１または複数の電気的アイドルの順序付けられたセット（ＥＩＥＯＳ）がＰＨＹ８１５ｂによって送信され得、およびＰＨＹ８１５ａによってエコーされ得、ＰＣＩｅ物理層に電気的アイドルに入らせる１４５０。同一のことが信号１４５５、１４６０を介して、それぞれのシム８０５ａ、８０５ｂに対し確認され得る。
【００８６】
図１４の例を続けると、当該リンクのＬ１へのエントリ後の何らかの場合において、リンク層８１０ｂ（ソフトウェアによってプロンプトされ）は、送信リンク状態（例えばＬ０またはＬ０ｐ）に再度入るべく、低電力Ｌ１状態からの終了を開始できる。例えば、Ｌ１終了信号１４６５が送信され、シム８０５ｂによってデコードされ得、シム８０５ｂはＰＨＹ８１５ｂにシグナリングでき（１４７０において）、低電力状態を終了させ、リンクに対する送信リンク状態への構成を開始させる。例えば、リンクをデバウンス、同期化、および構成すべく、複数の順序付けられたセット（ＯＳ）およびトレーニングシーケンス（ＴＳ）が交換されてよい（１４７５において）。リンクトレーニング（例えば１４７５を介して）の完了の際、シム８０５ａ、８０５ｂは、物理層が送信状態Ｌ０であることを識別できる。次にシム８０５ａ、８０５ｂはリンク層８１０ａ、８１０ｂに、Ｌ０に入ったことを通知できる。シム８０５ａ、８０５ｂがメモリアクセスプロトコルデータの動的多重化およびＰＣＩｅデータをＰＣＩｅ物理層経由で提供する場合において、Ｌ０（またはＬ１）へのエントリが他の複数の例の中でも特に、シム８０５ａ、８０５ｂによってメモリアクセスプロトコルおよび複数のＰＣＩｅリンク層の両方に通信され得る。
【００８７】
汎用Ｉ／Ｏ（ＧＰＩＯ）プロトコル（例えばＰＣＩｅ）とＧＰＩＯプロトコルの物理層経由のメモリアクセスプロトコル（例えば、ＳＭＩ３）との間の動的切り替えをサポートする複数の実装例において、シムは両方のプロトコルスタックが、共通の物理層に電気的アイドルに入るようシグナリングする前に、低電力リンク状態（例えばＬ１）に入る準備が整っていることを決定してよい。例えば、ＧＰＩＯプロトコルリンク層（帯域幅のその部分中）またはメモリアクセスプロトコルのいずれかが低電力リンク状態に入るよう独立的にリクエストしてよい（そのそれぞれのプロトコルに従って）。しかしながら、ある列が低電力状態に入ることを試行する場合、他の列がアクティブリンク上に送信されることを待機するデータを有してよい。複数の動的シムは、いくつかの実装例において、複数のスタック間の帯域幅要求を調整する能力を有してよい。従って、いくつかの実装例において、シムは２つの異なるプロトコルスタックからのデータを多重化する場合、低電力状態に入るための他の列のリクエストを許可する前に、帯域幅の着信部（例えば、ＳＴＰトークンの後）内の複数の列のうちの１つによって何もデータが送信されないことを保証すべく、両方の列を監視できる。いくつかの実装例において、シムは、Ｌ１へのエントリを要求する列に対し、ＰＨＹがＬ１に入ったという確認を合成してよい一方で、そのようにすることで他の列からの送信がされるのを待機しているデータに影響を与えないであろうとシムが決定するまで、Ｌ１への実際のエントリをトリガさせるＰＨＹに対するリクエストを保留してよい。例えば、他の第２の列がＬ１へのエントリを要求し、リンクが実際にＬ１であることを確信した後、第１の列は当該物理リンクを利用することを許可されてよい。複数のそのような例において、第１の列がデータ送信を行うとすぐに、シムは当該リンクにアイドルに入らせるよう物理層に対しシグナリングしてよい。他の複数の例において、第２の列のリンク層は当該リンクがアクティブである間、再解除されてよく、既にアクティブなリンク（すなわち、他の列のデータの送信に使用されている）を再アクティブ化することを試行してよい。複数のそのような例において、シムはリンクのアクティブ化を開始すべく、第２の列のリンク層からのデータを受信してよい。複数のそのような例において、シムはリンク層の第２の列に対し、リンクの再解除の確認を合成できる。実際には、リンクが既にトレーニングされ、動作可能であるとき、それが物理層に関連するような動作は何ら発生せず、シムは第２の列のリンク層からの信号に応答して、第２の列に対し当該リンクがアクティブであるという確認信号を単に送信してよく、当該リンクに対し低電力状態を「終了」させる。複数のそのような例において、信号物理リンクの帯域幅が、２つの別個のプロトコルのデータ間で共有され得るのみでなく、複数の異なるプロトコルに係る複数の低電力状態エントリパラダイムもサポートされてよい。
【００８８】
上記原理および例の多くが場合によっては、ＰＣＩｅおよびＳＭＩ３のような複数の特定のプロトコルの文脈で記載されていることに留意されたい。しかしながら、これらのプロトコルは複数の例示としてのみ列挙されており、任意のシリアルＧＰＩＯプロトコルおよびメモリアクセスプロトコルが、ＳＭＬの複数の実装で利用され得ることを理解されたい。実際、本明細書に記載の複数の原理、ソリューション、および特徴が他の複数のプロトコルおよびシステムに対し等しく適用可能である。さらに、複数の他の例の中でも特に、本明細書に記載のリンクおよびその対応するロジックに対する論理的および物理的強化に係る複数の組み合わせを含む、上記複数のソリューションに係る複数の組み合わせが複数のシステム内で適用され得る。
【００８９】
上記の複数の装置、方法、およびシステムは、上記の任意の電子デバイスまたはシステムに実装されてよいことに留意されたい。複数の具体例として、以下の図面は、本明細書に記載の本発明を利用するための複数の例示的なシステムを提供する。複数の以下のシステムがより詳細に記載される通り、多数の異なる相互接続が開示され、記載され、上記説明から再検討される。さらに容易に明らかなように、上記の複数の進歩は、それらの相互接続、ファブリック、またアーキテクチャの任意のものに適用され得る。
【００９０】
図１５を参照するに、マルチコアプロセッサを含むコンピューティングシステムのブロック図の一実施形態が示されている。プロセッサ１５００はマイクロプロセッサ、組み込みプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システムオンチップ（ＳＯＣ）、またはコードを実行する他のデバイスのような任意のプロセッサまたは処理デバイスを含む。プロセッサ１５００は、一実施形態において、少なくとも２つのコア、すなわちコア１５０１および１５０２を含み、これらは複数の非対称コアまたは対称コア（当該図示の実施形態）を含むことができる。しかしながら、プロセッサ１５００は、任意の数の対称又は非対称であり得る処理要素を含んでもよい。
【００９１】
一実施形態において、処理要素は、ソフトウェアスレッドをサポートするハードウェアまたはロジックを指す。ハードウェア処理要素の複数の例は、スレッドユニット、スレッドスロット、スレッド、処理ユニット、コンテキスト、コンテキストユニット、論理プロセッサ、ハードウェアスレッド、コア、および／または実行状態またはアーキテクチャ状態のようなプロセッサのための状態を保持可能な任意の他の要素を含む。換言すると、一実施形態において、処理要素とはソフトウェアスレッド、オペレーティングシステム、アプリケーション、または他のコードのようなコードに独立して関連付け可能な、任意のハードウェアを指す。物理プロセッサ（またはプロセッサソケット）とは通常、潜在的に複数のコアまたはハードウェアスレッドのような任意の数の他の処理要素を含む集積回路を指す。
【００９２】
コアとはしばしば、独立のアーキテクチャ状態を維持可能な集積回路上に位置するロジックを指し、独立に維持される各アーキテクチャ状態は、少なくともいくつかの専用実行リソースと関連付けられる。複数のコアと対照的に、ハードウェアスレッドとは通常、独立のアーキテクチャ状態を維持可能な集積回路上に位置する任意のロジックを指し、その場合、複数の当該独立的に維持されるアーキテクチャ状態は複数の実行リソースへのアクセスを共有する。上記からわかるように、複数の特定のリソースが共有され、他のリソースがアーキテクチャ状態専用である場合、ハードウェアスレッドとコアとの用語体系間の境界は重複する。しかししばしば、コアとハードウェアスレッドとは、オペレーティングシステムによって、複数の個々の論理プロセッサとみられており、オペレーティングシステムは、各論理プロセッサ上での複数の動作を個々にスケジュールすることができる。
【００９３】
図１５に示されるように、物理プロセッサ１５００は２つのコア、すなわちコア１５０１および１５０２を含む。ここで、コア１５０１および１５０２は複数の対称的コア、すなわち複数の同一構成、機能ユニット、および／またはロジックを有する複数のコアと考えられる。別の実施形態において、コア１５０１はアウトオブオーダプロセッサコアを含む一方、コア１５０２はインオーダプロセッサコアを含む。しかしながら、コア１５０１および１５０２は、ネイティブコア、ソフトウェア管理コア、ネイティブ命令セットアーキテクチャ（ＩＳＡ）を実行すべく適応されたコア、変換された命令セットアーキテクチャ（ＩＳＡ）を実行すべく適合されたコア、共同設計されたコア、または他の既知のコアといった任意のタイプのコアから個々に選択されてよい。ヘテロジニアスなコア環境（すなわち、非対称コア）では、一方または両方のコアでコードをスケジュールあるいは実行するためにバイナリ変換などの何らかの形態の変換が利用されてよい。更なる説明を進めるために、コア１５０１内に示される複数の機能ユニットが詳細に後述されるが、コア１５０２内の複数のユニットは当該示される実施形態で同様に動作する。
【００９４】
図示される通り、コア１５０１は２つのハードウェアスレッド１５０１ａおよび１５０１ｂを含み、それらはハードウェアスレッドスロット１５０１ａおよび１５０１ｂとも称され得る。したがって、一実施形態において、オペレーティングシステムのような複数のソフトウェアエンティティは潜在的にプロセッサ１５００を４つの個別のプロセッサ、すなわち４つのソフトウェアスレッドを同時に実行可能な４つの論理プロセッサまたは処理要素としてみなす。上記されたように、第１のスレッドは複数のアーキテクチャ状態レジスタ１５０１ａと関連付けられ、第２のスレッドは複数のアーキテクチャ状態レジスタ１５０１ｂと関連付けられ、第３のスレッドは複数のアーキテクチャ状態レジスタ１５０２ａと関連付けられてよく、第４のスレッドは複数のアーキテクチャ状態レジスタ１５０２ｂと関連付けられてよい。ここで、アーキテクチャ状態レジスタ（１５０１ａ、１５０１ｂ、１５０２ａ、および１５０２ｂ）の各々は、上述の複数の処理要素、スレッドスロット、またはスレッドユニットと称され得る。図示の通り、複数のアーキテクチャ状態レジスタ１５０１ａは複数のアーキテクチャ状態レジスタ１５０１ｂ内で複製されているので、複数の個々のアーキテクチャ状態／コンテキストが論理プロセッサ１５０１ａおよび論理プロセッサ１５０１ｂのために格納可能である。コア１５０１において、複数の命令ポインタおよびアロケータおよびリネーマブロック１５３０内のリネームロジックのような他の複数のより小さなリソースはまた、スレッド１５０１ａおよび１５０１ｂのために複製されてよい。リオーダ／リタイヤユニット１５３５、ＩＬＴＢ１５２０内の複数のリオーダバッファ、複数のロード／格納バッファ、および複数のキューなどのいくつかのリソースは、パーティショニングを介して共有されてよい。複数の汎用内部レジスタ、ページテーブルベースレジスタ、低レベルデータキャッシュおよびデータＴＬＢ１５１５、実行ユニット１５４０、およびアウトオブオーダユニット１５３５の複数の部分のような他の複数のリソースが潜在的に十分共有される。
【００９５】
プロセッサ１５００はしばしば、完全に共有、パーティショニングを介して共有、または複数の処理要素により／対して専用であってよい、他の複数のリソースを含む。図１５において、プロセッサに係る例示の複数の論理ユニット／リソースを持つ純粋に例示的なプロセッサの一実施形態が示されている。プロセッサは、これらの機能ユニットのうち任意のものを含むか、省略してよく、並びに図示されていない複数の任意の他の既知の機能ユニット、ロジックまたはファームウェアを含んでよいことに留意されたい。図示の通り、コア１５０１は、簡易な代表的アウトオブオーダ（ＯＯＯ）プロセッサコアを含む。しかしながら、インオーダプロセッサが複数の異なる実施形態において利用されてよい。ＯＯＯコアは、実行／取得される複数の分岐を予測する分岐ターゲットバッファ１５２０、および複数の命令のための複数のアドレス変換エントリを格納する命令‐変換バッファ（Ｉ‐ＴＬＢ）１５２０を含む。
【００９６】
コア１５０１は更に、フェッチされた複数の要素をデコードするフェッチユニット１５２０に連結されたデコードモジュール１５２５を含む。フェッチロジックは、一実施形態において、スレッドスロット１５０１ａ、１５０１ｂにそれぞれ関連付けられた複数の個々のシーケンサを含む。通常、コア１５０１は、プロセッサ１５００上で実行可能な複数の命令を定義／指定する第１のＩＳＡと関連付けられる。しばしば、第１のＩＳＡの一部である複数のマシンコード命令は、実行される命令または動作を参照／指定する命令の一部（オペコードと称される）を含む。デコードロジック１５２５は、それらのオペコードからこれらの命令を認識し、第１のＩＳＡによって定義される処理のために、デコードされた複数の命令をパイプラインに渡す回路を含む。例えば、詳細に後述される通り、一実施形態において、複数のデコーダ１５２５はトランザクション命令のような複数の特定の命令を認識すべく、設計または適合されたロジックを含む。デコーダ１５２５による認識の結果として、アーキテクチャまたはコア１５０１は、適切な命令と関連付けられた複数のタスクを実行すべく特定の、予め定義された複数の動作を行う。本明細書に記載される複数のタスク、ブロック、動作および方法のうち任意のものが、単一または複数の命令に応答して実行されてよく、これらの命令のうちいくつかは新しい命令であっても古い命令であってもよいことに注意することが重要である。複数のデコーダ１５２６は一実施形態において、同一ＩＳＡ（または、そのサブセット）を認識することに留意されたい。あるいは、ヘテロジニアスなコア環境において、複数のデコーダ１５２６は第２のＩＳＡ（第１のＩＳＡのサブセットまたは別個のＩＳＡ）を認識する。
【００９７】
一例において、アロケータおよびリネーマブロック１５３０は、複数の命令処理結果を格納する複数のレジスタファイルのような複数のリソースを予約するアロケータを含む。しかしながら、スレッド１５０１ａおよび１５０１ｂは潜在的にアウトオブオーダ実行が可能であり、そこではアロケータおよびリネーマブロック１５３０はまた、複数の命令結果を追跡する複数のリオーダバッファのような他の複数のリソースを予約する。ユニット１５３０はまた、プロセッサ１５００内部の他の複数のレジスタに対し、プログラム／命令参照レジスタをリネームするレジスタリネーマを含んでよい。リオーダ／リタイヤユニット１５３５は、アウトオブオーダ実行および後のアウトオブオーダ実行された複数の命令のインオーダリタイアをサポートすべく、上記の複数のリオーダバッファ、ロードバッファ、および複数の格納バッファのような複数のコンポーネントを含む。
【００９８】
一実施形態において、スケジューラおよび実行ユニットブロック１５４０は、複数の実行ユニットに対して複数の命令／動作をスケジュールするスケジューラユニットを含んでよい。例えば、浮動小数点命令は、利用可能な浮動小数点実行ユニットを有する実行ユニットのポートにスケジューリングされる。複数の情報命令処理結果を格納すべく、複数の実行ユニットに関連付けられた複数のレジスタファイルも含まれる。複数の例示的実行ユニットとしては、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、格納実行ユニット、および他の複数の既知の実行ユニットが含まれる。
【００９９】
より低レベルのデータキャッシュおよびデータ変換バッファ（Ｄ−ＴＬＢ）１５５０が、実行ユニット１５４０に連結される。データキャッシュは、複数のメモリコヒーレンシ状態に潜在的に保持された複数のデータオペランドのような、最近使用／動作されたものを複数の要素上格納する。Ｄ‐ＴＬＢは、最近の仮想／線形アドレスから物理アドレスへの変換を格納する。具体例として、プロセッサは複数の仮想ページに物理メモリを分割するページテーブル構造体を含んでよい。
【０１００】
ここでは、コア１５０１および１５０２は、オンチップインタフェース１５１０に関連付けられた第２のレベルのキャッシュのような、より高レベルまたはより遠いキャッシュへのアクセスを共有する。ここで、より高レベルまたはより遠いという用語は、実行ユニットから増加するまたは更に遠ざかる複数のキャッシュレベルのことであることに留意されたい。一実施形態において、より高レベルのキャッシュは、ラストレベルデータキャッシュ、すなわちプロセッサ１５００のメモリ階層内の第２または第３のレベルデータキャッシュのようなラストキャッシュである。しかしながら、より高レベルのキャッシュは命令キャッシュに関連付けられ、または命令キャッシュを含んでよいので、そのように限定されない。むしろ、命令キャッシュのタイプであるトレースキャッシュが、複数の最近デコードされたトレースを格納すべく、デコーダ１５２５の後に連結されてよい。ここで、命令は潜在的にマクロ命令（すなわち、複数のデコーダによって認識される一般的命令）を指し、それは多数のマイクロ命令（複数のマイクロオペレーション）にデコードされてよい。
【０１０１】
示される構成では、プロセッサ１５００はオンチップインタフェースモジュール１５１０も含む。歴史的に、より詳細に後述されるメモリコントローラが、プロセッサ１５００の外部にあるコンピューティングシステムに含まれている。このシナリオにおいて、オンチップインタフェース１５１０は、システムメモリ１５７５、チップセット（しばしばメモリ１５７５に接続するメモリコントローラハブおよび複数の周辺デバイスと接続するＩ／Ｏコントローラハブを含む）、メモリコントローラハブ、ノースブリッジ、または他の集積回路のようなプロセッサ１５００の複数の外部デバイスと通信する。このシナリオにおいて、バス１５０５は、マルチドロップバス、ポイントツーポイント相互接続、シリアル相互接続、パラレルバス、コヒーレント（例えば、キャッシュコヒーレント）バス、層状プロトコルアーキテクチャ、差分バス、およびＧＴＬバスのような任意の既知の相互接続を含んでよい。
【０１０２】
メモリ１５７５は、プロセッサ１５００に専用であってもよいし、システム内の他の複数のデバイスと共有されてもよい。メモリ１５７５の複数のタイプの共通の例示は、ＤＲＡＭ、ＳＲＡＭ、不揮発性メモリ（ＮＶメモリ）、および複数の他の既知のストレージデバイスを含む。デバイス１５８０は、グラフィックアクセラレータ、プロセッサまたはメモリコントローラハブに連結されたカード、Ｉ／Ｏコントローラハブに連結されたデータストレージ、無線トランシーバ、フラッシュデバイス、オーディオコントローラ、ネットワークコントローラ、または他の既知のデバイスを含んでよいことに留意されたい。
【０１０３】
しかしながら、最近、より多くのロジックおよびデバイスがＳＯＣなどの単一のダイ上に統合されるにつれ、これらのデバイスの各々はプロセッサ１５００上に組み込まれてよい。例えば、一実施形態において、メモリコントローラハブはプロセッサ１５００と同一パッケージ上および／または同一ダイ上に存在する。ここで、コア（オンコア部分）１５１０の一部は、メモリ１５７５またはグラフィクスデバイス１５８０のような他の複数のデバイスとのインタフェースを取るための１または複数のコントローラを含む。相互接続およびそのような複数のデバイスとのインタフェースを取るための複数のコントローラを含む構成は、しばしばオンコア（または非コア構成）と称される。一例として、オンチップインタフェース１５１０は、オンチップ通信のためのリング相互接続と、オフチップ通信のための高速シリアルポイントツーポイントリンク１５０５とを含む。しかし、ＳＯＣ環境では、ネットワークインタフェース、複数のコプロセッサ、メモリ１５７５、グラフィクスプロセッサ１５８０、および複数の任意の他の既知のコンピュータデバイス／インタフェースのようなさらに多くのデバイスが、単一のダイまたは集積回路上に統合されてよく、高機能および低電力消費性を有するスモールフォームファクタを提供する。
【０１０４】
一実施形態において、プロセッサ１５００は、本明細書に記載の複数の装置および方法をサポートし、それらとインタフェースを取るべく、アプリケーションコード１５７６をコンパイル、変換、および／または最適化する、コンパイラ、最適化、および／または変換コード１５７７を実行可能である。コンパイラはしばしば、ソーステキスト／コードをターゲットテキスト／コードに変換するプログラムまたはプログラムセットを含む。通常、コンパイラを用いるプログラム／アプリケーションコードのコンパイルは、複数のフェーズおよびパスで行われ、高レベルプログラミング言語コードを低レベルマシン若しくはアセンブリ言語コードに変換する。しかし、複数の単一パスのコンパイラが、簡易コンパイルのために依然利用されてよい。コンパイラは複数の任意の既知のコンパイル技術を利用してよく、語彙分析、前処理、解析、セマンティクス分析、コード生成、コード変換、およびコードの最適化のような複数の任意の既知のコンパイラ動作を実行してよい。
【０１０５】
より大型のコンパイラはしばしば複数のフェーズを含むが、しかしながら非常に頻繁に、これらのフェーズは、次の２つの一般フェーズ内に含まれる。（１）すなわち、概して構文処理、セマンティクス処理、およびいくつかの変換／最適化が発生し得るフロントエンド、および（２）すなわち、概して分析、複数の変換、複数の最適化、およびコード生成が発生するバックエンドである。いくつかのコンパイラはミドルエンドと呼ばれ、これはコンパイラのフロントエンドとバックエンドとの間の区別が曖昧であることを示す。結果として、挿入、関連付け、生成、またはコンパイラの他の動作への参照が上記フェーズまたはパスのうち任意のものにおいて、並びにコンパイラの任意の他の複数の既知のフェーズまたはパスにおいて発生してよい。例示のように、コンパイラは潜在的に複数の動作、呼び出し、機能等をコンパイルの１または複数のフェーズ内に挿入し、例えば、コンパイルのフロントエンドフェーズ内での複数の呼び出し／動作の挿入、およびその後の、変換フェーズ中の当該複数の呼び出し／動作のより低水準コードへの変換が挙げられる。動的コンパイル中、コンパイラコードまたは動的最適化コードは、そのような複数の動作／呼び出しを挿入してよく、並びにランタイム中の実行のために当該コードを最適化してよいことに留意されたい。具体的な例示としては、バイナリコード（既にコンパイルされたコード）をランタイム中に動的に最適化してよい。ここでプログラムコードは、動的最適化コード、バイナリコード、またはこれらの組み合わせが含まれてよい。
【０１０６】
コンパイラと同様に、バイナリトランスレータなどのトランスレータは、コードを最適化および／または変換すべく、コードを静的または動的に変換する。したがって、コード、アプリケーションコード、プログラムコード、または他のソフトウェア環境の実行に対する言及は、（１）プログラムコードをコンパイルするため、複数のソフトウェア構造を維持するため、他の複数の動作を実行するため、コードを最適化するため、またはコードを変換するための、コンパイラプログラム、最適化コードオプティマイザ、またはトランスレータの動的または静的な実行、（２）最適化／コンパイルされたアプリケーションコードのような複数の動作／呼出しを含むメインプログラムコードの実行、（３）複数のソフトウェア構造を維持するため、他のソフトウェア関連動作を行うため、またはコードを最適化するためのメインプログラムコードに関連付けられた複数のライブラリのような他のプログラムコードの実行、または（４）それらの組み合わせを指してよい。
【０１０７】
ここで図１６を参照するに、マルチコアプロセッサの一実施形態のブロック図が示される。図１６の実施形態に示されるプロセッサ１６００は、複数のドメインを含む。具体的には、コアドメイン１６３０は、複数のコア１６３０Ａ〜１６３０Ｎ、メディアエンジン１６６５を有する１または複数のグラフィックスエンジンを含むグラフィクスドメイン１６６０、およびシステムエージェントドメイン１６１０を含む。
【０１０８】
様々な実施形態において、システムエージェントドメイン１６１０は、複数のパワー制御イベントおよび電力管理を処理し、その結果ドメイン１６３０および１６６０（例えば、複数のコアおよび／またはグラフィックスエンジン）に係る個々の複数のユニットは、特定のユニット内で発生するアクティビティ（または非アクティビティ）の観点から、適切な電力モード／レベル（例えば、アクティブ、ターボ、スリープ、休止状態、ディープスリープ、または他のＡｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅのような状態）において動的に動作するよう独立的に制御可能である。ドメイン１６３０および１６６０の各々は、異なる電圧および／または電力で動作してよく、更に当該複数のドメイン内の個々の複数のユニットはそれぞれ、独立した周波数および電圧で潜在的に動作する。３つのドメインのみが示される一方、本発明の範囲はこの点に限定されないことを理解し追加の複数のドメインが複数の他の実施形態において存在しよいことに留意されたい。
【０１０９】
示される通り、各コア１６３０は、様々な実行ユニットおよび複数の追加の処理要素に加え、複数の低レベルキャッシュを更に含む。ここで、様々なコアは互いに、および、ラストレベルキャッシュ（ＬＬＣ）１６４０Ａ〜１６４０Ｎから成る複数のユニットまたはスライスで形成される共有キャッシュメモリに連結される。これらのＬＬＣはしばしば、ストレージおよびキャッシュコントローラ機能を含み、前記コア間で並びに潜在的にはグラフィックスエンジン間でも共有される。
【０１１０】
見ての通り、リング相互接続１６５０は前記複数のコアを互いに連結し、複数のリングストップ１６５２Ａ〜１６５２Ｎを介して、コアドメイン１６３０、グラフィクスドメイン１６６０、およびシステムエージェント回路１６１０間の相互接続を提供する。当該リングストップの各々は、コアとＬＬＣスライスとの間の連結にある。図１６に見られるように、相互接続１６５０は、アドレス情報、データ情報、受信確認情報、およびスヌープ／無効情報を含む様々な情報を搬送するために使用される。リング相互接続が図示されているが、任意の既知のオンダイ相互接続またはファブリックが利用されてよい。図の例示によると、上記複数のファブリック（例えば、別のオンダイ相互接続、オンチップシステムファブリック（ＯＳＦ）、アドバンストマイクロコントローラバスアーキテクチャ（ＡＭＢＡ）相互接続、多次元メッシュファブリック、または他の既知の相互接続アーキテクチャ）のうちいくつかが同様の態様で利用されてよい。
【０１１１】
更に図示の通り、システムエージェントドメイン１６１０は関連付けられたディスプレイの制御、およびそれへのインタフェースを提供するディスプレイエンジン１６１２を含む。システムエージェントドメイン１６１０は、システムメモリ（例えば、複数のＤＩＭＭと共に実装されたＤＲＡＭ）へのインタフェースを提供する統合メモリコントローラ１６２０、複数のメモリコヒーレンシ動作を提供するコヒーレンシロジック１６２２のような他の複数のユニットを含んでよい。プロセッサと他の回路との間の相互接続を可能にすべく、複数のインタフェースが存在してよい。例えば、一実施形態において、少なくとも１つのダイレクトメディアインタフェース（ＤＭＩ）１６１６インタフェース並びに１または複数のＰＣＩｅ（登録商標）インタフェース１６１４が提供される。ディスプレイエンジンおよびこれらのインタフェースは通常、ＰＣＩｅ（登録商標）ブリッジ１６１８を介してメモリに連結する。更に、複数の追加のプロセッサまたは他の回路のような他の複数のエージェント間の複数の通信を提供すべく、１または複数の他のインタフェースが提供されてよい。
【０１１２】
本発明は限定数の実施形態に関連して説明されたが、当業者であればそこから多数の変更例および修正例を理解するであろう。添付の特許請求の範囲は、本発明の真の精神および範囲内に属するそのようなすべての変更例および修正例を包含することが意図されている。
【０１１３】
設計は、作成からシミュレーション、製造に至る様々な段階を経るであろう。設計を表わすデータは当該設計を多数の態様で表してよい。第１に、複数のシミュレーションで有用であるように、ハードウェア記述言語（ＨＤＬ）または別の機能記述言語を使用してハードウェアが表現されてよい。さらに、ロジックおよび／または複数のトランジスタゲートを備える回路レベルモデルが、設計処理のいくつかの段階で生成されてよい。更に、ある段階における大半の設計はハードウェアモデル内の様々なデバイスの物理的配置を表すデータのレベルに到達している。従来の半導体製造技術が使用される場合、ハードウェアモデルを表すデータは、集積回路を生成すべく使用されるマスクのための複数の異なるマスク層上にある様々な特徴の存在または不存在を指定するデータであってよい。
【０１１４】
いくつかの実装例において、ソフトウェアベースの複数のハードウェアモデル、およびＨＤＬおよび複数の他の機能記述言語オブジェクトは、複数の他の例の中でも特に、複数のレジスタトランスファ言語（ＲＴＬ）ファイルを含むことができる。そのような複数のオブジェクトは、設計ツールがＨＤＬオブジェクト（またはモデル）を受け入れ、記載されたハードウェアの複数の属性のためのＨＤＬオブジェクトを解析し、物理回路および／またはオブジェクトのオンチップレイアウトを決定できるよう、機械解析可能であり得る。設計ツールの出力は、物理デバイスを製造すべく使用され得る。例えば、設計ツールは、ＨＤＬオブジェクトから様々なハードウェアおよび／またはファームウェア要素の複数の構成を決定できる。例えば、ＨＤＬオブジェクト内でモデル化されたシステムを実現すべく実装される他の複数の属性の中でも特に、複数のバス幅、レジスタ（複数のサイズおよびタイプを含む）、メモリブロック、物理リンクパス、ファブリックトポロジが挙げられる。複数の設計ツールとは、システムオンチップ（ＳＯＣ）および他のハードウェアデバイスのトポロジおよびファブリック構成を決定するための複数のツールを含むことができる。いくつかの例において、ＨＤＬオブジェクトは、記載されたハードウェアの製造機器の製造に使用され得る複数のモデルおよび設計ファイルを開発する基礎として使用され得る。実際、ＨＤＬオブジェクト自体は、記載されたハードウェアをもたらす、製造システムソフトウェアへの入力として提供され得る。
【０１１５】
設計に係る任意の表現において、データは任意の形態の機械可読媒体に格納されてよい。メモリ、またはディスクなどの磁気若しくは光ストレージは、そのような情報を送信すべく変調あるいは生成された光波または電波を介して送信される情報を格納する機械可読媒体であってよい。コードまたは設計を示す若しくは搬送する電気搬送波が送信される場合、電気信号のコピー、バッファリング、または再送が実行される範囲において、新規コピーが作成される。従って、通信プロバイダまたはネットワークプロバイダは有形な機械可読媒体上に少なくとも一時的に、搬送波にエンコードされた情報のようなアーティクルを格納してよく、本開示の複数の実施形態に係る複数の技術を具現する。
【０１１６】
本明細書において使用されるモジュールは、ハードウェア、ソフトウェア、および／またはファームウェアの任意の組み合わせを指してよい。一例としてモジュールは、マイクロコントローラのようなハードウェアを含む。当該ハードウェアはマイクロコントローラによって実行されるよう適合されたコードを格納する非一時的媒体に関連付けられる。したがって、一実施形態において、モジュールへの言及は非一時的媒体に保持されるコードを認識および／または実行するよう具体的に構成されたハードウェアを指す。更に、別の実施形態において、モジュールの使用とは、予め定められた複数の動作を実行するマイクロコントローラによって実行されるよう具体的に適合させられているコードを含む非一時的媒体を指す。予期され得るように、さらなる別の実施形態において、モジュールという用語（この例において）は、マイクロコントローラおよび非一時的媒体の組み合わせを指してよい。しばしば、個別のものとして示される複数のモジュールの境界は一般に変わり、潜在的に重複する。例えば、第１のモジュールおよび第２のモジュールがハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせを共有する一方で、いくつかの独立したハードウェア、ソフトウェア、またはファームウェアを潜在的に維持してもよい。一実施形態において、ロジックという用語の使用には、複数のトランジスタ、レジスタ、または複数のプログラマブルロジックデバイスのような他のハードウェア等のハードウェアを含む。
【０１１７】
一実施形態において、「構成され」という文言の使用は、指定または決定されたタスクを実行する装置、ハードウェア、ロジック、または要素を配置すること、共に配置すること、製造すること、販売に供すること、輸入および／または設計することを指す。この例において、動作していない装置または当該装置の要素が当該指定されたタスクを実行すべく設計、連結、および／または相互接続されている場合、指定されたタスクを実行するよう依然として「構成され」る。純粋に例示として、ロジックゲートは動作中０または１を提供してよい。しかしながら、イネーブル信号をクロックに提供するよう「構成され」たロジックゲートは、１または０を提供し得るあらゆる潜在的ロジックゲートを含まない。その代わり、当該ロジックゲートは、動作中に１または０出力が当該クロックを有効にするよう何らかの態様で連結されたものである。用語「構成され」の使用は、動作を必要としないがその代わり、装置、ハードウェアおよび／または要素の潜在的な状態に重点を置く。その場合、潜在的な状態において、当該装置、ハードウェア、および／または要素が動作中の場合に当該装置、ハードウェア、および／または要素が特定のタスクを実行するよう設計されることに再度留意されたい。
【０１１８】
更に、「可能／すべく」および／または「動作可能」という文言の使用は、一実施形態において、装置、ロジック、ハードウェア、および／または要素の特定の態様での使用を可能にするよう設計された、いくつかの装置、ロジック、ハードウェア、および／または要素を指す。すべく、可能、または動作可能という文言の使用は一実施形態において、装置、ロジック、ハードウェア、および／または要素の潜在的な状態を指し、その場合、当該装置、ロジック、ハードウェアおよび／または要素は動作していないが、特定の態様での装置の使用を可能にするよう設計されていることに上記同様留意されたい。
【０１１９】
本明細書において使用される値とは、数字、状態、論理状態、またはバイナリ論理状態の任意の既知の表現を含む。しばしば、複数のロジックレベル、ロジック値、または論理値の使用はまた、「１の」および「０の」とも称され、それは単に複数のバイナリロジック状態を表す。例えば、１は高論理レベル、および０は低論理レベルを指す。一実施形態において、トランジスタまたはフラッシュセルのような格納セルは、単一の論理値または複数の論理値を保持可能であってよい。しかしながら、複数のコンピュータシステムにおける複数の値の他の表現が使用されている。例えば、また１０進法の数の１０は、バイナリ値１０１０および１６進法の文字Ａで表現されてよい。したがって、ある値は、コンピュータシステムに保持可能な情報の任意の表現を含む。
【０１２０】
さらに、複数の状態は、複数の値または複数の値の部分によって表現されてよい。一例として、第１の値（例えば論理１）が既定または初期状態を表してよい一方で、第２の値（例えば論理０）が、非既定状態を表してよい。また、用語リセットおよびセットは一実施形態において、既定値および更新値または状態をそれぞれ指す。例えば、既定値は潜在的に高論理値、すなわちリセットを含む一方で、更新値は潜在的に低論理値、すなわちセットを含む。任意の数の状態を表わすべく、複数の値の任意の組み合わせが利用されてよいことに留意されたい。
【０１２１】
上述の複数の方法、ハードウェア、ソフトウェア、ファームウェアまたはコードに係る複数の実施形態は、機械アクセス可能、機械可読、コンピュータアクセス可能、または処理要素によって実行可能なコンピュータ可読媒体上に格納された複数の命令またはコードを介して実装されてよい。非一時的機械アクセス可能／可読の媒体は、コンピュータまたは電子システムのような機械によって読み取り可能な形態で情報を提供（すなわち、格納および／または送信）する任意のメカニズムを含む。例えば、非一時的機械アクセス可能媒体は、スタティックＲＡＭ（ＳＲＡＭ）若しくはダイナミックＲＡＭ（ＤＲＡＭ）のようなランダムアクセスメモリ（ＲＡＭ）、ＲＯＭ、磁気若しくは光ストレージ媒体、複数のフラッシュメモリデバイス、複数の電気ストレージデバイス、複数の光ストレージデバイス、複数の音響ストレージデバイス、複数の一時的（伝搬される）信号（例えば、複数の搬送波、赤外線信号、デジタル信号）から受信される情報を保持するための複数のストレージデバイスの他の形態等を含み、これらは、そこから情報を受信できる複数の非一時的媒体とは区別されるべきである。
【０１２２】
本発明の複数の実施形態を実行させるようロジックをプログラムすべく使用される複数の命令は、ＤＲＡＭ、キャッシュ、フラッシュメモリ、または他のストレージのようなシステム内のメモリ内部に格納されてよい。更に、複数の当該命令はネットワークを介して、または他のコンピュータ可読媒体によって配信され得る。従って、機械可読媒体は、機械（例えば、コンピュータ）によって読み取り可能な形態で情報を格納または送信するための任意のメカニズムを含んでよい。そのようなものとして、限定はされないが、複数のフロッピー（登録商標）ディスク、光ディスク、コンパクトディスク、リードオンリメモリ（複数のＣＤ―ＲＯＭ）、および光磁気ディスク、リードオンリメモリ（複数のＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、磁気または光カード、フラッシュメモリ、または電気形態、光形態、音響形態若しくは他の形態の伝搬信号（例えば、複数の搬送波、赤外線信号、デジタル信号等）を介したインターネット経由での情報送信に使用される有形の機械可読ストレージが挙げられる。従って、コンピュータ可読媒体は、機械（例えば、コンピュータ）によって読み取り可能な形態で複数の電子命令または情報を格納または送信するのに適した、任意のタイプの有形の機械可読媒体を含む。
【０１２３】
以下の複数の例は、本明細書による複数の実施形態に関する。１または複数の実施形態は、共有メモリに関連付けられたロード／格納タイプ動作に対応するためのデータをメモリアクセスリンクプロトコルに従うリンク経由で送信し、低電力状態に入るためのリクエストを送信するための装置と、システムと、機械可読ストレージと、機械可読媒体と、ハードウェアおよび／またはソフトウェアベースロジックと、方法とを提供してよく、上記メモリアクセスリンクプロトコルは異なる別のリンクプロトコル上でオーバレイされ、上記リクエストはトークンのフィールド内でエンコードされるデータ値を含み、上記トークンはパケットデータの開始を示し、上記トークンは更に上記トークンが上記別のリンクプロトコルおよび上記メモリアクセスリンクプロトコルのうちの１つに従うデータを含む後、後続のデータが送信されるかどうかを示す。
【０１２４】
少なくとも一例において、上記別のリンクプロトコルは、汎用入出力（Ｉ／Ｏ）相互接続プロトコルを含む。
【０１２５】
少なくとも一例において、トークンは汎用Ｉ／Ｏ相互接続プロトコルに従い定義される。
【０１２６】
少なくとも一例において、トークンの第１のフィールドが、上記後続のデータがメモリアクセスリンクプロトコルデータまたは汎用Ｉ／Ｏ相互接続プロトコルデータを含むかどうかを示す。
【０１２７】
少なくとも一例において、第１のフィールドは上記後続のデータがメモリアクセスリンクプロトコルデータを含むことを示す場合、上記データ値は上記トークンの第２のフィールド内でエンコードされる。
【０１２８】
少なくとも一例において、データ値はメモリアクセスリンクプロトコル下で定義されるエンコーディングを含み、第２のフィールドは汎用Ｉ／Ｏ相互接続プロトコルの物理層経由でエンコーディングをトンネリングすべく使用される。
【０１２９】
少なくとも一例において、上記リンク上で送信されるデータが、上記トークンの複数のインスタンスに基づいて、メモリアクセスリンクプロトコルデータと、汎用Ｉ／Ｏ相互接続プロトコルデータとの間で切り替わる。
【０１３０】
少なくとも一例において、電力管理ロジックは、低電力状態に入るためのリクエストを送信する前に、汎用Ｉ／Ｏ相互接続プロトコルのデータが送信されることを待機しているかどうかを確認する。
【０１３１】
少なくとも一例において、電力管理ロジックは、汎用Ｉ／Ｏ相互接続プロトコルデータが送信されるまで、低電力状態に入るためのリクエストを送信すべく待機する。
【０１３２】
少なくとも一例において、メモリアクセスリンクプロトコルまたは汎用Ｉ／Ｏ相互接続プロトコルのいずれかのリンク層が、物理層の低電力状態へのエントリをトリガできる。
【０１３３】
少なくとも一例において、汎用Ｉ／Ｏ相互接続プロトコル内で低電力状態に入るために使用される信号が、メモリアクセスリンクプロトコル内で低電力状態に入るために使用される信号とは異なる。
【０１３４】
少なくとも一例において、メモリアクセスリンクプロトコルは、メモリアクセスリンクプロトコル内の低電力状態に入るための信号をその中で送信する複数の周期的制御ウィンドウを定義する。
【０１３５】
１または複数の実施形態は、リンク経由でデータストリームを受信するための装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアおよび／またはソフトウェアベースのロジック、および方法を提供してよい。データストリームは、トークンの後続のデータが、少なくとも２つの代替的なプロトコルのうちの１つに従うデータを含むことを示す第１のフィールドを含む、トークンを含むことができる。少なくとも２つの代替的なプロトコルは、メモリアクセスプロトコルおよび汎用Ｉ／Ｏプロトコルを含むことができる。リンク経由で送信されるすべてのデータは、汎用Ｉ／Ｏプロトコルの物理層経由で送信され、トークンの第２のフィールドがメモリアクセスプロトコルのリンク層による低電力リンク状態に入るためのリクエストを示すべくエンコードされる。低電力リンク状態へのエントリは、リクエストに基づいて開始され得る。
【０１３６】
少なくとも一例において、受信確認および否定的受信確認のうちの１つを含む応答がリクエストに対し送信され、上記応答はトークンの別のインスタンスで送信される。
【０１３７】
少なくとも一例において、上記応答は、上記トークンの別のインスタンス内の第２のフィールドのインスタンスが送信される。
【０１３８】
１または複数の実施形態は、第１のプロトコルのリンク層と、異なる第２のプロトコルのリンク層と、少なくとも第２のプロトコルのデータを送信するための第１のプロトコルの物理層と、シムとを提供する、装置、システム、機械可読ストレージ、機械可読媒体、ハードウェアおよび／またはソフトウェアベースのロジックを提供してよい。シムは、トークンの後続のデータが第１のプロトコルデータまたは第２のプロトコルデータのうちの１つを含むことを示す第１のフィールドを含むトークンを含むデータストリームを受信でき、トークンの第２のフィールドが第２のプロトコルのリンク層による低電力リンク状態に入るためのリクエストを示すべくエンコードされる。シムは更に、物理層を低電力状態に入らせるデータを物理層に送信できる。
【０１３９】
少なくとも一例において、第１のプロトコルは汎用Ｉ／Ｏ相互接続プロトコルを含み、第２のプロトコルはメモリアクセスプロトコルを含む。
【０１４０】
少なくとも一例において、第１のプロトコルの１または複数の層および第２のプロトコルの１または複数の層もまた含まれる。
【０１４１】
少なくとも一例において、第１のプロトコルのリンク層は無効にされる。
【０１４２】
本明細書の随所における「一実施形態」または「ある実施形態」という言及は、当該実施形態に関連して記載される特定の特徴、構造、または特性が本発明の少なくとも１つの実施形態に含まれることを意味する。従って、本明細書の様々な箇所における「一実施形態において」または「ある実施形態において」という文言は必ずしもすべて同一実施形態を指すわけではない。更に、複数の特定の特徴、構造、または特性は１または複数の実施形態において、任意の好適な態様で結合されてよい。
【０１４３】
上記の明細書においては、詳細な説明が複数の特定の例示的実施形態に関し提供される。しかしながら、添付の特許請求の範囲に記載された本発明のより広い精神および範囲から逸脱することなく、そこに様々な変更および修正が加えられ得ることは明らかである。本明細書および複数の図面は従って、限定的意味ではなく、例示的意味としてみなされるものである。更に、実施形態および他の説明の文言に係る上記使用は、必ずしも同一の実施形態または同一の例を指す必要はなく、複数の異なる別個の実施形態並びに潜在的に同一の実施形態を指してよい。
【図５】
2016123076.tif 000004
【図７】
2016123076.tif 000005
【図８】
2016123076.tif 000006
【図９】
2016123076.tif 000007
【図１１Ａ】
2016123076.tif 000008
【図１１Ｂ】
2016123076.tif 000009
【図１２】
2016123076.tif 000010
【図１３】
2016123076.tif 000011
【図１４】
2016123076.tif 000012
【図１５】
2016123076.tif 000013
【図１６】
2016123076.tif 000014
【図１】
2016123076.tif 000015
【図２】
2016123076.tif 000016
【図３】
2016123076.tif 000017
【図４】
2016123076.tif 000018
【図６】
2016123076.tif 000019
【図１０】
2016123076.tif 000020
【外国語明細書】
2016123076000001.pdf