佐藤カフジのVR GAMING TODAY!

「VRが3倍速い」は本当か? Pascalアーキテクチャ、性能向上の内訳

その性能と機能から見るGeForce GTX 1080のVR的価値と将来性

著者近影

 5月9日に発表されたNVIDIAの新GPU「GeFroce GTX 1080」および「GeForce GTX 1070」。これらが搭載する新アーキテクチャ「Pascal」は、VRゲーミングに大きな前進をもたらす存在になりうるだろうか?

 NVIDIAはGTX 1080について、通常のゲームではMaxwell世代最強のGPUであるGTX Titan Xよりも20~25%高速であり、VR用途に限っては2倍も高速であると主張している。前世代のGeForce GTX 980比で言えばなんと2.7倍だ。下位モデルである「GeForce GTX 1070」にしても、GPUコアの演算性能は6.5TFlopsとされており、これはTitan X並の数字である。

 NVIDIAの主張が本当なら凄いことだ。しばらく後に登場してくるであろう普及モデルのGTX 1060(という型番になるかはわからないが、とにかく現行の売れ筋であるGTX 960の後継モデル)は、VRゲーマーにとってコストパフォーマンス的に最強のGPUに君臨することになるだろう。

 とはいえ、いきなり2倍だ、3倍だと言われても眉唾に感じてしまうのが人間心理というもの。本稿ではNVIDIAのが主張する各種の数字や新機能を分析して、Pascal世代のGPUが持つポテンシャルとその将来性ををできるだけ正確に把握してみたい。

フラッグシップのGeForce GTX 1080。希望小売価格599ドルで、5月27日販売開始予定
グッと安価なGeForce GTX 1070。希望小売価格379ドルで、6月10日からの販売開始を予定

GTX 1080がTitan Xよりも20~25%高速となる理由

 NVIDIAが公式に出している数字を整理してみよう。NVIDIA公式のデータシートを元に、純粋なハードウェア性能を測る上で重要な数字を列挙してみる。

型番CUDAコア数ブーストクロック演算性能(公称)データレートメモリI/F幅メモリ帯域幅希望小売価格
Titan X30721075Mhz6.6TFlops7Gbps384bit336.5GB/s999ドル
108025601733Mhz9TFlops10Gbps256bit320,0GB/s599ドル
107019201683Mhz6.5TFlops8Gbps256bit256.0GB/s379ドル

GTX 1080のスペックシート
GTX 1070のスペックシート

演算性能はクロック向上による効果

「GTX 1080はTitan Xより速い」とするグラフ

 まず演算性能について見てみよう。これについてはCUDAコア数とベースクロックから導き出される。比較を簡単にするため、それぞれ、1つのCUDAコアから1クロックあたりどれだけの演算力を引き出せるかを計算(演算性能÷クロック÷ CUDAコア数)してみる。

CUDAコアあたりの演算性能
Titan X:2.0Flops/Core/Clock
1080:2.02Flops/Core/Clock
1070:2.01Flops/Core/Clock

 演算性能の公称値が大雑把なので多少の揺れがあるが、CUDAコア当たりの性能はほぼ変わらないようだ。そのことはPascalのブロックダイアグラムがMaxwellのそれとほとんど変わらない事実と一致する。それでいてPascal世代GPUの性能が大幅に高まっているのは、その動作クロックが前世代から一気に1.5倍程度引き上げられている点が大きい。ここはNVIDIAがPascalアーキテクチャについて「徹底的なエンジニアリングを行なった結果」と主張している部分だ。

Pascal(GTX 1080)のブロックダイアグラム
回路設計の改良で動作クロックが大幅に向上

メモリ性能はデータレート向上×圧縮効率の向上による

GTX 1080では、GDDR5Xを採用したことでデータレートが1.4倍、圧縮技術の向上で1.2倍、トータルで前世代比1.7倍のメモリ性能としている
Maxwellから1.2倍の効率化を果たしたというメモリ圧縮技術

 メモリ性能については、搭載するメモリのデータレートがそのままメモリ帯域幅になって現われている形だ。特に注目されるのは、GDDR5の高速版であるGDDR5Xを搭載したGTX 1080のメモリ帯域幅が、Titan Xとほぼ同等になっていること。前世代から引き続きGDDR5を搭載するGTX 1070にしても、GDDR5の仕様上の限界近くである8Gbpsというデータレートを引き出すことで、256GB/sという帯域幅を実現している。これは前世代のGTX 980(224GB/s)よりも一回り(14%程度)速い。

 さらに、メモリ性能に影響するのがデータ圧縮技術だ。Maxwell世代から搭載されているこの技術は、GPU内のメモリ転送を圧縮し効率化することで、実質的なメモリ帯域幅を向上させる効果を持つ。そしてNVIDIAが主張するところによれば、Pascalに搭載されたメモリ圧縮技術は、Maxwell世代比でおよそ1.2倍の効率を持つという。

 というわけで上記データのPascal搭載GPUのメモリ帯域幅にそれぞれ1.2を掛けて比較してみよう。

Titan X: 336.5GB/s
GTX 1080: 384GB/s
GTX 1070: 307.2GB/s

 このように、実効性能ベースではGTX 1080はTitan X比で約114%のメモリ帯域幅、GTX 1070では約91%の帯域幅となる。メモリ圧縮技術を考慮しない素のハードウェア性能ではTitan Xが最速であるものの、内部アルゴリズムの改良によってGTX 1080ではTitan Xを越え、GTX 1070ではTitan Xに迫る実効性能を実現しているというわけだ。

「Project Cars」での比較。Maxwellではエッジ部分が圧縮できずに残っていたところも、Pascal世代ではしっかり圧縮できているとする図

コストパフォーマンスを考える

 NVIDIAでは通常ゲームでの性能について、「GTX 1080はTitan Xよりも20~25%速い」と主張している。確かに、GTX 1080のほうが演算性能が高く、実効メモリ帯域幅もやや速いため、20%高速というのは充分にありえる数字だ。

 前述のようにGTX 1080は実効メモリ帯域がTitan Xよりも14%高速である。演算性能は6.6TFlops→9.0TFlopsで向上分は36%。それでいてトータルの性能向上を20%とすると、演算性能の向上の影響は比較的小さく、メモリ帯域幅アップによる性能への影響が非常に強いことがわかる。Pascal世代のGPUでも、ゲームグラフィックス描画性能のボトルネックになっているのはやはりメモリ性能なのだ。

 これを前提に考えると、GTX 1070はTitan Xとほぼ同等の演算能力を持ち、実効メモリ帯域幅は91%なので、通常ゲームにおける絶対的な性能も、Titan X比で9割程度となることが予想される。これを元にTitan Xを1としてコストパフォーマンス(価格あたりの性能)を比較してみると、次のようになる。

GTX 1080:2.0
GTX 1070:2.37

 GTX 1080はTitan Xに比べて2倍のコストパフォーマンス、そしてGTX 1070は2.4倍近くのコストパフォーマンスということがわかった。VRの性能がどうであるかを抜きにしても、Pascal世代のGPUは相当に「おトク」であるようだ。

「VRではTitan Xの2倍速い」の内訳と実際

VRではさらに速いとするグラフ

 さて、素の性能の内訳が明らかになったので、VRの話に移ろう。NVIDIAでは、VRゲームにおいてGTX 1080はTitan X比で2倍速いと主張している。ものすごくざっくりとした数字なので正確性に欠ける議論になりそうだが、ここでは仮に、VRゲームでGTX 1080がTitan Xの2.0倍速いと仮定する。

 素の性能では、上述のようにGTX 1080が20~25%高速であるとされているので、良い方の数字(25%)を採用してVRゲームにおける性能向上の割合を計算すると、1.6倍となる。この数字は、NVIDIAがPascalで新搭載した「Simultaneous Multi-Projection(SMP)」機能によるVRレンダリングの最適化による向上分とほぼ一致する。

 このSMP機能は、ざっくり言うと「それぞれ異なる射影変換行列を持つ複数のビューポートに、1パスでまとめてレンダリングする」というもの。この機能は無駄の多いVRレンダリングを効率化するために使える。

「Simultaneous Multi-Projection(SMP)」機能でさらにVRが1.5倍速!と主張
GTX 1080について、前世代のGTX 980との比較。VRでの性能向上がかなり大きめに見積もられている

レンズ・マッチド・シェーディング

SMP機能による擬似半球面投影

 SMPを用いる1つめの手法「Lens Matched Shading」は、描画ピクセル数の削減を狙う。VRでは100度を超える高視野角の映像をレンダリングするが、1つのピューポートで描画する従来の方法では、3D空間を平面上に投影する都合上、視野の端に当たる部分が“無駄に引き伸ばされたような”格好となる。これは視野角が広がるほど、指数関数的に無駄が多くなるという特性がある。例えば、180度の視野角の映像を平面のビューポートに描画することを考えるとわかりやすい。この場合、ビューポートの両端が無限遠となるため、描画には無限のピクセル数が必要となる(つまり永遠に描画が終わらない)。

 であれば、最初からビューポートを半球状にすればいい、というのがこの手法の基本的なアイディアだ。NVIDIAによれば、SMP機能では最大で16のビューポートを1パスで描画できるという。これらのビューポートのそれぞれは平面だが、複数の平面を半球面を近似するように配置することはできる。そうして構成された擬似半球面に映像をレンダリングすれば、VRHMDの視野角いっぱいに広がる映像を無駄なく描画できるという寸法だ。NVIDIAでは、このアルゴリズムの使用により描画ピクセルのスループットが1.5倍になると主張している。

NVIDIAによる例では、各目に対応するビューポートを4分割して半球面に近似
ビューポートを予めレンズに合わせて歪ませておくことで、無駄なピクセルを描画せずに済む

Valveが実装している描画マスク。15%の描画ピクセル数の削減が可能(GDC 2015でのスライド)
無駄に大きく描画される視野端の部分を低解像度で描画するMulti-Res Shading。Maxwellで実装された

 とはいえ、これは“何も考えずにフル画面でVR映像を描画した場合”との比較だ。すでにVR界隈では、各SDKやゲームエンジンレベルの最適化により、レンズ内に投影されない画面端の部分は初めから描画しないようなアルゴリズムが組まれており、そういったアルゴリズムはMaxwell世代のGPUでも活用できる。例えばSteamVRでは、レンズ上で不可視となることがわかっているピクセルに描画マスクをかけることで、描画ピクセル数を15%ほど削減するというアルゴリズムを、昨年の段階から実装している。

 また、描画ピクセル数の削減を狙うだけであれば、Maxwellアーキテクチャでも利用できた「Multi-Res Shading」技術も同様に効果が大きい(関連記事)。この技術では表示品質にほぼ影響を与えずに描画ピクセル数をほぼ半減できるなど効果が大きいほか、アイトラッキングシステムと併用すればさらにドラスティックなパフォーマンス向上が期待できる(関連記事)。「Multi-Res Shading」は最新のUnreal Engine(4.11以降)でサポート済みのほか、Unityでも対応がアナウンスされている。

 つまりPascalアーキテクチャのSMP機能でピクセルスループットが1.5倍になるというのは、Maxwell以前の世代のGPUでもできた数々の最適化技法を完全に無視した数字だ。このため、この部分はかなり差し引いて考えたほうが良さそうだ。

シングルパス・ステレオ描画

シングルパス・ステレオ描画でジオメトリスループットを倍増する
しかし同様の機能は旧型GPUも対象に、ゲームエンジンレベルで実装されつつある(Japan VR Summitの講演より)

 もうひとつの手法「Single Pass Stereo」は、その名の通り、ステレオ映像の描画を1パスで行なう技術だ。

 ステレオ映像はそれぞれユーザーの左右の目に対応したカメラ座標にもとづいてレンダリングされるのだが、従来のオーソドックスな描画方法では、カメラ座標をスイッチしながら2回の描画を丸々行なう必要があった。そこでPaslcalアーキテクチャでは、SMPを用いることでカメラ座標の異なる2つの映像を一度にレンダリングできるというのがウリだ。これによりジオメトリ処理のスループットが2倍になるとNVIDIAは主張している(描画ピクセル数は変わらない)。

 とはいえ、同様のテクニックは従来のアーキテクチャ上でも実装可能だ。実際、Unity 5.4では6月を目処にシングルパスステレオと同等のアルゴリズムをPCおよびPS4向けに実装予定で、ジオメトリをセットアップするCPU側の処理が大幅に削減されるとしている。PascalアーキテクチャのSMP機能による旨味は、上述のLens Matched Shadingと併用できるところにあるが、Lens Matched Shading自体が実際にどれほど活用されるか未知数であるため、この部分もある程度差し引いて考える必要がある。「これがあるから何倍の処理能力」と断言することはできない。

実際にはそれほど変わらない? それともやっぱり変わる?

Pascalでは並列処理の効率性が向上

 Pascalアーキテクチャではもうひとつ、並列処理についての向上が図られている。AMDのGCNアーキテクチャのように異なるコア上で異なるタスクが完全に並列動作する真のマルチタスクではなく、Maxwellアーキテクチャと同じく“タスクの中断と割り込み”に基づくプリエンプティブなマルチタスクではあるが、Maxwellアーキテクチャよりもスケジューリングの粒度がぐっと細かくなったことで性能の向上が図られている。

 これにより具体的にどれだけ性能が向上するかは語られていないものの、HMDへの表示寸前に行なわれる非同期タイムワープ(Asynchronous Time Warp)処理を、よりアグレッシブなタイミングで行なえるようになるため、90Hzという固定レートで描画する際に実際に使えるGPU時間がやや向上することになるはずだ。

並列処理の効率が高まったことで、よりアグレッシブなタイミングで非同期ワープを行なうことができ、描画に使えるGPU時間が増える

 以上、PascalアーキテクチャではVRパフォーマンスが劇的に向上するという理由について見てみたが、どちらかと言うとどれもソフトェア的な最適化の領域の話である。そのほとんどが前世代のGPUでも実装可能なテクニックとなっているほか、最終的には各ゲームエンジンがフルサポートしなければ引き出されない部分なので、Maxwell世代GPUとの比較も大幅に差し引いて考えねばなるまい。

 最も保守的に考えれば、通常ゲームのパフォーマンス比と同じ数字と見るのが妥当だろう。つまり「GTX 1080はTitan Xより20~25%速く、GTX 1070はTitan Xに迫る性能」というのが、そのまま多くのVRゲームでも言えることになる。まあ、それでも充分凄いわけだが。

 とはいえ、現状のVRゲームの多くは第1世代のVR-Ready GPUであるGTX 970もしくはAMD Radeon R9 290程度で90Hz動作が確保できるよう調整されている。VRHMDのリフレッシュレートは固定なので、それ以上に大幅な性能があっても、直接的なメリットは得られない。したがって、VR-Readyで要求される性能を大幅に超えるGTX 1080/1070の真価が発揮されるのは、当分先のことになるはずだ。

SMPは将来のHMDでは必須になるかも

 そういった将来を含めて考えれば、Pascalアーキテクチャには大きな未来がある。特に重要なのが「Simultaneous Multi-Projection(SMP)」で実現する「Lens Matched Shading」機能だ。

 前段にて、「VRでは100度を超える高視野角の映像をレンダリングする」と書いた。実際にはOculus Rift/HTC Viveで110度程度である。ところが人間の視野角は単眼で160度程度(両眼で200度)程度あると言われる。将来のHMDではさらなる視野角の向上が図られることになるだろう。

「Assetto Corsa」より。視野角125度の画面。視野端に行くほど映像が大きく歪み、無駄に領域を専有している。この状態で中央部分に充分な解像度を確保しようとすると、全体で何倍もの解像度が必要になる。平面上のレンダリングには視野角の限界があるということだ。

 120度を超えるような映像を平面にレンダリングすると、映像の歪みは大きくなり、ピクセルの無駄も極端に大きくなっていく。これを根本的に解決するには、ビューポートを半球面にするか、たくさんのビューポートを使って半球面に近似する以外に方法はない。つまり、将来的に人間の視野角をフルに覆うようなHMDを実現するためには、PascalアーキテクチャのSMP機能によって可能になった「Lens Matched Shading」のようなレンダリング技術が必須になるのだ。

 「Lens Matched Shading」を用いれば180度はおろか360度視野角のディスプレイも実現可能になる。その点に着目すると、PascalアーキテクチャはVRハードウェアの次世代をも見据えた設計だ、とも言える。VRファンとしてはまさにその点を歓迎したい。