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

AMDがアーキテクチャを一新した新APU「Kabini/Temash」を発表

プロセス技術とコアアーキテクチャが一新された新世代

 AMDのAPU(Accelerated Processing Unit)が新世代に入った。AMDは、ローパワー向けAPUの第2世代「Kabini(カビーニ)」、「Temash(ティマッシュ)」を発表。APUを28nmプロセスへ移行させ、CPUコアとGPUコアのアーキテクチャを一新すると同時に、ワンチップへの統合を果たした。

 CPUコアは新設計の「Jaguar(ジャギュア)」に、GPUコアはディスクリートGPUと同等の「GCN(Graphics Core Next)」になり、従来外付けだったサウスブリッジチップ「FCH(Fusion Controller Hub)」もダイに統合された。AMDは、Kabini/Temashで、ローパワー/ローコストノートPCと、タブレットとノートPCのコンバージェンスの市場で攻勢に出ようとしている。

 AMDは2011年にローパワーCPUコア「Bobcat(ボブキャット)」をベースにしたAPU「Zacate(ザカーテ)」、「Ontario(オンタリオ)」を投入した。BobcatはTSMC 40nmプロセスに載せたコアで、AMDはハイエンド向けのBulldozer(ブルドーザ)系とBobcat系の2系列にCPUマイクロアーキテクチャを分化させた。Kabini/Temashは、TSMC 28nmプロセスのローパワー系列の第2世代で、AMDはこの世代でアーキテクチャを大きく進化させた。

KabiniとTemashの概要
AMD CPUのアーキテクチャ
PDF版はこちら

 Kabini/Temashのアーキテクチャを大まかに概観すると、このAPUの特長がよく見えてくる。

 まず、CPUコアはBobcatからJaguarに変わった。Bobcatはシングルコア単位で設計されていたが、Jaguarは4コア構成をベースに設計されている。従来のAMDローパワーCPUコアはそれぞれ独立したL2キャッシュを備え、排他的な制御をしていた。Jaguarでは4コアが2MBのL2キャッシュを共有する構成で、インクルーシブキャッシュとなっている。4コアとL2キャッシュで、CU(Compute Unit)と呼ぶモジュールを構成している。Kabini/Temashは、このCUが1個の構成だ。ちなみに、同じくJaguarを使うPlayStation 4(PS4)のAPUは、Jaguar CUを2個搭載して8コア構成にしている。

JaguarのL2キャッシュ
Jaguarのダイ
PDF版はこちら
Jaguarのメモリ階層

 Jaguarは、前世代のBobcatを拡張したマイクロアーキテクチャだ。そのため、基本のブロック構成は、BobcatとJaguarでよく似ている。しかし、Jaguarでは、パフォーマンスのアップと命令セットの拡張、省電力化が図られており、Bobcatと比べるとパフォーマンス/電力が大きく向上する。また、製造上では、ファウンダリやプロセス技術をまたいだ移植性を高めている。

Bobcatのダイヤグラム
PDF版はこちら
Jaguarのダイヤグラム
PDF版はこちら
アーキテクチャの改善

Bobcatよりもパフォーマンス/電力に優れるJaguar

 命令セットでは、256-bit SIMD(Single Instruction Stream, Multiple Data Stream)命令を含む新命令AVXをサポートした。以下が加わった新命令だ。

・SSE4.1、SSE4.2
・Advanced Vector Extensions(AVX)
・AES、CLMUL
・MOVBE
・XSAVE/XSAVEOPT
・F16C、BMI1

 また、Bobcatでは浮動小数点/SIMD演算パイプの実行ユニットは64-bitだったが、Jaguarでは128-bitになった。単精度32-bitの演算なら4乗算と4加算を1サイクルに同時に行なうことができる。256-bitのAVX命令を実行する際には2サイクルでダブルパンプで実行する。それに合わせて、データパスも拡張されている。

浮動小数点演算ユニットの拡張
データパスの拡張

 命令フェッチ&デコードでは、命令キャッシュに対するプリフェッチャを改良し、また4×32Bのループバッファを加えて命令フェッチの電力効率を上げた。また、x86/x64命令のデコーダには1ステージを加えて、よりパイプラインを深くすることで、動作周波数も10%以上向上させた。整数演算ではスケジューラのエントリを増やしてアウトオブオーダのウインドウを広げた。また、除算ハードウェアが新たに加わっている。オーバーオールでは、Bobcatに対してJaguarはIPC(Instruction-per-Clock)も15%以上向上しているという。

コアのパイプラインを深くした
プリフェッチャの改良
整数演算の改良
キャッシュの改良

 物理的な設計ではJaguarは高密度な9トラックライブラリで設計されており、ダイエリアは1コア当たり3.1平方mmと、ARMプロセッサ並に小さい。Bobcatは4.9平方mmだった。AMDのパフォーマンスCPUと比べると、32nmのBulldozerの2コアモジュールと比べて28nmのJaguarの4コアCUがほとんど同じサイズとなっている。同じ28nmで、AMDの次世代パフォーマンスCPUコア「Steamroller(スチームローラ)」と比べても、同程度の面積で2倍のコア数になるという。

Jaguarのフロアプラン
Bobcatとのダイ比較
Steamrollerとの比較
PDF版はこちら

 Jaguarでは、プロセス間の移植性を高めつつ、カスタムマクロでパフォーマンスの向上を図っている。JaguarとBobcatを比べると、同じ電圧でも、ずっと高い動作周波数を達成できる。Jaguarでは、Bobcatより高周波数で動作させてパフォーマンスを上げるだけでなく、Bobcatと同じ周波数で駆動電圧を下げることで、電力を抑えることもできる。

駆動電圧とクロックの関係

GPUコンピューティングの機能を大幅に強化したGPUコア

 Kabini/Temashは、APUとしては初めてGCN(Graphics Core Next)を組み込んだ製品となる。本来なら、GCN(Graphics Core Next)を組み込んだメインストリームAPU「Kaveri(キャヴェリ)」が今年(2013年)前半に登場する予定だったが、Kaveriがずれ込んだため、今年中盤ではKabini/TemashだけがGCNベースのAPUとなる。

 Kabini系のGCNは、基本の設計はディスクリートGPUのGCNと同じだ。スペック的には、128浮動小数点演算ユニット(コア)で、GPUコアとしてはローエンドに過ぎない。しかし、ディスクリートGPUに対して大きな違いが1つある。それは、GPUで汎用プログラムを実行するGPUコンピューティングのための「ACEs (Asynchronous Compute Engines)と呼ばれるユニット」の強化だ。

Kabini/TemashのGPUコアの概要
PDF版はこちら
Kabini/TemashのGPUコアの概観

 Kabiniには、ACEのエンジンが合計で4ユニットあり、ディスクリートGPUと比べると、演算ユニットに対して比率的に非常に多い。ACEはコンピュートタスクの制御を行なうユニットだ。グラフィックスタスクをディスパッチするグラフィックスパイプラインからは独立しており、グラフィックスと並列にコンピュートタスクの生成と発行ができる。

 GCNアーキテクチャでは、それぞれのACEが、コンピュートタスクのコマンド群をメモリ(またはキャッシュ)からフェッチして、タスクキューを生成する。タスクキューは実際にはオンメモリにあり、最大8キューまでをサポートできる。ACEは、このタスクキューからコンピュートタスクを、GPUコアの実行ユニットであるCU(Compute Unit)に発行する。

GCNのコンピュートアーキテクチャ

 具体的には、1サイクル毎に各ACEは、1個のコンピュートワークグループを作成することができる。また、1サイクル毎に、ワークグループの中から1個のWavefrontをCUに発行することができる。Wavefrontは、AMD GPUの実行単位で、64スレッドをバインドしたものだ。通常、1個のワークグループは、複数のWavefrontから成る。ACEは、同じワークグループから生成したWavefrontを、同じ1個のCUに発行する。タスク群は完全にアウトオブオーダで、ACEがタスクをトラックして整合性を取る。

 GCNアーキテクチャでは、タスク管理のパイプラインはグラフィックスとコンピュートで分離されている。ACEはコンピュートタスクだけを生成・管理する。グラフィックスパイプ側もコンピュートタスクを発行できるが、基本はACEが行なう。ACEの数が多いことは、Kabini/TemashのGPUコアは、粒度の小さなコンピュートタスクを多数インフライトで管理・実行できることを意味している。GPUの場合、GPUコアに実行させる汎用のコンピュートタスクの規模が大きくないと効率が落ちる場合があるが、Kabini/Temash系では、相対的に粒度の小さなタスクでも効率が落ちにくい。この仕組みは、実はPlayStation 4(PS4)のAPUのGPUコアとも共通している。PS4もACEを多数備え、64ものコンピュートタスクキューを管理できる。

GCNアーキテクチャの最初のAPU

 Kabini/TemashのGPUコアは、従来のAPUが搭載しているVLIW(Very Long Instruction Word)4/5系のGPUコアとは、完全にコアアーキテクチャが異なる新しいGPUコアだ。GCN系のGPUコアは、旧来のAMD GPUアーキテクチャより、多様な新しいタイプのシェーダや汎用コンピューティングプログラムでも性能を出せるという利点がある。

 GCNでは、GPUは「コンピュートユニット(Compute Unit:CU)」と呼ばれるプロセッサクラスタで構成される。Kabini/Temashでは、CUの数はたった2個で、非常に小規模だ。しかし、それぞれのCUが、合計64個の浮動小数点積和算(FMAD)ユニットを備えているため、合計のFMAD数は128個となる。

 CUは演算ユニット、ロード/ストア&テクスチャユニット、キャッシュ&ローカルスクラッチパッドメモリ、命令ユニットを備えた、フルのプロセッサだ。ディスクリートGPUでは、CUが最大4個束ねられて大きなクラスタを構成しているが、Kabini/Temashでは2CUでL1命令キャッシュとL1スカラデータキャッシュを共有する構造となっている。

GCNのコア
PDF版はこちら
GCNコンピュートユニットの概要
GCNのアーキテクチャ

 GCNのCUでは、4個のベクタユニットがある。ベクタユニットは16-wayのSIMD(Single Instruction, Multiple Data)ユニットで、マスクレジスタを使ったプレディケーションによってコントロールフローの制御ができる。つまり、ベクタの各レーンは、それぞれ条件分岐するようにプログラム側には見える。

 それぞれのベクタユニットは、異なるWavefrontを並列に実行する。Wavefrontは64スレッドであるため、ベクタユニットは4サイクルスループットで、1個のWavefrontを実行する。ベクタユニットは、それぞれ、64KBのベクタレジスタを備えている。レジスタが相対的に大きいのは、GPUではレジスタを大きく取ってマルチスレッディングを行なうことで、メモリアクセスレイテンシを隠蔽するためだ。

 ベクタユニットのFMADは倍精度演算もサポートする。しかし、単精度がフルスピードであるのに対して、倍精度は加算ADDで8分の1、乗算と積和算では16分の1のスループットとなっている。

GCNのCUの主な仕様

 CU全体で、16KBのL1データキャッシュと64KBの「ローカルデータシェアメモリ(Local Data Share Memory)」と呼ばれるスクラッチパッドメモリを共有する。この他にロード/ストアとテクスチャユニットがあり、さらに1個のスカラユニットがある。

 ピクセルのバックエンド処理を行なうROP(Rendering Output Pipeline)は最小の構成で、4ピクセルのスループットだ。ディスクリートGPUでは、ROPはメモリコントローラに直結しているが、APU内部のGPUコアの場合はクロスバースイッチに接続され、オンチップインタコネクト経由でCPUと共有のDRAMコントローラに接続される。

 メモリ階層はGPUコアにCU間で共有の汎用のライタブルなL2キャッシュを持つ。また、CU間でのデータ交換のための「グローバルデータシェアメモリ(Global data sahre memory)」を4KB備える。ディスプレイ出力パイプラインは2系統で、4Kをサポートする。ディスプレイ出力系ではVGAもサポートしている。

GCNのリードライトキャッシュ
ディスプレイ出力やビデオ機能

内部バスアーキテクチャは従来のAPUを踏襲

 Kabini/Temash全体の構造は、従来のAMD APUを踏襲している。AMDのAPUは、メインストリームのLlano(ラノ)/Trinity(トリニティ)と、ローパワーのZacate/Ontarioで共通した構造となっている。CPUとGPUのメモリ空間を統一する「hUMA(heterogeneous Uniform Memory Access:ヒューマ)」をサポートするKaveriからは、内部アーキテクチャも変わり1系統のインターコネクトに統合されるはずだが、Kabini世代は従来のままだ。

 現在のAMD APUの内部インターコネクトアーキテクチャの大きな特長は、GPUコアからDRAMコントローラへのバスが2系列になっていることだ。片方は「Radeon Memory Bus (コードネームGarlic)」で、これはGPUコアからメモリコントローラへの広帯域のアクセスを実現する。Garlicは、GPUコアがメモリコントローラに広帯域に直結するディスクリートGPUに近いアクセスのためのバスだ。片方向256-bitの双方向バスで、Trinityでは2DRAMコントローラに対して2系統のGarlic、Zacate/Ontarioでは1DRAMコントローラに対して1系統のGarlicとなっている。

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

 もう1つのバスは「Fusion Compute Link (Onion)」で、こちらはCPUとのコヒーレントバスになっている。ディスクリートGPUがI/Oコントローラ経由でCPUと接続されていたバスをオンダイにしたイメージだ。このバスを使うと、GPUコアからCPUキャッシュへのスヌープができるようになる。このOnionバスを使うことで、GPUでの汎用コンピューティング時に、CPUとGPUの間での無駄なメモリコピーを排除するゼロコピーが実現できる。

 Kabini/Temashでも、Garlic/Onionの基本は同じだ。ただし、Kabini/Temashでは、従来はUMIバス経由で外付けしていたFCH(Fusion Controller Hub)がオンダイ(On-Die)に取り込まれたため、その部分が変わっている。

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

 I/O回りではUSB 3.0がサポートされ、メモリインターフェイスはハードウェア的にはDDR3Lがサポートされている。ワンチップに統合されたことで、チップ間インターフェイスの分の電力消費が減り、マザーボード上でのフットプリントも小さくなった。

KabiniのI/O周り

 Kabini/Temashは、AMDのAPUにとって重要なマイルストーンだ。CPUとGPUの機能とパフォーマンスを拡張したことで、AMDのローパワー製品は魅力的になった。しかし、製品として重要であるだけでなく、GCNの搭載で、GPUコアを汎用に使うヘテロジニアスコンピューティングのステップをさらに一歩進めた点にも大きな意味がある。Kabini/Temashは、今後登場するAPUの完成系となるKaveriのアーキテクチャを図るベースとなる。

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