繁体   English   中英

Perf 在没有 memory 访问的块中显示 L1-dcache-load-misses

[英]Perf shows L1-dcache-load-misses in a block with no memory access

下面是一个代码块,它记录了所有 L1-dcache 未命中的 10% 的标志,但该块完全是 zmm 寄存器之间的移动。 这是 perf 命令字符串:

perf record -e L1-dcache-load-misses -c 10000 -a -- ./Program_to_Test.exe

代码块:

Round:
vmulpd zmm1,zmm0,zmm28
VCVTTPD2QQ zmm0{k7},zmm1
VCVTUQQ2PD zmm2{k7},zmm0
vsubpd zmm3,zmm1,zmm2
vmulpd zmm4,zmm3,zmm27
VCVTTPD2QQ zmm5{k7}{z},zmm4

VPCMPGTQ k2,zmm5,zmm26
VPCMPEQQ k3 {k7},zmm5,zmm26
KADDQ k1,k2,k3

VCVTQQ2PD zmm2{k7},zmm0
VDIVPD zmm1{k7},zmm2,zmm28 ; Divide by 100
VPXORQ zmm2{k7},zmm2,zmm2
vmovupd zmm2,zmm1
VADDPD zmm2{k1},zmm1,zmm25

对于该代码块,我使用其他 L1 度量(例如 l1d.replacement)得到了类似的结果。

我的问题是,只有 zmm 寄存器移动的块如何产生 L1 缓存未命中? 我根本不认为将 go 注册到 memory 。 实际上,最后的 memory 访问就是这块代码上面的 10 条指令; 其他 9 条指令都是寄存器到寄存器指令。

事件L1-dcache-load-misses映射到 Sandy Bridge 和更高版本微架构上的L1D.REPLACEMENT (或映射到旧微架构上的类似事件)。 此事件不支持精确采样,这意味着样本可以指向无法生成被采样事件的指令。 (请注意,任何当前的 Atom 都不支持L1-dcache-load-misses 。)

从在 Haswell+ 或 Silvermont+ 微架构上运行的 Linux 3.11 开始,通过指定满足以下两个条件的采样事件,可以使用事件指令指针捕获样本:

  • 该事件支持精确采样。 例如,您可以使用任何代表 memory uop 或指令退出的事件。 事件的确切名称和含义取决于微架构。 有关详细信息,请参阅英特尔 SDM 第 3 卷。 没有事件支持精确采样并且与L1D.REPLACEMENT具有相同的确切含义。 在支持扩展 PEBS 的处理器上,只有一部分 PEBS 事件支持精确采样。
  • 在事件上启用精确的采样级别。 在 Linux perf 中,这可以通过将“:pp”附加到事件名称或原始事件编码,或在 PMU 语法中指定的原始事件的终止斜杠之后附加“pp”来完成。 例如,在 Haswell 上,可以将事件mem_load_uops_retired.l1_miss:pp指定为 Linux perf。

对于这样的事件,当事件计数器溢出时,PEBS 硬件被武装起来,这意味着它现在正在寻找尽可能早的机会来收集精确的样本。 当至少有一条指令将在这段时间 window 期间引发事件时,PEBS 硬件最终将由这些指令之一触发,并偏向于高延迟指令。 当触发 PEBS 的指令退出时,PEBS 微码例程将执行并捕获一条 PEBS 记录,其中包含触发 PEBS 的指令的 IP(与架构 IP 不同)。 perf 用来显示结果的指令指针 (IP) 是这个事件 IP。 (我注意到指向不可能导致事件的指令的样本数量可以忽略不计。)

在较旧的微架构上(在 Haswell 和 Silvermont 之前),还支持“pp”精确采样级别。 这些处理器上的 PEBS 将仅捕获体系结构事件,该事件指向 static 指令,该指令紧跟在程序顺序中的 PEBS 触发指令之后。 Linux perf 使用 LBR,如果可能的话,它包含源-目标 IP 对以确定捕获的 IP 是否是跳转的目标。 如果是这种情况,它会将源 IP 作为事件 IP 添加到示例记录中。

一些微架构支持一个或多个具有更好采样分布的事件(好多少取决于微架构、事件、计数器以及计数器即将溢出时正在执行的指令)。 在 Linux perf 中,如果支持,可以通过指定精确级别“ppp”来启用精确分发。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM