Sandra 2011 SP1 Engineer Edition(グラフ1~12)

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

まずは定番とも言えるグラフ1のDhrystoneの結果から。.NETやJava環境ではZacate最速なのにALUではAtomにやや水をあけられているとも言える。もっと言えば、比率だけで言えばNanoもかなり高いスコアといえる。実際計算してみると、

Zacate : 6.84GIPS@1.6GHz・2 Core
Atom : 9.00GIPS@1.8GHz・2 Core
Nano : 5.00GIPS@1.6GHz・1 Core

ということになり、Coreあたりの性能を1GHz換算してみると、

Zacate : 2.14GIPS/GHz・Core
Atom : 2.50GIPS/GHz・Core
Nano : 3.13GIPS/GHz・Core

という計算になる。AtomはHyper-Threadingを有効にしているから、仮にこれで3割性能アップと仮定するとHyper-Threading無効の場合は1.92GIPS/GHz・Coreという計算になるが、まぁこれはフェアではなかろう。重要なのは、決してZacate(というかBobcat)コアが高性能に振られているわけではないということだ。

一方FPUに関してだが、ことiSSE3に関してはグラフ2でも判るとおり、かなりZacateの効率が高いことが見て取れる。もっとも厳密に見ると、Single CoreのNanoが一番コアあたりの性能という意味では高かったりするのが、なかなか侮れないとも言えるのだが。

ちなみに仮想マシン上で動く.NETやJavaの場合は、純粋に演算性能以外にキャッシュやメモリアクセスの帯域やレイテンシが影響してくる。こうした部分で「意外に」Zacateが健闘しているというのは、後で示す通りZacateの帯域そのものは決して高い部類ではなく、その割にAtomに比肩しうる性能を叩き出していることからの率直な感想である。ではNanoは? というと、特にL2やメモリアクセスのレイテンシの高さで随分損をしている感じだ。 こうした結果がもっと如実に現れるのがグラフ3である。こちらはマンデンブロ図形の描画を環境を変えながらのテストである。Integer/Floatでは、やはり圧倒的にAtomの性能が高い。特にFloatに関しては、Nanoの躍進も物凄く、Float x8 iSSE2に関してはコアあたりの性能では間違いなくトップである。ではZacateは? というと、Integer/Floatではそこそこだが、Doubleではトップとか、.NET/Java環境では文句なくトップなど、ちょっと他のCPUと明らかに違う傾向を見せているのが面白い。なんというか、ピーク性能は高くないが良く粘る(あるいはトルクが厚い)エンジンとでも評すべき結果になっている。

グラフ4はCryptgrapyの結果であるが、これはPadlock Engineという形でAESのアクセラレータを搭載しているNanoのぶっちぎりなのはまぁ当然として、こうしたアクセラレーション機能を持たないZacateが案外に高い性能を出しているのは非常に興味深い。

グラフ5はSTREAMによるInteger/Floatでのメモリ帯域、及びグラフ6で示すCache & Memory Bandwidthの64MB/256MB/1GBにおけるスコアを平均したものである。当然ながらアクセスパターンが変わると多少数字が前後するのだが、これにより一番変動が激しいのがZacateで、AtomやNanoは多少変動するとは言え、まだ一定のスコアに収まっている。このあたりは後でもう少し細かくみてみたいと思う。

グラフ6はCache & Memory Bandwidthである。ここで面白いのがZacateのスコアで、特に32KBまでの範囲(つまりL1の範囲)内ではNanoよりもスコアが下回る結果になっている。L2以降に関しては、特にNanoのL2の帯域の低さが目立つが、ZacateもやはりL2が動作周波数の半分ということもあってか、やはり帯域は低めである。この様相が大きく変わるのはL2からもはみ出す1MB以降で、ここでは再びZacateがトップになっている。ただこれは先のグラフ5でも判るように、テストによってだいぶ成績が変わってくる訳で、これは後の研究課題にしたいと思う。

グラフ7・8はCache/MemoryのアクセスLatencyである。ことL1に関してはZacateが3.6Cycle、Atomが4Cycle、Nanoが5Cycleといったところで、これはLinear Access/Random Accessのどちらでも同じである。L2の範囲に関しては、やはりNanoのLatencyの大きさがやや目立つといったところ。逆にZacateは半分のスピードの割にLatencyが少ないといえる。Memory Accessになると、AtomはLinearなら低レイテンシ、Randomが高レイテンシという、非常に典型的な特性であるが、ZacateはLinearはややレイテンシが大きめな代わり、Randomでもそれほど急激にLatencyが増えないという、これまた特徴的な性格と言える。

グラフ9~12はVideo関連テストである。本当ならNanoでもこのテストのうちいくつか(例えばグラフ10のOpenGLとか)でスコアが出ないとおかしいのだが、残念ながら実際にやってみると機能が実装されていないとレポートが返ってきてテスト不可である。そんなわけで、この4つのグラフはZacateとAtomのみとなる。

まずグラフ9と10はVideo Renderingである。一応DirectX 11まで対応しているが、ION2がDX10.1までのサポートなので比較のためにDX11は省かせていただいた。結果はご覧の通りで、Single/DoubleともにION2の勝利である。まぁDX11対応とは言え、80SPで492MHz駆動のRadeon HD 6310の処理性能は、ラフに言えば16 CUDA Coreで1.23GHz駆動のION2のほぼ半分といったところで、グラフ9のFloat(単精度浮動小数点演算)のDirectX系のスコアはこれをモロに反映したものいとなっている。グラフ10ではDouble(倍精度浮動小数点演算)で、こちらではDirectX系は単体では扱えないため、エミュレーション動作となっている関係でずっと差が縮まっているが、それでもシェーダー自身の性能差はやはり明確にあることが判る。

ただGPGPU的に扱うとどうか? ということで、グラフ11はDirectComputingを使ってやはりマンデンブロ図形を計算させた場合の結果である。実はION2側はほかにOpenCLでのスコアも出ている(Zacateのドライバはまだこの時点ではOpenCLに対応していなかった)のだが、DirectComputingよりもスコアが低かったので割愛している。こちらでは逆にZacateが結構有利なスコアとなっている。こうした使い方では、性能の逆転もありえる、という一つの例だろうか。同様にGPGPU経由でCryptographyを行わせた結果がグラフ12である。先のグラフ4と比較するとおおむね倍程度のスコアになっており、GPGPUをこのクラスのCPUで使うべき理由の一つとして挙げる事ができるだろう。性能は? というとAES256はION、SHA256はZacateと、これまた優劣を判断しにくい結果になっており、おおむね同等と評すべきなのかもしれない。