高速缓存寻址:索引长度,块偏移,字节偏移&标签?

时间:2013-01-10 13:30:55

标签: memory mips cpu-cache

假设我知道以下数值:

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)在完全关联缓存中?

1 个答案:

答案 0 :(得分:14)

地址可分为以下部分:

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

字节偏移位数

对于字可寻址存储器,

0,对于字节可寻址存储器,log 2 (每字字节数)

块或行偏移位数

log 2 (每行字数)

索引位数

log 2 (CS),其中CS是缓存集的数量。

  • 对于完全关联,CS为1.由于log 2 (1)为0,因此没有 索引位。
  • 对于直接映射,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