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ではこれが大幅に強化されたという。より複雑なデータパターンをプリフェッチできると予想される。