シナリオ:
- キャッシュ (L1) サイズ (
CS): 32kB - ラインサイズ(
LS):64B - 結合性 (
A): 8 - セットサイズ(
SS):512B(A※LS) - セット (
S): 64 (C/SS) - 読み取り/書き込みオブジェクト (
O) のサイズがLS
仮定(無効な場合は修正してください):
- 仮想メモリ ブロック (サイズ 4kB (
SS*A) で示されるB) は、モジュロのような方法でセットにマップされます。つまり、アドレス0x0 : 0xFFFF(ブロック インデックス (BI) 0) はセット 0 にマップされ、0x1000 : 0x1FFF(BI1) は 1 にマップされます。 - 読み取り/書き込みの要求 (非一時的な書き込み/読み取りは使用されません) では、特定のアドレス
Aを見つけBIて、割り当てられたセットに移動する必要があります。たとえば、A= 0x4600A はBI= 70 になります。これBIはセット 6 (BI%S) にマッピングされます。 - オブジェクト ( ) を適切に (ミスアライメントなしで) r/w
Oしてキャッシュするには、 のアライメントLSが必要です。
質問:
- はキャッシュ内でシリアルに整列されます
Oか、それとも (たとえば) 空きスロット 0 & 1 & 2 の代わりに 0 & 4 & 5 を使用できますか? Oパーティション化されたキャッシュを取得するコスト (ペナルティ) は?Oが複数の に分割されていないと仮定しBます。- 上記と同じ質問ですが、 が
O2 つに配置されている場合は、B2 つのセットが使用されます。 - サイズが(512B)
Oより大きい場合はどうなりますか?SSデータを L2 に移動し、段階的にデータを L1 に移動しますか? 他のセットを使用しますか? - L2 (さらに言えば L3) がすべてのデータに対して小さすぎる場合はどうなるでしょうか?