gpt4 book ai didi

c - 性能缓存事件是什么意思?

转载 作者:IT王子 更新时间:2023-10-29 00:14:07 27 4
gpt4 key购买 nike

我试图弄清楚为什么修改后的 C 程序比未修改的对应部分运行得更快(我添加了很少的代码行来执行一些额外的工作)。在这种情况下,我怀疑“缓存效果”是主要的解释(指令缓存)。因此,我找到了 perf (https://perf.wiki.kernel.org/index.php/Main_Page) 分析工具,但不幸的是,我无法理解其关于缓存未命中的输出的含义。

提供了几个关于缓存的事件:

  cache-references                                   [Hardware event]
cache-misses [Hardware event]
L1-dcache-loads [Hardware cache event]
L1-dcache-load-misses [Hardware cache event]
L1-dcache-stores [Hardware cache event]
L1-dcache-store-misses [Hardware cache event]
L1-dcache-prefetches [Hardware cache event]
L1-dcache-prefetch-misses [Hardware cache event]
L1-icache-loads [Hardware cache event]
L1-icache-load-misses [Hardware cache event]
L1-icache-prefetches [Hardware cache event]
L1-icache-prefetch-misses [Hardware cache event]
LLC-loads [Hardware cache event]
LLC-load-misses [Hardware cache event]
LLC-stores [Hardware cache event]
LLC-store-misses [Hardware cache event]
LLC-prefetches [Hardware cache event]
LLC-prefetch-misses [Hardware cache event]
dTLB-loads [Hardware cache event]
dTLB-load-misses [Hardware cache event]
dTLB-stores [Hardware cache event]
dTLB-store-misses [Hardware cache event]
dTLB-prefetches [Hardware cache event]
dTLB-prefetch-misses [Hardware cache event]
iTLB-loads [Hardware cache event]
iTLB-load-misses [Hardware cache event]
branch-loads [Hardware cache event]
branch-load-misses [Hardware cache event]
node-loads [Hardware cache event]
node-load-misses [Hardware cache event]
node-stores [Hardware cache event]
node-store-misses [Hardware cache event]
node-prefetches [Hardware cache event]
node-prefetch-misses [Hardware cache event]

我在哪里可以找到关于这些字段的解释?缓存未命中事件总是小于其他事件。这个事件衡量什么?

如何解释 ls 的 26,760 次 L1-icache-load-misses 与以下示例中的 5,708 次缓存未命中?

perf stat -e L1-icache-load-misses ls
caches caches~ out

Performance counter stats for 'ls':

26,760 L1-icache-load-misses

0.002816690 seconds time elapsed



perf stat -e cache-misses ls
caches caches~ out

Performance counter stats for 'ls':

5,708 cache-misses

0.002822122 seconds time elapsed

最佳答案

一些答案​​:

  • L1 是 Level-1 缓存,最小也是最快的。 LLC 另一方面指的是 cache hierarchy 的最后一层,因此表示最大但最慢的缓存。
  • id 区分指令缓存和数据缓存。只有L1是这样拆分的,其他缓存都是数据和指令共享的。
  • TLB 指的是 translation lookaside buffer ,将虚拟地址映射到物理地址时使用的缓存。
  • 不同的 TLB 计数器取决于命名地址是引用指令还是某些数据。
  • 对于所有数据访问,根据给定的内存位置是读取、写入还是预取(即检索以供稍后读取)保留不同的计数器。
  • 未命中数表示给定数据项被访问但存在于缓存中的频率。

关于c - 性能缓存事件是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12601474/

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