关于Cache的计算
direct-mapped-Cache
每个主存地址对应到Cache中一个确定的地址(多(内存地址)对一(Cache地址))
一个CPU给出的地址:
地址结构 | Tag | Index | 字节内偏移量 |
---|---|---|---|
作用 | 与Cache中AdressSpeicher中的值比较 | 定位到某一个Cache Zeile(有 2 ^ n 行则需要n位Index ) | 定位到 |
1. 计算一个Cache的总位数
假设:
- 32位字节地址
- direct-mapped-cache
- cache有 (2 ^ n) 个Block,即有(2 ^ n)行 –> n位被用作Index
- 一个Block大小为 (2 ^ m) 个word(有 2 ^ (m + 2) 个Byte ), 因此用 m 位来查找块中的字, 2位是字节偏移信息。
–> 标记域(Tag)的大小为:
32 - (n + m + 2)
direct-mapped-cache的总位数为:
(行数) * (block大小 + Tag大小 + 有效位大小)
所以上面的cache总位数为:
(2 ^ n) * (2 ^ (m + 2) * 8 + (32 - m - n - 2) + 1)
上面计算的是实际的大小,但通常对Cache命名只考虑==数据的大小(Datenspeicher的容量)==不考虑标记域和有效位域的大小。
例:
一个direct-mapped-cache,有16kB的数据,块大小为4个word,地址为32位,那么该cache总共需要多少位?
一个Block有4个word,每个word为4Byte
–> 每个Block大小为:
4 *