gpt4 book ai didi

c++ - 测量加载到 l1/l2 缓存中以供读取(包括预取)的行数?

转载 作者:太空狗 更新时间:2023-10-29 22:57:59 25 4
gpt4 key购买 nike

我正在尝试确定加载到 L1 缓存(处理器 Intel Broadwell)中的缓存行数。我的内核代码是

a[i] = 2*b[i] + 2.3//i 从 0 到 pow(10,8)

我正在使用 perf 事件 L1-dcache-load-misses。测得的数字是预期的两倍。我期待 600 万负载和 600 万商店。但是L1-dcache-load-misses是12M左右。但是 LLC-stores 符合预期 (6M)

i) L1-dcache-load-misses 是否计算加载和存储未命中?

Intel software developer manual (表19.5),对于二级缓存,我发现了两个指标

  • i) L2_TRANS.L2_FILL (r20f0)
  • ii) L2_TRANS.L2_WB (r40f0)

ii) L2_TRANS.L2_FILL 的确切含义是什么?是 L2 交易的总数吗?

iii) L2_TRANS.L2_WB 的确切含义是什么?是 L2 写事务的总数吗?

最佳答案

Perf 使用这些映射到预定义计数器事件和掩码的事件别名,但由于每个 CPU 可能有不同的映射,这有时会发生变化,您可能最终会计算其他东西。

This英特尔论坛上的讨论表明,至少某些系统(Haswell,但 Broadwell 应该非常相似)的 L1-dcache-load-misses 错误地映射到 L1 替换,这将解释 double 值(存储也会将行提取到 L1 缓存中)。

至于 L2_trans 事件,假设它们被正确映射,它们确实应该计算 L2 的总填充和驱逐。请注意,这可能包括更多的加载 + 存储,因为 L2 也有代码(在如此小的内核中可能可以忽略不计)和预取(可能很重要,因为您的数据在空间上布局并且易于预取)。

关于c++ - 测量加载到 l1/l2 缓存中以供读取(包括预取)的行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42098292/

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