Xbox Series S のメモリ帯域幅の話

はい、Xbox Series S (以後 XSS と表記) のスペックのお話(妄想)です。
※めちゃくちゃ長い上に文字だけです!

発表されたスペックを見ますと、GPUXbox Series X (以後XSXと表記) の約12TFLOPS に対し、4TFLOPS とされています。
で、XSX はターゲット解像度が4K、XSS はターゲット解像度が 1440p とされていまして、単純に、シェーダ負荷は同じで解像度だけでスケーリングするとなると、ピクセル数の比率で言えば

  • 4K が 3840 x 2160 = 8294400
  • 1440p で 2560 x 1440 = 3686400

となるので、4K に対して約 0.44 倍の負荷となります。
んで、この比率を 12TFLOPS に当てはめると、5.3TFLOPS ないと足りないはず。

なので恐らくですが、ネイティブ解像度は 1920 x 1080 あたりで、そこから DirectML によるAIアップスケーリングで1440p に持っていくのではなかろうか、と思われます。

その前提だとピクセル数比率で言えば4Kに対して0.25倍となりますので、12TFLOPSに対し3TFLOPSあればよろしいという計算に。
そして HotChips 2020 で発表された GPU ブロックダイアログを見る限り、RDNA2 の GPU には GeForce で言うところの Tensor コアのようなものはないようで、推論計算は CU の SIMD32 ALU で行うようです。

https://cdn.videocardz.com/1/2020/08/Xbox-Series-X-Slide13.jpg

RDNA2 では FP32 に INT8/INT4 をパッキングして計算できるので、例えば INT8 であれば4つパッキングして処理、FP32 で 1TFLOPS のところ、INT8 なら 4TOPS の処理が可能です。
そして推論計算では INT8/INT4 のオペレーションが主のようなので、計算上あまった 1TFLOPS 分の処理能力を使って、INT8で4TOPS、INT4で8TOPS の推論処理を行って DirectML べースのAIアップスケーリング処理を行うと。(全て推測ですがね)

このへん、nVidia の DLSS では例えば GeForce RTX 2070 の Tensor コアが INT8 で 119.4TOPS の能力があってこれを使って計算してるんで、ちょっと桁が違うわけですが、DirectML ベースのAIアップスケーリングがどのくらい重たいかが分からないので、現時点では何とも言えません。

と、ここまではいいとして、次はメモリのスペック差です。

XSX はトータル16GBのGDDR6メモリのうち、

と発表されています。
で、後者の 6GB のうち 2.5GB ぶんが OS とフロントエンドシェル (平たく言えば Xbox ダッシュボード) に使われて、残りの3.5GBがGPU用以外のオーディオとかスタックメモリとかプログラム本体とかの雑多な用途のメモリということです。
https://www.eurogamer.net/articles/digitalfoundry-2020-inside-xbox-series-x-full-specs

で、流石に容量も大きいし帯域幅も広いなあ、と思っていたわけですが、XSS の発表されたメモリ周りのスペックを見ると、トータル10GBのGDDR6で、内訳が 8GB@224GB/s、2GB@56GB/s だというではありませんか!

えっ、56GB/s !?
56GB/s…うーん…あの遅かった Xbox One の主メモリですら 68GB/s なんだけど…遅ない!? という。
かつ、GPU用が 10GB から 8GB と20%しか容量が減ってないわりに、それ以外用が1/3になっているという比率の違いがすごく引っ掛かります。

想定レンダーターゲットが 1/4 になって、恐らくテクスチャも XSX では4Kターゲットのテクスチャ、XSS ではそこから1段ミップマップした 1080p ターゲットのテクスチャを使うだろうと考えると GPU メモリにロードするテクスチャ容量も1/4になるわけで、頂点データとかは XSXでもXSSでも変わらないとして、GPU用には多くて3~4GBもあれば足りそうなところ、GPU用のみに8GBとするとなんか不自然にリッチです。
一方帯域幅としては 560GB/s → 224GB/s と6割減。なにか釈然としない。

で、XSS の想定解像度で考え直すと GPU に 4GB、オーディオデータ等は変わらないと思われるので CPU その他用には XSX と同じく 3.5GB と考えると、合計して7.5GB。ふむ、早いほうの 8GB に収まるではないですか???
とすると、56GB/s しかない 2GB の方は、完全に OS とシェル用で、8GB@224GB/s の方でゲーム部分を賄う設計なのかな、という気がしてきませんか???

XSX では OS+シェルに 2.5GB 取るといってたので、0.5GB 足んないじゃん、という気がしますが、そこはきっと何か色々削って帳尻を合わせているのではないかと思います。クイックレジュームまわりとか。(超適当)

なんだか結論ありきの話の展開になってしまいましたが、いや実際、そうだと思わないと 2GB@56GB/s というのはなかなかに驚きの数字でして。
単純に数字間違ってましたー、っていう可能性もあるんですが、そうすると逆にGPU用/CPU用の比率で考えたときにいびつすぎる。

ということで推測通りだとすると今度は、XSX と XSS でメモリ管理まわりが変わってくるということで、なんとなく、Xbox One X でのフラットな 12GB GDDR5 に対する Xbox One の eSRAM の特殊性、みたいなことが思い出されるわけですが、MS が言うには「パフォーマンスがちょっと変動するだけで、Unified Memory であることには変わりないよ」つーことなので、あまり問題にならないのかもしれません。

そう考えると、OS+シェル分の2.5GBを差っ引けば、

  • XSX ではゲーム用に13.5GBのUnifiedメモリがあって帯域幅は (加重平均すれば) 約502GB/s
  • XSS ではゲーム用に8GBのUnifiedメモリがあって帯域幅は 224GB/s

と考えられ、4K→1440pでの描画負荷0.44倍に対し、メモリ帯域幅も約0.45倍と、なんとなく納得できそうな感じに!

とはいえ、GPU側は解像度でスケーリングするので0.45倍で良いですが、CPU側から見てメモリアクセスが遅くなるのは問題になりそうです。
(敵のAIの思考が遅くなったりしたらゲーム性変わってしまう)

が、実際のところ、CPUから見たメインメモリの帯域として考えると (XSX の) GDDR6 336GB/s というのがべらぼうに早くて太いというだけで、ゲーミングPCでもメインメモリの主流は GDDR4、帯域幅は規格上最高の PC4-34100 のデュアルチャネルでも高々 68.2 GB/s です。
なので、ゲームのCPU側のメモリ帯域に対する要求が急に何倍にもならない限り、そこんところは大丈夫そうです。
(※一般論として、CPUからのメモリアクセス速度は解像度ではなくどちらかというとfpsに効いてくる)

まあ、ホントのところは実際に発売された上で同じゲームを XSX, XSS で比較しないと分かりませんが、机上であれこれ考えるぶんには、XSS も十分に高性能な気がします。

問題は「予約できるか」ですよ。本当に。
なんとなく、SNS 等での反応を見ていると、フォートナイトとかそういうの普通に遊べて、Game Pass というのもあるらしいし、カジュアルゲーマーなら XSX で十分なんじゃね? という風に今まで Xbox ユーザでなかった方が気づき始めているようなので、マジで、マジで、転売屋の餌食にならないことを、本当の本当に祈る次第であります!!!!

PS5 では米国にて、これまでの PSN でのアクティビティにより、「徳の高い方」を優先的に予約ご招待みたいなプログラムを実施するとのことですが、Xbox 陣営も、今既に Game Pass Ultimate に入っている人とか、実績の解除数が多い人を優先するとか、そういう感じで現行ユーザーをなんとか救済していただけると本当に助かるなあ!!と、勝手なことを願ったりしています。

あと、XSS って書くとなんかクロスサイトスクリプティングみたいでアレですね。(今更)