Stream(グラフ140~143)

最後にちょっとこの結果を分析してみたい。先にSandraの結果でInt及びFloatにおけるStreamの結果(グラフ8・9)を示したが、RMMAも実はStreamのテストを持っている。ちょっとここでグラフ8・9から数字を抜き出すと、

Int Assignment Scaling Addition Triad
FX-4100(2.3G) 8.11 8.42 8.73 8.82
A8-3870K(2.3G) 12.61 12.58 13.00 13.04
A10-4600M 9.64 9.61 9.94 9.96
Float Assignment Scaling Addition Triad
FX-4100(2.3G) 8.09 8.45 8.77 8.78
A8-3870K(2.3G) 12.64 12.57 13.00 12.99
A10-4600M 9.45 9.52 9.80 9.88

となる(単位は何れもGB/sec)。これをBytes/cycleに直すと、

Int Assignment Scaling Addition Triad
FX-4100(2.3G) 3.53 3.66 3.80 3.83
A8-3870K(2.3G) 5.48 5.47 5.65 5.67
A10-4600M 4.19 4.18 4.32 4.33
Float Assignment Scaling Addition Triad
FX-4100(2.3G) 3.52 3.67 3.81 3.82
A8-3870K(2.3G) 5.50 5.47 5.65 5.65
A10-4600M 4.11 4.14 4.26 4.30

といった数字になる(単位は何れもBytes/cycle)。この数字、グラフ140~143とはちょっと異なるのだが、これはSandraが全コアで一斉にStreamを実行する結果で、対してRMMAはSingle Threadでの数字になることに注意されたい。

そうした予備知識を元に数字を見てみると、まずA8-3870Kの結果は4つのテストのいずれもSingle Threadでは2.2Bytes/cycle程度で低め安定であるが、4コア合計だと5.5Bytes/cycleでトップになっている。対してFX-4100はテストによってムラがあるものの、2.5Bytes/cycle~3Bytes/cycleとSingle Threadでは最速ながら、4コア後継だと3.5~3.8Bytes/cycleと一番低い結果に終わっている。またAssigmnment(RMMAではCopy)やScalingはやや低く、Addition/Triadでは高いというのがRMMAでもSandraでも共通した傾向である。ではA10-4600Mは? というと、グラフを見る限りあまりTurboの影響は考慮しなくても良さそうなので、今回は元データのほうを使うと、Scaleに関してはFX-4100とほぼ同等ながら、その他のテストでは少しずつFX-4100より低い数字というのがSingle Threadでの結果である。ところがSandraの結果を見ると、むしろFX-4100よりも良い数字が出ているわけで、これはTurboというよりもMemory Controllerの違いか? という気がする。これまで見てきた中で、必ずしもA10-4600Mのメモリコントローラの特性がすごく良いという話は出てこなかったのだが、Streamの結果を見ると、こうしたアクセスが集中する場合にはBulldozerの元々のコントローラよりも改善されているかもしれない、という気がする。

では何でRMMT(グラフ20・21)でそれが出なかったか? というと、Streamの場合はMemoryのReadとWriteが同時に行われる処理になるからで、RMMTはReadのみ/Writeのみで確認しているため、これが判らなかった可能性はある。あくまで傍証程度の話ではあるが、Piledriver世代(というか、Trinity世代)ではBulldozer世代よりもRead/Writeが混在した場合の性能改善がなされている可能性がある、ということは指摘しておきたい。