缓存未命中L1 我有一个特定的软件,它的失误率看起来像这样: L1-dcache-misses < L2-misses< L3-misses 怎么会这样呢? 未命中率是使用perf通过查看重新填充计数器除以部分获得每个缓存的总访问次数得出的。 我有一个特定的软件,表现出的行为是未命中率,如下所示:L1-dcache-misses

问题描述 投票:0回答:1

我有一个特定的软件,它的失误率看起来像这样:

L1-dcache-misses < L2-misses< L3-misses

怎么会这样呢?

未命中率是使用perf通过查看重新填充计数器除以部分获得每个缓存的总访问次数得出的。

caching cpu-cache perf
1个回答
0
投票

L1-dcache-missesall load在一级缓存中丢失的部分。

L2-misses是使所有请求到达L2的请求的一部分(在L1中为miss),在L2中的then未命中。与L3类似。

L1d命中不是L2总访问量的一部分。(这很有意义,因为L2从未看到过它。)>

对于在较小工作集上具有良好局部性的工作负载来说,这是很正常的,但是在L1d中丢失的访问具有时空局部性较差,并且在外部缓存中也往往会丢失。


[此外,如果您使用的是Intel CPU,请注意,它不仅使用mem_load_retired.l1_miss事件,依此类推;它尝试使用L1D.REPLACEMENT事件将L1d的same

行的多个未命中计数为单个未命中。 LLC加载和未加载使用OFFCORE_RESPONSE事件,而不是mem_load_retired.l3_hit /未命中。看到How does Linux perf calculate the cache-references and cache-misses events

(同一缓存行的两个负载还没有准备好,它们将共享相同的LFB来跟踪传入的行,因此这种计算是有道理的。同样,如果我们关心的是触摸/丢失的行而不是单个负载。 ]使用L1-dcache-loads来计算每个负载,因此,即使性能报告的L1命中率也不是[[really

每个指令的L1d命中率。错过。)
© www.soinside.com 2019 - 2024. All rights reserved.