(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-01-30
(54)【発明の名称】処理ユニットにおけるワークロードベースのクロック調整
(51)【国際特許分類】
G06F 9/50 20060101AFI20230123BHJP
【FI】
G06F9/50 120A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022528262
(86)(22)【出願日】2020-11-20
(85)【翻訳文提出日】2022-07-06
(86)【国際出願番号】 US2020061488
(87)【国際公開番号】W WO2021102252
(87)【国際公開日】2021-05-27
(32)【優先日】2019-11-22
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】マンゲッシュ ピー. ニジャシャー
(72)【発明者】
【氏名】マイケル マントル
(72)【発明者】
【氏名】アシュカン ホセインザデー ナミン
(72)【発明者】
【氏名】ルイ ルニエール
(57)【要約】
グラフィックス処理ユニット(GPU)[102]は、処理ユニットにおいて実行されるプログラムスレッド[104,106]を特定することに基づいてクロックの周波数を調整し、プログラムスレッドは、実行されるワークロード[116,117]に基づいて検出される。特定したプログラムスレッドに基づいてクロック周波数を調整することによって、処理ユニットは、異なるプログラムスレッドの異なる処理要求に適合する。さらに、ワークロードに基づいてプログラムスレッドを特定することによって、処理ユニットは、処理要求に基づいてクロック周波数を適合させ、その結果、処理リソースを節約する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
方法であって、
グラフィックス処理ユニット(GPU)[102]において、複数のコマンド[105,107]を中央処理ユニット(CPU)[101]から受信することであって、前記複数のコマンドは、前記CPUにおいて同時に実行される複数のプログラムスレッド[103,104]に対応付けられており、前記複数のプログラムスレッドの各々は、対応する特定のクロック周波数に対応付けられている、ことと、
前記GPUにおいて、前記複数のコマンドのうち少なくとも1つに基づいて、前記GPUにおいて実行される第1のワークロード[116]を決定することと、
前記第1のワークロードに基づいて、前記CPUにおいて同時に実行される前記複数のプログラムスレッドのうち第1のプログラムスレッドを特定することと、
前記第1のプログラムスレッドを特定したことに応じて、前記GPUのクロック信号を、前記第1のプログラムスレッドに対応付けられた前記特定のクロック周波数に調整することと、を含む、
方法。
【請求項2】
前記第1のプログラムスレッドを特定することは、前記第1のワークロードが第1のワークロード閾値を上回ることに応じて、前記第1のプログラムスレッドを特定することを含む、
請求項1の方法。
【請求項3】
前記GPUにおいて、前記複数のコマンドのうち少なくとも1つの他のコマンドに基づいて、前記第1のワークロードの後に前記GPUにおいて実行される第2のワークロード[117]を決定することと、
前記第2のワークロードに基づいて、前記CPUにおいて同時に実行される前記複数のプログラムスレッドのうち第2のプログラムスレッドを特定することと、
前記第2のプログラムスレッドを特定したことに応じて、前記GPUの前記クロック信号を、前記第1の周波数から、前記第2のプログラムスレッドに対応付けられた前記特定の周波数に調整することと、をさらに含む、
請求項2の方法。
【請求項4】
前記第2のプログラムスレッドを特定することは、前記第2のワークロードが第2のワークロード閾値を下回ることに応じて、前記第2のプログラムスレッドを特定することを含む、
請求項3の方法。
【請求項5】
前記第1の閾値はプログラム可能である、
請求項2の方法。
【請求項6】
前記第1のワークロードを特定することは、前記GPUのスケジューラ[106]において受信した情報に基づいて、前記第1のワークロードを特定することを含む、
請求項1の方法。
【請求項7】
前記第1のワークロードを特定することは、前記GPUのコンピュートユニットのセットにおいて実行するようにスケジュールされたウェーブフロントの数に基づいて、前記第1のワークロードを特定することを含む、
請求項1の方法。
【請求項8】
前記第1のワークロードを特定することは、前記GPUにおいて受信した描画コマンドの種類に基づいて、前記第1のワークロードを特定することを含む、
請求項1の方法。
【請求項9】
前記クロックを調整することは、前記クロックを、第2の周波数から前記第1の周波数へランプさせること(ramping)を含む、
請求項1の方法。
【請求項10】
方法であって、
複数のプログラムスレッド[103,104]のうち第1のプログラムスレッド[103]を、グラフィックス処理ユニット(GPU)[102]において実行される第1のワークロード[116]に基づいて特定することであって、前記GPUは、前記複数のプログラムスレッドの代わりにワークロードを実行しており、前記複数のプログラムスレッドは、中央処理ユニット(CPU)[101]において同時に実行される、ことと、
前記第1のプログラムスレッドを特定したことに応じて、前記GPUのクロックを、前記第1のプログラムスレッドに対応付けられた第1の周波数に調整することと、を含む、
方法。
【請求項11】
前記第1のプログラムスレッドを特定することは、前記第1のワークロードが第1のワークロード閾値を上回ることに応じて、前記第1のプログラムスレッドを特定することを含む、
請求項10の方法。
【請求項12】
前記GPUにおいて実行される第1のワークロードに基づいて、前記複数のプログラムスレッドのうち第2のプログラムスレッド[104]を特定することと、
前記第2のプログラムスレッドを特定したことに応じて、前記GPUの前記クロックを、前記第2のプログラムスレッドに対応付けられた第2の周波数に調整することと、をさらに含む、
請求項11の方法。
【請求項13】
前記クロックを調整することは、前記クロックを、第2の周波数から前記第1の周波数へランプさせること(ramping)を含む、
請求項10の方法。
【請求項14】
グラフィックス処理ユニット(GPU)[102]であって、
複数のコマンド[105,107]を中央処理ユニット(CPU)[101]から受信するスケジューラであって、前記複数のコマンドは、前記CPUにおいて同時に実行される複数のプログラムスレッド[104,106]に対応付けられており、前記複数のスレッドの各々は、対応する特定のクロック周波数に対応付けられている、スケジューラと、
前記複数のコマンドに基づいてワークロード[116,117]を実行するように構成された複数のコンピュートユニット[115]と、
前記複数のコンピュートユニットに対して第1のクロック信号を発生させるクロック制御モジュール[110]と、
クロック周波数調整モジュール[108]と、を備え、
前記クロック周波数調整モジュール[108]は、
前記複数のコンピュートユニットにおいて実行される第1のワークロードを決定することと、
前記第1のワークロードに基づいて、前記CPUにおいて同時に実行される前記複数のプログラムスレッドのうち第1のプログラムスレッドを特定することと、
前記第1のプログラムスレッドを特定したことに応じて、前記クロック信号を、前記第1のプログラムスレッドに対応付けられた前記特定のクロック周波数に調整することと、
を行うように構成されている、
グラフィックス処理ユニット(GPU)[102]。
【請求項15】
前記クロック周波数調整モジュールは、
前記第1のワークロードが第1のワークロード閾値を上回ることに応じて、前記第1のプログラムスレッドを特定するように構成されている、
請求項14のGPU。
【請求項16】
前記クロック周波数調整モジュールは、
前記複数のコンピュートユニットにおいて実行される第2のワークロードを決定することと、
前記第2のワークロードに基づいて、第2のプログラムスレッドを特定することと、
前記第2のプログラムスレッドを特定したことに応じて、前記クロック信号を、前記第1の周波数から、前記第2のプログラムスレッドに対応付けられた第2の周波数へ調整することと、
を行うように構成されている、
請求項15のGPU。
【請求項17】
前記クロック周波数調整モジュールは、
前記第2のワークロードが第2のワークロード閾値を下回ることに応じて、前記第2のプログラムスレッドを特定するように構成されている、
請求項16のGPU。
【請求項18】
前記第1の閾値はプログラム可能である、
請求項15のGPU。
【請求項19】
前記クロック周波数調整モジュールは、前記GPUのコンピュートユニットのセットにおいてスケジュールされたウェーブフロントの数に基づいて、前記第1のワークロードを特定するように構成されている、
請求項14のGPU。
【請求項20】
前記クロック周波数調整モジュールは、前記スケジューラにおいて受信した描画コマンドの数に基づいて、前記第1のワークロードを特定するように構成されている、
請求項14のGPU。
【発明の詳細な説明】
【背景技術】
【0001】
処理システムは、専用の処理ユニットを用いて、処理ユニットがデザインされている特定の動作を実行することが多い。例えば、処理システムは、グラフィックス処理ユニット(GPU)を用いて、処理システムに対するグラフィカル及びベクトル処理動作を実行することができる。場合によっては、処理ユニットは、処理システムにおいて実行される異なるプログラムの代わりに動作を同時に行う。例えば、処理システムは、仮想化コンピューティング環境を実施する場合がある。ここでは、処理システムが1つ以上の中央処理ユニット(CPU)において複数の仮想マシン(VM)を同時に実行する。各VMは、異なるVMの代わりにGPUが動作を同時に実行する役割を果たすように、処理システムのGPUにグラフィカル又はベクトル処理動作の実行をリクエストする。しかし、異なるプログラムは、異なる要件(例えば、異なる電力要件、異なる最大クロック周波数要件等)を有する可能性がある。異なる要件は、異なる処理要求をGPU(又は他の処理ユニット)に課すため、全体として処理システムに悪影響を及ぼす。
【0002】
添付図面を参照することによって、本開示をより良好に理解することができ、その多くの特徴及び利点が当業者に明らかになる。異なる図面で同じ符号を用いる場合には、同様又は同一のアイテムを示す。
【図面の簡単な説明】
【0003】
【
図1】いくつかの実施形態による、実行プログラムスレッドの検出に基づいてクロック周波数を調整するグラフィックス処理ユニット(GPU)を含む処理システムのブロック図である。
【
図2】いくつかの実施形態による、GPUのワークロードの変化に基づいてクロック周波数を調整する
図1のGPUの例を示す図である。
【
図3】いくつかの実施形態による、
図1のGPUのクロック周波数調整モジュールの図である。
【
図4】いくつかの実施形態による、実行プログラムスレッドを検出することに基づいて処理ユニットのクロック周波数を調整する方法のフロー図である。
【発明を実施するための形態】
【0004】
図1~
図4に、中央処理ユニット(CPU)において実行されるプログラムスレッドを特定することに基づいて、グラフィックス処理ユニット(GPU)におけるクロックの周波数を調整するための技術を例示する。プログラムスレッドは、実行されるワークロードに基づいて検出される。特定されたプログラムスレッドに基づいてクロック周波数を調整することによって、処理ユニットは、同時に実行するプログラムの異なる処理要求に適合する。さらに、ワークロードに基づいてプログラムスレッドを特定することによって、処理ユニットは、処理要求に基づいてクロック周波数を適合させ、その結果、処理リソースが節約される。
【0005】
例を用いて説明するために、いくつかの実施形態では、CPUは、2つの異なるプログラム(例えば、2つの異なる仮想マシン)を同時に実行する。プログラムのうち1つのプログラム(プログラム1と呼ぶ)は、例えば、他のプログラム又はシステムとの互換性を維持するために、比較的低い周波数で動作を実行することが要求されるプログラムである。他のプログラム(プログラム2と呼ぶ)は、少なくともある状況では、性能目標を満たすために比較的高い周波数で動作を実行することが要求されるプログラムである。従来、プログラム1及びプログラム2に対する動作を同時に実行するGPUのクロックは、GPUにおいて何れのプログラムの動作が実行されているかに関係なく、異なるクロック周波数のうち高い方に設定される。そのため、プログラム1がその互換性要件に従うためには、さらなるソフトウェア又はハードウェアが必要となる。本明細書における技術を用いて、GPUは、プログラム1及びプログラム2のうち何れが実行されているか、及び、実行プログラムの処理要求が、実行プログラムがその処理要求を満たすためにクロック周波数を調整することが望ましいようなものであるか否かを検出して、それに応じてGPUのクロック周波数を調整する。その結果、GPUは、プログラム1及びプログラム2の各々に対する処理要求を満たし、変化するワークロードに従って動的に満たすため、処理リソースが節約される。
【0006】
さらに、プログラム識別子値又は指定の時間等の静的な条件だけでなく、検出したワークロードに基づいてクロック周波数を変えるため、GPUは、所定のワークロードの要求に基づいて、各プログラムに対する処理仕様を満たすことができる。その結果、プロセッサリソースが節約される。例えば、場合によっては、より高性能のプログラムが比較的軽いワークロードをGPUに与えて、処理仕様がより低いクロック周波数とともに存在できる場合がある。本明細書における技術を用いて、GPUは、対応するプログラムが比較的高い指定クロック周波数に対応付けられている場合であっても、比較的軽いワークロードの下ではクロック信号の周波数をより低い周波数に維持する。その結果、GPUリソースがプログラム仕様を満たすことが要求されていない場合には、GPUリソースが節約される。
【0007】
図を参照すると、
図1に、いくつかの実施形態による、中央処理ユニット(CPU)101とグラフィックス処理ユニット(GPU)102とを含む処理システム100のブロック図を示す。処理システム100は、概して、電子デバイスの代わりにタスクを行うために、命令(コンピュータプログラムとして構成される)を実行するように構成されている。したがって、異なる実施形態では、処理システム100は、例えば、デスクトップ又はラップトップコンピュータ、サーバ、スマートフォン、タブレット、ゲームコンソール等の電子デバイスの一部である。処理システム100は、
図1に示されていない追加のコンポーネント及びモジュールを含んでいる。例えば、いくつかの実施形態では、処理システムは、1つ以上のメモリコントローラ、入出力コントローラ、ネットワークインターフェース等を含んでおり、電子デバイスの代わりにタスクを実行する。
【0008】
CPU101は、概して、複数のプログラム及び対応するプログラムスレッドを同時に実行するように構成されている。本明細書で用いる場合、プログラムスレッドは、個々のプログラム(例えば、オペレーティングシステム、アプリケーションプログラム等)又はマルチスレッドプログラムの個々のスレッドの何れかを指す。図示した例では、CPU101は、2つのプログラムスレッド(プログラム103及びプログラム104と呼ぶ)を同時に実行する。しかし、当然のことながら、
図1に関して説明する技術は、他の実施形態では、N個のプログラム(Nは1よりも大きい整数)を同時に実行する処理システムにおいて実施される。こうして、いくつかの実施形態では、CPU101は、複数の仮想マシンを同時に実行することによって仮想化コンピューティング環境を実施する。プログラム103,104は、異なる仮想マシンによって実行されるプログラムに対応する。例えば、いくつかの実施形態では、プログラム103は、1つの仮想マシンに対応付けられるオペレーティングシステムであり、プログラム104は、処理システムにおいて実行される異なる仮想マシンに対応付けられるオペレーティングシステムである。説明のために、プログラム103,104の各々は、異なる処理仕様(例えば、異なる指定の処理速度、電力消費量仕様等)を有していると仮定する。例えば、いくつかの実施形態では、プログラム103は、処理システムの他のプログラム又はハードウェアコンポーネントに対する後方互換性(backward compatibility)を得るために比較的低い周波数で実行するように指定された「レガシー(legacy)」プログラムであり、一方で、プログラム104は、性能目標を満たすために比較的高い周波数で実行するように指定されたより新しいプログラムである。本明細書でさらに説明するように、GPU102は、プログラム103,104の各々が、その処理仕様に従うように、特定のパラメータ(詳細には、GPU102のクロック周波数)を調整することができる。
【0009】
GPU102は、概して、処理システムに対するグラフィカル及びベクトル処理動作を実行するように構成されている。説明のために、いくつかの実施形態では、プログラム103,104を実行する過程で、CPU101は、特定のコマンド(本明細書ではGPUコマンド(例えば、コマンド105,107)と言う)を生成して、GPU102が特定の動作を実行することをリクエストする。GPUコマンドの例としては、描画コマンド(GPUが表示用に特定のオブジェクトを描くことをリクエストする)、ベクトルコマンド(GPUが特定のベクトル動作を実行することをリクエストする)等が挙げられる。1つ以上のCPUが、実行されるGPUコマンドをGPU102に送る。各コマンドは、プログラム103,104のうち対応するものによって出され、それらに対応付けられている。すなわち、例えば、いくつかの実施形態では、コマンド105は、GPU102がプログラム103の代わりに1つ以上のオブジェクトを描くことをリクエストする描画コマンドであり、コマンド107は、GPU102がプログラム104の代わりに1つ以上のオブジェクトを描くことをリクエストする描画コマンドである。
【0010】
当然のことながら、CPU101は、プログラム103,104を同時に実行する。すなわち、いくつかの実施形態では、CPU101は、プログラム103,104のうち異なるものに対応付けられた異なるコマンドを、実行のためにGPU102に時分割多重化方式で送る。説明のために、いくつかの実施形態では、CPU101は、コマンド105をGPU102に、プログラム103の代わりに実行させるために送り、それに続いてコマンド107を、プログラム104の代わりに実行させるために送り、それに続いて別のコマンド(図示省略)を、プログラム103の代わりに実行させるために送る。本明細書でさらに説明するように、場合によっては、異なるプログラム(したがって、異なるコマンド)は、プログラムが特定の品質又は他の要件(例えば、特定のディスプレイフレームレート)を満たすように、異なる特定の処理要求(例えば、異なる必要なクロック周波数)を有している。GPU102は、コマンドに基づいて発生したワークロードを分析することによって、異なる処理要求を特定し、特定した処理要件に基づいて処理パラメータ(例えば、クロック周波数)を調整する。その結果、GPU102は、固定された処理パラメータ値に基づくのではなく、処理要求及び特定の処理要求の組み合わせに基づいて、処理パラメータを動的に調整する。
【0011】
CPUコマンド(例えば、コマンド105,107)の実行を容易にするために、GPU102は、スケジューラ106と、コンピュートユニット115のセットと、を含む。コンピュートユニット115のセットは、複数のコンピュートユニット(例えばコンピュートユニット118)を含む。各コンピュートユニットは、グラフィックス及びベクトル処理動作を実行するように構成された複数の処理要素(例えば、単一命令、複数データ(SIMD)ユニット、ストリームプロセッサ等)を含む。いくつかの実施形態では、各コンピュートユニットは、処理要素(例えば1つ以上の分岐ユニット、スカラユニット、ベクトルユニット、レジスタファイル等)をサポートするさらなるモジュールを含む。スケジューラ106は、1つ以上のCPUから受信したコマンドに基づいて、コンピュートユニット115のセットにおけるウェーブフロント(wavefronts)の形態で、動作をスケジュールするモジュールである。いくつかの実施形態では、GPU102は、受信したコマンドを1つ以上の動作にデコードするコマンドプロセッサ又は他のモジュールを含み、動作をスケジューリングするためにスケジューラ106に送る。さらに、いくつかの実施形態では、スケジューラ106は、異なるスケジューリングモジュールから構成されており、各スケジューリングモジュールは、GPU102の異なるリソースにおいて動作をスケジュールする。例えば、いくつかの実施形態では、スケジューラ106は、コンピュートユニット115におけるグラフィックス及びベクトル処理動作をスケジュールするスケジューリングモジュール、GPU102のメモリリソースにおけるメモリ動作をスケジュールするスケジューリングモジュール等を含む。
【0012】
コンピュートユニット115(及び他のモジュール)における動作を同期させるために、GPU102は、クロック制御モジュール110を用いてクロック信号CKを生成し、CK信号を各コンピュートユニット115に送る。いくつかの実施形態では、クロック制御モジュール110は、1つ以上の制御ループ(例えば、クロック信号CKの周波数を特定の周波数にロックする周波数ロックループ(FLL))を含む。特定の周波数は、本明細書でさらに説明するように、制御信号を介して調整可能である。具体的には、GPU102は、各プログラムがその処理仕様に従うようにプログラム103,104がGPU102に課した処理要求に基づいてクロック信号CKの周波数を設定するように、クロック制御モジュール110に対する制御信号を設定する。
【0013】
説明のために、受信したコマンド(又はコマンドのセット)に基づくGPU102のリソースの使用全体を、本明細書ではワークロード(例えば、ワークロード116,117)と言う。ワークロードが重いか又は高いほど、用いるGPU102のリソースが多く、一方で、ワークロードが軽いか又は低いほど、用いるGPU102のリソースが少ない。すなわち、プログラム103,104のうちの特定のものによって発生したワークロードは、プログラムが生成したコマンドに基づいている。さらに、プログラムによって発生したワークロードは、概して、そのプログラムに対する処理仕様と相関関係にある。すなわち、例えば、比較的高い実行周波数を有するプログラム(すなわち、迅速に実行するように予想又は指定されたプログラム)は、概して、より重いワークロード(すなわち、実行するためにより多くのリソースが必要なワークロード)を発生させる。対照的に、比較的低い特定の実行周波数を有するプログラムは、より軽いワークロード(すなわち、実行するためにより少ないリソースを必要とするワークロード)を発生させる。
【0014】
異なる特定の実行周波数を有するプログラムを同時に実行させることに適応するために、GPU102は、クロック周波数調整モジュール(CFAM)108を含む。CFAM108は、GPU102の現在のワークロードを示すパラメータをモニタし、その結果、事実上、プログラム103,104のうち何れが現時点でGPU102において実行されているかを検出し、クロック制御モジュール110に制御信号を送って、クロック信号CKの周波数を、検出したプログラムに対する特定のクロック周波数に設定する。CFAM108がモニタするパラメータの例としては、いくつかの実施形態では、指定時間内にコンピュートユニット115においてスケジューラ106がスケジュールしたウェーブフロントの数、指定時間内にGPU102が受信した描画コマンドの数、描画又はディスパッチコマンドの種類、コンパイラが与えるヒント等、又は、これらの任意の組み合わせが挙げられる。モニタしたパラメータがワークロード閾値を上回った場合、CFAM108は、CK信号の周波数を増加させて、より高い特定の周波数F2にする。モニタしたパラメータが指定時間の間、ワークロード閾値を下回ることに応じて、CFAM108は、CK信号のクロック周波数を減少させて、より低い特定の周波数F1にする。いくつかの実施形態では、より高い及びより低い特定の周波数F2,F1は、プログラム103,104によって、対応するプログラムの初期化中に、各プログラムがGPU102に送るコマンド等を介して示される。さらに、いくつかの実施形態では、ワークロード閾値と周波数F1,F2とはプログラム可能な値であり、そのため、プログラマが実行プログラムの性能を所望のレベルに調整することができる。
【0015】
例を用いて説明するために、いくつかの実施形態では、CFAM108がモニタするパラメータは、プログラム103,104の各々から受信されてスケジューラ106によって実行するようにスケジュールされた描画コマンドの数である。指定時間内の描画コマンドの数が指定のワークロード閾値を上回ることに応じて(例えば、100実行サイクルにわたって10を超える描画コマンド)、CFAM108は、より高い特定のクロック周波数に対応付けられるプログラムが実行されており、多くのリソースを要求していると仮定する。それに応じて、CFAM108は、CK信号の周波数を増加させて、より高い特定の周波数F2にする。受信した描画コマンドの数が指定のワークロード閾値を下回ると、CFAM108は、より低い特定の周波数に対応付けられるプログラムが実行されていると仮定する。それに応じて、CFAM108はCK信号の周波数を減少させて、より低い特定の周波数F1にする。
【0016】
別の例として、いくつかの実施形態では、CFAM108がモニタするパラメータは、スケジューラ106によってコンピュートユニット115において実行するようにスケジュールされたウェーブフロントの数である。スケジュールされたウェーブフロントの数がワークロード閾値を上回ることに応じて(例えば、500実行サイクルにわたって100を超えるウェーブフロント)、CFAM108は、より高い特定のクロック周波数に対応付けられるプログラムが実行されており、多くのリソースを要求していると仮定する。それに応じて、CFAM108は、CK信号の周波数を増加させて、より高い特定の周波数F2にする。スケジュールされたウェーブフロントの数が指定のワークロード閾値を下回ると、CFAM108は、より低い特定の周波数に対応付けられるプログラムが実行されていると仮定する。それに応じて、CFAM108は、CK信号の周波数を減少させて、より低い特定の周波数F1にする。
【0017】
他の実施形態では、CFAM108がモニタするパラメータは、特定の種類の描画コマンドの数(例えば、特定のオブジェクト(閾値数の頂点を有するオブジェクト等)を描く描画コマンドの数)である。CFAM108は、コマンド105,107に付属するコマンドパラメータから描画コマンドの種類を判定する。例えば、いくつかの実施形態では、各コマンドは、描かれるオブジェクトの種類、オブジェクトの頂点の数等を示す。他の実施形態では、これらのパラメータは、GPU102のコマンドプロセッサによって特定される。
【0018】
上述した例によって示すように、いくつかの実施形態では、CFAM108は、スケジューラ106において記憶又はモニタされた情報に基づいて、GPUのワークロードを特定する。例えば、いくつかの実施形態では、スケジューラ106は、CPU101から受信した描画コマンドの数、受信した描画コマンドの種類、実行するようにスケジュールされたウェーブフロントの数等、又は、これらの任意の組み合わせを示すデータを記憶するレジスタ又は他のメモリ構造を保持する。記憶情報に基づいて、CFAM108は、GPU102に対するワークロード全体を特定し、本明細書で説明するようにCKクロック信号のクロック周波数を調整する。
【0019】
プログラム識別子値又は指定時間等の静的な条件だけでなく、検出したワークロードに基づいてクロック周波数を変えることによって、GPU102は、各プログラムに対する処理仕様を動的に満たすことができ、その結果、プロセッサリソースが節約される。例えば、場合によっては、より高性能のプログラムが比較的軽いワークロードをGPU102に与える場合があり(例えば、比較的単純な描画コマンドを実行するため)、結果的に、GPU102がCK信号の周波数をより低い周波数F1に維持する。対照的に、GPU102が、プログラム識別子等の静的な条件のみに基づいてクロック周波数を変更した場合、CK信号の周波数がより高い周波数に増加して、相応の性能利点を伴わないであろう。
【0020】
図2は、いくつかの実施形態による、検出されたワークロードに基づいてクロック信号CKの周波数を調整するCFAM108の例を示す
図200を示している。
図200は、時間を表すx軸と、クロック信号CKの周波数を表すy軸と、を示している。さらに、
図200は、時間とともに変化するクロック信号CKの周波数の例を表すプロット201を示している。
【0021】
図2の例では、プログラム103は、F
1と指定されたより低い特定の周波数に関連付けられており、プログラム104は、より高い特定の周波数に関連付けられていると仮定する。プロット201の図示した例では、初期時間202において、GPU102のワークロードは、1つ以上のワークロードパラメータによって示されるように、ワークロード閾値を下回っている。これは、GPU102がプログラム103のためにコマンドを実行している可能性が高いことを示している。したがって、ワークロードがワークロード閾値を下回っていることに応じて、CFAM108は、クロック信号CKの周波数をより低い周波数F
1に設定する。
【0022】
時間202の後の時間203において、GPU102でのワークロードは、ワークロードがワークロード閾値を超えるように増加している。そのため、ワークロードは、GPU102がプログラム104のためにコマンドを実行していることを示している。したがって、ワークロードがワークロード閾値を超えて増加することに応じて、CFAM108は、時間204で周波数がより高い特定の周波数F2に達するまで、クロック信号CKの周波数を増加し始める。図示したように、CFAM108は、時間203でクロック周波数を直ちにF2に設定するのではなく、時間の経過とともに(時間203と時間204との間で)クロック信号を周波数F1から周波数F2にランプ(ramps)する。いくつかの実施形態では、時間203と時間204との間の時間は、50マイクロ秒以下である。クロックを周波数F1から周波数F2にランプさせることにより、GPU102は、実行を停止してコンピュートユニット115からのデータをフラッシュするのではなく、時間203から204の間で動作を実行し続ける。
【0023】
時間204と時間205との間で、GPU102のワークロードはワークロード閾値を上回り、それに応じて、CFAM108は、クロック信号CKの周波数をより高い周波数F2に維持する。時間205で、GPU102のワークロードが閾値を下回る。それに応じて、CFAM108は、クロック信号CKの周波数をランピし始めて、より低い周波数F1に戻る。いくつかの実施形態では、CFAM108は、ヒステリシスを使用して、ワークロード閾値の周りの短い変動域がクロック信号CKの周波数に頻繁な調整を引き起こすのを防ぐ。例えば、いくつかの実施形態では、CFAM108は、GPU102のワークロードが特定の期間において閾値を超えていることに応じて、クロック信号周波数の調整を開始する。
【0024】
図3は、いくつかの実施形態による、CFAM108の例を示す図である。図示した例では、CFAM108は、制御モジュール320と、一組のプログラム周波数レジスタ322と、一組のワークロード閾値レジスタ324と、を含む。プログラム周波数レジスタ322は、GPU102の処理システムで実行される各プログラムの周波数値を格納する一組のプログラム可能なレジスタである。いくつかの実施形態では、実行中の各プログラムは、デバイスドライバを介してGPU102にコマンドを送信する。プログラムが処理システムで実行を開始すると、プログラムは、プログラムに特定の実行周波数を示すデバイスドライバ周波数情報を送信する。それに応じて、デバイスドライバは、プログラム用の特定の実行周波数で、プログラム周波数レジスタ322のうち対応する1つをプログラムする。
【0025】
ワークロード閾値レジスタ324は、GPU102の処理システムで実行される各プログラムのワークロード閾値を格納する一組のプログラム可能なレジスタである。いくつかの実施形態では、実行中の各プログラムは、ワークロードプロファイルに関連付けられており、プログラムによって生成されると予想されるワークロードを示している。いくつかの実施形態では、ワークロードプロファイルは、プログラムの開発中にソフトウェア開発者によって生成される。他の実施形態では、ワークロードプロファイルは、プログラムが実行される最初のN回の間にGPU102によって開発され、ここで、Nは整数である。例えば、プログラムが実行される最初のN回、GPU102は、パフォーマンスモニタ(図示省略)を使用して、プログラムのために実行がスケジューリングされているウェーブフロントの数、プログラムのためにCPU101が発行する描画コマンドの数等のように、プログラムによって生成されるワークロードを測定する。制御モジュール320は、プログラムの平均ワークロード(例えば、プログラムによって生成されるウェーブフロントの平均数又は描画コマンドの平均数、或いは、それらの組み合わせ)を示すワークロード閾値を生成し、ワークロード閾値をワークロード閾値レジスタの324の対応する1つに格納する。
【0026】
動作中、少なくとも2つのプログラムがGPU102の処理システムで同時に実行されている場合、制御モジュール320は、指定時間内にスケジューリングされたウェーブフロントの数又は受信した描画コマンドの数等の情報をスケジューラ106から受信する。制御モジュール320は、ワークロード情報を、ワークロード閾値レジスタ324に格納されたワークロード閾値と比較する。ワークロード閾値を超えたことに応じて、制御モジュール320は、プログラムが超過した閾値に関連付けられていることを決定し、プログラム周波数レジスタ322からプログラムのプログラム周波数を取得する。次に、制御モジュール320は、制御信号をクロック制御モジュール110に送信して、CKクロック信号の周波数を、取得されたプログラム周波数に調整する。
【0027】
ワークロード情報が、GPUワークロードがワークロード閾値を下回ったことを示していることに応じて、制御モジュール320は、ワークロード閾値レジスタ324に格納された次に低いワークロード閾値に関連付けられたプログラムを決定する。制御モジュール320は、識別されたプログラムのプログラム周波数をプログラム周波数レジスタ322から取得し、制御信号をクロック制御モジュール110に送信して、CKクロック信号の周波数を、取得されたプログラム周波数に調整する。
【0028】
図4は、いくつかの実施形態による、検出されたワークロードによって示される実行中のプログラムを識別することに基づいて、処理ユニットでクロック信号の周波数を設定する、方法400のフロー図である。説明のために、方法400は、
図1のGPU102での例示的な実装に関して説明されるが、他の実施形態では、方法400は、他の処理ユニット及び他の処理システムで実施されることが理解されよう。フロー図を参照すると、ブロック402で、GPU102は、処理システムで実行されている各プログラムのワークロード閾値を決定する。上記のように、いくつかの実施形態では、実行中の各プログラムは、プログラムの開発中に生成されたワークロードプロファイルに基づいて、初期化時にワークロード閾値を提供する。他の実施形態では、GPU102は、プログラムが実行される最初のN回の間にプログラムによって生成される平均ワークロードを決定することによって、実行中のプログラムのワークロード閾値を識別する。さらに他の実施形態では、GPU102は、プログラムが実行される毎に実行中のプログラムによって生成されるワークロードを記録し、プログラムが実行された最後のM回にわたってプログラムによって生成される平均ワークロードを決定することによってワークロード閾値を決定するように構成されており、ここで、Mは整数である。GPU102は、ワークロード閾値レジスタ324の対応するレジスタにワークロード閾値を記録する。
【0029】
ブロック404で、GPU102は、処理システムで同時に実行されているプログラムのために特定のクロック周波数を決定する。上述したように、いくつかの実施形態では、特定のクロック周波数は、デバイスドライバを介して各実行中のプログラムによってGPU102に提供される。GPU102は、特定のクロック周波数を、プログラム周波数レジスタ322のうち対応するものに格納する。
【0030】
ブロック406で、CFAM108は、指定時間内にコンピュートユニット115でスケジューリングされたウェーブフロントの数、GPU102によって受信された描画コマンドの数等のような、スケジューラ106によって提供された情報に基づいて、GPU102のワークロードを監視する。ブロック408で、CFAM108は、ワークロードがワークロードレジスタ324に格納されたワークロード閾値のうち1つを超えたかどうかを決定する。超えていない場合、方法はブロック406に戻り、CFAM108は、現在の周波数でCKクロック信号のクロック速度を維持する。
【0031】
ブロック408で、CFAM108が、ワークロードがワークロード閾値を超えたと決定した場合、CFAM108は、超過した閾値に関連付けられたプログラムを識別し、さらに、プログラム周波数レジスタ322に格納されたプログラムの特定のプログラム周波数を決定する。ブロック410で、CFAM108は、制御信号をクロック制御モジュール110に送信して、CKクロック信号の周波数を特定のプログラム周波数に調整する。
【0032】
方法フローはブロック412に移り、CFAM108は、スケジューラ106によって提供された情報に基づいてGPU102のワークロードを監視し続ける。ブロック414で、CFAM108は、ワークロードがワークロードレジスタ324に格納されたワークロード閾値を下回ったかどうかを決定する。下回っていない場合、方法はブロック412に戻り、CFAM108は、現在の周波数でCKクロック信号のクロック速度を維持する。ワークロードがワークロード閾値を下回ることに応じて、方法フローはブロック416に移り、CFAM108は、制御信号をクロック制御モジュール110に送信して、CKクロック信号の周波数を初期のより低い周波数に戻す。方法フローはブロック406に戻り、CFAM108はGPU102のワークロードを監視し続ける。
【0033】
いくつかの実施形態では、方法は、グラフィックス処理ユニット(GPU)で、中央処理ユニット(CPU)から複数のコマンドを受信することであって、複数のコマンドはCPUで同時に実行されている複数のプログラムスレッドに関連付けられており、複数のスレッドの各々は、対応する特定のクロック周波数に関連付けられている、ことと、GPUで、複数のコマンドのうち少なくとも1つに基づいて、GPUで実行される第1のワークロードを決定することと、第1のワークロードに基づいて、CPUで同時に実行されている複数のプログラムスレッドのうち第1のプログラムスレッドを識別することと、第1のプログラムスレッドを識別したことに応じて、GPUのクロック信号を第1のプログラムスレッドに関連付けられた特定のクロック周波数に調整することと、を含む。一態様では、第1のプログラムスレッドを識別することは、第1のワークロードが第1のワークロード閾値を超えたことに応じて、第1のプログラムスレッドを識別することを含む。
【0034】
一態様では、この方法は、GPUで、複数のコマンドのうち少なくとも1つの他のコマンドに基づいて、第1のワークロードの後にGPUで実行される第2のワークロードを決定することと、第2のワークロードに基づいて、CPUで同時に実行されている複数のプログラムスレッドのうち第2のプログラムスレッドを識別することと、第2のプログラムスレッドを識別したことに応じて、GPUのクロック信号を、第1の周波数から第2のプログラムスレッドに関連付けられた特定の周波数に調整することと、を含む。別の態様では、第2のプログラムスレッドを識別することは、第2のワークロードが第2のワークロード閾値を下回っていることに応じて、第2のプログラムスレッドを識別することを含む。また別の態様では、第1の閾値はプログラム可能である。さらに別の態様では、第1のワークロードを識別することは、GPUのスケジューラで受信した情報に基づいて、第1のワークロードを識別することを含む。
【0035】
一態様では、第1のワークロードを識別することは、GPUの一組の計算ユニットで実行するようにスケジューリングされたウェーブフロントの数に基づいて、第1のワークロードを識別することを含む。別の態様では、第1のワークロードを識別することは、GPUで受信した描画コマンドのタイプに基づいて、第1のワークロードを識別することを含む。別の態様では、クロックの調整は、第2の周波数から第1の周波数へクロックをランプすることを含む。
【0036】
いくつかの実施形態では、方法は、グラフィックス処理ユニット(GPU)で実行される第1のワークロードに基づいて、複数のプログラムスレッドのうち第1のプログラムスレッドを識別することであって、GPUは、複数のプログラムスレッドのためにワークロードを実行しており、複数のプログラムスレッドは、中央処理ユニット(CPU)で同時に実行される、ことと、第1のプログラムスレッドを識別したことに応じて、GPUのクロックを、第1のプログラムスレッドに関連付けられた第1の周波数に調整することと、を含む。一態様では、第1のプログラムスレッドを識別することは、第1のワークロードが第1のワークロード閾値を超えていることに応じて、第1のプログラムスレッドを識別することを含む。別の態様では、この方法は、GPUで実行される第1のワークロードに基づいて、複数のプログラムスレッドのうち第2のプログラムスレッドを識別することと、第2のプログラムスレッドを識別したことに応じて、GPUのクロックを、第2のプログラムスレッドに関連付けられた第2の周波数に調整することと、を含む。さらに別の態様では、クロックの調整は、第2の周波数から第1の周波数へクロックをランプすることを含む。
【0037】
いくつかの実施形態では、グラフィックス処理ユニット(GPU)は、中央処理ユニット(CPU)から複数のコマンドを受信するスケジューラであって、複数のコマンドは、CPUで同時に実行される複数のプログラムスレッドに関連付けられており、複数のスレッドの各々は、対応する特定のクロック周波複数のコマンドに関連付けられている、スケジューラと、複数のコマンドに基づいてワークロードを実行するように構成された複数の計算ユニットと、複数の計算ユニットのための第1のクロック信号を生成するクロック制御モジュールと、クロック周波数調整モジュールであって、複数の計算ユニットで実行される第1のワークロードを決定し、第1のワークロードに基づいて、CPUで同時に実行される複数のプログラムスレッドの第1のプログラムスレッドを識別し、第1のプログラムスレッドを識別したことに応じて、クロック信号を、第1のプログラムスレッドに関連付けられた指定されたクロック周波数に調整するように構成された、クロック周波数調整モジュールと、を含む。一態様では、クロック周波数調整モジュールは、第1のワークロードが第1のワークロード閾値を超えることに応じて、第1のプログラムスレッドを識別するように構成されている。
【0038】
一態様では、クロック周波数調整モジュールは、複数の計算ユニットで実行される第2のワークロードを決定し、第2のワークロードに基づいて、第2のプログラムスレッドを識別し、第2のプログラムスレッドを識別したことに応じて、クロック信号を、第1の周波数から第2のプログラムスレッドに関連付けられた第2の周波数に調整するように構成されている。別の態様では、クロック周波数調整モジュールは、第2のワークロードが第2のワークロード閾値を下回っていることに応じて、第2のプログラムスレッドを識別するように構成されている。また別の態様では、第1の閾値はプログラム可能である。さらに別の態様では、クロック周波数調整モジュールは、GPUの一組の計算ユニットでスケジューリングされたウェーブフロントの数に基づいて、第1のワークロードを識別するように構成されている。別の態様では、クロック周波数調整モジュールは、スケジューラで受信した描画コマンドの数に基づいて、第1のワークロードを識別するように構成されている。
【0039】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
【0040】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【0041】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0042】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【手続補正書】
【提出日】2022-07-21
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
方法であって、
グラフィックス処理ユニット(GPU)において
中央処理ユニット(CPU)から複数のコマンドを受信したことに応じて、前記GPUにおいて、前記複数のコマンドのうち少なくとも1つに基づいて、前記GPUにおいて実行される第1のワークロードを決定することと、
前記第1のワークロードに基づいて、前記CPUにおいて同時に実行され
る複数のプログラムスレッドのうち第1のプログラムスレッドを特定することと、
前記第1のプログラムスレッドを特定したことに応じて、前記GPUのクロック信号を、前記第1のプログラムスレッドに対応付けられ
た特定のクロック周波数に調整することと、を含む、
方法。
【請求項2】
前記第1のプログラムスレッドを特定することは、前記第1のワークロードが第1のワークロード閾値を上回ることに応じて、前記第1のプログラムスレッドを特定することを含む、
請求項1の方法。
【請求項3】
前記GPUにおいて、前記複数のコマンドのうち少なくとも1つの他のコマンドに基づいて、前記第1のワークロードの後に前記GPUにおいて実行される第2のワークロードを決定することと、
前記第2のワークロードに基づいて、前記CPUにおいて同時に実行される前記複数のプログラムスレッドのうち第2のプログラムスレッドを特定することと、
前記第2のプログラムスレッドを特定したことに応じて、前記GPUの前記クロック信号を、前記第1の
プログラムスレッドに対応付けられた特定のクロック周波数から、前記第2のプログラムスレッドに対応付けられ
た特定の
クロック周波数に調整することと、をさらに含む、
請求項2の方法。
【請求項4】
前記第2のプログラムスレッドを特定することは、前記第2のワークロードが第2のワークロード閾値を下回ることに応じて、前記第2のプログラムスレッドを特定することを含む、
請求項3の方法。
【請求項5】
前記第1の
ワークロード閾値はプログラム可能である、
請求項2の方法。
【請求項6】
前記第1のワークロードを
決定することは、前記GPUのスケジューラにおいて受信した情報に
さらに基づいて、前記第1のワークロードを
決定することを含む、
請求項1の方法。
【請求項7】
前記第1のワークロードを
決定することは、前記GPUのコンピュートユニットのセットにおいて実行するようにスケジュールされたウェーブフロントの数に
さらに基づいて、前記第1のワークロードを
決定することを含む、
請求項1の方法。
【請求項8】
前記第1のワークロードを
決定することは、前記GPUにおいて受信した描画コマンドの種類に
さらに基づいて、前記第1のワークロードを
決定することを含む、
請求項1の方法。
【請求項9】
前記
GPUのクロック
信号を調整することは、前記クロック
信号を、第2の周波数から前記第1の
プログラムスレッドに対応付けられた特定のクロック周波数へランプさせること(ramping)を含む、
請求項1の方法。
【請求項10】
グラフィックス処理ユニット(GPU)であって、
複数のコマンドを中央処理ユニット(CPU)から受信するスケジューラであって、前記複数のコマンドは、前記CPUにおいて同時に実行される複数のプログラムスレッドに対応付けられ
ている、スケジューラと、
前記複数のコマンドに基づいてワークロードを実行するように構成された複数のコンピュートユニットと、
前記複数のコンピュートユニットに対して第1のクロック信号を発生させるクロック制御モジュールと、
クロック周波数調整モジュールと、を備え、
前記クロック周波数調整モジュールは、
前記複数のコンピュートユニットにおいて実行される第1のワークロードを決定することと、
前記第1のワークロードに基づいて、前記CPUにおいて同時に実行される前記複数のプログラムスレッドのうち第1のプログラムスレッドを特定することと、
前記第1のプログラムスレッドを特定したことに応じて、前記
第1のクロック信号を、前記第1のプログラムスレッドに対応付けられ
た特定のクロック周波数に調整することと、
を行うように構成されている、
グラフィックス処理ユニット(GPU)。
【請求項11】
前記クロック周波数調整モジュールは、
前記第1のワークロードが第1のワークロード閾値を上回ることに応じて、前記第1のプログラムスレッドを特定するように構成されている、
請求項
10のGPU。
【請求項12】
前記クロック周波数調整モジュールは、
前記複数のコンピュートユニットにおいて実行される第2のワークロードを決定することと、
前記第2のワークロードに基づいて、第2のプログラムスレッドを特定することと、
前記第2のプログラムスレッドを特定したことに応じて、前記
第1のクロック信号を、前記第1の
プログラムスレッドに対応付けられた特定のクロック周波数から、前記第2のプログラムスレッドに対応付けられた第2の
特定のクロック周波数へ調整することと、
を行うように構成されている、
請求項
11のGPU。
【請求項13】
前記クロック周波数調整モジュールは、
前記第2のワークロードが第2のワークロード閾値を下回ることに応じて、前記第2のプログラムスレッドを特定するように構成されている、
請求項
12のGPU。
【請求項14】
前記クロック周波数調整モジュールは、前記GPUのコンピュートユニットのセットにおいてスケジュールされたウェーブフロントの数に基づいて、前記第1のワークロードを
決定するように構成されている、
請求項
10のGPU。
【請求項15】
前記クロック周波数調整モジュールは、前記スケジューラにおいて受信した描画コマンドの数に基づいて、前記第1のワークロードを
決定するように構成されている、
請求項
10のGPU。
【国際調査報告】