JP7161032B2 - リンク層データパッキング及びパケットフロー制御スキーム - Google Patents

リンク層データパッキング及びパケットフロー制御スキーム Download PDF

Info

Publication number
JP7161032B2
JP7161032B2 JP2021509755A JP2021509755A JP7161032B2 JP 7161032 B2 JP7161032 B2 JP 7161032B2 JP 2021509755 A JP2021509755 A JP 2021509755A JP 2021509755 A JP2021509755 A JP 2021509755A JP 7161032 B2 JP7161032 B2 JP 7161032B2
Authority
JP
Japan
Prior art keywords
packet
candidate
link
packets
determining
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021509755A
Other languages
English (en)
Other versions
JP2021534684A (ja
Inventor
ディー. ダンリー グレゴリー
ピー. ブルッサール ブライアン
カリヤナスンダラム ヴィドヒャナサン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2021534684A publication Critical patent/JP2021534684A/ja
Application granted granted Critical
Publication of JP7161032B2 publication Critical patent/JP7161032B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/6275Queue scheduling characterised by scheduling criteria for service slots or service orders based on priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/18Handling requests for interconnection or transfer for access to memory bus based on priority control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Description

コンピューティングシステムでは、いくつかのタイプのアプリケーションは、他のアプリケーションよりも並列処理及び共有メモリをうまく活用することを可能にする機能を実行する。係るアプリケーションの例は、機械学習アプリケーション、エンターテインメントアプリケーション、リアルタイムアプリケーション、いくつかのビジネスアプリケーション、科学アプリケーション、医療アプリケーション、及び、他のアプリケーションを含む。いくつかのプロセッサアーキテクチャは、2つ以上の処理ユニット(例えばCPU、GPU等)又は処理コアを含むが、場合によっては、メモリに結合された1つ又は2つの追加の処理ユニット又はコアは、所望のレベルのパフォーマンスを提供するのに十分なレベルの並列処理を必ずしも提供するわけではない。
読み取りアクセスコマンド及び書き込みアクセスコマンドと、対応するデータとに加えて、コヒーレンシプローブ、割り込み及び他の通信メッセージは、通信ファブリック(又はファブリック)を介して、システム内で転送される。ファブリック内の相互接続の例は、バスアーキテクチャ、クロスバーベースアーキテクチャ、ネットワークオンチップ(NoC)通信サブシステム、ダイ間の通信チャネル、チップを並べてスタックするために使用されるシリコンインターポーザ、プロセッサダイの上に専用ダイを垂直にスタックするために使用されるスルーシリコンビア(TSV)等である。
多くの場合、ファブリックは、比較的広いパケットをサポートする複数の物理チャネルを有する。単一のファブリック内でデータを転送している間では比較的多数の物理ワイヤが利用可能であるため、ファブリックによって遅延が軽減される。しかしながら、ファブリックを介して別個のダイを接続する場合、及び、別個の処理ノードを各々のファブリックと接続する場合、データ、利用可能な帯域幅を制限する非常に少ない数の物理ワイヤを介して転送される。場合によっては、リンク物理ワイヤは、ダイ上の物理ワイヤデータレートの倍数であるデータレートでデータを転送する。しかしながら、ダイ間及びノード間で通信する場合には、依然として大幅な帯域幅の減少がある。
上記のデータ転送の非効率性に加えて、異なるソースからの様々なタイプのパケットが、制御情報と共に何度も組み合わされる。様々なパケットタイプの1つ以上のソースは、異なるバス幅を有し、単一のソース内のパケット間で様々な量の情報を伝送する。多くの場合、異なるソースから異なるサイズのこれらのパケットは非効率的な方法で組み合わされ、リンク帯域幅の効率がさらに低下する。
さらに、送信機からのパケットの送信速度が受信機におけるパケットの受信速度と一致しない場合、受信機におけるデータ衝突によってデータ破壊が発生する。一例では、送信機は、処理ユニットのグラフィックス処理ユニット(GPU)であり、受信機は、ファブリックである。送信機からのパケットの送信データレートを下げるという保守的なアプローチは、データ破壊を防ぐが、リンク帯域幅の効率をさらに低下させる。
上記に鑑み、コンピューティングシステムで効率的なデータ転送を行うための効率的な方法及びシステムが望まれている。
本明細書に説明される方法及びメカニズムの利点は、添付の図面と併せて以下の説明を参照することによって良好に理解され得る。
コンピューティングシステムの一実施形態のブロック図である。 パケット送信機の一実施形態のブロック図である。 コンピューティングシステムにおける効率的なデータ転送を行う方法の一実施形態のフロー図である。 コンピューティングシステムにおける効率的なデータ転送を行う方法の別の実施形態のフロー図である。 コンピューティングシステムにおける効率的なデータ転送を行う方法の別の実施形態のフロー図である。 パケット受信機の一実施形態のブロック図である。 コンピューティングシステムにおける効率的なデータ転送を行う方法の別の実施形態のフロー図である。
本発明は様々な修正及び代替形態を受け入れるが、特定の実施形態が、図面の例として示され、本明細書で詳細に説明される。しかしながら、図面及びその詳細な説明は、開示された特定の形態に本発明を限定するものではなく、むしろ、本発明は、添付の「特許請求の範囲」によって定義される本発明の範囲内に含まれる全ての修正、均等物及び代替物を含むことを理解されたい。
以下の説明では、本明細書に提示される方法及びメカニズムの十分な理解をもたらすために、多くの特定の詳細が記載される。しかしながら、当業者は、その特定の詳細を用いないで、様々な実施形態を実施し得ることを認識するはずである。いくつかの例では、本明細書に説明されるアプローチを曖昧にすることを回避するために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素は必ずしも縮尺通りに描かれていないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張され得る。
コンピューティングシステムにおいて効率的なデータ転送を行うための様々なシステム、装置、方法及びコンピュータ可読記憶媒体を開示する。様々な実施形態では、コンピューティングシステムは、アプリケーションを処理するための1つ以上のクライアントを含む。クライアントの例は、汎用中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、アクセラレーテッド処理ユニット(APU)、入出力(I/O)デバイス等を含む。また、コンピューティングシステムは、少なくとも、電力コントローラと、クライアント間でデータを転送するための複数のリンクインターフェースと、を含む。
様々な実施形態では、1つ以上のクライアント及びファブリックは、各々がパケット送信機及びパケット受信機を有するファブリックインターフェースを含む。パケット送信機は、各タイプのパケットを記憶するための複数のキューを含む。パケットタイプの例は、要求タイプ、応答タイプ、プローブタイプ、及び、トークンタイプ又はクレジットタイプを含む。タイプの他の例は、制御タイプであるコマンド又はメッセージ等のパケット内のデータのタイプを含む。書き込み要求の場合、いくつかの実施形態では、書き込み要求は、コマンド又は制御パケットに挿入された書き込みコマンドに分割される。また、書き込み要求は、書き込みコマンドに対応する別個の書き込みデータパケットに分割される。読み取り要求は、コマンド又は制御パケットに挿入された読み取りコマンドとして送信される。読み取りコマンドに対する応答は、コマンド又は制御パケットに挿入された読み取りメッセージとして送信される。読み取られた応答データは、別のデータパケットに挿入される。
いくつかの実施形態では、複数のキューのうち2つ以上は、異なるサイズのパケットを記憶する。ある実施形態では、パケット送信機は、複数のキューの各々から候補パケットを選択するための複数のキューアービターを含む。パケット送信機は、リンクパケットを記憶するためのバッファをさらに含む。様々な実施形態では、リンクパケットは、複数の候補パケットを記憶するためのデータストレージスペースを含む。リンクパケットは、他のデータの転送でビジー状態でなくなったリンクを介して受信機に送信される。いくつかの実施形態では、リンクパケットを記憶するためのバッファは、複数のレジスタ、フリップフロップ回路又は他の順序要素を含む。
パケット送信機はパッキングアービターを含み、パッキングアービターは、複数のキューから適格な候補パケットを選択し、これらの候補パケットをリンクパケットに挿入する。いくつかの実施形態では、パッキングアービターは、1つ以上の属性に基づいて候補パケットを選択し、リンクバッファに挿入する。1つ以上の属性は、経過時間(age)、パケットタイプの優先レベル、サービス品質パラメータ、ソース識別子、アプリケーション識別子又はアプリケーションタイプ(リアルタイムアプリケーション等)、トラフィックタイプの指標(リアルタイムトラフィック等)、帯域幅要件、又は、遅延許容要件等を含む。様々な実施形態では、パッキングアービターは、フィリングリンクパケット(filling link packet)が所定の候補パケットに対して利用可能な残りのデータストレージスペースを有するかどうかを判別する。いくつかの実施形態では、パッキングアービターは、フィリングリンクパケットが、所定の候補パケットに対して所定の境界上に整列された残りの利用可能なデータストレージスペースを有するかどうかを判別する。
パッキングアービターは、候補パケットをリンクパケットにパッキング(挿入)する速度と、受信機の受信キューで利用可能なデータストレージスペースを生成する速度と、の不一致を考慮するための制御ロジックを含む。不一致は、リンクがリンクパケットを伝送するのに利用可能である場合に、ファブリックのネットワークがクロックサイクルを追加及び削除することによっても発生する。
一例では、ファブリックインターフェースがデータ転送エラーを検出してデータを再送信すると、パケット送信機の観点から、アイドルクロックサイクルがリンクに挿入される。場合によっては、このアイドルサイクルは維持されず、ファブリックのネットワーク全体でのバス利用率及びバスアービトレーションによって、パケット送信機から送信された2つのリンクパケット間で除去される。したがって、受信機の受信キューにおけるデータ衝突を回避するために、パケット送信機は、次のリンクパケットがパケット送信機に接続されたリンクを使用することを可能にする、有効なネットワークサイクルの第1のカウントと、リンクパケットに挿入された所定のタイプの候補パケットの数の第2のカウントと、を維持する。パケット送信機は、データ衝突を回避するために、受信機の受信されたリンクパケット間の最小サイクル数の第3のカウントを、所定のタイプのパケットを記憶する受信キューに記憶する。パケット送信機は、これらのカウントを使用して、所定の候補パケットをリンクパケットに挿入するタイミングを決定する。
図1を参照すると、コンピューティングシステム100の一実施形態の全体的なブロック図が示されている。図示するように、コンピューティングシステム100は、各クライアント110と、メモリコントローラ130と、電力コントローラ170と、リンクインターフェース180間の通信ファブリック120と、を含む。いくつかの実施形態では、処理ノード100のコンポーネントは、システムオンチップ(SOC)等の集積回路(IC)上の個々のダイである。他の実施形態では、コンポーネントは、システムインパッケージ(SiP)又はマルチチップモジュール(MCM)内の個々のダイである。
図示した実施形態では、クライアント110は、中央処理ユニット(CPU)112と、グラフィックス処理ユニット(GPU)114と、ハブ116と、を含む。ハブ116は、マルチメディアエンジン118と通信するために使用される。CPU112、GPU114及びマルチメディアエンジン118は、アプリケーションを処理することができるコンピューティングリソースの例である。図示していないが、他の実施形態では、他のタイプのコンピューティングリソースが、クライアント110に含まれる。CPU112の1つ以上のプロセッサコアの各々は、所定の選択された命令セットアーキテクチャ(ISA)に従って命令を実行するための回路を含む。様々な実施形態では、CPU112のプロセッサコアの各々は、所定のISAの命令を処理するために使用されるスーパースカラのマルチスレッドマイクロアーキテクチャを含む。ある実施形態では、GPU114は、多くの並列実行レーンを有する高並列データマイクロアーキテクチャを含む。一実施形態では、マイクロアーキテクチャは、並列実行レーン用の単一命令複数データ(SIMD)パイプラインを使用する。マルチメディアエンジン118は、マルチメディアアプリケーション用の音声データ及び映像データを処理するためのプロセッサを含む。
一実施形態では、電力コントローラ170は、所定のサンプリング間隔中に、所定のサンプリング信号等のデータをクライアント110から収集する。いくつかの実施形態では、ノード100内のオンダイ電流センサ及び温度センサは、情報を電力コントローラ170に送信する。いくつかの実施形態では、電力コントローラ170は、クライアント110内のコンピューティングリソース毎に、各々の電力性能状態(P状態)を選択する。P状態は、少なくとも、動作電圧及び動作クロック周波数を含む。
単一のメモリコントローラ130が示されているが、他の実施形態では、別の数のメモリコントローラが処理ノード100で使用される。様々な実施形態では、メモリコントローラ130は、通信ファブリック120を介してクライアント110からメモリ要求を受信し、そのメモリ要求をスケジュールし、スケジュールされたメモリ要求を、システムメモリ及びメインメモリのうち1つ以上に送信する。また、メモリコントローラ130は、システムメモリ及びメインメモリから応答を受信し、その応答を、クライアント110の対応する要求ソースに送信する。様々な実施形態では、システムメモリは、I/Oコントローラ、バス160及びメモリバス150を介したメインメモリからのデータで満たされる。要求されたブロックに対応するキャッシュフィルラインは、元のメモリ要求を完了させるために、メインメモリからクライアント110内のキャッシュメモリサブシステムのうち対応するサブシステムに伝達される。キャッシュフィルラインは、キャッシュの1つ以上のレベルに配置される。
いくつかの実施形態では、処理ノード100のアドレススペースは、少なくとも、CPU112、GPU114及びハブ116と、入出力(I/O)周辺デバイス(図示省略)及び他のタイプのコンピューティングリソース等の1つ以上の他のコンポーネントと、の間で分割される。メモリマップは、何れのアドレスが何れのコンポーネントにマッピングされ、したがって、特定のアドレスのメモリ要求がCPU112、GPU114及びハブ116のうち何れにルーティングされるかを判別するために維持される。ある実施形態では、システムメモリは、様々なダイナミックランダムアクセスメモリ(DRAM)の1つであり、対応するプロトコルは、メモリコントローラ130によってサポートされる。プロトコルは、クロックサイクル当たりのデータ転送数、信号電圧レベル、信号タイミング、信号位相及びクロック位相、並びに、クロック周波数等の情報転送に使用される値を決定する。いくつかの実施形態では、メインメモリは、データの不揮発性ランダムアクセス二次ストレージの様々なタイプのうち1つである。メインメモリの例は、ハードディスクドライブ(HDD)及びソリッドステートディスク(SSD)である。
様々な実施形態では、通信ファブリック120(又は、ファブリック120)は、コンピューティングリソース110とメモリコントローラ130との間でトラフィックを往復転送し、各通信プロトコルをサポートするためのインターフェースを含む。「トラフィック」は、コマンド、メッセージ、プローブ、割り込み等のデータと、コマンド及びメッセージに対応するデータと、を含む。いくつかの実施形態では、ファブリック120は、少なくとも、要求及び応答を記憶するためのキューと、内部ネットワークを介して要求を送信する前に受信された要求間でアービトレーションを行うための選択ロジックと、パケットを構築及び復号するためのロジックと、パケットのルートを選択するためのロジックと、を含む。
いくつかの実施形態では、ファブリックトランスポートインターフェース(FTI)180は、リンク上でトラフィックを転送することによって、コンピューティングシステム100と他のコンピューティングシステム又は処理ノードとの間の通信をサポートする。様々な実施形態では、リンクを介して送信されるトラフィックは、1つ以上の処理ノードの動作状態の指標、パワーダウン要求、要求に対する応答、割り込み及び他の情報を含む。図示するように、クライアント110は、CPU112用のFTI113と、GPU114用のFTI115と、ハブ116用のFTI117と、を含む。また、メモリコントローラ130はFTI132を含むのに対し、電力コントローラ170はFTI172を含む。ファブリック120は、説明を容易にするために図示されていない複数のファブリックトランスポートインターフェースを含む。いくつかの実施形態では、ファブリックトランスポートインターフェースに接続された各リンクは、ポイントツーポイント通信チャネルである。他の実施形態では、ファブリックトランスポートインターフェースに接続された1つ以上のリンクは、エンドツーエンド通信チャネルである。
物理レベルにおいて、リンクは1つ以上のレーンを含む。いくつかの実施形態では、ファブリックトランスポートインターフェースは、通信に使用される制御ロジック及びバッファ又はキューを含む。いくつかの実施形態では、ファブリックトランスポートインターフェース及び対応するリンクは、PCIe(Peripheral Component Interconnect Express)、InfiniBand、RapidIO、HyperTransport、AXI(Advanced eXtensible Interface)等の通信プロトコル接続を含む。
いくつかの実施形態では、ファブリックトランスポートインターフェースの各々は、各タイプのパケットを記憶するための複数のキューを含む。また、複数のキューの各々から候補パケットを選択するための複数のキューアービターがある。コンピューティングシステム100の1つ以上のファブリックトランスポートインターフェースは、リンクパケットを記憶するためのバッファを含み、リンクパケットは、複数の候補パケットを記憶するためのデータストレージスペースを含む。いくつかの実施形態では、複数のキューのうち2つ以上は、異なるサイズの候補パケットを記憶する。ファブリックトランスポートインターフェースのパッキングアービターは、複数のキューから適格な候補パケットを選択し、これらの候補パケットをリンクパケットに挿入する。いくつかの実施形態では、パッキングアービターは、フィリングリンクパケットが、所定の候補パケットの所定の境界上に整列された残りの利用可能なデータストレージスペースを有するかどうかを判別する。ファブリックトランスポートインターフェースのパケット受信機は、パケット送信機によって送信されたリンクパケットを受信するための受信キューを含む。パケット送信機のパッキングアービターは、候補パケットをリンクパケットに挿入する速度と、受信機の受信キューで利用可能なデータストレージスペースを生成する速度と、の不一致を考慮することによって、受信機でのデータ衝突を回避する。
図2を参照すると、パケット送信機200の一実施形態の全体的なブロック図が示されている。図示した実施形態では、パケット送信機200は、各タイプのパケットを記憶するためのキュー210~214を含む。いくつかの実施形態では、パケットは、フロー制御ユニット(フリット(flit))である。フリットは、大きなパケットのサブセットである。フリットは、概して、大きなパケットのヘッダー及びテール情報等のデータ及び制御情報を伝送する。送信用データは、ネットワーク内でルーティングされるパケットとして記述されているが、他の実施形態では、送信用データは、ポイントツーポイント相互接続におけるビットストリーム又はバイトストリームである。様々な実施形態では、キュー210~214は、ファブリックリンク上で送信される制御パケットを記憶する。フリットに対応する大きなパケット等の対応するデータパケットは、別のソースから送信される。
いくつかの実施形態では、大きなデータパケットのソース等の1つ以上の他のソースは、ファブリックリンクをパケット送信機200と共有する。したがって、ファブリックリンクは、制御パケットの送信に常に利用可能ではない。また、パケット送信機200は、候補パケット230~234のうち1つ以上をリンクパケット260に挿入するためのパッキングバッファアービター250を含む。リンクパケット260は、2つ以上のファブリックトランスポートインターフェース(FTI)候補パケット230~234を記憶するのに十分なデータストレージスペースを有する。ある実施形態では、パケット送信機200は、2つの要件が満たされた場合に、ファブリックリンク上にリンクパケット260を送信する。第1の要件は、ファブリックトランスポートインターフェースが、ファブリックリンクが利用可能であることを示す信号をパケット送信機200に送信することである。第2の要件は、パケット送信機200が、リンクパケット260が空でないと判別することである。
キュー210~214に記憶される制御パケットタイプの例は、要求タイプ、応答タイプ、プローブタイプ、及び、トークンタイプ又はクレジットタイプを含む。また、パケットタイプの他の例も他の実施形態に含まれる。図示するように、ある実施形態では、キュー210は、制御要求タイプである「タイプ1」のパケットを記憶する。ある実施形態では、キュー212は、制御応答タイプである「タイプ2」のパケットを記憶する。ある実施形態では、キュー214は、制御トークンタイプ又はクレジットタイプである「タイプN」のパケットを記憶する。
キューアービター220は、キュー210からファブリックトランスポートインターフェース(FTI)候補パケット230を選択する。いくつかの実施形態では、キューアービター220は、1つ以上の属性に基づいてFTI候補パケット230を選択する。1つ以上の属性は、経過時間(age)、パケットタイプの優先レベル、パケットの優先レベル、サービス品質パラメータ、ソース識別子、アプリケーション識別子又はアプリケーションタイプ(リアルタイムアプリケーション等)、トラフィックタイプの指標(リアルタイムトラフィック等)、帯域幅要件又は遅延許容要件等を含む。同様に、キューアービター222~224は、キュー212~214からFTI候補パケット232~234を選択する。
いくつかの実施形態では、キューアービター220~224は、FTI候補パケット230~234を、各クロックサイクルでキュー210~214から選択する。他の実施形態では、キューアービター220~224は、以前に選択したFTI候補パケット230~234がリンクパケット260に挿入された後に、FTI候補パケット230~234をキュー210~214から選択する。さらに他の実施形態では、キューアービター220~224は、以前に選択したFTI候補パケット230~234がパッキングバッファアービター250によって選択された後に、FTI候補パケット230~234をキュー210~214から選択するが、リンクパケット260の利用不可能なデータストレージスペース、リンクパケット260の所定の境界に整列された利用不可能なデータストレージスペース、又は、他の満たされていない条件のために、リンクパケット260に挿入されない。
図示するように、FTI候補パケット230~234の各々は、異なるデータサイズ240~244を有する。いくつかの実施形態では、FTI候補パケット230~234のうち2つ以上は、同じデータサイズを有する。ある実施形態では、キュー210~214のうち1つ以上は、異なるサイズのFTIパケットを記憶する。したがって、キューアービター222~224のうち所定の何れかがFTI候補パケットを選択した場合、選択されたFTI候補パケットは、同じキューから以前に選択されたFTI候補パケットと異なるサイズを有する。ある例では、キュー210が要求タイプのパケットを記憶する場合、キュー210は、128ビットのサイズを有する非圧縮要求パケットを記憶し、64ビットのサイズを有する圧縮要求パケットを記憶する。したがって、キュー210のいくつかのエントリは、データサイズ240と異なるデータサイズを有するFTI候補パケットを記憶する。
図示するように、リンクパケット260は、セクター262~266に分割される。ある実施形態では、各セクターは32ビットである。セクター262~266の他のデータサイズも可能であり、想到される。ある実施形態では、リンクパケット260は、8つのセクターを含む。他の実施形態では、リンクパケット260は、別の数のセクターを含む。様々な実施形態では、リンクパケット260は、レジスタに記憶される。他の実施形態では、他の順序記憶要素が使用される。制御FTI候補パケット等のデータを記憶することに加えて、セクター262~266のうち何れのセクター(複数可)が利用可能であり、何れのセクターが割り当てられるかを示す等の他のメタデータ(図示省略)が記憶される。パッキングバッファアービター250は、FTI候補パケット230~234を受信し、リンクパケット260の利用可能なデータストレージスペースに挿入するために、受信したFTI候補パケット230~234のうち1つ以上を選択する。いくつかの実施形態では、パッキングバッファアービター250は、クロックサイクル毎に、FTI候補パケット230~234のうち何れかを選択し、リンクパケット260に挿入することが可能である。別の実施形態では、パッキングバッファアービター250は、クロックサイクル毎に、FTI候補パケット230~234のうち2つ以上を選択し、リンクパケット260に挿入することが可能である。
様々な実施形態では、パッキングバッファアービター250は、組み合わせロジック及び順序要素の組み合わせを含む。パッキングバッファアービター250は、ハードウェア、ソフトウェア、又は、ハードウェア及びソフトウェアの組み合わせで実装される。いくつかの実施形態では、パッキングバッファアービター250は、1つ以上の属性に基づいて、1つ以上のFTI候補パケット230~234を選択してリンクパケット260に挿入する。1つ以上の属性は、パケットエージ(packet age)、パケットタイプの優先レベル、サービス品質パラメータ、ソース識別子、アプリケーション識別子又はアプリケーションタイプ(リアルタイムアプリケーション等)、トラフィックタイプ(リアルタイムトラフィック等)の指標、帯域幅要件又は遅延許容要件等を含む。いくつかの実施形態では、パッキングバッファアービター250は、クロックサイクル毎に、挿入(パッキング)のために、FTI候補パケット230~234のうち何れかを選択する。他の実施形態では、パッキングバッファアービター250は、クロックサイクル毎に、挿入(パッキング)のために、FTI候補パケット230~234のうち2つ以上を選択する。
様々な実施形態では、パッキングバッファアービター250は、リンクパケット260が、FTI候補パケット232~234のうち所定の何れかに残りの利用可能なデータストレージスペースを有するかどうかを判別する。いくつかの実施形態では、パッキングバッファアービター250は、リンクパケット260が、FTI候補パケット232~234のうち所定の何れかの所定の境界に整列された残りの利用可能なデータストレージスペースを有するかどうかを判別する。いくつかの実施形態では、パッキングバッファアービター250は、FTI候補パケット232~234をリンクパケット260にパッキング(挿入)する速度と、ファブリックリンクの他端における受信機の受信キューで利用可能なデータストレージスペースを生成する速度と、の不一致を考慮するための制御ロジックを含む。この不一致は、リンクがリンクパケットを送信するのに利用可能な場合に、ファブリックのネットワークでアイドルクロックサイクル(バブル(bubbles))を追加及び削除することによって、発生する。
一例では、ファブリックインターフェースがデータ転送エラーを検出し、データを再送信すると、アイドルクロックサイクル(バブル)がファブリックリンクに挿入される。場合によっては、これらのアイドルサイクルは維持されず、ファブリックのネットワーク全体でのバス利用及びバスアービトレーションによって、パケット送信機200から受信機に送信される2つのリンクパケット間で除去される。したがって、受信機の受信キューにおけるデータ衝突を回避するために、ある実施形態では、パッキングバッファアービター250は、データ衝突を回避するために、パケット受信機の受信されたリンクパケット間の最小サイクル数のカウントを、所定のタイプのパケットを記憶する受信キューに記憶する。
一例では、ファブリックリンクの他端のパケット受信機は、所定のタイプ(例えば、制御応答パケット)の受信キューを有し、この受信キューは、受信パケットを割り当てるための2つの利用可能なエントリを有する。アクセスロジックを単純化し、タイミング要件を満たすために、何れかのエントリに所定のタイプの受信パケットを割り当てるのではなく、いくつかの実施形態では、受信キューの同じ2つのエントリが、受信パケットを割り当てるのに利用可能である。次のクロックサイクルでは、所定のタイプの2つの割り当てられたパケットに対応する情報が、他のエントリに再配置される。ある実施形態では、情報は、2つのエントリによって下(又は、上)にシフトされる。別の実施形態では、情報は、単一のエントリによって下(又は、上)にシフトされる。さらに別の実施形態では、情報は、属性に基づいて他のエントリに記憶された情報でソートされる。属性の例は、上述した通りである。様々な実施形態では、パケット送信機200のパッキングバッファアービター250は、パケット受信機における実装を認識し、FTI候補パケット230~234をリンクパケット260に挿入する場合に、この知識を使用する。
上記の例を使用すると、パッキングバッファアービター250は、データ衝突を回避するために、パケット受信機の受信されたリンクパケット間の最小クロックサイクル数(又は、最小サイクル数)が1サイクルであることを認識する。例えば、クロックサイクル1では、パケット受信機は、所定のタイプの2つの制御FTIパケット(例えば、制御応答パケット)を受信し、それらを所定のタイプの受信キューの2つのエントリ(例えば、エントリ0及びエントリ1)に割り当てることができる。クロックサイクル2では、受信キューは、最近受信した制御FTIパケットに対応する情報を、2つのエントリ(例えば、エントリ0及びエントリ1)から受信キューの他のエントリにシフトする。例えば、一実施形態では、受信キューのエントリに記憶された情報は、アービトレーションの目的でソートされる。
クロックサイクル2では、2つのエントリ(例えば、エントリ0及びエントリ1)は、新しい情報を受信することが不可能である。所定のタイプの1つ以上の新しい制御FTIパケットの新しい情報が受信された場合、2つのエントリ(例えば、エントリ0及びエントリ1)でデータ衝突が発生する。クロックサイクル3では、2つのエントリ(例えば、エントリ0及びエントリ1)が、新たに割り当てられる情報を受信するために再度利用可能になる。したがって、この例の所定のタイプの制御FTIパケットの場合、パケット受信機は、所定のタイプの制御FTIパケットのデータ衝突を回避するために、パケット受信機の受信されたリンクパケット間の最小数の1クロックサイクルを必要とする。様々な実施形態では、第1のタイプの制御FTIパケットのパケット受信機におけるデータ衝突を回避するための受信されたリンクパケット間の最小クロックサイクル数は、第2のタイプの制御FTIパケットの最小クロックサイクル数と異なる。様々な実施形態では、パッキングバッファアービター250は、「タイプ1」から「タイプN」等の制御タイプ毎の最小クロックサイクル数に関する別々の値を記憶する。
いくつかの実施形態では、パッキングバッファアービター250は、さらに、有効なネットワークサイクルの第1のカウントを維持し、有効なネットワークサイクルの各々が、パケット送信機200からの次のリンクパケット260がファブリックリンクを使用することを可能にする。いくつかの実施形態では、パッキングバッファアービター250は、リンクパケット260に挿入された所定のタイプの複数のFTI候補パケットの数の第2のカウントを維持する。したがって、パッキングバッファアービター250は、「タイプ1」から「タイプN」等の制御タイプ毎に別々の第2のカウントを維持する。様々な実施形態では、パッキングバッファアービター250は、3つのオペランドを加算することによって、所定のタイプのFTIパケットの合計を決定する。第1のオペランドは、所定のタイプの第2のカウントである。第2のオペランドは、所定のタイプに記憶された最小クロックサイクル数である。そして、第3のオペランドは、連続セクターが所定の境界に整列されたセクター262~266の1つ以上の連続セクターに適合するFTI候補パケットのための1である。ある実施形態では、パッキングバッファアービター250が、合計が第1のカウントよりも小さいと判別した場合、パッキングバッファアービター250は、FTI候補パケットをリンクパケット260に挿入し、第2のカウントをインクリメントする。
図3を参照すると、コンピューティングシステムにおいて効率的なデータ転送を行う方法300の一実施形態が示されている。説明の目的のために、本実施形態のステップ(図4~図5及び図7と同様に)は、順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する1つ以上の要素が同時に行われてもよいし、図示した順序と異なる順序で行われてもよいし、完全に省略されてもよいことに留意されたい。必要に応じて、他の追加要素も行われる。本明細書に記載された様々なシステム又は装置の何れも、方法300を実施するように構成されている。
パケットが受信され、リンク上で送信される(ブロック302)。一例では、処理ユニットは、制御要求パケットを生成し、送信先に送信する。別の例では、メモリコントローラは、制御応答パケットを生成し、要求元の処理ユニットに送信する。ファブリックトランスポートインターフェースは、制御パケットを受信するパケット送信機を含む。受信されたパケットは、パケットタイプに基づいて複数のキューに記憶される(ブロック304)。上述したように、制御パケットタイプの例は、要求タイプ、応答タイプ、プローブタイプ、及び、トークンタイプ又はクレジットタイプを含む。また、パケットタイプの他の例は、他の実施形態に含まれる。
各キューから候補パケットが選択される(ブロック306)。いくつかの実施形態では、キューアービターは、1つ以上の属性に基づいて、候補パケットをキューから選択する。1つ以上の属性は、経過時間(age)、パケットタイプの優先レベル、パケットの優先レベル、サービス品質パラメータ、ソース識別子、アプリケーション識別子又はアプリケーションタイプ(リアルタイムアプリケーション等)、トラフィックタイプの指標(リアルタイムトラフィック等)、帯域幅要件又は遅延許容要件等を含む。
受信機へのリンクが利用可能であり、リンクパケットが空でない場合(条件付きブロック308:「はい」)、パックされたリンクパケットは、利用可能なリンクを介して受信機に送信される(ブロック310)。いくつかの実施形態では、ファブリックトランスポートインターフェースは、パックされたリンクパケットを送信するのにファブリックリンクが利用可能であることを指定する信号又は他の指標を、パケット送信機に送信する。受信機へのリンクが利用不可能である又はリンクパケットが空である場合(条件付きブロック308:「いいえ」)、1つ以上の候補パケットが条件付きでリンクパケットにパックされる(ブロック312)。
条件は、リンクパケットが所定の候補パケットを受信するのに十分なデータストレージスペースがあるかどうかを含む。いくつかの実施形態では、リンクパケットが、所定の候補パケットに対して所定の境界に整列された利用可能なデータストレージスペースが十分にあるかどうかを判別する。リンクパケットが一杯である場合(条件付きブロック314:「はい」)、受信機へのリンクが利用可能になるまで待機する(ブロック316)。その後、方法300の制御フローは、ブロック310に移動する。リンクパケットが一杯ではない場合(条件付きブロック314:「いいえ」)、方法300の制御フローは条件付きブロック308に戻り、受信機へのリンクが利用可能であるかどうかと、リンクパケットが空であるかどうかと、を判別する。
図4を参照すると、コンピューティングシステムにおいて効率的なデータ転送を行う方法400の一実施形態が示されている。各タイプのパケットを記憶する複数のキューから候補パケットが受信される(ブロック402)。いくつかの実施形態では、キューアービターは、各クロックサイクルで候補パケットをキューから選択する。他の実施形態では、キューアービターは、以前に選択した候補パケットがリンクパケットに挿入された後に、候補パケットをキューから選択する。さらに他の実施形態では、キューアービターは、以前に選択した候補パケットがパッキングバッファアービターによって選択された後に、候補パケットをキューから選択するが、リンクパケットの利用不可能なデータストレージスペース、リンクパケットの所定の境界に整列された利用不可能なデータストレージスペース、又は、他の満たされていない条件のために、リンクパケットに挿入されない。
利用可能なキューのグループが識別される(ブロック404)。いくつかの実施形態では、所定のキューが1つ以上の候補パケットを記憶する場合、所定のキューは、利用可能なキューのグループにある。ある実施形態では、複数のキューのうち1つ以上は、リンクパケットが利用可能なリンクに送信される前に、キューからリンクパケットに挿入されるいくつかのパケットに各々の制限を有する。いくつかの実施形態では、制限は、構成及びステータスレジスタに記憶される。様々な実施形態では、レジスタはプログラム可能である。キューは、最も優先度の高い利用可能なキューのグループから選択される(ブロック410)。いくつかの実施形態では、優先度は、1つ以上の属性に基づいている。1つ以上の属性は、パケットエージ、パケットタイプの優先レベル、サービス品質パラメータ、ソース識別子、アプリケーション識別子又はアプリケーションタイプ(リアルタイムアプリケーション等)、トラフィックタイプ(リアルタイムトラフィック等)の指標、帯域幅要件又は遅延許容要件等を含む。
選択されたキューの候補パケットが挿入条件を満たす場合(条件付きブロック412:「はい」)、候補パケットがリンクパケットに挿入される(ブロック418)。上述したように、いくつかの実施形態では、リンクパケットが、候補パケットについて所定の境界に整列された残りの利用可能なデータストレージスペースを有するかどうかを判別する。また、候補パケットをリンクパケットに挿入する速度と、受信機の受信キューで利用可能なデータストレージスペースを生成する速度と、の不一致を考慮することによって、候補パケットをリンクパケットに挿入することによって受信機におけるデータ衝突を回避できるかどうかを判別する。
選択されたキューの候補パケットが挿入条件を満たしていない場合(条件付きブロック412:「いいえ」)、選択されたキューは、別の候補パケットを選択するように通知される(ブロック414)。一実施形態では、次の候補パケットは、次のクロックサイクルで選択されたキューによって選択される。いくつかの実施形態では、候補パケットがリンクパケットに挿入されるか、リンクパケットが送信されるまで、選択されたキューの優先度が下げられる(ブロック416)。他の実施形態では、選択されたキューの優先度が維持される。さらに他の実施形態では、選択されたキューの優先度が維持されるが、選択されたキューは、利用可能なキューのグループから除去される。その後、方法400の制御フローはブロック404に戻り、ブロック404において、利用可能なキューのグループが識別される。いくつかの実施形態では、ブロック404~ブロック416又はブロック418のループは、クロックサイクル内で複数回繰り返される。
図5を参照すると、コンピューティングシステムにおいて効率的なデータ転送を行う方法500の一実施形態が示されている。候補パケットが、選択されたキューから受信される(ブロック502)。ある実施形態では、リンクパケットをパックするために使用されるパッキングバッファアービターは、候補パケットを受信する。選択されたキューの候補パケットのための利用可能なスペースが受信機にない場合(条件付きブロック504:「いいえ」)、選択されたキューは、利用可能なキューのグループから除去される(ブロック506)。
選択されたキューの候補パケットのための利用可能なスペースが受信機にあるが(条件付きブロック504:「はい」)、選択されたキューの候補パケットのための利用可能なスペースがリンクパケットにない場合(条件付きブロック508:「いいえ」)、選択されたキューは、利用可能なキューのグループから除去される(ブロック506)。選択されたキューの候補パケットのための利用可能なスペースがリンクパケットにあるが(条件付きブロック508:「はい」)、リンクパケットの利用可能なスペースが所定の境界に整列されていない場合(条件付きブロック510:「いいえ」)、選択されたキューは、利用可能なキューのグループから除去される(ブロック506)。リンクパケットの利用可能なスペースが所定の境界に整列されている場合(条件付きブロック510:「はい」)、候補パケットは、リンクパケットに挿入される(ブロック512)。
図6を参照すると、パケット受信機600の一実施形態の全体的なブロック図が示されている。図示した実施形態では、パケット受信機600は、各タイプのパケットを記憶するためのキュー610~614を含む。図示したように、パケット受信機600は、リンクパケット660を、ファブリックリンクから受信する。リンクパケット660は、2つ以上のファブリックトランスポートインターフェース(FTI)パケットを記憶するのに十分なデータストレージスペースを有する。分配デマルチプレクサロジック650(又は、ロジック650)は、リンクパケット660のセクター662~666を分析し、リンクパケット660のFTI制御パケットの数と、FTI制御パケットがリンクパケット660に位置する場所と、を判別し、FTI制御パケットを、記憶するためにキュー610~614に送信する。
キュー610~614に記憶される制御パケットタイプの例は、要求タイプ、応答タイプ、プローブタイプ、及び、トークンタイプ又はクレジットタイプを含む。また、パケットタイプの他の例は、他の実施形態に含まれる。図示するように、ある実施形態では、キュー610は、制御要求タイプである「タイプ1」のパケットを記憶する。ある実施形態では、キュー612は、制御応答タイプである「タイプ2」のパケットを記憶する。ある実施形態では、キュー614は、制御トークンタイプ又はクレジットタイプである「タイプN」のパケットを記憶する。
図示するように、リンクパケット660は、セクター662~666に分割されている。ある実施形態では、各セクターは32ビットである。セクター662~666の他のデータサイズも可能であり、想到される。ある実施形態では、リンクパケット660は、8つのセクターを含む。他の実施形態では、リンクパケット660は、別の数のセクターを含む。制御FTIパケット等のデータを記憶することに加えて、セクター662~666のうち何れセクター(複数可)が割り当てられ、コントローラFTIパケットがどこから始まるかを示すような他のメタデータ(図示省略)が記憶される。これは、いくつかの実施形態では、制御FTIパケットが様々なデータサイズを有するためである。
様々な実施形態では、ロジック650は、組み合わせロジック及び順序要素の組み合わせを含む。ロジック650は、ハードウェア、ソフトウェア、又は、それらの組み合わせで実装される。図示するように、ロジック650は、1つ以上の制御FTIパケットをリンクパケット660から除去し、それらをキュー610~614に送信する。様々な実施形態では、FTI候補パケット630~634の各々は、異なるデータサイズ640~644を有する。いくつかの実施形態では、FTI候補パケット630~634のうち2つ以上は、同じデータサイズを有する。ある実施形態では、キュー610~614のうち1つ以上は、異なるサイズのFTIパケットを記憶する。したがって、ロジック650がFTIパケット630等のFTIパケットをキュー610に送信する場合、FTIパケットは、同じキューに送信された以前のFTIパケットと異なるサイズを有する。ある例では、キュー610が要求タイプのパケットを記憶する場合、キュー610は、128ビットのサイズを有する非圧縮要求パケットを記憶し、64ビットのサイズを有する圧縮要求パケットを記憶する。したがって、キュー610のいくつかのエントリは、データサイズ640と異なるデータサイズを有するFTI候補パケットを記憶する。
ある実施形態では、キュー610~614の各々は、受信されたパケットを割り当てるための2つの利用可能なエントリを有する。アクセスロジックを単純化し、タイミング要件を満たすために、任意のエントリにFTIパケット630~634を割り当てるのではなく、いくつかの実施形態では、キュー610~614の同じ2つのエントリが、受信パケットを割り当てるのに利用可能である。図示するように、上位2つのエントリは、FTIパケット630~634のうち1つ以上を受信するために使用される。他の実施形態では、キュー610~614内の別のいくつかのエントリ及び他の場所が使用される。いくつかの実施形態では、有効フィールド611,613,615は、利用可能なエントリを示すために使用される。ある実施形態では、有効フィールド611,613,615に記憶された否定値が、利用可能なエントリを示す一方で、有効フィールド611,613,615に記憶されたアサート値が、割り当てられたエントリを示す。
次のクロックサイクルでは、キュー610~614に新たに割り当てられた情報は、他のエントリに再配置される。ある実施形態では、情報は、2つのエントリだけ下(又は、上)にシフトされる。別の実施形態では、情報は、単一のエントリだけ下(又は、上)にシフトされる。さらに別の実施形態では、情報は、属性に基づいて他のエントリに記憶された情報でソートされる。属性の例は、上述したものである。様々な実施形態では、(図2の)パケット送信機200は、パケット受信機600における実装を認識し、FTI候補パケットをリンクパケットに挿入する場合に、この知識を使用する。
いくつかの実施形態では、ロジック650は、パケットタイプ毎のトークン又はクレジット652を、側波帯接続のパケット送信機に送信する。いくつかの実施形態では、キュー610~614のうち1つ以上の利用可能なエントリの数は、記憶されたFTIパケットが処理のために送信される場合のキュー610~614のエントリの割り当て解除に基づいて、デフォルト値(例えば、2つのエントリ等)を超えて増加する。係る場合、パケット送信機は、キュー610~614におけるデータ衝突を回避するために、パケット受信機600の受信リンクパケット間の最小サイクル数についての記憶された値を更新する。
図7を参照すると、コンピューティングシステムにおいて効率的なデータ転送を行う方法700の一実施形態が示されている。所定のタイプのパケットを記憶する受信キューにおいてデータ衝突を回避するために、第1のカウントが、受信機の受信リンクパケット間の最小サイクル数である場合に、第1のカウントが記憶される(ブロック702)。1つ以上のコマンドパケットを含むリンクパケットは、リンクを介して受信機に送信される(ブロック704)。有効なネットワークサイクルの第2のカウントがリセットされ、有効なネットワークサイクルの各々は、次のリンクパケットがリンクを使用することを可能にする(ブロック706)。第3のカウントは、リンクパケットに挿入された所定のタイプの候補パケットの数である場合にリセットされる(ブロック708)。
ファブリックのネットワークによってリンクが有効になっている場合(条件付きブロック710:「はい」)、第2のカウントがインクリメントされる(ブロック712)。挿入条件を満たす所定のタイプの候補パケットが存在する場合(条件ブロック714:「はい」)、合計は、第1のカウントと、第3のカウントと、候補パケット用の1とを加算することによって決定される(ブロック716)。合計が第2のカウントよりも小さい場合(条件付きブロック720:「はい」)、所定のタイプの候補パケットがリンクパケットに挿入される(ブロック722)。また、第3のカウントがインクリメントされる(ブロック724)。その後、方法700の制御フローはブロック726に移動する。同様に、挿入条件を満たす所定のタイプの候補パケットが存在しない場合(条件付きブロック714:「いいえ」)、又は、合計が第2のカウントよりも小さくない場合(条件付きブロック720:「いいえ」)、方法700の制御フローは条件付きブロック726に移動する。
リンクパケットを送信する準備ができている場合(条件付きブロック726:「はい」)、方法700の制御フローは条件付きブロック704に戻り、ブロック704において、1つ以上のコマンドパケットを含むリンクパケットが、リンクを介して受信機に送信される。いくつかの実施形態では、ファブリックトランスポートインターフェースが、リンクが利用可能であり、リンクパケットが空でないという信号又は他の指標を送信する場合に、リンクパケットの準備ができているとみなされる。リンクパケットを送信する準備ができていない場合(条件付きブロック726:「いいえ」)、方法700は、次のクロックサイクルまで待機する(ブロック728)。例えば、ファブリックトランスポートインターフェースが、リンクが利用可能である又はリンクパケットが空であるという信号又は他の指標を送信しない場合、リンクパケットを送信する準備ができていない。その後、方法700の制御フローは、ブロック「A」を介して条件付きブロック710に戻り、条件付きブロック710において、リンクがファブリックのネットワークによって有効になっているかどうかが判別される。
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、上述した方法及び/又はメカニズムが実施される。プログラム命令は、C言語等の高水準プログラミング言語でハードウェアの動作を記述する。代替として、Verilog等のハードウェア設計言語(HDL)が使用される。プログラム命令は、非一時的なコンピュータ可読記憶媒体に記憶される。多くのタイプの記憶媒体が利用可能である。記憶媒体は、プログラムの実行のためにプログラム命令及び付随するデータをコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。コンピューティングシステムは、少なくとも、1つ以上のメモリと、プログラム命令を実行する1つ以上のプロセッサと、を含む。
上述した実施形態は、実装の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されれば、いくつかの変形及び修正が当業者に明らかになるであろう。以下の「特許請求の範囲」は、係る変形及び変更の全てを包含するように解釈されることが意図される。

Claims (18)

  1. 各々のタイプのパケットを記憶するように構成された複数のキューと、
    前記複数のキューの各々から候補パケットを選択するように構成された複数のキューアービターと、
    パッキングアービターと、を備え、
    前記パッキングアービターは、
    前記複数のキューから利用可能なキューのグループを識別することと、
    前記利用可能なキューのグループの中で第1のキューが最も高い優先度を有すると判別したことに応じて、前記利用可能なキューのグループからキューを選択することと、
    前記第1のキューからの前記候補パケットが挿入条件を満たすと判別したことに応じて、前記第1のキューからの前記候補パケットを、複数の候補パケットのためのスペースを含むリンクパケットに挿入することと、
    を行うように構成されており、
    前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別することは、前記選択されたキューからの前記候補パケットを記憶するために、前記リンクパケット内に利用可能なデータストレージスペースがあるのを判別することを含む、
    装置。
  2. 前記パッキングアービターは、前記選択されたキューからの前記候補パケットが挿入条件を満たしていないと判別したことに応じて、前記選択されたキューに対応するキューアービターに対して、異なる候補パケットを選択するように通知するようにさらに構成されている、
    請求項1の装置。
  3. 前記パッキングアービターは、前記選択されたキューからの前記候補パケットが挿入条件を満たしていないと判別したことに応じて、
    前記候補パケットが前記リンクパケットに挿入されたことと、
    前記リンクパケットが送信されたことと、
    のうち何れかを検出するまで、前記選択されたキューの前記優先度を下げるように構成されている、
    請求項1の装置。
  4. 前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別することは、前記リンクパケット内の前記利用可能なデータストレージスペースが所定の境界に整列されているのを判別することを含む、
    請求項の装置。
  5. 前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別することは、前記選択されたキューからの前記候補パケットを記憶するために、利用可能なデータストレージスペースが受信機にあると判別することを含む、
    請求項1の装置。
  6. 前記パッキングアービターは、リンクパケットがリンクを介して受信機に送信されたことを判別したことに応じて、
    次のリンクパケットが前記リンクを使用するのを可能にする有効なネットワークサイクルの第1のカウントと、
    前記リンクパケットに挿入された所定のタイプの候補パケットの数の第2のカウントと、
    の各々をリセットするように構成されている、
    請求項1の装置。
  7. 前記リンクが、次のリンクパケットを、前記リンクを介して前記受信機に送信するのに利用可能であることを判別したことに応じて、前記パッキングアービターは、前記第1のカウントをインクリメントするように構成されている、
    請求項の装置。
  8. 前記次のリンクパケットへの挿入条件を満たす前記所定のタイプの候補パケットがあることを判別したことに応じて、前記パッキングアービターは、
    前記第2のカウントと、
    前記候補パケットのための1と、
    前記所定のタイプのパケットを記憶する受信キューでのデータ衝突を回避するための前記受信機の受信リンクパケット間の最小サイクル数と、
    を追加することによって、合計を決定するように構成されている、
    請求項の装置。
  9. 前記合計が前記第1のカウントよりも小さいと判別したことに応じて、前記パッキングアービターは、
    前記所定のタイプの前記候補パケットを前記次のリンクパケットに挿入することと、
    前記第2のカウントをインクリメントすることと、
    を行うように構成されている、
    請求項の装置。
  10. 前記利用可能なキューのグループは、
    少なくとも1つの有効パケットを記憶することと、
    所定の回数連続して選択されないことと、
    を行う1つ以上のキューを含む、
    請求項2の装置。
  11. 各々のタイプのパケットを記憶するように構成された複数のキューにパケットを記憶することと、
    複数のキューアービターによって、前記複数のキューの各々から候補パケットを選択することと、
    制御ロジックによって、前記複数のキューから利用可能なキューのグループを識別することと、
    前記制御ロジックによって、前記選択されたキューが前記利用可能なキューのグループの中で最も高い優先度を有すると判別したことに応じて、前記制御ロジックによって、前記利用可能なキューのグループからキューを選択することと、
    前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別したことに応じて、前記制御ロジックによって、前記選択されたキューからの前記候補パケットを、複数の候補パケットのためのスペースを含むリンクパケットに挿入することと、を含み、
    前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別することは、前記選択されたキューからの前記候補パケットを記憶するために、前記リンクパケット内に利用可能なデータストレージスペースがあるのを判別することを含む、
    方法。
  12. 前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別することは、前記選択されたキューからの前記候補パケットを記憶するために、利用可能なデータストレージスペースが受信機にあると判別することを含む、
    請求項11の方法。
  13. リンクパケットがリンクを介して受信機に送信されたことを判別したことに応じて、
    次のリンクパケットが前記リンクを使用するのを可能にする有効なネットワークサイクルの第1のカウントと、
    前記リンクパケットに挿入された所定のタイプの候補パケットの数の第2のカウントと、
    の各々をリセットすることを含む、
    請求項11の方法。
  14. 前記リンクが、次のリンクパケットを、前記リンクを介して前記受信機に送信するのに利用可能であることを判別したことに応じて、前記第1のカウントをインクリメントすることを含む、
    請求項13の方法。
  15. 前記次のリンクパケットへの挿入条件を満たす前記所定のタイプの候補パケットがあることを判別したことに応じて、
    前記第2のカウントと、
    前記候補パケットのための1つと、
    前記所定のタイプのパケットを記憶する受信キューでのデータ衝突を回避するための前記受信機の受信リンクパケット間の最小サイクル数と、
    を追加することによって、合計を決定することを含む、
    請求項14の方法。
  16. 前記合計が前記第1のカウントよりも小さいと判別したことに応じて、
    前記所定のタイプの前記候補パケットを前記次のリンクパケットに挿入することと、
    第2のカウントをインクリメントすることと、を含む、
    請求項15の方法。
  17. プログラム命令を記憶するコンピュータ可読記憶媒体であって、
    前記プログラム命令は、プロセッサによって実行されると、
    各々のタイプのパケットを記憶するように構成された複数のキューにパケットを記憶することと、
    前記複数のキューの各々から候補パケットを選択することと、
    前記複数のキューから利用可能なキューのグループを識別することと、
    前記選択されたキューが前記利用可能なキューのグループの中で最も高い優先度を有すると判別したことに応じて、前記利用可能なキューのグループからキューを選択することと、
    前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別したことに応じて、前記選択されたキューからの前記候補パケットを、複数の候補パケットのためのスペースを含むリンクパケットに挿入することと、
    をプロセッサに実行させ、
    前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別することは、前記選択されたキューからの前記候補パケットを記憶するために、前記リンクパケット内に利用可能なデータストレージスペースがあるのを判別することを含む、
    コンピュータ可読記憶媒体。
  18. 前記選択されたキューからの前記候補パケットが挿入条件を満たすと判別することは、前記選択されたキューからの前記候補パケットを記憶するために、利用可能なデータストレージスペースが受信機にあると判別することを含む、
    請求項17のコンピュータ可読記憶媒体。
JP2021509755A 2018-08-20 2019-06-26 リンク層データパッキング及びパケットフロー制御スキーム Active JP7161032B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/105,367 US20200059437A1 (en) 2018-08-20 2018-08-20 Link layer data packing and packet flow control scheme
US16/105,367 2018-08-20
PCT/US2019/039276 WO2020040873A1 (en) 2018-08-20 2019-06-26 Link layer data packing and packet flow control scheme

Publications (2)

Publication Number Publication Date
JP2021534684A JP2021534684A (ja) 2021-12-09
JP7161032B2 true JP7161032B2 (ja) 2022-10-25

Family

ID=67297339

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021509755A Active JP7161032B2 (ja) 2018-08-20 2019-06-26 リンク層データパッキング及びパケットフロー制御スキーム

Country Status (6)

Country Link
US (1) US20200059437A1 (ja)
EP (1) EP3841484B1 (ja)
JP (1) JP7161032B2 (ja)
KR (1) KR102584507B1 (ja)
CN (1) CN112585593A (ja)
WO (1) WO2020040873A1 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001197067A (ja) 2000-01-06 2001-07-19 Nippon Telegr & Teleph Corp <Ntt> データ連結転送方法及びシステム、並びにデータ連結転送プログラムを記録した記録媒体
CN1904868A (zh) 2005-07-11 2007-01-31 商辉达股份有限公司 用于包化总线的组合包
JP2008520149A (ja) 2004-11-11 2008-06-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データパケットを多重化する方法及び装置
JP2010027032A (ja) 2008-06-17 2010-02-04 Nec Electronics Corp Fifo装置及びfifoバッファへのデータ格納方法
US20130103880A1 (en) 2004-02-13 2013-04-25 Sharad Mehrotra Methods and systems for handling inter-process and inter-module communications in servers and server clusters
JP2016018251A (ja) 2014-07-04 2016-02-01 株式会社ソシオネクスト データ転送装置及びデータ転送方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6721334B1 (en) * 1999-02-18 2004-04-13 3Com Corporation Method and apparatus for packet aggregation in packet-based network
JP4605911B2 (ja) * 2001-01-24 2011-01-05 富士通株式会社 パケット送出装置
EP1402396A4 (en) * 2001-07-05 2009-05-27 Sandburst Corp METHOD AND APPARATUS FOR ALLOCATING LINK STRIP WIDTH
US7881303B2 (en) * 2006-12-13 2011-02-01 GlobalFoundries, Inc. Command packet packing to mitigate CRC overhead
GB2458952B (en) * 2008-04-04 2012-06-13 Micron Technology Inc Queue processing method
WO2010013189A2 (en) * 2008-07-29 2010-02-04 Nxp B.V. Data processing circuit with arbitration between a plurality of queues
US8665724B2 (en) * 2009-06-12 2014-03-04 Cygnus Broadband, Inc. Systems and methods for prioritizing and scheduling packets in a communication network
US8737418B2 (en) * 2010-12-22 2014-05-27 Brocade Communications Systems, Inc. Queue speed-up by using multiple linked lists
US10411830B2 (en) * 2015-02-11 2019-09-10 Avago Technologies International Sales Pte. Limited Codeword builder for communication systems
JP7000988B2 (ja) * 2018-05-21 2022-01-19 富士通株式会社 パケット転送装置及びパケット転送方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001197067A (ja) 2000-01-06 2001-07-19 Nippon Telegr & Teleph Corp <Ntt> データ連結転送方法及びシステム、並びにデータ連結転送プログラムを記録した記録媒体
US20130103880A1 (en) 2004-02-13 2013-04-25 Sharad Mehrotra Methods and systems for handling inter-process and inter-module communications in servers and server clusters
JP2008520149A (ja) 2004-11-11 2008-06-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データパケットを多重化する方法及び装置
CN1904868A (zh) 2005-07-11 2007-01-31 商辉达股份有限公司 用于包化总线的组合包
JP2010027032A (ja) 2008-06-17 2010-02-04 Nec Electronics Corp Fifo装置及びfifoバッファへのデータ格納方法
JP2016018251A (ja) 2014-07-04 2016-02-01 株式会社ソシオネクスト データ転送装置及びデータ転送方法

Also Published As

Publication number Publication date
WO2020040873A1 (en) 2020-02-27
EP3841484B1 (en) 2022-10-19
JP2021534684A (ja) 2021-12-09
US20200059437A1 (en) 2020-02-20
KR102584507B1 (ko) 2023-10-04
EP3841484A1 (en) 2021-06-30
CN112585593A (zh) 2021-03-30
KR20210040447A (ko) 2021-04-13

Similar Documents

Publication Publication Date Title
EP3729281B1 (en) Scheduling memory requests with non-uniform latencies
JP7108135B2 (ja) 並び替えの間のキャッシュ一貫性を維持する方法
TW202117547A (zh) 可重組態資料處理器的虛擬化
US20210019185A1 (en) Compute task state encapsulation
EP3732578B1 (en) Supporting responses for memory types with non-uniform latencies on same channel
EP3777059B1 (en) Queue in a network switch
US11994996B2 (en) Transmission of address translation type packets
JP2022506592A (ja) ストリーミングプラットフォームフローおよびアーキテクチャ
JP2024524047A (ja) ネットワークインターフェースデバイス
CN114746853A (zh) 存储器与分布式计算阵列之间的数据传输
JP7161032B2 (ja) リンク層データパッキング及びパケットフロー制御スキーム
US10684965B2 (en) Method to reduce write responses to improve bandwidth and efficiency

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210412

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220310

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220405

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220704

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220831

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220927

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221013

R150 Certificate of patent or registration of utility model

Ref document number: 7161032

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150