【问题标题】:Direct-Mapped Cache Hit & Miss直接映射缓存命中和未命中
【发布时间】:2013-12-03 07:26:21
【问题描述】:
4 位地址
标记 1 位
索引 2 位
偏移 1 位
每块 2 个字节
4套(每套1块)
我正在尝试确定以下地址是命中还是未命中。我正在介绍我迄今为止获得的信息。
(所有功劳都归于堆栈溢出)
地址
14
设置 3
v = 0
标签 = 1
偏移量 = 0
9
设置 0
v = 0
标签 = 1
偏移量 = 1
2
设置 1
v = 0
标签 = 0
偏移量 = 0
6
设置 3
v = 1
标签 = 0
偏移量 = 0
3
设置 1
v = 1
标签 = 0
偏移量 = 1
【问题讨论】:
标签:
caching
memory
binary
hit
【解决方案1】:
因为它是一个直接映射缓存,它有 4 个集合,这意味着它有 4 个块的容量。
1)地址14,二进制为:1110
假设一开始缓存是空的,我们有一个未命中,我们将这个词存储在缓存中。标签 1,位于第 3 组。
2) 地址9,二进制为:1001
标签 1 ,设置 #0,我们错过了。因此我们将其存储在集合 0 上。
3) 二进制地址2; 0010
这个块在第 1 集上,它是空的。我们错过并存储它。带有标签 0
4) 二进制地址6:0110
因为我们已经在集合 3 中存储了一个块,所以我们比较它。由于它们的标签不同 Tag 0 != Tag 1 我们驱逐前一个并存储新的。小姐
5)二进制地址3:0011
这个块进入第 1 组,因为我们已经在第 1 组中有一个块,所以我们比较它。
因为它们的标签等于 0 = 0,所以我们得到了一个 HIT。