お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2016/11/05 00:00

連載

西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?

9月の時点でスペックレベルにおける「隠し球」の存在を臭わせていた吉田修平氏
画像集 No.002のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?
 2016年9月にお届けしたインタビューで,ソニー・インタラクティブエンタテインメント(以下,SIE)ワールドワイド・スタジオ プレジデントである吉田修平氏が,「PS4 Proで提供できる上位体験はあれだけではない」と語っていたのを覚えているだろうか?

 あれからしばらくした10月下旬,筆者は,SIEの取締役副社長 兼 ハードウェアエンジニアリング&オペレーション本部長である伊藤雅康氏と,リードシステムアーキテクトであるMark Cerny(マーク・サーニー)氏による技術セミナーに参加し,PlayStation 4 Pro(以下,PS4 Pro)の公式スペックには記載されていない部分について,興味深い話を聞くことができた。
 1回でまとめるには情報量が多すぎるので,今回は前後編に分けてレポートしてみようと思う。

伊藤雅康氏とMark Cerny氏。今回の技術セミナーではほぼ9割,Cerny氏が担当していた
画像集 No.003のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?


PS4 Proの開発コンセプトとは?


 Cerny氏がまず語ったのは,PS4 Proの基本コンセプトで,それは以下のとおり3つあるという。

  1. 約700タイトルある既存PS4ゲームは,一切手を加えることなく,そのまま動作できること
  2. PS4 Proへ対応させる工数は,そのタイトル開発に掛かる工数およびコスト全体比で1%以下に収まること
  3. PS4 Proの高性能を活かして,より高いビジュアル体験をユーザーに提供すること

PS4 Pro
画像集 No.004のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?
 1.に関して言うと,PS4 ProでSIEは,ほぼ完全な「PlayStation 4」(以下,標準PS4)として振る舞えるようなハードウェア設計を行った。
 その説明をするに先だって,簡単におさらいしておくと,PS4 ProのカスタムAPUでは,標準PS4と同じく,「Jaguar」マイクロアーキテクチャに基づくCPUコアを8基統合した。一部報道では新しい「Tiger」マイクロアーキテクチャを採用するというものもあったが,Cerny氏が「Jaguarです」と断言していることを押さえておきたい。
 一方のGPUでは,標準PS4と比べてコア数,正確には演算ユニット「Compute Unit」の数が2倍に増えた。標準PS4で18基なのが,PS4 Proでは36基になっている。

PS4 ProのGPUと必ずしも同じ仕様ではないが,Compute Unit数は36基で揃っている「Radeon RX 480」のブロック図
画像集 No.005のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?
 そんなPS4 Proが「標準PS4として振る舞えるようなハードウェア設計」とはどういうことなのかだが,既存の標準PS4向けタイトルをPS4 Proで動作させる場合,GPUでは36基ある演算ユニットのうち,(標準PS4と同じ)18基だけ動作させるようになっているそうだ。
 記憶力のいい読者だと,PS4 ProではCPUコアの動作クロックが従来の1.6GHzから2.1GHz,GPUコアの動作クロックが,従来の800MHzから911MHz,メインメモリのクロックが従来の5.5GHz相当(実クロック1.375GHz)から6.8GHz相当(実クロック1.7GHz)へといずれも上がったことを覚えているかもしれないが,これも,標準PS4用タイトルをプレイするときは標準PS4と同じクロックに落ちるという。
 つまりPS4 Proは,標準PS4用ゲームを実行した場合,PS4 Pro特有の機能や性能を「意図的に」抑え込めるような設計になっているのである。

PS4 Pro対応タイトルをプレイするときには,16nm FinFET技術を用いて再設計したカスタムAPUと,従来の176GB/sから218GB/sへと拡大したメモリバス帯域幅の性能をフルに活用できるようになる。スクリーンショットは4K解像度版「inFAMOUS First Light」より
画像集 No.006のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?

 2.については具体例が語られた。PS4 Pro対応タイトルとして発表になった「Days Gone」の場合,PS4 Pro対応を行ったのは,たった1人のプログラマーなのだそうだ。

Days Goneの4Kスクリーンショット。PS4 Pro対応に必要だったプログラマーの数は1人だけだったという
画像集 No.018のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?

標準PS4のカスタムAPUだと,理論性能値となる単精度浮動小数点演算性能は1.84 TFLOPSだが,PS4 Proではこれが4.2 TFLOPへ向上している
画像集 No.007のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?
 ちなみに,「PS4向けタイトルをPS4 Proへ対応させる」というのは,「PS4 Proで向上した機能や性能を活用する」のと同義だが,このとき,活用の主な方向はビジュアル面になる。「一度に登場するモンスターが増える」ような,ゲーム性やゲームメカニクスの面,換言すればゲーム体験の面でPS4 Proの機能や性能を活用することはない。これはすでにお伝えしているとおりだ。
 では,PS4 Proへの対応を行うことで,具体的にどのような「ビジュアル面の向上」を創出させるか。ここが3.のポイントだが,ここに厳格なルールはないという。Cerny氏によれば,倍増した演算ユニットを使って解像度を引き上げるのもよし,解像度は変えずにシェーダで質感表現の向上に活用するのもよし,あるいはフレームレートの安定化や引き上げに充てるのもよしとのことである。

 なので,より高いビジュアル体験をどう実装するかは,基本的に,各ゲーム開発者に委ねられるのだが,SIE側でもサンプルコードなど,実践的な素材を提供することで,PS4 Proへの対応に工数をかけたくない開発者ならそれを使うだけで低コストに済ませられるそうだ。
 このあたりの詳細は後編で深く解説することにしたい。


PS4 Proは実質的にメモリが増えた!?


 今回の技術セミナーにおいて明らかになった内容のうち,最も重要だと思われるのが,Cerny氏の語った,PS4 Proのメモリ周りである。

画像集 No.008のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?
 前述のとおり,PS4 Proで獲得した性能は,広義の映像品質向上に使うことになるわけだが,中でも大きな柱となるのがゲーム映像の高解像度化だ。より具体的に言えば,解像度3840×2160ドット,いわゆる4Kへの対応ということになる。
 しかし,標準PS4とPS4 Proとでゲーム体験を同じくする目的から,CPUコアとGPUコアで共有するメインメモリ容量は8GBで変わっていない。

 このメモリ容量を増やせば,より多ポリゴン化した3Dモデルへ置き換えたり,より高解像度なテクスチャに変更したりすることもできたが,Cerny氏は「3Dモデルやテクスチャなどのアセットを,標準PS4とPS4 Proの両方に向けてゲーム開発者に用意してもらうとなると,さまざまな問題が出てきます」と語る。

 1つは開発コストの問題だ。標準PS4用とPS4 Pro用とで異なるアセットを個別に用意する必要があるような仕様では,PS4 Proの開発コンセプトである「PS4 Proへ対応させる工数は,そのタイトル開発に掛かる工数およびコスト全体比で1%以下に収まること」なんて夢のまた夢だ。

「Horizon Zero Dawn」の4K解像度版スクリーンショット
画像集 No.010のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?
 もう1つはメディア容量の問題である。現在の標準PS4は,総容量50GBの2層型Blu-ray Discをゲーム収録メディアとして標準採用している。しかし,大作ゲームなどの場合は,いまやこの50GBを使い切る勢いであるため,標準PS4用アセットとPS4 Pro用アセットの両方を1枚のメディアに詰め込むのは困難度合いが高い。

 ただ,ここで,1つ自己矛盾が発生する。
 いくらアセットの作り分けを行わないと言っても,出力映像を4K解像度にする以上,レンダーターゲット(Render Target)となるバッファや,それに付随するZバッファ(Z-Buffer)やステンシルバッファ(Stencil Buffer),ディファードレンダリング(Deferred Rednering)ならGバッファ(G-Buffer)の解像度を上げる必要があり,必要なメモリ容量は自ずと増大してしまう。なので,標準PS4でメモリ容量8GBをほぼ使い切ってしまうようなゲームがあったとして,それをPS4 Proの4K出力へ対応させようとすると,メモリ容量は不足してしまうのだ。Cerny氏も「PS4 Proで4K出力に対応させようとすると,場合によってはおよそ300MBから400MBの追加メモリ領域が必要になります」と述べている。

 「PS4 Pro対応のため,標準PS4のゲームは今までより少ないメモリ容量しか使わないよう設計してください」では開発者側の工数が増えてしまうから,SIEの側で何とかしなければならない。

サウスブリッジ的なカスタムLSI「CXD90036G」と,そのすぐ近くにあるDDR3メモリチップ。この写真は標準PS4に連なる「CUH-1200」のものだ
画像集 No.009のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?
 そこで編み出された解決策が,PS4 Proのサウスブリッジ側にあるDDR3メモリの容量を1GBに増やすというものになる。メインメモリである容量8GBのGDDR5はそのままで,だ。
 標準PS4では,スタンバイ時の動作制御やバックグラウンドプロセスの制御用としてサブCPU「セカンダリープロセッサー」を搭載している。このサブCPUは独自のメモリ空間を持っており,標準PS4の場合,(4Gamerで確認した限り)容量256MBのDDR3メモリを採用していたが,PS4 Proでは,このサブCPU用メモリ容量を1GBへと拡張したのである。

 標準PS4では,容量8GBあるメインメモリのうち,ゲームが自由に使えるメモリ空間は約5GBとなっている。残る約3GBのうち,約2GBがOS用で,約1GBは,Netflixプレーヤーなど,ノンゲームアプリケーション向けに確保してあるのだが,PS4 Proではこの「ノンゲームアプリケーション向けに確保した,約1GBのメモリ空間」を,サブCPU管理下に設けた容量1GBのメモリへとスワップアウトできるようにしてあるのだ。

 サブCPU側へスワップアウトされたプログラムは,メインCPU側から直接実行することはできなくなる。実行させるためには,カスタムAPU側にある容量8GBのメインメモリ側へ書き戻す必要がある。ただ,HDDへ書き出して,使うときに書き戻すよりは格段に高速で,転送自体もDMA(Direct Memory Access,メモリ間でデータを直接伝送する技術)を介して行うため,メインCPUに与えるCPU負荷は無視できる。

画像集 No.011のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?
 かくしてPS4 Proでは,GDDR5側において,追加のメモリ空間を確保することに成功した。ただ,約1GBをまるまるゲーム用にしているのではなく,現在は512MBのみにしているそうだ。つまりPS4 Pro用ゲームアプリケーションでは5.5GBのメモリ空間を使えるようになったということである。
 では,スワップアウトによって生じた余裕のうち,残りは何に使っているのかというと,Cerny氏いわく「システム用途」。具体的には,4K出力用となる4K解像度対応のメニューグラフィックスやメニューアイテムなどの格納領域として活用することになるとのことだった。


PS4 ProのGPUに搭載されたPolarisの機能


 機能面では,Cerny氏が「PS4 ProのGPUでは,(演算ユニット数が36基に倍増しただけでなく)『Polaris』の機能の一部を取り入れています」と語っているところにも注目したい。

Polaris世代のGPUであるRadeon RX 480。2016年11月時点におけるRadeon RX 400シリーズの最上位モデルとなる
画像集 No.012のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?
 Polaris(ポラリス)というのは,2016年6月にAMDが発表したデスクトップ市場向けGPUの開発コードネームで,製品シリーズ名としては「Radeon RX 400」にあたるものだ。

 標準PS4は,2012年頃に現役を務めた「Southern Islands」(サザンアイランド,開発コードネーム)世代,シリーズ名で言うところのRadeon HD 7800系アーキテクチャをベースにしていた。2016年11月発売のPS4 Proでは,その間に進んだ時間分に相当する最新機能を組み込むことになったようだ。

 ではいったい,どんな新機能を採用しているのか。
 Cerny氏によると,Polarisからは以下に挙げる4点をPS4 ProのGPUに新規採用したという。

  • 省電力機能
  • Lossless Delta Color Compression
  • Primitive Discard Accelerator
  • 16bitビットデータ取り扱いの改善

 省電力機能に関する具体的な説明はなかったが,「Polaris世代GPUの省電力機能」と述べていたことからして,「Adaptive Voltage & Frequency Scaling」(以下,AVFS)や「Multi-Bit Flip-Flop」(以下,MBFF)といった機能を実装したと推測できる。
 AVFSは,GPUチップ内の複数箇所に設置した消費電力センサーと温度センサー,動作クロックセンサーからの情報を基に,動的かつ適応型の電圧制御と駆動クロック制御を行う機能だ。MBFFは,クロック供給を共有化した構造のフリップフロップ回路のことで,単発フリップフロップ回路で実装するよりも物理スペースを削減できるだけでなく,省電力効果の効果も見込めるというものである。

Polaris発表時の資料より,AVFS(左)とMBFF(右)の概要。Polarisの物理設計にあたっては,MBFFをかなり効果的に用いたとされるが,PS4 ProのGPU部でもそんなPolarisに準じた思想が入っていると考えるのが自然だろう
画像集 No.013のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!? 画像集 No.014のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?

LDCCの実効アルゴリズムを改善することで,Radeon R9系よりもRadeon RX系のほうが実効メモリバス帯域幅は向上しているというスライド
画像集 No.015のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?
 Lossless Delta Color Compression(以下,LDCC)は,ピクセルデータをほぼ遅延なしのリアルタイムで可逆圧縮して,実効メモリバス帯域幅を向上させる機能だ。Radeonの場合,「Tonga」こと「Radeon R9 285」で初採用となったが,Polarisではその改良版を採用している。

 LDCCの根幹となるのは,差分量子化圧縮技術である。具体的には,あるまとまった量のデータを圧縮するにあたって,当該データ群の平均値と各データとの相対差分値を必要最低限のビット数で表現していくような圧縮法という理解でいい。グラデーションのような近い色値であれば平均値との相対差分値は自ずと小さくなるため,少ないビット数で表現できる。

 AMDのLDCCでは2分の1,4分の1,8分の1といった圧縮レートをサポートしており,どの圧縮レートで適切に圧縮できるかは対象データのばらつき(=分散値)に依存する。AMD側の発表によると,平均的にプラス約40%の実効メモリバス帯域幅向上を認められるとのことなので,PS4 Proでもそれくらいは期待してもいいのではなかろうか。
 あくまで筆者の試算であると断ってから続けると,仮に平均して4分の1の圧縮レートを利用できるなら,理論値218GB/sのメモリバス帯域幅に対して,その1.4倍,305GB/sくらいは見込めるということだ。もし,PS4 Proの実効メモリバス帯域幅が305GB/sなのだとすれば,標準PS4の同176GB/sに対して1.73倍のメモリ性能が期待できるわけで,俄然,悪くない数字になってくる。

 なおCerny氏によれば,LDCC自体,標準PS4には搭載していないとのこと。PS4 Proで初採用ということになる。

Primitive Discard Acceleratorは,早期カリングをより詳細なレベルで行うもの
画像集 No.016のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?
 Primitive Discard Accelerator(以下,PDA)は,レンダリングパイプラインの上流,すなわちジオメトリエンジン側で「明確に描画対象にならないもの」を排除してしまう機能だ。
 描画しても確実に無駄になるジオメトリデータ(≒ポリゴンデータ)をレンダリングパイプラインへ流す前に捨ててしまう,いわゆる「早期カリング」(Early Culling)機能の一種という理解でいい。ただ,一般的な早期カリングでは視界外ポリゴンや裏面ポリゴンを破棄する処理を行うが,PDAは,それよりもさらに高度なカリングを行う。

 具体的には「1ピクセルに満たないポリゴンの排除」を行うのだが,ここで言う「1ピクセル」とはZバッファ解像度に相当する。さらに言えば,このZバッファ解像度とは,MSAA(Multi-Sampled Anti-Aliasing,マルチサンプルアンチエイリアシング)の処理面積に該当する。MSAAはZバッファ解像度基準で適用されるためだ。
 はるか遠方に存在する3Dオブジェクトを構成するポリゴンは,このZバッファ解像度未満サイズのポリゴンとなることがままあるので,これを早期に破棄することでGPU負荷を低減しようというのがPDAの役割なのである。

 たとえば4x MSAAの場合,ピクセル解像度比4倍の解像度があるZバッファを用いて描画を行うわけだが,その「4倍解像度のZバッファ」において,1ピクセル以下のポリゴン達を捨てられれば,ピクセルシェーダの実行のみならず無駄なZ出力を回避できる。このあたりについてCerny氏は「PDAは,直接的にはMSAAのアクセラレーションへとつなげられると言えるかもしれない」と述べていた。

 最後に16bitデータの取り扱いの改善は,16bit半精度浮動小数点数と16bit整数を内部レジスタにてネイティブで取り扱えるようになったことを示している。つまり,2つの16bitデータを処理するにあたり,2つのデータを合わせて32bitレジスタに収めることができるようになったということである。
 これによる直接の“効能”としては,レジスタファイルの節約と内部バス帯域幅消費の節約が挙げられる。「明示的にこの機能を活用すれば,より多くのWavefrontをGPUに流し込めるので,意外に効果は大きい」(Cerny氏)そうだ。ちなみにWavefrontというのは64スレッドをまとめたもので,32スレッドを1つの演算実行単位とするNVIDIAの「Warp」と似た単位という理解でいい。


PS4 ProのGPUはVega先取りの機能も実装


 「それに留まらず,Polarisよりもさらに『先の世代』のAMD製GPUが持つ機能も搭載しています」と,Cerny氏は言う。

 「先の世代」とは何かについて,Cerny氏は明言を避けていたが,ほぼ間違いなく,「Vega」(開発コードネーム)のことだろう。
 Vega世代のGPUで搭載する機能から先取りしてPS4 Proで実装しているのは,Cerny氏によると,以下に挙げる2点とのことだ。

  • 16bit演算の倍速化
  • Work Distributorの搭載

 16bit演算の倍速化は,16bitサイズのデータを2つ同時に32bit演算器で処理することによって2倍のスループットを稼ぐ仕組みだ。NVIDIAがPascal(パスカル)世代の数値演算アクセラレータ「Tesla P100」で搭載した機能と同等のものという理解でいい。
 Cerny氏も「PS4 ProのGPUは,単精度浮動小数点演算の理論性能値は4.2 TFLOPSだが,半精度浮動小数点(FP16)ではこれが8.4 TFLOPSとなります」と述べている。

 前段で挙げた,Polaris世代の機能である16bitデータの取り扱いの改善と,いま挙げたVega世代の機能となる16bit演算の倍速化,これらを組み合わせることで,PS4 Proでは,16bitデータがらみの性能向上を相当に期待できそうだ。
 実際,Cerny氏も「ピクセルカラー値や法線ベクトル値,接ベクトル値などは16bitデータで十分な場合が多いので,この機能を積極的に活用すれば大幅なパフォーマンス向上が見込めるはずです」と述べていた。

Graphics Core Nextアーキテクチャを採用するRadeonは,演算(Compute,いわゆるGPGPU)スレッドとグラフィックスのスレッドを混在して同時実行可能なメカニズムを採用する。Work Distributorも恐らくこのあたりに強く関連した機能だろう。詳細は,Vegaが登場するタイミングで,AMDが説明してくれるはずだ
画像集 No.017のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?
 もう1つのWork Distributorとは,ジオメトリエンジン側の機能強化にあたるもので,大量のジオメトリデータ(≒ポリゴンデータ)がGPUに流入してきたとき,その処理を最も高効率に実行できるよう,タスク発注を制御する仕組みだという。これ以上の詳しい説明はなかったので,ここからは筆者の考察になるが,これはPolarisで進化した「Hardware Scheduler」(HWS)と関係の深い機能だと思われる。

Radeon RX 480のブロック図を再掲。Shader Engine数は4基だ
画像集 No.005のサムネイル画像 / 西川善司の3DGE:知られざるPS4 Proの秘密(1)メモリ増量に,Polarisと次世代GPUの機能取り込み!?
 AMDのGPUアーキテクチャ「Graphics Core Next」では,複数の演算ユニットをひとかたまりにして,「Shader Engine」と呼ばれるクラスタを構成している。そして「レジスタファイルなどの有限リソース」(Cerny氏)は,Shader Engineごとに一定量ずつ割り当てている。そのため,リソースの消費が,ある特定のShader Engineだけで多くなってしまうと,そのShader Engineに対しては,それ以上のスレッドを発行できなくなってしまう。
 説明を聞く限り,Work Distributorとは,もともとGraphics Core Nextアーキテクチャが持っている「Shader Engineに対する負荷平均化(ロードバランス)を取る仕組み」を改良したものだと思われる。つまり,リソースの消費が激しいShader Engineを避けてスレッドを発行したり,回転率の高いShader Engineに積極的にスレッドを発行したりするメカニズムである可能性が高い。Cerny氏によると,Work Distributorの採用により,ジオメトリの処理効率が向上したとのことだ。

 なお,本稿の序盤でも述べているので推測できている読者は多いと思うが,「これら一連の,PolarisやVegaから継承した新機能は,標準PS4モードでは全部無効化される」(Cerny氏)ので,その点は念のため。


 ……といったところで,前編はここまで。
 ここまでPS4 Proに秘密の機能が詰め込まれていたことに驚いた人は多いのではなかろうか。

 後編では,さらに驚きの,PS4 Proの疑似4Kレンダリングメカニズムを解説したい。

西川善司の3DGE:知られざるPS4 Proの秘密(2)明らかになった「4Kレンダリングのレシピ」

SIEのPS4公式情報ページ

  • 関連タイトル:

    PS4本体

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:11月27日〜11月28日