JP2022549147A - 描画ディスパッチ識別子をサンプリングするための例外ハンドラ - Google Patents
描画ディスパッチ識別子をサンプリングするための例外ハンドラ Download PDFInfo
- Publication number
- JP2022549147A JP2022549147A JP2022517362A JP2022517362A JP2022549147A JP 2022549147 A JP2022549147 A JP 2022549147A JP 2022517362 A JP2022517362 A JP 2022517362A JP 2022517362 A JP2022517362 A JP 2022517362A JP 2022549147 A JP2022549147 A JP 2022549147A
- Authority
- JP
- Japan
- Prior art keywords
- command
- exception
- draw
- pipeline
- dispatch
- 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
- 238000005070 sampling Methods 0.000 title description 4
- 238000012545 processing Methods 0.000 claims abstract description 75
- 238000000034 method Methods 0.000 claims abstract description 34
- 230000004044 response Effects 0.000 claims abstract description 8
- 239000000872 buffer Substances 0.000 claims description 87
- 230000008569 process Effects 0.000 description 16
- 230000006870 function Effects 0.000 description 12
- 230000008901 benefit Effects 0.000 description 9
- 238000010586 diagram Methods 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
- 239000013598 vector Substances 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 241001417495 Serranidae Species 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/80—Shading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Advance Control (AREA)
Abstract
例外生成に関与する描画パケット又はディスパッチパケットのアドレスは、シェーダ/ウェーブフロントに結び付けられ、シェーダ/ウェーブフロントが由来する描画コマンドまで遡る。様々な実施形態において、グラフィックスパイプライン[206]及び例外処理の動作方法は、グラフィックスパイプラインのシェーダステージ[212B]でのパイプライン例外の発生を示す例外信号[306]を、グラフィックス処理装置(GPU)のコマンドプロセッサ[202]で受信することを含む。シェーダステージは、パイプライン例外に応じて例外信号を生成し、例外信号をコマンドプロセッサに送信する。コマンドプロセッサは、例外信号に基づいて、パイプライン例外の発生に関与するコマンドパケット[224]のアドレス[225]を特定する。【選択図】図2
Description
様々な画像処理アプリケーション又は他の汎用処理アプリケーションを実行するために、グラフィックス処理デバイスが実装され得る。例えば、グラフィックス処理装置(GPUと略され、汎用グラフィックス処理装置と呼ばれることもある)は、高度な並列処理の恩恵を受けるアプリケーションを実行することが多い。一般に、GPUは、GPUに常駐する1つ以上のシェーダプロセッサを使用して、シェーダ命令と呼ばれ得る一連の命令を処理するように設計されている。例示的な画像処理アプリケーションでは、シェーダ命令は、画像を構成するピクセルに対してシェーダプロセッサが実行する1つ以上の数学演算を定義する。ピクセルにシェーダ命令を適用することにより、シェーダ命令が定義する数学演算に従ってピクセル値が変更又は評価される。シェーダ命令は、GPUが実行する関数又はタスクを定義するカーネルと呼ばれるシェーダプログラムコードに編成される。カーネルを実行するために、プログラムコードは、ワークアイテム(例えば、GPUのワークの基本単位)に分割される。
添付図面を参照することにより、本開示をより良く理解することができ、その多数の特徴及び利点が当業者に明らかになる。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
グラフィックス処理を実行するために、システムの中央処理装置(CPU)は、多くの場合、CPUの命令に従ってオブジェクトを描画するようにGPUに命令する一連のコマンドを含む描画呼び出し又はディスパッチ呼び出し等の呼び出しを、GPUに発行する。描画呼び出しがGPUグラフィックスパイプラインを通して処理されると、ハング、クラッシュ及び障害等により、グラフィックスパイプラインで例外が発生することがある。現行の実装では、描画又はディスパッチのソース、例外が発生した対応するパイプラインシェーダ、そのシェーダにおけるウェーブフロントの出所、及び、そのシェーダに描画又はディスパッチを発行したコマンドバッファを識別するメカニズムが欠けている。現行のエラー報告は、単にハングの発生を通知するのみで、ソースコードでハングが発生した場所についての詳細を提供しない(すなわち、診断ではなくイベント報告である)。
より速いデバッグ動作を促進するために、図1~図4は、シェーダ/ウェーブフロントを、それが発生した描画コマンドに結び付けることによって、例外の発生に関与する描画パケット又はディスパッチパケットのアドレスをサンプリングするシステム及び方法を示す。様々な実施形態において、グラフィックスパイプラインを動作させ、例外処理を行う方法は、グラフィックス処理装置(GPU)のコマンドプロセッサにおいて、グラフィックスパイプラインのシェーダステージにおけるパイプライン例外の発生を示す例外信号を受信することを含む。シェーダステージは、パイプライン例外に応じて例外信号を生成し、例外信号をコマンドプロセッサに送信する。コマンドプロセッサは、例外信号に基づいて、パイプライン例外の発生に関与するコマンドパケットのアドレスを決定する。いくつかの実施形態では、例外信号は、コマンドプロセッサの例外ハンドラで受信される。いくつかの実施形態では、コマンドプロセッサは、グラフィックスパイプラインに提供された各描画又はディスパッチに関連するアドレスをリングバッファに格納する。さらに、コマンドプロセッサは、GPUに提供されたコマンドストリーム内のコマンドパケットのヘッダを処理し、各描画又はディスパッチに関連するアドレスを格納する毎に、リングバッファの書き込みポインタを進める。リングバッファの読み出しポインタは、各描画又はディスパッチに関連するウェーブフロントがグラフィックスパイプラインを介して処理を完了した後に進められる。このようにして、コマンドプロセッサは、パケットアドレスの詳細なログ記録(logging)を実行し、例外/ハングが発生した場合に、シェーダが、ユーザがGPUにワークを提供するところまで遡って、何れの描画で障害が発生したかを追跡することを可能にする。
図1は、いくつかの実施形態による、ウェーブフロント例外処理を実施するための処理システム100のブロック図である。コンピューティングシステム100は、中央処理装置(CPU)102と、システムメモリ104と、グラフィックス処理装置(GPU)108を含むグラフィックス処理デバイス106と、システムデータバス112により相互通信可能に接続されたディスプレイデバイス110と、を含む。示すように、システムデータバス112は、CPU102と、システムメモリ104と、グラフィックス処理デバイス106と、を接続する。別の実施形態では、システムメモリ104は、CPU102に直接接続されている。いくつかの実施形態では、CPU102、グラフィックス処理デバイス106の一部、システムデータバス112、又は、これらの任意の組み合わせは、単一の処理装置に統合され得る。さらに、グラフィックス処理デバイス106の機能は、チップセット又は他のタイプの専用処理装置若しくははコプロセッサに含まれ得る。
CPU102は、システムメモリ104に格納されたプログラミング命令を実行し、システムメモリ104に格納されたデータで動作を行い、命令及び/又はデータ(例えば、完了すべきワーク又はタスク)を完了するようにグラフィックス処理装置108に送信し、GPU108がワークを完了するようにグラフィックス処理デバイス106の一部を構成する。いくつかの実施形態では、システムメモリ104は、CPU102及びグラフィックス処理デバイス106によって処理されるプログラミング命令及びデータを格納するためのダイナミックランダムアクセスメモリ(DRAM)を含む。
様々な実施形態では、CPU102は、GPU108で処理予定の命令をコマンドバッファ119に送信する。例示した実施形態では、コマンドバッファ119は、バス112に接続されたシステムメモリ104(例えば、システムメモリ104)に配置されている。別の実施形態では、CPU102は、GPU108用のグラフィックスコマンドを、バス112に通信可能に接続された個別のメモリに送信する。コマンドバッファは、GPU108への入力を含むグラフィックスコマンドのストリームを一時的に格納する。別の実施形態では、コマンドバッファ119は、CPU102によって使用されるグローバルコマンドバッファ(図示省略)とは別に、グラフィックスコマンドを格納する間接バッファ(IB)である。間接バッファの使用により、GPU108は、グラフィックスコマンドを処理して、CPU102が他の動作を実行している間に、他のグラフィックスコマンドのデータを生成及び格納することが可能となる。
グラフィックスコマンドのストリームは、例えば、1つ以上のコマンドパケット及び/又は1つ以上の状態更新パケットを含む。いくつかの実施形態では、コマンドパケットは、ディスプレイに出力するために画像データにプロセスを実行するようにGPU108に命令する描画コマンド(互換的に「描画呼び出し」とも呼ばれる)を含む。例えば、いくつかの状況では、描画コマンドは、メモリに格納された1つ以上の頂点のグループ(例えば頂点バッファで定義される)により定義されたピクセルをレンダリングするように、GPU108に命令する。1つ以上の頂点のグループにより定義されたジオメトリは、いくつかの実施形態では、レンダリングされる複数のプリミティブに対応する。各描画コマンドは、例えば、コマンドバッファ119で描画コマンドが格納された場所、及び、CPU102が実行する一連の命令のプログラムフロー内で描画コマンドが配置された場所を識別するアドレスに関連付けられる。よって、描画コマンドのアドレスは、本明細書でさらに説明するように、デバッグ及び他の動作を行うために、描画コマンドの識別子を提供する。
GPU108は、CPU102から送信されたワークを受信して処理する。例えば、様々な実施形態では、GPU108は、1つ以上のグラフィックスパイプライン114を使用する等して、グラフィックス画像をレンダリングしてディスプレイデバイス110に表示するワークを処理する。グラフィックスパイプライン114は、固定機能ステージと、プログラム可能シェーダステージと、を含む。固定機能ステージは、GPUの固定機能パイプラインに含まれる通常のハードウェアステージを含む。プログラム可能シェーダステージは、ストリーミングマルチプロセッサを含む。ストリーミングマルチプロセッサの各々は、比較的多数のスレッドを同時に実行することができる。さらに、ストリーミングマルチプロセッサの各々は、線形及び非線形データ変換、ビデオ及び/又はオーディオデータのフィルタリング、並びに、モデリング動作(例えばオブジェクトの位置、速度及び他の属性を特定するための物理学の適用)等を含むがこれらに限定されない多種多様なアプリケーションに関連する処理タスクを実行するようにプログラム可能である。別の実施形態では、グラフィックス処理デバイス106は、非グラフィックス処理に使用される。
また、示すように、システムメモリ104は、アプリケーションプログラム116(例えば、オペレーティングシステム又は他のアプリケーション)と、アプリケーションプログラミングインターフェース(API)118と、GPUドライバ120と、を含む。アプリケーションプログラム116は、API118への呼び出しを生成し、所望の結果集合を、通常、連続したグラフィックス画像の形式で生成する。グラフィックス処理デバイス106は、GPU108をGPUローカルメモリ124に通信可能に接続するGPUデータバス122を含む。様々な実施形態では、GPU108は、メモリ動作のために、GPUローカルメモリ124及びシステムメモリ104を任意の組み合わせで使用する。CPU102は、GPU108がワークを実行するために、これらのメモリの部分を割り当てる。例えば、様々な実施形態では、GPU108は、CPU102から命令を受信し、グラフィックスデータ及び画像をレンダリングする命令を処理し、画像をGPUローカルメモリ124に格納する。続いて、GPU108は、GPUローカルメモリ124に格納されたグラフィックス画像をディスプレイデバイス110に表示する。GPUローカルメモリ124は、GPU108により使用されるデータ及びプログラミングを格納する。図1に示すように、GPUローカルメモリ124は、ディスプレイデバイス110を駆動するためのデータを格納するフレームバッファ126を含む。
様々な実施形態では、GPU108は、単一命令多重データ(SIMD)実行モデル等に従って、ウェーブフロントでスレッドの実行を他のスレッドの実行と同時に行う1つ以上の処理ユニット130を含む1つ以上の処理コア128等のように、1つ以上の計算ユニットを含む。処理ユニット130は、互換的にSIMDユニットとも呼ばれる。SIMD実行モデルは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、これにより同じプログラムを実行するが、異なるデータでそのプログラムを実行することができるモデルである。GPU108の処理コア128は、互換的にシェーダコア又はストリーミングマルチプロセッサ(SMX)とも呼ばれる。GPU108に実装される処理コア128の数は、設計に応じて選択することができる。
1つ以上の処理コア128の各々は、特定のワークアイテムの各々のインスタンス化を実行して、着信データを処理し、1つ以上の処理コア128における実行の基本単位は、ワークアイテム(例えば、スレッド)である。各ワークアイテムは、例えば、コマンドによってデバイス上で呼び出されるカーネルの並列実行の集合の単一のインスタンス化を表し、並列に実行される。ワークアイテムは、処理コア128で実行されるワークグループの一部として、1つ以上の処理要素によって実行される。様々な実施形態では、GPU108は、単一の処理ユニット130で「ウェーブフロント」として同時に実行されるスレッドのグループを含むワークアイテムを発行及び実行する。複数のウェーブフロントが「ワークグループ」に含まれ、「ワークグループ」は、同じプログラムを実行するように指定されたワークアイテムの集合を含む。ワークグループを構成するウェーブフロントの各々を実行することにより、ワークグループが実行される。いくつかの実施形態では、ウェーブフロントは、単一の処理ユニット130上で順次実行され、又は、異なるSIMDユニット上で部分的又は完全に並列に実行される。別の実施形態では、1つのワークグループの全てのウェーブフロントは、同じ処理コア128で処理される。ウェーブフロントは、互換的にワープ、ベクトル又はスレッドとも呼ばれる。
いくつかの実施形態では、ウェーブフロントは、シェーダプログラムの並列実行のインスタンスを含み、各ウェーブフロントは、SIMDパラダイム(例えば、同じ命令ストリームを複数のデータで実行する1つの命令制御ユニット)に沿って単一の処理ユニット130で同時に実行される複数のワークアイテムを含む。スケジューラ132は、異なる処理コア128及び処理ユニット130における様々なウェーブフロントのスケジューリングに関連する動作を実行し、及び、グラフィックス処理サブシステム106における様々なタスクの調整に関する他の動作を実行する。いくつかの実施形態では、GPU108は、各ウェーブフロントを他のウェーブフロントと区別するために、各ウェーブフロントに識別子(ID)を割り当てる。
1つ以上の処理コア128によりもたらされる並列性は、ピクセル値計算、頂点変換、テッセレーション、ジオメトリシェーディング動作、及び、他のグラフィックス動作等のグラフィックス関連動作に適している。グラフィックスパイプライン114は、CPU102からグラフィックス処理コマンドを受け付け、計算タスクを並列実行のために1つ以上の処理コア128に提供する。いくつかの実施形態では、CPU102は、コマンドをコマンドパケットの形態で提供し、コマンドパケットが順次提供されることから、コマンドストリームが形成される。各コマンドパケットは、コマンドを識別するヘッダと、コマンドストリーム内のコマンドの位置と、他の制御情報と、を含む。ピクセル処理及び他の並列計算動作等のいくつかのグラフィックスパイプライン動作では、入力データ要素のストリーム又は集合に対して、同じコマンドストリーム又は計算カーネルが実行される必要がある。そのようなデータ要素を並列に処理するために、同じ計算カーネルの各々のインスタンス化は、1つ以上の処理コア128内の複数の処理ユニット130で同時に実行される。本明細書で言及するように、例えば、計算カーネルは、命令を含む関数であり、命令は、プログラムで宣言され、処理コア128で実行される。この関数は、カーネル、シェーダ、シェーダプログラム又はプログラムとも呼ばれる。
動作中、図2に関してより詳細に後述するように、GPU108は、例外ハンドラを含み、例外ハンドラは、グラフィックスパイプライン114から例外信号を受信し、これに応じて、例外信号に基づいて、パイプライン例外の発生に関与するコマンドパケットのアドレスを特定するように構成されている。図2は、いくつかの実施形態による、ウェーブフロント例外処理を実施するGPUを示すブロック図である。図2のGPU108は、単なる例示であって、限定することを意図するものではないので、異なる実施形態で説明する動作及び構造は、任意の適切な装置で使用されることが当業者には認識できるであろう。この実施形態で示すGPU108の場合、GPU108は、コマンドプロセッサ202と、シーケンサ204と、GPUローカルメモリ124と、グラフィックスパイプライン206及び計算パイプライン208等の1つ以上のグラフィックスパイプライン114と、を含む。GPUローカルメモリ124は、GPU108の一部として示されているが、別の実施形態では、GPUローカルメモリ124は、GPU108とは別のメモリユニットであってもよいし、図1のシステムメモリ104に実装されてもよい。
コマンドプロセッサ202は、CPU102から(例えば、コマンドバッファ及びバス112を介して)コマンドストリーム210で実行するコマンドを受信し、GPU108の1つ以上のグラフィックスパイプライン114でのこれらのコマンドの実行を調整する。図1に関して上述したように、CPU102は、GPU108用の命令をコマンドバッファに送信する。様々な実施形態では、コマンドバッファは、例えば、バス112に接続された個別のメモリであるシステムメモリ104に配置されている。コマンドプロセッサ202は、スケジューリングロジックを含むロジックを実施するためのマイクロコードを有する縮小命令セットコンピュータ(RISC)エンジンとして実装される。様々な実施形態では、コマンドプロセッサ202は、ハードウェア、ファームウェア、ソフトウェア、又は、これらの組み合わせで実装される。コマンドストリーム210は、描画呼び出し及び/又はディスパッチコマンドを表す1つ以上のパケット(例えば、パケット224)を含む。各パケットは、対応する描画呼び出し、ディスパッチコマンド又は他の動作を識別するアドレス(例えば、描画コマンドアドレス225)を格納する。
いくつかの実施形態では、コマンドプロセッサ202は、グラフィックスパイプライン206に提供された描画又はディスパッチに関連するアドレスを、GPUローカルメモリ124のリングバッファ(例えば、リングバッファ214,216,218)に格納する。上記のように、各描画又はディスパッチに関連するアドレスは、描画コマンド又はディスパッチコマンドのメモリ位置を示すメモリアドレスであり、他のコマンドに対して、描画コマンド又はディスパッチコマンドの識別子を提供する。リングバッファ214,216,218は、それぞれ書き込みポインタ及び読み出しポインタの2つのポインタを使用してコマンドの格納及び取得を管理するストレージ構造である。すなわち、リングバッファ214,216,218の各々は、自身に対応する書き込みポインタ及び読み出しポインタに関連付けられている。書き込みポインタは、コマンドが格納されるリングバッファの位置のアドレスを格納し(すなわち、指し示し)、読み出しポインタは、コマンドが取得されるリングバッファの位置を指し示す。本明細書でさらに説明するように、コマンドプロセッサ202は、各リングバッファ214,216,218の書き込みポインタ及び読み出しポインタの値を操作して、対応するリングバッファでコマンドの書き込み及び読み出しを行う。
以下にさらに説明するように、コマンドプロセッサ202は、GPU108に提供されたコマンドストリーム210内のコマンドパケットのヘッダを処理して、コマンドパケットにより表される描画コマンド又はディスパッチコマンドに関連するアドレスを識別する。コマンドプロセッサ202は、書き込みポインタが指すリングバッファ214の位置にアドレスを格納し、リングバッファ214の書き込みポインタを進める。いくつかの実施形態では、コマンドプロセッサは、描画コマンドに基づいて生成されたウェーブフロントのウェーブフロント識別子も格納する。コマンドプロセッサ202は、各描画又はディスパッチに関連するウェーブフロントがグラフィックスパイプラインを介して処理を完了した後に、リングバッファ214の読み出しポインタを進める。このようにして、コマンドプロセッサ202は、描画コマンド及びディスパッチコマンドのアドレスの詳細なログ記録を実行し、例外/ハングが発生した場合に、何れの描画コマンドが障害を発生させたかをGPU108が追跡することを可能にする。
様々な実施形態では、コマンドプロセッサ202は、複数のコマンドバッファを管理し、GPUに送信されたコマンド及びワークの追跡を維持し、コマンドストリームがそれらに到達するとフェンスを更新する。また、コマンドプロセッサ202は、様々な専用固定機能ロジック、頂点アセンブラ(VA)、テッセレータ、ジオメトリアセンブラ(GA)、ラスタライザ/補間器、及び、他のシェーダステージ等を管理する。図2では、1つのコマンドプロセッサ202を有することが示されているが、別の実施形態では、GPU108は、ハードウェアキューからパケットを取得及び実行するために任意の数及び種類のコマンドプロセッサを含むことが当業者には認識できるであろう。様々な実施形態では、「パケット」は、単一のコマンドを符号化するメモリバッファを指す。様々な種類のパケットがハードウェアキュー及びメモリバッファ等に格納される。さらに、本明細書で使用される「ブロック」という用語は、ASICに含まれる処理モジュール、CPUの実行パイプライン、及び/又は、GPUのグラフィックスパイプラインを指す。異なる実施形態では、このような処理モジュールは、算術論理演算ユニット、乗算/除算ユニット、浮動小数点ユニット、カラーバッファ、頂点シェーダ、ピクセルシェーダ、クリッピングユニット、又は、当業者に明らかな他の処理モジュールが含まれるが、これらに限定されない。
いくつかの実施形態では、リングバッファ214内の全てのアドレススロットが現在占領されている場合、ストレージが準備できるまで(例えば、パイプの全てのパスが処理を完了した後に、完了カウントが増分され、リングバッファ214におけるアドレスストレージ上のテール読み出しポインタ304が解放され得るまで)、コマンドプロセッサ202の動作がストールされる。アドレスが格納されると、ストリームカウンタ毎にサイドバンド信号が送信される。ウェーブ開始時に、コマンドプロセッサ202は、後の可能性のあるルックアップのために、現在のカウンタからのインデックスを、好適なウェーブバッファ位置に格納する。マルチ描画パケットの場合には、格納されるアドレスは、呼び出しパケットのアドレスである。
図2に示すように、この例では、コマンドプロセッサ202は、様々な処理コア(例えば、図1のプロセッサコア128)でのウェーブフロントのスケジューリング及び実行を管理するように構成されたシーケンサ204(命令スケジューラとも呼ばれる)を含む。例えば、いくつかの実施形態では、シーケンサ204は、頂点グルーパ及びテッセレータ(VGTと略され、説明を容易にするために図示されていない)から頂点ベクトルデータを受信する。シーケンサ204は、頂点ベクトル動作及びピクセルベクトル動作、頂点及びピクセルシェーダ入力データ管理、エクスポートリソースのためのメモリ割り当て、複数のSIMDユニット130及びリソースタイプに対するスレッド調停、処理コアのための制御フロー及びALUの実行、シェーダ及び定数アドレス指定、並びに、他の制御機能を管理する。さらに、シーケンサ204は、シェーダパイプ補間器(SPIと略され、説明を容易にするために図示されていない)及び様々な処理コアの主要コントローラである。ウェーブフロントは、シーケンサ204を介して割り当てられ、シーケンサ204は、ウェーブフロントからスレッドを生成し、これらのスレッドを、各SIMDユニット130で実行するように順番付ける。
グラフィックスパイプライン206及び計算パイプライン208等の1つ以上のグラフィックスパイプライン114は、ステージA 212A、ステージB 212B、…、ステージN 212Nを含む多数のステージ212を含む。様々な実施形態では、様々なステージ212の各々は、様々な態様の描画呼び出し又はディスパッチ呼び出しを実行するグラフィックスパイプライン114のステージを表す。様々な実施形態では、1つ以上のグラフィックスパイプライン114は、様々な固定機能ステージと、プログラム可能シェーダステージと、を含む。固定機能ステージ及びプログラム可能シェーダステージは、1つ以上のグラフィックスパイプライン114に沿って指定された機能を実行するように構成されている。いくつかの実施形態では、固定機能ステージは、ハードウェアに実装され、単一の専用機能を実行するように構成されている。固定機能ステージは、従来の固定機能グラフィックスパイプラインで使用される従来のハードウェア実施ステージである。
いくつかの実施形態では、グラフィックスパイプライン206のプログラム可能シェーダステージは、特定の機能を実行するようにプログラムされたプロセッサモジュールを含む。一実施形態では、グラフィックスパイプライン206は、高度並列コードには好適であるがスカラーコードには適さないシェーダプロセッサと呼ばれる専用プロセッサを含む。プログラム可能シェーダステージは、グラフィックスパイプライン206のシェーダプロセッサで実行される1つ以上のシェーダプログラムとして実装される。いくつかの例では、シェーダプロセッサは、「シェーダユニット」又は「統合シェーダ」と呼ばれ、ジオメトリ、頂点、ピクセル又は他のシェーディング動作を実行して、グラフィックスのレンダリングを行う。
本開示の様々な態様によれば、コマンドプロセッサ202は、コマンドストリーム210からコマンドを受信し、1つ以上のグラフィックスパイプライン114でのコマンドの実行を調整する。コマンドプロセッサ202は、メモリ内の1つ以上のグラフィックスパイプライン114毎に、1つ以上のリングバッファ(この例では、214,216,218として示されている)(又は、他の同様の循環キュー/ファーストインファーストアウトFIFOバッファ)を保持し、各リングバッファは、パイプラインが、ディスパッチ、描画、又は、その両方を処理するかどうかに応じて、コマンドプロセッサ202によって処理されるコマンド及びパケットのアドレスを追跡する。
グラフィックスパイプライン206は、計算(例えば、描画)及びディスパッチ(ゲームパイプとも呼ばれる)の両方を実行することができ、よって、コマンドプロセッサ202は、グラフィックスパイプライン毎に2つの別々のリングバッファを保持する。従って、図2に示すように、コマンドプロセッサ202は、コマンドアドレスを、グラフィックスパイプライン206用の第1のリングバッファ214及び第2のリングバッファ216に格納する。第1のリングバッファ214は、グラフィックスパイプライン206に提供された描画コマンドのアドレスを格納する。第2のリングバッファ216は、グラフィックスパイプライン206に提供されたディスパッチコマンドのアドレスを格納する。リングバッファ218は、計算パイプライン208に提供されたディスパッチコマンドのアドレスを格納する。計算パイプライン208は、描画コマンドを処理しないため、描画を追跡するための対応するリングバッファを有していない。別の実施形態では、GPU108は、描画のみを発行することができるパイプライン(OSパイプとも呼ばれる)を含むため、描画の単一リングバッファにのみ関連付けられている(計算パイプライン208と同様の方法)。
図3に関してより詳細に後述するように、コマンドプロセッサ202は、パイプライン114で処理するためにコマンドプロセッサ202が発行した各コマンド(描画コマンド又はディスパッチ)に関連する仮想アドレスを、対応するリングバッファ214,216に格納する。様々な実施形態では、コマンドプロセッサ202が描画パケット又はディスパッチパケットのヘッダを処理する場合、コマンドプロセッサ202は、描画パケット又はディスパッチパケットが格納されたコマンドバッファ119の位置のアドレス(すなわち、パケットが由来するアドレス)を識別し、識別したアドレスをリングバッファ214,216,218に格納する。このようにして、コマンドプロセッサ202は、処理のためにパイプライン114に提供された全ての描画コマンド(又は、ディスパッチコマンド)及びその関連するウェーブフロント(複数可)の識別子(本明細書では、概して「描画ディスパッチ識別子」と呼ばれる)をログ記録する。
別の実施形態では、描画コマンド又はディスパッチコマンドがプロセッサ100に格納又は識別される方法に依存する。例えば、いくつかの実施形態では、描画コマンド又はディスパッチコマンドは、CPU102によって生成された直接コマンド、GPU108によって生成された間接コマンド、及び、コマンドを実行する回数を識別するための組み込みカウントを有するコマンド等とすることができる。これらの実施形態では、コマンドプロセッサ202は、リングバッファ214,216,218に異なる情報を格納する。例えば、組み込みカウントを含むコマンドの場合、コマンドプロセッサ202は、組み込みカウントに合わせて、リングバッファ214の複数のエントリにコマンドのアドレスを格納する。
従来のGPUは、通常、個々のウェーブフロントのソースを追跡しない。従って、例外(例えば、エラー、クラッシュ、ハング、障害等)に遭遇すると、GPUは、例外の発生を認識するだけで、例外のソースに関する見識を受信することができない。例えば、いくつかのシナリオでは、複数の描画がグラフィックスパイプラインに送信され、これらの描画のうち何れかが例外の原因となる可能性がある。対照的に、GPU108は、例外のソースを、個々のウェーブフロントを生成した個々の描画(又は、ディスパッチ)コマンドまで遡って追跡するように構成されている。
例示するために、図3に関して以下にさらに詳しく説明するように、例外に遭遇すると、グラフィックスパイプライン114は、例外信号をコマンドプロセッサ202の例外ハンドラ220に送信して、例外を発生させたコマンドの描画ディスパッチ識別子を要求する。図2では、例外ハンドラ220が、GPU108のシーケンサ204内に実装されているように示されているが、別の実施形態では、例外ハンドラ220は、本開示の範囲から逸脱することなく、GPU108内の別の場所に実装される。例外ハンドラ220は、例外信号を受信し、例外を発生させた描画コマンド又はディスパッチコマンドの描画ディスパッチ識別子をリングバッファ214,216,218から取得するために必要なロジックを含む。
図3を参照すると、いくつかの実施形態による、描画ディスパッチ識別子の取得による例外処理動作のブロック図が示されている。説明を容易にするために、GPU108の一部のみが図3に示されている。示すように、コマンドプロセッサ202が描画パケット(又は、様々な実施形態ではディスパッチパケット)のヘッダを処理すると、コマンドプロセッサ202は、描画(又は、ディスパッチ)コマンドを格納するコマンドバッファ119の位置のアドレスと、対応するウェーブフロント識別子と、をメモリ124内のリングバッファ214に書き込み、書き込み動作毎に書き込みポインタ302の位置を進める。よって、コマンドプロセッサ202は、描画毎に、描画コマンドの位置及びウェーブフロントIDをメモリ124にログ記録する。
さらに、コマンドプロセッサ202は、リングバッファ214の読み出しポインタ304も保持する。グラフィックスパイプライン206は、グラフィックスの完了イベントを返し(又は、EOP/EOSイベントを計算のために返し)、ウェーブフロント処理が完了すると、読み出しポインタ304を進める。従って、コマンドプロセッサの観点からすると、読み出しポインタ304の位置は、コマンドプロセッサ202が現在応答を待機している描画(又は、ディスパッチ)が何れであるかを示す。グラフィックスパイプライン206が描画(又は、ディスパッチ)のウェーブフロントの実行を完了すると、パイプの底部は、読み出しポインタ304を次のスロットに進め、これにより、前のスロット(完了した描画に関連するスロット)を再利用することが可能になる。
様々な実施形態では、シェーダステージは、グラフィックスパイプラインの実行中にパイプライン例外の発生を特定するように構成されている。示すように、シェーダステージB 212Bは、例えば、ハング又は他のグラフィックスパイプラインエラー等の例外に応じて例外信号306を生成するように構成されている。様々な実施形態では、例外信号306は、シェーダステージ212Bの出力属性である。よって、従来のプログラム可能シェーダステージとは異なり、シェーダステージ212Bは、パイプライン例外が発生したときを認識し、グラフィックスパイプライン206から制御を移し、例外信号306を例外ハンドラ220に送信するように構成されている。様々な実施形態では、シェーダステージ212の何れも、パイプライン例外の発生を特定し、例外信号306を例外ハンドラ220に送信することができる。
例外ハンドラ220が呼び出されると(例えば、例外ハンドラ220で例外信号306が受信されると)、グラフィックスパイプライン206で実行されるウェーブフロントは、読み出しポインタ304が指すリングバッファ214の位置の読み出し動作をコマンドプロセッサ202に発行することにより、リングバッファ214に格納された描画コマンド又はディスパッチコマンドの識別子及びウェーブフロント識別子を取得するように要求する。よって、示した例では、例外ハンドラ220は、障害を発生させたウェーブフロントが、描画コマンド又はディスパッチコマンドABCに由来することを特定する。例外のソースに関する通知を行うために、この識別子が、例えばCPU102(又は、システム100内の他の場所)に報告される。
図4は、いくつかの実施形態による、描画ディスパッチ識別子のサンプリングによるグラフィックスパイプライン及び例外処理の動作方法400のフロー図である。グラフィックスパイプラインは、図1のグラフィックスパイプライン114又は図2のグラフィックスパイプライン206であってよい。
ブロック402にて、コマンドプロセッサは、各パイプラインに提供された各描画又は各ディスパッチのアドレスを格納する。図2~図3を参照すると、コマンドプロセッサ202が描画パケット(又は、様々な実施形態ではディスパッチパケット)のヘッダを処理すると、コマンドプロセッサ202は、描画呼び出し(又は、ディスパッチ)のコマンドバッファアドレスと、関連するウェーブフロント識別子と、をメモリ124内のリングバッファ214に書き込み、動作毎に書き込みポインタ302の位置を進める。よって、コマンドプロセッサ202は、描画毎に、その描画が由来する位置及びIDをメモリ124にログ記録する。
ブロック404にて、グラフィックスパイプラインは、ウェーブフロントの実行中にパイプライン例外の発生を特定する。図3を参照すると、シェーダステージB 212Bは、例えば、ハング又は他のグラフィックスパイプラインエラー等の例外に応じて例外信号306を生成し、例外信号306を例外ハンドラ220に送信するように構成されている。パイプライン例外は、グラフィックスパイプライン206のシェーダステージに指示されたワークの一部の実行に関連する事前に定義された状況である。パイプライン例外は、例えば、リソース欠落、メモリスペースの不足、欠落データ、ゼロ除算エラー、ハング、障害等であり得る。様々な実施形態では、シェーダステージ212の何れも、パイプライン例外の発生を特定し、例外信号306を例外ハンドラ220に送信することができる。
ブロック406にて、グラフィックス処理装置(GPU)のコマンドプロセッサは、パイプライン例外の発生を示す例外信号を受信する。図3を参照すると、例外信号306は、例外ハンドラ220で受信される。例外ハンドラが呼び出されると(例えば、例外ハンドラ220で例外信号306が受信されると)、ブロック408にて、実行中のウェーブフロントは、インデックス/アドレスのルックアップを要求して、例外を発生させた描画コマンド又はディスパッチコマンドの識別子をリングバッファ214,216,218から取得する。いくつかの実施形態では、パイプライン例外のソースを示すために、識別子がCPU102(又は、システム100内の他の場所)に報告される。
このようにして、ウェーブフロントがハングし、GPU108で実行されているアプリケーションがシェーダ例外を発行した場合、ウェーブフロントエラーは、そのソースまで遡って追跡可能である。メモリ内のリングバッファに読み出しポインタを提供することにより、例外ハンドラは、ウェーブフロントエラーを生じた描画又はディスパッチのアドレスを特定することができ、これにより、従来のGPUでは通常得られなかった設計のさらなる可視性及びエラー報告が提供される。
本明細書で説明するように、いくつかの実施形態では、方法は、グラフィックスパイプラインのシェーダステージでのパイプライン例外の発生を示す例外信号を、グラフィックス処理装置(GPU)のコマンドプロセッサで受信することと、例外信号をコマンドプロセッサに送信することと、例外信号に基づいて、パイプライン例外の発生に関与するコマンドパケットのアドレスを特定することと、を含む。一態様では、例外信号を受信することは、コマンドプロセッサの例外ハンドラで例外信号を受信することを含む。別の態様では、方法は、グラフィックスパイプラインに提供された各描画又はディスパッチに関連するアドレスをリングバッファに格納することを含む。
一態様では、方法は、GPUに提供されたコマンドストリーム内のコマンドパケットのヘッダを処理することと、各描画又はディスパッチに関連するアドレスを格納する毎に、リングバッファの書き込みポインタを進めることと、を含む。別の態様では、方法は、各描画又はディスパッチに関連するウェーブフロントがグラフィックスパイプラインを介して処理を完了した後に、リングバッファの読み出しポインタを進めることを含む。さらに別の態様では、コマンドパケットは、描画呼び出しを含む。さらに別の態様では、コマンドパケットは、ディスパッチを含む。
本明細書で説明するように、いくつかの実施形態では、システムは、コマンドプロセッサを含み、コマンドプロセッサは、グラフィックスパイプラインのシェーダステージでのパイプライン例外の発生を示す例外信号を受信することと、例外信号に基づいて、パイプライン例外の発生に関与するコマンドパケットのアドレスを特定することと、を実行するように構成されている。一態様では、システムは、コマンドプロセッサにおいて例外信号を受信するように構成された例外ハンドラを含む。別の態様では、グラフィックスパイプラインのシェーダステージは、パイプライン例外に応じて例外信号を生成するように構成されている。別の態様では、コマンドプロセッサは、グラフィックスパイプラインに提供された各描画又はディスパッチに関連するアドレスをリングバッファに格納するように構成されている。さらに別の態様では、コマンドプロセッサは、コマンドプロセッサで受信されたコマンドストリーム内のコマンドパケットのヘッダを処理することと、各描画又はディスパッチに関連するアドレスを格納した後に、リングバッファの書き込みポインタを進めることと、を実行するように構成されている。
一態様では、コマンドプロセッサは、各描画又はディスパッチに関連するウェーブフロントがグラフィックスパイプラインを介して処理を完了した後に、リングバッファの読み出しポインタを進めるように構成されている。別の態様では、コマンドパケットは、描画呼び出しを含み、コマンドプロセッサは、描画呼び出しに関連するアドレスを、第1のリングバッファに格納する。さらに別の態様では、コマンドストリームは、ディスパッチ呼び出しを含み、コマンドプロセッサは、ディスパッチ呼び出しに関連するアドレスを、第1のリングバッファとは別の第2のリングバッファに格納する。
本明細書で説明するように、いくつかの実施形態では、非一時的なコンピュータ可読記憶媒体は、実行可能命令の集合を具現化し、実行可能命令の集合は、少なくとも1つのプロセッサを操作して、グラフィックスパイプラインのシェーダステージでのパイプライン例外の発生を示す例外信号を受信することと、例外信号に基づいて、パイプライン例外の発生に関与するコマンドパケットのアドレスを特定することと、を実行させる。一態様では、実行可能命令の集合は、さらに少なくとも1つのプロセッサを操作して、グラフィックスパイプラインに提供された各描画又はディスパッチに関連するアドレスをリングバッファに格納させる。別の態様では、実行可能命令の集合は、さらに少なくとも1つのプロセッサを操作して、コマンドプロセッサで受信されたコマンドストリーム内のコマンドパケットのヘッダを処理することと、各描画又はディスパッチに関連するアドレスを格納した後に、リングバッファの書き込みポインタを進めることと、を実行させる。さらに別の態様では、実行可能命令の集合は、さらに少なくとも1つのプロセッサを操作して、各描画又はディスパッチに関連するウェーブフロントがグラフィックスパイプラインを介して処理を完了した後に、リングバッファの読み出しポインタを進めさせる。さらに別の態様では、コマンドパケットは、描画呼び出しを含み、コマンドプロセッサは、描画呼び出しに関連するアドレスを第1のリングバッファに格納する。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
Claims (20)
- グラフィックス処理装置(GPU)[108]のコマンドプロセッサ[202]において、グラフィックスパイプラインのシェーダステージ[212B]におけるパイプライン例外の発生を示す例外信号[306]を受信することと、
前記例外信号を前記コマンドプロセッサに送信することと、
前記例外信号に基づいて、前記パイプライン例外の発生に関与するコマンドパケット[224]のアドレス[225]を特定することと、を含む、
方法。 - 前記例外信号を受信することは、
前記例外信号を前記コマンドプロセッサの例外ハンドラ[220]において受信することを含む、
請求項1の方法。 - 前記グラフィックスパイプラインに提供された各描画又はディスパッチに関連するアドレスをリングバッファ[214]に格納することをさらに含む、
請求項1又は2の方法。 - 前記GPUに提供されたコマンドストリーム内の前記コマンドパケットのヘッダを処理することと、
各描画又はディスパッチに関連する前記アドレスを格納する毎に、前記リングバッファの書き込みポインタ[302]を進めることと、をさらに含む、
請求項3の方法。 - 各描画又はディスパッチに関連するウェーブフロントが前記グラフィックスパイプラインを介して処理を完了した後に、前記リングバッファの読み出しポインタ[304]を進めることをさらに含む、
請求項3又は4の方法。 - 前記コマンドパケットは、描画呼び出しを含む、
請求項1~5の何れかの方法。 - 前記コマンドパケットは、ディスパッチを含む、
請求項1~6の何れかの方法。 - コマンドプロセッサ[202]を備えるシステムであって、
前記コマンドプロセッサは、
グラフィックスパイプライン[114]のシェーダステージ[212B]におけるパイプライン例外の発生を示す例外信号[306]を受信することと、
前記例外信号に基づいて、前記パイプライン例外の発生に関与するコマンドパケット[224]のアドレス[225]を特定することと、
を実行するように構成されている、
システム。 - 前記例外信号を受信するように構成された前記コマンドプロセッサの例外ハンドラ[220]をさらに備える、
請求項8のシステム。 - 前記グラフィックスパイプラインの前記シェーダステージは、前記パイプライン例外に応じて前記例外信号を生成するように構成されている、
請求項8又は9のシステム。 - 前記コマンドプロセッサは、
前記グラフィックスパイプラインに提供された各描画又はディスパッチに関連するアドレスをリングバッファ[214]に格納することを実行するように構成されている、
請求項8~10の何れかのシステム。 - 前記コマンドプロセッサは、
前記コマンドプロセッサで受信したコマンドストリーム内の前記コマンドパケットのヘッダを処理することと、
各描画又はディスパッチに関連する前記アドレスを格納した後に、前記リングバッファの書き込みポインタ[302]を進めることと、
を実行するように構成されている、
請求項11のシステム。 - 前記コマンドプロセッサは、
各描画又はディスパッチに関連するウェーブフロントが前記グラフィックスパイプラインを介して処理を完了した後に、前記リングバッファの読み出しポインタ[304]を進めることを実行するように構成されている、
請求項11又は12のシステム。 - 前記コマンドパケットは、描画呼び出しを含み、前記コマンドプロセッサは、前記描画呼び出しに関連するアドレスを第1のリングバッファに格納する、
請求項11~13の何れかのシステム。 - 前記コマンドストリームは、ディスパッチ呼び出しを含み、前記コマンドプロセッサは、前記ディスパッチ呼び出しに関連するアドレスを、前記第1のリングバッファとは別の第2のリングバッファに格納する、
請求項14のシステム。 - 実行可能命令の集合を具現化するコンピュータ可読記憶媒体であって、
前記実行可能命令の集合は、
グラフィックスパイプライン[206]のシェーダステージ[212B]におけるパイプライン例外の発生を示す例外信号[306]を受信することと、
前記例外信号に基づいて、前記パイプライン例外の発生に関与するコマンドパケット[224]のアドレス[225]を特定することと、
を少なくとも1つのプロセッサに実行させる、
コンピュータ可読記憶媒体。 - 前記実行可能命令の集合は、
前記グラフィックスパイプラインに提供された各描画又はディスパッチに関連するアドレスをリングバッファ[214]に格納することを前記少なくとも1つのプロセッサに実行させる、
請求項16のコンピュータ可読記憶媒体。 - 前記実行可能命令の集合は、
コマンドプロセッサで受信したコマンドストリーム内の前記コマンドパケットのヘッダを処理することと、
各描画又はディスパッチに関連する前記アドレスを格納した後に、前記リングバッファの書き込みポインタ[302]を進めることと、
を前記少なくとも1つのプロセッサに実行させる、
請求項17のコンピュータ可読記憶媒体。 - 前記実行可能命令の集合は、
各描画又はディスパッチに関連するウェーブフロントが前記グラフィックスパイプラインを介して処理を完了した後に、前記リングバッファの読み出しポインタ[304]を進めることを前記少なくとも1つのプロセッサに実行させる、
請求項17又は18のコンピュータ可読記憶媒体。 - 前記コマンドパケットは、描画呼び出しを含み、コマンドプロセッサは、前記描画呼び出しに関連するアドレスを第1のリングバッファに格納する、
請求項16~19の何れかのコンピュータ可読記憶媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/580,654 | 2019-09-24 | ||
US16/580,654 US11386518B2 (en) | 2019-09-24 | 2019-09-24 | Exception handler for sampling draw dispatch identifiers |
PCT/US2020/052224 WO2021061777A1 (en) | 2019-09-24 | 2020-09-23 | Exception handler for sampling draw dispatch identifiers |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022549147A true JP2022549147A (ja) | 2022-11-24 |
Family
ID=74882014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022517362A Pending JP2022549147A (ja) | 2019-09-24 | 2020-09-23 | 描画ディスパッチ識別子をサンプリングするための例外ハンドラ |
Country Status (6)
Country | Link |
---|---|
US (1) | US11386518B2 (ja) |
EP (1) | EP4035118A4 (ja) |
JP (1) | JP2022549147A (ja) |
KR (1) | KR20220070257A (ja) |
CN (1) | CN114424169A (ja) |
WO (1) | WO2021061777A1 (ja) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8149242B2 (en) * | 2006-11-10 | 2012-04-03 | Sony Computer Entertainment Inc. | Graphics processing apparatus, graphics library module and graphics processing method |
US9256465B2 (en) * | 2010-12-13 | 2016-02-09 | Advanced Micro Devices, Inc. | Process device context switching |
US20140176577A1 (en) * | 2012-12-20 | 2014-06-26 | Nvidia Corporation | Method and mechanism for preempting control of a graphics pipeline |
US10134102B2 (en) | 2013-06-10 | 2018-11-20 | Sony Interactive Entertainment Inc. | Graphics processing hardware for using compute shaders as front end for vertex shaders |
GB2524085B (en) | 2014-03-14 | 2021-01-20 | Advanced Risc Mach Ltd | Exception handling in microprocessor systems |
US9740644B2 (en) | 2014-09-26 | 2017-08-22 | Intel Corporation | Avoiding premature enabling of nonmaskable interrupts when returning from exceptions |
WO2016090535A1 (en) * | 2014-12-08 | 2016-06-16 | Intel Corporation | Graphic rendering quality improvements through automated data type precision control |
US10310830B2 (en) * | 2017-06-02 | 2019-06-04 | Apple Inc. | Shader profiler |
US10572404B2 (en) | 2017-06-30 | 2020-02-25 | Intel Corporation | Cyclic buffer pointer fixing |
US10552321B2 (en) * | 2017-08-04 | 2020-02-04 | Microsoft Technology Licensing, Llc | Flexible buffer sizing in graphics processors |
-
2019
- 2019-09-24 US US16/580,654 patent/US11386518B2/en active Active
-
2020
- 2020-09-23 JP JP2022517362A patent/JP2022549147A/ja active Pending
- 2020-09-23 WO PCT/US2020/052224 patent/WO2021061777A1/en unknown
- 2020-09-23 CN CN202080066500.9A patent/CN114424169A/zh active Pending
- 2020-09-23 KR KR1020227013627A patent/KR20220070257A/ko unknown
- 2020-09-23 EP EP20870153.2A patent/EP4035118A4/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US11386518B2 (en) | 2022-07-12 |
WO2021061777A1 (en) | 2021-04-01 |
KR20220070257A (ko) | 2022-05-30 |
US20210090205A1 (en) | 2021-03-25 |
CN114424169A (zh) | 2022-04-29 |
EP4035118A1 (en) | 2022-08-03 |
EP4035118A4 (en) | 2023-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2483772B1 (en) | Trap handler architecture for a parallel processing unit | |
US10877757B2 (en) | Binding constants at runtime for improved resource utilization | |
US9495721B2 (en) | Efficient super-sampling with per-pixel shader threads | |
JP6918919B2 (ja) | 自動的にコンパイルされたコンピュートシェーダを用いるプリミティブカリング | |
TW201426301A (zh) | 局部運用具單一圖形處理單元之系統除錯圖形程式之系統、方法及電腦程式產品 | |
JP7253507B2 (ja) | 仮想化アクセラレーテッド処理デバイスの早期仮想化コンテキストスイッチ | |
US11010862B1 (en) | Reduced bandwidth tessellation factors | |
US10453243B2 (en) | Primitive level preemption using discrete non-real-time and real time pipelines | |
US11663767B2 (en) | Power efficient attribute handling for tessellation and geometry shaders | |
GB2491490A (en) | Emitting coherent output from multiple execution threads using the printf command | |
US9030480B2 (en) | Triggering performance event capture via pipelined state bundles | |
US20140351826A1 (en) | Application programming interface to enable the construction of pipeline parallel programs | |
US9697044B2 (en) | Application programming interface to enable the construction of pipeline parallel programs | |
CN109254826A (zh) | 虚拟化加速处理装置的挂起检测 | |
US9082212B2 (en) | Programmable blending via multiple pixel shader dispatches | |
TW201435576A (zh) | 陷阱處理期間的協作執行緒陣列粒化內文切換 | |
CN108986012B (zh) | 着色器剖析器 | |
US20210192672A1 (en) | Cross gpu scheduling of dependent processes | |
US11210757B2 (en) | GPU packet aggregation system | |
US11386518B2 (en) | Exception handler for sampling draw dispatch identifiers | |
US20220237851A1 (en) | Spatial partitioning in a multi-tenancy graphics processing unit | |
US9406101B2 (en) | Technique for improving the performance of a tessellation pipeline | |
CN112395249A (zh) | 用于多个异步消耗者的方法和装置 | |
US11397578B2 (en) | Selectively dispatching waves based on accumulators holding behavioral characteristics of waves currently executing | |
US9786098B2 (en) | Apparatus for performing tessellation operation and methods utilizing the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220525 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230906 |