AMD Zen4に関するウワサ2題
Zen 4世代Epycは最大96コア・メモリーは12チャンネル
AMD EPYC Genoa CPU Platform Detailed – Up To 96 Zen 4 Cores, 192 Threads, 12-Channel DDR5-5200 - WCCF Tech
Zen 4世代Epycは、最大96コア・12チャンネル DDR5メモリーをサポートするのだという。
Zen 4世代でも1 CCD(Compte Complex Die)あたり8コアが維持されると仮定すれば96コアというのは12 CCD + 1 sIOD(Server I/O Die)の計13 ChipletによるMCMとなると予想される。
そのため、多くのニュース記事では本件について13 ChipletのMCMをsIODを中心に左右に3 CCDが2 列ずつ(3 CCD x 4 列 = 12 CCD)配置した想像図が示されているのだが、このレイアウトについては実物が出るまではよく分からないのであくまで想像図である。
CCDとIODはIFOP(Infinity Fabric On-Package)で接続されるが、配線長が短い方が電気的に有利である一方で、現在のRyzen/Epycでも既に配線が入り組んでいるためだ。配線長だけを考えれば3 CCD x 4 列よりも2 CCD x 6 列とかの方が良いかもしれないし、むしろIODを中心にCCDがIODを囲む形の方が良いかもしれない(ちょうどGPUとGDDRメモリーのようなレイアウト)。いずれにせよ実物が出てくるまでは何とも言えない。
ところで、メモリーチャンネル数(≒メモリーバンド幅)については12チャンネルというのは妥当そうに見える。
メモリーチャンネルについてはZen 2世代EpycについてServeTheHomeが興味深い考察をしているのだが、CCD 2個あたりメモリーチャンネルが2チャンネルとなっており、CPUコア数:メモリーバンド幅の釣り合いがRyzen 9 3950Xと同等になっている。これはCPUコア数とFLOPSが比例すると考えれば、例えばHPCで指標のひとつであるB/F(1 FLOP性能あたりのメモリー帯域幅)が16コアRyzenから64コアEpycまで共通ということで妥当と言える(演算性能:メモリーバンド幅という観点では最大コア数=最低のB/F値である)。従ってZen 4世代でEpycが最大96コアとなるのであれば12チャンネルとなるのは妥当と考えられる。
もっとも、このServeTheHomeの考察にある、CCD 2個とメモリーチャンネルが2チャンネルをまとめた「Quadrant」という考え方がどの程度妥当なのかは分からない。CCDとIODを結ぶIFOPの帯域はメモリー2チャンネル分のRead帯域と合致している(参考)のでミクロ的にはともかくマクロ的な視点では概ね正しそうに思えるが、全コアに均等にタスクが割り当てられるとも限らないし、各CCDが最寄りの2チャンネルしか使わないわけでもないので、瞬間的には1 CCDのみがビジーで1 CCDの8コアが全8チャンネルを使うことも理屈の上ではありえるだろう。
個人的に気になるのはDDR5メモリーとPCIe Gen 5 128レーンのサポートに伴うInfinity Fabricの拡張である。
前述でIFOPの帯域について触れた通り、ZenアーキテクチャーではInfinity Fabricの帯域が全面的にメモリーの帯域を強く意識したものになっている。メモリーがDDR4からDDR5に帯域が倍増するということはInfinity Fabricの帯域も倍増することを意味しているし、また、Epycでソケット間を結ぶIFIS(Infinity Fabric Inter-Socket)はPCIeとSerDes/PHY(Zen~Zen2ではSynopsysのPCIe用PHYだった)を共有しているため、PCIe Gen5の採用は同等のIFIS帯域の場合に必要となるレーン数が減ることを意味している。
事実、Zen 2世代EpycではPCIe Gen4が採用されたためIFISの帯域は増えたが使用されるレーン数はZen世代Epycの64-laneから48-laneに削減された。Zen/Zen 2世代Epycではいずれも1ソケットあたりPCIe 128レーンだったから、Zen世代Epyc 2-way構成ではPCIe 128-lane((128-lane - 64-lane) x 2 = 128-lane)、Zen 2世代Epyc 2-way構成ではPCIe 160レーン((128-lane - 48-lane) x 2 = 160-lane)が使用可能だった。
Zen 4ではどうなるのか興味深いところである。PCIe Gen5の採用により1レーンあたりの帯域は倍増するものの、同時にDDR5の採用によりメモリーの帯域も「ほぼ」倍増するので必要なレーン数は恐らく変わらないからである。もっとも、Zen 2世代EpycはDDR4-3200まで、Zen 4世代EpycがWCCF Techの言う通りDDR5-5200までだとメモリーの帯域は約1.6倍だからIFISに使用するレーン数を最大30~40%程度削減することはできるかもしれない。
そして、もしIFISのレーン数を削減できるとすれば、いよいよEpyc 4-way構成が視野に入ってくる。現時点でZen 4で4-way対応はウワサもされていないが、Zen 4かZen 5(仮称)か近い将来の時点で実現されることだろう。
利益率でIntelの後塵を拝し粗利率50%を目指すAMDにとって利益率の高い4-way対応製品は悲願と思われる。例えばIntel "Skylake-SP"世代 Xeon Scalableでいうと2-wayのみのXeon Silver 4114(10C/20T, 2.2 GHz / Turbo 3.0 GHz, LLC 13.75 MB)は$ 694.00だが、4-way対応のXeon Gold 5115(10C/20T, 2.4 GHz / Turbo 3.2 GHz, LLC 13.75 MB)は$ 1,221.00にも達する。AMD自身の利益率を上げる意味でもIntelの牙城を崩す意味でも4-way構成は必要なはずだ。
AMDのISSCC 2019での発表によると、現行のEpycでも技術的には4-way構成は可能なようだ。しかし製品化していないのは恐らくメモリー帯域や使用可能なPCIeレーン数とのバランスのせいだろう。Zen~Zen 2世代Epycでは1ソケットあたりのPCIeレーン数は128-laneなのでZen世代Epyc 4-way構成(IFISが64-lane x 3-link=192-lane必要)でもZen 2世代Epyc 4-way構成(IFISが48-lane x 3-link=144-lane必要)でもレーン数は不足してしまう。しかし、もしZen 4世代EpycでIFISに必要なリンク数が30-lane(48-lane - 18-lane)まで削減できるとすれば4-way構成でも現実味がでてくる。IFISが32-lane x 3-link=96-laneに加え4-way構成でもPCIe 32-lane/socket x 4-way=128-laneをPCIeとして使用可能になるからだ。
上述の通り、Zen 4世代で4-way構成をサポートするという話は現時点でも聞こえていない(2-way構成までというウワサはある)が、理論的に現実味を帯びてきているのでZen 4かZen 5か近い将来の時点で実現されそうな気がする。
※このあたりの正確な試算を試みているが、ネット上のドキュメントによって情報が異なったり計算が合わなかったりするため、もう少し纏めてから記事にしようと思う。
Zen4はAVX-512とbFloat 16をサポートする
AMD EPYC Genoa Zen 4 CPUs Rumored To Feature AVX3-512 & BFLOAT16 Instruction Sets - WCCF Tech
記事中にあるZen 4の特徴を訳すと以下のようになる
- 1 socketあたり64-coreを超えるコア数
- コアあたりのスレッド数は2-thread
- 2-socketまでの構成をサポート
- 57-bit仮想アドレス、52-bit物理アドレス
48-bit仮想/52-bit物理から変更。52-bit物理は既に最大らしい
- AVX3-512, BFloat 16、その他の命令セットの実装
- 設計と製造の改良による性能およびPerformance per wattの向上
このうち、Zen 4でのAVX-512サポートは既定路線であるが、bFP16は新しい話題である。
以前も記事にしたが、2020年夏にAMD・Intel・Red Hat・SUSEによってx86-64-v2/-v3/v4標準が策定されており、Skylake-SPと同水準のAVX-512サポートはx86-64-v4の要件だからZen 4でのサポートは予想されていた通りである。
とはいえ、AVX-512は実装が重いせいだろうがIntelも含め全命令をサポートしたプロセッサーは存在しないから、疑問はどの程度の水準でサポートされるかであろう。
上述の通りZen4は恐らくx86-64-v4対応となるので最低でもSkylake-SPと同水準がサポートされることは予想されていただろうが、bFP16サポートとなるとAVX512VNNI・AVX512BF16がサポートされCooper Lake相当となる可能性が高いのではないか。WCCF Techの記事にはAVX512VNNIに対する言及は無いが、AVX-512でbFP16を使うのはAVX512BF16でbFP16がディープラーニング用のデータ型であることを考えれば、同じくディープラーニング用のAVX-512拡張であるAVX512VNNIがサポートされるのが妥当そうに思われる。
ここで疑問なのはAVX-512がハードウェア的にZen 4コアに搭載されサーバー用=Epycで使用可能になるとして、デスクトップ用=Ryzenでサポートされるか否かであろうが、筆者はデスクトップでもサポートされると予想する。理由はZen4でAM5プラットフォームに移行しDDR5メモリーがサポートされるからである。
Intelの場合はデスクトップ用CPUとサーバー用CPUは別ダイを使用しており、SkylakeとSkylake-SP・Coffee LakeとCooper Lakeがシリコンレベルで別仕様でも不思議ではないが、AMDはデスクトップ用でもサーバー用でも同じCCDチップレットを使いまわしてSKUを作っているため、物理的にはRyzenでも実装される可能性が高いが製品レベルでは非サポートとなる可能性は考えられる。
しかし、そもそもAVX-512のサポートがデスクトップで消極的な理由のひとつはメモリー帯域(普通の積算・和算で1コアあたり64 Byte x 2のLoadと64 Byte x 1のStoreが必要)のはずで、Zen 4ではDDR5がサポートされるからメモリー帯域の問題は緩和されるはずである。
例えば、聞くところによるとH.265エンコーダーであるx265でAVX-512を使ってエンコードなどをする場合にはXeonでなければメモリー帯域が不足していたらしい(DDR4-2666 x 6ch = 128 GB/s)。この帯域をDDR4対応のデスクトップ用CPUで実現することは不可能だが、DDR5対応デスクトップCPUでは近いバンド幅を実現でき、例えばDDR5規格で最速のDDR5-6400 2chは102.40 GB/sである。さすがにDDR4-2666 6chには敵わず問題が解消されたとは言い難いがギャップが大幅に緩和されていることは分かるかと思う。
ところで、Zen 3では登場前にSMT4対応が予測され、本ブログではシングルスレッド性能低下を理由に否定したが、将来のどこかでSMT4が現実的になる可能性は高い。理由は実行ポートが増えておりシングルスレッド性能を犠牲にすることなくポート競合を防ぎつつSMTが可能になりつつあるからである。
Zen 3ではLoad/StoreがLoad/Store-address + Store-dataに分離されたほかFPUからFP Storeも分離され、Branchが追加されたため、実行ポート数はZen 2の11ポートからZen 3では16ポートに増えた。
SMT2のAMD Zenファミリー・Intel CoreファミリーCPUからSMT8のPOWER8/POWER9まで、SMTによるポート競合を避けるためスレッドあたりの実行ポート数がある程度確保されており、下の表の例では経験則的に概ね5~5.5-port/thread確保されているように見えるが、Zen 3は8-port/threadと頭一つ抜けている。
もちろん、Zen 3で拡張されたポートは多機能のポートではなくStoreやBranchのみの単機能なので同列に比較はできない(し、Zen 3でSMT2が維持されたのも理解できる)が、5-port/threadを目安とすればSMT4で必要と想定される20 exec portsも視野に入ってくる。今のところZen 4でのSMT4のウワサは聞こえないがZen 5 かZen 6(いずれも仮称)あたりでサポートされる可能性はありそうに思える。
※初出時Sunny Coveのパイプライン構成が誤っていたため修正しました(2021/03/10)
|
IBM POWER 9 (SMT8) |
AMD Zen 3 |
AMD Zen 2 |
Intel Sunny Cove |
SMT |
SMT8 |
(per thread) |
SMT2 |
(per thread) |
SMT2 |
(per thread) |
SMT2 |
(per thread) |
L1$I (KB) |
64 KB |
8 KB |
32 KB |
16 KB |
32 KB |
16 KB |
32 KB |
16 KB |
Exec Ports |
44 |
5.5 |
16 |
8 |
11 |
5.5 |
10 |
5 |
ALU |
8 |
1 |
4 |
2 |
4 |
2 |
4 (shared) |
2 |
Branch |
2 |
0.25 |
1 |
0.5 |
1 (shared) |
(0.5) |
1 (shared) |
(0.5) |
FPU |
8 |
1 |
6 |
3 |
4 |
2 |
3 (shared) |
1.5 |
SIMD |
8 |
1 |
Load |
8 |
1 |
3 |
1.5 |
3 |
1.5 |
2 |
1 |
Store-address |
8 |
1 |
2 |
1 |
2 |
1 |
Store-data |
2 |
1 |
2 |
1 |
L1$D (KB) |
64 KB |
8 KB |
32 KB |
16 KB |
32 KB |
16 KB |
32 KB |
16 KB |
NVIDIAが組込SoCモジュールJetson TX2 NXを発表
NVIDIA introduces lower cost Jetson TX2 NX SO-DIMM module - CNX Software
NVIDIA SoCファミリーはある程度馴染みがないと名称からGeForceの世代が分かりにくいが、Jetson TX2シリーズに搭載されるTegra X2 "Parker"ベースでGPUはPascal世代であり、Nintendo Switchにも搭載されているTegra X1 "Erista"(GPUはMaxwell世代)の後継にあたる。
今回登場したJetson TX2 NXはJetson Nano/NXシリーズとしては新製品であるが、NVIDIA製SoCとしては2017年に登場した旧世代製品で、前回登場したJetson Xavier NXに搭載されているXavier(2018年発表)の前世代にあたる。
SoCという観点で言えば、Tegra X2 "Parker"はNVIDIA製SoCがAndroidタブレット用モバイルアプリケーションプロセッサーから車載に転換した世代と言っていい。
スペック表を見るとTegra X1の改良版のように見え、車載用のXavier(~32TOPS、10~30W)と比べると性能(1.3 TFLOPS)・消費電力(7.5W)は控え目でモバイルアプリケーションプロセッサーらしさも残るが、一方でCANなど車載向けのインターフェースの追加やメモリーインターフェースも128-bit化(LPDDR4で2パッケージ・DDR4で4チップが必要となり、フットプリントが増えるためモバイル用途では不利)などモバイル用らしからぬ仕様もあり、過渡期の製品に見える。電気自動車メーカーTeslaのAutopilot 2.0 - 2.5ハードウェアに搭載されたのもこのSoCである。
これが、完全に車載に転換したXavierでは性能が向上・メモリーインターフェースが256-bitに拡張され消費電力が増えたほか、価格も大幅に向上し、モバイル向けには適さない仕様となった(組込SoCーは購入数量で価格が大きく変動するしサポート契約も含まれるため見積もりが難しいが、Qualcomm Snapdragon 800シリーズが概ね$50~60に対しXavierは$200を超えるはずである)。
Jetson Nano/NXという観点で見ると、興味深いのはメモリー以外のスペックの削減が行われておらずダウングレードの幅が小さい点であろう。
下の表はJetsonフルスペック版とJetson Nano/NXでのスペックの比較(相違点のみの抜粋)で相違点を太文字で示しているが、Tegra X1搭載のJetson NanoやXavier搭載のJetson Xavier NXでは、一部ブロックが大きくダウングレードされており性能と消費電力が低減されているのに対し、Jetson TX2 NXでは搭載メモリー容量以外はほとんど無い。メモリーの速度も1ランク低速なものに置き換えられているが体感できない程度の僅かなダウングレードである。
※CPUの項目を初出時から追加。尚、Jetson TX2 NXのCPUスペックは未公表だが、消費電力がJetson TX2と変化無いことから同一と推定(2021/03/10)
SoC |
Tegra X1 |
Tegra X2 |
Xavier |
SoM |
Jetson Nano |
Jetson TX1 |
Jetson TX2 NX |
Jetson TX2 |
Jetson Xavier NX |
Jetson AGX Xavier |
CPU |
Arm Cortex-A57 x 4-core 1.43 GHz (-18%) |
Arm Cortex-A57 x 4-core 1.73 GHz |
NVIDIA Denver 2 x 2-core 2.0 GHz Arm Cortex-A57 x 4-core 2.0 GHz |
NVIDIA Denver 2 x 2-core 2.0 GHz Arm Cortex-A57 x 4-core 2.0 GHz |
NVIDIA Carmel 6-core (-25 %) 1.4 GHz (-39 %) |
NVIDIA Carmel 8-core 2.26 GHz |
GPU |
Maxwell 128-core 921MHz 472 GFLOPS (-53%) |
Maxwell 256-core 1000MHz 1.0 TFLOPS |
Pascal 256-core 1300MHz 1.3 TFLOPS |
Pascal 256-core 1300MHz 1.3 TFLOPS |
Volta 384-core (-25 %) 1100MHz (-20 %) 1.65 TFLOPS (-40 %) |
Volta 512-core 1377 MHz 2.75 TFLOPS |
DRAM |
4 GB 64-bit LPDDR4 1600 MHz 25.6 GB/s |
4 GB 64-bit LPDDR4 1600 MHz 25.6 GB/s |
4 GB (-50 %) 128-bitLPDDR4 1600 MHz 51.2 GB/s (-15 %) |
8 GB 128-bit LPDDR4 1866 MHz 58.3 GB/s |
8 GB (-75 %) 128-bit LPDDR4X (-50 %) 1600 MHz (-25 %) 51.2 GB/s (-63 %) |
32 GB 256-bit LPDDR4X 2133 MHz 137 GB/s |
Jetson Nano・Jetson TX2 NXはフルスペック版Jetson TX1・Jetson TX2が「型落ち」した後でリリースされているためハードウェア的な新規性も魅力もあまりないが、Jetson Nano登場以降ソフトウェアが拡張されており素人視点で使い易さが向上している。
NVIDIA製SoCにはGPUとしてローエンドGeForce相当が搭載されており、GPUとしてだけでなくCUDAやNVENC/NVDECなども利用できるが、Jetson TX1・TX2が現役だった2015~2018年当時では使い勝手が良かったとは言えなかった。
例えばNVIDIAのディープラーニング用ライブラリー群cuDNNなどは以前から同梱されておりCUDAでプログラミングする必要があったが、Jetson Nanoと共にJupyter WebインターフェースからPythonで利用可能となっているし、ほかにも、NVENC/NVDECを使った動画エンコード/デコード機能も、もともとAndroid用で一般的なOpenMAXのみのサポートで、利用するにはGStreamerを使用する必要があったが、昨年あたりからV4L2(Video4Linux2)プラグインが同梱されFFMPEGから利用可能になっている。
本ブログではたびたびRaspberry Piや中華SBCといった組込SBCを取り扱っているが、それらと比べてNVIDIA製SoC搭載SBCの魅力はサポートではないかと思う。もっとも組込SoCで「サポート」というとソフトウェアパッケージのサポートとカスタマーサポート対応のサポートといった複数の意味があるが、本件の場合は前者のことを指す(後者についてはNVIDIAとやり取りしたことがないので不明)。
Jetson向けの開発ソフトウェアパッケージ群はJetPackと呼ばれているが頻繁に更新されており、毎月のように新パッケージやドキュメントがリリースされているほか、BSPに相当するL4T(Linux for Tegra)も3カ月に1度程度の頻度で更新されている。
また、意外に古いプラットフォーム向けのサポートも継続されており、例えば上記の中で最も古いJetson TX1は2019年EOL(終息)で開発ソフトウェアパッケージ(JetPack)のサポートも打ち切られそうな雰囲気があったが、2021年2月の最新版でもサポートが継続している(2015年~)。ちなみに、現時点ではJetson TX2 NXのサポートは2026年2月までが予定されているようだ。