7

次の値を知っているとしましょう。

W = Word length (= 32 bits)
S = Cache size in words
B = Block size in words
M = Main memory size in words

次の場合に必要なビット数を計算するにはどうすればよいですか。

- Index
- Block offset
- Byte offset
- Tag

a)ダイレクトマップキャッシュ内b)完全アソシアティブキャッシュ内?

4

1 に答える 1

18

アドレスは、次の部分に分割できます。

[ tag | index | block or line offset | byte offset ]

バイト オフセット ビット数

ワード アドレス可能メモリの場合は 0、バイト アドレス可能メモリの場合は log 2 (ワードあたりのバイト数)

ブロックまたはライン オフセット ビット数

log 2 (1 行あたりの単語数)

インデックス ビット数

log 2 (CS)。ここで、CS はキャッシュ セットの数です。

  • 完全連想の場合、CS は 1 です。log 2 (1) は 0 であるため、インデックス ビットはありません。
  • Direct Mapped の場合、CS はキャッシュ ラインの数である CL に等しいため、インデックス ビットの数は log 2 (CS) === log 2 (CL) になります。
  • n 方向連想 CS = CL ÷ n の場合: log 2 (CL ÷ n) インデックス ビット。

取得したキャッシュ ラインの数は、キャッシュ サイズをブロック サイズ = S/B で割ることによって計算できます (両方にタグと有効ビットのサイズが含まれていないと仮定します)。

タグビット数

アドレスの長さから、オフセットとインデックスに使用されるビット数を引いたもの。アドレスの長さは、メイン メモリのサイズを使用して計算できます。たとえば、バイト アドレス指定可能なメモリの場合、任意のバイトをアドレス指定する必要があります。

ソース: http://babbage.cs.qc.edu/courses/cs343/cache_parameters.xhtml

于 2014-03-27T18:52:17.630 に答える