(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-09-12
(54)【発明の名称】性能保証された電力管理を用いるリアルタイムGPUレンダリング
(51)【国際特許分類】
G06F 1/3228 20190101AFI20220905BHJP
G06F 1/3218 20190101ALI20220905BHJP
G06F 1/324 20190101ALI20220905BHJP
G06F 1/3296 20190101ALI20220905BHJP
【FI】
G06F1/3228
G06F1/3218
G06F1/324
G06F1/3296
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2021573929
(86)(22)【出願日】2020-05-11
(85)【翻訳文提出日】2022-02-08
(86)【国際出願番号】 IB2020054450
(87)【国際公開番号】W WO2020260966
(87)【国際公開日】2020-12-30
(32)【優先日】2019-06-28
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(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)【発明者】
【氏名】トゥン チュアン クォン
【テーマコード(参考)】
5B011
【Fターム(参考)】
5B011EA04
5B011EA05
5B011EB03
5B011EB09
5B011KK00
5B011LL02
5B011LL13
(57)【要約】
性能保証された電力管理を用いるリアルタイムビデオレンダリングを実行するためのシステム、装置及び方法が開示される。システムは、少なくとも、ソフトウェアドライバと、電力管理ユニットと、レンダリングタスクを実行する複数の処理要素と、を含む。システムは、実行される必要のあるレンダリングタスクに対応する入力を受信する。ソフトウェアドライバは、受信した入力と、それらが対応するレンダリングタスクの数と、を監視する。また、ソフトウェアドライバは、次のビデオ同期信号までの残り時間を監視する。ソフトウェアドライバは、次のビデオ同期信号の前に現在のフレームのレンダリングタスクを終了するのに十分な時間を引き続き確保しながら消費電力を最小にする性能設定を決定する。そして、ソフトウェアドライバは、複数の処理要素が現在のフレームのレンダリングタスクを実行する際に、この性能設定を電力管理ユニットに提供させる。
【選択図】
図5
【特許請求の範囲】
【請求項1】
1つ以上の処理要素と、
電力管理ユニットと、
制御ユニットと、を備え、
前記制御ユニットは、
レンダリングされている現在のフレームに対して実行されるのを待っているレンダリングタスクの数を表す入力を監視することと、
次のビデオ同期信号までの残り時間を監視することと、
前記次のビデオ同期信号までの残り時間内で1つ以上のレンダリングタスクを完了させるとともに電力消費目標を達成するための所定の性能設定を選択することと、
前記所定の性能設定の指標を前記電力管理ユニットに伝達して、前記1つ以上の処理要素を前記所定の性能設定で動作させることと、
を行うように構成されている、
システム。
【請求項2】
前記制御ユニットは、前記次のビデオ同期信号までの残り時間が減少している間により多くのレンダリングタスクがキューに入れられたことを前記入力が示すと判別したことに応じて、前記所定の性能設定を高めるように構成されている、
請求項1のシステム。
【請求項3】
前記制御ユニットは、前記次のビデオ同期信号までの残り時間内で前記1つ以上のレンダリングタスクを完了することができる可能な限り低い性能設定を選択するように構成されている、
請求項1のシステム。
【請求項4】
前記制御ユニットは、レンダリングタスクの数と前記残り時間との組み合わせを前記所定の性能設定にマッピングするように構成されている、
請求項1のシステム。
【請求項5】
前記制御ユニットは、前記レンダリングタスクの数と前記残り時間との組み合わせを前記所定の性能設定にマッピングするためのテーブルを保持するように構成されており、前記テーブルの各エントリは、所定のレンダリングタスクの数と所定の残り時間とを、対応する性能設定にマッピングする、
請求項4のシステム。
【請求項6】
前記入力は、バーチャルリアリティ環境でのユーザの動きを含む、
請求項1のシステム。
【請求項7】
前記制御ユニットは、
前記レンダリングタスクの数が閾値よりも大きいと判別したことに応じて、前記1つ以上の処理要素を比較的高い性能設定で動作させることであって、前記閾値は、前記次のビデオ同期信号までの残り時間に基づいている、ことと、
前記レンダリングタスクの数が前記閾値以下であると判別したことに応じて、前記1つ以上の処理要素を比較的低い性能設定で動作させることと、
を行うように構成されている、
請求項1のシステム。
【請求項8】
制御ユニットが、レンダリングされている現在のフレームに対して実行されるのを待っているレンダリングタスクの数を表す入力を監視することと、
次のビデオ同期信号までの残り時間を監視することと、
前記次のビデオ同期信号までの残り時間内で1つ以上のレンダリングタスクを完了させるとともに電力消費目標を達成するための所定の性能設定を選択することと、
前記所定の性能設定の指標を電力管理ユニットに伝達して、1つ以上の処理要素を前記所定の性能設定で動作させることと、を含む、
方法。
【請求項9】
前記次のビデオ同期信号までの残り時間が減少している間により多くのレンダリングタスクがキューに入れられたことを前記入力が示すと判別したことに応じて、前記所定の性能設定を高めることをさらに含む、
請求項8の方法。
【請求項10】
前記次のビデオ同期信号までの残り時間内で前記1つ以上のレンダリングタスクを完了することができる可能な限り低い性能設定を選択することをさらに含む、
請求項8の方法。
【請求項11】
レンダリングタスクの数と前記残り時間との組み合わせを前記所定の性能設定にマッピングすることをさらに含む、
請求項8の方法。
【請求項12】
前記レンダリングタスクの数と前記残り時間との組み合わせを前記所定の性能設定にマッピングするためのテーブルを保持することをさらに含み、前記テーブルの各エントリは、所定のレンダリングタスクの数と所定の残り時間とを、対応する性能設定にマッピングする、
請求項11の方法。
【請求項13】
前記入力は、バーチャルリアリティ環境でのユーザの動きを含む、
請求項8の方法。
【請求項14】
前記レンダリングタスクの数が閾値よりも大きいと判別したことに応じて、前記1つ以上の処理要素を比較的高い性能設定で動作させることであって、前記閾値は、前記次のビデオ同期信号までの残り時間に基づいている、ことと、
前記レンダリングタスクの数が前記閾値以下であると判別したことに応じて、前記1つ以上の処理要素を比較的低い性能設定で動作させることと、をさらに含む、
請求項8の方法。
【請求項15】
第1のプロセッサと、
第2のプロセッサと、
プログラム命令を記憶するメモリと、を備え、
前記プログラム命令は、前記第1のプロセッサによって実行されると、
レンダリングされている現在のフレームに対して実行されるのを待っているレンダリングタスクの数を表す入力を監視することと、
次のビデオ同期信号までの残り時間を監視することと、
前記次のビデオ同期信号までの残り時間内で1つ以上のレンダリングタスクを完了させるとともに電力消費目標を達成するための所定の性能設定を選択することと、
前記第2のプロセッサを前記所定の性能設定で動作させることと、
を前記第1のプロセッサに行わせる、
装置。
【請求項16】
前記プログラム命令は、前記第1のプロセッサによって実行されると、
前記次のビデオ同期信号までの残り時間が減少している間により多くのレンダリングタスクがキューに入れられたことを前記入力が示すと判別したことに応じて、前記所定の性能設定を高めることを前記第1のプロセッサに行わせる、
請求項15の装置。
【請求項17】
前記プログラム命令は、前記第1のプロセッサによって実行されると、
前記次のビデオ同期信号までの残り時間内で前記1つ以上のレンダリングタスクを完了することができる可能な限り低い性能設定を選択することを前記第1のプロセッサに行わせる、
請求項15の装置。
【請求項18】
前記プログラム命令は、前記第1のプロセッサによって実行されると、
レンダリングタスクの数と前記残り時間との組み合わせを前記所定の性能設定にマッピングすることを前記第1のプロセッサに行わせる、
請求項15の装置。
【請求項19】
前記プログラム命令は、前記第1のプロセッサによって実行されると、
前記レンダリングタスクの数と前記残り時間との組み合わせを前記所定の性能設定にマッピングするためのテーブルを保持することを前記第1のプロセッサに行わせ、前記テーブルの各エントリは、所定のレンダリングタスクの数と所定の残り時間とを対応する性能設定にマッピングする、
請求項18の装置。
【請求項20】
前記プログラム命令は、前記第1のプロセッサによって実行されると、
前記レンダリングタスクの数が閾値よりも大きいと判別したことに応じて、前記第2のプロセッサを比較的高い性能設定で動作させることであって、前記閾値は、前記次のビデオ同期信号までの残り時間に基づいている、ことと、
前記レンダリングタスクの数が前記閾値以下であると判別したことに応じて、前記第2のプロセッサを比較的低い性能設定で動作させることと、
を前記第1のプロセッサに行わせる、
請求項15の装置。
【発明の詳細な説明】
【背景技術】
【0001】
(関連技術の説明)
様々なアプリケーションが、画像又はビデオコンテンツのリアルタイムレンダリングに依存している。例えば、クラウドゲーム、バーチャルリアリティ及びゲーム観戦は、コンテンツのリアルタイムレンダリングを必要とするアプリケーションの一例である。ビデオフレームのリアルタイムレンダリングは、多くの場合、大量の電力を消費する相当量の処理リソースを使用する。リアルタイムレンダリング環境では、生成された画像フレームの遅延を制御しなければならないという要件と、フレームの欠落を回避したいという要望とにより、電力管理に特別な要求を課している。一方では、遅延を最小限に抑え、画像のレンダリングが時間通りに完了することを保証するために、可能な限り高いクロックレートで実行されることが望ましい。他方では、処理ハードウェアが過熱し始めたり、温度閾値に近づいたりすると、ハードウェアがクロックレートを低下させ、その結果、フレームの欠落がもたらされる。これらの問題は、電力又は熱に制約のあるプラットフォームでは特に困難である。
【0002】
様々なフレームベースのリアルタイムアプリケーションは、ゲームアプリケーションだけでなく、各フレームに複数のジョブを投入し、この処理を一定又は不定のフレームレートで繰り返す他のタイプのレンダリングアプリケーションも含む。フレーム当たりの処理ユニットのワークロード(例えば、ジョブの数、ジョブ当たりの時間、ジョブ当たりのリソース)は、アプリケーションのランタイム動作に応じて、複雑さや計算需要が変化し得る。このようなアプリケーションでは、処理ユニットが、フレームの実行を十分に早く完了させて、フレームをタイミングよく使用(例えば、表示又は伝送)できるようにするか、又は、処理ユニットが、フレームの実行を完了させるのに遅れ、その結果、フレームがドロップされ、若しくは、消費されるのが遅くなるか、の何れかである。このような遅延は、ユーザエクスペリエンスに悪影響を与える。
【0003】
上記の観点から、性能保証された電力管理を用いるリアルタイムビデオレンダリングを管理するための改良された方法が望まれている。
【0004】
添付図面と併せて以下の説明を参照することによって、本明細書に記載される方法及びメカニズムの利点をより良く理解することができる。
【図面の簡単な説明】
【0005】
【
図1】コンピューティングシステムの一実施形態のブロック図である。
【
図2】コンピューティングシステムの一実施形態のブロック図である。
【
図3】キュー占有率に基づいて、レンダリングされるフレームの性能設定を選択する一実施形態のタイミング図である。
【
図4】一実施形態による、入力タスク数及び残り時間を性能設定にマッピングするテーブルの一例を示す図である。
【
図5】性能保証された電力管理を用いるリアルタイムビデオレンダリングを行う方法の一実施形態を示す一般化されたフロー図である。
【
図6】アプリケーションタイプに基づいて処理ハードウェアの性能設定を制御する方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【0006】
以下の説明では、本明細書で提示される方法及びメカニズムの十分な理解をもたらすために、多数の具体的な詳細が示されている。しかしながら、当業者であれば、これらの具体的な詳細が無くても、様々な実施形態を実施し得ることを認識するはずである。いくつかの例では、本明細書で説明するアプローチを曖昧にすることを避けるために、周知の構造、構成要素、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図面に示される要素は、必ずしも縮尺通りに描かれていないことを理解されたい。例えば、いくつかの要素の寸法が、他の要素と比べて誇張されていてもよい。
【0007】
ユースケース駆動型のイベントベースフィードフォワード制御ウィンドウ(use case driven event-based feed-forward control window)に基づく性能保証された電力管理ガバナ(power management governor)を用いるリアルタイムGPUレンダリングを実施するためのシステム、装置及び方法が本明細書に開示されている。一実施形態では、システムは、少なくとも、ソフトウェアドライバと、電力管理ユニットと、レンダリングタスクを実行するための1つ以上の処理要素と、を含む。システムは、実行される必要のあるレンダリングタスクに対応する入力を受け取る。ソフトウェアドライバは、受け取った入力の数、及び、それらが対応するレンダリングタスクの数を監視する。また、ソフトウェアドライバは、次のビデオ同期信号までの残り時間を監視する。ソフトウェアドライバは、次のビデオ同期信号までに現在のフレームのレンダリングタスクを終了するのに十分な時間を確保しながら、消費電力を最小にする性能設定を決定する。そして、ソフトウェアドライバは、複数の処理要素が現在のビデオフレームのレンダリングタスクを実行する際に、電力管理ユニットにこの性能設定を提供させる。
【0008】
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、少なくとも、プロセッサ105A~105Nと、制御ユニット110と、入力/出力(I/O)インターフェース120と、バス125と、メモリコントローラ(複数可)130と、ネットワークインターフェース135と、メモリデバイス(複数可)140と、電源145と、電力管理ユニット150と、ディスプレイコントローラ160と、ディスプレイ165と、を含む。他の実施形態では、コンピューティングシステム100は他の構成要素を含み、及び/又は、コンピューティングシステム100は異なる構成とされる。プロセッサ105A~105Nは、システム100に含まれる任意の数のプロセッサを表しており、プロセッサの数は実施形態によって異なる。
【0009】
一実施形態では、プロセッサ105Aは、中央処理装置(CPU)等の汎用プロセッサである。一実施形態では、プロセッサ105Nは、高度な並列アーキテクチャを有するデータ並列プロセッサである。データ並列プロセッサには、グラフィックスプロセッシングユニット(GPU)、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)等が含まれる。一実施形態では、プロセッサ105Nは、ディスプレイ165まで送られるようにディスプレイコントローラ160にピクセルを供給するGPUである。いくつかの実施形態では、プロセッサ105A~105Nは、複数のデータ並列プロセッサを含む。一実施形態では、制御ユニット110は、プロセッサ105A上で実行されるソフトウェアドライバである。他の実施形態では、制御ユニット110は、プロセッサ105A~105Nから独立した制御ロジック、及び/又は、プロセッサ105A~105N内に組み込まれた制御ロジックを含む。一般的に言えば、制御ユニット110は、ソフトウェア及び/又はハードウェアの任意の適切な組み合わせである。
【0010】
メモリコントローラ(複数可)130は、プロセッサ105A~105Nによってアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ(複数可)130は、任意の数及びタイプのメモリデバイス(複数可)140に結合されている。メモリデバイス(複数可)140は、任意の数及びタイプのメモリデバイスを表す。例えば、メモリデバイス(複数可)140内のメモリのタイプとしては、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(FeRAM)、又は、他のメモリが挙げられる。
【0011】
I/Oインターフェース120は、任意の数及びタイプのI/Oインターフェース(例えば、ペリフェラルコンポーネントインターコネクト(PCI)バス、PCIエクステンデッド(PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB))を表す。様々なタイプの周辺装置(図示省略)がI/Oインターフェース120に結合されている。このような周辺装置には、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、メディア記録デバイス、外部ストレージデバイス、ネットワークインターフェースカード等が含まれる(ただし、これらに限定されない)。ネットワークインターフェース135は、ネットワークを介したネットワークメッセージの送受信を行うために用いられる。バス125は、システム100の異なる構成要素を互いに接続するための任意の数のリンクを有する任意のタイプのバス又はファブリックを表す。
【0012】
一実施形態では、キュー(複数可)142は、メモリデバイス(複数可)140に格納されている。他の実施形態では、キュー(複数可)142は、システム100内の他の場所に格納されている。キュー(複数可)142は、システム100内に割り当てられた任意の数及びタイプのキューを表す。一実施形態では、キュー(複数可)142は、レンダリングされるフレームに対して実行されるレンダリングタスクを記憶する。一実施形態では、レンダリングタスクは、ネットワークインターフェース135を介して受信された入力に基づいて、キュー(複数可)142にエンキューされる。例えば、あるシナリオでは、入力は、ビデオゲームアプリケーションのユーザによって生成され、ネットワーク(図示省略)を介してシステム100に送信される。別の実施形態では、入力は、I/Oインターフェース120に接続された周辺装置によって生成される。
【0013】
一実施形態では、電力管理ユニット150は、電源145からシステム100の構成要素に電力を供給し、電力管理ユニット150は、システム100内の構成要素の様々な電力性能状態を制御する。制御ユニット110から更新データを受信したことに応じて、電力管理ユニット150は、システム100内の他の構成要素に対して、その現在の電力性能状態を高めるか低めるかの何れかを行わせる。様々な実施形態では、電力性能状態を変更することは、デバイスの現在の動作周波数を変更すること、及び/又は、デバイスの現在の電圧レベルを変更することを含む。プロセッサ105A~105Nの電力性能状態が低下すると、プロセッサ105A~105Nによって実行されている演算タスクが完了するまでにより時間がかかるようになる。
【0014】
一実施形態では、制御ユニット110は、現在のフレームのレンダリングタスクの数が所定の閾値よりも大きいと判別したことに応じて、プロセッサ105Nを比較的高い電力性能状態で動作させるように、電力管理ユニット150にコマンドを送る。一実施形態では、所定の閾値は、次のビデオ同期信号までの残り時間に基づいて調整される。例えば、次のビデオ同期信号までの時間が短いほど、所定の閾値を低くするようにプログラムされている。
【0015】
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、サーバ、又は、様々な他のタイプのコンピューティングシステム若しくはデバイスである。コンピューティングシステム100の構成要素の数は、実施形態によって異なることに留意されたい。例えば、他の実施形態では、各構成要素の数は、
図1に示す数よりも多い又は少ない。他の実施形態では、コンピューティングシステム100は、
図1に示されていない他の構成要素を含み、及び/又は、コンピューティングシステム100に示す構成要素のうち1つ以上が省略されることに留意されたい。さらに、他の実施形態では、コンピューティングシステム100は、
図1に示されているものと異なる方法で構成されている。
【0016】
図2を参照すると、別の実施形態のコンピューティングシステム200のブロック図が示されている。一実施形態では、システム200は、GPU205と、システムメモリ225と、GPU205に属するローカルメモリ230と、を含む。また、システム200は、図を不明瞭にすることを避けるために示されていない他の構成要素を含む。GPU205は、少なくとも、コマンドプロセッサ235と、スケジューラ250と、コンピュートユニット255A~255Nと、メモリコントローラ220と、グローバルデータシェア270と、レベル1(L1)キャッシュ265と、レベル2(L2)キャッシュ260と、を含む。コンピュートユニット255A~255Nは、本明細書では「複数の処理要素」と呼ばれる場合があることに留意されたい。他の実施形態では、GPU205は、他の構成要素を含み、図示した構成要素のうち1つ以上を省略し、
図2に1つのインスタンスのみが示されている場合でも複数の構成要素のインスタンスを有し、及び/又は、他の適切な方法で編成されている。一実施形態では、GPU205の回路は、(
図1の)プロセッサ105Nに含まれている。
【0017】
様々な実施形態では、コンピューティングシステム200は、様々なタイプのソフトウェアアプリケーションの何れかを実行する。所定のソフトウェアアプリケーションを実行する一環として、コンピューティングシステム200のホストCPU(図示省略)は、GPU205で実行されるレンダリングタスクを起動する。コマンドプロセッサ235は、ホストCPUからコマンドを受信し、スケジューラ250を使用して、対応するレンダリングタスクをコンピュートユニット255A~255Nに発行する。コンピュートユニット255A~255Nで実行されるレンダリングタスクは、GPU205内のグローバルデータシェア270、L1キャッシュ265及びL2キャッシュ260に対してデータを読み書きする。
図2に示されていないが、一実施形態では、コンピュートユニット255A~255Nは、各コンピュートユニット255A~255N内に1つ以上のキャッシュ及び/又はローカルメモリを含む。様々な実施形態では、コンピュートユニット255A~255Nは、リアルタイムで表示、ストリーミング、又は、消費されるフレームをレンダリングする、任意の数のフレームベースのアプリケーションを実行する。一実施形態では、キュー(複数可)232は、ローカルメモリ230に格納されている。他の実施形態では、キュー(複数可)232は、システム200内の他の場所に格納されている。キュー(複数可)232は、システム200内に割り当てられた任意の数及びタイプのキューを表す。一実施形態では、キュー(複数可)232は、GPU205によって実行されるレンダリングタスクを記憶する。
【0018】
一実施形態では、GPU205の性能設定は、キュー(複数可)232に記憶された現在のフレームのレンダリングタスクの数に基づいて、及び、次のビデオ同期信号までの残り時間に基づいて調整される。様々な実施形態では、GPU205の性能設定は、次のビデオ同期信号の前にレンダリングタスクを終了させるとともに、電力消費目標を達成するように調整される。一実施形態では、性能設定は、制御ユニット(図示省略)によって調整される。制御ユニットは、CPU(図示省略)で実行されるソフトウェアドライバであってもよいし、制御ユニットは、プログラマブルロジックデバイス(例えば、FPGA)内に実装された制御ロジック又は専用ハードウェア(例えば、ASIC)として実装された制御ロジックを含んでもよい。場合によっては、制御ユニットは、ソフトウェアとハードウェアとの組み合わせを含む。
【0019】
一実施形態では、GPU205の性能設定は、GPU205の特定の電力設定、電力状態、又は、動作点に対応する。一実施形態では、制御ユニットは、動的電圧及び周波数スケーリング(DVFS)を用いて、GPU205の周波数及び/又は電圧を変更し、消費電力を選択された電力割り当てに制限する。各々の周波数及び電圧の設定は、別個の性能設定に対応し得る。一実施形態では、制御ユニットによって選択された性能設定が、対応するクロック信号を生成してGPU205に分配する位相ロックループ(PLL)ユニット(図示省略)を制御する。一実施形態では、制御ユニットによって選択された性能設定が、GPU205に供給電圧を供給する電圧レギュレータ(図示省略)を制御する。他の実施形態では、特定の性能設定に到達するためのコマンドを制御ユニットから受信したことに応じて、GPU205の動作点及び/又は電力設定を変更するために、他のメカニズムを使用することができる。
【0020】
図3を参照すると、キュー占有率に基づいて、レンダリングされるフレームの性能設定を選択する一実施形態のタイミング図が示されている。ビデオシーケンスのフレームをレンダリングする際に、一実施形態では、ソフトウェアドライバは、キューの占有率に少なくとも部分的に基づいて、レンダリングハードウェアの性能設定を変更する。キュー占有率とは、レンダリングされる現在のフレームに対して処理ハードウェア(例えば、GPU)にエンキューされるレンダリングタスクの数を指す。
【0021】
レンダリングされる各フレームの開始及び終了に対応するビデオ同期信号(又は、VSync)によって境界が定められるフレーム期間が示される。
図3に示す最初のフレーム期間では、レンダリングされるフレームについての初期性能設定325が処理ハードウェアに設定される。初期性能設定325は、一実施形態では、デフォルト設定であってもよい。別の実施形態では、初期性能設定325は、アプリケーションのタイプ、アプリケーションによって生成されたヒント、レンダリングされる現在のフレームの複雑さの推定値、及び/又は、他の要因に基づいてプログラム可能である。一実施形態では、性能設定の制御を担当するソフトウェアドライバは、レンダリングタスクキュー(複数可)のキュー占有率を監視する。ソフトウェアドライバは、フレーム期間毎に、キュー占有率を複数回監視する。監視の頻度は、実施形態に応じて固定又はプログラム可能の何れかであってもよい。
図3に示すように、最初の占有率サンプル305は、特定の数のレンダリングタスクがエンキューされていることを示す。このサンプル305に基づいて、ソフトウェアドライバは、現在の性能設定325を維持する。
【0022】
次のキュー占有率サンプル310は、前のサンプル305よりも減少している。このことは、処理ハードウェアによって1つ以上のレンダリングタスクが完了したことにより、レンダリングタスクの数が減少したことを示す。したがって、サンプル310からサンプル305へのキュー占有率の減少を検出したことに応じて、ソフトウェアドライバは、性能設定330を低減させて、処理ハードウェアの電力消費を減少させる。この傾向は、次の2つのサンプル315,320についても継続し、ソフトウェアドライバは、性能設定335,340の各々の電力を低減させる。この性能設定の低減は、処理ハードウェアが現在のフレームの間に終了すべきレンダリングタスクが少なくなるので、許容可能である。ビデオ同期信号が発生すると、現在のフレームが、ディスプレイに送られるか、ネットワークを介して1つ以上のクライアントに送られるか、又は、他の場所に送られる。
【0023】
次のフレーム期間では、最初の占有率サンプル345は、このフレームのレンダリングタスクが比較的少ないことを示す。したがって、性能設定340は、フレーム期間の開始時に処理ハードウェアに対して比較的低いレベルであり続けることができる。次の占有率サンプル350は、レンダリングタスクの数が減少していることを示し、より低い性能設定370を可能にする。しかし、その後の占有率サンプル355は、キュー占有率が増加したことを示す。これは、複数のレンダリングタスクを受信したことに起因する可能性があり、このようなレンダリングタスクは、ゲームシナリオでのプレイヤの入力、バーチャルリアリティ環境でのユーザの動き、又は、他のタイプのアプリケーションで生成された他の入力若しくはイベントによってもたらされる可能性がある。
【0024】
ソフトウェアドライバは、占有率サンプル355の占有率の増加、及び、次のビデオ同期信号までの残り時間の減少を検出すると、処理ハードウェアに供給される電力を性能設定375まで増加させることによって応答する。一実施形態では、性能設定375は、処理ハードウェアの最大限の性能設定である。次の2つの占有率サンプル360,365は、現在のフレームのレンダリングタスクの数が減少したことを示す。しかし、これらのレンダリングタスクを終了するまでの時間も短くなっており、これは、ソフトウェアドライバが、処理ハードウェアの比較的高い性能設定375を維持することを意味する。
【0025】
タイミング
図300に示す例は、レンダリングタスクキュー(複数可)のキュー占有率に基づいて性能設定を調整するソフトウェアドライバに関する1つの特定の実施形態であることを示す。他の実施形態では、ソフトウェアドライバは、キュー占有率の変化に基づいて、他のタイプの調整を行うことができる。性能設定の更新が行われる粒度は、実施形態によって異なり得ることを理解されたい。また、ソフトウェアドライバがキュー占有率をチェックする頻度も、実施形態によって異なり得る。
【0026】
図4を参照すると、入力タスク数及び残り時間を性能設定にマッピングするためのテーブル400の一実施形態が示されている。一実施形態では、制御ロジック又はソフトウェアドライバは、テーブル400の列405,410のルックアップを実行して、対応する性能設定を取得する。取得された性能設定は、複数の処理要素(例えば、
図2のGPU205)が特定の動作点で動作するようにプログラムするために使用される。一実施形態では、列405は、入力タスク(例えば、レンダリングタスク)の数について異なる可能な値を含む。他の実施形態では、列405は、現在のフレームをレンダリングするために実行される必要のある作業量を表す他の値を含む。例えば、別の実施形態では、列405は、キュー占有率に関して測定される。他の実施形態では、列405は、受け取ったヒントの数、検出されたイベントの数、又は、他の観点から測定される。一実施形態では、列410は、次のビデオ同期信号までの異なる残り時間についてのエントリを含む。
【0027】
一実施形態では、ソフトウェアドライバは、レンダリングタスクの数と次のビデオ同期信号までの残り時間とを使用して、テーブル400のルックアップを実行する。ルックアップの結果がヒットした場合、一致するエントリから性能設定が取得される。ルックアップが失敗した場合、ソフトウェアドライバは、最も近い2つのエントリに基づいて性能設定値を補間することができる。ソフトウェアドライバは、特定の性能設定を取得及び/又は計算した後に、レンダリングハードウェアを特定の性能設定で動作させる。一実施形態では、ソフトウェアドライバは、フレーム期間中にレンダリングタスクの数及び/又は残り時間が変化すると、テーブル400に対してフレーム当たり複数回のルックアップを実行して、性能設定を更新する。
【0028】
一実施形態では、システム上で動作する可能性のある異なるアプリケーション毎に別個のテーブル400が存在する。例えば、クラウドゲーム環境では、第1のテーブル400Aがシステムによって記憶されている。バーチャルリアリティアプリケーションでは、第2のテーブル400Bがシステムによって記憶されている。他の任意の数のテーブル400C~400Nが、同様に、様々なアプリケーションのためにシステムによって記憶されてもよい。各アプリケーションは、アプリケーションの実行時に実行される可能性が高いレンダリングタスクに対して、異なる特性及び複雑さを有し得る。そのために、各アプリケーションは、レンダリングタスク数及び残り時間に基づいて使用される異なる性能設定に対応するために、別個のテーブル400を有する。
【0029】
一実施形態では、各テーブル400は、ソフトウェアによってプログラムされる。テーブル400は、テストデータに基づいてプログラムすることができ、及び/又は、テーブル400は、アプリケーションの動作を監視することに基づくリアルタイムトレーニングに基づいてプログラムすることができる。例えば、一実施形態では、テーブル400は、所定のアプリケーションのためのデフォルト値を用いて、ソフトウェアによってプログラムされる。そして、ランタイム中に、ソフトウェアは、所定のアプリケーションを監視して、テーブル400のデフォルト値を生成するために使用されたテストシナリオと比較して、ランタイム環境に何らかの変化が観察されたかどうかを確認することができる。レンダリングタスクが予測よりも時間がかかる場合、又は、レンダリングタスクが予測よりも早く終了する場合には、性能設定列415に記憶されている値を更新して、所定のアプリケーションの動作をより正確に反映することができる。別の実施形態では、ソフトウェアドライバは、テーブル400を使用して性能設定を選択するのではなく、入力タスク数及び残り時間に基づいて性能設定を計算するための式を使用する。他の実施形態では、ソフトウェアドライバは、性能設定を選択するために他の適切な技術を使用する。
【0030】
図5を参照すると、性能保証された電力管理を用いるリアルタイムビデオレンダリングを行う方法500の一実施形態が示されている。説明のために、本実施形態のステップ及び
図6のステップは、順番に示されている。しかしながら、説明する方法の様々な実施形態では、説明する要素のうち1つ以上は、同時に実行されてもよいし、図示した順番とは異なる順番で実行されてもよいし、完全に省略されてもよいことに留意されたい。他の追加の要素も必要に応じて実行される。本明細書に記載された様々なシステム又は装置の何れも、方法500を実施するように構成されている。
【0031】
ソフトウェアドライバは、レンダリングされている現在のフレームについてのレンダリングタスクに対応する入力を監視する(ブロック505)。一実施形態では、入力は、ネットワーク上のユーザに関連するイベントである。例えば、ユーザが、クラウドゲームのシナリオでビデオゲームをプレイしている。別の実施形態では、入力は、バーチャルリアリティ環境におけるユーザの動きである。他の実施形態では、他のタイプのシナリオに対する他のタイプの入力が、ブロック505で受信される。また、ソフトウェアドライバは、次のビデオ同期信号までの現在のフレーム期間の残り時間を監視する(ブロック510)。次に、ソフトウェアドライバは、次のビデオ同期信号までの残り時間において入力レンダリングタスクを完了するための可能な限り低い性能設定を決定する(ブロック515)。一実施形態では、処理ハードウェア(例えば、GPU)の性能設定は、対応する電圧及び周波数の値を含む。
【0032】
ソフトウェアドライバが、次のビデオ同期信号までの残り時間において最大限の性能設定でも入力レンダリングタスクを完了できないと判別した場合(条件付きブロック520:「No」)、ソフトウェアドライバは、前のフレームを再生させ、処理ハードウェアをアイドル状態又は比較的低い性能設定(例えば、可能な限り低い性能設定)に設定する(ブロック525)。或いは、ソフトウェアドライバは、ブロック525において、前のフレームを再生するのではなく、現在のフレームを遅延させることができる。次のVsyncまでの残り時間において入力レンダリングタスクを完了させることができる性能設定がある場合(条件付きブロック520:「Yes」)、ソフトウェアドライバは、処理ハードウェアを所定の性能設定で動作させる(ブロック530)。一実施形態では、所定の性能設定は、次のビデオ同期信号までの残り時間内に入力レンダリングタスクを完了するための可能な限り低い性能設定である。別の実施形態では、所定の性能設定は、次のビデオ同期信号までの残り時間内で入力レンダリングタスクを完了するための許容誤差を提供するために、可能な限り低い性能設定よりも1つ高い設定である。他の実施形態では、許容誤差を、可能な限り低い性能設定よりも2つ以上高い設定に増やすことができる。
【0033】
現在のフレームのレンダリングが終了していない場合(条件付きブロック540:「No」)、ある程度の時間が経過した後に、又は、何らかのイベント(すなわち、キュー占有率の変化)が検出された後に、方法500はブロック505に戻る。性能設定があまりにも頻繁に変更されるのを防ぐために、ループに何らかのヒステリシスを追加することが可能であることに留意されたい。現在のフレームのレンダリングが終了した場合(条件付きブロック540:「Yes」)、方法500は終了する。方法500は、レンダリングされるビデオシーケンスの各ビデオフレームに対して実行され得ることに留意されたい。
【0034】
図6を参照すると、アプリケーションタイプに基づいて処理ハードウェアの性能設定を制御する方法600の一実施形態が示されている。制御ユニットは、何れのアプリケーションがシステムによって現在実行されているかを判別する(ブロック605)。次に、制御ユニットは、アプリケーションに対応する性能設定ルックアップテーブル(例えば、
図4のテーブル400)をロードする(ブロック610)。次に、制御ユニットは、テーブルを使用して、キュー占有率及び次のビデオ同期信号までの残り時間に基づいて、処理ハードウェアの性能設定を選択する(ブロック615)。制御ユニットが、システムによって実行されている別のアプリケーションを検出した場合(条件付きブロック620:「Yes」)、方法600はブロック610に戻る。或いは、所定のアプリケーションがシステムによって実行され続ける場合(条件付きブロック620:「No」)、方法600はブロック615に戻る。場合によっては、1つのアプリケーションが複数の異なる性能設定ルックアップテーブルを有することができることに留意されたい。例えば、ビデオゲームアプリケーションは、レンダリングの複雑さの量が異なる様々なシーンを有し得る。アプリケーションの第1のシーンでは、制御ユニットが第1のテーブルをロードすることができ、第2のシーンでは、制御ユニットが第2のテーブルをロードする、等である。
【0035】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書に説明する方法及び/又はメカニズムを実施する。例えば、汎用プロセッサ又は特殊目的プロセッサによって実行可能なプログラム命令が考慮される。様々な実施形態では、このようなプログラム命令は、高レベルプログラミング言語によって表すことができる。他の実施形態では、プログラム命令は、高レベルプログラミング言語からバイナリ、中間、又は、他の形式にコンパイルされてもよい。或いは、ハードウェアの動作又は設計を記述したプログラム命令が書き込まれてもよい。このようなプログラム命令は、C等の高レベルプログラミング言語によって表されてもよい。或いは、Verilog等のハードウェア設計言語(HDL)が使用されてもよい。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に、このようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0036】
上記の実施形態は、実施形態の非限定的な例に過ぎないことを強調しておきたい。上記の開示が十分に理解されると、多数の変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、このような変形及び修正の全てを包含するものと解釈されることが意図されている。
【国際調査報告】