caching - 在 L2 逐出时从 L1 缓存中逐出缓存

标签 caching computer-architecture memory-size

我有一个关于内存系统遵循的政策的基本问题。

考虑一个具有私有(private) L1 和 L2 缓存的内核。在 L2 高速缓存之后,我们有一条运行相干流量的总线。现在,如果从 L2 缓存中逐出地址(X)的缓存行,是否有必要从 L1 缓存中逐出该地址?

驱逐的原因可能是它有助于保持一致性协议(protocol)的不变性[如果 l2 中的一行显示无效,此核心不包含此地址]。

最佳答案

three different designs并且全部使用。

  • 独占:L1 缓存中的数据永远不会在 L2 缓存中。 L2 缓存中的数据永远不会在 L1 缓存中。
  • 包含:L1 缓存中的数据也必须在 L2 缓存中。
  • 两者都不是:L1 缓存中的数据可能在也可能不在 L2 缓存中。

  • 这些中的每一个都有优点和缺点。包容性方案允许缓存一致性协议(protocol)忽略 L1 缓存——如果数据不在 L2 缓存中,则它不在 L1 缓存中。但是独占方案最有效地利用了宝贵的高速缓存。

    包容性设计正变得越来越流行,因为更快的内核间同步变得比拥有稍大的有效缓存大小更重要。

    关于caching - 在 L2 逐出时从 L1 缓存中逐出缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14705840/

    相关文章:

    php - 简单的 PDO 查询返回内存大小错误

    python - linux磁盘缓冲区缓存是否使python cPickle比搁置更有效?

    performance - perf stat 输出解释

    c - C volatile变量和高速缓存

    computer-architecture - 静电危害1和一回路问题?

    php - 简单的 PDO 查询返回内存大小错误

    java - 运行项目或构建 apk 时出错

    spring - 在缓存中找不到但不缓存结果时,如何使@Cacheable 返回null?

    python - 缓存磁盘操作

    javascript - Node.js 需要缓存