首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缓存包含属性-多级缓存

缓存包含属性-多级缓存
EN

Stack Overflow用户
提问于 2014-02-10 11:06:03
回答 2查看 8.9K关注 0票数 3

我无法理解多级缓存中缓存包含属性的概念。根据我的理解,如果我们有两个级别的缓存,L1和L2,那么L1的内容必须是L2的子集。这意味着L2必须至少和L1一样大。此外,当修改L1中的块时,我们必须在两个位置更新L2和内存。这些概念正确吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-10 13:19:20

通常,我们可以说增加更多的缓存级别就是在内存层次结构中增加更多的访问级别。它总是在访问时间和延迟之间进行权衡。缓存越大,我们可以存储的越多,但搜索需要更多的时间。正如您已经说过的,L2缓存必须大于L1缓存。否则它就失败了,基本目的一样。

现在来看看L1是否是L2的一个子集。这并不总是必要的。有包容性缓存层次结构和独占缓存层次结构。在包容性中,正如您所说的,最后一级是所有其他缓存的超集。

您可以查看此演示文稿以获得更多详细信息,普特

现在更新不同级别,是一个缓存一致性问题&级别越多,麻烦就越大。您可以在这里查看各种协议:缓存一致性

票数 7
EN

Stack Overflow用户

发布于 2017-06-15 23:32:15

关于包容性L2缓存大于L1缓存的说法是正确的。但是,您关于需要在L1中进行修改的包容性缓存的声明也需要修改L2和内存,这是不正确的。您所描述的系统称为“写通”缓存,其中私有缓存中的所有写操作都会写入下一级缓存。包容性缓存继承并不意味着写入缓存。

大多数具有包容性继承的体系结构都使用“回写”缓存。“写回”缓存不同于直接缓存,因为它不需要对当前缓存级别进行修改,以更好地适应下一级别的缓存(例如。L1缓存中的写入不需要立即写入L2)。相反,回写缓存只更新当前的缓存级别,并使数据“脏”(描述最近的值在当前级别,并且所有上层的值都是陈旧的)。在逐出时,写回会将脏的缓存刷新到下一级别的缓存(当需要在当前缓存中创建空间以满足冲突丢失时)

这些概念在Baer和Wang的开创性工作中进行了总结,“关于多级缓存继承的包含性”,ISCA 1988 链接。这篇论文解释了你在最初令人困惑的陈述中的困惑:

MultiLevel缓存层次结构具有包含属性(ML1),如果级别C_(i+1)上的缓存内容是其所有子缓存( C_i )在第一级的内容的超集。“此定义意味着必须将写入策略用于较低级别的缓存。由于在本文中我们将假设回写缓存,ML1实际上是一个“空间”MLI,也就是说,为包含提供了空间,但是实现了一个回写策略。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21675470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档