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(每字字节数)用于字节可寻址存储器

块或行偏移位数

日志2(每行字数)

索引位数

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 回答