共有L3キャッシュの搭載(Photo16)

Photo16:L1~L3キャッシュの構成。もっとも実際には、各コアのCache Controllerからのリクエストとか各コアの利用配分にあわせてL3キャッシュの分配を決める、L3専用コントローラがどこかに居るはずだが。

順序が更に前後している気もするが、Phenomコアでは遂に2MBの共有L3キャッシュが搭載された。もっともIntelと異なり、共有といいながらもVictim Cacheとして動作する。つまりL3は物理的には共有だが、論理的にはデータの共有などは行われない。そうなると「何のために共有構造にしたのだ?」という話は当然出てくるが、現時点でのメリットは、IntelのSmart Cache同様に、ニーズに応じて動的にL3の割当量を変えられることだろう。例えば4つのコアがどれもフル回転し、かつ同程度にメモリアクセスが発生していれば、4つのコアに対して均等に512KBづつを振り分ける。ところが、4つのコアのうち動いているのが1つのみで、残りの3つが休止中なんて条件では、理論上はそのコアがL3キャッシュをほぼ独り占めして2MB占有可能となる。

この効用は、例えばグラフ4と6を比較してもらえば判りやすい。RightMarkの場合、Single Threadのベンチマークだから、実施中は必要ならばL3を独り占めできる。この結果、例えばグラフ4のCMP #6のグラフを見ると、最初は18Bytes/cycle程度だが、64KBのあたりで4Bytes/cycle程度まで落ち込む。これはL1が溢れたためだが、そのまま576KB付近まで持ちこたえる。ここでL1+L2が溢れて落ち込むが、それでも1.6MB付近までは2Bytes/cycle弱を維持し、そこから緩やかに低下して2.6MBあたりで1Bytes/cycle以下となる。2.6MB付近まで2Bytes/cycleが維持しないのは、他のアプリケーションとL2を共用する(というか、何しろOSが動いているから、完全に2MBを占有するのは現実問題難しいだろう)ためであるが、使い方次第ではこんな具合に512KB以上を占有できる場合がある。

勿論こんな事をしないで各コアに2MBのL2キャッシュを配分したほうが性能は上がるかもしれないが、当然ダイサイズが大きくなるから、これはAMDとしては避けたい選択だろう。ダイサイズが限られる中で何とかキャッシュ容量を増やすための苦肉の策、と言えなくも無い。

グラフ55

では実際どの程度のスループットがあるのか、を比較したのがグラフ55である。最近のSandraでは、このテストもMulti-Threadで行われている関係で、ここにも"(なんちゃって)Athlon 64 X4"を入れてみた。結果はご覧の通りで、妙に最適化されたCore 2がL1~L2 Cacheの範囲で高いスコアを示すものの、Phenomも"(なんちゃって)Athlon 64 X4"の倍以上のスループットを叩き出す健闘ぶりを示しており、少なくとも以前よりは大幅にギャップが縮まった(その理由の最たるものは、やはり32Bytes/cycleのL1への帯域だろう)と言える。

グラフ56

グラフ57

同様に、やはりSandra VIIでキャッシュレイテンシを比較したのがグラフ56、57である。L3までのVictim Cache構成が悪影響を及ぼすかとも思ったが、むしろAthlon 64 X2よりも全域でレイテンシが少なくなっている。

グラフ58

ただ、Multi-Core Efficiencyのテスト結果(グラフ58)をみると、Athlon 64 X2とどっこいどっこいというか、相変わらず成績は非常に悪い。コア間の通信のLatency(折れ線)も良くは無い(それでもAthlon 64 X2よりはだいぶ改善しているが)し、Bandwidth(縦棒)も褒められたものではない。

グラフ59

この傾向はDetail(グラフ59)を見ると、よりはっきりする。16KB~32KBといった小サイズ、あるいは8MBといった、非常に大量のデータをコア間で交換する場合のスループットは、Core 2 QuadもPhenomも大差ない。問題はその中間、つまりCore 2 Quadの共有L2キャッシュに収まるようなサイズのデータ交換が異様に遅い。先ほども書いたとおり、L3はExclusive Victim Cacheの構成である。だから、例えばCore 2 Quadは図3の様に、同じダイ上であればL2キャッシュを介在してデータ交換できるし、異なるダイ上であればL2キャッシュのコピーという形で素早く交換できるのに対し、Phenomではどんなサイズのデータであっても図4の様にL2キャッシュ間でクロスバースイッチ経由での通信となる。スループットはこのコア⇔クロスバースイッチの帯域で決まってくるわけで、共有L2を持つCore 2 Quadとは比較にならない。

図3

図4