■後藤弘茂のWeekly海外ニュース■
AMDは、11月に投入する新GPU「Radeon HD 6900(Cayman:ケイマン)」から、GPUアーキテクチャを変える。Caymanは、同社の新GPUファミリ「Northern Islands(ノーザンアイランズ)」のエンスージアストGPUだ。Northern Islandsの第1段のパフォーマンスGPU「Radeon HD 6800(Barts:バーツ)」は、従来の「Radeon HD 5870(Cypress)」とほぼ同じマイクロアーキテクチャを取っている。それに対して、Caymanでは、プロセッサ内部のマイクロアーキテクチャが異なるという。
NorthernIslandsのダイサイズ PDF版はこちら |
Demers氏 |
なぜ、AMDは、今回、ハイエンドのCaymanだけを新アーキテクチャにし、その下のBartsは旧アーキテクチャのままに止めたのか。先週、台湾の台北市内で開催した技術カンファレンス「AMD Technology Forum and Exhibit (AMD TFE)」でCaymanについて説明したAMDのEric Demers氏(GPG Chief Technology Officer, AMD)は、その理由を次のように語る。
「リスク管理の観点から言うと、新アーキテクチャのGPUの開発は、スケジュールとダイサイズの面で非常に危険だ。ダイが肥大化してコストが跳ね上がったり、スケジュールが遅れたりする可能性があるからだ。そのため、新アーキテクチャはハイエンドのエンスージアストGPUでスタートするのが適している。
なぜなら、エンスージアストクラスのGPUは、コストについてある程度のフレキシビリティを持つからだ。コストが上がっても、(価格との)バランスで許容できる。ところが、下位のバリューセグメントGPU、バランスセグメントGPU、パフォーマンスセグメントGPUでは、価格が低いため、コストの自由度は非常に小さい。そのため、コストが上がる可能性のある新アーキテクチャは取りにくい。それが第1の理由だ。
2つ目の理由は、今回はスケジュールが非常にタイトだったこと。TSMCがハーフノードプロセス(32nm)をキャンセルしたため、急に(現行の)40nmプロセスで設計しなければならなくなった。我々が(製品ラインの)広い範囲に渡って(設計を)変更しようとすると、時間的に難しかった。
結局のところ、クリスマス(の日付)は動かない(笑)、モバイルリフレッシュスケジュールは遅れたりしない。そういったスケジュールは重要なカギだ。我々は、きちんと間に合うスケジュールで製品を出さなければならない。200ドルくらいのボード価格のパフォーマンス市場では、オンタイムで出せなければ、ゲームに負けてしまうだろう。米国で言えば、クリスマスや感謝祭のゴールデンシーズンに出さなければならず、動かしようがない。多分、数週間の遅れなら、まだ大丈夫だろうが、それ以上になるとまずい。
それに対して、ハイエンドでは、スケジュールでもリスクを侵すことができる。『やあ、多分出荷は来年の第1四半期になるよ』と言っても、ハイエンドなら許される度合いが大きい。もし、製品が本当に優れていれば、スケジュールに遅れてもユーザーは買ってくれる。というわけで、リスクとスケジュールが、我々を(新アーキテクチャを試す場合に)ハイエンドに押し上げる」。
Demers氏の説明を裏返すと、このようになる。Caymanではスケジュールが遅れる心配があるほどの変更が、アーキテクチャに加わる。また、前世代と同じTSMC 40nmプロセスで製造するため、Caymanはアーキテクチャ変更の結果、ダイサイズが大きくなり、コストが上がる可能性が濃厚だ。
TSMCプロセスのロードマップ PDF版はこちら |
●プロセッサコアの構成が従来とは変わるCayman
マイクロアーキテクチャ面で明確になっているのは、AMD GPUの基本プロセッシング単位であるVLIW(Very Long Instruction Word)プロセッサの構成が変わること。また、ジオメトリパイプラインのスループットも強化される。ただし、根底からアーキテクチャを刷新するのではなく「ある程度の規模の変更」(Demers氏)だと言う。
Cypressでのプロセッサの構成について、AMDは倍精度演算の説明時に、次のように言及している。
「Radeon HD 6800では倍精度はサポートしない。しかし、6900、すなわちCaymanでは、倍精度浮動小数点演算をサポートし、そのパフォーマンス比率はRadeon HD 5870より高いレートになる。プロセッサの内部の構造を変えたからだ。6800では、単精度演算に対する倍精度演算の比率は5分の1だった。6900では4分の1になる。そのため、6800と同じ(プロセッサ数)だったとしても、倍精度演算のパフォーマンスはラフに言って20%向上する」(Demers氏)。
従来のRadeon HD 5800アーキテクチャでは、1個のプロセッシングコアに含まれる5個の単精度浮動小数点(FP)演算ユニットのうち、4個を使って1サイクルスループットで1個の倍精度浮動小数点演算を行なっていた。だから、倍精度/単精度の比率は5分の1になる。それが4分の1になるということは、プロセッシングコアの構造が変わることを意味する。これは、大きな意味を持っている。
RV770のVLIWプロセッサ PDF版はこちら |
AMD GPUは、ユニファイドシェーダになったRadeon HD 2900(R600)以来、同じ構造を維持している。演算ユニット群は「スレッドプロセッサ(Thread Processor)」または「VLIWプロセッサ」と呼ばれるコアに構成されている。このVLIWプロセッサは、グラフィックスなら1つの頂点やピクセルを演算する単位だ。VLIWプロセッサは、4個の単精度FP積和算(MAD)ユニットと1個の単精度FP積和算兼スーパーファンクションユニット(SFU)、それに分岐ユニットの6ユニットで構成されている。
各演算ユニットは、それぞれ個別の命令を実行できる。VLIWプロセッサ全体では6命令(5演算命令+1コントロールフロー命令)を実行可能だ。AMDアーキテクチャでは、6個の命令を長いVLIW命令へと、コンパイラ(CPU上で走る)がパックする。GPUで制御するのは、VLIW命令の単位だ。5演算ユニットを備えたVLIWプロセッサの構造は、伝統的なGPUの「Vec4」の構成から進化したものだ。
SIMDで発行されるVLIW命令 PDF版はこちら |
●伝統的なGPUのプロセッサ構成から発達したAMDアーキテクチャ
GPUはもともと、4-wayのSIMD(Single Instruction, Multiple Data)演算ユニットによる「Vec4」構成を取っていた。グラフィックスでは、3~4個のエレメント(ピクセルはRGBA、頂点はxyz)に同じ命令を実行する場合が多いため、1命令で複数のデータを処理できるSIMD構成が適していたからだ。さらに、超越関数などを扱うSFUを1ユニット、Vec4に加えた構成が一般的だった。
しかし、シェーダプログラムの進化や汎用コンピューティングでの利用が進むと、SIMDで並列に処理できないスカラ命令がコードの中で増えてきた。こうした命令は、SIMDプロセッサでは、効率よく実行できない。そこで、GPUベンダーはSIMDユニットを2分割して、2個の命令を並列実行できるようにした。下のRadeon X1000(R5xx)のピクセルシェーダプロセッサはその例だ。
Radeon X1000(R5xx)のピクセルシェーダプロセッサ PDF版はこちら |
現在のAMD GPUのVLIW構成は、ユニットの分割をさらに進めて、SIMDの個々の演算ユニットが個別の命令を実行できるようにしたものだ。4-wayのMAD SIMDユニットは、VLIWの中の4個のMADユニットへと再編された。また、スーパーファンクションユニットは積和算(MAD)兼用となった。現在の、5個の演算ユニットを備え、1クロックで最大5演算(積和算なら10オペレーション)が可能なVLIWプロセッサはこうして誕生した。
AMDは、この構成を過去4世代(R600以降)に渡って維持してきた。GPUの大きなアーキテクチャ変更は、上位のSIMDアレイの構成(Cypressでデュアルコア化)や内部バス(RV670でバスを全面変更)などで行なわれ、VLIWプロセッサの中身には、ほとんど変更がなかった。しかし、Caymanでは、「VLIWプロセッサの構成が変わる」(Demers氏)という。
これは、AMDがGPUをグラフィックス中心のアーキテクチャから、より汎用へと、やや比重を移し始めることを意味するかも知れない。Demers氏は、Radeon HD 5870の発表の際に「VLIWプロセッサの構成を維持しているのは、グラフィックスにはこの構成が一番向いているからだ」と語っていた。3~4エレメントの処理が多いグラフィックスでは、Vec4を発展させたVLIWが効率的だからだ。しかし、非グラフィックスアプリケーションの中には、VLIWで並列実行しにくいケースもあり、性能が発揮できない場合が出てくる。
シェーダプログラムの変化とGPUの対応の違い PDF版はこちら |
Radeon HD 6800の概要 PDF版はこちら |
●演算/ダイ効率とのトレードオフがあるアーキテクチャ改良
AMDアーキテクチャをNVIDIAのそれと比較すると、違いは明瞭だ。NVIDIAは、GeForce 8800(G80)の際に、旧来のGPUのSIMDを完全に分解、1サイクルに1演算(積和算なら2オペレーション)を実行するプロセッサの塊へと再構成した。AMD GPUでは5演算ユニットのVLIWプロセッサで1ピクセルや1頂点を処理するが、NVIDIA GPUでは1演算ユニットで1ピクセルや1頂点を処理する。ピクセルや頂点の各要素は、個別にサイクル毎に実行する。完全な「SOA(structure of array)」型の構成だ。それに対して、AMDはVLIWでの命令レベルの並列処理を行なっている。
Caymanのマイクロアーキテクチャはまだわからないが、少なくとも5演算ユニットのVLIW構成から変わることだけは確実だ。それは、旧来のGPUアーキテクチャから離れて行くことを意味する可能性が高い。
ただし、ラディカルな変更にはトレードオフがつきまとう。AMDアーキテクチャは、VLIWプロセッサをベースとしているため、NVIDIAアーキテクチャより単純な演算/ダイ効率はいい。演算ユニット以外の、命令制御の部分のハードウェアオーバーヘッドが少ないからだ。例えば、AMDアーキテクチャでは80個の演算ユニットに対して4サイクルに1回、1 VLIW命令を発行する。それに対して、NVIDIAのGF100では36個の演算ユニットに対して2サイクルに1回、2つの異なる命令を発行する。AMDが、プロセッサコアの粒度を小さくすれば、柔軟性は高まるが、命令発行のオーバーヘッドは大きくなる。Caymanはこれまでと同じ40nmプロセスなので、トランジスタ数を増やせる余地が小さいからだ。NVIDIA GPUのような超巨大ダイにするつもりがなければ、AMDもあまりラディカルな改革はできないだろう。
Caymanではジオメトリパイプラインのスループットも改良される。頂点処理では、固定ユニットのスループットが制約となっており、それはRadeon HD 6800でも変わっていない。そこに手が入るのはCaymanからだ。
「Radeon HD 6800のジオメトリスループットは、1クロックにつき1頂点で、これはRadeon HD 5870と同じだ。しかし、次のCaymanで少し向上する」とDemers氏は説明する。
こうした説明から予測できるCaymanは、従来のアーキテクチャをベースにしながら、内部プロセッサコアをリアーキテクト(再構成)し、また、GPUの“マルチコア”化をさらに推し進めて、上位のジオメトリの制御部分から分割したようなアーキテクチャだ。特に、VLIWプロセッサの構成の変革は、汎用コンピューティングの性能にも影響するため、重要だ。
GPUダイサイズ図 PDF版はこちら |
GPUプロセッサ数比較 PDF版はこちら |