このページの本文へ

前へ 1 2 3 次へ

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

Ryzenが消費電力を削減できた仕組み

2017年03月13日 11時00分更新

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

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

 前回に引き続き、今回もRyzenの話だ。今回は、2017年2月5日~9日にかけてサンフランシスコで開催されたISSCC 2017におけるAMDの発表資料を元に、Ryzenの内部構造、主に回路的な工夫について解説しよう。

 このうちいくつかの項目については、連載372回で説明したHotChipの内容とやや被ることをあらかじめお断りしておく。

FPUの改良で消費電力を15%改善

 まず下の画像が基本的な要件である。x86命令レベルでは1サイクルあたり4命令のデコード構造だが、内部のmicro-opレベルでは1サイクルあたり6命令の処理が可能とされる。

Ryzenの概要。これとほぼ同じ内容が、体裁だけ変えてRyzenの説明会でも発表された

 これにあわせて、Register File(演算の際に利用するレジスタの物理的な格納場所)の数もExcavator比で大幅に増やされている。またキャッシュ/メモリーに対するロード/ストアーのバッファも合計168エントリー装備され、リード 12/ライト 6の処理ポートが搭載されるという重厚な構成である。

Ryzenの物理構造。このうち一番下のAggressive Vt swapping and downsizing algorithmsはおそらくPure PowerやPrecision Boostを指しているものと思われる

 このあたりまではHotChipsの説明とそう変わらないのだが、追加されたのは消費電力に関わる部分だ。IPCを40%以上改善するとともに、スイッチングの容量(≒スイッチングに要する電力)を15%以上改善する、としている。これを実現するための特徴として、以下の特徴が示されている。

  • MiMCapを採用(これは後述)
  • 内部は3種類の電圧供給とする
  • コア毎と2次/3次ャッシュは電圧プレーンを分離する(つまりコアとあわせると1つのCore Complexに5種類の電源プレーンが存在する)
  • 第3世代のAVFS(Adaptive Voltage Frequency Scaling)を採用する

 まず、コア(4コア+8MB 3次キャッシュ)の構成を、インテルのおそらくはSkylake世代と比較したと思われる数字がこちら。

コアの構成。普通に6T SRAM(6トランジスタで構成されるSRAM)を作ると、インテルが0.0588平方mmなのに対し、Globalfoundriesでは0.0806平方mmと37%ほどGlobalfoundriesの方が大きくなることからも、インテルがいかに攻めたプロセスを提供しているかがわかる

 同じ4コア/8スレッドであるが、2次キャッシュはSkylake比で倍の容量なのに、全体としてはRyzenの方がエリアサイズが小さく収まっている。

 実際に比較すると、Fin Pitch(FinFETのFinの間隔)は48nm vs 42nm、CPP(Contacted Poly Pitch)は78nm vs 70nmということで、トランジスタの最小サイズはZenの方が27%ほど大きくなる。

 そもそも昨今では、14nmプロセスと言いつつも、実際には14nmの寸法になっている部分は1つもない。その代わりにFin Pitch(プレナー型トランジスタの場合はTransistor Pitchなどとも呼ぶ)とCPPを使ってプロセスの大きさを判断することが普通だ。

 これに関しては以下の経験則(ASML Formula:ASMLの法則)がある。

ノードサイズ=0.14×(CPHP×MMHP)^0.67

 CPHPはCPPの半分、MMHPはFinPitchの半分をそれぞれ示す値で、上の数字を使うとRyzen(GlobalFoundriesの14LPP)は13.70nm、Skylake(インテルの14nm)は11.66nm相当になる。

 要するにインテルの方が攻めたプロセスを利用しているわけで、同じ回路サイズならばRyzenの方がエリアサイズが大きくなるはずであるが、これを小さくまとめることができた、というのがRyzenの特徴である。

 理由の一端は、FPU回りにある。Ryzenでは512bit幅のAVX-512をサポートしない。

RyzenのFPU回り。もっとも昨今では、512bitのFPUを入れたからといってそんなにエリアサイズが大きくなるわけではないのだが、それでも節約するに越したことはない、という判断であろう

 正確に言えばこれが実装されているのはXeon PhiとSkylake-EP/EXというXeon向けのコアのみで、デスクトップ向けのSkylakeやKabylakeでは無効化されているが、無効化されているだけで回路としては存在する。

 結果、例えばAVXレジスタの量は4倍に増えている。初代のAVXレジスタは、SSE用のXMM0~XMM15という16個のレジスタ(128bit幅)を256bit幅に拡張したYMM0~YMM15が用意されるが、AVX512用にはこれをさらに512bit幅にするとともに、数を倍にしたZMM0~ZMM31が用意される。このスペースは馬鹿にならない。

 当然FPUも倍の数が必要になるし、512bit幅のデータのロード/セーブを行なうために、ロード/ストアーユニットはRyzenの2倍にあたる4基が搭載される。当然データバスの幅もそれだけ確保しなければならない。

 こうして考えていくと、AVX512を搭載するためのコストはけっこう高いものになる。実際AMD CTOのMark Papermaster氏が、質疑応答の中で明確に答えてくれた。

 「AVX512の搭載は当初から考えていなかった。理由は2つある。1つはコストが高くつくことだ。もう1つは、もしそこまで浮動小数点演算性能が必要なら、我々は良いGPUを持っているから、こちらを使えば済む」

 このあたりの割り切りも、小さなダイエリアの実現に貢献していると思われる。

前へ 1 2 3 次へ

カテゴリートップへ

この連載の記事