(57)【要約】      （修正有）【課題】フローコントローラパケットベースのネットワークにおけるレイテンシジッタを低減する方法を提供する。【解決手段】複数のファブリックパケットは、複数のデータ単位に分割され、異なるファブリックパケットに対する複数のデータ単位は、別個のバッファにバッファ処理される。複数のデータ単位は、複数のバッファからプルされ、複数のデータ単位の複数のグループがインターリーブされ、送信ストリームに追加される。レシーバにより受信されると、複数のデータ単位の複数のグループは、同一の複数のファブリックパケットに対するデータ単位が互いにグループ化される別個のバッファに分離され処理される。各バッファは、各仮想レーン（ＶＬ）に関連し、複数のファブリックパケットは、複数の仮想レーンを用いて、複数のファブリックリンクを介して効果的に転送される。【選択図】図１
2018082500.tif 000002
【特許請求の範囲】
【請求項１】
複数のファブリックパケットの各々を複数のデータ単位に分割し、
複数のファブリックパケットから分割された複数のデータ単位の複数のグループがインターリーブされる、インターリーブ済みの複数のデータ単位の送信ストリームを生成し、
リンクにアウトバウンドされたインターリーブ済みの複数のデータ単位の前記送信ストリームを送信する回路およびロジックを有する送信ポートを備える、装置。
【請求項２】
前記送信ポートは、
各ファブリックパケットから分割された前記複数のデータ単位を、前記ファブリックパケットに割り当てられた優先度レベルに関連させ、
より高い優先度を有する複数のデータ単位のストリームが、インターリーブ済みの複数のデータ単位の前記送信ストリームにおいてより低い優先度を有する複数のデータ単位のストリームへとインターリーブされるように、より高い優先度レベルを有する複数のデータ単位の送信がより低い優先度レベルを有する複数のデータ単位の送信を先取りする、ファブリックパケット先取りを促す、回路およびロジックを更に含む、請求項１に記載の装置。
【請求項３】
前記送信ポートは、
連続的により高い複数の優先度レベルを有する複数のデータ単位の送信が、複数のレベルのインターリーブを有する入れ子の形で複数のデータ単位の送信を先取りする、複数のレベルのファブリックパケット先取りを促す回路およびロジックを更に備える、請求項２に記載の装置。
【請求項４】
前記送信ポートは、複数の仮想レーン（ＶＬ）バッファの各々に割り当てられたバッファ空間を有する送信バッファを更に含み、
各ＶＬバッファは、各仮想レーンに関連し、
前記送信ポートは、
各仮想レーンおよび関連するＶＬバッファに対する優先度レベルを割り当て、
各ファブリックパケットに割り当てられた仮想レーンを検出し、
前記複数のデータ単位が分割される前記ファブリックパケットに割り当てられた前記仮想レーンに基いて、ＶＬバッファに複数のデータ単位をバッファ処理し、
第１のＶＬバッファが送信する準備のできた複数のデータ単位をバッファ処理したことを検出し、
前記第１のＶＬバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加し、
前記第１のＶＬバッファから複数のデータ単位を追加する間に、前記第１のＶＬバッファよりも高い優先度レベルを有する第２のＶＬバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出し、
前記第１のＶＬバッファからの複数のデータ単位のプルを停止し、
前記第２のＶＬバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、
前記検出に応答して、前記第２のＶＬバッファからの複数のデータ単位の送信を優先して、前記第１のＶＬバッファにおける複数のデータ単位の送信を先取りする回路およびロジックを更に備える、請求項２に記載の装置。
【請求項５】
前記送信ポートは、
第１の仮想レーンおよび第３の仮想レーンに対する同一の優先度レベルを割り当て、
前記第１のＶＬバッファにおける第１のファブリックパケットから分割された複数のデータ単位をバッファ処理し、第３のファブリックパケットから分割された複数のデータ単位を、前記第３の仮想レーンに関連する第３のＶＬバッファにバッファ処理し、
前記第１のＶＬバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加し、
前記第１のＶＬバッファからの複数のデータ単位を追加する間に、前記第１のＶＬバッファにおける前記第１のファブリックパケットから分割された複数のデータ単位の利用可能性におけるバブルを検出し、
前記第３のＶＬバッファにおける複数のデータ単位が送信する準備ができていることを検出し、
前記第３のＶＬバッファにおける前記バブルおよび複数のデータ単位が送信する準備ができていることを検出することに応答して、前記第３のＶＬバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、インターリーブ済みの複数のデータ単位の前記送信ストリームにおける前記第３のＶＬバッファの複数のデータ単位の送信をインターリーブする回路およびロジックを更に備える、請求項４に記載の装置。
【請求項６】
インターリーブ済みの前記複数のデータ単位は、少なくとも３つのファブリックパケットから分割されたインターリーブ済みの複数のデータ単位を含み、
インターリーブ済みの前記複数のデータ単位は、少なくとも２つのレベルを有する入れ子の形でインターリーブされる、請求項１〜５のいずれか１項に記載の装置。
【請求項７】
前記送信ポートは、複数のＶＬバッファの各々に割り当てられたバッファ空間を有する送信バッファを更に含み、
各ＶＬバッファは、各仮想レーンに関連し、
前記送信ポートは、
第１のファブリックパケットから分割された複数のデータ単位を、第１のＶＬバッファにバッファ処理し、
第２のファブリックパケットから分割された複数のデータ単位を第２のＶＬバッファにバッファ処理し、
前記第１のＶＬバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加し、
前記第２のＶＬバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、前記第２のファブリックパケットから分割された複数のデータ単位を、前記第１のファブリックパケットとインターリーブする回路およびロジックを更に備え、
前記複数のデータ単位は、前記第１のファブリックパケットから分割された前記複数のデータ単位の第１の部分を含み、
前記複数のデータ単位は、前記第２のファブリックパケットから分割された前記複数のデータ単位の少なくとも第１の部分を含む、請求項１〜６のいずれか１項に記載の装置。
【請求項８】
受信バッファを有し、
インターリーブ済みの複数のデータ単位の送信済みのストリームを受信し、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームから複数のデータ単位の複数のグループを分離し、
同一のファブリックパケットから互いに分割された複数のデータ単位の複数のグループを、前記受信バッファにバッファ処理する回路およびロジックを有する受信ポートを備え、
各データ単位は、関連するファブリックパケットからのデータの分割された一部を含み、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームは、送信済みの前記ストリームにおいてインターリーブされる複数のデータ単位の前記複数のグループを含み、
複数のデータ単位の１つのグループにおける各データ単位は、前記同一のファブリックパケットに関連する、装置。
【請求項９】
前記受信バッファにおけるバッファ空間は、複数の仮想レーン（ＶＬ）バッファに対して割り当てられ、
各ＶＬバッファは、各仮想レーンに対して割り当てられ、
前記受信ポートは、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のデータ単位の各グループに関連する仮想レーンを決定し、
複数のデータ単位の各グループが関連する前記仮想レーンに対して割り当てられた前記ＶＬバッファに、複数のデータ単位の該グループに対する複数のデータ単位をバッファ処理する回路およびロジックを更に有する、請求項８に記載の装置。
【請求項１０】
各ファブリックパケットは、複数の本体データ単位が後に続くヘッドデータ単位を含む第１のデータ単位を含み、テールデータ単位を含む最後のデータ単位で終了する複数の異なるタイプのデータ単位に分割され、
前記受信ポートは、
各データ単位のタイプを検出し、
第１の仮想レーンに関連するヘッドデータ単位を検出することにより、複数のデータ単位の第１のグループの第１のデータ単位を検出し、
前記第１の仮想レーンに関連する第１のＶＬバッファに複数のデータ単位の前記第１のグループの複数のデータ単位をバッファ処理し、
前記第１の仮想レーンに関連するテールユニットを受信する前に、第２の仮想レーンに関連するヘッドデータ単位が受信されたことを検出することにより、複数のデータ単位のインターリーブ済みのグループの第１のデータ単位を検出し、
前記第２の仮想レーンに関連する第２のＶＬバッファにおける複数のデータ単位の前記インターリーブ済みのグループの複数のデータ単位をバッファし、
前記第２の仮想レーンに関連するテールユニットを検出することにより、複数のデータ単位の前記インターリーブ済みのグループの終了を検出し、
前記第２の仮想レーンに関連する前記テールユニットの後の前記データ単位を、複数のデータ単位の次のグループの前記第１のデータ単位を規定するものとして検出し、
複数のデータ単位の前記次のグループの前記第１のデータ単位がヘッドデータ単位、本体データ単位、またはテールデータ単位であるかに基づいて、複数のデータ単位の前記次のグループの前記複数のデータ単位に関連する仮想レーンを決定する回路およびロジックを更に有する、請求項９に記載の装置。
【請求項１１】
複数のデータ単位のインターリーブ済みの前記複数のグループは、少なくとも３つのファブリックパケットから分割された複数のデータ単位の複数のグループを含み、
複数のデータ単位のインターリーブ済みの前記複数のグループは、少なくとも２つのレベルを有する入れ子の形でインターリーブされる、請求項９に記載の装置。
【請求項１２】
前記受信ポートは、
複数のデータ単位の送信済みの前記ストリームにおいて受信されたときのデータの複数のグループに関連する前記複数の仮想レーンの順序を追跡し、
複数のデータ単位の各グループにおけるどの複数のＶＬバッファデータ単位がバッファ処理されるべきかを決定するべく、追跡された前記順序を使用する回路およびロジックを更に有する、請求項１１に記載の装置。
【請求項１３】
前記複数の仮想レーンの順序は、ＶＬスタックおよびＶＬレジスタを用いることにより追跡され、
前記ＶＬレジスタは、現在の複数のＶＬバッファデータ単位がバッファ処理されていることを識別するＶＬ証拠を格納するべく用いられ、
新しいレベルのインターリーブがインターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおいて検出された場合、複数のデータ単位のインターリーブ済みの前記グループに関連する前記ＶＬは、前記ＶＬレジスタに格納され、その前の前記ＶＬ証拠は、前記ＶＬスタックの上部にプッシュされ、
インターリーブの該新しいレベルのインターリーブが完了すると、前記スタックの上部の前記ＶＬ証拠は、前記ＶＬレジスタへとポップされる、請求項１１または１２に記載の装置。
【請求項１４】
リンクインターフェースがリンクインターフェースピアに通信可能に結合されるリンクを含むシステムに取り付けられる前記リンクインターフェースを備え、
前記リンクインターフェースは、
複数のファブリックパケットの各々を複数のデータ単位に分割し、
複数のファブリックパケットから分割された複数のデータ単位の複数のグループがインターリーブされる、インターリーブ済みの複数のデータ単位の送信ストリームを生成し、
前記リンクインターフェースピアの受信ポートに向かう前記リンクにアウトバウンドされたインターリーブ済みの複数のデータ単位の前記送信ストリームを送信する回路およびロジックを含む送信ポートと、
受信バッファを含み、
前記リンクインターフェースピアの送信ポートから送信されたインターリーブ済みの複数のデータ単位の送信済みのストリームを受信し、
複数のデータ単位の前記複数のグループを、インターリーブ済みの複数のデータ単位の送信済みの前記ストリームから分離し、前記受信バッファに同一のファブリックパケットから互いに分割された複数のデータ単位の複数のグループをバッファ処理する回路およびロジックを含む受信ポートとを有し、
各データ単位は、関連するファブリックパケットからのデータの分割された一部を含み、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームは、送信済みの前記ストリームにおいてインターリーブされる複数のデータ単位の複数のグループを含み、
複数のデータ単位のグループにおける各データ単位は、前記同一のファブリックパケットに関連する、装置。
【請求項１５】
インターリーブ済みの前記複数のデータ単位の前記送信ストリームにおけるインターリーブ済みの複数のデータ単位は、少なくとも３つのファブリックパケットから分割されたインターリーブ済みの複数のデータ単位を含み、
インターリーブ済みの複数のデータ単位の前記送信ストリームは、少なくとも２つのレベルを有する入れ子の形でインターリーブされ、
前記受信ポートにおいて受信されたインターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のデータ単位のインターリーブ済みの前記複数のグループは、少なくとも３つのファブリックパケットから分割された複数のデータ単位の複数のグループを含み、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のデータ単位のインターリーブ済みの前記複数のグループは、少なくとも２つのレベルを有する入れ子の形でインターリーブされる、請求項１４に記載の装置。
【請求項１６】
前記送信ポートは、
各ファブリックパケットから分割された前記複数のデータ単位を、前記ファブリックパケットに割り当てられた優先度レベルに関連させ、
より高い優先度を有する複数のデータ単位のストリームが、インターリーブ済みの複数のデータ単位の前記送信ストリームにおいてより低い優先度を有する複数のデータ単位のストリームへとインターリーブされるように、より高い優先度レベルを有する複数のデータ単位の送信がより低い優先度レベルを有する複数のデータ単位の送信を先取りする、ファブリックパケット先取りを促し、
連続的により高い優先度レベルを有する複数のデータ単位の送信が、複数のレベルのインターリーブを有する入れ子の形で複数のデータ単位の送信を先取りする、複数のレベルのファブリックパケット先取りを促す、回路およびロジックを更に備える、請求項１４に記載の装置。
【請求項１７】
前記送信ポートは、複数の仮想レーン（ＶＬ）ファーストインファーストアウト（ＦＩＦＯ）バッファの各々に割り当てられたバッファ空間を有する送信バッファを更に含み、
各ＶＬ  ＦＩＦＯバッファは、各仮想レーンに関連し、
前記送信ポートは、
各仮想レーンおよび関連するＶＬバッファに対する優先度レベルを割り当て、
各ファブリックパケットに割り当てられた仮想レーンを検出し、
前記複数のデータ単位が分割される前記ファブリックパケットに割り当てられた前記仮想レーンに基いて、複数のデータ単位をＶＬ  ＦＩＦＯバッファにバッファ処理し、
第１のＶＬ  ＦＩＦＯバッファが送信する準備のできた複数のデータ単位をバッファ処理したことを検出し、
前記第１のＶＬ  ＦＩＦＯバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、複数のデータ単位の送信された前記ストリームに追加し、
前記第１のＶＬ  ＦＩＦＯバッファから複数のデータ単位を追加する間に、前記第１のＶＬ  ＦＩＦＯバッファよりも高い優先度レベルを有する第２のＶＬ  ＦＩＦＯバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出し、
前記第１のＶＬ  ＦＩＦＯバッファからの複数のデータ単位のプルを停止し、
前記第２のＶＬ  ＦＩＦＯバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、
前記検出に応答して、前記第２のＶＬ  ＦＩＦＯバッファからの複数のデータ単位の送信のために、前記第１のＶＬ  ＦＩＦＯバッファにおける複数のデータ単位の送信を先取りする回路およびロジックを更に備える、請求項１６に記載の装置。
【請求項１８】
前記送信ポートは、複数のＶＬファーストインファーストアウト（ＦＩＦＯ）バッファの各々に割り当てられたバッファ空間を有する送信バッファを更に含み、
各ＶＬ  ＦＩＦＯバッファは、各仮想レーンに関連し、
前記送信ポートは、
第１のファブリックパケットから分割された複数のデータ単位を、第１のＶＬ  ＦＩＦＯバッファにバッファ処理し、
第２のファブリックパケットから分割された複数のデータ単位を、第２のＶＬ  ＦＩＦＯバッファにバッファ処理し、
前記第１のＶＬ  ＦＩＦＯバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加し、
前記第２のＶＬ  ＦＩＦＯバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、前記第１のファブリックパケットと前記第２のファブリックパケットから分割された複数のデータ単位をインターリーブする回路およびロジックを更に備え、
前記複数のデータ単位は、前記第１のファブリックパケットから分割された前記データ単位の第１の部分を含み、
前記複数のデータ単位は、前記第２のファブリックパケットから分割された前記複数のデータ単位の少なくとも第１の部分を含む、請求項１４〜１７のいずれか１項に記載の装置。
【請求項１９】
前記受信バッファにおけるバッファ空間は、複数の仮想レーン（ＶＬ）ファーストインファーストアウト（ＦＩＦＯ）バッファに対して割り当てられ、
各ＶＬ  ＦＩＦＯバッファは、各仮想レーンに対して割り当てられ、
前記送信ポートは、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のデータ単位の各グループに関連する仮想レーンを決定し、
複数のデータ単位の各グループが関連する前記仮想レーンに対して割り当てられた、前記ＶＬ  ＦＩＦＯバッファに、複数のデータ単位の該グループに対する複数のデータ単位をバッファ処理する回路およびロジックを更に有する、請求項１４〜１８のいずれか１項に記載の装置。
【請求項２０】
複数のファブリックパケットの各々を複数のデータ単位に分割する段階と、
複数のファブリックパケットから分割された複数のデータ単位の複数のグループがインターリーブされる、インターリーブ済みの複数のデータ単位の送信ストリームを生成する段階と、
リンクにアウトバウンドされたインターリーブ済みの複数のデータ単位の前記送信ストリームを送信する段階とを備える、方法。
【請求項２１】
各ファブリックパケットから分割された前記複数のデータ単位を、前記ファブリックパケットに割り当てられた優先度レベルに関連させる段階と、
より高い優先度を有する複数のデータ単位のストリームが、インターリーブ済みの複数のデータ単位の前記送信ストリームにおいてより低い優先度を有する複数のデータ単位のストリームへとインターリーブされるように、より高い優先度レベルを有する複数のデータ単位の送信がより低い優先度レベルを有する複数のデータ単位の送信を先取りする、ファブリックパケット先取りを促す段階とを更に備える、請求項２０に記載の方法。
【請求項２２】
連続的により高い複数の優先度レベルを有する複数のデータ単位の送信が、複数のレベルのインターリーブを有する入れ子の形で複数のデータ単位の送信を先取りする、複数のレベルのファブリックパケット先取りを促す段階を更に備える、請求項２１に記載の方法。
【請求項２３】
送信ポートは、複数の仮想レーン（ＶＬ）バッファの各々に割り当てられたバッファ空間を有する送信バッファを更に含み、
各ＶＬバッファは、各仮想レーンに関連し、
前記方法は、
各仮想レーンおよび関連するＶＬバッファに対する優先度レベルを割り当てる段階と、
各ファブリックパケットに割り当てられた仮想レーンを検出する段階と、
前記複数のデータ単位が分割される前記ファブリックパケットに割り当てられた前記仮想レーンに基いて、複数のデータ単位をＶＬバッファにバッファ処理する段階と、
第１のＶＬバッファが送信する準備のできた複数のデータ単位をバッファ処理したことを検出する段階と、
前記第１のＶＬバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階と、
前記第１のＶＬバッファから複数のデータ単位を追加する間に、前記第１のＶＬバッファよりも高い優先度レベルを有する第２のＶＬバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出する段階と、
前記第１のＶＬバッファからの複数のデータ単位のプルを停止し、
前記第２のＶＬバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、
前記検出に応答して、前記第２のＶＬバッファからの複数のデータ単位の送信のために、前記第１のＶＬバッファにおける複数のデータ単位の送信を先取りする段階を更に備える、請求項２１に記載の方法。
【請求項２４】
第１の仮想レーンおよび第３の仮想レーンに対する同一の優先度レベルを割り当てる段階と、
第１のファブリックパケットから分割された複数のデータ単位を前記第１のＶＬバッファにバッファ処理し、第３のファブリックパケットから分割された複数のデータ単位を、前記第３の仮想レーンに関連する第３のＶＬバッファにバッファ処理する段階と、
前記第１のＶＬバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階と、
前記第１のＶＬバッファからの複数のデータ単位を追加する間に、前記第１のＶＬバッファにおける前記第１のファブリックパケットから分割された複数のデータ単位の利用可能性におけるバブルを検出する段階と、
前記第３のＶＬバッファにおける複数のデータ単位が送信する準備ができていることを検出する段階と、
前記第３のＶＬバッファにおける前記バブルおよび複数のデータ単位が送信する準備ができていることを検出することに応答して、前記第３のＶＬバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、インターリーブ済みの複数のデータ単位の前記送信ストリームにおける前記第３のＶＬバッファの複数のデータ単位の送信をインターリーブする段階とを更に備える、請求項２３に記載の方法。
【請求項２５】
インターリーブ済みの前記複数のデータ単位は、少なくとも３つのファブリックパケットから分割されたインターリーブ済みの複数のデータ単位を含み、
インターリーブ済みの前記複数のデータ単位は、少なくとも２つのレベルを有する入れ子の形でインターリーブされる、請求項２０〜２４のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
高性能計算（ＨＰＣ）は、近年、使用および関心が実質的に高まっている。歴史的には、ＨＰＣは一般に、いわゆる「スーパーコンピュータ」に関連していた。「スーパーコンピュータ」は１９６０年代に導入され、主としてＣｏｎｔｒｏｌ  Ｄａｔａ  Ｃｏｒｐｏｒａｔｉｏｎ（ＣＤＣ）のＳｅｙｍｏｕｒ  Ｃｒａｙ、Ｃｒａｙ  Ｒｅｓｅａｒｃｈ、およびＣｒａｙの名およびモノグラムを有する後継の複数の企業により最初に、そして数十年に渡って製造された。１９７０年代のスーパーコンピュータは、若干のプロセッサのみを用いたが、１９９０年代には数千のプロセッサを伴ったマシンが出現し始め、より近年は、数百数千の「既製の」プロセッサを伴う大規模並列処理スーパーコンピュータが実装されている。
【０００２】
多くのタイプのＨＰＣアーキテクチャは、実装されると共に研究向けであり、様々なレベルのスケールおよび性能を有する。しかし、共通の話題は、並列の形で複数のタスクを協調的に実行する、プロセッサおよび／またはプロセッサコア等の多くの計算ユニットの相互接続である。近年のシステムオンチップ（ＳｏＣ）の複数の設計および提案に基づき、２次元（２Ｄ）アレイ、トーラス、リング、または他の構成を用いて、数十のプロセッサコア等が１つのＳｏＣ上に実装されている。更に、複数の研究者は、数百もしくは更に数千のプロセッサコアが３Ｄアレイにおいて相互接続された３ＤのＳｏＣを提案してきた。また、別個のマルチコアプロセッサおよびＳｏＣは、サーバボード上に密接して配置され得、これにより漸次、バックプレーン等を介して通信しつつ相互接続される。別の共通な手法は、通常は２Ｄアレイで構成された複数のサーバ（例えば、ブレードサーバおよびモジュール）のラック内で複数の計算ユニットを相互接続することである。世界の最速スーパーコンピュータであると言われるＩＢＭのセコイアは、２Ｄアレイの９６ラックのサーバブレード／モジュールを備え、合計で１，５７２，８６４コアになり、ピーク性能下で動作すると、７．９メガワットも消費する。
【０００３】
ＨＰＣの複数の性能ボトルネックのうちの１つは、複数の計算ノード間の相互接続を介してデータを転送することから生じるレイテンシである。通常、複数の相互接続は、相互接続階層の構造になっており、最高速度、および複数のプロセッサ／ＳｏＣ内の最も短い相互接続が階層の上部にあるが、階層レベルを降るにつれてレイテンシは、増大する。例えば、プロセッサ／ＳｏＣレベルに次いで、相互接続階層は、プロセッサ間の相互接続レベル、基板間の相互接続レベル、および個々の複数のサーバもしくは個々の複数のサーバのアグリゲーションを他の複数のラックのサーバ／アグリゲーションと接続する１もしくは複数の追加のレベルを含み得る。
【０００４】
１または複数のレベルの相互接続階層が異なる複数のプロトコルを使用するのは通常のことである。例えば、ＳｏＣ内の複数の相互接続は通常、独占的であるが、階層における下方のレベルは、独占的または規格化された複数の相互接続を使用し得る。また、異なる複数の相互接続レベルは通常、異なる複数の物理（ＰＨＹ）レイヤを実装する。結果として、複数の相互接続レベル間にいくつかのタイプの相互接続ブリッジを使用することが必要である。更に、複数の異種の計算環境が実装される場合には、ブリッジは、所与の相互接続レベル内で必要となることがある。
【０００５】
複数の下方レベルの相互接続階層において、イーサネット（登録商標）（様々なＩＥＥＥ８０２．３規格において規定される）等の規格化された複数の相互接続、およびインフィニバンドが用いられる。ＰＨＹレイヤにおいて、これらの規格の各々は、ワイヤケーブルおよびバックプレーンを介するなどした複数の有線接続、ならびに光学リンクをサポートする。イーサネット（登録商標）は、ＯＳＩ７階層モデルにおけるリンクレイヤ（レイヤ２）に実装され、基本的にはリンクレイヤプロトコルとみなされる。複数のインフィニバンド規格は、ＯＳＩ階層１〜４をカバーするインフィニバンドの様々なＯＳＩ階層の態様を規定する。
【０００６】
高い性能のファブリックは、各タイプがレイテンシに対する異なる複数の要求を有し得る、異なる複数のタイプのトラフィックを搬送し得る。具体的には、いくつかのトラフィックは、レイテンシが重大でない、非常に大きなメッセージからなり得、いくつかのトラフィックは、レイテンシが直接にアプリケーションの性能に影響する小さい複数のメッセージからなり得る。多くの場合、ファブリックの複数のノードにおいて実行されるアプリケーションの性能は、タスクを完了させるクラスタにおける最後のノードの完了時間により決定される。これらのアプリにおいて、これらのレイテンシに敏感なメッセージに対する低い最小および平均のレイテンシを有することが重要であり、これらのメッセージに対する低い最大レイテンシを有することは同様に重要である。レイテンシジッタと称する最小レイテンシと最大レイテンシとの間の分散は、小さくなるべきである。
【０００７】
複数の小さいメッセージおよび大きいメッセージがファブリックにおいてミックスされる場合、小さいメッセージは、大きいパケットが送信を開始すると、スイッチポートに到達したときに大きいパケットと衝突することがある。従来のファブリックにおいて、小さいメッセージは、大きいメッセージが完了するまで送信され得ない。これは、小さいパケットに見られるスイッチレイテンシを増大させ、レイテンシジッタを著しく増大させる。
【０００８】
多くのファブリックは、複数の大きいパケットの最大サイズを制限し、従って衝突により生じる遅延を限定することにより、この問題に対処する。この解決策は、ファブリックの効率に悪影響を及ぼす。小さいパケットは、メッセージを搬送するのに、より多くのパケットが必要とされ、各パケットはパケットヘッダを必要とすることを意味するので、所与のメッセージを搬送するのに、より多くの合計ビットが必要とされる。
【０００９】
時間的に重大なものと時間的に重大でないもの２つのクラスのトラフィックを規定し、時間的に重大な複数のフレームが時間的に重大でない複数のフレームを先取りすることを可能にすることにより、イーサネット（登録商標）におけるこの問題に対処する複数の提案がなされている。異なる複数の提案は、先取りフレームが先取り後に再起動し、または先取り後に再開することを可能にし、再開は好ましい選択肢である。
【図面の簡単な説明】
【００１０】
前述の複数の態様、および本発明の付随する利点の多くは、添付の図面と併せて以下の詳細な説明を参照することにより、より良く理解され、より容易に理解されるであろう。同一の参照番号は、別途指定されない限り、様々な図面を通して同一の部分を指す。
【図１】一実施形態による、ファブリックアーキテクチャの様々なコンポーネントおよび相互接続を備えるシステムの高レベル図を図示する概略図である。
【図２】一実施形態による、複数のファブリックリンクを介してデータを転送するための複数のアーキテクチャレイヤを図示する概略図である。
【図３】バンドルにグループ化された複数のフリットを図示する概略図である。
【図４】一実施形態による、ファブリックパケットの構造を図示する概略図である。
【図５】一実施形態による、標準的検出ＬＴＰのデータ構造体を図示する図である。
【図６】一実施形態による、１４ビットＣＲＣ  ＬＴＰのデータ構造体を図示する図である。
【図７】一実施形態による、強化検出ＬＴＰのデータ構造体を図示する図である。
【図８】一実施形態による、標準的検出検出Ｎｕｌｌ  ＬＴＰのデータ構造体を図示する図である。
【図９Ａ】一実施形態による、標準的検出ＬＴＰの複数のフリットがリンクファブリックと複数のリンク転送サブレイヤとの間のインターフェースでパラレルに２つとも一度に処理される、４レーンリンクの送信スキームの実施形態を図示する図である。
【図９Ｂ】一実施形態による、強化検出ＬＴＰの複数のフリットがリンクファブリックと複数のリンク転送サブレイヤとの間のインターフェースでパラレルに２つとも一度に処理される、４レーンリンクの送信スキームの実施形態を図示する図である。
【図１０】一実施形態による、２つのフリットがリンクファブリックと複数のリンク転送サブレイヤとの間のインターフェースでパラレルに２つとも一度に処理される、４レーンリンクを介して２つの制御ビットによる１４ビットＣＲＣ  ＬＴＰの送信を図示する概略図である。
【図１１】一実施形態による、互いに連結した２つの４レーンリンクを備える８レーンデータ経路を介してパラレルに２つの制御ビットによる２つの１４ビットＣＲＣ  ＬＴＰの送信を図示する概略図である。
【図１２】一実施形態による、４レーンを使用する２つのリンクポート間の双方向データ送信の一例を図示する概略図である。
【図１３】別個の複数の仮想レーンを介して送信された２つのＦＰから複数のファブリックパケットフリットをインターリーブする一実施形態の例を図示する図である。
【図１４】一実施形態による、プッシュおよびポップのインターリーブの使用を図示する図である。
【図１５】一実施形態による、プッシュおよびポップのインターリーブの組み合わせ、ならびにＶＬマーカインターリーブの使用を図示する図である。
【図１６】一実施形態による、別個の複数の優先度レベルを有する複数のＶＬに対応する３つの別個のＶＬ  ＦＩＦＯにおいてバッファ処理された３つの別個のファブリックパケットから、複数のフリットを先取りインターリーブする一例を図示する組み合わせた概略図およびタイムフロー図である。
【図１７】一実施形態による、２つのＶＬが優先度レベルを共有し、他のＶＬがより高い優先度レベルを有する３つの別個のＶＬ  ＦＩＦＯにおいてバッファ処理された３つのファブリックパケットから、複数のフリットをバブルインターリーブおよび先取りインターリーブする一例を図示する組み合わせた概略図およびタイムフロー図である。
【図１８Ａ】一実施形態による、複数のＬＴＰレーンおよび不規則なレーンを検出することを目的とするＬＴＰ送信スキームの送信、ならびに１レーン当たりのＣＲＣおよびＬＴＰ  ＣＲＣの使用を図示する概略図であり、ＬＴＰ送信スキームにおける複数のＬＴＰの元の送信を図示する
【図１８Ｂ】一実施形態による、複数のＬＴＰレーンおよび不規則なレーンを検出することを目的とするＬＴＰ送信スキームの送信、ならびに１レーン当たりのＣＲＣおよびＬＴＰ  ＣＲＣの使用を図示する概略図であり、再生バッファを用いるＬＴＰ送信ストリームにおける複数のＬＴＰの再送信を図示する
【図１８Ｃ】一実施形態による、複数の再生バッファＬＴＰが上書きされるのを防止することを目的とする、複数の再試行マーカおよびラウンドトリップマーカの使用を図示する概略図である。
【図１９】一実施形態による、３３の転送グループ（ＸＦＲ）を用いる標準的検出ＬＴＰの送信を図示する図である。
【図２０】一実施形態による、３３の３２ビットＸＦＲおよび４つのＬＴＰシーケンス状態を用いる４レーンリンク全体に渡る複数のＬＴＰの送信を図示する図である。
【図２１】一実施形態による、８バイトのデータを含むフリットデータおよび６５番目のビットが、３３の３２ビットＸＦＲを用いる４レーンリンクを介してどのように転送されるかを図示する図である。
【図２２Ａ】集合的に、一実施形態による、再生バッファによる複数の黙示的ＡＣＫを用いてリンクレベルにおける信頼できるＬＴＰ送信を促す複数のオペレーションおよびロジックを図示するフローチャートであり、複数の不規則なレーンを検出する複数のオペレーションおよびロジックも図示する。
【図２２Ｂ】集合的に、一実施形態による、再生バッファによる複数の黙示的ＡＣＫを用いてリンクレベルにおける信頼できるＬＴＰ送信を促す複数のオペレーションおよびロジックを図示するフローチャートであり、複数の不規則なレーンを検出する複数のオペレーションおよびロジックも図示する。
【図２２Ｃ】集合的に、一実施形態による、再生バッファによる複数の黙示的ＡＣＫを用いてリンクレベルにおける信頼できるＬＴＰ送信を促す複数のオペレーションおよびロジックを図示するフローチャートであり、複数の不規則なレーンを検出する複数のオペレーションおよびロジックも図示する。
【図２２Ｄ】集合的に、一実施形態による、再生バッファによる複数の黙示的ＡＣＫを用いてリンクレベルにおける信頼できるＬＴＰ送信を促す複数のオペレーションおよびロジックを図示するフローチャートであり、複数の不規則なレーンを検出する複数のオペレーションおよびロジックも図示する。
【図２２Ｅ】集合的に、一実施形態による、再生バッファによる複数の黙示的ＡＣＫを用いてリンクレベルにおける信頼できるＬＴＰ送信を促す複数のオペレーションおよびロジックを図示するフローチャートであり、複数の不規則なレーンを検出する複数のオペレーションおよびロジックも図示する。
【図２３Ａ】一実施形態による、トランスミッタの状態図である。
【図２３Ｂ】一実施形態による、レシーバの状態図である。
【図２４】一実施形態による、ＸＦＲグループベースで算出および格納される１レーン当たりのＣＲＣの図である。
【図２５】１レーン当たりのＣＲＣが、第１のＬＴＰシーケンス状態下における不良ＬＴＰの元の送信、および第３のＬＴＰシーケンス状態下における再生バッファからの不良ＬＴＰの再送信の間に算出される、図１８Ａおよび１８Ｂの例において、ＸＦＲグループごとのベースで格納される例示的な１レーン当たりのＣＲＣ計算を示す図である。
【図２６】一実施形態による、１１のＸＦＲがパラレルに１レーン毎に転送される、３つのレーンを介した標準的検出ＬＴＰの転送を図示する図である。
【図２７】一実施形態による、１７のＸＦＲが転送され、複数のレーンのうち１つおよび１６ＸＦＲが他のレーンを介して送信される、２つのレーンを介する標準的検出ＬＴＰの転送を図示し、２つのＬＴＰシーケンス状態を使用する図である。
【図２８】一実施形態による、３３の３２ビットＸＦＲを用いた１つのレーンを介する標準的検出ＬＴＰの送信を図示する図である。
【図２９】一実施形態による、ＨＦＩを含むシステムの概略図である。
【発明を実施するための形態】
【００１１】
本明細書において，複巣の高性能ファブリック内に柔軟なクレジット交換を実装するための複数の方法、装置、およびシステムの複数の実施形態が説明される。以下の詳細な説明において、多数の具体的な詳細が記載され、本発明の複数の実施形態の完全な理解を提供する。しかし、当業者は、本発明が特定の詳細のうち１または複数を用いず、または他の複数の方法、構成要素、材料等を用いて、実施され得ることを理解するであろう。他の例において、本発明の複数の態様を不明瞭にすることを回避るべく、周知の複数の構造、材料、または動作は示されておらず、または詳細に説明されていない。
【００１２】
本明細書を通して「一実施形態」または「実施形態」に言及する場合、その実施形態に関連して説明された特定の特徴、構造、または特性が、本発明の少なくとも一実施形態に含まれることを意味する。従って、本明細書を通して、様々な箇所における「一実施形態において」または「ある実施形態において」という文言が現れても、必ずしも全てが同一の実施形態を指している訳ではない。更に、複数の特定の特徴、構造、または特性は、１または複数の実施形態において、任意の好適な形で組み合わせ得る。
【００１３】
明確にするために言うならば、本明細書の図面における個々の複数のコンポーネントは、特定の参照番号によってではなく、図面におけるラベルにより言及され得る。更に、特定のタイプのコンポーネントを参照する複数の参照番号（特定のコンポーネントと異なる）は、「（ｔｙｐ）」の後の参照番号により示され、「典型的」なものを意味することがある。これらのコンポーネントの構成は、図面において示されるが、簡潔にして明確にするべくラベリングされていない類似のコンポーネントに典型的であることが理解されるであろう。逆に、「（ｔｙｐ）」は、コンポーネント、要素等が通常、開示される機能、実装、目的等に用いられることを意味するものと解釈されない。
【００１４】
本明細書において説明される複数の実施形態の態様によれば、メッセージを送信する、交換サーバ相互接続ネットワークを規定するアーキテクチャが提供される。アーキテクチャは、ＯＳＩネットワークモデルのレイヤ１および２に及び、レイヤ３のＩＥＴＦインターネットプロトコルを活用し、アーキテクチャのレイヤ４に対する新しい仕様および活用された仕様の組み合わせを含む。
【００１５】
アーキテクチャは、スーパーコンピュータ等の正式の規定による、または単純に、クラウドコンピューティングにおいて多くの場合にそうであるように、複数のサーバが実行する複数のメッセージ送信アプリケーションによるある種の調整された形でのサーバのグループもしくはクラスタの機能等の関連による論理的メッセージ送信構成を備える、複数のＣＰＵおよび他のサブシステムを相互接続するように実装され得る。相互接続された複数のコンポーネントは、ノードと呼ばれる。また、アーキテクチャは、ＳｏＣ、マルチチップモジュール等と複数のプロセッサノードを相互接続するように実装され得る。ホストと称するノードの１つのタイプは、ユーザモードソフトウェアを実行するタイプである。一実施形態において、ホストは、コヒーレントドメインにおけるコアもしくはＣＰＵの数に関わらず、１つのキャッシュのコヒーレントメモリドメインを備え、様々なローカルＩ／Ｏおよびストレージサブシステムを含み得る。ホストが実行するソフトウェアのタイプは、ユーザアプリケーションノード、またはストレージもしくはファイルサーバ等のより特化機能を規定し得、より詳細なシステムアーキテクチャを説明するのに役立つ。
【００１６】
トップレベルにおいて、アーキテクチャは、以下の複数のコンポーネントを規定する。・ホストファブリックインターフェース（ＨＦＩ）・リンク・スイッチ・ゲートウェイ・包括的管理モデル
【００１７】
ノードがファブリックに取り付けられ、他の複数のサーバもしくはデバイスに対するパケットを送信および受信できるように、ホストファブリックインターフェースは、最低でも、アーキテクチャの物理およびリンクレイヤを実装するロジックからなる。ＨＦＩは、オペレーティングシステムおよびＶＭＭ（仮想マシンマネージャ）のサポートのための複数の適切なハードウェアインターフェースおよびドライバを含む。ＨＦＩは、複数の上位レイヤプロトコルおよび／または複数のトランスポートプロトコルのオフロードを実行もしくは加速するために特化されたロジックも含み得る。また、ＨＦＩは、複数のネットワーク管理コンポーネントからのメッセージに応答するロジックを含む。各ホストは、ＨＦＩを介してアーキテクチャファブリックに接続される。
【００１８】
リンクは、ＨＦＩをスイッチに、スイッチを他のスイッチに、またはスイッチをゲートウェイに接続する全二重でポイントツーポイントの相互接続である。リンクは、回路基板トレース、銅ケーブル、または光ケーブルにおいて異なる物理的構成を有しえる。一実施形態において、ＰＨＹ（物理レイヤ）、ケーブル、およびコネクタ戦略の複数の実装は、イーサネット（登録商標）、具体的には１００ＧｂＥ（ＩＥＥＥ８０２．３ｂｊドラフト規格（現在のドラフト２．２）に規定されるイーサネット（登録商標）リンク等、１００ギガビット／秒のイーサネット（登録商標））の実装に従う。アーキテクチャは柔軟であり、１００ＧｂＥの帯域幅を超え得る将来のイーサネット（登録商標）または他の複数のリンク技術を用いることをサポートする。ハイエンドスーパーコンピュータ製品は、特定目的の（より高い帯域幅）ＰＨＹに用いられることがあり、これらの構成のために、複数のアーキテクチャ製品との相互運用性は、異なる複数のＰＨＹによる複数のポートを有するスイッチに基づく。
【００１９】
スイッチはＯＳＩ階層２のコンポーネントであり、アーキテクチャの管理インフラストラクチャにより管理される。アーキテクチャはＩＰドメインの何も指定せず、ＩＰ関連デバイスを管理しないが、アーキテクチャは、インターネットプロトコルをＯＳＩ階層３もしくはインターネットワーキング層として規定する。アーキテクチャファブリックと外部ネットワーク、特にイーサネット（登録商標）との間の接続をサポートする複数のデバイスは、ゲートウェイと呼ばれる。軽量ゲートウェイは、低い機能を提供することがあり、イーサネット（登録商標）のレイヤ２で忠実に動作する。フル機能のゲートウェイは、レイヤ３またはこれ以上で動作し、従ってルータとして動作し得る。アーキテクチャにより提供される複数のゲートウェイ明細書は、イーサネット（登録商標）カプセル化、および、ゲートウェイがファブリック上で動作し、残余のアーキテクチャと矛盾しない、イーサネット（登録商標）データセンタネットワークに対する柔軟な接続をどのように可能にし得るかの複数のメカニズムを含む。ＩＰをインターネットワーキングプロトコルとして用いることにより、ＩＥＴＦにより許可されたトランスポート、すなわちＴＣＰ、ＵＤＰ、およびＳＣＴＰを用いてアーキテクチャのファブリックを越えて複数のメッセージを送信および受信することを可能にする。
【００２０】
図１は、一実施形態による、アーキテクチャの様々なコンポーネントおよび相互接続を図示するシステム１００のハイレベル図を示す。アーキテクチャの中央の機能はファブリック１０２であり、これは、複数のアーキテクチャリンクおよびスイッチを介して相互接続された複数のＨＦＩおよびゲートウェイの集合を含む。図１に図示されるように、ファブリック１０２の複数のコンポーネントは、各々がそれぞれの離散的な１つのノードプラットフォーム１０６によりホスティングされた複数のＨＦＩ１０４（１つが示されている）、仮想プラットフォーム１１０によりホスティングされたＨＦＩ１０８、マルチノードプラットフォーム１１６の各ノード１１４１および１１４ｎによりホスティングされたＨＦＩ１１２１および１１２ｎ、集積された１つのノードプラットフォーム１２０のＨＦＩ１１８１および１１８ｎ、高次基数スイッチ１２２、スイッチ１２４および１２６、ファブリックマネージャ１２８、ゲートウェイ１３０リンク１３２、１３４、１３６１、１３６ｎ、１３８、１４０１、１４０ｎ、１４２、１４４、１４８、ならびにクラウド１５０として集合的に示される追加の複数のリンクおよびスイッチを含む。
【００２１】
上述のように、複数のスイッチはレイヤ２のデバイスであり、ファブリック内でパケット転送メカニズムとして動作する。複数のスイッチは、中心的にプロビジョニングされ、ファブリック管理ソフトウェアにより管理され、各スイッチは、管理トランズアクションに応答する管理エージェントを含む。中央プロビジョニングは、適応型ルーティングに対する交互ルートのような複数の特定のファブリックトポロジおよび転送能力を実装するように、複数の転送テーブルがファブリック管理ソフトウェアによりプログラミングされることを意味する。複数のスイッチは、適応型ルーティングおよび負荷分散等のＱｏＳ機能を実行することを担い、複数の輻輳管理機能も実装する。
【００２２】
図２は、複数のファブリックリンクを介してデータを転送するための複数のアーキテクチャレイヤを図示する。複数のレイヤは、物理（ＰＨＹ）レイヤ、リンク転送サブレイヤ、リンクファブリックサブレイヤ、およびトランスポートレイヤを含む。図２の左はＯＳＩ参照モデルの複数のレイヤのマッピングであり、これにより、ＰＨＹレイヤは、レイヤ１（ＰＨＹレイヤ）にマッピングし、リンク転送サブレイヤおよびリンクファブリックサブレイヤは、レイヤ２（リンクレイヤ）に集合的にマッピングし、トランスポートレイヤは、レイヤ４（トランスポートレイヤ）にマッピングする。
【００２３】
アーキテクチャにおいて、複数の信号は物理レイヤにおいて互いグループ化されて複数のポートになり、ポートはモノリシックなエンティティとして動作し、制御され得、報告される。ポートは、１または複数の物理レーンを備え、各レーンは、物理伝送媒体に実装された２つの差動対またはファイバからなり、そのうちの１つは、各方向の通信用である。ポートを備えるレーンの数は、実装に依存するが、リンク転送サブレイヤのアーキテクチャは、有限集合のポート幅をサポートする。複数の特定のポート幅は、基本的ポート幅としてサポートされ、ケーブルおよびチップ設計における共通の目標を可能にする。ポート幅は、ｌｘ、４ｘ、８ｘ、１２ｘ、および１６ｘを含み、「ｘ」は、物理レーンの数を識別する。欠陥レーンの検出等、いくつかの条件下で、複数のリンクは、低減されたレーン幅で実行され得る。
【００２４】
リンク転送サブレイヤは、物理レイヤとリンクファブリックサブレイヤとの間のインターフェースとして機能する。複数のリンクファブリックパケット（リンクファブリックサブレイヤにおける）は、６４ビットのフロー制御デジット（フリット（ＦＬＩＴ、Ｆｌｉｔｓ、またはｆｌｉｔ）、およそのフロー制御デジットの短縮形）に分割される。図３は、バンドル３０２にグループ化された複数のフリット３００の例を図示する。各フリット３００は、８バイトのデータを含む、６４のデータビットを含む。
【００２５】
リンク転送サブレイヤは、複数のレーンを形成して、信頼できる形でリンク全体で複数のフリットおよび関連するクレジット返却情報を転送することができるチームにする。これは、リンク転送パケット（ＬＴＰ）と称し、リンクファブリックサブレイヤに関連する１０５６ビットのバンドルを用いて実現される。また、図３は、データの１６フリットを含むＬＴＰのデータ部分を図示する。更に、複数のＬＴＰは、フリットタイプ情報、ＣＲＣデータ、および選択的データ（図３に図示せず）を含む。ＬＴＰの複数の例は、様々な図（例えば、図５〜１１）に図示され、更に詳細に後述される。
【００２６】
複数のファブリックパケットは、６４ビットのフリットおよび各フリットに対するフリットタイプビットから構成される。ファブリックパケットの第１のデータフリットは、ヘッドフリットと称する。ファブリックパケットの最後のデータフリットは、テールフリットと称する。ファブリックパケットにおけるその他のデータフリットは、ボディフリットと称する。ファブリックパケット４００の一例は、図４に図示される。
【００２７】
フリットタイプビットには、複数のボディフリットを他のフリットタイプから区別する各フリットが提供される。一実施形態において、複数のボディフリットは、１に設定されたフリットタイプビットを用いてエンコードされ、６４ビットのデータを含む。他の全てのフリットは、０に設定されたタイプビットでマーキングされている。複数のヘッドフリットは、１に設定されたフリット［６３］を用いてエンコードされる。他の全ての（ボディでない）フリットは、０に設定されたフリット［６３］を用いてエンコードされる。複数のテールフリットは、１に設定されたフリット［６２］を用いてエンコードされる。他の全ての（ボディ／ヘッドでない）フリットは、０に設定されたフリット［６２］を用いてエンコードされる。フリットエンコードは、以下の表１に要約されている。
【００２８】
【表１】
2018082500.tif 000003
【００２９】
複数の制御フリットは、表２に要約されている。リンク転送層（ＬＴ制御フリット）のみにより用いられる７つの制御フリットは、Ｎｕｌｌ  ＬＴＰにおいて送信される。残余の制御フリットは、２つのグループに分割される。ファブリックパケット（ＦＰ）フリットとしては、ＨｅａｄＢａｄＰｋｔ、ＢｏｄｙＢａｄＰｋｔおよびＴａｉｌＢａｄＰｋｔ制御フリット、ならびに通常のパケットヘッド、ボディ、およびテールフリットが挙げられる。リンクファブリック（ＬＦ）コマンドフリットとしては、アイドル、ＶＬＭｒｋｒ、およびＣｒｄｔＲｅｔフリットが挙げられる。ＦＰフリットおよびＬＦコマンドフリットは、リンクを介して送信する複数の信頼できるＬＴＰにおいて混在し得る。
【００３０】
【表２】
2018082500.tif 000004
【００３１】
アイドルコマンドフリットは、データストリームに挿入するファブリックパケットフリットが存在しない場合に、リンクファブリックレイヤにより用いられる。データ経路の全幅がアイドルを含む場合、リンク転送レイヤは、入力バッファに挿入されるフリットストリームから除去する。データ経路がアイドルおよび非アイドルフリットの双方を含む場合、アイドルは除去されない。これは、リンク転送レイヤが同一のデータ経路構成を、リンクの遠い側のリンクファブリックレイヤに提示するように、実装される。リンク転送レイヤがリンクファブリックレイヤから回答待ちであるフリットを有しない場合、リンクを介して元の複数のフリットが送信されるときに、アイドルを挿入する。元の複数のフリットは、再送信または再生された複数のフリットを備える再生バッファから送信されたものとは異なり、リンクを介して初めて送信されたフリットである。
【００３２】
リンク転送パケットは、リンクを介した送信に１６フリットを保持する。複数の信頼できるＬＴＰは、再送信要求がなければ、リンクピアにより首尾よく受信されたことを示すことを保証するのに十分長い期間、再生バッファに保持される。複数の再生バッファ位置ポインタは、各ＬＴＰについてトランスミッタ（ＮｘｔＴｘＬＴＰ）およびレシーバ（ＮｘｔＲｘＬＴＰ）で維持されるが、ＬＴＰの一部として交換されない。送信エラーがレシーバにより検出されると、ＮｘｔＲｘＬＴＰ再生バッファ位置ポインタを含むＲｅｔｒｙＲｅｑＬＴＰを、トランスミッタに送信する。ＲｅｔｒｙＲｅｑＬＴＰを受信することに応答して、再生バッファにおける複数のＬＴＰは、元の順序で再送信され、ＲｅｔｒｙＲｅｑＬＴＰを開始し（ピアＮｘｔＲｘＬＴＰ）、書き込まれた最後の再生バッファ位置で終了する（ＮｘｔＷｒＬＴＰ−１）。Ｎｕｌｌ  ＬＴＰは再生バッファに保持され、再送信されない。
【００３３】
複数のリンクファブリックコマンドフリットは、ＬＴＰにおいて複数のＦＰフリットとミックスされ得るが、複数のＬＦコマンドフリットは、ファブリックパケットの一部ではない。リンクファブリックコマンドフリットは、リンクの１つの端部のリンクファブリックサブレイヤからリンクの他の端部のリンクファブリックサブレイヤへと制御情報を搬送する。
【００３４】
一実施形態において、標準的検出ＬＴＰ、１４ビットのＣＲＣ  ＬＴＰ、および強化検出ＬＴＰを含む３つのＬＴＰフォーマットが存在する。標準的検出ＬＴＰの一実施形態は、図５に示される。１６のフリットに加えて、各標準的検出ＬＴＰは、ＬＴＰコンテンツをカバーする１６ビットのＣＲＣを有する。例示的目的として、図５の複数のフリットは、ビット６４がフリットタイプビットである、６５ビットとして示される。
【００３５】
１４ビットのＣＲＣ  ＬＴＰの一実施形態は、図６に示されている。１６のフリットに加えて、各１４ビットのＣＲＣ  ＬＴＰは、２ビットのクレジットサイドバンドチャネル、および複数のＬＴＰコンテンツをカバーする１４ビットのＣＲＣを有する。複数のフロー制御クレジットは、複数のＬＴＰ内で特別なＬＦコマンドフリットまたはＬＴＰクレジットサイドバンドチャネルの状態で送信される。
【００３６】
標準的検出ＬＴＰに加えて、リンクは、１６のフリットを保持し、４つの１２ビットのＣＲＣフィールドを有する選択的な強化検出ＬＴＰもサポートし得る。図７は、強化検出ＬＴＰの一実施形態のフォーマットを示す。４つのＣＲＣフィールドの各々は、１６のフリット全てをカバーする。４つのＣＲＣのいずれかが不良である場合、ＬＴＰが再送信される。４つの１２ビットＣＲＣに対して、２つのＣＲＣ計算の選択肢が存在する。第１（４８ｂの重複）は、４つの重複する算出を用い、各算出は、ＬＴＰ内の全てのビットをカバーする。第２（レーン当たり１２ｂ〜１６ｂのＣＲＣ）は、４つの重複しない算出を用い、各算出は、４つのレーンのうち１つにおいて流れる全てのビットに限定される。
【００３７】
上述のように、リンク転送層により用いられるＬＴ制御フリットは、Ｎｕｌｌ  ＬＴＰにおいて送信される。複数のＮｕｌｌ  ＬＴＰは、再生バッファにおける空間を消費せず、再送信されない。Ｎｕｌｌ  ＬＴＰは、上記の表２に要約された複数のリンク転送ＬＴ制御フリットのうち１つを用いて区別される。ほとんどのＮｕｌｌ  ＬＴＰタイプは、シーケンシャルなペアで送信され、２つのうち少なくとも１つが、エラーなしでリンクピアにより受信され、または双方がエラーを有する場合に、ＲｅｔｒａｉｎＲｅｔｒｙＲｅｑが自動的に生成されることのいずれかを保証する。標準的検出Ｎｕｌｌ  ＬＴＰの一例は、図８に図示されている。
【００３８】
複数の標準的検出Ｎｕｌｌ  ＬＴＰは、１つの区別制御フリット、予約済みの９７５ビット、および１６ビットの標準的検出ＣＲＣフィールドを含む。複数の強化検出Ｎｕｌｌ  ＬＴＰは、１つの区別制御フリット、予約済みの９７５ビット、および４つの１２ビットの強化検出ＣＲＣフィールドを含む。２つのサイドバンドビットは、１４ビットＣＲＣにおいて用いる場合に、Ｎｕｌｌ  ＬＴＰにおいて無視される。
【００３９】
ある時点の１つのＬＴＰは、４つのレーンを有するリンクに接続された４×対応ポートおよび８×対応ポートの双方に対するリンクを介して送信される。これは、（複数のＣＲＣフィールドは、縮尺されないことに留意して）図９Ａおよび９Ｂの標準的検出および複数の強化検出ＬＴＰの双方のリンクファブリックデータ経路パースペクティブを各々用いて図示されるが、対応する信号処理および転送経路の一実施形態は、図１０に示される。１４ビットのＣＲＣ  ＬＴＰは、ＬＣＲＣ［１５：０］フィールドがＬＣＲＣ［１３：０］フィールドおよびＣ［ｌ：０］フィールドの組み合わせと置き換えられることを除き、図８に図示される標準的検出ＬＴＰに類似するであろう。フリット送信の順序は、フリット０で開始し、フリット１５で終了する。
【００４０】
一実施形態において、各レーンを介したデータの物理的送信は、連続した２つのレベルのビットのノン・リターン・ツー・ゼロ（ＮＲＺ）エンコードのビットパターンを使用し、そのデータは、デコードされた各レーンに対応し、非シリアル化され、４バイト／レーン／サイクルにグループ化される。これは、２つのフリット／サイクルを含む１６バイトの転送をもたらす。例えば、図９Ａおよび図１０における図示は、２フリット幅の実装に固有のデータ経路を想定し、この下ではフリット０およびフリット１は、同時に送信され、フリット２およびフリット３は、同時に送信される等である。ＬＣＲＣは、リンク転送サブレイヤにより算出される。
【００４１】
図１１は、２つの４レーンリンクが結合され、８×のデータ経路がサポートされ、データが８レーンを介して送信される、ＬＴＰ送信スキームを示す。図示されるように、このスキームの下では、２つのＬＴＰからの４つのフリットは、リンクファブリックとリンク転送サブレイヤとの間のインターフェースでパラレルに処理される。
【００４２】
上述のように、アーキテクチャは、３つのレベルのデータ単位の粒度を使用し、複数のデータ転送、つまりファブリックパケット、フリットおよびリンク転送パケットをサポートする。リンク転送レイヤにおける送信の単位は、ＬＴＰである。図示されるように、各ＬＴＰは、名目上、１６フリットの長さであり、上記のように、ＬＴＰの実際のサイズは、用いられる特定のＣＲＣスキームに応じて異なることがあり、１６フリットの長さを有するＬＴＰを参照することを用いることは、複数のＣＲＣビットおよび１６ビットの６５番目を除くＬＴＰに含まれるデータの６４ビットフリットの数に対応する。
【００４３】
４つの物理レーンを備えるリンクの一実施形態における物理レイヤ（「ＰＨＹ」とも呼ばれる）構造が、図１２に図示されている。ＰＨＹは、リンク相互接続の物理的構造を規定し、コンポーネントＡおよびＢにより図示されるもの等、２つのリンクピアの間の特定のリンクにおいて複数の信号のオペレーションの詳細に対処することを担う。複数の電気レベル、タイミングの態様および論理的問題を含む信号線におけるこのレイヤ管理データ転送は、パラレルなレーン全体で情報の各ビットを送信および受信する場合に伴う。図１２に示されるように、各相互接続リンクの物理的接続は、複数の信号１２００の４つの差動対から構成されており、各方向においてレーン０から３を含む。各ポートは、２つの一方向リンクからなるリンクペアをサポートし、２つのピアコンポーネントの間の接続を完了させる。これにより、双方向のトラフィックを同時ににサポートする。図示および理解を促す目的のために、図１０に図示されているレーン「スウィズル」は、図１２には示されない。しかし、いくつかの実施形態において、送信および受信レーンがスウィズルされることが理解されるであろう。
【００４４】
複数のリンクポートを有する複数のコンポーネントは、図１２に示されるように、リンクピアとして規定された一方向のポイントツーポイントリンクのペアを用いて通信する。各ポートは、送信（Ｔｘ）リンクインターフェースおよび受信（Ｒｘ）リンクインターフェースを備える。図示された例では、コンポーネントＡは、コンポーネントＢのＲｘポート１２０４に接続されたＴｘポート１２０２を有する。一方、コンポーネントＢは、コンポーネントＢのＲｘポート１２０８に接続されたＴｘポート１２０４を有する。１つの一方向リンクは、コンポーネントＡからコンポーネントＢへと送信し、他のリンクは、コンポーネントＢからコンポーネントＡへと送信する。「送信」リンクおよび「受信」リンクは、どのコンポーネントのポートがデータを送信し、どれが受信をするかに関して規定される。図１２に図示される構成において、コンポーネントＡの送信リンクは、コンポーネントＡのＴｘポート１２０２からコンポーネントＢのＲｘポート１２０４へとデータを送信する。この同一のコンポーネントＡの送信リンクは、ポートＢの受信リンクである。
【００４５】
上述のように、複数のリンクポート間のデータ転送の基本的単位はＬＴＰである。
【００４６】
各ＬＴＰは、リンクの反対側の端部における送信ポートおよび受信ポートにより規定された特定のリンクを介した一方向の送信に固有である。ＬＴＰは、１つのリンク転送の寿命を有し、複数のＬＴＰは、複数のフリットを適用可能な複数のＶＬバッファからプルし、１６のフリットを一度にアセンブルして各ＬＴＰにすることにより、動的に生成される。ＬＴＰ送信ストリーム１２１０および１２１２により図示されるように、複数のＬＴＰは、複数のフリットのストリームとして送信され、個々のＬＴＰの第１および最後のフリットは、図４を参照した上述のように、ヘッドおよびテールフリットビットにより描写される。
【００４７】
上述のように、アーキテクチャは、主として、目標によりルーティングされる複数のファブリックパケットまたはＦＰを含むパケット配信メカニズムを規定し、レイヤ４のペイロードサイズは、０バイト〜１０２４０バイトである。これは、単純なＵＬＰアクノリッジからカプセル化イーサネット（登録商標）ジャンボフレームまでの範囲の複数のメッセージを送信するのに効率的なサポートを提供する。ファブリックパケットは、ＨＦＩの入口および出口のためのペイロードの論理的単位を表す。ファブリックパケットは、ファブリックにおけるエンドツーエンドの寿命を有するので、そのように命名されている。より詳細には、ファブリックパケットの寿命は、ＦＰのソースアドレスおよび目標アドレスにより規定されるファブリックの複数のエンドポイント間のＦＰコンテンツの転送にかかる時間である。ＦＰの各転送経路は、少なくとも１つのリンク全体での転送を含み、転送経路が１または複数のスイッチをトラバースする場合における複数のリンク全体の転送を含み得る。
【００４８】
複数のＦＰおよびＬＴＰと組み合わせて複数のフリットを用いることにより、アーキテクチャに一意なデータ転送機能を促す。具体的には、複数のＦＰ、フリット、およびＬＴＰを分離することにより、仮想レーン、ならびにＱｏＳおよびファブリックの堅牢性の様々な態様の使用をサポートする。
【００４９】
上述のように、フリットは、単体で送信されず、１６フリットの複数のグループはリンク転送パケットにパック（バンドル）される。これにより、複数のフリットが共通のリンクＣＲＣを共有することを可能にする。ＬＴＰにおける複数のフリットは、多くの異なるファブリックパケットから生じ得、これにより、他のファブリックと比較して、興味あるいくつかの特性をリンクプロトコルにもたらす。効率的パケットの先取りおよびインターリーブメカニズムを用いることにより、アーキテクチャは、異なる複数のストリーム用のデータ転送のインターリーブをサポートし、ヘッド・オブ・ライン・ブロッキング効果（ｈｅａｄ−ｏｆ−ｌｉｎｅ  ｂｌｏｃｋｉｎｇ  ｅｆｆｅｃｔ）、更に物理リンク上で物理的に転送される大きな１つのパケットのブロッキング効果を実質的に除去する。複数のファブリックパケット、フリットおよびＬＴＰ間の関係の図示は、図１５および１６に示され、これらの図の更なる説明が後述される。
【００５０】
アーキテクチャは、クレジットベースのフロー制御を用いてリンクのレシーバ側における複数のバッファリソースを管理し、トランスミッタがいつフリットを送信し得るかを制御する。この手法に基づいて、ファブリックポートがフリットを送信するには、受信ポートにおいて必要とされるバッファ空間に利用可能な十分なフロー制御クレジットを必要とする。一実施形態において、複数のレシーバは、リンク上でサポートされる仮想レーン（ＶＬ）用の複数の受信バッファの１つプールを提供する。バッファプールの割り当ては、リンクのトランスミッタ側のロジックにより管理される。複数の専用バッファは、サポートされる各ＶＬに対して割り当てられる。更に、複数のトランスミッタは、空間の一部を、複数のＶＬ間で動的に割り当てられる共有プールとして管理し得る。クレジットベースのフロー制御は、複数のリンクにおけるデータ転送が強固に管理されることを意味する。未承認のデータ転送は生じず、これは、ファブリックがいわゆる「ロスレス」ファブリックであることも意味する。この場合、ロスレスは、通常の動作中にフリットが、従ってパケットが輻輳のためにドロップすることはないことを単に意味する。
【００５１】
フロー制御クレジット等の制御情報は、複数のリンクファブリック（ＬＦ）コマンドフリットおよびリンク転送（ＬＴ）制御フリットで搬送される。ＬＦコマンドおよびＬＴ制御のフリットは、トランスミッタのフリットストリームの任意の地点で挿入され得る。更に、いくつかのＬＴＰフォーマットのサイドバンド情報は、更により小さいオーバヘッドでクレジットを転送するべく用いられ得る。ＬＦコマンドおよびＬＴ制御のフリットは、リンクトランスミッタにより生成され、リンクレシーバにより消費される。
【００５２】
アーキテクチャは、データ整合性を保証する複数のリンク転送パケットおよびファブリックパケット用のＣＲＣを含む。また、アーキテクチャは、正確に受信されなかった複数のＬＴＰに対するリンクレベルの再試行を提供する。ＬＴＰの再試行リンクの有効ビットエラーレートを著しく改善し、僅かに低下した物理的ＢＥＲに対するより低い電力消費量を利用し得る複数のＰＨＹ戦略を用いることを可能にする。また、ＬＴＰの再試行は、許容可能なシステムレベルエラーレートを維持するべく、ファブリック内の多くのリンクがより良好な１リンク当たりのＢＥＲ特性を必要とする、複数の大きなファブリックに役立つ。
【００５３】
先取りおよびインターリーブ
【００５４】
Ｌ２リンクレイヤは、複数のパケットが異なるＶＬにある限り、リンク全体で送信される場合に、異なる複数のパケットからの複数のフリットがインターリーブされることを可能にする。インターリーブする１つの動機は、所与のリンクの使用を最大化することである。理由が何であっても、送信パケットが複数のバブルによりインタラプトされると、アイドル状態で停止させることに代えて、第２パケットがチャネルへとインターリーブされ得る。先取りと称するインターリーブの第２の理由は、より高い優先度のパケットに、より高い優先度のパケットのレイテンシを低減するべく転送されるより低い優先度のパケットをインタラプトさせることである。
【００５５】
インターリーブの下で、ファブリックパケットの複数のフリットの全てまたは一部は、リンク全体で送信された複数のフリットのストリーム内で、他の複数のＦＰからのフリットを用いてインターリーブされる。トランスミッタは、ポートの出力キューにおいて送信するのに利用可能な複数のＦＰ間からの送信用の複数のフリットを選択する。一実施形態において、１つのＶＬ内の複数のＦＰは、順序通りに供給され、従って仮想レーン内では、（当該ＶＬ内の）次のパケットの任意のフリットが送信される前に、１つのパケットからの複数のフリットの全てが送信される。
【００５６】
異なる複数のＶＬ全体には、指定された順序は存在せず、従って異なる複数のＶＬにおけるパケットからの複数のフリットは、フリットストリーム内（ならびに複数のフリットの順序が各ＶＬ内で維持される限り所与のＬＴＰ内）で任意でインターリーブされ得る。いくつかトランスミッタ実装は、複数のパケット間のインターリーブの量を制限することを選択し得る。
【００５７】
先取りの下で、より高い優先度レベルを有する複数のファブリックパケットのフリットは、より低い優先度レベルを有する複数のＦＰからのフリットを先取りする。一実施形態において、各仮想レーンは、各優先度レベルに関連する。複数のトランスミッタは、より高い優先度の複数のＶＬからのフリットを、より低い優先度の複数のＶＬからのフリットに先立つリンクＬＴＰ上に挿入するように構成される。複数のトランスミッタは、１つのフリットよりも大きい、境界におけるより高い複数の優先度フリットを挿入することを選択し得る。更に、複数のトランスミッタは、同一の優先度の複数のＶＬからのフリットをインターリーブすることを選択してもよく、または同一の優先度の異なるＶＬにおける異なるパケットからの複数のフリットを送信する前に、複数のフリットの全てをあるパケットからリンク上に注入してもよい。リンク上のレシーバは、キューに挿入し、（スイッチにおけるレシーバ用の）次のホップを転送するＶＬにより、新しいフリットストリームを分離する。一般に、少なくとも所与のリンクについては、レシーバ実装は、トランスミッタにより生成され得る全範囲のインターリーブをサポートする。いくつかの実施形態において、類似の範囲のインターリーブは、ファブリック全体に実装される。任意選択で、異なる複数のリンクが異なる複数のレベルのインターリーブをサポートし得る。
【００５８】
パケット先取りの複数の態様によれば、第１の優先度レベル（例えば、高い優先度）を有するＶＬ上のパケットＢからの複数のフリットは、より低い優先度のＶＬ（すなわち、第１の優先度レベルよりも低い優先度レベルを有するＶＬ）上のパケットＡからの複数のフリットのストリームを先取りし得る。この場合、パケットＡのヘッドフリット、およびパケットＡのゼロまたはそれより多いボディフリットの次には、パケットＢからのヘッドフリットが続くことがある。このヘッドフリットは、新しいパケットが開始し、ＶＬ識別子を判断するべく、レシーバがＬ２ヘッダにおいてＳＣフィールドを探すことを示す。パケットＢのヘッドフリットの次には、ゼロまたはそれより多いボディフリット、そして最後にテールフリットが続き、パケットＢを終了させる。パケットＢの終了後、パケットＡの送信は、ゼロまたはそれより多いボディフリットから再開し、その次にテールフリットが続く。
【００５９】
複数のパケットは、連続的により高い優先度の複数のパケット（連続的により高い優先度のＶＬ上野複数のパケット）により先取りされるので、パケット先取りは、入れ子である場合がある。一実施形態において、これは、リストのヘッド上にアクティブなパケットを有するリンクリストとしてモデル化される。現在のパケットが先取りされると、新しいパケットがリストのヘッドに追加される。先取りパケットが終了すると、リストから除去され、再開することが予期される次のパケットが、リストの新しいヘッドになる。１度にリスト上に保持され得るパケットの最大数は、サポートされるＶＬの数に等しい。
【００６０】
上記の検討では、先取りを説明するべく優先度レベルを用いたが、より高い優先度パケットに対してのみ先取りが用いられることは要求されない。送信に利用可能な現在のパケットからの複数のフリット（「バブル」をもたらす）は存在しないが、より低い優先度パケットから利用可能なヘッドフリットが存在する場合があり得る。より低い優先度パケットからのヘッドフリットおよびその次の複数のボディフリットが、送信され得る。新しいヘッドフリットは、パケットをリストのヘッドに追加させ、レシーバは、新しいパケットを正確に追跡する。
【００６１】
第２のパケットのヘッドフリットが第１のパケットのテールフリットの前に送信される場合、パケットは、第２のパケットによりインターリーブされたものとみなされる。インターリーブの最も単純な場合において、インタラプトするヘッドフリットの次のボディフリットの全ては、テールフリットまで第２のパケットに属し、その後、第１のパケットの残余のパケットフリットは、再開する。この単純な場合が、図１３にグラフィカルに図示されている。
【００６２】
複数のフリットのグループは、フリットストリームにおける複数のフリットの（トップからボトムへの）順序に対応する。グループにおける第１のフリットは、仮想レーン０を介して転送されるファブリックパケット用のヘッドフリットであり、ＶＬ０とラベリングされている。ＶＬ０ヘッドフリットは、当該ＦＰを、４フリットの長さ（ヘッドフリット、２つのボディフリット、およびテールフリット）として識別する。第２のフリットはＦＰ  ＶＬ０の第１のボディフリットである。次のフリットは、ＶＬｌヘッドフリットとラベリングされ、ＶＬｌとラベリングされた仮想レーン１を介して送信されたＦＰ用のヘッドフリットである。また、ＶＬｌヘッドフリットは、このＦＰを４フリットの長さとして識別する。１つの手法の下で、新しいＶＬからのＦＰの複数のフリットが現在のＶＬからの複数のフリットを用いてインターリーブされる場合、この新しいＶＬは、リンクを介して複数のフリットを送信する、アクティブな仮想レーンになる。これは、ＶＬｌ用のヘッドフリットをフリットストリームに追加することにより図示されている。結果として、ＦＰ  ＶＬｌは、ＦＰ  ＶＬ０をインターリーブする。これは、ＶＬｌヘッドフリット、２つのＶＬｌボディフリットおよびＶＬｌテールフリットをまず追加することにより図示されている。テールフリットは、ＦＰ  ＶＬｌ  ＦＰに対する複数のフリットの終了を識別する。これにより、ＦＰ  ＶＬｌインターリーブも完了する。次に、ロジックは、ＶＬｌインターリーブの前のＦＰフリットに戻り、リンクを介して送信される残余のＦＰ  ＶＬ０ボディフリットおよびテールフリットをもたらす。
【００６３】
リンクファブリックサブレイヤが複数のファブリックパケットからの複数のフリットのインターリーブをどのようにサポートするかを更に図示するべく、図１４は、プッシュおよびポップのインターリーブの例を示す。リンクファブリックサブレイヤにおけるインターリーブは、プッシュおよびポップのスキームを利用し、インタラプトヘッドフリットは、テールフリットが発生した場合に、インタラプトされるＶＬのプッシュおよびスタックにおけるＶＬのポップをもたらす。スタックがどのように動作するかを視覚化するには、インボックス中のペーパのスタックを、現在のペーパで作業するべく用いられるデスクエリアと併せて想起されたい。プッシュとポップのインターリーブの文脈において、ペーパのスタックは「スタック」と呼ばれ、デスクエリアは、アクティブなＶＬレジスタに対応し、ここで複数のフリットが格納されるアクティブな仮想レーンを、データが識別する。送信されるＶＬがインターリーブに応答して切り替えられると、インターリーブされたＶＬは新しいアクティブＶＬになるが、前のアクティブなＶＬは、デスクからスタックのトップにプッシュされ、従って「プッシュ」という用語になる。ＦＰに対するＶＬフリットの完了時に（例えば、ＶＬ  ＦＰに対するテールフリットがＬＴＰ送信ＦＩＦＯに追加されるとき）、ＶＬは、デスクエリアから除去され、スタックのトップのＶＬは、スタックからデスクエリア上に「ポップ」され、このうにして新しいアクティブなＶＬになる。複数のＶＬのこのプッシュおよびポップは、入れ子の形で継続し得る。ｎのＶＬをサポートするリンクファブリックサブレイヤを用いて、同時にインタラプトされ得るパケットの最大数は、ｎ−１である。
【００６４】
図１４の例において、フリット１４００の順序付けられたリストは、様々なＶＬに格納された複数のファブリックパケットからの複数のフリットが、複数のフリットの送信ストリームに追加される順序を表す（または任意選択で、受信ポートにおいて受信されるフリットストリームにおける複数のフリットの順序を示す）。以下の説明は、複数のフリットが、複数のＬＴＰにバンドルされるアウトバウンドストリームに追加される（つまり、ＬＴＰがファブリックに「注入される）フリットストリームの生成に関する。アクティブなＶＬを識別する証拠は、アクティブなＶＬレジスタ１４０２において様々な状態で図示されている。初期状態下で、ＶＬ０に対応する証拠はアクティブなＶＬレジスタ１４０２に格納され、仮想レーンＶＬ０（ＶＬ０  ＦＰと呼ばれる）についてバッファ処理された次のファブリックパケットから、複数のフリットが追加されることを示す。従って、ＶＬ０  ＦＰに対する初めの２つのフリットは、フリット送信ストリームに追加され、この地点でインターリーブイベントが検出され、ＶＬｌがＶＬ０をインターリーブすることを始動する。このインターリーブ動作を実現するべく、ＶＬｌ用の証拠は、アクティブなＶＬレジスタにおけるＶＬ０を置き換え、ＶＬ０をスタック上にプッシュする。これは、アクティブな仮想レーンをＶＬｌに切り替え、ＶＬｌ  ＦＰのヘッドフリットおよび第１のボディフリットをフリット送信ストリームに追加する。次に、第２のインターリーブイベントに応答して、ＶＬｌを用いたＶＬ２のインターリーブが始動し、ＶＬ２をアクティブなＶＬレジスタ１４０２にロードしてＶＬｌをスタック上にプッシュする。これにより、ＦＰ  ＶＬ２に対する３つのフリット全てをフリット送信ストリームに追加することをもたらす。ＦＰ  ＶＬ２を追加すると、テールフリットは、ＶＬｌを用いたＶＬ２のインターリーブを完了し、スタックからアクティブなＶＬレジスタ１４０２にポップされるＶＬｌをもたらす。ＶＬｌに対する別のボディフリットが追加され、この後にＶＬｌをインターリーブするＶＬ７を始動し、これは、ＶＬ７に対する証拠をアクティブなＶＬレジスタ１４０２に追加し、ＶＬｌをスタックに再度プッシュすることによりもたらされる。全ＶＬ７  ＦＰに対応する３つのフリットは、フリット送信ストリームに追加され、ＶＬｌを用いたＶＬ７のインターリーブおよびスタックからアクティブなＶＬレジスタ１４０２へとＶＬｌを再度ポップすることを完了する。ＶＬｌ  ＦＰのテールフリットが追加され、ＶＬｌをインターリーブし、ＶＬ０を、スタックからアクティブなＶＬレジスタ１４０２にポップすることを完了する。これによりＶＬ０をアクティブなＶＬとして返し、ＶＬ０  ＦＰに対する最後の２つのパケットは、ＬＴＰ送信ＦＩＦＯに追加される。
【００６５】
インタラプトされる黙示的ＶＬに返すポップに依存することに代えて、リンクファブリックサブレイヤは、デバイスが「ＶＬマーカ」と称する特別なＬＦコマンドフリットを利用して、どのＶＬがリストのヘッドに移動されるかを明示的に指定することを可能にする。ＶＬマーカの使用は、この追加のマーカフリットゆえにあまり効率的でないが、インターリーブに対するより多くの柔軟性を提供する。図１５の図がこのコンセプトを図示する。
【００６６】
実際のＶＬマーカは、ＶＬが既定のスタックの順序、またはスタックのトップに移動されるスタック内に存在しない新しいＶＬからプルされることを可能にする。スタック内に依然として存在する複数のＶＬは、その後、プッシュおよびポップの規則に継続的に従う。これら２つの異なるメカニズムの使用は、混在され得、排他的ではない。スタックからプルされ、次に別のＶＬによりインターリーブされる特定のＶＬの場合、これはスタック上に再度プッシュされる。
【００６７】
図１５に戻ると、複数のオペレーションのシーケンスは、図１４のプッシュおよびポップの例と類似した形で開始し、初期のアクティブ仮想レーンはＶＬ０であり、ＶＬ０  ＦＰの最初の２つのフリットがフリット送信ストリーム１５００に追加される。上記と同様に、次のＶＬｌは、２つのフリットに対するＶＬ０をインターリーブし、次にＶＬ２がＶＬｌをインターリーブする。しかし、ＶＬ２  ＦＰテールフリットに到達する前に、ＶＬマーカ１５０２は、フリット送信ストリームに挿入され、ＶＬ０が新しいアクティブＶＬになることを示す。これにより、スタックからプルされ、アクティブなＶＬレジスタ１４０２にロードされるＶＬ０をもたらし、ＶＬ２をスタックのトップにプッシュする。ＶＬ０に対する残余の２つのフリットは、フリット送信ストリーム１５００に追加され、ＶＬ０を終了させ、スタックからアクティブなＶＬレジスタ１４０２へとポップされるＶＬ２をもたらす。これは、ＶＬ２に対するテールフリットを追加し、ＶＬ２を終了させ、スタックからアクティブなＶＬレジスタ１４０２へとＶＬｌをポップする。別のＶＬｌのボディフリットが追加され、この後、ＶＬｌをインターリーブするＶＬ７を始動し、これによりＶＬ７をアクティブなＶＬレジスタ１４０２にロードし、ＶＬｌをアクティブなＶＬレジスタ１４０２からスタック上にプッシュする。次に、第２のＶＬマーカ１５０４は、フリット送信ストリーム１５００に追加され、アクティブな仮想レーンをＶＬｌに再度切り替える。これにより、ＶＬ７をスタック上にプッシュし、ＶＬｌをアクティブなＶＬレジスタ１４０２にプルする。ＶＬｌ  ＦＰのテールフリットが追加され、これは、ＶＬｌのインターリーブを完了させ、ＶＬ７は、スタックからアクティブなＶＬレジスタ１４０２にポップされる。次いで、ＶＬ７  ＦＰに対する最後の２つのフリットが追加される。
【００６８】
図１４および１５に示されるインターリーブの例は、例示的な目的、ならびにプッシュおよびポップのインターリーブスキーム、ならびにＶＬマーカインターリーブスキームのより容易な理解のために誇張されたレベルのインターリーブを示す。実際のシステムにおいて、ほとんどのインターリーブは、２つのタイプのインターリーブイベント、すなわち複数のパケットストリームにおける（Ａ）先取り（プリエンプション）および（Ｂ）バブルのうち１つから生じる。先取りインターリーブの更なる詳細な例、ならびに先取りインターリーブおよびバブルイベントからもたらされるインターリーブの組み合わせは、図１６および１７にそれぞれ示されている。
【００６９】
上記のように、先取りの下で、より高い優先度を有する仮想レーンにおけるファブリックパケットに対するコンテンツ（フリット）は、より低い優先度ＶＬにおけるＦＰの複数のフリットを、フリット送信ストリームに追加することを先取りし得る。ＨＦＩ、ゲートウェイまたは他の複数のタイプのファブリックのエンドポイントにおいて、複数のファブリックパケットが構築されるデータは、一般に、ファブリックパケットにカプセル化されるイーサネット（登録商標）フレーム等、いくつかの他の種類のフォーマットで最初にバッファ処理される。ＩＰパケットおよびＵＤＰパケット等のレイヤ３の複数のパケットがどのように生成されるのかと同様に、複数のファブリックパケットは、ネットワーキングスタックの一部として生成され得る可能性がある。スイッチにおいて、受信済みおよび送信済みの双方のコンテンツは、フリットに既にフォーマット化され、追加のメタデータは、どのフリットがどのＦＰに関連し、どのスイッチポートにフリットが送信され、次のホップまたはエンドポイント目標にアウトバウンドされるかを判断するべく用いられる。前述を考慮し、図１６および１７は、ＦＰの下にＦＰコンテンツのフリットフォーマット化を用いる、ファブリックパケットを全体として図示する。
【００７０】
各ＦＰに対するフリットコンテンツは、ＦＰが割り当てられる、仮想レーンに対して割り当てられたバッファに一時的に格納される。様々なバッファ構成の実施形態の下で、別個の複数のバッファが各ＶＬに割り当てられ得、いくつかのＶＬはバッファ空間を共有し得、またはこの２つの組み合わせが存在する場合があり、ＶＬバッファ割り当ての第１の部分は、当該ＶＬに対して私的なものであるが、別の部分は共有バッファ空間である。
【００７１】
複数の仮想レーンを用いる基本的態様は、所与の仮想レーンにおけるコンテンツが依然として順序通りであることである。
【００７２】
これは、所与の仮想レーンについては、１つのＦＰが別のＦＰを追い越さないことを意味する。更に、複数のＦＰに対するフリットも、依然として、初めに生成された順序通りである。同時に、異なる仮想レーンにおけるコンテンツは、他の複数の仮想レーンに対して順序通りである必要はない。これにより、より高い優先度のトラフィックがより低い優先度のトラフィックを先取りすることを可能にする。また、複数の仮想レーンは、ルーティングおよびプロトコルのデッドロックを除去し、複数のトラフィッククラス間のヘッドのラインブロッキングを回避するべく用いられる。
【００７３】
図１６に示されるように、各仮想レーンＶＬ１、ＶＬ２、ＶＬ３に対する３つのバッファ１６０２、１６０４および１６０６が存在する。また、これらの仮想レーンの各々には、各優先度レベル、ＶＬ１に対する低い優先度、ＶＬ２にたいする中間の優先度およびＶＬ３に対する高い優先度が割り当てられている。アービタ（図示せず）は、どのＶＬバッファから、複数のフリットがＬＴＰ２、３、４、５、６および７にバンドルされるフリット送信ストリーム１６０８に追加されるべき複数のフリットをプルするかを決定するべく用いられる。図１６は、「スライディングウィンドウ」の図であり、図示されたウィンドウのタイムフレーム上にＶＬ、ＶＬ１、ＶＬ２、およびＶＬ３のリンクトラフィックの処理を図示する。一実施形態において、複数のＶＬバッファは、ＦＩＦＯ（ファーストイン、ファーストアウト）のバッファとして実装され、各ＦＩＦＯスロットは、フリットを格納するサイズである。
【００７４】
上述のように、先取りインターリーブの一態様において、より高い優先度ＶＬに割り当てられたＦＰコンテンツは、比較的低い優先度ＶＬに割り当てられたＦＰコンテンツを先取りし得る。一般に、複数のＦＰに対応するＦＰコンテンツは、（ファブリックに注入される）各ＶＬ出口のバッファにバッファ処理され、最高の優先度でＶＬに割り当てられたＦＰコンテンツは、フリット送信ストリームに追加される。しかし、これは絶対の規則ではなく、先取りが行われない複数の状況が存在し得ることに留意されたい。同時に、ＦＰコンテンツが同一の優先度を有する所与のＶＬまたは複数のＶＬにのみ利用可能である場合、当該ＦＰコンテンツは、（現在、バッファ処理済みのＦＰコンテンツを全く有しない）他の複数のＶＬの優先度レベルに関わらず、フリット送信ストリームに追加される。この状況は、以下のように、図１６に図示される。
【００７５】
時間Ｔ１において、パケット１の少なくとも第１の部分が、ＶＬ１のバッファ１６０２においてバッファ処理され、送信の準備ができている。アーキテクチャ下でのデータ転送のストリームの性質ゆえに、複数のフリットは、複数のＶＬバッファにおいて受信され（追加され）、（送信のために）複数のＶＬバッファから除去される。更に、複数のフリットを複数のＶＬバッファに追加し、これから複数のフリットを除去することは、特にスイッチにおいてはどちらかといえば非同期的であり得る。結果として、時間の任意の所与の地点において、所与のＶＬバッファは、バッファ処理され、送信の準備ができているコンテンツを有するか、または有しないことがある。図１６の例において、時間Ｔｌでは、ＶＬ１のバッファ１６０２のみが送信する準備ができている複数のフリットを含むが、ＶＬ２のバッファ１６０４およびＶＬ３のバッファ１６０６の双方が空である。ＦＰパケットに対する複数のフリットをフリット送信ストリームに追加することを始動するべく、少なくともヘッドフリットまたは複数のフリット（特定のＦＰフォーマットに応じて）は、ＶＬ  ＦＩＦＯバッファのヘッドに存在する必要がある。（以下に更に詳細に説明されるように、一実施形態において、複数のＶＬバッファは、円形ＦＩＦＯとして実装され、ＦＩＦＯヘッドは、ＦＩＦＯヘッドポインタにより識別される）。図１６において、ヘッドフリット１６１０は、時間Ｔ１におけるＶＬｌのバッファ１６０２のヘッドにおいてバッファ処理される。
【００７６】
時間Τ１において、複数のフリットの第１のグループ１６１２は、フリット送信ストリーム１６０８のＬＴＰ２に追加され、フリット１６１２の開始時におけるヘッドフリット１６１０は、時間Ｔ２で追加され、Ｔ１とＴ２との間の時差は、アクティブなＶＬがＶＬｌのバッファ１６０２に変更されることを、アービタが認識するのにかかる時間量、およびバッファからのフリットデータをフリット送信ストリーム１６０８にコピーする時間を表す。図１６におけるＴ１とＴ２との間の差異は、スケールしないのではなく、ＦＰデータがＶＬバッファに到達し、送信の準備ができるときと、当該データがフリット送信ストリームに実際に追加されるときとの間のいくらかの有限な時間が存在することを図示するべく、用いられる。
【００７７】
時間Ｔ３において、パケット２の第１の部分は、ＶＬ２のバッファ１６０４において受信され、ヘッドフリット１６１５から開始する。ＶＬ２は、ＶＬｌよりも高い優先度を有するので、先取りイベントは、アービタ（または他のロジック、図示せず）により検出される。実装に応じて、先取りイベントは、パケット２に対するヘッドフリットがＶＬ２バッファ１６０４のＦＩＦＯのヘッドに到達したすぐ後に検出されてもよく、またはいくつかのレベルのインターリーブの発生を低減するべく、いくらかの遅延が存在してもよい。追加のインターリーブが他のポートにおいてバブルの発生をもたらし、更により多くのインターリーブをもたらすからである。例えば、フリット送信ストリームに追加された複数のフリットを有する現在のパケットが残された若干のフリットを有し、将来の先取りパケットが大きい場合、現在のパケットの先取りが行われないように、ロジックは、現在のパケットが完了するまで待機し得る。先取りイベントに応答して、アクティブなＶＬは、プッシュおよびポップのインターリーブスキームを用いてＶＬｌからＶＬ２に切り替えられる。任意選択で、ＶＬマーカインターリーブスキームが用いられ得る。
【００７８】
ＶＬｌからＶＬ２に切り替えられるアクティブなＶＬに応答して、ＶＬ２に対する証拠は、アクティブなＶＬレジスタにロードされ、ＶＬｌはスタック上にプッシュされる。時間Ｔ４において図示されるように、複数のフリットの第１のグループ１６１６は、ＶＬ２のバッファ１６０４のＦＩＦＯからプルされ、フリット送信ストリーム１６０８に追加される。これにより、パケット２を優先してパケット１の送信の先取りをもたらすと共に、パケット１およびパケット２からの複数のフリットをインターリーブする。
【００７９】
時間Ｔ５において、パケット３の第１の部分は、ＶＬ３バッファ１６０４において受信され、ヘッドフリット１６１８から開始する。ＶＬ３はＶＬ２よりも高い優先度を有するので、第２先取りイベントは、アービタ（または他のロジック、図示せず）により検出される。これにより、ＶＬ３の証拠をアクティブなＶＬレジスタにロードしてＶＬ２をスタック上にプッシュすることによりもたらされる送信パケット３を優先して先取りされるパケット２の送信をもたらす。図示されるように、時間Ｔ６で開始し、パケット３に対する複数のフリット１６２０全体が、フリット送信ストリーム１６０８に追加され、従って、パケット２の複数のフリットを用いてパケット３の複数のフリットをインターリーブする。
【００８０】
テールフリット１６２２をフリット送信ストリーム１６０８に追加することに関連して、アービタ（または他のロジック）は、パケット３からの複数のフリットを追加することが完了したことを検出する。従って、ＶＬ３は、アクティブなＶＬレジスタから除去され、ＶＬ２は、スタックからアクティブなＶＬレジスタへとポップされ、ＶＬ２をアクティブなＶＬとして返す。これにより、フリット送信ストリーム１６０８に追加されるパケット２の残余のフリット１６２４をもたらし、時間Ｔ７において開始し、テールフリット１６２６が追加され、従ってパケット２が完了したことを検出する時点時間Ｔ８で終了する。これにより、スタックからアクティブなＶＬレジスタへとポップされるＶＬ１をもたらし、ＶＬ１は、アクティブなＶＬとしてＶＬ２を置き換える。次に、パケット１の残余の複数のフリット１６２８は、フリット送信ストリーム１６０８に追加され、時間Ｔ８においてテールフリット１６３０で完了する。次いで、次のファブリックパケットに対するヘッドフリットは、ＬＴＰ７の最後のフリットとして追加される（次のファブリックパケットは、簡潔にするべく示されていない）。
【００８１】
図１７は、先取りインターリーブイベントが後に続く、バブルインターリーブイベントを図示する。ファブリックパケットの複数のフリットが複数のホップを含むルーティング経路をトラバースする場合、複数のフリットの一部は、１または複数のスイッチにおいて先取りされ得る。これにより、所与のＦＰに対するフリットストリームの中断をもたらす。そのような中断されたフリットストリームが受信ポートにおいて受信される場合に、先取りの前に送信された複数のフリットの一部と先取り後に送信された複数のフリットの一部との間のギャップが存在する。これにより、「バブル」をもたらす。このバブルの例に加えて、バブルは、他の様々な理由からも生じ得る。そのようなバブルの検出に応答して、インターリーブは、バブルを有するＦＰと同一か、またはより低い優先度レベルを有する複数のＦＰからのフリットを用いて実装され得る。
【００８２】
図１６の例におけるように、時間Ｔ１において、少なくともヘッドフリット１７００を含むパケット１の第１の部分が、ＶＬ１  ＦＩＦＯのバッファ１６０２において受信され、時間Ｔ２の開始時おいて、フリット１７０２の第１の部分がフリット送信ストリーム１７０４のＬＴＰ２に追加される。時間Ｔ３において、パケット２の複数のフリットの第１の部分は、ＶＬ２のＦＩＦＯバッファ１６０４において受信され、ヘッドフリット１７０６を開始する。ＶＬ１およびＶＬ２の双方には、低い優先度が割り当てられ、従って、パケット１およびパケット２の各々には、同一の低い優先度レベルが割り当てられる。複数のＦＰおよび／またはその複数のフリットは、同一の仮想レーンに割り当てられると互いにに送信することができないが、複数のＦＰおよび／またはその複数のフリットは、異なる仮想レーンに割り当てられると互いに送信することを許可される。異なる複数の仮想レーンが同一の優先度レベルを有する場合にも、この状況は生じ得る。一般に、２つ（またはより多くの）仮想レーンにおける複数のＦＰが同一の優先度レベルを共有する場合、複数のＦＰは、（そのフリットを介して）フリット送信ストリームに全体として追加され、例えば、第１のＦＰに対する全てのフリットが追加され、第２のＦＰに対する全てのフリットが追加される、等である。同一の優先度レベルを共有する複数のＶＬから、どのＦＰを次に送信するかの選択は、アービタ選択ロジックの機能であり、これは一般に、複数のＶＬにおけるＦＰの送信を等しく（または相当に等しく）扱うように設計される。例えば、いくつかの実施形態において、ラウンドロビンスキームが実装され得る。そのようなラウンドロビンスキームは、複数のＶＬ全体でのバッファの使用レベルがいくつかのレベルを目標とするように、複数のＦＰの長さも考慮し得る。例えば、２つのＶＬ間のラウンドロビンのみによる手法は、ＶＬにおいて複数のＦＰの交互の送信となるが、使用レベルの手法は、複数のＶＬのうち１つから第１のＦＰを送信し、その後に第１のＦＰが第２および第３のＦＰよりも著しく大きい場合に、他のＶＬから第２および第３のＦＰを送信し得る。
【００８３】
図１７において図示された例の下で、通常、パケット１に対する複数のフリットの全てが送信され、その後にパケット２に対するフリットの全ての送信が続く（先取りインターリーブイベントが存在しないものと推定し、ＶＬ１およびＶＬ２のみが仲裁について考慮される）。しかし、図示されるように、時間Ｔ４において開始するパケット１に対する複数のフリットの転送において、バブルが存在する。アービタロジックは、バブルの存在を、ＶＬ２  ＦＩＦＯバッファ１６０４におけるパケット２の複数のフリットの利用可能性と組み合わせて考慮する。応答して、バブルインターリーブイベントが検出され、これにより、時間Ｔ５で開始するパケット１の複数のフリットを用いてインターリーブされるパケット２の複数のフリット１７０８をもたらす。先取りインターリーブについてのように、インターリーブの始動は、ＶＬ２をアクティブなＶＬレジスタにロードし、ＶＬ１をスタック上にプッシュすることにより開始する。
【００８４】
パケット２からの複数のフリットは、フリット送信ストリーム１７０４に追加されているが、時間Ｔ６において、パケット１に対する複数のフリットの第２の（および残余の）部分は、ＶＬ１  ＦＩＦＯのバッファ１６０２において受信およびバッファ処理され始める。これらのフリットは、即値送信に利用可能であるが、時間Ｔ６における受信は、インターリーブイベントを生成しない（またはそうでなければ、パケット２からの複数のフリットのインターリーブを終了する）。むしろ、ＶＬ３のＦＩＦＯバッファ１６０６におけるヘッドフリット１７１０を含む、パケット３の複数のフリットの利用可能性を検出したことに応答して、先取りインターリーブイベントが時間Ｔ７において検出されるまで、パケット２からの複数のフリットは、フリット送信ストリーム１７０４に継続して追加される。図１６の例におけるように、ＶＬ３は、ＶＬ１またはＶＬ２に対する優先度レベルよりも高くなる、高優先度レベルを有する。結果として、高い優先度のパケット３に対する複数のフリットの利用可能性は、パケット２の複数のフリットを用いてパケット３の複数のフリット１７１２の先取りインターリーブを始動させ、時間Ｔ８において開始し、テールフリット１７１５を追加して時間Ｔ９において完了する。パケット３のインターリーブの完了時に、ＶＬ２は、スタックからポップされてアクティブＶＬレジスタにロードされ、このようにしてＶＬ２をアクティブな仮想レーンとして返す。これにより、パケット２の残余のフリット１７１６のフリット送信ストリーム１７０４への追加をもたらす。
【００８５】
パケット２の完了時に、テールフリット１７１８により、時間Ｔ１０においてフリット送信ストリーム１７０４に対して識別されたように、ＶＬ１は、スタックからポップされ、アクティブなＶＬレジスタへとロードされ、ＶＬ１をアクティブなＶＬとして返す。これにより、パケット１の残余の部分に対応するフリット１７２０のフリット送信ストリーム１７０４への追加をもたらし、パケット１に対する複数のフリットの追加は、テールフリット１７２２が時間Ｔ１１において追加されると完了する。
【００８６】
リンクの信頼性
【００８７】
上述のように、アーキテクチャのファブリックは、「ロスレス」であり、受信時にパケットが破棄されることはなく、またはそうでなければ送信中に「失われる」ことはないことを意味する。これは、主として、クレジットベースのフロー制御の使用および複数の再生バッファの使用を含む、複数のメカニズムの組み合わせにより実現される。クレジットベースの手法の下で、送信ユニットがフリットを送信するクレジットを有しない場合、送信ユニット（例えば、ＨＦＩ、スイッチまたはゲートウェイ）は、フリットを受信ユニット（例えば、別のＨＦＩまたはスイッチ）に送信しない。クレジットは、１ＶＬ毎ベースであり、レシーバがフリットに用いられるＶＬに対して適切なバッファ空間を有することを示すべく、用いられる。
【００８８】
標準的検出または強化検出のＬＴＰが用いられるかに応じて、各ＬＴＰは、データ整合性を検証するべく用いられる１または複数のＣＲＣを含む。図５〜８および上記に図示されるように、ＣＲＣは、ＬＴＰのデータコンテンツを介して算出され、もたらされるＣＲＣ値は、最後のフリット（フリット１５）の後のＬＴＰの最後に付けられる。受信されると、ＣＲＣは再度算出され、ＣＲＣおよび受信済みＬＴＰと、受信済みデータにおけるＣＲＣとの間で比較され、任意のデータエラーか否かが判断される。送信済みＣＲＣおよび受信済みデータを介して算出されたＣＲＣが一致しない場合、データエラーが検出される。ＣＲＣ不一致の検出に応答して、ＬＴＰは、再生バッファを用いることにより、再送信される。
【００８９】
複数の「信頼できる」ＬＴＰは、再送信要求がなければ、ピアにより首尾よく受信されたことを示すことを保証するのに十分長い期間、再生バッファに保持される。この手法の下で、レシーバは、パケットが首尾よく受信されたことをアクノリッジするＡＣＫを送信しない。むしろ、ラウンドトリップ期間内に再送信要求がないことにより、リンク全体でＬＴＰが首尾よく転送されたとの黙示的アクノリッジメントを提供する。「信頼できる」ＬＴＰという用語を用いることにより、再生バッファ中に保持されるＬＴＰを、Ｎｕｌｌ  ＬＴＰ等、再生バッファ中に保持されない他のＬＴＰと区別する。従って、Ｎｕｌｌ  ＬＴＰは、再送信されない。
【００９０】
複数の再生バッファ位置ポインタは、各ＬＴＰについてトランスミッタ（ＮｘｔＴｘＬＴＰ）およびレシーバ（ＮｘｔＲｘＬＴＰ）で維持されるが、ＬＴＰの一部として交換されない。送信エラーがレシーバ（ＣＲＣ不一致による）により検出されると、ＮｘｔＲｘＬＴＰ再生バッファ位置ポインタを含むＲｅｔｒｙＲｅｑＬＴＰを、トランスミッタに送信する。トランスミッタにおいてＲｅｔｒｙＲｅｑＬＴＰを受信すると、再生バッファにおける複数のＬＴＰは、元の順序で再送信され、ＲｅｔｒｙＲｅｑＬＴＰを開始し（ピアＮｘｔＲｘＬＴＰ）、書き込まれた最後の再生バッファ位置で終了する。一実施形態において、ＬＴＰデータを（ＮｘｔＷｒＬＴＰ）に書き込む次の再生バッファスロットが用いられ、従って、書き込まれた最後の再生バッファの位置は、ＮｘｔＷｒＬＴＰ−１である。
【００９１】
ＣＲＣ不一致により示されるリンクエラーの検出に関連して、第２のメカニズムはどのレーンが不規則かを判断するべく実装される。このメカニズムは、レシーバのみにおいて算出される１レーン当たりのＣＲＣを使用し、送信済みのデータにおける１レーン当たりのＣＲＣとの比較を用いない（存在しないからである）。むしろ、レーン当たりのＣＲＣは、以下に検討されるように、ＣＲＣ不一致を用いてＬＴＰについて算出される１レーン当たりのＣＲＣを、１レーン当たりまたは１転送グループ当たりのベースのいずれかで、再生バッファを介して再送信されるときの同一のＬＴＰについて再度算出される対応する１レーン当たりのＣＲＣと比較するべく用いられる。
【００９２】
複数の不規則なレーンを検出することを目的とする、１レーン当たりのＣＲＣの使用を伴う再生バッファの使用の例は、図１８Ａおよび１８Ｂに図示される。この例において、ＬＴＰ送信ストリーム１６０４のＬＴＰ２、３、４、５、６および７を含む、ＬＴＰ送信ストリームは、デバイスＡのリンクインターフェースＡからリンクの他の端部におけるピアデバイスＢのリンクインターフェースＢへと送信されている。より詳細には、ＬＴＰ送信ストリームは、上述したように、図１７に示されるものに類似した４つのレーンリンク相互接続を用いて、リンクインターフェースＡの送信ポート１８００からリンクインターフェースＢの受信ポートへと送信される。アーキテクチャの複数のリンクの下で、ＬＴＰコンテンツは、パラレルに複数のレーンを介してシリアルに送信される。上述のように、レーンの数は、特定のリンク構成に応じて異なり得る。更に、低減した数のレーンを有する複数のリンクの転送もサポートされる。例として限定することなく、１つのビットは、単位インターバル（ＵＩ）と呼ばれる期間中に各レーンを介して送信される。一実施形態において、ＬＴＰデータの転送は、転送単位（ＸＦＲ）と呼ばれるデータ単位に分割される。一実施形態において、各ＸＦＲは３２ビットの量である。一実施形態において、ＸＦＲの全てのビットは、同一のレーンを用いて送信される。いくつかの実施形態において、いくつかのＸＦＲは、複数のレーンを介して送信され得る。
【００９３】
図１９は、標準的検出ＬＴＰのＸＦＲのマッピングを図示し、１０５６ビットの長さを有する。各ＸＦＲは３２ビットの長さであり、１つのレーンを介して転送される。従って、各ＬＴＰに対して３３ＸＦＲがある。図２０は、一実施形態による、４つのレーンリンクに対する１レーン当たりのＸＦＲマッピングを示す。名目上、図示の目的および簡潔のために、各フリットは６４ビットである。しかし、図３に図示されるように、各フリットは、自身のフリットタイプを識別するべく、（ボディフリットに対して）全体的に、または（ヘッドおよびテールフリットならびに制御フリットに対して）部分的に用いられる、追加の６５番目のビットを有する。送信中に、６５番目のビットは、インラインで送信される。これは、複数のレーンを介してパラレルに送信された複数のシリアル転送ビットストリームが非シリアル化および再アセンブルされると、６５番目のビットが１０５６ビットの標準的検出ＬＴＰにおける全ての６５番目のビットの位置を提示することを意味する。
【００９４】
４つのレーンリンクの一実施形態において、２つのフリットに対するデータビットは、４つのＸＦＲを含む１２８ビットが（論理的に）一緒に転送されるように、３２ＵＩを介してパラレルにリンク経由で転送される。しかし、上述のように、全ての６５番目の位置は、フリットタイプのビットにより占められる。結果として、複数のＸＦＲは、複数のフリットを用いて２：１で正確にマッピングしない。むしろ、追加の６５番目のビットのインラインの存在により、図２１に図示されるラッピング転送をもたらす。
【００９５】
更に詳細には、一実施形態において、追加の２ビットは、各１２８ＵＩについてラッピングされ、４つのレーンＸＦＲの８つのグループが完了した後、１６ビットのアグリゲーションをもたらす。これら８つのグループは、最初の３２ＸＦＲを含み、３３番目のＸＦＲは、最後の１６ビットのフリット１５（その６５番目のビットと共に）を含み、その後に１６ビットのＣＲＣ（または任意選択で、１４ビットのＣＲＣと共にＣＲＣ−１４ＬＴＰの２つの制御チャネルビット）が続く。例示的目的および理解を促すために、複数のフリットは、本明細書において６４ビットの単位で転送されるものとして図示され得る。しかし、一実施形態において、複数のフリットが実際には６５ビットの単位で転送されることが理解されるであろう。
【００９６】
図２０の４レーンＸＦＲマッピングに戻ると、３３ＸＦＲ／１０５６ビットの標準的検出ＬＴＰを用いることで、各ＬＴＰにつき１ＸＦＲのラッピングをもたらす。同様に、これは、レーン０、レーン１、レーン２、レーン３のレーンのシーケンスを開始し、レーン０、レーン１等に戻るＬＴＰにより、後続の各ＬＴＰの開始点を次のレーンにシフトさせる。これは、本明細書において４レーンの標準的検出ＬＴＰの「シーケンス」、または単に略してＬＴＰシーケンス（本明細書において図示および検討される４つのレーンを介した標準的検出ＬＴＰ転送に適用される）と呼ばれる。便宜上、ＬＴＰシーケンスの状態は、第１、第２、第３および第４として図示されるが、一実施形態において、２ビットを用いて０、１、２、３として追跡される。
【００９７】
図１８Ａに示されるように、ＬＴＰ送信ストリーム１６０４における複数のフリットのシリアル化およびマッピングは、送信リンク制御ブロック１８０４により実行される（またはそうでなければ、このオペレーションの一部は、示されない別のブロックにより実行される）。送信リンク制御ブロック１８０４により処理される前に、信頼できる各ＬＴＰに対するデータコンテンツは、再生バッファ１８０６における複数のＬＴＰスロットのうち１つにコピーされ、スロットは、ＮｘｔＷｒＬＴＰポインタ１８０７により識別される。一般に、再生バッファは、可変サイズまたは予め定められたサイズを有し得る。一実施形態において、再生バッファは、予め定められた複数のサイズのうち１つに対して選択的に構成され得る。
【００９８】
図示されるように、一実施形態において、再生バッファは、最後のＦＩＦＯスロットから第１のＦＩＦＯスロットへと逆にラッピングする（この例においてスロット７から０へとラッピングする）値を有する、次の送信ＬＴＰ（ＮｘｔＴｘＬＴＰ）ポインタ１８０８を用いて円形ＦＩＦＯとして実装される。円形ＦＩＦＯを用いることにより、新しい（送信される次の）ＬＴＰデータにより上書きされる前のＬＴＰデータ（すでに送信されたＬＴＰに対応する）をもたらす。しかし、以下に詳述されるように、ＬＴＰデータが首尾よく転送されたとの黙示的アクノリッジメントが検出されるまで、ＬＴＰデータが上書されないように保証する複数の措置が提供される。このスキームは、明示的ＡＣＫを用いることを必要とすることなく、リンクを介したデータの信頼できる送信を促し、従ってＡＣＫの使用に関連するオーバヘッドを低減する。また、これにより、リンクレイヤ以上の複数のプロトコル（ＴＣＰ等）に用いられるＡＣＫベースの信頼できる複数の送信スキームをサポートするのに必要な、送信ポートにおけるバッファ処理を低減する。図２２Ａ〜２２Ｅのフローチャート２２００ａ〜ｅ、ならびに図２３Ａおよび２３Ｂのトランスミッタ状態マシン図２３００およびレシーバ状態マシン図２３５０を参照して、不規則な複数のリンクレーンの検出を含む複数のリンクエラーの処理が、一実施形態による以下のように実装される。リンク初期化処理中に、様々な情報は、リンクインターフェースのピア送信ポートとピア受信ポートとの間で交換され、双方向の通信リンクを確立する。この処理中に、再生バッファのＮｘｔＴｘＬＴＰポインタ１８０８および受信側の対応する次の受信ＬＴＰ（ＮｘｔＲｘＬＴＰ）ポインタ１８１０が０に初期化される。首尾よくリンクが初期化されると、リンク転送モードは、開始ブロック２２０２、ならびに図２３Ａおよび図２３ＢのトランスミッタおよびレシーバのＬｉｎｋＴｒａｎｓｆｅｒＡｃｔｉｖｅ.ｎｏｒｍａｌ状態により図示されるように「通常」に設定される。複数のＬＴＰは、リンク全体で転送される準備ができた状態になる。明確にするために、以下は１方向に転送されるデータに焦点を当てる。類似の複数のオペレーションは、（別個のセットのレーンを用いて）逆方向で実行され、リンクを介した双方向の通信をサポートする。
【００９９】
ＬＴＰ送信ストリーム１６０４における複数のＬＴＰは、シーケンシャルに送信され、ＬＴＰのデータは、再生バッファ１８０６にシーケンシャルにコピーされ、ＮｘｔＴｘＬＴＰポインタ１８０８は、１ＬＴＰ毎に１つのスロットを前進させる（または最後のスロット（ＭｙＬＴＰｍａｘ）に到達すると、０に再びラッピングする）。図１８Ａにおいて図示された例示的状態において、ＬＴＰ２〜６は、送信ポート１８００からすでに送信されており、ＬＴＰ２および３は、受信ポート１８０２によりすでに受信され、Ｒｘリンク制御ブロック１８０５により処理され、ＬＴＰ  ＣＲＣの一致に基づいて良好なＬＴＰと判断された。ＬＴＰ４は、受信されようとしているが、ＬＴＰ５および６は、インフライト状態である。（これらのＬＴＰのデータは、トランスミッタポート１８００からアウトバウンドで送信されているが、受信ポート１８０２においてまだ受信されていない）。フローチャート２２００ａに戻ると、主要フローチャートのループがブロック２２０４において開始し、ここでＬＴＰは、受信ポートにおいて受信される。図１８Ａの例において、このオペレーションは、受信ポート１８０２において受信されるＬＴＰ４により図示されている。ブロック２２０６において図示されるように、各レーンに対して、適用可能なＬＴＰシーケンス状態の間に当該レーンを介して受信されたデータに基づいて、ＣＲＣが算出され、ＣＲＣは、ＣＲＣレーンレジスタＣＲＣ−Ｌ０、ＣＲＣ−Ｌ１、ＣＲＣ−Ｌ２、およびＣＲＣ−Ｌ３により図示されるように、１レーン当たりのＣＲＣレジスタに書き込まれる。一実施形態において、これらのレジスタにおけるデータは、複数のＣＲＣレーンレジスタが最も最近処理されたＬＴＰに対するデータのみを格納するように、現在のＬＴＰのＣＲＣ計算結果により上書される。一実施形態において、４つのレーンリンクに対する１レーン当たりのＣＲＣは、各レーンに対する複数のビットが受信されるときに動的に算出される、１２ビットＣＲＣである。
【０１００】
ブロック２２０８において、受信済みＬＴＰデータ（Ｒｘ  ＣＲＣ）に対するＣＲＣが算出され、送信済みＬＴＰにおけるＴｘ  ＣＲＣと比較される。本明細書の様々なＬＴＰフォーマットに図示されるように、Ｔｘ  ＣＲＣは、レシーバに送信され、ＬＴＰの最後に添付されるＬＴＰデータを用いて、送信ポート１８００により算出される。レシーバは、受信済みＬＴＰデータからＴｘ  ＣＲＣを抽出し、Ｔｘ  ＣＲＣを、受信済みのＬＴＰデータを介して算出されたＲｘ  ＣＲＣと比較する。決定ブロック２２１０において、受信済みＴｘ  ＣＲＣおよび算出済みＲｘ  ＣＲＣが一致するか否かが判断される。ブロック２２１２に図示されるように、一致する場合、ＬＴＰは良好とみなされ、ＬＴＰデータの通常処理が実行され、ロジックはブロック２２０４に戻り、次の受信済みＬＴＰを処理する。
【０１０１】
図１８Ａに示される例において、Ｔｘ  ＣＲＣおよびＲｘ  ＣＲＣがＬＴＰ４について一致せず（ＣＲＣ不一致）、これは、ＬＴＰデータのエラーを示す。複数のリンクデータエラーは、様々なリンク状態から生じることがあり、この点については、エラーを引き起こしている特定のリンク状態は、不明である。知られているのは、受信されたＬＴＰデータが送信されたものと異なることであり、従って、受信済みＬＴＰは不規則なデータを有し、更に処理されない。不一致のＬＴＰ  ＣＲＣは、決定ブロック２２１０における「いいえ」の結果に対応し、ＬＴＰが不良として図示され、これにより、レシーバ状態図２３５０においてＲｃｖＢａｄＬＴＰによっても図示されているブロック２２１４に、ロジックは進む。ブロック２２１６（図２２Ａ）、２２１８および２２２０（図２２Ｂ）の各々における複数のオペレーションにより図示されるように、不良ＬＴＰの検出に応答して、複数のオペレーションは始動し、実質的にパラレルに実行される。
【０１０２】
ブロック２２１６に図示されるように、不良ＬＴＰについて算出された１レーン当たりのＣＲＣ値は、１レーン当たりまたは１ＸＦＲグループ当たりのベースで格納される。１ＬＴＰ当たりのＸＦＲの数がレーンの数で均等に割り切れない場合、１レーン当たりのＣＲＣ値は、１レーン当たりのベースで格納される。そうでなければ、１レーン当たりのＣＲＣ値は１ＸＦＲグループ当たりのベースで格納される。例えば、３つのアクティブなレーンおよび３３のＸＦＲを有するリンクについては、３３／３＝１１であるので、１レーン当たりのＣＲＣ値が格納される。逆に、４つまたは２つのレーンについては、１レーン当たりのＣＲＣ値は、１ＸＦＲグループ当たりのベースで格納される（３３／４＝７．５および３３／２＝１６．５）。１ＸＦＲグループ当たりのＣＲＣが格納されると、受信済みのＬＴＰシーケンス状態は、レジスタ１８１４に格納される。
【０１０３】
１ＸＦＲグループ当たりのＣＲＣの例が図２４に図示される。示されるように、１レーン当たりのＣＲＣが算出されるＸＦＲの数は、４つのレーン全体で等しくはない。むしろ、複数のレーンのうち１つは、９つの３２ビットＸＦＲ（従って２８８ビット）／標準的検出ＬＴＰを受信するが、他の３つのレーンは、８つの３２ビットＸＦＲ（従って２５６ビット）を受信する。更に、９つの３２ビットＸＦＲを受信するレーンは、ＬＴＰシーケンス状態に依存する。以下に更に詳細に検討されるように、格納済みの１レーン当たりのＣＲＣは、ＣＲＣ不一致を有するＬＴＰの１ＸＦＲグループ当たりのＣＲＣおよび同一のＬＴＰの次の再送信を比較することにより、レーンまたは複数のレーンのどれがエラーを生成したかを検出するべく、用いられる。元のＬＴＰ送信に用いられるＬＴＰシーケンスは、再送信済みＬＴＰに用いられるＬＴＰシーケンスとは異なることがあり、１ＸＦＲグループ当たりのＣＲＣが使用される。１ＸＲＦグループ当たりのＣＲＣは、同一の複数のＸＦＲによる算出された複数のＣＲＣの比較をもたらすが、１レーン当たりのＣＲＣスキームが用いられた場合、これは、４つのレーン（同一の場合の２５％の可能性）または２つのレーン（同一の場合の５０％の可能性）を用いてリンクを動作させるときの同一のＸＦＲによるＣＲＣ計算をもたらすか、またはもたらさないことがある。
【０１０４】
図２４に示されるように、１ＸＦＲグループ当たりのＣＲＣは、ＣＲＣ−Ｇ０、ＣＲＣ−Ｇ１、ＣＲＣ−Ｇ２およびＣＲＣ−Ｇ３とラベリングされている。これらのＣＲＣが算出される転送は、レーンおよびＬＴＰシーケンス状態の双方に依存する。例えば、第１のＬＴＰシーケンス状態については、ＣＲＣ−Ｇ０は、レーン０において受信された９つのＸＦＲ０、４、８、１２、１６、２０、２４、２８および３２から算出されるが、ＣＲＣ−Ｇ１、ＣＲＣ−Ｇ２およびＣＲＣ−Ｇ３について算出された複数の値は、レーン１、２および３に各々図示された８つのＸＦＲに依存する。第２のＬＴＰシーケンス状態下では、ＣＲＣ−Ｇ０は、レーン１における９つのＸＦＲから算出されるが、ＣＲＣ−Ｇ１、ＣＲＣ−Ｇ２およびＣＲＣ−Ｇ３について算出された複数の値は、レーン２、３および１に各々図示された８つのＸＦＲに依存する。示されるように、類似手法は、第３および第４のＬＴＰシーケンス状態の双方に用いられる。
【０１０５】
図１８Ａに図示されるタイムフレームの間、ＬＴＰシーケンス状態は１であり、従ってＣＲＣ−Ｇ０、ＣＲＣ−Ｇ１、ＣＲＣ−Ｇ２およびＣＲＣ−Ｇ３は、レーン０、１、２および３におけるＬＴＰ４について受信されたデータから各々算出される。１ＸＦＲグループＣＲＣ−Ｇ０、ＣＲＣ−Ｇ１、ＣＲＣ−Ｇ２およびＣＲＣ−Ｇ３当たりのＬＴＰの値の例示的算出は、図１８Ａおよび２５に示され、各々、４２８、５５６、２０８および８０４である。これらの１ＸＦＲグループ当たりのＣＲＣ値は、レジスタＣＲＣ−ＧＯ、ＣＲＣ−Ｇ１、ＣＲＣ−Ｇ２およびＣＲＣ−Ｇ３に格納される。
【０１０６】
図２２Ｂのフローチャート２２００ｂにおけるブロック２２１８を続けると、再送信要求（ＲｅｔｒｙＲｅｑ  ＬＴＰ１８１２）は、レシーバからトランスミッタへと返され、ＮｘｔＲｘＬＴＰポインタ１８１０により現在の値に対する不良ＬＴＰを識別する。一実施形態において、ＲｅｔｒｙＲｅｑ  ＬＴＰのシーケンシャルなペアが送信されるが、別の実施形態においては、１つのＲｅｔｒＲｅｑ  ＬＴＰが送信される。この例において、ＮｘｔＲｘＬＴＰポインタの値は、再生バッファのスロット４を指し、これにより、不良ＬＴＰであるＬＴＰ４のデータを格納する。ＲｅｔｒｙＲｅｑ  ＬＴＰを受信することに応答して始動される再生モード時のトランスミッタ側の複数のオペレーションの詳細は、図２２Ｃのフローチャート２２００ｃに示されている。
【０１０７】
また、ブロック２２１６において不良ＬＴＰを検出すると、ＬＴＰ受信モードは、ブロック２２２０の「ＬＴＰトス」に設定され、不良ＬＴＰを含む、トス（破棄）される複数の受信済みＬＴＰをもたらす。ＬＴＰトスモードは、レシーバ状態図２３５０において、ＬＴＡ．ＲｘＴｏｓｓｉｎｇ状態として図示されている。レシーバはＬＴＰトスモードで操作される間、複数のＬＴＰが受信され、１レーン当たりのＣＲＣが算出され、レジスタが更新され、ＬＴＰ  ＣＲＣエラーチェックが実行されて複数のシーケンシャルＬＴＰ  ＣＲＣエラーが検出され、複数のＬＴＰが破棄される。これらのオペレーションは、ブロック２２２２においてＬＴＰを受信することで開始するループ状の形で実行される。上記のように、ブロック２２０６および２２０８の複数のオペレーションが実行され、その後、決定ブロック２２２４において、受信済みＬＴＰがＣＲＣエラー（Ｔｘ  ＣＲＣおよびＲｘ  ＣＲＣの不一致）を有するか否かが判断される。レシーバは、ＬＴＰトスモードで操作されるが、ロジックは、複数のシーケンシャルＬＴＰ  ＣＲＣエラーの発生をチェックするように構成される。例えば、入力ＬＴＰトスモード後の第１の受信済みＬＴＰがエラーを有する場合、複数のシーケンシャルエラーが生じる。複数のシーケンシャルエラーを検出するための判断は、決定ブロック２２２６により図示され、ロジックは、決定ブロック２２２４に対する応答が「はい」の場合に進む。更に、合計のＬＴＰ  ＣＲＣエラーカウントは、ブロック２２２５においてインクリメントされる。（通常モードまたはトスモードにあるか否かに関係なく、合計ＬＴＰ  ＣＲＣエラーカウントは、各ＬＴＣ  ＣＲＣエラーの検出に応答してインクリメントされることにも留意されたい）。.
【０１０８】
ＣＲＣは、パケット、フレーム等、複数の送信済みデータ単位におけるエラーを検出するように構成されたデータ整合性チェックである。ＣＲＣの数学的定式化は、ＣＲＣが複数のビット送信エラーを検出するように選択され、デジタルデータのバイナリの性質を生かし、複数のＣＲＣがバイナリ量を介して迅速に算出されることを可能にする。しかし、ＣＲＣは１００％フェールセーフではない。ＣＲＣチェックは、ビットエラーの数がＣＲＣのハミング距離に等しいか、またはこれを超える場合に、複数のエラーを検出できない可能性がある。複数のネットワークファブリックにおいて用いられるＣＲＣのハミング距離は通常、４であり、エラーが未検出のままになる可能性（極めて低い確率）を開く、少なくとも４ビットのエラーを有することを意味する。複数の未検出リンクエラーは、「偽のパケット受け入れ」と呼ばれるものをもたらし、複数のエラーを有するパケットがＣＲＣチェックを（偽って）通り抜け、従って更なる処理が受け入れられることを意味する。これらの未検出エラーは、パケットサイレントデータの破損をもたらす。
【０１０９】
ＬＴＰは、およそ１０００ビットのサイズである。所与の平均ビットエラーレート（ＢＥＲ）において、検出が見落とされる確率は、エラーが複数のＬＴＰ全体で時間において分散された、均一な複数のエラーパターンに対する１つのリンク転送パケット内で、エラーが相関付けられ、バースト（４またはそれより大きい）で生じた場合、より高くなる。
【０１１０】
ネットワークファブリックリンクは、非常に低いが、ゼロではないＢＥＲを設計するように提供されている。リンク電力を低減するという要望により、より高いＢＥＲを可能にする動機が提供される。ＢＥＲは、電力が低減されれば向上する。ＢＥＲが向上すると、見落とされるエラーの検出の確率が向上する。いくつかの点で、この確率は受け入れられない程に高い。ファブリック内の多くのリンク全体におけるＢＥＲは、均一でない。通常、リンクは複数のレーンから構成され、ＢＥＲは、所与のリンク内の複数のレーン全体で大きく異なり得る。従来の手法の下で、ファブリック管理ソフトウェアがいくつかの閾値ＢＥＲで動作するリンクを検出する場合、ファブリック管理ソフトウェアは、データ破損の受け入れられない程に高い確率を回避するべく、リンクをファブリックから除去せざるをえない。これは、リンク内のエラー分散について知ることなく実行され、複数のエラーが相関付けられていると想定する控えめな小さいＢＥＲ閾値を用いざるを得ない。更に、複数のリンクのＢＥＲは、長い期間にドリフトおよび／または劣化し、受け入れられない程に高くなり得る。ファブリックマネージャは、常に全てのリンクをリアルタイムで継続的に監視できるわけではない。結果として、リンクが高過ぎるＢＥＲで動作していることを検出するにはいくらかの時間がかかることがある。この時間中に、ファブリックがデータ破損の可能性に晒される。
【０１１１】
密接して配置された複数のビットエラーの１つのチェック法は、決定ブロック２２２４におけるＬＴＰ  ＣＲＣエラーチェック、および決定ブロック２２２６におけるシーケンシャルＬＴＰ  ＣＲＣエラーチェックを用いることによるものである。少なくとも１つのエラーが検出されていることを識別するべく、複数のＣＲＣが用いられ得るが、これらは、どのくらい多くのエラーが存在するかを識別しない。しかし、シーケンシャルＬＴＰ  ＣＲＣエラーは、少なくとも２つのエラーがシーケンシャルなＬＴＰに存在することを示す。一実施形態において、シーケンシャルＬＴＰ  ＣＲＣエラーの検出に応答して、ＲｅｔｒａｉｎＲｅｑ  ＬＴＰのペアは、ブロック２２２８におけるトランスミッタに送信され、終了ブロック２２３２により図示された、終了してリンクをリトレインするフローチャートロジック、およびトランスミッタ状態マシン２３００におけるＲｃｖＲｅｔｒａｉｎＲｅｑをもたらす。一実施形態において、このリトレインは、リンクを初期化または再初期化するときに使用されるリンクの（リ）トレインオペレーション程複雑ではない軽量リトレインである。トレインまたは再初期化中に、リンクの通常のアクティブ転送状態がオフラインになり、リンクトレインまたはリンク再初期化が完了して、リンクが通常のアクティブ転送状態に戻るまで、通常の複数のデータ転送オペレーションが、一時的に利用可能でなくなることを意味する。更に、レシーバは、ブロック２２３０においてＲｅｔｒａｉｎＲｅｑ  ＬＴＰを送信したことを示すようにいくつか内部証拠を設定し、リンクのシーケンシャルエラータイマは、ブロック２２３１においてリセットされ、リンクのシーケンシャルエラータイマの使用の更なる詳細は、図２２Ｅに示され、以下に検討される。トレインシーケンスが完了すると、ロジックは、フローチャート２２００ｂのブロック２２１８および２２２０に戻り、再試行要求ＬＴＰが送信側に再度送信され、レシーバにおいて、ＬＴＰトスモードに再び入る。
【０１１２】
ＬＴＰトスモードループは、再試行マーカＬＴＰの受信に応答して終了し、従って、受信済みのＬＴＰがＣＲＣエラーを有しない場合、ロジックは、ＬＴＰトスモードにある受信済みの良好な各ＬＴＰが再試行マーカか否かについて判断する、決定ブロック２２３４に進む。再送信要求を受信する前に、トランスミッタは、複数のＬＴＰを継続してシーケンシャルに送信し、（ある場合には）これらのＬＴＰは、既にインフライト状態の複数のＬＴＰと共に受信される。図２２Ｃのフローチャート２２００ｃのブロック２２３８、２２４０および２２４２に示されるように、再送信要求（ＲｅｔｒｙＲｅｑ  ＬＴＰ）を受信すると、トランスミッタは、再試行マーカを送信し、その後に再生バッファ１８０６における複数のＬＴＰの再送信が続き、再送信要求により返されたＮｘｔＲｘＬＴＰポインタ値により示されたスロットにおけるＬＴＰを開始する。一実施形態において、１つの再試行マーカが送信されるが、別の実施形態において、再試行マーカのペアがシーケンシャルに送信される。一実施形態において、再試行マーカのペアは、送信された順序により識別される（例えば、ＲｅｔｒｙＭｒｋｒ０、ＲｅｔｒｙＭｒｋｒｌ）。一実施形態において、複数の再試行マーカの各々は、Ｎｕｌｌ  ＬＴＰを含む。ＲｅｔｒｙＭｒｋｒＬＴＰ１８１６により図示れた１つの再試行マーカを用いる例は、図１８Ｂに示されている。再試行マーカのペアが送信される場合、第２の再試行マーカ（ＲｅｔｒｙＭｒｋｒｌ）は、ＲｅｔｒｙＭｒｋｒＬＴＰ１８１６（ＲｅｔｒｙＭｒｋｒ０）に直ちに続くことが理解されるであろう。
【０１１３】
図１８Ａの例において、再送信要求を受信する前に複数のＬＴＰをこのように継続して送信することにより、ＬＴＰ５および６（インフライト状態）、７（次に送信された）、ならびにＬＴＰ０および１の順序での受信をもたらす。ＬＴＰ５、６、７、０および１の各々は、再試行マーカではないので、決定ブロック２２３４に対する応答は、各々について「いいえ」であり、ロジックは、ブロック２２３６においてＬＴＰを破棄することに進み、次にブロック２２２２にループバックして次のＬＴＰを受信するが、依然としてＬＴＰトスモードにある。次の複数の受信済みＬＴＰの処理は、再試行マーカＬＴＰが受信され、決定ブロック２２３４において検出されるまで同一の形で継続する。
【０１１４】
図１８Ｂは、ＲｅｔｒｙＭｒｋｒＬＴＰ１８１６が送信され、受信され、受信ポート１８０２により処理され、ＬＴＰ４が再送信され、受信ポート１８０２により受信され、その後、ＬＴＰ５および６（インフライト状態）が再送信され、ＬＴＰ７が再送信されようとしているタイムフレームを図示する。ＬＴＰ４、５および６の各々は、「再生」ＬＴＰを含む。図１８Ｂにも示されるように、スロット０および１における再生バッファデータ（図１８Ａに示される）は、自身の元の送信に関連するＬＴＰ０および１の対応するフリットデータを用いて上書されるが、これはＲｅｔｒｙＲｅｑＬＴＰ１８１２を受信し、ＲｅｔｒｙＭｒｋｒＬＴＰ１８１６を送信する前に行われる。
【０１１５】
上記のように、信頼できる各ＬＴＰ送信に対して、ＬＴＰのデータは、ＮｘｔＴｘＬＴＰポインタ１８０８により識別された再生バッファ１８０６におけるスロットにコピーされ、信頼できる各ＬＴＰについてインクリメントされる。このようにして、ＮｘｔＴｘＬＴＰポインタ１８０８は、ＬＴＰ７、０および１の各々を送信することに関連してインクリメントされる（ＮｘｔＴｘＬＴＰポインタは、７から０へと逆にラッピングすることに留意されたい）。ＬＴＰ１は送信されるが（またはその直前）、送信ポート１８００は、ＲｅｔｒｙＲｅｑＬＴＰ１８１２を受信している。応答して、送信ポート１８００は、ＲｅｔｒｙＭｒｋｒＬＴＰ１８１６（またはＲｅｔｒｙＭｒｋｒｌ  ＬＴＰが後に続く、ＲｅｔｒｙＭｒｋｒ０  ＬＴＰを含む再試行マーカのペア）を戻す。ＲｅｔｒｙＭｒｋｒＬＴＰ１８１６は、Ｎｕｌｌ  ＬＴＰであるので、そのデータコンテンツは再生バッファ１８０６にコピーされず、ＮｘｔＴｘＬＴＰポインタ１８０８は進められない。逆に、信頼できるＬＴＰか、またはＮｕｌｌ  ＬＴＰかに関わらず、Ｔｘ  ＬＴＰシーケンス状態は、送信済みの各ＬＴＰについて進められる。
【０１１６】
決定ブロック２２３４に戻ると、ＲｅｔｒｙＭｒｋｒＬＴＰ１８１６を受信する場合に、それは再試行マーカとして識別され、フローチャートロジックは、図２２Ｄのフローチャート２２００ｄに進む。ブロック２２５２に示されるように、再試行マーカが処理され、レシーバは、次の再生済みの不良ＬＴＰを受信することに備えて、カウントダウン値を設定する。一実施形態において、不良ＬＴＰ再生オフセットは、不良ＬＴＰの再送信が再試行マーカ後の複数のｋ  ＬＴＰを開始することを示すように、再試行マーカに対して使用される。再試行マーカのペアを使用する一実施形態において、不良ＬＴＰ再生オフセットは、第２の再試行マーカに対しては１つ小さくなる。ブロック２２４０にも図示されるように、不良ＬＴＰ再生オフセットを考慮して、レシーバは、ＬＴＰオフセットに基づいて不良ＬＴＰ再生カウントダウンを始動する。これは、ブロック２２５６において不良ＬＴＰの再生を検出するべく用いられる。更に、レシーバは、ブロック２２５４におけるラウンドトリップマーカＬＴＰ（またはラウンドトリップマーカＬＴＰのペア）を返し、ＬＴＰ受信モード（受信状態）は、ブロック２２５４において通常に戻され、フローチャートロジックは、ブロック２２０４に戻り、次パケットを受信する。これは、Ｓｅｎｄ  ＲｎｄＴｒｉｐＭｒｋｒ  Ｐａｉｒ  ｓｔａｔｅにより図示され、レシーバ状態図２３５０のＬｉｎｋＴｒａｎｓｆｅｒＡｃｔｉｖｅ．ｎｏｒｍａｌ状態に戻る。図１８Ｃを参照して後述するように、ラウンドトリップマーカＬＴＰは、再試行マーカＬＴＰに応答して返され、複数の再生バッファＬＴＰが上書され得るか否かに対する判断を促す。
【０１１７】
ＲｅｔｒｙＭｒｋｒＬＴＰ１８１６（またはＲｅｔｒｙＭｒｋｒ０ＬＴＰおよびＲｅｔｒｙＭｒｋｒｌ  ＬＴＰ）を送信した後、複数のＬＴＰの再生（再送信）が始動され、ＲｅｔｒｙＲｅｑＬＴＰ１８１２（この例においてＬＴＰ４）において返されたＮｘｔＲｘＬＴＰポインタにより識別された、不良ＬＴＰの再送信を開始する。トランスミッタが再生モードにある間、送信済みデータは、再生バッファ１８０６に格納されたＬＴＰの再送信を含む。複数の再送信済みＬＴＰは、再生バッファのＦＩＦＯにおける自身の順序に基づいて、送信ポート１８００からシーケンシャルに送信され、ＮｘｔＲｘＬＴＰポインタが指したＬＴＰを開始する。
【０１１８】
再送信済みの各ＬＴＰについては、送信済みデータは、ＬＴＰが初めに送信されたときと同一である。不良ＬＴＰ再生カウントダウン（および再生済みの不良ＬＴＰを受信することに関連する複数のオペレーション）以外は、受信側ロジックは、受信済みＬＴＰデータが初めに送信されたＬＴＰまたは再送信されたＬＴＰに対応するか否かに依存しない。従って、ブロック２２０４、２２０６および２２０８、ならびに決定ブロック２２１０における複数のオペレーションが実行され、１レーン当たりのＣＲＣ計算、受信済みＬＴＰデータを介したＲｘ  ＬＴＰ  ＣＲＣの算出およびＲｘ  ＬＴＰ  ＣＲＣのＴｘ  ＬＴＰ  ＣＲＣとの比較をもたらす。エラーが存在する場合、決定ブロック２２１０における「いいえ」の結果により示されるように、ロジックは、ブロック２２１４に戻り、不規則な再送信済みＬＴＰは、新しい再生シーケンスを始動し、これに基づいて、不良ＬＴＰが再び再送信される。これは本質的に、不良ＬＴＰ４および再生バッファ１８０６からの後続のＬＴＰの再送信に関連して上述した複数のオペレーションを反復する。
【０１１９】
再送信された不良ＬＴＰ４が良好であると推定し、ロジックは、ブロック２２５８へと進む。このブロックにおいて、レジスタＣＲＣ−ＧＯ、ＣＲＣ−Ｇ１、ＣＲＣ−Ｇ２およびＣＲＣ−Ｇ３にすでに格納された１レーン当たりのＣＲＣ値は、再送信済みのＬＴＰ４の各レーンを介して受信されたデータについて算出された１レーン当たりのＣＲＣと比較され、動作するレーンの数に応じて１レーン当たりまたは１ＸＦＲグループ当たりのベースで比較する（１レーンおよび１ＸＦＲグループ当たりの比較は、転送グループの数が同一であり、従って１ＸＦＲグループ当たりの比較が常に実行され得る場合には同等であることに留意されたい）。上記から、１レーン当たりのＣＲＣは、４つのレーンリンクに対して１ＸＦＲグループ当たりのベースで比較される。
【０１２０】
各送信済みＬＴＰのＴｘ  ＬＴＰおよびＲｘ  ＬＴＰシーケンス状態の継続的インクリメントに関連して、ＬＴＰ４が再送信される場合、ＬＴＰが初めに送信されたときのＬＴＰシーケンス状態である１と比較したように、ＬＴＰシーケンス状態は３である。結果として、各レーン全体で送信されたＸＦＲグループは、変更された。レーンとＸＦＲグループのこのリマッピングが図２５に図示され、図１８Ａおよび１８Ｂにおける各レーンを介して送信された複数のＸＦＲを比較することによっても理解され得る。上述のように、ＬＴＰ４が初めに送信されたとき、ＬＴＰシーケンス状態は１であったが、ＬＴＰ４が再送信される場合（図２５の４Ｒにより図示される）、ＬＴＰシーケンス状態は３である。図１８Ｂに戻ると、再送信済みのＬＴＰ４に対する１レーン当たりのＣＲＣは、レーン０、１、２および３について算出され、次に、１ＸＦＲグループ当たりのＣＲＣの比較が、フローチャート２２００ｄのブロック２２５８において実行され、適用可能な場合に、不良レーンは、ブロック２２６０において、不一致の１レーン当たりまたは１ＸＦＲグループ当たりのＣＲＣを識別することにより識別される。図１８Ａおよび１８Ｂの例において、１ＸＦＲグループ当たりのＣＲＣ比較の結果は、ＣＲＣ−ＧＯ、ＣＲＣ−Ｇ１およびＣＲＣ−Ｇ３に対するＣＲＣは一致するが、ＣＲＣ−Ｇ１に対するＣＲＣは一致しないことを示す。これは、レーン２が不規則であることを示す。レーン２は、初めに送信されたときの不規則なＬＴＰ４について、ＣＲＣ−Ｇ１値が算出されたＸＦＲグループに対応するからである。再送信済みＬＴＰ４において検出されたＬＴＰ  ＣＲＣエラーは存在しなかったので、再生済みのＬＴＰ４に対するレーン２を介して送信されたデータにもエラーは（おそらくは）存在しなかったと認められた。ブロック２２６１において、識別された不良レーンに対するエラーカウントがインクリメントされる。レーンが断続的に不規則であるシナリオを考慮されたい。上述のように、決定ブロック２２２６および関連するロジックブロックのシーケンシャルＬＴＰ  ＣＲＣエラーチェックは、リンクを介して送信されたデータにおいて密接して配置されたエラーを検出するための１つのメカニズムである。このメカニズムは、非常に密接して配置されたエラーを検出するが（複数のシーケンシャルなＬＴＰにおけるエラーを必要とする）、どのレーンが不規則であるか、個々のレーンにおけるシーケンシャルエラーがどのくらい頻繁に生じるかを識別することはできない。
【０１２１】
第２のＢＥＲチェックメカニズムの複数の実施形態によれば、１レーン当たりのエラー周波数がモニタリングされ、所与のレーンのエラー周波数（ＢＥＲ）が１レーン当たりのＢＥＲ閾値を超えているか否かを判断する。一実施形態において、これは、（フローチャート２２００ｄおよび２２００ｅに図示される他のオペレーションおよびロジックに関連し、パラレルな形で実行される）１レーン当たりのシーケンシャルエラーカウンタおよびタイマを用いることにより実現される。
【０１２２】
決定ブロック２２６２において、レシーバ状態がレシーバにより始動されたリンクリトレイン状態から生じている否かについて判断される。フローチャート２２００ｂおよび上記のロジックにより示されるように、シーケンシャルＬＴＰ  ＣＲＣエラーの検出は、複数のエラーを検出するレシーバにより始動されたリンクリトレインをもたらす。逆に、１つのＬＴＰ  ＣＲＣエラーは同様に、再試行要求、再試行マーカ受信シーケンスを始動するが、リンクリトレインの始動をもたらさない。再生済みのＬＴＰが良好であり、受信状態がリンクリトレインから生じない（すなわち、１つのＬＴＰ  ＣＲＣエラーのみが検出されている）場合、決定ブロック２２６２に対する応答は「いいえ」であり、ロジックをブロック２２６４に進ませ、ＬＴＰが初めに送信されたＬＴＰであるのと同様に処理される。次に、ロジックは、フローチャート２２００ａに戻り、（レシーバの視点から）初めに送信されたのと同様に、次の再生済みのＬＴＰを処理する。
【０１２３】
ここで、２つのシーケンシャルＬＴＰ  ＣＲＣエラーがレシーバにより検出され、レシーバにより始動されたリンクリトレインをもたらし、決定ブロック２２６２に対する応答が「はい」であり、ブロック２２６６に進むロジックをもたらしたものと仮定されたい。このブロックにおいて、ブロック２２６０において判断された不良レーンに対するシーケンシャルエラーカウンタは、インクリメントされた。決定ブロック２２６８において、レーンに対するシーケンシャルエラーカウントが閾値に到達したか否かについて判断される。一般に、閾値は１、２等の整数である。一実施形態において、閾値は２であり、従って、１つのタイマ期間内の１つのレーンにおける２つのシーケンシャルエラーにより、レーンＢＥＲ閾値の検出が始動される。一実施形態において、応答して、ロジックは、リンクが除去された不良なものとして検出されたレーンを用いて再初期化されるブロック２２７０を終了して進む。結果として、リンクのアクティブなレーンの数は、４つのレーンリンクが３つのアクティブなレーンに減るなど、１つのレーンにより低減される。
【０１２４】
１レーン当たりのシーケンシャルエラーカウントが閾値に到達しない場合、決定ブロック２２６８に対する応答は「いいえ」であり、ロジックはブロック２２０４に進み、通常の受信状態で動作するレシーバおよびなおも再生モードで動作するトランスミッタを用いて次のＬＴＰを受信する。
【０１２５】
上述のように、一実施形態において、タイマスキームが用いられ、１レーン当たりのシーケンシャルエラーの周波数を検出する。図２２Ｅのフローチャート２２００ｅに示されるように、上記から、シーケンシャルな不良ＬＴＰの検出に応答して、ロジックはブロック２２３１に進み、タイマスキームを実装するための１セットのパラレルなオペレーションが始動する。ブロック２２７２において、適用可能な場合にタイマが開始し（第１の時間）、または再起動（リセット）される。決定ブロック２２７４および自体に対するループバックより図示されるように、タイマは、周期的にチェックし、満了したか否かを判断し、または任意選択で、タイマロジックは、満了したことを示すインタラプトまたは他の証拠を生成するように構成され得る。ブロック２２７６に図示されるように、タイマの満了時に、各レーンの不良シーケンシャルエラーカウンタはデクリメントされる。一実施形態において、最小の不良エラーカウントは０であり、従って既に０であるレーンエラーカウントについては、そのカウントはデクリメントされない。
【０１２６】
複数のパラレルな処理の組み合わせは、以下の形で、個々のレーン上の複数のエラーが周波数閾値を超えたことを検出する（例えば、密接して配置されたエラーを示す複数のレーンを識別する）。複数のフローチャートオペレーションがブロック２２５８、２２６０へと進むロジックをもたらし、決定ブロック２２６４の結果が「はい」である度に、不良レーンのシーケンシャルエラーカウントはインクリメントされる。一方、複数のパラレルなタイマのオペレーションを考慮して、タイマが再起動されることなく満了する各時間は、タイマの期間が１レーン当たりのエラーなしで経過したことを示し、従って、各レーンの１レーン当たりのシーケンシャルエラーカウントは、１（〜最小値のゼロ）だけデクリメントされる。一実施形態において、２つがストライクし、レーンがアウトになり、これは、タイマ期間内の２つのシーケンシャルエラーを有するレーンに対応する。
【０１２７】
１つのタイマに加えて、異なる複数の期間および異なる複数の関連カウント閾値にパラレルに、複数のタイマが用いられてもよい。例えば、これは観察される１レーン当たりのオペレーションの長期的視点を可能にするが、より短い１レーン当たりのＢＥＲ閾値の検出も促す。また、期間中に必要とされるシーケンシャルエラーの数の閾値は、変更され得る。
【０１２８】
フローチャート２２００ａ〜ｅにおいて図示される実施形態の下で、不良レーンの除去と組み合わせたリンクの再初期化は、密接して配置された複数のエラーを示すレーンの検出からもたらされる。
【０１２９】
しかし、これは限定を意味しない。シーケンシャルＬＴＰ  ＣＲＣエラーの検出後に終了ブロック２２３２を終了した場合等、他の複数の状態下で、レーンは、リンクの再初期化および／またはリンクのリトレインに関連して除去され得るからである。例えば、リンクが再初期化されると、複数の１レーン当たりのエラーカウンタがチェックされ、エラーカウントがいくつかの閾値を超えたか否かを確認する。超過した場合、当該レーンは不良であるとマーキングされ、リンクがアクティブなオペレーションに戻った場合にアクティブにならない。
【０１３０】
黙示的ＡＣＫを用いる信頼できるＬＴＰ送信の別の態様は、エラーなしで受信された黙示的確認の前に、再生バッファにおけるＬＴＰが上書されないことを保証するメカニズムである。一実施形態において、これは、複数の再試行要求およびラウンドトリップマーカを用いることにより促される。上述のように、いくつかの実施形態において、返信バッファは固定サイズを有し、または複数の固定サイズのうち１つを用いて動作するように設定されるよう、構成され得る。更に、リンクピアのペアは、異なる複数のサイズの複数の再生バッファを使用し得る。
【０１３１】
固定サイズの再生バッファを用いるときに、様々な処理レイテンシを更に考慮して、再生バッファは一般に、リンクのラウンドトリップトラバーサル中に転送され得るＬＴＰの数よりも大きないくつかのＬＴＰを保持するサイズである。これは、図１８Ａおよび１８Ｂに図示される場合であり、再生バッファは８つのスロットを有し、リンクを介したラウンドトリップおよび反対方向のリンク経路を同時にトラバースし得るＬＴＰの数は、およそ６または７ＬＴＰである。結果として、レシーバにおいて検出されたエラーが存在する場合、トランスミッタは、再生バッファにおける不良ＬＴＰのコピーが上書される前に、再試行要求を受信する。
【０１３２】
しかし、実際的な複数の理由から、固定サイズの複数の再生バッファは、場合によっては全てのリンクの長さを処理するサイズではない。リンクの長さが大きくなる程、再試行要求を受信する前に、再生バッファから送信され得るＬＴＰの数は大きくなる。いくつかの時点で、リンクの長さは、再試行要求スキームのみを用いても、再生バッファにおける不良ＬＴＰのコピーが、当該不良ＬＴＰに対する再試行要求を受信する前に上書されないことを保証するものではない。
【０１３３】
これが、ラウンドトリップマーカの使用が適合する場合である。決定ブロック２２４４におけるフローチャート２２００ｃに戻ると、ラウンドトリップマーカを受信することなく、複数のＬＴＰの全ての再生が完了したか否かが判断される。図１８Ｃに図示される構成においても、再生バッファ１８０６には８つのＦＩＦＯスロットが存在するが、リンクの長さは、ある時間に５つのＬＴＰが「ワイヤ上」に存在し得、少なくとも１０のＬＴＰがラウンドトリップトランジットに存在し、および／またはレシーバにおいて処理されていることを意味する。結果として、再生バッファにおける複数のＬＴＰのコピーの全ては、複数のＬＴＰのいずれに対する再試行要求を受信する前に再送信され得、上書される潜在的な不良ＬＴＰのコピーをもたらす。これは、不良ＬＴＰが再送信されることを防止し、再生バッファの目的を覆すであろう。
【０１３４】
このシナリオを受け入れるべく、トランスミッタは、決定ブロック２２４４に示されるように、ラウンドトリップマーカを受信する前に、複数の再生ＬＴＰの終わりに到達したか否かを検出するロジックを含む。本質的に、これは、再生バッファの深さがラウンドトリップの持続期間未満か、またはそれより大きいかを判断する。再生ＬＴＰの終わりに到達したことは、最初に再生されたＬＴＰの開始（ＦＩＦＯスロット）へと再度ラッピングする再生ポインタにより検出される。
【０１３５】
図１８Ｃにおいて、最初に再生されたＬＴＰのスロットはスロット４であり、スロット４、５、６、７、０、１、２および３における複数のＬＴＰは、ラウンドトリップマーカ１８２２ａおよび１８２２ｂのペアの第１のラウンドトリップマーカを受信する前に、シーケンシャルに再送信され、再生ＬＴＰポインタをスロット４に戻す。これは、ラウンドトリップマーカを受信する前に再生ＬＴＰの終わりに到達する例を図示し、ラウンドトリップの持続期間が再生バッファの深さよりも大きいことを示す。これは、決定ブロック２２４４に「はい」の応答をもたらし、ロジックは、トランスミッタのヌルカウンタ（Ｎｕｌｌｃｏｕｎｔ）ｎが整数ｋにリセットされる、ブロック２２４５ａに進む。ブロック２２４６ａ、および「いいえ」の結果でブロック２２４６ａにループバックする決定ブロック２２４８により図示されるように、トランスミッタは、その次に、ラウンドトリップマーカまたは再試行要求が受信されるまで、１または複数のＮｕｌｌ  ＬＴＰをレシーバに送信することに進む。更に、送信済みの各Ｎｕｌｌ  ＬＴＰに対して、Ｎｕｌｌｃｏｕｎｔ  ｎは、１だけインクリメントされる。上述のように、Ｎｕｌｌ  ＬＴＰは信頼できるＬＴＰではなく、従って送信済みＬＴＰのコピーは、再生バッファに追加されない。結果として、再試行要求をもたらす不良ＬＴＰのコピーは、再試行要求を受信する前に上書されないことを保証される。
【０１３６】
ラウンドトリップマーカの受信が決定ブロック２２４８ａにおいて決定されると、図２３Ａにおけるトランスミッタ状態マシン２３００のＬｉｎｋＴｒａｎｓｆｅｒＡｃｔｉｖｅ  ．ｎｏｒｍａｌに戻ることによっても図示されるように、ロジックは、トランスミッタが通常転送モードに戻されるブロック２２５０に進むが、再生バッファの最後に到達すると、どのくらい多くのＮｕｌｌ  ＬＴＰを送信するかを判断するべく、再生バッファを通る各サイクルのＮｕｌｌｃｏｕｎｔ  ｎ値を用いることが達成される。例えば、Ｎｕｌｌｃｏｕｎｔ  ｎが４に到達したと仮定されたい。結果として、再生バッファのＦＩＦＯスロットがスロット７に到達する度に、トランスミッタは４つのＮｕｌｌ  ＬＴＰを送信する。一実施形態において、複数の再試行要求およびラウンドトリップマーカは、最高の優先度を有し、決して先取りされず、従ってＮｕｌｌｃｏｕｎｔ  ｎにより規定されるいくつかのＮｕｌｌ  ＬＴＰの送信を用いることにより、当該不良ＬＴＰに対する再試行要求を受信する前に、不良ＬＴＰのコピーは上書されないことを保証する。選択肢として、Ｎｕｌｌｃｏｕｎｔ  ｎは、ブロック２２４５において値ｋ＞０にリセットされ、ｋの複数の追加のＮｕｌｌ  ＬＴＰが再生バッファを通る各サイクルの最後で送信されるように、安全マージンを提供し得る。Ｎｕｌｌｃｏｕｎｔスキームの固有利点は、（物理リンクの長さには実際的制限が存在し、この制限を超える長さを有するリンクの製造および／または実装が可能でないか、または現実的でないことを認識して）実質的に任意の長さのリンクをサポートするように実装され得ることである。
【０１３７】
決定ブロック２２２４に戻ると、第１のＦＩＦＯスロットに到達する前に、ラウンドトリップマーカが受信された場合、決定ブロック２２４４に対する応答は「いいえ」であり、ロジックは、Ｎｕｌｌｃｏｕｎｔ  ｎが整数ｍにリセットされるブロック２２４５ｂに進む。ブロック２２４６ｂ、および結果が「いいえ」でブロック２２４６ｂにループバックする決定ブロック２２４９により図示されるように、トランスミッタは次に、バッファポインタがラッピングし、その開始スロットに戻り、またはＮｕｌｌｃｏｕｎｔ  ｎがゼロに到達するまで、レシーバに対する複数のＬＴＰの再生の継続に進み、Ｎｕｌｌｃｏｕｎｔ  ｃｏｕｎｔｄｏｗｎはｍで開始し、再送信済みの信頼できる各ＬＴＰについて１だけデクリメントされる。決定ブロック２２４９の「はい」の結果に応答して、ロジックはこのＮｕｌｌｃｏｕｎｔ  ｃｏｕｎｔｄｏｗｎループを終了し、ブロック２２５０に進む。Ｎｕｌｌｃｏｕｎｔ  ｃｏｕｎｔｄｏｗｎを用いると、バッファの深さがより大きいが、ラウンドトリップの持続期間の複数のｍ  ＬＴＰ転送サイクル内である構成のおよそのｍ  ＬＴＰ転送サイクルの安全マージンをもたらす。例えば、バッファの深さが３２スロットであり、ラウンドトリップの持続期間が３０ＬＴＰ転送サイクルに等しく、ｍ＝５であると仮定されたい。この場合、ロジックがカウントダウンループを終了すると、ｍは３になるであろう。これは、再生バッファがその開始地点（スロット０）に再度ラッピングすると、スロット０のＬＴＰに上書きする前に，３つの追加のＮｕｌｌ  ＬＴＰが送信されることを意味する。
【０１３８】
バッファの深さは３２スロットなので、上書される複数の再生バッファスロット間のＬＴＰサイクルの数は３５であるか、またはラウンドトリップの持続期間よりも５だけ大きい。
【０１３９】
不良レーンの検出に応答して、リンクは、低減された数のアクティブなレーンをを有する低下した状態で操作され得る。更に、このリンクの低下した状態は、４つのアクティブなレーンで開始し、第１の不良レーンを検出して不良レーンを除去し、３つのアクティブなレーンを有するリンクオペレーションをもたらし、第２の不良レーンを検出して第２の不良レーンを除去し、２つのアクティブなレーンを有するリンクオペレーションをもたらす等のシーケンスで、リンクが操作され得るように、カスケードであってもよい。このカスケードは、第３の不良レーンの検出を継続し、良好な１つの残余のレーンを介したリンクオペレーションをもたらす。また、１つの送信方向が他の送信方向とは異なる数のアクティブなレーンを用い得るように、リンクが非対称の構成で操作され得ることが留意される。
【０１４０】
図２６は、一実施形態による、３つのアクティブなレーンを用いてリンクを操作するためのＸＦＲグループを図示する。この例において、３つのＸＦＲグループＧＯ、Ｇ１およびＧ２が存在し、対応するＣＲＣはＣＲＣ−ＧＯ、ＣＲＣ−Ｇ１およびＣＲＣ−Ｇ２である。ＬＴＰシーケンスは複数のレーン変更を用いずに反復されるＸＦＲパターンを伴った１つの状態のみを有するので、同一の複数のＸＦＲグループが同一の各レーンを介して送信される。結果として、１レーン当たりのＣＲＣの比較は、１レーン当たりのベースで行われることができ、またはそうでなければ、１ＸＦＲグループ当たりのベースは、ＬＴＰシーケンス状態を考慮しない。３レーンの下で、各レーンにつき、１１の３２ビット転送があり、標準的検出ＬＴＰにより、各レーンを介して送信される３５２ビットをもたらす。一実施形態において、３つのアクティブなレーンで動作している場合に、１６ビットの１レーン当たりのＣＲＣが用いられる。
【０１４１】
図２７は、一実施形態による、２つのアクティブなレーンを用いてリンクを操作するためのＸＦＲグループを図示する。３３の３２ビット転送／ＬＴＰが存在するので、ＬＴＰ送信ストリームのレーン０および１の各々を介して転送されるビットの数は、５１２ビットと５４４ビットとの間で交替する。結果として、１ＸＦＲグループ当たり、１レーン当たりのＣＲＣの比較スキームは、２つのＬＴＰシーケンス状態を用いて実装される。更に、１６ビット／レーンのＣＲＣは、一実施形態において用いられる。
【０１４２】
図２８は、一実施形態による、１つのアクティブなレーンを用いてリンクを操作するためのＸＦＲグループを図示する。ＬＴＰデータが送信される１つのレーンのみが存在するので、不規則であり得るのはそのレーンのみである。結果として、１レーン当たりのＣＲＣ比較を実行する必要はない。
【０１４３】
しかし、２以上のレーンを有するリンクが低下して１つのレーンにおいて動作するレーン低下のシナリオの下で、１レーン当たりのＣＲＣ計算は、なおも１つのレーンについて算出され得る。これは常にに実行される形でハードウェアに実装され得る。この例において、１レーン当たりのＣＲＣ計算は、単に無視される。
【０１４４】
上述のように、本明細書に開示される複数の実施形態の下で、複数のリンクは、複数の明示的ＡＣＫを用いることなく、信頼できるデータ送信をサポートする。ＬＴＰは、リンク全体で送信されるときに失われる可能性はないが（ケーブルが切断される等の出来事がなければ）、エラーを含み得る。黙示的アクノリッジメントスキームは、トランスミッタからレシーバへの、および逆にトランスミッタへのラウンドトリップを完了するのにかかる時間と少なくとも同じくらい長い期間内に、トランスミッタにおいて再試行要求を受信することがないことを利用して、実装されることを想起されたい。再試行要求は、送信済みデータとは異なるセットのレーンを介して送信されるので、１つの再試行要求がエラー（ＣＲＣチェックにより識別された）を有し、従ってトスされ得ることはあり得る。結果として、受信側のリンクインターフェースは、送信側のリンクインターフェースに、不規則なＬＴＰを受信したと通知することを試みている可能性があるが、通知（再試行要求により示される）は、トスされる。これが、複数のＲｅｔｒｙＲｅｑＬＴＰのシーケンシャルペアおよび複数のペアの他のＮｕｌｌ  ＬＴＰ（例えば、ＲｅｔｒｙＭｒｋｒ０、ＲｅｔｒｙＭｒｋｒｌ）の送信が黙示的ＡＣＫスキームを促すように役立つ場合である。
【０１４５】
まず、これらはＮｕｌｌ  ＬＴＰであるので、再生バッファ内に格納されず、従って再送信に利用可能ではない。しかし、Ｎｕｌｌ  ＬＴＰのシーケンシャルペアを送信することにより、２つのイベントのうち１つが、１）エラーないし２つのＮｕｌｌ  ＬＴＰのうち少なくとも１つを首尾よく受信すること、または２）双方のＬＴＰが複数のエラーを有する場合に、これがシーケンシャルなＬＴＰエラーとして検出され、リンクのリトレインをトリガすることをもたらすことが保証される。（リ）トレイン中に、トレインシーケンスは、リンクパートナのトランスミッタおよびレシーバの複数のペアのにより実行され、従って双方向でのリンクの適切な動作は、リンクをアクティブなオペレーションに返す前に検証される。リトレインが完了すると、送信側は（その間、複数のＮｕｌｌ  ＬＴＰを送信する）、再試行マーカを送信した後、新しいＬＴＰの送信を開始する（またはＬＴＰの再生を継続する）前に、受信側からの保証された再試行要求を待つ。別の利点は、複数のＬＴＰのうち少なくとも１つが良好である可能性を向上させる、これらのヌルパケットのペアを送信することである。
【０１４６】
図２９は、プロセッサ２９０６に結合されたファブリックポート２９０４を含み、プロセッサ２９０６が同様にメモリ２９０８に結合された、ホストファブリックインターフェース２９０２を備える例示的な構成を有する、ノード２９００を示す。図１に示されるように、複数のシステムノードは、離散的な１つのノードプラットフォーム１０６、仮想化プラットフォーム１１０、マルチノードプラットフォーム１１６および集積された１つのノードプラットフォーム１２０等により示されるが、これらに限定されない様々な構成を有し得る。一般に、各ノード構成は、少なくとも１つのプロセッサ、メモリ、および図２９に図示される類似の複数のコンポーネントを有する少なくとも１つのＨＦＩを含む。
【０１４７】
以下に検討されるように、ファブリックポート２９０４は、図２９に示されるか、示されない他の回路およびロジックに加えて、図１８Ａ〜１８Ｃに示されるものに類似する構成を有する送信ポート１８００および受信ポート１８０２を含む。送信ポート１８００は、複数の送信ＶＬバッファに分割された送信バッファ（Ｔｂｕｆ）を含む、Ｔｘリンクファブリックサブレイヤ回路およびロジック２９１０、Ｔｘリンク転送サブレイヤ回路およびロジック２９１２、ならびに４つのトランスミッタ２９１６を含む、Ｔｘ  ＰＨＹ回路およびロジック２９１４、ならびにＴｘリンク制御ブロック１８０４を含む。受信ポート１８０２は、複数の受信ＶＬバッファに分割された受信バッファ（Ｒｂｕｆ）を含む、Ｒｘリンクファブリックサブレイヤ回路およびロジック２９１８、Ｒｘリンク転送サブレイヤ回路およびロジック２９２０、ならびに４つのレシーバ２９２４を含むＲｘ  ＰＨＹ回路およびロジック２９２２、ならびにＲｘリンク制御ブロック１８０５を含む。
【０１４８】
Ｔｘリンクファブリックサブレイヤ回路およびロジック２９１０は、本明細書において説明されるリンクファブリックサブレイヤの複数のオペレーションの送信側の態様を実装するように構成される。図２９に図示された送信バッファおよび送信ＶＬバッファに加えて、図示されないこれらのオペレーションを促すための複数のコンポーネントおよびブロックは、イーサネット（登録商標）、インフィニバンド、ネイティブアーキテクチャパケット、仲裁ロジック、およびクレジットマネージャのＬ４カプセル化を実行するように構成されたＬ４カプセル化サブブロックを含む、ファブリックパケットビルドブロックを含む。更に、ＱｏＳオペレーションを促すためのロジックの一部は、リンクファブリックサブレイヤ（やはり図示せず）において実装される。
【０１４９】
Ｔｘリンク転送サブレイヤ回路およびロジック２９１２は、本明細書において説明されるリンク転送サブレイヤの複数のオペレーションの送信側の態様を実装するように構成される。これらは、再試行ロジック、ＬＴＰバンドルブロック、再生バッファ、およびＮｘｔＷｒＬＴＰならびにＮｘｔＴｘＬＴＰポインタ（全て図示せず）を含む、複数のＬＴＰをバンドルし、Ｔｘ  ＰＨＹに対するハンドオフのＬＴＰストリームを準備し、ＲｅｔｒｙＲｅｑｓに応答して複数のＬＴＰの再生をサポートするための様々なコンポーネントおよびロジックブロックを含む。更に、Ｔｘリンク制御ブロック１８０４および複数のＱｏＳ関数の一部は、Ｔｘリンク転送サブレイヤに実装される。
【０１５０】
Ｔｘ  ＰＨＹ回路およびロジック２９１４は、４つのトランスミッタ２９１６およびＴｘリンク制御ブロック１８０４の一部を含む、簡略化された形式で図示されている。一般に、複数のトランスミッタ２９１６は、リンクのＰＨＹレイヤ構成に応じて、電気的または光学的トランスミッタを備え得る。Ｔｘ  ＰＨＹ回路およびロジックブロックが、明確にするために示されない送信側ＰＨＹレイヤの複数のオペレーションを実装するための追加の回路およびロジックを含むこととが、ネットワーキング技術の当業者には理解されるであろう。これは、複数のエラーを低減し、複数の送信特性を向上させる高速の相互接続に関連して実装される様々な特徴を促すべく用いられる、ＰＨＹレイヤにおける様々なサブレイヤを含む。
【０１５１】
Ｒｘリンクファブリックサブレイヤ回路およびロジック２９１８は、本明細書において説明されるリンクファブリックサブレイヤの複数のオペレーションの受信側の複数の態様を実装するように構成される。図示される受信バッファおよび受信ＶＬバッファに加えて、これらのオペレーションを促すための図示されない複数のコンポーネントおよびブロックは、Ｌ４パケットデカブセル化サブブロック、クレジット返却ブロックおよびＱｏＳ受信側ロジックの一部を含む、ファブリックパケット再アセンブルブロックを含む。
【０１５２】
Ｒｘリンク転送サブレイヤ回路およびロジック２９２０は、本明細書において説明されるリンク転送サブレイヤの複数のオペレーションの受信側の複数の態様を実装するように構成される。これらは、図１８Ａ〜１８Ｃに示され、上述したもの等、複数のＬＴＰをアンバンドリングし、ＬＴＰ  ＣＲＣおよび１レーン当たりのＣＲＣエラー、レシーバトスモードおよび関連する複数のオペレーションを、ならびにＱｏＳオペレーションをを検出するための様々なコンポーネントおよびロジックブロックを含む。
【０１５３】
Ｐｘ  ＰＨＹ回路およびロジック２９２２は、４つのレシーバ２９２４およびＲｘリンク制御ブロック１８０５の一部を含む、簡略化された形式で図示されている。一般に、複数のレシーバ２９２４は、リンクのＰＨＹレイヤ構成に応じて、電気的または光学的トランスミッタを備え得、複数のトランスミッタ２９１６からリンクを介して複数のトランスミッタ信号を受信するように構成される。Ｒｘ  ＰＨＹ回路およびロジックブロックが、明確にするために示されない受信側ＰＨＹレイヤの複数のオペレーションを実装するための追加の回路およびロジックを含むこととが、ネットワーキング技術の当業者には理解されるであろう。これは、複数のエラーを低減し、複数の送信特性を向上させる高速の相互接続に関連して実装される様々な特徴を促すべく用いられる、ＰＨＹレイヤにおける様々なサブレイヤを含む。
【０１５４】
更に、ＨＦＩ２９０２は、ＰＣＩｅ（周辺構成要素相互接続）インターフェース（Ｉ／Ｆ）２９３０に結合された送信エンジン２９２６および受信エンジン２９２８を含む。送信エンジン２９２６は、複数のＬ４パケット（例えば、カプセル化済みＴＣＰ／ＩＰパケット、インフィニバンドパケットを含むイーサネット（登録商標）パケット）および／またはファブリックパケットがバッファ処理される送信バッファ２９３２を含む。一実施形態において、送信バッファ２９３２のメモリの全てまたは一部は、プログラムドＩＯ（ＰＩＯ）空間とも呼ばれるメモリマップド入力／出力（ＭＭＩＯ）アドレス空間を備える。
【０１５５】
ＭＭＩＯは、プロセッサ２９０６が例えば、直接メモリアクセスにより複数の送信バッファ２９３２に対する直接の書き込を実行することを可能にする（ＤＭＡ書き込み）。
【０１５６】
受信エンジン２９２８は、複数の受信バッファ２９３４およびＤＭＡエンジン２９３６を含む。複数の受信バッファは、受信ポート１８０２の出力をバッファ処理するべく用いられ、出力は、複数のファブリックパケットおよび／またはＬ４パケットを含み得る。ＤＭＡエンジン２９３６は、ＤＭＡ書き込みを実行し、受信バッファ２９３４からのパケットデータを、メモリ２９０８および／またはプロセッサ２９０６における複数のメモリキャッシュレベルのうち１つにコピーするように構成されている。例えば、いくつかの実施形態において、パケットヘッダデータは、キャッシュにＤＭＡされるが、パケットペイロードデータは、メモリにＤＭＡされる。
【０１５７】
プロセッサ２９０６は、各々が集積されたレベル１およびレベル２（Ｌ１／Ｌ２）のキャッシュを含み、コヒーレントな相互接続２９４２に結合された複数のプロセッサコア２９４０を含む、ＣＰＵ２９３８を含む。また、メモリ２９０８、集積入力／出力ブロック（ＩＩＯ）２９４６および最終レベルキャッシュ（ＬＬＣ）２９４８に結合されたメモリインタフェース２９４４は、コヒーレントあ相互接続２９４２に結合されている。ＩＩＯ２９４６は、複数のプロセッサコア、メモリおよびキャッシュにより使用されるコヒーレントなドメインと、ＰＣＩｅルートコンプレックス（ＲＣ）２９５０および２９５２のペアを含む、複数のＩＯコンポーネントおよびＩＯインターフェースに使用されるコヒーレントでないドメインとの間にインターフェースを提供する。当技術分野において周知のように、ＰＣＩｅ  ＲＣは、ＰＣＩｅインターフェース２９５４、２９５６、２９５８および２９６０により図示される、複数のＰＣＩｅインターフェースおよびＰＣＩｅデバイスが結合され得るＰＣＩｅ相互接続階層の上部に位置する。示されるように、ＰＣＩｅ２９５６は、ＨＦＩ２９０２のＰＣＩｅインターフェース２９３０に結合されている。
【０１５８】
図２９に図示されるもの等、いくつかの実施形態において、プロセッサ２９１２はＳｏＣアーキテクチャを使用する。他の複数の実施形態において、複数のＰＣＩｅ関連コンポーネントが、プロセッサに結合された１０チップセット等に集積されている。なおも他の複数の実施形態において、プロセッサ２９１２および１もしくは複数のＨＦＩ２９０２は、ＳｏＣ２９６２の破線アウトラインにより図示されるもの等のＳｏＣで集積される。図２９に更に図示されるように、複数のソフトウェアアプリケーション２９６４およびファブリックｖＮＩＣ２９６６は、複数のプロセッサコア２９４０のうち１もしくは複数で動作する複数のソフトウェアコンポーネント、またはプロセッサ２９０６上で動作するオペレーティングシステムによりホスティングされる１もしくは複数の仮想マシンを備える。これらのソフトウェアコンポーネントに加えて、（適用可能な複数のキャッシュレベルを含む）メモリ２９０８と、送信エンジン２９２６および受信エンジン２９３４との間の複数のデータ転送を促すようにメモリ２９０８に実装された追加の複数のソフトウェアコンポーネントおよびバッファが存在する。
【０１５９】
一般に、本明細書の図面に図示される回路、ロジックおよび複数のコンポーネントは、離散的チップ、ＳｏＣ、マルチチップモジュール、および複数のネットワークインターフェースをサポート含むネットワーキング／リンクインターフェースチップを含む、様々なタイプの集積回路（例えば、半導体チップ）およびモジュールにも実装され得る。また、本明細書において用いられるように、様々なオペレーションをもたらす回路およびロジックは、エンベデッドロジック、エンベデッドプロセッサ、コントローラ、マイクロエンジンのうち１または複数により、またはそうでなければハードウェア、ソフトウェアおよび／またはファームウェアの任意の組み合わせを用いて、実装され得る。例えば、様々なロジックブロックおよび／または回路により図示される複数のオペレーションをは、ＡＳＩＣ、ＦＰＧＡ、ＩＰブロックライブラリを含むがこれらに限定されない複数のプログラムドロジックゲート等を用い、またはプロセッサ、プロセッサコア、コントローラ、マイクロコントローラ、マイクロエンジン等を含み、１または複数の処理要素において実行される複数のソフトウェアまたはファームウェア命令のうち１または複数によりもたらされ得る。
【０１６０】
更に、本明細書の複数の実施形態における態様は、半導体チップ、ＳｏＣ、マルチチップ、モジュール等のみならず、非一時的機械可読媒体内にも実装され得る。例えば、上記の複数の設計は、複数の半導体デバイスを設計するために用いられる設計ツールに関連する非一時的機械可読媒体上に格納され、および／または機械可読媒体内に埋め込まれ得る。例としては、ＶＨＳＩＣハードウェア記述言語（ＶＨＤＬ）、Ｖｅｒｉｌｏｇ言語もしくはＳＰＩＣＥ言語、または他のハードウェア記述言語でフォーマット化されたネットリストが挙げられる。いくつかのネットリストの例としては、動作レベルのネットリスト、レジスタ転送レベル（ＲＴＬ）のネットリスト、ゲートレベルのネットリストおよびトランジスタレベルのネットリストが挙げられる。また、機械可読媒体としては、ＧＤＳ−ＩＩファイル等のレイアウト情報を有する媒体が挙げられる。
【０１６１】
更に、半導体チップ設計用のネットリストファイルまたは他の機械可読媒体は、上記の教示の複数の方法を実行するシミュレーション環境に用いられ得る。
【０１６２】
いくつかの実施形態は複数の特定の実装を参照して説明されてきたが、いくつかの実施形態により、他の複数の実装が可能である。更に、複数の図面において図示され、および／または、本明細書において説明される複数の要素または他の機能の配置および／または順序は、図示され、説明される特定の態様で配置される必要はない。多くの他の配置が、いくつかの実施形態により可能である。
【０１６３】
図面に示される各システムにおいて、いくつかの場合の複数の要素は、表される複数の要素が異なるおよび／または類似のものであり得ることを示唆すべく、各々同一の参照番号または異なる参照番号を有し得る。しかし、ある要素は、異なる複数の実装を有し、本明細書に示され、または説明されるシステムのいくつかまたは全てとともに動作できるほど十分に柔軟であり得る。図面に示される様々な要素は、同一または異なるものであってもよい。どちらを第１の要素と称し、どちらを第２の要素と称するかは任意的なものである。
【０１６４】
前述の詳細な説明および特許請求の範囲におけるＶ、'ｍ'等のイタリック体の文字は、整数を図示するべく用いられ、特定の文字を用いても、特定の実施形態に限定されるものではない。更に、同一の文字は、別個に整数を表すべく、特許請求の範囲において別個に用いられ、または異なる文字が用いられ得る。更に、詳細な説明における特定の文字を用いても、詳細な説明における同一の主題に関する、特許請求の範囲で用いられる文字と一致し、または一致しないことがある。
【０１６５】
本明細書および特許請求の範囲において、「結合された（ｃｏｕｐｌｅｄ）」および「接続された（ｃｏｎｎｅｃｔｅｄ）」という用語は、それらの派生語と共に用いられ得る。これらの用語が互いに類義語として意図されないことを理解されたい。むしろ、複数の特定の実施形態において、「接続された」は、２またはそれより多い要素が、互いに直接物理的にまたは電気的に接触することを示すべく用いられ得る。「結合された」は、２またはそれより多い要素が、直接物理的にまたは電気的に接触することを意味し得る。しかし、「結合された」は、２またはそれより多い要素が、互いに直接接触しないが、互いに協働又は相互作用することも意味し得る。
【０１６６】
１つの実施形態は、本発明の１つの実装または例である。本明細書における「１つの実施形態」、「一実施形態」、「いくつかの実施形態」、または「他の実施形態」に言及しても、複数の実施形態に関連して説明された特定の機能、構造または特性が、本発明の、少なくともいくつかの実施形態に含まれることを意味するが、全ての実施形態に含まれることは必ずしも意味しない。「１つの実施形態」、「一実施形態」または「いくつかの実施形態」と様々に現れても、全てが必ずしも同一の実施形態を指している訳ではない。
【０１６７】
本明細書において説明され、図示される全ての構成要素、機能、構造、特性等が、特定の実施形態または複数の実施形態に含まれる必要はない。例えば、構成要素、特徴、構造または特性が含まれ「てもよい」、含まれる「場合がある」、含まれ「得る」、含まれ「得た」と本明細書で述べた場合には、特定の当該構成要素、特徴、構造または特性は含まれることを必要としない。明細書または特許請求の範囲で、「１つの（ａ）」または「１つの（ａｎ）」要素に言及した場合には、要素のうち１つのみ存在することを意味しない。明細書または特許請求の範囲が「追加の」要素に言及した場合には、２つ以上の追加の要素が存在することを排除しない。
【０１６８】
本発明の図示された複数の実施形態の上記の説明は、要約に記載されることも含めて、網羅的であるか、または開示される正確な形式に本発明を限定することを意図しない。本発明の具体的な実施形態および例を本明細書に例示的な目的で説明したが、当業者が理解するように、様々な均等の修正形態が本発明の範囲内で可能である。
【０１６９】
これらの修正形態は、上記の詳細な説明に鑑みて本発明に対して行われ得る。以下の特許請求の範囲において用いられる用語は、本明細書および図面に開示される具体的な実施形態に本発明を限定するものと解釈されるべきではない。むしろ、本発明の範囲は、以下の特許請求の範囲の記載によって全体として決定されるべきであり、特許請求の範囲の解釈において確立された原理に従って解釈されるべきである。
【図１】
2018082500.tif 000005
【図２】
2018082500.tif 000006
【図３】
2018082500.tif 000007
【図４】
2018082500.tif 000008
【図５】
2018082500.tif 000009
【図６】
2018082500.tif 000010
【図７】
2018082500.tif 000011
【図８】
2018082500.tif 000012
【図９Ａ】
2018082500.tif 000013
【図９Ｂ】
2018082500.tif 000014
【図１０】
2018082500.tif 000015
【図１１】
2018082500.tif 000016
【図１２】
2018082500.tif 000017
【図１３】
2018082500.tif 000018
【図１４】
2018082500.tif 000019
【図１５】
2018082500.tif 000020
【図１６】
2018082500.tif 000021
【図１７】
2018082500.tif 000022
【図１８Ａ】
2018082500.tif 000023
【図１８Ｂ】
2018082500.tif 000024
【図１８Ｃ】
2018082500.tif 000025
【図１９】
2018082500.tif 000026
【図２０】
2018082500.tif 000027
【図２１】
2018082500.tif 000028
【図２２Ａ】
2018082500.tif 000029
【図２２Ｂ】
2018082500.tif 000030
【図２２Ｃ】
2018082500.tif 000031
【図２２Ｄ】
2018082500.tif 000032
【図２２Ｅ】
2018082500.tif 000033
【図２３Ａ】
2018082500.tif 000034
【図２３Ｂ】
2018082500.tif 000035
【図２４】
2018082500.tif 000036
【図２５】
2018082500.tif 000037
【図２６】
2018082500.tif 000038
【図２７】
2018082500.tif 000039
【図２８】
2018082500.tif 000040
【図２９】
2018082500.tif 000041
【手続補正書】
【提出日】平成30年2月16日(2018.2.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のファブリックパケットのそれぞれを、ヘッドデータ単位を含む第１のデータ単位を含み、後に複数のボディーデータ単位が続き、テールデータ単位を含む最後のデータ単位で終了する、複数の異なるタイプのデータ単位に分割する段階と、
複数のファブリックパケットから分割された複数のデータ単位がインターリーブされた、インターリーブ済みの複数のデータ単位の送信ストリームを生成する段階と、を備え、
各ボディーデータ単位は、ボディーデータ単位であることを示す証拠およびデータペイロードから構成され、各データ単位は、予め定められた固定サイズを有し、各ファブリックパケットは、それぞれのメッセージに対応するデータを搬送する、
方法。
【請求項２】
前記複数のファブリックパケットのそれぞれから分割された前記複数のデータ単位を、前記複数のファブリックパケットのそれぞれに割り当てられた優先度レベルに関連させる段階と、
より高い優先度を有する複数のデータ単位のストリームが、インターリーブ済みの複数のデータ単位の前記送信ストリームにおいてより低い優先度を有する複数のデータ単位のストリームへとインターリーブされるように、ダイナミックファブリックパケット先取りを促す段階と、を更に備える、請求項１に記載の方法。
【請求項３】
連続的に高くなる複数の優先度レベルを有する複数のデータ単位の送信が、複数のレベルのインターリーブを有する入れ子の形で複数のデータ単位の送信を先取りする、複数のレベルのファブリックパケット先取りを促す段階を更に備える、請求項２に記載の方法。
【請求項４】
前記方法は、装置により実行され、
前記装置は、複数の仮想レーン（ＶＬ）バッファに割り当てられたバッファ空間を有する送信バッファを備え、
前記複数のＶＬバッファのそれぞれは、各仮想レーンに関連し、
前記方法は、
前記複数の仮想レーンおよび関連する複数のＶＬバッファのそれぞれに対する優先度レベルを割り当てる段階と、
前記複数のファブリックパケットのそれぞれに割り当てられた仮想レーンを検出する段階と、
前記複数のデータ単位が分割される前記ファブリックパケットに割り当てられた前記仮想レーンに基づいて、ＶＬバッファに複数のデータ単位をバッファ処理する段階と、
第１のＶＬバッファが送信する準備のできた複数のデータ単位をバッファ処理したことを検出する段階と、
前記第１のＶＬバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階と、
前記第１のＶＬバッファから複数のデータ単位を追加する間に、前記第１のＶＬバッファよりも高い優先度レベルを有する第２のＶＬバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出する段階と、
前記第１のＶＬバッファからの複数のデータ単位のプルを停止すること、および、
前記第２のＶＬバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、
前記検出に応答して、前記第２のＶＬバッファからの複数のデータ単位の送信を優先して、前記第１のＶＬバッファにおける複数のデータ単位の送信を先取りする段階と、を更に備える、請求項２または３に記載の方法。
【請求項５】
第１の仮想レーンおよび第３の仮想レーンに対する同一の優先度レベルを割り当てる段階と、
第１のファブリックパケットから分割された複数のデータ単位を、前記第１のＶＬバッファにバッファ処理し、第３のファブリックパケットから分割された複数のデータ単位を、前記第３の仮想レーンに関連する第３のＶＬバッファにバッファ処理する段階と、
前記第１のＶＬバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階と、
前記第１のＶＬバッファからの複数のデータ単位を追加する間に、前記第１のＶＬバッファにおける前記第１のファブリックパケットから分割された複数のデータ単位の利用可能性におけるバブルを検出する段階と、
前記第３のＶＬバッファにおける複数のデータ単位が送信する準備ができていることを検出する段階と、
前記バブルおよび前記第３のＶＬバッファにおける複数のデータ単位が送信する準備ができていることを検出することに応答して、前記第３のＶＬバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、インターリーブ済みの複数のデータ単位の前記送信ストリームにおける前記第３のＶＬバッファの複数のデータ単位の送信をインターリーブする段階と、を更に備える、請求項４に記載の方法。
【請求項６】
インターリーブ済みの前記複数のデータ単位は、少なくとも３つのファブリックパケットから分割されたインターリーブ済みの複数のデータ単位を含み、
インターリーブ済みの前記複数のデータ単位は、少なくとも２つのレベルを有する入れ子の形でインターリーブされる、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記方法は、装置により実行され、
前記装置は、複数の仮想レーン（ＶＬ）バッファの各々に割り当てられたバッファ空間を含む送信バッファを有する送信ポートを備え、
各ＶＬバッファは、各仮想レーンに関連し、
前記方法は、
第１のファブリックパケットから分割された複数のデータ単位を、第１のＶＬバッファにバッファ処理する段階と、
第２のファブリックパケットから分割された複数のデータ単位を第２のＶＬバッファにバッファ処理する段階と、
前記第１のＶＬバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階であって、前記複数のデータ単位は、前記第１のファブリックパケットから分割された前記複数のデータ単位の第１の部分を含む、段階と、
前記第２のＶＬバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、前記第２のファブリックパケットから分割された複数のデータ単位を、前記第１のファブリックパケットとインターリーブする段階であって、前記複数のデータ単位は、前記第２のファブリックパケットから分割された前記複数のデータ単位の少なくとも第１の部分を含む、段階と、を更に備える、
請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記第２のファブリックパケットから分割された最後のデータ単位が追加されるまで、前記第２のＶＬバッファからの複数のデータ単位を複数のデータ単位の前記送信ストリームに継続して追加する段階と、
前記第１のファブリックパケットから分割された前記最後のデータ単位が追加されるまで、前記第１のＶＬバッファからの複数のデータ単位をインターリーブ済みの複数のデータ単位の前記送信ストリームへと追加することを再開する段階と、を更に備える、請求項７に記載の方法。
【請求項９】
第３のファブリックパケットから分割された複数のデータ単位を第３のＶＬバッファにバッファ処理する段階と、
前記第２のファブリックパケットから分割された前記複数のデータ単位の第１の部分がインターリーブ済みの複数のデータ単位の前記送信ストリームに追加された後、前記第３のＶＬバッファからの複数のデータ単位をインターリーブされた複数のデータ単位の前記送信ストリームに追加することにより、前記第３のファブリックパケットから分割された複数のデータ単位を、前記第１のファブリックパケットおよび前記第２のファブリックパケットとインターリーブする段階であって、前記複数のデータ単位は、前記第３のファブリックパケットから分割された前記複数のデータ単位の少なくとも第１の部分を含む、段階と、を更に備え、
請求項７または８に記載の方法。
【請求項１０】
複数のデータ単位がプルされて、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加される前記複数のＶＬバッファの順序を追跡して、少なくとも１つの入れ子のレベルのインターリーブを有するインターリーブ済みの複数のデータ単位の送信ストリームを生成する段階を更に備える、請求項７〜９のいずれか１項に記載の方法。
【請求項１１】
複数のデータ単位がプルされて、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加される前記複数のＶＬバッファの前記順序は、ＶＬスタックおよびＶＬレジスタを用いることにより追跡され、
前記ＶＬレジスタは、複数のデータ単位がプルされる現在のＶＬバッファを識別するＶＬ証拠を格納するべく用いられ、レベルのインターリーブがインターリーブ済みの複数のデータ単位の前記送信ストリームに追加される場合に前記複数のデータ単位がプルされる前記ＶＬバッファの前記ＶＬがＶＬレジスタに格納され、前記ＶＬレジスタにおける前の前記ＶＬ証拠が前記ＶＬスタック上にプッシュされ、前記レベルのインターリーブのインターリーブが完了すると、前記ＶＬスタック上の前記ＶＬ証拠は、前記ＶＬレジスタへとポップされる、請求項１０に記載の方法。
【請求項１２】
ＶＬマーカの後の複数のデータ単位に関連する仮想レーンを識別する証拠の使用を含む、前記ＶＬマーカを含む制御データ単位を生成する段階と、
前記ＶＬマーカをインターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階と、を更に備え、
前記ＶＬレジスタは、前記ＶＬマーカの証拠により更新され、更新されるその前の前記ＶＬレジスタの証拠は、前記ＶＬスタックにプッシュされる、請求項１１に記載の方法。
【請求項１３】
前記ＶＬマーカの証拠が前記スタック内にあるか否かを検出する段階と、
前記ＶＬマーカの証拠が前記スタック内にある場合に、前記ＶＬマーカの証拠を前記スタックからプルする段階と、を更に含む、請求項１２に記載の方法。
【請求項１４】
複数のデータ単位の複数のグループは、固定数のデータ単位を含む複数のリンクパケットにバンドルされ、
各リンクパケットは、１つのリンク転送を含む寿命を有する、請求項１〜１３のいずれか１項に記載の方法。
【請求項１５】
受信ポートおよび受信バッファを備えた装置により実行される方法であって、
前記受信バッファにおけるバッファ空間は、複数の仮想レーン（ＶＬ）バッファに対して割り当てられ、
各ＶＬバッファは、それぞれの仮想レーンに対して割り当てられ、
前記方法は、
インターリーブ済みの複数のデータ単位の送信済みのストリームを受信する段階であって、複数のデータ単位のそれぞれは、関連するファブリックパケットからのデータの分割された一部を含み、各ファブリックパケットは、ヘッドデータ単位を含む第１のデータ単位を含み、後に複数のボディーデータ単位が続き、テールデータ単位を含む最後のデータ単位で終了する、複数の異なるタイプのデータ単位に分割され、各ボディーデータ単位は、ボディーデータ単位であることを示す証拠およびデータペイロードから構成され、各データ単位は、予め定められた固定サイズを有し、各ファブリックパケットは、仮想レーンに関連する、段階と、
インターリーブ済みの複数のデータ単位の前記送信済みのストリームにおける複数のデータ単位の各グループに関連する仮想レーンを判断し、複数のデータ単位の当該グループが関連する前記仮想レーンに対して割り当てられた前記ＶＬバッファに、複数のデータ単位の各グループに対する複数のデータ単位をバッファ処理することにより、インターリーブ済みの複数のデータ単位の送信済みの前記ストリームから複数のデータ単位を分離して、同一のファブリックパケットから互いに分割された複数のデータ単位を、受信バッファにバッファ処理する段階とを備える、
方法。
【請求項１６】
各データ単位のタイプを検出する段階と、
第１の仮想レーンに関連するヘッドデータ単位を検出することにより、複数のデータ単位の第１のグループの第１のデータ単位を検出する段階と、
前記第１の仮想レーンに関連する第１のＶＬバッファに複数のデータ単位の前記第１のグループの複数のデータ単位をバッファ処理する段階と、
前記第１の仮想レーンに関連するテール単位を受信する前に、第２の仮想レーンに関連するヘッドデータ単位が受信されたことを検出することにより、複数のデータ単位のインターリーブ済みのグループの第１のデータ単位を検出する段階と、
前記第２の仮想レーンに関連する第２のＶＬバッファにおける複数のデータ単位の前記インターリーブ済みのグループの複数のデータ単位をバッファする段階と、
前記第２の仮想レーンに関連するテール単位を検出することにより、複数のデータ単位の前記インターリーブ済みのグループの終了を検出する段階と、
前記第２の仮想レーンに関連する前記テール単位の後の前記データ単位を、複数のデータ単位の次のグループの前記第１のデータ単位を規定するものとして検出する段階と、
複数のデータ単位の前記次のグループの前記第１のデータ単位がヘッドデータ単位、本体データ単位、またはテールデータ単位であるかに基づいて、複数のデータ単位の前記次のグループの前記複数のデータ単位に関連する仮想レーンを決定する段階と、を更に有する、請求項１５に記載の方法。
【請求項１７】
複数のデータ単位の前記インターリーブ済みの複数のグループは、少なくとも３つのファブリックパケットから分割された複数のデータ単位の複数のグループを含み、
複数のデータ単位の前記インターリーブ済みの複数のグループは、少なくとも２つのレベルを有する入れ子の形でインターリーブされる、請求項１５または１６に記載の方法。
【請求項１８】
複数のデータ単位の送信済みの前記ストリームにおいて受信されたときのデータの複数のグループに関連する前記複数の仮想レーンの順序を追跡する段階と、
複数のデータ単位の各グループにおけるどの複数のＶＬバッファデータ単位がバッファ処理されるべきかを決定するべく、追跡された前記順序を使用する段階と、を更に有する、請求項１７に記載の方法。
【請求項１９】
前記複数の仮想レーンの前記順序は、ＶＬスタックおよびＶＬレジスタを用いることにより追跡され、
前記ＶＬレジスタは、現在の複数のＶＬバッファデータ単位がバッファ処理されていることを識別するＶＬ証拠を格納するべく用いられ、
新しいレベルのインターリーブがインターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおいて検出された場合、複数のデータ単位のインターリーブ済みの前記グループに関連する前記仮想レーンは、前記ＶＬレジスタに格納され、前記ＶＬ証拠は、前記ＶＬスタックにプッシュされ、
該新しいレベルのインターリーブが完了すると、前記スタック上の前記ＶＬ証拠は、前記ＶＬレジスタへとポップされる、請求項１８に記載の方法。
【請求項２０】
前記装置は、送信ポートを更に備え、
前記方法は、
ＶＬマーカの後の複数のデータ単位に関連する仮想レーンを識別する証拠の使用を含む、前記ＶＬマーカを含むインターリーブされた複数のデータ単位の送信済みの前記ストリームにおいて制御データ単位を検出する段階と、
前記ＶＬマーカの証拠により前記ＶＬレジスタを更新する段階と、
更新された前記ＶＬレジスタの証拠を前記ＶＬスタックにプッシュする段階と、を有する請求項１９に記載の方法。
【請求項２１】
前記ＶＬマーカの証拠が前記スタック内にあるか否かを検出する段階と、
前記ＶＬマーカの証拠が前記スタック内にある場合に、前記ＶＬマーカの証拠を前記スタックからプルする段階と、を更に含む、請求項２０に記載の方法。
【請求項２２】
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のシーケンシャルなデータ単位の複数のグループは、固定数のデータ単位を含む複数のリンクパケットにバンドルされ、
前記複数のリンクパケットの一部は、少なくとも２つのファブリックパケットからの複数のデータ単位を含み、
各リンクパケットは、１つのリンク転送の寿命を有する、請求項１５〜２１のいずれか１項に記載の方法。
【請求項２３】
リンクインターフェースピアに通信可能に結合されるリンクインターフェースを備える装置により実行される方法であって、
前記方法は、
複数のファブリックパケットのそれぞれを、ヘッドデータ単位を含む第１のデータ単位を含み、後に複数のボディーデータ単位が続き、テールデータ単位を含む最後のデータ単位で終了する、複数の異なるタイプのデータ単位に分割する段階であって、各ボディーデータ単位は、ボディーデータ単位であることを示す証拠およびデータペイロードから構成され、各データ単位は、予め定められた固定サイズを有し、各ファブリックパケットは、それぞれのメッセージに対応するデータを搬送する、段階と、
複数のファブリックパケットから分割された複数のデータ単位がインターリーブされる、インターリーブ済みの複数のデータ単位の送信ストリームを生成する段階と、
前記リンクインターフェースピアに向かうリンクにアウトバウンドされたインターリーブ済みの複数のデータ単位の前記送信ストリームを送信する段階と、
前記リンクインターフェースピアから送信されたインターリーブ済みの複数のデータ単位の送信済みのストリームを受信する段階であって、複数のデータ単位のぞれぞれは、関連するファブリックパケットからのデータの分割された一部を含み、インターリーブ済みの複数のデータ単位の送信済みの前記ストリームは、送信済みの前記ストリームにおいてインターリーブされる複数のデータ単位を含む、段階と、
複数のデータ単位を、インターリーブ済みの複数のデータ単位の送信済みの前記ストリームから分離し、受信バッファに同一のファブリックパケットから互いに分割された複数のデータ単位をバッファ処理する段階と、を有する、
方法。
【請求項２４】
インターリーブ済みの前記複数のデータ単位の前記送信ストリームにおけるインターリーブ済みの複数のデータ単位は、少なくとも３つのファブリックパケットから分割されたインターリーブ済みの複数のデータ単位を含み、
インターリーブ済みの複数のデータ単位の前記送信ストリームは、少なくとも２つのレベルを有する入れ子の形でインターリーブされる、請求項２３に記載の方法。
【請求項２５】
複数のファブリックパケットのそれぞれから分割された前記複数のデータ単位を、前記ファブリックパケットに割り当てられた優先度レベルに関連させる段階と、
より高い優先度を有する複数のデータ単位のストリームが、インターリーブ済みの複数のデータ単位の前記送信ストリームにおいてより低い優先度を有する複数のデータ単位のストリームへとインターリーブされるように、より高い優先度レベルを有する複数のデータ単位の送信がより低い優先度レベルを有する複数のデータ単位の送信を先取りする、ファブリックパケット先取りを促す段階と、
連続的に高くなる優先度レベルを有する複数のデータ単位の送信が、複数のレベルのインターリーブを有する入れ子の形で複数のデータ単位の送信を先取りする、複数のレベルのファブリックパケット先取りを促す段階と、を更に備える、請求項２３または２４に記載の方法。
【請求項２６】
前記リンクインターフェースは、複数の仮想レーン（ＶＬ）ファーストインファーストアウト（ＦＩＦＯ）バッファの各々に割り当てられたバッファ空間を有する送信バッファを含み、
各ＶＬ  ＦＩＦＯバッファは、各仮想レーンに関連し、
前記方法は、
複数のそれぞれの仮想レーンおよび関連するＶＬ  ＦＩＦＯバッファに対する優先度レベルを割り当てる段階と、
複数のそれぞれのファブリックパケットに割り当てられた仮想レーンを検出する段階と、
前記複数のデータ単位が分割される前記ファブリックパケットに割り当てられた前記仮想レーンに基いて、複数のデータ単位をＶＬ  ＦＩＦＯバッファにバッファ処理する段階と、
第１のＶＬ  ＦＩＦＯバッファが送信する準備のできた複数のデータ単位をバッファ処理したことを検出する段階と、
前記第１のＶＬ  ＦＩＦＯバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、複数のデータ単位の送信された前記ストリームに追加する段階と、
前記第１のＶＬ  ＦＩＦＯバッファから複数のデータ単位を追加する間に、前記第１のＶＬ  ＦＩＦＯバッファよりも高い優先度レベルを有する第２のＶＬ  ＦＩＦＯバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出する段階と、
前記第１のＶＬ  ＦＩＦＯバッファからの複数のデータ単位のプルを停止し、
前記第２のＶＬ  ＦＩＦＯバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、
前記検出に応答して、前記第２のＶＬ  ＦＩＦＯバッファからの複数のデータ単位の送信のために、前記第１のＶＬ  ＦＩＦＯバッファにおける複数のデータ単位の送信を先取りする段階と、を更に備える、請求項２５に記載の方法。
【請求項２７】
前記リンクインターフェースは、複数の仮想レーン（ＶＬ）ファーストインファーストアウト（ＦＩＦＯ）バッファに割り当てられたバッファ空間を有する送信バッファを含み、
各ＶＬ  ＦＩＦＯバッファは、各仮想レーンに関連し、
前記方法は、
第１のファブリックパケットから分割された複数のデータ単位を、第１のＶＬ  ＦＩＦＯバッファにバッファ処理する段階と、
第２のファブリックパケットから分割された複数のデータ単位を、第２のＶＬ  ＦＩＦＯバッファにバッファ処理する段階と、
前記第１のＶＬ  ＦＩＦＯバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階であって、前記複数のデータ単位は、前記第１のファブリックパケットから分割された前記複数のデータ単位の第１の部分を含む、段階と、
前記第２のＶＬ  ＦＩＦＯバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、前記第１のファブリックパケットと前記第２のファブリックパケットから分割された複数のデータ単位をインターリーブする段階であって、前記複数のデータ単位は、前記第２のファブリックパケットから分割された前記複数のデータ単位の少なくとも第１の部分を含む、段階と、を更に備える、
請求項２３〜２６のいずれか１項に記載の方法。
【請求項２８】
前記受信バッファにおけるバッファ空間は、複数の仮想レーン（ＶＬ）ファーストインファーストアウト（ＦＩＦＯ）バッファに対して割り当てられ、
各ＶＬ  ＦＩＦＯバッファは、各仮想レーンに対して割り当てられ、
前記方法は、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のデータ単位に関連する仮想レーンを決定する段階と、
前記複数のデータ単位が関連する前記仮想レーンに対して割り当てられた前記ＶＬ  ＦＩＦＯバッファに、複数のデータ単位をバッファ処理する段階と、を更に備える、請求項２３〜２７のいずれか１項に記載の方法。
【請求項２９】
前記インターリーブ済みの複数のデータ単位は、少なくとも３つのファブリックパケットから分割された複数のデータ単位を含み、
前記インターリーブ済みの前記複数のデータ単位は、少なくとも２つのレベルを有する入れ子の形でインターリーブされ、
前記方法は、
複数のデータ単位の送信済みの前記ストリームにおいて受信されたときの複数のデータ単位に関連する前記複数の仮想レーンの順序を追跡する段階と、
どの複数のＶＬ  ＦＩＦＯバッファデータ単位がバッファ処理されるべきかを決定するべく、追跡された前記順序を使用する段階と、を更に有する、請求項２８に記載の方法。
【請求項３０】
前記装置は、前記リンクインターフェースが集積されるホストファブリックインターフェースを有するホストインターフェースチップを備え、
前記ホストファブリックインターフェースは、
送信ポートに結合され、少なくとも１つの送信バッファを含む送信エンジンと、
受信ポートに結合され、少なくとも１つの受信バッファを含む受信エンジンと、
前記送信エンジンおよび前記受信エンジンの各々に結合された周辺構成要素相互接続エクスプレス（ＰＣＩｅ）インターフェースとを更に含む、請求項２３〜２９のいずれか１項に記載の方法。
【請求項３１】
前記装置は、システムオンチップ（ＳｏＣ）を備え、
前記システムオンチップは、
送信ポートに結合され、少なくとも１つの送信バッファを含む送信エンジン、
受信ポートに結合され、少なくとも１つの受信バッファを含む受信エンジン、および
前記送信エンジンおよび前記受信エンジンの各々に結合された周辺構成要素相互接続エクスプレス（ＰＣＩｅ）インターフェースを有し、前記リンクインターフェースが集積されるホストファブリックインターフェースと、
前記ホストファブリックインターフェース上でＰＣＩｅインターフェースに結合された前記ＰＣＩｅインターフェースを含むプロセッサとを有する、請求項２３〜３０のいずれか１項に記載の方法。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１６９
【補正方法】変更
【補正の内容】
【０１６９】
これらの修正形態は、上記の詳細な説明に鑑みて本発明に対して行われ得る。以下の特許請求の範囲において用いられる用語は、本明細書および図面に開示される具体的な実施形態に本発明を限定するものと解釈されるべきではない。むしろ、本発明の範囲は、以下の特許請求の範囲の記載によって全体として決定されるべきであり、特許請求の範囲の解釈において確立された原理に従って解釈されるべきである。
本実施形態の例を下記の各項目として示す。
［項目１］
複数のファブリックパケットの各々を複数のデータ単位に分割し、
複数のファブリックパケットから分割された複数のデータ単位の複数のグループがインターリーブされる、インターリーブ済みの複数のデータ単位の送信ストリームを生成し、
リンクにアウトバウンドされたインターリーブ済みの複数のデータ単位の前記送信ストリームを送信する回路およびロジックを有する送信ポートを備える、装置。
［項目２］
前記送信ポートは、
各ファブリックパケットから分割された前記複数のデータ単位を、前記ファブリックパケットに割り当てられた優先度レベルに関連させ、
より高い優先度を有する複数のデータ単位のストリームが、インターリーブ済みの複数のデータ単位の前記送信ストリームにおいてより低い優先度を有する複数のデータ単位のストリームへとインターリーブされるように、より高い優先度レベルを有する複数のデータ単位の送信がより低い優先度レベルを有する複数のデータ単位の送信を先取りする、ファブリックパケット先取りを促す、回路およびロジックを更に含む、項目１に記載の装置。
［項目３］
前記送信ポートは、
連続的により高い複数の優先度レベルを有する複数のデータ単位の送信が、複数のレベルのインターリーブを有する入れ子の形で複数のデータ単位の送信を先取りする、複数のレベルのファブリックパケット先取りを促す回路およびロジックを更に備える、項目２に記載の装置。
［項目４］
前記送信ポートは、複数の仮想レーン（ＶＬ）バッファの各々に割り当てられたバッファ空間を有する送信バッファを更に含み、
各ＶＬバッファは、各仮想レーンに関連し、
前記送信ポートは、
各仮想レーンおよび関連するＶＬバッファに対する優先度レベルを割り当て、
各ファブリックパケットに割り当てられた仮想レーンを検出し、
前記複数のデータ単位が分割される前記ファブリックパケットに割り当てられた前記仮想レーンに基いて、ＶＬバッファに複数のデータ単位をバッファ処理し、
第１のＶＬバッファが送信する準備のできた複数のデータ単位をバッファ処理したことを検出し、
前記第１のＶＬバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加し、
前記第１のＶＬバッファから複数のデータ単位を追加する間に、前記第１のＶＬバッファよりも高い優先度レベルを有する第２のＶＬバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出し、
前記第１のＶＬバッファからの複数のデータ単位のプルを停止し、
前記第２のＶＬバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、
前記検出に応答して、前記第２のＶＬバッファからの複数のデータ単位の送信を優先して、前記第１のＶＬバッファにおける複数のデータ単位の送信を先取りする回路およびロジックを更に備える、項目２に記載の装置。
［項目５］
前記送信ポートは、
第１の仮想レーンおよび第３の仮想レーンに対する同一の優先度レベルを割り当て、
前記第１のＶＬバッファにおける第１のファブリックパケットから分割された複数のデータ単位をバッファ処理し、第３のファブリックパケットから分割された複数のデータ単位を、前記第３の仮想レーンに関連する第３のＶＬバッファにバッファ処理し、
前記第１のＶＬバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加し、
前記第１のＶＬバッファからの複数のデータ単位を追加する間に、前記第１のＶＬバッファにおける前記第１のファブリックパケットから分割された複数のデータ単位の利用可能性におけるバブルを検出し、
前記第３のＶＬバッファにおける複数のデータ単位が送信する準備ができていることを検出し、
前記第３のＶＬバッファにおける前記バブルおよび複数のデータ単位が送信する準備ができていることを検出することに応答して、前記第３のＶＬバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、インターリーブ済みの複数のデータ単位の前記送信ストリームにおける前記第３のＶＬバッファの複数のデータ単位の送信をインターリーブする回路およびロジックを更に備える、項目４に記載の装置。
［項目６］
インターリーブ済みの前記複数のデータ単位は、少なくとも３つのファブリックパケットから分割されたインターリーブ済みの複数のデータ単位を含み、
インターリーブ済みの前記複数のデータ単位は、少なくとも２つのレベルを有する入れ子の形でインターリーブされる、項目１〜５のいずれか１項に記載の装置。
［項目７］
前記送信ポートは、複数のＶＬバッファの各々に割り当てられたバッファ空間を有する送信バッファを更に含み、
各ＶＬバッファは、各仮想レーンに関連し、
前記送信ポートは、
第１のファブリックパケットから分割された複数のデータ単位を、第１のＶＬバッファにバッファ処理し、
第２のファブリックパケットから分割された複数のデータ単位を第２のＶＬバッファにバッファ処理し、
前記第１のＶＬバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加し、
前記第２のＶＬバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、前記第２のファブリックパケットから分割された複数のデータ単位を、前記第１のファブリックパケットとインターリーブする回路およびロジックを更に備え、
前記複数のデータ単位は、前記第１のファブリックパケットから分割された前記複数のデータ単位の第１の部分を含み、
前記複数のデータ単位は、前記第２のファブリックパケットから分割された前記複数のデータ単位の少なくとも第１の部分を含む、項目１〜６のいずれか１項に記載の装置。
［項目８］
受信バッファを有し、
インターリーブ済みの複数のデータ単位の送信済みのストリームを受信し、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームから複数のデータ単位の複数のグループを分離し、
同一のファブリックパケットから互いに分割された複数のデータ単位の複数のグループを、前記受信バッファにバッファ処理する回路およびロジックを有する受信ポートを備え、
各データ単位は、関連するファブリックパケットからのデータの分割された一部を含み、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームは、送信済みの前記ストリームにおいてインターリーブされる複数のデータ単位の前記複数のグループを含み、
複数のデータ単位の１つのグループにおける各データ単位は、前記同一のファブリックパケットに関連する、装置。
［項目９］
前記受信バッファにおけるバッファ空間は、複数の仮想レーン（ＶＬ）バッファに対して割り当てられ、
各ＶＬバッファは、各仮想レーンに対して割り当てられ、
前記受信ポートは、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のデータ単位の各グループに関連する仮想レーンを決定し、
複数のデータ単位の各グループが関連する前記仮想レーンに対して割り当てられた前記ＶＬバッファに、複数のデータ単位の該グループに対する複数のデータ単位をバッファ処理する回路およびロジックを更に有する、項目８に記載の装置。
［項目１０］
各ファブリックパケットは、複数の本体データ単位が後に続くヘッドデータ単位を含む第１のデータ単位を含み、テールデータ単位を含む最後のデータ単位で終了する複数の異なるタイプのデータ単位に分割され、
前記受信ポートは、
各データ単位のタイプを検出し、
第１の仮想レーンに関連するヘッドデータ単位を検出することにより、複数のデータ単位の第１のグループの第１のデータ単位を検出し、
前記第１の仮想レーンに関連する第１のＶＬバッファに複数のデータ単位の前記第１のグループの複数のデータ単位をバッファ処理し、
前記第１の仮想レーンに関連するテールユニットを受信する前に、第２の仮想レーンに関連するヘッドデータ単位が受信されたことを検出することにより、複数のデータ単位のインターリーブ済みのグループの第１のデータ単位を検出し、
前記第２の仮想レーンに関連する第２のＶＬバッファにおける複数のデータ単位の前記インターリーブ済みのグループの複数のデータ単位をバッファし、
前記第２の仮想レーンに関連するテールユニットを検出することにより、複数のデータ単位の前記インターリーブ済みのグループの終了を検出し、
前記第２の仮想レーンに関連する前記テールユニットの後の前記データ単位を、複数のデータ単位の次のグループの前記第１のデータ単位を規定するものとして検出し、
複数のデータ単位の前記次のグループの前記第１のデータ単位がヘッドデータ単位、本体データ単位、またはテールデータ単位であるかに基づいて、複数のデータ単位の前記次のグループの前記複数のデータ単位に関連する仮想レーンを決定する回路およびロジックを更に有する、項目９に記載の装置。
［項目１１］
複数のデータ単位のインターリーブ済みの前記複数のグループは、少なくとも３つのファブリックパケットから分割された複数のデータ単位の複数のグループを含み、
複数のデータ単位のインターリーブ済みの前記複数のグループは、少なくとも２つのレベルを有する入れ子の形でインターリーブされる、項目９に記載の装置。
［項目１２］
前記受信ポートは、
複数のデータ単位の送信済みの前記ストリームにおいて受信されたときのデータの複数のグループに関連する前記複数の仮想レーンの順序を追跡し、
複数のデータ単位の各グループにおけるどの複数のＶＬバッファデータ単位がバッファ処理されるべきかを決定するべく、追跡された前記順序を使用する回路およびロジックを更に有する、項目１１に記載の装置。
［項目１３］
前記複数の仮想レーンの順序は、ＶＬスタックおよびＶＬレジスタを用いることにより追跡され、
前記ＶＬレジスタは、現在の複数のＶＬバッファデータ単位がバッファ処理されていることを識別するＶＬ証拠を格納するべく用いられ、
新しいレベルのインターリーブがインターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおいて検出された場合、複数のデータ単位のインターリーブ済みの前記グループに関連する前記ＶＬは、前記ＶＬレジスタに格納され、その前の前記ＶＬ証拠は、前記ＶＬスタックの上部にプッシュされ、
インターリーブの該新しいレベルのインターリーブが完了すると、前記スタックの上部の前記ＶＬ証拠は、前記ＶＬレジスタへとポップされる、項目１１または１２に記載の装置。
［項目１４］
リンクインターフェースがリンクインターフェースピアに通信可能に結合されるリンクを含むシステムに取り付けられる前記リンクインターフェースを備え、
前記リンクインターフェースは、
複数のファブリックパケットの各々を複数のデータ単位に分割し、
複数のファブリックパケットから分割された複数のデータ単位の複数のグループがインターリーブされる、インターリーブ済みの複数のデータ単位の送信ストリームを生成し、
前記リンクインターフェースピアの受信ポートに向かう前記リンクにアウトバウンドされたインターリーブ済みの複数のデータ単位の前記送信ストリームを送信する回路およびロジックを含む送信ポートと、
受信バッファを含み、
前記リンクインターフェースピアの送信ポートから送信されたインターリーブ済みの複数のデータ単位の送信済みのストリームを受信し、
複数のデータ単位の前記複数のグループを、インターリーブ済みの複数のデータ単位の送信済みの前記ストリームから分離し、前記受信バッファに同一のファブリックパケットから互いに分割された複数のデータ単位の複数のグループをバッファ処理する回路およびロジックを含む受信ポートとを有し、
各データ単位は、関連するファブリックパケットからのデータの分割された一部を含み、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームは、送信済みの前記ストリームにおいてインターリーブされる複数のデータ単位の複数のグループを含み、
複数のデータ単位のグループにおける各データ単位は、前記同一のファブリックパケットに関連する、装置。
［項目１５］
インターリーブ済みの前記複数のデータ単位の前記送信ストリームにおけるインターリーブ済みの複数のデータ単位は、少なくとも３つのファブリックパケットから分割されたインターリーブ済みの複数のデータ単位を含み、
インターリーブ済みの複数のデータ単位の前記送信ストリームは、少なくとも２つのレベルを有する入れ子の形でインターリーブされ、
前記受信ポートにおいて受信されたインターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のデータ単位のインターリーブ済みの前記複数のグループは、少なくとも３つのファブリックパケットから分割された複数のデータ単位の複数のグループを含み、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のデータ単位のインターリーブ済みの前記複数のグループは、少なくとも２つのレベルを有する入れ子の形でインターリーブされる、項目１４に記載の装置。
［項目１６］
前記送信ポートは、
各ファブリックパケットから分割された前記複数のデータ単位を、前記ファブリックパケットに割り当てられた優先度レベルに関連させ、
より高い優先度を有する複数のデータ単位のストリームが、インターリーブ済みの複数のデータ単位の前記送信ストリームにおいてより低い優先度を有する複数のデータ単位のストリームへとインターリーブされるように、より高い優先度レベルを有する複数のデータ単位の送信がより低い優先度レベルを有する複数のデータ単位の送信を先取りする、ファブリックパケット先取りを促し、
連続的により高い優先度レベルを有する複数のデータ単位の送信が、複数のレベルのインターリーブを有する入れ子の形で複数のデータ単位の送信を先取りする、複数のレベルのファブリックパケット先取りを促す、回路およびロジックを更に備える、項目１４に記載の装置。
［項目１７］
前記送信ポートは、複数の仮想レーン（ＶＬ）ファーストインファーストアウト（ＦＩＦＯ）バッファの各々に割り当てられたバッファ空間を有する送信バッファを更に含み、
各ＶＬ  ＦＩＦＯバッファは、各仮想レーンに関連し、
前記送信ポートは、
各仮想レーンおよび関連するＶＬバッファに対する優先度レベルを割り当て、
各ファブリックパケットに割り当てられた仮想レーンを検出し、
前記複数のデータ単位が分割される前記ファブリックパケットに割り当てられた前記仮想レーンに基いて、複数のデータ単位をＶＬ  ＦＩＦＯバッファにバッファ処理し、
第１のＶＬ  ＦＩＦＯバッファが送信する準備のできた複数のデータ単位をバッファ処理したことを検出し、
前記第１のＶＬ  ＦＩＦＯバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、複数のデータ単位の送信された前記ストリームに追加し、
前記第１のＶＬ  ＦＩＦＯバッファから複数のデータ単位を追加する間に、前記第１のＶＬ  ＦＩＦＯバッファよりも高い優先度レベルを有する第２のＶＬ  ＦＩＦＯバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出し、
前記第１のＶＬ  ＦＩＦＯバッファからの複数のデータ単位のプルを停止し、
前記第２のＶＬ  ＦＩＦＯバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、
前記検出に応答して、前記第２のＶＬ  ＦＩＦＯバッファからの複数のデータ単位の送信のために、前記第１のＶＬ  ＦＩＦＯバッファにおける複数のデータ単位の送信を先取りする回路およびロジックを更に備える、項目１６に記載の装置。
［項目１８］
前記送信ポートは、複数のＶＬファーストインファーストアウト（ＦＩＦＯ）バッファの各々に割り当てられたバッファ空間を有する送信バッファを更に含み、
各ＶＬ  ＦＩＦＯバッファは、各仮想レーンに関連し、
前記送信ポートは、
第１のファブリックパケットから分割された複数のデータ単位を、第１のＶＬ  ＦＩＦＯバッファにバッファ処理し、
第２のファブリックパケットから分割された複数のデータ単位を、第２のＶＬ  ＦＩＦＯバッファにバッファ処理し、
前記第１のＶＬ  ＦＩＦＯバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加し、
前記第２のＶＬ  ＦＩＦＯバッファからの複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、前記第１のファブリックパケットと前記第２のファブリックパケットから分割された複数のデータ単位をインターリーブする回路およびロジックを更に備え、
前記複数のデータ単位は、前記第１のファブリックパケットから分割された前記データ単位の第１の部分を含み、
前記複数のデータ単位は、前記第２のファブリックパケットから分割された前記複数のデータ単位の少なくとも第１の部分を含む、項目１４〜１７のいずれか１項に記載の装置。
［項目１９］
前記受信バッファにおけるバッファ空間は、複数の仮想レーン（ＶＬ）ファーストインファーストアウト（ＦＩＦＯ）バッファに対して割り当てられ、
各ＶＬ  ＦＩＦＯバッファは、各仮想レーンに対して割り当てられ、
前記送信ポートは、
インターリーブ済みの複数のデータ単位の送信済みの前記ストリームにおける複数のデータ単位の各グループに関連する仮想レーンを決定し、
複数のデータ単位の各グループが関連する前記仮想レーンに対して割り当てられた、前記ＶＬ  ＦＩＦＯバッファに、複数のデータ単位の該グループに対する複数のデータ単位をバッファ処理する回路およびロジックを更に有する、項目１４〜１８のいずれか１項に記載の装置。
［項目２０］
複数のファブリックパケットの各々を複数のデータ単位に分割する段階と、
複数のファブリックパケットから分割された複数のデータ単位の複数のグループがインターリーブされる、インターリーブ済みの複数のデータ単位の送信ストリームを生成する段階と、
リンクにアウトバウンドされたインターリーブ済みの複数のデータ単位の前記送信ストリームを送信する段階とを備える、方法。
［項目２１］
各ファブリックパケットから分割された前記複数のデータ単位を、前記ファブリックパケットに割り当てられた優先度レベルに関連させる段階と、
より高い優先度を有する複数のデータ単位のストリームが、インターリーブ済みの複数のデータ単位の前記送信ストリームにおいてより低い優先度を有する複数のデータ単位のストリームへとインターリーブされるように、より高い優先度レベルを有する複数のデータ単位の送信がより低い優先度レベルを有する複数のデータ単位の送信を先取りする、ファブリックパケット先取りを促す段階とを更に備える、項目２０に記載の方法。
［項目２２］
連続的により高い複数の優先度レベルを有する複数のデータ単位の送信が、複数のレベルのインターリーブを有する入れ子の形で複数のデータ単位の送信を先取りする、複数のレベルのファブリックパケット先取りを促す段階を更に備える、項目２１に記載の方法。
［項目２３］
送信ポートは、複数の仮想レーン（ＶＬ）バッファの各々に割り当てられたバッファ空間を有する送信バッファを更に含み、
各ＶＬバッファは、各仮想レーンに関連し、
前記方法は、
各仮想レーンおよび関連するＶＬバッファに対する優先度レベルを割り当てる段階と、
各ファブリックパケットに割り当てられた仮想レーンを検出する段階と、
前記複数のデータ単位が分割される前記ファブリックパケットに割り当てられた前記仮想レーンに基いて、複数のデータ単位をＶＬバッファにバッファ処理する段階と、
第１のＶＬバッファが送信する準備のできた複数のデータ単位をバッファ処理したことを検出する段階と、
前記第１のＶＬバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階と、
前記第１のＶＬバッファから複数のデータ単位を追加する間に、前記第１のＶＬバッファよりも高い優先度レベルを有する第２のＶＬバッファが送信する準備ができた複数のデータ単位をバッファ処理したことを検出する段階と、
前記第１のＶＬバッファからの複数のデータ単位のプルを停止し、
前記第２のＶＬバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、
前記検出に応答して、前記第２のＶＬバッファからの複数のデータ単位の送信のために、前記第１のＶＬバッファにおける複数のデータ単位の送信を先取りする段階を更に備える、項目２１に記載の方法。
［項目２４］
第１の仮想レーンおよび第３の仮想レーンに対する同一の優先度レベルを割り当てる段階と、
第１のファブリックパケットから分割された複数のデータ単位を前記第１のＶＬバッファにバッファ処理し、第３のファブリックパケットから分割された複数のデータ単位を、前記第３の仮想レーンに関連する第３のＶＬバッファにバッファ処理する段階と、
前記第１のＶＬバッファに対する複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加する段階と、
前記第１のＶＬバッファからの複数のデータ単位を追加する間に、前記第１のＶＬバッファにおける前記第１のファブリックパケットから分割された複数のデータ単位の利用可能性におけるバブルを検出する段階と、
前記第３のＶＬバッファにおける複数のデータ単位が送信する準備ができていることを検出する段階と、
前記第３のＶＬバッファにおける前記バブルおよび複数のデータ単位が送信する準備ができていることを検出することに応答して、前記第３のＶＬバッファから複数のデータ単位をプルし、前記複数のデータ単位を、インターリーブ済みの複数のデータ単位の前記送信ストリームに追加することにより、インターリーブ済みの複数のデータ単位の前記送信ストリームにおける前記第３のＶＬバッファの複数のデータ単位の送信をインターリーブする段階とを更に備える、項目２３に記載の方法。
［項目２５］
インターリーブ済みの前記複数のデータ単位は、少なくとも３つのファブリックパケットから分割されたインターリーブ済みの複数のデータ単位を含み、
インターリーブ済みの前記複数のデータ単位は、少なくとも２つのレベルを有する入れ子の形でインターリーブされる、項目２０〜２４のいずれか１項に記載の方法。