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

AMDが発表した強力な新アーキテクチャAPU「Trinity」



●アーキテクチャを一新した強力なAPU

 AMDが、新世代のAPU(Accelerated Processing Unit)である「Trinity(トリニティ)」を発表した。TrinityはメインストリームPC向けの第2世代のAPUで、初代メインストリームAPUのLlano(ラノ)と同じ「AシリーズAPU」のブランドで提供される。製造プロセスは、GLOBALFOUNDRIESの32nm SOIプロセスだ。

 Trinityのポイントは多数ある。CPUコアアーキテクチャを従来のHound(Stars/K10)系からBulldozer(ブルドーザ)系に変えた、GPUコアアーキテクチャをVLIW(Very Long Instruction Word)5からVLIW4に変えた、アーキテクチャ変更と物理設計の改良によってCPUとGPUの動作周波数を引き上げた。この3つが大きなポイントだ。CPUコアの動作周波数は最大3.8GHz、GPUコアは最大800MHzとなっている。

 その結果、理論上のピークパフォーマンスはLlanoの572GFLOPSからTrinityの736GFLOPSへと28%向上している。この数字は、LlanoがCPU 2.9GHz/GPU 600MHz時、TrinityがCPU 3.8GHz/GPU 800MHz時の比較だと見られるが、実際にはCPUとGPUの両コアがフルスピードで動作することは難しいため、割り引く必要がある。しかし、LlanoからTrinityで、演算パフォーマンスがアップすることは確かだ。

Trinityのスペック演算性能が736GFLOPSに向上

 実際には、GPUコアについてはアーキテクチャの変更で、汎用アプリケーションの実効性能が高まり、物理設計上の改良や省電力制御の改良によって、全体に電力効率も高まっている。電力当たりのパフォーマンスが上がっている。そのため、AMDは今回のTrinityでは17WのモバイルSKU(Stock Keeping Unit=アイテム)を加えて、より薄型ノートPCへの浸透を図る。

性能向上や電力効率、電力低減消費電力低減の技術
電力効率やクロックが向上Trinity各モデルの仕様

 LlanoとTrinityは、チップ全体の構成はそれほど変わらない。ノースブリッジ機能などは、それほど手を加えず、コアアーキテクチャの転換に集中した。Trinityの全体構成は一部推測が入っているが、ほぼLlanoを踏襲していると見られる。

 AMDのAPUアーキテクチャの特長は、ディスクリートGPUの接続を踏襲した2系統のGPUコア-メモリの接続リンクにある。GPUコアは、双方向256-bitずつのリンクを2本備えた広帯域のRadeon Memory Bus(RMB)と、I/Oコントローラを経由してCPUのフロントエンドキュー経由でメモリにアクセスする双方向128-bitずつのFusion Compute Link(FCL)でメモリコントローラに接続されている。このスタイルは、Trinityまでは継承されている。

 ただし、プログラミングモデルに関わる重要な変更が1つ入っている。GPUコア側からFCLを経由したCPUメモリ空間へのアクセスでは、Llanoのようなpinnedページに制約されない。より自由なゼロコピーが可能になっている。これらの拡張については後の記事で説明する。

Llanoアーキテクチャ(PDF版はこちら)
Trinityアーキテクチャ(PDF版はこちら)
Trinityのノースブリッジと各リンク

●Piledriverではクロックシステムを再設計

 AMDは、昨年(2011年)、パフォーマンスPC向け「AMD FX-Series(Zambezi:ザンベジ)」でBulldozerアーキテクチャを導入した。BulldozerはAMDのCPUアーキテクチャの転換点で、2個のCPUコアを融合させたCPUモジュールにすることで、コア面積当たりのパフォーマンス効率を上げることを目的としている。同じA-Series APUでのアーキテクチャ上の比較では、CPUコアがHound(Stars/K10)系のHuskyコアから、Bulldozer系のPiledriverコアに変わったことが最も大きな変化だ。

 よく知られているように、Bulldozerアーキテクチャでは、整数演算コアをスレッド毎に、浮動小数点演算ユニットとフロントエンドを2スレッドの共有リソースとして持っている。K10/Hound系は、整数演算ユニットが演算パイプ3、アドレス生成パイプ3の構成だったのが、Bulldozer系では演算パイプ2、アドレス生成パイプ2の構成に変わっている。パフォーマンスクリティカルな整数演算はスレッド同士の競合が起こらないようにしたアーキテクチャだ。

AMDのBulldozer、K8/K10、Bobcatの比較(PDF版はこちら)
Bulldozerモジュールのマルチスレッディング(PDF版はこちら)
Piledriverアーキテクチャの推定図(PDF版はこちら)

 Trinityは、Bulldozerコアを改良したPiledriver(パイルドライバ)コアを載せている。PiledriverはBulldozerアーキテクチャを踏襲しているが、ある程度の拡張が加えられている。

 まず、Piledriverコアでは命令セットレベルで、3オペランドの積和算命令フォーマット「FMA3」がサポートされた。Bulldozerでは4オペランドのFMA4のみのサポートだったので、FMA3はTrinityが製品として最初となる。二転三転したx86のFMA(Fused Multiply-Add)拡張のオペランドフォーマットでは、IntelがFMA3に転じたことで、AMDもFMA3のサポートが必要となった。

 また、Piledriverでは、ハーフフロートと呼ばれる16-bit浮動小数点演算の「F16C」のサポートも行なわれる。このほか、全体にIPC(Instruction-per-Clock)の改善などが行なわれている。ちなみに、下の「PILEDRIVER IMPROVEMENTS & ENHANCEMENTS」のスライドは、PiledriverとHuskyを比較したチャートとなっている。だが、より重要なのは物理設計上の工夫で、AMDは他社の技術を導入してPiledriverの設計を改良した点だ。

PiledriverモジュールPiledriverの改良点

 同じ32nmプロセスでも、PiledriverではCPUコアは再設計されている。特に、AMDはクロックシステムの設計にフォーカスし、クロックメッシュ設計に特化した半導体ベンチャーCyclos Semiconductorと協力して、クロッキングシステムを完全に変更した。そのため、Piledriverコアのクロックシステムは、Bulldozerコアのそれとは、全く別物だ。Piledriverは、Cyclosの「Resonant Clock Mesh (RCM)」技術を最初に採用した商用製品となっている。

 Cyclosは今年(2012年)4月に開催されたLinley Tech Mobile Conference 2012で、同技術の説明を行なっている。RCM技術によって、Piledriverではクロックディストリビューションの電力を減らすことで、トータルで5~10%の電力削減を達成したという。また、クロックスキューも減らすことで、より高クロック化も可能となっている。

CyclosのResonant Clock Meshを採用

●GPUコアアーキテクチャはVLIW5からVLIW4へ

 TrinityではGPUコアのアーキテクチャも変わった。AMDは、Radeon HD 2900(R600)以来、長い間、5-wayのVLIW(Very Long Instruction Word)命令のプロセッサをGPUに採用してきた。実際には分岐命令も加わるので6命令スロットだが、演算パイプは5パイプだ。LlanoのGPUコアもVLIW5コアだ。しかし、Trinityでは、命令スロットを1つ減らしたVLIW4へとコアアーキテクチャを切り替えている。

VLIW5からVLIW4に移行(PDF版はこちら)

 VLIW4は、AMDがRadeon HD 6970(Cayman)から採用したアーキテクチャで、Radeon HD 7000系の下位のシリーズにも採用されている。VLIW4の目的は、命令並列性を下げ、スレッド並列性を上げて、アプリケーションの実行効率を上げることだ。

 VLIW5では、4個の単精度FP積和算ユニットと、1個のスーパーファンクションユニット(SFU)、それに分岐ユニットの構成となっている。スーパーファンクションユニットが積和算も実行できるため、ピークで5個の単精度FP積和算を実行可能だった。しかし、5並列の命令並列性を得られる率が低いため、結果としてVLIW5プロセッサの演算ユニットの稼働率は低かった。

 これをVLIW4では4個の積和算ユニットだけの構成に再編し、ピークで4個の単精度FP積和算へと並列度を下げた。その結果、論理上は、命令レベルの並列化が容易になった分だけ、プロセッサの稼働率が上がることになる。スーパーファンクションユニットが実行していた三角関数などは、積和算ユニットに機能を実装することで実行する。VLIWの3個の命令イシュースロットを使って1個の超越関数系の命令を発行する仕組みとなっている。つまり、3個の積和演算ユニットを連携させて1個の超越関数を実行している。

Llano内蔵SUMOのSIMDアレイ/VLIWプロセッサ(PDF版はこちら)
TrinityのVLIW4 SIMDエンジン(PDF版はこちら)
VLIW4を採用したメリット

 AMDのVLIW型アーキテクチャでは、16個のVLIWプロセッサをSIMDまたはSIMDエンジンと呼ぶプロセッサのバンドルに束ねて制御する。16個のVLIWプロセッサが、同じ命令を4サイクルに渡って実行することで、64エレメンツのデータを処理する。VLIW5もVLIW4も、どちらも16個のVLIWプロセッサで1つのSIMDを構成する。しかし、VLIWプロセッサの構成が変わったことで、全体の構成も変わっている。

 GPUコア全体の構成では、LlanoのSUMOコアが5個のSIMDを実装しているのに対して、TrinityのGPUコアでは6個のSIMDを載せている。Llanoでは合計の演算ユニット数は400で、そのうち80がスーパーファンクションユニット、320が浮動小数点演算ユニット。Trinityは、合計の浮動小数点演算ユニット数が384となっている。SIMDが増えたことで、テクスチャユニット群やキャッシュも増量されている。

Llano SUMOコア(PDF版はこちら)
Trinity内蔵GPUコア(PDF版はこちら)
LlanoとTrinityのGPU実行ユニット比較(PDF版はこちら)
GPUの主な機能

 簡潔に言えば、LlanoからTrinityで、AMDはGPUコアの命令レベルの並列性を20%下げて、スレッドレベルの並列性を20%上げた。アプリケーションによっては非常に低かったVLIW5の演算パイプの稼働率を高めて、パフォーマンスを引き出しやすくした。反面、GPUハードウェアが管理するインフライトのスレッド数が増え、命令/Wavefront制御の複雑性は増した。他にも、複数のコンピュートカーネルを同時にディスパッチできるようになるなど、制御系回りが強化されている。

●少しだけ大きくなったTrinityのダイ

 Trinityのダイ(半導体本体)を、同じスケールでLlanoのダイと比べると、Trinityの方が一回り大きいことがわかる。Trinityの246平方mmに対して、Llanoは228平方mmで、約7.8%ほどだがサイズが大きい。幅はほとんど同じだが、より細長くなっている。サイズの違いがあると言っても、それほど大きくはない。

Trinity(左)とLlano(右)のダイレイアウト(PDF版はこちら)
Trinityの性能向上、機能強化

 246平方mmというサイズは、以前の常識からすれば、メインストリームCPUのダイとしては大きいように思える。しかし、現在は、IntelとAMDのどちらも、200平方mm以上のダイが、メインストリームのダイサイズになりつつある。これは、CPUに、GPUコアとノースブリッジ機能が組み込まれた分、ダイ大型化のコスト増をある程度吸収できるようになったことが大きい。現在は、CPUに組み込むGPUコアのパフォーマンス競争に入ったところで、ダイサイズを犠牲にしても、GPUコアのパフォーマンスアップを実現しようとしている。

AMD CPUダイサイズ移行図(PDF版はこちら)

 TrinityとLlanoのユニット毎の比較をすると、CPUコアやノースブリッジ/クロスバースイッチ回りの面積は、それほど変わらないことがわかる。これは、Bulldozerアーキテクチャでの、デュアルコアモジュールのサイズが、K10コア2個のサイズとそれほど変わらないからだ。同じ32nmプロセスで、アーキテクチャを拡張しても、CPUコアの占めるサイズが変わらないことはBulldozerのモジュールアプローチの大きな利点だ。CPUコアのかなりの部分を共有リソースとすることで、ダイ効率を上げているからだ。

Bulldozerモジュールのダイエリア(PDF版はこちら)

 加えて、L2キャッシュの量も2コア当たり2MBずつと、TrinityとLlanoで変わらない。さらに、I/Oブロックである、2チャネルのDDR3インターフェイスや24レーンのPCI Expressを含む32レーン分のシリアルI/Oブロックなどは、両CPUでほぼ違いがない。

TrinityとLlanoのダイユニット(PDF版はこちら)
AMDのプロセス世代ごとのコアサイズ(PDF版はこちら)

 では、どこで大きな違いが生じているかというと、それはGPUコアだ。ビデオエンジンの固定機能やディスプレイコントローラ部分が強化されただけでなく、3Dパイプライン部分のハードウェアが大幅に増えている。

 すでに見たように、TrinityとLlanoで、GPUコアの実行ユニットの数自体は、400(Llano)と384(Trinity)で、ほとんど変わらない。しかし、GPUのプロセッサアレイの構成は、旧来のVLIW5からVLIW4へと変わり、SIMDエンジンの数も増えた。GPUコアサイズの違いは、こうしたアーキテクチャの違いから来ていると推測される。

 これを見ると、VLIW5からVLIW4への移行は、プロセッサ数にほとんど変わりがなくても、ダイエリアには影響を与えることがわかる。VLIW5からVLIW4では、SIMDアレイとプロセッサに変更を加えただけでなく、中央制御の命令ユニットについても、機能を拡張している。GPUでは、命令回りのユニットはCPUと比べて相対的にシンプルなだけに、その部分を強化すると、エリアが大きくなりがちだ。

 いずれにせよ、AMDにとっては、VLIW4は少しだけ重い実装であることがわかる。それでもAMDがTrinity世代でVLIW4に踏み切ったのは、VLIW4の方が汎用プログラムの実行効率がより高いためだと思われる。シンプルに言えば、若干のダイコストを払っても、GPUコアの汎用コンピューティングの性能を高めたのがTrinityだと言える。実際には、GPUコアの動作周波数を上げているため、GPUのパフォーマンスアップの幅はより大きい。

 Trinityのダイを、今年(2012年)のIntelの製品ダイと比較すると、下のようになる。プロセス技術の面から見ると、この比較はちょっとAMDに不利だ。Trinityが32nmであるのに対して、IntelのIvy Bridge(アイビーブリッジ)は22nmプロセスだからだ。しかし、22nmプロセスでもIntelの方がCPUコアのサイズがずっと大きく、その一方で、GPUコアのサイズがずっと小さい。

Trinity(32nm)とIvy Bridge(22nm)のダイ比較(PDF版はこちら)

●Trinityの登場でBulldozerアーキテクチャへの転換が完了

 Trinityの登場で、いよいよBulldozerアーキテクチャが、AMDのCPUラインナップの中核に据えられた。Bulldozerは2011年秋の登場以来、AMDラインナップでは、パフォーマンスCPUとサーバー&ワークステーションスペースだけに限られてきた。下の図では、グリーンがHound(Stars/K10)系アーキテクチャ、ピンクがBulldozer系アーキテクチャ、ブルーがBobcat(ボブキャット)系アーキテクチャを示している。2012年以降は、メインストリーム以上がBulldozer、バリューがBobcatで占められるようになる。

AMD CPUの移行図(PDF版はこちら)

 同じ移行図をプロセス技術別に見ると、違った側面が見えてくる。プロセスの移行とアーキテクチャの移行は同期していないためだ。昨年(2011年)は、AMDにとってプロセス移行の年で、Houndも32nmへ移行し、同じ32nmでBulldozerが登場し、40nmでBobcatも出てきた。ポイントは来年(2013年)で、AMDは来年にはメインストリームのBulldozer系コアも、バリューのBobcatコアも、28nmプロセスに移行するとしている。

 ただし、32nmから28nmへのプロセスの移行は、パフォーマンス面でのゲインはあまり期待できない。現在のTrinityはGLOBALFOUNDRIESの32nm SOIプロセスだが、来年(2013年)の「Kaveri(キャヴェリ)」では28nmのバルクプロセスになるからだ。32nm SOIと28nm Bulkでは、28nm Bulkプロセスをかなりチューンしても、それほどパフォーマンスアップは期待できないからだ。

 しかし、トランジスタ/エリアは高まるため、CPUとGPUのどちらもアーキテクチャの拡張の余地が増える。28nmプロセスで、CPUコアはBulldozerの3世代目のSteamroller(スチームローラ)CPUとなる。また、GPUコアは、この世代でGCN(Graphics Core Next)になるため、汎用的な性能はさらに高まる。

AMD CPUのプロセス別移行図(PDF版はこちら)

 AMDは、Trinityの投入でアーキテクチャ転換の次のステップに踏み込む。来年(2013年)のGCN(Graphics Core Next)の導入で、APUは、AMDが描いているヘテロジニアス(Heterogeneous:異種混合)型のスループット重視のコンピューティングスタイルの完成形となる。完成系とは言っても、実際には、そこから新たな改良がスタートする。その意味では、APUはいよいよスタート地点にたどり着き、ここから発展が始まるところだ。