連載
西川善司連載 / 「AMD Radeon HD 6800」徹底分析。HD 5800から何が変わったのか?
2010年10月22日,AMDはDirectX 11対応GPUの第2世代モデルとして,Radeon HD 6000シリーズを発表した。
第1弾として市場投入されたのは,「Radeon HD 6870」(以下,HD 6870)と「Radeon HD 6850」(以下,HD 6850)の2モデル。製品概要やベンチマークテスト結果はすでに掲載済みだが,今回は,現地時間19日に台湾で開催されたAMD主催のイベント「Technical Forum & Exhibition 2010」(TFE 2010)における事前技術説明会「Northern Islands Architecture Deep Dive」の内容を中心に,これら新GPUシリーズのアーキテクチャについて,もう少し詳しく見ていくことにする。
TFE 2010で,Radeon HD 6800シリーズのアーキテクチャ解説が行われた(左)。右はHD 6870リファレンスカードを持つAMDのEric Demers氏(Chief Technology Officer for Graphics, AMD)
結論からいうと,開発コードネーム「Barts」(バーツ)と呼ばれていた今回のHD 6870とHD 6850は,先代となるATI Radeon HD 5800シリーズのリファイン版であり,マイナーチェンジモデルだ。
この後,AMDからは,同「Cayman」(ケイマン)こと「Radeon HD 6970」「Radeon HD 6950」のリリースも控えているが,関係者から事前に漏れてくる情報だと,Radeon HD 6000シリーズ世代の性能面における本命はこちらで,大きなアーキテクチャ変更が施されたうえで,11月下旬に正式発表される見込みという。
開発コードネーム「Northern Islands」(ノーザンアイランズ)と呼ばれていたRadeon HD 6000シリーズとその上位モデルにおける,開発コードネームと立ち位置の関係を示したスライド。ちなみにNorthern Islandsの開発コードネームは,いずれもカリブ海の島々から採られている
AMDは,ATI Radeon HD 4000シリーズで,それまでのGPU業界では慣習となっていた「まずウルトラハイエンドから」という市場投入順をあらため,ミドルクラス〜ハイクラスのGPUを先行開発し,それを「Performance」(パフォーマンス)クラスと定義して当該世代の第1弾製品にするという「スイートスポット戦略」を採用。今回のRadeon HD 6000シリーズにおいても,この戦略を引き続いて展開してきている。
ただ,ATI Radeon HD 5000シリーズとは若干異なる部分も見られる。
というのも,下の図を見てもらうと分かるように,Radeon HD 6800シリーズは,ATI Radeon HD 5800シリーズと同等の性能か,若干下回るというものになっているのだ。
この点について,AMDでグラフィックス製品ビジネスを統括するMatt Skynner(マット・スキナー)副社長は,「“800番台”は,ATI Radeon HD 3800〜4800と続けて,200ドル程度の製品をターゲットにしてきた。ATI Radeon HD 5800だけが高い価格設定となっていたので,今回は価格との関係性に即したモデルナンバーに戻した」と説明していたが,AMDとしては,絶対的な3D性能よりも,価格対性能比のよりよいバランスをさらに追求した存在として,Radeon HD 6800シリーズを投入してきた,というわけである。
なお,開発コードネーム「Antilles」(アンティレス)こと「Radeon HD 6990」は,スイートスポット戦略採用後の慣わしに従って,CaymanコアのデュアルGPUソリューションとなる見込みだ。
HD 6870はATI Radeon HD 5870比で,そしてHD 6850はATI Radeon HD 5850と比べて,それぞれピーク性能が若干低いとされたスライド。実際のテスト結果もこのスライドの内容とほぼ同じだった
というわけでまずは,既報の内容も含みつつ,HD 6870とHD 6850の基本スペックを再確認することにしよう。
先ほど「マイナーチェンジ」と述べたが,実際のところ,HD 6870&HD 6850の基本アーキテクチャはATI Radeon HD 5870&5850とそれほど変わっていない。製造プロセスルールも40nmのままだ。
スペック上で大きく変わったのは汎用シェーダユニットである「Stream Processing Unit」(「Stream Processor」ともいう。以下 SP)の数で,HD 6870は1120基,HD 6850では960基となっている。「ATI Radeon HD 5870」(以下,HD 5870)や「ATI Radeon HD 5850」(以下,HD 5850)では順に1600基,1440基だったので,かなりの削減幅といえる。
一般に,後継製品で演算ユニットの数が減った場合,その分だけ動作クロックが引き上げられるのが常だが,HD 6870&HD 6850もご多分に漏れず。ただ,コアクロックで比較すると,HD 6870がHD 5870の850MHzより50MHz高い900MHz,HD 6850がHD 5850の725MHzに対して775MHzと,上昇率はわずか5%程度に過ぎない。SP数が40〜50%程度削減されたことを考えると,動作クロックの引き上げ幅はかなり小さいのである。
机上の性能値ではどうか。
HD 5870とHD 5850の演算性能は順に2.72TFLOPS,2.09TFLOPSとなっていたが,これをRadeon HD 6800シリーズに当てはめてみると,
- HD 6870:1120SP×2FLOPS×900MHz=2.02TFLOPS
- HD 6850:960SP×2FLOPS×775MHz=1.49TFLOPS
となり,FLOPS値でもATI Radeon HD 5800シリーズには及ばない(※ATI Radeon HD 5800シリーズ,Radeon HD 6800シリーズはいずれも,1基のSPが1クロックでFP32積和演算が可能。積和演算は2命令換算できるので,2FLOPSということになる)。
ただ,登場時点における北米市場のメーカー想定価格帯は,ATI Radeon HD 5800シリーズが299〜399ドルだったのに対し,Radeon HD 6800シリーズは150〜250ドル。そう,FLOPSあたりの単価は,Radeon HD 6800シリーズで大きく引き下げられているのだ。
絶対性能を重視するユーザーにとっての興味がRadeon HD 6900シリーズに向いてしまうのは覚悟のうえで,コストパフォーマンスを重視する層に向けた製品としてきたのが,Radeon HD 6800シリーズということになるだろう。
SP数が減っていることから想像できるとおり,Radeon HD 6800シリーズのトランジスタ数は17億で,ATI Radeon HD 5800シリーズの21億5000万からかなり削減されている。同じ40nmというプロセス世代に据え置かれていることも手伝って,ダイサイズも前世代の334mm2から255mm2へと,25%も小型化した。
また,グラフィックスカードとしての公称最大消費電力は,
- HD 6870:151W
- HD 6850:127W
- HD 5870:188W
- HD 5850:151W
なので,HD 6870は,前世代の下位モデルと同程度にまで下がったことになる。HD 5870&HD 5850は6ピンのPCI Express補助電源コネクタを2系統持っていたのに対し,Radeon HD 6800シリーズでその仕様を引き継いだのはHD 6870だけで,HD 6850は6ピン1系統になっているのも,ダイサイズの小型化と,それに伴う公称最大消費電力の低下を端的に示しているといえるだろう。
ちなみにアイドル時の公称消費電力は,ATI Radeon HD 5800シリーズが27Wなのに対し,Radeon HD 6800シリーズは19Wで,こちらも低減が見られる。
ところで,近年のAMDは面積あたりの性能,具体的にはFLOPS値と,消費電力あたりの性能を重んじる傾向にあるが,実際に計算してみると,以下のような値になった。
- HD 6870:7.92MFLOPS/mm2,13.38MFLOPS/W
- HD 6850:5.84MFLOPS/mm2,11.73MFLOPS/W
- HD 5870:8.14MFLOPS/mm2,14.47MFLOPS/W
- HD 5850:6.26MFLOPS/mm2,13.84MFLOPS/W
そう,前世代よりも低くなっているのだ。
ただ,先ほど述べたとおり,販売価格は前世代よりも相当に低くなるため,発表時点のメーカー想定売価を基準とした1ドルあたりのFLOPS――1円あたりのFLOPS,でもいいが――は,下記のとおりATI Radeon HD 5800シリーズを大きく上回る。AMDによる様々なセールストークは差し置くとして,「とにかく価格対性能比を重視したGPUシリーズ」であることだけは間違いない。
- HD 6870(239ドル):8.45MFLOPS/$
- HD 6850(179ドル):8.32MFLOPS/$
- HD 5870(399ドル):6.82MFLOPS/$
- HD 5850(299ドル):6.99MFLOPS/$
続いて,ブロックダイアグラムを見ていくことにしよう。
下に示したのが,Radeon HD 6870のブロックダイアグラムだ。
HD 6870のブロックダイアグラム
こちらはHD 5870のブロックダイアグラム。筆者連載のバックナンバー「『ATI Radeon HD 5800」徹底分析』」より再掲
基本アーキテクチャが変わっていないと前述したが,実際にパッと見で,両者に大きな違いは見て取れない。
細かな間違い探しをすれば,「Ultra-Threaded Dispatch Processor」(ウルトラスレッド・ディスパッチプロセッサ,以下 UTDP)のブロックが,HD 5870だと単一だったのに対し,HD 6870では2つに分かれているのに気づく人も多いだろう。
しかしこれ,実のところは図の描き方が異なっているだけで,HD 5870でもUTDP部は“デュアル化”されていた。つまり何も変わっていないわけだ。ついでに言えば,HD 6870とHD 5870では,「Shader Export」(シェーダエクスポート)もUTDP同様デュアル化されている。
本連載のバックナンバー「『ATI Radeon HD 5800」徹底分析』」で筆者は,ATI Radeon HD 5800シリーズについて,「ATI Radeon HD 4870相当の800SPを2セットで構成して,DirectX 11対応を追加したような設計」といった感じの説明を行った。そのときは「Rasterizer」(ラスタライザ)や「Hierarchical Z-Buffer」(ハイエラキカルZバッファ,階層型Zバッファ)のデュアル化について紹介したが,実際のところ,HD 5870ではUTDPからShader Exportまで,一貫したデュアル化がなされており,それがHD 6870でも踏襲されているというわけだ。
ちなみに,UTDPの先にあるSPの階層構造自体も,従来製品から変わっていない。
具体的には,ATI Radeon HD 2000シリーズで始まった,「標準仕様のFP32スカラ演算器のSPが4基。指数・対数・三角関数などといった複雑な超越関数(Transcendental Function)計算能力を持ったスペシャルなSPが1基」という,“4+1”のSP構成が,である。4+1構成のSPに,分岐ユニット(Branch Unit),汎用レジスタ(General Purpose Register)群を組み合わせた単位を,AMDはRadeon HD 6800シリーズにおいても「Thread Processor」(スレッドプロセッサ,以下 TP)と呼んでいる。
Radeon HD 6800シリーズにおけるThread Processorのブロックダイアグラム
このTPが16基集まって「SIMD Engine」(SIMDエンジン)を構成するところも従来どおり。違いが生じているのは,SP数の削減に伴って,SIMD Engineの数も減っているところだ。ATI Radeon HD 5800シリーズのフルスペックとなるHD 5870だと10基×2=20基あり,HD 5850では9基×2=18基。これがHD 6870では7基×2=14基,HD 6850では6基×2=12基となった。
SIMD Engineごとに1基ずつ「Texture Unit」(テクスチャユニット,以下カタカナ表記)を搭載するのも前世代と同じ。SIMD Engineの数はHD 6870で14基,HD 6850で12基なので,テクスチャユニットの数も順に14基,12基となっている。
一部の資料でTexture Unitの数が順に56基,48基と記されているのは“数字のマジック”で,「Radeon HDファミリーのテクスチャユニットは,クロックあたりの処理能力がバイリニアフィルタ・テクセル4つ分」ということから,NVIDIAのカウント方式に合わせた結果である。
そろそろ「同じ」「変わっていない」と書くのもクドくなってきたが,NVIDIAが「Rendering Output Pipeline」の略だとするROPユニットの仕様も,基本的にはATI Radeon HD 5800シリーズと同じ。ブロックダイアグラム上だと,1基のL2キャッシュ(容量128kB)を2基のROPユニットで共有する構造になっている。先ほど,Shader Exportがデュアル化されていると述べたが,L2キャッシュを挟んでペアになっているROPユニットは,2つ用意されたShader Exportに1基ずつ割り当てられ,接続されているイメージだ。
旧ATI TechnologiesはROPユニットを「Render Back-End」(レンダーバックエンド)と呼んでいたが,AMDによる買収後はROPユニットと書かれることが多くなってきた。Radeon HD 6870の資料でもたいていはROP表記である
ブロックダイアグラム上だと,ROPユニットの総数は8基だが,テクスチャユニットと同様に,スペック表記上は32基。Radeon HDファミリーでROPユニットは1クロックあたり2×2の4ピクセル(≒4テクセル)出力が可能なため,4ピクセル×8基=32ピクセルで「32基相当」というわけである。これも競合のスペック表記に向けた対策の一環と言っていいだろう。
ちなみに,従来製品や競合製品と同様に,Z値出力とステンシル処理のみに限定すれば,各ROPユニットは1クロックあたり4倍のスループットが実現されるため,トータル128ピクセルの処理が可能となる。
ブロックダイアグラム上で最下段近くにあるメモリコントローラは1基あたり64bit幅で,32bit幅のメモリチップ2枚と接続される構成。ブロックダイアグラム上の表記は,HD 5870の「Memory Controller」から,HD 6870で「64-bit Dual Channel Memory Controller」に変わっているものの,メモリインタフェースとして64bit幅×4基で256bit幅仕様という点や,GDDR5メモリが採用されている点は,ATI Radeon HD 5800シリーズと完全に同じだ。
なお,リファレンスデザインにおけるメモリ容量はいずれも1GB。メモリの動作クロックはHD 6870が4.2GHz相当(実クロック1.05GHz),HD 6850が4GHz相当(実クロック1GHz)が設定されている。
要するに,ブロックダイアグラム上,大きな違いはSPの数ということになる。
AMDいわく,今回のRadeon HD 6800シリーズにおいて,アーキテクチャ的に大きく変わったのは,テッセレーションステージ周りとのこと。
具体的には,Radeon HD 6800シリーズで搭載されるテッセレーションステージでは,スレッド管理が見直されており,「TPがハルシェーダやドメインシェーダとして起用されることが見込まれる場合は,それ専用のスレッド管理に移行する」よう改善されているという。
Radeon HDファミリーで,「Tessellator」(テッセレータ,以下カタカナ表記)は,SIMD Engineの外に単一ユニットとして実装されているが,Radeon HD 6800シリーズでは,
- ハルシェーダとして起用されたTPからテッセレータへ
- テッセレータからドメインシェーダとして起用されたTPへ
のデータの伝達効率がいずれも2倍に高められている。また,テッセレータ(≒テッセレーションユニット)自体も,入力側と出力側のバッファ容量が2倍に増えている。これにより,AMDが行った負荷テストでは,ATI Radeon HD 5800シリーズのテッセレーションステージと比較して,実効効率が2倍に高まったとのことだ。
本来なら,NVIDIAのように,テッセレータをSIMD Engineに組み込むのが理想形だとは思うが,それをやると大幅なアーキテクチャ変更が必要になるため,今回は(今回も)避けたということなのだろう。「Radeon HDファミリーのテッセレータ実装形態では,この方法以外にテッセレーションステージのパフォーマンス改善手段はなかった」と言えなくもない。
Radeon HD 6800から提供されるMorphological Anti-Aliasingの概要
Morphological Anti-Aliasingの動作概念図(Alexander Reshetov氏のWebサイトより転載)
Radeon HD 6800シリーズでは,新しいアンチエイリアシング手法である「Morphological Anti-Aliasing」(モーフォロジカル・アンチエイリアシング,以下 MLAA)の機能が提供されるのもトピックだ。
もっともこれは実際のところ,Radeon HD 6800シリーズで新設されたハードウェア機能というわけではなく,DirectCoputer経由(=Compute Shader経由)での実装。ドライバの制御ソフトウェア「Catalyst Control Center」のRadeon HD 6870&6850専用機能として提供されている機能である。
MLAAでは,レンダリング済みのフレームを,DirectComputeで実装されたMLAAエンジンに通すことで機能が実現される。アルゴリズム解説は考案者であるIntel ResearchのAlexander Reshetov氏によるWebサイトや,実際にGPUで本アルゴリズムの実装を試みたWebサイトを参照してほしいと思うが,本稿でも簡単に解説しておこう。
MLAAは,画像処理的アプローチで明暗差を検出し,「明暗差の出方」のパターンに応じた適応型のアンチエイリアシング処理を行う。明暗差(すなわちジャギー)がL字形に生じていたら,これが「∖」状になるよう,色(≒階調)補間を行うイメージだ。
DirectComputeでの実装なので,ATI Radeon HD 5000でも実現可能だと思う人が多いと思うが,マーケティング戦略上の理由で,Radeon HD 6800シリーズ専用機能となる。
というわけで,MLAAはソフトウェアベースの機能ということになるが,Radeon HD 6000シリーズでは,ハードウェア的に改善されたポイントがある。
その1つが,テクスチャフィルタリング手法の1つ,異方性フィルタリング(Anisotropic Filtering)のアルゴリズム改善だ。
「異方性フィルタリングとは何か」については,本連載のバックナンバー「『テクスチャの異方性フィルタリング』ってなに?」後編をチェックしてもらえればと思うが,簡単にいえば,「テクスチャを貼り付けるポリゴンと視線との角度関係まで配慮したテクスチャリングを行うもの」である。
ポリゴンに対して視線の角度がきつくなる(=小さくなる),かすめ見るような角度だと,奥行き方向に存在するたくさんのテクセルが,1つのピクセルに集約――「圧縮」と言ってもいい?――されつつ適用されることになる。奥行き方向に対して,たくさんの地点へのテクセル参照を行うことになるわけだ。
このときテクスチャユニットは通常,MIP-MAP(ミップマップ)レベルを変えてテクスチャ参照を行う。MIP-MAPの詳細は,やはり連載バックナンバーから,「『テクスチャの異方性フィルタリング』ってなに?」前編を参照してほしいが,Radeon HD 6000シリーズでは,異方性フィルタリング処理にあたって,「視線とポリゴンの織りなす角度ごとの場合分け処理」を,よりきめ細やかに行い,さらに,より深いMIP-MAPレベルへのテクスチャ参照を行うよう改善されたのだ。
奥行き方向に伸びる丸いトンネルに対し,チェッカー模様のテクスチャを適用したショット。左のATI Radeon HD 5000シリーズだと,一定距離より奥でグレーに収束してしまっているのに対し,右のRadeon HD 6000シリーズだと,より奥のほうまでチェッカー模様らしきものが見える点に注目してほしい。これが,今回のアルゴリズム改善効果だ
「異方性フィルタリング処理の手抜き廃絶宣言」で話題を集めたATI Radeon HD 5000シリーズと映像を比較して,パッと見での違いを体感するのは難しいかもしれないが,「遠方のテクスチャリングを注意深く観察すると,明確な解像感の違いが実感できるようになった」とAMDは主張している。なお,この機能を活用することによるパフォーマンス低下はないという。
もう2つ,Radeon HD 6800シリーズではハードウェア面での強化点がある。それはUnified Video Decoder(以下,UVD)が第3世代にバージョンアップしたこと,そして出力系がDisplayPort 1.2仕様やHDMI 1.4a仕様に対応したことだ。
「UVD 3」と呼ばれる第3世代UVDの強化点としては,MPEG-4 Multiview Video Coding(MVC)フルデコード機能の追加,CPU負荷ほぼゼロのMPEG-2デコード機能,DivXやXvidといった“亜流系”MPEG-4コーデックのデコード対応などが挙げられている。
なかでも注目は,UVD 3がH.264のデュアルデコーディングパイプラインを有したことだろう。これにより,Radeon HD 6800シリーズでは,CPU負荷ほぼゼロでBlu-ray 3Dのデコードが可能になる。
次にDisplayPortだが,これはAMDがかねてより強力に推進していた出力端子。今回の1.2仕様へのアップデートにより,数珠つなぎ接続や,「MST」(Multi Stream Transport)と呼ばれる“DisplayPortハブ”経由の分配接続などが可能となっている。
NVIDIAに対して立体視対応で遅れをとっていた点では,HDMI 1.4a規格の立体視フォーマットに対応することで,市販の3D立体視対応テレビへの接続性を確保。ひとまずの「立体視対応」としてきた。
以上,今回発表されたHD 6870とHD 6850は,ATI Radeon HD 5800シリーズをベースに,価格対性能比追求を行ったマイナーチェンジ版であり,これから登場するCaymanコアのRadeon HD 6900シリーズとの性能バランスを取るため,意図的に性能を抑え込んだラインナップとなっている。
AMDが提唱する新しいスイートスポット戦略(における中上位製品のラインナップ)は,Radeon HD 6900シリーズが発表されて初めて完成形となり,俯瞰的には,価格帯ごとに細分化して製品をラインナップさせたようにも見える。しかし,ATI Radeon HD 5000シリーズ世代のスイートスポット戦略とは明らかに違うことも見て取れよう。
性能面での本命となるRadeon HD 6900シリーズは,明らかにNVIDIAのウルトラハイエンドモデル,すなわち「GeForce GTX 480」や,その後継と目される「GF110」(開発コードネーム)を意識したものだからだ。
ATI Radeon HD 4000〜5000世代でAMDは,ミドル〜ハイクラスのGPUをデュアル構成にしたものをウルトラハイエンドモデルとしてきたが,ことDirectX 11世代のアプリケーションを前にしたときの性能では,この戦法が通じなくなりつつあることが,AMDにスイートスポット戦略の転換を決意させたのだろう。
AMDのスイートスポット戦略第2段階は,むしろ,ATI対NVIDIAの激戦時代――昔のウルトラハイエンド戦争時代へ少なからず揺り戻しが起こったように見えるのだ。
その意味でも,第4四半期中の登場が期待目されるRadeon HD 6900シリーズには,注目しておきたいところである。
- 関連タイトル:
Radeon HD 6800
- この記事のURL:
(C)2010 Advanced Micro Devices, Inc.