◆RMMT 1.1(グラフ69~70)

RMMT 1.1
Rightmark.org
http://cpu.rightmark.org/products/rmma.shtml

メモリ回りの帯域も確認しておこう。ここからは再びGeForce RTX 3080を利用してのテストとなる。

  • グラフ69

  • グラフ70

グラフ69がReadの結果であるが、5Thread以降からは先は大差ない結果になっているのは、もうDDR4そのものの帯域が飽和しているのだと思う。ただそれ以前、4Threadまでの範囲で言えばRyzen 5000Gシリーズの方がかなり高いBandwidthを確保できているのは、メモリコントローラそのものも改良されたためと思われる。これはWrite(グラフ70)にも言えることで、ピーク帯域もさることながら、5threads以降も多少性能の上乗せがある。

これらがコアの改良によるものか、メモリコントローラの改良によるものかといえば、1~3threads辺りまではコアそのものの要因が大きいだろう。ただ4threads以上になると、各コアから大量のMemory I/O Requestがメモリコントローラに殺到している訳で、このあたりからコアというよりはメモリコントローラの性能が向上した、とみて間違いないと思う。特にWriteで性能を引き上げているのは素晴らしいと思う。

◆Sandra 2021 R3 2021.31.29(グラフ71~117)

Sandra 2021 R3 2021.31.29
SiSoftware
https://www.sisoftware.co.uk/

ここからはSandraを利用しての性能比較を。まずグラフ71~74がDhrystone/Whetstoneの結果である。

  • グラフ71

  • グラフ72

  • グラフ73

  • グラフ74

MT(Multi-Thread:全スレッド動作)だと

Ryzen 5 5600G < Ryzen Pro 7 4750G≦Ryzen 7 5700G

という結果で、1Tだと

Ryzen Pro 7 4750G < Ryzen 5 5600G < Ryzen 7 5700G

という傾向は、命令セットを問わずほぼ共通である。やはりZen 3を搭載したRyzen 5000Gシリーズは地力では勝っているが、CPU全体としてみると色々制約条件があってその実力を発揮しにくいというべきか、それともZen 2コアも結構頑張っているとみるべきか。

  • グラフ75

  • グラフ76

  • グラフ77

  • グラフ78

ただProcessor Multi-Media(マンデルブロ図形の描画)をさせてみた結果(グラフ75~78)では、1Tは変わらないがMTだと

Ryzen 5 5600G ≒ Ryzen Pro 7 4750G≦Ryzen 7 5700G

という結果になり、アプリケーションの要件次第ではZen 3コアの性能が引き立つ格好だ。6コアのZen 3と8コアのZen 2が同等のスコア、というのはなかなか印象的である。

  • グラフ79

  • グラフ80

  • グラフ81

  • グラフ82

AES Encryption/Decryptionでは、1T(グラフ80)だとコアによるばらつきが大きいが、MT(グラフ79)だとほぼ横並びというのは、もうメモリ帯域が先にボトルネックになっているという事と思われる。また1Tの場合、AES-256だと横並びなのにAES-128でばらつきが多いのは、AES-256だとAES命令が使えるが、AES-128だとAES命令を使っていないためと思われる。ちょっと面白いのがHasing(グラフ81・82)。SHA2-512はAVX2のレジスタが溢れることもあって性能が低迷する(AVX512をサポートしていればこのあたりもだいぶマシなのだが)が、それは別にするとここでも

Ryzen 5 5600G ≦ Ryzen Pro 7 4750G≦Ryzen 7 5700G

の傾向が見えているところだろうか。6コアのRyzen 5 5600Gが想像以上に健闘している感じだ。

次のFinancial Analysisであるが、現バージョンのSandraからこのテストは

MT(全スレッド)/MC(全コア)/1T(1スレッド)

ではなく

MT/MC/bMC(全bigコア)

になってしまった。おそらくAlderLake世代(と一応Lakefield)で導入されるbig.LITTLE対応という事なのだろうが、今回の場合MC=bMCであり、1Tの結果が取れなくなってしまった。という訳でグラフ83~85は1TがなくMTの結果のみである。

  • グラフ83

  • グラフ84

  • グラフ85

結果はもう見ての通りで、テストによって差はあるが

Ryzen 5 5600G ≦ Ryzen Pro 7 4750G≦Ryzen 7 5700G

の再現である。ただBinomialだとRyzen 5 5600G ≒ Ryzen Pro 7 4750Gとしても良い程度で、かなりRyzen 5 5600Gの性能が高いとして良いと思う。

  • グラフ86

  • グラフ87

  • グラフ88

なぜかこのbig.LITTLE対応はFinancial Analysisだけである。という事で次はScientific Analysis(グラフ86~88)であるが、Zen 3でAVXユニットが倍増したこともあって、1T/MTともにRyzen 5000Gシリーズの性能が高い。ただGEMM(グラフ86)ではなぜか1TでRyzen 7 5700GよりRyzen 5 5600Gの方がやや高い数字を出しているとか、N-Body(グラフ88)ではRyzen 5 5600Gがもっと高い性能でも良いはず(というか、Ryzen Pro 7 4750Gが高すぎるというべきか)、などやはりアプリケーションによってばらつきは見られる。とはいえ、Ryzen 5000Gシリーズの性能の高さは間違いない。

  • グラフ89

  • グラフ90

  • グラフ91

  • グラフ92

グラフ89~92がAI Training/Inferenceの処理性能である。項目のLow/HighはLow Precision/High Precisionの意味である。この手のものをx86の汎用命令で処理する事にどこまで意味があるのか? という話はとりあえず措いておくとして、性能を見てみると、やはりMTではRyzen 7 5700Gが圧倒という感じになってはいる。ただこれも、例えばInference 1T(グラフ89)でRNNのHigh PrecisionだとRyzen Pro 7 4750Gとそれほど大きな差でなくなっている(CNNのHigh Precisionと比較すると明らかに傾向が異なる)とか、Inference 1T(グラフ90)のRNN High PrecisionやTraining MT(グラフ91)のRNN/CNN High PrecisionではRyzen 7 5700GよりRyzen 5 5600Gが高速といったちょっと面白い傾向も見えている。要するにこの辺りはまだアプリケーションによって性能の出方の傾向が変わる余地がある、ということだ。

  • グラフ93

  • グラフ94

この「アプリケーション次第で性能差が出る」顕著なケースがImage Processing(グラフ93・94)である。なぜかBlurだけ、MT/1T共にRyzen Pro 7 4750Gが突出して高性能である。1Tに限って言えば、Diffusionもそうで、このあたりどんなアルゴリズムで実装するとこういう結果になるのかソースを見てみたいというか、プロファイラ付けて走らせてみたい(このあたりが突っ込んで分析できないのがSandraの欠点ではなる)。

  • グラフ95

  • グラフ96

演算性能はこの辺りにして、次はInter-Thread Efficiency。こちらもバージョンアップで少し構成が変わったので、従来のLatencyとBandwidhtのグラフは無しである。まずグラフ95・96がInter-Thread Latencyであるが、同一コア内のThread、同一Core Group(AMDで言うなら同じCCXに属するCore)間のThread、同一モジュール(異なるダイ、ないしは異なるCore Group)間のThreadで、それぞれのLatencyの平均値を求めたものだ。BestとWorstでそれほど差はないが

  • Inter-Thread/Inter-Core LatencyはRyzen Pro 7 4750Gの方がRyzen 5000Gシリーズよりやや高速
  • その一方、Ryzen Pro 7 4750Gは8コアを2つのCCXに分割して格納している関係で、CCX間のLatencyは50nsを超えている。対してRyzen 5000Gシリーズはそもそも1つのCCXに8コアが格納されているので、Inter-Module Latencyに相当するものがない

ということになる。Ryzen 5000GシリーズはInter-Thread LatencyやInter-Core LatencyはCCXが8コア化したことで多少Latencyは増えたものの、CCXを跨いでのアクセスが無くなったことで平均的なLatencyはだいぶ短縮した様に思える。

  • グラフ97

  • グラフ98

グラフ97・98は、今度はInter-Thread Bandwidthである。Best/Worstは主にこちらの帯域に関係してきており、BestだとRyzen Pro 7 4750Gは恐ろしく効率が良い(1MBまでの範囲で言えばRyzen 7 5700Gを上回る)のに対し、Worstでは桁違いに性能が下がる。実際BestとWorstのピーク性能を比較すると

ピーク帯域(GB/s) 比率
Best Worst
Ryzen Pro 7 4750G 443.08 19.54 22.7倍
Ryzen 5 5600G 341.83 202.25 1.7倍
Ryzen 7 5700G 425.69 231.84 1.8倍

と、極端に性能が変わる。これに比べると、Ryzen 5000Gは性能のブレがずっと減っていると考えられる。

  • グラフ99

  • グラフ100

グラフ99・100は先のグラフ95・96のBreadkdownである。実際に1ns刻みでLatencyの頻度分布を示したものだが、見てお分かりの様にRyzen Pro 7 4750Gは50ns以上のLatencyの頻度が半分以上(正確には53%)ほどある。つまり半分の確率でRyzen 5000GよりもちょっとLatencyが少ないが、残りの半分では2倍以上のLatencyになる訳だ。この頻度を加味した 平均のLatencyは

Best Worst
Ryzen Pro 7 4750G 37.2ns 36.9ns
Ryzen 5 5600G 22.5ns 22.5ns
Ryzen 7 5700G 21.9ns 21.7ns

となった。Single Threadのアプリケーションでは関係ない話だが、Multi-Threadアプリケーションでは、この平均のInter-Thread Latencyの削減が効果的に効いてくるように思われる。

  • グラフ101

  • グラフ102

次がMemory I/F周り。グラフ101・102がStreamとグラフ103・104の256MB~4GBの範囲のBandwidthの平均値である。先のRMMTの結果もそうだが、ある程度Thread数がフルに動くとMemory Controllerが飽和することもあって、ほぼDDR4の連続性能の限界値に近くなる。そうした事情もあってMT(グラフ101)では大きな差ではない。が、1T(グラフ102)では、CPUコア側のLoad/Storeユニットの性能が効いてくることもあり、やはりRyzen 5000G系は多少有利な結果となっている。

  • グラフ103

  • グラフ104

Cacheまで含めたBandwidthはこちら(グラフ103・104)である。面白いのは、MTでのピーク性能そのものはRyzen Pro 7 4750Gの方が高い事である。Ryzen 5000Gはやや低めに推移している。ただ1Tで見ると、個々のThread(というか、コア)のBandwidth自体には大きな差はない。差が出るのは先ほどのInter-Thread Bandwidthでも出てきたコア間帯域の差で、MTの場合はこれが効果的に作用している格好と思われる。また1Tに関しては、L3容量の差も大きい。Ryzen 5000Gシリーズは16MBのUnified L3であり、対するRyzen Pro 7 4750Gは4MB L3×2という構成である。グラフ104で4MB~16MBで大きな差がある理由は、このL3の構成の違いという事になる。

  • グラフ105

  • グラフ106

  • グラフ107

  • グラフ108

  • グラフ109

  • グラフ110

  • グラフ111

  • グラフ112

  • グラフ113

  • グラフ114

  • グラフ115

  • グラフ116

グラフ105~116まではCache AccessのLatencyである。奇数番台の結果の単位Cyclesで、これはL1~L3のLatencyの比較に。偶数番台はnsで、これはMemory Accessの比較にそれぞれ利用する向けである。ということでざっと見ておくと、意外にRyzen Pro 7 4750GはSequential AccessでもLatencyが大きい。L0は1cycleだがL1で4cycle、L2で5~6cycleあたり。Ryzen 5000GもData L1は4cycleだがInst/Code L1は1cycleでアクセスできるし、その先もそうそう急には増えない。In-Page RandomやFull Randomだとキャッシュアクセスに関する限り大きな違いはない。Memory Accessは、アクセスパターンによってはRyzen 5000Gの方が大きい(例えばグラフ108、111など)が、1GBのメモリをいきなり舐める、というケースは少ないし、L3の容量増もあってこれが体感されるケースはレアではないかと思う。

  • グラフ117

グラフ117は、Video Memory Bandwidthである。これは何をやっているかというと、事前情報でRyzen 5000GシリーズのPCIeの帯域がどこにも書かれておらず、ベンチマークの形で確認するしかなかったという話だ。このテストのみ、リファレンスにRyzen 7 5800Xも入れてある。

ということで結果であるが、見てお分かりの通り、Ryzen 5000GシリーズはPCIe Gen3×16構成であった。Ryzen 7 5800Xのきっちり半分である12GB/secという帯域でしかなく、勿論これで困るケースは少ないとは思うがちょっと残念である。ちなみにNVMe M.2向けのレーンも、当然PCIe Gen3接続という事になる。