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

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

▶ ソニー・インタラクティブエンタテインメント エルエルシーの特許一覧

特表2022-521455家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計
<>
  • 特表-家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計 図1
  • 特表-家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計 図2
  • 特表-家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計 図3
  • 特表-家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計 図4
  • 特表-家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計 図5
  • 特表-家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計 図6
  • 特表-家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計 図7
  • 特表-家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計 図8
  • 特表-家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計 図9
  • 特表-家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計 図10
  • 特表-家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計 図11
  • 特表-家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計 図12
  • 特表-家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計 図13
  • 特表-家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-04-08
(54)【発明の名称】家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計
(51)【国際特許分類】
   G06T 1/20 20060101AFI20220401BHJP
   A63F 13/30 20140101ALI20220401BHJP
【FI】
G06T1/20 Z
A63F13/30
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021544244
(86)(22)【出願日】2020-01-15
(85)【翻訳文提出日】2021-07-28
(86)【国際出願番号】 US2020013721
(87)【国際公開番号】W WO2020159710
(87)【国際公開日】2020-08-06
(31)【優先権主張番号】16/261,986
(32)【優先日】2019-01-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】518187455
【氏名又は名称】ソニー・インタラクティブエンタテインメント エルエルシー
(74)【代理人】
【識別番号】100105924
【弁理士】
【氏名又は名称】森下 賢樹
(72)【発明者】
【氏名】コーレンブランデル、ロエロフ ロデリック
【テーマコード(参考)】
5B057
【Fターム(参考)】
5B057CH02
5B057CH11
5B057CH14
5B057CH16
(57)【要約】
【解決手段】マルチGPUシミュレーション環境では、フレームバッファ管理は、ビデオの各フレームをレンダリングする複数のGPU(306、402、504、600、704)によって、またはビデオの各フレームの各部分(900/902;1000/1002;1100/1102)をレンダリングすることによって実施されてよい。GPUの1つは、他のGPU(複数可)からフレーム情報を受信することと、物理的に接続されたHDMI(登録商標)出力ポート(1200)を通して完全なフレームを読み出すことにより、HDMI(登録商標)フレーム出力を制御する。または、GPUの出力は、一緒に多重化することができる(1302)。
【選択図】図1
【特許請求の範囲】
【請求項1】
少なくとも第1のグラフィックス処理ユニット(GPU)と、
前記第1のGPUに通信可能に結合された少なくとも第2のGPUと、
を備える装置であって、
前記GPUは、
前記第1のGPUがビデオの第1の部分をレンダリングし、前記第2のGPUが前記ビデオの第2の部分をレンダリングし、前記第1の部分と前記第2の部分は互いに異なるように、前記ビデオの各部分をレンダリングするようにプログラムされる、
装置。
【請求項2】
前記第1のGPU及び前記第2のGPUは、共通のダイ上に実装される、請求項1に記載の装置。
【請求項3】
前記第1のGPU及び前記第2のGPUは、それぞれ、第1のダイ及び第2のダイ上に実装される、請求項1に記載の装置。
【請求項4】
前記第1のGPUは、第1の中央処理装置(CPU)に関連付けられ、前記第2のGPUは、第2のCPUに関連付けられている、請求項1に記載の装置。
【請求項5】
前記第1のGPUに関連付けられた第1のメモリコントローラ及び第1のメモリと、前記第2のGPUに関連付けられた第2のメモリコントローラ及び第2のメモリとを備える、請求項1に記載の装置。
【請求項6】
前記GPUは、共通メモリを制御する共通メモリコントローラを共有する、請求項1に記載の装置。
【請求項7】
各GPUは、他のGPUによってレンダリングされるビデオのフレームとは異なる前記ビデオの全てのフレームではなく一部のフレームの全てをレンダリングして、各出力を提供するようにプログラムされ、前記GPUの前記出力は、前記ビデオをレンダリングするために結合される、請求項1に記載の装置。
【請求項8】
各GPUは、あるGPUによってレンダリングされるビデオのフレームのラインは、他のGPUによってレンダリングされる前記フレームのラインとは異なるように、ビデオのフレームの全てのラインではなく一部のラインの全てをレンダリングして、各出力を提供するようにプログラムされ、前記GPUの前記出力は、前記ビデオをレンダリングするために結合される、請求項1に記載の装置。
【請求項9】
前記第1のGPUは、前記第2のGPUによって管理される少なくとも1つのバッファを指す少なくとも1つのスキャンアウトユニットを備え、前記第1のGPUは、バッファを循環して前記ビデオのフレームの完全なシーケンスを出力するようにプログラムされる、請求項7に記載の装置。
【請求項10】
前記第1のGPUは、前記第1のGPUによって管理されるバッファのみを指す少なくとも1つのスキャンアウトユニットを備え、前記第1のGPUは、ダイレクトメモリアクセス(DMA)を介して前記第2のGPUから前記ビデオのフレームを受信し、前記ビデオのフレームの完全なシーケンスを出力するようにプログラムされる、請求項7に記載の装置。
【請求項11】
前記第1のGPUは、少なくとも前記第1のGPUによって管理される第1のバッファと前記第2のGPUによって管理される第2のバッファとを指す少なくとも1つのスキャンアウトユニットを備え、前記第1のGPUは、バッファを循環して、前記第1のバッファに関連付けられた1~Nラインと、前記第2のバッファに関連付けられた(N+1)~Mラインを使用するビデオのフレームの完全なシーケンスを出力するようにプログラムされ、前記1~Nラインと前記(N+1)~Mラインはビデオの前記フレームの異なるラインである、請求項1に記載の装置。
【請求項12】
前記第1のGPUは、前記第1のGPUによって管理される少なくとも第1のバッファを指し、前記第2のGPUによって管理される第2のバッファを指さない少なくとも1つのスキャンアウトユニットを備え、前記第1のGPUは、バッファを循環して、前記第1のバッファに関連付けられた1~Nラインと、前記第2のバッファに関連付けられ、直接メモリアクセス(DMA)を介して前記第1のGPUによって受信された(N+1)~Mラインとを使用するビデオのフレームの完全なシーケンスを出力するようにプログラムされ、前記1~Nラインと前記(N+1)~Mラインはビデオの前記フレームの異なるラインである、請求項1に記載の装置。
【請求項13】
前記第1のGPUは、前記共通メモリコントローラと通信する少なくとも第1のバッファを指す少なくとも1つのスキャンアウトユニットを備え、前記第2のGPUは、前記共通メモリコントローラと通信する第2のバッファを備え、前記第1のGPUは、前記第1のバッファに関連付けられた1~Nラインをレンダリングし、前記第2のGPUは、前記第2のバッファに関連付けられた(N+1)~Mラインをレンダリングし、前記1~Nラインと前記(N+1)~Mラインは、ビデオのフレームの異なるラインである、請求項6に記載の装置。
【請求項14】
前記第1のGPUは、前記第1のGPU及び前記第2のGPUから出力されたビデオデータを管理する、請求項1に記載の装置。
【請求項15】
前記GPUは、各GPUからのフレーム及び/またはラインを一緒に多重化してビデオを出力するマルチプレクサにビデオデータを出力する、請求項1に記載の装置。
【請求項16】
マルチグラフィックス処理ユニット(GPU)シミュレーション環境において、
複数のGPUに、ビデオの各フレームをレンダリングさせること、ビデオの各フレームの各部分をレンダリングさせること、またはビデオの各フレーム及びビデオのフレームの各部分をレンダリングさせることと、
前記GPUのうちの第1のGPUが前記GPU(複数可)の少なくとも他の1つからフレーム情報を受信することを使用して、または前記GPUの出力を一緒に多重化して、または前記GPUのうちの第1のGPUが前記GPU(複数可)の少なくとも他の1つからフレーム情報を受信することと前記GPUの出力を一緒に多重化することとの両方を使用して、フレーム出力を制御することと、
を含む、方法。
【請求項17】
複数のGPUにビデオの各フレームをレンダリングさせることを含む、請求項16に記載の方法。
【請求項18】
複数のGPUにビデオの各フレームの各部分をレンダリングさせることを含む、請求項16に記載の方法。
【請求項19】
前記GPUのうちの第1のGPUが前記GPU(複数可)のうちの少なくとも他の1つのGPUからフレーム情報を受信することを使用して、フレーム出力を制御することを含む、請求項16に記載の方法。
【請求項20】
シミュレーションビデオの各第1の部分をレンダリングするようにプログラムされた少なくとも第1のグラフィックス処理ユニット(GPU)と、
シミュレーションビデオの各第2の部分をレンダリングするようにプログラムされた少なくとも第2のGPUと、
を備えるコンピュータシミュレーション装置であって、
少なくとも前記第1のGPUは、前記第1の部分と前記第2の部分とを結合し、完全なシミュレーションビデオを確立する出力をレンダリングするようにプログラムされる、
コンピュータシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は一般的に、家庭用ゲームコンソール及びクラウドゲーム用のスケーラブルなゲームコンソールCPU/GPU設計に関する。
【背景技術】
【0002】
コンピュータゲームコンソールなどのシミュレーションコンソールは、通常、中央処理装置(CPU)及びグラフィックス処理ユニット(GPU)を含む「システムオンチップ」(SoC)と呼ばれる単一のチップを使用する。半導体のスケーリングの問題と歩留まりの問題により、複数の小さなチップを高速コヒーレントバスでリンクして大きなチップを形成することができる。このようなスケーリングソリューションは、巨大なモノリシックチップを構築する場合に比べて性能がやや劣るが、コストは低くなる。
【発明の概要】
【0003】
本明細書で理解されるように、SoC技術は、ゲームコンソールなどのビデオシミュレーションコンソールに適用することができ、詳細には、単一のSoCは、コンソールの「軽量」バージョンに提供されてよく、複数のSoCは、「軽量」バージョンよりも優れた処理能力とストレージ機能を備えた「ハイエンド」バージョンのコンソールを提供するために使用されてよい。「ハイエンド」システムは、ランダムアクセスメモリ(RAM)やその他の機能など、より多くのメモリを含むことができ、同じゲームコンソールチップを使用して、より性能の高いクラウド最適化バージョンにも使用されてよい。
【0004】
ただし、本明細書でさらに理解されるように、そのような「ハイエンド」の複数のSoC設計は、ソフトウェアとシミュレーション(ゲーム)の設計に課題をもたらし、従ってスケーリングが必要になる。例として、不均一メモリアクセス(NUMA)及びスレッド管理に関連する課題と、ハードウェアを最適な方法で使用するためのヒントをソフトウェアに提供することに関する課題が生じる。協調して動作するGPUの場合、フレームバッファの管理と高解像度マルチメディア(HDMI(登録商標))出力の制御に対処し得る。他の課題にも本明細書で対処し得る。
【0005】
従って、装置は、少なくとも第1のグラフィックス処理ユニット(GPU)と、第1のGPUに通信可能に結合された少なくとも第2のGPUとを備える。GPUは、第1のGPUがビデオの第1の部分をレンダリングし、第2のGPUがビデオの第2の部分をレンダリングし、第1の部分と第2の部分は互いに異なるように、ビデオの各部分をレンダリングするようにプログラムされる。
【0006】
言い換えると、第1のGPUは、ビデオの第1のフレームをレンダリングして第1の出力を提供するようにプログラムされてよく、第2のGPUは、ビデオの全てのフレームではなく一部のフレームをレンダリングして第2の出力を提供するようにプログラムされる。第2のGPUによってレンダリングされるフレームは、第1のGPUによってレンダリングされるフレームとは異なる。第1の出力及び第2の出力を組み合わせて、ビデオをレンダリングしてよい。さらに、または代替として、第1のGPUは、ビデオのフレームの全てのラインではなく一部のラインの全てをレンダリングして第1のライン出力を提供するようにプログラムされてよく、第2のGPUは、ビデオのフレームの全てのラインではなく一部のラインをレンダリングして第2のライン出力を提供するようにプログラムされてよい。第2のGPUによってレンダリングされるラインは、第1のGPUによってレンダリングされるラインとは異なる。第1のライン出力と第2のライン出力を組み合わせて、フレームをレンダリングすることができる。
【0007】
ある実施形態では、第1のGPU及び第2のGPUは、共通のダイ上に実装される。他の実施形態では、第1のGPU及び第2のGPUは、それぞれ、第1のダイ及び第2のダイ上に実装される。第1のGPUは、第1の中央処理装置(CPU)に関連付けられてよく、第2のGPUは、第2のCPUに関連付けられてよい。
【0008】
ある実施態様では、第1のメモリコントローラ及び第1のメモリは第1のGPUに関連付けられ、第2のメモリコントローラ及び第2のメモリは第2のGPUに関連付けられる。他の実施態様では、GPUは共通メモリを制御する共通メモリコントローラを共有する。
【0009】
ある例では、各GPUは、他のGPUによってレンダリングされるビデオのフレームとは異なるビデオの全てのフレームではなく一部のフレームの全てをレンダリングして、各出力を提供するようにプログラムされる。GPUの出力を組み合わせて、ビデオをレンダリングすることができる。他の例では、あるGPUによってレンダリングされるビデオのフレームのラインは、他のGPUによってレンダリングされるフレームのラインとは異なるように、各GPUは、ビデオのフレームの全てのラインではなく一部のラインの全てをレンダリングして、各出力を提供するようにプログラムされる。GPUの出力を組み合わせて、ビデオをレンダリングすることができる。
【0010】
例示的な技術では、第1のGPUは、第2のGPUによって管理される少なくとも1つのバッファを指す少なくとも1つのスキャンアウトユニットを備える。第1のGPUは、バッファを循環してビデオのフレームの完全なシーケンスを出力するようにプログラムすることができる。別の例では、第1のGPUは、第1のGPUによって管理されるバッファのみを指す少なくとも1つのスキャンアウトユニットを備え、ダイレクトメモリアクセス(DMA)を介して第2のGPUからビデオのフレームを受信して、ビデオのフレームの完全なシーケンスを出力するようにプログラムされる。
【0011】
さらに別の例示的な技術では、第1のGPUは、少なくとも第1のGPUによって管理される第1のバッファと第2のGPUによって管理される第2のバッファとを指す少なくとも1つのスキャンアウトユニットを備える。この技術では、第1のGPUは、バッファを循環して、第1のバッファに関連付けられる1~Nラインと第2のバッファに関連付けられる(N+1)~Mラインを使用したビデオのフレームの完全なシーケンスを出力するようにプログラムされる。1~Nラインは、同じフレームの、(N+1)~Mラインに関連付けられた異なるラインである。
【0012】
さらに、第1のGPUは、第1のGPUによって管理される少なくとも第1のバッファを指し、第2のGPUによって管理される第2のバッファを指さない少なくとも1つのスキャンアウトユニットを備えることができる。この実施態様では、第1のGPUは、バッファを循環して、第1のバッファに関連付けられた1~Nラインと、第2のバッファに関連付けられ、ダイレクトメモリアクセス(DMA)を介して第1のGPUによって受信された(N+1)~Mラインを使用してビデオのフレームの完全なシーケンスを出力するようにプログラムされてよい。1~Nラインと(N+1)~Mラインは、ビデオのフレームの異なるラインである。
【0013】
さらに別の技術では、第1のGPUは、共通メモリコントローラと通信する少なくとも第1のバッファを指す少なくとも1つのスキャンアウトユニットを備える。第2のGPUは、共通メモリコントローラと通信する第2のバッファを備える。第1のGPUは、第1のバッファに関連付けられた1~Nラインをレンダリングするようにプログラムされ、第2のGPUは、第2のバッファに関連付けられた(N+1)~Mラインをレンダリングするようにプログラムされる。
【0014】
ある例では、第1のGPUが第1のGPU及び第2のGPUからのビデオデータ出力を管理する。これは、HDMI(登録商標)ポートを第1のGPUに物理的に接続することによって影響を受ける場合がある。他の例では、GPUは、マルチプレクサにビデオデータを出力し、マルチプレクサは、各GPUからのフレーム及び/またはラインを一緒に多重化してビデオを出力する。
【0015】
別の態様では、マルチグラフィックス処理ユニット(GPU)シミュレーション環境において、方法は、複数のGPUに、ビデオの各フレームをレンダリングさせること、ビデオの各フレームの各部分をレンダリングさせること、または、ビデオの各フレーム及びビデオのフレームの各部分の両方をレンダリングさせることを含む。方法は、GPUのうちの第1のGPUが他のGPU(複数可)の少なくとも1つからフレーム情報を受信することを使用して、または、GPUの出力を一緒に多重化して、または、GPUのうちの第1のGPUが他のGPU(複数可)の少なくとも1つからフレーム情報を受信し、且つGPUの出力を一緒に多重化することの両方を使用して、フレーム出力を制御することを含む。
【0016】
別の態様では、コンピュータシミュレーション装置は、シミュレーションビデオの各第1の部分をレンダリングするようにプログラムされた少なくとも第1のグラフィックス処理ユニット(GPU)と、シミュレーションビデオの各第2の部分をレンダリングするようにプログラムされた少なくとも第2のGPUとを備える。少なくとも第1のGPUは、第1の部分と第2の部分を結合し、完全なシミュレーションビデオを確立する出力をレンダリングするようにプログラムされる。
【0017】
本出願の詳細は、その構造と動作との両方について、添付図面を参照すると最もよく理解でき、図面中、類似の参照番号は、類似の部分を指す。
【図面の簡単な説明】
【0018】
図1】本原理に従った例を含む例示的なシステムのブロック図である。
図2】クラウドベースゲームシステムの概略図である。
図3】1つのファブリック上に2つのAPUが示されている例示的な非均一メモリアクセス(NUMA)アーキテクチャのブロック図である。NUMAアーキテクチャは、別個のファブリック上のAPUによって実装されてもよく、3つ以上のAPUが実装されてもよいことは理解されよう。
図4】2つのAPUが示され、各プロセッサがそれぞれのダイに実装されている共有メモリアーキテクチャのブロック図である。アーキテクチャはより少ないダイまたは1つのダイに実装されてもよく、3つ以上のAPUが実装されてもよいことは理解されよう。
図5】2つのAPUが示され、各APUはそれぞれのファブリックに実装され、共有メモリコントローラがファブリックの1つに実装されている共有メモリアーキテクチャのブロック図である。アーキテクチャは1つのファブリック上に実装されてもよく、3つ以上のAPUが1つまたは複数のダイに実装されてもよいことは理解されよう。
図6】スキャンアウトユニットを備えた例示的なGPUのブロック図である。
図7】各GPUが同じビデオの他のGPUとは異なるフレームをレンダリングし、GPUの1つが他のGPU(複数可)のバッファを指すレジスタを有する、各GPUが完全なフレームをレンダリングするNUMA実施形態の例示的な論理のフローチャートである。
図8】各GPUが同じビデオの他のGPUとは異なるフレームをレンダリングし、GPUの1つが他のGPU(複数可)からDMAを介してフレームを受信する、各GPUが完全なフレームをレンダリングするNUMA実施形態の例示的な論理のフローチャートである。
図9】各GPUが同じフレームの他のGPUとは異なる部分をレンダリングする、各GPUがフレームの一部(例えば、ライン)をレンダリングするNUMA実施形態の例示的な論理のフローチャートである。
図10】各GPUが同じフレームの他のGPUとは異なる部分をレンダリングし、GPUの1つが他のGPU(複数可)からDMAを介してラインを受信する、各GPUがフレームの一部(例えば、ライン)をレンダリングするNUMA実施形態の例示的な論理のフローチャートである。
図11】各GPUが同じフレームの他のGPUとは異なる部分をレンダリングする、各GPUがフレームの一部(例えば、ライン)をレンダリングする共有メモリの実施形態の例示的な論理のフローチャートである。
図12】HDMI(登録商標)ポートに接続された単一のGPUを使用してビデオ出力を制御するための例示的な論理のフローチャートである。
図13】マルチプレクサを使用してビデオ出力を制御するための例示的な論理のフローチャートである。
図14図13に関連付けられたブロック図である。
【発明を実施するための形態】
【0019】
本開示は一般的に、限定ではないが、分散コンピュータゲームネットワーク、ビデオブロードキャスティング、コンテンツ配信ネットワーク、仮想マシン、及び機械学習アプリケーションなどの消費者電子(CE)デバイスネットワークの態様を含むコンピュータエコシステムに関する。本明細書のシステムは、クライアントコンポーネントとサーバコンポーネントとの間でデータが交換され得るように、ネットワークを介して接続されたサーバコンポーネント及びクライアントコンポーネントを備えてよい。クライアントコンポーネントは、Sony PlayStation(登録商標)などのゲームコンソール、関連するマザーボード、ポータブルテレビ(例えば、スマートテレビ、インターネット対応テレビ)、ラップトップコンピュータ及びタブレットコンピュータなどのポータブルコンピュータ、並びにスマートフォン及び以下で検討する追加の例を含む他のモバイルデバイスを含む、1つまたは複数のコンピューティングデバイスを含み得る。これらのクライアントデバイスは、様々な動作環境で動作してよい。例えば、クライアントコンピュータの一部は、例として、OrbisもしくはLinux(登録商標)オペレーティングシステム、Microsoft製のオペレーティングシステム、またはUnix(登録商標)オペレーティングシステム、またはApple ComputerもしくはGoogleによって製造されたオペレーティングシステムを採用してよい。これらの動作環境は、MicrosoftもしくはGoogleもしくはMozillaによって作成されたブラウザ、または下記に説明されるインターネットサーバによってホストされるウェブサイトにアクセスできる他のブラウザプログラム等、1つまたは複数の閲覧プログラムを実行するために使用されてよい。また、本原理に従った動作環境は、1つまたは複数のコンピュータゲームプログラムを実行するために使用されてよい。
【0020】
サーバ及び/またはゲートウェイは、インターネット等のネットワークを介してデータを受信及び送信するサーバを構成する命令を実行する1つまたは複数のプロセッサを備えてよい。または、クライアント及びサーバは、ローカルイントラネットまたは仮想プライベートネットワークを介して接続することができる。サーバまたはコントローラは、Sony PlayStation(登録商標)などのゲームコンソール及び/またはその1つまたは複数のマザーボード、パーソナルコンピュータなどによってインスタンス化されてよい。
【0021】
情報は、クライアントとサーバの間でネットワークを介して交換されてよい。この目的のために、及びセキュリティのために、サーバ及び/またはクライアントは、ファイアウォール、ロードバランサ、一時的ストレージ、及びプロキシ、並びに信頼性及びセキュリティのための他のネットワークインフラストラクチャを備えてよい。1つまたは複数のサーバは、ネットワークメンバーにオンラインソーシャルウェブサイト等のセキュアコミュニティを提供する方法を実施する装置を形成してよい。
【0022】
本明細書で使用される場合、命令は、システムにおいて情報を処理するためにコンピュータにより実施されるステップを指す。命令は、ソフトウェア、ファームウェア、またはハードウェアにおいて実施することができ、システムのコンポーネントが実施する任意のタイプのプログラムされたステップを含むことができる。
【0023】
プロセッサは、アドレスライン、データライン及び制御ラインなどの様々なライン、並びにレジスタ及びシフトレジスタによって論理を実行することができる従来の任意の汎用シングルチッププロセッサまたはマルチチッププロセッサであってよい。
【0024】
本明細書でフローチャート及びユーザインタフェースによって説明されるソフトウェアモジュールは、様々なサブルーチン、手順等を含み得る。本開示を限定することなく、特定のモジュールによって実行されるように規定される論理は、他のソフトウェアモジュールに再分配できる、及び/または単一のモジュールに一緒に組み合わされることができる、及び/または共有可能ライブラリにおいて利用可能にできる。
【0025】
本明細書に説明される本原理は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせとして実装することができる。従って、実例となるコンポーネント、ブロック、モジュール、回路、及びステップは、それらの機能の観点から説明される。
【0026】
さらに上記に指摘したものについて、下記に説明される論理ブロック、モジュール、及び回路は、汎用プロセッサ、デジタルシグナルプロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)もしくは特定用途向け集積回路(ASIC)等の他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェアコンポーネント、または本明細書に説明される機能を行うように設計されたそれらのいずれかの組み合わせによって実装できるまたは行うことができる。プロセッサは、コントローラもしくは状態機械、またはコンピューティングデバイスの組み合わせによって実装することができる。
【0027】
以下で説明される機能及び方法は、ソフトウェアにおいて実装されるとき、限定ではないが、Java(登録商標)、C#、またはC++等の適切な言語において記述することができ、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、コンパクトディスクリードオンリメモリ(CD-ROM)、またはデジタル多用途ディスク(DVD)等の他の光ディスクストレージ、磁気ディスクストレージもしくは着脱可能サムドライブ等を含む他の磁気記憶装置等のコンピュータ可読記憶媒体に記憶することができ、またはそれらを通して伝送することができる。接続は、コンピュータ可読媒体を確立し得る。このような接続は、例として、光ファイバ、同軸ワイヤ、デジタル加入者回線(DSL)、及びツイストペアワイヤを含む有線ケーブルを含み得る。このような接続は、赤外線及び無線を含む無線通信接続を含み得る。
【0028】
一実施形態に含まれるコンポーネントは、他の実施形態では、任意の適切な組み合わせで使用することができる。例えば、本明細書で説明される、及び/または図で示される様々なコンポーネントの任意のコンポーネントが、組み合わされてよい、交換されてよい、または他の実施形態から排除されてよい。
【0029】
「A、B及びCのうちの少なくとも1つを有するシステム」(同様に「A、BまたはCのうちの少なくとも1つを有するシステム」及び「A、B、Cのうちの少なくとも1つを有するシステム」)は、A単独、B単独、C単独、A及びBを一緒に、A及びCを一緒に、B及びCを一緒に、及び/またはA、B及びCを一緒に有するシステムなどを含む。
【0030】
ここで、具体的に図1を参照すると、本原理による、上記で言及され、以下でさらに説明される例示的なデバイスのうちの1つまたは複数を含み得る例示的なシステム10が示されている。システム10に含まれる例示的なデバイスのうちの第1のデバイスは、限定ではないが、テレビチューナ(同等に、テレビを制御するセットトップボックス)を備えたインターネット対応テレビなどのオーディオビデオデバイス(AVD)12などの消費者電子(CE)デバイスである。しかし、AVD12は、代わりに、電気器具または家庭用品、例えば、コンピュータ制御でインターネット対応の冷蔵庫、洗濯機、または乾燥機であってよい。代わりに、AVD12は、また、コンピュータ制御型インターネット対応(「スマート」)電話、タブレットコンピュータ、ノートブックコンピュータ、例えば、コンピュータ制御型インターネット対応時計、コンピュータ制御型インターネット対応ブレスレット、他のコンピュータ制御型インターネット対応デバイス等のウェアラブルコンピュータ制御デバイス、コンピュータ制御型インターネット対応ミュージックプレイヤ、コンピュータ制御型インターネット対応ヘッドフォン、インプラント可能な皮膚用デバイス等のコンピュータ制御型でインターネット対応のインプラント可能なデバイス等であってよい。それにも関わらず、AVD12は、本原理を実施する(例えば、本原理を実施するように他のCEデバイスと通信し、本明細書に説明される論理を実行し、本明細書に説明されるいずれかの他の機能及び/または動作を行う)ように構成されることを理解されたい。
【0031】
従って、このような原理を実施するために、AVD12は、図1に示されるコンポーネントの一部または全てによって確立できる。例えば、AVD12は、1つまたは複数のディスプレイ14を備えてよく、ディスプレイ14は、高解像度または「4K」もしくはそれ以上の超高解像度のフラットスクリーンによって実装されてよく、ディスプレイのタッチによりユーザ入力信号を受信するためにタッチ対応であってよい。AVD12は、本原理に従って音声を出力するための1つまたは複数のスピーカ16と、例えば、可聴コマンドをAVD12に入力して、AVD12を制御するための、例えば、音声受信機/マイクロホン等の少なくとも1つの追加の入力デバイス18とを備えてよい。例示的なAVD12はまた、1つまたは複数の中央処理装置(CPU)、グラフィックス処理ユニット(GPU)、及びそれらの組み合わせ等の1つまたは複数のプロセッサ24の制御下で、インターネット、WAN、LANなどの少なくとも1つのネットワーク22を介して通信するための1つまたは複数のネットワークインタフェース20を備えてよい。中央処理装置(CPU)及びグラフィックス処理ユニット(GPU)として機能する単一のダイ上の処理チップは、本明細書では加速処理装置(APU)と呼ばれてよいことに留意されたい。
【0032】
インタフェース20は、限定ではないが、Wi-Fi送受信機であってよく、Wi-Fi送受信機は、限定ではないが、メッシュネットワーク送受信機などの無線コンピュータネットワークインタフェースの例である。プロセッサ24は、例えば、画像を提示するようにディスプレイ14を制御することや、ディスプレイ14から入力を受信すること等の本明細書に説明されるAVD12の他の要素を含むAVD12が本原理を実施するように制御することが理解されよう。さらに、ネットワークインタフェース20は、例えば、有線もしくは無線のモデムもしくはルータ、または、例えば、無線テレフォニ送受信機もしくは上述したWi-Fi送受信機等の他の適切なインタフェースであってよいことに留意されたい。
【0033】
上記のものに加えて、AVD12はまた、例えば、別のCEデバイスに(例えば、有線接続を使用して)物理的に接続する高解像度マルチメディアインタフェース(HDMI(登録商標))ポートもしくはUSBポート、及び/またはヘッドフォンを通してAVD12からユーザに音声を提供するためにAVD12にヘッドフォンを接続するヘッドフォンポート等の1つまたは複数の入力ポート26を備えてよい。例えば、入力ポート26は、オーディオビデオコンテンツのケーブルまたは衛星ソース26aに有線でまたは無線で接続されてよい。よって、ソース26aは、例えば、別個のもしくは統合されたセットトップボックス、または衛星受信機であってよい。または、ソース26aは、以下でさらに説明されるチャネル割り当て目的でユーザが好みと見なし得るコンテンツを含むゲームコンソールまたはディスクプレイヤであってよい。ソース26aは、ゲームコンソールとして実装されるとき、CEデバイス44に関連して以下で説明されるコンポーネントの一部または全てを備えてよい。
【0034】
AVD12は、さらに、一時的信号ではない、ディスクベースストレージまたはソリッドステートストレージ等の1つまたは複数のコンピュータメモリ28を備えてよく、これらのストレージは、場合によっては、スタンドアロンデバイスとしてAVDのシャーシ内で、またはAVプログラムを再生するためにAVDのシャーシの内部もしくは外部のいずれかでパーソナルビデオ録画デバイス(PVR)もしくはビデオディスクプレイヤとして、または取り外し可能メモリ媒体として具現化されてよい。また、ある実施形態では、AVD12は、限定ではないが、携帯電話受信機、GPS受信機、及び/または高度計30等の位置または場所の受信機を備えることができ、位置または場所の受信機は、例えば、少なくとも1つの衛星タワーもしくは携帯電話タワーから地理的位置情報を受信し、その情報をプロセッサ24に提供し、及び/またはAVD12がプロセッサ24と併せて配置されている高度を決定するように構成される。しかしながら、携帯電話受信機、GPS受信機、及び/または高度計以外の別の適切な位置受信機が、本原理に従って、例えば、3つの次元全てにおいてAVD12の位置を決定するために使用されてよいことは理解されたい。
【0035】
AVD12の説明を続けると、ある実施形態では、AVD12は、1つまたは複数のカメラ32を備えてよく、1つまたは複数のカメラ32は、例えば、サーマルイメージングカメラ、ウェブカメラなどのデジタルカメラ、及び/またはAVD12に統合され、本原理に従って写真/画像及び/またはビデオを収集するようプロセッサ24によって制御可能なカメラであってよい。また、AVD12に含まれるのは、Bluetooth(登録商標)及び/または近距離無線通信(NFC)技術を各々使用して、他のデバイスと通信するためのBluetooth(登録商標)送受信機34及び他のNFC要素36であってよい。例示的なNFC要素は、無線周波数識別(RFID)要素であってよい。
【0036】
さらにまた、AVD12は、プロセッサ24に入力を提供する1つまたは複数の補助センサ37(例えば、加速度計、ジャイロスコープ、サイクロメータなどの動きセンサ、または磁気センサ、赤外線(IR)センサ、光学センサ、速度及び/またはケイデンスセンサ、(例えば、ジェスチャコマンドを検知するための)ジェスチャセンサなど)を備えてよい。AVD12は、プロセッサ24に入力を提供する無線テレビ放送を受信するためのOTHテレビブロードキャストポート38を備えてよい。上述したものに加え、AVD12は、赤外線(IR)送信機及び/またはIR受信機及び/または赤外線データアソシエーション(IRDA)デバイスなどのIR送受信機42も備えてよいことに留意されよう。AVD12に給電するためのバッテリ(図示せず)が備えられてよい。
【0037】
さらに図1を参照して、AVD12に加えて、システム10は、1つまたは複数の他のCEデバイスタイプを含んでもよい。一例では、以下に説明されるサーバを通して送信されたコマンドを介してディスプレイを制御するために第1のCEデバイス44が使用されてよく、第2のCEデバイス46は、第1のCEデバイス44と同様のコンポーネントを備えてよく、よって、詳細には説明しない。図示の例では、2つのCEデバイス44、46のみが示されるが、より少ないまたはより多くのデバイスが使用されてよいことは理解されよう。上記に示唆したように、CEデバイス44/46及び/またはソース26aは、ゲームコンソールによって実装されてよい。または、CEデバイス44/46のうちの1つまたは複数は、Google Chromecast、Roku、Amazon FireTVの商標で販売されるデバイスによって実装されてよい。
【0038】
図示の例では、本原理を示すために、3つのデバイス12、44、46は全て、例えば家庭のエンターテインメントネットワークのメンバーであること、または少なくとも、住宅等の場所において相互に近接して存在していることが想定される。しかしながら、本原理について、他に明示的に主張されない限り、破線48によって示されるように、特定の場所に限定されない。
【0039】
例示の非限定的な第1のCEデバイス44は、上述のデバイス、例えば、ポータブル無線ラップトップコンピュータまたはノートブックコンピュータまたはゲームコントローラ(「コンソール」とも称される)のいずれか1つによって確立されてよく、従って、以下で説明されるコンポーネントの1つまたは複数を有してよい。第2のCEデバイス46は、限定ではないが、Blu-ray(登録商標)プレイヤなどのビデオディスクプレイヤ及びゲームコンソールなどによって確立されてよい。第1のCEデバイス44は、例えば、AVD12にAV再生及び一時停止コマンドを発するためのリモートコントロール(RC)であってよい、または、第1のCEデバイス44は、第2のCEデバイス46によって実装されたゲームコンソールと有線もしくは無線リンクを介して通信し、AVD12、パーソナルコンピュータ、無線電話上などへのビデオゲームの提示を制御するタブレットコンピュータ、ゲームコントローラなどのより洗練されたデバイスであってよい。
【0040】
従って、第1のCEデバイス44は、ディスプレイをタッチしてユーザ入力信号を受信するためにタッチ対応であってよい1つまたは複数のディスプレイ50を備えてよい。第1のCEデバイス44は、本原理に従って音声を出力するための1つまたは複数のスピーカ52と、例えば、デバイス44を制御するために可聴コマンドを第1のCEデバイス44に入力するための、例えば、音声受信機/マイクロホン等の少なくとも1つの追加の入力デバイス54とを備えてよい。例示的な第1のCEデバイス44はまた、1つまたは複数のCPU、GPU、及びそれらの組み合わせなどの1つまたは複数のCEデバイスプロセッサ58の制御の下、ネットワーク22を介した通信ための1つまたは複数のネットワークインタフェース56を備えてよい。従って、インタフェース56は、限定ではないが、Wi-Fi送受信機であってよく、Wi-Fi送受信機は、メッシュネットワークインタフェースを含む無線コンピュータネットワークインタフェースの例である。プロセッサ58は、例えば、画像を提示するようにディスプレイ50を制御すること、及びそこから入力を受信すること等、本明細書に説明される第1のCEデバイス44の他の要素を含む、第1のCEデバイス44が本原理を実施するように制御することが理解されよう。さらに、ネットワークインタフェース56は、例えば、有線もしくは無線のモデムもしくはルータ、または、例えば、無線テレフォニ送受信機もしくは上述したWi-Fi送受信機等の他の適切なインタフェースであってよいことに留意されたい。
【0041】
上記に加えて、第1のCEデバイス44はまた、例えば、別のCEデバイスに(例えば、有線接続を使用して)物理的に接続するHDMI(登録商標)ポートもしくはUSBポート、及び/またはヘッドフォンを経由して第1のCEデバイス44からユーザに音声を提供するために第1のCEデバイス44にヘッドフォンを接続するためのヘッドフォンポート等の1つまたは複数の入力ポート60を備えてよい。第1のCEデバイス44は、さらに、ディスクベースストレージまたはソリッドステートストレージ等の1つまたは複数の有形コンピュータ可読記憶媒体62を備えてよい。また、ある実施形態では、第1のCEデバイス44は、限定ではないが、携帯電話及び/またはGPS受信機及び/または高度計64など、位置または場所の受信機を備えることができ、位置または場所の受信機は、例えば、三角測量を使用して、少なくとも1つの衛星タワー及び/または携帯電話タワーから地理的位置情報を受信し、その情報をCEデバイスプロセッサ58に提供し、及び/または第1のCEデバイス44がCEデバイスプロセッサ58と共に配置される高度を決定するように構成される。しかしながら、本原理に従って、例えば、全ての3つの次元において第1のCEデバイス44の位置を決定するために、携帯電話及び/またはGPS受信機及び/または高度計以外の他の適切な位置受信機が使用されてもよいことを理解されたい。
【0042】
第1のCEデバイス44の説明を続けると、ある実施形態では、第1のCEデバイス44は、1つまたは複数のカメラ66を備えてよく、1つまたは複数のカメラ66は、例えば、サーマルイメージングカメラ、ウェブカメラなどのデジタルカメラ、及び/または第1のCEデバイス44に統合され、本原理に従って写真/画像及び/またはビデオを収集するようにCEデバイスプロセッサ58によって制御可能であるカメラであってよい。また、第1のCEデバイス44に含まれるのは、Bluetooth(登録商標)及び/または近距離無線通信(NFC)技術を各々使用して、他のデバイスと通信するためのBluetooth(登録商標)送受信機68及び他のNFC要素70であってよい。例示的なNFC要素は、無線周波数識別(RFID)要素であってよい。
【0043】
さらにまた、第1のCEデバイス44は、CEデバイスプロセッサ58に対する入力を提供する1つまたは複数の補助センサ72(例えば、加速度計、ジャイロスコープ、サイクロメータ等の運動センサ、または磁気センサ、赤外線(IR)センサ、光学センサ、速度及び/またはケイデンスセンサ、(例えば、ジェスチャコマンドを検知するための)ジェスチャセンサ等)を備えてよい。第1のCEデバイス44は、CEデバイスプロセッサ58に対する入力を提供する、例えば、1つまたは複数の気候センサ74(例えば、気圧計、湿度センサ、風力センサ、光センサ、温度センサ等)及び/または1つまたは複数の生体センサ76等のさらに他のセンサを備えてよい。上述のものに加え、ある実施形態では、第1のCEデバイス44は、赤外線(IR)送信機及び/またはIR受信機、及び/または赤外線データアソシエーション(IRDA)デバイス等のIR送受信機78も含んでもよいことに留意されたい。第1のCEデバイス44に給電するためにバッテリ(図示せず)が備えられてよい。CEデバイス44は、上記で説明された通信モード及び関連コンポーネントの任意のものを通してAVD12と通信してよい。
【0044】
第2のCEデバイス46は、CEデバイス44に関して示されたコンポーネントの一部または全てを含み得る。いずれか1つまたは両方のCEデバイスは、1つまたは複数のバッテリによって給電されてよい。
【0045】
ここで、上記の少なくとも1つのサーバ80を参照すると、このサーバは、少なくとも1つのサーバプロセッサ82と、ディスクベースストレージまたはソリッドステートストレージなどの、少なくとも1つの有形コンピュータ可読記憶媒体84とを備える。ある実施態様では、媒体84は、1つまたは複数のSSDを含む。サーバはまた、少なくとも1つのネットワークインタフェース86を備え、少なくとも1つのネットワークインタフェース86は、ネットワーク22を介した図1の他のデバイスとの通信を可能にし、実際には、本原理に従ってサーバとクライアントデバイスとの間の通信を促進し得る。ネットワークインタフェース86は、例えば、有線もしくは無線モデムもしくはルータ、Wi-Fi送受信機、または、例えば、無線テレフォニ送受信機などの他の適切なインタフェースであってよいことに留意されたい。ネットワークインタフェース86は、サーバプロセッサ82を通過することなく、いわゆる「ファブリック」などのネットワークに媒体84を直接接続するリモートダイレクトメモリアクセス(RDMA)インタフェースであってよい。ネットワークは、イーサネット(登録商標)ネットワーク及び/またはファイバチャネルネットワーク及び/またはInfiniBandネットワークを含み得る。典型的には、サーバ80は、物理サーバ「スタック」に配列され得る「ブレード」と称される複数のコンピュータにおいて複数のプロセッサを備える。
【0046】
従って、ある実施形態では、サーバ80は、インターネットサーバまたは「サーバファーム」全体であってよく、「クラウド」機能を含んでよく、「クラウド」機能を行ってよく、それにより、システム10のデバイスは、例えば、ネットワークゲームアプリケーションに関する例示的な実施形態ではサーバ80を介して「クラウド」環境にアクセスし得る。または、サーバ80は、1つまたは複数のゲームコンソール、または図1に示される他のデバイスと同じ部屋にもしくはその近くにある他のコンピュータによって実装されてよい。
【0047】
本明細書における方法は、プロセッサ、適切に構成された特定用途向け集積回路(ASIC)もしくはフィールドプログラマブルゲートアレイ(FPGA)モジュール、または当業者によって認識される任意の他の便利な方式によって実行されるソフトウェア命令として実装されてよい。採用される場合、ソフトウェア命令は、CD ROMまたはフラッシュドライブ等の非一時的デバイスで具体化されてよい。代わりに、ソフトウェアコード命令は、無線信号もしくは光信号などの一時的構成で、またはインターネットを通したダウンロードを介して具体化されてよい。
【0048】
図2は、Sony PlayStation(登録商標)、Microsoft Xboxes(登録商標)などの1つまたは複数のクライアントゲームコンソール200(「ゲームシステム」、「ゲームデバイス」とも呼ばれる)が有線及び/または無線リンクを介して、クラウドベースのゲーム管理サーバ202、典型的にはインターネットサーバと通信するクラウドコンピュータゲーム環境の形式の例示的なアプリケーションを示す。次に、管理サーバ202は、限定ではないが、フラッシュや3D Xpointなどのソリッドステートメモリを使用するNVMe対応SSDを含むランダムアクセスメモリ(RAM)などの1つまたは複数のソリッドステートメモリ206を備える第1のゲームサーバ204(複数のサーバ「ブレード」によって具体化されてよい)と通信する。管理サーバ202は、1つまたは複数のソリッドステートメモリ214を備えるN番目のゲームサーバ212を含む、最大「N」個のそのようなサーバと通信する。
【0049】
アーキテクチャ例
図3は、単一のファブリック300が単一のダイまたは各ダイ上に2つのAPU302、304を保持する例示の非均一メモリアクセス(NUMA)アーキテクチャを示す。NUMAアーキテクチャは、3つ以上のAPUによって実装されてよいことは理解されよう。同じファブリック300上の各ダイチップに実装される場合、一般的に「バス」と呼ばれ得る通信経路は、ファブリックのビア層によって確立されてよい。
【0050】
図に示すように、各APUは、1つまたは複数のCPU304及び1つまたは複数のGPU306、通常、APUごとに1つのCPU及び1つのGPUを備えてよい。各APU302は、ランダムアクセスメモリ(RAM)などのメモリ310へのアクセスを制御する各APU302自体のメモリコントローラ308に関連付けられてよい。APU間の通信は、本明細書では便宜上「バス」と呼ぶ1つまたは複数の通信経路312の影響を受ける場合がある。
【0051】
従って、各APU(または個々のGPU)は、それ自体のメモリコントローラを有し、従って、RAMなどのそれ自体の専用メモリを有する。GPU間に(キャッシュコヒーレントな)共有バスが存在し得るため、1つのGPUが他のGPUのメモリにアクセスできる。
【0052】
図4は、CPU400とGPU402をそれぞれ含み、各CPU及び各GPUがそれ自体の各ダイに実装されている2つのAPUが示されている共有メモリアーキテクチャのブロック図である。アーキテクチャはより少ないダイまたは1つのダイに実装されてもよいことと、3つ以上のAPUが実装されてもよいことは理解されよう。APUは、メモリ406を制御する共通のメモリコントローラ404を共有し、APUは、各通信経路を介して互いに通信してよく、メモリコントローラと通信してよい。
【0053】
図5は、各APUがそれ自体の各ダイ500上に実装され、共有メモリコントローラ506がダイ500のうちの1つに実装されている2つのAPU(それぞれCPU502及びGPU504を含む)が示された共有メモリアーキテクチャのブロック図である。アーキテクチャは1つのダイに実装されてもよく、3つ以上のAPUが実装されてよいことは理解されよう。共有メモリコントローラ506は、メモリ508へのアクセスを制御し、APUは、1つまたは複数の通信経路510を介して互いに通信してよく、且つ、メモリコントローラ506と通信してよい。
【0054】
図6は、スキャンアウトユニット602を備えた例示的なGPU600のブロック図である。スキャンアウトユニット602は、各メモリバッファ(または同等に、バッファID)606を指す複数のレジスタ604を備えることができる。ビデオエンコーダ608は、スキャンアウトユニット602と通信してよい。ビデオエンコーダ608は、HDMI(登録商標)上で通常出力され得るのと同じ画像の符号化を可能にするクラウドゲームのシナリオに特に適用可能である。
【0055】
スキャンアウトユニット602は、ビデオの各フレームのピクセルをラインごとに、例えばHDMI(登録商標)に出力することを担当している。以下でさらに詳しく説明するように、スキャンアウトユニットは正しいビデオフレームを読み取るようにプログラムできる。これは、このためにレジスタ604のセットを維持し、各レジスタは異なるバッファ606を指し、スキャンアウトユニットはバッファを循環する。
【0056】
フレームバッファ管理
ここでさらに詳しく説明するように、複数のGPUがフレームバッファを管理するためにどのように連携するかについては、複数のアプローチがある。各GPUは、他のGPUとは異なるビデオフレームをレンダリングしてよい。または、各GPUは同じフレームの異なる部分をレンダリングしてよい。例えば、フレームの上の1からNラインは第1のGPUによってレンダリングされてよく、同じフレームの下のN+1からMラインは第2のGPUによってレンダリングされてよい。GPU間の他のパターン/部分が使用されてよい。
【0057】
図7は、各GPUが同じビデオの他のGPUとは異なるフレームをレンダリングし、GPUの1つが他のGPU(複数可)のバッファを指すレジスタを有する、各GPUが完全なフレームをレンダリングするNUMA実施形態の例示的な論理のフローチャートである。ブロック700で開始して、オペレーティングシステム及び/またはGPUドライバは、フレームバッファとして使用されるメモリ領域を割り当てる。通常、フレームバッファは少なくとも2つのバッファで構成される(さらにレイテンシが追加される)。1つのバッファは、HDMI(登録商標)などを介して出力される現在表示されているフレームに使用され、第2のバッファは次のフレームのレンダリングに使用することができる。必要に応じて、追加の深度バッファやその他のバッファが存在し得る。
【0058】
図7では、GPUドライバ及び/またはシミュレーションプログラム(例えば、コンピュータゲーム)がレンダリングコマンドを送信して、GPUを交互に切り替える。GPUドライバまたはゲームは、全ての奇数番号のフレームをレンダリングするように第1のGPUに命令し、全ての偶数番号のフレームをレンダリングするように第2のGPUに命令することでこれを管理する。
【0059】
このような実装では、論理はブロック702に移動し、スキャンアウトユニットのレジスタを、各レジスタが異なるGPUによって管理されるメモリバッファを指すようにプログラムしてよい。ブロック704に進むと、GPUは、それが管理するバッファと、サイクリングGPUのレジスタが指す他のGPUによって管理されるバッファとを循環して、HDMI(登録商標)に存在し得るビデオの全てのフレームを出力する。3つ以上のGPUが使用される場合、各GPUによってレンダリングされるフレームの数はそれに応じて減少する可能性がある、例えば、N個のGPUのそれぞれがビデオの1/Nのフレームをレンダリングし、各GPUは他のGPUがレンダリングするのとは異なるフレームをレンダリングすることを理解されたい。
【0060】
図8は、スキャンアウトユニットが「ローカル」GPUのメモリからのフレームのみをスキャンアウトする代替アプローチを示す。図7の場合と同様に、図8のブロック800において、オペレーティングシステム及び/またはGPUドライバは、フレームバッファとして使用されるメモリ領域を割り当てる。ただし、ブロック802に移動すると、第1のGPUのレジスタは、そのGPUにローカルなバッファのみを指すようにプログラムされ、第2のGPUからのフレームは、フレームのレンダリングの完了時にブロック804で、直接メモリアクセス(DMA)を介して第1のGPUにコピーされる。「第1の」GPUは、第2のGPUからの(フレーム完了を通知するための)割り込みに基づいてフレームをコピーする第1のGPUによって確立されてよいことに留意されたい。ブロック806に進み、第1のGPUは、第1のGPUが管理するバッファと、ブロック804で第2のGPUからDMAを介して受信したフレームとを循環して、HDMI(登録商標)に存在し得るビデオの全てのフレームを出力する。
【0061】
図4及び5に示すような共有メモリコントローラアーキテクチャでは、スキャンアウトユニットがデータを読み取ることについて問題がないため、フレームをコピーする必要がないことに留意されたい。どのGPUがレンダリングしても、タイミングは同じである。
【0062】
図9は、各GPUが同じフレームの他のGPUとは異なる部分をレンダリングする、各GPUがフレームの一部(例えば、ライン)をレンダリングするNUMA実施形態の例示的な論理のフローチャートである。ブロック900で開始して、第1のGPUは、第1のNライン(ライン1からN)などのフレームの第1の部分をレンダリングし、ブロック902で、第2のGPUは、同じフレームの異なる部分、例えば、ラインN+1からM(最後のライン)をレンダリングする。3つ以上のGPUが使用される場合、各GPUによってレンダリングされるフレームの部分はそれに応じて削減されることを理解されたい。いずれにせよ、ブロック904では、完全なフレーム(ライン1からM)が第1のGPUによって出力される。
【0063】
上記に影響を与えるために、スキャンアウトユニットは、それぞれ異なるGPUによって管理される複数のバッファからフレームごとに読み取るように変更することができる。従って、スキャンアウトユニットは、第1の「N」ラインを第1のバッファ(それ自体の内部レンダリング用であってよい)から生成し、次のNラインを第2のGPUに関連付けられ得る第2のバッファから生成するようにプログラムされてよい。
【0064】
図10は、第2のGPUのDMAのメモリが第1のGPUのビデオバッファの一部に渡されることを除いて、図9と同様の別の代替アプローチを示す。従って、ブロック1000で開始して、第1のGPUは、第1のNライン(ライン1からN)などのフレームの第1の部分をレンダリングし、ブロック1002で、第1のGPUは、同じフレームの異なる部分、例えば、ラインN+1からM(最後のライン)を第2のGPUから受信する。ブロック1004では、完全なフレーム(ライン1からM)が第1のGPUによって出力される。
【0065】
図11は、各GPUが同じフレームの他のGPUとは異なる部分をレンダリングする、各GPUがフレームの一部(例えば、ライン)をレンダリングする共有メモリの実施形態の例示的な論理のフローチャートである。従って、ブロック1100において、第1のGPUは、フレームの第1の部分をバッファにレンダリングし、ブロック1102において、第2のGPUは、同じフレームの第2の部分を同じバッファにレンダリングする。ブロック1104で、完全なフレーム(ライン1からM)が共有バッファによって出力される。
【0066】
HDMI(登録商標)出力を制御するGPUの決定
図12は、どのGPUが出力を管理するかを決定するための第1のアプローチが、ブロック1200において、製造時にHDMI(登録商標)(またはディスプレイポート)出力を特定のGPUに単に物理的に接続することを含むことを示す。従って、マッピングは製造時に制御される。
【0067】
図13及び14は、別のアプローチにおいて、図13のブロック1300において、それ自体の各ビデオ出力を伴う各GPU1400(図14に示される)が実装されることを示す。GPU1400の出力は、ブロック1302において、両方のGPU出力ポート間で切り替わる1つまたは複数のマルチプレクサ1402によって多重化される。
【0068】
信号が暗号化されることが多いことを認識して、マルチプレクサ1402の出力を受信して暗号化に対処する暗号化チップ1404が備えられてよい。基本的に、多重化出力は、暗号化チップ1404によってHDMI(登録商標)に変換されるDisplayPort信号を確立してよい。
【0069】
ビデオ構成
本明細書で理解されるように、ユーザ体験(UX)グラフィックス及びシミュレーション(例えば、ゲーム)ビデオは、両方とも異なるGPUでレンダリングすることができる。UXレンダリングは通常、要求が高くないため、UXをレンダリングする必要があるのは1つのGPUだけ、典型的には、前のセクションでHDMI(登録商標)出力を処理するために選択されたGPUである。このGPUは、UXとゲームとを含む最終的なフレームバッファ画像を構成する。ゲーム、ゲームのフレームバッファは、フレームに依存し得る。合成エンジンは、各GPUのメモリまたは共有メモリコントローラからメモリを直接読み取ってよい。
【0070】
電力管理
電力管理技術を実施して、電力消費を制限することによって熱負荷を下げてよい。消費電力が周波数に対して直線的に、電圧の二乗として変化することを認識して、ビデオゲームなどのコンピュータシミュレーションプログラムは、周波数/電圧/電力のしきい値に近づくと、周波数及び/または電圧を自動的に低減することにより、電力消費を所定のしきい値内に維持するようにプログラムされてよい。これを行うには、1つまたは複数のGPUなどのハードウェアからのレジスタを読み取って現在の使用量の割り当てを決定し、必要に応じてパーティクルエフェクトなどの特定のエフェクトをスロットリングしてよい。同じ原理が携帯電話にも当てはまる。スロットリングはオーバークロック技術によって実施されてよく、GPUはアーキテクチャ内のCPUとは独立してスロットリングされてよい。ビデオの解像度は、消費電力関連のしきい値内にとどまりながらも、シミュレーションの実行を維持するために低減されてよい。電力消費関連のしきい値に近づくと、音声及び/または視覚的な警告(LEDの作動など)が提示されてよい。
【0071】
ユーザは、追加の熱予算のために追加料金を支払うことが許可されてよい。同様に、追加料金を支払うことで、ユーザはクラウドサーバ上でより多くのダイ(従って、より多くのAPU)を割り当てられてよく、低料金を支払うユーザには1つのダイのみが割り当てられる。これは、システムメトリックを呼び出してスレッドを生成し、メトリックに基づいてサービスの品質を決定するようにAPIをプログラミングすることによって、アプリケーションが開始するときに実行されてよい。システムメトリックは、より少ないダイを割り当てられている低料金を支払うユーザをフィルタリングすることができる。同時処理を伴うマルチスレッドゲームの利点を望む高料金を支払うユーザには、低料金を支払うユーザよりも多くのダイを割り当てることができる。
【0072】
いくつかの例示的な実施形態を参照して本原理を説明したが、これらは限定することを意図しておらず、各種の代替的な構成が本明細書で特許請求される主題を実施するために使用されてよいことは理解されよう。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
【国際調査報告】