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

AMDの次世代コア「Zen」などの概要が明らかに

~「Hot Chips 28」セッションにて、IBM製CPU「Power9」の概要も

AMDが次世代Zenの概要をさらに明らかに

 AMDが次世代GPUコア「Zen」のベールをさらに剥いだ。米クパチーノで8月21~23日に開催された半導体チップカンファレンス「Hot Chips 28」の最終セッションで、AMDはZenについてより詳細な発表を行なった。

AMDのZen CPUコアの全体像

 今回で28回目と歴史を刻むHot Chipsは、先端プロセッサの技術のお披露目の場となっている。高性能プロセッサのセッションは、最終日の最後に行なわれた。今回は、IBMの新CPU「Power 9」とIntelの「Skylake」、そしてAMDのZenのセッションが行なわれた。

 Zenのフロントエンドでは、アルゴリズムは明らかにされていないが、分岐予測が大幅に強化された。BTB(Branch Target Buffer)エントリ毎に2ブランチがサポートされ、演算パイプでも2個のALUが分岐ユニットを備える。命令側のTranslation Lookaside Buffer (TLB)は3レベルとなり、8エントリのL0 TLB、64エントリのL1 TLB、512エントリのL2 TLBとなった。

Zenの命令フェッチストラクチャ
Zenの命令デコーダ

 命令デコードは4命令/サイクルで、x86/x64命令を内部命令Micro-opに変換する。AMDアーキテクチャでは、伝統的にMicro-opはCISC(Complex Instruction Set Computer)の特性を残した複合opのMicro-opとなる。Micro-opはディスパッチステージで、オペレーション単位のシンプルなMicro-opに分解される。AMDは、以前は複合型のMicro-opを「Macro-op」と呼んでいたが、Zenではそうした呼称分けをしていないため、やや分かりにくい。

内部命令は複合型Micro-opとシングルオペレーションのMicro-opの2段階

 Zenではx86/x64命令は、ほぼ1対1でMicro-opに変換される。デコーダにコンプレックスとシンプルの差はない。デコーダからは、Micro-opキューに送られる。マイクロコードROMは、このMicro-opキューの下にある。また、x86のスタック操作のムダを省くために、ハードウェアスタックエンジンも設けられた。AMDはMicro-opをキャッシュするOpキャッシュも備える。可変長かつ可変フォーマットであるため、命令デコードが非常に重いx86/x64命令デコードをスキップすることで、性能を高めるだけでなく、電力を低減する。Opキャッシュはトレースキャッシュではなく、命令キャッシュ取り込み時のMicroタグに紐付けされる。

 キューからのMicro-opのディスパッチは、最大で6Micro-op/サイクルとなる。また、AMDはブランチフュージョンを行なって命令数を減らしている。Intelアーキテクチャではフュージョンはデコーダステージで行なうが、Zenではキューからディスパッチャの段階で行なわれる。

 Zenの整数系実行パイプは6本で、スケジューラは各14キュー。最大で6op発行/サイクルで、4個が演算パイプ(ALU)、2個のがロード/ストアパイプのアドレス生成(AGU)となっている。物理レジスタは168で、SMT(Simultaneous Multithreading)の2スレッドで物理レジスタも共有する。ALUのうち、1本は積算(MUL)を、1本が除算(DIV)を、2本がブランチを持つ。アウトオブオーダーのリタイヤは8-wideと幅広い。

 ロード/ストアは、72のアウトオブオーダロードをオンザフライでサポート。ストアキューも44エントリ備える。データ側のTLBは、64エントリL1 TLBと、1.5KエントリL2 TLB。L1とL2にプリフェッチャを備える。

Zenの演算ユニット

4コアで1クラスタを構成するZenプロセッサ

 浮動小数点演算エンジンは4パイプ。128-bit幅SIMD(Single Instruction, Multiple Data)の乗算(MUL)と加算(ADD)パイプのペアが2つとなっている。実際には、MULパイプは積和算(MAD)パイプで、FMA命令を実行できる。ただし、その時に、ADDパイプ側のレジスタポートを1つ使う。256-bit SIMD命令を実行する場合は2パイプを使う。x86/x64系のSIMD命令は、SSE/AVX1/AVX2とレガシのMMXも網羅する。

 ZenのFP SIMDユニットは、Intelの現在のアーキテクチャと比べると、スループットは半分となる。しかし、AMDは強力なGPUコアを汎用コンピューティングで使うことができる。浮動小数点系のスケジューラのキューは2段階となっている。

ZenのFP SIMDエンジン部
4CPUコアとL3キャッシュでZenのCPUコンプレックスは構成される

 今回のZenアーキテクチャは、4CPUコアで1個の「CPU COMPLEX」を構成している。L3キャッシュも含めた4CPUコア単位のコンプレックスで、8コア構成の場合はコンプレックスを2個にする。L3は各CPUコアに付属する4スライスに分かれているが、平均アクセスレイテンシは同じ。

 キャッシュ階層は3段階+opキャッシュ。L1命令キャッシュが64KB 4-way、L1データキャッシュが32KB 8-way、L2は512KB 16-wayと相対的に小さい。4コアで共有するL3キャッシュは8MB 16-wayで、従来はL3がシングルポートであったのに対して、Zenでは各CPUコア毎に32-byteのリードとライトが可能なポートが設けられている。Zenでもヴィクティムキャッシュ方式を取る。

Zenのキャッシュ階層
ZenのSMT(Simultaneous Multithreading)構成

 ZenのSMT(Simultaneous Multithreading)は2スレッドの並列実行で、実行パイプやキャッシュはスレッド間で完全に共有される。整数パイプがスレッド毎に分かれていた、従来のAMD Bulldozer系アーキテクチャとは異なる。Micro-opキューとリタイヤキュー、ストアキューはスレッド毎に分離されている。レジスタは物理レジスタのプールを両スレッドに動的に割り当てる。

NVIDIA GPUとのコヒーレントな接続が可能なPower9

 IBMは、巨大サーバーCPUの頂点であるPowerファミリーの最新CPU「Power9」を発表した。2013年のHot Chipsで発表した「Power 8」以来、3年振りとなる。投入は来年(2017年)。

 14nm FinFETプロセスで製造され、17層と異例なスタック数の配線階層のプロセスを使う。トランジスタ数は80億。120MBと膨大なeDRAMキャッシュを搭載し、オンチップのキャッシュ階層の帯域は合計で7TB/sとなる。

IBMのPowerもFinFETプロセスに
巨大ダイのPower9

 CPUコアのマイクロアーキテクチャを刷新、命令セットもPower ISA v3.0となった。CPUコアはスケーラブルなモジュラー設計となっており、4スレッドSMT(Simultaneous Multithreading)の「SMT4 Core」と、8スレッドSMTの「SMT8 Core」の両方のコンフィギュレーションが提供される。SMT4の場合は24コア/ダイ、SMT8の場合は12コアとなる。さらに、DDR4を8chダイレクトアタッチするか、メモリバッファを使うかのコンフィギュレーションの違いがある。

4スレッドコアと8スレッドコアの2種類のコンフィギュレーションが可能
CPUコアの構成とメモリインターフェイスで4種類のPower9がある。

 IBMは、Power 8でコプロセッサを接続する専用ポートを実装した。Power9では発展させた25GHz転送レートのBlueLinkを備える。BlueLink PHYは、NVIDIAの次世代チップ間インターコネクト「NVLink 2.0」をサポートし、NVIDIA GPUコアをメモリコヒーレンシを保って接続できるようになる。CPUを強化するだけでなく、ヘテロジニアスコンピューティングへも手を伸ばしている。

NVIDIAとの協力によるヘテロジニアスコンピューティング

IntelはSkylakeのフロントエンド拡張を明確に

 Intelは、1年前に発表した「Skylake」を周回遅れでHot Chipsで発表した。Skylakeは昨年(2015年)のIntelの技術カンファレンス「Intel Developer Forum(IDF)」で発表されたが、従来とは異なり、情報公開が非常に限られていた。1年明けた今回は、ようやくマイクロアーキテクチャの詳細が名言された。

 Intelは、CPUのマイクロアーキテクチャを段階的に改良しており、そのため、Skylakeでは非常に複雑なマイクロアーキテクチャとなっている。Skylakeは、CPUパイプラインのフロントエンドを大幅に拡張したことにアーキテクチャ上の特徴がある。具体的には、従来は4命令/サイクルだった命令デコードを、5命令/サイクルに拡張した。

大幅に拡張されたSkylakeのフロントエンド

 Intelアーキテクチャも、AMDと同様に、CISC(Complex Instruction Set Computer)の特徴をある程度残したまま内部命令Micro-opに変換する。ディスパッチの段階でオペレーション単位のMicro-opに分解する。また、Micro-opをキャッシュするuOPキャッシュを備える。uOPキャッシュからのディスパッチは従来4uOPs/サイクルだったが、Skylakeでは6uOPs/サイクルに拡張された。

 昨年(2015年)のIDFでは、これらの情報はセッションでは明かされず、アーキテクトに直接質問しなければ出てなかった。今回のHot Chipsでは、公式にフロントエンドの拡張が明らかにされた。Skylakeでは実行ユニット側はそれほど拡張されていない。

Skylakeコアのダイアグラム
Skylakeの実行ユニット