12bb3fbadSZhengjun Xing[
22bb3fbadSZhengjun Xing    {
3fa607370SIan Rogers        "BriefDescription": "C10 residency percent per package",
4fa607370SIan Rogers        "MetricExpr": "cstate_pkg@c10\\-residency@ / TSC",
5fa607370SIan Rogers        "MetricGroup": "Power",
6fa607370SIan Rogers        "MetricName": "C10_Pkg_Residency",
72bb3fbadSZhengjun Xing        "ScaleUnit": "100%"
82bb3fbadSZhengjun Xing    },
92bb3fbadSZhengjun Xing    {
102bb3fbadSZhengjun Xing        "BriefDescription": "C1 residency percent per core",
112bb3fbadSZhengjun Xing        "MetricExpr": "cstate_core@c1\\-residency@ / TSC",
122bb3fbadSZhengjun Xing        "MetricGroup": "Power",
132bb3fbadSZhengjun Xing        "MetricName": "C1_Core_Residency",
142bb3fbadSZhengjun Xing        "ScaleUnit": "100%"
152bb3fbadSZhengjun Xing    },
162bb3fbadSZhengjun Xing    {
172bb3fbadSZhengjun Xing        "BriefDescription": "C2 residency percent per package",
182bb3fbadSZhengjun Xing        "MetricExpr": "cstate_pkg@c2\\-residency@ / TSC",
192bb3fbadSZhengjun Xing        "MetricGroup": "Power",
202bb3fbadSZhengjun Xing        "MetricName": "C2_Pkg_Residency",
212bb3fbadSZhengjun Xing        "ScaleUnit": "100%"
222bb3fbadSZhengjun Xing    },
232bb3fbadSZhengjun Xing    {
242bb3fbadSZhengjun Xing        "BriefDescription": "C3 residency percent per package",
252bb3fbadSZhengjun Xing        "MetricExpr": "cstate_pkg@c3\\-residency@ / TSC",
262bb3fbadSZhengjun Xing        "MetricGroup": "Power",
272bb3fbadSZhengjun Xing        "MetricName": "C3_Pkg_Residency",
282bb3fbadSZhengjun Xing        "ScaleUnit": "100%"
292bb3fbadSZhengjun Xing    },
302bb3fbadSZhengjun Xing    {
31fa607370SIan Rogers        "BriefDescription": "C6 residency percent per core",
32fa607370SIan Rogers        "MetricExpr": "cstate_core@c6\\-residency@ / TSC",
33fa607370SIan Rogers        "MetricGroup": "Power",
34fa607370SIan Rogers        "MetricName": "C6_Core_Residency",
35fa607370SIan Rogers        "ScaleUnit": "100%"
36fa607370SIan Rogers    },
37fa607370SIan Rogers    {
382bb3fbadSZhengjun Xing        "BriefDescription": "C6 residency percent per package",
392bb3fbadSZhengjun Xing        "MetricExpr": "cstate_pkg@c6\\-residency@ / TSC",
402bb3fbadSZhengjun Xing        "MetricGroup": "Power",
412bb3fbadSZhengjun Xing        "MetricName": "C6_Pkg_Residency",
422bb3fbadSZhengjun Xing        "ScaleUnit": "100%"
432bb3fbadSZhengjun Xing    },
442bb3fbadSZhengjun Xing    {
45fa607370SIan Rogers        "BriefDescription": "C7 residency percent per core",
46fa607370SIan Rogers        "MetricExpr": "cstate_core@c7\\-residency@ / TSC",
47fa607370SIan Rogers        "MetricGroup": "Power",
48fa607370SIan Rogers        "MetricName": "C7_Core_Residency",
49fa607370SIan Rogers        "ScaleUnit": "100%"
50fa607370SIan Rogers    },
51fa607370SIan Rogers    {
522bb3fbadSZhengjun Xing        "BriefDescription": "C7 residency percent per package",
532bb3fbadSZhengjun Xing        "MetricExpr": "cstate_pkg@c7\\-residency@ / TSC",
542bb3fbadSZhengjun Xing        "MetricGroup": "Power",
552bb3fbadSZhengjun Xing        "MetricName": "C7_Pkg_Residency",
562bb3fbadSZhengjun Xing        "ScaleUnit": "100%"
572bb3fbadSZhengjun Xing    },
582bb3fbadSZhengjun Xing    {
592bb3fbadSZhengjun Xing        "BriefDescription": "C8 residency percent per package",
602bb3fbadSZhengjun Xing        "MetricExpr": "cstate_pkg@c8\\-residency@ / TSC",
612bb3fbadSZhengjun Xing        "MetricGroup": "Power",
622bb3fbadSZhengjun Xing        "MetricName": "C8_Pkg_Residency",
632bb3fbadSZhengjun Xing        "ScaleUnit": "100%"
642bb3fbadSZhengjun Xing    },
652bb3fbadSZhengjun Xing    {
662bb3fbadSZhengjun Xing        "BriefDescription": "C9 residency percent per package",
672bb3fbadSZhengjun Xing        "MetricExpr": "cstate_pkg@c9\\-residency@ / TSC",
682bb3fbadSZhengjun Xing        "MetricGroup": "Power",
692bb3fbadSZhengjun Xing        "MetricName": "C9_Pkg_Residency",
702bb3fbadSZhengjun Xing        "ScaleUnit": "100%"
712bb3fbadSZhengjun Xing    },
722bb3fbadSZhengjun Xing    {
73fa607370SIan Rogers        "BriefDescription": "Percentage of cycles spent in System Management Interrupts.",
74fa607370SIan Rogers        "MetricExpr": "((msr@aperf@ - cycles) / msr@aperf@ if msr@smi@ > 0 else 0)",
75fa607370SIan Rogers        "MetricGroup": "smi",
76fa607370SIan Rogers        "MetricName": "smi_cycles",
77fa607370SIan Rogers        "MetricThreshold": "smi_cycles > 0.1",
78fa607370SIan Rogers        "ScaleUnit": "100%"
79fa607370SIan Rogers    },
80fa607370SIan Rogers    {
81fa607370SIan Rogers        "BriefDescription": "Number of SMI interrupts.",
82fa607370SIan Rogers        "MetricExpr": "msr@smi@",
83fa607370SIan Rogers        "MetricGroup": "smi",
84fa607370SIan Rogers        "MetricName": "smi_num",
85fa607370SIan Rogers        "ScaleUnit": "1SMI#"
86fa607370SIan Rogers    },
87fa607370SIan Rogers    {
88fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not consumed by the backend due to certain allocation restrictions.",
89fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BE_BOUND.ALLOC_RESTRICTIONS / tma_info_slots",
90fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
91fa607370SIan Rogers        "MetricName": "tma_alloc_restriction",
92fa607370SIan Rogers        "MetricThreshold": "tma_alloc_restriction > 0.1",
93fa607370SIan Rogers        "ScaleUnit": "100%"
94fa607370SIan Rogers    },
95fa607370SIan Rogers    {
96fa607370SIan Rogers        "BriefDescription": "Counts the total number of issue slots  that were not consumed by the backend due to backend stalls",
97fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BE_BOUND.ALL / tma_info_slots",
98fa607370SIan Rogers        "MetricGroup": "TopdownL1;tma_L1_group",
99fa607370SIan Rogers        "MetricName": "tma_backend_bound",
100fa607370SIan Rogers        "MetricThreshold": "tma_backend_bound > 0.1",
101*ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL1",
102fa607370SIan Rogers        "PublicDescription": "Counts the total number of issue slots  that were not consumed by the backend due to backend stalls.  Note that uops must be available for consumption in order for this event to count.  If a uop is not available (IQ is empty), this event will not count.   The rest of these subevents count backend stalls, in cycles, due to an outstanding request which is memory bound vs core bound.   The subevents are not slot based events and therefore can not be precisely added or subtracted from the Backend_Bound_Aux subevents which are slot based.",
103fa607370SIan Rogers        "ScaleUnit": "100%"
104fa607370SIan Rogers    },
105fa607370SIan Rogers    {
106fa607370SIan Rogers        "BriefDescription": "Counts the total number of issue slots  that were not consumed by the backend due to backend stalls",
107fa607370SIan Rogers        "MetricExpr": "tma_backend_bound",
108fa607370SIan Rogers        "MetricGroup": "TopdownL1;tma_L1_group",
109fa607370SIan Rogers        "MetricName": "tma_backend_bound_aux",
110fa607370SIan Rogers        "MetricThreshold": "tma_backend_bound_aux > 0.2",
111*ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL1",
112fa607370SIan Rogers        "PublicDescription": "Counts the total number of issue slots  that were not consumed by the backend due to backend stalls.  Note that UOPS must be available for consumption in order for this event to count.  If a uop is not available (IQ is empty), this event will not count.  All of these subevents count backend stalls, in slots, due to a resource limitation.   These are not cycle based events and therefore can not be precisely added or subtracted from the Backend_Bound subevents which are cycle based.  These subevents are supplementary to Backend_Bound and can be used to analyze results from a resource perspective at allocation.",
113fa607370SIan Rogers        "ScaleUnit": "100%"
114fa607370SIan Rogers    },
115fa607370SIan Rogers    {
116fa607370SIan Rogers        "BriefDescription": "Counts the total number of issue slots that were not consumed by the backend because allocation is stalled due to a mispredicted jump or a machine clear",
117fa607370SIan Rogers        "MetricExpr": "(tma_info_slots - (TOPDOWN_FE_BOUND.ALL + TOPDOWN_BE_BOUND.ALL + TOPDOWN_RETIRING.ALL)) / tma_info_slots",
118fa607370SIan Rogers        "MetricGroup": "TopdownL1;tma_L1_group",
119fa607370SIan Rogers        "MetricName": "tma_bad_speculation",
120fa607370SIan Rogers        "MetricThreshold": "tma_bad_speculation > 0.15",
121*ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL1",
122fa607370SIan Rogers        "PublicDescription": "Counts the total number of issue slots that were not consumed by the backend because allocation is stalled due to a mispredicted jump or a machine clear. Only issue slots wasted due to fast nukes such as memory ordering nukes are counted. Other nukes are not accounted for. Counts all issue slots blocked during this recovery window including relevant microcode flows and while uops are not yet available in the instruction queue (IQ). Also includes the issue slots that were consumed by the backend but were thrown away because they were younger than the mispredict or machine clear.",
123fa607370SIan Rogers        "ScaleUnit": "100%"
124fa607370SIan Rogers    },
125fa607370SIan Rogers    {
126fa607370SIan Rogers        "BriefDescription": "Counts the number of uops that are not from the microsequencer.",
127fa607370SIan Rogers        "MetricExpr": "(TOPDOWN_RETIRING.ALL - UOPS_RETIRED.MS) / tma_info_slots",
128fa607370SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_retiring_group",
129fa607370SIan Rogers        "MetricName": "tma_base",
130fa607370SIan Rogers        "MetricThreshold": "tma_base > 0.6",
131*ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
132fa607370SIan Rogers        "ScaleUnit": "100%"
133fa607370SIan Rogers    },
134fa607370SIan Rogers    {
135fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to BACLEARS, which occurs when the Branch Target Buffer (BTB) prediction or lack thereof, was corrected by a later branch predictor in the frontend",
136fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.BRANCH_DETECT / tma_info_slots",
1370372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_latency_group",
138fa607370SIan Rogers        "MetricName": "tma_branch_detect",
139fa607370SIan Rogers        "MetricThreshold": "tma_branch_detect > 0.05",
140fa607370SIan Rogers        "PublicDescription": "Counts the number of issue slots  that were not delivered by the frontend due to BACLEARS, which occurs when the Branch Target Buffer (BTB) prediction or lack thereof, was corrected by a later branch predictor in the frontend. Includes BACLEARS due to all branch types including conditional and unconditional jumps, returns, and indirect branches.",
141fa607370SIan Rogers        "ScaleUnit": "100%"
142fa607370SIan Rogers    },
143fa607370SIan Rogers    {
144fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not consumed by the backend due to branch mispredicts.",
145fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BAD_SPECULATION.MISPREDICT / tma_info_slots",
146fa607370SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_bad_speculation_group",
147fa607370SIan Rogers        "MetricName": "tma_branch_mispredicts",
148fa607370SIan Rogers        "MetricThreshold": "tma_branch_mispredicts > 0.05",
149*ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
150fa607370SIan Rogers        "ScaleUnit": "100%"
151fa607370SIan Rogers    },
152fa607370SIan Rogers    {
153fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to BTCLEARS, which occurs when the Branch Target Buffer (BTB) predicts a taken branch.",
154fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.BRANCH_RESTEER / tma_info_slots",
1550372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_latency_group",
156fa607370SIan Rogers        "MetricName": "tma_branch_resteer",
157fa607370SIan Rogers        "MetricThreshold": "tma_branch_resteer > 0.05",
158fa607370SIan Rogers        "ScaleUnit": "100%"
159fa607370SIan Rogers    },
160fa607370SIan Rogers    {
161fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to the microcode sequencer (MS).",
162fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.CISC / tma_info_slots",
1630372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_bandwidth_group",
164fa607370SIan Rogers        "MetricName": "tma_cisc",
165fa607370SIan Rogers        "MetricThreshold": "tma_cisc > 0.05",
166fa607370SIan Rogers        "ScaleUnit": "100%"
167fa607370SIan Rogers    },
168fa607370SIan Rogers    {
169fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles due to backend bound stalls that are core execution bound and not attributed to outstanding demand load or store stalls.",
1700372358aSIan Rogers        "MetricExpr": "max(0, tma_backend_bound - tma_memory_bound)",
171fa607370SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_backend_bound_group",
172fa607370SIan Rogers        "MetricName": "tma_core_bound",
173fa607370SIan Rogers        "MetricThreshold": "tma_core_bound > 0.1",
174*ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
175fa607370SIan Rogers        "ScaleUnit": "100%"
176fa607370SIan Rogers    },
177fa607370SIan Rogers    {
178fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to decode stalls.",
179fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.DECODE / tma_info_slots",
1800372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_bandwidth_group",
181fa607370SIan Rogers        "MetricName": "tma_decode",
182fa607370SIan Rogers        "MetricThreshold": "tma_decode > 0.05",
183fa607370SIan Rogers        "ScaleUnit": "100%"
184fa607370SIan Rogers    },
185fa607370SIan Rogers    {
186fa607370SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to the number of nuke slots due to memory disambiguation.",
187fa607370SIan Rogers        "MetricExpr": "tma_nuke * (MACHINE_CLEARS.DISAMBIGUATION / MACHINE_CLEARS.SLOW)",
188fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_nuke_group",
189fa607370SIan Rogers        "MetricName": "tma_disambiguation",
190fa607370SIan Rogers        "MetricThreshold": "tma_disambiguation > 0.02",
191fa607370SIan Rogers        "ScaleUnit": "100%"
192fa607370SIan Rogers    },
193fa607370SIan Rogers    {
194fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles the core is stalled due to a demand load miss which hit in DRAM or MMIO (Non-DRAM).",
195fa607370SIan Rogers        "MetricConstraint": "NO_GROUP_EVENTS",
196fa607370SIan Rogers        "MetricExpr": "MEM_BOUND_STALLS.LOAD_DRAM_HIT / tma_info_clks - MEM_BOUND_STALLS_AT_RET_CORRECTION * MEM_BOUND_STALLS.LOAD_DRAM_HIT / MEM_BOUND_STALLS.LOAD",
1970372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_memory_bound_group",
198fa607370SIan Rogers        "MetricName": "tma_dram_bound",
199fa607370SIan Rogers        "MetricThreshold": "tma_dram_bound > 0.1",
200fa607370SIan Rogers        "ScaleUnit": "100%"
201fa607370SIan Rogers    },
202fa607370SIan Rogers    {
203fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not consumed by the backend due to a machine clear classified as a fast nuke due to memory ordering, memory disambiguation and memory renaming.",
204fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BAD_SPECULATION.FASTNUKE / tma_info_slots",
205fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_machine_clears_group",
206fa607370SIan Rogers        "MetricName": "tma_fast_nuke",
207fa607370SIan Rogers        "MetricThreshold": "tma_fast_nuke > 0.05",
208fa607370SIan Rogers        "ScaleUnit": "100%"
209fa607370SIan Rogers    },
210fa607370SIan Rogers    {
2110372358aSIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to frontend bandwidth restrictions due to decode, predecode, cisc, and other limitations.",
2120372358aSIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.FRONTEND_BANDWIDTH / tma_info_slots",
2130372358aSIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_frontend_bound_group",
2140372358aSIan Rogers        "MetricName": "tma_fetch_bandwidth",
2150372358aSIan Rogers        "MetricThreshold": "tma_fetch_bandwidth > 0.1",
216*ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
2170372358aSIan Rogers        "ScaleUnit": "100%"
2180372358aSIan Rogers    },
2190372358aSIan Rogers    {
2200372358aSIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to frontend bandwidth restrictions due to decode, predecode, cisc, and other limitations.",
2210372358aSIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.FRONTEND_LATENCY / tma_info_slots",
2220372358aSIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_frontend_bound_group",
2230372358aSIan Rogers        "MetricName": "tma_fetch_latency",
2240372358aSIan Rogers        "MetricThreshold": "tma_fetch_latency > 0.15",
225*ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
2260372358aSIan Rogers        "ScaleUnit": "100%"
2270372358aSIan Rogers    },
2280372358aSIan Rogers    {
229fa607370SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to the number of nuke slots due to FP assists.",
230fa607370SIan Rogers        "MetricExpr": "tma_nuke * (MACHINE_CLEARS.FP_ASSIST / MACHINE_CLEARS.SLOW)",
231fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_nuke_group",
232fa607370SIan Rogers        "MetricName": "tma_fp_assist",
233fa607370SIan Rogers        "MetricThreshold": "tma_fp_assist > 0.02",
234fa607370SIan Rogers        "ScaleUnit": "100%"
235fa607370SIan Rogers    },
236fa607370SIan Rogers    {
2370372358aSIan Rogers        "BriefDescription": "Counts the number of floating point divide operations per uop.",
238fa607370SIan Rogers        "MetricExpr": "UOPS_RETIRED.FPDIV / tma_info_slots",
239fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_base_group",
2400372358aSIan Rogers        "MetricName": "tma_fpdiv_uops",
2410372358aSIan Rogers        "MetricThreshold": "tma_fpdiv_uops > 0.2",
242fa607370SIan Rogers        "ScaleUnit": "100%"
243fa607370SIan Rogers    },
244fa607370SIan Rogers    {
245fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not consumed by the backend due to frontend stalls.",
246fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.ALL / tma_info_slots",
247fa607370SIan Rogers        "MetricGroup": "TopdownL1;tma_L1_group",
248fa607370SIan Rogers        "MetricName": "tma_frontend_bound",
249fa607370SIan Rogers        "MetricThreshold": "tma_frontend_bound > 0.2",
250*ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL1",
251fa607370SIan Rogers        "ScaleUnit": "100%"
252fa607370SIan Rogers    },
253fa607370SIan Rogers    {
254fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to instruction cache misses.",
255fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.ICACHE / tma_info_slots",
2560372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_latency_group",
2570372358aSIan Rogers        "MetricName": "tma_icache_misses",
2580372358aSIan Rogers        "MetricThreshold": "tma_icache_misses > 0.05",
259fa607370SIan Rogers        "ScaleUnit": "100%"
260fa607370SIan Rogers    },
261fa607370SIan Rogers    {
262fa607370SIan Rogers        "BriefDescription": "Percentage of total non-speculative loads with a address aliasing block",
263fa607370SIan Rogers        "MetricExpr": "100 * LD_BLOCKS.4K_ALIAS / MEM_UOPS_RETIRED.ALL_LOADS",
264fa607370SIan Rogers        "MetricName": "tma_info_address_alias_blocks"
265fa607370SIan Rogers    },
266fa607370SIan Rogers    {
267fa607370SIan Rogers        "BriefDescription": "Ratio of all branches which mispredict",
268fa607370SIan Rogers        "MetricExpr": "BR_MISP_RETIRED.ALL_BRANCHES / BR_INST_RETIRED.ALL_BRANCHES",
269fa607370SIan Rogers        "MetricGroup": " ",
270fa607370SIan Rogers        "MetricName": "tma_info_branch_mispredict_ratio"
271fa607370SIan Rogers    },
272fa607370SIan Rogers    {
273fa607370SIan Rogers        "BriefDescription": "Ratio between Mispredicted branches and unknown branches",
274fa607370SIan Rogers        "MetricExpr": "BR_MISP_RETIRED.ALL_BRANCHES / BACLEARS.ANY",
275fa607370SIan Rogers        "MetricGroup": " ",
276fa607370SIan Rogers        "MetricName": "tma_info_branch_mispredict_to_unknown_branch_ratio"
277fa607370SIan Rogers    },
278fa607370SIan Rogers    {
279fa607370SIan Rogers        "BriefDescription": "",
280fa607370SIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.CORE",
281fa607370SIan Rogers        "MetricGroup": " ",
282fa607370SIan Rogers        "MetricName": "tma_info_clks"
283fa607370SIan Rogers    },
284fa607370SIan Rogers    {
285fa607370SIan Rogers        "BriefDescription": "",
286fa607370SIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.CORE_P",
287fa607370SIan Rogers        "MetricGroup": " ",
288fa607370SIan Rogers        "MetricName": "tma_info_clks_p"
289fa607370SIan Rogers    },
290fa607370SIan Rogers    {
291fa607370SIan Rogers        "BriefDescription": "Cycles Per Instruction",
292fa607370SIan Rogers        "MetricExpr": "tma_info_clks / INST_RETIRED.ANY",
293fa607370SIan Rogers        "MetricGroup": " ",
294fa607370SIan Rogers        "MetricName": "tma_info_cpi"
295fa607370SIan Rogers    },
296fa607370SIan Rogers    {
297fa607370SIan Rogers        "BriefDescription": "Average CPU Utilization",
298fa607370SIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC / TSC",
299fa607370SIan Rogers        "MetricGroup": " ",
300fa607370SIan Rogers        "MetricName": "tma_info_cpu_utilization"
301fa607370SIan Rogers    },
302fa607370SIan Rogers    {
303fa607370SIan Rogers        "BriefDescription": "Cycle cost per DRAM hit",
304fa607370SIan Rogers        "MetricExpr": "MEM_BOUND_STALLS.LOAD_DRAM_HIT / MEM_LOAD_UOPS_RETIRED.DRAM_HIT",
305fa607370SIan Rogers        "MetricGroup": " ",
306fa607370SIan Rogers        "MetricName": "tma_info_cycles_per_demand_load_dram_hit"
307fa607370SIan Rogers    },
308fa607370SIan Rogers    {
309fa607370SIan Rogers        "BriefDescription": "Cycle cost per L2 hit",
310fa607370SIan Rogers        "MetricExpr": "MEM_BOUND_STALLS.LOAD_L2_HIT / MEM_LOAD_UOPS_RETIRED.L2_HIT",
311fa607370SIan Rogers        "MetricGroup": " ",
312fa607370SIan Rogers        "MetricName": "tma_info_cycles_per_demand_load_l2_hit"
313fa607370SIan Rogers    },
314fa607370SIan Rogers    {
315fa607370SIan Rogers        "BriefDescription": "Cycle cost per LLC hit",
316fa607370SIan Rogers        "MetricExpr": "MEM_BOUND_STALLS.LOAD_LLC_HIT / MEM_LOAD_UOPS_RETIRED.L3_HIT",
317fa607370SIan Rogers        "MetricGroup": " ",
318fa607370SIan Rogers        "MetricName": "tma_info_cycles_per_demand_load_l3_hit"
319fa607370SIan Rogers    },
320fa607370SIan Rogers    {
321fa607370SIan Rogers        "BriefDescription": "Percentage of all uops which are FPDiv uops",
322fa607370SIan Rogers        "MetricExpr": "100 * UOPS_RETIRED.FPDIV / UOPS_RETIRED.ALL",
323fa607370SIan Rogers        "MetricGroup": " ",
324fa607370SIan Rogers        "MetricName": "tma_info_fpdiv_uop_ratio"
325fa607370SIan Rogers    },
326fa607370SIan Rogers    {
327fa607370SIan Rogers        "BriefDescription": "Percentage of all uops which are IDiv uops",
328fa607370SIan Rogers        "MetricExpr": "100 * UOPS_RETIRED.IDIV / UOPS_RETIRED.ALL",
329fa607370SIan Rogers        "MetricGroup": " ",
330fa607370SIan Rogers        "MetricName": "tma_info_idiv_uop_ratio"
331fa607370SIan Rogers    },
332fa607370SIan Rogers    {
333fa607370SIan Rogers        "BriefDescription": "Percent of instruction miss cost that hit in DRAM",
334fa607370SIan Rogers        "MetricExpr": "100 * MEM_BOUND_STALLS.IFETCH_DRAM_HIT / MEM_BOUND_STALLS.IFETCH",
335fa607370SIan Rogers        "MetricGroup": " ",
336fa607370SIan Rogers        "MetricName": "tma_info_inst_miss_cost_dramhit_percent"
337fa607370SIan Rogers    },
338fa607370SIan Rogers    {
339fa607370SIan Rogers        "BriefDescription": "Percent of instruction miss cost that hit in the L2",
340fa607370SIan Rogers        "MetricExpr": "100 * MEM_BOUND_STALLS.IFETCH_L2_HIT / MEM_BOUND_STALLS.IFETCH",
341fa607370SIan Rogers        "MetricGroup": " ",
342fa607370SIan Rogers        "MetricName": "tma_info_inst_miss_cost_l2hit_percent"
343fa607370SIan Rogers    },
344fa607370SIan Rogers    {
345fa607370SIan Rogers        "BriefDescription": "Percent of instruction miss cost that hit in the L3",
346fa607370SIan Rogers        "MetricExpr": "100 * MEM_BOUND_STALLS.IFETCH_LLC_HIT / MEM_BOUND_STALLS.IFETCH",
347fa607370SIan Rogers        "MetricGroup": " ",
348fa607370SIan Rogers        "MetricName": "tma_info_inst_miss_cost_l3hit_percent"
349fa607370SIan Rogers    },
350fa607370SIan Rogers    {
351fa607370SIan Rogers        "BriefDescription": "Instructions per Branch (lower number means higher occurance rate)",
352fa607370SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.ALL_BRANCHES",
353fa607370SIan Rogers        "MetricGroup": " ",
354fa607370SIan Rogers        "MetricName": "tma_info_ipbranch"
355fa607370SIan Rogers    },
356fa607370SIan Rogers    {
357fa607370SIan Rogers        "BriefDescription": "Instructions Per Cycle",
358fa607370SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / tma_info_clks",
359fa607370SIan Rogers        "MetricGroup": " ",
360fa607370SIan Rogers        "MetricName": "tma_info_ipc"
361fa607370SIan Rogers    },
362fa607370SIan Rogers    {
363fa607370SIan Rogers        "BriefDescription": "Instruction per (near) call (lower number means higher occurance rate)",
364fa607370SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.CALL",
365fa607370SIan Rogers        "MetricGroup": " ",
366fa607370SIan Rogers        "MetricName": "tma_info_ipcall"
367fa607370SIan Rogers    },
368fa607370SIan Rogers    {
369fa607370SIan Rogers        "BriefDescription": "Instructions per Far Branch",
370fa607370SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / (BR_INST_RETIRED.FAR_BRANCH / 2)",
371fa607370SIan Rogers        "MetricGroup": " ",
372fa607370SIan Rogers        "MetricName": "tma_info_ipfarbranch"
373fa607370SIan Rogers    },
374fa607370SIan Rogers    {
375fa607370SIan Rogers        "BriefDescription": "Instructions per Load",
376fa607370SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / MEM_UOPS_RETIRED.ALL_LOADS",
377fa607370SIan Rogers        "MetricGroup": " ",
378fa607370SIan Rogers        "MetricName": "tma_info_ipload"
379fa607370SIan Rogers    },
380fa607370SIan Rogers    {
3810372358aSIan Rogers        "BriefDescription": "Instructions per retired conditional Branch Misprediction where the branch was not taken",
3820372358aSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / (BR_MISP_RETIRED.COND - BR_MISP_RETIRED.COND_TAKEN)",
3830372358aSIan Rogers        "MetricName": "tma_info_ipmisp_cond_ntaken"
3840372358aSIan Rogers    },
3850372358aSIan Rogers    {
3860372358aSIan Rogers        "BriefDescription": "Instructions per retired conditional Branch Misprediction where the branch was taken",
3870372358aSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.COND_TAKEN",
3880372358aSIan Rogers        "MetricName": "tma_info_ipmisp_cond_taken"
3890372358aSIan Rogers    },
3900372358aSIan Rogers    {
3910372358aSIan Rogers        "BriefDescription": "Instructions per retired indirect call or jump Branch Misprediction",
3920372358aSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.INDIRECT",
3930372358aSIan Rogers        "MetricName": "tma_info_ipmisp_indirect"
3940372358aSIan Rogers    },
3950372358aSIan Rogers    {
3960372358aSIan Rogers        "BriefDescription": "Instructions per retired return Branch Misprediction",
3970372358aSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.RETURN",
3980372358aSIan Rogers        "MetricName": "tma_info_ipmisp_ret"
3990372358aSIan Rogers    },
4000372358aSIan Rogers    {
4010372358aSIan Rogers        "BriefDescription": "Instructions per retired Branch Misprediction",
402fa607370SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.ALL_BRANCHES",
403fa607370SIan Rogers        "MetricGroup": " ",
404fa607370SIan Rogers        "MetricName": "tma_info_ipmispredict"
405fa607370SIan Rogers    },
406fa607370SIan Rogers    {
407fa607370SIan Rogers        "BriefDescription": "Instructions per Store",
408fa607370SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / MEM_UOPS_RETIRED.ALL_STORES",
409fa607370SIan Rogers        "MetricGroup": " ",
410fa607370SIan Rogers        "MetricName": "tma_info_ipstore"
411fa607370SIan Rogers    },
412fa607370SIan Rogers    {
413fa607370SIan Rogers        "BriefDescription": "Fraction of cycles spent in Kernel mode",
414fa607370SIan Rogers        "MetricExpr": "cpu@CPU_CLK_UNHALTED.CORE@k / CPU_CLK_UNHALTED.CORE",
415fa607370SIan Rogers        "MetricGroup": " ",
416fa607370SIan Rogers        "MetricName": "tma_info_kernel_utilization"
417fa607370SIan Rogers    },
418fa607370SIan Rogers    {
419fa607370SIan Rogers        "BriefDescription": "Percentage of total non-speculative loads that are splits",
420fa607370SIan Rogers        "MetricExpr": "100 * MEM_UOPS_RETIRED.SPLIT_LOADS / MEM_UOPS_RETIRED.ALL_LOADS",
421fa607370SIan Rogers        "MetricName": "tma_info_load_splits"
422fa607370SIan Rogers    },
423fa607370SIan Rogers    {
424fa607370SIan Rogers        "BriefDescription": "load ops retired per 1000 instruction",
425fa607370SIan Rogers        "MetricExpr": "1e3 * MEM_UOPS_RETIRED.ALL_LOADS / INST_RETIRED.ANY",
426fa607370SIan Rogers        "MetricGroup": " ",
427fa607370SIan Rogers        "MetricName": "tma_info_memloadpki"
428fa607370SIan Rogers    },
429fa607370SIan Rogers    {
430fa607370SIan Rogers        "BriefDescription": "Percentage of all uops which are ucode ops",
431fa607370SIan Rogers        "MetricExpr": "100 * UOPS_RETIRED.MS / UOPS_RETIRED.ALL",
432fa607370SIan Rogers        "MetricGroup": " ",
433fa607370SIan Rogers        "MetricName": "tma_info_microcode_uop_ratio"
434fa607370SIan Rogers    },
435fa607370SIan Rogers    {
436fa607370SIan Rogers        "BriefDescription": "",
437fa607370SIan Rogers        "MetricExpr": "5 * tma_info_clks",
438fa607370SIan Rogers        "MetricGroup": " ",
439fa607370SIan Rogers        "MetricName": "tma_info_slots"
440fa607370SIan Rogers    },
441fa607370SIan Rogers    {
442fa607370SIan Rogers        "BriefDescription": "Percentage of total non-speculative loads with a store forward or unknown store address block",
443fa607370SIan Rogers        "MetricExpr": "100 * LD_BLOCKS.DATA_UNKNOWN / MEM_UOPS_RETIRED.ALL_LOADS",
444fa607370SIan Rogers        "MetricName": "tma_info_store_fwd_blocks"
445fa607370SIan Rogers    },
446fa607370SIan Rogers    {
447fa607370SIan Rogers        "BriefDescription": "Average Frequency Utilization relative nominal frequency",
448fa607370SIan Rogers        "MetricExpr": "tma_info_clks / CPU_CLK_UNHALTED.REF_TSC",
449fa607370SIan Rogers        "MetricGroup": " ",
450fa607370SIan Rogers        "MetricName": "tma_info_turbo_utilization"
451fa607370SIan Rogers    },
452fa607370SIan Rogers    {
453fa607370SIan Rogers        "BriefDescription": "Uops Per Instruction",
454fa607370SIan Rogers        "MetricExpr": "UOPS_RETIRED.ALL / INST_RETIRED.ANY",
455fa607370SIan Rogers        "MetricGroup": " ",
456fa607370SIan Rogers        "MetricName": "tma_info_upi"
457fa607370SIan Rogers    },
458fa607370SIan Rogers    {
459fa607370SIan Rogers        "BriefDescription": "Percentage of all uops which are x87 uops",
460fa607370SIan Rogers        "MetricExpr": "100 * UOPS_RETIRED.X87 / UOPS_RETIRED.ALL",
461fa607370SIan Rogers        "MetricGroup": " ",
462fa607370SIan Rogers        "MetricName": "tma_info_x87_uop_ratio"
463fa607370SIan Rogers    },
464fa607370SIan Rogers    {
465fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to Instruction Table Lookaside Buffer (ITLB) misses.",
466fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.ITLB / tma_info_slots",
4670372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_latency_group",
4680372358aSIan Rogers        "MetricName": "tma_itlb_misses",
4690372358aSIan Rogers        "MetricThreshold": "tma_itlb_misses > 0.05",
470fa607370SIan Rogers        "ScaleUnit": "100%"
471fa607370SIan Rogers    },
472fa607370SIan Rogers    {
473fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles that the oldest load of the load buffer is stalled at retirement due to a load block.",
474fa607370SIan Rogers        "MetricExpr": "LD_HEAD.L1_BOUND_AT_RET / tma_info_clks",
4750372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_memory_bound_group",
476fa607370SIan Rogers        "MetricName": "tma_l1_bound",
477fa607370SIan Rogers        "MetricThreshold": "tma_l1_bound > 0.1",
478fa607370SIan Rogers        "ScaleUnit": "100%"
479fa607370SIan Rogers    },
480fa607370SIan Rogers    {
481fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles a core is stalled due to a demand load which hit in the L2 Cache.",
482fa607370SIan Rogers        "MetricConstraint": "NO_GROUP_EVENTS",
483fa607370SIan Rogers        "MetricExpr": "MEM_BOUND_STALLS.LOAD_L2_HIT / tma_info_clks - MEM_BOUND_STALLS_AT_RET_CORRECTION * MEM_BOUND_STALLS.LOAD_L2_HIT / MEM_BOUND_STALLS.LOAD",
4840372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_memory_bound_group",
485fa607370SIan Rogers        "MetricName": "tma_l2_bound",
486fa607370SIan Rogers        "MetricThreshold": "tma_l2_bound > 0.1",
487fa607370SIan Rogers        "ScaleUnit": "100%"
488fa607370SIan Rogers    },
489fa607370SIan Rogers    {
490fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles a core is stalled due to a demand load which hit in the Last Level Cache (LLC) or other core with HITE/F/M.",
491fa607370SIan Rogers        "MetricExpr": "MEM_BOUND_STALLS.LOAD_LLC_HIT / tma_info_clks - MEM_BOUND_STALLS_AT_RET_CORRECTION * MEM_BOUND_STALLS.LOAD_LLC_HIT / MEM_BOUND_STALLS.LOAD",
4920372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_memory_bound_group",
493fa607370SIan Rogers        "MetricName": "tma_l3_bound",
494fa607370SIan Rogers        "MetricThreshold": "tma_l3_bound > 0.1",
495fa607370SIan Rogers        "ScaleUnit": "100%"
496fa607370SIan Rogers    },
497fa607370SIan Rogers    {
498fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles, relative to the number of mem_scheduler slots, in which uops are blocked due to load buffer full",
499fa607370SIan Rogers        "MetricExpr": "tma_mem_scheduler * MEM_SCHEDULER_BLOCK.LD_BUF / MEM_SCHEDULER_BLOCK.ALL",
500fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_mem_scheduler_group",
501fa607370SIan Rogers        "MetricName": "tma_ld_buffer",
502fa607370SIan Rogers        "MetricThreshold": "tma_ld_buffer > 0.05",
503fa607370SIan Rogers        "ScaleUnit": "100%"
504fa607370SIan Rogers    },
505fa607370SIan Rogers    {
506fa607370SIan Rogers        "BriefDescription": "Counts the total number of issue slots that were not consumed by the backend because allocation is stalled due to a machine clear (nuke) of any kind including memory ordering and memory disambiguation.",
507fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BAD_SPECULATION.MACHINE_CLEARS / tma_info_slots",
508fa607370SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_bad_speculation_group",
509fa607370SIan Rogers        "MetricName": "tma_machine_clears",
510fa607370SIan Rogers        "MetricThreshold": "tma_machine_clears > 0.05",
511*ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
512fa607370SIan Rogers        "ScaleUnit": "100%"
513fa607370SIan Rogers    },
514fa607370SIan Rogers    {
515fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not consumed by the backend due to memory reservation stalls in which a scheduler is not able to accept uops.",
516fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BE_BOUND.MEM_SCHEDULER / tma_info_slots",
517fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
518fa607370SIan Rogers        "MetricName": "tma_mem_scheduler",
519fa607370SIan Rogers        "MetricThreshold": "tma_mem_scheduler > 0.1",
520fa607370SIan Rogers        "ScaleUnit": "100%"
521fa607370SIan Rogers    },
522fa607370SIan Rogers    {
5230372358aSIan Rogers        "BriefDescription": "Counts the number of cycles the core is stalled due to stores or loads.",
5240372358aSIan Rogers        "MetricExpr": "min(tma_backend_bound, LD_HEAD.ANY_AT_RET / tma_info_clks + tma_store_bound)",
5250372358aSIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_backend_bound_group",
5260372358aSIan Rogers        "MetricName": "tma_memory_bound",
5270372358aSIan Rogers        "MetricThreshold": "tma_memory_bound > 0.2",
528*ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
5290372358aSIan Rogers        "ScaleUnit": "100%"
5300372358aSIan Rogers    },
5310372358aSIan Rogers    {
532fa607370SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to the number of nuke slots due to memory ordering.",
533fa607370SIan Rogers        "MetricExpr": "tma_nuke * (MACHINE_CLEARS.MEMORY_ORDERING / MACHINE_CLEARS.SLOW)",
534fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_nuke_group",
535fa607370SIan Rogers        "MetricName": "tma_memory_ordering",
536fa607370SIan Rogers        "MetricThreshold": "tma_memory_ordering > 0.02",
537fa607370SIan Rogers        "ScaleUnit": "100%"
538fa607370SIan Rogers    },
539fa607370SIan Rogers    {
540fa607370SIan Rogers        "BriefDescription": "Counts the number of uops that are from the complex flows issued by the micro-sequencer (MS)",
541fa607370SIan Rogers        "MetricExpr": "UOPS_RETIRED.MS / tma_info_slots",
542fa607370SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_retiring_group",
543fa607370SIan Rogers        "MetricName": "tma_ms_uops",
544fa607370SIan Rogers        "MetricThreshold": "tma_ms_uops > 0.05",
545*ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
546fa607370SIan Rogers        "PublicDescription": "Counts the number of uops that are from the complex flows issued by the micro-sequencer (MS).  This includes uops from flows due to complex instructions, faults, assists, and inserted flows.",
547fa607370SIan Rogers        "ScaleUnit": "100%"
548fa607370SIan Rogers    },
549fa607370SIan Rogers    {
550fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not consumed by the backend due to IEC or FPC RAT stalls, which can be due to FIQ or IEC reservation stalls in which the integer, floating point or SIMD scheduler is not able to accept uops.",
551fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BE_BOUND.NON_MEM_SCHEDULER / tma_info_slots",
552fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
553fa607370SIan Rogers        "MetricName": "tma_non_mem_scheduler",
554fa607370SIan Rogers        "MetricThreshold": "tma_non_mem_scheduler > 0.1",
555fa607370SIan Rogers        "ScaleUnit": "100%"
556fa607370SIan Rogers    },
557fa607370SIan Rogers    {
558fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not consumed by the backend due to a machine clear (slow nuke).",
559fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BAD_SPECULATION.NUKE / tma_info_slots",
560fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_machine_clears_group",
561fa607370SIan Rogers        "MetricName": "tma_nuke",
562fa607370SIan Rogers        "MetricThreshold": "tma_nuke > 0.05",
563fa607370SIan Rogers        "ScaleUnit": "100%"
564fa607370SIan Rogers    },
565fa607370SIan Rogers    {
566fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to other common frontend stalls not categorized.",
567fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.OTHER / tma_info_slots",
5680372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_bandwidth_group",
569fa607370SIan Rogers        "MetricName": "tma_other_fb",
570fa607370SIan Rogers        "MetricThreshold": "tma_other_fb > 0.05",
571fa607370SIan Rogers        "ScaleUnit": "100%"
572fa607370SIan Rogers    },
573fa607370SIan Rogers    {
574fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles that the oldest load of the load buffer is stalled at retirement due to a number of other load blocks.",
575fa607370SIan Rogers        "MetricExpr": "LD_HEAD.OTHER_AT_RET / tma_info_clks",
576fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_l1_bound_group",
577fa607370SIan Rogers        "MetricName": "tma_other_l1",
578fa607370SIan Rogers        "MetricThreshold": "tma_other_l1 > 0.05",
579fa607370SIan Rogers        "ScaleUnit": "100%"
580fa607370SIan Rogers    },
581fa607370SIan Rogers    {
582fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles the core is stalled due to a demand load miss which hits in the L2, LLC, DRAM or MMIO (Non-DRAM) but could not be correctly attributed or cycles in which the load miss is waiting on a request buffer.",
5830372358aSIan Rogers        "MetricExpr": "max(0, tma_memory_bound - (tma_store_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_dram_bound))",
5840372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_memory_bound_group",
585fa607370SIan Rogers        "MetricName": "tma_other_load_store",
586fa607370SIan Rogers        "MetricThreshold": "tma_other_load_store > 0.1",
587fa607370SIan Rogers        "ScaleUnit": "100%"
588fa607370SIan Rogers    },
589fa607370SIan Rogers    {
590fa607370SIan Rogers        "BriefDescription": "Counts the number of uops retired excluding ms and fp div uops.",
591fa607370SIan Rogers        "MetricExpr": "(TOPDOWN_RETIRING.ALL - UOPS_RETIRED.MS - UOPS_RETIRED.FPDIV) / tma_info_slots",
592fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_base_group",
593fa607370SIan Rogers        "MetricName": "tma_other_ret",
594fa607370SIan Rogers        "MetricThreshold": "tma_other_ret > 0.3",
595fa607370SIan Rogers        "ScaleUnit": "100%"
596fa607370SIan Rogers    },
597fa607370SIan Rogers    {
598fa607370SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to the number of nuke slots due to page faults.",
599fa607370SIan Rogers        "MetricExpr": "tma_nuke * (MACHINE_CLEARS.PAGE_FAULT / MACHINE_CLEARS.SLOW)",
600fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_nuke_group",
601fa607370SIan Rogers        "MetricName": "tma_page_fault",
602fa607370SIan Rogers        "MetricThreshold": "tma_page_fault > 0.02",
603fa607370SIan Rogers        "ScaleUnit": "100%"
604fa607370SIan Rogers    },
605fa607370SIan Rogers    {
606fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to wrong predecodes.",
607fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.PREDECODE / tma_info_slots",
6080372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_bandwidth_group",
609fa607370SIan Rogers        "MetricName": "tma_predecode",
610fa607370SIan Rogers        "MetricThreshold": "tma_predecode > 0.05",
611fa607370SIan Rogers        "ScaleUnit": "100%"
612fa607370SIan Rogers    },
613fa607370SIan Rogers    {
614fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not consumed by the backend due to the physical register file unable to accept an entry (marble stalls).",
615fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BE_BOUND.REGISTER / tma_info_slots",
616fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
617fa607370SIan Rogers        "MetricName": "tma_register",
618fa607370SIan Rogers        "MetricThreshold": "tma_register > 0.1",
619fa607370SIan Rogers        "ScaleUnit": "100%"
620fa607370SIan Rogers    },
621fa607370SIan Rogers    {
622fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not consumed by the backend due to the reorder buffer being full (ROB stalls).",
623fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BE_BOUND.REORDER_BUFFER / tma_info_slots",
624fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
625fa607370SIan Rogers        "MetricName": "tma_reorder_buffer",
626fa607370SIan Rogers        "MetricThreshold": "tma_reorder_buffer > 0.1",
627fa607370SIan Rogers        "ScaleUnit": "100%"
628fa607370SIan Rogers    },
629fa607370SIan Rogers    {
630fa607370SIan Rogers        "BriefDescription": "Counts the total number of issue slots  that were not consumed by the backend due to backend stalls",
631fa607370SIan Rogers        "MetricExpr": "tma_backend_bound",
632fa607370SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_backend_bound_aux_group",
633fa607370SIan Rogers        "MetricName": "tma_resource_bound",
634fa607370SIan Rogers        "MetricThreshold": "tma_resource_bound > 0.2",
635*ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
636fa607370SIan Rogers        "PublicDescription": "Counts the total number of issue slots  that were not consumed by the backend due to backend stalls.  Note that uops must be available for consumption in order for this event to count.  If a uop is not available (IQ is empty), this event will not count.",
637fa607370SIan Rogers        "ScaleUnit": "100%"
638fa607370SIan Rogers    },
639fa607370SIan Rogers    {
640fa607370SIan Rogers        "BriefDescription": "Counts the numer of issue slots  that result in retirement slots.",
641fa607370SIan Rogers        "MetricExpr": "TOPDOWN_RETIRING.ALL / tma_info_slots",
642fa607370SIan Rogers        "MetricGroup": "TopdownL1;tma_L1_group",
643fa607370SIan Rogers        "MetricName": "tma_retiring",
644fa607370SIan Rogers        "MetricThreshold": "tma_retiring > 0.75",
645*ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL1",
646fa607370SIan Rogers        "ScaleUnit": "100%"
647fa607370SIan Rogers    },
648fa607370SIan Rogers    {
649fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles, relative to the number of mem_scheduler slots, in which uops are blocked due to RSV full relative",
650fa607370SIan Rogers        "MetricExpr": "tma_mem_scheduler * MEM_SCHEDULER_BLOCK.RSV / MEM_SCHEDULER_BLOCK.ALL",
651fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_mem_scheduler_group",
652fa607370SIan Rogers        "MetricName": "tma_rsv",
653fa607370SIan Rogers        "MetricThreshold": "tma_rsv > 0.05",
654fa607370SIan Rogers        "ScaleUnit": "100%"
655fa607370SIan Rogers    },
656fa607370SIan Rogers    {
657fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not consumed by the backend due to scoreboards from the instruction queue (IQ), jump execution unit (JEU), or microcode sequencer (MS).",
658fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BE_BOUND.SERIALIZATION / tma_info_slots",
659fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
660fa607370SIan Rogers        "MetricName": "tma_serialization",
661fa607370SIan Rogers        "MetricThreshold": "tma_serialization > 0.1",
662fa607370SIan Rogers        "ScaleUnit": "100%"
663fa607370SIan Rogers    },
664fa607370SIan Rogers    {
665fa607370SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to the number of nuke slots due to SMC.",
666fa607370SIan Rogers        "MetricExpr": "tma_nuke * (MACHINE_CLEARS.SMC / MACHINE_CLEARS.SLOW)",
667fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_nuke_group",
668fa607370SIan Rogers        "MetricName": "tma_smc",
669fa607370SIan Rogers        "MetricThreshold": "tma_smc > 0.02",
670fa607370SIan Rogers        "ScaleUnit": "100%"
671fa607370SIan Rogers    },
672fa607370SIan Rogers    {
673fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles, relative to the number of mem_scheduler slots, in which uops are blocked due to store buffer full",
674fa607370SIan Rogers        "MetricExpr": "tma_store_bound",
675fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_mem_scheduler_group",
676fa607370SIan Rogers        "MetricName": "tma_st_buffer",
677fa607370SIan Rogers        "MetricThreshold": "tma_st_buffer > 0.05",
678fa607370SIan Rogers        "ScaleUnit": "100%"
679fa607370SIan Rogers    },
680fa607370SIan Rogers    {
681fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles that the oldest load of the load buffer is stalled at retirement due to a first level TLB miss.",
682fa607370SIan Rogers        "MetricExpr": "LD_HEAD.DTLB_MISS_AT_RET / tma_info_clks",
683fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_l1_bound_group",
684fa607370SIan Rogers        "MetricName": "tma_stlb_hit",
685fa607370SIan Rogers        "MetricThreshold": "tma_stlb_hit > 0.05",
686fa607370SIan Rogers        "ScaleUnit": "100%"
687fa607370SIan Rogers    },
688fa607370SIan Rogers    {
689fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles that the oldest load of the load buffer is stalled at retirement due to a second level TLB miss requiring a page walk.",
690fa607370SIan Rogers        "MetricExpr": "LD_HEAD.PGWALK_AT_RET / tma_info_clks",
691fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_l1_bound_group",
692fa607370SIan Rogers        "MetricName": "tma_stlb_miss",
693fa607370SIan Rogers        "MetricThreshold": "tma_stlb_miss > 0.05",
694fa607370SIan Rogers        "ScaleUnit": "100%"
695fa607370SIan Rogers    },
696fa607370SIan Rogers    {
697fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles the core is stalled due to store buffer full.",
698fa607370SIan Rogers        "MetricExpr": "tma_mem_scheduler * (MEM_SCHEDULER_BLOCK.ST_BUF / MEM_SCHEDULER_BLOCK.ALL)",
6990372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_memory_bound_group",
700fa607370SIan Rogers        "MetricName": "tma_store_bound",
701fa607370SIan Rogers        "MetricThreshold": "tma_store_bound > 0.1",
702fa607370SIan Rogers        "ScaleUnit": "100%"
703fa607370SIan Rogers    },
704fa607370SIan Rogers    {
705fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles that the oldest load of the load buffer is stalled at retirement due to a store forward block.",
706fa607370SIan Rogers        "MetricExpr": "LD_HEAD.ST_ADDR_AT_RET / tma_info_clks",
707fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_l1_bound_group",
7080372358aSIan Rogers        "MetricName": "tma_store_fwd_blk",
7090372358aSIan Rogers        "MetricThreshold": "tma_store_fwd_blk > 0.05",
7102bb3fbadSZhengjun Xing        "ScaleUnit": "100%"
7112bb3fbadSZhengjun Xing    }
7122bb3fbadSZhengjun Xing]
713