L2 Cache Miss 相当于 ARMv7 A15 上的“L2 Data Cache Refill”吗?

bla*_*ncm 5 arm performancecounter

我正在尝试确定 ARM Cortex A15 处理器上可用的哪些硬件计数器是用于确定系统范围 L2 缓存未命中的正确计数器。

我在这里的应用程序是一个内核级电压频率调节器(即它可以替代按需调节器)。因为我需要访问系统级别的性能计数器,而不是附加到特定的程序运行时,所以我没有使用现有的实用程序,例如 PAPI 或 Linux 的 perf 工具。根据我过去使用这两种方法的经验,我知道它们更适合用来监视特定程序或检测二进制文件的性能统计数据。

我已经实现了一个内核模块,该模块定期将多个硬件计数器值更新到 sysfs 端点。我使用过的资源包括:

我当前用于测量 L2 未命中的硬件计数器是事件 0x17:“L2 数据缓存重新填充”。即使在运行数据量较大的基准测试时,打印此值始终会给出 0。我应该使用不同的事件或事件集来确定 L2 缓存未命中吗?也许是 0x13,“数据内存访问”,或者某些事件的组合?

我的问题的根源很可能是对“L2 数据缓存重新填充”的误解,但我无法通过文档和堆栈溢出搜索找到对此的澄清。

编辑:我发现 L2 笔芯读数为 0,因为第 5 个硬件计数器由于某种原因未按预期工作;将 L2 笔芯重新分配给不同的计数器已经解决了这个特定问题。

编辑2:第5个硬件计数器不起作用,因为我没有启用那么多。愚蠢的我。

小智 2

引自另一本ARM 手册的内容暗示补充不仅仅是错过:

L1 数据缓存重新填充:“此事件对 L1 缓存中的所有分配进行计数。这包括读取行填充、存储行填充和预取行填充。”