ニュース
西川善司の3DGE:Mark Cerny氏のPS5技術解説プレゼンテーションを読み解く(前編)。ここまで分かったPS5のSSDとGPUの詳細
Cerny氏は,「LISTENING TO DEVELOPERS」(ゲーム開発者の意見を反映した新要素),「BALANCING EVOULTION & REVOLUTION」(進化と革命をバランスした仕様),「FINDING NEW DREAMS」(新しいゲームの可能性を求めて)という3つのテーマを掲げてプレゼンテーションを行った。今回は,前編として「LISTENING TO DEVELOPERS」と「BALANCING EVOULTION & REVOLUTION」のパート解説と筆者の考察をお届けしたい。
PS5で採用する高速SSDの仕組み
Cerny氏が初めに語ったのは,CPUでもGPUでもなく,SSDについてだった。次世代ゲーム機の開発に当たって,Cerny氏が世界中のゲーム開発従事者にヒアリングを行ったところ,最も要望が多かったのがSSDだったそうだ。ちなみに,Cerny氏によるプレゼンテーションのうち,およそ半分の時間をSSDの説明に費やしていた。PS5において,それだけSIEがSSDを重要視していることが分かる。
Cerny氏によると,PlayStation 4(以下,PS4)に搭載するHDDにおける読み出しの帯域幅は,最も高速なディスク外周部で,100MB/sほどだという。
たとえばディスク外周部に記録した1GB分のデータを読み込む場合,1GB÷100MB/sで,10秒かかるという計算になる。ゲームでは,データを圧縮ライブラリのzlibで2/3程度に圧縮することが多い。圧縮したデータの読み込み時間は,10秒の2/3である6.66秒と概算できる。
しかし,現実的には,ディスクの外周部だけでなく,さまざまな位置にデータが記録されていることがほとんどだ。6.66秒というのはあくまで理論値ということになる。
Cerny氏の経験則によると,実際にデータを読み込む時間は,シーク時間などの影響で理論値の3倍ほどになるそうで,1GB分のデータを読み込むのに,PS4では6.66秒×3の約20秒かかるという計算になる。
一方のPS5は,PCI-Express(以下,PCIe)4.0×4接続相当のSSDを採用することから,データの読み出し速度は少なくとも5GB/sと,PS4のHDDに比べて50〜100倍にもなる。また,SSDはHDDにおける磁気ヘッドのような機械的に動作する部分がないため,シークにかかる時間もない。
先の例にならい,1GB分のデータを読み込む時間を計算すると,
無圧縮の状態では 1GB÷5GB/s=0.2秒,zlib圧縮を使うと,0.2秒の2/3である0.133秒となる。つまり,PS5では,PS4と比べて読み込み速度が150倍に向上すると見込まれる。
プレゼンテーションでは,PS4で1GB分のデータを読み込む時間と,PS5で2GB分のデータを読み込む時間を比較しており,ちょっと違和感を持つのだが,これはPS5ではメインメモリの増量によって一度のデータ読み込み単位は2GBになるからとのことだ。Cerny氏は「PS5とPS4を比べると,ゲーム体験としての読み込み速度は約100倍に向上する」と話した。
Cerny氏は「SSDの高速性は,ゲームにおいてメインメモリの利用効率も上げる」と述べる。これはどういうことかというと,巨大なオープンワールド型ゲームにおいては,必要に応じてデータの読み込みを順次行う形が多い。PS4では,HDDのシーク時間と読み込み速度の遅さを考慮して,メインメモリに大きめのデータブロックとバッファを用意する必要があった。バッファを大きく取ると,ゲームそのもので使えるメモリ容量が狭まるため,メモリの利用効率が落ちることになる。
これがSSDになると,シーク時間がなく,ストレージからメモリへのデータ転送も高速なので,読み込むデータブロックを大きく設計する必要がなくなり,バッファも最小限で済む。メインメモリに対して無理に空き領域を作らなくてもよくなるため,メモリの利用効率が上がるというわけだ。
高速SSDの性能を生かすカスタムコントローラ
高速SSDのメリットを強調する一方で,Cerny氏は「SSDの速度がどんなに高速になったとしても,いまのゲームにおけるデータアーキテクチャには大きなボトルネックがある」と話す。
このボトルネックは,ストレージから読み込んだ圧縮データを展開するプロセスと,展開したデータを必要なメモリアドレスに配置するプロセスという2つのオーバーヘッドによって生じるものだという。PS4ではストレージをHDDの10倍高速なSSDに換装しても,ゲームから見た読み込み速度は,よくて2倍程度の向上に留まるそうだ。
PS5では,SSDの性能を発揮するために,カスタム化したフラッシュメモリコントローラをSSDに内蔵した。このカスタムコントローラは,4レーンのPCIe 4.0でプロセッサと接続する。フラッシュメモリは12チャンネル構成で,5.5GB/sの帯域幅を実現するという。既存のPC向けNVMe SSDのコントローラは8/16/32チャンネル構成なので,これとは仕様が異なっている。
また,バス使用権の調停レベルが一般的なNVMe SSDコントローラが2段階なのに対して,PS5のカスタムコントローラでは6段階に拡張している。これはなかなか興味深いポイントで,Cerny氏は「ゲームでは,さまざまな優先度でストレージのデータにアクセスする可能性があるため」と説明していた。
アクセスの優先度とはどういうことか。Cerny氏はゲームにおける事例を出して解説する。たとえば,プレイヤーキャラがゲーム内のダンジョンに入ってすぐにやられてしまい,ゲームオーバーになったというようなケースを考える。ダンジョンに入った段階でSSDからダンジョンに関する大量のデータが読み込まれる。しかし,すぐにプレイヤーキャラがやられてしまい,ゲームオーバーを知らせる断末魔のサウンドデータを再生する必要が出てきた。この場合,サウンドデータは,ダンジョンデータの読み込みを中断してでも優先して読み込まれるべきである。
PS5のカスタムコントローラでは,こうしたデータがストレージにアクセスする優先度を6段階で制御可能なのだという。
さて,Cerny氏は,データ圧縮に関してPS5でも,引き続き,zlibを利用するが,次世代zlibともいえるRAD GAME TOOLSの「Oodle Kraken」の利用も推進していくと述べていた。Krakenは,zlibと同じ可逆圧縮ライブラリだが,zlibに対して圧縮率が平均で10%向上するそうだ。つまり,Krakenを使うとPS5のSSDにおける帯域幅は,zlib利用時の10%増しになる。Cerny氏は「およそ8GB/s〜9GB/sに到達する算段だ」とアピールした。
また,PS5では,APU側でもカスタム化したI/Oコントローラを採用する。このI/Oコントローラもデータ転送の高速化に寄与するもので,以下の図のような機能ブロックの集合体となっている。
図中に2つある「I/O COPROCESSOR」のうち,1つはSSDのCUSTOM FLASH CONTROLLERとの入出力を,もう1つはメインメモリとの入出力を制御するものだ。2つめのI/O COPROCESSORは,データをメインメモリ側のどのアドレスに伝送するかといったアドレス計算も担当する。実際のメモリ伝送は「DMAC」(Direct Memory Access Controller)が担う。
読み出したデータがKrakenで圧縮されていた場合,「KRAKEN DECOMPRESSION」ユニットがこれを,SRAM上の作業メモリに展開する。Cerny氏は,「極めて圧縮率の高いデータをKRAKEN DECOMPRESSIONで展開した場合の帯域は最大22GB/sに達する」と説明しており,SRAMはそれに見合った性能を備えているということになる。このあたりの仕組みは,PCや従来のゲーム機と違うものとなっていて,とても興味深い。
カスタム化したフラッシュメモリコントローラとI/Oコントローラを使うことで,ホストCPU側からは,SSDからメインメモリへ生のデータを読み込んでいるように見えるわけだ。前述した「チェックイン」によるオーバーヘッドを完全に解消するわけである。なお,これは筆者の推察となるが,「Xbox Series X」がアピールする「Xbox Velocity Architecture」も同様の機能だと思われる。
また,PS5は,メインメモリとグラフィックスメモリを同一のメモリ空間として扱うUMA(Unified Memory Architecture)を採用する。そのため,GPUがグラフィックスメモリとして扱っているアドレス領域に対して,テクスチャを読み込んだ場合,シェーダーコア側のキャッシュメモリ内の内容が古く,新たに読み込まれたテクスチャの内容が反映されていないという不整合が起こりうる。
この不整合を取り除くのが,カスタムI/Oコントローラ内にある「COHERENCY ENGINE」だ。COHERENCY ENGINEは,GPUのキャッシュシステムと連係して,キャッシュのチェックを行う。あるアドレス領域のデータと,GPUキャッシュの内容が異なるときに,それをGPU側に通知して,必要に応じてキャッシュ内容を更新する仕組みとなっている。
さて,PS5に標準搭載するSSDの容量は825GBとなる。これ以上のストレージ容量が必要なユーザーに向けて,SSDの増設も可能で,Cerny氏によると,サードパーティ製のSSD製品も利用できるようになるとのことだ。
しかし,前述したようにPS5のSSDは,一般的なPC向けNVMe SSDとは仕様が異なる。PS5のI/Oユニットは,PS5の標準SSDと汎用NVMe SSDの違いを吸収するような,アクセス優先度の調整メカニズムを持っているそうだが,汎用NVMe SSDを利用する場合は,PS5の標準SSDと同じ5.5GB以上の帯域幅を要求することになるという。つまり,PS5にSSDを増設するとき,汎用のPC向けNVMe SSDが差さっても利用できるかどうかは保証できないというわけである。
どのSSDが利用できるか分からないと,ユーザーが困ってしまうが,Cerny氏は,PS5発売後にSSDの互換性情報を公開すると述べていた。PS5では,SSDの実効速度がゲーム性にも関わってくるため,増設用SSD選びは慎重に行う必要がありそうだ。ちなみにCerny氏は,このパートを「SSDを買い焦らないように」というメッセージとともに締めくくった。
なお,PS5にもUSB接続の外付けHDDを接続することは可能だという。ただ,外付けHDDからPS5ゲームを起動することはできない。外付けHDDから起動出来るのはPS4ゲームのみになるようなので注意が必要だ。
PS4との互換性を確保
2つめとなる「BALANCING EVOULTION & REVOLUTION」のパートで,Cerny氏はPS4との互換性とGPUについて解説した。まずPS4との互換性だが,PS5は,PS4レガシーモードとPS4 Proレガシーモード,PS5ネイティブモードという3つの動作モードを搭載する。PS4レガシーモードとPS4 Proレガシーモードでは,それぞれの実機でゲームを動作させたときと同様のパフォーマンスを実現するという。
また,PS5でもPS4 Proで搭載するブーストモードが利用可能で,PS4世代のタイトルをPS5の高性能状態で動作させる検証も進められているそうだ。
PS5ではAMDの「プリミティブシェーダ」を採用
続いて,話題はGPUに変わった。PS5のGPUは,NAVI 2X世代(関連記事)のRDNA2アーキテクチャベースとなる。Cerny氏は軽く「RDNA2アーキテクチャベースのPC向けGPUは,PS5の発売時期と同じくらいに出てくるだろう」と述べていたが,これは先日,AMDが発表したロードマップとも合致する。
さて,GPUの新機能として,最も衝撃的だったのは,AMDがお蔵入りさせてきた「プリミティブシェーダ(Primitive Shader)」を採用することだ。
2000年にプログラマブルシェーダーアーキテクチャが誕生して以来,GPUは進化を重ねてきたが,頂点パイプライン(ジオメトリパイプライン)の進化は,場当たり的で,その結果,旧機能と新機能が類似,あるいは重複に近い感じで存在するようになり,非常に使いにくくなってしまった。
この課題を解決するために,AMDはプリミティブシェーダを,NVIDIAは「メッシュシェーダ(Mesh Shader)」をそれぞれ発表した。両社の発表は事実上,「次世代の頂点パイプラインの覇権を争う闘い」の始まりだったわけだが,その闘いは2019年11月に終わりを迎えた。Microsoftが新版DirectX 12の新機能として,NVIDIAのメッシュシェーダを採用したのだ。2018年に「AMDはプリミティブシェーダのサポートをあきらめた」というニュース(関連記事)もあり,メッシュシェーダが採択される雰囲気はもともと漂っていた。そのためMicrosoftの発表にはそれほど驚かなかったのだが,今回の「PS5にプリミティブシェーダ採用」という発表には驚いた業界関係者も多いのではなかろうか。
ただし,Xbox Series Xは,PS5と同じAMD製GPUを搭載するのに,プリミティブシェーダではなく,メッシュシェーダに対応すると発表している。いくら魅力的な機能でも,業界の足並みがそろわないと使われないケースが多々あるので,PS5とXbox Series Xの方針が異なる点は少々不安である。
また,機能面では,AMDの「SmartShift」に対応することも明らかとなった。SmartShiftとは,AMDがノートPC向けRyzen APUに対して実装した新機能で,動かしているアプリケーションのグラフィックス負荷の度合いに応じて,電力をGPU側に割り当てるという技術だ。たとえば,グラフィックス負荷が高いときには,GPUのクロックを上げる代わりに,CPUクロックを下げるのだ。
Cerny氏はプレゼンテーションの中で「GPUの2.23GHz動作」と「CPUの3.5GHz動作」は常に両立されるものではない旨を述べている。スペック表に記載する動作クロックは,CPUとGPUそれぞれの最大値だ。つまり,CPU性能とGPU性能の両方が求められるような重量級のゲームを3.5GHz動作のCPUと,2.23GHz動作のGPUで動かすことはできないのである。
では,なぜ両方フルで使えないような仕様になっているのだろうか? 実際のところ,CPUもGPUもフルで使うというケースはそれほど多くない。CPUはたくさん使うがGPUはそれほどでもないとか,GPUは激重だけどCPUは余裕があるといったことのほうが多いのだ。後者の「GPUは重いけどCPUは余裕」というのはゲームでよくある状況だろう。そういった場合に,CPU側のクロックを下げて発熱を抑制し,冷却能力と消費電力をGPU側に投入することで,通常以上のパワーを出させようというのが,消費電力ではなく性能に振ったときのSmartShiftの考え方になるのだ。
なお,レイトレーシングについては軽く言及されたのみとなる。Cerny氏は,レイトレーシングのハードウェアアクセラレーション構造がBVH(Bounding Volume Hierarchy)ベースであると話していたので,ここではXbox Series Xと足並みはそろっているようだ。ちなみに,RDNA2ベースのGPUにおけるハードウェアレイトレーシングは,2020年に公開予定の新版DirectX12の「DirectX Raytracing 1.1」でサポートされる予定だ。
さて,PS5のGPU性能だが,従来のRadeon系GPUと同様に演算コアである「Compute Unit」(CU)の個数である程度決まる。PS5のCU数は36基で,Xbox Series Xの52基に比べると70%程度になっている。その分,PS5では,この少ないCUを高い周波数で駆動することでピーク性能を高める方針だ。その最大クロックは2.23GHzで,Xbox Series Xの1.825GHzよりも20%も高い。
演算性能は10.3TFlopsで,CU数の比率ほど性能差は開いていないが,Xbox series Xの12TFlopsよりも低くなっている。この点についてCerny氏は,次のように持論を展開していた。
「TFlopsの数値は,あくまで演算器のピーク性能にすぎない」「高クロック動作であるということは,たとえばラスタライザ,コマンド発行部やキャッシュといったシェーダーコア以外のユニットも高クロックで動作する」「ポリゴンが十分に細かく,そしてその数が多いとき,CU数が多過ぎると,そのすべてを並列に効率よく稼動させるのが難しい」
最後の部分は言い回しが少し分かりにくいが,おそらくポリゴンが十分に細かく,数が多いときは,少ないCU数で高クロック駆動のほうが処理をより並列に実行でき,GPUを効率よく稼働できるということを言いたいのだと思う。邪推すれば「52CUの12TFlopsのXbox Series XのGPUに,我々のPS5のGPUに迫る実効性能があるはずだ」ということを主張したいのかもしれない。このあたりの信憑性は,実際に両プラットフォームで同一ゲームの開発を行ったエンジニアでないと検証は難しい。
今回は,前編としてここまでとする。
後編では,最後に残った「FINDING NEW DREAMS」のパートを紹介するとともに,筆者がこの連載でかつて予測したPS5の姿(関連記事1,関連記事2)に対しての答え合わせを行いたい。
PlayStation公式ブログ
- 関連タイトル:
PS5本体
- この記事のURL: