是什么导致CPU缓存未命中?

时间:2012-05-02 13:29:49

标签: caching memory profiling cpu opencl

我对x86架构中的差异缓存级别的缓存未命中之间的关系有疑问(Say 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中的数据丢失吗?

由于

1 个答案:

答案 0 :(得分:2)

The 32 nanometer, six core Westmere-EP chip

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

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