Zen4 と順序が逆になりましたが Zen3 の結果も手に入れることができました。モバイル向け APU、Ryzen 5 5560U です。
実行ユニットは Zen2 同様 256bit の乗算(積和) x2 + 加算 x2 の構成です。そのため単純な fma 換算ではピーク値が Zen2 と変わらない fma x2 となるのですが、Zen3 の場合少々結果が異なります。
AVX vmulps (32bit x8) n8 : 0.172 64245.3 8030.7 ( 8.0 3.5) AVX vaddps (32bit x8) n8 : 0.172 64267.0 8033.4 ( 8.0 3.5) AVX vmul+addps (32bit x8) n8 : 0.086 128217.7 16027.2 ( 8.0 7.0) FMA vfmaddps (32bit x8) n8 : 0.214 103087.1 6442.9 ( 16.0 2.8) FMA vfmaddps (32bit x8) n12 : 0.275 120290.1 7518.1 ( 16.0 3.3) FMA vfma+mlps (32bit x8) n12 : 0.258 96422.6 8035.2 ( 12.0 3.5) FMA vfma+adps (32bit x8) n12 : 0.172 144552.0 12046.0 ( 12.0 5.2) AVX vml+ad+adps (32bit x8) n9 : 0.244 50965.1 6370.6 ( 8.0 2.8)
fma x2 よりも fma + add の方が値が高くなっており、fma x 2 に加えて add も十分なスループットで回っているように見えます。ピーク値も追加の add 命令の分だけ上昇しています。パイプライン構成自体は大きく変わらないものの、Zen2 より命令発行数と実行効率が向上し、演算性能が上がっている事がわかります。
Zen4 の場合はこれに加えてさらに AVX512 にも対応します。fma だけ見ると違いがないように見えるかもしれませんが、世代毎に演算能力は上がっています。