I'm in the process of understanding if we have cache use issues in our c++ application.
To do that, I'm in the process of understanding how to use information given by Visual Studio 2013. (I'm new to the optimization and profiling field.)
Thanks to a great kickstart article here, I found this information about my system:
Logical Processor to Cache Map:
**------ Data Cache 0, Level 1, 32 KB, Assoc 8, LineSize 64
**------ Instruction Cache 0, Level 1, 32 KB, Assoc 8, LineSize 64
**------ Unified Cache 0, Level 2, 256 KB, Assoc 8, LineSize 64
******** Unified Cache 1, Level 3, 8 MB, Assoc 16, LineSize 64
--**---- Data Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64
--**---- Instruction Cache 1, Level 1, 32 KB, Assoc 8, LineSize 64
--**---- Unified Cache 2, Level 2, 256 KB, Assoc 8, LineSize 64
----**-- Data Cache 2, Level 1, 32 KB, Assoc 8, LineSize 64
----**-- Instruction Cache 2, Level 1, 32 KB, Assoc 8, LineSize 64
----**-- Unified Cache 3, Level 2, 256 KB, Assoc 8, LineSize 64
------** Data Cache 3, Level 1, 32 KB, Assoc 8, LineSize 64
------** Instruction Cache 3, Level 1, 32 KB, Assoc 8, LineSize 64
------** Unified Cache 4, Level 2, 256 KB, Assoc 8, LineSize 64
It leads me to believe that the last cache level is L3, a cache of 8MB shared among all of my cores.
However, if I run VSPerfCmd
:
C:\Windows\system32>VSPerfCmd /querycounters
Portable counters:
InstructionsRetired
NonHaltedCycles
---> L2Misses <----
L2References
ITLBMisses
BranchesRetired
MispredictedBranches
Platform counters:
DCULinesIn
DCUModifiedLinesIn
DCULinesOut
[...]
... and compare it to the Performance Explorer's Property Pages > CPU Counters:
I see that they are not called the same: Visual Studio calls it 'Last Level Cache Misses'.
Is "Last Level Cache Misses" in the Visual Studio profiler L2 cache misses, or is it L3? Is this relevant?