JP2023553151A - グラフィックスパイプラインにおけるテッセレーション係数に基づくハルシェーダのスロットリング - Google Patents
グラフィックスパイプラインにおけるテッセレーション係数に基づくハルシェーダのスロットリング Download PDFInfo
- Publication number
- JP2023553151A JP2023553151A JP2023535510A JP2023535510A JP2023553151A JP 2023553151 A JP2023553151 A JP 2023553151A JP 2023535510 A JP2023535510 A JP 2023535510A JP 2023535510 A JP2023535510 A JP 2023535510A JP 2023553151 A JP2023553151 A JP 2023553151A
- Authority
- JP
- Japan
- Prior art keywords
- counter
- shader
- thread group
- circuit
- primitive
- 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
- 238000012545 processing Methods 0.000 claims abstract description 63
- 239000000872 buffer Substances 0.000 claims abstract description 43
- 230000004044 response Effects 0.000 claims abstract description 15
- 238000000034 method Methods 0.000 claims description 57
- 230000008569 process Effects 0.000 claims description 20
- 230000000977 initiatory effect Effects 0.000 claims description 12
- 238000010586 diagram Methods 0.000 abstract description 14
- 230000008901 benefit Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000005259 measurement Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 230000003321 amplification Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000006870 function 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
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/20—Finite element generation, e.g. wire-frame surface description, tesselation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
Abstract
処理システム(300)は、1つ以上のプリミティブを含むスレッドグループを開始するハルシェーダ回路(121~123)を含む。ハルシェーダ回路は、プリミティブのサブディビジョンを示すテッセレーション係数を生成する。処理システムは、テッセレーション係数に基づいてドメインシェーダ(224)のプリミティブ開始時間間隔を推定し、ドメインシェーダのプリミティブ開始時間間隔及びハルシェーダレイテンシに基づいて、ハルシェーダ回路からのスレッドグループの開始を選択的にスロットリングするスロットリング回路(430)を含む。場合によっては、スロットリング回路は、バッファからスレッドグループを開始することに応じてインクリメントされる第1のカウンタと、ドメインシェーダの測定されたレイテンシに基づいて第1のカウンタ(435)を変更する第2のカウンタ(440)と、を含む。【選択図】図4
Description
グラフィックス処理ユニット(GPU)は、コマンドバッファから取り出されたコマンドのコピーを同時に処理するグラフィックス処理パイプラインを実装する。グラフィックスパイプラインは、グラフィックスパイプラインのリソース及び1つ以上の固定機能ハードウェアブロックを使用して実行する1つ以上のシェーダを含む。グラフィックスパイプラインは、通常、頂点及び辺から形成され、画像の部分を表す三角形等のパッチ又は他のプリミティブに対してジオメトリ演算を実行するジオメトリ部分に分割される。ジオメトリ部分内のシェーダは、頂点シェーダ、ハルシェーダ、ドメインシェーダ及びジオメトリシェーダを含むことができる。グラフィックスパイプラインのジオメトリ部分は、パイプラインのジオメトリ部分によって生成されたプリミティブがラスタ化されて(例えば、1つ以上のスキャンコンバータによって)、画像の部分を表すピクセルのセットを形成する場合に完了する。ピクセルに対する後続の処理は、ピクセル処理と呼ばれ、グラフィックスパイプラインのリソースを使用して実行するピクセルシェーダ等のシェーダによって実行される動作を含む。GPU及び他のマルチスレッド処理ユニットは、典型的には、単一のウェーブとして、複数のデータセットに対して単一のプログラムの複数のインスタンスを同時に実行する複数の処理要素(プロセッサコア又は計算ユニットとも称される)を実装する。ハードウェアに実装された階層に適合するように、階層実行モデルが使用される。実行モデルは、全てのウェーブ(ウェーブフロント、スレッド、ストリーム又はワークアイテムとも称される)によって実行される命令のカーネルを定義する。
本開示は、添付の図面を参照することによってより良好に理解され、その数々の特徴及び利点が当業者に明らかになり得る。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
グラフィックスパイプラインのジオメトリ部分におけるハルシェーダ回路は、ハルシェーダによって処理されるパッチの制御点のウェーブを開始する。また、ハルシェーダは、パッチの細分(サブディビジョン)(subdivisions)を示すテッセレーション係数を生成する。ハルシェーダによって処理されたパッチ及びテッセレーション係数は、グラフィックスパイプライン内のテッセレータに渡される。テッセレータは、テッセレーション係数を使用して、ドメインシェーダにおいてテッセレートされたプリミティブを処理する前に、パッチを三角形等の他のプリミティブに細分する。したがって、ドメインシェーダは、通常、ハルシェーダよりも多数のプリミティブを処理する。例えば、ハルシェーダによって処理されたクワッドパッチについてテッセレーション係数が16である場合、ドメインシェーダは、ハルシェーダからパッチを受信したことに応じて、512個の三角形を処理する。パッチは、グラフィックスパイプラインのリソースをできるだけ多く使用しようと試みる貪欲アルゴリズム(greedy algorithm)に基づいて、ハルシェーダ回路によって開始される。貪欲アルゴリズムに基づいてハルシェーダウェーブを開始することは、テッセレートされたプリミティブを処理するために必要とされるリソースのドメインシェーダを枯渇させることができる。いくつかのグラフィックスパイプラインは、ウェーブを処理するためにハルシェーダに割り振られ得る計算ユニットの数を制約することによって、飛行中のウェーブの数を制限するように構成されている。しかしながら、利用可能な計算ユニットの数に対する静的な制限は、ハルシェーダによって開始されたプリミティブの増幅がほとんど又は全くない場合、例えば、テッセレーション係数が1以下である場合、グラフィックスパイプラインの性能を低下させる。
図1~図7は、第1のタイプの第1のシェーダ及び第2のタイプの第2のシェーダによって消費されるグラフィックスパイプラインリソースの測定値に基づいて第1のシェーダからウェーブを選択的に開始することによって、第1のシェーダ及び第2のシェーダによって消費されるグラフィックスパイプラインリソース間のバランスを維持するシステム及び技術を開示する。いくつかの実施形態では、第1のシェーダはハルシェーダであり、第2のシェーダは、テッセレータからプリミティブを受信するドメインシェーダである。ハルシェーダは、テッセレーション係数を生成し、テッセレータは、複数のより高い解像度のプリミティブを生成するために、テッセレーション係数に基づいてプリミティブを細分(又はテッセレート)する。ハルシェーダ回路によって開始されたパッチのテッセレーション係数は、プリミティブをドメインシェーダに提供するバッファに保持される。スロットリング回路は、テッセレーション係数を使用して、ドメインシェーダから全てのプリミティブを開始するためにドメインシェーダによって必要とされる時間間隔、例えば、ドメインシェーダにおいてより高い解像度のプリミティブを処理するために必要とされるサイクル数を推定する。この時間間隔は、本明細書では「プリミティブ開始時間間隔」と呼ばれる。スロットリング回路のいくつかの実施形態は、バッファ内の対応するエントリに関連付けられたウェーブのための高解像度プリミティブ(又は高解像度プリミティブを処理するために必要とされるサイクル)の数を示す情報を記憶するレジスタのバンクを含む。記憶された情報は、ドメインシェーダについてのプリミティブ開始時間間隔を表すカウンタの値を設定するために使用される。例えば、合計カウンタは、処理のためにテッセレータに書き込まれるバッファエントリに関連付けられたレジスタ内の高解像度プリミティブを処理すると推定されるサイクル数だけインクリメントされる。合計カウンタは、ドメインシェーダ開始ロジックがパッチに関連付けられたより高い解像度のプリミティブの処理を完了したことに応じて、(ドメインシェーダ開始ロジックの推定されたプリミティブ処理レートによって)反復的にデクリメントされる。いくつかの実施形態では、エラーカウンタを使用して、ドメインシェーダから開始する前にドメインシェーダ内でプリミティブを処理するのに必要な実際の時間の測定値に基づいて合計カウンタを変更する。エラーカウンタの値は、ドメインシェーダへの背圧(back pressure)に起因して、例えば合計カウンタの値に対応するレイテンシよりも大きい測定されたレイテンシに応じて増加される。エラーカウンタの値は、測定された処理時間が合計カウンタの値以下であることに応じて減少される(又は0に設定される)。結合された合計カウンタ及びエラーカウンタは、次いで、完成したパッチのテッセレーション係数に基づいてデクリメントされる。ウェーブは、合計カウンタの値と、存在する場合にはエラーカウンタの値とに基づいて、ハルシェーダから選択的に開始される。
図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(GPGPU)、非スカラプロセッサ、高並列プロセッサ、人工知能(AI)プロセッサ、推論エンジン、機械学習プロセッサ、他のマルチスレッド処理ユニット等の何れかで利用される。図1は、いくつかの実施形態による、並列プロセッサ、特に、グラフィックス処理ユニット(GPU)115の一例を示す。グラフィックス処理ユニット(GPU)115は、ディスプレイ120上に提示するための画像をレンダリングする。例えば、GPU115は、オブジェクトをレンダリングして、ディスプレイ120に提供されるピクセルの値を生成し、ディスプレイ120は、ピクセル値を使用して、レンダリングされたオブジェクトを表す画像を表示する。GPU115は、命令を同時に又は並列に実行する複数の計算ユニット(CU)121、122、123(本明細書ではまとめて「計算ユニット121~123」と呼ぶ)を実装する。いくつかの実施形態では、計算ユニット121~123は、1つ以上の単一命令複数データ(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のいくつかの実施形態において実装される。いくつかの実施形態では、パイプライン回路は、限定はしないが、頂点シェーダ、ハルシェーダ、ドメインシェーダ、ジオメトリシェーダ及びピクセルシェーダを含む異なるタイプのシェーダを実行するグラフィックスパイプラインを実装するために使用される。処理システム100のいくつかの実施形態は、1つ以上のプリミティブを含むスレッドグループを開始するハルシェーダ回路を含む。例えば、GPU115内の計算ユニット121~123は、本明細書で説明されるように、ハルシェーダ回路、並びに、他のシェーダのための回路及びウェーブ開始のスロットリングを実装するために使用され得る。また、ハルシェーダ回路は、プリミティブの細分(サブディビジョン)を示すテッセレーション係数を生成する。処理システム100内のスロットリング回路は、テッセレーション係数に基づいてドメインシェーダについてのプリミティブ開始時間間隔を推定し、ドメインシェーダのレイテンシ及びハルシェーダレイテンシに基づいて、ハルシェーダ回路からのスレッドグループの開始を選択的にスロットリングする。場合によっては、スロットリング回路は、バッファからスレッドグループを開始することに応じてインクリメントされる第1のカウンタと、ドメインシェーダの測定されたレイテンシに基づいて第1のカウンタを変更する第2のカウンタと、を含む。
図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は、データを記憶するために使用されるロードデータストア(LDS)206回路と、グラフィックスパイプライン200によるレンダリング中に使用されるレジスタ値を記憶するために使用されるベクトル汎用レジスタ(VGPR)と、を含む。ストレージリソース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内に記憶される。いくつかの実施形態では、ハルシェーダ218によって生成されたプリミティブは、テッセレータ220に提供される。テッセレータ220は、ハルシェーダ218からオブジェクト(パッチ等)を受信し、例えば、ハルシェーダ218によって生成されたテッセレーション係数に基づいて、入力オブジェクトをテッセレーションすることにより、入力オブジェクトに対応するプリミティブを識別する情報を生成する。テッセレーションは、例えば、テッセレーションプロセスによって生成されたプリミティブの粒度を指定するテッセレーション係数によって示されるように、パッチ等の入力高次プリミティブを、より細かいレベルの詳細を表す低次出力プリミティブのセットに細分する。したがって、シーンのモデルは、(メモリ又は帯域幅を節約するため)より少数の高次プリミティブによって表され、追加の詳細は、高次プリミティブをテッセレーションすることによって追加される。
ドメインシェーダ224は、ドメインの場所及び(オプションで)他のパッチデータを入力する。ドメインシェーダ224は、提供された情報で動作し、入力ドメインの場所及び他の情報に基づいて、出力のための単一の頂点を生成する。図示した実施形態では、ドメインシェーダ224は、三角形211及びテッセレーション係数に基づいてプリミティブ222を生成する。ドメインシェーダ224は、処理の完了に応じてプリミティブ222を開始する。ジオメトリシェーダ226は、ドメインシェーダ224から入力プリミティブを受け取り、入力プリミティブに基づいてジオメトリシェーダ226によって生成された(入力プリミティブごとの)最大4つのプリミティブを出力する。図示した実施形態では、ジオメトリシェーダ226は、テッセレートされたプリミティブ222に基づいて出力プリミティブ228を生成する。
プリミティブの1つのストリームが1つ以上のスキャンコンバータ230に提供され、いくつかの実施形態では、プリミティブの最大4つのストリームは、ストレージリソース205内のバッファに連結される。スキャンコンバータ230は、シェーディング動作、クリッピング、透視分割、切断及びビューポート選択等の他の動作を実行する。スキャンコンバータ230は、グラフィックスパイプライン200のピクセル処理部202において後で処理されるピクセルのセット232を生成する。
図示した実施形態では、ピクセルシェーダ234は、ピクセルフロー(例えば、ピクセルのセット232を含む)を入力し、入力ピクセルフローに応じて0又は別のピクセルフローを出力する。出力マージャブロック236は、ピクセルシェーダ234から受信したピクセルに対してブレンド、深度、ステンシル又は他の動作を実行する。
グラフィックスパイプライン200内のシェーダの一部又は全部は、ストレージリソース205に記憶されたテクスチャデータを使用してテクスチャマッピングを実行する。例えば、ピクセルシェーダ234は、ストレージリソース205からテクスチャデータを読み取り、テクスチャデータを使用して1つ以上のピクセルをシェーディングすることができる。次いで、シェーディングされたピクセルは、ユーザに提示するためにディスプレイに提供される。
図3は、いくつかの実施形態による、ハルシェーダ回路によって開始されたスレッドグループを選択的にスロットリングする処理システム300の第1の部分のブロック図である。処理システム300の第1の部分は、図1に示される処理システム100及び図2に示されるグラフィックスパイプライン200のいくつかの実施形態で実施される。
バッファ301、302、303、304(本明細書ではまとめて「バッファ301~304」と呼ぶ)のセットは、図2に示すハルシェーダ218等のハルシェーダ回路によって開始されたスレッドグループに関連付けられたメタデータを記憶するために使用される。バッファ301~304は、パッチ等のプリミティブの1つ以上のウェーブを含むスレッドグループを開始する異なるハルシェーダ回路(明確にするために図3には図示せず)に関連付けられる。計算ユニット又はSIMD上での実行のためにスレッドグループを開始することに応じて、ハルシェーダ回路は、スレッドグループに関連付けられたメタデータをバッファ301~304のうち対応する1つに提供する。したがって、バッファ301~304内の各エントリは、対応するスレッドグループのメタデータを含む。
バッファ301~304は、ハルシェーダにおいて対応するスレッドグループを処理するための測定された時間間隔又はレイテンシを表す値を有するカウンタのセット311、312、313、314(本明細書ではまとめて「カウンタセット311~314」と呼ぶ)に関連付けられる。カウンタセット311~314内のカウンタの各々は、バッファ301~304のうち対応する1つ内のエントリに関連付けられる。例えば、カウンタセット311内の第1のカウンタは、バッファ301内の第1のエントリに関連付けられる。カウンタは、ハルシェーダ回路がスレッドグループを開始したことに応じて、バッファ301~304のうち1つにおける対応するエントリにメタデータが追加されると、カウントを開始する(例えば、インクリメント又はデクリメントする)。
別のセットのバッファ321~324は、対応するスレッドグループが処理を完了したことを示す値を記憶するエントリを有する。例えば、バッファ321内のエントリは、対応するハルシェーダ回路によって開始されたスレッドグループが計算ユニット上で実行を完了したことに応じて書き込まれる。バッファ内のエントリは、カウンタセット311~314のうち1つにおける対応するカウンタによるカウントを停止するために使用される。したがって、カウンタは、例えばスレッドグループを処理するために使用されるサイクル数として、スレッドグループの測定されたレイテンシを表す値を保持する。カウンタセット311~314内のカウンタの値のサブセットは、図4に関して本明細書で説明するように、ノード1を介して処理システム300の第2の部分に提供される。
アービタ330は、スレッドグループがハルシェーダ回路によってディスパッチされる順序で、バッファ301~304からスレッドグループメタデータを選択する。例えば、第1のスレッドグループがバッファ301に関連付けられたハルシェーダ回路によってディスパッチされ、その後、第2のスレッドグループがバッファ302に関連付けられたハルシェーダ回路によってディスパッチされる場合、アービタ330は、バッファ302からスレッドグループメタデータを選択する前に、バッファ301からスレッドグループメタデータを選択する。アービタ330は、図4に関して本明細書で説明するように、スレッドグループに関連付けられたメタデータを、ノード2を介してスレッドグループのためのテッセレーション係数をフェッチする回路に提供する。
図4は、いくつかの実施形態による、ハルシェーダ回路によって開始されたスレッドグループを選択的にスロットリングする処理システム300の第2の部分のブロック図である。処理システム300の第2の部分は、図1に示される処理システム100及び図2に示されるグラフィックスパイプライン200のいくつかの実施形態で実施される。
図4に示される処理システム300の第2の部分は、メモリ410からテッセレーション係数をフェッチし、図3に示されるアービタ330から受信されたテッセレーション係数及びメタデータに対して処理を実行する回路405を含む。アービタ330から受信されたメタデータの処理は、スレッドグループに含まれるプリミティブ(パッチ等)を識別するために、受信されたスレッドグループを解析することを含む。パッチ、テッセレーション係数及び関連するメタデータは、次いで、バッファ415に提供される。バッファ415内の各エントリは、パッチと、その関連付けられたテッセレーション係数と、メタデータと、を含む。バッファ415のエントリ内の情報は、次いで、1つ以上のテッセレータ(図2に示すテッセレータ220等)及びドメインシェーダ(図2に示すドメインシェーダ224等)に関連付けられた出力バッファに情報を分配するパッチ分配器420に提供される。
また、回路405は、スレッドグループ内のプリミティブ又はパッチのためのテッセレーション係数を、ハルシェーダスロットル回路430内のレジスタ425に提供する。レジスタのセット425内の各レジスタは、バッファ415の対応するエントリ内のスレッドグループのパッチに適用されるテッセレーション係数の値に基づいてパッチから生成されたプリミティブ(三角形等)の数の推定値を記憶する。また、ハルシェーダスロットル回路430は、ハルシェーダから開始されたスレッドグループをスロットリングするために使用される2つのカウンタを含む。第1のカウンタ435は、ドメインシェーダ回路のためのプリミティブ開始時間間隔、例えば、ハルシェーダによって提供される1つ以上のプリミティブに関連付けられたプリミティブのセットを処理及び開始するためにドメインシェーダによって使用される時間間隔を表す合計カウントの値を有する。第1のカウンタ435は、バッファ415からパッチ分配器420にパッチ(及び関連付けられたテッセレーション係数及びメタデータ)を提供することに応じてインクリメントされる。いくつかの実施形態では、第1のカウンタ435は、レジスタ425のセット内の対応するレジスタによって示される量だけインクリメントされる。例えば、第1のカウンタ435は、バッファ415内のエントリから提供されるパッチに対応するレジスタ内のプリミティブ又はパッチの数だけインクリメントされ得る。
ハルシェーダスロットル回路430内の第2のカウンタ440は、パッチについて測定されたダウンストリームレイテンシ(例えば、ドメインシェーダによってプリミティブを処理するための時間間隔)と、テッセレーション係数によって、例えば、テッセレーション係数に基づいてパッチから生成されたプリミティブの数によって示される予測されたダウンストリームプリミティブ開始時間間隔との間の差を示すエラーカウントを表す値を有する。いくつかの実施形態では、第2のカウンタ440は、スレッドグループに関連付けられた読み取りイネーブル信号が、第2のカウンタ440が0等の所定の値までカウントダウンする前に到着するか又は後に到着するかに基づいてインクリメント又はデクリメントされる。本明細書で説明するように、第2のカウンタ440内の値は、第1のカウンタ435内の値が、テッセレーション後にプリミティブを処理するためにドメインシェーダによって必要とされるプリミティブ開始時間間隔を示すように、測定されたドメインシェーダレイテンシに基づいて第1のカウンタ435を変更するために使用される。
ハルシェーダスロットリング回路430は、ハルシェーダから開始されたスレッドグループの測定されたレイテンシを示すカウンタの値に基づいて、ハルシェーダのレイテンシを決定する。カウンタの値は、ハルシェーダにおけるプリミティブを処理するシェーダエンジンに関連付けられたレジスタから(ノード1を介して)、例えば、図3に示されたカウンタセット311-314内のカウンタにおける値から受信される。図示した実施形態では、カウンタの値は、対応するスレッドグループを処理するのに必要なクロックサイクル数としてレイテンシを示す。比較回路445は、ハルシェーダによって開始された最後の8つのスレッドグループのための8つのカウンタ値等の所定の数のカウンタ値を取り出し、取り出された値を使用して、ハルシェーダの平均レイテンシを決定する。レイテンシ比較回路445は、ハルシェーダの平均レイテンシを、第1のカウンタ435内の合計カウントによって示されるドメインシェーダのプリミティブ開始時間間隔と比較する。次いで、ハルシェーダスロットル回路430は、本明細書で説明するように、比較に基づいて、ハルシェーダ回路からのスレッドグループの開始を選択的にスロットリングする。
図5は、いくつかの実施形態による、合計カウント及びエラーカウントを使用してドメインシェーダについてのプリミティブ開始時間間隔を推定する方法500の第1の部分のフロー図である。方法500は、図1に示される処理システム100、図2に示されるグラフィックスパイプライン200、並びに、図3及び図4に示される処理システム300のいくつかの実施形態で実施される。図示した実施形態では、方法500を実施するためにスロットリング回路が使用される。
ブロック505において、スロットリング回路は、スレッドグループのための書き込みデータが図4に示されるバッファ415等のFIFOバッファに書き込まれる前に、書き込みデータをインターセプトする。スロットリング回路は、この情報を使用して、スレッドグループに関連付けられたテッセレーション係数(tf1、tf2)に基づいて生成されているプリミティブの数を推定する。例えば、プリミティブの数は、以下に等しい。
2*inside_tf1*inside_tf2(クワッドパッチの場合)
floor(1.5*inside_tf1^2)(三角形の場合)
factor1*factor2(等値線の場合)
次に、プリミティブの数は、スレッドグループデータを記憶するために使用されるFIFOバッファ内のエントリに対応するレジスタ、例えば、図4に示されるレジスタ425のうち1つに格納される。
2*inside_tf1*inside_tf2(クワッドパッチの場合)
floor(1.5*inside_tf1^2)(三角形の場合)
factor1*factor2(等値線の場合)
次に、プリミティブの数は、スレッドグループデータを記憶するために使用されるFIFOバッファ内のエントリに対応するレジスタ、例えば、図4に示されるレジスタ425のうち1つに格納される。
ブロック510において、合計カウントを示す第1のカウンタは、対応するスレッドグループが書き込まれていることに応じて、プリミティブの数だけインクリメントされる。第1の読み取り動作では、エラーカウントを示す第2のカウンタに、バッファ内の現在位置のプリミティブの数に等しい値がロードされる。
ブロック515において、第1のカウンタ(合計カウント)及び第2のカウンタ(エラーカウント)のダウンカウント(又はデクリメント)が開始する。いくつかの実施形態では、第1及び第2のカウンタは、テッセレータのプリミティブレートとテッセレータの数との積だけダウンカウントする。
決定ブロック520において、スロットリング回路は、スロットリング回路が読み取りイネーブル信号を受信する前に、第2のカウンタの値(エラーカウント)が0に達したかどうかを判定する。そうである場合、方法500はブロック540に進む。ドメインシェーダのプリミティブ開始時間間隔が過小評価されていることを示す読み取りイネーブル信号の受信前に第2のカウンタが0に達した場合、方法500はブロック525に進む。
ブロック525において、スロットリング回路は、読み取りイネーブル信号が受信されるまで、各クロックサイクルにおいて第2のカウンタ(エラーカウント)をインクリメントする。第2のカウンタの値が最大値に達する場合、第2のカウンタの値は、第2のカウンタがロールオーバしないように最大値にクランプされる。ブロック530において、スロットリング回路は、読み取りイネーブル信号を受信する。ブロック535において、スロットリング回路は、第2のカウンタの値を第1のカウンタの現在の値に加算する。次いで、方法500はブロック515に進む。
ブロック540において、スロットリング回路は、第2のカウンタの値が0に達する前に読み取りイネーブル信号を受信する。次に、方法500は、ブロック540を図6の決定ブロック605に接続するノード1に進む。
図6は、いくつかの実施形態による、合計カウント及びエラーカウントを使用してドメインシェーダについてのプリミティブ開始時間間隔を推定する方法500の第2の部分のフロー図である。決定ブロック605は、ノード1を介して図5のブロック540に接続される。
決定ブロック605において、スロットリング回路は、読み取りイネーブル信号が受信された場合にエラーカウントが0に等しいかどうかを判定する。そうである場合、方法500はブロック610に進み、次の位置が第2のカウンタにロードされる。次に、方法500は、ノード2を介して図5のブロック515に進む。
読み取りイネーブル信号が受信された場合にエラーカウントが0に等しくない場合、すなわち、エラーカウントの値が0より大きい場合、方法500はブロック615に進む。0より大きいエラーカウントは、ドメインシェーダのプリミティブ開始時間間隔が過大評価されていることを示す。したがって、ブロック615において、スロットリング回路は、第1のカウンタの値(合計カウント)から第2のカウンタの値を減算する。次に、方法500は、ノード2を介して図5のブロック515に進む。
したがって、第1のカウンタは、スレッドグループの書込みと後続の読み取りイネーブル信号の受信との間のサイクル数を示す値を有する。したがって、第1のカウンタ内の合計カウントは、テッセレーション後に生成されるスレッドグループ内のプリミティブを処理するために必要とされる合計ドメインシェーダ時間/レイテンシを示す。したがって、合計カウントは、ドメインシェーダレイテンシをハルシェーダレイテンシと比較し、ハルシェーダからのウェーブの開始を選択的にスロットリングして、ハルシェーダ及びドメインシェーダにおけるスレッドグループ消費のレート間のバランスを維持するために使用され得る。
図7は、いくつかの実施形態による、ハルシェーダからのウェーブ開始を選択的にスロットリングする方法700のフロー図である。方法700は、図1に示される処理システム100、図2に示されるグラフィックスパイプライン200、並びに、図3及び図4に示される処理システム300のいくつかの実施形態で実施される。図示した実施形態では、方法500を実施するためにスロットリング回路が使用される。
ブロック705において、スロットリング回路は、ドメインシェーダについてのプリミティブ開始時間間隔を示す、スロットリング回路内の第1のカウンタによって示される合計カウントを決定する。ブロック710において、スロットリング回路は、本明細書で説明されるように、シェーダエンジンによって処理されるスレッドグループに関連付けられたカウンタの値を使用して、例えば、平均ハルシェーダレイテンシを決定する。
決定ブロック715において、スロットリング回路は、合計カウントとハルシェーダレイテンシとを比較し、合計カウントがハルシェーダレイテンシよりも8倍よりも大きいかどうかを決定する。そうである場合、比較は、ハルシェーダがドメインシェーダよりも先に実行されており、スロットリングされるべきであることを示す。したがって、方法700はブロック720に進み、ハルシェーダは、シェーダエンジンごとに2つのインフライト中のスレッドグループを可能にするようにスロットリングされる。合計カウントがハルシェーダレイテンシの8倍以下である場合、方法700は決定ブロック725に進む。
決定ブロック725において、スロットリング回路は、合計カウントとハルシェーダレイテンシとを比較し、合計カウントがハルシェーダレイテンシよりも4倍よりも大きいかどうかを決定する。そうである場合、比較は、ハルシェーダがドメインシェーダより先に実行されていることを示すが、合計カウントがハルシェーダレイテンシの8倍よりも大きい場合ほど先に実行されていない。それにもかかわらず、ハルシェーダはスロットリングされるべきである。したがって、方法700はブロック730に進み、ハルシェーダは、シェーダエンジンごとに4つの飛行中のスレッドグループを可能にするようにスロットリングされる。合計カウントがハルシェーダレイテンシの4倍以下である場合、方法700は決定ブロック735に進む。
決定ブロック735において、スロットリング回路は、合計カウントとハルシェーダレイテンシとを比較し、合計カウントがハルシェーダレイテンシよりも2倍よりも大きいかどうかを決定する。そうである場合、比較は、ハルシェーダがドメインシェーダより先に実行されていることを示すが、合計カウントがハルシェーダレイテンシの4倍よりも大きい場合ほど先に実行されていない。それにもかかわらず、ハルシェーダはスロットリングされるべきである。したがって、方法700はブロック740に進み、ハルシェーダは、シェーダエンジンごとに8つのインフライト中のスレッドグループを可能にするようにスロットリングされる。合計カウントがハルシェーダレイテンシの2倍以下である場合、方法700はブロック745に進み、ハルシェーダのスロットリングが無効化される。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
Claims (20)
- 装置であって、
1つ以上のプリミティブを含むスレッドグループを開始し、前記プリミティブのサブディビジョンを示すテッセレーション係数を生成するように構成されたハルシェーダ回路と、
前記テッセレーション係数に基づいてドメインシェーダのプリミティブ開始時間間隔を推定し、前記プリミティブ開始時間間隔及びハルシェーダのレイテンシに基づいて前記ハルシェーダ回路からの前記スレッドグループの開始を選択的にスロットリングするように構成されたスロットリング回路と、を備える、
装置。 - 前記テッセレーション係数に基づいて前記プリミティブをより高い解像度のプリミティブに細分するように構成されたテッセレータを更に備え、
前記スロットリング回路は、前記テッセレーション係数に基づいて前記ドメインシェーダにおいて前記より高い解像度のプリミティブを処理するためのサイクル数を推定し、前記サイクル数に基づいて前記スレッドグループに対する前記ドメインシェーダの前記プリミティブ開始時間間隔を推定するように構成されている、
請求項1の装置。 - 前記ハルシェーダ回路によって開始された前記スレッドグループを記憶するように構成されたエントリを含むバッファと、
前記バッファ内の前記エントリに対応するレジスタのセットであって、前記エントリ内の前記スレッドグループについて推定された前記プリミティブ開始時間間隔を示す情報を記憶するレジスタのセットと、を更に備える、
請求項2の装置。 - 前記レジスタのセット内の各レジスタは、前記レジスタに関連付けられた前記スレッドグループ内の前記より高い解像度のプリミティブの数と、前記レジスタに関連付けられた前記スレッドグループ内の前記より高い解像度のプリミティブを処理するために必要とされるサイクル数と、のうち少なくとも1つを示す情報を記憶するように構成されている、
請求項3の装置。 - 前記スロットリング回路は、
前記バッファからスレッドグループを開始することに応じてインクリメントされる第1のカウンタであって、前記第1のカウンタは、前記レジスタのセットのうち対応するレジスタによって示される量だけインクリメントされる、第1のカウンタと、
前記ドメインシェーダの測定されたレイテンシに基づいて前記第1のカウンタを変更するように構成された第2のカウンタと、を更に備える、
請求項4の装置。 - 前記第1のカウンタは、前記ドメインシェーダがテッセレーション後にプリミティブを処理するための前記プリミティブ開始時間間隔を示す、
請求項5の装置。 - 前記第2のカウンタは、前記スレッドグループに関連付けられた読み取りイネーブル信号が、前記第2のカウンタが0までカウントダウンする前に到着するか又は後に到着するかに基づいて、インクリメント又はデクリメントされる、
請求項6の装置。 - 前記スロットリング回路は、前記ハルシェーダ回路から開始された前記スレッドグループ内のプリミティブの数を示すカウンタの値に基づいて、前記ハルシェーダの前記レイテンシを決定するように構成されている、
請求項1の装置。 - 前記スロットリング回路は、前記ドメインシェーダの前記プリミティブ開始時間間隔と前記ハルシェーダの前記レイテンシとの比較に基づいて、前記ハルシェーダ回路によって開始されるスレッドグループの数を決定するように構成されている、
請求項8の装置。 - 方法であって、
ハルシェーダ回路から1つ以上のプリミティブを含むスレッドグループを開始することと、
前記ハルシェーダ回路において、前記プリミティブのサブディビジョンを示すテッセレーション係数を生成することと、
前記テッセレーション係数に基づいて、ドメインシェーダのプリミティブ開始時間間隔を推定することと、
前記プリミティブ開始時間間隔及び前記ハルシェーダ回路のレイテンシに基づいて、前記ハルシェーダ回路からの前記スレッドグループの開始を選択的にスロットリングすることと、を含む、
方法。 - 前記テッセレーション係数に基づいて、前記プリミティブをより高い解像度のプリミティブに細分することと、
前記テッセレーション係数に基づいて、前記ドメインシェーダにおいて前記より高い解像度のプリミティブを処理するためのサイクル数を推定することと、
前記サイクル数に基づいて前記スレッドグループの前記プリミティブ開始時間間隔を推定することと、を更に含む、
請求項10の方法。 - 前記ハルシェーダ回路によって開始された前記スレッドグループをバッファのエントリに記憶することと、
前記バッファ内の前記エントリに対応するレジスタのセットに、前記エントリ内の前記スレッドグループについて推定された前記プリミティブ開始時間間隔を示す情報を記憶することと、を更に含む、
請求項11の方法。 - 前記レジスタのセット内の各レジスタに、前記レジスタに関連付けられた前記スレッドグループ内の前記より高い解像度のプリミティブの数と、前記レジスタに関連付けられた前記スレッドグループ内の前記より高い解像度のプリミティブを処理するために必要とされるサイクル数と、のうち少なくとも1つを示す情報を記憶することを更に含む、
請求項12の方法。 - 前記バッファからスレッドグループを開始することに応じて第1のカウンタをインクリメントすることであって、前記第1のカウンタは、前記レジスタのセットのうち対応するレジスタによって示される量だけインクリメントされる、ことと、
前記第1のカウンタを、第2のカウンタに記憶された値で変更することであって、前記値は、前記ドメインシェーダについて測定されたプリミティブ開始時間間隔に基づいて決定される、ことと、を更に含む、
請求項13の方法。 - 前記スレッドグループを開始することに応じて、前記スレッドグループに関連付けられた読み取りイネーブル信号を受信することと、
前記第2のカウンタが0にカウントダウンする前に前記読み取りイネーブル信号が到着するか、又は、前記第2のカウンタが0にカウントダウンした後に前記読み取りイネーブル信号が到着するかに基づいて、前記第2のカウンタを選択的にインクリメント又はデクリメントすることと、を更に含む、
請求項14の方法。 - 前記ハルシェーダ回路から開始された前記スレッドグループ内のプリミティブの数を示すカウンタの値に基づいて、前記ハルシェーダ回路の前記レイテンシを決定することを更に含む、
請求項10の方法。 - 前記スレッドグループの開始を選択的にスロットリングすることは、前記ドメインシェーダの前記プリミティブ開始時間間隔と前記ハルシェーダ回路の前記レイテンシとの比較に基づいて、前記ハルシェーダ回路によって開始されるスレッドグループの数を決定することを含む、
請求項16の方法。 - 装置であって、
ハルシェーダ回路によって開始され、バッファに記憶されたスレッドグループについて推定されたドメインシェーダレイテンシを示す情報を記憶するように構成されたレジスタのセットと、
前記バッファからスレッドグループを開始することに応じてインクリメントされる第1のカウンタであって、前記第1のカウンタは、前記レジスタのセットのうち対応するレジスタによって示される量だけインクリメントされる、第1のカウンタと、
ドメインシェーダの測定されたプリミティブ開始時間間隔に基づいて前記第1のカウンタを変更するように構成された第2のカウンタと、
前記プリミティブ開始時間間隔とハルシェーダのレイテンシとを比較するように構成されたレイテンシ比較回路であって、前記ハルシェーダ回路からの前記スレッドグループの開始は前記比較に基づいて選択的にスロットリングされる、レイテンシ比較回路と、を備える、
装置。 - 前記第1のカウンタは、前記ドメインシェーダがテッセレーション後にプリミティブを処理するための前記プリミティブ開始時間間隔を示す、
請求項18の装置。 - 前記第2のカウンタは、前記スレッドグループに関連付けられた読み取りイネーブル信号が、前記第2のカウンタが0までカウントダウンする前に到着するか又は後に到着するかに基づいて、インクリメント又はデクリメントされる、
請求項19の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/121,965 US11508124B2 (en) | 2020-12-15 | 2020-12-15 | Throttling hull shaders based on tessellation factors in a graphics pipeline |
US17/121,965 | 2020-12-15 | ||
PCT/US2021/061387 WO2022132435A1 (en) | 2020-12-15 | 2021-12-01 | Throttling hull shaders based on tessellation factors in a graphics pipeline |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023553151A true JP2023553151A (ja) | 2023-12-20 |
Family
ID=81941846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2023535510A Pending JP2023553151A (ja) | 2020-12-15 | 2021-12-01 | グラフィックスパイプラインにおけるテッセレーション係数に基づくハルシェーダのスロットリング |
Country Status (6)
Country | Link |
---|---|
US (2) | US11508124B2 (ja) |
EP (1) | EP4264534A1 (ja) |
JP (1) | JP2023553151A (ja) |
KR (1) | KR20230125231A (ja) |
CN (1) | CN116745801A (ja) |
WO (1) | WO2022132435A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11069119B1 (en) * | 2020-02-28 | 2021-07-20 | Verizon Patent And Licensing Inc. | Methods and systems for constructing a shader |
US11508124B2 (en) * | 2020-12-15 | 2022-11-22 | Advanced Micro Devices, Inc. | Throttling hull shaders based on tessellation factors in a graphics pipeline |
Family Cites Families (32)
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 |
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 |
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 |
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 |
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 |
US11508124B2 (en) * | 2020-12-15 | 2022-11-22 | Advanced Micro Devices, Inc. | Throttling hull shaders based on tessellation factors in a graphics pipeline |
-
2020
- 2020-12-15 US US17/121,965 patent/US11508124B2/en active Active
-
2021
- 2021-12-01 JP JP2023535510A patent/JP2023553151A/ja active Pending
- 2021-12-01 CN CN202180084587.7A patent/CN116745801A/zh active Pending
- 2021-12-01 WO PCT/US2021/061387 patent/WO2022132435A1/en active Application Filing
- 2021-12-01 EP EP21907447.3A patent/EP4264534A1/en active Pending
- 2021-12-01 KR KR1020237024083A patent/KR20230125231A/ko unknown
-
2022
- 2022-10-26 US US17/974,199 patent/US11948251B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20220189112A1 (en) | 2022-06-16 |
KR20230125231A (ko) | 2023-08-29 |
CN116745801A (zh) | 2023-09-12 |
US20230169728A1 (en) | 2023-06-01 |
EP4264534A1 (en) | 2023-10-25 |
US11508124B2 (en) | 2022-11-22 |
US11948251B2 (en) | 2024-04-02 |
WO2022132435A1 (en) | 2022-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101091374B1 (ko) | 테셀레이션을 단일 패스로 수행하기 위한 방법 및 시스템 | |
US11948251B2 (en) | Throttling hull shaders based on tessellation factors in a graphics pipeline | |
JP7003251B2 (ja) | 動的なリソース割り当てによるウェーブ生成制御 | |
JP2023501921A (ja) | 低減帯域幅テッセレーション係数 | |
US11720499B2 (en) | Selective generation of miss requests for cache lines | |
JP2021501938A (ja) | グラフィックスパイプラインにおけるインデックスの圧縮及び復元 | |
EP4217969A1 (en) | Compressing texture data on a per-channel basis | |
US9406101B2 (en) | Technique for improving the performance of a tessellation pipeline | |
US20140267320A1 (en) | Technique for improving the performance of a tessellation pipeline | |
JP2023530428A (ja) | 処理と同時のダーティキャッシュラインの選択的書き戻し | |
US11710207B2 (en) | Wave throttling based on a parameter buffer | |
US11776085B2 (en) | Throttling shaders based on resource usage in a graphics pipeline |