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