HSAがついに完成形となるCarrizoアーキテクチャ AMDは来年(2015年)の前半に次期モバイルAPUファミリー「Carrizo」を投入する。Carrizoは、パフォーマンスx86コアの「Excavator」ベースのCarrizoと、低電力x86コアの「Puma+」ベースの「Carrizo-L」の2系列となる。 Carrizoは、現在のAPU「Kaveri」と同じ28nmプロセス世代だが、モバイルにフォーカスして省電力性を大幅に高め、性能も高めた。電力効率では、CarrizoはKaveriの2倍に達するという。また、省電力化のため、マイクロアーキテクチャだけでなく、プロセス技術や回路設計といった基礎的な技術から拡張した。 Carrizoは初めてHSA(Heterogeneous System Architecture) 1.0スペックに完全対応する。つまり、GPUコンピュートのタスクスイッチングとグラフィックスプリエンプションをサポートし、コンピュートとグラフィックスのどちらのタスクも割り込みが許容されるようになる。言い換えれば、GPUコアをよりCPUライクに使うことができるようになり、HSAの機能の実装はCarrizoでついに完成することになる。 コンピュートタスクスイッチングとグラフィックスプリエンプションを区別しているのは、コンテクストが異なるからだ。GPUコアは、もともとグラフィックスタスクの実行時のコンテクストを持つが、これはレガシコンテクストも含むために非常に量が多い。それに対して、コンピュート時のコンテクストはプロセッサのレジスタなどで量が少ない。 そこで、コンピュートタスクの実行時には、GPUのコンテクストのうち、コンピュートに関連するコンテクストだけを待避してスイッチすることにした。これがAMD用語でのGPUコンピュートコンテクストスイッチング(GPU Compute Context Switching)だ。待避はCPUと同様にメモリに書き出すことで行なう。GPUコア全体ではコンテクストは大きいが、AMD GPUではコンピュートは個々のプロセッサユニット「CU(Compute Unit)」単位で管理しており、コンテクストの待避もCU単位であるためスイッチングレイテンシはそれほど問題にならないとAMDは説明する。一方、グラフィックスタスク実行時には、プロセッサの汎用レジスタ以外のグラフィックスの各種コンテクストを含めて全部切り替えできるようにした。こちらがGPUグラフィックスプリエンプション(GPU Graphics Preemption)となる。 AMDによるとコンピュートタスクスイッチングはKaveriからサポートされているが、グラフィックスプリエンプションはCarrizoからという。ディスクリートGPUでは、グラフィックスプリエンプションはRadeon R9 285(Tonga:トンガ)からサポートされている。 HSA 1.0のフルサポートまで辿り着いたことで、AMD APUはCPUとGPUのバーチャルメモリアドレスの共有やコンテクストスイッチなど、当初計画していた機能を全て揃えたことになる。ただし、CPUコアとGPUコアの間の完全な双方向キャッシュスヌープは、Carrizo世代でもまだ実現されない可能性が高い。 現在のKaveriは、IOMMUv2を使ってCPUコアとGPUコアを結んでいる。IOコヒーレンシであるため、CPU側からはGPUキャッシュはスヌープできず、そのためコヒーレントバス(Onion+)はGPUキャッシュをバイパスする。コヒーレントバスとノンコヒーレントバス(Onion)はどちらもIOMMUv2に接続されており、バーチャル-フィジカルメモリ間の変換のためのページテーブルウォーカ(Page Table Walker)を共有する。このページテーブルはCPU側のテーブルと同期している。また、変換アドレスのキャッシュである「Translation Lookaside Buffer (TLB)」は、L2を両バスで共有、L1をそれぞれのバスが独立して備える構成になっている。Carrizoの内部バスがこの構成からどう変わるかは、まだ明らかにされていない。

2系列のAPUがプラットフォーム互換となるCarrizo CarrizoとCarrizo-Lは同じコードネームの下にまとめられていても、実際の姿は大きく異なる。CPUコアはCarrizoがExcavatorで、Carrizo-LがPuma+だ。GPUコアの世代も異なり、Carrizo-Lの方のHSAサポートは現行の「Beema(ビーマ)」と同等のままだ。にも関わらずコードネーム上は両者は一系列にまとめられた。 これまで、AMDのパフォーマンスx86と低電力x86は異なるコードネームで明確に分離されていた。来年(2015年)のAPUでは、両系列が同じCarrizoになるのは、プラットフォームが互換になることを強調するためだ。シンガポールで11月20～21日に開催されたイベント「Future of Compute」でCarrizoについて発表したAMDのJoe Macri氏(CVP and Product CTO)は、Carrizoのコンセプトを次のように説明した。 「Carrizoファミリーの製品はどれも同じボールアウトで同じソケットに挿すことができる。従来は、高性能APUと低コストAPUでインフラストラクチャが異なっていた。なぜなら、低コストのKabini系はシングルチップのSoC(System on a Chip)であるのに、高性能なKaveriは2チップ構成だったからだ。 しかし、Carrizoは低コストAPUと同じワンチップのSoCになったため、Carrizo世代では高性能と低コストのどちらのAPUも同じインフラストラクチャを共有できる。それはOEMやプラットフォームのパートナーを助ける。彼らは同一のプラットフォームで、幅広い価格ポイントをカバーできる。顧客にとっては、豊富なチョイスが得られることになる」。 Carrizo世代からは、同じマザーボードに、ハイパフォーマンスのCarrizoと低コスト低電力のCarrizo-Lのどちらも載せることができる。自由度が高まったことで、OEMにとってはAMDを採用しやすくなり、顧客にとっては最終製品のPCの選択肢が広がる。

Bulldozer系の第4世代のExcavatorコアを搭載 AMDは、次世代マイクロアーキテクチャのx86 CPUについては、現在開発しているARMv8アーキテクチャの「K12」と平行してJim Keller氏(Vice President and Chief Architect of AMD's Microprocessor Cores)のチームで開発していることを明らかにしている。コードネーム「Zen」と呼ばれる新コアで、現在のBulldozer系とは全く異なるマイクロアーキテクチャになる。しかし、Carrizoに搭載されるExcavatorコアは、Keller氏のチームによる変革前の世代のコアで、Bulldozer(ブルドーザ)型のアーキテクチャの拡張版となる。 Bulldozerコアは、Piledriver(パイルドライバ)、Steamroller(スチームローラ)と発展してきた。Piledriverはクロックディストリビューションに「Resonant Clock Mesh(RCM)」を採用することで物理設計を大きく変えた。Steamrollerではマイクロアーキテクチャを変更して命令デコードのボトルネックなどを軽減した。ExcavatorはBulldozer系の4世代目、3回目の拡張版コアとなる。 現在、AMDはまだExcavatorの拡張の詳細は明かしていない。しかし、AMDはCarrizoではプロセス技術や回路設計を改良することを示しており、Excavatorコア自体も物理設計が大きく変わると見られる。CPUコア自体が、より高密度で低消費電力な設計になる可能性が高い。セルライブラリなども従来と変わる可能性がある。だとすると、AMDはマイクロアーキテクチャ拡張と物理設計の改良を交互に行なうパターンでCPUコアを進化させていることになる。もっとも、Excavatorは命令セットも拡張されAVX2などがサポートされると見られている。 ちなみに、AMDのARMコアとx86コアの両APUで、同じインフラストラクチャと同じ内部インターコネクトを使う「SkyBridge」プロジェクトは20nm以降のプロセスなので、Carrizoファミリーより後の世代となる。Carrizoファミリーは28nmプロセスの最後の世代のAPUになるだろう。Carrizoの製造はKaveriに引き続きGLOBALFOUNDRIESと見られている。現在のAMDの高性能CPUコアはほかのファウンダリに移すことが難しい上に、GLOBALFOUNDRIESは先端プロセスを相対的に低料金で提供している。 AMDのプロセスノード移行がIntelよりも遅いのは、この世代の特殊事情もある。ファウンダリは28nmプロセスの次は、20nmではなく、FinFET 3Dトランジスタの16/14nmプロセスに力を入れている。AMDのファウンダリについて言えば、TSMCは20nmの製造キャパシティのかなりの部分をAppleのiPhone 6ファミリーに提供しており、GLOBALFOUNDRIESは20nmよりも14nm FinFETを押し出している。そのため、AMDに限らず多くのチップベンダが、28nmからの移行には時間がかかっている。

同じ28nmプロセスでもKaveriと大きく異なるCarrizoのプロセス技術 Carrizoの製造プロセスのノードは、現在のKaveriと同じ28nmだ。しかし、同じ28nmプロセスノードと言っても、kaveriが採用したプロセスとは大きく異なるという。KaveriはGLOBALFOUNDRIESの「28SHP」プロセスを採用していた。28SHPプロセスは、AMDがGLOBALFOUNDRIESと協力して開発したAPU向けのプロセスで、配線層(Metal Layer)の構成を拡張することで、CPUに必要な高性能と、GPUなどに向いた密度の高い配線の両方を備えたプロセスだと説明していた。Carrizoでは、それをさらに進めて、配線層(Metal Layer)をより高密度かつ低消費電力に変更したという。 AMDのMacri氏は、Kaveriのプロセス技術について次のように説明する。 「Kaveriでは、デスクトップからモバイルまでの幅広い性能と電力のレンジをカバーする必要があった。これは非常に困難で、その中で我々は非常に高い性能と優れた電力のバランスを取った。デスクトップで素晴らしい性能を発揮しながら、モバイルで優れた省電力性を実現できるバランスだ。 そのために、Kaveriではプロセス技術の配線層も最適化した。Kaveriに採用したプロセスの配線層を見ると、配線の下の層は配線ピッチ(Metal Pitch)が狭いが、上の層に行くに従って配線ピッチが広くなっている。最下層の配線が最も幅が狭くて薄く、その上の層はやや幅広くなり、その上はさらに幅広くなる。言ってみれば、V字型のシェイプになっている。 かつては、(CPU向けプロセス技術の)配線層のV字は、Vの間の幅が非常に広がっていた。狭い配線ピッチから急速に広い配線ピッチと厚い配線厚へと広がる配線層の構成だった。それに対して、Kaveriでは性能と電力のバランスを取った配線を実現した」。 従来のCPU向けのプロセスよりも、より稠密で配線ピッチが詰まった配線層の構成にしたのがKaveriだった。AMDがKaveriで配線層を工夫したのは、CPUとしての性能と、SoCとしてのトランジスタ密度や電力効率を両立させようとしたためだ。しかし、それでも電力効率とトランジスタ密度が充分ではないと判断したAMDは、Carrizoではモバイルにフォーカスしてさらに電力効率と密度を向上させる配線層の構成を採用した。 よりモバイルに振って思い切ったプロセス技術や回路技術を盛り込んだのがCarrizoという位置付けだ。そこには、PC市場がモバイルに傾いているという判断もあると見られる。Macri氏は、Carrizoの配線層がKaveriと大きく異なると説明する。 「Carrizoのプロセス技術は、配線層(Metal Layer)の面ではkaveriに採用したものとは大きく異なる。プロセス技術の面から言えば、CarrizoはKaveriよりもBeemaにずっとよく似ている。プロセスの配線層の密度を上げることに集中して変更した。密度を上げると電力効率も上がるため、Carrizoでは、プロセス自体が非常に低電力となっている。 Carrizoでは、より低電力へと向かうために、我々は(配線の)V字シェイプをさらに変えるところからスタートした。Kaveriより(配線ピッチを)狭くした。詳細は話すことができないが、セルフォン向けのプロセスを見ると、VというよりTの字のような配線層のシェイプになっている。低電力に最適化すると、T字のように、より狭い配線ピッチ(Metal Pitch)の層を増やすことになる。 なぜなら、配線を稠密にすれば、配線が短くて済むようになり、ドライブ信号が移動する距離が短くなる。距離が短くなれば、キャパシタンスを減らすことができる。キャパシタンスを減らせば、ドライバ自体を小さくできる。ドライバを小さくできれば、スイッチングキャパシタンスも小さくできる。このように、きれいなフィードバックループを描いて電力が減る」。