後藤弘茂のWeekly海外ニュース
なぜPlayStation 4はAMDアーキテクチャを使ったのか
(2013/2/26 00:00)
コモディティデバイスに追いつかれつつあるゲーム機
ソニー・コンピュータエンタテインメント(SCE)が発表した次世代ゲーム機「PlayStation 4(PS4)」は、AMDのJaguar(ジャガー)8コアとGCN(Graphics Core Next)系GPUのカスタムAPU(Accelerated Processing Unit)を使う。AMDの汎用アーキテクチャのカスタマイズ版を使うのは、時代の流れで、そうしなければならなったからだ。SCEが独自に尖ったチップを開発し、PCのような汎用のコンピューティングデバイスを大きく凌駕できる時代は終わってしまった。
現在は、PCやスマートフォン、タブレットなど、世界中に溢れる汎用のコンピューティングデバイスが、どれもゲームを走らせることができる。汎用コンピューティングデバイスのチップのアーキテクチャは、ゲーム機のチップと方向性が変わらなくなりつつある。こうした時代に、ゲーム機はどうやって存在意義を打ち出すのかが、PlayStation 4(PS4)で問われている。
ゲームがコモディティデバイスの上で走るようになった理由は複数ある。
まず、コンシューマ向けコンピュータも全てインタラクティブメディアを扱うようになった結果、チップに求められる機能がゲーム機と似通ってきた。汎用コンピュータは、以前はCPUコアのスレッド当たり性能を高めることにフォーカスしていたが、CMOSスケーリングが続かなくなったことで、マルチコア化&ヘテロジニアス(Heterogeneous:異種混合)化に向かわざるを得なくなった。プロセスの微細化毎に、同じ電力枠で周波数とCPUコアの複雑度を上げることができなくなったからだ。そのため、汎用のチップの構造がゲーム機のチップと似るようになって来た。
ヘテロジニアス化では、GPUを汎用の並列マシンとして使うというビジョンが興隆し、GPUコアがコモディティデバイスでも急進化し始めた。結果として、汎用のコンピュータチップの中でGPUコアの比率が高まり、ゲーム機でのGPUコアの比率に近づき始めた。また、皮肉なことにCell Broadband Engine(Cell B.E.)などのゲーム機のアーキテクチャがコンピュータ業界に衝撃を与え、アーキテクチャ開発の方向をゲーム機的に変えさせた。
こうしたコモディティデバイスのチップの変化により、ゲーム機のチップだけの特質は薄れつつある。かつては、ゲーム機チップの差別化は比較的簡単だった。汎用のデバイスがやっていないことをやればいいだけだったからだ。しかし、今はゲーム機もコモディティデバイスも、同じ方向へ向かっているため、チップの差別化は難しい。
まだチップレベルでの差別化は可能だが、それでも、以前のような決定的な差というほど大きな差別化はできない。そのため、現在は、PlayStation 3(PS3)の時のように、ゲーム機のチップ開発にとてつもない投資をしても、差別化の効果が薄く、開発コストをまかなうだけのリターンが望めなくなっている。例えば、コモディティデバイスの10倍のパフォーマンスのチップを作ることは、かつてはできたが、今はできない。そのため、汎用デバイスの要素をうまく使って、ゲームに最適なチップを作り差別化することが経済的に見合う方法になりつつある。
コモディティデバイスとの差別化が容易だった過去のゲーム機
過去20年間、ゲーム機はプロセッサ技術の牽引役だった。1994年に登場した初代PlayStationは、ハードウェアによるジオメトリエンジンとレンダリングエンジンのチップを載せた、本格的な3Dグラフィックスマシンだった。コンシューマPC向けの廉価な3Dグラフィックスカードが登場するよりも前の時代だ。例えば、NVIDIAの最初のチップ「NV1」が登場したのは、PlayStationの後だ。
次のPlayStation 2(PS2)でも、CPUとGPUの両方でPCに対して差別化を図ることができた。PS2のCPU「Emotion Engine(EE)」は、当時のPentium IIIに対して、スカラーの整数演算では劣るが、ベクター演算では大きく凌駕した。PS2のGPU「Graphics Synthesizer(GS)」は、組み込みDRAM(eDRAM)を大量に載せたアーキテクチャで、メモリを外付けするPC向けGPUと差別化することができた。とはいえ、PS2ではPCグラフィックスに追いまくられ、Xboxという形で、PCグラフィックスからの挑戦を受けることになった。
PS3では、当時、スレッド当たりの性能の向上に偏り肥大化したPC向けCPUに対して、シンプルCPUコアを多数集積することで、チップ当たりのスループットを10倍引き上げる「Cell Broadband Engine(Cell B.E.)」アーキテクチャで挑戦した。CPUでは明確に差別化が可能だった。しかし、PS3ではGPUコアはPCグラフィックスのカスタマイズ版である「RSX」を採用した。その背景には、PCグラフィックスの急発展があった。
現在でも、まだゲーム機が汎用デバイスに対して、チップレベルである程度差別化することは可能だ。汎用CPUは、マルチコア化が進んだとはいえ、まだ電力効率の面で問題がある。GPUは、レガシーのグラフィックスAPIにやや足を取られていて、急進的な改革は難しい。PCではメインメモリは、高速化が鈍化したDDR3のままだ。とはいえ、あと5年もしたら、ゲーム機チップを差別化できる要素はほとんどなくなってしまうだろう。
PS3の時のような大規模投資が難しくなった
今回のPS4開発では、SCEは明らかにPS3の時のような膨大な開発予算をかける余裕を持っていなかった。PS3はバブリーなゲーム機市場の発展予測をベースに、開発にコストをかけた。開発費用はゲーム機の出荷台数で割ればいいと考え、その台数を強気に見積もって、投資を行なったのがPS3だった。
しかし、今、ゲーム市場はコモディティデバイスのおかげで拡大しているにも関わらず、ゲーム機市場の拡大は難しい。そうした現状では、PS3の時のような無茶はできない。ハードウェア開発の投資は抑え、マシンコストも低く抑えることが可能なアーキテクチャにしなければならない。
現実的な路線でのゲーム機チップ開発となった場合、コモディティデバイスの技術を適用するのは当然の流れとなる。コモディティの世界の技術が、ゲームを走らせるのに十分な機能を備えており、そして、それを活用することで、開発予算を大幅に抑えることができるからだ。作ろうとしているのは、PS1時のような100万トランジスタのCPUではなく、数十億トランジスタを載せたチップであり、ゼロから開発するのは非効率過ぎる。
そこでポイントとなるのは、コモディティデバイスの世界から、どんなアーキテクチャを持って来るか。SCEのアーキテクチャ選択の軌跡を見ていると、およその方向性が推測できる。まず、そもそもの発想が、Cell B.E.で試みたハイスループットCPUというアイデアの見直しというか、Cellにインスパイアされた技術の流れを使おうとする発想から出発しているように見える。
Cell B.E.はショートベクターの小さなストリームCPUコアをたくさん並べて、マルチスレッドで動作させる構造だった。Cell B.E.自体は成功しなかったが、プロセッサ技術はCell B.E.の大波で変わり、Cell B.E.に近いか、ある程度影響を受けた技術がどんどん台頭した。つまり、IntelのLarrabee(ララビ)や、AMDとNVIDIAのGPUだ。
こうした汎用性の高いGPUまたはスループットCPUを、ゲームにおいてグラフィックス以外の用途ですぐに使うかどうかはともかく、ハード側は汎用に使えるようにしておくという発想だと推測される。
CPUとGPUのワンチップ統合化が最初からSCEの狙い
LarrabeeはIntel的な発想でCellを考え直したようなアーキテクチャで、ベクターを強化した小さなCPUコアを並べてマルチスレッド動作させる点はよく似ている。ただし、x86命令セットを拡張し、ハードウェアマネージドのコヒーレントキャッシュを備える点がIntel的だ。しかも、IntelはこれをグラフィックスとしてGPU対抗で打ち出しており、SCEにとっては発想的に親しみやすかった(Cell B.E.でも似たような発想があった)と見られる。しかし、Larrabeeは最初は電力効率に難があり、IntelがLarrabeeのグラフィックス戦略を諦めた時点で、SCEにとって使えないコマとなってしまった。
もう一方のGPUは、Cellと比べて、ベクターの粒度はずっと大きいし、スレッドの制御も大きく異なるが、ベクタープロセッシングとメモリ階層の最適化でプロセッサの効率を上げるという発想は似ている。NVIDIAとAMDという選択肢では、SCEはAMDを取るしかない。なぜなら、SCEは、当初からCPUとGPUを統合したAPU(Accelerated Processing Unit)か、または、APUにできる技術を求めていたと思われるからだ。
その理由は、現在のPS3とXbox 360を比較すればよくわかる。Xbox 360はCPUとGPUを統合してワンチップにして、コストと実装面積を下げた。SCEもPS2では同じようにEEとGSを統合したが、PS3ではCellとRSXはそれぞれ別チップのまま、統合できていない。NVIDIAからRSXのIPを買うことが非常に難しいことが一因だと思われるが、2チップはPS3の足かせとなっている。
こうした事情から、SCEは当初からAPUを想定していたと見られる。Intelも、Haswell(ハスウェル)とLarrabee3なら簡単にワンチップ化ができただろう。そして、CPUとGPUの両方を持つ、AMDも同じことができる。NVIDIAは、Project Denverが立ち上がればできるようになるが、それでは2013年末に間に合わないので必然的に外れる。
SCEがこうした発想で次世代チップを求めていたとしたら、AMDのGPUコアでの選択は、必然的に汎用性を高めたGCN(Graphics Core Next)以降のアーキテクチャになる。どちらかと言えばグラフィックス寄りのVLIW5/4アーキテクチャではダメだったはずだ。そして、GCNは28nm以降のプロセスに乗っているので、必然的にプロセス技術も28nmとなる。
Jaguar 4コアはBulldozer 2コアよりも小さい
SCEは、当初は、おそらく一定数のハイパフォーマンスCPUコアと、汎用的にも使えるGPUコアという組み合わせを想定していたと推測される。サードパーティデベロッパーのある程度の数が、PS3のフィードバックとして、PPUより高パフォーマンスでプログラムしやすいCPUコアを求めたはずで、それに引っ張られてCPUを探していた可能性がある。つまり、Cell B.E.からの発想の拡張で行くと、Cell B.E.のメインCPUコアのPPU(Power Processor Unit)の代わりに4コア程度のパフォーマンスCPUコア、スループットコアのSPU(Synergistic Processor Unit)の代わりにグラフィックス兼用のGPUコアという発想だったと推測される。
それが、ファウンダリ側の都合により、低消費電力コアの「Jaguar(ジャガー)」の8コア構成に変わるのだが、これは結果的には悪い選択ではない。ゲームでは、GPUパフォーマンスの方がはるかに重要性が高いからで、CPUコアのスレッド当たりの性能において、アムダールの法則によるボトルネックはむしろ汎用アプリケーションの方が影響が大きいかも知れない。そして、ポラックの法則によっって、スモールコアのJaguarは電力効率が非常にいい。
ちなみに、Jaguarがどれだけ小さいかは、下のAMD CPUのコアサイズの比較グラフと、28nmのJaguar 4コアと2MB L2キャッシュのコンピュートユニットと、32nmのBulldozer 2コア(実際には整数演算コア以外は融合コア)と2MB L2キャッシュのモジュールの比較図を見れば明瞭だ。JaguarのCUは26.2平方mmで、Bulldozerモジュールは30.9平方mm。Bulldozerは28nmに移行すると最大70%に面積が減るが、CPUコアもSteamrollerとなり大型化する。28nmでJaguar 8コアとSteamroller 4コアでほぼ面積が変わらないだろう。
全体で見ると、PS4チップは、かなりゲーム開発のために考え抜かれた部分があり、真剣に検討したことがわかる。特筆すべきなのは、メモリ量を8GBにしたことで、これによってソフトウェア開発は格段に楽になった、というか普通のレベルになったと言える。ちなみに、PS4発表時の記事でGDDR5を2Gbitチップとしたのは間違いで、4Gbitチップの16個構成でx16によってx256インターフェイスにつないでいるはずだ。Jaguarとメモリ、ダイ面積などの説明は次回に回したい。