◆Performance
さて、Execution Unitのあたりでは紹介を省いたPerformanceの検証をしてみたいと思う。AMDの発表によれば、IPCで15%程度向上、ということになっており、これがどの程度実現できているかである。
まずは定番のDhrystone。グラフ44がMT、45が1Tでの結果である。MTで見ると、コア数が多い事もあり、Ryzen 9 3900Xの圧勝といったところだが、それはともかくとしてRyzen 7 3700Xは同じ8コアのRyzen 7 2700Xと比べても、Integerだと30%以上高い性能を実現できている。
ただ、1Tにするとまた様相が変わってくる。何故かCore i9-9900Kが異様に高い結果になっているからだ。これは何故かというと、AVX512が利用できるためである。ただ、1 Thread(というか1 core)で52GIPS近い性能が出るなら、8コアで420GIPS近い性能になりそうなものが、実際には400を切っている程度というのは、AVX512をフルに使うとThermal Throttringが発生して動作周波数を落とす必要があるためと思われる。というか、8core/16Thread構成にも関わらず、MTの性能が1Tの場合の8倍未満の伸びしかないあたりが、AVX512を使うのがまだ難しい(Thermalが先に限界になる)事を偲ばせる。逆に例えばRyzen 7 3700Xは1Tで43.12GIPS、MTで380.52GIPSで8.8倍ほどの性能の伸びになっており、一応SMTであることがメリットになっている事が判る。
話を戻すと、1Tの場合でも、ことIntegerに関しては明確にRyzen 7 2700Xからの性能の伸びは大きく、AMDの主張する15%の伸びはあながち嘘ではないとしても良いと思う。
次はWhetstone(グラフ46・47)。こちらではやはりFPUの帯域を倍増させた分、Ryzen 9 3900Xの性能の伸びは高いのだが、Ryzen 7 2700X vs Ryzen 7 3700Xだとそれほど大きな伸びがないというか、動作周波数の差と言う程度でしかない。不思議なのは意外にCore i9-9900Kが伸びてない事だが、ただスコアは以前の結果(こちらのグラフ及び、こちらのグラフ)とさして変わりがないから、これはベンチマーク側の問題(AVX512をフルに使えば、特に1Tではもう少し高い性能になりそうな気はする)。ただDhrystone/Whetstoneはある意味ベンチマーク側の最適化が進みすぎているので、いまいち生の性能の評価には不適当かもしれない。
ということで、もう少し生の性能が出そうなProcessor Multi-Mediaの結果(グラフ48~51)を。まずグラフ48・49がIntegerであるが、MTだと恐ろしく第3世代Ryzenの性能が高いのは、やはりL3容量が他より大きいため、という事もあるかと思う。1TだとCore i9-9900Kが健闘しているのは、動作周波数の差だけではなく、まだCoffee Lakeの方が多少IPCが高い場合もある、という事と判断して良いかと思う。
この傾向はFloat(グラフ50・51)も同じで、MTだとRyzen 9 3900Xが圧倒的だし、Ryzen 7 3700XもほぼCore i9-9900Kと同じ性能だが、1TになるとCore i9-9900Kの方がややIPCの観点でも有利な様だ。ちなみにRyzen 7 2700Xとの性能差は30%ほどといったところで、倍には程遠い状況であるが、それでも確実に性能が上がっている事は確認された。
ではその他のアプリケーションは? ということでまずはCryptography(グラフ52~55)。AES Encryption/Decryption(グラフ52・53)はある意味AES-NIのベンチマークという感じでもあるが、MTの場合(グラフ52)は最終的にボトルネックは演算そのものよりも読み書きのメモリ帯域にあるため、一番帯域の大きいRyzen 9 3900Xが最高速なのはまぁ妥当な結果である。これが1Tになると途端に数字が暴れだす(なんでEncryptionでRyzen 7 3700Xが妙に数字が低いのか判らない。Decryptionは低くないだけに猶更である)のだが、AES-NIに関して言えばZenもZen 2も差が無い、という事を確認できたのは確かだ。
ただHasing(グラフ54・55)に関して言えば拡張命令が使えない(Hasing命令が存在しない)から、Nativeのx86でゴリゴリ書く(AVX2やAVX512の実装例も存在するが)事になる。ということで結果(グラフ54)を見ると、これも最終的にはメモリ帯域が効果的であり、L3がトータル64MBのRyzen 9 3900Xは非常に高い結果を示している。Ryzen 7 3700XとCore i9-9900Kが同程度(SHA2-256ではなぜか芳しくないが)、そこからRyzen 7 2700Xはやや落ちるといったところで、IPC比では10%程度だろうか。ただ1T(グラフ55)だと逆にCore i9-9900Kが非常に高い数字を示している。これは以前からの傾向であり、ただ以前はMTでもこの高い性能が維持されていたのが、今ではMTに関してはAMDに逆転されてしまったという形だ。
次はFinancial Analysis(グラフ56~58)。Black-Scholes(グラフ56)だと、1Tの結果は大差ない(強いて言えばRyzen 7 2700Xがやや落ち込み気味)だが、MTだとRyzen 7 3700Xがかなり健闘しているし、Ryzen 9 3900Xの結果は圧倒的というレベルである。
Binomial(グラフ57)だと、MTの傾向はまぁ似ているが、1Tでは逆にCore i9-9900Kが落ち込み気味なのが目につく。Monte-Carlo(グラフ58)は丁度中間で、Ryzen 7 2700Xを除くと1Tの性能は大体同程度、MTでは第3世代Ryzenの性能の高さが目立つという辺りである。まぁ後から出てきた製品の性能が低かったら話にならない、という当たり前の話ではあるとは言え、第3世代Ryzen系が悪くない(というか、かなり良い)性能を出せるいうベンチマーク結果の一つと言えよう。ただRyzen 7 2700XとRyzen 7 3700Xの性能を比較していただければ判る通り、ちょっとFPUの能力を倍増したとは思いにくい結果も出ているあたりは、AVX2に対応していないアプリケーションでは従来と性能が変わらない、という当たり前の話が結果からも証明できたということだろうか。
性能評価の最後はImage Processing(グラフ59・60)である。これは画像処理というかフィルタリング処理で、例えばBlurは3×3のConvolution、Sharpenは5×5のConvolution、という具合に良く知られた画像フィルタを実施する例で、なので基本的にはメモリ帯域が広く、かつキャッシュが大容量なほど性能があがりやすい。
ただMTの結果(グラフ59)を見ると、Convolution系はこのルールが成立するが、Oil Painting(9×9のQuantize)やDiffusion(16×16のRandomise)、Marbling(Perlin 2D Noise)などではCore i9-9900Kが最高速、というあたりは必ずしもメモリ帯域やキャッシュ容量だけで決まらない場合がある、という事を見せてくれる。ちなみにいずれのテストでも一番遅いのがRyzen 7 2700Xというあたり、確かにRyzen 7 2700X→Ryzen 7 3700Xで大幅に性能が伸びた事を確認できる。
この傾向は、1T(グラフ60)で一層顕著である。全てのテストで最高速はCore i9-9900Kになっているあたりは、まだIPCという観点で見た場合に第3世代RyzenはCoffeeLakeをキャッチアップしきれた、とは言えない事を物語っている。ただ、それでも随分性能差が縮んだのは事実だ。Ryzen 7 2700XはMTでも逆転できないほどだったのに、第3世代RyzenはMTなら同等あるいはそれ以上の性能をちゃんと出しているからで、その意味ではIPCの15%アップ、という数字の是非はともかくとして性能改善がなされたことは間違いない。