Execute/Load&Store

ここからはOut-of-Orderで実行される部分である。ALU系について示したのがPhoto07となる。ALU/AGUに関しては独立性が高い(ALU0~ALU3がほぼ同等の機能を実装している)ということもあってか、それぞれが別個のScheduling Queue(それぞれ14 Entry)を保持し、この先はOut-of-Order発行/完了という形になる。

Photo07:Retirementは、ALU0~3がそれぞれ1つと、LS(Load Store Unit)から4つの、同時に8つの命令のRetirementをハンドリング可能としている

Retirement Queueは192 entryが用意されており、これはSkylakeと同等である。またここで出てくるMove Eliminationであるが、これはRegister FileのRenamingでMoveを実装することで、実際にはALUなりAGUなりを動かさないという技法である。

mov a,bという命令は、bの内容をaに移すわけだが、Move Eliminationを利用することで実際にはbレジスタとして扱われていたRegister Fileをこの命令処理後はaレジスタとして扱う、という名前の付け替えだけで処理するという仕組みだ。これは省電力化に貢献するとしている。

次がLoad/Store Unit(Photo08)だ。AGUそのものは2つしか搭載されていないので、この点はSkylakeに比べてやや見劣りするのだが、その一方でL2の帯域を32Bytes/cycleまで高め、Load Queueが72 entries、Save Queueが44 entriesとかなり深く(ちなみにSkylakeはそれぞれ72/56 entries)していることから、従来のAMD系プロセッサよりもLoad/Storeの効率をずっと高くするように工夫していることが伺える。またData TLBについてはL0を設けず、その代わりにL1が64、L2が1536 entryということで、Skylakeにかなり近いところまで強化されている。

Photo08:ちなみにL1とL2に関してはInclusive Cacheの構成である

FPU(Photo09)は2段階のスケジューラを経てそれぞれの実行ユニットに渡される形になるが、Register Fileは160と多く、またRetire Queueも192 entriesで8wideというのはALU側よりもむしろ重厚と言える。またAES Unitもダブルで搭載されることになった。

Photo09:AVX512命令はそんな訳でサポートされないが、AVX256命令に関して言えば、むしろSkylakeなどよりも長時間ピーク性能を出しやすいかもしれない

L3 Cache

L1/L2まではcoreごとで独立であるが、L3は全てのcoreで共通のUnified Cache構成である(Photo10)。このL3に関しては、効率的な利用を目指し、L2との間でVictim Cache(Exclusive Cache)の構成を取ることが明らかとなった。

Photo10:とにかく目を引くのが、L2との帯域が32Bytes/cycleあること。Skylakeの場合、L1こそ32Bytes/cycleだが、L2は22Bytes/cycle、L3は14Bytes/cycleほどでしかない。L1~L3まで全てが32Bytes/cycleというのは性能にどのくらい大きなインパクトがあるだろう?

実際のところ、L1は無視するにしても、L2はcoreあたり512KBを持つから、4 coreで2MBとなる。Inclusive Cache構成だと実質6MB分しかL3に意味がないことになり、これを嫌ったための措置であろう。この方式の欠点はL3 Access時のLatencyが増えることだが、比較的大容量のL2を搭載してL3アクセスの頻度を減らすとともに、L2/L3間の帯域まで32Bytes/cycle化したことで、この欠点を補って余りある効果が得られるとAMDは判断したのだろう。このあたりは性能に対して、結構なインパクトがありそうなポイントである。

そのL3であるが、4 core+8MBのL3で一つのCPU Complex(CCX)を構成することも明らかになった(Photo11)。AMDのイベントでは8 core/16ThreadのBroadwell-EとZenでの比較も行われているが、Zenベースで最初に投入されるプロセッサであるSummit Ridgeには8 core製品が用意されることが分かっている。普通に考えると8core製品はトータル16MBのL3を搭載するという計算になる。

Photo11:この4つのCoreとL3は専用のFabricで相互に接続されているそうだ。ちなみに8 coreの構成ではCCX同士は専用のInterconnect(HyperTransportではない)を利用して接続するという話だった

競合である8core/16ThreadのBroadwell-E(おそらくCore i7-6900Kと思われる)は20MBのL3を持つから、16MBであっても不思議ではない。一方、CCXの中では全てのCoreが同じLatencyでL3にアクセス可能となっており、このあたりはRing Busを経由するCore iシリーズとの違いとなっている。

その他

主要な発表内容はこのくらいだが、ほかにもこれまでに分かっていることをついでに紹介する。まずSMTの構成であるが、共有構成と言いつつも意外に手が入っている(Photo12)。

Photo12:緑が完全にThread別に用意されている部分、赤が完全に共通部分、青/水が共通ながら制御が入っている部分である

SMTそのものは極端に言えばProgram CounterといくつかのRegister FileだけをThreadごとに用意すれば実装は可能であるが、効率を考えるともう少しきちんとした実装とした方が良い。Zenでも少し凝った方法で実装されている。Sharedの部分は当然というか、Tag付きでThread別に処理を行えるようになっているし、Renamingではアルゴリズムによる優先順位付きとなっている。

このあたりは、Intelの方が少し簡単というか、Renamingの対象になるRegister Fileを2分割してそれぞれのThreadに割り当てる方式を採っているが、Zenではもう少し手をかけたやり方でRegister Fileの割り当てを変えているようだ。ただMicro-Op QueueやRetire Queue、Store Queueなどは完全にThread毎に2つに分割するという、Intelと同じ方式であった。

また新命令(Photo13)であるが、AVX512を除くとほぼSkylakeと同様の命令をサポートしているが、さらに新しくCLZEROとPTE Coalescingといった命令が追加されている。ちなみに「ほぼ」Skylakeと同様と書いたのは「TSX命令がサポートされているかどうか」がいまひとつ不明確なためだ。質疑応答でもこれに関しての言及はなかった。現状におけるTSX命令の普及状態を見る限り、Zenでこれをサポートする必要性はあまりないという気はするので、実装されていないように思える(Venkataramanan Kumar氏によるGCC Patchを見てもTSX命令のサポートが見当たらない)が、この段階での断言は避けたい。

Photo13:大体、一番下の"We support all the standard ISA including..."にTSXが含まれて居ない辺りがAMDの立場を表現している気もしなくはない

最後にもう1つだけ。今回はCPUアーキテクチャ寄りの話ということで、SoCの実装に関する話は一切なかったのだが、Photo03にも出てくる通り、省電力では"Aggressive clock gating with multi-level regions"という文言が最初に出てくる。

ただ、質疑応答で明らかになったのだが、Clock GatingはサポートしつつもPower Gatingは未実装とのことであった。Power Gatingが必要ないほどにClock Gatingが効果的(あるいはGlobalfoundriesの14LPPはLeakが十分少ない)のか、それともいまの14LPPでClock Gatingを実装するのは技術的に難易度が高い(or何かしら問題がある)のかは不明である。

また同じPhoto03のLow Powerの一番下では、"Low Power Design Methodologies"を採用しているとあるが、これはCarrizoで採用したようにHigh Performance向けのCell LibraryではなくLow Power向けのCell Libraryを利用したということだろう。

Carrizoの場合、前世代のKaveriでは13TrackのCell Libraryだったのを9Trackに変更し、実装面積と消費電力の両方を削減した(ただしその分動作周波数は落ちた)。ただ14LPPは、10.5Tと9TのCell Libraryしか用意されていないので、恐らくは9T/78CPPを利用した、という意味だと推測できる(Photo14)。

Photo14:これは2015年のARM TechConにおけるSamsungのプレゼンテーションからの抜粋。CPPはContact Poly Pitch(≒Gate Pitch)で、10.5T/84nmがUltra High Performance、9T/84nmがHigh Performance、9T/78nmがHigh Densityとなっている。9T/78Tが最も高密度で、当然省電力だが、性能は伸びにくい