Memory 直接映射缓存和完全关联缓存之间的区别

Memory 直接映射缓存和完全关联缓存之间的区别,memory,memory-management,cpu-cache,Memory,Memory Management,Cpu Cache,我不太明白这两个缓存之间的主要区别,我想知道是否有人可以帮助我 我知道,使用完全关联缓存,地址可以存储在标记数组中的任何行上,而直接映射缓存在一行上只能有一个地址 但我只知道这些。简而言之,你基本上回答了你的问题。这是两种不同的缓存组织方式(另一种是n路集合关联,它结合了这两种方式,最常用于现实世界的CPU) 直接映射缓存更简单(只需要一个比较器和一个多路复用器),因此更便宜,工作速度更快。给定任何地址,很容易识别缓存中的单个条目,它可以在哪里。当两个不同的地址对应于缓存中的一个条目时,使用DM

我不太明白这两个缓存之间的主要区别,我想知道是否有人可以帮助我

我知道,使用完全关联缓存,地址可以存储在标记数组中的任何行上,而直接映射缓存在一行上只能有一个地址


但我只知道这些。

简而言之,你基本上回答了你的问题。这是两种不同的缓存组织方式(另一种是n路集合关联,它结合了这两种方式,最常用于现实世界的CPU)

直接映射缓存更简单(只需要一个比较器和一个多路复用器),因此更便宜,工作速度更快。给定任何地址,很容易识别缓存中的单个条目,它可以在哪里。当两个不同的地址对应于缓存中的一个条目时,使用DM缓存的一个主要缺点称为冲突未命中。即使缓存很大并且包含许多过时的条目,它也不能简单地将它们逐出,因为缓存中的位置是由地址预先确定的

完全关联缓存要复杂得多,它允许将地址存储到任何条目中。这是有代价的。为了检查缓存中是否存在特定地址,它必须比较所有当前条目(精确地说是标记)。此外,为了保持时间位置,它必须有一个驱逐政策。通常会实现LRU的近似(最近使用的最少),但也会在方案中添加额外的比较器和晶体管,当然会消耗一些时间

完全关联缓存适用于小型缓存(例如,某些英特尔处理器上的TLB缓存是完全关联的),但这些缓存非常小。我们最多只讨论几十个条目

甚至L1i和L1d缓存也更大,需要一种组合方法:缓存被划分为多个集合,每个集合由“方式”组成。集合是直接映射的,其内部是完全关联的。“方式”的数量通常很小,例如在Intel Nehalem CPU中,有4路(L1i)、8路(L1d、L2)和16路(L3)组。N路集合关联缓存基本上解决了时间局部性的问题,并且在实践中使用起来并不复杂

我强烈推荐加州大学伯克利分校2011年的课程“计算机科学61C”。除其他内容外,它还包含3节关于内存层次结构和缓存实现的讲座


本课程还有一个2015版。

直接映射缓存在这种类型的缓存中,每组有一行,这意味着对于ex,第一行a位于另一行B位于,以此类推,但在完全关联缓存中,只有一个集合,所有集合都位于随机位置。我们不知道块a的哪一行位于其中,而B位于其中坐着希望你能理解,如果你不参考,请参考

YouTube上不再提供该课程,但你仍然可以在“加州大学伯克利分校计算机科学61C 2011”上找到它。这是最新的工作链接: