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

标签 caching cpu-cache

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

最佳答案

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

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

您可以查看此演示文稿以获取更多详细信息 PPT .

现在更新不同的关卡,是一个缓存一致性问题,关卡数量越大,越让人头疼。您可以在这里查看各种协议(protocol):cache coherence

关于caching - 缓存包含属性 - 多级缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21675470/

相关文章:

javascript - 通过 SSL 从 Google/Microsoft CDN 获取 javascript 库

caching - Play Framework 缓存注释

ruby-on-rails - 重定向时覆盖 rails Cache-Control header

multithreading - x86 上的两个后续 CPU 存储是否刷新到缓存以保持顺序?

arm - 优化不同阵列的 ARM 缓存使用

performance - 关于超线程中 L1 Cache 的自适应模式

mysql - Cakephp 3 - 带限制的缓存查询

javascript - 使用 jQuery 时正确的缓存方式和 this

c++ - 软件预取手册说明合理时的方案

c - 了解 CPU 缓存和缓存行