xref: /freebsd/lib/libpmc/pmu-events/arch/x86/skylake/skl-metrics.json (revision 18054d0220cfc8df9c9568c437bd6fbb59d53c3c)
1959826caSMatt Macy[
2959826caSMatt Macy    {
352d973f5SAlexander Motin        "BriefDescription": "This category represents fraction of slots where the processor's Frontend undersupplies its Backend",
4*18054d02SAlexander Motin        "MetricExpr": "IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)",
592b14858SMatt Macy        "MetricGroup": "TopdownL1",
6*18054d02SAlexander Motin        "MetricName": "Frontend_Bound",
7*18054d02SAlexander Motin        "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 Machine_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."
892b14858SMatt Macy    },
992b14858SMatt Macy    {
1092b14858SMatt Macy        "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.",
11*18054d02SAlexander Motin        "MetricExpr": "IDQ_UOPS_NOT_DELIVERED.CORE / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
1292b14858SMatt Macy        "MetricGroup": "TopdownL1_SMT",
13*18054d02SAlexander Motin        "MetricName": "Frontend_Bound_SMT",
14*18054d02SAlexander Motin        "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 Machine_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. SMT version; use when SMT is enabled and measuring per logical CPU."
1592b14858SMatt Macy    },
1692b14858SMatt Macy    {
1752d973f5SAlexander Motin        "BriefDescription": "This category represents fraction of slots wasted due to incorrect speculations",
18*18054d02SAlexander Motin        "MetricExpr": "( UOPS_ISSUED.ANY - UOPS_RETIRED.RETIRE_SLOTS + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD)",
1992b14858SMatt Macy        "MetricGroup": "TopdownL1",
20*18054d02SAlexander Motin        "MetricName": "Bad_Speculation",
21*18054d02SAlexander Motin        "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."
2292b14858SMatt Macy    },
2392b14858SMatt Macy    {
2492b14858SMatt Macy        "BriefDescription": "This category represents fraction of slots wasted due to incorrect speculations. SMT version; use when SMT is enabled and measuring per logical CPU.",
25*18054d02SAlexander Motin        "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 ) ))",
2692b14858SMatt Macy        "MetricGroup": "TopdownL1_SMT",
27*18054d02SAlexander Motin        "MetricName": "Bad_Speculation_SMT",
28*18054d02SAlexander Motin        "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."
2992b14858SMatt Macy    },
3092b14858SMatt Macy    {
3192b14858SMatt Macy        "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",
32*18054d02SAlexander Motin        "MetricConstraint": "NO_NMI_WATCHDOG",
33*18054d02SAlexander Motin        "MetricExpr": "1 - (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) - ( UOPS_ISSUED.ANY + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD)",
3492b14858SMatt Macy        "MetricGroup": "TopdownL1",
35*18054d02SAlexander Motin        "MetricName": "Backend_Bound",
36*18054d02SAlexander Motin        "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."
3792b14858SMatt Macy    },
3892b14858SMatt Macy    {
39*18054d02SAlexander Motin        "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.",
40*18054d02SAlexander Motin        "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 + 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 ) ))",
4192b14858SMatt Macy        "MetricGroup": "TopdownL1_SMT",
42*18054d02SAlexander Motin        "MetricName": "Backend_Bound_SMT",
43*18054d02SAlexander Motin        "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."
4492b14858SMatt Macy    },
4592b14858SMatt Macy    {
46*18054d02SAlexander Motin        "BriefDescription": "This category represents fraction of slots utilized by useful work i.e. issued uops that eventually get retired",
47*18054d02SAlexander Motin        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)",
48*18054d02SAlexander Motin        "MetricGroup": "TopdownL1",
49*18054d02SAlexander Motin        "MetricName": "Retiring",
50*18054d02SAlexander Motin        "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. "
51*18054d02SAlexander Motin    },
52*18054d02SAlexander Motin    {
53*18054d02SAlexander Motin        "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.",
54*18054d02SAlexander Motin        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))",
55*18054d02SAlexander Motin        "MetricGroup": "TopdownL1_SMT",
56*18054d02SAlexander Motin        "MetricName": "Retiring_SMT",
57*18054d02SAlexander Motin        "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. SMT version; use when SMT is enabled and measuring per logical CPU."
58*18054d02SAlexander Motin    },
59*18054d02SAlexander Motin    {
60*18054d02SAlexander Motin        "BriefDescription": "Total pipeline cost of Branch Misprediction related bottlenecks",
61*18054d02SAlexander Motin        "MetricExpr": "100 * ( ((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 * CPU_CLK_UNHALTED.THREAD))) + (4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) * ((BR_MISP_RETIRED.ALL_BRANCHES / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT )) * INT_MISC.CLEAR_RESTEER_CYCLES / CPU_CLK_UNHALTED.THREAD) / #(4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) )",
62*18054d02SAlexander Motin        "MetricGroup": "Bad;BadSpec;BrMispredicts",
63*18054d02SAlexander Motin        "MetricName": "Mispredictions"
64*18054d02SAlexander Motin    },
65*18054d02SAlexander Motin    {
66*18054d02SAlexander Motin        "BriefDescription": "Total pipeline cost of Branch Misprediction related bottlenecks",
67*18054d02SAlexander Motin        "MetricExpr": "100 * ( ((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 ) ))) * ((BR_MISP_RETIRED.ALL_BRANCHES / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT )) * INT_MISC.CLEAR_RESTEER_CYCLES / CPU_CLK_UNHALTED.THREAD) / #(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 ) ))) )",
68*18054d02SAlexander Motin        "MetricGroup": "Bad;BadSpec;BrMispredicts_SMT",
69*18054d02SAlexander Motin        "MetricName": "Mispredictions_SMT"
70*18054d02SAlexander Motin    },
71*18054d02SAlexander Motin    {
72*18054d02SAlexander Motin        "BriefDescription": "Total pipeline cost of (external) Memory Bandwidth related bottlenecks",
73*18054d02SAlexander Motin        "MetricExpr": "100 * ((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (1 - (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) - ( UOPS_ISSUED.ANY + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD))) * ( ( (CYCLE_ACTIVITY.STALLS_L3_MISS / CPU_CLK_UNHALTED.THREAD + (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD) - (( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) / ( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) + cpu@L1D_PEND_MISS.FB_FULL\\,cmask\\=1@ ) ) * (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD))) / #((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (1 - (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) - ( UOPS_ISSUED.ANY + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD))) ) * ( (min( CPU_CLK_UNHALTED.THREAD , cpu@OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD\\,cmask\\=4@ ) / CPU_CLK_UNHALTED.THREAD) / #(CYCLE_ACTIVITY.STALLS_L3_MISS / CPU_CLK_UNHALTED.THREAD + (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD) - (( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) / ( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) + cpu@L1D_PEND_MISS.FB_FULL\\,cmask\\=1@ ) ) * (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD))) ) + ( (( CYCLE_ACTIVITY.STALLS_L2_MISS - CYCLE_ACTIVITY.STALLS_L3_MISS ) / CPU_CLK_UNHALTED.THREAD) / #((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (1 - (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) - ( UOPS_ISSUED.ANY + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD))) ) * ( (OFFCORE_REQUESTS_BUFFER.SQ_FULL / CPU_CLK_UNHALTED.THREAD) / #(( CYCLE_ACTIVITY.STALLS_L2_MISS - CYCLE_ACTIVITY.STALLS_L3_MISS ) / CPU_CLK_UNHALTED.THREAD) ) ) + ( (max( ( CYCLE_ACTIVITY.STALLS_MEM_ANY - CYCLE_ACTIVITY.STALLS_L1D_MISS ) / CPU_CLK_UNHALTED.THREAD , 0 )) / #((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (1 - (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) - ( UOPS_ISSUED.ANY + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD))) ) * ( ((L1D_PEND_MISS.PENDING / ( MEM_LOAD_RETIRED.L1_MISS + MEM_LOAD_RETIRED.FB_HIT )) * cpu@L1D_PEND_MISS.FB_FULL\\,cmask\\=1@ / CPU_CLK_UNHALTED.THREAD) / #(max( ( CYCLE_ACTIVITY.STALLS_MEM_ANY - CYCLE_ACTIVITY.STALLS_L1D_MISS ) / CPU_CLK_UNHALTED.THREAD , 0 )) ) ",
74*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryBW;Offcore",
75*18054d02SAlexander Motin        "MetricName": "Memory_Bandwidth"
76*18054d02SAlexander Motin    },
77*18054d02SAlexander Motin    {
78*18054d02SAlexander Motin        "BriefDescription": "Total pipeline cost of (external) Memory Bandwidth related bottlenecks",
79*18054d02SAlexander Motin        "MetricExpr": "100 * ((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (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 + 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 ) )))) * ( ( (CYCLE_ACTIVITY.STALLS_L3_MISS / CPU_CLK_UNHALTED.THREAD + (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD) - (( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) / ( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) + cpu@L1D_PEND_MISS.FB_FULL\\,cmask\\=1@ ) ) * (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD))) / #((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (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 + 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 ) )))) ) * ( (min( CPU_CLK_UNHALTED.THREAD , cpu@OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD\\,cmask\\=4@ ) / CPU_CLK_UNHALTED.THREAD) / #(CYCLE_ACTIVITY.STALLS_L3_MISS / CPU_CLK_UNHALTED.THREAD + (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD) - (( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) / ( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) + cpu@L1D_PEND_MISS.FB_FULL\\,cmask\\=1@ ) ) * (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD))) ) + ( (( CYCLE_ACTIVITY.STALLS_L2_MISS - CYCLE_ACTIVITY.STALLS_L3_MISS ) / CPU_CLK_UNHALTED.THREAD) / #((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (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 + 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 ) )))) ) * ( (( OFFCORE_REQUESTS_BUFFER.SQ_FULL / 2 ) / ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )) / #(( CYCLE_ACTIVITY.STALLS_L2_MISS - CYCLE_ACTIVITY.STALLS_L3_MISS ) / CPU_CLK_UNHALTED.THREAD) ) ) + ( (max( ( CYCLE_ACTIVITY.STALLS_MEM_ANY - CYCLE_ACTIVITY.STALLS_L1D_MISS ) / CPU_CLK_UNHALTED.THREAD , 0 )) / #((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (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 + 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 ) )))) ) * ( ((L1D_PEND_MISS.PENDING / ( MEM_LOAD_RETIRED.L1_MISS + MEM_LOAD_RETIRED.FB_HIT )) * cpu@L1D_PEND_MISS.FB_FULL\\,cmask\\=1@ / CPU_CLK_UNHALTED.THREAD) / #(max( ( CYCLE_ACTIVITY.STALLS_MEM_ANY - CYCLE_ACTIVITY.STALLS_L1D_MISS ) / CPU_CLK_UNHALTED.THREAD , 0 )) ) ",
80*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryBW;Offcore_SMT",
81*18054d02SAlexander Motin        "MetricName": "Memory_Bandwidth_SMT"
82*18054d02SAlexander Motin    },
83*18054d02SAlexander Motin    {
84*18054d02SAlexander Motin        "BriefDescription": "Total pipeline cost of Memory Latency related bottlenecks (external memory and off-core caches)",
85*18054d02SAlexander Motin        "MetricExpr": "100 * ((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (1 - (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) - ( UOPS_ISSUED.ANY + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD))) * ( ( (CYCLE_ACTIVITY.STALLS_L3_MISS / CPU_CLK_UNHALTED.THREAD + (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD) - (( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) / ( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) + cpu@L1D_PEND_MISS.FB_FULL\\,cmask\\=1@ ) ) * (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD))) / #((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (1 - (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) - ( UOPS_ISSUED.ANY + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD))) ) * ( (min( CPU_CLK_UNHALTED.THREAD , OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD ) / CPU_CLK_UNHALTED.THREAD - (min( CPU_CLK_UNHALTED.THREAD , cpu@OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD\\,cmask\\=4@ ) / CPU_CLK_UNHALTED.THREAD)) / #(CYCLE_ACTIVITY.STALLS_L3_MISS / CPU_CLK_UNHALTED.THREAD + (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD) - (( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) / ( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) + cpu@L1D_PEND_MISS.FB_FULL\\,cmask\\=1@ ) ) * (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD))) ) + ( (( CYCLE_ACTIVITY.STALLS_L2_MISS - CYCLE_ACTIVITY.STALLS_L3_MISS ) / CPU_CLK_UNHALTED.THREAD) / #((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (1 - (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) - ( UOPS_ISSUED.ANY + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD))) ) * ( (( (10 * ((CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC) * msr@tsc@ / 1000000000 / duration_time)) - (3.5 * ((CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC) * msr@tsc@ / 1000000000 / duration_time)) ) * MEM_LOAD_RETIRED.L3_HIT * (1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) / 2) / CPU_CLK_UNHALTED.THREAD) / #(( CYCLE_ACTIVITY.STALLS_L2_MISS - CYCLE_ACTIVITY.STALLS_L3_MISS ) / CPU_CLK_UNHALTED.THREAD) ) + ( (( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) / ( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) + cpu@L1D_PEND_MISS.FB_FULL\\,cmask\\=1@ ) ) * (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD)) / #((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (1 - (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) - ( UOPS_ISSUED.ANY + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD))) ) )",
86*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryLat;Offcore",
87*18054d02SAlexander Motin        "MetricName": "Memory_Latency"
88*18054d02SAlexander Motin    },
89*18054d02SAlexander Motin    {
90*18054d02SAlexander Motin        "BriefDescription": "Total pipeline cost of Memory Latency related bottlenecks (external memory and off-core caches)",
91*18054d02SAlexander Motin        "MetricExpr": "100 * ((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (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 + 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 ) )))) * ( ( (CYCLE_ACTIVITY.STALLS_L3_MISS / CPU_CLK_UNHALTED.THREAD + (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD) - (( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) / ( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) + cpu@L1D_PEND_MISS.FB_FULL\\,cmask\\=1@ ) ) * (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD))) / #((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (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 + 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 ) )))) ) * ( (min( CPU_CLK_UNHALTED.THREAD , OFFCORE_REQUESTS_OUTSTANDING.CYCLES_WITH_DATA_RD ) / CPU_CLK_UNHALTED.THREAD - (min( CPU_CLK_UNHALTED.THREAD , cpu@OFFCORE_REQUESTS_OUTSTANDING.ALL_DATA_RD\\,cmask\\=4@ ) / CPU_CLK_UNHALTED.THREAD)) / #(CYCLE_ACTIVITY.STALLS_L3_MISS / CPU_CLK_UNHALTED.THREAD + (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD) - (( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) / ( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) + cpu@L1D_PEND_MISS.FB_FULL\\,cmask\\=1@ ) ) * (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD))) ) + ( (( CYCLE_ACTIVITY.STALLS_L2_MISS - CYCLE_ACTIVITY.STALLS_L3_MISS ) / CPU_CLK_UNHALTED.THREAD) / #((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (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 + 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 ) )))) ) * ( (( (10 * ((CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC) * msr@tsc@ / 1000000000 / duration_time)) - (3.5 * ((CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC) * msr@tsc@ / 1000000000 / duration_time)) ) * MEM_LOAD_RETIRED.L3_HIT * (1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) / 2) / CPU_CLK_UNHALTED.THREAD) / #(( CYCLE_ACTIVITY.STALLS_L2_MISS - CYCLE_ACTIVITY.STALLS_L3_MISS ) / CPU_CLK_UNHALTED.THREAD) ) + ( (( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) / ( (MEM_LOAD_RETIRED.L2_HIT * ( 1 + (MEM_LOAD_RETIRED.FB_HIT / MEM_LOAD_RETIRED.L1_MISS) )) + cpu@L1D_PEND_MISS.FB_FULL\\,cmask\\=1@ ) ) * (( CYCLE_ACTIVITY.STALLS_L1D_MISS - CYCLE_ACTIVITY.STALLS_L2_MISS ) / CPU_CLK_UNHALTED.THREAD)) / #((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (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 + 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 ) )))) ) )",
92*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryLat;Offcore_SMT",
93*18054d02SAlexander Motin        "MetricName": "Memory_Latency_SMT"
94*18054d02SAlexander Motin    },
95*18054d02SAlexander Motin    {
96*18054d02SAlexander Motin        "BriefDescription": "Total pipeline cost of Memory Address Translation related bottlenecks (data-side TLBs)",
97*18054d02SAlexander Motin        "MetricExpr": "100 * ((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (1 - (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) - ( UOPS_ISSUED.ANY + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD))) * ( ( (max( ( CYCLE_ACTIVITY.STALLS_MEM_ANY - CYCLE_ACTIVITY.STALLS_L1D_MISS ) / CPU_CLK_UNHALTED.THREAD , 0 )) / ((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (1 - (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) - ( UOPS_ISSUED.ANY + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD))) ) * ( (min( 9 * cpu@DTLB_LOAD_MISSES.STLB_HIT\\,cmask\\=1@ + DTLB_LOAD_MISSES.WALK_ACTIVE , max( CYCLE_ACTIVITY.CYCLES_MEM_ANY - CYCLE_ACTIVITY.CYCLES_L1D_MISS , 0 ) ) / CPU_CLK_UNHALTED.THREAD) / (max( ( CYCLE_ACTIVITY.STALLS_MEM_ANY - CYCLE_ACTIVITY.STALLS_L1D_MISS ) / CPU_CLK_UNHALTED.THREAD , 0 )) ) + ( (EXE_ACTIVITY.BOUND_ON_STORES / CPU_CLK_UNHALTED.THREAD) / #((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * CPU_CLK_UNHALTED.THREAD)) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (1 - (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) - ( UOPS_ISSUED.ANY + 4 * INT_MISC.RECOVERY_CYCLES ) / (4 * CPU_CLK_UNHALTED.THREAD))) ) * ( (( 9 * cpu@DTLB_STORE_MISSES.STLB_HIT\\,cmask\\=1@ + DTLB_STORE_MISSES.WALK_ACTIVE ) / CPU_CLK_UNHALTED.THREAD) / #(EXE_ACTIVITY.BOUND_ON_STORES / CPU_CLK_UNHALTED.THREAD) ) ) ",
98*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryTLB",
99*18054d02SAlexander Motin        "MetricName": "Memory_Data_TLBs"
100*18054d02SAlexander Motin    },
101*18054d02SAlexander Motin    {
102*18054d02SAlexander Motin        "BriefDescription": "Total pipeline cost of Memory Address Translation related bottlenecks (data-side TLBs)",
103*18054d02SAlexander Motin        "MetricExpr": "100 * ((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (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 + 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 ) )))) * ( ( (max( ( CYCLE_ACTIVITY.STALLS_MEM_ANY - CYCLE_ACTIVITY.STALLS_L1D_MISS ) / CPU_CLK_UNHALTED.THREAD , 0 )) / ((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (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 + 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 ) )))) ) * ( (min( 9 * cpu@DTLB_LOAD_MISSES.STLB_HIT\\,cmask\\=1@ + DTLB_LOAD_MISSES.WALK_ACTIVE , max( CYCLE_ACTIVITY.CYCLES_MEM_ANY - CYCLE_ACTIVITY.CYCLES_L1D_MISS , 0 ) ) / CPU_CLK_UNHALTED.THREAD) / (max( ( CYCLE_ACTIVITY.STALLS_MEM_ANY - CYCLE_ACTIVITY.STALLS_L1D_MISS ) / CPU_CLK_UNHALTED.THREAD , 0 )) ) + ( (EXE_ACTIVITY.BOUND_ON_STORES / CPU_CLK_UNHALTED.THREAD) / #((( CYCLE_ACTIVITY.STALLS_MEM_ANY + EXE_ACTIVITY.BOUND_ON_STORES ) / (CYCLE_ACTIVITY.STALLS_TOTAL + (EXE_ACTIVITY.1_PORTS_UTIL + (UOPS_RETIRED.RETIRE_SLOTS / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ))) * EXE_ACTIVITY.2_PORTS_UTIL) + EXE_ACTIVITY.BOUND_ON_STORES)) * (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 + 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 ) )))) ) * ( (( 9 * cpu@DTLB_STORE_MISSES.STLB_HIT\\,cmask\\=1@ + DTLB_STORE_MISSES.WALK_ACTIVE ) / ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )) / #(EXE_ACTIVITY.BOUND_ON_STORES / CPU_CLK_UNHALTED.THREAD) ) ) ",
104*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryTLB;_SMT",
105*18054d02SAlexander Motin        "MetricName": "Memory_Data_TLBs_SMT"
106*18054d02SAlexander Motin    },
107*18054d02SAlexander Motin    {
108*18054d02SAlexander Motin        "BriefDescription": "Total pipeline cost of branch related instructions (used for program control-flow including function calls)",
109*18054d02SAlexander Motin        "MetricExpr": "100 * (( BR_INST_RETIRED.CONDITIONAL + 3 * BR_INST_RETIRED.NEAR_CALL + (BR_INST_RETIRED.NEAR_TAKEN - ( BR_INST_RETIRED.CONDITIONAL - BR_INST_RETIRED.NOT_TAKEN ) - 2 * BR_INST_RETIRED.NEAR_CALL) ) / (4 * CPU_CLK_UNHALTED.THREAD))",
110*18054d02SAlexander Motin        "MetricGroup": "Ret",
111*18054d02SAlexander Motin        "MetricName": "Branching_Overhead"
112*18054d02SAlexander Motin    },
113*18054d02SAlexander Motin    {
114*18054d02SAlexander Motin        "BriefDescription": "Total pipeline cost of branch related instructions (used for program control-flow including function calls)",
115*18054d02SAlexander Motin        "MetricExpr": "100 * (( BR_INST_RETIRED.CONDITIONAL + 3 * BR_INST_RETIRED.NEAR_CALL + (BR_INST_RETIRED.NEAR_TAKEN - ( BR_INST_RETIRED.CONDITIONAL - BR_INST_RETIRED.NOT_TAKEN ) - 2 * BR_INST_RETIRED.NEAR_CALL) ) / (4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )))",
116*18054d02SAlexander Motin        "MetricGroup": "Ret_SMT",
117*18054d02SAlexander Motin        "MetricName": "Branching_Overhead_SMT"
118*18054d02SAlexander Motin    },
119*18054d02SAlexander Motin    {
120*18054d02SAlexander Motin        "BriefDescription": "Total pipeline cost of instruction fetch related bottlenecks by large code footprint programs (i-side cache; TLB and BTB misses)",
121*18054d02SAlexander Motin        "MetricExpr": "100 * (4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) * ( (ICACHE_64B.IFTAG_STALL / CPU_CLK_UNHALTED.THREAD) + (( ICACHE_16B.IFDATA_STALL + 2 * cpu@ICACHE_16B.IFDATA_STALL\\,cmask\\=1\\,edge@ ) / CPU_CLK_UNHALTED.THREAD) + (9 * BACLEARS.ANY / CPU_CLK_UNHALTED.THREAD) ) / #(4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD))",
122*18054d02SAlexander Motin        "MetricGroup": "BigFoot;Fed;Frontend;IcMiss;MemoryTLB",
123*18054d02SAlexander Motin        "MetricName": "Big_Code"
124*18054d02SAlexander Motin    },
125*18054d02SAlexander Motin    {
126*18054d02SAlexander Motin        "BriefDescription": "Total pipeline cost of instruction fetch related bottlenecks by large code footprint programs (i-side cache; TLB and BTB misses)",
127*18054d02SAlexander Motin        "MetricExpr": "100 * (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 ) ))) * ( (ICACHE_64B.IFTAG_STALL / CPU_CLK_UNHALTED.THREAD) + (( ICACHE_16B.IFDATA_STALL + 2 * cpu@ICACHE_16B.IFDATA_STALL\\,cmask\\=1\\,edge@ ) / CPU_CLK_UNHALTED.THREAD) + (9 * BACLEARS.ANY / CPU_CLK_UNHALTED.THREAD) ) / #(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 ) )))",
128*18054d02SAlexander Motin        "MetricGroup": "BigFoot;Fed;Frontend;IcMiss;MemoryTLB_SMT",
129*18054d02SAlexander Motin        "MetricName": "Big_Code_SMT"
130*18054d02SAlexander Motin    },
131*18054d02SAlexander Motin    {
132*18054d02SAlexander Motin        "BriefDescription": "Total pipeline cost of instruction fetch bandwidth related bottlenecks",
133*18054d02SAlexander Motin        "MetricExpr": "100 * ( (IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) - (4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) * ((BR_MISP_RETIRED.ALL_BRANCHES / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT )) * INT_MISC.CLEAR_RESTEER_CYCLES / CPU_CLK_UNHALTED.THREAD) / #(4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) ) - (100 * (4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) * ( (ICACHE_64B.IFTAG_STALL / CPU_CLK_UNHALTED.THREAD) + (( ICACHE_16B.IFDATA_STALL + 2 * cpu@ICACHE_16B.IFDATA_STALL\\,cmask\\=1\\,edge@ ) / CPU_CLK_UNHALTED.THREAD) + (9 * BACLEARS.ANY / CPU_CLK_UNHALTED.THREAD) ) / #(4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD)))",
134*18054d02SAlexander Motin        "MetricGroup": "Fed;FetchBW;Frontend",
135*18054d02SAlexander Motin        "MetricName": "Instruction_Fetch_BW"
136*18054d02SAlexander Motin    },
137*18054d02SAlexander Motin    {
138*18054d02SAlexander Motin        "BriefDescription": "Total pipeline cost of instruction fetch bandwidth related bottlenecks",
139*18054d02SAlexander Motin        "MetricExpr": "100 * ( (IDQ_UOPS_NOT_DELIVERED.CORE / (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 ) ))) * ((BR_MISP_RETIRED.ALL_BRANCHES / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT )) * INT_MISC.CLEAR_RESTEER_CYCLES / CPU_CLK_UNHALTED.THREAD) / #(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 ) ))) ) - (100 * (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 ) ))) * ( (ICACHE_64B.IFTAG_STALL / CPU_CLK_UNHALTED.THREAD) + (( ICACHE_16B.IFDATA_STALL + 2 * cpu@ICACHE_16B.IFDATA_STALL\\,cmask\\=1\\,edge@ ) / CPU_CLK_UNHALTED.THREAD) + (9 * BACLEARS.ANY / CPU_CLK_UNHALTED.THREAD) ) / #(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 ) ))))",
140*18054d02SAlexander Motin        "MetricGroup": "Fed;FetchBW;Frontend_SMT",
141*18054d02SAlexander Motin        "MetricName": "Instruction_Fetch_BW_SMT"
142*18054d02SAlexander Motin    },
143*18054d02SAlexander Motin    {
14452d973f5SAlexander Motin        "BriefDescription": "Instructions Per Cycle (per Logical Processor)",
145*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD",
146*18054d02SAlexander Motin        "MetricGroup": "Ret;Summary",
147959826caSMatt Macy        "MetricName": "IPC"
148959826caSMatt Macy    },
149959826caSMatt Macy    {
15052d973f5SAlexander Motin        "BriefDescription": "Uops Per Instruction",
151*18054d02SAlexander Motin        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / INST_RETIRED.ANY",
152*18054d02SAlexander Motin        "MetricGroup": "Pipeline;Ret;Retire",
153959826caSMatt Macy        "MetricName": "UPI"
154959826caSMatt Macy    },
155959826caSMatt Macy    {
15652d973f5SAlexander Motin        "BriefDescription": "Instruction per taken branch",
157*18054d02SAlexander Motin        "MetricExpr": "UOPS_RETIRED.RETIRE_SLOTS / BR_INST_RETIRED.NEAR_TAKEN",
158*18054d02SAlexander Motin        "MetricGroup": "Branches;Fed;FetchBW",
159*18054d02SAlexander Motin        "MetricName": "UpTB"
16092b14858SMatt Macy    },
16192b14858SMatt Macy    {
16252d973f5SAlexander Motin        "BriefDescription": "Cycles Per Instruction (per Logical Processor)",
163*18054d02SAlexander Motin        "MetricExpr": "1 / (INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD)",
164*18054d02SAlexander Motin        "MetricGroup": "Pipeline;Mem",
165959826caSMatt Macy        "MetricName": "CPI"
166959826caSMatt Macy    },
167959826caSMatt Macy    {
16852d973f5SAlexander Motin        "BriefDescription": "Per-Logical Processor actual clocks when the Logical Processor is active.",
169*18054d02SAlexander Motin        "MetricExpr": "CPU_CLK_UNHALTED.THREAD",
170*18054d02SAlexander Motin        "MetricGroup": "Pipeline",
171959826caSMatt Macy        "MetricName": "CLKS"
172959826caSMatt Macy    },
173959826caSMatt Macy    {
17452d973f5SAlexander Motin        "BriefDescription": "Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward)",
175*18054d02SAlexander Motin        "MetricExpr": "4 * CPU_CLK_UNHALTED.THREAD",
176*18054d02SAlexander Motin        "MetricGroup": "TmaL1",
177959826caSMatt Macy        "MetricName": "SLOTS"
178959826caSMatt Macy    },
179959826caSMatt Macy    {
18052d973f5SAlexander Motin        "BriefDescription": "Total issue-pipeline slots (per-Physical Core till ICL; per-Logical Processor ICL onward)",
181*18054d02SAlexander Motin        "MetricExpr": "4 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
182*18054d02SAlexander Motin        "MetricGroup": "TmaL1_SMT",
18392b14858SMatt Macy        "MetricName": "SLOTS_SMT"
18492b14858SMatt Macy    },
18592b14858SMatt Macy    {
186*18054d02SAlexander Motin        "BriefDescription": "The ratio of Executed- by Issued-Uops",
187*18054d02SAlexander Motin        "MetricExpr": "UOPS_EXECUTED.THREAD / UOPS_ISSUED.ANY",
188*18054d02SAlexander Motin        "MetricGroup": "Cor;Pipeline",
189*18054d02SAlexander Motin        "MetricName": "Execute_per_Issue",
190*18054d02SAlexander Motin        "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."
191*18054d02SAlexander Motin    },
192*18054d02SAlexander Motin    {
193*18054d02SAlexander Motin        "BriefDescription": "Instructions Per Cycle across hyper-threads (per physical core)",
194*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / CPU_CLK_UNHALTED.THREAD",
195*18054d02SAlexander Motin        "MetricGroup": "Ret;SMT;TmaL1",
196959826caSMatt Macy        "MetricName": "CoreIPC"
197959826caSMatt Macy    },
198959826caSMatt Macy    {
199*18054d02SAlexander Motin        "BriefDescription": "Instructions Per Cycle across hyper-threads (per physical core)",
20052d973f5SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
201*18054d02SAlexander Motin        "MetricGroup": "Ret;SMT;TmaL1_SMT",
20292b14858SMatt Macy        "MetricName": "CoreIPC_SMT"
20392b14858SMatt Macy    },
20492b14858SMatt Macy    {
20592b14858SMatt Macy        "BriefDescription": "Floating Point Operations Per Cycle",
206*18054d02SAlexander Motin        "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 ) / CPU_CLK_UNHALTED.THREAD",
207*18054d02SAlexander Motin        "MetricGroup": "Ret;Flops",
20892b14858SMatt Macy        "MetricName": "FLOPc"
20992b14858SMatt Macy    },
21092b14858SMatt Macy    {
21192b14858SMatt Macy        "BriefDescription": "Floating Point Operations Per Cycle",
212*18054d02SAlexander Motin        "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 ) / ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) )",
213*18054d02SAlexander Motin        "MetricGroup": "Ret;Flops_SMT",
21492b14858SMatt Macy        "MetricName": "FLOPc_SMT"
21592b14858SMatt Macy    },
21692b14858SMatt Macy    {
217*18054d02SAlexander Motin        "BriefDescription": "Actual per-core usage of the Floating Point execution units (regardless of the vector width)",
218*18054d02SAlexander Motin        "MetricExpr": "( (FP_ARITH_INST_RETIRED.SCALAR_SINGLE + FP_ARITH_INST_RETIRED.SCALAR_DOUBLE) + (FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE) ) / ( 2 * CPU_CLK_UNHALTED.THREAD )",
219*18054d02SAlexander Motin        "MetricGroup": "Cor;Flops;HPC",
220*18054d02SAlexander Motin        "MetricName": "FP_Arith_Utilization",
221*18054d02SAlexander Motin        "PublicDescription": "Actual per-core usage of the Floating Point execution units (regardless of the vector width). Values > 1 are possible due to Fused-Multiply Add (FMA) counting."
222*18054d02SAlexander Motin    },
223*18054d02SAlexander Motin    {
224*18054d02SAlexander Motin        "BriefDescription": "Actual per-core usage of the Floating Point execution units (regardless of the vector width). SMT version; use when SMT is enabled and measuring per logical CPU.",
225*18054d02SAlexander Motin        "MetricExpr": "( (FP_ARITH_INST_RETIRED.SCALAR_SINGLE + FP_ARITH_INST_RETIRED.SCALAR_DOUBLE) + (FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE) ) / ( 2 * ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ) )",
226*18054d02SAlexander Motin        "MetricGroup": "Cor;Flops;HPC_SMT",
227*18054d02SAlexander Motin        "MetricName": "FP_Arith_Utilization_SMT",
228*18054d02SAlexander Motin        "PublicDescription": "Actual per-core usage of the Floating Point execution units (regardless of the vector width). Values > 1 are possible due to Fused-Multiply Add (FMA) counting. SMT version; use when SMT is enabled and measuring per logical CPU."
229*18054d02SAlexander Motin    },
230*18054d02SAlexander Motin    {
231959826caSMatt Macy        "BriefDescription": "Instruction-Level-Parallelism (average number of uops executed when there is at least 1 uop executed)",
232*18054d02SAlexander Motin        "MetricExpr": "UOPS_EXECUTED.THREAD / (( UOPS_EXECUTED.CORE_CYCLES_GE_1 / 2 ) if #SMT_on else UOPS_EXECUTED.CORE_CYCLES_GE_1)",
233*18054d02SAlexander Motin        "MetricGroup": "Backend;Cor;Pipeline;PortsUtil",
234959826caSMatt Macy        "MetricName": "ILP"
235959826caSMatt Macy    },
236959826caSMatt Macy    {
23752d973f5SAlexander Motin        "BriefDescription": "Branch Misprediction Cost: Fraction of TMA slots wasted per non-speculative branch misprediction (retired JEClear)",
238*18054d02SAlexander Motin        "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 * CPU_CLK_UNHALTED.THREAD))) + (4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) * ((BR_MISP_RETIRED.ALL_BRANCHES / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT )) * INT_MISC.CLEAR_RESTEER_CYCLES / CPU_CLK_UNHALTED.THREAD) / #(4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) ) * (4 * CPU_CLK_UNHALTED.THREAD) / BR_MISP_RETIRED.ALL_BRANCHES",
239*18054d02SAlexander Motin        "MetricGroup": "Bad;BrMispredicts",
24092b14858SMatt Macy        "MetricName": "Branch_Misprediction_Cost"
241959826caSMatt Macy    },
242959826caSMatt Macy    {
24352d973f5SAlexander Motin        "BriefDescription": "Branch Misprediction Cost: Fraction of TMA slots wasted per non-speculative branch misprediction (retired JEClear)",
244*18054d02SAlexander Motin        "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 ) ))) * ((BR_MISP_RETIRED.ALL_BRANCHES / ( BR_MISP_RETIRED.ALL_BRANCHES + MACHINE_CLEARS.COUNT )) * INT_MISC.CLEAR_RESTEER_CYCLES / CPU_CLK_UNHALTED.THREAD) / #(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",
245*18054d02SAlexander Motin        "MetricGroup": "Bad;BrMispredicts_SMT",
24692b14858SMatt Macy        "MetricName": "Branch_Misprediction_Cost_SMT"
24792b14858SMatt Macy    },
24892b14858SMatt Macy    {
24952d973f5SAlexander Motin        "BriefDescription": "Number of Instructions per non-speculative Branch Misprediction (JEClear)",
250*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / BR_MISP_RETIRED.ALL_BRANCHES",
251*18054d02SAlexander Motin        "MetricGroup": "Bad;BadSpec;BrMispredicts",
25292b14858SMatt Macy        "MetricName": "IpMispredict"
25392b14858SMatt Macy    },
25492b14858SMatt Macy    {
25552d973f5SAlexander Motin        "BriefDescription": "Core actual clocks when any Logical Processor is active on the Physical Core",
256*18054d02SAlexander Motin        "MetricExpr": "( CPU_CLK_UNHALTED.THREAD_ANY / 2 ) if #SMT_on else CPU_CLK_UNHALTED.THREAD",
257959826caSMatt Macy        "MetricGroup": "SMT",
258959826caSMatt Macy        "MetricName": "CORE_CLKS"
259959826caSMatt Macy    },
260959826caSMatt Macy    {
26152d973f5SAlexander Motin        "BriefDescription": "Instructions per Load (lower number means higher occurrence rate)",
262*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / MEM_INST_RETIRED.ALL_LOADS",
263*18054d02SAlexander Motin        "MetricGroup": "InsType",
26452d973f5SAlexander Motin        "MetricName": "IpLoad"
26552d973f5SAlexander Motin    },
26652d973f5SAlexander Motin    {
26752d973f5SAlexander Motin        "BriefDescription": "Instructions per Store (lower number means higher occurrence rate)",
268*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / MEM_INST_RETIRED.ALL_STORES",
269*18054d02SAlexander Motin        "MetricGroup": "InsType",
27052d973f5SAlexander Motin        "MetricName": "IpStore"
27152d973f5SAlexander Motin    },
27252d973f5SAlexander Motin    {
27352d973f5SAlexander Motin        "BriefDescription": "Instructions per Branch (lower number means higher occurrence rate)",
274*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.ALL_BRANCHES",
275*18054d02SAlexander Motin        "MetricGroup": "Branches;Fed;InsType",
27652d973f5SAlexander Motin        "MetricName": "IpBranch"
27752d973f5SAlexander Motin    },
27852d973f5SAlexander Motin    {
27952d973f5SAlexander Motin        "BriefDescription": "Instructions per (near) call (lower number means higher occurrence rate)",
280*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_CALL",
281*18054d02SAlexander Motin        "MetricGroup": "Branches;Fed;PGO",
28252d973f5SAlexander Motin        "MetricName": "IpCall"
28352d973f5SAlexander Motin    },
28452d973f5SAlexander Motin    {
285*18054d02SAlexander Motin        "BriefDescription": "Instruction per taken branch",
286*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.NEAR_TAKEN",
287*18054d02SAlexander Motin        "MetricGroup": "Branches;Fed;FetchBW;Frontend;PGO",
288*18054d02SAlexander Motin        "MetricName": "IpTB"
289*18054d02SAlexander Motin    },
290*18054d02SAlexander Motin    {
29152d973f5SAlexander Motin        "BriefDescription": "Branch instructions per taken branch. ",
292*18054d02SAlexander Motin        "MetricExpr": "BR_INST_RETIRED.ALL_BRANCHES / BR_INST_RETIRED.NEAR_TAKEN",
293*18054d02SAlexander Motin        "MetricGroup": "Branches;Fed;PGO",
29452d973f5SAlexander Motin        "MetricName": "BpTkBranch"
29552d973f5SAlexander Motin    },
29652d973f5SAlexander Motin    {
29752d973f5SAlexander Motin        "BriefDescription": "Instructions per Floating Point (FP) Operation (lower number means higher occurrence rate)",
298*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / ( 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 )",
299*18054d02SAlexander Motin        "MetricGroup": "Flops;InsType",
30052d973f5SAlexander Motin        "MetricName": "IpFLOP"
30152d973f5SAlexander Motin    },
30252d973f5SAlexander Motin    {
303*18054d02SAlexander Motin        "BriefDescription": "Instructions per FP Arithmetic instruction (lower number means higher occurrence rate)",
304*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / ( (FP_ARITH_INST_RETIRED.SCALAR_SINGLE + FP_ARITH_INST_RETIRED.SCALAR_DOUBLE) + (FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE + FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE) )",
305*18054d02SAlexander Motin        "MetricGroup": "Flops;InsType",
306*18054d02SAlexander Motin        "MetricName": "IpArith",
307*18054d02SAlexander Motin        "PublicDescription": "Instructions per FP Arithmetic instruction (lower number means higher occurrence rate). May undercount due to FMA double counting. Approximated prior to BDW."
308*18054d02SAlexander Motin    },
309*18054d02SAlexander Motin    {
310*18054d02SAlexander Motin        "BriefDescription": "Instructions per FP Arithmetic Scalar Single-Precision instruction (lower number means higher occurrence rate)",
311*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / FP_ARITH_INST_RETIRED.SCALAR_SINGLE",
312*18054d02SAlexander Motin        "MetricGroup": "Flops;FpScalar;InsType",
313*18054d02SAlexander Motin        "MetricName": "IpArith_Scalar_SP",
314*18054d02SAlexander Motin        "PublicDescription": "Instructions per FP Arithmetic Scalar Single-Precision instruction (lower number means higher occurrence rate). May undercount due to FMA double counting."
315*18054d02SAlexander Motin    },
316*18054d02SAlexander Motin    {
317*18054d02SAlexander Motin        "BriefDescription": "Instructions per FP Arithmetic Scalar Double-Precision instruction (lower number means higher occurrence rate)",
318*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / FP_ARITH_INST_RETIRED.SCALAR_DOUBLE",
319*18054d02SAlexander Motin        "MetricGroup": "Flops;FpScalar;InsType",
320*18054d02SAlexander Motin        "MetricName": "IpArith_Scalar_DP",
321*18054d02SAlexander Motin        "PublicDescription": "Instructions per FP Arithmetic Scalar Double-Precision instruction (lower number means higher occurrence rate). May undercount due to FMA double counting."
322*18054d02SAlexander Motin    },
323*18054d02SAlexander Motin    {
324*18054d02SAlexander Motin        "BriefDescription": "Instructions per FP Arithmetic AVX/SSE 128-bit instruction (lower number means higher occurrence rate)",
325*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.128B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.128B_PACKED_SINGLE )",
326*18054d02SAlexander Motin        "MetricGroup": "Flops;FpVector;InsType",
327*18054d02SAlexander Motin        "MetricName": "IpArith_AVX128",
328*18054d02SAlexander Motin        "PublicDescription": "Instructions per FP Arithmetic AVX/SSE 128-bit instruction (lower number means higher occurrence rate). May undercount due to FMA double counting."
329*18054d02SAlexander Motin    },
330*18054d02SAlexander Motin    {
331*18054d02SAlexander Motin        "BriefDescription": "Instructions per FP Arithmetic AVX* 256-bit instruction (lower number means higher occurrence rate)",
332*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / ( FP_ARITH_INST_RETIRED.256B_PACKED_DOUBLE + FP_ARITH_INST_RETIRED.256B_PACKED_SINGLE )",
333*18054d02SAlexander Motin        "MetricGroup": "Flops;FpVector;InsType",
334*18054d02SAlexander Motin        "MetricName": "IpArith_AVX256",
335*18054d02SAlexander Motin        "PublicDescription": "Instructions per FP Arithmetic AVX* 256-bit instruction (lower number means higher occurrence rate). May undercount due to FMA double counting."
336*18054d02SAlexander Motin    },
337*18054d02SAlexander Motin    {
338*18054d02SAlexander Motin        "BriefDescription": "Total number of retired Instructions, Sample with: INST_RETIRED.PREC_DIST",
33952d973f5SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY",
340*18054d02SAlexander Motin        "MetricGroup": "Summary;TmaL1",
34152d973f5SAlexander Motin        "MetricName": "Instructions"
34252d973f5SAlexander Motin    },
34352d973f5SAlexander Motin    {
344*18054d02SAlexander Motin        "BriefDescription": "Average number of Uops issued by front-end when it issued something",
345*18054d02SAlexander Motin        "MetricExpr": "UOPS_ISSUED.ANY / cpu@UOPS_ISSUED.ANY\\,cmask\\=1@",
346*18054d02SAlexander Motin        "MetricGroup": "Fed;FetchBW",
347*18054d02SAlexander Motin        "MetricName": "Fetch_UpC"
348*18054d02SAlexander Motin    },
349*18054d02SAlexander Motin    {
35052d973f5SAlexander Motin        "BriefDescription": "Fraction of Uops delivered by the DSB (aka Decoded ICache; or Uop Cache)",
351*18054d02SAlexander Motin        "MetricExpr": "IDQ.DSB_UOPS / (IDQ.DSB_UOPS + IDQ.MITE_UOPS + IDQ.MS_UOPS)",
352*18054d02SAlexander Motin        "MetricGroup": "DSB;Fed;FetchBW",
35352d973f5SAlexander Motin        "MetricName": "DSB_Coverage"
35452d973f5SAlexander Motin    },
35552d973f5SAlexander Motin    {
356*18054d02SAlexander Motin        "BriefDescription": "Total penalty related to DSB (uop cache) misses - subset/see of/the Instruction_Fetch_BW Bottleneck.",
357*18054d02SAlexander Motin        "MetricExpr": "(4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) * (DSB2MITE_SWITCHES.PENALTY_CYCLES / CPU_CLK_UNHALTED.THREAD) / #(4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) + ((IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) - (4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD))) * (( IDQ.ALL_MITE_CYCLES_ANY_UOPS - IDQ.ALL_MITE_CYCLES_4_UOPS ) / CPU_CLK_UNHALTED.THREAD / 2) / #((IDQ_UOPS_NOT_DELIVERED.CORE / (4 * CPU_CLK_UNHALTED.THREAD)) - (4 * IDQ_UOPS_NOT_DELIVERED.CYCLES_0_UOPS_DELIV.CORE / (4 * CPU_CLK_UNHALTED.THREAD)))",
358*18054d02SAlexander Motin        "MetricGroup": "DSBmiss;Fed",
359*18054d02SAlexander Motin        "MetricName": "DSB_Misses_Cost"
360959826caSMatt Macy    },
361959826caSMatt Macy    {
362*18054d02SAlexander Motin        "BriefDescription": "Total penalty related to DSB (uop cache) misses - subset/see of/the Instruction_Fetch_BW Bottleneck.",
363*18054d02SAlexander Motin        "MetricExpr": "(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 ) ))) * (DSB2MITE_SWITCHES.PENALTY_CYCLES / CPU_CLK_UNHALTED.THREAD) / #(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 ) ))) + ((IDQ_UOPS_NOT_DELIVERED.CORE / (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 ) )))) * (( IDQ.ALL_MITE_CYCLES_ANY_UOPS - IDQ.ALL_MITE_CYCLES_4_UOPS ) / ( ( CPU_CLK_UNHALTED.THREAD / 2 ) * ( 1 + CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / CPU_CLK_UNHALTED.REF_XCLK ) ) / 2) / #((IDQ_UOPS_NOT_DELIVERED.CORE / (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 ) ))))",
364*18054d02SAlexander Motin        "MetricGroup": "DSBmiss;Fed_SMT",
365*18054d02SAlexander Motin        "MetricName": "DSB_Misses_Cost_SMT"
366*18054d02SAlexander Motin    },
367*18054d02SAlexander Motin    {
368*18054d02SAlexander Motin        "BriefDescription": "Number of Instructions per non-speculative DSB miss",
369*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / FRONTEND_RETIRED.ANY_DSB_MISS",
370*18054d02SAlexander Motin        "MetricGroup": "DSBmiss;Fed",
371*18054d02SAlexander Motin        "MetricName": "IpDSB_Miss_Ret"
372*18054d02SAlexander Motin    },
373*18054d02SAlexander Motin    {
374*18054d02SAlexander Motin        "BriefDescription": "Fraction of branches that are non-taken conditionals",
375*18054d02SAlexander Motin        "MetricExpr": "BR_INST_RETIRED.NOT_TAKEN / BR_INST_RETIRED.ALL_BRANCHES",
376*18054d02SAlexander Motin        "MetricGroup": "Bad;Branches;CodeGen;PGO",
377*18054d02SAlexander Motin        "MetricName": "Cond_NT"
378*18054d02SAlexander Motin    },
379*18054d02SAlexander Motin    {
380*18054d02SAlexander Motin        "BriefDescription": "Fraction of branches that are taken conditionals",
381*18054d02SAlexander Motin        "MetricExpr": "( BR_INST_RETIRED.CONDITIONAL - BR_INST_RETIRED.NOT_TAKEN )  / BR_INST_RETIRED.ALL_BRANCHES",
382*18054d02SAlexander Motin        "MetricGroup": "Bad;Branches;CodeGen;PGO",
383*18054d02SAlexander Motin        "MetricName": "Cond_TK"
384*18054d02SAlexander Motin    },
385*18054d02SAlexander Motin    {
386*18054d02SAlexander Motin        "BriefDescription": "Fraction of branches that are CALL or RET",
387*18054d02SAlexander Motin        "MetricExpr": "( BR_INST_RETIRED.NEAR_CALL + BR_INST_RETIRED.NEAR_RETURN ) / BR_INST_RETIRED.ALL_BRANCHES",
388*18054d02SAlexander Motin        "MetricGroup": "Bad;Branches",
389*18054d02SAlexander Motin        "MetricName": "CallRet"
390*18054d02SAlexander Motin    },
391*18054d02SAlexander Motin    {
392*18054d02SAlexander Motin        "BriefDescription": "Fraction of branches that are unconditional (direct or indirect) jumps",
393*18054d02SAlexander Motin        "MetricExpr": "(BR_INST_RETIRED.NEAR_TAKEN - ( BR_INST_RETIRED.CONDITIONAL - BR_INST_RETIRED.NOT_TAKEN ) - 2 * BR_INST_RETIRED.NEAR_CALL) / BR_INST_RETIRED.ALL_BRANCHES",
394*18054d02SAlexander Motin        "MetricGroup": "Bad;Branches",
395*18054d02SAlexander Motin        "MetricName": "Jump"
396*18054d02SAlexander Motin    },
397*18054d02SAlexander Motin    {
398*18054d02SAlexander Motin        "BriefDescription": "Actual Average Latency for L1 data-cache miss demand load instructions (in core cycles)",
399*18054d02SAlexander Motin        "MetricExpr": "L1D_PEND_MISS.PENDING / ( MEM_LOAD_RETIRED.L1_MISS + MEM_LOAD_RETIRED.FB_HIT )",
400*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryBound;MemoryLat",
401*18054d02SAlexander Motin        "MetricName": "Load_Miss_Real_Latency",
402*18054d02SAlexander Motin        "PublicDescription": "Actual Average Latency for L1 data-cache miss demand load instructions (in core cycles). Latency may be overestimated for multi-load instructions - e.g. repeat strings."
403*18054d02SAlexander Motin    },
404*18054d02SAlexander Motin    {
40552d973f5SAlexander Motin        "BriefDescription": "Memory-Level-Parallelism (average number of L1 miss demand load when there is at least one such miss. Per-Logical Processor)",
406*18054d02SAlexander Motin        "MetricExpr": "L1D_PEND_MISS.PENDING / L1D_PEND_MISS.PENDING_CYCLES",
407*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryBound;MemoryBW",
408959826caSMatt Macy        "MetricName": "MLP"
409959826caSMatt Macy    },
410959826caSMatt Macy    {
41152d973f5SAlexander Motin        "BriefDescription": "Average data fill bandwidth to the L1 data cache [GB / sec]",
412*18054d02SAlexander Motin        "MetricExpr": "64 * L1D.REPLACEMENT / 1000000000 / duration_time",
413*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryBW",
41492b14858SMatt Macy        "MetricName": "L1D_Cache_Fill_BW"
41592b14858SMatt Macy    },
41692b14858SMatt Macy    {
41752d973f5SAlexander Motin        "BriefDescription": "Average data fill bandwidth to the L2 cache [GB / sec]",
418*18054d02SAlexander Motin        "MetricExpr": "64 * L2_LINES_IN.ALL / 1000000000 / duration_time",
419*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryBW",
42092b14858SMatt Macy        "MetricName": "L2_Cache_Fill_BW"
42192b14858SMatt Macy    },
42292b14858SMatt Macy    {
42352d973f5SAlexander Motin        "BriefDescription": "Average per-core data fill bandwidth to the L3 cache [GB / sec]",
424*18054d02SAlexander Motin        "MetricExpr": "64 * LONGEST_LAT_CACHE.MISS / 1000000000 / duration_time",
425*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryBW",
42692b14858SMatt Macy        "MetricName": "L3_Cache_Fill_BW"
42792b14858SMatt Macy    },
42892b14858SMatt Macy    {
42952d973f5SAlexander Motin        "BriefDescription": "Average per-core data access bandwidth to the L3 cache [GB / sec]",
430*18054d02SAlexander Motin        "MetricExpr": "64 * OFFCORE_REQUESTS.ALL_REQUESTS / 1000000000 / duration_time",
431*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryBW;Offcore",
43292b14858SMatt Macy        "MetricName": "L3_Cache_Access_BW"
43392b14858SMatt Macy    },
43492b14858SMatt Macy    {
43552d973f5SAlexander Motin        "BriefDescription": "L1 cache true misses per kilo instruction for retired demand loads",
436*18054d02SAlexander Motin        "MetricExpr": "1000 * MEM_LOAD_RETIRED.L1_MISS / INST_RETIRED.ANY",
437*18054d02SAlexander Motin        "MetricGroup": "Mem;CacheMisses",
43892b14858SMatt Macy        "MetricName": "L1MPKI"
43992b14858SMatt Macy    },
44092b14858SMatt Macy    {
441*18054d02SAlexander Motin        "BriefDescription": "L1 cache true misses per kilo instruction for all demand loads (including speculative)",
442*18054d02SAlexander Motin        "MetricExpr": "1000 * L2_RQSTS.ALL_DEMAND_DATA_RD / INST_RETIRED.ANY",
443*18054d02SAlexander Motin        "MetricGroup": "Mem;CacheMisses",
444*18054d02SAlexander Motin        "MetricName": "L1MPKI_Load"
445*18054d02SAlexander Motin    },
446*18054d02SAlexander Motin    {
44752d973f5SAlexander Motin        "BriefDescription": "L2 cache true misses per kilo instruction for retired demand loads",
448*18054d02SAlexander Motin        "MetricExpr": "1000 * MEM_LOAD_RETIRED.L2_MISS / INST_RETIRED.ANY",
449*18054d02SAlexander Motin        "MetricGroup": "Mem;Backend;CacheMisses",
45092b14858SMatt Macy        "MetricName": "L2MPKI"
45192b14858SMatt Macy    },
45292b14858SMatt Macy    {
45352d973f5SAlexander Motin        "BriefDescription": "L2 cache misses per kilo instruction for all request types (including speculative)",
454*18054d02SAlexander Motin        "MetricExpr": "1000 * L2_RQSTS.MISS / INST_RETIRED.ANY",
455*18054d02SAlexander Motin        "MetricGroup": "Mem;CacheMisses;Offcore",
45692b14858SMatt Macy        "MetricName": "L2MPKI_All"
45792b14858SMatt Macy    },
45892b14858SMatt Macy    {
459*18054d02SAlexander Motin        "BriefDescription": "L2 cache misses per kilo instruction for all demand loads  (including speculative)",
460*18054d02SAlexander Motin        "MetricExpr": "1000 * L2_RQSTS.DEMAND_DATA_RD_MISS / INST_RETIRED.ANY",
461*18054d02SAlexander Motin        "MetricGroup": "Mem;CacheMisses",
462*18054d02SAlexander Motin        "MetricName": "L2MPKI_Load"
463*18054d02SAlexander Motin    },
464*18054d02SAlexander Motin    {
46552d973f5SAlexander Motin        "BriefDescription": "L2 cache hits per kilo instruction for all request types (including speculative)",
466*18054d02SAlexander Motin        "MetricExpr": "1000 * ( L2_RQSTS.REFERENCES - L2_RQSTS.MISS ) / INST_RETIRED.ANY",
467*18054d02SAlexander Motin        "MetricGroup": "Mem;CacheMisses",
46892b14858SMatt Macy        "MetricName": "L2HPKI_All"
46992b14858SMatt Macy    },
47092b14858SMatt Macy    {
471*18054d02SAlexander Motin        "BriefDescription": "L2 cache hits per kilo instruction for all demand loads  (including speculative)",
472*18054d02SAlexander Motin        "MetricExpr": "1000 * L2_RQSTS.DEMAND_DATA_RD_HIT / INST_RETIRED.ANY",
473*18054d02SAlexander Motin        "MetricGroup": "Mem;CacheMisses",
474*18054d02SAlexander Motin        "MetricName": "L2HPKI_Load"
475*18054d02SAlexander Motin    },
476*18054d02SAlexander Motin    {
47752d973f5SAlexander Motin        "BriefDescription": "L3 cache true misses per kilo instruction for retired demand loads",
478*18054d02SAlexander Motin        "MetricExpr": "1000 * MEM_LOAD_RETIRED.L3_MISS / INST_RETIRED.ANY",
479*18054d02SAlexander Motin        "MetricGroup": "Mem;CacheMisses",
48092b14858SMatt Macy        "MetricName": "L3MPKI"
481959826caSMatt Macy    },
482959826caSMatt Macy    {
483*18054d02SAlexander Motin        "BriefDescription": "Fill Buffer (FB) true hits per kilo instructions for retired demand loads",
484*18054d02SAlexander Motin        "MetricExpr": "1000 * MEM_LOAD_RETIRED.FB_HIT / INST_RETIRED.ANY",
485*18054d02SAlexander Motin        "MetricGroup": "Mem;CacheMisses",
486*18054d02SAlexander Motin        "MetricName": "FB_HPKI"
487*18054d02SAlexander Motin    },
488*18054d02SAlexander Motin    {
489*18054d02SAlexander Motin        "BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses",
490*18054d02SAlexander Motin        "MetricConstraint": "NO_NMI_WATCHDOG",
491*18054d02SAlexander Motin        "MetricExpr": "( ITLB_MISSES.WALK_PENDING + DTLB_LOAD_MISSES.WALK_PENDING + DTLB_STORE_MISSES.WALK_PENDING + EPT.WALK_PENDING ) / ( 2 * CPU_CLK_UNHALTED.THREAD )",
492*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryTLB",
493*18054d02SAlexander Motin        "MetricName": "Page_Walks_Utilization"
494*18054d02SAlexander Motin    },
495*18054d02SAlexander Motin    {
496*18054d02SAlexander Motin        "BriefDescription": "Utilization of the core's Page Walker(s) serving STLB misses triggered by instruction/Load/Store accesses",
497*18054d02SAlexander Motin        "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 ) ) )",
498*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryTLB_SMT",
499*18054d02SAlexander Motin        "MetricName": "Page_Walks_Utilization_SMT"
500*18054d02SAlexander Motin    },
501*18054d02SAlexander Motin    {
50252d973f5SAlexander Motin        "BriefDescription": "Average CPU Utilization",
503*18054d02SAlexander Motin        "MetricExpr": "CPU_CLK_UNHALTED.REF_TSC / msr@tsc@",
50452d973f5SAlexander Motin        "MetricGroup": "HPC;Summary",
505959826caSMatt Macy        "MetricName": "CPU_Utilization"
506959826caSMatt Macy    },
507959826caSMatt Macy    {
508*18054d02SAlexander Motin        "BriefDescription": "Measured Average Frequency for unhalted processors [GHz]",
509*18054d02SAlexander Motin        "MetricExpr": "(CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC) * msr@tsc@ / 1000000000 / duration_time",
510*18054d02SAlexander Motin        "MetricGroup": "Summary;Power",
511*18054d02SAlexander Motin        "MetricName": "Average_Frequency"
512*18054d02SAlexander Motin    },
513*18054d02SAlexander Motin    {
514959826caSMatt Macy        "BriefDescription": "Giga Floating Point Operations Per Second",
515*18054d02SAlexander Motin        "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 ) / 1000000000 ) / duration_time",
516*18054d02SAlexander Motin        "MetricGroup": "Cor;Flops;HPC",
517959826caSMatt Macy        "MetricName": "GFLOPs"
518959826caSMatt Macy    },
519959826caSMatt Macy    {
52052d973f5SAlexander Motin        "BriefDescription": "Average Frequency Utilization relative nominal frequency",
521*18054d02SAlexander Motin        "MetricExpr": "CPU_CLK_UNHALTED.THREAD / CPU_CLK_UNHALTED.REF_TSC",
522959826caSMatt Macy        "MetricGroup": "Power",
523959826caSMatt Macy        "MetricName": "Turbo_Utilization"
524959826caSMatt Macy    },
525959826caSMatt Macy    {
52692b14858SMatt Macy        "BriefDescription": "Fraction of cycles where both hardware Logical Processors were active",
527*18054d02SAlexander Motin        "MetricExpr": "1 - CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE / ( CPU_CLK_UNHALTED.REF_XCLK_ANY / 2 ) if #SMT_on else 0",
52852d973f5SAlexander Motin        "MetricGroup": "SMT",
529959826caSMatt Macy        "MetricName": "SMT_2T_Utilization"
530959826caSMatt Macy    },
531959826caSMatt Macy    {
53252d973f5SAlexander Motin        "BriefDescription": "Fraction of cycles spent in the Operating System (OS) Kernel mode",
533*18054d02SAlexander Motin        "MetricExpr": "CPU_CLK_UNHALTED.THREAD_P:k / CPU_CLK_UNHALTED.THREAD",
53452d973f5SAlexander Motin        "MetricGroup": "OS",
535959826caSMatt Macy        "MetricName": "Kernel_Utilization"
536959826caSMatt Macy    },
537959826caSMatt Macy    {
538*18054d02SAlexander Motin        "BriefDescription": "Cycles Per Instruction for the Operating System (OS) Kernel mode",
539*18054d02SAlexander Motin        "MetricExpr": "CPU_CLK_UNHALTED.THREAD_P:k / INST_RETIRED.ANY_P:k",
540*18054d02SAlexander Motin        "MetricGroup": "OS",
541*18054d02SAlexander Motin        "MetricName": "Kernel_CPI"
542*18054d02SAlexander Motin    },
543*18054d02SAlexander Motin    {
54452d973f5SAlexander Motin        "BriefDescription": "Average external Memory Bandwidth Use for reads and writes [GB / sec]",
545*18054d02SAlexander Motin        "MetricExpr": "64 * ( arb@event\\=0x81\\,umask\\=0x1@ + arb@event\\=0x84\\,umask\\=0x1@ ) / 1000000 / duration_time / 1000",
546*18054d02SAlexander Motin        "MetricGroup": "HPC;Mem;MemoryBW;SoC",
54792b14858SMatt Macy        "MetricName": "DRAM_BW_Use"
54892b14858SMatt Macy    },
54992b14858SMatt Macy    {
550*18054d02SAlexander Motin        "BriefDescription": "Average latency of all requests to external memory (in Uncore cycles)",
551*18054d02SAlexander Motin        "MetricExpr": "UNC_ARB_TRK_OCCUPANCY.ALL / arb@event\\=0x81\\,umask\\=0x1@",
552*18054d02SAlexander Motin        "MetricGroup": "Mem;SoC",
553*18054d02SAlexander Motin        "MetricName": "MEM_Request_Latency"
554*18054d02SAlexander Motin    },
555*18054d02SAlexander Motin    {
556*18054d02SAlexander Motin        "BriefDescription": "Average number of parallel requests to external memory. Accounts for all requests",
557*18054d02SAlexander Motin        "MetricExpr": "UNC_ARB_TRK_OCCUPANCY.ALL / arb@event\\=0x81\\,umask\\=0x1@",
558*18054d02SAlexander Motin        "MetricGroup": "Mem;SoC",
559*18054d02SAlexander Motin        "MetricName": "MEM_Parallel_Requests"
560*18054d02SAlexander Motin    },
561*18054d02SAlexander Motin    {
56292b14858SMatt Macy        "BriefDescription": "Average number of parallel data read requests to external memory. Accounts for demand loads and L1/L2 prefetches",
563*18054d02SAlexander Motin        "MetricExpr": "arb@event\\=0x80\\,umask\\=0x2@ / arb@event\\=0x80\\,umask\\=0x2\\,cmask\\=1@",
564*18054d02SAlexander Motin        "MetricGroup": "Mem;MemoryBW;SoC",
56552d973f5SAlexander Motin        "MetricName": "MEM_Parallel_Reads"
56692b14858SMatt Macy    },
56792b14858SMatt Macy    {
56852d973f5SAlexander Motin        "BriefDescription": "Instructions per Far Branch ( Far Branches apply upon transition from application to operating system, handling interrupts, exceptions) [lower number means higher occurrence rate]",
569*18054d02SAlexander Motin        "MetricExpr": "INST_RETIRED.ANY / BR_INST_RETIRED.FAR_BRANCH:u",
57052d973f5SAlexander Motin        "MetricGroup": "Branches;OS",
57192b14858SMatt Macy        "MetricName": "IpFarBranch"
57292b14858SMatt Macy    },
57392b14858SMatt Macy    {
57452d973f5SAlexander Motin        "BriefDescription": "C3 residency percent per core",
575*18054d02SAlexander Motin        "MetricExpr": "(cstate_core@c3\\-residency@ / msr@tsc@) * 100",
576959826caSMatt Macy        "MetricGroup": "Power",
577959826caSMatt Macy        "MetricName": "C3_Core_Residency"
578959826caSMatt Macy    },
579959826caSMatt Macy    {
58052d973f5SAlexander Motin        "BriefDescription": "C6 residency percent per core",
581*18054d02SAlexander Motin        "MetricExpr": "(cstate_core@c6\\-residency@ / msr@tsc@) * 100",
582959826caSMatt Macy        "MetricGroup": "Power",
583959826caSMatt Macy        "MetricName": "C6_Core_Residency"
584959826caSMatt Macy    },
585959826caSMatt Macy    {
58652d973f5SAlexander Motin        "BriefDescription": "C7 residency percent per core",
587*18054d02SAlexander Motin        "MetricExpr": "(cstate_core@c7\\-residency@ / msr@tsc@) * 100",
588959826caSMatt Macy        "MetricGroup": "Power",
589959826caSMatt Macy        "MetricName": "C7_Core_Residency"
590959826caSMatt Macy    },
591959826caSMatt Macy    {
59252d973f5SAlexander Motin        "BriefDescription": "C2 residency percent per package",
593*18054d02SAlexander Motin        "MetricExpr": "(cstate_pkg@c2\\-residency@ / msr@tsc@) * 100",
594959826caSMatt Macy        "MetricGroup": "Power",
595959826caSMatt Macy        "MetricName": "C2_Pkg_Residency"
596959826caSMatt Macy    },
597959826caSMatt Macy    {
59852d973f5SAlexander Motin        "BriefDescription": "C3 residency percent per package",
599*18054d02SAlexander Motin        "MetricExpr": "(cstate_pkg@c3\\-residency@ / msr@tsc@) * 100",
600959826caSMatt Macy        "MetricGroup": "Power",
601959826caSMatt Macy        "MetricName": "C3_Pkg_Residency"
602959826caSMatt Macy    },
603959826caSMatt Macy    {
60452d973f5SAlexander Motin        "BriefDescription": "C6 residency percent per package",
605*18054d02SAlexander Motin        "MetricExpr": "(cstate_pkg@c6\\-residency@ / msr@tsc@) * 100",
606959826caSMatt Macy        "MetricGroup": "Power",
607959826caSMatt Macy        "MetricName": "C6_Pkg_Residency"
608959826caSMatt Macy    },
609959826caSMatt Macy    {
61052d973f5SAlexander Motin        "BriefDescription": "C7 residency percent per package",
611*18054d02SAlexander Motin        "MetricExpr": "(cstate_pkg@c7\\-residency@ / msr@tsc@) * 100",
612959826caSMatt Macy        "MetricGroup": "Power",
613959826caSMatt Macy        "MetricName": "C7_Pkg_Residency"
614959826caSMatt Macy    }
615959826caSMatt Macy]
616