9

我对 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 的数据丢失吗?

谢谢

4

1 回答 1

2

32 纳米、六核 Westmere-EP 芯片

图片参考:http ://www.theregister.co.uk/2010/02/03/intel_westmere_ep_preview/

正如您在上面看到的,在“Westmere-EP”架构中,3 个内核的块共享一部分 L3 缓存。所以“boiler96”说的是有道理的。您要么获得单个核心的 L2 未命中数,要么您的 L3 未命中数来自 Uncore,它是所有核心未命中数的组合。

于 2013-04-26T23:32:05.690 回答