このページの本文へ

前へ 1 2 3 次へ

ロードマップでわかる!当世プロセッサー事情第370回

発表会で判明したZenの仕様 AMD CPUロードマップ

2016年08月22日 11時00分更新

文● 大原雄介(http://www.yusuke-ohara.com/) 編集●北村/ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

 今週はIDFの開催に合わせて明らかにされたKaby Lakeのアップデートや、14/10nm FinFETプロセスの状況などを紹介しながらインテルのCPUアップデートを……と思ったのだが、IDFの裏番組でAMDがZenのアーキテクチャーと動作デモを行なうという、なかなかインパクトのある発表会を開催したので、急遽こちらの情報をもう少し掘り下げて解説したい。

 Zenのアーキテクチャーの推定は連載332回連載333回で説明しているが、今回の発表はこの推定がまるっきり違ったわけではないことを裏付けてくれるものとなり、筆者的には胸を撫で下ろしていたりする。

 ということで、まずは発表資料から説明していきたい。ちなみにスライドは超横長(3:1フォーマット)で構成されていて、そのまま掲載すると横が長すぎで縦方向が潰れてしまうので、スライドの一部を抜き出す形で掲載させていただいている。

「Summit Ridge」のクロックあたりの命令実行数が40%向上

 まず下の画像がコア全体の構成となっている。x86のデコーダーは4 issueであるが、やはり予想通りμOp Cacheを1次キャッシュとは別に装備する形になっている。

Zenの構成図。もともとZen世代ではIPCを40%向上させるとしており、確かにこの程度の構成は必要になるだろう

 画像に“Micro-op Queue”と記されているのは、要するにDispatch Unitであって、最大6つのμOpを発行可能である。

 実行ユニットはALU×4、AGU×2、FPU×4の10個であるが、おもしろいのはALU/AGUについては各実行ユニット毎にスケジューラーが別に用意されていることだ。

 AGUはともかくとしてALUに関しては、4つのALUが対称性が高い(どのALUでも同じように命令を処理できる)と想像される。逆にFPUに関しては、必ずしも対称的な構成ではないため、まとめてスケジューリングを行なわないといけないと判断される。

 ちなみにその他の特徴としては「分岐予測をさらに強化」「Scheduler WindowをExcavator比で1.75倍に」といった事柄が挙げられており、1スレッドあたりのIPCを大幅に引き上げられたとする。

 一方キャッシュ周りだが、命令1次キャッシュは64KB、データ1次キャッシュは32KBとなっており、さらに統合2次キャッシュが512KB用意される。ここまではコア毎のキャッシュで、それとは別に外部に共有3次キャッシュが最大8MB搭載される形だ。

明記はされていないが、もうExclusive Cacheの構成はやめて、一般的なInclusive Cacheになったと思われる。コアあたりのBandwidthが5倍、という話は計算方法がよくわからないので留保にしておきたい

 なんというかインテルのCPUの構成に非常に近くなっている。実のところ、性能だけ考えればこの方がずっと良い。

 それにも関わらずAMDがこれまで複雑なキャッシュ構成にしていたのは、伝統的にCPUパイプラインに要するトランジスタ数が多すぎて、インテルと同じキャッシュ構成を取ろうとするとダイサイズが大きくなりすぎてしまうので、どうしてもキャッシュ容量を少なめにせざるを得なかったという経済的な事情による部分が大きい。

 ただZen世代では14LPPのお陰で、キャッシュをインテルと似たような構成にしても、現実的なダイサイズで収まるようになった、というあたりではないかと思われる。

 そのキャッシュの帯域であるが、完全に32バイト/サイクルでコア~3次キャッシュまでがつながることになった。

これを見ると、1次キャッシュの帯域を32バイト/サイクルまで引き上げた結果、発熱過多に陥ったBarcelonaコアを思い出してしまい、ドキドキする

 これは特にSSE/AVX命令の処理などでのスループット向上に明確に貢献すると思われる。もっともこのSSE/AVXに関しては、Skylake世代とは異なりAVX256命令を1サイクルあたり1命令(FMAを1命令と数えた場合)実行する構成であることが帯域からも確認できる。

 データ1次キャッシュは16バイト/サイクルのLoad×2と16バイト/サイクルのStoreを同時に行なえる構成になっており、これはAVX256命令1個分に相当するからだ。

 SkylakeはAVX512命令を実行するために、Load/Storeユニットを合計4つ搭載しているが、ここまで無理する必要はないと判断したようだ。

 またSMT(Simultaneous Multi Threading)構成を取ることは前から明らかになっていたが、改めて確認された。2つのスレッドにあわせ、Program Counterなどの「プログラムからアクセスできる」レジスターだけは二重で用意されるが、内部は共通という、ハイパースレッディングなどと同じ実装方式である。

実際これだけ実行ユニットが多いと、プログラムによっては十分に実行ユニットを使いきれないケースもあるはずで、そうした場合にSMTの構成は効果的である

前へ 1 2 3 次へ

この連載の記事