(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025009718
(43)【公開日】2025-01-20
(54)【発明の名称】ストリーミングファブリックインタフェース
(51)【国際特許分類】
G06F 13/10 20060101AFI20250109BHJP
G06F 13/42 20060101ALI20250109BHJP
G06F 13/36 20060101ALI20250109BHJP
G06F 13/12 20060101ALI20250109BHJP
【FI】
G06F13/10 310E
G06F13/42 310
G06F13/36 530B
G06F13/12 330A
【審査請求】未請求
【請求項の数】25
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023206569
(22)【出願日】2023-12-07
(31)【優先権主張番号】18/345,208
(32)【優先日】2023-06-30
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】モハナド ファヒム アリ
(72)【発明者】
【氏名】スワデシュ チョーダリー
(72)【発明者】
【氏名】ジャジ フィリップ
(72)【発明者】
【氏名】デヴィッド ジェイ. ハリマン
(57)【要約】 (修正有)
【課題】2つの非フリットモード(NFM)トレーニングされたリンクが通信し、カットスルールーティング及びフリットモード(FM)フォーマットの受信機デコードの単純性を維持しながらパケットインテグリティを損なわない装置を提供する。
【解決手段】エージェントをファブリックに結合するためのインタフェースがFM及びNFMを含むロード/ストアインターコネクトプロトコルをサポートする。FMのとき、FMヘッダフォーマットのセットが使用され、NFMのとき、NFMヘッダフォーマットのセットが使用される。インタフェースロジックは、リンクがNFMに対してトレーニングされると判定し、FMヘッダフォーマットのセットに従ってヘッダを生成する。FMヘッダフォーマットのセットの1又は複数のフィールドは、インタフェースを通じて修正されたヘッダを送信する前に、1又は複数のNFMフィールドを搬送するためにヘッダにおいて再利用される。
【選択図】
図14
【特許請求の範囲】
【請求項1】
入出力(I/O)インターコネクトプロトコルを実装するためのプロトコル回路、ここで、前記I/Oインターコネクトプロトコルは、フリットモード及び非フリットモードを含み、ここで、前記フリットモードのときにフリットモードヘッダフォーマットのセットが使用され、前記非フリットモードのときに非フリットモードヘッダフォーマットのセットが使用され、前記非フリットモードヘッダフォーマットのセットは、1又は複数の非フリットモードフィールドを含む;及び
ファブリックに結合するためのインタフェースを実装するためのインタフェース回路、ここで、前記インタフェース回路は、
前記非フリットモードに対してリンクがトレーニングされると決定し;
前記フリットモードヘッダフォーマットのセットに従ってヘッダを生成し、ここで、前記ヘッダは、対応するパケットが非フリットモードパケットとして生じたことを示すためのフィールドを含み、前記フリットモードヘッダフォーマットのセットの1又は複数のフィールドは、前記1又は複数の非フリットモードフィールドを搬送するために前記ヘッダにおいて再利用され;及び
前記インタフェースを通じて前記ヘッダを送信する、
を備える装置。
【請求項2】
前記1又は複数の非フリットモードフィールドは、前記フリットモードヘッダフォーマットのセットに含まれない、請求項1に記載の装置。
【請求項3】
前記I/Oインターコネクトプロトコルは、ロード/ストアインターコネクトプロトコルを含む、請求項1に記載の装置。
【請求項4】
前記インタフェースは:
複数の物理レーンの第1サブセット上に実装されるヘッダチャネル、ここで、レーンの前記第1サブセットは、前記インターコネクトプロトコルに基づいてパケットヘッダを搬送するための第1レーン、及び、前記パケットヘッダについてのメタデータを搬送するための第2レーンを含む;及び
前記複数の物理レーンの別個の第2サブセット上に実装されるデータチャネル、ここで、レーンの前記第2サブセットは、パケットペイロードを搬送するための第3レーン、及び、前記パケットペイロードについてのメタデータを搬送するための第4レーンを含む、
を含み、
ここで、前記ヘッダは前記ヘッダチャネルを通じて送信される、請求項1に記載の装置。
【請求項5】
前記フリットモード及び前記非フリットモードは、PCIeベースのプロトコルに基づく、請求項1に記載の装置。
【請求項6】
前記1又は複数の非フリットモードフィールドは、マッピングに基づいて、前記フリットモードヘッダフォーマットのセットの前記1又は複数のフィールドにおいて搬送される、請求項5に記載の装置。
【請求項7】
前記フリットモードヘッダフォーマットのセットは、1又は複数の直交内容ヘッダを含み、前記1又は複数の直交内容ヘッダの特定の1つにおける特定のフィールドは、前記1又は複数の非フリットモードフィールドにおける特定のフィールドを保持する、請求項5に記載の装置。
【請求項8】
前記フリットモードヘッダフォーマットのセットは、1又は複数のプレフィックスを含み、前記1又は複数のプレフィックスの特定の1つにおける特定のフィールドは、前記1又は複数の非フリットモードフィールドにおける特定のフィールドを保持する、請求項5に記載の装置。
【請求項9】
前記特定のプレフィックスは、前記対応するパケットが非フリットモードパケットとして生じたことを示すためのモードフィールドを含む、請求項8に記載の装置。
【請求項10】
エンドツーエンド暗号化が前記フリットモードに基づいて前記リンク上で提供される、請求項1に記載の装置。
【請求項11】
前記インタフェースは、ストリーミングファブリックインタフェース(SFI)仕様に基づく、請求項1から10のいずれか一項に記載の装置。
【請求項12】
パケットのヘッダを識別する段階、ここで、前記パケットの前記ヘッダは、ロード/ストアインターコネクトプロトコルの非フリットモードフォーマットに基づき、前記ロード/ストアインターコネクトプロトコルは更にフリットモードを定義し;
前記パケットの前記ヘッダのフリットモードバージョンを生成する段階、ここで、前記パケットの前記ヘッダの前記フリットモードバージョンは、フリットモードフォーマットに基づき、前記非フリットモードフォーマットにおける第1サブセットのフィールドがまた、前記フリットモードフォーマットにおいて提供され、前記非フリットモードフォーマットにおける第2サブセットのフィールドが、前記フリットモードフォーマットにおいて除外され、ここで、前記パケットの前記ヘッダの前記フリットモードバージョンを生成することは、前記フリットモードフォーマットにおいて定義される再利用フィールドにおいて、前記第2サブセットのフィールドにおける1又は複数のフィールドを搬送することを含み;
インタフェースを通じて、前記パケットの前記ヘッダの前記フリットモードバージョンをファブリックへ送信する段階、ここで、前記パケットの前記ヘッダの前記フリットモードバージョンは、第1の複数の物理レーン上で実装されるヘッダチャネル上で送信される;及び
前記インタフェースを通じて、前記パケットのペイロードデータを前記ファブリックへ送信する段階、ここで、前記パケットの前記ペイロードデータは、別個の第2の複数の物理レーン上で実装されるデータチャネル上で送信される、
を備える方法。
【請求項13】
前記インタフェースは、SFI仕様に従って定義され、前記ロード/ストアインターコネクトプロトコルは、PCIe又はCXL.ioの1つを含む、請求項12に記載の方法。
【請求項14】
前記パケットの前記ヘッダの前記フリットモードバージョンは、前記第1の複数の物理レーンの第1サブセット上で送信され、前記方法は、
前記ヘッダチャネルの前記第2の複数の物理レーンの第2サブセットを使用して、前記インタフェース上でヘッダメタデータを送信する段階
を備える、請求項12に記載の方法。
【請求項15】
前記インタフェースは:
複数の物理レーンの第1サブセット上に実装されるヘッダチャネル、ここで、レーンの前記第1サブセットは、前記ロード/ストアインターコネクトプロトコルに基づいてパケットヘッダを搬送するための第1レーン、及び、前記パケットヘッダについてのメタデータを搬送するための第2レーンを含む;及び
前記複数の物理レーンの別個の第2サブセット上に実装されるデータチャネル、ここで、レーンの前記第2サブセットは、パケットペイロードを搬送するための第3レーン、及び、前記パケットペイロードについてのメタデータを搬送するための第4レーンを含む、
を含み、
ここで、前記ヘッダは前記ヘッダチャネルを通じて送信される、請求項12に記載の方法。
【請求項16】
請求項12から15のいずれか一項に記載の方法を実行するための手段を備えるシステム。
【請求項17】
ファブリック;及び
前記ファブリックを通じて通信可能に結合される複数のコンピュートブロック、ここで、前記複数のコンピュートブロックにおける特定のコンピュートブロックは:
ロード/ストアインターコネクトプロトコルをサポートするエージェント回路、ここで、前記ロード/ストアインターコネクトプロトコルはフリットモード及び非フリットモードをサポートし、前記フリットモードのとき、フリットモードヘッダフォーマットのセットが使用され、前記非フリットモードのとき、非フリットモードヘッダフォーマットのセットが使用され、前記非フリットモードヘッダフォーマットのセットは、1又は複数の非フリットモードフィールドを含み;及び
前記ファブリックに結合するためのインタフェースを実装するためのインタフェース回路、ここで、前記インタフェース回路は:
リンクが前記非フリットモードに対してトレーニングされると決定し;
前記フリットモードヘッダフォーマットのセットに従ってヘッダを生成し、ここで、前記ヘッダは、対応するパケットが非フリットモードパケットとして生じたことを示すためのフィールドを含み、前記フリットモードヘッダフォーマットのセットの1又は複数のフィールドは、前記1又は複数の非フリットモードフィールドを搬送するために前記ヘッダにおいて再利用される;及び
前記インタフェースを通じて前記ヘッダを送信する
を含む、
を備えるシステム。
【請求項18】
前記インタフェース上の1対多接続を促進するためのバッファレスアービタを更に備える、請求項17に記載のシステム。
【請求項19】
前記コンピュートブロックの第1のものにおいて送信機によって使用される専用クレジットを、前記コンピュートブロックの第2のものにおいて受信機によって使用される共有クレジットに変換するためのクレジットガスケットを更に備える、請求項17に記載のシステム。
【請求項20】
前記ファブリックは、システムオンチップ(SoC)デバイスのインターコネクトファブリックを含み、前記SoCデバイスは、前記複数のコンピュートブロックを含む、請求項17に記載のシステム。
【請求項21】
前記インタフェースは、パケットヘッダを通信するための専用物理レーンのセットを含むヘッダチャネルを含み、前記フリットモードは、前記ヘッダチャネル上で通信されるヘッダのために使用される、請求項17から20のいずれか一項に記載のシステム。
【請求項22】
ファブリックを実装するためのファブリック回路、ここで、前記ファブリックは入出力(I/O)インターコネクトプロトコルに従う通信をサポートし、前記I/Oインターコネクトプロトコルは、フリットモード及び非フリットモードを含み、ここで、前記フリットモードのときにフリットモードヘッダフォーマットのセットが使用され、前記非フリットモードのときに非フリットモードヘッダフォーマットのセットが使用され、前記非フリットモードヘッダフォーマットのセットは、1又は複数の非フリットモードフィールドを含む;及び
エージェントに結合するためのインタフェースを実装するためのインタフェース回路、ここで、前記インタフェース回路は、
前記非フリットモードに対してリンクがトレーニングされると決定し;
前記フリットモードヘッダフォーマットのセットに従ってヘッダを生成し、ここで、前記ヘッダは、対応するパケットが非フリットモードパケットとして生じたことを示すためのフィールドを含み、前記フリットモードヘッダフォーマットのセットの1又は複数のフィールドは、前記1又は複数の非フリットモードフィールドを搬送するために前記ヘッダにおいて再利用され;及び
前記インタフェースを通じて前記ヘッダを送信する、
を備える装置。
【請求項23】
前記1又は複数の非フリットモードフィールドは、前記フリットモードヘッダフォーマットのセットに含まれない、請求項22に記載の装置。
【請求項24】
前記I/Oインターコネクトプロトコルは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)ベースプロトコル又はコンピュートエクスプレスリンク(CXL)ベースプロトコルの1つを含む、請求項22に記載の装置。
【請求項25】
前記インタフェースは:
複数の物理レーンの第1サブセット上に実装されるヘッダチャネル、ここで、レーンの前記第1サブセットは、前記インターコネクトプロトコルに基づいてパケットヘッダを搬送するための第1レーン、及び、前記パケットヘッダについてのメタデータを搬送するための第2レーンを含む;及び
前記複数の物理レーンの別個の第2サブセット上に実装されるデータチャネル、ここで、レーンの前記第2サブセットは、パケットペイロードを搬送するための第3レーン、及び、前記パケットペイロードについてのメタデータを搬送するための第4レーンを含む、
を含み、
ここで、前記ヘッダは前記ヘッダチャネルを通じて送信される、請求項22から24のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピューティングシステム、特に(排他的でないが)ポイントツーポイントインターコネクトに関する。
【背景技術】
【0002】
半導体プロセッシング及びロジック設計における進歩は、集積回路デバイスに存在し得るロジック量の増加を可能にするに至った。当然の結果として、コンピュータシステム構成は、システム内の単一又は複数の集積回路から、個々の集積回路上にある複数のコア、複数のハードウェアスレッド、及び複数の論理プロセッサ、並びにそのようなプロセッサと統合された他のインタフェースへと進化した。プロセッサ又は集積回路は、典型的には単一の物理プロセッサダイを備え、プロセッサダイは、任意の数のコア、ハードウェアスレッド、論理プロセッサ、インタフェース、メモリ、コントローラハブなどを含んでよい。
【0003】
より小さなパッケージで、より大きな処理能力に適合できる、より高い能力の結果として、より小さなコンピューティングデバイスが人気を高めてきた。スマートフォン、タブレット、極薄ノートブック、及び他のユーザ機器が、飛躍的に成長してきた。しかしながら、これらのより小さなデバイスは、データストレージ及びフォームファクタを超過する複雑な処理の両方について、サーバに依存する。結果として、高性能コンピューティング市場(すなわち、サーバ空間)におけるニーズも増大した。例えば、現在のサーバにおいて、コンピューティング能力を増大させるには通常、複数のコアを持つシングルプロセッサだけでなく、複数の物理プロセッサ(複数のソケットとも称される)が存在する。しかしながら、コンピューティングシステム内のデバイス数と共に処理能力が増大するにつれ、ソケットと他のデバイス間の通信がより重要なものになっている。
【0004】
実際、インターコネクトは、電気通信を主に処理してきた従来型のマルチドロップバスから、高速通信を容易にする本格的なインターコネクトアーキテクチャへと成長した。残念ながら、はるかに使用効率の高い将来のプロセッサへのニーズがあり、対応する要求は、既存のインターコネクトアーキテクチャの機能に対しある。
【図面の簡単な説明】
【0005】
【
図1】システムオンチップ(SoC)デバイスの例示的な実施形態を示す簡易ブロックダイアグラムである。
【0006】
【
図2】ストリーミングファブリックインタフェースの簡易ブロックダイアグラムである。
【0007】
【
図3】別の例示的なストリーミングファブリックインタフェースの簡易ブロックダイアグラムである。
【0008】
【
図4】例示的なコンピュートエクスプレスリンク(CXL)トポロジーを示す簡易ブロックダイアグラムである。
【0009】
【
図5】例示的なストリーミングファブリックインタフェースのチャネルの簡易ブロックダイアグラムである。
【0010】
【
図6】例示的な受信機バッファを示す簡易ブロックダイアグラムである。
【0011】
【
図7】ストリーミングファブリックインタフェースのヘッダチャネルについてのメタデータにおける例示的なフィールドの表現である。
【0012】
【
図8】例示的なストリーミングファブリックインタフェースのヘッダチャネル上の例示的なデータフローを示すタイミングダイアグラムである。
【0013】
【
図9】例示的なストリーミングファブリックインタフェースのデータチャネル上の例示的なデータフローを示すタイミングダイアグラムである。
【0014】
【
図10】例示的なフレキシブルオンダイファブリックインタフェースについての例示的な初期化状態機械を示すダイアグラムである。
【0015】
【
図11】例示的なフレキシブルオンダイファブリックインタフェースの初期化を示すタイミングダイアグラムである。
【0016】
【
図12】例示的なフレキシブルオンダイファブリックインタフェースにおける切断フローの第1の例を示すタイミングダイアグラムである。
【0017】
【
図13】例示的なフレキシブルオンダイファブリックインタフェースにおける切断フローの第2の例を示すタイミングダイアグラムである。
【0018】
【
図14】例示的なコンピューティングシステムの簡易ブロックダイアグラムである。
【0019】
【
図15A】フリットモードパケットのヘッダの例示的な部分を示す。
【
図15B】フリットモードパケットのヘッダの例示的な部分を示す。
【
図15C】フリットモードパケットのヘッダの例示的な部分を示す。
【
図15D】フリットモードパケットのヘッダの例示的な部分を示す。
【0020】
【0021】
【
図17】クレジットガスケットを含む例示的なコンピューティングシステムを示す。
【0022】
【
図18】クレジットガスケットの例示的な使用を示すタイミングダイアグラムである。
【0023】
【
図19A】クレジットガスケットの追加の例示的な使用を示すタイミングダイアグラムである。
【
図19B】クレジットガスケットの追加の例示的な使用を示すタイミングダイアグラムである。
【0024】
【
図20】例示的なクレジットガスケットのロジックを示すダイアグラムである。
【0025】
【
図21】クレジットガスケットの例示的な使用を示すタイミングダイアグラムである。
【0026】
【
図22A】クレジットガスケットの追加の例示的な使用を示すタイミングダイアグラムである。
【
図22B】クレジットガスケットの追加の例示的な使用を示すタイミングダイアグラムである。
【0027】
【
図23】バッファレスアービタを含む例示的なコンピューティングシステムの簡易ブロックダイアグラムである。
【0028】
【
図24A】コンピューティングシステムにおけるアービタの例示的な使用を示すタイミングダイアグラムである。
【
図24B】コンピューティングシステムにおけるアービタの例示的な使用を示すタイミングダイアグラムである。
【
図24C】コンピューティングシステムにおけるアービタの例示的な使用を示すタイミングダイアグラムである。
【
図24D】コンピューティングシステムにおけるアービタの例示的な使用を示すタイミングダイアグラムである。
【0029】
【
図25】マルチコアプロセッサを含むコンピューティングシステムについてのブロックダイアグラムの実施形態を示す図である。
【0030】
【
図26】コンピューティングシステムのためのブロックダイアグラムの別の実施形態を示す。
【発明を実施するための形態】
【0031】
以下の説明には、本開示の深い理解を与えるべく、多数の具体的な詳細が記載されている。例えば、複数の特定のタイプのプロセッサ及びシステム構成、特定のハードウェア構造、特定の設計上及びミクロ設計上の細部、特定のレジスタ構成、特定の命令タイプ、特定のシステムコンポーネント、特定の寸法/高さ、特定のプロセッサパイプライン段階、及び動作等の複数の例である。しかしながら、当業者にとって、これらの具体的な詳細は、本開示の実施形態を実施するために採用される必要がないことは明らかであろう。他の複数の例において、複数の特定及び代替的なプロセッサアーキテクチャ、記載された複数のアルゴリズム用の複数の特定のロジック回路/コード、特定のファームウェアコード、特定のインターコネクト動作、複数の特定のロジック構成、複数の特定の製造技術及び材料、複数の特定のコンパイラ実装、コード内の複数のアルゴリズムについての特定の表現、特定のパワーダウン及びゲーティング技術/ロジック並びにコンピュータシステムの他の特定の動作の詳細のような、複数の周知コンポーネント又は方法は、本開示を不必要に不明瞭にするのを回避すべく詳細には記載されていない。
【0032】
以下の実施形態は、コンピューティングプラットフォーム又はマイクロプロセッサなどの特定の集積回路における効率的な高速データ送信及び構成可能性を参照して説明され得るが、他の実施形態が他のタイプの集積回路及びロジックデバイスに適用可能である。本明細書で説明する実施形態の同様の技術及び教示内容を、より良いエネルギー効率及びエネルギー節約から、やはり恩恵を受け得る他の種類の回路又は半導体デバイスに適用することができる。例えば、開示された実施形態は、サーバ、ブレード、デスクトップコンピュータシステム、システムオンチップ(SoC)デバイス、ハンドヘルドデバイス、タブレット、セットトップボックス、車載コンピューティングシステム、コンピュータビジョンシステム、ゲーミングシステム、機械学習システム、及び組み込み用途として具体化されるコンピューティングシステムに適用され得る。下の説明において容易に明らかになるように、本明細書において説明される方法、装置、及びシステムの実施形態は(ハードウェア、ファームウェア、ソフトウェア、又はそれらの組み合わせのいずれに関連する場合でも)、高性能コンピュータインターコネクト及びそれらのそれぞれのシステムの発展に有益である。
【0033】
コンピューティングシステムが進むにつれ、その中におけるコンポーネントはより複雑になっている。結果として、最適なコンポーネント動作のための帯域幅要件が満たされることを保証すべく、コンポーネント間の連結及び通信を行うためのインターコネクトアーキテクチャも複雑性が増している。更に、異なる複数の市場セグメントは市場ニーズに適合すべく、複数のインターコネクトアーキテクチャの異なる態様を要求する。例えば、複数のサーバがより高性能を要求する一方で、モバイルエコシステムは場合によっては、省電力化のために全体的な性能を犠牲にしてしまう可能性がある。その上、多くのファブリックの唯一の目的は、最大の省電力化を行いながら、最高の可能な性能を提供することである。以下に説明される複数のインターコネクトは、本明細書に記載される解決手段の態様から潜在的に利益を享受するであろう。
【0034】
1つの例示的なインターコネクトファブリックアーキテクチャ、ペリフェラルコンポーネントインターコネクト(PCI)エクスプレス(PCIe)アーキテクチャを含む。PCIeの主目的は、複数の異なるベンダの複数のコンポーネント及びデバイスをクライアント(デスクトップとモバイル)、サーバ(標準及びエンタープライズ)、及び組み込み通信デバイス等、複数の市場セグメントにわたるオープンアーキテクチャで相互運用できるようにすることである。PCI Expressは、様々な将来の複数のコンピューティング及び通信プラットフォームのために定義された高性能で、汎用性のあるI/Oインターコネクトである。その利用モデル、ロード‐ストアアーキテクチャ、及びソフトウェアインタフェースのようないくつかのPCI属性が、その改訂版を通して維持されているが、これに対し、以前のパラレルバス実装は、高度に拡張可能な完全シリアルインタフェースによって置き換えられた。PCI Expressのより最近のバージョンでは、性能と複数の特徴に係る複数の新レベルを供給すべく、ポイントツーポイントインターコネクト、スイッチベースの技術、及びパケット化されたプロトコルにおける複数の利点を活用している。電力管理、サービス品質(QoS)、ホットプラグ/ホットスワップサポート、データ整合性、及びエラー処理は、PCI Expressによってサポートされる高度な複数の特徴のうちいくつかである。
【0035】
ファブリックをプロトコルエージェントに結合するための従来のストリーミングインタフェースは概して、専用インタフェース(例えば、インテル(登録商標)オンチップシステムファブリック(IOSF(登録商標)))、コヒーレント又は順序付けられていないプロトコルのために開発されたインタフェース、及び、モダンなプロトコル及びアーキテクチャにおける進化するデータレートに対処するようにスケーリングすることに対して適応しにくい他のインタフェースを含み得る。例えば、専用インタフェースは、インタフェースの標準化を防止する、又は、次世代の帯域幅へのスケーリングに失敗するカスタム又はユースケース固有情報又は特徴を搬送し得る。一方、他の従来のインタフェースは、より一般的な方式で、例えば、パケットを搬送するためのデータバスとして定義され得る。しかしながら、特に、データレートが増加し、クロックサイクルあたり、より多くのパケットを処理できるようになるにつれて、従来のバス定義及びインタフェースは、特に、複数のフロー制御クラス又は仮想チャネルの存在下において、受信機デコード複雑性をもたらし得る。一例として、任意のチャネル又はフロー制御の4つの(又は更に多くの)パケットが所与のクロックサイクルで潜在的に到着し得、かつ、これらが共有バッファにアクセスしている場合、対応する4つの(又はより多くの)論理書き込みポートが受信機においてプロビジョニングされる必要があり得、過剰な表面積が、そのようなロジック(及びバッファ)を提供することに割り当てられるという結果となる。いくつかの事例において、従来のインタフェースは、単純にインタフェースの複数のコピーをスタンプすることによって(例えば、各フロー制御クラスあたり1)、(異なるフロー制御クラスの)サイクルあたり複数のパケットのユースケースに対処し、高いピンカウントをもたらす。追加的に、従来のストリーミングインタフェースは、同一の物理ワイヤ上で互いに続くヘッダ及びデータパケットを有し、レイテンシ最適化の可能性を限定する。いくつかの従来のインタフェースは、他の例示的な欠点の中でも特に、クレジットフローのために有効でフレキシブルな機構を提供することに失敗する。
【0036】
いくつかの実装において、改善されたスケーラブルなストリーミングインタフェースが、デバイス上のエージェントロジック及びファブリックの間で、例えば、プロトコル層、及び、ファブリックに結合された他のデバイス(例えば、CPU、エンドポイントデバイス、スイッチなど)の間などで定義され得る。ストリーミングインタフェースは、他のロード/ストアプロトコルの中でも特に、PCIe、コンピュートエクスプレスリンク(CXL)(例えば、CXL.io)などのロード/ストアプロトコルをサポートし得る。改善されたストリーミングインタフェースは、実装中に大きいチップ面積及びレイテンシの利点を可能にするためのインタフェース規則及びインタフェースのチャネルを定義し得、一方、他の例の中でも特に、PCIe Gen5における32.0GT/s、又は、PCIe Gen6及びCXL3.0から開始する64.0GT/sデータレート以降への移行など、プロトコルがより高い速度に近づくにつれて、より一層重要となるであろう電力効率的な帯域幅スケーリングの利点を提供する。そのようなインタフェースは、ピンカウントと受信機デコード複雑性との間の最良のバランスを最適化し得る。いくつかの実装において、本明細書において論じられる改善されたストリーミングインタフェースは、受信機バッファ上の少ない数の論理書き込みポートを可能にし得、ここで、受信機バッファは、複数の仮想チャネル及びフロー制御クラスの間で共有される。更に、改善されたストリーミングインタフェースは、パケットのヘッダ及びデータを独立の物理チャネル(例えば、ヘッダチャネル及びデータチャネル)に分岐させ得、それにより、データがなおストリーミングされているときに受信機がヘッダの処理を開始することを可能にし、それにより、全体のレイテンシ及びバッファサイズ及び複雑性を低減することを助ける。更に、本明細書において論じられる改善されたストリーミングインタフェースは、IPブロックのエコシステムが、従来の専用インタフェースではなく、スケーラブルで標準化されたインタフェースを採用しそれに発展することを可能にするために標準化され得、本明細書において論じられるものなどの他の例示的特徴及び利点の中でも特に、相互運用性のより多くの選択肢を可能にする。
【0037】
図1の簡易ブロックダイアグラム100を参照すると、システムオンチップ(SoC)デバイス105の単純化した例が示される。SoCが、コンピュータの複数のコンポーネント又はコンピューティングブロック(又は知的財産(IP)ブロック)を組み込む集積回路として実装され得る。そのようなブロック(例えば、110、115、120、125、130、135、140、145)は、1又は複数のCPUコンポーネント110、115、120、125(例えば、マイクロプロセッサ又はマイクロコントローラ)、特定用途向けプロセッサ130、135(例えば、グラフィックスプロセッシングユニット(GPU)、イメージ信号プロセッサ(ISP)、テンソルプロセッサユニット、アクセラレータデバイスなど)、メモリコンポーネント、入出力(I/O)ポート、セカンダリストレージブロック、及び、シリコンダイなどの単一ダイ又は基板上の他のコンピュートブロックなどのコンポーネントを含み得る。
【0038】
例示的なSoC105のコンピュートブロック(例えば、110、115、120、125、130、135、140、145)は、SoCファブリック(例えば150)によってインターコネクトされ得る。ファブリック150は、コンピュートブロック(例えば、110、115、120、125、130、135、140、145)の間の通信を容易にする1又は複数のIPブロックのセットを使用してそれ自体実装され得る。いくつかの実装において、ファブリック150は、1又は複数の回路ブロックで実装されたNOCなど、ネットワークオンチップ(NOC)として実装され得る。
【0039】
様々なブロック(例えば、110、115、120、125、130、135、140、145)による通信は、ブロック(例えば、110、115、120、125、130、135、140、145)上に提供されるプロトコルエージェント(例えば、160a~h)を通じて促進され得る。各エージェント(例えば、160a~h)は、対応するコンピュートブロックがシステムにおける他のコンピュートブロックと通信するための1又は複数のインターコネクトプロトコル(例えば、PCIe、コンピュートエクスプレスリンク(CXL)、Gen-Z、OpenCAPI、インダイインタフェース、アクセラレータのためのキャッシュコヒーレントインターコネクト(CCIX)、UltraPathインターコネクト(UPI)など)の層のすべて又はサブセットを実装するためのロジック(例えば、ハードウェア回路、ファームウェア及び/又はソフトウェアにおいて実装される)を含み得る。本明細書において論じられるように、エージェントは、それぞれのインタフェースを介してファブリック150に結合し得る。そのようなエージェントは従来、プロプライエタリなワイヤインタフェースを介してファブリックに結合され得るが、1又は複数のエージェント(例えば、160a~h)は、構成可能でフレキシブルなオンダイワイヤインタフェースのそれぞれのインスタンスを利用し得、これらは、SoC105の複数の異なるエージェントの複数の異なるプロトコルをサポートするためにデプロイされ得る。他の事例において、エージェント(例えば、160a~h)間のインタフェースは、非コヒーレント及び/又はロード/ストアストリーミングプロトコルをサポートするためのものであり得、対応するストリーミングファブリックインタフェースが定義され、他の例示的な実装の中でも特に、ブロック(例えば、110、115、120、125、130、135、140、145)及びファブリック150上で実装され得る。
【0040】
上で紹介されたように、改善されたストリーミングファブリックインタフェースアーキテクチャ(SFI)が、システムのコンポーネント(例えば、システムのファブリックを実装するIPブロック及びコンポーネント)において提供され、エージェント及びファブリックの間でロード/ストアプロトコル(例えば、PCIe、CXL.io)をマッピングし得る。SFIインタフェースは、ロード/ストアプロトコルの高い帯域幅要件(そのようなプロトコルについての新しい次世代速度を含む)を維持し得るスケーラブルなストリーミングインタフェースを提供し得る。SFIインタフェースは、そのような高いデータレートを送信するとき、送信側及び受信側の両方における容易な実装を可能にし得る。追加的に、SFIインタフェースを実装するロジックは、(例えば、インタフェースによってサポートされるプロトコルにおいて定義されるものを超える)インタフェース上の通信のための規則を具体化、実現、及び施行し、他の例示的な特長の中でも特に、受信機上の読み取り/書き込みポートのコンテクストにおけるストレージオーバヘッドを大きく簡略化し得る。
【0041】
SFIインタフェースが、(例えばルートコンプレックスを通じた)ホストCPUのコンテクスト、又は、デバイスエンドポイントのコンテクストの両方において採用され得る。両方の場合において、SFIは、異なるプロセッシングエンティティの間のプロトコル層(トランザクション層)固有情報を搬送するために機能する。一例として、デバイス側において、SFIは、PCIeコントローラ及びアプリケーション層(例えば、コントローラ及びファブリックの間のファブリック又はガスケット層)の間でインタフェースするために使用され得る。同様に、ホスト側では、SFIは、PCIeルートポート及びCPUファブリックの間をインタフェースするために使用され得る。構成可能なパラメータがSFIインタフェースにおいて定義され得、インタフェースのインスタンスが十分に広くパラメータ化されること、及び、サポートされるプロトコル及びシステムユースケースに従って、単一の伝送で複数のパケットを搬送することを可能にする。所与のSFIインタフェース上で、データ伝送は単方向であり得る。したがって、いくつかの実装において、通信するブロック間の双方向データ伝送を利用して実装を促進するために、SFIインタフェースインスタンスのペアが提供され得る(各方向に1つ)。したがって、本明細書における例の多くは、SFIインタフェースの単一インスタンスについての送信機(TX)及び受信機(RX)ペアを論じる。
【0042】
SFIを仲介インタフェースとして使用して、異なる構成が有効化され得る。例えば、SFIインタフェースは、インタフェースの送信機及び受信機のプロトコル又は用途固有の役割に関して想定しないことがあり得る。むしろ、SFIインタフェースは単純に、高帯域幅パケット伝送のための機構及び規則を提供し得る。例えば、
図2は、(例えばエージェントの)コントローラ210を(例えば、ファブリックを通じて実装される)アプリケーション層215に、2つのSFIインタフェースインスタンス205a、205bを介して結合する例示的な実装を示す簡易ブロックダイアグラム200である。コントローラ210は、特定のインターコネクトプロトコル(例えば、PCIe)に従ってリンク220を確立し、リンク220を通じて初期化、トレーニング、及び通信に参加するためのプロトコル回路又は他のロジックを含み得る。
図2の例は、PCIe用途におけるSFIの例示的ユースケースを表し得る。SFIインスタンス205aは、PCIeコントローラ210を送信機として、アプリケーション層要素215を受信機として扱い得る。したがって、アプリケーション層要素215は、フロー制御クレジット(SFIインタフェース205a)のチャネルについての共有クレジットを含む)を維持するのに使用するためのSFIインタフェース205aについての受信機バッファを含み得る。同様に、SFIインタフェース205bは、アプリケーション層要素215を送信機とみなし、PCIeコントローラ210を受信機とみなし得る(そして、コントローラ210は、インタフェース205bと共に使用するための対応する受信機キュー又はバッファ225を含み得る)。
【0043】
SFIのいくつかの実装は、PCIeベースのプロトコルのセマンティクス及びヘッダフォーマットを利用し得るが、SFIは、サポートされるPCIeベースのプロトコルに限定されない。更に、SFIは、新しいプロトコル定義を含まない。SFIセマンティクスは、様々な異なるプロトコルをサポートするために使用され得る。ただし、プロトコルは、他の例示的特徴の中でも特に、SFIが提供するフロー制御(FC)及び仮想チャネル(VC)セマンティクスにマッピング又は適応され得ることを条件とする。例えば、SFIは、(下でより詳細に論じられるものなどの)受信機キューについての0又は複数の共有クレジットプールのアドバタイズメントをサポートする。
【0044】
図3を参照すると、SFIインタフェースを利用する従来のルートコンプレックススタックを示す、簡易ブロックダイアグラム300が示される。例えば、SFIインタフェース205a、205bは、プロトコルスタックロジック(例えば305、310)を非コヒーレント-コヒーレントプロトコルコンバータ315(例えば、システムのプロトコルスタックロジック及びインターコネクトファブリック215の間に位置し得る)に結合するために使用され得る。例えば、プロトコルスタックロジックは、特定の非コヒーレント、ロード/ストアインターコネクトプロトコル(例えば、PCIe、CXL.ioなど)についてのエージェント又はコントローラとして具体化され得、物理層ロジック及びリンク層ロジックを含むより低いレベルの層のロジック305を含み得る(例えば、回路において実装する)。トランザクション層ロジック310も提供され得、SFIインタフェース(例えば、205a、205b)を通じてコンバータ315とインタフェースする層であり得る。バッファ225(例えば、I/O/キュー(IOQ))バッファが提供され、デバイス及びホストの間の物理リンクレイテンシを隠すために使用され得る。そのようなバッファ225の深度は典型的には浅く、必要な論理書き込みポートの数は、1つのクロックサイクルにおいてリンクから利用可能な同時パケットの数である。例えば、一例において、PCIe Gen5速度(32GT/s)については、最大4つのパケットが1つの1GHzサイクルにおいて到着し得るので、これらのパケットが潜在的に異なるフロー制御クラス及び/又は仮想チャネルであり得ると仮定すると、これらのパケットを同時に処理するべく、4つの論理ポートがそのような例において必要となる。一方、ファブリック側バッファ230(例えば、ProcQバッファ)は、(例えば、オーナシップリクエストをフェッチしデータをコヒーレンシドメインにコミットするレイテンシに変換する、インバウンド書き込みについての)CPUファブリックレイテンシを隠すために使用されるディープバッファとして実装され得る。これらは、1又は複数の書き込みポートを含み得る。スプリットキューを用いた実装において、SFIセマンティクスは、(例えば、ProcQ側で、トランザクションの「バッチ処理」を実行するために)更なる最適化を可能にし得る。実際、SFIセマンティクスは、様々なシステム構成におけるバッファ実装を改善するように適用され、他の例示的な特長の中でも特に、帯域幅スケーリング機能との、受信機の複雑性のバランスを提供する。
【0045】
例示的な改善されSFIインタフェースにおいて採用される例示的な特徴の中でも特に、受信機デコードは簡略化され得、(例えば、4Bほどの小ささから、4KB(又はより大きい)までの大きさまで)広い範囲のデータペイロードをサポートするためにスケーリングするインタフェースを有する。改善されたストリーミングインタフェースは、複数のパケットが同じサイクルにおいて送達されることを可能にし得、セマンティクス及び順序付けの共通セット(例えば、PCIeベースなど)を維持しながら、様々なペイロードサイズにわたるスケーラブルなインタフェースを可能にする。構成可能なパラメータは、受信機における論理書き込みポートの数(例えば1又は2)を含み得、これは、クロックサイクルにおいて送信される異なるパケット又はヘッダの数を、フロー制御クラス及び/又は仮想チャネルの対応する数の使用に制限するインタフェースについての規則を定義することによってサポートされ得る。受信機における論理書き込みポートの数を低減することによって、著しい面積及び複雑性を削減し得る。追加的に、上に留意されたように、改善されたストリーミングインタフェースは、レイテンシを改善する(例えば、CPUホストの場合、オーナシップリクエストレイテンシを、入ってくるデータストリームに重ねることを助ける)ために、データがストリーミングされながら、(例えば、専用ヘッダチャネルを通じて受信されるヘッダの)受信機におけるヘッダ処理を開始することを可能にし得る。
【0046】
コンピュートエクスプレスリンク又はCXLは、コヒーレンシプロトコル(CXL.cache)、メモリアクセスプロトコル(CXL.mem)、及びI/Oプロトコル(CXL.io)の動的プロトコル多重化(又はmuxing)をサポートする、低レイテンシ、高帯域幅のディスクリート又はオンパッケージリンクである。CXL.cacheは、ホストメモリのデバイスキャッシングをサポートするエージェントコヒーレンシプロトコルであり、CXL.memは、デバイスアタッチメモリをサポートするメモリアクセスプロトコルであり、CXL.ioは、アクセラレータサポートについての強化を有するPCIeベース非コヒーレントI/Oプロトコルである。CXLはそれにより、アクセラレータデバイスなど広い範囲のデバイスをサポートするために、プロトコルの豊富なセットを提供することが意図される。特定のアクセラレータ使用モデルに応じて、CXLプロトコル(CXL.io、CXL.mem、CXL.cache)のすべて、又は、サブセットのみが、システムにアクセスするために、対応するコンピューティングブロック又はデバイス(例えば、アクセラレータ)についての低レイテンシ、高帯域幅パスを提供するように有効化され得る。
【0047】
上に記載されたように、いくつかの実装において、CXL.ioプロトコルを実装するために利用されるエージェントは、本明細書において説明されるものなどのSFIインタフェースを利用してシステムファブリックに結合し得る。例えば、
図4を参照すると、例示的なCXLエージェント、及び、そのようなエージェントに対するファブリックの結合を示す、簡易ブロックダイアグラム400が示される。
図4は、CXLリンク415をサポートするポートについての例示的なシステムトポロジーを示す。例えば、CXLリンク415は、CPUホストデバイス405を別のデバイス410(例えば、メモリデバイス又はアクセラレータデバイス)に結合し得る。(デバイス405、410上の)各エージェントは、CXLのサブプロトコル(例えば、CXL.io、CXL.mem、CXL.cache)の各々をサポートするためのリンク層ロジック(例えば、420a~b、425a~b)を含み得る。CXL.mem及びCXL.cacheの場合、共通のコントローラ(例えば、425a~b)が利用され得る。CXL.ioについては、コヒーレントなCXL.mem及びCXL.cacheのプロトコルとは別個であるコントローラ(420a~b)が提供され得る。プロトコル多重化は、Flex Bus(登録商標)物理層(例えば、430a~b)とインタフェースするCXL調停/多重化ロジック(例えば、ハードウェア回路において実装される425a~b)を通じて促進され得る。Flex Busは、PCIe又はCXLのいずれかをサポートするよう静的に構成されるフレキシブルな高速ポートとして実装され得る。Flex Busは、高帯域幅オフパッケージリンクを通じて送信されるPCIeプロトコル又はCXLプロトコルのいずれかを可能にする。Flex Bus PHY430a~bにおけるプロトコル選択は、アプリケーションに基づいて、自動ネゴシエーションを介してブート時間中に発生し得る。
【0048】
引き続き
図4の例において、第1インタフェースタイプ450a、450bが、CXL.cache及びCXL.memなどのコヒーレントなプロトコルに使用され、ここで、別の異なるワイヤインタフェース定義(例えば、205'、205")(例えば、SFIインタフェース)が、PCIe及びCXL.ioのようなロード/ストアプロトコルに使用される。一例において、SFI205'、205"は、仲介インタフェースとして機能し得、これは、送信機及び受信機の間のプロトコル又は用途固有の役割に関して想定せず、ロード/ストアプロトコル(例えば、PCIe、CXL.ioなど)の高い帯域幅要件を維持し得るスケーラブルなストリーミングインタフェースを提供する。SFIは、他の例及びインタフェース実装の中でも特に、スタンドアロンのプロトコル定義、フロー制御にマッピングされることができる異なるプロトコルをサポートするために提供されるSFIセマンティクス、及び、SFI定義によって提供される仮想チャネルセマンティクスを含まない。
【0049】
図4に示されるように、システムは、例示的なインタフェース450a、450bを採用し得、ワイヤがファブリックにおいて共有されることを可能にし、異なるコヒーレントなプロトコルが共通のワイヤを共有することを可能にすることによって、ファブリック及びエージェント周囲におけるワイヤ効率を実現する。例えば、エージェントから発生する様々なプロトコルのチャネルは、物理チャネル及び仮想チャネルの最小セットに慎重にマッピングされ得、その結果、エージェント及びプロトコルの帯域幅及びチャネル隔離要件は、最低の合計ワイヤカウントを用いて満たされる。インタフェース450a、450bは、他の例示的な実装の中でも特に、これらの複数のプロトコルをチャネルの共通セットにマッピングし、これらのチャネル上で共通のフロー制御及び仮想化特徴を使用し得る。
【0050】
いくつかの実装において、少なくとも部分的に、PCIe又はPCIeセマンティクスに基づいてロード/ストアプロトコル(例えば、PCIe又はCXL.io)をサポートするように適応される、改善されたストリーミングインタフェースが実装され得る。例えば、サポートされるプロトコルは、PCIe定義フォーマットに基づくパケットフォーマットを利用し得る。追加的に、フロー制御仮想チャネルの概念が、PCIe定義から拡張され得る。他の追加のプロトコル(例えば、非PCIe又はCXLプロトコル)が、そのようなSFIインタフェースによってもサポートされ得ることが理解されるべきである。実際、本明細書において論じられる例の多くは、PCIe又はCXL.ioベースプロトコル及び実装を参照するが、本明細書において論じられる原理、特徴、及び解決手段は、より一般的に、例えば、他の例示的なシステムの中でも特に、様々な他のストリーミング又はロード/ストアプロトコルに適用され得ると理解されるべきである。
【0051】
いくつかの実装において、SFIインタフェースは、ヘッダ(HDR)及びデータバス又はチャネルを分離し得、その各々は、複数のパケットのヘッダ又はペイロードを同時に搬送し得る。更に、パケットがヘッダ及びデータインタフェース上でどのようにパッキング/アンパッキングされるかを統制するために、形式化された規則が、エージェントのロジックにセットされ、採用され得る。例えば、追加のメタデータチャネル、又はバスが、改善されたインタフェース上で提供され得、別個のヘッダ及びペイロードデータチャネル上でそれぞれ送信されるヘッダ/データをどのようにアンパッキングするかを受信機が識別することを可能にするためにメタデータを搬送する。別個の、平行なヘッダ及びデータチャネルを通じて、システム(例えば、CPUホストのルートコンプレックス)は、例えば、対応するペイロードが受信される前に、潜在的な複数のヘッダを受信することによって、レイテンシの利益を享受し得る。この結果のリードタイムは、ヘッダを処理し、複数のヘッダリクエストについてのキャッシュラインについてのオーナシップのフェッチを開始するために、システムによって使用され得、一方、それらのリクエストのデータはなおストリーミングされている。これは、他の例示的な特長の中でも特に、レイテンシを重ねることを助け、バッファレジデンシを低減することを助ける。
【0052】
図5を参照すると、SFIインタフェースの例示的な実装を示す簡易ブロックダイアグラム500が示される。例えば、SFIインタフェースの各インスタンスにおいて、物理レーン(例えば、ワイヤ又は他のコンダクタ)のセットが提供され、様々なチャネルにアサインされ得、これにより、インタフェースについて定義されインタフェースのそれぞれの物理レーンにアサインされた信号の論理セットを具体化する。各デバイスは、例えばインタフェースのその終端(送信機又は受信機)を実装するために、(ハードウェア回路及び/又はソフトウェアで実装される)ピン及び対応するSFIロジックを保有し、インタフェース上で送信機及び受信機の間の接続を具体化する物理レーンに結合し得る。SFIインタフェースインスタンスは、追加的に、送信機から受信機へパケット又は他のデータ伝送メッセージを送信するための2つのチャネルを定義し得る。具体的には、いくつかの実装において、SFIインタフェース205は、それぞれ、パケットについてのヘッダデータを送信するのに使用されるインタフェースの複数のレーンの第1セットである信号(例えば、505、515、520)のセットを具体化するヘッダ(HDR)チャネルを含み得る。SFIインタフェースは追加的に、インタフェース205の複数のレーンの追加的なセットにマッピングされる、メッセージについてのペイロードデータを送信するのに使用される信号(例えば、510、525、530)の別のセットを具体化するデータ(DATA)チャネルを含む。HDRチャネルの信号は、ヘッダ自体を搬送するためのメインHDR信号505、及び、ヘッダメタデータ信号515、及び、ヘッダクレジットリターン信号520(受信機から送信機へ誘導される)を含み得る。同様に、DATAチャネルはまた、他の例示的な信号の中でも特に、ペイロードデータを搬送するためのメインデータ信号510、及び、データメタデータ信号525、及び、データクレジットリターン信号530(また、受信機から送信機へ誘導される)を含み得る。いくつかの実装において、SFIインタフェース205は追加的に、インタフェースのすべての物理チャネル(例えば、HDR及びDATA)にわたって適用する双方向制御信号を含むグローバルチャネル又は層(例えば550)を含み得る。例えば、グローバルチャネルは、他の特徴の中でも特に、インタフェースの初期化又はシャットダウンを実行し、インタフェースについての制御又はパラメータを通信するために使用され得るグローバル制御信号のセットを搬送し得る。
【0053】
HDR及びDATAチャネルの各々は、伝送の同じサイクルで、複数のパケットを搬送し得る。大部分のロード/ストアプロトコルは、順序付けセマンティクスに依存し得るので、SFIは、複数のパケットが同じサイクルで送信されるとき、暗黙的な順序付けを想定する。パケットは、例えば、最下位の位置から最上位の位置へ順序付けられ得る。例えば、TLP0がヘッダ信号505のバイト0から開始し、かつ、TLP1がヘッダ信号505のバイト16から開始する場合、受信機は、そのような順序付けルールが適用されるときにTLP1がTLP0の後に順序付けられるとみなす。異なるクロックサイクル間の伝送では、関連プロトコルの順序付けルールに従う(例えば、SFIは、PCIeに使用されるとき、すべてのPCIe順序付けルールを持ち越す)。リンク細分化(例えば、リンクのレーン全体を、2又はより多くのより小さい幅のリンク(例えば、それぞれのルートポートに関連付けられる)に分割する)の場合、コントローラの観点からの異なるポートは、SFI上の異なる仮想チャネルにマッピングする。例えば、そのような場合、実装は、(例えば、エージェント又はコントローラとして実装される)同一の物理ブロック内において複数のポート構成をサポートし得る。これらの場合において、他の例示的な実装の中でも特に、SFIの同一の物理チャネルは、異なるポートについてパケットを伝送するために使用され得、各ポートは、仮想チャネル(例えば、ポートあたり1又は複数の仮想チャネル)のそれ自体のセットにマッピングされる。
【0054】
インスタンスの態様を構成するために、パラメータのセットが、SFIインタフェースのインスタンスについて定義され得る。例えば、HDR及びDATAチャネルのメタデータ信号は、構成可能なパラメータの1又は複数に基づき得る。例えば、他の例示的な情報の中でも特に、パラメータは、メタデータ信号がどのようにメタデータを搬送して、単一の伝送において異なるパケットの位置についての情報を伝えるかを識別し得る。例えば、SFIにおいて、それに関連付けられたデータを有するパケットヘッダは、HDRチャネル上でパケットヘッダを送信し、DATAチャネル上で、関連付けられたデータを別々に送信する。DATA及びHDRチャネル伝送の間には、タイミング関係保証が無いことがあり得る。受信機は、各受信されたヘッダについて関連付けられたデータ長を追跡し、関連データサイズのみを処理すると想定する。データサイズは、パケットヘッダ情報と共に送信され得る(例えば、PCIe実装、PCIeパケットヘッダフォーマットを使用することにより、PCIe TLPヘッダの長さフィールドにおけるデータ量を識別し、データのいくつの4バイトチャンクがそのヘッダに関連付けられているかを示す)。メタデータ信号を通じて送信されたメタデータにおける情報はまた、他の例示的な情報の中でも特に、どのヘッダをどのデータにマッピングするか(例えば、フロー制御及び仮想チャネルIDの組み合わせを通じて)、パリティ情報、ヘッダフォーマットについての情報(例えば、ヘッダサイズ)を決定するために、受信機によって使用され得る。
【0055】
信号(例えば、550)のグローバル層又はチャネルが、インタフェース205のすべての物理チャネルにわたって適用する信号、例えば、制御信号、ベンダ定義信号、及び、他の例の機能を有効化する他の信号などを搬送し得る。例えば、グローバルチャネル550は、(下で論じられる例などにおいて)インタフェースの初期化及びシャットダウンのためにも使用される信号を搬送し得る。表1は、例示的なSFIインタフェースのグローバルチャネルの信号の例示的な実装を説明する。
【表1】
表1:グローバル層の信号
【0056】
HDRチャネルは、送信機から受信機へリクエストメッセージのヘッダを搬送する。様々な情報が、アドレス及び他のプロトコルレベルコマンド情報を含む、HDRチャネルを使用して送信されるヘッダの(プロトコル固有)フィールドにおいてカプセル化され得る。表2は、例示的なSFIインタフェースのHDRチャネルの信号の例示的な実装を説明する。
【表2】
表2:HDR層のフィールド
【0057】
ヘッダサイズは、システムの期待される又は必要とされるピークに維持された帯域幅に基づく、予め定められたパラメータであり得る。SFIインタフェース(及び対応するロジック)は、同じサイクルの伝送でのパケットヘッダ開始及び終了など、HDRチャネルについての規則を施行し得る。複数のパケットヘッダは、それにもかかわらず、ヘッダ信号レーンの第1サブセット上でパケットヘッダの1つを、ヘッダ信号レーンの別のサブセット上で他のパケットヘッダを送信することによって、同じサイクル上で送信され得る。しかしながら、インタフェースは、有効ヘッダ伝送上の第1パケットが、(ヘッダ信号レーンによって論理的に表される)ヘッダフィールドのバイト0に対応するヘッダ信号のレーン上で開始すると定義し得る。
【0058】
ヘッダ有効信号(hdr_valid)は、ヘッダ信号のレーン上の対応する有効値を示すために、アサートされ得る。いくつかの実装において、ヘッダ信号のレーンの数は、ヘッダ信号上で搬送されるプロトコルヘッダの1つのサイズに対応する、バイト単位のサブセット(例えば、各サブセットにおけるレーン幅の16バイト又は32バイト)に論理的に分割され得る。更に、各ヘッダ有効レーンは、サブセットの1つにマッピングされ得、ヘッダ信号のレーンのサブセットの対応する1つへ有効ヘッダデータが送信されていることを示す。追加的に、ヘッダメタデータ信号(hdr_info_bytes)は、(例えば、ヘッダ信号上で搬送されるヘッダの1つとアラインされた)メタデータを搬送し得、対応するヘッダをデコードするために受信機によって使用され得る主な属性を説明する。
【0059】
SFIインタフェースのDATA物理チャネルは、それに関連付けられたデータを有するすべてのリクエストについてのペイロードデータを搬送するために使用され得る。SFIでは、HDRチャネル、及び、DATAチャネル上で搬送される関連付けられたデータの間に明確なタイミング関係又は要件は無いことがあり得る。しかしながら、送信機は、HDRチャネル上のヘッダデータ又はDATAチャネル上のペイロードデータのいずれかをスケジューリングする前に、HDRチャネル及びDATAチャネルクレジットの両方をチェックするためのロジックを備え得る。表3は、例示的なSFIインタフェースのDATAチャネルの信号の例示的な実装を説明する。
【表3】
表3:DATAチャネルのフィールド
【0060】
SFIインタフェースの実装において、ペイロードデータは、マルチバイト粒度(例えば、4バイト粒度)に従って、DATAチャネルのデータ信号上で送信され得る。したがって、任意のペイロードについてのデータは、データの特定の「チャンク」(例えば、特定の4バイトチャンク)で終了すると識別され得る。一例として、データ信号Dの幅が64バイトである場合、潜在的なデータ終了位置の数は、DE=64/4=16であり、data_end[0]はデータバイト[3:0]に対応し、data_end[1]はデータバイト[7:4]に対応し、data_end[DE-1]はデータバイト[D-1:D-4]に対応する、などである。データ信号の開始(data_start)は、データ信号の終了と同一又は異なる粒度を利用し得る。SFIインタフェースのインスタンスは、クロックサイクルにおける開始DSの最大数をサポートする(及び、それに従って、ペイロード開始の数を限定する)ために、パラメータ化され得る。一例として、データ信号バスDの幅が64バイトであり、かつ、SFIインタフェースのインスタンスが、サイクルにおける開始の数を2に限定するよう構成されている場合、DS=2であり、新たなペイロードの送信が開始し得る2つの32バイトチャンクにデータバスを効果的に分割する。例えば、他の例の中でも特に、D=62かつDS=2である例において、data_start[0]は、データバイト[32]で開始するデータのチャンクに対応する、データバイト[0]及びdata_start[1]で開始するデータのチャンクに対応する(データの開始及びデータチャンク(例えば、DS>2)の終了における、より低い又は高い粒度、より小さい、又は、より大きいデータバスサイズなどを有する例を含む)。
【0061】
SFIインタフェースのDATAチャネルの1つの例示的な実装において、データ開始信号の幅は、DSに等しいことがあり得、信号は、マスクとして効果的に作用し、それぞれのペイロードの開始に対応する(例えば、同一のクロックサイクルにおいてアラインされた)データ信号上のデータの各対応するチャンクを識別し得る。更に、各データ開始ビットは、対応するペイロードについてのメタデータを示す、それと共に送信される関連付けられたdata_info_byte信号を有し得る。いくつかの実装において、他の例示的な実装の中でも特に、data_info_byteは、(例えば、対応するデータ開始チャンク及びdata_start_bitを用いて)所与のペイロードについて1回のみ送信され、一方、他の事例において、メタデータは、同一のペイロードにおけるデータのすべてのチャンクに対応して送信(例えば、再送)され得る。一実装において、データ信号バスを通じて送信されるデータペイロードの処理において受信機によって使用するために、他の例示的な情報の中でも特に、data_info_byte信号は、(例えば、FC IDを搬送する4ビット(例えば、data_info_byte[3:0])、及び、VC IDを搬送する別の4ビット(例えば、data_info_byte[7:4])を用いて)対応するパケットのそれぞれのFC ID及びVC IDを示し得る。
【0062】
HDRチャネルと異なり、DATAチャネルのいくつかの実装において、同一パケットからのデータチャンクは、複数のサイクルにわたって伝送され得る。例えば、ローデータバス幅は、サイクルあたり64Bとして実装され得、128Bデータパケットが2クロックサイクルにわたって伝送されることを可能にする。いくつかの実装において、ペイロードの送信が開始すると、送信機は、ペイロードにおけるすべての関連データチャンクが、LSBからMSBへ連続的に、連続するクロックにわたって(例えば、任意のギャップ又はバブル無しで)伝送されることを保証し得る。いくつかの実装において、特定のFC ID/VC IDの組み合わせの1つのパケットのみが、一度にインタフェース上で送信され得る(FC ID/VC IDの組み合わせは、組み合わせを使用する前のパケットが送信を完了した後にのみ再使用される)。いくつかの実装において、他の例の中でも特に、異なるFC ID/VC IDの組み合わせを有するパケットは、SFIインタフェース上でインターリーブされ得る(例えば、1つのFC ID/VC IDの組み合わせのパケットは、別のFC ID/VC IDの組み合わせを用いてパケットの少なくとも一部を送信するために、割り込まれる)。
【0063】
DATAチャネル上のクレジットの粒度も(例えば、設計コンパイル時に)構成可能であり得、複数のNバイトに対応し得る。例えば、一例において、粒度は、4バイトの倍数である必要があり得る。クレジット粒度が16バイトに選択される場合、他の例示的な実装の中でも特に、伝送される4バイトデータパケットさえ、1つの16バイト分のクレジットを使用する。
【0064】
図6は、例示的なSFIインタフェースと共に使用するための受信機バッファの例示的な実装を示す簡易ブロックダイアグラム600である。一例において、受信機バッファは、単一の書き込みポートと共にリンクリストとして実装され、1つのフロー制御クラス(FC0)の2つの仮想チャネル(例えば、VC0及びVC1)の間で共有され得る。この例において、サイクルあたり4つのヘッダが対応するSFIインタフェース上で受信され得る。リンクリストは、一度に4つのヘッダ位置のブロック(例えば、630a~c)において管理される。リンクリストは、メモリにおいて論理的に連続するように見え得るが、物理ブロックは、非連続的に、又は、別個のストレージ要素においてさえ実装され得る。一例において、所与のブロック(例えば、630a)内のすべての位置は、次のブロック(例えば、630b)に移動する前に充填される。バッファは、受信機によって、一度に1ブロック割り当てられ、したがって、対応する共有クレジットもブロック粒度であり得る。実装において、ブロック(例えば630a)における4ヘッダ(例えば605a~d)のセットが実際には別個のストレージ構造から構成されている場合、これらのストレージカラムの各々は、単一の書き込みポートのみを用いて正常に実装され得る。例えば、
図6のリンクリストバッファにおいて表されるカラムの各々は、それぞれの単一の書き込みポートを用いて、別個のバッファ/ストレージ要素として物理的に実装され得る。さらに、タイミングリリーフ及びパイプライン処理ポテンシャルは、リンクリストポインタ(例えば、615、620、625)の「ブロック」管理を使用することによってアンロックされ得る。なぜなら、(
図6の例において)次のブロックポインタは、4ヘッダに1回ルックアップされるだけで良いからである。いくつかのストリーミングプロトコルにおいて、受信機は、一般的な場合において、サイクルあたり1つのみのFC/VCの組み合わせを想定できないので、したがって、複数の書き込みポートを備えるように設計され得る(例えば、異なるFC/VCのテールは、同一のストレージカラム内で衝突し得る)。
【0065】
上で論じられたように、SFIインタフェース(及び、インタフェースの半分を実装するために送信機及び/又は受信機によって利用される対応するロジック及びバッファトラッカ)は、データがストリーミングされる間に、ヘッダ処理のパイプライン処理を有効化し得る。実際、それによって実現されるレイテンシの節約は、ヘッダ処理の観点において、受信機におけるバッファの節約に直接つながる。ロード/ストアプロトコルのコンテクストにおいて、受信機は、任意の方式でヘッダ及びデータを内部で分離すると想定される。ヘッダは、制御パスによって大きく消費されるからである。ここで、大部分のデータは、データパスに隔離される。例示的なSFIインタフェース上でヘッダ及びDATAチャネルを分割することによって、後のリクエストのヘッダは、前のリクエストのデータをバイパスすることさえあり得、これにより、データ伝送が完了されている間に、受信機が、ヘッダの処理を開始することを可能にし得る。他の例示的なユースケース及び利点の中でも特に、ホストCPU処理インバウンド(デバイスからホスト)書き込みのコンテクストにおいて、これは、関連するキャッシュラインのオーナシップを取得するヘッドスタートをもたらし得る。実際、オーナシップのフェッチは、書き込みを処理するとき、レイテンシのもっとも大きい原動力の1つであるので、データストリーム中にこれを重ねることによって、CPUにおける全体のレイテンシ及びバッファを低減することを助け得る。デッドロックは、ヘッダ又はデータのいずれかを送信する前に、送信機がヘッダ及びデータクレジットの両方をチェックすることを確実にすることによって回避される。
【0066】
いくつかの実装において、SFIインタフェースについて定義された各VC及びFCは、任意のメッセージを送信し、受信機からクレジットリターンを収集するためにクレジットを使用するためのものである。ソースは、メッセージが完了するのに必要な完全なクレジットを消費し得る。送信機は、それぞれのチャネル上で対応するメッセージを受信機へ送信する前に、HDRチャネル及びDATAチャネルクレジットの両方をチェックする。HDR及びDATAチャネルクレジットの粒度は、TX及びRXの間で予め定められる。例えば、DATAチャネル上のクレジットの粒度は、(例えば、設計コンパイル時に)複数のNバイトのみに構成され得る。例えば、一例において、粒度は、4バイトの倍数である必要があり得る。クレジット粒度が16バイトに選択される場合、他の例示的な実装の中でも特に、伝送される4バイトデータパケットさえ、1つの16バイト分のクレジットを使用する。一例において、FC IDは、他の例示的な実装の中でも特に、PCIeセマンティクスに基づき得る(例えば、4'h0=ポステッド、4'h1=ノンポステッド、4'h2=完了)。更に、物理チャネル(例えば、DATA及びHDR)の各々は、(受信機から送信機への残りのチャネルフローと異なり)専用クレジットリターンワイヤを備え得る。例えば、動作中に、受信機は、メッセージを処理した(又は、次のトランザクションについてのバッファ位置を保証した)ときはいつもクレジットを返す。
【0067】
いくつかの実装において、SFIは、異なるFC及びVC IDの間のバッファの共有をサポートするための2つのスキームを可能にする。両方のスキームにおいて、受信機は、転送進行保証に必要な最小限の数の専用リソースをアドバタイズする。大きいパケット伝送については、これは、最大のペイロードサイズは専用クレジットアドバタイズメントに基づくことを意味する。共有クレジットが使用される場合、送信機及び受信機は、どのクレジットタイプ又はスキームが使用されるかを予め定められる。いくつかの実装において、この決定は、設計時に行われ得る。代替的な実装において、他の例の中でも特に、クレジットスキームは、(例えば、対応する構成レジスタに書き込まれるパラメータに基づいて)動的に決定され得る。
【0068】
クレジット共有のための2つのスキームのうち第1のものは、送信機によって管理され得る。このスキームにおいて、送信機は、受信機における共有バッファを管理することを担当する。1又は複数の共有クレジットプールは、スペアVC ID/FC IDエンコーディングを用いてアドバタイズ又は消費される。送信機が共有クレジットプールクレジットを消費するとき、対応するVC ID/FC IDエンコーディングを使用してパケットを送信する。受信機が、共有クレジットを使用したトランザクションを割り当て解除するとき、対応するVC/FC IDの組み合わせに対してクレジットリターンを行う。いくつかの実装において、クレジットが共有クレジットであるか又はそうでないかを示すために、(HDRチャネル上の対応する信号と共に)ビットがヘッダにおいて提供され得る。したがって、他の例の中でも特に、受信機は、パケットの実際のVC ID又はFC IDを明示的に決定するためにヘッダパケットを更にデコードする必要があり得る。
【0069】
送信機によって管理されるクレジット共有の1つの例示的な実装において、(例えば、PCIeベース実装において)受信機によってアドバタイズされる例示的な共有クレジットプールのマッピングは、リンク上で2つのVCをサポートし、表4に示される以下の例示的なマッピングを採用し得る。
【表4】
表4:共有クレジットについての例示的エンコーディング
【0070】
2つのクレジット共有スキームのうち別のものは、受信機によって管理され得る。受信機によって管理されるスキームにおいて、受信機は、共有バッファの管理を担当する。専用クレジットのみが送信機にアドバタイズされる。典型的には、アドバタイズされた専用クレジットは、SFIにわたるポイントツーポイントクレジットループをカバーし、共有クレジットは、より大きいクレジットループ(例えば、CPUファブリック又はアプリケーション層レイテンシ)をカバーするために使用される。特定のFC/VC IDトランザクションが受信され、共有クレジットが利用可能となった後に、クレジットは、(例えば、トランザクションが受信機キューから割り当て解除するまで待つことなく)そのFC/VC IDの組み合わせについて返され得る。これは、そのFC/VC IDに対して、共有バッファスポットを暗示的に与える。内部的には、受信機は、FC/VCに基づいて送信機へ返されるクレジットを追跡し、更に、送信機によって現在消費されるクレジットを追跡する。この追跡により、受信機は、FC/VCあたり最大数のバッファが使用されることを確実にし得る。受信機は、他の例示的な実装の中でも特に、転送進行保証のために、必要な専用リソースを保証し得る。
【0071】
異常なフロー制御の場合のエラー処理は、未定義の挙動をもたらし得る。したがって、エージェント及びファブリック上のSFIインタフェースロジックは、異常な場合をチェックして、RTLにおいてアサーションをトリガし、また、ポストシリコンデバッグを可能にするためにフェイタルエラーを記録/シグナリングし得る。例えば、SFIは、HDR及びデータストリームの間の一貫性を維持し得、これは、送信機が、対応するヘッダを送信するのと同一順序でデータペイロードを送信することを意味し、逆も同様である。いくつかの実装において、受信機ロジックは、他の例示的なエラー処理の特徴の中でも特に、違反についてフェイタルエラーを検出及びフラグ付けする機能を含み得る。いくつかの実装において、SFIは、データ伝送の終了時に送信されるデータポイズニングのためにプロビジョニングする。時折のエラーの場合、他の例の中でも特に、オーナシップリクエストは、修正無しで破棄/ライトバックされ得、又は、ホストは、関連するキャッシュラインをポイズニングし、更新されたデータを書き込むことを選択し得る。
【0072】
図7を参照すると、ヘッダメタデータ信号のレーン上で搬送され得る、例示的なメタデータフォーマット700の表現が示される。最下位バイト及びビットは右に示される。P(705)は、対応するヘッダについてのパリティビットである。いくつかの実装において、パリティビットについてのサポートは、任意選択であり得る(例えば、及び、追加の予約ビットとして扱われるパリティビット705)。サポートされるとき、パリティは、例えば、パケットヘッダのビットの少なくともすべてをXORすることによってサポートされ得る。いくつかの実装において、他の例の中でも特に、パリティを決定するために、関連付けられたメタデータ700のビット及び非パリティビットの両方はXORされ得る。ビットD(710)は、ヘッダがそれに関連付けられた対応するペイロードデータを有するかどうかを示す。すべての予約ビット(例えば、715)は受信機によって無視され得、又は、送信機によって0に駆動される必要があり得る。いくつかの実装において、スイッチ/ファブリックルータが、任意の修正無しでそのまま予約ビット715を伝搬するために必要であり得る。いくつかの実装において、他の例の中でも特に、予約ビット715は、ベンダ定義エンコーディング又は将来の情報のために利用され得る。例示的なメタデータ700におけるヘッダサイズ(HDR SIZE)725は、(例えば、4バイト粒度で)ヘッダのサイズを指定し得る。ヘッダサイズを計算するとき、ヘッダメタデータ(700)の長さは無視され得る(ヘッダの一部とみなされない)。
【0073】
SFIインタフェースの実装において、インタフェース上で1つのサイクルにおいて送信され得る最大パケットヘッダの数は、予め定められ(例えば、及び、インタフェースの構成可能なパラメータに記録され)得る。サイクルあたりの最大パケットヘッダは、ヘッダ信号の幅(又はレーンの数)(H)及び最大パケットヘッダサイズによって決定され得る。ヘッダ幅(H)が、共通のケース使用が最大スループットを維持することを可能にするように、SFIインタフェースが実装(及び設計)され得る。一例として、共通のケースのアプリケーションヘッダサイズが16バイトであり(例えば、PCIeにおける4D-Wordヘッダへのマッピング)、かつ、インタフェースがサイクルあたり2つのヘッダを維持すると想定すると、H=2*(16)=32バイトである。対応する有効信号(及びレーン)は、所望のサイクルあたりのヘッダの数に対応するHDRチャネルに含まれ得る。一例として、インタフェースがサイクルあたり最大2つのヘッダを維持することが望ましい場合、対応するM=2の数の有効レーンが定義され得、サイクルにおける潜在的な2つのヘッダの各々について1つの有効信号をサポートする(例えば、hdr_valid[0]は、ヘッダ信号のバイト0におけるヘッダ開始に対応し、hdr_valid[1]は、ヘッダ信号のバイト16におけるヘッダ開始に対応する)。いくつかの事例において、サポートされるプロトコルのヘッダフォーマットの1又は複数は、大きすぎ、ヘッダ信号において定義されたレーンのサブセットの1つのみで送信すること(及び、有効信号レーンのそれぞれの1つにアサインされること)ができないことがあり得、そのようなヘッダは、ヘッダ信号におけるレーンのサブセットの2又はより多くを送信に利用し得る(そして、2又はより多くの関連付けられた有効信号のうち第1のもの(最下位ビット)だけがアサートされ得る)ことを意味する。そのような事例において、他の例の中でも特に、サイクルあたりの最大ヘッダが2にセットされるとき、より大きいヘッダフォーマットがヘッダ信号上で送信される場合、1つのヘッダのみがそのサイクルにおいて伝送され得、hdr_valid[1]はアサートされない。
【0074】
引き続き、
図7の例において、ヘッダメタデータは追加的に、ヘッダ(及び関連パケット)のフロー制御において使用するための情報を含み得る。例えば、メタデータは、ヘッダについての仮想チャネル(VC)識別子(ID)720、及び、ヘッダについてのフロー制御クラス(FC)ID730を含み得る。いくつかの事例において、パケット順序付けは、パケットのVC ID及びFC ID(例えば、VC ID及びFC IDの組み合わせ)に従い得る。いくつかの実装において、SFIインタフェースのパラメータは、インタフェースについて、インタフェースの任意の所与の伝送サイクル(例えば、クロックサイクル)において使用が可能である、予め定められた数の最大FC及びVC IDの組み合わせをセットするよう構成され得る。この最大数のFC-VCの組み合わせは、(例えば、設計コンパイル時に)送信機及び受信機の両方のインタフェースロジックにおいてアドバタイズされ得る、又は、さもなければセットされ得る。この最大値は、例えば、サポートされるFC及び/又はVCの間で受信機バッファが共有されるとき、受信機のストレージにおける書き込みポートを最小化することを支援するためにセットされ得る。一例として、インタフェースは、サイクルにおいて最大2つの異なるFC-VCの組み合わせを受け付けるためにパラメータ化され得、それにより、任意の所与のサイクルにおいて、伝送されるすべてのパケットヘッダは、同一のVCの中の最大2つの異なるFC、2つの異なるVCについての同一のFC、又は、同一のFC-VCの組み合わせに属する。
【0075】
送信機は、FC、VC、又はFC-VCの組み合わせに関連付けられたクレジットを利用して、パケットがチャネルを通じて送信され得るかどうかを判定し得る。例えば、パケットヘッダが、それに関連付けられたデータを有する場合、パケットヘッダはHDRチャネル上で送信され、関連付けられたデータは、DATAチャネル上で送信される。ヘッダ又はペイロードデータの送信に先立ち、送信機は、ヘッダ又はペイロードデータ伝送をスケジューリングする前に、ヘッダ及びペイロードデータ(及び、対応するHDR及びDATAチャネル)の両方についての利用可能なクレジットをチェックし得る(例えば、ローカルメモリにおける記録を追跡する)。いくつかの実装において、ヘッダチャネルについてのクレジット粒度は、最大のサポートされるヘッダサイズにセットされ得る。例えば、サポートされる最大のヘッダサイズが20バイトである場合、ヘッダチャネル上の1つのクレジットは、受信機における20バイト分のストレージに対応し得る。いくつかの事例において、他の例示的な同様の代替的フロー制御及びクレジット実装の中でも特に、16バイトヘッダのみが送信される場合でも、完全な20バイトに対応する1つの完全なクレジットが消費される。
【0076】
図8を参照すると、例示的なSFIインタフェースのヘッダチャネルを使用するヘッダ伝送の例を示す、簡略化されたタイミングダイアグラム800が示される。ヘッダチャネルは、クロックレーン、ヘッダ有効信号(例えば、810、825)専用の1又は複数のレーン、通信ヘッダメタデータ専用のレーン(例えば、815、830)、及び、ヘッダバス(例えば、820、835)の複数のバイトを実装するための専用のレーンを含み得る。
図8の例において、ヘッダバスの対応するサブセクション上で有効なヘッダデータの送信を統制するために、複数の有効信号が提供される。例えば、ヘッダレーン810は、ヘッダバスのバイト0~15を実装するレーン(例えば、820)に対応する有効信号を搬送し得、ヘッダレーン825は、ヘッダバスのバイト16~31を実装するレーン(例えば、835)に対応する有効信号を搬送し得る。したがって、有効信号810は、有効データが(例えば、クロックサイクル1、2、及び4において)ヘッダバスのバイト0~15上で送信される限りアサートされ得、同様に、有効信号825は、バイト16~31上で送信される有効データに対応してアサートされ得る。一例において、
図8のように、対応するヘッダデータが、対応するアサートされた有効信号として、アライメントされて(例えば、同一のクロックサイクル)送信され得、一方、代替的な実装において、他の例示的特徴及び実装の中でも特に、有効信号のアサーション及びヘッダデータの送信の間の遅延が定義され得る。
【0077】
引き続き
図8の例において、ヘッダバスを実装するレーンのサブセクションも、それぞれのヘッダメタデータ(又はhdr_info)信号(例えば、815、830)に関連付けられ得る。例えば、ヘッダバイト0~15(例えば、820)は、第1ヘッダメタデータ信号815に関連付けられ得、ヘッダバイト16~31は、第2ヘッダメタデータ信号830に関連付けられ得る。ヘッダメタデータ信号は、対応するヘッダバスレーン上で搬送されるヘッダの属性を説明するサイクルあたりのデータ(例えば、8バイト)を搬送し得る。いくつかの場合において、ヘッダバスの両方のサブセクションが、より大きいヘッダを搬送するために利用され得、結果として、所与のサイクル(例えば、クロックサイクル4)において、最大数より少ないサイクルあたりのヘッダが送信される。ヘッダバスの2又はより多くサブセクションが、単一のヘッダを送信するために使用されるとき、いくつかの実装において、対応するメタデータ信号のうち1つのみ(例えば、ヘッダの最下位バイトに対応する信号)がデータを搬送し得、一方、残りのメタデータ信号は、任意のメタデータを搬送しない。この方式において、他の例の中でも特に、受信機は、ヘッダバスレーンの1より多くのサブセットが、単一のヘッダを送信するために使用されると識別し得る(例えば、ヘッダを通信するために使用されるヘッダバスのサブセクションに対応する有効信号(例えば、810、825)の一方又は両方のアサーション)。
【0078】
図8の特定の単純化した例において、5つのトランザクション層パケット(TLP)のヘッダは、例示的なSFIヘッダチャネルを通じて送信されることが示される。例えば、ヘッダバスサブセクション820、835は各々、クロックサイクル1及び2において、2つの別個のTLPのヘッダ(例えば、サイクル1におけるTLP0(840)及びTLP1(845)のヘッダ、及び、サイクル2におけるTLP2(850)及びTLP3(855)のヘッダ)を搬送し得る。これは、これらのそれぞれのパケットのヘッダサイズに基づいて可能となり得る。更に、対応するヘッダメタデータ(例えば、865、870、875、880)は、サイクル1及び2における対応するヘッダメタデータ信号815、830上で送信され得る。有効信号810、825は、サイクル3においてデアサートされ得、このサイクル中に、追加のヘッダデータを送信させない。
【0079】
サイクル4において、別のTLP、TLP4のヘッダが送信される。この例において、単一のクロックサイクルにおいてHDRチャネルでヘッダを通信するべく、TLP4のヘッダのサイズは、ヘッダバスサブセクション820、835の両方でのトランスポートを必要とする。例えば、TLP0~3のヘッダ(例えば、840、845、850、855)は、サイズHDR_SIZE=4であり得、一方、TLP4ヘッダのサイズは、HDR_SIZE=5である。したがって、この例において、TLP4ヘッダ(860a~b)のバイトは、ヘッダバスサブセクション820及び835両方のレーン上で送信される。この例において、ヘッダの開始(又は、最下位バイト)を搬送するヘッダバスのサブセクション(又はバイト)に対応する有効信号810のみがハイにアサートされ(890)、一方、他の有効信号825は、クロックサイクル4においてデアサートされたままである。同様に、ヘッダメタデータ信号(例えば、815)の1つのみが、TLP4ヘッダについてのメタデータ情報を搬送するために使用され得、メタデータ信号(例えば、830)は、ヌル又は他の信号を搬送するヘッダの最上位バイトに対応する。一例において、TLP0~4のヘッダは、PCIeベースのプロトコルに従い得る。そのような事例において、TLP Hdrバイトは、PCI Express Base仕様において説明されるフォーマットに従う。この例において、他の例示的な実装の中でも特に、hdr_start[0]は、header byte[0]に関連付けられ、hdr_start[1]は常に、ヘッダバイト[16]に関連付けられる。
【0080】
いくつかの実装において、SFIインタフェースは、同期インタフェースとして実装され得、ここで、インタフェースの両方の側が、同一クロックで実行する。これにもかかわらず、送信機及び受信機は、各それぞれのデバイスにおいて、リセットを調整する必要ないことがあり得る。代わりに、いくつかの実装において、インタフェースについて定義された初期化フローは、トラフィックがインタフェース上で開始する前に、送信機及び受信機がインタフェースリセット及びフロー制御についての情報を交換すことを確実にするために、別個のハンドシェイクを定義し得る。
【0081】
図9を参照すると、例示的なSFIインタフェースのDATAチャネルを使用してデータ伝送の例を示す、簡略化されたタイミングダイアグラム900が示されている。この例において、DATAチャネルは、クロック905、単一の有効信号910(例えば、チャネルの単一のレーン上)、及び、データバスの1又は複数のサブセクションを実装するレーン(例えば、915、920)のセットを含む。
図9のこの特定の説明用の例において、X-1サブセクションが示される。有効信号910が(例えば、945において)アサートされるとき、データバス上に現れるデータ(及び、サポートする信号(例えば、925、930、935、940))は有効とみなされる。有効910が(例えば、966において)デアサートされるとき、データバス上のデータの送信は、有効が再アサートされるまで、停止又はストールする。
【0082】
SFI DATAチャネルのいくつかの実装において、データ(又はdata_start)信号の開始が提供され得、これは、data_start信号のビットの対応する数を実装するためにレーンのセット上で実装される。例えば、data_start信号は、データバスにおけるバイトのそれぞれのバイト又はスパンにマッピングされる、対応するdata_startレーン(例えば、925、926、928など)を有するビットベクトルとして実装され得る。例えば、各data_startレーン(例えば、925、926、928など)が、データバスのX+1サブセクションの対応する1つにマッピングし得る。例えば、データバスの8個のサブセクションがある例において、データ信号の開始は、8ビット又はレーンから構成され得、各ビットは、サブセクションの1つにマッピングされる。ペイロードの第1バイト(例えば、最下位バイトから最上位バイトまで測定される)が、特定のクロックサイクルにおいて通信されるとき、データ信号(例えば、925)の対応する開始は、(例えば、954で)アサートされ得、その第1ペイロードバイトが見つかり得るデータバスのサブセクション(又はチャンク)を識別する。これを通じて、受信機は、チャネル上で通信される2つのペイロードの間の境界を識別し得る。
【0083】
HDRチャネルの例のように、SFI DATAチャネルはまた、データバス上で送信される対応するペイロードデータを説明するために、専用メタデータ(data_info)信号レーン(例えば、930、935)上でメタデータを搬送し得る。いくつかの実装において、ペイロードについてのメタデータは、そのペイロードの開始と関連付けられて(例えば、ペイロードの第1バイト及び対応するdata_start信号とアラインされて)DATAチャネル上で通信され得る。実際、複数のメタデータ信号が定義され、DATAチャネル上で搬送され得、1つはデータバスのサブセクション(例えば、915、920)の対応する数の各々に対応する。いくつかの実装において、サブセクション又はチャンクは、data_start信号(及び/又はdata_end信号940)において利用される同一の論理チャンクに対応し得る。例えば、特定のチャンクが新たなペイロードの第1バイトを搬送するとき、メタデータ信号(例えば、930、935)の対応する1つは、そのペイロードについての対応するメタデータを搬送することを担当する。一例として、
図9に示されるように、クロックサイクル1において、TLP0のペイロード(950)の開始は、データバスの第1サブセクション(例えば、915)上で開始し得る。したがって、data_start信号925は、(例えば、データバスのバイト0に対応する)サブセクションが、新たなペイロードの開始を搬送することを示し得る(954)。データバスの他のサブセクション(例えば、920)は、同一のペイロードの追加の他のチャンク(例えば、952)を通信するために使用され得る。追加的に、データバスの第1サブセクション(例えば、915)に対応するメタデータ信号(例えば、930)の1つは、TLP0ペイロードについてのメタデータ(例えば、956)でエンコードされ得る。
【0084】
引き続き、
図9の例において、TLP0のペイロードデータ(例えば、950、952、960)は、すべて送信されるまで、データバス上で、複数のクロックサイクルにわたって送信を継続され得る。データの終了(又はdata_end)信号940は、データ信号の開始と同様の方式で動作し得、ペイロードデータの最終チャンクが対応するクロックサイクル内において送信されたデータバスのサブセクションを識別するために、複数のレーン(例えば、940、942)がマッピングされる。data_end信号によって参照されるサブセクション又はチャンクの粒度は、data_start及びメタデータ信号において使用されるものより高い又は低い、又は同一であり得る。一例において、他の例の中でも特に、data_end信号940によって参照されるサブセクション又はチャンクは、4バイトであり得る。
図9の特定の説明用の例において、TLP0のペイロードの最終バイト/ビットは、data_end信号について構成された粒度に従って測定されるように、データバスバイト及びレーンのサブセクション「N」において送信される。したがって、サブセクションNにマッピングされたdata_end信号のレーン(例えば、940)は、サブセクションNがペイロードの終了を搬送することを識別するためにアサートされ得る。いくつかの実装において、他の例の中でも特に、データの開始、データの終了、及び、メタデータ信号によって使用されるデータバスサブセクション及びチャンクの粒度は、SFIインタフェースについての対応するパラメータセットを通じて構成され得る。
【0085】
引き続き、
図9の例において、第2パケットの第2ペイロード(例えば、TLP1)が、データバス上で送信され得る(例えば、第2パケットの開始がデータチャンク/サブセクション「Y」において送信される)。いくつかの実装において、複数のパケットのペイロードが、(例えば、データバスのそれぞれのサブセクションを使用して)データバス上で同時に送信され得る。この例では、クロックサイクル2において、TLP0のペイロードは終了し、TLP1のペイロードは開始する。したがって、データ終了信号(例えば、970)及びデータ開始信号(例えば、964)の両方が同じサイクルにおいて送信され、データ開始信号964は、ペイロードの開始が現れるデータバスのサブセクション又はチャンク(例えば、サブセクション「Y」、ここで、0<Y<X)を示す。
図9の例において、データ信号の開始は、1バイト粒度であり、具体的には、ペイロードが開始するデータバスにおけるバイト(例えば、TLP0のペイロードについてはバイト0、TLP1のペイロードについてはバイトYなど)を識別し得る。したがって、データ開始及びデータ終了信号の幅は、使用されるそれぞれの粒度に基づき得る。更に、
図9の例において、TLP1のペイロードは、クロックサイクル2において送信を開始するが、送信は、有効信号910のデアサーションを通じて一時的に割り込まれ得(966)、残りのバイト(例えば、972、974)は、有効910が再アサートされるときに送信される。他の例において、他の例示的な実装の中でも特に、有効は、輸送中のペイロードのすべてのバイトが送信されるまで、アサートされたままである必要があり得る。
図8及び9の例は、他の例の中でも特に、例示的なSFI HDR及びDATAチャネルにおいて実装され得る、より一般的な原理(及び代替的な実装)を示すことを目的として提供される、簡略化された、非限定的な例であることが理解されるべきである。
【0086】
いくつかの実装において、SFIインタフェースにおける定義された接続及び切断フローに参加するために、状態機械又は他のロジックが、エージェント及びファブリックデバイス上で提供され得る。例えば、そのようなフローは、他の例示的な状態又はイベントの中でも特に、低電力モードに入るとき、ブート/リセット中に呼び出され得る。いくつかの実装において、SFIは、接続が確立された後に受信機(RX)におけるクレジット利用可能性についての情報が送信機(TX)へ通信される初期化フェーズを定義する。いくつかの事例において、リセットは、SFIのエージェント及びファブリック側の間で独立にデアサートし得る。独立のリセットについては、初期化信号は、リセット時に(例えば、グローバルチャネル上で)切断済み状態に駆動され得、初期化が接続済み状態に到達するまでトラフィックは送信されないことがあり得る。切断フローは追加的に、例えば、クレジットを再構成して省電力を実現するために、エージェントによってサポートされ得る。このフロー無しで、第1接続が進行できる前に、すべてのSFIクレジットが、最終値に構成され得る。
【0087】
初期化において、SFIインタフェースの送信機及び受信機側(例えば、エージェント及びファブリック側)は、ほぼ同時に又は同時にリセットから抜け出し得る。インタフェースの一端(例えば、リセットから抜け出た後)は、他の端がリセットから抜け出す必要があるときについて黙示的な要件を有しないことがあり得る。いくつかの実装において、SFIは、エージェント及びファブリックの間で初期化中に明示的なハンドシェイクを定義し得、任意のクレジット又はトランザクションがUFIインタフェース上で送信される前に、両方のエンドポイント(及び、それらの間のすべてのパイプラインステージ)がリセットから抜け出すことを確実にする。したがって、リセット後、受信機は、送信機によって使用されるためのクレジットの送信を開始し得る。
【0088】
図10は、SFIインタフェースの例示的な実装における初期化状態についての例示的な状態機械を示すダイアグラム1000である。状態は、切断済み状態1010(リセット1005に基づいて入り得る)、接続中状態1015、接続済み状態(1020、1035)、切断中状態1025、及び拒絶状態1030を含み得る。txcon_req信号、rxcon ack信号、及びrxdiscon_nack信号の値の組み合わせは、それぞれの初期化状態を示し得る。一例として、切断中状態1025において、txcon_req信号はLOWであり得、rxcon ack信号はHIGHであり得、rxdiscon_nackはLOWであり得る。信号値の特定の1つを変更することにより、1つの初期化状態から別のものへの遷移を引き起こし得る。例えば、他の例の中でも特に、
図10の状態機械の例に示されるように、切断中状態1025において、rxcon ack信号をHIGHからLOWに変更することは、切断済み状態1010への遷移を引き起こし得、一方、rxdiscon_nack信号をLOWからHIGHに変更することは、拒絶状態1030への遷移を引き起こし得る。UFIインタフェースにおいて、それぞれの初期化状態が、下の表5において説明される例示的な動作などの、受信機及び送信機によって実行される動作を決定するために使用される。
【表5】
表5:初期化状態動作
【0089】
シグナリング規則が、グローバル初期化信号セットについて定義され得る。一例において、txcon_req信号は、0から1への遷移が接続リクエストを反映し、1から0への遷移が切断リクエストを反映するように定義され得る。クレジットリターン信号が、例えば、クレジット有効(crd_valid)信号及びクレジット共有(crd_shared)信号と共に提供され得る。一例において、crd_valid=1が、プロトコルID及び仮想チャネルIDについての専用メッセージクレジットをリリースすることを意味するために定義され得、一方、crd_shared=1は、共有クレジットをリリースすることを意味する(これは、専用メッセージクレジットリターンと並行に発生し得る)。いくつかの実装において、クレジットリターンは、クレジットの第1初期化中に、クレジットのランタイムリターン中と同じ方式で挙動する。rx_empty信号は、受信機から返されたすべてのチャネルクレジット、及び、すべての受信機キューが空であることを示す(ただし、他の例示的な問題の中でも特に、これは、輸送中の、又は、クロッククロッシングキューなどの仲介バッファにおけるメッセージは考慮しないことがあり得る)。いくつかの実装において、送信機は、切断を開始する前に、rx_emptyをチェックし得る。チェックすることによって、(例えば、受信機においてまだ登録されていない、可能性のある輸送中のリクエストが存在しないとき)切断が迅速に受け付けられる確率を増加させる。いくつかの実装において、切断受付の確率を更に増加させるために、送信機は、最後の有効メッセージが送信された後に、タイマ遅延を実装し得、それにより、他の例示的特徴の中でも特に、受信機パイプラインは、受信機キューにドレインする時間を有する。いくつかの実装において、初期化中に、任意のクレジットが利用可能になるとすぐに、rx_emptyアサーションに依存ぜずに、送信機はメッセージを送信し得る。代替的に、送信機は、rx_emptyがアサートされるまで、初期化後に任意のパケットの送信をストールし得、送信機は、受信機がアドバタイズした全体のクレジットのインジケーションとして受信されたクレジットを使用し得る。SFIインタフェースの例示的な実装において、送信機は、受信機から十分なクレジットを受信するとき、パケットを送信し得る。送信機は、パケットが送信されることを識別し、送信開始前に、パケットについてそれぞれ十分なHDR及びデータクレジットがあると判定し得る。
【0090】
UFI実装において定義され得るシグナリング規則の更なる例として、常に接続リクエストの後に続く接続ACKが定義され得る。上に記載されるように、接続リクエストが、0→1に遷移するtxcon_reqによってシグナリングされ得る。この遷移は、送信機Txがクレジットを受信する準備ができており正常に動作していることのインジケーションとして機能する。ACKが、0→1に遷移するrxcon_ackによってシグナリングされ得る。ACKは、受信機が完了の準備ができるまで、任意の時間にわたってストールされ得る。同様に、切断リクエストの後に続く切断ACK又はNACKが定義され得る。切断リクエストが、1→0に遷移するtxcon_reqによってシグナリングされ得る。切断ACKが、1→0に遷移するrxcon_ackによってシグナリングされ得る。切断NACKが、0→1に遷移するrxdiscon_nackによってシグナリングされ得る。他の例示的なポリシー及び実装の中でも特に、受信機が、それが受信する各切断リクエストに対してACK又はNACKのいずれかで応答することを必要とするための規則が定義され得る。
【0091】
図11を参照すると、リセットから接続済み状態へのSFIインタフェースの初期化のための例示的なタイミングダイアグラム1100が示される。
図11に示される特定の例において、SFIインタフェースのグローバルチャネルにおける初期化信号を利用する例示的な初期化フローが示される。
図11に示されるように、初期化信号セットは、受信機切断NACK信号1110、受信機接続ACK信号1115、及び送信機接続リクエスト信号1120を含み得る。受信機リセット信号1130(エージェントをリセット状態に入らせる)、送信機リセット信号1135(ファブリックをリセット状態に入らせる)を含む、特定の特徴を示すための追加の信号が示される。SFIチャネルのクレジットリターン信号セット1125(例えば、HDR及びDATAチャネルの1又は複数についてのクレジット信号セット)の少なくとも1つの表現も示される。
【0092】
接続済み状態に入るために、送信機がリセットから抜け出すと、txcon_req信号1120をアサートして、受信機へのリクエストを識別し得る。同様に、受信機がリセットから抜け出すと、txcon_req信号1120上の接続リクエストを待つ。接続リクエストのアサーションは、リセット(例えば、1130)がアサートした後のサイクルの任意の数であり得る。接続が完了するまで、txcon_req信号1120はアサートするままであり、切断フローの一部としてデアサートされるだけである。txcon_req信号1120上で接続リクエストを受信すると、受信機は、rxcon_ack信号1115をアサートして、リクエストに確認応答し得る。rxcon_ack信号1115は、受信機及び送信機のリセット、及び、txcon_req信号1120のアサーションの後にアサートされ得る。rxcon_ack信号1115は、アサートするままであり、切断フローのみにおいてまずデアサートされる。
【0093】
このシーケンスは、初期化リンク状態1105が切断済みから接続中、接続済み状態に進行することを可能にし得る。接続済み状態に入る(そして、rxcon_ack信号を送信する)と、受信機は、即時に(例えば、クレジットリターンワイヤ1125上で)クレジットを返し始め得る。実際、受信機は、rxcon_ack信号1115のアサーションと同時にクレジットを返し始める。したがって、送信機(例えば、エージェント)は、(例えば、クロックサイクルx4において)txcon_req信号1120をアサートすると、クレジットリターンを受け付ける準備ができる。なぜなら、例えば、クレジットリターンは、仲介バッファ又はクロッククロッシングに起因して、A2F_rxcon_ackの観察の前に観察され得るからである。パケットを送信するために最小限のクレジットを受信した後、送信機は、チャネル上でパケット又はメッセージを送信し始め得る。再接続フローは、本明細書において論じられるリセットフローからの接続と同様に実装され得るが、しかしながら、他の例示的な実装の中でも特に、新しいクレジット初期化を開始するために、受信機はまず、そのクレジットカウンタをリセット値にリセットし、送信機は、利用可能なクレジットのカウンタをゼロにリセットする。
【0094】
図12を参照すると、例示的なSFIインタフェースについての例示的な切断及び再接続フローを示す、例示的なタイミングダイアグラム1200が示されている。この例において、送信機は、時間x3において、txcon_req信号1120をデアサートして、切断を促進し得る。いくつかの実装において、切断を進行させることを可能にするために、txcon_req信号1120がデアサートされる前に、rxdiscon_nack信号1110はデアサートされる。切断がリクエストされるとき、送信機は、(例えば、CHAN_is_valid bit assertionによって示される)任意のチャネル上でそれ以上メッセージを送信しない。送信機による切断フローの開始に基づいて、受信機は、切断を確認応答するか(ACK)、又は、否定確認応答(NACK又は拒絶)するかを決定する。切断を確認応答するために、受信機は、(リンク状態インジケータ1105によって反映されるように)切断済み状態に入ることをマークする、(例えば、クロックサイクルx4において)すべてのパイプラインが空であることを確実にした後に、rxcon_ack信号1115をデアサートし得る。いくつかの事例において、受信機はまた、すべてのクレジットが返されたことを確実にし得る。
【0095】
図12のダイアグラム1200は、切断リクエストが受信機によって肯定確認応答された事例を示す。
図13は、受信機が否定応答(又はNACK)で応答する反対の例を示す。例えば、否定確認応答を送信するべく、受信機は、(例えば、クロックサイクルx4において)rxdiscon_nack信号1110を代わりにアサートし得る。例えば、他の例示的な理由の中でも特に、デッドロックのリスク無しでそのパイプラインをドレインすることが不可能であると受信機が判定した場合に、否定応答が選択され得る。NACKの後に、送信機は、(例えば、クロックサイクルx6において)txcon_req信号1120を再アサートする。受信機のNACKの、送信機によるこの有効な確認応答を観察すると、(例えば、
図13の例においてクロックサイクルx6に示されるように)rxdiscon_nack信号1110がデアサートされ得る。
【0096】
いくつかの実装において、接続及び切断フローは、開始後の数マイクロ秒以内に完了すると期待される。いくつかの実装において、明示的又は暗示的にタイムアウトが定義され得る。例えば、受信機は、定義された、又は、推奨された時間のウィンドウの中で、ACK又はNACKで応答するよう構成され得る。例えば、エージェント、ファブリック、又はシステム(例えば、SoC)は、この予想を施行するためのタイムアウト又は時間ウィンドウを定義し得る。
【0097】
いくつかの事例において、SFIインタフェースが接続済み状態にある間、エージェント又はファブリック要素がリセットされ得、サプライズリセットをもたらす。例えば、定義又は推奨されるフローは、リセット前に切断に入ることであり得る。一例として、rxcon_ack信号が、送信機のtxcon_req信号の値が1である間に、リンクの受信機側でのサプライズリセットに起因して1→0に遷移し得る。そのような場合、送信機は、それ自体を強制的に切断済み状態にし、初期化を再開し得る。これが、送信機がアイドル状態にあるときに生じる場合、メッセージの損失無しにリカバーし得る。サプライズリセットの別の例として、rxcon_ackが1である間に、リンクの送信機側でのサプライズリセットに起因して、txcon_req信号が1→0に遷移する場合、標準の切断フローに従い得る。これが、受信機がアイドル状態にあるときに生じる場合、送信機がリセットに留まることを条件に、切断はACKを受信し、切断済み状態にきれいに到達するはずである。しかしながら、切断が受信機によって拒絶される(NACK)場合、フェイタル又は異常なリンク状態(例えば、リカバリ不能エラー)が生じ得る。サプライズリセットの場合において、トラフィックがアクティブである(例えば、アイドルでない)場合、プロトコルメッセージの損失が生じ得、継続的な正常オペレーションにフェイタルであり得る。
【0098】
上で論じられたように、システムにおけるSFIインタフェースは、様々なパラメータに従って構成可能であり得る。例えば、パラメータのセットは、特定のSoC設計など、所与のシステムのユースケース、特徴、プロトコル、及びトポロジーに従って具体的に定義され得る。そのようなパラメータは、例えば、他の例示的なパラメータの中でも特に、単一サイクルにおいて送信され得るヘッダの最大数、最大ヘッダサイズ、単一サイクルにおいて送信され得る異なるパケットのペイロードの最大数を定義し得る。パラメータ値が、例えば、インタフェースを通じて接続されたエージェント及びファブリックコンポーネントによる使用及び参照のために、構成レジスタ又は他のデータ構造において定義及び保存され得る。表6は、SFIインタフェースの一例においてセットされ得る、パラメータの例を提示する。
【表6】
表6:サポートされるパラメータ
エンドツーエンド暗号化のための非フリットモードトンネリング
【0099】
上で紹介されるように、PCIe/CXL.ioリンクが非フリットモード(NFM)にトレーニングするときでも、SFIは、PCIeフリットモード(FM)ヘッダフォーマット及びセマンティクスを利用し得る。例えば、PCIeフリットモードがトランザクション層パケット(TLP)グラマーを、(1)ゼロ又はより多くの1データワード(1DW)ローカルベンダ定義TLPプレフィックス、それに続く、(2)タイプ[7:0]フィールドによって示されるサイズを有するTLPヘッダベース、それに続く、TLPヘッダベースにおけるOHC[4:0]フィールドによって示される直交ヘッダ内容(OHC)の0~7DWを用いて定義し得る。(3)0~1024DWのTLPデータペイロードは、TLPヘッダベースに続き得、(4)TLPトレーラ(ヘッダベースのTS[2:0]フィールドによって示されるように存在する場合)、及び、その後の(5)ゼロ又はより多くの1DWエンドツーエンドサフィックスが後に続く。リンクがNFMにトレーニングするとき、SFIを使用するI/Oファブリック又はインターコネクトは、トランザクション層を利用して、FM/NFM変換を実行して、FMフォーマットのみがSFIを通じて搬送されることを確実にする。しかしながら、NFM予約済みフィールドを含む、すべてのNFMフィールドがFM同等物マッピングを有するわけではないので、これは、(例えば、CXL TLPインテグリティ及びデータ暗号化(IDE)などに従って)対応するデータを暗号化する試みを妨げ得る。従来の実装において、IDE暗号化を通じたNFM-NFM通信が、非ストリーミングインタフェースを用いてのみ利用可能である。いくつかの実装において、他の例示的な利益の中でも特に、(例えば、インタフェースを実装する回路において実装される)ロジックは、SFIファブリックの利益を維持したまま、2つのNFMトレーニングされたリンクが通信し、カットスルールーティング及びフリットモードフォーマットの受信機デコードの単純性の利益を維持しながら、パケットインテグリティを損なわないことを可能にし得る。例えば、フリットフォーマット拡張は、FMヘッダ構造を通じて、NFM固有ヘッダ情報をトンネリングするために定義され得、NFM-FM-NFMエンドツーエンド暗号化を可能にする。これは、他の例示的特徴の中でも特に、FM同等物を有しないすべてのNFM予約済みフィールド、FM同等物を有しないすべてのNFM非予約フィールド、及び、デコードされるパケットフォーマットへの変更の宛先を適宜に通知するための新しいヒントを含み得る。
【0100】
図14を参照すると、非フリットモード(NFM)にトレーニングした(例えば、PCIeエンドポイント1410及びPCIeエンドポイント1415の間の)2つのPCIeリンクを接続するためのSFIベースファブリック1405を実装するための例示的なトポロジーの簡易ブロックダイアグラム1400が示される。SFIパケットフォーマットは、PCIeフリットモード(FM)パケットフォーマットに従うので、ソース(例えば、1410)は、SFI205aを通じて送信する前に、(例えば、NFM-FMコンバータ1420を使用して)NFMヘッダをFMフォーマットにマッピングすることを担当する。同様に、宛先(例えば、1415)は、SFI205bを通じて受信されたFMヘッダを(例えば、FM-NFMコンバータ1435を使用して)NFMフォーマットに再びマッピングすることを担当する。
【0101】
従来のデバイスは、SFIベースファブリック(例えば、1405)を通じて別のNFMデバイス(例えば、1415)と通信するNFMデバイス(例えば、1410)について選択的IDEストリームをサポートしない。既存のSFI機能を通じて、すべてのNFM固有フィールドをトンネリングするために、そのようなデバイスにおいてコンバータロジック(例えば、1420、1425)が提供され得、SFIインタフェースのストリーミングの利益を維持したまま、ファブリックにデコードの複雑性を追加することなく、エンドツーエンド暗号化を可能にする。一例において、NFM-FMコンバータ回路(例えば、1420)が、(例えば、PCIe6.0又は以降において定義されるような)すべてのNFMフォーマット予約フィールドを識別し、FM同等物無しですべての(例えば、PCIe6.0)NFMフォーマットフィールドを識別し、NFMフィールドを宛先デバイス(例えば、1415)へトンネリングするためにSFIフォーマット拡張を定義する。
【0102】
1つの例示的な実装によれば、表7は、すべてのフォーマット及びプレフィックスについてのPCIe6.0NFM予約済みフィールド、及び、それらをどのようにSFIフォーマットにマッピングするかを列挙する。
【表7】
表7:SFIへの予約NFMフィールドのマッピング
【0103】
同様に、表8は、FM同等物を有しない、すべてのフォーマット及びプレフィックスについてのPCIe6.0NFMフィールド、及び、それらをどのようにSFIフォーマットにマッピングするかを一例において列挙する。
【表8】
表8:SFIに対する、FM同等物を有しないNFMフィールドのマッピング
【0104】
図15Aを参照すると、SFIを通じてNFMフィールドをトンネリングするのに使用される例示的なNFMプレフィックス定義が示される。表9は、例示的なNFMプレフィックス1505において示されるフィールドの説明を含む。
【表9】
表9:NFMプレフィックスにおけるフィールドの説明
【0105】
SFIを使用して、例示的なNFMパケットの追加ビットを宛先へトンネリングするために、NFMプレフィックス(例えば、新しいPCIe FMベンダ定義ローカルTLPプレフィックスとして定義される)が利用され得る。例えば、トンネリングがサポートされるとき、SFI NFMプレフィックス(例えば、1505)が、任意の他のローカルTLPプレフィックスの後、及び、プロトコルヘッダ(例えば、PCIeフリットモードベースヘッダ)の残りの前に挿入され得る。一例において、NFMフィールド1506がNFMプレフィックス1505に含まれる。NFMフィールドが「1」の値でエンコードされるとき、ベースヘッダにおけるアドレス[1:0]位置は、(例えば、すべてのフォーマットタイプについて)NFMフォーマットと同一の定義を有する。更に、NFM=1であるとき、フリットについてのアドレスタイプ(AT)ビットが、SFI NFMプレフィックス1505のATフィールド1507から提供される。しかしながら、NFMフィールド1506が「0」でエンコードされる場合、フリットのベースヘッダ及びOHCフォーマットは、定義された(例えば、PCIe)FMフォーマットに厳密に従う。
【0106】
いくつかの実装において、新しいプレフィックスの定義に加えて、SFIにおけるNFM/FM変換が、PCIe6.0FMフォーマットの新しいSFI固有の拡張の定義を通じて更にサポートされ得、これは、(例えば、NFM=1であるとき)NFMプレフィックスのNFMフィールド1506がデータのNFMフォーマットを示すときに使用され得る。例えば、
図15Bから
図15Dは、PCIe FM定義直交ヘッダ内容(OHC)への例示的な拡張を示す。例えば、
図15Bにおいて、PCIe OHC-A4定義への拡張が示され、ここで、1又は複数のビット(例えば、ビット20~21)が、メッセージフィールドについてのNFM PASIDプレフィックスからの実行リクエスト(ER)フィールド1512、及び、メッセージについてのNFM PASIDプレフィックスからの権限モードリクエスト(PMR)フィールド1514などのNFM情報を搬送するために再利用される。別の例、
図15Cにおいて、PCIe OHC-A5定義への拡張が示され、ここで、1又は複数のビット(例えば、予約ビット29)が、NFM完了ヘッダ予約ビット(バイト11、ビット7)1516などのNFM情報を搬送するために再利用される。別の例として、
図15Dに示されるように、(上で論じられるものなどの)他の例の中でも特に、PCIe OHC-B定義への拡張が示され、ここで、NFM TPHプレフィックス予約フィールド(バイト3、ビット7:0)1522などのNFM情報を保持するために、1又は複数のビット(例えば、予約ビット7:0)が再利用される。
図16は、他の例の中でも特に、2つの64ビットメモリ書き込みプロトコルヘッダ1605、1610から成る例示的なSFIヘッダ伝送1600を示し、その両方とも、挿入されたNFMプレフィックス1505a、1505b、及び、ベースヘッダ1615及びOHC-B1620に対する関連するSFI拡張(例えば、1615、1620、1625、1630など)を有する。
バッファレス共有/専用クレジットガスケット
【0107】
上で紹介されたように、SFIは、SFIインタフェースを通じた、受信されたSFI及びSFIトランスミッタの間の通信のための共有及び専用クレジットの混合をサポートし得る。共有バッファを実装し、ブロックサイズオペレーションで動作してSFIのストリーミングの利益を利用するSFI受信機は、いくつかの実装において、クレジットを共有できず代わりに専用クレジットに排他的に依存するSFIトランスミッタとペア形成し通信し得る。そのような状況に対処するために、格納及び転送アプローチが試みられ得るが、そのような解決手段は両方とも、エリア及びレイテンシの観点からコストが高い(例えば、フロー制御(FC)又は仮想チャネル(VC)のサポートされるすべての組み合わせのために、少なくとも最小限のパケットサイズのサイズを有するクレジットを格納し転送する)。例えば、PCIeにおいて、6種類の情報(例えば、ポステッドリクエストヘッダ(PH);ポステッドリクエストデータペイロード(PD);ノンポステッドリクエストヘッダ(NPH);ノンポステッドリクエストデータペイロード(NPD);完了ヘッダ(CplH);及び完了データペイロード(CplD))が、各仮想チャネルについてのフロー制御によって追跡され得、その結果、各VCについて6のFC/VCの組み合わせをもたらす。
【0108】
改善された実装において、軽量クレジット変換ガスケット(例えば、SFIインタフェースを実装するデバイスの回路において実装される)が提供され得、バッファレスであり、かつ、アンチスタベーション制御、及び、QoS及び帯域幅形成アルゴリズムを、実装しながら、受信機から送信機への専用クレジットへの共有クレジットプール変換を管理する。例えば、SFI受信機は、共有クレジットをクレジットガスケットロジックにアドバタイズし得る。クレジットガスケットは、受信機からのクレジットリターンを累積し、望ましいレベルのリンク利用を実現するために送信機における有効化された各FC/VCによって必要とされるクレジットを追跡し得る。クレジットガスケットは、受信機占有を識別及び考慮し、アンチスタベーション保護のためにFC/VC粒度で専用クレジットリターンをスロットルし得る。ブロックサイズにおける受信機クレジットを追跡及びアサインすることによって、クレジットガスケットは、ストレージの必要性を無くし、ヘッダ/データレイテンシへの影響を最小化し得る。リンク利用率モニタリングも、クレジットアサインを調整し、動的帯域幅割り当てを制御するために使用され得、受信機ストレージ要件を低減する。そのような解決手段が、エリア、レイテンシコスト、及び実装複雑性を最小化しながら、変動するクレジット機能のエージェントとの通信における柔軟性を提供するために、受信機についてのプラグアンドプレイ拡張として提供され得る。
【0109】
図17は、例示的なSFI受信機(例えば、SFIエージェントB1710)及びSFIトランスミッタ(例えば、SFIエージェントA1705上)の間のギャップを橋渡しし得る、SFI準拠クレジットガスケット1715を有する例示的トポロジーを示す簡易ブロックダイアグラム1700であり、ここで、送信機は、格納及び転送のための高コストのバッファの使用を回避しながら、(例えば、リンク上で実装される各FC/VCの組み合わせについての専用クレジットプールを用いて)専用クレジットをサポートするだけである。いくつかの実装におけるクレジットガスケット1715は、(例えば、SFIエージェントB1710上で)対応するSFI受信機を実装するために使用されるものとは別個の回路ブロックとして実装され得、SFIに基づいて共有クレジットインタフェース1720を使用してエージェントブロック1710に結合し得る。他の実装において、クレジットガスケット1715ロジックが、受信機自体に実装され得る(例えば、結合された、対応するSFIインタフェース1715を通じて通信する送信機の機能に基づいて有効化/無効化される)。クレジットガスケット1715は、SFIにおける共有クレジットレジーム及び専用クレジットレジームの間の変換ツールとして作用し得る。したがって、クレジットガスケット1715は、(SFIに基づいて)専用クレジットインタフェース1720を使用して専用クレジットをサポートするだけである送信機とインタフェースし得る。クレジットガスケット1715は、対応するSFI受信機(例えば、1710)から、共有されたクレジットリターンを受け付け、これら共有されたクレジットリターンを専用クレジットリターンに変換することを管理し、次に、SFIトランスミッタ(例えば、1705)に対応して、変換された専用クレジットをその有効化されたFC/VCの組み合わせに分配し得る。
【0110】
クレジットガスケット1715は、プログラム可能インタフェースを(例えば、システムソフトウェア又はファームウェアに)公開し、クレジットガスケットが、SFIトランスミッタにおけるどのFC/VCの組み合わせがアクティブであるか、及び、いくつの専用クレジットが各々(例えば、HDR及びデータ層についてのクレジット)にそれぞれ割り当てられるべきかを通知されることを可能にし得る。割り当てられた専用クレジットの数は、他の例示的な考慮事項の中でも特に、各FC/VCに望ましいリンク利用率、及び、リンクの遅延特性に依存し得る。例えば、単純化した例として、他の(潜在的に遥かに複雑な)例の中でも特に、1つのFC/VCのみが、4サイクルのクレジットループレイテンシを伴い、追加の制約を伴わず、サイクルあたり2つのヘッダを送信するよう構成されるSFIリンクについてアクティブである場合、ガスケットは、そのFC/VCについて8の専用クレジットを追跡するよう構成される。
【0111】
専用クレジットへの共有クレジットの変換を促進するべく、他の例示的な情報の中でも特に、クレジットガスケット1715は、各FC/VCについて、各FC/VCのクレジット不足分及び保留中のクレジットリターンを、残りの共有クレジットプールのサイズと共に、追跡し得る。クレジット「不足分(deficit)」は、所与のFC/VCにいくつのクレジットを提供するべきかを追跡するためにクレジットガスケットが使用する機構であり、FC/VCによって現在要求されているクレジットと、割り当てられているものの差に関する。不足分が満たされると、(別の不足分が識別されるまで)他のクレジットはアサインされるべきでない。所与のFC/VCについて不足分が増加するとき、クレジットガスケットは、以前に又は元々割り当てられていたものより多くのクレジットがFC/VCに割り当てられるべきであると判定する。一例において、クレジットガスケット1715は、カウンタをプログラムされた値に初期化し、次に、そのFC/VCの組み合わせについて、すべてのクレジットリターンに対してデクリメントし、すべての有効SFIヘッダ又はデータ伝送に対してインクリメントすることによって、このFC/VCあたりの不足分を追跡する。
【0112】
例えば、
図18は、例示的な送信機1705及び受信機1710の間に配置されたクレジットガスケット1715の関与の例を示すタイミングダイアグラム1800であり、ここで、送信機は、専用クレジットをサポートするだけであり、クレジットガスケットは、有効SFI伝送に基づいて不足分を追跡する。例えば、送信機1705は、FC/VC[1][2]についての第2ペアのヘッダ(例えば、1815、1820)が後に続くFC/VC[1][0]についての第1ペアのヘッダ(例えば、1805、1810)を送信し得る。クレジットガスケットは、SFI A1705からSFI B1710へのヘッダ1805、1810の送信を検出し、[1][0]に割り当てられたものに対してクレジットの数(例えば、2クレジット)をカウントし(1825)、ヘッダ1815、1820の送信を同様に識別し、[1][2]について割り当てられたものに対して、使用されるクレジットの数(例えば、2クレジット)をカウントする(1830)。FC/VC[1][1]についてのヘッダクレジットを利用して送信が検出されていないので、FC/VC[1][1]についてのクレジットトラッカに調整が行われない(1835)。いくつかの実装において、SFI信号は、共有又は専用クレジットが使用されるかどうかを識別するための信号を含み得る。送信機1705は、(例えば、hdr_info_bytes[1](1840)において)情報を有するヘッダを送信して、専用クレジットを使用していることを示すので、クレジットガスケット1715は、受信機1710に配送される前にヘッダ情報を修正し得、代わりに、共有クレジットが使用されていることを示す(それにより、受信機が、送信機によって使用される専用クレジットレジーム、又は、クレジットガスケットによるクレジットレジームの操作と関係なく動作することを可能にする)。例えば、一例において、SFI定義hdr_info_bytesの「ヘッダ使用共有クレジット」ビットは、専用又は共有クレジットが使用されるかどうかを示し得る。この場合、クレジットガスケットは、他の例の中でも特に、SFI受信機1710の上流へ信号を転送する前に、「専用」を示す値(例えば、hdr_info_bytes「0x8140」)から、「共有」を示す別の値(例えば、hdr_info_bytes「0xA140」)に「ヘッダ使用共有クレジット」ビットを反転させ得る。
【0113】
上に記載されたように、クレジットガスケット1715は、各FC/VCの組み合わせに最初に割り当てられたクレジットの数を識別し、FC/VCがクレジット不足分に属するかどうかを継続的にモニタリングし得る。例えば、任意のFC/VCの組み合わせが、プログラムに基づいて、不足していると判定される場合、クレジットガスケットは次に、クレジットの追加のブロックサイズのチャンクをアサインすることによって、クレジットアサインを調停するように作用し得る。
図19Aの例において、アクティブFC/VCについての不足分がブロックサイズより小さいシナリオが示され、1935において余分なクレジットが(共有プールカウンタ1930によって追跡されるように)共有プールからリターン保留中カウンタ1925にアサインされていることを示す。例えば、
図19Aのタイミングダイアグラム1900aに示されるように、受信機(例えば、1710)は、複数のクレジットリターン(例えば、1905)を送信し得、クレジットガスケット1715は、クレジットリターンを識別し、最初に、クレジットを(共有クレジットプールカウンタ1925を使用して追跡されるように)共有クレジットプールに返し得る。FC/VCの専用クレジットプールが(対応するクレジット不足分カウンタ(例えば、1920など)と共に)調整されるとき、クレジット不足分条件が、(例えば、1918において)クレジットガスケットによってFC/VCについて識別され得る。クレジット不足分は、クレジット割り当ての初期化又は調整に起因して、又は、送信機が有効パケットを送信する(そして、クレジットガスケットは、それらのクレジットを補充するべきであると認識する)ことに起因して発生し得る。共有プールからのクレジットは、不足分(例えば、(1922において)1クレジット)を補うべく、再割り当てされ得る。不足分が満たされた後に、ブロックサイズのチャンクから任意の過剰なクレジットが残っている場合、これらは、特定のFC/VC(例えば、FC/VC[1][2])にアサインされたが、SFIトランスミッタ1705にまだ返されていない共有クレジットを追跡する別個のリターン保留中カウンタ1925に格納され得る。より多くの共有クレジットリソースを消費するように調停する前に、その特定のFC/VCについての未来の不足分は、リターン保留中カウンタからクレジットを消費し得る。
【0114】
図19Bを参照すると、例示的なクレジットガスケット1715を使用する、例示的なクレジット初期化及びリリースを示すタイミングダイアグラム1900bが示される。例えば、初期化中に、SFI受信機1710は、SFI仕様において説明されるものなどのSFIによって予約されたFC/VCの組み合わせを使用して、共有クレジットをアドバタイズする。クレジットガスケットは、このアドバタイズメントをインターセプトし、これらのリターンを使用して内部共有クレジットプールをインクリメントする(1940)。例えば、
図19Bの例において、初期化中の例示的なクレジット交換(例えば、最初の40クレジット(例えば、「0x10」クレジットリターンの4xサイクル))が、後続のリリースと共に、専用クレジットとして示される(例えば、8クレジット不足分をカバーするために、2つの連続するサイクルで4クレジットをアドバタイズする)。初期化後、共有クレジットリターンがまず、SFIブロックサイズのチャンクにおけるクレジットを収集することを目的とするFC/VCあたりのアキュムレータにインクリメントされる。ブロックサイズのチャンクが収集されると、ガスケットは、FC/VCが不足しているかどうかをチェックする。不足している場合、クレジットのブロックサイズのチャンクは、クレジットをそのFC/VCリターン保留中カウントに追加することによってFC/VCに直接アサインされる。不足していない場合、クレジットは、プログラム可能マッピングを使用して内部共有クレジットプールをインクリメントするために使用され、FC/VCの組み合わせを共有プールに変換する。
【0115】
図20を参照すると、クレジットガスケットの実装内の例示的論理フローを示す簡易ブロックダイアグラム2000が示される。第1インタフェース2005は、専用クレジットドメインを実装して、専用クレジットをサポートするだけである送信機を有するエージェントとインタフェースし得る。第2インタフェース2010は、共有クレジットドメインを実装して、共有クレジット(及び、潜在的に共有及び専用クレジットの混合)をサポートする受信機を有するエージェントとインタフェースし得る。クレジット変換ロジック2015は、専用クレジットレジーム及び共有クレジットレジームの間でクレジットがどのように変換されるかを決定し得る。クレジット変換ロジック2015は、クレジットリターン調停ロジック2020を含み得、これは、受信機の共有クレジットプールから、送信機によって理解される(及びクレジットガスケットによって仮想化される)ような潜在的な複数のFC/VCの組み合わせの専用クレジットプールへのクレジットのプロビジョニングを調停するために利用され得る。ヘッダなどの伝送は、クレジットガスケットにおける送信機から受信され得(2025)、専用クレジットが適用されることを示し得る。クレジットガスケットは、SFIインタフェースの適切なチャネルを通じて受信機へ転送する前に(2032)、そのようなフィールドを上書きし得(2030)、代わりに、共有クレジットが使用されることを受信機に示す。追加的に、データ伝送を受信すると、データ伝送のサイズ(及びデータ伝送のFC/VC)に応じて、クレジットガスケットは、データ伝送に使用されるクレジットの数だけ不足分を増加させることによって、その特定のFC/VCについて追跡されるクレジット不足分を更新し得る2035。この更新に基づいて、クレジットガスケットは、FC/VC専用プールが不足の位置にあるか又は無いかを判定し得る(2040)。
【0116】
引き続き
図20の例において、受信機は、クレジットガスケットによって変換され送信機へ転送される(2050)クレジットリターンを発行し得る(2045)。クレジットが受信機によって返されるとき、クレジットリターンアキュムレータが、返されたクレジットの数に基づいてインクリメントされる。FC/VCについてブロックサイズが(例えば初期化中に)決定され得、クレジットガスケットは、クレジットの数がブロックサイズより大きい又はそれに等しいかどうかを判定し得る(2060)。FC/VCについて累積されたクレジットがブロックサイズより大きい場合、クレジットガスケットは次に、FC/VCが不足している、又はそうでないかを判定する(2040)。FC/VCが不足している場合、返されたクレジット(例えば、ブロックサイズ閾値の上)がクレジットリターン保留中カウンタをインクリメントする(2065)ために使用される(発行されたFC/VCへのリターンを待っているクレジットの数を示す)。しかしながら、FC/VCが不足していない場合、これは、FC/VCの使用中の状態を示し得、結果として、クレジットは代わりに、共有プール(カウンタはそれに従ってインクリメントされる(2070))へ再び割り当てられる。
【0117】
いくつかの実装において、クレジットガスケットは、クレジットガスケットカウンタのステータスを評価するために、構成可能なクレジットリターンアービトレータ2020を含み得、送信機によってサポートされる様々なFC/VCの組み合わせに対するクレジットの発行を調停し、受信機によってサポートされる共有クレジットプールが効率的方式で動的に割り当てられることを確実にする。例えば、クレジットリターンアービトレータ2020は、例えば、FC/VCのクレジット不足分カウンタへの更新が発生するとき、保留中リターンクレジットカウンタ(2075)及び共有プールカウンタ(2080)から、クレジットリターンを再び送信機へ発行するかどうかを決定し得る(2085)。クレジットリターンアービトレータ2020は、他の例示的な実装の中でも特に、クレジットリターンを承諾する(2050)か、又は代わりに、FC/VCに割り当てられたものからクレジットを引き戻す(2035)かを決定し得る。クレジットリターンアービタ2020は、ハードウェア回路において実装され得、他の例示的な実装の中でも特に、ソフトウェア又はファームウェアが、クレジットガスケットによってクレジットリターンをどのように調停するかを決定する上でクレジットリターンアービタ2020によって利用されるアルゴリズムを構成できるインタフェースを提供し得る。
【0118】
いくつかの実装において、有効化されたFC/VCについての初期化された不足分は、デッドロック回避のために、少なくとも完全に1つのパケットをカバーするべきであり(例えば、1ヘッダクレジット、最大ペイロードサイズ(MPS)サイズデータクレジット)、(例えば、ソフトウェアによって命令されるように)静的又は動的であり得る。静的な場合において、初期化された不足分は、望ましいリンク利用率を実現するために必要な程度に高くセットされるべきである。複数のFC/VCの組み合わせがアクティブである場合、これは、受信機についてのより大きいストレージ需要をもたらし得る。これは、FC/VCあたりのアクティビティが均一でない場合に程度を増し得、いくつかのFC/VCの組み合わせは、高アクティビティの期間及び低アクティビティの期間を経験する。これを緩和するべく、いくつかの実装において、クレジットガスケットは、FC/VCアクティビティに応じて、追跡されたクレジット不足分を経時的に動的に調整し、受信機ストレージ需要を低減し、エリアを削減し得る。これは、アクティブFC/VCの間の動的なクレジット及び帯域幅割り当てを可能にする。このシナリオにおいて、不足分は、リセットにおけるMPSサイズのパケットをカバーするためだけに初期化され、初期トラフィックフローを可能にする。リンクが(例えば、構成可能時間ウィンドウにおける所与のFC/VCからの有効なパケットの数をカウントすることによって検出される)FC/VCによって使用されるとき、クレジットガスケットは、不足分を維持、増加、又は減少させることを選択し得る。FC/VCからのアクティビティの増加に起因して不足分が増加する場合、より多くの共有プールクレジットリソースをFC/VCにアサインされるクレジットガスケット調停をもたらし得る。FC/VCからアクティビティの低減に起因して不足分が減少する場合、クレジットガスケットが、FC/VCにアサインされたクレジットの数を低減することをもたらす。例えば、
図21に示されるタイミングダイアグラム2100は、FC/VCからのアクティビティの増加に起因する不足分増加シナリオを示す。例えば、FC/VC[1][0]上のより高いトラフィックを検出することに基づいて、クレジットガスケットは、不足分を増加させることによってクレジット割り当てを増加させ得(2105)、これにより、より高い数のクレジットが送信機へ返され、それによって使用されることを可能にし得る。
【0119】
クレジットが最初に所与のFC/VCに過剰に割り当てられたとクレジットガスケットが判定する場合、不足分低減を受けているFC/VCに既にリリースされた任意のクレジットは、既存のSFI機構によって取得できない。実装が、低減されたFC/VCからの未来のパケット伝送を保証する場合、そのクレジット低減を単純に追跡し、それを未来のクレジットリターンから控除することを選択し得る。代替的に、クレジットは、SFIの拡張を用いて、異なる方式でオンデマンドで取得され得る。例えば、受信機-送信機プル(pull)は、SFIに追加される新しい信号を組み込み、受信機が送信機からクレジットを戻すようにリクエストすること、及び、送信機がプル(又は低減)を確認応答することを可能にするために定義され得る。一例において、
図22Aの例に示されるように、受信機1710は、既存のSFIクレジットリターンワイヤ2205(例えば、*fc_id、*vc_id、*value、*dedなど)を再利用して、(例えば、既存の*crd_rtn_validの代わりに)新しい*crd_rtn_pull信号をアサートすることによって、前にアドバタイズされたクレジットを取り戻すことを希望することを送信機1705にシグナリングし得る(2210)。送信機1705は、プルが成功である場合は(例えば、信号2220を使用して)確認応答で、又は、失敗である場合は(例えば、信号2225を使用して)拒絶で、プルリクエスト2210に応答し得る。成功の確認応答時に(例えば、2230)、受信機1710は、前にアサインされたクレジットを取り戻し、それらを必要に応じて再アサインし得る。失敗又は拒絶の応答時に、受信機は、クレジットを再アサインできず、条件がなお適用する場合、後の時間にプルを再試行することを選択し得る。例えば、
図22Bの例において、受信機は、送信機1705が最初に拒絶し得る(2240)クレジット割り当て解除をリクエストし得る(2235)が、後に再試行し得る(2245)。この第2クレジット割り当て解除リクエスト2245は次に、送信機によって確認応答され得(2250)、受信機1710が次にクレジット(s)を正常に取り戻すことを可能にする。表10は、受信クレジットプルを促進するために利用され得る例示的なSFI信号を示す。
【表10】
表10:例示的なクレジットプル信号
【0120】
1つの例示的な実装において、信号2205、2220、2225などを実装するために使用されるワイヤは、クレジットリターン及びクレジットプルの間で共有され得、そのような事例においてそれら2つのイベントのうち1つのみが、任意の所与のサイクルで発生することを可能にし得る(例えば、*crd_rtn_pull 及び*crd_rtn_validは、相互に排他的なイベントである)。結果として、そのような実装において、受信機1710は、一度に1つだけの未処理のプルリクエストを有し得る。代替的な実装において、FC/VCからのクレジットの割り当て解除は、代わりに、例えば送信機-リターンクレジットリターン信号を通じて送信機によって開始され得る。例えば、送信機-リターンクレジットリターン信号がSFIに追加され得、送信機が、アクティビティの減少を個別に検出又は予測する場合、受信機へのクレジットリターンを開始することを可能にする。いくつかの実装において、送信機-リターンクレジットリターン信号は、既存のRX→TXクレジットリターン信号をミラーリングし得るが、逆方向である。この選択肢では、他の例示的な実装の中でも特に、受信機は、クレジット回収においてより受動的な役割を担い、送信機を利用して自己モニタリングする。
バッファレスアービタ
【0121】
SFI仕様の既存バージョンにおいて定義されるものなどの従来のストリーミングインタフェースは、単一送信機を単一受信機に結合するための1対1の物理インタフェースを定義する。いくつかの実装において、アービタ又は調停回路を利用して、1対多のストリーミングインタフェースが実装され得る。そのようなインタフェースを促進するためにバッファアービタが開発され得るが、しかしながら、バッファアービタの使用は、格納及び転送アーキテクチャに起因して、エリア及びレイテンシが大きいことがあり得る。例えば、他の複雑性の中でも特に、バッファアービタは、クレジットが利用可能であるときにいつでもパケットを送信し、1対多のインタフェースについてのバースト規則を処理し得る送信機を考慮するべく、MPSサイズのクレジットを格納及び転送する。改善された実装において、バッファレスアービタは代わりに、I/Oファブリックが、格納及び転送のためのバッファの使用無しでSFI機構を使用して1対多の接続を実装することを可能にするために利用され得る。例えば、バッファレスアービタは、早期有効、ブロック、及びデータインターリーブの確立されたSFI機構を利用して、格納及び転送を必要としない、多対1の軽量バッファレス、時間分割多重化を可能にし得る。実際、他の例示的な特長の中でも特に、バッファレスアービタは、既存のSFIインタフェース機構及び非常に小さいエリアのファブリックスイッチを使用し、システムオンチップ(SoC)デバイスのスケーラビリティを支援する共通インタフェースを通じて、軽量解決手段を表し得る。
【0122】
例えば、
図23は、例示的なシステムを示す簡易ブロックダイアグラム2300であり、ここで、SFIアービタ2305が、SFI仕様のストリーミングの利益を維持しながら、複数のデバイス(例えば、2310、2315、2320)を有効化するために提供される。例えば、アービタ2305は、1対多SFI準拠接続を確立するためにバッファレスアービタとして実装され、それにより、物理ワイヤ接続を削減し得る。アービタ2305は、SFI機構を使用して、複数のエージェント(例えば、2310、2315、2320など)の間の調停し、格納及び転送するためのバッファの使用を回避し得る。
図23の例において、アービタ2305は、SFIエージェントA2310及びSFIエージェントC2320、及び、SFIエージェントB2310及びSFIエージェントC2320の間の上流の接続、及び、SFIエージェントC2320及びSFIエージェントA2310、及び、SFIエージェントC2320及びSFIエージェントB2315の間の下流の接続を確立する。アービタは、他の例示的特徴の中でも特に、SFI早期有効サポート、ブロックサポート、及び、データインターリーブサポートを実装し得る。一例において、アービタは、(例えば、HDR及びDATAチャネルの両方で)SFIエージェントからの早期有効インジケーションを利用して、対応するSFI物理チャネルを使用するための調停リクエストを実装し得る。HDR及びDATAチャネルの両方におけるアービタ2305からSFIエージェントへのブロックアサーションが、調停が獲得されるまで、パケットの送信をストールするために使用され得る。複数のSFIエージェント送信機からの同時アクティブデータストリームの間で調停するとき、DATAチャネル上の受信機によるデータインターリーブサポートが使用され得る。特徴のこの組み合わせを利用することによって、例示的なSFI準拠アービタが、SFIのストリーミングの利益を利用して、任意の追加のレイテンシを常に回避しながら、異なる送信機の間の衝突が無いことを確実にすることによって、ストレージの必要性を無くす。アービタ2305は、様々な異なる調停アルゴリズムを実装し得、これは、アプリケーションのサービス品質及び公平性ポリシーに依存し得、いくつかの場合において、他の例示的特徴の中でも特に、システム内において異なる時間に異なる調停アルゴリズムが採用されることを可能にするように構成可能であり得る。
【0123】
図24A~24Dを参照すると、(例えば、SoC、スイッチ、ネットワーク処理デバイスなどにおいて)1対多SFIインタフェースを実装するためのバッファレスSFIアービタ回路(例えば、2305)の例示的な使用を示すタイミングダイアグラム2400a~dが示される。
図23~24Dの説明において示される1対2インタフェースは、より大きいインタフェースの倍数(例えば、1対3、1対4、1対10など)に対応するアービタを含む、バッファレスストリーミングインタフェースアービタの実装内で採用され得る一般的な原理を示すための単純化した例として提供されることが理解されるべきである。例えば、
図24Aの例において、上流方向におけるトラフィックが示される例示的なシナリオにおいて、SFIエージェントA2310及びSFIエージェントB2315は、SFIエージェントC2320へヘッダを送信している。この例において、hdr_early_valid信号2405、2410によって示されるように、SFIエージェントA2310のみがアクティブであり、SFIエージェントBがアイドルであるとき、アービタはSFIエージェントAに完全な帯域幅を承諾する。これは、SFIエージェントAが調停を獲得する限り、SFIエージェントBについてhdr_block信号2415を維持することによって実現される。しかしながら、hdr_early_valid信号2405、2410の両方のアサーションを通じて示されるものなど、エージェント2310、2315の両方がアクティブであるとき(2420)、アービタは、2つのエージェントの間で承諾の獲得を交互に行い(2425)、各アービタ承諾に従って、エージェント2310、2315について、hdr_block信号2430、2415を交互にセットし、クリアする。この結果、両方のソースからヘッダにサービスを提供することが可能であるSFIエージェントC2320への出力ストリーム2435が効率的に利用される(例えば、2310、2315)。
【0124】
SFIの*_early_validが調停リクエストとして使用される実装において、これは、効率損失のリスクをとるべく、特に実際のパケット送信の時間に近いほど、早期有効アサーションでより効率的であるように、SFIトランスミッタに対して追加の要件を課し得る。例えば、
図24Bは、
図24Bの例と同様であるが、SFIエージェントB2315がそのhdr_early_validアサーションにおいて貪欲に、又はさもなければ非効率的に挙動し、機会を与えられたときに任意のヘッダを送信することさえなく(例えば、2440)、そのhdr_early_valid信号2410をアサートされたままにする例を示す。これにより、SFIエージェントCへの出力にバブルを導入する。なぜなら、SFIエージェントBに承諾されたサイクルは、パケット送信に利用されないからである。そのような状況に対処するべく、いくつかの実装において、アービタは、そのような事例を更に検出するためのロジックを備え得る。例えば、一例において、アービタは、エージェントに承諾されるすべてのサイクルをインクリメントし、データ(例えば、DATA又はHDRデータ)を送信するために利用されないカウンタを維持し得る。アービタが(例えば、プログラム可能閾値を超える)未使用のサイクルの数をカウントするとき、アービタは、それに承諾された「無駄な」サイクルを有する非効率的なエージェントに対して未来の調停決定を偏らせる調停アルゴリズムと連携してカウンタを利用し得るように、ポリシー又は閾値が定義され得る。例えば、
図24Cの例において、アービタ2305は、SFIエージェントBが早期有効をアサートし、ヘッダを送信するための調停された送信サイクルを承諾され(例えば、2450)、反復方式でこれらの機会を待っている(例えば、連続サイクルにおいてヘッダを送信することに失敗する、特定の時間にわたって多すぎる回数にわたってヘッダの送信に失敗する、など)ことを検出し得る。それに応答して、アービタは、違反するエージェント(例えば、この例では、SFIエージェントB2315)に調停獲得を承諾しないことがあり得、その代わり、これらのサイクルを、アービタに結合された他のエージェント(例えば、SFIエージェントA2310)に逸らせる(2455)。
【0125】
図24Dのダイアグラム2400dに示されるものなど、バッファレスアービタ2305を使用して1対多のDATA物理チャネルを調停するために同様の原理が適用され得る。例えば、(例えば、SFI仕様によって定義されるように)各SFIトランスミッタは、ストリームの開始時に、FC/VC情報を提供し得る。送信機は、複数のソース間のアービタインターリーブストリームを認識しないので、アービタは、アクティブなデータストリーム情報を追跡し、ストリームを切り替えるときはいつも、data_start及びdata_info_bytesを再アサートし得る(例えば、2456、2460)。この例において、他の例示的な実装の中でも特に、アービタはなお、data_early_valid(例えば、2405、2410)を調停リクエストとして、data_block(例えば、2430、2415)を、送信をストールするために使用するが、SFIエージェントA及びSFIエージェントBからのデータの送信を切り替えるときは毎回、ストリームの元の情報を用いて、data_start及びdata_info_byteを再アサートする。
【0126】
上記の複数の装置、方法、及びシステムは、上記の任意の電子デバイス又はシステムに実装されてよいことに留意されたい。特定の説明として、下の図は、本明細書において説明される解決手段を利用するための例示的なシステム(例えば、SoC、コンピューティングブロック、ファブリックブロックなど)を提供する。以下のシステムがより詳細に説明されるように、複数の異なるインターコネクト、ユースケース、トポロジー、及びアプリケーションが開示され、説明され、上の説明から再検討される。さらに容易に明らかなように、上記の複数の進歩は、それらのインターコネクト、ファブリック、又はアーキテクチャ、及び、それらの複合コンポーネントの任意のものに適用され得る。
【0127】
上記の複数の装置、方法、及びシステムは、上記の任意の電子デバイス又はシステムに実装されてよいことに留意されたい。例えば、
図25及び26の例に示されるコンピューティングプラットフォームは、様々なコンピューティングデバイスの間の接続を示し、それらの少なくとも一部は、2つの接続されたデバイスと互換性のあるソケットコネクタを有する対応するパススルーコネクタデバイスを使用して実装され得る。
【0128】
図25を参照すると、マルチコアプロセッサを含むコンピューティングシステムについてのブロックダイアグラムの実施形態が描かれている。プロセッサ2500は、マイクロプロセッサ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、ハンドヘルドプロセッサ、アプリケーションプロセッサ、コプロセッサ、システムオンチップ(SOC)、又は、コードを実行するための他のデバイス等の任意のプロセッサ又は処理デバイスを含む。一実施形態では、プロセッサ2500は、少なくとも2つのコア、すなわち、コア2501及び2502を含み、これらのコアは、非対称コア又は対称コア(図示の実施形態)を含むことができる。しかしながら、プロセッサ2500は、対称又は非対称であり得る任意の数の処理要素を含んでもよい。
【0129】
一実施形態において、処理要素とは、ソフトウェアスレッドをサポートするハードウェア又はロジックを指す。ハードウェア処理要素の例は、スレッドユニット、スレッドスロット、スレッド、プロセスユニット、コンテクスト、コンテクストユニット、論理プロセッサ、ハードウェアスレッド、コア、及び/又は実行状態又はアーキテクチャ状態などのプロセッサの状態を保持することが可能な任意の他の要素を含む。言い換えると、一実施形態において、処理要素とは、ソフトウェアスレッド、オペレーティングシステム、アプリケーション、又は独立して他のコードなどのコードに関連付けられることが可能な任意のハードウェアを指す。物理プロセッサ(又はプロセッサソケット)とは通常、コア又はハードウェアスレッドなどの任意の数の他の処理要素を潜在的に含む集積回路を指す。
【0130】
コアは、独立したアーキテクチャ状態を維持可能な集積回路上に置かれるロジックをしばしば指し、独立して維持される各アーキテクチャ状態が、少なくともいくつかの専用実行リソースに関連付けられる。コアに対して、ハードウェアスレッドは、独立したアーキテクチャ状態を維持可能な集積回路上に置かれる任意のロジックを一般に指し、独立して維持されるアーキテクチャ状態が、実行リソースへのアクセスを共有する。分かるように、特定のリソースが共有され、他のリソースがアーキテクチャ状態専用である場合、ハードウェアスレッドとコアとの間の用語体系の境界は重複する。しかししばしば、コアとハードウェアスレッドとは、オペレーティングシステムにより個々の論理プロセッサと見られており、オペレーティングシステムは、各論理プロセッサ上での動作を個別にスケジューリングできる。
【0131】
図25に示すように、物理プロセッサ2500は、2つのコア、すなわち、コア2501及び2502を含む。ここでは、コア2501及び2502は、対称コア、例えば、同じ構成、機能ユニット及び/又はロジックを有するコアだと見なされる。別の実施形態では、コア2501は、アウトオブオーダプロセッサコアを含み、コア2502は、インオーダプロセッサコアを含む。しかしながら、コア2501及び2502は、ネイティブコア、ソフトウェア管理によるコア、ネイティブ型の命令セットアーキテクチャ(ISA)を実行するように適応されたコア、変換された命令セットアーキテクチャ(ISA)を実行するように適応されたコア、共同設計されたコア、又は、他の既知のコア等の任意の種類のコアから個別に選択することができる。ヘテロジニアスなコア環境(例えば、非対称コア)では、バイナリ変換のような、ある変換形態が利用されてよく、一方又は両方のコアで、スケジューリング又はコードの実行をする。ただし、更なる議論として、コア2501内に示す機能ユニットを下記で更に詳細に説明する。図示の実施形態では、コア2502内のユニットも同様に動作する。
【0132】
図示のように、コア2501は、2つのハードウェアスレッド2501a及び2501bを含み、これらを、ハードウェアスレッドスロット2501a及び2501bと称することもできる。したがって、一実施形態ではオペレーティングシステムのようなソフトウェアエンティティは、潜在的にプロセッサ2500を、4つの別個のプロセッサ、例えば、4つのソフトウェアスレッドを同時に実行可能な4つの論理プロセッサ又は処理要素とみなす。上に示唆したように、第1のスレッドが、アーキテクチャ状態レジスタ2501aに関連付けられ、第2のスレッドが、アーキテクチャ状態レジスタ2501bに関連付けられ、第3のスレッドを、アーキテクチャ状態レジスタ2502aに関連付けることができ、第4のスレッドを、アーキテクチャ状態レジスタ2502bに関連付けることができる。ここで、アーキテクチャ状態レジスタ(2501a、2501b、2502a、及び2502b)のそれぞれは、上記のように、処理要素、スレッドスロット、又はスレッドユニットと称することもできる。図示のように、アーキテクチャ状態レジスタ2501aが、アーキテクチャ状態レジスタ2501b内にレプレケートされるので、個別のアーキテクチャ状態/コンテクストを、論理プロセッサ2501a及び論理プロセッサ2501bについて記憶することが可能である。コア2501では、アロケータ及びリネーマブロック2530内の命令ポインタ及びリネーミングロジック等の他のより小さなリソースも、スレッド2501a及び2501bについてレプレケートすることができる。リオーダ/リタイアメントユニット2535内のリオーダバッファ、ILTB2520、ロード/ストアバッファ、及び、キュー等のいくつかのリソースを、パーティショニングを通して共有することができる。場合によっては、汎用内部レジスタ、ページテーブルベースレジスタ、低レベルデータキャッシュ及びデータ-TLB2515、実行ユニット2540、及び、アウトオブオーダユニット2535の一部分等の他のリソースが、完全に共有される。
【0133】
プロセッサ2500は、しばしば他のリソースを含む。これらのリソースは、完全に共有されること、もしくは、パーティショニングを通して共有されることがあり、又は、これらのリソースのために、処理要素が専用で用いられること、これらのリソースが、処理要素のために専用で用いられることがある。
図25では、プロセッサの例示的論理ユニット/リソースを伴う、単なる例示的プロセッサの実施形態を示す。プロセッサは、これらの機能ユニットのうちの任意の機能ユニットを含むこと、又は、省略すること、ならびに、図示していない、他の任意の既知の機能ユニット、ロジック、又はファームウェアを含むことができることに留意されたい。図示のように、コア2501は、簡略化された典型的なアウトオブオーダ(OOO)プロセッサコアを含む。しかし、異なる実施形態では、インオーダプロセッサを利用してもよい。OOOコアは、実行するべきブランチ/たどるべきブランチを予測するためのブランチターゲットバッファ2520と、命令についてのアドレス変換エントリを記憶するための命令変換バッファ(I-TLB)2520とを含む。
【0134】
コア2501は、フェッチされた要素をデコードするために、フェッチユニット2520に結合されたデコードモジュール2525を更に含む。一実施形態では、フェッチロジックが、スレッドスロット2501a、2501bにそれぞれ関連付けられた個別のシーケンサを含む。通常、コア2501は、プロセッサ2500上で実行可能な命令を定義/特定する第1ISAに関連付けられる。しばしば、第1のISAの一部分である機械コード命令が、実行されるべき命令又はオペレーションを参照/特定する命令(オペコードと称される)の一部分を含む。デコードロジック2525は、これらの命令を、それらのオペコードから認識し、デコードされた命令を、第1ISAにより規定された処理のために、パイプラインに渡す回路を含む。例えば、下記でより詳細に議論するように、一実施形態では、デコーダ2525は、トランザクション命令等の特有の命令を認識するように設計又は適応されたロジックを含む。デコーダ2525による認識の結果、アーキテクチャ又はコア2501が、予め規定された特有のアクションを行って、適当な命令に関連付けられたタスクを実行する。本明細書で説明するタスク、ブロック、オペレーション、及び方法のうちのいずれも、単一又は複数の命令に応答して実行することができることに留意することが重要であり、これらの命令のうちのいくつかは、新たな命令又は古い命令であってもよい。一実施形態では、複数のデコーダ2526が同じISA(又は、そのサブセット)を認識することに留意されたい。あるいは、ヘテロジニアスなコア環境では、デコーダ2526は、第2のISA(第1のISAのサブセット、又は、別個のISA)を認識する。
【0135】
一例では、アロケータ及びリネーマブロック2530が、命令処理結果を記憶するためのレジスタファイル等のリソースを蓄えるためのアロケータを含む。しかしながら、場合によっては、スレッド2501a及び2501bが、アウトオブオーダ実行を可能であり、アロケータ及びリネーマブロック2530が、命令結果を追跡するためのリオーダバッファ等の他のリソースをやはり蓄える。ユニット2530は、プログラム参照レジスタ/命令参照レジスタを、プロセッサ2500内部の他のレジスタにリネームするためのレジスタリネーマを含んでもよい。リオーダ/リタイアメントユニット2535は、先に述べたリオーダバッファ、ロードバッファ等の構成部品を含み、アウトオブオーダ実行をサポートし、その後に、アウトオブオーダで実行された命令のインオーダのリタイアメントをサポートするためのバッファを格納する。
【0136】
一実施形態では、スケジューラ及び実行ユニットブロック2540が、実行ユニット上の命令/オペレーションをスケジュールするためのスケジューラユニットを含む。例えば、浮動小数点命令が、利用可能な浮動小数点実行ユニットを有する実行ユニットのポート上でスケジュールされる。これらの実行ユニットに関連付けられたレジスタファイルも、情報命令処理結果を記憶するために含められる。例示的実行ユニットには、浮動小数点実行ユニット、整数実行ユニット、ジャンプ実行ユニット、ロード実行ユニット、記憶実行ユニット、及び他の既知の実行ユニットが含まれる。
【0137】
低レベルデータキャッシュ及びデータ変換バッファ(D-TLB)2550は、実行ユニット2540に結合される。データキャッシュは、データオペランドのような、最近使用/操作された要素を格納し、それらは、潜在的に、メモリコヒーレンシ状態で保持される。D-TLBは、物理的アドレス変換に対する、少し前の仮想/線形を記憶するためのものである。具体例として、プロセッサは、物理メモリを複数の仮想ページに分けるためのページテーブル構造を含んでもよい。
【0138】
ここで、コア2501及び2502は、オンチップインタフェース2510に関連付けられた第2レベルのキャッシュ等、より高いレベルのキャッシュ又は更に外のキャッシュへのアクセスを共有する。「より高いレベル」又は「更に外」は、実行ユニットから上がっていくキャッシュレベル、又は、実行ユニットから更に離れていくキャッシュレベルを指すことに留意されたい。一実施形態では、より高いレベルのキャッシュは、最終レベルのデータキャッシュ、すなわち、第2レベル又は第3レベルのデータキャッシュ等、プロセッサ2500上のメモリ階層内の最終キャッシュである。しかしながら、より高いレベルのキャッシュは、命令キャッシュと関連付けられること、又は、命令キャッシュを含むことがあり得るので、そのように限定はされない。むしろ、命令キャッシュの一種であるトレースキャッシュは、少し前にデコードされたトレースを記憶するために、デコーダ2525の後段で結合され得る。ここで、命令は潜在的にマクロ命令(例えば、複数のデコーダによって認識される一般的命令)を指し、それは多数のマイクロ命令(複数のマイクロオペレーション)にデコードされてよい。
【0139】
図示の構成では、プロセッサ2500は、オンチップインタフェースモジュール2510も含む。歴史的には、下記でより詳細に説明するメモリコントローラは、プロセッサ2500外部のコンピューティングシステム内に含まれてきた。このシナリオでは、オンチップインタフェース2510は、システムメモリ2575、チップセット(メモリ2575に接続するためのメモリコントローラハブと、周辺デバイスに接続するためのI/Oコントローラハブとをしばしば含む)、メモリコントローラハブ、ノースブリッジ、又は他の集積回路等、プロセッサ2500外部のデバイスと通信を行うためのものである。また、このシナリオでは、バス2505が、マルチドロップバス、ポイントツーポイントインターコネクト、シリアルインターコネクト、パラレルバス、コヒーレント(例えば、キャッシュコヒーレント)バス、階層プロトコルアーキテクチャ、異なるバス、及びGTLバス等の任意の既知のインターコネクトを含むことができる。
【0140】
メモリ2575は、プロセッサ2500専用であっても、システム内の他のデバイスと共有されていてもよい。メモリ2575の種類の一般例には、DRAM、SRAM、不揮発性メモリ(NVメモリ)、及び、他の既知のストレージデバイスが含まれる。デバイス2580は、メモリコントローラハブに結合されたグラフィックアクセラレータ、グラフィックプロセッサ、もしくは、グラフィックカード、I/Oコントローラハブに結合されたデータストレージ、ワイヤレストランシーバ、フラッシュデバイス、オーディオコントローラ、ネットワークコントローラ、又は、他の既知のデバイスを含み得ることに留意されたい。
【0141】
しかしながら、最近では、SOC等の単一ダイ上で、より多くのロジック及びデバイスが集積されているので、これらのデバイスそれぞれを、プロセッサ2500上に組み込むことができる。例えば、一実施形態では、メモリコントローラハブが、プロセッサ2500と同じパッケージ及び/又はダイに設けられる。ここでは、コア2510の一部分(オンコア(on-core)部分)が、メモリ2575又はグラフィックデバイス2580等の他のデバイスとインタフェースを取るための1又は複数のコントローラを含む。こうしたデバイスとインタフェースを取るためのインターコネクト及びコントローラを含む構成は、しばしば、オンコア(又はアンコア(un-core)構成)と称される。一例として、オンチップインタフェース2510は、オンチップ通信のためのリング型インターコネクト、及び、オフチップ通信のための高速シリアルポイントツーポイントリンク2505を含む。しかし、SOC環境では、ネットワークインタフェース、コプロセッサ、メモリ2575、グラフィックプロセッサ2580、及び他の任意の既知のコンピュータデバイス/コンピュータインタフェース等、遥かにより多くのデバイスを、単一ダイ又は集積回路上で集積して、高機能及び低電力消費の小型フォームファクタを提供することができる。
【0142】
一実施形態では、プロセッサ2500は、コンパイラ、最適化、及び/又は、トランスレータコード2577を実行して、アプリケーションコード2576をコンパイル、変換、及び/又は、最適化することで、本明細書で説明する装置及び方法をサポートすること、又は、それらとインタフェースを取ることが可能である。コンパイラは、ソーステキスト/ソースコードをターゲットテキスト/ターゲットコードに変換するためのプログラム又はプログラムのセットをしばしば含む。通常、コンパイラを用いたプログラムコード/アプリケーションコードのコンパイルは、高レベルのプログラミング言語コードを、低レベルの機械言語コード又はアセンブリ言語コードに変換するために、複数のフェーズ及びパスで行われる。ただし、単純なコンパイルには、単一のパスコンパイラを利用することができる。コンパイラは、任意の既知のコンパイル技術を利用し、語彙解析、前処理、パーシング、意味解析、コード生成、コード変換、及びコード最適化等の任意の既知のコンパイラオペレーションを実行することができる。
【0143】
より大きなコンパイラは、しばしば、多重フェーズを有するが、ほとんどの場合、これらの複数のフェーズは、2つの一般的なフェーズ内に含まれる:(1)フロントエンド、例えば、一般的には、セマンティクス処理と、いくつかの変換/最適化が行われてよく、(2)バックエンド、例えば、一般的には、解析、複数の変換、複数の最適化、及びコード生成が行われる。いくつかのコンパイラはミドル(middle)を参照し、ミドルは、コンパイラのフロントエンドとバックエンドとの間の記述のぼやけを説明する。この結果、挿入、関連、生成、又は、コンパイラの他のオペレーションへの参照が、上記のフェーズ又はパスのうちのいずれか、ならびに、コンパイラの他の任意の既知のフェーズ又はパスのうちのいずれかで起こり得る。説明用の例として、コンパイラは、コンパイルの1又は複数のフェーズにおいて、オペレーション、コール、ファンクション等を場合によっては挿入する(例えば、コンパイルのフロントエンドフェーズでコール/オペレーションを挿入し、次いで、変換フェーズ中に、コール/オペレーションを低レベルのコードに変換する)。コンパイラコード又は動的最適化コードが、こうしたオペレーション/コールを動的コンパイル中に挿入することができ、かつ、ランタイム中には、実行のためにコードを最適化することができることに留意されたい。具体的な説明用の例としては、ランタイム中に、バイナリコード(既にコンパイルされたコード)を動的に最適化することができる。ここで、プログラムコードは、動的最適化コード、バイナリコード、又は、それらの組み合わせを含み得る。
【0144】
コンパイラと同様に、バイナリトランスレータ等のトランスレータは、コードを静的又は動的に変換して、コードの最適化及び/又は変換を行う。したがって、コード、アプリケーションコード、プログラムコード、又は、他のソフトウェア環境の実行への参照とは、(1)コンパイラプログラム、最適化コードオプティマイザ、もしくは、トランスレータを動的もしくは静的に実行して、プログラムコードをコンパイルすること、ソフトウェア構造を維持すること、他のオペレーションを実行すること、コードを最適化すること、もしくは、コードを変換すること、(2)最適化/コンパイルされたアプリケーションコード等、オペレーション/コールを含むメインプログラムコードを実行すること、(3)メインプログラムコードに関連付けられた、ライブラリ等の他のプログラムコードを実行して、ソフトウェア構造を維持すること、他のソフトウェア関連のオペレーションを実行すること、もしくは、コードを最適化すること、又は、(4)(1)から(3)の組み合わせを指し得る。
【0145】
ここで
図26を参照すると、本開示の実施形態による第2のシステム2600のブロックダイアグラムが示される。
図26に示すように、マイクロプロセッサシステム2600は、ポイントツーポイントのインターコネクトシステムであり、ポイントツーポイントインターコネクト2650を介して結合された第1のプロセッサ2670及び第2プロセッサ2680を含む。プロセッサ2670及び2680のそれぞれは、何らかのバージョンのプロセッサであってもよい。一実施形態において、他の例の中でも特に、2652及び2654は、CXL、QPI、又はUPIなど、シリアル、ポイントツーポイントコヒーレントインターコネクトファブリックの一部である。
【0146】
2つのプロセッサ2670、2680のみを伴うものを示しているが、本開示の範囲は、そのように限定されないことが理解されるはずである。他の実施形態では、所与のプロセッサ内に、1又は複数の追加のプロセッサが存在し得る。
【0147】
プロセッサ2670及び2680は、それぞれ統合されたメモリコントローラユニット2672及び2682を含むように図示されている。プロセッサ2670はまた、そのバスコントローラユニットの一部として、ポイントツーポイント(P-P)インタフェース2676及び2678を含み、同様に、第2プロセッサ2680は、P-Pインタフェース2686及び2688を含む。プロセッサ2670、2680は、ポイントツーポイント(P-P)インタフェース2650を介し、P-Pインタフェース回路2678、2688を用いて情報を交換してよい。
図26に示すように、IMC2672及び2682は、プロセッサをそれぞれのメモリ、すなわち、メモリ2632及び2634に結合し、これらのメモリは、それぞれのプロセッサにローカルで取り付けられたメインメモリの一部分であり得る。
【0148】
プロセッサ2670、2680は、それぞれ、ポイントツーポイントインタフェース回路2676、2694、2686、2698を使用して、個別のP-Pインタフェース2652、2654を介してチップセット2690と情報を交換する。また、チップセット2690は、高性能グラフィックインターコネクト2639を通じて、インタフェース回路2692を介して高性能グラフィック回路2638と情報を交換する。
【0149】
共有キャッシュ(図示せず)を、いずれかのプロセッサの中に、又は、両方のプロセッサの外に含めることができるが、この共有キャッシュは、P-Pインターコネクトを介してプロセッサに接続され、これにより、いずれかのプロセッサの、又は、両方のプロセッサのローカルキャッシュ情報を、プロセッサが低電力モードに入れられた場合に共有メモリに記憶することができる。
【0150】
チップセット2690はインタフェース2696を介して第1バス2616に結合され得る。一実施形態において、第1バス2616は、ペリフェラルコンポーネントインターコネクト(PCI)バス、又は、PCIeバス又は別の第3世代I/Oインターコネクトバスなどのバスであり得るが、本開示の範囲はそのように限定されない。
【0151】
図26に示されるように、多様なI/Oデバイス2614が、第1バス2616に、バスブリッジ2618とともに結合され、このブリッジは、第1バス2616を第2バス2620へと連結する。一実施形態では、第2バス2620は、ローピンカウント(LPC)バスを含む。一実施形態では、例えば、キーボード及び/又はマウス2622、通信デバイス2627、ならびに、ディスクドライブ又は他のマスストレージデバイス等のストレージユニット2628を含めた様々なデバイスが、第2バス2620に結合され、ストレージユニット2628は、命令/コード及びデータ2630をしばしば含む。さらに、第2バス2620に結合されたオーディオI/O2624が示されている。他のアーキテクチャも可能であることに留意されたい。含まれる構成部品アーキテクチャ及びインターコネクトアーキテクチャは、様々である。例えば、
図26のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバスやその他のアーキテクチャを実装してよい。
【0152】
コンピューティングシステムは、コンポーネントの様々な組み合わせを含み得る。これらのコンポーネントは、コンピュータシステムで適合されている、IC、その一部、ディスクリート電子デバイス、もしくは他のモジュール、ロジック、ハードウェア、ソフトウェア、ファームウェア、又はその組み合わせとして、又はコンピュータシステムのシャーシ内に別の方法で組み込まれるコンポーネントとして実装され得る。しかしながら、他の実装では、示されている複数のコンポーネントのうちのいくつかが省略されてよく、更なるコンポーネントが存在してよく、示されているコンポーネントの異なる配置が行われてよいことを理解されたい。結果として、上で説明された解決手段は、本明細書で示される、又は説明されるインターコネクトの1又は複数の任意の部分において実装され得る。
【0153】
一実施形態において、プロセッサは、マイクロプロセッサ、マルチコアプロセッサ、マルチスレッドプロセッサ、超低電圧プロセッサ、組み込みプロセッサ、又は他の既知の処理要素を含む。示される実装において、プロセッサは、システムの様々なコンポーネントの多くと通信するためのメイン処理ユニット及びセントラルハブとして作用する。一例として、プロセッサが、システムオンチップ(SoC)として実装される。特定の説明用の例として、プロセッサは、i3、i5、i7、又は、インテルコーポレーションから入手可能な別のそのようなプロセッサなど、インテル(登録商標)アーキテクチャコア(登録商標)ベースのプロセッサを含む。しかしながら、カリフォルニア州サニーベールのAdvanced Micro Devices, Inc.(AMD)から入手可能なものなどの他の低電力プロセッサ、カリフォルニア州サニーベールのMIPS Technologies, Inc.からのMIPSベース設計、ARM Holdings, Ltd.又はそのカスタマ又はそのライセンシー又は採用者からライセンスされるARMベース設計が代わりに、Apple A5/A6プロセッサ、Qualcomm Snapdragonプロセッサ、又はTI OMAPプロセッサなど他の実施形態に存在し得ると理解されたい。そのようなプロセッサのカスタマバージョンの多くは修正及び変形されるが、しかしながら、それらは、プロセッサライセンサによって説明される定義されたアルゴリズムを実行する特定の命令セットをサポート又は認識し得ることに留意されたい。ここで、マイクロアーキテクチャ実装は変動し得るが、プロセッサのアーキテクチャ機能は通常、一貫している。説明用の例を提供するために、一実装におけるプロセッサのアーキテクチャ及びオペレーションに関する特定の詳細が、下で更に論じられる。
【0154】
一実施形態において、プロセッサはシステムメモリと通信する。説明用の例として、システムメモリの所与の量を提供するために複数のメモリデバイスを介して実施形態が実装され得る。例として、メモリは、電子機器技術評議会(JEDEC)JESD 209-2E(2009年4月に公開)に準拠した現在のLPDDR2規格、又は帯域幅を増やすためにLPDDR2への拡張を提供するであろうLPDDR3もしくはLPDDR4と呼ばれる次世代のLPDDR規格などの、JEDECの低電力ダブルデータレート(LPDDR)ベースの設計に準拠したものであってよい。様々な実装において、個別のメモリデバイスは、単一ダイパッケージ(SDP)、デュアルダイパッケージ(DDP)又はクアッドダイパッケージ(13P)などの異なるパッケージタイプであり得る。いくつかの実施形態では、これらのデバイスをマザーボード上に直接半田付けして薄型化のソリューションを提供し、一方、他の実施形態では、これらのデバイスを、所与のコネクタでマザーボードに結合することになる1又は複数のメモリモジュールとして構成する。言うまでもなく、他のタイプのメモリモジュール、例えば、限定されるわけではないが、microDIMM、MiniDIMMを含む異なる種類のデュアルインラインメモリモジュール(DIMM)などの、他のメモリ実装も可能である。特定の例示的な実施形態では、メモリは、2GBから16GBの間にサイズ設定され、ボールグリッドアレイ(BGA)を介してマザーボード上に半田付けされるDDR3LMパッケージ又はLPDDR2メモリもしくはLPDDR3メモリとして構成されてよい。
【0155】
データ、アプリケーション、1又は複数のオペレーティングシステム及び同様のものなどの情報の永続的ストレージを提供するために、大容量ストレージはまた、プロセッサに結合し得る。様々な実施形態において、この大容量ストレージは、より薄型でより軽量のシステム設計を可能にし、且つ、システム応答性を改善するために、SSDを介して実装されてよい。しかしながら、他の実施形態において、大容量ストレージは主に、SSDキャッシュとして作用するより小さい量のSSDストレージと共に、ハードディスクドライブ(HDD)を使用して実装され得、電源ダウンイベント中にコンテクスト状態及び他のそのような情報の不揮発性ストレージを可能にし、その結果、システムアクティビティの再開時に高速電源アップをできる。フラッシュデバイスが、例えば、シリアルペリフェラルインタフェース(SPI)を介して、プロセッサに結合され得る。このフラッシュデバイスは、基本入出力ソフトウェア(BIOS)とシステムの他のファームウェアとを含む、システムソフトウェアの不揮発性ストレージを提供してよい。
【0156】
様々な実施形態において、システムの大容量ストレージは、もっぱらSSDによって、又は、SSDキャッシュを有するディスクドライブ、光学ドライブ、もしくは他のドライブとして実装される。いくつかの実施形態では、大容量ストレージは、SSDとして、又はリストア(RST)キャッシュモジュールと併せたHDDとして実装される。様々な実装において、HDDは、320GBから4テラバイト(TB)の間及びそれ以上のストレージを提供し、一方、RSTキャッシュは、24GBから256GBの容量を有するSSDを用いて実装される。なお、そのようなSSDキャッシュは、適切なレベルの応答性を提供するために、シングルレベルキャッシュ(SLC)又はマルチレベルキャッシュ(MLC)のオプションとして構成されてよい。SSDのみのオプションでは、モジュールは、例えば、mSATA又はNGFFスロット内の様々な場所に収容されてよい。例として、SSDは、120GBから1TBの範囲の容量を有する。
【0157】
本開示が限られた個数の実施形態に関して説明されたが、当業者であれば、それらからの様々な変更及びバリエーションを理解できよう。添付の特許請求の範囲は、こうした修正形態及び変形形態の全てが本開示の真の趣旨及び範囲に含まれるものとして、これら修正形態及び変形形態を対象にすることを意図している。
【0158】
設計は、作成からシミュレーション、製造まで様々なステージを経てよい。設計を表すデータは、複数の態様で設計を表してよい。まず、シミュレーションでは役に立つので、ハードウェア記述言語又は別の機能記述言語を使用して、ハードウェアを表すことができる。加えて、ロジック及び/又はトランジスタゲートを用いた回路レベルモデルが、設計処理のいくつかのステージで生成されてよい。さらに、ほとんどの設計が、何らかのステージにおいて、ハードウェアモデルにおける様々なデバイスの物理配置を表すデータレベルに達する。従来の半導体製造技術が用いられる場合、ハードウェアモデルを表すデータは、集積回路を製造するために用いられるマスクの異なるマスク層上にある様々な特徴の存在又は不存在を指定するデータであってよい。設計のいかなる表現においても、データは、任意の機械可読媒体の形態で記憶することができる。メモリ、又はディスクなどの磁気又は光ストレージは、情報を送信するよう変調される、又は別の方法で生成される光波又は電波を介して送信されるそのような情報を格納する機械可読媒体であってよい。コード又は設計を示す、又は搬送する電気搬送波が送信される場合、電気信号のコピー、バッファリング又は送信が実行される限りにおいて、新しいコピーが作成される。従って、通信プロバイダ又はネットワークプロバイダは、有形の機械可読媒体に、少なくとも一時的に、搬送波にエンコードされる情報などの項目を格納して、本開示の実施形態の技術を具現化し得る。
【0159】
本明細書で用いられるようなモジュールは、ハードウェア、ソフトウェア、及び/又はファームウェアの任意の組み合わせを指す。一例として、モジュールは、マイクロコントローラによって実行されるよう適合されたコードを格納する非一時的媒体に関連付けられるマイクロコントローラなどのハードウェアを含む。したがって、一実施形態では、モジュールへの言及は、非一時的媒体に保持されるコードを認識及び/又は実行するように具体的に構成されたハードウェアを指す。さらに、別の実施形態では、モジュールの使用とは、予め定められた複数の動作を実行するマイクロコントローラによって実行されるよう具体的に適合させられているコードを含む非一時的媒体を指す。予期され得るように、さらなる別の実施形態において、モジュールという用語(この例において)は、マイクロコントローラ及び非一時的媒体の組み合わせを指してよい。しばしば、別個のものとして示される複数のモジュールの境界は一般に変わり、潜在的に重複する。例えば、第1のモジュール及び第2のモジュールがハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせを共有する一方で、いくつかの独立したハードウェア、ソフトウェア、又はファームウェアを潜在的に維持してもよい。一実施形態では、「ロジック」という語の使用は、トランジスタ、レジスタ等のハードウェア、又は、プログラマブルロジックデバイス等の他のハードウェアを含む。
【0160】
一実施形態において、「に」又は「構成され」という文言の使用は、指定又は決定されるタスクを実行するために装置、ハードウェア、ロジック又は要素を構成、組み合わせ、製造、販売用に提供、輸入及び/又は設計することを指す。この例において、動作していない装置又はその要素は、指定されたタスクを実行するように設計され、結合され、及び/又は相互接続されている場合、依然として、上記の指定されたタスクを実行するよう「構成され」ている。純粋に説明用の例として、ロジックゲートは、動作中0又は1を提供してよい。しかしながら、イネーブル信号をクロックに提供するよう「構成され」たロジックゲートは、1又は0を提供し得るあらゆる潜在的ロジックゲートを含まない。代わりに、当該ロジックゲートは、動作中に1又は0出力が当該クロックを有効にするよう何らかの態様で連結されたものである。再びであるが、「構成され」という用語の使用は、オペレーションを必要としないが、代わりに、装置、ハードウェア及び/又は要素の隠れた状態に重点を置いていることに留意されたい。隠れた状態では、装置、ハードウェア及び/又は要素は、装置、ハードウェア及び/又は要素が動作している場合に特定のタスクを実行するように設計されている。
【0161】
さらに、一実施形態において、「可能/する」又は「動作可能」という文言の使用は、装置、ロジック、ハードウェア及び/又は要素を指定される態様で用いることを可能にするように設計された何らかの装置、ロジック、ハードウェア及び/又は要素を指す。一実施形態において、する、可能又は動作可能という文言の使用は、装置、ロジック、ハードウェア及び/又は要素の隠れた状態を指し、その場合、当該装置、当該ロジック、当該ハードウェア及び/又は当該要素は、動作していないが、装置を指定された態様で用いることを可能にするように設計されていることに上記同様留意されたい。
【0162】
本明細書において用いられる値は、数、状態、論理状態又はバイナリ論理状態の任意の既知の表現を含む。しばしば、ロジックレベル、ロジック値又は論理値の使用は、「1の」及び「0の」とも称され、単にバイナリロジック状態を表す。例えば、1は高ロジックレベルを指し、0は低ロジックレベルを指す。一実施形態において、トランジスタセル又はフラッシュセルなどのストレージセルは、単一の論理値又は複数の論理値を保持可能であってよい。しかしながら、コンピュータシステムにおける値の他の表現が用いられている。例えば、10進数の10は、バイナリ値2510として、16進数では文字Aとして、表されてよい。したがって、値は、コンピュータシステムに保持できる情報の任意の表現を含む。
【0163】
さらに、状態は、値又は値の部分により表され得る。例として、論理1などの第1の値はデフォルト状態又は初期状態を表し得るが、論理ゼロなどの第2の値は非デフォルト状態を表し得る。加えて、一実施形態においてリセット及び設定という用語は、デフォルト値及び更新値又は状態をそれぞれ指す。例えば、デフォルト値は潜在的に高論理値、例えば、リセットを含み、これに対して更新値は潜在的に低論理値、例えば、設定を含む。任意の数の状態を表すために、複数の値の任意の組み合わせが利用され得ることに留意されたい。
【0164】
上記に記載の方法、ハードウェア、ソフトウェア、ファームウェア、又はコードの実施形態は、処理要素により実行可能な、機械アクセス可能、機械可読、コンピュータアクセス可能、又はコンピュータ可読媒体上で格納される命令又はコードを介して実装され得る。非一時的機械アクセス可能/可読媒体は、コンピュータや電子システム等の機械によって読み取り可能な形態で情報を提供する(例えば、格納及び/又は送信する)任意の機構を有する。例えば、非一時的機械アクセス可能媒体には、静的RAM(SRAM)又は動的RAM(DRAM)等のランダムアクセスメモリ(RAM)と、ROMと、磁気又は光ストレージ媒体と、フラッシュメモリデバイスと、電気ストレージデバイスと、光学ストレージデバイスと、アコースティックストレージデバイスと、一時的な(伝搬される)信号(例えば、搬送波、赤外線信号、デジタル信号)から受信される情報を保持するための他の形式のストレージデバイス等が含まれ、これらの非一時的機械アクセス可能媒体は、これら媒体から情報を受信することができる非一時的媒体とは区別されるべきである。
【0165】
ロジックをプログラムして本開示の実施形態を実行するために用いられる命令が、DRAM、キャッシュ、フラッシュメモリ又は他のストレージなど、システムにおけるメモリ内に格納されてよい。さらに、命令はネットワークを介して、又は他のコンピュータ可読媒体を用いて配布され得る。従って、機械可読媒体は、機械(例えば、コンピュータ)により読み取り可能な形式で情報を格納又は送信するための任意の機構を含み得るが、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスク、リードオンリメモリ(CD-ROM)、及び磁気光ディスクリードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、電気消去可能プログラマブルリードオンリメモリ(EEPROM)、磁気カードもしくは光カード、フラッシュメモリ、又は電気、光、音波又は他の形式の伝搬信号(例えば、搬送波、赤外線信号、デジタル信号等)を介したインターネットでの情報の送信において用いられる有形の機械可読ストレージに限定されない。従って、コンピュータ可読媒体は、機械(例えば、コンピュータ)により読み取り可能な形式で電子命令又は情報を格納又は送信するのに好適な任意のタイプの有形の機械可読媒体を含む。
【0166】
以下の例は、本明細書に係る実施形態に関する。
例1は、入出力(I/O)インターコネクトプロトコルを実装するためのプロトコル回路、ここで、前記I/Oインターコネクトプロトコルは、フリットモード及び非フリットモードを含み、ここで、前記フリットモードのときにフリットモードヘッダフォーマットのセットが使用され、前記非フリットモードのときに非フリットモードヘッダフォーマットのセットが使用され、前記非フリットモードヘッダフォーマットのセットは、1又は複数の非フリットモードフィールドを含む;及び
ファブリックに結合するためのインタフェースを実装するためのインタフェース回路、ここで、前記インタフェース回路は、
前記非フリットモードに対してリンクがトレーニングされると決定し;
前記フリットモードヘッダフォーマットのセットに従ってヘッダを生成し、ここで、前記ヘッダは、対応するパケットが非フリットモードパケットとして生じたことを示すためのフィールドを含み、前記フリットモードヘッダフォーマットのセットの1又は複数のフィールドは、前記1又は複数の非フリットモードフィールドを搬送するために前記ヘッダにおいて再利用され;及び
前記インタフェースを通じて前記ヘッダを送信する、
を備える装置である。
【0167】
例2は、例1の主題を含み、ここで、1又は複数の非フリットモードフィールドは、フリットモードヘッダフォーマットのセットに含まれない。
【0168】
例3は、例1~2のいずれか1つの主題を含み、ここで、I/Oインターコネクトプロトコルは、ロード/ストアインターコネクトプロトコルを含む。
【0169】
例4は、例3の主題を含み、ここで、前記I/Oインターコネクトプロトコルは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)ベースプロトコル又はコンピュートエクスプレスリンク(CXL)ベースプロトコルの1つを含む。
【0170】
例5は、例1~4のいずれか1つの主題を含み、ここで、前記インタフェースは、
複数の物理レーンの第1サブセット上に実装されるヘッダチャネル、ここで、前記レーンの第1サブセットは、前記インターコネクトプロトコルに基づいてパケットヘッダを搬送するための第1レーン、及び、前記パケットヘッダについてのメタデータを搬送するための第2レーンを含む;及び
前記複数の物理レーンの別個の第2サブセット上に実装されるDATAチャネル、ここで、レーンの前記第2サブセットは、パケットペイロードを搬送するための第3レーン、及び、前記パケットペイロードについてのメタデータを搬送するための第4レーンを含む、
を含み、
ここで、前記ヘッダは前記ヘッダチャネルを通じて送信される。
【0171】
例6は、例1~5のいずれか1つの主題を含み、ここで、フリットモード及び非フリットモードは、PCIeベースのプロトコルに基づく。
【0172】
例7は、例6の主題を含み、ここで、前記1又は複数の非フリットモードフィールドは、マッピングに基づいて、前記フリットモードヘッダフォーマットのセットの前記1又は複数のフィールドにおいて搬送される。
【0173】
例8は、例6~7のいずれか1つの主題を含み、ここで、前記フリットモードヘッダフォーマットのセットは、1又は複数の直交内容ヘッダを含み、前記1又は複数の直交内容ヘッダの特定の1つにおける特定のフィールドは、前記1又は複数の非フリットモードフィールドにおける特定のフィールドを保持する。
【0174】
例9は、例6~8のいずれか1つの主題を含み、ここで、前記フリットモードヘッダフォーマットのセットは、1又は複数のプレフィックスを含み、前記1又は複数のプレフィックスの特定の1つにおける特定のフィールドは、前記1又は複数の非フリットモードフィールドにおける特定のフィールドを保持する。
【0175】
例10は、例9の主題を含み、ここで、前記特定のプレフィックスは、前記対応するパケットが非フリットモードパケットとして生じたことを示すためのモードフィールドを含む。
【0176】
例11は、例1~10のいずれか一項の主題を含み、ここで、エンドツーエンド暗号化は、フリットモードに基づいてリンク上で提供される。
【0177】
例12は、例1~11のいずれか一項の主題を含み、ここで、インタフェースは、ストリーミングファブリックインタフェース(SFI)仕様に基づく。
【0178】
例13は、パケットのヘッダを識別する段階、ここで、前記パケットの前記ヘッダは、ロード/ストアインターコネクトプロトコルの非フリットモードフォーマットに基づき、前記ロード/ストアインターコネクトプロトコルは更にフリットモードを定義し;
前記パケットの前記ヘッダのフリットモードバージョンを生成する段階、ここで、前記パケットの前記ヘッダの前記フリットモードバージョンは、フリットモードフォーマットに基づき、前記非フリットモードフォーマットにおける第1サブセットのフィールドがまた、前記フリットモードフォーマットにおいて提供され、前記非フリットモードフォーマットにおける第2サブセットのフィールドは、前記フリットモードフォーマットにおいて除外され、ここで、前記パケットの前記ヘッダの前記フリットモードバージョンを生成することは、前記フリットモードフォーマットにおいて定義される再利用フィールドにおいて、前記第2サブセットのフィールドにおける1又は複数のフィールドを搬送することを含み;
インタフェースを通じて、前記パケットの前記ヘッダの前記フリットモードバージョンをファブリックへ送信する段階、ここで、前記パケットの前記ヘッダの前記フリットモードバージョンは、第1の複数の物理レーン上で実装されるヘッダチャネル上で送信される;及び
前記インタフェースを通じて、前記パケットのペイロードデータを前記ファブリックへ送信する段階、ここで、前記パケットの前記ペイロードデータは、別個の第2の複数の物理レーン上で実装されるDATAチャネル上で送信される、
を備える方法である。
【0179】
例14は、例13の主題を含み、ここで、インタフェースは、SFI仕様に従って定義され、ロード/ストアプロトコルは、PCIe又はCXL.ioの1つを含む。
【0180】
例15は、例13~14のいずれか一項の主題を含む、前記パケットの前記ヘッダの前記フリットモードバージョンは、前記第1の複数の物理レーンの第1サブセット上で送信され、前記方法は、前記ヘッダチャネルの前記第2の複数の物理レーンの第2サブセットを使用して、前記インタフェース上でヘッダメタデータを送信する段階を備える。
【0181】
例16は、例13~15のいずれか1つの主題を含み、ここで、前記インタフェースは、
複数の物理レーンの第1サブセット上に実装されるヘッダチャネル、ここで、前記レーンの第1サブセットは、前記インターコネクトプロトコルに基づいてパケットヘッダを搬送するための第1レーン、及び、前記パケットヘッダについてのメタデータを搬送するための第2レーンを含む;及び
前記複数の物理レーンの別個の第2サブセット上に実装されるDATAチャネル、ここで、レーンの前記第2サブセットは、パケットペイロードを搬送するための第3レーン、及び、前記パケットペイロードについてのメタデータを搬送するための第4レーンを含む、
を含み、
ここで、前記ヘッダは前記ヘッダチャネルを通じて送信される。
【0182】
例17は、例13~16のいずれか一項の主題を含み、ここで、フリットモード及び非フリットモードはPCIeベースのプロトコルに基づく。
【0183】
例18は、例17の主題を含み、ここで、第2サブセットのフィールドは、マッピングに基づいて、フリットモードヘッダフォーマットのセットの1又は複数のフィールドにおいて保持される。
【0184】
例19は、例17~18のいずれか1つの主題を含み、ここで、前記フリットモードヘッダフォーマットのセットは、1又は複数の直交内容ヘッダを含み、前記1又は複数の直交内容ヘッダの特定の1つにおける特定のフィールドは、第2サブセットのフィールドにおける特定のフィールドを保持する。
【0185】
例20は、例17~19のいずれか1つの主題を含み、ここで、前記フリットモードヘッダフォーマットのセットは、1又は複数のプレフィックスを含み、前記1又は複数のプレフィックスの特定の1つにおける特定のフィールドは、前記第2サブセットのフィールドにおける特定のフィールドを保持する。
【0186】
例21は、例20の主題を含み、ここで、前記特定のプレフィックスは、前記対応するパケットが非フリットモードパケットとして生じたことを示すためのモードフィールドを含む。
【0187】
例22は、例13~21のいずれか一項の主題を含み、フリットモードに基づいてエンドツーエンド暗号化を提供することを更に含む。
【0188】
例23は、例13~22のいずれか一項に記載の方法を実行するための手段を含むシステムである。
【0189】
例24は、ファブリック;及び、前記ファブリックを通じて通信可能に結合される複数のコンピュートブロックを備えるシステムであり、ここで、複数のコンピュートブロックにおける特定のコンピュートブロックは、ロード/ストアインターコネクトプロトコルをサポートするためのエージェント回路;及び、ファブリックに結合するためのインタフェースを実装するためのインタフェース回路を含み、ここで、インタフェース回路は、リンクが非フリットモードに対してトレーニングされると判定し;フリットモードヘッダフォーマットのセットに従ってヘッダを生成し、ここで、ヘッダは、対応するパケットが非フリットモードパケットとして生じたことを示すためのフィールドを含み、フリットモードヘッダフォーマットのセットの1又は複数のフィールドは、1又は複数の非フリットモードフィールドを搬送するためにヘッダにおいて再利用され;インタフェースを通じてヘッダを送信する。
【0190】
例25は、例24の主題を含み、インタフェース上で1対多接続を促進するためのバッファレスアービタを更に備える。
【0191】
例26は、例24~25のいずれか一項の主題を含み、コンピュートブロックの第1のものにおいて送信機によって使用される専用クレジットを、コンピュートブロックの第2のものにおいて受信機によって使用される共有クレジットに変換するためのクレジットガスケットを更に備える。
【0192】
例27は、例24~26のいずれか一項の主題を含み、ここで、ファブリックは、システムオンチップ(SoC)デバイスのインターコネクトファブリックを含み、SoCデバイスは複数のコンピュートブロックを含む。
【0193】
例28は、例24~27のいずれか一項の主題を含み、ここで、前記インタフェースは、パケットヘッダを通信するための専用物理レーンのセットを含むヘッダチャネルを含み、前記フリットモードは、前記ヘッダチャネル上で通信されるヘッダのために使用される。
【0194】
例29は、ファブリックを実装するためのファブリック回路を含む装置であり、ファブリックは、入出力(I/O)インターコネクトプロトコルに従って通信をサポートし、前記I/Oインターコネクトプロトコルは、フリットモード及び非フリットモードを含み、ここで、前記フリットモードのときにフリットモードヘッダフォーマットのセットが使用され、前記非フリットモードのときに非フリットモードヘッダフォーマットのセットが使用され、前記非フリットモードヘッダフォーマットのセットは、1又は複数の非フリットモードフィールドを含む;及び
エージェントに結合するためのインタフェースを実装するためのインタフェース回路、ここで、前記インタフェース回路は、
前記非フリットモードに対してリンクがトレーニングされると決定し;
前記フリットモードヘッダフォーマットのセットに従ってヘッダを生成し、ここで、前記ヘッダは、対応するパケットが非フリットモードパケットとして生じたことを示すためのフィールドを含み、前記フリットモードヘッダフォーマットのセットの1又は複数のフィールドは、前記1又は複数の非フリットモードフィールドを搬送するために前記ヘッダにおいて再利用され;及び
前記インタフェースを通じて前記ヘッダを送信する。
【0195】
例30は、例29の主題を含み、ここで、1又は複数の非フリットモードフィールドは、フリットモードヘッダフォーマットのセットに含まれない。
【0196】
例31は、例29~30のいずれか一項の主題を含み、ここで、I/Oインターコネクトプロトコルは、ロード/ストアインターコネクトプロトコルを含む。
【0197】
例32は、例31の主題を含み、ここで、前記I/Oインターコネクトプロトコルは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)ベースプロトコル又はコンピュートエクスプレスリンク(CXL)ベースプロトコルの1つを含む。
【0198】
例33は、例29~32のいずれか1つの主題を含み、ここで、前記インタフェースは、
複数の物理レーンの第1サブセット上に実装されるヘッダチャネル、ここで、前記レーンの第1サブセットは、前記インターコネクトプロトコルに基づいてパケットヘッダを搬送するための第1レーン、及び、前記パケットヘッダについてのメタデータを搬送するための第2レーンを含む;及び
前記複数の物理レーンの別個の第2サブセット上に実装されるDATAチャネル、ここで、レーンの前記第2サブセットは、パケットペイロードを搬送するための第3レーン、及び、前記パケットペイロードについてのメタデータを搬送するための第4レーンを含む、
を含み、
ここで、前記ヘッダは前記ヘッダチャネルを通じて送信される。
【0199】
例34は、例29~33のいずれか一項の主題を含み、ここで、フリットモード及び非フリットモードはPCIeベースのプロトコルに基づく。
【0200】
例35は、例34の主題を含み、ここで、前記1又は複数の非フリットモードフィールドは、マッピングに基づいて、前記フリットモードヘッダフォーマットのセットの前記1又は複数のフィールドにおいて搬送される。
【0201】
例36は、例34~35のいずれか1つの主題を含み、ここで、前記フリットモードヘッダフォーマットのセットは、1又は複数の直交内容ヘッダを含み、前記1又は複数の直交内容ヘッダの特定の1つにおける特定のフィールドは、前記1又は複数の非フリットモードフィールドにおける特定のフィールドを保持する。
【0202】
例37は、例34~36のいずれか1つの主題を含み、ここで、前記フリットモードヘッダフォーマットのセットは、1又は複数のプレフィックスを含み、前記1又は複数のプレフィックスの特定の1つにおける特定のフィールドは、前記1又は複数の非フリットモードフィールドにおける特定のフィールドを保持する。
【0203】
例38は、例37の主題を含み、ここで、前記特定のプレフィックスは、前記対応するパケットが非フリットモードパケットとして生じたことを示すためのモードフィールドを含む。
【0204】
例39は、例34~38のいずれか一項の主題を含み、ここで、エンドツーエンド暗号化は、フリットモードに基づいてリンク上で提供される。
【0205】
例40は、例34~39のいずれか一項の主題を含み、ここで、インタフェースは、ストリーミングファブリックインタフェース(SFI)仕様に基づく。
【0206】
本明細書の全体にわたって、「一実施形態(one embodiment)」又は「実施形態(an embodiment)」への言及は、当該実施形態に関連して説明される特定の特徴、構造又は特性が、本開示の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書を通して様々な箇所における「1つの実施形態において」又は「一実施形態において」という表現の出現は、必ずしもすべてが同一の実施形態を指すとは限らない。さらに、特定の特徴、構造又は特性は、1又は複数の実施形態において、任意の好適な態様で組み合わされてよい。
【0207】
上記の明細書において、詳細な説明が、特定の例示的な実施形態を参照して行われた。
しかしながら、添付の特許請求の範囲で説明されたより広い精神及び範囲から逸脱することなく、多様な修正及び変更をそれらに行ってよいことは明白であろう。従って、本明細書及び図面は、限定的な意味ではなく、例示的な意味で考えられるべきである。更に、実施形態及び他の例示的な言語の上記の使用は、必ずしも同じ実施形態又は同じ例を指しているとは限らず、異なる個別の実施形態及び潜在的に同じ実施形態を指してよい。
他の可能な項目
(項目1)
入出力(I/O)インターコネクトプロトコルを実装するためのプロトコル回路、ここで、前記I/Oインターコネクトプロトコルは、フリットモード及び非フリットモードを含み、ここで、前記フリットモードのときにフリットモードヘッダフォーマットのセットが使用され、前記非フリットモードのときに非フリットモードヘッダフォーマットのセットが使用され、前記非フリットモードヘッダフォーマットのセットは、1又は複数の非フリットモードフィールドを含む;及び
ファブリックに結合するためのインタフェースを実装するためのインタフェース回路、ここで、前記インタフェース回路は、
前記非フリットモードに対してリンクがトレーニングされると決定し;
前記フリットモードヘッダフォーマットのセットに従ってヘッダを生成し、ここで、前記ヘッダは、対応するパケットが非フリットモードパケットとして生じたことを示すためのフィールドを含み、前記フリットモードヘッダフォーマットのセットの1又は複数のフィールドは、前記1又は複数の非フリットモードフィールドを搬送するために前記ヘッダにおいて再利用され;及び
前記インタフェースを通じて前記ヘッダを送信する、
を備える装置。
(項目2)
前記1又は複数の非フリットモードフィールドは、前記フリットモードヘッダフォーマットのセットに含まれない、項目1に記載の装置。
(項目3)
前記I/Oインターコネクトプロトコルは、ロード/ストアインターコネクトプロトコルを含む、項目1に記載の装置。
(項目4)
前記I/Oインターコネクトプロトコルは、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)ベースプロトコル又はコンピュートエクスプレスリンク(CXL)ベースプロトコルの1つを含む、項目3に記載の装置。
(項目5)
前記インタフェースは:
複数の物理レーンの第1サブセット上に実装されるヘッダチャネル、ここで、レーンの前記第1サブセットは、前記インターコネクトプロトコルに基づいてパケットヘッダを搬送するための第1レーン、及び、前記パケットヘッダについてのメタデータを搬送するための第2レーンを含む;及び
前記複数の物理レーンの別個の第2サブセット上に実装されるデータチャネル、ここで、レーンの前記第2サブセットは、パケットペイロードを搬送するための第3レーン、及び、前記パケットペイロードについてのメタデータを搬送するための第4レーンを含む、
を含み、
ここで、前記ヘッダは前記ヘッダチャネルを通じて送信される、項目1に記載の装置。
(項目6)
前記フリットモード及び前記非フリットモードは、PCIeベースのプロトコルに基づく、項目1に記載の装置。
(項目7)
前記1又は複数の非フリットモードフィールドは、マッピングに基づいて、前記フリットモードヘッダフォーマットのセットの前記1又は複数のフィールドにおいて搬送される、項目6に記載の装置。
(項目8)
前記フリットモードヘッダフォーマットのセットは、1又は複数の直交内容ヘッダを含み、前記1又は複数の直交内容ヘッダの特定の1つにおける特定のフィールドは、前記1又は複数の非フリットモードフィールドにおける特定のフィールドを保持する、項目6に記載の装置。
(項目9)
前記フリットモードヘッダフォーマットのセットは、1又は複数のプレフィックスを含み、前記1又は複数のプレフィックスの特定の1つにおける特定のフィールドは、前記1又は複数の非フリットモードフィールドにおける特定のフィールドを保持する、項目6に記載の装置。
(項目10)
前記特定のプレフィックスは、前記対応するパケットが非フリットモードパケットとして生じたことを示すためのモードフィールドを含む、項目9に記載の装置。
(項目11)
エンドツーエンド暗号化が前記フリットモードに基づいて前記リンク上で提供される、項目1に記載の装置。
(項目12)
前記インタフェースは、ストリーミングファブリックインタフェース(SFI)仕様に基づく、項目1に記載の装置。
(項目13)
パケットのヘッダを識別する段階、ここで、前記パケットの前記ヘッダは、ロード/ストアインターコネクトプロトコルの非フリットモードフォーマットに基づき、前記ロード/ストアインターコネクトプロトコルは更にフリットモードを定義し;
前記パケットの前記ヘッダのフリットモードバージョンを生成する段階、ここで、前記パケットの前記ヘッダの前記フリットモードバージョンは、フリットモードフォーマットに基づき、前記非フリットモードフォーマットにおける第1サブセットのフィールドがまた、前記フリットモードフォーマットにおいて提供され、前記非フリットモードフォーマットにおける第2サブセットのフィールドが、前記フリットモードフォーマットにおいて除外され、ここで、前記パケットの前記ヘッダの前記フリットモードバージョンを生成することは、前記フリットモードフォーマットにおいて定義される再利用フィールドにおいて、前記第2サブセットのフィールドにおける1又は複数のフィールドを搬送することを含み;
インタフェースを通じて、前記パケットの前記ヘッダの前記フリットモードバージョンをファブリックへ送信する段階、ここで、前記パケットの前記ヘッダの前記フリットモードバージョンは、第1の複数の物理レーン上で実装されるヘッダチャネル上で送信される;及び
前記インタフェースを通じて、前記パケットのペイロードデータを前記ファブリックへ送信する段階、ここで、前記パケットの前記ペイロードデータは、別個の第2の複数の物理レーン上で実装されるデータチャネル上で送信される、
を備える方法。
(項目14)
前記インタフェースは、SFI仕様に従って定義され、前記ロード/ストアプロトコルは、PCIe又はCXL.ioの1つを含む、項目13に記載の方法。
(項目15)
前記パケットの前記ヘッダの前記フリットモードバージョンは、前記第1の複数の物理レーンの第1サブセット上で送信され、前記方法は、
前記ヘッダチャネルの前記第2の複数の物理レーンの第2サブセットを使用して、前記インタフェース上でヘッダメタデータを送信する段階
を備える、項目13に記載の方法。
(項目16)
ファブリック;及び
前記ファブリックを通じて通信可能に結合される複数のコンピュートブロック、ここで、前記複数のコンピュートブロックにおける特定のコンピュートブロックは:
ロード/ストアインターコネクトプロトコルをサポートするエージェント回路、ここで、前記ロード/ストアプロトコルはフリットモード及び非フリットモードをサポートし、前記フリットモードのとき、フリットモードヘッダフォーマットのセットが使用され、前記非フリットモードのとき、非フリットモードヘッダフォーマットのセットが使用され、前記非フリットモードヘッダフォーマットのセットは、1又は複数の非フリットモードフィールドを含み;及び
前記ファブリックに結合するためのインタフェースを実装するためのインタフェース回路、ここで、前記インタフェース回路は:
リンクが前記非フリットモードに対してトレーニングされると決定し;
前記フリットモードヘッダフォーマットのセットに従ってヘッダを生成し、ここで、前記ヘッダは、対応するパケットが非フリットモードパケットとして生じたことを示すためのフィールドを含み、前記フリットモードヘッダフォーマットのセットの1又は複数のフィールドは、前記1又は複数の非フリットモードフィールドを搬送するために前記ヘッダにおいて再利用される;及び
前記インタフェースを通じて前記ヘッダを送信する
を含む、
を備えるシステム。
(項目17)
前記インタフェース上の1対多接続を促進するためのバッファレスアービタを更に備える、項目16に記載のシステム。
(項目18)
前記コンピュートブロックの第1のものにおいて送信機によって使用される専用クレジットを、前記コンピュートブロックの第2のものにおいて受信機によって使用される共有クレジットに変換するためのクレジットガスケットを更に備える、項目16に記載のシステム。
(項目19)
前記ファブリックは、システムオンチップ(SoC)デバイスのインターコネクトファブリックを含み、前記SoCデバイスは、前記複数のコンピュートブロックを含む、項目16に記載のシステム。
(項目20)
前記インタフェースは、パケットヘッダを通信するための専用物理レーンのセットを含むヘッダチャネルを含み、前記フリットモードは、前記ヘッダチャネル上で通信されるヘッダのために使用される、項目16に記載のシステム。
【外国語明細書】