後藤弘茂のWeekly海外ニュース
AMD Zen 2 CPUコアの物理的な姿が明らかに
2020年2月28日 13:24
ZenとZen 2のCPUコアを比較すると……
AMDは、Zen 2のベールをまた1枚剥いだ。米サンフランシスコで2月に開催された半導体国際学会ISSCC(IEEE International Solid-State Circuits Conference) 2020において、ISSCCでZen 2コアの実装についての講演を行なった。「Zen 2: The AMD 7nm Energy-Efficient High-Performance x86-64 Microprocessor Core」(T. Singh, et al., IEEE International Solid-State Circuits Conference 2020)と題した講演のなかで、AMDは物理的なZen 2実装の概要を明らかにしている。
今回のISSCCで発表された7nmのZen 2のCPUコアは上の写真で、2017年のISSCCで発表された14nmのZenのCPUコアは下の写真だ。
AMDは、最近はダイレイアウトの写真から技術内容が漏れることを防ぐために、意図的にぼかしたダイ写真を公開している。この上の写真もそれで、詳細がわかりにくくなっている。とはいえ、高性能CPUは、CPUコア全体で論理合成するのではなく、大きな機能ブロックごとに矩形にモジュール化されている。ZenもZen 2も、20個ほどのタイルに分割されている。そのため、個々のユニットのサイズは比較と推測がしやすい。
両方のCPUコアの写真を比較してぱっと見て目立つのは、浮動小数点演算ユニットが大型化したこと。Zenでも浮動小数点演算ユニットは大きかったが、Zen 2ではますます巨大化している。これは、SIMD(Single Instruction, Multiple Data)演算ユニットが従来の128-bit幅から256-bit幅に倍増したためだ。
Zen 2では、32-bitの浮動小数点演算積和算ユニットと加算ユニットが16個並列動作する。演算ユニット数が2倍になったのだから、浮動小数点ユニット部分が大型化していることは不思議ではない。浮動小数点演算ユニットが、CPUコアのなかで最大のユニットで、ほとんどがロジックセルで占められていることから、この部分の消費電力が大きいことが推測される。
マイクロアーキテクチャの拡張どおりのダイエリアの増大
下は初代ZenとZen 2のマイクロアーキテクチャの比較だ。Zen 2で拡張された部分は赤い星をつけてある。拡張部分は多岐にわたるが、大きな拡張は、浮動小数点SIMD演算ユニットを256-bit化したことと、ロード/ストアユニットのパスを増やしたこと、分岐予測機構にTAGE分岐予測を加えてテーブルも大型化したこと、L1命令キャッシュと内部命令キャッシュのバランスを変えたこと、命令スケジュール回りのリソースを増やしたことだ。
このうち、トランジスタ数とダイエリアに大きなインパクトを与えるのは、浮動小数点SIMDユニットの拡張と分岐予測機構の拡張だ。実際、AMDが公開したCPUコア写真でも、この2つのユニットの増大が見て取れる。
逆にZen 2で小さくなったのはL1命令キャッシュ(Instruction Cache)。ZenではL1命令キャッシュは64KBだったのが、Zen 2では、L1命令キャッシュが32KBと半減している。L1命令キャッシュ面積の半減は、そのための当然の結果だ。
もっとも、Zen 2でのL1命令キャッシュの減少は、命令デコード後の内部命令のキャッシュであるOPキャッシュの増量とペアになっている。ZenではOPキャッシュの容量は2K個分の内部命令(Micro-OPs : マイクロオプス)だった。Zen 2では、OPキャッシュは4K内部命令へと倍増している。AMDは、命令系のキャッシュのなかで、L1命令キャッシュとOPキャッシュのバランスを変更したと説明していた。
Zen系アーキテクチャの場合、OPキャッシュに格納されるのは複数のオペレーションを1個の命令にまとめた複合型の内部命令だ。単一オペレーションの内部命令ではないため、内部命令フォーマットもより複雑になる。
もし、Zen 2のOPキャッシュに格納される内部命令が64-bit長なら、4K Micro-OPsの場合のキャッシュ容量は32KBの計算となる。内部命令長に制限は少ないので、もっと長い場合も考えられ、その場合は容量はさらに大きくなる。
ちなみに、タグもL1命令キャッシュとOPキャッシュが個別に備えており、両方のタグを紐づけるロジックとマイクロタグを備える。
Zen系CPUのコア写真のなかでOPキャッシュがどの領域に含まれているのかは、じつは明示されていない。命令デコーダか分岐予測のどちらかのユニットエリア内だと推測され、どちらのエリアにも大きなSRAMブロックが存在する。
いずれにせよ、命令デコーダか分岐予測のブロックからは、OPキャッシュの増大分の面積を差し引いて比較する必要がある。
TAGE分岐予測の導入で多少は拡大した分岐予測ユニット
分岐予測は、Zen 2マイクロアーキテクチャで大幅に拡張されたブロックの1つだ。Zenの「パーセプトロン(Perceptron)」分岐予測に加えて、「TAGE(テイジ : TAgged GEometric history length branch prediction)」分岐予測が実装されている。
TAGEは、分岐予測の履歴に一定長ごとにタグをつけ、異なる履歴長ごとに予測を行なうことを可能にする。多段階で予測を行ない、最長の予測マッチの結果を取るというアルゴリズムだ。
そのため、TAGEでは履歴テーブルにタグビット群を加える必要があり、分岐予測の履歴SRAMのサイズが増大する。また、分岐予測ユニット自体も並列化されるため、その分のトランジスタも増える。
ダイエリアも当然増えるはずだが、ダイ写真を見るかぎり、インパクトはそれほど劇的ではないように見える。少なくとも、浮動小数点演算ユニットのような大型化はしていない。というか、もともとZenの分岐予測ユニットは非常に大きいため、TAGEによる大型化もそれほどは目立たない。
Zen 2のそのほかのユニットは、相対的なサイズがZen世代からそれほど変わっていないように見える。もっとも下にあるL1データキャッシュはZenでもZen 2でも32KBで、ほかのユニットと比較した相対サイズに大きな変化はない。データキャッシュの上に位置する整数演算ユニットも同様だ。ロード/ストアユニットは、パスは256-bitへと倍増されアドレス生成ユニットも1個追加された。
しかし、ダイエリアに与える影響は小さいはずで、実際にユニットの相対サイズに変化が少ない。命令スケジューラは、スケジューリングリソースや物理レジスタが増大されたためか、若干大きくなったように見えるが、増大比率は小さい。
こうして見ると、物量的にはZen 2はZenに対して、浮動小数点ユニット部分にトランジスタを大幅に増量し、分岐予測回りのトランジスタも増やし、命令系のキャッシュのトランジスタ配分を変更したCPUコアと考えることができる。ダイエリアの増大部分は、それらのユニットに集中している。
Zen 2のCCXのアーキテクチャ
Zen 2のCPUは、サーバーや高性能クライアントCPU向けは4個のCPUコアと16MBの共有L3キャッシュのクラスタ「Core Complex (CCX)」で構成されている。7nm Zen 2のCCX 16MB L3のダイエリアは31.3平方mm、トランジスタ数はISSCCでの発表では約19億。
それに対して、14nm ZenのCCX 8MB L3のダイエリアは44平方mmでトランジスタ数は14億。同じL3容量を想定して比較すると、14nm Zenに対して7nm Zen 2はほぼ半分のサイズとなっている。
CCXはCPUコアとL3のスライス4つで構成されている。Zen 2 CPUコアと512KB L2キャッシュの合計ダイエリアでは推定で3.5平方mm程度。CPUコアとL2に、共有L3キャッシュの4分の1である4MBキャッシュとキャッシュ周辺回路の4分の1を加えた面積は7.83平方mmで、合計のトランジスタ数は4億7,500万となる。
AMDは、サーバーや高性能クライアントCPU向けでは4CPUコア+16MBのL3キャッシュを搭載したCCXを設計。モバイルクライアントAPU(Accelerated Processing Unit)向けには4CPUコア+4MBのL3キャッシュを載せた小型版CCXを設計した。
今回は、AMDはこの2バージョン以外、2CPUコア+4MB L3キャッシュのバリュー版CCXも可能であることを明らかにした。
Zen 2の2CPUコア+4MB L3版CCXの使い道にはクエスチョンがある。なぜなら、PC向けでは使い道が少ないからだ。PC向けでは2CPUコアの製品はうまく当てはまる場所は少ないうえに、経済的ではない。Zen 2世代ではCPUコアサイズが小さいので、バリューセグメントであっても4CPUコア+4MB L3でまかなえてしまう。
そして、2CPUコアの製品は、7nmプロセスではまったく経済的ではない。なぜなら、7nmプロセスになってもスケールダウンしないI/O周りの回路の比率が大きなチップになってしまうからだ。チップのほとんどがI/O回りの回路となる“もったいないチップ”ができてしまう。
7nmプロセスでは、ある程度の量のCPUコアとGPUコアを搭載することが、経済的なダイエリアバランスのチップとなる。そもそも、7nmプロセスでバリューカテゴリの製品は、現状ではあまり妥当とは言えない。
では、4コアCCXと2コアCCXを組み合わせて6CPUコアの製品を作ることはどうなのか。
6コアのダイを設計したいなら、これは合理的だが、PC向けではあまり経済的ではない。8CPUコアのダイを設計して、そこから6CPUコア版を派生させたほうが経済的なケースが多いからだ。歩留まり的にもそのほうが都合がいい。では、PC以外にはどんな用途が考えられるのか。
もっとも考えられるのは、カスタム製品だ。もし、カスタム製品で、CPUコアは6個で十分というニーズがあるなら、4コアCCXと2コアCCXの組み合わせがリーズナブルとなる。そして、AMDの抱えているカスタム顧客を見ると、そうしたニーズに適合しそうなケースがある。ゲーム機だ。もし、ゲーム機が6個のZen 2コアを求めているなら、4コアCCXと2コアCCXを組み合わせが妥当になるだろう。
チップ設計では6Tセルハイトのスタンダードセルを採用
物理設計ではAMDは今回、Zen 2でカスタムスタンダードセルでの設計を行なったことを明らかにした。AMDは以前から、スタンダードセルにカスタムセルを加える設計方法を取ってきたが、今回は、もっとスタンダードセルやプレイスメント(セルの配置)などに手を加えた。
スタンダードセルは、各セルの高さ「セルハイト(Cell Height : セル高)」でタイプ分けされる。セルハイトは、ローカル配線層、メタルピッチ(配線間隔)のメタル(配線)トラック数で表される。
今回AMDは、Zen 2では、スタンダードセルに6本のメタルトラックを配置できるセルの高さの6トラック(6T)セルを採用したことを明らかにした。14nmプロセスでは、AMDはCPUコアの多くの部分に10.5Tのセルを採用していた。つまり、AMDはプロセスの微細化だけでなく、スタンダードセルのスケールダウンも行なっていることを明らかにした。
高さが小さな6Tセルで、高性能なCPUを実現するために、AMDはマルチハイトのセルを多用していることも明らかにしている。簡単に言えば、物理的な設計スキームに大幅に手を入れたのがZen 2だ。この部分はIntelと共通している。
また、今回のAMDの発表によって、TSMCのパフォーマンスロジック向けの配線層(Metal layer)構成では、M1のピッチ(配線間隔)が57nmであることも明らかになった。今回のAMDの発表での、TSMCのN7の配線層の各層のピッチは以下のようになる。
- M0 40nm
- M1 57nm
- M2 40/44nm(1.0-1.1となっていた)
- M3 40/44nm(1.0-1.1となっていた)
- M4 80nm
- M5 80nm
- M6 80nm
- M7 80nm
- M8 80nm
- M9 80nm
- M10 126nm
- M11 126nm
- M12 720nm
- M13 720nm