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

Zk1*_*001 9 memory cpu profiling caching 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
Run Code Online (Sandbox Code Playgroud)

问题是为什么L3未命中数量大于L2未命中数?(我不断多次重新进行分析,差异不大).我的想法基本上是:

L2未命中= L3命中+ L3未命中

有人可以解释我这里出了什么问题,我有没有想念?

更进一步,是什么原因导致CPU的最后一级缓存(CPU)的缓存读取?它只是L2中的数据丢失吗?

谢谢

小智 3

32 纳米、六核 Westmere-EP 芯片

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

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