Sandra 2016 Engineer Edition(グラフ1~22)

SiSoftware
http://www.sisoftware.co.uk/

CPUの比較ということでまずはSandra 2016を。ちなみにCore i7-5960X + DDR4-2133の構成ではImage Processing以下のテスト結果がない(単にベンチマーク側の問題でデータが欠落していた)ほか、Core i7-6950X + DDR4-2666の環境でJavaが正しく動作しなかった関係で、これらのデータが落ちているのをご了承いただきたい。

グラフ1がDhrystone、グラフ2がWhetstoneである。まずDhrystoneを見てみるが、Sandra 2016からは64bit整数(long)での処理も加わっている。相変わらずNativeよりJavaの方が高速とか不思議な点はあるのだが、それぞれの処理系の中で比較する限り概ねセオリー通りである。

Turbo Boostとかを無視して定格動作で考えると、Core i7-5960X : Core i7-6700K : Core i7-6950X= 3GHz×8 : 4GHz×4 : 3GHz×10 = 24 : 16 : 30となるわけで、ラフに言えば8 : 5 : 10に近い比率である。今回の結果でいえば、少し差は小さいものの、おおむねこのような形になっている。これはWhetstoneも同じである。これに関しては、ほぼスペック通りの結果となった。

これは次のProcessor Multimediaも同じである。グラフ3がInteger、グラフ4がFloatでの結果である。この2つのグラフは、値が2桁ほど変動する関係で横軸を対数表示にしている。そのためグラフの長さではなく数字で見ていただきたいのだが、やはりおおむね8 : 5 : 10に近いものになっているのが分かる。

ではもうすこし現実に近いものでは? ということで、グラフ5はAESのEncryption/Decryptionであるが、ここではプロセッサの性能もさることながらメモリ帯域が結構効いてくるようで、結果Core i7-5960XとCore i7-6950Xが大差ない(というか、Core i7-5960Xの方が微妙に高速)という結果になっているのは面白い。コア数が2つ違うのに性能はむしろCore i7-5960Xが上だからだ。ただ、ではコア数が無関係かというとCore i7-6700Kが苦戦しているあたりは、やはりコア数ではなくメモリ帯域が問題な気がする。

Hasingh(グラフ6)では多少様相が変わってくる。こちらは再び8 : 5 : 10のルールが復活するようだ。

次がFinancialであるが、Black-Scholesとそのほか2つで出力が4桁違うので、別のグラフとさせていただいた。まずBlack-Scholes(グラフ7)は、これまた8 : 5 : 10が復活する。BinominalとMonte Carlo(グラフ8)も同じで、このあたりは純粋にCPU性能がそのまま効いてくるようだ。

Scientific(グラフ9)では意外なことに、Core i7-5960XのGEMM(General Matrix Multiply)の結果が伸びない。もっともFFTとかN-Bodyの値はそれなりになっているから、別に測定ミスという訳でもなさそうだ。むしろCore i7-6950Xの数字が理論以上に良い、と判断すべき結果になっている。

CPU性能周りの最後は、Sandra 2016から追加されたImage Processing(グラフ10)の結果である。こちらは再び8 : 5 : 10という感じの結果になっている。

グラフ11がInter-Core Efficiencyである。おおむね理論通りというか、コアの数が全部違うからあまり公平な判断にはならない気もするが、セオリー通りという感じだ。

グラフ12がDetailであるが、こちらもまた8 : 5 : 10のルールがそのままという感じである。本当だとメモリ帯域の差が8×4Mとかでは出てくるはずだが、数字が小さすぎて埋没している感がある。ただ、4×1M以上ではCore i7-6950XよりもCore i7-5960Xの値が上、というあたりにこのあたりがちょっと垣間見える。

ではメモリ帯域は? ということでグラフ13がStream Integer、グラフ14がStream Floatである。生憎ここではCore i7-6950X + DDR4-2666のデータが取れていないのだが、DDR4-2133を比較してもCore i7-5960Xの方が微妙に高速、という結果が出ており、メモリ帯域に関しては両者同等として良さそうだ。

もう少し細かく、ということでグラフ15がCache&Memory Bandwidthの結果である。ここからは逆にCore i7-5960X + DDR4-2133のデータが取れていないのだが、LLCが効果的な16MB(Core i7-6700Kのみ8MB)までは8 : 5 : 10の法則が成立するのは当然として、その先はメモリ帯域がモロに効いてくることになっており、結果としてCore i7-5960XとCore i7-6950Xがほぼ互角になっている。

ついでにLatencyの方も見ておく。グラフ16~18がGlobal Data Memoryのケースで、Sequential(グラフ16)を見るとSkylakeコアのCore i7-6700Kのみ512KB以上でややLatencyが増える(LLCのアクセスが1cycle多い模様)以外はセオリー通りの結果となっている。

64MB以上では、動作周波数の差を考えるとCore i7-6700KのLatencyがかなり低めであるが、これはDDR4が2chと4chの差がある事を考えると妥当な範囲内だろう。

In-Page Random(グラフ17)もほぼセオリー通り。恐らくCore i7-5960X+DDR4-2133のLatencyもCore i7-6590X+DDR4-2133とそう違わないだろうと予想される。Full Random(グラフ18)では多少バラけるが、こちらも特におかしな点はない。

一方グラフ19~21はInstruction/Code Memoryのケースである。Cache Missの場合にPage Faultが発生するのはGlobal Data Memoryと同じだが、その際に参照するのがD-TLBではなくI-TLBということで、若干サイズが異なる。そのため、全体的にLatencyが増えるのは致し方ない。

Sequential(グラフ19)では16~32MB以上の場合のLatencyがグラフ16と比べて5~10cycle以上増えるのはこれによるものだ。これはIn-Page Random(グラフ20)やFull Random(グラフ21)でも同じだが、ことCore i7-6700Kに関してはIn-PageではむしろLatencyが(グラフ17と比べて)減っているのに、Full Randomだと倍とは言わないまでも200cycleほど増えているのはなかなか興味深い。

ちなみにLatencyに関しては、DDR4-2133とDDR4-2666で大差ないというか、微妙ながらLatencyが減っているケースがあるので、むしろDDR4-2666の方が好ましいと言えるだろう。

最後にPCI Expressの帯域測定ということでVideo Memory Bandwidthの結果(グラフ22)を示す。System to Device(CPU→GPU)ではCore i7-6700Kが若干健闘しており、ついでCore i7-6590X、一番低いのがCore i7-5960Xという結果だが大きな差ではない。一方Device to System(GPU→CPU)はもう本当に誤差の範囲でほぼ全部同等と見なしてよさそうだ。