我对 x86 架构中不同缓存级别的缓存未命中之间的关系有疑问(比如 Xeon X5660)。
我在一些性能计数器上对 OpenCL 应用程序 (Blackscholes) 进行了一些分析。对于每个计数器,我将所有内核的所有值相加并得到以下结果:
instructions #: 493167746502.000000
L3_MISS #: 1967809.000000
L1_MISS #: 2344383795.000000
L2_DATA_MISS #: 901131.000000
L2_MISS #: 1397931.000000
memory loads #: 151559373227.000000
问题是为什么 L3 未命中数大于 L2 未命中数?(我多次重新运行分析并且差异并不显着)。我的想法基本上是:
L2 未命中 = L3 命中 + L3 未命中
有人可以解释一下这里出了什么问题,我错过了什么吗?
更进一步,是什么导致 CPU 的最后一级缓存 (CPU) 的缓存读取?它只是 L2 的数据丢失吗?
谢谢