
32 ビットのアドレス指定可能なメモリと 4 kib のダイレクトマップ キャッシュがあると仮定します。キャッシュのすべてのエントリ (行) は、一意のワード (32 ビット) で構成されているとします。
4*2^10 バイト / 4 = 2^10 ワード = 2^10 行なので、インデックスのサイズは 10 ビットであると推測できます。
1 行に 1 ワードしかないので、オフセット フィールドは必要ないと思います。したがって、キャッシュのアドレスは次のように分解されます。
- ビット0〜9:インデックス
- ビット 10 ~ 31: ラベル
私の論理はどこか間違っているのでしょうか?
答え1
32 ビットの値には 4 バイトがあり、各バイトは個別にアクセスされる可能性があるため、オフセットには 2 ビットが必要です。したがって、オフセットは 0、1、2、または 3 になります。
したがって、直接マップされたキャッシュによってアドレスは次のように分解されます。
- ビット0〜1:オフセット
- ビット2~11: インデックス
- ビット12~31: ラベル
答え2
キャッシュ ラインは通常 64 バイトで、オフセット ビット 0 ~ 6 によってライン上のバイトが選択されます。