5月15日、これまでTrinityのコード名で知られていたAMDの第二世代APUが発表された。この第二世代APUは、PiledriverコアのCPUコアにVILW4世代のGPUを組み合わせたものであり、まず今回はMobile向けに投入される。この第二世代APUについて、事前に公開された情報などをまとめつつ、その構成を見てみたいと思う。

Photo00:

本稿のページ構成について、6ページ目から16ページ目までの各ページは、おもにRMMA 3.8を利用したアーキテクチャ分析を行っています。一般的なアプリケーションベンチマークについては、17ページ目から行っています。目的のベンチマークに直接アクセスしたい場合などは、こちらの目次ページの各見出しリンクの確認をおすすめします。

Trinityの構造

さて、Photo01が第一世代のAPUであるLlanoと第二世代のAPUであるTrinityの差を端的にまとめたものである。Llano、Trinity共にGLOBALFOUNDRIESの32nm SOIをつかって製造される関係で、ダイサイズ(228平方mm→246平方mm)、トランジスタ数(11.78億個→13.03億個)共に微増であるが、トランジスタ数は10.6%ほど増えてもダイサイズは7.9%の増加に留められており、その意味では実装効率を若干ながら改善した模様だ。

Photo01: 下に並ぶ横長の項目は、白が同じ機能、黄色が拡張された部分である。

この効率の良さ、は性能面の特徴でもある。TrinityではMobile向けに45WのTDP枠を廃し、代わりに17WのTDPを追加している。概ね電力効率は倍増しており、IntelのIvy Bridgeとの奇妙な符合を見せている(Photo02)。

Photo02: 右のグラフの縦軸は"Performance/Watt"で、なので実際の性能はたとえばこれに35Wなり17Wなりを掛ける事で出てくる。その意味ではIvy Bridgeと同じく、性能レベルを変えずに消費電力を半減させたのがメインである。

内部構造は従来のLlanoと大きくは変わらず、CPUコアとGPUコア、Memory InterfaceとMedia Accelerator、Platform Interfaceが統合され、これがAシリーズチップセットに接続される形である(Photo03)。大きな違いとしては、まずアイドル時の消費電力は平均で1.08Wまで下げられており、CPUコアはK10由来のStarsコアから第二世代BulldozerであるPiledriverに入れ替わり、またGPUは一世代新しくなり、DisplayPortも追加された。またIOMMU V2も搭載されるなどしている(Photo04)。さて内部構造はPhoto05の通り。Stars 4coreからPile Driver 2Module/4coreになった関係で若干CPUコアは縮小しており、その分GPUコアの面積がやや増える形となっている。

Photo03: 細かくみるとほぼ全ブロックが更新されているので同じではないのだが、基本的な構造には大差が無いという意味。

Photo04: ダイの内部構造は後述

Photo05: PCI Expressが24laneとあるが、うちx4 laneはチップセットとの接続に、x4 laneはDisplayPort出力用に割り当てられ、外部GPU用にx16 laneが残っている形。

さて、いよいよCPUコア。メインとなるPiledriverは基本的な構造そのものはBulldozerと大きくは変わっていない(Photo06)。主な改良点としては、オレンジで示されているようにFMA3やF16Cのサポート、IPCの若干の改善やリーク削減、CAC削減、動作周波数向上などが実現されている。もっとも基本がBulldozerコアだから、Starsコア並みにIPCが上がることはさすがに期待できないが。

Photo06: CACとは今年2月にAMDがISSCC2012で発表した"Resonant Clock Design for a Power-efficient, High-volume x86-64 Microprocessor"という論文の中で登場した指標で、CAC=Pdynamic / (V^2×f)として示されるもの。つまり同一電圧/同一動作周波数の場合のダイナミック消費電力を示したものである。

そのIPに関わる改良点を示したのがPhoto07である。こうした多くの改良についてJoe Macri氏(Corporate Vice President and CTO of the Client Division)曰く「Starsコアはこれまでも随分改善を加えてきており、そうおいそれと手を入れられる部分は無い。ところがBulldozerは出来たばかりのコアだから、まだまだ手を入れられる部分が随分ある」と説明しており、こうした様々な改良でIPCを多少なりとも底上げできる、としている。

Photo07: 実行ユニットに関しては、今回殆ど手付かずとなっているのがわかる。ただ、それ以外についてはかなり幅広く手を入れている。

Memory Controller周りもまた随分手が入った(Photo08)。この世代での大きな特徴は、従来HTでのマルチプロセッサ/チップセット接続を考慮していた部分を完全に排除したことだろう。またメモリコントローラは1.5VのDDR3や1.35VのDDR3Lに加え、1.25VのDDR3Lにも対応している。これについてもMacri氏は「現状ではまだDIMMは存在していないが、将来の対応に備えた」としている。動作周波数自体もDDR3-1866までに対応している。また新たにAtomic/MAD(MCT Atomic Data Buffer)といった機能を追加している。これは要するにGPUとCPUの間で高速に同期を取るためのメカニズムであるが、面白いことにこれは独自の規格(Macri氏に「これはPCI Express Extentionと互換性のあるものなのか、それとも独自規格なのか?」と確認したところ「PCI Expressとの互換性は考慮していない」という返事があった」)であり、また対応できるのはTrinityに内蔵されるGPUと、GCN(Graphics Core Next)のGPU(つまりRadeon HD 7000番台)でのみ有効という話で、それ以前の製品では利用できないとのことだった。そのRadeon Memory Busの内部構造はこちら(Photo09)。GPUそのものの性能改善に対応してMemory Busも拡張する必要があり、ついに内部的には双方向256bitのバスに拡張されている。

Photo08: 昔のロードマップでは、Trinityの世代あたりでMemory Controllerが完全にUnifiedになる(CPU側のMemory ControllerとGPU側のMemory Controllerが統合される)という話だった気がするのだが、現実問題としては未だに両方が独立しており、これが2つのDRAM Controllerを共有してアクセスする形になっている。

Photo09: バス幅そのものは実際のDDR3とは連動していないが、これは速度が違うため。GPUコアは定格500MHzだから、定格だと500MHz×256bitでアクセスする形になり、DRAMコントローラはこれを1.6GHz×64bit×2で受けるという形になる。

次がTurbo Core 3.0である。Llanoの世代ではCPUのみがTurbo Coreの対象となったが、TrinityのTurbo Core 3.0ではCPUとGPUの両方がTurbo Coreの対象となる(Photo10)。このTurbo Coreによる性能の伸び代が大きく増えた、というのもTrinityの特徴で(Photo11)、製品にもよるが最大900MHzも動作周波数が上がることで、これまでよりも性能が改善されやすい、としている。

Photo10: A10-4600Mの場合、CPUは定格2.3GHz、GPUは定格496MHzで動作するが、Turbo Core動作時はこれが最大3.2GHz/685MHzまで上がる。ただしどちらがどの様に上がるのかは当然作業負荷によって変わることになる。

Photo11: 800MHzはLV/ULV向けのA10-4655M(TDP25W)のもので、定格2GHz/最大2.8GHzになっている。17WのA6-4455Mの場合は2.1GHz/2.6GHzで、伸び代は500MHz程度でしかない。

次がGPUコアである。Llano世代に搭載されていたものはVILW5世代のもので、たとえばハイエンドのA8-3870Kの場合では400sp構成だったが、TrinityではこれがVLIW4世代に切り替わった(Photo12,13)。「何でGCNを搭載しなかったの?」とMacri氏に確認したところ「(Trinityの)デザイン中はまだGCNが完成してなかったので間に合わなかった」という単純な答えが返ってきた。もっともVILW4をそのまま持ってきたわけではなく若干の改善も施されているようだ(Photo14)。

Photo12: 構造的にはRadeon HD 6670(Turks XT)のサブセットといったところ。Turks XTが480SPなので、これをもう少し絞った形だ。

Photo13: これはVILW4世代の一般的な構成。VILW5→VILW4で概ね10~20%の性能改善と消費電力削減が行われているので、構成が同じなら明らかに性能改善が図れる事になる。もっとも実際はSP数が微減、動作周波数も微減(Turbo Core有効時は微増)というあたりで、性能評価は難しいところ。

Photo14: Faster double precision opsに関しては元になったTurksコアが既にこの特徴を持っているので、特に今回改善したという訳ではない。

次がUnified Video Decoderであるが、Trinityではこれが第三世代となっており、新しいフォーマットのサポートや、出力ストリームの強化などが行われた(Photo15)。エンコードに関しても同様で、ついにCPUからはRate Controlだけを行えば、あとは完全にハードウェアでのエンコードが可能となっている。

Photo15: これまでは不可能だったHD Stream 2本の同時再生が可能になったのが大きなポイント。またMPEG-4のサポートも地味に便利である。

Photo16: このあたりの特徴はIvy Bridgeに搭載されるIntel QSVと同じく。もっともこれを利用するためにはアプリケーションが対応していないといけないというのも、これまた同様。

画面出力関係では、3ch/4画面の出力が目新しい(Photo17)。これにあわせて、7.1ch Audioを最大で同時4chまで出力できるようにされている(Photo18)。また搭載するHD Media Acceleratorでは再生画像の画質向上の機能を搭載する(Photo19)ほか、新たにAMD Quick Streamと呼ばれるソフトウェアが搭載された(Photo20)。このAMD Quick StreamはTrinityでのみ利用可能で、Llanoなどでは利用できないとのことだった。

Photo17: 今のところDisplayPortは1ポートのみなので、がんばっても最大4画面となっている。

Photo18: 理論上は1台のマシンを使い、独立した4つのコンテンツを再生可能という事になるが、果たしてTrinity1台でそこまで必要とされるケースがあるかどうかは謎である。

Photo19: これはまぁこれまでも搭載されていた機能を更に拡充した話。

Photo20: これはバックグラウンドでファイル転送をかけながら動画のストリーム再生を行うようなケースでは、動画のストリームダウンロードを優先するという一種のQoSサービスをソフトウェア的に実装しているという話である。