【文献】
本間 文,ロードマップチェック Roadmap Check−NVIDIAが狙うクラウドコンピューティングの改革,日経Win PC,日本,日経BP社,2012年 6月29日,第18巻 第11号,第130−131頁
(58)【調査した分野】(Int.Cl.,DB名)
前記グラフィックスプロセッサは、前記所定のデータ量の映像データのサイズを変換し、変換後の映像データの表色系を変換することを特徴とする請求項1から4のいずれかに記載のゲーム提供サーバ。
【発明を実施するための形態】
【0011】
本発明の実施の形態の概要を述べる。本発明の実施の形態に係るゲーム提供サーバは、グラフィックスプロセッサが内蔵するコンピュートシェーダが、ディスプレイ出力に依存せずにゲーム映像の拡大処理または縮小処理(以下、単に「拡縮処理」という。)および表色系の変換を実行する。また、グラフィックスプロセッサとビデオエンコーダである符号化部が同一チップに実装されており、符号化部は、ディスプレイ出力を介さずに圧縮ビデオストリームを生成する。
【0012】
図1は、一般的なクラウドゲーミングシステム400と、ネットワーク200を介してクラウドゲーミングシステム400と接続するクライアント装置300とを示す図である。
【0013】
クラウドゲーミングシステム400は、少なくともゲーム提供サーバ410および符号化部460を含む。ゲーム提供サーバ410は、クライアント装置300のユーザに提供するためのゲームの映像を生成する。ゲーム提供サーバ410がレンダリングして生成したゲームの映像は、ネットワーク200を介してクライアント装置300にストリーミング配信される。このため、符号化部460は、ゲーム提供サーバ410が生成したゲームの映像を、例えばH.264等の動画圧縮規格に基づいて符号化する。
【0014】
クライアント装置300は、ネットワーク200を介して取得した映像を復号して表示する。このため、クライアント装置300は、少なくともゲームの映像を復号して表示するための演算能力を持った装置であり、例えば据え置き型のゲーム機やPC(Personal Computer)、携帯ゲーム機、スマートフォンやタブレット、ファブレット、電子辞書、電子書籍端末等である。クライアント装置300は、キーボードやコントローラ等の入力インタフェース(図示せず)を介して取得したユーザの操作をネットワーク200を介してゲーム提供サーバ410に送信する。
【0015】
クラウドゲーミングシステム400を用いてゲームを実行する場合、スタンドアローンで実行される一般的なゲームコンソールと比較すると、入力インタフェースの入力がクライアント装置300に表示されるゲームの映像に反映されるまでのレイテンシが長くなる。クラウドゲーミングシステム400におけるレイテンシは、ネットワーク200のレイテンシに起因するもののほか、ゲーム映像の符号化や、その復号に起因するものが大きくなる傾向にある。
【0016】
図2は、クラウドゲーミングシステム400におけるゲームの映像の流れを説明するための図である。
図2に示すように、ゲーム提供サーバ410は、グラフィックスプロセッサ420、メモリ430、および表示制御部440を備える。
【0017】
グラフィックスプロセッサ420は、ゲーム提供サーバ410の図示しないCPU(Central Processing Unit)の制御の下、ゲーム提供サーバ410が提供するゲームの映像の生成を主に担当するプロセッサであり、いわゆるGPU(Graphics Processing Unit)と呼ばれるプロセッサである。グラフィックスプロセッサ420は、レンダリングして生成したゲームの映像を、フレームバッファであるメモリ430に格納する。
【0018】
表示制御部440は一般にディスプレイコントローラと呼ばれる。表示制御部440は、メモリ430に格納されたゲームの映像を、ネットワーク200を介して接続するクライアント装置300の表示出力のフォーマットに適合するように変換する。より具体的に、表示制御部440は、メモリ430に格納されたゲームの映像を読み出し、クライアント装置300のモニタの表示出力フォーマットに合わせるために、映像のスケーリングと後述する表色系の変換を実行する。
【0019】
ゲーム提供サーバ410は、クライアント装置300に提供するゲームを実行するサーバであるため、ゲーム提供サーバ410自身はゲームの実行画面を表示するための表示デバイスを持たない。そのため、表示制御部440は表示デバイスの代わりに映像キャプチャ部450と接続し、映像キャプチャ部450に対して実行画面を表示出力する。なお、表示制御部440は、映像キャプチャ部450実行画面を出力するときに、映像のスケーリングと後述する表色系の変換を実行する。
【0020】
映像キャプチャ部450は、表示制御部440の制御の下、メモリ430に格納されたゲームの映像を取り込む。より具体的に、表示制御部440は、垂直同期信号(Vertical Synchronizing signal;VSYNC)を発生し、映像キャプチャ部450は、表示制御部440が発生した垂直同期信号を契機として、フレーム単位でゲームの映像を取り込む。
【0021】
映像キャプチャ部450は、取り込んだ映像を符号化部460に送信する。符号化部460は、取得した映像を所定の動画圧縮規格に基づいて符号化し、ネットワーク200を介してクライアント装置300に送信する。
【0022】
ここで、グラフィックスプロセッサ420は一般に、R(Red;赤色)、G(Green;緑色)およびB(Blue;青色)を単位とするRGB表色系を用いてゲームの映像を生成する。これに対し、符号化部460は、輝度および色差信号を用いるYUV表色系の映像を符号化するように構成されているのが一般的である。このため上述したように、表示制御部440は、グラフィックスプロセッサ420が生成したRGB表色系の映像を、符号化部460で使用可能なYUV表色系に変換する。
【0023】
クライアント装置300は、ネットワークを介して取得した符号化された映像を復号し、クライアント装置300が有する表示制御部(図示せず)の制御の下、ゲームの映像を表示する。
【0024】
図3は、
図2に示すゲーム提供サーバ410の構成におけるゲーム映像の提供の流れを模式的に示す図であり、映像の生成、符号化、配信等の時間経過を示す図である。
図3において、横軸600は時間の流れを示す時間軸である。
【0025】
ゲーム提供サーバ410が提供するゲームは、一般にビデオ同期信号である垂直同期信号に同期して映像を表示するように作られる。このようなゲームでは、グラフィックスプロセッサ420は、表示制御部440が生成する垂直同期信号を契機として、ゲーム映像のレンダリングを開始する。
図3においては、表示制御部440は、時刻V1、V2、V3、V4に垂直同期信号を生成している。なお、時刻V5においては、クライアント装置300の図示しない表示制御部が、クライアント装置300でゲーム映像を表示するための垂直同期信号を生成している。
図3において、時刻V1〜B1、時刻V2〜B2、時刻V3〜B3、時刻V4〜B4、および時刻V5〜B5は、映像を描画しないブランキング期間であり、いわゆる「VBLANK」期間である。
【0026】
ゲーム映像のレンダリングが完了し、ゲームの映像をメモリ430に出力し終えると、グラフィックスプロセッサ420は表示制御部440に対して、フレーム切り替えの指示を発行する。
図3は、グラフィックスプロセッサ420が時刻B1にゲーム映像1のレンダリングを開始し、時刻G1にゲーム映像のレンダリングを終了したことを示している。同様に、グラフィックスプロセッサ420は時刻B2およびB3に、それぞれゲーム映像2およびゲーム映像3のレンダリングを開始し、時刻G2およびG3に、それぞれゲーム映像2およびゲーム映像3のレンダリングを終了している。
【0027】
表示制御部440は、グラフィックスプロセッサ420が発行したフレーム切り替えの指示があった後に、メモリ430に格納されたゲーム映像のフレームを、映像キャプチャ部450への出力を開始する。
図3においては、例えば、時刻G1においてグラフィックスプロセッサ420はゲーム映像1の生成を終えたため、表示制御部440に対してフレーム切り替えの指示を発行した。しかしながら、表示制御部440は、グラフィックスプロセッサ420からフレーム切替の指示を取得しても、直ちにゲームの映像を映像キャプチャ部450に表示出力するわけではない。
【0028】
その代わり、表示制御部440は、垂直同期信号の生成を契機として、ゲームの映像を映像キャプチャ部450に表示出力する。このため、グラフィックスプロセッサ420がゲーム映像1の生成を終えた時刻G1から、表示制御部440が垂直同期信号を生成する時刻V2までの間、ゲーム映像1はメモリ430に格納されたまま処理されない。ゆえに、処理のなされない時刻G1から時刻V2までの間は、ゲーム提供サーバ410のスループットを下げ、レイテンシを大きくする要因となりうる。時刻G2から時刻V3までの間、および時刻G3から時刻V4までの間も同様である。
【0029】
時刻V3において、表示制御部440がゲーム映像1の表示出力を完了すると、すなわち、表示制御部440がゲーム映像1の拡縮処理および表色系の変換処理をして、映像キャプチャ部450が処理後のゲーム映像1のキャプチャを完了すると、符号化部460は、ゲーム映像1の符号化を開始する。その後時刻N1において、符号化部460が配信の単位となる所定量のデータの符号化を完了したため、符号化されたゲーム映像1は、ネットワーク200を介してクライアント装置300に送られる。時刻D1において、クライアント装置300は取得した符号化データの復号を開始し、時刻B5において、初めてゲーム映像のレンダリング1がクライアント装置300のモニタに表示される。
【0030】
時刻B2において表示制御部440がゲーム映像1の表示出力を開始すると同時に、グラフィックスプロセッサ420はゲーム映像1に続く映像であるゲーム映像2のレンダリングを開始する。また時刻B3では、グラフィックスプロセッサ420はゲーム映像3のレンダリングを開始し、表示制御部440はゲーム映像2の表示出力を開始し、符号化部460はゲーム映像1の符号化を開始する。このように、グラフィックスプロセッサ420、表示制御部440、および符号化部460は、それぞれに割りあれられたタスクを並列に実行することができ、レイテンシの減少に寄与する。しかしながら、これらのタスク開始の契機は表示制御部440が生成する垂直同期信号を契機とするため、各部における処理の待ち時間が発生し、レイテンシの増大の要因となっている。
【0031】
本願の発明者は、表示制御部440が生成する垂直同期信号に依存せずに、ゲーム映像の表色系の変換や映像の符号化を開始することで、クラウドゲーミングシステム400全体でレイテンシを短くしうる可能性について認識するに至った。
【0032】
図4は、実施の形態に係るクラウドゲーミングシステム100と、ネットワーク200を介してクラウドゲーミングと接続するクライアント装置300とを示す図である。
図4において、ネットワーク200およびクライアント装置300は、
図1に示すネットワーク200およびクライアント装置300と同じである。一方、
図4に示す実施の形態に係るクラウドゲーミングシステム100は、
図1に示す一般的なクラウドゲーミングシステム400とは異なり、ゲーム提供サーバ110と符号化部460とは一体となって構成されている。
【0033】
図5は、実施の形態に係るゲーム提供サーバ110の機能を実現するシステムオンチップ(System on a Chip;SoC)112の内部構成を模式的に示す図である。グラフィックスプロセッサ120と符号化部160とはともにハードウェアで実現されている。
図5に示すように、グラフィックスプロセッサ120と符号化部160とは、1つのチップであるシステムオンチップ112上に実装される。このため、グラフィックスプロセッサ120と符号化部160との間のデータのやりとりは、グラフィックスプロセッサ120と符号化部160とが異なるチップに実装されている場合と比較して高速となる。
【0034】
なお、
図5においては、説明の便宜のため、システムオンチップ112上にグラフィックスプロセッサ120と符号化部160との2つの機能構成のみを示し、その他の構成は省略しているが、実施際の回路構成としてはCPUやバス、各種コントローラも含む。システムオンチップ112の回路構成の詳細については後述する。
【0035】
実施の形態に係るグラフィックスプロセッサ120も、上述したグラフィックスプロセッサ420と同様にGPUで実現されており、グラフィックスシェーディングに特化した演算器を複数搭載している。グラフィックスシェーディングに特化した演算器はシェーダとも呼ばれ、主にレンダリング対象のオブジェクトの色を計算することに用いられる。実施の形態に係るグラフィックスプロセッサ120は既知のプログラマブルシェーダを備えており、映像のレンダリングのみならず、他の数値演算にも利用可能である。
【0036】
そこで実施の形態に係るグラフィックスプロセッサ120は、内蔵するプログラマブルシェーダを用いることで、映像データの拡縮処理を実行する。映像データの拡縮は既知の線形補間やスプライン補間を用いて実現できる。具体的には、映像データを複数の処理単位に分割し、プログラマブルシェーダを用いてパイプライン処理をすることで実現できる。
【0037】
グラフィックスプロセッサ120はまた、内蔵するプログラマブルシェーダを用いて映像データの表色系を変換する。より具体的には、グラフィックスプロセッサ120は、内蔵するプログラマブルシェーダを用いて、RGB表色系の映像データを、符号化部160が扱うことができるYUV表色系の映像データに変換する。これは既知の3行3列の変換行列の演算によって実現できる。ゆえに、実施の形態に係るグラフィックスプロセッサ120は、ゲームの映像を生成するゲーム映像生成部122と、ゲームの映像の拡縮を実行する映像拡縮部124と、ゲームの映像の表色系を変換する表色系変換部126との機能を合わせ持つ。
【0038】
このように、実施の形態に係るグラフィックスプロセッサ120は、
図2に示すグラフィックスプロセッサ420とは異なり、レンダリングして生成したゲームの映像を表示制御部440に渡さない。その代わりに、グラフィックスプロセッサ120が内蔵するプログラマブルシェーダを用いてゲームの映像の拡縮と表色系変換とを実行する。これにより、表示制御部440が発行する垂直同期信号に依存せず、垂直同期信号を待つことなくゲームの映像の拡縮や表色系変換を開始できる。このため、レイテンシを低減することが可能となる。
【0039】
図6は、実施の形態に係るシステムオンチップ112の回路構成を模式的に示す図である。
図6に示すように、実施の形態に係るシステムオンチップ112は、同一チップ上にCPU10とグラフィックスプロセッサ120とが実装されている。グラフィックスプロセッサ120はバス18を介してCPU10と接続している。グラフィックスプロセッサ120はまた、バス18を介してメモリ130とも接続している。以下、メモリ130、グラフィックスプロセッサ120、およびCPU10を接続するバス18を、GPUバス18と呼ぶ。
【0040】
CPU10は、バス20を介してメモリ130と接続している。以下、CPU10とメモリ130とを接続するバス20を、CPUバス20と呼ぶ。このように、CPU10はGPUバス18とCPUバス20とに接続するため、これらのバスとはブリッジ12を介して接続する。また、メモリ130はGPUバス18とCPUバス20とに接続する。このため、メモリ130におけるCPU10またはグラフィックスプロセッサ120との間でのデータのやりとりは、メモリ制御部14を介して実行する。
【0041】
グラフィックスプロセッサ120とCPU10は、メモリ130に格納されたデータを共有することができる。グラフィックスプロセッサ120とCPU10との間で緊密なデータ交換ができるため、グラフィックスプロセッサ120とCPU10とが異なる基板上に実装される場合と比較して、高いスループットを実現することができる。
【0042】
メモリ130に格納されたデータは、I/O(Input / Output)ブリッジ22を介して符号化部160に転送される。
【0043】
グラフィックスプロセッサ120中のゲーム映像生成部122は、ネットワーク200を介してクライアント装置300に配信するゲームの映像を生成する。ゲーム映像生成部122は、生成した映像データをメモリ130に格納する。グラフィックスプロセッサ120中の映像拡縮部124は、メモリ130に所定のデータ量の映像データが格納されることを契機として、その所定のデータ量の映像データのサイズを変換する。ここで「所定のデータ量」とは、符号化部160が扱うデータの単位量であり、映像データの圧縮ビデオストリームを生成する単位量である。説明の便宜上、以下所定のデータ量を「スライス単位」と記載することがある。「スライス単位」は、符号化部160の処理能力等を勘案して定めればよいが、例えば縦16ピクセル、横16ピクセルのマクロブロックを複数束ねた量である。なお、GPUバス18には表示制御部140も接続されており、ゲーム映像生成部122は、表示制御部140が生成する垂直同期信号にしたがってゲームの映像を生成する。
【0044】
グラフィックスプロセッサ120中の表色系変換部126は、映像拡縮部124によるサイズ変換後の映像データの表色系を変換する。なお、映像拡縮部124によるサイズ変換が必要ない場合、表色系変換部126は、メモリ130に所定のデータ量の映像データが格納されることを契機として、その映像データの表色系を変換する。ここで表色系変換部126は、メモリ130に格納された映像データを、符号化部160が符号化可能な表色系の映像データに変更する。すなわち、表色系変換部126はメモリ130をそのまま作業領域として利用する。これにより、他の作業領域で表色系の変換を実行する場合と比較して、データの転送に要する時間を抑制することができ、レイテンシの低減に寄与する。符号化部160が符号化可能な表色系とは、例えばYUV表色系である。
【0045】
上述したように、映像拡縮部124や表色系変換部126は、プログラマブルシェーダによって実現されている。プログラマブルシェーダの処理単位は上述したスライス単位である。ゲーム映像生成部122が生成する映像はスライス単位となるように分割され、スライス単位の処理結果がメモリ130に書き出される。スライス単位の処理結果がメモリ130に書き出された時点で、グラフィックスプロセッサ120は、符号化部160に対する同期信号を発効する。符号化部160は、グラフィックスプロセッサ120が発行した同期信号の受信を契機として、符号化を開始する。なお、グラフィックスプロセッサ120と符号化部160との間の同期処理は、たとえばセマフォ等の高速なものが用いられる。
【0046】
同期命令を受け取った符号化部160は、グラフィックスプロセッサ120が生成したスライス単位の映像データを読み出して、圧縮ビデオストリームを生成する。スライス単位の圧縮ストリーム生成が完了すると、符号化部160は、CPU10に対して同期命令を生成する。符号化部160からCPU10に対する同期命令は、割り込みのほか、共有メモリを介したセマフォが用いられる。CPU10は、スライス単位でネットワーク200を介してクライアント装置300に圧縮ビデオデータを送出する。
【0047】
図7は、
図4に示すゲーム提供サーバ110の構成における、ゲーム映像の提供の流れを模式的に示す図である。
図3と同様に、
図7において横軸600は時間の流れを示す時間軸である。
【0048】
一般に、ゲームは垂直同期信号に同期して映像を表示するように作られる。したがって、ゲーム提供サーバ110も、垂直同期信号に同期して映像を表示するように作られたゲームを提供する。
図7においては、表示制御部140は、時刻V1、V2に垂直同期信号を生成している。なお、時刻V5においては、クライアント装置300の図示しない表示制御部が、クライアント装置300でゲーム映像を表示するための垂直同期信号を生成している。
図7において時刻V1〜B1、時刻V2〜B2、および時刻V5〜B5がVBLANK期間である。
【0049】
時刻G1において、ゲーム映像生成部122がゲーム映像のレンダリングが完了し、ゲーム映像をメモリ130に出力し終える。ゲーム映像生成部122がゲーム映像のレンダリングが完了すると、映像拡縮部124および表色系変換部126は、表示制御部140が垂直同期信号を生成するか否かに関わらず、ゲーム映像の拡縮および表色系の変換を開始する。以下、ゲーム映像の拡縮および表色系の変換を総称して「フォーマット変換」と記載する。
図7においては、時刻G1とほぼ同時期に、映像拡縮部124または表色系変換部126によるフォーマット変換が開始する。
【0050】
上述したとおり、映像拡縮部124または表色系変換部126は、符号化部160の処理単位であるスライス単位でフォーマット変換を開始する。したがって、符号化部160は、スライス単位でフォーマット変換が完了すると、すぐに符号化を開始する。このため、
図7に示すように、ゲーム映像1に関するフォーマット変換が実行される時刻G1〜F1と、その符号化が実行される時刻E1〜E2はほぼ重複しており、並列的に処理される。
【0051】
時刻N1において、スライス単位の圧縮ストリーム生成が完了したため、符号化部160は、CPU10に対して同期命令を生成する。そのため、時刻N1において、符号化されたゲーム映像1は、ネットワーク200を介してクライアント装置300への配信が開始される。時刻D1において、クライアント装置300は取得した符号化データの復号を開始し、時刻B5において、初めてゲーム映像のレンダリング1がクライアント装置300のモニタに表示される。
【0052】
このように、実施の形態に係るゲーム提供サーバ110は、表示制御部140が生成する垂直同期信号に依存せずに、ゲーム映像のフォーマット変換や符号化を開始することができる。このため、ゲーム映像のフォーマット変換や符号化の開始が垂直同期信号を契機とする場合と比較して、各部における処理の待ち時間が発生し、レイテンシを低減することができる。
【0053】
以上説明したように、実施の形態に係るゲーム提供サーバ110によれば、クラウドゲーミングサービスにおけるレイテンシを減少する技術を提供することができる。
【0054】
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。