JP6548756B2 - 方法 - Google Patents

方法 Download PDF

Info

Publication number
JP6548756B2
JP6548756B2 JP2018007733A JP2018007733A JP6548756B2 JP 6548756 B2 JP6548756 B2 JP 6548756B2 JP 2018007733 A JP2018007733 A JP 2018007733A JP 2018007733 A JP2018007733 A JP 2018007733A JP 6548756 B2 JP6548756 B2 JP 6548756B2
Authority
JP
Japan
Prior art keywords
data units
buffer
data
interleaved
fabric
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018007733A
Other languages
English (en)
Other versions
JP2018082500A (ja
Inventor
ディー. ロベット、トーマス
ディー. ロベット、トーマス
エス. チェン、アルバート
エス. チェン、アルバート
エス. ビリッテラ、マーク
エス. ビリッテラ、マーク
エイ. クンズ、ジェイムス
エイ. クンズ、ジェイムス
エム. リマー、トッド
エム. リマー、トッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2018082500A publication Critical patent/JP2018082500A/ja
Application granted granted Critical
Publication of JP6548756B2 publication Critical patent/JP6548756B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/821Prioritising resource allocation or reservation requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0071Use of interleaving
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L25/00Baseband systems
    • H04L25/02Details ; arrangements for supplying electrical power along data transmission lines
    • H04L25/14Channel dividing arrangements, i.e. in which a single bit stream is divided between several baseband channels and reassembled at the receiver
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/36Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
    • H04L47/365Dynamic adaptation of the packet size
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/621Individual queue per connection or flow, e.g. per VC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6275Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority

Description

高性能計算(HPC)は、近年、使用および関心が実質的に高まっている。歴史的には、HPCは一般に、いわゆる「スーパーコンピュータ」に関連していた。「スーパーコンピュータ」は1960年代に導入され、主としてControl Data Corporation(CDC)のSeymour Cray、Cray Research、およびCrayの名およびモノグラムを有する後継の複数の企業により最初に、そして数十年に渡って製造された。1970年代のスーパーコンピュータは、若干のプロセッサのみを用いたが、1990年代には数千のプロセッサを伴ったマシンが出現し始め、より近年は、数百数千の「既製の」プロセッサを伴う大規模並列処理スーパーコンピュータが実装されている。
多くのタイプのHPCアーキテクチャは、実装されると共に研究向けであり、様々なレベルのスケールおよび性能を有する。しかし、共通の話題は、並列の形で複数のタスクを協調的に実行する、プロセッサおよび/またはプロセッサコア等の多くの計算ユニットの相互接続である。近年のシステムオンチップ(SoC)の複数の設計および提案に基づき、2次元(2D)アレイ、トーラス、リング、または他の構成を用いて、数十のプロセッサコア等が1つのSoC上に実装されている。更に、複数の研究者は、数百もしくは更に数千のプロセッサコアが3Dアレイにおいて相互接続された3DのSoCを提案してきた。また、別個のマルチコアプロセッサおよびSoCは、サーバボード上に密接して配置され得、これにより漸次、バックプレーン等を介して通信しつつ相互接続される。別の共通な手法は、通常は2Dアレイで構成された複数のサーバ(例えば、ブレードサーバおよびモジュール)のラック内で複数の計算ユニットを相互接続することである。世界の最速スーパーコンピュータであると言われるIBMのセコイアは、2Dアレイの96ラックのサーバブレード/モジュールを備え、合計で1,572,864コアになり、ピーク性能下で動作すると、7.9メガワットも消費する。
HPCの複数の性能ボトルネックのうちの1つは、複数の計算ノード間の相互接続を介してデータを転送することから生じるレイテンシである。通常、複数の相互接続は、相互接続階層の構造になっており、最高速度、および複数のプロセッサ/SoC内の最も短い相互接続が階層の上部にあるが、階層レベルを降るにつれてレイテンシは、増大する。例えば、プロセッサ/SoCレベルに次いで、相互接続階層は、プロセッサ間の相互接続レベル、基板間の相互接続レベル、および個々の複数のサーバもしくは個々の複数のサーバのアグリゲーションを他の複数のラックのサーバ/アグリゲーションと接続する1もしくは複数の追加のレベルを含み得る。
1または複数のレベルの相互接続階層が異なる複数のプロトコルを使用するのは通常のことである。例えば、SoC内の複数の相互接続は通常、独占的であるが、階層における下方のレベルは、独占的または規格化された複数の相互接続を使用し得る。また、異なる複数の相互接続レベルは通常、異なる複数の物理(PHY)レイヤを実装する。結果として、複数の相互接続レベル間にいくつかのタイプの相互接続ブリッジを使用することが必要である。更に、複数の異種の計算環境が実装される場合には、ブリッジは、所与の相互接続レベル内で必要となることがある。
複数の下方レベルの相互接続階層において、イーサネット(登録商標)(様々なIEEE802.3規格において規定される)等の規格化された複数の相互接続、およびインフィニバンドが用いられる。PHYレイヤにおいて、これらの規格の各々は、ワイヤケーブルおよびバックプレーンを介するなどした複数の有線接続、ならびに光学リンクをサポートする。イーサネット(登録商標)は、OSI7階層モデルにおけるリンクレイヤ(レイヤ2)に実装され、基本的にはリンクレイヤプロトコルとみなされる。複数のインフィニバンド規格は、OSI階層1〜4をカバーするインフィニバンドの様々なOSI階層の態様を規定する。
高い性能のファブリックは、各タイプがレイテンシに対する異なる複数の要求を有し得る、異なる複数のタイプのトラフィックを搬送し得る。具体的には、いくつかのトラフィックは、レイテンシが重大でない、非常に大きなメッセージからなり得、いくつかのトラフィックは、レイテンシが直接にアプリケーションの性能に影響する小さい複数のメッセージからなり得る。多くの場合、ファブリックの複数のノードにおいて実行されるアプリケーションの性能は、タスクを完了させるクラスタにおける最後のノードの完了時間により決定される。これらのアプリにおいて、これらのレイテンシに敏感なメッセージに対する低い最小および平均のレイテンシを有することが重要であり、これらのメッセージに対する低い最大レイテンシを有することは同様に重要である。レイテンシジッタと称する最小レイテンシと最大レイテンシとの間の分散は、小さくなるべきである。
複数の小さいメッセージおよび大きいメッセージがファブリックにおいてミックスされる場合、小さいメッセージは、大きいパケットが送信を開始すると、スイッチポートに到達したときに大きいパケットと衝突することがある。従来のファブリックにおいて、小さいメッセージは、大きいメッセージが完了するまで送信され得ない。これは、小さいパケットに見られるスイッチレイテンシを増大させ、レイテンシジッタを著しく増大させる。
多くのファブリックは、複数の大きいパケットの最大サイズを制限し、従って衝突により生じる遅延を限定することにより、この問題に対処する。この解決策は、ファブリックの効率に悪影響を及ぼす。小さいパケットは、メッセージを搬送するのに、より多くのパケットが必要とされ、各パケットはパケットヘッダを必要とすることを意味するので、所与のメッセージを搬送するのに、より多くの合計ビットが必要とされる。
時間的に重大なものと時間的に重大でないもの2つのクラスのトラフィックを規定し、時間的に重大な複数のフレームが時間的に重大でない複数のフレームを先取りすることを可能にすることにより、イーサネット(登録商標)におけるこの問題に対処する複数の提案がなされている。異なる複数の提案は、先取りフレームが先取り後に再起動し、または先取り後に再開することを可能にし、再開は好ましい選択肢である。
前述の複数の態様、および本発明の付随する利点の多くは、添付の図面と併せて以下の詳細な説明を参照することにより、より良く理解され、より容易に理解されるであろう。同一の参照番号は、別途指定されない限り、様々な図面を通して同一の部分を指す。
一実施形態による、ファブリックアーキテクチャの様々なコンポーネントおよび相互接続を備えるシステムの高レベル図を図示する概略図である。 一実施形態による、複数のファブリックリンクを介してデータを転送するための複数のアーキテクチャレイヤを図示する概略図である。 バンドルにグループ化された複数のフリットを図示する概略図である。 一実施形態による、ファブリックパケットの構造を図示する概略図である。 一実施形態による、標準的検出LTPのデータ構造体を図示する図である。 一実施形態による、14ビットCRC LTPのデータ構造体を図示する図である。 一実施形態による、強化検出LTPのデータ構造体を図示する図である。 一実施形態による、標準的検出検出Null LTPのデータ構造体を図示する図である。 一実施形態による、標準的検出LTPの複数のフリットがリンクファブリックと複数のリンク転送サブレイヤとの間のインターフェースでパラレルに2つとも一度に処理される、4レーンリンクの送信スキームの実施形態を図示する図である。 一実施形態による、強化検出LTPの複数のフリットがリンクファブリックと複数のリンク転送サブレイヤとの間のインターフェースでパラレルに2つとも一度に処理される、4レーンリンクの送信スキームの実施形態を図示する図である。 一実施形態による、2つのフリットがリンクファブリックと複数のリンク転送サブレイヤとの間のインターフェースでパラレルに2つとも一度に処理される、4レーンリンクを介して2つの制御ビットによる14ビットCRC LTPの送信を図示する概略図である。 一実施形態による、互いに連結した2つの4レーンリンクを備える8レーンデータ経路を介してパラレルに2つの制御ビットによる2つの14ビットCRC LTPの送信を図示する概略図である。 一実施形態による、4レーンを使用する2つのリンクポート間の双方向データ送信の一例を図示する概略図である。 別個の複数の仮想レーンを介して送信された2つのFPから複数のファブリックパケットフリットをインターリーブする一実施形態の例を図示する図である。 一実施形態による、プッシュおよびポップのインターリーブの使用を図示する図である。 一実施形態による、プッシュおよびポップのインターリーブの組み合わせ、ならびにVLマーカインターリーブの使用を図示する図である。 一実施形態による、別個の複数の優先度レベルを有する複数のVLに対応する3つの別個のVL FIFOにおいてバッファ処理された3つの別個のファブリックパケットから、複数のフリットを先取りインターリーブする一例を図示する組み合わせた概略図およびタイムフロー図である。 一実施形態による、2つのVLが優先度レベルを共有し、他のVLがより高い優先度レベルを有する3つの別個のVL FIFOにおいてバッファ処理された3つのファブリックパケットから、複数のフリットをバブルインターリーブおよび先取りインターリーブする一例を図示する組み合わせた概略図およびタイムフロー図である。 一実施形態による、複数のLTPレーンおよび不規則なレーンを検出することを目的とするLTP送信スキームの送信、ならびに1レーン当たりのCRCおよびLTP CRCの使用を図示する概略図であり、LTP送信スキームにおける複数のLTPの元の送信を図示する 一実施形態による、複数のLTPレーンおよび不規則なレーンを検出することを目的とするLTP送信スキームの送信、ならびに1レーン当たりのCRCおよびLTP CRCの使用を図示する概略図であり、再生バッファを用いるLTP送信ストリームにおける複数のLTPの再送信を図示する 一実施形態による、複数の再生バッファLTPが上書きされるのを防止することを目的とする、複数の再試行マーカおよびラウンドトリップマーカの使用を図示する概略図である。 一実施形態による、33の転送グループ(XFR)を用いる標準的検出LTPの送信を図示する図である。 一実施形態による、33の32ビットXFRおよび4つのLTPシーケンス状態を用いる4レーンリンク全体に渡る複数のLTPの送信を図示する図である。 一実施形態による、8バイトのデータを含むフリットデータおよび65番目のビットが、33の32ビットXFRを用いる4レーンリンクを介してどのように転送されるかを図示する図である。 集合的に、一実施形態による、再生バッファによる複数の黙示的ACKを用いてリンクレベルにおける信頼できるLTP送信を促す複数のオペレーションおよびロジックを図示するフローチャートであり、複数の不規則なレーンを検出する複数のオペレーションおよびロジックも図示する。 集合的に、一実施形態による、再生バッファによる複数の黙示的ACKを用いてリンクレベルにおける信頼できるLTP送信を促す複数のオペレーションおよびロジックを図示するフローチャートであり、複数の不規則なレーンを検出する複数のオペレーションおよびロジックも図示する。 集合的に、一実施形態による、再生バッファによる複数の黙示的ACKを用いてリンクレベルにおける信頼できるLTP送信を促す複数のオペレーションおよびロジックを図示するフローチャートであり、複数の不規則なレーンを検出する複数のオペレーションおよびロジックも図示する。 集合的に、一実施形態による、再生バッファによる複数の黙示的ACKを用いてリンクレベルにおける信頼できるLTP送信を促す複数のオペレーションおよびロジックを図示するフローチャートであり、複数の不規則なレーンを検出する複数のオペレーションおよびロジックも図示する。 集合的に、一実施形態による、再生バッファによる複数の黙示的ACKを用いてリンクレベルにおける信頼できるLTP送信を促す複数のオペレーションおよびロジックを図示するフローチャートであり、複数の不規則なレーンを検出する複数のオペレーションおよびロジックも図示する。 一実施形態による、トランスミッタの状態図である。 一実施形態による、レシーバの状態図である。 一実施形態による、XFRグループベースで算出および格納される1レーン当たりのCRCの図である。 1レーン当たりのCRCが、第1のLTPシーケンス状態下における不良LTPの元の送信、および第3のLTPシーケンス状態下における再生バッファからの不良LTPの再送信の間に算出される、図18Aおよび18Bの例において、XFRグループごとのベースで格納される例示的な1レーン当たりのCRC計算を示す図である。 一実施形態による、11のXFRがパラレルに1レーン毎に転送される、3つのレーンを介した標準的検出LTPの転送を図示する図である。 一実施形態による、17のXFRが転送され、複数のレーンのうち1つおよび16XFRが他のレーンを介して送信される、2つのレーンを介する標準的検出LTPの転送を図示し、2つのLTPシーケンス状態を使用する図である。 一実施形態による、33の32ビットXFRを用いた1つのレーンを介する標準的検出LTPの送信を図示する図である。 一実施形態による、HFIを含むシステムの概略図である。
本明細書において,複巣の高性能ファブリック内に柔軟なクレジット交換を実装するための複数の方法、装置、およびシステムの複数の実施形態が説明される。以下の詳細な説明において、多数の具体的な詳細が記載され、本発明の複数の実施形態の完全な理解を提供する。しかし、当業者は、本発明が特定の詳細のうち1または複数を用いず、または他の複数の方法、構成要素、材料等を用いて、実施され得ることを理解するであろう。他の例において、本発明の複数の態様を不明瞭にすることを回避るべく、周知の複数の構造、材料、または動作は示されておらず、または詳細に説明されていない。
本明細書を通して「一実施形態」または「実施形態」に言及する場合、その実施形態に関連して説明された特定の特徴、構造、または特性が、本発明の少なくとも一実施形態に含まれることを意味する。従って、本明細書を通して、様々な箇所における「一実施形態において」または「ある実施形態において」という文言が現れても、必ずしも全てが同一の実施形態を指している訳ではない。更に、複数の特定の特徴、構造、または特性は、1または複数の実施形態において、任意の好適な形で組み合わせ得る。
明確にするために言うならば、本明細書の図面における個々の複数のコンポーネントは、特定の参照番号によってではなく、図面におけるラベルにより言及され得る。更に、特定のタイプのコンポーネントを参照する複数の参照番号(特定のコンポーネントと異なる)は、「(typ)」の後の参照番号により示され、「典型的」なものを意味することがある。これらのコンポーネントの構成は、図面において示されるが、簡潔にして明確にするべくラベリングされていない類似のコンポーネントに典型的であることが理解されるであろう。逆に、「(typ)」は、コンポーネント、要素等が通常、開示される機能、実装、目的等に用いられることを意味するものと解釈されない。
本明細書において説明される複数の実施形態の態様によれば、メッセージを送信する、交換サーバ相互接続ネットワークを規定するアーキテクチャが提供される。アーキテクチャは、OSIネットワークモデルのレイヤ1および2に及び、レイヤ3のIETFインターネットプロトコルを活用し、アーキテクチャのレイヤ4に対する新しい仕様および活用された仕様の組み合わせを含む。
アーキテクチャは、スーパーコンピュータ等の正式の規定による、または単純に、クラウドコンピューティングにおいて多くの場合にそうであるように、複数のサーバが実行する複数のメッセージ送信アプリケーションによるある種の調整された形でのサーバのグループもしくはクラスタの機能等の関連による論理的メッセージ送信構成を備える、複数のCPUおよび他のサブシステムを相互接続するように実装され得る。相互接続された複数のコンポーネントは、ノードと呼ばれる。また、アーキテクチャは、SoC、マルチチップモジュール等と複数のプロセッサノードを相互接続するように実装され得る。ホストと称するノードの1つのタイプは、ユーザモードソフトウェアを実行するタイプである。一実施形態において、ホストは、コヒーレントドメインにおけるコアもしくはCPUの数に関わらず、1つのキャッシュのコヒーレントメモリドメインを備え、様々なローカルI/Oおよびストレージサブシステムを含み得る。ホストが実行するソフトウェアのタイプは、ユーザアプリケーションノード、またはストレージもしくはファイルサーバ等のより特化機能を規定し得、より詳細なシステムアーキテクチャを説明するのに役立つ。
トップレベルにおいて、アーキテクチャは、以下の複数のコンポーネントを規定する。・ホストファブリックインターフェース(HFI)・リンク・スイッチ・ゲートウェイ・包括的管理モデル
ノードがファブリックに取り付けられ、他の複数のサーバもしくはデバイスに対するパケットを送信および受信できるように、ホストファブリックインターフェースは、最低でも、アーキテクチャの物理およびリンクレイヤを実装するロジックからなる。HFIは、オペレーティングシステムおよびVMM(仮想マシンマネージャ)のサポートのための複数の適切なハードウェアインターフェースおよびドライバを含む。HFIは、複数の上位レイヤプロトコルおよび/または複数のトランスポートプロトコルのオフロードを実行もしくは加速するために特化されたロジックも含み得る。また、HFIは、複数のネットワーク管理コンポーネントからのメッセージに応答するロジックを含む。各ホストは、HFIを介してアーキテクチャファブリックに接続される。
リンクは、HFIをスイッチに、スイッチを他のスイッチに、またはスイッチをゲートウェイに接続する全二重でポイントツーポイントの相互接続である。リンクは、回路基板トレース、銅ケーブル、または光ケーブルにおいて異なる物理的構成を有しえる。一実施形態において、PHY(物理レイヤ)、ケーブル、およびコネクタ戦略の複数の実装は、イーサネット(登録商標)、具体的には100GbE(IEEE802.3bjドラフト規格(現在のドラフト2.2)に規定されるイーサネット(登録商標)リンク等、100ギガビット/秒のイーサネット(登録商標))の実装に従う。アーキテクチャは柔軟であり、100GbEの帯域幅を超え得る将来のイーサネット(登録商標)または他の複数のリンク技術を用いることをサポートする。ハイエンドスーパーコンピュータ製品は、特定目的の(より高い帯域幅)PHYに用いられることがあり、これらの構成のために、複数のアーキテクチャ製品との相互運用性は、異なる複数のPHYによる複数のポートを有するスイッチに基づく。
スイッチはOSI階層2のコンポーネントであり、アーキテクチャの管理インフラストラクチャにより管理される。アーキテクチャはIPドメインの何も指定せず、IP関連デバイスを管理しないが、アーキテクチャは、インターネットプロトコルをOSI階層3もしくはインターネットワーキング層として規定する。アーキテクチャファブリックと外部ネットワーク、特にイーサネット(登録商標)との間の接続をサポートする複数のデバイスは、ゲートウェイと呼ばれる。軽量ゲートウェイは、低い機能を提供することがあり、イーサネット(登録商標)のレイヤ2で忠実に動作する。フル機能のゲートウェイは、レイヤ3またはこれ以上で動作し、従ってルータとして動作し得る。アーキテクチャにより提供される複数のゲートウェイ明細書は、イーサネット(登録商標)カプセル化、および、ゲートウェイがファブリック上で動作し、残余のアーキテクチャと矛盾しない、イーサネット(登録商標)データセンタネットワークに対する柔軟な接続をどのように可能にし得るかの複数のメカニズムを含む。IPをインターネットワーキングプロトコルとして用いることにより、IETFにより許可されたトランスポート、すなわちTCP、UDP、およびSCTPを用いてアーキテクチャのファブリックを越えて複数のメッセージを送信および受信することを可能にする。
図1は、一実施形態による、アーキテクチャの様々なコンポーネントおよび相互接続を図示するシステム100のハイレベル図を示す。アーキテクチャの中央の機能はファブリック102であり、これは、複数のアーキテクチャリンクおよびスイッチを介して相互接続された複数のHFIおよびゲートウェイの集合を含む。図1に図示されるように、ファブリック102の複数のコンポーネントは、各々がそれぞれの離散的な1つのノードプラットフォーム106によりホスティングされた複数のHFI104(1つが示されている)、仮想プラットフォーム110によりホスティングされたHFI108、マルチノードプラットフォーム116の各ノード114および114によりホスティングされたHFI112および112、集積された1つのノードプラットフォーム120のHFI118および118、高次基数スイッチ122、スイッチ124および126、ファブリックマネージャ128、ゲートウェイ130リンク132、134、1361、136、138、1401、140、142、144、148、ならびにクラウド150として集合的に示される追加の複数のリンクおよびスイッチを含む。
上述のように、複数のスイッチはレイヤ2のデバイスであり、ファブリック内でパケット転送メカニズムとして動作する。複数のスイッチは、中心的にプロビジョニングされ、ファブリック管理ソフトウェアにより管理され、各スイッチは、管理トランズアクションに応答する管理エージェントを含む。中央プロビジョニングは、適応型ルーティングに対する交互ルートのような複数の特定のファブリックトポロジおよび転送能力を実装するように、複数の転送テーブルがファブリック管理ソフトウェアによりプログラミングされることを意味する。複数のスイッチは、適応型ルーティングおよび負荷分散等のQoS機能を実行することを担い、複数の輻輳管理機能も実装する。
図2は、複数のファブリックリンクを介してデータを転送するための複数のアーキテクチャレイヤを図示する。複数のレイヤは、物理(PHY)レイヤ、リンク転送サブレイヤ、リンクファブリックサブレイヤ、およびトランスポートレイヤを含む。図2の左はOSI参照モデルの複数のレイヤのマッピングであり、これにより、PHYレイヤは、レイヤ1(PHYレイヤ)にマッピングし、リンク転送サブレイヤおよびリンクファブリックサブレイヤは、レイヤ2(リンクレイヤ)に集合的にマッピングし、トランスポートレイヤは、レイヤ4(トランスポートレイヤ)にマッピングする。
アーキテクチャにおいて、複数の信号は物理レイヤにおいて互いグループ化されて複数のポートになり、ポートはモノリシックなエンティティとして動作し、制御され得、報告される。ポートは、1または複数の物理レーンを備え、各レーンは、物理伝送媒体に実装された2つの差動対またはファイバからなり、そのうちの1つは、各方向の通信用である。ポートを備えるレーンの数は、実装に依存するが、リンク転送サブレイヤのアーキテクチャは、有限集合のポート幅をサポートする。複数の特定のポート幅は、基本的ポート幅としてサポートされ、ケーブルおよびチップ設計における共通の目標を可能にする。ポート幅は、lx、4x、8x、12x、および16xを含み、「x」は、物理レーンの数を識別する。欠陥レーンの検出等、いくつかの条件下で、複数のリンクは、低減されたレーン幅で実行され得る。
リンク転送サブレイヤは、物理レイヤとリンクファブリックサブレイヤとの間のインターフェースとして機能する。複数のリンクファブリックパケット(リンクファブリックサブレイヤにおける)は、64ビットのフロー制御デジット(フリット(FLIT、Flits、またはflit)、およそのフロー制御デジットの短縮形)に分割される。図3は、バンドル302にグループ化された複数のフリット300の例を図示する。各フリット300は、8バイトのデータを含む、64のデータビットを含む。
リンク転送サブレイヤは、複数のレーンを形成して、信頼できる形でリンク全体で複数のフリットおよび関連するクレジット返却情報を転送することができるチームにする。これは、リンク転送パケット(LTP)と称し、リンクファブリックサブレイヤに関連する1056ビットのバンドルを用いて実現される。また、図3は、データの16フリットを含むLTPのデータ部分を図示する。更に、複数のLTPは、フリットタイプ情報、CRCデータ、および選択的データ(図3に図示せず)を含む。LTPの複数の例は、様々な図(例えば、図5〜11)に図示され、更に詳細に後述される。
複数のファブリックパケットは、64ビットのフリットおよび各フリットに対するフリットタイプビットから構成される。ファブリックパケットの第1のデータフリットは、ヘッドフリットと称する。ファブリックパケットの最後のデータフリットは、テールフリットと称する。ファブリックパケットにおけるその他のデータフリットは、ボディフリットと称する。ファブリックパケット400の一例は、図4に図示される。
フリットタイプビットには、複数のボディフリットを他のフリットタイプから区別する各フリットが提供される。一実施形態において、複数のボディフリットは、1に設定されたフリットタイプビットを用いてエンコードされ、64ビットのデータを含む。他の全てのフリットは、0に設定されたタイプビットでマーキングされている。複数のヘッドフリットは、1に設定されたフリット[63]を用いてエンコードされる。他の全ての(ボディでない)フリットは、0に設定されたフリット[63]を用いてエンコードされる。複数のテールフリットは、1に設定されたフリット[62]を用いてエンコードされる。他の全ての(ボディ/ヘッドでない)フリットは、0に設定されたフリット[62]を用いてエンコードされる。フリットエンコードは、以下の表1に要約されている。
Figure 0006548756
複数の制御フリットは、表2に要約されている。リンク転送層(LT制御フリット)のみにより用いられる7つの制御フリットは、Null LTPにおいて送信される。残余の制御フリットは、2つのグループに分割される。ファブリックパケット(FP)フリットとしては、HeadBadPkt、BodyBadPktおよびTailBadPkt制御フリット、ならびに通常のパケットヘッド、ボディ、およびテールフリットが挙げられる。リンクファブリック(LF)コマンドフリットとしては、アイドル、VLMrkr、およびCrdtRetフリットが挙げられる。FPフリットおよびLFコマンドフリットは、リンクを介して送信する複数の信頼できるLTPにおいて混在し得る。
Figure 0006548756
アイドルコマンドフリットは、データストリームに挿入するファブリックパケットフリットが存在しない場合に、リンクファブリックレイヤにより用いられる。データ経路の全幅がアイドルを含む場合、リンク転送レイヤは、入力バッファに挿入されるフリットストリームから除去する。データ経路がアイドルおよび非アイドルフリットの双方を含む場合、アイドルは除去されない。これは、リンク転送レイヤが同一のデータ経路構成を、リンクの遠い側のリンクファブリックレイヤに提示するように、実装される。リンク転送レイヤがリンクファブリックレイヤから回答待ちであるフリットを有しない場合、リンクを介して元の複数のフリットが送信されるときに、アイドルを挿入する。元の複数のフリットは、再送信または再生された複数のフリットを備える再生バッファから送信されたものとは異なり、リンクを介して初めて送信されたフリットである。
リンク転送パケットは、リンクを介した送信に16フリットを保持する。複数の信頼できるLTPは、再送信要求がなければ、リンクピアにより首尾よく受信されたことを示すことを保証するのに十分長い期間、再生バッファに保持される。複数の再生バッファ位置ポインタは、各LTPについてトランスミッタ(NxtTxLTP)およびレシーバ(NxtRxLTP)で維持されるが、LTPの一部として交換されない。送信エラーがレシーバにより検出されると、NxtRxLTP再生バッファ位置ポインタを含むRetryReqLTPを、トランスミッタに送信する。RetryReqLTPを受信することに応答して、再生バッファにおける複数のLTPは、元の順序で再送信され、RetryReqLTPを開始し(ピアNxtRxLTP)、書き込まれた最後の再生バッファ位置で終了する(NxtWrLTP−1)。Null LTPは再生バッファに保持され、再送信されない。
複数のリンクファブリックコマンドフリットは、LTPにおいて複数のFPフリットとミックスされ得るが、複数のLFコマンドフリットは、ファブリックパケットの一部ではない。リンクファブリックコマンドフリットは、リンクの1つの端部のリンクファブリックサブレイヤからリンクの他の端部のリンクファブリックサブレイヤへと制御情報を搬送する。
一実施形態において、標準的検出LTP、14ビットのCRC LTP、および強化検出LTPを含む3つのLTPフォーマットが存在する。標準的検出LTPの一実施形態は、図5に示される。16のフリットに加えて、各標準的検出LTPは、LTPコンテンツをカバーする16ビットのCRCを有する。例示的目的として、図5の複数のフリットは、ビット64がフリットタイプビットである、65ビットとして示される。
14ビットのCRC LTPの一実施形態は、図6に示されている。16のフリットに加えて、各14ビットのCRC LTPは、2ビットのクレジットサイドバンドチャネル、および複数のLTPコンテンツをカバーする14ビットのCRCを有する。複数のフロー制御クレジットは、複数のLTP内で特別なLFコマンドフリットまたはLTPクレジットサイドバンドチャネルの状態で送信される。
標準的検出LTPに加えて、リンクは、16のフリットを保持し、4つの12ビットのCRCフィールドを有する選択的な強化検出LTPもサポートし得る。図7は、強化検出LTPの一実施形態のフォーマットを示す。4つのCRCフィールドの各々は、16のフリット全てをカバーする。4つのCRCのいずれかが不良である場合、LTPが再送信される。4つの12ビットCRCに対して、2つのCRC計算の選択肢が存在する。第1(48bの重複)は、4つの重複する算出を用い、各算出は、LTP内の全てのビットをカバーする。第2(レーン当たり12b〜16bのCRC)は、4つの重複しない算出を用い、各算出は、4つのレーンのうち1つにおいて流れる全てのビットに限定される。
上述のように、リンク転送層により用いられるLT制御フリットは、Null LTPにおいて送信される。複数のNull LTPは、再生バッファにおける空間を消費せず、再送信されない。Null LTPは、上記の表2に要約された複数のリンク転送LT制御フリットのうち1つを用いて区別される。ほとんどのNull LTPタイプは、シーケンシャルなペアで送信され、2つのうち少なくとも1つが、エラーなしでリンクピアにより受信され、または双方がエラーを有する場合に、RetrainRetryReqが自動的に生成されることのいずれかを保証する。標準的検出Null LTPの一例は、図8に図示されている。
複数の標準的検出Null LTPは、1つの区別制御フリット、予約済みの975ビット、および16ビットの標準的検出CRCフィールドを含む。複数の強化検出Null LTPは、1つの区別制御フリット、予約済みの975ビット、および4つの12ビットの強化検出CRCフィールドを含む。2つのサイドバンドビットは、14ビットCRCにおいて用いる場合に、Null LTPにおいて無視される。
ある時点の1つのLTPは、4つのレーンを有するリンクに接続された4×対応ポートおよび8×対応ポートの双方に対するリンクを介して送信される。これは、(複数のCRCフィールドは、縮尺されないことに留意して)図9Aおよび9Bの標準的検出および複数の強化検出LTPの双方のリンクファブリックデータ経路パースペクティブを各々用いて図示されるが、対応する信号処理および転送経路の一実施形態は、図10に示される。14ビットのCRC LTPは、LCRC[15:0]フィールドがLCRC[13:0]フィールドおよびC[l:0]フィールドの組み合わせと置き換えられることを除き、図8に図示される標準的検出LTPに類似するであろう。フリット送信の順序は、フリット0で開始し、フリット15で終了する。
一実施形態において、各レーンを介したデータの物理的送信は、連続した2つのレベルのビットのノン・リターン・ツー・ゼロ(NRZ)エンコードのビットパターンを使用し、そのデータは、デコードされた各レーンに対応し、非シリアル化され、4バイト/レーン/サイクルにグループ化される。これは、2つのフリット/サイクルを含む16バイトの転送をもたらす。例えば、図9Aおよび図10における図示は、2フリット幅の実装に固有のデータ経路を想定し、この下ではフリット0およびフリット1は、同時に送信され、フリット2およびフリット3は、同時に送信される等である。LCRCは、リンク転送サブレイヤにより算出される。
図11は、2つの4レーンリンクが結合され、8×のデータ経路がサポートされ、データが8レーンを介して送信される、LTP送信スキームを示す。図示されるように、このスキームの下では、2つのLTPからの4つのフリットは、リンクファブリックとリンク転送サブレイヤとの間のインターフェースでパラレルに処理される。
上述のように、アーキテクチャは、3つのレベルのデータ単位の粒度を使用し、複数のデータ転送、つまりファブリックパケット、フリットおよびリンク転送パケットをサポートする。リンク転送レイヤにおける送信の単位は、LTPである。図示されるように、各LTPは、名目上、16フリットの長さであり、上記のように、LTPの実際のサイズは、用いられる特定のCRCスキームに応じて異なることがあり、16フリットの長さを有するLTPを参照することを用いることは、複数のCRCビットおよび16ビットの65番目を除くLTPに含まれるデータの64ビットフリットの数に対応する。
4つの物理レーンを備えるリンクの一実施形態における物理レイヤ(「PHY」とも呼ばれる)構造が、図12に図示されている。PHYは、リンク相互接続の物理的構造を規定し、コンポーネントAおよびBにより図示されるもの等、2つのリンクピアの間の特定のリンクにおいて複数の信号のオペレーションの詳細に対処することを担う。複数の電気レベル、タイミングの態様および論理的問題を含む信号線におけるこのレイヤ管理データ転送は、パラレルなレーン全体で情報の各ビットを送信および受信する場合に伴う。図12に示されるように、各相互接続リンクの物理的接続は、複数の信号1200の4つの差動対から構成されており、各方向においてレーン0から3を含む。各ポートは、2つの一方向リンクからなるリンクペアをサポートし、2つのピアコンポーネントの間の接続を完了させる。これにより、双方向のトラフィックを同時ににサポートする。図示および理解を促す目的のために、図10に図示されているレーン「スウィズル」は、図12には示されない。しかし、いくつかの実施形態において、送信および受信レーンがスウィズルされることが理解されるであろう。
複数のリンクポートを有する複数のコンポーネントは、図12に示されるように、リンクピアとして規定された一方向のポイントツーポイントリンクのペアを用いて通信する。各ポートは、送信(Tx)リンクインターフェースおよび受信(Rx)リンクインターフェースを備える。図示された例では、コンポーネントAは、コンポーネントBのRxポート1204に接続されたTxポート1202を有する。一方、コンポーネントBは、コンポーネントBのRxポート1208に接続されたTxポート1204を有する。1つの一方向リンクは、コンポーネントAからコンポーネントBへと送信し、他のリンクは、コンポーネントBからコンポーネントAへと送信する。「送信」リンクおよび「受信」リンクは、どのコンポーネントのポートがデータを送信し、どれが受信をするかに関して規定される。図12に図示される構成において、コンポーネントAの送信リンクは、コンポーネントAのTxポート1202からコンポーネントBのRxポート1204へとデータを送信する。この同一のコンポーネントAの送信リンクは、ポートBの受信リンクである。
上述のように、複数のリンクポート間のデータ転送の基本的単位はLTPである。
各LTPは、リンクの反対側の端部における送信ポートおよび受信ポートにより規定された特定のリンクを介した一方向の送信に固有である。LTPは、1つのリンク転送の寿命を有し、複数のLTPは、複数のフリットを適用可能な複数のVLバッファからプルし、16のフリットを一度にアセンブルして各LTPにすることにより、動的に生成される。LTP送信ストリーム1210および1212により図示されるように、複数のLTPは、複数のフリットのストリームとして送信され、個々のLTPの第1および最後のフリットは、図4を参照した上述のように、ヘッドおよびテールフリットビットにより描写される。
上述のように、アーキテクチャは、主として、目標によりルーティングされる複数のファブリックパケットまたはFPを含むパケット配信メカニズムを規定し、レイヤ4のペイロードサイズは、0バイト〜10240バイトである。これは、単純なULPアクノリッジからカプセル化イーサネット(登録商標)ジャンボフレームまでの範囲の複数のメッセージを送信するのに効率的なサポートを提供する。ファブリックパケットは、HFIの入口および出口のためのペイロードの論理的単位を表す。ファブリックパケットは、ファブリックにおけるエンドツーエンドの寿命を有するので、そのように命名されている。より詳細には、ファブリックパケットの寿命は、FPのソースアドレスおよび目標アドレスにより規定されるファブリックの複数のエンドポイント間のFPコンテンツの転送にかかる時間である。FPの各転送経路は、少なくとも1つのリンク全体での転送を含み、転送経路が1または複数のスイッチをトラバースする場合における複数のリンク全体の転送を含み得る。
複数のFPおよびLTPと組み合わせて複数のフリットを用いることにより、アーキテクチャに一意なデータ転送機能を促す。具体的には、複数のFP、フリット、およびLTPを分離することにより、仮想レーン、ならびにQoSおよびファブリックの堅牢性の様々な態様の使用をサポートする。
上述のように、フリットは、単体で送信されず、16フリットの複数のグループはリンク転送パケットにパック(バンドル)される。これにより、複数のフリットが共通のリンクCRCを共有することを可能にする。LTPにおける複数のフリットは、多くの異なるファブリックパケットから生じ得、これにより、他のファブリックと比較して、興味あるいくつかの特性をリンクプロトコルにもたらす。効率的パケットの先取りおよびインターリーブメカニズムを用いることにより、アーキテクチャは、異なる複数のストリーム用のデータ転送のインターリーブをサポートし、ヘッド・オブ・ライン・ブロッキング効果(head−of−line blocking effect)、更に物理リンク上で物理的に転送される大きな1つのパケットのブロッキング効果を実質的に除去する。複数のファブリックパケット、フリットおよびLTP間の関係の図示は、図15および16に示され、これらの図の更なる説明が後述される。
アーキテクチャは、クレジットベースのフロー制御を用いてリンクのレシーバ側における複数のバッファリソースを管理し、トランスミッタがいつフリットを送信し得るかを制御する。この手法に基づいて、ファブリックポートがフリットを送信するには、受信ポートにおいて必要とされるバッファ空間に利用可能な十分なフロー制御クレジットを必要とする。一実施形態において、複数のレシーバは、リンク上でサポートされる仮想レーン(VL)用の複数の受信バッファの1つプールを提供する。バッファプールの割り当ては、リンクのトランスミッタ側のロジックにより管理される。複数の専用バッファは、サポートされる各VLに対して割り当てられる。更に、複数のトランスミッタは、空間の一部を、複数のVL間で動的に割り当てられる共有プールとして管理し得る。クレジットベースのフロー制御は、複数のリンクにおけるデータ転送が強固に管理されることを意味する。未承認のデータ転送は生じず、これは、ファブリックがいわゆる「ロスレス」ファブリックであることも意味する。この場合、ロスレスは、通常の動作中にフリットが、従ってパケットが輻輳のためにドロップすることはないことを単に意味する。
フロー制御クレジット等の制御情報は、複数のリンクファブリック(LF)コマンドフリットおよびリンク転送(LT)制御フリットで搬送される。LFコマンドおよびLT制御のフリットは、トランスミッタのフリットストリームの任意の地点で挿入され得る。更に、いくつかのLTPフォーマットのサイドバンド情報は、更により小さいオーバヘッドでクレジットを転送するべく用いられ得る。LFコマンドおよびLT制御のフリットは、リンクトランスミッタにより生成され、リンクレシーバにより消費される。
アーキテクチャは、データ整合性を保証する複数のリンク転送パケットおよびファブリックパケット用のCRCを含む。また、アーキテクチャは、正確に受信されなかった複数のLTPに対するリンクレベルの再試行を提供する。LTPの再試行リンクの有効ビットエラーレートを著しく改善し、僅かに低下した物理的BERに対するより低い電力消費量を利用し得る複数のPHY戦略を用いることを可能にする。また、LTPの再試行は、許容可能なシステムレベルエラーレートを維持するべく、ファブリック内の多くのリンクがより良好な1リンク当たりのBER特性を必要とする、複数の大きなファブリックに役立つ。
先取りおよびインターリーブ
L2リンクレイヤは、複数のパケットが異なるVLにある限り、リンク全体で送信される場合に、異なる複数のパケットからの複数のフリットがインターリーブされることを可能にする。インターリーブする1つの動機は、所与のリンクの使用を最大化することである。理由が何であっても、送信パケットが複数のバブルによりインタラプトされると、アイドル状態で停止させることに代えて、第2パケットがチャネルへとインターリーブされ得る。先取りと称するインターリーブの第2の理由は、より高い優先度のパケットに、より高い優先度のパケットのレイテンシを低減するべく転送されるより低い優先度のパケットをインタラプトさせることである。
インターリーブの下で、ファブリックパケットの複数のフリットの全てまたは一部は、リンク全体で送信された複数のフリットのストリーム内で、他の複数のFPからのフリットを用いてインターリーブされる。トランスミッタは、ポートの出力キューにおいて送信するのに利用可能な複数のFP間からの送信用の複数のフリットを選択する。一実施形態において、1つのVL内の複数のFPは、順序通りに供給され、従って仮想レーン内では、(当該VL内の)次のパケットの任意のフリットが送信される前に、1つのパケットからの複数のフリットの全てが送信される。
異なる複数のVL全体には、指定された順序は存在せず、従って異なる複数のVLにおけるパケットからの複数のフリットは、フリットストリーム内(ならびに複数のフリットの順序が各VL内で維持される限り所与のLTP内)で任意でインターリーブされ得る。いくつかトランスミッタ実装は、複数のパケット間のインターリーブの量を制限することを選択し得る。
先取りの下で、より高い優先度レベルを有する複数のファブリックパケットのフリットは、より低い優先度レベルを有する複数のFPからのフリットを先取りする。一実施形態において、各仮想レーンは、各優先度レベルに関連する。複数のトランスミッタは、より高い優先度の複数のVLからのフリットを、より低い優先度の複数のVLからのフリットに先立つリンクLTP上に挿入するように構成される。複数のトランスミッタは、1つのフリットよりも大きい、境界におけるより高い複数の優先度フリットを挿入することを選択し得る。更に、複数のトランスミッタは、同一の優先度の複数のVLからのフリットをインターリーブすることを選択してもよく、または同一の優先度の異なるVLにおける異なるパケットからの複数のフリットを送信する前に、複数のフリットの全てをあるパケットからリンク上に注入してもよい。リンク上のレシーバは、キューに挿入し、(スイッチにおけるレシーバ用の)次のホップを転送するVLにより、新しいフリットストリームを分離する。一般に、少なくとも所与のリンクについては、レシーバ実装は、トランスミッタにより生成され得る全範囲のインターリーブをサポートする。いくつかの実施形態において、類似の範囲のインターリーブは、ファブリック全体に実装される。任意選択で、異なる複数のリンクが異なる複数のレベルのインターリーブをサポートし得る。
パケット先取りの複数の態様によれば、第1の優先度レベル(例えば、高い優先度)を有するVL上のパケットBからの複数のフリットは、より低い優先度のVL(すなわち、第1の優先度レベルよりも低い優先度レベルを有するVL)上のパケットAからの複数のフリットのストリームを先取りし得る。この場合、パケットAのヘッドフリット、およびパケットAのゼロまたはそれより多いボディフリットの次には、パケットBからのヘッドフリットが続くことがある。このヘッドフリットは、新しいパケットが開始し、VL識別子を判断するべく、レシーバがL2ヘッダにおいてSCフィールドを探すことを示す。パケットBのヘッドフリットの次には、ゼロまたはそれより多いボディフリット、そして最後にテールフリットが続き、パケットBを終了させる。パケットBの終了後、パケットAの送信は、ゼロまたはそれより多いボディフリットから再開し、その次にテールフリットが続く。
複数のパケットは、連続的により高い優先度の複数のパケット(連続的により高い優先度のVL上野複数のパケット)により先取りされるので、パケット先取りは、入れ子である場合がある。一実施形態において、これは、リストのヘッド上にアクティブなパケットを有するリンクリストとしてモデル化される。現在のパケットが先取りされると、新しいパケットがリストのヘッドに追加される。先取りパケットが終了すると、リストから除去され、再開することが予期される次のパケットが、リストの新しいヘッドになる。1度にリスト上に保持され得るパケットの最大数は、サポートされるVLの数に等しい。
上記の検討では、先取りを説明するべく優先度レベルを用いたが、より高い優先度パケットに対してのみ先取りが用いられることは要求されない。送信に利用可能な現在のパケットからの複数のフリット(「バブル」をもたらす)は存在しないが、より低い優先度パケットから利用可能なヘッドフリットが存在する場合があり得る。より低い優先度パケットからのヘッドフリットおよびその次の複数のボディフリットが、送信され得る。新しいヘッドフリットは、パケットをリストのヘッドに追加させ、レシーバは、新しいパケットを正確に追跡する。
第2のパケットのヘッドフリットが第1のパケットのテールフリットの前に送信される場合、パケットは、第2のパケットによりインターリーブされたものとみなされる。インターリーブの最も単純な場合において、インタラプトするヘッドフリットの次のボディフリットの全ては、テールフリットまで第2のパケットに属し、その後、第1のパケットの残余のパケットフリットは、再開する。この単純な場合が、図13にグラフィカルに図示されている。
複数のフリットのグループは、フリットストリームにおける複数のフリットの(トップからボトムへの)順序に対応する。グループにおける第1のフリットは、仮想レーン0を介して転送されるファブリックパケット用のヘッドフリットであり、VL0とラベリングされている。VL0ヘッドフリットは、当該FPを、4フリットの長さ(ヘッドフリット、2つのボディフリット、およびテールフリット)として識別する。第2のフリットはFP VL0の第1のボディフリットである。次のフリットは、VLlヘッドフリットとラベリングされ、VLlとラベリングされた仮想レーン1を介して送信されたFP用のヘッドフリットである。また、VLlヘッドフリットは、このFPを4フリットの長さとして識別する。1つの手法の下で、新しいVLからのFPの複数のフリットが現在のVLからの複数のフリットを用いてインターリーブされる場合、この新しいVLは、リンクを介して複数のフリットを送信する、アクティブな仮想レーンになる。これは、VLl用のヘッドフリットをフリットストリームに追加することにより図示されている。結果として、FP VLlは、FP VL0をインターリーブする。これは、VLlヘッドフリット、2つのVLlボディフリットおよびVLlテールフリットをまず追加することにより図示されている。テールフリットは、FP VLl FPに対する複数のフリットの終了を識別する。これにより、FP VLlインターリーブも完了する。次に、ロジックは、VLlインターリーブの前のFPフリットに戻り、リンクを介して送信される残余のFP VL0ボディフリットおよびテールフリットをもたらす。
リンクファブリックサブレイヤが複数のファブリックパケットからの複数のフリットのインターリーブをどのようにサポートするかを更に図示するべく、図14は、プッシュおよびポップのインターリーブの例を示す。リンクファブリックサブレイヤにおけるインターリーブは、プッシュおよびポップのスキームを利用し、インタラプトヘッドフリットは、テールフリットが発生した場合に、インタラプトされるVLのプッシュおよびスタックにおけるVLのポップをもたらす。スタックがどのように動作するかを視覚化するには、インボックス中のペーパのスタックを、現在のペーパで作業するべく用いられるデスクエリアと併せて想起されたい。プッシュとポップのインターリーブの文脈において、ペーパのスタックは「スタック」と呼ばれ、デスクエリアは、アクティブなVLレジスタに対応し、ここで複数のフリットが格納されるアクティブな仮想レーンを、データが識別する。送信されるVLがインターリーブに応答して切り替えられると、インターリーブされたVLは新しいアクティブVLになるが、前のアクティブなVLは、デスクからスタックのトップにプッシュされ、従って「プッシュ」という用語になる。FPに対するVLフリットの完了時に(例えば、VL FPに対するテールフリットがLTP送信FIFOに追加されるとき)、VLは、デスクエリアから除去され、スタックのトップのVLは、スタックからデスクエリア上に「ポップ」され、このうにして新しいアクティブなVLになる。複数のVLのこのプッシュおよびポップは、入れ子の形で継続し得る。nのVLをサポートするリンクファブリックサブレイヤを用いて、同時にインタラプトされ得るパケットの最大数は、n−1である。
図14の例において、フリット1400の順序付けられたリストは、様々なVLに格納された複数のファブリックパケットからの複数のフリットが、複数のフリットの送信ストリームに追加される順序を表す(または任意選択で、受信ポートにおいて受信されるフリットストリームにおける複数のフリットの順序を示す)。以下の説明は、複数のフリットが、複数のLTPにバンドルされるアウトバウンドストリームに追加される(つまり、LTPがファブリックに「注入される)フリットストリームの生成に関する。アクティブなVLを識別する証拠は、アクティブなVLレジスタ1402において様々な状態で図示されている。初期状態下で、VL0に対応する証拠はアクティブなVLレジスタ1402に格納され、仮想レーンVL0(VL0 FPと呼ばれる)についてバッファ処理された次のファブリックパケットから、複数のフリットが追加されることを示す。従って、VL0 FPに対する初めの2つのフリットは、フリット送信ストリームに追加され、この地点でインターリーブイベントが検出され、VLlがVL0をインターリーブすることを始動する。このインターリーブ動作を実現するべく、VLl用の証拠は、アクティブなVLレジスタにおけるVL0を置き換え、VL0をスタック上にプッシュする。これは、アクティブな仮想レーンをVLlに切り替え、VLl FPのヘッドフリットおよび第1のボディフリットをフリット送信ストリームに追加する。次に、第2のインターリーブイベントに応答して、VLlを用いたVL2のインターリーブが始動し、VL2をアクティブなVLレジスタ1402にロードしてVLlをスタック上にプッシュする。これにより、FP VL2に対する3つのフリット全てをフリット送信ストリームに追加することをもたらす。FP VL2を追加すると、テールフリットは、VLlを用いたVL2のインターリーブを完了し、スタックからアクティブなVLレジスタ1402にポップされるVLlをもたらす。VLlに対する別のボディフリットが追加され、この後にVLlをインターリーブするVL7を始動し、これは、VL7に対する証拠をアクティブなVLレジスタ1402に追加し、VLlをスタックに再度プッシュすることによりもたらされる。全VL7 FPに対応する3つのフリットは、フリット送信ストリームに追加され、VLlを用いたVL7のインターリーブおよびスタックからアクティブなVLレジスタ1402へとVLlを再度ポップすることを完了する。VLl FPのテールフリットが追加され、VLlをインターリーブし、VL0を、スタックからアクティブなVLレジスタ1402にポップすることを完了する。これによりVL0をアクティブなVLとして返し、VL0 FPに対する最後の2つのパケットは、LTP送信FIFOに追加される。
インタラプトされる黙示的VLに返すポップに依存することに代えて、リンクファブリックサブレイヤは、デバイスが「VLマーカ」と称する特別なLFコマンドフリットを利用して、どのVLがリストのヘッドに移動されるかを明示的に指定することを可能にする。VLマーカの使用は、この追加のマーカフリットゆえにあまり効率的でないが、インターリーブに対するより多くの柔軟性を提供する。図15の図がこのコンセプトを図示する。
実際のVLマーカは、VLが既定のスタックの順序、またはスタックのトップに移動されるスタック内に存在しない新しいVLからプルされることを可能にする。スタック内に依然として存在する複数のVLは、その後、プッシュおよびポップの規則に継続的に従う。これら2つの異なるメカニズムの使用は、混在され得、排他的ではない。スタックからプルされ、次に別のVLによりインターリーブされる特定のVLの場合、これはスタック上に再度プッシュされる。
図15に戻ると、複数のオペレーションのシーケンスは、図14のプッシュおよびポップの例と類似した形で開始し、初期のアクティブ仮想レーンはVL0であり、VL0 FPの最初の2つのフリットがフリット送信ストリーム1500に追加される。上記と同様に、次のVLlは、2つのフリットに対するVL0をインターリーブし、次にVL2がVLlをインターリーブする。しかし、VL2 FPテールフリットに到達する前に、VLマーカ1502は、フリット送信ストリームに挿入され、VL0が新しいアクティブVLになることを示す。これにより、スタックからプルされ、アクティブなVLレジスタ1402にロードされるVL0をもたらし、VL2をスタックのトップにプッシュする。VL0に対する残余の2つのフリットは、フリット送信ストリーム1500に追加され、VL0を終了させ、スタックからアクティブなVLレジスタ1402へとポップされるVL2をもたらす。これは、VL2に対するテールフリットを追加し、VL2を終了させ、スタックからアクティブなVLレジスタ1402へとVLlをポップする。別のVLlのボディフリットが追加され、この後、VLlをインターリーブするVL7を始動し、これによりVL7をアクティブなVLレジスタ1402にロードし、VLlをアクティブなVLレジスタ1402からスタック上にプッシュする。次に、第2のVLマーカ1504は、フリット送信ストリーム1500に追加され、アクティブな仮想レーンをVLlに再度切り替える。これにより、VL7をスタック上にプッシュし、VLlをアクティブなVLレジスタ1402にプルする。VLl FPのテールフリットが追加され、これは、VLlのインターリーブを完了させ、VL7は、スタックからアクティブなVLレジスタ1402にポップされる。次いで、VL7 FPに対する最後の2つのフリットが追加される。
図14および15に示されるインターリーブの例は、例示的な目的、ならびにプッシュおよびポップのインターリーブスキーム、ならびにVLマーカインターリーブスキームのより容易な理解のために誇張されたレベルのインターリーブを示す。実際のシステムにおいて、ほとんどのインターリーブは、2つのタイプのインターリーブイベント、すなわち複数のパケットストリームにおける(A)先取り(プリエンプション)および(B)バブルのうち1つから生じる。先取りインターリーブの更なる詳細な例、ならびに先取りインターリーブおよびバブルイベントからもたらされるインターリーブの組み合わせは、図16および17にそれぞれ示されている。
上記のように、先取りの下で、より高い優先度を有する仮想レーンにおけるファブリックパケットに対するコンテンツ(フリット)は、より低い優先度VLにおけるFPの複数のフリットを、フリット送信ストリームに追加することを先取りし得る。HFI、ゲートウェイまたは他の複数のタイプのファブリックのエンドポイントにおいて、複数のファブリックパケットが構築されるデータは、一般に、ファブリックパケットにカプセル化されるイーサネット(登録商標)フレーム等、いくつかの他の種類のフォーマットで最初にバッファ処理される。IPパケットおよびUDPパケット等のレイヤ3の複数のパケットがどのように生成されるのかと同様に、複数のファブリックパケットは、ネットワーキングスタックの一部として生成され得る可能性がある。スイッチにおいて、受信済みおよび送信済みの双方のコンテンツは、フリットに既にフォーマット化され、追加のメタデータは、どのフリットがどのFPに関連し、どのスイッチポートにフリットが送信され、次のホップまたはエンドポイント目標にアウトバウンドされるかを判断するべく用いられる。前述を考慮し、図16および17は、FPの下にFPコンテンツのフリットフォーマット化を用いる、ファブリックパケットを全体として図示する。
各FPに対するフリットコンテンツは、FPが割り当てられる、仮想レーンに対して割り当てられたバッファに一時的に格納される。様々なバッファ構成の実施形態の下で、別個の複数のバッファが各VLに割り当てられ得、いくつかのVLはバッファ空間を共有し得、またはこの2つの組み合わせが存在する場合があり、VLバッファ割り当ての第1の部分は、当該VLに対して私的なものであるが、別の部分は共有バッファ空間である。
複数の仮想レーンを用いる基本的態様は、所与の仮想レーンにおけるコンテンツが依然として順序通りであることである。
これは、所与の仮想レーンについては、1つのFPが別のFPを追い越さないことを意味する。更に、複数のFPに対するフリットも、依然として、初めに生成された順序通りである。同時に、異なる仮想レーンにおけるコンテンツは、他の複数の仮想レーンに対して順序通りである必要はない。これにより、より高い優先度のトラフィックがより低い優先度のトラフィックを先取りすることを可能にする。また、複数の仮想レーンは、ルーティングおよびプロトコルのデッドロックを除去し、複数のトラフィッククラス間のヘッドのラインブロッキングを回避するべく用いられる。
図16に示されるように、各仮想レーンVL1、VL2、VL3に対する3つのバッファ1602、1604および1606が存在する。また、これらの仮想レーンの各々には、各優先度レベル、VL1に対する低い優先度、VL2にたいする中間の優先度およびVL3に対する高い優先度が割り当てられている。アービタ(図示せず)は、どのVLバッファから、複数のフリットがLTP2、3、4、5、6および7にバンドルされるフリット送信ストリーム1608に追加されるべき複数のフリットをプルするかを決定するべく用いられる。図16は、「スライディングウィンドウ」の図であり、図示されたウィンドウのタイムフレーム上にVL、VL1、VL2、およびVL3のリンクトラフィックの処理を図示する。一実施形態において、複数のVLバッファは、FIFO(ファーストイン、ファーストアウト)のバッファとして実装され、各FIFOスロットは、フリットを格納するサイズである。
上述のように、先取りインターリーブの一態様において、より高い優先度VLに割り当てられたFPコンテンツは、比較的低い優先度VLに割り当てられたFPコンテンツを先取りし得る。一般に、複数のFPに対応するFPコンテンツは、(ファブリックに注入される)各VL出口のバッファにバッファ処理され、最高の優先度でVLに割り当てられたFPコンテンツは、フリット送信ストリームに追加される。しかし、これは絶対の規則ではなく、先取りが行われない複数の状況が存在し得ることに留意されたい。同時に、FPコンテンツが同一の優先度を有する所与のVLまたは複数のVLにのみ利用可能である場合、当該FPコンテンツは、(現在、バッファ処理済みのFPコンテンツを全く有しない)他の複数のVLの優先度レベルに関わらず、フリット送信ストリームに追加される。この状況は、以下のように、図16に図示される。
時間Tにおいて、パケット1の少なくとも第1の部分が、VL1のバッファ1602においてバッファ処理され、送信の準備ができている。アーキテクチャ下でのデータ転送のストリームの性質ゆえに、複数のフリットは、複数のVLバッファにおいて受信され(追加され)、(送信のために)複数のVLバッファから除去される。更に、複数のフリットを複数のVLバッファに追加し、これから複数のフリットを除去することは、特にスイッチにおいてはどちらかといえば非同期的であり得る。結果として、時間の任意の所与の地点において、所与のVLバッファは、バッファ処理され、送信の準備ができているコンテンツを有するか、または有しないことがある。図16の例において、時間Tでは、VL1のバッファ1602のみが送信する準備ができている複数のフリットを含むが、VL2のバッファ1604およびVL3のバッファ1606の双方が空である。FPパケットに対する複数のフリットをフリット送信ストリームに追加することを始動するべく、少なくともヘッドフリットまたは複数のフリット(特定のFPフォーマットに応じて)は、VL FIFOバッファのヘッドに存在する必要がある。(以下に更に詳細に説明されるように、一実施形態において、複数のVLバッファは、円形FIFOとして実装され、FIFOヘッドは、FIFOヘッドポインタにより識別される)。図16において、ヘッドフリット1610は、時間TにおけるVLlのバッファ1602のヘッドにおいてバッファ処理される。
時間Τにおいて、複数のフリットの第1のグループ1612は、フリット送信ストリーム1608のLTP2に追加され、フリット1612の開始時におけるヘッドフリット1610は、時間Tで追加され、TとTとの間の時差は、アクティブなVLがVLlのバッファ1602に変更されることを、アービタが認識するのにかかる時間量、およびバッファからのフリットデータをフリット送信ストリーム1608にコピーする時間を表す。図16におけるTとTとの間の差異は、スケールしないのではなく、FPデータがVLバッファに到達し、送信の準備ができるときと、当該データがフリット送信ストリームに実際に追加されるときとの間のいくらかの有限な時間が存在することを図示するべく、用いられる。
時間Tにおいて、パケット2の第1の部分は、VL2のバッファ1604において受信され、ヘッドフリット1615から開始する。VL2は、VLlよりも高い優先度を有するので、先取りイベントは、アービタ(または他のロジック、図示せず)により検出される。実装に応じて、先取りイベントは、パケット2に対するヘッドフリットがVL2バッファ1604のFIFOのヘッドに到達したすぐ後に検出されてもよく、またはいくつかのレベルのインターリーブの発生を低減するべく、いくらかの遅延が存在してもよい。追加のインターリーブが他のポートにおいてバブルの発生をもたらし、更により多くのインターリーブをもたらすからである。例えば、フリット送信ストリームに追加された複数のフリットを有する現在のパケットが残された若干のフリットを有し、将来の先取りパケットが大きい場合、現在のパケットの先取りが行われないように、ロジックは、現在のパケットが完了するまで待機し得る。先取りイベントに応答して、アクティブなVLは、プッシュおよびポップのインターリーブスキームを用いてVLlからVL2に切り替えられる。任意選択で、VLマーカインターリーブスキームが用いられ得る。
VLlからVL2に切り替えられるアクティブなVLに応答して、VL2に対する証拠は、アクティブなVLレジスタにロードされ、VLlはスタック上にプッシュされる。時間Tにおいて図示されるように、複数のフリットの第1のグループ1616は、VL2のバッファ1604のFIFOからプルされ、フリット送信ストリーム1608に追加される。これにより、パケット2を優先してパケット1の送信の先取りをもたらすと共に、パケット1およびパケット2からの複数のフリットをインターリーブする。
時間Tにおいて、パケット3の第1の部分は、VL3バッファ1604において受信され、ヘッドフリット1618から開始する。VL3はVL2よりも高い優先度を有するので、第2先取りイベントは、アービタ(または他のロジック、図示せず)により検出される。これにより、VL3の証拠をアクティブなVLレジスタにロードしてVL2をスタック上にプッシュすることによりもたらされる送信パケット3を優先して先取りされるパケット2の送信をもたらす。図示されるように、時間Tで開始し、パケット3に対する複数のフリット1620全体が、フリット送信ストリーム1608に追加され、従って、パケット2の複数のフリットを用いてパケット3の複数のフリットをインターリーブする。
テールフリット1622をフリット送信ストリーム1608に追加することに関連して、アービタ(または他のロジック)は、パケット3からの複数のフリットを追加することが完了したことを検出する。従って、VL3は、アクティブなVLレジスタから除去され、VL2は、スタックからアクティブなVLレジスタへとポップされ、VL2をアクティブなVLとして返す。これにより、フリット送信ストリーム1608に追加されるパケット2の残余のフリット1624をもたらし、時間Tにおいて開始し、テールフリット1626が追加され、従ってパケット2が完了したことを検出する時点時間Tで終了する。これにより、スタックからアクティブなVLレジスタへとポップされるVL1をもたらし、VL1は、アクティブなVLとしてVL2を置き換える。次に、パケット1の残余の複数のフリット1628は、フリット送信ストリーム1608に追加され、時間Tにおいてテールフリット1630で完了する。次いで、次のファブリックパケットに対するヘッドフリットは、LTP7の最後のフリットとして追加される(次のファブリックパケットは、簡潔にするべく示されていない)。
図17は、先取りインターリーブイベントが後に続く、バブルインターリーブイベントを図示する。ファブリックパケットの複数のフリットが複数のホップを含むルーティング経路をトラバースする場合、複数のフリットの一部は、1または複数のスイッチにおいて先取りされ得る。これにより、所与のFPに対するフリットストリームの中断をもたらす。そのような中断されたフリットストリームが受信ポートにおいて受信される場合に、先取りの前に送信された複数のフリットの一部と先取り後に送信された複数のフリットの一部との間のギャップが存在する。これにより、「バブル」をもたらす。このバブルの例に加えて、バブルは、他の様々な理由からも生じ得る。そのようなバブルの検出に応答して、インターリーブは、バブルを有するFPと同一か、またはより低い優先度レベルを有する複数のFPからのフリットを用いて実装され得る。
図16の例におけるように、時間Tにおいて、少なくともヘッドフリット1700を含むパケット1の第1の部分が、VL1 FIFOのバッファ1602において受信され、時間Tの開始時おいて、フリット1702の第1の部分がフリット送信ストリーム1704のLTP2に追加される。時間Tにおいて、パケット2の複数のフリットの第1の部分は、VL2のFIFOバッファ1604において受信され、ヘッドフリット1706を開始する。VL1およびVL2の双方には、低い優先度が割り当てられ、従って、パケット1およびパケット2の各々には、同一の低い優先度レベルが割り当てられる。複数のFPおよび/またはその複数のフリットは、同一の仮想レーンに割り当てられると互いにに送信することができないが、複数のFPおよび/またはその複数のフリットは、異なる仮想レーンに割り当てられると互いに送信することを許可される。異なる複数の仮想レーンが同一の優先度レベルを有する場合にも、この状況は生じ得る。一般に、2つ(またはより多くの)仮想レーンにおける複数のFPが同一の優先度レベルを共有する場合、複数のFPは、(そのフリットを介して)フリット送信ストリームに全体として追加され、例えば、第1のFPに対する全てのフリットが追加され、第2のFPに対する全てのフリットが追加される、等である。同一の優先度レベルを共有する複数のVLから、どのFPを次に送信するかの選択は、アービタ選択ロジックの機能であり、これは一般に、複数のVLにおけるFPの送信を等しく(または相当に等しく)扱うように設計される。例えば、いくつかの実施形態において、ラウンドロビンスキームが実装され得る。そのようなラウンドロビンスキームは、複数のVL全体でのバッファの使用レベルがいくつかのレベルを目標とするように、複数のFPの長さも考慮し得る。例えば、2つのVL間のラウンドロビンのみによる手法は、VLにおいて複数のFPの交互の送信となるが、使用レベルの手法は、複数のVLのうち1つから第1のFPを送信し、その後に第1のFPが第2および第3のFPよりも著しく大きい場合に、他のVLから第2および第3のFPを送信し得る。
図17において図示された例の下で、通常、パケット1に対する複数のフリットの全てが送信され、その後にパケット2に対するフリットの全ての送信が続く(先取りインターリーブイベントが存在しないものと推定し、VL1およびVL2のみが仲裁について考慮される)。しかし、図示されるように、時間Tにおいて開始するパケット1に対する複数のフリットの転送において、バブルが存在する。アービタロジックは、バブルの存在を、VL2 FIFOバッファ1604におけるパケット2の複数のフリットの利用可能性と組み合わせて考慮する。応答して、バブルインターリーブイベントが検出され、これにより、時間Tで開始するパケット1の複数のフリットを用いてインターリーブされるパケット2の複数のフリット1708をもたらす。先取りインターリーブについてのように、インターリーブの始動は、VL2をアクティブなVLレジスタにロードし、VL1をスタック上にプッシュすることにより開始する。
パケット2からの複数のフリットは、フリット送信ストリーム1704に追加されているが、時間Tにおいて、パケット1に対する複数のフリットの第2の(および残余の)部分は、VL1 FIFOのバッファ1602において受信およびバッファ処理され始める。これらのフリットは、即値送信に利用可能であるが、時間Tにおける受信は、インターリーブイベントを生成しない(またはそうでなければ、パケット2からの複数のフリットのインターリーブを終了する)。むしろ、VL3のFIFOバッファ1606におけるヘッドフリット1710を含む、パケット3の複数のフリットの利用可能性を検出したことに応答して、先取りインターリーブイベントが時間Tにおいて検出されるまで、パケット2からの複数のフリットは、フリット送信ストリーム1704に継続して追加される。図16の例におけるように、VL3は、VL1またはVL2に対する優先度レベルよりも高くなる、高優先度レベルを有する。結果として、高い優先度のパケット3に対する複数のフリットの利用可能性は、パケット2の複数のフリットを用いてパケット3の複数のフリット1712の先取りインターリーブを始動させ、時間Tにおいて開始し、テールフリット1715を追加して時間Tにおいて完了する。パケット3のインターリーブの完了時に、VL2は、スタックからポップされてアクティブVLレジスタにロードされ、このようにしてVL2をアクティブな仮想レーンとして返す。これにより、パケット2の残余のフリット1716のフリット送信ストリーム1704への追加をもたらす。
パケット2の完了時に、テールフリット1718により、時間T10においてフリット送信ストリーム1704に対して識別されたように、VL1は、スタックからポップされ、アクティブなVLレジスタへとロードされ、VL1をアクティブなVLとして返す。これにより、パケット1の残余の部分に対応するフリット1720のフリット送信ストリーム1704への追加をもたらし、パケット1に対する複数のフリットの追加は、テールフリット1722が時間T11において追加されると完了する。
リンクの信頼性
上述のように、アーキテクチャのファブリックは、「ロスレス」であり、受信時にパケットが破棄されることはなく、またはそうでなければ送信中に「失われる」ことはないことを意味する。これは、主として、クレジットベースのフロー制御の使用および複数の再生バッファの使用を含む、複数のメカニズムの組み合わせにより実現される。クレジットベースの手法の下で、送信ユニットがフリットを送信するクレジットを有しない場合、送信ユニット(例えば、HFI、スイッチまたはゲートウェイ)は、フリットを受信ユニット(例えば、別のHFIまたはスイッチ)に送信しない。クレジットは、1VL毎ベースであり、レシーバがフリットに用いられるVLに対して適切なバッファ空間を有することを示すべく、用いられる。
標準的検出または強化検出のLTPが用いられるかに応じて、各LTPは、データ整合性を検証するべく用いられる1または複数のCRCを含む。図5〜8および上記に図示されるように、CRCは、LTPのデータコンテンツを介して算出され、もたらされるCRC値は、最後のフリット(フリット15)の後のLTPの最後に付けられる。受信されると、CRCは再度算出され、CRCおよび受信済みLTPと、受信済みデータにおけるCRCとの間で比較され、任意のデータエラーか否かが判断される。送信済みCRCおよび受信済みデータを介して算出されたCRCが一致しない場合、データエラーが検出される。CRC不一致の検出に応答して、LTPは、再生バッファを用いることにより、再送信される。
複数の「信頼できる」LTPは、再送信要求がなければ、ピアにより首尾よく受信されたことを示すことを保証するのに十分長い期間、再生バッファに保持される。この手法の下で、レシーバは、パケットが首尾よく受信されたことをアクノリッジするACKを送信しない。むしろ、ラウンドトリップ期間内に再送信要求がないことにより、リンク全体でLTPが首尾よく転送されたとの黙示的アクノリッジメントを提供する。「信頼できる」LTPという用語を用いることにより、再生バッファ中に保持されるLTPを、Null LTP等、再生バッファ中に保持されない他のLTPと区別する。従って、Null LTPは、再送信されない。
複数の再生バッファ位置ポインタは、各LTPについてトランスミッタ(NxtTxLTP)およびレシーバ(NxtRxLTP)で維持されるが、LTPの一部として交換されない。送信エラーがレシーバ(CRC不一致による)により検出されると、NxtRxLTP再生バッファ位置ポインタを含むRetryReqLTPを、トランスミッタに送信する。トランスミッタにおいてRetryReqLTPを受信すると、再生バッファにおける複数のLTPは、元の順序で再送信され、RetryReqLTPを開始し(ピアNxtRxLTP)、書き込まれた最後の再生バッファ位置で終了する。一実施形態において、LTPデータを(NxtWrLTP)に書き込む次の再生バッファスロットが用いられ、従って、書き込まれた最後の再生バッファの位置は、NxtWrLTP−1である。
CRC不一致により示されるリンクエラーの検出に関連して、第2のメカニズムはどのレーンが不規則かを判断するべく実装される。このメカニズムは、レシーバのみにおいて算出される1レーン当たりのCRCを使用し、送信済みのデータにおける1レーン当たりのCRCとの比較を用いない(存在しないからである)。むしろ、レーン当たりのCRCは、以下に検討されるように、CRC不一致を用いてLTPについて算出される1レーン当たりのCRCを、1レーン当たりまたは1転送グループ当たりのベースのいずれかで、再生バッファを介して再送信されるときの同一のLTPについて再度算出される対応する1レーン当たりのCRCと比較するべく用いられる。
複数の不規則なレーンを検出することを目的とする、1レーン当たりのCRCの使用を伴う再生バッファの使用の例は、図18Aおよび18Bに図示される。この例において、LTP送信ストリーム1604のLTP2、3、4、5、6および7を含む、LTP送信ストリームは、デバイスAのリンクインターフェースAからリンクの他の端部におけるピアデバイスBのリンクインターフェースBへと送信されている。より詳細には、LTP送信ストリームは、上述したように、図17に示されるものに類似した4つのレーンリンク相互接続を用いて、リンクインターフェースAの送信ポート1800からリンクインターフェースBの受信ポートへと送信される。アーキテクチャの複数のリンクの下で、LTPコンテンツは、パラレルに複数のレーンを介してシリアルに送信される。上述のように、レーンの数は、特定のリンク構成に応じて異なり得る。更に、低減した数のレーンを有する複数のリンクの転送もサポートされる。例として限定することなく、1つのビットは、単位インターバル(UI)と呼ばれる期間中に各レーンを介して送信される。一実施形態において、LTPデータの転送は、転送単位(XFR)と呼ばれるデータ単位に分割される。一実施形態において、各XFRは32ビットの量である。一実施形態において、XFRの全てのビットは、同一のレーンを用いて送信される。いくつかの実施形態において、いくつかのXFRは、複数のレーンを介して送信され得る。
図19は、標準的検出LTPのXFRのマッピングを図示し、1056ビットの長さを有する。各XFRは32ビットの長さであり、1つのレーンを介して転送される。従って、各LTPに対して33XFRがある。図20は、一実施形態による、4つのレーンリンクに対する1レーン当たりのXFRマッピングを示す。名目上、図示の目的および簡潔のために、各フリットは64ビットである。しかし、図3に図示されるように、各フリットは、自身のフリットタイプを識別するべく、(ボディフリットに対して)全体的に、または(ヘッドおよびテールフリットならびに制御フリットに対して)部分的に用いられる、追加の65番目のビットを有する。送信中に、65番目のビットは、インラインで送信される。これは、複数のレーンを介してパラレルに送信された複数のシリアル転送ビットストリームが非シリアル化および再アセンブルされると、65番目のビットが1056ビットの標準的検出LTPにおける全ての65番目のビットの位置を提示することを意味する。
4つのレーンリンクの一実施形態において、2つのフリットに対するデータビットは、4つのXFRを含む128ビットが(論理的に)一緒に転送されるように、32UIを介してパラレルにリンク経由で転送される。しかし、上述のように、全ての65番目の位置は、フリットタイプのビットにより占められる。結果として、複数のXFRは、複数のフリットを用いて2:1で正確にマッピングしない。むしろ、追加の65番目のビットのインラインの存在により、図21に図示されるラッピング転送をもたらす。
更に詳細には、一実施形態において、追加の2ビットは、各128UIについてラッピングされ、4つのレーンXFRの8つのグループが完了した後、16ビットのアグリゲーションをもたらす。これら8つのグループは、最初の32XFRを含み、33番目のXFRは、最後の16ビットのフリット15(その65番目のビットと共に)を含み、その後に16ビットのCRC(または任意選択で、14ビットのCRCと共にCRC−14LTPの2つの制御チャネルビット)が続く。例示的目的および理解を促すために、複数のフリットは、本明細書において64ビットの単位で転送されるものとして図示され得る。しかし、一実施形態において、複数のフリットが実際には65ビットの単位で転送されることが理解されるであろう。
図20の4レーンXFRマッピングに戻ると、33XFR/1056ビットの標準的検出LTPを用いることで、各LTPにつき1XFRのラッピングをもたらす。同様に、これは、レーン0、レーン1、レーン2、レーン3のレーンのシーケンスを開始し、レーン0、レーン1等に戻るLTPにより、後続の各LTPの開始点を次のレーンにシフトさせる。これは、本明細書において4レーンの標準的検出LTPの「シーケンス」、または単に略してLTPシーケンス(本明細書において図示および検討される4つのレーンを介した標準的検出LTP転送に適用される)と呼ばれる。便宜上、LTPシーケンスの状態は、第1、第2、第3および第4として図示されるが、一実施形態において、2ビットを用いて0、1、2、3として追跡される。
図18Aに示されるように、LTP送信ストリーム1604における複数のフリットのシリアル化およびマッピングは、送信リンク制御ブロック1804により実行される(またはそうでなければ、このオペレーションの一部は、示されない別のブロックにより実行される)。送信リンク制御ブロック1804により処理される前に、信頼できる各LTPに対するデータコンテンツは、再生バッファ1806における複数のLTPスロットのうち1つにコピーされ、スロットは、NxtWrLTPポインタ1807により識別される。一般に、再生バッファは、可変サイズまたは予め定められたサイズを有し得る。一実施形態において、再生バッファは、予め定められた複数のサイズのうち1つに対して選択的に構成され得る。
図示されるように、一実施形態において、再生バッファは、最後のFIFOスロットから第1のFIFOスロットへと逆にラッピングする(この例においてスロット7から0へとラッピングする)値を有する、次の送信LTP(NxtTxLTP)ポインタ1808を用いて円形FIFOとして実装される。円形FIFOを用いることにより、新しい(送信される次の)LTPデータにより上書きされる前のLTPデータ(すでに送信されたLTPに対応する)をもたらす。しかし、以下に詳述されるように、LTPデータが首尾よく転送されたとの黙示的アクノリッジメントが検出されるまで、LTPデータが上書されないように保証する複数の措置が提供される。このスキームは、明示的ACKを用いることを必要とすることなく、リンクを介したデータの信頼できる送信を促し、従ってACKの使用に関連するオーバヘッドを低減する。また、これにより、リンクレイヤ以上の複数のプロトコル(TCP等)に用いられるACKベースの信頼できる複数の送信スキームをサポートするのに必要な、送信ポートにおけるバッファ処理を低減する。図22A〜22Eのフローチャート2200a〜e、ならびに図23Aおよび23Bのトランスミッタ状態マシン図2300およびレシーバ状態マシン図2350を参照して、不規則な複数のリンクレーンの検出を含む複数のリンクエラーの処理が、一実施形態による以下のように実装される。リンク初期化処理中に、様々な情報は、リンクインターフェースのピア送信ポートとピア受信ポートとの間で交換され、双方向の通信リンクを確立する。この処理中に、再生バッファのNxtTxLTPポインタ1808および受信側の対応する次の受信LTP(NxtRxLTP)ポインタ1810が0に初期化される。首尾よくリンクが初期化されると、リンク転送モードは、開始ブロック2202、ならびに図23Aおよび図23BのトランスミッタおよびレシーバのLinkTransferActive.normal状態により図示されるように「通常」に設定される。複数のLTPは、リンク全体で転送される準備ができた状態になる。明確にするために、以下は1方向に転送されるデータに焦点を当てる。類似の複数のオペレーションは、(別個のセットのレーンを用いて)逆方向で実行され、リンクを介した双方向の通信をサポートする。
LTP送信ストリーム1604における複数のLTPは、シーケンシャルに送信され、LTPのデータは、再生バッファ1806にシーケンシャルにコピーされ、NxtTxLTPポインタ1808は、1LTP毎に1つのスロットを前進させる(または最後のスロット(MyLTPmax)に到達すると、0に再びラッピングする)。図18Aにおいて図示された例示的状態において、LTP2〜6は、送信ポート1800からすでに送信されており、LTP2および3は、受信ポート1802によりすでに受信され、Rxリンク制御ブロック1805により処理され、LTP CRCの一致に基づいて良好なLTPと判断された。LTP4は、受信されようとしているが、LTP5および6は、インフライト状態である。(これらのLTPのデータは、トランスミッタポート1800からアウトバウンドで送信されているが、受信ポート1802においてまだ受信されていない)。フローチャート2200aに戻ると、主要フローチャートのループがブロック2204において開始し、ここでLTPは、受信ポートにおいて受信される。図18Aの例において、このオペレーションは、受信ポート1802において受信されるLTP4により図示されている。ブロック2206において図示されるように、各レーンに対して、適用可能なLTPシーケンス状態の間に当該レーンを介して受信されたデータに基づいて、CRCが算出され、CRCは、CRCレーンレジスタCRC−L0、CRC−L1、CRC−L2、およびCRC−L3により図示されるように、1レーン当たりのCRCレジスタに書き込まれる。一実施形態において、これらのレジスタにおけるデータは、複数のCRCレーンレジスタが最も最近処理されたLTPに対するデータのみを格納するように、現在のLTPのCRC計算結果により上書される。一実施形態において、4つのレーンリンクに対する1レーン当たりのCRCは、各レーンに対する複数のビットが受信されるときに動的に算出される、12ビットCRCである。
ブロック2208において、受信済みLTPデータ(Rx CRC)に対するCRCが算出され、送信済みLTPにおけるTx CRCと比較される。本明細書の様々なLTPフォーマットに図示されるように、Tx CRCは、レシーバに送信され、LTPの最後に添付されるLTPデータを用いて、送信ポート1800により算出される。レシーバは、受信済みLTPデータからTx CRCを抽出し、Tx CRCを、受信済みのLTPデータを介して算出されたRx CRCと比較する。決定ブロック2210において、受信済みTx CRCおよび算出済みRx CRCが一致するか否かが判断される。ブロック2212に図示されるように、一致する場合、LTPは良好とみなされ、LTPデータの通常処理が実行され、ロジックはブロック2204に戻り、次の受信済みLTPを処理する。
図18Aに示される例において、Tx CRCおよびRx CRCがLTP4について一致せず(CRC不一致)、これは、LTPデータのエラーを示す。複数のリンクデータエラーは、様々なリンク状態から生じることがあり、この点については、エラーを引き起こしている特定のリンク状態は、不明である。知られているのは、受信されたLTPデータが送信されたものと異なることであり、従って、受信済みLTPは不規則なデータを有し、更に処理されない。不一致のLTP CRCは、決定ブロック2210における「いいえ」の結果に対応し、LTPが不良として図示され、これにより、レシーバ状態図2350においてRcvBadLTPによっても図示されているブロック2214に、ロジックは進む。ブロック2216(図22A)、2218および2220(図22B)の各々における複数のオペレーションにより図示されるように、不良LTPの検出に応答して、複数のオペレーションは始動し、実質的にパラレルに実行される。
ブロック2216に図示されるように、不良LTPについて算出された1レーン当たりのCRC値は、1レーン当たりまたは1XFRグループ当たりのベースで格納される。1LTP当たりのXFRの数がレーンの数で均等に割り切れない場合、1レーン当たりのCRC値は、1レーン当たりのベースで格納される。そうでなければ、1レーン当たりのCRC値は1XFRグループ当たりのベースで格納される。例えば、3つのアクティブなレーンおよび33のXFRを有するリンクについては、33/3=11であるので、1レーン当たりのCRC値が格納される。逆に、4つまたは2つのレーンについては、1レーン当たりのCRC値は、1XFRグループ当たりのベースで格納される(33/4=7.5および33/2=16.5)。1XFRグループ当たりのCRCが格納されると、受信済みのLTPシーケンス状態は、レジスタ1814に格納される。
1XFRグループ当たりのCRCの例が図24に図示される。示されるように、1レーン当たりのCRCが算出されるXFRの数は、4つのレーン全体で等しくはない。むしろ、複数のレーンのうち1つは、9つの32ビットXFR(従って288ビット)/標準的検出LTPを受信するが、他の3つのレーンは、8つの32ビットXFR(従って256ビット)を受信する。更に、9つの32ビットXFRを受信するレーンは、LTPシーケンス状態に依存する。以下に更に詳細に検討されるように、格納済みの1レーン当たりのCRCは、CRC不一致を有するLTPの1XFRグループ当たりのCRCおよび同一のLTPの次の再送信を比較することにより、レーンまたは複数のレーンのどれがエラーを生成したかを検出するべく、用いられる。元のLTP送信に用いられるLTPシーケンスは、再送信済みLTPに用いられるLTPシーケンスとは異なることがあり、1XFRグループ当たりのCRCが使用される。1XRFグループ当たりのCRCは、同一の複数のXFRによる算出された複数のCRCの比較をもたらすが、1レーン当たりのCRCスキームが用いられた場合、これは、4つのレーン(同一の場合の25%の可能性)または2つのレーン(同一の場合の50%の可能性)を用いてリンクを動作させるときの同一のXFRによるCRC計算をもたらすか、またはもたらさないことがある。
図24に示されるように、1XFRグループ当たりのCRCは、CRC−G0、CRC−G1、CRC−G2およびCRC−G3とラベリングされている。これらのCRCが算出される転送は、レーンおよびLTPシーケンス状態の双方に依存する。例えば、第1のLTPシーケンス状態については、CRC−G0は、レーン0において受信された9つのXFR0、4、8、12、16、20、24、28および32から算出されるが、CRC−G1、CRC−G2およびCRC−G3について算出された複数の値は、レーン1、2および3に各々図示された8つのXFRに依存する。第2のLTPシーケンス状態下では、CRC−G0は、レーン1における9つのXFRから算出されるが、CRC−G1、CRC−G2およびCRC−G3について算出された複数の値は、レーン2、3および1に各々図示された8つのXFRに依存する。示されるように、類似手法は、第3および第4のLTPシーケンス状態の双方に用いられる。
図18Aに図示されるタイムフレームの間、LTPシーケンス状態は1であり、従ってCRC−G0、CRC−G1、CRC−G2およびCRC−G3は、レーン0、1、2および3におけるLTP4について受信されたデータから各々算出される。1XFRグループCRC−G0、CRC−G1、CRC−G2およびCRC−G3当たりのLTPの値の例示的算出は、図18Aおよび25に示され、各々、428、556、208および804である。これらの1XFRグループ当たりのCRC値は、レジスタCRC−GO、CRC−G1、CRC−G2およびCRC−G3に格納される。
図22Bのフローチャート2200bにおけるブロック2218を続けると、再送信要求(RetryReq LTP1812)は、レシーバからトランスミッタへと返され、NxtRxLTPポインタ1810により現在の値に対する不良LTPを識別する。一実施形態において、RetryReq LTPのシーケンシャルなペアが送信されるが、別の実施形態においては、1つのRetrReq LTPが送信される。この例において、NxtRxLTPポインタの値は、再生バッファのスロット4を指し、これにより、不良LTPであるLTP4のデータを格納する。RetryReq LTPを受信することに応答して始動される再生モード時のトランスミッタ側の複数のオペレーションの詳細は、図22Cのフローチャート2200cに示されている。
また、ブロック2216において不良LTPを検出すると、LTP受信モードは、ブロック2220の「LTPトス」に設定され、不良LTPを含む、トス(破棄)される複数の受信済みLTPをもたらす。LTPトスモードは、レシーバ状態図2350において、LTA.RxTossing状態として図示されている。レシーバはLTPトスモードで操作される間、複数のLTPが受信され、1レーン当たりのCRCが算出され、レジスタが更新され、LTP CRCエラーチェックが実行されて複数のシーケンシャルLTP CRCエラーが検出され、複数のLTPが破棄される。これらのオペレーションは、ブロック2222においてLTPを受信することで開始するループ状の形で実行される。上記のように、ブロック2206および2208の複数のオペレーションが実行され、その後、決定ブロック2224において、受信済みLTPがCRCエラー(Tx CRCおよびRx CRCの不一致)を有するか否かが判断される。レシーバは、LTPトスモードで操作されるが、ロジックは、複数のシーケンシャルLTP CRCエラーの発生をチェックするように構成される。例えば、入力LTPトスモード後の第1の受信済みLTPがエラーを有する場合、複数のシーケンシャルエラーが生じる。複数のシーケンシャルエラーを検出するための判断は、決定ブロック2226により図示され、ロジックは、決定ブロック2224に対する応答が「はい」の場合に進む。更に、合計のLTP CRCエラーカウントは、ブロック2225においてインクリメントされる。(通常モードまたはトスモードにあるか否かに関係なく、合計LTP CRCエラーカウントは、各LTC CRCエラーの検出に応答してインクリメントされることにも留意されたい)。.
CRCは、パケット、フレーム等、複数の送信済みデータ単位におけるエラーを検出するように構成されたデータ整合性チェックである。CRCの数学的定式化は、CRCが複数のビット送信エラーを検出するように選択され、デジタルデータのバイナリの性質を生かし、複数のCRCがバイナリ量を介して迅速に算出されることを可能にする。しかし、CRCは100%フェールセーフではない。CRCチェックは、ビットエラーの数がCRCのハミング距離に等しいか、またはこれを超える場合に、複数のエラーを検出できない可能性がある。複数のネットワークファブリックにおいて用いられるCRCのハミング距離は通常、4であり、エラーが未検出のままになる可能性(極めて低い確率)を開く、少なくとも4ビットのエラーを有することを意味する。複数の未検出リンクエラーは、「偽のパケット受け入れ」と呼ばれるものをもたらし、複数のエラーを有するパケットがCRCチェックを(偽って)通り抜け、従って更なる処理が受け入れられることを意味する。これらの未検出エラーは、パケットサイレントデータの破損をもたらす。
LTPは、およそ1000ビットのサイズである。所与の平均ビットエラーレート(BER)において、検出が見落とされる確率は、エラーが複数のLTP全体で時間において分散された、均一な複数のエラーパターンに対する1つのリンク転送パケット内で、エラーが相関付けられ、バースト(4またはそれより大きい)で生じた場合、より高くなる。
ネットワークファブリックリンクは、非常に低いが、ゼロではないBERを設計するように提供されている。リンク電力を低減するという要望により、より高いBERを可能にする動機が提供される。BERは、電力が低減されれば向上する。BERが向上すると、見落とされるエラーの検出の確率が向上する。いくつかの点で、この確率は受け入れられない程に高い。ファブリック内の多くのリンク全体におけるBERは、均一でない。通常、リンクは複数のレーンから構成され、BERは、所与のリンク内の複数のレーン全体で大きく異なり得る。従来の手法の下で、ファブリック管理ソフトウェアがいくつかの閾値BERで動作するリンクを検出する場合、ファブリック管理ソフトウェアは、データ破損の受け入れられない程に高い確率を回避するべく、リンクをファブリックから除去せざるをえない。これは、リンク内のエラー分散について知ることなく実行され、複数のエラーが相関付けられていると想定する控えめな小さいBER閾値を用いざるを得ない。更に、複数のリンクのBERは、長い期間にドリフトおよび/または劣化し、受け入れられない程に高くなり得る。ファブリックマネージャは、常に全てのリンクをリアルタイムで継続的に監視できるわけではない。結果として、リンクが高過ぎるBERで動作していることを検出するにはいくらかの時間がかかることがある。この時間中に、ファブリックがデータ破損の可能性に晒される。
密接して配置された複数のビットエラーの1つのチェック法は、決定ブロック2224におけるLTP CRCエラーチェック、および決定ブロック2226におけるシーケンシャルLTP CRCエラーチェックを用いることによるものである。少なくとも1つのエラーが検出されていることを識別するべく、複数のCRCが用いられ得るが、これらは、どのくらい多くのエラーが存在するかを識別しない。しかし、シーケンシャルLTP CRCエラーは、少なくとも2つのエラーがシーケンシャルなLTPに存在することを示す。一実施形態において、シーケンシャルLTP CRCエラーの検出に応答して、RetrainReq LTPのペアは、ブロック2228におけるトランスミッタに送信され、終了ブロック2232により図示された、終了してリンクをリトレインするフローチャートロジック、およびトランスミッタ状態マシン2300におけるRcvRetrainReqをもたらす。一実施形態において、このリトレインは、リンクを初期化または再初期化するときに使用されるリンクの(リ)トレインオペレーション程複雑ではない軽量リトレインである。トレインまたは再初期化中に、リンクの通常のアクティブ転送状態がオフラインになり、リンクトレインまたはリンク再初期化が完了して、リンクが通常のアクティブ転送状態に戻るまで、通常の複数のデータ転送オペレーションが、一時的に利用可能でなくなることを意味する。更に、レシーバは、ブロック2230においてRetrainReq LTPを送信したことを示すようにいくつか内部証拠を設定し、リンクのシーケンシャルエラータイマは、ブロック2231においてリセットされ、リンクのシーケンシャルエラータイマの使用の更なる詳細は、図22Eに示され、以下に検討される。トレインシーケンスが完了すると、ロジックは、フローチャート2200bのブロック2218および2220に戻り、再試行要求LTPが送信側に再度送信され、レシーバにおいて、LTPトスモードに再び入る。
LTPトスモードループは、再試行マーカLTPの受信に応答して終了し、従って、受信済みのLTPがCRCエラーを有しない場合、ロジックは、LTPトスモードにある受信済みの良好な各LTPが再試行マーカか否かについて判断する、決定ブロック2234に進む。再送信要求を受信する前に、トランスミッタは、複数のLTPを継続してシーケンシャルに送信し、(ある場合には)これらのLTPは、既にインフライト状態の複数のLTPと共に受信される。図22Cのフローチャート2200cのブロック2238、2240および2242に示されるように、再送信要求(RetryReq LTP)を受信すると、トランスミッタは、再試行マーカを送信し、その後に再生バッファ1806における複数のLTPの再送信が続き、再送信要求により返されたNxtRxLTPポインタ値により示されたスロットにおけるLTPを開始する。一実施形態において、1つの再試行マーカが送信されるが、別の実施形態において、再試行マーカのペアがシーケンシャルに送信される。一実施形態において、再試行マーカのペアは、送信された順序により識別される(例えば、RetryMrkr0、RetryMrkrl)。一実施形態において、複数の再試行マーカの各々は、Null LTPを含む。RetryMrkrLTP1816により図示れた1つの再試行マーカを用いる例は、図18Bに示されている。再試行マーカのペアが送信される場合、第2の再試行マーカ(RetryMrkrl)は、RetryMrkrLTP1816(RetryMrkr0)に直ちに続くことが理解されるであろう。
図18Aの例において、再送信要求を受信する前に複数のLTPをこのように継続して送信することにより、LTP5および6(インフライト状態)、7(次に送信された)、ならびにLTP0および1の順序での受信をもたらす。LTP5、6、7、0および1の各々は、再試行マーカではないので、決定ブロック2234に対する応答は、各々について「いいえ」であり、ロジックは、ブロック2236においてLTPを破棄することに進み、次にブロック2222にループバックして次のLTPを受信するが、依然としてLTPトスモードにある。次の複数の受信済みLTPの処理は、再試行マーカLTPが受信され、決定ブロック2234において検出されるまで同一の形で継続する。
図18Bは、RetryMrkrLTP1816が送信され、受信され、受信ポート1802により処理され、LTP4が再送信され、受信ポート1802により受信され、その後、LTP5および6(インフライト状態)が再送信され、LTP7が再送信されようとしているタイムフレームを図示する。LTP4、5および6の各々は、「再生」LTPを含む。図18Bにも示されるように、スロット0および1における再生バッファデータ(図18Aに示される)は、自身の元の送信に関連するLTP0および1の対応するフリットデータを用いて上書されるが、これはRetryReqLTP1812を受信し、RetryMrkrLTP1816を送信する前に行われる。
上記のように、信頼できる各LTP送信に対して、LTPのデータは、NxtTxLTPポインタ1808により識別された再生バッファ1806におけるスロットにコピーされ、信頼できる各LTPについてインクリメントされる。このようにして、NxtTxLTPポインタ1808は、LTP7、0および1の各々を送信することに関連してインクリメントされる(NxtTxLTPポインタは、7から0へと逆にラッピングすることに留意されたい)。LTP1は送信されるが(またはその直前)、送信ポート1800は、RetryReqLTP1812を受信している。応答して、送信ポート1800は、RetryMrkrLTP1816(またはRetryMrkrl LTPが後に続く、RetryMrkr0 LTPを含む再試行マーカのペア)を戻す。RetryMrkrLTP1816は、Null LTPであるので、そのデータコンテンツは再生バッファ1806にコピーされず、NxtTxLTPポインタ1808は進められない。逆に、信頼できるLTPか、またはNull LTPかに関わらず、Tx LTPシーケンス状態は、送信済みの各LTPについて進められる。
決定ブロック2234に戻ると、RetryMrkrLTP1816を受信する場合に、それは再試行マーカとして識別され、フローチャートロジックは、図22Dのフローチャート2200dに進む。ブロック2252に示されるように、再試行マーカが処理され、レシーバは、次の再生済みの不良LTPを受信することに備えて、カウントダウン値を設定する。一実施形態において、不良LTP再生オフセットは、不良LTPの再送信が再試行マーカ後の複数のk LTPを開始することを示すように、再試行マーカに対して使用される。再試行マーカのペアを使用する一実施形態において、不良LTP再生オフセットは、第2の再試行マーカに対しては1つ小さくなる。ブロック2240にも図示されるように、不良LTP再生オフセットを考慮して、レシーバは、LTPオフセットに基づいて不良LTP再生カウントダウンを始動する。これは、ブロック2256において不良LTPの再生を検出するべく用いられる。更に、レシーバは、ブロック2254におけるラウンドトリップマーカLTP(またはラウンドトリップマーカLTPのペア)を返し、LTP受信モード(受信状態)は、ブロック2254において通常に戻され、フローチャートロジックは、ブロック2204に戻り、次パケットを受信する。これは、Send RndTripMrkr Pair stateにより図示され、レシーバ状態図2350のLinkTransferActive.normal状態に戻る。図18Cを参照して後述するように、ラウンドトリップマーカLTPは、再試行マーカLTPに応答して返され、複数の再生バッファLTPが上書され得るか否かに対する判断を促す。
RetryMrkrLTP1816(またはRetryMrkr0LTPおよびRetryMrkrl LTP)を送信した後、複数のLTPの再生(再送信)が始動され、RetryReqLTP1812(この例においてLTP4)において返されたNxtRxLTPポインタにより識別された、不良LTPの再送信を開始する。トランスミッタが再生モードにある間、送信済みデータは、再生バッファ1806に格納されたLTPの再送信を含む。複数の再送信済みLTPは、再生バッファのFIFOにおける自身の順序に基づいて、送信ポート1800からシーケンシャルに送信され、NxtRxLTPポインタが指したLTPを開始する。
再送信済みの各LTPについては、送信済みデータは、LTPが初めに送信されたときと同一である。不良LTP再生カウントダウン(および再生済みの不良LTPを受信することに関連する複数のオペレーション)以外は、受信側ロジックは、受信済みLTPデータが初めに送信されたLTPまたは再送信されたLTPに対応するか否かに依存しない。従って、ブロック2204、2206および2208、ならびに決定ブロック2210における複数のオペレーションが実行され、1レーン当たりのCRC計算、受信済みLTPデータを介したRx LTP CRCの算出およびRx LTP CRCのTx LTP CRCとの比較をもたらす。エラーが存在する場合、決定ブロック2210における「いいえ」の結果により示されるように、ロジックは、ブロック2214に戻り、不規則な再送信済みLTPは、新しい再生シーケンスを始動し、これに基づいて、不良LTPが再び再送信される。これは本質的に、不良LTP4および再生バッファ1806からの後続のLTPの再送信に関連して上述した複数のオペレーションを反復する。
再送信された不良LTP4が良好であると推定し、ロジックは、ブロック2258へと進む。このブロックにおいて、レジスタCRC−GO、CRC−G1、CRC−G2およびCRC−G3にすでに格納された1レーン当たりのCRC値は、再送信済みのLTP4の各レーンを介して受信されたデータについて算出された1レーン当たりのCRCと比較され、動作するレーンの数に応じて1レーン当たりまたは1XFRグループ当たりのベースで比較する(1レーンおよび1XFRグループ当たりの比較は、転送グループの数が同一であり、従って1XFRグループ当たりの比較が常に実行され得る場合には同等であることに留意されたい)。上記から、1レーン当たりのCRCは、4つのレーンリンクに対して1XFRグループ当たりのベースで比較される。
各送信済みLTPのTx LTPおよびRx LTPシーケンス状態の継続的インクリメントに関連して、LTP4が再送信される場合、LTPが初めに送信されたときのLTPシーケンス状態である1と比較したように、LTPシーケンス状態は3である。結果として、各レーン全体で送信されたXFRグループは、変更された。レーンとXFRグループのこのリマッピングが図25に図示され、図18Aおよび18Bにおける各レーンを介して送信された複数のXFRを比較することによっても理解され得る。上述のように、LTP4が初めに送信されたとき、LTPシーケンス状態は1であったが、LTP4が再送信される場合(図25の4Rにより図示される)、LTPシーケンス状態は3である。図18Bに戻ると、再送信済みのLTP4に対する1レーン当たりのCRCは、レーン0、1、2および3について算出され、次に、1XFRグループ当たりのCRCの比較が、フローチャート2200dのブロック2258において実行され、適用可能な場合に、不良レーンは、ブロック2260において、不一致の1レーン当たりまたは1XFRグループ当たりのCRCを識別することにより識別される。図18Aおよび18Bの例において、1XFRグループ当たりのCRC比較の結果は、CRC−GO、CRC−G1およびCRC−G3に対するCRCは一致するが、CRC−G1に対するCRCは一致しないことを示す。これは、レーン2が不規則であることを示す。レーン2は、初めに送信されたときの不規則なLTP4について、CRC−G1値が算出されたXFRグループに対応するからである。再送信済みLTP4において検出されたLTP CRCエラーは存在しなかったので、再生済みのLTP4に対するレーン2を介して送信されたデータにもエラーは(おそらくは)存在しなかったと認められた。ブロック2261において、識別された不良レーンに対するエラーカウントがインクリメントされる。レーンが断続的に不規則であるシナリオを考慮されたい。上述のように、決定ブロック2226および関連するロジックブロックのシーケンシャルLTP CRCエラーチェックは、リンクを介して送信されたデータにおいて密接して配置されたエラーを検出するための1つのメカニズムである。このメカニズムは、非常に密接して配置されたエラーを検出するが(複数のシーケンシャルなLTPにおけるエラーを必要とする)、どのレーンが不規則であるか、個々のレーンにおけるシーケンシャルエラーがどのくらい頻繁に生じるかを識別することはできない。
第2のBERチェックメカニズムの複数の実施形態によれば、1レーン当たりのエラー周波数がモニタリングされ、所与のレーンのエラー周波数(BER)が1レーン当たりのBER閾値を超えているか否かを判断する。一実施形態において、これは、(フローチャート2200dおよび2200eに図示される他のオペレーションおよびロジックに関連し、パラレルな形で実行される)1レーン当たりのシーケンシャルエラーカウンタおよびタイマを用いることにより実現される。
決定ブロック2262において、レシーバ状態がレシーバにより始動されたリンクリトレイン状態から生じている否かについて判断される。フローチャート2200bおよび上記のロジックにより示されるように、シーケンシャルLTP CRCエラーの検出は、複数のエラーを検出するレシーバにより始動されたリンクリトレインをもたらす。逆に、1つのLTP CRCエラーは同様に、再試行要求、再試行マーカ受信シーケンスを始動するが、リンクリトレインの始動をもたらさない。再生済みのLTPが良好であり、受信状態がリンクリトレインから生じない(すなわち、1つのLTP CRCエラーのみが検出されている)場合、決定ブロック2262に対する応答は「いいえ」であり、ロジックをブロック2264に進ませ、LTPが初めに送信されたLTPであるのと同様に処理される。次に、ロジックは、フローチャート2200aに戻り、(レシーバの視点から)初めに送信されたのと同様に、次の再生済みのLTPを処理する。
ここで、2つのシーケンシャルLTP CRCエラーがレシーバにより検出され、レシーバにより始動されたリンクリトレインをもたらし、決定ブロック2262に対する応答が「はい」であり、ブロック2266に進むロジックをもたらしたものと仮定されたい。このブロックにおいて、ブロック2260において判断された不良レーンに対するシーケンシャルエラーカウンタは、インクリメントされた。決定ブロック2268において、レーンに対するシーケンシャルエラーカウントが閾値に到達したか否かについて判断される。一般に、閾値は1、2等の整数である。一実施形態において、閾値は2であり、従って、1つのタイマ期間内の1つのレーンにおける2つのシーケンシャルエラーにより、レーンBER閾値の検出が始動される。一実施形態において、応答して、ロジックは、リンクが除去された不良なものとして検出されたレーンを用いて再初期化されるブロック2270を終了して進む。結果として、リンクのアクティブなレーンの数は、4つのレーンリンクが3つのアクティブなレーンに減るなど、1つのレーンにより低減される。
1レーン当たりのシーケンシャルエラーカウントが閾値に到達しない場合、決定ブロック2268に対する応答は「いいえ」であり、ロジックはブロック2204に進み、通常の受信状態で動作するレシーバおよびなおも再生モードで動作するトランスミッタを用いて次のLTPを受信する。
上述のように、一実施形態において、タイマスキームが用いられ、1レーン当たりのシーケンシャルエラーの周波数を検出する。図22Eのフローチャート2200eに示されるように、上記から、シーケンシャルな不良LTPの検出に応答して、ロジックはブロック2231に進み、タイマスキームを実装するための1セットのパラレルなオペレーションが始動する。ブロック2272において、適用可能な場合にタイマが開始し(第1の時間)、または再起動(リセット)される。決定ブロック2274および自体に対するループバックより図示されるように、タイマは、周期的にチェックし、満了したか否かを判断し、または任意選択で、タイマロジックは、満了したことを示すインタラプトまたは他の証拠を生成するように構成され得る。ブロック2276に図示されるように、タイマの満了時に、各レーンの不良シーケンシャルエラーカウンタはデクリメントされる。一実施形態において、最小の不良エラーカウントは0であり、従って既に0であるレーンエラーカウントについては、そのカウントはデクリメントされない。
複数のパラレルな処理の組み合わせは、以下の形で、個々のレーン上の複数のエラーが周波数閾値を超えたことを検出する(例えば、密接して配置されたエラーを示す複数のレーンを識別する)。複数のフローチャートオペレーションがブロック2258、2260へと進むロジックをもたらし、決定ブロック2264の結果が「はい」である度に、不良レーンのシーケンシャルエラーカウントはインクリメントされる。一方、複数のパラレルなタイマのオペレーションを考慮して、タイマが再起動されることなく満了する各時間は、タイマの期間が1レーン当たりのエラーなしで経過したことを示し、従って、各レーンの1レーン当たりのシーケンシャルエラーカウントは、1(〜最小値のゼロ)だけデクリメントされる。一実施形態において、2つがストライクし、レーンがアウトになり、これは、タイマ期間内の2つのシーケンシャルエラーを有するレーンに対応する。
1つのタイマに加えて、異なる複数の期間および異なる複数の関連カウント閾値にパラレルに、複数のタイマが用いられてもよい。例えば、これは観察される1レーン当たりのオペレーションの長期的視点を可能にするが、より短い1レーン当たりのBER閾値の検出も促す。また、期間中に必要とされるシーケンシャルエラーの数の閾値は、変更され得る。
フローチャート2200a〜eにおいて図示される実施形態の下で、不良レーンの除去と組み合わせたリンクの再初期化は、密接して配置された複数のエラーを示すレーンの検出からもたらされる。
しかし、これは限定を意味しない。シーケンシャルLTP CRCエラーの検出後に終了ブロック2232を終了した場合等、他の複数の状態下で、レーンは、リンクの再初期化および/またはリンクのリトレインに関連して除去され得るからである。例えば、リンクが再初期化されると、複数の1レーン当たりのエラーカウンタがチェックされ、エラーカウントがいくつかの閾値を超えたか否かを確認する。超過した場合、当該レーンは不良であるとマーキングされ、リンクがアクティブなオペレーションに戻った場合にアクティブにならない。
黙示的ACKを用いる信頼できるLTP送信の別の態様は、エラーなしで受信された黙示的確認の前に、再生バッファにおけるLTPが上書されないことを保証するメカニズムである。一実施形態において、これは、複数の再試行要求およびラウンドトリップマーカを用いることにより促される。上述のように、いくつかの実施形態において、返信バッファは固定サイズを有し、または複数の固定サイズのうち1つを用いて動作するように設定されるよう、構成され得る。更に、リンクピアのペアは、異なる複数のサイズの複数の再生バッファを使用し得る。
固定サイズの再生バッファを用いるときに、様々な処理レイテンシを更に考慮して、再生バッファは一般に、リンクのラウンドトリップトラバーサル中に転送され得るLTPの数よりも大きないくつかのLTPを保持するサイズである。これは、図18Aおよび18Bに図示される場合であり、再生バッファは8つのスロットを有し、リンクを介したラウンドトリップおよび反対方向のリンク経路を同時にトラバースし得るLTPの数は、およそ6または7LTPである。結果として、レシーバにおいて検出されたエラーが存在する場合、トランスミッタは、再生バッファにおける不良LTPのコピーが上書される前に、再試行要求を受信する。
しかし、実際的な複数の理由から、固定サイズの複数の再生バッファは、場合によっては全てのリンクの長さを処理するサイズではない。リンクの長さが大きくなる程、再試行要求を受信する前に、再生バッファから送信され得るLTPの数は大きくなる。いくつかの時点で、リンクの長さは、再試行要求スキームのみを用いても、再生バッファにおける不良LTPのコピーが、当該不良LTPに対する再試行要求を受信する前に上書されないことを保証するものではない。
これが、ラウンドトリップマーカの使用が適合する場合である。決定ブロック2244におけるフローチャート2200cに戻ると、ラウンドトリップマーカを受信することなく、複数のLTPの全ての再生が完了したか否かが判断される。図18Cに図示される構成においても、再生バッファ1806には8つのFIFOスロットが存在するが、リンクの長さは、ある時間に5つのLTPが「ワイヤ上」に存在し得、少なくとも10のLTPがラウンドトリップトランジットに存在し、および/またはレシーバにおいて処理されていることを意味する。結果として、再生バッファにおける複数のLTPのコピーの全ては、複数のLTPのいずれに対する再試行要求を受信する前に再送信され得、上書される潜在的な不良LTPのコピーをもたらす。これは、不良LTPが再送信されることを防止し、再生バッファの目的を覆すであろう。
このシナリオを受け入れるべく、トランスミッタは、決定ブロック2244に示されるように、ラウンドトリップマーカを受信する前に、複数の再生LTPの終わりに到達したか否かを検出するロジックを含む。本質的に、これは、再生バッファの深さがラウンドトリップの持続期間未満か、またはそれより大きいかを判断する。再生LTPの終わりに到達したことは、最初に再生されたLTPの開始(FIFOスロット)へと再度ラッピングする再生ポインタにより検出される。
図18Cにおいて、最初に再生されたLTPのスロットはスロット4であり、スロット4、5、6、7、0、1、2および3における複数のLTPは、ラウンドトリップマーカ1822aおよび1822bのペアの第1のラウンドトリップマーカを受信する前に、シーケンシャルに再送信され、再生LTPポインタをスロット4に戻す。これは、ラウンドトリップマーカを受信する前に再生LTPの終わりに到達する例を図示し、ラウンドトリップの持続期間が再生バッファの深さよりも大きいことを示す。これは、決定ブロック2244に「はい」の応答をもたらし、ロジックは、トランスミッタのヌルカウンタ(Nullcount)nが整数kにリセットされる、ブロック2245aに進む。ブロック2246a、および「いいえ」の結果でブロック2246aにループバックする決定ブロック2248により図示されるように、トランスミッタは、その次に、ラウンドトリップマーカまたは再試行要求が受信されるまで、1または複数のNull LTPをレシーバに送信することに進む。更に、送信済みの各Null LTPに対して、Nullcount nは、1だけインクリメントされる。上述のように、Null LTPは信頼できるLTPではなく、従って送信済みLTPのコピーは、再生バッファに追加されない。結果として、再試行要求をもたらす不良LTPのコピーは、再試行要求を受信する前に上書されないことを保証される。
ラウンドトリップマーカの受信が決定ブロック2248aにおいて決定されると、図23Aにおけるトランスミッタ状態マシン2300のLinkTransferActive .normalに戻ることによっても図示されるように、ロジックは、トランスミッタが通常転送モードに戻されるブロック2250に進むが、再生バッファの最後に到達すると、どのくらい多くのNull LTPを送信するかを判断するべく、再生バッファを通る各サイクルのNullcount n値を用いることが達成される。例えば、Nullcount nが4に到達したと仮定されたい。結果として、再生バッファのFIFOスロットがスロット7に到達する度に、トランスミッタは4つのNull LTPを送信する。一実施形態において、複数の再試行要求およびラウンドトリップマーカは、最高の優先度を有し、決して先取りされず、従ってNullcount nにより規定されるいくつかのNull LTPの送信を用いることにより、当該不良LTPに対する再試行要求を受信する前に、不良LTPのコピーは上書されないことを保証する。選択肢として、Nullcount nは、ブロック2245において値k>0にリセットされ、kの複数の追加のNull LTPが再生バッファを通る各サイクルの最後で送信されるように、安全マージンを提供し得る。Nullcountスキームの固有利点は、(物理リンクの長さには実際的制限が存在し、この制限を超える長さを有するリンクの製造および/または実装が可能でないか、または現実的でないことを認識して)実質的に任意の長さのリンクをサポートするように実装され得ることである。
決定ブロック2224に戻ると、第1のFIFOスロットに到達する前に、ラウンドトリップマーカが受信された場合、決定ブロック2244に対する応答は「いいえ」であり、ロジックは、Nullcount nが整数mにリセットされるブロック2245bに進む。ブロック2246b、および結果が「いいえ」でブロック2246bにループバックする決定ブロック2249により図示されるように、トランスミッタは次に、バッファポインタがラッピングし、その開始スロットに戻り、またはNullcount nがゼロに到達するまで、レシーバに対する複数のLTPの再生の継続に進み、Nullcount countdownはmで開始し、再送信済みの信頼できる各LTPについて1だけデクリメントされる。決定ブロック2249の「はい」の結果に応答して、ロジックはこのNullcount countdownループを終了し、ブロック2250に進む。Nullcount countdownを用いると、バッファの深さがより大きいが、ラウンドトリップの持続期間の複数のm LTP転送サイクル内である構成のおよそのm LTP転送サイクルの安全マージンをもたらす。例えば、バッファの深さが32スロットであり、ラウンドトリップの持続期間が30LTP転送サイクルに等しく、m=5であると仮定されたい。この場合、ロジックがカウントダウンループを終了すると、mは3になるであろう。これは、再生バッファがその開始地点(スロット0)に再度ラッピングすると、スロット0のLTPに上書きする前に,3つの追加のNull LTPが送信されることを意味する。
バッファの深さは32スロットなので、上書される複数の再生バッファスロット間のLTPサイクルの数は35であるか、またはラウンドトリップの持続期間よりも5だけ大きい。
不良レーンの検出に応答して、リンクは、低減された数のアクティブなレーンをを有する低下した状態で操作され得る。更に、このリンクの低下した状態は、4つのアクティブなレーンで開始し、第1の不良レーンを検出して不良レーンを除去し、3つのアクティブなレーンを有するリンクオペレーションをもたらし、第2の不良レーンを検出して第2の不良レーンを除去し、2つのアクティブなレーンを有するリンクオペレーションをもたらす等のシーケンスで、リンクが操作され得るように、カスケードであってもよい。このカスケードは、第3の不良レーンの検出を継続し、良好な1つの残余のレーンを介したリンクオペレーションをもたらす。また、1つの送信方向が他の送信方向とは異なる数のアクティブなレーンを用い得るように、リンクが非対称の構成で操作され得ることが留意される。
図26は、一実施形態による、3つのアクティブなレーンを用いてリンクを操作するためのXFRグループを図示する。この例において、3つのXFRグループGO、G1およびG2が存在し、対応するCRCはCRC−GO、CRC−G1およびCRC−G2である。LTPシーケンスは複数のレーン変更を用いずに反復されるXFRパターンを伴った1つの状態のみを有するので、同一の複数のXFRグループが同一の各レーンを介して送信される。結果として、1レーン当たりのCRCの比較は、1レーン当たりのベースで行われることができ、またはそうでなければ、1XFRグループ当たりのベースは、LTPシーケンス状態を考慮しない。3レーンの下で、各レーンにつき、11の32ビット転送があり、標準的検出LTPにより、各レーンを介して送信される352ビットをもたらす。一実施形態において、3つのアクティブなレーンで動作している場合に、16ビットの1レーン当たりのCRCが用いられる。
図27は、一実施形態による、2つのアクティブなレーンを用いてリンクを操作するためのXFRグループを図示する。33の32ビット転送/LTPが存在するので、LTP送信ストリームのレーン0および1の各々を介して転送されるビットの数は、512ビットと544ビットとの間で交替する。結果として、1XFRグループ当たり、1レーン当たりのCRCの比較スキームは、2つのLTPシーケンス状態を用いて実装される。更に、16ビット/レーンのCRCは、一実施形態において用いられる。
図28は、一実施形態による、1つのアクティブなレーンを用いてリンクを操作するためのXFRグループを図示する。LTPデータが送信される1つのレーンのみが存在するので、不規則であり得るのはそのレーンのみである。結果として、1レーン当たりのCRC比較を実行する必要はない。
しかし、2以上のレーンを有するリンクが低下して1つのレーンにおいて動作するレーン低下のシナリオの下で、1レーン当たりのCRC計算は、なおも1つのレーンについて算出され得る。これは常にに実行される形でハードウェアに実装され得る。この例において、1レーン当たりのCRC計算は、単に無視される。
上述のように、本明細書に開示される複数の実施形態の下で、複数のリンクは、複数の明示的ACKを用いることなく、信頼できるデータ送信をサポートする。LTPは、リンク全体で送信されるときに失われる可能性はないが(ケーブルが切断される等の出来事がなければ)、エラーを含み得る。黙示的アクノリッジメントスキームは、トランスミッタからレシーバへの、および逆にトランスミッタへのラウンドトリップを完了するのにかかる時間と少なくとも同じくらい長い期間内に、トランスミッタにおいて再試行要求を受信することがないことを利用して、実装されることを想起されたい。再試行要求は、送信済みデータとは異なるセットのレーンを介して送信されるので、1つの再試行要求がエラー(CRCチェックにより識別された)を有し、従ってトスされ得ることはあり得る。結果として、受信側のリンクインターフェースは、送信側のリンクインターフェースに、不規則なLTPを受信したと通知することを試みている可能性があるが、通知(再試行要求により示される)は、トスされる。これが、複数のRetryReqLTPのシーケンシャルペアおよび複数のペアの他のNull LTP(例えば、RetryMrkr0、RetryMrkrl)の送信が黙示的ACKスキームを促すように役立つ場合である。
まず、これらはNull LTPであるので、再生バッファ内に格納されず、従って再送信に利用可能ではない。しかし、Null LTPのシーケンシャルペアを送信することにより、2つのイベントのうち1つが、1)エラーないし2つのNull LTPのうち少なくとも1つを首尾よく受信すること、または2)双方のLTPが複数のエラーを有する場合に、これがシーケンシャルなLTPエラーとして検出され、リンクのリトレインをトリガすることをもたらすことが保証される。(リ)トレイン中に、トレインシーケンスは、リンクパートナのトランスミッタおよびレシーバの複数のペアのにより実行され、従って双方向でのリンクの適切な動作は、リンクをアクティブなオペレーションに返す前に検証される。リトレインが完了すると、送信側は(その間、複数のNull LTPを送信する)、再試行マーカを送信した後、新しいLTPの送信を開始する(またはLTPの再生を継続する)前に、受信側からの保証された再試行要求を待つ。別の利点は、複数のLTPのうち少なくとも1つが良好である可能性を向上させる、これらのヌルパケットのペアを送信することである。
図29は、プロセッサ2906に結合されたファブリックポート2904を含み、プロセッサ2906が同様にメモリ2908に結合された、ホストファブリックインターフェース2902を備える例示的な構成を有する、ノード2900を示す。図1に示されるように、複数のシステムノードは、離散的な1つのノードプラットフォーム106、仮想化プラットフォーム110、マルチノードプラットフォーム116および集積された1つのノードプラットフォーム120等により示されるが、これらに限定されない様々な構成を有し得る。一般に、各ノード構成は、少なくとも1つのプロセッサ、メモリ、および図29に図示される類似の複数のコンポーネントを有する少なくとも1つのHFIを含む。
以下に検討されるように、ファブリックポート2904は、図29に示されるか、示されない他の回路およびロジックに加えて、図18A〜18Cに示されるものに類似する構成を有する送信ポート1800および受信ポート1802を含む。送信ポート1800は、複数の送信VLバッファに分割された送信バッファ(Tbuf)を含む、Txリンクファブリックサブレイヤ回路およびロジック2910、Txリンク転送サブレイヤ回路およびロジック2912、ならびに4つのトランスミッタ2916を含む、Tx PHY回路およびロジック2914、ならびにTxリンク制御ブロック1804を含む。受信ポート1802は、複数の受信VLバッファに分割された受信バッファ(Rbuf)を含む、Rxリンクファブリックサブレイヤ回路およびロジック2918、Rxリンク転送サブレイヤ回路およびロジック2920、ならびに4つのレシーバ2924を含むRx PHY回路およびロジック2922、ならびにRxリンク制御ブロック1805を含む。
Txリンクファブリックサブレイヤ回路およびロジック2910は、本明細書において説明されるリンクファブリックサブレイヤの複数のオペレーションの送信側の態様を実装するように構成される。図29に図示された送信バッファおよび送信VLバッファに加えて、図示されないこれらのオペレーションを促すための複数のコンポーネントおよびブロックは、イーサネット(登録商標)、インフィニバンド、ネイティブアーキテクチャパケット、仲裁ロジック、およびクレジットマネージャのL4カプセル化を実行するように構成されたL4カプセル化サブブロックを含む、ファブリックパケットビルドブロックを含む。更に、QoSオペレーションを促すためのロジックの一部は、リンクファブリックサブレイヤ(やはり図示せず)において実装される。
Txリンク転送サブレイヤ回路およびロジック2912は、本明細書において説明されるリンク転送サブレイヤの複数のオペレーションの送信側の態様を実装するように構成される。これらは、再試行ロジック、LTPバンドルブロック、再生バッファ、およびNxtWrLTPならびにNxtTxLTPポインタ(全て図示せず)を含む、複数のLTPをバンドルし、Tx PHYに対するハンドオフのLTPストリームを準備し、RetryReqsに応答して複数のLTPの再生をサポートするための様々なコンポーネントおよびロジックブロックを含む。更に、Txリンク制御ブロック1804および複数のQoS関数の一部は、Txリンク転送サブレイヤに実装される。
Tx PHY回路およびロジック2914は、4つのトランスミッタ2916およびTxリンク制御ブロック1804の一部を含む、簡略化された形式で図示されている。一般に、複数のトランスミッタ2916は、リンクのPHYレイヤ構成に応じて、電気的または光学的トランスミッタを備え得る。Tx PHY回路およびロジックブロックが、明確にするために示されない送信側PHYレイヤの複数のオペレーションを実装するための追加の回路およびロジックを含むこととが、ネットワーキング技術の当業者には理解されるであろう。これは、複数のエラーを低減し、複数の送信特性を向上させる高速の相互接続に関連して実装される様々な特徴を促すべく用いられる、PHYレイヤにおける様々なサブレイヤを含む。
Rxリンクファブリックサブレイヤ回路およびロジック2918は、本明細書において説明されるリンクファブリックサブレイヤの複数のオペレーションの受信側の複数の態様を実装するように構成される。図示される受信バッファおよび受信VLバッファに加えて、これらのオペレーションを促すための図示されない複数のコンポーネントおよびブロックは、L4パケットデカブセル化サブブロック、クレジット返却ブロックおよびQoS受信側ロジックの一部を含む、ファブリックパケット再アセンブルブロックを含む。
Rxリンク転送サブレイヤ回路およびロジック2920は、本明細書において説明されるリンク転送サブレイヤの複数のオペレーションの受信側の複数の態様を実装するように構成される。これらは、図18A〜18Cに示され、上述したもの等、複数のLTPをアンバンドリングし、LTP CRCおよび1レーン当たりのCRCエラー、レシーバトスモードおよび関連する複数のオペレーションを、ならびにQoSオペレーションをを検出するための様々なコンポーネントおよびロジックブロックを含む。
Px PHY回路およびロジック2922は、4つのレシーバ2924およびRxリンク制御ブロック1805の一部を含む、簡略化された形式で図示されている。一般に、複数のレシーバ2924は、リンクのPHYレイヤ構成に応じて、電気的または光学的トランスミッタを備え得、複数のトランスミッタ2916からリンクを介して複数のトランスミッタ信号を受信するように構成される。Rx PHY回路およびロジックブロックが、明確にするために示されない受信側PHYレイヤの複数のオペレーションを実装するための追加の回路およびロジックを含むこととが、ネットワーキング技術の当業者には理解されるであろう。これは、複数のエラーを低減し、複数の送信特性を向上させる高速の相互接続に関連して実装される様々な特徴を促すべく用いられる、PHYレイヤにおける様々なサブレイヤを含む。
更に、HFI2902は、PCIe(周辺構成要素相互接続)インターフェース(I/F)2930に結合された送信エンジン2926および受信エンジン2928を含む。送信エンジン2926は、複数のL4パケット(例えば、カプセル化済みTCP/IPパケット、インフィニバンドパケットを含むイーサネット(登録商標)パケット)および/またはファブリックパケットがバッファ処理される送信バッファ2932を含む。一実施形態において、送信バッファ2932のメモリの全てまたは一部は、プログラムドIO(PIO)空間とも呼ばれるメモリマップド入力/出力(MMIO)アドレス空間を備える。
MMIOは、プロセッサ2906が例えば、直接メモリアクセスにより複数の送信バッファ2932に対する直接の書き込を実行することを可能にする(DMA書き込み)。
受信エンジン2928は、複数の受信バッファ2934およびDMAエンジン2936を含む。複数の受信バッファは、受信ポート1802の出力をバッファ処理するべく用いられ、出力は、複数のファブリックパケットおよび/またはL4パケットを含み得る。DMAエンジン2936は、DMA書き込みを実行し、受信バッファ2934からのパケットデータを、メモリ2908および/またはプロセッサ2906における複数のメモリキャッシュレベルのうち1つにコピーするように構成されている。例えば、いくつかの実施形態において、パケットヘッダデータは、キャッシュにDMAされるが、パケットペイロードデータは、メモリにDMAされる。
プロセッサ2906は、各々が集積されたレベル1およびレベル2(L1/L2)のキャッシュを含み、コヒーレントな相互接続2942に結合された複数のプロセッサコア2940を含む、CPU2938を含む。また、メモリ2908、集積入力/出力ブロック(IIO)2946および最終レベルキャッシュ(LLC)2948に結合されたメモリインタフェース2944は、コヒーレントあ相互接続2942に結合されている。IIO2946は、複数のプロセッサコア、メモリおよびキャッシュにより使用されるコヒーレントなドメインと、PCIeルートコンプレックス(RC)2950および2952のペアを含む、複数のIOコンポーネントおよびIOインターフェースに使用されるコヒーレントでないドメインとの間にインターフェースを提供する。当技術分野において周知のように、PCIe RCは、PCIeインターフェース2954、2956、2958および2960により図示される、複数のPCIeインターフェースおよびPCIeデバイスが結合され得るPCIe相互接続階層の上部に位置する。示されるように、PCIe2956は、HFI2902のPCIeインターフェース2930に結合されている。
図29に図示されるもの等、いくつかの実施形態において、プロセッサ2912はSoCアーキテクチャを使用する。他の複数の実施形態において、複数のPCIe関連コンポーネントが、プロセッサに結合された10チップセット等に集積されている。なおも他の複数の実施形態において、プロセッサ2912および1もしくは複数のHFI2902は、SoC2962の破線アウトラインにより図示されるもの等のSoCで集積される。図29に更に図示されるように、複数のソフトウェアアプリケーション2964およびファブリックvNIC2966は、複数のプロセッサコア2940のうち1もしくは複数で動作する複数のソフトウェアコンポーネント、またはプロセッサ2906上で動作するオペレーティングシステムによりホスティングされる1もしくは複数の仮想マシンを備える。これらのソフトウェアコンポーネントに加えて、(適用可能な複数のキャッシュレベルを含む)メモリ2908と、送信エンジン2926および受信エンジン2934との間の複数のデータ転送を促すようにメモリ2908に実装された追加の複数のソフトウェアコンポーネントおよびバッファが存在する。
一般に、本明細書の図面に図示される回路、ロジックおよび複数のコンポーネントは、離散的チップ、SoC、マルチチップモジュール、および複数のネットワークインターフェースをサポート含むネットワーキング/リンクインターフェースチップを含む、様々なタイプの集積回路(例えば、半導体チップ)およびモジュールにも実装され得る。また、本明細書において用いられるように、様々なオペレーションをもたらす回路およびロジックは、エンベデッドロジック、エンベデッドプロセッサ、コントローラ、マイクロエンジンのうち1または複数により、またはそうでなければハードウェア、ソフトウェアおよび/またはファームウェアの任意の組み合わせを用いて、実装され得る。例えば、様々なロジックブロックおよび/または回路により図示される複数のオペレーションをは、ASIC、FPGA、IPブロックライブラリを含むがこれらに限定されない複数のプログラムドロジックゲート等を用い、またはプロセッサ、プロセッサコア、コントローラ、マイクロコントローラ、マイクロエンジン等を含み、1または複数の処理要素において実行される複数のソフトウェアまたはファームウェア命令のうち1または複数によりもたらされ得る。
更に、本明細書の複数の実施形態における態様は、半導体チップ、SoC、マルチチップ、モジュール等のみならず、非一時的機械可読媒体内にも実装され得る。例えば、上記の複数の設計は、複数の半導体デバイスを設計するために用いられる設計ツールに関連する非一時的機械可読媒体上に格納され、および/または機械可読媒体内に埋め込まれ得る。例としては、VHSICハードウェア記述言語(VHDL)、Verilog言語もしくはSPICE言語、または他のハードウェア記述言語でフォーマット化されたネットリストが挙げられる。いくつかのネットリストの例としては、動作レベルのネットリスト、レジスタ転送レベル(RTL)のネットリスト、ゲートレベルのネットリストおよびトランジスタレベルのネットリストが挙げられる。また、機械可読媒体としては、GDS−IIファイル等のレイアウト情報を有する媒体が挙げられる。
更に、半導体チップ設計用のネットリストファイルまたは他の機械可読媒体は、上記の教示の複数の方法を実行するシミュレーション環境に用いられ得る。
いくつかの実施形態は複数の特定の実装を参照して説明されてきたが、いくつかの実施形態により、他の複数の実装が可能である。更に、複数の図面において図示され、および/または、本明細書において説明される複数の要素または他の機能の配置および/または順序は、図示され、説明される特定の態様で配置される必要はない。多くの他の配置が、いくつかの実施形態により可能である。
図面に示される各システムにおいて、いくつかの場合の複数の要素は、表される複数の要素が異なるおよび/または類似のものであり得ることを示唆すべく、各々同一の参照番号または異なる参照番号を有し得る。しかし、ある要素は、異なる複数の実装を有し、本明細書に示され、または説明されるシステムのいくつかまたは全てとともに動作できるほど十分に柔軟であり得る。図面に示される様々な要素は、同一または異なるものであってもよい。どちらを第1の要素と称し、どちらを第2の要素と称するかは任意的なものである。
前述の詳細な説明および特許請求の範囲におけるV、'm'等のイタリック体の文字は、整数を図示するべく用いられ、特定の文字を用いても、特定の実施形態に限定されるものではない。更に、同一の文字は、別個に整数を表すべく、特許請求の範囲において別個に用いられ、または異なる文字が用いられ得る。更に、詳細な説明における特定の文字を用いても、詳細な説明における同一の主題に関する、特許請求の範囲で用いられる文字と一致し、または一致しないことがある。
本明細書および特許請求の範囲において、「結合された(coupled)」および「接続された(connected)」という用語は、それらの派生語と共に用いられ得る。これらの用語が互いに類義語として意図されないことを理解されたい。むしろ、複数の特定の実施形態において、「接続された」は、2またはそれより多い要素が、互いに直接物理的にまたは電気的に接触することを示すべく用いられ得る。「結合された」は、2またはそれより多い要素が、直接物理的にまたは電気的に接触することを意味し得る。しかし、「結合された」は、2またはそれより多い要素が、互いに直接接触しないが、互いに協働又は相互作用することも意味し得る。
1つの実施形態は、本発明の1つの実装または例である。本明細書における「1つの実施形態」、「一実施形態」、「いくつかの実施形態」、または「他の実施形態」に言及しても、複数の実施形態に関連して説明された特定の機能、構造または特性が、本発明の、少なくともいくつかの実施形態に含まれることを意味するが、全ての実施形態に含まれることは必ずしも意味しない。「1つの実施形態」、「一実施形態」または「いくつかの実施形態」と様々に現れても、全てが必ずしも同一の実施形態を指している訳ではない。
本明細書において説明され、図示される全ての構成要素、機能、構造、特性等が、特定の実施形態または複数の実施形態に含まれる必要はない。例えば、構成要素、特徴、構造または特性が含まれ「てもよい」、含まれる「場合がある」、含まれ「得る」、含まれ「得た」と本明細書で述べた場合には、特定の当該構成要素、特徴、構造または特性は含まれることを必要としない。明細書または特許請求の範囲で、「1つの(a)」または「1つの(an)」要素に言及した場合には、要素のうち1つのみ存在することを意味しない。明細書または特許請求の範囲が「追加の」要素に言及した場合には、2つ以上の追加の要素が存在することを排除しない。
本発明の図示された複数の実施形態の上記の説明は、要約に記載されることも含めて、網羅的であるか、または開示される正確な形式に本発明を限定することを意図しない。本発明の具体的な実施形態および例を本明細書に例示的な目的で説明したが、当業者が理解するように、様々な均等の修正形態が本発明の範囲内で可能である。
これらの修正形態は、上記の詳細な説明に鑑みて本発明に対して行われ得る。以下の特許請求の範囲において用いられる用語は、本明細書および図面に開示される具体的な実施形態に本発明を限定するものと解釈されるべきではない。むしろ、本発明の範囲は、以下の特許請求の範囲の記載によって全体として決定されるべきであり、特許請求の範囲の解釈において確立された原理に従って解釈されるべきである。
本実施形態の例を下記の各項目として示す。
[項目1]
複数のファブリックパケットの各々を複数のデータ単位に分割し、
複数のファブリックパケットから分割された複数のデータ単位の複数のグループがインターリーブされる、インターリーブ済みの複数のデータ単位の送信ストリームを生成し、
リンクにアウトバウンドされたインターリーブ済みの複数のデータ単位の前記送信ストリームを送信する回路およびロジックを有する送信ポートを備える、装置。
[項目2]
前記送信ポートは、
各ファブリックパケットから分割された前記複数のデータ単位を、前記ファブリックパケットに割り当てられた優先度レベルに関連させ、
より高い優先度を有する複数のデータ単位のストリームが、インターリーブ済みの複数のデータ単位の前記送信ストリームにおいてより低い優先度を有する複数のデータ単位のストリームへとインターリーブされるように、より高い優先度レベルを有する複数のデータ単位の送信がより低い優先度レベルを有する複数のデータ単位の送信を先取りする、ファブリックパケット先取りを促す、回路およびロジックを更に含む、項目1に記載の装置。
[項目3]
前記送信ポートは、
連続的により高い複数の優先度レベルを有する複数のデータ単位の送信が、複数のレベルのインターリーブを有する入れ子の形で複数のデータ単位の送信を先取りする、複数のレベルのファブリックパケット先取りを促す回路およびロジックを更に備える、項目2に記載の装置。
[項目4]
前記送信ポートは、複数の仮想レーン(VL)バッファの各々に割り当てられたバッファ空間を有する送信バッファを更に含み、
各VLバッファは、各仮想レーンに関連し、
前記送信ポートは、
各仮想レーンおよび関連するVLバッファに対する優先度レベルを割り当て、
各ファブリックパケットに割り当てられた仮想レーンを検出し、
前記複数のデータ単位が分割される前記ファブリックパケットに割り当てられた前記仮想レーンに基いて、VLバッファに複数のデータ単位をバッファ処理し、
第1のVLバッファが送信する準備のできた複数のデータ単位をバッファ処理したことを検出し、
前記第1のVLバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加し、
前記第1のVLバッファから複数のデータ単位を追加する間に、前記第1のVLバッファよりも高い優先度レベルを有する第2のVLバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出し、
前記第1のVLバッファからの複数のデータ単位のプルを停止し、
前記第2のVLバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、
前記検出に応答して、前記第2のVLバッファからの複数のデータ単位の送信を優先して、前記第1のVLバッファにおける複数のデータ単位の送信を先取りする回路およびロジックを更に備える、項目2に記載の装置。
[項目5]
前記送信ポートは、
第1の仮想レーンおよび第3の仮想レーンに対する同一の優先度レベルを割り当て、
前記第1のVLバッファにおける第1のファブリックパケットから分割された複数のデータ単位をバッファ処理し、第3のファブリックパケットから分割された複数のデータ単位を、前記第3の仮想レーンに関連する第3のVLバッファにバッファ処理し、
前記第1のVLバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加し、
前記第1のVLバッファからの複数のデータ単位を追加する間に、前記第1のVLバッファにおける前記第1のファブリックパケットから分割された複数のデータ単位の利用可能性におけるバブルを検出し、
前記第3のVLバッファにおける複数のデータ単位が送信する準備ができていることを検出し、
前記第3のVLバッファにおける前記バブルおよび複数のデータ単位が送信する準備ができていることを検出することに応答して、前記第3のVLバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、インターリーブ済みの複数のデータ単位の前記送信ストリームにおける前記第3のVLバッファの複数のデータ単位の送信をインターリーブする回路およびロジックを更に備える、項目4に記載の装置。
[項目6]
インターリーブ済みの前記複数のデータ単位は、少なくとも3つのファブリックパケットから分割されたインターリーブ済みの複数のデータ単位を含み、
インターリーブ済みの前記複数のデータ単位は、少なくとも2つのレベルを有する入れ子の形でインターリーブされる、項目1〜5のいずれか1項に記載の装置。
[項目7]
前記送信ポートは、複数のVLバッファの各々に割り当てられたバッファ空間を有する送信バッファを更に含み、
各VLバッファは、各仮想レーンに関連し、
前記送信ポートは、
第1のファブリックパケットから分割された複数のデータ単位を、第1のVLバッファにバッファ処理し、
第2のファブリックパケットから分割された複数のデータ単位を第2のVLバッファにバッファ処理し、
前記第1のVLバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加し、
前記第2のVLバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、前記第2のファブリックパケットから分割された複数のデータ単位を、前記第1のファブリックパケットとインターリーブする回路およびロジックを更に備え、
前記複数のデータ単位は、前記第1のファブリックパケットから分割された前記複数のデータ単位の第1の部分を含み、
前記複数のデータ単位は、前記第2のファブリックパケットから分割された前記複数のデータ単位の少なくとも第1の部分を含む、項目1〜6のいずれか1項に記載の装置。
[項目8]
受信バッファを有し、
インターリーブ済みの複数のデータ単位の送信済みのストリームを受信し、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームから複数のデータ単位の複数のグループを分離し、
同一のファブリックパケットから互いに分割された複数のデータ単位の複数のグループを、前記受信バッファにバッファ処理する回路およびロジックを有する受信ポートを備え、
各データ単位は、関連するファブリックパケットからのデータの分割された一部を含み、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームは、送信済みの前記ストリームにおいてインターリーブされる複数のデータ単位の前記複数のグループを含み、
複数のデータ単位の1つのグループにおける各データ単位は、前記同一のファブリックパケットに関連する、装置。
[項目9]
前記受信バッファにおけるバッファ空間は、複数の仮想レーン(VL)バッファに対して割り当てられ、
各VLバッファは、各仮想レーンに対して割り当てられ、
前記受信ポートは、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のデータ単位の各グループに関連する仮想レーンを決定し、
複数のデータ単位の各グループが関連する前記仮想レーンに対して割り当てられた前記VLバッファに、複数のデータ単位の該グループに対する複数のデータ単位をバッファ処理する回路およびロジックを更に有する、項目8に記載の装置。
[項目10]
各ファブリックパケットは、複数の本体データ単位が後に続くヘッドデータ単位を含む第1のデータ単位を含み、テールデータ単位を含む最後のデータ単位で終了する複数の異なるタイプのデータ単位に分割され、
前記受信ポートは、
各データ単位のタイプを検出し、
第1の仮想レーンに関連するヘッドデータ単位を検出することにより、複数のデータ単位の第1のグループの第1のデータ単位を検出し、
前記第1の仮想レーンに関連する第1のVLバッファに複数のデータ単位の前記第1のグループの複数のデータ単位をバッファ処理し、
前記第1の仮想レーンに関連するテールユニットを受信する前に、第2の仮想レーンに関連するヘッドデータ単位が受信されたことを検出することにより、複数のデータ単位のインターリーブ済みのグループの第1のデータ単位を検出し、
前記第2の仮想レーンに関連する第2のVLバッファにおける複数のデータ単位の前記インターリーブ済みのグループの複数のデータ単位をバッファし、
前記第2の仮想レーンに関連するテールユニットを検出することにより、複数のデータ単位の前記インターリーブ済みのグループの終了を検出し、
前記第2の仮想レーンに関連する前記テールユニットの後の前記データ単位を、複数のデータ単位の次のグループの前記第1のデータ単位を規定するものとして検出し、
複数のデータ単位の前記次のグループの前記第1のデータ単位がヘッドデータ単位、本体データ単位、またはテールデータ単位であるかに基づいて、複数のデータ単位の前記次のグループの前記複数のデータ単位に関連する仮想レーンを決定する回路およびロジックを更に有する、項目9に記載の装置。
[項目11]
複数のデータ単位のインターリーブ済みの前記複数のグループは、少なくとも3つのファブリックパケットから分割された複数のデータ単位の複数のグループを含み、
複数のデータ単位のインターリーブ済みの前記複数のグループは、少なくとも2つのレベルを有する入れ子の形でインターリーブされる、項目9に記載の装置。
[項目12]
前記受信ポートは、
複数のデータ単位の送信済みの前記ストリームにおいて受信されたときのデータの複数のグループに関連する前記複数の仮想レーンの順序を追跡し、
複数のデータ単位の各グループにおけるどの複数のVLバッファデータ単位がバッファ処理されるべきかを決定するべく、追跡された前記順序を使用する回路およびロジックを更に有する、項目11に記載の装置。
[項目13]
前記複数の仮想レーンの順序は、VLスタックおよびVLレジスタを用いることにより追跡され、
前記VLレジスタは、現在の複数のVLバッファデータ単位がバッファ処理されていることを識別するVL証拠を格納するべく用いられ、
新しいレベルのインターリーブがインターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおいて検出された場合、複数のデータ単位のインターリーブ済みの前記グループに関連する前記VLは、前記VLレジスタに格納され、その前の前記VL証拠は、前記VLスタックの上部にプッシュされ、
インターリーブの該新しいレベルのインターリーブが完了すると、前記スタックの上部の前記VL証拠は、前記VLレジスタへとポップされる、項目11または12に記載の装置。
[項目14]
リンクインターフェースがリンクインターフェースピアに通信可能に結合されるリンクを含むシステムに取り付けられる前記リンクインターフェースを備え、
前記リンクインターフェースは、
複数のファブリックパケットの各々を複数のデータ単位に分割し、
複数のファブリックパケットから分割された複数のデータ単位の複数のグループがインターリーブされる、インターリーブ済みの複数のデータ単位の送信ストリームを生成し、
前記リンクインターフェースピアの受信ポートに向かう前記リンクにアウトバウンドされたインターリーブ済みの複数のデータ単位の前記送信ストリームを送信する回路およびロジックを含む送信ポートと、
受信バッファを含み、
前記リンクインターフェースピアの送信ポートから送信されたインターリーブ済みの複数のデータ単位の送信済みのストリームを受信し、
複数のデータ単位の前記複数のグループを、インターリーブ済みの複数のデータ単位の送信済みの前記ストリームから分離し、前記受信バッファに同一のファブリックパケットから互いに分割された複数のデータ単位の複数のグループをバッファ処理する回路およびロジックを含む受信ポートとを有し、
各データ単位は、関連するファブリックパケットからのデータの分割された一部を含み、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームは、送信済みの前記ストリームにおいてインターリーブされる複数のデータ単位の複数のグループを含み、
複数のデータ単位のグループにおける各データ単位は、前記同一のファブリックパケットに関連する、装置。
[項目15]
インターリーブ済みの前記複数のデータ単位の前記送信ストリームにおけるインターリーブ済みの複数のデータ単位は、少なくとも3つのファブリックパケットから分割されたインターリーブ済みの複数のデータ単位を含み、
インターリーブ済みの複数のデータ単位の前記送信ストリームは、少なくとも2つのレベルを有する入れ子の形でインターリーブされ、
前記受信ポートにおいて受信されたインターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のデータ単位のインターリーブ済みの前記複数のグループは、少なくとも3つのファブリックパケットから分割された複数のデータ単位の複数のグループを含み、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のデータ単位のインターリーブ済みの前記複数のグループは、少なくとも2つのレベルを有する入れ子の形でインターリーブされる、項目14に記載の装置。
[項目16]
前記送信ポートは、
各ファブリックパケットから分割された前記複数のデータ単位を、前記ファブリックパケットに割り当てられた優先度レベルに関連させ、
より高い優先度を有する複数のデータ単位のストリームが、インターリーブ済みの複数のデータ単位の前記送信ストリームにおいてより低い優先度を有する複数のデータ単位のストリームへとインターリーブされるように、より高い優先度レベルを有する複数のデータ単位の送信がより低い優先度レベルを有する複数のデータ単位の送信を先取りする、ファブリックパケット先取りを促し、
連続的により高い優先度レベルを有する複数のデータ単位の送信が、複数のレベルのインターリーブを有する入れ子の形で複数のデータ単位の送信を先取りする、複数のレベルのファブリックパケット先取りを促す、回路およびロジックを更に備える、項目14に記載の装置。
[項目17]
前記送信ポートは、複数の仮想レーン(VL)ファーストインファーストアウト(FIFO)バッファの各々に割り当てられたバッファ空間を有する送信バッファを更に含み、
各VL FIFOバッファは、各仮想レーンに関連し、
前記送信ポートは、
各仮想レーンおよび関連するVLバッファに対する優先度レベルを割り当て、
各ファブリックパケットに割り当てられた仮想レーンを検出し、
前記複数のデータ単位が分割される前記ファブリックパケットに割り当てられた前記仮想レーンに基いて、複数のデータ単位をVL FIFOバッファにバッファ処理し、
第1のVL FIFOバッファが送信する準備のできた複数のデータ単位をバッファ処理したことを検出し、
前記第1のVL FIFOバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、複数のデータ単位の送信された前記ストリームに追加し、
前記第1のVL FIFOバッファから複数のデータ単位を追加する間に、前記第1のVL FIFOバッファよりも高い優先度レベルを有する第2のVL FIFOバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出し、
前記第1のVL FIFOバッファからの複数のデータ単位のプルを停止し、
前記第2のVL FIFOバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、
前記検出に応答して、前記第2のVL FIFOバッファからの複数のデータ単位の送信のために、前記第1のVL FIFOバッファにおける複数のデータ単位の送信を先取りする回路およびロジックを更に備える、項目16に記載の装置。
[項目18]
前記送信ポートは、複数のVLファーストインファーストアウト(FIFO)バッファの各々に割り当てられたバッファ空間を有する送信バッファを更に含み、
各VL FIFOバッファは、各仮想レーンに関連し、
前記送信ポートは、
第1のファブリックパケットから分割された複数のデータ単位を、第1のVL FIFOバッファにバッファ処理し、
第2のファブリックパケットから分割された複数のデータ単位を、第2のVL FIFOバッファにバッファ処理し、
前記第1のVL FIFOバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加し、
前記第2のVL FIFOバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、前記第1のファブリックパケットと前記第2のファブリックパケットから分割された複数のデータ単位をインターリーブする回路およびロジックを更に備え、
前記複数のデータ単位は、前記第1のファブリックパケットから分割された前記データ単位の第1の部分を含み、
前記複数のデータ単位は、前記第2のファブリックパケットから分割された前記複数のデータ単位の少なくとも第1の部分を含む、項目14〜17のいずれか1項に記載の装置。
[項目19]
前記受信バッファにおけるバッファ空間は、複数の仮想レーン(VL)ファーストインファーストアウト(FIFO)バッファに対して割り当てられ、
各VL FIFOバッファは、各仮想レーンに対して割り当てられ、
前記送信ポートは、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のデータ単位の各グループに関連する仮想レーンを決定し、
複数のデータ単位の各グループが関連する前記仮想レーンに対して割り当てられた、前記VL FIFOバッファに、複数のデータ単位の該グループに対する複数のデータ単位をバッファ処理する回路およびロジックを更に有する、項目14〜18のいずれか1項に記載の装置。
[項目20]
複数のファブリックパケットの各々を複数のデータ単位に分割する段階と、
複数のファブリックパケットから分割された複数のデータ単位の複数のグループがインターリーブされる、インターリーブ済みの複数のデータ単位の送信ストリームを生成する段階と、
リンクにアウトバウンドされたインターリーブ済みの複数のデータ単位の前記送信ストリームを送信する段階とを備える、方法。
[項目21]
各ファブリックパケットから分割された前記複数のデータ単位を、前記ファブリックパケットに割り当てられた優先度レベルに関連させる段階と、
より高い優先度を有する複数のデータ単位のストリームが、インターリーブ済みの複数のデータ単位の前記送信ストリームにおいてより低い優先度を有する複数のデータ単位のストリームへとインターリーブされるように、より高い優先度レベルを有する複数のデータ単位の送信がより低い優先度レベルを有する複数のデータ単位の送信を先取りする、ファブリックパケット先取りを促す段階とを更に備える、項目20に記載の方法。
[項目22]
連続的により高い複数の優先度レベルを有する複数のデータ単位の送信が、複数のレベルのインターリーブを有する入れ子の形で複数のデータ単位の送信を先取りする、複数のレベルのファブリックパケット先取りを促す段階を更に備える、項目21に記載の方法。
[項目23]
送信ポートは、複数の仮想レーン(VL)バッファの各々に割り当てられたバッファ空間を有する送信バッファを更に含み、
各VLバッファは、各仮想レーンに関連し、
前記方法は、
各仮想レーンおよび関連するVLバッファに対する優先度レベルを割り当てる段階と、
各ファブリックパケットに割り当てられた仮想レーンを検出する段階と、
前記複数のデータ単位が分割される前記ファブリックパケットに割り当てられた前記仮想レーンに基いて、複数のデータ単位をVLバッファにバッファ処理する段階と、
第1のVLバッファが送信する準備のできた複数のデータ単位をバッファ処理したことを検出する段階と、
前記第1のVLバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階と、
前記第1のVLバッファから複数のデータ単位を追加する間に、前記第1のVLバッファよりも高い優先度レベルを有する第2のVLバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出する段階と、
前記第1のVLバッファからの複数のデータ単位のプルを停止し、
前記第2のVLバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、
前記検出に応答して、前記第2のVLバッファからの複数のデータ単位の送信のために、前記第1のVLバッファにおける複数のデータ単位の送信を先取りする段階を更に備える、項目21に記載の方法。
[項目24]
第1の仮想レーンおよび第3の仮想レーンに対する同一の優先度レベルを割り当てる段階と、
第1のファブリックパケットから分割された複数のデータ単位を前記第1のVLバッファにバッファ処理し、第3のファブリックパケットから分割された複数のデータ単位を、前記第3の仮想レーンに関連する第3のVLバッファにバッファ処理する段階と、
前記第1のVLバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階と、
前記第1のVLバッファからの複数のデータ単位を追加する間に、前記第1のVLバッファにおける前記第1のファブリックパケットから分割された複数のデータ単位の利用可能性におけるバブルを検出する段階と、
前記第3のVLバッファにおける複数のデータ単位が送信する準備ができていることを検出する段階と、
前記第3のVLバッファにおける前記バブルおよび複数のデータ単位が送信する準備ができていることを検出することに応答して、前記第3のVLバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、インターリーブ済みの複数のデータ単位の前記送信ストリームにおける前記第3のVLバッファの複数のデータ単位の送信をインターリーブする段階とを更に備える、項目23に記載の方法。
[項目25]
インターリーブ済みの前記複数のデータ単位は、少なくとも3つのファブリックパケットから分割されたインターリーブ済みの複数のデータ単位を含み、
インターリーブ済みの前記複数のデータ単位は、少なくとも2つのレベルを有する入れ子の形でインターリーブされる、項目20〜24のいずれか1項に記載の方法。

Claims (30)

  1. 送信ストリームを搬送する方法であって、
    複数のファブリックパケットのそれぞれを、ヘッドデータ単位を含む第1のデータ単位を含み、後に複数のボディーデータ単位が続き、テールデータ単位を含む最後のデータ単位で終了する、複数の異なるタイプのデータ単位に分割する段階と、
    複数のファブリックパケットから分割された複数のデータ単位がインターリーブされた、インターリーブ済みの複数のデータ単位の送信ストリームを生成する段階と、を備え、
    各ボディーデータ単位は、ボディーデータ単位であることを示す表示およびデータペイロードから構成され、各データ単位は、予め定められた固定サイズを有し、各ファブリックパケットは、それぞれのメッセージに対応するデータを搬送し、
    前記送信ストリームを生成する段階は、
    前記送信ストリームに、VLマーカを追加する段階と、
    前記VLマーカが識別するデータ単位を、前記送信ストリームにおける前記VLマーカの後に追加する段階と、を有する、
    方法。
  2. 送信ストリームを搬送する方法であって、
    複数のファブリックパケットのそれぞれを、ヘッドデータ単位を含む第1のデータ単位を含み、後に複数のボディーデータ単位が続き、テールデータ単位を含む最後のデータ単位で終了する、複数の異なるタイプのデータ単位に分割する段階と、
    複数のファブリックパケットから分割された複数のデータ単位がインターリーブされた、インターリーブ済みの複数のデータ単位の送信ストリームを生成する段階と、を備え、
    各ボディーデータ単位は、ボディーデータ単位であることを示す表示およびデータペイロードから構成され、各データ単位は、予め定められた固定サイズを有し、各ファブリックパケットは、それぞれのメッセージに対応するデータを搬送し、
    前記方法は、
    前記複数のファブリックパケットのそれぞれから分割された前記複数のデータ単位を、前記複数のファブリックパケットのそれぞれに割り当てられた優先度レベルに関連させる段階と、
    より高い優先度を有する複数のデータ単位のストリームが、インターリーブ済みの複数のデータ単位の前記送信ストリームにおいてより低い優先度を有する複数のデータ単位のストリームへとインターリーブされるように、ダイナミックファブリックパケット先取りを促す段階と、を備え、
    前記方法は、装置により実行され、
    前記装置は、複数の仮想レーンバッファ(複数のVLバッファ)に割り当てられたバッファ空間を有する送信バッファを備え、
    前記複数のVLバッファのそれぞれは、各仮想レーンに関連し、
    前記方法は、
    前記複数の仮想レーンおよび関連する複数のVLバッファのそれぞれに対する優先度レベルを割り当てる段階と、
    前記複数のファブリックパケットのそれぞれに割り当てられた仮想レーンを検出する段階と、
    前記複数のデータ単位が分割される前記ファブリックパケットに割り当てられた前記仮想レーンに基づいて、VLバッファに複数のデータ単位をバッファ処理する段階と、
    第1のVLバッファが送信する準備のできた複数のデータ単位をバッファ処理したことを検出する段階と、
    前記第1のVLバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階と、
    前記第1のVLバッファから複数のデータ単位を追加する間に、前記第1のVLバッファよりも高い優先度レベルを有する第2のVLバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出する段階と、
    前記第1のVLバッファからの複数のデータ単位のプルを停止すること、および、
    前記第2のVLバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、
    前記第2のVLバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出することに応答して、前記第2のVLバッファからの複数のデータ単位の送信を優先して、前記第1のVLバッファにおける複数のデータ単位の送信を先取りする段階と、
    第1の仮想レーンおよび第3の仮想レーンに対する同一の優先度レベルを割り当てる段階と、
    第1のファブリックパケットから分割された複数のデータ単位を、前記第1のVLバッファにバッファ処理し、第3のファブリックパケットから分割された複数のデータ単位を、前記第3の仮想レーンに関連する第3のVLバッファにバッファ処理する段階と、
    前記第1のVLバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階と、
    前記第1のVLバッファからの複数のデータ単位を追加する間に、前記第1のVLバッファにおける前記第1のファブリックパケットから分割された複数のデータ単位の利用可能性におけるバブルを検出する段階と、
    前記第3のVLバッファにおける複数のデータ単位が送信する準備ができていることを検出する段階と、
    前記バブルおよび前記第3のVLバッファにおける複数のデータ単位が送信する準備ができていることを検出することに応答して、前記第3のVLバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、インターリーブ済みの複数のデータ単位の前記送信ストリームにおける前記第3のVLバッファの複数のデータ単位の送信をインターリーブする段階と、を備える、
    方法。
  3. 送信ストリームを搬送する方法であって、
    複数のファブリックパケットのそれぞれを、ヘッドデータ単位を含む第1のデータ単位を含み、後に複数のボディーデータ単位が続き、テールデータ単位を含む最後のデータ単位で終了する、複数の異なるタイプのデータ単位に分割する段階と、
    複数のファブリックパケットから分割された複数のデータ単位がインターリーブされた、インターリーブ済みの複数のデータ単位の送信ストリームを生成する段階と、を備え、
    各ボディーデータ単位は、ボディーデータ単位であることを示す表示およびデータペイロードから構成され、各データ単位は、予め定められた固定サイズを有し、各ファブリックパケットは、それぞれのメッセージに対応するデータを搬送し、
    前記方法は、装置により実行され、
    前記装置は、複数の仮想レーンバッファ(複数のVLバッファ)の各々に割り当てられたバッファ空間を含む送信バッファを有する送信ポートを備え、
    各VLバッファは、各仮想レーンに関連し、
    前記方法は、
    第1のファブリックパケットから分割された複数のデータ単位を、第1のVLバッファにバッファ処理する段階と、
    第2のファブリックパケットから分割された複数のデータ単位を第2のVLバッファにバッファ処理する段階と、
    前記第1のVLバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階であって、前記複数のデータ単位は、前記第1のファブリックパケットから分割された前記複数のデータ単位の第1の部分を含む、段階と、
    前記第2のVLバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、前記第2のファブリックパケットから分割された複数のデータ単位を、前記第1のファブリックパケットとインターリーブする段階であって、前記複数のデータ単位は、前記第2のファブリックパケットから分割された前記複数のデータ単位の少なくとも第1の部分を含む、段階と、
    第3のファブリックパケットから分割された複数のデータ単位を第3のVLバッファにバッファ処理する段階と、
    前記第2のファブリックパケットから分割された前記複数のデータ単位の第1の部分がインターリーブ済みの複数のデータ単位の前記送信ストリームに追加された後、前記第3のVLバッファからの複数のデータ単位をインターリーブされた複数のデータ単位の前記送信ストリームに追加することにより、前記第3のファブリックパケットから分割された複数のデータ単位を、前記第1のファブリックパケットおよび前記第2のファブリックパケットとインターリーブする段階であって、前記複数のデータ単位は、前記第3のファブリックパケットから分割された前記複数のデータ単位の少なくとも第1の部分を含む、段階と、を備える、
    方法。
  4. 送信ストリームを搬送する方法であって、
    複数のファブリックパケットのそれぞれを、ヘッドデータ単位を含む第1のデータ単位を含み、後に複数のボディーデータ単位が続き、テールデータ単位を含む最後のデータ単位で終了する、複数の異なるタイプのデータ単位に分割する段階と、
    複数のファブリックパケットから分割された複数のデータ単位がインターリーブされた、インターリーブ済みの複数のデータ単位の送信ストリームを生成する段階と、を備え、
    各ボディーデータ単位は、ボディーデータ単位であることを示す表示およびデータペイロードから構成され、各データ単位は、予め定められた固定サイズを有し、各ファブリックパケットは、それぞれのメッセージに対応するデータを搬送し、
    前記方法は、装置により実行され、
    前記装置は、複数の仮想レーンバッファ(複数のVLバッファ)の各々に割り当てられたバッファ空間を含む送信バッファを有する送信ポートを備え、
    各VLバッファは、各仮想レーンに関連し、
    前記方法は、
    第1のファブリックパケットから分割された複数のデータ単位を、第1のVLバッファにバッファ処理する段階と、
    第2のファブリックパケットから分割された複数のデータ単位を第2のVLバッファにバッファ処理する段階と、
    前記第1のVLバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階であって、前記複数のデータ単位は、前記第1のファブリックパケットから分割された前記複数のデータ単位の第1の部分を含む、段階と、
    前記第2のVLバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、前記第2のファブリックパケットから分割された複数のデータ単位を、前記第1のファブリックパケットとインターリーブする段階であって、前記複数のデータ単位は、前記第2のファブリックパケットから分割された前記複数のデータ単位の少なくとも第1の部分を含む、段階と、
    複数のデータ単位がプルされて、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加される前記複数のVLバッファの順序を追跡して、少なくとも1つの入れ子のレベルのインターリーブを有するインターリーブ済みの複数のデータ単位の送信ストリームを生成する段階と、を備え、
    複数のデータ単位がプルされて、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加される前記複数のVLバッファの前記順序は、VLスタックおよびVLレジスタを用いることにより追跡され、
    前記VLレジスタは、複数のデータ単位がプルされる現在のVLバッファを識別するVL識別を格納するべく用いられ、レベルのインターリーブがインターリーブ済みの複数のデータ単位の前記送信ストリームに追加される場合に前記複数のデータ単位がプルされる前記VLバッファの前記VL識別が前記VLレジスタに格納され、前記VLレジスタにおける前の前記VL識別が前記VLスタック上にプッシュされ、前記レベルのインターリーブのインターリーブが完了すると、前記VLスタック上の前記VL識別は、前記VLレジスタへとポップされ、
    前記方法は、
    VLマーカの後の複数のデータ単位に関連する仮想レーンを識別する識別の使用を含む、前記VLマーカを含む制御データ単位を生成する段階と、
    前記VLマーカをインターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階と、を備え、
    前記VLレジスタは、前記VLマーカの識別により更新され、更新されるその前の前記VLレジスタの識別は、前記VLスタックにプッシュされる、
    方法。
  5. 送信ストリームを搬送する方法であって、
    複数のファブリックパケットのそれぞれを、ヘッドデータ単位を含む第1のデータ単位を含み、後に複数のボディーデータ単位が続き、テールデータ単位を含む最後のデータ単位で終了する、複数の異なるタイプのデータ単位に分割する段階と、
    複数のファブリックパケットから分割された複数のデータ単位がインターリーブされた、インターリーブ済みの複数のデータ単位の送信ストリームを生成する段階と、を備え、
    各ボディーデータ単位は、ボディーデータ単位であることを示す表示およびデータペイロードから構成され、各データ単位は、予め定められた固定サイズを有し、各ファブリックパケットは、それぞれのメッセージに対応するデータを搬送し、
    複数のデータ単位の複数のグループは、固定数のデータ単位を含む複数のリンクパケットにバンドルされ、
    各リンクパケットは、1つのリンク転送を含む寿命を有する、
    方法。
  6. 前記複数のファブリックパケットのそれぞれから分割された前記複数のデータ単位を、前記複数のファブリックパケットのそれぞれに割り当てられた優先度レベルに関連させる段階と、
    より高い優先度を有する複数のデータ単位のストリームが、インターリーブ済みの複数のデータ単位の前記送信ストリームにおいてより低い優先度を有する複数のデータ単位のストリームへとインターリーブされるように、ダイナミックファブリックパケット先取りを促す段階と、を更に備える、請求項1、3、4、および5のいずれか一項に記載の方法。
  7. 連続的に高くなる複数の優先度レベルを有する複数のデータ単位の送信が、複数のレベルのインターリーブを有する入れ子の形で複数のデータ単位の送信を先取りする、複数のレベルのファブリックパケット先取りを促す段階を更に備える、請求項に記載の方法。
  8. 前記方法は、装置により実行され、
    前記装置は、複数の仮想レーンッファ(複数のVLバッファ)に割り当てられたバッファ空間を有する送信バッファを備え、
    前記複数のVLバッファのそれぞれは、各仮想レーンに関連し、
    前記方法は、
    前記複数の仮想レーンおよび関連する複数のVLバッファのそれぞれに対する優先度レベルを割り当てる段階と、
    前記複数のファブリックパケットのそれぞれに割り当てられた仮想レーンを検出する段階と、
    前記複数のデータ単位が分割される前記ファブリックパケットに割り当てられた前記仮想レーンに基づいて、VLバッファに複数のデータ単位をバッファ処理する段階と、
    第1のVLバッファが送信する準備のできた複数のデータ単位をバッファ処理したことを検出する段階と、
    前記第1のVLバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階と、
    前記第1のVLバッファから複数のデータ単位を追加する間に、前記第1のVLバッファよりも高い優先度レベルを有する第2のVLバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出する段階と、
    前記第1のVLバッファからの複数のデータ単位のプルを停止すること、および、
    前記第2のVLバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、
    前記第2のVLバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出することに応答して、前記第2のVLバッファからの複数のデータ単位の送信を優先して、前記第1のVLバッファにおける複数のデータ単位の送信を先取りする段階と、を更に備える、請求項またはに記載の方法。
  9. インターリーブ済みの前記複数のデータ単位は、少なくとも3つのファブリックパケットから分割されたインターリーブ済みの複数のデータ単位を含み、
    インターリーブ済みの前記複数のデータ単位は、少なくとも2つのレベルを有する入れ子の形でインターリーブされる、請求項1〜のいずれか1項に記載の方法。
  10. 前記方法は、装置により実行され、
    前記装置は、複数の仮想レーンバッファ(複数のVLバッファ)の各々に割り当てられたバッファ空間を含む送信バッファを有する送信ポートを備え、
    各VLバッファは、各仮想レーンに関連し、
    前記方法は、
    第1のファブリックパケットから分割された複数のデータ単位を、第1のVLバッファにバッファ処理する段階と、
    第2のファブリックパケットから分割された複数のデータ単位を第2のVLバッファにバッファ処理する段階と、
    前記第1のVLバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階であって、前記複数のデータ単位は、前記第1のファブリックパケットから分割された前記複数のデータ単位の第1の部分を含む、段階と、
    前記第2のVLバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、前記第2のファブリックパケットから分割された複数のデータ単位を、前記第1のファブリックパケットとインターリーブする段階であって、前記複数のデータ単位は、前記第2のファブリックパケットから分割された前記複数のデータ単位の少なくとも第1の部分を含む、段階と、を更に備える、
    請求項1〜のいずれか1項に記載の方法。
  11. 前記第2のファブリックパケットから分割された最後のデータ単位が追加されるまで、前記第2のVLバッファからの複数のデータ単位を複数のデータ単位の前記送信ストリームに継続して追加する段階と、
    前記第1のファブリックパケットから分割された前記最後のデータ単位が追加されるまで、前記第1のVLバッファからの複数のデータ単位をインターリーブ済みの複数のデータ単位の前記送信ストリームへと追加することを再開する段階と、を更に備える、請求項10に記載の方法。
  12. 複数のデータ単位がプルされて、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加される前記複数のVLバッファの順序を追跡して、少なくとも1つの入れ子のレベルのインターリーブを有するインターリーブ済みの複数のデータ単位の送信ストリームを生成する段階を更に備える、請求項3、10、および11のいずれか1項に記載の方法。
  13. 複数のデータ単位がプルされて、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加される前記複数のVLバッファの前記順序は、VLスタックおよびVLレジスタを用いることにより追跡され、
    前記VLレジスタは、複数のデータ単位がプルされる現在のVLバッファを識別するVL識別を格納するべく用いられ、レベルのインターリーブがインターリーブ済みの複数のデータ単位の前記送信ストリームに追加される場合に前記複数のデータ単位がプルされる前記VLバッファの前記VL識別がVLレジスタに格納され、前記VLレジスタにおける前の前記VL識別が前記VLスタック上にプッシュされ、前記レベルのインターリーブのインターリーブが完了すると、前記VLスタック上の前記VL識別は、前記VLレジスタへとポップされる、請求項12に記載の方法。
  14. 前記VLマーカの識別が前記スタック内にあるか否かを検出する段階と、
    前記VLマーカの識別が前記スタック内にある場合に、前記VLマーカの識別を前記スタックからプルする段階と、を更に含む、請求項に記載の方法。
  15. 受信ポートおよび受信バッファを備えた装置により実行される方法であって、
    前記受信バッファにおけるバッファ空間は、複数の仮想レーンバッファ(複数のVLバッファ)に対して割り当てられ、
    各VLバッファは、それぞれの仮想レーンに対して割り当てられ、
    前記方法は、
    インターリーブ済みの複数のデータ単位の送信済みのストリームを受信する段階であって、複数のデータ単位のそれぞれは、関連するファブリックパケットからのデータの分割された一部を含み、各ファブリックパケットは、ヘッドデータ単位を含む第1のデータ単位を含み、後に複数のボディーデータ単位が続き、テールデータ単位を含む最後のデータ単位で終了する、複数の異なるタイプのデータ単位に分割され、各ボディーデータ単位は、ボディーデータ単位であることを示す表示およびデータペイロードから構成され、各データ単位は、予め定められた固定サイズを有し、各ファブリックパケットは、仮想レーンに関連する、段階と、
    インターリーブ済みの複数のデータ単位の前記送信済みのストリームにおける複数のデータ単位の各グループに関連する仮想レーンを判断し、複数のデータ単位の当該グループが関連する前記仮想レーンに対して割り当てられた前記VLバッファに、複数のデータ単位の各グループに対する複数のデータ単位をバッファ処理することにより、インターリーブ済みの複数のデータ単位の送信済みの前記ストリームから複数のデータ単位を分離して、同一のファブリックパケットから互いに分割された複数のデータ単位を、受信バッファにバッファ処理する段階とを備え
    複数のデータ単位の前記インターリーブ済みの複数のグループは、少なくとも3つのファブリックパケットから分割された複数のデータ単位の複数のグループを含み、
    複数のデータ単位の前記インターリーブ済みの複数のグループは、少なくとも2つのレベルを有する入れ子の形でインターリーブされ、
    前記方法は、
    複数のデータ単位の送信済みの前記ストリームにおいて受信されたときのデータの複数のグループに関連する前記複数の仮想レーンの順序を追跡する段階と、
    複数のデータ単位の各グループにおけるどの複数のデータ単位がバッファ処理されるべきかを決定するべく、追跡された前記順序を使用する段階と、を有し、
    前記複数の仮想レーンの前記順序は、VLスタックおよびVLレジスタを用いることにより追跡され、
    前記VLレジスタは、現在の複数のデータ単位がバッファ処理されていることを識別するVL識別を格納するべく用いられ、
    新しいレベルのインターリーブがインターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおいて検出された場合、複数のデータ単位のインターリーブ済みの前記グループに関連する前記仮想レーンは、前記VLレジスタに格納され、前記VL識別は、前記VLスタックにプッシュされ、
    該新しいレベルのインターリーブが完了すると、前記スタック上の前記VL識別は、前記VLレジスタへとポップされ、
    前記装置は、送信ポートを更に備え、
    前記方法は、
    VLマーカの後の複数のデータ単位に関連する仮想レーンを識別する識別の使用を含む、前記VLマーカを含むインターリーブされた複数のデータ単位の送信済みの前記ストリームにおいて制御データ単位を検出する段階と、
    前記VLマーカの識別により前記VLレジスタを更新する段階と、
    更新された前記VLレジスタの識別を前記VLスタックにプッシュする段階と、を有する、
    方法。
  16. 受信ポートおよび受信バッファを備えた装置により実行される方法であって、
    前記受信バッファにおけるバッファ空間は、複数の仮想レーンバッファ(複数のVLバッファ)に対して割り当てられ、
    各VLバッファは、それぞれの仮想レーンに対して割り当てられ、
    前記方法は、
    インターリーブ済みの複数のデータ単位の送信済みのストリームを受信する段階であって、複数のデータ単位のそれぞれは、関連するファブリックパケットからのデータの分割された一部を含み、各ファブリックパケットは、ヘッドデータ単位を含む第1のデータ単位を含み、後に複数のボディーデータ単位が続き、テールデータ単位を含む最後のデータ単位で終了する、複数の異なるタイプのデータ単位に分割され、各ボディーデータ単位は、ボディーデータ単位であることを示す表示およびデータペイロードから構成され、各データ単位は、予め定められた固定サイズを有し、各ファブリックパケットは、仮想レーンに関連する、段階と、
    インターリーブ済みの複数のデータ単位の前記送信済みのストリームにおける複数のデータ単位の各グループに関連する仮想レーンを判断し、複数のデータ単位の当該グループが関連する前記仮想レーンに対して割り当てられた前記VLバッファに、複数のデータ単位の各グループに対する複数のデータ単位をバッファ処理することにより、インターリーブ済みの複数のデータ単位の送信済みの前記ストリームから複数のデータ単位を分離して、同一のファブリックパケットから互いに分割された複数のデータ単位を、受信バッファにバッファ処理する段階とを備え、
    インターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のシーケンシャルなデータ単位の複数のグループは、固定数のデータ単位を含む複数のリンクパケットにバンドルされ、
    前記複数のリンクパケットの一部は、少なくとも2つのファブリックパケットからの複数のデータ単位を含み、
    各リンクパケットは、1つのリンク転送の寿命を有する、
    方法。
  17. 各データ単位のタイプを検出する段階と、
    第1の仮想レーンに関連するヘッドデータ単位を検出することにより、複数のデータ単位の第1のグループの第1のデータ単位を検出する段階と、
    前記第1の仮想レーンに関連する第1のVLバッファに複数のデータ単位の前記第1のグループの複数のデータ単位をバッファ処理する段階と、
    前記第1の仮想レーンに関連するテールデータ単位を受信する前に、第2の仮想レーンに関連するヘッドデータ単位が受信されたことを検出することにより、複数のデータ単位のインターリーブ済みのグループの第1のデータ単位を検出する段階と、
    前記第2の仮想レーンに関連する第2のVLバッファにおける複数のデータ単位の前記インターリーブ済みのグループの複数のデータ単位をバッファする段階と、
    前記第2の仮想レーンに関連するテールデータ単位を検出することにより、複数のデータ単位の前記インターリーブ済みのグループの終了を検出する段階と、
    前記第2の仮想レーンに関連する前記テールデータ単位の後の前記データ単位を、複数のデータ単位の次のグループの前記第1のデータ単位を規定するものとして検出する段階と、
    複数のデータ単位の前記次のグループの前記第1のデータ単位がヘッドデータ単位、本体データ単位、またはテールデータ単位であるかに基づいて、複数のデータ単位の前記次のグループの前記複数のデータ単位に関連する仮想レーンを決定する段階と、を更に有する、請求項15または16に記載の方法。
  18. 複数のデータ単位の前記インターリーブ済みの複数のグループは、少なくとも3つのファブリックパケットから分割された複数のデータ単位の複数のグループを含み、
    複数のデータ単位の前記インターリーブ済みの複数のグループは、少なくとも2つのレベルを有する入れ子の形でインターリーブされる、請求項16に記載の方法。
  19. 複数のデータ単位の送信済みの前記ストリームにおいて受信されたときのデータの複数のグループに関連する前記複数の仮想レーンの順序を追跡する段階と、
    複数のデータ単位の各グループにおけるどの複数のータ単位がバッファ処理されるべきかを決定するべく、追跡された前記順序を使用する段階と、を更に有する、請求項18に記載の方法。
  20. 前記複数の仮想レーンの前記順序は、VLスタックおよびVLレジスタを用いることにより追跡され、
    前記VLレジスタは、現在の複数のータ単位がバッファ処理されていることを識別するVL識別を格納するべく用いられ、
    新しいレベルのインターリーブがインターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおいて検出された場合、複数のデータ単位のインターリーブ済みの前記グループに関連する前記仮想レーンは、前記VLレジスタに格納され、前記VL識別は、前記VLスタックにプッシュされ、
    該新しいレベルのインターリーブが完了すると、前記スタック上の前記VL識別は、前記VLレジスタへとポップされる、請求項19に記載の方法。
  21. 前記VLマーカの識別が前記スタック内にあるか否かを検出する段階と、
    前記VLマーカの識別が前記スタック内にある場合に、前記VLマーカの識別を前記スタックからプルする段階と、を更に含む、請求項15に記載の方法。
  22. リンクインターフェースピアに通信可能に結合されるリンクインターフェースを備える装置により実行される方法であって、
    前記方法は、
    複数のファブリックパケットのそれぞれを、ヘッドデータ単位を含む第1のデータ単位を含み、後に複数のボディーデータ単位が続き、テールデータ単位を含む最後のデータ単位で終了する、複数の異なるタイプのデータ単位に分割する段階であって、各ボディーデータ単位は、ボディーデータ単位であることを示す表示およびデータペイロードから構成され、各データ単位は、予め定められた固定サイズを有し、各ファブリックパケットは、それぞれのメッセージに対応するデータを搬送する、段階と、
    複数のファブリックパケットから分割された複数のデータ単位がインターリーブされる、インターリーブ済みの複数のデータ単位の送信ストリームを生成する段階と、
    前記リンクインターフェースピアに向かうリンクにアウトバウンドされたインターリーブ済みの複数のデータ単位の前記送信ストリームを送信する段階と、
    前記リンクインターフェースピアから送信されたインターリーブ済みの複数のデータ単位の送信済みのストリームを受信する段階であって、複数のデータ単位のぞれぞれは、関連するファブリックパケットからのデータの分割された一部を含み、インターリーブ済みの複数のデータ単位の送信済みの前記ストリームは、送信済みの前記ストリームにおいてインターリーブされる複数のデータ単位を含む、段階と、
    複数のデータ単位を、インターリーブ済みの複数のデータ単位の送信済みの前記ストリームから分離し、受信バッファに同一のファブリックパケットから互いに分割された複数のデータ単位をバッファ処理する段階と、を有し、
    前記送信ストリームを生成する段階は、
    前記送信ストリームに、VLマーカを追加する段階と、
    前記VLマーカが識別するデータ単位を、前記送信ストリームにおける前記VLマーカの後に追加する段階と、を有する、
    方法。
  23. リンクインターフェースピアに通信可能に結合されるリンクインターフェースを備える装置により実行される方法であって、
    前記方法は、
    複数のファブリックパケットのそれぞれを、ヘッドデータ単位を含む第1のデータ単位を含み、後に複数のボディーデータ単位が続き、テールデータ単位を含む最後のデータ単位で終了する、複数の異なるタイプのデータ単位に分割する段階であって、各ボディーデータ単位は、ボディーデータ単位であることを示す表示およびデータペイロードから構成され、各データ単位は、予め定められた固定サイズを有し、各ファブリックパケットは、それぞれのメッセージに対応するデータを搬送する、段階と、
    複数のファブリックパケットから分割された複数のデータ単位がインターリーブされる、インターリーブ済みの複数のデータ単位の送信ストリームを生成する段階と、
    前記リンクインターフェースピアに向かうリンクにアウトバウンドされたインターリーブ済みの複数のデータ単位の前記送信ストリームを送信する段階と、
    前記リンクインターフェースピアから送信されたインターリーブ済みの複数のデータ単位の送信済みのストリームを受信する段階であって、複数のデータ単位のぞれぞれは、関連するファブリックパケットからのデータの分割された一部を含み、インターリーブ済みの複数のデータ単位の送信済みの前記ストリームは、送信済みの前記ストリームにおいてインターリーブされる複数のデータ単位を含む、段階と、
    複数のデータ単位を、インターリーブ済みの複数のデータ単位の送信済みの前記ストリームから分離し、受信バッファに同一のファブリックパケットから互いに分割された複数のデータ単位をバッファ処理する段階と、を有し、
    前記装置は、前記リンクインターフェースが集積されるホストファブリックインターフェースを有するホストインターフェースチップを備え、
    前記ホストファブリックインターフェースは、
    送信ポートに結合され、少なくとも1つの送信バッファを含む送信エンジンと、
    受信ポートに結合され、少なくとも1つの受信バッファを含む受信エンジンと、
    前記送信エンジンおよび前記受信エンジンの各々に結合された周辺構成要素相互接続エクスプレス(PCIe)インターフェースとを更に含む、
    方法。
  24. リンクインターフェースピアに通信可能に結合されるリンクインターフェースを備える装置により実行される方法であって、
    前記方法は、
    複数のファブリックパケットのそれぞれを、ヘッドデータ単位を含む第1のデータ単位を含み、後に複数のボディーデータ単位が続き、テールデータ単位を含む最後のデータ単位で終了する、複数の異なるタイプのデータ単位に分割する段階であって、各ボディーデータ単位は、ボディーデータ単位であることを示す表示およびデータペイロードから構成され、各データ単位は、予め定められた固定サイズを有し、各ファブリックパケットは、それぞれのメッセージに対応するデータを搬送する、段階と、
    複数のファブリックパケットから分割された複数のデータ単位がインターリーブされる、インターリーブ済みの複数のデータ単位の送信ストリームを生成する段階と、
    前記リンクインターフェースピアに向かうリンクにアウトバウンドされたインターリーブ済みの複数のデータ単位の前記送信ストリームを送信する段階と、
    前記リンクインターフェースピアから送信されたインターリーブ済みの複数のデータ単位の送信済みのストリームを受信する段階であって、複数のデータ単位のぞれぞれは、関連するファブリックパケットからのデータの分割された一部を含み、インターリーブ済みの複数のデータ単位の送信済みの前記ストリームは、送信済みの前記ストリームにおいてインターリーブされる複数のデータ単位を含む、段階と、
    複数のデータ単位を、インターリーブ済みの複数のデータ単位の送信済みの前記ストリームから分離し、受信バッファに同一のファブリックパケットから互いに分割された複数のデータ単位をバッファ処理する段階と、を有し、
    前記装置は、システムオンチップ(SoC)を備え、
    前記システムオンチップは、
    送信ポートに結合され、少なくとも1つの送信バッファを含む送信エンジン、
    受信ポートに結合され、少なくとも1つの受信バッファを含む受信エンジン、および
    前記送信エンジンおよび前記受信エンジンの各々に結合された周辺構成要素相互接続エクスプレス(PCIe)インターフェースを有し、前記リンクインターフェースが集積されるホストファブリックインターフェースと、
    前記ホストファブリックインターフェース上でPCIeインターフェースに結合された前記PCIeインターフェースを含むプロセッサとを有する、
    方法。
  25. インターリーブ済みの前記複数のデータ単位の前記送信ストリームにおけるインターリーブ済みの複数のデータ単位は、少なくとも3つのファブリックパケットから分割されたインターリーブ済みの複数のデータ単位を含み、
    インターリーブ済みの複数のデータ単位の前記送信ストリームは、少なくとも2つのレベルを有する入れ子の形でインターリーブされる、請求項23または24に記載の方法。
  26. 複数のファブリックパケットのそれぞれから分割された前記複数のデータ単位を、前記ファブリックパケットに割り当てられた優先度レベルに関連させる段階と、
    より高い優先度を有する複数のデータ単位のストリームが、インターリーブ済みの複数のデータ単位の前記送信ストリームにおいてより低い優先度を有する複数のデータ単位のストリームへとインターリーブされるように、より高い優先度レベルを有する複数のデータ単位の送信がより低い優先度レベルを有する複数のデータ単位の送信を先取りする、ファブリックパケット先取りを促す段階と、
    連続的に高くなる優先度レベルを有する複数のデータ単位の送信が、複数のレベルのインターリーブを有する入れ子の形で複数のデータ単位の送信を先取りする、複数のレベルのファブリックパケット先取りを促す段階と、を更に備える、請求項23から25のいずれか一項に記載の方法。
  27. 前記リンクインターフェースは、複数の仮想レーン(VL)ファーストインファーストアウト(FIFO)バッファの各々に割り当てられたバッファ空間を有する送信バッファを含み、
    各VL FIFOバッファは、各仮想レーンに関連し、
    前記方法は、
    複数のそれぞれの仮想レーンおよび関連するVL FIFOバッファに対する優先度レベルを割り当てる段階と、
    複数のそれぞれのファブリックパケットに割り当てられた仮想レーンを検出する段階と、
    前記複数のデータ単位が分割される前記ファブリックパケットに割り当てられた前記仮想レーンに基いて、複数のデータ単位をVL FIFOバッファにバッファ処理する段階と、
    第1のVL FIFOバッファが送信する準備のできた複数のデータ単位をバッファ処理したことを検出する段階と、
    前記第1のVL FIFOバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、複数のデータ単位の送信された前記ストリームに追加する段階と、
    前記第1のVL FIFOバッファから複数のデータ単位を追加する間に、前記第1のVL FIFOバッファよりも高い優先度レベルを有する第2のVL FIFOバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出する段階と、
    前記第1のVL FIFOバッファからの複数のデータ単位のプルを停止し、
    前記第2のVL FIFOバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、
    前記第2のVL FIFOバッファが送信する準備ができた前記複数のデータ単位をバッファ処理したことを検出することに応答して、前記第2のVL FIFOバッファからの複数のデータ単位の送信のために、前記第1のVL FIFOバッファにおける複数のデータ単位の送信を先取りする段階と、を更に備える、請求項26に記載の方法。
  28. 前記リンクインターフェースは、複数の仮想レーン(VL)ファーストインファーストアウト(FIFO)バッファに割り当てられたバッファ空間を有する送信バッファを含み、
    各VL FIFOバッファは、各仮想レーンに関連し、
    前記方法は、
    第1のファブリックパケットから分割された複数のデータ単位を、第1のVL FIFOバッファにバッファ処理する段階と、
    第2のファブリックパケットから分割された複数のデータ単位を、第2のVL FIFOバッファにバッファ処理する段階と、
    前記第1のVL FIFOバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階であって、前記複数のデータ単位は、前記第1のファブリックパケットから分割された前記複数のデータ単位の第1の部分を含む、段階と、
    前記第2のVL FIFOバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、前記第1のファブリックパケットと前記第2のファブリックパケットから分割された複数のデータ単位をインターリーブする段階であって、前記複数のデータ単位は、前記第2のファブリックパケットから分割された前記複数のデータ単位の少なくとも第1の部分を含む、段階と、を更に備える、
    請求項23〜27のいずれか1項に記載の方法。
  29. 前記受信バッファにおけるバッファ空間は、複数の仮想レーン(VL)ファーストインファーストアウト(FIFO)バッファに対して割り当てられ、
    各VL FIFOバッファは、各仮想レーンに対して割り当てられ、
    前記方法は、
    インターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のデータ単位に関連する仮想レーンを決定する段階と、
    前記複数のデータ単位が関連する前記仮想レーンに対して割り当てられた前記VL FIFOバッファに、複数のデータ単位をバッファ処理する段階と、を更に備える、請求項23〜28のいずれか1項に記載の方法。
  30. 前記インターリーブ済みの複数のデータ単位は、少なくとも3つのファブリックパケットから分割された複数のデータ単位を含み、
    前記インターリーブ済みの前記複数のデータ単位は、少なくとも2つのレベルを有する入れ子の形でインターリーブされ、
    前記方法は、
    複数のデータ単位の送信済みの前記ストリームにおいて受信されたときの複数のデータ単位に関連する前記複数の仮想レーンの順序を追跡する段階と、
    どの複数のVL FIFOバッファデータ単位がバッファ処理されるべきかを決定するべく、追跡された前記順序を使用する段階と、を更に有する、請求項29に記載の方法。
JP2018007733A 2013-12-20 2018-01-19 方法 Active JP6548756B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/136,293 US10230665B2 (en) 2013-12-20 2013-12-20 Hierarchical/lossless packet preemption to reduce latency jitter in flow-controlled packet-based networks
US14/136,293 2013-12-20

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016525851A Division JP6311149B2 (ja) 2013-12-20 2014-12-11 装置

Publications (2)

Publication Number Publication Date
JP2018082500A JP2018082500A (ja) 2018-05-24
JP6548756B2 true JP6548756B2 (ja) 2019-07-24

Family

ID=53401368

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016525851A Active JP6311149B2 (ja) 2013-12-20 2014-12-11 装置
JP2018007733A Active JP6548756B2 (ja) 2013-12-20 2018-01-19 方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2016525851A Active JP6311149B2 (ja) 2013-12-20 2014-12-11 装置

Country Status (6)

Country Link
US (1) US10230665B2 (ja)
EP (1) EP3028421B1 (ja)
JP (2) JP6311149B2 (ja)
KR (1) KR20160014680A (ja)
CN (1) CN105359471A (ja)
WO (1) WO2015094918A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105579952B (zh) * 2013-10-23 2019-07-12 英特尔公司 利用伪停顿的高速通道上的emi抑制
US10230665B2 (en) 2013-12-20 2019-03-12 Intel Corporation Hierarchical/lossless packet preemption to reduce latency jitter in flow-controlled packet-based networks
KR20180104602A (ko) * 2016-01-27 2018-09-21 소니 주식회사 데이터 처리 장치 및 데이터 처리 방법
CN109391559B (zh) * 2017-08-10 2022-10-18 华为技术有限公司 网络设备
KR101987346B1 (ko) * 2017-09-01 2019-06-10 한국과학기술원 데이터 센터 간 광역 통신망에서 통계적 자원 할당 및 서비스 품질 보장 시스템과 이의 방법
US10659374B2 (en) 2017-09-29 2020-05-19 Electronics And Telecommunications Research Institute Method and apparatus for controlling frame transmission
CN110661728B (zh) * 2019-09-12 2022-10-04 无锡江南计算技术研究所 多虚通道传输时共享与私有相结合的缓冲设计方法与装置
KR20220047443A (ko) * 2020-10-08 2022-04-18 삼성전자주식회사 메모리 시스템, 이를 포함하는 전자 기기, 및 메모리 컨트롤러
US11636061B2 (en) 2021-09-01 2023-04-25 Xilinx, Inc. On-demand packetization for a chip-to-chip interface
CN117675705A (zh) * 2023-12-21 2024-03-08 无锡众星微系统技术有限公司 一种网络链路层的流控包更新方法和装置

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01165245A (ja) 1987-12-22 1989-06-29 Fujitsu Ltd 割込みパケット制御方式
EP0451426B1 (en) 1990-04-11 1994-11-02 International Business Machines Corporation Multiple-access control for a communication system with order pad passing
US5168495A (en) * 1991-05-10 1992-12-01 Ibm Corporation Nested frame communication protocol
US5883893A (en) 1996-09-10 1999-03-16 Cisco Technology, Inc. ATM voice transport protocol
GB2332333B (en) 1997-12-09 2003-01-15 Sony Uk Ltd An ATM re-assembly circuit and method
CN1153378C (zh) * 1998-02-14 2004-06-09 三星电子株式会社 具有专用控制信道的移动通信系统的数据通信装置和方法
US7010607B1 (en) * 1999-09-15 2006-03-07 Hewlett-Packard Development Company, L.P. Method for training a communication link between ports to correct for errors
US6628615B1 (en) * 2000-01-18 2003-09-30 International Business Machines Corporation Two level virtual channels
DE60038538T2 (de) 2000-02-28 2009-06-25 Alcatel Lucent Vermittlungseinrichtung und Vermittlungsverfahren
US7046633B2 (en) * 2000-09-21 2006-05-16 Avici Systems, Inc. Router implemented with a gamma graph interconnection network
US7039058B2 (en) * 2000-09-21 2006-05-02 Avici Systems, Inc. Switched interconnection network with increased bandwidth and port count
EP1209864A3 (en) * 2000-10-24 2004-03-17 Sagem SA System and method for providing multiple quality of service levels over a single asynchronous transfer mode (ATM) virtual communications channel
US6888848B2 (en) * 2000-12-14 2005-05-03 Nortel Networks Limited Compact segmentation of variable-size packet streams
US7486685B2 (en) 2001-06-29 2009-02-03 Rankin Linda J System for sharing channels by interleaving flits
US6912602B2 (en) 2001-11-20 2005-06-28 Broadcom Corporation System having two or more packet interfaces, a switch, and a shared packet DMA circuit
JP3972936B2 (ja) 2002-10-15 2007-09-05 エステーミクロエレクトロニクス ソシエテ アノニム デジタルメッセージ伝送プロトコル
US20050172091A1 (en) 2004-01-29 2005-08-04 Rotithor Hemant G. Method and an apparatus for interleaving read data return in a packetized interconnect to memory
US20050254423A1 (en) * 2004-05-12 2005-11-17 Nokia Corporation Rate shaper algorithm
US7467358B2 (en) * 2004-06-03 2008-12-16 Gwangju Institute Of Science And Technology Asynchronous switch based on butterfly fat-tree for network on chip application
US7586918B2 (en) 2004-09-22 2009-09-08 Cisco Technology, Inc. Link fragment interleaving with fragmentation preceding queuing
JP2006128859A (ja) 2004-10-27 2006-05-18 Yokogawa Electric Corp フレーム転送装置及びフレーム転送システム
CN100574330C (zh) 2005-08-09 2009-12-23 中兴通讯股份有限公司 无线链路层中非确认模式协议数据单元的发送和接收方法
US8325768B2 (en) * 2005-08-24 2012-12-04 Intel Corporation Interleaving data packets in a packet-based communication system
KR100763533B1 (ko) * 2006-06-01 2007-10-05 삼성전자주식회사 버스 인버팅 코드 생성 장치 및 이를 이용한 버스 인버팅코드 생성 방법
US20080192774A1 (en) * 2007-02-13 2008-08-14 Samsung Electronics Co., Ltd. Method and system for aggregating multiple small packets in wireless communication
CN101232456B (zh) 2008-01-25 2010-09-08 浙江大学 一种分布式可测试片上网络路由器
CN101789892B (zh) 2010-03-11 2012-05-09 浙江大学 全节点虚通道的片上网络环形拓扑数据交换方法及其系统
JP2012155650A (ja) * 2011-01-28 2012-08-16 Toshiba Corp ルータ及びメニーコアシステム
US8798038B2 (en) * 2011-08-26 2014-08-05 Sonics, Inc. Efficient header generation in packetized protocols for flexible system on chip architectures
US8687483B2 (en) 2011-09-22 2014-04-01 Ixia Parallel traffic generator with priority flow control
US10230665B2 (en) 2013-12-20 2019-03-12 Intel Corporation Hierarchical/lossless packet preemption to reduce latency jitter in flow-controlled packet-based networks

Also Published As

Publication number Publication date
EP3028421B1 (en) 2020-02-26
JP6311149B2 (ja) 2018-04-18
JP2018082500A (ja) 2018-05-24
US20150180799A1 (en) 2015-06-25
WO2015094918A1 (en) 2015-06-25
JP2016527790A (ja) 2016-09-08
CN105359471A (zh) 2016-02-24
EP3028421A4 (en) 2017-07-19
EP3028421A1 (en) 2016-06-08
KR20160014680A (ko) 2016-02-11
US10230665B2 (en) 2019-03-12

Similar Documents

Publication Publication Date Title
JP6548756B2 (ja) 方法
JP6367326B2 (ja) リンクファブリックパケットとは非同期なフリットバンドルを用いたリンク転送、ビットエラー検出、及びリンクリトライ
US9887804B2 (en) Lane error detection and lane removal mechanism to reduce the probability of data corruption
US9917787B2 (en) Method and system for flexible credit exchange within high performance fabrics
US20170237671A1 (en) Method, apparatus, and system for qos within high performance fabrics
US9819452B2 (en) Efficient link layer retry protocol utilizing implicit acknowledgements

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180216

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180216

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190121

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190510

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190625

R150 Certificate of patent or registration of utility model

Ref document number: 6548756

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250