後藤弘茂のWeekly海外ニュース
AMDの次世代GPU「Radeon R9」と新グラフィックスAPI「Mantle」
(2013/9/27 10:04)
演算パフォーマンスが5TFLOPS以上のフラッグシップGPU
AMDは新アーキテクチャ世代のGPUとなる「Hawaii(ハワイ)」のイントロダクションを、米ハワイで行なった。新シリーズのブランドは大きく変わり「Radeon R9」、「Radeon R7」シリーズとなる。フラッグシップモデルの生の演算パフォーマンスは5TFLOPS以上、メモリ帯域は300GB/sec以上、トライアングルレートは毎秒40億、そしてトランジスタ数は60億以上となる。ちなみに、NVIDIAの巨大チップGK110(GeForce GTX Titan)のトランジスタ数が71億なので、Hawaiiはそれに迫る。
このスペックを見て、「あれ?」と疑問を感じる人も多いだろう。世代が変わる度に、パフォーマンスは2倍になるのが当たり前のGPUなのに、今回は倍になっていないからだ。前世代の最高峰のダイである「Tahiti(タヒチ:Radeon HD 79xx系)」は、ピークで4TFLOPSで、メモリ帯域は288GB/sec、トランジスタ数は4.3B(43億)。Tahiti対Hawaiiでは、2倍には遠い。
2倍にならない理由は複数考えられるが、その結果として明確に予測できることは、AMD GPUは今後は1年毎にパフォーマンスまたはパフォーマンス/電力が上がって行くことだ。ファウンドリのプロセス移行が55nm→40nm→28nmへと2年刻みになったために、過去数年のGPUは事実上のパフォーマンス据え置き期間が長くなっていた。しかし、今後は半導体テクノロジ側の状況が変化するので、段階的に性能がアップして行くだろう。Hawaiiはその第1弾となるGPUだ。GPUのダイサイズとトランジスタ密度から考えれば、近いうちにGPUは100億トランジスタの大台に乗るだろう。
オーディオハードウェアエンジンを搭載
Hawaiiで目立つのは、性能を上げるだけでなく、アーキテクチャも進化させたことだ。今回のチップアーキテクチャ面での特徴は、オーディオエンジンを加えたこと。「TrueAudio」と名付けたプログラマブルオーディオエンジンをRadeon R9 290/290X、R7 260Xに搭載した。TrueAudioの実装形態は発表されていないが、オーディオハードウェアのPC向けGPUへの内蔵はこれまでにも何回もあった。そもそも、NVIDIAが最初に発表した「NV-1」が、3DグラフィックスGPUにオーディオプロセッシングも内蔵した、マルチメディアプロセッサだった。
今回、AMDが実装したのはプログラマブルなエンジンで、3Dオーディオを初めとするサウンド機能を実装し、CPUからオフロード処理することで、CPUの負荷を減らすことができる。半導体的に見ると、理論的にはオーディオような特定機能のハードウェアのGPUへの統合は意味がある。それは、半導体チップの電力密度を下げにくいため、グラフィックスの演算ユニットだけを増やして行くと、熱処理で行き詰まってしまうからだ。特定機能のハードウェアは電力効率が高いため、そうしたユニットを増やすことは、チップ全体の電力効率の面で利点がある。また、GPUコアと負荷のピークのタイミングが異なる場合が多いため、熱の分散化の面でも利点がある。
GCNアーキテクチャを拡張へ
GPUコアのアーキテクチャも進化して行く。AMDは、「Southern Islands(サザンアイランド:Radeon HD 7xxx)」の世代で、GPUアーキテクチャを大きく転換した。それまでのVLIW(Very Long Instruction Word)アーキテクチャから、GCN(Graphics Core Next)アーキテクチャへと進化させた。次の「Sea Islands (シーアイランド:Radeon HD HD 8xxx)」シリーズは大半がSouthern Islandsと同系列ダイだったため、GCN導入からの大きな設計変更は、今回の「Volcanic Islands」シリーズが初めてとなる。
今回、AMDは明確に“GCNを拡張した”と謳っている。そして、拡張の最大のポイントはDirectX 11.2への対応だ。DirectX 11.2のハードウェア側での最も目立つ変化は、タイルリソースのサポートで、タイリングを何らかの実装でサポートすることになる。ただし、実際のハードウェア上の実装(例えば、タイリングGPUのようにタイルキャッシュを持つなど)は、明らかになっていない。
ただし、AMDがアーキテクチャを根底から変えることは考えにくい。それは、GPUメーカーにとっても、GPU開発は手間と時間がかかるものになっており、以前のように完全に新しいアーキテクチャを毎世代開発することは極めて難しいからだ。NVIDIAもAMDも、現在はベースアーキテクチャを完成させると、数世代はその拡張版を続けるというパターンになっている。
Hawaiiのメモリ帯域は300GB/sec以上。下のメモリロードマップの図を見ればわかる通り、GDDR5の限界へと徐々に近づいている。近づいているからメモリ帯域の拡張も鈍化し始めている。トライアングルレートも大幅に上がったが、これを引き上げる方法は限られているので、アーキテクチャは推測ができる。
AMDの隠し球Mantle
AMDの今回の発表の中で、最もインパクトが強かったのはまだ詳細が明らかではないGPU製品ハードウェアより、ソフトウェア層の「Mantle(マントル)」かもしれない。Mantleは一言で言えば、ゲーム機のプログラミングモデルを、PCに持ち込んだものだ。Mantleはミドルウェアのような上位のソフトウェア層ではなく、DirectXのような低位のグラフィックスAPIとドライバのソフトウェア層だ。
その意図は、ランタイムソフトウェアを軽くすることで、ゲーム機のように、PCのグラフィックス機能をぎりぎりまで使えるようにすることだ。地球に例えると、コア(グラフィックスコア)を囲むように、マントル層(MantleドライバとMantle API)があり、その外側の地殻(グラフィックスアプリケーション)を支えるようなイメージだ。
AMDのRaja Koduri氏(Corporate Vice President, Visual and Perceptual Computing)は次のように説明する。
「Mantleは新しいローレベルインターフェイスだ。MicrosoftのHLSLのような既存のシェーダ言語とも互換であるため、(ソフトウェアの)移植は非常に簡単だ。Mantleの利点は、他のPC用APIと比べて9倍ものユニークドローコールを可能にする点だ。それは、2018年のハードウェア(の性能)を今日手にすることができることを意味する。
これまで、ゲームコンソールの開発者はモア&レス(more and less)だった。つまり、低いハードウェアスペックから、より多くのパフォーマンスを引き出すことができた。それに対して、今日のPC向け(ゲーム)開発者は、レス&モア(less and more)でしかない。ハードウェアスペックはコンソールより優れているのに(低いパフォーマンスしか得られない)。しかし、Mantleは、PC向け開発者に、モア&モア(more and more)を与えることができる」。
ゲームコンソールでは、5~10年もハードウェアスペックが固定されるため、ライフサイクルの後半ではハードウェアのスペックはPCよりずっと低くなる。しかし、ソフトウェア層のオーバーヘッドが少ないため、パフォーマンスを引き出すことができる。それに対して、PCではハードウェアは年々進化するためコンソールをはるかに追い抜くが、ソフトウェアオーバーヘッドのためフルにパフォーマンスを活かすことはできない。
これがこれまでのゲーム開発の常識だった。しかし、AMDはMantleでそのセオリーを崩そうとしている。PCにも、ゲーム機並にオーバーヘッドの小さなソフトウェア層を導入することで、開発者がハードウェアのパフォーマンスを引き出すことができるようにする。それによって、PCのゲームをよりリッチなものにしようと言うのがMantleのアイデアだ。
ゲーム機のソフトウェア層とよく似たMantle
Mantleのコンセプトは、ゲーム機のグラフィックスソフトウェア階層を見ると理解しやすい。例えば、PlayStation 4(PS4)の場合、基本的には下のようなAPI構造になっている。左端のグラフィックスパイプラインの制御のAPIは、2階層になっており、上位のラッパーAPIはDirectXやOpenGLのAPIと類似だ。しかし、PS4では、その下のローレベルAPIも開発者に公開しており、ラッパーAPIよりもローレベルのアクセスができる。
GPUの場合は、CPUと異なり、複雑なグラフィックスパイプラインを制御しなければならない。PC向けのAPIでは、その部分が厚く抽象化されているが、ゲーム機の場合は、よりハードウェアに近いレベルまでアクセスができるようになっている。といっても、完全にハードウェアレベルまで公開してしまうと、後々問題が生じるので、最低レベルのハードウェア抽象化は行なう。その点では、ハードウェアを隠蔽するというGPUのモデルに沿っており、完全に直接GPUに触れるわけではない。
ちなみに、ゲーム機の場合は、シェーダコアをプログラムするためのシェーダ言語側も、より薄いソフトウェア層になっている。軽量なランタイムでシェーダをコンパイルする。さらに、下位のランタイムコンパイラのインターフェイスも公開するか、事実上使えるようにするケースが多い。
Mantleは、コンセプトを見る限りゲーム機のソフトウェアモデルそっくりだ。グラフィックスソフトウェアを軽く薄くすることで、GPUの生パフォーマンスをできるだけ引き出せるようにする。特にKoduri氏が強調していたのは、発行できるドローコールを増やすことだ。
グラフィックスプログラミングでの難関の1つはドローコール(Draw Call)、つまり、描画呼び出しと呼ばれるグラフィックスAPI群のコールだ。描画エンジンが発行するドローコールが増えると、API側の処理が重くなり、CPUのパフォーマンスを食ってしまう。そのため、PCのグラフィックスAPIではバッチングなどの手法で、ドローコールを減らさなければならず、これが開発者にとって結構な手間になってしまう。Mantleは、ソフトウェア層を軽く薄くすることで、発行できるドローコールを大幅に増やすという。
推測されるMantleの戦略は
Mantleの利点の1つは、似たようなプログラミングモデルを取るゲーム機からのゲームの移植を、容易かつ高パフォーマンスにできることだと推測される。もちろん、PCグラフィックス上のMantleと、PlayStation 4(PS4)やXbox Oneでは、同じローレベルAPIでも差異はあるはずだが、親和性は強いだろう。これは、AMDが次世代ゲーム機のグラフィックスを征したからできることだ。このチャンスでしかできない戦略だろう。もっとも、Mantleがサポートするのは現状ではGCNだけなので、同じAMDグラフィックスでもWii Uは外れることになる。
AMDの戦略として見れば、MantleはNVIDIAをPCゲーミングの世界から押し出す絶好のツールともなる。もし、ゲーム開発者が、PS4とXbox One、Mantleのクロスプラットフォームで、これまでより容易に高パフォーマンスのグラフィックスエンジンを作ることができるなら、Mantleのサポートが広がっても不思議ではない。もちろん、開発者はDirectX 11もサポートを続けるが、API/ドライバレベルでオーバーヘッドの少ないAMDグラフィックスへと開発者が傾いて行く可能性もある。つまり、Mantleは、ゲームコンソールの覇権を背景にした、AMDによるNVIDIAに対するPCゲーミング市場奪取の戦略と見ることもできる。
もっと広い見方をすれば、Mantleは、GPUメーカーが独自のグラフィックスAPIで覇を競っていた時代へと戻るような動きだと見ることもできる。かつて3Dfx InteractiveのGlide APIがゲームのプラットフォームだった時代の再現という見方だ。これは、DirectXとOpenGLへと収れんしていった流れと逆になるが、これだけハイパフォーマンスグラフィックスのプレーヤーが少なくなると、戦略としての意味を持って来る。事実上、AMD、NVIDIA、Intelの3社しかいないので、独自APIでも戦うことはできる。ただし、モバイルでの3Dグラフィックスが興隆しつつあるという状況を考えると、戦略的に得策かどうかはわからない。
別な見方をすると、これは過去のしがらみで重いGPUのためのランタイムの再編の一環と見ることもできる。AMDは、重いグラフィックスランタイムを外して、GPUコンピューティングを実現するためにHSA(Heterogeneous System Architecture)を導入しつつある。Mantleは、ソフトウェア層を軽くするという意味では、HSAと共通する部分がある。
Mantleの詳細は、11月にAMDが開催する技術カンファレンス「AMD Developer Summit」で公開される予定だ。