■ 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が混在した場合の性能改善がなされている可能性がある、ということは指摘しておきたい。