【问题标题】:Trouble Understanding Associative Cache无法理解关联缓存
【发布时间】:2021-07-10 03:52:01
【问题描述】:

我正在读一本关于缓存优化和第三次优化的书,即更高的关联性以降低未命中率 作者说

2:1 缓存规则(用于最大 128KB 的缓存)大小为 N 的直接映射缓存 与大小为 N /2 的 2 路关联缓存具有相同的未命中率。

但是作者对此没有提供任何解释或证明,我无法理解。 谁能解释一下他是怎么想出这条规则的?

【问题讨论】:

    标签: caching cpu-architecture cpu-cache microprocessors


    【解决方案1】:

    这是一个“经验法则”,(显然)通常适用于正常工作负载,我猜想是通过模拟 SPECint 和/或商业软件等真实工作负载的痕迹。并非始终正确的实际法律

    如果大多数未命中只是冲突未命中,而不是容量未命中,这似乎是合理的。

    【讨论】:

    • 好的,所以这条规则没有任何证据或推导吗?
    • @SavannahMadison:就像我说的,它是一个“rule of thumb”。该英语习语意味着它并非在所有情况下都是正确的,因此无法从第一原理证明或推导出来。作者只是声称它适用于典型的 CPU 工作负载。不过,正如我所说,大多数失误都是冲突失误,而不是容量。
    • re:“如果大多数未命中只是冲突未命中,而不是容量未命中,这似乎是合理的。”不是相反吗?添加关联性对容量没有任何帮助,但可以缓冲冲突?
    • @Noah:是的,如果直接映射缓存中的大多数未命中来自冲突,则添加关联性可以避免这些未命中,而不会因减少容量而引入许多新的未命中。
    • @Noah:我明白你现在的意思了。如果 2 次访问将映射到大小为 N/2 的直接映射缓存中的同一集合,那么它们很可能会映射到大小为 N 的直接映射缓存中的不同集合。(通常的假设是你加倍套数,而不是每行的大小。)而且额外的容量不会受到伤害。对于关联缓存,LRU 并不总是对保留哪条线做出完美的决定,因为它看不到未来,所以两个单独的 1-way 集有时可能会更好。虽然如果有其他行同时别名两个热门行,则更容易发生冲突)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多