◆RMMT 1.1(グラフ109~110)

この後Sandraの結果をお届けするが、その前にRMMTの結果を。前回80MBにしても色々追いつかないので、今回は100MB(10240KB)に設定した。これをやるとテストが途中で異常終了するので、2回(ReadとWrite)立ち上げて実施する事にした。

  • グラフ109

  • グラフ110

まずRead(グラフ109)だが、BandwidthというかL3のThroughputそのものはRyzen 7 7800X3DとRyzen 9 9800X3Dで変わらないようで、2つのグラフが非常に重なっている。1 ThreadでRyzen 7 7800X3Dの性能が落ちるのは、Zen 4コアの限界であり、1 coreでは使いきれなかったのが、Zen 5コアでこれが使い切れるようになった(Zen 4→Zen 5でLoad/Store Unitの帯域が倍増している)という話だ。8 Threadまで行ってもRyzen 7 9700Xとは明確に差があるが、これは言うまでもなく増量した64MB L3の効果である。

これはWrite(グラフ110)も同じで、最大で60GB/sec近い書き込み速度が得られている。WriteはReadより帯域が減る(Burst Transferが出来ない関係で、ラフに言えば半分)事を考えれば、L3増量の効果は十分に得られていると考えて良いだろう。8 Threadだとピークで800MBのリクエストを延々と出すので、内部のQueueも飽和に近い状態になる。この限界状態であっても、L3を増量した事で性能を3GB/secほど底上げできるのだから、やはり効果は大きいと考えるべきだろう。

◆Sandra 20/21 31.139(グラフ111~152)

Sandra 20/21 31.139
SiSoftware
https://www.sisoftware.co.uk/

  • グラフ111

  • グラフ112

  • グラフ113

  • グラフ114

まずはDhrystone/Whetstone(グラフ111~114)。逆順になるが、1Tの場合だと明確に

Ryzen 7 7800X3D < Ryzen 7 9800X3D < Ryzen 7 9700X

という順になるのに、MT+MCだと

Ryzen 7 7800X3D < Ryzen 7 9700X < Ryzen 7 9800X3D

となるのは、CineBenchとかTMPGEnc Video Mastering Works 7などでも見た通りで、今回もこれが再現されることになった。1TとMT+MCの性能の比率を計算すると

Ryzen 7 7800X3D Ryzen 7 9700X Ryzen 7 9800X3D
Dhrystone Integer Native 8.1倍 7.2倍 8.7倍
Dhrystone Long Native 8.4倍 7.4倍 8.9倍
Whetstone Single Native 11.8倍 10.6倍 12.2倍
Whetstone Double Native 11.7倍 10.9倍 12.3倍

となる。表2でまとめた様に、Max BoostはRyzen 7 9700Xの方がRyzen 7 9800X3Dより高いから、1TのスコアはRyzen 7 9700Xの方が高いのは理解できるのだが、明らかにMT+MCにした時の性能の伸びが高いのがRyzen 7 9800X3Dの特徴である。

  • グラフ115

  • グラフ116

  • グラフ117

  • グラフ118

これに比べるとCryptography(グラフ115~118)は比較的おとなしい。というのはこのテストの場合、暗号化/復号化とかの処理性能よりも結果のメモリ書き出しの方が先にボトルネックになるからで、それもあってEncryption/Decryptionは見事に数字が揃っているし、Hashingは確かにRyzen 7 9800X3Dの方がやや上だが、そもそも1TとMT+MCを比べると数字が2倍かそこそこでしかないというのはもうメモリアクセスが限界という話で、Ryzen 7 9800X3Dだと3D V-Cacheにより4~5GB/secほどの上乗せがあるという以上の話ではない。余談だが、Encryption/DecryptionのMT+MCだとRyzen 7 7800X3Dが最速なのに、AES256だと1Tはむしろ遅くなるというのは、Zen 4→Zen 5でAES命令周りのスループットが変わったのかもしれない。

  • グラフ119

  • グラフ120

  • グラフ121

Financial Analysis(グラフ119~121)は再びMT+MCでRyzen 7 9800X3Dが最高速である。というか、1TだとRyzen 7 7800X3DとRyzen 7 9700Xの結果には結構差があるのに、MT+MCだとほぼ同じというあたりは、Zen 4→Zen 5の性能の差を、3D V-Cacheで埋めたという見方も出来る訳で、そう考えるとZen 5+3D V-CacheのRyzen 7 9800X3Dが最速なのも理解出来なくはないのだが、それにしてもちょっと性能の上がる比率が高すぎる感はある。

  • グラフ122

  • グラフ123

  • グラフ124

これはScientific Analysis(グラフ122~124)も同じである。といっても演算性能よりメモリアクセス性能が効くFFT(グラフ123)ではそれほど倍率の差はないし、更に言えば3D V-Cacheの効果もあまり見られない(Block Sizeが16777216とかになっているので、もうL3も完全に溢れてしまう)ので、これは理解できるのだが、GEMM(グラフ122)やN-Body(グラフ124)が3D C-Cacheだけで説明できるか? というとちょっと厳しい様に思われる。

  • グラフ125

  • グラフ126

  • グラフ127

  • グラフ128

グラフ125~128はProcessor Neural Networkの結果で、これはこれでまたおかしなことになっている。同様にMT+MCと1Tの比を求めると

Ryzen 7 7800X3D Ryzen 7 9700X Ryzen 7 9800X3D
CNN Training Double 9.1倍 2.5倍 4.5倍
CNN Training Single 13.8倍 5.8倍 6.4倍
CNN Inference Double 7.3倍 5.3倍 6.6倍
CNN Inference Single 7.3倍 5.3倍 6.8倍
RNN Training Double 1.7倍 1.2倍 0.6倍
RNN Training Single 2.3倍 0.9倍 0.9倍
RNN Inference Double 6.6倍 4.7倍 5.8倍
RNN Inference Single 6.9倍 4.4倍 5.0倍

といった具合で、CNNは兎も角RNNに関しては、MT+MCより1Tの方が性能が出る場合があるというのは、(Sandraの実装が判らないので断言はできないが)メモリ帯域がボトルネックになっている可能性が高い。逆にRyzen 7 7800X3DでCNN TrainingのSingle Precisionだと13.8倍とかいう数字になっており、これもやはりメモリ帯域が関係している可能性が高い。逆に言えばコアの性能はあまり影響しないという事になるようだ。

  • グラフ129

  • グラフ130

  • グラフ131

  • グラフ132

グラフ129~130がImage Processingで、こちらも

Ryzen 7 7800X3D Ryzen 7 9700X Ryzen 7 9800X3D
Blur 22.7倍 5.3倍 6.1倍
Sharpen 7.9倍 5.7倍 7.5倍
Motion Blur 8.1倍 5.9倍 7.7倍
Edge Detection 8.0倍 5.9倍 7.7倍
Noise Reduction 12.7倍 10.9倍 13.5倍
Oil Painting 9.2倍 6.7倍 8.5倍
Diffusion 8.4倍 4.5倍 8.0倍
Marbling 9.1倍 8.6倍 10.5倍

という具合。Ryzen 7 7800X3DのBlurの22.7倍はどう評したものか悩むのだが、例えばDiffusionだとRyzen 7 9700Xが4.5倍なのにRyzen 7 9800X3Dだと8倍まで性能があがる辺りは、Ryzen 7 9700Xではメモリ帯域が足りていないのだろうと見当がつくものの、全般的にRyzen 7 9800X3DのスコアがRyzen 7 9700Xに比べて良いのを全部3D V-Cacheの効用として良いのかは結構ためらう部分だ。

  • グラフ131

さて、ここからはキャッシュとかメモリ回りを。まずはInter-Thread Latencyのまとめがグラフ131である。こうしてみるとBest CaseとWorst Caseでの差は殆どないのだが、やはりL3を増量した分、Cache Walkingに余分な時間が掛かるためか、Ryzen 7 9700Xに比べてRyzen 7 9800X3Dでは若干Latencyが増えるのは避けられない。特にInter-Core(CCX内の他のコアとの通信)のLatencyは3nsほど余分に要している。ただ、Ryzen 7 7800X3Dに比べるとInter-Thread(同一コア内のThread間通信)とInter-CoreのLatencyの差が埋まる方向になっているのは注目に値する。Inter-ThreadのLatencyがRyzen 9000シリーズで増えているのは、L2のAssociativityが8-Wayから16-Wayになった事と無縁ではない様に思う。

  • グラフ132

  • グラフ133

グラフ132・133が実際のLatencyの頻度分布である。Best case(グラフ132)ではRyzen 7 9700Xが一番小さくまとまっており、Ryzen 7 9800X3Dは全体的にLatencyがやや増える方向にシフトすると共に、20ns位まで悪化するケースもあるのはL3大容量化の避けられない代償であろう。Worst case(グラフ133)も同じだが、若干Ryzen 7 9800X3Dの悪化が進んでいる感はある。とはいえ、それでも全体としてRyzen 7 7800X3Dよりは改善されているあたりはZen 5コアに起因する部分なのか、Zen 5に3D V-Cacheを実装するにあたっての改良が何かしら施されているのか、はここからは判断できない。

  • グラフ134

  • グラフ135

ではInte-Thread Bandwidthは? というと、Best case(グラフ134)だとRyzen 7 9700Xで最大700GB/sec超え、Ryzen 7 9800X3Dだと800GB/sec超えで、これはこれで好ましい結果ではあるのだが、ピークは4×64KBの場合で、これはL3経由ではあるものの、別に3D V-Cacheの効果は無関係(256KBの転送だから32MB L3で十分賄える)な事を考えると、実効動作周波数そのものが14~15%ほど高くなっている公算が非常に高い。L2⇔L3のバス幅は3D V-Cacheの有無に無関係で一定だし、別に3D V-Cacheを積んだから増速するとかいう話は全くないからだ。ちなみにRyzen 7 7800X3Dとピーク性能が大きく変わるのは、Zen 5ではL2⇔L3の帯域が増やされた(AVX512のスループットが倍増したため)事が要因と思われる。

  • グラフ136

  • グラフ137

ではMemory Bandwidthは? というのがグラフ136。今回はDDR5-6000の2chだからピーク帯域は96GB/secであり、Streamで55GB/sec程度が確保されているのは割と優秀(効率57.3%)な方だと思う。もっと最適化を進めればもう少し上がるかもしれないが。そして現状でもコアの帯域は十分に高く、1Tでもその55GB/secの帯域をほぼ使い切るという事がグラフ137から判る。まぁHPC向けはともかく、コンシューマ向けにはこの程度で十分だとは思うが。

  • グラフ138

  • グラフ139

グラフ138・139がCache領域まで含めてのBandwidthである。やはりコアそのものの帯域が倍増した関係で、どちらもグラフも山の高さそのものがZen 5系は倍増している。実際には倍を超えているケースもあるが、これは動作周波数そのものの違いも絡んでくると考えられる。で、1Tのグラフ139ではRyzen 7 9700Xが最高速なのに対し、MT+MCのグラフ138ではRyzen 7 9800X3Dが最高速というあたり、MT+MCで稼働中の実効動作周波数はRyzen 7 9800X3Dの方が10数%高めに設定されているもの、と理解するのが一番妥当だろう。

  • グラフ140

  • グラフ141

  • グラフ142

  • グラフ143

  • グラフ144

  • グラフ145

  • グラフ146

  • グラフ147

  • グラフ148

  • グラフ149

  • グラフ150

  • グラフ151

最後に念のため、L3周りのLatencyも確認してみた。グラフ140~145がGlobal Data、146~151がInst/Code Memoryで、それぞれMT+MC/1TでSequential/In-Page Random/Full Randomのもの。結果はL3までの比較なのでCycleで示している。Ryzen 7 9700Xは2MB~32MBがL3領域で、Ryzen 7 7800X3D/9800X3Dは2MB~64MBの領域である。まずGlobal Dataに関してはSequentialではL3容量によるLatencyの差は無し。In-Page RandomだとPage Walkの時間が若干増えるためか微妙にLatency増(4cycle)、Full Randomだと差がもう少し大きくなる(5~8cycle)が、Ryzen 7 7800X3Dよりは少ないといったところ。Inst/Code Memoryの方はというと、Sequentialだと1cycle程度の揺らぎはあるものの概ね同等、In-Pageでは2cycleほどRyzen 7 9700Xより増加(ただRyzen 7 7800X3Dよりは圧倒的に少ない)、Full Randomでは結構暴れるものの、こちらもRyzen 7 9700Xから微増といったところで、3D V-Cacheの搭載でメモリアクセスが高速になるとかLatencyが下がるといった効果は無く、ただより大量のメモリ領域をキャッシュできるという効果のみであることが判った。

これらから考えると、Ryzen 9 9800X3Dの性能向上は、勿論処理によってはL3大容量化が貢献するケースもあるのだが、殆どは実効動作周波数の向上に起因するもの、と考えられる。

  • グラフ152

グラフ152はPCI ExpressのI/F性能の確認であるが、こちらは(まぁそもそも同じIODを使っているから当然ではあるが)差は見られなかった。