(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-17
(54)【発明の名称】部分幅リンク状態におけるレイテンシ最適化
(51)【国際特許分類】
H04L 1/00 20060101AFI20240709BHJP
【FI】
H04L1/00 E
H04L1/00 B
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023569594
(86)(22)【出願日】2022-11-21
(85)【翻訳文提出日】2023-12-22
(86)【国際出願番号】 US2022050639
(87)【国際公開番号】W WO2023121805
(87)【国際公開日】2023-06-29
(32)【優先日】2021-12-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ダス シャーマ、デベンドラ
【テーマコード(参考)】
5K014
【Fターム(参考)】
5K014BA05
(57)【要約】
第1のフリットフォーマットに従って第1のフリットが生成され、ここで、第1のフリットにおいて送信されることになるデータ量に対して第1の数の誤り検出符号が提供され、第1のフリットは、リンクが第1のリンク幅で動作している間に送信機によってリンク上で送信されることになる。リンクは、第1のリンク幅から第2のリンク幅に遷移し、ここで、第2のリンク幅は、第1のリンク幅よりも狭い。第2のリンク幅への遷移に基づき、第2のフリットフォーマットに従って第2のフリットが生成され、ここで、第2のフリットは、リンクが第2のリンク幅で動作している間に送信されることになり、第2のフリットフォーマットは、同じデータ量に対して第2のより大きい数の誤り検出符号が提供されることになることを定義する。
【特許請求の範囲】
【請求項1】
ポートを備える装置であって、
前記ポートは、
送信機;及び
プロトコル回路であって、
第1のフリットフォーマットに従って第1のフリットを生成し、ここで、前記第1のフリットフォーマットは、前記第1のフリットにおいて送信されることになるデータ量に対して第1の数の誤り検出符号が提供されることになることを定義し、前記第1のフリットは、リンクが第1のリンク幅で動作している間に前記送信機によって前記リンク上で送信されることになり、ここで、前記リンクは、前記ポートを別のコンピューティングデバイスに連結する;
第1のリンク幅から第2のリンク幅への前記リンクの遷移を識別し、ここで、前記第2のリンク幅は、前記第1のリンク幅よりも狭い;及び
前記第2のリンク幅への前記遷移に基づき、第2のフリットフォーマットに従って第2のフリットを生成し、ここで、前記第2のフリットは、前記リンクが前記第2のリンク幅で動作している間に送信されることになり、前記第2のフリットフォーマットは、前記第2のフリットにおいて送信されることになる同じデータ量に対して第2の数の誤り検出符号が提供されることになることを定義し、ここで、前記第2の数は、前記第1の数よりも大きい
を有する、装置。
【請求項2】
前記第1のリンク幅では第1の数のアクティブ物理レーンが利用されることになり、前記第2のリンク幅では第2のより少数のアクティブ物理レーンが利用されることになる、請求項1に記載の装置。
【請求項3】
前記第1のフリットにおける前記データ量は、第1のトランザクション層データを保持し、前記第2のフリットにおける前記データ量は、第2のトランザクション層パケットデータを保持する、請求項1に記載の装置。
【請求項4】
前記第1のフリットフォーマットは、定義された第1の長さを有し、前記第2のフリットフォーマットは、前記第1の長さよりも長い定義された第2の長さを有する、請求項1~2のいずれか一項に記載の装置。
【請求項5】
前記第1の数の誤り検出符号は、前記第1のフリットのそれぞれの部分に対してそれぞれの巡回冗長検査(CRC)符号をそれぞれ含み、前記第2の数の誤り検出符号のそれぞれは、前記第2のフリットのそれぞれの部分に対してそれぞれのCRC符号を含む、請求項1~3のいずれか一項に記載の装置。
【請求項6】
前記第1のフリットフォーマットは、前記第1のフリットの前記データ量に基づいて計算された第1の誤り訂正符号を含み、前記第2のフリットフォーマットは、前記第2のフリットの前記データ量に基づいて計算された第2の誤り訂正符号を含む、請求項5に記載の装置。
【請求項7】
前記第1の誤り訂正符号は、第1の前方誤り訂正(FEC)符号を含み、前記第2の誤り訂正符号は、第2のFEC符号を含む、請求項6に記載の装置。
【請求項8】
前記プロトコル回路は、さらに、第1のアクティブリンク状態から部分幅アクティブリンク状態に遷移するようになっており、前記第1のリンク幅から前記第2のリンク幅への前記遷移は、前記第1のアクティブリンク状態から前記部分幅アクティブリンク状態への前記遷移に伴ったものである、請求項1~7のいずれか一項に記載の装置。
【請求項9】
前記第1のフリットフォーマット及び前記第2のフリットフォーマットは、インターコネクトプロトコルに従ったものである、請求項1~8のいずれか一項に記載の装置。
【請求項10】
前記インターコネクトプロトコルは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、コンピュートエクスプレスリンク(CXL)、又はUltraPathインターコネクト(UPI)のうちの1つを含む、請求項9に記載の装置。
【請求項11】
リンクが第1のリンク幅で動作している場合に第1のフリットフォーマットに従ってフリットを送信する段階、ここで、前記第1のフリットフォーマットは、第1のデータ量を保護するために第1の数の巡回冗長検査(CRC)符号を含む;
前記リンクを前記第1のリンク幅から第2のリンク幅に遷移させる段階、ここで、前記第2のリンク幅は、部分リンク幅を含み、前記第2のリンク幅は、前記第1のリンク幅よりも狭い;及び
前記リンクが前記第2のリンク幅で動作している場合に第2のフリットフォーマットに従ってフリットを送信する段階、ここで、前記第2のフリットフォーマットは、第2のデータ量を保護するために第2の数のCRC符号を含み、前記第1のデータ量は、前記第2のデータ量に等しく、CRC符号の前記第2の数は、CRC符号の前記第1の数よりも大きい
を備える方法。
【請求項12】
前記第2のリンク幅が閾値リンク幅よりも狭いことを判定する段階;及び
前記第2のリンク幅が前記閾値リンク幅よりも狭いことに基づき、前記第1のフリットフォーマットの代わりに前記第2のフリットフォーマットが使用されることになると判定する段階
をさらに備える、請求項11に記載の方法。
【請求項13】
前記リンクのトレーニングに参加する段階、ここで、前記リンクは、第1のデバイスを第2のデバイスに連結する;
前記リンクのトレーニング中、前記第1のデバイス及び前記第2のデバイスの両方が前記第2のフリットフォーマットの使用をサポートしていることを判定する段階、ここで、前記第1のデバイス及び第2のデバイスによる前記第2のフリットフォーマットの相互サポートの判定に基づいて、前記第2のフリットフォーマットが前記第2のリンク幅で使用される
をさらに備える、請求項11~12のいずれか一項に記載の方法。
【請求項14】
前記リンクのトレーニング中、前記第2のフリットフォーマットの使用に対応する閾値リンク幅を判定する段階、ここで、前記リンクの前記リンク幅が前記閾値リンク幅よりも狭い場合、前記第2のフリットフォーマットが使用されることになる
をさらに備える、請求項13に記載の方法。
【請求項15】
部分幅状態では、前記第1のリンク幅及び前記第2のリンク幅の両方が使用される、請求項11~14のいずれか一項に記載の方法。
【請求項16】
前記第1のフリットフォーマットは、前記第1のフリットの前記データ量に基づいて計算された第1の誤り訂正符号を含み、前記第2のフリットフォーマットは、前記第2のフリットの前記データ量に基づいて計算された第2の誤り訂正符号を含む、請求項11~15のいずれか一項に記載の方法。
【請求項17】
前記第1の誤り訂正符号は、第1の前方誤り訂正(FEC)符号を含み、前記第2の誤り訂正符号は、第2のFEC符号を含む、請求項16に記載の方法。
【請求項18】
前記第1のフリットフォーマット及び前記第2のフリットフォーマットは、インターコネクトプロトコルに従ったものである、請求項11~17のいずれか一項に記載の方法。
【請求項19】
前記インターコネクトプロトコルは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、コンピュートエクスプレスリンク(CXL)、又はUltraPathインターコネクト(UPI)のうちの1つを含む、請求項18に記載の方法。
【請求項20】
請求項11~19のいずれか一項に記載の方法を実行するための手段を備えるシステム。
【請求項21】
前記手段は、命令が記憶された非一時的機械可読媒体を含み、前記命令は、請求項11~19のいずれか一項に記載の方法の少なくとも一部を機械に実行させるように前記機械によって実行可能である、請求項20に記載のシステム。
【請求項22】
第1のデバイス;及び
リンクによって前記第1のデバイスに連結された第2のデバイスであって、前記第2のデバイスは、
前記リンクが第1のリンク幅で動作している間に前記リンク上で前記第1のデバイスに第1のデータユニットを送信し、ここで、前記第1のユニットは、第1のフォーマットに従ってフォーマット化されており、前記第1のフォーマットは、前記第1のデータユニットのそれぞれが、特定のデータ量を保持し、前記特定のデータ量に対して第1の数の誤り検出符号を含むことを定義する;
前記第1のリンク幅から第2のリンク幅に遷移し、ここで、前記第1のリンク幅では、前記第2のリンク幅におけるよりも多数のレーンが使用される;及び
前記リンクが前記第2のリンク幅で動作している間に、前記リンク上で前記第1のデバイスに第2のデータユニットを送信する、ここで、前記第2のデータユニットは、第2のフォーマットに従ってフォーマット化されており、前記第2のフォーマットは、前記第2のデータユニットのそれぞれが、前記特定のデータ量を保持し、前記特定のデータ量に対して第2の数の誤り検出符号を含むことを定義し、ここで、前記第2の数は、前記第1の数よりも大きい
ようになっている回路を含む第2のデバイス
を備えるシステム。
【請求項23】
前記回路は、さらに、前記第2のリンク幅が前記リンクに関して定義された閾値リンク幅よりも狭いことを判定するようになっており、前記第2のリンク幅が前記閾値リンク幅よりも狭いとの判定に基づき、前記リンク上で送信されるデータユニットに対して前記第2のフォーマットが使用される、請求項22に記載のシステム。
【請求項24】
前記データユニットは、フリットを含む、請求項22~23のいずれか一項に記載のシステム。
【請求項25】
前記第1のデバイス又は前記第2のデバイスのうちの1つは、プロセッサデバイスを含む、請求項22~24のいずれか一項に記載のシステム。
【請求項26】
前記第1のデバイス又は前記第2のデバイスのうちの1つは、アクセラレータデバイスを含む、請求項22~24のいずれか一項に記載のシステム。
【請求項27】
前記第1のリンク幅では第1の数のアクティブ物理レーンが利用されることになり、前記第2のリンク幅では第2のより少数のアクティブ物理レーンが利用されることになる、請求項22~26のいずれか一項に記載のシステム。
【請求項28】
前記第1のユニットにおける前記データ量は、第1のトランザクション層データを保持し、前記第2のユニットにおける前記データ量は、第2のトランザクション層パケットデータを保持する、請求項22~27のいずれか一項に記載のシステム。
【請求項29】
前記第1のフォーマットは、定義された第1の長さを有し、前記第2のフォーマットは、前記第1の長さよりも長い定義された第2の長さを有する、請求項22~28のいずれか一項に記載のシステム。
【請求項30】
前記第1の数の誤り検出符号は、前記第1のユニットのそれぞれの部分に対してそれぞれの巡回冗長検査(CRC)符号をそれぞれ含み、前記第2の数の誤り検出符号のそれぞれは、前記第2のユニットのそれぞれの部分に対してそれぞれのCRC符号を含む、請求項22~29のいずれか一項に記載のシステム。
【請求項31】
前記第1のフォーマットは、前記第1のユニットの前記データ量に基づいて計算された第1の誤り訂正符号を含み、前記第2のフォーマットは、前記第2のユニットの前記データ量に基づいて計算された第2の誤り訂正符号を含む、請求項30に記載のシステム。
【請求項32】
前記第1の誤り訂正符号は、第1の前方誤り訂正(FEC)符号を含み、前記第2の誤り訂正符号は、第2のFEC符号を含む、請求項31に記載のシステム。
【請求項33】
前記プロトコル回路は、さらに、第1のアクティブリンク状態から部分幅アクティブリンク状態に遷移するようになっており、前記第1のリンク幅から前記第2のリンク幅への前記遷移は、前記第1のアクティブリンク状態から前記部分幅アクティブリンク状態への前記遷移に伴ったものである、請求項22~32のいずれか一項に記載のシステム。
【請求項34】
前記第1のフォーマット及び前記第2のフォーマットは、インターコネクトプロトコルに従ったものである、請求項22~33のいずれか一項に記載のシステム。
【請求項35】
前記インターコネクトプロトコルは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、コンピュートエクスプレスリンク(CXL)、又はUltraPathインターコネクト(UPI)のうちの1つを含む、請求項34に記載のシステム。
【請求項36】
リンクの特性を判定する段階、ここで、前記リンクは、第1のデバイスを第2のデバイスに連結する;
特定のフリットにおいて検出されたエラーに基づき、フリットのストリームにおける前記特定のフリットの送信をリトライするための選択的リトライ要求を識別する段階;
前記選択的リトライ要求に基づき、リトライバッファにおけるフリットのバッファリングを通して蓄積したレイテンシを判定する段階;及び
前記リトライバッファをクリアすることを支援するように、前記リンク上でのトラフィックをスロットリングする段階
を備える方法。
【請求項37】
前記リンクは、PCIeベースのプロトコルに準拠する、請求項36に記載の方法。
【請求項38】
前記特性は、前記リンクについての予測された帯域幅利用可能性を含む、請求項36~37のいずれか一項に記載の方法。
【請求項39】
前記特性は、前記リンクについての予測されたエラーレートを含む、請求項36~38のいずれか一項に記載の方法。
【請求項40】
前記特性は、ソフトウェアによって決定される、請求項36~39のいずれか一項に記載の方法。
【請求項41】
請求項36~40のいずれか一項に記載の方法を実行するための手段を備えるシステム。
【請求項42】
前記手段は、命令が記憶された非一時的機械可読媒体を含み、前記命令は、請求項36~40のいずれか一項に記載の方法の少なくとも一部を機械に実行させるように、前記機械によって実行可能である、請求項41に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願]
本願は、2021年12月20日に出願された、「部分幅リンク状態におけるレイテンシ最適化」と題する、米国特許出願第17/556,685号に対する優先権を主張する。この優先出願は、参照により本明細書に援用される。
【0002】
本開示は、コンピューティングシステム、特に(限定するものではないが)物理インターコネクト及び関連するリンクプロトコルに関する。
【背景技術】
【0003】
半導体処理及びロジック設計における進歩は、集積回路デバイスに存在し得るロジック量の増加を可能にするに至った。当然の結果として、コンピュータシステム構成は、システム内の単一又は複数の集積回路から、個々の集積回路上に存在する複数のコア、複数のハードウェアスレッド、及び複数の論理プロセッサ、並びにそのようなプロセッサと統合された他のインタフェースへと進化した。プロセッサ又は集積回路は通常、単一の物理プロセッサダイを備え、当該プロセッサダイは、任意の数のコア、ハードウェアスレッド、論理プロセッサ、インタフェース、メモリ、コントローラハブ等を含み得る。
【0004】
より小さなパッケージで、より大きな処理能力に適合できる、より高い能力の結果として、より小さなコンピューティングデバイスが人気を高めてきた。スマートフォン、タブレット、極薄ノートブック、及び他のユーザ機器が、飛躍的に成長してきた。しかしながら、これらのより小さなデバイスは、データストレージ及びフォームファクタを超過する複雑な処理の両方について、サーバに依存する。結果として、高性能コンピューティング市場(すなわち、サーバ空間)における需要も増大した。例えば、現在のサーバにおいて、コンピューティング能力を増大させるには通常、複数のコアを持つシングルプロセッサだけでなく、複数の物理プロセッサ(複数のソケットとも称される)も存在する。しかしながら、コンピューティングシステム内のデバイス数とともに処理能力が増大するにつれ、ソケットと他のデバイス間の通信がより重要なものになっている。
【0005】
実際、インターコネクトは、電気通信を主に処理してきたより従来型のマルチドロップバスから、高速通信を容易にする本格的なインターコネクトアーキテクチャへと成長した。残念ながら、はるかに高いレートで消費する将来のプロセッサの需要があるので、既存のインターコネクトアーキテクチャの機能にも対応する需要がある。
【図面の簡単な説明】
【0006】
【
図1】インターコネクトアーキテクチャを含む、コンピューティングシステムの実施形態を示している。
【0007】
【
図2】階層型スタックを含む、インターコネクトアーキテクチャの実施形態を示している。
【0008】
【
図3】インターコネクトアーキテクチャ内で生成又は受信されことになる要求又はパケットの実施形態を示している。
【0009】
【
図4】インターコネクトアーキテクチャのための送信機及び受信機のペアの実施形態を示している。
【0010】
【
図5】潜在的な高性能プロセッサツープロセッサインターコネクト構成の実施形態を示している。
【0011】
【
図6】インターコネクトに関連付けられている階層型プロトコルスタックの実施形態を示している。
【0012】
【
図7】コンピュートエクスプレスリンク(CXL)ベースプロトコルに準拠するリンクを利用する例示的なコンピューティングシステムの簡易ブロックダイアグラムを示している。
【0013】
【
図8】複数の集積回路ブロックを含む例示的なシステムの簡易ブロックダイアグラムを示している。
【0014】
【
図9】例示的なプロトコル回路の簡易ブロックダイアグラムを示している。
【0015】
【
図10】ポートの例示的なプロトコル回路の簡易ブロックダイアグラムを示している。
【0016】
【
図11A】例示的な標準フリットフォーマット(flit formats)の表現を示している。
【
図11B】例示的な標準フリットフォーマット(flit formats)の表現を示している。
【
図11C】例示的な標準フリットフォーマット(flit formats)の表現を示している。
【
図11D】例示的な標準フリットフォーマット(flit formats)の表現を示している。
【0017】
【
図12A】部分幅リンク条件(partial width link conditions)中に使用される例示的な変更されたフリットフォーマットの表現を示している。
【
図12B】部分幅リンク条件(partial width link conditions)中に使用される例示的な変更されたフリットフォーマットの表現を示している。
【
図12C】部分幅リンク条件(partial width link conditions)中に使用される例示的な変更されたフリットフォーマットの表現を示している。
【0018】
【
図13A】部分幅リンク条件中の例示的な変更されたフリットフォーマットを示す簡易ブロックダイアグラムである。
【0019】
【
図13B】選択的リトライイベントに伴ってレイテンシに対処するためのスロットリングを示す簡易ブロックダイアグラムである。
【0020】
【
図14】マルチコアプロセッサを含むコンピューティングシステムに関するブロックダイアグラムの実施形態を示している。
【0021】
【
図15】複数のプロセッサを含むコンピューティングシステムに関するブロックの実施形態を示している。
【発明を実施するための形態】
【0022】
以下の説明には、本開示の深い理解を与えるべく、多数の具体的な詳細、例えば、複数の特定のタイプのプロセッサ及びシステム構成、特定のハードウェア構造、特定のアーキテクチャ上及びマイクロアーキテクチャ上の細部、特定のレジスタ構成、特定の命令タイプ、特定のシステムコンポーネント、特定の寸法/高さ、特定のプロセッサパイプライン段階、及び動作等の例が記載されている。しかしながら、当業者であれば、本開示において提供される解決手段を実行するためにこれらの具体的な詳細を採用する必要はないことは明らかであろう。他の例において、複数の特定及び代替的なプロセッサアーキテクチャ、記載された複数のアルゴリズム用の複数の特定のロジック回路/コード、特定のファームウェアコード、特定の相互接続動作、複数の特定のロジック構成、複数の特定の製造技術及び材料、複数の特定のコンパイラ実装、コード内の複数のアルゴリズムについての特定の表現、特定のパワーダウン及びゲーティング技術/ロジック並びにコンピュータシステムの他の特定の動作の詳細のような、周知のコンポーネント又は方法は、本開示を不必要に不明瞭にするのを回避すべく詳細には記載されていない。
【0023】
以下の実施形態は、コンピューティングプラットフォーム又はマイクロプロセッサにおけるような、具体的な集積回路においてエネルギー節約及びエネルギー効率を参照して説明され得るが、他のタイプの集積回路及びロジックデバイスには他の実施形態を適用可能である。本明細書で説明する実施形態の同様の技術及び教示内容を、より良いエネルギー効率及びエネルギー節約からやはり恩恵を受け得る他のタイプの回路又は半導体デバイスに適用することができる。例えば、開示する実施形態は、デスクトップコンピュータシステム又はUltrabook(商標)に限定されない。ハンドヘルドデバイス、タブレット、他の薄型ノートブック、システムオンチップ(SOC)デバイス、及び、埋め込みアプリケーション等の他のデバイス中でも使用され得る。ハンドヘルドデバイスのいくつかの例には、セルラ電話、インターネットプロトコルデバイス、デジタルカメラ、パーソナルデジタルアシスタント(PDA(登録商標))、及びハンドヘルドPCが含まれる。埋め込みアプリケーションには、一般に、マイクロコントローラ、デジタル信号プロセッサ(DSP)、システムオンチップ、ネットワークコンピュータ(NetPC)、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク(WAN)スイッチ、又は、下記で教示する機能及びオペレーションを実行可能な他の任意のシステムが含まれる。さらに、本明細書で説明する装置、方法、及びシステムは、物理的コンピューティングデバイスに限定されず、エネルギー節約及び効率についてのソフトウェア最適化にも関連し得る。下記の説明で容易に明らかになるように、本明細書で説明する方法、装置、及びシステムの実施形態は、(ハードウェア、ファームウェア、ソフトウェア、又は、それらの組み合わせに関するものであっても、そうでなくても)、性能の考慮事項とのバランスの取れた「グリーンテクノロジ」の未来にとって極めて重要である。
【0024】
コンピューティングシステムが進歩するにつれ、その中におけるコンポーネントはより複雑になっている。結果として、最適なコンポーネント動作のための帯域幅要件が満たされることを保証すべく、コンポーネント間の連結及び通信を行うためのインターコネクトアーキテクチャも複雑性が増している。さらに、異なる複数の市場セグメントは市場ニーズに適合すべく、複数のインターコネクトアーキテクチャの異なる態様を要求する。例えば、複数のサーバがより高性能を要求する一方で、モバイルエコシステムは場合によっては、節電のために全体的な性能を犠牲にしてしまう可能性がある。しかし、最大限の節電で可能な限り高い性能を提供することが、大半のファブリックの唯一の目的である。以下に説明される多数のインターコネクトは、本明細書に記載される解決手段の複数の態様から潜在的に利益を享受するであろう。
【0025】
1つのインターコネクトファブリックアーキテクチャは、ペリフェラルコンポーネントインターコネクト(PCI)エクスプレス(PCIe)アーキテクチャを含む。PCIeの主目的は、複数の異なるベンダからの複数のコンポーネント及びデバイスを、複数の市場セグメント;クライアント(デスクトップ及びモバイル)、サーバ(スタンダード及びエンタープライズ)、及び埋め込み通信デバイスにわたるオープンアーキテクチャで相互運用できるようにすることである。PCI Expressは、様々な将来の複数のコンピューティング及び通信プラットフォームのために定義された高性能汎用I/Oインターコネクトである。その利用モデル、ロード-ストアアーキテクチャ、及びソフトウェアインタフェースのようないくつかのPCI属性が、その改訂版を通して維持されているが、これに対し、以前のパラレルバス実装は、高度にスケーラブルな完全シリアルインタフェースによって置き換えられた。PCI Expressのより最近のバージョンでは、新しいレベルの性能と複数の特徴を供給すべく、ポイントツーポイントインターコネクト、スイッチベースの技術、及びパケット化されたプロトコルにおける進展を活用している。PCI Expressによってサポートされる高度な複数の特徴のいくつかの中には、電力管理、サービスの品質(QoS)、ホットプラグ/ホットスワップサポート、データインテグリティ、及びエラーハンドリングがある。
【0026】
図1を参照すると、コンポーネントのセットを相互接続するポイントツーポイントリンクから構成されるファブリックの一実施形態が示されている。システム100は、コントローラハブ115に連結されたプロセッサ105及びシステムメモリ110を含む。プロセッサ105は、マイクロプロセッサ、ホストプロセッサ、埋め込みプロセッサ、コプロセッサ又は他のプロセッサ等、任意の処理要素を含む。プロセッサ105は、フロントサイドバス(FSB)106を通じてコントローラハブ115に連結されている。一実施形態において、FSB106は、後述のようなシリアルポイントツーポイントインターコネクトである。別の実施形態において、リンク106は、異なるインターコネクト規格に準拠するシリアル差動インターコネクトアーキテクチャを含む。
【0027】
システムメモリ110は、ランダムアクセスメモリ(RAM)、不揮発性(NV)メモリ、又はシステム100における複数のデバイスによってアクセス可能な他のメモリのような、任意のメモリデバイスを含む。システムメモリ110は、メモリインタフェース116を通じてコントローラハブ115に連結されている。メモリインタフェースの例は、ダブルデータレート(DDR)メモリインタフェース、デュアルチャネルDDRメモリインタフェース及びダイナミックRAM(DRAM)メモリインタフェースを含む。
【0028】
一実施形態において、コントローラハブ115は、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe又はPCIE)インターコネクト階層内のルートハブ、ルートコンプレックス、又はルートコントローラである。コントローラハブ115の例は、チップセット、メモリコントローラハブ(MCH)、ノースブリッジ、インターコネクトコントローラハブ(ICH)、サウスブリッジ及びルートコントローラ/ハブを含む。チップセットという用語は多くの場合、2つの物理的に別個のコントローラハブ、すなわち、インターコネクトコントローラハブ(ICH)に連結されたメモリコントローラハブ(MCH)を指す。現在のシステムは多くの場合、プロセッサ105に組み込まれたMCHを含むが、コントローラ115は、後述のものと同様の方式でI/Oデバイスと通信することに留意されたい。いくつかの実施形態において、ピアツーピアルーティングが、ルートコンプレックス115を通じて任意選択的にサポートされる。
【0029】
ここでコントローラハブ115は、シリアルリンク119を介してスイッチ/ブリッジ120に連結される。インタフェース/ポート117及び121とも称され得る入力/出力モジュール117及び121は、階層型プロトコルスタックを包含/実装して、コントローラハブ115とスイッチ120との間の通信を提供する。一実施形態において、複数のデバイスをスイッチ120に連結させることが可能である。
【0030】
スイッチ/ブリッジ120は、デバイス125から上流に、すなわちルートコンプレックスに向かい階層の上方にコントローラハブ115へ、及び下流に、すなわちルートコントローラから離れて階層の下方へ、プロセッサ105又はシステムメモリ110からデバイス125へ、パケット/メッセージをルーティングする。一実施形態において、スイッチ120は、複数の仮想PCI対PCIブリッジデバイスの論理アセンブリと称される。デバイス125は、I/Oデバイス、ネットワークインタフェースコントローラ(NIC)、アドインカード、オーディオプロセッサ、ネットワークプロセッサ、ハードドライブ、ストレージデバイス、CD/DVD ROM、モニタ、プリンタ、マウス、キーボード、ルータ、ポータブルストレージデバイス、ファイヤワイヤデバイス、ユニバーサルシリアルバス(USB)デバイス、スキャナ及び他の入力/出力デバイス等、電子システムに連結される任意の内部又は外部デバイス又はコンポーネントを含む。PCIe用語ではしばしば、そのようなデバイスをエンドポイントと呼ぶ。具体的に示されていないが、デバイス125は、レガシー又は他のバージョンのPCIデバイスをサポートするためのPCIe対PCI/PCI-Xブリッジを含み得る。PCIeにおけるエンドポイントデバイスは多くの場合、レガシー、PCIe又はルートコンプレックス統合エンドポイントとして分類される。
【0031】
グラフィックスアクセラレータ130も、シリアルリンク132を介してコントローラハブ115に連結される。一実施形態において、グラフィックスアクセラレータ130は、ICHに連結されたMCHに連結されている。次に、スイッチ120、及びしたがって、I/Oデバイス125が、ICHに連結されている。また、I/Oモジュール131及び118は、グラフィックスアクセラレータ130とコントローラハブ115との間で通信するための階層型プロトコルスタックを実装する。上記のMCHの議論と同様に、グラフィックスコントローラ又はグラフィックスアクセラレータ130自体が、プロセッサ105に統合されてよい。さらに、システムの1又は複数のリンク(例えば、123)は、例えば、リタイマ、リピータ等、1又は複数の拡張デバイス(例えば、150)を含み得る。
【0032】
図2を見ると、階層型プロトコルスタックの一実施形態が示されている。階層型プロトコルスタック200は、Quick Pathインターコネクト(QPI)スタック、PCIeスタック、次世代高性能コンピューティングインターコネクトスタック又は他の階層型スタック等、任意の形態の階層型通信スタックを含む。
図1~4に関する直下の記載はPCIeスタックに関するものであるが、同じ概念が複数の他のインターコネクトスタックに適用されてよい。一実施形態において、プロトコルスタック200は、トランザクション層205と、リンク層210と、物理層220とを含むPCIeプロトコルスタックである。
図1におけるインタフェース117、118、121、122、126及び131等のインタフェースが、通信プロトコルスタック200として表され得る。通信プロトコルスタックとしての表現は、プロトコルスタックを実装/包含するモジュール又はインタフェースとも称され得る。
【0033】
PCI Expressは、パケットを使用してコンポーネント間で情報を通信する。パケットが、トランザクション層205及びデータリンク層210において形成され、送信コンポーネントから受信コンポーネントへ情報を搬送する。送信されたパケットが他の層を流れる際に、それらの層でパケットを処理するために必要な追加の情報によってパケットが拡張される。受信側において、リバース処理が発生し、パケットは、それらの物理層220表現からデータリンク層210表現へ、最終的に(トランザクション層パケットのため)受信デバイスのトランザクション層205によって処理され得る形態へと変換される。
【0034】
[トランザクション層]
【0035】
一実施形態において、トランザクション層205は、デバイスの処理コアと、データリンク層210及び物理層220のようなインターコネクトアーキテクチャとの間のインタフェースを提供する。これに関して、トランザクション層205の主な役割は、パケット(すなわち、トランザクション層パケット又はTLP)の組み立て及び分解である。変換層205は、典型的には、TLPのためのクレジットベースのフロー制御を管理する。PCIeは、分割トランザクション、すなわち要求及び応答が時間的に隔てられた複数のトランザクションを実装し、ターゲットデバイスが当該応答のためのデータを収集する間、リンクに他のトラフィックを搬送させることを可能にする。
【0036】
また、PCIeはクレジットベースのフロー制御を利用する。このスキームにおいて、デバイスはトランザクション層205内の複数の受信バッファのそれぞれのために、クレジットの初期量を通知する。
図1のコントローラハブ115のようなリンクの反対端における外部デバイスは、各TLPによって消費されるクレジット数をカウントする。トランザクションがクレジット限界を超えない場合、このトランザクションは、送信され得る。応答を受信すると、クレジット量が回復される。クレジットスキームの利点は、クレジット限界が発生しなければ、クレジット返却のレイテンシが性能に影響しないことである。
【0037】
一実施形態において、4つのトランザクションアドレス空間は、構成アドレス空間、メモリアドレス空間、入/出力アドレス空間、及びメッセージアドレス空間を含む。メモリ空間トランザクションは、メモリマップ位置へ/から、データを転送する読み取り要求及び書き込み要求のうちの1又は複数を含む。一実施形態において、メモリ空間トランザクションは、例えば、32ビットアドレス等の短いアドレスフォーマット、又は64ビットアドレス等の長いアドレスフォーマットといった2つの異なるアドレスフォーマットを使用可能である。構成空間トランザクションは、PCIeデバイスの構成空間にアクセスするために用いられる。構成空間に対するトランザクションは、読み取り要求及び書き込み要求を含む。メッセージ空間トランザクション(又は単にメッセージ)は、PCIeエージェント間の帯域内通信をサポートするために定義される。
【0038】
したがって、一実施形態において、トランザクション層205はパケットヘッダ/ペイロード206を組み立てる。現在のパケットヘッダ/ペイロードのフォーマットは、PCIe仕様ウェブサイトにおけるPCIe仕様で見られ得る。
【0039】
図3を素早く参照するに、PCIeトランザクション記述子の一実施形態が示されている。一実施形態において、トランザクション記述子300は、トランザクション情報を搬送するためのメカニズムである。この点において、トランザクション記述子300はシステム内の複数のトランザクションの識別をサポートする。他の複数の潜在的な使用は、デフォルトのトランザクション順序の変更及びトランザクションと複数のチャネルとの関連付けの追跡を含む。
【0040】
トランザクション記述子300は、グローバル識別子フィールド302、属性フィールド304及びチャネル識別子フィールド306を含む。図示される例では、グローバル識別子フィールド302は、ローカルトランザクション識別子フィールド308及びソース識別子フィールド310を含むよう示される。一実施形態において、グローバルトランザクション識別子302は、全ての未処理の要求に対し一意である。
【0041】
一実装に従うと、ローカルトランザクション識別子フィールド308は要求元エージェントによって生成されるフィールドであり、これは、その要求元エージェントのための、完了を必要とする全ての未処理の要求に対して一意である。さらに、この例において、ソース識別子310はPCIe階層内の要求元エージェントを一意に識別する。したがって、ローカルトランザクション識別子308フィールドはソースID310とともに、階層ドメイン内のトランザクションのグローバル識別を提供する。
【0042】
属性フィールド304は、トランザクションの複数の特性及び関係を指定する。この点において、属性フィールド304は、複数のトランザクションのデフォルト処理の変更を可能にする追加の情報を提供するために潜在的に使用される。一実施形態において、属性フィールド304は、優先度フィールド312、予約済フィールド314、順序付けフィールド316、及びスヌープ無しフィールド318を含む。ここで、優先度サブフィールド312はトランザクションに優先度を割り当てるイニシエータによって変更されてよい。予約済属性フィールド314は、将来のため、又はベンダ定義の利用のために、予約されたままとされる。優先度又はセキュリティ属性を使用する、可能な利用モデルが、予約済属性フィールドを使用して実装されてよい。
【0043】
この例において、順序付け属性フィールド316が使用され、デフォルトの順序付けルールを変更し得る順序付けのタイプを伝達する任意の情報を供給する。1つの例示的な実装によると、「0」の順序付け属性は、デフォルトの順序付けルールが適用されることを示し、「1」の順序付け属性は、緩和された順序付けを示し、複数の書き込みが同じ方向への複数の書き込みを渡すことができ、複数の読み取り完了は、同じ方向に複数の書き込みを渡すことができる。スヌープ属性フィールド318は、複数のトランザクションがスヌープされるかどうかを決定すべく利用される。示される通り、チャネルIDフィールド306は、トランザクションが関連付けられるチャネルを識別する。
【0044】
[リンク層]
【0045】
リンク層210は、データリンク層210とも称され、トランザクション層205と物理層220との間の中間段階として動作する。一実施形態において、データリンク層210の役割は、リンク上の2つのコンポーネント間でトランザクション層パケット(TLP)を交換するための信頼性のあるメカニズムを提供することである。データリンク層210の一方側は、トランザクション層205によって組み立てられた複数のTLPを受け入れ、パケットシーケンス識別子211、すなわち識別番号又はパケット番号を適用し、誤り検出符号、すなわちCRC212を計算及び適用し、物理デバイスから外部デバイスにわたる送信のため、変更された複数のTLPを物理層220に送信する。
【0046】
[物理層]
【0047】
一実施形態において、物理層220は、パケットを外部デバイスへ物理的に送信すべく、論理サブブロック221及び電気サブブロック222を含む。ここで、論理サブブロック221は、物理層221の「デジタル」機能を担う。これに関して、論理サブブロックは、物理サブブロック222による送信のための発信情報を準備するための送信セクションと、受信情報をリンク層210に渡す前にそれを識別して準備する受信セクションとを含む。
【0048】
物理ブロック222は、送信機及び受信機を含む。送信機には、論理サブブロック221によって複数のシンボルが供給され、送信機はそれらをシリアライズし、外部デバイスへと送信する。受信機には外部デバイスからのシリアライズされたシンボルが供給され、受信した信号をビットストリームに変換する。ビットストリームは、デシリアライズされ、論理サブブロック221に供給される。一実施形態において、8b/10b送信コードが使用され、ここでは10ビットシンボルが送信/受信される。ここでは、フレーム223を用いてパケットをフレーム化するために、特別なシンボルが用いられる。加えて、一例において、受信機は、着信シリアルストリームから復元されたシンボルクロックも提供する。
【0049】
上述の通り、トランザクション層205、リンク層210、及び物理層220はPCIeプロトコルスタックの具体的な実施形態に関し記載されているが、階層型プロトコルスタックはこれに限定されない。実際には、任意の階層型プロトコルが包含/実装されてよい。一例として、階層型プロトコルとして表されるポート/インタフェースは、(1)複数のパケットを組み立てる第1の層、すなわちトランザクション層;複数のパケットをシーケンス化する第2の層、すなわちリンク層;及び複数のパケットを送信する第3の層、すなわち物理層を含む。具体例として、共通標準インタフェース(CSI)階層型プロトコルが利用される。
【0050】
次に
図4を参照すると、PCIeシリアルポイントツーポイントファブリックの一実施形態が示される。PCIeシリアルポイントツーポイントリンクの一実施形態が示されているが、シリアルポイントツーポイントリンクはシリアルデータを送信するための任意の送信パスを含み、これに限定されない。示される実施形態において、基本のPCIeリンクは2つの低電圧の差動的に駆動される複数の信号ペア、すなわち、送信ペア406/411及び受信ペア412/407を含む。したがって、デバイス405は、データをデバイス410に送信するための送信ロジック406と、デバイス410からデータを受信するための受信ロジック407とを含む。換言すると、2つの送信パス、すなわちパス416及び417と、2つの受信パス、すなわちパス418及び419とがPCIeリンクに含まれる。
【0051】
送信パスは、伝送路、銅線、光回線、無線通信チャネル、赤外線通信リンク、又は他の通信パスのような、データを送信するための任意のパスを指す。例えば、デバイス405及びデバイス410等、2つのデバイス間の接続はリンク415等のリンクと呼ばれる。
リンクは、1つのレーンをサポートしてよく、各レーンは、差動信号ペアのセット(1つのペアは送信用、1つのペアは受信用)を表す。帯域幅をスケーリングするために、リンクはxNで示される複数のレーンを集約してよく、ここでNは任意のサポートされるリンク幅、例えば、1、2、4、8、12、16、32、64、又はそれ以上等である。
【0052】
差動ペアは、差動信号を送信するためのライン416及び417のような2つの送信パスを指す。一例として、ライン416が低電圧レベルから高電圧レベルへと切り替わる、すなわち、立ち上がりエッジである場合、ライン417は、高ロジックレベルから低ロジックレベル、すなわち立ち下りエッジへと、駆動する。複数の差動信号は、複数のより良好な電気的特性、例えば、より良好なシグナルインテグリティ、すなわちクロスカップリング、電圧オーバシュート/アンダシュート、リンギング等を潜在的に示す。これにより、より良好なタイミングウィンドウを可能にし、それにより、より高速な送信周波数を可能にする。
【0053】
1つの実施形態において、2つ又はそれよりも多くのデバイスを相互接続するために、Ultra Pathインターコネクト(商標)(UPI(商標))を利用してよい。UPIは、次世代のキャッシュコヒーレントでリンクベースのインターコネクトを実装することが可能である。1つの例として、UPIは、複数のプロセッサ、複数のアクセラレータ、複数のI/Oデバイス等を接続するために典型的にはPCIe又は別のインターコネクトプロトコルが用いられるシステム内を含む、ワークステーション又はサーバ等の高性能コンピューティングプラットフォームにおいて使用されてよい。しかしながら、UPIはそのように限定されない。代わりに、UPIは、ここで記載される任意のシステム又はプラットフォームにおいて使用されてよい。さらに、開発された個々の思想が、PCIe、MIPI、QPI等のような、他のインターコネクト及びプラットフォームに適用されてよい。
【0054】
複数のデバイスをサポートするべく、1つの例示的な実装において、UPIは、命令セットアーキテクチャ(ISA)には依存しないものを含むことができる(すなわち、UPIは、複数の異なるデバイスに実装されることができる)。別のシナリオでは、UPIは、また、プロセッサ又はアクセラレータだけではなく、高性能I/Oデバイスに接続するために使用されてよい。例えば、高性能PCIeデバイスは、適切な変換ブリッジ(すなわち、UPIからPCIeへ)を通してUPIに連結されてよい。さらに、複数のUPIリンクは、様々なやり方で(例えば、スター、リング、メッシュ等)複数のプロセッサのような多数のUPIベースのデバイスによって使用されてよい。
図5は、複数の潜在的なマルチソケット構成の例示的な実装を示している。図示されるように、2ソケット構成505は、2つのUPIリンクを含むことができるが;他の実装では、1つのUPIリンクが使用されてよい。より大きなトポロジーに対しては、他の追加の又は代替の特徴の中でもとりわけ識別子(ID)が割り当て可能であってかつ何らかの形態で仮想パスが存在する限りにおいて、任意の構成が使用されてよい。示されるように、一例において、4ソケット構成510は、各プロセッサから別のプロセッサへのUPIリンクを有する。しかし、構成515に示される8ソケット実装では、全てのソケットが、UPIリンクを通じて互いに直接的に接続しているわけではない。しかしながら、仮想パス又はチャネルが複数のプロセッサ間に存在する場合には、そうした構成がサポートされる。サポートされる複数のプロセッサの範囲は、ネイティブドメインにおいて、2~32を含む。他の例の中でも、より多数のプロセッサが、複数ドメイン又はノードコントローラ間の他のインターコネクトの使用を通して、達成されてよい。
【0055】
UPIアーキテクチャは、いくつかの例においては、プロトコル層(コヒーレントの、非コヒーレントの、及び任意選択的には、他のメモリベースのプロトコル)、ルーティング層、リンク層、及び物理層を含む、階層型プロトコルアーキテクチャの定義を含む。その上、UPIは、他の例の中でも、電力マネージャ(電力制御ユニット(PCU)のような)、テスト及びデバッグ設計(DFT)、フォールト処理、レジスタ、セキュリティに関連する改善をさらに含むことができる。
図5は、例示的なUPI階層型プロトコルスタックの実施形態を示している。いくつかの実装例において、
図5に示される層のうち少なくともいくつかは、任意であってよい。各層は、その独自のレベルの粒度又は分量の情報を(プロトコル層620a、bはパケット630を、リンク層610a、bはフリット(flit)635を、物理層605a、bはフィット(phit)640を)扱う。いくつかの実施形態において、パケットは実装に基づいて、複数の部分的なフリット、単一のフリット、又は複数のフリットを含んでよいことに留意されたい。
【0056】
第1の例として、フィット640の幅は、リンク幅対ビット数の1対1のマッピング(例えば、20ビットリンク幅は、20ビットのフィットを含む等)を含む。複数のフリットは、184、192又は200ビットのような、より大きなサイズを有してよい。フィット640が20ビット幅で、フリット635のサイズが184ビットの場合、1つのフリット635を送信するには小数値(fractional number)のフィット640が必要となる(例えば、他の例の中でも特に、184ビットのフリット635の送信には20ビットで9.2フィット、又は192ビットのフリットの送信には20ビットで9.6となる)ことに留意されたい。物理層における基本的なリンクの複数の幅は、変化してよいことに留意されたい。例えば、方向毎のレーン数は、2、4、6、8、10、12、14、16、18、20、22、24等を含んでよい。一実施形態において、リンク層610a、bは、単一のフリット内に異なる複数のトランザクションのピースを埋め込み可能であり、1又は複数のヘッダ(例えば1、2、3、4)がフリット内に埋め込まれてよい。一例において、UPIは複数のヘッダを対応する複数のスロットへ分割し、そのフリットにおける多数のメッセージが、異なるノード行きとなることを可能とする。
【0057】
一実施形態において、物理層605a、bが、物理媒体(電気又は光等)上での情報の高速転送を担うことができる。物理リンクは、層605a及び605bのような2つのリンク層エンティティ間のポイントツーポイントであり得る。リンク層610a、bは、複数の上位層から物理層605a、bを抽出でき、信頼性をもってデータ(複数の要求も)を転送し、2つの直接接続されたエンティティ間のフロー制御を管理する能力を提供する。リンク層はまた、物理チャネルを複数の仮想チャネル及びメッセージクラスに仮想化する役割を有し得る。プロトコル層620a、bは、複数の物理リンクにわたる転送のために、複数のプロトコルメッセージを物理層605a、bに対し渡す前に、複数のプロトコルメッセージを複数の適切なメッセージクラス及び仮想チャネルにマッピングすべく、リンク層610a、bに依存する。リンク層610a、bは、他の例の中でも特に、要求、スヌープ、応答、ライトバック、非コヒーレントデータのような複数のメッセージをサポートしてよい。
【0058】
UPIの物理層605a、b(又は、PHY)は、
図6に図示されるように、電気層(すなわち、2つのコンポーネントを接続する電気伝導体)の上であって、リンク層610a、bの下に実装され得る。物理層及び対応するロジックは各エージェントに存在でき、(例えば、あるリンクのいずれかの側における複数のデバイスにおいて)互いに分離されている、2つのエージェント(A及びB)上の複数のリンク層を接続する。ローカル及び遠隔の複数の電気層は、物理媒体に(例えば、複数のワイヤ、導体、光等)よって接続される。一実施形態において、物理層605a、bは、2つの主要なフェーズである、初期化及び動作のフェーズを有する。初期化中、接続はリンク層に対して不透明であり、シグナリングは複数の時限状態とハンドシェイクイベントとの組み合わせを含んでよい。動作中、接続はリンク層に対して透明であり、シグナリングは、全てのレーンが単一のリンクとして共同して動作する際、特定の速度である。動作フェーズ中、物理層は、フリットをエージェントAからエージェントBに、及び、エージェントBからエージェントAにトランスポートする。接続は、リンクとも称され、フリット及び現在の構成のコントロール/ステータス(例えば、幅)をリンク層と交換しながら、媒体、幅及びリンク層からの速度を含むいくつかの物理的な態様を抽出する。初期化フェーズは、マイナーフェーズ、例えば、ポーリング、コンフィギュレーションを含む。動作フェーズは、マイナーフェーズ(例えば、リンク電力管理状態)も含む。
【0059】
一実施形態において、リンク層610a、bは、2つのプロトコル又はルーティングエンティティ間で信頼性のあるデータ転送を提供すべく実装され得る。リンク層は、プロトコル層620a、bから物理層605a、bを抽出でき、2つのプロトコルエージェント(A、B)間のフロー制御を担当でき、プロトコル層(複数のメッセージクラス)及びルーティング層(複数の仮想ネットワーク)に対し、複数の仮想チャネルサービスを提供できる。プロトコル層620a、bとリンク層610a、bとの間のインタフェースは、典型的には、パケットレベルであり得る。一実施形態では、リンク層における最小の転送単位は、規定ビット数であるフリットと称され、例えば、192ビット又は何らかの他の単位名である。リンク層610a、bは、物理層605a、bの転送単位(フィット)を、リンク層610a、bの転送単位(フリット)へフレーム化すべく、物理層605a、bに依存する。加えて、リンク層610a、bは、2つの部分、すなわち送信機と受信機とに論理的に分割されてもよい。1つのエンティティ上の送信機/受信機ペアは、別のエンティティ上の送信機/受信機ペアと接続されてよい。フロー制御はしばしば、フリット及びパケットの両方をベースに実行される。誤り検出及び訂正は、また、潜在的には、フリットレベルベースで実行される。
【0060】
一実施形態では、UPIトランザクションをソースから宛先へとルーティングするために、ルーティング層615a、bは、柔軟かつ分散型の方法を提供することができる。複数のトポロジーのための複数のルーティングアルゴリズムは、各ルータにおけるプログラマブルルーティングテーブルを介して指定され得るので、このスキームは柔軟性がある(一実施形態においてプログラミングは、ファームウェア、ソフトウェア、又はそれらの組み合わせにより実行される)。ルーティング機能は分散型であってよく;ルーティングは一連のルーティングステップを介してなされてよく、各ルーティングステップは、ソース、中間、又はターゲットのルータのいずれかにおけるテーブルの検索を介して定義される。UPIパケットをUPIファブリックに挿入するために、ソースでの検索が用いられてよい。入力ポートから出力ポートへUPIパケットをルーティングするために、中間ルータでの検索が用いられてよい。宛先UPIプロトコルエージェントをターゲットにするために、宛先ポートでの検索が用いられてよい。複数のルーティングテーブル、つまり、複数のルーティングアルゴリズムは仕様によって具体的に定義されないので、いくつかの実装例において、ルーティング層を薄くできることに留意されたい。これにより柔軟性、及び柔軟なプラットフォームアーキテクチャトポロジーを含む様々な利用モデルが、システム実装によって定義されることを可能にする。ルーティング層615a、bは、最大3つまで(又はそれより多く)の仮想ネットワーク(VN)、一例において、2つのデッドロックフリーのVN、すなわち、各仮想ネットワークで定義される複数のメッセージクラスを有するVN0及びVN1の使用を提供するために、リンク層610a、bに依存している。共有適応仮想ネットワーク(VNA)が、リンク層で定義されてよいが、この適応ネットワークは複数のルーティング概念に直接さらされなくてよい。というのは、各メッセージクラス及び仮想ネットワークは、他の特徴及び例の中でも特に、複数の専用リソース及び保証された転送進行を有してよい。
【0061】
1つの実施形態において、UPIは、メモリからのデータのラインをキャッシュするエージェントをサポートするために、コヒーレンシプロトコル層620a、bを含むことができる。メモリデータをキャッシュしたいエージェントは、コヒーレンシプロトコルを使用して、そのキャッシュにロードすべく、データのラインを読み取ってよい。そのキャッシュ内のデータのラインを変更したいエージェントは、コヒーレンシプロトコルを使用して、データを変更する前にラインのオーナシップを取得してよい。ラインの変更後、エージェントはラインをメモリにライトバックするか又はラインを外部要求への応答に含むかのいずれかまで、それをそのキャッシュに保持する複数のプロトコル要件に従ってよい。最後に、そのキャッシュ内のラインを無効化すべく、エージェントは複数の外部要求に応じ得る。プロトコルは、全てのキャッシュエージェントが従い得る複数のルールを指示することによって、データのコヒーレンシを保証する。また、それはキャッシュを持たない複数のエージェントのために、コヒーレントにメモリデータを読み書きする手段を提供する。
【0062】
本明細書において論じられた最適化実装は、PCIe及びUPIを含む、様々なプロトコルのフリット及びパケット構造に適用され得る。そのような特徴及び改良は、また他のプロトコルに適用され得る。例えば、本明細書に論じられた特徴は、他のアプリケーションの中でも、次世代データセンタ性能を加速させるように設計された、改良された高速CPUツーデバイス及びCPUツーメモリインターコネクトを提供するように設計されたコンピュートエクスプレスリンク(CXL)インターコネクトプロトコルに適用され得る。CXLは、CPUメモリ空間と取り付けられたデバイス上のメモリとの間のメモリコヒーレンシを維持し、これにより、他の例示的な利点の中でもとりわけ、より高い性能のためのリソースシェアリングが可能になり、ソフトウェアスタックの複雑性が減り、システムコスト全体が下がる。CXLは、ホストプロセッサ(例えば、CPU)及びワークロードアクセラレータ(他の例の中でも、例えば、グラフィックス処理ユニット(GPU)、フィールドプログラマブルゲートアレイ(FPGA)デバイス、テンソル及びベクトルプロセッサユニット、機械学習アクセラレータ、目的専用アクセラレータ解決手段)のセット間の通信を可能にする。実際、人工知能、機械学習及び他のアプリケーション等の新たに出現したコンピューティングアプリケーションをサポートするようにCPUを補完するためにアクセラレータがますます使用されていることから、CXLは、高速通信のための標準インタフェースを提供するために設計されている。
【0063】
CXLリンクは、コヒーレンシ、メモリアクセス、及び入力/出力(I/O)プロトコルの動的プロトコル多重化をサポートする、低レイテンシ高帯域幅ディスクリート又はオンパッケージリンクであり得る。他の用途の中でもとりわけ、CXLリンクにより、アクセラレータは、他の例の中でもとりわけ、キャッシングエージェント及び/又はホストシステムメモリとしてのシステムメモリにアクセスすることが可能になり得る。CXLは、アクセラレータの莫大なスペクトルをサポートするように設計された動的マルチプロトコル技術である。CXLは、ディスクリート又はオンパッケージリンクを介して、PCIe(CXL.io)と同様のI/Oセマンティクスと、キャッシュプロトコルセマンティクス(CXL.cache)と、メモリアクセスセマンティクス(CXL.mem)とを含むプロトコルの豊富なセットを提供する。特定のアクセラレータ使用モデルに基づいて、CXLプロトコルの全て、又はこれらのプロトコルのサブセットのみがイネーブルされ得る。いくつかの実装において、CXLは、十分に確立された、幅広く採用されているPCIeインフラストラクチャ(例えば、PCIe5.0)上に構築されてよく、PCIe物理及び電気的インタフェースを活用してエリアに高度なプロトコルを提供することは、I/O、メモリプロトコル(例えば、ホストプロセッサがメモリをアクセラレータデバイスと共有することを可能にする)及びコヒーレンシインタフェースを含む。
【0064】
図7を参照すると、CXLリンク750を利用する例示的なシステムを示す簡易ブロックダイアグラム700が示されている。例えば、リンク750は、ホストプロセッサ705(例えば、CPU)をアクセラレータデバイス710に相互接続し得る。この例では、ホストプロセッサ705は、1又は複数のプロセッサコア(例えば、715a~b)及び1又は複数のI/Oデバイス(例えば、718)を含む。ホストメモリ(例えば、760)には、(例えば、同じパッケージ又はダイ上の)ホストプロセッサが設けられ得る。アクセラレータデバイス710は、アクセラレータロジック720を含んでよく、いくつかの実装では、独自のメモリ(例えば、アクセラレータメモリ765)を含んでよい。この例では、ホストプロセッサ705は、コヒーレンス/キャッシュロジック725及びインターコネクトロジック(例えば、PCIeロジック730)を実装するための回路を含み得る。CXL多重化ロジック(例えば、755a~b)も提供されることで、CXLプロトコル(例えば、I/Oプロトコル735a~b(例えば、CXL.io)、キャッシュプロトコル740a~b(例えば、CXL.cache)及びメモリアクセスプロトコル745a~b(CXL.mem))の多重化が可能になり得、これにより、ホストプロセッサ705とアクセラレータデバイス710との間のリンク750を介して、サポートされているプロトコル(例えば、735a~b、740a~b、745a~b)のいずれか1つのデータを多重化方式で送信することが可能になる。
【0065】
いくつかの実装において、多種多様な他のデバイス(例えば、他のプロセッサデバイス、アクセラレータ、スイッチ、メモリデバイス等)と相互接続するようにデバイスを柔軟に適合させるように、CXL準拠リンクと協調して、Flex Bus(商標)ポートが利用されてよい。Flex Busポートは、PCIe又はCXLリンク(及び潜在的には、他のプロトコル及びアーキテクチャのリンクも)のいずれかをサポートするように静的に構成されたフレキシブル高速ポートである。Flex Busポートにより、高帯域幅オフパッケージリンクを介してネイティブPCIeプロトコル又はCXLのどちらを提供するか設計上選ぶことが可能になる。ポートにおいて適用されるプロトコルの選択は、自動ネゴシエーションを介してブート時間中に発生してよく、スロットへプラグ接続されたデバイスに基づいてよい。Flex Busは、PCIe電気回路を用いることでPCIeリタイマとの互換性を有するようになり、アドインカードについての規格であるPCIeフォームファクタを順守する。
【0066】
図8を参照すると、様々なデバイス(例えば、710、810、820、825、845等)をホストプロセッサ(例えば、CPU705、805)に連結するためにCXL(例えば、815a~b、850a~b)及びPCIeリンク(例えば、830a~b)を実装するのにFlex Busポート(例えば、835~840)を利用するシステムの例が、(簡易ブロックダイアグラム800にて)示されている。この例において、システムは、プロセッサ間リンク870(例えば、UltraPathインターコネクト(UPI)、Infinity Fabric(商標)、又は他のインターコネクトプロトコルを利用する)によって相互接続された2つのCPUホストプロセッサデバイス(例えば、705、805)を含み得る。各ホストプロセッサデバイス705、805は、ローカルシステムメモリブロック760、860(例えば、ダブルデータレート(DDR)メモリデバイス)に連結され得、これらは、メモリインタフェース(例えば、メモリバス又は他のインターコネクト)を介して、それぞれのホストプロセッサ705、805に連結されている。
【0067】
上で論じられたように、様々なアクセラレータデバイス(例えば、710、810)を相互接続するために、CXLリンク(例えば、815a、850b)が利用され得る。したがって、対応するポート(例えば、Flex Busポート835、840)は、CXLリンクを確立させて、対応するホストプロセッサデバイス(例えば、705、805)をアクセラレータデバイス(例えば、710、810)に相互接続することを可能にするように構成され得る(例えば、選択されたCXLモード)。この例に示されているように、Flex Busポート(例えば、836、839)、又は他の同様の構成可能なポートは、ホストプロセッサ(例えば、705、805)をI/Oデバイス(例えば、スマートI/Oデバイス820、825等)に相互接続するために、CXLリンクの代わりに汎用I/Oリンク(例えば、PCIeリンク)830a~bを実装するように構成され得る。いくつかの実装において、ホストプロセッサ705のメモリは、他の例示的な実装及びアーキテクチャの中でも、例えば、接続されたアクセラレータデバイス(例えば、710、810)のメモリ(例えば、765、865)、又はメモリ拡張機デバイス(例えば、Flex Busポート(837、838)上に実装された対応するCXLリンク(例えば、850a~b)を介してホストプロセッサ705、805に接続された845)を通して増設され得る。
【0068】
図9は、CXLリンクを実装するために利用される例示的なポートアーキテクチャ900(例えば、Flex Bus)を示す簡易ブロックダイアグラムである。例えば、Flex Busアーキテクチャは、ポートによってサポートされる複数のプロトコルを実装するための複数の層として編成され得る。例えば、ポートは、トランザクション層ロジック(例えば、905)、リンク層ロジック(例えば、910)、及び物理層ロジック(例えば、915)(例えば、全部又は一部が回路に実装される)を含み得る。例えば、トランザクション(又はプロトコル)層(例えば、905)は、PCIeトランザクション層955及びベースPCIeトランザクション層955のCXLトランザクション層エンハンスメント960(CXL.io用)を実装するトランザクション層ロジック925と、CXLリンクのためのキャッシュ(例えば、CXL.cache)プロトコル及びメモリ(例えば、CXL.mem)プロトコルを実装するためのロジック930とへ細分化され得る。同様に、リンク層ロジック935は、ベースPCIeデータリンク層965及びPCIeデータリンク層965の強化バージョンを表すCXLリンク層(CXL.io用)を実装するように提供され得る。CXLリンク層910は、キャッシュ及びメモリリンク層エンハンスメントロジック940(例えば、CXL.cache及びCXL.mem用)も含み得る。
【0069】
図9の例を続けると、CXLリンク層ロジック910は、他の例示的な実装の中でも、2つのロジックストリーム(例えば、PCIe/CXL.io及びCXL.cache/CXL.mem)からのトラフィックをインターリーブする、CXLアービトレーション/多重化(ARB/MUX)ロジック920とインタフェースし得る。リンクトレーニング中に、トランザクション層及びリンク層は、PCIeモード又はCXLモードのいずれかで動作するように構成される。いくつかの例において、他の例の中でもとりわけ、ホストCPUは、PCIeモード又はCXLモードのいずれかの実装をサポートし得るが、アクセラレータのような他のデバイスは、CXLモードのみをサポートし得る。いくつかの実装において、ポート(例えば、Flex Busポート)は、PCIe物理層(例えば、PCIe電気回路PHY950)に基づいて、物理層915を利用し得る。例えば、Flex Bus物理層は、リンクトレーニングプロセス中にオルタネートモードネゴシエーションの結果に基づいてPCIeモード又はCXLモードのいずれかで動作できるコンバージド論理物理層945として実装され得る。いくつかの実装において、物理層は、複数のシグナリングレート(例えば、8GT/s、16GT/s、32GT/s等)及び複数のリンク幅(例えば、x16、x8、x4、x2、x1等)をサポートし得る。PCIeモードでは、ポート900によって実装されるリンクは、ネイティブPCIe特徴(例えば、PCIe仕様において定義される)に完全に準拠し得るが、CXLモードでは、このリンクは、CXLについて定義された全ての特徴をサポートする。したがって、他の例の中でもとりわけ、Flex Busポートは、ネイティブPCIeプロトコルデータ又は動的マルチプロトコルCXLデータを送信して、PCIe電気回路を介してI/Oプロトコル、コヒーレンシプロトコル及びメモリプロトコルを提供できるポイントツーポイントインターコネクトを提供し得る。
【0070】
CXL I/Oプロトコル、すなわちCXL.ioは、I/Oデバイスのための非コヒーレントロード/ストアインタフェースを提供する。CXL.ioにおけるトランザクションタイプ、トランザクションパケットフォーマット化、クレジットベースのフロー制御、仮想チャネル管理、及びトランザクション順序付けルールは、PCIe定義の全部又は一部に従い得る。CXLキャッシュコヒーレンシプロトコル、すなわちCXL.cacheは、デバイスとホストとの間のインタラクションを、少なくとも1つの関連付けられた応答メッセージ及び場合によってはデータ転送をそれぞれが有する複数の要求として定義する。インタフェースは、要求、応答、及びデータという、各方向における3つのチャネルから構成される。
【0071】
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ソケット用の粗いスヌープフィルタを実装するためにホストによって用いられ得る。
【0072】
いくつかの実装において、リンク層(例えば、910)を実装する回路又は他のロジック(例えば、知的財産(IP)ブロック又は他のハードウェア要素)を、プロトコルの物理層(例えば、915)の少なくとも一部を実装する回路又は他のロジック(例えば、IPブロック又は他のハードウェア要素)に連結するために、インタフェースが提供され得る。例えば、インタフェースは、
図9の例におけるような、物理インターコネクトに対するインタフェースのための、1又は複数のリンク層及び物理層間の相互運用性、設計及びバリデーション再使用を促進するために、リンク層コントローラ、モジュール、又は他のロジック、及び、論理物理層(「論理PHY」又は「logPHY」)を実装するモジュールの間の共通インタフェースを定義する論理PHYインタフェース(LPIF)仕様に基づくものである。さらに、
図9の例におけるように、複数のプロトコルを同時に実装及びサポートするために、インタフェースはロジック(例えば、935、940)を伴って実装されてよい。さらに、そのような実装においては、リンク層(例えば、910)及び物理層(例えば、915)間にアービトレーション及びマルチプレキサ層(例えば、920)が設けられてよい。いくつかの実装において、複数プロトコル実装における各ブロック(例えば、915、920、935、940)は、独立したLPIFインタフェース(例えば、980、985、990)を介して他のブロックとインタフェースし得る。他の例の中でも、二分岐がサポートされる場合には、各二分岐ポートは、その独自の独立したLPIFインタフェースを同様に有し得る。
【0073】
本明細書において論じられている例では、LPIFベースリンク層‐論理PHYインタフェースの使用を参照する場合があるが、本明細書において論じられている詳細及び原理は、非LPIFインタフェースにも等しく適用され得ることが理解されるべきである。同様に、いくつかの例では、CXL又はPCIeを実装するためにPHYをコントローラに連結するための、共通リンク層-論理PHYインタフェースの使用を参照する場合があるが、他のリンク層プロトコルも、そのようなインタフェースを使用し得る。同様に、Flex Bus物理層をいくらか参照する場合があるが、本開示の範囲内にある他の例示的な変形形態の中でも、いくつかの実装においては、他の物理層ロジックが同様に採用され、本明細書において論じられているような共通リンク層-論理PHYインタフェースを使用する場合がある。
【0074】
図10は、(例えば、インターコネクトプロトコルにおいて定義されたリンクトレーニングステートマシンに従って)物理通信リンク1075を確立し、リンク1075によってサポートされている1又は複数のインターコネクトプロトコルに従ってリンク1075の他端にあるリンクパートナーデバイス1050とリンク1075を介して通信するための回路を含むポート1025を有するデバイス1005の例示的な実装を示す簡易ブロックダイアグラム1000である。1つの例において、デバイス1005は、グラフィックス処理コンポーネント、テンソル処理コンポーネント、アクセラレータハードウェア、キャッシュエージェント等のような、他の又は代替的なコンポーネントの中でも、コンピュータ処理回路(例えば、プロセッサコア1010)、コンピュータメモリブロック(例えば、1015)及び対応するメモリコントローラ1020を備えてよい。ポート1025は、リンク1075上でデータを送信するための送信機(TX)及びリンク1075上でデータを受信するための対応する受信機(RX)を実装し得る。同様に、リンクパートナーデバイス1050は、対応するポート1055(例えば、ポート1025と同様のロジック及び特徴を有し、同様にリンク1075をサポートするとともにこれを介して通信可能である)を有し得る。リンク1075をトレーニングし、イコライジングし、及び別様に確立し、及び次にリンク1075を介して通信し、及びリンク1075上でのリンク状態遷移を管理するのをサポートするために、ポート1025は、1つのさらなる階層型インターコネクトプロトコル(例えば、PCIe、CXL、UPI、USB、Gen-Z等)をサポートするロジックを実装するためのハードウェア回路において少なくとも部分的に実装されたプロトコルロジック1030を含み得る。
【0075】
本明細書において論じられている例示的な特徴及び解決手段のうちのいくつかによれば、ポート(例えば、1025)のいくつかの実装は、インターコネクトプロトコルの改良された特徴を実装するために、強化プロトコルロジック(例えば、1030)を利用し得る。例えば、いくつかの例において、プロトコルロジック1030は、複数の代替フリットベーストランスポートモードを実装するために、フリットモードコントローラ回路1035を含み得る。例えば、フリットベーストランスポートモードは、他の例の中でも、標準フリットベーストランスポートモード、レイテンシ最適化フリットベーストランスポートモード、及び部分リンク幅最適化フリットベーストランスポートモードを含み得る。代替モードのそれぞれにおいて、異なるそれぞれのフリットフォーマットが利用され得、フリットモードコントローラ1035は、これらのフリットモードのうちのいずれが相互にサポートされるか、及び、動作中にリンクパートナー(例えば、1005及び1050)がフリットモード間でどのように及びいつ遷移するかを決定するために、リンクパートナーデバイス1050とネゴシエートし得る。例えば、フリットモードコントローラ1035は、他の例の中でも、第1のリンク幅で動作している第1のアクティブリンク状態から異なる第2のより狭いリンク幅で動作している第2のアクティブリンク状態への遷移を識別し、(例えば、標準フリットベーストランスポートモード又はレイテンシ最適化フリットベーストランスポートモードから)部分リンク幅最適化フリットベーストランスポートモードへの対応する遷移をトリガし得る。そのような特徴は、他の例示的な利益の中でも、より狭いリンク幅(例えば、部分リンク幅)のレイテンシの影響を軽減することを支援し得る。
【0076】
さらに、プロトコルロジックのいくつかの実装は、スロットルコントローラロジック1040を含んでよい。いくつかの実装において、プロトコル(例えば、PCIe6、CXL等)によって選択的リトライがサポートされ、受信及び/又は送信側バッファ(例えば、1042、1044)を利用して選択的リトライを実装し得る。リンク(例えば、1075)上の受信デバイスが、(フリットのシーケンス中の)受信されたフリットが誤りを含むことを検出した場合、受信デバイスは、((例えば、従来のフリットリトライ実装におけるように)例えば、誤っているフリットだけでなく、誤っているフリットに続いて受信されたフリットのリプレイも要求するのではなく)誤っている特定のフリットをリプレイする要求を、リンクを介して送信し得る。選択的リトライの例示的な実装において、受信デバイスは、誤っている特定のフリットのリプレイを要求し、アイドルではない任意の後続のフリットを(例えば、リプレイバッファ中で)バッファし(アイドルフリットは、いかなる意味のある情報も搬送しないのでドロップできる)、誤っている特定のフリットの訂正されたリトライバージョンが受信された後に、これらのバッファされたフリットを消費し得る。誤っているフリットがリプレイされた後に、これらのバッファされたフリットが順次消費されることになるので、選択的リトライは、バッファされたフリットにだけでなく、シーケンス中のリプレイされたフリットに続く任意の非アイドルフリットにも、意味のあるレイテンシを導入することができる。いくつかの実装において、周期的なアイドルフリット及び/又はSKPオーダードセット(OS)が(例えば、オポチュニクティックに、又は定義された頻度に従って)送信され得、アイドルデータのこれらのモーメントは、(例えば、代わりに、これらの遅延フリットをスケジュールされたアイドルフリット又はSKPシンボルの代わりに送信することによって)この失われたレイテンシの一部を「取り戻す」ために利用され得る。データフロー中にアイドル期間を設けることで、選択的リトライからのレイテンシの蓄積が大きく防止され得る一方で、エラーレートが増加した場合、選択的リトライのレートも同様に増加し、結果として、選択的リトライバッファリングからもたらされるレイテンシが耐えられないほど急速に蓄積する場合がある。それに応じて、他の例示的な解決手段の中でも、いくつかの実装において、スロットルコントローラ1040は、(例えば、ソフトウェアコントローラ(例えば、1090)の助けを伴って又はハードウェアにおいてリプレイ要求を追跡することによって)フリットエラーの増加を検出し、(例えば、リンク上のアイドルフリットの数又は頻度を意図的に増加させることによって)データストリーム中のアイドルウィンドウの頻度をスロットリングするか又は一時的に増加させ得る。
【0077】
上で導入されたように、インターコネクトは、定義されたフロー制御単位又はフリットを利用して、フリットモードトランスポートをサポートし、リンクの物理層を介した送信のためにデータ(例えば、パケットデータ)をカプセル化し得る。単一のフリット内で、全パケット又はパケットのセグメントが送信され得る。フリットは、固定長及びフォーマット(例えば、定義されたフィールドを有する)を有するように、それぞれのプロトコルによって定義され得る。これらのフィールドのうちの1又は複数は、巡回冗長検査(CRC)符号、前方誤り訂正(FEC)符号、又は他の誤り訂正符号(ECC)等の誤り検出又は誤り訂正符号を保持するように定義され得る。例えば、64.0GT/sのPAM-4シグナリングでの高エラーレートをハンドリングするために、PCIe6.0は、PCIeにフリットモードを導入し、3ウェイインターリーブ(3-way interleaved)前方誤り訂正(FEC)メカニズム(例えば、各2バイト、合計6バイト)及び強力な8バイトリードソロモン符号ベースCRCメカニズムを伴って256Bフリットサイズを定義する。CXL及びUPI等の他のプロトコルもまた、(異なる定義されたフォーマットを伴う場合であっても)フリットを利用し得、これは誤り検出及び訂正符号を含む。実際、CXLのバージョン(例えば、CXL3)及びUPIのバージョン(例えば、UPI3)は、PCIe PHY(例えば、64.0GT/sで動作するためにPCIe6.0PHY)を利用するように定義されているが、レイテンシの影響を0に維持するために、6B CRCを伴う128Bレベルのサブフリットを有する。
【0078】
図11A~
図11Dは、様々なプロトコル実装のフリット構成を示すダイアグラム1100a~dである。例えば、
図11Aは、例示的なPCIeフリットモードフリットの表現を示している。フリットは、フリット全体に対して提供される単一誤り検出符号を伴う256Bの定義された長さを有し得る。例えば、フリット1105は、フリット全体に対して計算された、単一誤り検出符号(例えば、8B CRC1120)及び前方誤り訂正符号(例えば、6B FEC1125)を伴う、236Bのトランザクション層パケット(TLP)データ1110及び6Bのデータリンク層パケット(DLLP)データ1115を含み得る。同様に、
図11Bの例に示されているように、CXLフリットフォーマットは、単一誤り検出符号(例えば、CRC1140及びFEC1145)によってカバーされる、2Bのフリットヘッダ1130及び240Bのデータ1135を含む、256Bフリット長を有し得る。いくつかの実装において、前方誤り訂正は、CRCからビット誤りが判定された場合にのみ、(FEC符号(例えば、1145)を使用して)実行され得る。これは、前方誤り訂正を通して導入されるレイテンシが、それが必要であると決定される場合(例えば、CRC符号に基づいてフリット中にエラーが検出された場合)以外の全ての場合に回避され得る点で、有利であり得る。他の例示的な実装の中でも、他の事例(例えば、レイテンシ耐性がより高い用途では)、全てのフリット(例えば、FECの後にCRCが適用されている)について、前方誤り訂正が実行され得る。
【0079】
フリットの全体をカバーする単一誤り検出符号の1つの欠点は、フリット中の対応する誤り検出符号(例えば、CRC)に対するエラー検査を実行するために、受信デバイス(例えば、デバイスのポートに設けられた対応するプロトコル回路(例えば、論理PHY回路)を使用する)が、フリットの全てのバイトを受信するのを待機しなければならないことである。この蓄積レイテンシは、いくつかの用途において許容できない場合がある。したがって、いくつかの実装は、
図11C~
図11Dに示されているような、代替的なレイテンシ最適化フリットフォーマットを採用し得、ここで、フリット内に複数の誤り検出符号が提供される。例えば、
図11Cに示されているCXLレイテンシ最適化フリットフォーマットの例に示されているように、フリットは、サブフリット(例えば、第1のサブフリット1150及び第2のサブフリット1155)に論理的に細分化され得、各サブフリット1150、1155に対してそれぞれの誤り検出符号が提供され得る。例えば、第1のサブフリット1150に対して提供される誤り検出符号は、CRC1160であってよく、第2のサブフリット1155に対して提供される誤り検出符号は、CRC1165及びFEC1170であってよい。レイテンシ最適化フリットは、対応するサブフリットのみが受信された後でCRC検査が実行可能であるので、蓄積レイテンシを低減させ、CRC検査がこのデータにおいてエラーを出さない場合は(例えば、第1のサブフリット1150の)先行するデータを即座に消費することが可能になり得る。
図11Dは、(例えば、UPI3のための)同様のレイテンシ最適化フリット構造を示しており、ここで、512Bのフリットが、固有のそれぞれのCRC符号をそれぞれ伴う4のサブフリットに細分化される。
図11C及び
図11Dの例では、いくつかの実装において、サブフリットのそれぞれに対するCRC検査のそれぞれがエラー条件を示さない場合、フリット全体に対する前方誤り訂正がスキップされる場合がある。しかしながら、他の例示的な実装の中でも、CRC検査のうちの1又は複数が関連付けられたサブフリット中にエラーを示した場合、エラーの訂正を試行するために、(例えば、FEC符号1170を使用して)前方誤り訂正が使用され得る。
【0080】
いくつかの実装において、インターコネクトリンクプロトコルのステートマシンが、複数のアクティブリンク状態を定義し得る。リンクが全幅アクティブリンク状態(例えば、L0)において動作している場合、それは、リンクに利用可能な物理レーンの全てを利用している。いくつかの実装において、部分幅リンク状態(partial width link state)では、利用可能なレーン又はリンク幅の全て未満を(例えば、一時的に)利用することになる節電アクティブリンク状態が提供され得る。部分幅リンク状態(例えば、部分L0又はL0p状態)では、(例えば、全幅リンク状態又はさらにはアイドルリンク状態から)リンクの1又は複数の利用可能なレーンがアイドルにされた部分幅状態に入ることによって、節電が実現され得る。非対称部分幅とは、異なる幅を有する二方向リンクの各方向を指し、これはいくつかの設計においてサポートされ得る。部分幅状態中、送信速度は同じに維持され得るが、リンク幅が低減することで、リンクの総スループットレートが低減する。さらに、部分幅リンク状態では、より狭いリンク幅でフリットが送信されるので、その結果として、フリットがより幅広のリンク状態(例えば、L0又はより幅広の部分幅リンク状態)において送信される場合よりも、送信時間が長い。
【0081】
そのため、リンク幅が低減することでデータを集積する時間が増加するため、部分幅リンク状態では、上で論じられたレイテンシ蓄積問題(CRC符号に対応するデータを集積するためにかかる時間から生じる)が悪化する。実際、L0pでは、レイテンシを犠牲にすることで節電が達成される。例えば、ネイティブ256Bフリットを伴うx16リンクは、64.0GT/sで2nsの蓄積レイテンシ、及び、128Bサブフリットに関して1nsのサブフリット蓄積レイテンシを有する。L0pにおける同じリンクは、256Bネイティブフリット上でのx8/x4/x2/x1幅に関する4/8/16/32ns、及び、128Bサブフリット上でのx8/x4/x2/x1幅に関する2/4/8/16nsの蓄積レイテンシを有する。そのため、256Bフリットは、例えば、64.0GT/sでのx16リンクに関して、x16リンク幅からx1幅に移行する場合、31nsの追加された追加レイテンシを有するであろう。このレイテンシの影響は、ほとんどのトランザクションが14B又は16Bスロット内に含まれるコヒーレンシ又はメモリプロトコルに関して、耐えられるものではない。例えば、キャッシュラインデータ転送は、4のバックツーバック16Bスロットから構成される。したがって、他の例示的な利点の中でも、改良された実装において、特殊フリットモードがサポートされ得、これは、部分リンク状態中に、より少数のレーン上での送信を通じて導入されるレイテンシの課題に対処するように適合されたフリットフォーマットを利用する。
【0082】
上で導入したように、いくつかの実装において、閾値よりも少ない数のレーン(及び全幅アクティブリンク状態において利用されるより少ない数のレーン)を利用する部分幅リンク状態にリンクが遷移する場合、ポートのプロトコルロジックは、部分幅状態中に、第1のフリットフォーマットから異なる第2のフリットフォーマットに遷移し得る。より詳細には、フリットのデータを保護するために、第1のフリットフォーマットが第1の数の誤り検出符号(例えば、CRC符号)を提供する場合、第2のフリットフォーマットは、フリットのデータのより多数の比較的小さなセグメント(例えば、サブフリット)を保護するために、より大きな第2の数の誤り検出符号を提供する。レイテンシ最適化フリットと同様に、部分幅リンク状態中に特に誤り検出符号の普及率(prevalence)及び頻度を増加させることを利用して、リンクのアクティブレーンを低減させることによって悪化した蓄積レイテンシのプレッシャーを緩和することができる。
【0083】
説明的な例として、
図12A~
図12Cは、部分幅リンク状態フリットフォーマットの例示的な実装を示している。或る特定の部分幅リンク条件中に、そのような特殊フリットフォーマットが利用され得、対応する部分幅リンク状態を終了する場合、リンクパートナーは、異なる標準又はレイテンシ最適化フリットフォーマットに遷移して戻る。例えば、
図12Aには、例示的な部分幅状態フリットフォーマットが示されている。
図12Aの例において、リンクが全幅(又は部分幅状態において比較的高い部分リンク幅で)アクティブである場合に、レイテンシ最適化CXLフリットフォーマットが利用され得る。
図12Aに表されている例示的なフリットフォーマットは、レイテンシ最適化CXLフリットフォーマット(例えば、
図11Cの例に示されているものと同様)に対応する部分幅状態フリットフォーマットを表し得る。
図12Aは、表形式1200aでの部分幅状態フリットフォーマットを表しており、テーブル1200a内の各セルは、フリットのデータの2バイトを表している。S0~S14とラベル付けされたセルは、CXLフリットスロットのナンバリングされたスロット0~14のバイトを表している。例えば、スロット0(S0)は14バイトで、スロット1(S1)は16バイトで、等と構成され得る。フリットは、CXLフリットヘッダ(例えば、1205)を含み得る。さらに、6BのCRC誤り検出符号(例えば、crc0~crc6)の7のインスタンスが、スロットデータの34B毎に提供される。例えば、2つのスロットをカバーするように、40バイト(34バイトの情報+6B CRC)毎に、6B CRCが適用される。(6)と同じH行列が使用されるが、3ウェイインターリーブFECを形成するように、右から96列を有する。この例示的な部分幅状態フリットのペイロードサイズは、リンク幅が動的に変化するにつれてリトライメカニズムもシームレスに動作することを確実にするために、全幅のカウンターパート(例えば、
図11Cにおける例示的なレイテンシ最適化フリット)と同一であり得る。
図12Aの例において、スロット0及び8は、それぞれ14Bであり;残りの13スロットは、それぞれ16Bである。スロット8は、集積するためにフルフリットかかるので、高レイテンシスロットである。残りのスロットは、14B~40Bの蓄積レイテンシを有し、これは、単一レーン(x1)リンクに関しても、<2ns~5nsである。128Bサブフリットを有する全幅モードであっても、蓄積レイテンシは、x16、x8、及びx4のリンク幅に対してそれぞれ最大で2ns、4ns、及び8nsであり得ることに留意されたい。
【0084】
図12Aの例において、増加した(例えば、7の)CRCインスタンスは、それぞれ40Bのデータを保護し、それぞれ128Bのデータを保護する2つのCRC符号インスタンスのみを含む対応するCXLレイテンシ最適化フリットフォーマット(例えば、
図11Cに示されている)と比較して、部分幅フリットフォーマット内でのCRC符号の発生の略4倍の増加を表している。しかしながら、より頻繁に誤り検出符号を提供する結果として、部分幅フリットフォーマットの長さは、より広いリンク幅状態において送信される対応するフリットフォーマットよりも長くなる(例えば、288B対256B)。動作中、ポートは、(例えば、
図11Cの)第1のフリットフォーマットを利用し、特定の部分幅状態への遷移を検出すると、特定の部分幅状態にある間、代わりに(例えば、
図12Aの)対応する部分幅フリットフォーマットを使用するように遷移し得る。特定の部分幅状態が終了した場合、ポート及びリンクは、(例えば、
図11Cの)より「標準的な」フリットフォーマットを利用するように元に戻り得る。
【0085】
図12Bは、(例えば、
図11Dの)より標準的なUPI3レイテンシ最適化フリットフォーマットの部分幅最適化変換を表す部分幅状態フリットフォーマットの表形式表現1200bである。例えば、512Bの標準フリットフォーマットに関して、対応する部分幅状態(L0p)フリットフォーマットは、
図12Aの例に示されている288BのL0pフリットフォーマットのそれと同様のレイアウトを使用して、576Bであり得る。例えば、最初の13のサブフリットはそれぞれ40Bであり(34Bの情報、6B CRC)、これにそれぞれ50Bのサブフリット(40Bの情報、4Bの予約済、6B CRC)が続き、480Bのペイロード(+2Bのフリットヘッダ)及び6BのインターリーブFECを収容するようになっている。部分幅状態フリットフォーマットは、明瞭な(clean)フリット又はシンボル境界上で終了するように定義され得る。他の例示的な特徴の中でも、明瞭なフリット又はシンボル境界で部分幅状態フリットフォーマットを定義するように、予約済フィールドが提供され得る。
【0086】
部分幅状態フリットフォーマットのまた別の例において、
図12Cは、PCIe6.0又はCXL(
図11A~
図11Bを参照)の非レイテンシ最適化256Bフリットの部分幅最適化バージョンの表現1200cを示している。この例における部分幅状態フリットフォーマットは、4のサブフリット(例えば、1250、1255、1260、1270)で構成され得、64B TLPサブフリット(例えば、1250、1255、1260)及び44B TLP、6B DLP、8B CRC、及び6B FECを有する最後のサブフリット1270のそれぞれのために、8B CRCが提供されている(フリットフォーマットを280Bに拡張している)。そのため、最初の3のサブフリットは、それぞれ72Bであり、最後のサブフリットは、64Bである。他の例示的な実装の中でも、CXL実装において、フリットヘッダは、最初のTLPサブフリット1250の最初の2Bを占有し得る。
【0087】
特殊部分幅最適化フリットフォーマットのサポートは、任意選択の特徴であり得、リンクパートナーは、そのようなフリットフォーマットを利用する前にまず、リンクパートナーポートによって及びどのような条件下でそのようなフリットフォーマットが相互にサポートされているかを判定し得る。例えば、特定のデバイスが部分幅最適化フリットフォーマット(及び、レイテンシ最適化フリットフォーマット等の他の任意選択のフリットフォーマット)をサポートしているか否かを構成レジスタが識別し得る。レジスタ内の構成情報が、部分幅最適化フリットフォーマットが使用されることになる又はされてよい条件をさらに識別し得る。いくつかの場合において、部分幅最適化フリットフォーマットが展開されることになるか否か及びその条件を制御するように、BIOS、オペレーティングシステム、又は他のソフトウェアベースコントローラが、構成レジスタにおける値を定義し得る。いくつかの実装において、他の特徴の中でも、リンクパートナーデバイスは、リンクトレーニング中(例えば、オルタネートプロトコルネゴシエーション中)、部分幅最適化フリットフォーマットがサポートされているか、どのような閾値部分リンク幅が部分幅最適化フリットフォーマット(例えば、x4、x2、x1のリンク幅)の使用をトリガすべきかを含む、それらの固有の能力を広告する及び/又はそれらのリンクパートナーのそれぞれの能力を発見し得る。リンク上での部分幅最適化フリットフォーマットの使用に関する条件のネゴシエーションは、トレーニングシーケンス(例えば、TS1、TS2、又は他のトレーニングシーケンス)又はオーダードセット(例えば、SKPオーダードセット(SKP OS))の交換を通して実行され得る。例えば、トレーニングシーケンス又はオーダードセット内の特定のフィールド又はビットは、部分幅最適化フリットフォーマットのサポートを識別する情報、部分幅閾値情報、及び、リンクの動作中にそのような特徴を実装するために使用可能な他の情報を保持するように定義され得る。
【0088】
部分幅状態(又はさらには、設定された閾値リンク幅よりも低いリンク幅を利用する部分幅状態)に入ることに応答して、リンクパートナーがリンク幅変化を自動的に識別し、リンクがこの部分幅動作モードにある間に、使用されるフリットフォーマットを標準又はデフォルトフリットフォーマットから対応する部分幅最適化フリットフォーマットに調整するモード又はリンク状態が、様々な技術を利用して可能にされ得る。この部分幅動作モードが終了した(及び、定義された閾値を超えるリンク幅が使用された)後、リンクパートナーは、標準フリットフォーマットを使用するように自動的に戻ることができる。例えば、
図13Aは、標準フリットフォーマット及び部分幅最適化フリットフォーマットの使用の間で遷移するための例示的な技術を示すフローダイアグラム1300aである。例えば、リンク上での部分幅最適化フリットフォーマットのサポート及び使用をネゴシエートするとき、リンクは、アクティブ又は動作リンク状態に対してトレーニングされ得る。アクティブリンク状態は、最大で特定の数のレーン(リンクの物理層によってサポートされる)までの動作をサポートし得る。部分幅リンク状態は、データを送信及び/又は受信するために、この最大数よりも少ない数のレーンを利用し得る。例えば、リンクは、16のレーン(x16)の幅で動作するように構成され得るが、部分幅リンク状態では、8つ(x8)、4つ(x4)、2つ(x2)、又は1つ(x1)レーンのみを利用する。部分幅リンク状態に入ってよく1302、リンクがそのサポートされている部分リンク幅のいずれで動作するべきかを判定してよい1304。オーダードセット又は他のデータをリンクパートナー間で通信して、部分幅リンク状態への遷移及び使用されるべきリンク幅をネゴシエートし得る。
【0089】
識別された部分リンク幅が閾値未満である(又は、閾値の定義に応じて、それ未満であるか又はそれに等しい)場合1305、リンクパートナーは、部分幅動作に適合された変更されたフリットフォーマットが使用されるべきであることをそれぞれ識別し得、標準フリットフォーマット(例えば、デフォルトフリットフォーマット、又は、全リンク幅又はより高いリンク幅動作中の使用に適合されたレイテンシ最適化フリットフォーマット)の使用から、変更されたフリットフォーマットに遷移し得る1306。部分幅リンク状態が閾値部分幅閾値を超えるリンク幅を利用する場合、リンクパートナーは、(例えば、トレーニング中にリンクパートナーによってネゴシエートされた)標準フリットフォーマットを使用して、リンク上でのデータの送信及び受信を(1310にて)続けてよい。変更されたフリットモードにある場合、変更されたフリットフォーマットに従ってフリットが生成されてリンク上で送信され得(1308にて)、リンクパートナーは、変更されたフリットフォーマットを受信し、リンクパートナーが部分幅リンク状態中に変更されたフリットフォーマットの使用へと互いに遷移したことに基づき、フリットを正確に分析して処理し得る。
【0090】
リンクパートナーは、全幅リンク状態(例えば、L0)のために部分幅リンク状態を終了させること又は部分幅リンク状態において使用されるリンク幅を増加させることのいずれかによって部分幅リンク状態が変更されるべきかを最終的に判定し得、リンクパートナーは、この遷移をネゴシエートし得る(例えば、1312)。他の例の中でも、遷移1312に続いてリンク上で使用されるフリットフォーマットは、変更されたフリットフォーマットを使用するための条件がもはや満たされていない場合等のいくつかの事例において変化して、リンクパートナーを、標準フリットフォーマットを使用するように遷移し戻させ得る。この遷移に続いて、このフォーマットのフリットが送信され受信され得る(例えば、1314)。いくつかの実装において、特定の部分幅リンク状態(例えば、L0p)の終了又はそこからの遷移に対するレイテンシは、例えば、(例えば、約1.5us以内の)次のスケジュールされたSKP OSを待機するのではなく、アイドルレーンが次のフリット境界に対してトレーニングされたら(例えば、16B境界にアライメントされたら)すぐにより高いリンク幅に遷移し始めることによって、低下し得る。1つの例において、x1及びx2リンク幅、288Bフリットは、16B境界に常にアライメントされ得る。x4幅に関して、境界はフリット毎に存在し得る。開始データストリームオーダードセットを用いて、レーン対レーンのデスキューを、アクティベートされることになるそれらのレーンにわたって取得して、それらをアクティブレーン上のフリット境界にアライメントさせることができる。この結果、他の例示的な実装の中でも、この例では、750nsの平均幅増加レイテンシ削減がもたらされる。
【0091】
部分幅リンク状態内に出現するリンクレイテンシの低減を支援するように、変更されたフリットフォーマットをサポートすることに加えて、コヒーレンシ及びメモリインターコネクトに関する選択的リプレイオーバヘッドを軽減するために、選択的にリプレイされるフリットが存在する場合を軽減するように、(例えば、ソフトウェア又はハードウェア内の)デバイスがリンクのオポチュニクティックなセルフスロットリングを実装し得る。スロットリングする場合、プロトコル層は、それがフリットのスロットにおいて送信されるべきいくつかのトランザクションを有し得る場合であっても、アイドルフリットを送信する。スロットリングは、受信機がその受信側リプレイバッファからキャッチアップ(catch up;追いつく)することを可能にする。例えば、いくつかのシステムは、リンクの帯域幅利用の改善を支援するために、選択的リプレイメカニズムをサポート又は実装し得る。従来、誤りのあるフリット又はパケットが受信された場合、エラーを含むフリットだけでなく、この誤りのあるフリットの後にリンクパートナーデバイスによって送信されたいずれの他のフリットのリプレイもトリガするように、受信機によってリプレイ要求が送信される。選択的リプレイでは、受信機は、その代わりに、誤りのあるフリットのリプレイのみを要求し、このフリットの後に受信されたフリットをバッファし得、したがって、エラーの無いフリット(すなわち、従来のリプレイではリプレイされることになったであろう、誤りのあるフリットに続くフリット)を別様に再送することによって、リンクの帯域幅が「浪費」されないようになっている。しかしながら、リンクの帯域幅のこの最適化は、トレードオフ無しに実現されない。先行するリプレイされたフリットが受信されるまでは、バッファされた正しいフリットを受信デバイスが消費することができない場合があるので、選択的リプレイ中にリンクレイテンシが悪影響を受け得る。この処理遅延によって追加されたレイテンシは、受信側がバッファされたフリットのその処理において「キャッチアップ」することを可能にするプレースホルダデータ(例えば、SKP OSシンボル、アイドルフリット、又は他の非実質的データ)がリンク上で受信されるまで続き得る。
【0092】
選択的リトライ中にフリットを集積させるリトライバッファをクリアすることにおいて、アイドルフリット、NOPフリット、周期的なSKP OS等が、受信機に対してキャッチアップの機会を提示して、受信側リプレイバッファが時間とともに低下することを可能にし得るが、次のアイドルフリット又はSKP OSが待機されている間であって、リトライバッファをクリアする前に、別の選択的リプレイの結果としてもたらされる別のエラーが発生するリスクが存在する。それに応じて、この追加の選択的リトライは、受信機において経験されるレイテンシを合成することができる。それに応じて、リンクにおけるエラーレート及びトラフィックパターンに応じて(例えば、そのリンクは、フルに利用されていないが非常に少数のアイドルフリットを有する)、リプレイバッファを通じた遅延が非常に高い可能性がある。
【0093】
いくつかの実装において、システムは、選択的リプレイフリットを送信した後に送信機がそのフリット送信レートをスロットリングする場合、選択的リプレイを通して導入されたリンクレイテンシを低減することを試行し得る。例えば、受信機が選択的リプレイ要求(例えば、選択的Nak)を発行し、選択的リプレイを待機している場合、それは、RXリトライバッファに有効なペイロードフリットを格納し、選択的リプレイが受信された後にこれらのフリットを処理する。選択的リプレイの後に到着するペイロードフリットもまた、(例えば、全てのペイロードフリットがシーケンス番号の順序で処理されることになるシステム内において)RXリトライバッファに格納されなければならない。送信機スロットリングを行わない場合、RXリトライバッファは、全てのエントリを順に消費しなければならないので、受信パスにレイテンシを追加する。スロットリングは、送信機が、プレースホルダデータ(例えば、アイドルフリット、SKP OS等)のために実質的なペイロードフリットの送信を選択的かつ戦略的に保留することを含み得、これは、受信されたフリットにキャッチアップする受信機の能力を加速させ、かつそのRXリトライバッファを排出させる。送信機がフリット送信をより早期にスロットリングしてRXリトライバッファを排出させる場合、レイテンシを低減することができ、このパフォーマンスの影響を軽減することができる。送信機において遅延させられた(例えば、TLPを搬送する)フリットは、RXリトライバッファに格納されたフリットの処理バックログに起因していずれにしても受信機において遅延することになるので、この早期の送信機スロットリングは、パフォーマンス全体に影響を与えない。したがって、送信機において早期のスロットリングを実行することでRXリトライバッファが排出させられ、それにより、後続のTLPはレイテンシが低減する。
【0094】
選択的リトライのために、受信機は、レイテンシ最適化パスのため及び受信側リトライバッファにおける格納及び転送のための両方で、アイドルフリットでのみキャッチアップすることができる。リンクが低~中度の利用を有する場合、受信側リトライバッファは、例えば、100~200nsに相当するトラフィック(リプレイのラウンドトリップ遅延)を有し得、これは、(新たなエラーが発生しないと仮定すると)リンク上で100~200nsのアイドルフリット又はSKPオーダードセットが通信されるまで、誤っているフリットからの全ての後続のトラフィックに対する追加レイテンシになる。送信機は、受信機のリプレイバッファにおける非アイドルフリットの数を追跡し得る。スロットリングは、受信機の排出レートに合わせて調整され得る。例えば、(例えば、L0pに起因して)リンクが低減した幅で動作している場合、RXリトライバッファ排出レートはリンクレートよりも速い場合があるので、スロットリングは必要でない場合がある。いくつかの実装において、ソフトウェアコントローラが、リンクに影響するトラフィックパターン及び/又はエラーレートを判定又は予測して、これらの検出されたパターンに基づき、選択的リプレイに応答してスロットリングをトリガし得る。例えば、選択的リプレイ要求を受けると、送信機によって送信されるそれぞれの新たな非アイドルフリットにおいて或る特定の帯域幅効率が施行され得、それにより、受信機リトライバッファは、バッファされたフリットを処理する機会を有し、受信機にそれをバイパスさせることができる。
【0095】
いくつかの実装において、ソフトウェアベースコントローラ及び/又はポートプロトコルハードウェアは、有益なスロットリングレート及び/又はそのようなスロットリングのタイミングを計算するために、ロジックを実装し得る。例えば、コントローラ又は送信機ロジックは、初期リンク幅が受信機の排出レートであると仮定することができる。選択的NAKを受信すると、送信機は、いくつのペイロードフリットが現在そのTXリトライバッファに存在するかを知っているので、受信機のRXリトライバッファ内の(又は、そのバッファに向かう途中の)ペイロードフリットの数を計算することができる。送信機は、この情報を利用して、受信機のRXリトライバッファを排出させるように、それがそのトランザクション層から送信するそれぞれの新たなペイロードフリットにおいて、スロットリングする又は或る特定の帯域幅効率を施行する(例えば、ペイロードフリットにおける非動作(NOP)TLPの数を制限する)ことができる。
【0096】
説明的な例として、2つのデバイスがリンク(例えば、x8リンク)によって連結されてよく、第1のデバイスは、特定のフリット(例えば、フリット番号X)のための選択的NAKを受信し得、第1のデバイスの送信機は、フリット番号Xを最初に送信した後に、追加の4つのペイロードフリットを送信し得る。この場合、第1のデバイスの送信機又は他のスロットリングロジックは、第2のデバイスにおけるRXリプレイバッファリングによって追加されたレイテンシを検出又は推定し得、その上位プロトコル層(例えば、トランザクション又はプロトコル層)に、リンク上で送信されるデータを再編成させて、リンク上で経験される予測されたレイテンシに対応するリンク上での限定されたアクティビティの「バブル」(例えば、4フリットバブル)を生成し得る。例えば、x8リンクに関して、1つの例示的な実装において、フリットは、16のシンボルであってよく、SKPオーダードセットは、32のシンボルであってよく、したがって、例えば、4のNOP又はアイドルフリット、2のNOP又はアイドルフリット、及び1のSKPオーダードセット、又は2のSKPオーダードセットのいずれかのようなプレースホルダデータを使用して、4フリット「バブル」(又は潜在的には、選択的リプレイイベントの結果としてもたらされる任意のサイズのバブル)が構築され得る。他の例示的な実装の中でも、1つの例において、スロットリングロジックは、その送信機において、それが「バブル」を送信するまでそのペイロードフリットにおいて<Y% NOP TLP(例えば、Y=25)を施行するようにスロットリングを実施することを試行し、それにより、追加のペイロードフリットが送信される前に、そのリプレイバッファ中のフリットを他方のデバイスに処理及びクリアさせ得る(例えば、TLPが常時送信されている場合、これは2のSKPオーダードセットを取る可能性がある)。
【0097】
図13Bは、選択的リプレイイベントに伴ってリンクをスロットリングするために利用される技術を示す簡略化されたフローダイアグラム1300bである。選択的なフリットリプレイ要求が識別され得る1324。これに応答して、ロジックは、リンクの他端における受信機のリプレイバッファのステータスを識別することを試行し得る(例えば、1330)。さらに、(例えば、エラーレート、帯域幅利用等を計算してこれを閾値と比較するソフトウェア等によって)スロットリングが有効にされる条件が定義され得る。ロジックは、アイドルフリット(例えば、1332にて)、SKP OS(例えば、1336)、及び、受信機によって順に消費されることになるペイロードデータ又は他の実質的なデータのバックログに追加されない、受信機がそのリトライバッファに格納されたフリットを消費してバッファを徐々にクリアする機会を表す、他のプレースホルダデータの送信を追跡し得る。(例えば、1326にて)リトライバッファをクリアするように動作する間にも、追加の選択的なフリットリプレイ要求が検出され得る。このようなデータの受信は、(例えば、1338、1340にて)ロジックにリトライバッファレイテンシの理解を調整させ得る。他の例示的な実装の中でも、(例えば、選択的リプレイを終了させるように)スロットリングによってリトライバッファがクリアされたと判定された場合、別の適格な選択的リトライイベントが受信されるまで、(例えば、1328にて)スロットリングはオフにされ得る。
【0098】
上記の装置、方法、及びシステムは、上記のように任意の電子デバイス又はシステムに実装されてよいことに留意されたい。具体的な例示として、以下の図面は、本明細書に記載の解決手段を利用するための例示的なシステムを提供する。以下のシステムがより詳細に記載される通り、多数の異なるインターコネクトが開示され、記載され、上記説明から再検討される。上記例のうちのいくつかはUPIシステムに基づいているが、上で論じられた解決手段及び特徴は、様々なコンピューティングプラットフォーム内でソケット、パッケージ、ボード等を連結するために使用される他のキャッシュコヒーレントインターコネクトに等しくただ容易に適用され得ることが理解されるべきである。容易に明らかになるように、上で説明した進歩は、本明細書において論じられたインターコネクト、ファブリック、又はアーキテクチャ、及び、本明細書において明示又は説明されていない他の相当のインターコネクト、ファブリック、又はアーキテクチャのいずれかに適用され得る。
【0099】
図14を参照すると、マルチコアプロセッサを含むコンピューティングシステムに関するブロックダイアグラムの実施形態が描かれている。プロセッサ1400は、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システムオンチップ(SOC)、又は、コードを実行するための他のデバイス等の任意のプロセッサ又は処理デバイスを含む。一実施形態では、プロセッサ1400は、少なくとも2つのコア、すなわち、コア1401及び1402を含み、これらのコアは、非対称コア又は対称コア(図示の実施形態)を含むことができる。しかし、プロセッサ1400は、対称又は非対称であり得る任意の数の処理要素を含んでもよい。
【0100】
一実施形態において、処理要素とは、ソフトウェアスレッドをサポートするハードウェア又はロジックを指す。ハードウェア処理要素の例は、スレッドユニット、スレッドスロット、スレッド、処理ユニット、コンテキスト、コンテキストユニット、論理プロセッサ、ハードウェアスレッド、コア、及び/又は実行状態又はアーキテクチャ状態等のプロセッサの状態を保持することが可能な任意の他の要素を含む。言い換えると、一実施形態において、処理要素とは、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、又は独立して他のコード等のコードに関連付けられることが可能な任意のハードウェアを指す。物理プロセッサ(又はプロセッサソケット)とは通常、コア又はハードウェアスレッド等の任意の数の他の処理要素を潜在的に含む集積回路を指す。
【0101】
コアとはしばしば、独立したアーキテクチャ状態を維持可能な集積回路上に位置するロジックを指し、独立に維持される各アーキテクチャ状態は、少なくともいくつかの専用実行リソースと関連付けられる。複数のコアと対照的に、ハードウェアスレッドとは通常、独立したアーキテクチャ状態を維持可能な集積回路上に位置する任意のロジックを指し、その場合、複数の当該独立的に維持されるアーキテクチャ状態は複数の実行リソースへのアクセスを共有する。分かるように、特定のリソースが共有され、他のリソースがアーキテクチャ状態専用である場合、ハードウェアスレッドとコアとの間の用語体系の境界は重複する。しかししばしば、コアとハードウェアスレッドとは、オペレーティングシステムにより個々の論理プロセッサと見られており、オペレーティングシステムは、各論理プロセッサ上での動作を個別にスケジュールできる。
【0102】
図14に示すように、物理プロセッサ1400は、2つのコア、すなわち、コア1401及び1402を含む。ここでは、コア1401及び1402は、対称コア、すなわち、同じ構成、機能ユニット、及び/又はロジックを伴うコアであるとみなされる。別の実施形態では、コア1401は、アウトオブオーダプロセッサコアを含み、コア1402は、インオーダプロセッサコアを含む。しかしながら、コア1401及び1402は、ネイティブコア、ソフトウェア管理コア、ネイティブ命令セットアーキテクチャ(ISA)を実行すべく適合されたコア、変換された命令セットアーキテクチャ(ISA)を実行すべく適合されたコア、共同設計されたコア、又は他の既知のコアといった任意のタイプのコアから個々に選択されてよい。ヘテロジニアスなコア環境(すなわち、非対称コア)では、一方又は両方のコアでコードをスケジュール又は実行するためにバイナリ変換などの何らかの形態の変換が利用されてよい。ただし、図示の実施形態では、コア1402内のユニットも同様に動作するので、さらなる議論として、コア1401内に示す機能ユニットを下記でさらに詳細に説明する。
【0103】
図示のように、コア1401は、2つのハードウェアスレッド1401a及び1401bを含み、これらを、ハードウェアスレッドスロット1401a及び1401bと称することもできる。したがって、一実施形態において、オペレーティングシステムのような複数のソフトウェアエンティティは潜在的にプロセッサ1400を4つの個別のプロセッサ、すなわち4つのソフトウェアスレッドを同時に実行可能な4つの論理プロセッサ又は処理要素としてみなす。上記されたように、第1のスレッドは複数のアーキテクチャ状態レジスタ1401aと関連付けられ、第2のスレッドは複数のアーキテクチャ状態レジスタ1401bと関連付けられ、第3のスレッドは複数のアーキテクチャ状態レジスタ1402aと関連付けられてよく、第4のスレッドは複数のアーキテクチャ状態レジスタ1402bと関連付けられてよい。ここで、アーキテクチャ状態レジスタ(1401a、1401b、1402a、及び1402b)のそれぞれは、上記のように、処理要素、スレッドスロット、又はスレッドユニットと称することもできる。図示の通り、複数のアーキテクチャ状態レジスタ1401aは複数のアーキテクチャ状態レジスタ1401b内で複製されているので、複数の個々のアーキテクチャ状態/コンテキストが論理プロセッサ1401a及び論理プロセッサ1401bのために格納可能である。コア1401において、複数の命令ポインタ及びアロケータ及びリネーマブロック1430内のリネームロジックのような他の複数のより小さなリソースはまた、スレッド1401a及び1401bのために複製されてよい。リオーダ/リタイアメントユニット1435内のリオーダバッファ、ILTB1420、ロード/ストアバッファ、及び、キュー等のいくつかのリソースを、パーティショニングを通して共有することができる。複数の汎用内部レジスタ、ページテーブルベースレジスタ、低レベルデータキャッシュ及びデータTLB1415、実行ユニット1440、及びアウトオブオーダユニット1435の複数の部分のような他の複数のリソースが潜在的に十分共有される。
【0104】
プロセッサ1400はしばしば、複数の他のリソースを含み、それらは完全に共有、パーティショニングを介して共有、又は処理要素により/対して専用とされてよい。
図14において、プロセッサに係る例示の複数の論理ユニット/リソースを持つ純粋に例示的なプロセッサの一実施形態が示されている。プロセッサは、これらの機能ユニットのうち任意のものを含むか又は省略してよく、並びに図示されていない複数の任意の他の既知の機能ユニット、ロジック又はファームウェアを含んでよいことに留意されたい。図示の通り、コア1401は、簡易な代表的アウトオブオーダ(OOO)プロセッサコアを含む。しかし、異なる実施形態では、インオーダプロセッサを利用してもよい。OOOコアは、実行するべき/たどるべきブランチを予測するためのブランチターゲットバッファ1420と、命令についてのアドレストランスレーションエントリを記憶するための命令トランスレーションバッファ(I-TLB)1420とを含む。
【0105】
コア1401は、フェッチされた要素をデコードするために、フェッチユニット1420に連結されたデコードモジュール1425をさらに含む。一実施形態では、フェッチロジックが、スレッドスロット1401a、1401bにそれぞれ関連付けられた個別のシーケンサを含む。通常、コア1401は、プロセッサ1400上で実行可能な複数の命令を定義/指定する第1のISAと関連付けられる。しばしば、第1のISAの一部である複数のマシンコード命令は、実行される命令又は動作を参照/指定する命令の一部(オペコードと称される)を含む。デコードロジック1425は、それらのオペコードからこれらの命令を認識し、第1のISAによって定義される処理のために、デコードされた複数の命令をパイプラインに渡す回路を含む。例えば、より詳細に後述される通り、一実施形態において、複数のデコーダ1425はトランザクション命令のような複数の特定の命令を認識すべく、設計又は適合されたロジックを含む。デコーダ1425による認識の結果として、アーキテクチャ又はコア1401は、適切な命令と関連付けられた複数のタスクを実行すべく特定の、予め定義された複数の動作を行う。本明細書に記載される複数のタスク、ブロック、動作及び方法のうち任意のものが、単一又は複数の命令に応答して実行されてよく;これらのうちのいくつかは、新しいか又は古い命令であってよいことに注意することが重要である。一実施形態では、複数のデコーダ1426が同じISA(又は、そのサブセット)を認識することに留意されたい。あるいは、ヘテロジニアスなコア環境では、デコーダ1426は、第2のISA(第1のISAのサブセット又は別個のISAのいずれか)を認識する。
【0106】
一例では、アロケータ及びリネーマブロック1430が、命令処理結果を記憶するためのレジスタファイル等のリソースを予約するためのアロケータを含む。しかしながら、スレッド1401a及び1401bは、潜在的にアウトオブオーダ実行が可能であり、アロケータ及びリネーマブロック1430は、命令結果を追跡するためのリオーダバッファ等の他のリソースも予約す。ユニット1430は、プログラム参照レジスタ/命令参照レジスタを、プロセッサ1400内部の他のレジスタにリネームするためのレジスタリネーマを含んでもよい。リオーダ/リタイアメントユニット1435は、先に述べたリオーダバッファ、ロードバッファ等のコンポーネントを含み、アウトオブオーダ実行をサポートし、その後に、アウトオブオーダで実行された命令のインオーダのリタイアメントをサポートするためのバッファを記憶する。
【0107】
一実施形態では、スケジューラ及び実行ユニットブロック1440が、実行ユニット上の命令/オペレーションをスケジュールするためのスケジューラユニットを含む。例えば、浮動小数点命令が、利用可能な浮動小数点実行ユニットを有する実行ユニットのポート上でスケジュールされる。これらの実行ユニットに関連付けられたレジスタファイルも、情報命令処理結果を記憶するために含められる。例示的実行ユニットには、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、記憶実行ユニット、及び他の既知の実行ユニットが含まれる。
【0108】
下位レベルのデータキャッシュ及びデータ変換バッファ(D-TLB)1450が、実行ユニット1440に連結される。データキャッシュは、複数のメモリコヒーレンシ状態に潜在的に保持された複数のデータオペランドのような、最近使用/動作されたものを複数の要素上格納する。D-TLBは、最近の仮想/線形アドレスから物理アドレスへの変換を格納する。具体例として、プロセッサは複数の仮想ページに物理メモリを分割するページテーブル構造体を含んでよい。
【0109】
ここで、コア1401及び1402は、オンチップインタフェース1410に関連付けられた第2のレベルキャッシュのような、より高レベル又はより遠いキャッシュへのアクセスを共有する。ここで、より高レベル又はより遠いとは、実行ユニットから増加する又は更に遠ざかる複数のキャッシュレベルを指すことに留意されたい。一実施形態において、より高レベルのキャッシュは、ラストレベルデータキャッシュ、すなわちプロセッサ1400のメモリ階層内の第2又は第3のレベルデータキャッシュのようなラストキャッシュである。しかしながら、より高レベルのキャッシュは命令キャッシュに関連付けられるか又はこれを含んでよいので、そのように限定されない。むしろ、命令キャッシュのタイプであるトレースキャッシュが、複数の最近デコードされたトレースを格納すべく、デコーダ1425の後に連結されてよい。ここでは、命令は、マクロ命令(すなわち、デコーダにより認識される一般的な命令)を潜在的に指し、これは、いくつかのマイクロ命令(マイクロオペレーション)にデコードすることができる。
【0110】
図示の構成では、プロセッサ1400は、オンチップインタフェースモジュール1410も含む。歴史的には、下記でより詳細に説明するメモリコントローラは、プロセッサ1400外部のコンピューティングシステム内に含まれてきた。このシナリオにおいて、オンチップインタフェース1410は、システムメモリ1475、チップセット(しばしばメモリ1475に接続するメモリコントローラハブ及び複数の周辺デバイスと接続するI/Oコントローラハブを含む)、メモリコントローラハブ、ノースブリッジ、又は他の集積回路のようなプロセッサ1400の複数の外部デバイスと通信する。また、このシナリオでは、バス1405が、マルチドロップバス、ポイントツーポイントインターコネクト、シリアルインターコネクト、パラレルバス、コヒーレント(例えば、キャッシュコヒーレント)バス、階層型プロトコルアーキテクチャ、異なるバス、及びGTLバス等の任意の既知のインターコネクトを含むことができる。
【0111】
メモリ1475は、プロセッサ1400専用であっても、又はシステム内の他のデバイスと共有されていてもよい。メモリ1475の複数のタイプの共通の例示は、DRAM、SRAM、不揮発性メモリ(NVメモリ)、及び複数の他の既知のストレージデバイスを含む。デバイス1480は、グラフィックアクセラレータ、プロセッサ又はメモリコントローラハブに連結されたカード、I/Oコントローラハブに連結されたデータストレージ、無線トランシーバ、フラッシュデバイス、オーディオコントローラ、ネットワークコントローラ、又は他の既知のデバイスを含んでよいことに留意されたい。
【0112】
しかし最近では、SOC等の単一のダイ上で、より多くのロジック及びデバイスが集積されているので、これらのデバイスのそれぞれを、プロセッサ1400上に組み込むことができる。例えば、一実施形態において、メモリコントローラハブはプロセッサ1400と同じパッケージ上及び/又は同じダイ上に存在する。ここで、コア(オンコア部分)1410の一部は、メモリ1475又はグラフィックスデバイス1480のような他の複数のデバイスとのインタフェースを取るための1又は複数のコントローラを含む。こうしたデバイスとインタフェースを取るためのインターコネクト及びコントローラを含む構成は、しばしば、オンコア(又はアンコア(un-core)構成)と称される。一例として、オンチップインタフェース1410は、オンチップ通信のためのリングインターコネクト、及び、オフチップ通信のための高速シリアルポイントツーポイントリンク1405を含む。しかし、SOC環境では、ネットワークインタフェース、コプロセッサ、メモリ1475、グラフィックスプロセッサ1480、及び他の任意の既知のコンピュータデバイス/インタフェース等、はるかにより多くのデバイスを、単一のダイ又は集積回路上で集積して、高機能及び低電力消費の小型フォームファクタを提供することができる。
【0113】
一実施形態において、プロセッサ1400は、本明細書に記載の装置及び方法をサポートし、又はそれらとインタフェースを取るべく、アプリケーションコード1476をコンパイル、変換、及び/又は最適化するためのコンパイラ、最適化、及び/又は変換コード1477を実行可能である。コンパイラはしばしば、ソーステキスト/コードをターゲットテキスト/コードに変換するプログラム又はプログラムセットを含む。通常、コンパイラを用いるプログラム/アプリケーションコードのコンパイルは、複数のフェーズ及びパスで行われ、高レベルプログラミング言語コードを低レベルマシン若しくはアセンブリ言語コードに変換する。ただし、単純なコンパイルには、単一のパスコンパイラを依然利用することができる。コンパイラは、任意の既知のコンパイル技術を利用し、語彙解析、前処理、パーシング、意味解析、コード生成、コード変換、及びコード最適化等の任意の既知のコンパイラオペレーションを実行することができる。
【0114】
より大型のコンパイラはしばしば、複数のフェーズを含むが、ほとんどの場合、これらのフェーズは、次の2つの一般的なフェーズ内に含まれる:(1)フロントエンド、すなわち、概してそこでは、構文処理、セマンティック処理、及びいくつかの変換/最適化が行われ得る、及び、(2)バックエンド、すなわち、概してそこでは、分析、変換、最適化、及びコード生成が行われる。いくつかのコンパイラはミドル(middle)と呼ばれ、これはコンパイラのフロントエンドとバックエンドとの間の区別が曖昧であることを示す。結果として、挿入、関連付け、生成、又はコンパイラの他の動作への参照が上記フェーズ又はパスのうち任意のものにおいて、並びにコンパイラの任意の他の複数の既知のフェーズ又はパスにおいて発生してよい。説明的な例として、コンパイラは潜在的に複数の動作、呼び出し、機能等をコンパイルの1又は複数のフェーズ内に挿入し、例えば、コンパイルのフロントエンドフェーズ内での複数の呼び出し/動作の挿入、及びその後の、変換フェーズ中の当該複数の呼び出し/動作のより低水準コードへの変換が挙げられる。動的コンパイル中、コンパイラコード又は動的最適化コードは、そのような複数の動作/呼び出しを挿入してよく、並びにランタイム中の実行のために当該コードを最適化してよいことに留意されたい。特定の説明的な例として、バイナリコード(既にコンパイルされたコード)をランタイム中に動的に最適化してよい。ここで、プログラムコードは、動的最適化コード、バイナリコード、又は、それらの組み合わせを含み得る。
【0115】
コンパイラと同様、バイナリトランスレータ等のトランスレータは、コードを最適化及び/又は変換すべく、コードを静的又は動的のいずれかで変換する。したがって、コード、アプリケーションコード、プログラムコード、又は他のソフトウェア環境の実行に対する言及は、(1)プログラムコードをコンパイルするため、複数のソフトウェア構造を維持するため、他の複数の動作を実行するため、コードを最適化するため、又はコードを変換するための、コンパイラプログラム、最適化コードオプティマイザ、又はトランスレータの動的又は静的いずれかでの実行;(2)最適化/コンパイルされたアプリケーションコードのような複数の動作/呼び出しを含むメインプログラムコードの実行;(3)複数のソフトウェア構造を維持するため、他のソフトウェア関連動作を行うため、又はコードを最適化するためのメインプログラムコードに関連付けられた複数のライブラリのような他のプログラムコードの実行;又は(4)それらの組み合わせを指してよい。
【0116】
ここで
図15を参照すると、本開示の実施形態による第2のシステム1500のブロックダイアグラムが示されている。
図15に示すように、マルチプロセッサシステム1500は、ポイントツーポイントインターコネクトシステムであり、ポイントツーポイントインターコネクト1550を介して連結された第1のプロセッサ1570及び第2のプロセッサ1580を含む。プロセッサ1570及び1580のそれぞれは、或るバージョンのプロセッサであってもよい。一実施形態では、1552及び1554は、高性能アーキテクチャのような、シリアルポイントツーポイントコヒーレントインターコネクトファブリックの一部である。結果として、UPI又は他のアーキテクチャ内で、本明細書において説明された解決手段が実装され得る。
【0117】
2つのプロセッサ1570、1580のみを伴うものを示しているが、本開示の範囲は、そのように限定されないことが理解されるはずである。他の実施形態では、所与のプロセッサ内に、1又は複数の追加のプロセッサが存在し得る。
【0118】
プロセッサ1570及び1580は、それぞれ統合されたメモリコントローラユニット1572及び1582を含むように図示されている。また、プロセッサ1570は、自体のバスコントローラユニットの一部分として、ポイントツーポイント(P-P)インタフェース1576及び1578を含み、同様に、第2のプロセッサ1580は、P-Pインタフェース1586及び1588を含む。プロセッサ1570、1580は、P-Pインタフェース回路1578、1588を使用して、ポイントツーポイント(P-P)インタフェース1550を介して情報を交換することができる。
図15に示されるように、IMC1572及び1582は、プロセッサをそれぞれのメモリ、すなわち、メモリ1532及びメモリ1534に連結し、これらは、それぞれのプロセッサへローカルに取り付けられたメインメモリの複数の部分であってよい。
【0119】
プロセッサ1570、1580は、それぞれ、ポイントツーポイントインタフェース回路1576、1594、1586、1598を使用して、個別のP-Pインタフェース1552、1554を介してチップセット1590と情報を交換する。また、チップセット1590は、高性能グラフィックスインターコネクト1539に沿って、インタフェース回路1592を介して高性能グラフィックス回路1538と情報を交換する。
【0120】
共有キャッシュ(図示せず)が、いずれかのプロセッサの中に、又は、両方のプロセッサの外に含まれてよい;ただし、プロセッサが低電力モードにされた場合に、いずれか又は両方のプロセッサのローカルキャッシュ情報を共有キャッシュに記憶することができるように、P-Pインターコネクトを介してプロセッサに接続される。
【0121】
チップセット1590はインタフェース1596を介して第1のバス1516に連結され得る。一実施形態において、第1のバス1516はペリフェラルコンポーネントインターコネクト(PCI)バス、又はPCI Expressバス若しくは別の第3世代I/Oインターコネクトバス等のバスであってよいが、本開示の範囲はそのようには限定されない。
【0122】
図15に示されるように、多様なI/Oデバイス1514が、第1のバス1516に、バスブリッジ1518とともに連結され、このバスブリッジは、第1のバス1516を第2のバス1520へと連結する。一実施形態では、第2のバス1520は、ローピンカウント(LPC)バスを含む。一実施形態では、例えば、キーボード及び/又はマウス1522、通信デバイス1527、並びに、命令/コード及びデータ1530をしばしば含む、ディスクドライブ又は他のマスストレージデバイス等のストレージユニット1528を含めた様々なデバイスが、第2のバス1520に連結されている。さらに、第2のバス1520に連結されたオーディオI/O1524が示されている。他のアーキテクチャも可能であることに留意されたく、ここで、含まれるコンポーネント及びインターコネクトアーキテクチャは変わる。例えば、
図15のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバス又は他のこうしたアーキテクチャを実装することもできる。
【0123】
本明細書において論じられた解決手段は限られた数の実施形態に関して説明されたが、当業者であれば、それらからの様々な変更及び変形を理解できよう。添付の特許請求の範囲は、本開示の真の趣旨及び範囲に含まれる全てのそのような変更及び変形を包含することが意図される。
【0124】
設計は、作成からシミュレーション、製造まで様々なステージを経てよい。設計を表すデータは、多数の態様で設計を表してよい。まず、シミュレーションでは役に立つので、ハードウェア記述言語又は別の機能記述言語を使用して、ハードウェアを表すことができる。加えて、ロジック及び/又はトランジスタゲートを用いた回路レベルモデルが、設計処理のいくつかのステージで生成されてよい。さらに、ほとんどの設計が、何らかのステージにおいて、ハードウェアモデルにおける様々なデバイスの物理配置を表すデータのレベルに達する。従来の半導体製造技術が用いられる場合、ハードウェアモデルを表すデータは、集積回路を製造するために用いられるマスクの異なるマスク層上にある様々な特徴の存在又は不存在を指定するデータであってよい。設計のいかなる表現においても、データは、任意の機械可読媒体の形態で記憶することができる。メモリ、又はディスク等の磁気又は光ストレージは、情報を送信するために、変調されるか又は別様に生成される光波又は電波を介して送信されるそのような情報を格納する機械可読媒体であってよい。コード又は設計を示すか又は搬送する電気搬送波が送信される場合、電気信号のコピー、バッファリング又は送信が実行される限りにおいて、新しいコピーが作成される。したがって、通信プロバイダ又はネットワークプロバイダは有形な機械可読媒体上に少なくとも一時的に、搬送波にエンコードされた情報のようなアーティクルを格納してよく、本開示の複数の実施形態に係る複数の技術を具現する。
【0125】
本明細書で用いられるようなモジュールは、ハードウェア、ソフトウェア、及び/又はファームウェアの任意の組み合わせを指す。一例として、モジュールは、マイクロコントローラによって実行されるよう適合されたコードを格納する非一時的媒体に関連付けられるマイクロコントローラ等のハードウェアを含む。したがって、一実施形態では、モジュールへの言及は、非一時的媒体に保持されるコードを認識及び/又は実行するように具体的に構成されたハードウェアを指す。さらに、別の実施形態では、モジュールの使用とは、予め定められた複数の動作を実行するためにマイクロコントローラによって実行されるように特に適合させられているコードを含む非一時的媒体を指す。推論され得るように、また別の実施形態では、(この例における)モジュールという用語は、マイクロコントローラと非一時的媒体との組み合わせを指してよい。多くの場合、別個のものとして示される複数のモジュールの境界は通例変動し、潜在的に重複する。例えば、第1及び第2のモジュールは、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせを共有するが、いくつかの独立したハードウェア、ソフトウェア、又はファームウェアを潜在的に維持してもよい。一実施形態では、ロジックという用語の使用は、トランジスタ、レジスタ等のハードウェア、又は、プログラマブルロジックデバイス等の他のハードウェアを含む。
【0126】
一実施形態では、「ように構成され(configured to)」という文言の使用は、指定又は決定されたタスクを実行する装置、ハードウェア、ロジック、又は要素を配置すること、まとめること、製造すること、販売に供すること、輸入及び/又は設計することを指す。この例において、動作していない装置又はその要素は、指定されたタスクを実行するように設計され、連結され、及び/又は相互接続されている場合、依然として、上記の指定されたタスクを実行する「ように構成され」ている。純粋に説明的な例として、ロジックゲートは、動作中0又は1を提供してよい。しかしながら、イネーブル信号をクロックに提供するように「構成され」たロジックゲートは、1又は0を提供し得る全ての潜在的ロジックゲートを含むわけではない。代わりに、当該ロジックゲートは、動作中に1又は0出力が当該クロックを有効にするよう何らかの方式で連結されたものである。「ように構成され」という用語の使用は、オペレーションを必要としないが、代わりに、装置、ハードウェア及び/又は要素の潜在的な状態に重点を置いていることに留意されたく、潜在的な状態では、装置、ハードウェア及び/又は要素は、装置、ハードウェア及び/又は要素が動作している場合に特定のタスクを実行するように設計されている。
【0127】
さらに、一実施形態では、「ように(to)」、「が可能(capable of/to)」、及び/又は、「ように動作可能(operable to)」という言い回しの使用は、指定された方式で或る装置、ロジック、ハードウェア、及び/又は、要素の使用を可能にするように設計された、当該装置、ロジック、ハードウェア、及び/又は、要素を指す。一実施形態において、ように、が可能、又はように動作可能という文言の使用は、装置、ロジック、ハードウェア及び/又は要素の潜在的な状態を指し、ここで、当該装置、ロジック、ハードウェア及び/又は要素は、動作していないが、装置を指定された方式で用いることを可能にするように設計されていることに上記同様留意されたい。
【0128】
本明細書において用いられる値は、数値、状態、論理状態又はバイナリ論理状態の任意の既知の表現を含む。しばしば、ロジックレベル、ロジック値又は論理値の使用は、1及び0とも称され、単にバイナリロジック状態を表す。例えば、1は高ロジックレベルを指し、0は低ロジックレベルを指す。一実施形態において、トランジスタ又はフラッシュセル等のストレージセルは、単一の論理値又は複数の論理値を保持可能であってよい。しかしながら、コンピュータシステムにおける値の他の表現が用いられている。例えば、十進数の10は、1010というバイナリ値として及び十六進数の文字Aとして表されてもよい。したがって、値は、コンピュータシステムに保持可能な情報の任意の表現を含む。
【0129】
さらに、状態は、値又は値の部分により表され得る。例として、論理1等の第1の値はデフォルト状態又は初期状態を表し得るが、論理ゼロ等の第2の値は非デフォルト状態を表し得る。加えて、一実施形態において、リセット及び設定という用語は、デフォルト及び更新された値又は状態をそれぞれ指す。例えば、デフォルト値は、高論理値、すなわちリセットを潜在的に含み、一方で、更新された値は、低論理値、すなわちセットを潜在的に含む。任意の数の状態を表すために、複数の値の任意の組み合わせが利用され得ることに留意されたい。
【0130】
上記に記載の方法、ハードウェア、ソフトウェア、ファームウェア、又はコードの実施形態は、処理要素により実行可能な、機械アクセス可能、機械可読、コンピュータアクセス可能、又はコンピュータ可読媒体上に格納された命令又はコードを介して実装され得る。非一時的機械アクセス可能/可読媒体は、コンピュータ又は電子システムのような機械により可読な形態で情報を提供(すなわち、格納及び/又は送信)する任意のメカニズムを含む。例えば、非一時的機械アクセス可能媒体には、スタティックRAM(SRAM)又はダイナミックRAM(DRAM)等のランダムアクセスメモリ(RAM)と;ROMと;磁気又は光ストレージ媒体と;フラッシュメモリデバイスと;電気ストレージデバイスと;光ストレージデバイスと;アコースティックストレージデバイスと;一時的な(伝搬される)信号(例えば、搬送波、赤外線信号、デジタル信号)から受信される情報を保持するための他の形式のストレージデバイス;等が含まれ、これらは、そこから情報を受信することができる非一時的媒体とは区別されるべきである。
【0131】
本明細書における例示的な実施形態を実行するためのロジックをプログラムするために用いられる命令は、DRAM、キャッシュ、フラッシュメモリ、又は他のストレージのような、システムのメモリ内に格納されてよい。さらに、命令はネットワークを介して、又は他のコンピュータ可読媒体を用いて配信され得る。したがって、機械可読媒体は、情報を機械(例えば、コンピュータ)によって読み取り可能な形態で格納又は送信するための任意のメカニズムを含んでよく、このようなものとしては、限定ではないが、フロッピーディスク、光ディスク、コンパクトディスク、リードオンリメモリ(CD‐ROM)、及び磁気光ディスク、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、磁気又は光カード、フラッシュメモリ、又は、インターネット上で伝搬信号(例えば、搬送波、赤外線信号、デジタル信号等)の電気的、光学的、音響的又は他の形態を介した情報の送信に用いられる有形の機械可読ストレージを含む。したがって、コンピュータ可読媒体は、機械(例えば、コンピュータ)によって読み取り可能な形態で複数の電子命令又は情報を格納又は送信するのに適した、任意のタイプの有形の機械可読媒体を含む。
【0132】
以下の例は、本明細書に係る実施形態に関する。
例1は、ポートを備える装置であって、前記ポートは、送信機;及び、プロトコル回路であって、第1のフリットフォーマットに従って第1のフリットを生成し、ここで、前記第1のフリットフォーマットは、前記第1のフリットにおいて送信されることになるデータ量に対して第1の数の誤り検出符号が提供されることになることを定義し、前記第1のフリットは、リンクが第1のリンク幅で動作している間に前記送信機によって前記リンク上で送信されることになり、ここで、前記リンクは、前記ポートを別のコンピューティングデバイスに連結する;第1のリンク幅から第2のリンク幅への前記リンクの遷移を識別し、ここで、前記第2のリンク幅は、前記第1のリンク幅よりも狭い;及び、前記第2のリンク幅への前記遷移に基づき、第2のフリットフォーマットに従って第2のフリットを生成し、ここで、前記第2のフリットは、前記リンクが前記第2のリンク幅で動作している間に送信されることになり、前記第2のフリットフォーマットは、前記第2のフリットにおいて送信されることになる同じデータ量に対して第2の数の誤り検出符号が提供されることになることを定義し、ここで、前記第2の数は、前記第1の数よりも大きい、を有する、装置である。
【0133】
例2は、例1の主題を含み、ここで、前記第1のリンク幅では第1の数のアクティブ物理レーンが利用されることになり、前記第2のリンク幅では第2のより少数のアクティブ物理レーンが利用されることになる。
【0134】
例3は、例1~2のいずれか1つの主題を含み、ここで、前記第1のフリットフォーマットは、定義された第1の長さを有し、前記第2のフリットフォーマットは、前記第1の長さよりも長い定義された第2の長さを有する。
【0135】
例4は、例1~3のいずれか1つの主題を含み、ここで、前記第1のフリットにおける前記データ量は、第1のトランザクション層データを保持し、前記第2のフリットにおける前記データ量は、第2のトランザクション層パケットデータを保持する。
【0136】
例5は、例1~4のいずれか1つの主題を含み、ここで、前記第1の数の誤り検出符号は、前記第1のフリットのそれぞれの部分に対してそれぞれの巡回冗長検査(CRC)符号をそれぞれ含み、前記第2の数の誤り検出符号のそれぞれは、前記第2のフリットのそれぞれの部分に対してそれぞれのCRC符号を含む。
【0137】
例6は、例5の主題を含み、ここで、前記第1のフリットフォーマットは、前記第1のフリットの前記データ量に基づいて計算された第1の誤り訂正符号を含み、前記第2のフリットフォーマットは、前記第2のフリットの前記データ量に基づいて計算された第2の誤り訂正符号を含む。
【0138】
例7は、例6の主題を含み、ここで、前記第1の誤り訂正符号は、第1の前方誤り訂正(FEC)符号を含み、前記第2の誤り訂正符号は、第2のFEC符号を含む。
【0139】
例8は、例1~7のいずれか1つの主題を含み、ここで、前記プロトコル回路は、さらに、第1のアクティブリンク状態から部分幅アクティブリンク状態に遷移するようになっており、前記第1のリンク幅から前記第2のリンク幅への前記遷移は、前記第1のアクティブリンク状態から前記部分幅アクティブリンク状態への前記遷移に伴ったものである。
【0140】
例9は、例1~8のいずれか1つの主題を含み、ここで、前記第1のフリットフォーマット及び前記第2のフリットフォーマットは、インターコネクトプロトコルに従ったものである。
【0141】
例10は、例9の主題を含み、ここで、前記インターコネクトプロトコルは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、コンピュートエクスプレスリンク(CXL)、又はUltraPathインターコネクト(UPI)のうちの1つを含む。
【0142】
例11は、リンクが第1のリンク幅で動作している場合に第1のフリットフォーマットに従ってフリットを送信する段階、ここで、前記第1のフリットフォーマットは、第1のデータ量を保護するために第1の数の巡回冗長検査(CRC)符号を含む;前記リンクを前記第1のリンク幅から第2のリンク幅に遷移させる段階、ここで、前記第2のリンク幅は、部分リンク幅を含み、前記第2のリンク幅は、前記第1のリンク幅よりも狭い;及び、前記リンクが前記第2のリンク幅で動作している場合に第2のフリットフォーマットに従ってフリットを送信する段階、ここで、前記第2のフリットフォーマットは、第2のデータ量を保護するために第2の数のCRC符号を含み、前記第1のデータ量は、前記第2のデータ量に等しく、CRC符号の前記第2の数は、CRC符号の前記第1の数よりも大きい、を備える方法である。
【0143】
例12は、例11の主題を含み、 前記第2のリンク幅が閾値リンク幅よりも狭いことを判定する段階;及び、前記第2のリンク幅が前記閾値リンク幅よりも狭いことに基づき、前記第1のフリットフォーマットの代わりに前記第2のフリットフォーマットが使用されることになると判定する段階をさらに備える。
【0144】
例13は、例11~12のいずれか1つの主題を含み、前記リンクのトレーニングに参加する段階、ここで、前記リンクは、第1のデバイスを第2のデバイスに連結する;前記リンクのトレーニング中、前記第1のデバイス及び前記第2のデバイスの両方が前記第2のフリットフォーマットの使用をサポートしていることを判定する段階、ここで、前記第1のデバイス及び第2のデバイスによる前記第2のフリットフォーマットの相互サポートの判定に基づいて、前記第2のフリットフォーマットが前記第2のリンク幅で使用される、をさらに備える。
【0145】
例14は、例13の主題を含み、前記リンクのトレーニング中、前記第2のフリットフォーマットの使用に対応する閾値リンク幅を判定する段階、ここで、前記リンクの前記リンク幅が前記閾値リンク幅よりも狭い場合、前記第2のフリットフォーマットが使用されることになる、をさらに備える。
【0146】
例15は、例11~14のいずれか1つの主題を含み、ここで、部分幅状態では、前記第1のリンク幅及び前記第2のリンク幅の両方が使用される。
【0147】
例16は、例11~15のいずれか1つの主題を含み、ここで、前記第1のフリットフォーマットは、前記第1のフリットの前記データ量に基づいて計算された第1の誤り訂正符号を含み、前記第2のフリットフォーマットは、前記第2のフリットの前記データ量に基づいて計算された第2の誤り訂正符号を含む。
【0148】
例17は、例16の主題を含み、ここで、前記第1の誤り訂正符号は、第1の前方誤り訂正(FEC)符号を含み、前記第2の誤り訂正符号は、第2のFEC符号を含む。
【0149】
例18は、例11~17のいずれか1つの主題を含み、ここで、前記第1のフリットフォーマット及び前記第2のフリットフォーマットは、インターコネクトプロトコルに従ったものである。
【0150】
例19は、例18の主題を含み、ここで、前記インターコネクトプロトコルは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、コンピュートエクスプレスリンク(CXL)、又はUltraPathインターコネクト(UPI)のうちの1つを含む。
【0151】
例20は、例11~19のいずれか1つに記載の方法を実行するための手段を含むシステムである。
【0152】
例21は、例20の主題を含み、ここで、前記手段は、命令が記憶された非一時的機械可読媒体を含み、前記命令は、例11~19のいずれか1つに記載の方法の少なくとも一部を機械に実行させるように前記機械によって実行可能である。
【0153】
例22は、第1のデバイス;及び、リンクによって前記第1のデバイスに連結された第2のデバイスであって、前記第2のデバイスは、前記リンクが第1のリンク幅で動作している間に前記リンク上で前記第1のデバイスに第1のデータユニットを送信し、ここで、前記第1のユニットは、第1のフォーマットに従ってフォーマット化されており、前記第1のフォーマットは、前記第1のデータユニットのそれぞれが、特定のデータ量を保持し、前記特定のデータ量に対して第1の数の誤り検出符号を含むことを定義する;前記第1のリンク幅から第2のリンク幅に遷移し、ここで、前記第1のリンク幅では、前記第2のリンク幅におけるよりも多数のレーンが使用される;及び、前記リンクが前記第2のリンク幅で動作している間に、前記リンク上で前記第1のデバイスに第2のデータユニットを送信する、ここで、前記第2のデータユニットは、第2のフォーマットに従ってフォーマット化されており、前記第2のフォーマットは、前記第2のデータユニットのそれぞれが、前記特定のデータ量を保持し、前記特定のデータ量に対して第2の数の誤り検出符号を含むことを定義し、ここで、前記第2の数は、前記第1の数よりも大きい、ようになっている回路を含む第2のデバイスを備えるシステムである。
【0154】
例23は、例22の主題を含み、ここで、前記回路は、さらに、前記第2のリンク幅が前記リンクに関して定義された閾値リンク幅よりも狭いことを判定するようになっており、前記第2のリンク幅が前記閾値リンク幅よりも狭いとの判定に基づき、前記リンク上で送信されるデータユニットに対して前記第2のフォーマットが使用される。
【0155】
例24は、例22~23のいずれか1つの主題を含み、データユニットは、フリットを含む。
【0156】
例25は、例22~24のいずれか1つの主題を含み、ここで、第1のデバイス又は第2のデバイスの1つは、プロセッサデバイスを含む。
【0157】
例26は、例22~24のいずれか1つの主題を含み、ここで、第1のデバイス又は第2のデバイスの1つは、アクセラレータデバイスを含む。
【0158】
例27は、例22~26のいずれか1つの主題を含み、ここで、前記第1のリンク幅では第1の数のアクティブ物理レーンが利用されることになり、前記第2のリンク幅では第2のより少数のアクティブ物理レーンが利用されることになる。
【0159】
例28は、例22~27のいずれか1つの主題を含み、ここで、前記第1のユニットにおける前記データ量は、第1のトランザクション層データを保持し、前記第2のユニットにおける前記データ量は、第2のトランザクション層パケットデータを保持する。
【0160】
例29は、例22~28のいずれか1つの主題を含み、ここで、前記第1のフォーマットは、定義された第1の長さを有し、前記第2のフォーマットは、前記第1の長さよりも長い定義された第2の長さを有する。
【0161】
例30は、例22~29のいずれか1つの主題を含み、ここで、前記第1の数の誤り検出符号は、前記第1のユニットのそれぞれの部分に対してそれぞれの巡回冗長検査(CRC)符号をそれぞれ含み、前記第2の数の誤り検出符号のそれぞれは、前記第2のユニットのそれぞれの部分に対してそれぞれのCRC符号を含む。
【0162】
例31は、例30の主題を含み、ここで、前記第1のフォーマットは、前記第1のユニットの前記データ量に基づいて計算された第1の誤り訂正符号を含み、前記第2のフォーマットは、前記第2のユニットの前記データ量に基づいて計算された第2の誤り訂正符号を含む。
【0163】
例32は、例31の主題を含み、ここで、前記第1の誤り訂正符号は、第1の前方誤り訂正(FEC)符号を含み、前記第2の誤り訂正符号は、第2のFEC符号を含む。
【0164】
例33は、例22~32のいずれか1つの主題を含み、ここで、前記プロトコル回路は、さらに、第1のアクティブリンク状態から部分幅アクティブリンク状態に遷移するようになっており、前記第1のリンク幅から前記第2のリンク幅への前記遷移は、前記第1のアクティブリンク状態から前記部分幅アクティブリンク状態への前記遷移に伴ったものである。
【0165】
例34は、例22~33のいずれか1つの主題を含み、ここで、前記第1のフォーマット及び前記第2のフォーマットは、インターコネクトプロトコルに従ったものである。
【0166】
例35は、例34の主題を含み、ここで、前記インターコネクトプロトコルは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、コンピュートエクスプレスリンク(CXL)、又はUltraPathインターコネクト(UPI)のうちの1つを含む。
【0167】
例36は、リンクの特性を判定する段階、ここで、前記リンクは、第1のデバイスを第2のデバイスに連結する;特定のフリットにおいて検出されたエラーに基づき、フリットのストリームにおける前記特定のフリットの送信をリトライするための選択的リトライ要求を識別する段階;前記選択的リトライ要求に基づき、リトライバッファにおけるフリットのバッファリングを通して蓄積したレイテンシを判定する段階;及び、前記リトライバッファをクリアすることを支援するように、前記リンク上でのトラフィックをスロットリングする段階を備える方法である。
【0168】
例37は、例36の主題を含み、ここで、リンクは、PCIeベースのプロトコルに準拠する。
【0169】
例38は、例36~37のいずれか1つの主題を含み、ここで、特性は、リンクについての予測された帯域幅利用可能性を含む。
【0170】
例39は、例36~38のいずれか1つの主題を含み、ここで、特性は、リンクについての予測されたエラーレートを含む。
【0171】
例40は、例36~39のいずれか1つの主題を含み、特性は、ソフトウェアによって決定される。
【0172】
例41は、例36~40のいずれか1つに記載の方法を実行するための手段を含むシステムである。
【0173】
例42は例41の主題を含み、ここで、前記手段は、命令が記憶された非一時的機械可読媒体を含み、前記命令は、例36~40のいずれか一項に記載の方法の少なくとも一部を機械に実行させるように前記機械によって実行可能である。
【0174】
本明細書の全体にわたって、「1つの実施形態(one embodiment)」又は「一実施形態(an embodiment)」への言及は、当該実施形態に関連して説明される特定の特徴、構造又は特性が、本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書を通して様々な箇所における「1つの実施形態において」又は「一実施形態において」というフレーズの出現は、必ずしも全てが同じ実施形態を指すとは限らない。さらに、特定の特徴、構造又は特性は、1又は複数の実施形態において、任意の好適な方式で組み合わされてよい。
【0175】
上記の明細書において、詳細な説明が、特定の例示的な実施形態を参照して行われた。しかしながら、添付の特許請求の範囲に記載された発明のより広範な意図及び範囲から逸脱することなく、それらの実施形態に様々な修正又は変更が加えられ得ることが明らかであろう。したがって、本明細書及び図面は、限定的な意味ではなく、例示的な意味で考慮されるべきである。さらに、実施形態及び他の例示的な言語の上記の使用は、必ずしも同じ実施形態又は同じ例を指しているとは限らず、異なる個別の実施形態及び潜在的に同じ実施形態を指してよい。
【手続補正書】
【提出日】2023-12-22
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ポートを備える装置であって、
前記ポートは、
送信機;及び
プロトコル回路であって、
第1のフリットフォーマットに従って第1のフリットを生成し、ここで、前記第1のフリットフォーマットは、前記第1のフリットにおいて送信されることになるデータ量に対して第1の数の誤り検出符号が提供されることになることを定義し、前記第1のフリットは、リンクが第1のリンク幅で動作している間に前記送信機によって前記リンク上で送信されることになり、ここで、前記リンクは、前記ポートを別のコンピューティングデバイスに連結する;
第1のリンク幅から第2のリンク幅への前記リンクの遷移を識別し、ここで、前記第2のリンク幅は、前記第1のリンク幅よりも狭い;及び
前記第2のリンク幅への前記遷移に基づき、第2のフリットフォーマットに従って第2のフリットを生成し、ここで、前記第2のフリットは、前記リンクが前記第2のリンク幅で動作している間に送信されることになり、前記第2のフリットフォーマットは、前記第2のフリットにおいて送信されることになる同じデータ量に対して第2の数の誤り検出符号が提供されることになることを定義し、ここで、前記第2の数は、前記第1の数よりも大きい
を有する、装置。
【請求項2】
前記第1のリンク幅では第1の数のアクティブ物理レーンが利用されることになり、前記第2のリンク幅では第2のより少数のアクティブ物理レーンが利用されることになる、請求項1に記載の装置。
【請求項3】
前記第1のフリットにおける前記データ量は、第1のトランザクション層データを保持し、前記第2のフリットにおける前記データ量は、第2のトランザクション層パケットデータを保持する、請求項1に記載の装置。
【請求項4】
前記第1のフリットフォーマットは、定義された第1の長さを有し、前記第2のフリットフォーマットは、前記第1の長さよりも長い定義された第2の長さを有する、請求項1~2のいずれか一項に記載の装置。
【請求項5】
前記第1の数の誤り検出符号は、前記第1のフリットのそれぞれの部分に対してそれぞれの巡回冗長検査(CRC)符号をそれぞれ含み、前記第2の数の誤り検出符号のそれぞれは、前記第2のフリットのそれぞれの部分に対してそれぞれのCRC符号を含む、請求項1~3のいずれか一項に記載の装置。
【請求項6】
前記第1のフリットフォーマットは、前記第1のフリットの前記データ量に基づいて計算された第1の誤り訂正符号を含み、前記第2のフリットフォーマットは、前記第2のフリットの前記データ量に基づいて計算された第2の誤り訂正符号を含む、請求項5に記載の装置。
【請求項7】
前記第1の誤り訂正符号は、第1の前方誤り訂正(FEC)符号を含み、前記第2の誤り訂正符号は、第2のFEC符号を含む、請求項6に記載の装置。
【請求項8】
前記プロトコル回路は、さらに、第1のアクティブリンク状態から部分幅アクティブリンク状態に遷移するようになっており、前記第1のリンク幅から前記第2のリンク幅への前記遷移は、前記第1のアクティブリンク状態から前記部分幅アクティブリンク状態への前記遷移に伴ったものである、請求項1
~3のいずれか一項に記載の装置。
【請求項9】
前記第1のフリットフォーマット及び前記第2のフリットフォーマットは、インターコネクトプロトコルに従ったものである、請求項1
~3のいずれか一項に記載の装置。
【請求項10】
前記インターコネクトプロトコルは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、コンピュートエクスプレスリンク(CXL)、又はUltraPathインターコネクト(UPI)のうちの1つを含む、請求項9に記載の装置。
【請求項11】
リンクが第1のリンク幅で動作している場合に第1のフリットフォーマットに従ってフリットを送信する段階、ここで、前記第1のフリットフォーマットは、第1のデータ量を保護するために第1の数の巡回冗長検査(CRC)符号を含む;
前記リンクを前記第1のリンク幅から第2のリンク幅に遷移させる段階、ここで、前記第2のリンク幅は、部分リンク幅を含み、前記第2のリンク幅は、前記第1のリンク幅よりも狭い;及び
前記リンクが前記第2のリンク幅で動作している場合に第2のフリットフォーマットに従ってフリットを送信する段階、ここで、前記第2のフリットフォーマットは、第2のデータ量を保護するために第2の数のCRC符号を含み、前記第1のデータ量は、前記第2のデータ量に等しく、CRC符号の前記第2の数は、CRC符号の前記第1の数よりも大きい
を備える方法。
【請求項12】
前記第2のリンク幅が閾値リンク幅よりも狭いことを判定する段階;及び
前記第2のリンク幅が前記閾値リンク幅よりも狭いことに基づき、前記第1のフリットフォーマットの代わりに前記第2のフリットフォーマットが使用されることになると判定する段階
をさらに備える、請求項11に記載の方法。
【請求項13】
前記リンクのトレーニングに参加する段階、ここで、前記リンクは、第1のデバイスを第2のデバイスに連結する;
前記リンクのトレーニング中、前記第1のデバイス及び前記第2のデバイスの両方が前記第2のフリットフォーマットの使用をサポートしていることを判定する段階、ここで、前記第1のデバイス及び第2のデバイスによる前記第2のフリットフォーマットの相互サポートの判定に基づいて、前記第2のフリットフォーマットが前記第2のリンク幅で使用される
をさらに備える、請求項11~12のいずれか一項に記載の方法。
【請求項14】
前記リンクのトレーニング中、前記第2のフリットフォーマットの使用に対応する閾値リンク幅を判定する段階、ここで、前記リンク
のリンク幅が前記閾値リンク
幅よりも狭い場合、前記第2のフリットフォーマットが使用されることになる
をさらに備える、請求項13に記載の方法。
【請求項15】
部分幅状態では、前記第1のリンク幅及び前記第2のリンク幅の両方が使用される、請求項1
1又は12に記載の方法。
【請求項16】
前記第1のフリットフォーマットは
、前記第1のデータ量に基づいて計算された第1の誤り訂正符号を含み、前記第2のフリットフォーマットは
、前記第2のデータ量に基づいて計算された第2の誤り訂正符号を含む、請求項1
1又は12に記載の方法。
【請求項17】
前記第1の誤り訂正符号は、第1の前方誤り訂正(FEC)符号を含み、前記第2の誤り訂正符号は、第2のFEC符号を含む、請求項16に記載の方法。
【請求項18】
前記第1のフリットフォーマット及び前記第2のフリットフォーマットは、インターコネクトプロトコルに従ったものである、請求項1
1又は12に記載の方法。
【請求項19】
前記インターコネクトプロトコルは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)、コンピュートエクスプレスリンク(CXL)、又はUltraPathインターコネクト(UPI)のうちの1つを含む、請求項18に記載の方法。
【請求項20】
請求項1
1又は12に記載の方法を実行するための手段を備えるシステム。
【請求項21】
前記手段は、請求項1
1又は12に記載の方法
をプロセッサに実行させるコンピュータプログラムを有する、請求項20に記載のシステム。
【請求項22】
第1のデバイス;及び
リンクによって前記第1のデバイスに連結された第2のデバイスであって、前記第2のデバイスは、
前記リンクが第1のリンク幅で動作している間に前記リンク上で前記第1のデバイスに第1のデータユニットを送信し、ここで、前記第1
のデータユニットは、第1のフォーマットに従ってフォーマット化されており、前記第1のフォーマットは、前記第1のデータユニットのそれぞれが、特定のデータ量を保持し、前記特定のデータ量に対して第1の数の誤り検出符号を含むことを定義する;
前記第1のリンク幅から第2のリンク幅に遷移し、ここで、前記第1のリンク幅では、前記第2のリンク幅におけるよりも多数のレーンが使用される;及び
前記リンクが前記第2のリンク幅で動作している間に、前記リンク上で前記第1のデバイスに第2のデータユニットを送信する、ここで、前記第2のデータユニットは、第2のフォーマットに従ってフォーマット化されており、前記第2のフォーマットは、前記第2のデータユニットのそれぞれが、前記特定のデータ量を保持し、前記特定のデータ量に対して第2の数の誤り検出符号を含むことを定義し、ここで、前記第2の数は、前記第1の数よりも大きい
ようになっている回路を含む第2のデバイス
を備えるシステム。
【請求項23】
前記回路は、さらに、前記第2のリンク幅が前記リンクに関して定義された閾値リンク幅よりも狭いことを判定するようになっており、前記第2のリンク幅が前記閾値リンク幅よりも狭いとの判定に基づき、前記リンク上で送信されるデータユニットに対して前記第2のフォーマットが使用される、請求項22に記載のシステム。
【請求項24】
前記第1のデバイス又は前記第2のデバイスのうちの1つは、プロセッサデバイスを含む、請求項22
~23のいずれか一項に記載のシステム。
【請求項25】
前記第1のデバイス又は前記第2のデバイスのうちの1つは、アクセラレータデバイスを含む、請求項22
~23のいずれか一項に記載のシステム。
【国際調査報告】