JP2024512466A - パラメータバッファに基づくウェーブスロットリング - Google Patents
パラメータバッファに基づくウェーブスロットリング Download PDFInfo
- Publication number
- JP2024512466A JP2024512466A JP2023556932A JP2023556932A JP2024512466A JP 2024512466 A JP2024512466 A JP 2024512466A JP 2023556932 A JP2023556932 A JP 2023556932A JP 2023556932 A JP2023556932 A JP 2023556932A JP 2024512466 A JP2024512466 A JP 2024512466A
- Authority
- JP
- Japan
- Prior art keywords
- wave
- shader
- counter
- wave group
- waves
- 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
Links
- 239000000872 buffer Substances 0.000 title claims description 45
- 238000012545 processing Methods 0.000 claims abstract description 46
- 230000004044 response Effects 0.000 claims abstract description 35
- 230000004913 activation Effects 0.000 claims description 28
- 238000001994 activation Methods 0.000 claims description 28
- 238000000034 method Methods 0.000 claims description 25
- 238000010586 diagram Methods 0.000 abstract description 12
- 238000003860 storage Methods 0.000 description 28
- 230000008901 benefit Effects 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Abstract
グラフィックスパイプライン(300)は、第1のウェーブ群を生成する第1のシェーダ(305)と、実行のために第1のウェーブ群を起動するシェーダプロセッサ入力(SPI)(310)と、第1のウェーブ群が1つ以上のシェーダで処理した結果に基づいて、実行のために第2のウェーブを生成するスキャンコンバータ(360)と、を含む。第1のウェーブ群は、インフライトの第1のウェーブ群と、少なくとも1つの第2のシェーダ上での実行を保留している第2のウェーブと、の比較に基づいて選択的にスロットリングされる。キャッシュ(340)は、第1のウェーブ群がシェーダ上での実行を終了することに応じてキャッシュに書き込まれる情報を保持する。情報は、第2のウェーブによって発行された読み取り要求に応じてキャッシュから読み取られる。場合によっては、第1のウェーブ群は、いくつの第1のウェーブ群がインフライトであり、キャッシュへのいくつの読み取り要求が保留中であるかを比較することによって選択的にスロットリングされる。【選択図】図2
Description
グラフィックス処理ユニット(graphics processing unit、GPU)は、コマンドバッファから取り出されたコマンドのコピーを同時に処理するグラフィックス処理パイプラインを実装する。GPU及び他のマルチスレッド処理ユニットは、典型的には、単一のウェーブ(wave)として、複数のデータセットに対して単一のプログラムの複数のインスタンスを同時に実行する複数の処理要素(プロセッサコア又は計算ユニットとも称される)を実装する。ハードウェアに実装された階層に適合するように、階層実行モデルが使用される。実行モデルは、全てのウェーブ(ウェーブフロント(wavefronts)、スレッド、ストリーム又はワークアイテムとも称される)によって実行される命令のカーネルを定義する。GPU内のグラフィックスパイプラインは、計算ユニット、メモリ及びキャッシュ等のグラフィックスパイプラインのリソースを使用して実行する1つ以上のシェーダを含む。グラフィックスパイプラインは、通常、画像の部分を表すパッチ又は他のプリミティブに対してジオメトリ演算を実行するジオメトリ部分に分割される。ジオメトリ部分内のシェーダは、頂点シェーダ、ハルシェーダ、ドメインシェーダ及びジオメトリシェーダを含むことができる。グラフィックスパイプラインのジオメトリ部分は、パイプラインのジオメトリ部分によって生成されたプリミティブがラスタ化されて(例えば、1つ以上のスキャンコンバータによって)、画像の部分を表すピクセルのセットを形成する場合に完了する。ピクセルに対する後続の処理は、ピクセル処理と呼ばれ、グラフィックスパイプラインのリソースを使用して実行するピクセルシェーダ等のシェーダによって実行される動作を含む。
本開示は、添付の図面を参照することによってより良好に理解され、その多くの特徴及び利点が当業者に明らかになる。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
シェーダハブ内の計算ユニットによって実装される1つ以上のシェーダによる処理のために(1つ以上のウェーブを含む)ウェーブ群をディスパッチする前に、ジオメトリエンジンは、シェーダ内のウェーブ群を処理することによって生成された出力を記憶するためにメモリ又はキャッシュ内に空間を予約する。例えば、ジオメトリエンジンは、パラメータバッファを保持するためのスペースを求める予約要求をPCマネージャに送信することができる。PCマネージャは、要求された空間をレベル2(level 2、L2)キャッシュ内に予約し、L2キャッシュ内の予約された空間を識別する情報をジオメトリエンジンに戻す。予約確認を受信することに応じて、ジオメトリエンジンは、シェーダプロセッサ入力(shader processor input、SPI)にウェーブ群を提供し、SPIは、シェーダハブ内の計算ユニットによる処理のためにウェーブ群を起動する。シェーダ出力からの属性は、L2キャッシュ内の予約された空間に記憶される。位置がプリミティブアセンブラに提供され、プリミティブアセンブラは、プリミティブ(三角形等)をアセンブルし、プリミティブハブを介してプリミティブをスキャンコンバータに送る。スキャンコンバータは、ピクセルウェーブを生成し、このピクセルウェーブは、L2キャッシュから属性をフェッチするSPIに戻される。次いで、シェーダハブ内の計算ユニットは、L2キャッシュから取り出された属性を使用して、ピクセルウェーブに対してピクセル処理を実行する。したがって、ジオメトリエンジンによって生成されるグラフィックスシェーダウェーブ群と、スキャンコンバータによって生成されるピクセルウェーブと、の間には依存性がある。この依存性は、ジオメトリエンジンが、あまりにも多くのデータをL2キャッシュに書き込むあまりにも多くのウェーブ群を起動する場合、L2キャッシュ内の他のデータタイプの空間を枯渇させる可能性があり、これは、過度のキャッシュスラッシングにつながり、グラフィックスパイプラインの性能を低下させる。
図1~図6は、スキャンコンバータによって生成されたインフライト(in-flight)のGS作業と保留中のピクセルシェーダ(pixel shader、PS)作業との比較に基づいて、シェーダプロセッサ入力(SPI)によって起動されたジオメトリシェーダ(geometry shader、GS)ウェーブ群(又は、頂点シェーダ等の他のシェーダに関連付けられたウェーブ群)を選択的にスロットリングすることによって、ジオメトリシェーダとピクセルシェーダとによって共有されるキャッシュのスラッシングを低減するためのシステム及び技術を開示する。スキャンコンバータは、キャッシュから情報を読み取る要求をSPIに提供する。管理回路のいくつかの実施形態は、以下の3つのイベントのためのカウンタを維持する。(1)GSウェーブ群の起動のための第1のカウンタ、(2)キャッシュに書き込むことによってシェーダ上での実行を終了したGSウェーブ群の第2のカウンタ、及び、(3)スキャンコンバータによって生成されたPSウェーブのためにキャッシュから読み取る要求の数の第3のカウンタ。カウンタは、ウィンドウイング先入れ先出し(first-in-first-out、FIFO)バッファに書き込まれる対応するイベントに応じてインクリメントされ、ウィンドウイングFIFOから読み出される対応するイベントに応じてデクリメントされる。管理回路は、第1のカウンタと第2のカウンタとの間の差に基づいて、インフライトのGS作業の量を判定する。管理回路は、第2のカウンタと第3のカウンタとの間の差に基づいて、保留中のPS作業の量を判定する。管理回路は、飛行中のGS作業の量が保留中のPS作業の量より多い場合、SPIによって起動されるウェーブ群をスロットリングする。そうでない場合、SPIは、貪欲アルゴリズム(greedy algorithm)等のアルゴリズムに従ってウェーブ群を自由に起動することができる。いくつかの実施形態では、ウェーブ群をスロットリングするための基準は、インフライトのGS作業の量が、保留中のPS作業の量に追加の係数を加えたものより多い場合に、管理回路が、SPIによって起動されるウェーブ群をスロットリングして、スロットリングがグラフィックスパイプラインの作業を枯渇させる可能性を減少させるように変更される。例えば、追加の係数は、保留中のPS作業によって要求された読み取りの数のバースト性の尺度に基づいて判定することができる。
図1は、いくつかの実施形態による、処理システム100のブロック図である。処理システム100は、ダイナミックランダムアクセスメモリ(Dynamic Random-Access Memory、DRAM)等の非一時的なコンピュータ可読記憶媒体を使用して実装されるメモリ105又は他の記憶構成要素を含むか、それらへのアクセスを有する。しかしながら、場合によっては、メモリ105は、スタティックランダムアクセスメモリ(Static Random-Access Memory、SRAM)、不揮発性RAM等を含む他のタイプのメモリを使用して実装することもできる。メモリ105は、処理システム100において実装される処理ユニットの外部に実装されるために外部メモリと呼ばれる。また、処理システム100は、メモリ105等のように、処理システム100において実装されるエンティティ間の通信をサポートするためのバス110を含む。処理システム100のいくつかの実施形態は、他のバス、ブリッジ、スイッチ、ルータ等を含むが、これらは明確にするために図1に示されていない。
本明細書で説明される技術は、様々な実施形態では、様々な並列プロセッサ(例えば、ベクトルプロセッサ、グラフィックス処理ユニット(GPU)、汎用GPU(general-purpose GPU、GPGPU)、非スカラプロセッサ、高並列プロセッサ、人工知能(artificial intelligence、AI)プロセッサ、推論エンジン、機械学習プロセッサ、他のマルチスレッド処理ユニット等)の何れかで利用される。図1は、いくつかの実施形態による、並列プロセッサ、特に、グラフィックス処理ユニット(GPU)115の一例を示している。グラフィックス処理ユニット(GPU)115は、ディスプレイ120上に提示するための画像をレンダリングする。例えば、GPU115は、オブジェクトをレンダリングして、ディスプレイ120に提供されるピクセルの値を生成し、ディスプレイ120は、ピクセル値を使用して、レンダリングされたオブジェクトを表す画像を表示する。GPU115は、命令を同時に又は並列に実行する複数の計算ユニット(compute unit、CU)121、122、123(本明細書ではまとめて「計算ユニット121~123」と呼ぶ)を実装する。いくつかの実施形態では、計算ユニット121~123は、1つ以上の単一命令複数データ(single-instruction-multiple-data、SIMD)ユニットを含み、計算ユニット121~123は、ワークグループプロセッサ、シェーダアレイ、シェーダエンジン等に集約される。GPU115において実装される計算ユニット121~123の数は、設計上の選択の問題であり、GPU115のいくつかの実施形態は、図1に示されるよりも多い又は少ない計算ユニットを含む。計算ユニット121~123は、本明細書で説明されるように、グラフィックスパイプラインを実装するために使用することができる。GPU115のいくつかの実施形態は、汎用コンピューティングのために使用される。GPU115は、メモリ105に記憶されたプログラムコード125等の命令を実行し、GPU115は、実行された命令の結果等の情報をメモリ105に記憶する。
また、処理システム100は、バス110に接続され、したがってバス110を介してGPU115及びメモリ105と通信する中央処理ユニット(Central Processing Unit、CPU)130を含む。CPU130は、命令を同時に又は並列に実行する複数のプロセッサコア131、132、133(本明細書ではまとめて「プロセッサコア131~133」と呼ぶ)を実装する。CPU130において実装されるプロセッサコア131~133の数は、設計上の選択の問題であり、いくつかの実施形態は、図1に示されるよりも多い又は少ないプロセッサコアを含む。プロセッサコア131~133は、メモリ105に記憶されたプログラムコード135等の命令を実行し、CPU130は、実行された命令の結果等の情報をメモリ105に記憶する。また、CPU130は、GPU115にドローコールを発行することによって、グラフィックス処理を開始することができる。CPU130のいくつかの実施形態は、同時に又は並列に命令を独立して実行する複数のプロセッサコア(明確化のために図1には示さず)を実装する。
入力/出力(Input/Output、I/O)エンジン145は、ディスプレイ120に関連付けられた入力又は出力動作、並びに、キーボード、マウス、プリンタ、外部ディスク等のような処理システム100の他の要素を扱う。I/Oエンジン145は、I/Oエンジン145がメモリ105、GPU115又はCPU130と通信するようにバス110に結合される。図示した実施形態では、I/Oエンジン145は、コンパクトディスク(Compact Disk、CD)、デジタルビデオディスク(Digital Video Disc、DVD)等の非一時的なコンピュータ可読記憶媒体を使用して実装される外部記憶コンポーネント150に記憶された情報を読み取る。また、I/Oエンジン145は、GPU115又はCPU130による処理の結果等の情報を外部記憶コンポーネント150に書き込むことができる。
処理システム100は、パイプラインの複数のステージにおいて命令を実行するためのパイプライン回路を実装する。パイプライン回路は、計算ユニット121~123又はプロセッサコア131~133のいくつかの実施形態において実装される。いくつかの実施形態では、計算ユニット121~123を含むパイプライン回路は、限定はしないが、頂点シェーダ、ハルシェーダ、ドメインシェーダ、ジオメトリシェーダ及びピクセルシェーダを含む異なるタイプのシェーダを実行するグラフィックスパイプラインを実装するために使用される。処理システム100のいくつかの実施形態は、ウェーブ又はジオメトリシェーダウェーブ群等のウェーブ群の実行の完了に応じて、シェーダによってキャッシュに書き込まれた情報を保持する1つ以上のキャッシュを含む。キャッシュに書き込まれた情報は、その後、ピクセルシェーダウェーブ等の他のウェーブ又はウェーブ群の実行中に読み出される。ジオメトリシェーダのいくつかの実施形態は、第1のウェーブ群を生成し、シェーダプロセッサ入力(SPI)は、シェーダによる実行のために第1のウェーブ群を起動する。スキャンコンバータは、第1のウェーブ群、1つ以上のシェーダを処理した結果に基づいて、シェーダ上での実行のために第2のウェーブを生成する。第1のウェーブ群は、インフライトの第1のウェーブ群と、少なくとも1つのシェーダ上での実行を保留している第2のウェーブと、の比較に基づいて選択的にスロットリングされる。キャッシュは、第1のウェーブ群がシェーダ上での実行を終了することに応じてキャッシュに書き込まれる情報を保持する。情報は、第2のウェーブによって発行された読み取り要求に応じてキャッシュから読み取られる。場合によっては、第1のウェーブ群は、いくつの第1のウェーブ群がインフライトであり、キャッシュへのいくつの読み取り要求が保留中であるかを比較することによって、選択的にスロットリングされる。
図2は、いくつかの実施形態による、高次ジオメトリプリミティブを処理して、所定の解像度で三次元(3D)シーンのラスタ化された画像を生成することができるグラフィックスパイプライン200を示している。グラフィックスパイプライン200は、図1に示される処理システム100のいくつかの実施形態で実装される。グラフィックスパイプライン200の図示した実施形態は、DX11仕様に従って実装される。グラフィックスパイプライン200の他の実施形態は、Vulkan、Metal、DX12等の他のアプリケーションプログラミングインターフェース(Application Programming Interfaces、API)に従って実装される。グラフィックスパイプライン200は、ラスタ化前のグラフィックスパイプライン200の部分を含むジオメトリ処理部201と、ラスタ化後のグラフィックスパイプライン200の部分を含むピクセル処理部202と、に細分される。
グラフィックスパイプライン200は、バッファを実装し、頂点データ、テクスチャデータ等を記憶するために使用される1つ以上のメモリ又はキャッシュの階層等のストレージリソース205へのアクセスを有する。図示した実施形態において、ストレージリソース205は、データを記憶するために使用されるロードデータストア(load data store、LDS)206回路を含む。また、ストレージリソース205は、頻繁に使用されるデータをキャッシュする1つ以上のキャッシュ207を含む。キャッシュ207は、パラメータバッファを実装するために使用される。本明細書で説明されるように、グラフィックスパイプライン200のシェーダ上で実行されているウェーブ又はウェーブ群は、ウェーブ又はウェーブ群を処理した結果をキャッシュ207に書き込むことによって実行を終了する。グラフィックスパイプライン200の更に下流のシェーダは、シェーダ上で以前に実行を終了したウェーブ又はウェーブ群による処理の結果等のように、キャッシュ207から情報を読み取るための読み取り要求を発行することができる。ストレージリソース205は、図1に示されるメモリ105のいくつかの実施形態を使用して実装され得る。
入力アセンブラ210は、シーンのモデルの部分を表すオブジェクトを定義するために使用される、ストレージリソース205からの情報にアクセスする。プリミティブの一例が三角形211として図2に示されているが、グラフィックスパイプライン200のいくつかの実施形態では、他のタイプのプリミティブが処理される。三角形203は、1つ以上の辺214によって接続された1つ以上の頂点212を含む(明確にするために、図2には各々の1つのみが示されている)。頂点212は、グラフィックスパイプライン200のジオメトリ処理部201中にシェーディングされる。
頂点シェーダ215は、図示した実施形態ではソフトウェアで実装されており、プリミティブの単一の頂点212を入力として論理的に受信し、単一の頂点を出力する。頂点シェーダ215等のシェーダのいくつかの実施形態は、複数の頂点が同時に処理されるように、単一命令-複数データ(SIMD)処理を実施する。グラフィックスパイプライン200は、グラフィックスパイプライン200に含まれる全てのシェーダが、共有大規模SIMD計算ユニット上に同じ実行プラットフォームを有するように、統一されたシェーダモデルを実装する。したがって、頂点シェーダ215を含むシェーダは、本明細書では統一されたシェーダプール216と呼ばれるリソースの共通セットを使用して実装される。
ハルシェーダ218は、入力パッチを定義するために使用される入力高次パッチ又は制御ポイント上で動作する。ハルシェーダ218は、テッセレーション係数と、ハルシェーダ218において処理されるパッチの制御点等の他のパッチデータと、を出力する。テッセレーション係数は、グラフィックスパイプライン200内の他のエンティティによってアクセスされ得るように、ストレージリソース205内に記憶される。
テッセレータ220は、ハルシェーダ218からオブジェクト(パッチ等)を受信する。いくつかの実施形態では、ハルシェーダ218によって生成されたプリミティブは、テッセレータ220に提供される。テッセレータ220は、例えば、ハルシェーダ218によって生成されたテッセレーション係数に基づいて入力オブジェクトをテッセレーションすることにより、入力オブジェクトに対応するプリミティブを識別する情報を生成する。テッセレーションは、例えば、テッセレーションプロセスによって生成されたプリミティブの粒度を指定するテッセレーション係数によって示されるように、パッチ等の入力高次プリミティブを、より細かいレベルの詳細を表す低次出力プリミティブのセットに細分する。したがって、シーンのモデルは、(メモリ又は帯域幅を節約するため)より少数の高次プリミティブによって表され、追加の詳細は、高次プリミティブをテッセレーションすることによって追加される。
ドメインシェーダ224は、ドメインの場所及び(オプションで)他のパッチデータを入力する。ドメインシェーダ224は、提供された情報で動作し、入力ドメインの場所及び他の情報に基づいて、出力のための単一の頂点を生成する。図示した実施形態では、ドメインシェーダ224は、三角形211及びテッセレーション係数に基づいてプリミティブ222を生成する。ドメインシェーダ224は、処理の完了に応じてプリミティブ222を起動する。
ジオメトリシェーダ226は、ドメインシェーダ224から入力プリミティブを受け取り、入力プリミティブに基づいてジオメトリシェーダ226によって生成された(入力プリミティブごとの)最大4つのプリミティブを出力する。図示した実施形態では、ジオメトリシェーダ226は、テッセレートされたプリミティブ222に基づいて出力プリミティブ228を生成する。ジオメトリシェーダ226のいくつかの実施形態は、対応するシェーダプロセッサ入力(SPI、明確にするために図2には図示せず)によって起動されるウェーブ群(本明細書では「GSウェーブ群」と呼ばれる)を生成する。シェーダエンジン上での実行の終了に応じて、ウェーブ群は、出力をキャッシュ207に書き戻す。
プリミティブの1つのストリームが1つ以上のスキャンコンバータ230に提供され、いくつかの実施形態では、プリミティブの最大4つのストリームは、ストレージリソース205内のバッファに連結される。スキャンコンバータ230は、シェーディング動作、クリッピング、透視分割、切断及びビューポート選択等の他の動作を実行する。スキャンコンバータ230は、グラフィックスパイプライン200のピクセル処理部202において後で処理されるピクセルのセット232を生成する。スキャンコンバータ230のいくつかの実施形態は、例えば、グラフィックスパイプライン200に実装されたSPIに要求を送信することによって、キャッシュ207から情報を読み取る要求を提供する。
図示した実施形態では、ピクセルシェーダ234は、ピクセルフロー(例えば、ピクセルのセット232を含む)を入力し、入力ピクセルフローに応じて0又は別のピクセルフローを出力する。出力マージャブロック236は、ピクセルシェーダ234から受信したピクセルに対してブレンド、深度、ステンシル又は他の動作を実行する。
グラフィックスパイプライン200内のシェーダの一部又は全ては、ストレージリソース205に記憶されたテクスチャデータを使用してテクスチャマッピングを実行する。例えば、ピクセルシェーダ234は、ストレージリソース205からテクスチャデータを読み取り、テクスチャデータを使用して1つ以上のピクセルをシェーディングすることができる。次いで、シェーディングされたピクセルは、ユーザに提示するためにディスプレイに提供される。
図3は、いくつかの実施形態による、ジオメトリシェーダによって起動されたウェーブ又はウェーブ群を選択的にスロットリングするグラフィックスパイプライン300の一部のブロック図である。グラフィックスパイプライン300は、図1に示される処理システム100及び図2に示されるグラフィックスパイプライン200のいくつかの実施形態で実装される。
ジオメトリエンジン305は、ジオメトリシェーダのためにウェーブ又はウェーブ群を生成する。したがって、ジオメトリエンジン305によって生成されるウェーブ又はウェーブ群は、GSウェーブ群と呼ばれる。しかしながら、いくつかの実施形態では、ウェーブ又はウェーブ群は、頂点シェーダ等の他のシェーダによって又は他のシェーダのために生成され、その場合、ウェーブ又はウェーブ群は、VSウェーブ群等の他の名前で呼ばれる。ジオメトリエンジン305は、本明細書で説明されるように、GSウェーブ群を選択的に起動又はスロットリングするSPI310に、GSウェーブ群を提供する。また、ジオメトリエンジン305は、矢印320によって示されるように、GSウェーブ群の起動をシグナリングするための情報を管理回路315に提供する。管理回路315は、起動イベントがウィンドウイングバッファ330に書き込まれることに応じて、第1のカウンタ325をインクリメントする。また、管理回路315は、起動イベントがウィンドウイングバッファ330から読み出されることに応じて、第1のカウンタ325をデクリメントする。
SPI310は、シェーダハブ335内の1つ以上のシェーダ上で実行するためにGSウェーブ群を起動する。GSウェーブ群は、シェーダハブ335によって実行され、実行の終了に応じて、GSウェーブ群は、結果をキャッシュ340に書き込む。シェーダハブ335は、結果をキャッシュ340に書き込むことに応じて、GSウェーブ群が実行を終了したことをSPI310にシグナリングする。シェーダハブ335は、GSウェーブ群の完了の指標をSPI310に送信し、SPI310は、矢印345によって示されるように、GSウェーブ群が実行を終了したことを示すために、信号(本明細書では「終了」信号又は「完了」信号と呼ばれる)を管理回路315に送信する。管理回路315は、実行終了イベントがウィンドウイングバッファ330に書き込まれることに応じて、第2のカウンタ326をインクリメントする。また、管理回路315は、実行終了イベントがウィンドウイングバッファ330から読み出されることに応じて、第2のカウンタ326をデクリメントする。
プリミティブアセンブラ350は、GSウェーブ群を処理することによってプリミティブを生成し、プリミティブをクロスバー355(プリミティブハブとも呼ばれる)に提供し、クロスバー355は、アセンブルされたプリミティブをスキャンコンバータ360に提供する。スキャンコンバータ360は、シェーダハブ335内のシェーダによる実行のためのピクセルシェーダ(PS)ウェーブを生成する。したがって、スキャンコンバータ360は、365によって示されるように、SPI310に信号を送り、SPI310は、シェーダハブ335における実行のためにPSウェーブを起動することができる。また、SPI310は、PSウェーブを処理するためにシェーダハブ335によって使用されるキャッシュ340からの情報を読み取るための読み取り要求を生成する。読み取り要求を生成することに応じて、SPI310は、矢印370によって示されるように、読み取り要求がキャッシュ340に対して保留中であることを示す信号を管理回路315に送信する。管理回路315は、読み取り要求イベントがウィンドウイングバッファ330に書き込まれることに応じて、第3のカウンタ327をインクリメントする。また、管理回路315は、読み取り要求イベントがウィンドウイングバッファ330から読み出されることに応じて、第3のカウンタ327をデクリメントする。読み出し要求は、SPI310が管理回路315から「GSウェーブ完了」信号を受信するまで、SPI310から出ない。
管理回路315のいくつかの実施形態は、インフライトのGSウェーブ群と保留中のPSウェーブとの数の比較に基づいて、SPI310からの起動を選択的にスロットリングする(又は、起動を選択的にスロットリングするようにSPI310に命令する)。管理回路315は、第1のカウンタ325と第2のカウンタ326との間の差に基づいて、インフライトの第1のウェーブ群の第1の数を判定する。また、管理回路315は、第2のカウンタ326と第3のカウンタ327との間の差に基づいて、シェーダハブ335内のシェーダ上での実行を保留しているPSウェーブの第2の数を判定する。管理回路315は、第1の数が第2の数よりも小さいことに応じて、GSウェーブ群をスロットリングする(又は、スロットリングするようにSPI310に命令する)。管理回路315のいくつかの実施形態は、GSウェーブ群のスロットリングがグラフィックスパイプライン300の作業を枯渇させる可能性を減少させるために適用される追加の「バースト性」係数を判定する。この追加の係数は、PSウェーブに関連付けられた読み取り要求のバースト性の推定値に基づいて判定される。その場合、管理回路315は、第1の数が第2の数と追加のバースト性係数との和よりも小さいことに応じて、GSウェーブ群をスロットリングする(又は、スロットリングするようにSPI310に命令する)。
図4は、いくつかの実施形態による、ウェーブ又はウェーブ群を選択的にスロットリングする管理回路400の第1の実施形態のブロック図である。管理回路400の第1の実施形態は、図3に示される管理回路315のいくつかの実施形態を実装するために使用される。管理回路400は、イベント生成回路405からイベントに関連付けられた情報を受信する。いくつかの実施形態では、情報は、起動イベント、終了実行イベント、読み取り要求イベント等を示すシグナリングを含む。
ウィンドウイングバッファ(windowing buffer)410は、イベントを表す情報を、ウィンドウイングバッファ410のエントリに記憶する。ウィンドウイングバッファ410のいくつかの実施形態は、イベント生成回路405から受信されたイベントがウィンドウイングバッファ410の末尾のエントリに追加(又はプッシュ)され、ウィンドウイングバッファ410の先頭のエントリから除去(又はポップ)されるように、先入れ先出し(FIFO)バッファとして実装される。
管理回路400は、ウィンドウイングバッファ410に追加されるエントリに応じてイベントをカウントするために使用されるカウンタのセット415を含む。図示した実施形態では、セット415は、1つ以上のシェーダにおいて実行するために起動されるGSウェーブ又はウェーブ群をカウントする起動カウンタ416と、キャッシュに書き込むことによって実行を終了するGSウェーブ又はウェーブ群をカウントする生成カウンタ417と、例えば、PSウェーブに対してキャッシュへの読み取り要求をカウントする消費カウンタ418と、を含む。起動カウンタ416、生成カウンタ417及び消費カウンタ418は、ウィンドウイングバッファ410に追加される対応するイベントに応じてインクリメントされる。セット415内のカウンタ416~418は、アイドル時に0(又は、他の所定の値)にリセットされる。
また、管理回路400は、ウィンドウイングバッファ410に含まれる起動イベント、生成イベント及び消費イベントの数をカウントするために使用されるカウンタのセット420を含む。セット420は、ウィンドウイングバッファ410に書き込まれる起動イベントの数だけインクリメントし、ウィンドウイングバッファ410から読み取られる起動イベントの数だけデクリメントする起動イベントカウンタ421を含む。また、セット420は、ウィンドウイングバッファ410に書き込まれる生成イベントの数だけインクリメントし、ウィンドウイングバッファ410から読み取られる生成イベントの数だけデクリメントする生成イベントカウンタ422を含む。セット420は、ウィンドウイングバッファ410に書き込まれる消費イベントの数だけインクリメントし、ウィンドウイングバッファ410から読み取られる消費イベントの数だけデクリメントする消費イベントカウンタ423を更に含む。
管理回路400は、イベントタイプ(例えば、起動イベント、生成イベント及び消費イベント)の各々のためのイベントランカウンタ425を更に含む。イベントランカウンタ425は、各イベントのバースト性をカウントする。イベントのためのイベントランカウンタ425は、ウィンドウイングバッファ410の書き込み側でイベントランがブレークされる毎に1つだけインクリメントする。例えば、如何なる生成イベントも消費イベントもなしに50回の起動イベントがある場合、イベントランカウンタ425内のLaunchRunCounterは、1つだけインクリメントされる。50回の起動の後に、次の50サイクルにおいて50回の起動イベント及び50回の生成イベントがある場合、LaunchRunCounterは、51の値を有し、ProduceRunCounterは、50の値を有する。
管理回路400は、カウンタ415、420、425の値を使用して、イベントのバースト性を示すパラメータを計算する。平均バースト回路430は、以下のようにイベントごとのメトリックを計算する。
AverageBurst=EventCount/EventRunCount
AverageBurst=EventCount/EventRunCount
高レート回路435は、以下のように別のイベントごとのメトリックを計算する。
HighRate=EventCount+Event>AverageBurst
HighRate=EventCount+Event>AverageBurst
平均バースト回路430及び高レート回路435によって生成された値は、起動決定回路440に提供され、起動決定回路440は、この情報をカウンタ415、420、425の値と組み合わせて使用して、GSウェーブ又はウェーブ群の起動を選択的にスロットリングする。
起動決定回路440のいくつかの実施形態は、インフライトのGS作業と保留中のPS作業との比較に基づいて、GSウェーブ又はウェーブ群の起動を選択的にスロットリングする。インフライトのGS作業(WorkInFlight)は、起動カウンタ416と生成カウンタ417との値の差に基づいて推定される。保留中のPS作業(WorkReady)は、生成カウンタ417と消費カウンタ418との値の差に基づいて推定される。起動決定回路440は、インフライトのGS作業が保留中のPS作業より大きい場合、GSウェーブ又はウェーブ群の起動をスロットリングする。いくつかの実施形態では、起動決定回路440は、以下の基準が満たされる場合、GSウェーブ又はウェーブ群の起動をスロットリングする。
WorkInFlight>WorkReady+HighRate[Read]
WorkInFlight>WorkReady+HighRate[Read]
追加の係数(HighRate[Read])は、保留中のPS作業、例えば、PSウェーブに対する読み取り要求の潜在的なバースト性を考慮するために含まれる。
図5は、いくつかの実施形態による、ウェーブ又はウェーブ群を選択的にスロットリングする管理回路500の第2の実施形態のブロック図である。管理回路500の第2の実施形態は、図3に示す管理回路315のいくつかの実施形態を実装するために使用される。管理回路500は、イベント生成回路505からイベントに関連付けられた情報を受信する。いくつかの実施形態では、情報は、起動イベント、終了実行イベント、読み取り要求イベント等を示すシグナリングを含む。管理回路500は、ウィンドウイングバッファ510に追加されるエントリに応じてイベントをカウントするために使用されるカウンタのセット515を含む。セット515は、起動カウンタ516、生成カウンタ517及び消費カウンタ518を含む。また、管理回路500は、ウィンドウイングバッファ510に含まれる起動イベント、生成イベント及び消費イベントの数をカウントするために使用されるカウンタ521、522、523のセット520を含む。イベントランカウンタ525は、起動イベント、生成イベント及び消費イベントを含む各イベントのバースト性をカウントする。
管理回路500は、カウンタ515、520、525の値を使用して、イベントのバースト性を示すパラメータを計算する。平均バースト回路530は、以下のようにイベントごとのメトリックを計算する。
AverageBurst=EventCount/EventRunCount
AverageBurst=EventCount/EventRunCount
高レート回路535は、以下のように別のイベントごとのメトリックを計算する。
HighRate=EventCount+EventAverageBurst
HighRate=EventCount+EventAverageBurst
低レート回路540は、以下のように別のイベントごとのメトリックを計算する。
LowRate=EventCount-EventAverageBurst
LowRate=EventCount-EventAverageBurst
平均バースト回路530、高レート回路535及び低レート回路540によって生成された値は、起動決定回路545に提供され、起動決定回路545は、この情報をカウンタ515、520、525の値と組み合わせて使用して、GSウェーブ又はウェーブ群の起動を選択的にスロットリングする。
起動決定回路545のいくつかの実施形態は、インフライトのGS作業と保留中のPS作業との比較に基づいて、GSウェーブ又はウェーブ群の起動を選択的にスロットリングする。インフライトのGS作業(WorkInFlight)は、起動カウンタ516と生成カウンタ517との値の差に基づいて推定される。保留中のPS作業(WorkReady)は、生成カウンタ517と消費カウンタ518との値の差に基づいて推定される。図示した実施形態では、起動決定回路545は、消費レートを次のように定義する。
ConsumeRate=HighRate[Consume]-LowRate[Produce]
ConsumeRate=HighRate[Consume]-LowRate[Produce]
次に、起動決定回路545は、例えば、以下の定義を使用して、準備ができている作業の量を推定又は予測する。
ReadyForecast=WorkReady-ConsumeRate
ReadyForecast=WorkReady-ConsumeRate
起動決定回路545は、以下の基準が満たされる場合、GSウェーブ又はウェーブ群の起動をスロットリングする。
WorkInFlight>LowRate[Launch]-ReadyForecast
WorkInFlight>LowRate[Launch]-ReadyForecast
この基準が満たされない場合、追加のGSウェーブ又はウェーブ群が起動される。
図6は、いくつかの実施形態による、GSウェーブ又はウェーブ群を選択的に起動する方法600のフロー図である。方法600は、図1に示される処理システム100、図2に示されるグラフィックスパイプライン200、図3に示されるグラフィックスパイプライン300、図4に示される管理回路400、及び、図5に示される管理回路500のいくつかの実施形態において実装される。
ブロック605において、管理回路は、GSウェーブ群起動をカウントする。ブロック610において、管理回路は、GSウェーブ群終了をカウントする。ブロック615において、管理回路は、PSウェーブに対する読み取り要求をカウントする。決定ブロック620において、管理回路は、(GSウェーブ群起動及び終了の数に基づいて判定された)インフライト(図6では、飛行中)のGS作業の量を、(GSウェーブ群終了及びPSウェーブに対する読み取り要求の数に基づいて判定された)保留中PS作業の量と比較する。いくつかの実施形態では、管理回路は、本明細書で説明するように、インフライトのGS作業の量を、保留中のPS作業の量、及び、PS作業のバースト性を考慮するための追加の係数の合計と比較する。インフライトのGS作業が(場合によっては追加の係数によって増強された)保留中のPS作業を超える場合、方法600は、ブロック625に流れ、管理回路は、GSウェーブ群の起動をスロットリングする。インフライトのGS作業が(場合によっては追加の係数によって増強された)保留中のPS作業より少ない場合、方法600は、ブロック630に流れ、管理回路は、GSウェーブ群の起動をスロットリングしない。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
Claims (20)
- 装置であって、
第1のウェーブ群を生成するように構成された第1のシェーダと、
前記第1のウェーブ群を起動するように構成されたシェーダプロセッサ入力(SPI)と、
少なくとも1つの第2のシェーダにおいて前記第1のウェーブ群を処理した結果に基づいて第2のウェーブを生成するように構成されたスキャンコンバータと、を備え、
前記第1のウェーブ群は、インフライトの第1のウェーブ群と、前記少なくとも1つの第2のシェーダ上での実行を保留している第2のウェーブと、の比較に基づいて選択的にスロットリングされる、
装置。 - 前記第1のウェーブ群が前記少なくとも1つの第2のシェーダ上での実行を終了することに応じて、記憶された情報を保持するように構成されたキャッシュを更に備え、
前記情報は、対応する第2のウェーブによって読み取られる、
請求項1の装置。 - 前記第1のウェーブ群の起動をカウントするように構成された第1のカウンタと、
前記キャッシュに書き込むことによって前記少なくとも1つの第2のシェーダ上での実行を終了した前記第1のウェーブ群をカウントするように構成された第2のカウンタと、
前記キャッシュから読み取るための前記第2のウェーブからの要求をカウントするように構成された第3のカウンタと、を更に備える、
請求項2の装置。 - 前記第1のカウンタ、前記第2のカウンタ及び前記第3のカウンタの各々は、ウィンドウイングバッファに書き込まれる起動イベント、実行終了イベント及び読み取り要求イベントに応じてインクリメントされる、
請求項3の装置。 - 前記第1のカウンタ、前記第2のカウンタ及び前記第3のカウンタの各々は、前記ウィンドウイングバッファから読み出される前記起動イベント、前記実行終了イベント及び前記読み取り要求イベントに応じてデクリメントされる、
請求項4の装置。 - 前記第1のカウンタと前記第2のカウンタとの間の差に基づいて、インフライトの第1のウェーブ群の第1の数を判定し、前記第2のカウンタと前記第3のカウンタとの間の差に基づいて、前記少なくとも1つの第2のシェーダ上での実行を保留している第2のウェーブの第2の数を判定するように構成された管理回路を更に備える、
請求項5の装置。 - 前記管理回路は、前記第1の数が前記第2の数よりも小さいことに応じて、前記SPIによって起動された前記第1のウェーブ群をスロットリングするように構成されている、
請求項6の装置。 - 前記管理回路は、前記第1の数が、前記第2の数に対して、前記第2のウェーブに関連付けられた読み取り要求のバースト性に基づいて推定される追加の係数を加えたものよりも小さいことに応じて、前記SPIによって起動された前記第1のウェーブ群をスロットリングするように構成されている、
請求項7の装置。 - 前記管理回路は、スロットリングがグラフィックスパイプラインの作業を枯渇させる可能性を減少させるために前記追加の係数を判定するように構成されている、
請求項8の装置。 - 方法であって、
第1のシェーダにおいて、シェーダプロセッサ入力(SPI)による起動のための第1のウェーブ群を生成することと、
スキャンコンバータにおいて、少なくとも1つの第2のシェーダにおいて前記第1のウェーブ群を処理した結果に基づいて第2のウェーブを生成することと、
インフライトの第1のウェーブ群と、前記少なくとも1つの第2のシェーダ上での実行を保留している第2のウェーブと、の比較に基づいて、前記第1のウェーブ群を選択的にスロットリングすることと、を含む、
方法。 - 前記第1のウェーブ群が前記少なくとも1つの第2のシェーダ上での実行を終了することに応じて、キャッシュに情報を書き込むことを更に含み、
前記情報は、対応する第2のウェーブによって読み取られる、
請求項10の方法。 - 第1のカウンタにおいて、前記第1のウェーブ群の起動をカウントすることと、
第2のカウンタにおいて、前記キャッシュに書き込むことによって前記少なくとも1つの第2のシェーダ上での実行を終了した前記第1のウェーブ群をカウントすることと、
第3のカウンタにおいて、前記キャッシュから読み取るための前記第2のウェーブからの要求をカウントすることと、を更に含む、
請求項11の方法。 - ウィンドウイングバッファに起動イベントを書き込むことであって、前記第1のウェーブ群の起動をカウントすることは、前記ウィンドウイングバッファに前記起動イベントを書き込むことに応じて前記第1のカウンタをインクリメントすることを含む、ことと、
前記ウィンドウイングバッファから前記起動イベントを読み取ることであって、前記第1のウェーブ群の起動をカウントすることは、前記ウィンドウイングバッファから前記起動イベントを読み取ることに応じて前記第1のカウンタをデクリメントすることを含む、ことと、を更に含む、
請求項12の方法。 - 前記ウィンドウイングバッファに実行終了イベントを書き込むことであって、実行を終了した前記第1のウェーブ群をカウントすることは、前記ウィンドウイングバッファに前記実行終了イベントを書き込むことに応じて前記第2のカウンタをインクリメントすることを含む、ことと、
前記ウィンドウイングバッファから前記実行終了イベントを読み取ることであって、実行を終了した前記第1のウェーブ群をカウントすることは、前記ウィンドウイングバッファから前記実行終了イベントを読み取ることに応じて前記第2のカウンタをデクリメントすることを含む、ことと、
のうち何れかを更に含む、
請求項13の方法。 - 前記ウィンドウイングバッファに読み取り要求イベントを書き込むことであって、前記第2のウェーブからの要求をカウントすることは、前記ウィンドウイングバッファに前記読み取り要求イベントを書き込むことに応じて前記第3のカウンタをインクリメントすることを含む、ことと、
前記ウィンドウイングバッファから前記読み取り要求イベントを読み取ることであって、前記第2のウェーブからの要求をカウントすることは、前記ウィンドウイングバッファから前記読み取り要求イベントを読み取ることに応じて前記第3のカウンタをデクリメントすることを含む、ことと、を更に含む、
請求項13の方法。 - 前記第1のカウンタと前記第2のカウンタとの間の差に基づいて、インフライトの第1のウェーブ群の第1の数を判定することと、
前記第2のカウンタと前記第3のカウンタとの間の差に基づいて、前記少なくとも1つの第2のシェーダ上での実行を保留している第2のウェーブの第2の数を判定することと、を更に含む、
請求項15の方法。 - 前記第1のウェーブ群を選択的にスロットリングすることは、前記第1の数が前記第2の数よりも小さいことに応じて、前記SPIによって起動された前記第1のウェーブ群をスロットリングすることを含む、
請求項16の方法。 - 前記第1のウェーブ群を選択的にスロットリングすることは、前記第1の数が、前記第2の数に対して、前記読み取り要求のバースト性に基づいて推定される追加の係数を加えたものよりも小さいことに応じて、前記SPIによって起動された前記第1のウェーブ群をスロットリングすることを含む、
請求項17の方法。 - スロットリングがグラフィックスパイプラインの作業を枯渇させる可能性を減少させるために、前記追加の係数を判定することを更に含む、
請求項18の方法。 - 装置であって、
第1のウェーブ群を生成するように構成された第1のシェーダと、
少なくとも1つの第2のシェーダにおいて前記第1のウェーブ群を処理した結果に基づいて第2のウェーブを生成するように構成されたスキャンコンバータと、
前記第1のウェーブ群が前記少なくとも1つの第2のシェーダ上での実行を終了することに応じて、記憶された情報を保持するように構成されたキャッシュと、を備え、
起動されており、前記キャッシュに書き込むことによって実行を終了していない前記第1のウェーブ群の第1の数と、前記少なくとも1つの第2のシェーダ上での実行を保留している第2のウェーブから前記キャッシュへの読み取り要求の第2の数と、の比較に基づいて、前記第1のウェーブ群が選択的にスロットリングされる、
装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/217,050 US11710207B2 (en) | 2021-03-30 | 2021-03-30 | Wave throttling based on a parameter buffer |
US17/217,050 | 2021-03-30 | ||
PCT/US2022/017156 WO2022211926A1 (en) | 2021-03-30 | 2022-02-21 | Wave throttling based on a parameter buffer |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2024512466A true JP2024512466A (ja) | 2024-03-19 |
Family
ID=83448240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023556932A Pending JP2024512466A (ja) | 2021-03-30 | 2022-02-21 | パラメータバッファに基づくウェーブスロットリング |
Country Status (6)
Country | Link |
---|---|
US (1) | US11710207B2 (ja) |
EP (1) | EP4315228A1 (ja) |
JP (1) | JP2024512466A (ja) |
KR (1) | KR20240004302A (ja) |
CN (1) | CN117377973A (ja) |
WO (1) | WO2022211926A1 (ja) |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9659339B2 (en) | 2003-10-29 | 2017-05-23 | Nvidia Corporation | Programmable graphics processor for multithreaded execution of programs |
JP4260734B2 (ja) | 2004-12-21 | 2009-04-30 | 株式会社ソニー・コンピュータエンタテインメント | 描画処理装置、ラスタライザ、および描画処理方法 |
US7890738B2 (en) | 2005-01-20 | 2011-02-15 | International Business Machines Corporation | Method and logical apparatus for managing processing system resource use for speculative execution |
US7594095B1 (en) * | 2005-11-29 | 2009-09-22 | Nvidia Corporation | Multithreaded SIMD parallel processor with launching of groups of threads |
US20070139421A1 (en) | 2005-12-21 | 2007-06-21 | Wen Chen | Methods and systems for performance monitoring in a graphics processing unit |
US8355028B2 (en) | 2007-07-30 | 2013-01-15 | Qualcomm Incorporated | Scheme for varying packing and linking in graphics systems |
US8006070B2 (en) | 2007-12-05 | 2011-08-23 | International Business Machines Corporation | Method and apparatus for inhibiting fetch throttling when a processor encounters a low confidence branch instruction in an information handling system |
US8259111B2 (en) | 2008-05-30 | 2012-09-04 | Advanced Micro Devices, Inc. | Merged shader for primitive amplification |
US8633928B2 (en) | 2009-08-13 | 2014-01-21 | Intel Corporation | Reducing the bandwidth of sampler loads in shaders |
US9142057B2 (en) | 2009-09-03 | 2015-09-22 | Advanced Micro Devices, Inc. | Processing unit with a plurality of shader engines |
US8499305B2 (en) | 2010-10-15 | 2013-07-30 | Via Technologies, Inc. | Systems and methods for performing multi-program general purpose shader kickoff |
US9442780B2 (en) * | 2011-07-19 | 2016-09-13 | Qualcomm Incorporated | Synchronization of shader operation |
US9965321B2 (en) * | 2011-12-09 | 2018-05-08 | Nvidia Corporation | Error checking in out-of-order task scheduling |
US9390554B2 (en) | 2011-12-29 | 2016-07-12 | Advanced Micro Devices, Inc. | Off chip memory for distributed tessellation |
US9196079B2 (en) | 2011-12-30 | 2015-11-24 | Advanced Micro Devices, Inc. | Accelerated compute tessellation by compact topological data structure |
US9123167B2 (en) | 2012-09-29 | 2015-09-01 | Intel Corporation | Shader serialization and instance unrolling |
US9177351B2 (en) | 2012-10-09 | 2015-11-03 | Qualcomm Incorporated | Multi-primitive graphics rendering pipeline |
US9594560B2 (en) | 2013-09-27 | 2017-03-14 | Intel Corporation | Estimating scalability value for a specific domain of a multicore processor based on active state residency of the domain, stall duration of the domain, memory bandwidth of the domain, and a plurality of coefficients based on a workload to execute on the domain |
KR102100161B1 (ko) | 2014-02-04 | 2020-04-14 | 삼성전자주식회사 | Gpu 데이터 캐싱 방법 및 그에 따른 데이터 프로세싱 시스템 |
US9530174B2 (en) | 2014-05-30 | 2016-12-27 | Apple Inc. | Selective GPU throttling |
US10025367B2 (en) | 2014-08-19 | 2018-07-17 | Intel Corporation | Dynamic scaling of graphics processor execution resources |
KR102327144B1 (ko) | 2014-11-26 | 2021-11-16 | 삼성전자주식회사 | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 타일 기반 그래픽스 파이프라인을 수행하는 방법 |
US10176014B2 (en) | 2015-07-27 | 2019-01-08 | Futurewei Technologies, Inc. | System and method for multithreaded processing |
US10474462B2 (en) | 2016-02-29 | 2019-11-12 | Qualcomm Incorporated | Dynamic pipeline throttling using confidence-based weighting of in-flight branch instructions |
US10127707B2 (en) * | 2016-06-27 | 2018-11-13 | Intel Corporation | Discard mechanism for tile-based rendering |
US10664942B2 (en) | 2016-10-21 | 2020-05-26 | Advanced Micro Devices, Inc. | Reconfigurable virtual graphics and compute processor pipeline |
US10388056B2 (en) | 2017-01-26 | 2019-08-20 | Advanced Micro Devices, Inc. | Split frame rendering |
US10552321B2 (en) | 2017-08-04 | 2020-02-04 | Microsoft Technology Licensing, Llc | Flexible buffer sizing in graphics processors |
US10558499B2 (en) | 2017-10-26 | 2020-02-11 | Advanced Micro Devices, Inc. | Wave creation control with dynamic resource allocation |
US10713746B2 (en) * | 2018-01-29 | 2020-07-14 | Microsoft Technology Licensing, Llc | FIFO queue, memory resource, and task management for graphics processing |
GB2571271B (en) | 2018-02-21 | 2020-02-26 | Advanced Risc Mach Ltd | Graphics processing |
US10540260B2 (en) | 2018-02-23 | 2020-01-21 | Intel Corporation | Dynamic instruction latency management in SIMD machines |
US11275613B2 (en) | 2018-04-16 | 2022-03-15 | Advanced Micro Devices, Inc. | Enforcing central processing unit quality of service guarantees when servicing accelerator requests |
US10719268B2 (en) | 2018-06-29 | 2020-07-21 | Microsoft Technology Licensing, Llc | Techniques for safely and efficiently enqueueing and dequeueing data on a graphics processor |
US11720993B2 (en) | 2018-09-21 | 2023-08-08 | Advanced Micro Devices, Inc. | Dynamic kernel memory space allocation |
-
2021
- 2021-03-30 US US17/217,050 patent/US11710207B2/en active Active
-
2022
- 2022-02-21 KR KR1020237035150A patent/KR20240004302A/ko unknown
- 2022-02-21 WO PCT/US2022/017156 patent/WO2022211926A1/en active Application Filing
- 2022-02-21 EP EP22781816.8A patent/EP4315228A1/en active Pending
- 2022-02-21 JP JP2023556932A patent/JP2024512466A/ja active Pending
- 2022-02-21 CN CN202280022164.7A patent/CN117377973A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN117377973A (zh) | 2024-01-09 |
US11710207B2 (en) | 2023-07-25 |
US20220318944A1 (en) | 2022-10-06 |
KR20240004302A (ko) | 2024-01-11 |
WO2022211926A1 (en) | 2022-10-06 |
EP4315228A1 (en) | 2024-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11948251B2 (en) | Throttling hull shaders based on tessellation factors in a graphics pipeline | |
KR20220100877A (ko) | 대역폭 테셀레이션 팩터 감소 | |
JP7003251B2 (ja) | 動的なリソース割り当てによるウェーブ生成制御 | |
JP2024501015A (ja) | キャッシュラインに対するミス要求の選択的生成 | |
JP2024512466A (ja) | パラメータバッファに基づくウェーブスロットリング | |
US11562459B2 (en) | Selectively writing back dirty cache lines concurrently with processing | |
US20220237851A1 (en) | Spatial partitioning in a multi-tenancy graphics processing unit | |
US9406101B2 (en) | Technique for improving the performance of a tessellation pipeline | |
US11776085B2 (en) | Throttling shaders based on resource usage in a graphics pipeline | |
US20140267320A1 (en) | Technique for improving the performance of a tessellation pipeline | |
US20230205602A1 (en) | Priority inversion mitigation | |
US11822956B2 (en) | Adaptive thread group dispatch |