我很困惑偏移位代表什么。它们在确定缓存是否命中或未命中方面发挥任何作用吗?
例如,如果我们有 4 个集合,每个块 2 个字节,每个集合 1 个块,那么我们需要使用 4 位地址映射。第一位是标签,接下来的两位是我们设置的编号,最后一位是我们的偏移量。我们正在使用直接映射缓存系统。
我的教授的笔记指出,如果我们首先寻找 0000,我们就会错过。这是有道理的,这是一个强制性的错过。但当我们寻找 0001 时,它就成功了。这是因为偏移位没有发挥作用吗?
我最初认为它在 N 集关联缓存中可能有用,但即使如此我也看不到它的作用。
我预计这两个地址都会丢失,但第二个地址却命中了。
因此,在您的场景中,偏移量并不重要。但是,想象一下您的缓存中的集合允许存储多个块。在这种情况下,偏移量将指示标签将存储在该地址内的哪个块中。
一个集合可以允许存储两个块 - 在这种情况下,第一个空间中将包含偏移量“0”,第二个空间中将包含偏移量“1”。因此,您会出现“未命中”,但仍然可以存储在该缓存集中,而不会删除当前存储在其中的内容。
希望这是有道理的!