連載
西川善司連載 / “ビッグマイナーチェンジ”で飛躍する「ATI Radeon HD 4800」(前)
「ATI Radeon HD 4800」シリーズの発表は2008年6月のこと。すでに4Gamerではレビュー記事も掲載済みなので,いきなり結論めいたことから述べてしまえば,GPGPU(General Purpose GPU:汎用GPU)市場を見据えながらワンビッグチップを復活させたNVIDIAに対して,AMDは消費電力当たりの性能,英語でいうところの「Performance-per-watt」(1W当たりの性能)にフォーカスした,「ATI Radeon HD 3800」シリーズの順当な進化形を示してきている。
今回は,このATI Radeon HD 4800(以下,HD 4800)シリーズのアーキテクチャについて,じっくりと見ていくことにしよう。
まずは,AMDがとってきた最近のGPU戦略を簡単におさらいしてみたい。
HD 4800シリーズはコードネーム「RV770」として開発されてきたGPUで,DirectX 10.1のプログラマブルシェーダ4.1(Shader Model 4.1,以下SM4.1)対応製品としては,AMDにとって早くも第2世代となる。「RV」コードネームは,旧ATI Technologies(以下,ATI)時代だと,ミドルクラス以下のGPUに与えられるものだったが,開発コードネーム「RV670」のATI Radeon HD 3800(以下,HD 3800)以降は,ミドルクラス〜ハイエンド,AMDのいう「Performance」レンジの単体GPUに用いられるコードネームとなった。今回のRV770=HD 4800もそのパターンを踏襲した格好となっている。
AMDはHD 3800で,「GPUのダイサイズを極端には大きくせず,消費電力もある程度の高さに抑えることで,『消費電力当たりの性能』『平方mm当たりの性能』を重視した設計で行く」ことを明確に打ち出した。これは「一番売れるPerformanceレンジで高性能」という考え方が原動力となっている。
搭載カードの価格が5万円を超えるような,ウルトラハイエンドの単体GPUは,GPUメーカーの「パフォーマンスリーダー的イメージ」を引き上げるには役立つが,実際には「Enthusiast」と呼ばれる一部のコアユーザーに売れるだけで実入りが少ない。さらに,最新世代のウルトラハイエンドGPUで採用された技術が,最も売れるミドルクラス〜ハイエンド,具体的には2万円〜4万円程度の市場に降りてくるのには時間がかかってしまう。ハイエンド以下のユーザーにとっては,“お古”を使わされる気分だ。
ウルトラハイエンドからハイエンド,ミドルクラス,エントリーへ……というトップダウン式(上)ではなく,ミドルクラス〜ハイエンドGPUをベースとして,ウルトラハイエンドとエントリーをカバーしよう(下)というのがAMDの戦略
一方,最新技術を盛り込んだGPUをミドルクラス〜ハイエンドの価格で見合うように構成して市場へ提供すれば,(そのタイミングではまだ最新世代へ移行できていない)競合の同クラス製品よりも性能面で優れ,よく売れることになる。また,エントリークラスへ“降ろす”のも,ウルトラハイエンドから行うよりはスピーディにできる。
この戦略では,先進性のアピールと,ウルトラハイエンドユーザーをどう掴むかが課題になるが,「マルチGPU(≒ATI CrossFireX)で対処する」というのが,AMDとしての回答になる。
実のところ,NVIDIAもGeForce 9世代では,AMDとまったく同じアプローチを採っていた。しかし,連載バックナンバー「ワンビッグGPUの夢よ,再び!?」で説明したとおり,「GT200」コアを採用した「GeForce GTX 200」シリーズで同社は,ワンビッグチップ戦略を復活させている。これは,GT200コアを「Tesla」ブランドでGPGPU市場に高く売れると見込んでいるから。NVIDIAはハイエンドGPUではなく,高性能な並列コンピューティング用プロセッサを作って,その一部をハイエンドGPUとして販売するという考え方なのだ。
なお余談だが,AMDも「FireStream」というGPGPU製品は持っている。しかし,プラットフォームとしての認知がまだまだ進んでいないため,NVIDIAと同じ戦略はとれないという事情を抱えている。
すでにお知らせしているとおりではあるが,本連載でも基本スペックに触れておこう。
HD 4800シリーズはTSMCの55nmプロセスで製造されている。これはHD 3800シリーズと同じだ。GeForce GTX 200シリーズは巨大チップということもあり,製造面での信頼性重視で65nmプロセスを選択したため,プロセス世代としてはHD 4800シリーズのほうがGeForce GTX 200よりも半歩進んでいることになる(※55nmプロセスは65nmプロセスの改良型。次のビッグステップは45nm)。
トランジスタ数は9億5600万。ダイサイズは約16mm×16mmの256mm2と発表されている。競合のGeForce GTX 200シリーズが同14億トランジスタ,24mm×24mmの576mm2なので,HD 4800シリーズはGeForce GTX 200シリーズと比べて,トランジスタ数で約3分の2,ダイサイズで半分以下ということになる。
2008年7月時点のラインナップは下位のATI Radeon HD 4850(以下,HD 4850)と上位のATI Radeon HD 4870(以下,HD 4870)で計2モデル。両者の違いはコア動作クロックとメモリタイプだ。ATI Radeon HDシリーズは,モデルナンバーの“十の位”が7だと旧ATI時代の「XT」型番相当,5だと同「Pro」相当とされているが,今回もこのルールに則った製品名になっている。
いま「両者の違いはコア動作クロックとメモリタイプ」と述べたが,HD 3800シリーズから引き続き,「Stream Processing Unit」と呼ばれるシェーダプロセッサ(以下,SP)の数はいずれも800基だ。似たような製品型番でも,モデルが異なるとシェーダプロセッサ数も異なることの多いGeForceファミリーとは明らかに違ったラインナップ方針であり,この点は興味深い。
コアクロックはHD 4850が625MHz,HD 4870が750MHz。HD 3800シリーズだと,「ATI Radeon HD 3850」が670MHz,「ATI Radeon HD 3870」が775MHzだったので,若干引き下げられているが,SP数はHD 3800の320基から800基へと2.5倍に増加しているため,総合的なスペックではHD 4800シリーズのほうが圧倒的に高い。
グラフィックスメモリ容量は,リファレンスだとHD 4850,HD 4870とも512MBで,グラフィックスメモリバスも256bitで共通だが,採用されるメモリチップのタイプが異なる。上位のHD 4870が,世界で初めてGDDR5 SDRAMを採用したのがホットトピックだ。
なお,HD 4870に採用されるGDDR5 SDRAMの動作クロックは3.6GHz相当(実クロック900MHz)と,かなり広帯域なものになる。HD 4850は,ミドルクラス以上のグラフィックスカードで広く用いられているGDDR3で,動作クロックは2GHz相当(実クロック1GHz)である。
NVIDIAに先駆けてAMDがGDDR5の採用に踏み切ったのは,電子デバイスの仕様標準化団体「JEDEC」(Joint Electron Device Engineering Council)のDRAMセクションでAMDのJoe Macri氏がチェアマンを務めていることと無関係ではないだろう。最先端メモリを率先して使う立場にあるため,ここだけはやや“欲張った”感がある。思い返せば,GDDR4を世界で初めて採用したのは,ATI時代のRadeon X1950シリーズだった。
グラフィックスメモリバスは256bitと述べたが,HD 3800シリーズがRing Busメモリアーキテクチャを採用していたのに対し,HD 4800シリーズではクロスバータイプとなっている。AMDはその理由をはっきりとは述べていないため,筆者の推測になるが,一つは「GDDR5の採用で広帯域幅を見込めるから256bitインタフェースで十分」と考えた可能性がある。もう一つ,HD 4800シリーズはダイサイズが小さすぎて,多bitのメモリインタフェースを実現するためのボンディングパッド(bonding pad,チップと外部との信号をやりとりするために必要なリード線と,チップ内部の各端子とを接続するため,チップの周辺に設けられる金属電極)用のスペースが取れなかった可能性が高い。
ちなみに512bitのクロスバーインタフェースを採用するGeForce GTX 200のダイサイズは前出のとおり。512bitのRing Busを採用していた「ATI Radeon HD 2900 XT」(以下,HD 2900 XT)は同400mm2で,256bit Ring BusのHD 3800シリーズは,SP数がHD 4800シリーズの5分の2にもかかわらず,ダイサイズは4分の3となる192mm2あった。
ワンビッグチップ否定戦略上の“マイルール”で,AMDが今後もGPUのダイサイズを200mm2台に据え置くとすると,グラフィックスメモリバス幅の大きなステップアップは,少なくとも今後しばらくはないだろう。GDDR5チップの高速化というアプローチで,メモリ性能を向上させていくと思われる。
リファレンスデザインだと,HD 4850カードは1スロット仕様で,6ピンタイプの外部電源供給1系統で動作する。最大消費電力は110Wで,演算能力は1.0TFLOPS。想定売価199ドルのカードが,消費電力236Wとなる「GeForce GTX 280」の0.933TFLOPSを上回ることになる。
HD 4870は冷却システムが大きいために2スロット仕様になり,6ピンタイプの外部電源供給を2系統必要とする。公称最大消費電力は160Wだ。GeForce GTX 280だと6ピン+8ピンなので,動作要件はHD 4870のほうが緩く,親切といえる。なお,演算能力は1.2TFLOPS。
左は想定売価基準で3DMark Vantageスコアを比較したグラフ。発表時点でAMDはHD 4850の仮想敵を「GeForce 8800 GT」,HD 4870のそれを「GeForce 9800 GTX」としつつ,右のグラフのように,「HD 4850がGeForce 9800 GTX」と互角以上に戦える」ともアピールしていた。果たしてNVIDIAは,GeForce 9800 GTXの価格を引き下げざるを得なくなっている
ウルトラハイエンドのGeForce GTX 280と,HD 4800シリーズとではターゲットが異なるため,直接的な比較に大きな意味はないが,「消費電力当たりのTFLOPS値」「価格当たりのTFLOPS値」を軸にコストパフォーマンスを見れば,HD 4800シリーズの優位性が光る。「実際はどうなのか」は,冒頭に示したレビュー記事を参照してほしい。
なお,AMDはHD 4800シリーズの投入後も,HD 3800シリーズはエントリーミドルクラスGPUとして継続して販売していくとのこと。一方,ウルトラハイエンドモデルとしては,2基のHD 4870シリーズを1枚のカード上に実装した「R700」(開発コードネーム)の登場も予告されている。
それではコアアーキテクチャに切り込んでいくとしよう。
まずは「Terascale Graphics Engine」(テラスケールグラフィックスエンジン)と命名されたシェーダコア部分から見ていくことにするが,HD 4800シリーズ(RV770)のシェーダコアは新規設計となり,その設計はAMDの4か国6拠点で行われたという。
とはいえ,根幹となるベースアーキテクチャはHD 3800シリーズ(RV670),もっといえばHD 2900 XT(R600)から変わっていない。
- テクスチャユニットの最適化
- メモリアーキテクチャの改良
- レンダーバックエンドのアンチエイリアシング処理高速化
- ジオメトリシェーダとテッセレータの性能強化
といったところが,既存のGPUコアに対する,RV770の主な変更点だ。
ところでHD 4800シリーズのスペックを見ると,なんといっても800基というSP数が目を引くわけだが,これはHD 2900 XTから受け継がれる「階層的クラスタ構造」をなしている。
HD 4800シリーズにおいて,1基1基のSPは浮動小数点スカラプロセッサ。SP5基を1組として,さらに5基のSPで共有して使用することになる分岐ユニットを合わせたものを「SIMD Unit」(SIMD:Single Instruction Multiple Data)とされている。さらにSIMD Unit16基を一組として構成されるのが「SIMD Core」で,
- 5SP×16組=80SP(1SIMDコア)
という構成になる。HD 2900 XTの時代には,SIMD Unitが「SIMD」,SIMDコアは「SIMD Array」(SIMDアレイ)と呼ばれていたので,呼び名は微妙に変わっているが,仕様そのものはまったく同じだ。HD 4800シリーズでは,このSIMDコアを10組集めて
- 80SP(1SIMDコア)×10組=800SP
という図式になる。HD 2900 XTやHD 3800シリーズでは「80SP×4組=320SP」だった。
なお,北米版のプレゼンテーションでは,SIMD Unitが16SPで構成され,計1600SPあるように見えるブロックダイアグラムが存在していたが――単なるうっかりミスなのか,次世代GPUなりなんなりのものを誤引用したのかは不明――HD 4800シリーズのブロックダイアグラムとしては,下に示したものが正解だ。
さて,このブロックダイアグラムで最上部にあるのが「Command Processor」(コマンドプロセッサ)。これは文字どおり,PCI Expressリンクを通じてドライバソフトウェアから送られてきたコマンドを処理するプロセッサだ。
Command Processorの下にある「Setup Engine」(セットアップエンジン)は,後段フェーズにおいてSPが頂点/ジオメトリ/ピクセルいずれかのシェーダユニットとして起用されて,実際に仕事に従事するとき必要なデータを揃えてやるのが役割。Setup Engineの次に用意される「Ultra-Threaded Dispatch Processor」(ウルトラスレッド・ディスパッチプロセッサ)は,SPを遊ばせることなく“こき使う”ために,どのSPをどのシェーダユニットとして起用するかを制御するものだ。
このあたりはHD 2900 XTから変わっていないので,詳細は連載バックナンバー「ATI Radeon HD 2000シリーズのGPUアーキテクチャ徹底解説」を参照してほしい。
一つのSIMD Unitは1基が32bitの浮動小数点スカラ演算器であるSP×5を一まとめにしたものと先ほど述べたが,実は5基のうち,4基には32bit浮動小数点演算,整数計算,論理演算,比較演算といった機能が与えられ,残る1基にはこれら基本機能に加え,指数,対数,三角関数などといった複雑な超越関数(Transcendental Function)計算能力も与えられている。ちなみに,この“4SP+1ビッグSP”の構成はHD 2900 XTから受け継がれているアーキテクチャだ。
ただし,HD 4000シリーズにおけるアーキテクチャリファインに際しては,従来だと“ビッグSP”にしか与えられていなかったビットシフト命令(※2進数論理計算の一種)の処理機能が与えられたという。
3D処理にはまず用いられないビットシフト命令が“ビッグSP”以外にももたらされた背景について,AMDは「動画のデコード処理やエンコード処理,暗号生成,暗号解読などをGPUで行うGPGPU処理時に有用であるため」という説明をしている。
GPGPUの話題が飛び出したところで気になるのが,64bit倍精度浮動小数点(FP64)演算機能についてだろう。NVIDIAはGeForce GTX 200シリーズで,専用のFP64演算ユニットを各Streaming Multi-Processor(※8基のSPを中心とするひとかたまり。詳細は連載バックナンバー「ワンビッグGPUの夢よ,再び!?を参照してほしい)に新設した。HD 4800シリーズではどうなのか。
実は,ATI Radeon HDにおける倍精度演算機能は,HD 3800ですでに搭載されている。先述したように,AMDはGPGPUシステム「Firestream」を持っているが,倍精度浮動小数点演算性能を有する「Firestream 9170」は,ATI Radeon HD 3870ベースだったりする。
そして,HD 4800シリーズにおけるFP64演算周りにこれといった強化ポイントはない。HD 3800シリーズと同等だ。具体的には1SIMD Unit(=5SP)全体がFP64計算に従事する。そのため,倍精度時の演算能力は単精度時と比べて5分の1になり,演算性能1.2TFLOPS(=750MHz×800SP×積和算)を誇るHD 4870も,倍精度時には240GFLOPS(=750MHz×160SP×積和算)となる。
NVIDIAはGeForce GTX 200シリーズで初めてFP64演算に対応したが,同GPUの場合,SPで肩代わりするのではなく,「Streaming Multi-processor」(≒8SP)当たり1基ずつ,専用の倍精度対応積和算基(DFMA:Double Floating-point Mul and ADD unit)を実装している。SP数は240基なので,倍精度演算能力限定のピーク演算能力はシェーダクロック約1.3GHzのGeForce GTX 280で78GFLOPS(=1.3GHz×30SM×積和算)。HD 4870は,FP64演算能力において,単純計算でGeForce GTX 280比で3倍の能力を持つ計算になる。
ただし,一つ注意しておきたいのは,HD 4800シリーズの倍精度演算機能は「ATI Radeon HD」としては無効化(Disabled)されており,通常の環境下では利用できないことだ。別途リリースされる,HD 4800シリーズベースの新世代Firestreamでのみ有効化される予定である。
なお,GeForce GTX 200シリーズはアプリケーション側からGPUモードとGPGPUモードを必要に応じて随時切り替え可能で,GPGPUモード時は倍精度演算器を利用できるが,HD 4800シリーズにこういった明確なモード分けはなく,現時点では「FP64演算は,(ATI Radeon HDを利用するユーザーが使うような)一般的なアプリケーションでは不要」というスタンスが取られる。
まあ,このあたりはアーキテクチャの違いというよりも,「GPGPU製品ではFP64を利用できる」ことにプレミア感を出そうというマーケティング戦略的な判断によるものなので,ある日突然方針が変わり,HD 4800シリーズでFP64を利用可能になる可能性は残っているのだが。
ところで,800SPというのは圧倒的な数だが,あくまで5SPで1SIMD Unitなので,同時に実行できる命令語はSIMD Unit単位。つまりは160基(160SIMD Unit=800SP÷5)となる。そしてスレッドもSIMD Unit単位の粒度になる。
1SIMD Unit内の5SPは,任意の要素数のベクトル演算とスカラ演算の組み合わせを同時実行できるようになっているが,それは実行する計算結果に依存関係がない場合に限られる。また,5基のうちの1ビッグSPの特殊能力を活用する場合や分岐命令を伴う場合だと,1基のSIMD Unit内にある全ユニットを高効率に活用し続けるのはなかなか難しい。同時多発的に依存関係の複雑な計算をさせるのに,HD 4800シリーズのSIMD Unitアーキテクチャは適さないのだ。
そうしたケースではSP1基当たりの機能が高く,命令粒度を細かくできる分,GeForce GTX 200シリーズのほうが有利になる。
もっとも,分岐命令の登場頻度が少なく,依存関係のない複数要素ベクトル計算が大量に発生する3Dグラフィックス処理ということになると,途端にHD 4800シリーズのSIMDアーキテクチャが優位に働く。まさにこれが「GPGPU前提かどうか」という部分で,3Dグラフィックスでは,5SPが一組というSIMD Unitアーキテクチャは制約にならない。800基のSPは,かなり理想的な形で動き出すのだ。
- 関連タイトル:
ATI Radeon HD 4800
- この記事のURL:
(C)2008 Advanced Micro Devices, Inc.