ノートPC向けに最適化したAPU AMDは、今年(2015年)のノートPC向けのAPU「Carrizo(キャリゾ)」を正式発表した。Carrizoは、4個の「Excavator(エキスカベータ)」CPUコア、GCN(Graphics Core Next) 1.2アーキテクチャのGPUコアを8 CU(Compute Unit)搭載し、従来は別チップだったサウスブリッジチップを統合したSoC(System on a Chip)となっている。GPUコアは、HSA(Heterogeneous System Architecture) 1.0フル対応となり、CPUコアとGPUコアの間のメモリ共有も改良された。また、メインストリームAPUでは、初めてセキュリティプロセッサも内蔵した。DRAMインターフェイスはDDR4をサポートするが、製品ではDDR3-2133までとなっている。 Carrizoは、従来の「Kaveri(キャヴェリ)」アーキテクチャのモバイル向けAPUラインを置き換える。しかし、デスクトップPC向けAPUはKaveriアーキテクチャが継続される。AMDのAPUは、デスクトップのKaveriとノートPCのCarrizoの2系列に分かれることになる。 2系列に分かれるのは、AMDがCarrizoを、ノートPCのTDP(Thermal Design Power:熱設計電力)枠をターゲットに設計したからだ。従来のAPUは、ノートPCからデスクトップまで広くカバーする設計だった。しかし、CarrizoはノートPCにターゲットを合わせており、そのために、電力効率が非常に高くなっている。 Intelも、かつてデスクトップPC向けCPUとノートPC向けCPUを2系列にアーキテクチャを分けたことがある。しかし、今回のAMDのアプローチはそれとは異なる。CarrizoのCPUコアやGPUコアのマイクロアーキテクチャ自体は、発展させたとはいえ、デスクトップPC向けと共通性がある。しかし、AMDは半導体プロセス技術のオプションやCPUコアのスタンダードセルライブラリや、トランジスタ選択など、チップ設計の根本部分を大きく変更した。そのため、Carrizoは、従来のメインストリームAPUと比較すると、電力効率やダイ(半導体本体)効率が大きく向上した。 加えてAMDは、Carrizoに進歩した省電力機能を組み込んだ。電圧制御やパワーゲーティングなどを大幅に改良。その結果、待機時のS0i3モード時には、SOCの消費電力を50mWにまで下げられるようになった。

アドレストランスレーションをキャッシュ CPUコアのExcavatorは、Bulldozer系マイクロアーキテクチャの発展形だ。従来アーキテクチャの弱点だったL1データキャッシュのサイズが倍増され、コア毎に16KBだったのがコア毎に32KBになった。また、分岐予測のターゲットアドレスのバッファであるL1 BTB(Branch Target Buffer)のサイズも1.5倍の768エントリになった。改良の結果、Excavatorでは、IPC(Instruction-per-Clock)が4～15%ほど向上したという。 GPUコアにもアーキテクチャ上の改良が加えられた。プログラミングモデルにも影響する大きな拡張は、GPUコアとCPUコアで共有するメモリへのアクセスの改良。AMDのAPUには、物理メモリアドレスに変換するMMU(Memory Management Unit)が3系統存在する。CPUコア側のMMUと、GPUコアのMMU、そして、I/OのIOMMUv2で、それぞれが仮想メモリアドレスから物理メモリアドレスへのトランスレーションを行なう。しかし、これらのMMUはメモリアドレステーブルを共有しており、同じメモリ空間を扱うことができる。 CPUコアとGPUコアが共有するメモリアクセスは、GPUコアからIOMMUv2を経由してCPUコア側からメモリコントローラにアクセスする仕組みとなっている。アドレステーブルは共通化されているため、CPUコアとGPUコアは、ポインタを渡すだけでデータを共有することができた。しかし、CPUとGPUの共有するメモリアクセスは、IOMMUv2を経由するCPUとGPU間のアクセス経路「Onion/Onion+」を使っており、ここがボトルネックになることがあった。 Carrizoではこの問題を軽減したという。アドレストランスレーション自体のボトルネックを軽減するために、新たなキャッシュ「Address Translation Cache (ATC)」をGPUコアに持たせた。2階層になったキャッシュで、トランスレートしたアドレスをキャッシュする。各CU毎に小さなL1 ATCがあり、全CUで共有する大きなL2 ATCもある。ATCは、IOMMUv2の内部の、テーブルトランスレーションのキャッシュである「Translation Lookaside Buffer (TLB)」と連携しており、TLBのタグを読み込む。また、CPUサイドを経由するGPUからのメモリアクセスは、帯域が狭くなることも問題だった。Carrizoではこの問題も解決してフル帯域を使えるようにしたという。 また、Carrizo世代では、モバイルAPUでもCUが8個有効にされた。結果として512個のFMAD(浮動小数点積和演算ユニット)が動作し、ピークで819GFLOPSの演算パフォーマンスを達成できる。

CPUのように割り込みが可能となったGPUコア また、コンピュートタスクのタスクスイッチングと、グラフィックスタスクのプリエンプションがサポートされた。これによって、コンピュートとグラフィックスのどちらのタスクも割り込みが許容されるようになる。CPUと同じように、カーネルプログラムを実行中に、プログラム実行を停止して割り込みを入れることが可能になる。言い換えれば、GPUコアをよりCPU的に柔軟に使えるようになる。 GPUコアのグラフィックスタスクの実行時のコンテクストは、レガシーコンテクストも含むために非常に量が多い。それに対して、コンピュート時のコンテクストは、プロセッサの汎用レジスタなどで相対的に量が少ない。そこで、コンピュートタスクの実行時には、GPUのコンテクストの内、コンピュートに関連するコンテクストだけを待避してスイッチすることにした。これがAMD用語でのGPUコンピュートコンテクストスイッチング(GPU Compute Context Switching)だ。 ステイトの待避はCPUと同様にメモリに書き出すことで行なう。GPUコア全体ではコンテクストは大きいが、AMD GPUではコンピュートは個々のプロセッサユニット「CU」単位で管理しており、コンテクストの待避もCU単位で行なう。そのためスイッチングレイテンシはそれほど問題にならないとAMDは説明する。この機能は、実は前世代のKaveriでもハードウェア的には実装されていたが、有効にされなかった。Carrizoで初めて有効にされるとMacri氏は言う。ディスクリートGPUでは、グラフィックスプリエンプションはRadeon R9 285(Tonga:トンガ)からサポートされている。 また、GCN 1.2の重要な拡張であるカラー圧縮機能もCarrizoに加わった。フレームバッファのカラー情報を圧縮する機能で、その結果、実質的にDRAM帯域が拡張される。同じフレームバッファの量で、占めるメモリ帯域が減るためだ。メモリ帯域の制約がきついAPUでは重要な機能だ。

プロセス配線オプションのレベルから変革 Carrizoの重要なポイントは、Kaveriよりも機能や性能を大幅に増やしながら、電力やダイサイズ(半導体本体の面積)は同レベルかそれ以下に抑えたことだ。Kaveriのダイは245平方mmでトランジスタ数は24.1億だった。それに対してCarrizoのダイは250平方mmでトランジスタ数は31億となっている。AMDはサウスブリッジチップも統合し、CPUコアもGPUコアも機能を強化しながら、APUのダイサイズをほぼ同じに抑えた。プロセス技術の世代は同じ28nmだ。 同じプロセス技術で、ダイを肥大化させずに30%も多くの機能を詰め込むために、まず、AMDはプロセス技術の配線オプションを変更した。配線層(Metal Layer:半導体チップのメタル配線層)の構成を、従来のAPUよりも高密度配線に最適化させた。配線層の内、下から8層までを最も配線ピッチが狭い「1x」とし、高密度のローカル配線を可能にした。 この配線層構成は、従来のAPUの構成とは全く異なり、ディスクリートGPUの配線層にに近い。配線ピッチを狭めると、ロジック回路をより稠密にすることが容易になり、消費電力が下がり、電力効率も上がる。