後藤弘茂のWeekly海外ニュース
最大250Wレンジが予想される32コア版Ryzen Threadripper
2018年6月14日 11:00
最大250Wレンジの32コアRyzen ThreadripperのTDP
AMDは、ハイエンドデスクトップCPU(HEDT:High-End Desktop)市場に、32コアのRyzen Threadripperを投入する。12nmプロセスのZEN+コアをベースにしている。第2世代のRyzen Threadripperによって、AMDはデスクトップに最大32コアまでの製品ラインナップを揃える。2016年前半までは、HEDTのCPUコア数は1桁台だったのが、一気に膨れ上がる。
32コアのRyzen Threadripperの動作周波数とTDPは、この製品の最大の疑問点だ。第1世代のRyzen Threadripperでは、16コア版は基本クロックが3.4GHz、ブーストクロックが4GHz、TDPは180Wだった。単純に倍増させると360Wになるが、さすがにそれは難しい。
実際、AMDは、現行のRyzen Threadripperのクーリングソリューションは250Wまで対応できるとヒントを出している。そのため、32コアRyzen Threadripperも、最大でも250W止まりであることが予想される。AMDとしては、実際の製品版のテストで、プラットフォーム側が250Wでパスできるのなら、250Wで投入する可能性が高い。
ちなみに、EPYCの32コア版はTDPが180Wで、ベースが2.2GHz、ブースト時は最大で3.2GHzだ。動作周波数は、このケースではTDPによって制約されている。そのため、TDPが250Wまで引き上げられるなら、動作周波数はさらに上げられるだろう。ブースト周波数は、ピーク周波数で動作するコア数が限られるため、上げやすい。ベース周波数がどこまで引き上げることができるかがポイントとなる。
好材料の1つは、製造プロセスが12nmになっていること。初代のRyzen Threadripperは14nm LPPプロセスだった。AMDは12nmでも14nmプロセスと同じセルハイトのスタンダードセルライブラリを使っているため、12nmになってもダイサイズはシュリンクされない。しかし、12nmは14nmに対して、プロセス自体がチューンされているため、性能/電力の特性は、初代のRyzen Threadripperより向上する。ちなみに、GLOBALFOUNDRIESは、12nmプロセスの技術詳細を来週の「VLSI Symposia」で発表する予定となっている。
AMDはRyzenについては、同じ動作周波数でも14nmに対して12nmプロセスでは、平均で駆動電圧が50mV下がると説明している。これはアベレージの数字であり、選別品の特性はさらに良好になっている可能性がある。また、コアアーキテクチャのパフォーマンス向上も図られている。そのため、AMDは、12nmのZEN+のRyzen 7 2700は、14nmのZENの1700より、同等の電力時に16%もパフォーマンスがアップするとしている。似たような対比は、ZEN+ベースのRyzen Threadripperについても当てはまるはずだ。
ちなみに、性能については、AMDは12nmのZEN+でキャッシュアクセスレイテンシを短縮している。Ryzen Threadripperについても、同様のキャッシュアクセスの高速化が図られている。
AMDはRyzen 2000番台で、ブースト制御の向上を図った。CPUコアのブースト制御が「Precision Boost 2」となり、ブーストされるCPUコア数が可変となった。同じフィーチャは第2世代Ryzen Threadripperにも搭載されるという。16コアの現行Ryzen Threadripperでは、CPUコアブーストは、16コアすべてのオールコアブーストと、4コアのピークのブーストの2モードだった。
しかし、Precision Boost 2では、中間のコア数のブーストがサポートされる。32コアのRyzen Threadripperの場合は、おそらく31コアから9コアまでの段階的なブーストがサポートされると推測される。よりなめらかなブーストが実現される。
ちなみに、ZENでは、デジタルLDO(Low Drop-Out)タイプの電圧レギュレータによるコア単位の電圧制御を行なっている。CPUコア毎に個別の電圧供給を行ない、チップ全体での電力消費の低減を図っている。オンボードのプラットフォームボルテージレギュレータ(VRM)から、CPUコアの最も高いVIDで入力されたコア電圧RVDDを、各コア毎に個別のVDDに落とし込む。CPU毎に最適な電圧となるため、電力効率が向上する。
マルチダイを前提に設計されているAMDのCPU
AMDがRyzen Threadripperのコア数を引き上げることができるのは、CPU設計において、マルチダイのアーキテクチャを取っているからだ。1種類のCPUダイの組み合わせによって、CPUコア数の異なる複数の製品系列を産み出す。AMDは、自社製品を複数のダイの複合にして行くビジョンを持っており、Ryzen Threadripperでは、その強味が活かされている。32コアまでの製品を、低い開発コストと低い製造コストで提供する。
初代のZENのCPUは、「Zeppelin(ゼッペリン)」と呼ばれるダイをベースにしていた。ZEN+世代でも、ダイアーキテクチャの基本は変わらない。Zeppelinダイは、8個のCPUコア、2チャネルのDDR4、32レーンのPCI Express/高速I/Oを載せている。また、CPUパッケージ上でZeppelinダイ同士を接続するインターフェイス「IFOP(Infinity Fabric On-Package)」も備える。IFOPが、Ryzen Threadripperのカギとなる技術で、基本アーキテクチャはZEN+世代も同様となる。
Zeppelinのダイでは、IFOPが4個、ダイ上に分散して配置されている。4個のダイを並べた時に、それぞれのダイ上のIFOPの間の距離がうまく最短になるように配置されている。パッケージ上でダイのうち2個は180度回転させて配置するようになっている。Zeppelinダイの長辺に2個隣接して並んでいるIFOPは、4ダイを並べた時に内側にくるIFOPだ。
この2個のIFOPのうち、ダイ中央側になるインターフェイスは、斜めのクロスするダイ接続に使われる。もう1つは、横に並んだダイとの接続に使われる。一方、逆サイドの長辺に配置されている2個のIFOPは、外側から回り込む配線に使われる。
上のEPYCの配線の例を見ると、外側になる2つのIFOPは、DRAMインターフェイスの両側に配置されており、DRAMの配線を邪魔しないように配線できるようになっている。EPYCではパッケージの2層を使って、IFOPの配線をすべてと、左上と右下のダイの各2チャネルのDRAMインターフェイスの配線が実装されている。見てもわかる通り、4個のIFOPのうち3個だけが使われている。これは、DRAMの配線を避けてダイ同士を接続するためで、IFOPは1個が無効になるが、配線がずっと容易になっている。
EPYCでは、PCI Express/IFISと残りの4チャネルのDRAMインターフェイスは、別な2配線層に配置される。PCI Express/IFISはダイの対角に配置されているため、これも見事にDRAMの配線を避けている。
32コア4ダイのRyzen Threadripperでも、IFOPの配線は上のEPYCと同様になる。4個のIFOPのうち3個を使って4ダイが接続される。ただし、DRAMチャネルと高速I/Oが半分となるので、パッケージ基板の配線はずっと楽になるはずだ。IFOP配線は、クロスする配線があるのでどうしても2層必要になる。しかし、PCI Expressは短い方の配線だけで済むはずで、最もやっかいなDRAMにいたっては、2層分の配線が不要になる。全体に、EPYCよりかなりパッケージ配線は楽になるはずだ。
Ryzen Threadripperではメモリ帯域とダイ間帯域をマッチ
IFOPは、Ryzen ThreadripperとEPYCで共通する技術で、マルチダイアーキテクチャの要だ。Ryzen ThreadripperとEPYCでIFOPの帯域が異なるのは、Zeppelinアーキテクチャでは、Infinity FabricやIFOP、IFISはDRAMに同期して動作するためだ。同期させることで、データ転送のレイテンシを最小にし、バッファ類を最小にしている。
EPYCはターゲットのメモリ転送レートが2,667Mbps、それに対してRyzen Threadripperは3,200Mbpsもターゲットに含めている。そのため、IFOPの双方向のデータ帯域のピークはEPYCで42.6GB/sで、Ryzen Threadripperで51.2GB/sとなる。
Zeppelinのダイ内部のInfinity Scalable Data Fabric(SDF)からは、「Coherent AMD Socket Extender (CAKE)」インターフェイスを介して、IFOPやIFISのSerDesとデータが交換される。CAKEは各サイクル毎に128-bitの「FLIT(フリット:Flow control unit)」にエンコードして、異なるタイプのI/Oにフィットさせる。IFOPは、CAKEクロックの4倍のレートでデータ転送を行うことで、32-bit幅のインターフェイスで128-bit FLITを転送している。
Ryzen Threadripperでは、2ダイの間でのメモリ転送がフル帯域でできるように構成されている。上の図のようになっている。ちなみに、以前の記事でこの図を掲載していたが、数字を間違えており、これが正しい。
IFOPは、1つのリンクが片方向転送の32-bitリンクのペアで構成されている。1リンクは、Ryzen Threadripperの場合は片方向が計算上25.6GB/sとなる。第1世代Ryzen Threadripperの場合は、2リンクIFOPでダイが接続されているため、片方向51.2GB/sとなる。一方、DRAM側は、DDR4 3200の場合は、3,200Mbps転送でx64のインターフェイスが2つ。両メモリチャネルともメモリリードなら、2つのx64で合計51.2GB/sとなる。つまり、2チャネルのDDR4のメモリリードを、そのままの帯域でもう片方のダイの転送ができる。
とはいえ、ダイをまたいだDRAMアクセスにはレイテンシが生じる。AMDは、同じダイに接続されたDRAMをニアメモリ(Near Memory)、別なダイに接続されたDRAMをファーメモリ(Far Memory)と呼んでいる。第1世代のRyzen Threadripperでは、ニアメモリアクセスは78ns、ファーメモリアクセスは133nsとされていた。
Ryzen Threadripperのメモリアクセスモードと32コア構成
メモリアクセスレイテンシの問題を軽減するため、初代Ryzen Threadripperは2つのメモリアクセスモードを備えている。1つは、「UMA (Uniform Memory Access)」または「Distributed Mode(ディストリビューテッドモード)」とAMDが呼ぶモード。もう1つは、「NUMA (Non-uniform Memory Access)」または「Local Mode(ローカルモード)」とAMDが呼ぶモードだ。
UMA/Distributedモードでは、メモリアクセスはインターリービングで4チャネルに同時に分散アクセスする。アプリケーションが4メモリチャネルのメモリ帯域をフルに活かすことができるが、半分のアクセスはレイテンシが長くなる。
一方、NUMA/Localモードでは、メモリアクセスはそのアプリケーションが走っているCPUコアのダイに接続されているメモリチャネルが優先される。NUMA/Localモードでは、基本のメモリアクセスは2チャネルとなるため、アプリケーションあたりのメモリ帯域は半減する。しかし、メモリアクセスのレイテンシが短縮されるため、一部のゲームなどでは性能が上がる。
DRAMレイテンシとメモリアクセスモードを考えると、AMDは4ダイ32コアのRyzen Threadripperで、各ダイごとにDRAMインターフェイスを1つずつ有効にする方が合理的だ。4つのダイそれぞれにDRAMインターフェイスがある場合は、どのCPUコアも、ニアメモリを持つため、メモリレイテンシを最短にできるからだ。
しかし、その場合は問題もいくつかある。まず、DRAMアクセスがニアメモリは1チャネル単位になる。ファーメモリは3チャネルで、収まりが悪い構成となる。また、ニアメモリの帯域は1チャネル分に制約される。トータルのメモリ帯域のうち4分の1の帯域となってしまう。短レイテンシの利点があると言っても、不利は大きい。
このように、32コアRyzen Threadripperは、1ダイにつき1メモリチャネルが合理的な構成だが、その場合は、問題も生じる。とくに必要なスレッド数はそれほど多くはないが、メモリアクセスレイテンシが重要となるアプリケーションの場合は、32コアRyzen Threadripperの方が不利になりかねない。例えば、メインは8コアしか使わないアプリの場合は、32コアRyzen Threadripperの方が16コア版より、ローカルメモリ帯域とレイテンシで不利となってしまう。
そう考えると、DRAMチャネルを有効にしたダイを2つに限定する構成も想定できる。その場合は、CPUコアは4個のダイに分散しているが、16個のCPUコアは同じダイ上にDRAMが2チャネル接続されており、残りの16コアはDRAMアクセスは必ず隣のダイにアクセスしなければならない。ゲームを中心に考えるならこの構成の方が向いているケースもありそうだが、CPUコアとメモリの関係はより複雑になる。
Ryzen Threadripperでは、ゲームモード時にはメモリアクセスがNUMA/Localモード、クリエータモードではメモリアクセスがUMA/Distributedモードとなっていた。32コア版Ryzen Threadripperは、想定される4ダイに分散したメモリの場合は、どちらかというと、後者のクリエータモード向けの色彩が強くなる。
DRAMメモリ帯域に合致するダイ間のデータ帯域
初代Ryzen Threadripperでは、2個のダイが2リンクのIFOPで接続され、DRAMインターフェイスとPCI Expressインターフェイスはすべて有効にされていた。下の図のような構造となっていた。DRAMは各ダイそれぞれに2チャネルで合計4チャネル。PCI Expressは各ダイそれぞれに32レーンで合計64レーン。
ただし、PCI Expressのうち4レーンは、X339チップセットとの接続に使われている。そのため、PCI Expressデバイスの接続に使うことができるのは、60レーンで、すべてGen3だ。IFOPは2リンクが無効、低速I/Oも無効だ。
それに対して、現在推測される第2世代Ryzen Threadripper、32コアの構成は下のようになる。4つのダイは各ダイに3つずつのIFOPによって相互接続されている。各IFOPリンクのデータ帯域は、双方向51.2GB/sまでと推測される。すでに説明したように、ダイ上の4つ目のIFOPリンクは無効にされる。この図は、DRAMとPCI Expressのインターフェイスが各ダイに分散されていると仮定した場合のものだ。
第2世代Ryzen Threadripperのダイ同士の接続はEPYC同様となる。しかし、各ダイのインターフェイスは半分が無効されたかたちになる可能性が高い。その場合、DDR4 DRAMチャネルは半分の1チャネル64-bit幅になると見られる。高速I/Oは、32レーンのうち半分の16レーンがPCI Expressとして使われると考えられる。4個のダイのうち1個のダイのPCI Expressでは、16レーンのうち4レーンがX399チップセットとの接続に使われることになるだろう。
第2世代のRyzen Threadripperがこの構成だとしたら、DRAMアクセスはどうなるのか。DDR4-3200の場合、各ダイに接続されているDRAMは1チャネルなので、ダイ当たりのメモリ帯域は25.6GB/sとなる。Infinity Fabric回りはメモリクロックに同期する。そのため、IFOPの帯域も計算上で片方向で25.6GB/sとなる。メモリリードでのフル帯域のまま、ダイ間の接続帯域も維持されることになる。
第2世代Ryzen Threadripperの推測される構成の場合、ダイ間の帯域はEPYCと変わらず、メモリ帯域だけが半分になる。そのため、メモリアクセスについては、フル帯域でそのままダイ間も転送できるようになる。これは、メモリアクセスのレイテンシを若干低減し、帯域をフル活用できる。ただし、その点は、ダイ間を2リンクのIFOPで接続した初代Ryzen Threadripperも同様だ。
大きな視点で見ると、AMDはZEN世代になってマルチダイのモジュラーアーキテクチャとしたことで、製品展開の自由度を得たことがわかる。以前にAMDの単一ダイのアプローチでは、32コア版CPUをタイミングよく投入することは難しかった。しかし、マルチダイになった今は、ダイ構成が許す限り多彩な製品構成を投入できる。
ただし、ダイが分散するため、ダイ間接続と、CPUコアとメモリやI/Oをどう構成するかが難しくなる。そうしたトレードオフがあるものの、ZENのマルチダイアプローチは、開発リソースと資金に限界があるAMD向けと言えそうだ。