2016年のCOMPUTEXで公開された"Polaris 10"(開発コード名)ことRadeon RX 480がやっと製品出荷となった。この原稿が公開される頃には、秋葉原などで深夜販売も始まっているのではないかと思うが、長らく新製品のなかったAMDだけに、待ち望んでいたユーザーも少なくないと思う。ということで、早速レビューと行きたい。

……ところなのだが、まずは最初にお詫びを。機材手配の関係で、今回は予定していた全ての構成の確認ができていない。そんなこともあり、今回はとりあえずPreview版ということで、RX 480単体での性能評価を簡単にお届けする事にする。完全版は後追いでまた公開するので、少々お待ちいただければと思う。

Polaris 10の性能と変更点

Photo01:ちなみにインタビューは5月最終日。たまたま氏が日本に来るということで、ついでにお話を聞かせてもらった。肺炎でぶっ倒れてなければ筆者も(COMPUTEX取材で)台湾に行っていたはずで、その意味では運が良かったのか悪かったのか……

Radeon RX 480の発売に先駆け、AMDは"Ask Me Anything"キャンペーンを行ったが、この回答者であるRobert Hallock氏に事前に話を伺う事が出来た(Photo01)ので、最初にまずこちらの話を紹介したいと思う。

まずPolarisのターゲットだが、これは明確に100~300ドルの市場をターゲットとしている(Photo02)。また、目指すところは「なるべく安価にVRを実現できること」(Photo03)となっている。ここに向けて投入されるのがPolaris 10とPolaris 11という2つのコアである(Photo04)。

このPolaris 10を利用したのが本日発売開始になったRadeon RX 480(Photo05)であり、さらにE3で公開されたRadeon RX 470(Photo06)と、Polaris 11を利用するRadeon RX 460(Photo07)も後追いで追加される。ただRadeon RX 460/470に関する具体的な発売時期など未公表のままである。

Photo02:グラフィックスカードに300ドル以上を支払えるのは、全体の16%程度ということで、Polarisは84%をターゲットとしたとのこと

Photo03:同社の推定では、世界に14億台以上のPCがあるうち、VRが利用できる構成は1%未満である1,300万台しかないという。その理由のうち、大きいのが「コスト」ということで、そのため価格の引き下げが必要という話だ。もっとも一番高いのはVRヘッドセットという気もしなくはない

Photo04:ちなみにPolaris 10を超えるもっと高性能なダイに関しては「ノーコメント」(Hallock氏)とのこと

Photo05:この写真で見ると、Radeon R9 280程度の大きさに見える

Photo06:ぱっと見、Radeon RX 480と大きさなどは変わらない。4CUを無効化した32 CU構成

Photo07:Polarisのローエンド。2CUを無効化した14CU構成。ということは将来、16CU構成となるRadeon RX 465とかも追加されるのだろうか?

話をRadeon RX 480に戻すと、いくつかのベンチマークデータも公開されている(Photo08,09)が、これは後で検証する事にしたい。

Photo08:仮想敵はGeForce GTX 970となっている

Photo09:Steam VRはRadeon R9 380との比較

さて内部の話である。Photo10がラフなブロック図であるが、構成そのものはGCN(Graphics Core Next)のままである。ただし第4世代ということで細かな違いがある。まずはGeometry Engine周りで、従来に比べて2~3倍高速な処理が可能になったとする(Photo11)。CUにもいくつか変更がなされており、新たにFP16/Int16のサポートが加わった。この結果として、CUあたりの性能は従来比で15%アップとなるとする(Photo12)。

Photo10:例えばRadeon R9 290X(44CU)の構成と比較すると、CU数はともかくとして大きな枠での構成そのものは同じであるとわかる

Photo11:Primitive Discardは演算処理の早いタイミングで意味の無い(例えば重ね合わせの結果見えなくなる)の頂点計算をやめることで、結果として高速化できたという話。また新しいIndex Cacheを実装して、内部のDatapathの効率化を図った

Photo12:基本的には効率改善である。FP16/Int16については、これを実装する事で効率は上がっているようだが、性能そのものは改善しない模様。このあたりはPascalのように、FP16がFP32の倍のスループットで動作するという実装ではないからだろう

Photo13:15%アップということは、従来のCUで言えば41.4CU相当になる計算で、R9 390あたり(40CU)と肩を並べることになる。といってもすべてのシーンで15%アップは難しいだろう

データ圧縮エンジンは、R9 Furyと比べても効率が良いという(Photo14)。この結果として、メモリ帯域は例えば従来のRadeon R9 290と比較するとむしろ下がっているにも関わらず、帯域の効率化により同等以上の性能が得られるとしている(Photo15)。また、これは改善というわけではないが、Tongaの世代で追加されたHWSを当然搭載しており(Photo16)、特にVRにおける非同期動作の性能改善に貢献している。

Photo14:メモリ圧縮という技法そのものは、確かRadeon HD 6800の頃に実装されていたと記憶するが、GCN世代では一旦無くなり、Radeon R9 Furyで再実装され、Radeon RX 480でさらに改善されたということであろうか

Photo15:Radeon R9 290は512bit/5Gbpsで320GB/sec、Radeon RX 480は256bit/8Gbpsで256GB/secという計算である

Photo16:2HWS/4 ACEというのはTongaと同じ構成である

こうした積み重ねで、性能は15%アップながら性能/消費電力比を2.8倍に改善したというのがRadeon RX 480というかPolarisの特徴である(Photo17)。ちなみに、Video Encoder周りもHEVCに対応した(Photo18)。この目的についてはHallock氏曰く「Twitch向け」とのこと。つまりゲームのプレイ中継とかをするのに、4K画面だとH.264ではデータ量が増えすぎてしまうので、HEVCを利用するという動きが出てきており、これに対応するためという話であった。またStreamingにおける2-pass Encodingにも対応したのも特徴である(Photo19)。

Photo17:消費電力削減の要素の1つが、メモリバスの256bit化である。速度は8Gbpsと高速化したものの、なにしろバス幅半分なので、これだけで消費電力は大分下がるのは事実だ

Photo18:HEVCでは4K60pのMain-10に対応した。このほかVP9では4Kまで、H.264では4K120pまでという具合に、全体的にエンコード性能が改善している

Photo19:オフラインではなくStreamingでこれを実現するのがポイント。ただうっかりStreamingで2passにするとどの程度のLatencyが発生するのかは聞き忘れた

話を消費電力に戻すと、2.8倍の改善をどう実現したか? というのが次の話題。もちろんGlobalFoundriesの14LPPの採用で、消費電力の低減は可能になった(Photo20)が、これがすべてではないとする。

Photo20:製造については、Samsungは使わず、全量GlobalFoundriesとのことだった。ちなみに将来のPolarisをTSMCの16FF+に持ってゆく可能性については「ノーコメント」(Hallock氏)

このあたりからは、すでにノートPC向けに発表されたBristol Ridgeと技術的に被るところが多いのだが、まずはAdaptive Clockingの採用が挙げられる(Photo21)。

Photo21:このAdaptive Clockingの採用でおおよそ25%の消費電力削減としているから、その効果はかなりのものだ

これはVddが不用意に下がるときには一時的にClockも下げることで、無駄な消費電力を削減するという仕組みである(Photo22)。またシステムブロックに複数のAVDS(適応型の電圧/周波数制御機構)を用意した(Phtoo23)。

Photo22:Vddが一時的にThresholdを下回るような場合には、自動的にClockを下げることで無駄な消費電力を減らすというもの。このために、常時Vddを監視しているわけだ

Photo23:当たり前だがある程度大きなダイになると、ダイ全体が均一の特性ではなく、あるCUは低消費電力動作が可能だが、別のCUはそうでもないといったばらつきが出る。そのため、それぞれの部分で最適になるように、複数のAVFSコントローラが用意される

もともと半導体シリコンの場合、ターゲットとなる性能/電圧曲線と実際の性能/電圧曲線の間には多少のばらつきがある。ターゲットは最大公約数というか、ある程度のばらつきを見込んだ上で安全側に振った形で設定されるが、その結果として実際はもう少し電圧が低くても同じ動作周波数を実現できるケースが少なくない。そこで、実際のシリコンの状況を見ながら、ダイナミックに電圧を削減することで効率を引き上げようというのがAVFSである(Photo24)。

Photo24:黄色の丸が、製造段階で設定されたターゲットとなる電圧/周波数曲線である。ところが実際のシリコンは、もう少し電圧が低くても同じ動作周波数で動く事が多い(破線)。そこで、実際にシリコンでの状況を確認しながら、電圧を少し下げてやる(緑色の丸)ことで効率を上げる仕組み

ばらつきがあるのはシリコンだけではなく、ボード上の電源供給回路も同じである。例えば「0.7V供給しろ」と指令を出した結果として、実際には0.7Vではなく多少マージンを見込んで0.72Vとか0.73Vが出てくるのは避けられない。そこでブートのときに電源供給状況をあらかじめテストし、それにあわせて電源指令を調整することで電圧の最適化を計るのがBTCとなっている(Photo25)。

Photo25:本来は左のような電圧でいいのに、実際にはマージンを含んだ右のような電圧が供給され、若干無駄な消費電力が発生するので、このマージンを減らすように電源モジュール(PSM:Power Supply Module)に指示を出すのがBTCの仕組みである

さらに、Adaptive Aging Compensation(Photo26)も搭載される。これは過度のOverclockで劣化が急速に進まないように、常にトランジスタの劣化具合を観察しながら、過度の劣化になりそうなOverclocking(というかOverVoltage)を防ぐための仕組みである。これを取り入れることで、Photo26の冒頭にある「通常、トランジスタの劣化を見込んでの2~3%の周波数マージン」を省くことが可能になり、この分動作周波数を引き上げられる、という訳だ。

Photo26:どんな半導体にも設計寿命がある。通常はこの設計寿命を満たすように多少マージンを持たせてあるが、特にOverclock動作だと急速に劣化する可能性がある。これを防ぐための仕組みがAdaptive Aging Compensationである

ここまでの技術はBristol Ridgeにも採用されていることが明らかになっているが、次のMBFFはひょっとするとPolarisのみかもしれない。通常すべてのFlip-Flop(いわゆるラッチ)にはClockを供給する必要があるが、すべてのラッチには同一タイミングでClock信号を供給しなければならない。

これを担保するために、さまざまなTree構造を利用するが、何しろ数が膨大だから、Clock信号はどうしても微弱になる。これをカバーするために、Clockの配線にはClock Bufferが追加され、これでClock信号の電圧とか波形を保つ形になる。

これに対しPolarisでは、複数個のラッチに対してひとつのClock Bufferからの信号で供給を行うという技法をとり、Clock Bufferの数を減らしたとする(Photo27)。これにより、TDP比で4~5%の削減が可能、とするから効果は無視できないところだ。

Photo27:Polaris 10には2100万個のラッチが入っている。これに対して1つ1つにClock Bufferを入れていたら、Clock Bufferも2100万個(実際にはさらに上位のClock Treeにも必要だから、3000万個くらいか?)が必要になる計算である

ただ通常はこういうことをすると動作の不安定さにつながりかねないので、回路設計上これをどう解決したのかは気になるところだが、そのあたりの詳細はHallock氏からも回答はなかった。そして先ほども触れた、メモリバスの256bitかも、最大で58%の消費電力削減につながる、としている(Photo28)。

Photo28:この58%はあくまでメモリ(とメモリコントローラ)の分で、システム全体の数字ではない

こうした積み重ねの結果がPhoto29の右側の縦棒である。14LPPを採用することで75%程度の削減が可能になったが、そこからさらにここまで紹介したような技法で、最大2.8倍にも及ぶ省電力が可能になったという訳だ。

Photo29:気になるのはここまでの技法がほかのプロセスに持っていっても有効かどうか、というあたりだが、当然そのあたりもノーコメントであった

余談であるが、Polaris 11に関してはパッケージサイズも24.5mm×24.5mmと小型化され、さらに高さも1.5mmと薄型化されたことで、ノートPCなどにより入れやすくなったことが紹介された(Photo30)。

Photo30:ちなみにPolaris 10に関しては未公開