>>683 >
>>676 > (5)もL3タグ管理をサボるためで,キャッシュのヒット率が落ちるのでマイナスす。
そうともいえない。ヒット率は上がる要素も、下がる要素もある。
上がる方は、キャッシュラインサイズが大きくなったことによって、
メモリアクセスの空間局所性が活かしやすくなるため。
P3 までのラインサイズ 16バイトは少し小さかった。
例えば、アライメントに沿ったところからデータを読み込むと、キャッシュイン
した最初のロード命令に続く 3 ロード命令しかキャッシュヒットが保証されないからね。
# ワード単位のロードね。
キャッシュ率が下がる方は、ご想像の通り。
その他、キャッシュのラインサイズが大きくするとバースト転送の幅を広げられる。
これは短視的に見ると1回のメモリアクセスに掛かるレイテンシを増やしているけど、
全体としてみるとメモリアクセスの回数を減らせるからレイテンシの影響を減らしている。
無論、これは Synchronous DRAM を前提とした話。
P4 でキャッシュラインを広げたからこそ、広帯域メモリが欲しい。
キャッシュラインサイズが 4 倍になっても、メモリ帯域が 4 倍になればレイテンシは
変わらないからね。これはメモリスループットの拡大が、直接 メモリレイテンシの向上
につながる稀有な例ね。
あとね。16バイトのキャッシュラインではソフトプリフェッチが掛けづらいのよ。
米つきバッタ見たいに prefetch 命令を発効し続ける必要があるから。
L3 タグ管理をサボるという目的もないとは言わんが、Intel もちゃんと考えて
ラインサイズを 64 バイトにしてきた。
# 現行のアプリではアライメントが合わないためキャッシュミスが大きくなるけど、
# P4 に最適化が進むとミス率はある程度改善する。