1ecd94f1bSKan Liang[
2ecd94f1bSKan Liang    {
3fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend",
461ec07f5SHaiyan Song        "MetricExpr": "IDQ_UOPS_NOT_DELIVERED.CORE / (4 * cycles)",
5fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
661ec07f5SHaiyan Song        "MetricName": "Frontend_Bound",
761ec07f5SHaiyan Song        "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-ops (uops). Ideally the Frontend can issue 4 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."
8fd550098SAndi Kleen    },
9fd550098SAndi Kleen    {
10fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend. SMT version; use when SMT is enabled and measuring per logical CPU.",
1161ec07f5SHaiyan Song        "MetricExpr": "IDQ_UOPS_NOT_DELIVERED.CORE / (4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )))",
12fd550098SAndi Kleen        "MetricGroup": "TopdownL1_SMT",
1361ec07f5SHaiyan Song        "MetricName": "Frontend_Bound_SMT",
1461ec07f5SHaiyan Song        "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-ops (uops). Ideally the Frontend can issue 4 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. SMT version; use when SMT is enabled and measuring per logical CPU."
15fd550098SAndi Kleen    },
16fd550098SAndi Kleen    {
17fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots wasted due to incorrect speculations",
1861ec07f5SHaiyan Song        "MetricExpr": "( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * cycles)",
19fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
2061ec07f5SHaiyan Song        "MetricName": "Bad_Speculation",
2161ec07f5SHaiyan Song        "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."
22fd550098SAndi Kleen    },
23fd550098SAndi Kleen    {
24fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots wasted due to incorrect speculations. SMT version; use when SMT is enabled and measuring per logical CPU.",
2561ec07f5SHaiyan Song        "MetricExpr": "( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * (( INT_MISC.RECOVERY_CYCLES_ANY / 2 )) ) / (4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )))",
26fd550098SAndi Kleen        "MetricGroup": "TopdownL1_SMT",
2761ec07f5SHaiyan Song        "MetricName": "Bad_Speculation_SMT",
2861ec07f5SHaiyan Song        "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. SMT version; use when SMT is enabled and measuring per logical CPU."
29fd550098SAndi Kleen    },
30fd550098SAndi Kleen    {
31fd550098SAndi Kleen        "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",
3261ec07f5SHaiyan Song        "MetricExpr": "1 - ( (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * cycles)) + (( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * cycles)) + (UOPS_RETIRED.RETIRE_SLOTS / (4 * cycles)) )",
33fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
3461ec07f5SHaiyan Song        "MetricName": "Backend_Bound",
3561ec07f5SHaiyan Song        "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."
36fd550098SAndi Kleen    },
37fd550098SAndi Kleen    {
38fd550098SAndi Kleen        "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. SMT version; use when SMT is enabled and measuring per logical CPU.",
3961ec07f5SHaiyan Song        "MetricExpr": "1 - ( (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )))) + (( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * (( INT_MISC.RECOVERY_CYCLES_ANY / 2 )) ) / (4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )))) + (UOPS_RETIRED.RETIRE_SLOTS / (4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )))) )",
40fd550098SAndi Kleen        "MetricGroup": "TopdownL1_SMT",
4161ec07f5SHaiyan Song        "MetricName": "Backend_Bound_SMT",
4261ec07f5SHaiyan Song        "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. SMT version; use when SMT is enabled and measuring per logical CPU."
43fd550098SAndi Kleen    },
44fd550098SAndi Kleen    {
45fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots utilized by useful work i.e. issued uops that eventually get retired",
4661ec07f5SHaiyan Song        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * cycles)",
47fd550098SAndi Kleen        "MetricGroup": "TopdownL1",
4861ec07f5SHaiyan Song        "MetricName": "Retiring",
4961ec07f5SHaiyan Song        "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 4 uops retired per cycle has been achieved.  Maximizing Retiring typically increases the Instruction-Per-Cycle metric. Note that a high Retiring value does not necessary mean there is no room for more performance.  For example; Microcode assists are categorized under Retiring. They hurt performance and can often be avoided. "
50fd550098SAndi Kleen    },
51fd550098SAndi Kleen    {
52fd550098SAndi Kleen        "BriefDescription": "This category represents fraction of slots utilized by useful work i.e. issued uops that eventually get retired. SMT version; use when SMT is enabled and measuring per logical CPU.",
5361ec07f5SHaiyan Song        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )))",
54fd550098SAndi Kleen        "MetricGroup": "TopdownL1_SMT",
5561ec07f5SHaiyan Song        "MetricName": "Retiring_SMT",
5661ec07f5SHaiyan Song        "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 4 uops retired per cycle has been achieved.  Maximizing Retiring typically increases the Instruction-Per-Cycle metric. Note that a high Retiring value does not necessary mean there is no room for more performance.  For example; Microcode assists are categorized under Retiring. They hurt performance and can often be avoided. SMT version; use when SMT is enabled and measuring per logical CPU."
57fd550098SAndi Kleen    },
58fd550098SAndi Kleen    {
5961ec07f5SHaiyan Song        "BriefDescription": "Instructions Per Cycle (per Logical Processor)",
60ecd94f1bSKan Liang        "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD",
61ecd94f1bSKan Liang        "MetricGroup": "TopDownL1",
62ecd94f1bSKan Liang        "MetricName": "IPC"
63ecd94f1bSKan Liang    },
64ecd94f1bSKan Liang    {
65fd550098SAndi Kleen        "BriefDescription": "Uops Per Instruction",
6661ec07f5SHaiyan Song        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / INST_RETIRED.ANY",
6761ec07f5SHaiyan Song        "MetricGroup": "Pipeline;Retire",
68ecd94f1bSKan Liang        "MetricName": "UPI"
69ecd94f1bSKan Liang    },
70ecd94f1bSKan Liang    {
71fd550098SAndi Kleen        "BriefDescription": "Instruction per taken branch",
7261ec07f5SHaiyan Song        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_TAKEN",
7361ec07f5SHaiyan Song        "MetricGroup": "Branches;Fetch_BW;PGO",
74fd550098SAndi Kleen        "MetricName": "IpTB"
75fd550098SAndi Kleen    },
76fd550098SAndi Kleen    {
77fd550098SAndi Kleen        "BriefDescription": "Branch instructions per taken branch. ",
7861ec07f5SHaiyan Song        "MetricExpr": "BR_INST_RETIRED.ALL_BRANCHES / BR_INST_RETIRED.NEAR_TAKEN",
79fd550098SAndi Kleen        "MetricGroup": "Branches;PGO",
80fd550098SAndi Kleen        "MetricName": "BpTB"
81fd550098SAndi Kleen    },
82fd550098SAndi Kleen    {
83fd550098SAndi Kleen        "BriefDescription": "Rough Estimation of fraction of fetched lines bytes that were likely (includes speculatively fetches) consumed by program instructions",
8461ec07f5SHaiyan Song        "MetricExpr": "min( 1 , UOPS_ISSUED.ANY / ( (UOPS_RETIRED.RETIRE_SLOTS / INST_RETIRED.ANY) * 64 * ( ICACHE_64B.IFTAG_HIT + ICACHE_64B.IFTAG_MISS ) / 4.1 ) )",
8561ec07f5SHaiyan Song        "MetricGroup": "PGO;IcMiss",
86ecd94f1bSKan Liang        "MetricName": "IFetch_Line_Utilization"
87ecd94f1bSKan Liang    },
88ecd94f1bSKan Liang    {
89fd550098SAndi Kleen        "BriefDescription": "Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache)",
9061ec07f5SHaiyan Song        "MetricExpr": "IDQ.DSB_UOPS / (IDQ.DSB_UOPS + LSD.UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS)",
9161ec07f5SHaiyan Song        "MetricGroup": "DSB;Fetch_BW",
92ecd94f1bSKan Liang        "MetricName": "DSB_Coverage"
93ecd94f1bSKan Liang    },
94ecd94f1bSKan Liang    {
9561ec07f5SHaiyan Song        "BriefDescription": "Cycles Per Instruction (per Logical Processor)",
96ecd94f1bSKan Liang        "MetricExpr": "1 / (INST_RETIRED.ANY / cycles)",
97ecd94f1bSKan Liang        "MetricGroup": "Pipeline;Summary",
98ecd94f1bSKan Liang        "MetricName": "CPI"
99ecd94f1bSKan Liang    },
100ecd94f1bSKan Liang    {
10161ec07f5SHaiyan Song        "BriefDescription": "Per-Logical Processor actual clocks when the Logical Processor is active.",
102ecd94f1bSKan Liang        "MetricExpr": "CPU_CLK_UNHALTED.THREAD",
103ecd94f1bSKan Liang        "MetricGroup": "Summary",
104ecd94f1bSKan Liang        "MetricName": "CLKS"
105ecd94f1bSKan Liang    },
106ecd94f1bSKan Liang    {
10761ec07f5SHaiyan Song        "BriefDescription": "Total issue-pipeline slots (per-Physical Core)",
108fd550098SAndi Kleen        "MetricExpr": "4 * cycles",
109ecd94f1bSKan Liang        "MetricGroup": "TopDownL1",
110ecd94f1bSKan Liang        "MetricName": "SLOTS"
111ecd94f1bSKan Liang    },
112ecd94f1bSKan Liang    {
11361ec07f5SHaiyan Song        "BriefDescription": "Total issue-pipeline slots (per-Physical Core)",
114fd550098SAndi Kleen        "MetricExpr": "4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
115fd550098SAndi Kleen        "MetricGroup": "TopDownL1_SMT",
116fd550098SAndi Kleen        "MetricName": "SLOTS_SMT"
117fd550098SAndi Kleen    },
118fd550098SAndi Kleen    {
11961ec07f5SHaiyan Song        "BriefDescription": "Instructions per Load (lower number means higher occurance rate)",
120fd550098SAndi Kleen        "MetricExpr": "INST_RETIRED.ANY / MEM_INST_RETIRED.ALL_LOADS",
12161ec07f5SHaiyan Song        "MetricGroup": "Instruction_Type",
122fd550098SAndi Kleen        "MetricName": "IpL"
123fd550098SAndi Kleen    },
124fd550098SAndi Kleen    {
12561ec07f5SHaiyan Song        "BriefDescription": "Instructions per Store (lower number means higher occurance rate)",
126fd550098SAndi Kleen        "MetricExpr": "INST_RETIRED.ANY / MEM_INST_RETIRED.ALL_STORES",
12761ec07f5SHaiyan Song        "MetricGroup": "Instruction_Type",
128fd550098SAndi Kleen        "MetricName": "IpS"
129fd550098SAndi Kleen    },
130fd550098SAndi Kleen    {
13161ec07f5SHaiyan Song        "BriefDescription": "Instructions per Branch (lower number means higher occurance rate)",
132fd550098SAndi Kleen        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.ALL_BRANCHES",
13361ec07f5SHaiyan Song        "MetricGroup": "Branches;Instruction_Type",
134fd550098SAndi Kleen        "MetricName": "IpB"
135fd550098SAndi Kleen    },
136fd550098SAndi Kleen    {
13761ec07f5SHaiyan Song        "BriefDescription": "Instruction per (near) call (lower number means higher occurance rate)",
138fd550098SAndi Kleen        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_CALL",
139fd550098SAndi Kleen        "MetricGroup": "Branches",
140fd550098SAndi Kleen        "MetricName": "IpCall"
141fd550098SAndi Kleen    },
142fd550098SAndi Kleen    {
143fd550098SAndi Kleen        "BriefDescription": "Total number of retired Instructions",
14461ec07f5SHaiyan Song        "MetricExpr": "INST_RETIRED.ANY",
145ecd94f1bSKan Liang        "MetricGroup": "Summary",
146ecd94f1bSKan Liang        "MetricName": "Instructions"
147ecd94f1bSKan Liang    },
148ecd94f1bSKan Liang    {
149ecd94f1bSKan Liang        "BriefDescription": "Instructions Per Cycle (per physical core)",
15061ec07f5SHaiyan Song        "MetricExpr": "INST_RETIRED.ANY / cycles",
151ecd94f1bSKan Liang        "MetricGroup": "SMT",
152ecd94f1bSKan Liang        "MetricName": "CoreIPC"
153ecd94f1bSKan Liang    },
154ecd94f1bSKan Liang    {
155fd550098SAndi Kleen        "BriefDescription": "Instructions Per Cycle (per physical core)",
15661ec07f5SHaiyan Song        "MetricExpr": "INST_RETIRED.ANY / (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
157fd550098SAndi Kleen        "MetricGroup": "SMT",
158fd550098SAndi Kleen        "MetricName": "CoreIPC_SMT"
159fd550098SAndi Kleen    },
160fd550098SAndi Kleen    {
161fd550098SAndi Kleen        "BriefDescription": "Floating Point Operations Per Cycle",
16261ec07f5SHaiyan Song        "MetricExpr": "(( 1 * ( FP_ARITH_INST_RETIRED.SCALAR_SINGLE + FP_ARITH_INST_RETIRED.SCALAR_DOUBLE ) + 2 * FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + 4 * ( FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE ) + 8 * ( FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE ) + 16 * FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE )) / cycles",
163fd550098SAndi Kleen        "MetricGroup": "FLOPS",
164fd550098SAndi Kleen        "MetricName": "FLOPc"
165fd550098SAndi Kleen    },
166fd550098SAndi Kleen    {
167fd550098SAndi Kleen        "BriefDescription": "Floating Point Operations Per Cycle",
16861ec07f5SHaiyan Song        "MetricExpr": "(( 1 * ( FP_ARITH_INST_RETIRED.SCALAR_SINGLE + FP_ARITH_INST_RETIRED.SCALAR_DOUBLE ) + 2 * FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + 4 * ( FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE ) + 8 * ( FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE ) + 16 * FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE )) / (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
169fd550098SAndi Kleen        "MetricGroup": "FLOPS_SMT",
170fd550098SAndi Kleen        "MetricName": "FLOPc_SMT"
171fd550098SAndi Kleen    },
172fd550098SAndi Kleen    {
173fd550098SAndi Kleen        "BriefDescription": "Instruction-Level-Parallelism (average number of uops executed when there is at least 1 uop executed)",
17461ec07f5SHaiyan Song        "MetricExpr": "UOPS_EXECUTED.THREAD / (( UOPS_EXECUTED.CORE_CYCLES_GE_1 / 2 ) if #SMT_on else UOPS_EXECUTED.CORE_CYCLES_GE_1)",
17561ec07f5SHaiyan Song        "MetricGroup": "Pipeline",
176ecd94f1bSKan Liang        "MetricName": "ILP"
177ecd94f1bSKan Liang    },
178ecd94f1bSKan Liang    {
17961ec07f5SHaiyan Song        "BriefDescription": "Branch Misprediction Cost: Fraction of TopDown slots wasted per non-speculative branch misprediction (jeclear)",
180fd550098SAndi Kleen        "MetricExpr": "( ((BR_MISP_RETIRED.ALL_BRANCHES / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT )) * (( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * cycles))) + (4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * cycles)) * (( INT_MISC.CLEAR_RESTEER_CYCLES + 9 * BACLEARS.ANY ) / cycles) / (4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * cycles)) ) * (4 * cycles) / BR_MISP_RETIRED.ALL_BRANCHES",
18161ec07f5SHaiyan Song        "MetricGroup": "BrMispredicts",
182fd550098SAndi Kleen        "MetricName": "Branch_Misprediction_Cost"
183ecd94f1bSKan Liang    },
184ecd94f1bSKan Liang    {
18561ec07f5SHaiyan Song        "BriefDescription": "Branch Misprediction Cost: Fraction of TopDown slots wasted per non-speculative branch misprediction (jeclear)",
186fd550098SAndi Kleen        "MetricExpr": "( ((BR_MISP_RETIRED.ALL_BRANCHES / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT )) * (( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * (( INT_MISC.RECOVERY_CYCLES_ANY / 2 )) ) / (4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))))) + (4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )))) * (( INT_MISC.CLEAR_RESTEER_CYCLES + 9 * BACLEARS.ANY ) / cycles) / (4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )))) ) * (4 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) / BR_MISP_RETIRED.ALL_BRANCHES",
18761ec07f5SHaiyan Song        "MetricGroup": "BrMispredicts_SMT",
188fd550098SAndi Kleen        "MetricName": "Branch_Misprediction_Cost_SMT"
189fd550098SAndi Kleen    },
190fd550098SAndi Kleen    {
191fd550098SAndi Kleen        "BriefDescription": "Number of Instructions per non-speculative Branch Misprediction (JEClear)",
19261ec07f5SHaiyan Song        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.ALL_BRANCHES",
19361ec07f5SHaiyan Song        "MetricGroup": "BrMispredicts",
194fd550098SAndi Kleen        "MetricName": "IpMispredict"
195fd550098SAndi Kleen    },
196fd550098SAndi Kleen    {
19761ec07f5SHaiyan Song        "BriefDescription": "Core actual clocks when any Logical Processor is active on the Physical Core",
198fd550098SAndi Kleen        "MetricExpr": "( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
199ecd94f1bSKan Liang        "MetricGroup": "SMT",
200ecd94f1bSKan Liang        "MetricName": "CORE_CLKS"
201ecd94f1bSKan Liang    },
202ecd94f1bSKan Liang    {
203fd550098SAndi Kleen        "BriefDescription": "Actual Average Latency for L1 data-cache miss demand loads (in core cycles)",
20461ec07f5SHaiyan Song        "MetricExpr": "L1D_PEND_MISS.PENDING / ( MEM_LOAD_RETIRED.L1_MISS + MEM_LOAD_RETIRED.FB_HIT )",
205ecd94f1bSKan Liang        "MetricGroup": "Memory_Bound;Memory_Lat",
206ecd94f1bSKan Liang        "MetricName": "Load_Miss_Real_Latency"
207ecd94f1bSKan Liang    },
208ecd94f1bSKan Liang    {
20961ec07f5SHaiyan Song        "BriefDescription": "Memory-Level-Parallelism (average number of L1 miss demand load when there is at least one such miss. Per-Logical Processor)",
210fd550098SAndi Kleen        "MetricExpr": "L1D_PEND_MISS.PENDING / L1D_PEND_MISS.PENDING_CYCLES",
211ecd94f1bSKan Liang        "MetricGroup": "Memory_Bound;Memory_BW",
212ecd94f1bSKan Liang        "MetricName": "MLP"
213ecd94f1bSKan Liang    },
214ecd94f1bSKan Liang    {
215ecd94f1bSKan Liang        "BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses",
21661ec07f5SHaiyan Song        "MetricExpr": "( ITLB_MISSES.WALK_PENDING + DTLB_LOAD_MISSES.WALK_PENDING + DTLB_STORE_MISSES.WALK_PENDING + EPT.WALK_PENDING ) / ( 2 * cycles )",
217ecd94f1bSKan Liang        "MetricGroup": "TLB",
218b95fcd2cSKan Liang        "MetricName": "Page_Walks_Utilization",
219b95fcd2cSKan Liang        "MetricConstraint": "NO_NMI_WATCHDOG"
220ecd94f1bSKan Liang    },
221ecd94f1bSKan Liang    {
222fd550098SAndi Kleen        "BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses",
22361ec07f5SHaiyan Song        "MetricExpr": "( ITLB_MISSES.WALK_PENDING + DTLB_LOAD_MISSES.WALK_PENDING + DTLB_STORE_MISSES.WALK_PENDING + EPT.WALK_PENDING ) / ( 2 * (( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )) )",
224fd550098SAndi Kleen        "MetricGroup": "TLB_SMT",
225fd550098SAndi Kleen        "MetricName": "Page_Walks_Utilization_SMT"
226fd550098SAndi Kleen    },
227fd550098SAndi Kleen    {
228fd550098SAndi Kleen        "BriefDescription": "Average data fill bandwidth to the L1 data cache [GB / sec]",
22961ec07f5SHaiyan Song        "MetricExpr": "64 * L1D.REPLACEMENT / 1000000000 / duration_time",
230fd550098SAndi Kleen        "MetricGroup": "Memory_BW",
231fd550098SAndi Kleen        "MetricName": "L1D_Cache_Fill_BW"
232fd550098SAndi Kleen    },
233fd550098SAndi Kleen    {
234fd550098SAndi Kleen        "BriefDescription": "Average data fill bandwidth to the L2 cache [GB / sec]",
23561ec07f5SHaiyan Song        "MetricExpr": "64 * L2_LINES_IN.ALL / 1000000000 / duration_time",
236fd550098SAndi Kleen        "MetricGroup": "Memory_BW",
237fd550098SAndi Kleen        "MetricName": "L2_Cache_Fill_BW"
238fd550098SAndi Kleen    },
239fd550098SAndi Kleen    {
240fd550098SAndi Kleen        "BriefDescription": "Average per-core data fill bandwidth to the L3 cache [GB / sec]",
24161ec07f5SHaiyan Song        "MetricExpr": "64 * LONGEST_LAT_CACHE.MISS / 1000000000 / duration_time",
242fd550098SAndi Kleen        "MetricGroup": "Memory_BW",
243fd550098SAndi Kleen        "MetricName": "L3_Cache_Fill_BW"
244fd550098SAndi Kleen    },
245fd550098SAndi Kleen    {
246fd550098SAndi Kleen        "BriefDescription": "Average per-core data fill bandwidth to the L3 cache [GB / sec]",
24761ec07f5SHaiyan Song        "MetricExpr": "64 * OFFCORE_REQUESTS.ALL_REQUESTS / 1000000000 / duration_time",
248fd550098SAndi Kleen        "MetricGroup": "Memory_BW",
249fd550098SAndi Kleen        "MetricName": "L3_Cache_Access_BW"
250fd550098SAndi Kleen    },
251fd550098SAndi Kleen    {
252fd550098SAndi Kleen        "BriefDescription": "L1 cache true misses per kilo instruction for retired demand loads",
25361ec07f5SHaiyan Song        "MetricExpr": "1000 * MEM_LOAD_RETIRED.L1_MISS / INST_RETIRED.ANY",
25461ec07f5SHaiyan Song        "MetricGroup": "Cache_Misses",
255fd550098SAndi Kleen        "MetricName": "L1MPKI"
256fd550098SAndi Kleen    },
257fd550098SAndi Kleen    {
258fd550098SAndi Kleen        "BriefDescription": "L2 cache true misses per kilo instruction for retired demand loads",
25961ec07f5SHaiyan Song        "MetricExpr": "1000 * MEM_LOAD_RETIRED.L2_MISS / INST_RETIRED.ANY",
26061ec07f5SHaiyan Song        "MetricGroup": "Cache_Misses",
261fd550098SAndi Kleen        "MetricName": "L2MPKI"
262fd550098SAndi Kleen    },
263fd550098SAndi Kleen    {
264fd550098SAndi Kleen        "BriefDescription": "L2 cache misses per kilo instruction for all request types (including speculative)",
26561ec07f5SHaiyan Song        "MetricExpr": "1000 * L2_RQSTS.MISS / INST_RETIRED.ANY",
26661ec07f5SHaiyan Song        "MetricGroup": "Cache_Misses",
267fd550098SAndi Kleen        "MetricName": "L2MPKI_All"
268fd550098SAndi Kleen    },
269fd550098SAndi Kleen    {
270fd550098SAndi Kleen        "BriefDescription": "L2 cache hits per kilo instruction for all request types (including speculative)",
27161ec07f5SHaiyan Song        "MetricExpr": "1000 * ( L2_RQSTS.REFERENCES - L2_RQSTS.MISS ) / INST_RETIRED.ANY",
27261ec07f5SHaiyan Song        "MetricGroup": "Cache_Misses",
273fd550098SAndi Kleen        "MetricName": "L2HPKI_All"
274fd550098SAndi Kleen    },
275fd550098SAndi Kleen    {
276fd550098SAndi Kleen        "BriefDescription": "L3 cache true misses per kilo instruction for retired demand loads",
27761ec07f5SHaiyan Song        "MetricExpr": "1000 * MEM_LOAD_RETIRED.L3_MISS / INST_RETIRED.ANY",
27861ec07f5SHaiyan Song        "MetricGroup": "Cache_Misses",
279fd550098SAndi Kleen        "MetricName": "L3MPKI"
280fd550098SAndi Kleen    },
281fd550098SAndi Kleen    {
28261ec07f5SHaiyan Song        "BriefDescription": "Rate of silent evictions from the L2 cache per Kilo instruction where the evicted lines are dropped (no writeback to L3 or memory)",
28361ec07f5SHaiyan Song        "MetricExpr": "1000 * L2_LINES_OUT.SILENT / INST_RETIRED.ANY",
28461ec07f5SHaiyan Song        "MetricGroup": "",
28561ec07f5SHaiyan Song        "MetricName": "L2_Evictions_Silent_PKI"
28661ec07f5SHaiyan Song    },
28761ec07f5SHaiyan Song    {
28861ec07f5SHaiyan Song        "BriefDescription": "Rate of non silent evictions from the L2 cache per Kilo instruction",
28961ec07f5SHaiyan Song        "MetricExpr": "1000 * L2_LINES_OUT.NON_SILENT / INST_RETIRED.ANY",
29061ec07f5SHaiyan Song        "MetricGroup": "",
29161ec07f5SHaiyan Song        "MetricName": "L2_Evictions_NonSilent_PKI"
29261ec07f5SHaiyan Song    },
29361ec07f5SHaiyan Song    {
294fd550098SAndi Kleen        "BriefDescription": "Average CPU Utilization",
29561ec07f5SHaiyan Song        "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC / msr@tsc@",
296ecd94f1bSKan Liang        "MetricGroup": "Summary",
297ecd94f1bSKan Liang        "MetricName": "CPU_Utilization"
298ecd94f1bSKan Liang    },
299ecd94f1bSKan Liang    {
300ecd94f1bSKan Liang        "BriefDescription": "Giga Floating Point Operations Per Second",
30161ec07f5SHaiyan Song        "MetricExpr": "( (( 1 * ( FP_ARITH_INST_RETIRED.SCALAR_SINGLE + FP_ARITH_INST_RETIRED.SCALAR_DOUBLE ) + 2 * FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + 4 * ( FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE ) + 8 * ( FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.512B_PACKED_DOUBLE ) + 16 * FP_ARITH_INST_RETIRED.512B_PACKED_SINGLE )) / 1000000000 ) / duration_time",
302ecd94f1bSKan Liang        "MetricGroup": "FLOPS;Summary",
303ecd94f1bSKan Liang        "MetricName": "GFLOPs"
304ecd94f1bSKan Liang    },
305ecd94f1bSKan Liang    {
306fd550098SAndi Kleen        "BriefDescription": "Average Frequency Utilization relative nominal frequency",
30761ec07f5SHaiyan Song        "MetricExpr": "CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC",
308ecd94f1bSKan Liang        "MetricGroup": "Power",
309ecd94f1bSKan Liang        "MetricName": "Turbo_Utilization"
310ecd94f1bSKan Liang    },
311ecd94f1bSKan Liang    {
31261ec07f5SHaiyan Song        "BriefDescription": "Fraction of cycles where both hardware Logical Processors were active",
313ecd94f1bSKan Liang        "MetricExpr": "1 - CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE / ( CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY / 2 ) if #SMT_on else 0",
314ecd94f1bSKan Liang        "MetricGroup": "SMT;Summary",
315ecd94f1bSKan Liang        "MetricName": "SMT_2T_Utilization"
316ecd94f1bSKan Liang    },
317ecd94f1bSKan Liang    {
318fd550098SAndi Kleen        "BriefDescription": "Fraction of cycles spent in Kernel mode",
3198ed1faf0SJin Yao        "MetricExpr": "CPU_CLK_UNHALTED.THREAD:k / CPU_CLK_UNHALTED.THREAD",
320ecd94f1bSKan Liang        "MetricGroup": "Summary",
321ecd94f1bSKan Liang        "MetricName": "Kernel_Utilization"
322ecd94f1bSKan Liang    },
323ecd94f1bSKan Liang    {
324fd550098SAndi Kleen        "BriefDescription": "Average external Memory Bandwidth Use for reads and writes [GB / sec]",
32561ec07f5SHaiyan Song        "MetricExpr": "( 64 * ( uncore_imc@cas_count_read@ + uncore_imc@cas_count_write@ ) / 1000000000 ) / duration_time",
326fd550098SAndi Kleen        "MetricGroup": "Memory_BW",
327fd550098SAndi Kleen        "MetricName": "DRAM_BW_Use"
328fd550098SAndi Kleen    },
329fd550098SAndi Kleen    {
330fd550098SAndi Kleen        "BriefDescription": "Average latency of data read request to external memory (in nanoseconds). Accounts for demand loads and L1/L2 prefetches",
33161ec07f5SHaiyan Song        "MetricExpr": "1000000000 * ( cha@event\\=0x36\\\\\\,umask\\=0x21@ / cha@event\\=0x35\\\\\\,umask\\=0x21@ ) / ( cha_0@event\\=0x0@ / duration_time )",
332fd550098SAndi Kleen        "MetricGroup": "Memory_Lat",
333fd550098SAndi Kleen        "MetricName": "DRAM_Read_Latency"
334fd550098SAndi Kleen    },
335fd550098SAndi Kleen    {
336fd550098SAndi Kleen        "BriefDescription": "Average number of parallel data read requests to external memory. Accounts for demand loads and L1/L2 prefetches",
33761ec07f5SHaiyan Song        "MetricExpr": "cha@event\\=0x36\\\\\\,umask\\=0x21@ / cha@event\\=0x36\\\\\\,umask\\=0x21\\\\\\,thresh\\=1@",
338fd550098SAndi Kleen        "MetricGroup": "Memory_BW",
339fd550098SAndi Kleen        "MetricName": "DRAM_Parallel_Reads"
340fd550098SAndi Kleen    },
341fd550098SAndi Kleen    {
342fd550098SAndi Kleen        "BriefDescription": "Average latency of data read request to external 3D X-Point memory [in nanoseconds]. Accounts for demand loads and L1/L2 data-read prefetches",
34361ec07f5SHaiyan Song        "MetricExpr": "( 1000000000 * ( imc@event\\=0xe0\\\\\\,umask\\=0x1@ / imc@event\\=0xe3@ ) / imc_0@event\\=0x0@ ) if 1 if 0 == 1 else 0 else 0",
344fd550098SAndi Kleen        "MetricGroup": "Memory_Lat",
345fd550098SAndi Kleen        "MetricName": "MEM_PMM_Read_Latency"
346fd550098SAndi Kleen    },
347fd550098SAndi Kleen    {
348fd550098SAndi Kleen        "BriefDescription": "Average 3DXP Memory Bandwidth Use for reads [GB / sec]",
34961ec07f5SHaiyan Song        "MetricExpr": "( ( 64 * imc@event\\=0xe3@ / 1000000000 ) / duration_time ) if 1 if 0 == 1 else 0 else 0",
350fd550098SAndi Kleen        "MetricGroup": "Memory_BW",
351fd550098SAndi Kleen        "MetricName": "PMM_Read_BW"
352fd550098SAndi Kleen    },
353fd550098SAndi Kleen    {
354fd550098SAndi Kleen        "BriefDescription": "Average 3DXP Memory Bandwidth Use for Writes [GB / sec]",
35561ec07f5SHaiyan Song        "MetricExpr": "( ( 64 * imc@event\\=0xe7@ / 1000000000 ) / duration_time ) if 1 if 0 == 1 else 0 else 0",
356fd550098SAndi Kleen        "MetricGroup": "Memory_BW",
357fd550098SAndi Kleen        "MetricName": "PMM_Write_BW"
358fd550098SAndi Kleen    },
359fd550098SAndi Kleen    {
360fd550098SAndi Kleen        "BriefDescription": "Socket actual clocks when any core is active on that socket",
36161ec07f5SHaiyan Song        "MetricExpr": "cha_0@event\\=0x0@",
362fd550098SAndi Kleen        "MetricGroup": "",
363fd550098SAndi Kleen        "MetricName": "Socket_CLKS"
364fd550098SAndi Kleen    },
365fd550098SAndi Kleen    {
36661ec07f5SHaiyan Song        "BriefDescription": "Instructions per Far Branch ( Far Branches apply upon transition from application to operating system, handling interrupts, exceptions. )",
36761ec07f5SHaiyan Song        "MetricExpr": "INST_RETIRED.ANY / ( BR_INST_RETIRED.FAR_BRANCH / 2 )",
36861ec07f5SHaiyan Song        "MetricGroup": "",
36961ec07f5SHaiyan Song        "MetricName": "IpFarBranch"
37061ec07f5SHaiyan Song    },
37161ec07f5SHaiyan Song    {
37261ec07f5SHaiyan Song        "BriefDescription": "C3 residency percent per core",
373ecd94f1bSKan Liang        "MetricExpr": "(cstate_core@c3\\-residency@ / msr@tsc@) * 100",
374ecd94f1bSKan Liang        "MetricGroup": "Power",
375ecd94f1bSKan Liang        "MetricName": "C3_Core_Residency"
376ecd94f1bSKan Liang    },
377ecd94f1bSKan Liang    {
37861ec07f5SHaiyan Song        "BriefDescription": "C6 residency percent per core",
379ecd94f1bSKan Liang        "MetricExpr": "(cstate_core@c6\\-residency@ / msr@tsc@) * 100",
380ecd94f1bSKan Liang        "MetricGroup": "Power",
381ecd94f1bSKan Liang        "MetricName": "C6_Core_Residency"
382ecd94f1bSKan Liang    },
383ecd94f1bSKan Liang    {
38461ec07f5SHaiyan Song        "BriefDescription": "C7 residency percent per core",
385ecd94f1bSKan Liang        "MetricExpr": "(cstate_core@c7\\-residency@ / msr@tsc@) * 100",
386ecd94f1bSKan Liang        "MetricGroup": "Power",
387ecd94f1bSKan Liang        "MetricName": "C7_Core_Residency"
388ecd94f1bSKan Liang    },
389ecd94f1bSKan Liang    {
39061ec07f5SHaiyan Song        "BriefDescription": "C2 residency percent per package",
391ecd94f1bSKan Liang        "MetricExpr": "(cstate_pkg@c2\\-residency@ / msr@tsc@) * 100",
392ecd94f1bSKan Liang        "MetricGroup": "Power",
393ecd94f1bSKan Liang        "MetricName": "C2_Pkg_Residency"
394ecd94f1bSKan Liang    },
395ecd94f1bSKan Liang    {
39661ec07f5SHaiyan Song        "BriefDescription": "C3 residency percent per package",
397ecd94f1bSKan Liang        "MetricExpr": "(cstate_pkg@c3\\-residency@ / msr@tsc@) * 100",
398ecd94f1bSKan Liang        "MetricGroup": "Power",
399ecd94f1bSKan Liang        "MetricName": "C3_Pkg_Residency"
400ecd94f1bSKan Liang    },
401ecd94f1bSKan Liang    {
40261ec07f5SHaiyan Song        "BriefDescription": "C6 residency percent per package",
403ecd94f1bSKan Liang        "MetricExpr": "(cstate_pkg@c6\\-residency@ / msr@tsc@) * 100",
404ecd94f1bSKan Liang        "MetricGroup": "Power",
405ecd94f1bSKan Liang        "MetricName": "C6_Pkg_Residency"
406ecd94f1bSKan Liang    },
407ecd94f1bSKan Liang    {
40861ec07f5SHaiyan Song        "BriefDescription": "C7 residency percent per package",
409ecd94f1bSKan Liang        "MetricExpr": "(cstate_pkg@c7\\-residency@ / msr@tsc@) * 100",
410ecd94f1bSKan Liang        "MetricGroup": "Power",
411ecd94f1bSKan Liang        "MetricName": "C7_Pkg_Residency"
412ecd94f1bSKan Liang    }
413ecd94f1bSKan Liang]
414