このコード スニペットを使用して、ループ反復ごとのキャッシュ ミス率を計算したいと思います。
int x[2][256];
int i;
int sum = 0;
for(i = 1;i < 256; i++) {
sum += x[0][i] * x[1][i];
}
仮定:
- 配列 x は 0x0 から始まります
- キャッシュが空です
- サイズ 1024 バイト、ブロックサイズ 32 バイトのダイレクト マップ キャッシュ
x の列も通過するため、ループの反復ごとに 1 つのミス率があると言えます。そうですか?
次の質問: キャッシュ サイズが 2048 バイトの場合のミス率は?