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

AMDの7nmプロセス「ZEN 2」CPUコアのマイクロアーキテクチャ拡張

モジュラーアーキテクチャの次世代AMDサーバーCPU

 AMDは64コア/128スレッドの次世代サーバーCPU「Rome」を2019年に投入する。Romeは、「ZEN 2」マイクロアーキテクチャのCPUコアをベースとしており、TSMCの7nmプロセスで製造される。7nm/10nm世代で製造される初めてのx86 CPUとなる見込みだ。AMDは、米サンフランシスコで開催した技術発表イベント「Next Horizon」において、Romeの技術概要を発表、また、実シリコンによる動作デモも行なった。

64 CPUコアのRome

 Romeの特徴は、複数のダイを組み合わせたマルチダイ構成を取ったこと。AMDは、従来のZENベースのサーバーCPU「Naples(ネイブルズ)」でもマルチダイ構成を取った。しかし、Romeのマルチダイは、Naplesのそれとは大きく異なっている。

 Naplesでは、8個のCPUコアとI/O、メモリインターフェイスを1個のダイに収めて、4個のダイを組み合わせることで32 CPUコアのCPU製品を実現していた。それに対して、Romeでは、CPUコアのダイと、I/O系のダイの分割した。パッケージ内に1個のI/Oダイと、8個のCPUダイが収められている。8個のCPUダイはそれぞれ8個のCPUコアを搭載しており、合計で64個のCPUコアとなる。

Lisa Su氏(President and Chief Executive Officer, AMD)が掲げるZEN 2ベースのRome
Romeのマルチダイアーキテクチャ
ZEN 2のコンセプト

 マルチダイ構成でCPUコア数を増やしたRomeだが、個々のCPUコアのマイクロアーキテクチャも拡張されている。とくに浮動小数点演算のスループットは、CPUコアあたり2倍となっている。そのため、1個のCPUあたりの浮動小数点演算性能は、CPUコア数の倍増と浮動小数点演算スループットの倍増によって4倍に上がっている。

1ソケットあたり4倍の浮動小数点演算ピークスループット

 ZENは2017年に14nmプロセスで登場、その後、クライアントサイドでは2018年に12nmプロセスベースのZEN+を導入した。しかし、ZEN+のアーキテクチャ拡張はマイナーなものであり、基本は初代ZENのままだった。しかし、今回の7nmのZEN 2では、CPUコアのマイクロアーキテクチャにも大きく手が入った。

 ZEN 2では、浮動小数点演算のスループットはコア当たりピークで2倍に引き上げられた。クロックあたりの実命令実行数「IPC(Instruction-per-Clock)」も、ZEN 2で向上した。さらに、アーキテクチャ上のセキュリティ問題へのハードウェア対応もなされた。

ZEN 2の特徴

2倍のスループットとなった浮動小数点パイプライン

 浮動小数点パイプラインでは、128-bitから256-bitへとSIMD(Single Instruction, Multiple Data)幅を倍増させた。従来のZENマイクロアーキテクチャでは128-bit、つまり、単精度浮動小数点なら4-wayのSIMDユニットを2系統備えていた。256-bitのAVX命令を実行する場合は、内部的に2つ(オペランドがメモリの場合は4)のマイクロOP(CPUの内部命令)に分解していた。それに対して、ZEN 2では、256-bit SIMD命令をそのまま1パイプで実行する。単純にSIMD演算のスループットが倍になっている。

2倍のコンピュートスループットとなるZEN 2
AMDのCPUマイクロアーキテクチャの変遷
PDF版はこちら

 256-bit SIMD演算ユニットの導入に合わせて、レジスタは256-bitに拡張された。また、ロード/ストアユニットのデータパスも、従来の128-bitから256-bitへと倍増された。ZENでは、2ロードと1ストアのデータパスを備えているが、256-bitの2ロードと1ストアになったと推測される。

 AMDは、重いSIMD演算はGPUコアにオフロードし、CPUコア側のSIMDは128-bitのショートベクタに留めるという発想で設計されてきた。それに対して、IntelはCPU側のSIMD演算ユニットを256-bit、512-bitと拡張を続けて来た。しかし、ここへ来て、AMDもCPU側のSIMDを256-bitへと拡張し、ややIntel寄りの発想になって来た。

 トランジスタ密度の高い7nmプロセスへ移行したことで、回路規模の大きな浮動小数点演算ユニットを増やしても、CPUコアをある程度小さく保つことが可能になったと見られる。また、AMD自体が、一時のAPU(Accelerated Processing Unit)偏重路線から、ディスクリートのCPUとGPUも重視する路線へと転換したことも影響している。ソフトウェア側では、AVXへの対応がゆっくりではあるが進展しており、ハードウェアを拡張する意味が強くなっている。

 ちなみに、x86系命令のSIMDでも、512-bitのAVX-512命令はサポートしていないという。AVX-512では、マスクレジスタの導入など、コントロールフローの制御に大きな変更が入ったため、サポートは単純に2つのマイクロOPに分解するだけではできないからだ。FPユニットでは、このほか、ディスパッチ/リタイヤの帯域も拡張し、より多くの命令もインフライトで制御できるようになっている。

ZEN 2の浮動小数点演算パイプライン拡張

フロントエンドを拡張してIPCを引き上げる

 ZEN 2マイクロアーキテクチャでは、フロントエンドも拡張された。分岐予測を行なうプレディクタが向上された。ZENでは、分岐予測にパーセプトロンを使ったニューラルネットワーク分岐予測技術を採用している。過去の分岐それぞれに重みをつけて、分岐のパターンを解析する。ニューラルネットワーク分岐予測では、回路規模を増やした場合に、従来手法のように精度向上が頭打ちにならず、予測精度が向上しやすい。ZEN 2では、分岐予測のリソースを増やして精度を向上させた可能性がある。

 CPUフロントエンドでは、このほか、命令プリフェッチも改良され、命令キャッシュ自体も最適化された。また、x86系命令をデコードした後の内部命令であるマイクロOPをキャッシュするOPキャッシュはサイズが増量された。これまでのZENでは、OPキャッシュのサイズは2KマイクロOP分だったが、サイズが増やされた。下のスライドにあるマイクロタグ(Micro-Tags)は、命令キャッシュのタグとOPキャッシュのタグを紐付けるタグとなっている。

ZEN 2のフロントエンド

 マイクロアーキテクチャ面での拡張では、セキュリティも重要なポイントだ。CPU業界は、アーキテクチャ上のセッキュリティホールの相次ぐ発見で大きく揺れている。「Meltdown」や「Spectre」などが脅威なのは、これがバグ的なホールではなく、アーキテクチャ上の副作用的なホールであることだ。高性能CPUの高速化アーキテクチャに内在するホールであるため、対処が非常に難しい。

 幸いなことにAMDは、Intelと比べるとこれまでに見つかったホールが少ないが、SpectreのホールはZENにも存在していた。AMDはSpectreにソフトウェアでの対応をしていたが、ZEN 2ではハードウェアで対応する。現在、CPU業界は、高速化アーキテクチャに隠れていたセキュリティ問題への対応におおわらわの状況となっている。新しい高速化技術を導入するよりも、まず、CPUをセキュアにする枠組みやテクニックの導入に奔走している。AMDも、この問題への解答をZEN 2に実装してきたようだ。

ZEN 2のセキュリティ拡張

ZEN 4までの開発がオントラックで進行中

 AMDは7nmプロセスへと移行したことで、従来の14nmプロセスに対してトランジスタ密度を2倍に引き上げることが可能になった。増えたトランジスタ予算を使うことで、ZENマイクロアーキテクチャを大幅に拡張、性能と機能を向上させた。AMDによると同じ回路パフォーマンスあたりの電力は半分の0.5倍になっているという。チップ全体では、同じ電力時に性能は1.25倍になるという。

7nmプロセスによるCPUのベネフィット

 AMDはZENマイクロアーキテクチャとプロセス技術を今後もさらに発展させて行く。現在サンプル出荷中のZEN 2に続いて、EUV露光を使うプロセスと見られる7nm+で製造される「ZEN 3」の開発はオントラックで進行している。さらにその先の「ZEN 4」の開発も進行している。2世代から4世代の製品開発を平行させることで、次々により高性能な製品を送り出す強力なロードマップを維持する。

AMDのZENプロセッサコアのロードマップ