直接映射缓存的工作原理

how direct mapped cache works

最近在上cache memory相关的lecture,努力解决课本上的习题

教材中有直接映射缓存相关的问题

给定条件:

 all with a total of 8 words of data: 

 C1 has 1-word blocks, 

 C2 has 2-word blocks, 

 C3 has 4-word blocks

给出的单词地址:

3, 180, 43, 2, 191, 88, 190, 14, 181, 44, 186, 253

下图是我的答案。

Tag= QUOTIENT(Word Address,8) // total 8 word
Cache 1 index = MOD(QUOTIENT(Word Address,1),8) // 1 word per block, 8 block
Cache 2 index = MOD(QUOTIENT(Word Address,2),4) // 2 word per block, 4 block
Cache 3 index = MOD(QUOTIENT(Word Address,4),2) // 4 word per block, 2 block

我用上面的等式回答了 tag,index

hit/miss:如果相同的 tag,index 已经显示在 table 中。然后点击 else miss

这一个给出了解决方案。

我错过了什么吗? 请帮助我理解这一点...

将缓存想象成旅馆的走廊的一种方式,每个房间都有一个编号(索引)和一个客人(标签)。现在让我们获取地址列表并将它们放入我们的留言簿中。首先,我们想 运行 沿着走廊直到我们到达我们的房间(索引),在那里我们想根据我们的留言簿检查客人的名字(标签),如果它匹配得很好!太成功了!

但是,如果我们到了房间,那里客人的名字与留言簿上的名字不符(小姐),我们必须礼貌地驱逐他,让正确的客人入住那个房间。

现在因为这是一个愚蠢的酒店,我们必须在留言簿中逐个进入,一旦我们检查了一个条目就不再重要了,如果一个新条目说要驱逐刚到那里的客人,你做吧。

现在,如果我们有一家酒店的房间可以容纳两位客人,但他们必须有相同的姓氏,我们会想要找到正确的房间(索引),检查双方的姓氏(标签)然后检查名字(偏移量)。

如果姓氏在任何时候不匹配,您将驱逐这对夫妇并在您的留言簿上引入具有相同姓氏的新夫妇。

因此,如果我们查看您的回答,我们可以看到,您没有忽略房间里的前一位房客,而是说如果特定房客在特定房间内的任何时间,就会产生影响。