PS5 のダイ観察

Fritzchens Fritz 氏により、PS5 SoC のダイショットが公開された。
Xbox Series X SoC は HotChips 32 にて既に公開されており、そのため今まで隠されていた PS5 SoC の構造には注目が集まっていた。

Index

FPU の規模を小さくした PS5 CPU

画像元:
↑ DSC02283# | quick and dirty test shot | Fritzchens Fritz | Flickr ↓ AMD@7nm@Zen2@Renoir@Ryzen_3_4300U@100-000000085_9JB4977P00… | Flickr

↑ PS5 4-Core CCX / ↓ Renoir 4-Core CCX

画像元:
DSC02283# | quick and dirty test shot | Fritzchens Fritz | Flickr
AMD@7nm@Zen2@Renoir@Ryzen_3_4300U@100-000000085_9JB4977P00… | Flickr

PS5 CPU の 4-Core CCX と Renoir APU の Zen2 4-Core CCX をとりあえず縦幅を合わせ、並べた画像が上。実際の面積等は考慮していない。

コアの外側端、Renoir と比較して PS5 CPU の面積が少なくなっている部分は、AMD が ISSCC 2020 にて発表した Zen 2 コアの概要によると、FPU (Floating Point Unit) にあたり、1
撮影を行った Fritzchens Fritz 氏が言及したように、PS5 では FPU の規模を小さくした設計となっている。
恐らくは FPU のデータ幅を Zen 2 の 256-bit から 128-bit にしたものと考えられる。FPU の演算パイプ数を減らすと各 FPU の構成やスケージューラーを変える必要が出てしまうし、コンパイラ側の最適化等も変えなければならない。
Zen 2 アーキテクチャ では、FPU に演算パイプを 4本持ち、MUL 2本、ADD 2本と一見対称になっているが、「Software Optimization Guide for AMD Family 17h Models 30h and Greater Processors (Page36)」 を見るに実際は完全に対称ではなく、ある処理を行えるのが 1本だけということがある。
これを変えて再構成するのは手間だろう。
FPU を減らしたこと自体については、FP性能が必要であれば GPU で処理すればよく、CPU側の FP性能はあまり必要無いと考えたのかもしれない。前世代の PS4/Pro は CU、演算ユニットの規模に対し、フロントエンドの ACE (Asynchronous Compute Engine) を多く搭載し、GPU をより汎用的に使いやすくした設計だった。
PS4/Pro で採用された Jaguar コアもまた FPU のデータ幅は 128-bit であるため、互換性を取る上で Zen 2 コアの FPU は無駄があると考えた可能性もある。

Zen 2 コアそのままではなく、面積を減らし、製造コストをより小さくしようとした工夫は、汎用機ではないゲーム機用の SoC として印象的な変更である。

同様に Zen 2 コアを採用している Xbox Series X は 256-bit幅であり、そのままの構成を採っている。

Navi14/PS5/XSX WGP比較

画像出典:
T: AMD@7nm@RDNA_1th_gen@Navi14@Radeon_RX_5500_XT@215-0932396@… | Flickr M: DSC02280 | quick and dirty test shot | Fritzchens Fritz | Flickr D: HotChips2020_GPU_Microsoft_Jeff_Andrews_v2.pdf

T: Navi14 (RDNA) 2-WGP / M: PS5 2-WGP / D: XSX 2-WGP

画像出典:
T: AMD@7nm@RDNA_1th_gen@Navi14@Radeon_RX_5500_XT@215-0932396@… | Flickr
M: DSC02280 | quick and dirty test shot | Fritzchens Fritz | Flickr
D: HotChips2020_GPU_Microsoft_Jeff_Andrews_v2.pdf

Navi14 (RDNA)PS5XSX の対称的に配置された 2基の WGP を並べた画像が上。
こちらは、3つともメモリに GDDR6 を採用しており、そして WGP の近くにプロセスの微細化の影響を受けにくい GDDR6 PHY (物理層) があったため、それを基準にサイズを合わせている。
WGP 2基で比較したのは、配置によっては一部ユニットの構造や専有面積が変わることがあり、その差を減らすため。
Navi21 (RDNA 2) の詳細なダイショットは無いため、あくまでも Navi14 (RDNA)RDNA 2 ベースとの比較となる。

まず言えるのは、PS5 2-WGPXSX 2-WGP の面積は近く、Navi14 2-WGP の約8割となっていることだ。
PS5XSX の WGP は Navi14 のそれより若干縦に大きくなっているが、全体的にコンパクトに収められている。
製造プロセスについては、Navi14 は TSMC 7nm だが、PS5 は 7nm、そして XSX は 7nm Enhanced という言葉を用いており、曖昧な所があるが、PS5XSXNavi14 の TSMC 7nm より進んだ 7nmプロセスで製造されているとも見られる。物理設計の最適化による功績である可能性もあるが。

面積だけでなく、中央部、TMU (Texture Mapping Unit) + RA (Ray Accelerator) 4基の構造も近いものとなっており、画像を拡大すると分かりやすい。これが Navi21 (RDNA 2) と同様かが一層気になる所だ。
ただ、やはり同時期に同じ開発企業と協力して設計する以上、似通うものなのだろう。

2-WGP Pixels vs Navi14 2-WGP
Navi14 514170px
(W: 1305, H: 394)
x1.00
PS5 433068px
(W: 956, H: 453)
x0.84
XSX 414072px
(W: 972, H: 426)
x0.80

PS5 はダイに WGP 20基を搭載しているが、2基を歩留まり向上のため冗長ユニットとし、WGP 18基の製品仕様を満たしている。これは XSX でも同じで、WGP 28基中 2基を冗長ユニットとしている。

余談: XSX の RB数

PS5 XSX Navi21
Shader Engine 2? 2 4
Shader Array per SE 2 2 2
WGP per SA 4/5 6/7 5
GPU WGP(CU) 18(36) WGP 26(52) WGP 40(80) WGP
GPU Clock 2.23 GHz 1.825 GHz
Peak FP32 10.3 TFLOS 12.1 TFLOPS
RB 16RB? 16RB
Peak Pixel Fill-Rate 142.72 Gpix/s? 116.8 Gpix/s
Peak Geometry Fill-Rate 8.92 Gtri/s 7.3 Gtri/s
Memory Bus Width 256-bit 320-bit
Memory BW 448 GB/s 560 GB/s (high)
336 GB/s (low)

HotChips 32 のスライドを見返して気付いたが、XSX はメモリバス幅 320-bit に対して、最大ピクセル処理性能は 116.8 Gpix/s。RB (Render Backend) を 16基相当 しか 搭載していないことになる。
というのも、RB は最終的なピクセルを VRAM のフレームバッファに書き込む役割を持つため、メモリチャネル数に合わせて搭載、配置されることがほとんどだ。
例えば Navi10 は GDDR6 256-bit (16-bit * 16ch) に対応して、RB 16基が搭載されている。
しかし、XSX は GDDR6 320-bit (16-bit * 20ch) に対し、RB 20基ではなく 16基となっている。
PS5 の RB数は不明だが、規模とターゲットとする解像度、グラフィクスを考えれば XSX と変わらない 16基ではないかと思われる。
XSX の最大ピクセル処理性能には、特殊なメモリアーキテクチャが関係しているのかもしれないが、ピーククロックの差もあり、PS5 が RB 16基と仮定すると 最大ピクセル処理性能は PS5 より約2割低いものとなっている。WGP(CU) 数が影響する FP32性能とは逆だ。

XSX ではピクセル処理性能がボトルネックとなる懸念があるように思われるが、単純に Microsoft がこれで充分だと判断したからその規模になったのだろうという見方もできる。
こればかりはゲーム開発者か誰かが検証しない限り、実性能にどれだけ影響するかは分からない。
あるいは、XSX は目玉機能の 1つとして VRS (Variable Rate Shading) を打ち出しており、HotChips 32 の発表スライドには VRS対応により小さい面積コストで 10-30% の性能向上を得られるとあり、これで足りない分を埋めると考えているのかもしれない。

それと RDNA 2 からは RB が RB+ となり、1基あたり 8-pixel の処理が可能となったが、以前まとめたように、Vega/GFX9 世代から RB+ のレジスタ自体は実装されているため、ダイショットから判別はできないように思う。
一部の AMD GPU で実装、有効化されている RB+ とは何か | Coelacanth's Dream

  info->has_rbplus = info->family == CHIP_STONEY || info->chip_class >= GFX9;

  /* Some chips have RB+ registers, but don't support RB+. Those must
   * always disable it.
   */
  info->rbplus_allowed =
     info->has_rbplus &&
     (info->family == CHIP_STONEY || info->family == CHIP_VEGA12 || info->family == CHIP_RAVEN ||
      info->family == CHIP_RAVEN2 || info->family == CHIP_RENOIR || info->chip_class >= GFX10_3);

Update: 2021/02/16 15:45 JST

関連記事
AMD、MI100 を正式にサポートした ROCm v4.0.0 をリリース & RDNA/GFX10系は 2021年にサポート予定 RadeonSI、RADV が AMD Navy Flounder をサポート AMD Financial Analyst Day 2020 個人的まとめ