後藤弘茂のWeekly海外ニュース
AMDが次世代CPU「Zen」アーキテクチャの概要を発表
2016年8月18日 22:00
Zenの詳細は来週のカンファレンスで発表
AMDは、高性能CPU市場でのシェアを奪還するための切り札として、次世代x86 CPU「Zen」を今年投入する。Zenは、現在のBulldozer系CPUコア「Excavator(エキスカベータ)」より、40%もクロック当たりの整数命令実行性能が高くなる。また、AMDのCPUでは初めてSMT(Simultaneous Multithreading)をサポートし、2スレッドを1コアで混在させて実行可能となる。14nm FinFETプロセスで製造されるため、AMDの28nmの現行APUや40nmの現行CPUより性能/電力が飛躍する。
AMDは、米サンフランシスコでプレスカンファレンスを開催、トップのLisa Su(リサ・スー)氏(President and Chief Executive Officer,AMD)と、技術面を率いるMark Papermaster(マーク・ペーパーマスター)氏(Senior Vice President and Chief Technology Officer,AMD)が登場して、Zenを発表した。同社は、来週のチップカンファレンス「Hot Chips」でZenの詳細を発表予定だが、そのダイジェストを前倒しで公開した。
Zenは、現行のBulldozer系CPUとは異なり、完全にゼロから設計された新CPUコアだ。Bulldozerでは、2CPUコアが1モジュールとなっているが、Zenは独立したCPUコアの構成となっている。AMDはZenコアを、まず8コアのCPU製品「Summit Ridge(サミットリッヂ)」として提供する。また、32コアの「Naples(ナポリ/ネイブルズ)」もサーバー市場に投入する。AMDのハイエンドデスクトップ&サーバーCPUは、長らく新製品不在の状況だった。Zenベースの製品ファミリで一気に盛り返す。
正攻法のマイクロアーキテクチャで攻めるZenプロセッサ
AMDは、Zenアーキテクチャを、高い性能、スループット、効率を念頭に設計したと説明する。従来のBulldozer系アーキテクチャは、シングルスレッド性能をある程度抑えて、電力とダイエリア当たりの性能を追求した。それに対して、Zenはシングルスレッド性能を追求しつつ、性能効率を高めた点が異なる。
CPUアーキテクチャを見ると、その設計思想はよく分かる。Zenは、ストレートフォワード、つまり、奇をてらわずに正攻法でアーキテクチャを組み立てている。4命令/サイクルの命令デコーダで、x86/x64命令を内部命令マイクロオプス(Micro-Op/uOP)にデコード。uOPをインテジャ(整数)系とFP(浮動小数点演算)系の大きく2つに分かれたスケジューラストラクチャにディスパッチする。ディスパッチ帯域は最大6 uOPS/サイクルだ。
整数系は4演算パイプと2アドレス生成パイプ、FP系はSIMD(Single Instruction, Multiple Data)のFP乗算とFP加算のペアが2つの4パイプ。メモリ階層は、64KBのL1命令キャッシュと32KBのL1データキャッシュ、512KBのL2キャッシュと、コア間で共有する8MBのL3キャッシュで、さらに命令デコーダの下流に、uOPキャッシュを備える。アーキテクチャ的には、Intel CPUと設計が似通った部分も多い。
Bulldozer系のCPUコアは、スレッド当たりの整数演算パイプが2本だった。それに対してZenは整数演算パイプは4本と倍増した。AMDの現在のCPUコア「Excavator」より、クロック当たりの整数系の命令実行性能IPC(Instruction-per-Clock)は40%も高くなる。ちなみに、K10までの旧AMDアーキテクチャは整数演算パイプが3本。4本の整数演算パイプはAMDアーキテクチャでは初となる。
マイクロオプスキャッシュを備えたZenフロントエンド
Zenのフロントエンドは、L1命令キャッシュは64KBの4-wayで、L1からの命令フェッチは32バイト幅となる。命令デコーダは4-wayで、最大4個のx86/x64命令をデコードできる。従来通り命令フュージョンを実装しているなら、分岐命令などを融合させることで最大で5命令分をデコードできることになる。x86/x64命令をデコードして生成した内部命令マイクロオプス(Micro-Op/uOP)は、マイクロオプスキューでキューイングされる。フロントエンドでは、分岐予測も強化された。
Zenのフロントエンドで、従来のAMDアーキテクチャになかったのは「マイクロオプスキャッシュ(uOPs Cache)」。デコードしたuOPsをキャッシュする。可変長で多様な命令フォーマットであるため命令デコードが複雑となるx86/x64命令のデコードをスキップして、デコード済みのuOPsをキャッシュすることで、効率的な命令フィードを実現する。電力消費の多い命令デコードをスキップするため、省電力面での効果も大きい。AMDはラージuOPキャッシュだと説明していることから、数10命令程度のループキャッシュではないことが分かる。
Intelも同様の仕組みを持っており、uOPsキャシュのタグが、L1命令キャッシュのタグとひも付けされている。L1命令キャッシュをマップするヒットロジックを採用することで、トレースビルドなどを行わないシンプルな(ただしムダも多い)制御を行なっている。現在のSkylakeの場合、uOPキャッシュには64バイト分のL1命令キャッシュフェッチウインドウをマップしている。
マイクロオプスキューからは、1サイクルに6個のuOPsをスケジューラ機構にディスパッチできる。もし、命令デコーダが4 uOPs/サイクルしかデコードできなければ、デコード帯域とはずれることになる。もっとも、uOPキャッシュからのフェッチが最大6 uOPsの可能性もある。IntelのSkylakeも、マイクロオプスキャッシュにヒットした場合は、最大6 uOPsをフェッチできる。従来のBulldozer系CPUコアは、スケジューラに対して4 uOPsディスパッチ。そのため、AMDはZenでは1.5倍の命令イシュー帯域だと説明している。
ちなみに、x86/x64 CISC(Complex Instruction Set Computer)命令を実行するAMD CPUは、従来はマイクロオペレーションを複合させたMacro-OPを、スケジューラの段階でオペレーション単位のMicro-OPに変換するスタイルを取っていた。内部的にもCISC風だった。Zenの場合は、まだどういったuOPsの構成になっているか分からない。
4本の整数演算パイプのZenの整数コア
Zenの整数コアの構成は4個の整数演算パイプに2個のロード/ストアパイプの構成。従来のBulldozer系コアは2個の整数演算パイプと2個のロード/ストアパイプ。そのため、AMDはZenでは実行リソースが1.5倍になったと謳っている。パイプを増やしただけでなく、AMDは命令のスケジューリングウインドウも1.75倍にした。ただし、これは、1コア当たりの比較の可能性がある。AMDはZenでは、より大きな1コアで2スレッドを走らせる構造であるため、簡単に比較はできない。さらに細かく見ると、Zenコアはスタックオペレーションのためのハードウェアエンジンを持つ。Move命令のエリミネーションも行なう。
FP演算パイプについては、まだ分かっていない。AMDはZenでは、浮動小数点演算性能も大幅に向上すると説明している。AMDのスライド上での構成は、乗算ユニットが2つに加算ユニットが2つ。乗算ユニットと加算ユニットを組み合わせることで積和算命令を実行すると見られる。SIMD(Single Instruction, Multiple Data)ユニットだが、SIMD幅はまだ分かっていない。256-bitが4ユニットと予想される。
ロード/ストアはアドレス生成ユニットが2ユニット。ただし、2ロードと1ストアを並列実行できるとされている。L1データキャッシュは32KBで8-way。データキャッシュにはプリフェッチャがあるが、Zenではこれが大幅に強化されたという。より複雑なデータパターンをプリフェッチできると予想される。
スレッド並列をSMT(Simultaneous Multithreading)に切り替えたZen
キャッシュ階層は、L0に当たるuOPキャッシュと、そこそこの容量のL1、相対的に小さめのL2、大容量でコア間で共有のL3の4段階の構成。L2を小さくしたことで、L2アクセスレイテンシは大幅に短縮されたと見られる。キャッシュ階層は、Intel CPUのキャッシュ階層とよく似ている。キャッシュ帯域は、L1命令キャッシュからのフェッチが32-byte(256-bit)/サイクル。L1データキャッシュからは、2つの16-byte(128-bit)ロードと1つの16-byte(128-bit)ストアを並列実行可能だ。L2からの帯域はL1命令キャッシュとL1データキャッシュがそれぞれ32-byte(256-bit)/サイクル。L3とL2の間も、32-byte(256-bit)/サイクルとなっている。
スレッド並列性では、ZenはSMT(Simultaneous Multithreading)を実装し、2スレッドを混在実行できる。Bulldozer系アーキテクチャでは、スレッド毎に独立した整数コアを備えることで2スレッドを並列実行していた。Bulldozer系では、FPユニットやL2キャッシュを2スレッドで共有し、メインの整数ユニットはスレッド毎に独立させた構成だった。それに対して、Zenでは、大きなシングルコアで、2スレッドを並列実行する。IntelのHyper-Threadingと基本は同じだ。
2つのスレッドはそれぞれ独立したプログラムカウンタを持ち、アーキテクチャルレジスタファイルも個別となる。実際にはアーキテクチャルレジスタは、フィジカルレジスタファイルにリネーミング機構でマップされる。それぞれのスレッドの命令は、アウトオブオーダ実行エンジンの中で並列実行可能となる。
デスクトップ向けは8コアのSummit Ridge
Zenの製造プロセス技術は14nmノード。GLOBALFOUNDRIESの14LPPだと見られる。AMDのCPUやAPU(Accelerated Processing Unit)では、初めてのFinFET 3Dトランジスタのプロセスとなる。AMDは、APUが28nm、CPUが40nmプロセスであったので、14nmのFinFETプロセスへの移行は大きなジャンプだ。リーク電流(Leakage)が下がるだけでなく、一定の動作周波数時もアクティブ電流も下がるため、大幅に省電力化される。
AMDは、動作周波数当たりの電力消費は現在のCPUコア Excavatorと同等でありながら、IPC(Instruction-per-Clock)が40%も上がると強調する。また、AMDは今後はZenコアを発展させる見通しで、より命令実行効率を高めた「Zen+」が予定されている。
AMDはZenコアをトップツーボトムで投入して行く。まず製品化するのは、ハイエンドデスクトップ向けの「Summit Ridge(サミットリッヂ)」。8コアで16スレッドのCPU製品だ。ソケットプラットフォームは「AM4」となる。メモリはDDR4、I/OはPCI Express gen3、さらにまだ公開されていないチップ間インターコネクトを備える。ゲーミングやVR(Virtual Reality)、ワークステーションなどの市場を狙う。
さらにAMDは、32コアのサーバーSoC(System on a Chip)「Naples」も公開。SMTで64スレッドとなる、モンスターCPUだ。構成からすると、4個のSummit Ridgeのダイを連結している可能性もある。AMDが公開したのはNaplesの2ソケットサーバーだった。
さらにAMDは、今後はZenベースのAPU(Accelerated Processing Unit)も投入。よりメインストリームのデスクトップやノートPC、さらには組み込みまでZenをもたらすという。AMDにとって、ここしばらくはインパクトのあるCPUやAPUに欠けた厳しい時期だった。AMDは、Zenの投入で、状況を塗り替えようとしている。