xref: /linux/tools/perf/pmu-events/arch/x86/alderlake/adl-metrics.json (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
117408e59SZhengjun Xing[
217408e59SZhengjun Xing    {
3ad10c920SIan Rogers        "BriefDescription": "C10 residency percent per package",
4ad10c920SIan Rogers        "MetricExpr": "cstate_pkg@c10\\-residency@ / TSC",
517408e59SZhengjun Xing        "MetricGroup": "Power",
6ad10c920SIan Rogers        "MetricName": "C10_Pkg_Residency",
7ad10c920SIan Rogers        "ScaleUnit": "100%"
817408e59SZhengjun Xing    },
917408e59SZhengjun Xing    {
1017408e59SZhengjun Xing        "BriefDescription": "C1 residency percent per core",
114c12f41aSZhengjun Xing        "MetricExpr": "cstate_core@c1\\-residency@ / TSC",
1217408e59SZhengjun Xing        "MetricGroup": "Power",
134c12f41aSZhengjun Xing        "MetricName": "C1_Core_Residency",
144c12f41aSZhengjun Xing        "ScaleUnit": "100%"
1517408e59SZhengjun Xing    },
1617408e59SZhengjun Xing    {
1717408e59SZhengjun Xing        "BriefDescription": "C2 residency percent per package",
184c12f41aSZhengjun Xing        "MetricExpr": "cstate_pkg@c2\\-residency@ / TSC",
1917408e59SZhengjun Xing        "MetricGroup": "Power",
204c12f41aSZhengjun Xing        "MetricName": "C2_Pkg_Residency",
214c12f41aSZhengjun Xing        "ScaleUnit": "100%"
2217408e59SZhengjun Xing    },
2317408e59SZhengjun Xing    {
2417408e59SZhengjun Xing        "BriefDescription": "C3 residency percent per package",
254c12f41aSZhengjun Xing        "MetricExpr": "cstate_pkg@c3\\-residency@ / TSC",
2617408e59SZhengjun Xing        "MetricGroup": "Power",
274c12f41aSZhengjun Xing        "MetricName": "C3_Pkg_Residency",
284c12f41aSZhengjun Xing        "ScaleUnit": "100%"
2917408e59SZhengjun Xing    },
3017408e59SZhengjun Xing    {
31ad10c920SIan Rogers        "BriefDescription": "C6 residency percent per core",
32ad10c920SIan Rogers        "MetricExpr": "cstate_core@c6\\-residency@ / TSC",
33ad10c920SIan Rogers        "MetricGroup": "Power",
34ad10c920SIan Rogers        "MetricName": "C6_Core_Residency",
35ad10c920SIan Rogers        "ScaleUnit": "100%"
36ad10c920SIan Rogers    },
37ad10c920SIan Rogers    {
3817408e59SZhengjun Xing        "BriefDescription": "C6 residency percent per package",
394c12f41aSZhengjun Xing        "MetricExpr": "cstate_pkg@c6\\-residency@ / TSC",
4017408e59SZhengjun Xing        "MetricGroup": "Power",
414c12f41aSZhengjun Xing        "MetricName": "C6_Pkg_Residency",
424c12f41aSZhengjun Xing        "ScaleUnit": "100%"
4317408e59SZhengjun Xing    },
4417408e59SZhengjun Xing    {
45ad10c920SIan Rogers        "BriefDescription": "C7 residency percent per core",
46ad10c920SIan Rogers        "MetricExpr": "cstate_core@c7\\-residency@ / TSC",
47ad10c920SIan Rogers        "MetricGroup": "Power",
48ad10c920SIan Rogers        "MetricName": "C7_Core_Residency",
49ad10c920SIan Rogers        "ScaleUnit": "100%"
50ad10c920SIan Rogers    },
51ad10c920SIan Rogers    {
5217408e59SZhengjun Xing        "BriefDescription": "C7 residency percent per package",
534c12f41aSZhengjun Xing        "MetricExpr": "cstate_pkg@c7\\-residency@ / TSC",
5417408e59SZhengjun Xing        "MetricGroup": "Power",
554c12f41aSZhengjun Xing        "MetricName": "C7_Pkg_Residency",
564c12f41aSZhengjun Xing        "ScaleUnit": "100%"
5717408e59SZhengjun Xing    },
5817408e59SZhengjun Xing    {
5917408e59SZhengjun Xing        "BriefDescription": "C8 residency percent per package",
604c12f41aSZhengjun Xing        "MetricExpr": "cstate_pkg@c8\\-residency@ / TSC",
6117408e59SZhengjun Xing        "MetricGroup": "Power",
624c12f41aSZhengjun Xing        "MetricName": "C8_Pkg_Residency",
634c12f41aSZhengjun Xing        "ScaleUnit": "100%"
6417408e59SZhengjun Xing    },
6517408e59SZhengjun Xing    {
6617408e59SZhengjun Xing        "BriefDescription": "C9 residency percent per package",
674c12f41aSZhengjun Xing        "MetricExpr": "cstate_pkg@c9\\-residency@ / TSC",
6817408e59SZhengjun Xing        "MetricGroup": "Power",
694c12f41aSZhengjun Xing        "MetricName": "C9_Pkg_Residency",
704c12f41aSZhengjun Xing        "ScaleUnit": "100%"
7117408e59SZhengjun Xing    },
7217408e59SZhengjun Xing    {
73ad10c920SIan Rogers        "BriefDescription": "Percentage of cycles spent in System Management Interrupts.",
74ad10c920SIan Rogers        "MetricExpr": "((msr@aperf@ - cycles) / msr@aperf@ if msr@smi@ > 0 else 0)",
75ad10c920SIan Rogers        "MetricGroup": "smi",
76ad10c920SIan Rogers        "MetricName": "smi_cycles",
77ad10c920SIan Rogers        "MetricThreshold": "smi_cycles > 0.1",
784c12f41aSZhengjun Xing        "ScaleUnit": "100%"
79ad10c920SIan Rogers    },
80ad10c920SIan Rogers    {
81ad10c920SIan Rogers        "BriefDescription": "Number of SMI interrupts.",
82ad10c920SIan Rogers        "MetricExpr": "msr@smi@",
83ad10c920SIan Rogers        "MetricGroup": "smi",
84ad10c920SIan Rogers        "MetricName": "smi_num",
85ad10c920SIan Rogers        "ScaleUnit": "1SMI#"
86ad10c920SIan Rogers    },
87ad10c920SIan Rogers    {
88ad10c920SIan Rogers        "BriefDescription": "Percentage of cycles in aborted transactions.",
898076dc8cSIan Rogers        "MetricExpr": "(max(cycles\\-t - cycles\\-ct, 0) / cycles if has_event(cycles\\-t) else 0)",
90ad10c920SIan Rogers        "MetricGroup": "transaction",
91ad10c920SIan Rogers        "MetricName": "tsx_aborted_cycles",
92ad10c920SIan Rogers        "ScaleUnit": "100%"
93ad10c920SIan Rogers    },
94ad10c920SIan Rogers    {
95ad10c920SIan Rogers        "BriefDescription": "Number of cycles within a transaction divided by the number of elisions.",
96a28a0f67SIan Rogers        "MetricExpr": "(cycles\\-t / el\\-start if has_event(el\\-start) else 0)",
97ad10c920SIan Rogers        "MetricGroup": "transaction",
98ad10c920SIan Rogers        "MetricName": "tsx_cycles_per_elision",
99ad10c920SIan Rogers        "ScaleUnit": "1cycles / elision"
100ad10c920SIan Rogers    },
101ad10c920SIan Rogers    {
102ad10c920SIan Rogers        "BriefDescription": "Number of cycles within a transaction divided by the number of transactions.",
1038076dc8cSIan Rogers        "MetricExpr": "(cycles\\-t / tx\\-start if has_event(cycles\\-t) else 0)",
104ad10c920SIan Rogers        "MetricGroup": "transaction",
105ad10c920SIan Rogers        "MetricName": "tsx_cycles_per_transaction",
106ad10c920SIan Rogers        "ScaleUnit": "1cycles / transaction"
107ad10c920SIan Rogers    },
108ad10c920SIan Rogers    {
109ad10c920SIan Rogers        "BriefDescription": "Percentage of cycles within a transaction region.",
1108076dc8cSIan Rogers        "MetricExpr": "(cycles\\-t / cycles if has_event(cycles\\-t) else 0)",
111ad10c920SIan Rogers        "MetricGroup": "transaction",
112ad10c920SIan Rogers        "MetricName": "tsx_transactional_cycles",
113ad10c920SIan Rogers        "ScaleUnit": "100%"
114ad10c920SIan Rogers    },
115ad10c920SIan Rogers    {
116*17d4b192SIan Rogers        "BriefDescription": "Counts the number of issue slots that were not consumed by the backend due to certain allocation restrictions",
117*17d4b192SIan Rogers        "MetricExpr": "tma_core_bound",
118*17d4b192SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_core_bound_group",
119*17d4b192SIan Rogers        "MetricName": "tma_allocation_restriction",
120*17d4b192SIan Rogers        "MetricThreshold": "tma_allocation_restriction > 0.1 & (tma_core_bound > 0.1 & tma_backend_bound > 0.1)",
121ad10c920SIan Rogers        "ScaleUnit": "100%",
122ad10c920SIan Rogers        "Unit": "cpu_atom"
123ad10c920SIan Rogers    },
124ad10c920SIan Rogers    {
125ad10c920SIan Rogers        "BriefDescription": "Counts the total number of issue slots that were not consumed by the backend due to backend stalls",
126969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL1",
127*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_BE_BOUND.ALL@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
128969a4661SKan Liang        "MetricGroup": "Default;TopdownL1;tma_L1_group",
129ad10c920SIan Rogers        "MetricName": "tma_backend_bound",
130ad10c920SIan Rogers        "MetricThreshold": "tma_backend_bound > 0.1",
131969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL1;Default",
132*17d4b192SIan 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",
133ad10c920SIan Rogers        "ScaleUnit": "100%",
134ad10c920SIan Rogers        "Unit": "cpu_atom"
135ad10c920SIan Rogers    },
136ad10c920SIan Rogers    {
137ad10c920SIan 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",
138969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL1",
139*17d4b192SIan Rogers        "MetricExpr": "(5 * cpu_atom@CPU_CLK_UNHALTED.CORE@ - (cpu_atom@TOPDOWN_FE_BOUND.ALL@ + cpu_atom@TOPDOWN_BE_BOUND.ALL@ + cpu_atom@TOPDOWN_RETIRING.ALL@)) / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
140969a4661SKan Liang        "MetricGroup": "Default;TopdownL1;tma_L1_group",
141ad10c920SIan Rogers        "MetricName": "tma_bad_speculation",
142ad10c920SIan Rogers        "MetricThreshold": "tma_bad_speculation > 0.15",
143969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL1;Default",
144ad10c920SIan 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.",
145ad10c920SIan Rogers        "ScaleUnit": "100%",
146ad10c920SIan Rogers        "Unit": "cpu_atom"
147ad10c920SIan Rogers    },
148ad10c920SIan Rogers    {
149ad10c920SIan 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",
150*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_FE_BOUND.BRANCH_DETECT@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
151*17d4b192SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_ifetch_latency_group",
152ad10c920SIan Rogers        "MetricName": "tma_branch_detect",
153*17d4b192SIan Rogers        "MetricThreshold": "tma_branch_detect > 0.05 & (tma_ifetch_latency > 0.15 & tma_frontend_bound > 0.2)",
154ad10c920SIan 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.",
155ad10c920SIan Rogers        "ScaleUnit": "100%",
156ad10c920SIan Rogers        "Unit": "cpu_atom"
157ad10c920SIan Rogers    },
158ad10c920SIan Rogers    {
159*17d4b192SIan Rogers        "BriefDescription": "Counts the number of issue slots that were not consumed by the backend due to branch mispredicts",
160*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_BAD_SPECULATION.MISPREDICT@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
161ad10c920SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_bad_speculation_group",
162ad10c920SIan Rogers        "MetricName": "tma_branch_mispredicts",
163*17d4b192SIan Rogers        "MetricThreshold": "tma_branch_mispredicts > 0.05 & tma_bad_speculation > 0.15",
164ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
165ad10c920SIan Rogers        "ScaleUnit": "100%",
166ad10c920SIan Rogers        "Unit": "cpu_atom"
167ad10c920SIan Rogers    },
168ad10c920SIan Rogers    {
169ad10c920SIan 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.",
170*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_FE_BOUND.BRANCH_RESTEER@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
171*17d4b192SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_ifetch_latency_group",
172ad10c920SIan Rogers        "MetricName": "tma_branch_resteer",
173*17d4b192SIan Rogers        "MetricThreshold": "tma_branch_resteer > 0.05 & (tma_ifetch_latency > 0.15 & tma_frontend_bound > 0.2)",
174ad10c920SIan Rogers        "ScaleUnit": "100%",
175ad10c920SIan Rogers        "Unit": "cpu_atom"
176ad10c920SIan Rogers    },
177ad10c920SIan Rogers    {
178ad10c920SIan Rogers        "BriefDescription": "Counts the number of issue slots that were not delivered by the frontend due to the microcode sequencer (MS).",
179*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_FE_BOUND.CISC@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
180*17d4b192SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_ifetch_bandwidth_group",
181ad10c920SIan Rogers        "MetricName": "tma_cisc",
182*17d4b192SIan Rogers        "MetricThreshold": "tma_cisc > 0.05 & (tma_ifetch_bandwidth > 0.1 & tma_frontend_bound > 0.2)",
183ad10c920SIan Rogers        "ScaleUnit": "100%",
184ad10c920SIan Rogers        "Unit": "cpu_atom"
185ad10c920SIan Rogers    },
186ad10c920SIan Rogers    {
187*17d4b192SIan Rogers        "BriefDescription": "Counts the number of cycles due to backend bound stalls that are bounded by core restrictions and not attributed to an outstanding load or stores, or resource limitation",
188*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_BE_BOUND.ALLOC_RESTRICTIONS@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
189ad10c920SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_backend_bound_group",
190ad10c920SIan Rogers        "MetricName": "tma_core_bound",
191*17d4b192SIan Rogers        "MetricThreshold": "tma_core_bound > 0.1 & tma_backend_bound > 0.1",
192ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
193ad10c920SIan Rogers        "ScaleUnit": "100%",
194ad10c920SIan Rogers        "Unit": "cpu_atom"
195ad10c920SIan Rogers    },
196ad10c920SIan Rogers    {
197ad10c920SIan Rogers        "BriefDescription": "Counts the number of issue slots that were not delivered by the frontend due to decode stalls.",
198*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_FE_BOUND.DECODE@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
199*17d4b192SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_ifetch_bandwidth_group",
200ad10c920SIan Rogers        "MetricName": "tma_decode",
201*17d4b192SIan Rogers        "MetricThreshold": "tma_decode > 0.05 & (tma_ifetch_bandwidth > 0.1 & tma_frontend_bound > 0.2)",
202ad10c920SIan Rogers        "ScaleUnit": "100%",
203ad10c920SIan Rogers        "Unit": "cpu_atom"
204ad10c920SIan Rogers    },
205ad10c920SIan Rogers    {
206*17d4b192SIan Rogers        "BriefDescription": "Counts the number of issue slots that were not consumed by the backend due to a machine clear that does not require the use of microcode, classified as a fast nuke, due to memory ordering, memory disambiguation and memory renaming",
207*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_BAD_SPECULATION.FASTNUKE@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
208ad10c920SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_machine_clears_group",
209ad10c920SIan Rogers        "MetricName": "tma_fast_nuke",
210*17d4b192SIan Rogers        "MetricThreshold": "tma_fast_nuke > 0.05 & (tma_machine_clears > 0.05 & tma_bad_speculation > 0.15)",
211ad10c920SIan Rogers        "ScaleUnit": "100%",
212ad10c920SIan Rogers        "Unit": "cpu_atom"
213ad10c920SIan Rogers    },
214ad10c920SIan Rogers    {
215ad10c920SIan Rogers        "BriefDescription": "Counts the number of issue slots that were not consumed by the backend due to frontend stalls.",
216969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL1",
217*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_FE_BOUND.ALL@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
218969a4661SKan Liang        "MetricGroup": "Default;TopdownL1;tma_L1_group",
219ad10c920SIan Rogers        "MetricName": "tma_frontend_bound",
220ad10c920SIan Rogers        "MetricThreshold": "tma_frontend_bound > 0.2",
221969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL1;Default",
222ad10c920SIan Rogers        "ScaleUnit": "100%",
223ad10c920SIan Rogers        "Unit": "cpu_atom"
224ad10c920SIan Rogers    },
225ad10c920SIan Rogers    {
226ad10c920SIan Rogers        "BriefDescription": "Counts the number of issue slots that were not delivered by the frontend due to instruction cache misses.",
227*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_FE_BOUND.ICACHE@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
228*17d4b192SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_ifetch_latency_group",
2290372358aSIan Rogers        "MetricName": "tma_icache_misses",
230*17d4b192SIan Rogers        "MetricThreshold": "tma_icache_misses > 0.05 & (tma_ifetch_latency > 0.15 & tma_frontend_bound > 0.2)",
231ad10c920SIan Rogers        "ScaleUnit": "100%",
232ad10c920SIan Rogers        "Unit": "cpu_atom"
233ad10c920SIan Rogers    },
234ad10c920SIan Rogers    {
235*17d4b192SIan 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.",
236*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_FE_BOUND.FRONTEND_BANDWIDTH@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
237*17d4b192SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_frontend_bound_group",
238*17d4b192SIan Rogers        "MetricName": "tma_ifetch_bandwidth",
239*17d4b192SIan Rogers        "MetricThreshold": "tma_ifetch_bandwidth > 0.1 & tma_frontend_bound > 0.2",
240*17d4b192SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
241*17d4b192SIan Rogers        "ScaleUnit": "100%",
242ad10c920SIan Rogers        "Unit": "cpu_atom"
243ad10c920SIan Rogers    },
244ad10c920SIan Rogers    {
245*17d4b192SIan Rogers        "BriefDescription": "Counts the number of issue slots that were not delivered by the frontend due to frontend latency restrictions due to icache misses, itlb misses, branch detection, and resteer limitations.",
246*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_FE_BOUND.FRONTEND_LATENCY@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
247*17d4b192SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_frontend_bound_group",
248*17d4b192SIan Rogers        "MetricName": "tma_ifetch_latency",
249*17d4b192SIan Rogers        "MetricThreshold": "tma_ifetch_latency > 0.15 & tma_frontend_bound > 0.2",
250*17d4b192SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
251*17d4b192SIan Rogers        "ScaleUnit": "100%",
252ad10c920SIan Rogers        "Unit": "cpu_atom"
253ad10c920SIan Rogers    },
254ad10c920SIan Rogers    {
255*17d4b192SIan Rogers        "BriefDescription": "Percentage of time that retirement is stalled due to a first level data TLB miss",
256*17d4b192SIan Rogers        "MetricExpr": "100 * (cpu_atom@LD_HEAD.DTLB_MISS_AT_RET@ + cpu_atom@LD_HEAD.PGWALK_AT_RET@) / cpu_atom@CPU_CLK_UNHALTED.CORE@",
257*17d4b192SIan Rogers        "MetricName": "tma_info_bottleneck_%_dtlb_miss_bound_cycles",
258ad10c920SIan Rogers        "Unit": "cpu_atom"
259ad10c920SIan Rogers    },
260ad10c920SIan Rogers    {
261*17d4b192SIan Rogers        "BriefDescription": "Percentage of time that allocation and retirement is stalled by the Frontend Cluster due to an Ifetch Miss, either Icache or ITLB Miss",
262*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@MEM_BOUND_STALLS.IFETCH@ / cpu_atom@CPU_CLK_UNHALTED.CORE@",
263*17d4b192SIan Rogers        "MetricGroup": "Ifetch",
264*17d4b192SIan Rogers        "MetricName": "tma_info_bottleneck_%_ifetch_miss_bound_cycles",
265*17d4b192SIan Rogers        "PublicDescription": "Percentage of time that allocation and retirement is stalled by the Frontend Cluster due to an Ifetch Miss, either Icache or ITLB Miss. See Info.Ifetch_Bound",
266ad10c920SIan Rogers        "Unit": "cpu_atom"
267ad10c920SIan Rogers    },
268ad10c920SIan Rogers    {
269*17d4b192SIan Rogers        "BriefDescription": "Percentage of time that retirement is stalled due to an L1 miss",
270*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@MEM_BOUND_STALLS.LOAD@ / cpu_atom@CPU_CLK_UNHALTED.CORE@",
271*17d4b192SIan Rogers        "MetricGroup": "Load_Store_Miss",
272*17d4b192SIan Rogers        "MetricName": "tma_info_bottleneck_%_load_miss_bound_cycles",
273*17d4b192SIan Rogers        "PublicDescription": "Percentage of time that retirement is stalled due to an L1 miss. See Info.Load_Miss_Bound",
274ad10c920SIan Rogers        "Unit": "cpu_atom"
275ad10c920SIan Rogers    },
276ad10c920SIan Rogers    {
277*17d4b192SIan Rogers        "BriefDescription": "Percentage of time that retirement is stalled by the Memory Cluster due to a pipeline stall",
278*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@LD_HEAD.ANY_AT_RET@ / cpu_atom@CPU_CLK_UNHALTED.CORE@",
279*17d4b192SIan Rogers        "MetricGroup": "Mem_Exec",
280*17d4b192SIan Rogers        "MetricName": "tma_info_bottleneck_%_mem_exec_bound_cycles",
281*17d4b192SIan Rogers        "PublicDescription": "Percentage of time that retirement is stalled by the Memory Cluster due to a pipeline stall. See Info.Mem_Exec_Bound",
282c04fcf7cSIan Rogers        "Unit": "cpu_atom"
283c04fcf7cSIan Rogers    },
284c04fcf7cSIan Rogers    {
285b333067fSIan Rogers        "BriefDescription": "Instructions per Branch (lower number means higher occurrence rate)",
286*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@INST_RETIRED.ANY@ / cpu_atom@BR_INST_RETIRED.ALL_BRANCHES@",
287*17d4b192SIan Rogers        "MetricName": "tma_info_br_inst_mix_ipbranch",
288c04fcf7cSIan Rogers        "Unit": "cpu_atom"
289c04fcf7cSIan Rogers    },
290c04fcf7cSIan Rogers    {
291b333067fSIan Rogers        "BriefDescription": "Instruction per (near) call (lower number means higher occurrence rate)",
292*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@INST_RETIRED.ANY@ / cpu_atom@BR_INST_RETIRED.CALL@",
293*17d4b192SIan Rogers        "MetricName": "tma_info_br_inst_mix_ipcall",
294c04fcf7cSIan Rogers        "Unit": "cpu_atom"
295c04fcf7cSIan Rogers    },
296c04fcf7cSIan Rogers    {
297*17d4b192SIan Rogers        "BriefDescription": "Instructions per Far Branch ( Far Branches apply upon transition from application to operating system, handling interrupts, exceptions) [lower number means higher occurrence rate]",
298*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@INST_RETIRED.ANY@ / cpu_atom@BR_INST_RETIRED.FAR_BRANCH@u",
299*17d4b192SIan Rogers        "MetricName": "tma_info_br_inst_mix_ipfarbranch",
300c04fcf7cSIan Rogers        "Unit": "cpu_atom"
301c04fcf7cSIan Rogers    },
302c04fcf7cSIan Rogers    {
303c04fcf7cSIan Rogers        "BriefDescription": "Instructions per retired conditional Branch Misprediction where the branch was not taken",
304becc24e9SIan Rogers        "MetricExpr": "cpu_atom@INST_RETIRED.ANY@ / (cpu_atom@BR_MISP_RETIRED.COND@ - cpu_atom@BR_MISP_RETIRED.COND_TAKEN@)",
305*17d4b192SIan Rogers        "MetricName": "tma_info_br_inst_mix_ipmisp_cond_ntaken",
306c04fcf7cSIan Rogers        "Unit": "cpu_atom"
307c04fcf7cSIan Rogers    },
308c04fcf7cSIan Rogers    {
309c04fcf7cSIan Rogers        "BriefDescription": "Instructions per retired conditional Branch Misprediction where the branch was taken",
310*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@INST_RETIRED.ANY@ / cpu_atom@BR_MISP_RETIRED.COND_TAKEN@",
311*17d4b192SIan Rogers        "MetricName": "tma_info_br_inst_mix_ipmisp_cond_taken",
312c04fcf7cSIan Rogers        "Unit": "cpu_atom"
313c04fcf7cSIan Rogers    },
314c04fcf7cSIan Rogers    {
315c04fcf7cSIan Rogers        "BriefDescription": "Instructions per retired indirect call or jump Branch Misprediction",
316*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@INST_RETIRED.ANY@ / cpu_atom@BR_MISP_RETIRED.INDIRECT@",
317*17d4b192SIan Rogers        "MetricName": "tma_info_br_inst_mix_ipmisp_indirect",
318c04fcf7cSIan Rogers        "Unit": "cpu_atom"
319c04fcf7cSIan Rogers    },
320c04fcf7cSIan Rogers    {
321c04fcf7cSIan Rogers        "BriefDescription": "Instructions per retired return Branch Misprediction",
322*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@INST_RETIRED.ANY@ / cpu_atom@BR_MISP_RETIRED.RETURN@",
323*17d4b192SIan Rogers        "MetricName": "tma_info_br_inst_mix_ipmisp_ret",
324c04fcf7cSIan Rogers        "Unit": "cpu_atom"
325c04fcf7cSIan Rogers    },
326c04fcf7cSIan Rogers    {
327c04fcf7cSIan Rogers        "BriefDescription": "Instructions per retired Branch Misprediction",
328*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@INST_RETIRED.ANY@ / cpu_atom@BR_MISP_RETIRED.ALL_BRANCHES@",
329*17d4b192SIan Rogers        "MetricName": "tma_info_br_inst_mix_ipmispredict",
330c04fcf7cSIan Rogers        "Unit": "cpu_atom"
331c04fcf7cSIan Rogers    },
332c04fcf7cSIan Rogers    {
333*17d4b192SIan Rogers        "BriefDescription": "Ratio of all branches which mispredict",
334*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@BR_MISP_RETIRED.ALL_BRANCHES@ / cpu_atom@BR_INST_RETIRED.ALL_BRANCHES@",
335*17d4b192SIan Rogers        "MetricName": "tma_info_br_mispredict_bound_branch_mispredict_ratio",
336c04fcf7cSIan Rogers        "Unit": "cpu_atom"
337c04fcf7cSIan Rogers    },
338c04fcf7cSIan Rogers    {
339*17d4b192SIan Rogers        "BriefDescription": "Ratio between Mispredicted branches and unknown branches",
340*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@BR_MISP_RETIRED.ALL_BRANCHES@ / cpu_atom@BACLEARS.ANY@",
341*17d4b192SIan Rogers        "MetricName": "tma_info_br_mispredict_bound_branch_mispredict_to_unknown_branch_ratio",
342ad10c920SIan Rogers        "Unit": "cpu_atom"
343ad10c920SIan Rogers    },
344ad10c920SIan Rogers    {
345*17d4b192SIan Rogers        "BriefDescription": "Percentage of time that allocation is stalled due to load buffer full",
346*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@MEM_SCHEDULER_BLOCK.LD_BUF@ / cpu_atom@CPU_CLK_UNHALTED.CORE@",
347*17d4b192SIan Rogers        "MetricName": "tma_info_buffer_stalls_%_load_buffer_stall_cycles",
348c04fcf7cSIan Rogers        "Unit": "cpu_atom"
349c04fcf7cSIan Rogers    },
350c04fcf7cSIan Rogers    {
351*17d4b192SIan Rogers        "BriefDescription": "Percentage of time that allocation is stalled due to memory reservation stations full",
352*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@MEM_SCHEDULER_BLOCK.RSV@ / cpu_atom@CPU_CLK_UNHALTED.CORE@",
353*17d4b192SIan Rogers        "MetricName": "tma_info_buffer_stalls_%_mem_rsv_stall_cycles",
354c04fcf7cSIan Rogers        "Unit": "cpu_atom"
355c04fcf7cSIan Rogers    },
356c04fcf7cSIan Rogers    {
357*17d4b192SIan Rogers        "BriefDescription": "Percentage of time that allocation is stalled due to store buffer full",
358*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@MEM_SCHEDULER_BLOCK.ST_BUF@ / cpu_atom@CPU_CLK_UNHALTED.CORE@",
359*17d4b192SIan Rogers        "MetricName": "tma_info_buffer_stalls_%_store_buffer_stall_cycles",
360*17d4b192SIan Rogers        "Unit": "cpu_atom"
361*17d4b192SIan Rogers    },
362*17d4b192SIan Rogers    {
363*17d4b192SIan Rogers        "BriefDescription": "Cycles Per Instruction",
364*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@CPU_CLK_UNHALTED.CORE@ / cpu_atom@INST_RETIRED.ANY@",
365*17d4b192SIan Rogers        "MetricName": "tma_info_core_cpi",
366*17d4b192SIan Rogers        "Unit": "cpu_atom"
367*17d4b192SIan Rogers    },
368*17d4b192SIan Rogers    {
369*17d4b192SIan Rogers        "BriefDescription": "Instructions Per Cycle",
370*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@INST_RETIRED.ANY@ / cpu_atom@CPU_CLK_UNHALTED.CORE@",
371*17d4b192SIan Rogers        "MetricName": "tma_info_core_ipc",
372*17d4b192SIan Rogers        "Unit": "cpu_atom"
373*17d4b192SIan Rogers    },
374*17d4b192SIan Rogers    {
375*17d4b192SIan Rogers        "BriefDescription": "Uops Per Instruction",
376*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@UOPS_RETIRED.ALL@ / cpu_atom@INST_RETIRED.ANY@",
377*17d4b192SIan Rogers        "MetricName": "tma_info_core_upi",
378*17d4b192SIan Rogers        "Unit": "cpu_atom"
379*17d4b192SIan Rogers    },
380*17d4b192SIan Rogers    {
381*17d4b192SIan Rogers        "BriefDescription": "Percentage of ifetch miss bound stalls, where the ifetch miss hits in the L2",
382*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@MEM_BOUND_STALLS.IFETCH_L2_HIT@ / cpu_atom@MEM_BOUND_STALLS.IFETCH@",
383*17d4b192SIan Rogers        "MetricName": "tma_info_ifetch_miss_bound_%_ifetchmissbound_with_l2hit",
384*17d4b192SIan Rogers        "Unit": "cpu_atom"
385*17d4b192SIan Rogers    },
386*17d4b192SIan Rogers    {
387*17d4b192SIan Rogers        "BriefDescription": "Percentage of ifetch miss bound stalls, where the ifetch miss hits in the L3",
388*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@MEM_BOUND_STALLS.IFETCH_LLC_HIT@ / cpu_atom@MEM_BOUND_STALLS.IFETCH@",
389*17d4b192SIan Rogers        "MetricName": "tma_info_ifetch_miss_bound_%_ifetchmissbound_with_l3hit",
390*17d4b192SIan Rogers        "Unit": "cpu_atom"
391*17d4b192SIan Rogers    },
392*17d4b192SIan Rogers    {
393*17d4b192SIan Rogers        "BriefDescription": "Percentage of ifetch miss bound stalls, where the ifetch miss subsequently misses in the L3",
394*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@MEM_BOUND_STALLS.IFETCH_DRAM_HIT@ / cpu_atom@MEM_BOUND_STALLS.IFETCH@",
395*17d4b192SIan Rogers        "MetricName": "tma_info_ifetch_miss_bound_%_ifetchmissbound_with_l3miss",
396*17d4b192SIan Rogers        "Unit": "cpu_atom"
397*17d4b192SIan Rogers    },
398*17d4b192SIan Rogers    {
399*17d4b192SIan Rogers        "BriefDescription": "Percentage of memory bound stalls where retirement is stalled due to an L1 miss that hit the L2",
400*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@MEM_BOUND_STALLS.LOAD_L2_HIT@ / cpu_atom@MEM_BOUND_STALLS.LOAD@",
401*17d4b192SIan Rogers        "MetricGroup": "load_store_bound",
402*17d4b192SIan Rogers        "MetricName": "tma_info_load_miss_bound_%_loadmissbound_with_l2hit",
403*17d4b192SIan Rogers        "Unit": "cpu_atom"
404*17d4b192SIan Rogers    },
405*17d4b192SIan Rogers    {
406*17d4b192SIan Rogers        "BriefDescription": "Percentage of memory bound stalls where retirement is stalled due to an L1 miss that hit the L3",
407*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@MEM_BOUND_STALLS.LOAD_LLC_HIT@ / cpu_atom@MEM_BOUND_STALLS.LOAD@",
408*17d4b192SIan Rogers        "MetricGroup": "load_store_bound",
409*17d4b192SIan Rogers        "MetricName": "tma_info_load_miss_bound_%_loadmissbound_with_l3hit",
410*17d4b192SIan Rogers        "Unit": "cpu_atom"
411*17d4b192SIan Rogers    },
412*17d4b192SIan Rogers    {
413*17d4b192SIan Rogers        "BriefDescription": "Percentage of memory bound stalls where retirement is stalled due to an L1 miss that subsequently misses the L3",
414*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@MEM_BOUND_STALLS.LOAD_DRAM_HIT@ / cpu_atom@MEM_BOUND_STALLS.LOAD@",
415*17d4b192SIan Rogers        "MetricGroup": "load_store_bound",
416*17d4b192SIan Rogers        "MetricName": "tma_info_load_miss_bound_%_loadmissbound_with_l3miss",
417*17d4b192SIan Rogers        "Unit": "cpu_atom"
418*17d4b192SIan Rogers    },
419*17d4b192SIan Rogers    {
420*17d4b192SIan Rogers        "BriefDescription": "Counts the number of cycles that the oldest load of the load buffer is stalled at retirement due to a pipeline block",
421*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@LD_HEAD.L1_BOUND_AT_RET@ / cpu_atom@CPU_CLK_UNHALTED.CORE@",
422*17d4b192SIan Rogers        "MetricGroup": "load_store_bound",
423*17d4b192SIan Rogers        "MetricName": "tma_info_load_store_bound_l1_bound",
424*17d4b192SIan Rogers        "Unit": "cpu_atom"
425*17d4b192SIan Rogers    },
426*17d4b192SIan Rogers    {
427*17d4b192SIan Rogers        "BriefDescription": "Counts the number of cycles that the oldest load of the load buffer is stalled at retirement",
428*17d4b192SIan Rogers        "MetricExpr": "100 * (cpu_atom@LD_HEAD.L1_BOUND_AT_RET@ + cpu_atom@MEM_BOUND_STALLS.LOAD@) / cpu_atom@CPU_CLK_UNHALTED.CORE@",
429*17d4b192SIan Rogers        "MetricGroup": "load_store_bound",
430*17d4b192SIan Rogers        "MetricName": "tma_info_load_store_bound_load_bound",
431*17d4b192SIan Rogers        "Unit": "cpu_atom"
432*17d4b192SIan Rogers    },
433*17d4b192SIan Rogers    {
434*17d4b192SIan Rogers        "BriefDescription": "Counts the number of cycles the core is stalled due to store buffer full",
435*17d4b192SIan Rogers        "MetricExpr": "100 * (cpu_atom@MEM_SCHEDULER_BLOCK.ST_BUF@ / cpu_atom@MEM_SCHEDULER_BLOCK.ALL@) * tma_mem_scheduler",
436*17d4b192SIan Rogers        "MetricGroup": "load_store_bound",
437*17d4b192SIan Rogers        "MetricName": "tma_info_load_store_bound_store_bound",
438*17d4b192SIan Rogers        "Unit": "cpu_atom"
439*17d4b192SIan Rogers    },
440*17d4b192SIan Rogers    {
441*17d4b192SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to thousands of instructions retired, due to memory disambiguation",
442*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_atom@MACHINE_CLEARS.DISAMBIGUATION@ / cpu_atom@INST_RETIRED.ANY@",
443*17d4b192SIan Rogers        "MetricName": "tma_info_machine_clear_bound_machine_clears_disamb_pki",
444*17d4b192SIan Rogers        "Unit": "cpu_atom"
445*17d4b192SIan Rogers    },
446*17d4b192SIan Rogers    {
447*17d4b192SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to thousands of instructions retired, due to floating point assists",
448*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_atom@MACHINE_CLEARS.FP_ASSIST@ / cpu_atom@INST_RETIRED.ANY@",
449*17d4b192SIan Rogers        "MetricName": "tma_info_machine_clear_bound_machine_clears_fp_assist_pki",
450*17d4b192SIan Rogers        "Unit": "cpu_atom"
451*17d4b192SIan Rogers    },
452*17d4b192SIan Rogers    {
453*17d4b192SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to thousands of instructions retired, due to memory ordering",
454*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_atom@MACHINE_CLEARS.MEMORY_ORDERING@ / cpu_atom@INST_RETIRED.ANY@",
455*17d4b192SIan Rogers        "MetricName": "tma_info_machine_clear_bound_machine_clears_monuke_pki",
456*17d4b192SIan Rogers        "Unit": "cpu_atom"
457*17d4b192SIan Rogers    },
458*17d4b192SIan Rogers    {
459*17d4b192SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to thousands of instructions retired, due to memory renaming",
460*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_atom@MACHINE_CLEARS.MRN_NUKE@ / cpu_atom@INST_RETIRED.ANY@",
461*17d4b192SIan Rogers        "MetricName": "tma_info_machine_clear_bound_machine_clears_mrn_pki",
462*17d4b192SIan Rogers        "Unit": "cpu_atom"
463*17d4b192SIan Rogers    },
464*17d4b192SIan Rogers    {
465*17d4b192SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to thousands of instructions retired, due to page faults",
466*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_atom@MACHINE_CLEARS.PAGE_FAULT@ / cpu_atom@INST_RETIRED.ANY@",
467*17d4b192SIan Rogers        "MetricName": "tma_info_machine_clear_bound_machine_clears_page_fault_pki",
468*17d4b192SIan Rogers        "Unit": "cpu_atom"
469*17d4b192SIan Rogers    },
470*17d4b192SIan Rogers    {
471*17d4b192SIan Rogers        "BriefDescription": "Counts the number of machine clears relative to thousands of instructions retired, due to self-modifying code",
472*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_atom@MACHINE_CLEARS.SMC@ / cpu_atom@INST_RETIRED.ANY@",
473*17d4b192SIan Rogers        "MetricName": "tma_info_machine_clear_bound_machine_clears_smc_pki",
474*17d4b192SIan Rogers        "Unit": "cpu_atom"
475*17d4b192SIan Rogers    },
476*17d4b192SIan Rogers    {
477*17d4b192SIan Rogers        "BriefDescription": "Percentage of total non-speculative loads with an address aliasing block",
478*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@LD_BLOCKS.4K_ALIAS@ / cpu_atom@MEM_UOPS_RETIRED.ALL_LOADS@",
479*17d4b192SIan Rogers        "MetricName": "tma_info_mem_exec_blocks_%_loads_with_adressaliasing",
480c04fcf7cSIan Rogers        "Unit": "cpu_atom"
481c04fcf7cSIan Rogers    },
482c04fcf7cSIan Rogers    {
483c04fcf7cSIan Rogers        "BriefDescription": "Percentage of total non-speculative loads with a store forward or unknown store address block",
484*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@LD_BLOCKS.DATA_UNKNOWN@ / cpu_atom@MEM_UOPS_RETIRED.ALL_LOADS@",
485*17d4b192SIan Rogers        "MetricName": "tma_info_mem_exec_blocks_%_loads_with_storefwdblk",
486c04fcf7cSIan Rogers        "Unit": "cpu_atom"
487c04fcf7cSIan Rogers    },
488c04fcf7cSIan Rogers    {
489*17d4b192SIan Rogers        "BriefDescription": "Percentage of Memory Execution Bound due to a first level data cache miss",
490*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@LD_HEAD.L1_MISS_AT_RET@ / cpu_atom@LD_HEAD.ANY_AT_RET@",
491*17d4b192SIan Rogers        "MetricName": "tma_info_mem_exec_bound_%_loadhead_with_l1miss",
492c04fcf7cSIan Rogers        "Unit": "cpu_atom"
493c04fcf7cSIan Rogers    },
494c04fcf7cSIan Rogers    {
495*17d4b192SIan Rogers        "BriefDescription": "Percentage of Memory Execution Bound due to other block cases, such as pipeline conflicts, fences, etc",
496*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@LD_HEAD.OTHER_AT_RET@ / cpu_atom@LD_HEAD.ANY_AT_RET@",
497*17d4b192SIan Rogers        "MetricName": "tma_info_mem_exec_bound_%_loadhead_with_otherpipelineblks",
498c04fcf7cSIan Rogers        "Unit": "cpu_atom"
499c04fcf7cSIan Rogers    },
500c04fcf7cSIan Rogers    {
501*17d4b192SIan Rogers        "BriefDescription": "Percentage of Memory Execution Bound due to a pagewalk",
502*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@LD_HEAD.PGWALK_AT_RET@ / cpu_atom@LD_HEAD.ANY_AT_RET@",
503*17d4b192SIan Rogers        "MetricName": "tma_info_mem_exec_bound_%_loadhead_with_pagewalk",
504c04fcf7cSIan Rogers        "Unit": "cpu_atom"
505c04fcf7cSIan Rogers    },
506c04fcf7cSIan Rogers    {
507*17d4b192SIan Rogers        "BriefDescription": "Percentage of Memory Execution Bound due to a second level TLB miss",
508*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@LD_HEAD.DTLB_MISS_AT_RET@ / cpu_atom@LD_HEAD.ANY_AT_RET@",
509*17d4b192SIan Rogers        "MetricName": "tma_info_mem_exec_bound_%_loadhead_with_stlbhit",
510*17d4b192SIan Rogers        "Unit": "cpu_atom"
511*17d4b192SIan Rogers    },
512*17d4b192SIan Rogers    {
513*17d4b192SIan Rogers        "BriefDescription": "Percentage of Memory Execution Bound due to a store forward address match",
514*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@LD_HEAD.ST_ADDR_AT_RET@ / cpu_atom@LD_HEAD.ANY_AT_RET@",
515*17d4b192SIan Rogers        "MetricName": "tma_info_mem_exec_bound_%_loadhead_with_storefwding",
516*17d4b192SIan Rogers        "Unit": "cpu_atom"
517*17d4b192SIan Rogers    },
518*17d4b192SIan Rogers    {
519*17d4b192SIan Rogers        "BriefDescription": "Instructions per Load",
520*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@INST_RETIRED.ANY@ / cpu_atom@MEM_UOPS_RETIRED.ALL_LOADS@",
521*17d4b192SIan Rogers        "MetricName": "tma_info_mem_mix_ipload",
522*17d4b192SIan Rogers        "Unit": "cpu_atom"
523*17d4b192SIan Rogers    },
524*17d4b192SIan Rogers    {
525*17d4b192SIan Rogers        "BriefDescription": "Instructions per Store",
526*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@INST_RETIRED.ANY@ / cpu_atom@MEM_UOPS_RETIRED.ALL_STORES@",
527*17d4b192SIan Rogers        "MetricName": "tma_info_mem_mix_ipstore",
528*17d4b192SIan Rogers        "Unit": "cpu_atom"
529*17d4b192SIan Rogers    },
530*17d4b192SIan Rogers    {
531*17d4b192SIan Rogers        "BriefDescription": "Percentage of total non-speculative loads that perform one or more locks",
532*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@MEM_UOPS_RETIRED.LOCK_LOADS@ / cpu_atom@MEM_UOPS_RETIRED.ALL_LOADS@",
533*17d4b192SIan Rogers        "MetricName": "tma_info_mem_mix_load_locks_ratio",
534*17d4b192SIan Rogers        "Unit": "cpu_atom"
535*17d4b192SIan Rogers    },
536*17d4b192SIan Rogers    {
537*17d4b192SIan Rogers        "BriefDescription": "Percentage of total non-speculative loads that are splits",
538*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@MEM_UOPS_RETIRED.SPLIT_LOADS@ / cpu_atom@MEM_UOPS_RETIRED.ALL_LOADS@",
539*17d4b192SIan Rogers        "MetricName": "tma_info_mem_mix_load_splits_ratio",
540*17d4b192SIan Rogers        "Unit": "cpu_atom"
541*17d4b192SIan Rogers    },
542*17d4b192SIan Rogers    {
543*17d4b192SIan Rogers        "BriefDescription": "Ratio of mem load uops to all uops",
544*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_atom@MEM_UOPS_RETIRED.ALL_LOADS@ / cpu_atom@UOPS_RETIRED.ALL@",
545*17d4b192SIan Rogers        "MetricName": "tma_info_mem_mix_memload_ratio",
546*17d4b192SIan Rogers        "Unit": "cpu_atom"
547*17d4b192SIan Rogers    },
548*17d4b192SIan Rogers    {
549*17d4b192SIan Rogers        "BriefDescription": "Percentage of time that the core is stalled due to a TPAUSE or UMWAIT instruction",
550*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@SERIALIZATION.C01_MS_SCB@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
551*17d4b192SIan Rogers        "MetricName": "tma_info_serialization _%_tpause_cycles",
552c04fcf7cSIan Rogers        "Unit": "cpu_atom"
553c04fcf7cSIan Rogers    },
554c04fcf7cSIan Rogers    {
555c04fcf7cSIan Rogers        "BriefDescription": "Average CPU Utilization",
556becc24e9SIan Rogers        "MetricExpr": "cpu_atom@CPU_CLK_UNHALTED.REF_TSC@ / TSC",
557c04fcf7cSIan Rogers        "MetricName": "tma_info_system_cpu_utilization",
558c04fcf7cSIan Rogers        "Unit": "cpu_atom"
559c04fcf7cSIan Rogers    },
560c04fcf7cSIan Rogers    {
561c04fcf7cSIan Rogers        "BriefDescription": "Fraction of cycles spent in Kernel mode",
562*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@CPU_CLK_UNHALTED.CORE_P@k / cpu_atom@CPU_CLK_UNHALTED.CORE@",
563c04fcf7cSIan Rogers        "MetricGroup": "Summary",
564c04fcf7cSIan Rogers        "MetricName": "tma_info_system_kernel_utilization",
565c04fcf7cSIan Rogers        "Unit": "cpu_atom"
566c04fcf7cSIan Rogers    },
567c04fcf7cSIan Rogers    {
568c04fcf7cSIan Rogers        "BriefDescription": "Average Frequency Utilization relative nominal frequency",
569*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@CPU_CLK_UNHALTED.CORE@ / cpu_atom@CPU_CLK_UNHALTED.REF_TSC@",
570c04fcf7cSIan Rogers        "MetricGroup": "Power",
571c04fcf7cSIan Rogers        "MetricName": "tma_info_system_turbo_utilization",
572ad10c920SIan Rogers        "Unit": "cpu_atom"
573ad10c920SIan Rogers    },
574ad10c920SIan Rogers    {
575*17d4b192SIan Rogers        "BriefDescription": "Percentage of all uops which are FPDiv uops",
576*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@UOPS_RETIRED.FPDIV@ / cpu_atom@UOPS_RETIRED.ALL@",
577*17d4b192SIan Rogers        "MetricName": "tma_info_uop_mix_fpdiv_uop_ratio",
578*17d4b192SIan Rogers        "Unit": "cpu_atom"
579*17d4b192SIan Rogers    },
580*17d4b192SIan Rogers    {
581*17d4b192SIan Rogers        "BriefDescription": "Percentage of all uops which are IDiv uops",
582*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@UOPS_RETIRED.IDIV@ / cpu_atom@UOPS_RETIRED.ALL@",
583*17d4b192SIan Rogers        "MetricName": "tma_info_uop_mix_idiv_uop_ratio",
584*17d4b192SIan Rogers        "Unit": "cpu_atom"
585*17d4b192SIan Rogers    },
586*17d4b192SIan Rogers    {
587*17d4b192SIan Rogers        "BriefDescription": "Percentage of all uops which are microcode ops",
588*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@UOPS_RETIRED.MS@ / cpu_atom@UOPS_RETIRED.ALL@",
589*17d4b192SIan Rogers        "MetricName": "tma_info_uop_mix_microcode_uop_ratio",
590*17d4b192SIan Rogers        "Unit": "cpu_atom"
591*17d4b192SIan Rogers    },
592*17d4b192SIan Rogers    {
593*17d4b192SIan Rogers        "BriefDescription": "Percentage of all uops which are x87 uops",
594*17d4b192SIan Rogers        "MetricExpr": "100 * cpu_atom@UOPS_RETIRED.X87@ / cpu_atom@UOPS_RETIRED.ALL@",
595*17d4b192SIan Rogers        "MetricName": "tma_info_uop_mix_x87_uop_ratio",
596*17d4b192SIan Rogers        "Unit": "cpu_atom"
597*17d4b192SIan Rogers    },
598*17d4b192SIan Rogers    {
599ad10c920SIan Rogers        "BriefDescription": "Counts the number of issue slots that were not delivered by the frontend due to Instruction Table Lookaside Buffer (ITLB) misses.",
600*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_FE_BOUND.ITLB@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
601*17d4b192SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_ifetch_latency_group",
6020372358aSIan Rogers        "MetricName": "tma_itlb_misses",
603*17d4b192SIan Rogers        "MetricThreshold": "tma_itlb_misses > 0.05 & (tma_ifetch_latency > 0.15 & tma_frontend_bound > 0.2)",
604ad10c920SIan Rogers        "ScaleUnit": "100%",
605ad10c920SIan Rogers        "Unit": "cpu_atom"
606ad10c920SIan Rogers    },
607ad10c920SIan Rogers    {
608*17d4b192SIan 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",
609*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_BAD_SPECULATION.MACHINE_CLEARS@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
610ad10c920SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_bad_speculation_group",
611ad10c920SIan Rogers        "MetricName": "tma_machine_clears",
612*17d4b192SIan Rogers        "MetricThreshold": "tma_machine_clears > 0.05 & tma_bad_speculation > 0.15",
613ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
614ad10c920SIan Rogers        "ScaleUnit": "100%",
615ad10c920SIan Rogers        "Unit": "cpu_atom"
616ad10c920SIan Rogers    },
617ad10c920SIan Rogers    {
618*17d4b192SIan 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",
619*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_BE_BOUND.MEM_SCHEDULER@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
620ad10c920SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
621ad10c920SIan Rogers        "MetricName": "tma_mem_scheduler",
622*17d4b192SIan Rogers        "MetricThreshold": "tma_mem_scheduler > 0.1 & (tma_resource_bound > 0.2 & tma_backend_bound > 0.1)",
623ad10c920SIan Rogers        "ScaleUnit": "100%",
624ad10c920SIan Rogers        "Unit": "cpu_atom"
625ad10c920SIan Rogers    },
626ad10c920SIan Rogers    {
627*17d4b192SIan 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",
628*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_BE_BOUND.NON_MEM_SCHEDULER@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
629ad10c920SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
630ad10c920SIan Rogers        "MetricName": "tma_non_mem_scheduler",
631*17d4b192SIan Rogers        "MetricThreshold": "tma_non_mem_scheduler > 0.1 & (tma_resource_bound > 0.2 & tma_backend_bound > 0.1)",
632ad10c920SIan Rogers        "ScaleUnit": "100%",
633ad10c920SIan Rogers        "Unit": "cpu_atom"
634ad10c920SIan Rogers    },
635ad10c920SIan Rogers    {
636*17d4b192SIan Rogers        "BriefDescription": "Counts the number of issue slots that were not consumed by the backend due to a machine clear that requires the use of microcode (slow nuke)",
637*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_BAD_SPECULATION.NUKE@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
638ad10c920SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_machine_clears_group",
639ad10c920SIan Rogers        "MetricName": "tma_nuke",
640*17d4b192SIan Rogers        "MetricThreshold": "tma_nuke > 0.05 & (tma_machine_clears > 0.05 & tma_bad_speculation > 0.15)",
641ad10c920SIan Rogers        "ScaleUnit": "100%",
642ad10c920SIan Rogers        "Unit": "cpu_atom"
643ad10c920SIan Rogers    },
644ad10c920SIan Rogers    {
645ad10c920SIan Rogers        "BriefDescription": "Counts the number of issue slots that were not delivered by the frontend due to other common frontend stalls not categorized.",
646*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_FE_BOUND.OTHER@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
647*17d4b192SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_ifetch_bandwidth_group",
648ad10c920SIan Rogers        "MetricName": "tma_other_fb",
649*17d4b192SIan Rogers        "MetricThreshold": "tma_other_fb > 0.05 & (tma_ifetch_bandwidth > 0.1 & tma_frontend_bound > 0.2)",
650ad10c920SIan Rogers        "ScaleUnit": "100%",
651ad10c920SIan Rogers        "Unit": "cpu_atom"
652ad10c920SIan Rogers    },
653ad10c920SIan Rogers    {
654ad10c920SIan Rogers        "BriefDescription": "Counts the number of issue slots that were not delivered by the frontend due to wrong predecodes.",
655*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_FE_BOUND.PREDECODE@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
656*17d4b192SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_ifetch_bandwidth_group",
657ad10c920SIan Rogers        "MetricName": "tma_predecode",
658*17d4b192SIan Rogers        "MetricThreshold": "tma_predecode > 0.05 & (tma_ifetch_bandwidth > 0.1 & tma_frontend_bound > 0.2)",
659ad10c920SIan Rogers        "ScaleUnit": "100%",
660ad10c920SIan Rogers        "Unit": "cpu_atom"
661ad10c920SIan Rogers    },
662ad10c920SIan Rogers    {
663*17d4b192SIan 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)",
664*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_BE_BOUND.REGISTER@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
665ad10c920SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
666ad10c920SIan Rogers        "MetricName": "tma_register",
667*17d4b192SIan Rogers        "MetricThreshold": "tma_register > 0.1 & (tma_resource_bound > 0.2 & tma_backend_bound > 0.1)",
668ad10c920SIan Rogers        "ScaleUnit": "100%",
669ad10c920SIan Rogers        "Unit": "cpu_atom"
670ad10c920SIan Rogers    },
671ad10c920SIan Rogers    {
672*17d4b192SIan Rogers        "BriefDescription": "Counts the number of issue slots that were not consumed by the backend due to the reorder buffer being full (ROB stalls)",
673*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_BE_BOUND.REORDER_BUFFER@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
674ad10c920SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
675ad10c920SIan Rogers        "MetricName": "tma_reorder_buffer",
676*17d4b192SIan Rogers        "MetricThreshold": "tma_reorder_buffer > 0.1 & (tma_resource_bound > 0.2 & tma_backend_bound > 0.1)",
677ad10c920SIan Rogers        "ScaleUnit": "100%",
678ad10c920SIan Rogers        "Unit": "cpu_atom"
679ad10c920SIan Rogers    },
680ad10c920SIan Rogers    {
681*17d4b192SIan Rogers        "BriefDescription": "Counts the number of cycles the core is stalled due to a resource limitation",
682*17d4b192SIan Rogers        "MetricExpr": "tma_backend_bound - tma_core_bound",
683*17d4b192SIan Rogers        "MetricGroup": "TopdownL2;tma_L2_group;tma_backend_bound_group",
684ad10c920SIan Rogers        "MetricName": "tma_resource_bound",
685*17d4b192SIan Rogers        "MetricThreshold": "tma_resource_bound > 0.2 & tma_backend_bound > 0.1",
686ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
687ad10c920SIan Rogers        "ScaleUnit": "100%",
688ad10c920SIan Rogers        "Unit": "cpu_atom"
689ad10c920SIan Rogers    },
690ad10c920SIan Rogers    {
691*17d4b192SIan Rogers        "BriefDescription": "Counts the number of issue slots that result in retirement slots",
692969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL1",
693*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_RETIRING.ALL@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
694969a4661SKan Liang        "MetricGroup": "Default;TopdownL1;tma_L1_group",
695ad10c920SIan Rogers        "MetricName": "tma_retiring",
696ad10c920SIan Rogers        "MetricThreshold": "tma_retiring > 0.75",
697969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL1;Default",
698ad10c920SIan Rogers        "ScaleUnit": "100%",
699ad10c920SIan Rogers        "Unit": "cpu_atom"
700ad10c920SIan Rogers    },
701ad10c920SIan Rogers    {
702*17d4b192SIan 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)",
703*17d4b192SIan Rogers        "MetricExpr": "cpu_atom@TOPDOWN_BE_BOUND.SERIALIZATION@ / (5 * cpu_atom@CPU_CLK_UNHALTED.CORE@)",
704ad10c920SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_resource_bound_group",
705ad10c920SIan Rogers        "MetricName": "tma_serialization",
706*17d4b192SIan Rogers        "MetricThreshold": "tma_serialization > 0.1 & (tma_resource_bound > 0.2 & tma_backend_bound > 0.1)",
707ad10c920SIan Rogers        "ScaleUnit": "100%",
708ad10c920SIan Rogers        "Unit": "cpu_atom"
709ad10c920SIan Rogers    },
710ad10c920SIan Rogers    {
711982b6aceSIan Rogers        "BriefDescription": "Uncore frequency per die [GHZ]",
712982b6aceSIan Rogers        "MetricExpr": "tma_info_system_socket_clks / #num_dies / duration_time / 1e9",
713982b6aceSIan Rogers        "MetricGroup": "SoC",
714982b6aceSIan Rogers        "MetricName": "UNCORE_FREQ",
715982b6aceSIan Rogers        "Unit": "cpu_core"
716982b6aceSIan Rogers    },
717982b6aceSIan Rogers    {
718ad10c920SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution ports for ALU operations.",
719c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@UOPS_DISPATCHED.PORT_0@ + cpu_core@UOPS_DISPATCHED.PORT_1@ + cpu_core@UOPS_DISPATCHED.PORT_5_11@ + cpu_core@UOPS_DISPATCHED.PORT_6@) / (5 * tma_info_core_core_clks)",
720ad10c920SIan Rogers        "MetricGroup": "TopdownL5;tma_L5_group;tma_ports_utilized_3m_group",
721ad10c920SIan Rogers        "MetricName": "tma_alu_op_utilization",
72252530942SIan Rogers        "MetricThreshold": "tma_alu_op_utilization > 0.4",
723ad10c920SIan Rogers        "ScaleUnit": "100%",
724ad10c920SIan Rogers        "Unit": "cpu_core"
725ad10c920SIan Rogers    },
726ad10c920SIan Rogers    {
727ad10c920SIan Rogers        "BriefDescription": "This metric estimates fraction of slots the CPU retired uops delivered by the Microcode_Sequencer as a result of Assists",
72852530942SIan Rogers        "MetricExpr": "78 * cpu_core@ASSISTS.ANY@ / tma_info_thread_slots",
729*17d4b192SIan Rogers        "MetricGroup": "BvIO;TopdownL4;tma_L4_group;tma_microcode_sequencer_group",
730ad10c920SIan Rogers        "MetricName": "tma_assists",
731ad10c920SIan Rogers        "MetricThreshold": "tma_assists > 0.1 & (tma_microcode_sequencer > 0.05 & tma_heavy_operations > 0.1)",
732ad10c920SIan Rogers        "PublicDescription": "This metric estimates fraction of slots the CPU retired uops delivered by the Microcode_Sequencer as a result of Assists. Assists are long sequences of uops that are required in certain corner-cases for operations that cannot be handled natively by the execution pipeline. For example; when working with very small floating point values (so-called Denormals); the FP units are not set up to perform these operations natively. Instead; a sequence of instructions to perform the computation on the Denormals is injected into the pipeline. Since these microcode sequences might be dozens of uops long; Assists can be extremely deleterious to performance and they can be avoided in many cases. Sample with: ASSISTS.ANY",
733ad10c920SIan Rogers        "ScaleUnit": "100%",
734ad10c920SIan Rogers        "Unit": "cpu_core"
735ad10c920SIan Rogers    },
736ad10c920SIan Rogers    {
737ad10c920SIan Rogers        "BriefDescription": "This metric estimates fraction of slots the CPU retired uops as a result of handing SSE to AVX* or AVX* to SSE transition Assists.",
738c04fcf7cSIan Rogers        "MetricExpr": "63 * cpu_core@ASSISTS.SSE_AVX_MIX@ / tma_info_thread_slots",
739ad10c920SIan Rogers        "MetricGroup": "HPC;TopdownL5;tma_L5_group;tma_assists_group",
740ad10c920SIan Rogers        "MetricName": "tma_avx_assists",
741ad10c920SIan Rogers        "MetricThreshold": "tma_avx_assists > 0.1",
742ad10c920SIan Rogers        "ScaleUnit": "100%",
743ad10c920SIan Rogers        "Unit": "cpu_core"
744ad10c920SIan Rogers    },
745ad10c920SIan Rogers    {
746ad10c920SIan Rogers        "BriefDescription": "This category represents fraction of slots where no uops are being delivered due to a lack of required resources for accepting new uops in the Backend",
747969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL1",
748c04fcf7cSIan Rogers        "MetricExpr": "cpu_core@topdown\\-be\\-bound@ / (cpu_core@topdown\\-fe\\-bound@ + cpu_core@topdown\\-bad\\-spec@ + cpu_core@topdown\\-retiring@ + cpu_core@topdown\\-be\\-bound@) + 0 * tma_info_thread_slots",
749*17d4b192SIan Rogers        "MetricGroup": "BvOB;Default;TmaL1;TopdownL1;tma_L1_group",
750ad10c920SIan Rogers        "MetricName": "tma_backend_bound",
751ad10c920SIan Rogers        "MetricThreshold": "tma_backend_bound > 0.2",
752969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL1;Default",
753ad10c920SIan Rogers        "PublicDescription": "This category represents fraction of slots where no uops are being delivered due to a lack of required resources for accepting new uops in the Backend. Backend is the portion of the processor core where the out-of-order scheduler dispatches ready uops into their respective execution units; and once completed these uops get retired according to program order. For example; stalls due to data-cache misses or stalls due to the divider unit being overloaded are both categorized under Backend Bound. Backend Bound is further divided into two main categories: Memory Bound and Core Bound. Sample with: TOPDOWN.BACKEND_BOUND_SLOTS",
754ad10c920SIan Rogers        "ScaleUnit": "100%",
755ad10c920SIan Rogers        "Unit": "cpu_core"
756ad10c920SIan Rogers    },
757ad10c920SIan Rogers    {
758ad10c920SIan Rogers        "BriefDescription": "This category represents fraction of slots wasted due to incorrect speculations",
759969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL1",
760ad10c920SIan Rogers        "MetricExpr": "max(1 - (tma_frontend_bound + tma_backend_bound + tma_retiring), 0)",
761969a4661SKan Liang        "MetricGroup": "Default;TmaL1;TopdownL1;tma_L1_group",
762ad10c920SIan Rogers        "MetricName": "tma_bad_speculation",
763ad10c920SIan Rogers        "MetricThreshold": "tma_bad_speculation > 0.15",
764969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL1;Default",
765ad10c920SIan Rogers        "PublicDescription": "This category represents fraction of slots wasted due to incorrect speculations. This include slots used to issue uops that do not eventually get retired and slots for which the issue-pipeline was blocked due to recovery from earlier incorrect speculation. For example; wasted work due to miss-predicted branches are categorized under Bad Speculation category. Incorrect data speculation followed by Memory Ordering Nukes is another example.",
766ad10c920SIan Rogers        "ScaleUnit": "100%",
767ad10c920SIan Rogers        "Unit": "cpu_core"
768ad10c920SIan Rogers    },
769ad10c920SIan Rogers    {
770ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of slots the CPU has wasted due to Branch Misprediction",
771c04fcf7cSIan Rogers        "MetricExpr": "cpu_core@topdown\\-br\\-mispredict@ / (cpu_core@topdown\\-fe\\-bound@ + cpu_core@topdown\\-bad\\-spec@ + cpu_core@topdown\\-retiring@ + cpu_core@topdown\\-be\\-bound@) + 0 * tma_info_thread_slots",
772*17d4b192SIan Rogers        "MetricGroup": "BadSpec;BrMispredicts;BvMP;TmaL2;TopdownL2;tma_L2_group;tma_bad_speculation_group;tma_issueBM",
773ad10c920SIan Rogers        "MetricName": "tma_branch_mispredicts",
774ad10c920SIan Rogers        "MetricThreshold": "tma_branch_mispredicts > 0.1 & tma_bad_speculation > 0.15",
775ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
776c04fcf7cSIan Rogers        "PublicDescription": "This metric represents fraction of slots the CPU has wasted due to Branch Misprediction.  These slots are either wasted by uops fetched from an incorrectly speculated program path; or stalls when the out-of-order part of the machine needs to recover its state from a speculative path. Sample with: TOPDOWN.BR_MISPREDICT_SLOTS. Related metrics: tma_info_bad_spec_branch_misprediction_cost, tma_info_bottleneck_mispredictions, tma_mispredicts_resteers",
777ad10c920SIan Rogers        "ScaleUnit": "100%",
778ad10c920SIan Rogers        "Unit": "cpu_core"
779ad10c920SIan Rogers    },
780ad10c920SIan Rogers    {
781ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to Branch Resteers",
782becc24e9SIan Rogers        "MetricExpr": "cpu_core@INT_MISC.CLEAR_RESTEER_CYCLES@ / tma_info_thread_clks + tma_unknown_branches",
783ad10c920SIan Rogers        "MetricGroup": "FetchLat;TopdownL3;tma_L3_group;tma_fetch_latency_group",
784ad10c920SIan Rogers        "MetricName": "tma_branch_resteers",
785ad10c920SIan Rogers        "MetricThreshold": "tma_branch_resteers > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15)",
786ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to Branch Resteers. Branch Resteers estimates the Frontend delay in fetching operations from corrected path; following all sorts of miss-predicted branches. For example; branchy code with lots of miss-predictions might get categorized under Branch Resteers. Note the value of this node may overlap with its siblings. Sample with: BR_MISP_RETIRED.ALL_BRANCHES",
787ad10c920SIan Rogers        "ScaleUnit": "100%",
788ad10c920SIan Rogers        "Unit": "cpu_core"
789ad10c920SIan Rogers    },
790ad10c920SIan Rogers    {
79152530942SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due staying in C0.1 power-performance optimized state (Faster wakeup time; Smaller power savings).",
79252530942SIan Rogers        "MetricExpr": "cpu_core@CPU_CLK_UNHALTED.C01@ / tma_info_thread_clks",
79352530942SIan Rogers        "MetricGroup": "C0Wait;TopdownL4;tma_L4_group;tma_serializing_operation_group",
79452530942SIan Rogers        "MetricName": "tma_c01_wait",
79552530942SIan Rogers        "MetricThreshold": "tma_c01_wait > 0.05 & (tma_serializing_operation > 0.1 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
79652530942SIan Rogers        "ScaleUnit": "100%",
79752530942SIan Rogers        "Unit": "cpu_core"
79852530942SIan Rogers    },
79952530942SIan Rogers    {
80052530942SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due staying in C0.2 power-performance optimized state (Slower wakeup time; Larger power savings).",
80152530942SIan Rogers        "MetricExpr": "cpu_core@CPU_CLK_UNHALTED.C02@ / tma_info_thread_clks",
80252530942SIan Rogers        "MetricGroup": "C0Wait;TopdownL4;tma_L4_group;tma_serializing_operation_group",
80352530942SIan Rogers        "MetricName": "tma_c02_wait",
80452530942SIan Rogers        "MetricThreshold": "tma_c02_wait > 0.05 & (tma_serializing_operation > 0.1 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
80552530942SIan Rogers        "ScaleUnit": "100%",
80652530942SIan Rogers        "Unit": "cpu_core"
80752530942SIan Rogers    },
80852530942SIan Rogers    {
809ad10c920SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles the CPU retired uops originated from CISC (complex instruction set computer) instruction",
810ad10c920SIan Rogers        "MetricExpr": "max(0, tma_microcode_sequencer - tma_assists)",
811ad10c920SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_microcode_sequencer_group",
812ad10c920SIan Rogers        "MetricName": "tma_cisc",
813ad10c920SIan Rogers        "MetricThreshold": "tma_cisc > 0.1 & (tma_microcode_sequencer > 0.05 & tma_heavy_operations > 0.1)",
814ad10c920SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles the CPU retired uops originated from CISC (complex instruction set computer) instruction. A CISC instruction has multiple uops that are required to perform the instruction's functionality as in the case of read-modify-write as an example. Since these instructions require multiple uops they may or may not imply sub-optimal use of machine resources. Sample with: FRONTEND_RETIRED.MS_FLOWS",
815ad10c920SIan Rogers        "ScaleUnit": "100%",
816ad10c920SIan Rogers        "Unit": "cpu_core"
817ad10c920SIan Rogers    },
818ad10c920SIan Rogers    {
819ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to Branch Resteers as a result of Machine Clears",
820c04fcf7cSIan Rogers        "MetricExpr": "(1 - tma_branch_mispredicts / tma_bad_speculation) * cpu_core@INT_MISC.CLEAR_RESTEER_CYCLES@ / tma_info_thread_clks",
821ad10c920SIan Rogers        "MetricGroup": "BadSpec;MachineClears;TopdownL4;tma_L4_group;tma_branch_resteers_group;tma_issueMC",
822ad10c920SIan Rogers        "MetricName": "tma_clears_resteers",
823ad10c920SIan Rogers        "MetricThreshold": "tma_clears_resteers > 0.05 & (tma_branch_resteers > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15))",
824ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to Branch Resteers as a result of Machine Clears. Sample with: INT_MISC.CLEAR_RESTEER_CYCLES. Related metrics: tma_l1_bound, tma_machine_clears, tma_microcode_sequencer, tma_ms_switches",
825ad10c920SIan Rogers        "ScaleUnit": "100%",
826ad10c920SIan Rogers        "Unit": "cpu_core"
827ad10c920SIan Rogers    },
828ad10c920SIan Rogers    {
829ad10c920SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles while the memory subsystem was handling synchronizations due to contested accesses",
83052530942SIan Rogers        "MetricExpr": "(25 * tma_info_system_core_frequency * (cpu_core@MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD@ * (cpu_core@OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM@ / (cpu_core@OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM@ + cpu_core@OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HIT_WITH_FWD@))) + 24 * tma_info_system_core_frequency * cpu_core@MEM_LOAD_L3_HIT_RETIRED.XSNP_MISS@) * (1 + cpu_core@MEM_LOAD_RETIRED.FB_HIT@ / cpu_core@MEM_LOAD_RETIRED.L1_MISS@ / 2) / tma_info_thread_clks",
831*17d4b192SIan Rogers        "MetricGroup": "BvMS;DataSharing;Offcore;Snoop;TopdownL4;tma_L4_group;tma_issueSyncxn;tma_l3_bound_group",
832ad10c920SIan Rogers        "MetricName": "tma_contested_accesses",
833ad10c920SIan Rogers        "MetricThreshold": "tma_contested_accesses > 0.05 & (tma_l3_bound > 0.05 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
834ad10c920SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles while the memory subsystem was handling synchronizations due to contested accesses. Contested accesses occur when data written by one Logical Processor are read by another Logical Processor on a different Physical Core. Examples of contested accesses include synchronizations such as locks; true data sharing such as modified locked variables; and false sharing. Sample with: MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD;MEM_LOAD_L3_HIT_RETIRED.XSNP_MISS. Related metrics: tma_data_sharing, tma_false_sharing, tma_machine_clears, tma_remote_cache",
835ad10c920SIan Rogers        "ScaleUnit": "100%",
836ad10c920SIan Rogers        "Unit": "cpu_core"
837ad10c920SIan Rogers    },
838ad10c920SIan Rogers    {
839ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of slots where Core non-memory issues were of a bottleneck",
840ad10c920SIan Rogers        "MetricExpr": "max(0, tma_backend_bound - tma_memory_bound)",
841ad10c920SIan Rogers        "MetricGroup": "Backend;Compute;TmaL2;TopdownL2;tma_L2_group;tma_backend_bound_group",
842ad10c920SIan Rogers        "MetricName": "tma_core_bound",
843ad10c920SIan Rogers        "MetricThreshold": "tma_core_bound > 0.1 & tma_backend_bound > 0.2",
844ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
845ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of slots where Core non-memory issues were of a bottleneck.  Shortage in hardware compute resources; or dependencies in software's instructions are both categorized under Core Bound. Hence it may indicate the machine ran out of an out-of-order resource; certain execution units are overloaded or dependencies in program's data- or instruction-flow are limiting the performance (e.g. FP-chained long-latency arithmetic operations).",
846ad10c920SIan Rogers        "ScaleUnit": "100%",
847ad10c920SIan Rogers        "Unit": "cpu_core"
848ad10c920SIan Rogers    },
849ad10c920SIan Rogers    {
850ad10c920SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles while the memory subsystem was handling synchronizations due to data-sharing accesses",
85152530942SIan Rogers        "MetricExpr": "24 * tma_info_system_core_frequency * (cpu_core@MEM_LOAD_L3_HIT_RETIRED.XSNP_NO_FWD@ + cpu_core@MEM_LOAD_L3_HIT_RETIRED.XSNP_FWD@ * (1 - cpu_core@OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM@ / (cpu_core@OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HITM@ + cpu_core@OCR.DEMAND_DATA_RD.L3_HIT.SNOOP_HIT_WITH_FWD@))) * (1 + cpu_core@MEM_LOAD_RETIRED.FB_HIT@ / cpu_core@MEM_LOAD_RETIRED.L1_MISS@ / 2) / tma_info_thread_clks",
852*17d4b192SIan Rogers        "MetricGroup": "BvMS;Offcore;Snoop;TopdownL4;tma_L4_group;tma_issueSyncxn;tma_l3_bound_group",
853ad10c920SIan Rogers        "MetricName": "tma_data_sharing",
854ad10c920SIan Rogers        "MetricThreshold": "tma_data_sharing > 0.05 & (tma_l3_bound > 0.05 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
855ad10c920SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles while the memory subsystem was handling synchronizations due to data-sharing accesses. Data shared by multiple Logical Processors (even just read shared) may cause increased access latency due to cache coherency. Excessive data sharing can drastically harm multithreaded performance. Sample with: MEM_LOAD_L3_HIT_RETIRED.XSNP_NO_FWD. Related metrics: tma_contested_accesses, tma_false_sharing, tma_machine_clears, tma_remote_cache",
856ad10c920SIan Rogers        "ScaleUnit": "100%",
857ad10c920SIan Rogers        "Unit": "cpu_core"
858ad10c920SIan Rogers    },
859ad10c920SIan Rogers    {
860ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles where decoder-0 was the only active decoder",
861c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@INST_DECODED.DECODERS\\,cmask\\=1@ - cpu_core@INST_DECODED.DECODERS\\,cmask\\=2@) / tma_info_core_core_clks / 2",
862ad10c920SIan Rogers        "MetricGroup": "DSBmiss;FetchBW;TopdownL4;tma_L4_group;tma_issueD0;tma_mite_group",
863ad10c920SIan Rogers        "MetricName": "tma_decoder0_alone",
86452530942SIan Rogers        "MetricThreshold": "tma_decoder0_alone > 0.1 & (tma_mite > 0.1 & tma_fetch_bandwidth > 0.2)",
865ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of cycles where decoder-0 was the only active decoder. Related metrics: tma_few_uops_instructions",
866ad10c920SIan Rogers        "ScaleUnit": "100%",
867ad10c920SIan Rogers        "Unit": "cpu_core"
868ad10c920SIan Rogers    },
869ad10c920SIan Rogers    {
870ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles where the Divider unit was active",
871becc24e9SIan Rogers        "MetricExpr": "cpu_core@ARITH.DIV_ACTIVE@ / tma_info_thread_clks",
872*17d4b192SIan Rogers        "MetricGroup": "BvCB;TopdownL3;tma_L3_group;tma_core_bound_group",
873ad10c920SIan Rogers        "MetricName": "tma_divider",
874ad10c920SIan Rogers        "MetricThreshold": "tma_divider > 0.2 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2)",
875ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of cycles where the Divider unit was active. Divide and square root instructions are performed by the Divider unit and can take considerably longer latency than integer or Floating Point addition; subtraction; or multiplication. Sample with: ARITH.DIVIDER_ACTIVE",
876ad10c920SIan Rogers        "ScaleUnit": "100%",
877ad10c920SIan Rogers        "Unit": "cpu_core"
878ad10c920SIan Rogers    },
879ad10c920SIan Rogers    {
880ad10c920SIan Rogers        "BriefDescription": "This metric estimates how often the CPU was stalled on accesses to external memory (DRAM) by loads",
881c04fcf7cSIan Rogers        "MetricExpr": "cpu_core@MEMORY_ACTIVITY.STALLS_L3_MISS@ / tma_info_thread_clks",
882ad10c920SIan Rogers        "MetricGroup": "MemoryBound;TmaL3mem;TopdownL3;tma_L3_group;tma_memory_bound_group",
883ad10c920SIan Rogers        "MetricName": "tma_dram_bound",
884ad10c920SIan Rogers        "MetricThreshold": "tma_dram_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)",
885ad10c920SIan Rogers        "PublicDescription": "This metric estimates how often the CPU was stalled on accesses to external memory (DRAM) by loads. Better caching can improve the latency and increase performance. Sample with: MEM_LOAD_RETIRED.L3_MISS_PS",
886ad10c920SIan Rogers        "ScaleUnit": "100%",
887ad10c920SIan Rogers        "Unit": "cpu_core"
888ad10c920SIan Rogers    },
889ad10c920SIan Rogers    {
890ad10c920SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles in which CPU was likely limited due to DSB (decoded uop cache) fetch pipeline",
891c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@IDQ.DSB_CYCLES_ANY@ - cpu_core@IDQ.DSB_CYCLES_OK@) / tma_info_core_core_clks / 2",
892ad10c920SIan Rogers        "MetricGroup": "DSB;FetchBW;TopdownL3;tma_L3_group;tma_fetch_bandwidth_group",
893ad10c920SIan Rogers        "MetricName": "tma_dsb",
89452530942SIan Rogers        "MetricThreshold": "tma_dsb > 0.15 & tma_fetch_bandwidth > 0.2",
895ad10c920SIan Rogers        "PublicDescription": "This metric represents Core fraction of cycles in which CPU was likely limited due to DSB (decoded uop cache) fetch pipeline.  For example; inefficient utilization of the DSB cache structure or bank conflict when reading from it; are categorized here.",
896ad10c920SIan Rogers        "ScaleUnit": "100%",
897ad10c920SIan Rogers        "Unit": "cpu_core"
898ad10c920SIan Rogers    },
899ad10c920SIan Rogers    {
900ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to switches from DSB to MITE pipelines",
901becc24e9SIan Rogers        "MetricExpr": "cpu_core@DSB2MITE_SWITCHES.PENALTY_CYCLES@ / tma_info_thread_clks",
902ad10c920SIan Rogers        "MetricGroup": "DSBmiss;FetchLat;TopdownL3;tma_L3_group;tma_fetch_latency_group;tma_issueFB",
903ad10c920SIan Rogers        "MetricName": "tma_dsb_switches",
904ad10c920SIan Rogers        "MetricThreshold": "tma_dsb_switches > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15)",
905*17d4b192SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to switches from DSB to MITE pipelines. The DSB (decoded i-cache) is a Uop Cache where the front-end directly delivers Uops (micro operations) avoiding heavy x86 decoding. The DSB pipeline has shorter latency and delivered higher bandwidth than the MITE (legacy instruction decode pipeline). Switching between the two pipelines can cause penalties hence this metric measures the exposed penalty. Sample with: FRONTEND_RETIRED.DSB_MISS_PS. Related metrics: tma_fetch_bandwidth, tma_info_botlnk_l2_dsb_bandwidth, tma_info_botlnk_l2_dsb_misses, tma_info_frontend_dsb_coverage, tma_info_inst_mix_iptb, tma_lcp",
906ad10c920SIan Rogers        "ScaleUnit": "100%",
907ad10c920SIan Rogers        "Unit": "cpu_core"
908ad10c920SIan Rogers    },
909ad10c920SIan Rogers    {
910ad10c920SIan Rogers        "BriefDescription": "This metric roughly estimates the fraction of cycles where the Data TLB (DTLB) was missed by load accesses",
911c04fcf7cSIan Rogers        "MetricExpr": "min(7 * cpu_core@DTLB_LOAD_MISSES.STLB_HIT\\,cmask\\=1@ + cpu_core@DTLB_LOAD_MISSES.WALK_ACTIVE@, max(cpu_core@CYCLE_ACTIVITY.CYCLES_MEM_ANY@ - cpu_core@MEMORY_ACTIVITY.CYCLES_L1D_MISS@, 0)) / tma_info_thread_clks",
912*17d4b192SIan Rogers        "MetricGroup": "BvMT;MemoryTLB;TopdownL4;tma_L4_group;tma_issueTLB;tma_l1_bound_group",
913ad10c920SIan Rogers        "MetricName": "tma_dtlb_load",
914ad10c920SIan Rogers        "MetricThreshold": "tma_dtlb_load > 0.1 & (tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
91552530942SIan Rogers        "PublicDescription": "This metric roughly estimates the fraction of cycles where the Data TLB (DTLB) was missed by load accesses. TLBs (Translation Look-aside Buffers) are processor caches for recently used entries out of the Page Tables that are used to map virtual- to physical-addresses by the operating system. This metric approximates the potential delay of demand loads missing the first-level data TLB (assuming worst case scenario with back to back misses to different pages). This includes hitting in the second-level TLB (STLB) as well as performing a hardware page walk on an STLB miss. Sample with: MEM_INST_RETIRED.STLB_MISS_LOADS_PS. Related metrics: tma_dtlb_store, tma_info_bottleneck_memory_data_tlbs, tma_info_bottleneck_memory_synchronization",
916ad10c920SIan Rogers        "ScaleUnit": "100%",
917ad10c920SIan Rogers        "Unit": "cpu_core"
918ad10c920SIan Rogers    },
919ad10c920SIan Rogers    {
920ad10c920SIan Rogers        "BriefDescription": "This metric roughly estimates the fraction of cycles spent handling first-level data TLB store misses",
921c04fcf7cSIan Rogers        "MetricExpr": "(7 * cpu_core@DTLB_STORE_MISSES.STLB_HIT\\,cmask\\=1@ + cpu_core@DTLB_STORE_MISSES.WALK_ACTIVE@) / tma_info_core_core_clks",
922*17d4b192SIan Rogers        "MetricGroup": "BvMT;MemoryTLB;TopdownL4;tma_L4_group;tma_issueTLB;tma_store_bound_group",
923ad10c920SIan Rogers        "MetricName": "tma_dtlb_store",
924ad10c920SIan Rogers        "MetricThreshold": "tma_dtlb_store > 0.05 & (tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
92552530942SIan Rogers        "PublicDescription": "This metric roughly estimates the fraction of cycles spent handling first-level data TLB store misses.  As with ordinary data caching; focus on improving data locality and reducing working-set size to reduce DTLB overhead.  Additionally; consider using profile-guided optimization (PGO) to collocate frequently-used data on the same page.  Try using larger page sizes for large amounts of frequently-used data. Sample with: MEM_INST_RETIRED.STLB_MISS_STORES_PS. Related metrics: tma_dtlb_load, tma_info_bottleneck_memory_data_tlbs, tma_info_bottleneck_memory_synchronization",
926ad10c920SIan Rogers        "ScaleUnit": "100%",
927ad10c920SIan Rogers        "Unit": "cpu_core"
928ad10c920SIan Rogers    },
929ad10c920SIan Rogers    {
930ad10c920SIan Rogers        "BriefDescription": "This metric roughly estimates how often CPU was handling synchronizations due to False Sharing",
93152530942SIan Rogers        "MetricExpr": "28 * tma_info_system_core_frequency * cpu_core@OCR.DEMAND_RFO.L3_HIT.SNOOP_HITM@ / tma_info_thread_clks",
932*17d4b192SIan Rogers        "MetricGroup": "BvMS;DataSharing;Offcore;Snoop;TopdownL4;tma_L4_group;tma_issueSyncxn;tma_store_bound_group",
933ad10c920SIan Rogers        "MetricName": "tma_false_sharing",
934ad10c920SIan Rogers        "MetricThreshold": "tma_false_sharing > 0.05 & (tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
935ad10c920SIan Rogers        "PublicDescription": "This metric roughly estimates how often CPU was handling synchronizations due to False Sharing. False Sharing is a multithreading hiccup; where multiple Logical Processors contend on different data-elements mapped into the same cache line. Sample with: OCR.DEMAND_RFO.L3_HIT.SNOOP_HITM. Related metrics: tma_contested_accesses, tma_data_sharing, tma_machine_clears, tma_remote_cache",
936ad10c920SIan Rogers        "ScaleUnit": "100%",
937ad10c920SIan Rogers        "Unit": "cpu_core"
938ad10c920SIan Rogers    },
939ad10c920SIan Rogers    {
940ad10c920SIan Rogers        "BriefDescription": "This metric does a *rough estimation* of how often L1D Fill Buffer unavailability limited additional L1D miss memory access requests to proceed",
941becc24e9SIan Rogers        "MetricExpr": "cpu_core@L1D_PEND_MISS.FB_FULL@ / tma_info_thread_clks",
942*17d4b192SIan Rogers        "MetricGroup": "BvMS;MemoryBW;TopdownL4;tma_L4_group;tma_issueBW;tma_issueSL;tma_issueSmSt;tma_l1_bound_group",
943ad10c920SIan Rogers        "MetricName": "tma_fb_full",
944ad10c920SIan Rogers        "MetricThreshold": "tma_fb_full > 0.3",
94552530942SIan Rogers        "PublicDescription": "This metric does a *rough estimation* of how often L1D Fill Buffer unavailability limited additional L1D miss memory access requests to proceed. The higher the metric value; the deeper the memory hierarchy level the misses are satisfied from (metric values >1 are valid). Often it hints on approaching bandwidth limits (to L2 cache; L3 cache or external memory). Related metrics: tma_info_bottleneck_cache_memory_bandwidth, tma_info_system_dram_bw_use, tma_mem_bandwidth, tma_sq_full, tma_store_latency, tma_streaming_stores",
946ad10c920SIan Rogers        "ScaleUnit": "100%",
947ad10c920SIan Rogers        "Unit": "cpu_core"
948ad10c920SIan Rogers    },
949ad10c920SIan Rogers    {
950ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of slots the CPU was stalled due to Frontend bandwidth issues",
951ad10c920SIan Rogers        "MetricExpr": "max(0, tma_frontend_bound - tma_fetch_latency)",
952ad10c920SIan Rogers        "MetricGroup": "FetchBW;Frontend;TmaL2;TopdownL2;tma_L2_group;tma_frontend_bound_group;tma_issueFB",
953ad10c920SIan Rogers        "MetricName": "tma_fetch_bandwidth",
95452530942SIan Rogers        "MetricThreshold": "tma_fetch_bandwidth > 0.2",
955ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
956*17d4b192SIan Rogers        "PublicDescription": "This metric represents fraction of slots the CPU was stalled due to Frontend bandwidth issues.  For example; inefficiencies at the instruction decoders; or restrictions for caching in the DSB (decoded uops cache) are categorized under Fetch Bandwidth. In such cases; the Frontend typically delivers suboptimal amount of uops to the Backend. Sample with: FRONTEND_RETIRED.LATENCY_GE_2_BUBBLES_GE_1_PS;FRONTEND_RETIRED.LATENCY_GE_1_PS;FRONTEND_RETIRED.LATENCY_GE_2_PS. Related metrics: tma_dsb_switches, tma_info_botlnk_l2_dsb_bandwidth, tma_info_botlnk_l2_dsb_misses, tma_info_frontend_dsb_coverage, tma_info_inst_mix_iptb, tma_lcp",
957ad10c920SIan Rogers        "ScaleUnit": "100%",
958ad10c920SIan Rogers        "Unit": "cpu_core"
959ad10c920SIan Rogers    },
960ad10c920SIan Rogers    {
961ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of slots the CPU was stalled due to Frontend latency issues",
962c04fcf7cSIan Rogers        "MetricExpr": "cpu_core@topdown\\-fetch\\-lat@ / (cpu_core@topdown\\-fe\\-bound@ + cpu_core@topdown\\-bad\\-spec@ + cpu_core@topdown\\-retiring@ + cpu_core@topdown\\-be\\-bound@) - cpu_core@INT_MISC.UOP_DROPPING@ / tma_info_thread_slots",
963ad10c920SIan Rogers        "MetricGroup": "Frontend;TmaL2;TopdownL2;tma_L2_group;tma_frontend_bound_group",
964ad10c920SIan Rogers        "MetricName": "tma_fetch_latency",
965ad10c920SIan Rogers        "MetricThreshold": "tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15",
966ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
967ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of slots the CPU was stalled due to Frontend latency issues.  For example; instruction-cache misses; iTLB misses or fetch stalls after a branch misprediction are categorized under Frontend Latency. In such cases; the Frontend eventually delivers no uops for some period. Sample with: FRONTEND_RETIRED.LATENCY_GE_16_PS;FRONTEND_RETIRED.LATENCY_GE_8_PS",
968ad10c920SIan Rogers        "ScaleUnit": "100%",
969ad10c920SIan Rogers        "Unit": "cpu_core"
970ad10c920SIan Rogers    },
971ad10c920SIan Rogers    {
972ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring instructions that that are decoder into two or up to ([SNB+] four; [ADL+] five) uops",
973ad10c920SIan Rogers        "MetricExpr": "max(0, tma_heavy_operations - tma_microcode_sequencer)",
974ad10c920SIan Rogers        "MetricGroup": "TopdownL3;tma_L3_group;tma_heavy_operations_group;tma_issueD0",
975ad10c920SIan Rogers        "MetricName": "tma_few_uops_instructions",
976ad10c920SIan Rogers        "MetricThreshold": "tma_few_uops_instructions > 0.05 & tma_heavy_operations > 0.1",
977ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of slots where the CPU was retiring instructions that that are decoder into two or up to ([SNB+] four; [ADL+] five) uops. This highly-correlates with the number of uops in such instructions. Related metrics: tma_decoder0_alone",
978ad10c920SIan Rogers        "ScaleUnit": "100%",
979ad10c920SIan Rogers        "Unit": "cpu_core"
980ad10c920SIan Rogers    },
981ad10c920SIan Rogers    {
982ad10c920SIan Rogers        "BriefDescription": "This metric represents overall arithmetic floating-point (FP) operations fraction the CPU has executed (retired)",
983ad10c920SIan Rogers        "MetricExpr": "tma_x87_use + tma_fp_scalar + tma_fp_vector",
984ad10c920SIan Rogers        "MetricGroup": "HPC;TopdownL3;tma_L3_group;tma_light_operations_group",
985ad10c920SIan Rogers        "MetricName": "tma_fp_arith",
986ad10c920SIan Rogers        "MetricThreshold": "tma_fp_arith > 0.2 & tma_light_operations > 0.6",
987ad10c920SIan Rogers        "PublicDescription": "This metric represents overall arithmetic floating-point (FP) operations fraction the CPU has executed (retired). Note this metric's value may exceed its parent due to use of \"Uops\" CountDomain and FMA double-counting.",
988ad10c920SIan Rogers        "ScaleUnit": "100%",
989ad10c920SIan Rogers        "Unit": "cpu_core"
990ad10c920SIan Rogers    },
991ad10c920SIan Rogers    {
992ad10c920SIan Rogers        "BriefDescription": "This metric roughly estimates fraction of slots the CPU retired uops as a result of handing Floating Point (FP) Assists",
993c04fcf7cSIan Rogers        "MetricExpr": "30 * cpu_core@ASSISTS.FP@ / tma_info_thread_slots",
994ad10c920SIan Rogers        "MetricGroup": "HPC;TopdownL5;tma_L5_group;tma_assists_group",
995ad10c920SIan Rogers        "MetricName": "tma_fp_assists",
996ad10c920SIan Rogers        "MetricThreshold": "tma_fp_assists > 0.1",
997ad10c920SIan Rogers        "PublicDescription": "This metric roughly estimates fraction of slots the CPU retired uops as a result of handing Floating Point (FP) Assists. FP Assist may apply when working with very small floating point values (so-called Denormals).",
998ad10c920SIan Rogers        "ScaleUnit": "100%",
999ad10c920SIan Rogers        "Unit": "cpu_core"
1000ad10c920SIan Rogers    },
1001ad10c920SIan Rogers    {
1002ad10c920SIan Rogers        "BriefDescription": "This metric approximates arithmetic floating-point (FP) scalar uops fraction the CPU has retired",
1003*17d4b192SIan Rogers        "MetricExpr": "cpu_core@FP_ARITH_INST_RETIRED.SCALAR@ / (tma_retiring * tma_info_thread_slots)",
1004ad10c920SIan Rogers        "MetricGroup": "Compute;Flops;TopdownL4;tma_L4_group;tma_fp_arith_group;tma_issue2P",
1005ad10c920SIan Rogers        "MetricName": "tma_fp_scalar",
1006ad10c920SIan Rogers        "MetricThreshold": "tma_fp_scalar > 0.1 & (tma_fp_arith > 0.2 & tma_light_operations > 0.6)",
1007ad10c920SIan Rogers        "PublicDescription": "This metric approximates arithmetic floating-point (FP) scalar uops fraction the CPU has retired. May overcount due to FMA double counting. Related metrics: tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_0, tma_port_1, tma_port_5, tma_port_6, tma_ports_utilized_2",
1008ad10c920SIan Rogers        "ScaleUnit": "100%",
1009ad10c920SIan Rogers        "Unit": "cpu_core"
1010ad10c920SIan Rogers    },
1011ad10c920SIan Rogers    {
1012ad10c920SIan Rogers        "BriefDescription": "This metric approximates arithmetic floating-point (FP) vector uops fraction the CPU has retired aggregated across all vector widths",
1013*17d4b192SIan Rogers        "MetricExpr": "cpu_core@FP_ARITH_INST_RETIRED.VECTOR@ / (tma_retiring * tma_info_thread_slots)",
1014ad10c920SIan Rogers        "MetricGroup": "Compute;Flops;TopdownL4;tma_L4_group;tma_fp_arith_group;tma_issue2P",
1015ad10c920SIan Rogers        "MetricName": "tma_fp_vector",
1016ad10c920SIan Rogers        "MetricThreshold": "tma_fp_vector > 0.1 & (tma_fp_arith > 0.2 & tma_light_operations > 0.6)",
1017ad10c920SIan Rogers        "PublicDescription": "This metric approximates arithmetic floating-point (FP) vector uops fraction the CPU has retired aggregated across all vector widths. May overcount due to FMA double counting. Related metrics: tma_fp_scalar, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_0, tma_port_1, tma_port_5, tma_port_6, tma_ports_utilized_2",
1018ad10c920SIan Rogers        "ScaleUnit": "100%",
1019ad10c920SIan Rogers        "Unit": "cpu_core"
1020ad10c920SIan Rogers    },
1021ad10c920SIan Rogers    {
1022ad10c920SIan Rogers        "BriefDescription": "This metric approximates arithmetic FP vector uops fraction the CPU has retired for 128-bit wide vectors",
1023c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE@ + cpu_core@FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE@) / (tma_retiring * tma_info_thread_slots)",
1024ad10c920SIan Rogers        "MetricGroup": "Compute;Flops;TopdownL5;tma_L5_group;tma_fp_vector_group;tma_issue2P",
1025ad10c920SIan Rogers        "MetricName": "tma_fp_vector_128b",
1026ad10c920SIan Rogers        "MetricThreshold": "tma_fp_vector_128b > 0.1 & (tma_fp_vector > 0.1 & (tma_fp_arith > 0.2 & tma_light_operations > 0.6))",
1027ad10c920SIan Rogers        "PublicDescription": "This metric approximates arithmetic FP vector uops fraction the CPU has retired for 128-bit wide vectors. May overcount due to FMA double counting. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_0, tma_port_1, tma_port_5, tma_port_6, tma_ports_utilized_2",
1028ad10c920SIan Rogers        "ScaleUnit": "100%",
1029ad10c920SIan Rogers        "Unit": "cpu_core"
1030ad10c920SIan Rogers    },
1031ad10c920SIan Rogers    {
1032ad10c920SIan Rogers        "BriefDescription": "This metric approximates arithmetic FP vector uops fraction the CPU has retired for 256-bit wide vectors",
1033c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE@ + cpu_core@FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE@) / (tma_retiring * tma_info_thread_slots)",
1034ad10c920SIan Rogers        "MetricGroup": "Compute;Flops;TopdownL5;tma_L5_group;tma_fp_vector_group;tma_issue2P",
1035ad10c920SIan Rogers        "MetricName": "tma_fp_vector_256b",
1036ad10c920SIan Rogers        "MetricThreshold": "tma_fp_vector_256b > 0.1 & (tma_fp_vector > 0.1 & (tma_fp_arith > 0.2 & tma_light_operations > 0.6))",
1037ad10c920SIan Rogers        "PublicDescription": "This metric approximates arithmetic FP vector uops fraction the CPU has retired for 256-bit wide vectors. May overcount due to FMA double counting. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_0, tma_port_1, tma_port_5, tma_port_6, tma_ports_utilized_2",
1038ad10c920SIan Rogers        "ScaleUnit": "100%",
1039ad10c920SIan Rogers        "Unit": "cpu_core"
1040ad10c920SIan Rogers    },
1041ad10c920SIan Rogers    {
1042ad10c920SIan Rogers        "BriefDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend",
1043969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL1",
1044c04fcf7cSIan Rogers        "MetricExpr": "cpu_core@topdown\\-fe\\-bound@ / (cpu_core@topdown\\-fe\\-bound@ + cpu_core@topdown\\-bad\\-spec@ + cpu_core@topdown\\-retiring@ + cpu_core@topdown\\-be\\-bound@) - cpu_core@INT_MISC.UOP_DROPPING@ / tma_info_thread_slots",
1045*17d4b192SIan Rogers        "MetricGroup": "BvFB;BvIO;Default;PGO;TmaL1;TopdownL1;tma_L1_group",
1046ad10c920SIan Rogers        "MetricName": "tma_frontend_bound",
1047ad10c920SIan Rogers        "MetricThreshold": "tma_frontend_bound > 0.15",
1048969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL1;Default",
1049ad10c920SIan Rogers        "PublicDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend. Frontend denotes the first part of the processor core responsible to fetch operations that are executed later on by the Backend part. Within the Frontend; a branch predictor predicts the next address to fetch; cache-lines are fetched from the memory subsystem; parsed into instructions; and lastly decoded into micro-operations (uops). Ideally the Frontend can issue Pipeline_Width uops every cycle to the Backend. Frontend Bound denotes unutilized issue-slots when there is no Backend stall; i.e. bubbles where Frontend delivered no uops while Backend could have accepted them. For example; stalls due to instruction-cache misses would be categorized under Frontend Bound. Sample with: FRONTEND_RETIRED.LATENCY_GE_4_PS",
1050ad10c920SIan Rogers        "ScaleUnit": "100%",
1051ad10c920SIan Rogers        "Unit": "cpu_core"
1052ad10c920SIan Rogers    },
1053ad10c920SIan Rogers    {
1054ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring fused instructions -- where one uop can represent multiple contiguous instructions",
1055c04fcf7cSIan Rogers        "MetricExpr": "tma_light_operations * cpu_core@INST_RETIRED.MACRO_FUSED@ / (tma_retiring * tma_info_thread_slots)",
1056*17d4b192SIan Rogers        "MetricGroup": "Branches;BvBO;Pipeline;TopdownL3;tma_L3_group;tma_light_operations_group",
1057ad10c920SIan Rogers        "MetricName": "tma_fused_instructions",
1058ad10c920SIan Rogers        "MetricThreshold": "tma_fused_instructions > 0.1 & tma_light_operations > 0.6",
105952530942SIan Rogers        "PublicDescription": "This metric represents fraction of slots where the CPU was retiring fused instructions -- where one uop can represent multiple contiguous instructions. CMP+JCC or DEC+JCC are common examples of legacy fusions. {([MTL] Note new MOV+OP and Load+OP fusions appear under Other_Light_Ops in MTL!)}",
1060ad10c920SIan Rogers        "ScaleUnit": "100%",
1061ad10c920SIan Rogers        "Unit": "cpu_core"
1062ad10c920SIan Rogers    },
1063ad10c920SIan Rogers    {
1064ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring heavy-weight operations -- instructions that require two or more uops or micro-coded sequences",
1065c04fcf7cSIan Rogers        "MetricExpr": "cpu_core@topdown\\-heavy\\-ops@ / (cpu_core@topdown\\-fe\\-bound@ + cpu_core@topdown\\-bad\\-spec@ + cpu_core@topdown\\-retiring@ + cpu_core@topdown\\-be\\-bound@) + 0 * tma_info_thread_slots",
1066ad10c920SIan Rogers        "MetricGroup": "Retire;TmaL2;TopdownL2;tma_L2_group;tma_retiring_group",
1067ad10c920SIan Rogers        "MetricName": "tma_heavy_operations",
1068ad10c920SIan Rogers        "MetricThreshold": "tma_heavy_operations > 0.1",
1069ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
107052530942SIan Rogers        "PublicDescription": "This metric represents fraction of slots where the CPU was retiring heavy-weight operations -- instructions that require two or more uops or micro-coded sequences. This highly-correlates with the uop length of these instructions/sequences. ([ICL+] Note this may overcount due to approximation using indirect events; [ADL+] .). Sample with: UOPS_RETIRED.HEAVY",
1071ad10c920SIan Rogers        "ScaleUnit": "100%",
1072ad10c920SIan Rogers        "Unit": "cpu_core"
1073ad10c920SIan Rogers    },
1074ad10c920SIan Rogers    {
1075ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to instruction cache misses",
1076becc24e9SIan Rogers        "MetricExpr": "cpu_core@ICACHE_DATA.STALLS@ / tma_info_thread_clks",
1077*17d4b192SIan Rogers        "MetricGroup": "BigFootprint;BvBC;FetchLat;IcMiss;TopdownL3;tma_L3_group;tma_fetch_latency_group",
1078ad10c920SIan Rogers        "MetricName": "tma_icache_misses",
1079ad10c920SIan Rogers        "MetricThreshold": "tma_icache_misses > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15)",
1080ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to instruction cache misses. Sample with: FRONTEND_RETIRED.L2_MISS_PS;FRONTEND_RETIRED.L1I_MISS_PS",
1081ad10c920SIan Rogers        "ScaleUnit": "100%",
1082ad10c920SIan Rogers        "Unit": "cpu_core"
1083ad10c920SIan Rogers    },
1084ad10c920SIan Rogers    {
1085ad10c920SIan Rogers        "BriefDescription": "Branch Misprediction Cost: Fraction of TMA slots wasted per non-speculative branch misprediction (retired JEClear)",
108652530942SIan Rogers        "MetricExpr": "tma_info_bottleneck_mispredictions * tma_info_thread_slots / cpu_core@BR_MISP_RETIRED.ALL_BRANCHES@ / 100",
1087ad10c920SIan Rogers        "MetricGroup": "Bad;BrMispredicts;tma_issueBM",
1088c04fcf7cSIan Rogers        "MetricName": "tma_info_bad_spec_branch_misprediction_cost",
1089c04fcf7cSIan Rogers        "PublicDescription": "Branch Misprediction Cost: Fraction of TMA slots wasted per non-speculative branch misprediction (retired JEClear). Related metrics: tma_branch_mispredicts, tma_info_bottleneck_mispredictions, tma_mispredicts_resteers",
1090ad10c920SIan Rogers        "Unit": "cpu_core"
1091ad10c920SIan Rogers    },
1092ad10c920SIan Rogers    {
1093c04fcf7cSIan Rogers        "BriefDescription": "Instructions per retired mispredicts for conditional non-taken branches (lower number means higher occurrence rate).",
1094*17d4b192SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@BR_MISP_RETIRED.COND_NTAKEN@",
1095c04fcf7cSIan Rogers        "MetricGroup": "Bad;BrMispredicts",
1096c04fcf7cSIan Rogers        "MetricName": "tma_info_bad_spec_ipmisp_cond_ntaken",
1097c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_bad_spec_ipmisp_cond_ntaken < 200",
1098ad10c920SIan Rogers        "Unit": "cpu_core"
1099ad10c920SIan Rogers    },
1100ad10c920SIan Rogers    {
1101c04fcf7cSIan Rogers        "BriefDescription": "Instructions per retired mispredicts for conditional taken branches (lower number means higher occurrence rate).",
1102*17d4b192SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@BR_MISP_RETIRED.COND_TAKEN@",
1103c04fcf7cSIan Rogers        "MetricGroup": "Bad;BrMispredicts",
1104c04fcf7cSIan Rogers        "MetricName": "tma_info_bad_spec_ipmisp_cond_taken",
1105c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_bad_spec_ipmisp_cond_taken < 200",
1106ad10c920SIan Rogers        "Unit": "cpu_core"
1107ad10c920SIan Rogers    },
1108ad10c920SIan Rogers    {
1109c04fcf7cSIan Rogers        "BriefDescription": "Instructions per retired mispredicts for indirect CALL or JMP branches (lower number means higher occurrence rate).",
1110*17d4b192SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@BR_MISP_RETIRED.INDIRECT@",
1111c04fcf7cSIan Rogers        "MetricGroup": "Bad;BrMispredicts",
1112c04fcf7cSIan Rogers        "MetricName": "tma_info_bad_spec_ipmisp_indirect",
1113c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_bad_spec_ipmisp_indirect < 1e3",
1114ad10c920SIan Rogers        "Unit": "cpu_core"
1115ad10c920SIan Rogers    },
1116ad10c920SIan Rogers    {
1117c04fcf7cSIan Rogers        "BriefDescription": "Instructions per retired mispredicts for return branches (lower number means higher occurrence rate).",
1118*17d4b192SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@BR_MISP_RETIRED.RET@",
1119c04fcf7cSIan Rogers        "MetricGroup": "Bad;BrMispredicts",
1120c04fcf7cSIan Rogers        "MetricName": "tma_info_bad_spec_ipmisp_ret",
1121c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_bad_spec_ipmisp_ret < 500",
1122ad10c920SIan Rogers        "Unit": "cpu_core"
1123ad10c920SIan Rogers    },
1124ad10c920SIan Rogers    {
1125c04fcf7cSIan Rogers        "BriefDescription": "Number of Instructions per non-speculative Branch Misprediction (JEClear) (lower number means higher occurrence rate)",
1126*17d4b192SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@BR_MISP_RETIRED.ALL_BRANCHES@",
1127c04fcf7cSIan Rogers        "MetricGroup": "Bad;BadSpec;BrMispredicts",
1128c04fcf7cSIan Rogers        "MetricName": "tma_info_bad_spec_ipmispredict",
1129c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_bad_spec_ipmispredict < 200",
1130ad10c920SIan Rogers        "Unit": "cpu_core"
1131ad10c920SIan Rogers    },
1132ad10c920SIan Rogers    {
113352530942SIan Rogers        "BriefDescription": "Speculative to Retired ratio of all clears (covering mispredicts and nukes)",
113452530942SIan Rogers        "MetricExpr": "cpu_core@INT_MISC.CLEARS_COUNT@ / (cpu_core@BR_MISP_RETIRED.ALL_BRANCHES@ + cpu_core@MACHINE_CLEARS.COUNT@)",
113552530942SIan Rogers        "MetricGroup": "BrMispredicts",
113652530942SIan Rogers        "MetricName": "tma_info_bad_spec_spec_clears_ratio",
113752530942SIan Rogers        "Unit": "cpu_core"
113852530942SIan Rogers    },
113952530942SIan Rogers    {
1140ad10c920SIan Rogers        "BriefDescription": "Probability of Core Bound bottleneck hidden by SMT-profiling artifacts",
1141c04fcf7cSIan Rogers        "MetricExpr": "(100 * (1 - tma_core_bound / tma_ports_utilization if tma_core_bound < tma_ports_utilization else 1) if tma_info_system_smt_2t_utilization > 0.5 else 0)",
1142ad10c920SIan Rogers        "MetricGroup": "Cor;SMT",
1143c04fcf7cSIan Rogers        "MetricName": "tma_info_botlnk_l0_core_bound_likely",
1144c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_botlnk_l0_core_bound_likely > 0.5",
1145ad10c920SIan Rogers        "Unit": "cpu_core"
1146ad10c920SIan Rogers    },
1147ad10c920SIan Rogers    {
1148*17d4b192SIan Rogers        "BriefDescription": "Total pipeline cost of DSB (uop cache) hits - subset of the Instruction_Fetch_BW Bottleneck",
1149*17d4b192SIan Rogers        "MetricExpr": "100 * (tma_frontend_bound * (tma_fetch_bandwidth / (tma_fetch_bandwidth + tma_fetch_latency)) * (tma_dsb / (tma_dsb + tma_lsd + tma_mite)))",
1150*17d4b192SIan Rogers        "MetricGroup": "DSB;FetchBW;tma_issueFB",
1151*17d4b192SIan Rogers        "MetricName": "tma_info_botlnk_l2_dsb_bandwidth",
1152*17d4b192SIan Rogers        "MetricThreshold": "tma_info_botlnk_l2_dsb_bandwidth > 10",
1153*17d4b192SIan Rogers        "PublicDescription": "Total pipeline cost of DSB (uop cache) hits - subset of the Instruction_Fetch_BW Bottleneck. Related metrics: tma_dsb_switches, tma_fetch_bandwidth, tma_info_botlnk_l2_dsb_misses, tma_info_frontend_dsb_coverage, tma_info_inst_mix_iptb, tma_lcp",
1154*17d4b192SIan Rogers        "Unit": "cpu_core"
1155*17d4b192SIan Rogers    },
1156*17d4b192SIan Rogers    {
1157ad10c920SIan Rogers        "BriefDescription": "Total pipeline cost of DSB (uop cache) misses - subset of the Instruction_Fetch_BW Bottleneck",
1158ad10c920SIan Rogers        "MetricExpr": "100 * (tma_fetch_latency * tma_dsb_switches / (tma_branch_resteers + tma_dsb_switches + tma_icache_misses + tma_itlb_misses + tma_lcp + tma_ms_switches) + tma_fetch_bandwidth * tma_mite / (tma_dsb + tma_lsd + tma_mite))",
1159ad10c920SIan Rogers        "MetricGroup": "DSBmiss;Fed;tma_issueFB",
1160c04fcf7cSIan Rogers        "MetricName": "tma_info_botlnk_l2_dsb_misses",
1161c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_botlnk_l2_dsb_misses > 10",
1162*17d4b192SIan Rogers        "PublicDescription": "Total pipeline cost of DSB (uop cache) misses - subset of the Instruction_Fetch_BW Bottleneck. Related metrics: tma_dsb_switches, tma_fetch_bandwidth, tma_info_botlnk_l2_dsb_bandwidth, tma_info_frontend_dsb_coverage, tma_info_inst_mix_iptb, tma_lcp",
1163ad10c920SIan Rogers        "Unit": "cpu_core"
1164ad10c920SIan Rogers    },
1165ad10c920SIan Rogers    {
1166ad10c920SIan Rogers        "BriefDescription": "Total pipeline cost of Instruction Cache misses - subset of the Big_Code Bottleneck",
1167ad10c920SIan Rogers        "MetricExpr": "100 * (tma_fetch_latency * tma_icache_misses / (tma_branch_resteers + tma_dsb_switches + tma_icache_misses + tma_itlb_misses + tma_lcp + tma_ms_switches))",
1168ad10c920SIan Rogers        "MetricGroup": "Fed;FetchLat;IcMiss;tma_issueFL",
1169c04fcf7cSIan Rogers        "MetricName": "tma_info_botlnk_l2_ic_misses",
1170c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_botlnk_l2_ic_misses > 5",
1171ad10c920SIan Rogers        "PublicDescription": "Total pipeline cost of Instruction Cache misses - subset of the Big_Code Bottleneck. Related metrics: ",
1172ad10c920SIan Rogers        "Unit": "cpu_core"
1173ad10c920SIan Rogers    },
1174ad10c920SIan Rogers    {
1175c04fcf7cSIan Rogers        "BriefDescription": "Total pipeline cost of instruction fetch related bottlenecks by large code footprint programs (i-side cache; TLB and BTB misses)",
1176c04fcf7cSIan Rogers        "MetricExpr": "100 * tma_fetch_latency * (tma_itlb_misses + tma_icache_misses + tma_unknown_branches) / (tma_branch_resteers + tma_dsb_switches + tma_icache_misses + tma_itlb_misses + tma_lcp + tma_ms_switches)",
1177*17d4b192SIan Rogers        "MetricGroup": "BigFootprint;BvBC;Fed;Frontend;IcMiss;MemoryTLB",
1178c04fcf7cSIan Rogers        "MetricName": "tma_info_bottleneck_big_code",
1179c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_bottleneck_big_code > 20",
1180ad10c920SIan Rogers        "Unit": "cpu_core"
1181ad10c920SIan Rogers    },
1182ad10c920SIan Rogers    {
1183*17d4b192SIan Rogers        "BriefDescription": "Total pipeline cost of instructions used for program control-flow - a subset of the Retiring category in TMA",
1184*17d4b192SIan Rogers        "MetricExpr": "100 * ((cpu_core@BR_INST_RETIRED.ALL_BRANCHES@ + 2 * cpu_core@BR_INST_RETIRED.NEAR_CALL@ + cpu_core@INST_RETIRED.NOP@) / tma_info_thread_slots)",
1185*17d4b192SIan Rogers        "MetricGroup": "BvBO;Ret",
1186c04fcf7cSIan Rogers        "MetricName": "tma_info_bottleneck_branching_overhead",
118752530942SIan Rogers        "MetricThreshold": "tma_info_bottleneck_branching_overhead > 5",
1188*17d4b192SIan Rogers        "PublicDescription": "Total pipeline cost of instructions used for program control-flow - a subset of the Retiring category in TMA. Examples include function calls; loops and alignments. (A lower bound)",
118952530942SIan Rogers        "Unit": "cpu_core"
119052530942SIan Rogers    },
119152530942SIan Rogers    {
119252530942SIan Rogers        "BriefDescription": "Total pipeline cost of external Memory- or Cache-Bandwidth related bottlenecks",
1193*17d4b192SIan Rogers        "MetricExpr": "100 * (tma_memory_bound * (tma_dram_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_store_bound)) * (tma_mem_bandwidth / (tma_mem_bandwidth + tma_mem_latency)) + tma_memory_bound * (tma_l3_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_store_bound)) * (tma_sq_full / (tma_contested_accesses + tma_data_sharing + tma_l3_hit_latency + tma_sq_full)) + tma_memory_bound * (tma_l1_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_store_bound)) * (tma_fb_full / (tma_dtlb_load + tma_fb_full + tma_l1_hit_latency + tma_lock_latency + tma_split_loads + tma_store_fwd_blk)))",
1194*17d4b192SIan Rogers        "MetricGroup": "BvMB;Mem;MemoryBW;Offcore;tma_issueBW",
119552530942SIan Rogers        "MetricName": "tma_info_bottleneck_cache_memory_bandwidth",
119652530942SIan Rogers        "MetricThreshold": "tma_info_bottleneck_cache_memory_bandwidth > 20",
119752530942SIan Rogers        "PublicDescription": "Total pipeline cost of external Memory- or Cache-Bandwidth related bottlenecks. Related metrics: tma_fb_full, tma_info_system_dram_bw_use, tma_mem_bandwidth, tma_sq_full",
119852530942SIan Rogers        "Unit": "cpu_core"
119952530942SIan Rogers    },
120052530942SIan Rogers    {
120152530942SIan Rogers        "BriefDescription": "Total pipeline cost of external Memory- or Cache-Latency related bottlenecks",
1202*17d4b192SIan Rogers        "MetricExpr": "100 * (tma_memory_bound * (tma_dram_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_store_bound)) * (tma_mem_latency / (tma_mem_bandwidth + tma_mem_latency)) + tma_memory_bound * (tma_l3_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_store_bound)) * (tma_l3_hit_latency / (tma_contested_accesses + tma_data_sharing + tma_l3_hit_latency + tma_sq_full)) + tma_memory_bound * tma_l2_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_store_bound) + tma_memory_bound * (tma_store_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_store_bound)) * (tma_store_latency / (tma_dtlb_store + tma_false_sharing + tma_split_stores + tma_store_latency + tma_streaming_stores)) + tma_memory_bound * (tma_l1_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_store_bound)) * (tma_l1_hit_latency / (tma_dtlb_load + tma_fb_full + tma_l1_hit_latency + tma_lock_latency + tma_split_loads + tma_store_fwd_blk)))",
1203*17d4b192SIan Rogers        "MetricGroup": "BvML;Mem;MemoryLat;Offcore;tma_issueLat",
120452530942SIan Rogers        "MetricName": "tma_info_bottleneck_cache_memory_latency",
120552530942SIan Rogers        "MetricThreshold": "tma_info_bottleneck_cache_memory_latency > 20",
120652530942SIan Rogers        "PublicDescription": "Total pipeline cost of external Memory- or Cache-Latency related bottlenecks. Related metrics: tma_l3_hit_latency, tma_mem_latency",
120752530942SIan Rogers        "Unit": "cpu_core"
120852530942SIan Rogers    },
120952530942SIan Rogers    {
121052530942SIan Rogers        "BriefDescription": "Total pipeline cost when the execution is compute-bound - an estimation",
121152530942SIan Rogers        "MetricExpr": "100 * (tma_core_bound * tma_divider / (tma_divider + tma_ports_utilization + tma_serializing_operation) + tma_core_bound * (tma_ports_utilization / (tma_divider + tma_ports_utilization + tma_serializing_operation)) * (tma_ports_utilized_3m / (tma_ports_utilized_0 + tma_ports_utilized_1 + tma_ports_utilized_2 + tma_ports_utilized_3m)))",
1212*17d4b192SIan Rogers        "MetricGroup": "BvCB;Cor;tma_issueComp",
121352530942SIan Rogers        "MetricName": "tma_info_bottleneck_compute_bound_est",
121452530942SIan Rogers        "MetricThreshold": "tma_info_bottleneck_compute_bound_est > 20",
121552530942SIan Rogers        "PublicDescription": "Total pipeline cost when the execution is compute-bound - an estimation. Covers Core Bound when High ILP as well as when long-latency execution units are busy. Related metrics: ",
1216ad10c920SIan Rogers        "Unit": "cpu_core"
1217ad10c920SIan Rogers    },
1218ad10c920SIan Rogers    {
1219*17d4b192SIan Rogers        "BriefDescription": "Total pipeline cost of instruction fetch bandwidth related bottlenecks (when the front-end could not sustain operations delivery to the back-end)",
122052530942SIan Rogers        "MetricExpr": "100 * (tma_frontend_bound - (1 - 10 * tma_microcode_sequencer * tma_other_mispredicts / tma_branch_mispredicts) * tma_fetch_latency * tma_mispredicts_resteers / (tma_branch_resteers + tma_dsb_switches + tma_icache_misses + tma_itlb_misses + tma_lcp + tma_ms_switches) - (1 - cpu_core@INST_RETIRED.REP_ITERATION@ / cpu_core@UOPS_RETIRED.MS\\,cmask\\=1@) * (tma_fetch_latency * (tma_ms_switches + tma_branch_resteers * (tma_clears_resteers + tma_mispredicts_resteers * tma_other_mispredicts / tma_branch_mispredicts) / (tma_clears_resteers + tma_mispredicts_resteers + tma_unknown_branches)) / (tma_branch_resteers + tma_dsb_switches + tma_icache_misses + tma_itlb_misses + tma_lcp + tma_ms_switches))) - tma_info_bottleneck_big_code",
1221*17d4b192SIan Rogers        "MetricGroup": "BvFB;Fed;FetchBW;Frontend",
1222c04fcf7cSIan Rogers        "MetricName": "tma_info_bottleneck_instruction_fetch_bw",
1223c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_bottleneck_instruction_fetch_bw > 20",
1224ad10c920SIan Rogers        "Unit": "cpu_core"
1225ad10c920SIan Rogers    },
1226ad10c920SIan Rogers    {
122752530942SIan Rogers        "BriefDescription": "Total pipeline cost of irregular execution (e.g",
122852530942SIan Rogers        "MetricExpr": "100 * ((1 - cpu_core@INST_RETIRED.REP_ITERATION@ / cpu_core@UOPS_RETIRED.MS\\,cmask\\=1@) * (tma_fetch_latency * (tma_ms_switches + tma_branch_resteers * (tma_clears_resteers + tma_mispredicts_resteers * tma_other_mispredicts / tma_branch_mispredicts) / (tma_clears_resteers + tma_mispredicts_resteers + tma_unknown_branches)) / (tma_branch_resteers + tma_dsb_switches + tma_icache_misses + tma_itlb_misses + tma_lcp + tma_ms_switches)) + 10 * tma_microcode_sequencer * tma_other_mispredicts / tma_branch_mispredicts * tma_branch_mispredicts + tma_machine_clears * tma_other_nukes / tma_other_nukes + tma_core_bound * (tma_serializing_operation + cpu_core@RS.EMPTY\\,umask\\=1@ / tma_info_thread_clks * tma_ports_utilized_0) / (tma_divider + tma_ports_utilization + tma_serializing_operation) + tma_microcode_sequencer / (tma_few_uops_instructions + tma_microcode_sequencer) * (tma_assists / tma_microcode_sequencer) * tma_heavy_operations)",
1229*17d4b192SIan Rogers        "MetricGroup": "Bad;BvIO;Cor;Ret;tma_issueMS",
123052530942SIan Rogers        "MetricName": "tma_info_bottleneck_irregular_overhead",
123152530942SIan Rogers        "MetricThreshold": "tma_info_bottleneck_irregular_overhead > 10",
123252530942SIan Rogers        "PublicDescription": "Total pipeline cost of irregular execution (e.g. FP-assists in HPC, Wait time with work imbalance multithreaded workloads, overhead in system services or virtualized environments). Related metrics: tma_microcode_sequencer, tma_ms_switches",
1233ad10c920SIan Rogers        "Unit": "cpu_core"
1234ad10c920SIan Rogers    },
1235ad10c920SIan Rogers    {
1236ad10c920SIan Rogers        "BriefDescription": "Total pipeline cost of Memory Address Translation related bottlenecks (data-side TLBs)",
1237*17d4b192SIan Rogers        "MetricExpr": "100 * (tma_memory_bound * (tma_l1_bound / max(tma_memory_bound, tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_store_bound)) * (tma_dtlb_load / max(tma_l1_bound, tma_dtlb_load + tma_fb_full + tma_l1_hit_latency + tma_lock_latency + tma_split_loads + tma_store_fwd_blk)) + tma_memory_bound * (tma_store_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_store_bound)) * (tma_dtlb_store / (tma_dtlb_store + tma_false_sharing + tma_split_stores + tma_store_latency + tma_streaming_stores)))",
1238*17d4b192SIan Rogers        "MetricGroup": "BvMT;Mem;MemoryTLB;Offcore;tma_issueTLB",
1239c04fcf7cSIan Rogers        "MetricName": "tma_info_bottleneck_memory_data_tlbs",
1240c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_bottleneck_memory_data_tlbs > 20",
124152530942SIan Rogers        "PublicDescription": "Total pipeline cost of Memory Address Translation related bottlenecks (data-side TLBs). Related metrics: tma_dtlb_load, tma_dtlb_store, tma_info_bottleneck_memory_synchronization",
1242ad10c920SIan Rogers        "Unit": "cpu_core"
1243ad10c920SIan Rogers    },
1244ad10c920SIan Rogers    {
124552530942SIan Rogers        "BriefDescription": "Total pipeline cost of Memory Synchronization related bottlenecks (data transfers and coherency updates across processors)",
124652530942SIan Rogers        "MetricExpr": "100 * (tma_memory_bound * (tma_l3_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_store_bound) * (tma_contested_accesses + tma_data_sharing) / (tma_contested_accesses + tma_data_sharing + tma_l3_hit_latency + tma_sq_full) + tma_store_bound / (tma_dram_bound + tma_l1_bound + tma_l2_bound + tma_l3_bound + tma_store_bound) * tma_false_sharing / (tma_dtlb_store + tma_false_sharing + tma_split_stores + tma_store_latency + tma_streaming_stores - tma_store_latency)) + tma_machine_clears * (1 - tma_other_nukes / tma_other_nukes))",
1247*17d4b192SIan Rogers        "MetricGroup": "BvMS;Mem;Offcore;tma_issueTLB",
124852530942SIan Rogers        "MetricName": "tma_info_bottleneck_memory_synchronization",
124952530942SIan Rogers        "MetricThreshold": "tma_info_bottleneck_memory_synchronization > 10",
125052530942SIan Rogers        "PublicDescription": "Total pipeline cost of Memory Synchronization related bottlenecks (data transfers and coherency updates across processors). Related metrics: tma_dtlb_load, tma_dtlb_store, tma_info_bottleneck_memory_data_tlbs",
1251ad10c920SIan Rogers        "Unit": "cpu_core"
1252ad10c920SIan Rogers    },
1253ad10c920SIan Rogers    {
1254ad10c920SIan Rogers        "BriefDescription": "Total pipeline cost of Branch Misprediction related bottlenecks",
125552530942SIan Rogers        "MetricExpr": "100 * (1 - 10 * tma_microcode_sequencer * tma_other_mispredicts / tma_branch_mispredicts) * (tma_branch_mispredicts + tma_fetch_latency * tma_mispredicts_resteers / (tma_branch_resteers + tma_dsb_switches + tma_icache_misses + tma_itlb_misses + tma_lcp + tma_ms_switches))",
1256*17d4b192SIan Rogers        "MetricGroup": "Bad;BadSpec;BrMispredicts;BvMP;tma_issueBM",
1257c04fcf7cSIan Rogers        "MetricName": "tma_info_bottleneck_mispredictions",
1258c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_bottleneck_mispredictions > 20",
1259c04fcf7cSIan Rogers        "PublicDescription": "Total pipeline cost of Branch Misprediction related bottlenecks. Related metrics: tma_branch_mispredicts, tma_info_bad_spec_branch_misprediction_cost, tma_mispredicts_resteers",
1260c04fcf7cSIan Rogers        "Unit": "cpu_core"
1261c04fcf7cSIan Rogers    },
1262c04fcf7cSIan Rogers    {
1263*17d4b192SIan Rogers        "BriefDescription": "Total pipeline cost of remaining bottlenecks in the back-end",
1264*17d4b192SIan Rogers        "MetricExpr": "100 - (tma_info_bottleneck_big_code + tma_info_bottleneck_instruction_fetch_bw + tma_info_bottleneck_mispredictions + tma_info_bottleneck_cache_memory_bandwidth + tma_info_bottleneck_cache_memory_latency + tma_info_bottleneck_memory_data_tlbs + tma_info_bottleneck_memory_synchronization + tma_info_bottleneck_compute_bound_est + tma_info_bottleneck_irregular_overhead + tma_info_bottleneck_branching_overhead + tma_info_bottleneck_useful_work)",
1265*17d4b192SIan Rogers        "MetricGroup": "BvOB;Cor;Offcore",
126652530942SIan Rogers        "MetricName": "tma_info_bottleneck_other_bottlenecks",
126752530942SIan Rogers        "MetricThreshold": "tma_info_bottleneck_other_bottlenecks > 20",
1268*17d4b192SIan Rogers        "PublicDescription": "Total pipeline cost of remaining bottlenecks in the back-end. Examples include data-dependencies (Core Bound when Low ILP) and other unlisted memory-related stalls.",
1269*17d4b192SIan Rogers        "Unit": "cpu_core"
1270*17d4b192SIan Rogers    },
1271*17d4b192SIan Rogers    {
1272*17d4b192SIan Rogers        "BriefDescription": "Total pipeline cost of \"useful operations\" - the portion of Retiring category not covered by Branching_Overhead nor Irregular_Overhead.",
1273*17d4b192SIan Rogers        "MetricExpr": "100 * (tma_retiring - (cpu_core@BR_INST_RETIRED.ALL_BRANCHES@ + 2 * cpu_core@BR_INST_RETIRED.NEAR_CALL@ + cpu_core@INST_RETIRED.NOP@) / tma_info_thread_slots - tma_microcode_sequencer / (tma_few_uops_instructions + tma_microcode_sequencer) * (tma_assists / tma_microcode_sequencer) * tma_heavy_operations)",
1274*17d4b192SIan Rogers        "MetricGroup": "BvUW;Ret",
1275*17d4b192SIan Rogers        "MetricName": "tma_info_bottleneck_useful_work",
1276*17d4b192SIan Rogers        "MetricThreshold": "tma_info_bottleneck_useful_work > 20",
127752530942SIan Rogers        "Unit": "cpu_core"
127852530942SIan Rogers    },
127952530942SIan Rogers    {
1280c04fcf7cSIan Rogers        "BriefDescription": "Fraction of branches that are CALL or RET",
1281*17d4b192SIan Rogers        "MetricExpr": "(cpu_core@BR_INST_RETIRED.NEAR_CALL@ + cpu_core@BR_INST_RETIRED.NEAR_RETURN@) / cpu_core@BR_INST_RETIRED.ALL_BRANCHES@",
1282c04fcf7cSIan Rogers        "MetricGroup": "Bad;Branches",
1283c04fcf7cSIan Rogers        "MetricName": "tma_info_branches_callret",
1284c04fcf7cSIan Rogers        "Unit": "cpu_core"
1285c04fcf7cSIan Rogers    },
1286c04fcf7cSIan Rogers    {
1287c04fcf7cSIan Rogers        "BriefDescription": "Fraction of branches that are non-taken conditionals",
1288*17d4b192SIan Rogers        "MetricExpr": "cpu_core@BR_INST_RETIRED.COND_NTAKEN@ / cpu_core@BR_INST_RETIRED.ALL_BRANCHES@",
1289c04fcf7cSIan Rogers        "MetricGroup": "Bad;Branches;CodeGen;PGO",
1290c04fcf7cSIan Rogers        "MetricName": "tma_info_branches_cond_nt",
1291c04fcf7cSIan Rogers        "Unit": "cpu_core"
1292c04fcf7cSIan Rogers    },
1293c04fcf7cSIan Rogers    {
1294c04fcf7cSIan Rogers        "BriefDescription": "Fraction of branches that are taken conditionals",
1295*17d4b192SIan Rogers        "MetricExpr": "cpu_core@BR_INST_RETIRED.COND_TAKEN@ / cpu_core@BR_INST_RETIRED.ALL_BRANCHES@",
1296c04fcf7cSIan Rogers        "MetricGroup": "Bad;Branches;CodeGen;PGO",
1297c04fcf7cSIan Rogers        "MetricName": "tma_info_branches_cond_tk",
1298c04fcf7cSIan Rogers        "Unit": "cpu_core"
1299c04fcf7cSIan Rogers    },
1300c04fcf7cSIan Rogers    {
1301c04fcf7cSIan Rogers        "BriefDescription": "Fraction of branches that are unconditional (direct or indirect) jumps",
1302*17d4b192SIan Rogers        "MetricExpr": "(cpu_core@BR_INST_RETIRED.NEAR_TAKEN@ - cpu_core@BR_INST_RETIRED.COND_TAKEN@ - 2 * cpu_core@BR_INST_RETIRED.NEAR_CALL@) / cpu_core@BR_INST_RETIRED.ALL_BRANCHES@",
1303c04fcf7cSIan Rogers        "MetricGroup": "Bad;Branches",
1304c04fcf7cSIan Rogers        "MetricName": "tma_info_branches_jump",
1305c04fcf7cSIan Rogers        "Unit": "cpu_core"
1306c04fcf7cSIan Rogers    },
1307c04fcf7cSIan Rogers    {
1308c04fcf7cSIan Rogers        "BriefDescription": "Fraction of branches of other types (not individually covered by other metrics in Info.Branches group)",
1309c04fcf7cSIan Rogers        "MetricExpr": "1 - (tma_info_branches_cond_nt + tma_info_branches_cond_tk + tma_info_branches_callret + tma_info_branches_jump)",
1310c04fcf7cSIan Rogers        "MetricGroup": "Bad;Branches",
1311c04fcf7cSIan Rogers        "MetricName": "tma_info_branches_other_branches",
1312c04fcf7cSIan Rogers        "Unit": "cpu_core"
1313c04fcf7cSIan Rogers    },
1314c04fcf7cSIan Rogers    {
1315c04fcf7cSIan Rogers        "BriefDescription": "Core actual clocks when any Logical Processor is active on the Physical Core",
131652530942SIan Rogers        "MetricExpr": "(cpu_core@CPU_CLK_UNHALTED.DISTRIBUTED@ if #SMT_on else tma_info_thread_clks)",
1317c04fcf7cSIan Rogers        "MetricGroup": "SMT",
1318c04fcf7cSIan Rogers        "MetricName": "tma_info_core_core_clks",
1319c04fcf7cSIan Rogers        "Unit": "cpu_core"
1320c04fcf7cSIan Rogers    },
1321c04fcf7cSIan Rogers    {
1322c04fcf7cSIan Rogers        "BriefDescription": "Instructions Per Cycle across hyper-threads (per physical core)",
1323becc24e9SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / tma_info_core_core_clks",
1324c04fcf7cSIan Rogers        "MetricGroup": "Ret;SMT;TmaL1;tma_L1_group",
1325c04fcf7cSIan Rogers        "MetricName": "tma_info_core_coreipc",
1326c04fcf7cSIan Rogers        "Unit": "cpu_core"
1327c04fcf7cSIan Rogers    },
1328c04fcf7cSIan Rogers    {
132952530942SIan Rogers        "BriefDescription": "uops Executed per Cycle",
133052530942SIan Rogers        "MetricExpr": "cpu_core@UOPS_EXECUTED.THREAD@ / tma_info_thread_clks",
133152530942SIan Rogers        "MetricGroup": "Power",
133252530942SIan Rogers        "MetricName": "tma_info_core_epc",
133352530942SIan Rogers        "Unit": "cpu_core"
133452530942SIan Rogers    },
133552530942SIan Rogers    {
1336c04fcf7cSIan Rogers        "BriefDescription": "Floating Point Operations Per Cycle",
133752530942SIan Rogers        "MetricExpr": "(cpu_core@FP_ARITH_INST_RETIRED.SCALAR@ + 2 * cpu_core@FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE@ + 4 * cpu_core@FP_ARITH_INST_RETIRED.4_FLOPS@ + 8 * cpu_core@FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE@) / tma_info_core_core_clks",
1338c04fcf7cSIan Rogers        "MetricGroup": "Flops;Ret",
1339c04fcf7cSIan Rogers        "MetricName": "tma_info_core_flopc",
1340c04fcf7cSIan Rogers        "Unit": "cpu_core"
1341c04fcf7cSIan Rogers    },
1342c04fcf7cSIan Rogers    {
1343c04fcf7cSIan Rogers        "BriefDescription": "Actual per-core usage of the Floating Point non-X87 execution units (regardless of precision or vector-width)",
1344c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@FP_ARITH_DISPATCHED.PORT_0@ + cpu_core@FP_ARITH_DISPATCHED.PORT_1@ + cpu_core@FP_ARITH_DISPATCHED.PORT_5@) / (2 * tma_info_core_core_clks)",
1345c04fcf7cSIan Rogers        "MetricGroup": "Cor;Flops;HPC",
1346c04fcf7cSIan Rogers        "MetricName": "tma_info_core_fp_arith_utilization",
1347c04fcf7cSIan Rogers        "PublicDescription": "Actual per-core usage of the Floating Point non-X87 execution units (regardless of precision or vector-width). Values > 1 are possible due to ([BDW+] Fused-Multiply Add (FMA) counting - common; [ADL+] use all of ADD/MUL/FMA in Scalar or 128/256-bit vectors - less common).",
1348c04fcf7cSIan Rogers        "Unit": "cpu_core"
1349c04fcf7cSIan Rogers    },
1350c04fcf7cSIan Rogers    {
135152530942SIan Rogers        "BriefDescription": "Instruction-Level-Parallelism (average number of uops executed when there is execution) per thread (logical-processor)",
135252530942SIan Rogers        "MetricExpr": "cpu_core@UOPS_EXECUTED.THREAD@ / cpu_core@UOPS_EXECUTED.THREAD\\,cmask\\=1@",
1353c04fcf7cSIan Rogers        "MetricGroup": "Backend;Cor;Pipeline;PortsUtil",
1354c04fcf7cSIan Rogers        "MetricName": "tma_info_core_ilp",
1355c04fcf7cSIan Rogers        "Unit": "cpu_core"
1356c04fcf7cSIan Rogers    },
1357c04fcf7cSIan Rogers    {
1358c04fcf7cSIan Rogers        "BriefDescription": "Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache)",
1359becc24e9SIan Rogers        "MetricExpr": "cpu_core@IDQ.DSB_UOPS@ / cpu_core@UOPS_ISSUED.ANY@",
1360c04fcf7cSIan Rogers        "MetricGroup": "DSB;Fed;FetchBW;tma_issueFB",
1361c04fcf7cSIan Rogers        "MetricName": "tma_info_frontend_dsb_coverage",
1362c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_frontend_dsb_coverage < 0.7 & tma_info_thread_ipc / 6 > 0.35",
1363*17d4b192SIan Rogers        "PublicDescription": "Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache). Related metrics: tma_dsb_switches, tma_fetch_bandwidth, tma_info_botlnk_l2_dsb_bandwidth, tma_info_botlnk_l2_dsb_misses, tma_info_inst_mix_iptb, tma_lcp",
1364c04fcf7cSIan Rogers        "Unit": "cpu_core"
1365c04fcf7cSIan Rogers    },
1366c04fcf7cSIan Rogers    {
1367c04fcf7cSIan Rogers        "BriefDescription": "Average number of cycles of a switch from the DSB fetch-unit to MITE fetch unit - see DSB_Switches tree node for details.",
1368becc24e9SIan Rogers        "MetricExpr": "cpu_core@DSB2MITE_SWITCHES.PENALTY_CYCLES@ / cpu_core@DSB2MITE_SWITCHES.PENALTY_CYCLES\\,cmask\\=1\\,edge@",
1369c04fcf7cSIan Rogers        "MetricGroup": "DSBmiss",
1370c04fcf7cSIan Rogers        "MetricName": "tma_info_frontend_dsb_switch_cost",
1371c04fcf7cSIan Rogers        "Unit": "cpu_core"
1372c04fcf7cSIan Rogers    },
1373c04fcf7cSIan Rogers    {
1374c04fcf7cSIan Rogers        "BriefDescription": "Average number of Uops issued by front-end when it issued something",
1375becc24e9SIan Rogers        "MetricExpr": "cpu_core@UOPS_ISSUED.ANY@ / cpu_core@UOPS_ISSUED.ANY\\,cmask\\=1@",
1376c04fcf7cSIan Rogers        "MetricGroup": "Fed;FetchBW",
1377c04fcf7cSIan Rogers        "MetricName": "tma_info_frontend_fetch_upc",
1378c04fcf7cSIan Rogers        "Unit": "cpu_core"
1379c04fcf7cSIan Rogers    },
1380c04fcf7cSIan Rogers    {
1381c04fcf7cSIan Rogers        "BriefDescription": "Average Latency for L1 instruction cache misses",
1382becc24e9SIan Rogers        "MetricExpr": "cpu_core@ICACHE_DATA.STALLS@ / cpu_core@ICACHE_DATA.STALLS\\,cmask\\=1\\,edge@",
1383c04fcf7cSIan Rogers        "MetricGroup": "Fed;FetchLat;IcMiss",
1384c04fcf7cSIan Rogers        "MetricName": "tma_info_frontend_icache_miss_latency",
1385c04fcf7cSIan Rogers        "Unit": "cpu_core"
1386c04fcf7cSIan Rogers    },
1387c04fcf7cSIan Rogers    {
1388c04fcf7cSIan Rogers        "BriefDescription": "Instructions per non-speculative DSB miss (lower number means higher occurrence rate)",
1389*17d4b192SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@FRONTEND_RETIRED.ANY_DSB_MISS@",
1390c04fcf7cSIan Rogers        "MetricGroup": "DSBmiss;Fed",
1391c04fcf7cSIan Rogers        "MetricName": "tma_info_frontend_ipdsb_miss_ret",
1392c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_frontend_ipdsb_miss_ret < 50",
1393c04fcf7cSIan Rogers        "Unit": "cpu_core"
1394c04fcf7cSIan Rogers    },
1395c04fcf7cSIan Rogers    {
1396c04fcf7cSIan Rogers        "BriefDescription": "Instructions per speculative Unknown Branch Misprediction (BAClear) (lower number means higher occurrence rate)",
1397*17d4b192SIan Rogers        "MetricExpr": "tma_info_inst_mix_instructions / cpu_core@BACLEARS.ANY@",
1398c04fcf7cSIan Rogers        "MetricGroup": "Fed",
1399c04fcf7cSIan Rogers        "MetricName": "tma_info_frontend_ipunknown_branch",
1400c04fcf7cSIan Rogers        "Unit": "cpu_core"
1401c04fcf7cSIan Rogers    },
1402c04fcf7cSIan Rogers    {
1403c04fcf7cSIan Rogers        "BriefDescription": "L2 cache true code cacheline misses per kilo instruction",
1404*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@FRONTEND_RETIRED.L2_MISS@ / cpu_core@INST_RETIRED.ANY@",
1405c04fcf7cSIan Rogers        "MetricGroup": "IcMiss",
1406c04fcf7cSIan Rogers        "MetricName": "tma_info_frontend_l2mpki_code",
1407c04fcf7cSIan Rogers        "Unit": "cpu_core"
1408c04fcf7cSIan Rogers    },
1409c04fcf7cSIan Rogers    {
1410c04fcf7cSIan Rogers        "BriefDescription": "L2 cache speculative code cacheline misses per kilo instruction",
1411*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@L2_RQSTS.CODE_RD_MISS@ / cpu_core@INST_RETIRED.ANY@",
1412c04fcf7cSIan Rogers        "MetricGroup": "IcMiss",
1413c04fcf7cSIan Rogers        "MetricName": "tma_info_frontend_l2mpki_code_all",
1414c04fcf7cSIan Rogers        "Unit": "cpu_core"
1415c04fcf7cSIan Rogers    },
1416c04fcf7cSIan Rogers    {
1417c04fcf7cSIan Rogers        "BriefDescription": "Fraction of Uops delivered by the LSD (Loop Stream Detector; aka Loop Cache)",
1418becc24e9SIan Rogers        "MetricExpr": "cpu_core@LSD.UOPS@ / cpu_core@UOPS_ISSUED.ANY@",
1419c04fcf7cSIan Rogers        "MetricGroup": "Fed;LSD",
1420c04fcf7cSIan Rogers        "MetricName": "tma_info_frontend_lsd_coverage",
1421c04fcf7cSIan Rogers        "Unit": "cpu_core"
1422c04fcf7cSIan Rogers    },
1423c04fcf7cSIan Rogers    {
142452530942SIan Rogers        "BriefDescription": "Average number of cycles the front-end was delayed due to an Unknown Branch detection",
142552530942SIan Rogers        "MetricExpr": "cpu_core@INT_MISC.UNKNOWN_BRANCH_CYCLES@ / cpu_core@INT_MISC.UNKNOWN_BRANCH_CYCLES\\,cmask\\=1\\,edge@",
142652530942SIan Rogers        "MetricGroup": "Fed",
142752530942SIan Rogers        "MetricName": "tma_info_frontend_unknown_branch_cost",
142852530942SIan Rogers        "PublicDescription": "Average number of cycles the front-end was delayed due to an Unknown Branch detection. See Unknown_Branches node.",
142952530942SIan Rogers        "Unit": "cpu_core"
143052530942SIan Rogers    },
143152530942SIan Rogers    {
1432c04fcf7cSIan Rogers        "BriefDescription": "Branch instructions per taken branch.",
1433*17d4b192SIan Rogers        "MetricExpr": "cpu_core@BR_INST_RETIRED.ALL_BRANCHES@ / cpu_core@BR_INST_RETIRED.NEAR_TAKEN@",
1434c04fcf7cSIan Rogers        "MetricGroup": "Branches;Fed;PGO",
1435c04fcf7cSIan Rogers        "MetricName": "tma_info_inst_mix_bptkbranch",
1436c04fcf7cSIan Rogers        "Unit": "cpu_core"
1437c04fcf7cSIan Rogers    },
1438c04fcf7cSIan Rogers    {
1439c04fcf7cSIan Rogers        "BriefDescription": "Total number of retired Instructions",
1440c04fcf7cSIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@",
1441c04fcf7cSIan Rogers        "MetricGroup": "Summary;TmaL1;tma_L1_group",
1442c04fcf7cSIan Rogers        "MetricName": "tma_info_inst_mix_instructions",
1443c04fcf7cSIan Rogers        "PublicDescription": "Total number of retired Instructions. Sample with: INST_RETIRED.PREC_DIST",
1444c04fcf7cSIan Rogers        "Unit": "cpu_core"
1445c04fcf7cSIan Rogers    },
1446c04fcf7cSIan Rogers    {
1447c04fcf7cSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic instruction (lower number means higher occurrence rate)",
1448*17d4b192SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / (cpu_core@FP_ARITH_INST_RETIRED.SCALAR@ + cpu_core@FP_ARITH_INST_RETIRED.VECTOR@)",
1449c04fcf7cSIan Rogers        "MetricGroup": "Flops;InsType",
1450c04fcf7cSIan Rogers        "MetricName": "tma_info_inst_mix_iparith",
1451c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_inst_mix_iparith < 10",
145252530942SIan Rogers        "PublicDescription": "Instructions per FP Arithmetic instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting. Approximated prior to BDW.",
1453c04fcf7cSIan Rogers        "Unit": "cpu_core"
1454c04fcf7cSIan Rogers    },
1455c04fcf7cSIan Rogers    {
1456c04fcf7cSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic AVX/SSE 128-bit instruction (lower number means higher occurrence rate)",
1457becc24e9SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / (cpu_core@FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE@ + cpu_core@FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE@)",
1458c04fcf7cSIan Rogers        "MetricGroup": "Flops;FpVector;InsType",
1459c04fcf7cSIan Rogers        "MetricName": "tma_info_inst_mix_iparith_avx128",
1460c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_inst_mix_iparith_avx128 < 10",
146152530942SIan Rogers        "PublicDescription": "Instructions per FP Arithmetic AVX/SSE 128-bit instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting.",
1462c04fcf7cSIan Rogers        "Unit": "cpu_core"
1463c04fcf7cSIan Rogers    },
1464c04fcf7cSIan Rogers    {
1465c04fcf7cSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic AVX* 256-bit instruction (lower number means higher occurrence rate)",
1466becc24e9SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / (cpu_core@FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE@ + cpu_core@FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE@)",
1467c04fcf7cSIan Rogers        "MetricGroup": "Flops;FpVector;InsType",
1468c04fcf7cSIan Rogers        "MetricName": "tma_info_inst_mix_iparith_avx256",
1469c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_inst_mix_iparith_avx256 < 10",
147052530942SIan Rogers        "PublicDescription": "Instructions per FP Arithmetic AVX* 256-bit instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting.",
1471c04fcf7cSIan Rogers        "Unit": "cpu_core"
1472c04fcf7cSIan Rogers    },
1473c04fcf7cSIan Rogers    {
1474c04fcf7cSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic Scalar Double-Precision instruction (lower number means higher occurrence rate)",
1475*17d4b192SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@FP_ARITH_INST_RETIRED.SCALAR_DOUBLE@",
1476c04fcf7cSIan Rogers        "MetricGroup": "Flops;FpScalar;InsType",
1477c04fcf7cSIan Rogers        "MetricName": "tma_info_inst_mix_iparith_scalar_dp",
1478c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_inst_mix_iparith_scalar_dp < 10",
147952530942SIan Rogers        "PublicDescription": "Instructions per FP Arithmetic Scalar Double-Precision instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting.",
1480c04fcf7cSIan Rogers        "Unit": "cpu_core"
1481c04fcf7cSIan Rogers    },
1482c04fcf7cSIan Rogers    {
1483c04fcf7cSIan Rogers        "BriefDescription": "Instructions per FP Arithmetic Scalar Single-Precision instruction (lower number means higher occurrence rate)",
1484*17d4b192SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@FP_ARITH_INST_RETIRED.SCALAR_SINGLE@",
1485c04fcf7cSIan Rogers        "MetricGroup": "Flops;FpScalar;InsType",
1486c04fcf7cSIan Rogers        "MetricName": "tma_info_inst_mix_iparith_scalar_sp",
1487c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_inst_mix_iparith_scalar_sp < 10",
148852530942SIan Rogers        "PublicDescription": "Instructions per FP Arithmetic Scalar Single-Precision instruction (lower number means higher occurrence rate). Values < 1 are possible due to intentional FMA double counting.",
1489c04fcf7cSIan Rogers        "Unit": "cpu_core"
1490c04fcf7cSIan Rogers    },
1491c04fcf7cSIan Rogers    {
1492c04fcf7cSIan Rogers        "BriefDescription": "Instructions per Branch (lower number means higher occurrence rate)",
1493*17d4b192SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@BR_INST_RETIRED.ALL_BRANCHES@",
1494c04fcf7cSIan Rogers        "MetricGroup": "Branches;Fed;InsType",
1495c04fcf7cSIan Rogers        "MetricName": "tma_info_inst_mix_ipbranch",
1496c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_inst_mix_ipbranch < 8",
1497c04fcf7cSIan Rogers        "Unit": "cpu_core"
1498c04fcf7cSIan Rogers    },
1499c04fcf7cSIan Rogers    {
1500c04fcf7cSIan Rogers        "BriefDescription": "Instructions per (near) call (lower number means higher occurrence rate)",
1501*17d4b192SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@BR_INST_RETIRED.NEAR_CALL@",
1502c04fcf7cSIan Rogers        "MetricGroup": "Branches;Fed;PGO",
1503c04fcf7cSIan Rogers        "MetricName": "tma_info_inst_mix_ipcall",
1504c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_inst_mix_ipcall < 200",
1505c04fcf7cSIan Rogers        "Unit": "cpu_core"
1506c04fcf7cSIan Rogers    },
1507c04fcf7cSIan Rogers    {
1508c04fcf7cSIan Rogers        "BriefDescription": "Instructions per Floating Point (FP) Operation (lower number means higher occurrence rate)",
150952530942SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / (cpu_core@FP_ARITH_INST_RETIRED.SCALAR@ + 2 * cpu_core@FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE@ + 4 * cpu_core@FP_ARITH_INST_RETIRED.4_FLOPS@ + 8 * cpu_core@FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE@)",
1510c04fcf7cSIan Rogers        "MetricGroup": "Flops;InsType",
1511c04fcf7cSIan Rogers        "MetricName": "tma_info_inst_mix_ipflop",
1512c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_inst_mix_ipflop < 10",
1513c04fcf7cSIan Rogers        "Unit": "cpu_core"
1514c04fcf7cSIan Rogers    },
1515c04fcf7cSIan Rogers    {
1516c04fcf7cSIan Rogers        "BriefDescription": "Instructions per Load (lower number means higher occurrence rate)",
1517*17d4b192SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@MEM_INST_RETIRED.ALL_LOADS@",
1518c04fcf7cSIan Rogers        "MetricGroup": "InsType",
1519c04fcf7cSIan Rogers        "MetricName": "tma_info_inst_mix_ipload",
1520c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_inst_mix_ipload < 3",
1521c04fcf7cSIan Rogers        "Unit": "cpu_core"
1522c04fcf7cSIan Rogers    },
1523c04fcf7cSIan Rogers    {
152452530942SIan Rogers        "BriefDescription": "Instructions per PAUSE (lower number means higher occurrence rate)",
1525*17d4b192SIan Rogers        "MetricExpr": "tma_info_inst_mix_instructions / cpu_core@CPU_CLK_UNHALTED.PAUSE_INST@",
152652530942SIan Rogers        "MetricGroup": "Flops;FpVector;InsType",
152752530942SIan Rogers        "MetricName": "tma_info_inst_mix_ippause",
152852530942SIan Rogers        "Unit": "cpu_core"
152952530942SIan Rogers    },
153052530942SIan Rogers    {
1531c04fcf7cSIan Rogers        "BriefDescription": "Instructions per Store (lower number means higher occurrence rate)",
1532*17d4b192SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@MEM_INST_RETIRED.ALL_STORES@",
1533c04fcf7cSIan Rogers        "MetricGroup": "InsType",
1534c04fcf7cSIan Rogers        "MetricName": "tma_info_inst_mix_ipstore",
1535c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_inst_mix_ipstore < 8",
1536c04fcf7cSIan Rogers        "Unit": "cpu_core"
1537c04fcf7cSIan Rogers    },
1538c04fcf7cSIan Rogers    {
1539c04fcf7cSIan Rogers        "BriefDescription": "Instructions per Software prefetch instruction (of any type: NTA/T0/T1/T2/Prefetch) (lower number means higher occurrence rate)",
1540becc24e9SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@SW_PREFETCH_ACCESS.T0\\,umask\\=0xF@",
1541c04fcf7cSIan Rogers        "MetricGroup": "Prefetches",
1542c04fcf7cSIan Rogers        "MetricName": "tma_info_inst_mix_ipswpf",
1543c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_inst_mix_ipswpf < 100",
1544c04fcf7cSIan Rogers        "Unit": "cpu_core"
1545c04fcf7cSIan Rogers    },
1546c04fcf7cSIan Rogers    {
1547*17d4b192SIan Rogers        "BriefDescription": "Instructions per taken branch",
1548*17d4b192SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@BR_INST_RETIRED.NEAR_TAKEN@",
1549c04fcf7cSIan Rogers        "MetricGroup": "Branches;Fed;FetchBW;Frontend;PGO;tma_issueFB",
1550c04fcf7cSIan Rogers        "MetricName": "tma_info_inst_mix_iptb",
1551c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_inst_mix_iptb < 13",
1552*17d4b192SIan Rogers        "PublicDescription": "Instructions per taken branch. Related metrics: tma_dsb_switches, tma_fetch_bandwidth, tma_info_botlnk_l2_dsb_bandwidth, tma_info_botlnk_l2_dsb_misses, tma_info_frontend_dsb_coverage, tma_lcp",
1553c04fcf7cSIan Rogers        "Unit": "cpu_core"
1554c04fcf7cSIan Rogers    },
1555c04fcf7cSIan Rogers    {
1556c04fcf7cSIan Rogers        "BriefDescription": "Average per-core data fill bandwidth to the L1 data cache [GB / sec]",
155752530942SIan Rogers        "MetricExpr": "tma_info_memory_l1d_cache_fill_bw",
1558c04fcf7cSIan Rogers        "MetricGroup": "Mem;MemoryBW",
155952530942SIan Rogers        "MetricName": "tma_info_memory_core_l1d_cache_fill_bw_2t",
1560c04fcf7cSIan Rogers        "Unit": "cpu_core"
1561c04fcf7cSIan Rogers    },
1562c04fcf7cSIan Rogers    {
1563c04fcf7cSIan Rogers        "BriefDescription": "Average per-core data fill bandwidth to the L2 cache [GB / sec]",
156452530942SIan Rogers        "MetricExpr": "tma_info_memory_l2_cache_fill_bw",
1565c04fcf7cSIan Rogers        "MetricGroup": "Mem;MemoryBW",
156652530942SIan Rogers        "MetricName": "tma_info_memory_core_l2_cache_fill_bw_2t",
1567c04fcf7cSIan Rogers        "Unit": "cpu_core"
1568c04fcf7cSIan Rogers    },
1569c04fcf7cSIan Rogers    {
1570c04fcf7cSIan Rogers        "BriefDescription": "Average per-core data access bandwidth to the L3 cache [GB / sec]",
157152530942SIan Rogers        "MetricExpr": "tma_info_memory_l3_cache_access_bw",
1572c04fcf7cSIan Rogers        "MetricGroup": "Mem;MemoryBW;Offcore",
157352530942SIan Rogers        "MetricName": "tma_info_memory_core_l3_cache_access_bw_2t",
1574c04fcf7cSIan Rogers        "Unit": "cpu_core"
1575c04fcf7cSIan Rogers    },
1576c04fcf7cSIan Rogers    {
1577c04fcf7cSIan Rogers        "BriefDescription": "Average per-core data fill bandwidth to the L3 cache [GB / sec]",
157852530942SIan Rogers        "MetricExpr": "tma_info_memory_l3_cache_fill_bw",
1579c04fcf7cSIan Rogers        "MetricGroup": "Mem;MemoryBW",
158052530942SIan Rogers        "MetricName": "tma_info_memory_core_l3_cache_fill_bw_2t",
1581c04fcf7cSIan Rogers        "Unit": "cpu_core"
1582c04fcf7cSIan Rogers    },
1583c04fcf7cSIan Rogers    {
1584c04fcf7cSIan Rogers        "BriefDescription": "Fill Buffer (FB) hits per kilo instructions for retired demand loads (L1D misses that merge into ongoing miss-handling entries)",
1585*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@MEM_LOAD_RETIRED.FB_HIT@ / cpu_core@INST_RETIRED.ANY@",
158652530942SIan Rogers        "MetricGroup": "CacheHits;Mem",
1587c04fcf7cSIan Rogers        "MetricName": "tma_info_memory_fb_hpki",
1588c04fcf7cSIan Rogers        "Unit": "cpu_core"
1589c04fcf7cSIan Rogers    },
1590c04fcf7cSIan Rogers    {
1591*17d4b192SIan Rogers        "BriefDescription": "Average per-thread data fill bandwidth to the L1 data cache [GB / sec]",
159252530942SIan Rogers        "MetricExpr": "64 * cpu_core@L1D.REPLACEMENT@ / 1e9 / duration_time",
159352530942SIan Rogers        "MetricGroup": "Mem;MemoryBW",
159452530942SIan Rogers        "MetricName": "tma_info_memory_l1d_cache_fill_bw",
159552530942SIan Rogers        "Unit": "cpu_core"
159652530942SIan Rogers    },
159752530942SIan Rogers    {
1598c04fcf7cSIan Rogers        "BriefDescription": "L1 cache true misses per kilo instruction for retired demand loads",
1599*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@MEM_LOAD_RETIRED.L1_MISS@ / cpu_core@INST_RETIRED.ANY@",
160052530942SIan Rogers        "MetricGroup": "CacheHits;Mem",
1601c04fcf7cSIan Rogers        "MetricName": "tma_info_memory_l1mpki",
1602c04fcf7cSIan Rogers        "Unit": "cpu_core"
1603c04fcf7cSIan Rogers    },
1604c04fcf7cSIan Rogers    {
1605c04fcf7cSIan Rogers        "BriefDescription": "L1 cache true misses per kilo instruction for all demand loads (including speculative)",
1606*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@L2_RQSTS.ALL_DEMAND_DATA_RD@ / cpu_core@INST_RETIRED.ANY@",
160752530942SIan Rogers        "MetricGroup": "CacheHits;Mem",
1608c04fcf7cSIan Rogers        "MetricName": "tma_info_memory_l1mpki_load",
1609c04fcf7cSIan Rogers        "Unit": "cpu_core"
1610c04fcf7cSIan Rogers    },
1611c04fcf7cSIan Rogers    {
1612*17d4b192SIan Rogers        "BriefDescription": "Average per-thread data fill bandwidth to the L2 cache [GB / sec]",
161352530942SIan Rogers        "MetricExpr": "64 * cpu_core@L2_LINES_IN.ALL@ / 1e9 / duration_time",
161452530942SIan Rogers        "MetricGroup": "Mem;MemoryBW",
161552530942SIan Rogers        "MetricName": "tma_info_memory_l2_cache_fill_bw",
161652530942SIan Rogers        "Unit": "cpu_core"
161752530942SIan Rogers    },
161852530942SIan Rogers    {
1619c04fcf7cSIan Rogers        "BriefDescription": "L2 cache hits per kilo instruction for all request types (including speculative)",
1620*17d4b192SIan Rogers        "MetricExpr": "1e3 * (cpu_core@L2_RQSTS.REFERENCES@ - cpu_core@L2_RQSTS.MISS@) / cpu_core@INST_RETIRED.ANY@",
162152530942SIan Rogers        "MetricGroup": "CacheHits;Mem",
1622c04fcf7cSIan Rogers        "MetricName": "tma_info_memory_l2hpki_all",
1623c04fcf7cSIan Rogers        "Unit": "cpu_core"
1624c04fcf7cSIan Rogers    },
1625c04fcf7cSIan Rogers    {
1626c04fcf7cSIan Rogers        "BriefDescription": "L2 cache hits per kilo instruction for all demand loads  (including speculative)",
1627*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@L2_RQSTS.DEMAND_DATA_RD_HIT@ / cpu_core@INST_RETIRED.ANY@",
162852530942SIan Rogers        "MetricGroup": "CacheHits;Mem",
1629c04fcf7cSIan Rogers        "MetricName": "tma_info_memory_l2hpki_load",
1630c04fcf7cSIan Rogers        "Unit": "cpu_core"
1631c04fcf7cSIan Rogers    },
1632c04fcf7cSIan Rogers    {
1633c04fcf7cSIan Rogers        "BriefDescription": "L2 cache true misses per kilo instruction for retired demand loads",
1634*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@MEM_LOAD_RETIRED.L2_MISS@ / cpu_core@INST_RETIRED.ANY@",
163552530942SIan Rogers        "MetricGroup": "Backend;CacheHits;Mem",
1636c04fcf7cSIan Rogers        "MetricName": "tma_info_memory_l2mpki",
1637c04fcf7cSIan Rogers        "Unit": "cpu_core"
1638c04fcf7cSIan Rogers    },
1639c04fcf7cSIan Rogers    {
1640c04fcf7cSIan Rogers        "BriefDescription": "L2 cache ([RKL+] true) misses per kilo instruction for all request types (including speculative)",
1641*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@L2_RQSTS.MISS@ / cpu_core@INST_RETIRED.ANY@",
164252530942SIan Rogers        "MetricGroup": "CacheHits;Mem;Offcore",
1643c04fcf7cSIan Rogers        "MetricName": "tma_info_memory_l2mpki_all",
1644c04fcf7cSIan Rogers        "Unit": "cpu_core"
1645c04fcf7cSIan Rogers    },
1646c04fcf7cSIan Rogers    {
1647c04fcf7cSIan Rogers        "BriefDescription": "L2 cache ([RKL+] true) misses per kilo instruction for all demand loads  (including speculative)",
1648*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@L2_RQSTS.DEMAND_DATA_RD_MISS@ / cpu_core@INST_RETIRED.ANY@",
164952530942SIan Rogers        "MetricGroup": "CacheHits;Mem",
1650c04fcf7cSIan Rogers        "MetricName": "tma_info_memory_l2mpki_load",
1651c04fcf7cSIan Rogers        "Unit": "cpu_core"
1652c04fcf7cSIan Rogers    },
1653c04fcf7cSIan Rogers    {
1654*17d4b192SIan Rogers        "BriefDescription": "Offcore requests (L2 cache miss) per kilo instruction for demand RFOs",
1655*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@L2_RQSTS.RFO_MISS@ / cpu_core@INST_RETIRED.ANY@",
1656*17d4b192SIan Rogers        "MetricGroup": "CacheMisses;Offcore",
1657*17d4b192SIan Rogers        "MetricName": "tma_info_memory_l2mpki_rfo",
1658*17d4b192SIan Rogers        "Unit": "cpu_core"
1659*17d4b192SIan Rogers    },
1660*17d4b192SIan Rogers    {
1661*17d4b192SIan Rogers        "BriefDescription": "Average per-thread data access bandwidth to the L3 cache [GB / sec]",
166252530942SIan Rogers        "MetricExpr": "64 * cpu_core@OFFCORE_REQUESTS.ALL_REQUESTS@ / 1e9 / duration_time",
166352530942SIan Rogers        "MetricGroup": "Mem;MemoryBW;Offcore",
166452530942SIan Rogers        "MetricName": "tma_info_memory_l3_cache_access_bw",
166552530942SIan Rogers        "Unit": "cpu_core"
166652530942SIan Rogers    },
166752530942SIan Rogers    {
1668*17d4b192SIan Rogers        "BriefDescription": "Average per-thread data fill bandwidth to the L3 cache [GB / sec]",
166952530942SIan Rogers        "MetricExpr": "64 * cpu_core@LONGEST_LAT_CACHE.MISS@ / 1e9 / duration_time",
167052530942SIan Rogers        "MetricGroup": "Mem;MemoryBW",
167152530942SIan Rogers        "MetricName": "tma_info_memory_l3_cache_fill_bw",
167252530942SIan Rogers        "Unit": "cpu_core"
167352530942SIan Rogers    },
167452530942SIan Rogers    {
1675c04fcf7cSIan Rogers        "BriefDescription": "L3 cache true misses per kilo instruction for retired demand loads",
1676*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@MEM_LOAD_RETIRED.L3_MISS@ / cpu_core@INST_RETIRED.ANY@",
167752530942SIan Rogers        "MetricGroup": "Mem",
1678c04fcf7cSIan Rogers        "MetricName": "tma_info_memory_l3mpki",
1679c04fcf7cSIan Rogers        "Unit": "cpu_core"
1680c04fcf7cSIan Rogers    },
1681c04fcf7cSIan Rogers    {
168252530942SIan Rogers        "BriefDescription": "Average Parallel L2 cache miss data reads",
1683*17d4b192SIan Rogers        "MetricExpr": "cpu_core@OFFCORE_REQUESTS_OUTSTANDING.DATA_RD@ / cpu_core@OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD@",
168452530942SIan Rogers        "MetricGroup": "Memory_BW;Offcore",
168552530942SIan Rogers        "MetricName": "tma_info_memory_latency_data_l2_mlp",
168652530942SIan Rogers        "Unit": "cpu_core"
168752530942SIan Rogers    },
168852530942SIan Rogers    {
168952530942SIan Rogers        "BriefDescription": "Average Latency for L2 cache miss demand Loads",
1690*17d4b192SIan Rogers        "MetricExpr": "cpu_core@OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD@ / cpu_core@OFFCORE_REQUESTS.DEMAND_DATA_RD@",
169152530942SIan Rogers        "MetricGroup": "Memory_Lat;Offcore",
169252530942SIan Rogers        "MetricName": "tma_info_memory_latency_load_l2_miss_latency",
169352530942SIan Rogers        "Unit": "cpu_core"
169452530942SIan Rogers    },
169552530942SIan Rogers    {
169652530942SIan Rogers        "BriefDescription": "Average Parallel L2 cache miss demand Loads",
169752530942SIan Rogers        "MetricExpr": "cpu_core@OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD@ / cpu_core@OFFCORE_REQUESTS_OUTSTANDING.DEMAND_DATA_RD\\,cmask\\=1@",
169852530942SIan Rogers        "MetricGroup": "Memory_BW;Offcore",
169952530942SIan Rogers        "MetricName": "tma_info_memory_latency_load_l2_mlp",
170052530942SIan Rogers        "Unit": "cpu_core"
170152530942SIan Rogers    },
170252530942SIan Rogers    {
170352530942SIan Rogers        "BriefDescription": "Average Latency for L3 cache miss demand Loads",
1704*17d4b192SIan Rogers        "MetricExpr": "cpu_core@OFFCORE_REQUESTS_OUTSTANDING.L3_MISS_DEMAND_DATA_RD@ / cpu_core@OFFCORE_REQUESTS.L3_MISS_DEMAND_DATA_RD@",
170552530942SIan Rogers        "MetricGroup": "Memory_Lat;Offcore",
170652530942SIan Rogers        "MetricName": "tma_info_memory_latency_load_l3_miss_latency",
170752530942SIan Rogers        "Unit": "cpu_core"
170852530942SIan Rogers    },
170952530942SIan Rogers    {
1710c04fcf7cSIan Rogers        "BriefDescription": "Actual Average Latency for L1 data-cache miss demand load operations (in core cycles)",
1711*17d4b192SIan Rogers        "MetricExpr": "cpu_core@L1D_PEND_MISS.PENDING@ / cpu_core@MEM_LOAD_COMPLETED.L1_MISS_ANY@",
1712c04fcf7cSIan Rogers        "MetricGroup": "Mem;MemoryBound;MemoryLat",
1713c04fcf7cSIan Rogers        "MetricName": "tma_info_memory_load_miss_real_latency",
1714ad10c920SIan Rogers        "Unit": "cpu_core"
1715ad10c920SIan Rogers    },
1716ad10c920SIan Rogers    {
171752530942SIan Rogers        "BriefDescription": "\"Bus lock\" per kilo instruction",
1718*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@SQ_MISC.BUS_LOCK@ / cpu_core@INST_RETIRED.ANY@",
171952530942SIan Rogers        "MetricGroup": "Mem",
172052530942SIan Rogers        "MetricName": "tma_info_memory_mix_bus_lock_pki",
172152530942SIan Rogers        "Unit": "cpu_core"
172252530942SIan Rogers    },
172352530942SIan Rogers    {
172452530942SIan Rogers        "BriefDescription": "Un-cacheable retired load per kilo instruction",
1725*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@MEM_LOAD_MISC_RETIRED.UC@ / cpu_core@INST_RETIRED.ANY@",
172652530942SIan Rogers        "MetricGroup": "Mem",
172752530942SIan Rogers        "MetricName": "tma_info_memory_mix_uc_load_pki",
172852530942SIan Rogers        "Unit": "cpu_core"
172952530942SIan Rogers    },
173052530942SIan Rogers    {
1731ad10c920SIan Rogers        "BriefDescription": "Memory-Level-Parallelism (average number of L1 miss demand load when there is at least one such miss",
1732*17d4b192SIan Rogers        "MetricExpr": "cpu_core@L1D_PEND_MISS.PENDING@ / cpu_core@L1D_PEND_MISS.PENDING_CYCLES@",
1733ad10c920SIan Rogers        "MetricGroup": "Mem;MemoryBW;MemoryBound",
1734c04fcf7cSIan Rogers        "MetricName": "tma_info_memory_mlp",
1735ad10c920SIan Rogers        "PublicDescription": "Memory-Level-Parallelism (average number of L1 miss demand load when there is at least one such miss. Per-Logical Processor)",
1736ad10c920SIan Rogers        "Unit": "cpu_core"
1737ad10c920SIan Rogers    },
1738ad10c920SIan Rogers    {
1739c04fcf7cSIan Rogers        "BriefDescription": "STLB (2nd level TLB) code speculative misses per kilo instruction (misses of any page-size that complete the page walk)",
1740*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@ITLB_MISSES.WALK_COMPLETED@ / cpu_core@INST_RETIRED.ANY@",
1741c04fcf7cSIan Rogers        "MetricGroup": "Fed;MemoryTLB",
1742c04fcf7cSIan Rogers        "MetricName": "tma_info_memory_tlb_code_stlb_mpki",
1743c04fcf7cSIan Rogers        "Unit": "cpu_core"
1744c04fcf7cSIan Rogers    },
1745c04fcf7cSIan Rogers    {
1746c04fcf7cSIan Rogers        "BriefDescription": "STLB (2nd level TLB) data load speculative misses per kilo instruction (misses of any page-size that complete the page walk)",
1747*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@DTLB_LOAD_MISSES.WALK_COMPLETED@ / cpu_core@INST_RETIRED.ANY@",
1748c04fcf7cSIan Rogers        "MetricGroup": "Mem;MemoryTLB",
1749c04fcf7cSIan Rogers        "MetricName": "tma_info_memory_tlb_load_stlb_mpki",
1750ad10c920SIan Rogers        "Unit": "cpu_core"
1751ad10c920SIan Rogers    },
1752ad10c920SIan Rogers    {
1753ad10c920SIan Rogers        "BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses",
1754c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@ITLB_MISSES.WALK_PENDING@ + cpu_core@DTLB_LOAD_MISSES.WALK_PENDING@ + cpu_core@DTLB_STORE_MISSES.WALK_PENDING@) / (4 * tma_info_core_core_clks)",
1755ad10c920SIan Rogers        "MetricGroup": "Mem;MemoryTLB",
1756c04fcf7cSIan Rogers        "MetricName": "tma_info_memory_tlb_page_walks_utilization",
1757c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_memory_tlb_page_walks_utilization > 0.5",
1758ad10c920SIan Rogers        "Unit": "cpu_core"
1759ad10c920SIan Rogers    },
1760ad10c920SIan Rogers    {
1761ad10c920SIan Rogers        "BriefDescription": "STLB (2nd level TLB) data store speculative misses per kilo instruction (misses of any page-size that complete the page walk)",
1762*17d4b192SIan Rogers        "MetricExpr": "1e3 * cpu_core@DTLB_STORE_MISSES.WALK_COMPLETED@ / cpu_core@INST_RETIRED.ANY@",
1763ad10c920SIan Rogers        "MetricGroup": "Mem;MemoryTLB",
1764c04fcf7cSIan Rogers        "MetricName": "tma_info_memory_tlb_store_stlb_mpki",
1765c04fcf7cSIan Rogers        "Unit": "cpu_core"
1766c04fcf7cSIan Rogers    },
1767c04fcf7cSIan Rogers    {
1768*17d4b192SIan Rogers        "BriefDescription": "Instruction-Level-Parallelism (average number of uops executed when there is execution) per core",
176952530942SIan Rogers        "MetricExpr": "cpu_core@UOPS_EXECUTED.THREAD@ / (cpu_core@UOPS_EXECUTED.CORE_CYCLES_GE_1@ / 2 if #SMT_on else cpu_core@UOPS_EXECUTED.THREAD\\,cmask\\=1@)",
1770c04fcf7cSIan Rogers        "MetricGroup": "Cor;Pipeline;PortsUtil;SMT",
1771c04fcf7cSIan Rogers        "MetricName": "tma_info_pipeline_execute",
1772c04fcf7cSIan Rogers        "Unit": "cpu_core"
1773c04fcf7cSIan Rogers    },
1774c04fcf7cSIan Rogers    {
1775*17d4b192SIan Rogers        "BriefDescription": "Average number of uops fetched from DSB per cycle",
1776*17d4b192SIan Rogers        "MetricExpr": "cpu_core@IDQ.DSB_UOPS@ / cpu_core@IDQ.DSB_CYCLES_ANY@",
1777*17d4b192SIan Rogers        "MetricGroup": "Fed;FetchBW",
1778*17d4b192SIan Rogers        "MetricName": "tma_info_pipeline_fetch_dsb",
1779*17d4b192SIan Rogers        "Unit": "cpu_core"
1780*17d4b192SIan Rogers    },
1781*17d4b192SIan Rogers    {
1782*17d4b192SIan Rogers        "BriefDescription": "Average number of uops fetched from LSD per cycle",
1783*17d4b192SIan Rogers        "MetricExpr": "cpu_core@LSD.UOPS@ / cpu_core@LSD.CYCLES_ACTIVE@",
1784*17d4b192SIan Rogers        "MetricGroup": "Fed;FetchBW",
1785*17d4b192SIan Rogers        "MetricName": "tma_info_pipeline_fetch_lsd",
1786*17d4b192SIan Rogers        "Unit": "cpu_core"
1787*17d4b192SIan Rogers    },
1788*17d4b192SIan Rogers    {
1789*17d4b192SIan Rogers        "BriefDescription": "Average number of uops fetched from MITE per cycle",
1790*17d4b192SIan Rogers        "MetricExpr": "cpu_core@IDQ.MITE_UOPS@ / cpu_core@IDQ.MITE_CYCLES_ANY@",
1791*17d4b192SIan Rogers        "MetricGroup": "Fed;FetchBW",
1792*17d4b192SIan Rogers        "MetricName": "tma_info_pipeline_fetch_mite",
1793*17d4b192SIan Rogers        "Unit": "cpu_core"
1794*17d4b192SIan Rogers    },
1795*17d4b192SIan Rogers    {
1796c04fcf7cSIan Rogers        "BriefDescription": "Instructions per a microcode Assist invocation",
1797*17d4b192SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@ASSISTS.ANY@",
179852530942SIan Rogers        "MetricGroup": "MicroSeq;Pipeline;Ret;Retire",
1799c04fcf7cSIan Rogers        "MetricName": "tma_info_pipeline_ipassist",
1800c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_pipeline_ipassist < 100e3",
1801c04fcf7cSIan Rogers        "PublicDescription": "Instructions per a microcode Assist invocation. See Assists tree node for details (lower number means higher occurrence rate)",
1802c04fcf7cSIan Rogers        "Unit": "cpu_core"
1803c04fcf7cSIan Rogers    },
1804c04fcf7cSIan Rogers    {
1805c04fcf7cSIan Rogers        "BriefDescription": "Average number of Uops retired in cycles where at least one uop has retired.",
1806c04fcf7cSIan Rogers        "MetricExpr": "tma_retiring * tma_info_thread_slots / cpu_core@UOPS_RETIRED.SLOTS\\,cmask\\=1@",
1807c04fcf7cSIan Rogers        "MetricGroup": "Pipeline;Ret",
1808c04fcf7cSIan Rogers        "MetricName": "tma_info_pipeline_retire",
1809ad10c920SIan Rogers        "Unit": "cpu_core"
1810ad10c920SIan Rogers    },
1811ad10c920SIan Rogers    {
1812ad10c920SIan Rogers        "BriefDescription": "Estimated fraction of retirement-cycles dealing with repeat instructions",
1813becc24e9SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.REP_ITERATION@ / cpu_core@UOPS_RETIRED.SLOTS\\,cmask\\=1@",
181452530942SIan Rogers        "MetricGroup": "MicroSeq;Pipeline;Ret",
1815c04fcf7cSIan Rogers        "MetricName": "tma_info_pipeline_strings_cycles",
1816c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_pipeline_strings_cycles > 0.1",
1817c04fcf7cSIan Rogers        "Unit": "cpu_core"
1818c04fcf7cSIan Rogers    },
1819c04fcf7cSIan Rogers    {
182052530942SIan Rogers        "BriefDescription": "Fraction of cycles the processor is waiting yet unhalted; covering legacy PAUSE instruction, as well as C0.1 / C0.2 power-performance optimized states",
182152530942SIan Rogers        "MetricExpr": "cpu_core@CPU_CLK_UNHALTED.C0_WAIT@ / tma_info_thread_clks",
182252530942SIan Rogers        "MetricGroup": "C0Wait",
182352530942SIan Rogers        "MetricName": "tma_info_system_c0_wait",
182452530942SIan Rogers        "MetricThreshold": "tma_info_system_c0_wait > 0.05",
1825c04fcf7cSIan Rogers        "Unit": "cpu_core"
1826c04fcf7cSIan Rogers    },
1827c04fcf7cSIan Rogers    {
182852530942SIan Rogers        "BriefDescription": "Measured Average Core Frequency for unhalted processors [GHz]",
182952530942SIan Rogers        "MetricExpr": "tma_info_system_turbo_utilization * TSC / 1e9 / duration_time",
183052530942SIan Rogers        "MetricGroup": "Power;Summary",
183152530942SIan Rogers        "MetricName": "tma_info_system_core_frequency",
183252530942SIan Rogers        "Unit": "cpu_core"
183352530942SIan Rogers    },
183452530942SIan Rogers    {
183552530942SIan Rogers        "BriefDescription": "Average CPU Utilization (percentage)",
1836*17d4b192SIan Rogers        "MetricExpr": "tma_info_system_cpus_utilized / #num_cpus_online",
1837c04fcf7cSIan Rogers        "MetricGroup": "HPC;Summary",
1838c04fcf7cSIan Rogers        "MetricName": "tma_info_system_cpu_utilization",
1839c04fcf7cSIan Rogers        "Unit": "cpu_core"
1840c04fcf7cSIan Rogers    },
1841c04fcf7cSIan Rogers    {
184252530942SIan Rogers        "BriefDescription": "Average number of utilized CPUs",
1843*17d4b192SIan Rogers        "MetricExpr": "cpu_core@CPU_CLK_UNHALTED.REF_TSC@ / TSC",
184452530942SIan Rogers        "MetricGroup": "Summary",
184552530942SIan Rogers        "MetricName": "tma_info_system_cpus_utilized",
184652530942SIan Rogers        "Unit": "cpu_core"
184752530942SIan Rogers    },
184852530942SIan Rogers    {
1849c04fcf7cSIan Rogers        "BriefDescription": "Average external Memory Bandwidth Use for reads and writes [GB / sec]",
1850c04fcf7cSIan Rogers        "MetricExpr": "64 * (UNC_ARB_TRK_REQUESTS.ALL + UNC_ARB_COH_TRK_REQUESTS.ALL) / 1e6 / duration_time / 1e3",
185152530942SIan Rogers        "MetricGroup": "HPC;MemOffcore;MemoryBW;SoC;tma_issueBW",
1852c04fcf7cSIan Rogers        "MetricName": "tma_info_system_dram_bw_use",
185352530942SIan Rogers        "PublicDescription": "Average external Memory Bandwidth Use for reads and writes [GB / sec]. Related metrics: tma_fb_full, tma_info_bottleneck_cache_memory_bandwidth, tma_mem_bandwidth, tma_sq_full",
1854c04fcf7cSIan Rogers        "Unit": "cpu_core"
1855c04fcf7cSIan Rogers    },
1856c04fcf7cSIan Rogers    {
1857c04fcf7cSIan Rogers        "BriefDescription": "Giga Floating Point Operations Per Second",
185852530942SIan Rogers        "MetricExpr": "(cpu_core@FP_ARITH_INST_RETIRED.SCALAR@ + 2 * cpu_core@FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE@ + 4 * cpu_core@FP_ARITH_INST_RETIRED.4_FLOPS@ + 8 * cpu_core@FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE@) / 1e9 / duration_time",
1859c04fcf7cSIan Rogers        "MetricGroup": "Cor;Flops;HPC",
1860c04fcf7cSIan Rogers        "MetricName": "tma_info_system_gflops",
186152530942SIan Rogers        "PublicDescription": "Giga Floating Point Operations Per Second. Aggregate across all supported options of: FP precisions, scalar and vector instructions, vector-width",
1862c04fcf7cSIan Rogers        "Unit": "cpu_core"
1863c04fcf7cSIan Rogers    },
1864c04fcf7cSIan Rogers    {
1865c04fcf7cSIan Rogers        "BriefDescription": "Instructions per Far Branch ( Far Branches apply upon transition from application to operating system, handling interrupts, exceptions) [lower number means higher occurrence rate]",
1866becc24e9SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / cpu_core@BR_INST_RETIRED.FAR_BRANCH@u",
1867c04fcf7cSIan Rogers        "MetricGroup": "Branches;OS",
1868c04fcf7cSIan Rogers        "MetricName": "tma_info_system_ipfarbranch",
1869c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_system_ipfarbranch < 1e6",
1870c04fcf7cSIan Rogers        "Unit": "cpu_core"
1871c04fcf7cSIan Rogers    },
1872c04fcf7cSIan Rogers    {
1873c04fcf7cSIan Rogers        "BriefDescription": "Cycles Per Instruction for the Operating System (OS) Kernel mode",
1874*17d4b192SIan Rogers        "MetricExpr": "cpu_core@CPU_CLK_UNHALTED.THREAD_P@k / cpu_core@INST_RETIRED.ANY_P@k",
1875c04fcf7cSIan Rogers        "MetricGroup": "OS",
1876c04fcf7cSIan Rogers        "MetricName": "tma_info_system_kernel_cpi",
1877c04fcf7cSIan Rogers        "Unit": "cpu_core"
1878c04fcf7cSIan Rogers    },
1879c04fcf7cSIan Rogers    {
1880c04fcf7cSIan Rogers        "BriefDescription": "Fraction of cycles spent in the Operating System (OS) Kernel mode",
1881*17d4b192SIan Rogers        "MetricExpr": "cpu_core@CPU_CLK_UNHALTED.THREAD_P@k / cpu_core@CPU_CLK_UNHALTED.THREAD@",
1882c04fcf7cSIan Rogers        "MetricGroup": "OS",
1883c04fcf7cSIan Rogers        "MetricName": "tma_info_system_kernel_utilization",
1884c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_system_kernel_utilization > 0.05",
1885c04fcf7cSIan Rogers        "Unit": "cpu_core"
1886c04fcf7cSIan Rogers    },
1887c04fcf7cSIan Rogers    {
1888c04fcf7cSIan Rogers        "BriefDescription": "Average number of parallel data read requests to external memory",
1889982b6aceSIan Rogers        "MetricExpr": "UNC_ARB_DAT_OCCUPANCY.RD / UNC_ARB_DAT_OCCUPANCY.RD@cmask\\=1@",
1890c04fcf7cSIan Rogers        "MetricGroup": "Mem;MemoryBW;SoC",
1891c04fcf7cSIan Rogers        "MetricName": "tma_info_system_mem_parallel_reads",
1892c04fcf7cSIan Rogers        "PublicDescription": "Average number of parallel data read requests to external memory. Accounts for demand loads and L1/L2 prefetches",
1893c04fcf7cSIan Rogers        "Unit": "cpu_core"
1894c04fcf7cSIan Rogers    },
1895c04fcf7cSIan Rogers    {
1896c04fcf7cSIan Rogers        "BriefDescription": "Average latency of data read request to external memory (in nanoseconds)",
1897becc24e9SIan Rogers        "MetricConstraint": "NO_GROUP_EVENTS",
1898c04fcf7cSIan Rogers        "MetricExpr": "(UNC_ARB_TRK_OCCUPANCY.RD + UNC_ARB_DAT_OCCUPANCY.RD) / UNC_ARB_TRK_REQUESTS.RD",
1899c04fcf7cSIan Rogers        "MetricGroup": "Mem;MemoryLat;SoC",
1900c04fcf7cSIan Rogers        "MetricName": "tma_info_system_mem_read_latency",
1901c04fcf7cSIan Rogers        "PublicDescription": "Average latency of data read request to external memory (in nanoseconds). Accounts for demand loads and L1/L2 prefetches. ([RKL+]memory-controller only)",
1902c04fcf7cSIan Rogers        "Unit": "cpu_core"
1903c04fcf7cSIan Rogers    },
1904c04fcf7cSIan Rogers    {
1905c04fcf7cSIan Rogers        "BriefDescription": "Fraction of cycles where both hardware Logical Processors were active",
1906c04fcf7cSIan Rogers        "MetricExpr": "(1 - cpu_core@CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE@ / cpu_core@CPU_CLK_UNHALTED.REF_DISTRIBUTED@ if #SMT_on else 0)",
1907c04fcf7cSIan Rogers        "MetricGroup": "SMT",
1908c04fcf7cSIan Rogers        "MetricName": "tma_info_system_smt_2t_utilization",
1909c04fcf7cSIan Rogers        "Unit": "cpu_core"
1910c04fcf7cSIan Rogers    },
1911c04fcf7cSIan Rogers    {
1912c04fcf7cSIan Rogers        "BriefDescription": "Socket actual clocks when any core is active on that socket",
1913c04fcf7cSIan Rogers        "MetricExpr": "UNC_CLOCK.SOCKET",
1914c04fcf7cSIan Rogers        "MetricGroup": "SoC",
1915c04fcf7cSIan Rogers        "MetricName": "tma_info_system_socket_clks",
1916ad10c920SIan Rogers        "Unit": "cpu_core"
1917ad10c920SIan Rogers    },
1918ad10c920SIan Rogers    {
1919ad10c920SIan Rogers        "BriefDescription": "Average Frequency Utilization relative nominal frequency",
1920*17d4b192SIan Rogers        "MetricExpr": "tma_info_thread_clks / cpu_core@CPU_CLK_UNHALTED.REF_TSC@",
1921ad10c920SIan Rogers        "MetricGroup": "Power",
1922c04fcf7cSIan Rogers        "MetricName": "tma_info_system_turbo_utilization",
1923c04fcf7cSIan Rogers        "Unit": "cpu_core"
1924c04fcf7cSIan Rogers    },
1925c04fcf7cSIan Rogers    {
1926c04fcf7cSIan Rogers        "BriefDescription": "Per-Logical Processor actual clocks when the Logical Processor is active.",
1927c04fcf7cSIan Rogers        "MetricExpr": "cpu_core@CPU_CLK_UNHALTED.THREAD@",
1928c04fcf7cSIan Rogers        "MetricGroup": "Pipeline",
1929c04fcf7cSIan Rogers        "MetricName": "tma_info_thread_clks",
1930c04fcf7cSIan Rogers        "Unit": "cpu_core"
1931c04fcf7cSIan Rogers    },
1932c04fcf7cSIan Rogers    {
1933c04fcf7cSIan Rogers        "BriefDescription": "Cycles Per Instruction (per Logical Processor)",
1934c04fcf7cSIan Rogers        "MetricExpr": "1 / tma_info_thread_ipc",
1935c04fcf7cSIan Rogers        "MetricGroup": "Mem;Pipeline",
1936c04fcf7cSIan Rogers        "MetricName": "tma_info_thread_cpi",
1937c04fcf7cSIan Rogers        "Unit": "cpu_core"
1938c04fcf7cSIan Rogers    },
1939c04fcf7cSIan Rogers    {
1940c04fcf7cSIan Rogers        "BriefDescription": "The ratio of Executed- by Issued-Uops",
1941*17d4b192SIan Rogers        "MetricExpr": "cpu_core@UOPS_EXECUTED.THREAD@ / cpu_core@UOPS_ISSUED.ANY@",
1942c04fcf7cSIan Rogers        "MetricGroup": "Cor;Pipeline",
1943c04fcf7cSIan Rogers        "MetricName": "tma_info_thread_execute_per_issue",
1944c04fcf7cSIan Rogers        "PublicDescription": "The ratio of Executed- by Issued-Uops. Ratio > 1 suggests high rate of uop micro-fusions. Ratio < 1 suggest high rate of \"execute\" at rename stage.",
1945c04fcf7cSIan Rogers        "Unit": "cpu_core"
1946c04fcf7cSIan Rogers    },
1947c04fcf7cSIan Rogers    {
1948c04fcf7cSIan Rogers        "BriefDescription": "Instructions Per Cycle (per Logical Processor)",
1949becc24e9SIan Rogers        "MetricExpr": "cpu_core@INST_RETIRED.ANY@ / tma_info_thread_clks",
1950c04fcf7cSIan Rogers        "MetricGroup": "Ret;Summary",
1951c04fcf7cSIan Rogers        "MetricName": "tma_info_thread_ipc",
1952c04fcf7cSIan Rogers        "Unit": "cpu_core"
1953c04fcf7cSIan Rogers    },
1954c04fcf7cSIan Rogers    {
1955c04fcf7cSIan Rogers        "BriefDescription": "Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward)",
1956c04fcf7cSIan Rogers        "MetricExpr": "cpu_core@TOPDOWN.SLOTS@",
1957c04fcf7cSIan Rogers        "MetricGroup": "TmaL1;tma_L1_group",
1958c04fcf7cSIan Rogers        "MetricName": "tma_info_thread_slots",
1959c04fcf7cSIan Rogers        "Unit": "cpu_core"
1960c04fcf7cSIan Rogers    },
1961c04fcf7cSIan Rogers    {
1962c04fcf7cSIan Rogers        "BriefDescription": "Fraction of Physical Core issue-slots utilized by this Logical Processor",
1963c04fcf7cSIan Rogers        "MetricExpr": "(tma_info_thread_slots / (cpu_core@TOPDOWN.SLOTS@ / 2) if #SMT_on else 1)",
1964c04fcf7cSIan Rogers        "MetricGroup": "SMT;TmaL1;tma_L1_group",
1965c04fcf7cSIan Rogers        "MetricName": "tma_info_thread_slots_utilization",
1966ad10c920SIan Rogers        "Unit": "cpu_core"
1967ad10c920SIan Rogers    },
1968ad10c920SIan Rogers    {
1969ad10c920SIan Rogers        "BriefDescription": "Uops Per Instruction",
1970*17d4b192SIan Rogers        "MetricExpr": "tma_retiring * tma_info_thread_slots / cpu_core@INST_RETIRED.ANY@",
1971ad10c920SIan Rogers        "MetricGroup": "Pipeline;Ret;Retire",
1972c04fcf7cSIan Rogers        "MetricName": "tma_info_thread_uoppi",
1973c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_thread_uoppi > 1.05",
1974ad10c920SIan Rogers        "Unit": "cpu_core"
1975ad10c920SIan Rogers    },
1976ad10c920SIan Rogers    {
1977*17d4b192SIan Rogers        "BriefDescription": "Uops per taken branch",
1978*17d4b192SIan Rogers        "MetricExpr": "tma_retiring * tma_info_thread_slots / cpu_core@BR_INST_RETIRED.NEAR_TAKEN@",
1979ad10c920SIan Rogers        "MetricGroup": "Branches;Fed;FetchBW",
1980c04fcf7cSIan Rogers        "MetricName": "tma_info_thread_uptb",
1981c04fcf7cSIan Rogers        "MetricThreshold": "tma_info_thread_uptb < 9",
1982ad10c920SIan Rogers        "Unit": "cpu_core"
1983ad10c920SIan Rogers    },
1984ad10c920SIan Rogers    {
1985ad10c920SIan Rogers        "BriefDescription": "This metric represents overall Integer (Int) select operations fraction the CPU has executed (retired)",
198652530942SIan Rogers        "MetricExpr": "tma_int_vector_128b + tma_int_vector_256b",
1987ad10c920SIan Rogers        "MetricGroup": "Pipeline;TopdownL3;tma_L3_group;tma_light_operations_group",
1988ad10c920SIan Rogers        "MetricName": "tma_int_operations",
1989ad10c920SIan Rogers        "MetricThreshold": "tma_int_operations > 0.1 & tma_light_operations > 0.6",
1990ad10c920SIan Rogers        "PublicDescription": "This metric represents overall Integer (Int) select operations fraction the CPU has executed (retired). Vector/Matrix Int operations and shuffles are counted. Note this metric's value may exceed its parent due to use of \"Uops\" CountDomain.",
1991ad10c920SIan Rogers        "ScaleUnit": "100%",
1992ad10c920SIan Rogers        "Unit": "cpu_core"
1993ad10c920SIan Rogers    },
1994ad10c920SIan Rogers    {
1995ad10c920SIan Rogers        "BriefDescription": "This metric represents 128-bit vector Integer ADD/SUB/SAD or VNNI (Vector Neural Network Instructions) uops fraction the CPU has retired",
1996c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@INT_VEC_RETIRED.ADD_128@ + cpu_core@INT_VEC_RETIRED.VNNI_128@) / (tma_retiring * tma_info_thread_slots)",
1997ad10c920SIan Rogers        "MetricGroup": "Compute;IntVector;Pipeline;TopdownL4;tma_L4_group;tma_int_operations_group;tma_issue2P",
1998ad10c920SIan Rogers        "MetricName": "tma_int_vector_128b",
1999ad10c920SIan Rogers        "MetricThreshold": "tma_int_vector_128b > 0.1 & (tma_int_operations > 0.1 & tma_light_operations > 0.6)",
2000ad10c920SIan Rogers        "PublicDescription": "This metric represents 128-bit vector Integer ADD/SUB/SAD or VNNI (Vector Neural Network Instructions) uops fraction the CPU has retired. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_256b, tma_port_0, tma_port_1, tma_port_5, tma_port_6, tma_ports_utilized_2",
2001ad10c920SIan Rogers        "ScaleUnit": "100%",
2002ad10c920SIan Rogers        "Unit": "cpu_core"
2003ad10c920SIan Rogers    },
2004ad10c920SIan Rogers    {
200552530942SIan Rogers        "BriefDescription": "This metric represents 256-bit vector Integer ADD/SUB/SAD/MUL or VNNI (Vector Neural Network Instructions) uops fraction the CPU has retired",
2006c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@INT_VEC_RETIRED.ADD_256@ + cpu_core@INT_VEC_RETIRED.MUL_256@ + cpu_core@INT_VEC_RETIRED.VNNI_256@) / (tma_retiring * tma_info_thread_slots)",
2007ad10c920SIan Rogers        "MetricGroup": "Compute;IntVector;Pipeline;TopdownL4;tma_L4_group;tma_int_operations_group;tma_issue2P",
2008ad10c920SIan Rogers        "MetricName": "tma_int_vector_256b",
2009ad10c920SIan Rogers        "MetricThreshold": "tma_int_vector_256b > 0.1 & (tma_int_operations > 0.1 & tma_light_operations > 0.6)",
201052530942SIan Rogers        "PublicDescription": "This metric represents 256-bit vector Integer ADD/SUB/SAD/MUL or VNNI (Vector Neural Network Instructions) uops fraction the CPU has retired. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_port_0, tma_port_1, tma_port_5, tma_port_6, tma_ports_utilized_2",
2011ad10c920SIan Rogers        "ScaleUnit": "100%",
2012ad10c920SIan Rogers        "Unit": "cpu_core"
2013ad10c920SIan Rogers    },
2014ad10c920SIan Rogers    {
2015ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to Instruction TLB (ITLB) misses",
2016becc24e9SIan Rogers        "MetricExpr": "cpu_core@ICACHE_TAG.STALLS@ / tma_info_thread_clks",
2017*17d4b192SIan Rogers        "MetricGroup": "BigFootprint;BvBC;FetchLat;MemoryTLB;TopdownL3;tma_L3_group;tma_fetch_latency_group",
2018ad10c920SIan Rogers        "MetricName": "tma_itlb_misses",
2019ad10c920SIan Rogers        "MetricThreshold": "tma_itlb_misses > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15)",
2020ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to Instruction TLB (ITLB) misses. Sample with: FRONTEND_RETIRED.STLB_MISS_PS;FRONTEND_RETIRED.ITLB_MISS_PS",
2021ad10c920SIan Rogers        "ScaleUnit": "100%",
2022ad10c920SIan Rogers        "Unit": "cpu_core"
2023ad10c920SIan Rogers    },
2024ad10c920SIan Rogers    {
2025ad10c920SIan Rogers        "BriefDescription": "This metric estimates how often the CPU was stalled without loads missing the L1 data cache",
2026c04fcf7cSIan Rogers        "MetricExpr": "max((cpu_core@EXE_ACTIVITY.BOUND_ON_LOADS@ - cpu_core@MEMORY_ACTIVITY.STALLS_L1D_MISS@) / tma_info_thread_clks, 0)",
202752530942SIan Rogers        "MetricGroup": "CacheHits;MemoryBound;TmaL3mem;TopdownL3;tma_L3_group;tma_issueL1;tma_issueMC;tma_memory_bound_group",
2028ad10c920SIan Rogers        "MetricName": "tma_l1_bound",
2029ad10c920SIan Rogers        "MetricThreshold": "tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)",
2030ad10c920SIan Rogers        "PublicDescription": "This metric estimates how often the CPU was stalled without loads missing the L1 data cache.  The L1 data cache typically has the shortest latency.  However; in certain cases like loads blocked on older stores; a load might suffer due to high latency even though it is being satisfied by the L1. Another example is loads who miss in the TLB. These cases are characterized by execution unit stalls; while some non-completed demand load lives in the machine without having that demand load missing the L1 cache. Sample with: MEM_LOAD_RETIRED.L1_HIT_PS;MEM_LOAD_RETIRED.FB_HIT_PS. Related metrics: tma_clears_resteers, tma_machine_clears, tma_microcode_sequencer, tma_ms_switches, tma_ports_utilized_1",
2031ad10c920SIan Rogers        "ScaleUnit": "100%",
2032ad10c920SIan Rogers        "Unit": "cpu_core"
2033ad10c920SIan Rogers    },
2034ad10c920SIan Rogers    {
2035*17d4b192SIan Rogers        "BriefDescription": "This metric roughly estimates fraction of cycles with demand load accesses that hit the L1 cache",
2036*17d4b192SIan Rogers        "MetricExpr": "min(2 * (cpu_core@MEM_INST_RETIRED.ALL_LOADS@ - cpu_core@MEM_LOAD_RETIRED.FB_HIT@ - cpu_core@MEM_LOAD_RETIRED.L1_MISS@) * 20 / 100, max(cpu_core@CYCLE_ACTIVITY.CYCLES_MEM_ANY@ - cpu_core@MEMORY_ACTIVITY.CYCLES_L1D_MISS@, 0)) / tma_info_thread_clks",
2037*17d4b192SIan Rogers        "MetricGroup": "BvML;MemoryLat;TopdownL4;tma_L4_group;tma_l1_bound_group",
2038*17d4b192SIan Rogers        "MetricName": "tma_l1_hit_latency",
2039*17d4b192SIan Rogers        "MetricThreshold": "tma_l1_hit_latency > 0.1 & (tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
2040*17d4b192SIan Rogers        "PublicDescription": "This metric roughly estimates fraction of cycles with demand load accesses that hit the L1 cache. The short latency of the L1 data cache may be exposed in pointer-chasing memory access patterns as an example. Sample with: MEM_LOAD_RETIRED.L1_HIT",
2041*17d4b192SIan Rogers        "ScaleUnit": "100%",
2042*17d4b192SIan Rogers        "Unit": "cpu_core"
2043*17d4b192SIan Rogers    },
2044*17d4b192SIan Rogers    {
2045ad10c920SIan Rogers        "BriefDescription": "This metric estimates how often the CPU was stalled due to L2 cache accesses by loads",
2046c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@MEMORY_ACTIVITY.STALLS_L1D_MISS@ - cpu_core@MEMORY_ACTIVITY.STALLS_L2_MISS@) / tma_info_thread_clks",
2047*17d4b192SIan Rogers        "MetricGroup": "BvML;CacheHits;MemoryBound;TmaL3mem;TopdownL3;tma_L3_group;tma_memory_bound_group",
2048ad10c920SIan Rogers        "MetricName": "tma_l2_bound",
2049ad10c920SIan Rogers        "MetricThreshold": "tma_l2_bound > 0.05 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)",
2050ad10c920SIan Rogers        "PublicDescription": "This metric estimates how often the CPU was stalled due to L2 cache accesses by loads.  Avoiding cache misses (i.e. L1 misses/L2 hits) can improve the latency and increase performance. Sample with: MEM_LOAD_RETIRED.L2_HIT_PS",
2051ad10c920SIan Rogers        "ScaleUnit": "100%",
2052ad10c920SIan Rogers        "Unit": "cpu_core"
2053ad10c920SIan Rogers    },
2054ad10c920SIan Rogers    {
2055ad10c920SIan Rogers        "BriefDescription": "This metric estimates how often the CPU was stalled due to loads accesses to L3 cache or contended with a sibling Core",
2056c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@MEMORY_ACTIVITY.STALLS_L2_MISS@ - cpu_core@MEMORY_ACTIVITY.STALLS_L3_MISS@) / tma_info_thread_clks",
205752530942SIan Rogers        "MetricGroup": "CacheHits;MemoryBound;TmaL3mem;TopdownL3;tma_L3_group;tma_memory_bound_group",
2058ad10c920SIan Rogers        "MetricName": "tma_l3_bound",
2059ad10c920SIan Rogers        "MetricThreshold": "tma_l3_bound > 0.05 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)",
2060ad10c920SIan Rogers        "PublicDescription": "This metric estimates how often the CPU was stalled due to loads accesses to L3 cache or contended with a sibling Core.  Avoiding cache misses (i.e. L2 misses/L3 hits) can improve the latency and increase performance. Sample with: MEM_LOAD_RETIRED.L3_HIT_PS",
2061ad10c920SIan Rogers        "ScaleUnit": "100%",
2062ad10c920SIan Rogers        "Unit": "cpu_core"
2063ad10c920SIan Rogers    },
2064ad10c920SIan Rogers    {
206552530942SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles with demand load accesses that hit the L3 cache under unloaded scenarios (possibly L3 latency limited)",
206652530942SIan Rogers        "MetricExpr": "9 * tma_info_system_core_frequency * (cpu_core@MEM_LOAD_RETIRED.L3_HIT@ * (1 + cpu_core@MEM_LOAD_RETIRED.FB_HIT@ / cpu_core@MEM_LOAD_RETIRED.L1_MISS@ / 2)) / tma_info_thread_clks",
2067*17d4b192SIan Rogers        "MetricGroup": "BvML;MemoryLat;TopdownL4;tma_L4_group;tma_issueLat;tma_l3_bound_group",
2068ad10c920SIan Rogers        "MetricName": "tma_l3_hit_latency",
2069ad10c920SIan Rogers        "MetricThreshold": "tma_l3_hit_latency > 0.1 & (tma_l3_bound > 0.05 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
207052530942SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles with demand load accesses that hit the L3 cache under unloaded scenarios (possibly L3 latency limited).  Avoiding private cache misses (i.e. L2 misses/L3 hits) will improve the latency; reduce contention with sibling physical cores and increase performance.  Note the value of this node may overlap with its siblings. Sample with: MEM_LOAD_RETIRED.L3_HIT_PS. Related metrics: tma_info_bottleneck_cache_memory_latency, tma_mem_latency",
2071ad10c920SIan Rogers        "ScaleUnit": "100%",
2072ad10c920SIan Rogers        "Unit": "cpu_core"
2073ad10c920SIan Rogers    },
2074ad10c920SIan Rogers    {
2075ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles CPU was stalled due to Length Changing Prefixes (LCPs)",
2076becc24e9SIan Rogers        "MetricExpr": "cpu_core@DECODE.LCP@ / tma_info_thread_clks",
2077ad10c920SIan Rogers        "MetricGroup": "FetchLat;TopdownL3;tma_L3_group;tma_fetch_latency_group;tma_issueFB",
2078ad10c920SIan Rogers        "MetricName": "tma_lcp",
2079ad10c920SIan Rogers        "MetricThreshold": "tma_lcp > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15)",
2080*17d4b192SIan Rogers        "PublicDescription": "This metric represents fraction of cycles CPU was stalled due to Length Changing Prefixes (LCPs). Using proper compiler flags or Intel Compiler by default will certainly avoid this. #Link: Optimization Guide about LCP BKMs. Related metrics: tma_dsb_switches, tma_fetch_bandwidth, tma_info_botlnk_l2_dsb_bandwidth, tma_info_botlnk_l2_dsb_misses, tma_info_frontend_dsb_coverage, tma_info_inst_mix_iptb",
2081ad10c920SIan Rogers        "ScaleUnit": "100%",
2082ad10c920SIan Rogers        "Unit": "cpu_core"
2083ad10c920SIan Rogers    },
2084ad10c920SIan Rogers    {
2085ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring light-weight operations -- instructions that require no more than one uop (micro-operation)",
2086ad10c920SIan Rogers        "MetricExpr": "max(0, tma_retiring - tma_heavy_operations)",
2087ad10c920SIan Rogers        "MetricGroup": "Retire;TmaL2;TopdownL2;tma_L2_group;tma_retiring_group",
2088ad10c920SIan Rogers        "MetricName": "tma_light_operations",
2089ad10c920SIan Rogers        "MetricThreshold": "tma_light_operations > 0.6",
2090ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
209152530942SIan Rogers        "PublicDescription": "This metric represents fraction of slots where the CPU was retiring light-weight operations -- instructions that require no more than one uop (micro-operation). This correlates with total number of instructions used by the program. A uops-per-instruction (see UopPI metric) ratio of 1 or less should be expected for decently optimized code running on Intel Core/Xeon products. While this often indicates efficient X86 instructions were executed; high value does not necessarily mean better performance cannot be achieved. ([ICL+] Note this may undercount due to approximation using indirect events; [ADL+] .). Sample with: INST_RETIRED.PREC_DIST",
2092ad10c920SIan Rogers        "ScaleUnit": "100%",
2093ad10c920SIan Rogers        "Unit": "cpu_core"
2094ad10c920SIan Rogers    },
2095ad10c920SIan Rogers    {
2096ad10c920SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port for Load operations",
2097becc24e9SIan Rogers        "MetricExpr": "cpu_core@UOPS_DISPATCHED.PORT_2_3_10@ / (3 * tma_info_core_core_clks)",
2098ad10c920SIan Rogers        "MetricGroup": "TopdownL5;tma_L5_group;tma_ports_utilized_3m_group",
2099ad10c920SIan Rogers        "MetricName": "tma_load_op_utilization",
2100ad10c920SIan Rogers        "MetricThreshold": "tma_load_op_utilization > 0.6",
2101ad10c920SIan Rogers        "PublicDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port for Load operations. Sample with: UOPS_DISPATCHED.PORT_2_3_10",
2102ad10c920SIan Rogers        "ScaleUnit": "100%",
2103ad10c920SIan Rogers        "Unit": "cpu_core"
2104ad10c920SIan Rogers    },
2105ad10c920SIan Rogers    {
2106ad10c920SIan Rogers        "BriefDescription": "This metric roughly estimates the fraction of cycles where the (first level) DTLB was missed by load accesses, that later on hit in second-level TLB (STLB)",
2107ad10c920SIan Rogers        "MetricExpr": "tma_dtlb_load - tma_load_stlb_miss",
2108ad10c920SIan Rogers        "MetricGroup": "MemoryTLB;TopdownL5;tma_L5_group;tma_dtlb_load_group",
2109ad10c920SIan Rogers        "MetricName": "tma_load_stlb_hit",
2110ad10c920SIan Rogers        "MetricThreshold": "tma_load_stlb_hit > 0.05 & (tma_dtlb_load > 0.1 & (tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)))",
2111ad10c920SIan Rogers        "ScaleUnit": "100%",
2112ad10c920SIan Rogers        "Unit": "cpu_core"
2113ad10c920SIan Rogers    },
2114ad10c920SIan Rogers    {
2115ad10c920SIan Rogers        "BriefDescription": "This metric estimates the fraction of cycles where the Second-level TLB (STLB) was missed by load accesses, performing a hardware page walk",
2116becc24e9SIan Rogers        "MetricExpr": "cpu_core@DTLB_LOAD_MISSES.WALK_ACTIVE@ / tma_info_thread_clks",
2117ad10c920SIan Rogers        "MetricGroup": "MemoryTLB;TopdownL5;tma_L5_group;tma_dtlb_load_group",
2118ad10c920SIan Rogers        "MetricName": "tma_load_stlb_miss",
2119ad10c920SIan Rogers        "MetricThreshold": "tma_load_stlb_miss > 0.05 & (tma_dtlb_load > 0.1 & (tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)))",
2120ad10c920SIan Rogers        "ScaleUnit": "100%",
2121ad10c920SIan Rogers        "Unit": "cpu_core"
2122ad10c920SIan Rogers    },
2123ad10c920SIan Rogers    {
2124ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU spent handling cache misses due to lock operations",
2125c04fcf7cSIan Rogers        "MetricExpr": "(16 * max(0, cpu_core@MEM_INST_RETIRED.LOCK_LOADS@ - cpu_core@L2_RQSTS.ALL_RFO@) + cpu_core@MEM_INST_RETIRED.LOCK_LOADS@ / cpu_core@MEM_INST_RETIRED.ALL_STORES@ * (10 * cpu_core@L2_RQSTS.RFO_HIT@ + min(cpu_core@CPU_CLK_UNHALTED.THREAD@, cpu_core@OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO@))) / tma_info_thread_clks",
2126ad10c920SIan Rogers        "MetricGroup": "Offcore;TopdownL4;tma_L4_group;tma_issueRFO;tma_l1_bound_group",
2127ad10c920SIan Rogers        "MetricName": "tma_lock_latency",
2128ad10c920SIan Rogers        "MetricThreshold": "tma_lock_latency > 0.2 & (tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
2129*17d4b192SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU spent handling cache misses due to lock operations. Due to the microarchitecture handling of locks; they are classified as L1_Bound regardless of what memory source satisfied them. Sample with: MEM_INST_RETIRED.LOCK_LOADS. Related metrics: tma_store_latency",
2130ad10c920SIan Rogers        "ScaleUnit": "100%",
2131ad10c920SIan Rogers        "Unit": "cpu_core"
2132ad10c920SIan Rogers    },
2133ad10c920SIan Rogers    {
2134ad10c920SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles in which CPU was likely limited due to LSD (Loop Stream Detector) unit",
2135c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@LSD.CYCLES_ACTIVE@ - cpu_core@LSD.CYCLES_OK@) / tma_info_core_core_clks / 2",
2136ad10c920SIan Rogers        "MetricGroup": "FetchBW;LSD;TopdownL3;tma_L3_group;tma_fetch_bandwidth_group",
2137ad10c920SIan Rogers        "MetricName": "tma_lsd",
213852530942SIan Rogers        "MetricThreshold": "tma_lsd > 0.15 & tma_fetch_bandwidth > 0.2",
2139ad10c920SIan Rogers        "PublicDescription": "This metric represents Core fraction of cycles in which CPU was likely limited due to LSD (Loop Stream Detector) unit.  LSD typically does well sustaining Uop supply. However; in some rare cases; optimal uop-delivery could not be reached for small loops whose size (in terms of number of uops) does not suit well the LSD structure.",
2140ad10c920SIan Rogers        "ScaleUnit": "100%",
2141ad10c920SIan Rogers        "Unit": "cpu_core"
2142ad10c920SIan Rogers    },
2143ad10c920SIan Rogers    {
2144ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of slots the CPU has wasted due to Machine Clears",
2145ad10c920SIan Rogers        "MetricExpr": "max(0, tma_bad_speculation - tma_branch_mispredicts)",
2146*17d4b192SIan Rogers        "MetricGroup": "BadSpec;BvMS;MachineClears;TmaL2;TopdownL2;tma_L2_group;tma_bad_speculation_group;tma_issueMC;tma_issueSyncxn",
2147ad10c920SIan Rogers        "MetricName": "tma_machine_clears",
2148ad10c920SIan Rogers        "MetricThreshold": "tma_machine_clears > 0.1 & tma_bad_speculation > 0.15",
2149ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
2150ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of slots the CPU has wasted due to Machine Clears.  These slots are either wasted by uops fetched prior to the clear; or stalls the out-of-order portion of the machine needs to recover its state after the clear. For example; this can happen due to memory ordering Nukes (e.g. Memory Disambiguation) or Self-Modifying-Code (SMC) nukes. Sample with: MACHINE_CLEARS.COUNT. Related metrics: tma_clears_resteers, tma_contested_accesses, tma_data_sharing, tma_false_sharing, tma_l1_bound, tma_microcode_sequencer, tma_ms_switches, tma_remote_cache",
2151ad10c920SIan Rogers        "ScaleUnit": "100%",
2152ad10c920SIan Rogers        "Unit": "cpu_core"
2153ad10c920SIan Rogers    },
2154ad10c920SIan Rogers    {
215552530942SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles where the core's performance was likely hurt due to approaching bandwidth limits of external memory - DRAM ([SPR-HBM] and/or HBM)",
2156c04fcf7cSIan Rogers        "MetricExpr": "min(cpu_core@CPU_CLK_UNHALTED.THREAD@, cpu_core@OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD\\,cmask\\=4@) / tma_info_thread_clks",
2157*17d4b192SIan Rogers        "MetricGroup": "BvMS;MemoryBW;Offcore;TopdownL4;tma_L4_group;tma_dram_bound_group;tma_issueBW",
2158ad10c920SIan Rogers        "MetricName": "tma_mem_bandwidth",
2159ad10c920SIan Rogers        "MetricThreshold": "tma_mem_bandwidth > 0.2 & (tma_dram_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
216052530942SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles where the core's performance was likely hurt due to approaching bandwidth limits of external memory - DRAM ([SPR-HBM] and/or HBM).  The underlying heuristic assumes that a similar off-core traffic is generated by all IA cores. This metric does not aggregate non-data-read requests by this logical processor; requests from other IA Logical Processors/Physical Cores/sockets; or other non-IA devices like GPU; hence the maximum external memory bandwidth limits may or may not be approached when this metric is flagged (see Uncore counters for that). Related metrics: tma_fb_full, tma_info_bottleneck_cache_memory_bandwidth, tma_info_system_dram_bw_use, tma_sq_full",
2161ad10c920SIan Rogers        "ScaleUnit": "100%",
2162ad10c920SIan Rogers        "Unit": "cpu_core"
2163ad10c920SIan Rogers    },
2164ad10c920SIan Rogers    {
216552530942SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles where the performance was likely hurt due to latency from external memory - DRAM ([SPR-HBM] and/or HBM)",
2166c04fcf7cSIan Rogers        "MetricExpr": "min(cpu_core@CPU_CLK_UNHALTED.THREAD@, cpu_core@OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD@) / tma_info_thread_clks - tma_mem_bandwidth",
2167*17d4b192SIan Rogers        "MetricGroup": "BvML;MemoryLat;Offcore;TopdownL4;tma_L4_group;tma_dram_bound_group;tma_issueLat",
2168ad10c920SIan Rogers        "MetricName": "tma_mem_latency",
2169ad10c920SIan Rogers        "MetricThreshold": "tma_mem_latency > 0.1 & (tma_dram_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
217052530942SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles where the performance was likely hurt due to latency from external memory - DRAM ([SPR-HBM] and/or HBM).  This metric does not aggregate requests from other Logical Processors/Physical Cores/sockets (see Uncore counters for that). Related metrics: tma_info_bottleneck_cache_memory_latency, tma_l3_hit_latency",
2171ad10c920SIan Rogers        "ScaleUnit": "100%",
2172ad10c920SIan Rogers        "Unit": "cpu_core"
2173ad10c920SIan Rogers    },
2174ad10c920SIan Rogers    {
2175ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of slots the Memory subsystem within the Backend was a bottleneck",
2176c04fcf7cSIan Rogers        "MetricExpr": "cpu_core@topdown\\-mem\\-bound@ / (cpu_core@topdown\\-fe\\-bound@ + cpu_core@topdown\\-bad\\-spec@ + cpu_core@topdown\\-retiring@ + cpu_core@topdown\\-be\\-bound@) + 0 * tma_info_thread_slots",
2177ad10c920SIan Rogers        "MetricGroup": "Backend;TmaL2;TopdownL2;tma_L2_group;tma_backend_bound_group",
2178ad10c920SIan Rogers        "MetricName": "tma_memory_bound",
2179ad10c920SIan Rogers        "MetricThreshold": "tma_memory_bound > 0.2 & tma_backend_bound > 0.2",
2180ccc66c60SIan Rogers        "MetricgroupNoGroup": "TopdownL2",
2181ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of slots the Memory subsystem within the Backend was a bottleneck.  Memory Bound estimates fraction of slots where pipeline is likely stalled due to demand load or store instructions. This accounts mainly for (1) non-completed in-flight memory demand loads which coincides with execution units starvation; in addition to (2) cases where stores could impose backpressure on the pipeline when many of them get buffered at the same time (less common out of the two).",
2182ad10c920SIan Rogers        "ScaleUnit": "100%",
2183ad10c920SIan Rogers        "Unit": "cpu_core"
2184ad10c920SIan Rogers    },
2185ad10c920SIan Rogers    {
2186ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to LFENCE Instructions.",
2187becc24e9SIan Rogers        "MetricConstraint": "NO_GROUP_EVENTS_NMI",
2188c04fcf7cSIan Rogers        "MetricExpr": "13 * cpu_core@MISC2_RETIRED.LFENCE@ / tma_info_thread_clks",
218952530942SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_serializing_operation_group",
2190ad10c920SIan Rogers        "MetricName": "tma_memory_fence",
219152530942SIan Rogers        "MetricThreshold": "tma_memory_fence > 0.05 & (tma_serializing_operation > 0.1 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
2192ad10c920SIan Rogers        "ScaleUnit": "100%",
2193ad10c920SIan Rogers        "Unit": "cpu_core"
2194ad10c920SIan Rogers    },
2195ad10c920SIan Rogers    {
2196ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring memory operations -- uops for memory load or store accesses.",
2197c04fcf7cSIan Rogers        "MetricExpr": "tma_light_operations * cpu_core@MEM_UOP_RETIRED.ANY@ / (tma_retiring * tma_info_thread_slots)",
2198ad10c920SIan Rogers        "MetricGroup": "Pipeline;TopdownL3;tma_L3_group;tma_light_operations_group",
2199ad10c920SIan Rogers        "MetricName": "tma_memory_operations",
2200ad10c920SIan Rogers        "MetricThreshold": "tma_memory_operations > 0.1 & tma_light_operations > 0.6",
2201ad10c920SIan Rogers        "ScaleUnit": "100%",
2202ad10c920SIan Rogers        "Unit": "cpu_core"
2203ad10c920SIan Rogers    },
2204ad10c920SIan Rogers    {
2205ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of slots the CPU was retiring uops fetched by the Microcode Sequencer (MS) unit",
2206becc24e9SIan Rogers        "MetricExpr": "cpu_core@UOPS_RETIRED.MS@ / tma_info_thread_slots",
2207ad10c920SIan Rogers        "MetricGroup": "MicroSeq;TopdownL3;tma_L3_group;tma_heavy_operations_group;tma_issueMC;tma_issueMS",
2208ad10c920SIan Rogers        "MetricName": "tma_microcode_sequencer",
2209ad10c920SIan Rogers        "MetricThreshold": "tma_microcode_sequencer > 0.05 & tma_heavy_operations > 0.1",
221052530942SIan Rogers        "PublicDescription": "This metric represents fraction of slots the CPU was retiring uops fetched by the Microcode Sequencer (MS) unit.  The MS is used for CISC instructions not supported by the default decoders (like repeat move strings; or CPUID); or by microcode assists used to address some operation modes (like in Floating Point assists). These cases can often be avoided. Sample with: UOPS_RETIRED.MS. Related metrics: tma_clears_resteers, tma_info_bottleneck_irregular_overhead, tma_l1_bound, tma_machine_clears, tma_ms_switches",
2211ad10c920SIan Rogers        "ScaleUnit": "100%",
2212ad10c920SIan Rogers        "Unit": "cpu_core"
2213ad10c920SIan Rogers    },
2214ad10c920SIan Rogers    {
2215ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to Branch Resteers as a result of Branch Misprediction at execution stage",
2216c04fcf7cSIan Rogers        "MetricExpr": "tma_branch_mispredicts / tma_bad_speculation * cpu_core@INT_MISC.CLEAR_RESTEER_CYCLES@ / tma_info_thread_clks",
2217*17d4b192SIan Rogers        "MetricGroup": "BadSpec;BrMispredicts;BvMP;TopdownL4;tma_L4_group;tma_branch_resteers_group;tma_issueBM",
2218ad10c920SIan Rogers        "MetricName": "tma_mispredicts_resteers",
2219ad10c920SIan Rogers        "MetricThreshold": "tma_mispredicts_resteers > 0.05 & (tma_branch_resteers > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15))",
2220c04fcf7cSIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to Branch Resteers as a result of Branch Misprediction at execution stage. Sample with: INT_MISC.CLEAR_RESTEER_CYCLES. Related metrics: tma_branch_mispredicts, tma_info_bad_spec_branch_misprediction_cost, tma_info_bottleneck_mispredictions",
2221ad10c920SIan Rogers        "ScaleUnit": "100%",
2222ad10c920SIan Rogers        "Unit": "cpu_core"
2223ad10c920SIan Rogers    },
2224ad10c920SIan Rogers    {
2225ad10c920SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles in which CPU was likely limited due to the MITE pipeline (the legacy decode pipeline)",
2226c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@IDQ.MITE_CYCLES_ANY@ - cpu_core@IDQ.MITE_CYCLES_OK@) / tma_info_core_core_clks / 2",
2227ad10c920SIan Rogers        "MetricGroup": "DSBmiss;FetchBW;TopdownL3;tma_L3_group;tma_fetch_bandwidth_group",
2228ad10c920SIan Rogers        "MetricName": "tma_mite",
222952530942SIan Rogers        "MetricThreshold": "tma_mite > 0.1 & tma_fetch_bandwidth > 0.2",
2230ad10c920SIan Rogers        "PublicDescription": "This metric represents Core fraction of cycles in which CPU was likely limited due to the MITE pipeline (the legacy decode pipeline). This pipeline is used for code that was not pre-cached in the DSB or LSD. For example; inefficiencies due to asymmetric decoders; use of long immediate or LCP can manifest as MITE fetch bandwidth bottleneck. Sample with: FRONTEND_RETIRED.ANY_DSB_MISS",
2231ad10c920SIan Rogers        "ScaleUnit": "100%",
2232ad10c920SIan Rogers        "Unit": "cpu_core"
2233ad10c920SIan Rogers    },
2234ad10c920SIan Rogers    {
223552530942SIan Rogers        "BriefDescription": "This metric estimates penalty in terms of percentage of([SKL+] injected blend uops out of all Uops Issued -- the Count Domain; [ADL+] cycles)",
2236c04fcf7cSIan Rogers        "MetricExpr": "160 * cpu_core@ASSISTS.SSE_AVX_MIX@ / tma_info_thread_clks",
2237ad10c920SIan Rogers        "MetricGroup": "TopdownL5;tma_L5_group;tma_issueMV;tma_ports_utilized_0_group",
2238ad10c920SIan Rogers        "MetricName": "tma_mixing_vectors",
2239ad10c920SIan Rogers        "MetricThreshold": "tma_mixing_vectors > 0.05",
224052530942SIan Rogers        "PublicDescription": "This metric estimates penalty in terms of percentage of([SKL+] injected blend uops out of all Uops Issued -- the Count Domain; [ADL+] cycles). Usually a Mixing_Vectors over 5% is worth investigating. Read more in Appendix B1 of the Optimizations Guide for this topic. Related metrics: tma_ms_switches",
2241ad10c920SIan Rogers        "ScaleUnit": "100%",
2242ad10c920SIan Rogers        "Unit": "cpu_core"
2243ad10c920SIan Rogers    },
2244ad10c920SIan Rogers    {
2245ad10c920SIan Rogers        "BriefDescription": "This metric estimates the fraction of cycles when the CPU was stalled due to switches of uop delivery to the Microcode Sequencer (MS)",
224652530942SIan Rogers        "MetricExpr": "3 * cpu_core@UOPS_RETIRED.MS\\,cmask\\=1\\,edge@ / (cpu_core@UOPS_RETIRED.SLOTS@ / cpu_core@UOPS_ISSUED.ANY@) / tma_info_thread_clks",
2247ad10c920SIan Rogers        "MetricGroup": "FetchLat;MicroSeq;TopdownL3;tma_L3_group;tma_fetch_latency_group;tma_issueMC;tma_issueMS;tma_issueMV;tma_issueSO",
2248ad10c920SIan Rogers        "MetricName": "tma_ms_switches",
2249ad10c920SIan Rogers        "MetricThreshold": "tma_ms_switches > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15)",
225052530942SIan Rogers        "PublicDescription": "This metric estimates the fraction of cycles when the CPU was stalled due to switches of uop delivery to the Microcode Sequencer (MS). Commonly used instructions are optimized for delivery by the DSB (decoded i-cache) or MITE (legacy instruction decode) pipelines. Certain operations cannot be handled natively by the execution pipeline; and must be performed by microcode (small programs injected into the execution stream). Switching to the MS too often can negatively impact performance. The MS is designated to deliver long uop flows required by CISC instructions like CPUID; or uncommon conditions like Floating Point Assists when dealing with Denormals. Sample with: FRONTEND_RETIRED.MS_FLOWS. Related metrics: tma_clears_resteers, tma_info_bottleneck_irregular_overhead, tma_l1_bound, tma_machine_clears, tma_microcode_sequencer, tma_mixing_vectors, tma_serializing_operation",
2251ad10c920SIan Rogers        "ScaleUnit": "100%",
2252ad10c920SIan Rogers        "Unit": "cpu_core"
2253ad10c920SIan Rogers    },
2254ad10c920SIan Rogers    {
2255ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring branch instructions that were not fused",
2256c04fcf7cSIan Rogers        "MetricExpr": "tma_light_operations * (cpu_core@BR_INST_RETIRED.ALL_BRANCHES@ - cpu_core@INST_RETIRED.MACRO_FUSED@) / (tma_retiring * tma_info_thread_slots)",
2257*17d4b192SIan Rogers        "MetricGroup": "Branches;BvBO;Pipeline;TopdownL3;tma_L3_group;tma_light_operations_group",
2258ad10c920SIan Rogers        "MetricName": "tma_non_fused_branches",
2259ad10c920SIan Rogers        "MetricThreshold": "tma_non_fused_branches > 0.1 & tma_light_operations > 0.6",
2260ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of slots where the CPU was retiring branch instructions that were not fused. Non-conditional branches like direct JMP or CALL would count here. Can be used to examine fusible conditional jumps that were not fused.",
2261ad10c920SIan Rogers        "ScaleUnit": "100%",
2262ad10c920SIan Rogers        "Unit": "cpu_core"
2263ad10c920SIan Rogers    },
2264ad10c920SIan Rogers    {
2265ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring NOP (no op) instructions",
2266c04fcf7cSIan Rogers        "MetricExpr": "tma_light_operations * cpu_core@INST_RETIRED.NOP@ / (tma_retiring * tma_info_thread_slots)",
2267*17d4b192SIan Rogers        "MetricGroup": "BvBO;Pipeline;TopdownL4;tma_L4_group;tma_other_light_ops_group",
2268ad10c920SIan Rogers        "MetricName": "tma_nop_instructions",
226952530942SIan Rogers        "MetricThreshold": "tma_nop_instructions > 0.1 & (tma_other_light_ops > 0.3 & tma_light_operations > 0.6)",
2270ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of slots where the CPU was retiring NOP (no op) instructions. Compilers often use NOPs for certain address alignments - e.g. start address of a function or loop body. Sample with: INST_RETIRED.NOP",
2271ad10c920SIan Rogers        "ScaleUnit": "100%",
2272ad10c920SIan Rogers        "Unit": "cpu_core"
2273ad10c920SIan Rogers    },
2274ad10c920SIan Rogers    {
2275ad10c920SIan Rogers        "BriefDescription": "This metric represents the remaining light uops fraction the CPU has executed - remaining means not covered by other sibling nodes",
227652530942SIan Rogers        "MetricExpr": "max(0, tma_light_operations - (tma_fp_arith + tma_int_operations + tma_memory_operations + tma_fused_instructions + tma_non_fused_branches))",
2277ad10c920SIan Rogers        "MetricGroup": "Pipeline;TopdownL3;tma_L3_group;tma_light_operations_group",
2278ad10c920SIan Rogers        "MetricName": "tma_other_light_ops",
2279ad10c920SIan Rogers        "MetricThreshold": "tma_other_light_ops > 0.3 & tma_light_operations > 0.6",
2280ad10c920SIan Rogers        "PublicDescription": "This metric represents the remaining light uops fraction the CPU has executed - remaining means not covered by other sibling nodes. May undercount due to FMA double counting",
2281ad10c920SIan Rogers        "ScaleUnit": "100%",
2282ad10c920SIan Rogers        "Unit": "cpu_core"
2283ad10c920SIan Rogers    },
2284ad10c920SIan Rogers    {
228552530942SIan Rogers        "BriefDescription": "This metric estimates fraction of slots the CPU was stalled due to other cases of misprediction (non-retired x86 branches or other types).",
228652530942SIan Rogers        "MetricExpr": "max(tma_branch_mispredicts * (1 - cpu_core@BR_MISP_RETIRED.ALL_BRANCHES@ / (cpu_core@INT_MISC.CLEARS_COUNT@ - cpu_core@MACHINE_CLEARS.COUNT@)), 0.0001)",
2287*17d4b192SIan Rogers        "MetricGroup": "BrMispredicts;BvIO;TopdownL3;tma_L3_group;tma_branch_mispredicts_group",
228852530942SIan Rogers        "MetricName": "tma_other_mispredicts",
228952530942SIan Rogers        "MetricThreshold": "tma_other_mispredicts > 0.05 & (tma_branch_mispredicts > 0.1 & tma_bad_speculation > 0.15)",
229052530942SIan Rogers        "ScaleUnit": "100%",
229152530942SIan Rogers        "Unit": "cpu_core"
229252530942SIan Rogers    },
229352530942SIan Rogers    {
229452530942SIan Rogers        "BriefDescription": "This metric represents fraction of slots the CPU has wasted due to Nukes (Machine Clears) not related to memory ordering.",
229552530942SIan Rogers        "MetricExpr": "max(tma_machine_clears * (1 - cpu_core@MACHINE_CLEARS.MEMORY_ORDERING@ / cpu_core@MACHINE_CLEARS.COUNT@), 0.0001)",
2296*17d4b192SIan Rogers        "MetricGroup": "BvIO;Machine_Clears;TopdownL3;tma_L3_group;tma_machine_clears_group",
229752530942SIan Rogers        "MetricName": "tma_other_nukes",
229852530942SIan Rogers        "MetricThreshold": "tma_other_nukes > 0.05 & (tma_machine_clears > 0.1 & tma_bad_speculation > 0.15)",
229952530942SIan Rogers        "ScaleUnit": "100%",
230052530942SIan Rogers        "Unit": "cpu_core"
230152530942SIan Rogers    },
230252530942SIan Rogers    {
2303ad10c920SIan Rogers        "BriefDescription": "This metric roughly estimates fraction of slots the CPU retired uops as a result of handing Page Faults",
2304c04fcf7cSIan Rogers        "MetricExpr": "99 * cpu_core@ASSISTS.PAGE_FAULT@ / tma_info_thread_slots",
2305ad10c920SIan Rogers        "MetricGroup": "TopdownL5;tma_L5_group;tma_assists_group",
2306ad10c920SIan Rogers        "MetricName": "tma_page_faults",
2307ad10c920SIan Rogers        "MetricThreshold": "tma_page_faults > 0.05",
2308ad10c920SIan Rogers        "PublicDescription": "This metric roughly estimates fraction of slots the CPU retired uops as a result of handing Page Faults. A Page Fault may apply on first application access to a memory page. Note operating system handling of page faults accounts for the majority of its cost.",
2309ad10c920SIan Rogers        "ScaleUnit": "100%",
2310ad10c920SIan Rogers        "Unit": "cpu_core"
2311ad10c920SIan Rogers    },
2312ad10c920SIan Rogers    {
2313ad10c920SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port 0 ([SNB+] ALU; [HSW+] ALU and 2nd branch)",
2314becc24e9SIan Rogers        "MetricExpr": "cpu_core@UOPS_DISPATCHED.PORT_0@ / tma_info_core_core_clks",
2315ad10c920SIan Rogers        "MetricGroup": "Compute;TopdownL6;tma_L6_group;tma_alu_op_utilization_group;tma_issue2P",
2316ad10c920SIan Rogers        "MetricName": "tma_port_0",
2317ad10c920SIan Rogers        "MetricThreshold": "tma_port_0 > 0.6",
2318ad10c920SIan Rogers        "PublicDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port 0 ([SNB+] ALU; [HSW+] ALU and 2nd branch). Sample with: UOPS_DISPATCHED.PORT_0. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_1, tma_port_5, tma_port_6, tma_ports_utilized_2",
2319ad10c920SIan Rogers        "ScaleUnit": "100%",
2320ad10c920SIan Rogers        "Unit": "cpu_core"
2321ad10c920SIan Rogers    },
2322ad10c920SIan Rogers    {
2323ad10c920SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port 1 (ALU)",
2324becc24e9SIan Rogers        "MetricExpr": "cpu_core@UOPS_DISPATCHED.PORT_1@ / tma_info_core_core_clks",
2325ad10c920SIan Rogers        "MetricGroup": "TopdownL6;tma_L6_group;tma_alu_op_utilization_group;tma_issue2P",
2326ad10c920SIan Rogers        "MetricName": "tma_port_1",
2327ad10c920SIan Rogers        "MetricThreshold": "tma_port_1 > 0.6",
2328ad10c920SIan Rogers        "PublicDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port 1 (ALU). Sample with: UOPS_DISPATCHED.PORT_1. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_0, tma_port_5, tma_port_6, tma_ports_utilized_2",
2329ad10c920SIan Rogers        "ScaleUnit": "100%",
2330ad10c920SIan Rogers        "Unit": "cpu_core"
2331ad10c920SIan Rogers    },
2332ad10c920SIan Rogers    {
2333ad10c920SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port 6 ([HSW+] Primary Branch and simple ALU)",
2334becc24e9SIan Rogers        "MetricExpr": "cpu_core@UOPS_DISPATCHED.PORT_6@ / tma_info_core_core_clks",
2335ad10c920SIan Rogers        "MetricGroup": "TopdownL6;tma_L6_group;tma_alu_op_utilization_group;tma_issue2P",
2336ad10c920SIan Rogers        "MetricName": "tma_port_6",
2337ad10c920SIan Rogers        "MetricThreshold": "tma_port_6 > 0.6",
2338ad10c920SIan Rogers        "PublicDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port 6 ([HSW+] Primary Branch and simple ALU). Sample with: UOPS_DISPATCHED.PORT_6. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_0, tma_port_1, tma_port_5, tma_ports_utilized_2",
2339ad10c920SIan Rogers        "ScaleUnit": "100%",
2340ad10c920SIan Rogers        "Unit": "cpu_core"
2341ad10c920SIan Rogers    },
2342ad10c920SIan Rogers    {
2343ad10c920SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles the CPU performance was potentially limited due to Core computation issues (non divider-related)",
234452530942SIan Rogers        "MetricExpr": "((tma_ports_utilized_0 * tma_info_thread_clks + (cpu_core@EXE_ACTIVITY.1_PORTS_UTIL@ + tma_retiring * cpu_core@EXE_ACTIVITY.2_PORTS_UTIL\\,umask\\=0xc@)) / tma_info_thread_clks if cpu_core@ARITH.DIV_ACTIVE@ < cpu_core@CYCLE_ACTIVITY.STALLS_TOTAL@ - cpu_core@EXE_ACTIVITY.BOUND_ON_LOADS@ else (cpu_core@EXE_ACTIVITY.1_PORTS_UTIL@ + tma_retiring * cpu_core@EXE_ACTIVITY.2_PORTS_UTIL\\,umask\\=0xc@) / tma_info_thread_clks)",
2345ad10c920SIan Rogers        "MetricGroup": "PortsUtil;TopdownL3;tma_L3_group;tma_core_bound_group",
2346ad10c920SIan Rogers        "MetricName": "tma_ports_utilization",
2347ad10c920SIan Rogers        "MetricThreshold": "tma_ports_utilization > 0.15 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2)",
2348ad10c920SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles the CPU performance was potentially limited due to Core computation issues (non divider-related).  Two distinct categories can be attributed into this metric: (1) heavy data-dependency among contiguous instructions would manifest in this metric - such cases are often referred to as low Instruction Level Parallelism (ILP). (2) Contention on some hardware execution unit other than Divider. For example; when there are too many multiply operations.",
2349ad10c920SIan Rogers        "ScaleUnit": "100%",
2350ad10c920SIan Rogers        "Unit": "cpu_core"
2351ad10c920SIan Rogers    },
2352ad10c920SIan Rogers    {
2353ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles CPU executed no uops on any execution port (Logical Processor cycles since ICL, Physical Core cycles otherwise)",
2354*17d4b192SIan Rogers        "MetricExpr": "(cpu_core@EXE_ACTIVITY.EXE_BOUND_0_PORTS@ + max(cpu_core@RS.EMPTY\\,umask\\=1@ - cpu_core@RESOURCE_STALLS.SCOREBOARD@, 0)) / tma_info_thread_clks * (cpu_core@CYCLE_ACTIVITY.STALLS_TOTAL@ - cpu_core@EXE_ACTIVITY.BOUND_ON_LOADS@) / tma_info_thread_clks",
2355ad10c920SIan Rogers        "MetricGroup": "PortsUtil;TopdownL4;tma_L4_group;tma_ports_utilization_group",
2356ad10c920SIan Rogers        "MetricName": "tma_ports_utilized_0",
2357ad10c920SIan Rogers        "MetricThreshold": "tma_ports_utilized_0 > 0.2 & (tma_ports_utilization > 0.15 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
2358ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of cycles CPU executed no uops on any execution port (Logical Processor cycles since ICL, Physical Core cycles otherwise). Long-latency instructions like divides may contribute to this metric.",
2359ad10c920SIan Rogers        "ScaleUnit": "100%",
2360ad10c920SIan Rogers        "Unit": "cpu_core"
2361ad10c920SIan Rogers    },
2362ad10c920SIan Rogers    {
2363ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles where the CPU executed total of 1 uop per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise)",
2364becc24e9SIan Rogers        "MetricExpr": "cpu_core@EXE_ACTIVITY.1_PORTS_UTIL@ / tma_info_thread_clks",
2365ad10c920SIan Rogers        "MetricGroup": "PortsUtil;TopdownL4;tma_L4_group;tma_issueL1;tma_ports_utilization_group",
2366ad10c920SIan Rogers        "MetricName": "tma_ports_utilized_1",
2367ad10c920SIan Rogers        "MetricThreshold": "tma_ports_utilized_1 > 0.2 & (tma_ports_utilization > 0.15 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
2368ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of cycles where the CPU executed total of 1 uop per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise). This can be due to heavy data-dependency among software instructions; or over oversubscribing a particular hardware resource. In some other cases with high 1_Port_Utilized and L1_Bound; this metric can point to L1 data-cache latency bottleneck that may not necessarily manifest with complete execution starvation (due to the short L1 latency e.g. walking a linked list) - looking at the assembly can be helpful. Sample with: EXE_ACTIVITY.1_PORTS_UTIL. Related metrics: tma_l1_bound",
2369ad10c920SIan Rogers        "ScaleUnit": "100%",
2370ad10c920SIan Rogers        "Unit": "cpu_core"
2371ad10c920SIan Rogers    },
2372ad10c920SIan Rogers    {
2373ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles CPU executed total of 2 uops per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise)",
2374becc24e9SIan Rogers        "MetricConstraint": "NO_GROUP_EVENTS_NMI",
2375becc24e9SIan Rogers        "MetricExpr": "cpu_core@EXE_ACTIVITY.2_PORTS_UTIL@ / tma_info_thread_clks",
2376ad10c920SIan Rogers        "MetricGroup": "PortsUtil;TopdownL4;tma_L4_group;tma_issue2P;tma_ports_utilization_group",
2377ad10c920SIan Rogers        "MetricName": "tma_ports_utilized_2",
2378ad10c920SIan Rogers        "MetricThreshold": "tma_ports_utilized_2 > 0.15 & (tma_ports_utilization > 0.15 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
2379ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of cycles CPU executed total of 2 uops per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise).  Loop Vectorization -most compilers feature auto-Vectorization options today- reduces pressure on the execution ports as multiple elements are calculated with same uop. Sample with: EXE_ACTIVITY.2_PORTS_UTIL. Related metrics: tma_fp_scalar, tma_fp_vector, tma_fp_vector_128b, tma_fp_vector_256b, tma_fp_vector_512b, tma_int_vector_128b, tma_int_vector_256b, tma_port_0, tma_port_1, tma_port_5, tma_port_6",
2380ad10c920SIan Rogers        "ScaleUnit": "100%",
2381ad10c920SIan Rogers        "Unit": "cpu_core"
2382ad10c920SIan Rogers    },
2383ad10c920SIan Rogers    {
2384ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles CPU executed total of 3 or more uops per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise)",
2385becc24e9SIan Rogers        "MetricConstraint": "NO_GROUP_EVENTS_NMI",
2386becc24e9SIan Rogers        "MetricExpr": "cpu_core@UOPS_EXECUTED.CYCLES_GE_3@ / tma_info_thread_clks",
2387*17d4b192SIan Rogers        "MetricGroup": "BvCB;PortsUtil;TopdownL4;tma_L4_group;tma_ports_utilization_group",
2388ad10c920SIan Rogers        "MetricName": "tma_ports_utilized_3m",
238952530942SIan Rogers        "MetricThreshold": "tma_ports_utilized_3m > 0.4 & (tma_ports_utilization > 0.15 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
2390ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of cycles CPU executed total of 3 or more uops per cycle on all execution ports (Logical Processor cycles since ICL, Physical Core cycles otherwise). Sample with: UOPS_EXECUTED.CYCLES_GE_3",
2391ad10c920SIan Rogers        "ScaleUnit": "100%",
2392ad10c920SIan Rogers        "Unit": "cpu_core"
2393ad10c920SIan Rogers    },
2394ad10c920SIan Rogers    {
2395ad10c920SIan Rogers        "BriefDescription": "This category represents fraction of slots utilized by useful work i.e. issued uops that eventually get retired",
2396969a4661SKan Liang        "DefaultMetricgroupName": "TopdownL1",
2397c04fcf7cSIan Rogers        "MetricExpr": "cpu_core@topdown\\-retiring@ / (cpu_core@topdown\\-fe\\-bound@ + cpu_core@topdown\\-bad\\-spec@ + cpu_core@topdown\\-retiring@ + cpu_core@topdown\\-be\\-bound@) + 0 * tma_info_thread_slots",
2398*17d4b192SIan Rogers        "MetricGroup": "BvUW;Default;TmaL1;TopdownL1;tma_L1_group",
2399ad10c920SIan Rogers        "MetricName": "tma_retiring",
2400ad10c920SIan Rogers        "MetricThreshold": "tma_retiring > 0.7 | tma_heavy_operations > 0.1",
2401969a4661SKan Liang        "MetricgroupNoGroup": "TopdownL1;Default",
2402ad10c920SIan Rogers        "PublicDescription": "This category represents fraction of slots utilized by useful work i.e. issued uops that eventually get retired. Ideally; all pipeline slots would be attributed to the Retiring category.  Retiring of 100% would indicate the maximum Pipeline_Width throughput was achieved.  Maximizing Retiring typically increases the Instructions-per-cycle (see IPC metric). Note that a high Retiring value does not necessary mean there is no room for more performance.  For example; Heavy-operations or Microcode Assists are categorized under Retiring. They often indicate suboptimal performance and can often be optimized or avoided. Sample with: UOPS_RETIRED.SLOTS",
2403ad10c920SIan Rogers        "ScaleUnit": "100%",
2404ad10c920SIan Rogers        "Unit": "cpu_core"
2405ad10c920SIan Rogers    },
2406ad10c920SIan Rogers    {
2407ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU issue-pipeline was stalled due to serializing operations",
240852530942SIan Rogers        "MetricExpr": "cpu_core@RESOURCE_STALLS.SCOREBOARD@ / tma_info_thread_clks + tma_c02_wait",
2409*17d4b192SIan Rogers        "MetricGroup": "BvIO;PortsUtil;TopdownL3;tma_L3_group;tma_core_bound_group;tma_issueSO",
2410ad10c920SIan Rogers        "MetricName": "tma_serializing_operation",
241152530942SIan Rogers        "MetricThreshold": "tma_serializing_operation > 0.1 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2)",
2412ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU issue-pipeline was stalled due to serializing operations. Instructions like CPUID; WRMSR or LFENCE serialize the out-of-order execution which may limit performance. Sample with: RESOURCE_STALLS.SCOREBOARD. Related metrics: tma_ms_switches",
2413ad10c920SIan Rogers        "ScaleUnit": "100%",
2414ad10c920SIan Rogers        "Unit": "cpu_core"
2415ad10c920SIan Rogers    },
2416ad10c920SIan Rogers    {
241752530942SIan Rogers        "BriefDescription": "This metric represents fraction of slots where the CPU was retiring Shuffle operations of 256-bit vector size (FP or Integer)",
241852530942SIan Rogers        "MetricExpr": "tma_light_operations * cpu_core@INT_VEC_RETIRED.SHUFFLES@ / (tma_retiring * tma_info_thread_slots)",
241952530942SIan Rogers        "MetricGroup": "HPC;Pipeline;TopdownL4;tma_L4_group;tma_other_light_ops_group",
242052530942SIan Rogers        "MetricName": "tma_shuffles_256b",
242152530942SIan Rogers        "MetricThreshold": "tma_shuffles_256b > 0.1 & (tma_other_light_ops > 0.3 & tma_light_operations > 0.6)",
242252530942SIan Rogers        "PublicDescription": "This metric represents fraction of slots where the CPU was retiring Shuffle operations of 256-bit vector size (FP or Integer). Shuffles may incur slow cross \"vector lane\" data transfers.",
2423ad10c920SIan Rogers        "ScaleUnit": "100%",
2424ad10c920SIan Rogers        "Unit": "cpu_core"
2425ad10c920SIan Rogers    },
2426ad10c920SIan Rogers    {
2427ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to PAUSE Instructions",
2428becc24e9SIan Rogers        "MetricConstraint": "NO_GROUP_EVENTS_NMI",
2429becc24e9SIan Rogers        "MetricExpr": "cpu_core@CPU_CLK_UNHALTED.PAUSE@ / tma_info_thread_clks",
243052530942SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_serializing_operation_group",
2431ad10c920SIan Rogers        "MetricName": "tma_slow_pause",
243252530942SIan Rogers        "MetricThreshold": "tma_slow_pause > 0.05 & (tma_serializing_operation > 0.1 & (tma_core_bound > 0.1 & tma_backend_bound > 0.2))",
2433ad10c920SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to PAUSE Instructions. Sample with: CPU_CLK_UNHALTED.PAUSE_INST",
2434ad10c920SIan Rogers        "ScaleUnit": "100%",
2435ad10c920SIan Rogers        "Unit": "cpu_core"
2436ad10c920SIan Rogers    },
2437ad10c920SIan Rogers    {
2438ad10c920SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles handling memory load split accesses - load that cross 64-byte cache line boundary",
2439c04fcf7cSIan Rogers        "MetricExpr": "tma_info_memory_load_miss_real_latency * cpu_core@LD_BLOCKS.NO_SR@ / tma_info_thread_clks",
2440ad10c920SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_l1_bound_group",
2441ad10c920SIan Rogers        "MetricName": "tma_split_loads",
2442ad10c920SIan Rogers        "MetricThreshold": "tma_split_loads > 0.2 & (tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
2443ad10c920SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles handling memory load split accesses - load that cross 64-byte cache line boundary. Sample with: MEM_INST_RETIRED.SPLIT_LOADS_PS",
2444ad10c920SIan Rogers        "ScaleUnit": "100%",
2445ad10c920SIan Rogers        "Unit": "cpu_core"
2446ad10c920SIan Rogers    },
2447ad10c920SIan Rogers    {
2448ad10c920SIan Rogers        "BriefDescription": "This metric represents rate of split store accesses",
2449becc24e9SIan Rogers        "MetricExpr": "cpu_core@MEM_INST_RETIRED.SPLIT_STORES@ / tma_info_core_core_clks",
2450ad10c920SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_issueSpSt;tma_store_bound_group",
2451ad10c920SIan Rogers        "MetricName": "tma_split_stores",
2452ad10c920SIan Rogers        "MetricThreshold": "tma_split_stores > 0.2 & (tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
2453ad10c920SIan Rogers        "PublicDescription": "This metric represents rate of split store accesses.  Consider aligning your data to the 64-byte cache line granularity. Sample with: MEM_INST_RETIRED.SPLIT_STORES_PS. Related metrics: tma_port_4",
2454ad10c920SIan Rogers        "ScaleUnit": "100%",
2455ad10c920SIan Rogers        "Unit": "cpu_core"
2456ad10c920SIan Rogers    },
2457ad10c920SIan Rogers    {
2458ad10c920SIan Rogers        "BriefDescription": "This metric measures fraction of cycles where the Super Queue (SQ) was full taking into account all request-types and both hardware SMT threads (Logical Processors)",
2459c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@XQ.FULL_CYCLES@ + cpu_core@L1D_PEND_MISS.L2_STALLS@) / tma_info_thread_clks",
2460*17d4b192SIan Rogers        "MetricGroup": "BvMS;MemoryBW;Offcore;TopdownL4;tma_L4_group;tma_issueBW;tma_l3_bound_group",
2461ad10c920SIan Rogers        "MetricName": "tma_sq_full",
2462ad10c920SIan Rogers        "MetricThreshold": "tma_sq_full > 0.3 & (tma_l3_bound > 0.05 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
246352530942SIan Rogers        "PublicDescription": "This metric measures fraction of cycles where the Super Queue (SQ) was full taking into account all request-types and both hardware SMT threads (Logical Processors). Related metrics: tma_fb_full, tma_info_bottleneck_cache_memory_bandwidth, tma_info_system_dram_bw_use, tma_mem_bandwidth",
2464ad10c920SIan Rogers        "ScaleUnit": "100%",
2465ad10c920SIan Rogers        "Unit": "cpu_core"
2466ad10c920SIan Rogers    },
2467ad10c920SIan Rogers    {
2468ad10c920SIan Rogers        "BriefDescription": "This metric estimates how often CPU was stalled  due to RFO store memory accesses; RFO store issue a read-for-ownership request before the write",
2469becc24e9SIan Rogers        "MetricExpr": "cpu_core@EXE_ACTIVITY.BOUND_ON_STORES@ / tma_info_thread_clks",
2470ad10c920SIan Rogers        "MetricGroup": "MemoryBound;TmaL3mem;TopdownL3;tma_L3_group;tma_memory_bound_group",
2471ad10c920SIan Rogers        "MetricName": "tma_store_bound",
2472ad10c920SIan Rogers        "MetricThreshold": "tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)",
2473ad10c920SIan Rogers        "PublicDescription": "This metric estimates how often CPU was stalled  due to RFO store memory accesses; RFO store issue a read-for-ownership request before the write. Even though store accesses do not typically stall out-of-order CPUs; there are few cases where stores can lead to actual stalls. This metric will be flagged should RFO stores be a bottleneck. Sample with: MEM_INST_RETIRED.ALL_STORES_PS",
2474ad10c920SIan Rogers        "ScaleUnit": "100%",
2475ad10c920SIan Rogers        "Unit": "cpu_core"
2476ad10c920SIan Rogers    },
2477ad10c920SIan Rogers    {
2478ad10c920SIan Rogers        "BriefDescription": "This metric roughly estimates fraction of cycles when the memory subsystem had loads blocked since they could not forward data from earlier (in program order) overlapping stores",
2479c04fcf7cSIan Rogers        "MetricExpr": "13 * cpu_core@LD_BLOCKS.STORE_FORWARD@ / tma_info_thread_clks",
2480ad10c920SIan Rogers        "MetricGroup": "TopdownL4;tma_L4_group;tma_l1_bound_group",
2481ad10c920SIan Rogers        "MetricName": "tma_store_fwd_blk",
2482ad10c920SIan Rogers        "MetricThreshold": "tma_store_fwd_blk > 0.1 & (tma_l1_bound > 0.1 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
2483ad10c920SIan Rogers        "PublicDescription": "This metric roughly estimates fraction of cycles when the memory subsystem had loads blocked since they could not forward data from earlier (in program order) overlapping stores. To streamline memory operations in the pipeline; a load can avoid waiting for memory if a prior in-flight store is writing the data that the load wants to read (store forwarding process). However; in some cases the load may be blocked for a significant time pending the store forward. For example; when the prior store is writing a smaller region than the load is reading.",
2484ad10c920SIan Rogers        "ScaleUnit": "100%",
2485ad10c920SIan Rogers        "Unit": "cpu_core"
2486ad10c920SIan Rogers    },
2487ad10c920SIan Rogers    {
2488ad10c920SIan Rogers        "BriefDescription": "This metric estimates fraction of cycles the CPU spent handling L1D store misses",
2489c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@MEM_STORE_RETIRED.L2_HIT@ * 10 * (1 - cpu_core@MEM_INST_RETIRED.LOCK_LOADS@ / cpu_core@MEM_INST_RETIRED.ALL_STORES@) + (1 - cpu_core@MEM_INST_RETIRED.LOCK_LOADS@ / cpu_core@MEM_INST_RETIRED.ALL_STORES@) * min(cpu_core@CPU_CLK_UNHALTED.THREAD@, cpu_core@OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DEMAND_RFO@)) / tma_info_thread_clks",
2490*17d4b192SIan Rogers        "MetricGroup": "BvML;MemoryLat;Offcore;TopdownL4;tma_L4_group;tma_issueRFO;tma_issueSL;tma_store_bound_group",
2491ad10c920SIan Rogers        "MetricName": "tma_store_latency",
2492ad10c920SIan Rogers        "MetricThreshold": "tma_store_latency > 0.1 & (tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
2493ad10c920SIan Rogers        "PublicDescription": "This metric estimates fraction of cycles the CPU spent handling L1D store misses. Store accesses usually less impact out-of-order core performance; however; holding resources for longer time can lead into undesired implications (e.g. contention on L1D fill-buffer entries - see FB_Full). Related metrics: tma_fb_full, tma_lock_latency",
2494ad10c920SIan Rogers        "ScaleUnit": "100%",
2495ad10c920SIan Rogers        "Unit": "cpu_core"
2496ad10c920SIan Rogers    },
2497ad10c920SIan Rogers    {
2498ad10c920SIan Rogers        "BriefDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port for Store operations",
2499c04fcf7cSIan Rogers        "MetricExpr": "(cpu_core@UOPS_DISPATCHED.PORT_4_9@ + cpu_core@UOPS_DISPATCHED.PORT_7_8@) / (4 * tma_info_core_core_clks)",
2500ad10c920SIan Rogers        "MetricGroup": "TopdownL5;tma_L5_group;tma_ports_utilized_3m_group",
2501ad10c920SIan Rogers        "MetricName": "tma_store_op_utilization",
2502ad10c920SIan Rogers        "MetricThreshold": "tma_store_op_utilization > 0.6",
2503ad10c920SIan Rogers        "PublicDescription": "This metric represents Core fraction of cycles CPU dispatched uops on execution port for Store operations. Sample with: UOPS_DISPATCHED.PORT_7_8",
2504ad10c920SIan Rogers        "ScaleUnit": "100%",
2505ad10c920SIan Rogers        "Unit": "cpu_core"
2506ad10c920SIan Rogers    },
2507ad10c920SIan Rogers    {
2508ad10c920SIan Rogers        "BriefDescription": "This metric roughly estimates the fraction of cycles where the TLB was missed by store accesses, hitting in the second-level TLB (STLB)",
2509ad10c920SIan Rogers        "MetricExpr": "tma_dtlb_store - tma_store_stlb_miss",
2510ad10c920SIan Rogers        "MetricGroup": "MemoryTLB;TopdownL5;tma_L5_group;tma_dtlb_store_group",
2511ad10c920SIan Rogers        "MetricName": "tma_store_stlb_hit",
2512ad10c920SIan Rogers        "MetricThreshold": "tma_store_stlb_hit > 0.05 & (tma_dtlb_store > 0.05 & (tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)))",
2513ad10c920SIan Rogers        "ScaleUnit": "100%",
2514ad10c920SIan Rogers        "Unit": "cpu_core"
2515ad10c920SIan Rogers    },
2516ad10c920SIan Rogers    {
2517ad10c920SIan Rogers        "BriefDescription": "This metric estimates the fraction of cycles where the STLB was missed by store accesses, performing a hardware page walk",
2518becc24e9SIan Rogers        "MetricExpr": "cpu_core@DTLB_STORE_MISSES.WALK_ACTIVE@ / tma_info_core_core_clks",
2519ad10c920SIan Rogers        "MetricGroup": "MemoryTLB;TopdownL5;tma_L5_group;tma_dtlb_store_group",
2520ad10c920SIan Rogers        "MetricName": "tma_store_stlb_miss",
2521ad10c920SIan Rogers        "MetricThreshold": "tma_store_stlb_miss > 0.05 & (tma_dtlb_store > 0.05 & (tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2)))",
2522ad10c920SIan Rogers        "ScaleUnit": "100%",
2523ad10c920SIan Rogers        "Unit": "cpu_core"
2524ad10c920SIan Rogers    },
2525ad10c920SIan Rogers    {
2526ad10c920SIan Rogers        "BriefDescription": "This metric estimates how often CPU was stalled  due to Streaming store memory accesses; Streaming store optimize out a read request required by RFO stores",
2527c04fcf7cSIan Rogers        "MetricExpr": "9 * cpu_core@OCR.STREAMING_WR.ANY_RESPONSE@ / tma_info_thread_clks",
2528ad10c920SIan Rogers        "MetricGroup": "MemoryBW;Offcore;TopdownL4;tma_L4_group;tma_issueSmSt;tma_store_bound_group",
2529ad10c920SIan Rogers        "MetricName": "tma_streaming_stores",
2530ad10c920SIan Rogers        "MetricThreshold": "tma_streaming_stores > 0.2 & (tma_store_bound > 0.2 & (tma_memory_bound > 0.2 & tma_backend_bound > 0.2))",
2531ad10c920SIan Rogers        "PublicDescription": "This metric estimates how often CPU was stalled  due to Streaming store memory accesses; Streaming store optimize out a read request required by RFO stores. Even though store accesses do not typically stall out-of-order CPUs; there are few cases where stores can lead to actual stalls. This metric will be flagged should Streaming stores be a bottleneck. Sample with: OCR.STREAMING_WR.ANY_RESPONSE. Related metrics: tma_fb_full",
2532ad10c920SIan Rogers        "ScaleUnit": "100%",
2533ad10c920SIan Rogers        "Unit": "cpu_core"
2534ad10c920SIan Rogers    },
2535ad10c920SIan Rogers    {
2536ad10c920SIan Rogers        "BriefDescription": "This metric represents fraction of cycles the CPU was stalled due to new branch address clears",
2537becc24e9SIan Rogers        "MetricExpr": "cpu_core@INT_MISC.UNKNOWN_BRANCH_CYCLES@ / tma_info_thread_clks",
2538*17d4b192SIan Rogers        "MetricGroup": "BigFootprint;BvBC;FetchLat;TopdownL4;tma_L4_group;tma_branch_resteers_group",
2539ad10c920SIan Rogers        "MetricName": "tma_unknown_branches",
2540ad10c920SIan Rogers        "MetricThreshold": "tma_unknown_branches > 0.05 & (tma_branch_resteers > 0.05 & (tma_fetch_latency > 0.1 & tma_frontend_bound > 0.15))",
254152530942SIan Rogers        "PublicDescription": "This metric represents fraction of cycles the CPU was stalled due to new branch address clears. These are fetched branches the Branch Prediction Unit was unable to recognize (e.g. first time the branch is fetched or hitting BTB capacity limit) hence called Unknown Branches. Sample with: FRONTEND_RETIRED.UNKNOWN_BRANCH",
2542ad10c920SIan Rogers        "ScaleUnit": "100%",
2543ad10c920SIan Rogers        "Unit": "cpu_core"
2544ad10c920SIan Rogers    },
2545ad10c920SIan Rogers    {
2546ad10c920SIan Rogers        "BriefDescription": "This metric serves as an approximation of legacy x87 usage",
2547*17d4b192SIan Rogers        "MetricExpr": "tma_retiring * cpu_core@UOPS_EXECUTED.X87@ / cpu_core@UOPS_EXECUTED.THREAD@",
2548ad10c920SIan Rogers        "MetricGroup": "Compute;TopdownL4;tma_L4_group;tma_fp_arith_group",
2549ad10c920SIan Rogers        "MetricName": "tma_x87_use",
2550ad10c920SIan Rogers        "MetricThreshold": "tma_x87_use > 0.1 & (tma_fp_arith > 0.2 & tma_light_operations > 0.6)",
2551ad10c920SIan Rogers        "PublicDescription": "This metric serves as an approximation of legacy x87 usage. It accounts for instructions beyond X87 FP arithmetic operations; hence may be used as a thermometer to avoid X87 high usage and preferably upgrade to modern ISA. See Tip under Tuning Hint.",
2552ad10c920SIan Rogers        "ScaleUnit": "100%",
2553ad10c920SIan Rogers        "Unit": "cpu_core"
255417408e59SZhengjun Xing    }
255517408e59SZhengjun Xing]
2556