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",
101fa607370SIan 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.",
102fa607370SIan Rogers        "ScaleUnit": "100%"
103fa607370SIan Rogers    },
104fa607370SIan Rogers    {
105fa607370SIan Rogers        "BriefDescription": "Counts the total number of issue slots  that were not consumed by the backend due to backend stalls",
106fa607370SIan Rogers        "MetricExpr": "tma_backend_bound",
107fa607370SIan Rogers        "MetricGroup": "TopdownL1;tma_L1_group",
108fa607370SIan Rogers        "MetricName": "tma_backend_bound_aux",
109fa607370SIan Rogers        "MetricThreshold": "tma_backend_bound_aux > 0.2",
110fa607370SIan 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.",
111fa607370SIan Rogers        "ScaleUnit": "100%"
112fa607370SIan Rogers    },
113fa607370SIan Rogers    {
114fa607370SIan 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",
115fa607370SIan Rogers        "MetricExpr": "(tma_info_slots - (TOPDOWN_FE_BOUND.ALL + TOPDOWN_BE_BOUND.ALL + TOPDOWN_RETIRING.ALL)) / tma_info_slots",
116fa607370SIan Rogers        "MetricGroup": "TopdownL1;tma_L1_group",
117fa607370SIan Rogers        "MetricName": "tma_bad_speculation",
118fa607370SIan Rogers        "MetricThreshold": "tma_bad_speculation > 0.15",
119fa607370SIan 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.",
120fa607370SIan Rogers        "ScaleUnit": "100%"
121fa607370SIan Rogers    },
122fa607370SIan Rogers    {
123fa607370SIan Rogers        "BriefDescription": "Counts the number of uops that are not from the microsequencer.",
124fa607370SIan Rogers        "MetricExpr": "(TOPDOWN_RETIRING.ALL - UOPS_RETIRED.MS) / tma_info_slots",
125fa607370SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_retiring_group",
126fa607370SIan Rogers        "MetricName": "tma_base",
127fa607370SIan Rogers        "MetricThreshold": "tma_base > 0.6",
128fa607370SIan Rogers        "ScaleUnit": "100%"
129fa607370SIan Rogers    },
130fa607370SIan Rogers    {
131fa607370SIan 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",
132fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.BRANCH_DETECT / tma_info_slots",
133*0372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_latency_group",
134fa607370SIan Rogers        "MetricName": "tma_branch_detect",
135fa607370SIan Rogers        "MetricThreshold": "tma_branch_detect > 0.05",
136fa607370SIan 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.",
137fa607370SIan Rogers        "ScaleUnit": "100%"
138fa607370SIan Rogers    },
139fa607370SIan Rogers    {
140fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not consumed by the backend due to branch mispredicts.",
141fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BAD_SPECULATION.MISPREDICT / tma_info_slots",
142fa607370SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_bad_speculation_group",
143fa607370SIan Rogers        "MetricName": "tma_branch_mispredicts",
144fa607370SIan Rogers        "MetricThreshold": "tma_branch_mispredicts > 0.05",
145fa607370SIan Rogers        "ScaleUnit": "100%"
146fa607370SIan Rogers    },
147fa607370SIan Rogers    {
148fa607370SIan 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.",
149fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.BRANCH_RESTEER / tma_info_slots",
150*0372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_latency_group",
151fa607370SIan Rogers        "MetricName": "tma_branch_resteer",
152fa607370SIan Rogers        "MetricThreshold": "tma_branch_resteer > 0.05",
153fa607370SIan Rogers        "ScaleUnit": "100%"
154fa607370SIan Rogers    },
155fa607370SIan Rogers    {
156fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to the microcode sequencer (MS).",
157fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.CISC / tma_info_slots",
158*0372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_bandwidth_group",
159fa607370SIan Rogers        "MetricName": "tma_cisc",
160fa607370SIan Rogers        "MetricThreshold": "tma_cisc > 0.05",
161fa607370SIan Rogers        "ScaleUnit": "100%"
162fa607370SIan Rogers    },
163fa607370SIan Rogers    {
164fa607370SIan 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.",
165*0372358aSIan Rogers        "MetricExpr": "max(0, tma_backend_bound - tma_memory_bound)",
166fa607370SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_backend_bound_group",
167fa607370SIan Rogers        "MetricName": "tma_core_bound",
168fa607370SIan Rogers        "MetricThreshold": "tma_core_bound > 0.1",
169fa607370SIan Rogers        "ScaleUnit": "100%"
170fa607370SIan Rogers    },
171fa607370SIan Rogers    {
172fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to decode stalls.",
173fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.DECODE / tma_info_slots",
174*0372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_bandwidth_group",
175fa607370SIan Rogers        "MetricName": "tma_decode",
176fa607370SIan Rogers        "MetricThreshold": "tma_decode > 0.05",
177fa607370SIan Rogers        "ScaleUnit": "100%"
178fa607370SIan Rogers    },
179fa607370SIan Rogers    {
180fa607370SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to the number of nuke slots due to memory disambiguation.",
181fa607370SIan Rogers        "MetricExpr": "tma_nuke * (MACHINE_CLEARS.DISAMBIGUATION / MACHINE_CLEARS.SLOW)",
182fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_nuke_group",
183fa607370SIan Rogers        "MetricName": "tma_disambiguation",
184fa607370SIan Rogers        "MetricThreshold": "tma_disambiguation > 0.02",
185fa607370SIan Rogers        "ScaleUnit": "100%"
186fa607370SIan Rogers    },
187fa607370SIan Rogers    {
188fa607370SIan 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).",
189fa607370SIan Rogers        "MetricConstraint": "NO_GROUP_EVENTS",
190fa607370SIan 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",
191*0372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_memory_bound_group",
192fa607370SIan Rogers        "MetricName": "tma_dram_bound",
193fa607370SIan Rogers        "MetricThreshold": "tma_dram_bound > 0.1",
194fa607370SIan Rogers        "ScaleUnit": "100%"
195fa607370SIan Rogers    },
196fa607370SIan Rogers    {
197fa607370SIan 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.",
198fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BAD_SPECULATION.FASTNUKE / tma_info_slots",
199fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_machine_clears_group",
200fa607370SIan Rogers        "MetricName": "tma_fast_nuke",
201fa607370SIan Rogers        "MetricThreshold": "tma_fast_nuke > 0.05",
202fa607370SIan Rogers        "ScaleUnit": "100%"
203fa607370SIan Rogers    },
204fa607370SIan Rogers    {
205*0372358aSIan 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.",
206*0372358aSIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.FRONTEND_BANDWIDTH / tma_info_slots",
207*0372358aSIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_frontend_bound_group",
208*0372358aSIan Rogers        "MetricName": "tma_fetch_bandwidth",
209*0372358aSIan Rogers        "MetricThreshold": "tma_fetch_bandwidth > 0.1",
210*0372358aSIan Rogers        "ScaleUnit": "100%"
211*0372358aSIan Rogers    },
212*0372358aSIan Rogers    {
213*0372358aSIan 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.",
214*0372358aSIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.FRONTEND_LATENCY / tma_info_slots",
215*0372358aSIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_frontend_bound_group",
216*0372358aSIan Rogers        "MetricName": "tma_fetch_latency",
217*0372358aSIan Rogers        "MetricThreshold": "tma_fetch_latency > 0.15",
218*0372358aSIan Rogers        "ScaleUnit": "100%"
219*0372358aSIan Rogers    },
220*0372358aSIan Rogers    {
221fa607370SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to the number of nuke slots due to FP assists.",
222fa607370SIan Rogers        "MetricExpr": "tma_nuke * (MACHINE_CLEARS.FP_ASSIST / MACHINE_CLEARS.SLOW)",
223fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_nuke_group",
224fa607370SIan Rogers        "MetricName": "tma_fp_assist",
225fa607370SIan Rogers        "MetricThreshold": "tma_fp_assist > 0.02",
226fa607370SIan Rogers        "ScaleUnit": "100%"
227fa607370SIan Rogers    },
228fa607370SIan Rogers    {
229*0372358aSIan Rogers        "BriefDescription": "Counts the number of floating point divide operations per uop.",
230fa607370SIan Rogers        "MetricExpr": "UOPS_RETIRED.FPDIV / tma_info_slots",
231fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_base_group",
232*0372358aSIan Rogers        "MetricName": "tma_fpdiv_uops",
233*0372358aSIan Rogers        "MetricThreshold": "tma_fpdiv_uops > 0.2",
234fa607370SIan Rogers        "ScaleUnit": "100%"
235fa607370SIan Rogers    },
236fa607370SIan Rogers    {
237fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not consumed by the backend due to frontend stalls.",
238fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.ALL / tma_info_slots",
239fa607370SIan Rogers        "MetricGroup": "TopdownL1;tma_L1_group",
240fa607370SIan Rogers        "MetricName": "tma_frontend_bound",
241fa607370SIan Rogers        "MetricThreshold": "tma_frontend_bound > 0.2",
242fa607370SIan Rogers        "ScaleUnit": "100%"
243fa607370SIan Rogers    },
244fa607370SIan Rogers    {
245fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to instruction cache misses.",
246fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.ICACHE / tma_info_slots",
247*0372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_latency_group",
248*0372358aSIan Rogers        "MetricName": "tma_icache_misses",
249*0372358aSIan Rogers        "MetricThreshold": "tma_icache_misses > 0.05",
250fa607370SIan Rogers        "ScaleUnit": "100%"
251fa607370SIan Rogers    },
252fa607370SIan Rogers    {
253fa607370SIan Rogers        "BriefDescription": "Percentage of total non-speculative loads with a address aliasing block",
254fa607370SIan Rogers        "MetricExpr": "100 * LD_BLOCKS.4K_ALIAS / MEM_UOPS_RETIRED.ALL_LOADS",
255fa607370SIan Rogers        "MetricName": "tma_info_address_alias_blocks"
256fa607370SIan Rogers    },
257fa607370SIan Rogers    {
258fa607370SIan Rogers        "BriefDescription": "Ratio of all branches which mispredict",
259fa607370SIan Rogers        "MetricExpr": "BR_MISP_RETIRED.ALL_BRANCHES / BR_INST_RETIRED.ALL_BRANCHES",
260fa607370SIan Rogers        "MetricGroup": " ",
261fa607370SIan Rogers        "MetricName": "tma_info_branch_mispredict_ratio"
262fa607370SIan Rogers    },
263fa607370SIan Rogers    {
264fa607370SIan Rogers        "BriefDescription": "Ratio between Mispredicted branches and unknown branches",
265fa607370SIan Rogers        "MetricExpr": "BR_MISP_RETIRED.ALL_BRANCHES / BACLEARS.ANY",
266fa607370SIan Rogers        "MetricGroup": " ",
267fa607370SIan Rogers        "MetricName": "tma_info_branch_mispredict_to_unknown_branch_ratio"
268fa607370SIan Rogers    },
269fa607370SIan Rogers    {
270fa607370SIan Rogers        "BriefDescription": "",
271fa607370SIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.CORE",
272fa607370SIan Rogers        "MetricGroup": " ",
273fa607370SIan Rogers        "MetricName": "tma_info_clks"
274fa607370SIan Rogers    },
275fa607370SIan Rogers    {
276fa607370SIan Rogers        "BriefDescription": "",
277fa607370SIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.CORE_P",
278fa607370SIan Rogers        "MetricGroup": " ",
279fa607370SIan Rogers        "MetricName": "tma_info_clks_p"
280fa607370SIan Rogers    },
281fa607370SIan Rogers    {
282fa607370SIan Rogers        "BriefDescription": "Cycles Per Instruction",
283fa607370SIan Rogers        "MetricExpr": "tma_info_clks / INST_RETIRED.ANY",
284fa607370SIan Rogers        "MetricGroup": " ",
285fa607370SIan Rogers        "MetricName": "tma_info_cpi"
286fa607370SIan Rogers    },
287fa607370SIan Rogers    {
288fa607370SIan Rogers        "BriefDescription": "Average CPU Utilization",
289fa607370SIan Rogers        "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC / TSC",
290fa607370SIan Rogers        "MetricGroup": " ",
291fa607370SIan Rogers        "MetricName": "tma_info_cpu_utilization"
292fa607370SIan Rogers    },
293fa607370SIan Rogers    {
294fa607370SIan Rogers        "BriefDescription": "Cycle cost per DRAM hit",
295fa607370SIan Rogers        "MetricExpr": "MEM_BOUND_STALLS.LOAD_DRAM_HIT / MEM_LOAD_UOPS_RETIRED.DRAM_HIT",
296fa607370SIan Rogers        "MetricGroup": " ",
297fa607370SIan Rogers        "MetricName": "tma_info_cycles_per_demand_load_dram_hit"
298fa607370SIan Rogers    },
299fa607370SIan Rogers    {
300fa607370SIan Rogers        "BriefDescription": "Cycle cost per L2 hit",
301fa607370SIan Rogers        "MetricExpr": "MEM_BOUND_STALLS.LOAD_L2_HIT / MEM_LOAD_UOPS_RETIRED.L2_HIT",
302fa607370SIan Rogers        "MetricGroup": " ",
303fa607370SIan Rogers        "MetricName": "tma_info_cycles_per_demand_load_l2_hit"
304fa607370SIan Rogers    },
305fa607370SIan Rogers    {
306fa607370SIan Rogers        "BriefDescription": "Cycle cost per LLC hit",
307fa607370SIan Rogers        "MetricExpr": "MEM_BOUND_STALLS.LOAD_LLC_HIT / MEM_LOAD_UOPS_RETIRED.L3_HIT",
308fa607370SIan Rogers        "MetricGroup": " ",
309fa607370SIan Rogers        "MetricName": "tma_info_cycles_per_demand_load_l3_hit"
310fa607370SIan Rogers    },
311fa607370SIan Rogers    {
312fa607370SIan Rogers        "BriefDescription": "Percentage of all uops which are FPDiv uops",
313fa607370SIan Rogers        "MetricExpr": "100 * UOPS_RETIRED.FPDIV / UOPS_RETIRED.ALL",
314fa607370SIan Rogers        "MetricGroup": " ",
315fa607370SIan Rogers        "MetricName": "tma_info_fpdiv_uop_ratio"
316fa607370SIan Rogers    },
317fa607370SIan Rogers    {
318fa607370SIan Rogers        "BriefDescription": "Percentage of all uops which are IDiv uops",
319fa607370SIan Rogers        "MetricExpr": "100 * UOPS_RETIRED.IDIV / UOPS_RETIRED.ALL",
320fa607370SIan Rogers        "MetricGroup": " ",
321fa607370SIan Rogers        "MetricName": "tma_info_idiv_uop_ratio"
322fa607370SIan Rogers    },
323fa607370SIan Rogers    {
324fa607370SIan Rogers        "BriefDescription": "Percent of instruction miss cost that hit in DRAM",
325fa607370SIan Rogers        "MetricExpr": "100 * MEM_BOUND_STALLS.IFETCH_DRAM_HIT / MEM_BOUND_STALLS.IFETCH",
326fa607370SIan Rogers        "MetricGroup": " ",
327fa607370SIan Rogers        "MetricName": "tma_info_inst_miss_cost_dramhit_percent"
328fa607370SIan Rogers    },
329fa607370SIan Rogers    {
330fa607370SIan Rogers        "BriefDescription": "Percent of instruction miss cost that hit in the L2",
331fa607370SIan Rogers        "MetricExpr": "100 * MEM_BOUND_STALLS.IFETCH_L2_HIT / MEM_BOUND_STALLS.IFETCH",
332fa607370SIan Rogers        "MetricGroup": " ",
333fa607370SIan Rogers        "MetricName": "tma_info_inst_miss_cost_l2hit_percent"
334fa607370SIan Rogers    },
335fa607370SIan Rogers    {
336fa607370SIan Rogers        "BriefDescription": "Percent of instruction miss cost that hit in the L3",
337fa607370SIan Rogers        "MetricExpr": "100 * MEM_BOUND_STALLS.IFETCH_LLC_HIT / MEM_BOUND_STALLS.IFETCH",
338fa607370SIan Rogers        "MetricGroup": " ",
339fa607370SIan Rogers        "MetricName": "tma_info_inst_miss_cost_l3hit_percent"
340fa607370SIan Rogers    },
341fa607370SIan Rogers    {
342fa607370SIan Rogers        "BriefDescription": "Instructions per Branch (lower number means higher occurance rate)",
343fa607370SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.ALL_BRANCHES",
344fa607370SIan Rogers        "MetricGroup": " ",
345fa607370SIan Rogers        "MetricName": "tma_info_ipbranch"
346fa607370SIan Rogers    },
347fa607370SIan Rogers    {
348fa607370SIan Rogers        "BriefDescription": "Instructions Per Cycle",
349fa607370SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / tma_info_clks",
350fa607370SIan Rogers        "MetricGroup": " ",
351fa607370SIan Rogers        "MetricName": "tma_info_ipc"
352fa607370SIan Rogers    },
353fa607370SIan Rogers    {
354fa607370SIan Rogers        "BriefDescription": "Instruction per (near) call (lower number means higher occurance rate)",
355fa607370SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.CALL",
356fa607370SIan Rogers        "MetricGroup": " ",
357fa607370SIan Rogers        "MetricName": "tma_info_ipcall"
358fa607370SIan Rogers    },
359fa607370SIan Rogers    {
360fa607370SIan Rogers        "BriefDescription": "Instructions per Far Branch",
361fa607370SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / (BR_INST_RETIRED.FAR_BRANCH / 2)",
362fa607370SIan Rogers        "MetricGroup": " ",
363fa607370SIan Rogers        "MetricName": "tma_info_ipfarbranch"
364fa607370SIan Rogers    },
365fa607370SIan Rogers    {
366fa607370SIan Rogers        "BriefDescription": "Instructions per Load",
367fa607370SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / MEM_UOPS_RETIRED.ALL_LOADS",
368fa607370SIan Rogers        "MetricGroup": " ",
369fa607370SIan Rogers        "MetricName": "tma_info_ipload"
370fa607370SIan Rogers    },
371fa607370SIan Rogers    {
372*0372358aSIan Rogers        "BriefDescription": "Instructions per retired conditional Branch Misprediction where the branch was not taken",
373*0372358aSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / (BR_MISP_RETIRED.COND - BR_MISP_RETIRED.COND_TAKEN)",
374*0372358aSIan Rogers        "MetricName": "tma_info_ipmisp_cond_ntaken"
375*0372358aSIan Rogers    },
376*0372358aSIan Rogers    {
377*0372358aSIan Rogers        "BriefDescription": "Instructions per retired conditional Branch Misprediction where the branch was taken",
378*0372358aSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.COND_TAKEN",
379*0372358aSIan Rogers        "MetricName": "tma_info_ipmisp_cond_taken"
380*0372358aSIan Rogers    },
381*0372358aSIan Rogers    {
382*0372358aSIan Rogers        "BriefDescription": "Instructions per retired indirect call or jump Branch Misprediction",
383*0372358aSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.INDIRECT",
384*0372358aSIan Rogers        "MetricName": "tma_info_ipmisp_indirect"
385*0372358aSIan Rogers    },
386*0372358aSIan Rogers    {
387*0372358aSIan Rogers        "BriefDescription": "Instructions per retired return Branch Misprediction",
388*0372358aSIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.RETURN",
389*0372358aSIan Rogers        "MetricName": "tma_info_ipmisp_ret"
390*0372358aSIan Rogers    },
391*0372358aSIan Rogers    {
392*0372358aSIan Rogers        "BriefDescription": "Instructions per retired Branch Misprediction",
393fa607370SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.ALL_BRANCHES",
394fa607370SIan Rogers        "MetricGroup": " ",
395fa607370SIan Rogers        "MetricName": "tma_info_ipmispredict"
396fa607370SIan Rogers    },
397fa607370SIan Rogers    {
398fa607370SIan Rogers        "BriefDescription": "Instructions per Store",
399fa607370SIan Rogers        "MetricExpr": "INST_RETIRED.ANY / MEM_UOPS_RETIRED.ALL_STORES",
400fa607370SIan Rogers        "MetricGroup": " ",
401fa607370SIan Rogers        "MetricName": "tma_info_ipstore"
402fa607370SIan Rogers    },
403fa607370SIan Rogers    {
404fa607370SIan Rogers        "BriefDescription": "Fraction of cycles spent in Kernel mode",
405fa607370SIan Rogers        "MetricExpr": "cpu@CPU_CLK_UNHALTED.CORE@k / CPU_CLK_UNHALTED.CORE",
406fa607370SIan Rogers        "MetricGroup": " ",
407fa607370SIan Rogers        "MetricName": "tma_info_kernel_utilization"
408fa607370SIan Rogers    },
409fa607370SIan Rogers    {
410fa607370SIan Rogers        "BriefDescription": "Percentage of total non-speculative loads that are splits",
411fa607370SIan Rogers        "MetricExpr": "100 * MEM_UOPS_RETIRED.SPLIT_LOADS / MEM_UOPS_RETIRED.ALL_LOADS",
412fa607370SIan Rogers        "MetricName": "tma_info_load_splits"
413fa607370SIan Rogers    },
414fa607370SIan Rogers    {
415fa607370SIan Rogers        "BriefDescription": "load ops retired per 1000 instruction",
416fa607370SIan Rogers        "MetricExpr": "1e3 * MEM_UOPS_RETIRED.ALL_LOADS / INST_RETIRED.ANY",
417fa607370SIan Rogers        "MetricGroup": " ",
418fa607370SIan Rogers        "MetricName": "tma_info_memloadpki"
419fa607370SIan Rogers    },
420fa607370SIan Rogers    {
421fa607370SIan Rogers        "BriefDescription": "Percentage of all uops which are ucode ops",
422fa607370SIan Rogers        "MetricExpr": "100 * UOPS_RETIRED.MS / UOPS_RETIRED.ALL",
423fa607370SIan Rogers        "MetricGroup": " ",
424fa607370SIan Rogers        "MetricName": "tma_info_microcode_uop_ratio"
425fa607370SIan Rogers    },
426fa607370SIan Rogers    {
427fa607370SIan Rogers        "BriefDescription": "",
428fa607370SIan Rogers        "MetricExpr": "5 * tma_info_clks",
429fa607370SIan Rogers        "MetricGroup": " ",
430fa607370SIan Rogers        "MetricName": "tma_info_slots"
431fa607370SIan Rogers    },
432fa607370SIan Rogers    {
433fa607370SIan Rogers        "BriefDescription": "Percentage of total non-speculative loads with a store forward or unknown store address block",
434fa607370SIan Rogers        "MetricExpr": "100 * LD_BLOCKS.DATA_UNKNOWN / MEM_UOPS_RETIRED.ALL_LOADS",
435fa607370SIan Rogers        "MetricName": "tma_info_store_fwd_blocks"
436fa607370SIan Rogers    },
437fa607370SIan Rogers    {
438fa607370SIan Rogers        "BriefDescription": "Average Frequency Utilization relative nominal frequency",
439fa607370SIan Rogers        "MetricExpr": "tma_info_clks / CPU_CLK_UNHALTED.REF_TSC",
440fa607370SIan Rogers        "MetricGroup": " ",
441fa607370SIan Rogers        "MetricName": "tma_info_turbo_utilization"
442fa607370SIan Rogers    },
443fa607370SIan Rogers    {
444fa607370SIan Rogers        "BriefDescription": "Uops Per Instruction",
445fa607370SIan Rogers        "MetricExpr": "UOPS_RETIRED.ALL / INST_RETIRED.ANY",
446fa607370SIan Rogers        "MetricGroup": " ",
447fa607370SIan Rogers        "MetricName": "tma_info_upi"
448fa607370SIan Rogers    },
449fa607370SIan Rogers    {
450fa607370SIan Rogers        "BriefDescription": "Percentage of all uops which are x87 uops",
451fa607370SIan Rogers        "MetricExpr": "100 * UOPS_RETIRED.X87 / UOPS_RETIRED.ALL",
452fa607370SIan Rogers        "MetricGroup": " ",
453fa607370SIan Rogers        "MetricName": "tma_info_x87_uop_ratio"
454fa607370SIan Rogers    },
455fa607370SIan Rogers    {
456fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to Instruction Table Lookaside Buffer (ITLB) misses.",
457fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.ITLB / tma_info_slots",
458*0372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_latency_group",
459*0372358aSIan Rogers        "MetricName": "tma_itlb_misses",
460*0372358aSIan Rogers        "MetricThreshold": "tma_itlb_misses > 0.05",
461fa607370SIan Rogers        "ScaleUnit": "100%"
462fa607370SIan Rogers    },
463fa607370SIan Rogers    {
464fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles that the oldest load of the load buffer is stalled at retirement due to a load block.",
465fa607370SIan Rogers        "MetricExpr": "LD_HEAD.L1_BOUND_AT_RET / tma_info_clks",
466*0372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_memory_bound_group",
467fa607370SIan Rogers        "MetricName": "tma_l1_bound",
468fa607370SIan Rogers        "MetricThreshold": "tma_l1_bound > 0.1",
469fa607370SIan Rogers        "ScaleUnit": "100%"
470fa607370SIan Rogers    },
471fa607370SIan Rogers    {
472fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles a core is stalled due to a demand load which hit in the L2 Cache.",
473fa607370SIan Rogers        "MetricConstraint": "NO_GROUP_EVENTS",
474fa607370SIan 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",
475*0372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_memory_bound_group",
476fa607370SIan Rogers        "MetricName": "tma_l2_bound",
477fa607370SIan Rogers        "MetricThreshold": "tma_l2_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 Last Level Cache (LLC) or other core with HITE/F/M.",
482fa607370SIan 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",
483*0372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_memory_bound_group",
484fa607370SIan Rogers        "MetricName": "tma_l3_bound",
485fa607370SIan Rogers        "MetricThreshold": "tma_l3_bound > 0.1",
486fa607370SIan Rogers        "ScaleUnit": "100%"
487fa607370SIan Rogers    },
488fa607370SIan Rogers    {
489fa607370SIan 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",
490fa607370SIan Rogers        "MetricExpr": "tma_mem_scheduler * MEM_SCHEDULER_BLOCK.LD_BUF / MEM_SCHEDULER_BLOCK.ALL",
491fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_mem_scheduler_group",
492fa607370SIan Rogers        "MetricName": "tma_ld_buffer",
493fa607370SIan Rogers        "MetricThreshold": "tma_ld_buffer > 0.05",
494fa607370SIan Rogers        "ScaleUnit": "100%"
495fa607370SIan Rogers    },
496fa607370SIan Rogers    {
497fa607370SIan 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.",
498fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BAD_SPECULATION.MACHINE_CLEARS / tma_info_slots",
499fa607370SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_bad_speculation_group",
500fa607370SIan Rogers        "MetricName": "tma_machine_clears",
501fa607370SIan Rogers        "MetricThreshold": "tma_machine_clears > 0.05",
502fa607370SIan Rogers        "ScaleUnit": "100%"
503fa607370SIan Rogers    },
504fa607370SIan Rogers    {
505fa607370SIan 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.",
506fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BE_BOUND.MEM_SCHEDULER / tma_info_slots",
507fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
508fa607370SIan Rogers        "MetricName": "tma_mem_scheduler",
509fa607370SIan Rogers        "MetricThreshold": "tma_mem_scheduler > 0.1",
510fa607370SIan Rogers        "ScaleUnit": "100%"
511fa607370SIan Rogers    },
512fa607370SIan Rogers    {
513*0372358aSIan Rogers        "BriefDescription": "Counts the number of cycles the core is stalled due to stores or loads.",
514*0372358aSIan Rogers        "MetricExpr": "min(tma_backend_bound, LD_HEAD.ANY_AT_RET / tma_info_clks + tma_store_bound)",
515*0372358aSIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_backend_bound_group",
516*0372358aSIan Rogers        "MetricName": "tma_memory_bound",
517*0372358aSIan Rogers        "MetricThreshold": "tma_memory_bound > 0.2",
518*0372358aSIan Rogers        "ScaleUnit": "100%"
519*0372358aSIan Rogers    },
520*0372358aSIan Rogers    {
521fa607370SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to the number of nuke slots due to memory ordering.",
522fa607370SIan Rogers        "MetricExpr": "tma_nuke * (MACHINE_CLEARS.MEMORY_ORDERING / MACHINE_CLEARS.SLOW)",
523fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_nuke_group",
524fa607370SIan Rogers        "MetricName": "tma_memory_ordering",
525fa607370SIan Rogers        "MetricThreshold": "tma_memory_ordering > 0.02",
526fa607370SIan Rogers        "ScaleUnit": "100%"
527fa607370SIan Rogers    },
528fa607370SIan Rogers    {
529fa607370SIan Rogers        "BriefDescription": "Counts the number of uops that are from the complex flows issued by the micro-sequencer (MS)",
530fa607370SIan Rogers        "MetricExpr": "UOPS_RETIRED.MS / tma_info_slots",
531fa607370SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_retiring_group",
532fa607370SIan Rogers        "MetricName": "tma_ms_uops",
533fa607370SIan Rogers        "MetricThreshold": "tma_ms_uops > 0.05",
534fa607370SIan 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.",
535fa607370SIan Rogers        "ScaleUnit": "100%"
536fa607370SIan Rogers    },
537fa607370SIan Rogers    {
538fa607370SIan 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.",
539fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BE_BOUND.NON_MEM_SCHEDULER / tma_info_slots",
540fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
541fa607370SIan Rogers        "MetricName": "tma_non_mem_scheduler",
542fa607370SIan Rogers        "MetricThreshold": "tma_non_mem_scheduler > 0.1",
543fa607370SIan Rogers        "ScaleUnit": "100%"
544fa607370SIan Rogers    },
545fa607370SIan Rogers    {
546fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not consumed by the backend due to a machine clear (slow nuke).",
547fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BAD_SPECULATION.NUKE / tma_info_slots",
548fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_machine_clears_group",
549fa607370SIan Rogers        "MetricName": "tma_nuke",
550fa607370SIan Rogers        "MetricThreshold": "tma_nuke > 0.05",
551fa607370SIan Rogers        "ScaleUnit": "100%"
552fa607370SIan Rogers    },
553fa607370SIan Rogers    {
554fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to other common frontend stalls not categorized.",
555fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.OTHER / tma_info_slots",
556*0372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_bandwidth_group",
557fa607370SIan Rogers        "MetricName": "tma_other_fb",
558fa607370SIan Rogers        "MetricThreshold": "tma_other_fb > 0.05",
559fa607370SIan Rogers        "ScaleUnit": "100%"
560fa607370SIan Rogers    },
561fa607370SIan Rogers    {
562fa607370SIan 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.",
563fa607370SIan Rogers        "MetricExpr": "LD_HEAD.OTHER_AT_RET / tma_info_clks",
564fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_l1_bound_group",
565fa607370SIan Rogers        "MetricName": "tma_other_l1",
566fa607370SIan Rogers        "MetricThreshold": "tma_other_l1 > 0.05",
567fa607370SIan Rogers        "ScaleUnit": "100%"
568fa607370SIan Rogers    },
569fa607370SIan Rogers    {
570fa607370SIan 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.",
571*0372358aSIan Rogers        "MetricExpr": "max(0, tma_memory_bound - (tma_store_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_dram_bound))",
572*0372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_memory_bound_group",
573fa607370SIan Rogers        "MetricName": "tma_other_load_store",
574fa607370SIan Rogers        "MetricThreshold": "tma_other_load_store > 0.1",
575fa607370SIan Rogers        "ScaleUnit": "100%"
576fa607370SIan Rogers    },
577fa607370SIan Rogers    {
578fa607370SIan Rogers        "BriefDescription": "Counts the number of uops retired excluding ms and fp div uops.",
579fa607370SIan Rogers        "MetricExpr": "(TOPDOWN_RETIRING.ALL - UOPS_RETIRED.MS - UOPS_RETIRED.FPDIV) / tma_info_slots",
580fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_base_group",
581fa607370SIan Rogers        "MetricName": "tma_other_ret",
582fa607370SIan Rogers        "MetricThreshold": "tma_other_ret > 0.3",
583fa607370SIan Rogers        "ScaleUnit": "100%"
584fa607370SIan Rogers    },
585fa607370SIan Rogers    {
586fa607370SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to the number of nuke slots due to page faults.",
587fa607370SIan Rogers        "MetricExpr": "tma_nuke * (MACHINE_CLEARS.PAGE_FAULT / MACHINE_CLEARS.SLOW)",
588fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_nuke_group",
589fa607370SIan Rogers        "MetricName": "tma_page_fault",
590fa607370SIan Rogers        "MetricThreshold": "tma_page_fault > 0.02",
591fa607370SIan Rogers        "ScaleUnit": "100%"
592fa607370SIan Rogers    },
593fa607370SIan Rogers    {
594fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not delivered by the frontend due to wrong predecodes.",
595fa607370SIan Rogers        "MetricExpr": "TOPDOWN_FE_BOUND.PREDECODE / tma_info_slots",
596*0372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_fetch_bandwidth_group",
597fa607370SIan Rogers        "MetricName": "tma_predecode",
598fa607370SIan Rogers        "MetricThreshold": "tma_predecode > 0.05",
599fa607370SIan Rogers        "ScaleUnit": "100%"
600fa607370SIan Rogers    },
601fa607370SIan Rogers    {
602fa607370SIan 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).",
603fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BE_BOUND.REGISTER / tma_info_slots",
604fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
605fa607370SIan Rogers        "MetricName": "tma_register",
606fa607370SIan Rogers        "MetricThreshold": "tma_register > 0.1",
607fa607370SIan Rogers        "ScaleUnit": "100%"
608fa607370SIan Rogers    },
609fa607370SIan Rogers    {
610fa607370SIan Rogers        "BriefDescription": "Counts the number of issue slots  that were not consumed by the backend due to the reorder buffer being full (ROB stalls).",
611fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BE_BOUND.REORDER_BUFFER / tma_info_slots",
612fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
613fa607370SIan Rogers        "MetricName": "tma_reorder_buffer",
614fa607370SIan Rogers        "MetricThreshold": "tma_reorder_buffer > 0.1",
615fa607370SIan Rogers        "ScaleUnit": "100%"
616fa607370SIan Rogers    },
617fa607370SIan Rogers    {
618fa607370SIan Rogers        "BriefDescription": "Counts the total number of issue slots  that were not consumed by the backend due to backend stalls",
619fa607370SIan Rogers        "MetricExpr": "tma_backend_bound",
620fa607370SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_backend_bound_aux_group",
621fa607370SIan Rogers        "MetricName": "tma_resource_bound",
622fa607370SIan Rogers        "MetricThreshold": "tma_resource_bound > 0.2",
623fa607370SIan 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.",
624fa607370SIan Rogers        "ScaleUnit": "100%"
625fa607370SIan Rogers    },
626fa607370SIan Rogers    {
627fa607370SIan Rogers        "BriefDescription": "Counts the numer of issue slots  that result in retirement slots.",
628fa607370SIan Rogers        "MetricExpr": "TOPDOWN_RETIRING.ALL / tma_info_slots",
629fa607370SIan Rogers        "MetricGroup": "TopdownL1;tma_L1_group",
630fa607370SIan Rogers        "MetricName": "tma_retiring",
631fa607370SIan Rogers        "MetricThreshold": "tma_retiring > 0.75",
632fa607370SIan Rogers        "ScaleUnit": "100%"
633fa607370SIan Rogers    },
634fa607370SIan Rogers    {
635fa607370SIan 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",
636fa607370SIan Rogers        "MetricExpr": "tma_mem_scheduler * MEM_SCHEDULER_BLOCK.RSV / MEM_SCHEDULER_BLOCK.ALL",
637fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_mem_scheduler_group",
638fa607370SIan Rogers        "MetricName": "tma_rsv",
639fa607370SIan Rogers        "MetricThreshold": "tma_rsv > 0.05",
640fa607370SIan Rogers        "ScaleUnit": "100%"
641fa607370SIan Rogers    },
642fa607370SIan Rogers    {
643fa607370SIan 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).",
644fa607370SIan Rogers        "MetricExpr": "TOPDOWN_BE_BOUND.SERIALIZATION / tma_info_slots",
645fa607370SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
646fa607370SIan Rogers        "MetricName": "tma_serialization",
647fa607370SIan Rogers        "MetricThreshold": "tma_serialization > 0.1",
648fa607370SIan Rogers        "ScaleUnit": "100%"
649fa607370SIan Rogers    },
650fa607370SIan Rogers    {
651fa607370SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to the number of nuke slots due to SMC.",
652fa607370SIan Rogers        "MetricExpr": "tma_nuke * (MACHINE_CLEARS.SMC / MACHINE_CLEARS.SLOW)",
653fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_nuke_group",
654fa607370SIan Rogers        "MetricName": "tma_smc",
655fa607370SIan Rogers        "MetricThreshold": "tma_smc > 0.02",
656fa607370SIan Rogers        "ScaleUnit": "100%"
657fa607370SIan Rogers    },
658fa607370SIan Rogers    {
659fa607370SIan 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",
660fa607370SIan Rogers        "MetricExpr": "tma_store_bound",
661fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_mem_scheduler_group",
662fa607370SIan Rogers        "MetricName": "tma_st_buffer",
663fa607370SIan Rogers        "MetricThreshold": "tma_st_buffer > 0.05",
664fa607370SIan Rogers        "ScaleUnit": "100%"
665fa607370SIan Rogers    },
666fa607370SIan Rogers    {
667fa607370SIan 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.",
668fa607370SIan Rogers        "MetricExpr": "LD_HEAD.DTLB_MISS_AT_RET / tma_info_clks",
669fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_l1_bound_group",
670fa607370SIan Rogers        "MetricName": "tma_stlb_hit",
671fa607370SIan Rogers        "MetricThreshold": "tma_stlb_hit > 0.05",
672fa607370SIan Rogers        "ScaleUnit": "100%"
673fa607370SIan Rogers    },
674fa607370SIan Rogers    {
675fa607370SIan 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.",
676fa607370SIan Rogers        "MetricExpr": "LD_HEAD.PGWALK_AT_RET / tma_info_clks",
677fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_l1_bound_group",
678fa607370SIan Rogers        "MetricName": "tma_stlb_miss",
679fa607370SIan Rogers        "MetricThreshold": "tma_stlb_miss > 0.05",
680fa607370SIan Rogers        "ScaleUnit": "100%"
681fa607370SIan Rogers    },
682fa607370SIan Rogers    {
683fa607370SIan Rogers        "BriefDescription": "Counts the number of cycles the core is stalled due to store buffer full.",
684fa607370SIan Rogers        "MetricExpr": "tma_mem_scheduler * (MEM_SCHEDULER_BLOCK.ST_BUF / MEM_SCHEDULER_BLOCK.ALL)",
685*0372358aSIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_memory_bound_group",
686fa607370SIan Rogers        "MetricName": "tma_store_bound",
687fa607370SIan Rogers        "MetricThreshold": "tma_store_bound > 0.1",
688fa607370SIan Rogers        "ScaleUnit": "100%"
689fa607370SIan Rogers    },
690fa607370SIan Rogers    {
691fa607370SIan 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.",
692fa607370SIan Rogers        "MetricExpr": "LD_HEAD.ST_ADDR_AT_RET / tma_info_clks",
693fa607370SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_l1_bound_group",
694*0372358aSIan Rogers        "MetricName": "tma_store_fwd_blk",
695*0372358aSIan Rogers        "MetricThreshold": "tma_store_fwd_blk > 0.05",
6962bb3fbadSZhengjun Xing        "ScaleUnit": "100%"
6972bb3fbadSZhengjun Xing    }
6982bb3fbadSZhengjun Xing]
699