後藤弘茂のWeekly海外ニュース

大きく進化を遂げた新世代GPU「Radeon HD 7900」



●汎用コンピューティングでの性能を一気に高めるTahiti

 AMDが新世代のGPU「Radeon HD 7900(Tahiti:タヒチ)」を発表した。Tahitiは、「Southern Islands(サザンアイランズ)」シリーズの最初のGPUシリーズで、今回発表されたのはハイエンドの「Radeon HD 7970」だ。今後、ミッドレンジ向けの「Pitcairn」、メインストリーム向けの「Cape Verde」とSouthern Islandsファミリの下位モデルと、デュアルGPUのトップエンドモデルが投入される見込みだ。それまでは、ミッドレンジ以下はRadeon HD 6000系が継続される。

 Tahitiは、“新し”づくめのGPUだ。28nmプロセスで製造され、インターフェイスはPCI Express Gen3.0で、APIはDirectX 11.1対応、パワーゲーティングを全面的にサポートし、そして、GPUコア自体が完全な新規アーキテクチャ「Graphics Core Next」になった。これらの要素の中で、最も重要な点はGraphics Core Nextの採用で、GPUの中身は完全に一新された。

Southern Islandsの特徴

 AMDがTahitiでGPUアーキテクチャを改革した目的は、汎用的なコンピューティングでのパフォーマンス効率を引き上げる点にある。グラフィックス性能を維持・発展させながら、AMDアーキテクチャで立ち後れていた汎用コンピューティングへの対応を一気に進めるのがGraphics Core Nextの狙いだ。そのため、TahitiのGraphics Core Nextでは、プログラマがより扱いやすいメモリ階層やメモリコヒーレンシ、粒度の小さいタスク実行、効率の高い演算ユニット構成、より効率的なコントロールフロー制御などを実現した。

 その一方で、グラフィックスへの最適化も重視する。例えば、NVIDIAは論理ベクタ長を32スレッドにしたが、AMDは64スレッドを継続する。AMDのMike Houston氏(Senior System Architect, AMD)は、その理由を「32だと正方形にならない、グラフィックスを考えれば正方形が望ましい」と説明する。

 TahitiのGraphics Core Nextは、部分的には、NVIDIAのFermiを上回る汎用コンピューティングへの最適化がなされている。そして、このコアは、今後のAMDのGPUプログラミングフレームワークであるFSA(Fusion System Architecture)を推進するための土台でもある。これまでGPUの汎用コンピューティング路線の先頭を突っ走ってきたNVIDIAにとって、強力なライバルの出現となる。ただし、NVIDIAも28nmプロセス世代のKepler(ケプラ)の投入を準備している。

Southern Islandsの主な機能

●28nmプロセスで大きくジャンプする次世代GPU

 現在のAMDとNVIDIAのGPUは、いずれも40nmプロセスで製造されている。GPUが使うファウンドリの高速ロジックプロセスは、以前は半世代刻み(約80%シュリンク)で刷新されていた。しかし、80nm→65nm→55nmといったペースだ。ところが55nm以降は、ハーフ世代がなくなり、1世代(約70%シュリンク)刻みでプロセスが変わるようになった。55nm→40nm→28nmというペースだ。そのため、プロセス世代の変わり目で、GPUが大きく飛躍するようになった。

 28nmプロセスのTahiti(Radeon HD 7900)は4.31B(43億)トランジスタと、膨大なトランジスタを搭載する。ダイサイズは、40nmのハイエンドRadeon HD 6970(Cayman)の389平方mmに近い365平方mm。500平方mmを越えるNVIDIAのハイエンドGPUと比べると小さいが、CPUと比べるとAMDのBulldozer 8コアのダイの315平方mmより一回り大きい。

GPUのダイサイズ推移
PDF版はこちら

 演算ユニット数は単精度浮動小数点演算ユニットが2,048ユニット。ピークパフォーマンスは12月現在で3.79TFLOPS(925MHz動作時)に達すると言う。メモリインターフェイスは256-bit幅から384-bit幅に拡張され、ハイエンドの7970では6個のメモリコントローラクラスタを備える。GDDR5 5.5Gbpsではメモリ帯域は264GB/secに達する。

Radeon HD 7970の主な仕様

 ROP(Rendering Output Pipeline)数はRadeon HD 6970(Cayman)の8クラスタ32ユニットを継承する。TahitiのGPU全体のグラフィックスパイプの制御は大きく2つに分かれており、ジオメトリエンジンとラスタライザを2ユニットずつ備える。言ってみれば、デュアルGPUコア的な構成で、これもCaymanから継承されている。しかし、全体の構成は、Caymanとは全く異なる。

 AMD/ATI GPUは、Radeon HD 2900(R600)以降、これまで、同じ基本設計を発展させて来た。IntelがCoreアーキテクチャ(Merom:メロン)を発展させてNehalem(ネヘイレム)、Sandy Bridge(サンディブリッジ)と作っているのと同じだ。しかし、Tahitiの内部アーキテクチャは、R600からのAMD/ATIアーキテクチャからは完全に刷新された。同じ会社のGPUとは思えないくらい、アーキテクチャが異なっている。

●Caymanから大きく変わったTahitiの内部構造

 下の図はTahiti(Radeon HD 7900)の全体構成で、明瞭になっていない部分は推定で補っている。隣はCaymanの全体構成で、ぱっと見ただけでも大きく構造が異なることがわかる。比較のために、NVIDIAの現在のFermiアーキテクチャの全体図を並べてみたが、TahitiはAMDの従来のアーキテクチャより、Fermiに近いように見えることがよくわかる。しかし、細部を見ると、Fermiとも全く異なっており、部分的にはFermiより汎用コンピューティング向けになっている部分もある。

Tahitiの全体構成図
PDF版はこちら
Caymanの全体構成図
PDF版はこちら
GF100の全体構成図
PDF版はこちら

 まず、全体の構成での従来アーキテクチャとの大きな違いは、GPUの演算ユニットへの命令発行と制御が中央集中から、コア分散へと変わったことだ。Caymanではディスパッチャエンジンが2個あり、それぞれがGPU全体の半分のSIMDアレイの命令の発行と制御を司っている。それに対して、TahitiのGraphics Core Nextアーキテクチャでは、命令の制御はTahiti全体で32個備えられているCU(Compute Unit)に分散されている。そのため、より小さな粒度で、きめ細かな制御を行なうことができる。

 従来のAMDアーキテクチャは、4~5ユニットの浮動小数点演算ユニットをVLIW(Very Long Instruction Word)構成にした演算プロセッサを16個束ねてSIMDエンジンとして制御していた。Tahitiでは、GPUは「Compute Unit(CU)」と呼ばれるプロセッシングコアを最小単位として構成される。物理的にはCUは4個ずつ1個のクラスタにまとめられており、L1命令キャッシュとスカラL1データキャッシュを共有する。しかし、理論的には各CUは独立しており、それぞれ異なるカーネルプログラムを走らせることができる。

コア分散型の命令発行と制御

●4ユニットのSIMDエンジンをCU内に備える

 CU(Compute Unit)の構造は下のようになっている。SIMD型のベクタ演算ユニットが4個とスカラ演算ユニットが1個備えられている。また、図中には明記してないが、テクスチャユニットフィルタ専用も備える。CUの構造を、CaymanのSIMDエンジンと比べると、全く異なることがわかる。

CUのアーキテクチャ
PDF版はこちら
CaymanのSIMDエンジン
PDF版はこちら

 従来のAMD GPUは、VLIW方式の演算プロセッサを16個束ねてSIMD構成にしていた。ところが、Tahitiではそれぞれ別スレッドを実行するユニットを束ねてSIMD構成にするNVIDIAと似た方式となっている。この背景には、GPUの設計フィロソフィの変化がある。Graphics Core Nextの構造は、汎用的なプログラムを走らせた場合にも、ムダが少なく効率が高い。より汎用コンピューティング向けのアーキテクチャだ。

GPU命令実行の仕組み
PDF版はこちら
Graphics Core Nextの構造

 CUのSIMD演算ユニットは16レーンの演算ユニットで、浮動小数点(FP)の積和算と整数演算の両方を実行できる。また、それぞれが、独立した64KBのベクタレジスタを備えている。SIMD演算ユニットは同一命令で16演算を並列実行できる。単精度演算なら、基本は1サイクルスループットだ。旧来のAMD GPUやNVIDIA GPUは、超越関数などを実行するスーパーファンクションユニットを備えていたが、AMDの新アーキテクチャでは超越関数も倍精度演算も同じSIMDの演算ユニットで実行する。

 4個のSIMDユニットに対して命令発行ポートは1個だけだ。これは、ベクタユニットに対する命令発行の仕組みから1ポートで充分だからだ。AMDのGPUは、64ワークアイテムをバインドした「Wavefront」を命令実行の基本単位としている。実行ユニットはWavefront単位で同一命令のSIMD実行を行なう。つまり、Wavefrontの64ワークアイテムが、AMD GPUの論理ベクタ長となっている。これは、NVIDIAアーキテクチャで32ワークアイテムを束ねたWARPに相当する。

 それぞれのSIMDユニットは16レーンで4サイクルかけて1つのWavefrontの64スレッドをを実行する。Tahitiでは、4個のSIMDに対する命令発行を1サイクルづつスライドさせている。あるサイクルにSIMD 0に命令を発行し、次のサイクルにはSIMD 1に命令を発行といったように命令発行をずらす。4サイクルかけて、4個のSIMDユニットに命令を発行する仕組みだ。そのため、1命令ポートで、4つのSIMD全てをフル稼働させることができる。

Graphics Core Nextのスケジューリング
PDF版はこちら

 命令スケジューラはそれぞれのSIMDに対して、複数のWaveのプログラムカウンタとバッファを持つ。レジスタは各SIMDに分離されているため、それぞれのSIMDには、同じWaveグループから命令を発行する。これは、レジスタを共有するNVIDIAとの違いとなっている。AMDの従来アーキテクチャでは、2個のWavefrontをインターリービングで命令発行していたが、Graphics Core Nextではそうした制約はなく、プールしたWaveの中から実行準備が整ったものを自由に発行できる。NVIDIAと似たような仕組みだ。

 ちなみに、Wavefrontを4サイクルかけて命令発行するのは、実行ユニットの実行遅延を隠蔽する目的もある。AMDの旧来アーキテクチャでは、2個のWavefrontによるインターリーブでの8サイクル以上の実行レイテンシは隠蔽できなかった。Graphics Core Nextではそうした制約がないため、アーキテクチャ的に動作周波数を上げやすい。オーバークロック耐性にも関係する可能性がある。

GPUクロックは1GHzを越せるとしている

 倍精度演算などは命令発行に16サイクルかかるため、Graphics Core Nextでは単精度と倍精度のピークパフォーマンス比率は1対4となっている。925MHz動作なら947GFLOPSの倍精度性能となる。ここはトレードオフで、HPC(High Performance Computing)を重視するNVIDIAは、ダイ効率のトレードオフを払っても、単精度と倍精度の比率を1対2にしたが、AMDは1対4に抑えた。

 スカラユニットは浮動小数点演算機能は持っておらず、整数演算ユニットだ。専用のスカラレジスタを備える。

●バスとメモリアーキテクチャを根本的に改革

 AMDはTahitiのGraphics Core Nextでは、メモリ階層とバスアーキテクチャも抜本から改革した。従来のAMD GPUのバスは、リードオンリーの上りのパスと、ライトオンリーの下りのパスに分離されていた。しかし、Tahitiでは、メインのバスはリード&ライトの双方向となり、キャッシュもリード&ライトのCPU型のキャッシュとなった。また、L2でCU間と、GPUとCPU間のキャッシュコヒーレンシもハードウェアで取る。

メモリ階層とバスアーキテクチャの革新
PDF版はこちら

 バスとメモリ階層の改革に連動してROPユニットとメモリクラスタの構成も変わった。これまで、ROPはメモリコントローラのクラスタに密接に接続されていた。しかし、Graphics Core Nextでは、ROPはL2キャッシュにアクセスし、ROP内部のキャッシュは従来より縮小された。また、Tahitiでは、メモリコントローラは6クラスタであるのに対して、ROPは8クラスタで1対1または1対2対応しない。メモリコントローラクラスタとROPの間もクロスバで接続されていると見られる。

 もちろん、その背後には、ROPの実装でのAMDの開発チームの苦闘も見える。AMDは伝統的にNVIDIAよりもピクセル打ち込み能力重視で、ROPも充実させる傾向が強い。Caymanでは1メモリコントローラクラスタに対して2 ROPクラスタというリッチな構成にした。しかし、Tahitiでその構成を取るとROPクラスタが12個になってしまい、オーバーキルだ。

 電力面では、パワーゲーティングによるシャットダウンをサポートしたことで、Tahitiでは待機時電力を大幅に引き下げることが可能となった。例えば、CrossFire構成で4枚差しをした場合、使っていない時は3枚のグラフィックスカードをパワーゲートして電力を落として置くことができる。もちろん、GPUのコンテクストは重いため、粒度の大きなアイドル時に限られる。また、CUなどユニット単位のパワーゲーティングはサポートされていない。

アイドル時の消費電力を大幅に引き下げることに成功

●効率を大幅にアップさせたGraphics Core Next

 Graphics Core Nextの最初の実装であるTahitiは、おそらく汎用コンピューティングではAMDにとって、かつてないパフォーマンスジャンプになるだろう。単純にCaymanと比較すると、トランジスタ数は2.64BのCaymanに対して4.31Bと60%増しなのに、演算ユニットは1,536ユニットから2,045ユニットへと33%しか増えていない。ダイ効率的には、生パフォーマンスの伸びが悪いように見える。

 しかし、アーキテクチャをSIMD-VLIWから、シンプルなSIMDへと変更したことで、汎用コンピューティングでの実効パフォーマンスは大きく伸びると考えられる。命令制御も、より自由度が増したため、効率性では、従来アーキテクチャとは全く別モノになった可能性が高い。

 しかし、Tahitiにも課題がある。まず、Tahitiは新マイクロアーキテクチャであるため、リアルタイムコンパイラであるドライバが完全に一新される。VLIWの複雑性がなくなったことでコンパイラの負担が減るとしても、コンパイラの熟成には時間がかかるだろう。また、電力制御は、パワーゲーティングを実装したと言っても、まだCUやクラスタ単位のゲーティングはできない。CPUやモバイルGPUと比べると、この部分は、まだ大きく立ち後れている。

 とはいえ、これでAMDは、同社が掲げるヘテロジニアスコンピューティングのビジョンに見合うGPUアーキテクチャを手に入れたことになる。次のステップは、Graphics Core NextをCPUコアと統合したAPU(Accelerated Processing Unit)の実現となる。次回の記事では、Graphics Core Nextの、より突っ込んだアーキテクチャの詳細をレポートしたい。