JP2023554314A - グラフィックスパイプラインにおけるリソース使用量に基づくシェーダのスロットリング - Google Patents

グラフィックスパイプラインにおけるリソース使用量に基づくシェーダのスロットリング Download PDF

Info

Publication number
JP2023554314A
JP2023554314A JP2023535353A JP2023535353A JP2023554314A JP 2023554314 A JP2023554314 A JP 2023554314A JP 2023535353 A JP2023535353 A JP 2023535353A JP 2023535353 A JP2023535353 A JP 2023535353A JP 2023554314 A JP2023554314 A JP 2023554314A
Authority
JP
Japan
Prior art keywords
shader
wave
geometry
spi
counter
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
JP2023535353A
Other languages
English (en)
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 JP2023554314A publication Critical patent/JP2023554314A/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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

処理システム[100]は、第1のタイプの第1のシェーダ[226]及び第2のタイプの第2のシェーダ[234]を実行するグラフィックスパイプライン[200]を含む。場合によっては、第1のシェーダはジオメトリシェーダであり、第2のシェーダはピクセルシェーダである。処理システムは、第1のシェーダによって生成されたプリミティブを保持し、プリミティブを第2のシェーダに提供するバッファ[415]を含む。処理システムは、バッファのフルネスを監視するプリミティブハブ[325]を含む。第1のシェーダからのウェーブの送出は、バッファのフルネスに基づいてスロットリングされる。シェーダプロセッサ入力(SPI)[303]は、フルネスを示すプリミティブハブからの信号、グラフィックスパイプラインにおけるジオメトリウェーブ及びピクセルウェーブの相対的なリソース使用量の指標、又は、ジオメトリウェーブの寿命の指標に基づいて、ジオメトリシェーダによって送出されたウェーブを選択的にスロットリングする。【選択図】図4

Description

グラフィックス処理ユニット(graphics processing unit、GPU)は、コマンドバッファから取り出されたコマンドのコピーを同時に処理するグラフィックス処理パイプラインを実装する。グラフィックスパイプラインは、グラフィックスパイプラインのリソース及び1つ以上の固定機能ハードウェアブロックを使用して実行する1つ以上のシェーダを含む。グラフィックスパイプラインは、通常、ジオメトリ部分に分割され、頂点及び辺から形成されて画像の部分を表す三角形等のパッチ又は他のプリミティブに対してジオメトリ演算を実行する。ジオメトリ部分内のシェーダは、頂点シェーダ、全体シェーダ、ドメインシェーダ及びジオメトリシェーダを含み得る。グラフィックスパイプラインのジオメトリ部分は、パイプラインのジオメトリ部分によって生成されたプリミティブがラスタ化されて(例えば、1つ以上のスキャンコンバータによって)、画像の部分を表すピクセルのセットを形成する場合に完了する。ピクセルに対する後続の処理は、ピクセル処理と称され、グラフィックスパイプラインのリソースを使用して実行するピクセルシェーダ等のシェーダによって実行される動作を含む。GPU及び他のマルチスレッド処理ユニットは、通常、単一のウェーブとして複数のデータセットに対して単一のプログラムの複数のインスタンスを同時に実行する複数の処理要素(プロセッサコア又は計算ユニットとも称される)を実装する。ハードウェアに実装された階層に適合するように、階層実行モデルが使用される。実行モデルは、全てのウェーブ(ウェーブフロント、スレッド、ストリーム又はワークアイテムとも称される)によって実行される命令のカーネルを定義する。
本開示は、添付の図面を参照することによってより良好に理解され、その数々の特徴及び利点が当業者に明らかになり得る。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
いくつかの実施形態による、処理システムのブロック図である。 いくつかの実施形態による、高次ジオメトリプリミティブの処理を提供して、所定の解像度で三次元(three-dimensional、3D)シーンのラスタ化された画像を生成するように構成されたグラフィックスパイプラインを示す図である。 いくつかの実施形態による、異なるタイプのシェーダのリソース使用量に基づいてシェーダスロットリングを実装するグラフィックスパイプラインの一部分のブロック図である。 いくつかの実施形態による、グラフィックスパイプラインにおけるリソース使用量に基づいてジオメトリウェーブを選択的に送出(launches)するグラフィックスパイプラインの一部分のブロック図である。 いくつかの実施形態による、バッファフルネスに基づいてジオメトリウェーブを選択的にスロットリングするためのカウンタ値を決定する方法のフロー図である。 いくつかの実施形態による、ジオメトリシェーダウェーブ及びピクセルシェーダウェーブの相対的なリソース使用量に基づいて、ジオメトリウェーブを選択的にスロットリングするためのカウンタ値を決定する方法のフロー図である。 いくつかの実施形態による、ジオメトリシェーダウェーブ又はそのグループの寿命(lifetimes)に基づいて、ジオメトリウェーブを選択的にスロットリングするためのカウンタ値を決定する方法のフロー図である。 いくつかの実施形態による、ジオメトリシェーダウェーブをスロットリングする前の「スロットリングなし(no throttle)」状態を表す第1の時間間隔を示す図である。図示した実施形態では、サンプリングロジックがサンプリングを開始する。 いくつかの実施形態による、ジオメトリシェーダウェーブのためのスロットリングなしからスロットリングありへの遷移を含む第2の時間間隔を示す図である。 いくつかの実施形態による、プリミティブハブからのバックプレッシャの低減によるスロットリングありからスロットリングなしへの遷移を含む第3の時間間隔を示す図である。 いくつかの実施形態による、スロットリングありからスロットリングなしへの遷移が完了する第4の時間間隔を示す図である。
GPUのグラフィックスパイプラインのジオメトリ部分におけるジオメトリシェーダ等のシェーダは、シェーダによって処理されるウェーブを送出する。シェーダ処理の結果は、パイプライン内の他のシェーダ等の下流エンティティに渡される。例えば、ジオメトリシェーダウェーブジェネレータは、グラフィックスパイプラインのリソースを可能な限り多く使用しようと試みる貪欲アルゴリズム(greedy algorithm)を使用してウェーブを送出する。ジオメトリシェーダによって処理されたプリミティブは、ピクセルシェーダにおける処理のためにプリミティブをピクセルに変換する1つ以上のスキャンコンバータに渡される。1つのシェーダにおける処理のために貪欲アルゴリズムに基づいてウェーブを送出することは、プリミティブ又はピクセルに対するそれらの演算を完了するために必要とされるリソースを下流シェーダから奪うことができる。例えば、ジオメトリシェーダウェーブジェネレータがあまりにも多くのウェーブを送出し、ジオメトリシェーダがグラフィックスパイプラインのリソースを独占する場合、ピクセルシェーダは、スキャンコンバータから受信されたピクセルに対してシェーディングを実行するためにグラフィックスパイプラインのリソースにアクセスすることができないことがある。いくつかのグラフィックスパイプラインは、ウェーブを処理するためにシェーダに割り当てられ得る計算ユニットの数を制約することによって、インフライトのウェーブの数を制限するように構成されている。しかしながら、利用可能な計算ユニットの数に対する静的な制限は、より多数の計算ユニットを必要とするドローコールを実行する場合に、グラフィックスパイプラインの性能を、通常低下させる。
図1~図11は、第1のタイプの第1のシェーダ及び第2のタイプの第2のシェーダによって消費されるグラフィックスパイプラインリソースの測度に基づいて第1のシェーダからウェーブを選択的に送出することによって、第1のシェーダ及び第2のシェーダによって消費されるリソース間のバランスを維持するグラフィックスパイプラインの実施形態を開示する。いくつかの実施形態では、第1のシェーダはジオメトリシェーダであり、第2のシェーダはピクセルシェーダである。ジオメトリシェーダは、プリミティブをスキャンコンバータに提供するバッファのフルネスと、ジオメトリシェーダ及びピクセルシェーダへのリソースの相対割り当ての測度とに基づいて、ジオメトリウェーブを選択的に送出する。プリミティブハブは、ジオメトリシェーダからプリミティブを受信し、受信されたプリミティブに基づいてピクセルを生成するスキャンコンバータのセットにプリミティブを提供する先入れ先出し(first-in-first-out、FIFO)バッファのセットのフルネスを監視する。プリミティブハブは、「デッド」サイクルの数を示すためにインクリメントされるストールカウンタとして実装されるストール信号を使用して、ジオメトリシェーダによって送出されるウェーブをスロットリングする。デッドサイクルの数は、FIFOバッファの少なくとも1つのフルネスに基づいて決定され、次いで、各クロックサイクルにおいてデクリメントされる。ジオメトリシェーダは、ストールカウンタが0等の所定の値を有することに応じてウェーブを送出する。
プリミティブハブは、シェーダプロセッサ入力(shader processor input、SPI)にフルネスを示すフィードバックを提供し、SPIは、ジオメトリシェーダ及びピクセルシェーダのリソース使用量に基づいてジオメトリシェーダウェーブを選択的にスロットリングする。SPIのいくつかの実施形態は、インフライトジオメトリシェーダウェーブ及びインフライトピクセルシェーダウェーブへのローカルデータストア(local data store、LDS)リソースの相対割り当て、インフライトジオメトリシェーダウェーブ及びインフライトピクセルシェーダウェーブへのベクトル汎用レジスタ(vector general-purpose registers、VGPR)等のレジスタの相対割り当て、又は、それらの組み合わせを決定する。SPIは、インフライトジオメトリシェーダウェーブ及びインフライトピクセルシェーダウェーブへのリソースの相対割り当てが、インフライトジオメトリシェーダウェーブがリソースを消費して、インフライトピクセルシェーダウェーブの処理を妨げていることを示す閾値を超えたことに応じて、ストールカウンタをインクリメントする。いくつかの実施形態では、ストールカウンタの値は、1つ以上のジオメトリシェーダグループ内のジオメトリシェーダウェーブの寿命に基づいて決定され、寿命が閾値を超えた場合にストールカウンタがインクリメントされる。
図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つ以上の単一命令複数データ(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のいくつかの実施形態において実装される。いくつかの実施形態では、パイプライン回路は、限定はしないが、頂点シェーダ、ハルシェーダ、ドメインシェーダ、ジオメトリシェーダ及びピクセルシェーダを含む異なるタイプのシェーダを実行するグラフィックスパイプラインを実装するために使用される。また、パイプライン回路は、シェーダによって生成されたプリミティブを保持するバッファ含む。いくつかの実施形態では、1つ以上のバッファが、ジオメトリシェーダによって生成されたプリミティブを保持し、次いで、これらのプリミティブをピクセルシェーダに提供する。また、パイプライン回路は、バッファのフルネスを監視するプリミティブハブを含む。ジオメトリシェーダからのウェーブの送出は、バッファのフルネスに基づいてスロットリングされる。シェーダプロセッサ入力(SPI)は、フルネスを示すプリミティブハブからの信号、グラフィックスパイプラインにおけるジオメトリウェーブ及びピクセルウェーブの相対的なリソース使用量の指標、又は、ジオメトリウェーブの寿命の指標に基づいて、ジオメトリシェーダによって送出されたウェーブを選択的にスロットリングする。
図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によって生成されたプリミティブは、テッセレータ220に提供される。テッセレータ220は、ハルシェーダ218からオブジェクト(パッチ等)を受信し、例えば、ハルシェーダ218によってテッセレータ220に提供されたテッセレーション係数に基づいて、入力オブジェクトをテッセレーションすることにより、入力オブジェクトに対応するプリミティブを識別する情報を生成する。テッセレーションは、例えば、テッセレーションプロセスによって生成されたプリミティブの粒度を指定するテッセレーション係数によって示されるように、パッチ等の入力高次プリミティブを、より細かいレベルの詳細を表す低次出力プリミティブのセットに細分する。したがって、シーンのモデルは、(メモリ又は帯域幅を節約するため)より少数の高次プリミティブによって表され、追加の詳細は、高次プリミティブをテッセレーションすることによって追加される。
ドメインシェーダ224は、ドメインの場所及び(オプションで)他のパッチデータを入力する。ドメインシェーダ224は、提供された情報で動作し、入力ドメインの場所及び他の情報に基づいて、出力のための単一の頂点を生成する。図示した実施形態では、ドメインシェーダ224は、三角形211及びテッセレーション係数に基づいてプリミティブ222を生成する。ジオメトリシェーダ226は、入力プリミティブを受信し、入力プリミティブに基づいてジオメトリシェーダ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のブロック図である。部分300は、図2に示されるグラフィックスパイプライン200のいくつかの実施形態を実装するために使用される。コマンドは、シェーダプロセッサ入力(SPI)回路301、302、303(本明細書ではまとめて「SPI301~303」と称される)に分配され、これらの回路は、対応するシェーダ311、312、313(本明細書ではまとめて「シェーダ311~313」と称される)による処理のためにウェーブを送出する。図示した実施形態では、シェーダ311~313は、ジオメトリシェーダとして実装される。明確にするために、図3には示されていないが、SPI301~303は、本明細書で説明するように、シェーダ311~313のためのウェーブ送出をスロットリングするために使用されるカウンタを含む(又はカウンタに関連付けられる)。シェーダ311~313は、本明細書ではまとめて「PA321~323」と称される、対応するプリミティブアセンブラ(primitive assembler、PA)321、322、323に提供される点、線、三角形又は他のプリミティブを含む出力を生成する。
プリミティブハブ325は、PA321~323からプリミティブを受信し、本明細書ではまとめて「スキャンコンバータ331~332」と称されるスキャンコンバータ331、333、333にプリミティブを分配する。プリミティブハブ325のいくつかの実施形態は、PA320 123の各々に関連付けられた先入れ先出し(FIFO)バッファのセットから構成されるバッファ複合体(明確にするために図3には示されていない)を含む。プリミティブハブ323が、対応するFIFOバッファを介して、PA321~323のいずれかからスキャンコンバータ331~333のいずれかにプリミティブを選択的に提供することができるように、バッファの各セットは、スキャンコンバータ331~333のうち対応する1つに関連付けられる。また、プリミティブハブ323は、FIFOバッファのフルネスを示す信号をSPI301~303に提供し、これらの信号を使用して、本明細書で説明するように、ウェーブ送出を選択的にスロットリングする。スキャンコンバータ331~333は、受け取ったプリミティブをラスタ化して、表示のためのプリミティブを表すピクセルのセットを生成する。
SPI301~303のいくつかの実施形態は、ジオメトリシェーダ(図2に示されるジオメトリシェーダ226等)及びピクセルシェーダ(図2に示されるピクセルシェーダ234等)を含むシェーダによるリソース使用量を示すデータを収集する。次いで、リソース使用量データは、ウェーブ送出を選択的にスロットリングするために使用される。いくつかの実施形態では、SPI301~303は、ジオメトリシェーダによるリソース使用量がピクセルシェーダウェーブに悪影響を及ぼしていると判定したことに応じて、ジオメトリシェーダウェーブの送出レートを低減するために使用されるリソース使用量カウンタ(明確にするために図3には図示せず)を実装する。SPI301~303によって取得されるデータは、以下を含む。
1.LDS及びVGPR消費を考慮することによる、インフライトのジオメトリシェーダウェーブ及びピクセルシェーダウェーブによって使用されるリソースの量。スロットリング回路は、以下を考慮する。
a.インフライトのジオメトリシェーダウェーブによって使用されるVGPRの数
b.インフライトのピクセルシェーダウェーブによって使用されるVGPRの数
c.インフライトのジオメトリシェーダウェーブによって使用されるLDSチャンクの数
d.インフライトのピクセルシェーダウェーブによって使用されるLDSチャンクの数
データ収集ロジックは、SPIによってアクセス可能且つ変更可能なパラメータ値によって制御される2つの使用量モードを有する。
・モード0-ロジックは、シェーダエンジンに利用可能なVGPRの総数に対するジオメトリシェーダウェーブによって使用されるリソースの比を見る。この情報は、シェーダエンジン内のジオメトリシェーダによるリソース使用量を制限するために使用され得る。
・モード1-ロジックは、ジオメトリシェーダによって使用されるリソースと、ジオメトリシェーダリソース及びピクセルシェーダリソースの合計と、の比を見る。この情報は、ジオメトリシェーダ及びピクセルシェーダの相対的なリソース使用量を制限するために使用される。
2.ワークグループプロセッサにおいてリソースが利用可能でないため、ピクセルシェーダウェーブがストールされるサイクル数。ピクセルシェーダのスタイルカウントは、次のように決定される。
・スロットリングロジックはリソースアロケータロジックからストール信号を得る。
・ストールカウンタは、ストール信号がハイであるサイクル数をカウントし、次のサンプルにフロップされるストールカウントを生成する。
・フロップされたストールカウントは、ピクセルシェーダがウェーブ64である場合、2の係数で乗算される。ストールカウントの最大値は、ウェーブ32ピクセルシェーダについてはプログラムされたサンプル間隔に等しく、ウェーブ64ピクセルシェーダについてはその値の2倍である。
・ストールカウンタはサンプル時に0にリセットする。
グラフィックスパイプラインの部分300は、ジオメトリシェーダから送出されたウェーブのグループ内の何らかのレイテンシを隠すことができる。しかしながら、ウェーブ(又は対応するグループ)の実際の寿命がこの値を超える場合、グラフィックスパイプラインの性能は低下し、ジオメトリシェーダウェーブグループは、より長い持続時間にわたってリソースをブロックし始める。したがって、ピクセルシェーダウェーブがリソースについて不足している場合、より長い寿命を有するジオメトリシェーダグループは、より短い寿命を有するジオメトリシェーダグループよりもピクセルについて長いストールを潜在的に生成する。したがって、SPI301~303のいくつかの実施形態は、ジオメトリシェーダグループの寿命を監視し、寿命を閾値と比較する。SPI301~303は、ジオメトリシェーダグループの寿命が閾値を超えたことに応じて、ジオメトリシェーダからのウェーブ送出をスロットリングするために、より長いストールを生成する。
図4は、いくつかの実施形態による、グラフィックスパイプラインにおけるリソース使用量に基づいてジオメトリウェーブを選択的に送出するグラフィックスパイプラインの一部分400のブロック図である。グラフィックスパイプラインの部分400は、図1に示されるグラフィックスパイプライン200及び図3に示されるグラフィックスパイプラインの部分300のいくつかの実施形態を実装するために使用される。部分400は、プリミティブアセンブラ(PA)401、402、403を含み、これらは、本明細書ではまとめて「PA401~403」と称され、図3に示すシェーダ311~313等の対応するシェーダからプリミティブを受信する。
プリミティブハブ405は、バッファ415のセット411、412、413(明確にするために1つのみが符号によって示される)を含み、セット411~413の各々は、本明細書ではまとめて「スキャンコンバータ421~423」と称される、対応するスキャンコンバータ421、422、423に関連付けられる。プリミティブハブ405は、PA401~403からプリミティブを受信し、セット411~413の各々における対応するバッファにプリミティブのコピーを記憶する。また、プリミティブハブ405は、バッファ415のフルネスを監視し、フルネスに基づいてウェーブ送出をスロットリングするかどうかを決定する。いくつかの実施形態において、プリミティブハブ405内のポーリングロジック425は、1000クロックサイクル毎等のプログラムされた時間間隔で、セット411~413内のバッファ415にポーリングして、それらのフルネスを決定する。プリミティブハブ405内のレートリミッタ430は、ジオメトリシェーダのためのウェーブ送出をスロットリングするために使用されるデッドサイクルの数をインクリメントする。いくつかの実施形態では、レートリミッタ430は、インクリメント毎に追加されるデッドサイクルの数を示す第1の値と、インクリメントステップを示す第2の値と、を使用する。したがって、インクリメント毎に、デッドサイクルの数は第2の値だけインクリメントされ、デクリメントパルス毎に、デッドサイクルは第2の値だけ減少される。
グラフィックスパイプラインの部分400は、ウェーブ送出を選択的にスロットリングするために使用されるデッドサイクルの数を示すカウンタ435を含む。カウンタ435のいくつかの実施形態は、図3に示されるSPI301~303等の対応するSPI内に実装される。プリミティブハブ405は、監視されたバッファフルネスを示す信号(例えば、バックプレッシャ)をSPIに提供する。いくつかの実施形態では、バックプレッシャは、プリミティブハブ405とPA401~403との間のインターフェース上で提供される。バックプレッシャは、カリング後に消費されるのを待っているジオメトリ作業の量の推定値を示す。例えば、バックプレッシャは、プリミティブハブ405から各SPIに伝達される2ビットステータス信号として伝達される。2ビットは、バッファ415のステータスを表す。いくつかの実施形態では、ステータスロジックは、各PA401に対応するセット411~413内の全てのバッファ415を見て、最も多くのエントリを有し、したがって最も「フル」であるバッファ415に基づいてステータスを生成する。本明細書で説明するように、SPIは異なるモードで動作することができる。表1は、いくつかの実施形態におけるステータスビットによって表されるステータスを示す。ステータスロジックは、PA401~403毎に複製される。
Figure 2023554314000002
図5は、いくつかの実施形態による、バッファフルネスに基づいてジオメトリウェーブを選択的にスロットリングするためのカウンタ値を決定する方法500のフロー図である。方法500は、図1に示される処理システム100、図2に示されるグラフィックスパイプライン200、図3に示される処理システムの一部分300、及び、図4に示される処理システムの一部分400のいくつかの実施形態において実装される。
ブロック505において、プリミティブハブは、1つ以上のプリミティブアセンブラからデータを受信し、ラスタ化のために1つ以上のスキャンコンバータにデータを提供するFIFOバッファのセットのバッファフルネスを監視する。ブロック510において、プリミティブハブは、バッファフルネスに基づいてステータス信号を生成する。本明細書で説明するように、ステータス信号は、バッファフルネスの異なる範囲を示す値を有するビット(例えば、2ビット)のセットを含むことができる。
ブロック515において、プリミティブハブは、ステータス信号を1つ以上のSPIに提供する。ブロック520において、カウンタ値がステータス信号に基づいて決定される。例えば、カウンタ値は、ステータス信号によって示されるバッファフルネスの範囲に基づいて決定される値を与えられることができ、その結果、カウンタ値は、バッファフルネスがより大きい場合、より大きい量だけインクリメントされる。本明細書で説明するように、ジオメトリウェーブの選択的なスロットリングは、ジオメトリシェーダウェーブ及びピクセルシェーダウェーブの相対的なリソース使用量に基づいて決定されたカウンタ値、並びに、ジオメトリシェーダウェーブ又はそのグループの寿命に基づいて決定されたカウンタ値と併せて、バッファフルネスに基づいて決定されたカウンタ値を使用して実行される。
図6は、いくつかの実施形態による、ジオメトリシェーダウェーブ及びピクセルシェーダウェーブの相対的なリソース使用量に基づいて、ジオメトリウェーブを選択的にスロットリングするためのカウンタ値を決定する方法600のフロー図である。方法600は、図1に示される処理システム100、図2に示されるグラフィックスパイプライン200、図3に示される処理システムの一部分300、及び、図4に示される処理システムの一部分400のいくつかの実施形態において実装される。
ブロック605において、SPIは、ジオメトリシェーダウェーブ及びピクセルシェーダウェーブによるリソース使用量を監視する。図示した実施形態では、SPIは、ジオメトリシェーダウェーブ及びピクセルシェーダウェーブによるLDS使用量、VGPR使用量、又は、それらの組み合わせを監視する。ブロック610において、SPIは、本明細書で説明するように、LDS使用量、VGPR使用量、又は、それらの組み合わせに基づいて、ジオメトリシェーダウェーブ及びピクセルシェーダウェーブへの相対的なリソース割り当てを決定する。
決定ブロック615において、SPIは、相対割り当てが閾値を上回っているかどうかを決定する。上回っている場合、方法600はブロック620に進み、SPIは、ジオメトリシェーダウェーブの送出を選択的にスロットリングするためのカウンタを設定するために使用される値をインクリメントする。相対割り当てが閾値を上回っていない場合、方法600はブロック625に進み、SPIはカウンタをその現在の値に維持する。本明細書で説明するように、ジオメトリウェーブの選択的なスロットリングは、プリミティブハブにおけるバッファフルネスに基づいて決定されたカウンタ値、及び、ジオメトリシェーダウェーブ又はそのグループの寿命に基づいて決定されたカウンタ値と併せて、ジオメトリシェーダウェーブ及びピクセルシェーダウェーブの相対的なリソース使用量に基づいて決定されたカウンタ値を使用して実行される。
図7は、いくつかの実施形態による、ジオメトリシェーダウェーブ又はそのグループの寿命に基づいて、ジオメトリウェーブを選択的にスロットリングするためのカウンタ値を決定する方法700のフロー図である。方法700は、図1に示される処理システム100、図2に示されるグラフィックスパイプライン200、図3に示される処理システムの一部分300、及び、図4に示される処理システムの一部分400のいくつかの実施形態において実装される。
ブロック705において、ジオメトリシェーダウェーブ(又はジオメトリシェーダウェーブのグループ)が、グラフィックスパイプラインにおいて送出される。ブロック710において、SPIは、本明細書で説明するように、ジオメトリシェーダウェーブ(又はグループ)の寿命を決定する。決定ブロック715において、SPIは、寿命が閾値を上回っているかどうかを決定する。上回っている場合、方法700はブロック720に進み、SPIは、ジオメトリシェーダウェーブの送出を選択的にスロットリングするためのカウンタを設定するために使用される値をインクリメントする。寿命が閾値を上回っていない場合、方法600はブロック725に進み、SPIはカウンタをその現在の値に維持する。本明細書で説明するように、ジオメトリウェーブの選択的なスロットリングは、プリミティブハブにおけるバッファフルネスに基づいて決定されたカウンタ値、及び、ジオメトリシェーダウェーブ及びピクセルシェーダウェーブの相対的なリソース使用量に基づいて決定されたカウンタ値と併せて、ジオメトリシェーダウェーブ(又はグループ)の寿命に基づいて決定されたカウンタ値を使用して実行される。
いくつかの実施形態では、ジオメトリシェーダウェーブは、ストールカウントが0等の別の所定の値になるまで維持される所定の値(例えば、高い値又は1)を有するストール信号を追加することによってスロットリングされる。ストール信号がハイのままである間、リソースはグラントされず、ジオメトリシェーダウェーブに割り当てられる。ストールカウントは、プリミティブハブによって生成されたFIFOステータスデータ、SPIによって生成されたリソース使用量データ、及び、ジオメトリウェーブの寿命に基づいて決定される。例えば、ストールカウントは、上に開示された3つのオプションの中から最大のストールカウントを選択するためにOR演算を適用することによって生成され得る。いくつかの実施形態では、最小ストールカウントは0に設定され、1024の最大ストールカウントが使用される。
プリミティブハブによる(又はプリミティブハブによって生成されたバックプレッシャに基づく)スロットリングは、ストールカウンタによって示されるデッドサイクルの数を制御するレジスタフィールドの値に基づいて実行される。第1のフィールドは、「スロットリングなし」状態からスロットリングあり状態への遷移時に追加されるデッドサイクルの数を示す。第2のフィールドは、各サンプル上のデッドサイクルに対するインクリメント又はデクリメントを示す。スロットリングが有効にされ、次のジオメトリシェーダウェーブがリソースをグラントされている場合、ストールカウンタにストールカウントがロードされ、ダウンカウントを開始する。追加されるデッドサイクルの数は、サンプル上で決定されるが、そのカウントは、次のジオメトリシェーダウェーブがリソースをグラントされていることに応じて使用される。
SPIによるスロットリングは、本明細書で説明するように、リソース使用量情報に基づいて決定される。いくつかの実施形態では、ジオメトリシェーダウェーブ送出をスロットリングするための複数のトリガが存在する。
第1のトリガは、ジオメトリシェーダウェーブによるLDS使用量に基づく。測定された使用量が閾値を超えたことに応じて、ジオメトリシェーダウェーブ送出はスロットリングされる。トリガ生成ロジックのいくつかの実施形態は、以下のモードを使用する。
・モード0-このモードは、シェーダエンジンにおいて利用可能な総LDSと比較したジオメトリシェーダグループのLDS使用量を見る。この比が閾値以上である場合、第1のトリガが設定される。有効レジスタ値は、0~9である。この値は、比較の前に10倍される。
・モード1-このモードは、シェーダエンジン内のジオメトリシェーダウェーブ及びピクセルシェーダウェーブによって使用される総LDSと比較したジオメトリシェーダウェーブのLDS使用量を見る。この比が閾値以上である場合、第2のトリガが設定される。有効レジスタ値は、0~9である。この値は、比較の前に10倍される。
・モード2-このモードは、使用量を見ない。第1のトリガは、常にこのモードに設定される。GSリソース使用量にかかわらず、PSウェーブがストールしている場合、ジオメトリシェーダウェーブの送出はスロットリングされる。
第2のトリガは、ジオメトリシェーダウェーブによるVGPR使用量に基づく。測定された使用量が閾値を超えたことに応じて、ジオメトリシェーダウェーブ送出はスロットリングされる。トリガ生成ロジックのいくつかの実施形態は、以下のモードを使用する。
・モード0-このモードは、ジオメトリシェーダウェーブによって使用されるVGPRの数を見て、それをシェーダエンジンにおいて利用可能なVGPRの総数と比較する。この比が閾値以上である場合、第2のトリガが設定される。有効レジスタ値は、0~9である。この値は、比較の前に10倍される。
・モード1-このモードは、ジオメトリシェーダウェーブによって使用されるVGPRの数を見て、それをシェーダエンジン内のジオメトリシェーダウェーブ及びピクセルシェーダウェーブによって使用されるVGPRの総数と比較する。この比が閾値以上である場合、第2のトリガが設定される。有効レジスタ値は、0~9である。この値は、比較の前に10倍される。
・モード2-このモードは、使用量を見ない。第2のトリガは、常にこのモードに設定される。ジオメトリシェーダリソース使用量にかかわらず、ピクセルシェーダウェーブがストールしている場合、ジオメトリシェーダウェーブの送出がスロットリングされる。
第3のトリガは、ピクセルシェーダウェーブがストールされるサイクルの平均数に基づいて設定される。ピクセルシェーダウェーブストールのサイクル数は、所定の時間間隔で、例えば、所定数のクロックサイクル後にサンプリングされる。第3のトリガは、以下の条件が満たされる場合に設定される。
1.ピクセルシェーダストールサイクルの現在の数が、計算された平均ストールサイクル以上であるか又は最大サンプルカウントに等しい。
2.ピクセルシェーダストールサイクルの現在の数が閾値以上である。
SPIスロットルが有効にされ、第3のトリガが設定され、第1のトリガ又は第2のトリガの何れかが設定された場合、SPIスロットルはアクティブである。スロットリングロジック及びSPIは、ストールカウンタによって示されるデッドサイクルの数を制御するレジスタフィールドを使用する。第1のフィールドは、「スロットリングなし」状態からスロットリングあり状態への遷移時に追加されるデッドサイクルの数を示す。第2のフィールドは、各サンプル上のデッドサイクルに対するインクリメント又はデクリメントを示す。スロットリングが有効にされ、次のジオメトリシェーダウェーブがリソースをグラントされている場合、ストールカウンタにストールカウントがロードされ、ダウンカウントを開始する。追加されるデッドサイクルの数は、サンプル上で決定されるが、そのカウントは、次のジオメトリシェーダウェーブがリソースをグラントされていることに応じて使用される。
図8は、いくつかの実施形態による、ジオメトリシェーダウェーブをスロットリングする前の「スロットリングなし」状態を表す第1の時間間隔800を示す。図示した実施形態では、サンプリングロジックがサンプリングを開始する。100クロックサイクル後、サンプリングロジックは、FIFOバッファのステータスが00のプリミティブにあることを示す信号を検出する。スロットリングは適用されない。
図9は、いくつかの実施形態による、ジオメトリシェーダウェーブのためのスロットリングなしからスロットリングありへの遷移を含む第2の時間間隔900を示す。1000クロック後、プリミティブハブ内のFIFOバッファのステータスは00から10に変化する。最大カウンタ値は、スロットル基数*4に等しい256に設定される。次のジオメトリシェーダウェーブは、1200クロック後にリソースをグラントされる。これは、スロットリングなし状態からスロットリングあり状態への最初の遷移である。カウンタはダウンカウントを開始し、カウンタが0の所定の値になるまでストールを設定する。
図10は、いくつかの実施形態による、プリミティブハブからのバックプレッシャの低減によるスロットリングありからスロットリングなしへの遷移を含む第3の時間間隔1000を示す。3000クロックで、サンプルは、プリミティブハブ内のFIFOバッファのステータスの10から01への変化を検出する。最大カウンタ値は128に設定される。次のジオメトリシェーダウェーブは、3100クロックでグラントされる。カウンタはカウントを開始し、ストールは128クロックの間ハイのままである。
図11は、いくつかの実施形態による、スロットリングありからスロットリングなしへの遷移が完了する第4の時間間隔1100を示す。3500クロックで、サンプリングは、プリミティブハブ内のFIFOバッファのステータスの01から00への変化を検出する。最大カウンタ値は0に設定される。3600クロックで、サンプリングは、プリミティブハブ内のFIFOバッファのステータスの変化を検出しない。最大カウンタ値は0のままである。
本明細書で開示されるように、いくつかの実施形態では、装置は、第1のタイプの第1のシェーダ及び第2のタイプの第2のシェーダを実行するように構成されたグラフィックスパイプラインと、第1のシェーダによって生成されたプリミティブを保持し、プリミティブを第2のシェーダに提供するように構成された少なくとも1つのバッファと、少なくとも1つのバッファの少なくとも1つのフルネスを監視するように構成されたプリミティブハブと、を含み、第1のシェーダからのウェーブの送出は、少なくとも1つのフルネスに基づいてスロットリングされる。一態様では、第1のシェーダはジオメトリシェーダであり、第2のシェーダはピクセルシェーダであり、少なくとも1つのバッファは先入れ先出し(FIFO)バッファである。別の態様では、本装置は、デッドサイクルの数を示すように構成されたカウンタと、カウンタに基づいて、ジオメトリシェーダによって送出されたウェーブを選択的にスロットリングするように構成されたシェーダプロセッサ入力(SPI)と、を含む。更に別の態様では、プリミティブハブが、少なくとも1つのフルネスを示すフィードバック信号をSPIに提供するように構成され、デッドサイクルの第1の数は、フィードバック信号に基づいて決定される。
一態様では、SPIが、インフライトジオメトリシェーダウェーブ及びインフライトピクセルシェーダウェーブへのローカルデータストア(LDS)リソースの第1の相対割り当て、並びに、インフライトジオメトリシェーダウェーブ及びインフライトピクセルシェーダウェーブへのベクトル汎用レジスタ(VGPR)の第2の相対割り当てのうち少なくとも1つを決定するように構成されている。別の態様では、SPIが、第1の相対割り当てを第1の閾値と比較すること、第2の相対割り当てを第2の閾値と比較すること、又は、それらの組み合わせによって、デッドサイクルの第2の数を決定するように構成されている。更に別の態様では、SPIが、ジオメトリシェーダによって送出された少なくとも1つのウェーブの少なくとも1つの寿命を決定し、少なくとも1つの寿命を少なくとも1つの第3の閾値と比較することに基づいて、デッドサイクルの第3の数を決定するように構成されている。更に別の態様では、カウンタは、デッドサイクルの第1の数、第2の数及び第3の数のうち少なくとも1つに基づいてインクリメントされ、カウンタは、各クロックサイクルにおいてデクリメントされる。更に別の態様では、ジオメトリシェーダは、カウンタが所定の値を有することに応じてウェーブを送出する。
いくつかの実施形態では、方法は、第1のタイプの第1のシェーダ及び第2のタイプの第2のシェーダをグラフィックスパイプライン上で実行することと、グラフィックスパイプラインのプリミティブハブにおいて、第1のシェーダによって生成されたプリミティブを保持し、プリミティブを第2のシェーダに提供するように構成された少なくとも1つのバッファの少なくとも1つのフルネスを監視することと、少なくとも1つのフルネスに基づいて、第1のシェーダから送出されたウェーブを選択的にスロットリングすることと、を含む。一態様では、第1のシェーダはジオメトリシェーダであり、第2のシェーダはピクセルシェーダであり、少なくとも1つのバッファは先入れ先出し(FIFO)バッファである。別の態様では、本方法は、デッドサイクルの数を示すようにカウンタを変更することと、シェーダプロセッサ入力(SPI)において、カウンタに基づいて、ジオメトリシェーダによって送出されたウェーブを選択的にスロットリングすることと、を含む。更に別の態様では、本方法は、少なくとも1つのフルネスを示すために、プリミティブハブからSPIにフィードバック信号を提供することと、フィードバック信号に基づいてデッドサイクルの第1の数を決定することと、を含む。
一態様では、本方法は、SPIにおいて、インフライトジオメトリシェーダウェーブ及びインフライトピクセルシェーダウェーブへのローカルデータストア(LDS)リソースの第1の相対割り当て、並びに、インフライトジオメトリシェーダウェーブ及びインフライトピクセルシェーダウェーブへのベクトル汎用レジスタ(VGPR)の第2の相対割り当てのうち少なくとも1つを決定することを含む。別の態様では、本方法は、SPIにおいて、第1の相対割り当てを第1の閾値と比較すること、第2の相対割り当てを第2の閾値と比較すること、又は、それらの組み合わせによって、デッドサイクルの第2の数を決定することを含む。更に別の態様では、本方法は、SPIにおいて、ジオメトリシェーダによって送出された少なくとも1つのウェーブの少なくとも1つの寿命を決定することと、SPIにおいて、少なくとも1つの寿命を少なくとも1つの第3の閾値と比較することに基づいて、デッドサイクルの第3の数を決定することと、を含む。
一態様では、本方法は、デッドサイクルの第1の数、第2の数及び第3の数のうち少なくとも1つに基づいてカウンタをインクリメントすることを含み、カウンタは、各クロックサイクルにおいてデクリメントされる。別の態様では、ジオメトリシェーダによって送出されたウェーブを選択的にスロットリングすることは、カウンタが所定の値を有することに応じてジオメトリシェーダからウェーブを送出することを含む。
いくつかの実施形態では、装置は、グラフィックスパイプラインにおいて、ジオメトリシェーダによって生成されたプリミティブを保持し、プリミティブをピクセルシェーダに提供するように構成された少なくとも1つのバッファの少なくとも1つのフルネスを監視するように構成されたプリミティブハブと、少なくとも1つのフルネスを示すプリミティブハブからの信号、グラフィックスパイプラインにおけるジオメトリウェーブ及びピクセルウェーブの相対的なリソース使用量の指標、及び、ジオメトリウェーブの寿命の指標のうち少なくとも1つに基づいて、ジオメトリシェーダによって送出されたウェーブを選択的にスロットリングするように構成されたシェーダプロセッサ入力(SPI)と、を含む。一態様では、プリミティブハブからの信号は、少なくとも1つのフルネスの異なる範囲にマッピングされた値を有する2ビットを含む。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (20)

  1. 装置であって、
    第1のタイプの第1のシェーダ及び第2のタイプの第2のシェーダを実行するように構成されたグラフィックスパイプラインと、
    前記第1のシェーダによって生成されたプリミティブを保持し、前記プリミティブを前記第2のシェーダに提供するように構成された少なくとも1つのバッファと、
    前記少なくとも1つのバッファの少なくとも1つのフルネスを監視するように構成されたプリミティブハブと、を備え、
    前記第1のシェーダからのウェーブの送出は、前記少なくとも1つのフルネスに基づいてスロットリングされる、
    装置。
  2. 前記第1のシェーダはジオメトリシェーダであり、前記第2のシェーダはピクセルシェーダであり、前記少なくとも1つのバッファは先入れ先出し(FIFO)バッファである、
    請求項1の装置。
  3. デッドサイクルの数を示すように構成されたカウンタと、
    前記カウンタに基づいて、前記ジオメトリシェーダによって送出されたウェーブを選択的にスロットリングするように構成されたシェーダプロセッサ入力(SPI)と、を備える、
    請求項2の装置。
  4. 前記プリミティブハブは、前記少なくとも1つのフルネスを示すフィードバック信号を前記SPIに提供するように構成されており、デッドサイクルの第1の数は、前記フィードバック信号に基づいて決定される、
    請求項3の装置。
  5. 前記SPIは、インフライトジオメトリシェーダウェーブ及びインフライトピクセルシェーダウェーブへのローカルデータストア(LDS)リソースの第1の相対割り当てと、前記インフライトジオメトリシェーダウェーブ及び前記インフライトピクセルシェーダウェーブへのベクトル汎用レジスタ(VGPR)の第2の相対割り当てと、のうち少なくとも1つを決定するように構成されている、
    請求項4の装置。
  6. 前記SPIは、前記第1の相対割り当てを第1の閾値と比較すること、前記第2の相対割り当てを第2の閾値と比較すること、又は、これらの組み合わせによって、デッドサイクルの第2の数を決定するように構成されている、
    請求項5の装置。
  7. 前記SPIは、前記ジオメトリシェーダによって送出された少なくとも1つのウェーブの少なくとも1つの寿命を決定し、前記少なくとも1つの寿命を少なくとも1つの第3の閾値と比較することによってデッドサイクルの第3の数を決定するように構成されている、
    請求項6の装置。
  8. 前記カウンタは、デッドサイクルの前記第1の数、前記第2の数及び前記第3の数のうち少なくとも1つに基づいてインクリメントされ、前記カウンタは、各クロックサイクルにおいてデクリメントされる、
    請求項7の装置。
  9. 前記ジオメトリシェーダは、前記カウンタが所定の値を有することに応じてウェーブを送出する、
    請求項8の装置。
  10. 方法であって、
    第1のタイプの第1のシェーダ及び第2のタイプの第2のシェーダをグラフィックスパイプライン上で実行することと、
    前記グラフィックスパイプラインのプリミティブハブにおいて、前記第1のシェーダによって生成されたプリミティブを保持し、前記プリミティブを前記第2のシェーダに提供するように構成された少なくとも1つのバッファの少なくとも1つのフルネスを監視することと、
    前記少なくとも1つのフルネスに基づいて、前記第1のシェーダから送出されたウェーブを選択的にスロットリングすることと、を含む、
    方法。
  11. 前記第1のシェーダはジオメトリシェーダであり、前記第2のシェーダはピクセルシェーダであり、前記少なくとも1つのバッファは先入れ先出し(FIFO)バッファである、
    請求項10の方法。
  12. デッドサイクルの数を示すようにカウンタを変更することと、
    シェーダプロセッサ入力(SPI)において、前記カウンタに基づいて、前記ジオメトリシェーダによって送出された前記ウェーブを選択的にスロットリングすることと、を含む、
    請求項11の方法。
  13. 前記少なくとも1つのフルネスを示すために、前記プリミティブハブから前記SPIにフィードバック信号を提供することと、
    前記フィードバック信号に基づいてデッドサイクルの第1の数を決定することと、を含む、
    請求項12の方法。
  14. 前記SPIにおいて、インフライトジオメトリシェーダウェーブ及びインフライトピクセルシェーダウェーブへのローカルデータストア(LDS)リソースの第1の相対割り当てと、前記インフライトジオメトリシェーダウェーブ及び前記インフライトピクセルシェーダウェーブへのベクトル汎用レジスタ(VGPR)の第2の相対割り当てと、のうち少なくとも1つを決定することを含む、
    請求項13の方法。
  15. 前記SPIにおいて、前記第1の相対割り当てを第1の閾値と比較すること、前記第2の相対割り当てを第2の閾値と比較すること、又は、これらの組み合わせによって、デッドサイクルの第2の数を決定することを含む、
    請求項14の方法。
  16. 前記SPIにおいて、前記ジオメトリシェーダによって送出された少なくとも1つのウェーブの少なくとも1つの寿命を決定することと、
    前記SPIにおいて、前記少なくとも1つの寿命を少なくとも1つの第3の閾値と比較することによってデッドサイクルの第3の数を決定することと、を含む、
    請求項15の方法。
  17. デッドサイクルの前記第1の数、前記第2の数及び前記第3の数のうち少なくとも1つに基づいて前記カウンタをインクリメントすることを含み、
    前記カウンタは、各クロックサイクルにおいてデクリメントされる、
    請求項16の方法。
  18. 前記ジオメトリシェーダによって送出された前記ウェーブを選択的にスロットリングすることは、前記カウンタが所定の値を有することに応じて前記ジオメトリシェーダからウェーブを送出することを含む、
    請求項17の方法。
  19. 装置であって、
    グラフィックスパイプラインにおいて、ジオメトリシェーダによって生成されたプリミティブを保持し、前記プリミティブをピクセルシェーダに提供するように構成された少なくとも1つのバッファの少なくとも1つのフルネスを監視するように構成されたプリミティブハブと、
    前記少なくとも1つのフルネスを示す前記プリミティブハブからの信号と、前記グラフィックスパイプラインにおけるジオメトリウェーブ及びピクセルウェーブの相対的なリソース使用量の指標と、前記ジオメトリウェーブの寿命の指標と、のうち少なくとも1つに基づいて、前記ジオメトリシェーダによって送出されたウェーブを選択的にスロットリングするように構成されたシェーダプロセッサ入力(SPI)と、を備える、
    装置。
  20. 前記プリミティブハブからの信号は、前記少なくとも1つのフルネスの異なる範囲にマッピングされた値を有する2ビットを含む、
    請求項19の装置。
JP2023535353A 2020-12-16 2021-12-14 グラフィックスパイプラインにおけるリソース使用量に基づくシェーダのスロットリング Pending JP2023554314A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/123,978 2020-12-16
US17/123,978 US11776085B2 (en) 2020-12-16 2020-12-16 Throttling shaders based on resource usage in a graphics pipeline
PCT/US2021/063251 WO2022132725A1 (en) 2020-12-16 2021-12-14 Throttling shaders based on resource usage in a graphics pipeline

Publications (1)

Publication Number Publication Date
JP2023554314A true JP2023554314A (ja) 2023-12-27

Family

ID=81941575

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023535353A Pending JP2023554314A (ja) 2020-12-16 2021-12-14 グラフィックスパイプラインにおけるリソース使用量に基づくシェーダのスロットリング

Country Status (6)

Country Link
US (1) US11776085B2 (ja)
EP (1) EP4264558A1 (ja)
JP (1) JP2023554314A (ja)
KR (1) KR20230125232A (ja)
CN (1) CN116710953A (ja)
WO (1) WO2022132725A1 (ja)

Family Cites Families (35)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
US20220188963A1 (en) 2022-06-16
KR20230125232A (ko) 2023-08-29
WO2022132725A1 (en) 2022-06-23
US11776085B2 (en) 2023-10-03
CN116710953A (zh) 2023-09-05
EP4264558A1 (en) 2023-10-25

Similar Documents

Publication Publication Date Title
US9792122B2 (en) Heuristics for improving performance in a tile based architecture
US9286647B2 (en) Pixel shader bypass for low power graphics rendering
US9779533B2 (en) Hierarchical tiled caching
US11948251B2 (en) Throttling hull shaders based on tessellation factors in a graphics pipeline
US11532066B2 (en) Reduced bandwidth tessellation factors
CN111316239B (zh) 利用动态资源分配的波创建控制
CN116745800A (zh) 针对高速缓存行的未命中请求的选择性生成
US9406101B2 (en) Technique for improving the performance of a tessellation pipeline
JP2023554314A (ja) グラフィックスパイプラインにおけるリソース使用量に基づくシェーダのスロットリング
US9111360B2 (en) Technique for improving the performance of a tessellation pipeline
US11562459B2 (en) Selectively writing back dirty cache lines concurrently with processing
CN115088009B (zh) 多租户图形处理单元中的空间分区
US11710207B2 (en) Wave throttling based on a parameter buffer

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230815