如果我有一个
32位地址
,
缓存大小(c)8 KB
,
块大小(b)16 B
,
设置关联性(a)1
它是直接映射缓存,缓存中每行的位数是多少?包括脏位和有效位。缓存中的总行数是多少?
我通过互联网搜索得到的一些想法是
offset bits = log b = 4 bits
index bits = log c/b * 1024 = 9 bits
tag bits = 32 - offset - index = 19 bits
validity and dirty would have 1, 1 bit
仍然感到困惑,我将如何计算缓存的大小或该缓存有多少行?
您的Internet搜索为您提供了正确的答案。
对于32位地址,如果将4位用于块偏移,将9位用于索引,则意味着标签需要其余19位。
由于这是直接映射高速缓存,因此替换策略(例如LRU)不需要位。您至少需要一位才能有效。使用2位,您可以实现像MESI这样的缓存一致性算法。因此,每个块需要20至21位。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句