(57)【要約】コンピューティングシステムにおいて効率的なデータ転送を行うシステム、装置及び方法を開示する。コンピューティングシステムは、クライアント及びファブリック内に複数のファブリックインターフェースを含む。ファブリックインターフェース内のパケット送信機は、各々のタイプのパケットを記憶するための複数のキューを含む。パケット送信機は、候補パケットを複数のキューの各々から選択するための複数のキューアービターを含む。パケット送信機は、複数の候補パケットを記憶するためのデータストレージスペースを含む、リンクパケットを記憶するためのバッファを含む。パケット送信機は、複数のキューから適格な候補パケットを選択し、これらの候補パケットをリンクパケットに挿入する。パッキングアービターは、候補パケットをリンクパケットに挿入する速度と、受信機の受信キューで利用可能なデータストレージスペースを生成する速度と、の不一致を考慮することによって、受信機におけるデータ衝突を回避する。【選択図】図４
2021534684.tif 000002
【特許請求の範囲】
【請求項１】
各々のタイプのパケットを記憶するように構成された複数のキューと、
前記複数のキューの各々から候補パケットを選択するように構成された複数のキューアービターと、
パッキングアービターと、を備え、
前記パッキングアービターは、
前記複数のキューから利用可能なキューのグループを識別することと、
前記利用可能なキューのグループの中で第１のキューが最も高い優先度を有すると判別したことに応じて、前記利用可能なキューのグループからキューを選択することと、
前記第１のキューからの前記候補パケットが挿入条件を満たすと判別したことに応じて、前記第１のキューからの前記候補パケットを、複数の候補パケットのためのスペースを含むリンクパケットに挿入することと、
を行うように構成されている、
装置。
【請求項２】
前記パッキングアービターは、前記選択されたキューからの前記候補パケットが挿入条件を満たしていないと判別したことに応じて、前記選択されたキューに対応するキューアービターに対して、異なる候補パケットを選択するように通知するようにさらに構成されている、
請求項１の装置。
【請求項３】
前記パッキングアービターは、前記選択されたキューからの前記候補パケットが挿入条件を満たしていないと判別したことに応じて、
前記候補パケットが前記リンクパケットに挿入されたことと、
前記リンクパケットが送信されたことと、
のうち何れかを検出するまで、前記選択されたキューの前記優先度を下げるように構成されている、
請求項１の装置。
【請求項４】
前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別することは、前記選択されたキューからの前記候補パケットを記憶するために、前記リンクパケット内に利用可能なデータストレージスペースがあるのを判別することを含む、
請求項１の装置。
【請求項５】
前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別することは、前記リンクパケット内の前記利用可能なデータストレージスペースが所定の境界に整列されているのを判別することを含む、
請求項４の装置。
【請求項６】
前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別することは、前記選択されたキューからの前記候補パケットを記憶するために、利用可能なデータストレージスペースが受信機にあると判別することを含む、
請求項１の装置。
【請求項７】
前記パッキングアービターは、リンクパケットがリンクを介して受信機に送信されたことを判別したことに応じて、
次のリンクパケットが前記リンクを使用するのを可能にする有効なネットワークサイクルの第１のカウントと、
前記リンクパケットに挿入された所定のタイプの候補パケットの数の第２のカウントと、
の各々をリセットするように構成されている、
請求項１の装置。
【請求項８】
前記リンクが、次のリンクパケットを、前記リンクを介して前記受信機に送信するのに利用可能であることを判別したことに応じて、前記パッキングアービターは、前記第１のカウントをインクリメントするように構成されている、
請求項７の装置。
【請求項９】
前記次のリンクパケットへの挿入条件を満たす前記所定のタイプの候補パケットがあることを判別したことに応じて、前記パッキングアービターは、
前記第２のカウントと、
前記候補パケットのための１と、
前記所定のタイプのパケットを記憶する受信キューでのデータ衝突を回避するための前記受信機の受信リンクパケット間の最小サイクル数と、
を追加することによって、合計を決定するように構成されている、
請求項８の装置。
【請求項１０】
前記合計が前記第１のカウントよりも小さいと判別したことに応じて、前記パッキングアービターは、
前記所定のタイプの前記候補パケットを前記次のリンクパケットに挿入することと、
前記第２のカウントをインクリメントすることと、
を行うように構成されている、
請求項９の装置。
【請求項１１】
前記利用可能なキューのグループは、
少なくとも１つの有効パケットを記憶することと、
所定の回数連続して選択されないことと、
を行う１つ以上のキューを含む、
請求項２の装置。
【請求項１２】
各々のタイプのパケットを記憶するように構成された複数のキューにパケットを記憶することと、
複数のキューアービターによって、前記複数のキューの各々から候補パケットを選択することと、
制御ロジックによって、前記複数のキューから利用可能なキューのグループを識別することと、
前記制御ロジックによって、前記選択されたキューが前記利用可能なキューのグループの中で最も高い優先度を有すると判別したことに応じて、前記制御ロジックによって、前記利用可能なキューのグループからキューを選択することと、
前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別したことに応じて、前記制御ロジックによって、前記選択されたキューからの前記候補パケットを、複数の候補パケットのためのスペースを含むリンクパケットに挿入することと、を含む、
方法。
【請求項１３】
前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別することは、前記選択されたキューからの前記候補パケットを記憶するために、利用可能なデータストレージスペースが受信機にあると判別することを含む、
請求項１２の方法。
【請求項１４】
リンクパケットがリンクを介して受信機に送信されたことを判別したことに応じて、
次のリンクパケットが前記リンクを使用するのを可能にする有効なネットワークサイクルの第１のカウントと、
前記リンクパケットに挿入された所定のタイプの候補パケットの数の第２のカウントと、
の各々をリセットすることを含む、
請求項１２の方法。
【請求項１５】
前記リンクが、次のリンクパケットを、前記リンクを介して前記受信機に送信するのに利用可能であることを判別したことに応じて、前記第１のカウントをインクリメントすることを含む、
請求項１４の方法。
【請求項１６】
前記次のリンクパケットへの挿入条件を満たす前記所定のタイプの候補パケットがあることを判別したことに応じて、
前記第２のカウントと、
前記候補パケットのための１つと、
前記所定のタイプのパケットを記憶する受信キューでのデータ衝突を回避するための前記受信機の受信リンクパケット間の最小サイクル数と、
を追加することによって、合計を決定することを含む、
請求項１５の方法。
【請求項１７】
前記合計が前記第１のカウントよりも小さいと判別したことに応じて、
前記所定のタイプの前記候補パケットを前記次のリンクパケットに挿入することと、
第２のカウントをインクリメントすることと、を含む、
請求項１６の方法。
【請求項１８】
プログラム命令を記憶するコンピュータ可読記憶媒体であって、
前記プログラム命令は、プロセッサによって実行されると、
各々のタイプのパケットを記憶するように構成された複数のキューにパケットを記憶することと、
前記複数のキューの各々から候補パケットを選択することと、
前記複数のキューから利用可能なキューのグループを識別することと、
前記選択されたキューが前記利用可能なキューのグループの中で最も高い優先度を有すると判別したことに応じて、前記利用可能なキューのグループからキューを選択することと、
前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別したことに応じて、前記選択されたキューからの前記候補パケットを、複数の候補パケットのためのスペースを含むリンクパケットに挿入することと、
をプロセッサに実行させる、
コンピュータ可読記憶媒体。
【請求項１９】
前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別することは、前記選択されたキューからの前記候補パケットを記憶するために、前記リンクパケット内に利用可能なデータストレージスペースがあるのを判別することを含む、
請求項１８のコンピュータ可読記憶媒体。
【請求項２０】
前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別することは、前記選択されたキューからの前記候補パケットを記憶するために、利用可能なデータストレージスペースが受信機にあると判別することを含む、
請求項１８のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピューティングシステムでは、いくつかのタイプのアプリケーションは、他のアプリケーションよりも並列処理及び共有メモリをうまく活用することを可能にする機能を実行する。係るアプリケーションの例は、機械学習アプリケーション、エンターテインメントアプリケーション、リアルタイムアプリケーション、いくつかのビジネスアプリケーション、科学アプリケーション、医療アプリケーション、及び、他のアプリケーションを含む。いくつかのプロセッサアーキテクチャは、２つ以上の処理ユニット（例えばＣＰＵ、ＧＰＵ等）又は処理コアを含むが、場合によっては、メモリに結合された１つ又は２つの追加の処理ユニット又はコアは、所望のレベルのパフォーマンスを提供するのに十分なレベルの並列処理を必ずしも提供するわけではない。
【０００２】
読み取りアクセスコマンド及び書き込みアクセスコマンドと、対応するデータとに加えて、コヒーレンシプローブ、割り込み及び他の通信メッセージは、通信ファブリック（又はファブリック）を介して、システム内で転送される。ファブリック内の相互接続の例は、バスアーキテクチャ、クロスバーベースアーキテクチャ、ネットワークオンチップ（ＮｏＣ）通信サブシステム、ダイ間の通信チャネル、チップを並べてスタックするために使用されるシリコンインターポーザ、プロセッサダイの上に専用ダイを垂直にスタックするために使用されるスルーシリコンビア（ＴＳＶ）等である。
【０００３】
多くの場合、ファブリックは、比較的広いパケットをサポートする複数の物理チャネルを有する。単一のファブリック内でデータを転送している間では比較的多数の物理ワイヤが利用可能であるため、ファブリックによって遅延が軽減される。しかしながら、ファブリックを介して別個のダイを接続する場合、及び、別個の処理ノードを各々のファブリックと接続する場合、データ、利用可能な帯域幅を制限する非常に少ない数の物理ワイヤを介して転送される。場合によっては、リンク物理ワイヤは、ダイ上の物理ワイヤデータレートの倍数であるデータレートでデータを転送する。しかしながら、ダイ間及びノード間で通信する場合には、依然として大幅な帯域幅の減少がある。
【０００４】
上記のデータ転送の非効率性に加えて、異なるソースからの様々なタイプのパケットが、制御情報と共に何度も組み合わされる。様々なパケットタイプの１つ以上のソースは、異なるバス幅を有し、単一のソース内のパケット間で様々な量の情報を伝送する。多くの場合、異なるソースから異なるサイズのこれらのパケットは非効率的な方法で組み合わされ、リンク帯域幅の効率がさらに低下する。
【０００５】
さらに、送信機からのパケットの送信速度が受信機におけるパケットの受信速度と一致しない場合、受信機におけるデータ衝突によってデータ破壊が発生する。一例では、送信機は、処理ユニットのグラフィックス処理ユニット（ＧＰＵ）であり、受信機は、ファブリックである。送信機からのパケットの送信データレートを下げるという保守的なアプローチは、データ破壊を防ぐが、リンク帯域幅の効率をさらに低下させる。
【０００６】
上記に鑑み、コンピューティングシステムで効率的なデータ転送を行うための効率的な方法及びシステムが望まれている。
【０００７】
本明細書に説明される方法及びメカニズムの利点は、添付の図面と併せて以下の説明を参照することによって良好に理解され得る。
【図面の簡単な説明】
【０００８】
【図１】コンピューティングシステムの一実施形態のブロック図である。
【図２】パケット送信機の一実施形態のブロック図である。
【図３】コンピューティングシステムにおける効率的なデータ転送を行う方法の一実施形態のフロー図である。
【図４】コンピューティングシステムにおける効率的なデータ転送を行う方法の別の実施形態のフロー図である。
【図５】コンピューティングシステムにおける効率的なデータ転送を行う方法の別の実施形態のフロー図である。
【図６】パケット受信機の一実施形態のブロック図である。
【図７】コンピューティングシステムにおける効率的なデータ転送を行う方法の別の実施形態のフロー図である。
【発明を実施するための形態】
【０００９】
本発明は様々な修正及び代替形態を受け入れるが、特定の実施形態が、図面の例として示され、本明細書で詳細に説明される。しかしながら、図面及びその詳細な説明は、開示された特定の形態に本発明を限定するものではなく、むしろ、本発明は、添付の「特許請求の範囲」によって定義される本発明の範囲内に含まれる全ての修正、均等物及び代替物を含むことを理解されたい。
【００１０】
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解をもたらすために、多くの特定の詳細が記載される。しかしながら、当業者は、その特定の詳細を用いないで、様々な実施形態を実施し得ることを認識するはずである。いくつかの例では、本明細書に説明されるアプローチを曖昧にすることを回避するために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素は必ずしも縮尺通りに描かれていないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張され得る。
【００１１】
コンピューティングシステムにおいて効率的なデータ転送を行うための様々なシステム、装置、方法及びコンピュータ可読記憶媒体を開示する。様々な実施形態では、コンピューティングシステムは、アプリケーションを処理するための１つ以上のクライアントを含む。クライアントの例は、汎用中央処理ユニット（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、アクセラレーテッド処理ユニット（ＡＰＵ）、入出力（Ｉ／Ｏ）デバイス等を含む。また、コンピューティングシステムは、少なくとも、電力コントローラと、クライアント間でデータを転送するための複数のリンクインターフェースと、を含む。
【００１２】
様々な実施形態では、１つ以上のクライアント及びファブリックは、各々がパケット送信機及びパケット受信機を有するファブリックインターフェースを含む。パケット送信機は、各タイプのパケットを記憶するための複数のキューを含む。パケットタイプの例は、要求タイプ、応答タイプ、プローブタイプ、及び、トークンタイプ又はクレジットタイプを含む。タイプの他の例は、制御タイプであるコマンド又はメッセージ等のパケット内のデータのタイプを含む。書き込み要求の場合、いくつかの実施形態では、書き込み要求は、コマンド又は制御パケットに挿入された書き込みコマンドに分割される。また、書き込み要求は、書き込みコマンドに対応する別個の書き込みデータパケットに分割される。読み取り要求は、コマンド又は制御パケットに挿入された読み取りコマンドとして送信される。読み取りコマンドに対する応答は、コマンド又は制御パケットに挿入された読み取りメッセージとして送信される。読み取られた応答データは、別のデータパケットに挿入される。
【００１３】
いくつかの実施形態では、複数のキューのうち２つ以上は、異なるサイズのパケットを記憶する。ある実施形態では、パケット送信機は、複数のキューの各々から候補パケットを選択するための複数のキューアービターを含む。パケット送信機は、リンクパケットを記憶するためのバッファをさらに含む。様々な実施形態では、リンクパケットは、複数の候補パケットを記憶するためのデータストレージスペースを含む。リンクパケットは、他のデータの転送でビジー状態でなくなったリンクを介して受信機に送信される。いくつかの実施形態では、リンクパケットを記憶するためのバッファは、複数のレジスタ、フリップフロップ回路又は他の順序要素を含む。
【００１４】
パケット送信機はパッキングアービターを含み、パッキングアービターは、複数のキューから適格な候補パケットを選択し、これらの候補パケットをリンクパケットに挿入する。いくつかの実施形態では、パッキングアービターは、１つ以上の属性に基づいて候補パケットを選択し、リンクバッファに挿入する。１つ以上の属性は、経過時間（age）、パケットタイプの優先レベル、サービス品質パラメータ、ソース識別子、アプリケーション識別子又はアプリケーションタイプ（リアルタイムアプリケーション等）、トラフィックタイプの指標（リアルタイムトラフィック等）、帯域幅要件、又は、遅延許容要件等を含む。様々な実施形態では、パッキングアービターは、フィリングリンクパケット（filling link packet）が所定の候補パケットに対して利用可能な残りのデータストレージスペースを有するかどうかを判別する。いくつかの実施形態では、パッキングアービターは、フィリングリンクパケットが、所定の候補パケットに対して所定の境界上に整列された残りの利用可能なデータストレージスペースを有するかどうかを判別する。
【００１５】
パッキングアービターは、候補パケットをリンクパケットにパッキング（挿入）する速度と、受信機の受信キューで利用可能なデータストレージスペースを生成する速度と、の不一致を考慮するための制御ロジックを含む。不一致は、リンクがリンクパケットを伝送するのに利用可能である場合に、ファブリックのネットワークがクロックサイクルを追加及び削除することによっても発生する。
【００１６】
一例では、ファブリックインターフェースがデータ転送エラーを検出してデータを再送信すると、パケット送信機の観点から、アイドルクロックサイクルがリンクに挿入される。場合によっては、このアイドルサイクルは維持されず、ファブリックのネットワーク全体でのバス利用率及びバスアービトレーションによって、パケット送信機から送信された２つのリンクパケット間で除去される。したがって、受信機の受信キューにおけるデータ衝突を回避するために、パケット送信機は、次のリンクパケットがパケット送信機に接続されたリンクを使用することを可能にする、有効なネットワークサイクルの第１のカウントと、リンクパケットに挿入された所定のタイプの候補パケットの数の第２のカウントと、を維持する。パケット送信機は、データ衝突を回避するために、受信機の受信されたリンクパケット間の最小サイクル数の第３のカウントを、所定のタイプのパケットを記憶する受信キューに記憶する。パケット送信機は、これらのカウントを使用して、所定の候補パケットをリンクパケットに挿入するタイミングを決定する。
【００１７】
図１を参照すると、コンピューティングシステム１００の一実施形態の全体的なブロック図が示されている。図示するように、コンピューティングシステム１００は、各クライアント１１０と、メモリコントローラ１３０と、電力コントローラ１７０と、リンクインターフェース１８０間の通信ファブリック１２０と、を含む。いくつかの実施形態では、処理ノード１００のコンポーネントは、システムオンチップ（ＳＯＣ）等の集積回路（ＩＣ）上の個々のダイである。他の実施形態では、コンポーネントは、システムインパッケージ（ＳｉＰ）又はマルチチップモジュール（ＭＣＭ）内の個々のダイである。
【００１８】
図示した実施形態では、クライアント１１０は、中央処理ユニット（ＣＰＵ）１１２と、グラフィックス処理ユニット（ＧＰＵ）１１４と、ハブ１１６と、を含む。ハブ１１６は、マルチメディアエンジン１１８と通信するために使用される。ＣＰＵ１１２、ＧＰＵ１１４及びマルチメディアエンジン１１８は、アプリケーションを処理することができるコンピューティングリソースの例である。図示していないが、他の実施形態では、他のタイプのコンピューティングリソースが、クライアント１１０に含まれる。ＣＰＵ１１２の１つ以上のプロセッサコアの各々は、所定の選択された命令セットアーキテクチャ（ＩＳＡ）に従って命令を実行するための回路を含む。様々な実施形態では、ＣＰＵ１１２のプロセッサコアの各々は、所定のＩＳＡの命令を処理するために使用されるスーパースカラのマルチスレッドマイクロアーキテクチャを含む。ある実施形態では、ＧＰＵ１１４は、多くの並列実行レーンを有する高並列データマイクロアーキテクチャを含む。一実施形態では、マイクロアーキテクチャは、並列実行レーン用の単一命令複数データ（ＳＩＭＤ）パイプラインを使用する。マルチメディアエンジン１１８は、マルチメディアアプリケーション用の音声データ及び映像データを処理するためのプロセッサを含む。
【００１９】
一実施形態では、電力コントローラ１７０は、所定のサンプリング間隔中に、所定のサンプリング信号等のデータをクライアント１１０から収集する。いくつかの実施形態では、ノード１００内のオンダイ電流センサ及び温度センサは、情報を電力コントローラ１７０に送信する。いくつかの実施形態では、電力コントローラ１７０は、クライアント１１０内のコンピューティングリソース毎に、各々の電力性能状態（Ｐ状態）を選択する。Ｐ状態は、少なくとも、動作電圧及び動作クロック周波数を含む。
【００２０】
単一のメモリコントローラ１３０が示されているが、他の実施形態では、別の数のメモリコントローラが処理ノード１００で使用される。様々な実施形態では、メモリコントローラ１３０は、通信ファブリック１２０を介してクライアント１１０からメモリ要求を受信し、そのメモリ要求をスケジュールし、スケジュールされたメモリ要求を、システムメモリ及びメインメモリのうち１つ以上に送信する。また、メモリコントローラ１３０は、システムメモリ及びメインメモリから応答を受信し、その応答を、クライアント１１０の対応する要求ソースに送信する。様々な実施形態では、システムメモリは、Ｉ／Ｏコントローラ、バス１６０及びメモリバス１５０を介したメインメモリからのデータで満たされる。要求されたブロックに対応するキャッシュフィルラインは、元のメモリ要求を完了させるために、メインメモリからクライアント１１０内のキャッシュメモリサブシステムのうち対応するサブシステムに伝達される。キャッシュフィルラインは、キャッシュの１つ以上のレベルに配置される。
【００２１】
いくつかの実施形態では、処理ノード１００のアドレススペースは、少なくとも、ＣＰＵ１１２、ＧＰＵ１１４及びハブ１１６と、入出力（Ｉ／Ｏ）周辺デバイス（図示省略）及び他のタイプのコンピューティングリソース等の１つ以上の他のコンポーネントと、の間で分割される。メモリマップは、何れのアドレスが何れのコンポーネントにマッピングされ、したがって、特定のアドレスのメモリ要求がＣＰＵ１１２、ＧＰＵ１１４及びハブ１１６のうち何れにルーティングされるかを判別するために維持される。ある実施形態では、システムメモリは、様々なダイナミックランダムアクセスメモリ（ＤＲＡＭ）の１つであり、対応するプロトコルは、メモリコントローラ１３０によってサポートされる。プロトコルは、クロックサイクル当たりのデータ転送数、信号電圧レベル、信号タイミング、信号位相及びクロック位相、並びに、クロック周波数等の情報転送に使用される値を決定する。いくつかの実施形態では、メインメモリは、データの不揮発性ランダムアクセス二次ストレージの様々なタイプのうち１つである。メインメモリの例は、ハードディスクドライブ（ＨＤＤ）及びソリッドステートディスク（ＳＳＤ）である。
【００２２】
様々な実施形態では、通信ファブリック１２０（又は、ファブリック１２０）は、コンピューティングリソース１１０とメモリコントローラ１３０との間でトラフィックを往復転送し、各通信プロトコルをサポートするためのインターフェースを含む。「トラフィック」は、コマンド、メッセージ、プローブ、割り込み等のデータと、コマンド及びメッセージに対応するデータと、を含む。いくつかの実施形態では、ファブリック１２０は、少なくとも、要求及び応答を記憶するためのキューと、内部ネットワークを介して要求を送信する前に受信された要求間でアービトレーションを行うための選択ロジックと、パケットを構築及び復号するためのロジックと、パケットのルートを選択するためのロジックと、を含む。
【００２３】
いくつかの実施形態では、ファブリックトランスポートインターフェース（ＦＴＩ）１８０は、リンク上でトラフィックを転送することによって、コンピューティングシステム１００と他のコンピューティングシステム又は処理ノードとの間の通信をサポートする。様々な実施形態では、リンクを介して送信されるトラフィックは、１つ以上の処理ノードの動作状態の指標、パワーダウン要求、要求に対する応答、割り込み及び他の情報を含む。図示するように、クライアント１１０は、ＣＰＵ１１２用のＦＴＩ１１３と、ＧＰＵ１１４用のＦＴＩ１１５と、ハブ１１６用のＦＴＩ１１７と、を含む。また、メモリコントローラ１３０はＦＴＩ１３２を含むのに対し、電力コントローラ１７０はＦＴＩ１７２を含む。ファブリック１２０は、説明を容易にするために図示されていない複数のファブリックトランスポートインターフェースを含む。いくつかの実施形態では、ファブリックトランスポートインターフェースに接続された各リンクは、ポイントツーポイント通信チャネルである。他の実施形態では、ファブリックトランスポートインターフェースに接続された１つ以上のリンクは、エンドツーエンド通信チャネルである。
【００２４】
物理レベルにおいて、リンクは１つ以上のレーンを含む。いくつかの実施形態では、ファブリックトランスポートインターフェースは、通信に使用される制御ロジック及びバッファ又はキューを含む。いくつかの実施形態では、ファブリックトランスポートインターフェース及び対応するリンクは、ＰＣＩｅ（Peripheral Component Interconnect Express）、ＩｎｆｉｎｉＢａｎｄ、ＲａｐｉｄＩＯ、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ、ＡＸＩ（Advanced eXtensible Interface）等の通信プロトコル接続を含む。
【００２５】
いくつかの実施形態では、ファブリックトランスポートインターフェースの各々は、各タイプのパケットを記憶するための複数のキューを含む。また、複数のキューの各々から候補パケットを選択するための複数のキューアービターがある。コンピューティングシステム１００の１つ以上のファブリックトランスポートインターフェースは、リンクパケットを記憶するためのバッファを含み、リンクパケットは、複数の候補パケットを記憶するためのデータストレージスペースを含む。いくつかの実施形態では、複数のキューのうち２つ以上は、異なるサイズの候補パケットを記憶する。ファブリックトランスポートインターフェースのパッキングアービターは、複数のキューから適格な候補パケットを選択し、これらの候補パケットをリンクパケットに挿入する。いくつかの実施形態では、パッキングアービターは、フィリングリンクパケットが、所定の候補パケットの所定の境界上に整列された残りの利用可能なデータストレージスペースを有するかどうかを判別する。ファブリックトランスポートインターフェースのパケット受信機は、パケット送信機によって送信されたリンクパケットを受信するための受信キューを含む。パケット送信機のパッキングアービターは、候補パケットをリンクパケットに挿入する速度と、受信機の受信キューで利用可能なデータストレージスペースを生成する速度と、の不一致を考慮することによって、受信機でのデータ衝突を回避する。
【００２６】
図２を参照すると、パケット送信機２００の一実施形態の全体的なブロック図が示されている。図示した実施形態では、パケット送信機２００は、各タイプのパケットを記憶するためのキュー２１０〜２１４を含む。いくつかの実施形態では、パケットは、フロー制御ユニット（フリット（flit））である。フリットは、大きなパケットのサブセットである。フリットは、概して、大きなパケットのヘッダー及びテール情報等のデータ及び制御情報を伝送する。送信用データは、ネットワーク内でルーティングされるパケットとして記述されているが、他の実施形態では、送信用データは、ポイントツーポイント相互接続におけるビットストリーム又はバイトストリームである。様々な実施形態では、キュー２１０〜２１４は、ファブリックリンク上で送信される制御パケットを記憶する。フリットに対応する大きなパケット等の対応するデータパケットは、別のソースから送信される。
【００２７】
いくつかの実施形態では、大きなデータパケットのソース等の１つ以上の他のソースは、ファブリックリンクをパケット送信機２００と共有する。したがって、ファブリックリンクは、制御パケットの送信に常に利用可能ではない。また、パケット送信機２００は、候補パケット２３０〜２３４のうち１つ以上をリンクパケット２６０に挿入するためのパッキングバッファアービター２５０を含む。リンクパケット２６０は、２つ以上のファブリックトランスポートインターフェース（ＦＴＩ）候補パケット２３０〜２３４を記憶するのに十分なデータストレージスペースを有する。ある実施形態では、パケット送信機２００は、２つの要件が満たされた場合に、ファブリックリンク上にリンクパケット２６０を送信する。第１の要件は、ファブリックトランスポートインターフェースが、ファブリックリンクが利用可能であることを示す信号をパケット送信機２００に送信することである。第２の要件は、パケット送信機２００が、リンクパケット２６０が空でないと判別することである。
【００２８】
キュー２１０〜２１４に記憶される制御パケットタイプの例は、要求タイプ、応答タイプ、プローブタイプ、及び、トークンタイプ又はクレジットタイプを含む。また、パケットタイプの他の例も他の実施形態に含まれる。図示するように、ある実施形態では、キュー２１０は、制御要求タイプである「タイプ１」のパケットを記憶する。ある実施形態では、キュー２１２は、制御応答タイプである「タイプ２」のパケットを記憶する。ある実施形態では、キュー２１４は、制御トークンタイプ又はクレジットタイプである「タイプＮ」のパケットを記憶する。
【００２９】
キューアービター２２０は、キュー２１０からファブリックトランスポートインターフェース（ＦＴＩ）候補パケット２３０を選択する。いくつかの実施形態では、キューアービター２２０は、１つ以上の属性に基づいてＦＴＩ候補パケット２３０を選択する。１つ以上の属性は、経過時間（age）、パケットタイプの優先レベル、パケットの優先レベル、サービス品質パラメータ、ソース識別子、アプリケーション識別子又はアプリケーションタイプ（リアルタイムアプリケーション等）、トラフィックタイプの指標（リアルタイムトラフィック等）、帯域幅要件又は遅延許容要件等を含む。同様に、キューアービター２２２〜２２４は、キュー２１２〜２１４からＦＴＩ候補パケット２３２〜２３４を選択する。
【００３０】
いくつかの実施形態では、キューアービター２２０〜２２４は、ＦＴＩ候補パケット２３０〜２３４を、各クロックサイクルでキュー２１０〜２１４から選択する。他の実施形態では、キューアービター２２０〜２２４は、以前に選択したＦＴＩ候補パケット２３０〜２３４がリンクパケット２６０に挿入された後に、ＦＴＩ候補パケット２３０〜２３４をキュー２１０〜２１４から選択する。さらに他の実施形態では、キューアービター２２０〜２２４は、以前に選択したＦＴＩ候補パケット２３０〜２３４がパッキングバッファアービター２５０によって選択された後に、ＦＴＩ候補パケット２３０〜２３４をキュー２１０〜２１４から選択するが、リンクパケット２６０の利用不可能なデータストレージスペース、リンクパケット２６０の所定の境界に整列された利用不可能なデータストレージスペース、又は、他の満たされていない条件のために、リンクパケット２６０に挿入されない。
【００３１】
図示するように、ＦＴＩ候補パケット２３０〜２３４の各々は、異なるデータサイズ２４０〜２４４を有する。いくつかの実施形態では、ＦＴＩ候補パケット２３０〜２３４のうち２つ以上は、同じデータサイズを有する。ある実施形態では、キュー２１０〜２１４のうち１つ以上は、異なるサイズのＦＴＩパケットを記憶する。したがって、キューアービター２２２〜２２４のうち所定の何れかがＦＴＩ候補パケットを選択した場合、選択されたＦＴＩ候補パケットは、同じキューから以前に選択されたＦＴＩ候補パケットと異なるサイズを有する。ある例では、キュー２１０が要求タイプのパケットを記憶する場合、キュー２１０は、１２８ビットのサイズを有する非圧縮要求パケットを記憶し、６４ビットのサイズを有する圧縮要求パケットを記憶する。したがって、キュー２１０のいくつかのエントリは、データサイズ２４０と異なるデータサイズを有するＦＴＩ候補パケットを記憶する。
【００３２】
図示するように、リンクパケット２６０は、セクター２６２〜２６６に分割される。ある実施形態では、各セクターは３２ビットである。セクター２６２〜２６６の他のデータサイズも可能であり、想到される。ある実施形態では、リンクパケット２６０は、８つのセクターを含む。他の実施形態では、リンクパケット２６０は、別の数のセクターを含む。様々な実施形態では、リンクパケット２６０は、レジスタに記憶される。他の実施形態では、他の順序記憶要素が使用される。制御ＦＴＩ候補パケット等のデータを記憶することに加えて、セクター２６２〜２６６のうち何れのセクター（複数可）が利用可能であり、何れのセクターが割り当てられるかを示す等の他のメタデータ（図示省略）が記憶される。パッキングバッファアービター２５０は、ＦＴＩ候補パケット２３０〜２３４を受信し、リンクパケット２６０の利用可能なデータストレージスペースに挿入するために、受信したＦＴＩ候補パケット２３０〜２３４のうち１つ以上を選択する。いくつかの実施形態では、パッキングバッファアービター２５０は、クロックサイクル毎に、ＦＴＩ候補パケット２３０〜２３４のうち何れかを選択し、リンクパケット２６０に挿入することが可能である。別の実施形態では、パッキングバッファアービター２５０は、クロックサイクル毎に、ＦＴＩ候補パケット２３０〜２３４のうち２つ以上を選択し、リンクパケット２６０に挿入することが可能である。
【００３３】
様々な実施形態では、パッキングバッファアービター２５０は、組み合わせロジック及び順序要素の組み合わせを含む。パッキングバッファアービター２５０は、ハードウェア、ソフトウェア、又は、ハードウェア及びソフトウェアの組み合わせで実装される。いくつかの実施形態では、パッキングバッファアービター２５０は、１つ以上の属性に基づいて、１つ以上のＦＴＩ候補パケット２３０〜２３４を選択してリンクパケット２６０に挿入する。１つ以上の属性は、パケットエージ（packet age）、パケットタイプの優先レベル、サービス品質パラメータ、ソース識別子、アプリケーション識別子又はアプリケーションタイプ（リアルタイムアプリケーション等）、トラフィックタイプ（リアルタイムトラフィック等）の指標、帯域幅要件又は遅延許容要件等を含む。いくつかの実施形態では、パッキングバッファアービター２５０は、クロックサイクル毎に、挿入（パッキング）のために、ＦＴＩ候補パケット２３０〜２３４のうち何れかを選択する。他の実施形態では、パッキングバッファアービター２５０は、クロックサイクル毎に、挿入（パッキング）のために、ＦＴＩ候補パケット２３０〜２３４のうち２つ以上を選択する。
【００３４】
様々な実施形態では、パッキングバッファアービター２５０は、リンクパケット２６０が、ＦＴＩ候補パケット２３２〜２３４のうち所定の何れかに残りの利用可能なデータストレージスペースを有するかどうかを判別する。いくつかの実施形態では、パッキングバッファアービター２５０は、リンクパケット２６０が、ＦＴＩ候補パケット２３２〜２３４のうち所定の何れかの所定の境界に整列された残りの利用可能なデータストレージスペースを有するかどうかを判別する。いくつかの実施形態では、パッキングバッファアービター２５０は、ＦＴＩ候補パケット２３２〜２３４をリンクパケット２６０にパッキング（挿入）する速度と、ファブリックリンクの他端における受信機の受信キューで利用可能なデータストレージスペースを生成する速度と、の不一致を考慮するための制御ロジックを含む。この不一致は、リンクがリンクパケットを送信するのに利用可能な場合に、ファブリックのネットワークでアイドルクロックサイクル（バブル（bubbles））を追加及び削除することによって、発生する。
【００３５】
一例では、ファブリックインターフェースがデータ転送エラーを検出し、データを再送信すると、アイドルクロックサイクル（バブル）がファブリックリンクに挿入される。場合によっては、これらのアイドルサイクルは維持されず、ファブリックのネットワーク全体でのバス利用及びバスアービトレーションによって、パケット送信機２００から受信機に送信される２つのリンクパケット間で除去される。したがって、受信機の受信キューにおけるデータ衝突を回避するために、ある実施形態では、パッキングバッファアービター２５０は、データ衝突を回避するために、パケット受信機の受信されたリンクパケット間の最小サイクル数のカウントを、所定のタイプのパケットを記憶する受信キューに記憶する。
【００３６】
一例では、ファブリックリンクの他端のパケット受信機は、所定のタイプ（例えば、制御応答パケット）の受信キューを有し、この受信キューは、受信パケットを割り当てるための２つの利用可能なエントリを有する。アクセスロジックを単純化し、タイミング要件を満たすために、何れかのエントリに所定のタイプの受信パケットを割り当てるのではなく、いくつかの実施形態では、受信キューの同じ２つのエントリが、受信パケットを割り当てるのに利用可能である。次のクロックサイクルでは、所定のタイプの２つの割り当てられたパケットに対応する情報が、他のエントリに再配置される。ある実施形態では、情報は、２つのエントリによって下（又は、上）にシフトされる。別の実施形態では、情報は、単一のエントリによって下（又は、上）にシフトされる。さらに別の実施形態では、情報は、属性に基づいて他のエントリに記憶された情報でソートされる。属性の例は、上述した通りである。様々な実施形態では、パケット送信機２００のパッキングバッファアービター２５０は、パケット受信機における実装を認識し、ＦＴＩ候補パケット２３０〜２３４をリンクパケット２６０に挿入する場合に、この知識を使用する。
【００３７】
上記の例を使用すると、パッキングバッファアービター２５０は、データ衝突を回避するために、パケット受信機の受信されたリンクパケット間の最小クロックサイクル数（又は、最小サイクル数）が１サイクルであることを認識する。例えば、クロックサイクル１では、パケット受信機は、所定のタイプの２つの制御ＦＴＩパケット（例えば、制御応答パケット）を受信し、それらを所定のタイプの受信キューの２つのエントリ（例えば、エントリ０及びエントリ１）に割り当てることができる。クロックサイクル２では、受信キューは、最近受信した制御ＦＴＩパケットに対応する情報を、２つのエントリ（例えば、エントリ０及びエントリ１）から受信キューの他のエントリにシフトする。例えば、一実施形態では、受信キューのエントリに記憶された情報は、アービトレーションの目的でソートされる。
【００３８】
クロックサイクル２では、２つのエントリ（例えば、エントリ０及びエントリ１）は、新しい情報を受信することが不可能である。所定のタイプの１つ以上の新しい制御ＦＴＩパケットの新しい情報が受信された場合、２つのエントリ（例えば、エントリ０及びエントリ１）でデータ衝突が発生する。クロックサイクル３では、２つのエントリ（例えば、エントリ０及びエントリ１）が、新たに割り当てられる情報を受信するために再度利用可能になる。したがって、この例の所定のタイプの制御ＦＴＩパケットの場合、パケット受信機は、所定のタイプの制御ＦＴＩパケットのデータ衝突を回避するために、パケット受信機の受信されたリンクパケット間の最小数の１クロックサイクルを必要とする。様々な実施形態では、第１のタイプの制御ＦＴＩパケットのパケット受信機におけるデータ衝突を回避するための受信されたリンクパケット間の最小クロックサイクル数は、第２のタイプの制御ＦＴＩパケットの最小クロックサイクル数と異なる。様々な実施形態では、パッキングバッファアービター２５０は、「タイプ１」から「タイプＮ」等の制御タイプ毎の最小クロックサイクル数に関する別々の値を記憶する。
【００３９】
いくつかの実施形態では、パッキングバッファアービター２５０は、さらに、有効なネットワークサイクルの第１のカウントを維持し、有効なネットワークサイクルの各々が、パケット送信機２００からの次のリンクパケット２６０がファブリックリンクを使用することを可能にする。いくつかの実施形態では、パッキングバッファアービター２５０は、リンクパケット２６０に挿入された所定のタイプの複数のＦＴＩ候補パケットの数の第２のカウントを維持する。したがって、パッキングバッファアービター２５０は、「タイプ１」から「タイプＮ」等の制御タイプ毎に別々の第２のカウントを維持する。様々な実施形態では、パッキングバッファアービター２５０は、３つのオペランドを加算することによって、所定のタイプのＦＴＩパケットの合計を決定する。第１のオペランドは、所定のタイプの第２のカウントである。第２のオペランドは、所定のタイプに記憶された最小クロックサイクル数である。そして、第３のオペランドは、連続セクターが所定の境界に整列されたセクター２６２〜２６６の１つ以上の連続セクターに適合するＦＴＩ候補パケットのための１である。ある実施形態では、パッキングバッファアービター２５０が、合計が第１のカウントよりも小さいと判別した場合、パッキングバッファアービター２５０は、ＦＴＩ候補パケットをリンクパケット２６０に挿入し、第２のカウントをインクリメントする。
【００４０】
図３を参照すると、コンピューティングシステムにおいて効率的なデータ転送を行う方法３００の一実施形態が示されている。説明の目的のために、本実施形態のステップ（図４〜図５及び図７と同様に）は、順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する１つ以上の要素が同時に行われてもよいし、図示した順序と異なる順序で行われてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加要素も行われる。本明細書に記載された様々なシステム又は装置の何れも、方法３００を実施するように構成されている。
【００４１】
パケットが受信され、リンク上で送信される（ブロック３０２）。一例では、処理ユニットは、制御要求パケットを生成し、送信先に送信する。別の例では、メモリコントローラは、制御応答パケットを生成し、要求元の処理ユニットに送信する。ファブリックトランスポートインターフェースは、制御パケットを受信するパケット送信機を含む。受信されたパケットは、パケットタイプに基づいて複数のキューに記憶される（ブロック３０４）。上述したように、制御パケットタイプの例は、要求タイプ、応答タイプ、プローブタイプ、及び、トークンタイプ又はクレジットタイプを含む。また、パケットタイプの他の例は、他の実施形態に含まれる。
【００４２】
各キューから候補パケットが選択される（ブロック３０６）。いくつかの実施形態では、キューアービターは、１つ以上の属性に基づいて、候補パケットをキューから選択する。１つ以上の属性は、経過時間（age）、パケットタイプの優先レベル、パケットの優先レベル、サービス品質パラメータ、ソース識別子、アプリケーション識別子又はアプリケーションタイプ（リアルタイムアプリケーション等）、トラフィックタイプの指標（リアルタイムトラフィック等）、帯域幅要件又は遅延許容要件等を含む。
【００４３】
受信機へのリンクが利用可能であり、リンクパケットが空でない場合（条件付きブロック３０８：「はい」）、パックされたリンクパケットは、利用可能なリンクを介して受信機に送信される（ブロック３１０）。いくつかの実施形態では、ファブリックトランスポートインターフェースは、パックされたリンクパケットを送信するのにファブリックリンクが利用可能であることを指定する信号又は他の指標を、パケット送信機に送信する。受信機へのリンクが利用不可能である又はリンクパケットが空である場合（条件付きブロック３０８：「いいえ」）、１つ以上の候補パケットが条件付きでリンクパケットにパックされる（ブロック３１２）。
【００４４】
条件は、リンクパケットが所定の候補パケットを受信するのに十分なデータストレージスペースがあるかどうかを含む。いくつかの実施形態では、リンクパケットが、所定の候補パケットに対して所定の境界に整列された利用可能なデータストレージスペースが十分にあるかどうかを判別する。リンクパケットが一杯である場合（条件付きブロック３１４：「はい」）、受信機へのリンクが利用可能になるまで待機する（ブロック３１６）。その後、方法３００の制御フローは、ブロック３１０に移動する。リンクパケットが一杯ではない場合（条件付きブロック３１４：「いいえ」）、方法３００の制御フローは条件付きブロック３０８に戻り、受信機へのリンクが利用可能であるかどうかと、リンクパケットが空であるかどうかと、を判別する。
【００４５】
図４を参照すると、コンピューティングシステムにおいて効率的なデータ転送を行う方法４００の一実施形態が示されている。各タイプのパケットを記憶する複数のキューから候補パケットが受信される（ブロック４０２）。いくつかの実施形態では、キューアービターは、各クロックサイクルで候補パケットをキューから選択する。他の実施形態では、キューアービターは、以前に選択した候補パケットがリンクパケットに挿入された後に、候補パケットをキューから選択する。さらに他の実施形態では、キューアービターは、以前に選択した候補パケットがパッキングバッファアービターによって選択された後に、候補パケットをキューから選択するが、リンクパケットの利用不可能なデータストレージスペース、リンクパケットの所定の境界に整列された利用不可能なデータストレージスペース、又は、他の満たされていない条件のために、リンクパケットに挿入されない。
【００４６】
利用可能なキューのグループが識別される（ブロック４０４）。いくつかの実施形態では、所定のキューが１つ以上の候補パケットを記憶する場合、所定のキューは、利用可能なキューのグループにある。ある実施形態では、複数のキューのうち１つ以上は、リンクパケットが利用可能なリンクに送信される前に、キューからリンクパケットに挿入されるいくつかのパケットに各々の制限を有する。いくつかの実施形態では、制限は、構成及びステータスレジスタに記憶される。様々な実施形態では、レジスタはプログラム可能である。キューは、最も優先度の高い利用可能なキューのグループから選択される（ブロック４１０）。いくつかの実施形態では、優先度は、１つ以上の属性に基づいている。１つ以上の属性は、パケットエージ、パケットタイプの優先レベル、サービス品質パラメータ、ソース識別子、アプリケーション識別子又はアプリケーションタイプ（リアルタイムアプリケーション等）、トラフィックタイプ（リアルタイムトラフィック等）の指標、帯域幅要件又は遅延許容要件等を含む。
【００４７】
選択されたキューの候補パケットが挿入条件を満たす場合（条件付きブロック４１２：「はい」）、候補パケットがリンクパケットに挿入される（ブロック４１８）。上述したように、いくつかの実施形態では、リンクパケットが、候補パケットについて所定の境界に整列された残りの利用可能なデータストレージスペースを有するかどうかを判別する。また、候補パケットをリンクパケットに挿入する速度と、受信機の受信キューで利用可能なデータストレージスペースを生成する速度と、の不一致を考慮することによって、候補パケットをリンクパケットに挿入することによって受信機におけるデータ衝突を回避できるかどうかを判別する。
【００４８】
選択されたキューの候補パケットが挿入条件を満たしていない場合（条件付きブロック４１２：「いいえ」）、選択されたキューは、別の候補パケットを選択するように通知される（ブロック４１４）。一実施形態では、次の候補パケットは、次のクロックサイクルで選択されたキューによって選択される。いくつかの実施形態では、候補パケットがリンクパケットに挿入されるか、リンクパケットが送信されるまで、選択されたキューの優先度が下げられる（ブロック４１６）。他の実施形態では、選択されたキューの優先度が維持される。さらに他の実施形態では、選択されたキューの優先度が維持されるが、選択されたキューは、利用可能なキューのグループから除去される。その後、方法４００の制御フローはブロック４０４に戻り、ブロック４０４において、利用可能なキューのグループが識別される。いくつかの実施形態では、ブロック４０４〜ブロック４１６又はブロック４１８のループは、クロックサイクル内で複数回繰り返される。
【００４９】
図５を参照すると、コンピューティングシステムにおいて効率的なデータ転送を行う方法５００の一実施形態が示されている。候補パケットが、選択されたキューから受信される（ブロック５０２）。ある実施形態では、リンクパケットをパックするために使用されるパッキングバッファアービターは、候補パケットを受信する。選択されたキューの候補パケットのための利用可能なスペースが受信機にない場合（条件付きブロック５０４：「いいえ」）、選択されたキューは、利用可能なキューのグループから除去される（ブロック５０６）。
【００５０】
選択されたキューの候補パケットのための利用可能なスペースが受信機にあるが（条件付きブロック５０４：「はい」）、選択されたキューの候補パケットのための利用可能なスペースがリンクパケットにない場合（条件付きブロック５０８：「いいえ」）、選択されたキューは、利用可能なキューのグループから除去される（ブロック５０６）。選択されたキューの候補パケットのための利用可能なスペースがリンクパケットにあるが（条件付きブロック５０８：「はい」）、リンクパケットの利用可能なスペースが所定の境界に整列されていない場合（条件付きブロック５１０：「いいえ」）、選択されたキューは、利用可能なキューのグループから除去される（ブロック５０６）。リンクパケットの利用可能なスペースが所定の境界に整列されている場合（条件付きブロック５１０：「はい」）、候補パケットは、リンクパケットに挿入される（ブロック５１２）。
【００５１】
図６を参照すると、パケット受信機６００の一実施形態の全体的なブロック図が示されている。図示した実施形態では、パケット受信機６００は、各タイプのパケットを記憶するためのキュー６１０〜６１４を含む。図示したように、パケット受信機６００は、リンクパケット６６０を、ファブリックリンクから受信する。リンクパケット６６０は、２つ以上のファブリックトランスポートインターフェース（ＦＴＩ）パケットを記憶するのに十分なデータストレージスペースを有する。分配デマルチプレクサロジック６５０（又は、ロジック６５０）は、リンクパケット６６０のセクター６６２〜６６６を分析し、リンクパケット６６０のＦＴＩ制御パケットの数と、ＦＴＩ制御パケットがリンクパケット６６０に位置する場所と、を判別し、ＦＴＩ制御パケットを、記憶するためにキュー６１０〜６１４に送信する。
【００５２】
キュー６１０〜６１４に記憶される制御パケットタイプの例は、要求タイプ、応答タイプ、プローブタイプ、及び、トークンタイプ又はクレジットタイプを含む。また、パケットタイプの他の例は、他の実施形態に含まれる。図示するように、ある実施形態では、キュー６１０は、制御要求タイプである「タイプ１」のパケットを記憶する。ある実施形態では、キュー６１２は、制御応答タイプである「タイプ２」のパケットを記憶する。ある実施形態では、キュー６１４は、制御トークンタイプ又はクレジットタイプである「タイプＮ」のパケットを記憶する。
【００５３】
図示するように、リンクパケット６６０は、セクター６６２〜６６６に分割されている。ある実施形態では、各セクターは３２ビットである。セクター６６２〜６６６の他のデータサイズも可能であり、想到される。ある実施形態では、リンクパケット６６０は、８つのセクターを含む。他の実施形態では、リンクパケット６６０は、別の数のセクターを含む。制御ＦＴＩパケット等のデータを記憶することに加えて、セクター６６２〜６６６のうち何れセクター（複数可）が割り当てられ、コントローラＦＴＩパケットがどこから始まるかを示すような他のメタデータ（図示省略）が記憶される。これは、いくつかの実施形態では、制御ＦＴＩパケットが様々なデータサイズを有するためである。
【００５４】
様々な実施形態では、ロジック６５０は、組み合わせロジック及び順序要素の組み合わせを含む。ロジック６５０は、ハードウェア、ソフトウェア、又は、それらの組み合わせで実装される。図示するように、ロジック６５０は、１つ以上の制御ＦＴＩパケットをリンクパケット６６０から除去し、それらをキュー６１０〜６１４に送信する。様々な実施形態では、ＦＴＩ候補パケット６３０〜６３４の各々は、異なるデータサイズ６４０〜６４４を有する。いくつかの実施形態では、ＦＴＩ候補パケット６３０〜６３４のうち２つ以上は、同じデータサイズを有する。ある実施形態では、キュー６１０〜６１４のうち１つ以上は、異なるサイズのＦＴＩパケットを記憶する。したがって、ロジック６５０がＦＴＩパケット６３０等のＦＴＩパケットをキュー６１０に送信する場合、ＦＴＩパケットは、同じキューに送信された以前のＦＴＩパケットと異なるサイズを有する。ある例では、キュー６１０が要求タイプのパケットを記憶する場合、キュー６１０は、１２８ビットのサイズを有する非圧縮要求パケットを記憶し、６４ビットのサイズを有する圧縮要求パケットを記憶する。したがって、キュー６１０のいくつかのエントリは、データサイズ６４０と異なるデータサイズを有するＦＴＩ候補パケットを記憶する。
【００５５】
ある実施形態では、キュー６１０〜６１４の各々は、受信されたパケットを割り当てるための２つの利用可能なエントリを有する。アクセスロジックを単純化し、タイミング要件を満たすために、任意のエントリにＦＴＩパケット６３０〜６３４を割り当てるのではなく、いくつかの実施形態では、キュー６１０〜６１４の同じ２つのエントリが、受信パケットを割り当てるのに利用可能である。図示するように、上位２つのエントリは、ＦＴＩパケット６３０〜６３４のうち１つ以上を受信するために使用される。他の実施形態では、キュー６１０〜６１４内の別のいくつかのエントリ及び他の場所が使用される。いくつかの実施形態では、有効フィールド６１１，６１３，６１５は、利用可能なエントリを示すために使用される。ある実施形態では、有効フィールド６１１，６１３，６１５に記憶された否定値が、利用可能なエントリを示す一方で、有効フィールド６１１，６１３，６１５に記憶されたアサート値が、割り当てられたエントリを示す。
【００５６】
次のクロックサイクルでは、キュー６１０〜６１４に新たに割り当てられた情報は、他のエントリに再配置される。ある実施形態では、情報は、２つのエントリだけ下（又は、上）にシフトされる。別の実施形態では、情報は、単一のエントリだけ下（又は、上）にシフトされる。さらに別の実施形態では、情報は、属性に基づいて他のエントリに記憶された情報でソートされる。属性の例は、上述したものである。様々な実施形態では、（図２の）パケット送信機２００は、パケット受信機６００における実装を認識し、ＦＴＩ候補パケットをリンクパケットに挿入する場合に、この知識を使用する。
【００５７】
いくつかの実施形態では、ロジック６５０は、パケットタイプ毎のトークン又はクレジット６５２を、側波帯接続のパケット送信機に送信する。いくつかの実施形態では、キュー６１０〜６１４のうち１つ以上の利用可能なエントリの数は、記憶されたＦＴＩパケットが処理のために送信される場合のキュー６１０〜６１４のエントリの割り当て解除に基づいて、デフォルト値（例えば、２つのエントリ等）を超えて増加する。係る場合、パケット送信機は、キュー６１０〜６１４におけるデータ衝突を回避するために、パケット受信機６００の受信リンクパケット間の最小サイクル数についての記憶された値を更新する。
【００５８】
図７を参照すると、コンピューティングシステムにおいて効率的なデータ転送を行う方法７００の一実施形態が示されている。所定のタイプのパケットを記憶する受信キューにおいてデータ衝突を回避するために、第１のカウントが、受信機の受信リンクパケット間の最小サイクル数である場合に、第１のカウントが記憶される（ブロック７０２）。１つ以上のコマンドパケットを含むリンクパケットは、リンクを介して受信機に送信される（ブロック７０４）。有効なネットワークサイクルの第２のカウントがリセットされ、有効なネットワークサイクルの各々は、次のリンクパケットがリンクを使用することを可能にする（ブロック７０６）。第３のカウントは、リンクパケットに挿入された所定のタイプの候補パケットの数である場合にリセットされる（ブロック７０８）。
【００５９】
ファブリックのネットワークによってリンクが有効になっている場合（条件付きブロック７１０：「はい」）、第２のカウントがインクリメントされる（ブロック７１２）。挿入条件を満たす所定のタイプの候補パケットが存在する場合（条件ブロック７１４：「はい」）、合計は、第１のカウントと、第３のカウントと、候補パケット用の１とを加算することによって決定される（ブロック７１６）。合計が第２のカウントよりも小さい場合（条件付きブロック７２０：「はい」）、所定のタイプの候補パケットがリンクパケットに挿入される（ブロック７２２）。また、第３のカウントがインクリメントされる（ブロック７２４）。その後、方法７００の制御フローはブロック７２６に移動する。同様に、挿入条件を満たす所定のタイプの候補パケットが存在しない場合（条件付きブロック７１４：「いいえ」）、又は、合計が第２のカウントよりも小さくない場合（条件付きブロック７２０：「いいえ」）、方法７００の制御フローは条件付きブロック７２６に移動する。
【００６０】
リンクパケットを送信する準備ができている場合（条件付きブロック７２６：「はい」）、方法７００の制御フローは条件付きブロック７０４に戻り、ブロック７０４において、１つ以上のコマンドパケットを含むリンクパケットが、リンクを介して受信機に送信される。いくつかの実施形態では、ファブリックトランスポートインターフェースが、リンクが利用可能であり、リンクパケットが空でないという信号又は他の指標を送信する場合に、リンクパケットの準備ができているとみなされる。リンクパケットを送信する準備ができていない場合（条件付きブロック７２６：「いいえ」）、方法７００は、次のクロックサイクルまで待機する（ブロック７２８）。例えば、ファブリックトランスポートインターフェースが、リンクが利用可能である又はリンクパケットが空であるという信号又は他の指標を送信しない場合、リンクパケットを送信する準備ができていない。その後、方法７００の制御フローは、ブロック「Ａ」を介して条件付きブロック７１０に戻り、条件付きブロック７１０において、リンクがファブリックのネットワークによって有効になっているかどうかが判別される。
【００６１】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述した方法及び／又はメカニズムが実施される。プログラム命令は、Ｃ言語等の高水準プログラミング言語でハードウェアの動作を記述する。代替として、Ｖｅｒｉｌｏｇ等のハードウェア設計言語（ＨＤＬ）が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多くのタイプの記憶媒体が利用可能である。記憶媒体は、プログラムの実行のためにプログラム命令及び付随するデータをコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。コンピューティングシステムは、少なくとも、１つ以上のメモリと、プログラム命令を実行する１つ以上のプロセッサと、を含む。
【００６２】
上述した実施形態は、実装の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、いくつかの変形及び修正が当業者に明らかになるであろう。以下の「特許請求の範囲」は、係る変形及び変更の全てを包含するように解釈されることが意図される。
【図１】
2021534684.tif 000003
【図２】
2021534684.tif 000004
【図３】
2021534684.tif 000005
【図４】
2021534684.tif 000006
【図５】
2021534684.tif 000007
【図６】
2021534684.tif 000008
【図７】
2021534684.tif 000009
【国際調査報告】
2021534684.tif 000010
2021534684.tif 000011