Updated event table for AMD Family 15h cpus from:

 Apr 29 2011 -- Robert Richter, robert.rich...@amd.com:
 Source: BKDG for AMD Family 15h Models 00h-0Fh Processors,
 42301, Rev 1.15, April 18, 2011

These events have been added for family 15h:

 PMCx029 LS Dispatch
 PMCx030 Executed CLFLUSH Instructions
 PMCx16C L2 Prefetcher Trigger Events
 PMCx1D8 Dispatch Stall for STQ Full
 NBPMCx1EA Request Cache Status 0
 NBPMCx1EB Request Cache Status 1
 NBPMCx4EF L3 Latency

Signed-off-by: Robert Richter <robert.rich...@amd.com>
---
 lib/amd64_events_fam15h.h |  187 ++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 177 insertions(+), 10 deletions(-)

diff --git a/lib/amd64_events_fam15h.h b/lib/amd64_events_fam15h.h
index 8ecf6d9..672f108 100644
--- a/lib/amd64_events_fam15h.h
+++ b/lib/amd64_events_fam15h.h
@@ -23,12 +23,16 @@
  * applications on Linux.
  */
 
-/* History
+/*
+ * Family 15h Microarchitecture performance monitor events
  *
- * Dec 09 2010 -- Robert Richter, robert.rich...@amd.com:
+ * History:
  *
- * Family 15h Microarchitecture performance monitor events
+ * Apr 29 2011 -- Robert Richter, robert.rich...@amd.com:
+ * Source: BKDG for AMD Family 15h Models 00h-0Fh Processors,
+ * 42301, Rev 1.15, April 18, 2011
  *
+ * Dec 09 2010 -- Robert Richter, robert.rich...@amd.com:
  * Source: BIOS and Kernel Developer's Guide for the AMD Family 15h
  * Processors, Rev 0.90, May 18, 2010
  */
@@ -268,11 +272,11 @@ static pme_amd64_entry_t amd64_fam15h_pe[]={
                  .pme_ucode = 1 << 0,
                },
                { .pme_uname = "CYCLES_NON_SPECULATIVE_PHASE",
-                 .pme_udesc = "Number of cycles spent non-speculative phase 
(including cache miss penalty)",
+                 .pme_udesc = "Number of cycles spent in non-speculative 
phase, excluding cache miss penalty",
                  .pme_ucode = 1 << 2,
                },
                { .pme_uname = "CYCLES_WAITING",
-                 .pme_udesc = "Number of cycles waiting for a cache hit (cache 
miss penalty)",
+                 .pme_udesc = "Number of cycles spent in non-speculative 
phase, including the cache miss penalty",
                  .pme_ucode = 1 << 3,
                },
                { .pme_uname = "ALL",
@@ -472,12 +476,12 @@ static pme_amd64_entry_t amd64_fam15h_pe[]={
        .pme_numasks = 3,
        .pme_umasks  = {
                { .pme_uname = "SW_PREFETCH_HIT_IN_L1",
-                 .pme_udesc = "Software prefetch hit in the L1.",
-                 .pme_ucode = 0x01,
+                 .pme_udesc = "Software prefetch hit in the L1",
+                 .pme_ucode = 1 << 0,
                },
                { .pme_uname = "SW_PREFETCH_HIT_IN_L2",
-                 .pme_udesc = "Software prefetch hit in L2.",
-                 .pme_ucode = 0x08,
+                 .pme_udesc = "Software prefetch hit in the L2",
+                 .pme_ucode = 1 << 3,
                },
                { .pme_uname = "ALL",
                  .pme_udesc = "All sub-events selected",
@@ -1056,7 +1060,7 @@ static pme_amd64_entry_t amd64_fam15h_pe[]={
                  .pme_ucode = 1 << 1,
                },
                { .pme_uname = "IGNORED",
-                 .pme_udesc = "Number of times op could not be tagged due to 
other tagged op active in pipe",
+                 .pme_udesc = "Number of times an op could not be tagged by 
IBS because of a previous tagged op that has not retired",
                  .pme_ucode = 1 << 2,
                },
                { .pme_uname = "ALL",
@@ -2244,6 +2248,169 @@ static pme_amd64_entry_t amd64_fam15h_pe[]={
         },
        },
 #endif
+/* 107 */{.pme_name = "LS_DISPATCH",
+       .pme_code  = 0x29,
+       .pme_desc  = "LS Dispatch",
+       .pme_flags = PFMLIB_AMD64_UMASK_COMBO,
+       .pme_numasks = 4,
+       .pme_umasks  = {
+               { .pme_uname = "LOADS",
+                 .pme_udesc = "Loads",
+                 .pme_ucode = 1 << 0,
+               },
+               { .pme_uname = "STORES",
+                 .pme_udesc = "Stores",
+                 .pme_ucode = 1 << 1,
+               },
+               { .pme_uname = "LOAD_OP_STORES",
+                 .pme_udesc = "Load-op-Stores",
+                 .pme_ucode = 1 << 2,
+               },
+               { .pme_uname = "ALL",
+                 .pme_udesc = "All sub-events selected",
+                 .pme_ucode = 0x07,
+               },
+        },
+       },
+/* 108 */{.pme_name = "EXECUTED_CLFLUSH_INSTRUCTIONS",
+       .pme_code  = 0x30,
+       .pme_desc  = "Executed CLFLUSH Instructions",
+       },
+/* 109 */{.pme_name = "L2_PREFETCHER_TRIGGER_EVENTS",
+       .pme_code  = 0x16C,
+       .pme_desc  = "L2 Prefetcher Trigger Events",
+       .pme_flags = PFMLIB_AMD64_UMASK_COMBO,
+       .pme_numasks = 3,
+       .pme_umasks  = {
+               { .pme_uname = "LOAD_L1_MISS_SEEN_BY_PREFETCHER",
+                 .pme_udesc = "Load L1 miss seen by prefetcher",
+                 .pme_ucode = 1 << 0,
+               },
+               { .pme_uname = "STORE_L1_MISS_SEEN_BY_PREFETCHER",
+                 .pme_udesc = "Store L1 miss seen by prefetcher",
+                 .pme_ucode = 1 << 1,
+               },
+               { .pme_uname = "ALL",
+                 .pme_udesc = "All sub-events selected",
+                 .pme_ucode = 0x03,
+               },
+        },
+       },
+/* 110 */{.pme_name = "DISPATCH_STALL_FOR_STQ_FULL",
+       .pme_code  = 0x1D8,
+       .pme_desc  = "Dispatch Stall for STQ Full",
+       },
+/* Northbridge events (.pme_code & 0x0E0) not yet supported by the kernel */
+#if 0
+/* 111 */{.pme_name = "REQUEST_CACHE_STATUS_0",
+       .pme_code  = 0x1EA,
+       .pme_desc  = "Request Cache Status 0",
+       .pme_flags = PFMLIB_AMD64_UMASK_COMBO,
+       .pme_numasks = 9,
+       .pme_umasks  = {
+               { .pme_uname = "PROBE_HIT_S",
+                 .pme_udesc = "Probe Hit S",
+                 .pme_ucode = 1 << 0,
+               },
+               { .pme_uname = "PROBE_HIT_E",
+                 .pme_udesc = "Probe Hit E",
+                 .pme_ucode = 1 << 1,
+               },
+               { .pme_uname = "PROBE_HIT_MUW_OR_O",
+                 .pme_udesc = "Probe Hit MuW or O",
+                 .pme_ucode = 1 << 2,
+               },
+               { .pme_uname = "PROBE_HIT_M",
+                 .pme_udesc = "Probe Hit M",
+                 .pme_ucode = 1 << 3,
+               },
+               { .pme_uname = "PROBE_MISS",
+                 .pme_udesc = "Probe Miss",
+                 .pme_ucode = 1 << 4,
+               },
+               { .pme_uname = "DIRECTED_PROBE",
+                 .pme_udesc = "Directed Probe",
+                 .pme_ucode = 1 << 5,
+               },
+               { .pme_uname = "TRACK_CACHE_STAT_FOR_RDBLK",
+                 .pme_udesc = "Track Cache Stat for RdBlk",
+                 .pme_ucode = 1 << 6,
+               },
+               { .pme_uname = "TRACK_CACHE_STAT_FOR_RDBLKS",
+                 .pme_udesc = "Track Cache Stat for RdBlkS",
+                 .pme_ucode = 1 << 7,
+               },
+               { .pme_uname = "ALL",
+                 .pme_udesc = "All sub-events selected",
+                 .pme_ucode = 0xFF,
+               },
+        },
+       },
+/* 112 */{.pme_name = "REQUEST_CACHE_STATUS_1",
+       .pme_code  = 0x1EB,
+       .pme_desc  = "Request Cache Status 1",
+       .pme_flags = PFMLIB_AMD64_UMASK_COMBO,
+       .pme_numasks = 9,
+       .pme_umasks  = {
+               { .pme_uname = "PROBE_HIT_S",
+                 .pme_udesc = "Probe Hit S",
+                 .pme_ucode = 1 << 0,
+               },
+               { .pme_uname = "PROBE_HIT_E",
+                 .pme_udesc = "Probe Hit E",
+                 .pme_ucode = 1 << 1,
+               },
+               { .pme_uname = "PROBE_HIT_MUW_OR_O",
+                 .pme_udesc = "Probe Hit MuW or O",
+                 .pme_ucode = 1 << 2,
+               },
+               { .pme_uname = "PROBE_HIT_M",
+                 .pme_udesc = "Probe Hit M",
+                 .pme_ucode = 1 << 3,
+               },
+               { .pme_uname = "PROBE_MISS",
+                 .pme_udesc = "Probe Miss",
+                 .pme_ucode = 1 << 4,
+               },
+               { .pme_uname = "DIRECTED_PROBE",
+                 .pme_udesc = "Directed Probe",
+                 .pme_ucode = 1 << 5,
+               },
+               { .pme_uname = "TRACK_CACHE_STAT_FOR_CHGTODIRTY",
+                 .pme_udesc = "Track Cache Stat for ChgToDirty",
+                 .pme_ucode = 1 << 6,
+               },
+               { .pme_uname = "TRACK_CACHE_STAT_FOR_RDBLKM",
+                 .pme_udesc = "Track Cache Stat for RdBlkM",
+                 .pme_ucode = 1 << 7,
+               },
+               { .pme_uname = "ALL",
+                 .pme_udesc = "All sub-events selected",
+                 .pme_ucode = 0xFF,
+               },
+        },
+       },
+/* 113 */{.pme_name = "L3_LATENCY",
+       .pme_code  = 0x4EF,
+       .pme_desc  = "L3 Latency",
+       .pme_flags = PFMLIB_AMD64_UMASK_COMBO,
+       .pme_numasks = 3,
+       .pme_umasks  = {
+               { .pme_uname = "L3CYCCOUNT",
+                 .pme_udesc = "L3CycCount. L3 Request cycle count",
+                 .pme_ucode = 1 << 0,
+               },
+               { .pme_uname = "L3REQCOUNT",
+                 .pme_udesc = "L3ReqCount. L3 request count",
+                 .pme_ucode = 1 << 1,
+               },
+               { .pme_uname = "ALL",
+                 .pme_udesc = "All sub-events selected",
+                 .pme_ucode = 0x03,
+               },
+        },
+       },
+#endif
 };
 
 #define PME_AMD64_FAM15H_EVENT_COUNT           
(sizeof(amd64_fam15h_pe)/sizeof(pme_amd64_entry_t))
-- 
1.7.3.4



------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
perfmon2-devel mailing list
perfmon2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/perfmon2-devel

Reply via email to