(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-22
(45)【発行日】2024-01-30
(54)【発明の名称】機械学習ベースシェーダをもつグラフィックス処理チップ
(51)【国際特許分類】
G06T 15/80 20110101AFI20240123BHJP
G06N 3/08 20230101ALI20240123BHJP
G06T 1/20 20060101ALI20240123BHJP
【FI】
G06T15/80
G06N3/08
G06T1/20 C
(21)【出願番号】P 2021533491
(86)(22)【出願日】2020-02-13
(86)【国際出願番号】 US2020018130
(87)【国際公開番号】W WO2020172043
(87)【国際公開日】2020-08-27
【審査請求日】2022-11-18
(32)【優先日】2019-02-21
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】515046968
【氏名又は名称】メタ プラットフォームズ テクノロジーズ, リミテッド ライアビリティ カンパニー
【氏名又は名称原語表記】META PLATFORMS TECHNOLOGIES, LLC
(74)【代理人】
【識別番号】110002974
【氏名又は名称】弁理士法人World IP
(72)【発明者】
【氏名】シード, クリストフ ハーマン
(72)【発明者】
【氏名】カプラニヤン, アントン エス.
【審査官】佐藤 直樹
(56)【参考文献】
【文献】特開2002-063590(JP,A)
【文献】米国特許出願公開第2015/0193967(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/80
G06N 3/08
G06T 1/20
(57)【特許請求の範囲】
【請求項1】
グラフィックス処理チップであって、
グラフィックスレンダリングパイプラインに従って前記グラフィックス処理チップの動作を管理するように構成されたコントローラであって、前記動作が、ジオメトリ処理動作と、ラスタ化動作と、シェーディング動作とを含む、コントローラと、
前記シェーディング動作の少なくとも一部分を実施するように構成された機械学習モデルを記憶するように構成された少なくとも1つのプログラマブルメモリ構成要素と、
前記機械学習モデルに従って前記シェーディング動作を実施するために選択的に使用されるように構成された複数の処理ユニットと、
前記シェーディング動作を使用して生成された画像データを記憶するように構成された少なくとも1つの出力メモリと
を備える、グラフィックス処理チップ。
【請求項2】
前記機械学習モデルが、前記プログラマブルメモリ構成要素に記憶され、観察データと、ライティングデータと、色データと、材料特性データとに基づいて出力を生成するように構成され、
前記出力メモリに記憶された前記画像データが、前記機械学習モデルの前記出力を使用して生成される、
請求項1に記載のグラフィックス処理チップ。
【請求項3】
前記機械学習モデルの前記出力が、強度データを含み、
前記画像データが、前記色データと前記強度データとに基づいて生成される、
請求項2に記載のグラフィックス処理チップ。
【請求項4】
前記機械学習モデルが、第2の強度データに基づいて前記出力を生成するようにさらに構成された、
請求項3に記載のグラフィックス処理チップ。
【請求項5】
前記少なくとも1つのプログラマブルメモリ構成要素が、前記観察データと、前記ライティングデータと、前記色データと、前記材料特性データとのうちの1つまたは複数に基づいて第2の出力を生成するように構成された第2の機械学習モデルを記憶するように構成され、
前記第2の強度データが、前記第2の出力と、前記観察データと、前記ライティングデータとを使用して生成され、
前記機械学習モデルと前記第2の機械学習モデルとが、複数のトレーニングサンプルを使用してエンドツーエンドでトレーニングされる、
請求項4に記載のグラフィックス処理チップ。
【請求項6】
前記第2の強度データが、照明モデルに従って生成され、前記第2の機械学習モデルの前記第2の出力が、前記第2の強度データを生成するために前記照明モデルによって使用される鏡面データを含む、
請求項5に記載のグラフィックス処理チップ。
【請求項7】
前記機械学習モデルが、複数のトレーニングサンプルを使用してトレーニングされ、
前記複数のトレーニングサンプルの各々が、仮想表面に関連する材料特性データと、フラグメントに関連するターゲット色データとに関連し、前記ターゲット色データが、後処理効果を伴うターゲット画像に関連する、
請求項1に記載のグラフィックス処理チップ。
【請求項8】
前記機械学習モデルがニューラルネットワークを備える、
請求項1に記載のグラフィックス処理チップ。
【請求項9】
前記複数の処理ユニットがデジタル信号プロセッサである、
請求項1に記載のグラフィックス処理チップ。
【請求項10】
オフチップ回路と通信するためのインターフェースをさらに備え、該インターフェースを通してレンダリング命令が受信される、請求項1に記載のグラフィックス処理チップ。
【請求項11】
前記観察データと、前記ライティングデータと、前記色データと、前記材料特性データとが、1つまたは複数のフラグメントに関連し、前記1つまたは複数のフラグメントが、前記ジオメトリ処理動作および前記ラスタ化動作を使用して生成される、
請求項2に記載のグラフィックス処理チップ。
【請求項12】
前記色データと前記材料特性データとが、前記1つまたは複数のフラグメントを通して可視であると決定された1つまたは複数の仮想表面に関連する、
請求項11に記載のグラフィックス処理チップ。
【請求項13】
前記複数の処理ユニットが、前記ジオメトリ処理動作または前記ラスタ化動作を実施するために選択的に使用されるようにさらに構成された、請求項1に記載のグラフィックス処理チップ。
【請求項14】
前記ジオメトリ処理動作または前記ラスタ化動作を実施するように構成された1つまたは複数の固定機能プロセッサ
をさらに備える、請求項1に記載のグラフィックス処理チップ。
【請求項15】
前記コントローラは、前記ジオメトリ処理動作を前記ラスタ化動作の前に実施させるように構成され、前記コントローラは、前記シェーディング動作を、前記ジオメトリ処理動作および前記ラスタ化動作の後に実施させるように構成された、請求項1に記載のグラフィックス処理チップ。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、その内容全体がすべての目的のために参照により本明細書に組み込まれる、2019年2月21日に出願された米国出願第16/281,703号からのその優先権を主張する。
【0002】
本開示は、一般に、グラフィックス処理チップおよび機械学習に関する。
【背景技術】
【0003】
「コンピュータグラフィックス」は、グラフィックスハードウェアおよびソフトウェアを使用して作成された(静止画像とビデオとを含む)コンピュータ生成された画像データを指す。コンピュータグラフィックス、特に、高解像度および/または高いフレームレートをもつコンピュータグラフィックスは、生成するために計算量的にコストがかかる。たとえば、4096×2160の解像度をもつ単一の画像を生成することは、ほぼ900万ピクセルの色が決定される必要があることを意味する。60フレーム毎秒(fps)でビデオを生成するために、毎秒必要とされるピクセルの数は、5億3000万に急速に近づく。厳しい時間フレーム内でそのような膨大な量の色データをレンダリングするために必要とされる計算電力(computational power)の量は、しばしば、コンピュータグラフィックスアプリケーションにとってボトルネックになる。たとえば、リアルタイムレンダリングのタイミング要求を満たすために、コンピュータグラフィックスアプリケーションは、しばしば、シーンの解像度および/または複雑さを犠牲にする必要があり、それにより、理想に満たない結果が生じる。
【0004】
コンピュータグラフィックスの高い計算要求に対処するために、専用ハードウェアが開発されている。グラフィックス処理ユニット(「GPU」)は、グラフィックス処理のために最適化された専用コンピューティングハードウェアである。汎用中央処理ユニット(「CPU」)と比較して、GPUは、高度並列動作を実施するように設計された、より多くの実行ユニットおよびトランジスタを有する。さらに、GPUは、グラフィックスレンダリングパイプラインにおいて共通である特定の動作を実施するための特別に設計されたハードウェア構成要素を含む。たとえば、GPUは、概して、ジオメトリ処理、ラスタ化、およびシェーディングを実施するためのハードウェア構成要素を有し得る。パイプライン中のいくつかの段が、物理ベース(physically-based)レンダリング技法を使用するように設計され、これは、計算コストが高く、うまくスケーリングしない。したがって、所望の画像が複雑なシーンのものであり、および/または所望の画像解像度が高い場合、計算費用が法外になり得る。したがって、現在のGPU設計は、グラフィックスをレンダリングするための多大な処理電力(processing power)を提供しているが、それらの性能は、引き続き、グラフィックスアプリケーションにとってボトルネックである。
【発明の概要】
【0005】
本明細書で説明される特定の実施形態は、グラフィックスレンダリングパイプライン中の1つまたは複数のフェーズを機械学習ベースであるようにサポートするように設計されたグラフィックス処理チップに関係する。たとえば、グラフィックス処理チップは、シェーディング動作を、そのようなタスクを実施するようにトレーニングされた機械学習モデルに従って実施するように構成されたプログラマブルデジタル信号プロセッサ(DSP)のアレイを含み得る。たとえば、機械学習モデルは、入力としてフラグメントに関連する属性(たとえば、位置、法線、反射率、ライティングなど)をとり、フラグメントについての色を出力するようにトレーニングされ得る。そのような機械学習ベース手法によって実施される動作は、計算コストが高い物理ベースシェーディングを実施するために設計されたストリーミングプロセッサまたは固定機能モジュールをもつ旧来のGPUによって実施される動作よりもはるかに速い。さらに、本明細書で説明されるグラフィックス処理チップは、グラフィックスレンダリングが、旧来のGPUよりもはるかにスケーラブルであることを可能にし、これは、厳しい時間制約(たとえば、リアルタイムレンダリング)をもつコンピュータグラフィックスアプリケーションが、はるかに複雑なおよび/または詳細なシーンを設計することを可能にする。
【0006】
本発明の実施形態は、限定はしないが、モバイルデバイス、デスクトップ、サーバ、グラフィックスシステム、および人工現実システムを含む、任意のタイプのコンピューティングシステムを含むかまたは任意のタイプのコンピューティングシステムとともに実装され得る。人工現実は、ユーザへの提示の前に何らかの様式で調整された形式の現実であり、これは、たとえば、仮想現実(VR)、拡張現実(AR)、複合現実(MR)、ハイブリッド現実、あるいはそれらの何らかの組合せおよび/または派生物を含み得る。人工現実コンテンツは、完全に生成されたコンテンツ、またはキャプチャされたコンテンツ(たとえば、現実世界の写真)と組み合わせられた生成されたコンテンツを含み得る。人工現実コンテンツは、ビデオ、オーディオ、触覚フィードバック、またはそれらの何らかの組合せを含み得、それらのいずれも、(観察者に3次元効果をもたらすステレオビデオなどの)単一のチャネルまたは複数のチャネルにおいて提示され得る。さらに、いくつかの実施形態では、人工現実は、たとえば、人工現実におけるコンテンツを作成するために使用される、および/または人工現実において使用される(たとえば、人工現実におけるアクティビティを実施する)アプリケーション、製品、アクセサリ、サービス、またはそれらの何らかの組合せに関連し得る。人工現実コンテンツを提供する人工現実システムは、ホストコンピュータシステムに接続されたヘッドマウントディスプレイ(HMD)、スタンドアロンHMD、モバイルデバイスまたはコンピューティングシステム、あるいは、1人または複数の観察者に人工現実コンテンツを提供することが可能な任意の他のハードウェアプラットフォームを含む、様々なプラットフォーム上に実装され得る。
【0007】
本明細書で開示される実施形態は例にすぎず、本開示の範囲はそれらに限定されない。特定の実施形態は、上記で開示された実施形態の構成要素、要素、特徴、機能、動作、またはステップのすべてを含むか、いくつかを含むか、またはいずれをも含まないことがある。本発明による実施形態は、特に、グラフィックス処理チップ、方法、記憶媒体、システム、およびコンピュータプログラム製品を対象とする添付の特許請求の範囲で開示され、1つの請求項カテゴリー、たとえば、グラフィックス処理チップにおいて述べられた任意の特徴は、別の請求項カテゴリー、たとえば、システム、記憶媒体、コンピュータプログラム製品、および方法においても請求され得る。添付の特許請求の範囲における従属関係または参照は、形式的理由で選定されるにすぎない。ただし、前の請求項への意図的な参照(特に複数の従属関係)から生じる主題も請求され得、その結果、請求項とその特徴との任意の組合せが、開示され、添付の特許請求の範囲で選定された従属関係にかかわらず請求され得る。請求され得る主題は、添付の特許請求の範囲に記載の特徴の組合せだけでなく、特許請求の範囲における特徴の任意の他の組合せをも含み、特許請求の範囲において述べられた各特徴は、特許請求の範囲における任意の他の特徴または他の特徴の組合せと組み合わせられ得る。さらに、本明細書で説明または示される実施形態および特徴のいずれかは、別個の請求項において、ならびに/あるいは、本明細書で説明もしくは示される任意の実施形態もしくは特徴との、または添付の特許請求の範囲の特徴のいずれかとの任意の組合せで請求され得る。
【0008】
本発明によれば、グラフィックス処理チップが、
グラフィックスレンダリングパイプラインに従ってグラフィックス処理チップの動作を管理するように構成されたコントローラであって、動作が、ジオメトリ処理動作と、ラスタ化動作と、シェーディング動作とを含む、コントローラと、
シェーディング動作の少なくとも一部分を実施するように構成された機械学習モデルを記憶するように構成された(または記憶する)少なくとも1つのプログラマブルメモリ構成要素と、
機械学習モデルに従ってシェーディング動作を実施するために選択的に使用されるように構成された複数の処理ユニットと、
シェーディング動作を使用して生成された画像データを記憶するように構成された少なくとも1つの出力メモリと
を備える。
【0009】
機械学習モデルは、プログラマブルメモリ構成要素に記憶され得、観察データと、ライティングデータと、色データと、材料特性データとに基づいて出力を生成するように構成され得、
出力メモリに記憶された画像データは、機械学習モデルの出力を使用して生成され得る。
【0010】
機械学習モデルの出力は、強度データを含み得、
画像データは、色データと強度データとに基づいて生成され得る。
【0011】
機械学習モデルは、第2の強度データに基づいて出力を生成するように構成され得る。
【0012】
少なくとも1つのプログラマブルメモリ構成要素は、観察データと、ライティングデータと、色データと、材料特性データとのうちの1つまたは複数に基づいて第2の出力を生成するように構成された第2の機械学習モデルを記憶するように構成され得、
第2の強度データは、第2の出力と、観察データと、ライティングデータとを使用して生成され得る。
【0013】
第2の強度データは、照明モデルに従って生成され得る。
【0014】
第2の機械学習モデルの第2の出力は、第2の強度データを生成するために照明モデルによって使用される鏡面データを含み得る。
【0015】
機械学習モデルと第2の機械学習モデルとは、複数のトレーニングサンプルを使用してエンドツーエンドでトレーニングされ得る。
【0016】
機械学習モデルは、複数のトレーニングサンプルを使用してトレーニングされ得る。
【0017】
複数のトレーニングサンプルの各々が、仮想表面に関連する材料特性データと、フラグメントに関連するターゲット色データとに関連し得る。
【0018】
ターゲット色データは、後処理効果をもつターゲット画像に関連し得る。
【0019】
機械学習モデルはニューラルネットワークを備え得る。
【0020】
複数の処理ユニットはデジタル信号プロセッサであり得る。
【0021】
グラフィックス処理チップは、
レンダリング命令がそこを通って受信される、オフチップ回路と通信するためのインターフェース
をさらに備え得る。
【0022】
観察データと、ライティングデータと、色データと、材料特性データとは、1つまたは複数のフラグメントに関連し得る。
【0023】
1つまたは複数のフラグメントは、ジオメトリ処理動作およびラスタ化動作を使用して生成され得る。
【0024】
色データと材料特性データとは、1つまたは複数のフラグメントを通して可視であると決定された1つまたは複数の仮想表面に関連し得る。
【0025】
複数の処理ユニットは、ジオメトリ処理動作またはラスタ化動作を実施するために選択的に使用されるように構成され得る。
【0026】
グラフィックス処理チップは、
ジオメトリ処理動作またはラスタ化動作を実施するように構成された1つまたは複数の固定機能プロセッサ
をさらに備え得る。
【0027】
コントローラは、ジオメトリ処理動作がラスタ化動作より前に実施されることを引き起こすように構成され得る。
【0028】
コントローラは、シェーディング動作が、ジオメトリ処理動作およびラスタ化動作の後に実施されることを引き起こすように構成され得る。
【0029】
1つまたは複数のコンピュータ可読非一時的記憶媒体は、実行されたとき、本発明によるシステムまたは上述の実施形態のいずれかにおいて実施するように動作可能であるソフトウェアを具現し得る。
【0030】
コンピュータ実装方法は、本発明によるシステムまたは上述の実施形態のいずれかを使用し得る。
【0031】
好ましくはコンピュータ可読非一時的記憶媒体を備えるコンピュータプログラム製品は、本発明によるシステムまたは上述の実施形態のいずれかにおいて使用され得る。
【図面の簡単な説明】
【0032】
【
図1】特定の実施形態による、MLグラフィックス処理チップの一例を示す図である。
【
図2】特定の実施形態による、MLグラフィックス処理チップのための例示的な機械学習シェーディングアーキテクチャを示す図である。
【
図3】特定の実施形態による、MLグラフィックス処理チップのための機械学習シェーディングアーキテクチャ300の別の実施形態を示す図である。
【
図4】特定の実施形態による、MLグラフィックス処理チップのための別の例示的な機械学習シェーディングアーキテクチャを示す図である。
【
図5A-5B】特定の実施形態において使用され得るニューラルネットワークアーキテクチャの例を示す図である。
【
図6A】参照画像と、本明細書で説明される実施形態を使用して生成された予測された画像との間の比較を提供する図である。
【
図6B】参照画像と、本明細書で説明される実施形態を使用して生成された予測された画像との間の比較を提供する図である。
【
図7】特定の実施形態による、グラフィックス処理チップの例示的な処理フローを示す図である。
【
図8】例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0033】
GPUは、3Dグラフィックスをレンダリングするための専用プロセッサである。旧来のGPUは、シーンの描写から画像を合成するために、グラフィックスレンダリングパイプラインに従って一連の動作を実施するように設計される。概念的に、グラフィックスレンダリングパイプラインは、入力として3Dモデルをとり、3Dモデルは、通常、ワイヤメッシュの三角形または他のタイプのジオメトリによって定義される。グラフィックスレンダリングパイプラインの一例は、高レベルにおいて、ジオメトリ処理、ラスタ化、シェーディング、および後処理を含み得る。ジオメトリ処理フェーズ中に、コンピュータグラフィックスオブジェクト(たとえば、ティーポット、テーブルなど)の(たとえば、頂点およびエッジの3D座標を使用して定義された)3Dモデル定義が、モデル座標系から共通座標系に変換され得る。3Dモデル変換の出力は、頂点のストリームであり得る。次いで、各頂点のライティング特性が、ライティング状態およびカメラ位置に基づいて計算され得る。次いで、頂点は、色付き三角形にアセンブルされ得る。このフェーズの出力は、三角形のストリームであり得る。可視でない三角形が、zバッファテストに基づいて廃棄され(または、クリッピングされ)得る。
【0034】
グラフィックスレンダリングパイプラインのジオメトリ処理フェーズの後に、得られた三角形がラスタ化され得る。ラスタ化は、三角形の各々を1つまたは複数のフラグメントによって表されるラスタフォーマットに変換するプロセスである(たとえば、視覚的に、フラグメントは、三角形を集合的に近似する正方形であり得る)。フラグメントは、候補ピクセル値を表し得る(各ピクセルが複数のフラグメントに対応し得る)。ラスタ化フェーズの出力は、フラグメントのストリームである。
【0035】
グラフィックスレンダリングパイプライン中の次のフェーズはシェーディングであり得、シェーディングは、可視である各フラグメントの適切な色を決定するプロセスを指す。旧来のGPUは、物理ベースシェーディングを実施するように設計される。たとえば、各フラグメントのための適切な色値を計算するために、シェーディングプロセスは、光の物理的挙動および特性を考慮するシェーディングアルゴリズム(たとえば、グーローシェーディングまたはフォンシェーディング)および/または照明モデルを使用するように構成され得る。概念的に、たとえば、物理ベースシェーダは、仮想3D表面とともに、その位置および配向、材料特性、および/またはテクスチャに基づいて、物理学に従って、光線がどのように挙動するのかを計算することによって、光線がどのように反射し、屈折させ、および/または回折してサブ光線になり得るかを考慮し得る。このプロセスは、計算コストが高く、シーン複雑さとうまくスケーリングしない(たとえば、シーン中のより多くの光源および/またはオブジェクトを考慮するために、より多くの計算が必要とされる)。その結果、GPUの既存のシェーディングプロセスは、グラフィックスアプリケーションについて実際的ボトルネックを課する。
【0036】
ピクセル色がシェーディングフェーズによって決定された後に、限定はしないが、ブレンディング、ぼかし、アンチエイリアシングなどを含む、所望の効果を作成するために、任意の所望の後処理が実施され得る。一例として、ぼかしが望まれるとき、レンダリングシステムは、シェーディングプロセスからビットアキュレート画像結果をとり、次いで、ぼかした画像を生成するために近くのピクセルを平均化し得る。したがって、ぼかした画像を生成するために、システムは、(1)最初に、ビットアキュレート画像を生成し、(2)結果をぼかす。所望の出力(この場合、ぼかした画像)を直接生成しないことが、非効率性をもたらし得る。
【0037】
旧来のGPUは、グラフィックスレンダリングパイプラインの様々な動作を実施するために最適化された特別に設計されたハードウェアを装備する。たとえば、いくつかのGPUが、各々、ジオメトリ処理、ラスタ化、またはシェーディングを加速することに専用である固定機能処理ユニットを有し得る。追加または代替として、GPUは、パイプラインの異なる段を実施するというタスクを選択的に与えられ得る、浮動小数点計算の速いおよび効率的な並列実行を提供するように設計されたストリームプロセッサのアレイを有し得る。たとえば、GPUの物理レイアウトが、主にストリームプロセッサによって占有され得、ストリームプロセッサは、頂点処理、ジオメトリ処理、およびピクセル/フラグメント処理など、動作を実施するというタスクを選択的に与えられ得る。しかしながら、速度および効率は、フレキシビリティを犠牲にして成り立つ。たとえば、ストリームプロセッサは、高レベルの並列性およびデータ局所性を必要とするアプリケーションに好適であるが、それらのアプリケーションは、論理的または分岐集約的動作を実施することについて効率的でない。
【0038】
ストリームプロセッサおよび固定機能ハードウェアは、シェーディング動作を実施するために極めて最適化されているが、そのような動作は、それにもかかわらず計算コストが高く(たとえば、物理ベースシミュレーション)、リアルタイム性能を限定する。旧来のGPUの様々な限界と、グラフィックをレンダリングするためのより速い、より電力効率的なやり方の必要とに対処するために、本明細書で説明される特定の実施形態は、機械学習ベースである段をもつグラフィックスレンダリングパイプラインをサポートするように構成された機械学習アクセラレーションハードウェアをもつ新しい機械学習(ML)グラフィックス処理チップを導入する。特定の実施形態では、グラフィックス処理チップによって実装される機械学習パイプラインは、物理ベースシェーディングではなく、シェーディングを実施するための機械学習技法を使用し得る。GPU上で、グラフィックスレンダリングパイプラインの異なる段が、一般に、異なる電力消費特性を有することが観測される。上述のように、シェーディング処理段は、一般にボトルネックである。たとえば、一般的な画像をレンダリングするために、おおよそ、使用される電力および時間の10%がジオメトリ処理のためのものであり得、50%がシェーディングのためのものであり得、40%が局所シェーディングおよび後処理のためのものであり得る。後処理動作が実施されない場合、シェーディングのために費やされる電力および時間の総割合が、さらに、ジオメトリ処理のために使用される電力および時間を少なくする(たとえば、シェーディングが電力消費の80%を担う)ことになる。したがって、物理ベース計算に依拠するのではなく、シェーディング動作を実施するための機械学習技法を使用することによって、MLグラフィックス処理チップは、著しく少ない電力および時間で画像をレンダリングすることができる。MLベースシェーダを使用することの追加の利益は、そのことが、設計者に、厳しいランタイム需要を満たすためにレンダリング品質を犠牲にするためのフレキシビリティを与えることである。たとえば、高いフレームレートを必要とするがビットアキュレート結果を必要としないアプリケーションでは、MLグラフィックス処理チップは、より速い結果を出力するためにより小さいニューラルネットワークを使用し得る。レンダリング品質がビットアキュレートでないことがあるが、そのレンダリング品質は、準最適な品質が知覚可能でないことがある(たとえば、シーンが高速で移動していることがあるか、またはピクセルがいずれにせよユーザの周辺視野中にあり得る)ので、依然として、その特定のアプリケーションにとって十分に良好であり得る。このオプションは、旧来のGPU上では、シェーダがビットアキュレート結果のみを出力するように構成されるので、利用可能でない。
【0039】
図1は、特定の実施形態による、MLグラフィックス処理チップ100の一例を示す。MLグラフィックス処理チップ100は、レンダリング命令およびデータがそこを通って受信される、オフチップ回路(たとえば、中央処理ユニットまたはメモリモジュール)と通信するための入出力インターフェース110を有し得る。論理をスケジュールすること、計算リソースを割り当てること、スレッド管理などを実施するためのコントローラ120もあり得る。MLグラフィックス処理チップ100は、ラスタ化、データアセンブリ、zカリング(z-culling)など、高度並列タスクを実施するための固定機能プロセッサ125をも有し得る。チップ100は、シェーディング動作を実施するようにトレーニングされた機械学習モデルを含む、プログラマブル命令を記憶するための1つまたは複数のメモリバンク128をも有し得る。さらに、MLグラフィックス処理チップ100は、出力画像が表示のために書き込まれる、キャッシュ140(たとえば、L1またはL2キャッシュ)とフレームバッファ150とを有し得る。
【0040】
特定の実施形態では、MLグラフィックス処理チップ100は、ML動作を加速するように構成されたデジタル信号プロセッサ(DSP)130の大きいアレイを有し得る。GPUによって使用されるストリームプロセッサとは異なり、DSPは、機械学習モデルおよびデータ構成の変動する設計に適応することができる、よりフレキシブルなプロセッサである。たとえば、DSP130は、深層ニューラルネットワークおよび畳み込み層のための共通動作であるベクトルおよび/または行列演算を加速するように構成され得る。DSP130はまた、いくつかの機械学習モデル(たとえば、リカレントニューラルネットワーク)によって必要とされ得る、メモリ集約的な動作を扱うのにより好適である。したがって、DSP130は、MLグラフィックス処理チップ100の、オンチップでの必要とされる機械学習動作を実施する効率および能力を改善し、レイテンシおよび非効率性をもたらすことがある、CPUとの動作の義務を分けることを行う必要をなくすかまたは最小限に抑えるのを助ける。
【0041】
特定の実施形態では、MLグラフィックス処理チップ100は、機械学習モデルを使用して、グラフィックスレンダリングパイプラインの全シェーディング段を実施するように構成され得る。機械学習ベース手法は、シェーディングに対する物理ベース手法に勝るいくつかの利点を有する。上記で説明されたように、旧来の物理ベースシェーディングパイプラインは、光の物理的特性を模倣するために複雑な計算を実施する必要があるので、計算コストが高い。その結果、物理ベースシェーディングは、シーンの複雑さと不十分にスケーリングする(たとえば、多くのオブジェクトおよび/または光源を有するシーンが、割り振られた時間内にレンダリングするために、そのシーンを過度に複雑にし得る)。対照的に、機械学習ベースシェーディングパイプラインは、通常ならば物理ベースパイプラインにおいて必要とされるであろう光の横断および他の計算コストが高い算出を計算する必要なしに、いくつかの入力(たとえば、ライティング、材料特性、光線入射など)がどのように色に相関するかを学習するために、機械学習を使用する。さらに、全フレームがレンダリングされた後に後処理効果が適用される(たとえば、クリーンで、シャープな画像がレンダリングされた後に、その画像が、エイリアシングアーティファクトを補正するために後続の後処理ステップにおいて変えられる)旧来のパイプラインとは異なり、機械学習ベースシェーディングプロセスは、所望の後処理効果(たとえば、アンチエイリアシング、被写界深度、ぼかしなど)をもつフレームを直接レンダリングし得る。機械学習ベースシェーディングプロセスはまた、複数のピクセルの色が1つのパスにおいて決定されることを可能にすることによって、さらなる最適化を与える。特定の実施形態では、機械学習モデルを通る各パスが、単一のピクセルについての色値を出力し得る。しかしながら、他の実施形態では、機械学習モデルは、機械学習モデルの1つのパスにおいて複数のピクセルの色値を処理するように構成され得る(たとえば、1つのパスの出力は、タイルと呼ばれることもある、2×2、3×3、またはn×mブロックのピクセルについての色値であり得る)。さらに、機械学習ベースシェーディングプロセスは、シーン複雑さに対してはるかにスケーラブルであり、これは、グラフィックスアプリケーションの設計者が、グラフィックスレンダリングの実用性によってあまり妨害されないことを可能にする。本明細書で説明される実施形態によって与えられる計算効率のこれらの例は、低減された電力消費(これは、限られた電源および重みおよびサイズ限界をもつモバイルデバイスにとって特に重要である)およびレンダリング時間につながる。
【0042】
図2は、特定の実施形態による、MLグラフィックス処理チップのための例示的な機械学習シェーディングアーキテクチャ200を示す。機械学習アーキテクチャ200は、シェーディングのタスクを実施するように構成されたニューラルネットワーク240(または他の好適な機械学習モデル)を含み得る。シェーディングニューラルネットワーク240は、(1つまたは複数の)フラグメントに関連するデータを処理し、その(1つまたは複数の)フラグメントについての対応する出力250(たとえば、フラグメントについての色値)を生成するように構成され得る。各フラグメントが、フラグメントを通して可視である仮想空間における表面(たとえば、仮想りんごの表面)に関連し得、その表面に関連するパラメータが、シェーディングニューラルネットワーク240のための入力として使用され得る。たとえば、ネットワーク240は、入力として、表面に対するカメラ/観察者の観察方向など、環境データ210をとり得る。環境データ210は、表面に対する周囲光源をも含み得る(たとえば、表面に対する光源の相対ロケーションが、ベクトルを使用して表され得る)。特定の実施形態では、表面の色220もシェーディングニューラルネットワーク240に入力され得る。たとえば、表面がりんごの表面である場合、その停止サイン(stop sign)の知られている色は、赤のシェードであり得る(たとえば、赤色値、緑色値、および青色値で表される)。表面色220に加えて、(たとえば、表面法線によって表される)表面配向および材料特性を表すパラメータなど、表面に関連する他のパラメータ230も、ネットワーク240に入力され得る。材料特性の例は、金属特性についての測度、粗さ、鏡面反射率(specular reflectance)、クリアコート、クリアコート粗さ、屈折率、および材料特性の任意の他の好適な測度を含み得る。材料特性は、物理ベースである(たとえば、材料特性が、木材またはガラスなど、オブジェクトの実際の物理的材料特性に対応するように定義される)か、または任意の所望の様式で定義され得る(たとえば、仮想オブジェクトの材料特性が、現実または物理学によって制約されない任意の所望の材料特性を有し得る)。
【0043】
特定の実施形態では、シェーディングニューラルネットワーク240は、250において、フラグメントについて、RGB(赤色、緑色、および青色)およびアルファ(透過性)で表された色を直接出力することを学習し得る。ネットワーク240がそこから学習するトレーニングデータは、各々、(1つまたは複数の)フラグメントのパラメータ(たとえば、観察方向、光源、材料特性など)と、その(1つまたは複数の)フラグメントについての対応する知られているターゲット色値(すなわち、グランドトゥルース)とを含む、十分に多数のトレーニングサンプルを含み得る。たとえば、フォトリアリスティック結果が望まれる場合、グランドトゥルースは、フォトリアリスティック画像の色値であろう。この例では、グランドトゥルース色は、フォトリアリスティック画像のものであるが、グランドトゥルース色は、そのように限定されず、任意の所望の色であり得る。たとえば、グランドトゥルースは、コンピュータ生成されたまたはレンダリングされた画像、特定の効果(たとえば、ぼかしまたは平滑化効果)が適用された画像、いくつかの画像補正(たとえば、ホワイトバランシング、色補正、アンチエイリアシングなど)を受けた画像、または任意の他の所望のターゲット画像であり得る。ネットワーク240が(1つまたは複数の)フラグメントについての推論された色結果を出力するたびに、ネットワーク240は、損失関数を使用して、結果をその(1つまたは複数の)フラグメントの知られている色と比較し、それに応じてニューラルネットワーク240を更新するためにバックプロパゲーションを使用し得る。十分に多数のそのようなトレーニング反復の後に(たとえば、損失関数がしきい値誤差レートを下回った後に、またはしきい値数のトレーニング反復の後に)、トレーニングが終了し得る。
【0044】
特定の実施形態では、シェーディングニューラルネットワーク240は、入力データから(1つまたは複数の)所与のフラグメントについての適切な色を推論し、250において結果を出力するようにトレーニングされ得る。シェーディングニューラルネットワーク240がトレーニングされると、シェーディングニューラルネットワーク240は、動作中、MLグラフィックス処理チップ100の1つまたは複数のプログラマブルDSP130によって実行され得る。たとえば、MLグラフィックス処理チップ100がジオメトリ処理およびラスタ化を実施した後に、そこから生成されたフラグメントは、それらの色を決定するために、シェーディングニューラルネットワーク240に入力され得る。特定の実施形態では、単一のフラグメントまたはフラグメントのタイルが、シェーディングニューラルネットワーク240を使用して一緒に処理され得る。たとえば、シェーディングニューラルネットワーク240は、入力として(1つまたは複数の)フラグメントに関連するパラメータ(たとえば、観察方向、光源、表面色、材料データなど)をとり、その(1つまたは複数の)フラグメントについての色を生成するために使用され得る適切な出力を推論し得る。
【0045】
シェーディングニューラルネットワーク240は、250においてRGB(赤色、緑色、および青色)およびアルファ(透過性)で表された色値を直接出力することを学習し得るが、いくつかの機械学習モデルでは、フラグメント色を直接出力するために必要とされるであろう乗法的動作(multiplicative operation)を学習することが困難であり得る。したがって、他の実施形態では、シェーディングニューラルネットワークは、代わりに、フラグメント色を計算するために使用され得る色重みおよび強度を決定することを学習し得る。
図3は、特定の実施形態による、MLグラフィックス処理チップのための機械学習シェーディングアーキテクチャ300の別の実施形態を示す。機械学習シェーディングアーキテクチャ300は、入力として、
図2に示されているものと同様の、観察およびライティング方向310、表面色320、および他の材料特性330など、(1つまたは複数の)フラグメントに関連する様々なパラメータをとるように構成されたシェーディングニューラルネットワーク340を含み得る。しかしながら、フラグメントについての最終RGBデータを直接出力する代わりに、シェーディングネットワーク340は、色重みおよび強度を出力するように構成され得る(たとえば、重みおよび強度値が、RGB色チャネルの各々について生成され得る)。ネットワーク340によって出力された色重みおよび強度は、次いで、色計算モジュール370を使用して、(たとえば、表面色360の各色チャネルを、その色チャネルについての対応する推論された重みおよび/または強度とともに適用または乗算することによって)フラグメントに関連する表面色360と組み合わせられ得る。色計算モジュール370は、次いで、350において、フラグメントについてのRGB色を出力し得る。
【0046】
特定の実施形態では、シェーディングニューラルネットワーク340は、入力データから所与の(1つまたは複数の)フラグメントについての適切な色重みおよび強度を推論するようにトレーニングされ得る。ネットワーク340がそこから学習するトレーニングデータは、各々、(1つまたは複数の)フラグメントのパラメータ(たとえば、観察方向、光源、材料特性など)と、その(1つまたは複数の)フラグメントについての対応する知られているターゲット色値(すなわち、グランドトゥルース)とを含む、十分に多数のトレーニングサンプル(たとえば、数千、数百万、数十億など)を含み得る。前に説明されたように、グランドトゥルースまたはターゲット色は、フォトリアリスティック画像、レンダリングされた画像、後処理効果をもつ画像などであり得る。ネットワーク340が、推論された色重みおよび/または強度を出力するたびに、色計算モジュール370は、それらの結果を表面色360と組み合わせて、フラグメント色350を生成し得る。ネットワーク340は、損失関数を使用して、生成されたフラグメント色を(1つまたは複数の)フラグメントの知られている色と比較し、それに応じてニューラルネットワーク340を更新するためにバックプロパゲーションを使用し得る。十分に多数のそのようなトレーニング反復の後に(たとえば、損失関数がしきい値誤差レートを下回った後に、またはしきい値数のトレーニング反復の後に)、トレーニングが終了し得る。トレーニングされると、MLグラフィックス処理チップは、トレーニングされたシェーディングニューラルネットワーク340を使用して、色重み/強度を生成し、出力を使用して、アーキテクチャ300に従って(1つまたは複数の)フラグメントについての適切な色を計算し得る。
【0047】
図4は、特定の実施形態による、MLグラフィックス処理チップのための別の例示的な機械学習シェーディングアーキテクチャ400を示す。この実施形態では、アーキテクチャ400は、可視表面の光沢を表す鏡面項(specular term)をさらに考慮するために機械学習を使用するように設計される。特定の実施形態では、アーキテクチャ400は、入力として、環境データ410(たとえば、観察方向および光源方向)、表面色411、および他のパラメータ412(たとえば、表面の材料特性)など、フラグメントのデータをとり、鏡面表現sを予測するように構成された、鏡面指数(specular-exponent)ネットワーク420を含み得る。鏡面表現は、次いで、局所表面が周辺光、拡散光、および鏡面光を反射するやり方を記述する、ブリン-フォン照明モデルなど、照明モデル430において使用され得る。たとえば、モデルは、次のように定義され得る。
f=max(N・H,0)
s
ここで、
fは、光強度を表し(色チャネルごとであり得る)、
Nは、表面の法線ベクトルを表し、
Hは、半角ベクトルを表し、
sは、鏡面指数を表す。
半角ベクトルHは、次のように定義される。
ここで、
vは、観察者/カメラのほうを向く表面上の関心ポイントからの方向を表し、
Lは、各光源のほうを向く表面上の関心ポイントからの方向を表す。
関心フラグメントに関連する入力データ410~412に基づいて、鏡面指数ネットワーク420は、鏡面指数値sを予測し得る。次いで、シェーディングアーキテクチャ400は、照明モデル430を使用して、予測された鏡面指数sおよび観察方向および光方向ベクトル440に基づいて、フラグメントについての光強度(たとえば、これは、各色チャネルについてのものであり得る)を計算し得る。
【0048】
シェーディングアーキテクチャ400は、色重みおよび強度を予測するために、シェーディングニューラルネットワーク460への入力パラメータの一部として照明モデル430の出力を使用し得る。シェーディングニューラルネットワーク460は、双方向反射率分布関数(BRDF:Bidirectional Reflectance Distribution Function)を表す、照明モデル430の出力を提供されるので、シェーディングニューラルネットワーク460は、著しくより滑らかな結果を作り出すために、BRDFからの偏差を学習する必要があるにすぎないであろう。
図3に示されているネットワーク340と同様のシェーディングニューラルネットワーク460は、入力として、環境データ450(たとえば、観察方向および光源方向)、表面色451、および他のパラメータ452(たとえば、表面の材料特性)など、フラグメントデータをとり得る。これらのパラメータデータ450~452は、鏡面指数ネットワーク420に入力されたパラメータデータ410~412と同じであるか、またはそれらとは異なり得る。フラグメントパラメータデータ450~452と照明モデル430からの出力とに基づいて、シェーディングニューラルネットワーク460は、関心フラグメントについての色重みおよび/または強度を予測し得る。
図3を参照しながら説明されたことと同様に、色計算モジュール470が、予測された色重み/強度を表面色480と組み合わせて、フラグメント色490を生成し得る。
【0049】
特定の実施形態では、鏡面指数ネットワーク420とシェーディングニューラルネットワーク460とが、エンドツーエンド様式でトレーニングされ得る。たとえば、ネットワーク420および460がそこから学習するトレーニングデータは、各々、(1つまたは複数の)フラグメントのパラメータ(たとえば、観察方向、光源、材料特性など)と、その(1つまたは複数の)フラグメントについての対応する知られている色値(すなわち、グランドトゥルース)とを含む、十分に多数のトレーニングサンプル(たとえば、数千、数百万、数十億など)を含み得る。前に説明されたように、グランドトゥルースまたはターゲット色は、フォトリアリスティック画像、レンダリングされた画像、後処理効果をもつ画像などであり得る。フラグメントパラメータを使用して、ネットワーク420および460は、上記で説明されたプロセスを使用して、490において、推論されたフラグメント色を出力し得る。ネットワーク420および460は、損失関数を使用して、生成されたフラグメント色をフラグメントの知られている色と比較し、それに応じてネットワーク420および460を更新するためにバックプロパゲーションを使用し得る。十分に多数のそのようなトレーニング反復の後に(たとえば、損失関数がしきい値誤差レートを下回った後に、またはしきい値数のトレーニング反復の後に)、トレーニングが終了し得る。トレーニングされると、MLグラフィックス処理チップは、トレーニングされた鏡面指数ネットワーク420およびシェーディングニューラルネットワーク460を使用して、色重み/強度を生成し、出力を使用して、アーキテクチャ400に従って(1つまたは複数の)フラグメントについての適切な色を計算し得る。
【0050】
特定の実施形態では、本明細書で説明されるニューラルネットワーク(たとえば、シェーディングニューラルネットワークおよび/または鏡面指数ネットワーク)は、いくつかの層を有し得る。
図5Aおよび
図5Bは、特定の実施形態において使用され得るニューラルネットワークアーキテクチャの例を示す。
図5Aは、例示的なニューラルネットワークアーキテクチャ500を示す。このアーキテクチャ500を有するニューラルネットワークは、上述のフラグメントデータ(たとえば、観察方向、光方向、材料特性など)など、入力510を受信し得る。ネットワークは、全結合層520を使用して入力データを処理し得る。全結合層520の出力は、アクティブ化ブロック530によって処理され得る。次いで、アクティブ化ブロック530の出力は、1つまたは複数のResnetブロック540によって処理され得る。次いで、最後のResnetブロック540の出力は、全結合層550によって処理され得、全結合層550は、推論されたまたは予測された結果(たとえば、色重み/強度または鏡面指数)を出力する。
図5Bは、各Resnetブロック540の一実施形態を示す。各Resnetブロック540が、全結合層560と、後続のアクティブ化層570と、後続の別の全結合層580とを使用して、各Resnetブロック540の入力を処理し得る。次いで、最後の全結合層580の出力は、590において、スキップ接続599を通してResnetブロック540の入力と加算され得る。次いで、加算ブロック590の出力は、別のアクティブ化層595によって処理され得、別のアクティブ化層595は、結果を、
図5Aに示されている次のResnetブロック540または全結合層550に出力し得る。Resnetブロックは、深く積層されたより小さい層を可能にし、これは、ネットワークの内側の冗長性を助ける。これらの図は、特定のネットワークアーキテクチャを示すが、本開示は、任意の他の好適なネットワークアーキテクチャをも企図する。
【0051】
図6Aおよび
図6Bは、参照画像と、本明細書で説明される実施形態を使用して生成された予測された画像との間の比較を提供する。特に、
図6Aは、旧来のGPUパイプラインを使用して生成されたシーンの参照画像600の一例を示す。一方、
図6Bは、本明細書で説明される実施形態を使用してレンダリングされた同じシーンの予測された画像601を示す。これらの例からわかるように、機械学習ベースのグラフィックスパイプラインを使用した予測された画像601は、旧来のGPUのグラフィックスパイプラインを使用して生成されたフォトリアリスティック画像600と知覚的に同様である。これらの例は、本明細書の他の場所で説明されるように、MLグラフィックス処理チップを使用することの様々な利益が、画像品質の著しい低減という犠牲を払わないことを証明する。
【0052】
図7は、特定の実施形態による、グラフィックス処理チップの例示的な処理フローを示す。ステップ710において、グラフィックス処理チップは、レンダリング命令を受信し得る。命令は、中央処理ユニット、メモリモジュールなど、1つまたは複数のオフチップ回路に結合されたインターフェースを通して受信され得る。レンダリング命令は、たとえば、レンダリングされるべきシーンの3Dモデル、光源、および観察者/カメラの観察方向を含み得る。応答して、グラフィックス処理チップは、コントローラを通して、ハードウェアおよび/またはファームウェアにおいて実装されたグラフィックスレンダリングパイプラインに従って、実施されるべき動作をスケジュールし得る。
【0053】
ステップ720において、グラフィックス処理チップは、たとえば、3Dモデルを別の座標系に変換すること、三角形をアセンブルすることを含む、ジオメトリ処理動作を実施すること、可視性テストを実施することなどを行い得る。特定の実施形態では、ジオメトリ処理動作は、デジタル信号プロセッサに割り当てられた固定機能プロセッサ、またはその2つの組合せによって実施され得る。特定の実施形態では、ジオメトリ処理動作は、シーンの可視部を表すために使用される一連の三角形を出力し得る。三角形(またはその頂点)の各々が、色および他の材料特性など、表面特性に関連し得る。
【0054】
ステップ730において、グラフィックス処理チップは、たとえば、各三角形がそこを通って可視であるフラグメントを決定することを含む、ラスタ化動作を実施し得る。特定の実施形態では、ジオメトリ処理動作は、デジタル信号プロセッサに割り当てられた固定機能プロセッサ、またはその2つの組合せによって実施され得る。
【0055】
ステップ740において、グラフィックス処理チップは、たとえば、1つまたは複数のフラグメントについての適切な色を決定するために、1つまたは複数の機械学習モデルを使用してそれらのフラグメント(たとえば、単一のフラグメントまたはフラグメントのタイル)を処理することを含む、シェーディング動作を実施し得る。特定の実施形態では、チップのコントローラは、オンチップデジタル信号プロセッサを使用して実施されるべきシェーディング動作をスケジュールし得る。動作は、前に説明されたように、トレーニングされた機械学習モデルに従って行われ得る。たとえば、フラグメントの色を決定するために、DSPは、トレーニングされたニューラルネットワークに従って、そのフラグメントに関連するデータ(たとえば、観察データ、ライティングデータ、可視表面の色データ、および/または可視表面に関連する材料特性データ)を処理し得る。モデルの出力は、フラグメントについての画像データを計算するために表面色データとともに使用され得る、強度データであり得る。特定の実施形態では、ニューラルネットワークは、入力として、第2のニューラルネットワーク(たとえば、鏡面指数ネットワーク)および照明モデルを使用して生成された強度データをさらにとり得る。たとえば、鏡面指数ネットワークは、鏡面データ(たとえば、鏡面指数)を生成するために、観察データ、ライティングデータ、可視表面の色データ、および/または可視表面に関連する材料特性データのうちの1つまたは複数を処理するように構成され得る。次いで、鏡面データは、照明モデルに従って、強度データを算出するために使用され得る。次いで、この強度データは、関心フラグメントに関連するデータとともに、シェーディングニューラルネットワークに入力され得る。次いで、シェーディングニューラルネットワークは、最終強度データに対応し得る出力を生成し得る。次いで、最終強度データは、フラグメントについての適切な画像データを生成するために、表面の色に適用され得る。
【0056】
ステップ750において、生成された画像データは、グラフィックス処理チップによって出力され得る。たとえば、生成された画像データは、それらがオフチップ回路によって読み取られ得るように、オンチップキャッシュおよび/またはフレームバッファ中に蓄積され得る。たとえば、フレームバッファ中の画像データは、CPUによって読み取られ、クラウドベース配信のためにサーバに送信されるか、または表示のためにディスプレイユニット(たとえば、モニタ、仮想現実ヘッドセット、拡張現実ヘッドセットなど)にフォワーディングされ得る。
【0057】
図8は、グラフィックス処理チップが設置され得る例示的なコンピュータシステム800を示す。特定の実施形態では、1つまたは複数のコンピュータシステム800は、本明細書で説明または示される1つまたは複数の方法の1つまたは複数のステップを実施する。特定の実施形態では、1つまたは複数のコンピュータシステム800は、本明細書で説明または示される機能性を提供する。特定の実施形態では、1つまたは複数のコンピュータシステム800上で稼働しているソフトウェアは、本明細書で説明または示される1つまたは複数の方法の1つまたは複数のステップを実施するか、あるいは本明細書で説明または示される機能性を提供する。特定の実施形態は、1つまたは複数のコンピュータシステム800の1つまたは複数の部分を含む。本明細書では、コンピュータシステムへの言及は、適切な場合、コンピューティングデバイスを包含し得、その逆も同様である。その上、コンピュータシステムへの言及は、適切な場合、1つまたは複数のコンピュータシステムを包含し得る。
【0058】
本開示は、任意の好適な数のコンピュータシステム800を企図する。本開示は、任意の好適な物理的形態をとるコンピュータシステム800を企図する。限定としてではなく例として、コンピュータシステム800は、組込み型コンピュータシステム、システムオンチップ(SOC)、(たとえば、コンピュータオンモジュール(COM)またはシステムオンモジュール(SOM)などの)シングルボードコンピュータシステム(SBC)、デスクトップコンピュータシステム、ラップトップまたはノートブックコンピュータシステム、対話型キオスク、メインフレーム、コンピュータシステムのメッシュ、携帯電話、携帯情報端末(PDA)、サーバ、タブレットコンピュータシステム、拡張/仮想現実デバイス、あるいはこれらのうちの2つまたはそれ以上の組合せであり得る。適切な場合、コンピュータシステム800は、1つまたは複数のコンピュータシステム800を含むか、単一または分散型であるか、複数のロケーションにわたるか、複数のマシンにわたるか、複数のデータセンターにわたるか、あるいは1つまたは複数のネットワーク中の1つまたは複数のクラウド構成要素を含み得るクラウド中に常駐し得る。適切な場合、1つまたは複数のコンピュータシステム800は、実質的な空間的または時間的制限なしに、本明細書で説明または示される1つまたは複数の方法の1つまたは複数のステップを実施し得る。限定としてではなく一例として、1つまたは複数のコンピュータシステム800は、リアルタイムまたはバッチモードで、本明細書で説明または示される1つまたは複数の方法の1つまたは複数のステップを実施し得る。1つまたは複数のコンピュータシステム800は、適切な場合、異なる時間においてまたは異なるロケーションにおいて、本明細書で説明または示される1つまたは複数の方法の1つまたは複数のステップを実施し得る。
【0059】
特定の実施形態では、コンピュータシステム800は、プロセッサ802と、メモリ804と、ストレージ806と、入出力(I/O)インターフェース808と、通信インターフェース810と、バス812とを含む。本開示は、特定の配置において特定の数の特定の構成要素を有する特定のコンピュータシステムを説明し、示すが、本開示は、任意の好適な配置において任意の好適な数の任意の好適な構成要素を有する任意の好適なコンピュータシステムを企図する。
【0060】
特定の実施形態では、本明細書で説明されるグラフィックス処理チップを含み得る、プロセッサ802は、コンピュータプログラムを作り上げる命令など、命令を実行するためのハードウェアを含む。限定としてではなく一例として、命令を実行するために、プロセッサ802は、内部レジスタ、内部キャッシュ、メモリ804、またはストレージ806から命令を取り出し(またはフェッチし)、それらの命令を復号および実行し、次いで、内部レジスタ、内部キャッシュ、メモリ804、またはストレージ806に1つまたは複数の結果を書き込み得る。特定の実施形態では、プロセッサ802は、データ、命令、またはアドレスのための1つまたは複数の内部キャッシュを含み得る。本開示は、適切な場合、任意の好適な数の任意の好適な内部キャッシュを含むプロセッサ802を企図する。限定としてではなく一例として、プロセッサ802は、1つまたは複数の命令キャッシュと、1つまたは複数のデータキャッシュと、1つまたは複数のトランスレーションルックアサイドバッファ(TLB)とを含み得る。命令キャッシュ中の命令は、メモリ804またはストレージ806中の命令のコピーであり得、命令キャッシュは、プロセッサ802によるそれらの命令の取出しを高速化し得る。データキャッシュ中のデータは、プロセッサ802において実行する命令が動作する対象のメモリ804またはストレージ806中のデータのコピー、プロセッサ802において実行する後続の命令によるアクセスのための、またはメモリ804もしくはストレージ806に書き込むための、プロセッサ802において実行された前の命令の結果、あるいは他の好適なデータであり得る。データキャッシュは、プロセッサ802による読取りまたは書込み動作を高速化し得る。TLBは、プロセッサ802のための仮想アドレストランスレーション(virtual-address translation)を高速化し得る。特定の実施形態では、プロセッサ802は、データ、命令、またはアドレスのための1つまたは複数の内部レジスタを含み得る。本開示は、適切な場合、任意の好適な数の任意の好適な内部レジスタを含むプロセッサ802を企図する。適切な場合、プロセッサ802は、1つまたは複数の算術論理ユニット(ALU)を含むか、マルチコアプロセッサであるか、または1つまたは複数のプロセッサ802を含み得る。本開示は、特定のプロセッサを説明し、示すが、本開示は任意の好適なプロセッサを企図する。
【0061】
特定の実施形態では、メモリ804は、プロセッサ802が実行するための命令、またはプロセッサ802が動作する対象のデータを記憶するためのメインメモリを含む。限定としてではなく一例として、コンピュータシステム800は、ストレージ806または(たとえば、別のコンピュータシステム800などの)別のソースからメモリ804に命令をロードし得る。プロセッサ802は、次いで、メモリ804から内部レジスタまたは内部キャッシュに命令をロードし得る。命令を実行するために、プロセッサ802は、内部レジスタまたは内部キャッシュから命令を取り出し、それらの命令を復号し得る。命令の実行中またはその後に、プロセッサ802は、(中間結果または最終結果であり得る)1つまたは複数の結果を内部レジスタまたは内部キャッシュに書き込み得る。プロセッサ802は、次いで、メモリ804にそれらの結果のうちの1つまたは複数を書き込み得る。特定の実施形態では、プロセッサ802は、1つまたは複数の内部レジスタまたは内部キャッシュ中の、あるいは(ストレージ806または他の場所とは対照的な)メモリ804中の命令のみを実行し、1つまたは複数の内部レジスタまたは内部キャッシュ中の、あるいは(ストレージ806または他の場所とは対照的な)メモリ804中のデータのみに対して動作する。(アドレスバスおよびデータバスを各々含み得る)1つまたは複数のメモリバスが、プロセッサ802をメモリ804に結合し得る。バス812は、以下で説明されるように、1つまたは複数のメモリバスを含み得る。特定の実施形態では、1つまたは複数のメモリ管理ユニット(MMU)が、プロセッサ802とメモリ804との間に常駐し、プロセッサ802によって要求されるメモリ804へのアクセスを容易にする。特定の実施形態では、メモリ804は、ランダムアクセスメモリ(RAM)を含む。このRAMは、適切な場合、揮発性メモリであり得る。適切な場合、このRAMは、ダイナミックRAM(DRAM)またはスタティックRAM(SRAM)であり得る。その上、適切な場合、このRAMは、シングルポートまたはマルチポートRAMであり得る。本開示は任意の好適なRAMを企図する。メモリ804は、適切な場合、1つまたは複数のメモリ804を含み得る。本開示は、特定のメモリを説明し、示すが、本開示は任意の好適なメモリを企図する。
【0062】
特定の実施形態では、ストレージ806は、データまたは命令のための大容量ストレージを含む。限定としてではなく一例として、ストレージ806は、ハードディスクドライブ(HDD)、フロッピーディスクドライブ、フラッシュメモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサルシリアルバス(USB)ドライブ、あるいはこれらのうちの2つまたはそれ以上の組合せを含み得る。ストレージ806は、適切な場合、リムーバブルまたは非リムーバブル(または固定)媒体を含み得る。ストレージ806は、適切な場合、コンピュータシステム800の内部または外部にあり得る。特定の実施形態では、ストレージ806は、不揮発性ソリッドステートメモリである。特定の実施形態では、ストレージ806は、読取り専用メモリ(ROM)を含む。適切な場合、このROMは、マスクプログラムROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的書き換え可能ROM(EAROM)、またはフラッシュメモリ、あるいはこれらのうちの2つまたはそれ以上の組合せであり得る。本開示は、任意の好適な物理的形態をとる大容量ストレージ806を企図する。ストレージ806は、適切な場合、プロセッサ802とストレージ806との間の通信を容易にする1つまたは複数のストレージ制御ユニットを含み得る。適切な場合、ストレージ806は、1つまたは複数のストレージ806を含み得る。本開示は、特定のストレージを説明し、示すが、本開示は任意の好適なストレージを企図する。
【0063】
特定の実施形態では、I/Oインターフェース808は、コンピュータシステム800と1つまたは複数のI/Oデバイスとの間の通信のための1つまたは複数のインターフェースを提供する、ハードウェア、ソフトウェア、またはその両方を含む。コンピュータシステム800は、適切な場合、これらのI/Oデバイスのうちの1つまたは複数を含み得る。これらのI/Oデバイスのうちの1つまたは複数は、人とコンピュータシステム800との間の通信を可能にし得る。限定としてではなく一例として、I/Oデバイスは、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカー、スチールカメラ、スタイラス、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、別の好適なI/Oデバイス、またはこれらのうちの2つまたはそれ以上の組合せを含み得る。I/Oデバイスは1つまたは複数のセンサーを含み得る。本開示は、任意の好適なI/Oデバイスと、それらのI/Oデバイスのための任意の好適なI/Oインターフェース808とを企図する。適切な場合、I/Oインターフェース808は、プロセッサ802がこれらのI/Oデバイスのうちの1つまたは複数を駆動することを可能にする1つまたは複数のデバイスまたはソフトウェアドライバを含み得る。I/Oインターフェース808は、適切な場合、1つまたは複数のI/Oインターフェース808を含み得る。本開示は、特定のI/Oインターフェースを説明し、示すが、本開示は任意の好適なI/Oインターフェースを企図する。
【0064】
特定の実施形態では、通信インターフェース810は、コンピュータシステム800と、1つまたは複数の他のコンピュータシステム800または1つまたは複数のネットワークとの間の(たとえば、パケットベース通信などの)通信のための1つまたは複数のインターフェースを提供する、ハードウェア、ソフトウェア、またはその両方を含む。限定としてではなく一例として、通信インターフェース810は、イーサネットまたは他のワイヤベースネットワークと通信するためのネットワークインターフェースコントローラ(NIC)またはネットワークアダプタ、あるいはWI-FIネットワークなどのワイヤレスネットワークと通信するためのワイヤレスNIC(WNIC)またはワイヤレスアダプタを含み得る。本開示は、任意の好適なネットワークと、そのネットワークのための任意の好適な通信インターフェース810とを企図する。限定としてではなく一例として、コンピュータシステム800は、アドホックネットワーク、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、またはインターネットの1つまたは複数の部分、あるいはこれらのうちの2つまたはそれ以上の組合せと通信し得る。これらのネットワークのうちの1つまたは複数の1つまたは複数の部分は、ワイヤードまたはワイヤレスであり得る。一例として、コンピュータシステム800は、(たとえば、BLUETOOTH WPANなどの)ワイヤレスPAN(WPAN)、WI-FIネットワーク、WI-MAXネットワーク、(たとえば、モバイル通信用グローバルシステム(GSM)ネットワークなどの)セルラー電話ネットワーク、または他の好適なワイヤレスネットワーク、あるいはこれらのうちの2つまたはそれ以上の組合せと通信し得る。コンピュータシステム800は、適切な場合、これらのネットワークのいずれかのための任意の好適な通信インターフェース810を含み得る。通信インターフェース810は、適切な場合、1つまたは複数の通信インターフェース810を含み得る。本開示は、特定の通信インターフェースを説明し、示すが、本開示は任意の好適な通信インターフェースを企図する。
【0065】
特定の実施形態では、バス812は、コンピュータシステム800の構成要素を互いに結合する、ハードウェア、ソフトウェア、またはその両方を含む。限定としてではなく一例として、バス812は、アクセラレーテッドグラフィックスポート(AGP)または他のグラフィックスバス、拡張業界標準アーキテクチャ(EISA)バス、フロントサイドバス(FSB)、HYPERTRANSPORT(HT)相互接続、業界標準アーキテクチャ(ISA)バス、INFINIBAND相互接続、ローピンカウント(LPC)バス、メモリバス、マイクロチャネルアーキテクチャ(MCA)バス、周辺構成要素相互接続(PCI)バス、PCI-Express(PCIe)バス、シリアルアドバンストテクノロジーアタッチメント(SATA)バス、ビデオエレクトロニクス規格協会ローカル(VLB)バス、または別の好適なバス、あるいはこれらのうちの2つまたはそれ以上の組合せを含み得る。バス812は、適切な場合、1つまたは複数のバス812を含み得る。本開示は、特定のバスを説明し、示すが、本開示は任意の好適なバスまたは相互接続を企図する。
【0066】
本明細書では、1つまたは複数のコンピュータ可読非一時的記憶媒体は、適切な場合、(たとえば、フィールドプログラマブルゲートアレイ(FPGA)または特定用途向けIC(ASIC)などの)1つまたは複数の半導体ベースまたは他の集積回路(IC)、ハードディスクドライブ(HDD)、ハイブリッドハードドライブ(HHD)、光ディスク、光ディスクドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピーディスケット、フロッピーディスクドライブ(FDD)、磁気テープ、ソリッドステートドライブ(SSD)、RAMドライブ、セキュアデジタルカードまたはドライブ、任意の他の好適なコンピュータ可読非一時的記憶媒体、あるいはこれらのうちの2つまたはそれ以上の任意の好適な組合せを含み得る。コンピュータ可読非一時的記憶媒体は、適切な場合、揮発性、不揮発性、または揮発性と不揮発性との組合せであり得る。
【0067】
本明細書では、「または」は、明確に別段に指示されていない限り、またはコンテキストによって別段に指示されていない限り、包括的であり、排他的ではない。したがって、本明細書では、「AまたはB」は、明確に別段に指示されていない限り、またはコンテキストによって別段に指示されていない限り、「A、B、またはその両方」を意味する。その上、「および」は、明確に別段に指示されていない限り、またはコンテキストによって別段に指示されていない限り、共同と個別の両方である。したがって、本明細書では、「AおよびB」は、明確に別段に指示されていない限り、またはコンテキストによって別段に指示されていない限り、「共同でまたは個別に、AおよびB」を意味する。
【0068】
本開示の範囲は、当業者が理解するであろう、本明細書で説明または示される例示的な実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。本開示の範囲は、本明細書で説明または示される例示的な実施形態に限定されない。その上、本開示は、本明細書のそれぞれの実施形態を、特定の構成要素、要素、特徴、機能、動作、またはステップを含むものとして説明し、示すが、これらの実施形態のいずれも、当業者が理解するであろう、本明細書のどこかに説明または示される構成要素、要素、特徴、機能、動作、またはステップのうちのいずれかの任意の組合せまたは置換を含み得る。さらに、特定の機能を実施するように適応されるか、配置されるか、実施することが可能であるか、実施するように構成されるか、実施することが可能にされるか、実施するように動作可能であるか、または実施するように動作する、装置またはシステムあるいは装置またはシステムの構成要素に対する添付の特許請求の範囲における参照は、その装置、システム、または構成要素が、そのように適応されるか、配置されるか、可能であるか、構成されるか、可能にされるか、動作可能であるか、または動作する限り、その装置、システム、構成要素またはその特定の機能が、アクティブにされるか、オンにされるか、またはロック解除されるか否かにかかわらず、その装置、システム、構成要素を包含する。さらに、本開示は、特定の実施形態を、特定の利点を提供するものとして説明するかまたは示すが、特定の実施形態は、これらの利点のいずれをも提供しないか、いくつかを提供するか、またはすべてを提供し得る。