次の値を知っているとしましょう。
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)完全アソシアティブキャッシュ内?
アドレスは、次の部分に分割できます。
[ tag | index | block or line offset | byte offset ]
ワード アドレス可能メモリの場合は 0、バイト アドレス可能メモリの場合は log 2 (ワードあたりのバイト数)
log 2 (1 行あたりの単語数)
log 2 (CS)。ここで、CS はキャッシュ セットの数です。
取得したキャッシュ ラインの数は、キャッシュ サイズをブロック サイズ = S/B で割ることによって計算できます (両方にタグと有効ビットのサイズが含まれていないと仮定します)。
アドレスの長さから、オフセットとインデックスに使用されるビット数を引いたもの。アドレスの長さは、メイン メモリのサイズを使用して計算できます。たとえば、バイト アドレス指定可能なメモリの場合、任意のバイトをアドレス指定する必要があります。
ソース: http://babbage.cs.qc.edu/courses/cs343/cache_parameters.xhtml