新たに明らかになった内部構成
続いてはInternalの話である。2016年8月に内部構造について、ある程度説明を行ったが、今回は部分的にではあるが、もう一段細かい話が出てきた。
実は2017年2月5日からサンフランシスコで開催されたISSCC 2017においてAMDは"Zen: A Next-Generation High Performance x86 Core"という発表を行っており、ここで回路技術に関していろいろな情報が開示されている。今回の説明は、このISSCCにおける発表をベースとしたものである。ただISSCCのレポートもしていないので、まとめて紹介したい(Photo20)。
IPCの向上が、Excavator比で52%になったという話(Photo21)は、HotChips 28のPaperを元にした先のレポートでも紹介した通り。細かなところでは、以前には無かったいくつかの情報(分岐ミスのリカバリが3cycle、同時にRead 12/Write 6の更新が可能)が追加された。
|
Photo21:ちなみにISSCCのPaperではここは40%になっていた。おそらくCineBenchの結果を比較したところ、52%まで引きあがったため、こちらの数字を前面に押し出したもので、設計目標的には40%以上の改善だったのだろう |
また、コアの内部構造も明らかにされた(Photo23)。今回はダイ全体(Photo24)や4コアのクラスタ(Photo25)も公開されている。パイプライン構成に関して新しい話はなかったので割愛するとして、分岐予測(Photo26)に関しては、1つの分岐元から複数の分岐アドレスに飛ぶ場合をサポートしていることが今回明らかにされた。またITAが512entryという事も今回初めて明らかにされている。
L2 Cacheは性能と消費電力のバランスを取るため、データやTagは6T SRAM、ステートの保持のみ8T SRAMという構成になっているのが面白い。L1 Data Cache/Instruction Cache、及びL3へのバス幅は何れも32Bytesとなっている。
ついでL3(Photo28)だが、こちらは省電力のために高密度のマクロセルを利用して設計されており、また2MBごとにClock Gatingを行っている。このスライドにはないが、ISSCCのスライドによれば、CoreとL3 Cacheの間にはFIFOが設けられているとのことだ。
ところでこのL3はExclusive構成になっており、なのでL2とL3の排他制御を行う必要がある。このために用意されるのがShadow Tag Macros(Photo29)で、L2のTagの4分の1の内容と状態をL3 Slice側に保持する。検索に当たってはまずL2 Tagとの比較を行い、ここでHitするようであれば、L2にアクセスしてきちんとTag検索を行うという仕組みであり、これによってL2アクセスの帯域を節約でき、消費電力を76%削減可能になったとする。
さまざまな技術の積み重ねで省電力化をじつげん
続いては省電力機構に関して(Photo30)。まず物理設計であるが、競合製品と比較して10%以上エリアの節約が可能になっているという(Photo31)。ちなみに中央の図は、何で消費電力を削減したかという話で、アーキテクチャの改良で31%、FinFETの採用で70%、PurePowerの搭載で40%、PowerDeliveryの改良で129%の性能/消費電力比の改善が可能になったと説明する。
|
Photo31:実はこの数字からダイサイズの推定も可能である。Area(4コア+L3)が44平方mm、という数字を先のPhoto24に当てはめて換算すると、ダイサイズは206平方mmほどになる。8コア製品としてこれはかなり小さい数字であり、4core+GPUのKabyLake(推定183平方mm)の1割増しにすぎない |
全部積み重ねると7倍近い改善になる計算だが、実際はここまでは上がらない。スライドの下には実際の測定データもあるが、AMD FX-8300やAMD A12-9800と比較した場合、
製品名 | Cinebenchの結果とTDP | 1W当たりのパフォーマンス |
---|---|---|
FX-8300 | 552cb@95W | 5.81cb/W |
A12-9800 | 331cb@87W | 3.80cb/W |
RYZEN 7 1700 | 1410cb@116W | 12.16cb/W |
といった結果になったそうで、A12-9800と比較すると3.2倍ほど改善した計算になる。
Clock配線に関してはコアとL3キャッシュを分離、更に2レベルのClock Gatingを施すことで全体の効率を50%以上向上、Clock Meshの消費電力も全体の24%から14%まで引き下げたとしている(Photo32)。
また利用するセルライブラリも、高速なものの利用率は少なく、比較的消費電力の少ないものを多用しているという(Photo33)。こうした改善により、消費電力に占める、実際に計算処理に利用される電力がExcavatorコア比で35%改善したとのことだ(Photo34)。
|
Photo33:縦棒は左軸で、水色がレイテンシ、緑色が消費電力で、これは低いほど良い。折れ線が、利用している比率である。高速だけど消費電力の多いflop1やflop2は、利用比率は5%前後、そこそこ早くてそこそこ消費電力の多いflop3が10%程度、バランスの取れた(というか基準になる)flop4が20%程度で、残りは低速だけど消費電力の低いflop5で構成される |
ファームファクタにあわせた最適化を実現
ところでPhoto21で、"Fanless Notebook to Supercomputers"というキーワードがあるが、これを実現するためにZenコアでは3つの最適化ポイントを設けている(Photo35)。デスクトップは一番右、ファンレスクライアントが一番左と言う訳だ。
|
Photo35:一番左は電圧を落としていった時に当然ゲート速度も遅くなるので、こちらで動作周波数と消費電力の関係が決まる。一方、一番右は配線の速度で決まることになる。中央が周波数/電力で決まる形で、それぞれの領域別に最適化の方法が異なることになる |
これを実現するために、ZENには「Pure Power」や「Precision Boost」「XFR」といった工夫が盛り込まれている。それぞれの概略は本間文氏の記事に紹介されているが、これらを実現するための機能について、もう少し説明があった(Photo36)。
PurePower(Photo37)は、内部の回路をクローズドループでモニターしながら随時フィードバックをかけることで、その動作周波数を実現するために必要なぎりぎまで電力を落とす仕組みである。これを実現するために、1,300ものクリティカルパスを測定するほか、電力センサー48個、温度センサー20個、電圧ドループ検出9個という膨大なセンサーを利用していることが公開された。
またコア毎に動作周波数が異なるから、当然必要とする電圧も異なる。そこで、それぞれのコア毎に独立して電圧を供給できる仕組みを搭載している(Photo38,39)。
|
Photo38:電源から12Vが供給され、これはCPUソケット周辺のスイッチングレギュレータを利用して一旦0.9Vに変換された後、オンパッケージで搭載されたLDO(Low Drop Out)コントローラでコア毎に最適な電圧が供給されることになる |
|
Photo39:LDOの効果。従来だと一番動作周波数の高いコアにあわせて電圧を決めていたから、平均して5%程度高い電圧が供給されることになっていた。ところがRYZENではLDOをコアごとに搭載することで最適化が図れたと言う訳だ |
ちなみにLDOを利用した理由として、Intelが利用するようなFIVR(Fully Integrated Voltage Regulator)は回路が複雑すぎて大型化する上、効率もそう高くないとしている(Photo40)。LDOにしてもFIVRにしても、回路構成上どうしてもコンデンサを必要とするのだが、RYZENではここにMIMCap(Metal-Insulator-Metal Capacitor)を採用したことを既に明らかにしている(Photo41)。
|
Photo40:RYZENのLDOはW/2W/4W/8W/...../2^13Wと14の出力ポイントがあり、これを組み合わせて16383通り(0は存在しないので16384ではない)の電圧調整が可能。FIVRはもっと連続的に変更できるが、エリアサイズとか回路の複雑性を鑑みると効果が薄いと判断したようだ |
最後がPrecision Boostで、これまでよりも細かい頻度で動作周波数と電圧を制御する仕組みであるが、これに加えてXFRという機能があり、条件が許せば更に100MHzをプラスすることになる(Photo42)。
|
Photo42:ここについてはおおむね以前の説明と差はない |