IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

2025-502580ダイ間インターコネクトのためのパラメータ交換
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-01-28
(54)【発明の名称】ダイ間インターコネクトのためのパラメータ交換
(51)【国際特許分類】
   G06F 13/42 20060101AFI20250121BHJP
   G06F 13/38 20060101ALI20250121BHJP
   G06F 13/10 20060101ALI20250121BHJP
   G06F 13/36 20060101ALI20250121BHJP
【FI】
G06F13/42 310
G06F13/38 340A
G06F13/38 320A
G06F13/10 310E
G06F13/36 310E
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023572222
(86)(22)【出願日】2022-11-29
(85)【翻訳文提出日】2023-12-22
(86)【国際出願番号】 US2022051299
(87)【国際公開番号】W WO2023129320
(87)【国際公開日】2023-07-06
(31)【優先権主張番号】202141061716
(32)【優先日】2021-12-30
(33)【優先権主張国・地域又は機関】IN
(31)【優先権主張番号】17/855,687
(32)【優先日】2022-06-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ダス シャルマ、デベンドラ
(72)【発明者】
【氏名】ナツ、マヘシュ エス.
(72)【発明者】
【氏名】ムトラサナルール、スリダル
(72)【発明者】
【氏名】チョダーリー、スワデシュ
(72)【発明者】
【氏名】ランカ、ナラシムハ
(72)【発明者】
【氏名】セシャン、ラクシュミプリヤ
(57)【要約】
ポートが、ダイ間(D2D)リンクを介して別のダイに結合され、リンクパートナD2DアダプタとのネゴシエーションにおいてアドバタイズするためのD2Dアダプタの機能のセットをレジスタのセットから判定するダイ間(D2D)アダプタを含み、ここで、D2Dアダプタはダイ上にあり、リンクパートナD2Dアダプタは、リモートリンクパートナダイ上に配置される。機能のセットをリンクパートナD2Dアダプタにアドバタイズするために、第1機能アドバタイズメントメッセージがリンクパートナD2Dアダプタへ送信される。第2機能アドバタイズメントメッセージがリンクパートナD2Dアダプタから受信され、ここで、第2機能アドバタイズメントメッセージは、リンクパートナD2Dアダプタの機能のセットを識別する。リンクパートナダイにダイを結合するためにD2Dリンクの最終的構成が決定される。
【特許請求の範囲】
【請求項1】
命令が格納された少なくとも1つの非一時的機械可読記憶媒体であって、前記命令は機械によって実行可能であり、前記機械に:
ダイ上のレジスタの特定のセットの存在に基づいて、ユニバーサルチップレットインターコネクトエクスプレス(UCIe)ベースプロトコルに前記ダイが準拠していると判定する手順、ここで、前記ダイは、前記UCIeベースプロトコルに基づいて、ダイ間(D2D)リンクによって別のリンクパートナダイに結合する;
前記レジスタの特定のセットにおける機能レジスタにアクセスする手順;
前記機能レジスタから利用可能な機能を読み取る手順、ここで、前記利用可能な機能は、前記ダイ上に存在するD2Dアダプタ及び物理層(PHY)ブロックの機能を含む;
前記D2Dリンクについて有効化される前記利用可能な機能における機能のセットを決定する手順;
前記機能のセットを有効化するために制御レジスタの値を書き込む手順;及び
前記D2Dリンクのトレーニングを開始するために前記制御レジスタに開始リンクトレーニング値を書き込む手順;
を行わせる、少なくとも1つの非一時的機械可読記憶媒体。
【請求項2】
前記利用可能な機能は、ローモードを含む、請求項1に記載の記憶媒体。
【請求項3】
前記利用可能な機能は、複数のプロトコル層をサポートする機能を含む、請求項1から2のいずれか一項に記載の記憶媒体。
【請求項4】
前記D2Dアダプタは、第1インタフェースによって前記ダイ上の前記PHYブロックに、及び、第2インタフェースによって前記ダイ上のプロトコル層ブロックに結合され、前記D2Dアダプタは、UCIeプロトコルスタックにおける前記プロトコル層ブロック及び前記PHYブロックの間に位置する、請求項1から3のいずれか一項に記載の記憶媒体。
【請求項5】
前記PHYブロックは、前記リンクパートナダイとの前記D2Dリンクのトレーニングを実行する、請求項4に記載の記憶媒体。
【請求項6】
前記D2Dアダプタは、前記制御レジスタの値を使用して、前記リンクパートナダイとの間で、前記D2Dリンク上で使用されるプロトコル及びフリットフォーマットをネゴシエートする、請求項1から5のいずれか一項に記載の記憶媒体。
【請求項7】
前記フリットフォーマットは、前記UCIeベースプロトコルにおいて定義される複数の異なるフリットフォーマットの1つから決定される、請求項6に記載の記憶媒体。
【請求項8】
前記プロトコルは、前記UCIeベースプロトコルにおいて定義される複数の異なるプロトコルの1つから決定され、前記フリットフォーマットは、前記プロトコルに基づいて決定される、請求項6に記載の記憶媒体。
【請求項9】
ダイ間アダプタを備える装置であって、
前記ダイ間アダプタは、
レジスタのセット;
前記レジスタのセットから、リンクパートナD2Dアダプタとのネゴシエーションにおいてアドバタイズするための、前記D2Dアダプタの機能のセットを決定する手順、ここで、前記D2Dアダプタはダイ上にあり、前記リンクパートナD2Dアダプタは、リモートリンクパートナダイ上に配置されている;
前記機能のセットを前記リンクパートナD2Dアダプタにアドバタイズするために、第1機能アドバタイズメントメッセージを前記リンクパートナD2Dアダプタに送信する手順;
第2機能アドバタイズメントメッセージを前記リンクパートナD2Dアダプタから受信する手順、ここで、前記第2機能アドバタイズメントメッセージは、前記リンクパートナD2Dアダプタの機能のセットを識別する;
前記D2Dアダプタ及び前記リンクパートナD2Dアダプタの共有機能を判定する手順;及び
前記ダイを前記リンクパートナダイに結合するために、D2Dリンクの最終的構成を決定する手順
を行うための回路
含む、装置。
【請求項10】
前記リンクはメインバンドチャネル及び別個のサイドバンドチャネルを含み、前記第1機能アドバタイズメントメッセージは前記サイドバンドチャネル上で送信され、前記第2機能アドバタイズメントメッセージは前記サイドバンドチャネル上で受信される、請求項9に記載の装置。
【請求項11】
前記メインバンドチャネル上で送信されるデータのフォーマットは、前記リンクの前記最終的構成に基づく、請求項10に記載の装置。
【請求項12】
前記D2Dアダプタは、前記リンクの前記最終的構成に基づいて、前記フォーマットについて複数のフリットフォーマットの1つを選択する、請求項11に記載の装置。
【請求項13】
前記回路は更に、前記リンクパートナD2Dアダプタへの前記共有機能を識別するために、前記サイドバンドチャネルを通じて、最終的構成メッセージを前記リンクパートナD2Dアダプタへ送信する、請求項10から12のいずれか一項に記載の装置。
【請求項14】
前記機能のセットは、前記ダイ上の物理層(PHY)ブロックによって実行される前記リンクのトレーニングの結果に基づき、前記D2Dアダプタは、プロトコルスタックを実装するために、前記ダイ上の前記PHYブロック、及び、プロトコル層ブロックの間に位置する、請求項9から13のいずれか一項に記載の装置。
【請求項15】
前記機能のセットは、ソフトウェアによって、前記レジスタのセットにおける制御レジスタに書き込まれる値に基づく、請求項9から14のいずれか一項に記載の装置。
【請求項16】
前記回路のリトライ機能は、前記D2Dリンクの物理層トレーニングの結果に基づいて有効化される、請求項9から15のいずれか一項に記載の装置。
【請求項17】
第1ダイ;
ダイ間(D2D)リンクによって前記第1ダイに結合された第2ダイ、ここで、前記第2ダイは、前記第2ダイを前記D2Dリンクに接続するためのポートを含み、前記ポートは、
特定のインターコネクトプロトコルを実装するためのプロトコル層論理;
D2Dアダプタ回路;
物理層(PHY)回路;及び
前記D2Dアダプタ回路及び前記PHY回路に関連付けられた1又は複数のレジスタ
を含む;及び
値を読み取り、前記1又は複数のレジスタに書き込むためのソフトウェアシステム
を備え
ここで、前記D2Dアダプタ回路は、
前記1又は複数のレジスタにおける値に基づいて、前記第1ダイ上のD2Dアダプタにアドバタイズされる機能のサブセットを決定する;及び
前記機能のサブセットを識別するために、前記D2Dリンクのサイドバンドチャネルを通じて機能メッセージを送信する、
システム。
【請求項18】
前記第1ダイはプロセッサデバイスを含み、前記第2ダイは、別のプロセッサデバイス、ハードウェアアクセラレータ、又は入出力(I/O)デバイスの1つを含む、請求項17に記載のシステム。
【請求項19】
前記第1ダイ及び前記第2ダイは同じパッケージ上にある、請求項17から18のいずれか一項に記載のシステム。
【請求項20】
前記第1ダイは、第1リタイマを含み、前記第2ダイは、第2リタイマを含み、前記第1ダイ及び前記第2ダイは、別個のパッケージ上にあり、前記D2Dリンクは、オフパッケージインターコネクトを実装する、請求項17から19のいずれか一項に記載のシステム。
【請求項21】
ダイ上のレジスタの特定のセットの存在に基づいて、ユニバーサルチップレットインターコネクトエクスプレス(UCIe)ベースプロトコルに前記ダイが準拠していると判定する段階、ここで、前記ダイは、前記UCIeベースプロトコルに基づいて、ダイ間(D2D)リンクによって別のリンクパートナダイに結合される;
前記レジスタの特定のセットにおける機能レジスタにアクセスする段階;
前記機能レジスタから利用可能な機能を読み取る段階、ここで、前記利用可能な機能は、前記ダイ上に存在するD2Dアダプタ及び物理層(PHY)ブロックの機能を含む;
前記D2Dリンクについて有効化される前記利用可能な機能における機能のセットを決定する段階;
前記機能のセットを有効化するために制御レジスタの値を書き込む段階;及び
前記D2Dリンクのトレーニングを開始するために前記制御レジスタに開始リンクトレーニング値を書き込む段階;
を備える方法。
【請求項22】
前記利用可能な機能は、ローモードを含む、請求項21に記載の方法。
【請求項23】
前記利用可能な機能は、複数のプロトコル層をサポートする機能を含む、請求項21から22のいずれか一項に記載の方法。
【請求項24】
前記D2Dアダプタは、第1インタフェースによって前記ダイ上の前記PHYブロックに、及び、第2インタフェースによって前記ダイ上のプロトコル層ブロックに結合され、前記D2Dアダプタは、UCIeプロトコルスタックにおける前記プロトコル層ブロック及び前記PHYブロックの間に位置する、請求項21から23のいずれか一項に記載の方法。
【請求項25】
前記PHYブロックは、前記リンクパートナダイとの前記D2Dリンクのトレーニングを実行する、請求項24に記載の方法。
【請求項26】
前記D2Dアダプタは、前記制御レジスタの値を使用して、前記リンクパートナダイとの間で、前記D2Dリンク上で使用されるプロトコル及びフリットフォーマットをネゴシエートする、請求項21から25のいずれか一項に記載の方法。
【請求項27】
前記フリットフォーマットは、前記UCIeベースプロトコルにおいて定義される複数の異なるフリットフォーマットの1つから決定される、請求項26に記載の方法。
【請求項28】
前記プロトコルは、前記UCIeベースプロトコルにおいて定義される複数の異なるプロトコルの1つから決定され、前記フリットフォーマットは、前記プロトコルに基づいて決定される、請求項26に記載の方法。
【請求項29】
請求項21から28のいずれか一項に記載の方法を実行するための手段を備えるシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本願は、「ダイ間(D2D)インターコネクトのためのソフトウェア可視性及びプロトコルパラメータ交換フロー」と題する、2021年12月30日に出願されたインド仮特許出願第202141061716号に対する優先権を主張する出願である、「ダイ間インターコネクトのためのパラメータ交換」と題する、2022年6月30日に出願された米国特許出願第17/855,687に対する優先権を主張する。先行出願の開示は、本願の開示の一部とみなされ、その全体が参照によって本明細書に組み込まれる。
【0002】
本開示は、コンピューティングシステム、特に(ただし排他的でない)、物理インターコネクト及び関連するリンクプロトコルに関する。
【背景技術】
【0003】
半導体プロセッシング及びロジック設計における進歩は、集積回路デバイスに存在し得るロジック量の増加を可能にするに至った。当然の結果として、コンピュータシステム構成は、システム内の単一又は複数の集積回路から、個々の集積回路上にある複数のコア、複数のハードウェアスレッド、及び複数の論理プロセッサ、並びにそのようなプロセッサと統合された他のインタフェースへと進化した。プロセッサ又は集積回路は通常、単一の物理プロセッサダイを備え、当該プロセッサダイは、任意の数のコア、ハードウェアスレッド、論理プロセッサ、インタフェース、メモリ、コントローラハブ等を含み得る。
【0004】
より小さなパッケージで、より大きな処理能力に適合できる、より高い能力の結果として、より小さなコンピューティングデバイスが人気を高めてきた。スマートフォン、タブレット、極薄ノートブック、及び他のユーザ機器が、飛躍的に成長してきた。しかしながら、これらのより小さなデバイスは、データストレージ及びフォームファクタを超過する複雑な処理の両方について、サーバに依存する。結果として、高性能コンピューティング市場(すなわち、サーバ空間)における需要も増大した。例えば、現在のサーバにおいて、コンピューティング能力を増大させるには通常、複数のコアを持つシングルプロセッサだけでなく、複数の物理プロセッサ(複数のソケットとも称される)が存在する。しかしながら、コンピューティングシステム内のデバイス数と共に処理能力が増大するにつれ、ソケットと他のデバイス間の通信がより重要なものになっている。
【0005】
実際、インターコネクトは、電気通信を主に処理してきた従来型のマルチドロップバスから、高速通信を容易にする本格的なインターコネクトアーキテクチャへと成長した。残念ながら、はるかに高いレートで消費する将来のプロセッサへの需要があるので、対応する要求が、既存のインターコネクトアーキテクチャの機能に対しある。
【図面の簡単な説明】
【0006】
図1】インターコネクトアーキテクチャを含む、コンピューティングシステムの実施形態を示す。
【0007】
図2】層状スタックを含む、インターコネクトアーキテクチャの実施形態を示す。
【0008】
図3】潜在的な高性能プロセッサ間インターコネクト構成の実施形態を示す。
【0009】
図4】インターコネクトに関連付けられた階層型プロトコルスタックの実施形態を示す。
【0010】
図5】コンピュートエクスプレスリンク(CXL)ベースプロトコルに準拠するリンクを利用する例示的なコンピューティングシステムの簡易ブロックダイアグラムを示す。
【0011】
図6】例示的なシステムオンチップ(SoC)パッケージの簡易ブロックダイアグラムを示す。
【0012】
図7】2又はより多くのデバイスを結合する2次元パッケージ基板及びインターコネクトの簡易ブロックダイアグラムを示す。
【0013】
図8A】例示的なパッケージ構成の簡易ブロックダイアグラムを示す。
図8B】例示的なパッケージ構成の簡易ブロックダイアグラムを示す。
図8C】例示的なパッケージ構成の簡易ブロックダイアグラムを示す。
図8D】例示的なパッケージ構成の簡易ブロックダイアグラムを示す。
【0014】
図9】ユニバーサルチップレットインターコネクトエクスプレス(UCIe)ベースプロトコルを使用するインターコネクトコンピューティングデバイスを有する例示的なラックサーバを示す簡易ブロックダイアグラムである。
【0015】
図10】UCIeの例示的なプロトコルスタックを示す簡易ブロックダイアグラムである。
【0016】
図11】例示的な物理層ブロックの簡易ブロックダイアグラムである。
【0017】
図12A】例示的なプロトコルスタック実装の簡易ブロックダイアグラムである。
図12B】例示的なプロトコルスタック実装の簡易ブロックダイアグラムである。
図12C】例示的なプロトコルスタック実装の簡易ブロックダイアグラムである。
【0018】
図13】UCIeベースのインターコネクトによって接続された2つのパッケージを含むコンピューティングシステムの簡易ブロックダイアグラムである。
【0019】
図14】UCIeベースのリンクと共に使用するための例示的レジスタの表現である。
【0020】
図15A】UCIeベースのリンクの初期化のための例示的なフローを示すダイアグラムである。
図15B】UCIeベースのリンクの初期化のための例示的なフローを示すダイアグラムである。
図15C】UCIeベースのリンクの初期化のための例示的なフローを示すダイアグラムである。
【0021】
図16】UCIeベースのリンクと共に使用するための特定のフリットフォーマットを選択するための例示的な決定木を示すダイアグラムである。
【0022】
図17A】UCIeベースのリンクと共に使用するための例示的なデータフォーマットを示す。
図17B】UCIeベースのリンクと共に使用するための例示的なデータフォーマットを示す。
図17C】UCIeベースのリンクと共に使用するための例示的なデータフォーマットを示す。
図17D】UCIeベースのリンクと共に使用するための例示的なデータフォーマットを示す。
図17E】UCIeベースのリンクと共に使用するための例示的なデータフォーマットを示す。
図17F】UCIeベースのリンクと共に使用するための例示的なデータフォーマットを示す。
【0023】
図18A】例示的なサイドバンドメッセージフォーマットを示す。
図18B】例示的なサイドバンドメッセージフォーマットを示す。
図18C】例示的なサイドバンドメッセージフォーマットを示す。
図18D】例示的なサイドバンドメッセージフォーマットを示す。
【0024】
図19】マルチコアプロセッサを含むコンピューティングシステムについてのブロックダイアグラムの実施形態を示す図である。
【0025】
図20】複数のプロセッサを含むコンピューティングシステムの実施形態のブロックを示す。
【発明を実施するための形態】
【0026】
以下の説明には、本開示の深い理解を与えるべく、多数の具体的な詳細が記載されている。例えば、特定のタイプのプロセッサ及びシステム構成、特定のハードウェア構造、特定の設計上及びミクロ設計上の細部、特定のレジスタ構成、特定の命令タイプ、特定のシステムコンポーネント、特定の寸法/高さ、特定のプロセッサパイプラインステージ、及び動作等の例である。しかしながら、当業者であれば、本開示において提供される解決手段を実施するにあたりこれらの具体的な詳細は採用する必要がないことは明らかであろう。他の事例において、特定及び代替的なプロセッサアーキテクチャ、記載されたアルゴリズム用の特定のロジック回路/コード、特定のファームウェアコード、特定のインターコネクト動作、特定のロジック構成、特定の製造技術及び材料、複数の特定のコンパイラ実装、コード内のアルゴリズムについての特定の表現、特定のパワーダウン及びゲーティング技術/ロジック並びにコンピュータシステムの他の特定の動作の詳細のような、複数の周知コンポーネント又は方法は、本開示を不必要に不明瞭にするのを回避すべく詳細には記載されていない。
【0027】
以下の実施形態は、コンピューティングプラットフォーム又はマイクロプロセッサなどの特定の集積回路に関し記載されている場合があるが、他の実施形態が、集積回路及びロジックデバイスの他のタイプに適用可能である。ここで記載される実施形態についての技術及び教示と類似するものが、他のタイプの回路や半導体デバイスへ適用されてよい。例えば、開示される実施形態は、デスクトップコンピュータシステム又はUltrabooks(登録商標)に限定されず、ハンドヘルドデバイス、タブレット、他の薄型ノートブック、システムオンチップ(SOC)デバイス、及び組み込み用途など、他のデバイスにおいても使用され得る。ハンドヘルドデバイスのいくつかの例には、セルラ電話、インターネットプロトコルデバイス、デジタルカメラ、パーソナルデジタルアシスタント(PDA(登録商標))、及びハンドヘルドPCが含まれる。組み込み用途には、典型的には、マイクロコントローラ、デジタル信号プロセッサ(DSP)、システムオンチップ、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク(WAN)スイッチ、又は、下記で教示する機能及び動作を実行可能な他の任意のシステムが含まれる。本明細書において説明される実施形態の技法及び教示は、ラックスケールサーバプラットフォーム、ブレードサーバプラットフォーム、及び他のサーバアーキテクチャを含むサーバレベルでも適用され得る。また、本明細書において説明される装置、方法及びシステムは、物理的コンピューティングデバイスに限定されず、以下の例において論じられるアーキテクチャなどの物理システムのソフトウェアエミュレーション及びシミュレーションにも関連し得る。以下の説明において容易に明らかとなるように、本明細書において説明される方法、装置、及びシステムの実施形態は(ハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせのいずれを参照するかに関わらず)、コンピューティングプラットフォームが、他の例示的な考慮事項の中でも特に、電力使用及び物理的フットプリントのバランスをとりながら、増加するデータ速度を処理することを可能にする上で重要である。
【0028】
コンピューティングシステムが進むにつれ、その中におけるコンポーネントはより複雑になっている。結果として、最適なコンポーネント動作のための帯域幅要件が満たされることを保証すべく、コンポーネント間の連結及び通信を行うためのインターコネクトアーキテクチャも複雑性が増している。更に、異なる市場セグメントは市場ニーズに適合すべく、インターコネクトアーキテクチャの異なる態様を要求する。例えば、サーバがより高性能を要求する一方で、モバイルエコシステムは場合により、省電力化のために全体的な性能を犠牲にしてしまう可能性がある。しかし、最大限の省電力化で可能な限り高い性能を提供することが、大半のファブリックの唯一の目的である。以下に説明される多数のインターコネクトは、本明細書に記載される解決手段の複数の態様から潜在的に利益を享受するであろう。
【0029】
モダンなインターコネクトファブリックアーキテクチャは、異なるベンダからのコンポーネント及びデバイスがオープンアーキテクチャで相互運用することを可能とし、それは複数の市場セグメント、クライアント(デスクトップ及びモバイル)、サーバ(規格及び企業向け)及び組み込み通信デバイスに及ぶ。例えば、多種多様な将来のコンピューティング及び通信プラットフォームについて、高性能汎用I/Oインターコネクトプロトコル(例えば、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe))が定義されている。そのようなプロトコル及び対応するアーキテクチャは、ポイントツーポイントインターコネクト、スイッチベース技術、及び、パケット化プロトコルにおける進歩を利用して、新しいレベルの性能及び特徴を提供し得る。例として、電力管理、サービス品質(QoS)、ホットプラグ/ホットスワップサポート、データ整合性、及びエラー処理は、PCI Expressによってサポートされる進歩的な特徴のうちのいくつかである。
【0030】
図1を参照すると、コンポーネントのセットをインターコネクトするポイントツーポイントリンクから構成されるファブリックの実施形態が示されている。システム100は、コントローラハブ115に結合されたプロセッサ105及びシステムメモリ110を含む。プロセッサ105は、マイクロプロセッサ、ホストプロセッサ、組み込みプロセッサ、コプロセッサ又は他のプロセッサなど、任意の処理要素を含む。プロセッサ105は、フロントサイドバス(FSB)106を通じてコントローラハブ115に結合されている。一実施形態において、FSB106は、後述のようなシリアルポイントツーポイントインターコネクトである。別の実施形態において、リンク106は、異なるインターコネクト規格に準拠するシリアル差動インターコネクトアーキテクチャを含む。以下で論じられるインターコネクトプロトコル及び特徴は、図1においてここで導入されるコンポーネントのセットを結合するファブリック及びリンクを実装するために利用され得る。
【0031】
システムメモリ110は、ランダムアクセスメモリ(RAM)、不揮発性(NV)メモリ、又はシステム100における複数のデバイスによってアクセス可能な他のメモリのような、任意のメモリデバイスを含む。システムメモリ110は、メモリインタフェース116を通じてコントローラハブ115に結合されている。メモリインタフェースの例は、ダブルデータレート(DDR)メモリインタフェース、デュアルチャネルDDRメモリインタフェース及びダイナミックRAM(DRAM)メモリインタフェースを含む。
【0032】
一実施形態では、コントローラハブ115は、PCIe相互接続階層におけるルートハブ、ルートコンプレックス、又はルートコントローラとして実装され得る。コントローラハブ115の例は、チップセット、メモリコントローラハブ(MCH)、ノースブリッジ、インターコネクトコントローラハブ(ICH)、サウスブリッジ及びルートコントローラ/ハブを含む。チップセットという用語は多くの場合、2つの物理的に別個のコントローラハブ、すなわち、インターコネクトコントローラハブ(ICH)に結合されたメモリコントローラハブ(MCH)を指す。現在のシステムは多くの場合、プロセッサ105に組み込まれたMCHを含むが、コントローラ115は、後述のものと同様の方式でI/Oデバイスと通信することに留意されたい。いくつかの実施形態において、ピアツーピアルーティングが、ルートコンプレックス115を通じて任意選択的にサポートされる。
【0033】
ここでコントローラハブ115は、シリアルリンク119を介してスイッチ/ブリッジ120に連結される。インタフェース/ポート117及び121とも称され得る入力/出力モジュール117及び121は、階層型プロトコルスタックを包含/実装して、コントローラハブ115とスイッチ120との間の通信を提供する。一実施形態において、複数のデバイスをスイッチ120に結合させることが可能である。
【0034】
スイッチ/ブリッジ120は、複数のパケット/メッセージを上流デバイス125、すなわちルートコンプレックスに向かう1階層上から、下流コントローラハブ115、すなわちルートコントローラから離れて1階層下へ、プロセッサ105又はシステムメモリ110からデバイス125へとルーティングする。一実施形態において、スイッチ120は、複数の仮想PCI間ブリッジデバイスの論理アセンブリと称される。デバイス125は、I/Oデバイス、ネットワークインタフェースコントローラ(NIC)、アドインカード、オーディオプロセッサ、ネットワークプロセッサ、ハードドライブ、ストレージデバイス、CD/DVD ROM、モニタ、プリンタ、マウス、キーボード、ルータ、ポータブルストレージデバイス、ファイヤワイヤデバイス、ユニバーサルシリアルバス(USB)デバイス、スキャナ及び他の入力/出力デバイスなど、電子システムに結合される任意の内部又は外部デバイス又はコンポーネントを含む。PCIe用語ではしばしば、そのようなデバイスをエンドポイントと呼ぶ。具体的に示されていないが、デバイス125は、レガシ又は他のバージョンのPCIデバイスをサポートするためのPCIe-PCI/PCI-Xブリッジを含み得る。PCIeにおけるエンドポイントデバイスは多くの場合、レガシ、PCIe又はルートコンプレックス統合エンドポイントとして分類される。
【0035】
グラフィックアクセラレータ130も、シリアルリンク132を介してコントローラハブ115に連結される。一実施形態において、グラフィックアクセラレータ130は、ICHに結合されたMCHに結合されている。次に、スイッチ120、及びしたがって、I/Oデバイス125が、ICHに結合されている。また、I/Oモジュール131及び118は、グラフィックアクセラレータ130とコントローラハブ115との間で通信するための階層型プロトコルスタックを実装する。上記のMCHと同様に、グラフィックスコントローラ又はグラフィックアクセラレータ130自体が、プロセッサ105に統合されてよい。更に、システムの1又は複数のリンク(例えば、123)は、例えば、リタイマ、リピータ等、1又は複数の拡張デバイス(例えば、150)を含み得る。
【0036】
図2を見ると、階層型プロトコルスタックの実施形態が示されている。階層型プロトコルスタック200は、Quick Pathインターコネクト(QPI)スタック、PCIeスタック、コンピュートエクスプレスリンク(CXL)スタック、又は他の高性能コンピューティングインターコネクトスタック、又は他の層状スタックなどの任意の形態の層状通信スタックを含む。図1~4に関する以下の記載は汎用インターコネクトプロトコルスタック(例えばPCIe)に関するものであるが、同一概念が他のインターコネクトスタックに適用されてよい。一実施形態において、プロトコルスタック200は、トランザクション層205と、リンク層210と、物理層220とを含むプロトコルスタックである。図1におけるインタフェース117、118、121、122、126及び131などのインタフェースが、通信プロトコルスタック200として表され得る。通信プロトコルスタックとしての表現は、プロトコルスタックを実装/包含するモジュール又はインタフェースとも称され得る。
【0037】
プロトコルは、パケットを使用してコンポーネント間で情報を通信し得る。パケットが、トランザクション層205及びデータリンク層210において形成され、送信コンポーネントから受信コンポーネントへ情報を搬送する。送信されたパケットが他の層を流れる際に、それらの層でパケットを処理するために必要な追加の情報によってパケットが拡張される。受信側において、リバース処理が発生し、パケットは、それらの物理層220表現からデータリンク層210表現へ、最終的に(トランザクション層パケットのため)受信デバイスのトランザクション層205によって処理され得る形態へと変換される。
【0038】
トランザクション層
【0039】
一実施形態において、トランザクション層205は、デバイスの処理コア、及び、データリンク層210及び物理層220のようなインターコネクトアーキテクチャの間のインタフェースを提供する。これに関して、トランザクション層205の主な役割は、パケット(すなわち、トランザクション層パケット又はTLP)のアセンブリ及びディスアセンブリである。変換層205は、典型的には、TLPのためのクレジットベースのフロー制御を管理する。例えば、プロトコルは、分割トランザクション、すなわちリクエストと時間によって分けられた応答を持つ複数のトランザクションを実装し得、ターゲットデバイスが当該応答のためのデータを収集する間、リンクに他のトラフィックを搬送させることを可能にする。いくつかの実装において、フロー制御は、クレジットベースのフロー制御スキームを使用して実装され得る。このスキームにおいて、デバイスはトランザクション層205内の複数の受信バッファの各々のために、クレジットの初期量をアドバタイズする。図1のコントローラハブ115のようなリンクの反対側における外部デバイスは、各TLPによって消費されるクレジット数をカウントする。トランザクションがクレジット限界を超えない場合、このトランザクションは、送信され得る。応答を受信すると、クレジット量が回復される。クレジットスキームの利点は、クレジット限界が発生しなければ、クレジット返却のレイテンシが性能に影響しないことである。
【0040】
一実施形態において、4つのトランザクションアドレス空間は、構成アドレス空間、メモリアドレス空間、入/出力アドレス空間、及びメッセージアドレス空間を含む。メモリ空間トランザクションは、メモリマッピング位置へ/から、データを転送する読み取り要求及び書き込み要求のうちの1又は複数を含む。一実施形態において、メモリ空間トランザクションは、例えば、32ビットアドレスなどの短いアドレスフォーマット、又は64ビットアドレスなどの長いアドレスフォーマットといった2つの異なるアドレスフォーマットを使用可能である。構成空間トランザクションは、プロトコルをサポートするデバイスの構成空間にアクセスするために使用される。構成空間に対するトランザクションは、読み取り要求及び書き込み要求を含む。メッセージ空間トランザクション(又は単に複数のメッセージ)は、デバイス上でプロトコルを実装するプロトコルエージェント間の帯域内通信をサポートするために定義される。したがって、一実施形態において、トランザクション層205はパケットヘッダ/ペイロード206を組み立てる。
【0041】
リンク層
【0042】
リンク層210は、データリンク層210とも称され、トランザクション層205と物理層220との間の中間ステージとして動作する。一実施形態において、データリンク層210の役割は、リンク上の2つのコンポーネント間でトランザクション層パケット(TLP)を交換するための信頼性のある機構を提供することである。データリンク層210の一方側は、トランザクション層205によって組み立てられた複数のTLPを受け入れ、パケットシーケンス識別子211、すなわち識別番号又はパケット番号を適用し、エラー検出コード、すなわちCRC212を計算及び適用し、物理デバイスから外部デバイスにわたる送信のため、変更された複数のTLPを物理層220に送信する。
【0043】
物理層
【0044】
一実施形態において、物理層220は、パケットを外部デバイスへ物理的に送信すべく、論理サブブロック221及び電気サブブロック222を含む。ここで、論理サブブロック221は、物理層221の「デジタル」機能を担う。これに関して、論理サブブロックは、物理サブブロック222による送信のための発信情報を準備するための送信セクションと、受信情報をリンク層210に渡す前に受信情報を識別して準備する受信セクションとを含む。
【0045】
物理ブロック222は、送信機及び受信機を含む。送信機には論理サブブロック221により複数のシンボルが供給され、送信機はそれらをシリアライズし、別の外部デバイスに送信機を接続する物理送信媒体に送信する。受信機には外部デバイスからのシリアライズされたシンボルが供給され、受信した信号をビットストリームに変換する。ビットストリームは、逆シリアライズされ、論理サブブロック221に供給される。一実施形態において、8b/10b送信コードが採用され、ここでは10ビットシンボルが送信/受信される。他の事例において、128b/130bエンコーディングが活用され得、一方、なお他の実装では、他の例の中でも特に、フリットベースの送信が利用され得る。一例において、フレーム223を有するパケットをフレーム化するために特別なシンボルが使用される。加えて、一例において、受信機は、着信シリアルストリームから復元されたシンボルクロックも提供する。
【0046】
送信媒体は、送信ライン、銅ライン、光ライン、無線通信チャネル、赤外通信リンク、又はその他の通信パスのようなデータを送信するための任意の送信パスを実装し得る。2つのデバイス間の接続はリンクと称される。リンクは、1又は複数の構成送信パス又はレーンを使用して実装され得る。帯域幅をスケーリングするために、リンクはxNで示される複数のレーンを集約してよく、ここでNは任意のサポートされるリンク幅、例えば、1、2、4、8、12、16、32、64、又はそれ以上などである。いくつかの実装において、差分シグナリングが活用され得、差分ペアは、差分信号を送信するための2つの送信パスを指す。例として、差分ペアにおいて、ペアにおける第1ラインが低電圧レベルから高電圧レベル、すなわち立ち上がりエッジに切り替わるとき、ペアにおける他のラインは、高論理レベルから低論理レベル、すなわち立ち下りエッジに駆動する。複数の差分信号は、複数のより良好な電気的特性、例えば、より良好な信号整合性、すなわち相互連結、電圧オーバシュート/アンダシュート、リンギング等を潜在的に示す。これにより、より良好なタイミングウィンドウを可能にし、それにより、より高速な送信周波数を可能にする。
【0047】
上述の通り、トランザクション層205、リンク層210、及び物理層220は具体的な実施形態(例えば、従来のPCIeプロトコルスタック)に関し記載されているが、階層型プロトコルスタックはこれに限定されない。実際には、任意の階層型プロトコルが包含/実装されてよい。例として、ポート/インタフェースは、以下でより具体的に論じられるプロトコルの層を含む、(1)パケットを組み立てるための第1層(例えば、トランザクション又はプロトコル層);パケットをシーケンシングするための第2層(例えば、リンク又はデータリンク層);及び、パケットを送信するための第3層(例えば、物理層)など、階層型プロトコルにおける様々な層を実装するためのハードウェア回路及び/又はファームウェアにおいて実装されるロジックを含み得る。
【0048】
いくつかの実装において、インターコネクトプロトコルは、キャッシュコヒーレントリンクを実装し得る。一例として、ウルトラパスインターコネクト(登録商標)(UPI(登録商標))は、ワークステーション又はサーバのような高性能コンピューティングプラットフォームで使用されてよく、複数のプロセッサ、複数のアクセラレータ、複数のI/Oデバイス等を接続するために典型的にはPCIe又は別のインターコネクトプロトコルが用いられるようなシステムに含まれる。しかしながら、UPIはそれらには限定されない。代わりに、UPIは、ここで記載される任意のシステム又はプラットフォームで使用されてよい。さらに、個別に開発された複数の思想が、PCIe、MIPI、QPI等のような、その他の複数のインターコネクト及び複数のプラットフォームへ適用されてよい。
【0049】
複数のデバイスをサポートするべく、1つの例示的な実装において、UPIは、命令セットアーキテクチャ(ISA)には依存しない(即ち、UPIは、複数の異なるデバイスに実装されることができる)ものとすることができる。別のシナリオでは、UPIは、また、単にプロセッサやアクセラレータへ接続するためではなく、高性能I/Oデバイスへ接続するために使用されてよい。例えば、高性能PCIeデバイスは、適切な変換ブリッジ(即ち、UPIからPCIeへ)を通してUPIに結合されてよい。さらに、複数のUPIリンクは、様々なやり方で(例えば、スター、リング、メッシュなど)複数のプロセッサのような多数のUPIベースのデバイスによって使用されてよい。実際、UPI及び本明細書で論じられた他のものなどのインターコネクトプロトコルが、ダイ又はパッケージの間の相互接続を容易にするために使用され得る。例えば、図3は、様々な潜在的マルチソケット構成の例示的な実装を示す。図示されるように、2ソケット構成305は、2つのリンクを含むことができるが、他の実装では、1つのリンクが使用されてよい。より大きなトポロジーに対しては、他の追加の又は代替の特徴の中でもとりわけ識別子(ID)が割当可能であってかつ何らかの形態で仮想パスが存在する限りにおいて、任意の構成が使用されてよい。示されるように、一例において、4ソケット構成310は、各プロセッサから別のプロセッサへのリンクを有する。しかし、構成315に示される8ソケット実装では、全てのソケットが互いを、それぞれのリンクを通じて直接的に接続しているわけではない。しかしながら、仮想パス又はチャネルが複数のプロセッサ間に存在するような場合には、そうした構成がサポートされる。サポートされるプロセッサの範囲は、ネイティブ・ドメインにおいて、2~32個を含む。より多数のプロセッサが、他の例の中でも特に、多重ドメイン又は複数のノードコントローラの間におけるその他のインターコネクトの使用を通じて、達成されてよい。
【0050】
他のインターコネクトアーキテクチャと同様、UPIアーキテクチャは、階層型プロトコルアーキテクチャの定義を含み、いくつかの例において、この階層型プロトコルアーキテクチャは、複数のプロトコル層(コヒーレントの、非コヒーレントの、及び任意選択的には、他のメモリベースプロトコル)、ルーティング層、リンク層、及び物理層を含む。いくつかの実装において、プロトコルスタックにおけるそれぞれの層は、それら自体のレベルの粒度又は量子の情報を構築及び/又は処理し得る(例えば、他の例の中でも特に、パケットを用いるプロトコル層、フリットを用いるリンク層、フィット(phit)又はシンボルを用いる物理層)。いくつかの実施形態において、パケットは、実装に基づいて、部分的フリット、単一フリット、又は複数のフリットを含み得ることに留意されたい。
【0051】
別の例のインターコネクトプロトコルにおいて、コンピュートエクスプレスリンク(CXL)インターコネクトプロトコルは、他の適用の中でも特に、次世代データセンター性能を高速化するために設計された、改善された高速CPU-デバイス及びCPU-メモリインターコネクトを提供するために利用され得る。CXLは、CPUメモリ空間及び付属デバイス上のメモリの間のメモリコヒーレンシを維持する。これにより、他の例示的な利点の中でもとりわけ、より高い性能のためのリソース共有が可能になり、ソフトウェアスタックの複雑性が減り、システムコスト全体が下がる。CXLは、ホストプロセッサ(例えば、CPU)及びワークロードアクセラレータのセット(例えば、他の例の中でも特に、グラフィックス処理ユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA)デバイス、テンソル及びベクトルプロセッサユニット、機械学習アクセラレータ、専用アクセラレータソリューション)の間の通信を可能にする。実際、CXLは、高速通信のための標準インタフェースを提供するために設計されている。なぜなら、人工知能、機械学習、及び他の用途など、新しいコンピューティングの用途のサポートにおいてCPUを補完するために、アクセラレータの使用が増加しているからである。
【0052】
CXLリンクは、コヒーレンシ、メモリアクセス、及び入出力(I/O)プロトコルの動的プロトコル多重化をサポートする、低レイテンシ、高帯域幅のディスクリート又はオンパッケージリンクであり得る。他の用途の中でもとりわけ、CXLリンクにより、アクセラレータは、他の例の中でもとりわけ、キャッシングエージェント及び/又はホストシステムメモリとしてのシステムメモリにアクセスすることが可能になり得る。CXLは、アクセラレータの莫大なスペクトルをサポートするように設計された動的マルチプロトコル技術である。CXLは、離散型又はオンパッケージ型リンクを介して、PCIe(CXL.io)と同様のI/Oセマンティクスと、キャッシュプロトコルセマンティクス(CXL.cache)と、メモリアクセスセマンティクス(CXL.mem)とを含むプロトコルの豊富なセットを提供する。特定のアクセラレータ使用モデルに基づいて、CXLプロトコルの全て、又はこれらのプロトコルのサブセットのみが有効化され得る。いくつかの実装において、CXLは、十分に確立された、幅広く採用されているPCIeインフラストラクチャ(例えば、PCIe5.0)上に構築されてよく、PCIe物理及び電気的インタフェースを活用してエリアに高度なプロトコルを提供することは、I/O、メモリプロトコル(例えば、ホストプロセッサがメモリをアクセラレータデバイスと共有することを可能にする)及びコヒーレンシインタフェースを含む。
【0053】
図4を参照すると、CXLリンク450を利用する例示的なシステムを示す簡易ブロックダイアグラム400が示される。例えば、リンク450は、ホストプロセッサ405(例えば、CPU)をアクセラレータデバイス410にインターコネクトし得る。この例では、ホストプロセッサ405は、1又は複数のプロセッサコア(例えば、415a~b)及び1又は複数のI/Oデバイス(例えば、418)を含む。ホストメモリ(例えば、460)には、(例えば、同じパッケージ又はダイ上の)ホストプロセッサが設けられ得る。アクセラレータデバイス410は、アクセラレータロジック420を含んでよく、いくつかの実装では、独自のメモリ(例えば、アクセラレータメモリ465)を含んでよい。この例では、ホストプロセッサ405は、コヒーレンス/キャッシュロジック425及びインターコネクトロジック(例えば、PCIeロジック430)を実装するための回路を含み得る。CXL多重化ロジック(例えば、455a~b)も提供されることで、CXLプロトコル(例えば、I/Oプロトコル435a~b(例えば、CXL.io)、キャッシュプロトコル440a~b(例えば、CXL.cache)及びメモリアクセスプロトコル445a~b(CXL.mem))の多重化が可能になり得る。これにより、ホストプロセッサ405とアクセラレータデバイス410との間のリンク450を介して、サポートされているプロトコル(例えば、435a~b、440a~b、445a~b)のいずれか1つのデータを多重化方式で送信することが可能になる。
【0054】
CXLのいくつかの実装において、Flex Bus(登録商標)ポートが、CXL準拠リンクと連携して利用され得、多種多様な他のデバイス(例えば、他のプロセッサデバイス、アクセラレータ、スイッチ、メモリデバイスなど)とインターコネクトするようにデバイスを柔軟に適合する。Flex Busポートは、PCIeリンク又はCXLリンク(また、潜在的に、他のプロトコル及びアーキテクチャのリンク)のいずれかをサポートするように静的に構成されたフレキシブル高速ポートである。Flex Busポートにより、高帯域幅オフパッケージリンクを介してネイティブPCIeプロトコル又はCXLのどちらを提供するか設計上選ぶことが可能になる。ポートにおいて適用されるプロトコルの選択は、自動ネゴシエーションを介してブート時間中に発生してよく、スロットへプラグ接続されたデバイスに基づいてよい。Flex Busは、PCIe電気回路を用いることでPCIeリタイマとの互換性を有するようになり、アドインカードについての規格であるPCIeフォームファクタを順守する。
【0055】
図5は、CXLリンクを実装するために利用される例示的なポートアーキテクチャ500(例えば、Flex Bus)を示す簡易ブロックダイアグラムである。例えば、Flex Busアーキテクチャは、ポートによりサポートされる複数のプロトコルを実装するための複数の層として編成され得る。例えば、ポートは、トランザクション層ロジック(例えば、505)、リンク層ロジック(例えば、510)、物理層ロジック(例えば、515)(例えば、全部又は一部が回路に実装される)を含み得る。例えば、トランザクション(又はプロトコル)層(例えば、505)は、PCIeトランザクション層555及びベースPCIeトランザクション層555のCXLトランザクション層強化560(CXL.io用)を実装するトランザクション層ロジック525と、CXLリンクのためのキャッシュ(例えば、CXL.cache)プロトコル及びメモリ(例えば、CXL.mem)プロトコルを実装するためのロジック530とへ細分化され得る。同様に、リンク層ロジック535は、PCIeデータリンク層565の拡張バージョンを表すベースPCIeデータリンク層565及びCXLリンク層(CXL.io用)を実装するために提供され得る。CXLリンク層510は、キャッシュ及びメモリリンク層強化ロジック540(例えば、CXL.cache及びCXL.mem)も含み得る。
【0056】
引き続き図5の例において、CXLリンク層ロジック510は、他の例示的な実装の中でも特に、2つのロジックストリーム(例えば、PCIe/CXL.io及びCXL.cache/CXL.mem)からのトラフィックをインターリーブする、CXLアービトレーション/多重化(ARB/MUX)ロジック520とインタフェースし得る。リンクトレーニング中に、トランザクション層及びリンク層は、PCIeモード又はCXLモードのいずれかで動作するように構成される。いくつかの事例において、他の例の中でもとりわけ、ホストCPUは、PCIeモード又はCXLモードのいずれかの実装をサポートし得るが、アクセラレータのような他のデバイスは、CXLモードのみをサポートし得る。いくつかの実装において、ポート(例えば、Flex Busポート)は、PCIe物理層(例えば、PCIe電気回路PHY550)に基づいて、物理層515を利用し得る。例えば、Flex Bus物理層は、リンクトレーニングプロセス中に代替的なモードネゴシエーションの結果に基づいてPCIeモード又はCXLモードのいずれかで動作できる集中型論理物理層545として実装され得る。いくつかの実装において、物理層は、複数のシグナリングレート(例えば、8GT/s、16GT/s、32GT/s等)及び複数のリンク幅(例えば、x16、x8、x4、x2。x1等)をサポートし得る。PCIeモードでは、ポート500により実装されるリンクは、ネイティブなPCIe特徴(例えば、PCIe仕様において定義される)に完全に準拠し得るが、CXLモードでは、このリンクは、CXLについて定義された全ての特徴をサポートする。したがって、他の例の中でもとりわけ、Flex Busポートは、ネイティブなPCIeプロトコルデータ又は動的マルチプロトコルCXLデータを送信して、PCIe電気回路を介してI/Oプロトコル、コヒーレンシプロトコル及びメモリプロトコルを提供できるポイントツーポイントインターコネクトを提供し得る。
【0057】
CXL I/Oプロトコル、CXL.ioは、非コヒーレントロード/ストアインタフェースをI/Oデバイスに提供する。CXL.ioにおけるトランザクションタイプ、トランザクションパケットフォーマット、クレジットベースのフロー制御、仮想チャネル管理及びトランザクション順序付け規則は、PCIe定義の全部又は一部に従い得る。CXLキャッシュコヒーレンシプロトコルであるCXL.cacheは、デバイスとホストとの間のインタラクションを、少なくとも1つの関連付けられた応答メッセージ及び場合によってはデータ転送を各々が有する複数の要求として定義する。インタフェースは、各方向における、要求、応答及びデータという3つのチャネルから成る。
【0058】
CXLメモリプロトコル、CXL.memは、プロセッサ及びメモリの間のトランザクションインタフェースであり、ダイ間で通信するとき、CXLの物理及びリンク層を使用する。他の例の中でもとりわけ、CXL.memは、メモリコントローラがホストCPU内に位置する場合、メモリコントローラがアクセラレータデバイス内にある場合、又はメモリコントローラがメモリバッファチップへ移動させられる場合を含む、複数の異なるメモリ取り付けオプションのために用いられ得る。他の例示的特徴の中でもとりわけ、CXL.memは、異なるメモリタイプ(例えば、揮発性、永続的等)と構成(例えば、平坦、階層等)とを伴うトランザクションに適用され得る。いくつかの実装において、ホストプロセッサのコヒーレンシエンジンは、CXL.mem要求及び応答を用いて、メモリとインタフェースし得る。この構成では、CPUコヒーレンシエンジンは、CXL.mem Masterとみなされ、Memデバイスは、CXL.mem Subordinateとみなされる。CXL.mem Masterは、CXL.mem要求(例えば、読み取り、書き込み等)のソーシングを担うエージェントであり、CXL.mem Subordinateは、CXL.mem要求(例えば、データ、完了等)への応答を担うエージェントである。Subordinateがアクセラレータである場合、CXL.memプロトコルは、デバイスコヒーレンシエンジン(DCOH)の存在を想定する。このエージェントは、CXL.memコマンドに基づくデバイスキャッシュのスヌープ及びメタデータフィールドの更新のようなコヒーレンシ関連機能の実装を担うことが想定されている。メタデータがデバイス取り付け型メモリによりサポートされる実装では、メタデータは、他の例示的な使用の中でもとりわけ、ホストにより、CPUソケット用の粗いスヌープフィルタを実装するために用いられ得る。
【0059】
いくつかの実装において、リンク層(例えば510)を実装する回路又は他のロジック(例えば、知的財産(IP)ブロック又は他のハードウェア要素)を、プロトコルの物理層(例えば515)の少なくとも一部を実装する回路又は他のロジック(例えば、IPブロック又は他のハードウェア要素)に結合するためのインタフェースが提供され得る。例えば、リンク層コントローラ、モジュール、又は他のロジック、及び、論理物理層(「論理PHY」又は「logPHY」)を実装するモジュールの間の共通インタフェースを定義するための論理PHYインタフェース(LPIF)仕様に基づくインタフェースは、図5の例などにおいて、物理インターコネクトに対するインタフェースについての1又は複数のリンク層及び物理層の間の相互運用性、設計、及びバリデーション再使用を容易にする。追加的に、図5の例のように、インタフェースは、複数のプロトコルを同時に実装及びサポートするためのロジック(例えば、535、540)を用いて実装され得る。更に、そのような実装において、アービトレーション及びマルチプレクサ層(例えば520)が、リンク層(例えば、510)及び物理層(例えば、515)の間に提供され得る。いくつかの実装において、複数のプロトコル実装における各ブロック(例えば、515、520、535、540)は、独立のLPIFインタフェース(例えば、580、585、990)を介して、他のブロックとインタフェースし得る。分岐がサポートされる場合において、各分岐ポートは、他の例の中でも特に、それ自体の独立のLPIFインタフェースを同様に有し得る。
【0060】
本明細書において論じられる例は、LPIFベースのリンク層論理PHYインタフェースの使用を参照し得るが、本明細書において論じられる詳細及び原理は、非LPIFインタフェースに等しく適用され得ることが理解されるべきである。同様に、いくつかの例は、CXL又はPCIeを実装するためにPHYをコントローラに結合するための共通リンク層論理PHYインタフェースの使用を参照し得るが、他のリンク層プロトコルもそのようなインタフェースを利用し得る。同様に、Flex Bus物理層に対するいくつかの参照が行われ得るが、他の物理層ロジックがいくつかの実装において同様に活用され得、本開示の範囲内にある他の例の変形の中でも特に、本明細書において論じられるものなどの共通リンク層論理PHYインタフェースを利用し得る。
【0061】
従来のダイ間インターコネクトは、ベンダ特定、又は、アプリケーション固有のいずれかである(例えば、メモリオンパッケージを接続するためにHBM接続が使用される)。いくつかのダイ間インターコネクト(例えば、IntelのAIB、HBI、及び、OCPコンソーシアムのBoW)は、物理層のみを定義し、ダイ間の相互運用性を確実にするための機構を提供しない。実際、ダイ間のシームレスな相互運用性に使用され得る汎用ダイ間インターコネクトを実装するための現在の解決手段は存在せず、エンジニアがイノベートし得るパッケージ上のオープンイノベーションスロットを提供し得る。ユニバーサルチップレットインターコネクトエクスプレス(UCIe)プロトコルを通じた、標準化されたダイ間インタフェースを実装するための、改善されたインターコネクトアーキテクチャが本明細書において導入される。UCIeが、ダイのオンパッケージ及びオフパッケージ結合のための汎用ダイ間インターコネクトのための解決手段を可能にするだけでなく、インタフェースの標準化は、既存のコンピューティングシステムを改善し、新しいシステムを実装するために、異なるパッケージの選択肢を使用して、異なる技術ノードにわたる、異なるベンダ及び異なるファブからの異なるデバイスの相互接続を可能にする。
【0062】
UCIeは、チップレット間の高帯域幅、低レイテンシ、電力効率の高い、費用効果の高いオンパッケージ接続性を提供する。それは、クラウド、エッジ、企業、5G、自動車、高性能コンピューティング、及びハンドヘルドセグメントに及ぶ全体的なコンピューティング連続体にわたる、コンピューティング、メモリ、ストレージ、及び接続性の需要の予想される増大に対処する。ムーアの法則は事実であり、コンピューティングブロックがますます小型化し強力になることを可能にしたが、クライアントCPU、サーバCPU、GP-GPUなどの主流の商用提供物における複数のダイのオンパッケージ統合の増加は、増大する性能需要を満たすために、より大きいダイサイズにもたらした。しかしながら、この現象の結果、設計は、ダイのレチクルリミットに遭遇することになった。例は、数百の数のコアを有するマルチコアCPU、又は、非常に大きいファンアウトスイッチを含む。ダイがレチクルリミット内にフィットし得るときでも、パッケージにおいて接続される複数のより小さいダイは、収率最適化、及び、複数の市場セグメントにわたるダイの再使用に好ましいことがあり得る。同一ダイのオンパッケージ接続性は、これらのスケールアップ用途を可能にする。追加的に、パッケージ上のチップレット統合はまた、設計者が、異なる数及びタイプのダイを選択することによって、異なる市場セグメントについての異なるトレードオフを行うことを可能にする。例えば、セグメントの必要性に応じて、異なる数のコンピューティング、メモリ、及びI/Oダイを選択することができる。異なるセグメントのために異なるダイ設計を行う必要がないので、結果として、より低い生産SKU費用をもたらす。
【0063】
チップレットのオンパッケージ統合は、専用の解決手段を提供するための高速かつ費用効果の高い手段を可能にする。例えば、異なる使用は、同一のメモリ、コア、及びI/Oを有するが、異なるアクセラレーション機能を必要とし得る。それはまた、機能に基づいて最適なプロセスノード選択が行われるダイのコパッケージングを可能にする。例えば、メモリ、ロジック、アナログ、及び、コパッケージング光学系は各々、チップレットと共にパッケージされ得る異なるプロセス技術を必要とする。パッケージトレースは短く、高密度ルーティングを提供するので、メモリアクセスなどの高帯域幅を必要とする適用(例えば、高帯域幅メモリ)が、オンパッケージ統合として実装される。
【0064】
UCIeは、同じパッケージ上で複数のダイを接続するための、オープン、マルチプロトコル対応、オンパッケージインターコネクト規格である。UCIeは、UCIeを使用してインターコネクトされ得る細分化されたダイアーキテクチャをサポートする活発なエコシステムを開発することを可能にする。UCIeは、PCIe、CXL、アドバンスドエクステンシブルインタフェース(登録商標)(AXI)、UPI、及び他のものなど、複数のプロトコル、及び、(両方のリンクパートナがそれをサポートする限り)共通の物理及びリンク層の上に選択した任意のプロトコルをマッピングするために使用され得るローモードをサポートする。UCIeは追加的に、他の特徴の中でも特に、アプリケーション層及びパッケージに関連するフォームファクタ(例えば、バンプ位置、電力供給、熱解決手段など)など、システムオンチップ(SoC)構造のための要素を包含し得る。UCIeの特徴は、異なる性能の特性を有する広範なデバイスにわたる相互運用性を確実にするように作用する。十分に定義されたデバッグ及びコンプライアンス機構が、相互運用性を確実にするために提供される。UCIeは追加的に、後方互換性の方式でデバイスのサポートを可能にし得る。
【0065】
UCIeは広範な使用モデルをサポートするが、ここでは説明用の例としてサブセットが提供される。上に記載されるように、いくつかのプロトコルが、PCIe及びCXLなどのUCIe上に明示的にマッピングされ得る。そのようなプロトコルは、ローモードを含むUCIeフリットフォーマット上にマッピングされ得る。例として、例えばリンクレベルリトライと共にPCIe SERDES PHY及びPCIe/CXL論理PHYを置換することによって、PCIe及びCXLなどの広く使用されるプロトコルが、より多くのオンパッケージ統合のためにUCIe上にマッピングされ、他の例示的特徴の中でも特に、パワーを改善し、性能を強化し得る。UCIeローモードは、プロトコルに依存せず、デバイスによってアドホックに他のプロトコルがマッピングされることを可能にし、一方、他の例示的特徴の中でも特に、スタンドアロンSERDES/トランシーバタイル(例えばイーサネット(登録商標))をオンパッケージに統合するなどの使用を可能にする。
【0066】
図6は、複数のUCIeリンク(例えば、630、635、640、645)を使用してインターコネクトされた複数のプロセッサダイ(例えば、610、615)、アクセラレータダイ(例えば、620)、及び、入出力(I/O)タイル(例えば625)を含む、SoCパッケージ605の例示的な実装を示す簡易ブロックダイアグラム600である。いくつかの実装において、アクセラレータ620及び/又はI/Oタイル625は、UCIe上で実行するCXLトランザクションを使用して、CPUデバイス610、615に接続され得、それにより、CXLのI/O、コヒーレンシ、及びメモリプロトコルを活用する。I/Oタイルは、パッケージ605の外部CXL、PCIe及びDDRピン(例えば、650、655)を提供し得る。アクセラレータはまた、UCIe上で実行するPCIeトランザクションを使用してCPUに接続され得る。オンパッケージのCPU間接続性はまた、他の例の中でも特に、コヒーレンシプロトコルを実行してUCIeインターコネクトを使用し得る。いくつかの実装において、例示的なSoCパッケージ上のすべてのコンポーネントは、UCIeリンクを使用してインターコネクトされ得る。他の事例において、1又は複数のブロック(例えば、メモリブロック660、665、670、675)が、他の例示的な実装の中でも特に、他のプロトコル又はリンク(例えば、DDRなど)を使用して接続され得る。
【0067】
様々なパッケージがUCIeリンクをサポートし得る。例えば、他の例の中でも特に、標準の2次元(2D)パッケージ、及び、2.5D及び3Dアドバンスドパッケージオプションが利用され得る。図7は、標準2Dパッケージを使用する例示的な適用を示す簡易ブロックダイアグラムである。有機パッケージ/基板710上のトレース705、708を使用する、低コストで長いリーチ(例えば、10mm~25mm)のインターコネクトのために2Dパッケージが使用され得、それでもなお、オフパッケージSERDESと比較して、著しく良いBER特性を提供する。図7に示すように、第1ダイ715は、基板710上のトレース(例えば、705、708)を使用して実装される、それぞれのリンクによって第2ダイ720及び第3ダイ725に結合され得る。
【0068】
図8A~8Dは、UCIeアドバンスド(例えば2D)オプションを使用する例示的な用途を示す簡易ブロックダイアグラム800a~dである。そのようなパッケージング技術は、性能最適化用途に使用され得る。結果的に、チャネルリーチは短く(例えば2mm未満)、インターコネクトは、高帯域幅、及び、最良の性能及び電力効率特性を有する低レイテンシのために最適化されると予測される。一例において、図8Aに示されるように、シリコンブリッジ805、810(例えば、組み込みマルチダイインターコネクトブリッジ(EMIB))上でリンクが実装され得る。図8Bの例において、パッケージ710上のインターポーザ815及びUCIeリンク(例えば820、825)がインターポーザ815上に提供され得る(例えば、基板上のウェハ上のチップ(CoWoS)用途)。図8Cに示される、アドバンスドパッケージのなお別の例において、シリコンブリッジ(例えば、830、835)が、パッケージ710上に提供されるファンアウト有機インターポーザ840において提供され得、UCIeリンクがシリコンブリッジ830、835において実装され得る。図8Dは、標準及びアドバンスドオプションの組み合わせが活用される別の例を示す。例えば、ベースダイ850は、スタンダードパッケージトレース860を利用して、第1リンクによって2D方式でコンパニオンダイ855に結合され得、一方、ベースダイ850は、ブリッジベースのリンク870によって別のベースダイ865に結合される。別の例において、他の例示的アーキテクチャ及びパッケージ用途の中でも特に、ベースダイ865は、3DのUCIeリンクを介して、垂直チップレット875に結合する。
【0069】
UCIeは、2つの広い使用モデルをサポートする。上で紹介された第1使用モデルは、電力効率の高い、費用効果の高い性能を提供するために、パッケージレベル統合を伴う。したがって、メモリ、アクセラレータ、ネットワーキングデバイス、モデムなどの、ボードレベルでアタッチされたコンポーネントは、パッケージレベルで統合され得、同じパッケージ上でも異なるパッケージオプションを通じて接続される複数のソースからのダイを有するハンドヘルドからハイエンドサーバまでの適用可能性を有する。第2の使用は、異なるタイプの媒体(例えば、光学、電気ケーブル、ミリ波)を使用して、オフパッケージ接続性を提供することであり、UCIeリタイマを使用して、ラック又は更にはポッドレベルにおいて基礎プロトコル(例えば、PCIe、CXL)をトランスポートし、リソースプーリング、リソース共有、及び、更にはメッセージ渡しを可能にし、ノードレベルからラック/ポッドレベルを超えるロード-ストアセマンティクスを使用して、エッジ及びデータセンタにおいて、より電力効率の高い、費用効果の高い性能を取得する。図9は、例示的なラックサーバシステムを示す簡易ブロックダイアグラムである(例えば、UCIeは、デバイス間のサーバスケール相互接続を含むオフパッケージ接続を容易にするために利用され得る)。そのような実装において、オフパッケージ接続を容易にするためにリタイマが提供され得る(例えば、ラックサーバ(TORS)オンパッケージの上)。例えば、他の例示的な実装の中でも特に、第1シャーシ910上のデバイス(例えば、プロセッサデバイス905)を別の第2シャーシ920上の別のデバイス(例えば、プロセッサ915)に(例えば、スイッチデバイス925を介して)結合するために、オフパッケージUCIeリンクが利用され得る。
【0070】
UCIeは、図10のブロックダイアグラム1000において示される階層型プロトコルである。物理層1005は、電気シグナリング、クロック、リンクトレーニング、及びサイドバンドシグナリングを担う。ダイ間(D2D)アダプタブロック1010は、リンク状態管理及びパラメータネゴシエーションをチップレットに提供する。それは任意選択的に、その巡回冗長検査(CRC)及びリンクレベルリトライ機構を通じて、データの信頼できる送達を保証する。複数のプロトコルがサポートされるとき、D2Dアダプタは、リンク上の複数のプロトコルのデータ間のアービトレーションのための基礎のアービトレーションフレームワークを定義する。1つの例示的な実装において、UCIeは、アダプタが信頼できる転送を担うとき、基礎の転送機構を定義するために、256バイトのフリット(又はフロー制御ユニット)を提供し得る。上に記載したように、1又は複数の他のインターコネクトプロトコルが、UCIeのフリットフォーマットにネイティブにマッピングされ得る。一例において、UCIeは、PCIe及びCXLプロトコルをマッピングし、これらのプロトコルの既存のエコシステムを活用することによって、シームレスな相互運用性を確実にする。例えば、PCIe及びCXLを用いて、既にデプロイされたSoC構造、リンク管理、及びセキュリティの解決手段がUCIeに活用され得る。対処される使用モデルも包括的である:他の例示的な利益及び使用ケースの中でも特に、ダイレクトメモリアクセスを使用するデータ転送、ソフトウェア検出、エラー処理などが、PCIe/CXL.ioを用いて対処される;メモリ使用ケースが、CXL.Memを通じて処理される;及び、アクセラレータなどの用途のためのキャッシュ要件が、CXL.cacheを用いて対処される。UCIeはまた、任意の他のプロトコルをUCIeにおいて定義されたフリットフォーマットにマッピングするために使用され得る「ストリーミングプロトコル」を定義する。
【0071】
プロトコル層1015は、潜在的に任意のインターコネクトプロトコルに従い得、それらは、UCIe(例えば、CXL、PCIeなど)にネイティブにマッピングされるプロトコル、UCIeのストリーミング又はローモードを利用し得る他の十分に定義された又は標準化されたインターコネクトプロトコル、又は、プロプライエタリ又はベンダ定義プロトコル(それらはUCIeのストリーミング又はローモードを同様に利用し得る)を含む。プロトコル層は、他のプロトコル固有の特徴の中でも特に、対応するプロトコルのトランザクション層を実装し、プロトコルにおいて定義されたフロー制御スキームを実装し得る。プロトコル層1015を実装するロジックブロック(例えば、ソフトウェア、ファームウェア、及び/又はハードウェア)は、フリットアウェアD2Dインタフェース(又はFDI)1020を使用して、UCIe D2Dアダプタ1010とインタフェースし、更なる処理のために、プロトコルに従ってデータをD2Dアダプタに提供し得る。PHYを使用してリンク上で送信されるデータは、PHYによってFDI上でD2Dアダプタ1010から受信される。FDIインタフェースは、UCIeプロトコル仕様において定義され、通信のための信号のセット、及び、プロトコル層ブロック1015及びD2Dアダプタブロック1010の間のネゴシエーションを定義し得る。例えば、信号又はメッセージがFDI1020において定義され得、それにより、D2Dアダプタ1010は、(例えば、リンクパートナデバイス(例えば、リンクパートナデバイスのD2Dアダプタ)とのネゴシエーションに基づいて)プロトコル層に、利用されるフリットフォーマット(例えば、マッピングされるフリットフォーマット、ストリーミングモードフリットフォーマット、ローモードフリットフォーマットなど)を通知し、プロトコル層1015はこれを使用して、他の例の中でも特に、対応するプロトコルのデータを、識別されたフリットフォーマットに適合し得る。
【0072】
ストリーミング及びローモードのプロビジョニングを通じて、UCIeは、UCIeリンク上で任意のプロトコルのデータをトランスポートするオプションを可能にする。プロトコルデータは、フリットフォーマットで、又は、必要な場合ローファブリックワイヤとしてトランスポートされ得る。いくつかのプロトコルは明示的にマッピングされ得、アクセラレータ、メモリエクスパンダ、及びI/Oエクスパンダなどのオンボードコンポーネントをシームレスにオンパッケージに移動させることを可能にする。フリットモードは、エラー検出及び/又はエラー訂正ビット/バイト(例えばCRC)がD2Dアダプタによって、定義されたフリットフォーマットに挿入される動作モードを含む。フリットモードは、データの別の基礎プロトコル(例えば、PCIe、UPI、CXL、GenZ、AXIなど)のフリットがUCIeフリットフォーマット上にマッピングされる動作モード、及び、ストリーミングモード(潜在的な任意の他のプロトコルのデータが(例えば、CRC、及び、UCIeフリットにおいて定義された、任意の他の指定されたフィールドを含む)フリットフォーマットにエンコード又はポピュレートされる)を含む。一方、ローモードは、UCIeフリットのすべてのバイトがプロトコル層によってポピュレートされる(及び、D2Dアダプタは、CRC、リトライ、又は他の値をフリットに追加することなくフリットをそのまま受け取り、任意の修正無しでデータをプロトコル層から物理層に転送する)動作モードである。いくつかの事例において、ローモードにおけるCRC、リトライ、FECなどは、他の例の中でも特に、(UCIe D2Dアダプタではなく)プロトコル層によって全体的に処理され得る。
【0073】
いくつかの実装において、D2Dアダプタ1010は、回路の(例えば、プロトコル層ブロック及び/又は物理層ブロック1005)を実装するものから)別個のブロックとして提供され得る。他の実装において、プロトコル層又は物理層を実装するロジックの一方又は両方は、他の例示的な実装の中でも特に、D2Dアダプタブロック1010を実装するロジック(例えばハードウェア回路)と共にコロケーション又は統合され得る。D2Dアダプタ1010は、(例えばFDI1020を介して)プロトコル層1015及び(例えばローD2Dインタフェース(RDI)1025を介して)物理層1005と調整し、UCIeリンクにわたるデータ転送の成功及び信頼性を確実にする。これらの標準化インタフェース(例えばFDI及びRDI)の各々は、それぞれのプロトコルスタックブロックがインタラクトし調整する方式を標準化するために、(それぞれのプロトコルスタックブロックの物理相互接続のための)定義されたピンのセット、定義された信号、状態、及び状態遷移のセットを通じて標準化され得る。プロトコルのそれぞれの層を実装するブロック(例えばIPブロック)を結合するために、そのような標準化インタフェース(例えばFDI及びRDI)を提供することにより、ベンダ及びSoCビルダが、低い統合費用及びより速い市場への時間で、異なるIPプロバイダからの異なる層を容易に混合及びマッチさせることを可能にする。(例えば、プロトコル層ブロックが、本明細書において提供されるインタフェースハンドシェイクに準拠する任意の異なるベンダからのD2Dアダプタ及び物理層ブロックと連携することを可能にする)。更に、ポストシリコン中の相互運用性試験が、それに関連付けられた、より大きいオーバヘッド及び費用を有することを考慮すると、そのようなインタフェースに基づくバス機能モデル(BFM)の一貫した理解及び開発は、他の例示的な利益の中でも特に、そのようなUCIeプロトコルスタック実装のための、より容易なIP開発を可能にし得る。
【0074】
D2Dアダプタ1010は、メインデータパスにおけるロジックの最小化を容易にすることを助け、プロトコルフリットについての高度にレイテンシが最適化されたデータパスを実現する。D2Dアダプタは、他の例示的特徴の中でも特に、アービトレーション及びマルチプレクサ機能、エラー検出及び/又はエラー訂正コード(例えば、巡回冗長検査(CRC))、リトライスキームなど、(プロトコル層1015の)様々なプロトコルによって活用され得る様々な機能を実装するためのロジックを含み得る。例として、CXLを実装するプロトコル層はD2Dアダプタに結合され得る。CXLプロトコルをトランスポートするとき、D2Dアダプタ1010のARB/MUX機能は、CXLの複数のサブプロトコル(例えば、CXL.mem、CXL.io、CXL.cache)のアービトレーション/多重化を実行するために利用され得る。D2Dアダプタ1010によって提供されるエラー検出、エラー訂正、リトライ、及び他の機能が、(例えば、リンク上で実装される速度に基づいて)目標ビットエラー率(BER)要件をサポートするために利用され得る。例えば、ローBERが1e-27未満である場合、CRC及びリトライスキームがD2Dアダプタ1010によって提供され得る。追加的に、D2Dアダプタ1010は、より高いレベルのリンクステートマシン及びリンクブリングアッププロトコル、リモートリンクパートナとのパラメータ交換に関するプロトコルオプションの調整、及び、サポートされるとき、リモートリンクパートナとの電力管理調整を担い得る。例えば、UCIeリンクを使用して結合される2つのリンクパートナデバイスが、それらのそれぞれのD2Dアダプタを利用して、他の例の中でも特に、(例えば、リンクステートマシンにおいて定義される様々なリンク状態を通じた進行を通じて)リンクのトレーニング、及び、リンクの動作中に使用されるパラメータの決定を実行し得る。
【0075】
コンピューティングデバイスの通信ポートが、プロトコル論理ブロック、D2Dアダプタブロック、及び物理層ブロックから構築され得る。プロトコル論理ブロックは、FDIインタフェースを介してD2Dアダプタブロックとインタフェースし得、D2Dアダプタは、RDIインタフェースを使用して物理層ブロックとインタフェースし得る。FDI及びRDIインタフェースの各々は、定義されたインタフェースのそれぞれの信号が通信され得る、物理ピン、トレース、コンダクタ又は他の通信経路を使用して実装され得る。プロトコル論理ブロック(例えば1015)、D2Dアダプタブロック(例えば1010)、及び物理層ブロック(例えば1015)は、UCIeプロトコルのそれぞれの層を実装し、それらのデバイスがUCIe準拠リンクを確立し、UCIeプロトコルを使用して別のリンクパートナコンピューティングデバイスと通信することを可能にする。
【0076】
UCIeスタックの物理層は、複数の物理層モジュールを通じて実装され、対応するリンクの物理層を形成し得る。モジュールは、(例えば、物理バンプ又はポートのピン上の)メインデータパスを形成し、レーンのグルーピングとして編成される。モジュールは、UCIeのアナログフロントエンド(AFE)の構造設計実装についての分割できない粒度を形成する。モジュールあたりのレーン数は、標準又はアドバンスドパッケージが実装に利用されるかどうかに基づき得る。単一のD2Dアダプタが、(帯域幅スケーリングのために)1又は複数のモジュールとして実装される物理層に結合され得る。UCIeの物理リンク(及び物理層を構成する各モジュール)は、(レーンの第1サブセットから構成される)サイドバンド接続、及び、(物理層のレーンの第2サブセットから構成される)メインバンド接続を含み得る。UCIeモジュール/物理層のメインバンド接続は、UCIeにおけるメインデータパスを提供する。メインバンド接続は、転送クロック、データ有効ピン、及び、モジュールあたりNのデータレーンを含み得る。サイドバンド接続は、パラメータ交換のために使用され、レジスタアクセスは、デバッグ/コンプライアンスのために使用され、及び、リモートパートナとの調整は、リンクトレーニング及び管理のために使用される。サイドバンド接続は、各方向において、転送クロックピン及びデータピンを含み得る。1つの例示的な実装において、転送クロックは、メインデータパス速度に関わらず、800MHzの周波数に(例えば、メインデータパス(メインバンド)速度とは異なる周波数に)固定され得る。いくつかの実装において、UCIeの物理層についてのサイドバンドロジックは、補助電力を使用して電力供給され、サイドバンドロジックを「常時オン」ドメインに配置し得る。各モジュールは、サイドバンドピン/バンプ/レーンのそれ自体のそれぞれのセットを含み得る。
【0077】
図11は、UCIeデバイスの例示的な物理層ブロックを示す簡易ブロックダイアグラム1100である。物理層は、論理物理層(論理PHY)1105、又はPHYロジック、及び、複数の(M個の)サイドバンドレーン1110、及び、複数の(N個の)メインバンドレーン1115を含み得る。上に記載したように、メインバンドレーンは、1又は複数のフォワードクロックレーン1120、複数のデータレーン1125、及び有効レーン1130を含み得る。論理PHY1105は、リンクについての他の機能の中でも特に、リンクトレーニング、レーン修復、レーン反転、スクランブリング/デスクランブリング、サイドバンドトレーニング、及び転送を実行し得る。物理層は、(例えば、別個のハードウェア又はIPブロック上に実装される)D2Dアダプタに、RDIインタフェース1025を介して結合され得る。
【0078】
図12A~12Cを参照すると、例示的なUCIeプロトコルスタックを示す簡易ブロックダイアグラム1200a~cが示され、ここで、異なる数のPHYモジュールが、UCIeプロトコルスタックのそれぞれの物理層を実装するために利用される。一例において、4個のサイドバンドレーン1110及び64個のデータレーン1125を各々提供するために、PHYモジュールが定義され得る。図12Aにおいて、ポートの物理層を実装するD2Dアダプタ1010に接続するために単一モジュール1205が使用される例示的な実装が示される。図12Bは別の例示的な実装を示し、ここで、2つのモジュール1205a~bが、物理層を実装するために利用される。各モジュール1205a-bは、それ自体の論理PHY(例えば、1105a、b)、サイドバンドレーンのセット(例えば、1110a、b)、及びメインバンドレーンのセット(例えば、1115a、b)を有する。2個のモジュール1205a~bの使用は、図12Aなどのように、単一モジュールのみを使用する実装と比較して、リンクの帯域幅を実質的に2倍にする。2個のモジュール1205a~bは、単一のD2Dアダプタ1010に接続する。なお別の例において、図12Cに示されるように、(ポートについての物理層を実装するための他の数の定義されたPHYモジュールを含み得る)他の例の中でも特に、(例えば、4個のモジュールの各々において4個のx64データレーングルーピングを提供してx320のデータ幅を形成することによって)リンクの帯域幅を更にスケーリングするために4個のモジュール1205a~dを使用して構築された物理層実装が示されている。
【0079】
上によれば、UCIeは、異なるデータレート、幅、バンプピッチ、及びチャネルリーチをサポートし、可能な限りもっとも広い相互運用性を確実にし得る。設計及びバリデーションを容易にするためにサイドバンドインタフェースが定義される。PHYモジュールをインターコネクトの構築のユニットとして使用することにより、N個のシングルエンド、単方向、全二重データレーン(例えば、スタンダードパッケージの場合N=16、アドバンスドパッケージの場合N=64)、有効のための1個のシングルエンドレーン、トラッキングのための1個のレーン、方向あたりの差分転送クロック、及び、サイドバンドシグナリング(例えば、シングルエンド、1個の800MHzクロック、及び1個のデータ)のための4つのレーン(例えば、方向あたり2個)を提供する。リンクあたりより高い性能を提供するために、複数のクラスタが集約され得る。
【0080】
上の特徴に加えて、なお追加の特徴をサポートするために、UCIeにおけるアドバンスドパッケージオプションが提供され得る。例えば、アドバンスドパッケージは、ペア(例えば、修復目的のクロック、有効、サイドバンドなどのための余分なレーン)を通じて障害レーンを処理するために、スペアレーンをサポートし得、ここで、スタンダードパッケージは、障害を処理するために、幅縮小をサポートする。スタンダードパッケージ設計のダイは、スタンダードパッケージ上の任意の他の設計と相互運用することが予測され得る。同様に、アドバンスドパッケージ設計のダイは、(例えば、更には25u~55uの広範なバンプピッチ内の)アドバンスドパッケージのために設計された任意の他のダイと相互運用することが予測され得る。概して、スタンダードパッケージ(2D)は費用効果の高い性能に使用される。アドバンスドパッケージは、電力効率の高い性能に使用され得る。下の表1は、例示的なUCIe実装についての例示的な主要性能目標を要約する。
【表1】
表1:例示的な主要性能インジケータ(KPI)
他の例の中でも特に、ダイエッジ帯域幅密度は、45μm(アドバンスドパッケージ)及び110μm(スタンダードパッケージ)バンプピッチを有し、エネルギー効率は、すべてのPHY関連回路(例えば、送信機、受信機、位相同期ループ(PLL))を含み、レイテンシは、D2Dアダプタ、及び、送信機及び受信機上の物理層のレイテンシを含むと想定する。
【0081】
上で紹介したように、リタイマは、オフパッケージリンク(例えば、電気又は光ケーブル通信媒体)を使用して、パッケージを超えてUCIe接続性を拡張し、例えばパッケージをラック/ポッドレベルで接続するために使用され得る。UCIeリタイマは、そのローカルパッケージ上に接続するダイに対するUCIeインタフェースを実装して、UCIeプロトコルに従って異なるパッケージ上の2つのダイ間でフリットが送達されることを確実にする。UCIeはまた、光などのリーチが長い代わりの媒体を通じて、PCIe又はCXLなど、ロード-ストアプロトコルを含む任意のプロトコルをトランスポートするために使用され得る。例えば、1つの例示的な実装として、ラック/ポッドレベルのディスアグリゲーションが、CXL2.0(又は、後の)プロトコルを使用して実装され得る。この例において、ラックレベルでは、異なるコンピュートシャーシからの(例えば仮想階層における)複数のコンピュートノードが、複数のCXLアクセラレータに接続するCXLスイッチ、及び/又は、1又は複数の別個のドロワに配置され得るタイプ3メモリデバイスに接続する。この例において、各ホストは、コンピュートドロワーとして実装され得、各コンピュートドロワーは、UCIeベースの光タイルを通じてCXLプロトコルを実行する光接続を使用してスイッチに接続する。UCIeリンクがオフパッケージ接続を可能にする多くの他の例示的な実装の中でも特に、スイッチはまた、コパッケージ光学系を有し得、ここで、光タイルが、UCIeを使用して、メインスイッチダイに接続し、一方、PCIe/CXL物理インターコネクトは、アクセラレータ/メモリデバイスに接続するために使用される。
【0082】
図13を参照すると、UCIeリンク1305によって接続される2つのパッケージ(例えば、1310、1315)を含む例示的なシステムを示す簡易ブロックダイアグラム1300が示される。上で紹介したように、UCIeリタイマは、異なるタイプのオフパッケージインターコネクト1305が、異なるパッケージ(例えば、1310、1315)上の2つのUCIeダイ間でチャネルリーチを拡張することを可能にするために使用され得る。それぞれのUCIeリタイマ(例えば、1320、1325)が、各パッケージにおいて提供され、オフパッケージUCIeリンク(例えば1305)を可能にし得る。更に、各パッケージのUCIeリタイマ1320、1325が、それぞれのUCIeリンク(例えば、1340、1345)によって、そのパッケージ上のダイ(例えば、1330、1335)のうちの1又は複数に結合され得る。ダイ(例えば、1330、1335)は、リタイマを通じて促進される、オフパッケージリンク1305を通じた他のパッケージ上の他のダイとの通信のために、データを対応するリタイマ(例えば、1320、1325)に転送し得る。リタイマ(例えば1320)をオンパッケージダイ(例えば1330)に結合するオンパッケージリンク(例えば1340)と比べて、オフパッケージリンクは、物理長において、大幅に長いことがあり得る。オフパッケージリンク1305を使用してリタイマ(例えば1320)が接続されるオフパッケージリタイマ(例えば1325)は「リモートリタイマパートナ」と称され得る。
【0083】
例示的なシステムにおける各UCIeリタイマ(例えば、1320、1325)の担当は、オフパッケージインターコネクト1305を通じたフリットの信頼性の高いトランスポートを含み得る。一例において、外部インターコネクトが、それがトランスポートするプロトコルに対応する仕様の基礎エラーモデル(例えば、BER及びエラー相関)に準拠する限り、リタイマ(例えば、1320、1325)は、それが保持するプロトコル(例えば、PCIe又はCXL)の基礎の仕様によってネイティブに定義される転送エラー訂正(FEC)及びエラー検出(例えば、巡回冗長検査(CRC))の使用を実装及びサポートするよう構成されている。そのような例において、UCIeリンクは、ローモードを利用して、それがトランスポートするプロトコル(例えば、PCIe又はCXLフリット)のネイティブビットをトンネリングするよう構成され得る。このシナリオにおいて、基礎のラウンドトリップレイテンシを満たすために、キューサイズ(例えば、プロトコル層バッファ)がUCIeダイ上で調整される。別の例において、リタイマは、定義されたFEC、CRC、及びリトライ機能をサポート及び提供するよう構成され得、オフパッケージインターコネクトのBERを処理する。この場合、フリットは、3つの独立のリンクを経る;各UCIeリタイマは、パッケージ内のUCIeダイとのリトライのために独立のAck/Nakを、リモートリタイマパートナとのリトライのための別個の独立のAck/Nakを実行する。別の例として、リタイマは、ネイティブのプロトコル(例えばPCIe又はCXL)の定義されたFECをそれ自体と置換することによって、又は、ネイティブのプロトコルの定義されたFECに加えてそのFECを追加することによって、それ自体のFECを提供し得るが、基礎プロトコルのビルトインCRC及びリプレイ機構を利用する。この例において、キューサイズ(例えば、プロトコル層バッファ、リトライバッファなど)は、基礎のラウンドトリップレイテンシを満たすために、UCIeダイ上で調整される必要がある。
【0084】
UCIeリタイマはまた、そのリモートリタイマパートナとのリンク層及びプロトコル層パラメータの解決を担い、UCIeダイのエンドツーエンド(E2E)間の相互運用性を確実にし得る。例えば、リタイマ(例えば1320、1325)は、同一のリンク幅、速度、プロトコル(任意の関連するプロトコル固有パラメータを含む)、及びフリットフォーマットを両方のパッケージ(例えば、1310、1315)に対して施行することが許可される。オフパッケージインターコネクトにわたるパラメータ交換についてのメッセージ転送を含む、解決の特定の機構は、リタイマについて実装固有であり得、それらは、両方のパッケージ(例えば、1310、1315)上のUCIeダイ(例えば、1330、1335)機能と共にそれら自体の機能を考慮して、一貫した動作モードを確実にする必要がある。しかしながら、UCIeリンク(例えば、1340、1345)のロバスト性のために、外部インターコネクト1305がリモートリタイマパートナとのリンクアップ又はパラメータ解決のために、より長い時間を必要とする場合に、不必要なタイムアウトを回避するために、潜在的に遅延し得る、関連するサイドバンドメッセージに対して「ストール」応答が定義され得る。リタイマは、(例えば、仕様定義規則に従って)「ストール」応答を用いて応答し得、そのリモートリタイマパートナを待機又はネゴシエートしながらの、そのような不必要なタイムアウトを回避し得る。UCIeリンクが無限にストールしないことを確実にすることはリタイマの担当である。別の特徴として、UCIeリタイマ(例えば、1320、1325)は、他の例示的な考慮事項の中でも特に、D2Dアダプタ(例えば、アダプタリンクステートマシン(LSM))について定義されるリンク状態、又は、リモートリタイマパートナとのRDI状態を管理することを担当し得、E2E動作を訂正することを確実にする。
【0085】
リタイマは、追加的に、そのオンパッケージUCIeダイ(例えば、1330、1335)から送信されたデータを管理するためにフロー制御及びバックプレッシャー管理ロジックを提供し得る。例えば、UCIeダイからUCIeリタイマへ送信されるデータは、クレジットを使用してフロー制御され得る。このリンク(例えば、1340、1345)を管理するために使用されるクレジットは、送信されるデータの基礎プロトコルのために定義された任意のクレジットプロトコル(例えば、PCIeにおけるPRH、PRDクレジット)に追加され得る。UCIeダイ間(D2D)クレジットは、2つのUCIeリタイマ間のフロー制御のために定義され得、UCIeリタイマへ送信される任意のデータは、任意の他の依存性なしで、最終的にリモートUCIeダイによって消費される。UCIeリタイマ(例えば、1320、1325)は、そのパッケージ内でUCIeダイ(例えば、1330、1335)から受信するフリットについて、受信機(Rx)バッファ(例えば、1350、1355)を実装し得る。受信機バッファクレジットは、D2Dアダプタについての初回パラメータ交換中にUCIeダイへアドバタイズされ、UCIeダイは、送信のためのクレジットを有しない場合、任意のデータをUCIeリタイマへ送信しないことが必要とされ得る。1つの例示的な実装において、1つのクレジットは、256Bのデータ(任意のFEC、CRCなどを含む)に対応する。1つの例示的な実装において、クレジットリターンがオーバロードされ、又は、有効フレーム信号にエンコードされ得る。RDI状態がアクティブから移行するときは常に、UCIeダイにおけるクレジットカウンタは、初回アドバタイズ値に再割り当てされ得る。UCIeリタイマは、アクティブ状態に再び入る前に、その受信機バッファにおいて、データを(適宜)ドレイン又はダンプし得る。いくつかの例において、UCIeリタイマからUCIeダイへ送信されるデータは、D2Dアダプタレベルでフロー制御されないことがあり得る。UCIeリタイマは代わりに、他の例示的な実装の中でも特に、必要な場合、他のUCIeリタイマを用いた独立のフロー制御を有し得る。
【0086】
UCIeの目標は、将来の革新的な解決手段のための拡張可能な方式でインタフェースをなお定義しながら、PCIe及びCXLなど、人気のあるインターコネクトプロトコルに対して行われた前のソフトウェア投資のすべてを活用することである。このために、UCIeのプロトコル層のソフトウェアビューは、ポートのプロトコル層ブロックによってサポートされる基礎プロトコルに関連付けられたものと一貫したままであるよう構成され得る。例えば、CXLプロトコルをサポート可能なプロトコル層を有するホスト下流UCIeポートは、ソフトウェアからは、CXL DVSEC機能及び関連するPCIe機能を有するルートポートとして見え得る。同様に、PCIeプロトコルのみをサポートすることが可能なUCIeのホスト下流ポートは、ソフトウェアからは、関連PCIe機能のみを有するルートポートとして見える。同様に、他の例の中でも特に、それぞれの基礎プロトコル仕様において定義されるCXL/PCIeレガシーアドバンスド機能のすべては、UCIeホスト及びデバイスにも適用し得る。ストリーミングプロトコルの場合、ホスト側又はデバイス側のソフトウェアのビューは、実装固有であり得る。なぜなら、ストリーミングモードにおいて使用される基礎プロトコルは、それ自体で実装固有であり得るからである。いくつかの実装において、ストリーミングの解決手段は、CXL及びPCIeをサポートするために既に配置されているソフトウェアフックを活用し得る。1つの例示的な実装において、UCIeルートポートに接続する上流ポートは、PCIエクスプレスエンドポイント、PCIエクスプレススイッチ、CXL2.0、又は、上の準拠エンドポイントデバイス、又はCXLスイッチであり得る。これにより、対応するUCIeの解決手段が、(例えば、PCIe又はCXLをサポートする)UCIe以前のソフトウェアとの完全な後方互換性を有することを可能にする。
【0087】
UCIeアウェアのソフトウェアを可能にするために、UCIeスタックの異なる層の間(例えば、プロトコル層、D2Dアダプタ、及びPHYの間)の公式の機能分割が定義され、ソフトウェアは、層ごとに各層の機能に対する可視性を有する。更に、リンクブリングアップ規則及びパラメータネゴシエーションが形式化され、層インタフェース(例えば、RDI及びFDI)及びPHYモジュールにおいて提供されるサイドバンドメッセージチャネルを利用する。リンクブリングアップ規則及びパラメータネゴシエーションの形式化はサイドバンドメッセージを使用する。すべてのリンク管理ネゴシエーションメッセージ及びトランザクションに対してサイドバンドチャネルを専用とすることによって、メインバンドがレイテンシに最適化されることを可能にする。サイドバンドリンクは、リンクトレーニングのためのバックチャネル、及び、リンクパートナのレジスタのサイドバンドアクセスのためのインタフェースを提供する。それはまた、リモートリンクパートナとのリンク管理パケット及びパラメータ交換に使用される。同一のプロトコルが、FDI及びRDIを通じたローカルダイサイドバンドアクセスのためにも使用され得る。PHYブロックは、UCIeリンクを介するサイドバンドパケットのフレーム及びトランスポートを担い得る。リモートダイに対するダイレクトサイドバンドアクセスは、D2Dアダプタ(例えば、1010)又はPHY層ブロック(例えば、1005)から生じ得る。D2Dアダプタは、フレーム及びトランスポートのために、RDIを介して、リモートダイサイドバンドアクセスをPHYブロックへ転送する。そのようなアクセスは、レジスタアクセスリクエスト、完了、又は他のメッセージを含み得る。物理層によって実行されるリンクトレーニングアクティビティは、リンクトレーニングの結果を記録する、D2Dアダプタによって可読である物理層レジスタを通じてD2Dアダプタに渡され得る。D2Dアダプタは、リンクトレーニング後のこの情報を利用して、どのフリットフォーマット/機能をアドバタイズするか決定し得る。層状ネゴシエーションフローは、リンク層フリットフォーマット最適化をプロトコル特徴ネゴシエーションから分離する。これにより、他の例示的な利点の中でも特に、このフローを多種多様なプロトコルに拡張することを容易にする。
【0088】
レジスタは、UCIeリンクのブリングアップ及びトレーニング中に使用するためのD2Dアダプタ及びPHY層において定義され得る。そのようなレジスタは、機能レジスタ(例えばリードオンリ)、制御レジスタ(例えばリードライト)、及びステータスレジスタを含み得る。そのようなレジスタは、UCIeポートのソフトウェアアクセス及び制御を可能にするためにも利用され得る。1つの例示的な実装において、独立のレジスタ(例えば、専用ベンダ固有拡張機能(DVSEC)レジスタ)が、D2Dアダプタ及びポートのPHYについて定義され得る(ソフトウェアは、これらの独立のレジスタの存在を使用して、デバイスをUCIeとして識別することが許可される)。例えば、PCIe DVSEC構造が利用され得る。
【0089】
図14を参照すると、UCIeリンクを操作するために使用される基本機能レジスタセット1400の例示的な実装を示す、高レベルDVSEC構造の表現1400が示される。ソフトウェアは、このDVSECの存在を使用して、UCIeデバイス及び他のデバイス(例えば、標準PCIe又はCXLデバイス、UCIeルートポート、及び標準PCIe又はCXLルートポートなど)を区別し得る。図14の例において、例えば、機能レジスタ1405、制御レジスタ1410、及びステータスレジスタ1415がレジスタのセット内に含まれ得る。
【0090】
D2Dアダプタ機能レジスタは、D2Dアダプタの機能を反映するために利用され得、リンクパートナ(例えば、リンクパートナデバイスのD2Dアダプタ)との間でプロトコル及びパラメータをアドバタイズ及びネゴシエートするために使用される。D2D機能レジスタ内の情報は、他の例の中でも特に、ローモードがサポートされるかどうか、最適化モード(スペアレーンを使用)がサポートされるかどうか、CXLがサポートされるかどうか、PCIeがサポートされるかどうか、リトライがサポートされるかどうか、D2Dアダプタが複数のプロトコル層ブロックをサポートするよう構成されているかどうか、D2Dアダプタがパリティ又は他のエラー検出/訂正スキームをサポートするかどうか、D2Dアダプタがストリーミングモード又はプロトコルをサポートするかどうかを含み得る。PHY機能レジスタは、他の例示的な情報の中でも特に、PHYに含まれるPHYモジュールの数、使用されるバイトマッピング、リンクが終了されているか又は終了されていないか、PHYによって可能となるI/Oリンク速度など、他の情報を含み得る。
【0091】
概して、機能レジスタは、関連付けられたD2Dアダプタ又はPHY層ブロックの機能を示すために、ポピュレート前のリードオンリレジスタとして実装され得る。ソフトウェアは、機能レジスタを読み取り、この情報を利用して、これらの機能が適用される(有効化される)べきか、又は無効にされるべきかどうかを決定し得る。対応する機能の有効化又は無効化は、対応する制御レジスタにおいて制御される、ソフトウェア又はハードウェア実装によってセットされ得る。D2Dアダプタ及びPHYは、制御レジスタにおける値セットを利用して、リンクの最終的な特性及び機能の(例えば、リモートリンクパートナ及び/又はリタイマとの)ネゴシエートをどのように進行するかを決定し得る。ステータスレジスタは、リモートリンクパートナとのネゴシエーションの結果を記録及び反映するためにセットするために利用され得る。1つの例示的な実装において、他の例示的な実装の中でも特に、UCIe D2Dアダプタにおいて実装されるPCIe/CXL機能は、独立に制御されないが、CXL仕様において定義される既存のDVSECレジスタを使用する制御を活用する。
【0092】
上に記載されるように、プロトコル層ブロック、D2Dアダプタ、及び/又はPHYブロックは、(例えば、RDI又はFDIインタフェースの)ローカルサイドバンドチャネルを利用して、ローカルレジスタにアクセスし得る。プロトコル層ブロックは、サイドバンドメールボックス機構を使用して、リモートダイレジスタへの間接アクセスを有する。いくつかの実装において、メールボックスレジスタ(例えば、1420a~f)はD2Dアダプタに存在し、FDIを通じてメールボックスレジスタのための対応するアクセストリガを受信するときにリモートダイレジスタアクセスリクエストを開始するのはD2Dアダプタの担当である。マルチプロトコルスタックの場合、D2Dアダプタは、どのプロトコルスタックが元の要求を送信したかを追跡し、完了をFDI上で適切なプロトコルスタックへ再び送付する。プロトコル層は、リモートダイレジスタへの間接アクセス、及び、ローカルダイレジスタへの直接アクセスのみが可能であり得るので、レジスタアクセスリクエスト及び完了は、FDIインタフェース上の特定の同時数(例えば1)に限定され得る。いくつかの実装において、応答を予測するサイドバンド要求は、定義されたタイムアウト(例えば、8msのタイムアウト)の対象となり得る。そのような実装において、「ストール」エンコーディングが、リタイマのための関連パケットに提供され得、要求に応答するためにリタイマが余分な時間を必要とする場合にタイムアウトを防止する。タイムアウトを防止するためにストールするとき、4msに1回、対応するストール応答を送信することはリタイマの担当である。リタイマはまた、無限にストールしないことを確実にし得、リクエスタのストールを必要とする解決を完了するための合理的な試行の後に、リンクダウンのイベントをエスカレートする。リクエスタが「ストール」エンコーディングを有する応答を受信する場合、タイムアウトカウンタをリセットする。
【0093】
いくつかの事例において、レジスタは、異なる層の間で断片化され得、例えば、所与のレジスタの特定のビットはプロトコル層ブロックに物理的に存在し、他のビットはD2Dアダプタに存在し、他のビットはPHYブロックに存在する。UCIeは、これらのレジスタのための階層デコードを行い得る。断片化されたレジスタでは、ビットが所与の層に物理的に存在しない場合、そのビットを、0に結び付けられたリードオンリとして実装し得る。そのような事例において、読み取りは、その層からのそれらのビットについて0を返し、書き込みは、それらのビットに効果を及ぼさない。例として、読み取りについて、プロトコル層は、FDI上でこれらの要求をD2Dアダプタに転送し、プロトコル層は、D2Dアダプタによって応答されたデータを、ソフトウェアに応答する前のそのローカルレジスタとORする。他の例の中でも特に、そのレジスタの任意のビットが、プロトコル層に応答する前にPHY層に存在する場合、D2Dアダプタは、同じことを行い得る。
【0094】
表1~5は、UCIeポートの実装において利用され得るレジスタの例示的な実装を表す。例えば、表1は、UCIeリンクの基本特性を発見するためにソフトウェアによって利用されるUCIeリンク機能レジスタの例示的な実装を示す。
【表2】
表1:例示的なUCIeリンク機能レジスタ
【0095】
表2は、リンクのための制御ビットがセットされるUCIeリンク制御レジスタの例示的な実装を示す。
【表3】
表2:例示的なUCIeリンク制御レジスタ
【0096】
表3は、(例えば、リンクパートナとのネゴシエーション中に、及びその後に)リンクのためのステータスビットがセットされる、UCIeリンクステータスレジスタの例示的な実装を示す。
【表4】
表3:例示的なUCIeリンクステータスレジスタ
【0097】
表4は、様々な最適化モードのサポートの識別を含むための、UCIeリンク機能レジスタの別の例示的な実装を示す。
【表5】
表4:例示的なUCIeリンク機能レジスタ
【0098】
表5は、表4に表される例示的なUCIeリンク機能レジスタに対応するUCIe PHYステータスレジスタの別の例示的な実装を示す。
【表6】
表6:例示的なUCIeリンクPHYステータスレジスタ
【0099】
表7は、PHY機能レジスタの例を示す。いくつかの実装において、PHY層機能レジスタは、(別個のレジスタがモジュールごとではなく、PHYを構成するモジュールのセットに提供されるという点で)グローバルであり得る。
【表7】
表7:例示的なPHY機能レジスタ
【0100】
表8は、PHY制御レジスタの例を示す。いくつかの実装において、PHY層制御レジスタは、PHYについてグローバルであり得る。
【表8】
表8:例示的なPHY制御レジスタ
【0101】
表9は、PHYステータスレジスタの別の例を示す。PHYブロックによるリンクのトレーニング後のリンクの特性を理解し、これらのリンクトレーニングの結果に基づいて、アドバタイズする機能をリンクパートナのD2Dアダプタに調整するために、ステータスレジスタは、D2Dアダプタによってアクセスされ読み取られ得る。いくつかの実装において、PHY層ステータスレジスタはPHYについてグローバルであり得る。
【表9】
表9:例示的なPHYステータスレジスタ
【0102】
D2Dアダプタ及び/又はPHY層ブロックについてソフトウェアによって利用されるレジスタは、それぞれのブロックのローカルメモリにおいてホストされるレジスタを含み得、また、MMIOマッピングレジスタブロックは、仕様の第1バージョンにおいて定義される。システムにおけるUCIeアウェアのファームウェア及びソフトウェアは、これらのレジスタを使用してUCIeリンクの存在及び機能を発見し得る。表10は、1つの例示的な実装において、そのような発見がどのように生じ得るかをまとめている。
【表10】
表10:例示的なソフトウェアアクセススキーム
【0103】
デバイスについてのそれぞれのレジスタを格納するために、メモリの領域(例えばCIRB領域)が、デバイス上の静的位置において定義され得る。構成空間レジスタは、構成読み取り及び構成書き込みを使用してアクセスされ得る。メモリマッピング領域におけるレジスタブロックは、標準メモリ読み取り及びメモリ書き込みを使用してアクセスされ得る。いくつかの実装において、リタイマレジスタは、ホストソフトウェアから直接アクセス可能でなく、サイドバンドインタフェースを通じて、ウィンドウ機構を介してアクセスされる。デバッグ及びランタイムリンク健全性モニタリングのために、ホストソフトウェアはまた、他の例示的な実装の中でも特に、サイドバンドインタフェース(eを使用して(例えば、同一のウィンドウ機構を使用して)、任意のパートナダイにおけるUCIe関連レジスタにアクセスし得る。
【0104】
UCIeにおけるパラメータ交換及びネゴシエーションは、以下で論じられるように、D2Dアダプタ及びPHYブロックの間の機能をモジュール化し得る。例えば、図15Aは、UCIe D2Dアダプタブロック1010及びPHYブロック1005(1又は複数のPHYモジュールを含む)を利用して、例示的なパラメータ交換及びネゴシエーションを示す簡易ブロックダイアグラムを示す。PHY層ブロック1005及びD2Dアダプタ回路ブロック1010が異なるIPベンダによって開発されるがUCIeの観点からなお相互運用することも可能にする層状ネゴシエーションフローが使用され得る。1つの例示的な実装において、PHY層1005は、リンクのためにリンクトレーニングを実行する。ソフトウェアは、(例えば、値をD2Dアダプタのレジスタ(例えば、リンク制御レジスタ)に書き込むことによって)リンクブリングアップ及びリンクトレーニングを開始し得、これは次に、RDIを通じて信号をPHY層へ送信し、リンクトレーニング動作をトリガし得る。PHY層1005は、D2Dアダプタ1010のレジスタ(例えば1505)を読み取り1510、D2Dアダプタの機能を判定し、リンクトレーニング1515中に、アドバタイズする最大速度などの、PHYブロック1005がアドバタイズし得る機能を判定し得る。一例において、PHYブロックが、リトライフローをサポートしないD2Dアダプタに接続され得る。結果として、他の例示的な要素及び実装の中でも特に、PHYブロックは、リンクがリトライ無しで高い信頼性で機能するのにBERが十分低い速度をアドバタイズすることだけを決定し得る。リンクトレーニング中、PHYは、モジュールのそれぞれのサイドバンドレーンを利用して、リモートリンクパートナと通信し、リンクのパラメータをネゴシエートすることによって、モジュールごとにリンクをトレーニングし得る。1つの例示的な実装において、リンクトレーニング1515は、クロックポイント試験への送信機(TX)データ、クロックアイ幅スイープへのTXデータ、クロックポイントトレーニングへの受信機(RX)データ、及び、クロックアイ幅スイープへのRXデータを含み得る。リンクトレーニングを調整するためのパラメータ及びメッセージは、サイドバンドレーンを通じて送信され得、様々なリンクトレーニングステップ中に、試験パターンはデータレーン上で送信される。
【0105】
引き続き図15Aの例において、リンクトレーニング1515が完了すると、D2Dアダプタ1010は、機能をリンクパートナD2Dアダプタにアドバタイズする前に、PHY層ブロック1005のレジスタ(例えば1520)を読み取り1525、リンクトレーニング1515の結果を識別し、リンクトレーニングの結果によって影響を受ける任意の機能を調整して、PHY層1005と一貫させる。例えば、スペアレーンが、リンクトレーニング中に利用可能でないと判定される場合、他の例の中でも特に、D2Dアダプタは、そのようなスペアレーンの使用を必要とし得る最適化モードについてのサポートをアドバタイズしないことがあり得る。
【0106】
プロトコル及びフリットフォーマットネゴシエーション1530及びプロトコル特定のパラメータ1535は、リンクトレーニングに続いて実行され得、D2Dアダプタは、リンクのトレーニングサイドバンドチャネルを通じてリンクパートナのD2Dアダプタと通信する。UCIeにおいて、パラメータ交換及びプロトコルネゴシエーションは、D2Dアダプタ及びPHY層の間でモジュール化され得るだけでなく、マルチフェーズ方式でも実行され得る。これにより、アーキテクチャが、リンク/フリット最適化をプロトコルの特徴から分離することを可能にする。CXLなどの現代の他のプロトコルにおいて、リンク及びフリットフォーマットネゴシエーション及び最適化は、1つのネゴシエーション内に混ざり、これは、他の例示的な問題の中でも特に、容易なスケーリングを可能にしない。UCIeにおいて、特定の基礎プロトコルと関連付けられたDVSECが存在すること又は存在しないことを識別することなどによって、プロトコルのサポートが第1に決定され得、ここで、そのようなレジスタの存在は、そのプロトコルについてのサポートを示唆する。例えば、CXLの場合、Flexbus Port DVSECが存在すること又は存在しないことは、CXLがD2Dアダプタにおけるサポートされる機能であるかどうかを決定する。プロトコル及びリンク/フリット機能がリモートリンクパートナとネゴシエートされると、ネゴシエーションの第2フェーズが実行され、他の例の中でも特に、プロトコルサポートの詳細を決定する(例えば、CXLの場合、この第2フェーズは、CXL.io又はCXL.cache又はCXL.mem又はそれらの組み合わせがサポートされるかどうかを決定する)。
【0107】
1つの説明用の例として、PHY層ブロックによるリンクのトレーニング後、トレーニング中に構成されたリンクパラメータは、(例えば、UCIe物理層DVSEC機能において定義される)PHYステータスレジスタに記録され得る。D2Dアダプタは、PHYステータスレジスタを読み取り、例えば、リンクがD2Dアダプタによってサポートされる1又は複数の最適化モードをサポートし得るかどうかを識別し得る。例えば、D2Dアダプタは、PHYステータスレジスタを読み取り、(例えば、対応するレジスタビット名称が「Three_Spare_Lanes_Ready」及び「Two_Spare_Lanes_Ready」を読み取ることによって)スペアレーンがレーン修復フロー後に利用可能であるかどうかを判定し得、最適化モードがD2DアダプタによってリンクパートナD2Dアダプタにアドバタイズされることを可能にするために必要なスペアレーンが利用可能であるかどうかを判定する。十分なスペアレーンが利用可能でない場合、D2Dアダプタは、対応する最適化モードについてのサポートをリモートリンクパートナにアドバタイズしない。一例において、最適化モードフリットフォーマットがN個のスペアレーンを必要とする場合、D2Dアダプタは、そのフォーマットについてのサポートをアドバタイズする前に、リンクトレーニングの結果を読み取ることによって、少なくともN+1個のスペアレーンを確実にする。(最適化モードに使用されるN個のレーンの上の)任意の余分なレーンが、現場修復のためにプロビジョニングされ、部品のライフサイクルを通じて、最適化モードが失敗しない確率を増加させる。別の例として、BER閾値が通常のリンク動作のためのリトライサポートを必要とすることをリンクトレーニングが判定した場合、PHYステータスレジスタは、D2Dアダプタに通知するために(例えば、レジスタビット「Adapter_Retry_Needed」から)読み取られ得る。このビットがセットされ、かつ、D2Dアダプタがリトライをサポート可能である場合、D2Dアダプタは、パラメータ交換中に、(例えば、トレーニングリンクを通じてサイドバンドメッセージを使用して)この機能をリモートリンクパートナにアドバタイズする。1つの例示的な実装において、アダプタリトライが必要である場合、他の例示的な実装の中でも特に、いくつかの最適化モード(例えば、2レーン最適化モード)が無効化され得る。
【0108】
図15Bを参照すると、一般的なパラメータ交換フローを示すダイアグラム1500bが示される。UCIeリンク(チャネル)がブリングアップされトレーニングされたとき、第1D2Dアダプタ1010は、リンクパートナPHY1545の受信機で受信されるリンクパートナのD2Dアダプタ1550に渡されるリンクのサイドバンドチャネル1540を通じて、その対応するPHY1005を介して、メッセージ(例えば、{AdvCap.Adapter}サイドバンドメッセージ)を通信し、(D2Dアダプタ1010の機能及びリンクトレーニングの結果の両方に基づいて)第1エンドポイントの機能1555をアドバタイズする。同様に、リンクパートナD2Dアダプタ1550は、リンクのサイドバンドチャネル1540を通じて、リターンサイドバンドメッセージを介して、その機能をアドバタイズする1560。いくつかの実装において、リンクパートナD2Dアダプタ1550は、受信する機能メッセージ1555の内容に基づいてアドバタイズする機能を適合し、他のD2Dアダプタ1010によってサポートされるものとアドバタイズされない機能を省略する。例として、PCIe又はCXLプロトコルサポートがアドバタイズされる場合、(例えば、リンクパートナデバイス上の上流ポートの)リンクパートナD2Dアダプタ1550は、(例えば、デバイスの下流ポートの)他のD2Dアダプタ1010からの第1メッセージ1555を待機し、メッセージ1555においてアドバタイズされる機能をレビューし、次に、アドバタイズされた機能のそれ自体のサイドバンドメッセージ1560を送信して、それがPCIe又はCXLもサポートするかどうかをアドバタイズする。D2Dアダプタ1010がリターン機能アドバタイズメントメッセージ1560を受信すると、どの機能が両方のD2Dアダプタによって共同でサポートされるかを決定し、ファイナライズされた構成サイドバンドメッセージ1565(例えば、{FinCap.Adapter}サイドバンドメッセージ)を用いて応答してパラメータ交換をファイナライズし、各D2Dアダプタが構成をファイナライズすること、及び、この情報をプロトコル層ブロックに通信して、リンク上で使用されるフリットフォーマットを確立することを可能にする。
【0109】
図15Cを参照すると、2つのリンクパートナダイの各々をそれぞれのPHYブロック(例えば、1005、1545)、D2Dアダプタ(例えば、1010、1550)、及び、プロトコル層ブロック(例えば、1015、1592)に結合するダイ間リンク1590の例示的なリンク初期化の高レベルステージを要約する別のダイアグラム1500cが示される。リンクのメインバンドチャネル上でプロトコルフリット転送が開始し得る前に、4つのステージが完了され得る。この例において、第1ステージ、ステージ0は、リンク初期化に備えてダイ及びそのポートをリセットする。ダイリセットフロー1570、1575は、ダイ固有であり、各ダイについて独立に生じる。図15Cは、異なるサイズにおけるフロー1570、1575を示し、異なるダイは、ステージ0のそれぞれの実装を完了するために、異なる量の時間をかけ得ることを示す。ステージ1(1580)は、サイドバンド検出及びトレーニングを伴う。ステージ2(1585)は、メインバンドトレーニング及び修復を伴う。ステージ3(1595)は、D2Dアダプタ(例えば、1010、1550)の間のパラメータ交換を伴い、リンク上で使用されるプロトコル及びフリットフォーマットをネゴシエートし得る。
【0110】
ステージ3(1595)は、D2D初期化とみなされ得る。ステージ1及び2が完了するとき、RDIステートマシンがアクティブ状態に移行する。パラメータ交換が正常に完了すると、D2Dアダプタは、FDI上で接続されるプロトコル層ブロックに結果を反映し、FDIブリングアップフローの実行に移行する。FDIがアクティブ状態になると、リンク初期化のステージ3を完了し、プロトコルフリット転送が開始し得る。同一のUCIeリンクを通じて、動作についてネゴシエートされる2つのプロトコルスタックがある場合、FDIブリングアップフローが各プロトコルスタックについて独立に実行される。いくつかの実装において、FDI上のデータ幅は、UCIeスタックの動作の周波数、及び、(レーンの数、及び、レーンが動作する速度に依存する)UCIe物理リンクを越えて転送される総帯域幅の関数である。RDI上のデータ幅は、D2Dアダプタによって制御されるモジュールあたりの物理レーンあたり少なくとも1バイトに固定される。例えば、RDIの例示的構成におけるフリットフォーマットは、UCIeのPHY上の(例えば、アドバンスドパッケージ構成の)64レーンモジュールにマッピングされ得る。
【0111】
上で紹介されたように、各D2Dアダプタ(例えば、1010、1550)は、PHY層トレーニングの結果を判定し(例えば、1580、1585)、D2Dアダプタがその機能のすべてを利用する(及びアドバタイズする)ことを防止するために(何らかの限定がある場合)何が存在しているか、及び、D2Dアダプタがその様々なリンク信頼性特徴(例えば、リトライ、CRC、FECなど)を実装することを必要とし得るリンクの特性を判定する。例えば、PHYトレーニング結果から、D2Dアダプタは、PHYによってリンクトレーニング中に決定された所与のリンク速度及び構成についての他の信頼性特徴をリトライ又は利用するかどうか、及び/又は、いつするかを判定し得る。D2Dアダプタがリトライをサポート可能である場合、それは、パラメータ交換中に、この機能をリモートリンクパートナにアドバタイズする。UCIeリタイマについては、D2Dアダプタはまた、リタイマ受信機バッファのためにアドバタイズされるクレジットなど、使用されるフロー制御機構を判定し得る(例えば、ここで、各クレジットがメインバンドデータストレージの256Bに対応する)。
【0112】
様々な機能は、パラメータ交換中にリンクパートナ間でネゴシエートされる。機能(有効化される場合)は、サイドバンドメッセージを使用してリモートリンクパートナに通信される。例えば、機能は、D2Dアダプタが、機能アドバタイズメント(例えば、{AdvCap.Adapter})サイドバンドメッセージにおいて定義される潜在的な機能の1つに対応するフィールドにおいてビット値を1bにセットすることによって「アドバタイズ」される。機能は以下の例を含み得る。
【表11】
表11:パラメータ交換内の例示的な機能
【0113】
パラメータ交換に基づいて構成をファイナライズすることによって、リンクのメインバンド上で使用されるフリットフォーマットに関するD2Dアダプタによる合意の基礎を形成し得る。パラメータ交換は、使用されるプロトコル、及び、使用される特定のフリットフォーマットをネゴシエート及び決定するために利用され得る(例えば、ここで、プロトコル(例えば、CXL)は、プロトコルの下で複数の異なるフリットフォーマットを定義する)。フリットフォーマット及びプロトコルパラメータがネゴシエートされ、リンク1590について構成がファイナライズされると、フリット転送1594が開始し得る。例えば、1つの例示的な実装において、CXLが両方のリンクパートナによってアドバタイズされる場合、CXLは最後にネゴシエートされるプロトコルである。したがって、CXLビットは、ファイナライズ済み構成メッセージにおいて1bにセットされ、PCIe、ストリーミング、及び、任意の他のプロトコルビットが、ファイナライズ済み構成メッセージにおいて0bにセットされる。別の実装において、CXLプロトコルの特定のモード(例えば、256B又は68B)のサポートが、パラメータ交換メッセージの第1ラウンドにおいて明示的にアドバタイズされ得る。例として、「68Bフリットモード」が両方のリンクパートナによってアドバタイズされる場合、それは、ファイナライズ済み構成メッセージにおいて1bにセットされ、一方、「CXL 256Bフリットモード」が両方のリンクパートナによってアドバタイズされる場合、それは、ファイナライズ済み構成メッセージにおいて1bにセットされ得る。CXL(又はCXL 256B又は68B)がネゴシエートされるとき、(例えば、「CXLについてのアドバタイズされた機能」及び「CXLについてのファイナライズされた機能」メッセージを使用して)追加のハンドシェイク又はサイドバンドメッセージ交換が実行され、複数のCXLフリットモードのどの詳細がネゴシエートされるかを決定し得る。この追加のハンドシェイクは、図15Bの例のように、同一のフローパターンに従い得る。
【0114】
引き続きこの例において、CXLがリンクパートナのいずれか1つによってアドバタイズされないがPCIeが両方によってアドバタイズされる場合、それは最終的プロトコルである。そのような事例において、「PCIe」ビットが1bにセットされ、他のプロトコルビット(例えば「CXL」及び「ストリーミング」)がファイナライズ済み構成メッセージにおいて0bにセットされる。CXL及びPCIeがネゴシエートされていないが、「ストリーミング」が両方のリンクパートナによってアドバタイズされる場合、それは最終的プロトコルであり、ファイナライズ済み構成メッセージにおいて、「ストリーミング」が1bにセットされ、「CXL」及び「PCIe」が0bにセットされる。一例において、ネゴシエートされ得る共通プロトコルが無い場合、D2Dアダプタは、RDIをリンクエラー状態に遷移させ、エラーエスカレーションのための必要な段階を講じ得る。
【0115】
パラメータをファイナライズする他の例として、「ローモード(Raw_Mode)」が両方のリンクパートナによってアドバタイズされる場合、ファイナライズ済み構成メッセージ(例えば、{FinCap.Adapter})において、「ローモード」が1bにセットされる。両方のリンクパートナが「リトライ」をアドバタイズした場合、アダプタリトライが有効化され、ファイナライズ済み構成メッセージにおいて「リトライ」が1bにセットされる。両方のリンクパートナが「マルチプロトコル有効化」をアドバタイズした場合、スタック0及びスタック1の両方がアダプタによって有効化され、ファイナライズ済み構成メッセージにおいて、3つのパラメータ(「マルチプロトコル有効化」、「スタック0有効化」及び「スタック1有効化」)すべてが1bにセットされる。「マルチプロトコル有効化」がネゴシエートされない場合、スタック0又はスタック1が有効化されているかどうかを判定するために最小公倍数が使用され、ファイナライズ済み構成メッセージにおいて対応するビットが1bにセットされる。両方のスタック有効化がアドバタイズされる場合、スタック0が動作モードに選択され、ファイナライズ済み構成メッセージにおいて、スタック0有効化のみが1bにセットされる。レイテンシ最適化フォーマットについては、両方によってCXL_LatOpt_Fmt5又はCXL_LatOpt_Fmt6がアドバタイズされる場合、ファイナライズ済み構成メッセージにおいて、対応するビットが1bにセットされる等が行われる。
【0116】
PCIe又はCXLプロトコルがアドバタイズされず、かつ、ストリーミングプロトコルがネゴシエートされる場合、下流ポートであるか、又は上流ポートであるか分からないことがあり得、各側はそれぞれの機能を独立にアドバタイズし得る。いくつかの実装において、追加のベンダ定義サイドバンドメッセージが定義及び交換され得、ストリーミングプロトコルの具体的なことを構成することなどに使用される対応するベンダ固有エクステンションをネゴシエートされる。ベンダ固有エクステンションがネゴシエートされない場合、ファイナライズされた構成は、ローモードであると黙示的に判定されないことがあり得る。そのような例において、他の例の中でも特に、ファイナライズ済み構成メッセージは、ストリーミングプロトコルのために送信されないことがあり得、D2Dアダプタは、(例えば、設計統合において、又は、リンクブリングアップのステージ0中に)ベンダ固有要件を先験的に判定する。
【0117】
選択された特定のフリットフォーマットは、(例えば、構成のファイナライズに続いて、リンクステータスレジスタにおいて反映された後に)ネゴシエートされた機能に基づく。例として、図16は、この構成に対応する使用されるフリットフォーマットを共同で決定するためにファイナライズされたパラメータ構成を解釈するためにリンクパートナD2Dアダプタによって使用される1つの例示的なアルゴリズムを示す決定木ダイアグラム1600である。例えば、決定木は、パリティがサポートされるかどうか(1605)、ローモードがサポートされるかどうか(1610)、最適化モードがサポートされるかどうか(1615、1620、1625)、ストリーミングがサポートされるかどうか、及び、CXL256B、CXL68B、又はPCIeフリットモードがサポートされるかどうか(1630、1635、1640、1645)など、ファイナライズされた構成を考慮し得、複数(例えば10)の可能なフリットフォーマット(例えば1650a~j)のどれがメインバンド通信において使用されるかを最終的に決定する。決定されたフリットモードは、D2Dアダプタによって、合意されたフリットフォーマットに従ってデータを生成するためにプロトコル層が使用するプロトコル層ブロックに通信される。
【0118】
表12及び13は、リンクパートナのD2Dアダプタによってネゴシエートされるファイナライズされた構成に基づいて使用するための適切なフリットフォーマットを決定するための別の例示的なスキームを示す。例えば、表12は、ファイナライズ済み構成メッセージにおける値に基づいて利用するためのプロトコルを決定するための真理値表を示す。例えば、第1ファイナライズ済み構成メッセージFinCap.Adapterは、第1ハンドシェイクにおいて利用され得、第2ファイナライズ済み構成メッセージFinCap.CXLは、複数のCXLサブプロトコル又はフリットフォーマットが定義され、かつ、CXLが両方のリンクパートナによってサポートされるものとしてアドバタイズされる場合に使用される。表12は、ファイナライズ済み構成メッセージにおける値(有効化を示す1b)の様々な組み合わせ、及び、ファイナライズ済み構成メッセージの値の対応する組み合わせからD2Dアダプタによって決定される結果のプロトコルを示す。
【表12】
表12:ファイナライズされたパラメータからのプロトコルの決定についての例示的な真理値表
【0119】
表13は、(ファイナライズ済み構成メッセージ(例えば、FinCon.Adapter及びFinCon.CXL)においてアドバタイズされる)ファイナライズされた構成におけるパラメータの組み合わせに基づいて使用される特定のフリットフォーマットを決定するための真理値表である。
【表13】
表13:ファイナライズされた構成からフリットフォーマットを決定するための例示的な真理値表である
【0120】
いくつかの実装において、他の例示的な実装の中でも特に、上で論じられたものなど、初回リンクブリングアップ中にプロトコル及びフリットフォーマットがネゴシエートされると、それらは、UCIe PHYがリセット状態に移行するまで変更できない。
【0121】
図17A~17Fは、上で論じられたものなど、パラメータのファイナライズされた構成に基づいてリンクパートナのD2Dアダプタによる使用のために選択され得る例示的なフリットフォーマットを示す。例えば、図17Aは、ローモードについての例示的フォーマット1700a(例えばフォーマット1)を示す。図17Bは、CXL2.0 68Bフリットモードについての例示的なフリットフォーマット1700b(例えば、フォーマット2)を示す。図17Cは、PCIeについてのスタンダード256Bフリットモードについての例示的なフリットフォーマット1700c(例えば、フォーマット3)を示す。図17Dは、CXLについてのスタンダード256Bフリットモードについての例示的なフリットフォーマット1700d(例えば、フォーマット4)を示す。図17Eは、CXLについてのレイテンシ最適化モードについての例示的なフリットフォーマット1700e(例えば、フォーマット5)を示す。図17Fは、他の可能なフリットフォーマットの中でも特に、CXLについての別のレイテンシ最適化モードについての例示的なフリットフォーマット1700f(例えば、フォーマット6)を示す。
【0122】
図18A~18Dは、1つの例示的な実装による、レジスタアクセスパケットの例示的フォーマットを示す。例えば、図18Aは、一例による、例示的レジスタアクセスリクエストパケットフォーマット1800aを示す。図18Bは、例示的レジスタアクセス完了パケットフォーマット1800bを示す。図18Cは、他の例の中でも特に、リンク管理パケット、非動作(NOP)パケット、又は、ベンダ定義メッセージパケットなど、データペイロード無しのメッセージの例示的フォーマットを示す。図18Dは、データペイロードパケットフォーマット1800dを有する例示的なメッセージを示す。以下の表14は、図18A~18Dに示される例示的なパケットに含まれるフィールドの一部を要約する。
【表14】
表14:レジスタアクセスリクエストについてのフィールド説明
表15は、レジスタアクセスリクエストに含めるための例示的なメッセージエンコーディングを示す。
【表15】
表15:例示的なメッセージエンコーディング
【0123】
上記の複数の装置、方法、及びシステムは、上記の任意の電子デバイス又はシステムに実装されてよいことに留意されたい。具体的な例として、以下の図面は、本明細書に記載の解決手段を利用するための例示的なシステムを提供する。以下のシステムがより詳細に記載される通り、複数の異なるインターコネクトが開示され、記載され、上記説明から再検討される。上の例の一部は、CXL又はPCIeベースのインターコネクト及びデバイスに基づくが、上で論じられた解決手段及び特徴は単に、様々なコンピューティングプラットフォーム内においてソケット、パッケージ、ボード、及び同様のものを結合するために使用される他のインターコネクト又はプロトコルに同様に容易に適用され得ることが理解されるべきである。容易に明らかとなるように、上で説明された進歩及びUCIeベースプロトコルは、本明細書において論じられたインターコネクト、ファブリック、又はアーキテクチャのいずれかに、及び、本明細書において明示的に指定又は説明されていない他の同様のインターコネクト、ファブリック、又はアーキテクチャに適用され得る。
【0124】
図19を参照すると、マルチコアプロセッサを含むコンピューティングシステムについてのブロックダイアグラムの実施形態が描かれている。プロセッサ1900は、マイクロプロセッサ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システムオンチップ(SOC)、又は、コードを実行するための他のデバイス等の任意のプロセッサ又は処理デバイスを含む。一実施形態では、プロセッサ1900は、少なくとも2つのコア、すなわち、コア1901及び1902を含み、これらのコアは、非対称コア又は対称コア(図示の実施形態)を含むことができる。しかしながら、プロセッサ1900は、対称又は非対称であり得る任意の数の処理要素を含んでもよい。
【0125】
一実施形態において、処理要素とは、ソフトウェアスレッドをサポートするハードウェア又はロジックを指す。ハードウェア処理要素の例は、スレッドユニット、スレッドスロット、スレッド、プロセスユニット、コンテンツ、コンテキストユニット、論理プロセッサ、ハードウェアスレッド、コア、及び/又は実行状態又はアーキテクチャ状態などのプロセッサの状態を保持することが可能な任意の他の要素を含む。言い換えると、一実施形態において、処理要素とは、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、又は独立して他のコードなどのコードに関連付けられることが可能な任意のハードウェアを指す。物理プロセッサ(又はプロセッサソケット)とは通常、コア又はハードウェアスレッドなどの任意の数の他の処理要素を潜在的に含む集積回路を指す。
【0126】
コアは、独立のアーキテクチャ状態を維持可能な集積回路上に置かれるロジックをしばしば指し、独立して維持される各アーキテクチャ状態が、少なくともいくつかの専用実行リソースに関連付けられる。コアに対して、ハードウェアスレッドは典型的には、独立のアーキテクチャ状態を維持可能な集積回路上に置かれる任意のロジックを指し、独立して維持されるアーキテクチャ状態が、実行リソースへのアクセスを共有する。分かるように、特定のリソースが共有され、他のリソースがアーキテクチャ状態専用である場合、ハードウェアスレッドとコアとの間の用語体系の境界は重複する。しかししばしば、コアとハードウェアスレッドとは、オペレーティングシステムにより個々の論理プロセッサと見られており、オペレーティングシステムは、各論理プロセッサ上での動作を個別にスケジューリングできる。
【0127】
図19に示すように、物理プロセッサ1900は、2つのコア、すなわち、コア1901及び1902を含む。ここでは、コア1901及び1902は、対称コア、すなわち、同じ構成、機能ユニット、及び/又はロジックを伴うコアであるとみなされる。他の実施形態では、コア1901は、アウトオブオーダプロセッサコアを含み、コア1902は、インオーダプロセッサコアを含む。しかしながら、コア1901及び1902は、ネイティブコア、ソフトウェア管理によるコア、ネイティブ型の命令セットアーキテクチャ(ISA)を実行するように適応されたコア、翻訳された命令セットアーキテクチャ(ISA)を実行するように適応されたコア、共同設計されたコア、又は、他の既知のコア等の任意の種類のコアから個別に選択することができる。異種混交的コア環境(すなわち、非対称コア)では、バイナリトランスレーション等の何らかの形態の翻訳を利用して、一方又は両方のコア上でコードをスケジュールすること、又は実行することができる。ただし、更なる議論として、コア1901内に示す機能ユニットを下記で更に詳細に説明する。図示の実施形態では、コア1902内のユニットも同様に動作する。
【0128】
図示のように、コア1901は、2つのハードウェアスレッド1901a及び1901bを含み、これらを、ハードウェアスレッドスロット1901a及び1901bと称することもできる。したがって、一実施形態では、場合によっては、オペレーティングシステム等のソフトウェアエンティティが、プロセッサ1900を4つの分離したプロセッサ、すなわち、4つのソフトウェアスレッドを同時に実行可能な4つの論理プロセッサ又は処理要素とみなす。先に示唆したように、第1のスレッドが、アーキテクチャ状態レジスタ1901aに関連付けられ、第2のスレッドが、アーキテクチャ状態レジスタ1901bに関連付けられ、第3のスレッドを、アーキテクチャ状態レジスタ1902aに関連付けることができ、第4のスレッドを、アーキテクチャ状態レジスタ1902bに関連付けることができる。ここで、アーキテクチャ状態レジスタ(1901a、1901b、1902a、及び1902b)のそれぞれは、上記のように、処理要素、スレッドスロット、又はスレッドユニットと称することもできる。図示のように、アーキテクチャ状態レジスタ1901aが、アーキテクチャ状態レジスタ1901b内にレプレケートされるので、個別のアーキテクチャ状態/コンテキストを、論理プロセッサ1901a及び論理プロセッサ1901bについて記憶することが可能である。コア1901では、アロケータ及びリネーマブロック1930内の命令ポインタ及びリネーミングロジック等の他のより小さなリソースも、スレッド1901a及び1901bについてレプレケートすることができる。リオーダ/リタイアメントユニット1935内のリオーダバッファ、ILTB1920、ロード/ストア・バッファ、及び、キュー等のいくつかのリソースを、パーティショニングを通して共有することができる。場合によっては、汎用内部レジスタ、ページテーブルベースレジスタ、低レベルデータキャッシュ及びデータ-TLB1915、実行ユニット1940、及び、アウトオブオーダユニット1935の一部分等の他のリソースが、完全に共有される。
【0129】
プロセッサ1900は通常、複数の他のリソースを含み、それらは完全に共有、パーティショニングを介して共有、又は処理要素により/対して専用とされてよい。図19では、プロセッサの例示的論理ユニット/リソースを伴う、単なる例示的プロセッサの実施形態を示す。プロセッサは、これらの機能ユニットのうちの任意の機能ユニットを含むこと、又は、省略すること、ならびに、図示していない、他の任意の既知の機能ユニット、ロジック、又はファームウェアを含むことができることに留意されたい。図示のように、コア1901は、簡略化された典型的なアウトオブオーダ(OOO)プロセッサコアを含む。しかし、異なる実施形態では、インオーダプロセッサを利用してもよい。OOOコアは、実行するべきブランチ/たどるべきブランチを予測するためのブランチターゲットバッファ1920と、命令についてのアドレス翻訳エントリを記憶するための命令翻訳バッファ(I-TLB)1920とを含む。
【0130】
コア1901は、フェッチされた要素をデコードするために、フェッチユニット1920に結合されたデコードモジュール1925を更に含む。一実施形態では、フェッチロジックが、スレッドスロット1901a、1901bにそれぞれ関連付けられた個別のシーケンサを含む。通常、コア1901は、プロセッサ1900上で実行可能な命令を規定/特定する第1ISAに関連付けられる。しばしば、第1のISAの一部分である機械コード命令が、実行されるべき命令又はオペレーションを参照/特定する命令(オペコードと称される)の一部分を含む。デコードロジック1925は、これらの命令を、それらのオペコードから認識し、デコードされた命令を、第1ISAにより規定された処理のために、パイプラインに渡す回路を含む。例えば、下記でより詳細に議論するように、一実施形態では、デコーダ1925は、トランザクション命令等の特有の命令を認識するように設計又は適応されたロジックを含む。デコーダ1925による認識の結果、アーキテクチャ又はコア1901が、予め規定された特有のアクションを行って、適当な命令に関連付けられたタスクを実行する。本明細書で説明するタスク、ブロック、オペレーション、及び方法のうちのいずれも、単一又は複数の命令に応答して実行することができることに留意することが重要であり、これらの命令のうちのいくつかは、新たな命令又は古い命令であってもよい。一実施形態では、複数のデコーダ1926が同じISA(又は、そのサブセット)を認識することに留意されたい。あるいは、異種混交的コア環境では、デコーダ1926は、第2のISA(第1のISAのサブセット、又は、別個のISAのいずれか)を認識する。
【0131】
一例では、アロケータ及びリネーマブロック1930が、命令処理結果を記憶するためのレジスタファイル等のリソースを蓄えるためのアロケータを含む。しかしながら、場合によっては、スレッド1901a及び1901bが、アウトオブオーダ実行を可能であり、アロケータ及びリネーマブロック1930が、命令結果を追跡するためのリオーダバッファ等の他のリソースをやはり蓄える。ユニット1930は、プログラム参照レジスタ/命令参照レジスタを、プロセッサ1900内部の他のレジスタにリネームするためのレジスタリネーマを含んでもよい。リオーダ/リタイアメントユニット1935は、先に述べたリオーダバッファ、ロードバッファ等のコンポーネントを含み、アウトオブオーダ実行をサポートし、その後に、アウトオブオーダで実行された命令のインオーダのリタイアメントをサポートするためのバッファを格納する。
【0132】
一実施形態では、スケジューラ及び実行ユニットブロック1940が、実行ユニット上の命令/オペレーションをスケジュールするためのスケジューラユニットを含む。例えば、浮動小数点命令が、利用可能な浮動小数点実行ユニットを有する実行ユニットのポート上でスケジュールされる。これらの実行ユニットに関連付けられたレジスタファイルも、情報命令処理結果を記憶するために含められる。例示的実行ユニットには、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、記憶実行ユニット、及び他の既知の実行ユニットが含まれる。
【0133】
低レベルデータキャッシュ及びデータ翻訳バッファ(D-TLB)1950は、実行ユニット1940に結合される。データキャッシュは、複数のメモリコヒーレンシ状態に潜在的に保持された複数のデータオペランドのような、最近使用/動作されたものを複数の要素上格納する。D-TLBは、物理的アドレス翻訳に対する、少し前の仮想/線形を記憶するためのものである。具体例として、プロセッサは、物理メモリを複数の仮想ページに分けるためのページテーブル構造を含んでもよい。
【0134】
ここで、コア1901及び1902は、オンチップインタフェース1910に関連付けられた第2レベルのキャッシュ等、より高いレベルのキャッシュ又は更に外のキャッシュへのアクセスを共有する。「より高いレベル」又は「更に外」は、実行ユニットから上がっていくキャッシュレベル、又は、実行ユニットから更に離れていくキャッシュレベルを指すことに留意されたい。一実施形態では、より高いレベルのキャッシュは、最終レベルのデータキャッシュ、すなわち、第2レベル又は第3レベルのデータキャッシュ等、プロセッサ1900上のメモリ階層内の最終キャッシュである。しかしながら、より高いレベルのキャッシュは、命令キャッシュと関連付けられること、又は、命令キャッシュを含むことがあり得るので、そのように限定はされない。むしろ、命令キャッシュの一種であるトレースキャッシュは、少し前にデコードされたトレースを記憶するために、デコーダ1925の後段で結合され得る。ここでは、場合によっては、命令は、マクロ命令(すなわち、デコーダにより認識される全体的な命令)を指し、マクロ命令は、いくつかのマイクロ命令(マイクロオペレーション)にデコードすることができる。
【0135】
図示の構成では、プロセッサ1900は、オンチップインタフェースモジュール1910も含む。歴史的には、下記でより詳細に説明するメモリコントローラは、プロセッサ1900外部のコンピューティングシステム内に含まれてきた。このシナリオでは、オンチップインタフェース1910は、システムメモリ1975、チップセット(メモリ1975に接続するためのメモリコントローラハブと、周辺デバイスに接続するためのI/Oコントローラハブとをしばしば含む)、メモリコントローラハブ、ノースブリッジ、又は他の集積回路等、プロセッサ1900外部のデバイスと通信を行うためのものである。このシナリオにおいて、バス1905は、マルチドロップバス、ポイントツーポイントインターコネクト、シリアルインターコネクト、パラレルバス、コヒーレント(例えば、キャッシュコヒーレント)バス、階層型プロトコルアーキテクチャ、差分バス、及びGTLバスのような任意の既知のインターコネクトを含んでよい。上で論じられた原理によれば、バス1905、及び、図19のシステムにおける要素をインターコネクトする他のリンク、インターコネクト、及びファブリックは、UCIeを使用して実装され得る。いくつかの実装において、図19のシステムに示される要素のうちの1又は複数は、同じパッケージ上で提供及びインターコネクトされ得る。いくつかの事例において、インターコネクトされた要素の一部は、異なるパッケージであり得、他の例の中でも特に、オフパッケージリンクによって結合され得る。
【0136】
メモリ1975は、プロセッサ1900専用であっても、又はシステム内の他のデバイスと共有されていてもよい。メモリ1975の種類の一般例には、DRAM、SRAM、不揮発性メモリ(NVメモリ)、及び、他の既知のストレージデバイスが含まれる。デバイス1980は、メモリコントローラハブに結合されたグラフィックアクセラレータ、グラフィックプロセッサ、又は、グラフィックカード、I/Oコントローラハブに結合されたデータストレージ、ワイヤレストランシーバ、フラッシュデバイス、オーディオコントローラ、ネットワークコントローラ、又は、他の既知のデバイスを含み得ることに留意されたい。
【0137】
しかしながら、最近では、SOC等の単一ダイ上で、より多くのロジック及びデバイスが集積されているので、これらのデバイスのそれぞれを、プロセッサ1900上に組み込むことができる。例えば、一実施形態では、メモリコントローラハブが、プロセッサ1900と同じパッケージ及び/又はダイに設けられる。ここでは、コア1910の一部分(オンコア部分)が、メモリ1975又はグラフィックデバイス1980等の他のデバイスとインタフェースを取るための1又は複数のコントローラを含む。こうしたデバイスとインタフェースを取るためのインターコネクト及びコントローラを含む構成は、しばしば、オンコア(又はアンコア(un-core)構成)と称される。一例として、オンチップインタフェース1910は、オンチップ通信のためのリング型インターコネクト、及び、オフチップ通信のための高速シリアルポイントツーポイントリンク1905を含む。しかし、SOC環境では、ネットワークインタフェース、コプロセッサ、メモリ1975、グラフィックプロセッサ1980、及び他の任意の既知のコンピュータデバイス/コンピュータインタフェース等、遥かにより多くのデバイスを、単一ダイ又は集積回路上で集積して、高機能及び低電力消費の小型フォームファクタを提供することができる。
【0138】
一実施形態では、プロセッサ1900は、コンパイラ、最適化、及び/又は、トランスレータコード1977を実行して、アプリケーションコード1976をコンパイル、翻訳、及び/又は、最適化することで、本明細書で説明する装置及び方法をサポートすること、又は、それらとインタフェースを取ることが可能である。コンパイラは、ソーステキスト/ソースコードをターゲットテキスト/ターゲットコードに翻訳するためのプログラム又はプログラムのセットをしばしば含む。通常、コンパイラを用いたプログラムコード/アプリケーションコードのコンパイルは、高レベルのプログラミング言語コードを、低レベルの機械言語コード又はアセンブリ言語コードに変換するために、複数のフェーズ及びパスで行われる。ただし、単純なコンパイルには、単一のパスコンパイラを利用することができる。コンパイラは、任意の既知のコンパイル技術を利用し、語彙解析、前処理、パーシング、意味解析、コード生成、コード変換、及びコード最適化等の任意の既知のコンパイラオペレーションを実行することができる。
【0139】
より大きなコンパイラは、複数のフェーズをしばしば含むが、ほとんどの場合、これらのフェーズは、2つの一般的フェーズに含まれる。それらは、(1)フロントエンド、すなわち、典型的に、構文処理、意味処理、及び、何らかの変換/最適化が起こり得るフェーズ、ならびに、(2)バックエンド、すなわち、一般に、解析、変換、最適化、及び、コード生成が起こるフェーズである。いくつかのコンパイラはミドル(middle)を参照し、ミドルは、コンパイラのフロントエンドとバックエンドとの間の記述のぼやけを説明する。結果として、挿入、関連、生成、又は、コンパイラの他のオペレーションへの参照が、上記のフェーズ又はパスのうちのいずれか、ならびに、コンパイラの他の任意の既知のフェーズ又はパスのうちのいずれかで起こり得る。説明用の例として、コンパイラは、コンパイルの1又は複数のフェーズにおいて、オペレーション、コール、関数等を場合によっては挿入する(例えば、コンパイルのフロントエンドフェーズでコール/オペレーションを挿入し、次いで、変換フェーズ中に、コール/オペレーションを低レベルのコードに変換する)。コンパイラコード又は動的最適化コードが、こうしたオペレーション/コールを動的コンパイル中に挿入することができ、かつ、ランタイム中には、実行のためにコードを最適化することができることに留意されたい。具体的な説明用の例としては、ランタイム中に、バイナリコード(既にコンパイルされたコード)を動的に最適化することができる。ここで、プログラムコードは、動的最適化コード、バイナリコード、又は、それらの組み合わせを含み得る。
【0140】
コンパイラと同様に、バイナリトランスレータ等のトランスレータは、コードを静的又は動的に翻訳して、コードの最適化及び/又は翻訳を行う。したがって、コード、アプリケーションコード、プログラムコード、又は、他のソフトウェア環境の実行への参照とは、(1)コンパイラプログラム、最適化コードオプティマイザ、又は、トランスレータを動的もしくは静的に実行して、プログラムコードをコンパイルすること、ソフトウェア構造を維持すること、他のオペレーションを実行すること、コードを最適化すること、もしくは、コードを翻訳すること、(2)最適化/コンパイルされたアプリケーションコード等、オペレーション/コールを含むメインプログラムコードを実行すること、(3)メインプログラムコードに関連付けられた、ライブラリ等の他のプログラムコードを実行して、ソフトウェア構造を維持すること、他のソフトウェア関連のオペレーションを実行すること、もしくは、コードを最適化すること、又は、(4)(1)から(3)の組み合わせを指し得る。
【0141】
ここで図20を参照すると、本開示の実施形態による第2のシステム2000のブロックダイアグラムが示される。図20に示すように、マイクロプロセッサシステム2000は、ポイントツーポイントのインターコネクトシステムであり、ポイントツーポイントインターコネクト2050を介して結合された第1プロセッサ2070及び第2プロセッサ2080を含む。上で論じられた原理によれば、システムにおける要素をインターコネクトするリンク、バス、インターコネクト、及びファブリックは、UCIeを使用して実装され得る。いくつかの実装において、図20のシステムに示される要素のうちの1又は複数は、同じパッケージ上で提供及びインターコネクトされ得る。いくつかの事例において、インターコネクトされた要素の一部は、異なるパッケージであり得、他の例の中でも特に、オフパッケージリンクによって結合され得る。プロセッサ2070及び2080のそれぞれは、あるプロセッサのいくつかのバージョンであってよい。一実施形態では、2052及び2054は、高性能アーキテクチャのような、シリアルポイントツーポイントコヒーレントインターコネクトファブリックの一部である。結果として、本明細書において説明される解決手段は、UPI又は他のアーキテクチャにいおて実装され得る。
【0142】
2つのプロセッサ2070、2080のみを伴うものを示しているが、本開示の範囲は、そのように限定されないことが理解されるはずである。他の実施形態では、所与のプロセッサ内に、1又は複数の追加のプロセッサが存在し得る。
【0143】
プロセッサ2070及び2080は、それぞれ統合されたメモリコントローラユニット2072及び2082を含むように図示されている。プロセッサ2070はまた、そのバスコントローラユニットの一部として、ポイントツーポイント(P-P)インタフェース2076及び2078を含み、同様に、第2プロセッサ2080は、P-Pインタフェース2086及び2088を含む。プロセッサ2070、2080は、ポイントツーポイント(P-P)インタフェース2050を介し、P-Pインタフェース回路2078、2088を用いて情報を交換してよい。図20に示されるように、IMC2072及び2082は、プロセッサをそれぞれのメモリ、即ち、メモリ2032及びメモリ2034に連結し、これらは、各プロセッサへ局所的に帰属するメインメモリの複数の部分であってよい。
【0144】
プロセッサ2070、2080は、それぞれ、ポイントツーポイントインタフェース回路2076、2094、2086、2098を使用して、個別のP-Pインタフェース2052、2054を介してチップセット2090と情報を交換する。また、チップセット2090は、高性能グラフィックインターコネクト2039を通じて、インタフェース回路2092を介して高性能グラフィック回路2038と情報を交換する。
【0145】
共有キャッシュ(図示せず)を、いずれかのプロセッサの中に、又は、両方のプロセッサの外に含めることができるが、この共有キャッシュは、P-Pインターコネクトを介してプロセッサに接続され、これにより、いずれかのプロセッサの、又は、両方のプロセッサのローカルキャッシュ情報を、プロセッサが低電力モードに入れられた場合に共有メモリに記憶することができる。
【0146】
チップセット2090はインタフェース2096を介して第1バス2016に結合され得る。一実施形態において、第1バス2016はペリフェラルコンポーネントインターコネクト(PCI)バス、又はPCI Expressバス又は別の第3世代I/Oインターコネクトバスなどのバスであってよいが、本開示の範囲はそのようには限定されない。
【0147】
図20に示されるように、多様なI/Oデバイス2014が、第1バス2016に、バスブリッジ2018とともに結合され、このブリッジは、第1バス2016を第2バス2020へと連結する。一実施形態では、第2バス2020は、ローピンカウント(LPC)バスを含む。一実施形態では、例えば、キーボード及び/又はマウス2022、通信デバイス2027、ならびに、ディスクドライブ又は他のマスストレージデバイス等のストレージユニット2028を含めた様々なデバイスが、第2バス2020に結合され、ストレージユニット2028は、命令/コード及びデータ2030をしばしば含む。さらに、第2バス2020に結合されたオーディオI/O2024が示されている。他のアーキテクチャも可能であることに留意されたい。含まれるコンポーネント及びインターコネクトアーキテクチャは、様々である。例えば、図20のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス又は他のこうしたアーキテクチャを実装することもできる。
【0148】
本明細書で論じられた解決手段は、限られた数の実施形態に関して説明されたが、当業者であれば、それらからの様々な修正及び変形を理解できよう。添付の特許請求の範囲は、本開示の真の主旨及び範囲に含まれる全てのそのような変形形態及び変更形態を網羅することが意図される。
【0149】
設計は、作成からシミュレーション、製造まで様々なステージを経てよい。設計を表すデータは、複数の方式で設計を表してよい。まず、シミュレーションでは役に立つので、ハードウェア記述言語又は他の機能記述言語を使用して、ハードウェアを表すことができる。加えて、ロジック及び/又はトランジスタゲートを用いた回路レベルモデルが、設計処理のいくつかのステージで生成されてよい。さらに、ほとんどの設計が、何らかのステージにおいて、ハードウェアモデルにおける様々なデバイスの物理配置を表すデータレベルに達する。従来の半導体製造技術が用いられる場合、ハードウェアモデルを表すデータは、集積回路を製造するために用いられるマスクの異なるマスク層上にある様々な特徴の存在又は不存在を指定するデータであってよい。設計のいかなる表現においても、データは、任意の機械可読媒体の形態で記憶することができる。メモリ、又はディスクなどの磁気又は光ストレージは、情報を送信するよう変調される、又は別の方法で生成される光波又は電波を介して送信されるそのような情報を格納する機械可読媒体であってよい。コード又は設計を示す、又は搬送する電気搬送波が送信される場合、電気信号のコピー、バッファリング又は送信が実行される限りにおいて、新しいコピーが作成される。従って、通信プロバイダ又はネットワークプロバイダは有形な機械可読媒体上に少なくとも一時的に、搬送波にエンコードされた情報のようなアーティクルを格納してよく、本開示の複数の実施形態に係る複数の技術を具現する。
【0150】
本明細書で用いられるようなモジュールは、ハードウェア、ソフトウェア、及び/又はファームウェアの任意の組み合わせを指す。一例として、モジュールは、マイクロコントローラによって実行されるよう適合されたコードを格納する非一時的媒体に関連付けられるマイクロコントローラなどのハードウェアを含む。したがって、一実施形態では、モジュールへの言及は、非一時的媒体に保持されるコードを認識及び/又は実行するように具体的に構成されたハードウェアを指す。さらに、別の実施形態では、モジュールの使用とは、予め定められた複数の動作を実行するマイクロコントローラによって実行されるよう具体的に適合させられているコードを含む非一時的媒体を指す。予期され得るように、さらなる別の実施形態において、モジュールという用語(この例において)は、マイクロコントローラ及び非一時的媒体の組み合わせを指してよい。しばしば、別個のものとして示される複数のモジュールの境界は一般に変わり、潜在的に重複する。例えば、第1のモジュール及び第2のモジュールがハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせを共有する一方で、いくつかの独立したハードウェア、ソフトウェア、又はファームウェアを潜在的に維持してもよい。一実施形態では、「ロジック」という語の使用は、トランジスタ、レジスタ等のハードウェア、又は、プログラマブルロジックデバイス等の他のハードウェアを含む。
【0151】
一実施形態では、「ように構成される(configured to)」という文言の使用は、指定又は決定されたタスクを実行するために、装置、ハードウェア、ロジック、又は、要素を配置すること、まとめること、製造すること、販売することを提案すること、インポートすること、及び/又は、設計することを指す。この例において、動作していない装置又はその要素は、指定されたタスクを実行するように設計され、結合され、及び/又はインターコネクトされている場合、依然として、上記の指定されたタスクを実行するよう「構成され」ている。純粋に説明用の例として、ロジックゲートは、動作中0又は1を提供してよい。しかしながら、イネーブル信号をクロックに提供するよう「構成され」たロジックゲートは、1又は0を提供し得るあらゆる潜在的ロジックゲートを含まない。代わりに、当該ロジックゲートは、動作中に1又は0出力が当該クロックを有効化するよう何らかの方式で連結されたものである。再びであるが、「構成され」という用語の使用は、オペレーションを必要としないが、代わりに、装置、ハードウェア及び/又は要素の隠れた状態に重点を置いていることに留意されたい。隠れた状態では、装置、ハードウェア及び/又は要素は、装置、ハードウェア及び/又は要素が動作している場合に特定のタスクを実行するように設計されている。
【0152】
さらに、一実施形態では、「ように(to)」、「可能に(capable of/to)」、及び/又は、「動作可能に(operable to)」という言い回しの使用が、何らかの装置、ロジック、ハードウェア、及び/又は、要素であって、指定されたやり方での、それら装置、ロジック、ハードウェア、及び/又は、要素の使用が可能になるように設計された装置、ロジック、ハードウェア、及び/又は、要素を指す。一実施形態において、する、可能又は動作可能という文言の使用は、装置、ロジック、ハードウェア及び/又は要素の隠れた状態を指し、その場合、当該装置、当該ロジック、当該ハードウェア及び/又は当該要素は、動作していないが、装置を指定された方式で用いることを可能にするように設計されていることに上記同様留意されたい。
【0153】
本明細書において用いられる値は、数、状態、論理状態又はバイナリ論理状態の任意の既知の表現を含む。しばしば、ロジックレベル、ロジック値又は論理値の使用は、「1の」及び「0の」とも称され、単にバイナリロジック状態を表す。例えば、1は高論理レベルを指し、0は低論理レベルを指す。一実施形態において、トランジスタセル又はフラッシュセルなどのストレージセルは、単一の論理値又は複数の論理値を保持可能であってよい。しかしながら、コンピュータシステムにおける値の他の表現が用いられている。例えば、10進数の10は、バイナリ値1010として、16進数では文字Aとして、表されてよい。したがって、値はコンピュータシステムにおいて保持されることが可能な情報の任意の表現を含む。
【0154】
さらに、状態は、値又は値の部分により表され得る。例として、論理1などの第1の値はデフォルト状態又は初期状態を表し得るが、論理ゼロなどの第2の値は非デフォルト状態を表し得る。加えて、一実施形態においてリセット及び設定という用語は、デフォルト値及び更新値又は状態をそれぞれ指す。例えば、デフォルト値は、高論理値、すなわちリセットを潜在的に含み、一方で、更新値は、低論理値、すなわちセットを潜在的に含む。任意の数の状態を表すために、複数の値の任意の組み合わせが利用され得ることに留意されたい。
【0155】
上記に記載の方法、ハードウェア、ソフトウェア、ファームウェア、又はコードの実施形態は、処理要素により実行可能な、機械アクセス可能、機械可読、コンピュータアクセス可能、又はコンピュータ可読媒体上で格納される命令又はコードを介して実装され得る。非一時的機械アクセス可能/可読媒体は、コンピュータ又は電子システムのような機械により可読な形で情報を提供(即ち、格納、及び/又は送信)する任意の機構を含む。例えば、非一時的機械アクセス可能媒体には、静的RAM(SRAM)又はダイナミックRAM(DRAM)等のランダムアクセスメモリ(RAM)と、ROMと、磁気又は光ストレージ媒体と、フラッシュメモリデバイスと、電子ストレージデバイスと、光学ストレージデバイスと、アコースティックストレージデバイスと、一時的な(伝搬される)信号(例えば、搬送波、赤外線信号、デジタル信号)から受信される情報を保持するための他の形式のストレージデバイス等が含まれ、これらの非一時的機械アクセス可能媒体は、これら媒体から情報を受信することができる非一時的媒体とは区別されるべきである。
【0156】
本明細書の例示的な実施形態を実行するための論理をプログラムするために用いられる命令は、DRAM、キャッシュ、フラッシュメモリ、又は他のストレージのような、システムのメモリ内に格納されてよい。さらに、命令はネットワークを介して、又は他のコンピュータ可読媒体を用いて配布され得る。従って、機械可読媒体は、機械(例えば、コンピュータ)により読み取り可能な形式で情報を格納又は送信するための任意の機構を含み得るが、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスク、リードオンリメモリ(CD-ROM)、及び磁気光ディスクリードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、電気消去可能プログラマブルリードオンリメモリ(EEPROM)、磁気カード又は光カード、フラッシュメモリ、又は電気、光、音波又は他の形式の伝搬信号(例えば、搬送波、赤外線信号、デジタル信号等)を介したインターネットでの情報の送信において用いられる有形の機械可読ストレージに限定されない。したがって、コンピュータ可読媒体は、機械(例えば、コンピュータ)により読み取り可能な形式で電子命令又は情報を格納又は送信するのに好適な任意のタイプの有形の機械可読媒体を含む。
【0157】
以下の複数の例は、本明細書による複数の実施形態に関する。
【0158】
本明細書の全体にわたって、「一実施形態(one embodiment)」又は「実施形態(an embodiment)」への言及は、当該実施形態に関連して説明される特定の特徴、構造又は特性が、本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書を通して様々な箇所における「1つの実施形態において」又は「一実施形態において」という表現の出現は、必ずしもすべてが同一の実施形態を指すとは限らない。さらに、特定の特徴、構造又は特性は、1又は複数の実施形態において、任意の好適な方式で組み合わされてよい。
【0159】
上記の明細書において、詳細な説明が、特定の例示的な実施形態を参照して行われた。しかしながら、様々な修正又は変更が、添付の特許請求の範囲に説明された発明の、より広範な意図及び範囲から逸脱することなく、それら実施形態に対して行われてよいことは、明らかであろう。したがって、本明細書及び図面は、限定的な意味ではなく、例示的な意味で考えられるべきである。更に、実施形態及び他の例示的な言語の上記の使用は、必ずしも同じ実施形態又は同じ例を指しているとは限らず、異なる個別の実施形態及び潜在的に同じ実施形態を指してよい。
図1
図2
図3
図4
図5
図6
図7
図8A
図8B
図8C
図8D
図9
図10
図11
図12A
図12B
図12C
図13
図14
図15A
図15B
図15C
図16
図17A
図17B
図17C
図17D
図17E
図17F
図18A
図18B
図18C
図18D
図19
図20
【手続補正書】
【提出日】2024-07-04
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
プロセッサに:
ダイ上のレジスタの特定のセットの存在に基づいて、ユニバーサルチップレットインターコネクトエクスプレス(UCIe)ベースプロトコルに前記ダイが準拠していると判定する手順、ここで、前記ダイは、前記UCIeベースプロトコルに基づいて、ダイ間(D2D)リンクによって別のリンクパートナダイに結合する;
前記レジスタの特定のセットにおける機能レジスタにアクセスする手順;
前記機能レジスタから利用可能な機能を読み取る手順、ここで、前記利用可能な機能は、前記ダイ上に存在するD2Dアダプタ及び物理層(PHY)ブロックの機能を含む;
前記D2Dリンクについて有効化される前記利用可能な機能における機能のセットを決定する手順;
前記機能のセットを有効化するために制御レジスタの値を書き込む手順;及び
前記D2Dリンクのトレーニングを開始するために前記制御レジスタに開始リンクトレーニング値を書き込む手順;
を行わせるコンピュータプログラム
【請求項2】
前記利用可能な機能は、ローモードを含む、請求項1に記載のコンピュータプログラム
【請求項3】
前記利用可能な機能は、複数のプロトコル層をサポートする機能を含む、請求項1に記載のコンピュータプログラム
【請求項4】
前記D2Dアダプタは、第1インタフェースによって前記ダイ上の前記PHYブロックに、及び、第2インタフェースによって前記ダイ上のプロトコル層ブロックに結合され、前記D2Dアダプタは、UCIeプロトコルスタックにおける前記プロトコル層ブロック及び前記PHYブロックの間に位置する、請求項1に記載のコンピュータプログラム
【請求項5】
前記PHYブロックは、前記リンクパートナダイとの前記D2Dリンクのトレーニングを実行する、請求項4に記載のコンピュータプログラム
【請求項6】
前記D2Dアダプタは、前記制御レジスタの値を使用して、前記リンクパートナダイとの間で、前記D2Dリンク上で使用されるプロトコル及びフリットフォーマットをネゴシエートする、請求項1に記載のコンピュータプログラム
【請求項7】
前記フリットフォーマットは、前記UCIeベースプロトコルにおいて定義される複数の異なるフリットフォーマットの1つから決定される、請求項6に記載のコンピュータプログラム
【請求項8】
前記プロトコルは、前記UCIeベースプロトコルにおいて定義される複数の異なるプロトコルの1つから決定され、前記フリットフォーマットは、前記プロトコルに基づいて決定される、請求項6に記載のコンピュータプログラム
【請求項9】
ダイ間アダプタを備える装置であって、
前記ダイ間アダプタは、
レジスタのセット;
前記レジスタのセットから、リンクパートナD2Dアダプタとのネゴシエーションにおいてアドバタイズするための、前記リンクパートナD2Dアダプタの機能のセットを決定する手順、ここで、前記リンクパートナD2Dアダプタはダイ上にあり、前記リンクパートナD2Dアダプタは、リモートリンクパートナダイ上に配置されている;
前記機能のセットを前記リンクパートナD2Dアダプタにアドバタイズするために、第1機能アドバタイズメントメッセージを前記リンクパートナD2Dアダプタに送信する手順;
第2機能アドバタイズメントメッセージを前記リンクパートナD2Dアダプタから受信する手順、ここで、前記第2機能アドバタイズメントメッセージは、前記リンクパートナD2Dアダプタの機能のセットを識別する;
前記リンクパートナD2Dアダプタ及び前記リンクパートナD2Dアダプタの共有機能を判定する手順;及び
前記ダイを前記リモートリンクパートナダイに結合するために、D2Dリンクの最終的構成を決定する手順
を行うための回路
含む、装置。
【請求項10】
前記リンクはメインバンドチャネル及び別個のサイドバンドチャネルを含み、前記第1機能アドバタイズメントメッセージは前記サイドバンドチャネル上で送信され、前記第2機能アドバタイズメントメッセージは前記サイドバンドチャネル上で受信される、請求項9に記載の装置。
【請求項11】
前記メインバンドチャネル上で送信されるデータのフォーマットは、前記リンクの前記最終的構成に基づく、請求項10に記載の装置。
【請求項12】
前記リンクパートナD2Dアダプタは、前記リンクの前記最終的構成に基づいて、前記フォーマットについて複数のフリットフォーマットの1つを選択する、請求項11に記載の装置。
【請求項13】
前記回路は更に、前記リンクパートナD2Dアダプタへの前記共有機能を識別するために、前記サイドバンドチャネルを通じて、最終的構成メッセージを前記リンクパートナD2Dアダプタへ送信する、請求項10に記載の装置。
【請求項14】
前記機能のセットは、前記ダイ上の物理層(PHY)ブロックによって実行される前記リンクのトレーニングの結果に基づき、前記リンクパートナD2Dアダプタは、プロトコルスタックを実装するために、前記ダイ上の前記PHYブロック、及び、プロトコル層ブロックの間に位置する、請求項9に記載の装置。
【請求項15】
前記機能のセットは、ソフトウェアによって、前記レジスタのセットにおける制御レジスタに書き込まれる値に基づく、請求項9に記載の装置。
【請求項16】
前記回路のリトライ機能は、前記D2Dリンクの物理層トレーニングの結果に基づいて有効化される、請求項9から15のいずれか一項に記載の装置。
【請求項17】
第1ダイ;
ダイ間(D2D)リンクによって前記第1ダイに結合された第2ダイ、ここで、前記第2ダイは、前記第2ダイを前記D2Dリンクに接続するためのポートを含み、前記ポートは、
特定のインターコネクトプロトコルを実装するためのプロトコル層論理;
D2Dアダプタ回路;
物理層(PHY)回路;及び
前記D2Dアダプタ回路及び前記PHY回路に関連付けられた1又は複数のレジスタ
を含む;及び
値を読み取り、前記1又は複数のレジスタに書き込むためのソフトウェアシステム
を備え
ここで、前記D2Dアダプタ回路は、
前記1又は複数のレジスタにおける値に基づいて、前記第1ダイ上のD2Dアダプタにアドバタイズされる機能のサブセットを決定する;及び
前記機能のサブセットを識別するために、前記D2Dリンクのサイドバンドチャネルを通じて機能メッセージを送信する、
システム。
【請求項18】
前記第1ダイはプロセッサデバイスを含み、前記第2ダイは、別のプロセッサデバイス、ハードウェアアクセラレータ、又は入出力(I/O)デバイスの1つを含む、請求項17に記載のシステム。
【請求項19】
前記第1ダイ及び前記第2ダイは同じパッケージ上にある、請求項17に記載のシステム。
【請求項20】
前記第1ダイは、第1リタイマを含み、前記第2ダイは、第2リタイマを含み、前記第1ダイ及び前記第2ダイは、別個のパッケージ上にあり、前記D2Dリンクは、オフパッケージインターコネクトを実装する、請求項17から19のいずれか一項に記載のシステム。
【請求項21】
ダイ上のレジスタの特定のセットの存在に基づいて、ユニバーサルチップレットインターコネクトエクスプレス(UCIe)ベースプロトコルに前記ダイが準拠していると判定する段階、ここで、前記ダイは、前記UCIeベースプロトコルに基づいて、ダイ間(D2D)リンクによって別のリンクパートナダイに結合される;
前記レジスタの特定のセットにおける機能レジスタにアクセスする段階;
前記機能レジスタから利用可能な機能を読み取る段階、ここで、前記利用可能な機能は、前記ダイ上に存在するD2Dアダプタ及び物理層(PHY)ブロックの機能を含む;
前記D2Dリンクについて有効化される前記利用可能な機能における機能のセットを決定する段階;
前記機能のセットを有効化するために制御レジスタの値を書き込む段階;及び
前記D2Dリンクのトレーニングを開始するために前記制御レジスタに開始リンクトレーニング値を書き込む段階;
を備える方法。
【請求項22】
前記利用可能な機能は、ローモードを含む、請求項21に記載の方法。
【請求項23】
前記利用可能な機能は、複数のプロトコル層をサポートする機能を含む、請求項21に記載の方法。
【請求項24】
前記D2Dアダプタは、第1インタフェースによって前記ダイ上の前記PHYブロックに、及び、第2インタフェースによって前記ダイ上のプロトコル層ブロックに結合され、前記D2Dアダプタは、UCIeプロトコルスタックにおける前記プロトコル層ブロック及び前記PHYブロックの間に位置し、ここで、前記PHYブロックは、前記リンクパートナダイとの前記D2Dリンクのトレーニングを実行する、請求項21に記載の方法。
【請求項25】
請求項21から24のいずれか一項に記載の方法を実行するための手段を備えるシステム。
【請求項26】
請求項1から8のいずれか一項に記載のコンピュータプログラムを格納するコンピュータ可読記録媒体。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0159
【補正方法】変更
【補正の内容】
【0159】
上記の明細書において、詳細な説明が、特定の例示的な実施形態を参照して行われた。しかしながら、様々な修正又は変更が、添付の特許請求の範囲に説明された発明の、より広範な意図及び範囲から逸脱することなく、それら実施形態に対して行われてよいことは、明らかであろう。したがって、本明細書及び図面は、限定的な意味ではなく、例示的な意味で考えられるべきである。更に、実施形態及び他の例示的な言語の上記の使用は、必ずしも同じ実施形態又は同じ例を指しているとは限らず、異なる個別の実施形態及び潜在的に同じ実施形態を指してよい。
(他の考えられる項目)
(項目1)
命令が格納された少なくとも1つの非一時的機械可読記憶媒体であって、前記命令は機械によって実行可能であり、前記機械に:
ダイ上のレジスタの特定のセットの存在に基づいて、ユニバーサルチップレットインターコネクトエクスプレス(UCIe)ベースプロトコルに前記ダイが準拠していると判定する手順、ここで、前記ダイは、前記UCIeベースプロトコルに基づいて、ダイ間(D2D)リンクによって別のリンクパートナダイに結合する;
前記レジスタの特定のセットにおける機能レジスタにアクセスする手順;
前記機能レジスタから利用可能な機能を読み取る手順、ここで、前記利用可能な機能は、前記ダイ上に存在するD2Dアダプタ及び物理層(PHY)ブロックの機能を含む;
前記D2Dリンクについて有効化される前記利用可能な機能における機能のセットを決定する手順;
前記機能のセットを有効化するために制御レジスタの値を書き込む手順;及び
前記D2Dリンクのトレーニングを開始するために前記制御レジスタに開始リンクトレーニング値を書き込む手順;
を行わせる、少なくとも1つの非一時的機械可読記憶媒体。
(項目2)
前記利用可能な機能は、ローモードを含む、項目1に記載の記憶媒体。
(項目3)
前記利用可能な機能は、複数のプロトコル層をサポートする機能を含む、項目1から2のいずれか一項に記載の記憶媒体。
(項目4)
前記D2Dアダプタは、第1インタフェースによって前記ダイ上の前記PHYブロックに、及び、第2インタフェースによって前記ダイ上のプロトコル層ブロックに結合され、前記D2Dアダプタは、UCIeプロトコルスタックにおける前記プロトコル層ブロック及び前記PHYブロックの間に位置する、項目1から3のいずれか一項に記載の記憶媒体。
(項目5)
前記PHYブロックは、前記リンクパートナダイとの前記D2Dリンクのトレーニングを実行する、項目4に記載の記憶媒体。
(項目6)
前記D2Dアダプタは、前記制御レジスタの値を使用して、前記リンクパートナダイとの間で、前記D2Dリンク上で使用されるプロトコル及びフリットフォーマットをネゴシエートする、項目1から5のいずれか一項に記載の記憶媒体。
(項目7)
前記フリットフォーマットは、前記UCIeベースプロトコルにおいて定義される複数の異なるフリットフォーマットの1つから決定される、項目6に記載の記憶媒体。
(項目8)
前記プロトコルは、前記UCIeベースプロトコルにおいて定義される複数の異なるプロトコルの1つから決定され、前記フリットフォーマットは、前記プロトコルに基づいて決定される、項目6に記載の記憶媒体。
(項目9)
ダイ間アダプタを備える装置であって、
前記ダイ間アダプタは、
レジスタのセット;
前記レジスタのセットから、リンクパートナD2Dアダプタとのネゴシエーションにおいてアドバタイズするための、前記D2Dアダプタの機能のセットを決定する手順、ここで、前記D2Dアダプタはダイ上にあり、前記リンクパートナD2Dアダプタは、リモートリンクパートナダイ上に配置されている;
前記機能のセットを前記リンクパートナD2Dアダプタにアドバタイズするために、第1機能アドバタイズメントメッセージを前記リンクパートナD2Dアダプタに送信する手順;
第2機能アドバタイズメントメッセージを前記リンクパートナD2Dアダプタから受信する手順、ここで、前記第2機能アドバタイズメントメッセージは、前記リンクパートナD2Dアダプタの機能のセットを識別する;
前記D2Dアダプタ及び前記リンクパートナD2Dアダプタの共有機能を判定する手順;及び
前記ダイを前記リンクパートナダイに結合するために、D2Dリンクの最終的構成を決定する手順
を行うための回路
含む、装置。
(項目10)
前記リンクはメインバンドチャネル及び別個のサイドバンドチャネルを含み、前記第1機能アドバタイズメントメッセージは前記サイドバンドチャネル上で送信され、前記第2機能アドバタイズメントメッセージは前記サイドバンドチャネル上で受信される、項目9に記載の装置。
(項目11)
前記メインバンドチャネル上で送信されるデータのフォーマットは、前記リンクの前記最終的構成に基づく、項目10に記載の装置。
(項目12)
前記D2Dアダプタは、前記リンクの前記最終的構成に基づいて、前記フォーマットについて複数のフリットフォーマットの1つを選択する、項目11に記載の装置。
(項目13)
前記回路は更に、前記リンクパートナD2Dアダプタへの前記共有機能を識別するために、前記サイドバンドチャネルを通じて、最終的構成メッセージを前記リンクパートナD2Dアダプタへ送信する、項目10から12のいずれか一項に記載の装置。
(項目14)
前記機能のセットは、前記ダイ上の物理層(PHY)ブロックによって実行される前記リンクのトレーニングの結果に基づき、前記D2Dアダプタは、プロトコルスタックを実装するために、前記ダイ上の前記PHYブロック、及び、プロトコル層ブロックの間に位置する、項目9から13のいずれか一項に記載の装置。
(項目15)
前記機能のセットは、ソフトウェアによって、前記レジスタのセットにおける制御レジスタに書き込まれる値に基づく、項目9から14のいずれか一項に記載の装置。
(項目16)
前記回路のリトライ機能は、前記D2Dリンクの物理層トレーニングの結果に基づいて有効化される、項目9から15のいずれか一項に記載の装置。
(項目17)
第1ダイ;
ダイ間(D2D)リンクによって前記第1ダイに結合された第2ダイ、ここで、前記第2ダイは、前記第2ダイを前記D2Dリンクに接続するためのポートを含み、前記ポートは、
特定のインターコネクトプロトコルを実装するためのプロトコル層論理;
D2Dアダプタ回路;
物理層(PHY)回路;及び
前記D2Dアダプタ回路及び前記PHY回路に関連付けられた1又は複数のレジスタ
を含む;及び
値を読み取り、前記1又は複数のレジスタに書き込むためのソフトウェアシステム
を備え
ここで、前記D2Dアダプタ回路は、
前記1又は複数のレジスタにおける値に基づいて、前記第1ダイ上のD2Dアダプタにアドバタイズされる機能のサブセットを決定する;及び
前記機能のサブセットを識別するために、前記D2Dリンクのサイドバンドチャネルを通じて機能メッセージを送信する、
システム。
(項目18)
前記第1ダイはプロセッサデバイスを含み、前記第2ダイは、別のプロセッサデバイス、ハードウェアアクセラレータ、又は入出力(I/O)デバイスの1つを含む、項目17に記載のシステム。
(項目19)
前記第1ダイ及び前記第2ダイは同じパッケージ上にある、項目17から18のいずれか一項に記載のシステム。
(項目20)
前記第1ダイは、第1リタイマを含み、前記第2ダイは、第2リタイマを含み、前記第1ダイ及び前記第2ダイは、別個のパッケージ上にあり、前記D2Dリンクは、オフパッケージインターコネクトを実装する、項目17から19のいずれか一項に記載のシステム。
(項目21)
ダイ上のレジスタの特定のセットの存在に基づいて、ユニバーサルチップレットインターコネクトエクスプレス(UCIe)ベースプロトコルに前記ダイが準拠していると判定する段階、ここで、前記ダイは、前記UCIeベースプロトコルに基づいて、ダイ間(D2D)リンクによって別のリンクパートナダイに結合される;
前記レジスタの特定のセットにおける機能レジスタにアクセスする段階;
前記機能レジスタから利用可能な機能を読み取る段階、ここで、前記利用可能な機能は、前記ダイ上に存在するD2Dアダプタ及び物理層(PHY)ブロックの機能を含む;
前記D2Dリンクについて有効化される前記利用可能な機能における機能のセットを決定する段階;
前記機能のセットを有効化するために制御レジスタの値を書き込む段階;及び
前記D2Dリンクのトレーニングを開始するために前記制御レジスタに開始リンクトレーニング値を書き込む段階;
を備える方法。
(項目22)
前記利用可能な機能は、ローモードを含む、項目21に記載の方法。
(項目23)
前記利用可能な機能は、複数のプロトコル層をサポートする機能を含む、項目21から22のいずれか一項に記載の方法。
(項目24)
前記D2Dアダプタは、第1インタフェースによって前記ダイ上の前記PHYブロックに、及び、第2インタフェースによって前記ダイ上のプロトコル層ブロックに結合され、前記D2Dアダプタは、UCIeプロトコルスタックにおける前記プロトコル層ブロック及び前記PHYブロックの間に位置する、項目21から23のいずれか一項に記載の方法。
(項目25)
前記PHYブロックは、前記リンクパートナダイとの前記D2Dリンクのトレーニングを実行する、項目24に記載の方法。
(項目26)
前記D2Dアダプタは、前記制御レジスタの値を使用して、前記リンクパートナダイとの間で、前記D2Dリンク上で使用されるプロトコル及びフリットフォーマットをネゴシエートする、項目21から25のいずれか一項に記載の方法。
(項目27)
前記フリットフォーマットは、前記UCIeベースプロトコルにおいて定義される複数の異なるフリットフォーマットの1つから決定される、項目26に記載の方法。
(項目28)
前記プロトコルは、前記UCIeベースプロトコルにおいて定義される複数の異なるプロトコルの1つから決定され、前記フリットフォーマットは、前記プロトコルに基づいて決定される、項目26に記載の方法。
(項目29)
項目21から28のいずれか一項に記載の方法を実行するための手段を備えるシステム。
【国際調査報告】