I-CacheのAssosiativityを見たので、D-CacheについてもAssociativityを確認しておこう。グラフ48~59は、16/32/64/128 EntriesでForward/Backward/Randomの各アクセスパターンでD-Cache Accessを行った場合のLatencyである。まず16Entry(グラフ48~50)の場合、ZacateとAtomは全域で3Cycleを維持しているのに、なぜかNanoだけは途中で75cycle程度に跳ね上がっている。この75cycleというのは微妙で、例えばグラフ18と見比べれば判るとおり、Memory Accessが入っているには高速すぎ、一方L2にしては遅すぎる。そもそもL1 D-Cacheも16wayだから、こんな風に8Segment目から急速に跳ね上がる理由がない。考えられるのは、D-Cacheのコントローラが何か面倒な事をしている、という程度だろうか? ちょっと不思議な部分だ。

次が32Entry(グラフ51~53)で、ここに来てAtomも明確にLatencyは増え始めた。Atomの場合L1 D-Cacheは6way set associativityだから6のところでちょっとでこぼこが見えるが、それ以前に4 Segmentあたりから次第に増えてゆくのがちょっと特徴的だ。6wayといいつつも、最初の4wayあたりまでは比較的高速にサーチできても、6way分全部嘗めるのには多少時間がかかるということかもしれない。16 Segmentをすぎると一段Latencyが増えるのはL2 Missの影響もあるだろうし、70cycle弱というLatencyもグラフ18の結果から見ればそれほど不思議な数字ではない。そしてここでもZacateが3cycleを維持しているのはちょっと驚異的である。

64 Entries(グラフ54~56)、及び128 Entries(グラフ57~59)では、さすがにどのCPUでもそれなりにあふれるために、だいぶ特性が変わってくる。とりあえず明らかに他と何か違う、と思わせるのがNanoである。実は今回、何かヒントでもないかと思ってNanoのWhite Paperを改めて読み直してみたが、さすがにこうした部分に関する説明は特になかった。まぁNanoは今回、他にも色々変わった振る舞いを見せてくれているので、この位のことであれこれ驚いてはいけないのかもしれないが。ではZacateとAtomは? というと、こちらは良く見かけるLatencyの増え方になっている。どちらが高速か? というのは非常に微妙であるが、実際この64Segment分の平均値を取ってみると、

64 Entries Zacate Atom
Forward 43.53 49.50
Backward 42.13 49.49
Random 42.65 49.29
128 Entries Zacate Atom
Forward 51.03 50.79
Backward 50.85 50.77
Random 49.70 50.36
(※数字はいずれもcycle)

といいう具合で、128 Entriesでは概ね同等だが、64 EntriesではややZacateが高速という形だ。

ということで、グラフを45枚ほど費やしてRMMAの結果をご紹介してきた。このRMMAの結果から簡単にまとめをすると、とにかくZacateのアーキテクチャはピーク性能を狙っていない、という感じを強く受ける。Atomがピーク性能は高い一方で、複雑な処理は結構時間がかかるとか、リニアアクセスは滅法速い一方でランダムアクセスは遅いといった具合に性能にかなりメリハリがあり、ピーク性能の高さでアベレージの性能を稼ぐという方向性なのに対し、Zacateはピーク性能こそそこそこだが、複雑な処理でもそれほど性能が落ちない、という形で性能の底上げを図っている様に感じられる。これはかつてのK7の方向性そのものであり、見かけ上の構造はP6に似ているといっても、中身の実装はまるで違うものになっている、という感じを強く受ける結果になった(むしろAtomの方がP6に近い性格であろう)。このあたりは明確にメーカー毎の気風というか考え方が出てきている部分に感じる。L1 D-Cacheの帯域が8Bytes/cycleというのも、SSE命令を除けば概ね8Bytes/cycleで十分間に合うし、Zacate(というかBobcat)コアはSSE系命令を駆使して大量のデータを処理する的な用途を想定していない、という割り切りが根底にあるように思える。I-Cacheの帯域は公称32Bytes/cycleで、実際に今回も16Bytes/cycleまでは確認しているから、別にインプリメントできない何か理由があったとは思えない。意図的にインプリメントをしなかった、と考えるのが妥当だろう。理由はおそらく消費電力削減にあると思われる。

先にSandraの考察の中で、Zacateはトルクフルなエンジンと評したが、RMMAの結果もこれを強く印象付けるものになった。

その一方で謎なのがNanoである。RMMAを通して、このプロセッサがどこを目指しているのかが更に良くわからなくなってきた。なんというか、インプリメントが非常にちぐはぐ、という印象をうけている。基本的にはAtom同様にピーク性能で稼ぐという方向性に見えるのだが、とにかくデコーダと演算ユニット、L1キャッシュ以外の全てが非力すぎ、という感じだ。演算ユニットを重厚にする前に、もう少しキャッシュとかTLB周りの性能を改善すれば、もっと効率よく性能が出せそうに思う。もしくは、現段階のNanoは初のスーパースケーラ動作ということでまだ「とりあえず」でインプリメントした部分が多く、今後の製品の中で次第に改良してゆく、という方向性なのかもしれないが。あとチップセットの性能がかなりお粗末、というのはまぁ仕方ないのかもしれない。そもそもVB8001が搭載するCN896は、2007年にVIA C7向けに発表された製品だからもう4年も前になるわけで、これは致し方ないところ。もう少しあたらしいVN1000あたりと組み合わせると、多少なりとも性能は改善するのかもしれないが、そうした選択肢があまりないNanoだけに言っても仕方ないところではある。まぁこの後のテストでは、このチップセットの古さが足を引っ張っている部分もある、ということを念頭においておく必要があるだろう。