xref: /illumos-gate/usr/src/data/amdpmc/f17h_zen1_core.json (revision 31aa620247ae407b2bee2dccd71693d1938f54d6)
1[
2{
3	"mnemonic": "Core::X86::Pmc::Core::FpuPipeAssignment",
4	"name": "FpuPipeAssignment",
5	"code": "0x000",
6	"summary": "FPU Pipe Assignment",
7	"description": "The number of operations (uOps) and dual-pipeuOps dispatched to each of the 4 FPU execution pipelines. This event reflects how busy the FPU pipelines are and may be used for workload characterization. This includes all operations performed by x87, MMXTM, and SSE instructions, including moves. Each increment represents a one-cycle dispatch event. This event is a speculative event. (See Core::X86::Pmc::Core::ExRetMmxFpInstr). Since this event includes non- numeric operations it is not suitable for measuring MFLOPS.",
8	"units": [ {
9		"name": "Dual3",
10		"bit": 7,
11		"rw": "Read-only",
12		"description": "Total number multi-pipe uOps assigned to Pipe 3"
13	}, {
14		"name": "Dual2",
15		"bit": 6,
16		"rw": "Read-only",
17		"description": "Total number multi-pipe uOps assigned to Pipe 2"
18	}, {
19		"name": "Dual1",
20		"bit": 5,
21		"rw": "Read-only",
22		"description": "Total number multi-pipe uOps assigned to Pipe 1"
23	}, {
24		"name": "Dual0",
25		"bit": 4,
26		"rw": "Read-only",
27		"description": "Total number multi-pipe uOps assigned to Pipe 0"
28	}, {
29		"name": "Total3",
30		"bit": 3,
31		"rw": "Read-only",
32		"description": "Total number uOps assigned to Pipe 3"
33	}, {
34		"name": "Total2",
35		"bit": 2,
36		"rw": "Read-only",
37		"description": "Total number uOps assigned to Pipe 2"
38	}, {
39		"name": "Total1",
40		"bit": 1,
41		"rw": "Read-only",
42		"description": "Total number uOps assigned to Pipe 1"
43	}, {
44		"name": "Total0",
45		"bit": 0,
46		"rw": "Read-only",
47		"description": "Total number uOps assigned to Pipe 0"
48	} ]
49},
50{
51	"mnemonic": "Core::X86::Pmc::Core::FpSchedEmpty",
52	"name": "FpSchedEmpty",
53	"code": "0x001",
54	"summary": "FP Scheduler Empty",
55	"description": "This is a speculative event. The number of cycles in which the FPU scheduler is empty. Note that some Ops like FP loads bypass the scheduler. Invert this (Core::X86::Msr::PERF_CTL[Inv] == 1) to count cycles in which at least one FPU operation is present in the FPU."
56},
57{
58	"mnemonic": "Core::X86::Pmc::Core::FpRetx87FpOps",
59	"name": "FpRetx87FpOps",
60	"code": "0x002",
61	"summary": "Retired x87 Floating Point Operations",
62	"description": "The number of x87 floating-point Ops that have retired. The number of events logged per cycle can vary from 0 to 8.",
63	"units": [
64		{
65		"name": "DivSqrROps",
66		"bit": 2,
67		"rw": "Read-write",
68		"description": "Divide and square root Ops"
69	}, {
70		"name": "MulOps",
71		"bit": 1,
72		"rw": "Read-write",
73		"description": "Multiply Ops"
74	}, {
75		"name": "AddSubOps",
76		"bit": 0,
77		"rw": "Read-write",
78		"description": " Add/subtract Ops"
79	} ]
80},
81{
82	"mnemonic": "Core::X86::Pmc::Core::FpRetSseAvxOps",
83	"name": "FpRetSseAvxOps",
84	"code": "0x003",
85	"summary": "Retired SSE/AVX Operations",
86	"description": "This is a retire-based event. The number of retired SSE/AVX FLOPS. The number of events logged per cycle can vary from 0 to 64. This event can count above 15. See 2.1.11.2 [Large Increment per Cycle Events]",
87	"units": [
88		{
89		"name": "DpMultAddFlops",
90		"bit": 7,
91		"rw": "Read-write",
92		"description": "Double precision multiply-add FLOPS. Multiply-add counts as 2 FLOPS."
93	}, {
94		"name": "DpDivFlops",
95		"bit": 6,
96		"rw": "Read-write",
97		"description": "Double precision divide/square root FLOPS."
98	}, {
99		"name": "DpMultFlops",
100		"bit": 5,
101		"rw": "Read-write",
102		"description": "Double precision multiply FLOPS."
103	}, {
104		"name": "DpAddSubFlops",
105		"bit": 4,
106		"rw": "Read-write",
107		"description": "Double precision add/subtract FLOPS."
108	}, {
109		"name": "SpMultAddFlops",
110		"bit": 3,
111		"rw": "Read-write",
112		"description": "Single precision multiply-add FLOP. Multiply-add counts as 2 FLOPS."
113	}, {
114		"name": "SpDivFlops",
115		"bit": 2,
116		"rw": "Read-write",
117		"description": "Single-precision divide/square root FLOPS"
118	}, {
119		"name": "SpMultFlops",
120		"bit": 1,
121		"rw": "Read-write",
122		"description": "Single-precision multiply FLOPS"
123	}, {
124		"name": "SpAddSubFlops",
125		"bit": 0,
126		"rw": "Read-write",
127		"description": "Single-precision add/subtract FLOPS"
128	} ]
129},
130{
131	"mnemonic": "Core::X86::Pmc::Core::FpNumMovElimScalOp",
132	"name": "FpNumMovElimScalOp",
133	"code": "0x004",
134	"summary": "Number of Move Elimination and Scalar Op Optimization",
135	"description": "This is a dispatch based speculative event, and is useful for measuring the effectiveness of the Move elimination and Scalar code optimization schemes.",
136	"units": [ {
137		"name": "Optimized",
138		"bit": 3,
139		"rw": "Read-write",
140		"description": "Number of Scalar Ops optimized"
141	}, {
142		"name": "OptPotential",
143		"bit": 2,
144		"rw": "Read-write",
145		"description": "Number of Ops that are candidates for optimization (have Z-bit either set or pass)."
146	}, {
147		"name": "SseMovOpsElim",
148		"bit": 1,
149		"rw": "Read-write",
150		"description": "Number of SSE Move Ops eliminated"
151	}, {
152		"name": "SseMovOps",
153		"bit": 0,
154		"rw": "Read-write",
155		"description": "Number of SSE Move Ops"
156	} ]
157},
158{
159	"mnemonic": "Core::X86::Pmc::Core::FpRetiredSerOps",
160	"name": "FpRetiredSerOps",
161	"code": "0x005",
162	"summary": "Retired Serializing Ops",
163	"description": "The number of serializing Ops retired.",
164	"units": [ {
165		"name": "X87CtrlRet",
166		"bit": 3,
167		"rw": "Read-write",
168		"description": "x87 control word mispredict traps due to mispredictions in RC or PC, or changes in mask bits"
169	}, {
170		"name": "X87BotRet",
171		"bit": 2,
172		"rw": "Read-write",
173		"description": "x87 bottom-executing uOps retired"
174	}, {
175		"name": "SseCtrlRet",
176		"bit": 1,
177		"rw": "Read-write",
178		"description": "SSE control word mispredict traps due to mispredictions in RC, FTZ or DAZ, or changes in mask bits"
179	}, {
180		"name": "SseBotRet",
181		"bit": 0,
182		"rw": "Read-write",
183		"description": "SSE bottom-executing uOps retired"
184	} ]
185},
186{
187	"mnemonic": "Core::X86::Pmc::Core::LsBadStatus2",
188	"name": "LsBadStatus2",
189	"code": "0x024",
190	"summary": "Bad Status 2",
191	"description": "Store To Load Interlock (STLI) are loads that were unable to complete because of a possible match with an older store, and the older store could not do STLF for some reason. There are a number of reasons why this occurs, and this perfmon organizes them into three major groups.",
192	"units": [ {
193		"name": "StlfNoData",
194		"bit": 2,
195		"rw": "Read-write",
196		"description": "The load is capable of forwarding from an older store (i.e. the address match/overlap between the load and the older store) was good and everything works from an address perspective, but the store's data has not been produced by EX or FP yet so it can't be forwarded."
197	}, {
198		"name": "StliOther",
199		"bit": 1,
200		"rw": "Read-write",
201		"description": "All the other reasons. The most common among these is that there is only a partial overlap between the store and the load, for example there's an 8B store to address A and a 16B load starting at address A. STLF can't be performed in this case because only some of the load's data is coming fromthe store, so the load gets StliOther. Another StliOther case is if the load hits a non-cacheable store that's sitting in the non-cacheable buffers (WCBs)."
202	}, {
203		"name": "StliNoState",
204		"bit": 0,
205		"rw": "Rewad-write",
206		"description": "The STLF is validated using DC way instead of an address compare. The store that wants to STLF is required to be a DC hit and have a valid DC way. The STLF candidate store is chosen based on address bits 11:0 overlap, and the DC way of that store is compared to the way of the load. If the store is in a DC miss state, then it doesn't have a valid DC way and so cannot validate STLF. The load gets StliNoState and can't complete.  Read-write"
207	} ]
208},
209{
210	"mnemonic": "Core::X86::Pmc::Core::LsLocks",
211	"name": "LsLocks",
212	"code": "0x025",
213	"summary": "Locks",
214	"unit_mode": "or",
215	"units": [ {
216		"name": "SpecLockMapCommit",
217		"bit": 3,
218		"rw": "Read-write"
219	}, {
220		"name": "SpecLock",
221		"bit": 2,
222		"rw": "Read-write"
223	}, {
224		"name": "NonSpecLock",
225		"bit": 1,
226		"rw": "Read-write"
227	}, {
228		"name": "BusLock",
229		"bit": 0,
230		"rw": "Read-write"
231	} ]
232},
233{
234	"mnemonic": "Core::X86::Pmc::Core::LsRetClClush",
235	"name": "LsRetClClush",
236	"code": "0x026",
237	"summary": "Retired CLFLUSH Instructions",
238	"description": "The number of retired CLFLUSH instructions. This is a non-speculative event."
239},
240{
241	"mnemonic": "Core::X86::Pmc::Core::LsRetCpuid",
242	"name": "LsRetCpuid",
243	"code": "0x027",
244	"summary": "Retired CPUID Instructions",
245	"description": "The number of CPUID instructions retired."
246},
247{
248	"mnemonic": "Core::X86::Pmc::Core::LsDispatch",
249	"name": "LsDispatch",
250	"code": "0x029",
251	"summary": "LS Dispatch",
252	"description": "Counts the number of operations dispatched to the LS unit.",
253	"unit_mode": "add",
254	"units": [ {
255		"name": "LdStDispatch",
256		"bit": 2,
257		"rw": "Read-write",
258		"description": "Load-op-Stores"
259	}, {
260		"name": "StoreDispatch",
261		"bit": 1,
262		"rw": "Read-write"
263	}, {
264		"name": "LdDispatch",
265		"bit": 0,
266		"rw": "Read-write"
267	} ]
268},
269{
270	"mnemonic": "Core::X86::Pmc::Core::LsSmiRx",
271	"name": "LsSmiRx",
272	"code": "0x02B",
273	"summary": "SMIs Received",
274	"description": "Counts the number of SMIs received."
275},
276{
277	"mnemonic": "Core::X86::Pmc::Core::LsSTLF",
278	"name": "LsSTLF",
279	"code": "0x035",
280	"summary": "Store to Load Forward",
281	"description": "Number of STLF hits."
282},
283{
284	"mnemonic": "Core::X86::Pmc::Core::LsStCommitCancel2",
285	"name": "LsStCommitCancel2",
286	"code": "0x037",
287	"summary": "Store Commit Cancels 2",
288	"units": [ {
289		"name": "StCommitCancelWcbFull",
290		"bit": 0,
291		"rw": "Read-write",
292		"description": "A non-cacheable store and the non-cacheable commit buffer is full."
293	} ]
294},
295{
296	"mnemonic": "Core::X86::Pmc::Core::LsDcAccesses",
297	"name": "LsDcAccesses",
298	"code": "0x040",
299	"summary": "Data Cache Accesses",
300	"description": "The number of accesses to the data cache for load and store references. This may include certain microcode scratchpad accesses, although these are generally rare. Each increment represents an eight-byte access, although the instruction may only be accessing a portion of that. This event is a speculative event."
301},
302{
303	"mnemonic": "Core::X86::Pmc::Core::LsRefillsFromSys",
304	"name": "LsRefillsFromSys",
305	"code": "0x043",
306	"summary": "Data Cache Refills from System",
307	"description": "Demand Data Cache Fills by Data Source.",
308	"units": [ {
309		"name": "LS_MABRESP_RMT_DRAM",
310		"bit": 6,
311		"rw": "Read-write",
312		"description": "DRAM or IO from different die."
313	}, {
314		"name": "LS_MABRESP_RMT_CACHE",
315		"bit": 4,
316		"rw": "Read-write",
317		"description": "Hit in cache; Remote CCX and the address's Home Node is on a different die."
318	}, {
319		"name": "LS_MABRESP_LCL_DRAM",
320		"bit": 3,
321		"rw": "Read-write",
322		"description": "DRAM or IO from this thread's die."
323	}, {
324		"name": "LS_MABRESP_LCL_CACHE",
325		"bit": 1,
326		"rw": "Read-write",
327		"description": "Hit in cache; local CCX (not Local L2), or Remote CCX and the address's Home Node is on this thread's die."
328	}, {
329		"name": "MABRESP_LCL_L2",
330		"bit": 0,
331		"rw": "Read-write",
332		"description": "Local L2 hit."
333	} ]
334},
335{
336	"mnemonic": "Core::X86::Pmc::Core::LsL1DTlbMiss",
337	"name": "LsL1DTlbMiss",
338	"code": "0x045",
339	"summary": "L1 DTLB Miss",
340	"units": [ {
341		"name": "TlbReload1GL2Miss",
342		"bit": 7,
343		"rw": "Read-write"
344	}, {
345		"name": "TlbReload2ML2Miss",
346		"bit": 6,
347		"rw": "Read-write"
348	}, {
349		"name": "TlbReload32KL2Miss",
350		"bit": 5,
351		"rw": "Read-write"
352	}, {
353		"name": "TlbReload4KL2Miss",
354		"bit": 4,
355		"rw": "Read-write"
356	}, {
357		"name": "TlbReload1GL2Hit",
358		"bit": 3,
359		"rw": "Read-write"
360	}, {
361		"name": "TlbReload2ML2Hit",
362		"bit": 2,
363		"rw": "Read-write"
364	}, {
365		"name": "TlbReload32KL2Hit",
366		"bit": 1,
367		"rw": "Read-write"
368	}, {
369		"name": "TlbReload4KL2Hit",
370		"bit": 0,
371		"rw": "Read-write"
372	} ]
373},
374{
375	"mnemonic": "Core::X86::Pmc::Core::LsTablewalker",
376	"name": "LsTablewalker",
377	"code": "0x046",
378	"summary": "Tablewalker allocation",
379	"units": [ {
380		"name": "PerfMonTablewalkAllocIside1",
381		"bit": 3,
382		"rw": "Read-write"
383	}, {
384		"name": "PerfMonTablewalkAllocIside0",
385		"bit": 2,
386		"rw": "Read-write"
387	}, {
388		"name": "PerfMonTablewalkAllocDside1",
389		"bit": 1,
390		"rw": "Read-write"
391	}, {
392		"name": "PerfMonTablewalkAllocDside0",
393		"bit": 0,
394		"rw": "Read-write"
395	} ]
396},
397{
398	"mnemonic": "Core::X86::Pmc::Core::LsMisalAccesses",
399	"name": "LsMisalAccesses",
400	"code": "0x047",
401	"summary": "Misaligned loads"
402},
403{
404	"mnemonic": "Core::X86::Pmc::Core::LsPrefInstrDisp",
405	"name": "LsPrefInstrDisp",
406	"code": "0x04B",
407	"summary": "Prefetch Instructions Dispatched",
408	"description": "Software Prefetch Instructions Dispatched.",
409	"units": [ {
410		"name": "PrefetchNTA",
411		"bit": 2,
412		"rw": "Read-write"
413	}, {
414		"name": "StorePrefetchW",
415		"bit": 1,
416		"rw": "Read-write"
417	}, {
418		"name": "LoadPrefetchW",
419		"bit": 0,
420		"rw": "Read-write",
421		"description": "Prefetch, Prefetch_T0_T1_T2"
422	} ]
423},
424{
425	"mnemonic": "Core::X86::Pmc::Core::LsInefSwPref",
426	"name": "LsInefSwPref",
427	"code": "0x052",
428	"summary": "Ineffective Software Prefetchs",
429	"description": "The number of software prefetches that did not fetch data outside of the processor core.",
430	"units": [ {
431		"name": "MabMchCnt",
432		"bit": 1,
433		"rw": "Read-write",
434		"description": "Software PREFETCH instruction saw a match on an already-allocated miss request buffer."
435	}, {
436		"name": "DataPipeSwPfDcHit",
437		"bit": 0,
438		"rw": "Read-write",
439		"description": "Software PREFETCH instruction saw a DC hit."
440	} ]
441},
442{
443	"mnemonic": "Core::X86::Pmc::Core::LsSwPfDcFills",
444	"name": "LsSwPfDcFills",
445	"code": "0x059",
446	"summary": "Software Prefetch Data Cache Fills",
447	"description": "Software Prefetch Data Cache Fills by Data Source",
448	"units": [ {
449		"name": "LS_MABRESP_RMT_DRAM",
450		"bit": 6,
451		"rw": "Read-write",
452		"description": "DRAM or IO from different die."
453	}, {
454		"name": "LS_MABRESP_RMT_CACHE",
455		"bit": 4,
456		"rw": "Read-write",
457		"description": "Hit in cache; Remote CCX and the address's Home Node is on a different die."
458	}, {
459		"name": "LS_MABRESP_LCL_DRAM",
460		"bit": 3,
461		"rw": "Read-write",
462		"description": "DRAM or IO from this thread's die."
463	}, {
464		"name": "LS_MABRESP_LCL_CACHE",
465		"bit": 1,
466		"rw": "Read-write",
467		"description": "Hit in cache; local CCX (not Local L2), or Remote CCX and the address's Home Node is on this thread's die."
468	}, {
469		"name": "MABRESP_LCL_L2",
470		"bit": 0,
471		"rw": "Read-write",
472		"description": "Local L2 hit."
473	} ]
474},
475{
476	"mnemonic": "Core::X86::Pmc::Core::LsHwPfDcFills",
477	"name": "LsHwPfDcFills",
478	"code": "0x05A",
479	"summary": "Hardware Prefetch Data Cache Fills",
480	"description": "Hardware Prefetch Data Cache Fills by Data Source",
481	"units": [ {
482		"name": "LS_MABRESP_RMT_DRAM",
483		"bit": 6,
484		"rw": "Read-write",
485		"description": "DRAM or IO from different die."
486	}, {
487		"name": "LS_MABRESP_RMT_CACHE",
488		"bit": 4,
489		"rw": "Read-write",
490		"description": "Hit in cache; Remote CCX and the address's Home Node is on a different die."
491	}, {
492		"name": "LS_MABRESP_LCL_DRAM",
493		"bit": 3,
494		"rw": "Read-write",
495		"description": "DRAM or IO from this thread's die."
496	}, {
497		"name": "LS_MABRESP_LCL_CACHE",
498		"bit": 1,
499		"rw": "Read-write",
500		"description": "Hit in cache; local CCX (not Local L2), or Remote CCX and the address's Home Node is on this thread's die."
501	}, {
502		"name": "MABRESP_LCL_L2",
503		"bit": 0,
504		"rw": "Read-write",
505		"description": "Local L2 hit."
506	} ]
507},
508{
509	"mnemonic": "Core::X86::Pmc::Core::LsTwDcFills",
510	"name": "LsTwDcFills",
511	"code": "0x05B",
512	"summary": "Table Walker Data Cache Fills by Data Source",
513	"units": [ {
514		"name": "LS_MABRESP_RMT_DRAM",
515		"bit": 6,
516		"rw": "Read-write",
517		"description": "DRAM or IO from different die."
518	}, {
519		"name": "LS_MABRESP_RMT_CACHE",
520		"bit": 4,
521		"rw": "Read-write",
522		"description": "Hit in cache; Remote CCX and the address's Home Node is on a different die."
523	}, {
524		"name": "LS_MABRESP_LCL_DRAM",
525		"bit": 3,
526		"rw": "Read-write",
527		"description": "DRAM or IO from this thread's die."
528	}, {
529		"name": "LS_MABRESP_LCL_CACHE",
530		"bit": 1,
531		"rw": "Read-write",
532		"description": "Hit in cache; local CCX (not Local L2), or Remote CCX and the address's Home Node is on this thread's die."
533	}, {
534		"name": "MABRESP_LCL_L2",
535		"bit": 0,
536		"rw": "Read-write",
537		"description": "Local L2 hit."
538	} ]
539},
540{
541	"mnemonic": "Core::X86::Pmc::Core::LsNotHaltedCyc",
542	"name": "LsNotHaltedCyc",
543	"code": "0x076",
544	"summary": "Cycles not in Halt"
545},
546{
547	"mnemonic": "Core::X86::Pmc::Core::IcFw32",
548	"name": "IcFw32",
549	"code": "0x080",
550	"summary": "32 Byte Instruction Cache Fetch",
551	"description": "The number of 32B fetch windows transferred from IC pipe to DE instruction decoder (includes non-cacheable and cacheable fill responses)."
552},
553{
554	"mnemonic": "Core::X86::Pmc::Core::IcFw32Miss",
555	"name": "IcFw32Miss",
556	"code": "0x081",
557	"summary": "32 Byte Instruction Cache Misses",
558	"description": "The number of 32B fetch windows tried to read the L1 IC and missed in the full tag."
559},
560{
561	"mnemonic": "Core::X86::Pmc::Core::IcCacheFillL2",
562	"name": "IcCacheFillL2",
563	"code": "0x082",
564	"summary": "Instruction Cache Refills from L2",
565	"description": "The number of 64 byte instruction cache line was fulfilled from the L2 cache."
566},
567{
568	"mnemonic": "Core::X86::Pmc::Core::IcCacheFillSys",
569	"name": "IcCacheFillSys",
570	"code": "0x083",
571	"summary": "Instruction Cache Refills from System",
572	"description": "The number of 64 byte instruction cache line fulfilled from system memory or another cache."
573},
574{
575	"mnemonic": "Core::X86::Pmc::Core::BpL1TlbMissL2Hit",
576	"name": "BpL1TlbMissL2Hit",
577	"code": "0x084",
578	"summary": "L1 ITLB Miss, L2 ITLB Hit",
579	"description": "The number of instruction fetches that miss in the L1 ITLB but hit in the L2 ITLB."
580},
581{
582	"mnemonic": "Core::X86::Pmc::Core::BpL1TlbMissL2Miss",
583	"name": "BpL1TlbMissL2Miss",
584	"code": "0x085",
585	"summary": "L1 ITLB Miss, L2 ITLB Miss",
586	"description": "The number of instruction fetches that miss in both the L1 and L2 TLBs"
587},
588{
589	"mnemonic": "Core::X86::Pmc::Core::IcFetchStall",
590	"name": "IcFetchStall",
591	"code": "0x087",
592	"summary": "Instruction Pipe Stall",
593	"units": [ {
594		"name": "IcStallAny",
595		"bit": 2,
596		"rw": "Read-write ",
597		"description": "Instruction Cache pipeline was stalled during this clock cycle for any reason."
598	}, {
599		"name": "IcStallDqEmpty",
600		"bit": 1,
601		"rw": "Read-write",
602		"description": "Instruction Cache pipeline was stalled during this clock cycle due to upstream not providing fetch addresses quickly."
603	}, {
604		"name": "IcStallBackPressure",
605		"bit": 0,
606		"rw": "Read-write",
607		"description": "Instruction Cache pipeline was stalled during this clock cycle due to downstream queues being full."
608	} ]
609},
610{
611	"mnemonic": "Core::X86::Pmc::Core::BpL1BTBCorrect",
612	"name": "BpL1BTBCorrect",
613	"code": "0x08A",
614	"summary": "L1 BTB Correction"
615},
616{
617	"mnemonic": "Core::X86::Pmc::Core::BpL2BTBCorrect",
618	"name": "BpL2BTBCorrect",
619	"code": "0x08B",
620	"summary": "L2 BTB Correction"
621},
622{
623	"mnemonic": "Core::X86::Pmc::Core::IcCacheInval",
624	"name": "IcCacheInval",
625	"code": "0x08C",
626	"summary": "Instruction Cache Lines Invalidated",
627	"description": "The number of instruction cache lines invalidated. A non-SMC event is CMC (cross modifying code), either from the other thread of the core or another core.",
628	"units": [ {
629		"name": "L2InvalidatingProbe",
630		"bit": 1,
631		"rw": "Read-write",
632		"description": "IC line invalidated due to L2 invalidating probe (external or LS)."
633	}, {
634		"name": "FillInvalidated",
635		"bit": 0,
636		"rw": "Read-write",
637		"description": "IC line invalidated due to overwriting fill response."
638	} ]
639},
640{
641	"mnemonic": "Core::X86::Pmc::Core::BpTlbRel",
642	"name": "BpTlbRel",
643	"code": "0x099",
644	"summary": "ITLB Reloads",
645	"description": "The number of ITLB reload requests."
646},
647{
648	"mnemonic": "Core::X86::Pmc::Core::IcOcModeSwitch",
649	"name": "IcOcModeSwitch",
650	"code": "0x28A",
651	"summary": "OC Mode Switch",
652	"units": [ {
653		"name": "OcIcModeSwitch",
654		"bit": 1,
655		"rw": "Read-write",
656		"description": "OC to IC mode switch"
657	}, {
658		"name": "IcOcModeSwitch",
659		"bit": 0,
660		"rw": "Read-write",
661		"description": "IC to OC mode switch"
662	} ]
663},
664{
665	"mnemonic": "Core::X86::Pmc::Core::DeDisDispatchTokenStalls0",
666	"name": "DeDisDispatchTokenStalls0",
667	"code": "0x0AF",
668	"summary": "Dynamic Tokens Dispatch Stall Cycles 0",
669	"description": "Cycles where a dispatch group is valid but does not get dispatched due to a token stall.",
670	"units": [ {
671		"name": "RetireTokenStall",
672		"bit": 6,
673		"rw": "Read-write",
674		"description": "RETIRE Tokens unavailable"
675	}, {
676		"name": "AGSQTokenStall",
677		"bit": 5,
678		"rw": "Read-write",
679		"description": "AGSQ Tokens unavailable"
680	}, {
681		"name": "ALUTokenStall",
682		"bit": 4,
683		"rw": "Read-write",
684		"description": "ALU tokens total unavailable"
685	}, {
686		"name": "ALSQ3_0_TokenStall",
687		"bit": 3,
688		"rw": "Read-write"
689	}, {
690		"name": "ALSQ3TokenStall",
691		"bit": 2,
692		"rw": "Read-write",
693		"description": "ALSQ 3 Tokens unavailable"
694	}, {
695		"name": "ALSQ2TokenStall",
696		"bit": 1,
697		"rw": "Read-write",
698		"description": "ALSQ 2 Tokens unavailable"
699	}, {
700		"name": "ALSQ1TokenStall",
701		"bit": 0,
702		"rw": "Read-write",
703		"description": "ALSQ 1 Tokens unavailable"
704	} ]
705},
706{
707	"mnemonic": "Core::X86::Pmc::Core::ExRetInstr",
708	"name": "ExRetInstr",
709	"code": "0x0C0",
710	"summary": "Retired Instructions"
711},
712{
713	"mnemonic": "Core::X86::Pmc::Core::ExRetCops",
714	"name": "ExRetCops",
715	"code": "0x0C1",
716	"summary": "Retired Uops",
717	"description": "The number of uOps retired. This includes all processor activity (instructions, exceptions, interrupts, microcode assists, etc.). The number of events logged per cycle can vary from 0 to 4."
718},
719{
720	"mnemonic": "Core::X86::Pmc::Core::ExRetBrn",
721	"name": "ExRetBrn",
722	"code": "0x0C2",
723	"summary": "Retired Branch Instructions",
724	"description": "The number of branch instructions retired. This includes all types of architectural control flow changes, including exceptions and interrupts."
725},
726{
727	"mnemonic": "Core::X86::Pmc::Core::ExRetBrnMisp",
728	"name": "ExRetBrnMisp",
729	"code": "0x0C3",
730	"summary": "Retired Branch Instructions Mispredicted",
731	"description": "The number of branch instructions retired, of any type, that were not correctly predicted. This includes those for which prediction is not attempted (far control transfers, exceptions and interrupts)."
732},
733{
734	"mnemonic": "Core::X86::Pmc::Core::ExRetBrnTkn",
735	"name": "ExRetBrnTkn",
736	"code": "0x0C4",
737	"summary": "Retired Taken Branch Instructions",
738	"description": "The number of taken branches that were retired. This includes all types of architectural control flow changes, including exceptions and interrupts."
739},
740{
741	"mnemonic": "Core::X86::Pmc::Core::ExRetBrnTknMisp",
742	"name": "ExRetBrnTknMisp",
743	"code": "0x0C5",
744	"summary": "Retired Taken Branch Instructions Mispredicted",
745	"description": "The number of retired taken branch instructions that were mispredicted."
746},
747{
748	"mnemonic": "Core::X86::Pmc::Core::ExRetBrnFar",
749	"name": "ExRetBrnFar",
750	"code": "0x0C6",
751	"summary": "Retired Far Control Transfers",
752	"description": "The number of far control transfers retired including far call/jump/return, IRET, SYSCALL and SYSRET, plus exceptions and interrupts. Far control transfers are not subject to branch prediction."
753},
754{
755	"mnemonic": "Core::X86::Pmc::Core::ExRetBrnResync",
756	"name": "ExRetBrnResync",
757	"code": "0x0C7",
758	"summary": "Retired Branch Resyncs",
759	"description": "The number of resync branches. These reflect pipeline restarts due to certain microcode assists and events such as writes to the active instruction stream, among other things. Each occurrence reflects a restart penalty similar to a branch mispredict. This is relatively rare."
760},
761{
762	"mnemonic": "Core::X86::Pmc::Core::ExRetNearRet",
763	"name": "ExRetNearRet",
764	"code": "0x0C8",
765	"summary": "Retired Near Returns",
766	"description": "The number of near return instructions (RET or RET Iw) retired."
767},
768{
769	"mnemonic": "Core::X86::Pmc::Core::ExRetNearRetMispred",
770	"name": "ExRetNearRetMispred",
771	"code": "0x0C9",
772	"summary": "Retired Near Returns Mispredicted",
773	"description": "The number of near returns retired that were not correctly predicted by the return address predictor. Each such mispredict incurs the same penalty as a mispredicted conditional branch instruction."
774},
775{
776	"mnemonic": "Core::X86::Pmc::Core::ExRetBrnIndMisp",
777	"name": "ExRetBrnIndMisp",
778	"code": "0x0CA",
779	"summary": "Retired Indirect Branch Instructions Mispredicted"
780},
781{
782	"mnemonic": "Core::X86::Pmc::Core::ExRetMmxFpInstr",
783	"name": "ExRetMmxFpInstr",
784	"code": "0x0CB",
785	"summary": "Retired MMXTM/FP Instructions",
786	"description": "The number of MMX, SSE or x87 instructions retired. The UnitMask allows the selection of the individual classes of instructions as given in the table. Each increment represents one complete instruction. Since this event includes non- numeric instructions it is not suitable for measuring MFLOPS.",
787	"units": [ {
788		"name": "SseInstr",
789		"bit": 2,
790		"rw": "Read-write",
791		"description": "SSE instructions (SSE, SSE2, SSE3, SSSE3, SSE4A, SSE41, SSE42, AVX)."
792	}, {
793		"name": "MmxInstr",
794		"bit": 1,
795		"rw": "Read-write",
796		"description": "MMX instructions."
797	}, {
798		"name": "X87Instr",
799		"bit": 0,
800		"rw": "Read-write",
801		"description": "x87 instructions"
802	} ]
803},
804{
805	"mnemonic": "Core::X86::Pmc::Core::ExRetCond",
806	"name": "ExRetCond",
807	"code": "0x0D1",
808	"summary": "Retired Conditional Branch Instructions"
809},
810{
811	"mnemonic": "Core::X86::Pmc::Core::ExDivBusy",
812	"name": "ExDivBusy",
813	"code": "0x0D3",
814	"summary": "Div Cycles Busy count"
815},
816{
817	"mnemonic": "Core::X86::Pmc::Core::ExDivCount",
818	"name": "ExDivCount",
819	"code": "0x0D4",
820	"summary": "Div Op Count"
821},
822{
823	"mnemonic": "Core::X86::Pmc::Core::ExTaggedIbsOps",
824	"name": "ExTaggedIbsOps",
825	"code": "0x1CF",
826	"summary": "Tagged IBS Ops",
827	"units": [ {
828		"name": "IbsCountRollover",
829		"bit": 2,
830		"rw": "Read-write",
831		"description": "Number of times an op could not be tagged by IBS because of a previous tagged op that has not retired."
832	}, {
833		"name": "IbsTaggedOpsRet",
834		"bit": 1,
835		"rw": "Read-write",
836		"description": "Number of Ops tagged by IBS that retired"
837	}, {
838		"name": "IbsTaggedOps",
839		"bit": 0,
840		"rw": "Read-write",
841		"description": "Number of Ops tagged by IBS"
842	} ]
843}, {
844	"mnemonic": "Core::X86::Pmc::Core::ExRetFusBrnchInst",
845	"name": "ExRetFusBrnchInst",
846	"code": "0x1D0",
847	"summary": "Retired Fused Branch Instructions",
848	"description": "The number of fused retired branch instructions retired per cycle. The number of events logged per cycle can vary from 0 to 3."
849},
850{
851	"mnemonic": "Core::X86::Pmc::Core::L2RequestG1",
852	"name": "L2RequestG1",
853	"code": "0x060",
854	"summary": "Requests to L2 Group1",
855	"units": [ {
856		"name": "RdBlkL",
857		"bit": 7,
858		"rw": "Read-write"
859	}, {
860		"name": "RdBlkX",
861		"bit": 6,
862		"rw": "Read-write"
863	}, {
864		"name": "LsRdBlkC_S",
865		"bit": 5,
866		"rw": "Read-write"
867	}, {
868		"name": "CacheableIcRead",
869		"bit": 4,
870		"rw": "Read-write"
871	}, {
872		"name": "ChangeToX",
873		"bit": 3,
874		"rw": "Read-write"
875	}, {
876		"name": "PrefetchL2",
877		"bit": 2,
878		"rw": "Read-write",
879		"description": "Assume core should also count these and allow the breakdown between H/W vs. S/W and LS vs. IC."
880	}, {
881		"name": "L2HwPf",
882		"bit": 1,
883		"rw": "Read-write"
884	}, {
885		"name": "OtherRequests",
886		"bit": 0,
887		"rw": "Read-write",
888		"description": "Events covered by Core::X86::Pmc::Core::L2RequestG2."
889	} ]
890}, {
891	"mnemonic": "Core::X86::Pmc::Core::L2RequestG2",
892	"name": "L2RequestG2",
893	"code": "0x061",
894	"summary": "Requests to L2 Group2",
895	"description": "Multi-events in that LS and IF requests can be received simultaneous.",
896	"units": [ {
897		"name": "Group1",
898		"bit": 7,
899		"rw": "Read-write",
900		"description": "All Group 1 commands not in unit0."
901	}, {
902		"name": "LsRdSized",
903		"bit": 6,
904		"rw": "Read-write",
905		"description": "RdSized, RdSized32, RdSized64."
906	}, {
907		"name": "LsRdSizedNC",
908		"bit": 5,
909		"rw": "Read-write",
910		"description": "RdSizedNC, RdSized32NC, RdSized64NC."
911	}, {
912		"name": "IcRdSized",
913		"bit": 4,
914		"rw": "Read-write"
915	}, {
916		"name": "IcRdSizedNC",
917		"bit": 3,
918		"rw": "Read-write"
919	}, {
920		"name": "SmcInval",
921		"bit": 2,
922		"rw": "Read-write"
923	}, {
924		"name": "BusLocksOriginator",
925		"bit": 1,
926		"rw": "Read-write"
927	}, {
928		"name": "BusLocksResponses",
929		"bit": 0,
930		"rw": "Read-write"
931	} ]
932},
933{
934	"mnemonic": "Core::X86::Pmc::Core::L2Latancy",
935	"name": "L2Latancy",
936	"code": "0x062",
937	"summary": "L2 Latency",
938	"description": "Total cycles spent waiting for L2 fills to complete from L3 or memory, divided by four. This may be used to calculate average latency by multiplying this count by four and then dividing by the total number of L2 fills (unit mask Core::X86::Pmc::Core::L2RequestG1 == FEh). Event counts are for both threads. To calculate average latency, the number of fills from both threads must be used.",
939	"units": [ {
940		"name": "L2CyclesWaitingOnFills",
941		"bit": 0,
942		"rw": "Read-write"
943	} ]
944},
945{
946	"mnemonic": "Core::X86::Pmc::Core::L2WbcReq",
947	"name": "L2WbcReq",
948	"code": "0x063",
949	"summary": "LS to L2 WBC requests",
950	"units": [ {
951		"name": "WcbWrite",
952		"bit": 6,
953		"rw": "Read-write"
954	}, {
955		"name": "WcbClose",
956		"bit": 5,
957		"rw": "Read-write"
958	}, {
959		"name": "CacheLineFlush",
960		"bit": 4,
961		"rw": "Read-write"
962	}, {
963		"name": "I_LineFlush",
964		"bit": 3,
965		"rw": "Read-write"
966	}, {
967		"name": "ZeroByteStore",
968		"bit": 2,
969		"rw": "Read-write",
970		"description": "This becomes WriteNoData at SDP; this count does not include DVM Sync Ops and bus locks which are counted in Core::X86::Pmc::Core::L2RequestG2."
971	}, {
972		"name": "LocalIcClr",
973		"bit": 1,
974		"rw": "Read-write",
975		"description": "Local IC Clear"
976	}, {
977		"name": "CLZero",
978		"bit": 0,
979		"rw": "Read-write",
980		"description": "Cache Line Zero"
981	} ]
982},
983{
984	"mnemonic": "Core::X86::Pmc::Core::L2CacheReqStat",
985	"name": "L2CacheReqStat",
986	"code": "0x064",
987	"summary": "Core to L2 Cacheable Request Access Status",
988	"description": "This event does not count accesses to the L2 cache by the L2 prefetcher, but it does count accesses by the L1 prefetcher.",
989	"units": [ {
990		"name": "LsRdBlkCS",
991		"bit": 7,
992		"rw": "Read-write",
993		"description": "LS ReadBlock C/S Hit"
994	}, {
995		"name": "LsRdBlkLHitX",
996		"bit": 6,
997		"rw": "Read-write",
998		"description": "LS Read Block L Hit X"
999	}, {
1000		"name": "LsRdBlkLHitS",
1001		"bit": 5,
1002		"rw": "Read-write",
1003		"description": "LsRdBlkL Hit Shared"
1004	}, {
1005		"name": "LsRdBlkX",
1006		"bit": 4,
1007		"rw": "Read-write",
1008		"description": "LsRdBlkX/ChgToX Hit X. Count RdBlkX finding Shared as a Miss."
1009	}, {
1010		"name": "LsRdBlkC",
1011		"bit": 3,
1012		"rw": "Read-write",
1013		"description": "LS Read Block C S L X Change to X Miss"
1014	}, {
1015		"name": "IcFillHitX",
1016		"bit": 2,
1017		"rw": "Read-write",
1018		"description": "IC Fill Hit Exclusive Stale"
1019	}, {
1020		"name": "IcFillHitS",
1021		"bit": 1,
1022		"rw": "Read-write",
1023		"description": "IC Fill Hit Shared"
1024	}, {
1025		"name": "IcFillMiss",
1026		"bit": 0,
1027		"rw": "Read-write",
1028		"description": "IC Fill Miss"
1029	} ]
1030},
1031{
1032	"mnemonic": "Core::X86::Pmc::Core::L2FillPending",
1033	"name": "L2FillPending",
1034	"code": "0x06D",
1035	"summary": "Cycles with fill pending from L2",
1036	"description": "Total cycles spent with one or more fill requests in flight from L2.",
1037	"units": [ {
1038		"name": "L2FillBusy.",
1039		"bit": 0,
1040		"rw": "Read-write."
1041	} ]
1042}
1043]
1044