65nm Athlon64 X2のL2キャッシュレイテンシ増加

和田さんの65nm Athlon64 X2のベンチマークが出ている。http://pc.watch.impress.co.jp/docs/2006/1227/tawada93.htm一応ハードを確認しておくとCPU以外に変更点はないようだ笑。注目はメモリアクセス性能がどの程度低下しているかだった。
CPUに計算させるとき一回に利用するデータをキャッシュに載る範囲で最大限にした方が効率がよいのだけど、これを越えてしまうと必要なデータがキャッシュから押し出されて失速といってもいいような性能低下になってしまう。IntelC2Dが4MB!と極端に大きなL2キャッシュをもっているので、これに最適化したプログラムをL2キャッシュの容量が1/2〜1/4しかないAthlonで動かすと、著しく遅いものも出かねない。
AMDもあたらしいプログラムが出てくる頃までにL2キャッシュを増やす必要があり、そのための変更としてL2キャッシュへのアクセスにかかる時間が12cycleから20cycleへと6割増しになっている。L2キャッシュのコントローラと容量を一度に変更できないのは会社のリソースが小さいためか。http://northwood.blog60.fc2.com/blog-entry-448.html
【表3】PCMark05 Memory Testの結果を改変してL2変更前後のCPUの性能比にした

Read
16MB 0.97
8MB 0.97
192KB 0.79
4KB 1.00
Whirte
16MB 0.98
8MB 0.98
192KB 0.88
4KB 1.00
Copy
16MB 0.97
8MB 0.97
192KB 0.90
4KB 1.00

データがL2キャッシュにのる192KBで性能が大きく低下している。特にReadでの性能低下がおおきくて8割以下になっている。192KBというのは64KBのL1dataキャッシュをもつAthlonからするとおおよそ1/3がL1, 2/3がL2に載る。L2キャッシュ本体の性能は0.68でアクセスサイクルから単純に出せる理論値0.60より良い。write側は081でさほど低下していない。レイテンシは12→20cycleで正しいようだからhttp://www.techreport.com/onearticle.x/11486スループットを改善する工夫がされていそうだ。
面白いところは、これまでのAthlonの2read1writeのアーキテクチャからRead性能が良かったのがR/Wが1:1に近づいている。プログラムの実行性能は0.1割以下の低下なので、Athlonが誇っていたRead性能って、実際のプログラムにはあまり影響しなかったのもしれない。CISCだから、この比率のほうがよかったのかなー?それとL2のメモリ帯域とDRAMのメモリ帯域はほとんど同じってどういうこっちゃ。

追記

anannd tekの追記によると12→14cycleに変更された(20cycleではない)らしい。でも、上のデータを見るとReadに関しては、もっとダーメージが大きい。ReadとWriteの情報が混じっているのでないだろうか?
またL2キャッシュ増加のためにレイテンシを増やしたいう説明も後退している。65nmプロセスでは低電圧でsRAMを安定に動作されるのが、難しいらしいのでsRAMの性能低下も関係しているかもしれない。
L2キャッシュを普通に2倍に増やしても1割程度の性能向上にしか働かない。これ以上の効率を求めるなら、キャッシュ操作する命令を加える必要がでてくるんじゃないか?