JP2023505783A - Gpuパケット集約システム - Google Patents

Gpuパケット集約システム Download PDF

Info

Publication number
JP2023505783A
JP2023505783A JP2022534186A JP2022534186A JP2023505783A JP 2023505783 A JP2023505783 A JP 2023505783A JP 2022534186 A JP2022534186 A JP 2022534186A JP 2022534186 A JP2022534186 A JP 2022534186A JP 2023505783 A JP2023505783 A JP 2023505783A
Authority
JP
Japan
Prior art keywords
packet
output
input
input packet
gpu
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.)
Pending
Application number
JP2022534186A
Other languages
English (en)
Other versions
JPWO2021119072A5 (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 JP2023505783A publication Critical patent/JP2023505783A/ja
Publication of JPWO2021119072A5 publication Critical patent/JPWO2021119072A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2212/00Encapsulation of packets
    • 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/6255Queue scheduling characterised by scheduling criteria for service slots or service orders queue load conditions, e.g. longest queue first
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing

Abstract

グラフィックス処理ユニット(GPU)[100]は、データを入力パケット[130]から自動的に集約するパケット管理コンポーネント[104]を含む。受信した第1の入力パケットが送信条件を示さないと判定したことに応じて、及び、生成された出力パケット[132]が出力サイズ閾値よりも小さいと判定したことに応じて、パケット管理コンポーネントは、第1の入力パケットに対応するデータを、パケットバッファーに記憶された第2の入力パケットに対応するデータと共に集約する。受信した第3の入力パケットが送信条件を示していると判定したことに応じて、パケット管理コンポーネントは、集約データを出力パケットで計算ユニットに送信して、送信条件によって示される動作を行う。【選択図】図1

Description

多くの場合、プロセッサは、計算ユニット(CU)と呼ばれる複数のモジュールを使用して、動作を並行して実行する。例えば、プロセッサは、グラフィックス処理ユニット(GPU)を使用して、様々な画像処理又は他の汎用処理アプリケーションを実行する。これらの動作の効率的な実行をサポートするために、GPUは、動作を並行して実行するための複数のCUを含む。しかしながら、場合によっては、これらの動作を行うために使用されるデータの通信によって、プロセッサの全体的効率に影響を与える。例えば、場合によっては、グラフィックス処理動作及びベクトル処理動作のインデックスが、バス等の通信ファブリックを介してCUに送信される。状況によっては、これらのデータ転送をサポートする通信トラフィックが、通信ファブリックの使用可能な帯域幅の大部分を不必要に消費するため、GPUの全体的な処理効率が低下する。
本開示は、添付図面を参照することによってより良好に理解され、その多くの特徴及び利点が当業者に明らかになる。異なる図面で同じ符号が使用される場合、類似又は同一のアイテムを示す。
いくつかの実施形態による、データを入力パケットから自動的に集約するハードウェアを含むグラフィックス処理ユニットのブロック図である。 いくつかの実施形態による、データを入力パケットから集約する方法を示すフロー図である。 いくつかの実施形態による、入力パケット及び出力パケットの例示的なタイムラインを処理する例示的なパケット管理コンポーネントを示すブロック図である。 いくつかの実施形態による、インデックスを入力パケットから集約して、出力パケットのインデックスを送信する、例示的なパケット管理コンポーネントを示すブロック図である。
本明細書で説明するように、様々な実施形態では、グラフィックス処理ユニット(GPU)等の処理ユニットのパケット集約システムのパケット管理コンポーネントは、出力ウェーブフロント(wavefront)が出力サイズ閾値よりも小さいと検出したことに応じて、データを着信パケットから集約する。送信条件(例えば、着信パケットがコンテキストスイッチを示す、又は、データが特定の時間にわたってパケット管理コンポーネントに保存又は保持されていることを示す)又は他の出力条件を検出したことに応じて、パケット管理コンポーネントは、集約データをウェーブフロントとして出力する。その結果、データが集約されていないシステムと比較して、通信インフラストラクチャがより効率的に使用される。さらに、場合によっては、入力パケットの数及びソフトウェア処理によるタイムラグのために、ソフトウェアシステム(例えば、ドライバ)がタイムリーに出力条件を検出することは困難である。説明する実施形態では、説明するシステムが、入力パケットが受信される場合にハードウェアレベルで出力条件を検出するので、ソフトウェアドライバがデータを集約するシステムと比較して、システムは出力条件をより容易に検出する。
CPU及び他のマルチスレッド処理ユニットは、通常、複数のデータセットで命令又は動作のセットを同時に実行する複数の処理要素(プロセッサコア又は計算ユニットとも呼ばれる)を実装する。命令又は動作のセットはスレッドと呼ばれる。スレッドの動作及びプログラムデータは、パケットと呼ばれる通信を介してコマンドプロセッサによって処理要素に送信される。グラフィックシステム等のいくつかの実施形態では、パケットは、ウェーブフロントと呼ばれるグラフィックデータの集合である。
場合によっては、ウェーブフロント(又は他のパケット)の通信はハードウェア的に非効率的である。例えば、プログラムが、それぞれが、わずかのインデックス(例えば、1つ又は5つのインデックス)を有する多くのウェーブフロント(例えば、描画)を必要とする場合、結果として得られるウェーブフロントは、それぞれ、より多くのインデックス(例えば、32ワイドのインフラストラクチャ又は256ワイドの通信インフラストラクチャ)を含む、ウェーブフロントを送信するように設計された通信インフラストラクチャの利用が非効率になる。様々な実施形態では、インデックスは、頂点座標の位置を提供するユーザーによって生成された値を指す。場合によっては、着信パケットは単一のウェーブフロントで通信できるデータよりも多くのデータを含むが、通信インフラストラクチャを効率的に使用するには、パケットに基づいて生成された最後のウェーブフロントには十分なデータがない。さらに、場合によっては、ソフトウェアドライバを使用してウェーブフロントデータを集約する場合、ウェーブフロントの量が原因で、ソフトウェアが出力条件(例えば、レジスタ状態の更新、パイプラインフラッシュ、又はコンテキストスイッチ)を検出することは困難である。
図1は、いくつかの実施形態による、データを入力パケットから自動的に集約するハードウェアを含むグラフィックス処理ユニット(GPU)100のブロック図である。図示した実施形態では、GPU100は、コマンドプロセッサ102と、パケット管理コンポーネント104と、計算ユニット106と、を含む。パケット管理コンポーネント104は、パケットバッファー110と、パケット集約コンポーネント112と、出力条件検出コンポーネント114と、を含む。出力条件検出コンポーネント114は、送信条件検出コンポーネント120及びタイムアウト検出コンポーネント122を含む。しかしながら、他の実施形態では、他の構造配列(例えば、追加のコンポーネント又は少数のコンポーネント)が想到される。例えば、いくつかの実施形態では、送信条件検出コンポーネント120は、タイムアウト検出コンポーネント122を含む。他の実施形態では、タイムアウト検出コンポーネント122は、出力条件検出コンポーネント114から分離される。さらに、明確にする理由で単一の計算ユニット106だけが示されているが、様々な実施形態では、GPU100は複数の計算ユニットを含む。
いくつかの実施形態では、GPU100は、デスクトップコンピュータ又はラップトップコンピュータ、サーバー、スマートフォン、タブレット、ゲーム機、又は、他の電子デバイス等のデバイスの一部である。デバイスは、様々なコマンド又は命令(例えば、描画コマンド)をGPU100に送信する中央処理装置(CPU)を含む。
図示した実施形態では、GPU100は様々な動作を実行する。これらの動作は、処理するデータを呼び出すプログラム呼び出しを含む。結果として、コマンドプロセッサ102は、様々な入力パケット130をパケット管理コンポーネント104に送信し、ここで、入力パケットは、プログラム呼び出しに基づいて、GPU100からの様々なコマンドのセットを示す。様々な実施形態では、入力パケット130は、描画インデックス又は送信条件の指標(例えば、パケット管理コンポーネント104にデータを1つ以上の計算ユニットに出力させるイベントの指標)を含む様々なタイプのデータを含む。いくつかの実施形態では、入力パケット130は、一定期間にわたって連続的に送信される。パケット管理コンポーネントは、入力パケット130からのデータに基づいて、出力パケット132を生成する。出力パケットが出力サイズ閾値よりも小さいことに応じて(例えば、入力パケットが出力サイズ閾値のパケットを生成するために使用される量より少ないデータを含むため、又は、入力パケットが複数の出力パケットが生成されたデータを十分に含み、最後の出力パケットが出力サイズ閾値よりも小さいため)、パケット管理コンポーネント104は、入力パケット130の1つ以上の入力パケットに対応するデータを保持及び集約して、集約データを出力パケット132として、計算ユニット106等の1つ以上の計算ユニットに出力する。いくつかの実施形態では、出力パケット132は複数の計算ユニットのそれぞれに送信される、又は、異なる出力パケットは各々の計算ユニットに送信される。いくつかの実施形態では、集約された出力パケットは、それが集約された出力パケットに含まれる最初に受信された入力パケットであるかのように送信される(例えば、最初に受信された入力パケットに対応する様々なヘッダー及び他のデータを含む)。他の実施形態では、集約された出力パケットは、それが受信された異なる入力パケットであるかのように送信される、集約された出力パケットは受信された複数の入力パケットを示す、又は、集約された出力パケットは受信された入力パケットの何れも示さない。
より具体的には、入力パケット130のうち1つ以上を受信したことに応じて、パケット管理コンポーネント104は、受信された入力パケットを分析する。送信条件検出コンポーネント120に基づいて、入力パケットが送信条件を示さないと検出したことに応じて、パケット管理コンポーネント104は、パケット集約コンポーネント112を使用して、パケットバッファー110の入力パケットに対応するデータを集約する。例えば、パケット集約コンポーネント112は、着信入力パケットに対応するデータを、パケットバッファー110に以前に記憶されたデータと一緒に集約する。いくつかの実施形態では、データは入力パケットの全部である。他の実施形態では、データは、入力パケットの一部、入力パケットによって示されるデータ(例えば、入力パケットによって示される1つ以上の計算の結果として生成されるデータ)、又は、それら両方である。送信条件検出コンポーネント120を使用して、入力パケットが送信条件を示していると検出したことに応じて、パケット管理コンポーネント104は、集約データを、出力パケット132の計算ユニット106等の1つ以上の計算ユニットに送信する。したがって、出力パケットが各入力パケットに対して送信されるシステムと比較して、より少ない出力パケット132が計算ユニット106に送信される。いくつかの実施形態では、入力パケット130は、描画コマンドのインデックスであり、出力パケット132は、入力パケット130の複数の入力パケットに対応するインデックスを含むウェーブフロントである。いくつかの実施形態では、送信条件検出コンポーネント120は、出力パケットが出力サイズ閾値よりも小さいと検出したことに応じて、入力パケットが送信条件を示すかどうかだけを判定する。他の実施形態では、送信条件検出コンポーネント120は、出力パケットが出力サイズ閾値よりも小さいかどうかを検出することに並行して、様々な送信条件を検出する。
パケット管理コンポーネント104に出力パケット132を計算ユニット106に送信させる様々な出力条件が想到される。いくつかの実施形態では、出力条件は、送信条件(例えば、着信パケットによって示される条件)、タイムアウト条件、及び、サイズ条件を含む。したがって、出力条件検出コンポーネント114は、様々な出力条件を検出するためのバッファー及び読み取りイネーブルロジック等の様々なハードウェアを含む。図示した実施形態では、いくつかの出力条件は、入力パケット130の入力パケットによって示される送信条件である。いくつかの例を提供するために、場合によっては、入力パケットの状態情報がレジスタ状態の更新(例えば、描画トポロジを指定するパケット、描画ワークロードの分散を制御するパケット、又は、インデックスタイプのビット数を指定するパケット)、又は、イベント(例えば、パイプラインフラッシュ(例えば、誤った分岐予測によりパイプラインの命令が削除されるプロセス)、又は、コンテキストスイッチ(2つのアプリケーション、タスク、又は、プログラム間のスイッチ))を示す。さらに、場合によっては、出力条件は、描画ソースを変更すること(例えば、ダイレクトメモリアクセスから自動インデックスへの変更、又は、逆の場合も同様)、仮想現実制御フィールドを変更すること、又は、描画間のインデックスサイズを変更することを含む。しかしながら、他の様々な手段によって検出された条件を含む他の出力条件も同様に想到される。
場合によっては、出力条件は、タイムアウト検出コンポーネント122のパケットストレージタイマーがタイムアウト閾値を超えていることを示すタイムアウト検出コンポーネント122を含む。例えば、いくつかの実施形態では、パケットストレージタイマーは、少なくともいくつかのデータがパケットバッファー110に記憶されている時間を追跡する(例えば、最も長く記憶されたデータを追跡する)。時間がタイムアウト閾値(例えば、50クロックサイクル又は1マイクロ秒)を超えていることに応じて、タイムアウト検出コンポーネント122は出力条件を示す。場合によっては、タイムアウト閾値はユーザー指定である。他の場合、タイムアウト閾値は、GPU100で起動しているアプリケーション等の別のエンティティによって指定される。
場合によっては、パケットバッファー110に記憶又は保持されるデータは、パケット管理コンポーネント104と計算ユニット106との間の通信インフラストラクチャの容量を超える。したがって、出力パケットは通信インフラストラクチャを効率的に利用し得る。したがって、いくつかの実施形態では、出力条件は、パケットバッファー110に記憶された集約データの量が出力サイズ閾値を超えていると判定することを含む。いくつかの実施形態では、出力サイズ閾値はユーザー指定である。いくつかの実施形態では、出力サイズ閾値は、出力パケット132を計算ユニット106に送信するために使用される通信インフラストラクチャのサイズに対応する。説明するために、通信インフラストラクチャが32ワイドである場合、パケットバッファーが31を超えるインデックスを記憶していることを検出すると、出力条件検出コンポーネント114に、出力条件が満たされていることを示させる。
入力パケット130のデータを集約する様々な方法が想到される。例えば、一実施形態では、パケット集約コンポーネント112は、パケットバッファー110に、各々のデリミターによって分離された入力パケット130のデータを記憶させる。別の例として、別の実施形態では、入力パケット130のデータを集約することは、入力パケット130の各々の入力パケットに対応するアドレスを示すために、パケットバッファー110に記憶されたヘッダーファイルを更新することを含む。いくつかの実施形態では、入力パケット130は、全体として、パケットバッファー110に記憶される、又は、そうでければ保持される。他の実施形態では、入力パケット130の一部だけが、パケットバッファー110に記憶される、又は、そうでければ保持される。
したがって、パケット(例えば、描画インデックス)がハードウェアコンポーネントによって自動的に(例えば、パケットに関する特定のソフトウェア命令なしで)集約されるシステムが開示される。いくつかの実施形態では、システムは、ソフトウェア管理を行わないでパケットを集約する。さらに、システムは様々な出力条件(例えば、レジスタ状態の更新及びイベント)を検出し、出力条件に応じて集約されたパケットを送信する。システムは、出力条件を自動的に検出することによって、ソフトウェアの介入又はレガシーソフトウェアの再設計を要求することなく、効率的なパケット集約をサポートする。
図2は、いくつかの実施形態による、データを入力パケットから集約する方法200を示すフロー図である。方法200は、いくつかの実施形態では、図1のGPU100のパケット管理コンポーネント104によって実施される。いくつかの実施形態では、方法200は、コンピュータ可読記憶媒体によって記憶された1つ以上の命令に応じて、1つ以上のプロセッサによって開始される。
202において、方法200は、コマンドプロセッサからの入力パケットを受信することを含む。例えば、場合によっては、パケット管理コンポーネント104は、入力パケット130をコマンドプロセッサ102から受信する。
204において、方法200は、入力パケットが送信条件を示すかどうかを判定することを含む。例えば、場合によっては、パケット管理コンポーネント104は、受信された入力パケット130が(例えば、状態情報によって)送信条件(例えば、レジスタ状態更新又はイベント)を示すかどうかを判定する。入力パケットが送信条件を示していると判定したことに応じて、方法200は216に進む。入力パケットが送信条件を示さないと判定したことに応じて、方法200は206に進む。
206において、入力パケットが送信条件を示さないと判定したことに応じて、方法200は、出力パケットが開いているかどうかを判定することを含む。例えば、場合によっては、パケット管理コンポーネント104は、パケットバッファー110がオープン出力パケットを含むかどうかを判定する。出力パケットが開いていると判定したことに応じて、方法200は210に進む。開いている出力パケットがないと判定したことに応じて、方法200は208に進む。
208において、開いている出力パケットがないと判定したことに応じて、方法200は、新しい出力パケットを生成することを含む。例えば、場合によっては、パケット管理コンポーネント104は、パケットバッファー110で新しい出力パケットを生成する。
210において、出力パケットが開いていると判定したことに応じて、又は、新しい出力パケットの生成に続いて、方法200は、入力パケットのコンテンツを出力パケットに追加することを含む。例えば、場合によっては、パケット管理コンポーネント104は、パケットバッファー110において、入力パケット130に対応するデータを、以前に記憶された又はそうでなければ保持された1つ以上の入力パケットに対応するデータと一緒に集約する。別の例として、場合によっては、パケット管理コンポーネント104は、入力パケット130に対応するデータを、パケットバッファー110で新しく生成された出力パケットに追加する。
212において、入力パケットのコンテンツを出力パケットに追加した後、又は、着信入力パケットの指標がないことに応じて、方法200は、タイムアウト条件が満たされているかどうかを判定することを含む。例えば、場合によっては、タイムアウト検出コンポーネント122は、出力パケットの少なくとも一部がパケットバッファー110に記憶されている、又は、そうでなければ保持された時間を示すタイムアウトストレージトラッカーをチェックする。タイムアウトストレージトラッカーがタイムアウト閾値を超えていることに応じて、タイムアウト検出コンポーネント122は、タイムアウト条件が満たされていると判定する。タイムアウト条件を満たしていると判定したことに応じて、方法200は216に進む。タイムアウトストレージトラッカーがタイムアウト閾値を超えていないことに応じて、タイムアウト検出コンポーネント122は、タイムアウト条件が満たされていないと判定する。タイムアウト条件を満たしていないと判定したことに応じて、方法200は214に進む。いくつかの実施形態では、212は、さらに、出力パケットのサイズが出力サイズ閾値を超えているかどうかを判定することを含み、出力パケットのサイズが出力サイズ閾値を超えていると判定したことに応じて、216に進む。いくつかの実施形態では、出力パケットのサイズが出力サイズ閾値を超えていると判定することと、216に進むことは、例えば、202~204を含む方法200の他の部分において追加で又は代わりに行われる。
214において、タイムアウト条件を満たしていないと判定したことに応じて、又は出力パケットを送信して、送信条件が示された場合、送信条件を行った後、方法200は、着信入力パケットを示すかどうかを判定することを含む。例えば、場合によっては、パケット管理コンポーネント104は、コマンドプロセッサ102が入力パケットを送信しているかどうかを判定する。着信入力パケットを検出したことに応じて、方法200は202に進む。入力パケットを検出しなかったことに応じて、方法200は212に進む。
216において、入力パケットが送信条件を示していると判定したことに応じて、又は、タイムアウト条件を満たしていると判定したことに応じて、方法200は、出力パケットを計算ユニットに送信することを含む。例えば、場合によっては、入力パケット130が送信条件を示していることに応じて、パケット管理コンポーネント104は、出力パケットを閉じ、出力パケットを出力パケット132として計算ユニット106に送信する。別の例として、場合によっては、タイムアウト検出コンポーネント122が、タイムアウト条件を満たしていると検出したことに応じて、パケット管理コンポーネント104は、出力パケットを閉じ、出力パケットを出力パケット132として計算ユニット106に送信する。
218において、出力パケットを計算ユニット106に送信した後、方法200は、(例えば、204において)送信条件が示された場合、送信条件を行うことを含む。例えば、入力パケット130が送信条件を示していることに応じて、パケット管理コンポーネント104は、出力パケット132を計算ユニット106に送信して、次に、示された送信条件を行う。したがって、入力パケットからデータを集約する方法が示される。
図3は、いくつかの実施形態による、入力パケット及び出力パケットを処理する例示的なパケット管理コンポーネントを示すタイムライン300を示すブロック図である。図示した例では、入力パケット302~312及び316は、パケット管理コンポーネント(例えば、パケット管理コンポーネント104)で受信される。さらに、イベント314はパケット管理コンポーネントで検出される。
説明するために、入力パケット302を受信したことに応じて、新しい出力パケットを生成し、入力パケット302によって示される描画データ(描画1)は出力パケットに追加される。入力パケット304及び306を受信したことに応じて、入力パケット304及び306によって示される描画データ(描画2及び描画3)は、入力パケット302によって示される描画データと一緒に集約される。入力パケット308は、コンテキストスイッチ(送信条件)を示す。図示した例では、入力パケット308は、入力パケット302~306が、その後に受信される入力パケット310及び312とは異なるコンテキストに対応することを示す。したがって、送信条件を検出したことに応じて、入力パケット302~306によって示される描画データを含む出力パケットが送信され、次に、コンテキストスイッチを行う。入力パケット310を受信したことに応じて、新しい出力パケットを生成し、入力パケット310によって示される描画データ(描画4)は出力パケットに追加される。入力パケット312を受信したことに応じて、入力パケット312によって示される描画データ(描画5)は出力パケットに追加される。図示した例では、314において、パッケージストレージタイマーが、出力パケットのデータ(例えば、入力パケット310によって示される描画データ)の少なくとも一部が、タイムアウト閾値よりも長く記憶されていることが示されることを、タイムアウト検出コンポーネントが検出する。したがって、イベント314において、タイムアウト条件が満たされ、入力パケット310及び312によって示される描画データを含む出力パケットが送信される。入力パケット316を受信したことに応じて、新しい出力パケットを生成し、入力パケット316によって示される描画データ(描画6)は出力パケットに追加される。したがって、入力パケット及び出力パケットのタイムライン300の例が示される。
図4は、いくつかの実施形態による、パケットバッファー110を含むパケット管理コンポーネント104を含む例示的なGPU400を示すブロック図である。この例では、パケット管理コンポーネント104は、インデックス410~414を、パケットバッファー110に入力パケット402~406から集約する。結果として、インデックス410~414は、パケットバッファー110に一緒に集約及び記憶される。この例では、入力パケット408からのレジスタ状態更新指標416に応じて、パケット管理コンポーネント104は、出力パケット420にインデックス410~414を送信する。いくつかの実施形態では、入力パケット402~408は図1の入力パケット130に対応し、出力パケット420は図1の出力パケット132に対応する。
本明細書に開示されるように、いくつかの実施形態では、本方法は、グラフィックス処理ユニット(GPU)のコマンドプロセッサから、パケット管理コンポーネントによって、第1のコマンドのセットを示す第1の入力パケットを受信することと、第1の入力パケットが送信条件を示さないと判定したことに応じて、第1の入力パケットに対応するデータを、パケット管理コンポーネントのパケットバッファーに記憶された以前に受信したパケットデータと一緒に自動的に集約することと、を含む。一態様では、本方法は、GPUから受信されたコマンドの第2のセットを示す第2の入力パケットを受信することと、第2の入力パケットが送信条件を示していると判定したことに応じて、集約データを出力パケットの計算ユニットに送信することと、送信条件によって示される動作を行うことと、を含む。別の態様では、第1の入力パケットは第1の複数の描画インデックスを含み、以前に受信したパケットデータは第2の複数の描画インデックスを含み、集約データは第1の複数の描画インデックス及び第2の複数の描画インデックスを含む。
一態様では、出力パケットは、GPUの計算ユニットによって行われる動作のセットを含むウェーブフロントである。別の態様では、第2の入力パケットは、レジスタ状態の更新、コンテキストスイッチ、又は、パイプラインフラッシュのうち少なくとも1つを示す。別の態様では、本方法は、動作の実行後、GPUから受信されたコマンドの第3のセットを示す第3の入力パケットを受信することと、パケットバッファーにおいて第3の入力パケットに対応するデータを記憶することと、タイムアウト条件が満たされていると検出したことに応じて、第3の入力パケットを第2の出力パケットの計算ユニットに送信することと、を含む。さらに別の態様では、本方法は、動作の実行後、GPUから受信されたコマンドの第3のセットを示す第3の入力パケットを受信することと、パケットバッファーにおいて第3の入力パケットに対応するデータを記憶することと、パケットバッファーに記憶された第2の集約データの量が出力サイズ閾値を超えていると検出したことに応じて、第3の入力パケットを第2の出力パケットの計算ユニットに送信することと、を含む。また別の態様では、出力サイズ閾値はユーザープログラマブルである。
いくつかの実施形態では、グラフィックス処理ユニット(GPU)は、GPUから受信されたコマンドを示す入力パケットを送信するように構成されたコマンドプロセッサと、パケット管理コンポーネントと、を含み、パケット管理コンポーネントは、コマンドプロセッサから受信された入力パケットに対応するデータを記憶するように構成されたパケットバッファーと、パケット集約コンポーネントと、を含み、パケット集約コンポーネントは、着信する第1の入力パケットの状態情報を識別することと、状態情報が集約状態を示していることに応じて、第1の入力パケットに対応するデータを、パケットバッファーに記憶された第2の入力パケットに対応するデータと一緒に集約することと、状態情報が送信条件を示していることに応じて、計算ユニットによって処理するために出力パケットを送信することであって、出力パケットはパケットバッファーに記憶された集約データを含む、ことと、を行うように構成されている。一態様では、パケット集約コンポーネントは、第2の入力パケットに対応するデータの少なくとも一部を記憶している時間が、タイムアウト閾値を超えていることに応じて、出力パケットを送信させるように構成されたタイムアウト検出コンポーネントを含む。別の態様では、タイムアウト閾値はユーザー指定である。
一態様では、出力パケットはウェーブフロントである。別の態様では、集約データは、第1の入力パケットの一部及び第2の入力パケットの一部を含む。別の態様では、集約データは、第1の入力パケット及び第2の入力パケットを含む。
いくつかの実施形態では、本方法は、コマンドプロセッサから、パケット管理コンポーネントによって、グラフィックス処理ユニット(GPU)から受信された第1のコマンドのセットを示す第1の入力パケットを受信することと、パケット管理コンポーネントのパケットバッファーにおいて、第1の入力パケットに対応するデータを記憶することと、GPUから受信されたコマンドの第2のセットを示す第2の入力パケットを受信することと、出力条件が満たされていないと判定したことに応じて、第2の入力パケットに対応するデータを、第1の入力パケットに対応するデータと一緒に自動的に集約することと、出力条件が満たされていると判定したことに応じて、集約データを1つ以上の出力パケットの1つ以上の計算ユニットに送信することと、を含む。一態様では、出力条件が満たされていると判定することは、パケットバッファーに記憶された集約データの量が出力サイズ閾値を超えていると判定したことに応じて行われる。
一態様では、出力条件が満たされていると判定することは、第3の入力パケットが送信条件を示していると判定することを含む。別の態様では、本方法は、第1の入力パケットを受信したことに応じて、パケット管理コンポーネントのタイムアウト検出コンポーネントで、パケットストレージタイマーを開始することを含む。一態様では、出力条件が満たされていると判定することは、パケットストレージタイマーがタイムアウト閾値を超えていると判定することを含む。別の態様では、タイムアウト閾値はユーザー指定である。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
いくつかの実施形態では、上記の技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実施されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (20)

  1. パケット管理コンポーネント[104]が、グラフィックス処理ユニット(GPU)[100]のコマンドプロセッサ[102]から、第1のコマンドのセットを示す第1の入力パケット[404]を受信することと、
    前記第1の入力パケットが送信条件を示さないと判定したことに応じて、前記第1の入力パケットに対応するデータ[412]を、前記パケット管理コンポーネントのパケットバッファー[110]に記憶された、以前に受信したパケットデータ[410]と共に自動的に集約することと、を含む、
    方法。
  2. 前記GPUから受信したコマンドの第2のセットを示す第2の入力パケット[416]を受信することと、
    前記第2の入力パケットが送信条件を示していると判定したことに応じて、集約データを出力パケットで計算ユニットに送信することと、
    前記送信条件によって示される動作を行うことと、をさらに含む、
    請求項1の方法。
  3. 前記第1の入力パケットは第1の複数の描画インデックスを含み、前記以前に受信したパケットデータは第2の複数の描画インデックスを含み、前記集約データは前記第1の複数の描画インデックス及び前記第2の複数の描画インデックスを含む、
    請求項2の方法。
  4. 前記出力パケットは、前記GPUの前記計算ユニットによって行われる動作のセットを含むウェーブフロントである、
    請求項2又は3の方法。
  5. 前記第2の入力パケットは、レジスタ状態更新、コンテキストスイッチ又はパイプラインフラッシュのうち少なくとも1つを示す、
    請求項2~4の何れかの方法。
  6. 前記動作を行った後に、前記GPUから受信したコマンドの第3のセットを示す第3の入力パケット[406]を受信することと、
    前記パケットバッファーにおいて前記第3の入力パケットに対応するデータ[414]を記憶することと、
    タイムアウト条件が満たされていると検出したことに応じて、前記第3の入力パケットを第2の出力パケットで前記計算ユニットに送信することと、をさらに含む、
    請求項2~5の何れかの方法。
  7. 前記動作を行った後に、前記GPUから受信したコマンドの第3のセットを示す第3の入力パケットを受信することと、
    前記パケットバッファーにおいて前記第3の入力パケットに対応するデータを記憶することと、
    前記パケットバッファーに記憶された第2の集約データの量が出力サイズ閾値を超えていると検出したことに応じて、前記第3の入力パケットを第2の出力パケットで前記計算ユニットに送信することと、をさらに含む、
    請求項2~5の何れかの方法。
  8. 前記出力サイズ閾値は、ユーザーがプログラム可能である、
    請求項7の方法。
  9. 前記GPUから受信したコマンドを示す入力パケット[120]を送信するように構成されたコマンドプロセッサ[102]と、
    パケット管理コンポーネント[104]と、を備え、
    前記パケット管理コンポーネント[104]は、
    前記コマンドプロセッサから受信した前記入力パケットに対応するデータを記憶するように構成されたパケットバッファー[110]と、
    パケット集約コンポーネント[112]と、を備え、
    前記パケット集約コンポーネント[112]は、
    着信する第1の入力パケットの状態情報を識別することと、
    前記状態情報が集約状態を示していることに応じて、前記第1の入力パケットに対応するデータを、前記パケットバッファーに記憶された第2の入力パケットに対応するデータと共に集約することと、
    前記状態情報が送信条件を示していることに応じて、計算ユニットによって処理するために出力パケット[132]を送信することであって、前記出力パケットは、前記パケットバッファーに記憶された集約データを含む、ことと、
    を行うように構成されている、
    グラフィクス処理ユニット(GPU)[100]。
  10. 前記パケット集約コンポーネントは、前記第2の入力パケットに対応する前記データの少なくとも一部を記憶している時間がタイムアウト閾値を超えていることに応じて、前記出力パケットを送信させるように構成されたタイムアウト検出コンポーネント[122]を備える、
    請求項9のGPU。
  11. 前記タイムアウト閾値は、ユーザーによって指定される、
    請求項10のGPU。
  12. 前記出力パケットは、ウェーブフロントである、
    請求項9又は10のGPU。
  13. 前記集約データは、前記第1の入力パケットの一部及び前記第2の入力パケットの一部を含む、
    請求項9~12の何れかのGPU。
  14. 前記集約データは、前記第1の入力パケット及び前記第2の入力パケットを含む、
    請求項9~12の何れかのGPU。
  15. パケット管理コンポーネント[104]が、グラフィックス処理ユニット(GPU)[100]から受信した第1のコマンドのセットを示す第1の入力パケットをコマンドプロセッサ[102]から受信することと、
    前記パケット管理コンポーネントのパケットバッファー[110]において、前記第1の入力パケットに対応するデータを記憶することと、
    前記GPUから受信したコマンドの第2のセットを示す第2の入力パケットを受信することと、
    出力条件が満たされていないと判定したことに応じて、前記第2の入力パケットに対応するデータを、前記第1の入力パケットに対応する前記データと共に自動的に集約することと、
    出力条件が満たされていると判定したことに応じて、集約データを1つ以上の出力パケットで1つ以上の計算ユニットに送信することと、を含む、
    方法。
  16. 前記出力条件が満たされていると判定することは、前記パケットバッファーに記憶された前記集約データの量が出力サイズ閾値を超えていると判定したことに応じて行われる、
    請求項15の方法。
  17. 前記出力条件が満たされていると判定することは、第3の入力パケットが送信条件を示していると判定することを含む、
    請求項15又は16の方法。
  18. 前記第1の入力パケットを受信したことに応じて、前記パケット管理コンポーネントのタイムアウト検出コンポーネントにおいてパケットストレージタイマーを開始することをさらに含む、
    請求項15~17の何れかの方法。
  19. 前記出力条件が満たされていると判定することは、前記パケットストレージタイマーがタイムアウト閾値を超えていると判定することを含む、
    請求項18の方法。
  20. 前記タイムアウト閾値は、ユーザーによって指定される、
    請求項19の方法。
JP2022534186A 2019-12-13 2020-12-09 Gpuパケット集約システム Pending JP2023505783A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/713,472 US11210757B2 (en) 2019-12-13 2019-12-13 GPU packet aggregation system
US16/713,472 2019-12-13
PCT/US2020/063923 WO2021119072A1 (en) 2019-12-13 2020-12-09 Gpu packet aggregation system

Publications (2)

Publication Number Publication Date
JP2023505783A true JP2023505783A (ja) 2023-02-13
JPWO2021119072A5 JPWO2021119072A5 (ja) 2023-11-28

Family

ID=76316977

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022534186A Pending JP2023505783A (ja) 2019-12-13 2020-12-09 Gpuパケット集約システム

Country Status (6)

Country Link
US (1) US11210757B2 (ja)
EP (1) EP4073639A4 (ja)
JP (1) JP2023505783A (ja)
KR (1) KR20220113710A (ja)
CN (1) CN114902181A (ja)
WO (1) WO2021119072A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210117202A1 (en) * 2020-12-03 2021-04-22 Intel Corporation Methods and apparatus to generate graphics processing unit long instruction traces
CN113626369B (zh) * 2021-08-14 2023-05-26 苏州浪潮智能科技有限公司 一种多节点集群环形通信的方法、装置、设备及可读介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050249231A1 (en) * 2003-11-25 2005-11-10 Asif Khan Methods and systems for reliable distribution of media over a network
US7209139B1 (en) * 2005-01-07 2007-04-24 Electronic Arts Efficient rendering of similar objects in a three-dimensional graphics engine
US7839876B1 (en) 2006-01-25 2010-11-23 Marvell International Ltd. Packet aggregation
CN101471826B (zh) * 2007-12-27 2012-12-12 华为技术有限公司 命令行接口的测试方法及装置
US8374986B2 (en) 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
EP2596470A1 (en) * 2010-07-19 2013-05-29 Advanced Micro Devices, Inc. Data processing using on-chip memory in multiple processing units
CN102323917B (zh) * 2011-09-06 2013-05-15 中国人民解放军国防科学技术大学 一种基于共享内存实现多进程共享gpu的方法
US20130155077A1 (en) * 2011-12-14 2013-06-20 Advanced Micro Devices, Inc. Policies for Shader Resource Allocation in a Shader Core
US20130162661A1 (en) * 2011-12-21 2013-06-27 Nvidia Corporation System and method for long running compute using buffers as timeslices
US9509616B1 (en) * 2014-11-24 2016-11-29 Amazon Technologies, Inc. Congestion sensitive path-balancing
KR102287402B1 (ko) 2015-03-23 2021-08-06 삼성전자주식회사 버스 인터페이스 장치, 이를 포함하는 반도체 집적회로 장치 및 상기 장치의 동작 방법
US9830731B2 (en) 2015-04-01 2017-11-28 Mediatek Inc. Methods of a graphics-processing unit for tile-based rendering of a display area and graphics-processing apparatus
US10320695B2 (en) 2015-05-29 2019-06-11 Advanced Micro Devices, Inc. Message aggregation, combining and compression for efficient data communications in GPU-based clusters
US20170300361A1 (en) * 2016-04-15 2017-10-19 Intel Corporation Employing out of order queues for better gpu utilization
WO2018044738A1 (en) * 2016-08-29 2018-03-08 Advanced Micro Devices, Inc. Hybrid render with preferred primitive batch binning and sorting
US10572258B2 (en) * 2017-04-01 2020-02-25 Intel Corporation Transitionary pre-emption for virtual reality related contexts
CN110223216B (zh) * 2019-06-11 2023-01-17 西安芯瞳半导体技术有限公司 一种基于并行plb的数据处理方法、装置及计算机存储介质
CN110415161B (zh) * 2019-07-19 2023-06-27 龙芯中科(合肥)技术有限公司 图形处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
US20210183004A1 (en) 2021-06-17
US11210757B2 (en) 2021-12-28
WO2021119072A1 (en) 2021-06-17
KR20220113710A (ko) 2022-08-16
CN114902181A (zh) 2022-08-12
EP4073639A1 (en) 2022-10-19
EP4073639A4 (en) 2024-01-10

Similar Documents

Publication Publication Date Title
CN107231815B (zh) 用于图形渲染的系统和方法
EP3129880B1 (en) Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system
CN108647104B (zh) 请求处理方法、服务器及计算机可读存储介质
CN110741356A (zh) 多处理器系统中的中继一致存储器管理
US11030136B2 (en) Memory access optimization for an I/O adapter in a processor complex
US20110161965A1 (en) Job allocation method and apparatus for a multi-core processor
JP2023505783A (ja) Gpuパケット集約システム
US10896001B1 (en) Notifications in integrated circuits
US9996349B2 (en) Clearing specified blocks of main storage
US20210119854A1 (en) Scalable statistics and analytics mechanisms in cloud networking
CN112650558A (zh) 数据处理方法、装置、可读介质和电子设备
CN103093005A (zh) 一种遥信数据处理方法和装置
CN104104705A (zh) 分布式存储系统的接入方法和设备
JP6974510B2 (ja) データを処理するための方法、装置、デバイス及び媒体
TW201435576A (zh) 陷阱處理期間的協作執行緒陣列粒化內文切換
US8862786B2 (en) Program execution with improved power efficiency
WO2012023625A1 (ja) 拡張性評価装置、拡張性評価方法および拡張性評価プログラム
CN111338769A (zh) 一种数据处理方法、装置及计算机可读存储介质
US10846125B2 (en) Memory access optimization in a processor complex
US20220027278A1 (en) Techniques for core-specific metrics collection
CN110647493B (zh) 一种数据传输方法、处理器和pcie系统
JP6653786B2 (ja) I/o制御方法およびi/o制御システム
CN113296972A (zh) 一种信息的注册方法、计算设备及存储介质
CN112395249A (zh) 用于多个异步消耗者的方法和装置
KR20140056743A (ko) 가상 클라우드 환경 내 맵리듀스 클러스터 및 이를 위한 설계방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220809

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231116

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231116

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20231116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240402