後藤弘茂のWeekly海外ニュース

32コアのモンスター、第2世代Ryzen Threadripperのアーキテクチャ

32コア/64スレッドのRyzen ThreadripperがQ3に登場

 32コア/64スレッドのRyzen Threadripperが、今年(2018年)第3四半期に登場する。ついに、ハイエンドデスクトップCPU(HEDT:High-End Desktop)CPUは、32コアに達する。AMDは台湾で開催されているCOMPUTEX TAIPEIに合わせて開催したプレスカンファレンスで、ZEN+世代の「2nd Gen Ryzen Threadripper」が32コアになることを明らかにした。現在のRyzen Threadripperの16コアから倍増する。

 32コアのRyzen Threadripperは、GLOBALFOUNDRIES 12nmプロセスのZEN+コアベース。4個のダイで構成される。現在予想される第2世代Ryzen Threadripperの構成は下の図のようになる。Infinity Fabricで接続された4個のダイそれぞれに8個のZEN+ CPUコア、4チャネルのDDR4メモリインターフェイス、64レーンのPCI Expressとなる。第1世代のRyzen ThreadripperとソケットはTR4で互換となるため、DRAMチャネル数とPCI Expressレーン数は同一になる。CPUコア数だけが2倍となる。

予想されるRyzen Threadripperの構成図
PDF版はこちら
第2世代Ryzen Threadripper。4個のダイがアクティブになる
第1世代のRyzen Threadripperは、4メモリチャネルと64レーンのPCI Expressを備えている

 HEDT市場は、現在ヒートアップしている。少し前まで、HEDTのCPUコア数は8コアまでだった。2016年にIntelは10 CPUコアをHEDTに投入した。しかし、昨年(2017年)、AMDが16コアのRyzen Threadripperを発表、Intelが対抗して18コアのCore i9をリリース。今年(2018年)は戦いはAMD 32コア、Intel 28コアとなっている。

 HEDTについては、3年間の間にCPUコア数が4倍という、異常なレートで上がっている。AMDによると、2年前は300ドルレンジが4コアで、1,000ドルレンジが8~10コアだったのが、現在は300ドルが8コアとなっているため、より多くのコア数の製品が上位の価格帯に必要になったという。

 4ダイで32コアの第2世代Ryzen Threadripperの懸念材料の1つは、CPUコア数が32に増えたのに、メモリインターフェイスは増えていないこと。メモリ帯域とコンピューティングのバランスでは、コンピューティング側へと大きく偏ることになる。また、消費電力面とクロック周波数も懸念材料だ。AMDは、まだ32コアRyzen ThreadripperのTDP(Thermal Design Power:熱設計消費電力)レンジと動作周波数を明らかにしていない。

 また、AMDは現行の2ダイ16コアのRyzen Threadripperも継続して販売する。32コアのRyzen Threadripperは上位バージョンとなる見込みで、価格レンジをどうするのかも注目される。おそらく、中間の24コアバージョンも登場すると推測される。このあたりは、EPYCと似たような展開が予想される。EPYCも、4ダイで、異なるCPUコア数のバリエーションが提供されている。

プロフェッショナルユーザーが第1のターゲット

 AMDは、メモリ帯域とコンピューティングのバランスについては、32コアの第2世代Ryzen Threadripperのターゲットとするのは、コンピューティング性能を必要とする顧客であるため、大丈夫だろうとみていることを明らかにしている。ビデオ編集やデータサイエンティスト、AI(人工知能)などのプロフェッショナルなユーザーを想定しているようだ。

 ちなみに、プロユーザーをターゲットとするため、Ryzen ThreadripperではECCが有効にされており、32コアでも継続される。

AMDはRyzen Threadripper 32コアのデモはゲームではなくコンテンツ作成で行なった

 第2世代のRyzen Threadripperは、従来と同じX399チップセットマザーボードでサポートされる。AMDはすでに全てのX399マザーボードで32コア版Ryzen Threadripperをテストしており、問題がないことが判明している。BIOSのアップデートだけで32コアに載せ替えることが可能だという。クーラーについても、もともと第1世代Ryzen Threadripper向けがオーバースペックで250Wレンジのサポートだったので、問題はないとしている。AMDとしては、狭い市場なので、チップセットとマザーボードのインフラの変更は避けたいようだ。

 今回発表された32コアRyzen Threadripperは、既存のRyzen Threadripperを置き換えるものではないという。32コアは、製品スタックを上に積み上げるもの、というのがAMDのビューだ。昨年(2017年)リリースした16コアまでのRyzen Threadripper1は継続したまま、さらに製品ラインナップに32コアまでを加える。

 AMDは、HEDT市場のCPUコア数を、初代Ryzen Threadripperで一気に2桁にしたところ、市場の反応がよかった。サーバーCPUコアクラスのコンピューティング性能を安く手に入れたいと考えているユーザーが一定数いることがわかった。そこで、AMDはさらにコア数を積み上げることにしたという。

AMDは発表会で32コアになることを明らかにした
X399マザーボードはRyzen Threadripper Gen2でも継続サポートする見込みだ

 そのため、32コアRyzen Threadripperの価格レンジも上に積み上げられることになりそうだ。AMDは、現在のところRyzen Threadripper製品系列の新しい価格ラインは明らかにしていない。32コアはどの程度の価格レンジになるのか、現行のRyzen Threadripperが値下げされるのか、そういった情報は、まだ公式には出ていない。

 そもそも、Ryzen Threadripperは選別品だ。RyzenやEPYCと同ダイではあるが、その中で、クロック/電力の高いダイを選別している。半導体チップには、野菜と同様に、個体ごとに出来不出来がある。同じ周波数で動作させる場合でも、あるダイは1V、別なダイは1.2Vといった具合に、必要な電圧にばらつきがある。正確にはコア毎にもばらつきがある。

 そして、もっとも効率の高いダイは、高クロック品のCPUとして出荷した場合も一定のTDP(Thermal Design Power:熱設計消費電力)に押さえ込むことができる。また、効率の高いダイは、Ryzen Threadripperのような多コア品として出荷した場合も、一定のTDPの中で、より多くのコアをより高い動作周波数で動作させることができる。

EPYC 32コアの場合のコアの電圧ばらつき

 第2世代Ryzen Threadripperは、最大32コアとなったことで、コア当たりの電力効率がさらに求められるようになった。製造されるダイのうち、上位数パーセント(初代Ryzen Threadripper発表時は5%程度と説明していた)がRyzen ThreadripperになるとAMDは説明している。第2世代のRyzen Threadripperは、さらに選別された品になる可能性がある。ダイ数が増えてパッケージが複雑になるというわけでなく、選別という意味でも高付加価値の製品であり、AMDとしては、一定以上のプライスタグをつけなければならないだろう。

マルチダイアーキテクチャが産んだ32コア構成

 32コアRyzen Threadripperは、AMDのZEN CPUのマルチダイアーキテクチャの利点がフルに活かされた製品だ。AMDは、ZEN CPU世代では、複数のダイで製品を構成するアプローチを採用したことで、CPUコア数などのフレキシブルな変更が容易になった。CPUコア数の異なるダイを作るのではなく、1種類のダイだけを製造し、そのダイを組み合わせることで複数の製品ラインを産み出す。

 第1世代のZEN製品群では、1個のダイでメインストリームのデスクトップCPU、2個のダイでハイエンドデスクトップCPU、4個のダイでサーバーCPUを実現した。3系統の製品が、いずれも基本的に同じダイ「Zeppelin(ゼッペリン)」をベースとしている。第2世代のZEN+ではEPYCは提供されないが、基本は同じアプローチとなる。

 AMDによると、32コアのCPUダイを作るよりも、8コアのCPUダイを作って4個のダイを組み合わせる方が、製造コストは59%に抑えられるという。

ISSCCで説明されたAMDのマルチダイアーキテクチャ
日本の横浜で今年(2018年)4月に開催されたチップカンファレンス「Cool Chips」でAMDが明らかにしたコスト比較

 1種類のダイから製品を派生されるアプローチを取ったAMD。しかし、AMDの第1世代のRyzen Threadripperは、ちょっとおかしな製品だった。2ダイで16コアの製品のはずなのに、パッケージには4個のダイが載せられていた。上のスライドでは、下の中央が4ダイのサーバー向けCPU「EPYC(Naples)」で、下の右側が2ダイのRyzen Threadripperだ。Ryzen ThreadripperもEPYCと同じように4ダイがパッケージに載っている。しかし、上のスライドにあるように、2つのダイは“ダミー(Dummy)”とされている。

 AMDは、第1世代Ryzen Threadripperでは4ダイがあるものの、そのうち2個がアクティブだと説明している。下のスライドのように、2個のダイは使われていないとされていた。Ryzen Threadripperは、機能的には、2ダイの製品で、2ダイ分のフィーチャしか使われていない。

ISSCCでAMDが説明したRyzen Threadripperの概要。ダイのうち2つが有効となっている

32コアのRyzen Threadripperの構成

 Zeppelinダイは、8個のCPUコア、2チャネルのDDR4、32レーンのPCI Express/高速I/Oを載せている。初代Ryzen Threadripperでは、このうちCPUコアのすべて、DDR4チャネルを2つともすべて、高速I/Oの32レーン全てを使っていた。2ダイの第1世代のRyzen Threadripperは、すべてが2倍となり、合計で16コア、4チャネルDDR4、64レーンPCI Expressの製品となっていた。

シングルダイのRyzen
4ダイのEPYCは、デュアルソケットもサポートする

 では、第2世代のRyzen Threadripperのアーキテクチャ的な構成はどうなるのか。AMDは、第2世代Ryzen Threadripperでのダイ毎のDRAMチャネルやPCI Expressの構成を明らかにしていない。しかし、DRAMインターフェイスは、合理的に考えればダイ毎に1チャネルが有効になると推測される。PCI Expressも各ダイに分散される可能性は高い。

 つまり、各ダイごとに1チャネルのDDR4、16レーンのPCI Expressが有効にされた構成だ。この仮定の場合も、4個のダイ合計で4チャネルDDR4、64レーンのPCI Expressになる。EPYCの構成と比較すると、ダイ当たりのメモリチャネルを半分に、高速I/Oを半分にした構成となる。

EPYCと第2世代Ryzen Threadripperの比較
PDF版はこちら

 もちろん、ダイのうち2つにDDR4インターフェイスとPCI Expressを集中させる構成も考えられないわけではない。この場合は、ダイのうち2つだけがメモリとI/Oに接続されており、残りの2つのダイはCPUコアだけのダイとなる。ただし、この構成ではメモリアクセスレイテンシや帯域などが問題となる。

 例えば、メモリを持たないダイが、メモリを持つダイの2つのメモリチャネルにアクセスする場合、メモリ帯域とデータ帯域がマッチしない。通常のコンピュータとしての常識で考えれば、各ダイにDRAMインターフェイスを分散される構成になると推測される。

Ryzen Threadripper 32コアで想定される2つの構成パターン
PDF版はこちら

 いずれにせよ、どちらのパターンでも、ダイ間の接続トポロジーは、EPYCと同一となると推測される。それは、AMDアーキテクチャの場合、4ダイの接続は1パターンに限られるからだ。

Zeppelinダイアーキテクチャ

 初代Ryzen ThreadripperのベースとなっているZeppelinダイは、下の図のようなアーキテクチャとなっている。ZEN+世代でも基本は変わっていない。つまり、2nd Gen Ryzen Threadripperのダイも下のZeppelinとほぼ同じ構成だ。Zeppelinは、スイッチファブリックのInfinity Fabricでコンポーネントが接続された構造となっている。AMDはISSCC(IEEE International Solid-State Circuits Conference)や日本で4月に開催されたチップカンファレンス「Cool Chips」でZeppelinアーキテクチャの詳細を明らかにしている。

Zeppelinの構造図
PDF版はこちら
Cool Chipsで公開されたZeppelinのブロックダイアグラム
Zeppelinダイの概要

 Infinity Fabricは、AMDのコヒーレントデータファブリックとマネージメントファブリックの総称だ。データファブリックは、共通のプロトコルを使いながら、異なる物理層実装が可能な設計となっている。Zeppelinには、データ用に3種類の異なるInfinity Fabricが実装されている。オンダイでCPUや各インターフェイスを結ぶInfinity Scalable Data Fabric(SDF)、CPUパッケージの中でダイ間を接続する「IFOP (Infinity Fabric On-Package)」、CPUパッケージ同士を接続する「IFIS (Infinity Fabric Inter-Socket)」の3種類だ。

Zeppelinのコンポーネントのロジカルな接続関係

ダイ間を接続するIFOPインターフェイス

 パッケージ間接続のIFISは、実際にはPCI Express/SATAと同じ物理層を使っている(転送レートはIFIS時の方が高い)。言い換えれば、マルチプロトコルのシリアルI/Oで、Zeppelinに合計32レーンが実装されている。Ryzen Threadripperの場合は、CPU同士の接続は考えないため、シリアルI/OはIFISではなく、すべてPCI Expressとして使われている。ちなみに、IFISとして使われる場合は、オンダイのInfinity Fabric (Scalable Data Fabric)に直結されるが、PCI Expressの場合はI/Oコントローラを経由する。

 異なるダイの間を接続するIFOP (Infinity Fabric On-Package)は、32-bit幅インターフェイスでレイテンシの少ないクロックフォワーディング、電圧振幅のシングルエンデッド信号。Zeppelinでは、ダイ上にIFOPインターフェイスが4個配置されている。初代Ryzen Threadripperでは2リンク、第2世代Ryzen Threadripperでは3リンクが使われる。2pJ/bit(picoJoule/bit:ピコジュール/ビット)と、極めて低いエネルギーのI/Oだ。

ZeppelinのIFOPインターフェイス

 第1世代Ryzen Threadripperは、EPYCの4ダイのうち2ダイを無効にしているとも噂されていたが、AMDの説明によると、EPYCとRyzen ThreadripperではIFOPの接続形態が異なる。2ダイのRyzen Threadripperは、2つのダイの間を2リンクのIFOPで接続している。それに対して、EPYCはダイ間は1リンクのIFOPの接続となっている。つまり、第1世代のRyzen Threadripperのダイ間のIFOPの帯域は、EPYCの2倍だ。実際には転送レートも異なるため、EPYCのリンクあたり42.6GB/s帯域に対して、Ryzen Threadripperはリンクあたり計算上51.2GB/sで、2リンクは発表では102.2GB/sとなっている。

EPYCとRyzen Threadripper Gen1の概要の比較
PDF版はこちら

 では、第2世代Ryzen Threadripperでは、ダイはどのように接続されるのか。想定できるのは、EPYCとほぼ同じトポロジで接続されることだ。もとも可能性が高いのは、下の図のような構造になることだ。4個のダイはIFOPで相互接続され、各ダイに8コアずつ。そして、メモリチャネルとPCI Expressも各ダイに分散される、可能性が高い。次の記事で、よりローレベルでアーキテクチャを検討してみたい。

Ryzen Threadripper Gen2の推定ブロックダイアグラム。DRAMインターフェイスが各ダイに分散されていると仮定した場合
PDF版はこちら