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

AMDの次世代APU「Kaveri」はアーキテクチャの転換点

28nmバルクプロセスへと移行するAMDのAPU

 AMDが今年(2013年)中に発表を予定している第3世代のパフォーマンスAPU「Kaveri(カヴェリ)」。本来なら2013年前半に登場する予定だったKaveriは、AMDのAPUアーキテクチャの中でカギとなる製品だ。なぜなら、AMDのヘテロジニアス(Heterogeneous:異種混合)コンピューティング構想の“ほぼ完成形”がKaveriアーキテクチャとなるからだ。

 AMDが「HSA(Heterogeneous System Architecture)」と呼ぶ同社のヘテロジニアスコンピューティングアーキテクチャでは、次のステップで新しいメモリモデル「hUMA(heterogeneous Uniform Memory Access:ヒューマ)」へと進む。hUMAでは、CPUとGPUが同じバーチャルメモリアドレス空間を共有し、プロセッサ間のメモリコヒーレンシをハードウェアで維持する。hUMAの導入によって、AMDのHSAフレームワークはプログラミングモデルも進化する。そのため、AMDアーキテクチャでのGPUコアを汎用に使うソフトウェアの開発は、hUMA待ちのモードとなっている。逆を言えば、Kaveriをリリースすることで、ようやくAMDはHSAを本格的に推進し始めることができるという状況にある。Kaveriで積み残すHSAの要素は、GPUコアのプリエンプティブタスクスイッチなどで、それはKaveriの次のAPUとなる。

 AMDは、Kaveriの動作デモを6月のCOMPUTEXで初めて公開した。Kaveriは、GLOBALFOUNDRIESの28nmプロセスで製造する。遅れた原因は、28nmのハイパフォーマンスプロセスの量産が一定のペースに乗るまで時間がかかったからだ。AMDはTSMCの28nmプロセスも使っているが、Kaveriの設計を異なるFabに移すことは難しいため、GLOBALFOUNDRIESで製造する。

 従来のAMDパフォーマンスAPUである「Llano(ラノ)」と「Trinity(トリニティ)/Richland(リッチランド)」の製造ファウンドリは同じGLOBALFOUNDRIESだが、32nm SOI(Silicon-On-Insulator)プロセスで製造している。それに対して、Kaveriは28nmのバルク(Bulk)プロセスで、プロセスのジオメトリが微細化する。

 ただし、32nmはSOIであるのに対して、28nmはバルクであるため、トランジスタパフォーマンスでは大差がないと見られる。32nm SOI→28nmバルクにおいての微細化の利点は、トランジスタパフォーマンスよりも、トランジスタ密度の方がより大きい。同程度の面積のダイなら、より多くのトランジスタを詰め込むことができる。Llano→Trinityではプロセス技術自体は変わらなかったため、トランジスタ規模で見ると、今回がAMD APUにとって初めての大きなジャンプとなる。

増えるトランジスタをアーキテクチャの強化に

 AMDは、28nmプロセスへの移行で増えるトランジスタを、Kaveriのアーキテクチャ上の強化に費やした。Kaveriでは、CPUコアとGPUコアそれぞれのアーキテクチャが大きく変わる。CPUコアはTrinity/Richlandの「Piledriver(パイルドライバ)」コアからKaveriでは「Steamroller(スチームローラ)」コアに、GPUコアはTrinity/Richlandの「VLIW4」からKaveriでは「GCN(Graphics Core Next)」へと変わる。

GPUの比較
PDF版はこちら

 TrinityのPiledriverはBulldozer(ブルドーザ)コアのマイナーチェンジだったが、KaveriのSteamrollerはBulldozer系アーキテクチャの初めての大幅拡張となる。GPUコアも同様で、GCNはAMDにとって初めての汎用コンピューティングにも最適化したアーキテクチャで、HSAはGCNを前提としている。

 CPUコアは4コアのままだが、GPUコアは積和算(MAD)ユニット数で512個となると見られている。これは、Kaveriと同ダイと見られるサーバー向けの「Berlin(ベルリン)」のGPUコアが512個だからだ。Trinityでは、MADユニットは384個だったので、33%増えることになる。

命令デコーダを2ユニットに並列化したSteamroller

 KaveriのCPUコアSteamrollerの最大の特徴は、命令デコーダを2並列にしたこと。Bulldozer系マイクロアーキテクチャでは、2個のCPUコアを1モジュールに融合させており、2スレッドを並列に走らせることができる。Bulldozerモジュールでは、整数コアとL1データキャッシュはスレッド毎に備えているが、命令デコーダを含むフロントエンドと浮動小数点演算ユニットは2スレッドで共有する。命令デコーダは4-wayが1ユニットとなっている。

 しかし、Steamrollerでは、2スレッドがそれぞれ専用の命令デコーダを備える。Bulldozerでの、フロントエンドのボトルネックを解消することが目的だ。サイクル当たりの内部命令のディスパッチ数はスレッド当たり最大25%増やすことができるという。Steamrollerでは実行ユニット側やメモリサブシステムも強化されるが、主眼はスレッド当たりのIPC(Instruction-per-Clock)の向上にある。

命令デコーダの並列化

 AMDがBulldozerでデコーダを2コアに対して1ユニットに減らした理由の1つは、x86 CPUにおいてデコーダの実装が重いためだ。複雑なx86命令のデコードには膨大なロジックが必要となり、電力も食う。しかし、フロントエンドで十分な量の命令デコードができなければ、ボトルネックになる。Steamrollerでは、この部分を再バランスを取り、より伝統的なマルチコアCPUに近いスタイルに戻したように見える。こうした強化によってSteamrollerは、Bulldozer/Piledriverよりモジュールのダイエリアが大きくなっていると推測される。28nmプロセスで2コアの1モジュールが20平方mm台の中盤程度のサイズになると推測される。

BulldozerとSteamrollerのマルチスレッディングの違い
PDF版はこちら

512ユニットに増えたMADユニットがダイエリアを食う

 KaveriのGPUコアのMADユニットの数は512ユニットと見られる。GCNでは、64個のMADが1個のCU(Compute Unit)に搭載されているため、Kaveriは8個のCUを備えることになる。AMD APUは、3世代でGPUコアを進化させてきた。MAD専用ユニットの数だけを比較すると、Llanoの320ユニットから、Trinityの384、そしてKaveriの512へと増える。ただし、LlanoのVLIW5では、80ユニットのスーパーファンクションユニットもMADとして使うことができるので、理論上ではLlanoとTrinity系でMAD数はほぼ同じだ。

APUのGPUの進化
PDF版はこちら

 AMDはKaveri世代で1TFLOPSのAPUを実現すると以前説明していた。512ユニットのMADなら、CPUコア側のFPU性能と合計して1TFLOPSクラスの性能レンジに達すると予想される。

 Trinity系の384 MADユニットから、Kaveriの512 MADユニットへの強化は、演算ユニットの33%の増加に留まらない。KaveriのGPUコアのGCNアーキテクチャは、Trinity系のGPUコアのVLIW4アーキテクチャと比べて、演算性能当たりのトランジスタ数をより必要とする。これは、AMDのディスクリートGPUを見れば一目瞭然だ。

ディスクリートGPUの進化とダイサイズ
PDF版はこちら

 上の図では左が40nmのVLIW4/5アーキテクチャGPUで、右が28nmプロセスのGCNアーキテクチャGPUとなっている。40nmと28nmぞれぞれの同クラスのダイで、MADユニット数は2倍にはならない。GCNのオーバーヘッドの分だけMAD数が削れている。

 ちなみに、同じGCNアーキテクチャのGPUコアを持つPlayStation 4(PS4)のAPUは、18ユニットのCUで合計1,152個のMADユニットが有効(ゲーム機はスペックが固定されているため歩留まりを上げるため物理的にはより多くのユニットを載せている)になっている。MADユニット数では、KaveriはPS4の半分弱となる。もっとも、Kaveriのサポートメモリは依然としてDDR3であるため、MADをこれ以上増やしてもメモリが制約となり性能を発揮できないだろう。

Kaveriで内部バスアーキテクチャが変わる

 コアの強化に加えて、AMDはKaveriでは内部バスも大きく変える。具体的には、GPUコアとメモリコントローラの接続形態を、現在の2系統のパスのアーキテクチャから、統合パスへと切り替える。これは、hUMAのサポートのために、GPU側のメモリコントローラユニットを大きく変更するためだ。

 AMDの現在のAPUは、GPUコアがDRAMコントローラにアクセスする経路が2系統ある。片方は「Radeon Memory Bus(Garlic:ガーリック)」で、これはGPUコアからメモリコントローラへの広帯域のアクセスを実現する。Garlicは、GPUコアがメモリコントローラに広帯域に直結するディスクリートGPUに近いアクセスのためのバスだ。2つ目のバスは「Fusion Compute Link(Onion:オニオン)」で、ディスクリートGPUがI/Oコントローラ経由でCPUと接続されていたものをオンダイに実装したようなバスだ。Onionバスは、GPUコアからCPUキャッシュへのスヌープができるコヒーレントバスになっている。

Trinityのバスアーキテクチャ
PDF版はこちら

 Garlic/Onionの2系統のバスアーキテクチャは、これまでの全てのAMD APUで採用されている。上はTrinity/Richlandの例で、OnionはPCI Express経由でのデバイスからのアクセスと同経路であることがわかる。PS4のAPUでもGarlic/Onionの拡張版が使われている。

 しかし、Kaveriではこの構造が大きく変わり、統合パスになる。これは、GPU側のメモリコントローラがhUMA対応で拡張され、CPUコアと同じバーチャルメモリアドレススペースを共有するようになり、ページフォールトの処理などもサポートされ、CPUコアとの間でメモリコヒーレンシが保たれるようになるためだ。そうしたアーキテクチャでは、Garlic/Onionの2系統に分ける理由はなくなる。AMDは次のように説明する。

 「まだ詳しくは言えないが、シングルメカニズムに移行するだろう。フルに全ての(コア間の)コヒーレンシを取るように設計するならば、統合パスがずっと優れた解になるだろう。最初からそうしなかったのは、世代毎にIPブロックを改良して置き換えて行くことが、実装を簡単にするからだ」とAMDのJoe Macri氏(CTO, Fusion)は説明する。AMDのGPUアーキテクチャを担当するMichael Mantor氏(Senior Fellow Architect)も次のように語る。「完全な統合データパスでは、GPUコアとCPUコアが同じファブリックを経由してメモリにアクセスすることになる。ファブリックの部分でコヒーレンシを保つ。こうしたモデルがソフトウェアエコシステムにとっても使いやすいものになるだろう」。

 統合された1系統のメモリパスは至って当たり前で、その意味では、これまでの2系統のパスの実装が特殊だったと言える。また、PS4のAPUがGarlic/Onionであることから、PS4はhUMAを機能的に備えていないことも分かる。

Ivy Bridge/Haswellと比べて大きなダイサイズ

 Kaveriの問題点の1つは、Intelに対してプロセス技術面で周回遅れになってしまっていることだ。Intelはすでに昨年(2012年)から22nm FinFETプロセスに移行してしまっている。それに対して、AMDはパフォーマンスAPUについては未だに32nmプロセスで、Kaveriでようやく28nmプロセスになる。28nmもプレーナ型トランジスタで、Intelの22nmのようなFinFETの3Dトランジスタではない。

 そのため、IntelはFinFETによる低リーク電流(Leakage)と低電圧時の高い特性の利点を独占的に享受している。さらに、微細化によるチップダイの縮小も利点となっている。

AMDとIntelのダイサイズ比較
PDF版はこちら

 32nmプロセス世代では、AMDの主力のAPUのLlanoと、IntelのSandy Bridge(サンディブリッジ)の4コア+GT2 GPUコア版のダイサイズは、どちらも200平方mmを越えていてほぼ同レベルだった。それに対して、22nm世代のIvy Bridgeでは4コア+GT2が160平方mmへとシュリンクし、GPUコアのピーク性能は倍以上になった。Haswell(ハズウェル)でも、Intelは4コア+GT2のサイズを177平方mmと小さく保っている。ラフに言って、32nm世代のダイに対して74~82%のダイサイズに留めた。

 Kaveriはというと、AMDが公開したパッケージのダイを測ると、ダイサイズは240平方mmをやや下回る程度となっている。これは、32nmのLlano/Trinityとほぼ同レベルで、AMDはダイを小型化するよりも、トランジスタ予算を機能の強化につぎ込んだ格好となっている。そのため、ダイサイズ的にはIntelに対して不利になる。Kaveriは、Haswellの最高性能の4コア+GT3eよりはダイが小さい。しかし、メインストリームCPU/APU同士で比較するとダイが大きく、製造コストにボディブローのように効いてくる可能性がある。

Kaveriのダイ
AMD CPUのダイサイズ推移
PDF版はこちら

 ただし、Intelが22nmプロセスで主力CPUのダイを32nm世代より小さく留めたのには理由がある。Intelは通常ならダイを前世代より小さくするより、その分、機能を増やす方を選択する。22nmではダイを小さくする方向へと振ったのは、IntelにとってもFinFET化でトランジスタ構造を大きく変える22nmプロセスはリスクが高いと判断したためだと推測される。ダイが小さければ、歩留まりが多少悪くてもウェハ当たりのダイ数を維持できる。実際、Intelは22nmプロセスでは、出だしは恐る恐るといった雰囲気で、プロセス技術の優位についても、あまり強調しなかった。

 しかし、現在のところ、Intelの22nmプロセスで問題が発生したという話は聞こえてこない。それどころか、製品の出荷ペースを見る限り、絶好調に見える。おそらく、フタを開けたら歩留まりが非常にいいペースで向上したと推測される。そのため、Kaveriは不利となる。

(後藤 弘茂 (Hiroshige Goto)E-mail