IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特表2024-546267グラフィックス処理ユニットトラバーサルエンジン
<>
  • 特表-グラフィックス処理ユニットトラバーサルエンジン 図1
  • 特表-グラフィックス処理ユニットトラバーサルエンジン 図2
  • 特表-グラフィックス処理ユニットトラバーサルエンジン 図3
  • 特表-グラフィックス処理ユニットトラバーサルエンジン 図4
  • 特表-グラフィックス処理ユニットトラバーサルエンジン 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-19
(54)【発明の名称】グラフィックス処理ユニットトラバーサルエンジン
(51)【国際特許分類】
   G06T 15/06 20110101AFI20241212BHJP
【FI】
G06T15/06
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024535711
(86)(22)【出願日】2022-12-20
(85)【翻訳文提出日】2024-07-17
(86)【国際出願番号】 US2022053493
(87)【国際公開番号】W WO2023129423
(87)【国際公開日】2023-07-06
(31)【優先権主張番号】17/564,160
(32)【優先日】2021-12-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】コンスタンチン イゴレヴィッチ シュクルコ
(72)【発明者】
【氏名】マイケル マントル
(57)【要約】
処理ユニットは、レイトレーシング構造等のアクセラレーション構造をトラバースするために、ハードウェアトラバーサルエンジンを使用する。ハードウェアトラバーサルエンジンは、構造トラバーサルに使用される状態情報及び他のデータを記憶するための1つ以上のメモリモジュールと、記憶されたデータに基づいて、及び、トラバーサルプロセスに使用されるべきアクセラレーション構造のソースノードを示す受信された情報に基づいて、トラバーサルプロセスを実行するための制御ロジックと、を含む。ハードウェアトラバーサルエンジンを採用することによって、処理ユニットは、トラバーサルプロセスをより迅速且つ効率的に実行することができ、処理リソースを節約し、全体的な処理効率を改善する。
【選択図】図1
【特許請求の範囲】
【請求項1】
処理ユニットであって、
前記処理ユニットのモジュールにおける実行のためにコマンドをスケジュールするスケジューラと、
前記スケジューラからの第1のコマンドに応じてレイトレーシング構造をトラバースするように構成されたハードウェアトラバーサルエンジンであって、前記ハードウェアトラバーサルエンジンは、前記レイトレーシング構造の第1のノードを識別したことに応じて前記スケジューラをバイパスする、ハードウェアトラバーサルエンジンと、を備える、
処理ユニット。
【請求項2】
シェーディング動作を実行するためのシェーダプロセッサを備え、
前記ハードウェアトラバーサルエンジンは、前記レイトレーシング構造の前記第1のノードを識別したことに応じて、前記シェーダプロセッサをバイパスする、
請求項1の処理ユニット。
【請求項3】
前記第1のコマンドに応じて前記レイトレーシング構造のためのアドレス情報を識別するように構成されたテクスチャアドレス指定モジュールを備える、
請求項1又は2の処理ユニット。
【請求項4】
前記ハードウェアトラバーサルエンジンは、前記第1のノードに関連付けられた情報を前記テクスチャアドレス指定モジュールに提供することによって、前記第1のコマンドに応じて前記スケジューラをバイパスする、
請求項3の処理ユニット。
【請求項5】
前記ハードウェアトラバーサルエンジンは、前記レイトレーシング構造の第2のノードを識別したことに応じて、コマンドを前記スケジューラに返す、
請求項1の処理ユニット。
【請求項6】
前記コマンドは、前記処理ユニットのシェーダプロセッサにおいて指定されたシェーダを実行するためのコマンドを含む、
請求項5の処理ユニット。
【請求項7】
前記指定されたシェーダは、任意のヒットシェーダである、
請求項6の処理ユニット。
【請求項8】
前記レイトレーシング構造は、バウンディングボリューム階層(Bounding Volume Hierarchy、BVH)を含む、
請求項1の処理ユニット。
【請求項9】
システムであって、
レイトレーシングコマンドを提供するスケジューラと、
レイトレーシング構造のレイトレーシングデータを記憶するメモリと、
前記レイトレーシングコマンドに応じて、前記レイトレーシング構造をトラバースするためのハードウェアトラバーサルエンジンであって、前記レイトレーシング構造をトラバースすることは、前記レイトレーシング構造の少なくとも1つのノードについて前記スケジューラをバイパスすることを含む、ハードウェアトラバーサルエンジンと、を備える、
システム。
【請求項10】
前記ハードウェアトラバーサルエンジンは、前記レイトレーシング構造のノードアドレスを記憶するためのトラバーサルスタックメモリを備える、
請求項9のシステム。
【請求項11】
前記ハードウェアトラバーサルエンジンは、前記レイトレーシングコマンドに関連付けられた光線に対して前記レイトレーシング構造の最も近いノードを示す情報を記憶するための最も近いヒットメモリ(closest hit memory)を備える、
請求項9又は10のシステム。
【請求項12】
前記ハードウェアトラバーサルエンジンは、前記レイトレーシングコマンドに関連付けられた光線についての状態情報を記憶するためのトラバーサル状態メモリを備える、
請求項9のシステム。
【請求項13】
シェーダプロセッサを備え、
前記レイトレーシング構造をトラバースすることは、前記レイトレーシング構造の前記少なくとも1つのノードについて前記シェーダプロセッサをバイパスすることを含む、
請求項9のシステム。
【請求項14】
処理ユニットのスケジューラにおいて、前記処理ユニットのモジュールで実行するためのコマンドをスケジュールすることと、
前記処理ユニットのハードウェアトラバーサルエンジンにおいて、前記スケジューラからの第1のコマンドに応じてレイトレーシング構造をトラバースすることと、を含み、
前記ハードウェアトラバーサルエンジンは、前記レイトレーシング構造の第1のノードを識別したことに応じて前記スケジューラをバイパスする、
方法。
【請求項15】
前記ハードウェアトラバーサルエンジンが、前記レイトレーシング構造の前記第1のノードを識別したことに応じて、前記処理ユニットのシェーダプロセッサをバイパスすることを含む、
請求項14の方法。
【請求項16】
前記処理ユニットのテクスチャアドレス指定モジュールにおいて、前記第1のコマンドに応じて前記レイトレーシング構造のためのアドレス情報を識別することを含む、
請求項14又は15の方法。
【請求項17】
前記ハードウェアトラバーサルエンジンは、前記第1のノードに関連付けられた情報を前記テクスチャアドレス指定モジュールに提供することによって、前記第1のコマンドに応じて前記スケジューラをバイパスする、
請求項16の方法。
【請求項18】
前記レイトレーシング構造の第2のノードを識別したことに応じて、前記ハードウェアトラバーサルエンジンから前記スケジューラにコマンドを返すことを含む、
請求項14の方法。
【請求項19】
前記コマンドは、前記処理ユニットのシェーダプロセッサにおいて指定されたシェーダを実行するためのコマンドを含む、
請求項18の方法。
【請求項20】
前記レイトレーシング構造は、バウンディングボリューム階層(Bounding Volume Hierarchy、BVH)を含む、
請求項14の方法。
【発明の詳細な説明】
【背景技術】
【0001】
生成された画像の忠実度及び品質を改善するために、いくつかのソフトウェア及び関連ハードウェアは、レイトレーシング動作を実施し、画像は、各画像に関連付けられた光線の経路を追跡することによって生成される。これらのレイトレーシング動作のいくつかは、レンダリングされるシーン内の幾何学的オブジェクトのセットを表すために、バウンディングボリューム階層(Bounding Volume Hierarchy、BVH)ツリー等のツリー構造を使用する。幾何学的オブジェクト(例えば、三角形又は他のプリミティブ)は、ツリー構造のリーフノードを形成するバウンディングボックス又は他のバウンディングボリュームに囲まれ、次いで、これらのノードは、小さいセットにグループ化され、各セットは、ツリー構造上の親ノードによって表されるそれら自体のバウンディングボリュームに囲まれ、次いで、これらの小さいセットは、ツリー構造上のより高い親ノードを表すそれら自体のバウンディングボリュームに同様に囲まれるより大きいセットに結合され、以下同様に、ツリー構造のトップノードを表し、全てのより低いレベルのバウンディングボリュームを包含する単一のバウンディングボリュームとなるまで結合される。
【0002】
いくつかのレイトレーシング動作を実行するために、ツリー構造は、ツリーのノードをトラバース(traversing)することによって、生成された光線とシーン内の幾何学的オブジェクトとの間の潜在的な交差を識別するために使用され、トラバースされる各ノードにおいて、対象の光線は、交差があるかどうかを決定するためにそのノードのバウンディングボリュームと比較され、交差がある場合、ツリー内の次のノードに進み、次のノードは、トラバーサルアルゴリズムに基づいて識別され、以下同様である。しかしながら、ツリー構造をトラバースする従来の手法は、比較的大量のシステムリソースを消費するか又は比較的大量の時間を必要とし、したがって、結果として得られる画像の全体的な品質を制限することがある。
【0003】
本開示は、添付の図面を参照することによってより良好に理解され、その数々の特徴及び利点が当業者に明らかになり得る。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0004】
図1】いくつかの実施形態による、ハードウェアトラバーサルエンジンを使用してレイトレーシング構造をトラバースするグラフィックス処理ユニット(Graphics Processing Unit、GPU)のブロック図である。
図2】いくつかの実施形態による、レイトレーシング構造の識別されたノードをGPUのテクスチャハードウェアにループする図1のトラバーサルエンジンのブロック図である。
図3】いくつかの実施形態による、シェーダコマンドをGPUのスケジューラに提供する図1のトラバーサルエンジンのブロック図である。
図4】いくつかの実施形態による、図1のトラバーサルエンジンのブロック図である。
図5】いくつかの実施形態による、ハードウェアトラバーサルエンジンを用いてレイトレーシング構造をトラバースする方法のフロー図である。
【発明を実施するための形態】
【0005】
図1図5は、レイトレーシング構造等のアクセラレーション構造をトラバースするために処理ユニットにおいてハードウェアトラバーサルエンジンを採用するための技術を示す。ハードウェアトラバーサルエンジンは、構造トラバーサルに使用される状態情報及び他のデータを記憶するための1つ以上のメモリモジュールと、記憶されたデータに基づいて、及び、トラバーサルプロセスに使用されるべきアクセラレーション構造のソースノードを示す受信された情報に基づいて、トラバーサルプロセスを実行するための制御ロジックと、を含む。ハードウェアトラバーサルエンジンを採用することによって、処理ユニットは、トラバーサルプロセスをより迅速且つ効率的に実行することができ、処理リソースを節約し、全体的な処理効率を改善する。
【0006】
例示のために、従来のGPUは、レイトレーシング動作を制御するためにシェーダプロセッサにおいて実行するソフトウェアシェーダを採用する。レイトレーシングのためのBVHトラバーサル(すなわち、BVHツリーのトラバーサル)を実施するために、GPUは、シェーダが光線アドレス及びBVHノードアドレスをGPUのテクスチャアドレス指定ハードウェアに提供し、テクスチャアドレスハードウェアが、対応する光線及びBVHノードを交差エンジンに提供して光線とBVHノードとの間の任意の交差を識別し、交差結果がシェーダに返されて、処理されるBVHツリーの次のノードを決定するループを採用する。したがって、シェーダは、ツリートラバーサルプロセスの各反復を開始し、それによって、各反復についてオーバーヘッドを追加する。
【0007】
従来の手法とは対照的に、本明細書で説明する技術を使用して、GPUは、ツリートラバーサルプロセスの反復のうち少なくともいくつかを開始するハードウェアトラバーサルエンジンを採用することができ、それによって、ツリートラバーサルに関連する全体的なオーバーヘッドを低減する。例えば、いくつかの実施形態では、トラバーサルエンジンは、交差エンジンから交差情報を受信し、交差情報に基づいて、場合によっては、次の光線/ノード交差をテクスチャアドレス指定ハードウェアに送信することによってツリートラバーサルを継続することを含む、トラバーサルプロセスにおける次のステップを識別するように構成される。したがって、ツリートラバーサルのこれらの反復に対して、シェーダはトラバーサルプロセスから除去され、トラバーサルプロセスに関連するオーバーヘッドを低減する。他の場合には、トラバーサルエンジンは、光線/ノード交差情報をシェーダに返して、指定された動作(例えば、任意のヒットシェーダ)を実行する。動作が完了すると、シェーダは、トラバーサルエンジン自体に記憶されたトラバーサル状態情報を使用して、ツリートラバーサルプロセスを再開するようにトラバーサルエンジンに命令する。したがって、本明細書で説明される技術を使用して、ツリートラバーサルプロセスの制御フローは、シェーダからトラバーサルエンジンハードウェアにオフロードされ、全体的な処理効率を改善する。
【0008】
いくつかの実施形態では、トラバーサルエンジンは、トラバーサルプロセスに使用されるデータを記憶するための複数のメモリモジュールを含む。したがって、トラバーサルエンジンは、動作を迅速に実行することができ、処理ユニットのキャッシュ又はローカルデータストアへのアクセス数を低減すること等によって、処理ユニットにおけるメモリアクセストラフィックに対するトラバーサルプロセスの影響を更に低減する。いくつかの実施形態では、これらのメモリモジュールの例は、初期レイトレーシングコールから抽出されたデータを記憶するように構成された初期データストア、トップレベルアクセラレーション構造(Top Level Acceleration Structure、TLAS)座標空間における光線のデータを記憶するように構成されたTLASデータストア、ボトムレベルアクセラレーション構造(Bottom Level Acceleration Structure、BLAS)座標空間における光線のデータを記憶するように構成されたBLASデータストア、トラバーサルプロセスの現在の反復に関連付けられた一時データを記憶するように構成されたトラバーサル状態メモリ、ツリー構造における光線の最も近いヒット値を記憶するように構成された最も近いヒットメモリ、及び、光線が次に交差する現在の光線に対するノードアドレスのスタックを記憶するように構成されたトラバーサルスタックを含む。
【0009】
説明のために、図1図5は、トラバーサルエンジンがGPUにおいて実装され、BVHツリーをトラバースするためにトラバーサルプロセスを実行する例に関して説明される。しかしながら、他の実施形態では、本明細書で説明される技術は、異なるタイプの処理ユニットにおいて実装されるか、異なるタイプのアクセラレーション構造をトラバースするように実装されるか、又は、それらの任意の組合せであることが理解されよう。
【0010】
図1は、いくつかの実施形態による、処理システムの代わりにレイトレーシング及び他のグラフィカル動作を実行するように概して構成されたGPU100のブロック図を示す。処理システムは、概して、指定されたタスクを電子デバイスの代わりに実行するための命令セット(例えば、コンピュータプログラム)を実行するように構成される。したがって、異なる実施形態では、GPU100は、例えばデスクトップコンピュータ、ラップトップコンピュータ、サーバ、スマートフォン、タブレット、ゲーム機等の多くの電子デバイスの任意の何れかに組み込まれる。
【0011】
GPU100は、処理システムの別の処理ユニット(図示せず)からコマンド(例えば、描画コマンド)を受信し、受信されたコマンドに基づいて1つ以上のコマンドを生成し、1つ以上のグラフィカル動作を実行することによって生成されたコマンドを実行するように構成される。これらの生成されたコマンドの少なくともいくつかは、レイトレーシング動作を含むテクスチャ動作を必要とする。テクスチャ動作の実行を容易にするために、GPU100は、スケジューラ102、シェーダプロセッサ104、ローカルデータストア106、テクスチャアドレス指定(Texture Addressing、TA)モジュール108、テクスチャデータ(Texture Data、TD)モジュール110、及び、キャッシュ112を含む。
【0012】
スケジューラ102は、概して、TAモジュール108、シェーダプロセッサ104、及び、LDS106を含む、GPU100の様々なモジュールにおいて実行するためのコマンド(例えば、コマンド103)をスケジュール又は順序付けるように構成される。少なくともいくつかの実施形態では、スケジューラ102は、これらの同じモジュールのうちの1つ以上から、又は、コマンドプロセッサ(図示せず)等のGPU100の別のモジュールから、スケジュールするためにコマンドを受信するように構成される。
【0013】
シェーダプロセッサ104は、スケジューラ102から受信されたコマンドに基づいてシェーディング動作を実行するように集合的に構成された1つ以上の処理要素を含む。これらのシェーディング動作の例は、マテリアルシェーダ、テッセレーションシェーダ、ハルシェーダ、頂点シェーダ、レイトレーシングシェーダ等の実行を含む。これらのシェーディング動作を実行する過程で、少なくともいくつかの場合には、シェーダプロセッサは、GPU100の他のモジュールに提供するためのデータと、スケジューラ102に提供するためのコマンドと、を生成する。
【0014】
LDS106は、概して、GPU100において実行する動作間で共有されるデータを記憶するように構成されたメモリである。例えば、いくつかの実施形態において、LDS106は、GPU100において実行するスレッドグループ間で共有されるデータを記憶する。
【0015】
キャッシュ112は、レイトレーシング及び他のテクスチャ動作を含む、GPU100における動作のために使用されるキャッシュデータを記憶するように構成されたメモリである。図示した実施形態では、キャッシュ112は、レイトレーシング動作を実施するためにGPU100によって使用されるBVHツリー107(以下、BVH107と呼ぶ)を記憶する。BVH107は、ツリー構造のリーフノードを形成するバウンディングボックス又は他のバウンディングボリュームを有する、ツリーとして編成された複数のノードを含み、次いで、これらのノードは、小さいセットにグループ化され、各セットは、ツリー構造上の親ノードを表すそれら自体のバウンディングボリューム内に囲まれ、次いで、これらの小さいセットは、ツリー構造上のより高い親ノードを表すそれら自体のバウンディングボリューム内に同様に囲まれるより大きいセットに結合され、以下同様に、BVH107のトップノードを表し、全てのより低いレベルのバウンディングボリュームを包含する単一のバウンディングボリュームとなるまで結合される。
【0016】
TAモジュール108は、概して、スケジューラ102から受信されたコマンドに基づいて、レイトレーシング動作を含むテクスチャ動作に関連付けられたアドレス指定タスクを実行するように構成される。例えば、いくつかの実施形態では、TAモジュール108は、光線データ及びBVHノードデータ等のレイトレーシングに使用される特定のデータを示すレイトレーシングコマンドを受信する。TAモジュール108は、データに関連付けられたメモリアドレスを識別し、レイトレーシングデータの検索のためにメモリアドレスをキャッシュ112に提供する。次いで、TAモジュール108は、レイトレーシングデータをTDモジュール110に提供する。
【0017】
TDモジュール110は、TAモジュール108から受信されたデータに基づいてレイトレーシング及び他のテクスチャ動作を実行するように集合的に構成された1つ以上の回路を含む。特に、TDモジュール110は、所定の光線が所定のBVHノードと交差するかどうかを識別するための交差動作と、交差動作に基づいてBVH107をトラバースするためのトラバーサル動作と、を実行するように構成される。これらの動作を容易にするために、TD110は、交差エンジン114及びトラバーサルエンジン(Traversal Engine、TE)115を含む。
【0018】
交差エンジン114は、レイトレーシングに使用される特定の光線を識別する光線データと、BVHツリー107のノードを示すノードデータと、を受信するように構成される。交差エンジン114は、ノード交差プロセスを実行して、光線がノードと交差する(交差ヒットと呼ばれる)か、又は、ノードと交差しない(交差ミスと呼ばれる)かを識別する。交差エンジン114は、交差ミスデータ及び交差ヒットデータを、光線データ及びBVHノードデータとともにTE115に提供する。
【0019】
TE115は、ツリートラバーサル動作を実行するように集合的に構成された1つ以上の回路を含むハードウェアエンジンである。特に、TE115は、交差エンジン114から交差情報(ヒットデータ、ミスデータ、光線データ及びBVHノードデータ)を受信するように構成される。TE115は、交差情報に基づいて、トラバーサルプロセスを実行する。例えば、いくつかの実施形態では、TEは、スタックベースの深さ優先BVHトラバーサルプロセスを実施し、トラバーサルスタックは、光線が交差する次のノードのアドレスを記憶するために使用される。ツリーノードは、深さ優先順序で訪問され、交差した内部ノードごとに、交差した子ノードが光線起点までの距離に基づいてソートされる。最も遠いノードはスタックにプッシュされ、最も近いノードは、トラバーサルループの次の反復に対する次の交差として使用される。いくつかの実施形態では、トラバーサルループは、TE115が順次クロックサイクルごとに異なる光線を処理することができるように、状態機械を使用して実施される。他の実施形態では、TEは、スタックレストラバーサルプロセス、while-whileトラバーサルプロセス等を実施する。いくつかの実施形態では、トラバーサルプロセスに従って、TE115は、以下の3つの可能な結果のうち何れかを識別する。1)光線との交差についてテストされるBVH107の次のノード、2)実行されるシェーダ(例えば、任意ヒットシェーダ)、又は、3)現在の光線に対するツリートラバーサルプロセスの終了。
【0020】
テストされるBVH107の次のノードを識別したことに応じて、TE115は、次のノードについてのアドレス情報をTA108に提供する。いくつかの実施形態による例が図2に示されている。図示した例では、TAは、BVH107のトラバーサルを開始するためのコマンド103を受信する。これに応じて、TA108は、光線及びノードアドレス情報を交差エンジン114に提供し、交差エンジン114は、対応する光線及びノードデータをキャッシュ112から取り出す。光線及びノードデータを使用して、交差エンジン114は、光線及びノードについての交差情報を決定し、交差情報をTE115に提供する。交差情報に基づいて、及び、ツリートラバーサルプロセスに従って、TE115は、光線との交差についてテストされるBVH107の次のノードを表す次のノード220を決定する。
【0021】
TE115は、次のノード220のためのアドレス情報をTAブロック108に直接提供し、また、光線識別子等のトラバーサルに必要な任意のメタデータを提供する。それに応じて、TA108は、次のノード220に対するノードデータの要求をキャッシュ112に送信し、次のノードアドレス及び他のパラメータを交差エンジン114に送信し、交差エンジンは、次のノード220及びキャッシュ112によって提供された光線データに基づいて交差情報を決定する。したがって、図2の例では、TEは、次のノード220をTA108に直接ループし、トラバーサルプロセスの次の反復をトリガし、スケジューラ102とシェーダプロセッサ104の両方をバイパスする。それによって、トラバーサルプロセスの次の反復に関連するオーバーヘッドが低減され、トラバーサルプロセスの全体的な効率が改善される。
【0022】
図1に戻ると、場合によっては、トラバーサルプロセスのいくつかの反復について、TE115は、シェーダがBVH107の現在のノード及び現在の光線について実行されるであることを識別する。実行されるシェーダの例は、任意のヒットシェーダ、手続き型シェーダ等を含む。それに応じて、TE115は、識別されたシェーダの実行をトリガするコマンドをスケジューラ102に提供する。いくつかの実施形態では、TE115は、シェーダタイプをシェーダプロセッサ104に提供し、シェーダプロセッサ104は、呼び出すシェーダ関数のアドレスを決定する。いくつかの実施形態による例が図3に示されている。
【0023】
図3の例では、TAは、BVH107のトラバーサルを開始するためのコマンド103を受信する。図2の例と同様に、コマンド103に応じて、TA108は、光線及びノードアドレス情報を交差エンジン114に提供し、交差エンジン114は、対応する光線及びノードデータをキャッシュ112から取り出す。光線及びノードデータを使用して、交差エンジン114は、光線及びノードについての交差情報を決定し、交差情報をTE115に提供する。交差情報に基づいて、及び、ツリートラバーサルプロセスに従って、TE115は、特定のシェーダを実行するためのコマンドを表すリターンコマンド322を決定する。TE115は、リターンコマンド322をスケジューラ102に提供し、スケジューラ102は、シェーダプロセッサ104においてコマンドを実行のためにスケジュールする。
【0024】
いくつかの実施形態では、リターンコマンド322を発行することと併せて、TE115は、ローカルデータストアにおいて、トラバーサルプロセスの現在の状態を示す状態情報を保存する。リターンコマンド322によって示されるシェーダが完了すると、シェーダプロセッサ104は、スケジューラ102を介して、トラバーサルプロセスを再開するためのコマンドをTE115に発行する。再開コマンドに応じて、TE115は、記憶された状態データをロードし、BVH107のトラバーサルを再開する。
【0025】
図1に戻ると、トラバーサルプロセスの所定の時点で、TE115は、BVH107のトラバーサルが完了したと決定する。それに応じて、TE115は、ヒットデータ(何れのノードがヒットされたか(もしあれば))、光線起点からの距離、BVHノードアドレス、データフラグ、ブックキーピングデータ(例えば、メモリデータ)、及び、LDS106にBVH情報を記憶すること等によってシェーダプロセッサ104によって必要とされる任意のBVH情報等のデータを返す。シェーダプロセッサ104は、この情報を使用して、例えば、別の光線に基づいてBVH107のトラバーサルを開始する等の更なるレイトレーシング動作を開始する。
【0026】
図4は、いくつかの実施形態による、TE115のブロック図である。図示された例では、TE115は、トラバーサル復号モジュール430と、トラバーサルスタック434、最も近いヒットメモリ(closest hit memory)436、トラバーサル状態メモリ438及び光線ごとのストレージメモリ(per ray storage memory)440を含む複数のメモリ構造と、を含む。TE115は、次ノードマッチングモジュール(next node matching module)432も含む。
【0027】
トラバーサル復号モジュール430は、BVH(例えば、BVH107)のためのトラバーサルプロセスをハードウェアで実施するように集合的に構成された回路のセットである。いくつかの実施形態では、トラバーサル復号モジュール430は、初期状態及び1つ以上の結果状態(トラバーサル復号モジュール430に、TAモジュール108、スケジューラ102、又は、他のモジュールに提供される結果を生成させる状態)を含む、トラバーサルプロセスを実施する状態機械として構成される。交差エンジン114は、交差結果をトラバーサル復号モジュール430に提供し、各交差結果は、特定の光線及び特定のBVHノードについての交差データを含む。交差データの受信に応じて、トラバーサルエンジン115は、対応する交差結果のトラバーサル状態を初期状態にする。交差データ及びBVHツリー107のノードに基づいて、トラバーサル復号エンジン430は、結果が結果状態等の1つ以上の指定された最終状態に到達するまで、交差結果の状態を変更する。交差結果が状態機械の異なる状態を通って進むにつれて、トラバーサル復号エンジン430は、次のノード220、リターンコマンド322等を生成することを含めて、交差結果の状態によって示される任意の出力情報を生成し、提供する。いくつかの実施形態では、トラバーサル復号モジュール430は、指定されたクロック信号によってクロックされ、交差結果の状態は、クロック信号のサイクルごとにトラバーサル復号モジュール430によって設定される。更に、いくつかの実施形態では、トラバーサル復号モジュール430はパイプラインとして構成され、トラバーサル復号モジュール430は、異なる光線、異なるBVHノード又はその両方について、複数の交差結果を同時に処理する。
【0028】
次ノードマッチングモジュール432は、トラバーサル復号モジュール430からBVHノード情報を受信するように構成される。受信されたBVHノード情報に基づいて、次ノードマッチングモジュール432は、後続の光線が同じBVHノードに対して交差することを目的とする、BVHノードデータをフェッチする場合のキャッシュ利用率を改善する。いくつかの実施形態では、次ノードマッチングモジュール432は、トラバーサル復号モジュール430によって提供された光線を、それらの次ノードアドレスに基づいてグループ化する。次ノードマッチングモジュール432は、次のノード要求に基づいて次のトラバーサル反復(交差)のために送信された光線を並べ替える。例えば、トラバーサル復号ブロックの終わりにおける光線の場合、光線が、TE115がTA108に送信したばかりのノードアドレスを必要とする場合、TE115は、キャッシュ112のためのメモリフェッチをエンキューすることなく、ループに光線idを送信する。これは、キャッシュ112が、このサイクルの間、非トラバーサルによって使用されることを可能にする。光線が異なるノードアドレスを必要とする場合、TE115は、そのノードアドレスに対応するキュー(図示せず)にそれを追加し、前のサイクルで要求されたノードアドレスに一致する交差のための異なる光線を送信する。そのキューが空である場合、TEは、交差を要求するために別のキューを選択する。
【0029】
トラバーサルスタック434は、トラバーサル復号モジュール430によって処理されている各光線についてのトラバーサルスタックを含む。少なくともいくつかの実施形態において、トラバーサルスタック434において所定の光線に割り当てられるエントリの数は、プログラム可能な値である。トラバーサル復号モジュール430における光線交差データの状態に応じて、トラバーサル復号モジュールは、光線のスタックに要素を書き込むか又は光線のスタックから要素を読み出す。したがって、トラバーサルスタック434は、トラバーサル復号モジュール430が、反復プロセスを使用して再帰的トラバーサルプロセスを実施することを可能にする。
【0030】
最も近いヒットメモリ436は、トラバーサル復号モジュール430で処理されている各光線の最も近いヒット値を記憶する。最も近いヒットメモリ436は、指定された最大距離値に初期化され、トラバーサル復号モジュール430が所定の光線の交差データを処理し、BVHツリー107のノードとの新しい交差又はヒットを見つけると、トラバーサル復号モジュール430は、BVH107のノードに対する光線の最小光線ヒット距離を反映するように最も近いヒットメモリ436を更新する。いくつかの実施形態では、光線の最小光線ヒット距離は、光線がBVH107のトラバーサルを完了したことに応じてシェーダプロセッサ108に返される。
【0031】
トラバーサル状態メモリ438は、トラバーサルプロセスに関連付けられた一時データを記憶するように構成される。一時データは、トラバーサル復号モジュール430によって、個々の光線に対する現在のトラバース状態を決定し、したがって、交差エンジン114によって提供される交差情報に基づいて光線の次の状態を決定するために使用される。一時情報の例には、光線に関連付けられたBVHツリー107の現在のノード、光線に関連付けられたBVHツリー107の前のノード、トラバーサルスタック434のポインタ情報、トラバーサルに使用されているBVHツリー107のレベルを示すTLAS及びBLAS情報等が含まれる。
【0032】
光線ごとのストレージ440は、トラバーサル復号エンジン430で処理されている光線の光線定義データを記憶する。いくつかの実施形態において、光線ごとのストレージ440は、光線についてのBLAS定義を記憶し、TDモジュール110における個別のデータストア(図示せず)は、交差エンジン114による使用のためのTLAS定義データを記憶する。
【0033】
図5は、いくつかの実施形態による、アクセラレーション構造をトラバースするためにハードウェアトラバーサルエンジンを使用する方法500を示す。方法500は、図1のGPU100における例示的な実施形態に関して説明されるが、他の実施形態では、方法500によって反映される技術は、他のタイプの処理ユニットにおいて、又は、異なる構成を有する処理ユニットにおいて実施されることが理解されよう。
【0034】
ブロック502において、TA108は、BVH107をトラバースすべき光線を示すトレース光線コマンドをスケジューラ102から受信する。これに応じて、TA108は、光線及びBVH107の初期ノードのアドレス情報を生成する。このアドレス情報に基づいて、キャッシュ112は、光線データ及びBVHノードデータを交差エンジン114に提供する。これに応じて、交差エンジン114は、光線データ及びノードデータに基づいて交差データを生成する。交差データに基づいて、TE115は、BVH107の次のノード220を識別する。ブロック503において、TE115は、次のノード220をTAモジュール108に提供し、TAモジュール108は、次のノードのためのアドレス情報を生成する。アドレス情報に基づいて、キャッシュ112は、次のノード220のためのデータを交差エンジン114に提供し、次のノード及び現在の光線のための交差データを生成する。したがって、トラバーサルエンジン115は、スケジューラ102及びシェーダプロセッサ104をバイパスして、次のノード220をTAモジュール108に直接ループさせ、それによって、BVHトラバーサルプロセスの速度及び効率を改善する。
【0035】
TE115がBVH107をトラバースすると、ブロック504で、TE115はコマンドをスケジューラ102に返す。それに応じて、スケジューラ102は、シェーダプロセッサ104における実行のためにコマンドをスケジュールする。TE115によって返される特定のコマンドは、処理されているBVH107の現在のノードに依存し、異なる場合には、任意ヒットシェーダ(Any Hit Shader、AHS)コマンド(ブロック506)、手続き型シェーダ(Procedural Shader、PS)コマンド(ブロック512)、トラバーサル中断コマンド(ブロック516)、及び、トラバーサル完了コマンド(ブロック518)である。これらのコマンドの各々について以下に説明する。
【0036】
ブロック506において、TE115はAHSコマンドを返す。それに応じて、ブロック508において、シェーダプロセッサ104は、AHSコマンドによって示されるAHSを実行する。ブロック510において、シェーダプロセッサ104は、TE115によって生成されたBVHヒットデータを後処理する。シェーダプロセッサ104は、次いで、BVHトラバーサル継続コマンドを生成し、それに応じて、方法フローはブロック503に戻り、TE115は、BVH107をトラバースし続ける。いくつかの実施形態では、継続コマンドは、AHSがヒットを受け入れ、トラバーサルを停止すべきであると判定した場合等にトラバーサルを終了させる。
【0037】
ブロック512において、TE115はPSコマンドを返す。それに応じて、ブロック514において、シェーダプロセッサ104は、PSコマンドによって示されるPSを実行する。ブロック510において、シェーダプロセッサ104は、TE115によって生成されたBVHヒットデータを後処理する。シェーダプロセッサ104は、次いで、BVHトラバーサル継続コマンドを生成し、それに応じて、方法フローはブロック503に戻り、TE115は、BVH107をトラバースし続ける。いくつかの実施形態では、継続コマンドは、トラバーサルを終了させる。
【0038】
ブロック516において、TE115は、BVH107のトラバーサルが中断されたことを示すためにトラバーサル中断コマンドを返す。それに応じて、シェーダプロセッサ104は、BVHトラバーサル継続コマンドを生成し、それに応じて、方法フローはブロック503に戻り、TE115は、BVH107をトラバースし続ける。
【0039】
ブロック518において、TE115は、所定のレイに対するBVH107のトラバーサルが完了したことを示すトラバーサル完了コマンドを返す。TE115は、トラバーサル完了コマンドを介して、BVH107の最も近いヒットノード(最も近いヒットメモリ436に記憶されている)、又は、光線がBVH107のノードをミスしたという指標の何れかを示す。それに応じて、シェーダプロセッサ104は、別の光線がトレースされるべきかどうかを決定し、そうである場合、方法フローはブロック502に戻り、シェーダプロセッサ104は、新しい光線のための新しいレイトレースコマンドを発行する。そうでない場合、方法フローはブロック522に移動し、シェーダプロセッサ104は、ヒットデータ(すなわち、光線が交差したBVH107のノードを示すデータ)、及び、光線起点からのヒット距離、重心情報等の他のデータを、レイトレーシングを要求したスレッド又はプロセスに返す。
【0040】
方法500は、レイトレーシングを支援するためにTE115を使用する一例にすぎず、他の実施形態では、TE115は他の方法で使用されることが理解されよう。例えば、いくつかの実施形態では、BVH107におけるヒットは、ヒットデータを被呼び出し側に返すことなく、シェーダ自体の中で処理される(すなわち、シェーダプロセッサ104において処理される)。これらの実施形態では、TEは、トラバーサル中断コマンドを返さないが、代わりに、BVHヒットが見つかるか又はBVH107のトラバーサルが完了するまで、所定のウェーブフロント(wavefront)に関連付けられた全ての光線をトラバースする。
【0041】
本明細書に開示されるように、いくつかの実施形態では、処理ユニットは、処理ユニットのモジュールにおける実行のためにコマンドをスケジュールするスケジューラと、スケジューラからの第1のコマンドに応じてレイトレーシング構造をトラバースするように構成されたハードウェアトラバーサルエンジンであって、ハードウェアトラバーサルエンジンは、レイトレーシング構造の第1のノードを識別したことに応じてスケジューラをバイパスする、ハードウェアトラバーサルエンジンと、を備える。一態様では、処理ユニットは、シェーディング動作を実行するためのシェーダプロセッサを含み、ハードウェアトラバーサルエンジンは、レイトレーシング構造の第1のノードを識別したことに応じて、シェーダプロセッサをバイパスする。別の態様では、処理ユニットは、第1のコマンドに応じてレイトレーシング構造のためのアドレス情報を識別するように構成されたテクスチャアドレス指定モジュールを備える。更に別の態様では、ハードウェアトラバーサルエンジンは、第1のノードに関連付けられた情報をテクスチャアドレス指定モジュールに提供することによって、第1のコマンドに応じてスケジューラをバイパスする。更に別の態様では、ハードウェアトラバーサルエンジンは、レイトレーシング構造の第2のノードを識別したことに応じて、コマンドをスケジューラに返す。
【0042】
一態様では、コマンドは、処理ユニットのシェーダプロセッサにおいて指定されたシェーダを実行するためのコマンドを含む。別の態様では、指定されたシェーダは、任意のヒットシェーダである。更に別の態様では、レイトレーシング構造は、バウンディングボリューム階層(BVH)を含む。
【0043】
いくつかの実施形態では、システムは、レイトレーシングコマンドを提供するスケジューラと、レイトレーシング構造のレイトレーシングデータを記憶するメモリと、レイトレーシングコマンドに応じて、レイトレーシング構造をトラバースするためのハードウェアトラバーサルエンジンであって、レイトレーシング構造をトラバースすることは、レイトレーシング構造の少なくとも1つのノードについてスケジューラをバイパスすることを含む、ハードウェアトラバーサルエンジンと、を備える。一態様では、ハードウェアトラバーサルエンジンは、レイトレーシング構造のノードアドレスを記憶するためのトラバーサルスタックメモリを備える。別の態様では、ハードウェアトラバーサルエンジンは、レイトレーシングコマンドに関連付けられた光線に対してレイトレーシング構造の最も近いノードを示す情報を記憶するための最も近いヒットメモリを備える。更に別の態様では、ハードウェアトラバーサルエンジンは、レイトレーシングコマンドに関連付けられた光線についての状態情報を記憶するためのトラバーサル状態メモリを備える。一態様では、システムはシェーダプロセッサを備え、レイトレーシング構造をトラバースすることは、レイトレーシング構造の少なくとも1つのノードについてシェーダプロセッサをバイパスすることを含む。
【0044】
いくつかの実施形態では、方法は、処理ユニットのスケジューラにおいて、処理ユニットのモジュールにおける実行のためにコマンドをスケジュールすることと、処理ユニットのハードウェアトラバーサルエンジンにおいて、スケジューラからの第1のコマンドに応じてレイトレーシング構造をトラバースすることと、を含み、ハードウェアトラバーサルエンジンは、レイトレーシング構造の第1のノードを識別したことに応じてスケジューラをバイパスする。一態様では、方法は、ハードウェアトラバーサルエンジンが、レイトレーシング構造の第1のノードを識別したことに応じて、処理ユニットのシェーダプロセッサをバイパスすることを含む。別の態様では、方法は、処理ユニットのテクスチャアドレス指定モジュールにおいて、第1のコマンドに応じてレイトレーシング構造のアドレス情報を識別することを含む。
【0045】
一態様では、ハードウェアトラバーサルエンジンは、第1のノードに関連付けられた情報をテクスチャアドレス指定モジュールに提供することによって、第1のコマンドに応じてスケジューラをバイパスする。別の態様では、方法は、レイトレーシング構造の第2のノードを識別したことに応じて、ハードウェアトラバーサルエンジンからスケジューラにコマンドを返すことを含む。更に別の態様では、コマンドは、処理ユニットのシェーダプロセッサにおいて指定されたシェーダを実行するためのコマンドを含む。更に別の態様では、レイトレーシング構造は、バウンディングボリューム階層(BVH)を含む。
【0046】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
【0047】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0048】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
図1
図2
図3
図4
図5
【手続補正書】
【提出日】2024-08-16
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
処理ユニットであって、
前記処理ユニットのモジュールにおける実行のためにコマンドをスケジュールするスケジューラと、
前記スケジューラからの第1のコマンドに応じてレイトレーシング構造をトラバースするように構成されたハードウェアトラバーサルエンジンであって、前記ハードウェアトラバーサルエンジンは、前記レイトレーシング構造の第1のノードを識別したことに応じて前記スケジューラをバイパスする、ハードウェアトラバーサルエンジンと、を備える、
処理ユニット。
【請求項2】
シェーディング動作を実行するためのシェーダプロセッサを備え、
前記ハードウェアトラバーサルエンジンは、前記レイトレーシング構造の前記第1のノードを識別したことに応じて、前記シェーダプロセッサをバイパスする、
請求項1の処理ユニット。
【請求項3】
前記第1のコマンドに応じて前記レイトレーシング構造のためのアドレス情報を識別するように構成されたテクスチャアドレス指定モジュールを備える、
請求項の処理ユニット。
【請求項4】
前記ハードウェアトラバーサルエンジンは、前記第1のノードに関連付けられた情報を前記テクスチャアドレス指定モジュールに提供することによって、前記第1のコマンドに応じて前記スケジューラをバイパスする、
請求項3の処理ユニット。
【請求項5】
前記ハードウェアトラバーサルエンジンは、前記レイトレーシング構造の第2のノードを識別したことに応じて、コマンドを前記スケジューラに返す、
請求項1の処理ユニット。
【請求項6】
前記コマンドは、前記処理ユニットのシェーダプロセッサにおいて指定されたシェーダを実行するためのコマンドを含む、
請求項5の処理ユニット。
【請求項7】
前記指定されたシェーダは、任意のヒットシェーダである、
請求項6の処理ユニット。
【請求項8】
前記レイトレーシング構造は、バウンディングボリューム階層(Bounding Volume Hierarchy、BVH)を含む、
請求項1の処理ユニット。
【請求項9】
処理ユニットのスケジューラにおいて、前記処理ユニットのモジュールで実行するためのコマンドをスケジュールすることと、
前記処理ユニットのハードウェアトラバーサルエンジンにおいて、前記スケジューラからの第1のコマンドに応じてレイトレーシング構造をトラバースすることと、を含み、
前記ハードウェアトラバーサルエンジンは、前記レイトレーシング構造の第1のノードを識別したことに応じて前記スケジューラをバイパスする、
方法。
【請求項10】
前記ハードウェアトラバーサルエンジンが、前記レイトレーシング構造の前記第1のノードを識別したことに応じて、前記処理ユニットのシェーダプロセッサをバイパスすることを含む、
請求項の方法。
【請求項11】
前記処理ユニットのテクスチャアドレス指定モジュールにおいて、前記第1のコマンドに応じて前記レイトレーシング構造のためのアドレス情報を識別することを含む、
請求項の方法。
【請求項12】
前記ハードウェアトラバーサルエンジンは、前記第1のノードに関連付けられた情報を前記テクスチャアドレス指定モジュールに提供することによって、前記第1のコマンドに応じて前記スケジューラをバイパスする、
請求項11の方法。
【請求項13】
前記レイトレーシング構造の第2のノードを識別したことに応じて、前記ハードウェアトラバーサルエンジンから前記スケジューラにコマンドを返すことを含む、
請求項の方法。
【請求項14】
前記コマンドは、前記処理ユニットのシェーダプロセッサにおいて指定されたシェーダを実行するためのコマンドを含む、
請求項13の方法。
【請求項15】
前記レイトレーシング構造は、バウンディングボリューム階層(Bounding Volume Hierarchy、BVH)を含む、
請求項の方法。
【国際調査報告】