gpt4 book ai didi

optimization - 什么被认为是好的缓存命中/未命中率?

转载 作者:行者123 更新时间:2023-12-04 02:41:42 25 4
gpt4 key购买 nike

我在我们的程序上运行 ocount 来计算 L2 缓存读取事件,我们得到以下结果:

Event                               Count                    % time    
counted
l2_rqsts:all_demand_data_rd 14,418,959,276 80.01
l2_rqsts:demand_data_rd_hit 6,297,000,387 80.00
l2_rqsts:demand_data_rd_miss 6,104,577,343 80.00
l2_rqsts:l2_pf_hit 667,709,870 80.01
l2_rqsts:l2_pf_miss 1,641,991,158 79.99

然而,我们不知道这些结果是否应该被视为完全缓存垃圾。

您认为 L2 缓存的良好命中率/未命中率是多少?

我预计它在很大程度上取决于 CPU 架构和应用程序要求,但它是否有一般可接受的值?

最佳答案

这取决于应用程序。在极端情况下:

  • 如果每次内存访问都访问相同的位置,或者跨步并适合感兴趣的缓存级别(比如典型的 L2 缓存的总大小为 256KB)而没有由于关联性冲突而导致的任何驱逐,则该应用程序可以接近 100% 的命中率。
  • 如果内存访问发生在一个比缓存大得多的区域并且是真正随机的,那么你最终的命中率可能远低于 50%(我不确定一种分析方法来得出一个确切的数字,但我猜它会取决于击中给定线的概率分布)。
  • 您可以故意构建一个病态案例,您的应用程序将内存访问交替到两个不同的内存位置,这两个位置碰巧在同一缓存行上与您的处理器处理关联性的任何方式发生冲突。在这种情况下,命中率将接近 0%。

  • 我怀疑是否有任何关于分析模型的工作来预测您在更现实的工作负载中可能会看到什么样的值,但肯定有一些配置文件在通用基准上运行。例如: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.152.3943&rep=rep1&type=pdf .这些人在 mcf 上显示每千条指令 (MPKI) 有 20 到 50 次未命中率。来自 SPECcpu2000 的工作负载。以下是对该工作负载的描述: https://www.spec.org/cpu2000/CINT2000/181.mcf/docs/181.mcf.html .它可能会或可能不会像您对优化感兴趣的那样关注内存子系统。

    回到您最初可能会问这个问题的原因:如果其他分析数据表明您更受缓存或内存访问的限制而不是算术、锁定等,那么您可能会选择一些启发式值,如果例如,您的命中率低于 80% 或 95%,那么可能值得尝试优化缓存访问。

    关于optimization - 什么被认为是好的缓存命中/未命中率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33814619/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com