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

疯狂的鼓膜

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

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

但这就是我所知道的。

格言

简而言之,您已经基本回答了您的问题。这是组织缓存的两种不同方式(另一种方式是n路集关联,将两者结合起来,并且在现实世界中最常使用)。

Direct-Mapped Cache比较简单(只需要一个比较器和一个多路复用器),因此更便宜且工作更快。给定任何地址,很容易在高速缓存中标识单个条目的位置。使用DM高速缓存时的主要缺点是冲突缺失,即两个不同的地址对应于高速缓存中的一个条目。即使高速缓存很大并且包含许多过时的条目,也不能简单地逐出这些条目,因为高速缓存中的位置由地址预先确定。

完全关联缓存要复杂得多,它允许将地址存储到任何条目中。有一个价格。为了检查高速缓存中是否有特定地址,它必须比较所有当前条目(准确的标记)。除了要保持时间上的局部性,它还必须有驱逐政策。通常会实现LRU(最近最少使用)的近似,但是它也会在方案中添加其他比较器和晶体管,因此当然会花费一些时间。

完全关联的缓存适用于小型缓存(例如,某些Intel处理器上的TLB缓存是完全关联的),但这些缓存很小,甚至很小。我们最多谈论的是几十个条目。

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

我强烈推荐UC Berkeley于2011年开设的课程“ Computer Science 61C”,该课程可在Archive中找到除其他内容外,它还包含3个关于内存层次结构和缓存实现的讲座。

YouTube上免费提供此课程的2015年版

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

直接映射指令高速缓存VS使用LRU替换的完全关联指令高速缓存

来自分类Dev

缓存大小和设置关联映射

来自分类Dev

缓存大小和设置关联映射

来自分类Dev

直接映射的缓存示例

来自分类Dev

symfony中私有缓存和公共缓存之间的区别

来自分类Dev

AppFabric:默认缓存和命名缓存之间有区别吗?

来自分类Dev

Cassandra行缓存和分区键缓存之间的区别

来自分类Dev

NSURLSessionConfiguration和NSMutableURLRequest的缓存策略之间的区别

来自分类Dev

缓存和寄存器之间的区别?

来自分类Dev

路由缓存和邻居表之间的区别

来自分类Dev

MIPS阵列直接映射缓存

来自分类Dev

直接映射的缓存如何工作

来自分类Dev

PHP框架缓存与Redis缓存之间的区别

来自分类Dev

Azure Reddis缓存和Azure CDN之间的区别

来自分类Dev

物理和虚拟缓存之间有什么区别?

来自分类Dev

如何计算完整关联映射缓存的标签?

来自分类Dev

直接映射和R2RML之间的区别

来自分类Dev

C-缓存行和关联

来自分类Dev

Ioredis客户端是否缓存哈希槽和节点地址之间的映射?

来自分类Dev

Ioredis客户端是否缓存哈希槽和节点地址之间的映射?

来自分类Dev

django-redis-cache和django-redis与Django的Redis缓存之间的区别?

来自分类Dev

Zcache缓存$ cache-> addItem和$ cache-> setItem之间的区别

来自分类Dev

Flyweight设计模式和Java缓存之间有什么区别

来自分类Dev

IIS 8.0中内核模式和用户模式缓存之间的区别

来自分类Dev

Zcache缓存$ cache-> addItem和$ cache-> setItem之间的区别

来自分类Dev

Magento中的Full Page catch(FPC)和Magento内置缓存之间的区别

来自分类Dev

AFNetworking 2.0和Nginx之间的文件缓存

来自分类Dev

缓冲区和缓存之间有什么区别?

来自分类Dev

预加载图像与缓存图像之间有区别吗?

Related 相关文章

  1. 1

    直接映射指令高速缓存VS使用LRU替换的完全关联指令高速缓存

  2. 2

    缓存大小和设置关联映射

  3. 3

    缓存大小和设置关联映射

  4. 4

    直接映射的缓存示例

  5. 5

    symfony中私有缓存和公共缓存之间的区别

  6. 6

    AppFabric:默认缓存和命名缓存之间有区别吗?

  7. 7

    Cassandra行缓存和分区键缓存之间的区别

  8. 8

    NSURLSessionConfiguration和NSMutableURLRequest的缓存策略之间的区别

  9. 9

    缓存和寄存器之间的区别?

  10. 10

    路由缓存和邻居表之间的区别

  11. 11

    MIPS阵列直接映射缓存

  12. 12

    直接映射的缓存如何工作

  13. 13

    PHP框架缓存与Redis缓存之间的区别

  14. 14

    Azure Reddis缓存和Azure CDN之间的区别

  15. 15

    物理和虚拟缓存之间有什么区别?

  16. 16

    如何计算完整关联映射缓存的标签?

  17. 17

    直接映射和R2RML之间的区别

  18. 18

    C-缓存行和关联

  19. 19

    Ioredis客户端是否缓存哈希槽和节点地址之间的映射?

  20. 20

    Ioredis客户端是否缓存哈希槽和节点地址之间的映射?

  21. 21

    django-redis-cache和django-redis与Django的Redis缓存之间的区别?

  22. 22

    Zcache缓存$ cache-> addItem和$ cache-> setItem之间的区别

  23. 23

    Flyweight设计模式和Java缓存之间有什么区别

  24. 24

    IIS 8.0中内核模式和用户模式缓存之间的区别

  25. 25

    Zcache缓存$ cache-> addItem和$ cache-> setItem之间的区别

  26. 26

    Magento中的Full Page catch(FPC)和Magento内置缓存之间的区别

  27. 27

    AFNetworking 2.0和Nginx之间的文件缓存

  28. 28

    缓冲区和缓存之间有什么区别?

  29. 29

    预加载图像与缓存图像之间有区别吗?

热门标签

归档