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

AMD「Cayman」はなぜマルチコア+VLIW 4になるのか



●10月のTFEで示されたCaymanアーキテクチャの道筋

 AMDの次期ハイエンドGPU「Cayman(ケイマン)」に見える、GPUアーキテクチャの進化の傾向は明瞭だ。GPUのマルチコア化が一層進み、プロセッサ内部については伝統的なGPUアーキテクチャからの離脱が進む。マルチコア化はジオメトリプロセッシングのスループットを倍増させるためだ。内部アーキテクチャをGPU型から変革するのは、より汎用的な利用へと最適化するためだ。

 こうしたCaymanの進化の方向性は、基本的にはNVIDIAと似通っている。その意味では、現在のGPUのトレンドに沿った進化と言えるが、AMDの方がより保守的だ。AMD GPUは、これまで、NVIDIAと比べると保守的な設計で、伝統的な3Dグラフィックスでは処理効率が高かった。しかしAMDは今、保守性を保ちつつ、ある程度踏み出そうとしている。

 AMDは、10月に台湾で開催した技術カンファレンス「AMD Technology Forum and Exhibit (AMD TFE)」でCaymanアーキテクチャについて部分的に明らかにした。TFEで明かされた概要は以下の通り。CaymanはシングルダイでエンスージアストクラスのGPUとなる。性能面ではジオメトリパイプのスループットが強化される。また、演算プロセッサの基本構造を変える。そして、倍精度演算性能などGPUコンピューティング性能の強化がなされる。

 これらのヒントから、アーキテクチャはある程度まで推測が可能だ。まず、AMDはGPUのマルチコア化を推し進め、不完全なデュアルコア構造だったRadeon HD 5870(Cypress)世代から、完全なデュアルコアへと組み替えると見られる。下は、Cypressを省コスト化したRadeon HD 6800(Barts)の構成だが、SIMD(Single Instruction, Multiple Data)アレイは2つに分離されているのに、セットアップエンジンは分離されていないことがわかる。

Radeon HD 6800の構成
PDF版はこちら

 また、AMD GPUの基本単位である「VLIW(Very Long Instruction Word)プロセッサ」は、現在の5-way演算から4-way演算へと変更されると見られる。これは、伝統的なグラフィックスコア構造からさらに離れることを意味する。プロセッサをシンプルにして効率を高め、命令スケジューリング(ドライバソフトウェアがランタイムに行なう)を容易にする。VLIW構造の改革の結果として、倍精度浮動小数点(FP)演算性能は、単精度演算の5分の1から4分の1に向上する。

 全体で見ると、こうしたCaymanの進化は、従来のAMD GPUより、DirectX 11世代のアプリケーションのスループットを高め、汎用コンピューティングの性能を上げるだろう。しかし、AMDはCaymanのメモリ階層アーキテクチャに大きな変更を加えるとは言っていない。それには複雑な理由が絡んでいるが、AMDがメモリ階層を変革するとしたら、それは28nmプロセス世代になってからだろう。

NorthernIslandsのダイサイズ
PDF版はこちら

●1クロック当たり1トライアングルの制約から脱却

 AMD GPUでは、動作周波数に対するジオメトリスループットはRadeon 9700(R300)の時代から変わっていない。1クロック当たり1トライアングル(または頂点)のスループットで、GPUが進化しても、単に動作周波数が上がった分だけしか性能は向上しなかった。この事情はNVIDIAも同じだった。しかし、DirectX 11世代GPUで、NVIDIAとAMDのアーキテクチャは、この部分で大きく分かれた。

 AMDは、DirectX 11世代のRadeon HD 5870でも、この1トライアングル/サイクルの構造を踏襲した。それに対して、NVIDIAはGeForce GTX 480(GF100)からジオメトリスループットを大きく引き上げた。

 そのために、NVIDIAはGPUの構造を大きく変更した。従来のNVIDIAとAMDのGPUは、ジオメトリ処理の固定機能ユニット群とラスタライザ(AMDの場合は加えてテッセレータ)を1ユニットずつ備えていた。グラフィックスパイプラインでは頂点ストリームは、シリアルな処理しかできないためだ。

 ところが、NVIDIAのGF100では、GPUのプロセッサ構成の最小単位である「SM(Streaming Multiprocessor)」にテッセレータとジオメトリ固定機能の多くを載せた。SMは物理的にはGPUに16個載っているので、これで16並列となる。GF100では、そうしたSMを4個ずつ束ねて、より大きなクラスタ「GPC(Graphics Processing Cluster)」を構成。そして、GPCに1個ずつラスタライザとラスタライズの前後の処理のブロックを搭載した。物理的に分割したユニット群に、グラフィックス処理を分割するため、NVIDIAは描画領域自体を分割してクラスタに割り振っている。ある程度の非効率が生じるが、それに目をつぶれば、マルチコア化によってジオメトリスループットを上げることができる。

GF100のStreaming Multiprocessor
PDF版はこちら
GF100のGPC
PDF版はこちら

 この並列型の新構成は、言ってみればGPUのマルチコア化と表現してもいい。GF100では、マルチコア化の結果、ジオメトリスループットはアーキテクチャ的には、NVIDIA自社比で、従来の約8倍に高まったという。また、ラスタライズはそれぞれが1サイクルに最大8ピクセルへとラスタライズできるため、各サイクルに最大4トライアングルを最大32ピクセルに変換できるようになった。NVIDIAのJen-Hsun Huang(ジェンセン・フアン)氏(Co-founder, President and CEO)は、このアーキテクチャについて「GPUアーキテクチャで初めて、ジオメトリ処理をスケーラブルにした」と表現する。

●マルチコア化はDirectX 11時代のGPUの必然の流れ

 極端なマルチコア化を行なったNVIDIAに対して、AMDはよりRadeon HD 5800でより大人しいアプローチを取った。ジオメトリ回りの機能の多くは1ユニットに留めたまま、ラスタライザとプロセッサ群を2つに分割した。言ってみれば、“半デュアルコア”的な構造だ。そのため、ジオメトリスループットは従来のまま変わらず、それは最新のRadeon HD 6800でも同様だ。しかし、次のCaymanではこの部分を改良する。

Eric Demers氏

 「Radeon HD 6800のジオメトリスループットは、1クロックにつき1頂点で、これはRadeon HD 5800と同じだ。ジオメトリスループットは、次のCaymanで少し向上する」とTFEでAMDのEric Demers氏(GPG Chief Technology Officer, AMD)は説明していた。

 ジオメトリスループットを高める、ほぼ唯一の方法はマルチコア化だ。より正確に表現すれば、グラフィックス処理を、ジオメトリの頂点ストリームの段階から分割してしまうことだ。


GPUの構造変革
PDF版はこちら

 このように、結論は見えているため、Caymanアーキテクチャの予測は非常に簡単だ。論理的な帰結は、現在は1列になっているジオメトリ系の固定ユニット群とテッセレータを、2つに分離する。そして、ラスタライザから下のユニットと合わせて2つの完全に分離されたコアへと再構成する。そうすれば、ジオメトリスループットのピークは2倍に上がる。ある程度、NVIDIAと似通ったアプローチになる。

 ジオメトリ性能は、DirectX 11の場合、カギとなる。テッセレーションを加えたDirectX 11は、ジオメトリプロセッシングへの偏重の度合いを高めているからだ。従来ならピクセルプロセッシングのトリックで表現していたような表現を、ジオメトリプロセッシング側で複雑な形状を実際に創り出すことで実現しようとしている。DirectX 11時代のGPUとしては、自然な進化と言えそうだ。

●VLIWプロセッサを5-wayから4-wayに組み替える

 AMDは、CaymanからVLIWプロセッサの構成を変える。AMDはTFEで「Caymanでは、倍精度浮動小数点演算のパフォーマンス比率はRadeon HD 5800より高いレートになる。(プロセッサの)内部の構造を変えたからだ。Cypressでは、単精度演算に対する倍精度演算の比率は5分の1だった。Caymanでは4分の1になる。そのため、Cypressと同じ(プロセッサ数)だったとしても、倍精度演算のパフォーマンスはラフに言って20%向上する」(Demers氏)と説明した。

 従来のAMDアーキテクチャでは、1個のVLIWプロセッサに5個の単精度浮動小数点(FP)演算ユニットが搭載されていた。そのうち、4個を使って1サイクルスループットで1個の倍精度浮動小数点演算を行なっていたため、倍精度/単精度の比率は5分の1だった。Demers氏の説明のように4分の1になるということは、単精度ユニットが4個の構造になることを意味する。

 AMDのVLIWプロセッサは、グラフィックスなら1つの頂点やピクセルを演算する単位だ。現在のVLIWプロセッサの5個の演算ユニットは、実際には4個の単精度FP積和算(MAD)ユニットと1個のスーパーファンクションユニット(SFU)だ。SFUは超越関数などの実行ユニットで、単精度FP積和算ユニットも兼ねていた。各演算ユニットは、それぞれ個別の命令を実行できる。VLIWプロセッサ全体では6命令(5演算命令+1コントロールフロー命令)を実行可能だ。

 AMD GPUの利点と弱点はこのプロセッサ構造にある。AMD GPUでは、6つの命令スロットを備えたVLIW命令を採用しており、命令をコンパイルする際に、並列に実行できる複数の命令を抽出して、1個のVLIW語の中に納める。プロセッサ側では、VLIW命令の各スロットの命令をそれぞれの演算ユニットで並列に実行する。

Radeon HD 6800のVLIW
PDF版はこちら

 それに対して、NVIDIAは、GPUの演算プロセッサをフルにスカラプロセッサとして構成し、同じスレッドの中での命令レベルの並列化は行なわない。完全にシングルスカラで実行する。そのため、NVIDIAの方がSIMD(Single Instruction, Multiple Data)実行するプロセッサの単位が小さくなり、命令ユニットなどのオーバーヘッドが大きくなる。AMDは、相対的に実行ユニットに対する制御系のオーバーヘッドが小さい。また、グラフィックス処理では、3から4要素に対して同じ命令を実行するケースが多い(例えばRGBAのピクセルなど)ので、命令レベルの並列化を行ないやすい。つまり、グラフィックスでは性能効率を上げることができる。

 その代わり、AMDアーキテクチャでは命令をうまくスケジュールできなければ、プロセッサの利用効率が落ちてしまう。特に、シリアルなスカラ命令が多い場合には、並列化が難しく、効率が落ちる可能性がある。また、3から4要素の処理が中心の場合も、5-way実行ユニットのVLIWでは、どうしても実行ユニットがアイドルになる確率が高くなる。つまり、演算ユニットを物理的に多数並べても、実効効率は高くないという問題が生じる可能性がある。

シェーダプログラムの変化とGPUの対応の違い
PDF版はこちら

●コアの稼働率を上げるためにVLIWを狭くする

 問題はVLIWプロセッサの並列度が高すぎる点にある。そこで、AMDはCaymanではVLIWを4-way演算ユニットへと組み替えると見られる。4-wayの場合は、グラフィックスで多用する4要素までの並列演算をカバーできる。その上で、スカラ命令のストリームの場合にもプロセッサの利用効率を高めることができる。例えば、どうしてもVLIWの実効IPC(instruction per cycle)が平均で3命令だった場合、5-wayではコアの稼働率が60%に落ちてしまうのが、4-wayでは75%に上がる。

CaymanのVLIW
PDF版はこちら

 では、SFUの機能は、4-wayのVLIWにどうやって実装するのか。合理的な方法は、積和算ユニットにロジックを付加して、複数の積和算ユニットで実行できる構成にすることだ。AMDのVLIWアーキテクチャの場合、命令スロットにまたがるように複雑命令を分解して入れ込むことで、複数の演算ユニットを連携させることができる。この手法なら、演算ユニットは多少肥大化するが、効率を上げることでカバーできそうだ。

 こうしたVLIWプロセッサの変化は、伝統的なGPUから離れることを意味する。もともと、現在の4個の積和算ユニットプラス1個のスーパーファンクションユニット(SFU)の構成は、旧時代のGPUの4-way SIMD(Single Instruction, Multiple Data)ユニットプラスSFUの構成から来ている。旧来のGPUで走らせていたコードを走らせようとすると、演算ユニットの比率を同様に保っていた方が安心だ。そのため、NVIDIAもGeForce 8800(G80)では、積和算ユニットとSFUの比率を旧世代GPUと同率に保っていた。

 しかし、NVIDIAは現在では、SFUの比率を下げて、積和算ユニット中心の構成にしている。これは、現在の命令ミックスでは、積和算ユニット側で実行する命令の方が多いためだという。特に、グラフィックス以外の汎用コンピューティングでは、比率は積和算に傾く場合が多いと推定される。同じことはAMDにも当てはまるはずで、それなら、SFUを専用ユニットではなく、積和算ユニットで実現しようという流れになってもおかしくない。

 こうやって概観すると、CaymanでAMDが取ると見られるアーキテクチャが、合理的であることがわかる。Caymanアーキテクチャの場合、同じプロセッサ数でも、従来のAMDアーキテクチャより、実効性能は高くなる。また、倍精度演算の性能は、同じプロセッサ数の場合も従来より25%高くなる。

 Caymanから先のアーキテクチャの変化も予想ができる。Caymanで積み残すのは、内部バスとメモリ階層だ。AMDが次に手をつけるとしたらこの部分になるだろう。ジオメトリ処理と汎用コンピューティングの性能向上では、その部分の改革が必要になるからだ。AMDは、かつてリングバスを内部バスに採用して失敗した。NVIDIAは、テクスチャフェッチのバスだけを分離することで、GF100に合理的に双方向バスを実装した。ここでも、AMDはNVIDIAと似たアプローチを取る可能性が高い。