特許第6633614号(P6633614)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

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

<>
  • 特許6633614-フレームペーシング方法及びシステム 図000003
  • 特許6633614-フレームペーシング方法及びシステム 図000004
  • 特許6633614-フレームペーシング方法及びシステム 図000005
  • 特許6633614-フレームペーシング方法及びシステム 図000006
  • 特許6633614-フレームペーシング方法及びシステム 図000007
  • 特許6633614-フレームペーシング方法及びシステム 図000008
  • 特許6633614-フレームペーシング方法及びシステム 図000009
  • 特許6633614-フレームペーシング方法及びシステム 図000010
  • 特許6633614-フレームペーシング方法及びシステム 図000011
  • 特許6633614-フレームペーシング方法及びシステム 図000012
  • 特許6633614-フレームペーシング方法及びシステム 図000013
  • 特許6633614-フレームペーシング方法及びシステム 図000014
  • 特許6633614-フレームペーシング方法及びシステム 図000015
  • 特許6633614-フレームペーシング方法及びシステム 図000016
  • 特許6633614-フレームペーシング方法及びシステム 図000017
  • 特許6633614-フレームペーシング方法及びシステム 図000018
  • 特許6633614-フレームペーシング方法及びシステム 図000019
  • 特許6633614-フレームペーシング方法及びシステム 図000020
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6633614
(24)【登録日】2019年12月20日
(45)【発行日】2020年1月22日
(54)【発明の名称】フレームペーシング方法及びシステム
(51)【国際特許分類】
   G06T 15/00 20110101AFI20200109BHJP
   G06T 1/20 20060101ALI20200109BHJP
   G09G 5/00 20060101ALI20200109BHJP
   G09G 5/36 20060101ALI20200109BHJP
【FI】
   G06T15/00 501
   G06T1/20 B
   G09G5/00 550H
   G09G5/36 530C
【請求項の数】15
【全頁数】15
(21)【出願番号】特願2017-506881(P2017-506881)
(86)(22)【出願日】2015年8月7日
(65)【公表番号】特表2017-531232(P2017-531232A)
(43)【公表日】2017年10月19日
(86)【国際出願番号】US2015044128
(87)【国際公開番号】WO2016022874
(87)【国際公開日】20160211
【審査請求日】2018年7月5日
(31)【優先権主張番号】62/035,124
(32)【優先日】2014年8月8日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジョナサン ローレンス キャンベル
(72)【発明者】
【氏名】ミッチェル エイチ. シンガー
(72)【発明者】
【氏名】ユピン シェン
(72)【発明者】
【氏名】ユエ ジオ
【審査官】 真木 健彦
(56)【参考文献】
【文献】 米国特許出願公開第2012/0262463(US,A1)
【文献】 特開平09−259297(JP,A)
【文献】 特開2005−092863(JP,A)
【文献】 米国特許出願公開第2011/0157193(US,A1)
【文献】 米国特許第07545380(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 15/00 − 15/87
G06T 1/20
G09G 5/00 − 5/42
(57)【特許請求の範囲】
【請求項1】
レンダリングプロセスにおけるフレームペーシングの方法であって、
複数のグラフィックスプロセッシングユニット(GPU)の各々のフレームレンダリング時間を推定するステップであって、前記フレームレンダリング時間は、各GPUがフレームをレンダリングするのにかかる時間の推定値である、ステップと、
GPU毎に、GPUについて決定された少なくとも1つの推定されたフレームレンダリング時間に基づいて遅延を決定するステップと、
前記遅延を前記レンダリングプロセスに挿入して、フレームを時間的な等間隔でレンダリングするステップと、を含む、
方法。
【請求項2】
GPU毎の前記遅延は、前記複数のGPUの各々のアプリケーションワークロードに基づいて動的に調整される、請求項1の方法。
【請求項3】
GPU毎の前記推定されたフレームレンダリング時間は、所定数のフレームにわたって取られた平均値である、請求項1の方法。
【請求項4】
前記レンダリングプロセス及びフレーム表示を制御するために、GPU毎の少なくとも1つの前記遅延に基づいてハートビートが確立され、前記ハートビートは、フレームが表示されるときの一定のティッキングである、請求項1の方法。
【請求項5】
前記遅延を可能にするために、少なくとも1つのタイマが用いられる、請求項1の方法。
【請求項6】
GPU毎の前記推定されたフレームレンダリング時間を決定するために、タイムスタンプクエリが用いられる、請求項1の方法。
【請求項7】
前記遅延は、カーネルモードドライバ(KMD)に実装される、請求項1の方法。
【請求項8】
前記遅延を実装するために、ダミースケジューラブルエンジンが前記KMD内で生成され、前記ダミースケジューラブルエンジンは、要求に応じて、前記遅延を前記レンダリングプロセスに挿入するように構成されたスケジューリングを行う、請求項7の方法。
【請求項9】
表示は、前記遅延の満了又は前記レンダリングプロセスの完了の後に生じ、前記表示は、フレームが表示され得ることを意味する、請求項1の方法。
【請求項10】
複数のグラフィックスプロセッシングユニット(GPU)の各々のフレームレンダリング時間を推定するように構成された第1処理モジュールであって、GPU毎に、GPU少なくとも1つの推定されたフレームレンダリング時間に基づいて遅延を決定するように構成された第1処理モジュールと、
前記遅延をレンダリングプロセスに挿入して、フレームを等間隔でレンダリングするように構成された第2処理モジュールと、を備え、
前記フレームレンダリング時間は、各GPUがフレームをレンダリングするのにかかる時間の推定値である、
レンダリングプロセスにおけるフレームペーシングシステム。
【請求項11】
GPU毎の前記遅延は、前記複数のGPUの各々のアプリケーションワークロードに基づいて動的に調整される、請求項10のシステム。
【請求項12】
GPU毎の前記推定されたフレームレンダリング時間は、所定数のフレームにわたって取られた平均値である、請求項10のシステム。
【請求項13】
前記レンダリングプロセス及びフレーム表示を制御するために、GPU毎の少なくとも1つの前記遅延に基づいてハートビートが確立され、前記ハートビートは、フレームが表示されるときの一定のティッキングであり、前記表示は、フレームが表示され得ることを意味する、請求項10のシステム。
【請求項14】
GPU毎の前記推定されたフレームレンダリング時間を決定するために、タイムスタンプクエリが用いられる、請求項10のシステム。
【請求項15】
前記第2処理モジュールは、カーネルモードドライバ(KMD)であり、
前記遅延を実装するために、ダミースケジューラブルエンジンが前記KMDで生成され、前記ダミースケジューラブルエンジンは、要求に応じて、前記遅延を前記レンダリングプロセスに挿入するように構成されたスケジューリングを行う、請求項10のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2014年8月8日に出願された米国仮特許出願第62/035,124号の利益を主張し、当該仮特許出願の内容は、言及することにより、本明細書に完全に記載されているように編入される。
【0002】
本発明は、概してグラフィックス処理に関する。
【背景技術】
【0003】
グラフィックス処理は、一般的に、中央処理装置(CPU)及び複数のグラフィックスプロセッシングユニット(GPU)の組み合わせを用いて実行される。複数のGPUを用いるレンダリングシステムでは、各GPUは、フレームを完成させる場合に、完成したフレームをレンダリングして、このフレームを表示のために提示する。他のGPUがレンダリングを完了する間近に各GPUのフレームのレンダリングが完了する場合に、レンダリングされた第1フレームが、(既に完成した)後続のフレームよりも短い時間で画面上に表示される。フレームを表示する時間の長さが等間隔でない場合に、ユーザは、より低いフレームレート(効果的にスタッタを引き起こす)を視覚的に見て知覚することができる。これは、名目上、フレームスタッタリング(frame stuttering)又はマイクロスタッタリング(micro-stuttering)と呼ばれる。複数のGPUによってレンダリングされたアプリケーション(例えば、3Dアプリケーション等)の視覚的な及び/若しくは知覚されたフレームスタッタリング並びに/又はマイクロスタッタリングを克服する方法及びシステムが必要とされている。
【発明の概要】
【課題を解決するための手段】
【0004】
本明細書では、フレームペーシングのための方法及びシステムが記載されている。概して、フレームペーシングは、後続のフレームの表示から等間隔に離隔する遅延と、アプリケーションワークロードが変わる場合に当該遅延を計測及び調整する計測メカニズムと、を加える。
【0005】
添付の図面と併せて実施例により与えられた以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0006】
図1】1つ以上の開示された実施形態を実装し得る例示的なデバイスのブロック図である。
図2】いくつかの実施形態による例示的なグラフィックスレンダリングパイプラインである。
図3】デュアルグラフィックスプロセッシングユニット(GPU)におけるレンダリングの実施例である。
図4】いくつかの実施形態による、フレームペーシングについての例示的なハイレベルブロック図である。
図5】いくつかの実施形態による、フレームペーシングについての例示的なフローチャートである。
図6】いくつかの実施形態による、フレームペーシングについての他の例示的なフローチャートである。
図7】いくつかの実施形態による、フレームペーシングについてのシーケンス図の一例である。
図8】いくつかの実施形態による、デュアルGPUアーキテクチャにおけるフレームペーシングについてのシーケンス図の一例である。
図9】いくつかの実施形態による、1つのタイマを用いたフレームペーシングについてのシーケンス図の一例である。
図10】いくつかの実施形態による、フレームペーシングについてのシーケンス図における動作の一例である。
図11】対称アーキテクチャにおけるスタッタリングの例示的な図である。
図12】いくつかの実施形態による、対称アーキテクチャにおけるフレームペーシング又はアンチスタッタリングの例示的な図である。
図13】TSDMA>TGFX/2である対称アーキテクチャにおけるスタッタリングの例示的な図である。
図14】TSDMA>TGFXである対称アーキテクチャにおけるスタッタリングの例示的な図である。
図15】スロースレーブシナリオ(slow slave scenario)におけるスタッタリングの例示的な図である。
図16】いくつかの実施形態による、スロースレーブシナリオにおけるアンチスタッタリングの例示的な図である。
図17】いくつかの実施形態による、非対称クロスファイア(ACF)が1:2であり、「1」がボトルネックであるスロースレーブシナリオにおけるアンチスタッタリングの例示的な図である。
図18】いくつかの実施形態による、ACFが1:2であり、「2」がボトルネックであるスロースレーブシナリオにおけるアンチスタッタリングの例示的な図である。
【発明を実施するための形態】
【0007】
本明細書には、フレームペーシングのための方法及びシステムが記載されている。概して、フレームをレンダリングするのにかかる時間について推定を行う。これは、グラフィックスプロセッシングユニット(GPU)がフレームをレンダリングするのにかかる時間を測定することによって行うことができる。複数の最近のフレームに亘る平均値を用いて、フレーム間のワークロードの差を平滑化し、GPUの速度をレンダリングする。GPUの進行を制御し、GPUの表示を平滑化するハートビートが生成される。測定された適切な時間の長さだけドライバ(例えば、カーネルモードドライバ(KMD))にて待機することで、フレームが等間隔に配置される。フレームペーシングは、実質的に、他のGPUに対して早すぎるかもしれない1つのGPUにおけるフレームのフリッピングを延期する。
【0008】
図1は、1つ以上の開示された実施形態を実装し得る例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲーム機、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含むことができる。デバイス100は、プロセッサ102と、メモリ104と、ストレージ106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、入力ドライバ112と、出力ドライバ114と、を任意に含んでもよい。デバイス100は、図1に示されていない追加の構成要素を含み得ることを理解されたい。
【0009】
プロセッサ102は、中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含むことができ、各プロセッサコアは、CPU又はGPUであってもよい。メモリ104は、プロセッサ102と同じダイ上に配置されてもよいし、プロセッサ102とは別に配置されてもよい。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM又はキャッシュ)を含むことができる。GPUは、同じタイプのGPU(対称クロスファイア)又は異なるタイプのGPU(非対称クロスファイア(ACF))であってもよい。例えば、プロセッサ又はシステム内のGPUは、アクセラレーテッドプロセッシングユニット(APU)、ディスクリートGPU(dGPU)及び/又はこれらの組み合わせを含み得るが、これらに限定されない。
【0010】
ストレージ106は、固定又はリムーバブルストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク又はフラッシュドライブ)を含むことができる。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含むことができる。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含むことができる。
【0011】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信するのを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に対して出力を送信するのを可能にする。入力ドライバ112及び出力ドライバ114は、任意の構成要素であって、入力ドライバ112及び出力ドライバ114が存在しない場合には、デバイス100が同様に機能することに留意されたい。
【0012】
図2は、例示的なグラフィックスレンダリングパイプライン200を示す図である。説明の目的のため及びコンテキストを提供するために、グラフィックスレンダリングパイプライン200は、Windows(登録商標)ベースのO/Sを用いて示されているが、任意のオペレーティングシステム(O/S)が用いられてもよい。一般に、グラフィックスレンダリングパイプライン200は、アプリケーションモジュール/レイヤ/エンティティ205と、Windows(登録商標)O/Sモジュール/レイヤ/エンティティ210と、ドライバモジュール/レイヤ/エンティティ220と、ハードウェア230と、を含む。モジュール/レイヤ/エンティティという用語は、本明細書ではエンティティと総称される。
【0013】
アプリケーションエンティティ205は、他の機能の中でもユーザ入力を処理する。アプリケーションエンティティ205は、例えば、ゲーム世界に関する例えばオブジェクトの位置、物理的特性等を更新するシミュレータ207を含む。シミュレータ207は、フレームを生成するために、例えば、Direct3D APIを介して描画呼び出しを生成するレンダラ209に結合又は接続(本明細書では、接続と呼ぶ)されている。レンダラ209は、Direct3Dランタイムエンティティ211に接続されており、Direct3Dランタイムエンティティ211は、コマンドを解析して、DDIインタフェースを介してユーザモードドライバ(UMD)222を呼び出す。UMD222は、GPUコマンドバッファを生成し、GPUコマンドバッファをWindows(登録商標)O/S210、特にDirect3Dランタイムエンティティ211に送る。次に、GPUコマンドバッファは、Windows(登録商標)O/S210のカーネルスケジューラ215がGPUコマンドバッファを受け入れる準備ができるまで、コンテキストキュー213内に配置される。GPUコマンドバッファは、カーネルモードドライバ(KMD)224に送られ、KMD224は、GPUコマンドバッファを処理してGPU232に送信する。アプリケーションエンティティ205は、フレームがレンダリングを終了して表示可能な場合に、表示呼び出しを送信する。表示呼び出しは、描画呼び出しと同じ論理パスに従う。
【0014】
図3は、グラフィックス処理のために複数のGPUアーキテクチャを用いる場合のマイクロスタッタリング問題を視覚的に説明する図である。一般に、複数のGPU間での作業割り当て又は割り振りでは、代替フレームレンダリング(AFR)と呼ばれるプロセスが用いられ、各GPUは、同じフレームの一部で機能する複数のGPUの各々とは対照的に、自身のフレームを得る。AFRは、各GPUが、レンダリングされたフレームをできる限り等間隔のレートで送出しているように、各GPUの出力がペーシングされるときに好適に機能する。例えば、図3に示すように、単一のGPU(SGPU)フロー300において、フレームが順次レンダリングされ、提示される。理想的なデュアルGPUフロー305では、GPU1の出力は、GPU0が自身のフレームをほぼ半分完了したときに完了する。しかしながら、実際に何が起こるかは、実際のデュアルGPUフロー310に示される。GPU0がレンダリングを完了する間近にGPU1のフレームが完了する場合には、その後にレンダリングされた第1フレームは、第2フレーム又はこれ以降のフレームよりも短い時間で画面に表示される。フレームを表示する時間の長さが等間隔でない場合には、ユーザは、より低いフレームレート(すなわち、マイクロスタッタリング)を視覚的に見て知覚し得る。
【0015】
本明細書には、フレームペーシングのための方法及びシステムが記載されている。
【0016】
図4は、2つのGPUのアーキテクチャ400の一例を示す図であり、図5は、ハイレベルなフローチャート500を示す図であり、図6は、2つのGPUのアーキテクチャ400の例示的なフローチャートを示す図であり、図7は、2つのGPUのアーキテクチャ400のUMD視点からのフレームペーシングフロー又はシーケンス600のハイレベルな例を示す図である。これらの図は、本明細書に記載されるフレームペーシングを集合的に示している。システムアーキテクチャは、本明細書に記載される本発明の範囲から逸脱することなく、任意の数のCPU、GPU、プロセッサ等を含むことができる。特に、2つのGPUのアーキテクチャ400は、GPU410及びGPU415に接続されたCPU405を含み、GPU410,415はディスプレイ420に順に接続される。各GPU410,415は、本明細書において以下に記載されるように、遅延の開始及び完了を知らせるためのタイマ412,417を有し得る。
【0017】
ここで図4及び図5を参照すると、フレームをレンダリングするのにかかる時間についての推定が行われる(505)。これは、GPU410,415がフレームをレンダリングするのにかかる時間を測定することによって行うことができる。例えば、GPUがフレームをレンダリングするのにかかる時間を、タイプスタンプクエリを用いて測定することができる。最近のいくつかのフレームにわたる平均値は、フレーム毎のワークロードの差を平滑化し、GPUのレンダリング速度を向上させる(510)。GPUの進行を制御して、GPUの表示を平滑化するハートビートが生成される(515)。ハートビートは、フレームが提示されるときのパルス又は一定のティッキングである。測定された適切な時間の長さだけカーネルモードドライバ(KMD)で待機して、フレームを等間隔に配置する(520)。例えば、ダミースケジューラブルエンジンは、KMDで生成される。ユーザモードドライバ(UMD)は、ダミーコマンドバッファをこのダミーエンジンに送信して、遅延を要求する(所期のフレーム時間の90〜95%であってもよい)。KMDは、要求された遅延が経過すると、コマンドバッファを完了として報告する(525)。レンダリングプロセスが遅延よりも長くかかる場合には、レンダリングプロセスが完了すると直ぐに表示が行われる。事実上、遅延は、GPUがフレームを表示するための最小待ち時間である。UMDは、Microsoft(登録商標)(MS)同期オブジェクトの信号をダミーエンジンに送信する。UMDは、この同期オブジェクトを通常の3Dエンジン上で待機する。
【0018】
ここで図6及び図7を参照すると、2つのGPUのアーキテクチャ400において、レンダリングコマンドがGPU0に送信される(605)。UMD(UMDは図2に示される)は、遅延要求を、KMD(KMDは図2に示される)内のダミーエンジンに送信する(610)。これは、図7のダミーエンジンフローの「遅延」として示されている。本明細書において以下に記載され示されるように、遅延は、その後にGPUが表示可能な事実上の最小時間を提供する。すなわち、レンダリングプロセスが遅延の実行前に完了する場合には、GPUは、遅延の実行後に表示を行う。ダミーエンジンは、信号をGPU0に送信する(615)。これは、図7において「S」として示されている。GPU0は、必要な遅延時間だけ待機する(620)。これは、図7において「W」として示されている。GPU0は、必要な遅延時間後に表示を行う(625)。これは、図7において「P」によって示されている。次に、GPU1に対してシーケンスが繰り返される。特に、レンダリングコマンドがGPU1に送信される(630)。UMDは、遅延要求を、KMD内のダミーエンジンに送信する(635)。信号は、ダミーエンジンによってGPU1に送信される(640)。GPU1は、必要な遅延時間だけ待機する(645)。GPU1は、必要な遅延時間(650)が経過し、レンダリングプロセスが完了した後に表示を行う。すなわち、表示は、遅延期間よりも早くなく、レンダリングプロセスが完了した場合のみに行われ得る。そして、GPU0及びGPU1に対するシーケンスが繰り返される。
【0019】
図8は、フレームペーシングフロー又はシーケンス800の他のハイレベルな例を示す図である。レンダリングコマンド805がGPU0に送られ、レンダリングコマンド810がGPU1に送られる。GPU0は、表示(P)815を行うとともに、GPU0のタイマに(図2に示すUMDを介して)信号(S)820を送る。この信号は、GPU1が表示を行う前に一定の時間(遅延)830だけ待機(W)825するためのものである。遅延830(図中のバブルで示される)を待機した後に、GPU0のタイマは、待機(W)840が経過してGPU1が表示(P)845を行うことができる信号(S)835をGPU1に送信する。次に、GPU1は、GPU0が表示を行う前に一定の時間(遅延)860だけ待機(W)855するために、GPU1のタイマに(図2に示すUMDを介して)信号(S)850を送る。この場合、遅延860は、GPU0がレンダリングプロセスを完了するのに必要な時間と一致する。これは、後のシーケンスにおいてバブルが示されていないという事実によって示されている。実質的に、GPU0及びGPU1間のレンダリング処理をオフセットし、GPU0及びGPU1間の処理を並べるために遅延が導入されると、当該オフセットが常に存在し、当該遅延はスループット又はフレームレートに対して殆ど影響を与えない。何等かの理由で1つのGPUがアライメントから外れると、オフセットはアライメントを修正する。
【0020】
一実施形態では、フレームペーシングは、存在するデバイスドライバインタフェース(DDI)に影響を及ぼし、非存在のDDIには影響を与えない。
【0021】
本明細書で説明する実施形態では、フレーム時間の計算及び管理は、UMDで行われる。他の実施形態では、フレーム時間の計算及び管理は、KMDで行われる。
【0022】
一実施形態では、遅延量を調整することができる。
【0023】
一実施形態では、1つのタイマを用いて、複数のGPUアーキテクチャにおいてフレームペーシングを実装することができる。これは図9に示されており、1つのタイマが用いられている点を除いて図8と同様に機能する。
【0024】
一実施形態では、本明細書で説明するフレームペーシングは、ハードウェア合成アーキテクチャ、ハードウェアフリッピングアーキテクチャ及び/又はソフトウェア合成アーキテクチャで利用することができる。
【0025】
図10を参照すると、本明細書で上述したタイムスタンプクエリの一例が示されている。特に、図10は、デュアルGPUでの動作を示している。2つのクエリオブジェクトは、全てのフレームで使用される。1つのクエリオブジェクトは、フレームの先頭で用いられ、(Q)と示されている。もう1つのクエリオブジェクトは、フレームの末尾で用いられ、(Q’)と示されている。クエリオブジェクトのGetData(Qに対するG、Q’に対するG’)は、GPUがクエリオブジェクトを処理するときの時間を取得する。QとQ’との間隔は、フレーム時間である。BeginFrame()は、フレームの先頭で呼び出され、QをGPUに挿入する。EndFrame()は、フレームの末尾で呼び出され、Q’をGPUに挿入する(図10の番号は、この呼び出しが例示的なドライバで発生したときを示している)。
【0026】
マルチGPUシステムでは、マスタGPU(GPU0)が画面出力を駆動するのに対し、他のGPUは駆動しない。このシナリオでは、全てのスレーブフレームをマスタGPUにコピーして表示するソフトウェア合成が用いられる。ソフトウェア合成は、ハードウェア合成と同様にマイクロスタッタリングを被る。図11は、対称クロスファイア(1:1)スタッタリングの一例を示しており、対称クロスファイアは、同じタイプのGPUがプロセッサ又はシステムで用いられていることを意味する。余分なサーフェス(0)がGPU0に生成され、ティアリングを除去する。図中の厚太な縦線は、マスタの3Dエンジンのフリップ(flip)であり、破線は、マスタのSDMAエンジンのフリップである。薄太の陰影のあるボックスは、ソフトウェア合成SDMA転送と、そのターゲットとを表している。他のボックスは、3D cmdbufである。ボックス内の数字はフレーム番号を示しており、文字はレンダターゲットを示している。各スレーブフレームについて、3つの動作をシリアル化する必要がある。GPU1は、3Dエンジン上でフレームのレンダリングを終了する。GPU1は、このフレームを、SDMAエンジンを介してGPU0に転送し、GPU0は、当該フレームを、SDMAエンジンを介してオンスクリーンに表示する。フレーム0,2,4は、フレーム1,3,5よりもさらに短く画面上に留まることがわかる。
【0027】
デュアルGPUアーキテクチャの例では、図12に示すように、遅延を伴うGPU0上のタイマを用いて、全ての表示が等しい長さのフレームペーシングを実装する。遅延は、式(1)に示すように計算することができる。
【数1】

ここで、GfxTimeGpu0は、GPU0がフレームをレンダリングするのにかかる時間であり、GfxTimeGpu1は、GPU1がフレームをレンダリングするのにかかる時間であり、SdmaTimeは、SDMAエンジンがGPU1からGPU0にフレームを転送するのにかかる時間である。
【0028】
低速転送の例では、GPU0及びGPU1がフレームをレンダリングするのに同じ時間がかかること、すなわちTGFX=GfxTimeGpu0=GfxTimeGpu1と仮定する。TSDMA>TGFX/2の場合には、GPU1上のフレームN+1は、GPU0上のフレームNよりも早く完了する。図13に示すように、フレーム5はフレーム4の前に、フレーム7はフレーム6の前に、というように続く。このレイアウトは、GPU間のリソース転送に対して脆弱である。図14は、転送がボトルネックであり、TSDMA>TGFXである場合の例を示している。上記の低速転送の問題は理論上可能であるが、低速転送の例では、実際のアプリケーションで実用的な効果がない。
【0029】
図15図18は、GPUが同じレートでレンダリングしない非対称クロスファイア(ACF)アーキテクチャがなければ、図11図14と同様である。図17及び図18は、AFR比が1:2で不均衡である場合、すなわち1つのGPUが3つのフレームのうち2つをレンダリングする場合のACFを示している。
【0030】
図15は、ACF1:1に関するスロースレーブ問題の例を示す図であり、図16は、スロースレーブ問題に対処するためのフレームペーシング実装を示す図である。
【0031】
ACF1:2アーキテクチャでは、3D又はSDMA上でマスタのフレームをフリップするかどうかは、重要ではない。その理由は、フレーム5が、Bが画面から外れるのを待たなければならないからである。
【0032】
図17は、「1」がボトルネックであり、GfxTimeGpu1がGPU1上の2つの連続したフレームの合計である、ACF1:2の解決法を示す図である。
【0033】
図18は、「2」がボトルネックである、ACF1:2の解決法を示す図である。
【0034】
概して、レンダリングプロセスにおけるフレームペーシングの方法は、複数のグラフィックスプロセッシングユニット(GPU)の各々のフレームレンダリング時間を推定するステップと、少なくとも1つの推定されたフレームレンダリング時間に基づいて遅延を測定するステップと、当該遅延をレンダリングプロセスに挿入して、フレームを等間隔でレンダリングするステップと、を含む。一実施形態では、遅延は、GPU上のアプリケーションワークロードに基づいて動的に調整されてもよい。一例では、推定されたフレームレンダリング時間は、所定数のフレームにわたって取られた平均値である。一例では、レンダリングプロセス及びフレーム表示を制御するために、少なくとも1つの遅延に基づいてハートビートが確立される。一例では、遅延を可能にするために、少なくとも1つのタイマが用いられる。一例では、推定されたフレームレンダリング時間を測定するために、タイムスタンプクエリが用いられる。一例では、遅延は、カーネルモードドライバ(KMD)に実装される。遅延を実装するために、ダミースケジューラブルエンジンがKMDで生成される。表示は、遅延の満了又はレンダリングプロセスの完了の後に生じる。
【0035】
レンダリングプロセスにおけるフレームペーシングシステムは、複数のグラフィックスプロセッシングユニット(GPU)の各々のフレームレンダリング時間を推定するように構成された第1処理モジュールを含む。第1処理モジュールは、少なくとも1つの推定されたフレームレンダリング時間に基づいて遅延を測定するように構成されている。第2処理モジュールは、この遅延をレンダリングプロセスに挿入して、フレームを等間隔でレンダリングするように構成されている。一実施形態では、遅延は、GPU上のアプリケーションワークロードに基づいて動的に調整されてもよい。一例では、推定されたフレームレンダリング時間は、所定数のフレームにわたって取られた平均値である。一例では、レンダリングプロセス及びフレーム表示を制御するために、少なくとも1つの遅延に基づいてハートビートが確立される。一例では、遅延を可能にするために、少なくとも1つのタイマが用いられる。一例では、推定されたフレームレンダリング時間を測定するために、タイムスタンプクエリが用いられる。一例では、第2処理モジュールは、カーネルモードドライバ(KMD)である。遅延を実装するために、ダミースケジューラブルエンジンがKMDで生成される。表示は、遅延の満了又はレンダリングプロセスの完了の後に生じる。一例では、第1処理モジュールはUMDであってもよく、第2処理モジュールはKMDであってもよい。
【0036】
本明細書の開示に基づいて多くの変形が可能であることを理解されたい。特徴及び要素は、特定の組み合わせで上記のように説明されているが、各特徴又は要素は、他の特徴及び要素なしに単独で用いられてもよいし、他の特徴及び要素を伴う又は伴わない様々な組み合わせで用いられてもよい。
【0037】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアに実装されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連付けられた1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他のタイプの集積回路(IC)、及び/又は、状態機械が含まれる。かかるプロセッサは、処理されたハードウェア記述言語(HDL)命令の結果と、ネットリスト(コンピュータ可読媒体に記憶可能なかかる命令)を含む他の中間データと、を用いて製造プロセスを構成することによって、製造可能である。かかる処理の結果は、本発明の態様を実施するプロセッサを製造するために半導体製造プロセスで用いられるマスクワークであってもよい。
【0038】
本明細書で提供された方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のためにコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアに実装され得る。コンピュータ可読記憶媒体の例としては、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内部ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、光媒体(例えば、CD―ROMディスク及びデジタル多用途ディスク(DVD等)を含む。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18